[Chinese-commits] [manpages-zh] 01/131: Imported upstream version 1.5

Boyuan Yang hosiet-guest at moszumanska.debian.org
Tue Dec 13 19:59:31 UTC 2016


This is an automated email from the git hooks/post-receive script.

hosiet-guest pushed a commit to branch master
in repository manpages-zh.

commit f7dfef511be2f6fbf3889306a45d67346a07c027
Author: LI Daobing <lidaobing at gmail.com>
Date:   Thu Feb 14 14:27:15 2008 +0800

    Imported upstream version 1.5
---
 COPYING                              |   397 ++
 DOCS/00TRANSLATED                    |   743 +++
 DOCS/ChangeLog                       |   216 +
 DOCS/ChangeLog.GB                    |   216 +
 DOCS/FAQ                             |   200 +
 DOCS/FAQ.GB                          |   200 +
 DOCS/THANKS                          |    50 +
 DOCS/THANKS.GB                       |    50 +
 DOCS/VOCABULARY                      |   151 +
 DOCS/VOCABULARY.GB                   |   151 +
 DOCS/banner1.gif                     |   Bin 0 -> 10980 bytes
 DOCS/clf.gif                         |   Bin 0 -> 2470 bytes
 Makefile                             |    62 +
 README                               |    31 +
 README.GB                            |    31 +
 debian/changelog                     |    26 +
 debian/control                       |    17 +
 debian/copyright                     |     0
 debian/rules                         |    55 +
 man-pages-zh_CN.spec                 |    78 +
 raw/NOT_FOUND                        |    64 +
 raw/man.macros                       |   236 +
 raw/man1/..1                         |     1 +
 raw/man1/:.1                         |     1 +
 raw/man1/[.1                         |     1 +
 raw/man1/a2p.1                       |   298 +
 raw/man1/ab.1                        |   127 +
 raw/man1/access.1                    |    64 +
 raw/man1/alias.1                     |     1 +
 raw/man1/apm.1                       |    86 +
 raw/man1/apropos.1                   |    31 +
 raw/man1/ar.1                        |   377 ++
 raw/man1/arch.1                      |    34 +
 raw/man1/at.1                        |   285 +
 raw/man1/basename.1                  |    42 +
 raw/man1/bash.1                      |  8368 +++++++++++++++++++++++++++
 raw/man1/bg.1                        |     1 +
 raw/man1/bind.1                      |     1 +
 raw/man1/break.1                     |     1 +
 raw/man1/builtin.1                   |     1 +
 raw/man1/builtins.1                  |    15 +
 raw/man1/bunzip2.1                   |   453 ++
 raw/man1/bzcat.1                     |   453 ++
 raw/man1/bzip2.1                     |   453 ++
 raw/man1/bzip2recover.1              |   453 ++
 raw/man1/cal.1                       |    97 +
 raw/man1/cat.1                       |    70 +
 raw/man1/cd.1                        |     1 +
 raw/man1/chattr.1                    |   142 +
 raw/man1/chfn.1                      |    62 +
 raw/man1/chgrp.1                     |    66 +
 raw/man1/chmod.1                     |   127 +
 raw/man1/chown.1                     |    97 +
 raw/man1/chroot.1                    |    43 +
 raw/man1/chsh.1                      |    49 +
 raw/man1/chvt.1                      |    23 +
 raw/man1/cksum.1                     |    41 +
 raw/man1/clear.1                     |    47 +
 raw/man1/clusterdb.1                 |   123 +
 raw/man1/col.1                       |   138 +
 raw/man1/comm.1                      |    47 +
 raw/man1/command.1                   |     1 +
 raw/man1/compgen.1                   |     1 +
 raw/man1/complete.1                  |     1 +
 raw/man1/continue.1                  |     1 +
 raw/man1/cp.1                        |   160 +
 raw/man1/cpio.1                      |   341 ++
 raw/man1/createdb.1                  |   149 +
 raw/man1/createlang.1                |   114 +
 raw/man1/createuser.1                |   170 +
 raw/man1/cut.1                       |    81 +
 raw/man1/date.1                      |   206 +
 raw/man1/dd.1                        |   108 +
 raw/man1/deallocvt.1                 |    27 +
 raw/man1/declare.1                   |     1 +
 raw/man1/df.1                        |   106 +
 raw/man1/diff.1                      |   485 ++
 raw/man1/dig.1                       |   363 ++
 raw/man1/dircolors.1                 |    52 +
 raw/man1/dirname.1                   |    42 +
 raw/man1/dirs.1                      |     1 +
 raw/man1/disown.1                    |     1 +
 raw/man1/dropdb.1                    |   113 +
 raw/man1/droplang.1                  |   107 +
 raw/man1/dropuser.1                  |   117 +
 raw/man1/du.1                        |   117 +
 raw/man1/dumpkeys.1                  |   209 +
 raw/man1/echo.1                      |    82 +
 raw/man1/egrep.1                     |     1 +
 raw/man1/eject.1                     |   288 +
 raw/man1/emacs.1                     |   534 ++
 raw/man1/enable.1                    |     1 +
 raw/man1/env.1                       |    46 +
 raw/man1/eval.1                      |     1 +
 raw/man1/ex.1                        |   493 ++
 raw/man1/exec.1                      |     1 +
 raw/man1/exit.1                      |     1 +
 raw/man1/expand.1                    |    50 +
 raw/man1/export.1                    |     1 +
 raw/man1/false.1                     |    43 +
 raw/man1/fc.1                        |     1 +
 raw/man1/fg.1                        |     1 +
 raw/man1/fgrep.1                     |     1 +
 raw/man1/file.1                      |   473 ++
 raw/man1/find.1                      |   459 ++
 raw/man1/findsmb.1                   |    95 +
 raw/man1/finger.1                    |   193 +
 raw/man1/fmt.1                       |    61 +
 raw/man1/fold.1                      |    53 +
 raw/man1/free.1                      |    78 +
 raw/man1/ftp.1                       |  1053 ++++
 raw/man1/gcc.1                       | 10237 +++++++++++++++++++++++++++++++++
 raw/man1/gedit.1                     |    61 +
 raw/man1/getopts.1                   |     1 +
 raw/man1/gnroff.1                    |   144 +
 raw/man1/grep.1                      |   782 +++
 raw/man1/groff.1                     |  1596 +++++
 raw/man1/groups.1                    |    31 +
 raw/man1/gunzip.1                    |     1 +
 raw/man1/gzip.1                      |   499 ++
 raw/man1/hash.1                      |     1 +
 raw/man1/head.1                      |    56 +
 raw/man1/help.1                      |     1 +
 raw/man1/history.1                   |     1 +
 raw/man1/host.1                      |   129 +
 raw/man1/hostid.1                    |    41 +
 raw/man1/hostname.1                  |   200 +
 raw/man1/iconv.1                     |   239 +
 raw/man1/id.1                        |    58 +
 raw/man1/info.1                      |    83 +
 raw/man1/initdb.1                    |   150 +
 raw/man1/initex.1                    |     1 +
 raw/man1/initlocation.1              |    45 +
 raw/man1/install-info.1              |    78 +
 raw/man1/install.1                   |   101 +
 raw/man1/intro.1                     |   258 +
 raw/man1/ipcclean.1                  |    35 +
 raw/man1/jobs.1                      |     1 +
 raw/man1/kbd_mode.1                  |    41 +
 raw/man1/kill.1                      |    87 +
 raw/man1/killall.1                   |    96 +
 raw/man1/last.1                      |   102 +
 raw/man1/ld.1                        |  1912 ++++++
 raw/man1/ldd.1                       |    55 +
 raw/man1/let.1                       |     1 +
 raw/man1/ln.1                        |    99 +
 raw/man1/loadkeys.1                  |   153 +
 raw/man1/local.1                     |     1 +
 raw/man1/lockfile.1                  |   290 +
 raw/man1/logname.1                   |    38 +
 raw/man1/logout.1                    |     1 +
 raw/man1/ls.1                        |   233 +
 raw/man1/lsattr.1                    |    44 +
 raw/man1/mail.1                      |  1041 ++++
 raw/man1/makeinfo.1                  |   188 +
 raw/man1/man.1                       |   452 ++
 raw/man1/md5sum.1                    |    63 +
 raw/man1/mesg.1                      |    42 +
 raw/man1/minicom.1                   |   854 +++
 raw/man1/mkdir.1                     |    49 +
 raw/man1/mkfifo.1                    |    43 +
 raw/man1/mknod.1                     |    57 +
 raw/man1/mkpasswd.1                  |   100 +
 raw/man1/mktemp.1                    |   243 +
 raw/man1/more.1                      |   202 +
 raw/man1/mv.1                        |    97 +
 raw/man1/newgrp.1                    |    28 +
 raw/man1/nice.1                      |    43 +
 raw/man1/nmblookup.1                 |   185 +
 raw/man1/nohup.1                     |    34 +
 raw/man1/nroff.1                     |   144 +
 raw/man1/octave-bug.1                |    76 +
 raw/man1/octave-config.1             |    37 +
 raw/man1/octave.1                    |    82 +
 raw/man1/paste.1                     |    48 +
 raw/man1/perlbook.1                  |   146 +
 raw/man1/perlboot.1                  |  1046 ++++
 raw/man1/perlcn.1                    |   253 +
 raw/man1/perlcompile.1               |   560 ++
 raw/man1/perldata.1                  |  1075 ++++
 raw/man1/perlfaq.1                   |   858 +++
 raw/man1/perlfaq1.1                  |   461 ++
 raw/man1/perlfaq2.1                  |   732 +++
 raw/man1/perlfaq3.1                  |  1102 ++++
 raw/man1/perlfaq7.1                  |  1182 ++++
 raw/man1/perlfaq8.1                  |  1420 +++++
 raw/man1/perlfaq9.1                  |   841 +++
 raw/man1/perlform.1                  |   502 ++
 raw/man1/perlfunc.1                  |  7474 ++++++++++++++++++++++++
 raw/man1/perlnumber.1                |   314 +
 raw/man1/perlsec.1                   |   629 ++
 raw/man1/perlstyle.1                 |   353 ++
 raw/man1/perltw.1                    |   271 +
 raw/man1/pg_controldata.1            |    24 +
 raw/man1/pg_ctl.1                    |   239 +
 raw/man1/pg_dump.1                   |   411 ++
 raw/man1/pg_dumpall.1                |   187 +
 raw/man1/pg_resetxlog.1              |    80 +
 raw/man1/pg_restore.1                |   405 ++
 raw/man1/popd.1                      |     1 +
 raw/man1/postgres.1                  |   223 +
 raw/man1/postmaster.1                |   330 ++
 raw/man1/printf.1                    |    96 +
 raw/man1/psfaddtable.1               |    47 +
 raw/man1/psfgettable.1               |    22 +
 raw/man1/psfstriptable.1             |    23 +
 raw/man1/psql.1                      |  1613 ++++++
 raw/man1/pushd.1                     |     1 +
 raw/man1/pwd.1                       |    40 +
 raw/man1/quota.1                     |   125 +
 raw/man1/read.1                      |     1 +
 raw/man1/readonly.1                  |     1 +
 raw/man1/return.1                    |     1 +
 raw/man1/rlogin.1                    |   125 +
 raw/man1/rm.1                        |    79 +
 raw/man1/rmdir.1                     |    51 +
 raw/man1/rvi.1                       |   493 ++
 raw/man1/rview.1                     |   493 ++
 raw/man1/rvim.1                      |   493 ++
 raw/man1/scp.1                       |   167 +
 raw/man1/set.1                       |     1 +
 raw/man1/setleds.1                   |    84 +
 raw/man1/setmetamode.1               |    46 +
 raw/man1/sh.1                        |  8368 +++++++++++++++++++++++++++
 raw/man1/shift.1                     |     1 +
 raw/man1/shopt.1                     |     1 +
 raw/man1/showkey.1                   |    73 +
 raw/man1/size.1                      |   250 +
 raw/man1/sleep.1                     |    44 +
 raw/man1/smbclient.1                 |   637 ++
 raw/man1/smbcontrol.1                |   221 +
 raw/man1/smbstatus.1                 |   131 +
 raw/man1/smbtar.1                    |   148 +
 raw/man1/sort.1                      |   114 +
 raw/man1/source.1                    |     1 +
 raw/man1/split.1                     |    59 +
 raw/man1/ssh.1                       |   991 ++++
 raw/man1/stat.1                      |   165 +
 raw/man1/strings.1                   |   236 +
 raw/man1/stty.1                      |   401 ++
 raw/man1/su.1                        |    58 +
 raw/man1/sum.1                       |    46 +
 raw/man1/suspend.1                   |     1 +
 raw/man1/svn.1                       |    27 +
 raw/man1/svnadmin.1                  |    27 +
 raw/man1/svndumpfilter.1             |    27 +
 raw/man1/svnlook.1                   |    27 +
 raw/man1/svnversion.1                |    28 +
 raw/man1/sync.1                      |    38 +
 raw/man1/tac.1                       |    50 +
 raw/man1/tail.1                      |    93 +
 raw/man1/tar.1                       |   336 ++
 raw/man1/tclsh.1                     |   359 ++
 raw/man1/tee.1                       |    44 +
 raw/man1/testparm.1                  |   123 +
 raw/man1/testprns.1                  |    96 +
 raw/man1/tex.1                       |   421 ++
 raw/man1/texi2dvi.1                  |    92 +
 raw/man1/texindex.1                  |    47 +
 raw/man1/times.1                     |     1 +
 raw/man1/touch.1                     |    77 +
 raw/man1/trap.1                      |     1 +
 raw/man1/troff.1                     |   686 +++
 raw/man1/true.1                      |    43 +
 raw/man1/tty.1                       |    41 +
 raw/man1/type.1                      |     1 +
 raw/man1/typeset.1                   |     1 +
 raw/man1/ulimit.1                    |     1 +
 raw/man1/umask.1                     |     1 +
 raw/man1/unalias.1                   |     1 +
 raw/man1/uname.1                     |    65 +
 raw/man1/unicode_start.1             |    39 +
 raw/man1/unicode_stop.1              |    20 +
 raw/man1/uniq.1                      |    69 +
 raw/man1/unset.1                     |     1 +
 raw/man1/uptime.1                    |    37 +
 raw/man1/usleep.1                    |    25 +
 raw/man1/vacuumdb.1                  |   162 +
 raw/man1/vi.1                        |   493 ++
 raw/man1/view.1                      |   493 ++
 raw/man1/vim.1                       |   493 ++
 raw/man1/vimtutor.1                  |    54 +
 raw/man1/virtex.1                    |     1 +
 raw/man1/w.1                         |    86 +
 raw/man1/wait.1                      |     1 +
 raw/man1/wall.1                      |    58 +
 raw/man1/wbinfo.1                    |   203 +
 raw/man1/wc.1                        |    55 +
 raw/man1/whatis.1                    |    33 +
 raw/man1/who.1                       |    93 +
 raw/man1/wish.1                      |   421 ++
 raw/man1/xargs.1                     |   112 +
 raw/man1/xpdf.1                      |   495 ++
 raw/man1/xxd.1                       |   373 ++
 raw/man1/yacc.1                      |   139 +
 raw/man1/yes.1                       |    41 +
 raw/man1/ypchfn.1                    |     1 +
 raw/man1/ypchsh.1                    |     1 +
 raw/man1/yppasswd.1                  |   156 +
 raw/man1/zcat.1                      |     1 +
 raw/man1/zipinfo.1                   |   488 ++
 raw/man1/zless.1                     |    18 +
 raw/man2/accept.2                    |   288 +
 raw/man2/bind.2                      |   207 +
 raw/man2/close.2                     |   101 +
 raw/man2/create_module.2             |    41 +
 raw/man2/execve.2                    |   203 +
 raw/man2/init_module.2               |    77 +
 raw/man2/listen.2                    |   130 +
 raw/man2/open.2                      |   432 ++
 raw/man2/query_module.2              |   101 +
 raw/man2/read.2                      |   140 +
 raw/man2/send.2                      |   252 +
 raw/man2/write.2                     |   127 +
 raw/man3/Object.3                    |   568 ++
 raw/man3/basename.3                  |   135 +
 raw/man3/bindtextdomain.3            |    69 +
 raw/man3/bzero.3                     |    54 +
 raw/man3/clearerr.3                  |     1 +
 raw/man3/exec.3                      |   207 +
 raw/man3/exit.3                      |    96 +
 raw/man3/fclose.3                    |   104 +
 raw/man3/fcloseall.3                 |    70 +
 raw/man3/fdopen.3                    |     1 +
 raw/man3/feof.3                      |     1 +
 raw/man3/ferror.3                    |   106 +
 raw/man3/fflush.3                    |   107 +
 raw/man3/fileno.3                    |     1 +
 raw/man3/flockfile.3                 |    89 +
 raw/man3/fopen.3                     |   236 +
 raw/man3/freopen.3                   |     1 +
 raw/man3/iconv_close.3               |    33 +
 raw/man3/iconv_open.3                |    54 +
 raw/man3/setbuf.3                    |   190 +
 raw/man3/setbuffer.3                 |     1 +
 raw/man3/setlinebuf.3                |     1 +
 raw/man3/setlocale.3                 |   190 +
 raw/man3/setvbuf.3                   |     1 +
 raw/man3/stderr.3                    |     1 +
 raw/man3/stdin.3                     |   130 +
 raw/man3/stdio.3                     |   353 ++
 raw/man3/stdout.3                    |     1 +
 raw/man3/strcoll.3                   |    60 +
 raw/man3/strxfrm.3                   |    61 +
 raw/man3/ulimit.3                    |    81 +
 raw/man3/unlocked_stdio.3            |    94 +
 raw/man4/console_codes.4             |   527 ++
 raw/man4/fifo.4                      |    57 +
 raw/man4/hd.4                        |    97 +
 raw/man5/acct.5                      |    40 +
 raw/man5/aliases.5                   |   120 +
 raw/man5/environ.5                   |   221 +
 raw/man5/fs.5                        |   165 +
 raw/man5/group.5                     |    50 +
 raw/man5/host.conf.5                 |   192 +
 raw/man5/info.5                      |    60 +
 raw/man5/inittab.5                   |   248 +
 raw/man5/ipc.5                       |   383 ++
 raw/man5/issue.5                     |    38 +
 raw/man5/keymaps.5                   |   441 ++
 raw/man5/lmhosts.5                   |    92 +
 raw/man5/locale.5                    |   577 ++
 raw/man5/man.config.5                |    42 +
 raw/man5/motd.5                      |    40 +
 raw/man5/nologin.5                   |    37 +
 raw/man5/nscd.conf.5                 |   125 +
 raw/man5/passwd.5                    |   127 +
 raw/man5/proc.5                      |  1424 +++++
 raw/man5/protocols.5                 |    77 +
 raw/man5/resolver.5                  |   222 +
 raw/man5/rpc.5                       |    74 +
 raw/man5/securetty.5                 |    43 +
 raw/man5/services.5                  |   208 +
 raw/man5/shells.5                    |    52 +
 raw/man5/smb.conf.5                  |  6939 ++++++++++++++++++++++
 raw/man5/smbpasswd.5                 |   111 +
 raw/man5/svnserve.conf.5             |    72 +
 raw/man5/termcap.5                   |   453 ++
 raw/man5/texinfo.5                   |    49 +
 raw/man5/ttytype.5                   |    69 +
 raw/man5/tzfile.5                    |   138 +
 raw/man5/utmp.5                      |   226 +
 raw/man6/zic2xpm.6                   |    74 +
 raw/man7/LDP.7                       |    87 +
 raw/man7/abort.7                     |    48 +
 raw/man7/alter_aggregate.7           |    43 +
 raw/man7/alter_conversion.7          |    39 +
 raw/man7/alter_database.7            |    79 +
 raw/man7/alter_domain.7              |   111 +
 raw/man7/alter_function.7            |    42 +
 raw/man7/alter_group.7               |    56 +
 raw/man7/alter_language.7            |    30 +
 raw/man7/alter_operator_class.7      |    34 +
 raw/man7/alter_schema.7              |    31 +
 raw/man7/alter_sequence.7            |   108 +
 raw/man7/alter_table.7               |   304 +
 raw/man7/alter_trigger.7             |    41 +
 raw/man7/alter_user.7                |   156 +
 raw/man7/analyze.7                   |    98 +
 raw/man7/arp.7                       |   264 +
 raw/man7/ascii.7                     |   159 +
 raw/man7/begin.7                     |    71 +
 raw/man7/bootparam.7                 |  1238 ++++
 raw/man7/charsets.7                  |   322 ++
 raw/man7/checkpoint.7                |    32 +
 raw/man7/close.7                     |    47 +
 raw/man7/cluster.7                   |   137 +
 raw/man7/comment.7                   |   111 +
 raw/man7/commit.7                    |    45 +
 raw/man7/copy.7                      |   372 ++
 raw/man7/create_aggregate.7          |   149 +
 raw/man7/create_cast.7               |   158 +
 raw/man7/create_constraint_trigger.7 |    41 +
 raw/man7/create_conversion.7         |    84 +
 raw/man7/create_database.7           |   147 +
 raw/man7/create_domain.7             |    97 +
 raw/man7/create_function.7           |   246 +
 raw/man7/create_group.7              |    58 +
 raw/man7/create_index.7              |   143 +
 raw/man7/create_language.7           |   133 +
 raw/man7/create_operator.7           |   168 +
 raw/man7/create_operator_class.7     |   133 +
 raw/man7/create_rule.7               |   152 +
 raw/man7/create_schema.7             |   114 +
 raw/man7/create_sequence.7           |   194 +
 raw/man7/create_table.7              |   594 ++
 raw/man7/create_table_as.7           |    65 +
 raw/man7/create_trigger.7            |   152 +
 raw/man7/create_type.7               |   354 ++
 raw/man7/create_user.7               |   142 +
 raw/man7/create_view.7               |   116 +
 raw/man7/deallocate.7                |    29 +
 raw/man7/declare.7                   |   184 +
 raw/man7/delete.7                    |    74 +
 raw/man7/drop_aggregate.7            |    47 +
 raw/man7/drop_cast.7                 |    45 +
 raw/man7/drop_conversion.7           |    41 +
 raw/man7/drop_database.7             |    40 +
 raw/man7/drop_domain.7               |    41 +
 raw/man7/drop_function.7             |    48 +
 raw/man7/drop_group.7                |    33 +
 raw/man7/drop_index.7                |    43 +
 raw/man7/drop_language.7             |    45 +
 raw/man7/drop_operator.7             |    65 +
 raw/man7/drop_operator_class.7       |    47 +
 raw/man7/drop_rule.7                 |    43 +
 raw/man7/drop_schema.7               |    47 +
 raw/man7/drop_sequence.7             |    39 +
 raw/man7/drop_table.7                |    50 +
 raw/man7/drop_trigger.7              |    50 +
 raw/man7/drop_type.7                 |    44 +
 raw/man7/drop_user.7                 |    44 +
 raw/man7/drop_view.7                 |    41 +
 raw/man7/end.7                       |    47 +
 raw/man7/execute.7                   |    45 +
 raw/man7/explain.7                   |   173 +
 raw/man7/fetch.7                     |   225 +
 raw/man7/glob.7                      |   187 +
 raw/man7/grant.7                     |   261 +
 raw/man7/hier.7                      |   471 ++
 raw/man7/icmp.7                      |   115 +
 raw/man7/insert.7                    |   122 +
 raw/man7/ip.7                        |   918 +++
 raw/man7/listen.7                    |    66 +
 raw/man7/load.7                      |    33 +
 raw/man7/locale.7                    |   204 +
 raw/man7/lock.7                      |   145 +
 raw/man7/mailaddr.7                  |   120 +
 raw/man7/man.7                       |   723 +++
 raw/man7/mdoc.samples.7              |  2936 ++++++++++
 raw/man7/move.7                      |    56 +
 raw/man7/netdevice.7                 |   263 +
 raw/man7/netlink.7                   |   253 +
 raw/man7/notify.7                    |   108 +
 raw/man7/packet.7                    |   410 ++
 raw/man7/prepare.7                   |    91 +
 raw/man7/raw.7                       |   262 +
 raw/man7/regex.7                     |   264 +
 raw/man7/reindex.7                   |   146 +
 raw/man7/reset.7                     |    58 +
 raw/man7/revoke.7                    |   126 +
 raw/man7/rollback.7                  |    44 +
 raw/man7/samba.7                     |   226 +
 raw/man7/select.7                    |   804 +++
 raw/man7/select_into.7               |    60 +
 raw/man7/set.7                       |   166 +
 raw/man7/set_constraints.7           |    53 +
 raw/man7/set_session_authorization.7 |    69 +
 raw/man7/set_transaction.7           |    95 +
 raw/man7/show.7                      |   111 +
 raw/man7/signal.7                    |   255 +
 raw/man7/socket.7                    |   557 ++
 raw/man7/start_transaction.7         |    28 +
 raw/man7/tcp.7                       |   712 +++
 raw/man7/truncate.7                  |    40 +
 raw/man7/udp.7                       |   161 +
 raw/man7/unicode.7                   |   288 +
 raw/man7/unix.7                      |   254 +
 raw/man7/unlisten.7                  |    65 +
 raw/man7/update.7                    |    90 +
 raw/man7/utf-8.7                     |   285 +
 raw/man7/vacuum.7                    |   139 +
 raw/man7/x25.7                       |   112 +
 raw/man8/MAKEDEV.8                   |   370 ++
 raw/man8/badblocks.8                 |   202 +
 raw/man8/blockdev.8                  |    55 +
 raw/man8/chat.8                      |   514 ++
 raw/man8/chpasswd.8                  |    59 +
 raw/man8/convertquota.8              |    64 +
 raw/man8/cron.8                      |    62 +
 raw/man8/dmesg.8                     |    58 +
 raw/man8/edquota.8                   |   133 +
 raw/man8/exportfs.8                  |   227 +
 raw/man8/fdisk.8                     |   248 +
 raw/man8/fsck.8                      |   362 ++
 raw/man8/groupadd.8                  |    79 +
 raw/man8/groupdel.8                  |    56 +
 raw/man8/groupmod.8                  |    61 +
 raw/man8/halt.8                      |   102 +
 raw/man8/hdparm.8                    |   483 ++
 raw/man8/ifconfig.8                  |   200 +
 raw/man8/init.8                      |   284 +
 raw/man8/iptables-restore.8          |    49 +
 raw/man8/iptables-save.8             |    48 +
 raw/man8/iptables.8                  |  1044 ++++
 raw/man8/losetup.8                   |    94 +
 raw/man8/lspci.8                     |   152 +
 raw/man8/mailstats.8                 |   115 +
 raw/man8/makemap.8                   |   160 +
 raw/man8/mingetty.8                  |   112 +
 raw/man8/mkfs.8                      |   123 +
 raw/man8/mkswap.8                    |   152 +
 raw/man8/modinfo.8                   |    86 +
 raw/man8/netstat.8                   |   459 ++
 raw/man8/nmbd.8                      |   178 +
 raw/man8/ntsysv.8                    |    34 +
 raw/man8/ping.8                      |   332 ++
 raw/man8/pppd.8                      |  1590 +++++
 raw/man8/quotacheck.8                |   193 +
 raw/man8/quotaon.8                   |   198 +
 raw/man8/ramsize.8                   |     1 +
 raw/man8/rdev.8                      |   159 +
 raw/man8/repquota.8                  |   109 +
 raw/man8/rootflags.8                 |     1 +
 raw/man8/route.8                     |   326 ++
 raw/man8/rpm.8                       |   988 ++++
 raw/man8/setquota.8                  |   137 +
 raw/man8/setserial.8                 |   520 ++
 raw/man8/showmount.8                 |    58 +
 raw/man8/shutdown.8                  |   179 +
 raw/man8/smbd.8                      |   230 +
 raw/man8/smbmnt.8                    |    91 +
 raw/man8/smbmount.8                  |   219 +
 raw/man8/smbpasswd.8                 |   219 +
 raw/man8/smbspool.8                  |   115 +
 raw/man8/smbumount.8                 |    56 +
 raw/man8/svnserve.8                  |    77 +
 raw/man8/swapoff.8                   |     1 +
 raw/man8/swapon.8                    |   145 +
 raw/man8/sync.8                      |    84 +
 raw/man8/tcpdump.8                   |  1970 +++++++
 raw/man8/tzselect.8                  |    44 +
 raw/man8/umount.8                    |   134 +
 raw/man8/useradd.8                   |   190 +
 raw/man8/userdel.8                   |    67 +
 raw/man8/usermod.8                   |   132 +
 raw/man8/vidmode.8                   |     1 +
 raw/man8/vmstat.8                    |   169 +
 raw/man8/xinetd.8                    |   193 +
 raw/man8/zdump.8                     |    39 +
 raw/man8/zic.8                       |   414 ++
 raw/manl/cbdsqr.l                    |   136 +
 raw/manl/lapack.l                    |   150 +
 raw/manl/zdrot.l                     |   116 +
 raw/manl/zdrscl.l                    |    39 +
 raw/mann/Http.n                      |   758 +++
 raw/mann/Tcl.n                       |   428 ++
 raw/mann/after.n                     |   342 ++
 raw/mann/append.n                    |   267 +
 raw/mann/array.n                     |   358 ++
 raw/mann/bell.n                      |   269 +
 raw/mann/bgerror.n                   |   314 +
 raw/mann/binary.n                    |   783 +++
 raw/mann/bindtags.n                  |   316 +
 raw/mann/break.n                     |   272 +
 raw/mann/catch.n                     |   301 +
 raw/mann/cd.n                        |   266 +
 raw/mann/chooseColor.n               |   284 +
 raw/mann/chooseDirectory.n           |   287 +
 raw/mann/ckalloc.n                   |   281 +
 raw/mann/ckfree.n                    |   281 +
 raw/mann/clipboard.n                 |   316 +
 raw/mann/clock.n                     |   449 ++
 raw/mann/close.n                     |   297 +
 raw/mann/concat.n                    |   278 +
 raw/mann/continue.n                  |   272 +
 raw/mann/cursors.n                   |   389 ++
 raw/mann/dde.n                       |   371 ++
 raw/mann/destroy.n                   |   269 +
 raw/mann/encoding.n                  |   314 +
 raw/mann/eof.n                       |   265 +
 raw/mann/error.n                     |   296 +
 raw/mann/eval.n                      |   268 +
 raw/mann/exec.n                      |   542 ++
 raw/mann/exit.n                      |   266 +
 raw/mann/expr.n                      |   622 ++
 raw/mann/fblocked.n                  |   268 +
 raw/mann/fconfigure.n                |   436 ++
 raw/mann/fcopy.n                     |   362 ++
 raw/mann/file.n                      |   579 ++
 raw/mann/fileevent.n                 |   344 ++
 raw/mann/filename.n                  |   435 ++
 raw/mann/flush.n                     |   270 +
 raw/mann/focusNext.n                 |   295 +
 raw/mann/for.n                       |   298 +
 raw/mann/foreach.n                   |   325 ++
 raw/mann/format.n                    |   452 ++
 raw/mann/gets.n                      |   285 +
 raw/mann/glob.n                      |   396 ++
 raw/mann/global.n                    |   274 +
 raw/mann/history.n                   |   339 ++
 raw/mann/html.n                      |   425 ++
 raw/mann/if.n                        |   281 +
 raw/mann/incr.n                      |   269 +
 raw/mann/info.n                      |   420 ++
 raw/mann/interp.n                    |   777 +++
 raw/mann/join.n                      |   267 +
 raw/mann/keysyms.n                   |  1165 ++++
 raw/mann/lappend.n                   |   273 +
 raw/mann/library.n                   |   546 ++
 raw/mann/lindex.n                    |   275 +
 raw/mann/linsert.n                   |   271 +
 raw/mann/list.n                      |   284 +
 raw/mann/llength.n                   |   264 +
 raw/mann/load.n                      |   370 ++
 raw/mann/loadTk.n                    |   311 +
 raw/mann/lower.n                     |   273 +
 raw/mann/lrange.n                    |   277 +
 raw/mann/lreplace.n                  |   286 +
 raw/mann/lsearch.n                   |   281 +
 raw/mann/lsort.n                     |   426 ++
 raw/mann/memory.n                    |   281 +
 raw/mann/messageBox.n                |   324 ++
 raw/mann/msgcat.n                    |   483 ++
 raw/mann/namespace.n                 |   801 +++
 raw/mann/open.n                      |   508 ++
 raw/mann/option.n                    |   326 ++
 raw/mann/optionMenu.n                |   275 +
 raw/mann/package.n                   |   431 ++
 raw/mann/packagens.n                 |   290 +
 raw/mann/palette.n                   |   308 +
 raw/mann/pid.n                       |   272 +
 raw/mann/pkgMkIndex.n                |   478 ++
 raw/mann/popup.n                     |   268 +
 raw/mann/proc.n                      |   312 +
 raw/mann/puts.n                      |   304 +
 raw/mann/pwd.n                       |   263 +
 raw/mann/raise.n                     |   273 +
 raw/mann/re_syntax.n                 |  1167 ++++
 raw/mann/read.n                      |   293 +
 raw/mann/regexp.n                    |   368 ++
 raw/mann/registry.n                  |   403 ++
 raw/mann/regsub.n                    |   347 ++
 raw/mann/rename.n                    |   270 +
 raw/mann/resource.n                  |   390 ++
 raw/mann/return.n                    |   327 ++
 raw/mann/safe.n                      |   585 ++
 raw/mann/scan.n                      |   430 ++
 raw/mann/seek.n                      |   299 +
 raw/mann/selection.n                 |   365 ++
 raw/mann/send.n                      |   332 ++
 raw/mann/set.n                       |   286 +
 raw/mann/socket.n                    |   369 ++
 raw/mann/source.n                    |   279 +
 raw/mann/split.n                     |   282 +
 raw/mann/string.n                    |   576 ++
 raw/mann/subst.n                     |   286 +
 raw/mann/switch.n                    |   352 ++
 raw/mann/tclvars.n                   |   636 ++
 raw/mann/tell.n                      |   270 +
 raw/mann/time.n                      |   271 +
 raw/mann/tk.n                        |   317 +
 raw/mann/tk_dialog.n                 |   300 +
 raw/mann/tkerror.n                   |   273 +
 raw/mann/tkvars.n                    |   307 +
 raw/mann/tkwait.n                    |   286 +
 raw/mann/trace.n                     |   395 ++
 raw/mann/unknown.n                   |   313 +
 raw/mann/unset.n                     |   269 +
 raw/mann/update.n                    |   286 +
 raw/mann/uplevel.n                   |   315 +
 raw/mann/upvar.n                     |   347 ++
 raw/mann/variable.n                  |   301 +
 raw/mann/vwait.n                     |   278 +
 raw/mann/while.n                     |   293 +
 src/cman/cman.conf                   |   114 +
 src/cman/cman.csh                    |     2 +
 src/cman/cman.sh                     |     2 +
 src/man.macros                       |   236 +
 src/man1/..1                         |     1 +
 src/man1/:.1                         |     1 +
 src/man1/[.1                         |     1 +
 src/man1/a2p.1                       |   337 ++
 src/man1/ab.1                        |   151 +
 src/man1/ac.1                        |   243 +
 src/man1/access.1                    |    74 +
 src/man1/ali.1                       |    74 +
 src/man1/alias.1                     |     1 +
 src/man1/apm.1                       |   117 +
 src/man1/apropos.1                   |    36 +
 src/man1/ar.1                        |   863 +++
 src/man1/arch.1                      |    41 +
 src/man1/at.1                        |   281 +
 src/man1/autorun.1                   |   163 +
 src/man1/basename.1                  |    48 +
 src/man1/bash.1                      |  6961 ++++++++++++++++++++++
 src/man1/bg.1                        |     1 +
 src/man1/biff.1                      |   100 +
 src/man1/bind.1                      |     1 +
 src/man1/break.1                     |     1 +
 src/man1/builtin.1                   |     1 +
 src/man1/builtins.1                  |    15 +
 src/man1/bunzip2.1                   |     1 +
 src/man1/bzcat.1                     |     1 +
 src/man1/bzip2.1                     |   364 ++
 src/man1/bzip2recover.1              |     1 +
 src/man1/cal.1                       |    86 +
 src/man1/cat.1                       |    75 +
 src/man1/cce.1                       |    70 +
 src/man1/cd.1                        |     1 +
 src/man1/charset.1                   |    81 +
 src/man1/chattr.1                    |    99 +
 src/man1/chfn.1                      |    66 +
 src/man1/chgrp.1                     |   125 +
 src/man1/chmod.1                     |   121 +
 src/man1/chown.1                     |   104 +
 src/man1/chroot.1                    |    50 +
 src/man1/chsh.1                      |    59 +
 src/man1/chvt.1                      |    34 +
 src/man1/cksum.1                     |    42 +
 src/man1/clear.1                     |    55 +
 src/man1/clusterdb.1                 |   101 +
 src/man1/col.1                       |   126 +
 src/man1/comm.1                      |    59 +
 src/man1/command.1                   |     1 +
 src/man1/compgen.1                   |     1 +
 src/man1/complete.1                  |     1 +
 src/man1/continue.1                  |     1 +
 src/man1/cp.1                        |   283 +
 src/man1/cpio.1                      |   326 ++
 src/man1/createdb.1                  |   119 +
 src/man1/createlang.1                |    93 +
 src/man1/createuser.1                |   134 +
 src/man1/cut.1                       |    84 +
 src/man1/date.1                      |   181 +
 src/man1/dd.1                        |   218 +
 src/man1/deallocvt.1                 |    25 +
 src/man1/declare.1                   |     1 +
 src/man1/df.1                        |   104 +
 src/man1/diff.1                      |   439 ++
 src/man1/dig.1                       |   681 +++
 src/man1/dircolor.1                  |   126 +
 src/man1/dircolors.1                 |    58 +
 src/man1/dirname.1                   |    46 +
 src/man1/dirs.1                      |     1 +
 src/man1/disown.1                    |     1 +
 src/man1/dnskeygen.1                 |   136 +
 src/man1/dnsquery.1                  |   181 +
 src/man1/dropdb.1                    |    95 +
 src/man1/droplang.1                  |    88 +
 src/man1/dropuser.1                  |    95 +
 src/man1/du.1                        |   147 +
 src/man1/dumpkeys.1                  |   236 +
 src/man1/echo.1                      |    78 +
 src/man1/ecpg.1                      |    66 +
 src/man1/egrep.1                     |     1 +
 src/man1/eject.1                     |   183 +
 src/man1/emacs.1                     |   447 ++
 src/man1/enable.1                    |     1 +
 src/man1/env.1                       |    51 +
 src/man1/eval.1                      |     1 +
 src/man1/ex.1                        |   360 ++
 src/man1/exec.1                      |     1 +
 src/man1/exit.1                      |     1 +
 src/man1/expand.1                    |    57 +
 src/man1/export.1                    |     1 +
 src/man1/false.1                     |    49 +
 src/man1/fc.1                        |     1 +
 src/man1/fg.1                        |     1 +
 src/man1/fgrep.1                     |     1 +
 src/man1/file.1                      |   364 ++
 src/man1/find.1                      |   368 ++
 src/man1/findsmb.1                   |    73 +
 src/man1/finger.1                    |   164 +
 src/man1/fmt.1                       |    69 +
 src/man1/fold.1                      |    54 +
 src/man1/free.1                      |    58 +
 src/man1/ftp.1                       |   948 +++
 src/man1/gcc.1                       |  3984 +++++++++++++
 src/man1/gedit.1                     |    47 +
 src/man1/getopts.1                   |     1 +
 src/man1/git.1                       |   127 +
 src/man1/gnroff.1                    |    97 +
 src/man1/grep.1                      |   681 +++
 src/man1/groff.1                     |   409 ++
 src/man1/groups.1                    |    43 +
 src/man1/gunzip.1                    |     1 +
 src/man1/gview.1                     |     1 +
 src/man1/gvim.1                      |   360 ++
 src/man1/gzip.1                      |   437 ++
 src/man1/hash.1                      |     1 +
 src/man1/head.1                      |    67 +
 src/man1/help.1                      |     1 +
 src/man1/history.1                   |     1 +
 src/man1/host.1                      |   271 +
 src/man1/hostid.1                    |   114 +
 src/man1/hostname.1                  |   215 +
 src/man1/iconv.1                     |    36 +
 src/man1/id.1                        |    65 +
 src/man1/info.1                      |    78 +
 src/man1/initdb.1                    |    84 +
 src/man1/initex.1                    |     1 +
 src/man1/initlocation.1              |    40 +
 src/man1/install-info.1              |    62 +
 src/man1/install.1                   |   187 +
 src/man1/intro.1                     |    31 +
 src/man1/ipcclean.1                  |    21 +
 src/man1/jobs.1                      |     1 +
 src/man1/kbd_mode.1                  |    63 +
 src/man1/kill.1                      |    76 +
 src/man1/killall.1                   |    90 +
 src/man1/last.1                      |    78 +
 src/man1/ld.1                        |   989 ++++
 src/man1/ldd.1                       |    75 +
 src/man1/let.1                       |     1 +
 src/man1/listalias.1                 |    48 +
 src/man1/ln.1                        |   157 +
 src/man1/loadkeys.1                  |   189 +
 src/man1/local.1                     |     1 +
 src/man1/lockfile.1                  |   196 +
 src/man1/logname.1                   |    48 +
 src/man1/logout.1                    |     1 +
 src/man1/ls.1                        |   327 ++
 src/man1/lsattr.1                    |    52 +
 src/man1/mail.1                      |   924 +++
 src/man1/mailto.1                    |   507 ++
 src/man1/make_smbcodepage.1          |   117 +
 src/man1/makeinfo.1                  |   179 +
 src/man1/man.1                       |   268 +
 src/man1/md5sum.1                    |    74 +
 src/man1/mencoder.1                  |     1 +
 src/man1/mesg.1                      |    45 +
 src/man1/minicom.1                   |   540 ++
 src/man1/mirror.1l                   |   859 +++
 src/man1/mkdir.1                     |    59 +
 src/man1/mkfifo.1                    |    60 +
 src/man1/mknod.1                     |    91 +
 src/man1/mkpasswd.1                  |    84 +
 src/man1/mktemp.1                    |   123 +
 src/man1/mode.1                      |    64 +
 src/man1/more.1                      |   193 +
 src/man1/mpg123.1                    |   352 ++
 src/man1/mplayer.1                   |  3523 ++++++++++++
 src/man1/mv.1                        |    94 +
 src/man1/newgrp.1                    |    38 +
 src/man1/nice.1                      |    49 +
 src/man1/nmblookup.1                 |   180 +
 src/man1/nohup.1                     |    48 +
 src/man1/nroff.1                     |   145 +
 src/man1/octave-bug.1                |    66 +
 src/man1/octave-config.1             |    40 +
 src/man1/octave.1                    |    70 +
 src/man1/paste.1                     |    51 +
 src/man1/perl.1                      |   575 ++
 src/man1/perlbook.1                  |   143 +
 src/man1/perlboot.1                  |   850 +++
 src/man1/perlcn.1                    |   253 +
 src/man1/perlcompile.1               |   402 ++
 src/man1/perldata.1                  |   719 +++
 src/man1/perlfaq.1                   |   841 +++
 src/man1/perlfaq1.1                  |   286 +
 src/man1/perlfaq2.1                  |   626 ++
 src/man1/perlfaq3.1                  |   933 +++
 src/man1/perlfaq7.1                  |  1001 ++++
 src/man1/perlfaq8.1                  |  1193 ++++
 src/man1/perlfaq9.1                  |   770 +++
 src/man1/perlform.1                  |   392 ++
 src/man1/perlfunc.1                  |  7435 ++++++++++++++++++++++++
 src/man1/perlnumber.1                |   239 +
 src/man1/perlsec.1                   |   453 ++
 src/man1/perlstyle.1                 |   297 +
 src/man1/perltw.1                    |   271 +
 src/man1/pg_config.1                 |    41 +
 src/man1/pg_controldata.1            |    20 +
 src/man1/pg_ctl.1                    |   156 +
 src/man1/pg_dump.1                   |   272 +
 src/man1/pg_dumpall.1                |   130 +
 src/man1/pg_resetxlog.1              |    26 +
 src/man1/pg_restore.1                |   286 +
 src/man1/pgtclsh.1                   |    19 +
 src/man1/pgtksh.1                    |    19 +
 src/man1/popd.1                      |     1 +
 src/man1/postgres.1                  |   123 +
 src/man1/postmaster.1                |   190 +
 src/man1/printf.1                    |    91 +
 src/man1/psfaddtable.1               |    52 +
 src/man1/psfgettable.1               |    25 +
 src/man1/psfstriptable.1             |    26 +
 src/man1/psql.1                      |   946 +++
 src/man1/pushd.1                     |     1 +
 src/man1/pwd.1                       |    48 +
 src/man1/quota.1                     |    85 +
 src/man1/read.1                      |     1 +
 src/man1/readonly.1                  |     1 +
 src/man1/return.1                    |     1 +
 src/man1/rgview.1                    |     1 +
 src/man1/rgvim.1                     |     1 +
 src/man1/rlogin.1                    |   162 +
 src/man1/rm.1                        |   106 +
 src/man1/rmdir.1                     |    64 +
 src/man1/rvi.1                       |     1 +
 src/man1/rview.1                     |     1 +
 src/man1/rvim.1                      |     1 +
 src/man1/scp.1                       |   165 +
 src/man1/set.1                       |     1 +
 src/man1/setleds.1                   |    79 +
 src/man1/setmetamode.1               |    47 +
 src/man1/sh.1                        |     1 +
 src/man1/shift.1                     |     1 +
 src/man1/shopt.1                     |     1 +
 src/man1/showfont.1                  |    23 +
 src/man1/showkey.1                   |   102 +
 src/man1/size.1                      |   163 +
 src/man1/sleep.1                     |    43 +
 src/man1/smbclient.1                 |   542 ++
 src/man1/smbcontrol.1                |    87 +
 src/man1/smbrun.1                    |    51 +
 src/man1/smbsh.1                     |    66 +
 src/man1/smbstatus.1                 |    66 +
 src/man1/smbtar.1                    |   100 +
 src/man1/sort.1                      |   108 +
 src/man1/source.1                    |     1 +
 src/man1/split.1                     |    62 +
 src/man1/sq.1                        |    85 +
 src/man1/ssh.1                       |   787 +++
 src/man1/stat.1                      |    43 +
 src/man1/strings.1                   |   147 +
 src/man1/stty.1                      |   407 ++
 src/man1/su.1                        |    62 +
 src/man1/subst.1                     |   116 +
 src/man1/sum.1                       |    52 +
 src/man1/suspend.1                   |     1 +
 src/man1/svn.1                       |    21 +
 src/man1/svnadmin.1                  |    21 +
 src/man1/svndumpfilter.1             |    21 +
 src/man1/svnlook.1                   |    21 +
 src/man1/svnversion.1                |    21 +
 src/man1/sync.1                      |    42 +
 src/man1/tac.1                       |    57 +
 src/man1/tail.1                      |   108 +
 src/man1/tar.1                       |   332 ++
 src/man1/tclsh.1                     |   310 +
 src/man1/tcpdump.1                   |  1112 ++++
 src/man1/tee.1                       |    53 +
 src/man1/testparm.1                  |    76 +
 src/man1/testprns.1                  |    72 +
 src/man1/tex.1                       |   376 ++
 src/man1/texi2dvi.1                  |    82 +
 src/man1/texindex.1                  |    44 +
 src/man1/times.1                     |     1 +
 src/man1/touch.1                     |   190 +
 src/man1/trap.1                      |     1 +
 src/man1/troff.1                     |   675 +++
 src/man1/true.1                      |    52 +
 src/man1/tty.1                       |    50 +
 src/man1/type.1                      |     1 +
 src/man1/typeset.1                   |     1 +
 src/man1/ulimit.1                    |     1 +
 src/man1/umask.1                     |     1 +
 src/man1/unalias.1                   |     1 +
 src/man1/uname.1                     |    62 +
 src/man1/unicode_start.1             |    31 +
 src/man1/unicode_stop.1              |    20 +
 src/man1/uniq.1                      |    81 +
 src/man1/unset.1                     |     1 +
 src/man1/unsq.1                      |    87 +
 src/man1/uptime.1                    |    41 +
 src/man1/usleep.1                    |    32 +
 src/man1/uuencode.1                  |   129 +
 src/man1/vacuumdb.1                  |   132 +
 src/man1/vi.1                        |     1 +
 src/man1/view.1                      |     1 +
 src/man1/vim.1                       |     1 +
 src/man1/vimtutor.1                  |    50 +
 src/man1/virtex.1                    |     1 +
 src/man1/vt-is-UTF8.1                |    68 +
 src/man1/w.1                         |    80 +
 src/man1/wait.1                      |     1 +
 src/man1/wall.1                      |    27 +
 src/man1/wbinfo.1                    |   204 +
 src/man1/wc.1                        |    55 +
 src/man1/whatis.1                    |    38 +
 src/man1/who.1                       |    71 +
 src/man1/wish.1                      |    84 +
 src/man1/xargs.1                     |   109 +
 src/man1/xmodmap.1                   |   312 +
 src/man1/xpdf.1                      |   382 ++
 src/man1/xxd.1                       |   382 ++
 src/man1/yacc.1                      |   124 +
 src/man1/yes.1                       |    42 +
 src/man1/ypchfn.1                    |     1 +
 src/man1/ypchsh.1                    |     1 +
 src/man1/yppasswd.1                  |   156 +
 src/man1/zcat.1                      |     1 +
 src/man1/zipinfo.1                   |   299 +
 src/man1/zless.1                     |    28 +
 src/man2/accept.2                    |   268 +
 src/man2/bind.2                      |   210 +
 src/man2/close.2                     |    98 +
 src/man2/create_module.2             |    31 +
 src/man2/execve.2                    |   169 +
 src/man2/init_module.2               |    53 +
 src/man2/listen.2                    |   125 +
 src/man2/open.2                      |   333 ++
 src/man2/query_module.2              |    89 +
 src/man2/read.2                      |   138 +
 src/man2/send.2                      |   248 +
 src/man2/write.2                     |   121 +
 src/man3/Object.3                    |   367 ++
 src/man3/basename.3                  |   142 +
 src/man3/bindtextdomain.3            |    85 +
 src/man3/bzero.3                     |    60 +
 src/man3/clearerr.3                  |     1 +
 src/man3/exec.3                      |   204 +
 src/man3/exit.3                      |    63 +
 src/man3/fclose.3                    |   101 +
 src/man3/fcloseall.3                 |    67 +
 src/man3/fdopen.3                    |     1 +
 src/man3/feof.3                      |     1 +
 src/man3/ferror.3                    |   108 +
 src/man3/fflush.3                    |   106 +
 src/man3/fileno.3                    |     1 +
 src/man3/flockfile.3                 |    64 +
 src/man3/fopen.3                     |   210 +
 src/man3/freopen.3                   |     1 +
 src/man3/iconv_close.3               |    43 +
 src/man3/iconv_open.3                |   123 +
 src/man3/setbuf.3                    |   175 +
 src/man3/setbuffer.3                 |     1 +
 src/man3/setlinebuf.3                |     1 +
 src/man3/setlocale.3                 |   185 +
 src/man3/setvbuf.3                   |     1 +
 src/man3/stderr.3                    |     1 +
 src/man3/stdin.3                     |   104 +
 src/man3/stdio.3                     |   324 ++
 src/man3/stdout.3                    |     1 +
 src/man3/strcoll.3                   |    67 +
 src/man3/strxfrm.3                   |    68 +
 src/man3/ulimit.3                    |    62 +
 src/man3/unlocked_stdio.3            |    90 +
 src/man4/console_codes.4             |   511 ++
 src/man4/fifo.4                      |    55 +
 src/man4/hd.4                        |    97 +
 src/man5/acct.5                      |    51 +
 src/man5/aliases.5                   |    86 +
 src/man5/environ.5                   |   146 +
 src/man5/fs.5                        |   156 +
 src/man5/ftpaccess.5                 |   302 +
 src/man5/group.5                     |    34 +
 src/man5/host.conf.5                 |   108 +
 src/man5/info.5                      |    56 +
 src/man5/inittab.5                   |   241 +
 src/man5/ipc.5                       |   374 ++
 src/man5/issue.5                     |    33 +
 src/man5/keymaps.5                   |   422 ++
 src/man5/lilo.conf.5                 |   449 ++
 src/man5/lmhosts.5                   |    67 +
 src/man5/locale.5                    |   528 ++
 src/man5/man.conf.5                  |     1 +
 src/man5/man.config.5                |    45 +
 src/man5/motd.5                      |    50 +
 src/man5/nologin.5                   |    42 +
 src/man5/nscd.conf.5                 |   124 +
 src/man5/nsswitch.5                  |   331 ++
 src/man5/passwd.5                    |   132 +
 src/man5/proc.5                      |   748 +++
 src/man5/protocols.5                 |    54 +
 src/man5/resolver.5                  |   117 +
 src/man5/rpc.5                       |    67 +
 src/man5/securetty.5                 |    29 +
 src/man5/services.5                  |   179 +
 src/man5/shells.5                    |    54 +
 src/man5/smb.conf.5                  |  6698 +++++++++++++++++++++
 src/man5/smbpasswd.5                 |   110 +
 src/man5/svnserve.conf.5             |    49 +
 src/man5/termcap.5                   |   431 ++
 src/man5/texinfo.5                   |    44 +
 src/man5/ttytype.5                   |    51 +
 src/man5/tzfile.5                    |   132 +
 src/man5/utmp.5                      |   192 +
 src/man6/zic2xpm.6                   |    81 +
 src/man7/LDP.7                       |    89 +
 src/man7/abort.7                     |    45 +
 src/man7/alter_aggregate.7           |    41 +
 src/man7/alter_conversion.7          |    38 +
 src/man7/alter_database.7            |    55 +
 src/man7/alter_domain.7              |   102 +
 src/man7/alter_function.7            |    41 +
 src/man7/alter_group.7               |    52 +
 src/man7/alter_language.7            |    30 +
 src/man7/alter_operator_class.7      |    34 +
 src/man7/alter_schema.7              |    30 +
 src/man7/alter_sequence.7            |    70 +
 src/man7/alter_table.7               |   225 +
 src/man7/alter_trigger.7             |    40 +
 src/man7/alter_user.7                |   124 +
 src/man7/analyze.7                   |    49 +
 src/man7/arp.7                       |   239 +
 src/man7/ascii.7                     |   156 +
 src/man7/begin.7                     |    53 +
 src/man7/bootparam.7                 |  1118 ++++
 src/man7/charsets.7                  |   214 +
 src/man7/checkpoint.7                |    24 +
 src/man7/close.7                     |    37 +
 src/man7/cluster.7                   |    80 +
 src/man7/comment.7                   |   115 +
 src/man7/commit.7                    |    42 +
 src/man7/copy.7                      |   226 +
 src/man7/create_aggregate.7          |    75 +
 src/man7/create_cast.7               |   102 +
 src/man7/create_constraint_trigger.7 |    38 +
 src/man7/create_conversion.7         |    68 +
 src/man7/create_database.7           |    94 +
 src/man7/create_domain.7             |    69 +
 src/man7/create_function.7           |   139 +
 src/man7/create_group.7              |    54 +
 src/man7/create_index.7              |    76 +
 src/man7/create_language.7           |    74 +
 src/man7/create_operator.7           |   134 +
 src/man7/create_operator_class.7     |    95 +
 src/man7/create_rule.7               |    79 +
 src/man7/create_schema.7             |    80 +
 src/man7/create_sequence.7           |   118 +
 src/man7/create_table.7              |   366 ++
 src/man7/create_table_as.7           |    41 +
 src/man7/create_trigger.7            |    84 +
 src/man7/create_type.7               |   175 +
 src/man7/create_user.7               |   100 +
 src/man7/create_view.7               |    89 +
 src/man7/deallocate.7                |    29 +
 src/man7/declare.7                   |   102 +
 src/man7/delete.7                    |    61 +
 src/man7/drop_aggregate.7            |    44 +
 src/man7/drop_cast.7                 |    45 +
 src/man7/drop_conversion.7           |    40 +
 src/man7/drop_database.7             |    35 +
 src/man7/drop_domain.7               |    41 +
 src/man7/drop_function.7             |    44 +
 src/man7/drop_group.7                |    35 +
 src/man7/drop_index.7                |    41 +
 src/man7/drop_language.7             |    41 +
 src/man7/drop_operator.7             |    62 +
 src/man7/drop_operator_class.7       |    45 +
 src/man7/drop_rule.7                 |    44 +
 src/man7/drop_schema.7               |    43 +
 src/man7/drop_sequence.7             |    41 +
 src/man7/drop_table.7                |    43 +
 src/man7/drop_trigger.7              |    44 +
 src/man7/drop_type.7                 |    41 +
 src/man7/drop_user.7                 |    41 +
 src/man7/drop_view.7                 |    41 +
 src/man7/end.7                       |    42 +
 src/man7/execute.7                   |    31 +
 src/man7/explain.7                   |   117 +
 src/man7/fetch.7                     |   159 +
 src/man7/glob.7                      |   173 +
 src/man7/grant.7                     |   184 +
 src/man7/hier.7                      |   356 ++
 src/man7/icmp.7                      |   113 +
 src/man7/insert.7                    |   107 +
 src/man7/ip.7                        |   795 +++
 src/man7/lilyfaq.7                   |   390 ++
 src/man7/listen.7                    |    46 +
 src/man7/load.7                      |    26 +
 src/man7/locale.7                    |   183 +
 src/man7/lock.7                      |    80 +
 src/man7/mailaddr.7                  |   121 +
 src/man7/man.7                       |   651 +++
 src/man7/mdoc.samples.7              |  2482 ++++++++
 src/man7/move.7                      |    56 +
 src/man7/netdevice.7                 |   251 +
 src/man7/netlink.7                   |   251 +
 src/man7/notify.7                    |    51 +
 src/man7/packet.7                    |   315 +
 src/man7/prepare.7                   |    43 +
 src/man7/raw.7                       |   193 +
 src/man7/regex.7                     |   198 +
 src/man7/reindex.7                   |    84 +
 src/man7/reset.7                     |    53 +
 src/man7/revoke.7                    |    92 +
 src/man7/roff.7                      |  1206 ++++
 src/man7/rollback.7                  |    42 +
 src/man7/samba.7                     |   137 +
 src/man7/select.7                    |   479 ++
 src/man7/select_into.7               |    45 +
 src/man7/set.7                       |   118 +
 src/man7/set_constraints.7           |    31 +
 src/man7/set_session_authorization.7 |    49 +
 src/man7/set_transaction.7           |    59 +
 src/man7/show.7                      |    93 +
 src/man7/signal.7                    |   164 +
 src/man7/socket.7                    |   511 ++
 src/man7/start_transaction.7         |    26 +
 src/man7/suffix.7                    |   259 +
 src/man7/tcp.7                       |   306 +
 src/man7/truncate.7                  |    37 +
 src/man7/udp.7                       |   139 +
 src/man7/unicode.7                   |   193 +
 src/man7/unix.7                      |   255 +
 src/man7/unlisten.7                  |    57 +
 src/man7/update.7                    |    70 +
 src/man7/utf-8.7                     |   184 +
 src/man7/vacuum.7                    |    96 +
 src/man7/x25.7                       |   104 +
 src/man8/MAKEDEV.8                   |   407 ++
 src/man8/badblocks.8                 |   139 +
 src/man8/bdflush.8                   |    86 +
 src/man8/blockdev.8                  |    60 +
 src/man8/chat.8                      |   485 ++
 src/man8/chpasswd.8                  |    69 +
 src/man8/convertquota.8              |    56 +
 src/man8/cron.8                      |    22 +
 src/man8/dmesg.8                     |    61 +
 src/man8/edquota.8                   |   120 +
 src/man8/exportfs.8                  |   226 +
 src/man8/fdisk.8                     |   207 +
 src/man8/fsck.8                      |   304 +
 src/man8/groupadd.8                  |    70 +
 src/man8/groupdel.8                  |    59 +
 src/man8/groupmod.8                  |    60 +
 src/man8/halt.8                      |    70 +
 src/man8/hdparm.8                    |   444 ++
 src/man8/ifconfig.8                  |   223 +
 src/man8/imapd.8                     |    39 +
 src/man8/inetd.8                     |   147 +
 src/man8/init.8                      |   264 +
 src/man8/iptables-restore.8          |    58 +
 src/man8/iptables-save.8             |    56 +
 src/man8/iptables.8                  |   452 ++
 src/man8/lilo.8                      |   176 +
 src/man8/losetup.8                   |    92 +
 src/man8/lspci.8                     |   121 +
 src/man8/mailstats.8                 |    73 +
 src/man8/makemap.8                   |   123 +
 src/man8/mingetty.8                  |   113 +
 src/man8/mkfs.8                      |   117 +
 src/man8/mkswap.8                    |   119 +
 src/man8/modinfo.8                   |    48 +
 src/man8/named-bootconf.8            |    73 +
 src/man8/netstat.8                   |   435 ++
 src/man8/nmbd.8                      |   180 +
 src/man8/ntsysv.8                    |    32 +
 src/man8/ping.8                      |   210 +
 src/man8/pppd.8                      |  1563 +++++
 src/man8/printcap.8                  |   164 +
 src/man8/quotacheck.8                |   138 +
 src/man8/quotaoff.8                  |     1 +
 src/man8/quotaon.8                   |   133 +
 src/man8/quotastats.8                |    24 +
 src/man8/ramsize.8                   |     1 +
 src/man8/rdev.8                      |   154 +
 src/man8/repquota.8                  |    84 +
 src/man8/rootflags.8                 |     1 +
 src/man8/route.8                     |   187 +
 src/man8/rpm.8                       |   543 ++
 src/man8/setclock.8                  |    27 +
 src/man8/setquota.8                  |   113 +
 src/man8/setserial.8                 |   435 ++
 src/man8/showmount.8                 |    63 +
 src/man8/shutdown.8                  |   134 +
 src/man8/smbd.8                      |   217 +
 src/man8/smbmnt.8                    |    43 +
 src/man8/smbmount.8                  |   207 +
 src/man8/smbpasswd.8                 |   199 +
 src/man8/smbspool.8                  |   119 +
 src/man8/smbumount.8                 |    41 +
 src/man8/svnserve.8                  |    53 +
 src/man8/swapoff.8                   |     1 +
 src/man8/swapon.8                    |   136 +
 src/man8/swat.8                      |   176 +
 src/man8/sync.8                      |    94 +
 src/man8/tcpdump.8                   |  1111 ++++
 src/man8/tzselect.8                  |    45 +
 src/man8/umount.8                    |   117 +
 src/man8/useradd.8                   |   124 +
 src/man8/userdel.8                   |    80 +
 src/man8/usermod.8                   |   100 +
 src/man8/vidmode.8                   |     1 +
 src/man8/vmstat.8                    |   113 +
 src/man8/xinetd.8                    |   140 +
 src/man8/zdump.8                     |    44 +
 src/man8/zic.8                       |   381 ++
 src/man9/cmanexample.9               |    55 +
 src/man9/cmanformat.9                |   316 +
 src/manl/cbdsqr.l                    |   143 +
 src/manl/lapack.l                    |   154 +
 src/manl/zdrot.l                     |   123 +
 src/manl/zdrscl.l                    |    47 +
 src/mann/ArrowButton.n               |    99 +
 src/mann/Button.n                    |    89 +
 src/mann/ComboBox.n                  |    74 +
 src/mann/Dialog.n                    |   117 +
 src/mann/Http.n                      |   571 ++
 src/mann/LabelFrame.n                |    41 +
 src/mann/MainFrame.n                 |   148 +
 src/mann/Notebook.n                  |   117 +
 src/mann/PagesManager.n              |    66 +
 src/mann/PanedWindow.n               |    55 +
 src/mann/ProgressBar.n               |    55 +
 src/mann/ScrollableFrame.n           |    77 +
 src/mann/ScrolledWindow.n            |    57 +
 src/mann/SpinBox.n                   |    79 +
 src/mann/Tcl.n                       |   373 ++
 src/mann/TitleFrame.n                |    45 +
 src/mann/after.n                     |   299 +
 src/mann/append.n                    |   268 +
 src/mann/array.n                     |   300 +
 src/mann/bell.n                      |   270 +
 src/mann/bgerror.n                   |   282 +
 src/mann/binary.n                    |   569 ++
 src/mann/bindtags.n                  |   284 +
 src/mann/break.n                     |   270 +
 src/mann/catch.n                     |   290 +
 src/mann/cd.n                        |   269 +
 src/mann/chooseColor.n               |   281 +
 src/mann/chooseDirectory.n           |   281 +
 src/mann/ckalloc.n                   |     1 +
 src/mann/ckfree.n                    |     1 +
 src/mann/clipboard.n                 |   285 +
 src/mann/clock.n                     |   392 ++
 src/mann/close.n                     |   283 +
 src/mann/concat.n                    |   280 +
 src/mann/continue.n                  |   269 +
 src/mann/cursors.n                   |   393 ++
 src/mann/dde.n                       |   311 +
 src/mann/destroy.n                   |   269 +
 src/mann/encoding.n                  |   291 +
 src/mann/eof.n                       |   269 +
 src/mann/error.n                     |   280 +
 src/mann/eval.n                      |   269 +
 src/mann/exec.n                      |   407 ++
 src/mann/exit.n                      |   270 +
 src/mann/expr.n                      |   481 ++
 src/mann/fblocked.n                  |   269 +
 src/mann/fconfigure.n                |   339 ++
 src/mann/fcopy.n                     |   325 ++
 src/mann/file.n                      |   441 ++
 src/mann/fileevent.n                 |   290 +
 src/mann/filename.n                  |   362 ++
 src/mann/flush.n                     |   270 +
 src/mann/focusNext.n                 |   277 +
 src/mann/for.n                       |   277 +
 src/mann/foreach.n                   |   307 +
 src/mann/format.n                    |   351 ++
 src/mann/gets.n                      |   272 +
 src/mann/glob.n                      |   352 ++
 src/mann/global.n                    |   274 +
 src/mann/history.n                   |   306 +
 src/mann/html.n                      |   323 ++
 src/mann/if.n                        |   270 +
 src/mann/incr.n                      |   270 +
 src/mann/info.n                      |   328 ++
 src/mann/interp.n                    |   463 ++
 src/mann/join.n                      |   270 +
 src/mann/keysyms.n                   |  1166 ++++
 src/mann/lappend.n                   |   270 +
 src/mann/library.n                   |   386 ++
 src/mann/lindex.n                    |   271 +
 src/mann/linsert.n                   |   271 +
 src/mann/list.n                      |   282 +
 src/mann/llength.n                   |   271 +
 src/mann/load.n                      |   312 +
 src/mann/loadTk.n                    |   285 +
 src/mann/lower.n                     |   270 +
 src/mann/lrange.n                    |   269 +
 src/mann/lreplace.n                  |   278 +
 src/mann/lsearch.n                   |   278 +
 src/mann/lsort.n                     |   404 ++
 src/mann/memory.n                    |   257 +
 src/mann/messageBox.n                |   315 +
 src/mann/msgcat.n                    |   430 ++
 src/mann/namespace.n                 |   499 ++
 src/mann/open.n                      |   436 ++
 src/mann/option.n                    |   301 +
 src/mann/optionMenu.n                |   269 +
 src/mann/package.n                   |   330 ++
 src/mann/packagens.n                 |   285 +
 src/mann/palette.n                   |   284 +
 src/mann/pid.n                       |   270 +
 src/mann/pkgMkIndex.n                |   342 ++
 src/mann/popup.n                     |   266 +
 src/mann/proc.n                      |   276 +
 src/mann/puts.n                      |   277 +
 src/mann/pwd.n                       |   271 +
 src/mann/raise.n                     |   270 +
 src/mann/re_syntax.n                 |   771 +++
 src/mann/read.n                      |   280 +
 src/mann/regexp.n                    |   317 +
 src/mann/registry.n                  |   357 ++
 src/mann/regsub.n                    |   303 +
 src/mann/rename.n                    |   270 +
 src/mann/resource.n                  |   325 ++
 src/mann/return.n                    |   299 +
 src/mann/safe.n                      |   435 ++
 src/mann/scan.n                      |   347 ++
 src/mann/seek.n                      |   287 +
 src/mann/selection.n                 |   300 +
 src/mann/send.n                      |   294 +
 src/mann/set.n                       |   273 +
 src/mann/socket.n                    |   315 +
 src/mann/source.n                    |   283 +
 src/mann/split.n                     |   284 +
 src/mann/string.n                    |   452 ++
 src/mann/subst.n                     |   287 +
 src/mann/switch.n                    |   331 ++
 src/mann/tclvars.n                   |   422 ++
 src/mann/tell.n                      |   273 +
 src/mann/time.n                      |   274 +
 src/mann/tk.n                        |   284 +
 src/mann/tk_dialog.n                 |   289 +
 src/mann/tkerror.n                   |   268 +
 src/mann/tkvars.n                    |   280 +
 src/mann/tkwait.n                    |   274 +
 src/mann/trace.n                     |   309 +
 src/mann/unknown.n                   |   274 +
 src/mann/unset.n                     |   267 +
 src/mann/update.n                    |   276 +
 src/mann/uplevel.n                   |   288 +
 src/mann/upvar.n                     |   305 +
 src/mann/variable.n                  |   276 +
 src/mann/vwait.n                     |   271 +
 src/mann/while.n                     |    33 +
 utils/bi2fbfi.pl                     |    12 +
 utils/html2man                       |     9 +
 utils/man2html                       |    14 +
 utils/man2html.sh                    |    70 +
 utils/name.pl                        |     7 +
 utils/pre-trans.pl                   |    24 +
 utils/release-manpages               |    16 +
 utils/update-cman.sh                 |     2 +
 utils/zhtw_2_zhcn.pl                 |  1821 ++++++
 1451 files changed, 351267 insertions(+)

diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d1e3b79
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,397 @@
+		GNU Free Documentation License
+		  Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The "Document", below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as "you".  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+   or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications".  You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+    Copyright (c)  YEAR  YOUR NAME.
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.2
+    or any later version published by the Free Software Foundation;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+    with the Invariant Sections being LIST THEIR TITLES, with the
+    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/DOCS/00TRANSLATED b/DOCS/00TRANSLATED
new file mode 100644
index 0000000..edb1584
--- /dev/null
+++ b/DOCS/00TRANSLATED
@@ -0,0 +1,743 @@
+man1/:.1
+man1/..1
+man1/[.1
+man1/a2p.1
+man1/ab.1
+man1/ac.1
+man1/access.1
+man1/ali.1
+man1/alias.1
+man1/apm.1
+man1/apropos.1
+man1/ar.1
+man1/arch.1
+man1/at.1
+man1/autorun.1
+man1/basename.1
+man1/bash.1
+man1/bg.1
+man1/biff.1
+man1/bind.1
+man1/break.1
+man1/builtin.1
+man1/builtins.1
+man1/bunzip2.1
+man1/bzcat.1
+man1/bzip2.1
+man1/bzip2recover.1
+man1/cal.1
+man1/cat.1
+man1/cce.1
+man1/cd.1
+man1/charset.1
+man1/chattr.1
+man1/chfn.1
+man1/chgrp.1
+man1/chmod.1
+man1/chown.1
+man1/chroot.1
+man1/chsh.1
+man1/chvt.1
+man1/cksum.1
+man1/clear.1
+man1/clusterdb.1
+man1/col.1
+man1/comm.1
+man1/command.1
+man1/compgen.1
+man1/complete.1
+man1/continue.1
+man1/cp.1
+man1/cpio.1
+man1/createdb.1
+man1/createlang.1
+man1/createuser.1
+man1/cut.1
+man1/date.1
+man1/dd.1
+man1/deallocvt.1
+man1/declare.1
+man1/df.1
+man1/diff.1
+man1/dig.1
+man1/dircolor.1
+man1/dircolors.1
+man1/dirname.1
+man1/dirs.1
+man1/disown.1
+man1/dnskeygen.1
+man1/dnsquery.1
+man1/dropdb.1
+man1/droplang.1
+man1/dropuser.1
+man1/du.1
+man1/dumpkeys.1
+man1/echo.1
+man1/ecpg.1
+man1/egrep.1
+man1/eject.1
+man1/emacs.1
+man1/enable.1
+man1/env.1
+man1/eval.1
+man1/ex.1
+man1/exec.1
+man1/exit.1
+man1/expand.1
+man1/export.1
+man1/false.1
+man1/fc.1
+man1/fg.1
+man1/fgrep.1
+man1/file.1
+man1/find.1
+man1/findsmb.1
+man1/finger.1
+man1/fmt.1
+man1/fold.1
+man1/free.1
+man1/ftp.1
+man1/gcc.1
+man1/gedit.1
+man1/getopts.1
+man1/git.1
+man1/gnroff.1
+man1/grep.1
+man1/groff.1
+man1/groups.1
+man1/gunzip.1
+man1/gview.1
+man1/gvim.1
+man1/gzip.1
+man1/hash.1
+man1/head.1
+man1/help.1
+man1/history.1
+man1/host.1
+man1/hostid.1
+man1/hostname.1
+man1/iconv.1
+man1/id.1
+man1/info.1
+man1/initdb.1
+man1/initex.1
+man1/initlocation.1
+man1/install.1
+man1/install-info.1
+man1/intro.1
+man1/ipcclean.1
+man1/jobs.1
+man1/kbd_mode.1
+man1/kill.1
+man1/killall.1
+man1/last.1
+man1/ld.1
+man1/ldd.1
+man1/let.1
+man1/listalias.1
+man1/ln.1
+man1/loadkeys.1
+man1/local.1
+man1/lockfile.1
+man1/logname.1
+man1/logout.1
+man1/ls.1
+man1/lsattr.1
+man1/mail.1
+man1/mailto.1
+man1/makeinfo.1
+man1/make_smbcodepage.1
+man1/man.1
+man1/md5sum.1
+man1/mencoder.1
+man1/mesg.1
+man1/minicom.1
+man1/mirror.1l
+man1/mkdir.1
+man1/mkfifo.1
+man1/mknod.1
+man1/mkpasswd.1
+man1/mktemp.1
+man1/mode.1
+man1/more.1
+man1/mpg123.1
+man1/mplayer.1
+man1/mv.1
+man1/newgrp.1
+man1/nice.1
+man1/nmblookup.1
+man1/nohup.1
+man1/nroff.1
+man1/octave.1
+man1/octave-bug.1
+man1/octave-config.1
+man1/paste.1
+man1/perl.1
+man1/perlbook.1
+man1/perlboot.1
+man1/perlcn.1
+man1/perlcompile.1
+man1/perldata.1
+man1/perlfaq.1
+man1/perlfaq1.1
+man1/perlfaq2.1
+man1/perlfaq3.1
+man1/perlfaq7.1
+man1/perlfaq8.1
+man1/perlfaq9.1
+man1/perlform.1
+man1/perlfunc.1
+man1/perlnumber.1
+man1/perlsec.1
+man1/perlstyle.1
+man1/perltw.1
+man1/pg_config.1
+man1/pg_controldata.1
+man1/pg_ctl.1
+man1/pg_dump.1
+man1/pg_dumpall.1
+man1/pg_resetxlog.1
+man1/pg_restore.1
+man1/pgtclsh.1
+man1/pgtksh.1
+man1/popd.1
+man1/postgres.1
+man1/postmaster.1
+man1/printf.1
+man1/psfaddtable.1
+man1/psfgettable.1
+man1/psfstriptable.1
+man1/psql.1
+man1/pushd.1
+man1/pwd.1
+man1/quota.1
+man1/read.1
+man1/readonly.1
+man1/return.1
+man1/rgview.1
+man1/rgvim.1
+man1/rlogin.1
+man1/rm.1
+man1/rmdir.1
+man1/rvi.1
+man1/rview.1
+man1/rvim.1
+man1/scp.1
+man1/set.1
+man1/setleds.1
+man1/setmetamode.1
+man1/sh.1
+man1/shift.1
+man1/shopt.1
+man1/showfont.1
+man1/showkey.1
+man1/size.1
+man1/sleep.1
+man1/smbclient.1
+man1/smbcontrol.1
+man1/smbrun.1
+man1/smbsh.1
+man1/smbstatus.1
+man1/smbtar.1
+man1/sort.1
+man1/source.1
+man1/split.1
+man1/sq.1
+man1/ssh.1
+man1/stat.1
+man1/strings.1
+man1/stty.1
+man1/su.1
+man1/subst.1
+man1/sum.1
+man1/suspend.1
+man1/svn.1
+man1/svnadmin.1
+man1/svndumpfilter.1
+man1/svnlook.1
+man1/svnversion.1
+man1/sync.1
+man1/tac.1
+man1/tail.1
+man1/tar.1
+man1/tclsh.1
+man1/tcpdump.1
+man1/tee.1
+man1/testparm.1
+man1/testprns.1
+man1/tex.1
+man1/texi2dvi.1
+man1/texindex.1
+man1/times.1
+man1/touch.1
+man1/trap.1
+man1/troff.1
+man1/true.1
+man1/tty.1
+man1/type.1
+man1/typeset.1
+man1/ulimit.1
+man1/umask.1
+man1/unalias.1
+man1/uname.1
+man1/unicode_start.1
+man1/unicode_stop.1
+man1/uniq.1
+man1/unset.1
+man1/unsq.1
+man1/uptime.1
+man1/usleep.1
+man1/uuencode.1
+man1/vacuumdb.1
+man1/vi.1
+man1/view.1
+man1/vim.1
+man1/vimtutor.1
+man1/virtex.1
+man1/vt-is-UTF8.1
+man1/w.1
+man1/wait.1
+man1/wall.1
+man1/wbinfo.1
+man1/wc.1
+man1/whatis.1
+man1/who.1
+man1/wish.1
+man1/xargs.1
+man1/xmodmap.1
+man1/xpdf.1
+man1/xxd.1
+man1/yacc.1
+man1/yes.1
+man1/ypchfn.1
+man1/ypchsh.1
+man1/yppasswd.1
+man1/zcat.1
+man1/zipinfo.1
+man1/zless.1
+man2/accept.2
+man2/bind.2
+man2/close.2
+man2/create_module.2
+man2/execve.2
+man2/init_module.2
+man2/listen.2
+man2/open.2
+man2/query_module.2
+man2/read.2
+man2/send.2
+man2/write.2
+man3/basename.3
+man3/bindtextdomain.3
+man3/bzero.3
+man3/clearerr.3
+man3/exec.3
+man3/exit.3
+man3/fclose.3
+man3/fcloseall.3
+man3/fdopen.3
+man3/feof.3
+man3/ferror.3
+man3/fflush.3
+man3/fileno.3
+man3/flockfile.3
+man3/fopen.3
+man3/freopen.3
+man3/iconv_close.3
+man3/iconv_open.3
+man3/Object.3
+man3/setbuf.3
+man3/setbuffer.3
+man3/setlinebuf.3
+man3/setlocale.3
+man3/setvbuf.3
+man3/stderr.3
+man3/stdin.3
+man3/stdio.3
+man3/stdout.3
+man3/strcoll.3
+man3/strxfrm.3
+man3/ulimit.3
+man3/unlocked_stdio.3
+man4/console_codes.4
+man4/fifo.4
+man4/hd.4
+man5/acct.5
+man5/aliases.5
+man5/environ.5
+man5/fs.5
+man5/ftpaccess.5
+man5/group.5
+man5/host.conf.5
+man5/info.5
+man5/inittab.5
+man5/ipc.5
+man5/issue.5
+man5/keymaps.5
+man5/lilo.conf.5
+man5/lmhosts.5
+man5/locale.5
+man5/man.conf.5
+man5/man.config.5
+man5/motd.5
+man5/nologin.5
+man5/nscd.conf.5
+man5/nsswitch.5
+man5/passwd.5
+man5/proc.5
+man5/protocols.5
+man5/resolver.5
+man5/rpc.5
+man5/securetty.5
+man5/services.5
+man5/shells.5
+man5/smb.conf.5
+man5/smbpasswd.5
+man5/svnserve.conf.5
+man5/termcap.5
+man5/texinfo.5
+man5/ttytype.5
+man5/tzfile.5
+man5/utmp.5
+man6/zic2xpm.6
+man7/abort.7
+man7/alter_aggregate.7
+man7/alter_conversion.7
+man7/alter_database.7
+man7/alter_domain.7
+man7/alter_function.7
+man7/alter_group.7
+man7/alter_language.7
+man7/alter_operator_class.7
+man7/alter_schema.7
+man7/alter_sequence.7
+man7/alter_table.7
+man7/alter_trigger.7
+man7/alter_user.7
+man7/analyze.7
+man7/arp.7
+man7/ascii.7
+man7/begin.7
+man7/bootparam.7
+man7/charsets.7
+man7/checkpoint.7
+man7/close.7
+man7/cluster.7
+man7/comment.7
+man7/commit.7
+man7/copy.7
+man7/create_aggregate.7
+man7/create_cast.7
+man7/create_constraint_trigger.7
+man7/create_conversion.7
+man7/create_database.7
+man7/create_domain.7
+man7/create_function.7
+man7/create_group.7
+man7/create_index.7
+man7/create_language.7
+man7/create_operator.7
+man7/create_operator_class.7
+man7/create_rule.7
+man7/create_schema.7
+man7/create_sequence.7
+man7/create_table.7
+man7/create_table_as.7
+man7/create_trigger.7
+man7/create_type.7
+man7/create_user.7
+man7/create_view.7
+man7/deallocate.7
+man7/declare.7
+man7/delete.7
+man7/drop_aggregate.7
+man7/drop_cast.7
+man7/drop_conversion.7
+man7/drop_database.7
+man7/drop_domain.7
+man7/drop_function.7
+man7/drop_group.7
+man7/drop_index.7
+man7/drop_language.7
+man7/drop_operator.7
+man7/drop_operator_class.7
+man7/drop_rule.7
+man7/drop_schema.7
+man7/drop_sequence.7
+man7/drop_table.7
+man7/drop_trigger.7
+man7/drop_type.7
+man7/drop_user.7
+man7/drop_view.7
+man7/end.7
+man7/execute.7
+man7/explain.7
+man7/fetch.7
+man7/glob.7
+man7/grant.7
+man7/hier.7
+man7/icmp.7
+man7/insert.7
+man7/ip.7
+man7/LDP.7
+man7/lilyfaq.7
+man7/listen.7
+man7/load.7
+man7/locale.7
+man7/lock.7
+man7/mailaddr.7
+man7/man.7
+man7/mdoc.samples.7
+man7/move.7
+man7/netdevice.7
+man7/netlink.7
+man7/notify.7
+man7/packet.7
+man7/prepare.7
+man7/raw.7
+man7/regex.7
+man7/reindex.7
+man7/reset.7
+man7/revoke.7
+man7/roff.7
+man7/rollback.7
+man7/samba.7
+man7/select.7
+man7/select_into.7
+man7/set.7
+man7/set_constraints.7
+man7/set_session_authorization.7
+man7/set_transaction.7
+man7/show.7
+man7/signal.7
+man7/socket.7
+man7/start_transaction.7
+man7/suffix.7
+man7/tcp.7
+man7/truncate.7
+man7/udp.7
+man7/unicode.7
+man7/unix.7
+man7/unlisten.7
+man7/update.7
+man7/utf-8.7
+man7/vacuum.7
+man7/x25.7
+man8/badblocks.8
+man8/bdflush.8
+man8/blockdev.8
+man8/chat.8
+man8/chpasswd.8
+man8/convertquota.8
+man8/cron.8
+man8/dmesg.8
+man8/edquota.8
+man8/exportfs.8
+man8/fdisk.8
+man8/fsck.8
+man8/groupadd.8
+man8/groupdel.8
+man8/groupmod.8
+man8/halt.8
+man8/hdparm.8
+man8/ifconfig.8
+man8/imapd.8
+man8/inetd.8
+man8/init.8
+man8/iptables.8
+man8/iptables-restore.8
+man8/iptables-save.8
+man8/lilo.8
+man8/losetup.8
+man8/lspci.8
+man8/mailstats.8
+man8/MAKEDEV.8
+man8/makemap.8
+man8/mingetty.8
+man8/mkfs.8
+man8/mkswap.8
+man8/modinfo.8
+man8/named-bootconf.8
+man8/netstat.8
+man8/nmbd.8
+man8/ntsysv.8
+man8/ping.8
+man8/pppd.8
+man8/printcap.8
+man8/quotacheck.8
+man8/quotaoff.8
+man8/quotaon.8
+man8/quotastats.8
+man8/ramsize.8
+man8/rdev.8
+man8/repquota.8
+man8/rootflags.8
+man8/route.8
+man8/rpm.8
+man8/setclock.8
+man8/setquota.8
+man8/setserial.8
+man8/showmount.8
+man8/shutdown.8
+man8/smbd.8
+man8/smbmnt.8
+man8/smbmount.8
+man8/smbpasswd.8
+man8/smbspool.8
+man8/smbumount.8
+man8/svnserve.8
+man8/swapoff.8
+man8/swapon.8
+man8/swat.8
+man8/sync.8
+man8/tcpdump.8
+man8/tzselect.8
+man8/umount.8
+man8/useradd.8
+man8/userdel.8
+man8/usermod.8
+man8/vidmode.8
+man8/vmstat.8
+man8/xinetd.8
+man8/zdump.8
+man8/zic.8
+man9/cmanexample.9
+man9/cmanformat.9
+manl/cbdsqr.l
+manl/lapack.l
+manl/zdrot.l
+manl/zdrscl.l
+mann/after.n
+mann/append.n
+mann/array.n
+mann/ArrowButton.n
+mann/bell.n
+mann/bgerror.n
+mann/binary.n
+mann/bindtags.n
+mann/break.n
+mann/Button.n
+mann/catch.n
+mann/cd.n
+mann/chooseColor.n
+mann/chooseDirectory.n
+mann/ckalloc.n
+mann/ckfree.n
+mann/clipboard.n
+mann/clock.n
+mann/close.n
+mann/ComboBox.n
+mann/concat.n
+mann/continue.n
+mann/cursors.n
+mann/dde.n
+mann/destroy.n
+mann/Dialog.n
+mann/encoding.n
+mann/eof.n
+mann/error.n
+mann/eval.n
+mann/exec.n
+mann/exit.n
+mann/expr.n
+mann/fblocked.n
+mann/fconfigure.n
+mann/fcopy.n
+mann/fileevent.n
+mann/file.n
+mann/filename.n
+mann/flush.n
+mann/focusNext.n
+mann/foreach.n
+mann/format.n
+mann/for.n
+mann/gets.n
+mann/global.n
+mann/glob.n
+mann/history.n
+mann/html.n
+mann/Http.n
+mann/if.n
+mann/incr.n
+mann/info.n
+mann/interp.n
+mann/join.n
+mann/keysyms.n
+mann/LabelFrame.n
+mann/lappend.n
+mann/library.n
+mann/lindex.n
+mann/linsert.n
+mann/list.n
+mann/llength.n
+mann/load.n
+mann/loadTk.n
+mann/lower.n
+mann/lrange.n
+mann/lreplace.n
+mann/lsearch.n
+mann/lsort.n
+mann/MainFrame.n
+mann/memory.n
+mann/messageBox.n
+mann/msgcat.n
+mann/namespace.n
+mann/Notebook.n
+mann/open.n
+mann/optionMenu.n
+mann/option.n
+mann/package.n
+mann/packagens.n
+mann/PagesManager.n
+mann/palette.n
+mann/PanedWindow.n
+mann/pid.n
+mann/pkgMkIndex.n
+mann/popup.n
+mann/proc.n
+mann/ProgressBar.n
+mann/puts.n
+mann/pwd.n
+mann/raise.n
+mann/read.n
+mann/regexp.n
+mann/registry.n
+mann/regsub.n
+mann/rename.n
+mann/resource.n
+mann/re_syntax.n
+mann/return.n
+mann/safe.n
+mann/scan.n
+mann/ScrollableFrame.n
+mann/ScrolledWindow.n
+mann/seek.n
+mann/selection.n
+mann/send.n
+mann/set.n
+mann/socket.n
+mann/source.n
+mann/SpinBox.n
+mann/split.n
+mann/string.n
+mann/subst.n
+mann/switch.n
+mann/Tcl.n
+mann/tclvars.n
+mann/tell.n
+mann/time.n
+mann/TitleFrame.n
+mann/tk_dialog.n
+mann/tkerror.n
+mann/tk.n
+mann/tkvars.n
+mann/tkwait.n
+mann/trace.n
+mann/unknown.n
+mann/unset.n
+mann/update.n
+mann/uplevel.n
+mann/upvar.n
+mann/variable.n
+mann/vwait.n
+mann/while.n
diff --git a/DOCS/ChangeLog b/DOCS/ChangeLog
new file mode 100644
index 0000000..b4ee0bf
--- /dev/null
+++ b/DOCS/ChangeLog
@@ -0,0 +1,216 @@
+20040615 整理了一些 perl 文档
+
+这些 perl 文档主要来自 linuxforum 的翻译计划,以及两只老虎工作室(台湾)的翻译工作
+
+20031220 将原始文档加入raw目录
+
+ 1、将原始文档加入raw目录,以便修改和更新
+ 
+20031205 打包工作基本完成
+
+ 1、现在有了520余篇手册页可用
+ 2、已有的文档做了一些重新排版,主要是署名和NAME格式做了统一
+ 3、tcl 文档全部转为 man 格式
+ 4、samba 文档整理完毕
+ 5、在http://sf.linuxforum.net 上发布了man-pages-zh_CN(rpm) 和manpages-zh(deb)
+
+20031025 打包工作进行中
+
+ 1、按照redhat rpm包命名规则,命名为man-pages-zh_CN,编码默\
+   认采用UTF-8。相应的GB编码的包命名为man-pages-zh_CN-gb。由\
+   man文档转化为html 文件用于网络发布和浏览,打包名称为\
+   man-pages-zh_CN-html
+ 2、按照debian deb包命名规则,命名为manpages-zh。繁体部分尚未完成。
+
+200205 0.3发布
+
+2001/10/27 0.2 发布
+ [概述]
+和上次发布有三个月的距离了让大家久等了.但是着三个月中 CMPP
+发生的变化是非常大的,首先,CMPP 继续扩展到更多的发布版本中.
+希望能有更多人能够分享到 CMPP 各个参与成员的劳动.同时也能因为
+CMPP 的一点菲薄之力而受益,我们的口号是,使用它就是对我们最好的支持!
+
+在这个版本里最显著的变化就是发生在 mann 里,在那里,mhss 
+先生为大家几乎贡献了所有 Tcl 的手册!这也可以说是 CMPP 迄
+今为止最大规模的手册系列了.这对许多喜爱Tcl 这种语言的朋友
+肯定是个大帮助.相信对 Tcl 在国内的普及和发展也有很大帮助.
+
+同时,我们保持了恒定的 man1 内容的更新,越有 30 多篇 
+man1 的内容转化成了中文.
+
+还有一个进步是有网友已经开始着手 man2, man3 的内容了,这
+样,多所有的程序员朋友将是一个新的开端.这些手册页将给所
+有程序员朋友更多帮助!请尽情使用吧!
+
+2001/07/21 0.1 发布,
+[概述]
+经过一段时间的工作,我们很骄傲地宣布 cman 0.1.0 的发布,
+这个版本是完全可以胜任一般日常工作的一个版本,我们新增加
+了近 50 个条目,覆盖了大部分系统日常使用和维护的范畴.
+同时,我们增加了许多一起合作的朋友,象 Tony, Su Yong,
+Anthony Fork 等等,同时 cman 也进入了 Debian, 中软 Linux,
+Happy Linux 等发布中,感谢大家的努力,并为大家取得的成就
+欢呼! 
+0.1 的推出标志着 CMPP 的又一个坚实的足迹,同时也是对所有
+爱好者和使用者的感谢,对所有有怀疑态度的人的回答.在这里,
+我代表所有 CMPP 的成员向整个互联网宣布:
+我们一直在前进!
+2001/06/30 更新了 FAQs
+2001/06/11 我们的 CVS 换到 202.204.24.8 了.
+2001/05/20 修改了版权声明,实际上采用了 FDL 的版权声明.
+2001/05/01 增加了 sampes 目录,以后的各种例子和
+代码片段将放在这里.
+2001/04/12
+MAINTAINER 文件完成。现在 Man Page 用户可以通过此文件
+找到每一手册页的维护者,欢迎报告错误和提供建议。
+
+2001/03/19
+[概述]
+我们目前已经全部改用 CVS 和邮递列表,进行版本和进度等
+管理工作了,并且我们已经初步形成了一支比较稳定的维护人员队伍.
+在这个期间我们又新增加和校对了一批新手册页,无论数量
+还是质量上我们都有了极大的提高.
+
+主要增加的内容包括 man1,man5,man7,和 man8 中的许多
+新内容,覆盖的范围包括基本命令,系统维护和配置,以及
+网络配置和使用等,同时我们的提交人员则进一步地开始了
+更新的内容提交,一些标准 man-1.31 之外的手册页也开始出现
+在我们的 CMPP 的发行包中,比如 samba 和 tcpdump,openssh
+等内容.并且随着我们新的认领办法的使用,我相信以后的
+cman 将会覆盖更广泛的内容和更深层次的内涵.
+
+在这个新版本里,我们建立了新的 people 用户,从而使每位
+CVS 维护人员有了自己的工作区间,也使 CMPP 能够更加有效
+地兼顾各个方向.保持 cman 的平衡发展.
+
+同时,我们修改了以前并不完善的认领办法,采用了标准的替换
+法,也就是我们把所有合适的英文手册页都放到我们的 CVS 服务器
+上,任何网友只要看到是英文的手册页就可以拿下来翻译,完成后
+提交到 cmpp at yahoogroups.com 邮递列表.这样,就更加方便广大
+网友观察进度,共同参与.更详细的相关信息,请参阅 FAQs.
+
+另外,我们还进一步完善了一些相关的工具,比如,在 /contrib 
+目录下就新增加了用于 windows 中查看 man pages 的工具,winmanviewer,
+以及一些处理 man 到不同格式的工具,大家可以把手册页转换成更
+丰富的格式了.
+
+相信这个新版本的 cman 在许多网友的努力下能够给更多的自由软件
+爱好者和使用者带来方便,同时也希望有更多的网友能参与这个庞大的
+计划.所有手册页总共的字数超过 550 万,只有更多的网友齐参与,
+共努力,发样蚂蚁啃骨头的精神,把无数零碎的时间汇集成一股洪流,
+才能真正实现这样的目标.
+
+各位朋友,如果您正在寻找有趣的事情做,如果您希望在学习的过程中
+同时为他人做一些贡献,如果您还是自由软件使用或爱好者,那么,
+请参与到 CMPP 计划中来,让我们一起推进我们整个社区的发展,并最终
+在历史的长河中留下您的足迹!
+
+[增加]
+大量增加,不计其数,您只能通过 CVS LOG 机制才能看到详细的情况.
+
+[修补]
+对 CVS 结构,目录结构做了大量调整和修改.
+
+[说明]
+CMPP 的网站是: www.cmpp.net
+CMPP 的邮递列表是: cmpp at yahoogroups.com
+更详细的信息请参阅网站和 FAQs.
+欢迎任何意见和建议.
+意见和建议请发往邮递列表.
+
+2001/03/19
+[概括]
+man1 源文件引入完成,基本上是 RH6.2 的 man1. 
+2001/01/31	0.0.5
+2000/12/27	0.0.4
+[概括]
+今天我们正式把所有 cman 的内容放到 CVS 服务器上,
+这样大家就可以更快地看到我们的成果和进度了.
+2000/12/22	0.0.3
+[概况]这是一个过渡版本,我们准备把工作移到 CVS 
+上去,在这之前,我们把所有收集到的内容先做一个包,
+发布出来,供大家参考.
+2000/12/05	0.0.2 release
+[概况]
+完成了全部现有的 man1,man5,man7,man8 的工作.
+为了更好地反映我们的进度,我们决定放弃 alpha,beta,阶段,
+把所有未校对的东西放在 uncheck 子目录,当完成校对,将其移
+至正式的 man[1-9,n] 目录下.同时力争每周一个版本.
+man8 中 fdisk.8,init.8,sync.8 以及与时区相关的几条手册页
+给我们提供了非常丰富的系统知识和系统配置线索,
+相信对所有用户都是一些非常好的帮助和学习/认识起点.
+同时在 man1 中增加 kill 和 killall 两条手册页.
+
+0.0.2 版本可以说是一个比较完善的包了,它的内容现在已经
+可以为大多数系统管理员以及许多使用系统接口的程序员提供
+广泛的帮助(主要覆盖 INET 方面).与 0.0.1 相比,我们的
+材料有了进一步的积累,合格的内容有了长足的增长,感谢所有
+奉献自己时间的参与者,也感谢所有使用和查找问题的用户.
+希望大家继续支持这个计划,也希望大家能进一步宣传她,参与她,
+为更多更广泛的用户提供更丰富更实用的资料.
+
+"这是一项可以利用许多人的零碎时间的事业,
+许多个零碎的时间汇集起来,就是一股强大的力量,
+就可以为我们大家创造出更好的世界."
+
+任何意见或建议,请 mailto: laserhenry at 263.net
+
+
+[增加]
+增加了MAINTAINERS,目前这个文件尚未完全完成,感谢 wangdong!
+[修补]
+所有 man8,man1部分
+[声明]
+我们校对的时候修改了大量的内容,请各相关译者参照和阅读,
+如果有异议,请及时向我们反映:laserhenry at 263.net
+
+Laser
+
+2000/11/26
+经过近两天的工作,我把现有 man5 部分全部校对完成,
+并且增加了 mapping 先生翻的 proc.5,现在的 man5 部分
+是完全可以信赖的并且非常有参考价值.其中 
+environ.5 对于了解 Unix 体系的环境变量非常有帮助,
+fs.5 可以帮助您了解 Linux 所支持的文件系统,
+host.conf.5 将帮助您对 Unix 体系的域名和主机名系统极其配置有初步认识
+并且是获取相关帮助的源头,
+passwd.5 为你解释了 Unix 系统的认证和登录体系,
+proc.5 则对于所有需要管理和认识 Linux 系统,以及学习 Linux 内核的朋友
+都是一个非常好的参考资料.您可以利用 proc.5 里面的内容更好地配置和管理
+Linux 内核,同时它也是切入 Linux 内核的一个入口,与 man7 中的 inet 系列
+man pages 相结合,相信现在对 Linux 内核的管理将更加有条理和有理论基础.
+shells.5 则告诉我们更多关于用户 shell 管理的知识.
+另外还完成的有 man8 的一部分,可以检查我的 ChangeLog.
+
+其他的修改包括对制作脚本进行了修改,以及修改了所有的站点联接等.
+至此,正式升级为 0.0.2-alpha,将在 beta 中主要完成 man8 的工作.
+
+-Laser
+
+2000/11/22
+准备 0.0.2-alpha
+目标是把 man5 的部分全部校对完成,
+
+
+2000/11/10
+崭新的 cman 0.0.1
+
+我校对了现有 man1 和 man7 的绝大部分内容,
+尤其是 man7,因为实在关系到准确性问题,
+耗费了我将近一周的时间.
+
+现在可以告诉大家,如果有人对配置,优化系统,
+尤其是系统网络性能,对书写更强大的 tcp/ip socket 程序感兴趣,
+那么 man7 里的 
+arp.7,ip.7, packet.7, tcp.7, icmp.7, 
+netdevice.7, netlink.7, raw.7,unix.7,udp.7
+是绝对不可不看的.
+
+如果您对本地化感兴趣,请参考 man7 中的
+locale.7, unicode.7, utf-8.7, charsets.7
+将是您的很好的帮手.
+
+
+
+
diff --git a/DOCS/ChangeLog.GB b/DOCS/ChangeLog.GB
new file mode 100644
index 0000000..8ab7149
--- /dev/null
+++ b/DOCS/ChangeLog.GB
@@ -0,0 +1,216 @@
+20040615 ������һЩ perl �ĵ�
+
+��Щ perl �ĵ���Ҫ���� linuxforum �ķ���ƻ����Լ���ֻ�ϻ�������(̨��)�ķ��빤��
+
+20031220 ��ԭʼ�ĵ�����rawĿ¼
+
+ 1����ԭʼ�ĵ�����rawĿ¼���Ա��޸ĺ͸���
+ 
+20031205 ��������������
+
+ 1����������520��ƪ�ֲ�ҳ����
+ 2�����е��ĵ�����һЩ�����Ű棬��Ҫ��������NAME��ʽ����ͳһ
+ 3��tcl �ĵ�ȫ��תΪ man ��ʽ
+ 4��samba �ĵ��������
+ 5����http://sf.linuxforum.net �Ϸ�����man-pages-zh_CN(rpm) ��manpages-zh(deb)
+
+20031025 �������������
+
+ 1������redhat rpm��������������Ϊman-pages-zh_CN,����Ĭ\
+   �ϲ���UTF-8����Ӧ��GB����İ�����Ϊman-pages-zh_CN-gb����\
+   man�ĵ�ת��Ϊhtml �ļ��������緢����������������Ϊ\
+   man-pages-zh_CN-html
+ 2������debian deb��������������Ϊmanpages-zh�����岿����δ��ɡ�
+
+200205 0.3����
+
+2001/10/27 0.2 ����
+ [����]
+���ϴη����������µľ������ô�Ҿõ��ˣ��������������� CMPP
+�����ı仯�Ƿdz���ģ����ȣ�CMPP ������չ������ķ����汾�У�
+ϣ�����и������ܹ����� CMPP ���������Ա���Ͷ���ͬʱҲ����Ϊ
+CMPP ��һ��Ʊ�֮�������棬���ǵĿں��ǣ�ʹ�������Ƕ�������õ�֧��!
+
+������汾���������ı仯���Ƿ����� mann ������mhss 
+����Ϊ��Ҽ������������� Tcl ���ֲᣡ��Ҳ����˵�� CMPP ��
+��Ϊֹ����ģ���ֲ�ϵ���ˣ�������ϲ��Tcl �������Ե�����
+�϶��Ǹ�����������Ŷ� Tcl �ڹ��ڵ��ռ��ͷ�չҲ�кܴ������
+
+ͬʱ�����DZ����˺㶨�� man1 ���ݵĸ��£�Խ�� 30 ��ƪ 
+man1 ������ת���������ģ�
+
+����һ���������������Ѿ���ʼ���� man2, man3 �������ˣ���
+���������еij���Ա���ѽ���һ���µĿ��ˣ���Щ�ֲ�ҳ������
+�г���Ա���Ѹ���������뾡��ʹ�ðɣ�
+
+2001/07/21 0.1 ������
+[����]
+����һ��ʱ��Ĺ��������Ǻܽ��������� cman 0.1.0 �ķ�����
+����汾����ȫ����ʤ��һ���ճ�������һ���汾������������
+�˽� 50 ����Ŀ�������˴󲿷�ϵͳ�ճ�ʹ�ú�ά���ķ��룮
+ͬʱ���������������һ����������ѣ��� Tony, Su Yong,
+Anthony Fork �ȵȣ�ͬʱ cman Ҳ������ Debian, ���� Linux,
+Happy Linux �ȷ����У���л��ҵ�Ŭ������Ϊ���ȡ�õijɾ�
+���� 
+0.1 ���Ƴ���־�� CMPP ����һ����ʵ���㼣��ͬʱҲ�Ƕ�����
+�����ߺ�ʹ���ߵĸ�л���������л���̬�ȵ��˵Ļش������
+�Ҵ������� CMPP �ij�Ա������������������
+����һֱ��ǰ����
+2001/06/30 ������ FAQs
+2001/06/11 ���ǵ� CVS ���� 202.204.24.8 �ˣ�
+2001/05/20 �޸��˰�Ȩ������ʵ���ϲ����� FDL �İ�Ȩ������
+2001/05/01 ������ sampes Ŀ¼���Ժ�ĸ������Ӻ�
+����Ƭ�ν��������
+2001/04/12
+MAINTAINER �ļ���ɡ����� Man Page �û�����ͨ�����ļ�
+�ҵ�ÿһ�ֲ�ҳ��ά���ߣ���ӭ���������ṩ���顣
+
+2001/03/19
+[����]
+����Ŀǰ�Ѿ�ȫ������ CVS ���ʵ��б����а汾�ͽ��ȵ�
+�������ˣ����������Ѿ������γ���һ֧�Ƚ��ȶ���ά����Ա���飮
+������ڼ������������Ӻ�У����һ�����ֲ�ҳ����������
+�������������Ƕ����˼������ߣ�
+
+��Ҫ���ӵ����ݰ��� man1��man5��man7���� man8 �е����
+�����ݣ����ǵķ�Χ�����������ϵͳά�������ã��Լ�
+�������ú�ʹ�õȣ�ͬʱ���ǵ��ύ��Ա���һ���ؿ�ʼ��
+���µ������ύ��һЩ��׼ man-1.31 ֮����ֲ�ҳҲ��ʼ����
+�����ǵ� CMPP �ķ��а��У����� samba �� tcpdump��openssh
+�����ݣ��������������µ�����취��ʹ�ã��������Ժ��
+cman ���Ḳ�Ǹ��㷺�����ݺ͸����ε��ں���
+
+������°汾����ǽ������µ� people �û����Ӷ�ʹÿλ
+CVS ά����Ա�����Լ��Ĺ������䣬Ҳʹ CMPP �ܹ�������Ч
+�ؼ�˸������򣮱��� cman ��ƽ�ⷢչ��
+
+ͬʱ�������޸�����ǰ�������Ƶ�����취�������˱�׼���滻
+����Ҳ�������ǰ����к��ʵ�Ӣ���ֲ�ҳ���ŵ����ǵ� CVS ������
+�ϣ��κ�����ֻҪ������Ӣ�ĵ��ֲ�ҳ�Ϳ������������룬��ɺ�
+�ύ�� cmpp at yahoogroups.com �ʵ��б��������͸��ӷ�����
+���ѹ۲���ȣ���ͬ���룮����ϸ�������Ϣ������� FAQs��
+
+���⣬���ǻ���һ��������һЩ��صĹ��ߣ����磬�� /contrib 
+Ŀ¼�¾������������� windows �в鿴 man pages �Ĺ��ߣ�winmanviewer��
+�Լ�һЩ���� man ����ͬ��ʽ�Ĺ��ߣ���ҿ��԰��ֲ�ҳת���ɸ�
+�ḻ�ĸ�ʽ�ˣ�
+
+��������°汾�� cman ��������ѵ�Ŭ�����ܹ���������������
+�����ߺ�ʹ���ߴ������㣬ͬʱҲϣ���и���������ܲ�������Ӵ��
+�ƻ��������ֲ�ҳ�ܹ����������� 550 ��ֻ�и������������룬
+��Ŭ�����������Ͽй�ͷ�ľ��񣬰����������ʱ��㼯��һ�ɺ�����
+��������ʵ��������Ŀ�꣮
+
+��λ���ѣ����������Ѱ����Ȥ���������������ϣ����ѧϰ�Ĺ�����
+ͬʱΪ������һЩ���ף�����������������ʹ�û򰮺��ߣ���ô��
+����뵽 CMPP �ƻ�������������һ���ƽ��������������ķ�չ��������
+����ʷ�ij��������������㼣!
+
+[����]
+�������ӣ�������������ֻ��ͨ�� CVS LOG ���Ʋ��ܿ�����ϸ�������
+
+[�޲�]
+�� CVS �ṹ��Ŀ¼�ṹ���˴����������޸ģ�
+
+[˵��]
+CMPP ����վ��: www.cmpp.net
+CMPP ���ʵ��б���: cmpp at yahoogroups.com
+����ϸ����Ϣ�������վ�� FAQs��
+��ӭ�κ�����ͽ��飮
+����ͽ����뷢���ʵ��б�
+
+2001/03/19
+[����]
+man1 Դ�ļ�������ɣ��������� RH6.2 �� man1. 
+2001/01/31	0.0.5
+2000/12/27	0.0.4
+[����]
+����������ʽ������ cman �����ݷŵ� CVS �������ϣ�
+������ҾͿ��Ը���ؿ������ǵijɹ��ͽ����ˣ�
+2000/12/22	0.0.3
+[�ſ�]����һ�����ɰ汾������׼���ѹ����Ƶ� CVS 
+��ȥ������֮ǰ�����ǰ������ռ�������������һ������
+��������������Ҳο���
+2000/12/05	0.0.2 release
+[�ſ�]
+�����ȫ�����е� man1��man5��man7��man8 �Ĺ�����
+Ϊ�˸��õط�ӳ���ǵĽ��ȣ����Ǿ������� alpha��beta���׶Σ�
+������δУ�ԵĶ������� uncheck ��Ŀ¼�������У�ԣ�������
+����ʽ�� man[1-9,n] Ŀ¼�£�ͬʱ����ÿ��һ���汾��
+man8 �� fdisk.8��init.8��sync.8 �Լ���ʱ����صļ����ֲ�ҳ
+�������ṩ�˷dz��ḻ��ϵͳ֪ʶ��ϵͳ����������
+���Ŷ������û�����һЩ�dz��õİ�����ѧϰ/��ʶ��㣮
+ͬʱ�� man1 ������ kill �� killall �����ֲ�ҳ��
+
+0.0.2 �汾����˵��һ���Ƚ����Ƶİ��ˣ��������������Ѿ�
+����Ϊ�����ϵͳ����Ա�Լ����ʹ��ϵͳ�ӿڵij���Ա�ṩ
+�㷺�İ�������Ҫ���� INET ���棩���� 0.0.1 ��ȣ����ǵ�
+�������˽�һ���Ļ��ۣ��ϸ���������˳������������л����
+�����Լ�ʱ��IJ����ߣ�Ҳ��л����ʹ�úͲ���������û���
+ϣ����Ҽ���֧������ƻ���Ҳϣ������ܽ�һ������������������
+Ϊ������㷺���û��ṩ���ḻ��ʵ�õ����ϣ�
+
+"����һ�������������˵�����ʱ�����ҵ��
+���������ʱ��㼯����������һ��ǿ���������
+�Ϳ���Ϊ���Ǵ�Ҵ�������õ����磮"
+
+�κ�������飬�� mailto: laserhenry at 263.net
+
+
+[����]
+������MAINTAINERS��Ŀǰ����ļ���δ��ȫ��ɣ���л wangdong��
+[�޲�]
+���� man8��man1����
+[����]
+����У�Ե�ʱ���޸��˴��������ݣ����������߲��պ��Ķ���
+��������飬�뼰ʱ�����Ƿ�ӳ��laserhenry at 263.net
+
+Laser
+
+2000/11/26
+����������Ĺ������Ұ����� man5 ����ȫ��У����ɣ�
+���������� mapping �������� proc.5�����ڵ� man5 ����
+����ȫ���������IJ��ҷdz��вο���ֵ������ 
+environ.5 �����˽� Unix ��ϵ�Ļ��������dz��а�����
+fs.5 ���԰������˽� Linux ��֧�ֵ��ļ�ϵͳ��
+host.conf.5 ���������� Unix ��ϵ��������������ϵͳ���������г�����ʶ
+�����ǻ�ȡ��ذ�����Դͷ��
+passwd.5 Ϊ������� Unix ϵͳ����֤�͵�¼��ϵ��
+proc.5 �����������Ҫ�������ʶ Linux ϵͳ���Լ�ѧϰ Linux �ں˵�����
+����һ���dz��õIJο����ϣ����������� proc.5 ��������ݸ��õ����ú͹���
+Linux �ںˣ�ͬʱ��Ҳ������ Linux �ں˵�һ����ڣ��� man7 �е� inet ϵ��
+man pages ���ϣ��������ڶ� Linux �ں˵Ĺ�������������������ۻ�����
+shells.5 ��������Ǹ�������û� shell �����֪ʶ��
+���⻹��ɵ��� man8 ��һ���֣����Լ���ҵ� ChangeLog��
+
+�������޸İ����������ű��������޸ģ��Լ��޸������е�վ�����ӵȣ�
+���ˣ���ʽ����Ϊ 0.0.2-alpha������ beta ����Ҫ��� man8 �Ĺ�����
+
+-Laser
+
+2000/11/22
+׼�� 0.0.2-alpha
+Ŀ���ǰ� man5 �IJ���ȫ��У����ɣ�
+
+
+2000/11/10
+ո�µ� cman 0.0.1
+
+��У�������� man1 �� man7 �ľ��󲿷����ݣ�
+������ man7����Ϊʵ�ڹ�ϵ��׼ȷ�����⣬
+�ķ����ҽ���һ�ܵ�ʱ�䣮
+
+���ڿ��Ը��ߴ�ң�������˶����ã��Ż�ϵͳ��
+������ϵͳ�������ܣ�����д��ǿ��� tcp/ip socket �������Ȥ��
+��ô man7 ��� 
+arp.7,ip.7, packet.7, tcp.7, icmp.7, 
+netdevice.7, netlink.7, raw.7,unix.7,udp.7
+�Ǿ��Բ��ɲ����ģ�
+
+������Ա��ػ�����Ȥ����ο� man7 �е�
+locale.7, unicode.7, utf-8.7, charsets.7
+�������ĺܺõİ��֣�
+
+
+
+
diff --git a/DOCS/FAQ b/DOCS/FAQ
new file mode 100644
index 0000000..56878dc
--- /dev/null
+++ b/DOCS/FAQ
@@ -0,0 +1,200 @@
+CMPP 常见问题(FAQ)
+当前维护人员:徐明<xuming at users.sourceforge.net>
+最后更新:2003 年 12 月 05 日 01:53:11 CST
+本文档的最新版本可以在 http://cmpp.linuxforum.net 找到。
+
+目录
+
+
+1,什么是 CMPP?
+2,为什么要发起 CMPP 手册页计划?
+3,这个计划相关站点在哪里?
+4,如何参与该计划?
+5,如何支持该计划?
+6,如何认领手册页翻译?
+7,CMPP 翻译的手册页的要求是什么?
+8,troff 格式是什么样的?
+9,如何提交您的翻译或者补丁?
+10,本计划的协调人是谁?
+11,如何使用 CVS?
+12, 手册页断行错误和乱码? 
+13,如何使用中文手册页?
+
+
+
+1,什么是 CMPP?
+
+CMPP 是“中文手册页计划”( Chinese Man Pages Project )的缩写。
+这个计划的目的是把英文的 manual pages (手册页)翻译成中文的手册页,
+让更多的人能够受益于手册页详实丰富的内容。降低学习 Linux 系统的难度。
+
+
+
+2,为什么要发起 CMPP 手册页计划?
+
+手册页是 Unix 体系里最为权威和丰富的技术资料, Linux 作为自由软件
+的 Unix 版本和其他所有相关工具和软件一起,其手册页的质量和数量都
+非常高,为了帮助广大网友学习和使用这些自由软件,linuxforum.net 发起
+了这个本身也是自由软件项目之一的翻译工程。
+
+
+
+3,这个计划相关站点在哪里?
+
+http://cmpp.linuxforum.net
+CMPP 主页
+我们在这个站点上发布与 CMPP 相关的所有信息。
+http://sf.linuxforum.net/projects/cmpp
+目前 CMPP 计划在sf.linuxforum 上的项目地址
+请到这里来获得cmpp 发行的文件打包
+http://cmpp.linuxforum.net/cvs?
+从这里可以直接查看cvs 中的文档。
+
+
+
+4,如何参与该计划?
+
+您可以通过共同参与翻译、校对手册页,也可以通过您合适的途径传播
+CMPP 计划,让更多的人认识、参与并最终从 CMPP 计划中受益。
+
+
+
+5,如何支持该计划?
+
+第一,您可以亲身参与该计划,见“如何参与该计划”;
+第二,您可以赞助该计划,您可以提供各种翻译相关资料、资源、甚至是书籍、
+金钱等赞助,赞助事宜可以和本计划协调人或 linuxforum.net 的管理人联系
+(见“本计划协调人”);
+第三,使用我们的中文手册页!只有更多的人使用,才能真正推动 CMPP 的
+发展和进步。
+
+
+
+6,如何认领手册页翻译?
+
+请先确认文档没有被翻译,或者没有人正在翻译。
+如果翻译正在进行,但是译者比较忙以至于无法提交结果,也可以自己动手。
+
+如果您对某些东西感兴趣,那么您可以浏览CVSWeb,在里面的那些非中文的
+手册页都是可以/应当翻译的项目。具体方法是:
+第一,登录 CVSWeb:http://cmpp.linuxforum.net
+第二,点击 cman 浏览 CVSWeb 里的 cman 内容,寻找您感兴趣的手册页,
+如果找到,那么:
+第三,点击该文件的链接,进入下一个页面,里面有一个 download 链接。
+用鼠标右键点击,在弹出菜单中选择“目标另存为”,在新弹出的
+菜单中选择保存路径和文件名(最好不要更改文件名),然后点“确认”即可,
+然后您就可以在它上面进行翻译了。
+
+也可以用cvs 来检查是否已经翻译了。已翻译的文档一般都会加入
+man-pages-zh_CN 目录当中。可以使用cvs export -r HEAD 命令来导出这个
+文件。小心,这要求你比较精通cvs工具
+
+
+
+7,CMPP 翻译的手册页的要求是什么?
+
+因为手册页的格式是 troff 格式,所以我们建议在做翻译的时候最好也使用 
+troff 格式,简单说就是保留源文件的格式,覆盖翻译。推荐使用emacs 来做
+翻译时的编辑器,使用它的语法高亮功能来避免错误。文件编码建议使用
+utf8. 请参阅讨论版上关于翻译要求的说明,有很多用词规则和署名规则。
+
+
+
+8,troff 格式是什么样的?
+
+troff 格式是手册页的基本格式,它是由一些标记对文本进行标记,然后通过
+专门的软件进行分析实现的。其符号和标记的详细信息可以参阅 man7 目录中
+的roff.7, mdoc.samples.7, man.7;man9 目录中的cmanexample.9, cmanformat.9
+
+
+
+9,如何提交您的翻译或者补丁?
+
+请在讨论版上张贴,标题是您翻译的文档名,内容是原始的roff 文件。
+注意应当使用[pre] [/pre]标记,使原始文件内容以原样显示出来。
+然后,请回复两次您自己的帖子,内容分别是使用man2html工具得到的
+中文和英文的html 文件在浏览器中的显示效果。这样有助于即时的讨论.
+man2html 工具包含在 cman/contrib/man2html 目录中
+如果有条件限制,也可以只提交原始 roff 文件,请版主完成html 文件。
+这种情况下,请将翻译结果用电子邮件寄给版主/协调人
+
+
+
+10,本计划的协调人是谁?
+
+徐明 <xuming at users.sourceforge.net>
+何伟平 <laser at zhengmai.com.cn>
+冼景彬 <rawk at chinese.com>
+如果您有与 CMPP 相关的事项协商或者希望参与到经常性提交者的行列中,
+请与他们联系。
+
+
+
+11,如何使用 CVS?
+
+首先,如果您使用的是 Linux,那么您可以先把 CVS 软件安装上,
+大部分 linux 版本里都有 cvs 包,阅读您的系统的文档,安装上这个软件。
+如果您的系统里没有这个软件,您可以到下面的站点下载安装,具体的安装
+方法和步骤请参阅它自己的文档。
+
+然后,您可以执行下面的命令:
+$ cvs -d:pserver:anonymous at sf.linuxforum.net:/cvsroot/cmpp login
+这时候 CVS 系统会向您提示输入口令,您只需要按回车就可以了。这时候
+cvs 会把口令保存在 .cvspass,这样您以后就不再用输入了。
+您可以把所有 CMPP 源文件都下载下来,命令是:
+$cvs -z3 -PAd co cman
+但是,由于man 文档数量巨大(>120M),所以最好不要这样做。如果你感兴趣的
+是中文手册页,可以用
+$cvs -z3 -PAd export -r HEAD man-pages-zh_CN
+来下载用于制作rpm 或 deb 的所有文件。
+第一次下载需要比较长的时间,但以后如果您再需要更新,就不需要下载那么
+多的东西了,只需要进入 cman 的目录里,执行:
+$cvs -z3 -PAd update
+
+如果您的平台是 windows,那么您可以有两种使用 CVS 的方法,第一种是到
+www.cygwin.com 下载 cygwin 包,安装到系统中,运行 cygwin 之后的所有
+方法都是和在 linux 或者 unix 里一样的,这里就不多说了。如果您使用的
+是 cvs 的 windows 客户端软件 WinCVS 的话,那么您可以按照下面步骤:
+(命令中的 “->”表示菜单级联):
+第一,Admin->preferenes->General->Enter the CVSROOT,输入
+:pserver:anonymous at 202.204.24.8:/home/cvsroot
+第二,登陆 CVS 服务器
+Admin->login...
+第三,抓取所有 cman 文件:
+Create->Chechout module->checkout settings->enter the..
+输入cman(或者某个手册页的内容)
+Local folder checkout to处输入:你的工作目录(本地目录)
+使用压缩选项 Golbals->Use tcp/ip compression
+第四,以后更新手册页的时候可以:
+Modify->Update selection...
+
+总之,不推荐使用windows 来操作。
+
+
+
+12, 为什么我的手册页一行中有时空白很大;有时没有空白,反而出现断行错
+误和乱码?
+
+troff 格式是通过 groff/troff 程序过滤产生输出的。而某些版本的 groff 
+是按英文习惯断行。它使用英文空白符 (ASCII 值 0x20) 和英文断词法决定
+断行的位置,然后把每行英文重新排版,使之两边对齐。
+可是中文词与词之间是没有空格的,断行要求与英文也大不相同。因为通常在
+中英文交替时加个空格, groff/troff 只能依靠这些有限的空格断行了。一
+句中间无空格的中文句会被看作一个英文词(而且是无法用断词法断词的)。
+如果中文句很短, groff/troff 会认为一行只有很少几个词,拉伸使之两边
+对齐,就出现了较大的空白;如果中文句很长, groff/troff 会报告 
+"warning: can't break line" ,无法断行,而一直排下去,到行尾时若处于
+一个汉字中间(一个汉字被视为两个英文字符),强行断开,下一行就会出现
+乱码。
+
+最新版本groff 中没有这些问题。
+
+
+13,如何使用中文手册页?
+
+请查看README 文件来获得安装帮助
+请到讨论版查看不同的系统的默认语言环境,相应的查看中文手册页的办法。
+一般说来,yelp (版本2.4 以后)总是可以用的,man 可能有问题,konqueror
+也可能有问题。如果语言环境是zh_CN.GB* 那么应当使用cman 命令.
+终端下使用zhcon + cman 没有问题
+
diff --git a/DOCS/FAQ.GB b/DOCS/FAQ.GB
new file mode 100644
index 0000000..774e8fa
--- /dev/null
+++ b/DOCS/FAQ.GB
@@ -0,0 +1,200 @@
+CMPP �������⣨FAQ��
+��ǰά����Ա������<xuming at users.sourceforge.net>
+�����£�2003 �� 12 �� 05 �� 01:53:11 CST
+���ĵ������°汾������ http://cmpp.linuxforum.net �ҵ���
+
+Ŀ¼
+
+
+1��ʲô�� CMPP��
+2��ΪʲôҪ���� CMPP �ֲ�ҳ�ƻ���
+3������ƻ����վ�������
+4����β���üƻ���
+5�����֧�ָüƻ���
+6����������ֲ�ҳ���룿
+7��CMPP ������ֲ�ҳ��Ҫ����ʲô��
+8��troff ��ʽ��ʲô���ģ�
+9������ύ���ķ�����߲�����
+10�����ƻ���Э������˭��
+11�����ʹ�� CVS��
+12, �ֲ�ҳ���д�������룿 
+13�����ʹ�������ֲ�ҳ��
+
+
+
+1��ʲô�� CMPP��
+
+CMPP �ǡ������ֲ�ҳ�ƻ����� Chinese Man Pages Project ������д��
+����ƻ���Ŀ���ǰ�Ӣ�ĵ� manual pages ���ֲ�ҳ����������ĵ��ֲ�ҳ��
+�ø�������ܹ��������ֲ�ҳ��ʵ�ḻ�����ݡ�����ѧϰ Linux ϵͳ���Ѷȡ�
+
+
+
+2��ΪʲôҪ���� CMPP �ֲ�ҳ�ƻ���
+
+�ֲ�ҳ�� Unix ��ϵ����ΪȨ���ͷḻ�ļ������ϣ� Linux ��Ϊ�������
+�� Unix �汾������������ع��ߺ����һ�����ֲ�ҳ��������������
+�dz��ߣ�Ϊ�˰����������ѧϰ��ʹ����Щ���������linuxforum.net ����
+���������Ҳ�����������Ŀ֮һ�ķ��빤�̡�
+
+
+
+3������ƻ����վ�������
+
+http://cmpp.linuxforum.net
+CMPP ��ҳ
+���������վ���Ϸ����� CMPP ��ص�������Ϣ��
+http://sf.linuxforum.net/projects/cmpp
+Ŀǰ CMPP �ƻ���sf.linuxforum �ϵ���Ŀ��ַ
+�뵽���������cmpp ���е��ļ����
+http://cmpp.linuxforum.net/cvs?
+���������ֱ�Ӳ鿴cvs �е��ĵ���
+
+
+
+4����β���üƻ���
+
+������ͨ����ͬ���뷭�롢У���ֲ�ҳ��Ҳ����ͨ�������ʵ�;������
+CMPP �ƻ����ø��������ʶ�����벢���մ� CMPP �ƻ������档
+
+
+
+5�����֧�ָüƻ���
+
+��һ���������������üƻ���������β���üƻ�����
+�ڶ��������������üƻ����������ṩ���ַ���������ϡ���Դ���������鼮��
+��Ǯ���������������˿��Ժͱ��ƻ�Э���˻� linuxforum.net �Ĺ�������ϵ
+���������ƻ�Э���ˡ�����
+������ʹ�����ǵ������ֲ�ҳ��ֻ�и������ʹ�ã����������ƶ� CMPP ��
+��չ�ͽ�����
+
+
+
+6����������ֲ�ҳ���룿
+
+����ȷ���ĵ�û�б����룬����û�������ڷ��롣
+����������ڽ��У��������߱Ƚ�æ�������޷��ύ�����Ҳ�����Լ����֡�
+
+�������ijЩ��������Ȥ����ô���������CVSWeb�����������Щ�����ĵ�
+�ֲ�ҳ���ǿ���/Ӧ���������Ŀ�����巽���ǣ�
+��һ����¼ CVSWeb��http://cmpp.linuxforum.net
+�ڶ������ cman ��� CVSWeb ��� cman ���ݣ�Ѱ��������Ȥ���ֲ�ҳ��
+����ҵ�����ô��
+������������ļ������ӣ�������һ��ҳ�棬������һ�� download ���ӡ�
+������Ҽ�������ڵ����˵���ѡ��Ŀ�����Ϊ�������µ�����
+�˵���ѡ�񱣴�·�����ļ�������ò�Ҫ�����ļ�������Ȼ��㡰ȷ�ϡ����ɣ�
+Ȼ�����Ϳ�������������з����ˡ�
+
+Ҳ������cvs ������Ƿ��Ѿ������ˡ��ѷ�����ĵ�һ�㶼�����
+man-pages-zh_CN Ŀ¼���С�����ʹ��cvs export -r HEAD �������������
+�ļ���С�ģ���Ҫ����ȽϾ�ͨcvs����
+
+
+
+7��CMPP ������ֲ�ҳ��Ҫ����ʲô��
+
+��Ϊ�ֲ�ҳ�ĸ�ʽ�� troff ��ʽ���������ǽ������������ʱ�����Ҳʹ�� 
+troff ��ʽ����˵���DZ���Դ�ļ��ĸ�ʽ�����Ƿ��롣�Ƽ�ʹ��emacs ����
+����ʱ�ı༭����ʹ�������﷨������������������ļ����뽨��ʹ��
+utf8. ��������۰��Ϲ��ڷ���Ҫ���˵�����кܶ��ôʹ������������
+
+
+
+8��troff ��ʽ��ʲô���ģ�
+
+troff ��ʽ���ֲ�ҳ�Ļ�����ʽ��������һЩ��Ƕ��ı����б�ǣ�Ȼ��ͨ��
+ר�ŵ�������з���ʵ�ֵġ�����źͱ�ǵ���ϸ��Ϣ���Բ��� man7 Ŀ¼��
+��roff.7, mdoc.samples.7, man.7��man9 Ŀ¼�е�cmanexample.9, cmanformat.9
+
+
+
+9������ύ���ķ�����߲�����
+
+�������۰�����������������������ĵ�����������ԭʼ��roff �ļ���
+ע��Ӧ��ʹ��[pre] [/pre]��ǣ�ʹԭʼ�ļ�������ԭ����ʾ������
+Ȼ����ظ��������Լ������ӣ����ݷֱ���ʹ��man2html���ߵõ���
+���ĺ�Ӣ�ĵ�html �ļ���������е���ʾЧ�������������ڼ�ʱ������.
+man2html ���߰����� cman/contrib/man2html Ŀ¼��
+������������ƣ�Ҳ����ֻ�ύԭʼ roff �ļ�����������html �ļ���
+��������£��뽫�������õ����ʼ��ĸ�����/Э����
+
+
+
+10�����ƻ���Э������˭��
+
+���� <xuming at users.sourceforge.net>
+��ΰƽ <laser at zhengmai.com.cn>
+������ <rawk at chinese.com>
+��������� CMPP ��ص�����Э�̻���ϣ�����뵽�������ύ�ߵ������У�
+����������ϵ��
+
+
+
+11�����ʹ�� CVS��
+
+���ȣ������ʹ�õ��� Linux����ô�������Ȱ� CVS �����װ�ϣ�
+�󲿷� linux �汾�ﶼ�� cvs �����Ķ�����ϵͳ���ĵ�����װ����������
+�������ϵͳ��û���������������Ե������վ�����ذ�װ������İ�װ
+�����Ͳ�����������Լ����ĵ���
+
+Ȼ��������ִ����������
+$ cvs -d:pserver:anonymous at sf.linuxforum.net:/cvsroot/cmpp login
+��ʱ�� CVS ϵͳ��������ʾ��������ֻ��Ҫ���س��Ϳ����ˡ���ʱ��
+cvs ��ѿ������ .cvspass���������Ժ�Ͳ����������ˡ�
+�����԰����� CMPP Դ�ļ������������������ǣ�
+$cvs -z3 -PAd co cman
+���ǣ�����man �ĵ������޴�(>120M)��������ò�Ҫ����������������Ȥ��
+�������ֲ�ҳ��������
+$cvs -z3 -PAd export -r HEAD man-pages-zh_CN
+��������������rpm �� deb �������ļ���
+��һ��������Ҫ�Ƚϳ���ʱ�䣬���Ժ����������Ҫ���£��Ͳ���Ҫ������ô
+��Ķ����ˣ�ֻ��Ҫ���� cman ��Ŀ¼�ִ�У�
+$cvs -z3 -PAd update
+
+�������ƽ̨�� windows����ô������������ʹ�� CVS �ķ�������һ���ǵ�
+www.cygwin.com ���� cygwin ������װ��ϵͳ�У����� cygwin ֮�������
+�������Ǻ��� linux ���� unix ��һ���ģ�����Ͳ���˵�ˡ������ʹ�õ�
+�� cvs �� windows �ͻ������ WinCVS �Ļ�����ô�����԰������沽�裺
+�������е� ��->����ʾ�˵���������
+��һ��Admin->preferenes->General->Enter the CVSROOT������
+:pserver:anonymous at 202.204.24.8:/home/cvsroot
+�ڶ�����½ CVS ������
+Admin->login...
+������ץȡ���� cman �ļ���
+Create->Chechout module->checkout settings->enter the..
+����cman������ij���ֲ�ҳ�����ݣ�
+Local folder checkout to�����룺��Ĺ���Ŀ¼������Ŀ¼��
+ʹ��ѹ��ѡ�� Golbals->Use tcp/ip compression
+���ģ��Ժ�����ֲ�ҳ��ʱ����ԣ�
+Modify->Update selection...
+
+��֮�����Ƽ�ʹ��windows ��������
+
+
+
+12, Ϊʲô�ҵ��ֲ�ҳһ������ʱ�հ׺ܴ���ʱû�пհף��������ֶ��д�
+������룿
+
+troff ��ʽ��ͨ�� groff/troff ������˲�������ġ���ijЩ�汾�� groff 
+�ǰ�Ӣ��ϰ�߶��С���ʹ��Ӣ�Ŀհ׷� (ASCII ֵ 0x20) ��Ӣ�Ķϴʷ�����
+���е�λ�ã�Ȼ���ÿ��Ӣ�������Ű棬ʹ֮���߶��롣
+�������Ĵ����֮����û�пո�ģ�����Ҫ����Ӣ��Ҳ����ͬ����Ϊͨ����
+��Ӣ�Ľ���ʱ�Ӹ��ո� groff/troff ֻ��������Щ���޵Ŀո�����ˡ�һ
+���м��޿ո�����ľ�ᱻ����һ��Ӣ�Ĵʣ��������޷��öϴʷ��ϴʵģ���
+������ľ�̣ܶ� groff/troff ����Ϊһ��ֻ�к��ټ����ʣ�����ʹ֮����
+���룬�ͳ����˽ϴ�Ŀհף�������ľ�ܳ��� groff/troff �ᱨ�� 
+"warning: can't break line" ���޷����У���һֱ����ȥ������βʱ����
+һ�������м䣨һ�����ֱ���Ϊ����Ӣ���ַ�����ǿ�жϿ�����һ�оͻ����
+���롣
+
+���°汾groff ��û����Щ���⡣
+
+
+13�����ʹ�������ֲ�ҳ��
+
+��鿴README �ļ�����ð�װ����
+�뵽���۰�鿴��ͬ��ϵͳ��Ĭ�����Ի�������Ӧ�IJ鿴�����ֲ�ҳ�İ취��
+һ��˵����yelp (�汾2.4 �Ժ�)���ǿ����õģ�man ���������⣬konqueror
+Ҳ���������⡣������Ի�����zh_CN.GB* ��ôӦ��ʹ��cman ����.
+�ն���ʹ��zhcon + cman û������
+
diff --git a/DOCS/THANKS b/DOCS/THANKS
new file mode 100644
index 0000000..962b587
--- /dev/null
+++ b/DOCS/THANKS
@@ -0,0 +1,50 @@
+Julian.Ch 提供了一个详细的命令参考
+best163 的念青(nianqing at 163.net)提供了很多手册页的html版本
+redcandle 提供了html2man 和htmlcharfix
+萧百龄,两只老虎工作室 提供了 perlfaq*
+
+译者
+Adadxb		
+Hzwww		
+Joechl		
+Mousedong		
+Timebob        timebob at 21cn.com
+Wenicu	
+Wyd	
+Xyb	
+Zeo	
+Zfqjcl	
+
+本站翻译小组	
+范逊	
+胡二刀	
+若智	
+唐志波         tmounth at sina.com
+赵如飞         slimzhao at 21cn.com
+409
+laser
+mhss 						jijingzhisheng at up369.com
+Scorpions					rawk at chinese.com
+meaculpa					meaculpa at 21cn.com
+
+Liu JingSong  			js-liu at 263.net
+苏勇							ysu at gnocis.org
+所罗门(Soloman)		solomen at email.com.cn
+王炎							wyd at 263.net
+riser							boomer at ccidnet.com
+徐明							xuming at bigfoot.com
+袁乙钧						bbbush at 163.com
+Surran 
+liguoping					liguoping_11 at sina.com
+Astonia					astonia at bigfoot.com
+Alan Yao					Alan_Yao at 163.net
+Mirnshi						Mirnshi at 263.net
+Wang Dong				doomwang at 263.net
+mapping					mapping at 263.net
+Hunter77					tzb at kali.com.cn
+晓寒							xiaohan at sina.com
+RedCandle				redcandle51 at chinaren.com 
+billpan						billpan at yeah.net
+LetBright					letbright at netease.com
+zou8li14					zou8li14 at sina.com
+Viamu <viamu at msn.com>
diff --git a/DOCS/THANKS.GB b/DOCS/THANKS.GB
new file mode 100644
index 0000000..24b91b6
--- /dev/null
+++ b/DOCS/THANKS.GB
@@ -0,0 +1,50 @@
+Julian.Ch �ṩ��һ����ϸ������ο�
+best163 �����ࣨnianqing at 163.net���ṩ�˺ܶ��ֲ�ҳ��html�汾
+redcandle �ṩ��html2man ��htmlcharfix
+����䣬��ֻ�ϻ������� �ṩ�� perlfaq*
+
+����
+Adadxb		
+Hzwww		
+Joechl		
+Mousedong		
+Timebob        timebob at 21cn.com
+Wenicu	
+Wyd	
+Xyb	
+Zeo	
+Zfqjcl	
+
+��վ����С��	
+��ѷ	
+������	
+����	
+��־��         tmounth at sina.com
+�����         slimzhao at 21cn.com
+409
+laser
+mhss 						jijingzhisheng at up369.com
+Scorpions					rawk at chinese.com
+meaculpa					meaculpa at 21cn.com
+
+Liu JingSong  			js-liu at 263.net
+����							ysu at gnocis.org
+������(Soloman)		solomen at email.com.cn
+����							wyd at 263.net
+riser							boomer at ccidnet.com
+����							xuming at bigfoot.com
+Ԭ�Ҿ�						bbbush at 163.com
+Surran 
+liguoping					liguoping_11 at sina.com
+Astonia					astonia at bigfoot.com
+Alan Yao					Alan_Yao at 163.net
+Mirnshi						Mirnshi at 263.net
+Wang Dong				doomwang at 263.net
+mapping					mapping at 263.net
+Hunter77					tzb at kali.com.cn
+����							xiaohan at sina.com
+RedCandle				redcandle51 at chinaren.com 
+billpan						billpan at yeah.net
+LetBright					letbright at netease.com
+zou8li14					zou8li14 at sina.com
+Viamu <viamu at msn.com>
diff --git a/DOCS/VOCABULARY b/DOCS/VOCABULARY
new file mode 100644
index 0000000..c3fa34c
--- /dev/null
+++ b/DOCS/VOCABULARY
@@ -0,0 +1,151 @@
+关键词 v 0.2 还没有zh_TW 的版本
+建议在翻译时使用标准词汇
+
+.SH 标题的翻译应当这样将英文放在后面的括号中,比较美观。
+-----------------------------------------------------------
+SYNOPSIS			总览 (SYNOPSIS)
+NAME				NAME
+COPYRIGHT			版权所有 (COPYRIGHT)
+COPYING				版权 (COPYING)
+DESCRIPTION			描述 (DESCRIPTION)
+OPTIONS				选项 (OPTIONS)
+ARGUMENTS			参数 (ARGUMENTS)
+INVOCATION			执行 (INVOCATION)
+DEFINITIONS			定义 (DEFINITIONS)
+RESERVED WORDS			保留字 (RESERVED WORDS)
+GRAMMAR				语法 (GRAMMAR)
+COMMENTS			注释 (COMMENTS)
+QUOTING				引用 (QUOTING)
+PARAMETERS			参数 (PARAMETERS)
+EXPANSION			扩展 (EXPANSION)
+REDIRECTION			重定向 (REDIRECTION)
+ALIASES				别名 (ALIASES)
+FUNCTIONS			函数 (FUNCTIONS)
+ARITHMETIC EVALUATION		数学运算 (ARITHMETIC EVALUATION)
+CONDITIONAL EXPRESSION		条件表达式 (CONDITIONAL EXPRESSION)
+COMMAND EXECUTION		命令执行 (COMMAND EXECUTION)
+ENVIRONMENT			环境 (ENVIRONMENT)
+EXIT STATUS			退出状态 (EXIT STATUS)
+SIGNALS				信号 (SIGNALS)
+JOB CONTROL			作业控制 (JOB CONTROL)
+PROMPTING			提示符 (PROMPTING)
+HISTORY				历史 (HISTORY)
+SEE ALSO			参见 (SEE ALSO)
+FILES				文件 (FILES)
+AUTHORS				作者 (AUTHORS)
+BUGS				BUGS
+WARNING				警告 (WARNING)
+DIAGNOSTICS			诊断 (DIAGNOSTICS)
+-----------------------------------------------------------
+
+
+
+下面是一般的词汇
+==========================================================
+ Abort          | 放弃          |   
+ Aborting       | 正在退出      |   
+ Alert          | 警报          |   
+ ARGUMENTS      | 参数          |   
+ AUTHOR         | 作者          |   
+ Aviability	| 可用性,可得性 |
+ block          | 阻塞          |   
+ BrowseClusters	| 流览集群      |   
+ BUGS		| BUGS		|   
+ cache          | 缓存          |   
+ callback       | 回调          |   
+ Clear          | 清除          |   
+ COMMENT        | 注释          |   
+ CONFORMING TO  | 遵循          |   
+ DEBUG          | 调试          |   
+ DECLARATION    | 声明          |   
+ default        | 缺省          |   
+ DEFINITION     | 定义          |   
+ DESCRIPTION    | 描述          |   
+ Destination	| 目的地	|
+ DIAGNOSTICS    | 诊断          |   
+ disable        | 关闭          |   
+ disk		| 磁盘		|
+ enable         | 打开          |   
+ entity         | 记录          |   
+ entry		| 记录		|
+ ENVIRONMENT    | 环境          |   
+ ERROR HANDLING | 错误处理      |   
+ ERRORS         | 常见错误      |   
+ EXAMPLE	| 例子		|
+ EXIT STATUS    | 退出状态      |   
+ Expand         | 扩展          |   
+ FILES          | 相关文件      |   
+ forward        | 转发          |   
+ Gateway	| 网关		|
+ Grid           | 网格          |   
+ HISTORY	| 历史		|
+ hit		| 命中		|
+ Host           | 主机          |   
+ interface      | 接口          |   
+ INVOCATION     | 激活/调用     |   
+ key            | 键            |   
+ keyword        | 关键字        |   
+ LITERAL        | 文本          |   
+ mask           | 掩码          |   
+ metric		| 步跳		|
+ miss		| 脱靶		|
+ modifier	| 修饰词	|
+ mount          | 装配,装载     |   
+ NAME           | 名字          |   
+ named pipe     | 命名管道      |   
+ number		| 号码,数字	|
+ NOTES          | 注意          |   
+ OPTIONS        | 选项          |   
+ OUTPUT		| 输出		|
+ packet         | 包,报文       |   
+ PARAMETER      | 参数          |   
+ pipe           | 管道          |   
+ Port           | 移植          |   
+ Portable       | 可移植的      |   
+ privileges     | 权限          |   
+ PROMPT         | 提示符        |   
+ quota		| 限额,配额	|
+ RESERVED WORD  | 保留字        |   
+ RETURN VALUE   | 返回值        |   
+ Route		| 路由		|
+ Sectors        | 扇区          |   
+ SECURITY       | 安全          |   
+ SEE ALSO       | 另见          |   
+ SEGMENT        | 段            |   
+ specification	| 规范,声明	|
+ stderr         | 标准错误      |   
+ stdin          | 标准输入      |   
+ stdout         | 标准输出      |   
+ switch         | 开关          |   
+ SYNOPSIS       | 总览          |   
+ Task           | 任务          |   
+ thread         | 线程          |   
+ TIP            | 小技巧        |   
+ token          | 记号          |   
+ umask          | umask         |   
+ umount		| 卸载		|
+ unrestricted	| 无限制	|
+ USAGE          | 用法          |   
+ value          | 值            |   
+ verbose	| 冗长		|
+ work           | 运转          |   
+=====================================================
+
+
+文件应保留原来作者和版权的信息,不能随意删掉。
+在文件的最后是翻译者署名,应当是这样的格式(可以将这六行复制到你翻译的文件中,加以修改):
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.BR yyyy.mm.dd
+.SH "[中国linux论坛中文手册页翻译计划]"
+.BI http://cmpp.linuxforum.net 
+
+=============================================
+
+其他约定
+电子邮件应当是<a at b> 的形式
+
+示例
+请查看man9/cmanexample.9 示例文档
+
diff --git a/DOCS/VOCABULARY.GB b/DOCS/VOCABULARY.GB
new file mode 100644
index 0000000..45ca6de
--- /dev/null
+++ b/DOCS/VOCABULARY.GB
@@ -0,0 +1,151 @@
+�ؼ��� v 0.2 ��û��zh_TW �İ汾
+�����ڷ���ʱʹ�ñ�׼�ʻ�
+
+.SH ����ķ���Ӧ��������Ӣ�ķ��ں���������У��Ƚ����ۡ�
+-----------------------------------------------------------
+SYNOPSIS			���� (SYNOPSIS)
+NAME				NAME
+COPYRIGHT			��Ȩ���� (COPYRIGHT)
+COPYING				��Ȩ (COPYING)
+DESCRIPTION			���� (DESCRIPTION)
+OPTIONS				ѡ�� (OPTIONS)
+ARGUMENTS			���� (ARGUMENTS)
+INVOCATION			ִ�� (INVOCATION)
+DEFINITIONS			���� (DEFINITIONS)
+RESERVED WORDS			������ (RESERVED WORDS)
+GRAMMAR				�﷨ (GRAMMAR)
+COMMENTS			ע�� (COMMENTS)
+QUOTING				���� (QUOTING)
+PARAMETERS			���� (PARAMETERS)
+EXPANSION			��չ (EXPANSION)
+REDIRECTION			�ض��� (REDIRECTION)
+ALIASES				���� (ALIASES)
+FUNCTIONS			���� (FUNCTIONS)
+ARITHMETIC EVALUATION		��ѧ���� (ARITHMETIC EVALUATION)
+CONDITIONAL EXPRESSION		�������ʽ (CONDITIONAL EXPRESSION)
+COMMAND EXECUTION		����ִ�� (COMMAND EXECUTION)
+ENVIRONMENT			���� (ENVIRONMENT)
+EXIT STATUS			�˳�״̬ (EXIT STATUS)
+SIGNALS				�ź� (SIGNALS)
+JOB CONTROL			��ҵ���� (JOB CONTROL)
+PROMPTING			��ʾ�� (PROMPTING)
+HISTORY				��ʷ (HISTORY)
+SEE ALSO			�μ� (SEE ALSO)
+FILES				�ļ� (FILES)
+AUTHORS				���� (AUTHORS)
+BUGS				BUGS
+WARNING				���� (WARNING)
+DIAGNOSTICS			��� (DIAGNOSTICS)
+-----------------------------------------------------------
+
+
+
+������һ��Ĵʻ�
+==========================================================
+ Abort          | ����          |   
+ Aborting       | �����˳�      |   
+ Alert          | ����          |   
+ ARGUMENTS      | ����          |   
+ AUTHOR         | ����          |   
+ Aviability	| ������,�ɵ��� |
+ block          | ����          |   
+ BrowseClusters	| ������Ⱥ      |   
+ BUGS		| BUGS		|   
+ cache          | ����          |   
+ callback       | �ص�          |   
+ Clear          | ���          |   
+ COMMENT        | ע��          |   
+ CONFORMING TO  | ��ѭ          |   
+ DEBUG          | ����          |   
+ DECLARATION    | ����          |   
+ default        | ȱʡ          |   
+ DEFINITION     | ����          |   
+ DESCRIPTION    | ����          |   
+ Destination	| Ŀ�ĵ�	|
+ DIAGNOSTICS    | ���          |   
+ disable        | �ر�          |   
+ disk		| ����		|
+ enable         | ��          |   
+ entity         | ��¼          |   
+ entry		| ��¼		|
+ ENVIRONMENT    | ����          |   
+ ERROR HANDLING | ������      |   
+ ERRORS         | ��������      |   
+ EXAMPLE	| ����		|
+ EXIT STATUS    | �˳�״̬      |   
+ Expand         | ��չ          |   
+ FILES          | ����ļ�      |   
+ forward        | ת��          |   
+ Gateway	| ����		|
+ Grid           | ����          |   
+ HISTORY	| ��ʷ		|
+ hit		| ����		|
+ Host           | ����          |   
+ interface      | �ӿ�          |   
+ INVOCATION     | ����/����     |   
+ key            | ��            |   
+ keyword        | �ؼ���        |   
+ LITERAL        | �ı�          |   
+ mask           | ����          |   
+ metric		| ����		|
+ miss		| �Ѱ�		|
+ modifier	| ���δ�	|
+ mount          | װ��,װ��     |   
+ NAME           | ����          |   
+ named pipe     | �����ܵ�      |   
+ number		| ���룬����	|
+ NOTES          | ע��          |   
+ OPTIONS        | ѡ��          |   
+ OUTPUT		| ���		|
+ packet         | ��,����       |   
+ PARAMETER      | ����          |   
+ pipe           | �ܵ�          |   
+ Port           | ��ֲ          |   
+ Portable       | ����ֲ��      |   
+ privileges     | Ȩ��          |   
+ PROMPT         | ��ʾ��        |   
+ quota		| �޶�,���	|
+ RESERVED WORD  | ������        |   
+ RETURN VALUE   | ����ֵ        |   
+ Route		| ·��		|
+ Sectors        | ����          |   
+ SECURITY       | ��ȫ          |   
+ SEE ALSO       | ���          |   
+ SEGMENT        | ��            |   
+ specification	| �淶������	|
+ stderr         | ��׼����      |   
+ stdin          | ��׼����      |   
+ stdout         | ��׼���      |   
+ switch         | ����          |   
+ SYNOPSIS       | ����          |   
+ Task           | ����          |   
+ thread         | �߳�          |   
+ TIP            | ����        |   
+ token          | �Ǻ�          |   
+ umask          | umask         |   
+ umount		| �		|
+ unrestricted	| ������	|
+ USAGE          | �÷�          |   
+ value          | ֵ            |   
+ verbose	| �߳�		|
+ work           | ��ת          |   
+=====================================================
+
+
+�ļ�Ӧ����ԭ�����ߺͰ�Ȩ����Ϣ����������ɾ��
+���ļ�������Ƿ�����������Ӧ���������ĸ�ʽ(���Խ������и��Ƶ��㷭����ļ��У������޸ģ���
+.SH "[���İ�ά����]"
+.B ���� <email>
+.SH "[���İ����¸���]"
+.BR yyyy.mm.dd
+.SH "[�й�linux��̳�����ֲ�ҳ����ƻ�]"
+.BI http://cmpp.linuxforum.net 
+
+=============================================
+
+����Լ��
+�����ʼ�Ӧ����<a at b> ����ʽ
+
+ʾ��
+��鿴man9/cmanexample.9 ʾ���ĵ�
+
diff --git a/DOCS/banner1.gif b/DOCS/banner1.gif
new file mode 100644
index 0000000..85222a2
Binary files /dev/null and b/DOCS/banner1.gif differ
diff --git a/DOCS/clf.gif b/DOCS/clf.gif
new file mode 100644
index 0000000..2d0b35b
Binary files /dev/null and b/DOCS/clf.gif differ
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..c4e204b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,62 @@
+NAME=man-pages-zh_CN
+DESTDIR=/usr/share
+CONFDIR=/etc
+TRANSLATED=DOCS/00TRANSLATED
+
+MAN=1 1p 8 2 3 3p 4 5 6 7 9 0p tcl n l p o 3pm 3perl
+MAN=1 8 2 3 4 5 6 7 9 n l
+
+u8:
+	mkdir UTF-8
+	cp -r src/man* UTF-8/
+gb:
+	for i in $(MAN) ; do \
+		mkdir -p GB/man$$i ; \
+	done
+	for f in `cat $(TRANSLATED)` ; do \
+		iconv -f utf8 -t gb18030 src/$$f > GB/$$f ; \
+	done
+	cp src/man.macros GB/
+html-gb:
+	mkdir html-gb
+	for i in $(MAN) ; do \
+		mkdir -p html-gb/man$$i ; \
+	done
+	export LC_ALL=zh_CN.GB18030 ;\
+	for f in `cat $(TRANSLATED)` ; do \
+		iconv -f utf8 -t gb18030 src/$$f | utils/man2html > html-gb/$$f.html ; \
+	done
+clean:
+	rm -rf UTF-8 GB BIG5 html-u8 html-gb html-b5 
+	find . -name *~ -type f | xargs rm -f
+	@rm -f *-stamp
+	@cd src && find man* -type f -path *.[1-9nlpo] -o -name *.tcl \
+	-o -name *.1[ml] -o -name *.3t -o -name *.3pm -o -name *.3perl \
+	-o -name *.3thr -o -name *.[357]ssl -o -name *.8c \
+	-o -name *.3gl -o -name *.[13457]x -o -name *.[013]p \
+	|sort > TRANSLATED && cd .. && mv src/TRANSLATED $(TRANSLATED)
+install-doc:
+	rm -rf $(DESTDIR)/doc/$(NAME)
+	mkdir -p $(DESTDIR)/doc
+	cp -R DOCS $(DESTDIR)/doc/$(NAME)
+	cp README* $(DESTDIR)/doc/$(NAME)
+	cp COPYING $(DESTDIR)/doc/$(NAME)
+install-u8:
+	rm -rf $(DESTDIR)/man/zh_CN.UTF-8
+	mkdir -p $(DESTDIR)/man
+	cp -R UTF-8 $(DESTDIR)/man/zh_CN.UTF-8
+install-gb:
+	rm -rf $(DESTDIR)/man/zh_CN.GB* /usr/share/man/zh_CN.GB*
+	mkdir -p $(DESTDIR)/man
+	cp -R GB $(DESTDIR)/man/zh_CN.GB18030
+	ln -s /usr/share/man/zh_CN.GB18030 $(DESTDIR)/man/zh_CN.GB2312
+	ln -s /usr/share/man/zh_CN.GB18030 $(DESTDIR)/man/zh_CN.GBK
+	ln -s /usr/share/man/zh_CN.GB18030 $(DESTDIR)/man/zh_CN
+	mkdir -p $(CONFDIR)/profile.d
+	cp -f src/cman/cman.conf $(CONFDIR)/
+	cp -pf src/cman/cman.sh $(CONFDIR)/profile.d/
+	cp -pf src/cman/cman.csh $(CONFDIR)/profile.d/
+uninstall:
+	rm -rf $(DESTDIR)/doc/$(NAME)
+	rm -rf $(DESTDIR)/man/zh_CN* /usr/share/man/zh_CN*
+	rm -f $(CONFDIR)/cman.conf $(CONFDIR)/profile.d/cman.*
diff --git a/README b/README
new file mode 100644
index 0000000..6129be4
--- /dev/null
+++ b/README
@@ -0,0 +1,31 @@
+这是来自CMPP <http://cmpp.linuxforum.net> 的中文手册页。请到 http://sf.linuxforum.net/projects/cmpp 来查看项目的近况,取得最新的文件下载;到 http://www.linuxforum.net 的讨论版上来参与工作。
+
+在安装之前,运行 locale 命令来查看自己的语言环境是什么,主要有影响的是 LC_ALL,LC_CTYPE 和 LANG 变量的值。如果语言环境是 zh_CN.UTF-8,可以运行 make u8 && make install-u8;如果语言环境是 GB2312,GBK 或者 GB18030,可以运行 make gb && make install-gb;或者,可以下载对应的rpm 包来安装,同样简单。对于 zh_CN.UTF-8,应当安装 man-pages-zh_CN-1.x,对于 GB2312,GBK,GB18030,应当安装 man-pages-zh_CN-gb-1.x。请参阅讨论版上关于不同发行版的系统与其默认中文编码的说明。
+
+需要说明的是,同时安装所有 rpm 也是没有问题的,不会对系统造成什么影响,因为它们只是简单的文本文件。在安装 man-pages-zh_CN-gb-1.x 之后,应当注销退出,在重新登录之后才能继续使用手册页系统;而在安装适于 UTF-8 语言环境的 man-pages-zh_CN-1.x 之后,不必注销就可以用了。使用方法也有不同,对于 GB* 语言环境,应当使用 cman 命令来查看,例如 ``cman ls'';对于 UTF-8 语言环境的系统,例如 Fedora Core 2,只要使用 man 命令就可以了。
+
+所有已翻译文档的版权属于其翻译者,或由翻译者指定。文档所有者没有另外说明的话,此软件包中的所有文档可以在遵循GNU FDL 的情况下重新发布。其他的文件如果没有另外的说明,则版权归于FSF,遵循GNU GPL 条款发布。建议翻译者放弃版权。
+
+如有任何问题,请用电子邮件和本计划的协调人
+	xuming<xuming at users.sourceforge.net>联系
+
+源代码目录结构的说明如下:
+debian:存放制作debian打包需要的所有内容
+DOCS:	除了README 和README.GB, COPYING 之外的所有文档。
+	其中自动生成的00TRANSLATED 只有英文版本,其他文档都提供UTF-8 和GB 两种版本。
+raw:	原始的man文档,为便于校对而设立。要注意更新
+src:	存放着生成安装包需要的原始的man文档以及为GB包准备的cman配置文件。
+	从cman 的cvs中获得文档之后,应当将其转换为UTF-8 格式man文档,然后再复制到本目录的相应位置。转换需要的程序是iconv 和dos2unix,html格式也应转换为man格式再进入本目录。
+utils:	存放着各种有用的脚本。
+UTF-8, GB 目录中的内容是在执行make 时自动生成的。
+另外根目录还有Makefile 以及man-pages-zh_CN.spec 用来控制打包。
+
+参与翻译的成员请注意DOCS 目录提供的词汇表,src/man9 提供的中文翻译的两个例子,还有以下内容:
+1) 译者请将自己的信息放在署名中 (默认情况下译者是维护人)。如果译者不想管理自己的“产品”,也可以在署名中加以说明;
+2) man手册中文版的署名的形式为 (一定要保留原英文作者名字,版权等信息,只要将下面一段复制粘贴到文档最后即可,注意空格):
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.BR yyyy.mm.dd
+.SH "[中国linux论坛中文手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/README.GB b/README.GB
new file mode 100644
index 0000000..d0d45ef
--- /dev/null
+++ b/README.GB
@@ -0,0 +1,31 @@
+��������CMPP <http://cmpp.linuxforum.net> �������ֲ�ҳ���뵽 http://sf.linuxforum.net/projects/cmpp ���鿴��Ŀ�Ľ�����ȡ�����µ��ļ����أ��� http://www.linuxforum.net �����۰��������빤����
+
+�ڰ�װ֮ǰ������ locale �������鿴�Լ������Ի�����ʲô����Ҫ��Ӱ����� LC_ALL��LC_CTYPE �� LANG ������ֵ��������Ի����� zh_CN.UTF-8���������� make u8 && make install-u8��������Ի����� GB2312��GBK ���� GB18030���������� make gb && make install-gb�����ߣ��������ض�Ӧ��rpm ������װ��ͬ���򵥡����� zh_CN.UTF-8��Ӧ����װ man-pages-zh_CN-1.x������ GB2312��GBK��GB18030��Ӧ����װ man-pages-zh_CN-gb-1.x����������۰��Ϲ��ڲ�ͬ���а��ϵͳ����Ĭ�����ı����˵����
+
+��Ҫ˵�����ǣ�ͬʱ��װ���� rpm Ҳ��û������ģ������ϵͳ���ʲôӰ�죬��Ϊ����ֻ�Ǽ򵥵��ı��ļ����ڰ�װ man-pages-zh_CN-gb-1.x ֮��Ӧ��ע���˳��������µ�¼֮����ܼ���ʹ���ֲ�ҳϵͳ�����ڰ�װ���� UTF-8 ���Ի����� man-pages-zh_CN-1.x ֮�󣬲���ע���Ϳ������ˡ�ʹ�÷���Ҳ�в�ͬ������ GB* ���Ի�����Ӧ��ʹ�� cman �������鿴������ ``cman ls''������ UTF-8 ���Ի�����ϵͳ������ Fedora Core 2��ֻҪʹ�� man ����Ϳ����ˡ�
+
+�����ѷ����ĵ��İ�Ȩ�����䷭���ߣ����ɷ�����ָ�����ĵ�������û������˵���Ļ�����������е������ĵ���������ѭGNU FDL ����������·������������ļ����û�������˵�������Ȩ����FSF����ѭGNU GPL ����������鷭���߷�����Ȩ��
+
+�����κ����⣬���õ����ʼ��ͱ��ƻ���Э����
+	xuming<xuming at users.sourceforge.net>��ϵ
+
+Դ����Ŀ¼�ṹ��˵�����£�
+debian���������debian�����Ҫ����������
+DOCS��	����README ��README.GB, COPYING ֮��������ĵ���
+	�����Զ����ɵ�00TRANSLATED ֻ��Ӣ�İ汾�������ĵ����ṩUTF-8 ��GB ���ְ汾��
+raw:	ԭʼ��man�ĵ���Ϊ����У�Զ�������Ҫע�����
+src��	��������ɰ�װ����Ҫ��ԭʼ��man�ĵ��Լ�ΪGB��׼����cman�����ļ���
+	��cman ��cvs�л���ĵ�֮��Ӧ������ת��ΪUTF-8 ��ʽman�ĵ���Ȼ���ٸ��Ƶ���Ŀ¼����Ӧλ�á�ת����Ҫ�ij�����iconv ��dos2unix��html��ʽҲӦת��Ϊman��ʽ�ٽ��뱾Ŀ¼��
+utils��	����Ÿ������õĽű���
+UTF-8, GB Ŀ¼�е���������ִ��make ʱ�Զ����ɵġ�
+�����Ŀ¼����Makefile �Լ�man-pages-zh_CN.spec �������ƴ����
+
+���뷭��ij�Ա��ע��DOCS Ŀ¼�ṩ�Ĵʻ��src/man9 �ṩ�����ķ�����������ӣ������������ݣ�
+1) �����뽫�Լ�����Ϣ���������� (Ĭ�������������ά����)��������߲�������Լ��ġ���Ʒ����Ҳ�����������м���˵��;
+2) man�ֲ����İ����������ʽΪ (һ��Ҫ����ԭӢ���������֣���Ȩ����Ϣ��ֻҪ������һ�θ���ճ�����ĵ���󼴿ɣ�ע��ո�):
+.SH "[���İ�ά����]"
+.B ���� <email>
+.SH "[���İ����¸���]"
+.BR yyyy.mm.dd
+.SH "[�й�linux��̳�����ֲ�ҳ����ƻ�]"
+.BI http://cmpp.linuxforum.net
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..7bc9cd1
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,26 @@
+cman (1.4-7) unstable; urgency=low
+
+  * Added some more translations and small bug fixes.
+
+ -- bbbush <bbbush at 163.com>  Thu,  04 Mar 2004 12:30:00 +0800
+
+cman (1.4-6) unstable; urgency=low
+
+  * Added original documents in raw directory
+
+ -- bbbush <bbbush at 163.com>  Sat,  20 Dec 2003 12:30:00 +0800
+
+cman (1.4-5) unstable; urgency=low
+
+  * Default file encoding is UTF-8
+  * zh_TW is removed, hope somebody to add it one day
+  
+ -- bbbush <bbbush at 163.com>  Tue,  25 Nov 2003 15:17:08 +0800
+
+cman (0.0.7-1) unstable; urgency=low
+
+  * Initial Release.
+  * Added zh_TW man pages converted from zh_CN using zh-autoconvert
+    and my own conversion table.  :-)
+
+ -- Anthony Fok <foka at debian.org>  Fri,  1 Jun 2001 15:17:08 -0600
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..a4dc4b3
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,17 @@
+Source: cman
+Section: doc
+Priority: optional
+Maintainer: bbbush <bbbush at 163.com>
+
+Package: manpages-zh
+Architecture: any
+Suggests: man-browser
+Conflicts: zh-trans
+Replaces: zh-trans
+Provides: zh-trans
+Description: Chinese manual pages
+ This package contains the Chinese manual pages translated by the
+ Chinese Manual Pages Project (CMPP). 
+ Only zh_CN.UTF-8 and zh_CN.GB* are provided. Any body convert it to zh_TW ?
+ .
+ Home Page: http://cmpp.linuxforum.net
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..e69de29
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..74284bf
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,55 @@
+#!/usr/bin/make -f
+package	:=	manpages-zh
+prefix	:=	$(shell pwd)/debian/$(package)
+arch	:=	$(shell dpkg --print-architecture)
+
+DESTDIR	:=	$(prefix)/usr/share
+CONFDIR	:=	$(prefix)/etc
+
+binary: u8 gb install
+
+u8:u8-stamp
+u8-stamp:
+	dh_testdir
+	dh_testroot
+	$(MAKE) u8
+	touch u8-stamp
+gb:gb-stamp
+gb-stamp:
+	dh_testdir
+	dh_testroot
+	$(MAKE) gb
+	touch gb-stamp
+	
+install:u8-stamp gb-stamp
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	$(MAKE) DESTDIR=$(DESTDIR) install-u8
+	$(MAKE) DESTDIR=$(DESTDIR) CONFDIR=$(CONFDIR) install-gb
+	dh_installdirs
+	dh_installdocs DOCS/* README*
+	dh_installchangelogs
+	cp -R debian/$(package)/* debian/tmp/
+	dh_link
+	dh_strip
+	dh_compress --exclude=man.macros
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+	
+clean:
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	rm -f *-stamp
+	make clean
+	dh_clean
+	rm -rf debian/$(package)
+uninstall:
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	make DESTDIR=$(DESTDIR) CONFDIR=$(CONFDIR) uninstall
diff --git a/man-pages-zh_CN.spec b/man-pages-zh_CN.spec
new file mode 100644
index 0000000..676ce4b
--- /dev/null
+++ b/man-pages-zh_CN.spec
@@ -0,0 +1,78 @@
+Name:		man-pages-zh_CN
+Version:	1.5
+Release:	1
+Summary:	Chinese translation of man pages from the CMPP project
+Summary(zh_CN):	来自CMPP 计划的中文手册页
+
+Group:		Documentation
+Copyright:	FDL
+Vendor:		CMPP project
+URL:		http://cmpp.linuxforum.net
+Source:		http://cmpp.linuxforum.net/download/%{name}-%{version}.tar.gz
+Packager:	bbbush <bbbush at 163.com>
+Prefix:		%{_prefix}
+BuildRoot:	%{_tmppath}/%{name}-%{version}-root
+BuildArch:	noarch
+
+#==========================
+%description
+Chinese translation of man pages from the CMPP project.
+%description -l zh_CN
+来自CMPP 计划的中文手册页。
+请访问 http://cmpp.linuxforum.net 来获取更多信息。
+#==========================
+%package gb
+Summary:	Chinese translation of man pages from the CMPP project, gb
+Group:		Documentation
+%description gb
+Chinese translation of man pages from the CMPP project.
+Files are coded in zh_CN.GB18030 and you can use "cman" command to view them.
+##==========================
+
+%prep
+rm -rf $RPM_BUILD_ROOT
+%setup -q
+
+%build
+rm -rf $RPM_BUILD_ROOT
+make u8
+make gb
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT%{_usr}/share install-doc
+make DESTDIR=$RPM_BUILD_ROOT%{_usr}/share install-u8
+make DESTDIR=$RPM_BUILD_ROOT%{_usr}/share CONFDIR=$RPM_BUILD_ROOT%{_sysconfdir} install-gb
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%{_mandir}/zh_CN.UTF-8
+%{_usr}/share/doc/%{name}
+%files gb
+%{_mandir}/zh_CN
+%{_mandir}/zh_CN.GB*
+%{_sysconfdir}/cman.conf
+%{_sysconfdir}/profile.d/cman.*
+%{_usr}/share/doc/%{name}
+
+%changelog
+* Mon May 24 2004 bbbush <bbbush at 163.com>
+- FedoraCore2 use zh_CN as an alias of zh_CN.GB2312, but default is zh_CN.UTF-8
+
+* Sun Oct 26 2003 bbbush <bbbush at 163.com>
+- mainly for UTF-8
+
+* Tue Jun 19 2001 Yangbotao <yangbt at legend.com>
+- first chinese manpages.
+
+* Wed Jul 12 2000 Prospector <bugzilla at redhat.com>
+- automatic rebuild
+
+* Tue Jun 20 2000 Jeff Johnson <jbj at redhat.com>
+- rebuild to compress man pages.
+
+* Sun Jun 11 2000 Trond Eivind Glomsrød <teg at redhat.com>
+- first build
+
diff --git a/raw/NOT_FOUND b/raw/NOT_FOUND
new file mode 100644
index 0000000..0c961ca
--- /dev/null
+++ b/raw/NOT_FOUND
@@ -0,0 +1,64 @@
+cp: stat‘/usr/share/man/man1/ac.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/ali.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/autorun.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/biff.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/cce.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/charset.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/dircolor.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/dnskeygen.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/dnsquery.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/git.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/gview.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/gvim.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/listalias.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/mailto.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/make_smbcodepage.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/mencoder.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/mirror.1l.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/mode.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/mplayer.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/perl.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/rgview.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/rgvim.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/showfont.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/smbrun.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/smbsh.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/sq.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/tcpdump.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/unsq.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/uuencode.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/vt-is-UTF8.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man1/xmodmap.1.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man5/ftpaccess.5.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man5/lilo.conf.5.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man5/man.conf.5.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man5/nsswitch.5.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man7/roff.7.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man7/suffix.7.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/bdflush.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/imapd.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/inetd.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/lilo.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/named-bootconf.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/printcap.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/quotaoff.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/quotastats.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/setclock.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man8/swat.8.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man9/cmanexample.9.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/man9/cmanformat.9.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/ArrowButton.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/Button.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/ComboBox.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/Dialog.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/LabelFrame.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/MainFrame.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/Notebook.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/PagesManager.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/PanedWindow.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/ProgressBar.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/ScrollableFrame.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/ScrolledWindow.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/SpinBox.n.gz’失败: 没有那个文件或目录
+cp: stat‘/usr/share/man/mann/TitleFrame.n.gz’失败: 没有那个文件或目录
+mpg123.1
diff --git a/raw/man.macros b/raw/man.macros
new file mode 100644
index 0000000..5a62570
--- /dev/null
+++ b/raw/man.macros
@@ -0,0 +1,236 @@
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: man.macros,v 1.1 2003/12/20 03:31:52 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 4c 8c 12c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
diff --git a/raw/man1/..1 b/raw/man1/..1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/..1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/:.1 b/raw/man1/:.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/:.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/[.1 b/raw/man1/[.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/[.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/a2p.1 b/raw/man1/a2p.1
new file mode 100644
index 0000000..430c3d1
--- /dev/null
+++ b/raw/man1/a2p.1
@@ -0,0 +1,298 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "A2P 1"
+.TH A2P 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH "NAME"
+a2p \- Awk to Perl translator
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBa2p [options] filename\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fIA2p\fR takes an awk script specified on the command line (or from
+standard input) and produces a comparable \fIperl\fR script on the
+standard output.
+.Sh "Options"
+.IX Subsection "Options"
+Options include:
+.IP "\fB\-D<number>\fR" 5
+.IX Item "-D<number>"
+sets debugging flags.
+.IP "\fB\-F<character>\fR" 5
+.IX Item "-F<character>"
+tells a2p that this awk script is always invoked with this \fB\-F\fR
+switch.
+.IP "\fB\-n<fieldlist>\fR" 5
+.IX Item "-n<fieldlist>"
+specifies the names of the input fields if input does not have to be
+split into an array.  If you were translating an awk script that
+processes the password file, you might say:
+.Sp
+.Vb 1
+\&        a2p -7 -nlogin.password.uid.gid.gcos.shell.home
+.Ve
+.Sp
+Any delimiter can be used to separate the field names.
+.IP "\fB\-<number>\fR" 5
+.IX Item "-<number>"
+causes a2p to assume that input will always have that many fields.
+.IP "\fB\-o\fR" 5
+.IX Item "-o"
+tells a2p to use old awk behavior.  The only current differences are:
+.RS 5
+.IP "*" 5
+Old awk always has a line loop, even if there are no line
+actions, whereas new awk does not.
+.IP "*" 5
+In old awk, sprintf is extremely greedy about its arguments.
+For example, given the statement
+.Sp
+.Vb 1
+\&        print sprintf(some_args), extra_args;
+.Ve
+.Sp
+old awk considers \fIextra_args\fR to be arguments to \f(CW\*(C`sprintf\*(C'\fR; new awk
+considers them arguments to \f(CW\*(C`print\*(C'\fR.
+.RE
+.RS 5
+.RE
+.ie n .Sh """Considerations"""
+.el .Sh "``Considerations''"
+.IX Subsection "Considerations"
+A2p cannot do as good a job translating as a human would, but it
+usually does pretty well.  There are some areas where you may want to
+examine the perl script produced and tweak it some.  Here are some of
+them, in no particular order.
+.PP
+There is an awk idiom of putting \fIint()\fR around a string expression to
+force numeric interpretation, even though the argument is always
+integer anyway.  This is generally unneeded in perl, but a2p can't
+tell if the argument is always going to be integer, so it leaves it
+in.  You may wish to remove it.
+.PP
+Perl differentiates numeric comparison from string comparison.  Awk
+has one operator for both that decides at run time which comparison to
+do.  A2p does not try to do a complete job of awk emulation at this
+point.  Instead it guesses which one you want.  It's almost always
+right, but it can be spoofed.  All such guesses are marked with the
+comment "\f(CW\*(C`#???\*(C'\fR".  You should go through and check them.  You might
+want to run at least once with the \fB\-w\fR switch to perl, which will
+warn you if you use == where you should have used eq.
+.PP
+Perl does not attempt to emulate the behavior of awk in which
+nonexistent array elements spring into existence simply by being
+referenced.  If somehow you are relying on this mechanism to create
+null entries for a subsequent for...in, they won't be there in perl.
+.PP
+If a2p makes a split line that assigns to a list of variables that
+looks like (Fld1, Fld2, Fld3...) you may want to rerun a2p using the
+\&\fB\-n\fR option mentioned above.  This will let you name the fields
+throughout the script.  If it splits to an array instead, the script
+is probably referring to the number of fields somewhere.
+.PP
+The exit statement in awk doesn't necessarily exit; it goes to the \s-1END\s0
+block if there is one.  Awk scripts that do contortions within the \s-1END\s0
+block to bypass the block under such circumstances can be simplified
+by removing the conditional in the \s-1END\s0 block and just exiting directly
+from the perl script.
+.PP
+Perl has two kinds of array, numerically-indexed and associative.
+Perl associative arrays are called \*(L"hashes\*(R".  Awk arrays are usually
+translated to hashes, but if you happen to know that the index is
+always going to be numeric you could change the {...} to [...].
+Iteration over a hash is done using the \fIkeys()\fR function, but iteration
+over an array is \s-1NOT\s0.  You might need to modify any loop that iterates
+over such an array.
+.PP
+Awk starts by assuming \s-1OFMT\s0 has the value %.6g.  Perl starts by
+assuming its equivalent, $#, to have the value %.20g.  You'll want to
+set $# explicitly if you use the default value of \s-1OFMT\s0.
+.PP
+Near the top of the line loop will be the split operation that is
+implicit in the awk script.  There are times when you can move this
+down past some conditionals that test the entire record so that the
+split is not done as often.
+.PP
+For aesthetic reasons you may wish to change the array base $[ from 1
+back to perl's default of 0, but remember to change all array
+subscripts \s-1AND\s0 all \fIsubstr()\fR and \fIindex()\fR operations to match.
+.PP
+Cute comments that say \*(L"# Here is a workaround because awk is dumb\*(R"
+are passed through unmodified.
+.PP
+Awk scripts are often embedded in a shell script that pipes stuff into
+and out of awk.  Often the shell script wrapper can be incorporated
+into the perl script, since perl can start up pipes into and out of
+itself, and can do other things that awk can't do by itself.
+.PP
+Scripts that refer to the special variables \s-1RSTART\s0 and \s-1RLENGTH\s0 can
+often be simplified by referring to the variables $`, $& and $', as
+long as they are within the scope of the pattern match that sets them.
+.PP
+The produced perl script may have subroutines defined to deal with
+awk's semantics regarding getline and print.  Since a2p usually picks
+correctness over efficiency.  it is almost always possible to rewrite
+such code to be more efficient by discarding the semantic sugar.
+.PP
+For efficiency, you may wish to remove the keyword from any return
+statement that is the last statement executed in a subroutine.  A2p
+catches the most common case, but doesn't analyze embedded blocks for
+subtler cases.
+.PP
+ARGV[0] translates to \f(CW$ARGV0\fR, but ARGV[n] translates to \f(CW$ARGV\fR[$n].  A
+loop that tries to iterate over ARGV[0] won't find it.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+A2p uses no environment variables.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Larry Wall <\fIlarry at wall.org\fR>
+.SH "FILES"
+.IX Header "FILES"
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+.Vb 1
+\& perl   The perl compiler/interpreter
+.Ve
+.PP
+.Vb 1
+\& s2p    sed to perl translator
+.Ve
+.SH "DIAGNOSTICS"
+.IX Header "DIAGNOSTICS"
+.SH "BUGS"
+.IX Header "BUGS"
+It would be possible to emulate awk's behavior in selecting string
+versus numeric operations at run time by inspection of the operands,
+but it would be gross and inefficient.  Besides, a2p almost always
+guesses right.
+.PP
+Storage for the awk syntax tree is currently static, and can run out.
diff --git a/raw/man1/ab.1 b/raw/man1/ab.1
new file mode 100644
index 0000000..cc39de4
--- /dev/null
+++ b/raw/man1/ab.1
@@ -0,0 +1,127 @@
+.\" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+.\" DO NOT EDIT! Generated from XML source.
+.\" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "AB" 8 "2003-04-29" "Apache HTTP Server" "ab"
+
+.SH NAME
+ab \- Apache HTTP server benchmarking tool
+
+.SH "SYNOPSIS"
+ 
+.PP
+\fBab\fR [ -\fBA\fR \fIauth-username\fR:\fIpassword\fR ] [ -\fBc\fR \fIconcurrency\fR ] [ -\fBC\fR \fIcookie-name\fR=\fIvalue\fR ] [ -\fBd\fR ] [ -\fBe\fR \fIcsv-file\fR ] [ -\fBg\fR \fIgnuplot-file\fR ] [ -\fBh\fR ] [ -\fBH\fR \fIcustom-header\fR ] [ -\fBi\fR ] [ -\fBk\fR ] [ -\fBn\fR \fIrequests\fR ] [ -\fBp\fR \fIPOST-file\fR ] [ -\fBP\fR \fIproxy-auth-username\fR:\fIpassword\fR ] [ -\fBq\fR ] [ -\fBs\fR ] [ -\fBS\fR ] [ -\fBt\fR \fItimelimit\fR ] [ -\fBT\fR \fIcontent-type\fR ] [ -\f [...]
+ 
+
+.SH "SUMMARY"
+ 
+.PP
+ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server\&. It is designed to give you an impression of how your current Apache installation performs\&. This especially shows you how many requests per second your Apache installation is capable of serving\&.
+ 
+
+.SH "OPTIONS"
+ 
+.RS
+ 
+.TP
+-A \fIauth-username\fR:\fIpassword\fR
+Supply BASIC Authentication credentials to the server\&. The username and password are separated by a single : and sent on the wire base64 encoded\&. The string is sent regardless of whether the server needs it (\fIi\&.e\&.\fR, has sent an 401 authentication needed)\&.  
+.TP
+-c \fIconcurrency\fR
+Number of multiple requests to perform at a time\&. Default is one request at a time\&.  
+.TP
+-C \fIcookie-name\fR=\fIvalue\fR
+Add a Cookie: line to the request\&. The argument is typically in the form of a \fIname\fR=\fIvalue\fR pair\&. This field is repeatable\&.  
+.TP
+-d
+Do not display the "percentage served within XX [ms] table"\&. (legacy support)\&.  
+.TP
+-e \fIcsv-file\fR
+Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milli seconds) it took to serve that percentage of the requests\&. This is usually more useful than the 'gnuplot' file; as the results are already 'binned'\&.  
+.TP
+-g \fIgnuplot-file\fR
+Write all measured values out as a 'gnuplot' or TSV (Tab separate values) file\&. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excell\&. The labels are on the first line of the file\&.  
+.TP
+-h
+Display usage information\&.  
+.TP
+-H \fIcustom-header\fR
+Append extra headers to the request\&. The argument is typically in the form of a valid header line, containing a colon-separated field-value pair (\fIi\&.e\&.\fR, "Accept-Encoding: zip/zop;8bit")\&.  
+.TP
+-i
+Do HEAD requests instead of GET\&.  
+.TP
+-k
+Enable the HTTP KeepAlive feature, \fIi\&.e\&.\fR, perform multiple requests within one HTTP session\&. Default is no KeepAlive\&.  
+.TP
+-n \fIrequests\fR
+Number of requests to perform for the benchmarking session\&. The default is to just perform a single request which usually leads to non-representative benchmarking results\&.  
+.TP
+-p \fIPOST-file\fR
+File containing data to POST\&.  
+.TP
+-P \fIproxy-auth-username\fR:\fIpassword\fR
+Supply BASIC Authentication credentials to a proxy en-route\&. The username and password are separated by a single : and sent on the wire base64 encoded\&. The string is sent regardless of whether the proxy needs it (\fIi\&.e\&.\fR, has sent an 407 proxy authentication needed)\&.  
+.TP
+-q
+When processing more than 150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so\&. The -q flag will suppress these messages\&.  
+.TP
+-s
+When compiled in (ab -h will show you) use the SSL protected https rather than the http protocol\&. This feature is experimental and \fIvery\fR rudimentary\&. You probably do not want to use it\&.  
+.TP
+-S
+Do not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart\&. And default to the min/avg/max values\&. (legacy support)\&.  
+.TP
+-t \fItimelimit\fR
+Maximum number of seconds to spend for benchmarking\&. This implies a -n 50000 internally\&. Use this to benchmark the server within a fixed total amount of time\&. Per default there is no timelimit\&.  
+.TP
+-T \fIcontent-type\fR
+Content-type header to use for POST data\&.  
+.TP
+-v \fIverbosity\fR
+Set verbosity level - 4 and above prints information on headers, 3 and above prints response codes (404, 200, etc\&.), 2 and above prints warnings and info\&.  
+.TP
+-V
+Display version number and exit\&.  
+.TP
+-w
+Print out results in HTML tables\&. Default table is two columns wide, with a white background\&.  
+.TP
+-x \fI<table>-attributes\fR
+String to use as attributes for <table>\&. Attributes are inserted <table \fIhere\fR >\&.  
+.TP
+-X \fIproxy\fR[:\fIport\fR]
+Use a proxy server for the requests\&.  
+.TP
+-y \fI<tr>-attributes\fR
+String to use as attributes for <tr>\&.  
+.TP
+-z \fI<td>-attributes\fR
+String to use as attributes for <td>\&.  
+.RE
+ 
+.SH "BUGS"
+ 
+.PP
+There are various statically declared buffers of fixed length\&. Combined with the lazy parsing of the command line arguments, the response headers from the server and other external inputs, this might bite you\&.
+ 
+.PP
+It does not implement HTTP/1\&.x fully; only accepts some 'expected' forms of responses\&. The rather heavy use of strstr(3) shows up top in profile, which might indicate a performance problem; \fIi\&.e\&.\fR, you would measure the ab performance rather than the server's\&.
+ 
diff --git a/raw/man1/access.1 b/raw/man1/access.1
new file mode 100644
index 0000000..5060011
--- /dev/null
+++ b/raw/man1/access.1
@@ -0,0 +1,64 @@
+.TH ACCESS 1 "4 January 1998" "Kpathsea 3.4.5"
+.\"=====================================================================
+.if n .ds MP MetaPost
+.if t .ds MP MetaPost
+.if n .ds MF Metafont
+.if t .ds MF M\s-2ETAFONT\s0
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP\" for troff
+.el .ds OX TeX\" for nroff
+.\" the same but obliqued
+.\" BX definition must follow TX so BX can use TX
+.if t .ds BX \fRB\s-2IB\s0\fP\*(TX
+.if n .ds BX BibTeX
+.\" LX definition must follow TX so LX can use TX
+.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX
+.if n .ds LX LaTeX
+.\"=====================================================================
+.SH NAME
+access \- determine whether a file can be accessed
+.SH SYNOPSIS
+.B access
+.I -mode
+.I file
+.\"=====================================================================
+.SH DESCRIPTION
+Exit successfully if
+.I file
+can be accessed with the specified mode.
+.I mode
+is one or more letters of
+.IR rwx ,
+where
+.I r
+is for readable,
+.I w
+is for writable, and
+.I x
+is for executable.
+.PP
+The difference between
+.B access
+and
+.B test
+is that the latter looks at the permission bits, while the former
+checks using the
+.BR access (2)
+system call.  This makes a difference when file systems have been
+mounted read-only.
+.\"=====================================================================
+.SH OPTIONS
+.B access
+accepts the following additional options:
+.TP
+.B --help
+.rb
+Print help message and exit.
+.TP
+.B --version
+.rb
+Print version information and exit.
+.\"=====================================================================
+.SH "SEE ALSO"
+.BR access (2)
diff --git a/raw/man1/alias.1 b/raw/man1/alias.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/alias.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/apm.1 b/raw/man1/apm.1
new file mode 100644
index 0000000..e9dce69
--- /dev/null
+++ b/raw/man1/apm.1
@@ -0,0 +1,86 @@
+.\" apm.1 -- 
+.\" Created: Wed Jan 10 14:54:03 1996 by r.faith at ieee.org
+.\" Revised: Sun Apr 21 16:37:43 1996 by r.faith at ieee.org
+.\" Copyright 1996 Rickard E. Faith (r.faith at ieee.org)
+.\" 
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\" 
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" 
+.TH APM 1 "10 Jan 1996" "" "Linux Programmer's Manual"
+.SH NAME
+apm \- query Advanced Power Management (APM) BIOS
+.SH SYNOPSIS
+.B apm [ \-vVmsS ]
+.SH DESCRIPTION
+.B apm
+reads
+.I /proc/apm
+and presents the output in a human-readable format.  Since primarily
+battery status information is provided, this command is most useful on
+laptops with a compliant APM BIOS.
+.B apm
+also allows the machine to be put into standby or suspend mode.
+.SH OPTIONS
+.TP
+.B \-V, \-\-version
+Print the
+.B apm
+program version and exit immediately.
+.TP
+.B \-v, \-\-verbose
+Print information about the APM BIOS version and Linux APM driver version.
+.TP
+.B \-m, \-\-minutes
+Print total minutes remaining instead of using an hh:mm format.
+.TP
+.B \-s, \-\-suspend
+Put the machine into suspend mode if possible.
+.TP
+.B \-S, \-\-standby
+Put the machine into standby mode if possible.
+.TP
+.B \-i, \-\-ignore
+Tell the system to ignore system-generated APM suspend and standby events
+when on AC power.  This may be useful to users who have laptops and want
+APM events when on battery power, but not when on AC power.
+.TP
+.B \-n, \-\-noignore
+Tell the system 
+.B not 
+to ignore system-generated APM suspend and standby events
+when on AC power.  This is the default mode; this option is provided as a
+way to undo a prior "apm -i" call.
+.TP
+.SH BUGS
+This program requires a post-1.3.57 kernel.  This program will not work
+with older kernels or with the APM patches, since the format for
+.I /proc/apm
+has changed radically.
+.SH FILES
+.I /proc/apm
+.br
+.I linux/drivers/char/apm_bios.c
+.SH AUTHOR
+This program was written by Rik Faith (faith at cs.unc.edu) and may be freely
+distributed under the terms of the GNU General Public License.  There is
+ABSOLUTELY NO WARRANTY for this program.  The current maintainer is Avery
+Pennarun (apenwarr at worldvisions.ca).
+.SH "SEE ALSO"
+.BR xapm "(1), "apmd (8)
diff --git a/raw/man1/apropos.1 b/raw/man1/apropos.1
new file mode 100644
index 0000000..7825a31
--- /dev/null
+++ b/raw/man1/apropos.1
@@ -0,0 +1,31 @@
+.\"
+.\" Generated automatically from apropos.1.in by the
+.\" configure script.
+.\"
+.\" Man page for apropos
+.\"
+.\" Copyright (c) 1990, 1991, John W. Eaton.
+.\"
+.\" You may distribute under the terms of the GNU General Public
+.\" License as specified in the README file that comes with the man 1.0
+.\" distribution.  
+.\"
+.\" John W. Eaton
+.\" jwe at che.utexas.edu
+.\" Department of Chemical Engineering
+.\" The University of Texas at Austin
+.\" Austin, Texas  78712
+.\"
+.TH apropos 1 "Jan 15, 1991"
+.LO 1
+.SH NAME
+apropos \- search the whatis database for strings
+.SH SYNOPSIS
+.BI apropos
+keyword ...
+.SH DESCRIPTION
+apropos searches a set of database files containing short descriptions
+of system commands for keywords and displays the result on the
+standard output.
+.SH "SEE ALSO"
+whatis(1), man(1).
diff --git a/raw/man1/ar.1 b/raw/man1/ar.1
new file mode 100644
index 0000000..f067188
--- /dev/null
+++ b/raw/man1/ar.1
@@ -0,0 +1,377 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "AR 1"
+.TH AR 1 "2003-09-30" "binutils-2.14.90.0.6" "GNU Development Tools"
+.SH "NAME"
+ar \- create, modify, and extract from archives
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ar [\fB\-X32_64\fR] [\fB\-\fR]\fIp\fR[\fImod\fR [\fIrelpos\fR] [\fIcount\fR]] \fIarchive\fR [\fImember\fR...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \s-1GNU\s0 \fBar\fR program creates, modifies, and extracts from
+archives.  An \fIarchive\fR is a single file holding a collection of
+other files in a structure that makes it possible to retrieve
+the original individual files (called \fImembers\fR of the archive).
+.PP
+The original files' contents, mode (permissions), timestamp, owner, and
+group are preserved in the archive, and can be restored on
+extraction.  
+.PP
+\&\s-1GNU\s0 \fBar\fR can maintain archives whose members have names of any
+length; however, depending on how \fBar\fR is configured on your
+system, a limit on member-name length may be imposed for compatibility
+with archive formats maintained with other tools.  If it exists, the
+limit is often 15 characters (typical of formats related to a.out) or 16
+characters (typical of formats related to coff).
+.PP
+\&\fBar\fR is considered a binary utility because archives of this sort
+are most often used as \fIlibraries\fR holding commonly needed
+subroutines.
+.PP
+\&\fBar\fR creates an index to the symbols defined in relocatable
+object modules in the archive when you specify the modifier \fBs\fR.
+Once created, this index is updated in the archive whenever \fBar\fR
+makes a change to its contents (save for the \fBq\fR update operation).
+An archive with such an index speeds up linking to the library, and
+allows routines in the library to call each other without regard to
+their placement in the archive.
+.PP
+You may use \fBnm \-s\fR or \fBnm \-\-print\-armap\fR to list this index
+table.  If an archive lacks the table, another form of \fBar\fR called
+\&\fBranlib\fR can be used to add just the table.
+.PP
+\&\s-1GNU\s0 \fBar\fR is designed to be compatible with two different
+facilities.  You can control its activity using command-line options,
+like the different varieties of \fBar\fR on Unix systems; or, if you
+specify the single command-line option \fB\-M\fR, you can control it
+with a script supplied via standard input, like the \s-1MRI\s0 ``librarian''
+program.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+\&\s-1GNU\s0 \fBar\fR allows you to mix the operation code \fIp\fR and modifier
+flags \fImod\fR in any order, within the first command-line argument.
+.PP
+If you wish, you may begin the first command-line argument with a
+dash.
+.PP
+The \fIp\fR keyletter specifies what operation to execute; it may be
+any of the following, but you must specify only one of them:
+.IP "\fBd\fR" 4
+.IX Item "d"
+\&\fIDelete\fR modules from the archive.  Specify the names of modules to
+be deleted as \fImember\fR...; the archive is untouched if you
+specify no files to delete.
+.Sp
+If you specify the \fBv\fR modifier, \fBar\fR lists each module
+as it is deleted.
+.IP "\fBm\fR" 4
+.IX Item "m"
+Use this operation to \fImove\fR members in an archive.
+.Sp
+The ordering of members in an archive can make a difference in how
+programs are linked using the library, if a symbol is defined in more
+than one member.  
+.Sp
+If no modifiers are used with \f(CW\*(C`m\*(C'\fR, any members you name in the
+\&\fImember\fR arguments are moved to the \fIend\fR of the archive;
+you can use the \fBa\fR, \fBb\fR, or \fBi\fR modifiers to move them to a
+specified place instead.
+.IP "\fBp\fR" 4
+.IX Item "p"
+\&\fIPrint\fR the specified members of the archive, to the standard
+output file.  If the \fBv\fR modifier is specified, show the member
+name before copying its contents to standard output.
+.Sp
+If you specify no \fImember\fR arguments, all the files in the archive are
+printed.
+.IP "\fBq\fR" 4
+.IX Item "q"
+\&\fIQuick append\fR; Historically, add the files \fImember\fR... to the end of
+\&\fIarchive\fR, without checking for replacement.
+.Sp
+The modifiers \fBa\fR, \fBb\fR, and \fBi\fR do \fInot\fR affect this
+operation; new members are always placed at the end of the archive.
+.Sp
+The modifier \fBv\fR makes \fBar\fR list each file as it is appended.
+.Sp
+Since the point of this operation is speed, the archive's symbol table
+index is not updated, even if it already existed; you can use \fBar s\fR or
+\&\fBranlib\fR explicitly to update the symbol table index.
+.Sp
+However, too many different systems assume quick append rebuilds the
+index, so \s-1GNU\s0 \fBar\fR implements \fBq\fR as a synonym for \fBr\fR.
+.IP "\fBr\fR" 4
+.IX Item "r"
+Insert the files \fImember\fR... into \fIarchive\fR (with
+\&\fIreplacement\fR). This operation differs from \fBq\fR in that any
+previously existing members are deleted if their names match those being
+added.
+.Sp
+If one of the files named in \fImember\fR... does not exist, \fBar\fR
+displays an error message, and leaves undisturbed any existing members
+of the archive matching that name.
+.Sp
+By default, new members are added at the end of the file; but you may
+use one of the modifiers \fBa\fR, \fBb\fR, or \fBi\fR to request
+placement relative to some existing member.
+.Sp
+The modifier \fBv\fR used with this operation elicits a line of
+output for each file inserted, along with one of the letters \fBa\fR or
+\&\fBr\fR to indicate whether the file was appended (no old member
+deleted) or replaced.
+.IP "\fBt\fR" 4
+.IX Item "t"
+Display a \fItable\fR listing the contents of \fIarchive\fR, or those
+of the files listed in \fImember\fR... that are present in the
+archive.  Normally only the member name is shown; if you also want to
+see the modes (permissions), timestamp, owner, group, and size, you can
+request that by also specifying the \fBv\fR modifier.
+.Sp
+If you do not specify a \fImember\fR, all files in the archive
+are listed.
+.Sp
+If there is more than one file with the same name (say, \fBfie\fR) in
+an archive (say \fBb.a\fR), \fBar t b.a fie\fR lists only the
+first instance; to see them all, you must ask for a complete
+listing\-\-\-in our example, \fBar t b.a\fR.
+.IP "\fBx\fR" 4
+.IX Item "x"
+\&\fIExtract\fR members (named \fImember\fR) from the archive.  You can
+use the \fBv\fR modifier with this operation, to request that
+\&\fBar\fR list each name as it extracts it.
+.Sp
+If you do not specify a \fImember\fR, all files in the archive
+are extracted.
+.PP
+A number of modifiers (\fImod\fR) may immediately follow the \fIp\fR
+keyletter, to specify variations on an operation's behavior:
+.IP "\fBa\fR" 4
+.IX Item "a"
+Add new files \fIafter\fR an existing member of the
+archive.  If you use the modifier \fBa\fR, the name of an existing archive
+member must be present as the \fIrelpos\fR argument, before the
+\&\fIarchive\fR specification.
+.IP "\fBb\fR" 4
+.IX Item "b"
+Add new files \fIbefore\fR an existing member of the
+archive.  If you use the modifier \fBb\fR, the name of an existing archive
+member must be present as the \fIrelpos\fR argument, before the
+\&\fIarchive\fR specification.  (same as \fBi\fR).
+.IP "\fBc\fR" 4
+.IX Item "c"
+\&\fICreate\fR the archive.  The specified \fIarchive\fR is always
+created if it did not exist, when you request an update.  But a warning is
+issued unless you specify in advance that you expect to create it, by
+using this modifier.
+.IP "\fBf\fR" 4
+.IX Item "f"
+Truncate names in the archive.  \s-1GNU\s0 \fBar\fR will normally permit file
+names of any length.  This will cause it to create archives which are
+not compatible with the native \fBar\fR program on some systems.  If
+this is a concern, the \fBf\fR modifier may be used to truncate file
+names when putting them in the archive.
+.IP "\fBi\fR" 4
+.IX Item "i"
+Insert new files \fIbefore\fR an existing member of the
+archive.  If you use the modifier \fBi\fR, the name of an existing archive
+member must be present as the \fIrelpos\fR argument, before the
+\&\fIarchive\fR specification.  (same as \fBb\fR).
+.IP "\fBl\fR" 4
+.IX Item "l"
+This modifier is accepted but not used.
+.IP "\fBN\fR" 4
+.IX Item "N"
+Uses the \fIcount\fR parameter.  This is used if there are multiple
+entries in the archive with the same name.  Extract or delete instance
+\&\fIcount\fR of the given name from the archive.
+.IP "\fBo\fR" 4
+.IX Item "o"
+Preserve the \fIoriginal\fR dates of members when extracting them.  If
+you do not specify this modifier, files extracted from the archive
+are stamped with the time of extraction.
+.IP "\fBP\fR" 4
+.IX Item "P"
+Use the full path name when matching names in the archive.  \s-1GNU\s0
+\&\fBar\fR can not create an archive with a full path name (such archives
+are not \s-1POSIX\s0 complaint), but other archive creators can.  This option
+will cause \s-1GNU\s0 \fBar\fR to match file names using a complete path
+name, which can be convenient when extracting a single file from an
+archive created by another tool.
+.IP "\fBs\fR" 4
+.IX Item "s"
+Write an object-file index into the archive, or update an existing one,
+even if no other change is made to the archive.  You may use this modifier
+flag either with any operation, or alone.  Running \fBar s\fR on an
+archive is equivalent to running \fBranlib\fR on it.
+.IP "\fBS\fR" 4
+.IX Item "S"
+Do not generate an archive symbol table.  This can speed up building a
+large library in several steps.  The resulting archive can not be used
+with the linker.  In order to build a symbol table, you must omit the
+\&\fBS\fR modifier on the last execution of \fBar\fR, or you must run
+\&\fBranlib\fR on the archive.
+.IP "\fBu\fR" 4
+.IX Item "u"
+Normally, \fBar r\fR... inserts all files
+listed into the archive.  If you would like to insert \fIonly\fR those
+of the files you list that are newer than existing members of the same
+names, use this modifier.  The \fBu\fR modifier is allowed only for the
+operation \fBr\fR (replace).  In particular, the combination \fBqu\fR is
+not allowed, since checking the timestamps would lose any speed
+advantage from the operation \fBq\fR.
+.IP "\fBv\fR" 4
+.IX Item "v"
+This modifier requests the \fIverbose\fR version of an operation.  Many
+operations display additional information, such as filenames processed,
+when the modifier \fBv\fR is appended.
+.IP "\fBV\fR" 4
+.IX Item "V"
+This modifier shows the version number of \fBar\fR.
+.PP
+\&\fBar\fR ignores an initial option spelt \fB\-X32_64\fR, for
+compatibility with \s-1AIX\s0.  The behaviour produced by this option is the
+default for \s-1GNU\s0 \fBar\fR.  \fBar\fR does not support any of the other
+\&\fB\-X\fR options; in particular, it does not support \fB\-X32\fR
+which is the default for \s-1AIX\s0 \fBar\fR.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fInm\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
+2001, 2002, 2003 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, with no Front-Cover Texts, and with no
+Back-Cover Texts.  A copy of the license is included in the
+section entitled ``\s-1GNU\s0 Free Documentation License''.
diff --git a/raw/man1/arch.1 b/raw/man1/arch.1
new file mode 100644
index 0000000..3eaf4f3
--- /dev/null
+++ b/raw/man1/arch.1
@@ -0,0 +1,34 @@
+.\" arch.1 -- 
+.\" Copyright 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" Public domain: may be freely distributed.
+.TH ARCH 1 "4 July 1997" "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+arch \- print machine architecture
+.SH SYNOPSIS
+.B arch
+.SH DESCRIPTION
+.B arch
+is equivalent to
+.BR "uname -m" .
+
+On current Linux systems,
+.B arch
+prints things such as "i386", "i486", "i586", "alpha", "sparc",
+"arm", "m68k", "mips", "ppc".
+.SH SEE ALSO
+.BR uname (1),
+.BR uname (2)
+.\"
+.\" Details:
+.\" arch prints the machine part of the system_utsname struct
+.\" This struct is defined in version.c, and this field is
+.\" initialized with UTS_MACHINE, which is defined as $ARCH
+.\" in the main Makefile.
+.\" That gives the possibilities 
+.\" alpha    arm      i386     m68k     mips     ppc      sparc    sparc64
+.\"
+.\" If Makefile is not edited, ARCH is guessed by
+.\" ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/)
+.\" Then how come we get these i586 values?
+.\" Well, the routine check_bugs() does system_utsname.machine[1] = '0' + x86;
+.\" (called in init/main.c, defined in ./include/asm-i386/bugs.h)
diff --git a/raw/man1/at.1 b/raw/man1/at.1
new file mode 100644
index 0000000..4e37dc9
--- /dev/null
+++ b/raw/man1/at.1
@@ -0,0 +1,285 @@
+.TH AT 1 "Nov 1996" local "Linux Programmer's Manual"
+.SH NAME
+at, batch, atq, atrm \- queue, examine or delete jobs for later execution
+.SH SYNOPSIS
+.B at
+.RB [ -V ]
+.RB [ -q 
+.IR queue ]
+.RB [ -f
+.IR file ]
+.RB [ -mldbv ]
+.B TIME
+.br
+.B "at -c"
+.I job
+.RI [ job... ]
+.br
+.B atq
+.RB [ -V ]
+.RB [ -q
+.IR queue ]
+.br
+.B atrm
+.RB [ -V ]
+.I job
+.RI [ job... ]
+.br
+.B batch
+.RB [ -V ]
+.RB [ -q
+.IR queue ]
+.RB [ -f
+.IR file ]
+.RB [ -mv ]
+.RB [ TIME ]
+.SH DESCRIPTION
+.B at
+and
+.B batch
+read commands from standard input or a specified file which are to
+be executed at a later time, using the shell set by the user's environment
+variable
+.BR SHELL
+or
+.BR /bin/sh .
+.TP 8
+.BR at
+executes commands at a specified time.
+.TP 8
+.BR atq
+lists the user's pending jobs, unless the user is the superuser; in that
+case, everybody's jobs are listed.  The format of the output lines (one
+for each job) is: Job number, date, hour, job class.
+.TP 8
+.BR atrm
+deletes jobs, identified by their job number.
+.TP 8
+.BR batch
+executes commands when system load levels permit; in other words, when the load average
+drops below 0.8, or the value specified in the invocation of
+.BR atrun .
+.PP
+.B At
+allows fairly complex time
+specifications, extending the POSIX.2 standard.  It accepts times
+of the form 
+.B HH:MM
+to run a job at a specific time of day.
+(If that time is already past, the next day is assumed.)
+You may also specify
+.B midnight,
+.B noon,
+or
+.B teatime
+(4pm)
+and you can have a time-of-day suffixed with
+.B AM
+or
+.B PM
+for running in the morning or the evening.
+You can also say what day the job will be run,
+by giving a date in the form
+.B month-name
+.B day
+with an optional
+.B year,
+or giving a date of the form
+.B MMDDYY
+or
+.B MM/DD/YY
+or
+.B DD.MM.YY.
+The specification of a date
+.I must
+follow the specification of the time of day.
+You can also give times like
+.B now
+.B \+
+.I count
+.I time-units,
+where the time-units can be
+.B minutes,
+.B hours,
+.B days,
+or
+.B weeks
+and you can tell
+.B at
+to run the job today by suffixing the time with
+.B today
+and to run the job tomorrow by suffixing the time with
+.B tomorrow.
+.PP
+For example, to run a job at 4pm three days from now, you would do
+.B at 4pm + 3 days,
+to run a job at 10:00am on July 31, you would do
+.B at 10am Jul 31
+and to run a job at 1am tomorrow, you would do
+.B at 1am tomorrow.
+.PP
+The exact definition of the time specification can be found in
+.IR /usr/share/doc/at-3.1.8/timespec .
+.PP
+For both
+.BR at " and " batch ,
+commands are read from standard input or the file specified
+with the
+.B -f
+option and executed.
+The working directory, the environment (except for the variables
+.BR TERM ,
+.BR DISPLAY
+and
+.BR _ )
+and the umask are retained from the time of invocation.
+An
+.BR "at " \-
+or
+.BR "batch "\-
+command invoked from a 
+.B su(1)
+shell will retain the current userid.
+The user will be mailed standard error and standard output from his
+commands, if any.
+Mail will be sent using the command
+.BR /usr/sbin/sendmail .
+If
+.B at
+is executed from a 
+.B su(1)
+shell, the owner of the login shell will receive the mail.
+.PP
+The superuser may use these commands in any case.
+For other users, permission to use at is determined by the files
+.I /etc/at.allow
+and
+.IR /etc/at.deny .
+.PP
+If the file
+.I /etc/at.allow
+exists, only usernames mentioned in it are allowed to use
+.BR at .
+.PP
+If
+.I /etc/at.allow
+does not exist,
+.I /etc/at.deny
+is checked, every username not mentioned in it is then allowed
+to use
+.BR at .
+.PP
+If neither exists, only the superuser is allowed use of at.
+.PP
+An empty 
+.I /etc/at.deny
+means that every user is allowed use these commands, this is the
+default configuration.
+.SH OPTIONS
+.TP 8
+.B -V
+prints the version number to standard error.
+.TP 8
+.BI \-q " queue"
+uses the specified queue.
+A queue designation consists of a single letter; valid queue designations
+range from
+.B a
+to 
+.BR z .
+and
+.B A
+to
+.BR Z .
+The
+.B a
+queue is the default for
+.B at
+and the
+.B b
+queue for
+.BR batch .
+Queues with higher letters run with increased niceness.  The special
+queue "=" is reserved for jobs which are currently running.
+.P
+If a job is submitted to a queue designated with an uppercase letter, it
+is treated as if it had been submitted to batch at that time.
+If
+.BR atq
+is given a specific queue, it will only show jobs pending in that queue.
+.TP 8
+.B \-m
+Send mail to the user when the job has completed even if there was no
+output.
+.TP 8
+.BI \-f " file"
+Reads the job from
+.BI file
+rather than standard input.
+.TP 8
+.B \-l
+Is an alias for
+.B atq.
+.TP
+.B \-d
+Is an alias for
+.B atrm.
+.TP
+.TP
+.B \-v
+Shows the time the job will be executed.
+.P
+Times displayed will be in the format "1997-02-20 14:50" unless the
+environment variable
+.B POSIXLY_CORRECT 
+is set; then, it will be "Thu Feb 20 14:50:00 1996".
+.TP
+.B
+\-c
+cats the jobs listed on the command line to standard output.
+.SH FILES
+.I /var/spool/at
+.br
+.I /var/spool/at/spool
+.br
+.I /proc/loadavg
+.br
+.I /var/run/utmp
+.br
+.I /etc/at.allow
+.br
+.I /etc/at.deny
+.SH SEE ALSO
+.BR cron (1),
+.BR nice (1),
+.BR sh (1),
+.BR umask (2),
+.BR atd (8).
+.SH BUGS
+The correct operation of
+.B batch
+for Linux depends on the presence of a
+.IR proc -
+type directory mounted on
+.IR /proc .
+.PP
+If the file
+.I /var/run/utmp
+is not available or corrupted, or if the user is not logged on at the
+time 
+.B at
+is invoked, the mail is sent to the userid found
+in the environment variable
+.BR LOGNAME .
+If that is undefined or empty, the current userid is assumed.
+.PP
+.B At
+and
+.B batch
+as presently implemented are not suitable when users are competing for
+resources.
+If this is the case for your site, you might want to consider another
+batch system, such as
+.BR nqs .
+.SH AUTHOR
+At was mostly written by Thomas Koenig, ig25 at rz.uni-karlsruhe.de.
diff --git a/raw/man1/basename.1 b/raw/man1/basename.1
new file mode 100644
index 0000000..3c33cb0
--- /dev/null
+++ b/raw/man1/basename.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH BASENAME "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+basename \- strip directory and suffix from filenames
+.SH SYNOPSIS
+.B basename
+\fINAME \fR[\fISUFFIX\fR]
+.br
+.B basename
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print NAME with any leading directory components removed.
+If specified, also remove a trailing SUFFIX.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by FIXME unknown.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B basename
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B basename
+programs are properly installed at your site, the command
+.IP
+.B info basename
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/bash.1 b/raw/man1/bash.1
new file mode 100644
index 0000000..e07a9f6
--- /dev/null
+++ b/raw/man1/bash.1
@@ -0,0 +1,8368 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\"	Chet Ramey
+.\"	Information Network Services
+.\"	Case Western Reserve University
+.\"	chet at ins.CWRU.Edu
+.\"
+.\"	Last Change: Mon Jul 15 15:20:56 EDT 2002
+.\"
+.\" bash_builtins, strip all but Built-Ins section
+.if \n(zZ=1 .ig zZ
+.if \n(zY=1 .ig zY
+.TH BASH 1 "2002 July 15" "GNU Bash-2.05b"
+.\"
+.\" There's some problem with having a `@'
+.\" in a tagged paragraph with the BSD man macros.
+.\" It has to do with `@' appearing in the }1 macro.
+.\" This is a problem on 4.3 BSD and Ultrix, but Sun
+.\" appears to have fixed it.
+.\" If you're seeing the characters
+.\" `@u-3p' appearing before the lines reading
+.\" `possible-hostname-completions
+.\" and `complete-hostname' down in READLINE,
+.\" then uncomment this redefinition.
+.\"
+.de }1
+.ds ]X \&\\*(]B\\
+.nr )E 0
+.if !"\\$1"" .nr )I \\$1n
+.}f
+.ll \\n(LLu
+.in \\n()Ru+\\n(INu+\\n()Iu
+.ti \\n(INu
+.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X
+.br\}
+.el \\*(]X\h|\\n()Iu+\\n()Ru\c
+.}f
+..
+.\"
+.\" File Name macro.  This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+bash \- GNU Bourne-Again SHell
+.SH SYNOPSIS
+.B bash
+[options]
+[file]
+.SH COPYRIGHT
+.if n Bash is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+.B Bash
+is an \fBsh\fR-compatible command language interpreter that
+executes commands read from the standard input or from a file.
+.B Bash
+also incorporates useful features from the \fIKorn\fP and \fIC\fP
+shells (\fBksh\fP and \fBcsh\fP).
+.PP
+.B Bash
+is intended to be a conformant implementation of the IEEE
+POSIX Shell and Tools specification (IEEE Working Group 1003\.2).
+.SH OPTIONS
+In addition to the single-character shell options documented in the
+description of the \fBset\fR builtin command, \fBbash\fR
+interprets the following options when it is invoked:
+.PP
+.PD 0
+.TP 10
+.BI \-c "\| string\^"
+If the
+.B \-c
+option is present, then commands are read from
+.IR string .
+If there are arguments after the
+.IR string ,
+they are assigned to the positional parameters, starting with
+.BR $0 .
+.TP
+.B \-i
+If the
+.B \-i
+option is present, the shell is
+.IR interactive .
+.TP
+.B \-l
+Make
+.B bash
+act as if it had been invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-r
+If the
+.B \-r
+option is present, the shell becomes
+.I restricted
+(see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-s
+If the
+.B \-s
+option is present, or if no arguments remain after option
+processing, then commands are read from the standard input.
+This option allows the positional parameters to be set
+when invoking an interactive shell.
+.TP
+.B \-D
+A list of all double-quoted strings preceded by \fB$\fP
+is printed on the standard ouput.
+These are the strings that
+are subject to language translation when the current locale
+is not \fBC\fP or \fBPOSIX\fP.
+This implies the \fB\-n\fP option; no commands will be executed.
+.TP
+.B [\-+]O [\fIshopt_option\fP]
+\fIshopt_option\fP is one of the shell options accepted by the
+\fBshopt\fP builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+If \fIshopt_option\fP is present, \fB\-O\fP sets the value of that option;
+\fB+O\fP unsets it.
+If \fIshopt_option\fP is not supplied, the names and values of the shell
+options accepted by \fBshopt\fP are printed on the standard output.
+If the invocation option is \fB+O\fP, the output is displayed in a format
+that may be reused as input.
+.TP
+.B \-\-
+A
+.B \-\-
+signals the end of options and disables further option processing.
+Any arguments after the
+.B \-\-
+are treated as filenames and arguments.  An argument of
+.B \-
+is equivalent to \fB\-\-\fP.
+.PD
+.PP
+.B Bash
+also interprets a number of multi-character options.
+These options must appear on the command line before the
+single-character options to be recognized.
+.PP
+.PD 0
+.TP
+.B \-\-dump\-po\-strings
+Equivalent to \fB\-D\fP, but the output is in the GNU \fIgettext\fP
+\fBpo\fP (portable object) file format.
+.TP
+.B \-\-dump\-strings
+Equivalent to \fB\-D\fP.
+.TP
+.B \-\-help
+Display a usage message on standard output and exit successfully.
+.TP
+\fB\-\-init\-file\fP \fIfile\fP
+.PD 0
+.TP
+\fB\-\-rcfile\fP \fIfile\fP
+.PD
+Execute commands from
+.I file
+instead of the standard personal initialization file
+.I ~/.bashrc
+if the shell is interactive (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-login
+Equivalent to \fB\-l\fP.
+.TP
+.B \-\-noediting
+Do not use the GNU
+.B readline
+library to read command lines when the shell is interactive.
+.TP
+.B \-\-noprofile
+Do not read either the system-wide startup file
+.FN /etc/profile
+or any of the personal initialization files
+.IR ~/.bash_profile ,
+.IR ~/.bash_login ,
+or
+.IR ~/.profile .
+By default,
+.B bash
+reads these files when it is invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-norc
+Do not read and execute the personal initialization file
+.I ~/.bashrc
+if the shell is interactive.
+This option is on by default if the shell is invoked as
+.BR sh .
+.TP
+.B \-\-posix
+Change the behavior of \fBbash\fP where the default operation differs
+from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP).
+.TP
+.B \-\-restricted
+The shell becomes restricted (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-\-rpm-requires
+Produce the list of files that are required for the 
+shell script to run.  This implies '-n' and is subject
+to the same limitations as compile time error checking checking;
+Backticks, [] tests,  and evals are not parsed so some 
+dependencies may be missed.
+.B \-\-verbose
+Equivalent to  \fB\-v\fP.
+.TP
+.B \-\-version
+Show version information for this instance of
+.B bash
+on the standard output and exit successfully.
+.PD
+.SH ARGUMENTS
+If arguments remain after option processing, and neither the
+.B \-c
+nor the
+.B \-s
+option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands.
+If
+.B bash
+is invoked in this fashion, 
+.B $0
+is set to the name of the file, and the positional parameters
+are set to the remaining arguments.
+.B Bash
+reads and executes commands from this file, then exits.
+\fBBash\fP's exit status is the exit status of the last command
+executed in the script.
+If no commands are executed, the exit status is 0.
+An attempt is first made to open the file in the current directory, and,
+if no file is found, then the shell searches the directories in
+.SM
+.B PATH
+for the script.
+.SH INVOCATION
+A \fIlogin shell\fP is one whose first character of argument zero is a
+.BR \- ,
+or one started with the 
+.B \-\-login
+option.
+.PP
+An \fIinteractive\fP shell is one started without non-option arguments
+and without the
+.B \-c
+option
+whose standard input and output are
+both connected to terminals (as determined by
+.IR isatty (3)),
+or one started with the
+.B \-i
+option.
+.SM
+.B PS1
+is set and
+.B $\-
+includes
+.B i
+if
+.B bash
+is interactive,
+allowing a shell script or a startup file to test this state.
+.PP
+The following paragraphs describe how
+.B bash
+executes its startup files.
+If any of the files exist but cannot be read,
+.B bash
+reports an error.
+Tildes are expanded in file names as described below under
+.B "Tilde Expansion"
+in the
+.SM
+.B EXPANSION
+section.
+.PP
+When
+.B bash
+is invoked as an interactive login shell, or as a non-interactive shell
+with the \fB\-\-login\fP option, it first reads and
+executes commands from the file \fI/etc/profile\fP, if that
+file exists.
+After reading that file, it looks for \fI~/.bash_profile\fP,
+\fI~/.bash_login\fP, and \fI~/.profile\fP, in that order, and reads
+and executes commands from the first one that exists and is readable.
+The
+.B \-\-noprofile
+option may be used when the shell is started to inhibit this behavior.
+.PP
+When a login shell exits,
+.B bash
+reads and executes commands from the file \fI~/.bash_logout\fP, if it
+exists.
+.PP
+When an interactive shell that is not a login shell is started,
+.B bash
+reads and executes commands from \fI~/.bashrc\fP, if that file exists.
+This may be inhibited by using the
+.B \-\-norc
+option.
+The \fB\-\-rcfile\fP \fIfile\fP option will force
+.B bash
+to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP.
+.PP
+When
+.B bash
+is started non-interactively, to run a shell script, for example, it
+looks for the variable
+.SM
+.B BASH_ENV
+in the environment, expands its value if it appears there, and uses the
+expanded value as the name of a file to read and execute.
+.B Bash
+behaves as if the following command were executed:
+.sp .5
+.RS
+.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP
+.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
+.RE
+.sp .5
+but the value of the
+.SM
+.B PATH
+variable is not used to search for the file name.
+.PP
+If
+.B bash
+is invoked with the name
+.BR sh ,
+it tries to mimic the startup behavior of historical versions of
+.B sh
+as closely as possible,
+while conforming to the POSIX standard as well.
+When invoked as an interactive login shell, or a non-interactive
+shell with the \fB\-\-login\fP option, it first attempts to
+read and execute commands from
+.I /etc/profile
+and
+.IR ~/.profile ,
+in that order.
+The
+.B \-\-noprofile
+option may be used to inhibit this behavior.
+When invoked as an interactive shell with the name
+.BR sh ,
+.B bash
+looks for the variable
+.SM
+.BR ENV ,
+expands its value if it is defined, and uses the
+expanded value as the name of a file to read and execute.
+Since a shell invoked as
+.B sh
+does not attempt to read and execute commands from any other startup
+files, the
+.B \-\-rcfile
+option has no effect.
+A non-interactive shell invoked with the name
+.B sh
+does not attempt to read any other startup files. 
+When invoked as
+.BR sh ,
+.B bash
+enters
+.I posix
+mode after the startup files are read.
+.PP
+When
+.B bash
+is started in
+.I posix
+mode, as with the
+.B \-\-posix
+command line option, it follows the POSIX standard for startup files.
+In this mode, interactive shells expand the
+.SM
+.B ENV
+variable and commands are read and executed from the file
+whose name is the expanded value.
+No other startup files are read.
+.PP
+.B Bash
+attempts to determine when it is being run by the remote shell
+daemon, usually \fIrshd\fP.
+If
+.B bash
+determines it is being run by \fIrshd\fP, it reads and executes
+commands from \fI~/.bashrc\fP, if that file exists and is readable.
+It will not do this if invoked as \fBsh\fP.
+The
+.B \-\-norc
+option may be used to inhibit this behavior, and the
+.B \-\-rcfile
+option may be used to force another file to be read, but
+\fIrshd\fP does not generally invoke the shell with those options
+or allow them to be specified.
+.PP
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, no startup
+files are read, shell functions are not inherited from the environment, the
+.SM
+.B SHELLOPTS
+variable, if it appears in the environment, is ignored,
+and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at invocation, the startup behavior is
+the same, but the effective user id is not reset.
+.SH DEFINITIONS
+.PP
+The following definitions are used throughout the rest of this
+document.
+.PD 0
+.TP
+.B blank 
+A space or tab.
+.TP
+.B word
+A sequence of characters considered as a single unit by the shell.
+Also known as a
+.BR token .
+.TP
+.B name
+A 
+.I word
+consisting only of alphanumeric characters and underscores, and
+beginning with an alphabetic character or an underscore.  Also
+referred to as an
+.BR identifier .
+.TP
+.B metacharacter
+A character that, when unquoted, separates words.  One of the following:
+.br
+.RS
+.PP
+.if t \fB|  &  ;  (  )  <  >  space  tab\fP
+.if n \fB|  & ; ( ) < > space tab\fP
+.RE
+.PP
+.TP
+.B control operator
+A \fItoken\fP that performs a control function.  It is one of the following
+symbols:
+.RS
+.PP
+.if t \fB\(bv\(bv  &  &&  ;  ;;  (  )  |  <newline>\fP
+.if n \fB|| & && ; ;; ( ) | <newline>\fP
+.RE
+.PD
+.SH "RESERVED WORDS"
+\fIReserved words\fP are words that have a special meaning to the shell.
+The following words are recognized as reserved when unquoted and either
+the first word of a simple command (see
+.SM
+.B SHELL GRAMMAR
+below) or the third word of a 
+.B case 
+or
+.B for
+command:
+.if t .RS
+.PP
+.B
+.if n ! case  do done elif else esac fi for function if in select then until while { } time [[ ]]
+.if t !    case    do    done    elif    else    esac    fi    for    function    if    in    select    then    until    while    {    }    time    [[    ]]
+.if t .RE
+.RE
+.SH "SHELL GRAMMAR"
+.SS Simple Commands
+.PP
+A \fIsimple command\fP is a sequence of optional variable assignments
+followed by \fBblank\fP-separated words and redirections, and
+terminated by a \fIcontrol operator\fP.  The first word
+specifies the command to be executed, and is passed as argument zero.
+The remaining words are passed as arguments to the invoked command.
+.PP
+The return value of a \fIsimple command\fP is its exit status, or
+128+\fIn\^\fP if the command is terminated by signal
+.IR n .
+.SS Pipelines
+.PP
+A \fIpipeline\fP is a sequence of one or more commands separated by
+the character
+.BR | .
+The format for a pipeline is:
+.RS
+.PP
+[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ \fB|\fP \fIcommand2\fP ... ]
+.RE
+.PP
+The standard output of
+.I command
+is connected via a pipe to the standard input of
+.IR command2 .
+This connection is performed before any redirections specified by the
+command (see
+.SM
+.B REDIRECTION
+below).
+.PP
+If the reserved word
+.B !
+precedes a pipeline, the exit status of that
+pipeline is the logical NOT of the exit status of the last command.
+Otherwise, the status of the pipeline is the exit status of the last
+command.
+The shell waits for all commands in the pipeline to
+terminate before returning a value.
+.PP
+If the
+.B time
+reserved word precedes a pipeline, the elapsed as well as user and
+system time consumed by its execution are reported when the pipeline
+terminates.
+The \fB\-p\fP option changes the output format to that specified by POSIX.
+The
+.SM
+.B TIMEFORMAT
+variable may be set to a format string that specifies how the timing
+information should be displayed; see the description of
+.SM
+.B TIMEFORMAT
+under
+.B "Shell Variables"
+below.
+.PP
+Each command in a pipeline is executed as a separate process (i.e., in a
+subshell).
+.SS Lists
+.PP
+A \fIlist\fP is a sequence of one or more pipelines separated by one
+of the operators
+.BR ; ,
+.BR & ,
+.BR && ,
+or
+.BR \(bv\(bv ,
+and optionally terminated by one of
+.BR ; ,
+.BR & ,
+or
+.BR <newline> .
+.PP
+Of these list operators,
+.B &&
+and
+.B \(bv\(bv
+have equal precedence, followed by
+.B ;
+and
+.BR &,
+which have equal precedence.
+.PP
+A sequence of one or more newlines may appear in a \fIlist\fP instead
+of a semicolon to delimit commands.
+.PP
+If a command is terminated by the control operator
+.BR & ,
+the shell executes the command in the \fIbackground\fP
+in a subshell.  The shell does not wait for the command to
+finish, and the return status is 0.  Commands separated by a
+.B ;
+are executed sequentially; the shell waits for each
+command to terminate in turn.  The return status is the
+exit status of the last command executed.
+.PP
+The control operators
+.B &&
+and
+.B \(bv\(bv
+denote AND lists and OR lists, respectively.
+An AND list has the form
+.RS
+.PP
+\fIcommand1\fP \fB&&\fP \fIcommand2\fP
+.RE
+.PP
+.I command2
+is executed if, and only if,
+.I command1
+returns an exit status of zero.
+.PP
+An OR list has the form
+.RS
+.PP
+\fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP
+.PP
+.RE
+.PP
+.I command2
+is executed if and only if
+.I command1
+returns a non-zero exit status.  The return status of
+AND and OR lists is the exit status of the last command
+executed in the list.
+.SS Compound Commands
+.PP
+A \fIcompound command\fP is one of the following:
+.TP
+(\fIlist\fP)
+\fIlist\fP is executed in a subshell.  Variable assignments and builtin
+commands that affect the shell's environment do not remain in effect
+after the command completes.  The return status is the exit status of
+\fIlist\fP.
+.TP
+{ \fIlist\fP; }
+\fIlist\fP is simply executed in the current shell environment.
+\fIlist\fP must be terminated with a newline or semicolon.
+This is known as a \fIgroup command\fP.
+The return status is the exit status of
+\fIlist\fP.
+Note that unlike the metacharacters \fB(\fP and \fB\)\fP, \fB{\fP and
+\fB}\fP are \fIreserved words\fP and must occur where a reserved
+word is permitted to be recognized.  Since they do not cause a word
+break, they must be separated from \fIlist\fP by whitespace.
+.TP
+((\fIexpression\fP))
+The \fIexpression\fP is evaluated according to the rules described
+below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If the value of the expression is non-zero, the return status is 0;
+otherwise the return status is 1.  This is exactly equivalent to
+\fBlet "\fIexpression\fP"\fR.
+.TP
+\fB[[\fP \fIexpression\fP \fB]]\fP
+Return a status of 0 or 1 depending on the evaluation of
+the conditional expression \fIexpression\fP.
+Expressions are composed of the primaries described below under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+Word splitting and pathname expansion are not performed on the words
+between the \fB[[\fP and \fB]]\fP; tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal are performed.
+.if t .sp 0.5
+.if n .sp 1
+When the \fB==\fP and \fB!=\fP operators are used, the string to the
+right of the operator is considered a pattern and matched according
+to the rules described below under \fBPattern Matching\fP.
+The return value is 0 if the string matches or does not match
+the pattern, respectively, and 1 otherwise.
+Any part of the pattern may be quoted to force it to be matched as a
+string.
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence:
+.if t .sp 0.5
+.if n .sp 1
+.RS
+.PD 0
+.TP
+.B ( \fIexpression\fP )
+Returns the value of \fIexpression\fP.
+This may be used to override the normal precedence of operators.
+.TP
+.B ! \fIexpression\fP
+True if
+.I expression
+is false.
+.TP
+\fIexpression1\fP \fB&&\fP \fIexpression2\fP
+True if both
+.I expression1
+and
+.I expression2
+are true.
+.TP
+.if t \fIexpression1\fP \fB\(bv\(bv\fP \fIexpression2\fP
+.if n \fIexpression1\fP \fB||\fP \fIexpression2\fP
+True if either
+.I expression1
+or
+.I expression2
+is true.
+.PD
+.LP
+The \fB&&\fP and
+.if t \fB\(bv\(bv\fP
+.if n \fB||\fP
+operators do not evaluate \fIexpression2\fP if the value of
+\fIexpression1\fP is sufficient to determine the return value of
+the entire conditional expression.
+.RE
+.TP
+\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.
+The variable \fIname\fP is set to each element of this list
+in turn, and \fIlist\fP is executed each time.
+If the \fBin\fP \fIword\fP is omitted, the \fBfor\fP command executes
+\fIlist\fP once for each positional parameter that is set (see
+.SM
+.B PARAMETERS
+below).
+The return status is the exit status of the last command that executes.
+If the expansion of the items following \fBin\fP results in an empty
+list, no commands are executed, and the return status is 0.
+.TP
+\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+First, the arithmetic expression \fIexpr1\fP is evaluated according
+to the rules described below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+The arithmetic expression \fIexpr2\fP is then evaluated repeatedly
+until it evaluates to zero.
+Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is
+executed and the arithmetic expression \fIexpr3\fP is evaluated.
+If any expression is omitted, it behaves as if it evaluates to 1.
+The return value is the exit status of the last command in \fIlist\fP
+that is executed, or false if any of the expressions is invalid.
+.TP
+\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.  The set of expanded words is printed on the standard
+error, each preceded by a number.  If the \fBin\fP
+\fIword\fP is omitted, the positional parameters are printed (see
+.SM
+.B PARAMETERS
+below).  The
+.B PS3
+prompt is then displayed and a line read from the standard input.
+If the line consists of a number corresponding to one of
+the displayed words, then the value of
+.I name
+is set to that word.  If the line is empty, the words and prompt
+are displayed again.  If EOF is read, the command completes.  Any
+other value read causes
+.I name
+to be set to null.  The line read is saved in the variable
+.BR REPLY .
+The
+.I list
+is executed after each selection until a
+.B break
+command is executed.
+The exit status of
+.B select
+is the exit status of the last command executed in
+.IR list ,
+or zero if no commands were executed.
+.TP
+\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \
+... ) \fIlist\fP ;; ] ... \fBesac\fP
+A \fBcase\fP command first expands \fIword\fP, and tries to match
+it against each \fIpattern\fP in turn, using the same matching rules
+as for pathname expansion (see
+.B Pathname Expansion
+below).  When a match is found, the
+corresponding \fIlist\fP is executed.  After the first match, no
+subsequent matches are attempted.  The exit status is zero if no
+pattern matches.  Otherwise, it is the exit status of the
+last command executed in \fIlist\fP.
+.TP
+\fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP \
+[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \
+[ \fBelse\fP \fIlist\fP; ] \fBfi\fP
+The
+.B if 
+.I list
+is executed.  If its exit status is zero, the
+\fBthen\fP \fIlist\fP is executed.  Otherwise, each \fBelif\fP
+\fIlist\fP is executed in turn, and if its exit status is zero,
+the corresponding \fBthen\fP \fIlist\fP is executed and the
+command completes.  Otherwise, the \fBelse\fP \fIlist\fP is
+executed, if present.  The exit status is the exit status of the
+last command executed, or zero if no condition tested true.
+.TP
+\fBwhile\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD 0
+.TP
+\fBuntil\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD
+The \fBwhile\fP command continuously executes the \fBdo\fP
+\fIlist\fP as long as the last command in \fIlist\fP returns
+an exit status of zero.  The \fBuntil\fP command is identical
+to the \fBwhile\fP command, except that the test is negated;
+the
+.B do
+.I list
+is executed as long as the last command in
+.I list
+returns a non-zero exit status.
+The exit status of the \fBwhile\fP and \fBuntil\fP commands
+is the exit status
+of the last \fBdo\fP \fIlist\fP command executed, or zero if
+none was executed.
+.TP
+[ \fBfunction\fP ] \fIname\fP () { \fIlist\fP; }
+This defines a function named \fIname\fP.  The \fIbody\fP of the
+function is the
+.I list
+of commands between { and }.  This list
+is executed whenever \fIname\fP is specified as the
+name of a simple command.  The exit status of a function is
+the exit status of the last command executed in the body.  (See
+.SM
+.B FUNCTIONS
+below.)
+.SH COMMENTS
+In a non-interactive shell, or an interactive shell in which the
+.B interactive_comments
+option to the
+.B shopt
+builtin is enabled (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), a word beginning with
+.B #
+causes that word and all remaining characters on that line to
+be ignored.  An interactive shell without the
+.B interactive_comments
+option enabled does not allow comments.  The
+.B interactive_comments
+option is on by default in interactive shells.
+.SH QUOTING
+\fIQuoting\fP is used to remove the special meaning of certain
+characters or words to the shell.  Quoting can be used to 
+disable special treatment for special characters, to prevent
+reserved words from being recognized as such, and to prevent
+parameter expansion.
+.PP
+Each of the \fImetacharacters\fP listed above under
+.SM
+.B DEFINITIONS
+has special meaning to the shell and must be quoted if it is to
+represent itself.
+.PP
+When the command history expansion facilities are being used, the
+\fIhistory expansion\fP character, usually \fB!\fP, must be quoted
+to prevent history expansion.
+.PP
+There are three quoting mechanisms: the
+.IR "escape character" ,
+single quotes, and double quotes.
+.PP
+A non-quoted backslash (\fB\e\fP) is the
+.IR "escape character" .
+It preserves the literal value of the next character that follows,
+with the exception of <newline>.  If a \fB\e\fP<newline> pair
+appears, and the backslash is not itself quoted, the \fB\e\fP<newline>
+is treated as a line continuation (that is, it is removed from the
+input stream and effectively ignored).
+.PP
+Enclosing characters in single quotes preserves the literal value
+of each character within the quotes.  A single quote may not occur
+between single quotes, even when preceded by a backslash.
+.PP
+Enclosing characters in double quotes preserves the literal value
+of all characters within the quotes, with the exception of
+.BR $ ,
+.BR ` ,
+and
+.BR \e .
+The characters
+.B $
+and
+.B `
+retain their special meaning within double quotes.  The backslash
+retains its special meaning only when followed by one of the following
+characters:
+.BR $ ,
+.BR ` ,
+\^\fB"\fP\^,
+.BR \e ,
+or
+.BR <newline> .
+A double quote may be quoted within double quotes by preceding it with
+a backslash.
+.PP
+The special parameters
+.B *
+and
+.B @
+have special meaning when in double
+quotes (see
+.SM
+.B PARAMETERS
+below).
+.PP
+Words of the form \fB$\fP'\fIstring\fP' are treated specially.  The
+word expands to \fIstring\fP, with backslash-escaped characters replaced
+as specifed by the ANSI C standard.  Backslash escape sequences, if
+present, are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ee
+an escape character
+.TP   
+.B \ef
+form feed
+.TP  
+.B \en
+new line
+.TP     
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP   
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e'
+single quote
+.TP   
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.TP
+.B \ec\fIx\fP
+a control-\fIx\fP character
+.PD
+.RE
+.LP
+The expanded result is single-quoted, as if the dollar sign had
+not been present.
+.PP
+A double-quoted string preceded by a dollar sign (\fB$\fP) will cause
+the string to be translated according to the current locale.
+If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign
+is ignored.
+If the string is translated and replaced, the replacement is
+double-quoted.
+.SH PARAMETERS
+A
+.I parameter
+is an entity that stores values.
+It can be a
+.IR name ,
+a number, or one of the special characters listed below under
+.BR "Special Parameters" .
+For the shell's purposes, a
+.I variable
+is a parameter denoted by a
+.IR name .
+A variable has a \fIvalue\fP and zero or more \fIattributes\fP.
+Attributes are assigned using the
+.B declare
+builtin command (see
+.B declare
+below in
+.SM
+.BR "SHELL BUILTIN COMMANDS" ).
+.PP
+A parameter is set if it has been assigned a value.  The null string is
+a valid value.  Once a variable is set, it may be unset only by using
+the
+.B unset
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.PP
+A
+.I variable
+may be assigned to by a statement of the form
+.RS
+.PP
+\fIname\fP=[\fIvalue\fP]
+.RE
+.PP
+If
+.I value
+is not given, the variable is assigned the null string.  All
+.I values
+undergo tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote
+removal (see
+.SM
+.B EXPANSION
+below).  If the variable has its
+.B integer
+attribute set, then
+.I value
+is subject to arithmetic expansion even if the $((...)) expansion is
+not used (see
+.B "Arithmetic Expansion"
+below).
+Word splitting is not performed, with the exception
+of \fB"$@"\fP as explained below under
+.BR "Special Parameters" .
+Pathname expansion is not performed.
+Assignment statements may also appear as arguments to the
+.BR declare ,
+.BR typeset ,
+.BR export ,
+.BR readonly ,
+and
+.B local
+builtin commands.
+.SS Positional Parameters
+.PP
+A
+.I positional parameter
+is a parameter denoted by one or more
+digits, other than the single digit 0.  Positional parameters are
+assigned from the shell's arguments when it is invoked,
+and may be reassigned using the
+.B set
+builtin command.  Positional parameters may not be assigned to
+with assignment statements.  The positional parameters are
+temporarily replaced when a shell function is executed (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+When a positional parameter consisting of more than a single
+digit is expanded, it must be enclosed in braces (see
+.SM
+.B EXPANSION
+below).
+.SS Special Parameters
+.PP
+The shell treats several parameters specially.  These parameters may
+only be referenced; assignment to them is not allowed.
+.PD 0
+.TP
+.B *
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, it expands to a single word
+with the value of each parameter separated by the first character
+of the 
+.SM
+.B IFS
+special variable.  That is, "\fB$*\fP" is equivalent
+to "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", where
+.I c
+is the first character of the value of the
+.SM
+.B IFS
+variable.  If
+.SM
+.B IFS
+is unset, the parameters are separated by spaces.
+If
+.SM
+.B IFS
+is null, the parameters are joined without intervening separators.
+.TP
+.B @
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, each parameter expands to a
+separate word.  That is, "\fB$@\fP" is equivalent to
+"\fB$1\fP" "\fB$2\fP" ...
+When there are no positional parameters, "\fB$@\fP" and 
+.B $@
+expand to nothing (i.e., they are removed).
+.TP
+.B #
+Expands to the number of positional parameters in decimal.
+.TP
+.B ?
+Expands to the status of the most recently executed foreground
+pipeline.
+.TP
+.B \-
+Expands to the current option flags as specified upon invocation, 
+by the
+.B set
+builtin command, or those set by the shell itself
+(such as the
+.B \-i
+option).
+.TP
+.B $
+Expands to the process ID of the shell.  In a () subshell, it
+expands to the process ID of the current shell, not the
+subshell.
+.TP
+.B !
+Expands to the process ID of the most recently executed background
+(asynchronous) command.
+.TP
+.B 0
+Expands to the name of the shell or shell script.  This is set at
+shell initialization.  If
+.B bash
+is invoked with a file of commands,
+.B $0
+is set to the name of that file.  If
+.B bash
+is started with the
+.B \-c
+option, then
+.B $0
+is set to the first argument after the string to be
+executed, if one is present.  Otherwise, it is set
+to the file name used to invoke
+.BR bash ,
+as given by argument zero.
+.TP
+.B _
+At shell startup, set to the absolute file name of the shell or shell
+script being executed as passed in the argument list.
+Subsequently, expands to the last argument to the previous command,
+after expansion.
+Also set to the full file name of each command executed and placed in
+the environment exported to that command.
+When checking mail, this parameter holds the name of the mail file
+currently being checked.
+.PD
+.SS Shell Variables
+.PP
+The following variables are set by the shell:
+.PP
+.PD 0
+.TP
+.B BASH
+Expands to the full file name used to invoke this instance of
+.BR bash .
+.TP
+.B BASH_VERSINFO
+A readonly array variable whose members hold version information for
+this instance of
+.BR bash .
+The values assigned to the array members are as follows:
+.sp .5
+.RS
+.PD 0
+.TP 24
+.B BASH_VERSINFO[\fR0\fP]
+The major version number (the \fIrelease\fP).
+.TP
+.B BASH_VERSINFO[\fR1\fP]
+The minor version number (the \fIversion\fP).
+.TP
+.B BASH_VERSINFO[\fR2\fP]
+The patch level.
+.TP
+.B BASH_VERSINFO[\fR3\fP]
+The build version.
+.TP
+.B BASH_VERSINFO[\fR4\fP]
+The release status (e.g., \fIbeta1\fP).
+.TP
+.B BASH_VERSINFO[\fR5\fP]
+The value of \fBMACHTYPE\fP.
+.PD
+.RE
+.TP
+.B BASH_VERSION
+Expands to a string describing the version of this instance of
+.BR bash .
+.TP
+.B COMP_CWORD
+An index into \fB${COMP_WORDS}\fP of the word containing the current
+cursor position.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_LINE
+The current command line.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_POINT
+The index of the current cursor position relative to the beginning of
+the current command.
+If the current cursor position is at the end of the current command,
+the value of this variable is equal to \fB${#COMP_LINE}\fP.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_WORDS
+An array variable (see \fBArrays\fP below) consisting of the individual
+words in the current command line.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B DIRSTACK
+An array variable (see
+.B Arrays
+below) containing the current contents of the directory stack.
+Directories appear in the stack in the order they are displayed by the
+.B dirs
+builtin.
+Assigning to members of this array variable may be used to modify
+directories already in the stack, but the
+.B pushd
+and
+.B popd
+builtins must be used to add and remove directories.
+Assignment to this variable will not change the current directory.
+If
+.SM
+.B DIRSTACK
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B EUID
+Expands to the effective user ID of the current user, initialized at
+shell startup.  This variable is readonly.
+.TP
+.B FUNCNAME
+The name of any currently-executing shell function.
+This variable exists only when a shell function is executing.
+Assignments to
+.SM
+.B FUNCNAME
+have no effect and return an error status.
+If
+.SM
+.B FUNCNAME
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B GROUPS
+An array variable containing the list of groups of which the current
+user is a member.
+Assignments to    
+.SM
+.B GROUPS
+have no effect and return an error status.
+If
+.SM
+.B GROUPS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HISTCMD
+The history number, or index in the history list, of the current
+command.
+If
+.SM
+.B HISTCMD
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HOSTNAME
+Automatically set to the name of the current host.
+.TP
+.B HOSTTYPE
+Automatically set to a string that uniquely
+describes the type of machine on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B LINENO
+Each time this parameter is referenced, the shell substitutes
+a decimal number representing the current sequential line number
+(starting with 1) within a script or function.  When not in a
+script or function, the value substituted is not guaranteed to
+be meaningful.
+If
+.SM
+.B LINENO
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B MACHTYPE
+Automatically set to a string that fully describes the system
+type on which
+.B bash
+is executing, in the standard GNU \fIcpu-company-system\fP format.
+The default is system-dependent.
+.TP
+.B OLDPWD
+The previous working directory as set by the
+.B cd
+command.
+.TP
+.B OPTARG
+The value of the last option argument processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OPTIND
+The index of the next argument to be processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OSTYPE
+Automatically set to a string that
+describes the operating system on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B PIPESTATUS
+An array variable (see
+.B Arrays
+below) containing a list of exit status values from the processes
+in the most-recently-executed foreground pipeline (which may
+contain only a single command).
+.TP
+.B PPID
+The process ID of the shell's parent.  This variable is readonly.
+.TP
+.B PWD
+The current working directory as set by the
+.B cd
+command.
+.TP
+.B RANDOM
+Each time this parameter is referenced, a random integer between
+0 and 32767 is
+generated.  The sequence of random numbers may be initialized by assigning
+a value to
+.SM
+.BR RANDOM .
+If
+.SM
+.B RANDOM
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B REPLY
+Set to the line of input read by the
+.B read
+builtin command when no arguments are supplied.
+.TP
+.B SECONDS
+Each time this parameter is
+referenced, the number of seconds since shell invocation is returned.  If a
+value is assigned to 
+.SM
+.BR SECONDS ,
+the value returned upon subsequent
+references is
+the number of seconds since the assignment plus the value assigned.
+If
+.SM
+.B SECONDS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B SHELLOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).  The options appearing in
+.SM
+.B SHELLOPTS
+are those reported as
+.I on
+by \fBset \-o\fP.
+If this variable is in the environment when
+.B bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.
+This variable is read-only.
+.TP
+.B SHLVL
+Incremented by one each time an instance of
+.B bash
+is started.
+.TP
+.B UID
+Expands to the user ID of the current user, initialized at shell startup.
+This variable is readonly.
+.PD
+.PP
+The following variables are used by the shell.  In some cases,
+.B bash
+assigns a default value to a variable; these cases are noted
+below.
+.PP
+.PD 0
+.TP
+.B BASH_ENV
+If this parameter is set when \fBbash\fP is executing a shell script,
+its value is interpreted as a filename containing commands to
+initialize the shell, as in
+.IR ~/.bashrc .
+The value of
+.SM
+.B BASH_ENV
+is subjected to parameter expansion, command substitution, and arithmetic
+expansion before being interpreted as a file name.
+.SM
+.B PATH
+is not used to search for the resultant file name.
+.TP
+.B CDPATH
+The search path for the
+.B cd
+command.
+This is a colon-separated list of directories in which the shell looks
+for destination directories specified by the
+.B cd
+command.
+A sample value is
+.if t \f(CW".:~:/usr"\fP.
+.if n ".:~:/usr".
+.TP
+.B COLUMNS
+Used by the \fBselect\fP builtin command to determine the terminal width
+when printing selection lists.  Automatically set upon receipt of a SIGWINCH.
+.TP
+.B COMPREPLY
+An array variable from which \fBbash\fP reads the possible completions
+generated by a shell function invoked by the programmable completion
+facility (see \fBProgrammable Completion\fP below).
+.TP
+.B FCEDIT
+The default editor for the
+.B fc
+builtin command.
+.TP
+.B FIGNORE
+A colon-separated list of suffixes to ignore when performing
+filename completion (see
+.SM
+.B READLINE
+below).
+A filename whose suffix matches one of the entries in 
+.SM
+.B FIGNORE
+is excluded from the list of matched filenames.
+A sample value is
+.if t \f(CW".o:~"\fP.
+.if n ".o:~".
+.TP
+.B GLOBIGNORE
+A colon-separated list of patterns defining the set of filenames to
+be ignored by pathname expansion.
+If a filename matched by a pathname expansion pattern also matches one
+of the patterns in
+.SM
+.BR GLOBIGNORE ,
+it is removed from the list of matches.
+.TP
+.B HISTCONTROL
+If set to a value of
+.IR ignorespace ,
+lines which begin with a
+.B space
+character are not entered on the history list.
+If set to a value of
+.IR ignoredups ,
+lines matching the last history line are not entered.
+A value of
+.I ignoreboth
+combines the two options.
+If unset, or if set to any other value than those above,
+all lines read
+by the parser are saved on the history list, subject to the value
+of
+.BR HISTIGNORE .
+This variable's function is superseded by
+.BR HISTIGNORE .
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+.BR HISTCONTROL .
+.TP
+.B HISTFILE
+The name of the file in which command history is saved (see
+.SM
+.B HISTORY
+below).  The default value is \fI~/.bash_history\fP.  If unset, the
+command history is not saved when an interactive shell exits.
+.TP
+.B HISTFILESIZE
+The maximum number of lines contained in the history file.  When this
+variable is assigned a value, the history file is truncated, if
+necessary, to contain no more than that number of lines.  The default
+value is 500.  The history file is also truncated to this size after
+writing it when an interactive shell exits.
+.TP
+.B HISTIGNORE
+A colon-separated list of patterns used to decide which command lines
+should be saved on the history list.  Each pattern is anchored at the
+beginning of the line and must match the complete line (no implicit
+`\fB*\fP' is appended).  Each pattern is tested against the line
+after the checks specified by
+.B HISTCONTROL
+are applied.
+In addition to the normal shell pattern matching characters, `\fB&\fP'
+matches the previous history line.  `\fB&\fP' may be escaped using a
+backslash; the backslash is removed before attempting a match.
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+.BR HISTIGNORE .
+.TP
+.B HISTSIZE
+The number of commands to remember in the command history (see
+.SM
+.B HISTORY
+below).  The default value is 500.
+.TP
+.B HOME
+The home directory of the current user; the default argument for the
+\fBcd\fP builtin command.
+The value of this variable is also used when performing tilde expansion.
+.TP
+.B HOSTFILE
+Contains the name of a file in the same format as
+.FN /etc/hosts
+that should be read when the shell needs to complete a
+hostname.
+The list of possible hostname completions may be changed while the
+shell is running;
+the next time hostname completion is attempted after the
+value is changed,
+.B bash
+adds the contents of the new file to the existing list.
+If
+.SM
+.B HOSTFILE
+is set, but has no value, \fBbash\fP attempts to read
+.FN /etc/hosts
+to obtain the list of possible hostname completions.
+When
+.SM
+.B HOSTFILE
+is unset, the hostname list is cleared.
+.TP
+.B IFS
+The
+.I Internal Field Separator
+that is used
+for word splitting after expansion and to
+split lines into words with the
+.B read
+builtin command.  The default value is
+``<space><tab><newline>''.
+.TP
+.B IGNOREEOF
+Controls the
+action of an interactive shell on receipt of an
+.SM
+.B EOF
+character as the sole input.  If set, the value is the number of
+consecutive
+.SM
+.B EOF
+characters which must be
+typed as the first characters on an input line before
+.B bash
+exits.  If the variable exists but does not have a numeric value, or
+has no value, the default value is 10.  If it does not exist,
+.SM
+.B EOF
+signifies the end of input to the shell.
+.TP
+.B INPUTRC
+The filename for the
+.B readline
+startup file, overriding the default of
+.FN ~/.inputrc
+(see
+.SM
+.B READLINE
+below).
+.TP
+.B LANG
+Used to determine the locale category for any category not specifically
+selected with a variable starting with \fBLC_\fP.
+.TP
+.B LC_ALL
+This variable overrides the value of \fBLANG\fP and any other
+\fBLC_\fP variable specifying a locale category.
+.TP
+.B LC_COLLATE
+This variable determines the collation order used when sorting the
+results of pathname expansion, and determines the behavior of range
+expressions, equivalence classes, and collating sequences within
+pathname expansion and pattern matching.
+.TP
+.B LC_CTYPE
+This variable determines the interpretation of characters and the
+behavior of character classes within pathname expansion and pattern
+matching.
+.TP
+.B LC_MESSAGES
+This variable determines the locale used to translate double-quoted
+strings preceded by a \fB$\fP.
+.TP
+.B LC_NUMERIC
+This variable determines the locale category used for number formatting.
+.TP
+.B LINES
+Used by the \fBselect\fP builtin command to determine the column length
+for printing selection lists.  Automatically set upon receipt of a SIGWINCH.
+.TP
+.B MAIL
+If this parameter is set to a file name and the
+.SM
+.B MAILPATH
+variable is not set,
+.B bash
+informs the user of the arrival of mail in the specified file.
+.TP
+.B MAILCHECK
+Specifies how
+often (in seconds)
+.B bash
+checks for mail.  The default is 60 seconds.  When it is time to check
+for mail, the shell does so before displaying the primary prompt.
+If this variable is unset, or set to a value that is not a number
+greater than or equal to zero, the shell disables mail checking.
+.TP
+.B MAILPATH
+A colon-separated list of file names to be checked for mail. 
+The message to be printed when mail arrives in a particular file
+may be specified by separating the file name from the message with a `?'.
+When used in the text of the message, \fB$_\fP expands to the name of
+the current mailfile. 
+Example:
+.RS
+.PP
+\fBMAILPATH\fP='/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"'
+.PP
+.B Bash
+supplies a default value for this variable, but the location of the user
+mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP).
+.RE
+.TP
+.B OPTERR
+If set to the value 1,
+.B bash
+displays error messages generated by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SM
+.B OPTERR
+is initialized to 1 each time the shell is invoked or a shell
+script is executed.
+.TP
+.B PATH
+The search path for commands.  It
+is a colon-separated list of directories in which
+the shell looks for commands (see
+.SM
+.B COMMAND EXECUTION
+below).  The default path is system-dependent,
+and is set by the administrator who installs
+.BR bash .
+A common value is
+.if t \f(CW/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.\fP.
+.if n ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''.
+.TP
+.B POSIXLY_CORRECT
+If this variable is in the environment when \fBbash\fP starts, the shell
+enters \fIposix mode\fP before reading the startup files, as if the
+.B \-\-posix
+invocation option had been supplied.  If it is set while the shell is
+running, \fBbash\fP enables \fIposix mode\fP, as if the command
+.if t \f(CWset -o posix\fP
+.if n \fIset -o posix\fP
+had been executed.
+.TP
+.B PROMPT_COMMAND
+If set, the value is executed as a command prior to issuing each primary
+prompt.
+.TP
+.B PS1
+The value of this parameter is expanded (see
+.SM
+.B PROMPTING
+below) and used as the primary prompt string.  The default value is
+``\fB\es\-\ev\e$ \fP''.
+.TP
+.B PS2
+The value of this parameter is expanded as with
+.B PS1
+and used as the secondary prompt string.  The default is
+``\fB> \fP''.
+.TP
+.B PS3
+The value of this parameter is used as the prompt for the
+.B select
+command (see
+.SM
+.B SHELL GRAMMAR
+above).
+.TP
+.B PS4
+The value of this parameter is expanded as with
+.B PS1
+and the value is printed before each command
+.B bash
+displays during an execution trace.  The first character of
+.SM
+.B PS4
+is replicated multiple times, as necessary, to indicate multiple
+levels of indirection.  The default is ``\fB+ \fP''.
+.TP
+.B TIMEFORMAT
+The value of this parameter is used as a format string specifying
+how the timing information for pipelines prefixed with the
+.B time
+reserved word should be displayed.
+The \fB%\fP character introduces an escape sequence that is
+expanded to a time value or other information.
+The escape sequences and their meanings are as follows; the
+braces denote optional portions.
+.sp .5
+.RS
+.PD 0
+.TP 10
+.B %%
+A literal \fB%\fP.
+.TP
+.B %[\fIp\fP][l]R
+The elapsed time in seconds.
+.TP
+.B %[\fIp\fP][l]U
+The number of CPU seconds spent in user mode.
+.TP
+.B %[\fIp\fP][l]S
+The number of CPU seconds spent in system mode.
+.TP
+.B %P
+The CPU percentage, computed as (%U + %S) / %R.
+.PD
+.RE
+.IP
+The optional \fIp\fP is a digit specifying the \fIprecision\fP,
+the number of fractional digits after a decimal point.
+A value of 0 causes no decimal point or fraction to be output.
+At most three places after the decimal point may be specified;
+values of \fIp\fP greater than 3 are changed to 3.
+If \fIp\fP is not specified, the value 3 is used.
+.IP
+The optional \fBl\fP specifies a longer format, including
+minutes, of the form \fIMM\fPm\fISS\fP.\fIFF\fPs.
+The value of \fIp\fP determines whether or not the fraction is
+included.
+.IP
+If this variable is not set, \fBbash\fP acts as if it had the
+value \fB$'\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS'\fP.
+If the value is null, no timing information is displayed.
+A trailing newline is added when the format string is displayed.
+.TP
+.B TMOUT
+If set to a value greater than zero, \fBTMOUT\fP is treated as the
+default timeout for the \fBread\fP builtin.
+The \fBselect\fP command terminates if input does not arrive
+after \fBTMOUT\fP seconds when input is coming from a terminal.
+In an interactive shell, the value is interpreted as the
+number of seconds to wait for input after issuing the primary prompt.
+.B Bash
+terminates after waiting for that number of seconds if input does
+not arrive.
+.TP
+.B auto_resume
+This variable controls how the shell interacts with the user and
+job control.  If this variable is set, single word simple
+commands without redirections are treated as candidates for resumption
+of an existing stopped job.  There is no ambiguity allowed; if there is
+more than one job beginning with the string typed, the job most recently
+accessed is selected.  The
+.I name
+of a stopped job, in this context, is the command line used to
+start it.
+If set to the value
+.IR exact ,
+the string supplied must match the name of a stopped job exactly;
+if set to
+.IR substring ,
+the string supplied needs to match a substring of the name of a
+stopped job.  The
+.I substring
+value provides functionality analogous to the
+.B %?
+job identifier (see
+.SM
+.B JOB CONTROL
+below).  If set to any other value, the supplied string must
+be a prefix of a stopped job's name; this provides functionality
+analogous to the
+.B %
+job identifier.
+.TP
+.B histchars
+The two or three characters which control history expansion
+and tokenization (see
+.SM
+.B HISTORY EXPANSION
+below).  The first character is the \fIhistory expansion\fP character,
+the character which signals the start of a history
+expansion, normally `\fB!\fP'.
+The second character is the \fIquick substitution\fP
+character, which is used as shorthand for re-running the previous
+command entered, substituting one string for another in the command.
+The default is `\fB^\fP'.
+The optional third character is the character
+which indicates that the remainder of the line is a comment when found
+as the first character of a word, normally `\fB#\fP'.  The history
+comment character causes history substitution to be skipped for the
+remaining words on the line.  It does not necessarily cause the shell
+parser to treat the rest of the line as a comment.
+.PD
+.SS Arrays
+.B Bash
+provides one-dimensional array variables.  Any variable may be used as
+an array; the
+.B declare
+builtin will explicitly declare an array.  There is no maximum
+limit on the size of an array, nor any requirement that members
+be indexed or assigned contiguously.  Arrays are indexed using
+integers and are zero-based.
+.PP
+An array is created automatically if any variable is assigned to using
+the syntax \fIname\fP[\fIsubscript\fP]=\fIvalue\fP.  The
+.I subscript
+is treated as an arithmetic expression that must evaluate to a number
+greater than or equal to zero.  To explicitly declare an array, use
+.B declare \-a \fIname\fP
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.B declare \-a \fIname\fP[\fIsubscript\fP]
+is also accepted; the \fIsubscript\fP is ignored.  Attributes may be
+specified for an array variable using the
+.B declare
+and
+.B readonly
+builtins.  Each attribute applies to all members of an array.
+.PP
+Arrays are assigned to using compound assignments of the form
+\fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP, where each
+\fIvalue\fP is of the form [\fIsubscript\fP]=\fIstring\fP.  Only
+\fIstring\fP is required.  If
+the optional brackets and subscript are supplied, that index is assigned to;
+otherwise the index of the element assigned is the last index assigned
+to by the statement plus one.  Indexing starts at zero.
+This syntax is also accepted by the
+.B declare
+builtin.  Individual array elements may be assigned to using the
+\fIname\fP[\fIsubscript\fP]=\fIvalue\fP syntax introduced above.
+.PP
+Any element of an array may be referenced using
+${\fIname\fP[\fIsubscript\fP]}.  The braces are required to avoid
+conflicts with pathname expansion.  If
+\fIsubscript\fP is \fB@\fP or \fB*\fP, the word expands to
+all members of \fIname\fP.  These subscripts differ only when the
+word appears within double quotes.  If the word is double-quoted,
+${\fIname\fP[*]} expands to a single
+word with the value of each array member separated by the first
+character of the
+.SM
+.B IFS
+special variable, and ${\fIname\fP[@]} expands each element of
+\fIname\fP to a separate word.  When there are no array members,
+${\fIname\fP[@]} expands to nothing.  This is analogous to the expansion
+of the special parameters \fB*\fP and \fB@\fP (see
+.B Special Parameters
+above).  ${#\fIname\fP[\fIsubscript\fP]} expands to the length of
+${\fIname\fP[\fIsubscript\fP]}.  If \fIsubscript\fP is \fB*\fP or
+\fB@\fP, the expansion is the number of elements in the array.
+Referencing an array variable without a subscript is equivalent to
+referencing element zero.
+.PP
+The
+.B unset
+builtin is used to destroy arrays.  \fBunset\fP \fIname\fP[\fIsubscript\fP]
+destroys the array element at index \fIsubscript\fP.
+\fBunset\fP \fIname\fP, where \fIname\fP is an array, or
+\fBunset\fP \fIname\fP[\fIsubscript\fP], where
+\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array.
+.PP
+The
+.BR declare ,
+.BR local ,
+and
+.B readonly
+builtins each accept a
+.B \-a
+option to specify an array.  The
+.B read
+builtin accepts a
+.B \-a
+option to assign a list of words read from the standard input
+to an array.  The
+.B set
+and
+.B declare
+builtins display array values in a way that allows them to be
+reused as assignments.
+.SH EXPANSION
+Expansion is performed on the command line after it has been split into
+words.  There are seven kinds of expansion performed:
+.IR "brace expansion" ,
+.IR "tilde expansion" ,
+.IR "parameter and variable expansion" ,
+.IR "command substitution" ,
+.IR "arithmetic expansion" ,
+.IR "word splitting" ,
+and
+.IR "pathname expansion" .
+.PP
+The order of expansions is: brace expansion, tilde expansion,
+parameter, variable and arithmetic expansion and
+command substitution
+(done in a left-to-right fashion), word splitting, and pathname
+expansion.
+.PP
+On systems that can support it, there is an additional expansion
+available: \fIprocess substitution\fP.
+.PP
+Only brace expansion, word splitting, and pathname expansion
+can change the number of words of the expansion; other expansions
+expand a single word to a single word.
+The only exceptions to this are the expansions of
+"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP"
+as explained above (see
+.SM
+.BR PARAMETERS ).
+.SS Brace Expansion
+.PP
+.I "Brace expansion"
+is a mechanism by which arbitrary strings
+may be generated.  This mechanism is similar to
+\fIpathname expansion\fP, but the filenames generated
+need not exist.  Patterns to be brace expanded take
+the form of an optional
+.IR preamble ,
+followed by a series of comma-separated strings
+between a pair of braces, followed by an optional
+.IR postscript .
+The preamble is prefixed to each string contained
+within the braces, and the postscript is then appended
+to each resulting string, expanding left to right.
+.PP
+Brace expansions may be nested.  The results of each expanded
+string are not sorted; left to right order is preserved.
+For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'.
+.PP
+Brace expansion is performed before any other expansions,
+and any characters special to other expansions are preserved
+in the result.  It is strictly textual.
+.B Bash
+does not apply any syntactic interpretation to the context of the
+expansion or the text between the braces.
+.PP
+A correctly-formed brace expansion must contain unquoted opening
+and closing braces, and at least one unquoted comma.
+Any incorrectly formed brace expansion is left unchanged.
+A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its
+being considered part of a brace expression.
+To avoid conflicts with parameter expansion, the string \fB${\fP
+is not considered eligible for brace expansion.
+.PP
+This construct is typically used as shorthand when the common
+prefix of the strings to be generated is longer than in the
+above example:
+.RS
+.PP
+mkdir /usr/local/src/bash/{old,new,dist,bugs}
+.RE
+or
+.RS
+chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+.RE
+.PP
+Brace expansion introduces a slight incompatibility with
+historical versions of
+.BR sh .
+.B sh
+does not treat opening or closing braces specially when they
+appear as part of a word, and preserves them in the output.
+.B Bash
+removes braces from words as a consequence of brace
+expansion.  For example, a word entered to
+.B sh
+as \fIfile{1,2}\fP
+appears identically in the output.  The same word is
+output as
+.I file1 file2
+after expansion by
+.BR bash .
+If strict compatibility with
+.B sh
+is desired, start
+.B bash
+with the
+.B +B 
+option or disable brace expansion with the
+.B +B
+option to the
+.B set
+command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS Tilde Expansion
+.PP
+If a word begins with an unquoted tilde character (`\fB~\fP'), all of
+the characters preceding the first unquoted slash (or all characters,
+if there is no unquoted slash) are considered a \fItilde-prefix\fP.
+If none of the characters in the tilde-prefix are quoted, the
+characters in the tilde-prefix following the tilde are treated as a
+possible \fIlogin name\fP.
+If this login name is the null string, the tilde is replaced with the
+value of the shell parameter
+.SM
+.BR HOME .
+If
+.SM
+.B HOME
+is unset, the home directory of the user executing the shell is
+substituted instead.
+Otherwise, the tilde-prefix is replaced with the home directory
+associated with the specified login name.
+.PP
+If the tilde-prefix is a `~+', the value of the shell variable
+.SM
+.B PWD
+replaces the tilde-prefix.
+If the tilde-prefix is a `~\-', the value of the shell variable
+.SM
+.BR OLDPWD ,
+if it is set, is substituted.
+If the characters following the tilde in the tilde-prefix consist
+of a number \fIN\fP, optionally prefixed
+by a `+' or a `\-', the tilde-prefix is replaced with the corresponding
+element from the directory stack, as it would be displayed by the
+.B dirs
+builtin invoked with the tilde-prefix as an argument.
+If the characters following the tilde in the tilde-prefix consist of a
+number without a leading `+' or `\-', `+' is assumed.
+.PP
+If the login name is invalid, or the tilde expansion fails, the word
+is unchanged.
+.PP
+Each variable assignment is checked for unquoted tilde-prefixes immediately
+following a
+.B :
+or
+.BR = .
+In these cases, tilde expansion is also performed.
+Consequently, one may use file names with tildes in assignments to
+.SM
+.BR PATH ,
+.SM
+.BR MAILPATH ,
+and
+.SM
+.BR CDPATH ,
+and the shell assigns the expanded value.
+.SS Parameter Expansion
+.PP
+The `\fB$\fP' character introduces parameter expansion,
+command substitution, or arithmetic expansion.  The parameter name
+or symbol to be expanded may be enclosed in braces, which
+are optional but serve to protect the variable to be expanded from
+characters immediately following it which could be
+interpreted as part of the name.
+.PP
+When braces are used, the matching ending brace is the first `\fB}\fP'
+not escaped by a backslash or within a quoted string, and not within an
+embedded arithmetic expansion, command substitution, or paramter
+expansion.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP}
+The value of \fIparameter\fP is substituted.  The braces are required
+when
+.I parameter
+is a positional parameter with more than one digit,
+or when
+.I parameter
+is followed by a character which is not to be
+interpreted as part of its name.
+.PD
+.PP
+If the first character of \fIparameter\fP is an exclamation point,
+a level of variable indirection is introduced.
+\fBBash\fP uses the value of the variable formed from the rest of
+\fIparameter\fP as the name of the variable; this variable is then
+expanded and that value is used in the rest of the substitution, rather
+than the value of \fIparameter\fP itself.
+This is known as \fIindirect expansion\fP.
+The exception to this is the expansion of ${!\fIprefix\fP*}
+described below.
+.PP
+In each of the cases below, \fIword\fP is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
+When not performing substring expansion, \fBbash\fP tests for a parameter
+that is unset or null; omitting the colon results in a test only for a
+parameter that is unset.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP\fB:\-\fP\fIword\fP}
+\fBUse Default Values\fP.  If
+.I parameter
+is unset or null, the expansion of
+.I word
+is substituted.  Otherwise, the value of
+.I parameter
+is substituted.
+.TP
+${\fIparameter\fP\fB:=\fP\fIword\fP}
+\fBAssign Default Values\fP.
+If
+.I parameter
+is unset or null, the expansion of
+.I word
+is assigned to
+.IR parameter .
+The value of
+.I parameter
+is then substituted.  Positional parameters and special parameters may
+not be assigned to in this way.
+.TP
+${\fIparameter\fP\fB:?\fP\fIword\fP}
+\fBDisplay Error if Null or Unset\fP.
+If
+.I parameter
+is null or unset, the expansion of \fIword\fP (or a message to that effect
+if
+.I word
+is not present) is written to the standard error and the shell, if it
+is not interactive, exits.  Otherwise, the value of \fIparameter\fP is
+substituted.
+.TP
+${\fIparameter\fP\fB:+\fP\fIword\fP}
+\fBUse Alternate Value\fP.
+If
+.I parameter
+is null or unset, nothing is substituted, otherwise the expansion of
+.I word
+is substituted.
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
+.PD
+\fBSubstring Expansion.\fP
+Expands to up to \fIlength\fP characters of \fIparameter\fP
+starting at the character specified by \fIoffset\fP.
+If \fIlength\fP is omitted, expands to the substring of
+\fIparameter\fP starting at the character specified by \fIoffset\fP.
+\fIlength\fP and \fIoffset\fP are arithmetic expressions (see
+.SM
+.B
+ARITHMETIC EVALUATION
+below).
+\fIlength\fP must evaluate to a number greater than or equal to zero.
+If \fIoffset\fP evaluates to a number less than zero, the value
+is used as an offset from the end of the value of \fIparameter\fP.
+If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional
+parameters beginning at \fIoffset\fP.
+If \fIparameter\fP is an array name indexed by @ or *,
+the result is the \fIlength\fP
+members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}.
+Substring indexing is zero-based unless the positional parameters 
+are used, in which case the indexing starts at 1.
+.TP
+${\fB!\fP\fIprefix\fP\fB*\fP}
+Expands to the names of variables whose names begin with \fIprefix\fP,
+separated by the first character of the
+.SM
+.B IFS
+special variable.
+.TP
+${\fB#\fP\fIparameter\fP}
+The length in characters of the value of \fIparameter\fP is substituted.
+If
+.I parameter
+is
+.B *
+or 
+.BR @ ,
+the value substituted is the number of positional parameters.
+If
+.I parameter
+is an array name subscripted by
+.B *
+or
+.BR @ ,
+the value substituted is the number of elements in the array.
+.TP
+${\fIparameter\fP\fB#\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB##\fP\fIword\fP}
+.PD
+The 
+.I word
+is expanded to produce a pattern just as in pathname
+expansion.  If the pattern matches the beginning of
+the value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB#\fP'' case) or the
+longest matching pattern (the ``\fB##\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB%\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB%%\fP\fIword\fP}
+.PD
+The \fIword\fP is expanded to produce a pattern just as in
+pathname expansion.
+If the pattern matches a trailing portion of the expanded value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB%\fP'' case) or the
+longest matching pattern (the ``\fB%%\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD
+The \fIpattern\fP is expanded to produce a pattern just as in
+pathname expansion.
+\fIParameter\fP is expanded and the longest match of \fIpattern\fP
+against its value is replaced with \fIstring\fP.
+In the first form, only the first match is replaced.
+The second form causes all matches of \fIpattern\fP to be
+replaced with \fIstring\fP.
+If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
+of the expanded value of \fIparameter\fP.
+If \fIpattern\fP begins with \fB%\fP, it must match at the end
+of the expanded value of \fIparameter\fP.
+If \fIstring\fP is null, matches of \fIpattern\fP are deleted
+and the \fB/\fP following \fIpattern\fP may be omitted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the substitution operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the substitution operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.SS Command Substitution
+.PP
+\fICommand substitution\fP allows the output of a command to replace
+the command name.  There are two forms:
+.PP
+.RS
+.PP
+\fB$(\fP\fIcommand\fP\|\fB)\fP
+.RE
+or
+.RS
+\fB`\fP\fIcommand\fP\fB`\fP
+.RE
+.PP
+.B Bash
+performs the expansion by executing \fIcommand\fP and
+replacing the command substitution with the standard output of the
+command, with any trailing newlines deleted.
+Embedded newlines are not deleted, but they may be removed during
+word splitting.
+The command substitution \fB$(cat \fIfile\fP)\fR can be replaced by
+the equivalent but faster \fB$(< \fIfile\fP)\fR.
+.PP
+When the old-style backquote form of substitution is used,
+backslash retains its literal meaning except when followed by
+.BR $ ,
+.BR ` ,
+or
+.BR \e .
+The first backquote not preceded by a backslash terminates the
+command substitution.
+When using the $(\^\fIcommand\fP\|) form, all characters between the
+parentheses make up the command; none are treated specially.
+.PP
+Command substitutions may be nested.  To nest when using the backquoted form,
+escape the inner backquotes with backslashes.
+.PP
+If the substitution appears within double quotes, word splitting and
+pathname expansion are not performed on the results.
+.SS Arithmetic Expansion
+.PP
+Arithmetic expansion allows the evaluation of an arithmetic expression
+and the substitution of the result.  The format for arithmetic expansion is:
+.RS
+.PP
+\fB$((\fP\fIexpression\fP\fB))\fP
+.RE
+.PP
+The
+.I expression
+is treated as if it were within double quotes, but a double quote
+inside the parentheses is not treated specially.
+All tokens in the expression undergo parameter expansion, string
+expansion, command substitution, and quote removal.
+Arithmetic substitutions may be nested.
+.PP
+The evaluation is performed according to the rules listed below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If
+.I expression
+is invalid,
+.B bash
+prints a message indicating failure and no substitution occurs.
+.SS Process Substitution
+.PP
+\fIProcess substitution\fP is supported on systems that support named
+pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files.
+It takes the form of
+\fB<(\fP\fIlist\^\fP\fB)\fP
+or
+\fB>(\fP\fIlist\^\fP\fB)\fP.
+The process \fIlist\fP is run with its input or output connected to a
+\fIFIFO\fP or some file in \fB/dev/fd\fP.  The name of this file is
+passed as an argument to the current command as the result of the
+expansion.  If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to
+the file will provide input for \fIlist\fP.  If the
+\fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an
+argument should be read to obtain the output of \fIlist\fP.
+.PP
+When available, process substitution is performed
+simultaneously with parameter and variable expansion, 
+command substitution,
+and arithmetic expansion.
+.SS Word Splitting
+.PP
+The shell scans the results of
+parameter expansion,
+command substitution,
+and
+arithmetic expansion
+that did not occur within double quotes for
+.IR "word splitting" .
+.PP
+The shell treats each character of
+.SM
+.B IFS
+as a delimiter, and splits the results of the other
+expansions into words on these characters.  If
+.SM
+.B IFS
+is unset, or its
+value is exactly
+.BR <space><tab><newline> ,
+the default, then
+any sequence of
+.SM
+.B IFS
+characters serves to delimit words.  If
+.SM
+.B IFS
+has a value other than the default, then sequences of
+the whitespace characters
+.B space
+and
+.B tab
+are ignored at the beginning and end of the
+word, as long as the whitespace character is in the
+value of
+.SM
+.BR IFS
+(an
+.SM
+.B IFS
+whitespace character).
+Any character in
+.SM
+.B IFS
+that is not
+.SM
+.B IFS
+whitespace, along with any adjacent
+.SM
+.B IFS
+whitespace characters, delimits a field.
+A sequence of
+.SM
+.B IFS
+whitespace characters is also treated as a delimiter.
+If the value of
+.SM
+.B IFS
+is null, no word splitting occurs.
+.PP
+Explicit null arguments (\^\f3"\^"\fP or \^\f3'\^'\fP\^) are retained.
+Unquoted implicit null arguments, resulting from the expansion of
+parameters that have no values, are removed.
+If a parameter with no value is expanded within double quotes, a
+null argument results and is retained.
+.PP
+Note that if no expansion occurs, no splitting
+is performed.
+.SS Pathname Expansion
+.PP
+After word splitting,
+unless the
+.B \-f
+option has been set,
+.B bash
+scans each word for the characters
+.BR * ,
+.BR ? ,
+and
+.BR [ .
+If one of these characters appears, then the word is
+regarded as a
+.IR pattern ,
+and replaced with an alphabetically sorted list of
+file names matching the pattern.
+If no matching file names are found,
+and the shell option
+.B nullglob
+is disabled, the word is left unchanged.
+If the 
+.B nullglob
+option is set, and no matches are found,
+the word is removed.
+If the shell option
+.B nocaseglob
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+When a pattern is used for pathname expansion,
+the character
+.B ``.''
+at the start of a name or immediately following a slash
+must be matched explicitly, unless the shell option
+.B dotglob
+is set.
+When matching a pathname, the slash character must always be
+matched explicitly.
+In other cases, the
+.B ``.''
+character is not treated specially.
+See the description of
+.B shopt
+below under
+.SM
+.B SHELL BUILTIN COMMANDS
+for a description of the
+.BR nocaseglob ,
+.BR nullglob ,
+and
+.B dotglob
+shell options.
+.PP
+The
+.SM
+.B GLOBIGNORE
+shell variable may be used to restrict the set of file names matching a
+.IR pattern .
+If
+.SM
+.B GLOBIGNORE
+is set, each matching file name that also matches one of the patterns in
+.SM
+.B GLOBIGNORE
+is removed from the list of matches.
+The file names
+.B ``.''
+and
+.B ``..''
+are always ignored, even when
+.SM
+.B GLOBIGNORE
+is set.  However, setting
+.SM
+.B GLOBIGNORE
+has the effect of enabling the
+.B dotglob
+shell option, so all other file names beginning with a
+.B ``.''
+will match.
+To get the old behavior of ignoring file names beginning with a
+.BR ``.'' ,
+make
+.B ``.*''
+one of the patterns in
+.SM
+.BR GLOBIGNORE .
+The
+.B dotglob
+option is disabled when
+.SM
+.B GLOBIGNORE
+is unset.
+.PP
+\fBPattern Matching\fP
+.PP
+Any character that appears in a pattern, other than the special pattern
+characters described below, matches itself.  The NUL character may not
+occur in a pattern.  The special pattern characters must be quoted if
+they are to be matched literally.
+.PP
+The special pattern characters have the following meanings:
+.PP
+.PD 0
+.TP
+.B *
+Matches any string, including the null string.
+.TP
+.B ?
+Matches any single character.
+.TP
+.B [...]
+Matches any one of the enclosed characters.  A pair of characters
+separated by a hyphen denotes a
+\fIrange expression\fP;
+any character that sorts between those two characters, inclusive,
+using the current locale's collating sequence and character set,
+is matched.  If the first character following the
+.B [
+is a
+.B !
+or a
+.B ^
+then any character not enclosed is matched.
+The sorting order of characters in range expressions is determined by
+the current locale and the value of the \fBLC_COLLATE\fP shell variable,
+if set.
+A 
+.B \-
+may be matched by including it as the first or last character
+in the set.
+A
+.B ]
+may be matched by including it as the first character
+in the set.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and
+.BR ] ,
+\fIcharacter classes\fP can be specified using the syntax
+\fB[:\fP\fIclass\fP\fB:]\fP, where \fIclass\fP is one of the
+following classes defined in the POSIX.2 standard:
+.PP
+.RS
+.B
+.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
+.if t alnum   alpha   ascii   blank   cntrl   digit   graph   lower   print   punct   space   upper   word   xdigit
+.br
+A character class matches any character belonging to that class.
+The \fBword\fP character class matches letters, digits, and the character _.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+an \fIequivalence class\fP can be specified using the syntax
+\fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the
+same collation weight (as defined by the current locale) as
+the character \fIc\fP.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol
+\fIsymbol\fP.
+.RE
+.PD
+.PP
+If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
+builtin, several extended pattern matching operators are recognized.
+In the following description, a \fIpattern-list\fP is a list of one
+or more patterns separated by a \fB|\fP.
+Composite patterns may be formed using one or more of the following
+sub-patterns:
+.sp 1
+.PD 0
+.RS
+.TP
+\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or one occurrence of the given patterns
+.TP
+\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or more occurrences of the given patterns
+.TP
+\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches one or more occurrences of the given patterns
+.TP
+\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches exactly one of the given patterns
+.TP
+\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches anything except one of the given patterns
+.RE
+.PD
+.SS Quote Removal
+.PP
+After the preceding expansions, all unquoted occurrences of the
+characters
+.BR \e ,
+.BR ' ,
+and \^\f3"\fP\^ that did not result from one of the above
+expansions are removed.
+.SH REDIRECTION
+Before a command is executed, its input and output
+may be
+.I redirected
+using a special notation interpreted by the shell.
+Redirection may also be used to open and close files for the
+current shell execution environment.  The following redirection
+operators may precede or appear anywhere within a
+.I simple command
+or may follow a
+.IR command .
+Redirections are processed in the order they appear, from
+left to right.
+.PP
+In the following descriptions, if the file descriptor number is
+omitted, and the first character of the redirection operator is
+.BR < ,
+the redirection refers to the standard input (file descriptor
+0).  If the first character of the redirection operator is
+.BR > ,
+the redirection refers to the standard output (file descriptor
+1).
+.PP
+The word following the redirection operator in the following
+descriptions, unless otherwise noted, is subjected to brace expansion,
+tilde expansion, parameter expansion, command substitution, arithmetic
+expansion, quote removal, pathname expansion, and word splitting.
+If it expands to more than one word,
+.B bash
+reports an error.
+.PP
+Note that the order of redirections is significant.  For example, 
+the command
+.RS
+.PP
+ls \fB>\fP dirlist 2\fB>&\fP1
+.RE
+.PP
+directs both standard output and standard error to the file 
+.IR dirlist ,
+while the command
+.RS
+.PP
+ls 2\fB>&\fP1 \fB>\fP dirlist
+.RE
+.PP
+directs only the standard output to file
+.IR dirlist ,
+because the standard error was duplicated as standard output
+before the standard output was redirected to
+.IR dirlist .
+.PP
+\fBBash\fP handles several filenames specially when they are used in
+redirections, as described in the following table:
+.RS
+.PP
+.PD 0
+.TP
+.B /dev/fd/\fIfd\fP
+If \fIfd\fP is a valid integer, file descriptor \fIfd\fP is duplicated.
+.TP
+.B /dev/stdin
+File descriptor 0 is duplicated.
+.TP
+.B /dev/stdout
+File descriptor 1 is duplicated.
+.TP
+.B /dev/stderr
+File descriptor 2 is duplicated.
+.TP
+.B /dev/tcp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+a TCP connection to the corresponding socket.
+.TP
+.B /dev/udp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+a UDP connection to the corresponding socket.
+.PD
+.RE
+.PP
+A failure to open or create a file causes the redirection to fail.
+.SS Redirecting Input
+.PP
+Redirection of input causes the file whose name results from
+the expansion of
+.I word
+to be opened for reading on file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if
+.I n
+is not specified.
+.PP
+The general format for redirecting input is:
+.RS
+.PP
+[\fIn\fP]\fB<\fP\fIword\fP
+.RE
+.SS Redirecting Output
+.PP
+Redirection of output causes the file whose name results from
+the expansion of
+.I word
+to be opened for writing on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created;
+if it does exist it is truncated to zero size.
+.PP
+The general format for redirecting output is:
+.RS
+.PP
+[\fIn\fP]\fB>\fP\fIword\fP
+.RE
+.PP
+If the redirection operator is
+.BR > ,
+and the
+.B noclobber
+option to the
+.B set
+builtin has been enabled, the redirection will fail if the file
+whose name results from the expansion of \fIword\fP exists and is
+a regular file.
+If the redirection operator is
+.BR >| ,
+or the redirection operator is
+.B >
+and the
+.B noclobber
+option to the
+.B set
+builtin command is not enabled, the redirection is attempted even
+if the file named by \fIword\fP exists.
+.SS Appending Redirected Output
+.PP
+Redirection of output in this fashion
+causes the file whose name results from
+the expansion of
+.I word
+to be opened for appending on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created.
+.PP
+The general format for appending output is:
+.RS
+.PP
+[\fIn\fP]\fB>>\fP\fIword\fP
+.RE
+.PP
+.SS Redirecting Standard Output and Standard Error
+.PP
+.B Bash
+allows both the
+standard output (file descriptor 1) and
+the standard error output (file descriptor 2)
+to be redirected to the file whose name is the
+expansion of
+.I word
+with this construct.
+.PP
+There are two formats for redirecting standard output and
+standard error:
+.RS
+.PP
+\fB&>\fP\fIword\fP
+.RE
+and
+.RS
+\fB>&\fP\fIword\fP
+.RE
+.PP
+Of the two forms, the first is preferred.
+This is semantically equivalent to
+.RS
+.PP
+\fB>\fP\fIword\fP 2\fB>&\fP1
+.RE
+.SS Here Documents
+.PP
+This type of redirection instructs the shell to read input from the
+current source until a line containing only
+.I word
+(with no trailing blanks)
+is seen.  All of
+the lines read up to that point are then used as the standard
+input for a command.
+.PP
+The format of here-documents is:
+.RS
+.PP
+.nf
+\fB<<\fP[\fB\-\fP]\fIword\fP
+        \fIhere-document\fP
+\fIdelimiter\fP
+.fi
+.RE
+.PP
+No parameter expansion, command substitution, arithmetic expansion,
+or pathname expansion is performed on
+.IR word .
+If any characters in
+.I word
+are quoted, the
+.I delimiter
+is the result of quote removal on
+.IR word ,
+and the lines in the here-document are not expanded.
+If \fIword\fP is unquoted,
+all lines of the here-document are subjected to parameter expansion,
+command substitution, and arithmetic expansion.  In the latter
+case, the character sequence
+.B \e<newline>
+is ignored, and
+.B \e
+must be used to quote the characters
+.BR \e ,
+.BR $ ,
+and
+.BR ` .
+.PP
+If the redirection operator is
+.BR <<\- ,
+then all leading tab characters are stripped from input lines and the
+line containing
+.IR delimiter .
+This allows
+here-documents within shell scripts to be indented in a
+natural fashion.
+.SS "Here Strings"
+A variant of here documents, the format is:
+.RS
+.PP
+.nf
+\fB<<<\fP\fIword\fP
+.fi
+.RE
+.PP
+The \fIword\fP is expanded and supplied to the command on its standard
+input.
+.SS "Duplicating File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIword\fP
+.RE
+.PP
+is used to duplicate input file descriptors.
+If
+.I word
+expands to one or more digits, the file descriptor denoted by
+.I n
+is made to be a copy of that file descriptor.
+If the digits in
+.I word
+do not specify a file descriptor open for input, a redirection error occurs.
+If
+.I word
+evaluates to
+.BR \- ,
+file descriptor
+.I n
+is closed.  If
+.I n
+is not specified, the standard input (file descriptor 0) is used.
+.PP
+The operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIword\fP
+.RE
+.PP
+is used similarly to duplicate output file descriptors.  If
+.I n
+is not specified, the standard output (file descriptor 1) is used.
+If the digits in
+.I word
+do not specify a file descriptor open for output, a redirection error occurs.
+As a special case, if \fIn\fP is omitted, and \fIword\fP does not
+expand to one or more digits, the standard output and standard
+error are redirected as described previously.
+.SS "Moving File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if \fIn\fP is not specified.
+\fIdigit\fP is closed after being duplicated to \fIn\fP.
+.PP
+Similarly, the redirection operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if \fIn\fP is not specified.
+.SS "Opening File Descriptors for Reading and Writing"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<>\fP\fIword\fP
+.RE
+.PP
+causes the file whose name is the expansion of
+.I word
+to be opened for both reading and writing on file descriptor
+.IR n ,
+or on file descriptor 0 if
+.I n
+is not specified.  If the file does not exist, it is created.
+.SH ALIASES
+\fIAliases\fP allow a string to be substituted for a word when it is used
+as the first word of a simple command.
+The shell maintains a list of aliases that may be set and unset with the
+.B alias
+and
+.B unalias
+builtin commands (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+The first word of each command, if unquoted,
+is checked to see if it has an
+alias.  If so, that word is replaced by the text of the alias.
+The alias name and the replacement text may contain any valid
+shell input, including the
+.I metacharacters
+listed above, with the exception that the alias name may not
+contain \fI=\fP.  The first word of the replacement text is tested
+for aliases, but a word that is identical to an alias being expanded
+is not expanded a second time.  This means that one may alias
+.B ls
+to
+.BR "ls \-F" ,
+for instance, and
+.B bash
+does not try to recursively expand the replacement text.
+If the last character of the alias value is a
+.IR blank ,
+then the next command
+word following the alias is also checked for alias expansion.
+.PP
+Aliases are created and listed with the
+.B alias
+command, and removed with the
+.B unalias
+command.
+.PP
+There is no mechanism for using arguments in the replacement text.
+If arguments are needed, a shell function should be used (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+Aliases are not expanded when the shell is not interactive, unless
+the
+.B expand_aliases
+shell option is set using
+.B shopt
+(see the description of
+.B shopt
+under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP
+below).
+.PP
+The rules concerning the definition and use of aliases are
+somewhat confusing.
+.B Bash
+always reads at least one complete line
+of input before executing any
+of the commands on that line.  Aliases are expanded when a
+command is read, not when it is executed.  Therefore, an
+alias definition appearing on the same line as another
+command does not take effect until the next line of input is read.
+The commands following the alias definition
+on that line are not affected by the new alias.
+This behavior is also an issue when functions are executed.
+Aliases are expanded when a function definition is read,
+not when the function is executed, because a function definition
+is itself a compound command.  As a consequence, aliases
+defined in a function are not available until after that
+function is executed.  To be safe, always put
+alias definitions on a separate line, and do not use
+.B alias
+in compound commands.
+.PP
+For almost every purpose, aliases are superseded by
+shell functions.
+.SH FUNCTIONS
+A shell function, defined as described above under
+.SM
+.BR "SHELL GRAMMAR" ,
+stores a series of commands for later execution.
+When the name of a shell function is used as a simple command name,
+the list of commands associated with that function name is executed.
+Functions are executed in the context of the
+current shell; no new process is created to interpret
+them (contrast this with the execution of a shell script).
+When a function is executed, the arguments to the
+function become the positional parameters
+during its execution.
+The special parameter
+.B #
+is updated to reflect the change.  Positional parameter 0
+is unchanged.
+The
+.SM
+.B FUNCNAME
+variable is set to the name of the function while the function
+is executing.
+All other aspects of the shell execution
+environment are identical between a function and its caller
+with the exception that the
+.SM
+.B DEBUG
+trap (see the description of the
+.B trap
+builtin under
+.SM
+.B SHELL BUILTIN COMMANDS
+below) is not inherited unless the function has been given the
+\fBtrace\fP attribute (see the description of the
+.SM
+.B declare
+builtin below).
+.PP
+Variables local to the function may be declared with the
+.B local
+builtin command.  Ordinarily, variables and their values
+are shared between the function and its caller.
+.PP
+If the builtin command
+.B return
+is executed in a function, the function completes and
+execution resumes with the next command after the function
+call.  When a function completes, the values of the
+positional parameters and the special parameter
+.B #
+are restored to the values they had prior to the function's
+execution.
+.PP
+Function names and definitions may be listed with the
+.B \-f
+option to the
+.B declare
+or
+.B typeset
+builtin commands.  The
+.B \-F
+option to
+.B declare
+or
+.B typeset
+will list the function names only.
+Functions may be exported so that subshells
+automatically have them defined with the
+.B \-f
+option to the 
+.B export
+builtin.
+.PP
+Functions may be recursive.  No limit is imposed on the number
+of recursive calls.
+.SH "ARITHMETIC EVALUATION"
+The shell allows arithmetic expressions to be evaluated, under
+certain circumstances (see the \fBlet\fP builtin command and
+\fBArithmetic Expansion\fP).
+Evaluation is done in fixed-width integers with no check for overflow,
+though division by 0 is trapped and flagged as an error.
+The operators and their precedence and associativity are the same
+as in the C language.
+The following list of operators is grouped into levels of
+equal-precedence operators.
+The levels are listed in order of decreasing precedence.
+.PP
+.PD 0
+.TP
+.B \fIid\fP++ \fIid\fP\-\-
+variable post-increment and post-decrement
+.TP
+.B ++\fIid\fP \-\-\fIid\fP
+variable pre-increment and pre-decrement
+.TP
+.B \- +
+unary minus and plus
+.TP
+.B ! ~
+logical and bitwise negation
+.TP
+.B **
+exponentiation
+.TP
+.B * / %
+multiplication, division, remainder
+.TP
+.B + \-
+addition, subtraction
+.TP
+.B << >>
+left and right bitwise shifts
+.TP
+.B <= >= < >
+comparison
+.TP
+.B == !=
+equality and inequality
+.TP
+.B &
+bitwise AND
+.TP
+.B ^
+bitwise exclusive OR
+.TP
+.B |
+bitwise OR
+.TP
+.B &&
+logical AND
+.TP
+.B ||
+logical OR
+.TP
+.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP
+conditional evaluation
+.TP
+.B = *= /= %= += \-= <<= >>= &= ^= |=
+assignment
+.TP
+.B \fIexpr1\fP , \fIexpr2\fP
+comma
+.PD
+.PP
+Shell variables are allowed as operands; parameter expansion is
+performed before the expression is evaluated.
+Within an expression, shell variables may also be referenced by name
+without using the parameter expansion syntax.
+The value of a variable is evaluated as an arithmetic expression
+when it is referenced.
+A shell variable need not have its integer attribute
+turned on to be used in an expression.
+.PP
+Constants with a leading 0 are interpreted as octal numbers.
+A leading 0x or 0X denotes hexadecimal.
+Otherwise, numbers take the form [\fIbase#\fP]n, where \fIbase\fP
+is a decimal number between 2 and 64 representing the arithmetic
+base, and \fIn\fP is a number in that base.
+If \fIbase#\fP is omitted, then base 10 is used.
+The digits greater than 9 are represented by the lowercase letters,
+the uppercase letters, @, and _, in that order.
+If \fIbase\fP is less than or equal to 36, lowercase and uppercase
+letters may be used interchangably to represent numbers between 10
+and 35.
+.PP
+Operators are evaluated in order of precedence.  Sub-expressions in
+parentheses are evaluated first and may override the precedence
+rules above.
+.SH "CONDITIONAL EXPRESSIONS"
+Conditional expressions are used by the \fB[[\fP compound command and
+the \fBtest\fP and \fB[\fP builtin commands to test file attributes
+and perform string and arithmetic comparisons.
+Expressions are formed from the following unary or binary primaries.
+If any \fIfile\fP argument to one of the primaries is of the form
+\fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked.
+If the \fIfile\fP argument to one of the primaries is one of
+\fI/dev/stdin\fP, \fI/dev/stdout\fP, or \fI/dev/stderr\fP, file
+descriptor 0, 1, or 2, respectively, is checked.
+.sp 1
+.PD 0
+.TP
+.B \-a \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-b \fIfile\fP
+True if \fIfile\fP exists and is a block special file.
+.TP
+.B \-c \fIfile\fP
+True if \fIfile\fP exists and is a character special file.
+.TP
+.B \-d \fIfile\fP
+True if \fIfile\fP exists and is a directory.
+.TP
+.B \-e \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-f \fIfile\fP
+True if \fIfile\fP exists and is a regular file.
+.TP
+.B \-g \fIfile\fP
+True if \fIfile\fP exists and is set-group-id.
+.TP
+.B \-h \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-k \fIfile\fP
+True if \fIfile\fP exists and its ``sticky'' bit is set.
+.TP
+.B \-p \fIfile\fP
+True if \fIfile\fP exists and is a named pipe (FIFO).
+.TP
+.B \-r \fIfile\fP
+True if \fIfile\fP exists and is readable.
+.TP
+.B \-s \fIfile\fP
+True if \fIfile\fP exists and has a size greater than zero.
+.TP
+.B \-t \fIfd\fP
+True if file descriptor
+.I fd
+is open and refers to a terminal.
+.TP
+.B \-u \fIfile\fP
+True if \fIfile\fP exists and its set-user-id bit is set.
+.TP
+.B \-w \fIfile\fP
+True if \fIfile\fP exists and is writable.
+.TP
+.B \-x \fIfile\fP
+True if \fIfile\fP exists and is executable.
+.TP
+.B \-O \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective user id.
+.TP
+.B \-G \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective group id.
+.TP
+.B \-L \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-S \fIfile\fP
+True if \fIfile\fP exists and is a socket.
+.TP
+.B \-N \fIfile\fP
+True if \fIfile\fP exists and has been modified since it was last read.
+.TP
+\fIfile1\fP \-\fBnt\fP \fIfile2\fP
+True if \fIfile1\fP is newer (according to modification date) than \fIfile2\fP,
+or if \fIfile1\fP exists and \fPfile2\fP does not.
+.TP
+\fIfile1\fP \-\fBot\fP \fIfile2\fP
+True if \fIfile1\fP is older than \fIfile2\fP, or if \fIfile2\fP exists
+and \fIfile1\fP does not.
+.TP
+\fIfile1\fP \fB\-ef\fP \fIfile2\fP
+True if \fIfile1\fP and \fIfile2\fP refer to the same device and
+inode numbers.
+.TP
+.B \-o \fIoptname\fP
+True if shell option
+.I optname
+is enabled.
+See the list of options under the description of the
+.B \-o
+option to the
+.B set
+builtin below.
+.TP
+.B \-z \fIstring\fP
+True if the length of \fIstring\fP is zero.
+.TP
+.B \-n \fIstring\fP
+.TP
+\fIstring\fP
+True if the length of
+.I string
+is non-zero.
+.TP
+\fIstring1\fP \fB==\fP \fIstring2\fP
+True if the strings are equal.  \fB=\fP may be used in place of
+\fB==\fP for strict POSIX compliance.
+.TP
+\fIstring1\fP \fB!=\fP \fIstring2\fP
+True if the strings are not equal.
+.TP
+\fIstring1\fP \fB<\fP \fIstring2\fP
+True if \fIstring1\fP sorts before \fIstring2\fP lexicographically
+in the current locale.
+.TP
+\fIstring1\fP \fB>\fP \fIstring2\fP
+True if \fIstring1\fP sorts after \fIstring2\fP lexicographically
+in the current locale.
+.TP
+.I \fIarg1\fP \fBOP\fP \fIarg2\fP
+.SM
+.B OP
+is one of
+.BR \-eq ,
+.BR \-ne ,
+.BR \-lt ,
+.BR \-le ,
+.BR \-gt ,
+or
+.BR \-ge .
+These arithmetic binary operators return true if \fIarg1\fP
+is equal to, not equal to, less than, less than or equal to,
+greater than, or greater than or equal to \fIarg2\fP, respectively.
+.I Arg1
+and
+.I arg2
+may be positive or negative integers.
+.PD
+.SH "SIMPLE COMMAND EXPANSION"
+When a simple command is executed, the shell performs the following
+expansions, assignments, and redirections, from left to right.
+.IP 1.
+The words that the parser has marked as variable assignments (those
+preceding the command name) and redirections are saved for later
+processing.
+.IP 2.
+The words that are not variable assignments or redirections are
+expanded.  If any words remain after expansion, the first word
+is taken to be the name of the command and the remaining words are
+the arguments.
+.IP 3.
+Redirections are performed as described above under
+.SM
+.BR REDIRECTION .
+.IP 4.
+The text after the \fB=\fP in each variable assignment undergoes tilde
+expansion, parameter expansion, command substitution, arithmetic expansion,
+and quote removal before being assigned to the variable.
+.PP
+If no command name results, the variable assignments affect the current
+shell environment.  Otherwise, the variables are added to the environment
+of the executed command and do not affect the current shell environment.
+If any of the assignments attempts to assign a value to a readonly variable,
+an error occurs, and the command exits with a non-zero status.
+.PP
+If no command name results, redirections are performed, but do not
+affect the current shell environment.  A redirection error causes the
+command to exit with a non-zero status.
+.PP
+If there is a command name left after expansion, execution proceeds as
+described below.  Otherwise, the command exits.  If one of the expansions
+contained a command substitution, the exit status of the command is
+the exit status of the last command substitution performed.  If there
+were no command substitutions, the command exits with a status of zero.
+.SH "COMMAND EXECUTION"
+After a command has been split into words, if it results in a
+simple command and an optional list of arguments, the following
+actions are taken.
+.PP
+If the command name contains no slashes, the shell attempts to
+locate it.  If there exists a shell function by that name, that
+function is invoked as described above in
+.SM
+.BR FUNCTIONS .
+If the name does not match a function, the shell searches for
+it in the list of shell builtins.  If a match is found, that
+builtin is invoked.
+.PP
+If the name is neither a shell function nor a builtin,
+and contains no slashes,
+.B bash
+searches each element of the
+.SM
+.B PATH
+for a directory containing an executable file by that name.
+.B Bash
+uses a hash table to remember the full pathnames of executable
+files (see
+.B hash
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+A full search of the directories in
+.SM
+.B PATH
+is performed only if the command is not found in the hash table.
+If the search is unsuccessful, the shell prints an error
+message and returns an exit status of 127.
+.PP
+If the search is successful, or if the command name contains
+one or more slashes, the shell executes the named program in a
+separate execution environment.
+Argument 0 is set to the name given, and the remaining arguments
+to the command are set to the arguments given, if any.
+.PP
+If this execution fails because the file is not in executable
+format, and the file is not a directory, it is assumed to be
+a \fIshell script\fP, a file
+containing shell commands.  A subshell is spawned to execute
+it.  This subshell reinitializes itself, so
+that the effect is as if a new shell had been invoked
+to handle the script, with the exception that the locations of
+commands remembered by the parent (see
+.B hash
+below under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP)
+are retained by the child.
+.PP
+If the program is a file beginning with
+.BR #! ,
+the remainder of the first line specifies an interpreter
+for the program.  The shell executes the
+specified interpreter on operating systems that do not
+handle this executable format themselves.  The arguments to the 
+interpreter consist of a single optional argument following the
+interpreter name on the first line of the program, followed
+by the name of the program, followed by the command
+arguments, if any.
+.SH COMMAND EXECUTION ENVIRONMENT
+The shell has an \fIexecution environment\fP, which consists of the
+following:
+.sp 1
+.IP \(bu
+open files inherited by the shell at invocation, as modified by
+redirections supplied to the \fBexec\fP builtin
+.IP \(bu
+the current working directory as set by \fBcd\fP, \fBpushd\fP, or
+\fBpopd\fP, or inherited by the shell at invocation
+.IP \(bu
+the file creation mode mask as set by \fBumask\fP or inherited from
+the shell's parent
+.IP \(bu
+current traps set by \fBtrap\fP
+.IP \(bu
+shell parameters that are set by variable assignment or with \fBset\fP
+or inherited from the shell's parent in the environment
+.IP \(bu
+shell functions defined during execution or inherited from the shell's
+parent in the environment
+.IP \(bu
+options enabled at invocation (either by default or with command-line
+arguments) or by \fBset\fP
+.IP \(bu
+options enabled by \fBshopt\fP
+.IP \(bu
+shell aliases defined with \fBalias\fP
+.IP \(bu
+various process IDs, including those of background jobs, the value
+of \fB$$\fP, and the value of \fB$PPID\fP
+.PP
+When a simple command other than a builtin or shell function
+is to be executed, it
+is invoked in a separate execution environment that consists of
+the following.  Unless otherwise noted, the values are inherited
+from the shell.
+.sp 1
+.IP \(bu
+the shell's open files, plus any modifications and additions specified
+by redirections to the command
+.IP \(bu
+the current working directory
+.IP \(bu
+the file creation mode mask
+.IP \(bu
+shell variables marked for export, along with variables exported for
+the command, passed in the environment
+.IP \(bu
+traps caught by the shell are reset to the values the inherited
+from the shell's parent, and traps ignored by the shell are ignored
+.PP
+A command invoked in this separate environment cannot affect the
+shell's execution environment. 
+.PP
+Command substitution and asynchronous commands are invoked in a
+subshell environment that is a duplicate of the shell environment,
+except that traps caught by the shell are reset to the values
+that the shell inherited from its parent at invocation.  Builtin
+commands that are invoked as part of a pipeline are also executed in a
+subshell environment.  Changes made to the subshell environment
+cannot affect the shell's execution environment.
+.PP
+If a command is followed by a \fB&\fP and job control is not active, the
+default standard input for the command is the empty file \fI/dev/null\fP.
+Otherwise, the invoked command inherits the file descriptors of the calling
+shell as modified by redirections.
+.SH ENVIRONMENT
+When a program is invoked it is given an array of strings
+called the
+.IR environment .
+This is a list of 
+\fIname\fP\-\fIvalue\fP pairs, of the form
+.IR "name\fR=\fPvalue" .
+.PP
+The shell provides several ways to manipulate the environment.
+On invocation, the shell scans its own environment and
+creates a parameter for each name found, automatically marking
+it for
+.I export
+to child processes.  Executed commands inherit the environment.
+The
+.B export
+and
+.B declare \-x
+commands allow parameters and functions to be added to and
+deleted from the environment.  If the value of a parameter
+in the environment is modified, the new value becomes part
+of the environment, replacing the old.  The environment
+inherited by any executed command consists of the shell's
+initial environment, whose values may be modified in the shell,
+less any pairs removed by the
+.B unset
+command, plus any additions via the
+.B export
+and
+.B declare \-x
+commands.
+.PP
+The environment for any
+.I simple command
+or function may be augmented temporarily by prefixing it with
+parameter assignments, as described above in
+.SM
+.BR PARAMETERS .
+These assignment statements affect only the environment seen
+by that command.
+.PP
+If the 
+.B \-k
+option is set (see the
+.B set
+builtin command below), then
+.I all
+parameter assignments are placed in the environment for a command,
+not just those that precede the command name.
+.PP
+When
+.B bash
+invokes an external command, the variable
+.B _
+is set to the full file name of the command and passed to that
+command in its environment.
+.SH "EXIT STATUS"
+For the shell's purposes, a command which exits with a 
+zero exit status has succeeded.  An exit status of zero
+indicates success.  A non-zero exit status indicates failure.
+When a command terminates on a fatal signal \fIN\fP, \fBbash\fP uses
+the value of 128+\fIN\fP as the exit status.
+.PP
+If a command is not found, the child process created to
+execute it returns a status of 127.  If a command is found
+but is not executable, the return status is 126.
+.PP
+If a command fails because of an error during expansion or redirection,
+the exit status is greater than zero.
+.PP
+Shell builtin commands return a status of 0 (\fItrue\fP) if
+successful, and non-zero (\fIfalse\fP) if an error occurs
+while they execute. 
+All builtins return an exit status of 2 to indicate incorrect usage.
+.PP
+\fBBash\fP itself returns the exit status of the last command
+executed, unless a syntax error occurs, in which case it exits
+with a non-zero value.  See also the \fBexit\fP builtin
+command below.
+.SH SIGNALS
+When \fBbash\fP is interactive, in the absence of any traps, it ignores
+.SM
+.B SIGTERM
+(so that \fBkill 0\fP does not kill an interactive shell),
+and
+.SM
+.B SIGINT
+is caught and handled (so that the \fBwait\fP builtin is interruptible).
+In all cases, \fBbash\fP ignores
+.SM
+.BR SIGQUIT .
+If job control is in effect,
+.B bash
+ignores
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+Synchronous jobs started by \fBbash\fP have signal handlers
+set to the values inherited by the shell from its parent.
+When job control is not in effect, asynchronous commands
+ignore
+.SM
+.B SIGINT
+and
+.SM
+.B SIGQUIT
+as well.
+Commands run as a result of command substitution ignore the
+keyboard-generated job control signals
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+The shell exits by default upon receipt of a
+.SM
+.BR SIGHUP .
+Before exiting, an interactive shell resends the
+.SM
+.B SIGHUP
+to all jobs, running or stopped.
+Stopped jobs are sent
+.SM
+.B SIGCONT
+to ensure that they receive the
+.SM
+.BR SIGHUP .
+To prevent the shell from
+sending the signal to a particular job, it should be removed from the
+jobs table with the 
+.B disown
+builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below) or marked 
+to not receive
+.SM
+.B SIGHUP
+using
+.BR "disown \-h" .
+.PP
+If the
+.B huponexit
+shell option has been set with
+.BR shopt ,
+.B bash
+sends a 
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.PP
+When \fBbash\fP receives a signal for which a trap has been set while
+waiting for a command to complete, the trap will not be executed until
+the command completes.
+When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP
+builtin, the reception of a signal for which a trap has been set will
+cause the \fBwait\fP builtin to return immediately with an exit status
+greater than 128, immediately after which the trap is executed.
+.SH "JOB CONTROL"
+.I Job control
+refers to the ability to selectively stop (\fIsuspend\fP)
+the execution of processes and continue (\fIresume\fP)
+their execution at a later point.  A user typically employs
+this facility via an interactive interface supplied jointly
+by the system's terminal driver and
+.BR bash .
+.PP
+The shell associates a
+.I job
+with each pipeline.  It keeps a table of currently executing
+jobs, which may be listed with the
+.B jobs
+command.  When
+.B bash
+starts a job asynchronously (in the
+.IR background ),
+it prints a line that looks like:
+.RS
+.PP
+[1] 25647
+.RE
+.PP
+indicating that this job is job number 1 and that the process ID
+of the last process in the pipeline associated with this job is 25647.
+All of the processes in a single pipeline are members of the same job.
+.B Bash
+uses the
+.I job
+abstraction as the basis for job control.
+.PP
+To facilitate the implementation of the user interface to job
+control, the operating system maintains the notion of a \fIcurrent terminal
+process group ID\fP.  Members of this process group (processes whose
+process group ID is equal to the current terminal process group ID)
+receive keyboard-generated signals such as
+.SM
+.BR SIGINT .
+These processes are said to be in the
+.IR foreground .
+.I Background
+processes are those whose process group ID differs from the terminal's;
+such processes are immune to keyboard-generated signals.
+Only foreground processes are allowed to read from or write to the
+terminal.  Background processes which attempt to read from (write to) the
+terminal are sent a 
+.SM
+.B SIGTTIN (SIGTTOU)
+signal by the terminal driver, 
+which, unless caught, suspends the process.
+.PP
+If the operating system on which
+.B bash
+is running supports
+job control,
+.B bash
+contains facilities to use it.
+Typing the
+.I suspend
+character (typically
+.BR ^Z ,
+Control-Z) while a process is running
+causes that process to be stopped and returns control to 
+.BR bash .
+Typing the
+.I "delayed suspend"
+character (typically
+.BR ^Y ,
+Control-Y) causes the process to be stopped when it
+attempts to read input from the terminal, and control to
+be returned to
+.BR bash .
+The user may then manipulate the state of this job, using the
+.B bg
+command to continue it in the background, the
+.B fg
+command to continue it in the foreground, or
+the
+.B kill
+command to kill it.  A \fB^Z\fP takes effect immediately,
+and has the additional side effect of causing pending output
+and typeahead to be discarded.
+.PP
+There are a number of ways to refer to a job in the shell.
+The character
+.B %
+introduces a job name.  Job number
+.I n
+may be referred to as
+.BR %n .
+A job may also be referred to using a prefix of the name used to
+start it, or using a substring that appears in its command line.
+For example,
+.B %ce
+refers to a stopped
+.B ce
+job.  If a prefix matches more than one job,
+.B bash
+reports an error.  Using
+.BR %?ce ,
+on the other hand, refers to any job containing the string
+.B ce
+in its command line.  If the substring matches more than one job,
+.B bash
+reports an error.  The symbols
+.B %%
+and
+.B %+
+refer to the shell's notion of the
+.IR "current job" ,
+which is the last job stopped while it was in
+the foreground or started in the background.
+The 
+.I "previous job"
+may be referenced using
+.BR %\- .
+In output pertaining to jobs (e.g., the output of the
+.B jobs
+command), the current job is always flagged with a
+.BR + ,
+and the previous job with a
+.BR \- .
+.PP
+Simply naming a job can be used to bring it into the
+foreground:
+.B %1
+is a synonym for
+\fB``fg %1''\fP,
+bringing job 1 from the background into the foreground.
+Similarly,
+.B ``%1 &''
+resumes job 1 in the background, equivalent to
+\fB``bg %1''\fP.
+.PP
+The shell learns immediately whenever a job changes state.
+Normally,
+.B bash
+waits until it is about to print a prompt before reporting
+changes in a job's status so as to not interrupt
+any other output.  If the 
+.B \-b
+option to the
+.B set
+builtin command
+is enabled,
+.B bash
+reports such changes immediately.
+Any trap on
+.SM
+.B SIGCHLD
+is executed for each child that exits.
+.PP
+If an attempt to exit
+.B bash
+is made while jobs are stopped, the shell prints a warning message.  The
+.B jobs
+command may then be used to inspect their status.
+If a second attempt to exit is made without an intervening command,
+the shell does not print another warning, and the stopped
+jobs are terminated.
+.SH PROMPTING
+When executing interactively, 
+.B bash
+displays the primary prompt
+.SM
+.B PS1
+when it is ready to read a command, and the secondary prompt
+.SM
+.B PS2
+when it needs more input to complete a command.
+.B Bash
+allows these prompt strings to be customized by inserting a number of
+backslash-escaped special characters that are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+an ASCII bell character (07)
+.TP
+.B \ed
+the date in "Weekday Month Date" format (e.g., "Tue May 26")
+.TP
+.B \eD{\fIformat\fP}
+the \fIformat\fP is passed to \fIstrftime\fP(3) and the result is inserted
+into the prompt string; an empty \fIformat\fP results in a locale-specific
+time representation.  The braces are required
+.TP
+.B \ee
+an ASCII escape character (033)
+.TP
+.B \eh
+the hostname up to the first `.'
+.TP
+.B \eH
+the hostname
+.TP
+.B \ej
+the number of jobs currently managed by the shell
+.TP
+.B \el
+the basename of the shell's terminal device name
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \es
+the name of the shell, the basename of
+.B $0
+(the portion following the final slash)
+.TP
+.B \et
+the current time in 24-hour HH:MM:SS format
+.TP
+.B \eT
+the current time in 12-hour HH:MM:SS format
+.TP
+.B \e@
+the current time in 12-hour am/pm format
+.TP
+.B \eA
+the current time in 24-hour HH:MM format
+.TP
+.B \eu
+the username of the current user
+.TP
+.B \ev
+the version of \fBbash\fP (e.g., 2.00)
+.TP
+.B \eV
+the release of \fBbash\fP, version + patchelvel (e.g., 2.00.0)
+.TP
+.B \ew
+the current working directory
+.TP
+.B \eW
+the basename of the current working directory
+.TP
+.B \e!
+the history number of this command
+.TP
+.B \e#
+the command number of this command
+.TP
+.B \e$
+if the effective UID is 0, a
+.BR # ,
+otherwise a
+.B $
+.TP
+.B \e\fInnn\fP
+the character corresponding to the octal number \fInnn\fP
+.TP
+.B \e\e
+a backslash
+.TP
+.B \e[
+begin a sequence of non-printing characters, which could be used to
+embed a terminal control sequence into the prompt
+.TP
+.B \e]
+end a sequence of non-printing characters
+.PD
+.RE
+.PP
+The command number and the history number are usually different:
+the history number of a command is its position in the history
+list, which may include commands restored from the history file
+(see
+.SM
+.B HISTORY
+below), while the command number is the position in the sequence
+of commands executed during the current shell session.
+After the string is decoded, it is expanded via
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal, subject to the value of the
+.B promptvars
+shell option (see the description of the
+.B shopt
+command under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+.SH READLINE
+This is the library that handles reading input when using an interactive
+shell, unless the
+.B \-\-noediting
+option is given at shell invocation.
+By default, the line editing commands are similar to those of emacs.
+A vi-style line editing interface is also available.
+To turn off line editing after the shell is running, use the
+.B +o emacs
+or
+.B +o vi
+options to the
+.B set
+builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Notation"
+.PP
+In this section, the emacs-style notation is used to denote
+keystrokes.  Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
+means Control\-N.  Similarly, 
+.I meta
+keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X.  (On keyboards
+without a 
+.I meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
+then the
+.I x
+key.  This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
+or press the Escape key
+then hold the Control key while pressing the
+.I x
+key.)
+.PP
+Readline commands may be given numeric
+.IR arguments ,
+which normally act as a repeat count.
+Sometimes, however, it is the sign of the argument that is significant.
+Passing a negative argument to a command that acts in the forward
+direction (e.g., \fBkill\-line\fP) causes that command to act in a
+backward direction. 
+Commands whose behavior with arguments deviates from this are noted
+below.
+.PP
+When a command is described as \fIkilling\fP text, the text
+deleted is saved for possible future retrieval
+(\fIyanking\fP).  The killed text is saved in a
+\fIkill ring\fP.  Consecutive kills cause the text to be
+accumulated into one unit, which can be yanked all at once. 
+Commands which do not kill text separate the chunks of text
+on the kill ring.
+.SS "Readline Initialization"
+.PP
+Readline is customized by putting commands in an initialization
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
+.SM
+.B INPUTRC
+variable.  If that variable is unset, the default is
+.IR ~/.inputrc .
+When a program which uses the readline library starts up, the
+initialization file is read, and the key bindings and variables
+are set.
+There are only a few basic constructs allowed in the
+readline initialization file.
+Blank lines are ignored.
+Lines beginning with a \fB#\fP are comments.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
+.PP
+The default key-bindings may be changed with an
+.I inputrc 
+file.
+Other programs that use this library may add their own commands
+and bindings.
+.PP
+For example, placing
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+or
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+into the 
+.I inputrc
+would make M\-C\-u execute the readline command
+.IR universal\-argument .
+.PP
+The following symbolic character names are recognized:
+.IR RUBOUT ,
+.IR DEL ,
+.IR ESC ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR SPC ,
+.IR SPACE ,
+and
+.IR TAB .
+.PP
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a \fImacro\fP).
+.SS "Readline Key Bindings"
+.PP
+The syntax for controlling key bindings in the
+.I inputrc
+file is simple.  All that is required is the name of the
+command or the text of a macro and a key sequence to which
+it should be bound. The name may be specified in one of two ways:
+as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
+prefixes, or as a key sequence.
+.PP
+When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.I keyname
+is the name of a key spelled out in English.  For example:
+.sp
+.RS
+Control-u: universal\-argument
+.br
+Meta-Rubout: backward-kill-word
+.br
+Control-o: "> output"
+.RE
+.LP
+In the above example,
+.I C\-u
+is bound to the function
+.BR universal\-argument ,
+.I M\-DEL
+is bound to the function
+.BR backward\-kill\-word ,
+and
+.I C\-o
+is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+.if t \f(CW> output\fP
+.if n ``> output''
+into the line).
+.PP
+In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.B keyseq
+differs from
+.B keyname
+above in that strings denoting
+an entire key sequence may be specified by placing the sequence
+within double quotes.  Some GNU Emacs style key escapes can be
+used, as in the following example, but the symbolic character names
+are not recognized.
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+In this example,
+.I C\-u
+is again bound to the function
+.BR universal\-argument .
+.I "C\-x C\-r"
+is bound to the function
+.BR re\-read\-init\-file ,
+and 
+.I "ESC [ 1 1 ~"
+is bound to insert the text
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+The full set of GNU Emacs style escape sequences is
+.RS
+.PD 0
+.TP
+.B \eC\-
+control prefix
+.TP
+.B \eM\-
+meta prefix
+.TP
+.B \ee
+an escape character
+.TP
+.B \e\e
+backslash
+.TP
+.B \e"
+literal "
+.TP
+.B \e'
+literal '
+.RE
+.PD
+.PP
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ed
+delete
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.RE
+.PD
+.PP
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including " and '.
+.PP
+.B Bash
+allows the current readline key bindings to be displayed or modified
+with the
+.B bind
+builtin command.  The editing mode may be switched during interactive
+use by using the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Variables"
+.PP
+Readline has variables that can be used to further customize its
+behavior.  A variable may be set in the
+.I inputrc
+file with a statement of the form
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+Except where noted, readline variables can take the values
+.B On
+or
+.BR Off .
+The variables and their default values are:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+Controls what happens when readline wants to ring the terminal bell.
+If set to \fBnone\fP, readline never rings the bell.  If set to
+\fBvisible\fP, readline uses a visible bell if one is available.
+If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+.TP
+.B comment\-begin (``#'')
+The string that is inserted when the readline
+.B insert\-comment
+command is executed.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
+.TP
+.B completion\-ignore\-case (Off)
+If set to \fBOn\fP, readline performs filename matching and completion
+in a case\-insensitive fashion.
+.TP
+.B completion\-query\-items (100)
+This determines when the user is queried about viewing
+the number of possible completions
+generated by the \fBpossible\-completions\fP command.
+It may be set to any integer value greater than or equal to
+zero.  If the number of possible completions is greater than
+or equal to the value of this variable, the user is asked whether
+or not he wishes to view them; otherwise they are simply listed
+on the terminal.
+.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prefixing an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion.  Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to \fIemacs\fP or \fIvi\fP.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called.  Some systems need this to enable the
+arrow keys.
+.TP
+.B expand\-tilde (Off)
+If set to \fBon\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B history-preserve-point
+If set to \fBon\fP, the history code attempts to place point at the
+same location on each history line retrived with \fBprevious-history\fP
+or \fBnext-history\fP.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+.TP
+.B input\-meta (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not strip the high bit from the characters it reads),
+regardless of what the terminal claims it can support.  The name
+.B meta\-flag
+is a synonym for this variable.
+.TP
+.B isearch\-terminators (``C\-[C\-J'')
+The string of characters that should terminate an incremental
+search without subsequently executing the character as a command.
+If this variable has not been given a value, the characters
+\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+.TP
+.B keymap (emacs)
+Set the current readline keymap.  The set of valid keymap names is
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.  The default value is
+.IR emacs ;
+the value of
+.B editing\-mode
+also affects the default keymap.
+.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B mark\-symlinked\-directories (Off)
+If set to \fBOn\fP, completed names which are symbolic links to directories
+have a slash appended (subject to the value of
+\fBmark\-directories\fP).
+.TP
+.B match\-hidden\-files (On)
+This variable, when set to \fBOn\fP, causes readline to match files whose
+names begin with a `.' (hidden files) when performing filename 
+completion, unless the leading `.' is
+supplied by the user in the filename to be completed.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+.TP
+.B page\-completions (On)
+If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+to display a screenful of possible completions at a time.
+.TP
+.B print\-completions\-horizontally (Off)
+If set to \fBOn\fP, readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+.TP
+.B show\-all\-if\-ambiguous (Off)
+This alters the default behavior of the completion functions.  If
+set to
+.BR on ,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+.TP
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fIstat\fP(2) is appended to the filename when listing possible
+completions.
+.PD
+.SS "Readline Conditional Constructs"
+.PP
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests.  There are four parser directives used.
+.IP \fB$if\fP
+The 
+.B $if
+construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+readline.  The text of the test extends to the end of the line;
+no characters are required to isolate it.
+.RS
+.IP \fBmode\fP
+The \fBmode=\fP form of the \fB$if\fP directive is used to test
+whether readline is in emacs or vi mode.
+This may be used in conjunction
+with the \fBset keymap\fP command, for instance, to set bindings in
+the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if
+readline is starting out in emacs mode.
+.IP \fBterm\fP
+The \fBterm=\fP form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys.  The word on the right side of the
+.B =
+is tested against the both full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP.  This allows
+.I sun
+to match both
+.I sun
+and
+.IR sun\-cmd ,
+for instance.
+.IP \fBapplication\fP
+The \fBapplication\fP construct is used to include
+application-specific settings.  Each program using the readline
+library sets the \fIapplication name\fP, and an initialization
+file can test for a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program.  For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC\-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.RE
+.IP \fB$endif\fP
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.IP \fB$else\fP
+Commands in this branch of the \fB$if\fP directive are executed if
+the test fails.
+.IP \fB$include\fP
+This directive takes a single filename as an argument and reads commands
+and bindings from that file.  For example, the following directive
+would read \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SS Searching
+.PP
+Readline provides commands for searching through the command history
+(see
+.SM
+.B HISTORY
+below) for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+The characters present in the value of the \fBisearch-terminators\fP
+variable are used to terminate an incremental search.
+If that variable has not been assigned a value the Escape and
+Control-J characters will terminate an incremental search.
+Control-G will abort an incremental search and restore the original
+line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+.PP
+To find other matching entries in the history list, type Control-S or
+Control-R as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a readline command will terminate
+the search and execute that command.
+For instance, a \fInewline\fP will terminate the search and accept
+the line, thereby executing the command from the history list.
+.PP
+Readline remembers the last incremental search string.  If two
+Control-Rs are typed without any intervening characters defining a
+new search string, any remembered search string is used.
+.PP
+Non-incremental searches read the entire search string before starting
+to search for matching history lines.  The search string may be
+typed by the user or be part of the contents of the current line.
+.SS "Readline Command Names"
+.PP
+The following is a list of the names of the commands and the default
+key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
+In the following descriptions, \fIpoint\fP refers to the current cursor
+position, and \fImark\fP refers to a cursor position saved by the
+\fBset\-mark\fP command.
+The text between the point and mark is referred to as the \fIregion\fP.
+.SS Commands for Moving
+.PP
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+Move to the start of the current line.
+.TP
+.B end\-of\-line (C\-e)
+Move to the end of the line.
+.TP
+.B forward\-char (C\-f)
+Move forward a character.
+.TP
+.B backward\-char (C\-b)
+Move back a character.
+.TP
+.B forward\-word (M\-f)
+Move forward to the end of the next word.  Words are composed of
+alphanumeric characters (letters and digits).
+.TP
+.B backward\-word (M\-b)
+Move back to the start of the current or previous word.  Words are
+composed of alphanumeric characters (letters and digits).
+.TP
+.B clear\-screen (C\-l)
+Clear the screen leaving the current line at the top of the screen.
+With an argument, refresh the current line without clearing the
+screen.
+.TP
+.B redraw\-current\-line
+Refresh the current line.
+.PD
+.SS Commands for Manipulating the History
+.PP
+.PD 0
+.TP
+.B accept\-line (Newline, Return)
+Accept the line regardless of where the cursor is.  If this line is
+non-empty, add it to the history list according to the state of the
+.SM
+.B HISTCONTROL
+variable.  If the line is a modified history
+line, then restore the history line to its original state.
+.TP
+.B previous\-history (C\-p)
+Fetch the previous command from the history list, moving back in
+the list.
+.TP
+.B next\-history (C\-n)
+Fetch the next command from the history list, moving forward in the
+list.
+.TP
+.B beginning\-of\-history (M\-<)
+Move to the first line in the history.
+.TP
+.B end\-of\-history (M\->)
+Move to the end of the input history, i.e., the line currently being
+entered.
+.TP
+.B reverse\-search\-history (C\-r)
+Search backward starting at the current line and moving `up' through
+the history as necessary.  This is an incremental search.
+.TP
+.B forward\-search\-history (C\-s)
+Search forward starting at the current line and moving `down' through
+the history as necessary.  This is an incremental search.
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+Search backward through the history starting at the current line
+using a non-incremental search for a string supplied by the user.
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+Search forward through the history using a non-incremental search for
+a string supplied by the user.
+.TP
+.B history\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B history\-search\-backward
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B yank\-nth\-arg (M\-C\-y)
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument
+.IR n ,
+insert the \fIn\fPth word from the previous command (the words
+in the previous command begin with word 0).  A negative argument
+inserts the \fIn\fPth word from the end of the previous command.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry).  With an argument,
+behave exactly like \fByank\-nth\-arg\fP.
+Successive calls to \fByank\-last\-arg\fP move back through the history
+list, inserting the last argument of each line in turn.
+.TP
+.B shell\-expand\-line (M\-C\-e)
+Expand the line as the shell does.  This
+performs alias and history expansion as well as all of the shell
+word expansions.  See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B history\-expand\-line (M\-^)
+Perform history expansion on the current line.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B magic\-space
+Perform history expansion on the current line and insert a space.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B alias\-expand\-line
+Perform alias expansion on the current line.
+See
+.SM
+.B ALIASES
+above for a description of alias expansion.
+.TP
+.B history\-and\-alias\-expand\-line
+Perform history and alias expansion on the current line.
+.TP
+.B insert\-last\-argument (M\-.\^, M\-_\^)
+A synonym for \fByank\-last\-arg\fP.
+.TP
+.B operate\-and\-get\-next (C\-o)
+Accept the current line for execution and fetch the next line
+relative to the current line from the history for editing.  Any
+argument is ignored.
+.TP
+.B edit\-and\-execute\-command (C\-xC\-e)
+Invoke an editor on the current command line, and execute the result as shell
+commands.
+\fBBash\fP attempts to invoke
+.SM
+.BR $FCEDIT ,
+.SM
+.BR $EDITOR ,
+and \fIemacs\fP as the editor, in that order.
+.PD
+.SS Commands for Changing Text
+.PP
+.PD 0
+.TP
+.B delete\-char (C\-d)
+Delete the character at point.  If point is at the
+beginning of the line, there are no characters in the line, and
+the last character typed was not bound to \fBdelete\-char\fP,
+then return
+.SM
+.BR EOF .
+.TP
+.B backward\-delete\-char (Rubout)
+Delete the character behind the cursor.  When given a numeric argument,
+save the deleted text on the kill ring.
+.TP
+.B forward\-backward\-delete\-char
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted.
+.TP
+.B quoted\-insert (C\-q, C\-v)
+Add the next character typed to the line verbatim.  This is
+how to insert characters like \fBC\-q\fP, for example.
+.TP
+.B tab\-insert (C\-v TAB)
+Insert a tab character.
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+Insert the character typed.
+.TP
+.B transpose\-chars (C\-t)
+Drag the character before point forward over the character at point,
+moving point forward as well.
+If point is at the end of the line, then this transposes
+the two characters before point.
+Negative arguments have no effect.
+.TP
+.B transpose\-words (M\-t)
+Drag the word before point past the word after point,
+moving point over that word as well.
+If point is at the end of the line, this transposes
+the last two words on the line.   
+.TP
+.B upcase\-word (M\-u)
+Uppercase the current (or following) word.  With a negative argument,
+uppercase the previous word, but do not move point.
+.TP
+.B downcase\-word (M\-l)
+Lowercase the current (or following) word.  With a negative argument,
+lowercase the previous word, but do not move point.
+.TP
+.B capitalize\-word (M\-c)
+Capitalize the current (or following) word.  With a negative argument,
+capitalize the previous word, but do not move point.
+.TP
+.B overwrite\-mode
+Toggle overwrite mode.  With an explicit positive numeric argument,
+switches to overwrite mode.  With an explicit non-positive numeric
+argument, switches to insert mode.  This command affects only
+\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Each call to \fIreadline()\fP starts in insert mode.
+In overwrite mode, characters bound to \fBself\-insert\fP replace   
+the text at point rather than pushing the text to the right.
+Characters bound to \fBbackward\-delete\-char\fP replace the character
+before point with a space.  By default, this command is unbound.
+.PD
+.SS Killing and Yanking
+.PP
+.PD 0
+.TP
+.B kill\-line (C\-k)
+Kill the text from point to the end of the line.
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+Kill backward to the beginning of the line.
+.TP
+.B unix\-line\-discard (C\-u)
+Kill backward from point to the beginning of the line.
+The killed text is saved on the kill-ring.
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+Kill all characters on the current line, no matter where point is.
+.TP
+.B kill\-word  (M\-d)
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as those used by \fBforward\-word\fP.
+.TP
+.B backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBbackward\-word\fP.
+.TP
+.B unix\-word\-rubout (C\-w)
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+.TP
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text in the current region.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+The word boundaries are the same as \fBbackward\-word\fP.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
+The word boundaries are the same as \fBforward\-word\fP.
+.TP
+.B yank (C\-y)
+Yank the top of the kill ring into the buffer at point.
+.TP
+.B yank\-pop (M\-y)
+Rotate the kill ring, and yank the new top.  Only works following
+.B yank
+or
+.BR yank\-pop .
+.PD
+.SS Numeric Arguments
+.PP
+.PD 0
+.TP
+.B digit\-argument (M\-0, M\-1, ..., M\-\-)
+Add this digit to the argument already accumulating, or start a new
+argument.  M\-\- starts a negative argument.
+.TP
+.B universal\-argument
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing
+.B universal\-argument
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+.PD
+.SS Completing
+.PP
+.PD 0
+.TP
+.B complete (TAB)
+Attempt to perform completion on the text before point.
+.B Bash
+attempts completion treating the text as a variable (if the
+text begins with \fB$\fP), username (if the text begins with
+\fB~\fP), hostname (if the text begins with \fB@\fP), or
+command (including aliases and functions) in turn.  If none
+of these produces a match, filename completion is attempted.
+.TP
+.B possible\-completions (M\-?)
+List the possible completions of the text before point.
+.TP
+.B insert\-completions (M\-*)
+Insert all completions of the text before point
+that would have been generated by
+\fBpossible\-completions\fP.
+.TP
+.B menu\-complete
+Similar to \fBcomplete\fP, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of \fBmenu\-complete\fP steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of \fBbell\-style\fP)
+and the original text is restored.
+An argument of \fIn\fP moves \fIn\fP positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to \fBTAB\fP, but is unbound
+by default.
+.TP
+.B delete\-char\-or\-list
+Deletes the character under the cursor if not at the beginning or
+end of the line (like \fBdelete\-char\fP).
+If at the end of the line, behaves identically to
+\fBpossible\-completions\fP.
+This command is unbound by default.
+.TP
+.B complete\-filename (M\-/)
+Attempt filename completion on the text before point.
+.TP
+.B possible\-filename\-completions (C\-x /)
+List the possible completions of the text before point,
+treating it as a filename.
+.TP
+.B complete\-username (M\-~)
+Attempt completion on the text before point, treating
+it as a username.
+.TP
+.B possible\-username\-completions (C\-x ~)
+List the possible completions of the text before point,
+treating it as a username.
+.TP
+.B complete\-variable (M\-$)
+Attempt completion on the text before point, treating
+it as a shell variable.
+.TP
+.B possible\-variable\-completions (C\-x $)
+List the possible completions of the text before point,
+treating it as a shell variable.
+.TP
+.B complete\-hostname (M\-@)
+Attempt completion on the text before point, treating
+it as a hostname.
+.TP
+.B possible\-hostname\-completions (C\-x @)
+List the possible completions of the text before point,
+treating it as a hostname.
+.TP
+.B complete\-command (M\-!)
+Attempt completion on the text before point, treating
+it as a command name.  Command completion attempts to
+match the text against aliases, reserved words, shell
+functions, shell builtins, and finally executable filenames,
+in that order.
+.TP
+.B possible\-command\-completions (C\-x !)
+List the possible completions of the text before point,
+treating it as a command name.
+.TP
+.B dynamic\-complete\-history (M\-TAB)
+Attempt completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+.TP
+.B complete\-into\-braces (M\-{)
+Perform filename completion and insert the list of possible completions
+enclosed within braces so the list is available to the shell (see
+.B Brace Expansion
+above).
+.PD
+.SS Keyboard Macros
+.PP
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+Begin saving the characters typed into the current keyboard macro.
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+Stop saving the characters typed into the current keyboard macro
+and store the definition.
+.TP
+.B call\-last\-kbd\-macro (C\-x e)
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+.PD
+.SS Miscellaneous
+.PP
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
+any bindings or variable assignments found there.
+.TP
+.B abort (C\-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+.BR bell\-style ).
+.TP
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is lowercase, run the command
+that is bound to the corresponding uppercase character.
+.TP
+.B prefix\-meta (ESC)
+Metafy the next character typed.
+.SM
+.B ESC
+.B f
+is equivalent to
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+Incremental undo, separately remembered for each line.
+.TP
+.B revert\-line (M\-r)
+Undo all changes made to this line.  This is like executing the
+.B undo
+command enough times to return the line to its initial state.
+.TP
+.B tilde\-expand (M\-&)
+Perform tilde expansion on the current word.
+.TP
+.B set\-mark (C\-@, M\-<space>)
+Set the mark to the point.  If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B exchange\-point\-and\-mark (C\-x C\-x)
+Swap the point with the mark.  The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+.TP
+.B character\-search (C\-])
+A character is read and point is moved to the next occurrence of that
+character.  A negative count searches for previous occurrences.
+.TP
+.B character\-search\-backward (M\-C\-])
+A character is read and point is moved to the previous occurrence of that
+character.  A negative count searches for subsequent occurrences.
+.TP
+.B insert\-comment (M\-#)
+Without a numeric argument, the value of the readline
+.B comment\-begin
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle:  if
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters in \fBcomment-begin\fP are deleted from the beginning of 
+the line.
+In either case, the line is accepted as if a newline had been typed.
+The default value of
+\fBcomment\-begin\fP causes this command to make the current line
+a shell comment.
+If a numeric argument causes the comment character to be removed, the line
+will be executed by the shell.
+.TP
+.B glob\-complete\-word (M\-g)
+The word before point is treated as a pattern for pathname expansion,
+with an asterisk implicitly appended.  This pattern is used to
+generate a list of matching file names for possible completions.
+.TP
+.B glob\-expand\-word (C\-x *)
+The word before point is treated as a pattern for pathname expansion,
+and the list of matching file names is inserted, replacing the word.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B glob\-list\-expansions (C\-x g)
+The list of expansions that would have been generated by
+.B glob\-expand\-word
+is displayed, and the line is redrawn.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B dump\-functions
+Print all of the functions and their key bindings to the
+readline output stream.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-variables
+Print all of the settable readline variables and their values to the
+readline output stream.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-macros
+Print all of the readline key sequences bound to macros and the
+strings they ouput.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B display\-shell\-version (C\-x C\-v)
+Display version information about the current instance of
+.BR bash .
+.PD
+.SS Programmable Completion
+.PP
+When word completion is attempted for an argument to a command for
+which a completion specification (a \fIcompspec\fP) has been defined
+using the \fBcomplete\fP builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the programmable completion facilities are invoked.
+.PP
+First, the command name is identified.
+If a compspec has been defined for that command, the
+compspec is used to generate the list of possible completions for the word.
+If the command word is a full pathname, a compspec for the full
+pathname is searched for first.
+If no compspec is found for the full pathname, an attempt is made to
+find a compspec for the portion following the final slash.
+.PP
+Once a compspec has been found, it is used to generate the list of
+matching words.
+If a compspec is not found, the default \fBbash\fP completion as
+described above under \fBCompleting\fP is performed.
+.PP
+First, the actions specified by the compspec are used.
+Only matches which are prefixed by the word being completed are
+returned.
+When the
+.B \-f
+or
+.B \-d
+option is used for filename or directory name completion, the shell
+variable
+.SM
+.B FIGNORE
+is used to filter the matches.
+.PP
+Any completions specified by a filename expansion pattern to the
+\fB\-G\fP option are generated next.
+The words generated by the pattern need not match the word
+being completed.
+The
+.SM
+.B GLOBIGNORE
+shell variable is not used to filter the matches, but the
+.SM
+.B FIGNORE
+variable is used.
+.PP
+Next, the string specified as the argument to the \fB\-W\fP option
+is considered.
+The string is first split using the characters in the
+.SM
+.B IFS
+special variable as delimiters.
+Shell quoting is honored.
+Each word is then expanded using
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and pathname expansion,
+as described above under 
+.SM
+.BR EXPANSION .
+The results are split using the rules described above under
+\fBWord Splitting\fP.
+The results of the expansion are prefix-matched against the word being
+completed, and the matching words become the possible completions.
+.PP
+After these matches have been generated, any shell function or command
+specified with the \fB\-F\fP and \fB\-C\fP options is invoked.
+When the command or function is invoked, the
+.SM
+.B COMP_LINE
+and
+.SM
+.B COMP_POINT
+variables are assigned values as described above under
+\fBShell Variables\fP.
+If a shell function is being invoked, the 
+.SM
+.B COMP_WORDS
+and
+.SM
+.B COMP_CWORD
+variables are also set.
+When the function or command is invoked, the first argument is the
+name of the command whose arguments are being completed, the
+second argument is the word being completed, and the third argument
+is the word preceding the word being completed on the current command line.
+No filtering of the generated completions against the word being completed
+is performed; the function or command has complete freedom in generating
+the matches.
+.PP
+Any function specified with \fB\-F\fP is invoked first.
+The function may use any of the shell facilities, including the
+\fBcompgen\fP builtin described below, to generate the matches.
+It must put the possible completions in the
+.SM
+.B COMPREPLY
+array variable.
+.PP
+Next, any command specified with the \fB\-C\fP option is invoked
+in an environment equivalent to command substitution.
+It should print a list of completions, one per line, to the
+standard output.
+Backslash may be used to escape a newline, if necessary.
+.PP
+After all of the possible completions are generated, any filter
+specified with the \fB\-X\fP option is applied to the list.
+The filter is a pattern as used for pathname expansion; a \fB&\fP
+in the pattern is replaced with the text of the word being completed.
+A literal \fB&\fP may be escaped with a backslash; the backslash
+is removed before attempting a match.
+Any completion that matches the pattern will be removed from the list.
+A leading \fB!\fP negates the pattern; in this case any completion
+not matching the pattern will be removed.
+.PP
+Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP
+options are added to each member of the completion list, and the result is
+returned to the readline completion code as the list of possible
+completions.
+.PP
+If the previously-applied actions do not generate any matches, and the
+\fB\-o dirnames\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, directory name completion is attempted.
+.PP
+By default, if a compspec is found, whatever it generates is returned
+to the completion code as the full set of possible completions.
+The default \fBbash\fP completions are not attempted, and the readline
+default of filename completion is disabled.
+If the \fB-o default\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, readline's default completion will be performed
+if the compspec generates no matches.
+.PP
+When a compspec indicates that directory name completion is desired,
+the programmable completion functions force readline to append a slash
+to completed names which are symbolic links to directories, subject to  
+the value of the \fBmark\-directories\fP readline variable, regardless
+of the setting of the \fBmark-symlinked\-directories\fP readline variable.
+.SH HISTORY
+When the
+.B \-o history
+option to the
+.B set
+builtin is enabled, the shell provides access to the
+\fIcommand history\fP,
+the list of commands previously typed.
+The value of the \fBHISTSIZE\fP variable is used as the
+number of commands to save in a history list.
+The text of the last
+.SM
+.B HISTSIZE
+commands (default 500) is saved.  The shell
+stores each command in the history list prior to parameter and
+variable expansion (see
+.SM
+.B EXPANSION
+above) but after history expansion is performed, subject to the
+values of the shell variables
+.SM
+.B HISTIGNORE
+and
+.SM
+.BR HISTCONTROL .
+.PP
+On startup, the history is initialized from the file named by
+the variable
+.SM
+.B HISTFILE
+(default \fI~/.bash_history\fP).
+The file named by the value of
+.SM
+.B HISTFILE
+is truncated, if necessary, to contain no more than
+the number of lines specified by the value of
+.SM
+.BR HISTFILESIZE .
+When an interactive shell exits, the last
+.SM
+.B $HISTSIZE
+lines are copied from the history list to
+.SM
+.BR $HISTFILE .
+If the
+.B histappend
+shell option is enabled
+(see the description of
+.B shopt
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the lines are appended to the history file,
+otherwise the history file is overwritten.
+If
+.SM
+.B HISTFILE
+is unset, or if the history file is unwritable, the history is
+not saved.  After saving the history, the history file is truncated
+to contain no more than
+.SM
+.B HISTFILESIZE
+lines.  If
+.SM
+.B HISTFILESIZE
+is not set, no truncation is performed.
+.PP
+The builtin command
+.B fc
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below) may be used to list or edit and re-execute a portion of
+the history list.
+The
+.B history
+builtin may be used to display or modify the history list and
+manipulate the history file.
+When using command-line editing, search commands
+are available in each editing mode that provide access to the
+history list.
+.PP
+The shell allows control over which commands are saved on the history
+list.  The
+.SM
+.B HISTCONTROL
+and
+.SM
+.B HISTIGNORE
+variables may be set to cause the shell to save only a subset of the
+commands entered.
+The
+.B cmdhist
+shell option, if enabled, causes the shell to attempt to save each
+line of a multi-line command in the same history entry, adding
+semicolons where necessary to preserve syntactic correctness.
+The
+.B lithist
+shell option causes the shell to save the command with embedded newlines
+instead of semicolons.  See the description of the
+.B shopt
+builtin below under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+for information on setting and unsetting shell options.
+.SH "HISTORY EXPANSION"
+.PP
+The shell supports a history expansion feature that
+is similar to the history expansion in
+.BR csh.
+This section describes what syntax features are available.  This
+feature is enabled by default for interactive shells, and can be
+disabled using the
+.B \+H
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).  Non-interactive shells do not perform history expansion
+by default.
+.PP
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+.PP
+History expansion is performed immediately after a complete line
+is read, before the shell breaks it into words.
+It takes place in two parts.
+The first is to determine which line from the history list
+to use during substitution.
+The second is to select portions of that line for inclusion into
+the current one.
+The line selected from the history is the \fIevent\fP,
+and the portions of that line that are acted upon are \fIwords\fP.
+Various \fImodifiers\fP are available to manipulate the selected words.
+The line is broken into words in the same fashion as when reading input,
+so that several \fImetacharacter\fP-separated words surrounded by
+quotes are considered one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is \^\fB!\fP\^ by default.
+Only backslash (\^\fB\e\fP\^) and single quotes can quote
+the history expansion character.
+.PP
+Several shell options settable with the
+.B shopt
+builtin may be used to tailor the behavior of history expansion.
+If the
+.B histverify
+shell option is enabled (see the description of the
+.B shopt
+builtin), and
+.B readline
+is being used, history substitutions are not immediately passed to
+the shell parser.
+Instead, the expanded line is reloaded into the
+.B readline
+editing buffer for further modification.
+If
+.B readline
+is being used, and the
+.B histreedit
+shell option is enabled, a failed history substitution will be reloaded
+into the
+.B readline
+editing buffer for correction.
+The
+.B \-p
+option to the
+.B history
+builtin command may be used to see what a history expansion will
+do before using it.
+The
+.B \-s
+option to the
+.B history
+builtin may be used to add commands to the end of the history list
+without actually executing them, so that they are available for
+subsequent recall.
+.PP
+The shell allows control of the various characters used by the
+history expansion mechanism (see the description of
+.B histchars
+above under
+.BR "Shell Variables" ).
+.SS Event Designators
+.PP
+An event designator is a reference to a command line entry in the
+history list.
+.PP
+.PD 0
+.TP
+.B !
+Start a history substitution, except when followed by a
+.BR blank ,
+newline, = or (.
+.TP
+.B !\fIn\fR
+Refer to command line
+.IR n .
+.TP
+.B !\-\fIn\fR
+Refer to the current command line minus
+.IR n .
+.TP
+.B !!
+Refer to the previous command.  This is a synonym for `!\-1'.
+.TP
+.B !\fIstring\fR
+Refer to the most recent command starting with 
+.IR string .
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+Refer to the most recent command containing
+.IR string .
+The trailing \fB?\fP may be omitted if
+.I string
+is followed immediately by a newline.
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+Quick substitution.  Repeat the last command, replacing
+.I string1
+with
+.IR string2 .
+Equivalent to
+``!!:s/\fIstring1\fP/\fIstring2\fP/''
+(see \fBModifiers\fP below).
+.TP
+.B !#
+The entire command line typed so far.
+.PD
+.SS Word Designators
+.PP
+Word designators are used to select desired words from the event.
+A 
+.B :
+separates the event specification from the word designator.
+It may be omitted if the word designator begins with a
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+or
+.BR % .
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+Words are inserted into the current line separated by single spaces.
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+The zeroth word.  For the shell, this is the command
+word.
+.TP
+.I n
+The \fIn\fRth word.
+.TP
+.B ^
+The first argument.  That is, word 1.
+.TP
+.B $
+The last argument.
+.TP
+.B %
+The word matched by the most recent `?\fIstring\fR?' search.
+.TP
+.I x\fB\-\fPy
+A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+.TP
+.B *
+All of the words but the zeroth.  This is a synonym
+for `\fI1\-$\fP'.  It is not an error to use
+.B *
+if there is just one
+word in the event; the empty string is returned in that case.
+.TP
+.B x*
+Abbreviates \fIx\-$\fP.
+.TP
+.B x\-
+Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+.PD
+.PP
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+.SS Modifiers
+.PP
+After the optional word designator, there may appear a sequence of
+one or more of the following modifiers, each preceded by a `:'.
+.PP
+.PD 0
+.PP
+.TP
+.B h
+Remove a trailing file name component, leaving only the head.
+.TP
+.B t
+Remove all leading file name components, leaving the tail.
+.TP
+.B r
+Remove a trailing suffix of the form \fI.xxx\fP, leaving the
+basename.
+.TP
+.B e
+Remove all but the trailing suffix.
+.TP
+.B p
+Print the new command but do not execute it.
+.TP
+.B q
+Quote the substituted words, escaping further substitutions.
+.TP
+.B x
+Quote the substituted words as with
+.BR q ,
+but break into words at
+.B blanks
+and newlines.
+.TP
+.B s/\fIold\fP/\fInew\fP/
+Substitute
+.I new
+for the first occurrence of
+.I old
+in the event line.  Any delimiter can be used in place of /.  The
+final delimiter is optional if it is the last character of the
+event line.  The delimiter may be quoted in
+.I old
+and
+.I new
+with a single backslash.  If & appears in
+.IR new ,
+it is replaced by
+.IR old .
+A single backslash will quote the &.  If
+.I old
+is null, it is set to the last
+.I old
+substituted, or, if no previous history substitutions took place,
+the last
+.I string
+in a
+.B !?\fIstring\fR\fB[?]\fR
+search.
+.TP
+.B &
+Repeat the previous substitution.
+.TP
+.B g
+Cause changes to be applied over the entire event line.  This is
+used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
+or `\fB:&\fP'.  If used with
+`\fB:s\fP', any delimiter can be used
+in place of /, and the final delimiter is optional
+if it is the last character of the event line.
+.PD
+.SH "SHELL BUILTIN COMMANDS"
+.\" start of bash_builtins
+.zZ
+.PP
+Unless otherwise noted, each builtin command documented in this
+section as accepting options preceded by
+.B \-
+accepts
+.B \-\-
+to signify the end of the options.
+.sp .5
+.PD 0
+.TP
+\fB:\fP [\fIarguments\fP]
+.PD
+No effect; the command does nothing beyond expanding
+.I arguments
+and performing any specified
+redirections.  A zero exit code is returned.
+.TP
+\fB .\| \fP \fIfilename\fP [\fIarguments\fP]
+.PD 0
+.TP
+\fBsource\fP \fIfilename\fP [\fIarguments\fP]
+.PD
+Read and execute commands from
+.I filename
+in the current
+shell environment and return the exit status of the last command
+executed from
+.IR filename .
+If
+.I filename
+does not contain a slash, file names in
+.SM
+.B PATH
+are used to find the directory containing
+.IR filename .
+The file searched for in
+.SM
+.B PATH
+need not be executable.
+When \fBbash\fP is not in \fIposix mode\fP, the current directory is
+searched if no file is found in
+.SM
+.BR PATH .
+If the
+.B sourcepath
+option to the
+.B shopt
+builtin command is turned off, the
+.SM
+.B PATH
+is not searched.
+If any \fIarguments\fP are supplied, they become the positional
+parameters when \fIfilename\fP is executed.  Otherwise the positional
+parameters are unchanged.
+The return status is the status of the last command exited within
+the script (0 if no commands are executed), and false if
+.I filename
+is not found or cannot be read.
+.TP
+\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBAlias\fP with no arguments or with the
+.B \-p
+option prints the list of aliases in the form
+\fBalias\fP \fIname\fP=\fIvalue\fP on standard output.
+When arguments are supplied, an alias is defined for
+each \fIname\fP whose \fIvalue\fP is given.
+A trailing space in  \fIvalue\fP causes the next word to be
+checked for alias substitution when the alias is expanded.
+For each \fIname\fP in the argument list for which no \fIvalue\fP
+is supplied, the name and value of the alias is printed.
+\fBAlias\fP returns true unless a \fIname\fP is given for which
+no alias has been defined.
+.TP
+\fBbg\fP [\fIjobspec\fP]
+Resume the suspended job \fIjobspec\fP in the background, as if it
+had been started with
+.BR & .
+If \fIjobspec\fP is not present, the shell's notion of the
+\fIcurrent job\fP is used.
+.B bg
+.I jobspec
+returns 0 unless run when job control is disabled or, when run with
+job control enabled, if \fIjobspec\fP was not found or started without
+job control.
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\fP]
+.PD 0
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP]
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
+.TP
+\fBbind\fP \fIreadline\-command\fP
+.PD
+Display current
+.B readline
+key and function bindings, bind a key sequence to a
+.B readline
+function or macro, or set a
+.B readline
+variable.
+Each non-option argument is a command as it would appear in
+.IR .inputrc ,
+but each binding or command must be passed as a separate argument;
+e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-m \fIkeymap\fP
+Use
+.I keymap
+as the keymap to be affected by the subsequent bindings.
+Acceptable
+.I keymap
+names are
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-move, vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.
+.TP
+.B \-l
+List the names of all \fBreadline\fP functions.
+.TP
+.B \-p
+Display \fBreadline\fP function names and bindings in such a way
+that they can be re-read.
+.TP
+.B \-P
+List current \fBreadline\fP function names and bindings.
+.TP
+.B \-v
+Display \fBreadline\fP variable names and values in such a way that they
+can be re-read.
+.TP
+.B \-V
+List current \fBreadline\fP variable names and values.
+.TP
+.B \-s
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output in such a way that they can be re-read.
+.TP
+.B \-S
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output.
+.TP
+.B \-f \fIfilename\fP
+Read key bindings from \fIfilename\fP.
+.TP
+.B \-q \fIfunction\fP
+Query about which keys invoke the named \fIfunction\fP.
+.TP
+.B \-u \fIfunction\fP
+Unbind all keys bound to the named \fIfunction\fP.
+.TP
+.B \-r \fIkeyseq\fP
+Remove any current binding for \fIkeyseq\fP.
+.TP
+.B \-x \fIkeyseq\fP:\fIshell\-command\fP
+Cause \fIshell\-command\fP to be executed whenever \fIkeyseq\fP is
+entered.
+.PD
+.PP
+The return value is 0 unless an unrecognized option is given or an
+error occurred.
+.RE
+.TP
+\fBbreak\fP [\fIn\fP]
+Exit from within a
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.  If \fIn\fP is specified, break \fIn\fP levels.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, all enclosing loops
+are exited.  The return value is 0 unless the shell is not executing
+a loop when
+.B break
+is executed.
+.TP
+\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
+Execute the specified shell builtin, passing it
+.IR arguments ,
+and return its exit status.
+This is useful when defining a
+function whose name is the same as a shell builtin,
+retaining the functionality of the builtin within the function.
+The \fBcd\fP builtin is commonly redefined this way.
+The return status is false if
+.I shell\-builtin
+is not a shell builtin command.
+.TP
+\fBcd\fP [\fB\-L|-P\fP] [\fIdir\fP]
+Change the current directory to \fIdir\fP.  The variable
+.SM
+.B HOME
+is the
+default
+.IR dir .
+The variable
+.SM
+.B CDPATH
+defines the search path for the directory containing
+.IR dir .
+Alternative directory names in
+.SM
+.B CDPATH
+are separated by a colon (:).  A null directory name in
+.SM
+.B CDPATH
+is the same as the current directory, i.e., ``\fB.\fP''.  If
+.I dir
+begins with a slash (/),
+then
+.SM
+.B CDPATH
+is not used. The
+.B \-P
+option says to use the physical directory structure instead of
+following symbolic links (see also the
+.B \-P
+option to the
+.B set
+builtin command); the
+.B \-L
+option forces symbolic links to be followed.  An argument of
+.B \-
+is equivalent to
+.SM
+.BR $OLDPWD .
+The return value is true if the directory was successfully changed;
+false otherwise.
+.TP
+\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...]
+Run
+.I command
+with
+.I args
+suppressing the normal shell function lookup. Only builtin
+commands or commands found in the
+.SM
+.B PATH
+are executed.  If the
+.B \-p
+option is given, the search for
+.I command
+is performed using a default value for
+.B PATH
+that is guaranteed to find all of the standard utilities.
+If either the
+.B \-V
+or
+.B \-v
+option is supplied, a description of
+.I command
+is printed.  The
+.B \-v
+option causes a single word indicating the command or file name
+used to invoke
+.I command
+to be displayed; the
+.B \-V
+option produces a more verbose description.
+If the
+.B \-V
+or
+.B \-v
+option is supplied, the exit status is 0 if
+.I command
+was found, and 1 if not.  If neither option is supplied and
+an error occurred or
+.I command
+cannot be found, the exit status is 127.  Otherwise, the exit status of the
+.B command
+builtin is the exit status of
+.IR command .
+.TP
+\fBcompgen\fP [\fIoption\fP] [\fIword\fP]
+Generate possible completion matches for \fIword\fP according to
+the \fIoption\fPs, which may be any option accepted by the
+.B complete
+builtin with the exception of \fB\-p\fP and \fB\-r\fP, and write
+the matches to the standard output.
+When using the \fB\-F\fP or \fB\-C\fP options, the various shell variables
+set by the programmable completion facilities, while available, will not
+have useful values.
+.sp 1
+The matches will be generated in the same way as if the programmable
+completion code had generated them directly from a completion specification
+with the same flags.
+If \fIword\fP is specified, only those completions matching \fIword\fP
+will be displayed.
+.sp 1
+The return value is true unless an invalid option is supplied, or no
+matches were generated.
+.TP
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP]
+.br
+[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP]
+.PD 0
+.TP
+\fBcomplete\fP \fB\-pr\fP [\fIname\fP ...]
+.PD
+Specify how arguments to each \fIname\fP should be completed.
+If the \fB\-p\fP option is supplied, or if no options are supplied,
+existing completion specifications are printed in a way that allows
+them to be reused as input.
+The \fB\-r\fP option removes a completion specification for
+each \fIname\fP, or, if no \fIname\fPs are supplied, all
+completion specifications.
+.sp 1
+The process of applying these completion specifications when word completion
+is attempted is described above under \fBProgrammable Completion\fP.
+.sp 1
+Other options, if specified, have the following meanings.
+The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options
+(and, if necessary, the \fB\-P\fP and \fB\-S\fP options)
+should be quoted to protect them from expansion before the
+.B complete
+builtin is invoked.
+.RS
+.PD 0
+.TP 8
+\fB\-o\fP \fIcomp-option\fP
+The \fIcomp-option\fP controls several aspects of the compspec's behavior
+beyond the simple generation of completions.
+\fIcomp-option\fP may be one of:
+.RS
+.TP 8
+.B default
+Use readline's default filename completion if the compspec generates
+no matches.
+.TP 8
+.B dirnames
+Perform directory name completion if the compspec generates no matches.
+.TP 8
+.B filenames
+Tell readline that the compspec generates filenames, so it can perform any
+filename\-specific processing (like adding a slash to directory names or
+suppressing trailing spaces).  Intended to be used with shell functions.
+.TP 8
+.B nospace
+Tell readline not to append a space (the default) to words completed at
+the end of the line.
+.RE
+.TP 8
+\fB\-A\fP \fIaction\fP
+The \fIaction\fP may be one of the following to generate a list of possible
+completions:
+.RS
+.TP 8
+.B alias
+Alias names.  May also be specified as \fB\-a\fP.
+.TP 8
+.B arrayvar
+Array variable names.
+.TP 8
+.B binding
+\fBReadline\fP key binding names.
+.TP 8
+.B builtin
+Names of shell builtin commands.  May also be specified as \fB\-b\fP.
+.TP 8
+.B command
+Command names.  May also be specified as \fB\-c\fP.
+.TP 8
+.B directory
+Directory names.  May also be specified as \fB\-d\fP.
+.TP 8
+.B disabled
+Names of disabled shell builtins.
+.TP 8
+.B enabled
+Names of enabled shell builtins.
+.TP 8
+.B export
+Names of exported shell variables.  May also be specified as \fB\-e\fP.
+.TP 8
+.B file
+File names.  May also be specified as \fB\-f\fP.
+.TP 8
+.B function
+Names of shell functions.
+.TP 8
+.B group
+Group names.  May also be specified as \fB\-g\fP.
+.TP 8
+.B helptopic
+Help topics as accepted by the \fBhelp\fP builtin.
+.TP 8
+.B hostname
+Hostnames, as taken from the file specified by the
+.SM
+.B HOSTFILE
+shell variable.
+.TP 8
+.B job
+Job names, if job control is active.  May also be specified as \fB\-j\fP.
+.TP 8
+.B keyword
+Shell reserved words.  May also be specified as \fB\-k\fP.
+.TP 8
+.B running
+Names of running jobs, if job control is active.
+.TP 8
+.B service
+Service names.  May also be specified as \fB\-s\fP.
+.TP 8
+.B setopt
+Valid arguments for the \fB\-o\fP option to the \fBset\fP builtin.
+.TP 8
+.B shopt
+Shell option names as accepted by the \fBshopt\fP builtin.
+.TP 8
+.B signal
+Signal names.
+.TP 8
+.B stopped
+Names of stopped jobs, if job control is active.
+.TP 8
+.B user
+User names.  May also be specified as \fB\-u\fP.
+.TP 8
+.B variable
+Names of all shell variables.  May also be specified as \fB\-v\fP.
+.RE
+.TP 8
+\fB\-G\fP \fIglobpat\fP
+The filename expansion pattern \fIglobpat\fP is expanded to generate
+the possible completions.
+.TP 8
+\fB\-W\fP \fIwordlist\fP
+The \fIwordlist\fP is split using the characters in the
+.SM
+.B IFS
+special variable as delimiters, and each resultant word is expanded.
+The possible completions are the members of the resultant list which
+match the word being completed.
+.TP 8
+\fB\-C\fP \fIcommand\fP
+\fIcommand\fP is executed in a subshell environment, and its output is
+used as the possible completions.
+.TP 8
+\fB\-F\fP \fIfunction\fP
+The shell function \fIfunction\fP is executed in the current shell
+environment.
+When it finishes, the possible completions are retrieved from the value
+of the
+.SM
+.B COMPREPLY
+array variable.
+.TP 8
+\fB\-X\fP \fIfilterpat\fP
+\fIfilterpat\fP is a pattern as used for filename expansion.
+It is applied to the list of possible completions generated by the
+preceding options and arguments, and each completion matching
+\fIfilterpat\fP is removed from the list.
+A leading \fB!\fP in \fIfilterpat\fP negates the pattern; in this
+case, any completion not matching \fIfilterpat\fP is removed.
+.TP 8
+\fB\-P\fP \fIprefix\fP
+\fIprefix\fP is added at the beginning of each possible completion
+after all other options have been applied.
+.TP 8
+\fB\-S\fP \fIsuffix\fP
+\fIsuffix\fP is appended to each possible completion
+after all other options have been applied.
+.PD
+.PP
+The return value is true unless an invalid option is supplied, an option
+other than \fB\-p\fP or \fB\-r\fP is supplied without a \fIname\fP
+argument, an attempt is made to remove a completion specification for
+a \fIname\fP for which no specification exists, or
+an error occurs adding a completion specification.
+.RE
+.TP
+\fBcontinue\fP [\fIn\fP]
+Resume the next iteration of the enclosing
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.
+If
+.I n
+is specified, resume at the \fIn\fPth enclosing loop.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, the last enclosing loop
+(the ``top-level'' loop) is resumed.  The return value is 0 unless the
+shell is not executing a loop when
+.B continue
+is executed.
+.TP
+\fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP]]
+.PD 0
+.TP
+\fBtypeset\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP]]
+.PD
+Declare variables and/or give them attributes.
+If no \fIname\fPs are given then display the values of variables.
+The
+.B \-p
+option will display the attributes and values of each
+.IR name .
+When
+.B \-p
+is used, additional options are ignored.
+The
+.B \-F
+option inhibits the display of function definitions; only the
+function name and attributes are printed.
+The
+.B \-F
+option implies
+.BR \-f .
+The following options can
+be used to restrict output to variables with the specified attribute or
+to give variables attributes:
+.RS
+.PD 0
+.TP
+.B \-a
+Each \fIname\fP is an array variable (see
+.B Arrays
+above).
+.TP
+.B \-f
+Use function names only.
+.TP
+.B \-i
+The variable is treated as an integer; arithmetic evaluation (see
+.SM
+.B "ARITHMETIC EVALUATION" ") "
+is performed when the variable is assigned a value.
+.TP
+.B \-r
+Make \fIname\fPs readonly.  These names cannot then be assigned values
+by subsequent assignment statements or unset.
+.TP
+.B \-t
+Give each \fIname\fP the \fItrace\fP attribute.
+Traced functions inherit the \fBDEBUG\fP trap from the calling shell.
+The trace attribute has no special meaning for variables.
+.TP
+.B \-x
+Mark \fIname\fPs for export to subsequent commands via the environment.
+.PD
+.PP
+Using `+' instead of `\-'
+turns off the attribute instead, with the exception that \fB+a\fP
+may not be used to destroy an array variable.  When used in a function,
+makes each
+\fIname\fP local, as with the 
+.B local
+command.  The return value is 0 unless an invalid option is encountered,
+an attempt is made to define a function using
+.if n ``\-f foo=bar'',
+.if t \f(CW\-f foo=bar\fP,
+an attempt is made to assign a value to a readonly variable,
+an attempt is made to assign a value to an array variable without
+using the compound assignment syntax (see
+.B Arrays
+above), one of the \fInames\fP is not a valid shell variable name,
+an attempt is made to turn off readonly status for a readonly variable,
+an attempt is made to turn off array status for an array variable,
+or an attempt is made to display a non-existent function with \fB\-f\fP.
+.RE
+.TP
+.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP]
+Without options, displays the list of currently remembered directories.
+The default display is on a single line with directory names separated
+by spaces.
+Directories are added to the list with the 
+.B pushd
+command; the
+.B popd
+command removes entries from the list.
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the left of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+\fB\-\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the right of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+.B \-c
+Clears the directory stack by deleting all of the entries.
+.TP
+.B \-l
+Produces a longer listing; the default listing format uses a 
+tilde to denote the home directory.
+.TP
+.B \-p
+Print the directory stack with one entry per line.
+.TP
+.B \-v
+Print the directory stack with one entry per line,
+prefixing each entry with its index in the stack.
+.PD
+.PP
+The return value is 0 unless an
+invalid option is supplied or \fIn\fP indexes beyond the end
+of the directory stack.
+.RE
+.TP
+\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...]
+Without options, each
+.I jobspec
+is removed from the table of active jobs.
+If the \fB\-h\fP option is given, each
+.I jobspec
+is not removed from the table, but is marked so that
+.SM
+.B SIGHUP
+is not sent to the job if the shell receives a
+.SM
+.BR SIGHUP .
+If no
+.I jobspec
+is present, and neither the
+.B \-a
+nor the
+.B \-r
+option is supplied, the \fIcurrent job\fP is used.
+If no
+.I jobspec
+is supplied, the
+.B \-a
+option means to remove or mark all jobs; the
+.B \-r
+option without a
+.I jobspec
+argument restricts operation to running jobs.
+The return value is 0 unless a
+.I jobspec
+does not specify a valid job.
+.TP
+\fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
+Output the \fIarg\fPs, separated by spaces, followed by a newline.
+The return status is always 0.
+If \fB\-n\fP is specified, the trailing newline is
+suppressed.  If the \fB\-e\fP option is given, interpretation of
+the following backslash-escaped characters is enabled.  The
+.B \-E
+option disables the interpretation of these escape characters,
+even on systems where they are interpreted by default.
+The \fBxpg_echo\fP shell option may be used to
+dynamically determine whether or not \fBecho\fP expands these
+escape characters by default.
+.B echo
+does not interpret
+.B \-\-
+to mean the end of options.
+.B echo
+interprets the following escape sequences:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ec
+suppress trailing newline
+.TP
+.B \ee
+an escape character
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+new line
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e0\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(zero to three octal digits)
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three octal digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.PD
+.RE
+.TP
+\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...]
+Enable and disable builtin shell commands.
+Disabling a builtin allows a disk command which has the same name
+as a shell builtin to be executed without specifying a full pathname,
+even though the shell normally searches for builtins before disk commands.
+If \fB\-n\fP is used, each \fIname\fP
+is disabled; otherwise,
+\fInames\fP are enabled.  For example, to use the
+.B test
+binary found via the
+.SM
+.B PATH
+instead of the shell builtin version, run
+.if t \f(CWenable -n test\fP.
+.if n ``enable -n test''.
+The
+.B \-f
+option means to load the new builtin command
+.I name
+from shared object
+.IR filename ,
+on systems that support dynamic loading.  The
+.B \-d
+option will delete a builtin previously loaded with
+.BR \-f .
+If no \fIname\fP arguments are given, or if the
+.B \-p
+option is supplied, a list of shell builtins is printed.
+With no other option arguments, the list consists of all enabled
+shell builtins.
+If \fB\-n\fP is supplied, only disabled builtins are printed.
+If \fB\-a\fP is supplied, the list printed includes all builtins, with an
+indication of whether or not each is enabled.
+If \fB\-s\fP is supplied, the output is restricted to the POSIX
+\fIspecial\fP builtins.
+The return value is 0 unless a
+.I name
+is not a shell builtin or there is an error loading a new builtin
+from a shared object.
+.TP
+\fBeval\fP [\fIarg\fP ...]
+The \fIarg\fPs are read and concatenated together into a single
+command.  This command is then read and executed by the shell, and
+its exit status is returned as the value of
+.BR eval .
+If there are no
+.IR args ,
+or only null arguments,
+.B eval
+returns 0.
+.TP
+\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]]
+If
+.I command
+is specified, it replaces the shell.
+No new process is created.  The
+.I arguments
+become the arguments to \fIcommand\fP.
+If the
+.B \-l
+option is supplied,
+the shell places a dash at the beginning of the zeroth arg passed to 
+.IR command .
+This is what
+.IR login (1)
+does.  The
+.B \-c
+option causes
+.I command
+to be executed with an empty environment.  If
+.B \-a
+is supplied, the shell passes
+.I name
+as the zeroth argument to the executed command.  If
+.I command
+cannot be executed for some reason, a non-interactive shell exits,
+unless the shell option
+.B execfail
+is enabled, in which case it returns failure.
+An interactive shell returns failure if the file cannot be executed.
+If
+.I command
+is not specified, any redirections take effect in the current shell,
+and the return status is 0.  If there is a redirection error, the
+return status is 1.
+.TP
+\fBexit\fP [\fIn\fP]
+Cause the shell to exit
+with a status of \fIn\fP.  If
+.I n
+is omitted, the exit status
+is that of the last command executed.
+A trap on
+.SM
+.B EXIT
+is executed before the shell terminates.
+.TP
+\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ...
+.PD 0
+.TP
+.B export \-p
+.PD
+The supplied
+.I names
+are marked for automatic export to the environment of
+subsequently executed commands.  If the 
+.B \-f
+option is given,
+the 
+.I names
+refer to functions.
+If no
+.I names
+are given, or if the
+.B \-p
+option is supplied, a list
+of all names that are exported in this shell is printed.
+The
+.B \-n
+option causes the export property to be removed from the
+named variables.
+.B export
+returns an exit status of 0 unless an invalid option is
+encountered,
+one of the \fInames\fP is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP]
+.PD 0
+.TP
+\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP]
+.PD
+Fix Command.  In the first form, a range of commands from
+.I first
+to
+.I last
+is selected from the history list.
+.I First
+and
+.I last
+may be specified as a string (to locate the last command beginning
+with that string) or as a number (an index into the history list,
+where a negative number is used as an offset from the current
+command number).  If 
+.I last
+is not specified it is set to
+the current command for listing (so that
+.if n ``fc \-l \-10''
+.if t \f(CWfc \-l \-10\fP
+prints the last 10 commands) and to
+.I first
+otherwise.
+If
+.I first
+is not specified it is set to the previous
+command for editing and \-16 for listing.
+.sp 1
+The
+.B \-n
+option suppresses
+the command numbers when listing.  The
+.B \-r
+option reverses the order of
+the commands.  If the
+.B \-l
+option is given,
+the commands are listed on
+standard output.  Otherwise, the editor given by
+.I ename
+is invoked
+on a file containing those commands.  If
+.I ename
+is not given, the
+value of the
+.SM
+.B FCEDIT
+variable is used, and
+the value of
+.SM
+.B EDITOR
+if
+.SM
+.B FCEDIT
+is not set.  If neither variable is set,
+.FN vi
+is used.  When editing is complete, the edited commands are
+echoed and executed.
+.sp 1
+In the second form, \fIcommand\fP is re-executed after each instance
+of \fIpat\fP is replaced by \fIrep\fP.
+A useful alias to use with this is
+.if n ``r=fc -s'',
+.if t \f(CWr='fc \-s'\fP,
+so that typing
+.if n ``r cc''
+.if t \f(CWr cc\fP
+runs the last command beginning with
+.if n ``cc''
+.if t \f(CWcc\fP
+and typing
+.if n ``r''
+.if t \f(CWr\fP
+re-executes the last command.
+.sp 1
+If the first form is used, the return value is 0 unless an invalid
+option is encountered or
+.I first
+or
+.I last
+specify history lines out of range.
+If the
+.B \-e
+option is supplied, the return value is the value of the last
+command executed or failure if an error occurs with the temporary
+file of commands.  If the second form is used, the return status
+is that of the command re-executed, unless
+.I cmd
+does not specify a valid history line, in which case
+.B fc
+returns failure.
+.TP
+\fBfg\fP [\fIjobspec\fP]
+Resume
+.I jobspec
+in the foreground, and make it the current job.
+If
+.I jobspec
+is not present, the shell's notion of the \fIcurrent job\fP is used.
+The return value is that of the command placed into the foreground,
+or failure if run when job control is disabled or, when run with
+job control enabled, if
+.I jobspec
+does not specify a valid job or
+.I jobspec
+specifies a job that was started without job control.
+.TP
+\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
+.B getopts
+is used by shell procedures to parse positional parameters.
+.I optstring
+contains the option characters to be recognized; if a character
+is followed by a colon, the option is expected to have an
+argument, which should be separated from it by white space.
+The colon and question mark characters may not be used as
+option characters.
+Each time it is invoked,
+.B getopts
+places the next option in the shell variable
+.IR name ,
+initializing
+.I name
+if it does not exist,
+and the index of the next argument to be processed into the
+variable
+.SM
+.BR OPTIND .
+.SM
+.B OPTIND
+is initialized to 1 each time the shell or a shell script
+is invoked.  When an option requires an argument,
+.B getopts
+places that argument into the variable
+.SM
+.BR OPTARG .
+The shell does not reset
+.SM
+.B OPTIND
+automatically; it must be manually reset between multiple
+calls to
+.B getopts
+within the same shell invocation if a new set of parameters
+is to be used.
+.sp 1
+When the end of options is encountered, \fBgetopts\fP exits with a
+return value greater than zero.
+\fBOPTIND\fP is set to the index of the first non-option argument,
+and \fBname\fP is set to ?.
+.sp 1
+.B getopts
+normally parses the positional parameters, but if more arguments are
+given in
+.IR args ,
+.B getopts
+parses those instead.
+.sp 1
+.B getopts
+can report errors in two ways.  If the first character of
+.I optstring
+is a colon,
+.I silent
+error reporting is used.  In normal operation diagnostic messages
+are printed when invalid options or missing option arguments are
+encountered.
+If the variable
+.SM
+.B OPTERR
+is set to 0, no error messages will be displayed, even if the first
+character of 
+.I optstring
+is not a colon.
+.sp 1
+If an invalid option is seen,
+.B getopts
+places ? into
+.I name
+and, if not silent,
+prints an error message and unsets
+.SM
+.BR OPTARG .
+If
+.B getopts
+is silent,
+the option character found is placed in
+.SM
+.B OPTARG
+and no diagnostic message is printed.
+.sp 1
+If a required argument is not found, and
+.B getopts
+is not silent,
+a question mark (\^\fB?\fP\^) is placed in
+.IR name ,
+.SM
+.B OPTARG
+is unset, and a diagnostic message is printed.
+If
+.B getopts
+is silent, then a colon (\^\fB:\fP\^) is placed in
+.I name
+and
+.SM
+.B OPTARG
+is set to the option character found.
+.sp 1
+.B getopts
+returns true if an option, specified or unspecified, is found.
+It returns false if the end of options is encountered or an
+error occurs.
+.TP
+\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP]
+For each
+.IR name ,
+the full file name of the command is determined by searching
+the directories in
+.B $PATH
+and remembered.
+If the
+.B \-p
+option is supplied, no path search is performed, and
+.I filename
+is used as the full file name of the command.
+The
+.B \-r
+option causes the shell to forget all
+remembered locations.
+The
+.B \-d
+option causes the shell to forget the remembered location of each \fIname\fP.
+If the
+.B \-t
+option is supplied, the full pathname to which each \fIname\fP corresponds
+is printed.  If multiple \fIname\fP arguments are supplied with \fB\-t\fP,
+the \fIname\fP is printed before the hashed full pathname.
+The
+.B \-l
+option causes output to be displayed in a format that may be reused as input.
+If no arguments are given, or if only \fB\-l\fP is supplied,
+information about remembered commands is printed.
+The return status is true unless a
+.I name
+is not found or an invalid option is supplied.
+.TP
+\fBhelp\fP [\fB\-s\fP] [\fIpattern\fP]
+Display helpful information about builtin commands.  If
+.I pattern
+is specified,
+.B help
+gives detailed help on all commands matching
+.IR pattern ;
+otherwise help for all the builtins and shell control structures
+is printed.
+The \fB\-s\fP option restricts the information displayed to a short
+usage synopsis.
+The return status is 0 unless no command matches
+.IR pattern .
+.TP
+\fBhistory [\fIn\fP]
+.PD 0
+.TP
+\fBhistory\fP \fB\-c\fP
+.TP
+\fBhistory \-d\fP \fIoffset\fP
+.TP
+\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
+.TP
+\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
+.TP
+\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
+.PD
+With no options, display the command
+history list with line numbers.  Lines listed
+with a 
+.B *
+have been modified.  An argument of
+.I n
+lists only the last
+.I n
+lines.  If \fIfilename\fP is supplied, it is used as the
+name of the history file; if not, the value of
+.SM
+.B HISTFILE
+is used.  Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-c
+Clear the history list by deleting all the entries.
+.TP
+\fB\-d\fP \fIoffset\fP
+Delete the history entry at position \fIoffset\fP.
+.TP
+.B \-a
+Append the ``new'' history lines (history lines entered since the
+beginning of the current \fBbash\fP session) to the history file.
+.TP
+.B \-n
+Read the history lines not already read from the history
+file into the current history list.  These are lines
+appended to the history file since the beginning of the
+current \fBbash\fP session.
+.TP
+.B \-r
+Read the contents of the history file
+and use them as the current history.
+.TP
+.B \-w
+Write the current history to the history file, overwriting the
+history file's contents.
+.TP
+.B \-p
+Perform history substitution on the following \fIargs\fP and display
+the result on the standard output.
+Does not store the results in the history list.
+Each \fIarg\fP must be quoted to disable normal history expansion.
+.TP
+.B \-s
+Store the
+.I args
+in the history list as a single entry.  The last command in the
+history list is removed before the
+.I args
+are added.
+.PD
+.PP
+The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the
+history expansion supplied as an argument to \fB\-p\fP fails.
+.RE
+.TP
+\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ]
+.PD 0
+.TP
+\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ]
+.PD
+The first form lists the active jobs.  The options have the following
+meanings:
+.RS
+.PD 0
+.TP
+.B \-l
+List process IDs
+in addition to the normal information.
+.TP
+.B \-p
+List only the process ID of the job's process group
+leader.
+.TP
+.B \-n
+Display information only about jobs that have changed status since
+the user was last notified of their status.
+.TP
+.B \-r
+Restrict output to running jobs.
+.TP
+.B \-s
+Restrict output to stopped jobs.
+.PD
+.PP
+If
+.I jobspec
+is given, output is restricted to information about that job.
+The return status is 0 unless an invalid option is encountered
+or an invalid
+.I jobspec
+is supplied.
+.PP
+If the
+.B \-x
+option is supplied,
+.B jobs
+replaces any
+.I jobspec
+found in
+.I command
+or
+.I args
+with the corresponding process group ID, and executes
+.I command
+passing it
+.IR args ,
+returning its exit status.
+.RE
+.TP
+\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ...
+.PD 0
+.TP
+\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP]
+.PD
+Send the signal named by
+.I sigspec
+or
+.I signum
+to the processes named by
+.I pid
+or
+.IR jobspec .
+.I sigspec
+is either a signal name such as
+.SM
+.B SIGKILL
+or a signal number;
+.I signum
+is a signal number.  If
+.I sigspec
+is a signal name, the name may be
+given with or without the
+.SM
+.B SIG
+prefix.
+If
+.I sigspec
+is not present, then
+.SM
+.B SIGTERM
+is assumed.
+An argument of
+.B \-l
+lists the signal names.
+If any arguments are supplied when
+.B \-l
+is given, the names of the signals corresponding to the arguments are
+listed, and the return status is 0.
+The \fIexit_status\fP argument to
+.B \-l
+is a number specifying either a signal number or the exit status of
+a process terminated by a signal.
+.B kill
+returns true if at least one signal was successfully sent, or false
+if an error occurs or an invalid option is encountered.
+.TP
+\fBlet\fP \fIarg\fP [\fIarg\fP ...]
+Each
+.I arg
+is an arithmetic expression to be evaluated (see
+.SM
+.BR "ARITHMETIC EVALUATION" ).
+If the last
+.I arg
+evaluates to 0,
+.B let
+returns 1; 0 is returned otherwise.
+.TP
+\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...]
+For each argument, a local variable named
+.I name 
+is created, and assigned
+.IR value .
+The \fIoption\fP can be any of the options accepted by \fBdeclare\fP.
+When
+.B local
+is used within a function, it causes the variable
+.I name
+to have a visible scope restricted to that function and its children.
+With no operands,
+.B local
+writes a list of local variables to the standard output.  It is
+an error to use
+.B local
+when not within a function.  The return status is 0 unless
+.B local
+is used outside a function, an invalid
+.I name
+is supplied, or
+\fIname\fP is a readonly variable.
+.TP
+.B logout
+Exit a login shell.
+.TP
+\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
+Removes entries from the directory stack.  With no arguments,
+removes the top directory from the stack, and performs a
+.B cd
+to the new top directory.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the left of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd +0''
+.if t \f(CWpopd +0\fP
+removes the first directory,
+.if n ``popd +1''
+.if t \f(CWpopd +1\fP
+the second.
+.TP
+\fB\-\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the right of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd -0''
+.if t \f(CWpopd -0\fP
+removes the last directory,
+.if n ``popd -1''
+.if t \f(CWpopd -1\fP
+the next to last.
+.TP
+.B \-n
+Suppresses the normal change of directory when removing directories
+from the stack, so that only the stack is manipulated.
+.PD
+.PP
+If the
+.B popd
+command is successful, a 
+.B dirs
+is performed as well, and the return status is 0.
+.B popd
+returns false if an invalid option is encountered, the directory stack
+is empty, a non-existent directory stack entry is specified, or the
+directory change fails.
+.RE
+.TP
+\fBprintf\fP \fIformat\fP [\fIarguments\fP]
+Write the formatted \fIarguments\fP to the standard output under the
+control of the \fIformat\fP.
+The \fIformat\fP is a character string which contains three types of objects:
+plain characters, which are simply copied to standard output, character
+escape sequences, which are converted and copied to the standard output, and
+format specifications, each of which causes printing of the next successive
+\fIargument\fP.
+In addition to the standard \fIprintf\fP(1) formats, \fB%b\fP causes
+\fBprintf\fP to expand backslash escape sequences in the corresponding
+\fIargument\fP, and \fB%q\fP causes \fBprintf\fP to output the corresponding
+\fIargument\fP in a format that can be reused as shell input.
+.sp 1
+The \fIformat\fP is reused as necessary to consume all of the \fIarguments\fP.
+If the \fIformat\fP requires more \fIarguments\fP than are supplied, the
+extra format specifications behave as if a zero value or null string, as
+appropriate, had been supplied.  The return value is zero on success,
+non-zero on failure.
+.TP
+\fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
+.PD 0
+.TP
+\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
+.PD
+Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.  With no arguments, exchanges the top two directories
+and returns 0, unless the directory stack is empty.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the left of the list shown by
+.BR dirs ,
+starting with zero)
+is at the top.
+.TP
+\fB\-\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the right of the list shown by
+.BR dirs ,
+starting with zero) is at the top.
+.TP
+.B \-n
+Suppresses the normal change of directory when adding directories
+to the stack, so that only the stack is manipulated.
+.TP
+.I dir
+Adds
+.I dir
+to the directory stack at the top, making it the
+new current working directory.
+.PD
+.PP
+If the
+.B pushd
+command is successful, a 
+.B dirs
+is performed as well.
+If the first form is used,
+.B pushd
+returns 0 unless the cd to
+.I dir
+fails.  With the second form,
+.B pushd
+returns 0 unless the directory stack is empty,
+a non-existent directory stack element is specified,
+or the directory change to the specified new current directory
+fails.
+.RE
+.TP
+\fBpwd\fP [\fB\-LP\fP]
+Print the absolute pathname of the current working directory.
+The pathname printed contains no symbolic links if the
+.B \-P
+option is supplied or the 
+.B \-o physical
+option to the
+.B set
+builtin command is enabled.
+If the
+.B \-L
+option is used, the pathname printed may contain symbolic links.
+The return status is 0 unless an error occurs while
+reading the name of the current directory or an
+invalid option is supplied.
+.TP
+\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...]
+One line is read from the standard input, or from the file descriptor
+\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word
+is assigned to the first
+.IR name ,
+the second word to the second
+.IR name ,
+and so on, with leftover words and their intervening separators assigned
+to the last
+.IR name .
+If there are fewer words read from the input stream than names,
+the remaining names are assigned empty values.
+The characters in 
+.SM
+.B IFS
+are used to split the line into words.
+The backslash character (\fB\e\fP) may be used to remove any special
+meaning for the next character read and for line continuation.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-a \fIaname\fP
+The words are assigned to sequential indices
+of the array variable
+.IR aname ,
+starting at 0.
+.I aname
+is unset before any new values are assigned.
+Other \fIname\fP arguments are ignored.
+.TP
+.B \-d \fIdelim\fP
+The first character of \fIdelim\fP is used to terminate the input line,
+rather than newline.
+.TP
+.B \-e
+If the standard input
+is coming from a terminal,
+.B readline
+(see
+.SM
+.B READLINE
+above) is used to obtain the line.
+.TP
+.B \-n \fInchars\fP
+\fBread\fP returns after reading \fInchars\fP characters rather than
+waiting for a complete line of input.
+.TP
+.B \-p \fIprompt\fP
+Display \fIprompt\fP on standard error, without a
+trailing newline, before attempting to read any input.  The prompt
+is displayed only if input is coming from a terminal.
+.TP
+.B \-r
+Backslash does not act as an escape character.
+The backslash is considered to be part of the line.
+In particular, a backslash-newline pair may not be used as a line
+continuation.
+.TP
+.B \-s
+Silent mode.  If input is coming from a terminal, characters are
+not echoed.
+.TP
+.B \-t \fItimeout\fP
+Cause \fBread\fP to time out and return failure if a complete line of
+input is not read within \fItimeout\fP seconds.
+This option has no effect if \fBread\fP is not reading input from the
+terminal or a pipe.
+.TP
+.B \-u \fIfd\FP
+Read input from file descriptor \fIfd\fP.
+.PD
+.PP
+If no
+.I names
+are supplied, the line read is assigned to the variable
+.SM
+.BR REPLY .
+The return code is zero, unless end-of-file is encountered, \fBread\fP
+times out, or an invalid file descriptor is supplied as the argument to
+\fB\-u\fP.
+.RE
+.TP
+\fBreadonly\fP [\fB\-apf\fP] [\fIname\fP ...]
+.PD
+The given
+\fInames\fP are marked readonly; the values of these
+.I names
+may not be changed by subsequent assignment.
+If the
+.B \-f
+option is supplied, the functions corresponding to the
+\fInames\fP are so
+marked.
+The
+.B \-a
+option restricts the variables to arrays.
+If no
+.I name
+arguments are given, or if the
+.B \-p
+option is supplied, a list of all readonly names is printed.
+The
+.B \-p
+option causes output to be displayed in a format that
+may be reused as input.
+The return status is 0 unless an invalid option is encountered,
+one of the
+.I names
+is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBreturn\fP [\fIn\fP]
+Causes a function to exit with the return value specified by
+.IR n .
+If 
+.I n
+is omitted, the return status is that of the last command
+executed in the function body.  If used outside a function,
+but during execution of a script by the 
+.B .
+(\fBsource\fP) command, it causes the shell to stop executing
+that script and return either
+.I n
+or the exit status of the last command executed within the
+script as the exit status of the script.  If used outside a
+function and not during execution of a script by \fB.\fP\^,
+the return status is false.
+.TP
+\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...]
+Without options, the name and value of each shell variable are displayed
+in a format that can be reused as input.
+The output is sorted according to the current locale.
+When options are specified, they set or unset shell attributes.
+Any arguments remaining after the options are processed are treated
+as values for the positional parameters and are assigned, in order, to 
+.BR $1 ,
+.BR $2 ,
+.B ...
+.BR $\fIn\fP .
+Options, if specified, have the following meanings:
+.RS
+.PD 0
+.TP 8
+.B \-a
+Automatically mark variables and functions which are modified or created
+for export to the environment of subsequent commands.
+.TP 8
+.B \-b
+Report the status of terminated background jobs
+immediately, rather than before the next primary prompt.  This is
+effective only when job control is enabled.
+.TP 8
+.B \-e
+Exit immediately if a \fIsimple command\fP (see
+.SM
+.B SHELL GRAMMAR
+above) exits with a non-zero status.  The shell does not exit if the
+command that fails is part of an
+.I until
+or
+.I while
+loop,
+part of an
+.I if
+statement, part of a
+.B &&
+or
+.B \(bv\(bv
+list, or if the command's return value is
+being inverted via
+.BR ! .
+A trap on \fBERR\fP, if set, is executed before the shell exits.
+.TP 8
+.B \-f
+Disable pathname expansion.
+.TP 8 
+.B \-h
+Remember the location of commands as they are looked up for execution.
+This is enabled by default.
+.TP 8
+.B \-k
+All arguments in the form of assignment statements
+are placed in the environment for a command, not just
+those that precede the command name.
+.TP 8
+.B \-m
+Monitor mode.  Job control is enabled.  This option is on
+by default for interactive shells on systems that support
+it (see
+.SM
+.B JOB CONTROL
+above).  Background processes run in a separate process
+group and a line containing their exit status is printed
+upon their completion.
+.TP 8
+.B \-n
+Read commands but do not execute them.  This may be used to 
+check a shell script for syntax errors.  This is ignored by
+interactive shells.
+.TP 8
+.B \-o \fIoption\-name\fP
+The \fIoption\-name\fP can be one of the following:
+.RS
+.TP 8
+.B allexport
+Same as
+.BR \-a .
+.TP 8
+.B braceexpand
+Same as
+.BR \-B .
+.TP 8
+.B emacs
+Use an emacs-style command line editing interface.  This is enabled
+by default when the shell is interactive, unless the shell is started
+with the
+.B \-\-noediting
+option.
+.TP 8
+.B errexit
+Same as
+.BR \-e .
+.TP 8
+.B hashall
+Same as
+.BR \-h .
+.TP 8
+.B histexpand
+Same as
+.BR \-H .
+.TP 8
+.B history
+Enable command history, as described above under
+.SM
+.BR HISTORY .
+This option is on by default in interactive shells.
+.TP 8
+.B ignoreeof
+The effect is as if the shell command
+.if t \f(CWIGNOREEOF=10\fP
+.if n ``IGNOREEOF=10''
+had been executed
+(see
+.B Shell Variables
+above).
+.TP 8
+.B keyword
+Same as
+.BR \-k .
+.TP 8
+.B monitor
+Same as
+.BR \-m .
+.TP 8
+.B noclobber
+Same as
+.BR \-C .
+.TP 8
+.B noexec
+Same as
+.BR \-n .
+.TP 8
+.B noglob
+Same as
+.BR \-f .
+.B nolog
+Currently ignored.
+.TP 8
+.B notify
+Same as
+.BR \-b .
+.TP 8
+.B nounset
+Same as
+.BR \-u .
+.TP 8
+.B onecmd
+Same as
+.BR \-t .
+.TP 8
+.B physical
+Same as
+.BR \-P .
+.TP 8
+.B posix
+Change the behavior of
+.B bash
+where the default operation differs
+from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP).
+.TP 8
+.B privileged
+Same as
+.BR \-p .
+.TP 8
+.B verbose
+Same as
+.BR \-v .
+.TP 8
+.B vi
+Use a vi-style command line editing interface.
+.TP 8
+.B xtrace
+Same as
+.BR \-x .
+.sp .5
+.PP
+If
+.B \-o
+is supplied with no \fIoption\-name\fP, the values of the current options are
+printed.
+If
+.B +o
+is supplied with no \fIoption\-name\fP, a series of
+.B set
+commands to recreate the current option settings is displayed on
+the standard output.
+.RE
+.TP 8
+.B \-p
+Turn on
+.I privileged
+mode.  In this mode, the
+.SM
+.B $ENV
+and
+.SM
+.B $BASH_ENV
+files are not processed, shell functions are not inherited from the
+environment, and the
+.SM
+.B SHELLOPTS
+variable, if it appears in the environment, is ignored.
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, these actions
+are taken and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at startup, the effective user id is
+not reset.
+Turning this option off causes the effective user
+and group ids to be set to the real user and group ids.
+.TP 8
+.B \-t
+Exit after reading and executing one command.
+.TP 8
+.B \-u
+Treat unset variables as an error when performing
+parameter expansion.  If expansion is attempted on an
+unset variable, the shell prints an error message, and,
+if not interactive, exits with a non-zero status.
+.TP 8
+.B \-v
+Print shell input lines as they are read.
+.TP 8
+.B \-x
+After expanding each \fIsimple command\fP,
+display the expanded value of
+.SM
+.BR PS4 ,
+followed by the command and its expanded arguments.
+.TP 8
+.B \-B
+The shell performs brace expansion (see
+.B Brace Expansion
+above).  This is on by default.
+.TP 8
+.B \-C
+If set,
+.B bash
+does not overwrite an existing file with the
+.BR > ,
+.BR >& ,
+and
+.B <>
+redirection operators.  This may be overridden when 
+creating output files by using the redirection operator
+.B >|
+instead of
+.BR > .
+.TP 8
+.B \-H
+Enable
+.B !
+style history substitution.  This option is on by
+default when the shell is interactive.
+.TP 8
+.B \-P
+If set, the shell does not follow symbolic links when executing
+commands such as
+.B cd
+that change the current working directory.  It uses the
+physical directory structure instead.  By default,
+.B bash
+follows the logical chain of directories when performing commands
+which change the current directory.
+.TP 8
+.B \-\-
+If no arguments follow this option, then the positional parameters are
+unset.  Otherwise, the positional parameters are set to the
+\fIarg\fPs, even if some of them begin with a
+.BR \- .
+.TP 8
+.B \-
+Signal the end of options, cause all remaining \fIarg\fPs to be
+assigned to the positional parameters.  The
+.B \-x
+and
+.B \-v
+options are turned off.
+If there are no \fIarg\fPs,
+the positional parameters remain unchanged.
+.PD
+.PP
+The options are off by default unless otherwise noted.
+Using + rather than \- causes these options to be turned off.
+The options can also be specified as arguments to an invocation of
+the shell.
+The current set of options may be found in
+.BR $\- .
+The return status is always true unless an invalid option is encountered.
+.RE
+.TP
+\fBshift\fP [\fIn\fP]
+The positional parameters from \fIn\fP+1 ... are renamed to
+.B $1
+.B ....
+Parameters represented by the numbers \fB$#\fP
+down to \fB$#\fP\-\fIn\fP+1 are unset.
+.I n
+must be a non-negative number less than or equal to \fB$#\fP.
+If
+.I n
+is 0, no parameters are changed.
+If
+.I n 
+is not given, it is assumed to be 1.
+If
+.I n
+is greater than \fB$#\fP, the positional parameters are not changed.
+The return status is greater than zero if
+.I n
+is greater than
+.B $#
+or less than zero; otherwise 0.
+.TP
+\fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...]
+Toggle the values of variables controlling optional shell behavior.
+With no options, or with the
+.B \-p
+option, a list of all settable options is displayed, with
+an indication of whether or not each is set.
+The \fB\-p\fP option causes output to be displayed in a form that
+may be reused as input.
+Other options have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-s
+Enable (set) each \fIoptname\fP.
+.TP
+.B \-u
+Disable (unset) each \fIoptname\fP.
+.TP
+.B \-q
+Suppresses normal output (quiet mode); the return status indicates
+whether the \fIoptname\fP is set or unset.
+If multiple \fIoptname\fP arguments are given with
+.BR \-q ,
+the return status is zero if all \fIoptnames\fP are enabled; non-zero
+otherwise.
+.TP
+.B \-o
+Restricts the values of \fIoptname\fP to be those defined for the
+.B \-o
+option to the
+.B set
+builtin.
+.PD
+.PP
+If either
+.B \-s
+or
+.B \-u
+is used with no \fIoptname\fP arguments, the display is limited to
+those options which are set or unset, respectively.
+Unless otherwise noted, the \fBshopt\fP options are disabled (unset)
+by default.
+.PP
+The return status when listing options is zero if all \fIoptnames\fP
+are enabled, non-zero otherwise.  When setting or unsetting options,
+the return status is zero unless an \fIoptname\fP is not a valid shell
+option.
+.PP
+The list of \fBshopt\fP options is:
+.if t .sp .5v
+.if n .sp 1v
+.PD 0
+.TP 8
+.B cdable_vars
+If set, an argument to the
+.B cd
+builtin command that
+is not a directory is assumed to be the name of a variable whose
+value is the directory to change to.
+.TP 8
+.B cdspell
+If set, minor errors in the spelling of a directory component in a
+.B cd
+command will be corrected.
+The errors checked for are transposed characters,
+a missing character, and one character too many.
+If a correction is found, the corrected file name is printed,
+and the command proceeds.
+This option is only used by interactive shells.
+.TP 8
+.B checkhash
+If set, \fBbash\fP checks that a command found in the hash
+table exists before trying to execute it.  If a hashed command no
+longer exists, a normal path search is performed.
+.TP 8
+.B checkwinsize
+If set, \fBbash\fP checks the window size after each command
+and, if necessary, updates the values of
+.SM
+.B LINES
+and
+.SM
+.BR COLUMNS .
+.TP 8
+.B cmdhist
+If set,
+.B bash
+attempts to save all lines of a multiple-line
+command in the same history entry.  This allows
+easy re-editing of multi-line commands.
+.TP 8
+.B dotglob
+If set, 
+.B bash
+includes filenames beginning with a `.' in the results of pathname
+expansion.
+.TP 8
+.B execfail
+If set, a non-interactive shell will not exit if
+it cannot execute the file specified as an argument to the
+.B exec
+builtin command.  An interactive shell does not exit if
+.B exec
+fails.
+.TP 8
+.B expand_aliases
+If set, aliases are expanded as described above under
+.SM
+.BR ALIASES .
+This option is enabled by default for interactive shells.
+.TP 8
+.B extglob
+If set, the extended pattern matching features described above under
+\fBPathname Expansion\fP are enabled.
+.TP 8
+.B histappend
+If set, the history list is appended to the file named by the value
+of the
+.B HISTFILE
+variable when the shell exits, rather than overwriting the file.
+.TP 8
+.B histreedit
+If set, and
+.B readline
+is being used, a user is given the opportunity to re-edit a
+failed history substitution.
+.TP 8
+.B histverify
+If set, and 
+.B readline
+is being used, the results of history substitution are not immediately
+passed to the shell parser.  Instead, the resulting line is loaded into
+the \fBreadline\fP editing buffer, allowing further modification.
+.TP 8
+.B hostcomplete
+If set, and
+.B readline
+is being used, \fBbash\fP will attempt to perform hostname completion when a
+word containing a \fB@\fP is being completed (see
+.B Completing
+under
+.SM
+.B READLINE
+above).
+This is enabled by default.
+.TP 8
+.B huponexit
+If set, \fBbash\fP will send
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.TP 8
+.B interactive_comments
+If set, allow a word beginning with
+.B #
+to cause that word and all remaining characters on that
+line to be ignored in an interactive shell (see
+.SM
+.B COMMENTS
+above).  This option is enabled by default.
+.TP 8
+.B lithist
+If set, and the
+.B cmdhist
+option is enabled, multi-line commands are saved to the history with
+embedded newlines rather than using semicolon separators where possible.
+.TP 8
+.B login_shell
+The shell sets this option if it is started as a login shell (see
+.SM
+.B "INVOCATION"
+above).
+The value may not be changed.
+.TP 8
+.B mailwarn
+If set, and a file that \fBbash\fP is checking for mail has been  
+accessed since the last time it was checked, the message ``The mail in
+\fImailfile\fP has been read'' is displayed.
+.TP 8
+.B no_empty_cmd_completion
+If set, and
+.B readline
+is being used,
+.B bash
+will not attempt to search the \fBPATH\fP for possible completions when
+completion is attempted on an empty line.
+.TP 8
+.B nocaseglob
+If set,
+.B bash
+matches filenames in a case\-insensitive fashion when performing pathname
+expansion (see
+.B Pathname Expansion
+above).
+.TP 8
+.B nullglob
+If set,
+.B bash
+allows patterns which match no
+files (see
+.B Pathname Expansion
+above)
+to expand to a null string, rather than themselves.
+.TP 8
+.B progcomp
+If set, the programmable completion facilities (see
+\fBProgrammable Completion\fP above) are enabled.
+This option is enabled by default.
+.TP 8
+.B promptvars
+If set, prompt strings undergo variable and parameter expansion after
+being expanded as described in
+.SM
+.B PROMPTING
+above.  This option is enabled by default.
+.TP 8
+.B restricted_shell
+The shell sets this option if it is started in restricted mode (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+The value may not be changed.
+This is not reset when the startup files are executed, allowing
+the startup files to discover whether or not a shell is restricted.
+.TP 8
+.B shift_verbose
+If set, the
+.B shift
+builtin prints an error message when the shift count exceeds the
+number of positional parameters.
+.TP 8
+.B sourcepath
+If set, the
+\fBsource\fP (\fB.\fP) builtin uses the value of
+.SM
+.B PATH
+to find the directory containing the file supplied as an argument.
+This option is enabled by default.
+.TP 8
+.B xpg_echo
+If set, the \fBecho\fP builtin expands backslash-escape sequences
+by default.
+.RE
+.TP
+\fBsuspend\fP [\fB\-f\fP]
+Suspend the execution of this shell until it receives a
+.SM
+.B SIGCONT
+signal.  The
+.B \-f
+option says not to complain if this is 
+a login shell; just suspend anyway.  The return status is 0 unless
+the shell is a login shell and
+.B \-f
+is not supplied, or if job control is not enabled.
+.TP
+\fBtest\fP \fIexpr\fP
+.PD 0
+.TP
+\fB[\fP \fIexpr\fP \fB]\fP
+Return a status of 0 or 1 depending on
+the evaluation of the conditional expression
+.IR expr .
+Each operator and operand must be a separate argument.
+Expressions are composed of the primaries described above under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence.
+.RS
+.PD 0
+.TP
+.B ! \fIexpr\fP
+True if
+.I expr
+is false.
+.TP
+.B ( \fIexpr\fP )
+Returns the value of \fIexpr\fP.
+This may be used to override the normal precedence of operators.
+.TP
+\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
+True if both
+.I expr1
+and
+.I expr2
+are true.
+.TP
+\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
+True if either
+.I expr1
+or
+.I expr2
+is true.
+.PD
+.PP
+\fBtest\fP and \fB[\fP evaluate conditional
+expressions using a set of rules based on the number of arguments.
+.if t .sp 0.5
+.if n .sp 1
+.PD 0
+.TP
+0 arguments
+The expression is false.
+.TP
+1 argument
+The expression is true if and only if the argument is not null.
+.TP
+2 arguments
+If the first argument is \fB!\fP, the expression is true if and
+only if the second argument is null.
+If the first argument is one of the unary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the expression is true if the unary test is true.
+If the first argument is not a valid unary conditional operator, the expression
+is false.
+.TP
+3 arguments
+If the second argument is one of the binary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the result of the expression is the result of the binary test using
+the first and third arguments as operands.
+If the first argument is \fB!\fP, the value is the negation of
+the two-argument test using the second and third arguments.
+If the first argument is exactly \fB(\fP and the third argument is
+exactly \fB)\fP, the result is the one-argument test of the second
+argument.
+Otherwise, the expression is false.
+The \fB\-a\fP and \fB\-o\fP operators are considered binary operators
+in this case.  
+.TP
+4 arguments
+If the first argument is \fB!\fP, the result is the negation of
+the three-argument expression composed of the remaining arguments.
+Otherwise, the expression is parsed and evaluated according to 
+precedence using the rules listed above.
+.TP
+5 or more arguments
+The expression is parsed and evaluated according to precedence
+using the rules listed above.
+.RE
+.PD
+.TP
+.B times
+Print the accumulated user and system times for the shell and
+for processes run from the shell.  The return status is 0.
+.TP
+\fBtrap\fP [\fB\-lp\fP] [\fIarg\fP] [\fIsigspec\fP ...]
+The command
+.I arg
+is to be read and executed when the shell receives
+signal(s)
+.IR sigspec .
+If
+.I arg
+is absent or
+.BR \- ,
+all specified signals are
+reset to their original values (the values they had
+upon entrance to the shell).
+If 
+.I arg
+is the null string the signal specified by each
+.I sigspec
+is ignored by the shell and by the commands it invokes.
+If
+.I arg
+is not present and
+.B \-p
+has been supplied, then the trap commands associated with each
+.I sigspec
+are displayed.
+If no arguments are supplied or if only
+.B \-p
+is given,
+.B trap
+prints the list of commands associated with each signal number.
+Each
+.I sigspec
+is either
+a signal name defined in <\fIsignal.h\fP>, or a signal number.
+If a
+.I sigspec
+is
+.SM
+.B EXIT
+(0) the command
+.I arg
+is executed on exit from the shell.
+If a
+.I sigspec
+is
+.SM
+.BR DEBUG ,
+the command
+.I arg
+is executed after every \fIsimple command\fP (see
+.SM
+.B SHELL GRAMMAR
+above).
+If a
+.I sigspec
+is
+.SM
+.BR ERR ,
+the command
+.I arg
+is executed whenever a simple command has a non\-zero exit status.
+The
+.SM
+.BR ERR
+trap is not executed if the failed command is part of an
+.I until
+or
+.I while
+loop,
+part of an
+.I if
+statement, part of a
+.B &&
+or
+.B \(bv\(bv
+list, or if the command's return value is
+being inverted via
+.BR ! .
+The
+.B \-l
+option causes the shell to print a list of signal names and
+their corresponding numbers.
+Signals ignored upon entry to the shell cannot be trapped or reset.
+Trapped signals are reset to their original values in a child
+process when it is created.
+The return status is false if any
+.I sigspec
+is invalid; otherwise
+.B trap
+returns true.
+.TP
+\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...]
+With no options, 
+indicate how each
+.I name
+would be interpreted if used as a command name.
+If the
+.B \-t
+option is used,
+.B type
+prints a string which is one of
+.IR alias ,
+.IR keyword ,
+.IR function ,
+.IR builtin ,
+or
+.I file 
+if
+.I name
+is an alias, shell reserved word, function, builtin, or disk file,
+respectively.
+If the
+.I name
+is not found, then nothing is printed, and an exit status of false
+is returned.
+If the
+.B \-p
+option is used,
+.B type
+either returns the name of the disk file
+that would be executed if
+.I name
+were specified as a command name,
+or nothing if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+The
+.B \-P
+option forces a
+.SM
+.B PATH
+search for each \fIname\fP, even if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+If a command is hashed,
+.B \-p
+and
+.B \-P
+print the hashed value, not necessarily the file that appears
+first in 
+.SM
+.BR PATH .
+If the
+.B \-a
+option is used, 
+.B type
+prints all of the places that contain
+an executable named 
+.IR name .
+This includes aliases and functions,
+if and only if the 
+.B \-p
+option is not also used.
+The table of hashed commands is not consulted
+when using
+.BR \-a .
+The
+.B \-f
+option suppresses shell function lookup, as with the \fBcommand\fP builtin.
+.B type
+returns true if any of the arguments are found, false if
+none are found.
+.TP
+\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
+Provides control over the resources available to the shell and to
+processes started by it, on systems that allow such control.
+The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is
+set for the given resource.  A hard limit cannot be increased once it
+is set; a soft limit may be increased up to the value of the hard limit.
+If neither \fB\-H\fP nor \fB\-S\fP is specified, both the soft and hard
+limits are set.
+The value of
+.I limit
+can be a number in the unit specified for the resource
+or one of the special values
+.BR hard ,
+.BR soft ,
+or
+.BR unlimited ,
+which stand for the current hard limit, the current soft limit, and
+no limit, respectively.
+If
+.I limit
+is omitted, the current value of the soft limit of the resource is
+printed, unless the \fB\-H\fP option is given.  When more than one
+resource is specified, the limit name and unit are printed before the value.
+Other options are interpreted as follows:
+.RS
+.PD 0
+.TP
+.B \-a
+All current limits are reported
+.TP
+.B \-c
+The maximum size of core files created
+.TP
+.B \-d
+The maximum size of a process's data segment
+.TP
+.B \-f
+The maximum size of files created by the shell
+.TP
+.B \-l
+The maximum size that may be locked into memory
+.TP
+.B \-m
+The maximum resident set size
+.TP
+.B \-n
+The maximum number of open file descriptors (most systems do not
+allow this value to be set)
+.TP
+.B \-p
+The pipe size in 512-byte blocks (this may not be set)
+.TP
+.B \-s
+The maximum stack size
+.TP
+.B \-t
+The maximum amount of cpu time in seconds
+.TP
+.B \-u
+The maximum number of processes available to a single user
+.TP
+.B \-v
+The maximum amount of virtual memory available to the shell
+.PD
+.PP
+If
+.I limit
+is given, it is the new value of the specified resource (the
+.B \-a
+option is display only).
+If no option is given, then
+.B \-f
+is assumed.  Values are in 1024-byte increments, except for
+.BR \-t ,
+which is in seconds,
+.BR \-p ,
+which is in units of 512-byte blocks,
+and
+.B \-n
+and
+.BR \-u ,
+which are unscaled values.
+The return status is 0 unless an invalid option or argument is supplied,
+or an error occurs while setting a new limit.
+.RE
+.TP
+\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+The user file-creation mask is set to 
+.IR mode .
+If
+.I mode
+begins with a digit, it
+is interpreted as an octal number; otherwise
+it is interpreted as a symbolic mode mask similar
+to that accepted by
+.IR chmod (1).
+If
+.I mode
+is omitted, the current value of the mask is printed.
+The
+.B \-S
+option causes the mask to be printed in symbolic form; the
+default output is an octal number.
+If the
+.B \-p
+option is supplied, and
+.I mode
+is omitted, the output is in a form that may be reused as input.
+The return status is 0 if the mode was successfully changed or if
+no \fImode\fP argument was supplied, and false otherwise.
+.TP
+\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...]
+Remove each \fIname\fP from the list of defined aliases.  If
+.B \-a
+is supplied, all alias definitions are removed.  The return
+value is true unless a supplied
+.I name
+is not a defined alias.
+.TP
+\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...]
+For each
+.IR name ,
+remove the corresponding variable or function.
+If no options are supplied, or the
+.B \-v
+option is given, each
+.I name
+refers to a shell variable.
+Read-only variables may not be unset.
+If
+.B \-f
+is specifed, 
+each
+.I name
+refers to a shell function, and the function definition
+is removed.
+Each unset variable or function is removed from the environment
+passed to subsequent commands.
+If any of
+.SM
+.BR RANDOM ,
+.SM
+.BR SECONDS ,
+.SM
+.BR LINENO ,
+.SM
+.BR HISTCMD ,
+.SM
+.BR FUNCNAME ,
+.SM
+.BR GROUPS ,
+or
+.SM
+.B DIRSTACK
+are unset, they lose their special properties, even if they are
+subsequently reset.  The exit status is true unless a
+.I name
+does not exist or is readonly.
+.TP
+\fBwait\fP [\fIn\fP]
+Wait for the specified process and return its termination
+status.
+.I n
+may be a process
+ID or a job specification; if a job spec is given, all processes
+in that job's pipeline are waited for.  If
+.I n
+is not given, all currently active child processes
+are waited for, and the return status is zero.  If
+.I n
+specifies a non-existent process or job, the return status is
+127.  Otherwise, the return status is the exit status of the last
+process or job waited for.
+.\" bash_builtins
+.if \n(zZ=1 .ig zZ
+.SH "RESTRICTED SHELL"
+.\" rbash.1
+.zY
+.PP
+If
+.B bash
+is started with the name
+.BR rbash ,
+or the
+.B \-r
+option is supplied at invocation,
+the shell becomes restricted.
+A restricted shell is used to
+set up an environment more controlled than the standard shell.
+It behaves identically to
+.B bash
+with the exception that the following are disallowed or not performed:
+.IP \(bu
+changing directories with \fBcd\fP
+.IP \(bu
+setting or unsetting the values of
+.BR SHELL ,
+.BR PATH ,
+.BR ENV ,
+or
+.B BASH_ENV
+.IP \(bu
+specifying command names containing
+.B /
+.IP \(bu
+specifying a file name containing a
+.B /
+as an argument to the
+.B .
+builtin command
+.IP \(bu
+Specifying a filename containing a slash as an argument to the
+.B \-p
+option to the
+.B hash
+builtin command
+.IP \(bu
+importing function definitions from the shell environment at startup
+.IP \(bu
+parsing the value of \fBSHELLOPTS\fP from the shell environment at startup
+.IP \(bu
+redirecting output using the >, >|, <>, >&, &>, and >> redirection operators
+.IP \(bu
+using the
+.B exec
+builtin command to replace the shell with another command
+.IP \(bu
+adding or deleting builtin commands with the
+.B \-f
+and
+.B \-d
+options to the
+.B enable
+builtin command
+.IP \(bu
+Using the \fBenable\fP builtin command to enable disabled shell builtins
+.IP \(bu
+specifying the
+.B \-p
+option to the
+.B command
+builtin command
+.IP \(bu
+turning off restricted mode with
+\fBset +r\fP or \fBset +o restricted\fP.
+.PP
+These restrictions are enforced after any startup files are read.
+.PP
+When a command that is found to be a shell script is executed (see
+.SM
+.B "COMMAND EXECUTION"
+above),
+.B rbash
+turns off any restrictions in the shell spawned to execute the
+script.
+.\" end of rbash.1
+.if \n(zY=1 .ig zY
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIBash Reference Manual\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE
+.TP
+\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1)
+.TP
+\fIemacs\fP(1), \fIvi\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH FILES
+.PD 0
+.TP
+.FN /bin/bash
+The \fBbash\fP executable
+.TP
+.FN /etc/profile
+The systemwide initialization file, executed for login shells
+.TP
+.FN ~/.bash_profile
+The personal initialization file, executed for login shells
+.TP
+.FN ~/.bashrc
+The individual per-interactive-shell startup file
+.TP
+.FN ~/.bash_logout
+The individual login shell cleanup file, executed when a login shell exits
+.TP
+.FN ~/.inputrc
+Individual \fIreadline\fP initialization file
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox at gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet at ins.CWRU.Edu
+.SH BUG REPORTS
+If you find a bug in
+.B bash,
+you should report it.  But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of
+.B bash
+that you have.
+.PP
+Once you have determined that a bug actually exists, use the
+.I bashbug
+command to submit a bug report.
+If you have a fix, you are encouraged to mail that as well!
+Suggestions and `philosophical' bug reports may be mailed
+to \fIbug-bash at gnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+ALL bug reports should include:
+.PP
+.PD 0
+.TP 20
+The version number of \fBbash\fR
+.TP
+The hardware and operating system
+.TP
+The compiler used to compile
+.TP
+A description of the bug behaviour
+.TP
+A short script or `recipe' which exercises the bug
+.PD
+.PP
+.I bashbug
+inserts the first three items automatically into the template
+it provides for filing a bug report.
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet at ins.CWRU.Edu .
+.SH BUGS
+.PP
+It's too big and too slow.
+.PP
+There are some subtle differences between 
+.B bash
+and traditional versions of
+.BR sh ,
+mostly because of the
+.SM
+.B POSIX
+specification.
+.PP
+Aliases are confusing in some uses.
+.PP
+Shell builtin commands and functions are not stoppable/restartable.
+.PP
+Compound commands and command sequences of the form `a ; b ; c'
+are not handled gracefully when process suspension is attempted.
+When a process is stopped, the shell immediately executes the next
+command in the sequence.
+It suffices to place the sequence of commands between
+parentheses to force it into a subshell, which may be stopped as
+a unit.
+.PP
+Commands inside of \fB$(\fP...\fB)\fP command substitution are not
+parsed until substitution is attempted.  This will delay error
+reporting until some time after the command is entered.
+.PP
+Array variables may not (yet) be exported.
+.zZ
+.zY
diff --git a/raw/man1/bg.1 b/raw/man1/bg.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/bg.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/bind.1 b/raw/man1/bind.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/bind.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/break.1 b/raw/man1/break.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/break.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/builtin.1 b/raw/man1/builtin.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/builtin.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/builtins.1 b/raw/man1/builtins.1
new file mode 100644
index 0000000..5b5ffe0
--- /dev/null
+++ b/raw/man1/builtins.1
@@ -0,0 +1,15 @@
+.\" This is a hack to force bash builtins into the whatis database
+.\" and to get the list of builtins to come up with the man command.
+.TH BASH_BUILTINS 1 "2001 November 27" "GNU Bash-2.05a"
+.SH NAME
+bash, :, ., [, alias, bg, bind, break, builtin, cd, command, compgen, complete, 
+continue, declare, dirs, disown, echo, enable, eval, exec, exit,
+export, fc, fg, getopts, hash, help, history, jobs, kill,
+let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set,
+shift, shopt, source, suspend, test, times, trap, type, typeset,
+ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
+.SH BASH BUILTIN COMMANDS
+.nr zZ 1
+.so man1/bash.1
+.SH SEE ALSO
+bash(1), sh(1)
diff --git a/raw/man1/bunzip2.1 b/raw/man1/bunzip2.1
new file mode 100644
index 0000000..623435c
--- /dev/null
+++ b/raw/man1/bunzip2.1
@@ -0,0 +1,453 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.2
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.2 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0 and 1.0.1, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to this one, 1.0.2, used 32-bit integers to represent
+bit positions in compressed files, so it could not handle compressed
+files more than 512 megabytes long.  Version 1.0.2 and above uses
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jseward at acm.org.
+
+http://sources.redhat.com/bzip2
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/raw/man1/bzcat.1 b/raw/man1/bzcat.1
new file mode 100644
index 0000000..623435c
--- /dev/null
+++ b/raw/man1/bzcat.1
@@ -0,0 +1,453 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.2
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.2 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0 and 1.0.1, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to this one, 1.0.2, used 32-bit integers to represent
+bit positions in compressed files, so it could not handle compressed
+files more than 512 megabytes long.  Version 1.0.2 and above uses
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jseward at acm.org.
+
+http://sources.redhat.com/bzip2
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/raw/man1/bzip2.1 b/raw/man1/bzip2.1
new file mode 100644
index 0000000..623435c
--- /dev/null
+++ b/raw/man1/bzip2.1
@@ -0,0 +1,453 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.2
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.2 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0 and 1.0.1, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to this one, 1.0.2, used 32-bit integers to represent
+bit positions in compressed files, so it could not handle compressed
+files more than 512 megabytes long.  Version 1.0.2 and above uses
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jseward at acm.org.
+
+http://sources.redhat.com/bzip2
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/raw/man1/bzip2recover.1 b/raw/man1/bzip2recover.1
new file mode 100644
index 0000000..623435c
--- /dev/null
+++ b/raw/man1/bzip2recover.1
@@ -0,0 +1,453 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.2
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.2 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0 and 1.0.1, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to this one, 1.0.2, used 32-bit integers to represent
+bit positions in compressed files, so it could not handle compressed
+files more than 512 megabytes long.  Version 1.0.2 and above uses
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jseward at acm.org.
+
+http://sources.redhat.com/bzip2
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/raw/man1/cal.1 b/raw/man1/cal.1
new file mode 100644
index 0000000..7d5e71e
--- /dev/null
+++ b/raw/man1/cal.1
@@ -0,0 +1,97 @@
+.\" Copyright (c) 1989, 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Kim Letkeman.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)cal.1	8.1 (Berkeley) 6/6/93
+.\"
+.Dd June 6, 1993
+.Dt CAL 1
+.Os
+.Sh NAME
+.Nm cal
+.Nd displays a calendar
+.Sh SYNOPSIS
+.Nm cal
+.Op Fl smjy13
+.Op [ Ar month ] Ar year
+.Sh DESCRIPTION
+.Nm Cal
+displays a simple calendar.
+If arguments are not specified,
+the current month is displayed.
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl 1
+Display single month output.
+(This is the default.)
+.It Fl 3
+Display prev/current/next month output.
+.It Fl s
+Display Sunday as the first day of the week.
+(This is the default.)
+.It Fl m
+Display Monday as the first day of the week.
+.It Fl j
+Display Julian dates (days one-based, numbered from January 1).
+.It Fl y
+Display a calendar for the current year.
+.El
+.Pp
+A single parameter specifies the year (1 - 9999) to be displayed;
+note the year must be fully specified:
+.Dq Li cal 89
+will
+.Em not
+display a calendar for 1989.
+Two parameters denote the month (1 - 12) and year.
+If no parameters are specified, the current month's calendar is
+displayed.
+.Pp
+A year starts on Jan 1.
+.Pp
+The Gregorian Reformation is assumed to have occurred in 1752 on the 3rd
+of September.
+By this time, most countries had recognized the reformation (although a
+few did not recognize it until the early 1900's.)
+Ten days following that date were eliminated by the reformation, so the
+calendar for that month is a bit unusual.
+.Sh HISTORY
+A
+.Nm
+command appeared in Version 6 AT&T UNIX.
+.Sh OTHER VERSIONS
+Several much more elaborate versions of this program exist,
+with support for colors, holidays, birthdays, reminders and
+appointments, etc. For example, try the cal from
+http://home.sprynet.com/~cbagwell/projects.html
+or GNU gcal.
diff --git a/raw/man1/cat.1 b/raw/man1/cat.1
new file mode 100644
index 0000000..5458c0f
--- /dev/null
+++ b/raw/man1/cat.1
@@ -0,0 +1,70 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CAT "1" "October 2003" "cat (coreutils) 5.0" FSF
+.SH NAME
+cat \- concatenate files and print on the standard output
+.SH SYNOPSIS
+.B cat
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Concatenate FILE(s), or standard input, to standard output.
+.TP
+\fB\-A\fR, \fB\-\-show\-all\fR
+equivalent to \fB\-vET\fR
+.TP
+\fB\-b\fR, \fB\-\-number\-nonblank\fR
+number nonblank output lines
+.TP
+\fB\-e\fR
+equivalent to \fB\-vE\fR
+.TP
+\fB\-E\fR, \fB\-\-show\-ends\fR
+display $ at end of each line
+.TP
+\fB\-n\fR, \fB\-\-number\fR
+number all output lines
+.TP
+\fB\-s\fR, \fB\-\-squeeze\-blank\fR
+never more than one single blank line
+.TP
+\fB\-t\fR
+equivalent to \fB\-vT\fR
+.TP
+\fB\-T\fR, \fB\-\-show\-tabs\fR
+display TAB characters as ^I
+.TP
+\fB\-u\fR
+(ignored)
+.TP
+\fB\-v\fR, \fB\-\-show\-nonprinting\fR
+use ^ and M- notation, except for LFD and TAB
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE, or when FILE is -, read standard input.
+.SH AUTHOR
+Written by Torbjorn Granlund and Richard M. Stallman.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B cat
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B cat
+programs are properly installed at your site, the command
+.IP
+.B info cat
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/cd.1 b/raw/man1/cd.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/cd.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/chattr.1 b/raw/man1/chattr.1
new file mode 100644
index 0000000..84d8743
--- /dev/null
+++ b/raw/man1/chattr.1
@@ -0,0 +1,142 @@
+.\" -*- nroff -*-
+.TH CHATTR 1 "July 2003" "E2fsprogs version 1.34"
+.SH NAME
+chattr \- change file attributes on a Linux second extended file system
+.SH SYNOPSIS
+.B chattr
+[
+.B \-RV
+]
+[
+.B \-v
+.I version
+]
+[
+.I mode
+]
+.I files...
+.SH DESCRIPTION
+.B chattr
+changes the file attributes on a Linux second extended file system.
+.PP
+The format of a symbolic mode is +-=[ASacDdIijsTtu].
+.PP
+The operator `+' causes the selected attributes to be added to the
+existing attributes of the files; `-' causes them to be removed; and
+`=' causes them to be the only attributes that the files have.
+.PP
+The letters `ASacDdijsu' select the new attributes for the files: 
+don't update atime (A), synchronous updates (S), synchronous directory
+updates (D), append only (a), compressed (c), no dump (d), immutable (i),
+data journalling (j), secure deletion (s), top of directory hierarchy
+(T), no tail-merging (t), and undeletable (u).
+.SH OPTIONS
+.TP
+.B \-R
+Recursively change attributes of directories and their contents.
+Symbolic links encountered during recursive directory traversals are
+ignored.
+.TP
+.B \-V
+Be verbose with chattr's output and print the program version.
+.TP
+.BI \-v " version"
+Set the file's version/generation number.
+.SH ATTRIBUTES
+When a file with the 'A' attribute set is accessed, its atime record is
+not modified.  This avoids a certain amount of disk I/O for laptop
+systems.
+.PP
+A file with the `a' attribute set can only be open in append mode for writing.
+Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE 
+capability can set or clear this attribute.
+.PP
+A file with the `c' attribute set is automatically compressed on the disk
+by the kernel.  A read from this file returns uncompressed data.  A write to
+this file compresses data before storing them on the disk.
+.PP
+When a directory with the `D' attribute set is modified,
+the changes are written synchronously on the disk; this is equivalent to
+the `dirsync' mount option applied to a subset of the files.
+.PP
+A file with the `d' attribute set is not candidate for backup when the
+.BR dump (8)
+program is run.
+.PP
+The 'E' attribute is used by the experimental compression patches to 
+indicate that a compressed file has a compression error.  It may not be
+set or reset using 
+.BR chattr (1),
+although it can be displayed by
+.BR lsattr (1).
+.PP
+The 'I' attribute is used by the htree code to indicate that a directory
+is behind indexed using hashed trees.  It may not be set or reset using 
+.BR chattr (1),
+although it can be displayed by
+.BR lsattr (1).
+.PP
+A file with the `i' attribute cannot be modified: it cannot be deleted or
+renamed, no link can be created to this file and no data can be written
+to the file.  Only the superuser or a process possessing the
+CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
+.PP
+A file with the `j' attribute has all of its data written to the ext3
+journal before being written to the file itself, if the filesystem is
+mounted with the "data=ordered" or "data=writeback" options.  When the
+filesystem is mounted with the "data=journal" option all file data
+is already journalled and this attribute has no effect.  
+Only the superuser or a process possessing the CAP_SYS_RESOURCE
+capability can set or clear this attribute.
+.PP
+When a file with the `s' attribute set is deleted, its blocks are zeroed and
+written back to the disk.
+.PP
+When a file with the `S' attribute set is modified,
+the changes are written synchronously on the disk; this is equivalent to
+the `sync' mount option applied to a subset of the files.
+.PP
+A directory with the 'T' attribute will be deemed to be the top of 
+directory hierarchies for the purposes of the Orlov block allocator
+(which is used in on systems with Linux 2.5.46 or later).
+.PP
+A file with the 't' attribute will not have a partial block fragment at
+the end of the file merged with other files (for those filesystems which
+support tail-merging).  This is necessary for applications such as LILO 
+which read the filesystem directly, and which don't understand tail-merged
+files.  Note: As of this writing, the ext2 or ext3 filesystems do not
+(yet, except in very experimental patches) support tail-merging.
+.PP
+When a file with the `u' attribute set is deleted, its contents are saved.
+This allows the user to ask for its undeletion.
+.PP
+The 'X' attribute is used by the experimental compression patches to 
+indicate that a raw contents of a compressed file can be accessed
+directly.  It currently may not be set or reset using 
+.BR chattr (1),
+although it can be displayed by
+.BR lsattr (1).
+.PP
+The 'Z' attribute is used by the experimental compression patches to 
+indicate a compressed file is dirty.  It may not be set or reset using 
+.BR chattr (1),
+although it can be displayed by
+.BR lsattr (1).
+.PP
+.SH AUTHOR
+.B chattr
+was written by Remy Card <Remy.Card at linux.org>.
+.SH BUGS AND LIMITATIONS
+As of Linux 2.2, the `c', 's',  and `u' attribute are not honored 
+by the kernel filesystem code.    These attributes will be implemented
+in a future ext2 fs version.
+.PP
+The `j' option is only useful if the filesystem is mounted as ext3.
+.PP
+The `D' option is only useful on Linux kernel 2.5.19 and later.
+.SH AVAILABILITY
+.B chattr
+is part of the e2fsprogs package and is available from
+http://e2fsprogs.sourceforge.net.
+.SH SEE ALSO
+.BR lsattr (1)
diff --git a/raw/man1/chfn.1 b/raw/man1/chfn.1
new file mode 100644
index 0000000..8f3213d
--- /dev/null
+++ b/raw/man1/chfn.1
@@ -0,0 +1,62 @@
+.\"
+.\"  chfn.1 -- change your finger information
+.\"  (c) 1994 by salvatore valente <svalente at athena.mit.edu>
+.\"
+.\"  this program is free software.  you can redistribute it and
+.\"  modify it under the terms of the gnu general public license.
+.\"  there is no warranty.
+.\"
+.TH CHFN 1 "October 13 1994" "chfn" "Linux Reference Manual"
+.SH NAME
+chfn \- change your finger information
+.SH SYNOPSIS
+.B chfn
+[\ \-f\ full-name\ ] [\ \-o\ office\ ] [\ \-p\ office-phone\ ]
+[\ \-h\ home-phone\ ] [\ \-u\ ] [\ \-v\ ] [\ username\ ]
+.SH DESCRIPTION
+.B chfn
+is used to change your finger information.  This information is
+stored in the
+.I /etc/passwd
+file, and is displayed by the
+.B finger
+program.  The Linux
+.B finger
+command will display four pieces of information that can be changed by
+.B chfn
+: your real name, your work room and phone, and your home phone.
+.SS COMMAND LINE
+Any of the four pieces of information can be specified on the command
+line.  If no information is given on the command line,
+.B chfn
+enters interactive mode.
+.SS INTERACTIVE MODE
+In interactive mode,
+.B chfn
+will prompt for each field.  At a prompt, you can enter the new information,
+or just press return to leave the field unchanged.  Enter the keyword
+"none" to make the field blank.
+.SH OPTIONS
+.TP
+.I "\-f, \-\-full-name"
+Specify your real name.
+.TP
+.I "\-o, \-\-office"
+Specify your office room number.
+.TP
+.I "\-p, \-\-office-phone"
+Specify your office phone number.
+.TP
+.I "\-h, \-\-home-phone"
+Specify your home phone number.
+.TP
+.I "\-u, \-\-help"
+Print a usage message and exit.
+.TP
+.I "-v, \-\-version"
+Print version information and exit.
+.SH "SEE ALSO"
+.BR finger (1),
+.BR passwd (5)
+.SH AUTHOR
+Salvatore Valente <svalente at mit.edu>
diff --git a/raw/man1/chgrp.1 b/raw/man1/chgrp.1
new file mode 100644
index 0000000..dd372f1
--- /dev/null
+++ b/raw/man1/chgrp.1
@@ -0,0 +1,66 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CHGRP "1" "October 2003" "chgrp (coreutils) 5.0" FSF
+.SH NAME
+chgrp \- change group ownership
+.SH SYNOPSIS
+.B chgrp
+[\fIOPTION\fR]... \fIGROUP FILE\fR...
+.br
+.B chgrp
+[\fIOPTION\fR]... \fI--reference=RFILE FILE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Change the group membership of each FILE to GROUP.
+.TP
+\fB\-c\fR, \fB\-\-changes\fR
+like verbose but report only when a change is made
+.TP
+\fB\-\-dereference\fR
+affect the referent of each symbolic link, rather
+than the symbolic link itself
+.TP
+\fB\-h\fR, \fB\-\-no\-dereference\fR
+affect symbolic links instead of any referenced file
+(available only on systems that can change the
+ownership of a symlink)
+.TP
+\fB\-f\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+suppress most error messages
+.TP
+\fB\-\-reference\fR=\fIRFILE\fR
+use RFILE's group rather than the specified
+GROUP value
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+operate on files and directories recursively
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every file processed
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B chgrp
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B chgrp
+programs are properly installed at your site, the command
+.IP
+.B info chgrp
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/chmod.1 b/raw/man1/chmod.1
new file mode 100644
index 0000000..5c0bdef
--- /dev/null
+++ b/raw/man1/chmod.1
@@ -0,0 +1,127 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CHMOD "1" "October 2003" "chmod (coreutils) 5.0" FSF
+.SH NAME
+chmod \- change file access permissions
+.SH SYNOPSIS
+.B chmod
+[\fIOPTION\fR]... \fIMODE\fR[\fI,MODE\fR]... \fIFILE\fR...
+.br
+.B chmod
+[\fIOPTION\fR]... \fIOCTAL-MODE FILE\fR...
+.br
+.B chmod
+[\fIOPTION\fR]... \fI--reference=RFILE FILE\fR...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR chmod .
+.B chmod
+changes the permissions of each given file according to
+.IR mode ,
+which can be either a symbolic representation of changes to make, or
+an octal number representing the bit pattern for the new permissions.
+.PP
+The format of a symbolic mode is
+`[ugoa...][[+-=][rwxXstugo...]...][,...]'.  Multiple symbolic
+operations can be given, separated by commas.
+.PP
+A combination of the letters `ugoa' controls which users' access to
+the file will be changed: the user who owns it (u), other users in the
+file's group (g), other users not in the file's group (o), or all
+users (a).  If none of these are given, the effect is as if `a' were
+given, but bits that are set in the umask are not affected.
+.PP
+The operator `+' causes the permissions selected to be added to the
+existing permissions of each file; `-' causes them to be removed; and
+`=' causes them to be the only permissions that the file has.
+.PP
+The letters `rwxXstugo' select the new permissions for the affected
+users: read (r), write (w), execute (or access for directories) (x),
+execute only if the file is a directory or already has execute
+permission for some user (X), set user or group ID on execution (s),
+sticky (t), the permissions granted to the user who owns the file (u),
+the permissions granted to other users who are members of the file's group (g),
+and the permissions granted to users that are in neither of the two preceding
+categories (o).
+.PP
+A numeric mode is from one to four octal digits (0-7), derived by
+adding up the bits with values 4, 2, and 1.  Any omitted digits are
+assumed to be leading zeros.  The first digit selects the set user ID
+(4) and set group ID (2) and sticky (1) attributes.  The second digit
+selects permissions for the user who owns the file: read (4), write (2),
+and execute (1); the third selects permissions for other users in the
+file's group, with the same values; and the fourth for other users not
+in the file's group, with the same values.
+.PP
+.B chmod
+never changes the permissions of symbolic links; the
+.B chmod
+system call cannot change their permissions.  This is not a problem
+since the permissions of symbolic links are never used.
+However, for each symbolic link listed on the command line,
+.B chmod
+changes the permissions of the pointed-to file.
+In contrast,
+.B chmod
+ignores symbolic links encountered during recursive directory
+traversals.
+.SH STICKY FILES
+On older Unix systems, the sticky bit caused executable files to be
+hoarded in swap space.  This feature is not useful on modern VM
+systems, and the Linux kernel ignores the sticky bit on files.  Other
+kernels may use the sticky bit on files for system-defined purposes.
+On some systems, only the superuser can set the sticky bit on files.
+.SH STICKY DIRECTORIES
+When the sticky bit is set on a directory, files in that directory may
+be unlinked or renamed only by root or their owner.  Without the
+sticky bit, anyone able to write to the directory can delete or rename
+files.  The sticky bit is commonly found on directories, such as /tmp,
+that are world-writable.
+.SH OPTIONS
+.PP
+Change the mode of each FILE to MODE.
+.TP
+\fB\-c\fR, \fB\-\-changes\fR
+like verbose but report only when a change is made
+.TP
+\fB\-f\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+suppress most error messages
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every file processed
+.TP
+\fB\-\-reference\fR=\fIRFILE\fR
+use RFILE's mode instead of MODE values
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+change files and directories recursively
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Each MODE is one or more of the letters ugoa, one of the symbols +-= and
+one or more of the letters rwxXstugo.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B chmod
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B chmod
+programs are properly installed at your site, the command
+.IP
+.B info chmod
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/chown.1 b/raw/man1/chown.1
new file mode 100644
index 0000000..363d50a
--- /dev/null
+++ b/raw/man1/chown.1
@@ -0,0 +1,97 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CHOWN "1" "October 2003" "chown (coreutils) 5.0" FSF
+.SH NAME
+chown \- change file owner and group
+.SH SYNOPSIS
+.B chown
+[\fIOPTION\fR]... \fIOWNER\fR[\fI:\fR[\fIGROUP\fR]] \fIFILE\fR...
+.br
+.B chown
+[\fIOPTION\fR]... \fI:GROUP FILE\fR...
+.br
+.B chown
+[\fIOPTION\fR]... \fI--reference=RFILE FILE\fR...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR chown .
+.B chown
+changes the user and/or group ownership of each given file, according
+to its first non-option argument, which is interpreted as follows.  If
+only a user name (or numeric user ID) is given, that user is made the
+owner of each given file, and the files' group is not changed.  If the
+user name is followed by a colon or dot and a group name (or numeric group ID),
+with no spaces between them, the group ownership of the files is
+changed as well.  If a colon or dot but no group name follows the user name,
+that user is made the owner of the files and the group of the files is
+changed to that user's login group.  If the colon or dot and group are given,
+but the user name is omitted, only the group of the files is changed;
+in this case,
+.B chown
+performs the same function as
+.BR chgrp .
+.SH OPTIONS
+.PP
+Change the owner and/or group of each FILE to OWNER and/or GROUP.
+.TP
+\fB\-c\fR, \fB\-\-changes\fR
+like verbose but report only when a change is made
+.TP
+\fB\-\-dereference\fR
+affect the referent of each symbolic link, rather
+than the symbolic link itself
+.TP
+\fB\-h\fR, \fB\-\-no\-dereference\fR
+affect symbolic links instead of any referenced file
+(available only on systems that can change the
+ownership of a symlink)
+.TP
+\fB\-\-from\fR=\fICURRENT_OWNER\fR:CURRENT_GROUP
+change the owner and/or group of each file only if
+its current owner and/or group match those specified
+here.  Either may be omitted, in which case a match
+is not required for the omitted attribute.
+.TP
+\fB\-f\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+suppress most error messages
+.TP
+\fB\-\-reference\fR=\fIRFILE\fR
+use RFILE's owner and group rather than
+the specified OWNER:GROUP values
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+operate on files and directories recursively
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every file processed
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Owner is unchanged if missing.  Group is unchanged if missing, but changed
+to login group if implied by a `:'.  OWNER and GROUP may be numeric as well
+as symbolic.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B chown
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B chown
+programs are properly installed at your site, the command
+.IP
+.B info chown
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/chroot.1 b/raw/man1/chroot.1
new file mode 100644
index 0000000..57e9cc3
--- /dev/null
+++ b/raw/man1/chroot.1
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CHROOT "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+chroot \- run command or interactive shell with special root directory
+.SH SYNOPSIS
+.B chroot
+\fINEWROOT \fR[\fICOMMAND\fR...]
+.br
+.B chroot
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Run COMMAND with root directory set to NEWROOT.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If no command is given, run ``${SHELL} \fB\-i\fR'' (default: /bin/sh).
+.SH AUTHOR
+Written by Roland McGrath.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B chroot
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B chroot
+programs are properly installed at your site, the command
+.IP
+.B info chroot
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/chsh.1 b/raw/man1/chsh.1
new file mode 100644
index 0000000..7d86999
--- /dev/null
+++ b/raw/man1/chsh.1
@@ -0,0 +1,49 @@
+.\"
+.\"  chsh.1 -- change your login shell
+.\"  (c) 1994 by salvatore valente <svalente at athena.mit.edu>
+.\"
+.\"  this program is free software.  you can redistribute it and
+.\"  modify it under the terms of the gnu general public license.
+.\"  there is no warranty.
+.\"
+.TH CHSH 1 "7 October 1998" "chsh" "Linux Reference Manual"
+.SH NAME
+chsh \- change your login shell
+.SH SYNOPSIS
+.B chsh
+[\ \-s\ shell\ ] [\ \-l\ ] [\ \-u\ ] [\ \-v\ ] [\ username\ ]
+.SH DESCRIPTION
+.B chsh
+is used to change your login shell.
+If a shell is not given on the command line,
+.B chsh
+prompts for one.
+.SS VALID SHELLS
+.B chsh
+will accept the full pathname of any executable file on the system.
+However, it will issue a warning if the shell is not listed in the
+.I /etc/shells
+file.
+On the other hand, it can also be configured such that it will
+only accept shells listed in this file, unless you are root.
+.SH OPTIONS
+.TP
+.I "\-s, \-\-shell"
+Specify your login shell.
+.TP
+.I "\-l, \-\-list-shells"
+Print the list of shells listed in
+.I /etc/shells
+and exit.
+.TP
+.I "\-u, \-\-help"
+Print a usage message and exit.
+.TP
+.I "-v, \-\-version"
+Print version information and exit.
+.SH "SEE ALSO"
+.BR login (1),
+.BR passwd (5),
+.BR shells (5)
+.SH AUTHOR
+Salvatore Valente <svalente at mit.edu>
diff --git a/raw/man1/chvt.1 b/raw/man1/chvt.1
new file mode 100644
index 0000000..c7b9105
--- /dev/null
+++ b/raw/man1/chvt.1
@@ -0,0 +1,23 @@
+.\" @(#)chvt.1 1.0 970126 aeb
+.TH CHVT 1 "26 January 1997"
+.SH NAME
+chvt \- change foreground virtual terminal
+.SH SYNOPSIS
+.B chvt
+.I N
+.SH DESCRIPTION
+The command
+.B chvt
+.I N
+makes
+.I /dev/ttyN
+the foreground terminal.
+(The corresponding screen is created if it did not exist yet.
+To get rid of unused VTs,
+use
+.BR deallocvt (1).)
+The key combination
+.RI (Ctrl-)LeftAlt-F N
+(with
+.I N
+in the range 1-12) usually has a similar effect.
diff --git a/raw/man1/cksum.1 b/raw/man1/cksum.1
new file mode 100644
index 0000000..54ff87d
--- /dev/null
+++ b/raw/man1/cksum.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CKSUM "1" "October 2003" "cksum (coreutils) 5.0" FSF
+.SH NAME
+cksum \- checksum and count the bytes in a file
+.SH SYNOPSIS
+.B cksum
+[\fIFILE\fR]...
+.br
+.B cksum
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print CRC checksum and byte counts of each FILE.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Q. Frank Xia.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B cksum
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B cksum
+programs are properly installed at your site, the command
+.IP
+.B info cksum
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/clear.1 b/raw/man1/clear.1
new file mode 100644
index 0000000..4dab1e2
--- /dev/null
+++ b/raw/man1/clear.1
@@ -0,0 +1,47 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
+.\"                                                                          *
+.\" Permission is hereby granted, free of charge, to any person obtaining a  *
+.\" copy of this software and associated documentation files (the            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, sublicense, and/or sell       *
+.\" copies of the Software, and to permit persons to whom the Software is    *
+.\" furnished to do so, subject to the following conditions:                 *
+.\"                                                                          *
+.\" The above copyright notice and this permission notice shall be included  *
+.\" in all copies or substantial portions of the Software.                   *
+.\"                                                                          *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+.\"                                                                          *
+.\" Except as contained in this notice, the name(s) of the above copyright   *
+.\" holders shall not be used in advertising or otherwise to promote the     *
+.\" sale, use or other dealings in this Software without prior written       *
+.\" authorization.                                                           *
+.\"***************************************************************************
+.\"
+.TH clear 1 ""
+.ds n 5
+.SH NAME
+\fBclear\fR - clear the terminal screen
+.SH SYNOPSIS
+\fBclear\fR
+.br
+.SH DESCRIPTION
+\fBclear\fR clears your screen if this is possible.  It looks in the
+environment for the terminal type and then in the \fBterminfo\fR database to
+figure out how to clear the screen.
+.SH SEE ALSO
+\fBtput\fR(1), \fBterminfo\fR(\*n)
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
diff --git a/raw/man1/clusterdb.1 b/raw/man1/clusterdb.1
new file mode 100644
index 0000000..4f96df7
--- /dev/null
+++ b/raw/man1/clusterdb.1
@@ -0,0 +1,123 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CLUSTERDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+clusterdb \- cluster a PostgreSQL database
+
+.SH SYNOPSIS
+.sp
+\fBclusterdb\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB--table | -t \fItable\fB  \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBclusterdb\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR[\fR \fB--all\fR\fR | \fR\fB-a\fR\fR ]\fR
+.SH "DESCRIPTION"
+.PP
+\fBclusterdb\fR is a utility for reclustering tables
+in a PostgreSQL database. It finds tables
+that have previously been clustered, and clusters them again on the same
+index that was last used. Tables that have never been clustered are not
+affected.
+.PP
+\fBclusterdb\fR is a wrapper around the SQL
+command CLUSTER [\fBcluster\fR(7)].
+There is no effective difference between clustering databases via
+this utility and via other methods for accessing the server.
+.SH "OPTIONS"
+.PP
+\fBclusterdb\fR accepts the following command-line arguments:
+.TP
+\fB-a\fR
+.TP
+\fB--all\fR
+Cluster all databases.
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+Specifies the name of the database to be clustered.
+If this is not specified and \fB-a\fR (or
+\fB--all\fR) is not used, the database name is read
+from the environment variable \fBPGDATABASE\fR. If
+that is not set, the user name specified for the connection is
+used.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Echo the commands that \fBclusterdb\fR generates
+and sends to the server.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Do not display a response.
+.TP
+\fB-t \fItable\fB\fR
+.TP
+\fB--table \fItable\fB\fR
+Cluster \fItable\fR only.
+.PP
+.PP
+\fBclusterdb\fR also accepts 
+the following command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the server is
+running. If the value begins with a slash, it is used as the
+directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as.
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+In case of difficulty, see CLUSTER [\fBcluster\fR(7)] and \fBpsql\fR(1) for
+discussions of potential problems and error messages.
+The database server must be running at the
+targeted host. Also, any default connection settings and environment
+variables used by the \fBlibpq\fR front-end
+library will apply.
+.SH "EXAMPLES"
+.PP
+To cluster the database test:
+.sp
+.nf
+$ \fBclusterdb test\fR
+.sp
+.fi
+.PP
+To cluster a single table
+foo in a database named
+xyzzy:
+.sp
+.nf
+$ \fBclusterdb --table foo xyzzy\fR
+.sp
+.fi
+.SH "SEE ALSO"
+CLUSTER [\fBcluster\fR(7)]
+
diff --git a/raw/man1/col.1 b/raw/man1/col.1
new file mode 100644
index 0000000..1415121
--- /dev/null
+++ b/raw/man1/col.1
@@ -0,0 +1,138 @@
+.\" Copyright (c) 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Michael Rendell.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)col.1	6.8 (Berkeley) 6/17/91
+.\"
+.Dd June 17, 1991
+.Dt COL 1
+.Os
+.Sh NAME
+.Nm col
+.Nd filter reverse line feeds from input
+.Sh SYNOPSIS
+.Nm col
+.Op Fl bfpx
+.Op Fl l Ar num
+.Sh DESCRIPTION
+.Nm Col
+filters out reverse (and half reverse) line feeds so the output is
+in the correct order with only forward and half forward line
+feeds, and replaces white-space characters with tabs where possible.
+This can be useful in processing the output of
+.Xr nroff 1
+and
+.Xr tbl  1 .
+.Pp
+.Nm Col
+reads from standard input and writes to standard output.
+.Pp
+The options are as follows:
+.Bl -tag -width "-lnum"
+.It Fl b
+Do not output any backspaces, printing only the last character
+written to each column position.
+.It Fl f
+Forward half line feeds are permitted (``fine'' mode).
+Normally characters printed on a half line boundary are printed
+on the following line.
+.It Fl p
+Force unknown control sequences to be passed through unchanged.
+Normally,
+.Nm col
+will filter out any control sequences from the input other than those
+recognized and interpreted by itself, which are listed below.
+.It Fl x
+Output multiple spaces instead of tabs.
+.It Fl l Ns Ar num
+Buffer at least
+.Ar num
+lines in memory.
+By default, 128 lines are buffered.
+.El
+.Pp
+The control sequences for carriage motion that
+.Nm col
+understands and their decimal values are listed in the following
+table:
+.Pp
+.Bl -tag -width "carriage return" -compact
+.It ESC\-7
+reverse line feed (escape then 7)
+.It ESC\-8
+half reverse line feed (escape then 8)
+.It ESC\-9
+half forward line feed (escape then 9)
+.It backspace
+moves back one column (8); ignored in the first column
+.It carriage return
+(13)
+.It newline
+forward line feed (10); also does carriage return
+.It shift in
+shift to normal character set (15)
+.It shift out
+shift to alternate character set (14)
+.It space
+moves forward one column (32)
+.It tab
+moves forward to next tab stop (9)
+.It vertical tab
+reverse line feed (11)
+.El
+.Pp
+All unrecognized control characters and escape sequences are
+discarded.
+.Pp
+.Nm Col
+keeps track of the character set as characters are read and makes
+sure the character set is correct when they are output.
+.Pp
+If the input attempts to back up to the last flushed line,
+.Nm col
+will display a warning message.
+.Sh SEE ALSO
+.Xr expand 1 ,
+.Xr nroff 1 ,
+.Xr tbl 1
+.Sh STANDARDS
+The
+.Nm col
+utility conforms to the Single UNIX Specification, Version 2. The
+.Fl l
+option is an extension to the standard.
+.Sh HISTORY
+A
+.Nm col
+command
+appeared in Version 6 AT&T UNIX.
diff --git a/raw/man1/comm.1 b/raw/man1/comm.1
new file mode 100644
index 0000000..6ae5d3a
--- /dev/null
+++ b/raw/man1/comm.1
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH COMM "1" "October 2003" "comm (coreutils) 5.0" FSF
+.SH NAME
+comm \- compare two sorted files line by line
+.SH SYNOPSIS
+.B comm
+[\fIOPTION\fR]... \fILEFT_FILE RIGHT_FILE\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Compare sorted files LEFT_FILE and RIGHT_FILE line by line.
+.TP
+\fB\-1\fR
+suppress lines unique to left file
+.TP
+\fB\-2\fR
+suppress lines unique to right file
+.TP
+\fB\-3\fR
+suppress lines that appear in both files
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B comm
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B comm
+programs are properly installed at your site, the command
+.IP
+.B info comm
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/command.1 b/raw/man1/command.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/command.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/compgen.1 b/raw/man1/compgen.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/compgen.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/complete.1 b/raw/man1/complete.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/complete.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/continue.1 b/raw/man1/continue.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/continue.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/cp.1 b/raw/man1/cp.1
new file mode 100644
index 0000000..f036d71
--- /dev/null
+++ b/raw/man1/cp.1
@@ -0,0 +1,160 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CP "1" "October 2003" "cp (coreutils) 5.0" FSF
+.SH NAME
+cp \- copy files and directories
+.SH SYNOPSIS
+.B cp
+[\fIOPTION\fR]... \fISOURCE DEST\fR
+.br
+.B cp
+[\fIOPTION\fR]... \fISOURCE\fR... \fIDIRECTORY\fR
+.br
+.B cp
+[\fIOPTION\fR]... \fI--target-directory=DIRECTORY SOURCE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-archive\fR
+same as \fB\-dpR\fR
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-\-copy\-contents\fR
+copy contents of special files when recursive
+.TP
+\fB\-d\fR
+same as \fB\-\-no\-dereference\fR \fB\-\-preserve\fR=\fIlink\fR
+.TP
+\fB\-\-no\-dereference\fR
+never follow symbolic links
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+if an existing destination file cannot be
+opened, remove it and try again
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt before overwrite
+.TP
+\fB\-H\fR
+follow command-line symbolic links
+.TP
+\fB\-l\fR, \fB\-\-link\fR
+link files instead of copying
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+always follow symbolic links
+.TP
+\fB\-p\fR
+same as \fB\-\-preserve\fR=\fImode\fR,ownership,timestamps
+.TP
+\fB\-\-preserve\fR[=\fIATTR_LIST\fR]
+preserve the specified attributes (default:
+mode,ownership,timestamps), if possible
+additional attributes: links, all
+.TP
+\fB\-\-no\-preserve\fR=\fIATTR_LIST\fR
+don't preserve the specified attributes
+.TP
+\fB\-\-parents\fR
+append source path to DIRECTORY
+.TP
+\fB\-P\fR
+same as `--no-dereference'
+.TP
+\fB\-R\fR, \fB\-r\fR, \fB\-\-recursive\fR
+copy directories recursively
+.TP
+\fB\-\-remove\-destination\fR
+remove each existing destination file before
+attempting to open it (contrast with \fB\-\-force\fR)
+.TP
+\fB\-\-reply=\fR{yes,no,query}
+specify how to handle the prompt about an
+existing destination file
+.TP
+\fB\-\-sparse\fR=\fIWHEN\fR
+control creation of sparse files
+.TP
+\fB\-\-strip\-trailing\-slashes\fR remove any trailing slashes from each SOURCE
+argument
+.TP
+\fB\-s\fR, \fB\-\-symbolic\-link\fR
+make symbolic links instead of copying
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+move all SOURCE arguments into DIRECTORY
+.TP
+\fB\-u\fR, \fB\-\-update\fR
+copy only when the SOURCE file is newer
+than the destination file or when the
+destination file is missing
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done
+.TP
+\fB\-x\fR, \fB\-\-one\-file\-system\fR
+stay on this file system
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+By default, sparse SOURCE files are detected by a crude heuristic and the
+corresponding DEST file is made sparse as well.  That is the behavior
+selected by \fB\-\-sparse\fR=\fIauto\fR.  Specify \fB\-\-sparse\fR=\fIalways\fR to create a sparse DEST
+file whenever the SOURCE file contains a long enough sequence of zero bytes.
+Use \fB\-\-sparse\fR=\fInever\fR to inhibit creation of sparse files.
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable.  Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.PP
+As a special case, cp makes a backup of SOURCE when the force and backup
+options are given and SOURCE and DEST are the same name for an existing,
+regular file.
+.SH AUTHOR
+Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B cp
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B cp
+programs are properly installed at your site, the command
+.IP
+.B info cp
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/cpio.1 b/raw/man1/cpio.1
new file mode 100644
index 0000000..57667d4
--- /dev/null
+++ b/raw/man1/cpio.1
@@ -0,0 +1,341 @@
+.TH CPIO 1L \" -*- nroff -*-
+.SH NAME
+cpio \- copy files to and from archives
+.SH SYNOPSIS
+.B cpio
+{\-o|\-\-create} [\-0acvABLV] [\-C bytes] [\-H format] [\-M message]
+[\-O [[user@]host:]archive] [\-F [[user@]host:]archive]
+[\-\-file=[[user@]host:]archive] [\-\-format=format] [\-\-message=message]
+[\-\-null] [\-\-reset-access-time] [\-\-verbose] [\-\-dot] [\-\-append]
+[\-\-block-size=blocks] [\-\-dereference] [\-\-io-size=bytes] [\-\-quiet]
+[\-\-force\-local] [\-\-rsh-command=command] [\-\-help] [\-\-version]
+< name-list [> archive]
+
+.B cpio
+{\-i|\-\-extract} [\-bcdfmnrtsuvBSV] [\-C bytes] [\-E file] [\-H format]
+[\-M message] [\-R [user][:.][group]] [\-I [[user@]host:]archive]
+[\-F [[user@]host:]archive] [\-\-file=[[user@]host:]archive]
+[\-\-make-directories] [\-\-nonmatching] [\-\-preserve-modification-time]
+[\-\-numeric-uid-gid] [\-\-rename] [\-t|\-\-list] [\-\-swap-bytes] [\-\-swap] [\-\-dot]
+[\-\-unconditional] [\-\-verbose] [\-\-block-size=blocks] [\-\-swap-halfwords]
+[\-\-io-size=bytes] [\-\-pattern-file=file] [\-\-format=format]
+[\-\-owner=[user][:.][group]] [\-\-no-preserve-owner] [\-\-message=message]
+[\-\-force\-local] [\-\-no\-absolute\-filenames] [\-\-sparse]
+[\-\-only\-verify\-crc] [\-\-quiet] [\-\-rsh-command=command] [\-\-help]
+[\-\-version] [pattern...] [< archive]
+
+.B cpio
+{\-p|\-\-pass-through} [\-0adlmuvLV] [\-R [user][:.][group]]
+[\-\-null] [\-\-reset-access-time] [\-\-make-directories] [\-\-link] [\-\-quiet]
+[\-\-preserve-modification-time] [\-\-unconditional] [\-\-verbose] [\-\-dot]
+[\-\-dereference] [\-\-owner=[user][:.][group]] [\-\-no-preserve-owner]
+[\-\-sparse] [\-\-help] [\-\-version] destination-directory < name-list
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR cpio .
+.B cpio
+copies files into or out of a cpio or tar archive, which is a file that
+contains other files plus information about them, such as their
+file name, owner, timestamps, and access permissions.  The archive can
+be another file on the disk, a magnetic tape, or a pipe.
+.B cpio
+has three operating modes.
+.PP
+In copy-out mode,
+.B cpio
+copies files into an archive.  It reads a list of filenames, one per
+line, on the standard input, and writes the archive onto the standard
+output.  A typical way to generate the list of filenames is with the
+.B find
+command; you should give
+.B find
+the \-depth option to minimize problems with permissions on
+directories that are unwritable or not searchable.
+.PP
+In copy-in mode,
+.B cpio
+copies files out of an archive or lists the archive contents.  It
+reads the archive from the standard input.  Any non-option command
+line arguments are shell globbing patterns; only files in the archive
+whose names match one or more of those patterns are copied from the
+archive.  Unlike in the shell, an initial `.' in a filename does
+match a wildcard at the start of a pattern, and a `/' in a filename
+can match wildcards.  If no patterns are given, all files are
+extracted.
+.PP
+In copy-pass mode,
+.B cpio
+copies files from one directory tree to another, combining the
+copy-out and copy-in steps without actually using an archive.
+It reads the list of files to copy from the standard input; the
+directory into which it will copy them is given as a non-option
+argument.
+.PP
+.B cpio
+supports the following archive formats: binary, old ASCII, new
+ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar.  
+The binary format 
+is obsolete because it encodes information about the files in a way
+that is not portable between different machine architectures.
+The old ASCII format is portable between different machine architectures,
+but should not be used on file systems with more than 65536 i-nodes.
+The new ASCII format is portable between different machine architectures
+and can be used on any size file system, but is not supported by all
+versions of
+.BR cpio ;
+currently, it is only supported by GNU and Unix System V R4.
+The crc format is
+like the new ASCII format, but also contains a checksum for each file
+which
+.B cpio 
+calculates when creating an archive
+and verifies when the file is extracted from the archive.
+The HPUX formats are provided for compatibility with HPUX's cpio which
+stores device files differently.
+.PP
+The tar format is provided for compatability with
+the
+.B tar
+program.  It can not be used to archive files with names
+longer than 100 characters, and can not be used to archive "special"
+(block or character devices) files.
+The POSIX.1 tar format can not be used to archive files with names longer
+than 255 characters (less unless they have a "/" in just the right place).
+.PP
+By default,  
+.B cpio
+creates binary format archives, for compatibility with
+older
+.B cpio
+programs.
+When extracting from archives,
+.B cpio
+automatically recognizes which kind of archive it is reading and can
+read archives created on machines with a different byte-order.
+.PP
+Some of the options to
+.B cpio
+apply only to certain operating modes; see the SYNOPSIS section for a
+list of which options are allowed in which modes.
+.SS OPTIONS
+.TP
+.I "\-0, \-\-null"
+In copy-out and copy-pass modes, read a list of filenames terminated
+by a null character instead of a newline, so that files whose names
+contain newlines can be archived.  GNU
+.B find
+is one way to produce a list of null-terminated filenames.
+.TP
+.I "\-a, \-\-reset-access-time"
+Reset the access times of files after reading them, so that it does
+not look like they have just been read.
+.TP
+.I "\-A, \-\-append"
+Append to an existing archive.  Only works in copy-out mode.  The
+archive must be a disk file specified with the
+.I \-O
+or
+.I "\-F (\-\-file)"
+option.
+.TP
+.I "\-b, \-\-swap"
+In copy-in mode, swap both halfwords of words and bytes of halfwords
+in the data.  Equivalent to
+.IR "\-sS" .
+Use this option to convert 32-bit integers between big-endian and
+little-endian machines.
+.TP
+.I "\-B"
+Set the I/O block size to 5120 bytes.  Initially the block size is 512
+bytes.
+.TP
+.I "\-\-block-size=BLOCK-SIZE"
+Set the I/O block size to BLOCK-SIZE * 512 bytes.
+.TP
+.I "\-c"
+Identical to "-H newc", use the new (SVR4) portable format.
+If you wish the old portable (ASCII) archive format, use "-H odc" instead.
+.TP
+.I "\-C IO-SIZE, \-\-io-size=IO-SIZE"
+Set the I/O block size to IO-SIZE bytes.
+.TP
+.I "\-d, \-\-make-directories"
+Create leading directories where needed.
+.TP
+.I "\-E FILE, \-\-pattern-file=FILE"
+In copy-in mode, read additional patterns specifying filenames to
+extract or list from FILE.  The lines of FILE are treated as if they
+had been non-option arguments to
+.BR cpio .
+.TP
+.I "\-f, \-\-nonmatching"
+Only copy files that do not match any of the given patterns.
+.TP
+.I "\-F, \-\-file=archive"
+Archive filename to use instead of standard input or output.  To use a
+tape drive on another machine as the archive, use a filename that
+starts with `HOSTNAME:'.  The hostname can be preceded by a
+username and an `@' to access the remote tape drive as that user, if
+you have permission to do so (typically an entry in that user's
+`~/.rhosts' file).
+.TP
+.I "\-\-force-local"
+With
+.IR \-F ,
+.IR \-I ,
+or
+.IR \-O ,
+take the archive file name to be a local file even if it contains a
+colon, which would ordinarily indicate a remote host name.
+.TP
+.I "\-H FORMAT, \-\-format=FORMAT"
+Use archive format FORMAT.  The valid formats are listed below;
+the same names are also recognized in all-caps.  The default in
+copy-in mode is to automatically detect the archive format, and in
+copy-out mode is "bin".
+.RS
+.IP bin
+The obsolete binary format.
+.IP odc
+The old (POSIX.1) portable format.
+.IP newc
+The new (SVR4) portable format, which supports file systems having
+more than 65536 i-nodes.
+.IP crc
+The new (SVR4) portable format with a checksum added.
+.IP tar
+The old tar format.
+.IP ustar
+The POSIX.1 tar format.  Also recognizes GNU
+.B tar
+archives, which are similar but not identical.
+.IP hpbin
+The obsolete binary format used by HPUX's cpio (which stores device files
+differently).
+.IP hpodc
+The portable format used by HPUX's cpio (which stores device files differently).
+.RE
+.TP
+.I "\-i, \-\-extract"
+Run in copy-in mode.
+.TP
+.I "\-I archive"
+Archive filename to use instead of standard input.  To use a
+tape drive on another machine as the archive, use a filename that
+starts with `HOSTNAME:'.  The hostname can be preceded by a
+username and an `@' to access the remote tape drive as that user, if
+you have permission to do so (typically an entry in that user's
+`~/.rhosts' file).
+.TP
+.I \-k
+Ignored; for compatibility with other versions of
+.BR cpio .
+.TP
+.I "\-l, \-\-link"
+Link files instead of copying them, when possible.
+.TP
+.I "\-L, \-\-dereference"
+Dereference symbolic links (copy the files that they point to instead
+of copying the links).
+.TP
+.I "\-m, \-\-preserve-modification-time"
+Retain previous file modification times when creating files.
+.TP
+.I "\-M MESSAGE, \-\-message=MESSAGE"
+Print MESSAGE when the end of a volume of the backup media (such as a
+tape or a floppy disk) is reached, to prompt the user to insert a new
+volume.  If MESSAGE contains the string "%d", it is replaced by the
+current volume number (starting at 1).
+.TP
+.I "\-n, \-\-numeric-uid-gid"
+In the verbose table of contents listing, show numeric UID and GID
+instead of translating them into names.
+Also extracts tar archives using the numeric UID and GID instead of the
+user/group names.
+.RB ( cpio
+archives are always extracted using the numeric UID and GID.)
+.TP
+.I " \-\-no-absolute-filenames"
+In copy-in mode, create all files relative to the current directory,
+even if they have an absolute file name in the archive.
+.TP
+.I " \-\-no-preserve-owner"
+In copy-in mode and copy-pass mode, do not change the ownership of the
+files; leave them owned by the user extracting them.  This is the
+default for non-root users, so that users on System V don't
+inadvertantly give away files.
+.TP
+.I "\-o, \-\-create"
+Run in copy-out mode.
+.TP
+.I "\-O archive"
+Archive filename to use instead of standard output.  To use a tape
+drive on another machine as the archive, use a filename that starts
+with `HOSTNAME:'.  The hostname can be preceded by a username and an
+`@' to access the remote tape drive as that user, if you have
+permission to do so (typically an entry in that user's `~/.rhosts'
+file).
+.TP
+.I " \-\-only-verify-crc"
+When reading a CRC format archive in copy-in mode, only verify the
+CRC's of each file in the archive, don't actually extract the files.
+.TP
+.I "\-p, \-\-pass-through"
+Run in copy-pass mode.
+.TP
+.I "\-\-quiet"
+Do not print the number of blocks copied.
+.TP
+.I "\-r, \-\-rename"
+Interactively rename files.
+.TP
+.I "\-R [user][:.][group], \-\-owner [user][:.][group]"
+In copy-out and copy-pass modes, set the ownership of all files created
+to the specified user and/or group.  Either the user or the group, or
+both, must be present.  If the group is omitted but the ":" or "."
+separator is given, use the given user's login group.  Only the
+super-user can change files' ownership.
+.TP
+.I "\-\-rsh-command=COMMAND"
+Notifies
+.B mt
+that it should use COMMAND to communicate with remote devices instead of
+.I /usr/bin/ssh
+or
+.IR /usr/bin/rsh .
+.TP
+.I "\-\-sparse"
+In copy-in and copy-pass modes, write files with large blocks of zeros
+as sparse files.
+.TP
+.I "\-s, \-\-swap-bytes"
+In copy-in mode, swap the bytes of each halfword (pair of bytes) in the
+files.
+.TP
+.I "\-S, \-\-swap-halfwords"
+In copy-in mode, swap the halfwords of each word (4 bytes) in the
+files.
+.TP
+.I "\-t, \-\-list"
+Print a table of contents of the input.
+.TP
+.I "\-u, \-\-unconditional"
+Replace all files, without asking whether to replace existing newer
+files with older files.
+.TP
+.I "\-v, \-\-verbose"
+List the files processed, or with
+.IR \-t ,
+give an `ls \-l' style table of contents listing.  In a verbose table
+of contents of a ustar archive, user and group names in the archive
+that do not exist on the local system are replaced by the names that
+correspond locally to the numeric UID and GID stored in the archive.
+.TP
+.I "\-V \-\-dot"
+Print a "." for each file processed.
+.TP
+.I "\-\-version"
+Print the
+.B cpio
+program version number and exit.
diff --git a/raw/man1/createdb.1 b/raw/man1/createdb.1
new file mode 100644
index 0000000..41bd409
--- /dev/null
+++ b/raw/man1/createdb.1
@@ -0,0 +1,149 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATEDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+createdb \- create a new PostgreSQL database
+
+.SH SYNOPSIS
+.sp
+\fBcreatedb\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR\fR [ \fR\fB\fIdescription\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBcreatedb\fR creates a new PostgreSQL
+database.
+.PP
+Normally, the database user who executes this command becomes the owner of
+the new database.
+However a different owner can be specified via the \fB-O\fR
+option, if the executing user has appropriate privileges.
+.PP
+\fBcreatedb\fR is a wrapper around the
+SQL command CREATE DATABASE [\fBcreate_database\fR(7)].
+There is no effective difference between creating databases via
+this utility and via other methods for accessing the server.
+.SH "OPTIONS"
+.PP
+\fBcreatedb\fR accepts the following command-line arguments:
+.TP
+\fB\fIdbname\fB\fR
+Specifies the name of the database to be created. The name must be
+unique among all PostgreSQL databases in this cluster.
+The default is to create a database with the same name as the
+current system user.
+.TP
+\fB\fIdescription\fB\fR
+This optionally specifies a comment to be associated with the newly created
+database.
+.TP
+\fB-D \fIlocation\fB\fR
+.TP
+\fB--location \fIlocation\fB\fR
+Specifies the alternative location for the database. See also \fBinitlocation\fR(1).
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Echo the commands that \fBcreatedb\fR generates
+and sends to the server.
+.TP
+\fB-E \fIencoding\fB\fR
+.TP
+\fB--encoding \fIencoding\fB\fR
+Specifies the character encoding scheme to be used in this database.
+.TP
+\fB-O \fIowner\fB\fR
+.TP
+\fB--owner \fIowner\fB\fR
+Specifies the database user who will own the new database.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Do not display a response.
+.TP
+\fB-T \fItemplate\fB\fR
+.TP
+\fB--template \fItemplate\fB\fR
+Specifies the template database from which to build this database.
+.PP
+.PP
+The options \fB-D\fR, \fB-E\fR,
+\fB-O\fR, and
+\fB-T\fR correspond to options of the underlying
+SQL command CREATE DATABASE [\fBcreate_database\fR(7)]; see there for more information
+about them.
+.PP
+\fBcreatedb\fR also accepts the following
+command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server is running. If the value begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or the local Unix domain socket file 
+extension on which the server is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATABASE\fR
+If set, the name of the database to create, unless overridden on
+the command line.
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters. \fBPGUSER\fR also
+determines the name of the database to create, if it is not
+specified on the command line or by \fBPGDATABASE\fR.
+.SH "DIAGNOSTICS"
+.PP
+In case of difficulty, see CREATE DATABASE [\fBcreate_database\fR(7)] and \fBpsql\fR(1) for
+discussions of potential problems and error messages.
+The database server must be running at the
+targeted host. Also, any default connection settings and environment
+variables used by the \fBlibpq\fR front-end
+library will apply.
+.SH "EXAMPLES"
+.PP
+To create the database demo using the default
+database server:
+.sp
+.nf
+$ \fBcreatedb demo\fR
+CREATE DATABASE
+.sp
+.fi
+The response is the same as you would have gotten from running the
+\fBCREATE DATABASE\fR SQL command.
+.PP
+To create the database demo using the
+server on host eden, port 5000, using the
+LATIN1 encoding scheme with a look at the
+underlying command:
+.sp
+.nf
+$ \fBcreatedb -p 5000 -h eden -E LATIN1 -e demo\fR
+CREATE DATABASE "demo" WITH ENCODING = 'LATIN1'
+CREATE DATABASE
+.sp
+.fi
+.SH "SEE ALSO"
+\fBdropdb\fR(1), CREATE DATABASE [\fBcreate_database\fR(7)]
+
diff --git a/raw/man1/createlang.1 b/raw/man1/createlang.1
new file mode 100644
index 0000000..f748173
--- /dev/null
+++ b/raw/man1/createlang.1
@@ -0,0 +1,114 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATELANG" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+createlang \- define a new PostgreSQL procedural language
+
+.SH SYNOPSIS
+.sp
+\fBcreatelang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fB\fIlangname\fB\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBcreatelang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR\fR \fB--list\fR\fR | \fR\fB-l\fR\fR\fR \fB\fIdbname\fB\fR
+.SH "DESCRIPTION"
+.PP
+\fBcreatelang\fR is a utility for adding a new 
+programming language to a PostgreSQL database.
+\fBcreatelang\fR can handle all the languages
+supplied in the default PostgreSQL distribution, but
+not languages provided by other parties.
+.PP
+Although backend programming languages can be added directly using
+several SQL commands, it is recommended to use
+\fBcreatelang\fR because it performs a number
+of checks and is much easier to use. See
+CREATE LANGUAGE [\fBcreate_language\fR(7)]
+for additional information.
+.SH "OPTIONS"
+.PP
+\fBcreatelang\fR accepts the following command-line arguments:
+.TP
+\fB\fIlangname\fB\fR
+Specifies the name of the procedural programming language to be
+defined.
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+Specifies to which database the language should be added.
+The default is to use the database with the same name as the
+current system user.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Display SQL commands as they are executed.
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+Show a list of already installed languages in the target database.
+.TP
+\fB-L \fIdirectory\fB\fR
+Specifies the directory in which the language interpreter is
+to be found. The directory is normally found automatically; this
+option is primarily for debugging purposes.
+.PP
+.PP
+\fBcreatelang\fR also accepts 
+the following command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server
+is running. If the value begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as.
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+Most error messages are self-explanatory. If not, run
+\fBcreatelang\fR with the \fB--echo\fR
+option and see under the respective SQL command
+for details.
+.SH "NOTES"
+.PP
+Use \fBdroplang\fR(1) to remove a language.
+.SH "EXAMPLES"
+.PP
+To install the language pltcl into the database
+template1:
+.sp
+.nf
+$ \fBcreatelang pltcl template1\fR
+.sp
+.fi
+.SH "SEE ALSO"
+\fBdroplang\fR(1), CREATE LANGUAGE [\fBcreate_language\fR(7)]
+
diff --git a/raw/man1/createuser.1 b/raw/man1/createuser.1
new file mode 100644
index 0000000..6fdccea
--- /dev/null
+++ b/raw/man1/createuser.1
@@ -0,0 +1,170 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATEUSER" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+createuser \- define a new PostgreSQL user account
+
+.SH SYNOPSIS
+.sp
+\fBcreateuser\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIusername\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBcreateuser\fR creates a 
+new PostgreSQL user. 
+Only superusers (users with usesuper set in
+the pg_shadow table) can create 
+new PostgreSQL users,
+so \fBcreateuser\fR must be
+invoked by someone who can connect as a PostgreSQL
+superuser.
+.PP
+Being a superuser also implies the ability to bypass access permission
+checks within the database, so superuserdom should not be granted lightly.
+.PP
+\fBcreateuser\fR is a wrapper around the
+SQL command CREATE USER [\fBcreate_user\fR(7)].
+There is no effective difference between creating users via
+this utility and via other methods for accessing the server.
+.SH "OPTIONS"
+.PP
+\fBcreateuser\fR accepts the following command-line arguments:
+.TP
+\fB\fIusername\fB\fR
+Specifies the name of the PostgreSQL user to be created. 
+This name must be unique among all PostgreSQL users.
+.TP
+\fB-a\fR
+.TP
+\fB--adduser\fR
+The new user is allowed to create other users.
+(Note: Actually, this makes the new user a \fBsuperuser\fR.
+The option is poorly named.)
+.TP
+\fB-A\fR
+.TP
+\fB--no-adduser\fR
+The new user is not allowed to create other users (i.e.,
+the new user is a regular user, not a superuser).
+This is the default.
+.TP
+\fB-d\fR
+.TP
+\fB--createdb\fR
+The new user is allowed to create databases.
+.TP
+\fB-D\fR
+.TP
+\fB--no-createdb\fR
+The new user is not allowed to create databases.
+This is the default.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Echo the commands that \fBcreateuser\fR generates
+and sends to the server.
+.TP
+\fB-E\fR
+.TP
+\fB--encrypted\fR
+Encrypts the user's password stored in the database. If not
+specified, the default password behavior is used.
+.TP
+\fB-i \fInumber\fB\fR
+.TP
+\fB--sysid \fInumber\fB\fR
+Allows you to pick a non-default user ID for the new user. This is not
+necessary, but some people like it.
+.TP
+\fB-N\fR
+.TP
+\fB--unencrypted\fR
+Does not encrypt the user's password stored in the database. If
+not specified, the default password behavior is used.
+.TP
+\fB-P\fR
+.TP
+\fB--pwprompt\fR
+If given, \fBcreateuser\fR will issue a prompt for
+the password of the new user. This is not necessary if you do not plan
+on using password authentication.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Do not display a response.
+.PP
+.PP
+You will be prompted for a name and other missing information if it
+is not specified on the command line.
+.PP
+\fBcreateuser\fR also accepts the following
+command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server
+is running. If the value begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as (not the user name to create).
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt (to connect to the server, not for the
+password of the new user).
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+In case of difficulty, see CREATE USER [\fBcreate_user\fR(7)] and \fBpsql\fR(1) for
+discussions of potential problems and error messages.
+The database server must be running at the
+targeted host. Also, any default connection settings and environment
+variables used by the \fBlibpq\fR front-end
+library will apply.
+.SH "EXAMPLES"
+.PP
+To create a user joe on the default database
+server:
+.sp
+.nf
+$ \fBcreateuser joe\fR
+Is the new user allowed to create databases? (y/n) \fBn\fR
+Shall the new user be allowed to create more new users? (y/n) \fBn\fR
+CREATE USER
+.sp
+.fi
+.PP
+To create the same user joe using the
+server on host eden, port 5000, avoiding the prompts and
+taking a look at the underlying command:
+.sp
+.nf
+$ \fBcreateuser -p 5000 -h eden -D -A -e joe\fR
+CREATE USER "joe" NOCREATEDB NOCREATEUSER
+CREATE USER
+.sp
+.fi
+.SH "SEE ALSO"
+\fBdropuser\fR(1), CREATE USER [\fBcreate_user\fR(7)]
+
diff --git a/raw/man1/cut.1 b/raw/man1/cut.1
new file mode 100644
index 0000000..8428ba8
--- /dev/null
+++ b/raw/man1/cut.1
@@ -0,0 +1,81 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH CUT "1" "October 2003" "cut (coreutils) 5.0" FSF
+.SH NAME
+cut \- remove sections from each line of files
+.SH SYNOPSIS
+.B cut
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print selected parts of lines from each FILE to standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR=\fILIST\fR
+output only these bytes
+.TP
+\fB\-c\fR, \fB\-\-characters\fR=\fILIST\fR
+output only these characters
+.TP
+\fB\-d\fR, \fB\-\-delimiter\fR=\fIDELIM\fR
+use DELIM instead of TAB for field delimiter
+.TP
+\fB\-f\fR, \fB\-\-fields\fR=\fILIST\fR
+output only these fields;  also print any line
+that contains no delimiter character, unless
+the \fB\-s\fR option is specified
+.TP
+\fB\-n\fR
+with \fB\-b\fR: don't split multibyte characters
+.TP
+\fB\-s\fR, \fB\-\-only\-delimited\fR
+do not print lines not containing delimiters
+.TP
+\fB\-\-output\-delimiter\fR=\fISTRING\fR
+use STRING as the output delimiter
+the default is to use the input delimiter
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Use one, and only one of \fB\-b\fR, \fB\-c\fR or \fB\-f\fR.  Each LIST is made up of one
+range, or many ranges separated by commas.  Each range is one of:
+.TP
+N
+N'th byte, character or field, counted from 1
+.TP
+N-
+from N'th byte, character or field, to end of line
+.TP
+N-M
+from N'th to M'th (included) byte, character or field
+.TP
+\fB\-M\fR
+from first to M'th (included) byte, character or field
+.PP
+With no FILE, or when FILE is -, read standard input.
+.SH AUTHOR
+Written by David Ihnat, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B cut
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B cut
+programs are properly installed at your site, the command
+.IP
+.B info cut
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/date.1 b/raw/man1/date.1
new file mode 100644
index 0000000..2eefa7c
--- /dev/null
+++ b/raw/man1/date.1
@@ -0,0 +1,206 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH DATE "1" "March 2003" "date (coreutils) 5.0" "User Commands"
+.SH NAME
+date \- print or set the system date and time
+.SH SYNOPSIS
+.B date
+[\fIOPTION\fR]... [\fI+FORMAT\fR]
+.br
+.B date
+[\fI-u|--utc|--universal\fR] [\fIMMDDhhmm\fR[[\fICC\fR]\fIYY\fR][\fI.ss\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Display the current time in the given FORMAT, or set the system date.
+.TP
+\fB\-d\fR, \fB\-\-date\fR=\fISTRING\fR
+display time described by STRING, not `now'
+.TP
+\fB\-f\fR, \fB\-\-file\fR=\fIDATEFILE\fR
+like \fB\-\-date\fR once for each line of DATEFILE
+.TP
+\fB\-ITIMESPEC\fR, \fB\-\-iso\-8601\fR[=\fITIMESPEC\fR]
+output date/time in ISO 8601 format.
+TIMESPEC=`date' for date only,
+`hours', `minutes', or `seconds' for date and
+time to the indicated precision.
+\fB\-\-iso\-8601\fR without TIMESPEC defaults to `date'.
+.TP
+\fB\-r\fR, \fB\-\-reference\fR=\fIFILE\fR
+display the last modification time of FILE
+.TP
+\fB\-R\fR, \fB\-\-rfc\-822\fR
+output RFC-822 compliant date string
+.TP
+\fB\-s\fR, \fB\-\-set\fR=\fISTRING\fR
+set time described by STRING
+.TP
+\fB\-u\fR, \fB\-\-utc\fR, \fB\-\-universal\fR
+print or set Coordinated Universal Time
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+FORMAT controls the output.  The only valid option for the second form
+specifies Coordinated Universal Time.  Interpreted sequences are:
+.TP
+%%
+a literal %
+.TP
+%a
+locale's abbreviated weekday name (Sun..Sat)
+.TP
+%A
+locale's full weekday name, variable length (Sunday..Saturday)
+.TP
+%b
+locale's abbreviated month name (Jan..Dec)
+.TP
+%B
+locale's full month name, variable length (January..December)
+.TP
+%c
+locale's date and time (Sat Nov 04 12:02:33 EST 1989)
+.TP
+%C
+century (year divided by 100 and truncated to an integer) [00-99]
+.TP
+%d
+day of month (01..31)
+.TP
+%D
+date (mm/dd/yy)
+.TP
+%e
+day of month, blank padded ( 1..31)
+.TP
+%F
+same as %Y-%m-%d
+.TP
+%g
+the 2-digit year corresponding to the %V week number
+.TP
+%G
+the 4-digit year corresponding to the %V week number
+.TP
+%h
+same as %b
+.TP
+%H
+hour (00..23)
+.TP
+%I
+hour (01..12)
+.TP
+%j
+day of year (001..366)
+.TP
+%k
+hour ( 0..23)
+.TP
+%l
+hour ( 1..12)
+.TP
+%m
+month (01..12)
+.TP
+%M
+minute (00..59)
+.TP
+%n
+a newline
+.TP
+%N
+nanoseconds (000000000..999999999)
+.TP
+%p
+locale's upper case AM or PM indicator (blank in many locales)
+.TP
+%P
+locale's lower case am or pm indicator (blank in many locales)
+.TP
+%r
+time, 12-hour (hh:mm:ss [AP]M)
+.TP
+%R
+time, 24-hour (hh:mm)
+.TP
+%s
+seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)
+.TP
+%S
+second (00..60); the 60 is necessary to accommodate a leap second
+.TP
+%t
+a horizontal tab
+.TP
+%T
+time, 24-hour (hh:mm:ss)
+.TP
+%u
+day of week (1..7);  1 represents Monday
+.TP
+%U
+week number of year with Sunday as first day of week (00..53)
+.TP
+%V
+week number of year with Monday as first day of week (01..53)
+.TP
+%w
+day of week (0..6);  0 represents Sunday
+.TP
+%W
+week number of year with Monday as first day of week (00..53)
+.TP
+%x
+locale's date representation (mm/dd/yy)
+.TP
+%X
+locale's time representation (%H:%M:%S)
+.TP
+%y
+last two digits of year (00..99)
+.TP
+%Y
+year (1970...)
+.TP
+%z
+RFC-822 style numeric timezone (-0500) (a nonstandard extension)
+.TP
+%Z
+time zone (e.g., EDT), or nothing if no time zone is determinable
+.PP
+By default, date pads numeric fields with zeroes.  GNU date recognizes
+the following modifiers between `%' and a numeric directive.
+.IP
+`-' (hyphen) do not pad the field
+`_' (underscore) pad the field with spaces
+.SH ENVIRONMENT
+.TP
+TZ
+Specifies the timezone, unless overridden by command line parameters.
+If neither is specified, the setting from /etc/localtime is used.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B date
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B date
+programs are properly installed at your site, the command
+.IP
+.B info date
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/dd.1 b/raw/man1/dd.1
new file mode 100644
index 0000000..03bd1a3
--- /dev/null
+++ b/raw/man1/dd.1
@@ -0,0 +1,108 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH DD "1" "October 2003" "dd (coreutils) 5.0" FSF
+.SH NAME
+dd \- convert and copy a file
+.SH SYNOPSIS
+.B dd
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Copy a file, converting and formatting according to the options.
+.TP
+bs=BYTES
+force ibs=BYTES and obs=BYTES
+.TP
+cbs=BYTES
+convert BYTES bytes at a time
+.TP
+conv=KEYWORDS
+convert the file as per the comma separated keyword list
+.TP
+count=BLOCKS
+copy only BLOCKS input blocks
+.TP
+ibs=BYTES
+read BYTES bytes at a time
+.TP
+if=FILE
+read from FILE instead of stdin
+.TP
+obs=BYTES
+write BYTES bytes at a time
+.TP
+of=FILE
+write to FILE instead of stdout
+.TP
+seek=BLOCKS
+skip BLOCKS obs-sized blocks at start of output
+.TP
+skip=BLOCKS
+skip BLOCKS ibs-sized blocks at start of input
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+BLOCKS and BYTES may be followed by the following multiplicative suffixes:
+xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1,000,000, M 1,048,576,
+GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.
+Each KEYWORD may be:
+.TP
+ascii
+from EBCDIC to ASCII
+.TP
+ebcdic
+from ASCII to EBCDIC
+.TP
+ibm
+from ASCII to alternated EBCDIC
+.TP
+block
+pad newline-terminated records with spaces to cbs-size
+.TP
+unblock
+replace trailing spaces in cbs-size records with newline
+.TP
+lcase
+change upper case to lower case
+.TP
+notrunc
+do not truncate the output file
+.TP
+ucase
+change lower case to upper case
+.TP
+swab
+swap every pair of input bytes
+.TP
+noerror
+continue after read errors
+.TP
+sync
+pad every input block with NULs to ibs-size; when used
+.IP
+with block or unblock, pad with spaces rather than NULs
+.SH AUTHOR
+Written by Paul Rubin, David MacKenzie, and Stuart Kemp.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B dd
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B dd
+programs are properly installed at your site, the command
+.IP
+.B info dd
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/deallocvt.1 b/raw/man1/deallocvt.1
new file mode 100644
index 0000000..45a329d
--- /dev/null
+++ b/raw/man1/deallocvt.1
@@ -0,0 +1,27 @@
+.\" @(#)deallocvt.1 1.0 970317 aeb
+.TH DEALLOCVT 1 "17 Mar 1997"
+.SH NAME
+deallocvt \- deallocate unused virtual consoles
+.SH SYNOPSIS
+.B deallocvt
+.RI [ N " ...]"
+.SH DESCRIPTION
+.LP
+The command
+.B deallocvt
+deallocates kernel memory and data structures
+for all unused virtual consoles.
+If one or more arguments
+.IR N " ..."
+are given, only the corresponding consoles
+.I /dev/ttyN
+are deallocated.
+
+A virtual console is unused if it is not the foreground console,
+and no process has it open for reading or writing, and no text
+has been selected on its screen.
+.SH "SEE ALSO"
+.BR chvt (1),
+.BR openvt (1)
+
+
diff --git a/raw/man1/declare.1 b/raw/man1/declare.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/declare.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/df.1 b/raw/man1/df.1
new file mode 100644
index 0000000..df77219
--- /dev/null
+++ b/raw/man1/df.1
@@ -0,0 +1,106 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH DF "1" "October 2003" "df (coreutils) 5.0" FSF
+.SH NAME
+df \- report filesystem disk space usage
+.SH SYNOPSIS
+.B df
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR df .
+.B df
+displays the amount of disk space available on the filesystem
+containing each file name argument.  If no file name is given, the
+space available on all currently mounted filesystems is shown.  Disk
+space is shown in 1K blocks by default, unless the environment
+variable POSIXLY_CORRECT is set, in which case 512-byte blocks are
+used.
+.PP
+If an argument is the absolute file name of a disk device node containing a
+mounted filesystem,
+.B df
+shows the space available on that filesystem rather than on the
+filesystem containing the device node (which is always the root
+filesystem).  This version of
+.B df
+cannot show the space available on unmounted filesystems, because on
+most kinds of systems doing so requires very nonportable intimate
+knowledge of filesystem structures.
+.SH OPTIONS
+.PP
+Show information about the filesystem on which each FILE resides,
+or all filesystems by default.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+include filesystems having 0 blocks
+.HP
+\fB\-B\fR, \fB\-\-block\-size\fR=\fISIZE\fR use SIZE-byte blocks
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+print sizes in human readable format (e.g., 1K 234M 2G)
+.TP
+\fB\-H\fR, \fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-i\fR, \fB\-\-inodes\fR
+list inode information instead of block usage
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR, \fB\-\-local\fR
+limit listing to local filesystems
+.TP
+\fB\-\-no\-sync\fR
+do not invoke sync before getting usage info (default)
+.TP
+\fB\-P\fR, \fB\-\-portability\fR
+use the POSIX output format
+.TP
+\fB\-\-sync\fR
+invoke sync before getting usage info
+.TP
+\fB\-t\fR, \fB\-\-type\fR=\fITYPE\fR
+limit listing to filesystems of type TYPE
+.TP
+\fB\-T\fR, \fB\-\-print\-type\fR
+print filesystem type
+.TP
+\fB\-x\fR, \fB\-\-exclude\-type\fR=\fITYPE\fR
+limit listing to filesystems not of type TYPE
+.TP
+\fB\-v\fR
+(ignored)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1,000,000, M 1,048,576, and so on for G, T, P, E, Z, Y.
+.SH AUTHOR
+Written by Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B df
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B df
+programs are properly installed at your site, the command
+.IP
+.B info df
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/diff.1 b/raw/man1/diff.1
new file mode 100644
index 0000000..6a750dd
--- /dev/null
+++ b/raw/man1/diff.1
@@ -0,0 +1,485 @@
+.TH DIFF 1 "22sep1993" "GNU Tools" "GNU Tools"
+.SH NAME
+diff \- find differences between two files
+.SH SYNOPSIS
+.B diff
+[options] from-file to-file
+.SH DESCRIPTION
+In the simplest case, 
+.I diff
+compares the contents of the two files
+.I from-file
+and
+.IR to-file .
+A file name of
+.B \-
+stands for
+text read from the standard input.  As a special case,
+.B "diff \- \-"
+compares a copy of standard input to itself.
+
+If 
+.I from-file
+is a directory and
+.I to-file
+is not,
+.I diff
+compares the file in
+.I from-file
+whose file name is that of
+.IR to-file ,
+and vice versa.  The non-directory file must not be
+.BR \- .
+
+If both
+.I from-file
+and
+.I to-file
+are directories,
+.I diff
+compares corresponding files in both directories, in
+alphabetical order; this comparison is not recursive unless the
+.B \-r
+or
+.B \-\-recursive
+option is given.
+.I diff
+never
+compares the actual contents of a directory as if it were a file.  The
+file that is fully specified may not be standard input, because standard
+input is nameless and the notion of ``file with the same name'' does not
+apply.
+
+.B diff
+options begin with
+.BR \- ,
+so normally
+.I from-file
+and
+.I to-file
+may not begin with
+.BR \- .
+However,
+.B \-\-
+as an
+argument by itself treats the remaining arguments as file names even if
+they begin with
+.BR \- .
+.SS Options
+Below is a summary of all of the options that GNU
+.I diff
+accepts.
+Most options have two equivalent names, one of which is a single letter
+preceded by
+.BR \- ,
+and the other of which is a long name preceded by
+.BR \-\- .
+Multiple single letter options (unless they take an
+argument) can be combined into a single command line word:
+.B \-ac
+is
+equivalent to
+.BR "\-a \-c" .
+Long named options can be abbreviated to
+any unique prefix of their name.  Brackets
+.RB ( [
+and
+.BR ] )
+indicate that an
+option takes an optional argument.
+.TP
+.BI \- lines
+Show
+.I lines
+(an integer) lines of context.  This option does not
+specify an output format by itself; it has no effect unless it is
+combined with
+.B \-c
+or
+.BR \-u .
+This option is obsolete.  For proper
+operation,
+.I patch
+typically needs at least two lines of context.
+.TP
+.B \-a
+Treat all files as text and compare them line-by-line, even if they
+do not seem to be text.
+.TP
+.B \-b
+Ignore changes in amount of white space.
+.TP
+.B \-B
+Ignore changes that just insert or delete blank lines.
+.TP
+.B \-\-brief
+Report only whether the files differ, not the details of the
+differences.
+.TP
+.B \-c
+Use the context output format.
+.TP
+.BI "\-C " lines
+.br
+.ns
+.TP
+.BI \-\-context[= lines ]
+Use the context output format, showing
+.I lines
+(an integer) lines of
+context, or three if
+.I lines
+is not given.
+For proper operation,
+.I patch
+typically needs at least two lines of
+context.
+.TP
+.BI \-\-changed\-group\-format= format
+Use
+.I format
+to output a line group containing differing lines from
+both files in if-then-else format.
+.TP
+.B \-d
+Change the algorithm to perhaps find a smaller set of changes.  This makes
+.I diff
+slower (sometimes much slower).
+.TP
+.BI "\-D " name
+Make merged if-then-else format output, conditional on the preprocessor
+macro
+.IR name .
+.TP
+.B \-e
+.br
+.ns
+.TP
+.B \-\-ed
+Make output that is a valid
+.I ed
+script.
+.TP
+.BI \-\-exclude= pattern
+When comparing directories, ignore files and subdirectories whose basenames
+match
+.IR pattern .
+.TP
+.BI \-\-exclude\-from= file
+When comparing directories, ignore files and subdirectories whose basenames
+match any pattern contained in
+.IR file .
+.TP
+.B \-\-expand\-tabs
+Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+.TP
+.B \-f
+Make output that looks vaguely like an
+.I ed
+script but has changes
+in the order they appear in the file.
+.TP
+.BI "\-F " regexp
+In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches
+.IR regexp .
+.TP
+.B \-\-forward\-ed
+Make output that looks vaguely like an
+.B ed
+script but has changes
+in the order they appear in the file.
+.TP
+.B \-h
+This option currently has no effect; it is present for Unix
+compatibility.
+.TP
+.B \-H
+Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+.TP
+.BI \-\-horizon\-lines= lines
+Do not discard the last
+.I lines
+lines of the common prefix
+and the first
+.I lines
+lines of the common suffix.
+.TP
+.B \-i
+Ignore changes in case; consider upper- and lower-case letters
+equivalent.
+.TP
+.BI "\-I " regexp
+Ignore changes that just insert or delete lines that match
+.IR regexp .
+.TP
+.BI \-\-ifdef= name
+Make merged if-then-else format output, conditional on the preprocessor
+macro
+.IR name .
+.TP
+.B \-\-ignore\-all\-space
+Ignore white space when comparing lines.
+.TP
+.B \-\-ignore\-blank\-lines
+Ignore changes that just insert or delete blank lines.
+.TP
+.B \-\-ignore\-case
+Ignore changes in case; consider upper- and lower-case to be the same.
+.TP
+.BI \-\-ignore\-matching\-lines= regexp
+Ignore changes that just insert or delete lines that match
+.IR regexp .
+.TP
+.B \-\-ignore\-space\-change
+Ignore changes in amount of white space.
+.TP
+.B \-\-initial\-tab
+Output a tab rather than a space before the text of a line in normal or
+context format.  This causes the alignment of tabs in the line to look
+normal.
+.TP
+.B \-l
+Pass the output through
+.I pr
+to paginate it.
+.TP
+.BI "\-L " label
+.br
+.ns
+.TP
+.BI \-\-label= label
+Use
+.I label
+instead of the file name in the context format
+and unified format
+headers.
+.TP
+.B \-\-left\-column
+Print only the left column of two common lines in side by side format.
+.TP
+.BI \-\-line\-format= format
+Use
+.I format
+to output all input lines in in-then-else format.
+.TP
+.B \-\-minimal
+Change the algorithm to perhaps find a smaller set of changes.  This
+makes
+.I diff
+slower (sometimes much slower).
+.TP
+.B \-n
+Output RCS-format diffs; like
+.B \-f
+except that each command
+specifies the number of lines affected.
+.TP
+.B \-N
+.br
+.ns
+.TP
+.B \-\-new\-file
+In directory comparison, if a file is found in only one directory,
+treat it as present but empty in the other directory.
+.TP
+.BI \-\-new\-group\-format= format
+Use
+.I format
+to output a group of lines taken from just the second
+file in if-then-else format.
+.TP
+.BI \-\-new\-line\-format= format
+Use 
+.I format
+to output a line taken from just the second file in
+if-then-else format.
+.TP
+.BI \-\-old\-group\-format= format
+Use
+.I format
+to output a group of lines taken from just the first
+file in if-then-else format.
+.TP
+.BI \-\-old\-line\-format= format
+Use
+.I format
+to output a line taken from just the first file in
+if-then-else format.
+.TP
+.B \-p
+Show which C function each change is in.
+.TP
+.B \-P
+When comparing directories, if a file appears only in the second
+directory of the two, treat it as present but empty in the other.
+.TP
+.B \-\-paginate
+Pass the output through
+.I pr
+to paginate it.
+.TP
+.B \-q
+Report only whether the files differ, not the details of the
+differences.
+.TP
+.B \-r
+When comparing directories, recursively compare any subdirectories
+found.
+.TP
+.B \-\-rcs
+Output RCS-format diffs; like
+.B \-f
+except that each command
+specifies the number of lines affected.
+.TP
+.B \-\-recursive
+When comparing directories, recursively compare any subdirectories
+found.
+.TP
+.B \-\-report\-identical\-files
+.br
+.ns
+.TP
+.B \-s
+Report when two files are the same.
+.TP
+.BI "\-S " file
+When comparing directories, start with the file
+.IR file .
+This is
+used for resuming an aborted comparison.
+.TP
+.BI \-\-from\-file= file
+Compare
+.I file
+to all operands.
+.I file
+can be a directory.
+.TP
+.BI \-\-to\-file= file
+Compare all operands to
+.IR file . " file"
+can be a directory.
+.TP
+.B \-\-sdiff\-merge\-assist
+Print extra information to help
+.IR sdiff .
+.I sdiff
+uses this
+option when it runs
+.IR diff .
+This option is not intended for users
+to use directly.
+.TP
+.B \-\-show\-c\-function
+Show which C function each change is in.
+.TP
+.BI \-\-show\-function\-line= regexp
+In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches
+.IR regexp .
+.TP
+.B \-\-side\-by\-side
+Use the side by side output format.
+.TP
+.B \-\-speed\-large\-files
+Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+.TP
+.BI \-\-starting\-file= file
+When comparing directories, start with the file
+.IR file .
+This is
+used for resuming an aborted comparison.
+.TP
+.B \-\-suppress\-common\-lines
+Do not print common lines in side by side format.
+.TP
+.B \-t
+Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+.TP
+.B \-T
+Output a tab rather than a space before the text of a line in normal or
+context format.  This causes the alignment of tabs in the line to look
+normal.
+.TP
+.B \-\-text
+Treat all files as text and compare them line-by-line, even if they
+do not appear to be text.
+.TP
+.B \-u
+Use the unified output format.
+.TP
+.BI \-\-unchanged\-group\-format= format
+Use
+.I format
+to output a group of common lines taken from both files
+in if-then-else format.
+.TP
+.BI \-\-unchanged\-line\-format= format
+Use
+.I format
+to output a line common to both files in if-then-else
+format.
+.TP
+.B \-\-unidirectional\-new\-file
+When comparing directories, if a file appears only in the second
+directory of the two, treat it as present but empty in the other.
+.TP
+.BI "\-U " lines
+.br
+.ns
+.TP
+.BI \-\-unified[= lines ]
+Use the unified output format, showing
+.I lines
+(an integer) lines of
+context, or three if
+.I lines
+is not given.
+For proper operation,
+.I patch
+typically needs at least two lines of
+context.
+.TP
+.B \-v
+.br
+.ns
+.TP
+.B \-\-version
+Output the version number of
+.IR diff .
+.TP
+.B \-w
+Ignore white space when comparing lines.
+.TP
+.BI "\-W " columns
+.br
+.ns
+.TP
+.BI \-\-width= columns
+Use an output width of
+.I columns
+in side by side format.
+.TP
+.BI "\-x " pattern
+When comparing directories, ignore files and subdirectories whose basenames
+match
+.IR pattern .
+.TP
+.BI "\-X " file
+When comparing directories, ignore files and subdirectories whose basenames
+match any pattern contained in
+.IR file .
+.TP
+.B \-y
+Use the side by side output format.
+.SH SEE ALSO
+cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).
+.SH DIAGNOSTICS
+An exit status of 0 means no differences were found, 1 means some
+differences were found, and 2 means trouble.
diff --git a/raw/man1/dig.1 b/raw/man1/dig.1
new file mode 100644
index 0000000..2f9dfd6
--- /dev/null
+++ b/raw/man1/dig.1
@@ -0,0 +1,363 @@
+.\"
+.\" Copyright (C) 2000, 2001  Internet Software Consortium.
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
+.\" DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+.\" INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.TH "DIG" "1" "Jun 30, 2000" "BIND9" ""
+.SH NAME
+dig \- DNS lookup utility
+.SH SYNOPSIS
+.sp
+\fBdig\fR [ \fB at server\fR ]  [ \fB-b \fIaddress\fB\fR ]  [ \fB-c \fIclass\fB\fR ]  [ \fB-f \fIfilename\fB\fR ]  [ \fB-k \fIfilename\fB\fR ]  [ \fB-p \fIport#\fB\fR ]  [ \fB-t \fItype\fB\fR ]  [ \fB-x \fIaddr\fB\fR ]  [ \fB-y \fIname:key\fB\fR ]  [ \fBname\fR ]  [ \fBtype\fR ]  [ \fBclass\fR ]  [ \fBqueryopt\fR\fI...\fR ] 
+.sp
+\fBdig\fR [ \fB-h\fR ] 
+.sp
+\fBdig\fR [ \fBglobal-queryopt\fR\fI...\fR ]  [ \fBquery\fR\fI...\fR ] 
+.SH "DESCRIPTION"
+.PP
+\fBdig\fR (domain information groper) is a flexible tool
+for interrogating DNS name servers. It performs DNS lookups and
+displays the answers that are returned from the name server(s) that
+were queried. Most DNS administrators use \fBdig\fR to
+troubleshoot DNS problems because of its flexibility, ease of use and
+clarity of output. Other lookup tools tend to have less functionality
+than \fBdig\fR.
+.PP
+Although \fBdig\fR is normally used with command-line
+arguments, it also has a batch mode of operation for reading lookup
+requests from a file. A brief summary of its command-line arguments
+and options is printed when the \fB-h\fR option is given.
+Unlike earlier versions, the BIND9 implementation of
+\fBdig\fR allows multiple lookups to be issued from the
+command line.
+.PP
+Unless it is told to query a specific name server,
+\fBdig\fR will try each of the servers listed in
+\fI/etc/resolv.conf\fR.
+.PP
+When no command line arguments or options are given, will perform an
+NS query for "." (the root).
+.SH "SIMPLE USAGE"
+.PP
+A typical invocation of \fBdig\fR looks like:
+.sp
+.nf
+ dig @server name type 
+.sp
+.fi
+where:
+.TP
+\fBserver\fR
+is the name or IP address of the name server to query. This can be an IPv4
+address in dotted-decimal notation or an IPv6
+address in colon-delimited notation. When the supplied
+\fIserver\fR argument is a hostname,
+\fBdig\fR resolves that name before querying that name
+server. If no \fIserver\fR argument is provided,
+\fBdig\fR consults \fI/etc/resolv.conf\fR
+and queries the name servers listed there. The reply from the name
+server that responds is displayed.
+.TP
+\fBname\fR
+is the name of the resource record that is to be looked up.
+.TP
+\fBtype\fR
+indicates what type of query is required \(em
+ANY, A, MX, SIG, etc.
+\fItype\fR can be any valid query type. If no
+\fItype\fR argument is supplied,
+\fBdig\fR will perform a lookup for an A record.
+.SH "OPTIONS"
+.PP
+The \fB-b\fR option sets the source IP address of the query
+to \fIaddress\fR. This must be a valid address on
+one of the host's network interfaces.
+.PP
+The default query class (IN for internet) is overridden by the
+\fB-c\fR option. \fIclass\fR is any valid
+class, such as HS for Hesiod records or CH for CHAOSNET records.
+.PP
+The \fB-f\fR option makes \fBdig \fR operate
+in batch mode by reading a list of lookup requests to process from the
+file \fIfilename\fR. The file contains a number of
+queries, one per line. Each entry in the file should be organised in
+the same way they would be presented as queries to
+\fBdig\fR using the command-line interface.
+.PP
+If a non-standard port number is to be queried, the
+\fB-p\fR option is used. \fIport#\fR is
+the port number that \fBdig\fR will send its queries
+instead of the standard DNS port number 53. This option would be used
+to test a name server that has been configured to listen for queries
+on a non-standard port number.
+.PP
+The \fB-t\fR option sets the query type to
+\fItype\fR. It can be any valid query type which is
+supported in BIND9. The default query type "A", unless the
+\fB-x\fR option is supplied to indicate a reverse lookup.
+A zone transfer can be requested by specifying a type of AXFR. When
+an incremental zone transfer (IXFR) is required,
+\fItype\fR is set to ixfr=N.
+The incremental zone transfer will contain the changes made to the zone
+since the serial number in the zone's SOA record was
+\fIN\fR.
+.PP
+Reverse lookups - mapping addresses to names - are simplified by the
+\fB-x\fR option. \fIaddr\fR is an IPv4
+address in dotted-decimal notation, or a colon-delimited IPv6 address.
+When this option is used, there is no need to provide the
+\fIname\fR, \fIclass\fR and
+\fItype\fR arguments. \fBdig\fR
+automatically performs a lookup for a name like
+11.12.13.10.in-addr.arpa and sets the query type and
+class to PTR and IN respectively. By default, IPv6 addresses are
+looked up using the IP6.ARPA domain and binary labels as defined in
+RFC2874. To use the older RFC1886 method using the IP6.INT domain and
+"nibble" labels, specify the \fB-n\fR (nibble) option.
+.PP
+To sign the DNS queries sent by \fBdig\fR and their
+responses using transaction signatures (TSIG), specify a TSIG key file
+using the \fB-k\fR option. You can also specify the TSIG
+key itself on the command line using the \fB-y\fR option;
+\fIname\fR is the name of the TSIG key and
+\fIkey\fR is the actual key. The key is a base-64
+encoded string, typically generated by \fBdnssec-keygen\fR(8).
+Caution should be taken when using the \fB-y\fR option on
+multi-user systems as the key can be visible in the output from
+\fBps\fR(1) or in the shell's history file. When
+using TSIG authentication with \fBdig\fR, the name
+server that is queried needs to know the key and algorithm that is
+being used. In BIND, this is done by providing appropriate
+\fBkey\fR and \fBserver\fR statements in
+\fInamed.conf\fR.
+.SH "QUERY OPTIONS"
+.PP
+\fBdig\fR provides a number of query options which affect
+the way in which lookups are made and the results displayed. Some of
+these set or reset flag bits in the query header, some determine which
+sections of the answer get printed, and others determine the timeout
+and retry strategies.
+.PP
+Each query option is identified by a keyword preceded by a plus sign
+(+). Some keywords set or reset an option. These may be preceded
+by the string no to negate the meaning of that keyword. Other
+keywords assign values to options like the timeout interval. They
+have the form \fB+keyword=value\fR.
+The query options are:
+.TP
+\fB+[no]tcp\fR
+Use [do not use] TCP when querying name servers. The default
+behaviour is to use UDP unless an AXFR or IXFR query is requested, in
+which case a TCP connection is used.
+.TP
+\fB+[no]vc\fR
+Use [do not use] TCP when querying name servers. This alternate
+syntax to \fI+[no]tcp\fR is provided for backwards
+compatibility. The "vc" stands for "virtual circuit".
+.TP
+\fB+[no]ignore\fR
+Ignore truncation in UDP responses instead of retrying with TCP. By
+default, TCP retries are performed.
+.TP
+\fB+domain=somename\fR
+Set the search list to contain the single domain
+\fIsomename\fR, as if specified in a
+\fBdomain\fR directive in
+\fI/etc/resolv.conf\fR, and enable search list
+processing as if the \fI+search\fR option were given.
+.TP
+\fB+[no]search\fR
+Use [do not use] the search list defined by the searchlist or domain
+directive in \fIresolv.conf\fR (if any).
+The search list is not used by default.
+.TP
+\fB+[no]defname\fR
+Deprecated, treated as a synonym for \fI+[no]search\fR
+.TP
+\fB+[no]aaonly\fR
+This option does nothing. It is provided for compatibility with old
+versions of \fBdig\fR where it set an unimplemented
+resolver flag.
+.TP
+\fB+[no]adflag\fR
+Set [do not set] the AD (authentic data) bit in the query. The AD bit
+currently has a standard meaning only in responses, not in queries,
+but the ability to set the bit in the query is provided for
+completeness.
+.TP
+\fB+[no]cdflag\fR
+Set [do not set] the CD (checking disabled) bit in the query. This
+requests the server to not perform DNSSEC validation of responses.
+.TP
+\fB+[no]recursive\fR
+Toggle the setting of the RD (recursion desired) bit in the query.
+This bit is set by default, which means \fBdig\fR
+normally sends recursive queries. Recursion is automatically disabled
+when the \fI+nssearch\fR or
+\fI+trace\fR query options are used.
+.TP
+\fB+[no]nssearch\fR
+When this option is set, \fBdig\fR attempts to find the
+authoritative name servers for the zone containing the name being
+looked up and display the SOA record that each name server has for the
+zone.
+.TP
+\fB+[no]trace\fR
+Toggle tracing of the delegation path from the root name servers for
+the name being looked up. Tracing is disabled by default. When
+tracing is enabled, \fBdig\fR makes iterative queries to
+resolve the name being looked up. It will follow referrals from the
+root servers, showing the answer from each server that was used to
+resolve the lookup.
+.TP
+\fB+[no]cmd\fR
+toggles the printing of the initial comment in the output identifying
+the version of \fBdig\fR and the query options that have
+been applied. This comment is printed by default.
+.TP
+\fB+[no]short\fR
+Provide a terse answer. The default is to print the answer in a
+verbose form.
+.TP
+\fB+[no]identify\fR
+Show [or do not show] the IP address and port number that supplied the
+answer when the \fI+short\fR option is enabled. If
+short form answers are requested, the default is not to show the
+source address and port number of the server that provided the answer.
+.TP
+\fB+[no]comments\fR
+Toggle the display of comment lines in the output. The default is to
+print comments.
+.TP
+\fB+[no]stats\fR
+This query option toggles the printing of statistics: when the query
+was made, the size of the reply and so on. The default behaviour is
+to print the query statistics.
+.TP
+\fB+[no]qr\fR
+Print [do not print] the query as it is sent.
+By default, the query is not printed.
+.TP
+\fB+[no]question\fR
+Print [do not print] the question section of a query when an answer is
+returned. The default is to print the question section as a comment.
+.TP
+\fB+[no]answer\fR
+Display [do not display] the answer section of a reply. The default
+is to display it.
+.TP
+\fB+[no]authority\fR
+Display [do not display] the authority section of a reply. The
+default is to display it.
+.TP
+\fB+[no]additional\fR
+Display [do not display] the additional section of a reply.
+The default is to display it.
+.TP
+\fB+[no]all\fR
+Set or clear all display flags.
+.TP
+\fB+time=T\fR
+Sets the timeout for a query to
+\fIT\fR seconds. The default time out is 5 seconds.
+An attempt to set \fIT\fR to less than 1 will result
+in a query timeout of 1 second being applied.
+.TP
+\fB+tries=T\fR
+Sets the number of times to retry UDP queries to server to
+\fIT\fR instead of the default, 3. If
+\fIT\fR is less than or equal to zero, the number of
+retries is silently rounded up to 1.
+.TP
+\fB+ndots=D\fR
+Set the number of dots that have to appear in
+\fIname\fR to \fID\fR for it to be
+considered absolute. The default value is that defined using the
+ndots statement in \fI/etc/resolv.conf\fR, or 1 if no
+ndots statement is present. Names with fewer dots are interpreted as
+relative names and will be searched for in the domains listed in the
+\fBsearch\fR or \fBdomain\fR directive in
+\fI/etc/resolv.conf\fR.
+.TP
+\fB+bufsize=B\fR
+Set the UDP message buffer size advertised using EDNS0 to
+\fIB\fR bytes. The maximum and minimum sizes of this
+buffer are 65535 and 0 respectively. Values outside this range are
+rounded up or down appropriately.
+.TP
+\fB+[no]multiline\fR
+Print records like the SOA records in a verbose multi-line
+format with human-readable comments. The default is to print
+each record on a single line, to facilitate machine parsing 
+of the \fBdig\fR output.
+.TP
+\fB+[no]fail\fR
+Do not try the next server if you receive a SERVFAIL. The default is
+to not try the next server which is the reverse of normal stub resolver
+behaviour.
+.TP
+\fB+[no]besteffort\fR
+Attempt to display the contents of messages which are malformed.
+The default is to not display malformed answers.
+.TP
+\fB+[no]dnssec\fR
+Requests DNSSEC records be sent by setting the DNSSEC OK bit (DO)
+in the the OPT record in the additional section of the query.
+.SH "MULTIPLE QUERIES"
+.PP
+The BIND 9 implementation of \fBdig \fR supports
+specifying multiple queries on the command line (in addition to
+supporting the \fB-f\fR batch file option). Each of those
+queries can be supplied with its own set of flags, options and query
+options.
+.PP
+In this case, each \fIquery\fR argument represent an
+individual query in the command-line syntax described above. Each
+consists of any of the standard options and flags, the name to be
+looked up, an optional query type and class and any query options that
+should be applied to that query.
+.PP
+A global set of query options, which should be applied to all queries,
+can also be supplied. These global query options must precede the
+first tuple of name, class, type, options, flags, and query options
+supplied on the command line. Any global query options (except
+the \fB+[no]cmd\fR option) can be
+overridden by a query-specific set of query options. For example:
+.sp
+.nf
+dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
+.sp
+.fi
+shows how \fBdig\fR could be used from the command line
+to make three lookups: an ANY query for www.isc.org, a
+reverse lookup of 127.0.0.1 and a query for the NS records of
+isc.org.
+A global query option of \fI+qr\fR is applied, so
+that \fBdig\fR shows the initial query it made for each
+lookup. The final query has a local query option of
+\fI+noqr\fR which means that \fBdig\fR
+will not print the initial query when it looks up the NS records for
+isc.org.
+.SH "FILES"
+.PP
+\fI/etc/resolv.conf\fR
+.SH "SEE ALSO"
+.PP
+\fBhost\fR(1),
+\fBnamed\fR(8),
+\fBdnssec-keygen\fR(8),
+\fIRFC1035\fR.
+.SH "BUGS"
+.PP
+There are probably too many query options. 
diff --git a/raw/man1/dircolors.1 b/raw/man1/dircolors.1
new file mode 100644
index 0000000..7b9cffb
--- /dev/null
+++ b/raw/man1/dircolors.1
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH DIRCOLORS "1" "October 2003" "dircolors (coreutils) 5.0" FSF
+.SH NAME
+dircolors \- color setup for ls
+.SH SYNOPSIS
+.B dircolors
+[\fIOPTION\fR]... [\fIFILE\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output commands to set the LS_COLORS environment variable.
+.SS "Determine format of output:"
+.TP
+\fB\-b\fR, \fB\-\-sh\fR, \fB\-\-bourne\-shell\fR
+output Bourne shell code to set LS_COLORS
+.TP
+\fB\-c\fR, \fB\-\-csh\fR, \fB\-\-c\-shell\fR
+output C shell code to set LS_COLORS
+.TP
+\fB\-p\fR, \fB\-\-print\-database\fR
+output defaults
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If FILE is specified, read it to determine which colors to use for which
+file types and extensions.  Otherwise, a precompiled database is used.
+For details on the format of these files, run `dircolors \fB\-\-print\-database\fR'.
+.SH AUTHOR
+Written by H. Peter Anvin.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B dircolors
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B dircolors
+programs are properly installed at your site, the command
+.IP
+.B info dircolors
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/dirname.1 b/raw/man1/dirname.1
new file mode 100644
index 0000000..d195b14
--- /dev/null
+++ b/raw/man1/dirname.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH DIRNAME "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+dirname \- strip non-directory suffix from file name
+.SH SYNOPSIS
+.B dirname
+\fINAME\fR
+.br
+.B dirname
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print NAME with its trailing /component removed; if NAME contains no /'s,
+output `.' (meaning the current directory).
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B dirname
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B dirname
+programs are properly installed at your site, the command
+.IP
+.B info dirname
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/dirs.1 b/raw/man1/dirs.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/dirs.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/disown.1 b/raw/man1/disown.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/disown.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/dropdb.1 b/raw/man1/dropdb.1
new file mode 100644
index 0000000..c2779e1
--- /dev/null
+++ b/raw/man1/dropdb.1
@@ -0,0 +1,113 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROPDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+dropdb \- remove a PostgreSQL database
+
+.SH SYNOPSIS
+.sp
+\fBdropdb\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR \fB\fIdbname\fB\fR
+.SH "DESCRIPTION"
+.PP
+\fBdropdb\fR destroys an existing
+PostgreSQL database.
+The user who executes this command must be a database
+superuser or the owner of the database.
+.PP
+\fBdropdb\fR is a wrapper around the
+SQL command DROP DATABASE [\fBdrop_database\fR(7)].
+There is no effective difference between dropping databases via
+this utility and via other methods for accessing the server.
+.SH "OPTIONS"
+.PP
+\fBdropdb\fR accepts the following command-line arguments:
+.TP
+\fB\fIdbname\fB\fR
+Specifies the name of the database to be removed.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Echo the commands that \fBdropdb\fR generates
+and sends to the server.
+.TP
+\fB-i\fR
+.TP
+\fB--interactive\fR
+Issues a verification prompt before doing anything destructive.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Do not display a response.
+.PP
+.PP
+\fBdropdb\fR also accepts the following
+command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server
+is running. If the value begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+In case of difficulty, see DROP DATABASE [\fBdrop_database\fR(7)] and \fBpsql\fR(1) for
+discussions of potential problems and error messages.
+The database server must be running at the
+targeted host. Also, any default connection settings and environment
+variables used by the \fBlibpq\fR front-end
+library will apply.
+.SH "EXAMPLES"
+.PP
+To destroy the database demo on the default
+database server:
+.sp
+.nf
+$ \fBdropdb demo\fR
+DROP DATABASE
+.sp
+.fi
+.PP
+To destroy the database demo using the
+server on host eden, port 5000, with verification and a peek
+at the underlying command:
+.sp
+.nf
+$ \fBdropdb -p 5000 -h eden -i -e demo\fR
+Database "demo" will be permanently deleted.
+Are you sure? (y/n) \fBy\fR
+DROP DATABASE "demo"
+DROP DATABASE
+.sp
+.fi
+.SH "SEE ALSO"
+\fBcreatedb\fR(1), DROP DATABASE [\fBdrop_database\fR(7)]
+
diff --git a/raw/man1/droplang.1 b/raw/man1/droplang.1
new file mode 100644
index 0000000..72e68e0
--- /dev/null
+++ b/raw/man1/droplang.1
@@ -0,0 +1,107 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROPLANG" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+droplang \- remove a PostgreSQL procedural language
+
+.SH SYNOPSIS
+.sp
+\fBdroplang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fB\fIlangname\fB\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBdroplang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR\fR \fB--list\fR\fR | \fR\fB-l\fR\fR\fR \fB\fIdbname\fB\fR
+.SH "DESCRIPTION"
+.PP
+\fBdroplang\fR is a utility for removing an 
+existing programming language from a
+PostgreSQL database.
+\fBdroplang\fR can drop any procedural language,
+even those not supplied by the PostgreSQL distribution.
+.PP
+Although backend programming languages can be removed directly using
+several SQL commands, it is recommended to use
+\fBdroplang\fR because it performs a number
+of checks and is much easier to use. See
+DROP LANGUAGE [\fBdrop_language\fR(7)]
+for more.
+.SH "OPTIONS"
+.PP
+\fBdroplang\fR accepts the following command line arguments:
+.TP
+\fB\fIlangname\fB\fR
+Specifies the name of the backend programming language to be removed.
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+Specifies from which database the language should be removed.
+The default is to use the database with the same name as the
+current system user.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Display SQL commands as they are executed.
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+Show a list of already installed languages in the target database.
+.PP
+.PP
+\fBdroplang\fR also accepts 
+the following command line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server
+is running. If host begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the Internet TCP/IP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+Most error messages are self-explanatory. If not, run
+\fBdroplang\fR with the \fB--echo\fR
+option and see under the respective SQL command
+for details.
+.SH "NOTES"
+.PP
+Use \fBcreatelang\fR(1) to add a language.
+.SH "EXAMPLES"
+.PP
+To remove the language pltcl:
+.sp
+.nf
+$ \fBdroplang pltcl dbname\fR
+.sp
+.fi
+.SH "SEE ALSO"
+\fBcreatelang\fR(1), DROP LANGUAGE [\fBdrop_language\fR(7)]
+
diff --git a/raw/man1/dropuser.1 b/raw/man1/dropuser.1
new file mode 100644
index 0000000..7725317
--- /dev/null
+++ b/raw/man1/dropuser.1
@@ -0,0 +1,117 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROPUSER" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+dropuser \- remove a PostgreSQL user account
+
+.SH SYNOPSIS
+.sp
+\fBdropuser\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIusername\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBdropuser\fR removes an existing
+PostgreSQL user
+\fBand\fR the databases which that user owned.
+Only superusers (users with usesuper set in
+the pg_shadow table) can destroy 
+PostgreSQL users.
+.PP
+\fBdropuser\fR is a wrapper around the
+SQL command DROP USER [\fBdrop_user\fR(7)].
+There is no effective difference between dropping users via
+this utility and via other methods for accessing the server.
+.SH "OPTIONS"
+.PP
+\fBdropuser\fR accepts the following command-line arguments:
+.TP
+\fB\fIusername\fB\fR
+Specifies the name of the PostgreSQL user to be removed. 
+You will be prompted for a name if none is specified on the command line.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Echo the commands that \fBdropuser\fR generates
+and sends to the server.
+.TP
+\fB-i\fR
+.TP
+\fB--interactive\fR
+Prompt for confirmation before actually removing the user.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Do not display a response.
+.PP
+.PP
+\fBdropuser\fR also accepts the following
+command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server
+is running. If the value begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as (not the user name to drop)
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt (to connect to the server, not for the
+password of the user to be dropped).
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+In case of difficulty, see DROP USER [\fBdrop_user\fR(7)] and \fBpsql\fR(1) for
+discussions of potential problems and error messages.
+The database server must be running at the
+targeted host. Also, any default connection settings and environment
+variables used by the \fBlibpq\fR front-end
+library will apply.
+.SH "EXAMPLES"
+.PP
+To remove user joe from the default database
+server:
+.sp
+.nf
+$ \fBdropuser joe\fR
+DROP USER
+.sp
+.fi
+.PP
+To remove user joe using the server on host
+eden, port 5000, with verification and a peek at the underlying
+command:
+.sp
+.nf
+$ \fBdropuser -p 5000 -h eden -i -e joe\fR
+User "joe" and any owned databases will be permanently deleted.
+Are you sure? (y/n) \fBy\fR
+DROP USER "joe"
+DROP USER
+.sp
+.fi
+.SH "SEE ALSO"
+\fBcreateuser\fR(1), DROP USER [\fBdrop_user\fR(7)]
+
diff --git a/raw/man1/du.1 b/raw/man1/du.1
new file mode 100644
index 0000000..ddeee9f
--- /dev/null
+++ b/raw/man1/du.1
@@ -0,0 +1,117 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH DU "1" "October 2003" "du (coreutils) 5.0" FSF
+.SH NAME
+du \- estimate file space usage
+.SH SYNOPSIS
+.B du
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Summarize disk usage of each FILE, recursively for directories.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+write counts for all files, not just directories
+.TP
+\fB\-\-apparent\-size\fR
+print apparent sizes, rather than disk usage; although
+the apparent size is usually smaller, it may be
+larger due to holes in (`sparse') files, internal
+fragmentation, indirect blocks, and the like
+.HP
+\fB\-B\fR, \fB\-\-block\-size\fR=\fISIZE\fR use SIZE-byte blocks
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR
+equivalent to `--apparent-size \fB\-\-block\-size\fR=\fI1\fR'
+.TP
+\fB\-c\fR, \fB\-\-total\fR
+produce a grand total
+.TP
+\fB\-D\fR, \fB\-\-dereference\-args\fR
+dereference FILEs that are symbolic links
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+print sizes in human readable format (e.g., 1K 234M 2G)
+.TP
+\fB\-H\fR, \fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR, \fB\-\-count\-links\fR
+count sizes many times if hard linked
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+dereference all symbolic links
+.TP
+\fB\-S\fR, \fB\-\-separate\-dirs\fR
+do not include size of subdirectories
+.TP
+\fB\-s\fR, \fB\-\-summarize\fR
+display only a total for each argument
+.TP
+\fB\-x\fR, \fB\-\-one\-file\-system\fR
+skip directories on different filesystems
+.TP
+\fB\-X\fR FILE, \fB\-\-exclude\-from\fR=\fIFILE\fR
+Exclude files that match any pattern in FILE.
+.HP
+\fB\-\-exclude\fR=\fIPATTERN\fR Exclude files that match PATTERN.
+.TP
+\fB\-\-max\-depth\fR=\fIN\fR
+print the total for a directory (or file, with \fB\-\-all\fR)
+only if it is N or fewer levels below the command
+line argument;  \fB\-\-max\-depth\fR=\fI0\fR is the same as
+\fB\-\-summarize\fR
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1,000,000, M 1,048,576, and so on for G, T, P, E, Z, Y.
+.SH PATTERNS
+PATTERN is a shell pattern (not a regular expression).  The pattern
+.BR ?
+matches any one character, whereas
+.BR *
+matches any string (composed of zero, one or multiple characters).  For
+example,
+.BR *.o
+will match any files whose names end in
+.BR .o .
+Therefore, the command
+.IP
+.B du --exclude='*.o'
+.PP
+will skip all files and subdirectories ending in
+.BR .o
+(including the file
+.BR .o
+itself).
+.SH AUTHOR
+Written by Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B du
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B du
+programs are properly installed at your site, the command
+.IP
+.B info du
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/dumpkeys.1 b/raw/man1/dumpkeys.1
new file mode 100644
index 0000000..04a19b4
--- /dev/null
+++ b/raw/man1/dumpkeys.1
@@ -0,0 +1,209 @@
+.\" @(#)loadkeys.1 1.0 93/09/1 RK
+.TH DUMPKEYS 1 "1 Sep 1993"
+.SH NAME
+dumpkeys \- dump keyboard translation tables
+.SH SYNOPSIS
+.B dumpkeys
+[
+.B \-hilfn
+.BI \-c charset
+.B \-\-help \-\-short\-info \-\-long\-info \-\-numeric \-\-full\-table \-\-funcs\-only \-\-keys\-only \-\-compose\-only
+.BI \-\-charset= charset
+]
+.SH DESCRIPTION
+.IX "dumpkeys command" "" "\fLdumpkeys\fR command"  
+.LP
+.B dumpkeys
+writes, to the standard output, the current contents of the keyboard
+driver's translation tables, in the format specified by
+.BR keymaps (5).
+.LP
+Using the various options, the format of the output can be controlled
+and also other information from the kernel and the programs
+.BR dumpkeys (1)
+and
+.BR loadkeys (1)
+can be obtained.
+.SH OPTIONS
+.TP
+.B \-h \-\-help
+Prints the program's version number and a short usage message to the
+program's standard error output and exits.
+.TP
+.B \-i \-\-short-info
+Prints some characteristics of the kernel's keyboard driver. The items
+shown are:
+.LP
+.RS
+Keycode range supported by the kernel
+.LP
+.RS
+This tells what values can be used after the
+.B keycode
+keyword in keytable files. See
+.BR keymaps (5)
+for more information and the syntax of these files.
+.RE
+.LP
+Number of actions bindable to a key
+.LP
+.RS
+This tells how many different actions a single key can output using
+various modifier keys. If the value is 16 for example, you can define up
+to 16 different actions to a key combined with modifiers. When the value
+is 16, the kernel probably knows about four modifier keys, which you can
+press in different combinations with the key to access all the bound
+actions.
+.RE
+.LP
+Ranges of action codes supported by the kernel
+.LP
+.RS
+This item contains a list of action code ranges in hexadecimal notation.
+These are the values that can be used in the right hand side of a key
+definition, ie. the
+.IR vv 's
+in a line
+.LP
+.RS
+.B keycode
+.I xx
+=
+.I vv vv vv vv
+.RE
+.LP
+(see
+.BR keymaps (5)
+for more information about the format of key definition lines).
+.BR dumpkeys (1)
+and
+.BR loadkeys (1)
+support a symbolic notation, which is preferable to the numeric one, as
+the action codes may vary from kernel to kernel while the symbolic names
+usually remain the same. However, the list of action code ranges can be
+used to determine, if the kernel actually supports all the symbols
+.BR loadkeys (1)
+knows, or are there maybe some actions supported by the kernel that
+have no symbolic name in your
+.BR loadkeys (1)
+program. To see this, you compare the range list with the action symbol
+list, see option
+.B --long-info
+below.
+.RE
+.LP
+Number of function keys supported by kernel
+.LP
+.RS
+This tells the number of action codes that can be used to output
+strings of characters. These action codes are traditionally bound to
+the various function and editing keys of the keyboard and are defined
+to send standard escape sequences. However, you can redefine these to
+send common command lines, email addresses or whatever you like.
+Especially if the number of this item is greater than the number of
+function and editing keys in your keyboard, you may have some "spare"
+action codes that you can bind to AltGr-letter combinations, for example,
+to send some useful strings. See
+.BR loadkeys (1)
+for more details.
+.RE
+.LP
+Function strings
+.LP
+.RS
+You can see you current function key definitions with the command
+.LP
+.RS
+.B dumpkeys --funcs-only
+.RE
+.LP
+.RE
+.RE
+.LP
+.TP
+.B \-l \-\-long-info
+This option instructs
+.B dumpkeys
+to print a long information listing. The output is the same as with the
+.B --short-info
+appended with the list of action symbols supported by
+.BR loadkeys (1)
+and
+.BR dumpkeys (1),
+along with the symbols' numeric values.
+.LP
+.TP
+.B \-n \-\-numeric
+This option causes
+.B dumpkeys
+to by-pass the conversion of action code values to symbolic notation and
+to print the in hexadecimal format instead.
+.LP
+.TP
+.B \-f \-\-full-table
+This makes
+.B dumpkeys
+skip all the short-hand heuristics (see
+.BR keymaps (5))
+and output the key bindings in the canonical form. First a keymaps
+line describing the currently defined modifier combinations
+is printed. Then for each key a row with a column for each
+modifier combination is printed. For
+example, if the current keymap in use uses seven modifiers,
+every row will have seven action code columns. This format
+can be useful for example to programs that post-process the
+output of
+.BR dumpkeys .
+.LP
+.TP
+.B \-\-funcs-only
+When this option is given,
+.B dumpkeys
+prints only the function key string definitions. Normally
+.B dumpkeys
+prints both the key bindings and the string definitions.
+.LP
+.TP
+.B \-\-keys-only
+When this option is given,
+.B dumpkeys
+prints only the key bindings. Normally
+.B dumpkeys
+prints both the key bindings and the string definitions.
+.LP
+.TP
+.B \-\-compose-only
+When this option is given,
+.B dumpkeys
+prints only the compose key combinations.
+This option is available only if your kernel has compose key support.
+.LP
+.TP
+.BI \-c charset " " " " \-\-charset= charset
+This instructs
+.B dumpkeys
+to interpret character code values according to the specified character
+set. This affects only the translation of character code values to
+symbolic names. Valid values for
+.I charset
+currently are
+.BR iso-8859-X ,
+Where X is a digit in 1-9.  If no
+.I charset
+is specified,
+.B iso-8859-1
+is used as a default.
+This option produces an output line `charset "iso-8859-X"', telling
+loadkeys how to interpret the keymap. (For example, "division" is
+0xf7 in iso-8859-1 but 0xba in iso-8859-8.)
+.LP
+.SH FILES
+.PD 0
+.TP 20
+.BI //lib/kbd/keymaps
+recommended directory for keytable files
+.PD
+.SH "SEE ALSO"
+.BR loadkeys (1),
+.BR keymaps (5)
+
diff --git a/raw/man1/echo.1 b/raw/man1/echo.1
new file mode 100644
index 0000000..4a2d820
--- /dev/null
+++ b/raw/man1/echo.1
@@ -0,0 +1,82 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH ECHO "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+echo \- display a line of text
+.SH SYNOPSIS
+.B echo
+[\fIOPTION\fR]... [\fISTRING\fR]...
+.SH DESCRIPTION
+NOTE: your shell may have its own version of echo which will supercede
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.PP
+Echo the STRING(s) to standard output.
+.TP
+\fB\-n\fR
+do not output the trailing newline
+.TP
+\fB\-e\fR
+enable interpretation of the backslash-escaped characters
+listed below
+.TP
+\fB\-E\fR
+disable interpretation of those sequences in STRINGs
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Without \fB\-E\fR, the following sequences are recognized and interpolated:
+.TP
+\eNNN
+the character whose ASCII code is NNN (octal)
+.TP
+\e\e
+backslash
+.TP
+\ea
+alert (BEL)
+.TP
+\eb
+backspace
+.TP
+\ec
+suppress trailing newline
+.TP
+\ef
+form feed
+.TP
+\en
+new line
+.TP
+\er
+carriage return
+.TP
+\et
+horizontal tab
+.TP
+\ev
+vertical tab
+.SH AUTHOR
+Written by FIXME unknown.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B echo
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B echo
+programs are properly installed at your site, the command
+.IP
+.B info echo
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/egrep.1 b/raw/man1/egrep.1
new file mode 100644
index 0000000..6a74c5d
--- /dev/null
+++ b/raw/man1/egrep.1
@@ -0,0 +1 @@
+.so man1/grep.1
diff --git a/raw/man1/eject.1 b/raw/man1/eject.1
new file mode 100644
index 0000000..93f59b8
--- /dev/null
+++ b/raw/man1/eject.1
@@ -0,0 +1,288 @@
+.\" This file Copyright (C) 1994-2001 Jeff Tranter
+.\" (tranter at pobox.com)
+.\" It may be distributed under the GNU Public License, version 2, or
+.\" any higher version. See section COPYING of the GNU Public license
+.\" for conditions under which this file may be redistributed.
+.TH EJECT 1 "18 May 2001" "Linux" "User Commands"
+.SH NAME
+eject \- eject removable media
+.SH SYNOPSIS
+eject -h
+.br
+eject [-vnrsfqp] [<name>]
+.br
+eject [-vn] -d
+.br
+eject [-vn] -a on|off|1|0 [<name>]
+.br
+eject [-vn] -c slot [<name>]
+.br
+eject [-vn] -t [<name>]
+.br
+eject [-vn] -x <speed> [<name>]
+.br
+eject -V
+
+.SH DESCRIPTION
+
+.B Eject
+allows removable media (typically a CD-ROM, floppy disk, tape, or JAZ
+or ZIP disk) to be ejected under software control. The command can
+also control some multi-disc CD-ROM changers, the auto-eject feature
+supported by some devices, and close the disc tray of some CD-ROM
+drives.
+
+The device corresponding to <name> is ejected. The name can be a
+device file or mount point, either a full path or with the leading
+"/dev" or "/mnt" omitted. If no name is specified, the default name
+"cdrom" is used.
+
+There are four different methods of ejecting, depending on whether the
+device is a CD-ROM, SCSI device, removable floppy, or tape. By default
+eject tries all four methods in order until it succeeds.
+
+If the device is currently mounted, it is unmounted before ejecting.
+
+.PP
+.SH "COMMAND\-LINE OPTIONS"
+.TP 0.5i
+.B -h
+This option causes
+.B eject
+to display a brief description of the command options.
+
+.TP 0.5i
+.B -v
+This makes
+.B eject
+run in verbose mode; more information is displayed about what the
+command is doing.
+
+.TP 0.5i
+.B -d
+If invoked with this option,
+.B eject
+lists the default device name.
+
+.TP 0.5i
+.B -a on|1|off|0
+This option controls the auto-eject mode, supported by some devices.
+When enabled, the drive automatically ejects when the device is
+closed.
+
+.TP 0.5i
+.B -c <slot>
+With this option a CD slot can be selected from an ATAPI/IDE CD-ROM
+changer. Linux 2.0 or higher is required to use this feature. The
+CD-ROM drive can not be in use (mounted data CD or playing a music CD)
+for a change request to work. Please also note that the first slot of
+the changer is referred to as 0, not 1.
+
+.TP 0.5i
+.B -t
+With this option the drive is given a CD-ROM tray close command. Not
+all devices support this command.
+
+.TP 0.5i
+.B -x <speed>
+With this option the drive is given a CD-ROM select speed command.
+The speed argument is a number indicating the desired speed (e.g. 8
+for 8X speed), or 0 for maximum data rate. Not all devices support
+this command and you can only specify speeds that the drive is capable
+of. Every time the media is changed this option is cleared. This
+option can be used alone, or with the -t and -c options.
+
+.TP 0.5i
+.B -n
+With this option the selected device is displayed but no action is
+performed.
+
+.TP 0.5i
+.B -r
+This option specifies that the drive should be ejected using a
+CDROM eject command.
+.TP 0.5i
+
+.B -s
+This option specifies that the drive should be ejected using
+SCSI commands.
+
+.TP 0.5i
+.B -f
+This option specifies that the drive should be ejected using a
+removable floppy disk eject command.
+
+.TP 0.5i
+.B -q
+This option specifies that the drive should be ejected using a
+tape drive offline command.
+
+.TP 0.5i
+.B -p
+This option allow you to use /proc/mounts instead /etc/mtab. It
+also passes the -n option to umount(1).
+
+.TP 0.5i
+.B -V
+This option causes
+.B eject
+to display the program version and exit.
+
+.SH LONG OPTIONS
+All options have corresponding long names, as listed below. The long
+names can be abbreviated as long as they are unique.
+
+.br
+-h --help
+.br
+-v --verbose
+.br
+-d --default
+.br
+-a --auto
+.br
+-c --changerslot
+.br
+-t --trayclose
+.br
+-x --cdspeed
+.br
+-n --noop
+.br
+-r --cdrom
+.br
+-s --scsi
+.br
+-f --floppy
+.br
+-q --tape
+.br
+-V --version
+.br
+-p --proc
+.br
+
+.SH EXAMPLES
+.PP
+Eject the default device:
+.IP
+eject
+.PP
+Eject a device or mount point named cdrom:
+.IP
+eject cdrom
+.PP
+Eject using device name:
+.IP
+eject /dev/cdrom
+.PP
+Eject using mount point:
+.IP
+eject /mnt/cdrom/
+.PP
+Eject 4th IDE device:
+.IP
+eject hdd
+.PP
+Eject first SCSI device:
+.IP
+eject sda
+.PP
+Eject using SCSI partition name (e.g. a ZIP drive):
+.IP
+eject sda4
+.PP
+Select 5th disc on mult-disc changer:
+.IP
+eject -v -c5 /dev/cdrom
+.PP
+Turn on auto-eject on a SoundBlaster CD-ROM drive:
+.IP
+eject -a on /dev/sbpcd
+
+.SH EXIT STATUS
+.PP
+
+Returns 0 if operation was successful, 1 if operation failed or command
+syntax was not valid.
+
+.SH NOTES
+.PP
+
+.B Eject
+only works with devices that support one or more of the four methods
+of ejecting. This includes most CD-ROM drives (IDE, SCSI, and
+proprietary), some SCSI tape drives, JAZ drives, ZIP drives (parallel
+port, SCSI, and IDE versions), and LS120 removable floppies. Users
+have also reported success with floppy drives on Sun SPARC and Apple
+Macintosh systems. If
+.B eject
+does not work, it is most likely a limitation of the kernel driver
+for the device and not the
+.B eject
+program itself.
+
+The -r, -s, -f, and -q options allow controlling which methods are
+used to eject. More than one method can be specified. If none of these
+options are specified, it tries all four (this works fine in most
+cases).
+
+.B Eject
+may not always be able to determine if the device is mounted (e.g. if
+it has several names). If the device name is a symbolic link,
+.B eject
+will follow the link and use the device that it points to.
+
+If
+.B eject
+determines that the device can have multiple partitions, it will
+attempt to unmount all mounted partitions of the device before
+ejecting. If an unmount fails, the program will not attempt to eject
+the media.
+
+You can eject an audio CD. Some CD-ROM drives will refuse to open the
+tray if the drive is empty. Some devices do not support the tray close
+command.
+
+If the auto-eject feature is enabled, then the drive will always be
+ejected after running this command. Not all Linux kernel CD-ROM
+drivers support the auto-eject mode. There is no way to find out the
+state of the auto-eject mode.
+
+You need appropriate privileges to access the device files. Running as
+root or setuid root is required to eject some devices (e.g. SCSI
+devices).
+
+The heuristic used to find a device, given a name, is as follows. If
+the name ends in a trailing slash, it is removed (this is to support
+filenames generated using shell file name completion). If the name
+starts with '.' or '/', it tries to open it as a device file or mount
+point. If that fails, it tries prepending '/dev/', '/mnt/', '/dev/cdroms',
+\&'/dev/rdsk/', '/dev/dsk/', and finally './' to the name, until a
+device file or mount point is found that can be opened. The program
+checks /etc/mtab for mounted devices. If that fails, it also checks
+/etc/fstab for mount points of currently unmounted devices.
+
+Creating symbolic links such as /dev/cdrom or /dev/zip is recommended
+so that
+.B eject
+can determine the appropriate devices using easily remembered names.
+
+To save typing you can create a shell alias for the eject options that
+work for your particular setup.
+
+.SH AUTHOR
+.B Eject
+was written by Jeff Tranter (tranter at pobox.com) and is released
+under the conditions of the GNU General Public License. See the file
+COPYING and notes in the source code for details.
+
+The -x option was added by Nobuyuki Tsuchimura (tutimura at nn.iij4u.or.jp),
+with thanks to Roland Krivanek (krivanek at fmph.uniba.sk) and his
+cdrom_speed command.
+
+.SH SEE ALSO
+
+mount(2), umount(2), mount(8), umount(8)
+.br
+/usr/src/linux/Documentation/cdrom/
diff --git a/raw/man1/emacs.1 b/raw/man1/emacs.1
new file mode 100644
index 0000000..4a3cca0
--- /dev/null
+++ b/raw/man1/emacs.1
@@ -0,0 +1,534 @@
+.\" Copyright (C) 1995, 1999, 2000, 2001  Free Software Foundation, Inc.
+.\"
+.\" This file is part of GNU Emacs.
+.\"
+.\" GNU Emacs 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, or (at your option)
+.\" any later version.
+.\"
+.\" GNU Emacs is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with GNU Emacs; see the file COPYING.  If not, write to the
+.\" Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+.\" Boston, MA 02111-1307, USA.
+.\"
+.TH EMACS 1 "1995 December 7"
+.UC 4
+.SH NAME
+emacs \- GNU project Emacs
+.SH SYNOPSIS
+.B emacs
+[
+.I command-line switches
+] [
+.I files ...
+]
+.br
+.SH DESCRIPTION
+.I GNU Emacs
+is a version of 
+.I Emacs,
+written by the author of the original (PDP-10) 
+.I Emacs,
+Richard Stallman.
+.br
+The primary documentation of GNU Emacs is in the GNU Emacs Manual,
+which you can read on line using Info, a subsystem of Emacs.  Please
+look there for complete and up-to-date documentation.  This man page
+is updated only when someone volunteers to do so; the Emacs
+maintainers' priority goal is to minimize the amount of time this man
+page takes away from other more useful projects.
+.br
+The user functionality of GNU Emacs encompasses
+everything other 
+.I Emacs 
+editors do, and it is easily extensible since its
+editing commands are written in Lisp.
+.PP
+.I Emacs
+has an extensive interactive help facility,
+but the facility assumes that you know how to manipulate
+.I Emacs
+windows and buffers.
+CTRL-h (backspace
+or CTRL-h) enters the Help facility.  Help Tutorial (CTRL-h t)
+requests an interactive tutorial which can teach beginners the fundamentals
+of 
+.I Emacs 
+in a few minutes.
+Help Apropos (CTRL-h a) helps you
+find a command given its functionality, Help Character (CTRL-h c)
+describes a given character's effect, and Help Function (CTRL-h f)
+describes a given Lisp function specified by name.
+.PP
+.I Emacs's
+Undo can undo several steps of modification to your buffers, so it is
+easy to recover from editing mistakes.
+.PP
+.I GNU Emacs's
+many special packages handle mail reading (RMail) and sending (Mail),
+outline editing (Outline), compiling (Compile), running subshells
+within
+.I Emacs
+windows (Shell), running a Lisp read-eval-print loop
+(Lisp-Interaction-Mode), and automated psychotherapy (Doctor).
+.PP
+There is an extensive reference manual, but
+users of other Emacses
+should have little trouble adapting even
+without a copy.  Users new to
+.I Emacs
+will be able
+to use basic features fairly rapidly by studying the tutorial and
+using the self-documentation features.
+.PP
+.SM Emacs Options
+.PP
+The following options are of general interest:
+.TP 8
+.I file
+Edit
+.I file.
+.TP
+.BI \+ number
+Go to the line specified by
+.I number
+(do not insert a space between the "+" sign and
+the number).
+.TP
+.B \-q
+Do not load an init file.
+.TP
+.BI \-u " user"
+Load
+.I user's
+init file.
+.TP
+.BI \-t " file"
+Use specified
+.I file
+as the terminal instead of using stdin/stdout.
+This must be the first argument specified in the command line.
+.PP
+The following options are lisp-oriented
+(these options are processed in the order encountered):
+.TP 8
+.BI \-f " function"
+Execute the lisp function
+.I function.
+.TP
+.BI \-l " file"
+Load the lisp code in the file
+.I file.
+.PP
+The following options are useful when running
+.I Emacs
+as a batch editor:
+.TP 8
+.BI \-batch
+Edit in batch mode.  The editor will send messages to stderr.  This
+option must be the first in the argument list.  You must use -l and -f
+options to specify files to execute and functions to call.
+.TP
+.B \-kill
+Exit 
+.I Emacs 
+while in batch mode.
+.\" START DELETING HERE IF YOU'RE NOT USING X
+.PP
+.SM Using Emacs with X
+.PP
+.I Emacs
+has been tailored to work well with the X window system.
+If you run
+.I Emacs
+from under X windows, it will create its own X window to
+display in.  You will probably want to start the editor
+as a background process
+so that you can continue using your original window.
+.PP
+.I Emacs
+can be started with the following X switches:
+.TP 8
+.BI \-name " name"
+Specifies the name which should be assigned to the initial
+.I Emacs
+window.  This controls looking up X resources as well as the window title.
+.TP 8
+.BI \-title " name"
+Specifies the title for the initial X window.
+.TP 8
+.B \-r
+Display the
+.I Emacs
+window in reverse video.
+.TP
+.B \-i
+Use the "kitchen sink" bitmap icon when iconifying the
+.I Emacs
+window.
+.TP
+.BI \-font " font, " \-fn " font"
+Set the
+.I Emacs
+window's font to that specified by
+.I font.
+You will find the various
+.I X
+fonts in the
+.I /usr/lib/X11/fonts
+directory.
+Note that
+.I Emacs
+will only accept fixed width fonts.
+Under the X11 Release 4 font-naming conventions, any font with the
+value "m" or "c" in the eleventh field of the font name is a fixed
+width font.  Furthermore, fonts whose name are of the form
+.IR width x height
+are generally fixed width, as is the font
+.IR fixed .
+See
+.IR xlsfonts (1)
+for more information.
+
+When you specify a font, be sure to put a space between the
+switch and the font name.
+.TP
+.BI \-bw " pixels"
+Set the
+.I Emacs
+window's border width to the number of pixels specified by
+.I pixels.
+Defaults to one pixel on each side of the window.
+.TP
+.BI \-ib " pixels"
+Set the window's internal border width to the number of pixels specified
+by 
+.I pixels.
+Defaults to one pixel of padding on each side of the window.
+.PP
+.TP 8
+.BI \-geometry " geometry"
+Set the
+.I Emacs
+window's width, height, and position as specified.  The geometry
+specification is in the standard X format; see
+.IR X (1)
+for more information.
+The width and height are specified in characters; the default is 80 by
+24.
+.PP
+.TP 8
+.BI \-fg " color"
+On color displays, sets the color of the text.
+
+See the file
+.I /usr/lib/X11/rgb.txt
+for a list of valid
+color names.
+.TP
+.BI \-bg " color"
+On color displays,
+sets the color of the window's background.
+.TP
+.BI \-bd " color"
+On color displays,
+sets the color of the window's border.
+.TP
+.BI \-cr " color"
+On color displays,
+sets the color of the window's text cursor.
+.TP
+.BI \-ms " color"
+On color displays,
+sets the color of the window's mouse cursor.
+.TP
+.BI \-d " displayname, " \-display " displayname"
+Create the
+.I Emacs
+window on the display specified by
+.IR displayname .
+Must be the first option specified in the command line.
+.TP
+.B \-nw
+Tells
+.I Emacs
+not to use its special interface to X.  If you use this
+switch when invoking
+.I Emacs
+from an
+.IR xterm (1)
+window, display is done in that window.
+This must be the first option specified in the command line.
+.PP
+You can set
+.I X
+default values for your
+.I Emacs
+windows in your
+.I \.Xresources
+file (see
+.IR xrdb (1)).
+Use the following format:
+.IP
+emacs.keyword:value
+.PP
+where
+.I value
+specifies the default value of
+.I keyword.
+.I Emacs
+lets you set default values for the following keywords:
+.TP 8
+.B font (\fPclass\fB Font)
+Sets the window's text font.
+.TP
+.B reverseVideo (\fPclass\fB ReverseVideo)
+If
+.I reverseVideo's
+value is set to
+.I on,
+the window will be displayed in reverse video.
+.TP
+.B bitmapIcon (\fPclass\fB BitmapIcon)
+If
+.I bitmapIcon's
+value is set to
+.I on,
+the window will iconify into the "kitchen sink."
+.TP
+.B borderWidth (\fPclass\fB BorderWidth)
+Sets the window's border width in pixels.
+.TP
+.B internalBorder (\fPclass\fB BorderWidth)
+Sets the window's internal border width in pixels.
+.TP
+.B foreground (\fPclass\fB Foreground)
+For color displays,
+sets the window's text color.
+.TP
+.B background (\fPclass\fB Background)
+For color displays,
+sets the window's background color.
+.TP
+.B borderColor (\fPclass\fB BorderColor)
+For color displays,
+sets the color of the window's border.
+.TP
+.B cursorColor (\fPclass\fB Foreground)
+For color displays,
+sets the color of the window's text cursor.
+.TP
+.B pointerColor (\fPclass\fB Foreground)
+For color displays,
+sets the color of the window's mouse cursor.
+.TP
+.B geometry (\fPclass\fB Geometry)
+Sets the geometry of the
+.I Emacs
+window (as described above).
+.TP
+.B title (\fPclass\fB Title)
+Sets the title of the
+.I Emacs
+window.
+.TP
+.B iconName (\fPclass\fB Title)
+Sets the icon name for the
+.I Emacs
+window icon.
+.PP
+If you try to set color values while using a black and white display,
+the window's characteristics will default as follows:
+the foreground color will be set to black,
+the background color will be set to white,
+the border color will be set to grey,
+and the text and mouse cursors will be set to black.
+.PP
+.SM Using the Mouse 
+.PP
+The following lists the mouse button bindings for the
+.I Emacs
+window under X11.
+
+.in +\w'CTRL-SHIFT-middle'u+4n
+.ta \w'CTRL-SHIFT-middle'u+4n
+.ti -\w'CTRL-SHIFT-middle'u+4n
+MOUSE BUTTON	FUNCTION
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+left	Set point.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+middle	Paste text.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+right	Cut text into X cut buffer.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+SHIFT-middle	Cut text into X cut buffer.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+SHIFT-right	Paste text.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-middle	Cut text into X cut buffer and kill it.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-right	Select this window, then split it into 
+two windows.  Same as typing CTRL-x 2.
+.\" START DELETING HERE IF YOU'RE NOT USING X MENUS
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-SHIFT-left	X buffer menu--hold the buttons and keys
+down, wait for menu to appear, select 
+buffer, and release.  Move mouse out of
+menu and release to cancel.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-SHIFT-middle	X help menu--pop up index card menu for
+Emacs help.
+.\" STOP DELETING HERE IF YOU'RE NOT USING X MENUS
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-SHIFT-right	Select window with mouse, and delete all
+other windows.  Same as typing CTRL-x 1.
+.\" STOP DELETING HERE IF YOU'RE NOT USING X
+.PP
+.SH MANUALS
+You can order printed copies of the GNU Emacs Manual from the Free
+Software Foundation, which develops GNU software.  See the file ORDERS
+for ordering information.
+.br
+Your local Emacs maintainer might also have copies available.  As
+with all software and publications from FSF, everyone is permitted to
+make and distribute copies of the Emacs manual.  The TeX source to the
+manual is also included in the Emacs source distribution.
+.PP
+.SH FILES
+/usr/local/info - files for the Info documentation browser
+(a subsystem of Emacs) to refer to.  Currently not much of Unix
+is documented here, but the complete text of the Emacs reference
+manual is included in a convenient tree structured form.
+
+/usr/local/share/emacs/$VERSION/src - C source files and object files
+
+/usr/local/share/emacs/$VERSION/lisp - Lisp source files and compiled files
+that define most editing commands.  Some are preloaded;
+others are autoloaded from this directory when used.
+  
+/usr/local/share/emacs/$VERSION/etc - various programs that are used with
+GNU Emacs, and some files of information.
+
+/usr/local/share/emacs/$VERSION/etc/DOC.* - contains the documentation
+strings for the Lisp primitives and preloaded Lisp functions
+of GNU Emacs.  They are stored here to reduce the size of
+Emacs proper.
+
+/usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES discusses GNU Emacs
+vs. other versions of Emacs.
+.br
+/usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering
+various services to assist users of GNU Emacs, including education,
+troubleshooting, porting and customization.
+.br
+These files also have information useful to anyone wishing to write
+programs in the Emacs Lisp extension language, which has not yet been fully
+documented.
+
+/usr/local/com/emacs/lock - holds lock files that are made for all
+files being modified in Emacs, to prevent simultaneous modification
+of one file by two users.
+
+.\" START DELETING HERE IF YOU'RE NOT USING X
+/usr/lib/X11/rgb.txt - list of valid X color names.
+.\" STOP DELETING HERE IF YOU'RE NOT USING X
+.PP
+.SH BUGS
+There is a mailing list, bug-gnu-emacs at prep.ai.mit.edu on the internet
+(ucbvax!prep.ai.mit.edu!bug-gnu-emacs on UUCPnet), for reporting Emacs
+bugs and fixes.  But before reporting something as a bug, please try
+to be sure that it really is a bug, not a misunderstanding or a
+deliberate feature.  We ask you to read the section ``Reporting Emacs
+Bugs'' near the end of the reference manual (or Info system) for hints
+on how and when to report bugs.  Also, include the version number of
+the Emacs you are running in \fIevery\fR bug report that you send in.
+
+Do not expect a personal answer to a bug report.  The purpose of reporting
+bugs is to get them fixed for everyone in the next release, if possible.
+For personal assistance, look in the SERVICE file (see above) for
+a list of people who offer it.
+
+Please do not send anything but bug reports to this mailing list.
+Send requests to be added to mailing lists to the special list
+info-gnu-emacs-request at prep.ai.mit.edu (or the corresponding UUCP
+address).  For more information about Emacs mailing lists, see the
+file /usr/local/emacs/etc/MAILINGLISTS.  Bugs tend actually to be
+fixed if they can be isolated, so it is in your interest to report
+them in such a way that they can be easily reproduced.
+.PP
+Bugs that I know about are: shell will not work with programs
+running in Raw mode on some Unix versions.
+.SH UNRESTRICTIONS
+.PP
+.I Emacs 
+is free; anyone may redistribute copies of 
+.I Emacs 
+to
+anyone under the terms stated in the 
+.I Emacs 
+General Public License,
+a copy of which accompanies each copy of 
+.I Emacs 
+and which also
+appears in the reference manual.
+.PP
+Copies of
+.I Emacs
+may sometimes be received packaged with distributions of Unix systems,
+but it is never included in the scope of any license covering those
+systems.  Such inclusion violates the terms on which distribution
+is permitted.  In fact, the primary purpose of the General Public
+License is to prohibit anyone from attaching any other restrictions
+to redistribution of 
+.I Emacs.
+.PP
+Richard Stallman encourages you to improve and extend 
+.I Emacs, 
+and urges that
+you contribute your extensions to the GNU library.  Eventually GNU
+(Gnu's Not Unix) will be a complete replacement for Berkeley
+Unix.
+Everyone will be free to use, copy, study and change the GNU system.
+.SH SEE ALSO
+X(1), xlsfonts(1), xterm(1), xrdb(1)
+.SH AUTHORS
+.PP
+.I Emacs
+was written by Richard Stallman and the Free Software Foundation.
+Joachim Martillo and Robert Krawitz added the X features.
+.SH COPYING
+Copyright 
+.if t \(co
+.if n (c)
+1995, 1999, 2000, 2001 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, with no Front-Cover Texts, and no
+Back-Cover Texts.
+.PP
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+A copy of the license is included in the
+.BR gfdl ( 1 )
+man page, and in the section entitled "GNU Free Documentation
+License" in the Emacs manual.
diff --git a/raw/man1/enable.1 b/raw/man1/enable.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/enable.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/env.1 b/raw/man1/env.1
new file mode 100644
index 0000000..f493909
--- /dev/null
+++ b/raw/man1/env.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH ENV "1" "October 2003" "env (coreutils) 5.0" FSF
+.SH NAME
+env \- run a program in a modified environment
+.SH SYNOPSIS
+.B env
+[\fIOPTION\fR]... [\fI-\fR] [\fINAME=VALUE\fR]... [\fICOMMAND \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Set each NAME to VALUE in the environment and run COMMAND.
+.TP
+\fB\-i\fR, \fB\-\-ignore\-environment\fR
+start with an empty environment
+.TP
+\fB\-u\fR, \fB\-\-unset\fR=\fINAME\fR
+remove variable from the environment
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A mere - implies \fB\-i\fR.  If no COMMAND, print the resulting environment.
+.SH AUTHOR
+Written by Richard Mlynarik and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B env
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B env
+programs are properly installed at your site, the command
+.IP
+.B info env
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/eval.1 b/raw/man1/eval.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/eval.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/ex.1 b/raw/man1/ex.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/ex.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/exec.1 b/raw/man1/exec.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/exec.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/exit.1 b/raw/man1/exit.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/exit.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/expand.1 b/raw/man1/expand.1
new file mode 100644
index 0000000..d884a27
--- /dev/null
+++ b/raw/man1/expand.1
@@ -0,0 +1,50 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH EXPAND "1" "October 2003" "expand (coreutils) 5.0" FSF
+.SH NAME
+expand \- convert tabs to spaces
+.SH SYNOPSIS
+.B expand
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Convert tabs in each FILE to spaces, writing to standard output.
+With no FILE, or when FILE is -, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-i\fR, \fB\-\-initial\fR
+do not convert TABs after non whitespace
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fINUMBER\fR
+have tabs NUMBER characters apart, not 8
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fILIST\fR
+use comma separated list of explicit tab positions
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B expand
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B expand
+programs are properly installed at your site, the command
+.IP
+.B info expand
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/export.1 b/raw/man1/export.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/export.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/false.1 b/raw/man1/false.1
new file mode 100644
index 0000000..50dac37
--- /dev/null
+++ b/raw/man1/false.1
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH FALSE "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+false \- do nothing, unsuccessfully
+.SH SYNOPSIS
+.B false
+[\fIignored command line arguments\fR]
+.br
+.B false
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Exit with a status code indicating failure.
+.PP
+These option names may not be abbreviated.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B false
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B false
+programs are properly installed at your site, the command
+.IP
+.B info false
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/fc.1 b/raw/man1/fc.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/fc.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/fg.1 b/raw/man1/fg.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/fg.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/fgrep.1 b/raw/man1/fgrep.1
new file mode 100644
index 0000000..6a74c5d
--- /dev/null
+++ b/raw/man1/fgrep.1
@@ -0,0 +1 @@
+.so man1/grep.1
diff --git a/raw/man1/file.1 b/raw/man1/file.1
new file mode 100644
index 0000000..d6604b0
--- /dev/null
+++ b/raw/man1/file.1
@@ -0,0 +1,473 @@
+.TH FILE 1 "Copyright but distributable"
+.SH NAME
+file
+\- determine file type
+.SH SYNOPSIS
+.B file
+[
+.B \-bcikLnNsvz
+]
+[
+.B \-f
+.I namefile
+]
+[
+.B \-F
+.I separator
+]
+[
+.B \-m 
+.I magicfiles
+]
+.I file
+\&...
+.br
+.B file
+.B -C
+[
+.B \-m 
+magicfile ]
+.SH DESCRIPTION
+This manual page documents version 4.02 of the
+.B file
+command.
+.PP
+.B File
+tests each argument in an attempt to classify it.
+There are three sets of tests, performed in this order:
+filesystem tests, magic number tests, and language tests.
+The
+.I first
+test that succeeds causes the file type to be printed.
+.PP
+The type printed will usually contain one of the words
+.B text
+(the file contains only
+printing characters and a few common control
+characters and is probably safe to read on an
+.SM ASCII
+terminal),
+.B executable
+(the file contains the result of compiling a program
+in a form understandable to some \s-1UNIX\s0 kernel or another),
+or
+.B data
+meaning anything else (data is usually `binary' or non-printable).
+Exceptions are well-known file formats (core files, tar archives)
+that are known to contain binary data.
+When modifying the file
+.I /usr/share/file/magic
+or the program itself, 
+.B "preserve these keywords" .
+People depend on knowing that all the readable files in a directory
+have the word ``text'' printed.
+Don't do as Berkeley did and change ``shell commands text''
+to ``shell script''.
+Note that the file
+.I /usr/share/file/magic
+is built mechanically from a large number of small files in
+the subdirectory
+.I Magdir
+in the source distribution of this program.
+.PP
+The filesystem tests are based on examining the return from a
+.BR stat (2)
+system call.
+The program checks to see if the file is empty,
+or if it's some sort of special file.
+Any known file types appropriate to the system you are running on
+(sockets, symbolic links, or named pipes (FIFOs) on those systems that
+implement them)
+are intuited if they are defined in
+the system header file
+.IR <sys/stat.h>  .
+.PP
+The magic number tests are used to check for files with data in
+particular fixed formats.
+The canonical example of this is a binary executable (compiled program)
+.I a.out
+file, whose format is defined in 
+.I a.out.h
+and possibly
+.I exec.h
+in the standard include directory.
+These files have a `magic number' stored in a particular place
+near the beginning of the file that tells the \s-1UNIX\s0 operating system
+that the file is a binary executable, and which of several types thereof.
+The concept of `magic number' has been applied by extension to data files.
+Any file with some invariant identifier at a small fixed
+offset into the file can usually be described in this way.
+The information identifying these files is read from the compiled
+magic file
+.I /usr/share/file/magic.mgc ,
+or 
+.I /usr/share/file/magic
+if the compile file does not exist.
+.PP
+If a file does not match any of the entries in the magic file,
+it is examined to see if it seems to be a text file.
+ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets
+(such as those used on Macintosh and IBM PC systems),
+UTF-8-encoded Unicode, UTF-16-encoded Unicode, and EBCDIC
+character sets can be distinguished by the different
+ranges and sequences of bytes that constitute printable text
+in each set.
+If a file passes any of these tests, its character set is reported.
+ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified
+as ``text'' because they will be mostly readable on nearly any terminal;
+UTF-16 and EBCDIC are only ``character data'' because, while
+they contain text, it is text that will require translation
+before it can be read.
+In addition,
+.B file
+will attempt to determine other characteristics of text-type files.
+If the lines of a file are terminated by CR, CRLF, or NEL, instead
+of the Unix-standard LF, this will be reported.
+Files that contain embedded escape sequences or overstriking
+will also be identified.
+.PP
+Once
+.B file
+has determined the character set used in a text-type file,
+it will
+attempt to determine in what language the file is written.
+The language tests look for particular strings (cf
+.IR names.h )
+that can appear anywhere in the first few blocks of a file.
+For example, the keyword
+.B .br
+indicates that the file is most likely a
+.BR troff (1)
+input file, just as the keyword 
+.B struct
+indicates a C program.
+These tests are less reliable than the previous
+two groups, so they are performed last.
+The language test routines also test for some miscellany
+(such as 
+.BR tar (1)
+archives).
+.PP
+Any file that cannot be identified as having been written
+in any of the character sets listed above is simply said to be ``data''.
+.SH OPTIONS
+.TP 8
+.B \-b
+Do not prepend filenames to output lines (brief mode).
+.TP 8
+.B \-c
+Cause a checking printout of the parsed form of the magic file.
+This is usually used in conjunction with 
+.B \-m
+to debug a new magic file before installing it.
+.TP 8
+.B \-C
+Write a magic.mgc output file that contains a pre-parsed version of
+file.
+.TP 8
+.BI \-f " namefile"
+Read the names of the files to be examined from 
+.I namefile
+(one per line) 
+before the argument list.
+Either 
+.I namefile
+or at least one filename argument must be present;
+to test the standard input, use ``\-'' as a filename argument.
+.TP 8
+.BI \-F " separator"
+Use the specified string as the separator between the filename and the
+file result returned. Defaults to ``:''.
+.TP 8
+.B \-i
+Causes the file command to output mime type strings rather than the more
+traditional human readable ones. Thus it may say
+``text/plain; charset=us-ascii''
+rather
+than ``ASCII text''.
+In order for this option to work, file changes the way
+it handles files recognised by the command itself (such as many of the
+text file types, directories etc), and makes use of an alternative
+``magic'' file.
+(See ``FILES'' section, below).
+.TP 8
+.B \-k
+Don't stop at the first match, keep going.
+.TP 8
+.B \-L
+option causes symlinks to be followed, as the like-named option in
+.BR ls (1).
+(on systems that support symbolic links).
+.TP 8
+.BI \-m " list"
+Specify an alternate list of files containing magic numbers.
+This can be a single file, or a colon-separated list of files.
+.TP 8
+.B \-n
+Force stdout to be flushed after checking each file.
+This is only useful if checking a list of files.
+It is intended to be used by programs that want filetype output from a pipe.
+.TP 8
+.B \-N
+Don't pad filenames so that they align in the output.
+.TP 8
+.B \-s
+Normally,
+.B file
+only attempts to read and determine the type of argument files which
+.BR stat (2)
+reports are ordinary files.
+This prevents problems, because reading special files may have peculiar
+consequences.
+Specifying the
+.BR \-s
+option causes
+.B file
+to also read argument files which are block or character special files.
+This is useful for determining the filesystem types of the data in raw
+disk partitions, which are block special files.
+This option also causes
+.B file
+to disregard the file size as reported by
+.BR stat (2)
+since on some systems it reports a zero size for raw disk partitions.
+.TP 8
+.B \-v
+Print the version of the program and exit.
+.TP 8
+.B \-z
+Try to look inside compressed files.
+.SH FILES
+.I /usr/share/file/magic.mgc
+\- default compiled list of magic numbers
+.PP
+.I /usr/share/file/magic
+\- default list of magic numbers
+.PP
+.I /usr/share/file/magic.mime.mgc
+\- default compiled list of magic numbers, used to output mime types when
+the -i option is specified.
+.PP
+.I /usr/share/file/magic.mime
+\- default list of magic numbers, used to output mime types when the -i option
+is specified.
+
+.SH ENVIRONMENT
+The environment variable
+.B MAGIC
+can be used to set the default magic number files.
+.SH SEE ALSO
+.BR magic (5)
+\- description of magic file format.
+.br
+.BR strings (1), " od" (1), " hexdump(1)"
+\- tools for examining non-textfiles.
+.SH STANDARDS CONFORMANCE
+This program is believed to exceed the System V Interface Definition
+of FILE(CMD), as near as one can determine from the vague language
+contained therein. 
+Its behaviour is mostly compatible with the System V program of the same name.
+This version knows more magic, however, so it will produce
+different (albeit more accurate) output in many cases. 
+.PP
+The one significant difference 
+between this version and System V
+is that this version treats any white space
+as a delimiter, so that spaces in pattern strings must be escaped.
+For example,
+.br
+>10	string	language impress\ 	(imPRESS data)
+.br
+in an existing magic file would have to be changed to
+.br
+>10	string	language\e impress	(imPRESS data)
+.br
+In addition, in this version, if a pattern string contains a backslash,
+it must be escaped.
+For example
+.br
+0	string		\ebegindata	Andrew Toolkit document
+.br
+in an existing magic file would have to be changed to
+.br
+0	string		\e\ebegindata	Andrew Toolkit document
+.br
+.PP
+SunOS releases 3.2 and later from Sun Microsystems include a
+.BR file (1)
+command derived from the System V one, but with some extensions.
+My version differs from Sun's only in minor ways.
+It includes the extension of the `&' operator, used as,
+for example,
+.br
+>16	long&0x7fffffff	>0		not stripped
+.SH MAGIC DIRECTORY
+The magic file entries have been collected from various sources,
+mainly USENET, and contributed by various authors.
+Christos Zoulas (address below) will collect additional
+or corrected magic file entries.
+A consolidation of magic file entries 
+will be distributed periodically.
+.PP
+The order of entries in the magic file is significant.
+Depending on what system you are using, the order that
+they are put together may be incorrect.
+If your old
+.B file
+command uses a magic file,
+keep the old magic file around for comparison purposes
+(rename it to 
+.IR /usr/share/file/magic.orig ).
+.SH EXAMPLES
+.nf
+$ file file.c file /dev/{wd0a,hda}
+file.c:   C program text
+file:     ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
+          dynamically linked (uses shared libs), stripped
+/dev/wd0a: block special (0/0)
+/dev/hda: block special (3/0)
+$ file -s /dev/wd0{b,d}
+/dev/wd0b: data
+/dev/wd0d: x86 boot sector
+$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
+/dev/hda:   x86 boot sector
+/dev/hda1:  Linux/i386 ext2 filesystem
+/dev/hda2:  x86 boot sector
+/dev/hda3:  x86 boot sector, extended partition table
+/dev/hda4:  Linux/i386 ext2 filesystem
+/dev/hda5:  Linux/i386 swap file
+/dev/hda6:  Linux/i386 swap file
+/dev/hda7:  Linux/i386 swap file
+/dev/hda8:  Linux/i386 swap file
+/dev/hda9:  empty
+/dev/hda10: empty
+
+$ file -i file.c file /dev/{wd0a,hda}
+file.c:      text/x-c
+file:        application/x-executable, dynamically linked (uses shared libs),
+not stripped
+/dev/hda:    application/x-not-regular-file
+/dev/wd0a:   application/x-not-regular-file
+
+.fi
+.SH HISTORY
+There has been a 
+.B file
+command in every \s-1UNIX\s0 since at least Research Version 4
+(man page dated November, 1973).
+The System V version introduced one significant major change:
+the external list of magic number types.
+This slowed the program down slightly but made it a lot more flexible.
+.PP
+This program, based on the System V version,
+was written by Ian Darwin <ian at darwinsys.com>
+without looking at anybody else's source code.
+.PP
+John Gilmore revised the code extensively, making it better than
+the first version.
+Geoff Collyer found several inadequacies
+and provided some magic file entries.
+Contributions by the `&' operator by Rob McMahon, cudcv at warwick.ac.uk, 1989.
+.PP
+Guy Harris, guy at netapp.com, made many changes from 1993 to the present.
+.PP
+Primary development and maintenance from 1990 to the present by
+Christos Zoulas (christos at astron.com).
+.PP
+Altered by Chris Lowth, chris at lowth.com, 2000:
+Handle the ``-i'' option to output mime type strings and using an alternative
+magic file and internal logic.
+.PP
+Altered by Eric Fischer (enf at pobox.com), July, 2000,
+to identify character codes and attempt to identify the languages
+of non-ASCII files.
+.PP
+The list of contributors to the "Magdir" directory (source for the
+/etc/magic
+file) is too long to include here.
+You know who you are; thank you.
+.SH LEGAL NOTICE
+Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999.
+Covered by the standard Berkeley Software Distribution copyright; see the file
+LEGAL.NOTICE in the source distribution.
+.PP
+The files
+.I tar.h
+and
+.I is_tar.c
+were written by John Gilmore from his public-domain
+.B tar
+program, and are not covered by the above license.
+.SH BUGS
+There must be a better way to automate the construction of the Magic
+file from all the glop in magdir.
+What is it?
+Better yet, the magic file should be compiled into binary (say,
+.BR ndbm (3)
+or, better yet, fixed-length
+.SM ASCII
+strings for use in heterogenous network environments) for faster startup.
+Then the program would run as fast as the Version 7 program of the same name,
+with the flexibility of the System V version.
+.PP
+.B File
+uses several algorithms that favor speed over accuracy,
+thus it can be misled about the contents of
+text
+files.
+.PP
+The support for
+text
+files (primarily for programming languages)
+is simplistic, inefficient and requires recompilation to update.
+.PP
+There should be an ``else'' clause to follow a series of continuation lines.
+.PP
+The magic file and keywords should have regular expression support.
+Their use of
+.SM "ASCII TAB"
+as a field delimiter is ugly and makes
+it hard to edit the files, but is entrenched.
+.PP
+It might be advisable to allow upper-case letters in keywords
+for e.g.,
+.BR troff (1)
+commands vs man page macros.
+Regular expression support would make this easy.
+.PP
+The program doesn't grok \s-2FORTRAN\s0.
+It should be able to figure \s-2FORTRAN\s0 by seeing some keywords which 
+appear indented at the start of line.
+Regular expression support would make this easy.
+.PP
+The list of keywords in 
+.I ascmagic
+probably belongs in the Magic file.
+This could be done by using some keyword like `*' for the offset value.
+.PP
+Another optimisation would be to sort
+the magic file so that we can just run down all the
+tests for the first byte, first word, first long, etc, once we
+have fetched it.
+Complain about conflicts in the magic file entries.
+Make a rule that the magic entries sort based on file offset rather
+than position within the magic file?
+.PP
+The program should provide a way to give an estimate 
+of ``how good'' a guess is.
+We end up removing guesses (e.g. ``From '' as first 5 chars of file) because
+they are not as good as other guesses (e.g. ``Newsgroups:'' versus
+``Return-Path:'').
+Still, if the others don't pan out, it should be possible to use the
+first guess.  
+.PP
+This program is slower than some vendors' file commands.
+The new support for multiple character codes makes it even slower.
+.PP
+This manual page, and particularly this section, is too long.
+.SH AVAILABILITY
+You can obtain the original author's latest version by anonymous FTP
+on
+.B ftp.astron.com
+in the directory
+.I /pub/file/file-X.YZ.tar.gz
diff --git a/raw/man1/find.1 b/raw/man1/find.1
new file mode 100644
index 0000000..38c7a94
--- /dev/null
+++ b/raw/man1/find.1
@@ -0,0 +1,459 @@
+.TH FIND 1L \" -*- nroff -*-
+.SH NAME
+find \- search for files in a directory hierarchy
+.SH SYNOPSIS
+.B find
+[path...] [expression]
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR find .
+.B find
+searches the directory tree rooted at each given file name by
+evaluating the given expression from left to right, according to the
+rules of precedence (see section OPERATORS), until the outcome is
+known (the left hand side is false for \fIand\fR operations, true for
+\fIor\fR), at which point
+.B find
+moves on to the next file name.
+.PP
+The first argument that begins with `\-', `(', `)', `,', or `!' is taken
+to be the beginning of the expression; any arguments before it are
+paths to search, and any arguments after it are the rest of the
+expression.  If no paths are given, the current directory is used.  If
+no expression is given, the expression `\-print' is used.
+.PP
+.B find
+exits with status 0 if all files are processed successfully, greater
+than 0 if errors occur.
+.SH EXPRESSIONS
+.P
+The expression is made up of options (which affect overall operation
+rather than the processing of a specific file, and always return true),
+tests (which return a true or false value), and actions (which have side
+effects and return a true or false value), all separated by operators.
+\-and is assumed where the operator is omitted.  If the expression contains
+no actions other than \-prune, \-print is performed on all files
+for which the expression is true.
+.SS OPTIONS
+.P
+All options always return true.  They always take effect, rather than
+being processed only when their place in the expression is reached.
+Therefore, for clarity, it is best to place them at the beginning of
+the expression.
+.IP \-daystart
+Measure times (for \-amin, \-atime, \-cmin, \-ctime, \-mmin, and \-mtime)
+from the beginning of today rather than from 24 hours ago.
+.IP \-depth
+Process each directory's contents before the directory itself.
+.IP \-follow
+Dereference symbolic links.  Implies \-noleaf.
+.IP "\-help, \-\-help"
+Print a summary of the command-line usage of
+.B find
+and exit.
+.IP "\-maxdepth \fIlevels\fR"
+Descend at most \fIlevels\fR (a non-negative integer) levels of
+directories below the command line arguments.  `\-maxdepth 0' means
+only apply the tests and actions to the command line arguments.
+.IP "\-mindepth \fIlevels\fR"
+Do not apply any tests or actions at levels less than \fIlevels\fR (a
+non-negative integer).  `\-mindepth 1' means process all files except
+the command line arguments.
+.IP \-mount
+Don't descend directories on other filesystems.  An alternate name for
+\-xdev, for compatibility with some other versions of
+.BR find .
+.IP "\-noleaf"
+Do not optimize by assuming that directories contain 2 fewer
+subdirectories than their hard link count.  This option is needed when
+searching filesystems that do not follow the Unix directory-link
+convention, such as CD-ROM or MS-DOS filesystems or AFS volume mount
+points.  Each directory on a normal Unix filesystem has at least 2
+hard links: its name and its `.'  entry.  Additionally, its
+subdirectories (if any) each have a `..'  entry linked to that
+directory.  When
+.B find
+is examining a directory, after it has statted 2 fewer subdirectories
+than the directory's link count, it knows that the rest of the entries
+in the directory are non-directories (`leaf' files in the directory
+tree).  If only the files' names need to be examined, there is no need
+to stat them; this gives a significant increase in search speed.
+.IP "\-version, \-\-version"
+Print the \fBfind\fR version number and exit.
+.IP \-xdev
+Don't descend directories on other filesystems.
+.SS TESTS
+.P
+Numeric arguments can be specified as
+.IP \fI+n\fP
+for greater than
+.IR n ,
+.IP \fI\-n\fP
+for less than
+.IR n ,
+.IP \fIn\fP
+for exactly
+.IR n .
+.IP "\-amin \fIn\fR"
+File was last accessed \fIn\fR minutes ago.
+.IP "\-anewer \fIfile\fR"
+File was last accessed more recently than \fIfile\fR was modified.
+\-anewer is affected by \-follow only if \-follow comes before
+\-anewer on the command line.
+.IP "\-atime \fIn\fR"
+File was last accessed \fIn\fR*24 hours ago.
+.IP "\-cmin \fIn\fR"
+File's status was last changed \fIn\fR minutes ago.
+.IP "\-cnewer \fIfile\fR"
+File's status was last changed more recently than \fIfile\fR was modified.
+\-cnewer is affected by \-follow only if \-follow comes before
+\-cnewer on the command line.
+.IP "\-ctime \fIn\fR"
+File's status was last changed \fIn\fR*24 hours ago.
+.IP \-empty
+File is empty and is either a regular file or a directory.
+.IP \-false
+Always false.
+.IP "\-fstype \fItype\fR"
+File is on a filesystem of type \fItype\fR.  The valid filesystem
+types vary among different versions of Unix; an incomplete list of
+filesystem types that are accepted on some version of Unix or another
+is: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K.  You can use \-printf
+with the %F directive to see the types of your filesystems.
+.IP "\-gid \fIn\fR"
+File's numeric group ID is \fIn\fR.
+.IP "\-group \fIgname\fR"
+File belongs to group \fIgname\fR (numeric group ID allowed).
+.IP "\-ilname \fIpattern\fR"
+Like \-lname, but the match is case insensitive.
+.IP "\-iname \fIpattern\fR"
+Like \-name, but the match is case insensitive.  For example, the
+patterns `fo*' and `F??' match the file names `Foo', `FOO', `foo',
+`fOo', etc.
+.IP "\-inum \fIn\fR"
+File has inode number \fIn\fR.
+.IP "\-ipath \fIpattern\fR"
+Like \-path, but the match is case insensitive.
+.IP "\-iregex \fIpattern\fR"
+Like \-regex, but the match is case insensitive.
+.IP "\-links \fIn\fR"
+File has \fIn\fR links.
+.IP "\-lname \fIpattern\fR"
+File is a symbolic link whose contents match shell pattern
+\fIpattern\fR.  The metacharacters do not treat `/' or `.' specially.
+.IP "\-mmin \fIn\fR"
+File's data was last modified \fIn\fR minutes ago.
+.IP "\-mtime \fIn\fR"
+File's data was last modified \fIn\fR*24 hours ago.
+.IP "\-name \fIpattern\fR"
+Base of file name (the path with the leading directories removed)
+matches shell pattern \fIpattern\fR.  The metacharacters (`*', `?',
+and `[]') do not match a `.' at the start of the base name.  To ignore
+a directory and the files under it, use \-prune; see an example in the
+description of \-path.
+.IP "\-newer \fIfile\fR"
+File was modified more recently than \fIfile\fR.
+\-newer is affected by \-follow only if \-follow comes before
+\-newer on the command line.
+.IP \-nouser
+No user corresponds to file's numeric user ID.
+.IP \-nogroup
+No group corresponds to file's numeric group ID.
+.IP "\-path \fIpattern\fR"
+File name matches shell pattern \fIpattern\fR.  The metacharacters do
+not treat `/' or `.' specially; so, for example,
+.br
+.in +1i
+find . \-path './sr*sc'
+.br
+.in -1i
+will print an entry for a directory called './src/misc' (if one
+exists).  To ignore a whole directory tree, use \-prune rather than
+checking every file in the tree.  For example, to skip the
+directory `src/emacs' and all files and directories under it, and
+print the names of the other files found, do something like this:
+.br
+.in +1i
+find . \-path './src/emacs' -prune -o -print
+.br
+.in -1i
+.IP "\-perm \fImode\fR"
+File's permission bits are exactly \fImode\fR (octal or symbolic).
+Symbolic modes use mode 0 as a point of departure.
+.IP "\-perm \-\fImode\fR"
+All of the permission bits \fImode\fR are set for the file.
+.IP "\-perm +\fImode\fR"
+Any of the permission bits \fImode\fR are set for the file.
+.IP "\-regex \fIpattern\fR"
+File name matches regular expression \fIpattern\fR.  This is a match
+on the whole path, not a search.  For example, to match a file named
+`./fubar3', you can use the regular expression `.*bar.' or `.*b.*3',
+but not `b.*r3'.
+.IP "\-size \fIn\fR[bckw]"
+File uses \fIn\fP units of space.  The units are 512-byte blocks by
+default or if `b' follows \fIn\fP, bytes if `c' follows \fIn\fP,
+kilobytes if `k' follows \fIn\fP, or 2-byte words if `w' follows \fIn\fP.
+The size does not count indirect blocks, but it does count blocks in
+sparse files that are not actually allocated.
+.IP \-true
+Always true.
+.IP "\-type \fIc\fR"
+File is of type \fIc\fR:
+.RS
+.IP b
+block (buffered) special
+.IP c
+character (unbuffered) special
+.IP d
+directory
+.IP p
+named pipe (FIFO)
+.IP f
+regular file
+.IP l
+symbolic link
+.IP s
+socket
+.IP D
+door (Solaris)
+.RE
+.IP "\-uid \fIn\fR"
+File's numeric user ID is \fIn\fR.
+.IP "\-used \fIn\fR"
+File was last accessed \fIn\fR days after its status was last changed.
+.IP "\-user \fIuname\fR"
+File is owned by user \fIuname\fR (numeric user ID allowed).
+.IP "\-xtype \fIc\fR"
+The same as \-type unless the file is a symbolic link.  For symbolic
+links: if \-follow has not been given, true if the file is a link to a
+file of type \fIc\fR; if \-follow has been given, true if \fIc\fR is
+`l'.  In other words, for symbolic links, \-xtype checks the type of
+the file that \-type does not check.
+.SS ACTIONS
+.IP "\-exec \fIcommand\fR ;"
+Execute \fIcommand\fR; true if 0 status is returned.  All following
+arguments to
+.B find
+are taken to be arguments to the command until an argument consisting
+of `;' is encountered.  The string `{}' is replaced by the current
+file name being processed everywhere it occurs in the arguments to the
+command, not just in arguments where it is alone, as in some versions
+of
+.BR find .
+Both of these constructions might need to be escaped (with a `\e') or
+quoted to protect them from expansion by the shell.  The command is
+executed in the starting directory.
+.IP "\-fls \fIfile\fR"
+True; like \-ls but write to \fIfile\fR like \-fprint.
+.IP "\-fprint \fIfile\fR"
+True; print the full file name into file \fIfile\fR.  If \fIfile\fR
+does not exist when \fBfind\fR is run, it is created; if it does
+exist, it is truncated.  The file names ``/dev/stdout'' and
+``/dev/stderr'' are handled specially; they refer to the standard
+output and standard error output, respectively.
+.IP "\-fprint0 \fIfile\fR"
+True; like \-print0 but write to \fIfile\fR like \-fprint.
+.IP "\-fprintf \fIfile\fR \fIformat\fR"
+True; like \-printf but write to \fIfile\fR like \-fprint.
+.IP "\-ok \fIcommand\fR ;"
+Like \-exec but ask the user first (on the standard input); if the
+response does not start with `y' or `Y', do not run the command, and
+return false.
+.IP \-print
+True; print the full file name on the standard output, followed by a newline.
+.IP \-print0
+True; print the full file name on the standard output, followed by a
+null character.  This allows file names that contain newlines to be
+correctly interpreted by programs that process the \fBfind\fR output.
+.IP "\-printf \fIformat\fR"
+True; print \fIformat\fR on the standard output, interpreting `\e'
+escapes and `%' directives.  Field widths and precisions can be
+specified as with the `printf' C function.  Unlike \-print, \-printf
+does not add a newline at the end of the string.  The escapes and
+directives are:
+.RS
+.IP \ea
+Alarm bell.
+.IP \eb
+Backspace.
+.IP \ec
+Stop printing from this format immediately and flush the output.
+.IP \ef
+Form feed.
+.IP \en
+Newline.
+.IP \er
+Carriage return.
+.IP \et
+Horizontal tab.
+.IP \ev
+Vertical tab.
+.IP \e\e
+A literal backslash (`\e').
+.IP \eNNN
+The character whose ASCII code is NNN (octal).
+.PP
+A `\e' character followed by any other character is treated as an
+ordinary character, so they both are printed.
+.IP %%
+A literal percent sign.
+.IP %a
+File's last access time in the format returned by the C `ctime' function.
+.IP %A\fIk\fP
+File's last access time in the format specified by \fIk\fR, which is
+either `@' or a directive for the C `strftime' function.  The possible
+values for \fIk\fR are listed below; some of them might not be
+available on all systems, due to differences in `strftime' between
+systems.
+.RS
+.IP @
+seconds since Jan. 1, 1970, 00:00 GMT.
+.PP
+Time fields:
+.IP H
+hour (00..23)
+.IP I
+hour (01..12)
+.IP k
+hour ( 0..23)
+.IP l
+hour ( 1..12)
+.IP M
+minute (00..59)
+.IP p
+locale's AM or PM
+.IP r
+time, 12-hour (hh:mm:ss [AP]M)
+.IP S
+second (00..61)
+.IP T
+time, 24-hour (hh:mm:ss)
+.IP X
+locale's time representation (H:M:S)
+.IP Z
+time zone (e.g., EDT), or nothing if no time zone is determinable
+.PP
+Date fields:
+.IP a
+locale's abbreviated weekday name (Sun..Sat)
+.IP A
+locale's full weekday name, variable length (Sunday..Saturday)
+.IP b
+locale's abbreviated month name (Jan..Dec)
+.IP B
+locale's full month name, variable length (January..December)
+.IP c
+locale's date and time (Sat Nov 04 12:02:33 EST 1989)
+.IP d
+day of month (01..31)
+.IP D
+date (mm/dd/yy)
+.IP h
+same as b
+.IP j
+day of year (001..366)
+.IP m
+month (01..12)
+.IP U
+week number of year with Sunday as first day of week (00..53)
+.IP w
+day of week (0..6)
+.IP W
+week number of year with Monday as first day of week (00..53)
+.IP x
+locale's date representation (mm/dd/yy)
+.IP y
+last two digits of year (00..99)
+.IP Y
+year (1970...)
+.RE
+.IP %b
+File's size in 512-byte blocks (rounded up).
+.IP %c
+File's last status change time in the format returned by the C `ctime'
+function.
+.IP %C\fIk\fP
+File's last status change time in the format specified by \fIk\fR,
+which is the same as for %A.
+.IP %d
+File's depth in the directory tree; 0 means the file is a command line
+argument.
+.IP %f
+File's name with any leading directories removed (only the last element).
+.IP %F
+Type of the filesystem the file is on; this value can be used for
+\-fstype.
+.IP %g
+File's group name, or numeric group ID if the group has no name.
+.IP %G
+File's numeric group ID.
+.IP %h
+Leading directories of file's name (all but the last element).
+.IP %H
+Command line argument under which file was found.
+.IP %i
+File's inode number (in decimal).
+.IP %k
+File's size in 1K blocks (rounded up).
+.IP %l
+Object of symbolic link (empty string if file is not a symbolic link).
+.IP %m
+File's permission bits (in octal).
+.IP %n
+Number of hard links to file.
+.IP %p
+File's name.
+.IP %P
+File's name with the name of the command line argument under which
+it was found removed.
+.IP %s
+File's size in bytes.
+.IP %t
+File's last modification time in the format returned by the C `ctime'
+function.
+.IP %T\fIk\fP
+File's last modification time in the format specified by \fIk\fR, 
+which is the same as for %A.
+.IP %u
+File's user name, or numeric user ID if the user has no name.
+.IP %U
+File's numeric user ID.
+.PP
+A `%' character followed by any other character is discarded (but the
+other character is printed).
+.RE
+.IP \-prune
+If \-depth is not given, true; do not descend the current directory.
+.br
+If \-depth is given, false; no effect.
+.IP \-ls
+True; list current file in `ls \-dils' format on standard output.
+The block counts are of 1K blocks, unless the environment variable
+POSIXLY_CORRECT is set, in which case 512-byte blocks are used.
+.SS OPERATORS
+.P
+Listed in order of decreasing precedence:
+.IP "( \fIexpr\fR )"
+Force precedence.
+.IP "! \fIexpr\fR"
+True if \fIexpr\fR is false.
+.IP "\-not \fIexpr\fR"
+Same as ! \fIexpr\fR.
+.IP "\fIexpr1 expr2\fR"
+And (implied); \fIexpr2\fR is not evaluated if \fIexpr1\fR is false.
+.IP "\fIexpr1\fR \-a \fIexpr2\fR"
+Same as \fIexpr1 expr2\fR.
+.IP "\fIexpr1\fR \-and \fIexpr2\fR"
+Same as \fIexpr1 expr2\fR.
+.IP "\fIexpr1\fR \-o \fIexpr2\fR"
+Or; \fIexpr2\fR is not evaluated if \fIexpr1\fR is true.
+.IP "\fIexpr1\fR \-or \fIexpr2\fR"
+Same as \fIexpr1\fR \-o \fIexpr2\fR.
+.IP "\fIexpr1\fR , \fIexpr2\fR"
+List; both \fIexpr1\fR and \fIexpr2\fR are always evaluated.
+The value of \fIexpr1\fR is discarded; the value of the list is the
+value of \fIexpr2\fR.
+.SH "SEE ALSO"
+\fBlocate\fP(1L), \fBlocatedb\fP(5L), \fBupdatedb\fP(1L), \fBxargs\fP(1L)
+\fBFinding Files\fP (on-line in Info, or printed)
diff --git a/raw/man1/findsmb.1 b/raw/man1/findsmb.1
new file mode 100644
index 0000000..bd9ba62
--- /dev/null
+++ b/raw/man1/findsmb.1
@@ -0,0 +1,95 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "FINDSMB" 1 "" "" ""
+.SH NAME
+findsmb \- list info about machines that respond to SMB name queries on a subnet
+.SH "SYNOPSIS"
+
+.nf
+\fBfindsmb\fR [subnet broadcast address]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This perl script is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBfindsmb\fR is a perl script that prints out several pieces of information about machines on a subnet that respond to SMB name query requests\&. It uses \fBnmblookup\fR(1) and \fBsmbclient\fR(1) to obtain this information\&.
+
+.SH "OPTIONS"
+
+.TP
+-r
+Controls whether \fBfindsmb\fR takes bugs in Windows95 into account when trying to find a Netbios name registered of the remote machine\&. This option is disabled by default because it is specific to Windows 95 and Windows 95 machines only\&. If set, \fBnmblookup\fR(1) will be called with \fB-B\fR option\&.
+
+
+.TP
+subnet broadcast address
+Without this option, \fBfindsmb \fR will probe the subnet of the machine where \fBfindsmb\fR(1) is run\&. This value is passed to \fBnmblookup\fR(1) as part of the \fB-B\fR option\&.
+
+
+.SH "EXAMPLES"
+
+.PP
+The output of \fBfindsmb\fR lists the following information for all machines that respond to the initial\fBnmblookup\fR for any name: IP address, NetBIOS name, Workgroup name, operating system, and SMB server version\&.
+
+.PP
+There will be a '+' in front of the workgroup name for machines that are local master browsers for that workgroup\&. There will be an '*' in front of the workgroup name for machines that are the domain master browser for that workgroup\&. Machines that are running Windows, Windows 95 or Windows 98 will not show any information about the operating system or server version\&.
+
+.PP
+The command with \fB-r\fR option must be run on a system without \fBnmbd\fR(8)running\&. If \fBnmbd\fR is running on the system, you will only get the IP address and the DNS name of the machine\&. To get proper responses from Windows 95 and Windows 98 machines, the command must be run as root and with \fB-r\fR option on a machine without \fBnmbd\fR running\&.
+
+.PP
+For example, running \fBfindsmb\fR without \fB-r\fR option set would yield output similar to the following
+.nf
+
+IP ADDR         NETBIOS NAME   WORKGROUP/OS/VERSION 
+--------------------------------------------------------------------- 
+192\&.168\&.35\&.10   MINESET-TEST1  [DMVENGR]
+192\&.168\&.35\&.55   LINUXBOX      *[MYGROUP] [Unix] [Samba 2\&.0\&.6]
+192\&.168\&.35\&.56   HERBNT2        [HERB-NT]
+192\&.168\&.35\&.63   GANDALF        [MVENGR] [Unix] [Samba 2\&.0\&.5a for IRIX]
+192\&.168\&.35\&.65   SAUNA          [WORKGROUP] [Unix] [Samba 1\&.9\&.18p10]
+192\&.168\&.35\&.71   FROGSTAR       [ENGR] [Unix] [Samba 2\&.0\&.0 for IRIX]
+192\&.168\&.35\&.78   HERBDHCP1     +[HERB]
+192\&.168\&.35\&.88   SCNT2         +[MVENGR] [Windows NT 4\&.0] [NT LAN Manager 4\&.0]
+192\&.168\&.35\&.93   FROGSTAR-PC    [MVENGR] [Windows 5\&.0] [Windows 2000 LAN Manager]
+192\&.168\&.35\&.97   HERBNT1       *[HERB-NT] [Windows NT 4\&.0] [NT LAN Manager 4\&.0]
+.fi
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBnmbd\fR(8),\fBsmbclient\fR(1), and \fBnmblookup\fR(1) 
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/finger.1 b/raw/man1/finger.1
new file mode 100644
index 0000000..9663258
--- /dev/null
+++ b/raw/man1/finger.1
@@ -0,0 +1,193 @@
+.\" Copyright (c) 1989, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)finger.1	6.14 (Berkeley) 7/27/91
+.\"
+.Dd August 15, 1999
+.Dt FINGER 1
+.Os "Linux NetKit (0.17)"
+.Sh NAME
+.Nm finger
+.Nd user information lookup program
+.Sh SYNOPSIS
+.Nm finger
+.Op Fl lmsp
+.Op Ar user ...
+.Op Ar user at host ...
+.Sh DESCRIPTION
+The
+.Nm finger
+displays information about the system users.
+.Pp
+Options are:
+.Bl -tag -width flag
+.It Fl s
+.Nm Finger
+displays the user's login name, real name, terminal name and write
+status (as a ``*'' after the terminal name if write permission is
+denied), idle time, login time, office location and office phone
+number.
+.Pp
+Login time is displayed as month, day, hours and minutes, unless
+more than six months ago, in which case the year is displayed rather
+than the hours and minutes.
+.Pp
+Unknown devices as well as nonexistent idle and login times are
+displayed as single asterisks.
+.Pp
+.It Fl l
+Produces a multi-line format displaying all of the information
+described for the
+.Fl s
+option as well as the user's home directory, home phone number, login
+shell, mail status, and the contents of the files
+.Dq Pa .plan ,
+.Dq Pa .project ,
+.Dq Pa .pgpkey
+and
+.Dq Pa .forward
+from the user's home directory.
+.Pp
+Phone numbers specified as eleven digits are printed as ``+N-NNN-NNN-NNNN''.
+Numbers specified as ten or seven digits are printed as the appropriate
+subset of that string.
+Numbers specified as five digits are printed as ``xN-NNNN''.
+Numbers specified as four digits are printed as ``xNNNN''.
+.Pp
+If write permission is denied to the device, the phrase ``(messages off)''
+is appended to the line containing the device name.
+One entry per user is displayed with the
+.Fl l
+option; if a user is logged on multiple times, terminal information
+is repeated once per login.
+.Pp
+Mail status is shown as ``No Mail.'' if there is no mail at all,
+``Mail last read DDD MMM ## HH:MM YYYY (TZ)'' if the person has looked
+at their mailbox since new mail arriving, or ``New mail received ...'',
+``  Unread since ...'' if they have new mail.
+.Pp
+.It Fl p
+Prevents
+the
+.Fl l
+option of
+.Nm finger
+from displaying the contents of the
+.Dq Pa .plan ,
+.Dq Pa .project
+and
+.Dq Pa .pgpkey
+files.
+.It Fl m
+Prevent matching of
+.Ar user
+names.
+.Ar User
+is usually a login name; however, matching will also be done on the
+users' real names, unless the
+.Fl m
+option is supplied.
+All name matching performed by
+.Nm finger
+is case insensitive.
+.El
+.Pp
+If no options are specified,
+.Nm finger
+defaults to the
+.Fl l
+style output if operands are provided, otherwise to the
+.Fl s
+style.
+Note that some fields may be missing, in either format, if information
+is not available for them.
+.Pp
+If no arguments are specified,
+.Nm finger
+will print an entry for each user currently logged into the system.
+.Pp
+.Nm Finger
+may be used to look up users on a remote machine.
+The format is to specify a
+.Ar user
+as
+.Dq Li user at host ,
+or
+.Dq Li @host ,
+where the default output
+format for the former is the
+.Fl l
+style, and the default output format for the latter is the
+.Fl s
+style.
+The
+.Fl l
+option is the only option that may be passed to a remote machine.
+.Pp
+If standard output is a socket, 
+.Nm finger
+will emit a carriage return (^M) before every linefeed (^J). This is
+for processing remote finger requests when invoked by
+.Xr fingerd 8 .
+.Sh FILES
+.Bl -tag -width mmmmmmmmmmmmmmm
+.It Pa ~/.nofinger
+If finger finds this file in a user's home directory, it will, for
+finger requests originating outside the local host, firmly deny the
+existence of that user.  For this to work, the finger program, as
+started by
+.Xr fingerd 8 ,
+must be able to see the
+.Pa .nofinger
+file. This generally means that the home directory containing the file
+must have the other-users-execute bit set (o+x). See
+.Xr chmod 1 .
+If you use this feature for privacy, please test it with ``finger
+ at localhost'' before relying on it, just in case.
+.It ~/.plan
+.It ~/.project
+.It ~/.pgpkey
+These files are printed as part of a long-format request. The
+.Pa .project
+file is limited to one line; the
+.Pa .plan
+file may be arbitrarily long.
+.El
+.Sh SEE ALSO
+.Xr chfn 1 ,
+.Xr passwd 1 ,
+.Xr w 1 ,
+.Xr who 1
+.Sh HISTORY
+The
+.Nm finger
+command appeared in
+.Bx 3.0 .
diff --git a/raw/man1/fmt.1 b/raw/man1/fmt.1
new file mode 100644
index 0000000..52504ea
--- /dev/null
+++ b/raw/man1/fmt.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH FMT "1" "October 2003" "fmt (coreutils) 5.0" FSF
+.SH NAME
+fmt \- simple optimal text formatter
+.SH SYNOPSIS
+.B fmt
+[\fI-DIGITS\fR] [\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Reformat each paragraph in the FILE(s), writing to standard output.
+If no FILE or if FILE is `-', read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-c\fR, \fB\-\-crown\-margin\fR
+preserve indentation of first two lines
+.TP
+\fB\-p\fR, \fB\-\-prefix\fR=\fISTRING\fR
+combine only lines having STRING as prefix
+.TP
+\fB\-s\fR, \fB\-\-split\-only\fR
+split long lines, but do not refill
+.TP
+\fB\-t\fR, \fB\-\-tagged\-paragraph\fR
+indentation of first line different from second
+.TP
+\fB\-u\fR, \fB\-\-uniform\-spacing\fR
+one space between words, two after sentences
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fINUMBER\fR
+maximum line width (default of 75 columns)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+In \fB\-wNUMBER\fR, the letter `w' may be omitted.
+.SH AUTHOR
+Written by Ross Paterson.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B fmt
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B fmt
+programs are properly installed at your site, the command
+.IP
+.B info fmt
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/fold.1 b/raw/man1/fold.1
new file mode 100644
index 0000000..2ee36ec
--- /dev/null
+++ b/raw/man1/fold.1
@@ -0,0 +1,53 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH FOLD "1" "October 2003" "fold (coreutils) 5.0" FSF
+.SH NAME
+fold \- wrap each input line to fit in specified width
+.SH SYNOPSIS
+.B fold
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Wrap input lines in each FILE (standard input by default), writing to
+standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR
+count bytes rather than columns
+.TP
+\fB\-c\fR, \fB\-\-characters\fR
+count characters rather than columns
+.TP
+\fB\-s\fR, \fB\-\-spaces\fR
+break at spaces
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fIWIDTH\fR
+use WIDTH columns instead of 80
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B fold
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B fold
+programs are properly installed at your site, the command
+.IP
+.B info fold
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/free.1 b/raw/man1/free.1
new file mode 100644
index 0000000..56e090c
--- /dev/null
+++ b/raw/man1/free.1
@@ -0,0 +1,78 @@
+.\" free.1 - manpage for the free(1) utility, part of procps
+.\"
+.\" Copyright (C) 2003 Robert Love
+.\" Licensed under the terms of the GNU General Public License, v2
+.TH FREE 1 "10 Aug 2003" "Linux" "Linux User's Manual"
+.SH NAME
+free \- display information about free and used memory on the system
+
+.SH SYNOPSIS
+.BI "free [\-b|-k|-m|-g] [\-l] [\-o] [\-t] [\-s " delay " ] [\-c " count " ]
+
+.SH DESCRIPTION
+.BR free (1)
+displays the total amount of free and used physical memory and swap space in
+the system, as well as the buffers and cache consumed by the kernel.
+
+.SH OPTIONS
+Normal invocation of 
+.BR free (1)
+does not require any options.  The output, however, can be fine-tuned by
+specifying one or more of the following flags:
+.TP
+.B \-b, \-\^\-bytes
+Display output in bytes.
+.TP
+.B \-k, \-\^\-kb
+Display output in kilobytes (KB).  This is the default.
+.TP
+.B \-m, \-\^\-mb
+Display output in megabytes (MB).
+.TP
+.B \-g, \-\^\-gb
+Display output in gigabytes (GB).
+.TP
+.B \-l, \-\^\-lowhigh
+Display detailed information about low vs. high memory usage.
+.TP
+.B \-o, \-\^\-old
+Use old format.  Specifically, do not display -/+ buffers/cache.
+.TP
+.B \-t, \-\^\-total
+Display total summary for physical memory + swap space.
+.TP
+.BI \-c " n" ", \-\^\-count=" n
+Display statistics
+.I n
+times, then exit.  Used in conjunction with the
+.I -s
+flag.  Default is to display only once, unless
+.I -s
+was specified, in which case default is to repeat until interrupted.
+.TP
+.BI \-s " n" ", \-\^\-repeat=" n
+Repeat, pausing every
+.I n
+seconds in-between.
+.TP
+.B \-V, \-\^\-version
+Display version information and exit.
+.TP
+.B \-\^\-help
+Display usage information and exit
+
+.SH FILES
+.IR /proc/meminfo " \-\- memory information"
+
+.SH "SEE ALSO"
+.BR ps (1),
+.BR top (1),
+.BR vmstat (1)
+
+.SH AUTHORS
+Written by Robert Love.
+
+The procps package is maintained by Robert Love and was created by Michael
+Johnson.
+
+Send bug reports to <procps-list at redhat.com>.
diff --git a/raw/man1/ftp.1 b/raw/man1/ftp.1
new file mode 100644
index 0000000..b8fe29b
--- /dev/null
+++ b/raw/man1/ftp.1
@@ -0,0 +1,1053 @@
+.\" Copyright (c) 1985, 1989, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)ftp.1	6.18 (Berkeley) 7/30/91
+.\"
+.Dd August 15, 1999
+.Dt FTP 1
+.Os "Linux NetKit (0.17)"
+.Sh NAME
+.Nm ftp
+.Nd
+.Tn Internet
+file transfer program
+.Sh SYNOPSIS
+.Nm ftp
+.Op Fl pinegvd
+.Op Ar host
+.Nm pftp
+.Op Fl inegvd
+.Op Ar host
+.Sh DESCRIPTION
+.Nm Ftp
+is the user interface to the
+.Tn Internet
+standard File Transfer Protocol.
+The program allows a user to transfer files to and from a
+remote network site.
+.Pp
+Options may be specified at the command line, or to the
+command interpreter.
+.Bl -tag -width flag
+.It Fl p
+Use passive mode for data transfers. Allows use of ftp in environments
+where a firewall prevents connections from the outside world back to
+the client machine. Requires that the ftp server support the PASV
+command. This is the default now for
+.Nm all
+clients (ftp and pftp) due to security concerns using the PORT transfer mode.
+The flag is kept for compatibility only and has no effect anymore.
+.It Fl i
+Turns off interactive prompting during multiple file transfers.
+.It Fl n
+Restrains
+.Nm ftp
+from attempting \*(Lqauto-login\*(Rq upon initial connection.
+If auto-login is enabled,
+.Nm ftp
+will check the
+.Pa .netrc
+(see 
+.Xr netrc 5) 
+file in the user's home directory for an entry describing
+an account on the remote machine.
+If no entry exists,
+.Nm ftp
+will prompt for the remote machine login name (default is the user
+identity on the local machine), and, if necessary, prompt for a password
+and an account with which to login.
+.It Fl e
+Disables command editing and history support, if it was compiled into
+the
+.Nm ftp
+executable. Otherwise, does nothing.
+.It Fl g
+Disables file name globbing.
+.It Fl v
+Verbose option forces
+.Nm ftp
+to show all responses from the remote server, as well
+as report on data transfer statistics.
+.It Fl d
+Enables debugging.
+.El
+.Pp
+The client host with which
+.Nm ftp
+is to communicate may be specified on the command line.
+If this is done,
+.Nm ftp
+will immediately attempt to establish a connection to an
+.Tn FTP
+server on that host; otherwise,
+.Nm ftp
+will enter its command interpreter and await instructions
+from the user.
+When
+.Nm ftp
+is awaiting commands from the user the prompt
+.Ql ftp>
+is provided to the user.
+The following commands are recognized
+by
+.Nm ftp  :
+.Bl -tag -width Fl
+.It Ic \&! Op Ar command Op Ar args
+Invoke an interactive shell on the local machine.
+If there are arguments, the first is taken to be a command to execute
+directly, with the rest of the arguments as its arguments.
+.It Ic \&$ Ar macro-name Op Ar args
+Execute the macro
+.Ar macro-name
+that was defined with the
+.Ic macdef
+command.
+Arguments are passed to the macro unglobbed.
+.It Ic account Op Ar passwd
+Supply a supplemental password required by a remote system for access
+to resources once a login has been successfully completed.
+If no argument is included, the user will be prompted for an account
+password in a non-echoing input mode.
+.It Ic append Ar local-file Op Ar remote-file
+Append a local file to a file on the remote machine.
+If
+.Ar remote-file
+is left unspecified, the local file name is used in naming the
+remote file after being altered by any
+.Ic ntrans
+or
+.Ic nmap
+setting.
+File transfer uses the current settings for
+.Ic type  ,
+.Ic format ,
+.Ic mode  ,
+and
+.Ic structure .
+.It Ic ascii
+Set the file transfer
+.Ic type
+to network
+.Tn ASCII .
+This is the default type.
+.It Ic bell
+Arrange that a bell be sounded after each file transfer
+command is completed.
+.It Ic binary
+Set the file transfer
+.Ic type
+to support binary image transfer.
+.It Ic bye
+Terminate the
+.Tn FTP
+session with the remote server
+and exit
+.Nm ftp  .
+An end of file will also terminate the session and exit.
+.It Ic case
+Toggle remote computer file name case mapping during
+.Ic mget
+commands.
+When
+.Ic case
+is on (default is off), remote computer file names with all letters in
+upper case are written in the local directory with the letters mapped
+to lower case.
+.It Ic \&cd Ar remote-directory
+Change the working directory on the remote machine
+to
+.Ar remote-directory  .
+.It Ic cdup
+Change the remote machine working directory to the parent of the
+current remote machine working directory.
+.It Ic chmod Ar mode file-name
+Change the permission modes of the file
+.Ar file-name
+on the remote
+sytem to
+.Ar mode  .
+.It Ic close
+Terminate the
+.Tn FTP
+session with the remote server, and
+return to the command interpreter.
+Any defined macros are erased.
+.It Ic \&cr
+Toggle carriage return stripping during
+ascii type file retrieval.
+Records are denoted by a carriage return/linefeed sequence
+during ascii type file transfer.
+When
+.Ic \&cr
+is on (the default), carriage returns are stripped from this
+sequence to conform with the
+.Ux
+single linefeed record
+delimiter.
+Records on
+.Pf non\- Ns Ux
+remote systems may contain single linefeeds;
+when an ascii type transfer is made, these linefeeds may be
+distinguished from a record delimiter only when
+.Ic \&cr
+is off.
+.It Ic delete Ar remote-file
+Delete the file
+.Ar remote-file
+on the remote machine.
+.It Ic debug Op Ar debug-value
+Toggle debugging mode.
+If an optional
+.Ar debug-value
+is specified it is used to set the debugging level.
+When debugging is on,
+.Nm ftp
+prints each command sent to the remote machine, preceded
+by the string
+.Ql \-\->
+.It Xo
+.Ic dir
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+Print a listing of the directory contents in the
+directory,
+.Ar remote-directory  ,
+and, optionally, placing the output in
+.Ar local-file  .
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic dir
+output.
+If no directory is specified, the current working
+directory on the remote machine is used.
+If no local
+file is specified, or
+.Ar local-file
+is
+.Fl  ,
+output comes to the terminal.
+.It Ic disconnect
+A synonym for
+.Ar close  .
+.It Ic form Ar format
+Set the file transfer
+.Ic form
+to
+.Ar format  .
+The default format is \*(Lqfile\*(Rq.
+.It Ic get Ar remote-file Op Ar local-file
+Retrieve the
+.Ar remote-file
+and store it on the local machine.
+If the local
+file name is not specified, it is given the same
+name it has on the remote machine, subject to
+alteration by the current
+.Ic case  ,
+.Ic ntrans ,
+and
+.Ic nmap
+settings.
+The current settings for
+.Ic type  ,
+.Ic form ,
+.Ic mode  ,
+and
+.Ic structure
+are used while transferring the file.
+.It Ic glob
+Toggle filename expansion for
+.Ic mdelete  ,
+.Ic mget
+and
+.Ic mput  .
+If globbing is turned off with
+.Ic glob  ,
+the file name arguments
+are taken literally and not expanded.
+Globbing for
+.Ic mput
+is done as in
+.Xr csh 1 .
+For
+.Ic mdelete
+and
+.Ic mget  ,
+each remote file name is expanded
+separately on the remote machine and the lists are not merged.
+Expansion of a directory name is likely to be
+different from expansion of the name of an ordinary file:
+the exact result depends on the foreign operating system and ftp server,
+and can be previewed by doing
+.Ql mls remote-files \-
+Note:
+.Ic mget
+and
+.Ic mput
+are not meant to transfer
+entire directory subtrees of files.
+That can be done by
+transferring a
+.Xr tar 1
+archive of the subtree (in binary mode).
+.It Ic hash
+Toggle hash-sign (``#'') printing for each data block
+transferred.
+The size of a data block is 1024 bytes.
+.It Ic help Op Ar command
+Print an informative message about the meaning of
+.Ar command  .
+If no argument is given,
+.Nm ftp
+prints a list of the known commands.
+.It Ic idle Op Ar seconds
+Set the inactivity timer on the remote server to
+.Ar seconds
+seconds.
+If
+.Ar seconds
+is ommitted, the current inactivity timer is printed.
+.It Ic lcd Op Ar directory
+Change the working directory on the local machine.
+If
+no
+.Ar directory
+is specified, the user's home directory is used.
+.It Xo
+.Ic \&ls
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+Print a listing of the contents of a
+directory on the remote machine.
+The listing includes any system-dependent information that the server
+chooses to include; for example, most
+.Ux
+systems will produce
+output from the command
+.Ql ls \-l .
+(See also
+.Ic nlist . )
+If
+.Ar remote-directory
+is left unspecified, the current working directory is used.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic \&ls
+output.
+If no local file is specified, or if
+.Ar local-file
+is
+.Sq Fl ,
+the output is sent to the terminal.
+.It Ic macdef Ar macro-name
+Define a macro.
+Subsequent lines are stored as the macro
+.Ar macro-name  ;
+a null line (consecutive newline characters
+in a file or
+carriage returns from the terminal) terminates macro input mode.
+There is a limit of 16 macros and 4096 total characters in all
+defined macros.
+Macros remain defined until a
+.Ic close
+command is executed.
+The macro processor interprets `$' and `\e' as special characters.
+A `$' followed by a number (or numbers) is replaced by the
+corresponding argument on the macro invocation command line.
+A `$' followed by an `i' signals that macro processor that the
+executing macro is to be looped.
+On the first pass `$i' is
+replaced by the first argument on the macro invocation command line,
+on the second pass it is replaced by the second argument, and so on.
+A `\e' followed by any character is replaced by that character.
+Use the `\e' to prevent special treatment of the `$'.
+.It Ic mdelete Op Ar remote-files
+Delete the
+.Ar remote-files
+on the remote machine.
+.It Ic mdir Ar remote-files local-file
+Like
+.Ic dir  ,
+except multiple remote files may be specified.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic mdir
+output.
+.It Ic mget Ar remote-files
+Expand the
+.Ar remote-files
+on the remote machine
+and do a
+.Ic get
+for each file name thus produced.
+See
+.Ic glob
+for details on the filename expansion.
+Resulting file names will then be processed according to
+.Ic case  ,
+.Ic ntrans ,
+and
+.Ic nmap
+settings.
+Files are transferred into the local working directory,
+which can be changed with
+.Ql lcd directory ;
+new local directories can be created with
+.Ql "\&! mkdir directory" .
+.It Ic mkdir Ar directory-name
+Make a directory on the remote machine.
+.It Ic mls Ar remote-files local-file
+Like
+.Ic nlist  ,
+except multiple remote files may be specified,
+and the
+.Ar local-file
+must be specified.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic mls
+output.
+.It Ic mode Op Ar mode-name
+Set the file transfer
+.Ic mode
+to
+.Ar mode-name  .
+The default mode is \*(Lqstream\*(Rq mode.
+.It Ic modtime Ar file-name
+Show the last modification time of the file on the remote machine.
+.It Ic mput Ar local-files
+Expand wild cards in the list of local files given as arguments
+and do a
+.Ic put
+for each file in the resulting list.
+See
+.Ic glob
+for details of filename expansion.
+Resulting file names will then be processed according to
+.Ic ntrans
+and
+.Ic nmap
+settings.
+.It Ic newer Ar file-name Op Ar local-file
+Get the file only if the modification time of the remote file is more
+recent that the file on the current system.
+If the file does not
+exist on the current system, the remote file is considered
+.Ic newer  .
+Otherwise, this command is identical to
+.Ar get  .
+.It Xo
+.Ic nlist
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+Print a  list of the files in a
+directory on the remote machine.
+If
+.Ar remote-directory
+is left unspecified, the current working directory is used.
+If interactive prompting is on,
+.Nm ftp
+will prompt the user to verify that the last argument is indeed the
+target local file for receiving
+.Ic nlist
+output.
+If no local file is specified, or if
+.Ar local-file
+is
+.Fl  ,
+the output is sent to the terminal.
+.It Ic nmap Op Ar inpattern outpattern
+Set or unset the filename mapping mechanism.
+If no arguments are specified, the filename mapping mechanism is unset.
+If arguments are specified, remote filenames are mapped during
+.Ic mput
+commands and
+.Ic put
+commands issued without a specified remote target filename.
+If arguments are specified, local filenames are mapped during
+.Ic mget
+commands and
+.Ic get
+commands issued without a specified local target filename.
+This command is useful when connecting to a
+.No non\- Ns Ux
+remote computer
+with different file naming conventions or practices.
+The mapping follows the pattern set by
+.Ar inpattern
+and
+.Ar outpattern  .
+.Op Ar Inpattern
+is a template for incoming filenames (which may have already been
+processed according to the
+.Ic ntrans
+and
+.Ic case
+settings).
+Variable templating is accomplished by including the
+sequences `$1', `$2', ..., `$9' in
+.Ar inpattern  .
+Use `\\' to prevent this special treatment of the `$' character.
+All other characters are treated literally, and are used to determine the
+.Ic nmap
+.Op Ar inpattern
+variable values.
+For example, given
+.Ar inpattern
+$1.$2 and the remote file name "mydata.data", $1 would have the value
+"mydata", and $2 would have the value "data".
+The
+.Ar outpattern
+determines the resulting mapped filename.
+The sequences `$1', `$2', ...., `$9' are replaced by any value resulting
+from the
+.Ar inpattern
+template.
+The sequence `$0' is replace by the original filename.
+Additionally, the sequence
+.Ql Op Ar seq1 , Ar seq2
+is replaced by
+.Op Ar seq1
+if
+.Ar seq1
+is not a null string; otherwise it is replaced by
+.Ar seq2 .
+For example, the command
+.Pp
+.Bd -literal -offset indent -compact
+nmap $1.$2.$3 [$1,$2].[$2,file]
+.Ed
+.Pp
+would yield
+the output filename "myfile.data" for input filenames "myfile.data" and
+"myfile.data.old", "myfile.file" for the input filename "myfile", and
+"myfile.myfile" for the input filename ".myfile".
+Spaces may be included in
+.Ar outpattern  ,
+as in the example: `nmap $1 sed "s/  *$//" > $1' .
+Use the `\e' character to prevent special treatment
+of the `$','[','[', and `,' characters.
+.It Ic ntrans Op Ar inchars Op Ar outchars
+Set or unset the filename character translation mechanism.
+If no arguments are specified, the filename character
+translation mechanism is unset.
+If arguments are specified, characters in
+remote filenames are translated during
+.Ic mput
+commands and
+.Ic put
+commands issued without a specified remote target filename.
+If arguments are specified, characters in
+local filenames are translated during
+.Ic mget
+commands and
+.Ic get
+commands issued without a specified local target filename.
+This command is useful when connecting to a
+.No non\- Ns Ux
+remote computer
+with different file naming conventions or practices.
+Characters in a filename matching a character in
+.Ar inchars
+are replaced with the corresponding character in
+.Ar outchars  .
+If the character's position in
+.Ar inchars
+is longer than the length of
+.Ar outchars  ,
+the character is deleted from the file name.
+.It Ic open Ar host Op Ar port
+Establish a connection to the specified
+.Ar host
+.Tn FTP
+server.
+An optional port number may be supplied,
+in which case,
+.Nm ftp
+will attempt to contact an
+.Tn FTP
+server at that port.
+If the
+.Ic auto-login
+option is on (default),
+.Nm ftp
+will also attempt to automatically log the user in to
+the
+.Tn FTP
+server (see below).
+.It Ic prompt
+Toggle interactive prompting.
+Interactive prompting
+occurs during multiple file transfers to allow the
+user to selectively retrieve or store files.
+If prompting is turned off (default is on), any
+.Ic mget
+or
+.Ic mput
+will transfer all files, and any
+.Ic mdelete
+will delete all files.
+.It Ic proxy Ar ftp-command
+Execute an ftp command on a secondary control connection.
+This command allows simultaneous connection to two remote ftp
+servers for transferring files between the two servers.
+The first
+.Ic proxy
+command should be an
+.Ic open  ,
+to establish the secondary control connection.
+Enter the command "proxy ?" to see other ftp commands executable on the
+secondary connection.
+The following commands behave differently when prefaced by
+.Ic proxy  :
+.Ic open
+will not define new macros during the auto-login process,
+.Ic close
+will not erase existing macro definitions,
+.Ic get
+and
+.Ic mget
+transfer files from the host on the primary control connection
+to the host on the secondary control connection, and
+.Ic put  ,
+.Ic mput ,
+and
+.Ic append
+transfer files from the host on the secondary control connection
+to the host on the primary control connection.
+Third party file transfers depend upon support of the ftp protocol
+.Dv PASV
+command by the server on the secondary control connection.
+.It Ic put Ar local-file Op Ar remote-file
+Store a local file on the remote machine.
+If
+.Ar remote-file
+is left unspecified, the local file name is used
+after processing according to any
+.Ic ntrans
+or
+.Ic nmap
+settings
+in naming the remote file.
+File transfer uses the
+current settings for
+.Ic type  ,
+.Ic format ,
+.Ic mode  ,
+and
+.Ic structure  .
+.It Ic pwd
+Print the name of the current working directory on the remote
+machine.
+.It Ic quit
+A synonym for
+.Ic bye  .
+.It Ic quote Ar arg1 arg2 ...
+The arguments specified are sent, verbatim, to the remote
+.Tn FTP
+server.
+.It Ic recv Ar remote-file Op Ar local-file
+A synonym for get.
+.It Ic reget Ar remote-file Op Ar local-file
+Reget acts like get, except that if
+.Ar local-file
+exists and is
+smaller than
+.Ar remote-file  ,
+.Ar local-file
+is presumed to be
+a partially transferred copy of
+.Ar remote-file
+and the transfer
+is continued from the apparent point of failure.
+This command
+is useful when transferring very large files over networks that
+are prone to dropping connections.
+.It Ic remotehelp Op Ar command-name
+Request help from the remote
+.Tn FTP
+server.
+If a
+.Ar command-name
+is specified it is supplied to the server as well.
+.It Ic remotestatus Op Ar file-name
+With no arguments, show status of remote machine.
+If
+.Ar file-name
+is specified, show status of
+.Ar file-name
+on remote machine.
+.It Xo
+.Ic rename
+.Op Ar from
+.Op Ar to
+.Xc
+Rename the file
+.Ar from
+on the remote machine, to the file
+.Ar to  .
+.It Ic reset
+Clear reply queue.
+This command re-synchronizes command/reply sequencing with the remote
+ftp server.
+Resynchronization may be necessary following a violation of the ftp protocol
+by the remote server.
+.It Ic restart Ar marker
+Restart the immediately following
+.Ic get
+or
+.Ic put
+at the
+indicated
+.Ar marker  .
+On
+.Ux
+systems, marker is usually a byte
+offset into the file.
+.It Ic rmdir Ar directory-name
+Delete a directory on the remote machine.
+.It Ic runique
+Toggle storing of files on the local system with unique filenames.
+If a file already exists with a name equal to the target
+local filename for a
+.Ic get
+or
+.Ic mget
+command, a ".1" is appended to the name.
+If the resulting name matches another existing file,
+a ".2" is appended to the original name.
+If this process continues up to ".99", an error
+message is printed, and the transfer does not take place.
+The generated unique filename will be reported.
+Note that
+.Ic runique
+will not affect local files generated from a shell command
+(see below).
+The default value is off.
+.It Ic send Ar local-file Op Ar remote-file
+A synonym for put.
+.It Ic sendport
+Toggle the use of
+.Dv PORT
+commands.
+By default,
+.Nm ftp
+will attempt to use a
+.Dv PORT
+command when establishing
+a connection for each data transfer.
+The use of
+.Dv PORT
+commands can prevent delays
+when performing multiple file transfers.
+If the
+.Dv PORT
+command fails,
+.Nm ftp
+will use the default data port.
+When the use of
+.Dv PORT
+commands is disabled, no attempt will be made to use
+.Dv PORT
+commands for each data transfer.
+This is useful
+for certain
+.Tn FTP
+implementations which do ignore
+.Dv PORT
+commands but, incorrectly, indicate they've been accepted.
+.It Ic site Ar arg1 arg2 ...
+The arguments specified are sent, verbatim, to the remote
+.Tn FTP
+server as a
+.Dv SITE
+command.
+.It Ic size Ar file-name
+Return size of
+.Ar file-name
+on remote machine.
+.It Ic status
+Show the current status of
+.Nm ftp  .
+.It Ic struct Op Ar struct-name
+Set the file transfer
+.Ar structure
+to
+.Ar struct-name .
+By default \*(Lqstream\*(Rq structure is used.
+.It Ic sunique
+Toggle storing of files on remote machine under unique file names.
+Remote ftp server must support ftp protocol
+.Dv STOU
+command for
+successful completion.
+The remote server will report unique name.
+Default value is off.
+.It Ic system
+Show the type of operating system running on the remote machine.
+.It Ic tenex
+Set the file transfer type to that needed to
+talk to
+.Tn TENEX
+machines.
+.It Ic trace
+Toggle packet tracing.
+.It Ic type Op Ar type-name
+Set the file transfer
+.Ic type
+to
+.Ar type-name  .
+If no type is specified, the current type
+is printed.
+The default type is network
+.Tn ASCII .
+.It Ic umask Op Ar newmask
+Set the default umask on the remote server to
+.Ar newmask  .
+If
+.Ar newmask
+is ommitted, the current umask is printed.
+.It Xo
+.Ic user Ar user-name
+.Op Ar password
+.Op Ar account
+.Xc
+Identify yourself to the remote
+.Tn FTP
+server.
+If the
+.Ar password
+is not specified and the server requires it,
+.Nm ftp
+will prompt the user for it (after disabling local echo).
+If an
+.Ar account
+field is not specified, and the
+.Tn FTP
+server
+requires it, the user will be prompted for it.
+If an
+.Ar account
+field is specified, an account command will
+be relayed to the remote server after the login sequence
+is completed if the remote server did not require it
+for logging in.
+Unless
+.Nm ftp
+is invoked with \*(Lqauto-login\*(Rq disabled, this
+process is done automatically on initial connection to
+the
+.Tn FTP
+server.
+.It Ic verbose
+Toggle verbose mode.
+In verbose mode, all responses from
+the
+.Tn FTP
+server are displayed to the user.
+In addition,
+if verbose is on, when a file transfer completes, statistics
+regarding the efficiency of the transfer are reported.
+By default,
+verbose is on.
+.It Ic ? Op Ar command
+A synonym for help.
+.El
+.Pp
+Command arguments which have embedded spaces may be quoted with
+quote `"' marks.
+.Sh ABORTING A FILE TRANSFER
+To abort a file transfer, use the terminal interrupt key
+(usually Ctrl-C).
+Sending transfers will be immediately halted.
+Receiving transfers will be halted by sending a ftp protocol
+.Dv ABOR
+command to the remote server, and discarding any further data received.
+The speed at which this is accomplished depends upon the remote
+server's support for
+.Dv ABOR
+processing.
+If the remote server does not support the
+.Dv ABOR
+command, an
+.Ql ftp>
+prompt will not appear until the remote server has completed
+sending the requested file.
+.Pp
+The terminal interrupt key sequence will be ignored when
+.Nm ftp
+has completed any local processing and is awaiting a reply
+from the remote server.
+A long delay in this mode may result from the ABOR processing described
+above, or from unexpected behavior by the remote server, including
+violations of the ftp protocol.
+If the delay results from unexpected remote server behavior, the local
+.Nm ftp
+program must be killed by hand.
+.Sh FILE NAMING CONVENTIONS
+Files specified as arguments to
+.Nm ftp
+commands are processed according to the following rules.
+.Bl -enum
+.It
+If the file name
+.Sq Fl
+is specified, the
+.Ar stdin
+(for reading) or
+.Ar stdout
+(for writing) is used.
+.It
+If the first character of the file name is
+.Sq \&| ,
+the
+remainder of the argument is interpreted as a shell command.
+.Nm Ftp
+then forks a shell, using
+.Xr popen 3
+with the argument supplied, and reads (writes) from the stdout
+(stdin).
+If the shell command includes spaces, the argument
+must be quoted; e.g.
+\*(Lq" ls -lt"\*(Rq.
+A particularly
+useful example of this mechanism is: \*(Lqdir more\*(Rq.
+.It
+Failing the above checks, if ``globbing'' is enabled,
+local file names are expanded
+according to the rules used in the
+.Xr csh  1  ;
+c.f. the
+.Ic glob
+command.
+If the
+.Nm ftp
+command expects a single local file (.e.g.
+.Ic put  ) ,
+only the first filename generated by the "globbing" operation is used.
+.It
+For
+.Ic mget
+commands and
+.Ic get
+commands with unspecified local file names, the local filename is
+the remote filename, which may be altered by a
+.Ic case  ,
+.Ic ntrans ,
+or
+.Ic nmap
+setting.
+The resulting filename may then be altered if
+.Ic runique
+is on.
+.It
+For
+.Ic mput
+commands and
+.Ic put
+commands with unspecified remote file names, the remote filename is
+the local filename, which may be altered by a
+.Ic ntrans
+or
+.Ic nmap
+setting.
+The resulting filename may then be altered by the remote server if
+.Ic sunique
+is on.
+.El
+.Sh FILE TRANSFER PARAMETERS
+The FTP specification specifies many parameters which may
+affect a file transfer.
+The
+.Ic type
+may be one of \*(Lqascii\*(Rq, \*(Lqimage\*(Rq (binary),
+\*(Lqebcdic\*(Rq, and \*(Lqlocal byte size\*(Rq (for
+.Tn PDP Ns -10's
+and
+.Tn PDP Ns -20's
+mostly).
+.Nm Ftp
+supports the ascii and image types of file transfer,
+plus local byte size 8 for
+.Ic tenex
+mode transfers.
+.Pp
+.Nm Ftp
+supports only the default values for the remaining
+file transfer parameters:
+.Ic mode  ,
+.Ic form ,
+and
+.Ic struct  .
+.Sh ENVIRONMENT
+.Nm Ftp
+utilizes the following environment variables.
+.Bl -tag -width Fl
+.It Ev HOME
+For default location of a
+.Pa .netrc
+file, if one exists.
+.It Ev SHELL
+For default shell.
+.El
+.Sh SEE ALSO
+.Xr ftpd 8 ,
+RFC 959
+.Sh HISTORY
+The
+.Nm ftp
+command appeared in
+.Bx 4.2 .
+.Sh BUGS
+Correct execution of many commands depends upon proper behavior
+by the remote server.
+.Pp
+An error in the treatment of carriage returns
+in the
+.Bx 4.2
+ascii-mode transfer code
+has been corrected.
+This correction may result in incorrect transfers of binary files
+to and from
+.Bx 4.2
+servers using the ascii type.
+Avoid this problem by using the binary image type.
diff --git a/raw/man1/gcc.1 b/raw/man1/gcc.1
new file mode 100644
index 0000000..8569a70
--- /dev/null
+++ b/raw/man1/gcc.1
@@ -0,0 +1,10237 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "GCC 1"
+.TH GCC 1 "2003-10-23" "gcc-3.3.2" "GNU"
+.SH "NAME"
+gcc \- GNU project C and C++ compiler
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
+    [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
+    [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR]
+    [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
+    [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
+    [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...]
+    [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR...
+.PP
+Only the most useful options are listed here; see below for the
+remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+When you invoke \s-1GCC\s0, it normally does preprocessing, compilation,
+assembly and linking.  The ``overall options'' allow you to stop this
+process at an intermediate stage.  For example, the \fB\-c\fR option
+says not to run the linker.  Then the output consists of object files
+output by the assembler.
+.PP
+Other options are passed on to one stage of processing.  Some options
+control the preprocessor and others the compiler itself.  Yet other
+options control the assembler and linker; most of these are not
+documented here, since you rarely need to use any of them.
+.PP
+Most of the command line options that you can use with \s-1GCC\s0 are useful
+for C programs; when an option is only useful with another language
+(usually \*(C+), the explanation says so explicitly.  If the description
+for a particular option does not mention a source language, you can use
+that option with all supported languages.
+.PP
+The \fBgcc\fR program accepts options and file names as operands.  Many
+options have multi-letter names; therefore multiple single-letter options
+may \fInot\fR be grouped: \fB\-dr\fR is very different from \fB\-d\ \-r\fR.
+.PP
+You can mix options and other arguments.  For the most part, the order
+you use doesn't matter.  Order does matter when you use several options
+of the same kind; for example, if you specify \fB\-L\fR more than once,
+the directories are searched in the order specified.
+.PP
+Many options have long names starting with \fB\-f\fR or with
+\&\fB\-W\fR\-\-\-for example, \fB\-fforce\-mem\fR,
+\&\fB\-fstrength\-reduce\fR, \fB\-Wformat\fR and so on.  Most of
+these have both positive and negative forms; the negative form of
+\&\fB\-ffoo\fR would be \fB\-fno\-foo\fR.  This manual documents
+only one of these two forms, whichever one is not the default.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.Sh "Option Summary"
+.IX Subsection "Option Summary"
+Here is a summary of all the options, grouped by type.  Explanations are
+in the following sections.
+.IP "\fIOverall Options\fR" 4
+.IX Item "Overall Options"
+\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-pipe  \-pass\-exit\-codes  
+\&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help  \-\-target\-help  \-\-version\fR
+.IP "\fIC Language Options\fR" 4
+.IX Item "C Language Options"
+\&\fB\-ansi  \-std=\fR\fIstandard\fR  \fB\-aux\-info\fR \fIfilename\fR 
+\&\fB\-fno\-asm  \-fno\-builtin  \-fno\-builtin\-\fR\fIfunction\fR 
+\&\fB\-fhosted  \-ffreestanding  \-fms\-extensions 
+\&\-trigraphs  \-no\-integrated\-cpp  \-traditional  \-traditional\-cpp 
+\&\-fallow\-single\-precision  \-fcond\-mismatch 
+\&\-fsigned\-bitfields  \-fsigned\-char 
+\&\-funsigned\-bitfields  \-funsigned\-char 
+\&\-fwritable\-strings\fR
+.IP "\fI\*(C+ Language Options\fR" 4
+.IX Item " Language Options"
+\&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control  \-fcheck\-new 
+\&\-fconserve\-space  \-fno\-const\-strings  \-fdollars\-in\-identifiers 
+\&\-fno\-elide\-constructors 
+\&\-fno\-enforce\-eh\-specs  \-fexternal\-templates 
+\&\-falt\-external\-templates 
+\&\-ffor\-scope  \-fno\-for\-scope  \-fno\-gnu\-keywords 
+\&\-fno\-implicit\-templates 
+\&\-fno\-implicit\-inline\-templates 
+\&\-fno\-implement\-inlines  \-fms\-extensions 
+\&\-fno\-nonansi\-builtins  \-fno\-operator\-names 
+\&\-fno\-optional\-diags  \-fpermissive 
+\&\-frepo  \-fno\-rtti  \-fstats  \-ftemplate\-depth\-\fR\fIn\fR 
+\&\fB\-fuse\-cxa\-atexit  \-fvtable\-gc  \-fno\-weak  \-nostdinc++ 
+\&\-fno\-default\-inline  \-Wabi  \-Wctor\-dtor\-privacy 
+\&\-Wnon\-virtual\-dtor  \-Wreorder 
+\&\-Weffc++  \-Wno\-deprecated 
+\&\-Wno\-non\-template\-friend  \-Wold\-style\-cast 
+\&\-Woverloaded\-virtual  \-Wno\-pmf\-conversions 
+\&\-Wsign\-promo  \-Wsynth\fR
+.IP "\fIObjective-C Language Options\fR" 4
+.IX Item "Objective-C Language Options"
+\&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR 
+\&\fB\-fgnu\-runtime  \-fnext\-runtime  \-gen\-decls 
+\&\-Wno\-protocol  \-Wselector  \-Wundeclared\-selector\fR
+.IP "\fILanguage Independent Options\fR" 4
+.IX Item "Language Independent Options"
+\&\fB\-fmessage\-length=\fR\fIn\fR 
+\&\fB\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR]
+.IP "\fIWarning Options\fR" 4
+.IX Item "Warning Options"
+\&\fB\-fsyntax\-only  \-pedantic  \-pedantic\-errors 
+\&\-w  \-W  \-Wall  \-Waggregate\-return 
+\&\-Wcast\-align  \-Wcast\-qual  \-Wchar\-subscripts  \-Wcomment 
+\&\-Wconversion  \-Wno\-deprecated\-declarations 
+\&\-Wdisabled\-optimization  \-Wno\-div\-by\-zero  \-Werror 
+\&\-Wfloat\-equal  \-Wformat  \-Wformat=2 
+\&\-Wformat\-nonliteral  \-Wformat\-security 
+\&\-Wimplicit  \-Wimplicit\-int  
+\&\-Wimplicit\-function\-declaration 
+\&\-Werror\-implicit\-function\-declaration 
+\&\-Wimport  \-Winline  \-Wno\-endif\-labels 
+\&\-Wlarger\-than\-\fR\fIlen\fR  \fB\-Wlong\-long 
+\&\-Wmain  \-Wmissing\-braces 
+\&\-Wmissing\-format\-attribute  \-Wmissing\-noreturn 
+\&\-Wno\-multichar  \-Wno\-format\-extra\-args  \-Wno\-format\-y2k 
+\&\-Wno\-import  \-Wnonnull  \-Wpacked  \-Wpadded 
+\&\-Wparentheses  \-Wpointer\-arith  \-Wredundant\-decls 
+\&\-Wreturn\-type  \-Wsequence\-point  \-Wshadow 
+\&\-Wsign\-compare  \-Wstrict\-aliasing 
+\&\-Wswitch  \-Wswitch\-default  \-Wswitch\-enum 
+\&\-Wsystem\-headers  \-Wtrigraphs  \-Wundef  \-Wuninitialized 
+\&\-Wunknown\-pragmas  \-Wunreachable\-code 
+\&\-Wunused  \-Wunused\-function  \-Wunused\-label  \-Wunused\-parameter 
+\&\-Wunused\-value  \-Wunused\-variable  \-Wwrite\-strings\fR
+.IP "\fIC\-only Warning Options\fR" 4
+.IX Item "C-only Warning Options"
+\&\fB\-Wbad\-function\-cast  \-Wmissing\-declarations 
+\&\-Wmissing\-prototypes  \-Wnested\-externs 
+\&\-Wstrict\-prototypes  \-Wtraditional 
+\&\-Wdeclaration\-after\-statement\fR
+.IP "\fIDebugging Options\fR" 4
+.IX Item "Debugging Options"
+\&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion 
+\&\-fdump\-unnumbered  \-fdump\-translation\-unit\fR[\fB\-\fR\fIn\fR] 
+\&\fB\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR] 
+\&\fB\-fdump\-tree\-original\fR[\fB\-\fR\fIn\fR]  
+\&\fB\-fdump\-tree\-optimized\fR[\fB\-\fR\fIn\fR] 
+\&\fB\-fdump\-tree\-inlined\fR[\fB\-\fR\fIn\fR] 
+\&\fB\-feliminate\-dwarf2\-dups  \-fmem\-report 
+\&\-fprofile\-arcs  \-frandom\-seed=\fR\fIn\fR 
+\&\fB\-fsched\-verbose=\fR\fIn\fR \fB\-ftest\-coverage  \-ftime\-report 
+\&\-g  \-g\fR\fIlevel\fR  \fB\-gcoff  \-gdwarf  \-gdwarf\-1  \-gdwarf\-1+  \-gdwarf\-2 
+\&\-ggdb  \-gstabs  \-gstabs+  \-gvms  \-gxcoff  \-gxcoff+ 
+\&\-p  \-pg  \-print\-file\-name=\fR\fIlibrary\fR  \fB\-print\-libgcc\-file\-name 
+\&\-print\-multi\-directory  \-print\-multi\-lib 
+\&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q 
+\&\-save\-temps  \-time\fR
+.IP "\fIOptimization Options\fR" 4
+.IX Item "Optimization Options"
+\&\fB\-falign\-functions=\fR\fIn\fR  \fB\-falign\-jumps=\fR\fIn\fR 
+\&\fB\-falign\-labels=\fR\fIn\fR  \fB\-falign\-loops=\fR\fIn\fR  
+\&\fB\-fbranch\-probabilities  \-fcaller\-saves  \-fcprop\-registers 
+\&\-fcse\-follow\-jumps  \-fcse\-skip\-blocks  \-fdata\-sections 
+\&\-fdelayed\-branch  \-fdelete\-null\-pointer\-checks 
+\&\-fexpensive\-optimizations  \-ffast\-math  \-ffloat\-store 
+\&\-fforce\-addr  \-fforce\-mem  \-ffunction\-sections 
+\&\-fgcse  \-fgcse\-lm  \-fgcse\-sm  \-floop\-optimize  \-fcrossjumping 
+\&\-fif\-conversion  \-fif\-conversion2 
+\&\-finline\-functions  \-finline\-limit=\fR\fIn\fR  \fB\-fkeep\-inline\-functions 
+\&\-fkeep\-static\-consts  \-fmerge\-constants  \-fmerge\-all\-constants 
+\&\-fmove\-all\-movables  \-fnew\-ra  \-fno\-branch\-count\-reg 
+\&\-fno\-default\-inline  \-fno\-defer\-pop 
+\&\-fno\-function\-cse  \-fno\-guess\-branch\-probability 
+\&\-fno\-inline  \-fno\-math\-errno  \-fno\-peephole  \-fno\-peephole2 
+\&\-funsafe\-math\-optimizations  \-ffinite\-math\-only 
+\&\-fno\-trapping\-math  \-fno\-zero\-initialized\-in\-bss 
+\&\-fomit\-frame\-pointer  \-foptimize\-register\-move 
+\&\-foptimize\-sibling\-calls  \-fprefetch\-loop\-arrays 
+\&\-freduce\-all\-givs  \-fregmove  \-frename\-registers 
+\&\-freorder\-blocks  \-freorder\-functions 
+\&\-frerun\-cse\-after\-loop  \-frerun\-loop\-opt 
+\&\-fschedule\-insns  \-fschedule\-insns2 
+\&\-fno\-sched\-interblock  \-fno\-sched\-spec  \-fsched\-spec\-load 
+\&\-fsched\-spec\-load\-dangerous  \-fsignaling\-nans 
+\&\-fsingle\-precision\-constant  \-fssa  \-fssa\-ccp  \-fssa\-dce 
+\&\-fstrength\-reduce  \-fstrict\-aliasing  \-ftracer  \-fthread\-jumps 
+\&\-funroll\-all\-loops  \-funroll\-loops  
+\&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR 
+\&\fB\-O  \-O0  \-O1  \-O2  \-O3  \-Os\fR
+.IP "\fIPreprocessor Options\fR" 4
+.IX Item "Preprocessor Options"
+\&\fB\-$  \-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR  
+\&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR] 
+\&\fB\-C  \-dD  \-dI  \-dM  \-dN 
+\&\-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR]  \fB\-E  \-H 
+\&\-idirafter\fR \fIdir\fR 
+\&\fB\-include\fR \fIfile\fR  \fB\-imacros\fR \fIfile\fR 
+\&\fB\-iprefix\fR \fIfile\fR  \fB\-iwithprefix\fR \fIdir\fR 
+\&\fB\-iwithprefixbefore\fR \fIdir\fR  \fB\-isystem\fR \fIdir\fR 
+\&\fB\-M  \-MM  \-MF  \-MG  \-MP  \-MQ  \-MT  \-nostdinc  \-P  \-remap 
+\&\-trigraphs  \-undef  \-U\fR\fImacro\fR  \fB\-Wp,\fR\fIoption\fR
+.IP "\fIAssembler Option\fR" 4
+.IX Item "Assembler Option"
+\&\fB\-Wa,\fR\fIoption\fR
+.IP "\fILinker Options\fR" 4
+.IX Item "Linker Options"
+\&\fIobject-file-name\fR  \fB\-l\fR\fIlibrary\fR 
+\&\fB\-nostartfiles  \-nodefaultlibs  \-nostdlib \-pie 
+\&\-s  \-static  \-static\-libgcc  \-shared  \-shared\-libgcc  \-symbolic 
+\&\-Wl,\fR\fIoption\fR  \fB\-Xlinker\fR \fIoption\fR 
+\&\fB\-u\fR \fIsymbol\fR
+.IP "\fIDirectory Options\fR" 4
+.IX Item "Directory Options"
+\&\fB\-B\fR\fIprefix\fR  \fB\-I\fR\fIdir\fR  \fB\-I\-  \-L\fR\fIdir\fR  \fB\-specs=\fR\fIfile\fR
+.IP "\fITarget Options\fR" 4
+.IX Item "Target Options"
+\&\fB\-V\fR \fIversion\fR  \fB\-b\fR \fImachine\fR
+.IP "\fIMachine Dependent Options\fR" 4
+.IX Item "Machine Dependent Options"
+\&\fIM680x0 Options\fR
+\&\fB\-m68000  \-m68020  \-m68020\-40  \-m68020\-60  \-m68030  \-m68040 
+\&\-m68060  \-mcpu32  \-m5200  \-m68881  \-mbitfield  \-mc68000  \-mc68020   
+\&\-mfpa  \-mnobitfield  \-mrtd  \-mshort  \-msoft\-float  \-mpcrel 
+\&\-malign\-int  \-mstrict\-align\fR
+.Sp
+\&\fIM68hc1x Options\fR
+\&\fB\-m6811  \-m6812  \-m68hc11  \-m68hc12  \-m68hcs12 
+\&\-mauto\-incdec  \-minmax  \-mlong\-calls  \-mshort 
+\&\-msoft\-reg\-count=\fR\fIcount\fR
+.Sp
+\&\fI\s-1VAX\s0 Options\fR
+\&\fB\-mg  \-mgnu  \-munix\fR
+.Sp
+\&\fI\s-1SPARC\s0 Options\fR
+\&\fB\-mcpu=\fR\fIcpu-type\fR 
+\&\fB\-mtune=\fR\fIcpu-type\fR 
+\&\fB\-mcmodel=\fR\fIcode-model\fR 
+\&\fB\-m32  \-m64 
+\&\-mapp\-regs  \-mbroken\-saverestore  \-mcypress 
+\&\-mfaster\-structs  \-mflat 
+\&\-mfpu  \-mhard\-float  \-mhard\-quad\-float 
+\&\-mimpure\-text  \-mlittle\-endian  \-mlive\-g0  \-mno\-app\-regs 
+\&\-mno\-faster\-structs  \-mno\-flat  \-mno\-fpu 
+\&\-mno\-impure\-text  \-mno\-stack\-bias  \-mno\-unaligned\-doubles 
+\&\-msoft\-float  \-msoft\-quad\-float  \-msparclite  \-mstack\-bias 
+\&\-msupersparc  \-munaligned\-doubles  \-mv8\fR
+.Sp
+\&\fI\s-1ARM\s0 Options\fR
+\&\fB\-mapcs\-frame  \-mno\-apcs\-frame 
+\&\-mapcs\-26  \-mapcs\-32 
+\&\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check 
+\&\-mapcs\-float  \-mno\-apcs\-float 
+\&\-mapcs\-reentrant  \-mno\-apcs\-reentrant 
+\&\-msched\-prolog  \-mno\-sched\-prolog 
+\&\-mlittle\-endian  \-mbig\-endian  \-mwords\-little\-endian 
+\&\-malignment\-traps  \-mno\-alignment\-traps 
+\&\-msoft\-float  \-mhard\-float  \-mfpe 
+\&\-mthumb\-interwork  \-mno\-thumb\-interwork 
+\&\-mcpu=\fR\fIname\fR  \fB\-march=\fR\fIname\fR  \fB\-mfpe=\fR\fIname\fR  
+\&\fB\-mstructure\-size\-boundary=\fR\fIn\fR 
+\&\fB\-mabort\-on\-noreturn 
+\&\-mlong\-calls  \-mno\-long\-calls 
+\&\-msingle\-pic\-base  \-mno\-single\-pic\-base 
+\&\-mpic\-register=\fR\fIreg\fR 
+\&\fB\-mnop\-fun\-dllimport 
+\&\-mpoke\-function\-name 
+\&\-mthumb  \-marm 
+\&\-mtpcs\-frame  \-mtpcs\-leaf\-frame 
+\&\-mcaller\-super\-interworking  \-mcallee\-super\-interworking\fR
+.Sp
+\&\fI\s-1MN10200\s0 Options\fR
+\&\fB\-mrelax\fR
+.Sp
+\&\fI\s-1MN10300\s0 Options\fR
+\&\fB\-mmult\-bug  \-mno\-mult\-bug 
+\&\-mam33  \-mno\-am33 
+\&\-mno\-crt0  \-mrelax\fR
+.Sp
+\&\fIM32R/D Options\fR
+\&\fB\-m32rx  \-m32r  \-mcode\-model=\fR\fImodel-type\fR 
+\&\fB\-msdata=\fR\fIsdata-type\fR  \fB\-G\fR \fInum\fR
+.Sp
+\&\fIM88K Options\fR
+\&\fB\-m88000  \-m88100  \-m88110  \-mbig\-pic 
+\&\-mcheck\-zero\-division  \-mhandle\-large\-shift 
+\&\-midentify\-revision  \-mno\-check\-zero\-division 
+\&\-mno\-ocs\-debug\-info  \-mno\-ocs\-frame\-position 
+\&\-mno\-optimize\-arg\-area  \-mno\-serialize\-volatile 
+\&\-mno\-underscores  \-mocs\-debug\-info 
+\&\-mocs\-frame\-position  \-moptimize\-arg\-area 
+\&\-mserialize\-volatile  \-mshort\-data\-\fR\fInum\fR  \fB\-msvr3 
+\&\-msvr4  \-mtrap\-large\-shift  \-muse\-div\-instruction 
+\&\-mversion\-03.00  \-mwarn\-passed\-structs\fR
+.Sp
+\&\fI\s-1RS/6000\s0 and PowerPC Options\fR
+\&\fB\-mcpu=\fR\fIcpu-type\fR 
+\&\fB\-mtune=\fR\fIcpu-type\fR 
+\&\fB\-mpower  \-mno\-power  \-mpower2  \-mno\-power2 
+\&\-mpowerpc  \-mpowerpc64  \-mno\-powerpc 
+\&\-maltivec  \-mno\-altivec 
+\&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt 
+\&\-mpowerpc\-gfxopt  \-mno\-powerpc\-gfxopt 
+\&\-mnew\-mnemonics  \-mold\-mnemonics 
+\&\-mfull\-toc   \-mminimal\-toc  \-mno\-fp\-in\-toc  \-mno\-sum\-in\-toc 
+\&\-m64  \-m32  \-mxl\-call  \-mno\-xl\-call  \-mpe 
+\&\-msoft\-float  \-mhard\-float  \-mmultiple  \-mno\-multiple 
+\&\-mstring  \-mno\-string  \-mupdate  \-mno\-update 
+\&\-mfused\-madd  \-mno\-fused\-madd  \-mbit\-align  \-mno\-bit\-align 
+\&\-mstrict\-align  \-mno\-strict\-align  \-mrelocatable 
+\&\-mno\-relocatable  \-mrelocatable\-lib  \-mno\-relocatable\-lib 
+\&\-mtoc  \-mno\-toc  \-mlittle  \-mlittle\-endian  \-mbig  \-mbig\-endian 
+\&\-mcall\-aix  \-mcall\-sysv  \-mcall\-netbsd 
+\&\-maix\-struct\-return  \-msvr4\-struct\-return 
+\&\-mabi=altivec  \-mabi=no\-altivec 
+\&\-mabi=spe  \-mabi=no\-spe 
+\&\-misel=yes  \-misel=no 
+\&\-mprototype  \-mno\-prototype 
+\&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata 
+\&\-msdata=\fR\fIopt\fR  \fB\-mvxworks  \-mwindiss  \-G\fR \fInum\fR  \fB\-pthread\fR
+.Sp
+\&\fIDarwin Options\fR
+.Sp
+\&\fB\-all_load \-allowable_client \-arch \-arch_errors_fatal 
+\&\-arch_only \-bind_at_load \-bundle \-bundle_loader 
+\&\-client_name \-compatibility_version \-current_version 
+\&\-dependency\-file \-dylib_file \-dylinker_install_name 
+\&\-dynamic \-dynamiclib \-exported_symbols_list 
+\&\-filelist \-flat_namespace \-force_cpusubtype_ALL 
+\&\-force_flat_namespace \-headerpad_max_install_names 
+\&\-image_base \-init \-install_name \-keep_private_externs 
+\&\-multi_module \-multiply_defined \-multiply_defined_unused 
+\&\-noall_load \-nomultidefs \-noprebind \-noseglinkedit 
+\&\-pagezero_size \-prebind \-prebind_all_twolevel_modules 
+\&\-private_bundle \-read_only_relocs \-sectalign 
+\&\-sectobjectsymbols \-whyload \-seg1addr 
+\&\-sectcreate \-sectobjectsymbols \-sectorder 
+\&\-seg_addr_table \-seg_addr_table_filename \-seglinkedit 
+\&\-segprot \-segs_read_only_addr \-segs_read_write_addr 
+\&\-single_module \-static \-sub_library \-sub_umbrella 
+\&\-twolevel_namespace \-umbrella \-undefined 
+\&\-unexported_symbols_list \-weak_reference_mismatches \-whatsloaded\fR
+.Sp
+\&\fI\s-1RT\s0 Options\fR
+\&\fB\-mcall\-lib\-mul  \-mfp\-arg\-in\-fpregs  \-mfp\-arg\-in\-gregs 
+\&\-mfull\-fp\-blocks  \-mhc\-struct\-return  \-min\-line\-mul 
+\&\-mminimum\-fp\-blocks  \-mnohc\-struct\-return\fR
+.Sp
+\&\fI\s-1MIPS\s0 Options\fR
+\&\fB\-mabicalls  \-march=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu=type\fR 
+\&\fB\-mcpu=\fR\fIcpu-type\fR  \fB\-membedded\-data  \-muninit\-const\-in\-rodata 
+\&\-membedded\-pic  \-mfp32  \-mfp64  \-mfused\-madd  \-mno\-fused\-madd 
+\&\-mgas  \-mgp32  \-mgp64 
+\&\-mgpopt  \-mhalf\-pic  \-mhard\-float  \-mint64  \-mips1 
+\&\-mips2  \-mips3  \-mips4  \-mlong64  \-mlong32  \-mlong\-calls  \-mmemcpy 
+\&\-mmips\-as  \-mmips\-tfile  \-mno\-abicalls 
+\&\-mno\-embedded\-data  \-mno\-uninit\-const\-in\-rodata 
+\&\-mno\-embedded\-pic  \-mno\-gpopt  \-mno\-long\-calls 
+\&\-mno\-memcpy  \-mno\-mips\-tfile  \-mno\-rnames  \-mno\-stats 
+\&\-mrnames  \-msoft\-float 
+\&\-m4650  \-msingle\-float  \-mmad 
+\&\-mstats  \-EL  \-EB  \-G\fR \fInum\fR  \fB\-nocpp 
+\&\-mabi=32  \-mabi=n32  \-mabi=64  \-mabi=eabi 
+\&\-mfix7000  \-mno\-crt0  \-mflush\-func=\fR\fIfunc\fR  \fB\-mno\-flush\-func 
+\&\-mbranch\-likely  \-mno\-branch\-likely\fR
+.Sp
+\&\fIi386 and x86\-64 Options\fR
+\&\fB\-mcpu=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR  
+\&\fB\-mfpmath=\fR\fIunit\fR  \fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387 
+\&\-mno\-fp\-ret\-in\-387  \-msoft\-float  \-msvr3\-shlib 
+\&\-mno\-wide\-multiply  \-mrtd  \-malign\-double 
+\&\-mpreferred\-stack\-boundary=\fR\fInum\fR 
+\&\fB\-mmmx  \-msse  \-msse2 \-mpni \-m3dnow 
+\&\-mthreads  \-mno\-align\-stringops  \-minline\-all\-stringops 
+\&\-mpush\-args  \-maccumulate\-outgoing\-args  \-m128bit\-long\-double 
+\&\-m96bit\-long\-double  \-mregparm=\fR\fInum\fR  \fB\-momit\-leaf\-frame\-pointer 
+\&\-mno\-red\-zone
+\&\-mcmodel=\fR\fIcode-model\fR 
+\&\fB\-m32  \-m64\fR
+.Sp
+\&\fI\s-1HPPA\s0 Options\fR
+\&\fB\-march=\fR\fIarchitecture-type\fR 
+\&\fB\-mbig\-switch  \-mdisable\-fpregs  \-mdisable\-indexing 
+\&\-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld  \-mhp\-ld 
+\&\-mjump\-in\-delay  \-mlinker\-opt  \-mlong\-calls 
+\&\-mlong\-load\-store  \-mno\-big\-switch  \-mno\-disable\-fpregs 
+\&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas 
+\&\-mno\-jump\-in\-delay  \-mno\-long\-load\-store 
+\&\-mno\-portable\-runtime  \-mno\-soft\-float 
+\&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0 
+\&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime 
+\&\-mschedule=\fR\fIcpu-type\fR  \fB\-mspace\-regs  \-msio  \-mwsio 
+\&\-nolibdld  \-static  \-threads\fR
+.Sp
+\&\fIIntel 960 Options\fR
+\&\fB\-m\fR\fIcpu-type\fR  \fB\-masm\-compat  \-mclean\-linkage 
+\&\-mcode\-align  \-mcomplex\-addr  \-mleaf\-procedures 
+\&\-mic\-compat  \-mic2.0\-compat  \-mic3.0\-compat 
+\&\-mintel\-asm  \-mno\-clean\-linkage  \-mno\-code\-align 
+\&\-mno\-complex\-addr  \-mno\-leaf\-procedures 
+\&\-mno\-old\-align  \-mno\-strict\-align  \-mno\-tail\-call 
+\&\-mnumerics  \-mold\-align  \-msoft\-float  \-mstrict\-align 
+\&\-mtail\-call\fR
+.Sp
+\&\fI\s-1DEC\s0 Alpha Options\fR
+\&\fB\-mno\-fp\-regs  \-msoft\-float  \-malpha\-as  \-mgas 
+\&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant 
+\&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR 
+\&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants 
+\&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR 
+\&\fB\-mbwx  \-mmax  \-mfix  \-mcix 
+\&\-mfloat\-vax  \-mfloat\-ieee 
+\&\-mexplicit\-relocs  \-msmall\-data  \-mlarge\-data 
+\&\-mmemory\-latency=\fR\fItime\fR
+.Sp
+\&\fI\s-1DEC\s0 Alpha/VMS Options\fR
+\&\fB\-mvms\-return\-codes\fR
+.Sp
+\&\fIH8/300 Options\fR
+\&\fB\-mrelax  \-mh  \-ms  \-mn  \-mint32  \-malign\-300\fR
+.Sp
+\&\fI\s-1SH\s0 Options\fR
+\&\fB\-m1  \-m2  \-m3  \-m3e 
+\&\-m4\-nofpu  \-m4\-single\-only  \-m4\-single  \-m4 
+\&\-m5\-64media  \-m5\-64media\-nofpu 
+\&\-m5\-32media  \-m5\-32media\-nofpu 
+\&\-m5\-compact  \-m5\-compact\-nofpu 
+\&\-mb  \-ml  \-mdalign  \-mrelax 
+\&\-mbigtable  \-mfmovd  \-mhitachi  \-mnomacsave 
+\&\-mieee  \-misize  \-mpadstruct  \-mspace 
+\&\-mprefergot  \-musermode\fR
+.Sp
+\&\fISystem V Options\fR
+\&\fB\-Qy  \-Qn  \-YP,\fR\fIpaths\fR  \fB\-Ym,\fR\fIdir\fR
+.Sp
+\&\fI\s-1ARC\s0 Options\fR
+\&\fB\-EB  \-EL 
+\&\-mmangle\-cpu  \-mcpu=\fR\fIcpu\fR  \fB\-mtext=\fR\fItext-section\fR 
+\&\fB\-mdata=\fR\fIdata-section\fR  \fB\-mrodata=\fR\fIreadonly-data-section\fR
+.Sp
+\&\fITMS320C3x/C4x Options\fR
+\&\fB\-mcpu=\fR\fIcpu\fR  \fB\-mbig  \-msmall  \-mregparm  \-mmemparm 
+\&\-mfast\-fix  \-mmpyi  \-mbk  \-mti  \-mdp\-isr\-reload 
+\&\-mrpts=\fR\fIcount\fR  \fB\-mrptb  \-mdb  \-mloop\-unsigned 
+\&\-mparallel\-insns  \-mparallel\-mpy  \-mpreserve\-float\fR
+.Sp
+\&\fIV850 Options\fR
+\&\fB\-mlong\-calls  \-mno\-long\-calls  \-mep  \-mno\-ep 
+\&\-mprolog\-function  \-mno\-prolog\-function  \-mspace 
+\&\-mtda=\fR\fIn\fR  \fB\-msda=\fR\fIn\fR  \fB\-mzda=\fR\fIn\fR 
+\&\fB\-mapp\-regs  \-mno\-app\-regs 
+\&\-mdisable\-callt  \-mno\-disable\-callt 
+\&\-mv850e 
+\&\-mv850  \-mbig\-switch\fR
+.Sp
+\&\fI\s-1NS32K\s0 Options\fR
+\&\fB\-m32032  \-m32332  \-m32532  \-m32081  \-m32381 
+\&\-mmult\-add  \-mnomult\-add  \-msoft\-float  \-mrtd  \-mnortd 
+\&\-mregparam  \-mnoregparam  \-msb  \-mnosb 
+\&\-mbitfield  \-mnobitfield  \-mhimem  \-mnohimem\fR
+.Sp
+\&\fI\s-1AVR\s0 Options\fR
+\&\fB\-mmcu=\fR\fImcu\fR  \fB\-msize  \-minit\-stack=\fR\fIn\fR  \fB\-mno\-interrupts 
+\&\-mcall\-prologues  \-mno\-tablejump  \-mtiny\-stack\fR
+.Sp
+\&\fIMCore Options\fR
+\&\fB\-mhardlit  \-mno\-hardlit  \-mdiv  \-mno\-div  \-mrelax\-immediates 
+\&\-mno\-relax\-immediates  \-mwide\-bitfields  \-mno\-wide\-bitfields 
+\&\-m4byte\-functions  \-mno\-4byte\-functions  \-mcallgraph\-data 
+\&\-mno\-callgraph\-data  \-mslow\-bytes  \-mno\-slow\-bytes  \-mno\-lsim 
+\&\-mlittle\-endian  \-mbig\-endian  \-m210  \-m340  \-mstack\-increment\fR
+.Sp
+\&\fI\s-1MMIX\s0 Options\fR
+\&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu 
+\&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols 
+\&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses 
+\&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
+.Sp
+\&\fI\s-1IA\-64\s0 Options\fR
+\&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic 
+\&\-mvolatile\-asm\-stop  \-mb\-step  \-mregister\-names  \-mno\-sdata 
+\&\-mconstant\-gp  \-mauto\-pic  \-minline\-float\-divide\-min\-latency 
+\&\-minline\-float\-divide\-max\-throughput 
+\&\-minline\-int\-divide\-min\-latency 
+\&\-minline\-int\-divide\-max\-throughput  \-mno\-dwarf2\-asm 
+\&\-mfixed\-range=\fR\fIregister-range\fR
+.Sp
+\&\fID30V Options\fR
+\&\fB\-mextmem  \-mextmemory  \-monchip  \-mno\-asm\-optimize 
+\&\-masm\-optimize  \-mbranch\-cost=\fR\fIn\fR  \fB\-mcond\-exec=\fR\fIn\fR
+.Sp
+\&\fIS/390 and zSeries Options\fR
+\&\fB\-mhard\-float  \-msoft\-float  \-mbackchain  \-mno\-backchain 
+\&\-msmall\-exec  \-mno\-small\-exec  \-mmvcle  \-mno\-mvcle 
+\&\-m64  \-m31  \-mdebug  \-mno\-debug\fR
+.Sp
+\&\fI\s-1CRIS\s0 Options\fR
+\&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR  \fB\-mtune=\fR\fIcpu\fR 
+\&\fB\-mmax\-stack\-frame=\fR\fIn\fR  \fB\-melinux\-stacksize=\fR\fIn\fR 
+\&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects 
+\&\-mstack\-align  \-mdata\-align  \-mconst\-align 
+\&\-m32\-bit  \-m16\-bit  \-m8\-bit  \-mno\-prologue\-epilogue  \-mno\-gotplt 
+\&\-melf  \-maout  \-melinux  \-mlinux  \-sim  \-sim2\fR
+.Sp
+\&\fI\s-1PDP\-11\s0 Options\fR
+\&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10 
+\&\-mbcopy  \-mbcopy\-builtin  \-mint32  \-mno\-int16 
+\&\-mint16  \-mno\-int32  \-mfloat32  \-mno\-float64 
+\&\-mfloat64  \-mno\-float32  \-mabshi  \-mno\-abshi 
+\&\-mbranch\-expensive  \-mbranch\-cheap 
+\&\-msplit  \-mno\-split  \-munix\-asm  \-mdec\-asm\fR
+.Sp
+\&\fIXstormy16 Options\fR
+\&\fB\-msim\fR
+.Sp
+\&\fIXtensa Options\fR
+\&\fB\-mbig\-endian  \-mlittle\-endian 
+\&\-mdensity  \-mno\-density 
+\&\-mmac16  \-mno\-mac16 
+\&\-mmul16  \-mno\-mul16 
+\&\-mmul32  \-mno\-mul32 
+\&\-mnsa  \-mno\-nsa 
+\&\-mminmax  \-mno\-minmax 
+\&\-msext  \-mno\-sext 
+\&\-mbooleans  \-mno\-booleans 
+\&\-mhard\-float  \-msoft\-float 
+\&\-mfused\-madd  \-mno\-fused\-madd 
+\&\-mserialize\-volatile  \-mno\-serialize\-volatile 
+\&\-mtext\-section\-literals  \-mno\-text\-section\-literals 
+\&\-mtarget\-align  \-mno\-target\-align 
+\&\-mlongcalls  \-mno\-longcalls\fR
+.Sp
+\&\fI\s-1FRV\s0 Options\fR
+\&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64 
+\&\-mhard\-float  \-msoft\-float  \-malloc\-cc  \-mfixed\-cc 
+\&\-mdword  \-mno\-dword  \-mdouble  \-mno\-double 
+\&\-mmedia  \-mno\-media  \-mmuladd  \-mno\-muladd  \-mlibrary\-pic 
+\&\-macc\-4  \-macc\-8  \-mpack  \-mno\-pack  \-mno\-eflags 
+\&\-mcond\-move  \-mno\-cond\-move \-mscc  \-mno\-scc  
+\&\-mcond\-exec  \-mno\-cond\-exec  \-mvliw\-branch  \-mno\-vliw\-branch 
+\&\-mmulti\-cond\-exec  \-mno\-multi\-cond\-exec  \-mnested\-cond\-exec 
+\&\-mno\-nested\-cond\-exec  \-mtomcat\-stats 
+\&\-mcpu=\fR\fIcpu\fR
+.IP "\fICode Generation Options\fR" 4
+.IX Item "Code Generation Options"
+\&\fB\-fcall\-saved\-\fR\fIreg\fR  \fB\-fcall\-used\-\fR\fIreg\fR 
+\&\fB\-ffixed\-\fR\fIreg\fR  \fB\-fexceptions 
+\&\-fnon\-call\-exceptions  \-funwind\-tables 
+\&\-fasynchronous\-unwind\-tables 
+\&\-finhibit\-size\-directive  \-finstrument\-functions 
+\&\-fno\-common  \-fno\-ident  \-fno\-gnu\-linker 
+\&\-fpcc\-struct\-return  \-fpic  \-fPIC \-fpie \-fPIE 
+\&\-freg\-struct\-return  \-fshared\-data  \-fshort\-enums 
+\&\-fshort\-double  \-fshort\-wchar  \-fvolatile 
+\&\-fvolatile\-global  \-fvolatile\-static 
+\&\-fverbose\-asm  \-fpack\-struct  \-fstack\-check 
+\&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR 
+\&\fB\-fargument\-alias  \-fargument\-noalias 
+\&\-fargument\-noalias\-global  \-fleading\-underscore 
+\&\-ftls\-model=\fR\fImodel\fR 
+\&\fB\-ftrapv  \-fbounds\-check\fR
+.Sh "Options Controlling the Kind of Output"
+.IX Subsection "Options Controlling the Kind of Output"
+Compilation can involve up to four stages: preprocessing, compilation
+proper, assembly and linking, always in that order.  The first three
+stages apply to an individual source file, and end by producing an
+object file; linking combines all the object files (those newly
+compiled, and those specified as input) into an executable file.
+.PP
+For any given input file, the file name suffix determines what kind of
+compilation is done:
+.IP "\fIfile\fR\fB.c\fR" 4
+.IX Item "file.c"
+C source code which must be preprocessed.
+.IP "\fIfile\fR\fB.i\fR" 4
+.IX Item "file.i"
+C source code which should not be preprocessed.
+.IP "\fIfile\fR\fB.ii\fR" 4
+.IX Item "file.ii"
+\&\*(C+ source code which should not be preprocessed.
+.IP "\fIfile\fR\fB.m\fR" 4
+.IX Item "file.m"
+Objective-C source code.  Note that you must link with the library
+\&\fIlibobjc.a\fR to make an Objective-C program work.
+.IP "\fIfile\fR\fB.mi\fR" 4
+.IX Item "file.mi"
+Objective-C source code which should not be preprocessed.
+.IP "\fIfile\fR\fB.h\fR" 4
+.IX Item "file.h"
+C header file (not to be compiled or linked).
+.IP "\fIfile\fR\fB.cc\fR" 4
+.IX Item "file.cc"
+.PD 0
+.IP "\fIfile\fR\fB.cp\fR" 4
+.IX Item "file.cp"
+.IP "\fIfile\fR\fB.cxx\fR" 4
+.IX Item "file.cxx"
+.IP "\fIfile\fR\fB.cpp\fR" 4
+.IX Item "file.cpp"
+.IP "\fIfile\fR\fB.c++\fR" 4
+.IX Item "file.c++"
+.IP "\fIfile\fR\fB.C\fR" 4
+.IX Item "file.C"
+.PD
+\&\*(C+ source code which must be preprocessed.  Note that in \fB.cxx\fR,
+the last two letters must both be literally \fBx\fR.  Likewise,
+\&\fB.C\fR refers to a literal capital C.
+.IP "\fIfile\fR\fB.f\fR" 4
+.IX Item "file.f"
+.PD 0
+.IP "\fIfile\fR\fB.for\fR" 4
+.IX Item "file.for"
+.IP "\fIfile\fR\fB.FOR\fR" 4
+.IX Item "file.FOR"
+.PD
+Fortran source code which should not be preprocessed.
+.IP "\fIfile\fR\fB.F\fR" 4
+.IX Item "file.F"
+.PD 0
+.IP "\fIfile\fR\fB.fpp\fR" 4
+.IX Item "file.fpp"
+.IP "\fIfile\fR\fB.FPP\fR" 4
+.IX Item "file.FPP"
+.PD
+Fortran source code which must be preprocessed (with the traditional
+preprocessor).
+.IP "\fIfile\fR\fB.r\fR" 4
+.IX Item "file.r"
+Fortran source code which must be preprocessed with a \s-1RATFOR\s0
+preprocessor (not included with \s-1GCC\s0).
+.IP "\fIfile\fR\fB.ads\fR" 4
+.IX Item "file.ads"
+Ada source code file which contains a library unit declaration (a
+declaration of a package, subprogram, or generic, or a generic
+instantiation), or a library unit renaming declaration (a package,
+generic, or subprogram renaming declaration).  Such files are also
+called \fIspecs\fR.
+.IP "\fIfile\fR\fB.adb\fR" 4
+.IX Item "file.adb"
+Ada source code file containing a library unit body (a subprogram or
+package body).  Such files are also called \fIbodies\fR.
+.IP "\fIfile\fR\fB.s\fR" 4
+.IX Item "file.s"
+Assembler code.
+.IP "\fIfile\fR\fB.S\fR" 4
+.IX Item "file.S"
+Assembler code which must be preprocessed.
+.IP "\fIother\fR" 4
+.IX Item "other"
+An object file to be fed straight into linking.
+Any file name with no recognized suffix is treated this way.
+.PP
+You can specify the input language explicitly with the \fB\-x\fR option:
+.IP "\fB\-x\fR \fIlanguage\fR" 4
+.IX Item "-x language"
+Specify explicitly the \fIlanguage\fR for the following input files
+(rather than letting the compiler choose a default based on the file
+name suffix).  This option applies to all following input files until
+the next \fB\-x\fR option.  Possible values for \fIlanguage\fR are:
+.Sp
+.Vb 8
+\&        c  c-header  cpp-output
+\&        c++  c++-cpp-output
+\&        objective-c  objc-cpp-output
+\&        assembler  assembler-with-cpp
+\&        ada
+\&        f77  f77-cpp-input  ratfor
+\&        java
+\&        treelang
+.Ve
+.IP "\fB\-x none\fR" 4
+.IX Item "-x none"
+Turn off any specification of a language, so that subsequent files are
+handled according to their file name suffixes (as they are if \fB\-x\fR
+has not been used at all).
+.IP "\fB\-pass\-exit\-codes\fR" 4
+.IX Item "-pass-exit-codes"
+Normally the \fBgcc\fR program will exit with the code of 1 if any
+phase of the compiler returns a non-success return code.  If you specify
+\&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program will instead return with
+numerically highest error produced by any phase that returned an error
+indication.
+.PP
+If you only want some of the stages of compilation, you can use
+\&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
+one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
+\&\fBgcc\fR is to stop.  Note that some combinations (for example,
+\&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
+.IP "\fB\-c\fR" 4
+.IX Item "-c"
+Compile or assemble the source files, but do not link.  The linking
+stage simply is not done.  The ultimate output is in the form of an
+object file for each source file.
+.Sp
+By default, the object file name for a source file is made by replacing
+the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR, etc., with \fB.o\fR.
+.Sp
+Unrecognized input files, not requiring compilation or assembly, are
+ignored.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+Stop after the stage of compilation proper; do not assemble.  The output
+is in the form of an assembler code file for each non-assembler input
+file specified.
+.Sp
+By default, the assembler file name for a source file is made by
+replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
+.Sp
+Input files that don't require compilation are ignored.
+.IP "\fB\-E\fR" 4
+.IX Item "-E"
+Stop after the preprocessing stage; do not run the compiler proper.  The
+output is in the form of preprocessed source code, which is sent to the
+standard output.
+.Sp
+Input files which don't require preprocessing are ignored.
+.IP "\fB\-o\fR \fIfile\fR" 4
+.IX Item "-o file"
+Place output in file \fIfile\fR.  This applies regardless to whatever
+sort of output is being produced, whether it be an executable file,
+an object file, an assembler file or preprocessed C code.
+.Sp
+Since only one output file can be specified, it does not make sense to
+use \fB\-o\fR when compiling more than one input file, unless you are
+producing an executable file as output.
+.Sp
+If \fB\-o\fR is not specified, the default is to put an executable file
+in \fIa.out\fR, the object file for \fI\fIsource\fI.\fIsuffix\fI\fR in
+\&\fI\fIsource\fI.o\fR, its assembler file in \fI\fIsource\fI.s\fR, and
+all preprocessed C source on standard output.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Print (on standard error output) the commands executed to run the stages
+of compilation.  Also print the version number of the compiler driver
+program and of the preprocessor and the compiler proper.
+.IP "\fB\-###\fR" 4
+.IX Item "-###"
+Like \fB\-v\fR except the commands are not executed and all command
+arguments are quoted.  This is useful for shell scripts to capture the
+driver-generated command lines.
+.IP "\fB\-pipe\fR" 4
+.IX Item "-pipe"
+Use pipes rather than temporary files for communication between the
+various stages of compilation.  This fails to work on some systems where
+the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has
+no trouble.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print (on the standard output) a description of the command line options
+understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
+then \fB\-\-help\fR will also be passed on to the various processes
+invoked by \fBgcc\fR, so that they can display the command line options
+they accept.  If the \fB\-W\fR option is also specified then command
+line options which have no documentation associated with them will also
+be displayed.
+.IP "\fB\-\-target\-help\fR" 4
+.IX Item "--target-help"
+Print (on the standard output) a description of target specific command
+line options for each tool.
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+Display the version number and copyrights of the invoked \s-1GCC\s0.
+.Sh "Compiling \*(C+ Programs"
+.IX Subsection "Compiling  Programs"
+\&\*(C+ source files conventionally use one of the suffixes \fB.C\fR,
+\&\fB.cc\fR, \fB.cpp\fR, \fB.c++\fR, \fB.cp\fR, or \fB.cxx\fR;
+preprocessed \*(C+ files use the suffix \fB.ii\fR.  \s-1GCC\s0 recognizes
+files with these names and compiles them as \*(C+ programs even if you
+call the compiler the same way as for compiling C programs (usually with
+the name \fBgcc\fR).
+.PP
+However, \*(C+ programs often require class libraries as well as a
+compiler that understands the \*(C+ language\-\-\-and under some
+circumstances, you might want to compile programs from standard input,
+or otherwise without a suffix that flags them as \*(C+ programs.
+\&\fBg++\fR is a program that calls \s-1GCC\s0 with the default language
+set to \*(C+, and automatically specifies linking against the \*(C+
+library.  On many systems, \fBg++\fR is also
+installed with the name \fBc++\fR.
+.PP
+When you compile \*(C+ programs, you may specify many of the same
+command-line options that you use for compiling programs in any
+language; or command-line options meaningful for C and related
+languages; or options that are meaningful only for \*(C+ programs.
+.Sh "Options Controlling C Dialect"
+.IX Subsection "Options Controlling C Dialect"
+The following options control the dialect of C (or languages derived
+from C, such as \*(C+ and Objective\-C) that the compiler accepts:
+.IP "\fB\-ansi\fR" 4
+.IX Item "-ansi"
+In C mode, support all \s-1ISO\s0 C90 programs.  In \*(C+ mode,
+remove \s-1GNU\s0 extensions that conflict with \s-1ISO\s0 \*(C+.
+.Sp
+This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0
+C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
+such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
+predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
+type of system you are using.  It also enables the undesirable and
+rarely used \s-1ISO\s0 trigraph feature.  For the C compiler,
+it disables recognition of \*(C+ style \fB//\fR comments as well as
+the \f(CW\*(C`inline\*(C'\fR keyword.
+.Sp
+The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
+\&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
+\&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO\s0 C program, of
+course, but it is useful to put them in header files that might be included
+in compilations done with \fB\-ansi\fR.  Alternate predefined macros
+such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
+without \fB\-ansi\fR.
+.Sp
+The \fB\-ansi\fR option does not cause non-ISO programs to be
+rejected gratuitously.  For that, \fB\-pedantic\fR is required in
+addition to \fB\-ansi\fR.  
+.Sp
+The macro \f(CW\*(C`_\|_STRICT_ANSI_\|_\*(C'\fR is predefined when the \fB\-ansi\fR
+option is used.  Some header files may notice this macro and refrain
+from declaring certain functions or defining certain macros that the
+\&\s-1ISO\s0 standard doesn't call for; this is to avoid interfering with any
+programs that might use these names for other things.
+.Sp
+Functions which would normally be built in but do not have semantics
+defined by \s-1ISO\s0 C (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in
+functions with \fB\-ansi\fR is used.  
+.IP "\fB\-std=\fR" 4
+.IX Item "-std="
+Determine the language standard.  This option is currently only
+supported when compiling C or \*(C+.  A value for this option must be
+provided; possible values are
+.RS 4
+.IP "\fBc89\fR" 4
+.IX Item "c89"
+.PD 0
+.IP "\fBiso9899:1990\fR" 4
+.IX Item "iso9899:1990"
+.PD
+\&\s-1ISO\s0 C90 (same as \fB\-ansi\fR).
+.IP "\fBiso9899:199409\fR" 4
+.IX Item "iso9899:199409"
+\&\s-1ISO\s0 C90 as modified in amendment 1.
+.IP "\fBc99\fR" 4
+.IX Item "c99"
+.PD 0
+.IP "\fBc9x\fR" 4
+.IX Item "c9x"
+.IP "\fBiso9899:1999\fR" 4
+.IX Item "iso9899:1999"
+.IP "\fBiso9899:199x\fR" 4
+.IX Item "iso9899:199x"
+.PD
+\&\s-1ISO\s0 C99.  Note that this standard is not yet fully supported; see
+<\fBhttp://gcc.gnu.org/gcc\-3.3/c99status.html\fR> for more information.  The
+names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
+.IP "\fBgnu89\fR" 4
+.IX Item "gnu89"
+Default, \s-1ISO\s0 C90 plus \s-1GNU\s0 extensions (including some C99 features).
+.IP "\fBgnu99\fR" 4
+.IX Item "gnu99"
+.PD 0
+.IP "\fBgnu9x\fR" 4
+.IX Item "gnu9x"
+.PD
+\&\s-1ISO\s0 C99 plus \s-1GNU\s0 extensions.  When \s-1ISO\s0 C99 is fully implemented in \s-1GCC\s0,
+this will become the default.  The name \fBgnu9x\fR is deprecated.
+.IP "\fBc++98\fR" 4
+.IX Item "c++98"
+The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
+.IP "\fBgnu++98\fR" 4
+.IX Item "gnu++98"
+The same as \fB\-std=c++98\fR plus \s-1GNU\s0 extensions.  This is the
+default for \*(C+ code.
+.RE
+.RS 4
+.Sp
+Even when this option is not specified, you can still use some of the
+features of newer standards in so far as they do not conflict with
+previous C standards.  For example, you may use \f(CW\*(C`_\|_restrict_\|_\*(C'\fR even
+when \fB\-std=c99\fR is not specified.
+.Sp
+The \fB\-std\fR options specifying some version of \s-1ISO\s0 C have the same
+effects as \fB\-ansi\fR, except that features that were not in \s-1ISO\s0 C90
+but are in the specified version (for example, \fB//\fR comments and
+the \f(CW\*(C`inline\*(C'\fR keyword in \s-1ISO\s0 C99) are not disabled.
+.RE
+.IP "\fB\-aux\-info\fR \fIfilename\fR" 4
+.IX Item "-aux-info filename"
+Output to the given filename prototyped declarations for all functions
+declared and/or defined in a translation unit, including those in header
+files.  This option is silently ignored in any language other than C.
+.Sp
+Besides declarations, the file indicates, in comments, the origin of
+each declaration (source file and line), whether the declaration was
+implicit, prototyped or unprototyped (\fBI\fR, \fBN\fR for new or
+\&\fBO\fR for old, respectively, in the first character after the line
+number and the colon), and whether it came from a declaration or a
+definition (\fBC\fR or \fBF\fR, respectively, in the following
+character).  In the case of function definitions, a K&R\-style list of
+arguments followed by their declarations is also provided, inside
+comments, after the declaration.
+.IP "\fB\-fno\-asm\fR" 4
+.IX Item "-fno-asm"
+Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
+keyword, so that code can use these words as identifiers.  You can use
+the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
+instead.  \fB\-ansi\fR implies \fB\-fno\-asm\fR.
+.Sp
+In \*(C+, this switch only affects the \f(CW\*(C`typeof\*(C'\fR keyword, since
+\&\f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`inline\*(C'\fR are standard keywords.  You may want to
+use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
+effect.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR), this
+switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, since
+\&\f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO\s0 C99.
+.IP "\fB\-fno\-builtin\fR" 4
+.IX Item "-fno-builtin"
+.PD 0
+.IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4
+.IX Item "-fno-builtin-function"
+.PD
+Don't recognize built-in functions that do not begin with
+\&\fB_\|_builtin_\fR as prefix.  
+.Sp
+\&\s-1GCC\s0 normally generates special code to handle certain built-in functions
+more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
+instructions that adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
+may become inline copy loops.  The resulting code is often both smaller
+and faster, but since the function calls no longer appear as such, you
+cannot set a breakpoint on those calls, nor can you change the behavior
+of the functions by linking with a different library.
+.Sp
+With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
+only the built-in function \fIfunction\fR is
+disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
+function is named this is not built-in in this version of \s-1GCC\s0, this
+option is ignored.  There is no corresponding
+\&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
+built-in functions selectively when using \fB\-fno\-builtin\fR or
+\&\fB\-ffreestanding\fR, you may define macros such as:
+.Sp
+.Vb 2
+\&        #define abs(n)          __builtin_abs ((n))
+\&        #define strcpy(d, s)    __builtin_strcpy ((d), (s))
+.Ve
+.IP "\fB\-fhosted\fR" 4
+.IX Item "-fhosted"
+Assert that compilation takes place in a hosted environment.  This implies
+\&\fB\-fbuiltin\fR.  A hosted environment is one in which the
+entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
+type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
+This is equivalent to \fB\-fno\-freestanding\fR.
+.IP "\fB\-ffreestanding\fR" 4
+.IX Item "-ffreestanding"
+Assert that compilation takes place in a freestanding environment.  This
+implies \fB\-fno\-builtin\fR.  A freestanding environment
+is one in which the standard library may not exist, and program startup may
+not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an \s-1OS\s0 kernel.
+This is equivalent to \fB\-fno\-hosted\fR.
+.IP "\fB\-fms\-extensions\fR" 4
+.IX Item "-fms-extensions"
+Accept some non-standard constructs used in Microsoft header files.
+.IP "\fB\-trigraphs\fR" 4
+.IX Item "-trigraphs"
+Support \s-1ISO\s0 C trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
+options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR.
+.IP "\fB\-no\-integrated\-cpp\fR" 4
+.IX Item "-no-integrated-cpp"
+Performs a compilation in two passes: preprocessing and compiling.  This
+option allows a user supplied \*(L"cc1\*(R", \*(L"cc1plus\*(R", or \*(L"cc1obj\*(R" via the
+\&\fB\-B\fR option. The user supplied compilation step can then add in
+an additional preprocessing step after normal preprocessing but before
+compiling. The default is to use the integrated cpp (internal cpp)
+.Sp
+The semantics of this option will change if \*(L"cc1\*(R", \*(L"cc1plus\*(R", and
+\&\*(L"cc1obj\*(R" are merged.
+.IP "\fB\-traditional\fR" 4
+.IX Item "-traditional"
+.PD 0
+.IP "\fB\-traditional\-cpp\fR" 4
+.IX Item "-traditional-cpp"
+.PD
+Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
+C compiler.  They are now only supported with the \fB\-E\fR switch.
+The preprocessor continues to support a pre-standard mode.  See the \s-1GNU\s0
+\&\s-1CPP\s0 manual for details.
+.IP "\fB\-fcond\-mismatch\fR" 4
+.IX Item "-fcond-mismatch"
+Allow conditional expressions with mismatched types in the second and
+third arguments.  The value of such an expression is void.  This option
+is not supported for \*(C+.
+.IP "\fB\-funsigned\-char\fR" 4
+.IX Item "-funsigned-char"
+Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
+.Sp
+Each kind of machine has a default for what \f(CW\*(C`char\*(C'\fR should
+be.  It is either like \f(CW\*(C`unsigned char\*(C'\fR by default or like
+\&\f(CW\*(C`signed char\*(C'\fR by default.
+.Sp
+Ideally, a portable program should always use \f(CW\*(C`signed char\*(C'\fR or
+\&\f(CW\*(C`unsigned char\*(C'\fR when it depends on the signedness of an object.
+But many programs have been written to use plain \f(CW\*(C`char\*(C'\fR and
+expect it to be signed, or expect it to be unsigned, depending on the
+machines they were written for.  This option, and its inverse, let you
+make such a program work with the opposite default.
+.Sp
+The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
+\&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
+is always just like one of those two.
+.IP "\fB\-fsigned\-char\fR" 4
+.IX Item "-fsigned-char"
+Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
+.Sp
+Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
+the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
+\&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
+.IP "\fB\-fsigned\-bitfields\fR" 4
+.IX Item "-fsigned-bitfields"
+.PD 0
+.IP "\fB\-funsigned\-bitfields\fR" 4
+.IX Item "-funsigned-bitfields"
+.IP "\fB\-fno\-signed\-bitfields\fR" 4
+.IX Item "-fno-signed-bitfields"
+.IP "\fB\-fno\-unsigned\-bitfields\fR" 4
+.IX Item "-fno-unsigned-bitfields"
+.PD
+These options control whether a bit-field is signed or unsigned, when the
+declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
+default, such a bit-field is signed, because this is consistent: the
+basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
+.IP "\fB\-fwritable\-strings\fR" 4
+.IX Item "-fwritable-strings"
+Store string constants in the writable data segment and don't uniquize
+them.  This is for compatibility with old programs which assume they can
+write into string constants.
+.Sp
+Writing into string constants is a very bad idea; ``constants'' should
+be constant.
+.Sh "Options Controlling \*(C+ Dialect"
+.IX Subsection "Options Controlling  Dialect"
+This section describes the command-line options that are only meaningful
+for \*(C+ programs; but you can also use most of the \s-1GNU\s0 compiler options
+regardless of what language your program is in.  For example, you
+might compile a file \f(CW\*(C`firstClass.C\*(C'\fR like this:
+.PP
+.Vb 1
+\&        g++ -g -frepo -O -c firstClass.C
+.Ve
+.PP
+In this example, only \fB\-frepo\fR is an option meant
+only for \*(C+ programs; you can use the other options with any
+language supported by \s-1GCC\s0.
+.PP
+Here is a list of options that are \fIonly\fR for compiling \*(C+ programs:
+.IP "\fB\-fabi\-version=\fR\fIn\fR" 4
+.IX Item "-fabi-version=n"
+Use version \fIn\fR of the \*(C+ \s-1ABI\s0.  Version 1 is the version of the \*(C+
+\&\s-1ABI\s0 that first appeared in G++ 3.2.  Version 0 will always be the
+version that conforms most closely to the \*(C+ \s-1ABI\s0 specification.
+Therefore, the \s-1ABI\s0 obtained using version 0 will change as \s-1ABI\s0 bugs are
+fixed.
+.Sp
+The default is version 1.
+.IP "\fB\-fno\-access\-control\fR" 4
+.IX Item "-fno-access-control"
+Turn off all access checking.  This switch is mainly useful for working
+around bugs in the access control code.
+.IP "\fB\-fcheck\-new\fR" 4
+.IX Item "-fcheck-new"
+Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null
+before attempting to modify the storage allocated.  This check is
+normally unnecessary because the \*(C+ standard specifies that
+\&\f(CW\*(C`operator new\*(C'\fR will only return \f(CW0\fR if it is declared
+\&\fB\f(BIthrow()\fB\fR, in which case the compiler will always check the
+return value even without this option.  In all other cases, when
+\&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory
+exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
+\&\fBnew (nothrow)\fR.
+.IP "\fB\-fconserve\-space\fR" 4
+.IX Item "-fconserve-space"
+Put uninitialized or runtime-initialized global variables into the
+common segment, as C does.  This saves space in the executable at the
+cost of not diagnosing duplicate definitions.  If you compile with this
+flag and your program mysteriously crashes after \f(CW\*(C`main()\*(C'\fR has
+completed, you may have an object that is being destroyed twice because
+two definitions were merged.
+.Sp
+This option is no longer useful on most targets, now that support has
+been added for putting variables into \s-1BSS\s0 without making them common.
+.IP "\fB\-fno\-const\-strings\fR" 4
+.IX Item "-fno-const-strings"
+Give string constants type \f(CW\*(C`char *\*(C'\fR instead of type \f(CW\*(C`const
+char *\*(C'\fR.  By default, G++ uses type \f(CW\*(C`const char *\*(C'\fR as required by
+the standard.  Even if you use \fB\-fno\-const\-strings\fR, you cannot
+actually modify the value of a string constant, unless you also use
+\&\fB\-fwritable\-strings\fR.
+.Sp
+This option might be removed in a future release of G++.  For maximum
+portability, you should structure your code so that it works with
+string constants that have type \f(CW\*(C`const char *\*(C'\fR.
+.IP "\fB\-fdollars\-in\-identifiers\fR" 4
+.IX Item "-fdollars-in-identifiers"
+Accept \fB$\fR in identifiers.  You can also explicitly prohibit use of
+\&\fB$\fR with the option \fB\-fno\-dollars\-in\-identifiers\fR.  (\s-1GNU\s0 C allows
+\&\fB$\fR by default on most target systems, but there are a few exceptions.)
+Traditional C allowed the character \fB$\fR to form part of
+identifiers.  However, \s-1ISO\s0 C and \*(C+ forbid \fB$\fR in identifiers.
+.IP "\fB\-fno\-elide\-constructors\fR" 4
+.IX Item "-fno-elide-constructors"
+The \*(C+ standard allows an implementation to omit creating a temporary
+which is only used to initialize another object of the same type.
+Specifying this option disables that optimization, and forces G++ to
+call the copy constructor in all cases.
+.IP "\fB\-fno\-enforce\-eh\-specs\fR" 4
+.IX Item "-fno-enforce-eh-specs"
+Don't check for violation of exception specifications at runtime.  This
+option violates the \*(C+ standard, but may be useful for reducing code
+size in production builds, much like defining \fB\s-1NDEBUG\s0\fR.  The compiler
+will still optimize based on the exception specifications.
+.IP "\fB\-fexternal\-templates\fR" 4
+.IX Item "-fexternal-templates"
+Cause \fB#pragma interface\fR and \fBimplementation\fR to apply to
+template instantiation; template instances are emitted or not according
+to the location of the template definition.  
+.Sp
+This option is deprecated.
+.IP "\fB\-falt\-external\-templates\fR" 4
+.IX Item "-falt-external-templates"
+Similar to \fB\-fexternal\-templates\fR, but template instances are
+emitted or not according to the place where they are first instantiated.
+.Sp
+This option is deprecated.
+.IP "\fB\-ffor\-scope\fR" 4
+.IX Item "-ffor-scope"
+.PD 0
+.IP "\fB\-fno\-for\-scope\fR" 4
+.IX Item "-fno-for-scope"
+.PD
+If \fB\-ffor\-scope\fR is specified, the scope of variables declared in
+a \fIfor-init-statement\fR is limited to the \fBfor\fR loop itself,
+as specified by the \*(C+ standard.
+If \fB\-fno\-for\-scope\fR is specified, the scope of variables declared in
+a \fIfor-init-statement\fR extends to the end of the enclosing scope,
+as was the case in old versions of G++, and other (traditional)
+implementations of \*(C+.
+.Sp
+The default if neither flag is given to follow the standard,
+but to allow and give a warning for old-style code that would
+otherwise be invalid, or have different behavior.
+.IP "\fB\-fno\-gnu\-keywords\fR" 4
+.IX Item "-fno-gnu-keywords"
+Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
+word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
+\&\fB\-ansi\fR implies \fB\-fno\-gnu\-keywords\fR.
+.IP "\fB\-fno\-implicit\-templates\fR" 4
+.IX Item "-fno-implicit-templates"
+Never emit code for non-inline templates which are instantiated
+implicitly (i.e. by use); only emit code for explicit instantiations.
+.IP "\fB\-fno\-implicit\-inline\-templates\fR" 4
+.IX Item "-fno-implicit-inline-templates"
+Don't emit code for implicit instantiations of inline templates, either.
+The default is to handle inlines differently so that compiles with and
+without optimization will need the same set of explicit instantiations.
+.IP "\fB\-fno\-implement\-inlines\fR" 4
+.IX Item "-fno-implement-inlines"
+To save space, do not emit out-of-line copies of inline functions
+controlled by \fB#pragma implementation\fR.  This will cause linker
+errors if these functions are not inlined everywhere they are called.
+.IP "\fB\-fms\-extensions\fR" 4
+.IX Item "-fms-extensions"
+Disable pedantic warnings about constructs used in \s-1MFC\s0, such as implicit
+int and getting a pointer to member function via non-standard syntax.
+.IP "\fB\-fno\-nonansi\-builtins\fR" 4
+.IX Item "-fno-nonansi-builtins"
+Disable built-in declarations of functions that are not mandated by
+\&\s-1ANSI/ISO\s0 C.  These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR,
+\&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
+.IP "\fB\-fno\-operator\-names\fR" 4
+.IX Item "-fno-operator-names"
+Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
+\&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as
+synonyms as keywords.
+.IP "\fB\-fno\-optional\-diags\fR" 4
+.IX Item "-fno-optional-diags"
+Disable diagnostics that the standard says a compiler does not need to
+issue.  Currently, the only such diagnostic issued by G++ is the one for
+a name having multiple meanings within a class.
+.IP "\fB\-fpermissive\fR" 4
+.IX Item "-fpermissive"
+Downgrade some diagnostics about nonconformant code from errors to
+warnings.  Thus, using \fB\-fpermissive\fR will allow some
+nonconforming code to compile.
+.IP "\fB\-frepo\fR" 4
+.IX Item "-frepo"
+Enable automatic template instantiation at link time.  This option also
+implies \fB\-fno\-implicit\-templates\fR.  
+.IP "\fB\-fno\-rtti\fR" 4
+.IX Item "-fno-rtti"
+Disable generation of information about every class with virtual
+functions for use by the \*(C+ runtime type identification features
+(\fBdynamic_cast\fR and \fBtypeid\fR).  If you don't use those parts
+of the language, you can save some space by using this flag.  Note that
+exception handling uses the same information, but it will generate it as
+needed.
+.IP "\fB\-fstats\fR" 4
+.IX Item "-fstats"
+Emit statistics about front-end processing at the end of the compilation.
+This information is generally only useful to the G++ development team.
+.IP "\fB\-ftemplate\-depth\-\fR\fIn\fR" 4
+.IX Item "-ftemplate-depth-n"
+Set the maximum instantiation depth for template classes to \fIn\fR.
+A limit on the template instantiation depth is needed to detect
+endless recursions during template class instantiation.  \s-1ANSI/ISO\s0 \*(C+
+conforming programs must not rely on a maximum depth greater than 17.
+.IP "\fB\-fuse\-cxa\-atexit\fR" 4
+.IX Item "-fuse-cxa-atexit"
+Register destructors for objects with static storage duration with the
+\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
+This option is required for fully standards-compliant handling of static
+destructors, but will only work if your C library supports
+\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
+.IP "\fB\-fvtable\-gc\fR" 4
+.IX Item "-fvtable-gc"
+Emit special relocations for vtables and virtual function references
+so that the linker can identify unused virtual functions and zero out
+vtable slots that refer to them.  This is most useful with
+\&\fB\-ffunction\-sections\fR and \fB\-Wl,\-\-gc\-sections\fR, in order to
+also discard the functions themselves.
+.Sp
+This optimization requires \s-1GNU\s0 as and \s-1GNU\s0 ld.  Not all systems support
+this option.  \fB\-Wl,\-\-gc\-sections\fR is ignored without \fB\-static\fR.
+.IP "\fB\-fno\-weak\fR" 4
+.IX Item "-fno-weak"
+Do not use weak symbol support, even if it is provided by the linker.
+By default, G++ will use weak symbols if they are available.  This
+option exists only for testing, and should not be used by end\-users;
+it will result in inferior code and has no benefits.  This option may
+be removed in a future release of G++.
+.IP "\fB\-nostdinc++\fR" 4
+.IX Item "-nostdinc++"
+Do not search for header files in the standard directories specific to
+\&\*(C+, but do still search the other standard directories.  (This option
+is used when building the \*(C+ library.)
+.PP
+In addition, these optimization, warning, and code generation options
+have meanings only for \*(C+ programs:
+.IP "\fB\-fno\-default\-inline\fR" 4
+.IX Item "-fno-default-inline"
+Do not assume \fBinline\fR for functions defined inside a class scope.
+  Note that these
+functions will have linkage like inline functions; they just won't be
+inlined by default.
+.IP "\fB\-Wabi\fR (\*(C+ only)" 4
+.IX Item "-Wabi ( only)"
+Warn when G++ generates code that is probably not compatible with the
+vendor-neutral \*(C+ \s-1ABI\s0.  Although an effort has been made to warn about
+all such cases, there are probably some cases that are not warned about, 
+even though G++ is generating incompatible code.  There may also be
+cases where warnings are emitted even though the code that is generated
+will be compatible.
+.Sp
+You should rewrite your code to avoid these warnings if you are
+concerned about the fact that code generated by G++ may not be binary
+compatible with code generated by other compilers.
+.Sp
+The known incompatibilities at this point include:
+.RS 4
+.IP "*" 4
+Incorrect handling of tail-padding for bit\-fields.  G++ may attempt to
+pack data into the same byte as a base class.  For example:
+.Sp
+.Vb 2
+\&        struct A { virtual void f(); int f1 : 1; };
+\&        struct B : public A { int f2 : 1; };
+.Ve
+.Sp
+In this case, G++ will place \f(CW\*(C`B::f2\*(C'\fR into the same byte
+as\f(CW\*(C`A::f1\*(C'\fR; other compilers will not.  You can avoid this problem 
+by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
+byte size on your platform; that will cause G++ and other compilers to
+layout \f(CW\*(C`B\*(C'\fR identically.
+.IP "*" 4
+Incorrect handling of tail-padding for virtual bases.  G++ does not use
+tail padding when laying out virtual bases.  For example:
+.Sp
+.Vb 3
+\&        struct A { virtual void f(); char c1; };
+\&        struct B { B(); char c2; };
+\&        struct C : public A, public virtual B {};
+.Ve
+.Sp
+In this case, G++ will not place \f(CW\*(C`B\*(C'\fR into the tail-padding for
+\&\f(CW\*(C`A\*(C'\fR; other compilers will.  You can avoid this problem by
+explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
+alignment (ignoring virtual base classes); that will cause G++ and other
+compilers to layout \f(CW\*(C`C\*(C'\fR identically.
+.IP "*" 4
+Incorrect handling of bit-fields with declared widths greater than that
+of their underlying types, when the bit-fields appear in a union.  For
+example:
+.Sp
+.Vb 1
+\&        union U { int i : 4096; };
+.Ve
+.Sp
+Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the
+union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR.
+.IP "*" 4
+Empty classes can be placed at incorrect offsets.  For example:
+.Sp
+.Vb 1
+\&        struct A {};
+.Ve
+.Sp
+.Vb 4
+\&        struct B {
+\&          A a;
+\&          virtual void f ();
+\&        };
+.Ve
+.Sp
+.Vb 1
+\&        struct C : public B, public A {};
+.Ve
+.Sp
+G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset;
+it should be placed at offset zero.  G++ mistakenly believes that the
+\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero.
+.IP "*" 4
+Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or
+template template parameters can be mangled incorrectly.
+.Sp
+.Vb 2
+\&        template <typename Q>
+\&        void f(typename Q::X) {}
+.Ve
+.Sp
+.Vb 2
+\&        template <template <typename> class Q>
+\&        void f(typename Q<int>::X) {}
+.Ve
+.Sp
+Instantiations of these templates may be mangled incorrectly.
+.RE
+.RS 4
+.RE
+.IP "\fB\-Wctor\-dtor\-privacy\fR (\*(C+ only)" 4
+.IX Item "-Wctor-dtor-privacy ( only)"
+Warn when a class seems unusable because all the constructors or
+destructors in that class are private, and it has neither friends nor
+public static member functions.  This warning is enabled by default.
+.IP "\fB\-Wnon\-virtual\-dtor\fR (\*(C+ only)" 4
+.IX Item "-Wnon-virtual-dtor ( only)"
+Warn when a class appears to be polymorphic, thereby requiring a virtual
+destructor, yet it declares a non-virtual one.
+This warning is enabled by \fB\-Wall\fR.
+.IP "\fB\-Wreorder\fR (\*(C+ only)" 4
+.IX Item "-Wreorder ( only)"
+Warn when the order of member initializers given in the code does not
+match the order in which they must be executed.  For instance:
+.Sp
+.Vb 5
+\&        struct A {
+\&          int i;
+\&          int j;
+\&          A(): j (0), i (1) { }
+\&        };
+.Ve
+.Sp
+The compiler will rearrange the member initializers for \fBi\fR
+and \fBj\fR to match the declaration order of the members, emitting
+a warning to that effect.  This warning is enabled by \fB\-Wall\fR.
+.PP
+The following \fB\-W...\fR options are not affected by \fB\-Wall\fR.
+.IP "\fB\-Weffc++\fR (\*(C+ only)" 4
+.IX Item "-Weffc++ ( only)"
+Warn about violations of the following style guidelines from Scott Meyers'
+\&\fIEffective \*(C+\fR book:
+.RS 4
+.IP "*" 4
+Item 11:  Define a copy constructor and an assignment operator for classes
+with dynamically allocated memory.
+.IP "*" 4
+Item 12:  Prefer initialization to assignment in constructors.
+.IP "*" 4
+Item 14:  Make destructors virtual in base classes.
+.IP "*" 4
+Item 15:  Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
+.IP "*" 4
+Item 23:  Don't try to return a reference when you must return an object.
+.RE
+.RS 4
+.Sp
+Also warn about violations of the following style guidelines from 
+Scott Meyers' \fIMore Effective \*(C+\fR book:
+.IP "*" 4
+Item 6:  Distinguish between prefix and postfix forms of increment and
+decrement operators.
+.IP "*" 4
+Item 7:  Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
+.RE
+.RS 4
+.Sp
+When selecting this option, be aware that the standard library
+headers do not obey all of these guidelines; use \fBgrep \-v\fR
+to filter out those warnings.
+.RE
+.IP "\fB\-Wno\-deprecated\fR (\*(C+ only)" 4
+.IX Item "-Wno-deprecated ( only)"
+Do not warn about usage of deprecated features.  
+.IP "\fB\-Wno\-non\-template\-friend\fR (\*(C+ only)" 4
+.IX Item "-Wno-non-template-friend ( only)"
+Disable warnings when non-templatized friend functions are declared
+within a template.  Since the advent of explicit template specification
+support in G++, if the name of the friend is an unqualified-id (i.e.,
+\&\fBfriend foo(int)\fR), the \*(C+ language specification demands that the
+friend declare or define an ordinary, nontemplate function.  (Section
+14.5.3).  Before G++ implemented explicit specification, unqualified-ids
+could be interpreted as a particular specialization of a templatized
+function.  Because this non-conforming behavior is no longer the default
+behavior for G++, \fB\-Wnon\-template\-friend\fR allows the compiler to
+check existing code for potential trouble spots and is on by default.
+This new compiler behavior can be turned off with
+\&\fB\-Wno\-non\-template\-friend\fR which keeps the conformant compiler code
+but disables the helpful warning.
+.IP "\fB\-Wold\-style\-cast\fR (\*(C+ only)" 4
+.IX Item "-Wold-style-cast ( only)"
+Warn if an old-style (C\-style) cast to a non-void type is used within
+a \*(C+ program.  The new-style casts (\fBstatic_cast\fR,
+\&\fBreinterpret_cast\fR, and \fBconst_cast\fR) are less vulnerable to
+unintended effects and much easier to search for.
+.IP "\fB\-Woverloaded\-virtual\fR (\*(C+ only)" 4
+.IX Item "-Woverloaded-virtual ( only)"
+Warn when a function declaration hides virtual functions from a
+base class.  For example, in:
+.Sp
+.Vb 3
+\&        struct A {
+\&          virtual void f();
+\&        };
+.Ve
+.Sp
+.Vb 3
+\&        struct B: public A {
+\&          void f(int);
+\&        };
+.Ve
+.Sp
+the \f(CW\*(C`A\*(C'\fR class version of \f(CW\*(C`f\*(C'\fR is hidden in \f(CW\*(C`B\*(C'\fR, and code
+like:
+.Sp
+.Vb 2
+\&        B* b;
+\&        b->f();
+.Ve
+.Sp
+will fail to compile.
+.IP "\fB\-Wno\-pmf\-conversions\fR (\*(C+ only)" 4
+.IX Item "-Wno-pmf-conversions ( only)"
+Disable the diagnostic for converting a bound pointer to member function
+to a plain pointer.
+.IP "\fB\-Wsign\-promo\fR (\*(C+ only)" 4
+.IX Item "-Wsign-promo ( only)"
+Warn when overload resolution chooses a promotion from unsigned or
+enumeral type to a signed type, over a conversion to an unsigned type of
+the same size.  Previous versions of G++ would try to preserve
+unsignedness, but the standard mandates the current behavior.
+.IP "\fB\-Wsynth\fR (\*(C+ only)" 4
+.IX Item "-Wsynth ( only)"
+Warn when G++'s synthesis behavior does not match that of cfront.  For
+instance:
+.Sp
+.Vb 4
+\&        struct A {
+\&          operator int ();
+\&          A& operator = (int);
+\&        };
+.Ve
+.Sp
+.Vb 5
+\&        main ()
+\&        {
+\&          A a,b;
+\&          a = b;
+\&        }
+.Ve
+.Sp
+In this example, G++ will synthesize a default \fBA& operator =
+(const A&);\fR, while cfront will use the user-defined \fBoperator =\fR.
+.Sh "Options Controlling Objective-C Dialect"
+.IX Subsection "Options Controlling Objective-C Dialect"
+This section describes the command-line options that are only meaningful
+for Objective-C programs, but you can also use most of the \s-1GNU\s0 compiler
+options regardless of what language your program is in.  For example,
+you might compile a file \f(CW\*(C`some_class.m\*(C'\fR like this:
+.PP
+.Vb 1
+\&        gcc -g -fgnu-runtime -O -c some_class.m
+.Ve
+.PP
+In this example, \fB\-fgnu\-runtime\fR is an option meant only for
+Objective-C programs; you can use the other options with any language
+supported by \s-1GCC\s0.
+.PP
+Here is a list of options that are \fIonly\fR for compiling Objective-C
+programs:
+.IP "\fB\-fconstant\-string\-class=\fR\fIclass-name\fR" 4
+.IX Item "-fconstant-string-class=class-name"
+Use \fIclass-name\fR as the name of the class to instantiate for each
+literal string specified with the syntax \f(CW\*(C`@"..."\*(C'\fR.  The default
+class name is \f(CW\*(C`NXConstantString\*(C'\fR.
+.IP "\fB\-fgnu\-runtime\fR" 4
+.IX Item "-fgnu-runtime"
+Generate object code compatible with the standard \s-1GNU\s0 Objective-C
+runtime.  This is the default for most types of systems.
+.IP "\fB\-fnext\-runtime\fR" 4
+.IX Item "-fnext-runtime"
+Generate output compatible with the NeXT runtime.  This is the default
+for NeXT-based systems, including Darwin and Mac \s-1OS\s0 X.  The macro
+\&\f(CW\*(C`_\|_NEXT_RUNTIME_\|_\*(C'\fR is predefined if (and only if) this option is
+used.
+.IP "\fB\-gen\-decls\fR" 4
+.IX Item "-gen-decls"
+Dump interface declarations for all classes seen in the source file to a
+file named \fI\fIsourcename\fI.decl\fR.
+.IP "\fB\-Wno\-protocol\fR" 4
+.IX Item "-Wno-protocol"
+If a class is declared to implement a protocol, a warning is issued for
+every method in the protocol that is not implemented by the class.  The
+default behavior is to issue a warning for every method not explicitly
+implemented in the class, even if a method implementation is inherited
+from the superclass.  If you use the \f(CW\*(C`\-Wno\-protocol\*(C'\fR option, then
+methods inherited from the superclass are considered to be implemented,
+and no warning is issued for them.
+.IP "\fB\-Wselector\fR" 4
+.IX Item "-Wselector"
+Warn if multiple methods of different types for the same selector are
+found during compilation.  The check is performed on the list of methods
+in the final stage of compilation.  Additionally, a check is performed
+for each selector appearing in a \f(CW\*(C`@selector(...)\*(C'\fR
+expression, and a corresponding method for that selector has been found
+during compilation.  Because these checks scan the method table only at
+the end of compilation, these warnings are not produced if the final
+stage of compilation is not reached, for example because an error is
+found during compilation, or because the \f(CW\*(C`\-fsyntax\-only\*(C'\fR option is
+being used.
+.IP "\fB\-Wundeclared\-selector\fR" 4
+.IX Item "-Wundeclared-selector"
+Warn if a \f(CW\*(C`@selector(...)\*(C'\fR expression referring to an
+undeclared selector is found.  A selector is considered undeclared if no
+method with that name has been declared before the 
+\&\f(CW\*(C`@selector(...)\*(C'\fR expression, either explicitly in an
+\&\f(CW at interface\fR or \f(CW at protocol\fR declaration, or implicitly in
+an \f(CW at implementation\fR section.  This option always performs its
+checks as soon as a \f(CW\*(C`@selector(...)\*(C'\fR expression is found,
+while \f(CW\*(C`\-Wselector\*(C'\fR only performs its checks in the final stage of
+compilation.  This also enforces the coding style convention
+that methods and selectors must be declared before being used.
+.Sh "Options to Control Diagnostic Messages Formatting"
+.IX Subsection "Options to Control Diagnostic Messages Formatting"
+Traditionally, diagnostic messages have been formatted irrespective of
+the output device's aspect (e.g. its width, ...).  The options described
+below can be used to control the diagnostic messages formatting
+algorithm, e.g. how many characters per line, how often source location
+information should be reported.  Right now, only the \*(C+ front end can
+honor these options.  However it is expected, in the near future, that
+the remaining front ends would be able to digest them correctly.
+.IP "\fB\-fmessage\-length=\fR\fIn\fR" 4
+.IX Item "-fmessage-length=n"
+Try to format error messages so that they fit on lines of about \fIn\fR
+characters.  The default is 72 characters for \fBg++\fR and 0 for the rest of
+the front ends supported by \s-1GCC\s0.  If \fIn\fR is zero, then no
+line-wrapping will be done; each error message will appear on a single
+line.
+.IP "\fB\-fdiagnostics\-show\-location=once\fR" 4
+.IX Item "-fdiagnostics-show-location=once"
+Only meaningful in line-wrapping mode.  Instructs the diagnostic messages
+reporter to emit \fIonce\fR source location information; that is, in
+case the message is too long to fit on a single physical line and has to
+be wrapped, the source location won't be emitted (as prefix) again,
+over and over, in subsequent continuation lines.  This is the default
+behavior.
+.IP "\fB\-fdiagnostics\-show\-location=every\-line\fR" 4
+.IX Item "-fdiagnostics-show-location=every-line"
+Only meaningful in line-wrapping mode.  Instructs the diagnostic
+messages reporter to emit the same source location information (as
+prefix) for physical lines that result from the process of breaking
+a message which is too long to fit on a single line.
+.Sh "Options to Request or Suppress Warnings"
+.IX Subsection "Options to Request or Suppress Warnings"
+Warnings are diagnostic messages that report constructions which
+are not inherently erroneous but which are risky or suggest there
+may have been an error.
+.PP
+You can request many specific warnings with options beginning \fB\-W\fR,
+for example \fB\-Wimplicit\fR to request warnings on implicit
+declarations.  Each of these specific warning options also has a
+negative form beginning \fB\-Wno\-\fR to turn off warnings;
+for example, \fB\-Wno\-implicit\fR.  This manual lists only one of the
+two forms, whichever is not the default.
+.PP
+The following options control the amount and kinds of warnings produced
+by \s-1GCC\s0; for further, language-specific options also refer to
+\&\f(CW at ref\fR{\*(C+ Dialect Options} and \f(CW at ref\fR{Objective\-C Dialect Options}.
+.IP "\fB\-fsyntax\-only\fR" 4
+.IX Item "-fsyntax-only"
+Check the code for syntax errors, but don't do anything beyond that.
+.IP "\fB\-pedantic\fR" 4
+.IX Item "-pedantic"
+Issue all the warnings demanded by strict \s-1ISO\s0 C and \s-1ISO\s0 \*(C+;
+reject all programs that use forbidden extensions, and some other
+programs that do not follow \s-1ISO\s0 C and \s-1ISO\s0 \*(C+.  For \s-1ISO\s0 C, follows the
+version of the \s-1ISO\s0 C standard specified by any \fB\-std\fR option used.
+.Sp
+Valid \s-1ISO\s0 C and \s-1ISO\s0 \*(C+ programs should compile properly with or without
+this option (though a rare few will require \fB\-ansi\fR or a
+\&\fB\-std\fR option specifying the required version of \s-1ISO\s0 C).  However,
+without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
+features are supported as well.  With this option, they are rejected.
+.Sp
+\&\fB\-pedantic\fR does not cause warning messages for use of the
+alternate keywords whose names begin and end with \fB_\|_\fR.  Pedantic
+warnings are also disabled in the expression that follows
+\&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
+these escape routes; application programs should avoid them.
+.Sp
+Some users try to use \fB\-pedantic\fR to check programs for strict \s-1ISO\s0
+C conformance.  They soon find that it does not do quite what they want:
+it finds some non-ISO practices, but not all\-\-\-only those for which
+\&\s-1ISO\s0 C \fIrequires\fR a diagnostic, and some others for which
+diagnostics have been added.
+.Sp
+A feature to report any failure to conform to \s-1ISO\s0 C might be useful in
+some instances, but would require considerable additional work and would
+be quite different from \fB\-pedantic\fR.  We don't have plans to
+support such a feature in the near future.
+.Sp
+Where the standard specified with \fB\-std\fR represents a \s-1GNU\s0
+extended dialect of C, such as \fBgnu89\fR or \fBgnu99\fR, there is a
+corresponding \fIbase standard\fR, the version of \s-1ISO\s0 C on which the \s-1GNU\s0
+extended dialect is based.  Warnings from \fB\-pedantic\fR are given
+where they are required by the base standard.  (It would not make sense
+for such warnings to be given only for features not in the specified \s-1GNU\s0
+C dialect, since by definition the \s-1GNU\s0 dialects of C include all
+features the compiler supports with the given option, and there would be
+nothing to warn about.)
+.IP "\fB\-pedantic\-errors\fR" 4
+.IX Item "-pedantic-errors"
+Like \fB\-pedantic\fR, except that errors are produced rather than
+warnings.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+Inhibit all warning messages.
+.IP "\fB\-Wno\-import\fR" 4
+.IX Item "-Wno-import"
+Inhibit warning messages about the use of \fB#import\fR.
+.IP "\fB\-Wchar\-subscripts\fR" 4
+.IX Item "-Wchar-subscripts"
+Warn if an array subscript has type \f(CW\*(C`char\*(C'\fR.  This is a common cause
+of error, as programmers often forget that this type is signed on some
+machines.
+.IP "\fB\-Wcomment\fR" 4
+.IX Item "-Wcomment"
+Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
+comment, or whenever a Backslash-Newline appears in a \fB//\fR comment.
+.IP "\fB\-Wformat\fR" 4
+.IX Item "-Wformat"
+Check calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR, etc., to make sure that
+the arguments supplied have types appropriate to the format string
+specified, and that the conversions specified in the format string make
+sense.  This includes standard functions, and others specified by format
+attributes, in the \f(CW\*(C`printf\*(C'\fR,
+\&\f(CW\*(C`scanf\*(C'\fR, \f(CW\*(C`strftime\*(C'\fR and \f(CW\*(C`strfmon\*(C'\fR (an X/Open extension,
+not in the C standard) families.
+.Sp
+The formats are checked against the format features supported by \s-1GNU\s0
+libc version 2.2.  These include all \s-1ISO\s0 C90 and C99 features, as well
+as features from the Single Unix Specification and some \s-1BSD\s0 and \s-1GNU\s0
+extensions.  Other library implementations may not support all these
+features; \s-1GCC\s0 does not support warning about features that go beyond a
+particular library's limitations.  However, if \fB\-pedantic\fR is used
+with \fB\-Wformat\fR, warnings will be given about format features not
+in the selected standard version (but not for \f(CW\*(C`strfmon\*(C'\fR formats,
+since those are not in any version of the C standard).  
+.Sp
+Since \fB\-Wformat\fR also checks for null format arguments for
+several functions, \fB\-Wformat\fR also implies \fB\-Wnonnull\fR.
+.Sp
+\&\fB\-Wformat\fR is included in \fB\-Wall\fR.  For more control over some
+aspects of format checking, the options \fB\-Wno\-format\-y2k\fR,
+\&\fB\-Wno\-format\-extra\-args\fR, \fB\-Wno\-format\-zero\-length\fR,
+\&\fB\-Wformat\-nonliteral\fR, \fB\-Wformat\-security\fR, and
+\&\fB\-Wformat=2\fR are available, but are not included in \fB\-Wall\fR.
+.IP "\fB\-Wno\-format\-y2k\fR" 4
+.IX Item "-Wno-format-y2k"
+If \fB\-Wformat\fR is specified, do not warn about \f(CW\*(C`strftime\*(C'\fR
+formats which may yield only a two-digit year.
+.IP "\fB\-Wno\-format\-extra\-args\fR" 4
+.IX Item "-Wno-format-extra-args"
+If \fB\-Wformat\fR is specified, do not warn about excess arguments to a
+\&\f(CW\*(C`printf\*(C'\fR or \f(CW\*(C`scanf\*(C'\fR format function.  The C standard specifies
+that such arguments are ignored.
+.Sp
+Where the unused arguments lie between used arguments that are
+specified with \fB$\fR operand number specifications, normally
+warnings are still given, since the implementation could not know what
+type to pass to \f(CW\*(C`va_arg\*(C'\fR to skip the unused arguments.  However,
+in the case of \f(CW\*(C`scanf\*(C'\fR formats, this option will suppress the
+warning if the unused arguments are all pointers, since the Single
+Unix Specification says that such unused arguments are allowed.
+.IP "\fB\-Wno\-format\-zero\-length\fR" 4
+.IX Item "-Wno-format-zero-length"
+If \fB\-Wformat\fR is specified, do not warn about zero-length formats.
+The C standard specifies that zero-length formats are allowed.
+.IP "\fB\-Wformat\-nonliteral\fR" 4
+.IX Item "-Wformat-nonliteral"
+If \fB\-Wformat\fR is specified, also warn if the format string is not a
+string literal and so cannot be checked, unless the format function
+takes its format arguments as a \f(CW\*(C`va_list\*(C'\fR.
+.IP "\fB\-Wformat\-security\fR" 4
+.IX Item "-Wformat-security"
+If \fB\-Wformat\fR is specified, also warn about uses of format
+functions that represent possible security problems.  At present, this
+warns about calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR functions where the
+format string is not a string literal and there are no format arguments,
+as in \f(CW\*(C`printf (foo);\*(C'\fR.  This may be a security hole if the format
+string came from untrusted input and contains \fB%n\fR.  (This is
+currently a subset of what \fB\-Wformat\-nonliteral\fR warns about, but
+in future warnings may be added to \fB\-Wformat\-security\fR that are not
+included in \fB\-Wformat\-nonliteral\fR.)
+.IP "\fB\-Wformat=2\fR" 4
+.IX Item "-Wformat=2"
+Enable \fB\-Wformat\fR plus format checks not included in
+\&\fB\-Wformat\fR.  Currently equivalent to \fB\-Wformat
+\&\-Wformat\-nonliteral \-Wformat\-security\fR.
+.IP "\fB\-Wnonnull\fR" 4
+.IX Item "-Wnonnull"
+Enable warning about passing a null pointer for arguments marked as
+requiring a non-null value by the \f(CW\*(C`nonnull\*(C'\fR function attribute.
+.Sp
+\&\fB\-Wnonnull\fR is included in \fB\-Wall\fR and \fB\-Wformat\fR.  It
+can be disabled with the \fB\-Wno\-nonnull\fR option.
+.IP "\fB\-Wimplicit\-int\fR" 4
+.IX Item "-Wimplicit-int"
+Warn when a declaration does not specify a type.
+.IP "\fB\-Wimplicit\-function\-declaration\fR" 4
+.IX Item "-Wimplicit-function-declaration"
+.PD 0
+.IP "\fB\-Werror\-implicit\-function\-declaration\fR" 4
+.IX Item "-Werror-implicit-function-declaration"
+.PD
+Give a warning (or error) whenever a function is used before being
+declared.
+.IP "\fB\-Wimplicit\fR" 4
+.IX Item "-Wimplicit"
+Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
+.IP "\fB\-Wmain\fR" 4
+.IX Item "-Wmain"
+Warn if the type of \fBmain\fR is suspicious.  \fBmain\fR should be a
+function with external linkage, returning int, taking either zero
+arguments, two, or three arguments of appropriate types.
+.IP "\fB\-Wmissing\-braces\fR" 4
+.IX Item "-Wmissing-braces"
+Warn if an aggregate or union initializer is not fully bracketed.  In
+the following example, the initializer for \fBa\fR is not fully
+bracketed, but that for \fBb\fR is fully bracketed.
+.Sp
+.Vb 2
+\&        int a[2][2] = { 0, 1, 2, 3 };
+\&        int b[2][2] = { { 0, 1 }, { 2, 3 } };
+.Ve
+.IP "\fB\-Wparentheses\fR" 4
+.IX Item "-Wparentheses"
+Warn if parentheses are omitted in certain contexts, such
+as when there is an assignment in a context where a truth value
+is expected, or when operators are nested whose precedence people
+often get confused about.
+.Sp
+Also warn about constructions where there may be confusion to which
+\&\f(CW\*(C`if\*(C'\fR statement an \f(CW\*(C`else\*(C'\fR branch belongs.  Here is an example of
+such a case:
+.Sp
+.Vb 7
+\&        {
+\&          if (a)
+\&            if (b)
+\&              foo ();
+\&          else
+\&            bar ();
+\&        }
+.Ve
+.Sp
+In C, every \f(CW\*(C`else\*(C'\fR branch belongs to the innermost possible \f(CW\*(C`if\*(C'\fR
+statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR.  This is often not
+what the programmer expected, as illustrated in the above example by
+indentation the programmer chose.  When there is the potential for this
+confusion, \s-1GCC\s0 will issue a warning when this flag is specified.
+To eliminate the warning, add explicit braces around the innermost
+\&\f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR could belong to
+the enclosing \f(CW\*(C`if\*(C'\fR.  The resulting code would look like this:
+.Sp
+.Vb 9
+\&        {
+\&          if (a)
+\&            {
+\&              if (b)
+\&                foo ();
+\&              else
+\&                bar ();
+\&            }
+\&        }
+.Ve
+.IP "\fB\-Wsequence\-point\fR" 4
+.IX Item "-Wsequence-point"
+Warn about code that may have undefined semantics because of violations
+of sequence point rules in the C standard.
+.Sp
+The C standard defines the order in which expressions in a C program are
+evaluated in terms of \fIsequence points\fR, which represent a partial
+ordering between the execution of parts of the program: those executed
+before the sequence point, and those executed after it.  These occur
+after the evaluation of a full expression (one which is not part of a
+larger expression), after the evaluation of the first operand of a
+\&\f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, \f(CW\*(C`? :\*(C'\fR or \f(CW\*(C`,\*(C'\fR (comma) operator, before a
+function is called (but after the evaluation of its arguments and the
+expression denoting the called function), and in certain other places.
+Other than as expressed by the sequence point rules, the order of
+evaluation of subexpressions of an expression is not specified.  All
+these rules describe only a partial order rather than a total order,
+since, for example, if two functions are called within one expression
+with no sequence point between them, the order in which the functions
+are called is not specified.  However, the standards committee have
+ruled that function calls do not overlap.
+.Sp
+It is not specified when between sequence points modifications to the
+values of objects take effect.  Programs whose behavior depends on this
+have undefined behavior; the C standard specifies that ``Between the
+previous and next sequence point an object shall have its stored value
+modified at most once by the evaluation of an expression.  Furthermore,
+the prior value shall be read only to determine the value to be
+stored.''.  If a program breaks these rules, the results on any
+particular implementation are entirely unpredictable.
+.Sp
+Examples of code with undefined behavior are \f(CW\*(C`a = a++;\*(C'\fR, \f(CW\*(C`a[n]
+= b[n++]\*(C'\fR and \f(CW\*(C`a[i++] = i;\*(C'\fR.  Some more complicated cases are not
+diagnosed by this option, and it may give an occasional false positive
+result, but in general it has been found fairly effective at detecting
+this sort of problem in programs.
+.Sp
+The present implementation of this option only works for C programs.  A
+future implementation may also work for \*(C+ programs.
+.Sp
+The C standard is worded confusingly, therefore there is some debate
+over the precise meaning of the sequence point rules in subtle cases.
+Links to discussions of the problem, including proposed formal
+definitions, may be found on our readings page, at
+<\fBhttp://gcc.gnu.org/readings.html\fR>.
+.IP "\fB\-Wreturn\-type\fR" 4
+.IX Item "-Wreturn-type"
+Warn whenever a function is defined with a return-type that defaults to
+\&\f(CW\*(C`int\*(C'\fR.  Also warn about any \f(CW\*(C`return\*(C'\fR statement with no
+return-value in a function whose return-type is not \f(CW\*(C`void\*(C'\fR.
+.Sp
+For \*(C+, a function without return type always produces a diagnostic
+message, even when \fB\-Wno\-return\-type\fR is specified.  The only
+exceptions are \fBmain\fR and functions defined in system headers.
+.IP "\fB\-Wswitch\fR" 4
+.IX Item "-Wswitch"
+Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumeral type
+and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
+enumeration.  (The presence of a \f(CW\*(C`default\*(C'\fR label prevents this
+warning.)  \f(CW\*(C`case\*(C'\fR labels outside the enumeration range also
+provoke warnings when this option is used.
+.IP "\fB\-Wswitch\-default\fR" 4
+.IX Item "-Wswitch-default"
+Warn whenever a \f(CW\*(C`switch\*(C'\fR statement does not have a \f(CW\*(C`default\*(C'\fR
+case.
+.IP "\fB\-Wswitch\-enum\fR" 4
+.IX Item "-Wswitch-enum"
+Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumeral type
+and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
+enumeration.  \f(CW\*(C`case\*(C'\fR labels outside the enumeration range also
+provoke warnings when this option is used.
+.IP "\fB\-Wtrigraphs\fR" 4
+.IX Item "-Wtrigraphs"
+Warn if any trigraphs are encountered that might change the meaning of
+the program (trigraphs within comments are not warned about).
+.IP "\fB\-Wunused\-function\fR" 4
+.IX Item "-Wunused-function"
+Warn whenever a static function is declared but not defined or a
+non\e\-inline static function is unused.
+.IP "\fB\-Wunused\-label\fR" 4
+.IX Item "-Wunused-label"
+Warn whenever a label is declared but not used.
+.Sp
+To suppress this warning use the \fBunused\fR attribute.
+.IP "\fB\-Wunused\-parameter\fR" 4
+.IX Item "-Wunused-parameter"
+Warn whenever a function parameter is unused aside from its declaration.
+.Sp
+To suppress this warning use the \fBunused\fR attribute.
+.IP "\fB\-Wunused\-variable\fR" 4
+.IX Item "-Wunused-variable"
+Warn whenever a local variable or non-constant static variable is unused
+aside from its declaration
+.Sp
+To suppress this warning use the \fBunused\fR attribute.
+.IP "\fB\-Wunused\-value\fR" 4
+.IX Item "-Wunused-value"
+Warn whenever a statement computes a result that is explicitly not used.
+.Sp
+To suppress this warning cast the expression to \fBvoid\fR.
+.IP "\fB\-Wunused\fR" 4
+.IX Item "-Wunused"
+All the above \fB\-Wunused\fR options combined.
+.Sp
+In order to get a warning about an unused function parameter, you must
+either specify \fB\-W \-Wunused\fR or separately specify
+\&\fB\-Wunused\-parameter\fR.
+.IP "\fB\-Wuninitialized\fR" 4
+.IX Item "-Wuninitialized"
+Warn if an automatic variable is used without first being initialized or
+if a variable may be clobbered by a \f(CW\*(C`setjmp\*(C'\fR call.
+.Sp
+These warnings are possible only in optimizing compilation,
+because they require data flow information that is computed only
+when optimizing.  If you don't specify \fB\-O\fR, you simply won't
+get these warnings.
+.Sp
+These warnings occur only for variables that are candidates for
+register allocation.  Therefore, they do not occur for a variable that
+is declared \f(CW\*(C`volatile\*(C'\fR, or whose address is taken, or whose size
+is other than 1, 2, 4 or 8 bytes.  Also, they do not occur for
+structures, unions or arrays, even when they are in registers.
+.Sp
+Note that there may be no warning about a variable that is used only
+to compute a value that itself is never used, because such
+computations may be deleted by data flow analysis before the warnings
+are printed.
+.Sp
+These warnings are made optional because \s-1GCC\s0 is not smart
+enough to see all the reasons why the code might be correct
+despite appearing to have an error.  Here is one example of how
+this can happen:
+.Sp
+.Vb 12
+\&        {
+\&          int x;
+\&          switch (y)
+\&            {
+\&            case 1: x = 1;
+\&              break;
+\&            case 2: x = 4;
+\&              break;
+\&            case 3: x = 5;
+\&            }
+\&          foo (x);
+\&        }
+.Ve
+.Sp
+If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
+always initialized, but \s-1GCC\s0 doesn't know this.  Here is
+another common case:
+.Sp
+.Vb 6
+\&        {
+\&          int save_y;
+\&          if (change_y) save_y = y, y = new_y;
+\&          ...
+\&          if (change_y) y = save_y;
+\&        }
+.Ve
+.Sp
+This has no bug because \f(CW\*(C`save_y\*(C'\fR is used only if it is set.
+.Sp
+This option also warns when a non-volatile automatic variable might be
+changed by a call to \f(CW\*(C`longjmp\*(C'\fR.  These warnings as well are possible
+only in optimizing compilation.
+.Sp
+The compiler sees only the calls to \f(CW\*(C`setjmp\*(C'\fR.  It cannot know
+where \f(CW\*(C`longjmp\*(C'\fR will be called; in fact, a signal handler could
+call it at any point in the code.  As a result, you may get a warning
+even when there is in fact no problem because \f(CW\*(C`longjmp\*(C'\fR cannot
+in fact be called at the place which would cause a problem.
+.Sp
+Some spurious warnings can be avoided if you declare all the functions
+you use that never return as \f(CW\*(C`noreturn\*(C'\fR.  
+.IP "\fB\-Wunknown\-pragmas\fR" 4
+.IX Item "-Wunknown-pragmas"
+Warn when a #pragma directive is encountered which is not understood by
+\&\s-1GCC\s0.  If this command line option is used, warnings will even be issued
+for unknown pragmas in system header files.  This is not the case if
+the warnings were only enabled by the \fB\-Wall\fR command line option.
+.IP "\fB\-Wstrict\-aliasing\fR" 4
+.IX Item "-Wstrict-aliasing"
+This option is only active when \fB\-fstrict\-aliasing\fR is active.
+It warns about code which might break the strict aliasing rules that the
+compiler is using for optimization. The warning does not catch all
+cases, but does attempt to catch the more common pitfalls. It is
+included in \fB\-Wall\fR.
+.IP "\fB\-Wall\fR" 4
+.IX Item "-Wall"
+All of the above \fB\-W\fR options combined.  This enables all the
+warnings about constructions that some users consider questionable, and
+that are easy to avoid (or modify to prevent the warning), even in
+conjunction with macros.  This also enables some language-specific
+warnings described in \f(CW at ref\fR{\*(C+ Dialect Options} and
+\&\f(CW at ref\fR{Objective\-C Dialect Options}.
+.PP
+The following \fB\-W...\fR options are not implied by \fB\-Wall\fR.
+Some of them warn about constructions that users generally do not
+consider questionable, but which occasionally you might wish to check
+for; others warn about constructions that are necessary or hard to avoid
+in some cases, and there is no simple way to modify the code to suppress
+the warning.
+.IP "\fB\-W\fR" 4
+.IX Item "-W"
+Print extra warning messages for these events:
+.RS 4
+.IP "*" 4
+A function can return either with or without a value.  (Falling
+off the end of the function body is considered returning without
+a value.)  For example, this function would evoke such a
+warning:
+.Sp
+.Vb 5
+\&        foo (a)
+\&        {
+\&          if (a > 0)
+\&            return a;
+\&        }
+.Ve
+.IP "*" 4
+An expression-statement or the left-hand side of a comma expression
+contains no side effects.
+To suppress the warning, cast the unused expression to void.
+For example, an expression such as \fBx[i,j]\fR will cause a warning,
+but \fBx[(void)i,j]\fR will not.
+.IP "*" 4
+An unsigned value is compared against zero with \fB<\fR or \fB>=\fR.
+.IP "*" 4
+A comparison like \fBx<=y<=z\fR appears; this is equivalent to
+\&\fB(x<=y ? 1 : 0) <= z\fR, which is a different interpretation from
+that of ordinary mathematical notation.
+.IP "*" 4
+Storage-class specifiers like \f(CW\*(C`static\*(C'\fR are not the first things in
+a declaration.  According to the C Standard, this usage is obsolescent.
+.IP "*" 4
+The return type of a function has a type qualifier such as \f(CW\*(C`const\*(C'\fR.
+Such a type qualifier has no effect, since the value returned by a
+function is not an lvalue.  (But don't warn about the \s-1GNU\s0 extension of
+\&\f(CW\*(C`volatile void\*(C'\fR return types.  That extension will be warned about
+if \fB\-pedantic\fR is specified.)
+.IP "*" 4
+If \fB\-Wall\fR or \fB\-Wunused\fR is also specified, warn about unused
+arguments.
+.IP "*" 4
+A comparison between signed and unsigned values could produce an
+incorrect result when the signed value is converted to unsigned.
+(But don't warn if \fB\-Wno\-sign\-compare\fR is also specified.)
+.IP "*" 4
+An aggregate has a partly bracketed initializer.
+For example, the following code would evoke such a warning,
+because braces are missing around the initializer for \f(CW\*(C`x.h\*(C'\fR:
+.Sp
+.Vb 3
+\&        struct s { int f, g; };
+\&        struct t { struct s h; int i; };
+\&        struct t x = { 1, 2, 3 };
+.Ve
+.IP "*" 4
+An aggregate has an initializer which does not initialize all members.
+For example, the following code would cause such a warning, because
+\&\f(CW\*(C`x.h\*(C'\fR would be implicitly initialized to zero:
+.Sp
+.Vb 2
+\&        struct s { int f, g, h; };
+\&        struct s x = { 3, 4 };
+.Ve
+.RE
+.RS 4
+.RE
+.IP "\fB\-Wno\-div\-by\-zero\fR" 4
+.IX Item "-Wno-div-by-zero"
+Do not warn about compile-time integer division by zero.  Floating point
+division by zero is not warned about, as it can be a legitimate way of
+obtaining infinities and NaNs.
+.IP "\fB\-Wsystem\-headers\fR" 4
+.IX Item "-Wsystem-headers"
+Print warning messages for constructs found in system header files.
+Warnings from system headers are normally suppressed, on the assumption
+that they usually do not indicate real problems and would only make the
+compiler output harder to read.  Using this command line option tells
+\&\s-1GCC\s0 to emit warnings from system headers as if they occurred in user
+code.  However, note that using \fB\-Wall\fR in conjunction with this
+option will \fInot\fR warn about unknown pragmas in system
+headers\-\-\-for that, \fB\-Wunknown\-pragmas\fR must also be used.
+.IP "\fB\-Wfloat\-equal\fR" 4
+.IX Item "-Wfloat-equal"
+Warn if floating point values are used in equality comparisons.
+.Sp
+The idea behind this is that sometimes it is convenient (for the
+programmer) to consider floating-point values as approximations to
+infinitely precise real numbers.  If you are doing this, then you need
+to compute (by analyzing the code, or in some other way) the maximum or
+likely maximum error that the computation introduces, and allow for it
+when performing comparisons (and when producing output, but that's a
+different problem).  In particular, instead of testing for equality, you
+would check to see whether the two values have ranges that overlap; and
+this is done with the relational operators, so equality comparisons are
+probably mistaken.
+.IP "\fB\-Wtraditional\fR (C only)" 4
+.IX Item "-Wtraditional (C only)"
+Warn about certain constructs that behave differently in traditional and
+\&\s-1ISO\s0 C.  Also warn about \s-1ISO\s0 C constructs that have no traditional C
+equivalent, and/or problematic constructs which should be avoided.
+.RS 4
+.IP "*" 4
+Macro parameters that appear within string literals in the macro body.
+In traditional C macro replacement takes place within string literals,
+but does not in \s-1ISO\s0 C.
+.IP "*" 4
+In traditional C, some preprocessor directives did not exist.
+Traditional preprocessors would only consider a line to be a directive
+if the \fB#\fR appeared in column 1 on the line.  Therefore
+\&\fB\-Wtraditional\fR warns about directives that traditional C
+understands but would ignore because the \fB#\fR does not appear as the
+first character on the line.  It also suggests you hide directives like
+\&\fB#pragma\fR not understood by traditional C by indenting them.  Some
+traditional implementations would not recognize \fB#elif\fR, so it
+suggests avoiding it altogether.
+.IP "*" 4
+A function-like macro that appears without arguments.
+.IP "*" 4
+The unary plus operator.
+.IP "*" 4
+The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating point
+constant suffixes.  (Traditional C does support the \fBL\fR suffix on integer
+constants.)  Note, these suffixes appear in macros defined in the system
+headers of most modern systems, e.g. the \fB_MIN\fR/\fB_MAX\fR macros in \f(CW\*(C`<limits.h>\*(C'\fR.
+Use of these macros in user code might normally lead to spurious
+warnings, however gcc's integrated preprocessor has enough context to
+avoid warning in these cases.
+.IP "*" 4
+A function declared external in one block and then used after the end of
+the block.
+.IP "*" 4
+A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
+.IP "*" 4
+A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
+This construct is not accepted by some traditional C compilers.
+.IP "*" 4
+The \s-1ISO\s0 type of an integer constant has a different width or
+signedness from its traditional type.  This warning is only issued if
+the base of the constant is ten.  I.e. hexadecimal or octal values, which
+typically represent bit patterns, are not warned about.
+.IP "*" 4
+Usage of \s-1ISO\s0 string concatenation is detected.
+.IP "*" 4
+Initialization of automatic aggregates.
+.IP "*" 4
+Identifier conflicts with labels.  Traditional C lacks a separate
+namespace for labels.
+.IP "*" 4
+Initialization of unions.  If the initializer is zero, the warning is
+omitted.  This is done under the assumption that the zero initializer in
+user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
+initializer warnings and relies on default initialization to zero in the
+traditional C case.
+.IP "*" 4
+Conversions by prototypes between fixed/floating point values and vice
+versa.  The absence of these prototypes when compiling with traditional
+C would cause serious problems.  This is a subset of the possible
+conversion warnings, for the full set use \fB\-Wconversion\fR.
+.IP "*" 4
+Use of \s-1ISO\s0 C style function definitions.  This warning intentionally is
+\&\fInot\fR issued for prototype declarations or variadic functions
+because these \s-1ISO\s0 C features will appear in your code when using
+libiberty's traditional C compatibility macros, \f(CW\*(C`PARAMS\*(C'\fR and
+\&\f(CW\*(C`VPARAMS\*(C'\fR.  This warning is also bypassed for nested functions
+because that feature is already a gcc extension and thus not relevant to
+traditional C compatibility.
+.RE
+.RS 4
+.RE
+.IP "\fB\-Wdeclaration\-after\-statement\fR (C only)" 4
+.IX Item "-Wdeclaration-after-statement (C only)"
+Warn when a declaration is found after a statement in a block.  This
+construct, known from \*(C+, was introduced with \s-1ISO\s0 C99 and is by default
+allowed in \s-1GCC\s0.  It is not supported by \s-1ISO\s0 C90 and was not supported by
+\&\s-1GCC\s0 versions before \s-1GCC\s0 3.0.  
+.IP "\fB\-Wundef\fR" 4
+.IX Item "-Wundef"
+Warn if an undefined identifier is evaluated in an \fB#if\fR directive.
+.IP "\fB\-Wendif\-labels\fR" 4
+.IX Item "-Wendif-labels"
+Warn whenever an \fB#else\fR or an \fB#endif\fR are followed by text.
+.IP "\fB\-Wshadow\fR" 4
+.IX Item "-Wshadow"
+Warn whenever a local variable shadows another local variable, parameter or
+global variable or whenever a built-in function is shadowed.
+.IP "\fB\-Wlarger\-than\-\fR\fIlen\fR" 4
+.IX Item "-Wlarger-than-len"
+Warn whenever an object of larger than \fIlen\fR bytes is defined.
+.IP "\fB\-Wpointer\-arith\fR" 4
+.IX Item "-Wpointer-arith"
+Warn about anything that depends on the ``size of'' a function type or
+of \f(CW\*(C`void\*(C'\fR.  \s-1GNU\s0 C assigns these types a size of 1, for
+convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers
+to functions.
+.IP "\fB\-Wbad\-function\-cast\fR (C only)" 4
+.IX Item "-Wbad-function-cast (C only)"
+Warn whenever a function call is cast to a non-matching type.
+For example, warn if \f(CW\*(C`int malloc()\*(C'\fR is cast to \f(CW\*(C`anything *\*(C'\fR.
+.IP "\fB\-Wcast\-qual\fR" 4
+.IX Item "-Wcast-qual"
+Warn whenever a pointer is cast so as to remove a type qualifier from
+the target type.  For example, warn if a \f(CW\*(C`const char *\*(C'\fR is cast
+to an ordinary \f(CW\*(C`char *\*(C'\fR.
+.IP "\fB\-Wcast\-align\fR" 4
+.IX Item "-Wcast-align"
+Warn whenever a pointer is cast such that the required alignment of the
+target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
+an \f(CW\*(C`int *\*(C'\fR on machines where integers can only be accessed at
+two\- or four-byte boundaries.
+.IP "\fB\-Wwrite\-strings\fR" 4
+.IX Item "-Wwrite-strings"
+When compiling C, give string constants the type \f(CW\*(C`const
+char[\f(CIlength\f(CW]\*(C'\fR so that
+copying the address of one into a non\-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR
+pointer will get a warning; when compiling \*(C+, warn about the
+deprecated conversion from string constants to \f(CW\*(C`char *\*(C'\fR.
+These warnings will help you find at
+compile time code that can try to write into a string constant, but
+only if you have been very careful about using \f(CW\*(C`const\*(C'\fR in
+declarations and prototypes.  Otherwise, it will just be a nuisance;
+this is why we did not make \fB\-Wall\fR request these warnings.
+.IP "\fB\-Wconversion\fR" 4
+.IX Item "-Wconversion"
+Warn if a prototype causes a type conversion that is different from what
+would happen to the same argument in the absence of a prototype.  This
+includes conversions of fixed point to floating and vice versa, and
+conversions changing the width or signedness of a fixed point argument
+except when the same as the default promotion.
+.Sp
+Also, warn if a negative integer constant expression is implicitly
+converted to an unsigned type.  For example, warn about the assignment
+\&\f(CW\*(C`x = \-1\*(C'\fR if \f(CW\*(C`x\*(C'\fR is unsigned.  But do not warn about explicit
+casts like \f(CW\*(C`(unsigned) \-1\*(C'\fR.
+.IP "\fB\-Wsign\-compare\fR" 4
+.IX Item "-Wsign-compare"
+Warn when a comparison between signed and unsigned values could produce
+an incorrect result when the signed value is converted to unsigned.
+This warning is enabled by \fB\-W\fR, and by \fB\-Wall\fR
+in \*(C+ only.
+.IP "\fB\-Waggregate\-return\fR" 4
+.IX Item "-Waggregate-return"
+Warn if any functions that return structures or unions are defined or
+called.  (In languages where you can return an array, this also elicits
+a warning.)
+.IP "\fB\-Wstrict\-prototypes\fR (C only)" 4
+.IX Item "-Wstrict-prototypes (C only)"
+Warn if a function is declared or defined without specifying the
+argument types.  (An old-style function definition is permitted without
+a warning if preceded by a declaration which specifies the argument
+types.)
+.IP "\fB\-Wmissing\-prototypes\fR (C only)" 4
+.IX Item "-Wmissing-prototypes (C only)"
+Warn if a global function is defined without a previous prototype
+declaration.  This warning is issued even if the definition itself
+provides a prototype.  The aim is to detect global functions that fail
+to be declared in header files.
+.IP "\fB\-Wmissing\-declarations\fR (C only)" 4
+.IX Item "-Wmissing-declarations (C only)"
+Warn if a global function is defined without a previous declaration.
+Do so even if the definition itself provides a prototype.
+Use this option to detect global functions that are not declared in
+header files.
+.IP "\fB\-Wmissing\-noreturn\fR" 4
+.IX Item "-Wmissing-noreturn"
+Warn about functions which might be candidates for attribute \f(CW\*(C`noreturn\*(C'\fR.
+Note these are only possible candidates, not absolute ones.  Care should
+be taken to manually verify functions actually do not ever return before
+adding the \f(CW\*(C`noreturn\*(C'\fR attribute, otherwise subtle code generation
+bugs could be introduced.  You will not get a warning for \f(CW\*(C`main\*(C'\fR in
+hosted C environments.
+.IP "\fB\-Wmissing\-format\-attribute\fR" 4
+.IX Item "-Wmissing-format-attribute"
+If \fB\-Wformat\fR is enabled, also warn about functions which might be
+candidates for \f(CW\*(C`format\*(C'\fR attributes.  Note these are only possible
+candidates, not absolute ones.  \s-1GCC\s0 will guess that \f(CW\*(C`format\*(C'\fR
+attributes might be appropriate for any function that calls a function
+like \f(CW\*(C`vprintf\*(C'\fR or \f(CW\*(C`vscanf\*(C'\fR, but this might not always be the
+case, and some functions for which \f(CW\*(C`format\*(C'\fR attributes are
+appropriate may not be detected.  This option has no effect unless
+\&\fB\-Wformat\fR is enabled (possibly by \fB\-Wall\fR).
+.IP "\fB\-Wno\-multichar\fR" 4
+.IX Item "-Wno-multichar"
+Do not warn if a multicharacter constant (\fB'\s-1FOOF\s0'\fR) is used.
+Usually they indicate a typo in the user's code, as they have
+implementation-defined values, and should not be used in portable code.
+.IP "\fB\-Wno\-deprecated\-declarations\fR" 4
+.IX Item "-Wno-deprecated-declarations"
+Do not warn about uses of functions, variables, and types marked as
+deprecated by using the \f(CW\*(C`deprecated\*(C'\fR attribute.
+(@pxref{Function Attributes}, \f(CW at pxref\fR{Variable Attributes},
+\&\f(CW at pxref\fR{Type Attributes}.)
+.IP "\fB\-Wpacked\fR" 4
+.IX Item "-Wpacked"
+Warn if a structure is given the packed attribute, but the packed
+attribute has no effect on the layout or size of the structure.
+Such structures may be mis-aligned for little benefit.  For
+instance, in this code, the variable \f(CW\*(C`f.x\*(C'\fR in \f(CW\*(C`struct bar\*(C'\fR
+will be misaligned even though \f(CW\*(C`struct bar\*(C'\fR does not itself
+have the packed attribute:
+.Sp
+.Vb 8
+\&        struct foo {
+\&          int x;
+\&          char a, b, c, d;
+\&        } __attribute__((packed));
+\&        struct bar {
+\&          char z;
+\&          struct foo f;
+\&        };
+.Ve
+.IP "\fB\-Wpadded\fR" 4
+.IX Item "-Wpadded"
+Warn if padding is included in a structure, either to align an element
+of the structure or to align the whole structure.  Sometimes when this
+happens it is possible to rearrange the fields of the structure to
+reduce the padding and so make the structure smaller.
+.IP "\fB\-Wredundant\-decls\fR" 4
+.IX Item "-Wredundant-decls"
+Warn if anything is declared more than once in the same scope, even in
+cases where multiple declaration is valid and changes nothing.
+.IP "\fB\-Wnested\-externs\fR (C only)" 4
+.IX Item "-Wnested-externs (C only)"
+Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function.
+.IP "\fB\-Wunreachable\-code\fR" 4
+.IX Item "-Wunreachable-code"
+Warn if the compiler detects that code will never be executed.
+.Sp
+This option is intended to warn when the compiler detects that at
+least a whole line of source code will never be executed, because
+some condition is never satisfied or because it is after a
+procedure that never returns.
+.Sp
+It is possible for this option to produce a warning even though there
+are circumstances under which part of the affected line can be executed,
+so care should be taken when removing apparently-unreachable code.
+.Sp
+For instance, when a function is inlined, a warning may mean that the
+line is unreachable in only one inlined copy of the function.
+.Sp
+This option is not made part of \fB\-Wall\fR because in a debugging
+version of a program there is often substantial code which checks
+correct functioning of the program and is, hopefully, unreachable
+because the program does work.  Another common use of unreachable
+code is to provide behavior which is selectable at compile\-time.
+.IP "\fB\-Winline\fR" 4
+.IX Item "-Winline"
+Warn if a function can not be inlined and it was declared as inline.
+Even with this option, the compiler will not warn about failures to
+inline functions declared in system headers.  
+.Sp
+The compiler uses a variety of heuristics to determine whether or not
+to inline a function.  For example, the compiler takes into account
+the size of the function being inlined and the the amount of inlining
+that has already been done in the current function.  Therefore,
+seemingly insignificant changes in the source program can cause the
+warnings produced by \fB\-Winline\fR to appear or disappear.
+.IP "\fB\-Wlong\-long\fR" 4
+.IX Item "-Wlong-long"
+Warn if \fBlong long\fR type is used.  This is default.  To inhibit
+the warning messages, use \fB\-Wno\-long\-long\fR.  Flags
+\&\fB\-Wlong\-long\fR and \fB\-Wno\-long\-long\fR are taken into account
+only when \fB\-pedantic\fR flag is used.
+.IP "\fB\-Wdisabled\-optimization\fR" 4
+.IX Item "-Wdisabled-optimization"
+Warn if a requested optimization pass is disabled.  This warning does
+not generally indicate that there is anything wrong with your code; it
+merely indicates that \s-1GCC\s0's optimizers were unable to handle the code
+effectively.  Often, the problem is that your code is too big or too
+complex; \s-1GCC\s0 will refuse to optimize programs when the optimization
+itself is likely to take inordinate amounts of time.
+.IP "\fB\-Werror\fR" 4
+.IX Item "-Werror"
+Make all warnings into errors.
+.Sh "Options for Debugging Your Program or \s-1GCC\s0"
+.IX Subsection "Options for Debugging Your Program or GCC"
+\&\s-1GCC\s0 has various special options that are used for debugging
+either your program or \s-1GCC:\s0
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+Produce debugging information in the operating system's native format
+(stabs, \s-1COFF\s0, \s-1XCOFF\s0, or \s-1DWARF\s0).  \s-1GDB\s0 can work with this debugging
+information.
+.Sp
+On most systems that use stabs format, \fB\-g\fR enables use of extra
+debugging information that only \s-1GDB\s0 can use; this extra information
+makes debugging work better in \s-1GDB\s0 but will probably make other debuggers
+crash or
+refuse to read the program.  If you want to control for certain whether
+to generate the extra information, use \fB\-gstabs+\fR, \fB\-gstabs\fR,
+\&\fB\-gxcoff+\fR, \fB\-gxcoff\fR, \fB\-gdwarf\-1+\fR, \fB\-gdwarf\-1\fR,
+or \fB\-gvms\fR (see below).
+.Sp
+Unlike most other C compilers, \s-1GCC\s0 allows you to use \fB\-g\fR with
+\&\fB\-O\fR.  The shortcuts taken by optimized code may occasionally
+produce surprising results: some variables you declared may not exist
+at all; flow of control may briefly move where you did not expect it;
+some statements may not be executed because they compute constant
+results or their values were already at hand; some statements may
+execute in different places because they were moved out of loops.
+.Sp
+Nevertheless it proves possible to debug optimized output.  This makes
+it reasonable to use the optimizer for programs that might have bugs.
+.Sp
+The following options are useful when \s-1GCC\s0 is generated with the
+capability for more than one debugging format.
+.IP "\fB\-ggdb\fR" 4
+.IX Item "-ggdb"
+Produce debugging information for use by \s-1GDB\s0.  This means to use the
+most expressive format available (\s-1DWARF\s0 2, stabs, or the native format
+if neither of those are supported), including \s-1GDB\s0 extensions if at all
+possible.
+.IP "\fB\-gstabs\fR" 4
+.IX Item "-gstabs"
+Produce debugging information in stabs format (if that is supported),
+without \s-1GDB\s0 extensions.  This is the format used by \s-1DBX\s0 on most \s-1BSD\s0
+systems.  On \s-1MIPS\s0, Alpha and System V Release 4 systems this option
+produces stabs debugging output which is not understood by \s-1DBX\s0 or \s-1SDB\s0.
+On System V Release 4 systems this option requires the \s-1GNU\s0 assembler.
+.IP "\fB\-gstabs+\fR" 4
+.IX Item "-gstabs+"
+Produce debugging information in stabs format (if that is supported),
+using \s-1GNU\s0 extensions understood only by the \s-1GNU\s0 debugger (\s-1GDB\s0).  The
+use of these extensions is likely to make other debuggers crash or
+refuse to read the program.
+.IP "\fB\-gcoff\fR" 4
+.IX Item "-gcoff"
+Produce debugging information in \s-1COFF\s0 format (if that is supported).
+This is the format used by \s-1SDB\s0 on most System V systems prior to
+System V Release 4.
+.IP "\fB\-gxcoff\fR" 4
+.IX Item "-gxcoff"
+Produce debugging information in \s-1XCOFF\s0 format (if that is supported).
+This is the format used by the \s-1DBX\s0 debugger on \s-1IBM\s0 \s-1RS/6000\s0 systems.
+.IP "\fB\-gxcoff+\fR" 4
+.IX Item "-gxcoff+"
+Produce debugging information in \s-1XCOFF\s0 format (if that is supported),
+using \s-1GNU\s0 extensions understood only by the \s-1GNU\s0 debugger (\s-1GDB\s0).  The
+use of these extensions is likely to make other debuggers crash or
+refuse to read the program, and may cause assemblers other than the \s-1GNU\s0
+assembler (\s-1GAS\s0) to fail with an error.
+.IP "\fB\-gdwarf\fR" 4
+.IX Item "-gdwarf"
+Produce debugging information in \s-1DWARF\s0 version 1 format (if that is
+supported).  This is the format used by \s-1SDB\s0 on most System V Release 4
+systems.
+.Sp
+This option is deprecated.
+.IP "\fB\-gdwarf+\fR" 4
+.IX Item "-gdwarf+"
+Produce debugging information in \s-1DWARF\s0 version 1 format (if that is
+supported), using \s-1GNU\s0 extensions understood only by the \s-1GNU\s0 debugger
+(\s-1GDB\s0).  The use of these extensions is likely to make other debuggers
+crash or refuse to read the program.
+.Sp
+This option is deprecated.
+.IP "\fB\-gdwarf\-2\fR" 4
+.IX Item "-gdwarf-2"
+Produce debugging information in \s-1DWARF\s0 version 2 format (if that is
+supported).  This is the format used by \s-1DBX\s0 on \s-1IRIX\s0 6.
+.IP "\fB\-gvms\fR" 4
+.IX Item "-gvms"
+Produce debugging information in \s-1VMS\s0 debug format (if that is
+supported).  This is the format used by \s-1DEBUG\s0 on \s-1VMS\s0 systems.
+.IP "\fB\-g\fR\fIlevel\fR" 4
+.IX Item "-glevel"
+.PD 0
+.IP "\fB\-ggdb\fR\fIlevel\fR" 4
+.IX Item "-ggdblevel"
+.IP "\fB\-gstabs\fR\fIlevel\fR" 4
+.IX Item "-gstabslevel"
+.IP "\fB\-gcoff\fR\fIlevel\fR" 4
+.IX Item "-gcofflevel"
+.IP "\fB\-gxcoff\fR\fIlevel\fR" 4
+.IX Item "-gxcofflevel"
+.IP "\fB\-gvms\fR\fIlevel\fR" 4
+.IX Item "-gvmslevel"
+.PD
+Request debugging information and also use \fIlevel\fR to specify how
+much information.  The default level is 2.
+.Sp
+Level 1 produces minimal information, enough for making backtraces in
+parts of the program that you don't plan to debug.  This includes
+descriptions of functions and external variables, but no information
+about local variables and no line numbers.
+.Sp
+Level 3 includes extra information, such as all the macro definitions
+present in the program.  Some debuggers support macro expansion when
+you use \fB\-g3\fR.
+.Sp
+Note that in order to avoid confusion between \s-1DWARF1\s0 debug level 2,
+and \s-1DWARF2\s0, neither \fB\-gdwarf\fR nor \fB\-gdwarf\-2\fR accept
+a concatenated debug level.  Instead use an additional \fB\-g\fR\fIlevel\fR
+option to change the debug level for \s-1DWARF1\s0 or \s-1DWARF2\s0.
+.IP "\fB\-feliminate\-dwarf2\-dups\fR" 4
+.IX Item "-feliminate-dwarf2-dups"
+Compress \s-1DWARF2\s0 debugging information by eliminating duplicated
+information about each symbol.  This option only makes sense when
+generating \s-1DWARF2\s0 debugging information with \fB\-gdwarf\-2\fR.
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+Generate extra code to write profile information suitable for the
+analysis program \fBprof\fR.  You must use this option when compiling
+the source files you want data about, and you must also use it when
+linking.
+.IP "\fB\-pg\fR" 4
+.IX Item "-pg"
+Generate extra code to write profile information suitable for the
+analysis program \fBgprof\fR.  You must use this option when compiling
+the source files you want data about, and you must also use it when
+linking.
+.IP "\fB\-Q\fR" 4
+.IX Item "-Q"
+Makes the compiler print out each function name as it is compiled, and
+print some statistics about each pass when it finishes.
+.IP "\fB\-ftime\-report\fR" 4
+.IX Item "-ftime-report"
+Makes the compiler print some statistics about the time consumed by each
+pass when it finishes.
+.IP "\fB\-fmem\-report\fR" 4
+.IX Item "-fmem-report"
+Makes the compiler print some statistics about permanent memory
+allocation when it finishes.
+.IP "\fB\-fprofile\-arcs\fR" 4
+.IX Item "-fprofile-arcs"
+Instrument \fIarcs\fR during compilation to generate coverage data or
+for profile-directed block ordering.  During execution the program
+records how many times each branch is executed and how many times it is
+taken.  When the compiled program exits it saves this data to a file
+called \fI\fIauxname\fI.da\fR for each source file.  \fIauxname\fR is
+generated from the name of the output file, if explicitly specified and
+it is not the final executable, otherwise it is the basename of the
+source file. In both cases any suffix is removed (e.g.  \fIfoo.da\fR
+for input file \fIdir/foo.c\fR, or \fIdir/foo.da\fR for output file
+specified as \fB\-o dir/foo.o\fR).
+.Sp
+For profile-directed block ordering, compile the program with
+\&\fB\-fprofile\-arcs\fR plus optimization and code generation options,
+generate the arc profile information by running the program on a
+selected workload, and then compile the program again with the same
+optimization and code generation options plus
+\&\fB\-fbranch\-probabilities\fR.
+.Sp
+The other use of \fB\-fprofile\-arcs\fR is for use with \fBgcov\fR,
+when it is used with the \fB\-ftest\-coverage\fR option.
+.Sp
+With \fB\-fprofile\-arcs\fR, for each function of your program \s-1GCC\s0
+creates a program flow graph, then finds a spanning tree for the graph.
+Only arcs that are not on the spanning tree have to be instrumented: the
+compiler adds code to count the number of times that these arcs are
+executed.  When an arc is the only exit or only entrance to a block, the
+instrumentation code can be added to the block; otherwise, a new basic
+block must be created to hold the instrumentation code.
+.IP "\fB\-ftest\-coverage\fR" 4
+.IX Item "-ftest-coverage"
+Create data files for the \fBgcov\fR code-coverage utility.  See
+\&\fB\-fprofile\-arcs\fR option above for a description of \fIauxname\fR.
+.RS 4
+.IP "\fIauxname\fR\fB.bb\fR" 4
+.IX Item "auxname.bb"
+A mapping from basic blocks to line numbers, which \fBgcov\fR uses to
+associate basic block execution counts with line numbers.
+.IP "\fIauxname\fR\fB.bbg\fR" 4
+.IX Item "auxname.bbg"
+A list of all arcs in the program flow graph.  This allows \fBgcov\fR
+to reconstruct the program flow graph, so that it can compute all basic
+block and arc execution counts from the information in the
+\&\fI\fIauxname\fI.da\fR file.
+.RE
+.RS 4
+.Sp
+Use \fB\-ftest\-coverage\fR with \fB\-fprofile\-arcs\fR; the latter
+option adds instrumentation to the program, which then writes
+execution counts to another data file:
+.IP "\fIauxname\fR\fB.da\fR" 4
+.IX Item "auxname.da"
+Runtime arc execution counts, used in conjunction with the arc
+information in the file \fI\fIauxname\fI.bbg\fR.
+.RE
+.RS 4
+.Sp
+Coverage data will map better to the source files if
+\&\fB\-ftest\-coverage\fR is used without optimization.
+.RE
+.IP "\fB\-d\fR\fIletters\fR" 4
+.IX Item "-dletters"
+Says to make debugging dumps during compilation at times specified by
+\&\fIletters\fR.  This is used for debugging the compiler.  The file names
+for most of the dumps are made by appending a pass number and a word to
+the \fIdumpname\fR. \fIdumpname\fR is generated from the name of the
+output file, if explicitly specified and it is not an executable,
+otherwise it is the basename of the source file. In both cases any
+suffix is removed (e.g.  \fIfoo.00.rtl\fR or \fIfoo.01.sibling\fR).
+Here are the possible letters for use in \fIletters\fR, and their
+meanings:
+.RS 4
+.IP "\fBA\fR" 4
+.IX Item "A"
+Annotate the assembler output with miscellaneous debugging information.
+.IP "\fBb\fR" 4
+.IX Item "b"
+Dump after computing branch probabilities, to \fI\fIfile\fI.14.bp\fR.
+.IP "\fBB\fR" 4
+.IX Item "B"
+Dump after block reordering, to \fI\fIfile\fI.32.bbro\fR.
+.IP "\fBc\fR" 4
+.IX Item "c"
+Dump after instruction combination, to the file \fI\fIfile\fI.19.combine\fR.
+.IP "\fBC\fR" 4
+.IX Item "C"
+Dump after the first if conversion, to the file \fI\fIfile\fI.15.ce1\fR.
+.IP "\fBd\fR" 4
+.IX Item "d"
+Dump after delayed branch scheduling, to \fI\fIfile\fI.34.dbr\fR.
+.IP "\fBD\fR" 4
+.IX Item "D"
+Dump all macro definitions, at the end of preprocessing, in addition to
+normal output.
+.IP "\fBe\fR" 4
+.IX Item "e"
+Dump after \s-1SSA\s0 optimizations, to \fI\fIfile\fI.04.ssa\fR and
+\&\fI\fIfile\fI.07.ussa\fR.
+.IP "\fBE\fR" 4
+.IX Item "E"
+Dump after the second if conversion, to \fI\fIfile\fI.29.ce3\fR.
+.IP "\fBf\fR" 4
+.IX Item "f"
+Dump after control and data flow analysis, to \fI\fIfile\fI.14.cfg\fR.
+Also dump after life analysis, to \fI\fIfile\fI.18.life\fR.
+.IP "\fBF\fR" 4
+.IX Item "F"
+Dump after purging \f(CW\*(C`ADDRESSOF\*(C'\fR codes, to \fI\fIfile\fI.10.addressof\fR.
+.IP "\fBg\fR" 4
+.IX Item "g"
+Dump after global register allocation, to \fI\fIfile\fI.24.greg\fR.
+.IP "\fBG\fR" 4
+.IX Item "G"
+Dump after \s-1GCSE\s0, to \fI\fIfile\fI.11.gcse\fR.
+.IP "\fBh\fR" 4
+.IX Item "h"
+Dump after finalization of \s-1EH\s0 handling code, to \fI\fIfile\fI.02.eh\fR.
+.IP "\fBi\fR" 4
+.IX Item "i"
+Dump after sibling call optimizations, to \fI\fIfile\fI.01.sibling\fR.
+.IP "\fBj\fR" 4
+.IX Item "j"
+Dump after the first jump optimization, to \fI\fIfile\fI.03.jump\fR.
+.IP "\fBk\fR" 4
+.IX Item "k"
+Dump after conversion from registers to stack, to \fI\fIfile\fI.31.stack\fR.
+.IP "\fBl\fR" 4
+.IX Item "l"
+Dump after local register allocation, to \fI\fIfile\fI.23.lreg\fR.
+.IP "\fBL\fR" 4
+.IX Item "L"
+Dump after loop optimization, to \fI\fIfile\fI.12.loop\fR.
+.IP "\fBM\fR" 4
+.IX Item "M"
+Dump after performing the machine dependent reorganization pass, to
+\&\fI\fIfile\fI.33.mach\fR.
+.IP "\fBn\fR" 4
+.IX Item "n"
+Dump after register renumbering, to \fI\fIfile\fI.28.rnreg\fR.
+.IP "\fBN\fR" 4
+.IX Item "N"
+Dump after the register move pass, to \fI\fIfile\fI.21.regmove\fR.
+.IP "\fBo\fR" 4
+.IX Item "o"
+Dump after post-reload optimizations, to \fI\fIfile\fI.25.postreload\fR.
+.IP "\fBr\fR" 4
+.IX Item "r"
+Dump after \s-1RTL\s0 generation, to \fI\fIfile\fI.00.rtl\fR.
+.IP "\fBR\fR" 4
+.IX Item "R"
+Dump after the second scheduling pass, to \fI\fIfile\fI.30.sched2\fR.
+.IP "\fBs\fR" 4
+.IX Item "s"
+Dump after \s-1CSE\s0 (including the jump optimization that sometimes follows
+\&\s-1CSE\s0), to \fI\fIfile\fI.09.cse\fR.
+.IP "\fBS\fR" 4
+.IX Item "S"
+Dump after the first scheduling pass, to \fI\fIfile\fI.22.sched\fR.
+.IP "\fBt\fR" 4
+.IX Item "t"
+Dump after the second \s-1CSE\s0 pass (including the jump optimization that
+sometimes follows \s-1CSE\s0), to \fI\fIfile\fI.17.cse2\fR.
+.IP "\fBT\fR" 4
+.IX Item "T"
+Dump after running tracer, to \fI\fIfile\fI.16.tracer\fR.
+.IP "\fBu\fR" 4
+.IX Item "u"
+Dump after null pointer elimination pass to \fI\fIfile\fI.08.null\fR.
+.IP "\fBw\fR" 4
+.IX Item "w"
+Dump after the second flow pass, to \fI\fIfile\fI.26.flow2\fR.
+.IP "\fBW\fR" 4
+.IX Item "W"
+Dump after \s-1SSA\s0 conditional constant propagation, to
+\&\fI\fIfile\fI.05.ssaccp\fR.
+.IP "\fBX\fR" 4
+.IX Item "X"
+Dump after \s-1SSA\s0 dead code elimination, to \fI\fIfile\fI.06.ssadce\fR.
+.IP "\fBz\fR" 4
+.IX Item "z"
+Dump after the peephole pass, to \fI\fIfile\fI.27.peephole2\fR.
+.IP "\fBa\fR" 4
+.IX Item "a"
+Produce all the dumps listed above.
+.IP "\fBm\fR" 4
+.IX Item "m"
+Print statistics on memory usage, at the end of the run, to
+standard error.
+.IP "\fBp\fR" 4
+.IX Item "p"
+Annotate the assembler output with a comment indicating which
+pattern and alternative was used.  The length of each instruction is
+also printed.
+.IP "\fBP\fR" 4
+.IX Item "P"
+Dump the \s-1RTL\s0 in the assembler output as a comment before each instruction.
+Also turns on \fB\-dp\fR annotation.
+.IP "\fBv\fR" 4
+.IX Item "v"
+For each of the other indicated dump files (except for
+\&\fI\fIfile\fI.00.rtl\fR), dump a representation of the control flow graph
+suitable for viewing with \s-1VCG\s0 to \fI\fIfile\fI.\fIpass\fI.vcg\fR.
+.IP "\fBx\fR" 4
+.IX Item "x"
+Just generate \s-1RTL\s0 for a function instead of compiling it.  Usually used
+with \fBr\fR.
+.IP "\fBy\fR" 4
+.IX Item "y"
+Dump debugging information during parsing, to standard error.
+.RE
+.RS 4
+.RE
+.IP "\fB\-fdump\-unnumbered\fR" 4
+.IX Item "-fdump-unnumbered"
+When doing debugging dumps (see \fB\-d\fR option above), suppress instruction
+numbers and line number note output.  This makes it more feasible to
+use diff on debugging dumps for compiler invocations with different
+options, in particular with and without \fB\-g\fR.
+.IP "\fB\-fdump\-translation\-unit\fR (C and \*(C+ only)" 4
+.IX Item "-fdump-translation-unit (C and  only)"
+.PD 0
+.IP "\fB\-fdump\-translation\-unit\-\fR\fIoptions\fR\fB \fR(C and \*(C+ only)" 4
+.IX Item "-fdump-translation-unit-options (C and  only)"
+.PD
+Dump a representation of the tree structure for the entire translation
+unit to a file.  The file name is made by appending \fI.tu\fR to the
+source file name.  If the \fB\-\fR\fIoptions\fR form is used, \fIoptions\fR
+controls the details of the dump as described for the
+\&\fB\-fdump\-tree\fR options.
+.IP "\fB\-fdump\-class\-hierarchy\fR (\*(C+ only)" 4
+.IX Item "-fdump-class-hierarchy ( only)"
+.PD 0
+.IP "\fB\-fdump\-class\-hierarchy\-\fR\fIoptions\fR\fB \fR(\*(C+ only)" 4
+.IX Item "-fdump-class-hierarchy-options ( only)"
+.PD
+Dump a representation of each class's hierarchy and virtual function
+table layout to a file.  The file name is made by appending \fI.class\fR
+to the source file name.  If the \fB\-\fR\fIoptions\fR form is used,
+\&\fIoptions\fR controls the details of the dump as described for the
+\&\fB\-fdump\-tree\fR options.
+.IP "\fB\-fdump\-tree\-\fR\fIswitch\fR\fB \fR(\*(C+ only)" 4
+.IX Item "-fdump-tree-switch ( only)"
+.PD 0
+.IP "\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB \fR(\*(C+ only)" 4
+.IX Item "-fdump-tree-switch-options ( only)"
+.PD
+Control the dumping at various stages of processing the intermediate
+language tree to a file.  The file name is generated by appending a switch
+specific suffix to the source file name.  If the \fB\-\fR\fIoptions\fR
+form is used, \fIoptions\fR is a list of \fB\-\fR separated options that
+control the details of the dump. Not all options are applicable to all
+dumps, those which are not meaningful will be ignored. The following
+options are available
+.RS 4
+.IP "\fBaddress\fR" 4
+.IX Item "address"
+Print the address of each node.  Usually this is not meaningful as it
+changes according to the environment and source file. Its primary use
+is for tying up a dump file with a debug environment.
+.IP "\fBslim\fR" 4
+.IX Item "slim"
+Inhibit dumping of members of a scope or body of a function merely
+because that scope has been reached. Only dump such items when they
+are directly reachable by some other path.
+.IP "\fBall\fR" 4
+.IX Item "all"
+Turn on all options.
+.RE
+.RS 4
+.Sp
+The following tree dumps are possible:
+.IP "\fBoriginal\fR" 4
+.IX Item "original"
+Dump before any tree based optimization, to \fI\fIfile\fI.original\fR.
+.IP "\fBoptimized\fR" 4
+.IX Item "optimized"
+Dump after all tree based optimization, to \fI\fIfile\fI.optimized\fR.
+.IP "\fBinlined\fR" 4
+.IX Item "inlined"
+Dump after function inlining, to \fI\fIfile\fI.inlined\fR.
+.RE
+.RS 4
+.RE
+.IP "\fB\-frandom\-seed=\fR\fIstring\fR" 4
+.IX Item "-frandom-seed=string"
+This option provides a seed that \s-1GCC\s0 uses when it would otherwise use
+random numbers.  At present, this is used to generate certain symbol names
+that have to be different in every compiled file.
+.Sp
+The \fIstring\fR should be different for every file you compile.
+.IP "\fB\-fsched\-verbose=\fR\fIn\fR" 4
+.IX Item "-fsched-verbose=n"
+On targets that use instruction scheduling, this option controls the
+amount of debugging output the scheduler prints.  This information is
+written to standard error, unless \fB\-dS\fR or \fB\-dR\fR is
+specified, in which case it is output to the usual dump
+listing file, \fI.sched\fR or \fI.sched2\fR respectively.  However
+for \fIn\fR greater than nine, the output is always printed to standard
+error.
+.Sp
+For \fIn\fR greater than zero, \fB\-fsched\-verbose\fR outputs the
+same information as \fB\-dRS\fR.  For \fIn\fR greater than one, it
+also output basic block probabilities, detailed ready list information
+and unit/insn info.  For \fIn\fR greater than two, it includes \s-1RTL\s0
+at abort point, control-flow and regions info.  And for \fIn\fR over
+four, \fB\-fsched\-verbose\fR also includes dependence info.
+.IP "\fB\-save\-temps\fR" 4
+.IX Item "-save-temps"
+Store the usual ``temporary'' intermediate files permanently; place them
+in the current directory and name them based on the source file.  Thus,
+compiling \fIfoo.c\fR with \fB\-c \-save\-temps\fR would produce files
+\&\fIfoo.i\fR and \fIfoo.s\fR, as well as \fIfoo.o\fR.  This creates a
+preprocessed \fIfoo.i\fR output file even though the compiler now
+normally uses an integrated preprocessor.
+.IP "\fB\-time\fR" 4
+.IX Item "-time"
+Report the \s-1CPU\s0 time taken by each subprocess in the compilation
+sequence.  For C source files, this is the compiler proper and assembler
+(plus the linker if linking is done).  The output looks like this:
+.Sp
+.Vb 2
+\&        # cc1 0.12 0.01
+\&        # as 0.00 0.01
+.Ve
+.Sp
+The first number on each line is the ``user time,'' that is time spent
+executing the program itself.  The second number is ``system time,''
+time spent executing operating system routines on behalf of the program.
+Both numbers are in seconds.
+.IP "\fB\-print\-file\-name=\fR\fIlibrary\fR" 4
+.IX Item "-print-file-name=library"
+Print the full absolute name of the library file \fIlibrary\fR that
+would be used when linking\-\-\-and don't do anything else.  With this
+option, \s-1GCC\s0 does not compile or link anything; it just prints the
+file name.
+.IP "\fB\-print\-multi\-directory\fR" 4
+.IX Item "-print-multi-directory"
+Print the directory name corresponding to the multilib selected by any
+other switches present in the command line.  This directory is supposed
+to exist in \fB\s-1GCC_EXEC_PREFIX\s0\fR.
+.IP "\fB\-print\-multi\-lib\fR" 4
+.IX Item "-print-multi-lib"
+Print the mapping from multilib directory names to compiler switches
+that enable them.  The directory name is separated from the switches by
+\&\fB;\fR, and each switch starts with an \fB@} instead of the
+\&\f(CB at samp\fB{\-\fR, without spaces between multiple switches.  This is supposed to
+ease shell\-processing.
+.IP "\fB\-print\-prog\-name=\fR\fIprogram\fR" 4
+.IX Item "-print-prog-name=program"
+Like \fB\-print\-file\-name\fR, but searches for a program such as \fBcpp\fR.
+.IP "\fB\-print\-libgcc\-file\-name\fR" 4
+.IX Item "-print-libgcc-file-name"
+Same as \fB\-print\-file\-name=libgcc.a\fR.
+.Sp
+This is useful when you use \fB\-nostdlib\fR or \fB\-nodefaultlibs\fR
+but you do want to link with \fIlibgcc.a\fR.  You can do
+.Sp
+.Vb 1
+\&        gcc -nostdlib <files>... `gcc -print-libgcc-file-name`
+.Ve
+.IP "\fB\-print\-search\-dirs\fR" 4
+.IX Item "-print-search-dirs"
+Print the name of the configured installation directory and a list of
+program and library directories gcc will search\-\-\-and don't do anything else.
+.Sp
+This is useful when gcc prints the error message
+\&\fBinstallation problem, cannot exec cpp0: No such file or directory\fR.
+To resolve this you either need to put \fIcpp0\fR and the other compiler
+components where gcc expects to find them, or you can set the environment
+variable \fB\s-1GCC_EXEC_PREFIX\s0\fR to the directory where you installed them.
+Don't forget the trailing '/'.
+.IP "\fB\-dumpmachine\fR" 4
+.IX Item "-dumpmachine"
+Print the compiler's target machine (for example,
+\&\fBi686\-pc\-linux\-gnu\fR)\-\-\-and don't do anything else.
+.IP "\fB\-dumpversion\fR" 4
+.IX Item "-dumpversion"
+Print the compiler version (for example, \fB3.0\fR)\-\-\-and don't do
+anything else.
+.IP "\fB\-dumpspecs\fR" 4
+.IX Item "-dumpspecs"
+Print the compiler's built-in specs\-\-\-and don't do anything else.  (This
+is used when \s-1GCC\s0 itself is being built.)  
+.Sh "Options That Control Optimization"
+.IX Subsection "Options That Control Optimization"
+These options control various sorts of optimizations.
+.PP
+Without any optimization option, the compiler's goal is to reduce the
+cost of compilation and to make debugging produce the expected
+results.  Statements are independent: if you stop the program with a
+breakpoint between statements, you can then assign a new value to any
+variable or change the program counter to any other statement in the
+function and get exactly the results you would expect from the source
+code.
+.PP
+Turning on optimization flags makes the compiler attempt to improve
+the performance and/or code size at the expense of compilation time
+and possibly the ability to debug the program.
+.PP
+Not all optimizations are controlled directly by a flag.  Only
+optimizations that have a flag are listed.
+.IP "\fB\-O\fR" 4
+.IX Item "-O"
+.PD 0
+.IP "\fB\-O1\fR" 4
+.IX Item "-O1"
+.PD
+Optimize.  Optimizing compilation takes somewhat more time, and a lot
+more memory for a large function.
+.Sp
+With \fB\-O\fR, the compiler tries to reduce code size and execution
+time, without performing any optimizations that take a great deal of
+compilation time.
+.Sp
+\&\fB\-O\fR turns on the following optimization flags: 
+\&\fB\-fdefer\-pop 
+\&\-fmerge\-constants 
+\&\-fthread\-jumps 
+\&\-floop\-optimize 
+\&\-fcrossjumping 
+\&\-fif\-conversion 
+\&\-fif\-conversion2 
+\&\-fdelayed\-branch 
+\&\-fguess\-branch\-probability 
+\&\-fcprop\-registers\fR
+.Sp
+\&\fB\-O\fR also turns on \fB\-fomit\-frame\-pointer\fR on machines
+where doing so does not interfere with debugging.
+.IP "\fB\-O2\fR" 4
+.IX Item "-O2"
+Optimize even more.  \s-1GCC\s0 performs nearly all supported optimizations
+that do not involve a space-speed tradeoff.  The compiler does not
+perform loop unrolling or function inlining when you specify \fB\-O2\fR.
+As compared to \fB\-O\fR, this option increases both compilation time
+and the performance of the generated code.
+.Sp
+\&\fB\-O2\fR turns on all optimization flags specified by \fB\-O\fR.  It
+also turns on the following optimization flags:
+\&\fB\-fforce\-mem 
+\&\-foptimize\-sibling\-calls 
+\&\-fstrength\-reduce 
+\&\-fcse\-follow\-jumps  \-fcse\-skip\-blocks 
+\&\-frerun\-cse\-after\-loop  \-frerun\-loop\-opt 
+\&\-fgcse   \-fgcse\-lm   \-fgcse\-sm 
+\&\-fdelete\-null\-pointer\-checks 
+\&\-fexpensive\-optimizations 
+\&\-fregmove 
+\&\-fschedule\-insns  \-fschedule\-insns2 
+\&\-fsched\-interblock \-fsched\-spec 
+\&\-fcaller\-saves 
+\&\-fpeephole2 
+\&\-freorder\-blocks  \-freorder\-functions 
+\&\-fstrict\-aliasing 
+\&\-falign\-functions  \-falign\-jumps 
+\&\-falign\-loops  \-falign\-labels\fR
+.Sp
+Please note the warning under \fB\-fgcse\fR about
+invoking \fB\-O2\fR on programs that use computed gotos.
+.IP "\fB\-O3\fR" 4
+.IX Item "-O3"
+Optimize yet more.  \fB\-O3\fR turns on all optimizations specified by
+\&\fB\-O2\fR and also turns on the \fB\-finline\-functions\fR and
+\&\fB\-frename\-registers\fR options.
+.IP "\fB\-O0\fR" 4
+.IX Item "-O0"
+Do not optimize.  This is the default.
+.IP "\fB\-Os\fR" 4
+.IX Item "-Os"
+Optimize for size.  \fB\-Os\fR enables all \fB\-O2\fR optimizations that
+do not typically increase code size.  It also performs further
+optimizations designed to reduce code size.
+.Sp
+\&\fB\-Os\fR disables the following optimization flags:
+\&\fB\-falign\-functions  \-falign\-jumps  \-falign\-loops 
+\&\-falign\-labels  \-freorder\-blocks  \-fprefetch\-loop\-arrays\fR
+.Sp
+If you use multiple \fB\-O\fR options, with or without level numbers,
+the last such option is the one that is effective.
+.PP
+Options of the form \fB\-f\fR\fIflag\fR specify machine-independent
+flags.  Most flags have both positive and negative forms; the negative
+form of \fB\-ffoo\fR would be \fB\-fno\-foo\fR.  In the table
+below, only one of the forms is listed\-\-\-the one you typically will
+use.  You can figure out the other form by either removing \fBno\-\fR
+or adding it.
+.PP
+The following options control specific optimizations.  They are either
+activated by \fB\-O\fR options or are related to ones that are.  You
+can use the following flags in the rare cases when ``fine\-tuning'' of
+optimizations to be performed is desired.
+.IP "\fB\-fno\-default\-inline\fR" 4
+.IX Item "-fno-default-inline"
+Do not make member functions inline by default merely because they are
+defined inside the class scope (\*(C+ only).  Otherwise, when you specify
+\&\fB\-O\fR, member functions defined inside class scope are compiled
+inline by default; i.e., you don't need to add \fBinline\fR in front of
+the member function name.
+.IP "\fB\-fno\-defer\-pop\fR" 4
+.IX Item "-fno-defer-pop"
+Always pop the arguments to each function call as soon as that function
+returns.  For machines which must pop arguments after a function call,
+the compiler normally lets arguments accumulate on the stack for several
+function calls and pops them all at once.
+.Sp
+Disabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fforce\-mem\fR" 4
+.IX Item "-fforce-mem"
+Force memory operands to be copied into registers before doing
+arithmetic on them.  This produces better code by making all memory
+references potential common subexpressions.  When they are not common
+subexpressions, instruction combination should eliminate the separate
+register\-load.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fforce\-addr\fR" 4
+.IX Item "-fforce-addr"
+Force memory address constants to be copied into registers before
+doing arithmetic on them.  This may produce better code just as
+\&\fB\-fforce\-mem\fR may.
+.IP "\fB\-fomit\-frame\-pointer\fR" 4
+.IX Item "-fomit-frame-pointer"
+Don't keep the frame pointer in a register for functions that
+don't need one.  This avoids the instructions to save, set up and
+restore frame pointers; it also makes an extra register available
+in many functions.  \fBIt also makes debugging impossible on
+some machines.\fR
+.Sp
+On some machines, such as the \s-1VAX\s0, this flag has no effect, because
+the standard calling sequence automatically handles the frame pointer
+and nothing is saved by pretending it doesn't exist.  The
+machine-description macro \f(CW\*(C`FRAME_POINTER_REQUIRED\*(C'\fR controls
+whether a target machine supports this flag.  
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-foptimize\-sibling\-calls\fR" 4
+.IX Item "-foptimize-sibling-calls"
+Optimize sibling and tail recursive calls.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fno\-inline\fR" 4
+.IX Item "-fno-inline"
+Don't pay attention to the \f(CW\*(C`inline\*(C'\fR keyword.  Normally this option
+is used to keep the compiler from expanding any functions inline.
+Note that if you are not optimizing, no functions can be expanded inline.
+.IP "\fB\-finline\-functions\fR" 4
+.IX Item "-finline-functions"
+Integrate all simple functions into their callers.  The compiler
+heuristically decides which functions are simple enough to be worth
+integrating in this way.
+.Sp
+If all calls to a given function are integrated, and the function is
+declared \f(CW\*(C`static\*(C'\fR, then the function is normally not output as
+assembler code in its own right.
+.Sp
+Enabled at level \fB\-O3\fR.
+.IP "\fB\-finline\-limit=\fR\fIn\fR" 4
+.IX Item "-finline-limit=n"
+By default, gcc limits the size of functions that can be inlined.  This flag
+allows the control of this limit for functions that are explicitly marked as
+inline (i.e., marked with the inline keyword or defined within the class
+definition in c++).  \fIn\fR is the size of functions that can be inlined in
+number of pseudo instructions (not counting parameter handling).  The default
+value of \fIn\fR is 600.
+Increasing this value can result in more inlined code at
+the cost of compilation time and memory consumption.  Decreasing usually makes
+the compilation faster and less code will be inlined (which presumably
+means slower programs).  This option is particularly useful for programs that
+use inlining heavily such as those based on recursive templates with \*(C+.
+.Sp
+Inlining is actually controlled by a number of parameters, which may be
+specified individually by using \fB\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR.
+The \fB\-finline\-limit=\fR\fIn\fR option sets some of these parameters 
+as follows:
+.RS 4
+.Sp
+.Vb 10
+\& @item max-inline-insns
+\&  is set to I<n>.
+\& @item max-inline-insns-single
+\&  is set to I<n>/2.
+\& @item max-inline-insns-auto
+\&  is set to I<n>/2.
+\& @item min-inline-insns
+\&  is set to 130 or I<n>/4, whichever is smaller.
+\& @item max-inline-insns-rtl
+\&  is set to I<n>.
+.Ve
+.RE
+.RS 4
+.Sp
+Using \fB\-finline\-limit=600\fR thus results in the default settings
+for these parameters.  See below for a documentation of the individual
+parameters controlling inlining.
+.Sp
+\&\fINote:\fR pseudo instruction represents, in this particular context, an
+abstract measurement of function's size.  In no way, it represents a count
+of assembly instructions and as such its exact meaning might change from one
+release to an another.
+.RE
+.IP "\fB\-fkeep\-inline\-functions\fR" 4
+.IX Item "-fkeep-inline-functions"
+Even if all calls to a given function are integrated, and the function
+is declared \f(CW\*(C`static\*(C'\fR, nevertheless output a separate run-time
+callable version of the function.  This switch does not affect
+\&\f(CW\*(C`extern inline\*(C'\fR functions.
+.IP "\fB\-fkeep\-static\-consts\fR" 4
+.IX Item "-fkeep-static-consts"
+Emit variables declared \f(CW\*(C`static const\*(C'\fR when optimization isn't turned
+on, even if the variables aren't referenced.
+.Sp
+\&\s-1GCC\s0 enables this option by default.  If you want to force the compiler to
+check if the variable was referenced, regardless of whether or not
+optimization is turned on, use the \fB\-fno\-keep\-static\-consts\fR option.
+.IP "\fB\-fmerge\-constants\fR" 4
+.IX Item "-fmerge-constants"
+Attempt to merge identical constants (string constants and floating point
+constants) across compilation units.
+.Sp
+This option is the default for optimized compilation if the assembler and
+linker support it.  Use \fB\-fno\-merge\-constants\fR to inhibit this
+behavior.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fmerge\-all\-constants\fR" 4
+.IX Item "-fmerge-all-constants"
+Attempt to merge identical constants and identical variables.
+.Sp
+This option implies \fB\-fmerge\-constants\fR.  In addition to
+\&\fB\-fmerge\-constants\fR this considers e.g. even constant initialized
+arrays or initialized constant variables with integral or floating point
+types.  Languages like C or \*(C+ require each non-automatic variable to
+have distinct location, so using this option will result in non-conforming
+behavior.
+.IP "\fB\-fno\-branch\-count\-reg\fR" 4
+.IX Item "-fno-branch-count-reg"
+Do not use ``decrement and branch'' instructions on a count register,
+but instead generate a sequence of instructions that decrement a
+register, compare it against zero, then branch based upon the result.
+This option is only meaningful on architectures that support such
+instructions, which include x86, PowerPC, \s-1IA\-64\s0 and S/390.
+.Sp
+The default is \fB\-fbranch\-count\-reg\fR, enabled when
+\&\fB\-fstrength\-reduce\fR is enabled.
+.IP "\fB\-fno\-function\-cse\fR" 4
+.IX Item "-fno-function-cse"
+Do not put function addresses in registers; make each instruction that
+calls a constant function contain the function's address explicitly.
+.Sp
+This option results in less efficient code, but some strange hacks
+that alter the assembler output may be confused by the optimizations
+performed when this option is not used.
+.Sp
+The default is \fB\-ffunction\-cse\fR
+.IP "\fB\-fno\-zero\-initialized\-in\-bss\fR" 4
+.IX Item "-fno-zero-initialized-in-bss"
+If the target supports a \s-1BSS\s0 section, \s-1GCC\s0 by default puts variables that
+are initialized to zero into \s-1BSS\s0.  This can save space in the resulting
+code.
+.Sp
+This option turns off this behavior because some programs explicitly
+rely on variables going to the data section.  E.g., so that the
+resulting executable can find the beginning of that section and/or make
+assumptions based on that.
+.Sp
+The default is \fB\-fzero\-initialized\-in\-bss\fR.
+.IP "\fB\-fstrength\-reduce\fR" 4
+.IX Item "-fstrength-reduce"
+Perform the optimizations of loop strength reduction and
+elimination of iteration variables.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fthread\-jumps\fR" 4
+.IX Item "-fthread-jumps"
+Perform optimizations where we check to see if a jump branches to a
+location where another comparison subsumed by the first is found.  If
+so, the first branch is redirected to either the destination of the
+second branch or a point immediately following it, depending on whether
+the condition is known to be true or false.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fcse\-follow\-jumps\fR" 4
+.IX Item "-fcse-follow-jumps"
+In common subexpression elimination, scan through jump instructions
+when the target of the jump is not reached by any other path.  For
+example, when \s-1CSE\s0 encounters an \f(CW\*(C`if\*(C'\fR statement with an
+\&\f(CW\*(C`else\*(C'\fR clause, \s-1CSE\s0 will follow the jump when the condition
+tested is false.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fcse\-skip\-blocks\fR" 4
+.IX Item "-fcse-skip-blocks"
+This is similar to \fB\-fcse\-follow\-jumps\fR, but causes \s-1CSE\s0 to
+follow jumps which conditionally skip over blocks.  When \s-1CSE\s0
+encounters a simple \f(CW\*(C`if\*(C'\fR statement with no else clause,
+\&\fB\-fcse\-skip\-blocks\fR causes \s-1CSE\s0 to follow the jump around the
+body of the \f(CW\*(C`if\*(C'\fR.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-frerun\-cse\-after\-loop\fR" 4
+.IX Item "-frerun-cse-after-loop"
+Re-run common subexpression elimination after loop optimizations has been
+performed.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-frerun\-loop\-opt\fR" 4
+.IX Item "-frerun-loop-opt"
+Run the loop optimizer twice.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fgcse\fR" 4
+.IX Item "-fgcse"
+Perform a global common subexpression elimination pass.
+This pass also performs global constant and copy propagation.
+.Sp
+\&\fINote:\fR When compiling a program using computed gotos, a \s-1GCC\s0
+extension, you may get better runtime performance if you disable
+the global common subexpression elimination pass by adding
+\&\fB\-fno\-gcse\fR to the command line.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fgcse\-lm\fR" 4
+.IX Item "-fgcse-lm"
+When \fB\-fgcse\-lm\fR is enabled, global common subexpression elimination will
+attempt to move loads which are only killed by stores into themselves.  This
+allows a loop containing a load/store sequence to be changed to a load outside
+the loop, and a copy/store within the loop.
+.Sp
+Enabled by default when gcse is enabled.
+.IP "\fB\-fgcse\-sm\fR" 4
+.IX Item "-fgcse-sm"
+When \fB\-fgcse\-sm\fR is enabled, A store motion pass is run after global common
+subexpression elimination.  This pass will attempt to move stores out of loops.
+When used in conjunction with \fB\-fgcse\-lm\fR, loops containing a load/store sequence
+can be changed to a load before the loop and a store after the loop.
+.Sp
+Enabled by default when gcse is enabled.
+.IP "\fB\-floop\-optimize\fR" 4
+.IX Item "-floop-optimize"
+Perform loop optimizations: move constant expressions out of loops, simplify
+exit test conditions and optionally do strength-reduction and loop unrolling as
+well.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fcrossjumping\fR" 4
+.IX Item "-fcrossjumping"
+Perform cross-jumping transformation. This transformation unifies equivalent code and save code size. The
+resulting code may or may not perform better than without cross\-jumping.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fif\-conversion\fR" 4
+.IX Item "-fif-conversion"
+Attempt to transform conditional jumps into branch-less equivalents.  This
+include use of conditional moves, min, max, set flags and abs instructions, and
+some tricks doable by standard arithmetics.  The use of conditional execution
+on chips where it is available is controlled by \f(CW\*(C`if\-conversion2\*(C'\fR.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fif\-conversion2\fR" 4
+.IX Item "-fif-conversion2"
+Use conditional execution (where available) to transform conditional jumps into
+branch-less equivalents.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fdelete\-null\-pointer\-checks\fR" 4
+.IX Item "-fdelete-null-pointer-checks"
+Use global dataflow analysis to identify and eliminate useless checks
+for null pointers.  The compiler assumes that dereferencing a null
+pointer would have halted the program.  If a pointer is checked after
+it has already been dereferenced, it cannot be null.
+.Sp
+In some environments, this assumption is not true, and programs can
+safely dereference null pointers.  Use
+\&\fB\-fno\-delete\-null\-pointer\-checks\fR to disable this optimization
+for programs which depend on that behavior.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fexpensive\-optimizations\fR" 4
+.IX Item "-fexpensive-optimizations"
+Perform a number of minor optimizations that are relatively expensive.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-foptimize\-register\-move\fR" 4
+.IX Item "-foptimize-register-move"
+.PD 0
+.IP "\fB\-fregmove\fR" 4
+.IX Item "-fregmove"
+.PD
+Attempt to reassign register numbers in move instructions and as
+operands of other simple instructions in order to maximize the amount of
+register tying.  This is especially helpful on machines with two-operand
+instructions.
+.Sp
+Note \fB\-fregmove\fR and \fB\-foptimize\-register\-move\fR are the same
+optimization.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fdelayed\-branch\fR" 4
+.IX Item "-fdelayed-branch"
+If supported for the target machine, attempt to reorder instructions
+to exploit instruction slots available after delayed branch
+instructions.
+.Sp
+Enabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fschedule\-insns\fR" 4
+.IX Item "-fschedule-insns"
+If supported for the target machine, attempt to reorder instructions to
+eliminate execution stalls due to required data being unavailable.  This
+helps machines that have slow floating point or memory load instructions
+by allowing other instructions to be issued until the result of the load
+or floating point instruction is required.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fschedule\-insns2\fR" 4
+.IX Item "-fschedule-insns2"
+Similar to \fB\-fschedule\-insns\fR, but requests an additional pass of
+instruction scheduling after register allocation has been done.  This is
+especially useful on machines with a relatively small number of
+registers and where memory load instructions take more than one cycle.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fno\-sched\-interblock\fR" 4
+.IX Item "-fno-sched-interblock"
+Don't schedule instructions across basic blocks.  This is normally
+enabled by default when scheduling before register allocation, i.e.
+with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
+.IP "\fB\-fno\-sched\-spec\fR" 4
+.IX Item "-fno-sched-spec"
+Don't allow speculative motion of non-load instructions.  This is normally
+enabled by default when scheduling before register allocation, i.e.
+with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
+.IP "\fB\-fsched\-spec\-load\fR" 4
+.IX Item "-fsched-spec-load"
+Allow speculative motion of some load instructions.  This only makes
+sense when scheduling before register allocation, i.e. with
+\&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
+.IP "\fB\-fsched\-spec\-load\-dangerous\fR" 4
+.IX Item "-fsched-spec-load-dangerous"
+Allow speculative motion of more load instructions.  This only makes
+sense when scheduling before register allocation, i.e. with
+\&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
+.IP "\fB\-fcaller\-saves\fR" 4
+.IX Item "-fcaller-saves"
+Enable values to be allocated in registers that will be clobbered by
+function calls, by emitting extra instructions to save and restore the
+registers around such calls.  Such allocation is done only when it
+seems to result in better code than would otherwise be produced.
+.Sp
+This option is always enabled by default on certain machines, usually
+those which have no call-preserved registers to use instead.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fmove\-all\-movables\fR" 4
+.IX Item "-fmove-all-movables"
+Forces all invariant computations in loops to be moved
+outside the loop.
+.IP "\fB\-freduce\-all\-givs\fR" 4
+.IX Item "-freduce-all-givs"
+Forces all general-induction variables in loops to be
+strength\-reduced.
+.Sp
+\&\fINote:\fR When compiling programs written in Fortran,
+\&\fB\-fmove\-all\-movables\fR and \fB\-freduce\-all\-givs\fR are enabled
+by default when you use the optimizer.
+.Sp
+These options may generate better or worse code; results are highly
+dependent on the structure of loops within the source code.
+.Sp
+These two options are intended to be removed someday, once
+they have helped determine the efficacy of various
+approaches to improving loop optimizations.
+.Sp
+Please let us (<\fBgcc at gcc.gnu.org\fR> and <\fBfortran at gnu.org\fR>)
+know how use of these options affects
+the performance of your production code.
+We're very interested in code that runs \fIslower\fR
+when these options are \fIenabled\fR.
+.IP "\fB\-fno\-peephole\fR" 4
+.IX Item "-fno-peephole"
+.PD 0
+.IP "\fB\-fno\-peephole2\fR" 4
+.IX Item "-fno-peephole2"
+.PD
+Disable any machine-specific peephole optimizations.  The difference
+between \fB\-fno\-peephole\fR and \fB\-fno\-peephole2\fR is in how they
+are implemented in the compiler; some targets use one, some use the
+other, a few use both.
+.Sp
+\&\fB\-fpeephole\fR is enabled by default.
+\&\fB\-fpeephole2\fR enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fbranch\-probabilities\fR" 4
+.IX Item "-fbranch-probabilities"
+.PD 0
+.IP "\fB\-fno\-guess\-branch\-probability\fR" 4
+.IX Item "-fno-guess-branch-probability"
+.PD
+Do not guess branch probabilities using a randomized model.
+.Sp
+Sometimes gcc will opt to use a randomized model to guess branch
+probabilities, when none are available from either profiling feedback
+(\fB\-fprofile\-arcs\fR) or \fB_\|_builtin_expect\fR.  This means that
+different runs of the compiler on the same program may produce different
+object code.
+.Sp
+In a hard real-time system, people don't want different runs of the
+compiler to produce code that has different behavior; minimizing
+non-determinism is of paramount import.  This switch allows users to
+reduce non\-determinism, possibly at the expense of inferior
+optimization.
+.Sp
+The default is \fB\-fguess\-branch\-probability\fR at levels
+\&\fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-freorder\-blocks\fR" 4
+.IX Item "-freorder-blocks"
+Reorder basic blocks in the compiled function in order to reduce number of
+taken branches and improve code locality.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
+.IP "\fB\-freorder\-functions\fR" 4
+.IX Item "-freorder-functions"
+Reorder basic blocks in the compiled function in order to reduce number of
+taken branches and improve code locality. This is implemented by using special
+subsections \f(CW\*(C`text.hot\*(C'\fR for most frequently executed functions and
+\&\f(CW\*(C`text.unlikely\*(C'\fR for unlikely executed functions.  Reordering is done by
+the linker so object file format must support named sections and linker must
+place them in a reasonable way.
+.Sp
+Also profile feedback must be available in to make this option effective.  See
+\&\fB\-fprofile\-arcs\fR for details.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-fstrict\-aliasing\fR" 4
+.IX Item "-fstrict-aliasing"
+Allows the compiler to assume the strictest aliasing rules applicable to
+the language being compiled.  For C (and \*(C+), this activates
+optimizations based on the type of expressions.  In particular, an
+object of one type is assumed never to reside at the same address as an
+object of a different type, unless the types are almost the same.  For
+example, an \f(CW\*(C`unsigned int\*(C'\fR can alias an \f(CW\*(C`int\*(C'\fR, but not a
+\&\f(CW\*(C`void*\*(C'\fR or a \f(CW\*(C`double\*(C'\fR.  A character type may alias any other
+type.
+.Sp
+Pay special attention to code like this:
+.Sp
+.Vb 4
+\&        union a_union {
+\&          int i;
+\&          double d;
+\&        };
+.Ve
+.Sp
+.Vb 5
+\&        int f() {
+\&          a_union t;
+\&          t.d = 3.0;
+\&          return t.i;
+\&        }
+.Ve
+.Sp
+The practice of reading from a different union member than the one most
+recently written to (called ``type\-punning'') is common.  Even with
+\&\fB\-fstrict\-aliasing\fR, type-punning is allowed, provided the memory
+is accessed through the union type.  So, the code above will work as
+expected.  However, this code might not:
+.Sp
+.Vb 7
+\&        int f() {
+\&          a_union t;
+\&          int* ip;
+\&          t.d = 3.0;
+\&          ip = &t.i;
+\&          return *ip;
+\&        }
+.Ve
+.Sp
+Every language that wishes to perform language-specific alias analysis
+should define a function that computes, given an \f(CW\*(C`tree\*(C'\fR
+node, an alias set for the node.  Nodes in different alias sets are not
+allowed to alias.  For an example, see the C front-end function
+\&\f(CW\*(C`c_get_alias_set\*(C'\fR.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.IP "\fB\-falign\-functions\fR" 4
+.IX Item "-falign-functions"
+.PD 0
+.IP "\fB\-falign\-functions=\fR\fIn\fR" 4
+.IX Item "-falign-functions=n"
+.PD
+Align the start of functions to the next power-of-two greater than
+\&\fIn\fR, skipping up to \fIn\fR bytes.  For instance,
+\&\fB\-falign\-functions=32\fR aligns functions to the next 32\-byte
+boundary, but \fB\-falign\-functions=24\fR would align to the next
+32\-byte boundary only if this can be done by skipping 23 bytes or less.
+.Sp
+\&\fB\-fno\-align\-functions\fR and \fB\-falign\-functions=1\fR are
+equivalent and mean that functions will not be aligned.
+.Sp
+Some assemblers only support this flag when \fIn\fR is a power of two;
+in that case, it is rounded up.
+.Sp
+If \fIn\fR is not specified or is zero, use a machine-dependent default.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
+.IP "\fB\-falign\-labels\fR" 4
+.IX Item "-falign-labels"
+.PD 0
+.IP "\fB\-falign\-labels=\fR\fIn\fR" 4
+.IX Item "-falign-labels=n"
+.PD
+Align all branch targets to a power-of-two boundary, skipping up to
+\&\fIn\fR bytes like \fB\-falign\-functions\fR.  This option can easily
+make code slower, because it must insert dummy operations for when the
+branch target is reached in the usual flow of the code.
+.Sp
+\&\fB\-fno\-align\-labels\fR and \fB\-falign\-labels=1\fR are
+equivalent and mean that labels will not be aligned.
+.Sp
+If \fB\-falign\-loops\fR or \fB\-falign\-jumps\fR are applicable and
+are greater than this value, then their values are used instead.
+.Sp
+If \fIn\fR is not specified or is zero, use a machine-dependent default
+which is very likely to be \fB1\fR, meaning no alignment.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
+.IP "\fB\-falign\-loops\fR" 4
+.IX Item "-falign-loops"
+.PD 0
+.IP "\fB\-falign\-loops=\fR\fIn\fR" 4
+.IX Item "-falign-loops=n"
+.PD
+Align loops to a power-of-two boundary, skipping up to \fIn\fR bytes
+like \fB\-falign\-functions\fR.  The hope is that the loop will be
+executed many times, which will make up for any execution of the dummy
+operations.
+.Sp
+\&\fB\-fno\-align\-loops\fR and \fB\-falign\-loops=1\fR are
+equivalent and mean that loops will not be aligned.
+.Sp
+If \fIn\fR is not specified or is zero, use a machine-dependent default.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
+.IP "\fB\-falign\-jumps\fR" 4
+.IX Item "-falign-jumps"
+.PD 0
+.IP "\fB\-falign\-jumps=\fR\fIn\fR" 4
+.IX Item "-falign-jumps=n"
+.PD
+Align branch targets to a power-of-two boundary, for branch targets
+where the targets can only be reached by jumping, skipping up to \fIn\fR
+bytes like \fB\-falign\-functions\fR.  In this case, no dummy operations
+need be executed.
+.Sp
+\&\fB\-fno\-align\-jumps\fR and \fB\-falign\-jumps=1\fR are
+equivalent and mean that loops will not be aligned.
+.Sp
+If \fIn\fR is not specified or is zero, use a machine-dependent default.
+.Sp
+Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
+.IP "\fB\-frename\-registers\fR" 4
+.IX Item "-frename-registers"
+Attempt to avoid false dependencies in scheduled code by making use
+of registers left over after register allocation.  This optimization
+will most benefit processors with lots of registers.  It can, however,
+make debugging impossible, since variables will no longer stay in
+a ``home register''.
+.Sp
+Enabled at levels \fB\-O3\fR.
+.IP "\fB\-fno\-cprop\-registers\fR" 4
+.IX Item "-fno-cprop-registers"
+After register allocation and post-register allocation instruction splitting,
+we perform a copy-propagation pass to try to reduce scheduling dependencies
+and occasionally eliminate the copy.
+.Sp
+Disabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
+.PP
+The following options control compiler behavior regarding floating
+point arithmetic.  These options trade off between speed and
+correctness.  All must be specifically enabled.
+.IP "\fB\-ffloat\-store\fR" 4
+.IX Item "-ffloat-store"
+Do not store floating point variables in registers, and inhibit other
+options that might change whether a floating point value is taken from a
+register or memory.
+.Sp
+This option prevents undesirable excess precision on machines such as
+the 68000 where the floating registers (of the 68881) keep more
+precision than a \f(CW\*(C`double\*(C'\fR is supposed to have.  Similarly for the
+x86 architecture.  For most programs, the excess precision does only
+good, but a few programs rely on the precise definition of \s-1IEEE\s0 floating
+point.  Use \fB\-ffloat\-store\fR for such programs, after modifying
+them to store all pertinent intermediate computations into variables.
+.IP "\fB\-ffast\-math\fR" 4
+.IX Item "-ffast-math"
+Sets \fB\-fno\-math\-errno\fR, \fB\-funsafe\-math\-optimizations\fR, \fB\-fno\-trapping\-math\fR, \fB\-ffinite\-math\-only\fR and \fB\-fno\-signaling\-nans\fR.
+.Sp
+This option causes the preprocessor macro \f(CW\*(C`_\|_FAST_MATH_\|_\*(C'\fR to be defined.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.IP "\fB\-fno\-math\-errno\fR" 4
+.IX Item "-fno-math-errno"
+Do not set \s-1ERRNO\s0 after calling math functions that are executed
+with a single instruction, e.g., sqrt.  A program that relies on
+\&\s-1IEEE\s0 exceptions for math error handling may want to use this flag
+for speed while maintaining \s-1IEEE\s0 arithmetic compatibility.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.Sp
+The default is \fB\-fmath\-errno\fR.
+.IP "\fB\-funsafe\-math\-optimizations\fR" 4
+.IX Item "-funsafe-math-optimizations"
+Allow optimizations for floating-point arithmetic that (a) assume
+that arguments and results are valid and (b) may violate \s-1IEEE\s0 or
+\&\s-1ANSI\s0 standards.  When used at link\-time, it may include libraries
+or startup files that change the default \s-1FPU\s0 control word or other
+similar optimizations.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.Sp
+The default is \fB\-fno\-unsafe\-math\-optimizations\fR.
+.IP "\fB\-ffinite\-math\-only\fR" 4
+.IX Item "-ffinite-math-only"
+Allow optimizations for floating-point arithmetic that assume
+that arguments and results are not NaNs or +\-Infs.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications.
+.Sp
+The default is \fB\-fno\-finite\-math\-only\fR.
+.IP "\fB\-fno\-trapping\-math\fR" 4
+.IX Item "-fno-trapping-math"
+Compile code assuming that floating-point operations cannot generate
+user-visible traps.  These traps include division by zero, overflow,
+underflow, inexact result and invalid operation.  This option implies
+\&\fB\-fno\-signaling\-nans\fR.  Setting this option may allow faster
+code if one relies on ``non\-stop'' \s-1IEEE\s0 arithmetic, for example.
+.Sp
+This option should never be turned on by any \fB\-O\fR option since
+it can result in incorrect output for programs which depend on
+an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications for
+math functions.
+.Sp
+The default is \fB\-ftrapping\-math\fR.
+.IP "\fB\-fsignaling\-nans\fR" 4
+.IX Item "-fsignaling-nans"
+Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
+traps during floating-point operations.  Setting this option disables
+optimizations that may change the number of exceptions visible with
+signaling NaNs.  This option implies \fB\-ftrapping\-math\fR.
+.Sp
+This option causes the preprocessor macro \f(CW\*(C`_\|_SUPPORT_SNAN_\|_\*(C'\fR to
+be defined.
+.Sp
+The default is \fB\-fno\-signaling\-nans\fR.
+.Sp
+This option is experimental and does not currently guarantee to
+disable all \s-1GCC\s0 optimizations that affect signaling NaN behavior.
+.IP "\fB\-fsingle\-precision\-constant\fR" 4
+.IX Item "-fsingle-precision-constant"
+Treat floating point constant as single precision constant instead of
+implicitly converting it to double precision constant.
+.PP
+The following options control optimizations that may improve
+performance, but are not enabled by any \fB\-O\fR options.  This
+section includes experimental options that may produce broken code.
+.IP "\fB\-fbranch\-probabilities\fR" 4
+.IX Item "-fbranch-probabilities"
+After running a program compiled with \fB\-fprofile\-arcs\fR, you can compile it a second time using
+\&\fB\-fbranch\-probabilities\fR, to improve optimizations based on
+the number of times each branch was taken.  When the program
+compiled with \fB\-fprofile\-arcs\fR exits it saves arc execution
+counts to a file called \fI\fIsourcename\fI.da\fR for each source
+file  The information in this data file is very dependent on the
+structure of the generated code, so you must use the same source code
+and the same optimization options for both compilations.
+.Sp
+With \fB\-fbranch\-probabilities\fR, \s-1GCC\s0 puts a 
+\&\fB\s-1REG_BR_PROB\s0\fR note on each \fB\s-1JUMP_INSN\s0\fR and \fB\s-1CALL_INSN\s0\fR.
+These can be used to improve optimization.  Currently, they are only
+used in one place: in \fIreorg.c\fR, instead of guessing which path a
+branch is mostly to take, the \fB\s-1REG_BR_PROB\s0\fR values are used to
+exactly determine which path is taken more often.
+.IP "\fB\-fnew\-ra\fR" 4
+.IX Item "-fnew-ra"
+Use a graph coloring register allocator.  Currently this option is meant
+for testing, so we are interested to hear about miscompilations with
+\&\fB\-fnew\-ra\fR.
+.IP "\fB\-ftracer\fR" 4
+.IX Item "-ftracer"
+Perform tail duplication to enlarge superblock size. This transformation
+simplifies the control flow of the function allowing other optimizations to do
+better job.
+.IP "\fB\-funroll\-loops\fR" 4
+.IX Item "-funroll-loops"
+Unroll loops whose number of iterations can be determined at compile
+time or upon entry to the loop.  \fB\-funroll\-loops\fR implies both
+\&\fB\-fstrength\-reduce\fR and \fB\-frerun\-cse\-after\-loop\fR.  This
+option makes code larger, and may or may not make it run faster.
+.IP "\fB\-funroll\-all\-loops\fR" 4
+.IX Item "-funroll-all-loops"
+Unroll all loops, even if their number of iterations is uncertain when
+the loop is entered.  This usually makes programs run more slowly.
+\&\fB\-funroll\-all\-loops\fR implies the same options as
+\&\fB\-funroll\-loops\fR,
+.IP "\fB\-fprefetch\-loop\-arrays\fR" 4
+.IX Item "-fprefetch-loop-arrays"
+If supported by the target machine, generate instructions to prefetch
+memory to improve the performance of loops that access large arrays.
+.Sp
+Disabled at level \fB\-Os\fR.
+.IP "\fB\-ffunction\-sections\fR" 4
+.IX Item "-ffunction-sections"
+.PD 0
+.IP "\fB\-fdata\-sections\fR" 4
+.IX Item "-fdata-sections"
+.PD
+Place each function or data item into its own section in the output
+file if the target supports arbitrary sections.  The name of the
+function or the name of the data item determines the section's name
+in the output file.
+.Sp
+Use these options on systems where the linker can perform optimizations
+to improve locality of reference in the instruction space.  Most systems
+using the \s-1ELF\s0 object format and \s-1SPARC\s0 processors running Solaris 2 have
+linkers with such optimizations.  \s-1AIX\s0 may have these optimizations in
+the future.
+.Sp
+Only use these options when there are significant benefits from doing
+so.  When you specify these options, the assembler and linker will
+create larger object and executable files and will also be slower.
+You will not be able to use \f(CW\*(C`gprof\*(C'\fR on all systems if you
+specify this option and you may have problems with debugging if
+you specify both this option and \fB\-g\fR.
+.IP "\fB\-fssa\fR" 4
+.IX Item "-fssa"
+Perform optimizations in static single assignment form.  Each function's
+flow graph is translated into \s-1SSA\s0 form, optimizations are performed, and
+the flow graph is translated back from \s-1SSA\s0 form.  Users should not
+specify this option, since it is not yet ready for production use.
+.IP "\fB\-fssa\-ccp\fR" 4
+.IX Item "-fssa-ccp"
+Perform Sparse Conditional Constant Propagation in \s-1SSA\s0 form.  Requires
+\&\fB\-fssa\fR.  Like \fB\-fssa\fR, this is an experimental feature.
+.IP "\fB\-fssa\-dce\fR" 4
+.IX Item "-fssa-dce"
+Perform aggressive dead-code elimination in \s-1SSA\s0 form.  Requires \fB\-fssa\fR.
+Like \fB\-fssa\fR, this is an experimental feature.
+.IP "\fB\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR" 4
+.IX Item "--param name=value"
+In some places, \s-1GCC\s0 uses various constants to control the amount of
+optimization that is done.  For example, \s-1GCC\s0 will not inline functions
+that contain more that a certain number of instructions.  You can
+control some of these constants on the command-line using the
+\&\fB\-\-param\fR option.
+.Sp
+In each case, the \fIvalue\fR is an integer.  The allowable choices for
+\&\fIname\fR are given in the following table:
+.RS 4
+.IP "\fBmax-crossjump-edges\fR" 4
+.IX Item "max-crossjump-edges"
+The maximum number of incoming edges to consider for crossjumping.
+The algorithm used by \fB\-fcrossjumping\fR is O(N^2) in
+the number of edges incoming to each block.  Increasing values mean
+more aggressive optimization, making the compile time increase with
+probably small improvement in executable size.
+.IP "\fBmax-delay-slot-insn-search\fR" 4
+.IX Item "max-delay-slot-insn-search"
+The maximum number of instructions to consider when looking for an
+instruction to fill a delay slot.  If more than this arbitrary number of
+instructions is searched, the time savings from filling the delay slot
+will be minimal so stop searching.  Increasing values mean more
+aggressive optimization, making the compile time increase with probably
+small improvement in executable run time.
+.IP "\fBmax-delay-slot-live-search\fR" 4
+.IX Item "max-delay-slot-live-search"
+When trying to fill delay slots, the maximum number of instructions to
+consider when searching for a block with valid live register
+information.  Increasing this arbitrarily chosen value means more
+aggressive optimization, increasing the compile time.  This parameter
+should be removed when the delay slot code is rewritten to maintain the
+control-flow graph.
+.IP "\fBmax-gcse-memory\fR" 4
+.IX Item "max-gcse-memory"
+The approximate maximum amount of memory that will be allocated in
+order to perform the global common subexpression elimination
+optimization.  If more memory than specified is required, the
+optimization will not be done.
+.IP "\fBmax-gcse-passes\fR" 4
+.IX Item "max-gcse-passes"
+The maximum number of passes of \s-1GCSE\s0 to run.
+.IP "\fBmax-pending-list-length\fR" 4
+.IX Item "max-pending-list-length"
+The maximum number of pending dependencies scheduling will allow
+before flushing the current state and starting over.  Large functions
+with few branches or calls can create excessively large lists which
+needlessly consume memory and resources.
+.IP "\fBmax-inline-insns-single\fR" 4
+.IX Item "max-inline-insns-single"
+Several parameters control the tree inliner used in gcc.
+This number sets the maximum number of instructions (counted in gcc's
+internal representation) in a single function that the tree inliner 
+will consider for inlining.  This only affects functions declared
+inline and methods implemented in a class declaration (\*(C+).
+The default value is 300.
+.IP "\fBmax-inline-insns-auto\fR" 4
+.IX Item "max-inline-insns-auto"
+When you use \fB\-finline\-functions\fR (included in \fB\-O3\fR),
+a lot of functions that would otherwise not be considered for inlining
+by the compiler will be investigated.  To those functions, a different
+(more restrictive) limit compared to functions declared inline can
+be applied.
+The default value is 300.
+.IP "\fBmax-inline-insns\fR" 4
+.IX Item "max-inline-insns"
+The tree inliner does decrease the allowable size for single functions 
+to be inlined after we already inlined the number of instructions
+given here by repeated inlining.  This number should be a factor of 
+two or more larger than the single function limit.
+Higher numbers result in better runtime performance, but incur higher
+compile-time resource (\s-1CPU\s0 time, memory) requirements and result in
+larger binaries.  Very high values are not advisable, as too large
+binaries may adversely affect runtime performance.
+The default value is 600.
+.IP "\fBmax-inline-slope\fR" 4
+.IX Item "max-inline-slope"
+After exceeding the maximum number of inlined instructions by repeated
+inlining, a linear function is used to decrease the allowable size
+for single functions.  The slope of that function is the negative
+reciprocal of the number specified here.
+The default value is 32.
+.IP "\fBmin-inline-insns\fR" 4
+.IX Item "min-inline-insns"
+The repeated inlining is throttled more and more by the linear function
+after exceeding the limit.  To avoid too much throttling, a minimum for
+this function is specified here to allow repeated inlining for very small
+functions even when a lot of repeated inlining already has been done.
+The default value is 130.
+.IP "\fBmax-inline-insns-rtl\fR" 4
+.IX Item "max-inline-insns-rtl"
+For languages that use the \s-1RTL\s0 inliner (this happens at a later stage
+than tree inlining), you can set the maximum allowable size (counted 
+in \s-1RTL\s0 instructions) for the \s-1RTL\s0 inliner with this parameter.
+The default value is 600.
+.IP "\fBmax-unrolled-insns\fR" 4
+.IX Item "max-unrolled-insns"
+The maximum number of instructions that a loop should have if that loop
+is unrolled, and if the loop is unrolled, it determines how many times
+the loop code is unrolled.
+.IP "\fBhot-bb-count-fraction\fR" 4
+.IX Item "hot-bb-count-fraction"
+Select fraction of the maximal count of repetitions of basic block in program
+given basic block needs to have to be considered hot.
+.IP "\fBhot-bb-frequency-fraction\fR" 4
+.IX Item "hot-bb-frequency-fraction"
+Select fraction of the maximal frequency of executions of basic block in
+function given basic block needs to have to be considered hot
+.IP "\fBtracer-dynamic-coverage\fR" 4
+.IX Item "tracer-dynamic-coverage"
+.PD 0
+.IP "\fBtracer-dynamic-coverage-feedback\fR" 4
+.IX Item "tracer-dynamic-coverage-feedback"
+.PD
+This value is used to limit superblock formation once the given percentage of
+executed instructions is covered.  This limits unnecessary code size
+expansion.
+.Sp
+The \fBtracer-dynamic-coverage-feedback\fR is used only when profile
+feedback is available.  The real profiles (as opposed to statically estimated
+ones) are much less balanced allowing the threshold to be larger value.
+.IP "\fBtracer-max-code-growth\fR" 4
+.IX Item "tracer-max-code-growth"
+Stop tail duplication once code growth has reached given percentage.  This is
+rather hokey argument, as most of the duplicates will be eliminated later in
+cross jumping, so it may be set to much higher values than is the desired code
+growth.
+.IP "\fBtracer-min-branch-ratio\fR" 4
+.IX Item "tracer-min-branch-ratio"
+Stop reverse growth when the reverse probability of best edge is less than this
+threshold (in percent).
+.IP "\fBtracer-min-branch-ratio\fR" 4
+.IX Item "tracer-min-branch-ratio"
+.PD 0
+.IP "\fBtracer-min-branch-ratio-feedback\fR" 4
+.IX Item "tracer-min-branch-ratio-feedback"
+.PD
+Stop forward growth if the best edge do have probability lower than this
+threshold.
+.Sp
+Similarly to \fBtracer-dynamic-coverage\fR two values are present, one for
+compilation for profile feedback and one for compilation without.  The value
+for compilation with profile feedback needs to be more conservative (higher) in
+order to make tracer effective.
+.IP "\fBggc-min-expand\fR" 4
+.IX Item "ggc-min-expand"
+\&\s-1GCC\s0 uses a garbage collector to manage its own memory allocation.  This
+parameter specifies the minimum percentage by which the garbage
+collector's heap should be allowed to expand between collections.
+Tuning this may improve compilation speed; it has no effect on code
+generation.
+.Sp
+The default is 30% + 70% * (\s-1RAM/1GB\s0) with an upper bound of 100% when
+\&\s-1RAM\s0 >= 1GB.  If \f(CW\*(C`getrlimit\*(C'\fR is available, the notion of \*(L"\s-1RAM\s0\*(R" is
+the smallest of actual \s-1RAM\s0, \s-1RLIMIT_RSS\s0, \s-1RLIMIT_DATA\s0 and \s-1RLIMIT_AS\s0.  If
+\&\s-1GCC\s0 is not able to calculate \s-1RAM\s0 on a particular platform, the lower
+bound of 30% is used.  Setting this parameter and
+\&\fBggc-min-heapsize\fR to zero causes a full collection to occur at
+every opportunity.  This is extremely slow, but can be useful for
+debugging.
+.IP "\fBggc-min-heapsize\fR" 4
+.IX Item "ggc-min-heapsize"
+Minimum size of the garbage collector's heap before it begins bothering
+to collect garbage.  The first collection occurs after the heap expands
+by \fBggc-min-expand\fR% beyond \fBggc-min-heapsize\fR.  Again,
+tuning this may improve compilation speed, and has no effect on code
+generation.
+.Sp
+The default is \s-1RAM/8\s0, with a lower bound of 4096 (four megabytes) and an
+upper bound of 131072 (128 megabytes).  If \f(CW\*(C`getrlimit\*(C'\fR is
+available, the notion of \*(L"\s-1RAM\s0\*(R" is the smallest of actual \s-1RAM\s0,
+\&\s-1RLIMIT_RSS\s0, \s-1RLIMIT_DATA\s0 and \s-1RLIMIT_AS\s0.  If \s-1GCC\s0 is not able to calculate
+\&\s-1RAM\s0 on a particular platform, the lower bound is used.  Setting this
+parameter very large effectively disables garbage collection.  Setting
+this parameter and \fBggc-min-expand\fR to zero causes a full
+collection to occur at every opportunity.
+.RE
+.RS 4
+.RE
+.Sh "Options Controlling the Preprocessor"
+.IX Subsection "Options Controlling the Preprocessor"
+These options control the C preprocessor, which is run on each C source
+file before actual compilation.
+.PP
+If you use the \fB\-E\fR option, nothing is done except preprocessing.
+Some of these options make sense only together with \fB\-E\fR because
+they cause the preprocessor output to be unsuitable for actual
+compilation.
+.PP
+You can use \fB\-Wp,\fR\fIoption\fR to bypass the compiler driver
+and pass \fIoption\fR directly through to the preprocessor.  If
+\&\fIoption\fR contains commas, it is split into multiple options at the
+commas.  However, many options are modified, translated or interpreted
+by the compiler driver before being passed to the preprocessor, and
+\&\fB\-Wp\fR forcibly bypasses this phase.  The preprocessor's direct
+interface is undocumented and subject to change, so whenever possible
+you should avoid using \fB\-Wp\fR and let the driver handle the
+options instead.
+.IP "\fB\-D\fR \fIname\fR" 4
+.IX Item "-D name"
+Predefine \fIname\fR as a macro, with definition \f(CW1\fR.
+.IP "\fB\-D\fR \fIname\fR\fB=\fR\fIdefinition\fR" 4
+.IX Item "-D name=definition"
+Predefine \fIname\fR as a macro, with definition \fIdefinition\fR.
+There are no restrictions on the contents of \fIdefinition\fR, but if
+you are invoking the preprocessor from a shell or shell-like program you
+may need to use the shell's quoting syntax to protect characters such as
+spaces that have a meaning in the shell syntax.
+.Sp
+If you wish to define a function-like macro on the command line, write
+its argument list with surrounding parentheses before the equals sign
+(if any).  Parentheses are meaningful to most shells, so you will need
+to quote the option.  With \fBsh\fR and \fBcsh\fR,
+\&\fB\-D'\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB'\fR works.
+.Sp
+\&\fB\-D\fR and \fB\-U\fR options are processed in the order they
+are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
+\&\fB\-include\fR \fIfile\fR options are processed after all
+\&\fB\-D\fR and \fB\-U\fR options.
+.IP "\fB\-U\fR \fIname\fR" 4
+.IX Item "-U name"
+Cancel any previous definition of \fIname\fR, either built in or
+provided with a \fB\-D\fR option.
+.IP "\fB\-undef\fR" 4
+.IX Item "-undef"
+Do not predefine any system-specific or GCC-specific macros.  The
+standard predefined macros remain defined.
+.IP "\fB\-I\fR \fIdir\fR" 4
+.IX Item "-I dir"
+Add the directory \fIdir\fR to the list of directories to be searched
+for header files.
+Directories named by \fB\-I\fR are searched before the standard
+system include directories.  If the directory \fIdir\fR is a standard
+system include directory, the option is ignored to ensure that the
+default search order for system directories and the special treatment
+of system headers are not defeated
+\&.
+.IP "\fB\-o\fR \fIfile\fR" 4
+.IX Item "-o file"
+Write output to \fIfile\fR.  This is the same as specifying \fIfile\fR
+as the second non-option argument to \fBcpp\fR.  \fBgcc\fR has a
+different interpretation of a second non-option argument, so you must
+use \fB\-o\fR to specify the output file.
+.IP "\fB\-Wall\fR" 4
+.IX Item "-Wall"
+Turns on all optional warnings which are desirable for normal code.  At
+present this is \fB\-Wcomment\fR and \fB\-Wtrigraphs\fR.  Note that
+many of the preprocessor's warnings are on by default and have no
+options to control them.
+.IP "\fB\-Wcomment\fR" 4
+.IX Item "-Wcomment"
+.PD 0
+.IP "\fB\-Wcomments\fR" 4
+.IX Item "-Wcomments"
+.PD
+Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
+comment, or whenever a backslash-newline appears in a \fB//\fR comment.
+(Both forms have the same effect.)
+.IP "\fB\-Wtrigraphs\fR" 4
+.IX Item "-Wtrigraphs"
+Warn if any trigraphs are encountered.  This option used to take effect
+only if \fB\-trigraphs\fR was also specified, but now works
+independently.  Warnings are not given for trigraphs within comments, as
+they do not affect the meaning of the program.
+.IP "\fB\-Wtraditional\fR" 4
+.IX Item "-Wtraditional"
+Warn about certain constructs that behave differently in traditional and
+\&\s-1ISO\s0 C.  Also warn about \s-1ISO\s0 C constructs that have no traditional C
+equivalent, and problematic constructs which should be avoided.
+.IP "\fB\-Wimport\fR" 4
+.IX Item "-Wimport"
+Warn the first time \fB#import\fR is used.
+.IP "\fB\-Wundef\fR" 4
+.IX Item "-Wundef"
+Warn whenever an identifier which is not a macro is encountered in an
+\&\fB#if\fR directive, outside of \fBdefined\fR.  Such identifiers are
+replaced with zero.
+.IP "\fB\-Wunused\-macros\fR" 4
+.IX Item "-Wunused-macros"
+Warn about macros defined in the main file that are unused.  A macro
+is \fIused\fR if it is expanded or tested for existence at least once.
+The preprocessor will also warn if the macro has not been used at the
+time it is redefined or undefined.
+.Sp
+Built-in macros, macros defined on the command line, and macros
+defined in include files are not warned about.
+.Sp
+\&\fBNote:\fR If a macro is actually used, but only used in skipped
+conditional blocks, then \s-1CPP\s0 will report it as unused.  To avoid the
+warning in such a case, you might improve the scope of the macro's
+definition by, for example, moving it into the first skipped block.
+Alternatively, you could provide a dummy use with something like:
+.Sp
+.Vb 2
+\&        #if defined the_macro_causing_the_warning
+\&        #endif
+.Ve
+.IP "\fB\-Wendif\-labels\fR" 4
+.IX Item "-Wendif-labels"
+Warn whenever an \fB#else\fR or an \fB#endif\fR are followed by text.
+This usually happens in code of the form
+.Sp
+.Vb 5
+\&        #if FOO
+\&        ...
+\&        #else FOO
+\&        ...
+\&        #endif FOO
+.Ve
+.Sp
+The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments, but often are not
+in older programs.  This warning is on by default.
+.IP "\fB\-Werror\fR" 4
+.IX Item "-Werror"
+Make all warnings into hard errors.  Source code which triggers warnings
+will be rejected.
+.IP "\fB\-Wsystem\-headers\fR" 4
+.IX Item "-Wsystem-headers"
+Issue warnings for code in system headers.  These are normally unhelpful
+in finding bugs in your own code, therefore suppressed.  If you are
+responsible for the system library, you may want to see them.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+Suppress all warnings, including those which \s-1GNU\s0 \s-1CPP\s0 issues by default.
+.IP "\fB\-pedantic\fR" 4
+.IX Item "-pedantic"
+Issue all the mandatory diagnostics listed in the C standard.  Some of
+them are left out by default, since they trigger frequently on harmless
+code.
+.IP "\fB\-pedantic\-errors\fR" 4
+.IX Item "-pedantic-errors"
+Issue all the mandatory diagnostics, and make all mandatory diagnostics
+into errors.  This includes mandatory diagnostics that \s-1GCC\s0 issues
+without \fB\-pedantic\fR but treats as warnings.
+.IP "\fB\-M\fR" 4
+.IX Item "-M"
+Instead of outputting the result of preprocessing, output a rule
+suitable for \fBmake\fR describing the dependencies of the main
+source file.  The preprocessor outputs one \fBmake\fR rule containing
+the object file name for that source file, a colon, and the names of all
+the included files, including those coming from \fB\-include\fR or
+\&\fB\-imacros\fR command line options.
+.Sp
+Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
+object file name consists of the basename of the source file with any
+suffix replaced with object file suffix.  If there are many included
+files then the rule is split into several lines using \fB\e\fR\-newline.
+The rule has no commands.
+.Sp
+This option does not suppress the preprocessor's debug output, such as
+\&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
+rules you should explicitly specify the dependency output file with
+\&\fB\-MF\fR, or use an environment variable like
+\&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR.  Debug output
+will still be sent to the regular output stream as normal.
+.Sp
+Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
+warnings with an implicit \fB\-w\fR.
+.IP "\fB\-MM\fR" 4
+.IX Item "-MM"
+Like \fB\-M\fR but do not mention header files that are found in
+system header directories, nor header files that are included,
+directly or indirectly, from such a header.
+.Sp
+This implies that the choice of angle brackets or double quotes in an
+\&\fB#include\fR directive does not in itself determine whether that
+header will appear in \fB\-MM\fR dependency output.  This is a
+slight change in semantics from \s-1GCC\s0 versions 3.0 and earlier.
+.IP "\fB\-MF\fR \fIfile\fR" 4
+.IX Item "-MF file"
+ at anchor{\-MF}
+When used with \fB\-M\fR or \fB\-MM\fR, specifies a
+file to write the dependencies to.  If no \fB\-MF\fR switch is given
+the preprocessor sends the rules to the same place it would have sent
+preprocessed output.
+.Sp
+When used with the driver options \fB\-MD\fR or \fB\-MMD\fR,
+\&\fB\-MF\fR overrides the default dependency output file.
+.IP "\fB\-MG\fR" 4
+.IX Item "-MG"
+In conjunction with an option such as \fB\-M\fR requesting
+dependency generation, \fB\-MG\fR assumes missing header files are
+generated files and adds them to the dependency list without raising
+an error.  The dependency filename is taken directly from the
+\&\f(CW\*(C`#include\*(C'\fR directive without prepending any path.  \fB\-MG\fR
+also suppresses preprocessed output, as a missing header file renders
+this useless.
+.Sp
+This feature is used in automatic updating of makefiles.
+.IP "\fB\-MP\fR" 4
+.IX Item "-MP"
+This option instructs \s-1CPP\s0 to add a phony target for each dependency
+other than the main file, causing each to depend on nothing.  These
+dummy rules work around errors \fBmake\fR gives if you remove header
+files without updating the \fIMakefile\fR to match.
+.Sp
+This is typical output:
+.Sp
+.Vb 1
+\&        test.o: test.c test.h
+.Ve
+.Sp
+.Vb 1
+\&        test.h:
+.Ve
+.IP "\fB\-MT\fR \fItarget\fR" 4
+.IX Item "-MT target"
+Change the target of the rule emitted by dependency generation.  By
+default \s-1CPP\s0 takes the name of the main input file, including any path,
+deletes any file suffix such as \fB.c\fR, and appends the platform's
+usual object suffix.  The result is the target.
+.Sp
+An \fB\-MT\fR option will set the target to be exactly the string you
+specify.  If you want multiple targets, you can specify them as a single
+argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
+.Sp
+For example, \fB\-MT\ '$(objpfx)foo.o'\fR might give
+.Sp
+.Vb 1
+\&        $(objpfx)foo.o: foo.c
+.Ve
+.IP "\fB\-MQ\fR \fItarget\fR" 4
+.IX Item "-MQ target"
+Same as \fB\-MT\fR, but it quotes any characters which are special to
+Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR gives
+.Sp
+.Vb 1
+\&        $$(objpfx)foo.o: foo.c
+.Ve
+.Sp
+The default target is automatically quoted, as if it were given with
+\&\fB\-MQ\fR.
+.IP "\fB\-MD\fR" 4
+.IX Item "-MD"
+\&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
+\&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
+whether an \fB\-o\fR option is given.  If it is, the driver uses its
+argument but with a suffix of \fI.d\fR, otherwise it take the
+basename of the input file and applies a \fI.d\fR suffix.
+.Sp
+If \fB\-MD\fR is used in conjunction with \fB\-E\fR, any
+\&\fB\-o\fR switch is understood to specify the dependency output file
+(but \f(CW at pxref\fR{\-MF}), but if used without \fB\-E\fR, each \fB\-o\fR
+is understood to specify a target object file.
+.Sp
+Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
+a dependency output file as a side-effect of the compilation process.
+.IP "\fB\-MMD\fR" 4
+.IX Item "-MMD"
+Like \fB\-MD\fR except mention only user header files, not system
+\&\-header files.
+.IP "\fB\-x c\fR" 4
+.IX Item "-x c"
+.PD 0
+.IP "\fB\-x c++\fR" 4
+.IX Item "-x c++"
+.IP "\fB\-x objective-c\fR" 4
+.IX Item "-x objective-c"
+.IP "\fB\-x assembler-with-cpp\fR" 4
+.IX Item "-x assembler-with-cpp"
+.PD
+Specify the source language: C, \*(C+, Objective\-C, or assembly.  This has
+nothing to do with standards conformance or extensions; it merely
+selects which base syntax to expect.  If you give none of these options,
+cpp will deduce the language from the extension of the source file:
+\&\fB.c\fR, \fB.cc\fR, \fB.m\fR, or \fB.S\fR.  Some other common
+extensions for \*(C+ and assembly are also recognized.  If cpp does not
+recognize the extension, it will treat the file as C; this is the most
+generic mode.
+.Sp
+\&\fBNote:\fR Previous versions of cpp accepted a \fB\-lang\fR option
+which selected both the language and the standards conformance level.
+This option has been removed, because it conflicts with the \fB\-l\fR
+option.
+.IP "\fB\-std=\fR\fIstandard\fR" 4
+.IX Item "-std=standard"
+.PD 0
+.IP "\fB\-ansi\fR" 4
+.IX Item "-ansi"
+.PD
+Specify the standard to which the code should conform.  Currently \s-1CPP\s0
+knows about C and \*(C+ standards; others may be added in the future.
+.Sp
+\&\fIstandard\fR
+may be one of:
+.RS 4
+.ie n .IP """iso9899:1990""" 4
+.el .IP "\f(CWiso9899:1990\fR" 4
+.IX Item "iso9899:1990"
+.PD 0
+.ie n .IP """c89""" 4
+.el .IP "\f(CWc89\fR" 4
+.IX Item "c89"
+.PD
+The \s-1ISO\s0 C standard from 1990.  \fBc89\fR is the customary shorthand for
+this version of the standard.
+.Sp
+The \fB\-ansi\fR option is equivalent to \fB\-std=c89\fR.
+.ie n .IP """iso9899:199409""" 4
+.el .IP "\f(CWiso9899:199409\fR" 4
+.IX Item "iso9899:199409"
+The 1990 C standard, as amended in 1994.
+.ie n .IP """iso9899:1999""" 4
+.el .IP "\f(CWiso9899:1999\fR" 4
+.IX Item "iso9899:1999"
+.PD 0
+.ie n .IP """c99""" 4
+.el .IP "\f(CWc99\fR" 4
+.IX Item "c99"
+.ie n .IP """iso9899:199x""" 4
+.el .IP "\f(CWiso9899:199x\fR" 4
+.IX Item "iso9899:199x"
+.ie n .IP """c9x""" 4
+.el .IP "\f(CWc9x\fR" 4
+.IX Item "c9x"
+.PD
+The revised \s-1ISO\s0 C standard, published in December 1999.  Before
+publication, this was known as C9X.
+.ie n .IP """gnu89""" 4
+.el .IP "\f(CWgnu89\fR" 4
+.IX Item "gnu89"
+The 1990 C standard plus \s-1GNU\s0 extensions.  This is the default.
+.ie n .IP """gnu99""" 4
+.el .IP "\f(CWgnu99\fR" 4
+.IX Item "gnu99"
+.PD 0
+.ie n .IP """gnu9x""" 4
+.el .IP "\f(CWgnu9x\fR" 4
+.IX Item "gnu9x"
+.PD
+The 1999 C standard plus \s-1GNU\s0 extensions.
+.ie n .IP """c++98""" 4
+.el .IP "\f(CWc++98\fR" 4
+.IX Item "c++98"
+The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
+.ie n .IP """gnu++98""" 4
+.el .IP "\f(CWgnu++98\fR" 4
+.IX Item "gnu++98"
+The same as \fB\-std=c++98\fR plus \s-1GNU\s0 extensions.  This is the
+default for \*(C+ code.
+.RE
+.RS 4
+.RE
+.IP "\fB\-I\-\fR" 4
+.IX Item "-I-"
+Split the include path.  Any directories specified with \fB\-I\fR
+options before \fB\-I\-\fR are searched only for headers requested with
+\&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR; they are not searched for
+\&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR.  If additional directories are
+specified with \fB\-I\fR options after the \fB\-I\-\fR, those
+directories are searched for all \fB#include\fR directives.
+.Sp
+In addition, \fB\-I\-\fR inhibits the use of the directory of the current
+file directory as the first search directory for \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.
+.IP "\fB\-nostdinc\fR" 4
+.IX Item "-nostdinc"
+Do not search the standard system directories for header files.
+Only the directories you have specified with \fB\-I\fR options
+(and the directory of the current file, if appropriate) are searched.
+.IP "\fB\-nostdinc++\fR" 4
+.IX Item "-nostdinc++"
+Do not search for header files in the \*(C+\-specific standard directories,
+but do still search the other standard directories.  (This option is
+used when building the \*(C+ library.)
+.IP "\fB\-include\fR \fIfile\fR" 4
+.IX Item "-include file"
+Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
+line of the primary source file.  However, the first directory searched
+for \fIfile\fR is the preprocessor's working directory \fIinstead of\fR
+the directory containing the main source file.  If not found there, it
+is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
+chain as normal.
+.Sp
+If multiple \fB\-include\fR options are given, the files are included
+in the order they appear on the command line.
+.IP "\fB\-imacros\fR \fIfile\fR" 4
+.IX Item "-imacros file"
+Exactly like \fB\-include\fR, except that any output produced by
+scanning \fIfile\fR is thrown away.  Macros it defines remain defined.
+This allows you to acquire all the macros from a header without also
+processing its declarations.
+.Sp
+All files specified by \fB\-imacros\fR are processed before all files
+specified by \fB\-include\fR.
+.IP "\fB\-idirafter\fR \fIdir\fR" 4
+.IX Item "-idirafter dir"
+Search \fIdir\fR for header files, but do it \fIafter\fR all
+directories specified with \fB\-I\fR and the standard system directories
+have been exhausted.  \fIdir\fR is treated as a system include directory.
+.IP "\fB\-iprefix\fR \fIprefix\fR" 4
+.IX Item "-iprefix prefix"
+Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
+options.  If the prefix represents a directory, you should include the
+final \fB/\fR.
+.IP "\fB\-iwithprefix\fR \fIdir\fR" 4
+.IX Item "-iwithprefix dir"
+.PD 0
+.IP "\fB\-iwithprefixbefore\fR \fIdir\fR" 4
+.IX Item "-iwithprefixbefore dir"
+.PD
+Append \fIdir\fR to the prefix specified previously with
+\&\fB\-iprefix\fR, and add the resulting directory to the include search
+path.  \fB\-iwithprefixbefore\fR puts it in the same place \fB\-I\fR
+would; \fB\-iwithprefix\fR puts it where \fB\-idirafter\fR would.
+.Sp
+Use of these options is discouraged.
+.IP "\fB\-isystem\fR \fIdir\fR" 4
+.IX Item "-isystem dir"
+Search \fIdir\fR for header files, after all directories specified by
+\&\fB\-I\fR but before the standard system directories.  Mark it
+as a system directory, so that it gets the same special treatment as
+is applied to the standard system directories.
+.IP "\fB\-fpreprocessed\fR" 4
+.IX Item "-fpreprocessed"
+Indicate to the preprocessor that the input file has already been
+preprocessed.  This suppresses things like macro expansion, trigraph
+conversion, escaped newline splicing, and processing of most directives.
+The preprocessor still recognizes and removes comments, so that you can
+pass a file preprocessed with \fB\-C\fR to the compiler without
+problems.  In this mode the integrated preprocessor is little more than
+a tokenizer for the front ends.
+.Sp
+\&\fB\-fpreprocessed\fR is implicit if the input file has one of the
+extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
+extensions that \s-1GCC\s0 uses for preprocessed files created by
+\&\fB\-save\-temps\fR.
+.IP "\fB\-ftabstop=\fR\fIwidth\fR" 4
+.IX Item "-ftabstop=width"
+Set the distance between tab stops.  This helps the preprocessor report
+correct column numbers in warnings or errors, even if tabs appear on the
+line.  If the value is less than 1 or greater than 100, the option is
+ignored.  The default is 8.
+.IP "\fB\-fno\-show\-column\fR" 4
+.IX Item "-fno-show-column"
+Do not print column numbers in diagnostics.  This may be necessary if
+diagnostics are being scanned by a program that does not understand the
+column numbers, such as \fBdejagnu\fR.
+.IP "\fB\-A\fR \fIpredicate\fR\fB=\fR\fIanswer\fR" 4
+.IX Item "-A predicate=answer"
+Make an assertion with the predicate \fIpredicate\fR and answer
+\&\fIanswer\fR.  This form is preferred to the older form \fB\-A\fR
+\&\fIpredicate\fR\fB(\fR\fIanswer\fR\fB)\fR, which is still supported, because
+it does not use shell special characters.
+.IP "\fB\-A \-\fR\fIpredicate\fR\fB=\fR\fIanswer\fR" 4
+.IX Item "-A -predicate=answer"
+Cancel an assertion with the predicate \fIpredicate\fR and answer
+\&\fIanswer\fR.
+.IP "\fB\-dCHARS\fR" 4
+.IX Item "-dCHARS"
+\&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
+and must not be preceded by a space.  Other characters are interpreted
+by the compiler proper, or reserved for future versions of \s-1GCC\s0, and so
+are silently ignored.  If you specify characters whose behavior
+conflicts, the result is undefined.
+.RS 4
+.IP "\fBM\fR" 4
+.IX Item "M"
+Instead of the normal output, generate a list of \fB#define\fR
+directives for all the macros defined during the execution of the
+preprocessor, including predefined macros.  This gives you a way of
+finding out what is predefined in your version of the preprocessor.
+Assuming you have no file \fIfoo.h\fR, the command
+.Sp
+.Vb 1
+\&        touch foo.h; cpp -dM foo.h
+.Ve
+.Sp
+will show all the predefined macros.
+.IP "\fBD\fR" 4
+.IX Item "D"
+Like \fBM\fR except in two respects: it does \fInot\fR include the
+predefined macros, and it outputs \fIboth\fR the \fB#define\fR
+directives and the result of preprocessing.  Both kinds of output go to
+the standard output file.
+.IP "\fBN\fR" 4
+.IX Item "N"
+Like \fBD\fR, but emit only the macro names, not their expansions.
+.IP "\fBI\fR" 4
+.IX Item "I"
+Output \fB#include\fR directives in addition to the result of
+preprocessing.
+.RE
+.RS 4
+.RE
+.IP "\fB\-P\fR" 4
+.IX Item "-P"
+Inhibit generation of linemarkers in the output from the preprocessor.
+This might be useful when running the preprocessor on something that is
+not C code, and will be sent to a program which might be confused by the
+linemarkers.
+.IP "\fB\-C\fR" 4
+.IX Item "-C"
+Do not discard comments.  All comments are passed through to the output
+file, except for comments in processed directives, which are deleted
+along with the directive.
+.Sp
+You should be prepared for side effects when using \fB\-C\fR; it
+causes the preprocessor to treat comments as tokens in their own right.
+For example, comments appearing at the start of what would be a
+directive line have the effect of turning that line into an ordinary
+source line, since the first token on the line is no longer a \fB#\fR.
+.IP "\fB\-CC\fR" 4
+.IX Item "-CC"
+Do not discard comments, including during macro expansion.  This is
+like \fB\-C\fR, except that comments contained within macros are
+also passed through to the output file where the macro is expanded.
+.Sp
+In addition to the side-effects of the \fB\-C\fR option, the
+\&\fB\-CC\fR option causes all \*(C+\-style comments inside a macro
+to be converted to C\-style comments.  This is to prevent later use
+of that macro from inadvertently commenting out the remainder of
+the source line.
+.Sp
+The \fB\-CC\fR option is generally used to support lint comments.
+.IP "\fB\-traditional\-cpp\fR" 4
+.IX Item "-traditional-cpp"
+Try to imitate the behavior of old-fashioned C preprocessors, as
+opposed to \s-1ISO\s0 C preprocessors.
+.IP "\fB\-trigraphs\fR" 4
+.IX Item "-trigraphs"
+Process trigraph sequences.
+These are three-character sequences, all starting with \fB??\fR, that
+are defined by \s-1ISO\s0 C to stand for single characters.  For example,
+\&\fB??/\fR stands for \fB\e\fR, so \fB'??/n'\fR is a character
+constant for a newline.  By default, \s-1GCC\s0 ignores trigraphs, but in
+standard-conforming modes it converts them.  See the \fB\-std\fR and
+\&\fB\-ansi\fR options.
+.Sp
+The nine trigraphs and their replacements are
+.Sp
+.Vb 2
+\&        Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
+\&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
+.Ve
+.IP "\fB\-remap\fR" 4
+.IX Item "-remap"
+Enable special code to work around file systems which only permit very
+short file names, such as \s-1MS\-DOS\s0.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD 0
+.IP "\fB\-\-target\-help\fR" 4
+.IX Item "--target-help"
+.PD
+Print text describing all the command line options instead of
+preprocessing anything.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Verbose mode.  Print out \s-1GNU\s0 \s-1CPP\s0's version number at the beginning of
+execution, and report the final form of the include path.
+.IP "\fB\-H\fR" 4
+.IX Item "-H"
+Print the name of each header file used, in addition to other normal
+activities.  Each name is indented to show how deep in the
+\&\fB#include\fR stack it is.
+.IP "\fB\-version\fR" 4
+.IX Item "-version"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Print out \s-1GNU\s0 \s-1CPP\s0's version number.  With one dash, proceed to
+preprocess as normal.  With two dashes, exit immediately.
+.Sh "Passing Options to the Assembler"
+.IX Subsection "Passing Options to the Assembler"
+You can pass options to the assembler.
+.IP "\fB\-Wa,\fR\fIoption\fR" 4
+.IX Item "-Wa,option"
+Pass \fIoption\fR as an option to the assembler.  If \fIoption\fR
+contains commas, it is split into multiple options at the commas.
+.Sh "Options for Linking"
+.IX Subsection "Options for Linking"
+These options come into play when the compiler links object files into
+an executable output file.  They are meaningless if the compiler is
+not doing a link step.
+.IP "\fIobject-file-name\fR" 4
+.IX Item "object-file-name"
+A file name that does not end in a special recognized suffix is
+considered to name an object file or library.  (Object files are
+distinguished from libraries by the linker according to the file
+contents.)  If linking is done, these object files are used as input
+to the linker.
+.IP "\fB\-c\fR" 4
+.IX Item "-c"
+.PD 0
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.IP "\fB\-E\fR" 4
+.IX Item "-E"
+.PD
+If any of these options is used, then the linker is not run, and
+object file names should not be used as arguments.  
+.IP "\fB\-l\fR\fIlibrary\fR" 4
+.IX Item "-llibrary"
+.PD 0
+.IP "\fB\-l\fR \fIlibrary\fR" 4
+.IX Item "-l library"
+.PD
+Search the library named \fIlibrary\fR when linking.  (The second
+alternative with the library as a separate argument is only for
+\&\s-1POSIX\s0 compliance and is not recommended.)
+.Sp
+It makes a difference where in the command you write this option; the
+linker searches and processes libraries and object files in the order they
+are specified.  Thus, \fBfoo.o \-lz bar.o\fR searches library \fBz\fR
+after file \fIfoo.o\fR but before \fIbar.o\fR.  If \fIbar.o\fR refers
+to functions in \fBz\fR, those functions may not be loaded.
+.Sp
+The linker searches a standard list of directories for the library,
+which is actually a file named \fIlib\fIlibrary\fI.a\fR.  The linker
+then uses this file as if it had been specified precisely by name.
+.Sp
+The directories searched include several standard system directories
+plus any that you specify with \fB\-L\fR.
+.Sp
+Normally the files found this way are library files\-\-\-archive files
+whose members are object files.  The linker handles an archive file by
+scanning through it for members which define symbols that have so far
+been referenced but not defined.  But if the file that is found is an
+ordinary object file, it is linked in the usual fashion.  The only
+difference between using an \fB\-l\fR option and specifying a file name
+is that \fB\-l\fR surrounds \fIlibrary\fR with \fBlib\fR and \fB.a\fR
+and searches several directories.
+.IP "\fB\-lobjc\fR" 4
+.IX Item "-lobjc"
+You need this special case of the \fB\-l\fR option in order to
+link an Objective-C program.
+.IP "\fB\-nostartfiles\fR" 4
+.IX Item "-nostartfiles"
+Do not use the standard system startup files when linking.
+The standard system libraries are used normally, unless \fB\-nostdlib\fR
+or \fB\-nodefaultlibs\fR is used.
+.IP "\fB\-nodefaultlibs\fR" 4
+.IX Item "-nodefaultlibs"
+Do not use the standard system libraries when linking.
+Only the libraries you specify will be passed to the linker.
+The standard startup files are used normally, unless \fB\-nostartfiles\fR
+is used.  The compiler may generate calls to memcmp, memset, and memcpy
+for System V (and \s-1ISO\s0 C) environments or to bcopy and bzero for
+\&\s-1BSD\s0 environments.  These entries are usually resolved by entries in
+libc.  These entry points should be supplied through some other
+mechanism when this option is specified.
+.IP "\fB\-nostdlib\fR" 4
+.IX Item "-nostdlib"
+Do not use the standard system startup files or libraries when linking.
+No startup files and only the libraries you specify will be passed to
+the linker.  The compiler may generate calls to memcmp, memset, and memcpy
+for System V (and \s-1ISO\s0 C) environments or to bcopy and bzero for
+\&\s-1BSD\s0 environments.  These entries are usually resolved by entries in
+libc.  These entry points should be supplied through some other
+mechanism when this option is specified.
+.Sp
+One of the standard libraries bypassed by \fB\-nostdlib\fR and
+\&\fB\-nodefaultlibs\fR is \fIlibgcc.a\fR, a library of internal subroutines
+that \s-1GCC\s0 uses to overcome shortcomings of particular machines, or special
+needs for some languages.
+.Sp
+In most cases, you need \fIlibgcc.a\fR even when you want to avoid
+other standard libraries.  In other words, when you specify \fB\-nostdlib\fR
+or \fB\-nodefaultlibs\fR you should usually specify \fB\-lgcc\fR as well.
+This ensures that you have no unresolved references to internal \s-1GCC\s0
+library subroutines.  (For example, \fB_\|_main\fR, used to ensure \*(C+
+constructors will be called.)
+.IP "\fB\-pie\fR" 4
+.IX Item "-pie"
+Produce a position independent executable on targets which support it.
+For predictable results, you must also specify the same set of options
+that were used to generate code (\fB\-fpie\fR, \fB\-fPIE\fR,
+or model suboptions) when you specify this option.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+Remove all symbol table and relocation information from the executable.
+.IP "\fB\-static\fR" 4
+.IX Item "-static"
+On systems that support dynamic linking, this prevents linking with the shared
+libraries.  On other systems, this option has no effect.
+.IP "\fB\-shared\fR" 4
+.IX Item "-shared"
+Produce a shared object which can then be linked with other objects to
+form an executable.  Not all systems support this option.  For predictable
+results, you must also specify the same set of options that were used to
+generate code (\fB\-fpic\fR, \fB\-fPIC\fR, or model suboptions)
+when you specify this option.[1]
+.IP "\fB\-shared\-libgcc\fR" 4
+.IX Item "-shared-libgcc"
+.PD 0
+.IP "\fB\-static\-libgcc\fR" 4
+.IX Item "-static-libgcc"
+.PD
+On systems that provide \fIlibgcc\fR as a shared library, these options
+force the use of either the shared or static version respectively.
+If no shared version of \fIlibgcc\fR was built when the compiler was
+configured, these options have no effect.
+.Sp
+There are several situations in which an application should use the
+shared \fIlibgcc\fR instead of the static version.  The most common
+of these is when the application wishes to throw and catch exceptions
+across different shared libraries.  In that case, each of the libraries
+as well as the application itself should use the shared \fIlibgcc\fR.
+.Sp
+Therefore, the G++ and \s-1GCJ\s0 drivers automatically add
+\&\fB\-shared\-libgcc\fR whenever you build a shared library or a main
+executable, because \*(C+ and Java programs typically use exceptions, so
+this is the right thing to do.
+.Sp
+If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
+find that they will not always be linked with the shared \fIlibgcc\fR.
+If \s-1GCC\s0 finds, at its configuration time, that you have a \s-1GNU\s0 linker that
+does not support option \fB\-\-eh\-frame\-hdr\fR, it will link the shared
+version of \fIlibgcc\fR into shared libraries by default.  Otherwise,
+it will take advantage of the linker and optimize away the linking with
+the shared version of \fIlibgcc\fR, linking with the static version of
+libgcc by default.  This allows exceptions to propagate through such
+shared libraries, without incurring relocation costs at library load
+time.
+.Sp
+However, if a library or main executable is supposed to throw or catch
+exceptions, you must link it using the G++ or \s-1GCJ\s0 driver, as appropriate
+for the languages used in the program, or using the option
+\&\fB\-shared\-libgcc\fR, such that it is linked with the shared
+\&\fIlibgcc\fR.
+.IP "\fB\-symbolic\fR" 4
+.IX Item "-symbolic"
+Bind references to global symbols when building a shared object.  Warn
+about any unresolved references (unless overridden by the link editor
+option \fB\-Xlinker \-z \-Xlinker defs\fR).  Only a few systems support
+this option.
+.IP "\fB\-Xlinker\fR \fIoption\fR" 4
+.IX Item "-Xlinker option"
+Pass \fIoption\fR as an option to the linker.  You can use this to
+supply system-specific linker options which \s-1GCC\s0 does not know how to
+recognize.
+.Sp
+If you want to pass an option that takes an argument, you must use
+\&\fB\-Xlinker\fR twice, once for the option and once for the argument.
+For example, to pass \fB\-assert definitions\fR, you must write
+\&\fB\-Xlinker \-assert \-Xlinker definitions\fR.  It does not work to write
+\&\fB\-Xlinker \*(L"\-assert definitions\*(R"\fR, because this passes the entire
+string as a single argument, which is not what the linker expects.
+.IP "\fB\-Wl,\fR\fIoption\fR" 4
+.IX Item "-Wl,option"
+Pass \fIoption\fR as an option to the linker.  If \fIoption\fR contains
+commas, it is split into multiple options at the commas.
+.IP "\fB\-u\fR \fIsymbol\fR" 4
+.IX Item "-u symbol"
+Pretend the symbol \fIsymbol\fR is undefined, to force linking of
+library modules to define it.  You can use \fB\-u\fR multiple times with
+different symbols to force loading of additional library modules.
+.Sh "Options for Directory Search"
+.IX Subsection "Options for Directory Search"
+These options specify directories to search for header files, for
+libraries and for parts of the compiler:
+.IP "\fB\-I\fR\fIdir\fR" 4
+.IX Item "-Idir"
+Add the directory \fIdir\fR to the head of the list of directories to be
+searched for header files.  This can be used to override a system header
+file, substituting your own version, since these directories are
+searched before the system header file directories.  However, you should
+not use this option to add directories that contain vendor-supplied
+system header files (use \fB\-isystem\fR for that).  If you use more than
+one \fB\-I\fR option, the directories are scanned in left-to-right
+order; the standard system directories come after.
+.Sp
+If a standard system include directory, or a directory specified with
+\&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
+option will be ignored.  The directory will still be searched but as a
+system directory at its normal position in the system include chain.
+This is to ensure that \s-1GCC\s0's procedure to fix buggy system headers and
+the ordering for the include_next directive are not inadvertently changed.
+If you really need to change the search order for system directories,
+use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
+.IP "\fB\-I\-\fR" 4
+.IX Item "-I-"
+Any directories you specify with \fB\-I\fR options before the \fB\-I\-\fR
+option are searched only for the case of \fB#include "\fR\fIfile\fR\fB"\fR;
+they are not searched for \fB#include <\fR\fIfile\fR\fB>\fR.
+.Sp
+If additional directories are specified with \fB\-I\fR options after
+the \fB\-I\-\fR, these directories are searched for all \fB#include\fR
+directives.  (Ordinarily \fIall\fR \fB\-I\fR directories are used
+this way.)
+.Sp
+In addition, the \fB\-I\-\fR option inhibits the use of the current
+directory (where the current input file came from) as the first search
+directory for \fB#include "\fR\fIfile\fR\fB"\fR.  There is no way to
+override this effect of \fB\-I\-\fR.  With \fB\-I.\fR you can specify
+searching the directory which was current when the compiler was
+invoked.  That is not exactly the same as what the preprocessor does
+by default, but it is often satisfactory.
+.Sp
+\&\fB\-I\-\fR does not inhibit the use of the standard system directories
+for header files.  Thus, \fB\-I\-\fR and \fB\-nostdinc\fR are
+independent.
+.IP "\fB\-L\fR\fIdir\fR" 4
+.IX Item "-Ldir"
+Add directory \fIdir\fR to the list of directories to be searched
+for \fB\-l\fR.
+.IP "\fB\-B\fR\fIprefix\fR" 4
+.IX Item "-Bprefix"
+This option specifies where to find the executables, libraries,
+include files, and data files of the compiler itself.
+.Sp
+The compiler driver program runs one or more of the subprograms
+\&\fIcpp\fR, \fIcc1\fR, \fIas\fR and \fIld\fR.  It tries
+\&\fIprefix\fR as a prefix for each program it tries to run, both with and
+without \fImachine\fR\fB/\fR\fIversion\fR\fB/\fR.
+.Sp
+For each subprogram to be run, the compiler driver first tries the
+\&\fB\-B\fR prefix, if any.  If that name is not found, or if \fB\-B\fR
+was not specified, the driver tries two standard prefixes, which are
+\&\fI/usr/lib/gcc/\fR and \fI/usr/local/lib/gcc\-lib/\fR.  If neither of
+those results in a file name that is found, the unmodified program
+name is searched for using the directories specified in your
+\&\fB\s-1PATH\s0\fR environment variable.
+.Sp
+The compiler will check to see if the path provided by the \fB\-B\fR
+refers to a directory, and if necessary it will add a directory
+separator character at the end of the path.
+.Sp
+\&\fB\-B\fR prefixes that effectively specify directory names also apply
+to libraries in the linker, because the compiler translates these
+options into \fB\-L\fR options for the linker.  They also apply to
+includes files in the preprocessor, because the compiler translates these
+options into \fB\-isystem\fR options for the preprocessor.  In this case,
+the compiler appends \fBinclude\fR to the prefix.
+.Sp
+The run-time support file \fIlibgcc.a\fR can also be searched for using
+the \fB\-B\fR prefix, if needed.  If it is not found there, the two
+standard prefixes above are tried, and that is all.  The file is left
+out of the link if it is not found by those means.
+.Sp
+Another way to specify a prefix much like the \fB\-B\fR prefix is to use
+the environment variable \fB\s-1GCC_EXEC_PREFIX\s0\fR.  
+.Sp
+As a special kludge, if the path provided by \fB\-B\fR is
+\&\fI[dir/]stage\fIN\fI/\fR, where \fIN\fR is a number in the range 0 to
+9, then it will be replaced by \fI[dir/]include\fR.  This is to help
+with boot-strapping the compiler.
+.IP "\fB\-specs=\fR\fIfile\fR" 4
+.IX Item "-specs=file"
+Process \fIfile\fR after the compiler reads in the standard \fIspecs\fR
+file, in order to override the defaults that the \fIgcc\fR driver
+program uses when determining what switches to pass to \fIcc1\fR,
+\&\fIcc1plus\fR, \fIas\fR, \fIld\fR, etc.  More than one
+\&\fB\-specs=\fR\fIfile\fR can be specified on the command line, and they
+are processed in order, from left to right.
+.Sh "Specifying Target Machine and Compiler Version"
+.IX Subsection "Specifying Target Machine and Compiler Version"
+The usual way to run \s-1GCC\s0 is to run the executable called \fIgcc\fR, or
+\&\fI<machine>\-gcc\fR when cross\-compiling, or
+\&\fI<machine>\-gcc\-<version>\fR to run a version other than the one that
+was installed last.  Sometimes this is inconvenient, so \s-1GCC\s0 provides
+options that will switch to another cross-compiler or version.
+.IP "\fB\-b\fR \fImachine\fR" 4
+.IX Item "-b machine"
+The argument \fImachine\fR specifies the target machine for compilation.
+.Sp
+The value to use for \fImachine\fR is the same as was specified as the
+machine type when configuring \s-1GCC\s0 as a cross\-compiler.  For
+example, if a cross-compiler was configured with \fBconfigure
+i386v\fR, meaning to compile for an 80386 running System V, then you
+would specify \fB\-b i386v\fR to run that cross compiler.
+.IP "\fB\-V\fR \fIversion\fR" 4
+.IX Item "-V version"
+The argument \fIversion\fR specifies which version of \s-1GCC\s0 to run.
+This is useful when multiple versions are installed.  For example,
+\&\fIversion\fR might be \fB2.0\fR, meaning to run \s-1GCC\s0 version 2.0.
+.PP
+The \fB\-V\fR and \fB\-b\fR options work by running the
+\&\fI<machine>\-gcc\-<version>\fR executable, so there's no real reason to
+use them if you can just run that directly.
+.Sh "Hardware Models and Configurations"
+.IX Subsection "Hardware Models and Configurations"
+Earlier we discussed the standard option \fB\-b\fR which chooses among
+different installed compilers for completely different target
+machines, such as \s-1VAX\s0 vs. 68000 vs. 80386.
+.PP
+In addition, each of these target machine types can have its own
+special options, starting with \fB\-m\fR, to choose among various
+hardware models or configurations\-\-\-for example, 68010 vs 68020,
+floating coprocessor or none.  A single installed version of the
+compiler can compile for any model or configuration, according to the
+options specified.
+.PP
+Some configurations of the compiler also support additional special
+options, usually for compatibility with other compilers on the same
+platform.
+.PP
+These options are defined by the macro \f(CW\*(C`TARGET_SWITCHES\*(C'\fR in the
+machine description.  The default for the options is also defined by
+that macro, which enables you to change the defaults.
+.Sh "M680x0 Options"
+.IX Subsection "M680x0 Options"
+These are the \fB\-m\fR options defined for the 68000 series.  The default
+values for these options depends on which style of 68000 was selected when
+the compiler was configured; the defaults for the most common choices are
+given below.
+.IP "\fB\-m68000\fR" 4
+.IX Item "-m68000"
+.PD 0
+.IP "\fB\-mc68000\fR" 4
+.IX Item "-mc68000"
+.PD
+Generate output for a 68000.  This is the default
+when the compiler is configured for 68000\-based systems.
+.Sp
+Use this option for microcontrollers with a 68000 or \s-1EC000\s0 core,
+including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
+.IP "\fB\-m68020\fR" 4
+.IX Item "-m68020"
+.PD 0
+.IP "\fB\-mc68020\fR" 4
+.IX Item "-mc68020"
+.PD
+Generate output for a 68020.  This is the default
+when the compiler is configured for 68020\-based systems.
+.IP "\fB\-m68881\fR" 4
+.IX Item "-m68881"
+Generate output containing 68881 instructions for floating point.
+This is the default for most 68020 systems unless \fB\-\-nfp\fR was
+specified when the compiler was configured.
+.IP "\fB\-m68030\fR" 4
+.IX Item "-m68030"
+Generate output for a 68030.  This is the default when the compiler is
+configured for 68030\-based systems.
+.IP "\fB\-m68040\fR" 4
+.IX Item "-m68040"
+Generate output for a 68040.  This is the default when the compiler is
+configured for 68040\-based systems.
+.Sp
+This option inhibits the use of 68881/68882 instructions that have to be
+emulated by software on the 68040.  Use this option if your 68040 does not
+have code to emulate those instructions.
+.IP "\fB\-m68060\fR" 4
+.IX Item "-m68060"
+Generate output for a 68060.  This is the default when the compiler is
+configured for 68060\-based systems.
+.Sp
+This option inhibits the use of 68020 and 68881/68882 instructions that
+have to be emulated by software on the 68060.  Use this option if your 68060
+does not have code to emulate those instructions.
+.IP "\fB\-mcpu32\fR" 4
+.IX Item "-mcpu32"
+Generate output for a \s-1CPU32\s0.  This is the default
+when the compiler is configured for CPU32\-based systems.
+.Sp
+Use this option for microcontrollers with a
+\&\s-1CPU32\s0 or \s-1CPU32+\s0 core, including the 68330, 68331, 68332, 68333, 68334,
+68336, 68340, 68341, 68349 and 68360.
+.IP "\fB\-m5200\fR" 4
+.IX Item "-m5200"
+Generate output for a 520X ``coldfire'' family cpu.  This is the default
+when the compiler is configured for 520X\-based systems.
+.Sp
+Use this option for microcontroller with a 5200 core, including
+the \s-1MCF5202\s0, \s-1MCF5203\s0, \s-1MCF5204\s0 and \s-1MCF5202\s0.
+.IP "\fB\-m68020\-40\fR" 4
+.IX Item "-m68020-40"
+Generate output for a 68040, without using any of the new instructions.
+This results in code which can run relatively efficiently on either a
+68020/68881 or a 68030 or a 68040.  The generated code does use the
+68881 instructions that are emulated on the 68040.
+.IP "\fB\-m68020\-60\fR" 4
+.IX Item "-m68020-60"
+Generate output for a 68060, without using any of the new instructions.
+This results in code which can run relatively efficiently on either a
+68020/68881 or a 68030 or a 68040.  The generated code does use the
+68881 instructions that are emulated on the 68060.
+.IP "\fB\-mfpa\fR" 4
+.IX Item "-mfpa"
+Generate output containing Sun \s-1FPA\s0 instructions for floating point.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries are not available for all m68k
+targets.  Normally the facilities of the machine's usual C compiler are
+used, but this can't be done directly in cross\-compilation.  You must
+make your own arrangements to provide suitable library functions for
+cross\-compilation.  The embedded targets \fBm68k\-*\-aout\fR and
+\&\fBm68k\-*\-coff\fR do provide software floating point support.
+.IP "\fB\-mshort\fR" 4
+.IX Item "-mshort"
+Consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide, like \f(CW\*(C`short int\*(C'\fR.
+.IP "\fB\-mnobitfield\fR" 4
+.IX Item "-mnobitfield"
+Do not use the bit-field instructions.  The \fB\-m68000\fR, \fB\-mcpu32\fR
+and \fB\-m5200\fR options imply \fB\-mnobitfield\fR.
+.IP "\fB\-mbitfield\fR" 4
+.IX Item "-mbitfield"
+Do use the bit-field instructions.  The \fB\-m68020\fR option implies
+\&\fB\-mbitfield\fR.  This is the default if you use a configuration
+designed for a 68020.
+.IP "\fB\-mrtd\fR" 4
+.IX Item "-mrtd"
+Use a different function-calling convention, in which functions
+that take a fixed number of arguments return with the \f(CW\*(C`rtd\*(C'\fR
+instruction, which pops their arguments while returning.  This
+saves one instruction in the caller since there is no need to pop
+the arguments there.
+.Sp
+This calling convention is incompatible with the one normally
+used on Unix, so you cannot use it if you need to call libraries
+compiled with the Unix compiler.
+.Sp
+Also, you must provide function prototypes for all functions that
+take variable numbers of arguments (including \f(CW\*(C`printf\*(C'\fR);
+otherwise incorrect code will be generated for calls to those
+functions.
+.Sp
+In addition, seriously incorrect code will result if you call a
+function with too many arguments.  (Normally, extra arguments are
+harmlessly ignored.)
+.Sp
+The \f(CW\*(C`rtd\*(C'\fR instruction is supported by the 68010, 68020, 68030,
+68040, 68060 and \s-1CPU32\s0 processors, but not by the 68000 or 5200.
+.IP "\fB\-malign\-int\fR" 4
+.IX Item "-malign-int"
+.PD 0
+.IP "\fB\-mno\-align\-int\fR" 4
+.IX Item "-mno-align-int"
+.PD
+Control whether \s-1GCC\s0 aligns \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`long long\*(C'\fR,
+\&\f(CW\*(C`float\*(C'\fR, \f(CW\*(C`double\*(C'\fR, and \f(CW\*(C`long double\*(C'\fR variables on a 32\-bit
+boundary (\fB\-malign\-int\fR) or a 16\-bit boundary (\fB\-mno\-align\-int\fR).
+Aligning variables on 32\-bit boundaries produces code that runs somewhat
+faster on processors with 32\-bit busses at the expense of more memory.
+.Sp
+\&\fBWarning:\fR if you use the \fB\-malign\-int\fR switch, \s-1GCC\s0 will
+align structures containing the above types  differently than
+most published application binary interface specifications for the m68k.
+.IP "\fB\-mpcrel\fR" 4
+.IX Item "-mpcrel"
+Use the pc-relative addressing mode of the 68000 directly, instead of
+using a global offset table.  At present, this option implies \fB\-fpic\fR,
+allowing at most a 16\-bit offset for pc-relative addressing.  \fB\-fPIC\fR is
+not presently supported with \fB\-mpcrel\fR, though this could be supported for
+68020 and higher processors.
+.IP "\fB\-mno\-strict\-align\fR" 4
+.IX Item "-mno-strict-align"
+.PD 0
+.IP "\fB\-mstrict\-align\fR" 4
+.IX Item "-mstrict-align"
+.PD
+Do not (do) assume that unaligned memory references will be handled by
+the system.
+.Sh "M68hc1x Options"
+.IX Subsection "M68hc1x Options"
+These are the \fB\-m\fR options defined for the 68hc11 and 68hc12
+microcontrollers.  The default values for these options depends on
+which style of microcontroller was selected when the compiler was configured;
+the defaults for the most common choices are given below.
+.IP "\fB\-m6811\fR" 4
+.IX Item "-m6811"
+.PD 0
+.IP "\fB\-m68hc11\fR" 4
+.IX Item "-m68hc11"
+.PD
+Generate output for a 68HC11.  This is the default
+when the compiler is configured for 68HC11\-based systems.
+.IP "\fB\-m6812\fR" 4
+.IX Item "-m6812"
+.PD 0
+.IP "\fB\-m68hc12\fR" 4
+.IX Item "-m68hc12"
+.PD
+Generate output for a 68HC12.  This is the default
+when the compiler is configured for 68HC12\-based systems.
+.IP "\fB\-m68S12\fR" 4
+.IX Item "-m68S12"
+.PD 0
+.IP "\fB\-m68hcs12\fR" 4
+.IX Item "-m68hcs12"
+.PD
+Generate output for a 68HCS12.  
+.IP "\fB\-mauto\-incdec\fR" 4
+.IX Item "-mauto-incdec"
+Enable the use of 68HC12 pre and post auto-increment and auto-decrement
+addressing modes.
+.IP "\fB\-minmax\fR" 4
+.IX Item "-minmax"
+.PD 0
+.IP "\fB\-nominmax\fR" 4
+.IX Item "-nominmax"
+.PD
+Enable the use of 68HC12 min and max instructions.
+.IP "\fB\-mlong\-calls\fR" 4
+.IX Item "-mlong-calls"
+.PD 0
+.IP "\fB\-mno\-long\-calls\fR" 4
+.IX Item "-mno-long-calls"
+.PD
+Treat all calls as being far away (near).  If calls are assumed to be
+far away, the compiler will use the \f(CW\*(C`call\*(C'\fR instruction to
+call a function and the \f(CW\*(C`rtc\*(C'\fR instruction for returning.
+.IP "\fB\-mshort\fR" 4
+.IX Item "-mshort"
+Consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide, like \f(CW\*(C`short int\*(C'\fR.
+.IP "\fB\-msoft\-reg\-count=\fR\fIcount\fR" 4
+.IX Item "-msoft-reg-count=count"
+Specify the number of pseudo-soft registers which are used for the
+code generation.  The maximum number is 32.  Using more pseudo-soft
+register may or may not result in better code depending on the program.
+The default is 4 for 68HC11 and 2 for 68HC12.
+.Sh "\s-1VAX\s0 Options"
+.IX Subsection "VAX Options"
+These \fB\-m\fR options are defined for the \s-1VAX:\s0
+.IP "\fB\-munix\fR" 4
+.IX Item "-munix"
+Do not output certain jump instructions (\f(CW\*(C`aobleq\*(C'\fR and so on)
+that the Unix assembler for the \s-1VAX\s0 cannot handle across long
+ranges.
+.IP "\fB\-mgnu\fR" 4
+.IX Item "-mgnu"
+Do output those jump instructions, on the assumption that you
+will assemble with the \s-1GNU\s0 assembler.
+.IP "\fB\-mg\fR" 4
+.IX Item "-mg"
+Output code for g\-format floating point numbers instead of d\-format.
+.Sh "\s-1SPARC\s0 Options"
+.IX Subsection "SPARC Options"
+These \fB\-m\fR switches are supported on the \s-1SPARC:\s0
+.IP "\fB\-mno\-app\-regs\fR" 4
+.IX Item "-mno-app-regs"
+.PD 0
+.IP "\fB\-mapp\-regs\fR" 4
+.IX Item "-mapp-regs"
+.PD
+Specify \fB\-mapp\-regs\fR to generate output using the global registers
+2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\s0 reserves for applications.  This
+is the default.
+.Sp
+To be fully \s-1SVR4\s0 \s-1ABI\s0 compliant at the cost of some performance loss,
+specify \fB\-mno\-app\-regs\fR.  You should compile libraries and system
+software with this option.
+.IP "\fB\-mfpu\fR" 4
+.IX Item "-mfpu"
+.PD 0
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+.PD
+Generate output containing floating point instructions.  This is the
+default.
+.IP "\fB\-mno\-fpu\fR" 4
+.IX Item "-mno-fpu"
+.PD 0
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+.PD
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries are not available for all \s-1SPARC\s0
+targets.  Normally the facilities of the machine's usual C compiler are
+used, but this cannot be done directly in cross\-compilation.  You must make
+your own arrangements to provide suitable library functions for
+cross\-compilation.  The embedded targets \fBsparc\-*\-aout\fR and
+\&\fBsparclite\-*\-*\fR do provide software floating point support.
+.Sp
+\&\fB\-msoft\-float\fR changes the calling convention in the output file;
+therefore, it is only useful if you compile \fIall\fR of a program with
+this option.  In particular, you need to compile \fIlibgcc.a\fR, the
+library that comes with \s-1GCC\s0, with \fB\-msoft\-float\fR in order for
+this to work.
+.IP "\fB\-mhard\-quad\-float\fR" 4
+.IX Item "-mhard-quad-float"
+Generate output containing quad-word (long double) floating point
+instructions.
+.IP "\fB\-msoft\-quad\-float\fR" 4
+.IX Item "-msoft-quad-float"
+Generate output containing library calls for quad-word (long double)
+floating point instructions.  The functions called are those specified
+in the \s-1SPARC\s0 \s-1ABI\s0.  This is the default.
+.Sp
+As of this writing, there are no sparc implementations that have hardware
+support for the quad-word floating point instructions.  They all invoke
+a trap handler for one of these instructions, and then the trap handler
+emulates the effect of the instruction.  Because of the trap handler overhead,
+this is much slower than calling the \s-1ABI\s0 library routines.  Thus the
+\&\fB\-msoft\-quad\-float\fR option is the default.
+.IP "\fB\-mno\-flat\fR" 4
+.IX Item "-mno-flat"
+.PD 0
+.IP "\fB\-mflat\fR" 4
+.IX Item "-mflat"
+.PD
+With \fB\-mflat\fR, the compiler does not generate save/restore instructions
+and will use a ``flat'' or single register window calling convention.
+This model uses \f(CW%i7\fR as the frame pointer and is compatible with the normal
+register window model.  Code from either may be intermixed.
+The local registers and the input registers (0\-\-5) are still treated as
+``call saved'' registers and will be saved on the stack as necessary.
+.Sp
+With \fB\-mno\-flat\fR (the default), the compiler emits save/restore
+instructions (except for leaf functions) and is the normal mode of operation.
+.IP "\fB\-mno\-unaligned\-doubles\fR" 4
+.IX Item "-mno-unaligned-doubles"
+.PD 0
+.IP "\fB\-munaligned\-doubles\fR" 4
+.IX Item "-munaligned-doubles"
+.PD
+Assume that doubles have 8 byte alignment.  This is the default.
+.Sp
+With \fB\-munaligned\-doubles\fR, \s-1GCC\s0 assumes that doubles have 8 byte
+alignment only if they are contained in another type, or if they have an
+absolute address.  Otherwise, it assumes they have 4 byte alignment.
+Specifying this option avoids some rare compatibility problems with code
+generated by other compilers.  It is not the default because it results
+in a performance loss, especially for floating point code.
+.IP "\fB\-mno\-faster\-structs\fR" 4
+.IX Item "-mno-faster-structs"
+.PD 0
+.IP "\fB\-mfaster\-structs\fR" 4
+.IX Item "-mfaster-structs"
+.PD
+With \fB\-mfaster\-structs\fR, the compiler assumes that structures
+should have 8 byte alignment.  This enables the use of pairs of
+\&\f(CW\*(C`ldd\*(C'\fR and \f(CW\*(C`std\*(C'\fR instructions for copies in structure
+assignment, in place of twice as many \f(CW\*(C`ld\*(C'\fR and \f(CW\*(C`st\*(C'\fR pairs.
+However, the use of this changed alignment directly violates the \s-1SPARC\s0
+\&\s-1ABI\s0.  Thus, it's intended only for use on targets where the developer
+acknowledges that their resulting code will not be directly in line with
+the rules of the \s-1ABI\s0.
+.IP "\fB\-mimpure\-text\fR" 4
+.IX Item "-mimpure-text"
+\&\fB\-mimpure\-text\fR, used in addition to \fB\-shared\fR, tells
+the compiler to not pass \fB\-z text\fR to the linker when linking a
+shared object.  Using this option, you can link position-dependent
+code into a shared object.  
+.Sp
+\&\fB\-mimpure\-text\fR suppresses the ``relocations remain against
+allocatable but non-writable sections'' linker error message.
+However, the necessary relocations will trigger copy\-on\-write, and the
+shared object is not actually shared across processes.  Instead of
+using \fB\-mimpure\-text\fR, you should compile all source code with
+\&\fB\-fpic\fR or \fB\-fPIC\fR.
+.Sp
+This option is only available on SunOS and Solaris.
+.IP "\fB\-mv8\fR" 4
+.IX Item "-mv8"
+.PD 0
+.IP "\fB\-msparclite\fR" 4
+.IX Item "-msparclite"
+.PD
+These two options select variations on the \s-1SPARC\s0 architecture.
+.Sp
+By default (unless specifically configured for the Fujitsu SPARClite),
+\&\s-1GCC\s0 generates code for the v7 variant of the \s-1SPARC\s0 architecture.
+.Sp
+\&\fB\-mv8\fR will give you \s-1SPARC\s0 v8 code.  The only difference from v7
+code is that the compiler emits the integer multiply and integer
+divide instructions which exist in \s-1SPARC\s0 v8 but not in \s-1SPARC\s0 v7.
+.Sp
+\&\fB\-msparclite\fR will give you SPARClite code.  This adds the integer
+multiply, integer divide step and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which
+exist in SPARClite but not in \s-1SPARC\s0 v7.
+.Sp
+These options are deprecated and will be deleted in a future \s-1GCC\s0 release.
+They have been replaced with \fB\-mcpu=xxx\fR.
+.IP "\fB\-mcypress\fR" 4
+.IX Item "-mcypress"
+.PD 0
+.IP "\fB\-msupersparc\fR" 4
+.IX Item "-msupersparc"
+.PD
+These two options select the processor for which the code is optimized.
+.Sp
+With \fB\-mcypress\fR (the default), the compiler optimizes code for the
+Cypress \s-1CY7C602\s0 chip, as used in the SPARCStation/SPARCServer 3xx series.
+This is also appropriate for the older SPARCStation 1, 2, \s-1IPX\s0 etc.
+.Sp
+With \fB\-msupersparc\fR the compiler optimizes code for the SuperSPARC cpu, as
+used in the SPARCStation 10, 1000 and 2000 series.  This flag also enables use
+of the full \s-1SPARC\s0 v8 instruction set.
+.Sp
+These options are deprecated and will be deleted in a future \s-1GCC\s0 release.
+They have been replaced with \fB\-mcpu=xxx\fR.
+.IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
+.IX Item "-mcpu=cpu_type"
+Set the instruction set, register set, and instruction scheduling parameters
+for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
+\&\fBv7\fR, \fBcypress\fR, \fBv8\fR, \fBsupersparc\fR, \fBsparclite\fR,
+\&\fBhypersparc\fR, \fBsparclite86x\fR, \fBf930\fR, \fBf934\fR,
+\&\fBsparclet\fR, \fBtsc701\fR, \fBv9\fR, \fBultrasparc\fR, and
+\&\fBultrasparc3\fR.
+.Sp
+Default instruction scheduling parameters are used for values that select
+an architecture and not an implementation.  These are \fBv7\fR, \fBv8\fR,
+\&\fBsparclite\fR, \fBsparclet\fR, \fBv9\fR.
+.Sp
+Here is a list of each supported architecture and their supported
+implementations.
+.Sp
+.Vb 5
+\&            v7:             cypress
+\&            v8:             supersparc, hypersparc
+\&            sparclite:      f930, f934, sparclite86x
+\&            sparclet:       tsc701
+\&            v9:             ultrasparc, ultrasparc3
+.Ve
+.IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
+.IX Item "-mtune=cpu_type"
+Set the instruction scheduling parameters for machine type
+\&\fIcpu_type\fR, but do not set the instruction set or register set that the
+option \fB\-mcpu=\fR\fIcpu_type\fR would.
+.Sp
+The same values for \fB\-mcpu=\fR\fIcpu_type\fR can be used for
+\&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
+that select a particular cpu implementation.  Those are \fBcypress\fR,
+\&\fBsupersparc\fR, \fBhypersparc\fR, \fBf930\fR, \fBf934\fR,
+\&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR, and
+\&\fBultrasparc3\fR.
+.PP
+These \fB\-m\fR switches are supported in addition to the above
+on the \s-1SPARCLET\s0 processor.
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+Generate code for a processor running in little-endian mode.
+.IP "\fB\-mlive\-g0\fR" 4
+.IX Item "-mlive-g0"
+Treat register \f(CW%g0\fR as a normal register.
+\&\s-1GCC\s0 will continue to clobber it as necessary but will not assume
+it always reads as 0.
+.IP "\fB\-mbroken\-saverestore\fR" 4
+.IX Item "-mbroken-saverestore"
+Generate code that does not use non-trivial forms of the \f(CW\*(C`save\*(C'\fR and
+\&\f(CW\*(C`restore\*(C'\fR instructions.  Early versions of the \s-1SPARCLET\s0 processor do
+not correctly handle \f(CW\*(C`save\*(C'\fR and \f(CW\*(C`restore\*(C'\fR instructions used with
+arguments.  They correctly handle them used without arguments.  A \f(CW\*(C`save\*(C'\fR
+instruction used without arguments increments the current window pointer
+but does not allocate a new stack frame.  It is assumed that the window
+overflow trap handler will properly handle this case as will interrupt
+handlers.
+.PP
+These \fB\-m\fR switches are supported in addition to the above
+on \s-1SPARC\s0 V9 processors in 64\-bit environments.
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+Generate code for a processor running in little-endian mode. It is only
+available for a few configurations and most notably not on Solaris.
+.IP "\fB\-m32\fR" 4
+.IX Item "-m32"
+.PD 0
+.IP "\fB\-m64\fR" 4
+.IX Item "-m64"
+.PD
+Generate code for a 32\-bit or 64\-bit environment.
+The 32\-bit environment sets int, long and pointer to 32 bits.
+The 64\-bit environment sets int to 32 bits and long and pointer
+to 64 bits.
+.IP "\fB\-mcmodel=medlow\fR" 4
+.IX Item "-mcmodel=medlow"
+Generate code for the Medium/Low code model: the program must be linked
+in the low 32 bits of the address space.  Pointers are 64 bits.
+Programs can be statically or dynamically linked.
+.IP "\fB\-mcmodel=medmid\fR" 4
+.IX Item "-mcmodel=medmid"
+Generate code for the Medium/Middle code model: the program must be linked
+in the low 44 bits of the address space, the text segment must be less than
+2G bytes, and data segment must be within 2G of the text segment.
+Pointers are 64 bits.
+.IP "\fB\-mcmodel=medany\fR" 4
+.IX Item "-mcmodel=medany"
+Generate code for the Medium/Anywhere code model: the program may be linked
+anywhere in the address space, the text segment must be less than
+2G bytes, and data segment must be within 2G of the text segment.
+Pointers are 64 bits.
+.IP "\fB\-mcmodel=embmedany\fR" 4
+.IX Item "-mcmodel=embmedany"
+Generate code for the Medium/Anywhere code model for embedded systems:
+assume a 32\-bit text and a 32\-bit data segment, both starting anywhere
+(determined at link time).  Register \f(CW%g4\fR points to the base of the
+data segment.  Pointers are still 64 bits.
+Programs are statically linked, \s-1PIC\s0 is not supported.
+.IP "\fB\-mstack\-bias\fR" 4
+.IX Item "-mstack-bias"
+.PD 0
+.IP "\fB\-mno\-stack\-bias\fR" 4
+.IX Item "-mno-stack-bias"
+.PD
+With \fB\-mstack\-bias\fR, \s-1GCC\s0 assumes that the stack pointer, and
+frame pointer if present, are offset by \-2047 which must be added back
+when making stack frame references.
+Otherwise, assume no such offset is present.
+.Sh "\s-1ARM\s0 Options"
+.IX Subsection "ARM Options"
+These \fB\-m\fR options are defined for Advanced \s-1RISC\s0 Machines (\s-1ARM\s0)
+architectures:
+.IP "\fB\-mapcs\-frame\fR" 4
+.IX Item "-mapcs-frame"
+Generate a stack frame that is compliant with the \s-1ARM\s0 Procedure Call
+Standard for all functions, even if this is not strictly necessary for
+correct execution of the code.  Specifying \fB\-fomit\-frame\-pointer\fR
+with this option will cause the stack frames not to be generated for
+leaf functions.  The default is \fB\-mno\-apcs\-frame\fR.
+.IP "\fB\-mapcs\fR" 4
+.IX Item "-mapcs"
+This is a synonym for \fB\-mapcs\-frame\fR.
+.IP "\fB\-mapcs\-26\fR" 4
+.IX Item "-mapcs-26"
+Generate code for a processor running with a 26\-bit program counter,
+and conforming to the function calling standards for the \s-1APCS\s0 26\-bit
+option.  This option replaces the \fB\-m2\fR and \fB\-m3\fR options
+of previous releases of the compiler.
+.IP "\fB\-mapcs\-32\fR" 4
+.IX Item "-mapcs-32"
+Generate code for a processor running with a 32\-bit program counter,
+and conforming to the function calling standards for the \s-1APCS\s0 32\-bit
+option.  This option replaces the \fB\-m6\fR option of previous releases
+of the compiler.
+.IP "\fB\-mthumb\-interwork\fR" 4
+.IX Item "-mthumb-interwork"
+Generate code which supports calling between the \s-1ARM\s0 and Thumb
+instruction sets.  Without this option the two instruction sets cannot
+be reliably used inside one program.  The default is
+\&\fB\-mno\-thumb\-interwork\fR, since slightly larger code is generated
+when \fB\-mthumb\-interwork\fR is specified.
+.IP "\fB\-mno\-sched\-prolog\fR" 4
+.IX Item "-mno-sched-prolog"
+Prevent the reordering of instructions in the function prolog, or the
+merging of those instruction with the instructions in the function's
+body.  This means that all functions will start with a recognizable set
+of instructions (or in fact one of a choice from a small set of
+different function prologues), and this information can be used to
+locate the start if functions inside an executable piece of code.  The
+default is \fB\-msched\-prolog\fR.
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+Generate output containing floating point instructions.  This is the
+default.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries are not available for all \s-1ARM\s0
+targets.  Normally the facilities of the machine's usual C compiler are
+used, but this cannot be done directly in cross\-compilation.  You must make
+your own arrangements to provide suitable library functions for
+cross\-compilation.
+.Sp
+\&\fB\-msoft\-float\fR changes the calling convention in the output file;
+therefore, it is only useful if you compile \fIall\fR of a program with
+this option.  In particular, you need to compile \fIlibgcc.a\fR, the
+library that comes with \s-1GCC\s0, with \fB\-msoft\-float\fR in order for
+this to work.
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+Generate code for a processor running in little-endian mode.  This is
+the default for all standard configurations.
+.IP "\fB\-mbig\-endian\fR" 4
+.IX Item "-mbig-endian"
+Generate code for a processor running in big-endian mode; the default is
+to compile code for a little-endian processor.
+.IP "\fB\-mwords\-little\-endian\fR" 4
+.IX Item "-mwords-little-endian"
+This option only applies when generating code for big-endian processors.
+Generate code for a little-endian word order but a big-endian byte
+order.  That is, a byte order of the form \fB32107654\fR.  Note: this
+option should only be used if you require compatibility with code for
+big-endian \s-1ARM\s0 processors generated by versions of the compiler prior to
+2.8.
+.IP "\fB\-malignment\-traps\fR" 4
+.IX Item "-malignment-traps"
+Generate code that will not trap if the \s-1MMU\s0 has alignment traps enabled.
+On \s-1ARM\s0 architectures prior to ARMv4, there were no instructions to
+access half-word objects stored in memory.  However, when reading from
+memory a feature of the \s-1ARM\s0 architecture allows a word load to be used,
+even if the address is unaligned, and the processor core will rotate the
+data as it is being loaded.  This option tells the compiler that such
+misaligned accesses will cause a \s-1MMU\s0 trap and that it should instead
+synthesize the access as a series of byte accesses.  The compiler can
+still use word accesses to load half-word data if it knows that the
+address is aligned to a word boundary.
+.Sp
+This option is ignored when compiling for \s-1ARM\s0 architecture 4 or later,
+since these processors have instructions to directly access half-word
+objects in memory.
+.IP "\fB\-mno\-alignment\-traps\fR" 4
+.IX Item "-mno-alignment-traps"
+Generate code that assumes that the \s-1MMU\s0 will not trap unaligned
+accesses.  This produces better code when the target instruction set
+does not have half-word memory operations (i.e. implementations prior to
+ARMv4).
+.Sp
+Note that you cannot use this option to access unaligned word objects,
+since the processor will only fetch one 32\-bit aligned object from
+memory.
+.Sp
+The default setting for most targets is \fB\-mno\-alignment\-traps\fR, since
+this produces better code when there are no half-word memory
+instructions available.
+.IP "\fB\-mshort\-load\-bytes\fR" 4
+.IX Item "-mshort-load-bytes"
+.PD 0
+.IP "\fB\-mno\-short\-load\-words\fR" 4
+.IX Item "-mno-short-load-words"
+.PD
+These are deprecated aliases for \fB\-malignment\-traps\fR.
+.IP "\fB\-mno\-short\-load\-bytes\fR" 4
+.IX Item "-mno-short-load-bytes"
+.PD 0
+.IP "\fB\-mshort\-load\-words\fR" 4
+.IX Item "-mshort-load-words"
+.PD
+This are deprecated aliases for \fB\-mno\-alignment\-traps\fR.
+.IP "\fB\-mcpu=\fR\fIname\fR" 4
+.IX Item "-mcpu=name"
+This specifies the name of the target \s-1ARM\s0 processor.  \s-1GCC\s0 uses this name
+to determine what kind of instructions it can emit when generating
+assembly code.  Permissible names are: \fBarm2\fR, \fBarm250\fR,
+\&\fBarm3\fR, \fBarm6\fR, \fBarm60\fR, \fBarm600\fR, \fBarm610\fR,
+\&\fBarm620\fR, \fBarm7\fR, \fBarm7m\fR, \fBarm7d\fR, \fBarm7dm\fR,
+\&\fBarm7di\fR, \fBarm7dmi\fR, \fBarm70\fR, \fBarm700\fR,
+\&\fBarm700i\fR, \fBarm710\fR, \fBarm710c\fR, \fBarm7100\fR,
+\&\fBarm7500\fR, \fBarm7500fe\fR, \fBarm7tdmi\fR, \fBarm8\fR,
+\&\fBstrongarm\fR, \fBstrongarm110\fR, \fBstrongarm1100\fR,
+\&\fBarm8\fR, \fBarm810\fR, \fBarm9\fR, \fBarm9e\fR, \fBarm920\fR,
+\&\fBarm920t\fR, \fBarm940t\fR, \fBarm9tdmi\fR, \fBarm10tdmi\fR,
+\&\fBarm1020t\fR, \fBxscale\fR.
+.IP "\fB\-mtune=\fR\fIname\fR" 4
+.IX Item "-mtune=name"
+This option is very similar to the \fB\-mcpu=\fR option, except that
+instead of specifying the actual target processor type, and hence
+restricting which instructions can be used, it specifies that \s-1GCC\s0 should
+tune the performance of the code as if the target were of the type
+specified in this option, but still choosing the instructions that it
+will generate based on the cpu specified by a \fB\-mcpu=\fR option.
+For some \s-1ARM\s0 implementations better performance can be obtained by using
+this option.
+.IP "\fB\-march=\fR\fIname\fR" 4
+.IX Item "-march=name"
+This specifies the name of the target \s-1ARM\s0 architecture.  \s-1GCC\s0 uses this
+name to determine what kind of instructions it can emit when generating
+assembly code.  This option can be used in conjunction with or instead
+of the \fB\-mcpu=\fR option.  Permissible names are: \fBarmv2\fR,
+\&\fBarmv2a\fR, \fBarmv3\fR, \fBarmv3m\fR, \fBarmv4\fR, \fBarmv4t\fR,
+\&\fBarmv5\fR, \fBarmv5t\fR, \fBarmv5te\fR.
+.IP "\fB\-mfpe=\fR\fInumber\fR" 4
+.IX Item "-mfpe=number"
+.PD 0
+.IP "\fB\-mfp=\fR\fInumber\fR" 4
+.IX Item "-mfp=number"
+.PD
+This specifies the version of the floating point emulation available on
+the target.  Permissible values are 2 and 3.  \fB\-mfp=\fR is a synonym
+for \fB\-mfpe=\fR, for compatibility with older versions of \s-1GCC\s0.
+.IP "\fB\-mstructure\-size\-boundary=\fR\fIn\fR" 4
+.IX Item "-mstructure-size-boundary=n"
+The size of all structures and unions will be rounded up to a multiple
+of the number of bits set by this option.  Permissible values are 8 and
+32.  The default value varies for different toolchains.  For the \s-1COFF\s0
+targeted toolchain the default value is 8.  Specifying the larger number
+can produce faster, more efficient code, but can also increase the size
+of the program.  The two values are potentially incompatible.  Code
+compiled with one value cannot necessarily expect to work with code or
+libraries compiled with the other value, if they exchange information
+using structures or unions.
+.IP "\fB\-mabort\-on\-noreturn\fR" 4
+.IX Item "-mabort-on-noreturn"
+Generate a call to the function \f(CW\*(C`abort\*(C'\fR at the end of a
+\&\f(CW\*(C`noreturn\*(C'\fR function.  It will be executed if the function tries to
+return.
+.IP "\fB\-mlong\-calls\fR" 4
+.IX Item "-mlong-calls"
+.PD 0
+.IP "\fB\-mno\-long\-calls\fR" 4
+.IX Item "-mno-long-calls"
+.PD
+Tells the compiler to perform function calls by first loading the
+address of the function into a register and then performing a subroutine
+call on this register.  This switch is needed if the target function
+will lie outside of the 64 megabyte addressing range of the offset based
+version of subroutine call instruction.
+.Sp
+Even if this switch is enabled, not all function calls will be turned
+into long calls.  The heuristic is that static functions, functions
+which have the \fBshort-call\fR attribute, functions that are inside
+the scope of a \fB#pragma no_long_calls\fR directive and functions whose
+definitions have already been compiled within the current compilation
+unit, will not be turned into long calls.  The exception to this rule is
+that weak function definitions, functions with the \fBlong-call\fR
+attribute or the \fBsection\fR attribute, and functions that are within
+the scope of a \fB#pragma long_calls\fR directive, will always be
+turned into long calls.
+.Sp
+This feature is not enabled by default.  Specifying
+\&\fB\-mno\-long\-calls\fR will restore the default behavior, as will
+placing the function calls within the scope of a \fB#pragma
+long_calls_off\fR directive.  Note these switches have no effect on how
+the compiler generates code to handle function calls via function
+pointers.
+.IP "\fB\-mnop\-fun\-dllimport\fR" 4
+.IX Item "-mnop-fun-dllimport"
+Disable support for the \f(CW\*(C`dllimport\*(C'\fR attribute.
+.IP "\fB\-msingle\-pic\-base\fR" 4
+.IX Item "-msingle-pic-base"
+Treat the register used for \s-1PIC\s0 addressing as read\-only, rather than
+loading it in the prologue for each function.  The run-time system is
+responsible for initializing this register with an appropriate value
+before execution begins.
+.IP "\fB\-mpic\-register=\fR\fIreg\fR" 4
+.IX Item "-mpic-register=reg"
+Specify the register to be used for \s-1PIC\s0 addressing.  The default is R10
+unless stack-checking is enabled, when R9 is used.
+.IP "\fB\-mpoke\-function\-name\fR" 4
+.IX Item "-mpoke-function-name"
+Write the name of each function into the text section, directly
+preceding the function prologue.  The generated code is similar to this:
+.Sp
+.Vb 9
+\&             t0
+\&                 .ascii "arm_poke_function_name", 0
+\&                 .align
+\&             t1
+\&                 .word 0xff000000 + (t1 - t0)
+\&             arm_poke_function_name
+\&                 mov     ip, sp
+\&                 stmfd   sp!, {fp, ip, lr, pc}
+\&                 sub     fp, ip, #4
+.Ve
+.Sp
+When performing a stack backtrace, code can inspect the value of
+\&\f(CW\*(C`pc\*(C'\fR stored at \f(CW\*(C`fp + 0\*(C'\fR.  If the trace function then looks at
+location \f(CW\*(C`pc \- 12\*(C'\fR and the top 8 bits are set, then we know that
+there is a function name embedded immediately preceding this location
+and has length \f(CW\*(C`((pc[\-3]) & 0xff000000)\*(C'\fR.
+.IP "\fB\-mthumb\fR" 4
+.IX Item "-mthumb"
+Generate code for the 16\-bit Thumb instruction set.  The default is to
+use the 32\-bit \s-1ARM\s0 instruction set.
+.IP "\fB\-mtpcs\-frame\fR" 4
+.IX Item "-mtpcs-frame"
+Generate a stack frame that is compliant with the Thumb Procedure Call
+Standard for all non-leaf functions.  (A leaf function is one that does
+not call any other functions.)  The default is \fB\-mno\-tpcs\-frame\fR.
+.IP "\fB\-mtpcs\-leaf\-frame\fR" 4
+.IX Item "-mtpcs-leaf-frame"
+Generate a stack frame that is compliant with the Thumb Procedure Call
+Standard for all leaf functions.  (A leaf function is one that does
+not call any other functions.)  The default is \fB\-mno\-apcs\-leaf\-frame\fR.
+.IP "\fB\-mcallee\-super\-interworking\fR" 4
+.IX Item "-mcallee-super-interworking"
+Gives all externally visible functions in the file being compiled an \s-1ARM\s0
+instruction set header which switches to Thumb mode before executing the
+rest of the function.  This allows these functions to be called from
+non-interworking code.
+.IP "\fB\-mcaller\-super\-interworking\fR" 4
+.IX Item "-mcaller-super-interworking"
+Allows calls via function pointers (including virtual functions) to
+execute correctly regardless of whether the target code has been
+compiled for interworking or not.  There is a small overhead in the cost
+of executing a function pointer if this option is enabled.
+.Sh "\s-1MN10200\s0 Options"
+.IX Subsection "MN10200 Options"
+These \fB\-m\fR options are defined for Matsushita \s-1MN10200\s0 architectures:
+.IP "\fB\-mrelax\fR" 4
+.IX Item "-mrelax"
+Indicate to the linker that it should perform a relaxation optimization pass
+to shorten branches, calls and absolute memory addresses.  This option only
+has an effect when used on the command line for the final link step.
+.Sp
+This option makes symbolic debugging impossible.
+.Sh "\s-1MN10300\s0 Options"
+.IX Subsection "MN10300 Options"
+These \fB\-m\fR options are defined for Matsushita \s-1MN10300\s0 architectures:
+.IP "\fB\-mmult\-bug\fR" 4
+.IX Item "-mmult-bug"
+Generate code to avoid bugs in the multiply instructions for the \s-1MN10300\s0
+processors.  This is the default.
+.IP "\fB\-mno\-mult\-bug\fR" 4
+.IX Item "-mno-mult-bug"
+Do not generate code to avoid bugs in the multiply instructions for the
+\&\s-1MN10300\s0 processors.
+.IP "\fB\-mam33\fR" 4
+.IX Item "-mam33"
+Generate code which uses features specific to the \s-1AM33\s0 processor.
+.IP "\fB\-mno\-am33\fR" 4
+.IX Item "-mno-am33"
+Do not generate code which uses features specific to the \s-1AM33\s0 processor.  This
+is the default.
+.IP "\fB\-mno\-crt0\fR" 4
+.IX Item "-mno-crt0"
+Do not link in the C run-time initialization object file.
+.IP "\fB\-mrelax\fR" 4
+.IX Item "-mrelax"
+Indicate to the linker that it should perform a relaxation optimization pass
+to shorten branches, calls and absolute memory addresses.  This option only
+has an effect when used on the command line for the final link step.
+.Sp
+This option makes symbolic debugging impossible.
+.Sh "M32R/D Options"
+.IX Subsection "M32R/D Options"
+These \fB\-m\fR options are defined for Mitsubishi M32R/D architectures:
+.IP "\fB\-m32rx\fR" 4
+.IX Item "-m32rx"
+Generate code for the M32R/X.
+.IP "\fB\-m32r\fR" 4
+.IX Item "-m32r"
+Generate code for the M32R.  This is the default.
+.IP "\fB\-mcode\-model=small\fR" 4
+.IX Item "-mcode-model=small"
+Assume all objects live in the lower 16MB of memory (so that their addresses
+can be loaded with the \f(CW\*(C`ld24\*(C'\fR instruction), and assume all subroutines
+are reachable with the \f(CW\*(C`bl\*(C'\fR instruction.
+This is the default.
+.Sp
+The addressability of a particular object can be set with the
+\&\f(CW\*(C`model\*(C'\fR attribute.
+.IP "\fB\-mcode\-model=medium\fR" 4
+.IX Item "-mcode-model=medium"
+Assume objects may be anywhere in the 32\-bit address space (the compiler
+will generate \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
+assume all subroutines are reachable with the \f(CW\*(C`bl\*(C'\fR instruction.
+.IP "\fB\-mcode\-model=large\fR" 4
+.IX Item "-mcode-model=large"
+Assume objects may be anywhere in the 32\-bit address space (the compiler
+will generate \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
+assume subroutines may not be reachable with the \f(CW\*(C`bl\*(C'\fR instruction
+(the compiler will generate the much slower \f(CW\*(C`seth/add3/jl\*(C'\fR
+instruction sequence).
+.IP "\fB\-msdata=none\fR" 4
+.IX Item "-msdata=none"
+Disable use of the small data area.  Variables will be put into
+one of \fB.data\fR, \fBbss\fR, or \fB.rodata\fR (unless the
+\&\f(CW\*(C`section\*(C'\fR attribute has been specified).
+This is the default.
+.Sp
+The small data area consists of sections \fB.sdata\fR and \fB.sbss\fR.
+Objects may be explicitly put in the small data area with the
+\&\f(CW\*(C`section\*(C'\fR attribute using one of these sections.
+.IP "\fB\-msdata=sdata\fR" 4
+.IX Item "-msdata=sdata"
+Put small global and static data in the small data area, but do not
+generate special code to reference them.
+.IP "\fB\-msdata=use\fR" 4
+.IX Item "-msdata=use"
+Put small global and static data in the small data area, and generate
+special instructions to reference them.
+.IP "\fB\-G\fR \fInum\fR" 4
+.IX Item "-G num"
+Put global and static objects less than or equal to \fInum\fR bytes
+into the small data or bss sections instead of the normal data or bss
+sections.  The default value of \fInum\fR is 8.
+The \fB\-msdata\fR option must be set to one of \fBsdata\fR or \fBuse\fR
+for this option to have any effect.
+.Sp
+All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
+Compiling with different values of \fInum\fR may or may not work; if it
+doesn't the linker will give an error message\-\-\-incorrect code will not be
+generated.
+.Sh "M88K Options"
+.IX Subsection "M88K Options"
+These \fB\-m\fR options are defined for Motorola 88k architectures:
+.IP "\fB\-m88000\fR" 4
+.IX Item "-m88000"
+Generate code that works well on both the m88100 and the
+m88110.
+.IP "\fB\-m88100\fR" 4
+.IX Item "-m88100"
+Generate code that works best for the m88100, but that also
+runs on the m88110.
+.IP "\fB\-m88110\fR" 4
+.IX Item "-m88110"
+Generate code that works best for the m88110, and may not run
+on the m88100.
+.IP "\fB\-mbig\-pic\fR" 4
+.IX Item "-mbig-pic"
+Obsolete option to be removed from the next revision.
+Use \fB\-fPIC\fR.
+.IP "\fB\-midentify\-revision\fR" 4
+.IX Item "-midentify-revision"
+Include an \f(CW\*(C`ident\*(C'\fR directive in the assembler output recording the
+source file name, compiler name and version, timestamp, and compilation
+flags used.
+.IP "\fB\-mno\-underscores\fR" 4
+.IX Item "-mno-underscores"
+In assembler output, emit symbol names without adding an underscore
+character at the beginning of each name.  The default is to use an
+underscore as prefix on each name.
+.IP "\fB\-mocs\-debug\-info\fR" 4
+.IX Item "-mocs-debug-info"
+.PD 0
+.IP "\fB\-mno\-ocs\-debug\-info\fR" 4
+.IX Item "-mno-ocs-debug-info"
+.PD
+Include (or omit) additional debugging information (about registers used
+in each stack frame) as specified in the 88open Object Compatibility
+Standard, ``\s-1OCS\s0''.  This extra information allows debugging of code that
+has had the frame pointer eliminated.  The default for SVr4 and Delta 88
+SVr3.2 is to include this information; other 88k configurations omit this
+information by default.
+.IP "\fB\-mocs\-frame\-position\fR" 4
+.IX Item "-mocs-frame-position"
+When emitting \s-1COFF\s0 debugging information for automatic variables and
+parameters stored on the stack, use the offset from the canonical frame
+address, which is the stack pointer (register 31) on entry to the
+function.  The SVr4 and Delta88 SVr3.2, and \s-1BCS\s0 configurations use
+\&\fB\-mocs\-frame\-position\fR; other 88k configurations have the default
+\&\fB\-mno\-ocs\-frame\-position\fR.
+.IP "\fB\-mno\-ocs\-frame\-position\fR" 4
+.IX Item "-mno-ocs-frame-position"
+When emitting \s-1COFF\s0 debugging information for automatic variables and
+parameters stored on the stack, use the offset from the frame pointer
+register (register 30).  When this option is in effect, the frame
+pointer is not eliminated when debugging information is selected by the
+\&\-g switch.
+.IP "\fB\-moptimize\-arg\-area\fR" 4
+.IX Item "-moptimize-arg-area"
+Save space by reorganizing the stack frame.  This option generates code
+that does not agree with the 88open specifications, but uses less
+memory.
+.IP "\fB\-mno\-optimize\-arg\-area\fR" 4
+.IX Item "-mno-optimize-arg-area"
+Do not reorganize the stack frame to save space.  This is the default.
+The generated conforms to the specification, but uses more memory.
+.IP "\fB\-mshort\-data\-\fR\fInum\fR" 4
+.IX Item "-mshort-data-num"
+Generate smaller data references by making them relative to \f(CW\*(C`r0\*(C'\fR,
+which allows loading a value using a single instruction (rather than the
+usual two).  You control which data references are affected by
+specifying \fInum\fR with this option.  For example, if you specify
+\&\fB\-mshort\-data\-512\fR, then the data references affected are those
+involving displacements of less than 512 bytes.
+\&\fB\-mshort\-data\-\fR\fInum\fR is not effective for \fInum\fR greater
+than 64k.
+.IP "\fB\-mserialize\-volatile\fR" 4
+.IX Item "-mserialize-volatile"
+.PD 0
+.IP "\fB\-mno\-serialize\-volatile\fR" 4
+.IX Item "-mno-serialize-volatile"
+.PD
+Do, or don't, generate code to guarantee sequential consistency
+of volatile memory references.  By default, consistency is
+guaranteed.
+.Sp
+The order of memory references made by the \s-1MC88110\s0 processor does
+not always match the order of the instructions requesting those
+references.  In particular, a load instruction may execute before
+a preceding store instruction.  Such reordering violates
+sequential consistency of volatile memory references, when there
+are multiple processors.   When consistency must be guaranteed,
+\&\s-1GCC\s0 generates special instructions, as needed, to force
+execution in the proper order.
+.Sp
+The \s-1MC88100\s0 processor does not reorder memory references and so
+always provides sequential consistency.  However, by default, \s-1GCC\s0
+generates the special instructions to guarantee consistency
+even when you use \fB\-m88100\fR, so that the code may be run on an
+\&\s-1MC88110\s0 processor.  If you intend to run your code only on the
+\&\s-1MC88100\s0 processor, you may use \fB\-mno\-serialize\-volatile\fR.
+.Sp
+The extra code generated to guarantee consistency may affect the
+performance of your application.  If you know that you can safely
+forgo this guarantee, you may use \fB\-mno\-serialize\-volatile\fR.
+.IP "\fB\-msvr4\fR" 4
+.IX Item "-msvr4"
+.PD 0
+.IP "\fB\-msvr3\fR" 4
+.IX Item "-msvr3"
+.PD
+Turn on (\fB\-msvr4\fR) or off (\fB\-msvr3\fR) compiler extensions
+related to System V release 4 (SVr4).  This controls the following:
+.RS 4
+.IP "1." 4
+Which variant of the assembler syntax to emit.
+.IP "2." 4
+\&\fB\-msvr4\fR makes the C preprocessor recognize \fB#pragma weak\fR
+that is used on System V release 4.
+.IP "3." 4
+\&\fB\-msvr4\fR makes \s-1GCC\s0 issue additional declaration directives used in
+SVr4.
+.RE
+.RS 4
+.Sp
+\&\fB\-msvr4\fR is the default for the m88k\-motorola\-sysv4 configuration.
+\&\fB\-msvr3\fR is the default for all other m88k configurations.
+.RE
+.IP "\fB\-mversion\-03.00\fR" 4
+.IX Item "-mversion-03.00"
+This option is obsolete, and is ignored.
+.IP "\fB\-mno\-check\-zero\-division\fR" 4
+.IX Item "-mno-check-zero-division"
+.PD 0
+.IP "\fB\-mcheck\-zero\-division\fR" 4
+.IX Item "-mcheck-zero-division"
+.PD
+Do, or don't, generate code to guarantee that integer division by
+zero will be detected.  By default, detection is guaranteed.
+.Sp
+Some models of the \s-1MC88100\s0 processor fail to trap upon integer
+division by zero under certain conditions.  By default, when
+compiling code that might be run on such a processor, \s-1GCC\s0
+generates code that explicitly checks for zero-valued divisors
+and traps with exception number 503 when one is detected.  Use of
+\&\fB\-mno\-check\-zero\-division\fR suppresses such checking for code
+generated to run on an \s-1MC88100\s0 processor.
+.Sp
+\&\s-1GCC\s0 assumes that the \s-1MC88110\s0 processor correctly detects all instances
+of integer division by zero.  When \fB\-m88110\fR is specified, no
+explicit checks for zero-valued divisors are generated, and both
+\&\fB\-mcheck\-zero\-division\fR and \fB\-mno\-check\-zero\-division\fR are
+ignored.
+.IP "\fB\-muse\-div\-instruction\fR" 4
+.IX Item "-muse-div-instruction"
+Use the div instruction for signed integer division on the
+\&\s-1MC88100\s0 processor.  By default, the div instruction is not used.
+.Sp
+On the \s-1MC88100\s0 processor the signed integer division instruction
+div) traps to the operating system on a negative operand.  The
+operating system transparently completes the operation, but at a
+large cost in execution time.  By default, when compiling code
+that might be run on an \s-1MC88100\s0 processor, \s-1GCC\s0 emulates signed
+integer division using the unsigned integer division instruction
+divu), thereby avoiding the large penalty of a trap to the
+operating system.  Such emulation has its own, smaller, execution
+cost in both time and space.  To the extent that your code's
+important signed integer division operations are performed on two
+nonnegative operands, it may be desirable to use the div
+instruction directly.
+.Sp
+On the \s-1MC88110\s0 processor the div instruction (also known as the
+divs instruction) processes negative operands without trapping to
+the operating system.  When \fB\-m88110\fR is specified,
+\&\fB\-muse\-div\-instruction\fR is ignored, and the div instruction is used
+for signed integer division.
+.Sp
+Note that the result of dividing \f(CW\*(C`INT_MIN\*(C'\fR by \-1 is undefined.  In
+particular, the behavior of such a division with and without
+\&\fB\-muse\-div\-instruction\fR may differ.
+.IP "\fB\-mtrap\-large\-shift\fR" 4
+.IX Item "-mtrap-large-shift"
+.PD 0
+.IP "\fB\-mhandle\-large\-shift\fR" 4
+.IX Item "-mhandle-large-shift"
+.PD
+Include code to detect bit-shifts of more than 31 bits; respectively,
+trap such shifts or emit code to handle them properly.  By default \s-1GCC\s0
+makes no special provision for large bit shifts.
+.IP "\fB\-mwarn\-passed\-structs\fR" 4
+.IX Item "-mwarn-passed-structs"
+Warn when a function passes a struct as an argument or result.
+Structure-passing conventions have changed during the evolution of the C
+language, and are often the source of portability problems.  By default,
+\&\s-1GCC\s0 issues no such warning.
+.Sh "\s-1IBM\s0 \s-1RS/6000\s0 and PowerPC Options"
+.IX Subsection "IBM RS/6000 and PowerPC Options"
+These \fB\-m\fR options are defined for the \s-1IBM\s0 \s-1RS/6000\s0 and PowerPC:
+.IP "\fB\-mpower\fR" 4
+.IX Item "-mpower"
+.PD 0
+.IP "\fB\-mno\-power\fR" 4
+.IX Item "-mno-power"
+.IP "\fB\-mpower2\fR" 4
+.IX Item "-mpower2"
+.IP "\fB\-mno\-power2\fR" 4
+.IX Item "-mno-power2"
+.IP "\fB\-mpowerpc\fR" 4
+.IX Item "-mpowerpc"
+.IP "\fB\-mno\-powerpc\fR" 4
+.IX Item "-mno-powerpc"
+.IP "\fB\-mpowerpc\-gpopt\fR" 4
+.IX Item "-mpowerpc-gpopt"
+.IP "\fB\-mno\-powerpc\-gpopt\fR" 4
+.IX Item "-mno-powerpc-gpopt"
+.IP "\fB\-mpowerpc\-gfxopt\fR" 4
+.IX Item "-mpowerpc-gfxopt"
+.IP "\fB\-mno\-powerpc\-gfxopt\fR" 4
+.IX Item "-mno-powerpc-gfxopt"
+.IP "\fB\-mpowerpc64\fR" 4
+.IX Item "-mpowerpc64"
+.IP "\fB\-mno\-powerpc64\fR" 4
+.IX Item "-mno-powerpc64"
+.PD
+\&\s-1GCC\s0 supports two related instruction set architectures for the
+\&\s-1RS/6000\s0 and PowerPC.  The \fI\s-1POWER\s0\fR instruction set are those
+instructions supported by the \fBrios\fR chip set used in the original
+\&\s-1RS/6000\s0 systems and the \fIPowerPC\fR instruction set is the
+architecture of the Motorola MPC5xx, MPC6xx, MPC8xx microprocessors, and
+the \s-1IBM\s0 4xx microprocessors.
+.Sp
+Neither architecture is a subset of the other.  However there is a
+large common subset of instructions supported by both.  An \s-1MQ\s0
+register is included in processors supporting the \s-1POWER\s0 architecture.
+.Sp
+You use these options to specify which instructions are available on the
+processor you are using.  The default value of these options is
+determined when configuring \s-1GCC\s0.  Specifying the
+\&\fB\-mcpu=\fR\fIcpu_type\fR overrides the specification of these
+options.  We recommend you use the \fB\-mcpu=\fR\fIcpu_type\fR option
+rather than the options listed above.
+.Sp
+The \fB\-mpower\fR option allows \s-1GCC\s0 to generate instructions that
+are found only in the \s-1POWER\s0 architecture and to use the \s-1MQ\s0 register.
+Specifying \fB\-mpower2\fR implies \fB\-power\fR and also allows \s-1GCC\s0
+to generate instructions that are present in the \s-1POWER2\s0 architecture but
+not the original \s-1POWER\s0 architecture.
+.Sp
+The \fB\-mpowerpc\fR option allows \s-1GCC\s0 to generate instructions that
+are found only in the 32\-bit subset of the PowerPC architecture.
+Specifying \fB\-mpowerpc\-gpopt\fR implies \fB\-mpowerpc\fR and also allows
+\&\s-1GCC\s0 to use the optional PowerPC architecture instructions in the
+General Purpose group, including floating-point square root.  Specifying
+\&\fB\-mpowerpc\-gfxopt\fR implies \fB\-mpowerpc\fR and also allows \s-1GCC\s0 to
+use the optional PowerPC architecture instructions in the Graphics
+group, including floating-point select.
+.Sp
+The \fB\-mpowerpc64\fR option allows \s-1GCC\s0 to generate the additional
+64\-bit instructions that are found in the full PowerPC64 architecture
+and to treat GPRs as 64\-bit, doubleword quantities.  \s-1GCC\s0 defaults to
+\&\fB\-mno\-powerpc64\fR.
+.Sp
+If you specify both \fB\-mno\-power\fR and \fB\-mno\-powerpc\fR, \s-1GCC\s0
+will use only the instructions in the common subset of both
+architectures plus some special \s-1AIX\s0 common-mode calls, and will not use
+the \s-1MQ\s0 register.  Specifying both \fB\-mpower\fR and \fB\-mpowerpc\fR
+permits \s-1GCC\s0 to use any instruction from either architecture and to
+allow use of the \s-1MQ\s0 register; specify this for the Motorola \s-1MPC601\s0.
+.IP "\fB\-mnew\-mnemonics\fR" 4
+.IX Item "-mnew-mnemonics"
+.PD 0
+.IP "\fB\-mold\-mnemonics\fR" 4
+.IX Item "-mold-mnemonics"
+.PD
+Select which mnemonics to use in the generated assembler code.  With
+\&\fB\-mnew\-mnemonics\fR, \s-1GCC\s0 uses the assembler mnemonics defined for
+the PowerPC architecture.  With \fB\-mold\-mnemonics\fR it uses the
+assembler mnemonics defined for the \s-1POWER\s0 architecture.  Instructions
+defined in only one architecture have only one mnemonic; \s-1GCC\s0 uses that
+mnemonic irrespective of which of these options is specified.
+.Sp
+\&\s-1GCC\s0 defaults to the mnemonics appropriate for the architecture in
+use.  Specifying \fB\-mcpu=\fR\fIcpu_type\fR sometimes overrides the
+value of these option.  Unless you are building a cross\-compiler, you
+should normally not specify either \fB\-mnew\-mnemonics\fR or
+\&\fB\-mold\-mnemonics\fR, but should instead accept the default.
+.IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
+.IX Item "-mcpu=cpu_type"
+Set architecture type, register usage, choice of mnemonics, and
+instruction scheduling parameters for machine type \fIcpu_type\fR.
+Supported values for \fIcpu_type\fR are \fBrios\fR, \fBrios1\fR,
+\&\fBrsc\fR, \fBrios2\fR, \fBrs64a\fR, \fB601\fR, \fB602\fR,
+\&\fB603\fR, \fB603e\fR, \fB604\fR, \fB604e\fR, \fB620\fR,
+\&\fB630\fR, \fB740\fR, \fB7400\fR, \fB7450\fR, \fB750\fR,
+\&\fBpower\fR, \fBpower2\fR, \fBpowerpc\fR, \fB403\fR, \fB505\fR,
+\&\fB801\fR, \fB821\fR, \fB823\fR, and \fB860\fR and \fBcommon\fR.
+.Sp
+\&\fB\-mcpu=common\fR selects a completely generic processor.  Code
+generated under this option will run on any \s-1POWER\s0 or PowerPC processor.
+\&\s-1GCC\s0 will use only the instructions in the common subset of both
+architectures, and will not use the \s-1MQ\s0 register.  \s-1GCC\s0 assumes a generic
+processor model for scheduling purposes.
+.Sp
+\&\fB\-mcpu=power\fR, \fB\-mcpu=power2\fR, \fB\-mcpu=powerpc\fR, and
+\&\fB\-mcpu=powerpc64\fR specify generic \s-1POWER\s0, \s-1POWER2\s0, pure 32\-bit
+PowerPC (i.e., not \s-1MPC601\s0), and 64\-bit PowerPC architecture machine
+types, with an appropriate, generic processor model assumed for
+scheduling purposes.
+.Sp
+The other options specify a specific processor.  Code generated under
+those options will run best on that processor, and may not run at all on
+others.
+.Sp
+The \fB\-mcpu\fR options automatically enable or disable other
+\&\fB\-m\fR options as follows:
+.RS 4
+.IP "\fBcommon\fR" 4
+.IX Item "common"
+\&\fB\-mno\-power\fR, \fB\-mno\-powerpc\fR
+.IP "\fBpower\fR" 4
+.IX Item "power"
+.PD 0
+.IP "\fBpower2\fR" 4
+.IX Item "power2"
+.IP "\fBrios1\fR" 4
+.IX Item "rios1"
+.IP "\fBrios2\fR" 4
+.IX Item "rios2"
+.IP "\fBrsc\fR" 4
+.IX Item "rsc"
+.PD
+\&\fB\-mpower\fR, \fB\-mno\-powerpc\fR, \fB\-mno\-new\-mnemonics\fR
+.IP "\fBpowerpc\fR" 4
+.IX Item "powerpc"
+.PD 0
+.IP "\fBrs64a\fR" 4
+.IX Item "rs64a"
+.IP "\fB602\fR" 4
+.IX Item "602"
+.IP "\fB603\fR" 4
+.IX Item "603"
+.IP "\fB603e\fR" 4
+.IX Item "603e"
+.IP "\fB604\fR" 4
+.IX Item "604"
+.IP "\fB620\fR" 4
+.IX Item "620"
+.IP "\fB630\fR" 4
+.IX Item "630"
+.IP "\fB740\fR" 4
+.IX Item "740"
+.IP "\fB7400\fR" 4
+.IX Item "7400"
+.IP "\fB7450\fR" 4
+.IX Item "7450"
+.IP "\fB750\fR" 4
+.IX Item "750"
+.IP "\fB505\fR" 4
+.IX Item "505"
+.PD
+\&\fB\-mno\-power\fR, \fB\-mpowerpc\fR, \fB\-mnew\-mnemonics\fR
+.IP "\fB601\fR" 4
+.IX Item "601"
+\&\fB\-mpower\fR, \fB\-mpowerpc\fR, \fB\-mnew\-mnemonics\fR
+.IP "\fB403\fR" 4
+.IX Item "403"
+.PD 0
+.IP "\fB821\fR" 4
+.IX Item "821"
+.IP "\fB860\fR" 4
+.IX Item "860"
+.PD
+\&\fB\-mno\-power\fR, \fB\-mpowerpc\fR, \fB\-mnew\-mnemonics\fR, \fB\-msoft\-float\fR
+.RE
+.RS 4
+.RE
+.IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
+.IX Item "-mtune=cpu_type"
+Set the instruction scheduling parameters for machine type
+\&\fIcpu_type\fR, but do not set the architecture type, register usage, or
+choice of mnemonics, as \fB\-mcpu=\fR\fIcpu_type\fR would.  The same
+values for \fIcpu_type\fR are used for \fB\-mtune\fR as for
+\&\fB\-mcpu\fR.  If both are specified, the code generated will use the
+architecture, registers, and mnemonics set by \fB\-mcpu\fR, but the
+scheduling parameters set by \fB\-mtune\fR.
+.IP "\fB\-maltivec\fR" 4
+.IX Item "-maltivec"
+.PD 0
+.IP "\fB\-mno\-altivec\fR" 4
+.IX Item "-mno-altivec"
+.PD
+These switches enable or disable the use of built-in functions that
+allow access to the AltiVec instruction set.  You may also need to set
+\&\fB\-mabi=altivec\fR to adjust the current \s-1ABI\s0 with AltiVec \s-1ABI\s0
+enhancements.
+.IP "\fB\-mabi=spe\fR" 4
+.IX Item "-mabi=spe"
+Extend the current \s-1ABI\s0 with \s-1SPE\s0 \s-1ABI\s0 extensions.  This does not change
+the default \s-1ABI\s0, instead it adds the \s-1SPE\s0 \s-1ABI\s0 extensions to the current
+\&\s-1ABI\s0.
+.IP "\fB\-mabi=no\-spe\fR" 4
+.IX Item "-mabi=no-spe"
+Disable Booke \s-1SPE\s0 \s-1ABI\s0 extensions for the current \s-1ABI\s0.
+.IP "\fB\-misel=\fR\fIyes/no\fR" 4
+.IX Item "-misel=yes/no"
+.PD 0
+.IP "\fB\-misel\fR" 4
+.IX Item "-misel"
+.PD
+This switch enables or disables the generation of \s-1ISEL\s0 instructions.
+.IP "\fB\-mfull\-toc\fR" 4
+.IX Item "-mfull-toc"
+.PD 0
+.IP "\fB\-mno\-fp\-in\-toc\fR" 4
+.IX Item "-mno-fp-in-toc"
+.IP "\fB\-mno\-sum\-in\-toc\fR" 4
+.IX Item "-mno-sum-in-toc"
+.IP "\fB\-mminimal\-toc\fR" 4
+.IX Item "-mminimal-toc"
+.PD
+Modify generation of the \s-1TOC\s0 (Table Of Contents), which is created for
+every executable file.  The \fB\-mfull\-toc\fR option is selected by
+default.  In that case, \s-1GCC\s0 will allocate at least one \s-1TOC\s0 entry for
+each unique non-automatic variable reference in your program.  \s-1GCC\s0
+will also place floating-point constants in the \s-1TOC\s0.  However, only
+16,384 entries are available in the \s-1TOC\s0.
+.Sp
+If you receive a linker error message that saying you have overflowed
+the available \s-1TOC\s0 space, you can reduce the amount of \s-1TOC\s0 space used
+with the \fB\-mno\-fp\-in\-toc\fR and \fB\-mno\-sum\-in\-toc\fR options.
+\&\fB\-mno\-fp\-in\-toc\fR prevents \s-1GCC\s0 from putting floating-point
+constants in the \s-1TOC\s0 and \fB\-mno\-sum\-in\-toc\fR forces \s-1GCC\s0 to
+generate code to calculate the sum of an address and a constant at
+run-time instead of putting that sum into the \s-1TOC\s0.  You may specify one
+or both of these options.  Each causes \s-1GCC\s0 to produce very slightly
+slower and larger code at the expense of conserving \s-1TOC\s0 space.
+.Sp
+If you still run out of space in the \s-1TOC\s0 even when you specify both of
+these options, specify \fB\-mminimal\-toc\fR instead.  This option causes
+\&\s-1GCC\s0 to make only one \s-1TOC\s0 entry for every file.  When you specify this
+option, \s-1GCC\s0 will produce code that is slower and larger but which
+uses extremely little \s-1TOC\s0 space.  You may wish to use this option
+only on files that contain less frequently executed code.
+.IP "\fB\-maix64\fR" 4
+.IX Item "-maix64"
+.PD 0
+.IP "\fB\-maix32\fR" 4
+.IX Item "-maix32"
+.PD
+Enable 64\-bit \s-1AIX\s0 \s-1ABI\s0 and calling convention: 64\-bit pointers, 64\-bit
+\&\f(CW\*(C`long\*(C'\fR type, and the infrastructure needed to support them.
+Specifying \fB\-maix64\fR implies \fB\-mpowerpc64\fR and
+\&\fB\-mpowerpc\fR, while \fB\-maix32\fR disables the 64\-bit \s-1ABI\s0 and
+implies \fB\-mno\-powerpc64\fR.  \s-1GCC\s0 defaults to \fB\-maix32\fR.
+.IP "\fB\-mxl\-call\fR" 4
+.IX Item "-mxl-call"
+.PD 0
+.IP "\fB\-mno\-xl\-call\fR" 4
+.IX Item "-mno-xl-call"
+.PD
+On \s-1AIX\s0, pass floating-point arguments to prototyped functions beyond the
+register save area (\s-1RSA\s0) on the stack in addition to argument FPRs.  The
+\&\s-1AIX\s0 calling convention was extended but not initially documented to
+handle an obscure K&R C case of calling a function that takes the
+address of its arguments with fewer arguments than declared.  \s-1AIX\s0 \s-1XL\s0
+compilers access floating point arguments which do not fit in the
+\&\s-1RSA\s0 from the stack when a subroutine is compiled without
+optimization.  Because always storing floating-point arguments on the
+stack is inefficient and rarely needed, this option is not enabled by
+default and only is necessary when calling subroutines compiled by \s-1AIX\s0
+\&\s-1XL\s0 compilers without optimization.
+.IP "\fB\-mpe\fR" 4
+.IX Item "-mpe"
+Support \fI\s-1IBM\s0 \s-1RS/6000\s0 \s-1SP\s0\fR \fIParallel Environment\fR (\s-1PE\s0).  Link an
+application written to use message passing with special startup code to
+enable the application to run.  The system must have \s-1PE\s0 installed in the
+standard location (\fI/usr/lpp/ppe.poe/\fR), or the \fIspecs\fR file
+must be overridden with the \fB\-specs=\fR option to specify the
+appropriate directory location.  The Parallel Environment does not
+support threads, so the \fB\-mpe\fR option and the \fB\-pthread\fR
+option are incompatible.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+.PD 0
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+.PD
+Generate code that does not use (uses) the floating-point register set.
+Software floating point emulation is provided if you use the
+\&\fB\-msoft\-float\fR option, and pass the option to \s-1GCC\s0 when linking.
+.IP "\fB\-mmultiple\fR" 4
+.IX Item "-mmultiple"
+.PD 0
+.IP "\fB\-mno\-multiple\fR" 4
+.IX Item "-mno-multiple"
+.PD
+Generate code that uses (does not use) the load multiple word
+instructions and the store multiple word instructions.  These
+instructions are generated by default on \s-1POWER\s0 systems, and not
+generated on PowerPC systems.  Do not use \fB\-mmultiple\fR on little
+endian PowerPC systems, since those instructions do not work when the
+processor is in little endian mode.  The exceptions are \s-1PPC740\s0 and
+\&\s-1PPC750\s0 which permit the instructions usage in little endian mode.
+.IP "\fB\-mstring\fR" 4
+.IX Item "-mstring"
+.PD 0
+.IP "\fB\-mno\-string\fR" 4
+.IX Item "-mno-string"
+.PD
+Generate code that uses (does not use) the load string instructions
+and the store string word instructions to save multiple registers and
+do small block moves.  These instructions are generated by default on
+\&\s-1POWER\s0 systems, and not generated on PowerPC systems.  Do not use
+\&\fB\-mstring\fR on little endian PowerPC systems, since those
+instructions do not work when the processor is in little endian mode.
+The exceptions are \s-1PPC740\s0 and \s-1PPC750\s0 which permit the instructions
+usage in little endian mode.
+.IP "\fB\-mupdate\fR" 4
+.IX Item "-mupdate"
+.PD 0
+.IP "\fB\-mno\-update\fR" 4
+.IX Item "-mno-update"
+.PD
+Generate code that uses (does not use) the load or store instructions
+that update the base register to the address of the calculated memory
+location.  These instructions are generated by default.  If you use
+\&\fB\-mno\-update\fR, there is a small window between the time that the
+stack pointer is updated and the address of the previous frame is
+stored, which means code that walks the stack frame across interrupts or
+signals may get corrupted data.
+.IP "\fB\-mfused\-madd\fR" 4
+.IX Item "-mfused-madd"
+.PD 0
+.IP "\fB\-mno\-fused\-madd\fR" 4
+.IX Item "-mno-fused-madd"
+.PD
+Generate code that uses (does not use) the floating point multiply and
+accumulate instructions.  These instructions are generated by default if
+hardware floating is used.
+.IP "\fB\-mno\-bit\-align\fR" 4
+.IX Item "-mno-bit-align"
+.PD 0
+.IP "\fB\-mbit\-align\fR" 4
+.IX Item "-mbit-align"
+.PD
+On System V.4 and embedded PowerPC systems do not (do) force structures
+and unions that contain bit-fields to be aligned to the base type of the
+bit\-field.
+.Sp
+For example, by default a structure containing nothing but 8
+\&\f(CW\*(C`unsigned\*(C'\fR bit-fields of length 1 would be aligned to a 4 byte
+boundary and have a size of 4 bytes.  By using \fB\-mno\-bit\-align\fR,
+the structure would be aligned to a 1 byte boundary and be one byte in
+size.
+.IP "\fB\-mno\-strict\-align\fR" 4
+.IX Item "-mno-strict-align"
+.PD 0
+.IP "\fB\-mstrict\-align\fR" 4
+.IX Item "-mstrict-align"
+.PD
+On System V.4 and embedded PowerPC systems do not (do) assume that
+unaligned memory references will be handled by the system.
+.IP "\fB\-mrelocatable\fR" 4
+.IX Item "-mrelocatable"
+.PD 0
+.IP "\fB\-mno\-relocatable\fR" 4
+.IX Item "-mno-relocatable"
+.PD
+On embedded PowerPC systems generate code that allows (does not allow)
+the program to be relocated to a different address at runtime.  If you
+use \fB\-mrelocatable\fR on any module, all objects linked together must
+be compiled with \fB\-mrelocatable\fR or \fB\-mrelocatable\-lib\fR.
+.IP "\fB\-mrelocatable\-lib\fR" 4
+.IX Item "-mrelocatable-lib"
+.PD 0
+.IP "\fB\-mno\-relocatable\-lib\fR" 4
+.IX Item "-mno-relocatable-lib"
+.PD
+On embedded PowerPC systems generate code that allows (does not allow)
+the program to be relocated to a different address at runtime.  Modules
+compiled with \fB\-mrelocatable\-lib\fR can be linked with either modules
+compiled without \fB\-mrelocatable\fR and \fB\-mrelocatable\-lib\fR or
+with modules compiled with the \fB\-mrelocatable\fR options.
+.IP "\fB\-mno\-toc\fR" 4
+.IX Item "-mno-toc"
+.PD 0
+.IP "\fB\-mtoc\fR" 4
+.IX Item "-mtoc"
+.PD
+On System V.4 and embedded PowerPC systems do not (do) assume that
+register 2 contains a pointer to a global area pointing to the addresses
+used in the program.
+.IP "\fB\-mlittle\fR" 4
+.IX Item "-mlittle"
+.PD 0
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+.PD
+On System V.4 and embedded PowerPC systems compile code for the
+processor in little endian mode.  The \fB\-mlittle\-endian\fR option is
+the same as \fB\-mlittle\fR.
+.IP "\fB\-mbig\fR" 4
+.IX Item "-mbig"
+.PD 0
+.IP "\fB\-mbig\-endian\fR" 4
+.IX Item "-mbig-endian"
+.PD
+On System V.4 and embedded PowerPC systems compile code for the
+processor in big endian mode.  The \fB\-mbig\-endian\fR option is
+the same as \fB\-mbig\fR.
+.IP "\fB\-mcall\-sysv\fR" 4
+.IX Item "-mcall-sysv"
+On System V.4 and embedded PowerPC systems compile code using calling
+conventions that adheres to the March 1995 draft of the System V
+Application Binary Interface, PowerPC processor supplement.  This is the
+default unless you configured \s-1GCC\s0 using \fBpowerpc\-*\-eabiaix\fR.
+.IP "\fB\-mcall\-sysv\-eabi\fR" 4
+.IX Item "-mcall-sysv-eabi"
+Specify both \fB\-mcall\-sysv\fR and \fB\-meabi\fR options.
+.IP "\fB\-mcall\-sysv\-noeabi\fR" 4
+.IX Item "-mcall-sysv-noeabi"
+Specify both \fB\-mcall\-sysv\fR and \fB\-mno\-eabi\fR options.
+.IP "\fB\-mcall\-aix\fR" 4
+.IX Item "-mcall-aix"
+On System V.4 and embedded PowerPC systems compile code using calling
+conventions that are similar to those used on \s-1AIX\s0.  This is the
+default if you configured \s-1GCC\s0 using \fBpowerpc\-*\-eabiaix\fR.
+.IP "\fB\-mcall\-solaris\fR" 4
+.IX Item "-mcall-solaris"
+On System V.4 and embedded PowerPC systems compile code for the Solaris
+operating system.
+.IP "\fB\-mcall\-linux\fR" 4
+.IX Item "-mcall-linux"
+On System V.4 and embedded PowerPC systems compile code for the
+Linux-based \s-1GNU\s0 system.
+.IP "\fB\-mcall\-gnu\fR" 4
+.IX Item "-mcall-gnu"
+On System V.4 and embedded PowerPC systems compile code for the
+Hurd-based \s-1GNU\s0 system.
+.IP "\fB\-mcall\-netbsd\fR" 4
+.IX Item "-mcall-netbsd"
+On System V.4 and embedded PowerPC systems compile code for the
+NetBSD operating system.
+.IP "\fB\-maix\-struct\-return\fR" 4
+.IX Item "-maix-struct-return"
+Return all structures in memory (as specified by the \s-1AIX\s0 \s-1ABI\s0).
+.IP "\fB\-msvr4\-struct\-return\fR" 4
+.IX Item "-msvr4-struct-return"
+Return structures smaller than 8 bytes in registers (as specified by the
+\&\s-1SVR4\s0 \s-1ABI\s0).
+.IP "\fB\-mabi=altivec\fR" 4
+.IX Item "-mabi=altivec"
+Extend the current \s-1ABI\s0 with AltiVec \s-1ABI\s0 extensions.  This does not
+change the default \s-1ABI\s0, instead it adds the AltiVec \s-1ABI\s0 extensions to
+the current \s-1ABI\s0.
+.IP "\fB\-mabi=no\-altivec\fR" 4
+.IX Item "-mabi=no-altivec"
+Disable AltiVec \s-1ABI\s0 extensions for the current \s-1ABI\s0.
+.IP "\fB\-mprototype\fR" 4
+.IX Item "-mprototype"
+.PD 0
+.IP "\fB\-mno\-prototype\fR" 4
+.IX Item "-mno-prototype"
+.PD
+On System V.4 and embedded PowerPC systems assume that all calls to
+variable argument functions are properly prototyped.  Otherwise, the
+compiler must insert an instruction before every non prototyped call to
+set or clear bit 6 of the condition code register (\fI\s-1CR\s0\fR) to
+indicate whether floating point values were passed in the floating point
+registers in case the function takes a variable arguments.  With
+\&\fB\-mprototype\fR, only calls to prototyped variable argument functions
+will set or clear the bit.
+.IP "\fB\-msim\fR" 4
+.IX Item "-msim"
+On embedded PowerPC systems, assume that the startup module is called
+\&\fIsim\-crt0.o\fR and that the standard C libraries are \fIlibsim.a\fR and
+\&\fIlibc.a\fR.  This is the default for \fBpowerpc\-*\-eabisim\fR.
+configurations.
+.IP "\fB\-mmvme\fR" 4
+.IX Item "-mmvme"
+On embedded PowerPC systems, assume that the startup module is called
+\&\fIcrt0.o\fR and the standard C libraries are \fIlibmvme.a\fR and
+\&\fIlibc.a\fR.
+.IP "\fB\-mads\fR" 4
+.IX Item "-mads"
+On embedded PowerPC systems, assume that the startup module is called
+\&\fIcrt0.o\fR and the standard C libraries are \fIlibads.a\fR and
+\&\fIlibc.a\fR.
+.IP "\fB\-myellowknife\fR" 4
+.IX Item "-myellowknife"
+On embedded PowerPC systems, assume that the startup module is called
+\&\fIcrt0.o\fR and the standard C libraries are \fIlibyk.a\fR and
+\&\fIlibc.a\fR.
+.IP "\fB\-mvxworks\fR" 4
+.IX Item "-mvxworks"
+On System V.4 and embedded PowerPC systems, specify that you are
+compiling for a VxWorks system.
+.IP "\fB\-mwindiss\fR" 4
+.IX Item "-mwindiss"
+Specify that you are compiling for the WindISS simulation environment.
+.IP "\fB\-memb\fR" 4
+.IX Item "-memb"
+On embedded PowerPC systems, set the \fI\s-1PPC_EMB\s0\fR bit in the \s-1ELF\s0 flags
+header to indicate that \fBeabi\fR extended relocations are used.
+.IP "\fB\-meabi\fR" 4
+.IX Item "-meabi"
+.PD 0
+.IP "\fB\-mno\-eabi\fR" 4
+.IX Item "-mno-eabi"
+.PD
+On System V.4 and embedded PowerPC systems do (do not) adhere to the
+Embedded Applications Binary Interface (eabi) which is a set of
+modifications to the System V.4 specifications.  Selecting \fB\-meabi\fR
+means that the stack is aligned to an 8 byte boundary, a function
+\&\f(CW\*(C`_\|_eabi\*(C'\fR is called to from \f(CW\*(C`main\*(C'\fR to set up the eabi
+environment, and the \fB\-msdata\fR option can use both \f(CW\*(C`r2\*(C'\fR and
+\&\f(CW\*(C`r13\*(C'\fR to point to two separate small data areas.  Selecting
+\&\fB\-mno\-eabi\fR means that the stack is aligned to a 16 byte boundary,
+do not call an initialization function from \f(CW\*(C`main\*(C'\fR, and the
+\&\fB\-msdata\fR option will only use \f(CW\*(C`r13\*(C'\fR to point to a single
+small data area.  The \fB\-meabi\fR option is on by default if you
+configured \s-1GCC\s0 using one of the \fBpowerpc*\-*\-eabi*\fR options.
+.IP "\fB\-msdata=eabi\fR" 4
+.IX Item "-msdata=eabi"
+On System V.4 and embedded PowerPC systems, put small initialized
+\&\f(CW\*(C`const\*(C'\fR global and static data in the \fB.sdata2\fR section, which
+is pointed to by register \f(CW\*(C`r2\*(C'\fR.  Put small initialized
+non\-\f(CW\*(C`const\*(C'\fR global and static data in the \fB.sdata\fR section,
+which is pointed to by register \f(CW\*(C`r13\*(C'\fR.  Put small uninitialized
+global and static data in the \fB.sbss\fR section, which is adjacent to
+the \fB.sdata\fR section.  The \fB\-msdata=eabi\fR option is
+incompatible with the \fB\-mrelocatable\fR option.  The
+\&\fB\-msdata=eabi\fR option also sets the \fB\-memb\fR option.
+.IP "\fB\-msdata=sysv\fR" 4
+.IX Item "-msdata=sysv"
+On System V.4 and embedded PowerPC systems, put small global and static
+data in the \fB.sdata\fR section, which is pointed to by register
+\&\f(CW\*(C`r13\*(C'\fR.  Put small uninitialized global and static data in the
+\&\fB.sbss\fR section, which is adjacent to the \fB.sdata\fR section.
+The \fB\-msdata=sysv\fR option is incompatible with the
+\&\fB\-mrelocatable\fR option.
+.IP "\fB\-msdata=default\fR" 4
+.IX Item "-msdata=default"
+.PD 0
+.IP "\fB\-msdata\fR" 4
+.IX Item "-msdata"
+.PD
+On System V.4 and embedded PowerPC systems, if \fB\-meabi\fR is used,
+compile code the same as \fB\-msdata=eabi\fR, otherwise compile code the
+same as \fB\-msdata=sysv\fR.
+.IP "\fB\-msdata\-data\fR" 4
+.IX Item "-msdata-data"
+On System V.4 and embedded PowerPC systems, put small global and static
+data in the \fB.sdata\fR section.  Put small uninitialized global and
+static data in the \fB.sbss\fR section.  Do not use register \f(CW\*(C`r13\*(C'\fR
+to address small data however.  This is the default behavior unless
+other \fB\-msdata\fR options are used.
+.IP "\fB\-msdata=none\fR" 4
+.IX Item "-msdata=none"
+.PD 0
+.IP "\fB\-mno\-sdata\fR" 4
+.IX Item "-mno-sdata"
+.PD
+On embedded PowerPC systems, put all initialized global and static data
+in the \fB.data\fR section, and all uninitialized data in the
+\&\fB.bss\fR section.
+.IP "\fB\-G\fR \fInum\fR" 4
+.IX Item "-G num"
+On embedded PowerPC systems, put global and static items less than or
+equal to \fInum\fR bytes into the small data or bss sections instead of
+the normal data or bss section.  By default, \fInum\fR is 8.  The
+\&\fB\-G\fR \fInum\fR switch is also passed to the linker.
+All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
+.IP "\fB\-mregnames\fR" 4
+.IX Item "-mregnames"
+.PD 0
+.IP "\fB\-mno\-regnames\fR" 4
+.IX Item "-mno-regnames"
+.PD
+On System V.4 and embedded PowerPC systems do (do not) emit register
+names in the assembly language output using symbolic forms.
+.IP "\fB\-mlongcall\fR" 4
+.IX Item "-mlongcall"
+.PD 0
+.IP "\fB\-mno\-longcall\fR" 4
+.IX Item "-mno-longcall"
+.PD
+Default to making all function calls via pointers, so that functions
+which reside further than 64 megabytes (67,108,864 bytes) from the
+current location can be called.  This setting can be overridden by the
+\&\f(CW\*(C`shortcall\*(C'\fR function attribute, or by \f(CW\*(C`#pragma longcall(0)\*(C'\fR.
+.Sp
+Some linkers are capable of detecting out-of-range calls and generating
+glue code on the fly.  On these systems, long calls are unnecessary and
+generate slower code.  As of this writing, the \s-1AIX\s0 linker can do this,
+as can the \s-1GNU\s0 linker for PowerPC/64.  It is planned to add this feature
+to the \s-1GNU\s0 linker for 32\-bit PowerPC systems as well.
+.Sp
+In the future, we may cause \s-1GCC\s0 to ignore all longcall specifications
+when the linker is known to generate glue.
+.IP "\fB\-pthread\fR" 4
+.IX Item "-pthread"
+Adds support for multithreading with the \fIpthreads\fR library.
+This option sets flags for both the preprocessor and linker.
+.Sh "Darwin Options"
+.IX Subsection "Darwin Options"
+These options are defined for all architectures running the Darwin operating
+system.  They are useful for compatibility with other Mac \s-1OS\s0 compilers.
+.IP "\fB\-all_load\fR" 4
+.IX Item "-all_load"
+Loads all members of static archive libraries.
+See man \fIld\fR\|(1) for more information.
+.IP "\fB\-arch_errors_fatal\fR" 4
+.IX Item "-arch_errors_fatal"
+Cause the errors having to do with files that have the wrong architecture
+to be fatal.
+.IP "\fB\-bind_at_load\fR" 4
+.IX Item "-bind_at_load"
+Causes the output file to be marked such that the dynamic linker will
+bind all undefined references when the file is loaded or launched.
+.IP "\fB\-bundle\fR" 4
+.IX Item "-bundle"
+Produce a Mach-o bundle format file.
+See man \fIld\fR\|(1) for more information.
+.IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
+.IX Item "-bundle_loader executable"
+This specifies the \fIexecutable\fR that will be loading the build
+output file being linked. See man \fIld\fR\|(1) for more information.
+.IP "\fB\-allowable_client\fR  \fIclient_name\fR" 4
+.IX Item "-allowable_client  client_name"
+.PD 0
+.IP "\fB\-arch_only\fR" 4
+.IX Item "-arch_only"
+.IP "\fB\-client_name\fR" 4
+.IX Item "-client_name"
+.IP "\fB\-compatibility_version\fR" 4
+.IX Item "-compatibility_version"
+.IP "\fB\-current_version\fR" 4
+.IX Item "-current_version"
+.IP "\fB\-dependency\-file\fR" 4
+.IX Item "-dependency-file"
+.IP "\fB\-dylib_file\fR" 4
+.IX Item "-dylib_file"
+.IP "\fB\-dylinker_install_name\fR" 4
+.IX Item "-dylinker_install_name"
+.IP "\fB\-dynamic\fR" 4
+.IX Item "-dynamic"
+.IP "\fB\-dynamiclib\fR" 4
+.IX Item "-dynamiclib"
+.IP "\fB\-exported_symbols_list\fR" 4
+.IX Item "-exported_symbols_list"
+.IP "\fB\-filelist\fR" 4
+.IX Item "-filelist"
+.IP "\fB\-flat_namespace\fR" 4
+.IX Item "-flat_namespace"
+.IP "\fB\-force_cpusubtype_ALL\fR" 4
+.IX Item "-force_cpusubtype_ALL"
+.IP "\fB\-force_flat_namespace\fR" 4
+.IX Item "-force_flat_namespace"
+.IP "\fB\-headerpad_max_install_names\fR" 4
+.IX Item "-headerpad_max_install_names"
+.IP "\fB\-image_base\fR" 4
+.IX Item "-image_base"
+.IP "\fB\-init\fR" 4
+.IX Item "-init"
+.IP "\fB\-install_name\fR" 4
+.IX Item "-install_name"
+.IP "\fB\-keep_private_externs\fR" 4
+.IX Item "-keep_private_externs"
+.IP "\fB\-multi_module\fR" 4
+.IX Item "-multi_module"
+.IP "\fB\-multiply_defined\fR" 4
+.IX Item "-multiply_defined"
+.IP "\fB\-multiply_defined_unused\fR" 4
+.IX Item "-multiply_defined_unused"
+.IP "\fB\-noall_load\fR" 4
+.IX Item "-noall_load"
+.IP "\fB\-nomultidefs\fR" 4
+.IX Item "-nomultidefs"
+.IP "\fB\-noprebind\fR" 4
+.IX Item "-noprebind"
+.IP "\fB\-noseglinkedit\fR" 4
+.IX Item "-noseglinkedit"
+.IP "\fB\-pagezero_size\fR" 4
+.IX Item "-pagezero_size"
+.IP "\fB\-prebind\fR" 4
+.IX Item "-prebind"
+.IP "\fB\-prebind_all_twolevel_modules\fR" 4
+.IX Item "-prebind_all_twolevel_modules"
+.IP "\fB\-private_bundle\fR" 4
+.IX Item "-private_bundle"
+.IP "\fB\-read_only_relocs\fR" 4
+.IX Item "-read_only_relocs"
+.IP "\fB\-sectalign\fR" 4
+.IX Item "-sectalign"
+.IP "\fB\-sectobjectsymbols\fR" 4
+.IX Item "-sectobjectsymbols"
+.IP "\fB\-whyload\fR" 4
+.IX Item "-whyload"
+.IP "\fB\-seg1addr\fR" 4
+.IX Item "-seg1addr"
+.IP "\fB\-sectcreate\fR" 4
+.IX Item "-sectcreate"
+.IP "\fB\-sectobjectsymbols\fR" 4
+.IX Item "-sectobjectsymbols"
+.IP "\fB\-sectorder\fR" 4
+.IX Item "-sectorder"
+.IP "\fB\-seg_addr_table\fR" 4
+.IX Item "-seg_addr_table"
+.IP "\fB\-seg_addr_table_filename\fR" 4
+.IX Item "-seg_addr_table_filename"
+.IP "\fB\-seglinkedit\fR" 4
+.IX Item "-seglinkedit"
+.IP "\fB\-segprot\fR" 4
+.IX Item "-segprot"
+.IP "\fB\-segs_read_only_addr\fR" 4
+.IX Item "-segs_read_only_addr"
+.IP "\fB\-segs_read_write_addr\fR" 4
+.IX Item "-segs_read_write_addr"
+.IP "\fB\-single_module\fR" 4
+.IX Item "-single_module"
+.IP "\fB\-static\fR" 4
+.IX Item "-static"
+.IP "\fB\-sub_library\fR" 4
+.IX Item "-sub_library"
+.IP "\fB\-sub_umbrella\fR" 4
+.IX Item "-sub_umbrella"
+.IP "\fB\-twolevel_namespace\fR" 4
+.IX Item "-twolevel_namespace"
+.IP "\fB\-umbrella\fR" 4
+.IX Item "-umbrella"
+.IP "\fB\-undefined\fR" 4
+.IX Item "-undefined"
+.IP "\fB\-unexported_symbols_list\fR" 4
+.IX Item "-unexported_symbols_list"
+.IP "\fB\-weak_reference_mismatches\fR" 4
+.IX Item "-weak_reference_mismatches"
+.IP "\fB\-whatsloaded\fR" 4
+.IX Item "-whatsloaded"
+.PD
+This options are available for Darwin linker. Darwin linker man page
+describes them in detail.
+.Sh "\s-1IBM\s0 \s-1RT\s0 Options"
+.IX Subsection "IBM RT Options"
+These \fB\-m\fR options are defined for the \s-1IBM\s0 \s-1RT\s0 \s-1PC:\s0
+.IP "\fB\-min\-line\-mul\fR" 4
+.IX Item "-min-line-mul"
+Use an in-line code sequence for integer multiplies.  This is the
+default.
+.IP "\fB\-mcall\-lib\-mul\fR" 4
+.IX Item "-mcall-lib-mul"
+Call \f(CW\*(C`lmul$$\*(C'\fR for integer multiples.
+.IP "\fB\-mfull\-fp\-blocks\fR" 4
+.IX Item "-mfull-fp-blocks"
+Generate full-size floating point data blocks, including the minimum
+amount of scratch space recommended by \s-1IBM\s0.  This is the default.
+.IP "\fB\-mminimum\-fp\-blocks\fR" 4
+.IX Item "-mminimum-fp-blocks"
+Do not include extra scratch space in floating point data blocks.  This
+results in smaller code, but slower execution, since scratch space must
+be allocated dynamically.
+.IP "\fB\-mfp\-arg\-in\-fpregs\fR" 4
+.IX Item "-mfp-arg-in-fpregs"
+Use a calling sequence incompatible with the \s-1IBM\s0 calling convention in
+which floating point arguments are passed in floating point registers.
+Note that \f(CW\*(C`stdarg.h\*(C'\fR will not work with floating point operands
+if this option is specified.
+.IP "\fB\-mfp\-arg\-in\-gregs\fR" 4
+.IX Item "-mfp-arg-in-gregs"
+Use the normal calling convention for floating point arguments.  This is
+the default.
+.IP "\fB\-mhc\-struct\-return\fR" 4
+.IX Item "-mhc-struct-return"
+Return structures of more than one word in memory, rather than in a
+register.  This provides compatibility with the MetaWare HighC (hc)
+compiler.  Use the option \fB\-fpcc\-struct\-return\fR for compatibility
+with the Portable C Compiler (pcc).
+.IP "\fB\-mnohc\-struct\-return\fR" 4
+.IX Item "-mnohc-struct-return"
+Return some structures of more than one word in registers, when
+convenient.  This is the default.  For compatibility with the
+IBM-supplied compilers, use the option \fB\-fpcc\-struct\-return\fR or the
+option \fB\-mhc\-struct\-return\fR.
+.Sh "\s-1MIPS\s0 Options"
+.IX Subsection "MIPS Options"
+These \fB\-m\fR options are defined for the \s-1MIPS\s0 family of computers:
+.IP "\fB\-march=\fR\fIarch\fR" 4
+.IX Item "-march=arch"
+Generate code that will run on \fIarch\fR, which can be the name of a
+generic \s-1MIPS\s0 \s-1ISA\s0, or the name of a particular processor.  The \s-1ISA\s0 names
+are: \fBmips1\fR, \fBmips2\fR, \fBmips3\fR, \fBmips4\fR, \fBmips32\fR
+and \fBmips64\fR.  The processor names are: \fBr2000\fR,
+\&\fBr3000\fR, \fBr3900\fR, \fBr4000\fR, \fBvr4100\fR, \fBvr4300\fR,
+\&\fBr4400\fR, \fBr4600\fR, \fBr4650\fR, \fBvr5000\fR, \fBr6000\fR,
+\&\fBr8000\fR, \fB4kc\fR, \fB4kp\fR, \fB5kc\fR, \fB20kc\fR,
+\&\fBorion\fR, and \fBsb1\fR.  The special value \fBfrom-abi\fR selects the
+most compatible architecture for the selected \s-1ABI\s0 (that is,
+\&\fBmips1\fR for 32\-bit ABIs and \fBmips3\fR for 64\-bit ABIs).
+.Sp
+In processor names, a final \fB000\fR can be abbreviated as \fBk\fR
+(for example, \fB\-march=r2k\fR).  Prefixes are optional, and
+\&\fBvr\fR may be written \fBr\fR.
+.Sp
+\&\s-1GCC\s0 defines two macros based on the value of this option.  The first
+is \fB_MIPS_ARCH\fR, which gives the name of target architecture, as
+a string.  The second has the form \fB_MIPS_ARCH_\fR\fIfoo\fR,
+where \fIfoo\fR is the capitalized value of \fB_MIPS_ARCH\fR.
+For example, \fB\-march=r2000\fR will set \fB_MIPS_ARCH\fR
+to \fB\*(L"r2000\*(R"\fR and define the macro \fB_MIPS_ARCH_R2000\fR.
+.Sp
+Note that the \fB_MIPS_ARCH\fR macro uses the processor names given
+above.  In other words, it will have the full prefix and will not
+abbreviate \fB000\fR as \fBk\fR.  In the case of \fBfrom-abi\fR,
+the macro names the resolved architecture (either \fB\*(L"mips1\*(R"\fR or
+\&\fB\*(L"mips3\*(R"\fR).  It names the default architecture when no
+\&\fB\-march\fR option is given.
+.IP "\fB\-mtune=\fR\fIarch\fR" 4
+.IX Item "-mtune=arch"
+Optimize for \fIarch\fR.  Among other things, this option controls
+the way instructions are scheduled, and the perceived cost of arithmetic
+operations.  The list of \fIarch\fR values is the same as for
+\&\fB\-march\fR.
+.Sp
+When this option is not used, \s-1GCC\s0 will optimize for the processor
+specified by \fB\-march\fR.  By using \fB\-march\fR and
+\&\fB\-mtune\fR together, it is possible to generate code that will
+run on a family of processors, but optimize the code for one
+particular member of that family.
+.Sp
+\&\fB\-mtune\fR defines the macros \fB_MIPS_TUNE\fR and
+\&\fB_MIPS_TUNE_\fR\fIfoo\fR, which work in the same way as the
+\&\fB\-march\fR ones described above.
+.IP "\fB\-mips1\fR" 4
+.IX Item "-mips1"
+Equivalent to \fB\-march=mips1\fR.
+.IP "\fB\-mips2\fR" 4
+.IX Item "-mips2"
+Equivalent to \fB\-march=mips2\fR.
+.IP "\fB\-mips3\fR" 4
+.IX Item "-mips3"
+Equivalent to \fB\-march=mips3\fR.
+.IP "\fB\-mips4\fR" 4
+.IX Item "-mips4"
+Equivalent to \fB\-march=mips4\fR.
+.IP "\fB\-mips32\fR" 4
+.IX Item "-mips32"
+Equivalent to \fB\-march=mips32\fR.
+.IP "\fB\-mips64\fR" 4
+.IX Item "-mips64"
+Equivalent to \fB\-march=mips64\fR.
+.IP "\fB\-mfused\-madd\fR" 4
+.IX Item "-mfused-madd"
+.PD 0
+.IP "\fB\-mno\-fused\-madd\fR" 4
+.IX Item "-mno-fused-madd"
+.PD
+Generate code that uses (does not use) the floating point multiply and
+accumulate instructions, when they are available.  These instructions
+are generated by default if they are available, but this may be
+undesirable if the extra precision causes problems or on certain chips
+in the mode where denormals are rounded to zero where denormals
+generated by multiply and accumulate instructions cause exceptions
+anyway.
+.IP "\fB\-mfp32\fR" 4
+.IX Item "-mfp32"
+Assume that floating point registers are 32 bits wide.
+.IP "\fB\-mfp64\fR" 4
+.IX Item "-mfp64"
+Assume that floating point registers are 64 bits wide.
+.IP "\fB\-mgp32\fR" 4
+.IX Item "-mgp32"
+Assume that general purpose registers are 32 bits wide.
+.IP "\fB\-mgp64\fR" 4
+.IX Item "-mgp64"
+Assume that general purpose registers are 64 bits wide.
+.IP "\fB\-mint64\fR" 4
+.IX Item "-mint64"
+Force int and long types to be 64 bits wide.  See \fB\-mlong32\fR for an
+explanation of the default, and the width of pointers.
+.IP "\fB\-mlong64\fR" 4
+.IX Item "-mlong64"
+Force long types to be 64 bits wide.  See \fB\-mlong32\fR for an
+explanation of the default, and the width of pointers.
+.IP "\fB\-mlong32\fR" 4
+.IX Item "-mlong32"
+Force long, int, and pointer types to be 32 bits wide.
+.Sp
+The default size of ints, longs and pointers depends on the \s-1ABI\s0.  All
+the supported ABIs use 32\-bit ints.  The n64 \s-1ABI\s0 uses 64\-bit longs, as
+does the 64\-bit Cygnus \s-1EABI\s0; the others use 32\-bit longs.  Pointers
+are the same size as longs, or the same size as integer registers,
+whichever is smaller.
+.IP "\fB\-mabi=32\fR" 4
+.IX Item "-mabi=32"
+.PD 0
+.IP "\fB\-mabi=o64\fR" 4
+.IX Item "-mabi=o64"
+.IP "\fB\-mabi=n32\fR" 4
+.IX Item "-mabi=n32"
+.IP "\fB\-mabi=64\fR" 4
+.IX Item "-mabi=64"
+.IP "\fB\-mabi=eabi\fR" 4
+.IX Item "-mabi=eabi"
+.IP "\fB\-mabi=meabi\fR" 4
+.IX Item "-mabi=meabi"
+.PD
+Generate code for the given \s-1ABI\s0.
+.Sp
+Note that there are two embedded ABIs: \fB\-mabi=eabi\fR
+selects the one defined by Cygnus while \fB\-meabi=meabi\fR
+selects the one defined by \s-1MIPS\s0.  Both these ABIs have
+32\-bit and 64\-bit variants.  Normally, \s-1GCC\s0 will generate
+64\-bit code when you select a 64\-bit architecture, but you
+can use \fB\-mgp32\fR to get 32\-bit code instead.
+.IP "\fB\-mmips\-as\fR" 4
+.IX Item "-mmips-as"
+Generate code for the \s-1MIPS\s0 assembler, and invoke \fImips-tfile\fR to
+add normal debug information.  This is the default for all
+platforms except for the \s-1OSF/1\s0 reference platform, using the OSF/rose
+object format.  If the either of the \fB\-gstabs\fR or \fB\-gstabs+\fR
+switches are used, the \fImips-tfile\fR program will encapsulate the
+stabs within \s-1MIPS\s0 \s-1ECOFF\s0.
+.IP "\fB\-mgas\fR" 4
+.IX Item "-mgas"
+Generate code for the \s-1GNU\s0 assembler.  This is the default on the \s-1OSF/1\s0
+reference platform, using the OSF/rose object format.  Also, this is
+the default if the configure option \fB\-\-with\-gnu\-as\fR is used.
+.IP "\fB\-msplit\-addresses\fR" 4
+.IX Item "-msplit-addresses"
+.PD 0
+.IP "\fB\-mno\-split\-addresses\fR" 4
+.IX Item "-mno-split-addresses"
+.PD
+Generate code to load the high and low parts of address constants separately.
+This allows \s-1GCC\s0 to optimize away redundant loads of the high order
+bits of addresses.  This optimization requires \s-1GNU\s0 as and \s-1GNU\s0 ld.
+This optimization is enabled by default for some embedded targets where
+\&\s-1GNU\s0 as and \s-1GNU\s0 ld are standard.
+.IP "\fB\-mrnames\fR" 4
+.IX Item "-mrnames"
+.PD 0
+.IP "\fB\-mno\-rnames\fR" 4
+.IX Item "-mno-rnames"
+.PD
+The \fB\-mrnames\fR switch says to output code using the \s-1MIPS\s0 software
+names for the registers, instead of the hardware names (ie, \fIa0\fR
+instead of \fI$4\fR).  The only known assembler that supports this option
+is the Algorithmics assembler.
+.IP "\fB\-mgpopt\fR" 4
+.IX Item "-mgpopt"
+.PD 0
+.IP "\fB\-mno\-gpopt\fR" 4
+.IX Item "-mno-gpopt"
+.PD
+The \fB\-mgpopt\fR switch says to write all of the data declarations
+before the instructions in the text section, this allows the \s-1MIPS\s0
+assembler to generate one word memory references instead of using two
+words for short global or static data items.  This is on by default if
+optimization is selected.
+.IP "\fB\-mstats\fR" 4
+.IX Item "-mstats"
+.PD 0
+.IP "\fB\-mno\-stats\fR" 4
+.IX Item "-mno-stats"
+.PD
+For each non-inline function processed, the \fB\-mstats\fR switch
+causes the compiler to emit one line to the standard error file to
+print statistics about the program (number of registers saved, stack
+size, etc.).
+.IP "\fB\-mmemcpy\fR" 4
+.IX Item "-mmemcpy"
+.PD 0
+.IP "\fB\-mno\-memcpy\fR" 4
+.IX Item "-mno-memcpy"
+.PD
+The \fB\-mmemcpy\fR switch makes all block moves call the appropriate
+string function (\fBmemcpy\fR or \fBbcopy\fR) instead of possibly
+generating inline code.
+.IP "\fB\-mmips\-tfile\fR" 4
+.IX Item "-mmips-tfile"
+.PD 0
+.IP "\fB\-mno\-mips\-tfile\fR" 4
+.IX Item "-mno-mips-tfile"
+.PD
+The \fB\-mno\-mips\-tfile\fR switch causes the compiler not
+postprocess the object file with the \fImips-tfile\fR program,
+after the \s-1MIPS\s0 assembler has generated it to add debug support.  If
+\&\fImips-tfile\fR is not run, then no local variables will be
+available to the debugger.  In addition, \fIstage2\fR and
+\&\fIstage3\fR objects will have the temporary file names passed to the
+assembler embedded in the object file, which means the objects will
+not compare the same.  The \fB\-mno\-mips\-tfile\fR switch should only
+be used when there are bugs in the \fImips-tfile\fR program that
+prevents compilation.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries are not part of \s-1GCC\s0.
+Normally the facilities of the machine's usual C compiler are used, but
+this can't be done directly in cross\-compilation.  You must make your
+own arrangements to provide suitable library functions for
+cross\-compilation.
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+Generate output containing floating point instructions.  This is the
+default if you use the unmodified sources.
+.IP "\fB\-mabicalls\fR" 4
+.IX Item "-mabicalls"
+.PD 0
+.IP "\fB\-mno\-abicalls\fR" 4
+.IX Item "-mno-abicalls"
+.PD
+Emit (or do not emit) the pseudo operations \fB.abicalls\fR,
+\&\fB.cpload\fR, and \fB.cprestore\fR that some System V.4 ports use for
+position independent code.
+.IP "\fB\-mlong\-calls\fR" 4
+.IX Item "-mlong-calls"
+.PD 0
+.IP "\fB\-mno\-long\-calls\fR" 4
+.IX Item "-mno-long-calls"
+.PD
+Do all calls with the \fB\s-1JALR\s0\fR instruction, which requires
+loading up a function's address into a register before the call.
+You need to use this switch, if you call outside of the current
+512 megabyte segment to functions that are not through pointers.
+.IP "\fB\-mhalf\-pic\fR" 4
+.IX Item "-mhalf-pic"
+.PD 0
+.IP "\fB\-mno\-half\-pic\fR" 4
+.IX Item "-mno-half-pic"
+.PD
+Put pointers to extern references into the data section and load them
+up, rather than put the references in the text section.
+.IP "\fB\-membedded\-pic\fR" 4
+.IX Item "-membedded-pic"
+.PD 0
+.IP "\fB\-mno\-embedded\-pic\fR" 4
+.IX Item "-mno-embedded-pic"
+.PD
+Generate \s-1PIC\s0 code suitable for some embedded systems.  All calls are
+made using \s-1PC\s0 relative address, and all data is addressed using the \f(CW$gp\fR
+register.  No more than 65536 bytes of global data may be used.  This
+requires \s-1GNU\s0 as and \s-1GNU\s0 ld which do most of the work.  This currently
+only works on targets which use \s-1ECOFF\s0; it does not work with \s-1ELF\s0.
+.IP "\fB\-membedded\-data\fR" 4
+.IX Item "-membedded-data"
+.PD 0
+.IP "\fB\-mno\-embedded\-data\fR" 4
+.IX Item "-mno-embedded-data"
+.PD
+Allocate variables to the read-only data section first if possible, then
+next in the small data section if possible, otherwise in data.  This gives
+slightly slower code than the default, but reduces the amount of \s-1RAM\s0 required
+when executing, and thus may be preferred for some embedded systems.
+.IP "\fB\-muninit\-const\-in\-rodata\fR" 4
+.IX Item "-muninit-const-in-rodata"
+.PD 0
+.IP "\fB\-mno\-uninit\-const\-in\-rodata\fR" 4
+.IX Item "-mno-uninit-const-in-rodata"
+.PD
+When used together with \fB\-membedded\-data\fR, it will always store uninitialized
+const variables in the read-only data section.
+.IP "\fB\-msingle\-float\fR" 4
+.IX Item "-msingle-float"
+.PD 0
+.IP "\fB\-mdouble\-float\fR" 4
+.IX Item "-mdouble-float"
+.PD
+The \fB\-msingle\-float\fR switch tells gcc to assume that the floating
+point coprocessor only supports single precision operations, as on the
+\&\fBr4650\fR chip.  The \fB\-mdouble\-float\fR switch permits gcc to use
+double precision operations.  This is the default.
+.IP "\fB\-mmad\fR" 4
+.IX Item "-mmad"
+.PD 0
+.IP "\fB\-mno\-mad\fR" 4
+.IX Item "-mno-mad"
+.PD
+Permit use of the \fBmad\fR, \fBmadu\fR and \fBmul\fR instructions,
+as on the \fBr4650\fR chip.
+.IP "\fB\-m4650\fR" 4
+.IX Item "-m4650"
+Turns on \fB\-msingle\-float\fR, \fB\-mmad\fR, and, at least for now,
+\&\fB\-mcpu=r4650\fR.
+.IP "\fB\-mips16\fR" 4
+.IX Item "-mips16"
+.PD 0
+.IP "\fB\-mno\-mips16\fR" 4
+.IX Item "-mno-mips16"
+.PD
+Enable 16\-bit instructions.
+.IP "\fB\-mentry\fR" 4
+.IX Item "-mentry"
+Use the entry and exit pseudo ops.  This option can only be used with
+\&\fB\-mips16\fR.
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+Compile code for the processor in little endian mode.
+The requisite libraries are assumed to exist.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+Compile code for the processor in big endian mode.
+The requisite libraries are assumed to exist.
+.IP "\fB\-G\fR \fInum\fR" 4
+.IX Item "-G num"
+Put global and static items less than or equal to \fInum\fR bytes into
+the small data or bss sections instead of the normal data or bss
+section.  This allows the assembler to emit one word memory reference
+instructions based on the global pointer (\fIgp\fR or \fI$28\fR),
+instead of the normal two words used.  By default, \fInum\fR is 8 when
+the \s-1MIPS\s0 assembler is used, and 0 when the \s-1GNU\s0 assembler is used.  The
+\&\fB\-G\fR \fInum\fR switch is also passed to the assembler and linker.
+All modules should be compiled with the same \fB\-G\fR \fInum\fR
+value.
+.IP "\fB\-nocpp\fR" 4
+.IX Item "-nocpp"
+Tell the \s-1MIPS\s0 assembler to not run its preprocessor over user
+assembler files (with a \fB.s\fR suffix) when assembling them.
+.IP "\fB\-mfix7000\fR" 4
+.IX Item "-mfix7000"
+Pass an option to gas which will cause nops to be inserted if
+the read of the destination register of an mfhi or mflo instruction
+occurs in the following two instructions.
+.IP "\fB\-no\-crt0\fR" 4
+.IX Item "-no-crt0"
+Do not include the default crt0.
+.IP "\fB\-mflush\-func=\fR\fIfunc\fR" 4
+.IX Item "-mflush-func=func"
+.PD 0
+.IP "\fB\-mno\-flush\-func\fR" 4
+.IX Item "-mno-flush-func"
+.PD
+Specifies the function to call to flush the I and D caches, or to not
+call any such function.  If called, the function must take the same
+arguments as the common \f(CW\*(C`_flush_func()\*(C'\fR, that is, the address of the
+memory range for which the cache is being flushed, the size of the
+memory range, and the number 3 (to flush both caches).  The default
+depends on the target gcc was configured for, but commonly is either
+\&\fB_flush_func\fR or \fB_\|_cpu_flush\fR.
+.IP "\fB\-mbranch\-likely\fR" 4
+.IX Item "-mbranch-likely"
+.PD 0
+.IP "\fB\-mno\-branch\-likely\fR" 4
+.IX Item "-mno-branch-likely"
+.PD
+Enable or disable use of Branch Likely instructions, regardless of the
+default for the selected architecture.  By default, Branch Likely
+instructions may be generated if they are supported by the selected
+architecture.  An exception is for the \s-1MIPS32\s0 and \s-1MIPS64\s0 architectures
+and processors which implement those architectures; for those, Branch
+Likely instructions will not be generated by default because the \s-1MIPS32\s0
+and \s-1MIPS64\s0 architectures specifically deprecate their use.
+.Sh "Intel 386 and \s-1AMD\s0 x86\-64 Options"
+.IX Subsection "Intel 386 and AMD x86-64 Options"
+These \fB\-m\fR options are defined for the i386 and x86\-64 family of
+computers:
+.IP "\fB\-mcpu=\fR\fIcpu-type\fR" 4
+.IX Item "-mcpu=cpu-type"
+Tune to \fIcpu-type\fR everything applicable about the generated code, except
+for the \s-1ABI\s0 and the set of available instructions.  The choices for
+\&\fIcpu-type\fR are \fBi386\fR, \fBi486\fR, \fBi586\fR, \fBi686\fR,
+\&\fBpentium\fR, \fBpentium-mmx\fR, \fBpentiumpro\fR, \fBpentium2\fR,
+\&\fBpentium3\fR, \fBpentium4\fR, \fBk6\fR, \fBk6\-2\fR, \fBk6\-3\fR,
+\&\fBathlon\fR, \fBathlon-tbird\fR, \fBathlon\-4\fR, \fBathlon-xp\fR,
+\&\fBathlon-mp\fR, \fBwinchip\-c6\fR, \fBwinchip2\fR and \fBc3\fR.
+.Sp
+While picking a specific \fIcpu-type\fR will schedule things appropriately
+for that particular chip, the compiler will not generate any code that
+does not run on the i386 without the \fB\-march=\fR\fIcpu-type\fR option
+being used.  \fBi586\fR is equivalent to \fBpentium\fR and \fBi686\fR
+is equivalent to \fBpentiumpro\fR.  \fBk6\fR and \fBathlon\fR are the
+\&\s-1AMD\s0 chips as opposed to the Intel ones.
+.IP "\fB\-march=\fR\fIcpu-type\fR" 4
+.IX Item "-march=cpu-type"
+Generate instructions for the machine type \fIcpu-type\fR.  The choices
+for \fIcpu-type\fR are the same as for \fB\-mcpu\fR.  Moreover,
+specifying \fB\-march=\fR\fIcpu-type\fR implies \fB\-mcpu=\fR\fIcpu-type\fR.
+.IP "\fB\-m386\fR" 4
+.IX Item "-m386"
+.PD 0
+.IP "\fB\-m486\fR" 4
+.IX Item "-m486"
+.IP "\fB\-mpentium\fR" 4
+.IX Item "-mpentium"
+.IP "\fB\-mpentiumpro\fR" 4
+.IX Item "-mpentiumpro"
+.PD
+These options are synonyms for \fB\-mcpu=i386\fR, \fB\-mcpu=i486\fR,
+\&\fB\-mcpu=pentium\fR, and \fB\-mcpu=pentiumpro\fR respectively.
+These synonyms are deprecated.
+.IP "\fB\-mfpmath=\fR\fIunit\fR" 4
+.IX Item "-mfpmath=unit"
+generate floating point arithmetics for selected unit \fIunit\fR.  the choices
+for \fIunit\fR are:
+.RS 4
+.IP "\fB387\fR" 4
+.IX Item "387"
+Use the standard 387 floating point coprocessor present majority of chips and
+emulated otherwise.  Code compiled with this option will run almost everywhere.
+The temporary results are computed in 80bit precision instead of precision
+specified by the type resulting in slightly different results compared to most
+of other chips. See \fB\-ffloat\-store\fR for more detailed description.
+.Sp
+This is the default choice for i386 compiler.
+.IP "\fBsse\fR" 4
+.IX Item "sse"
+Use scalar floating point instructions present in the \s-1SSE\s0 instruction set.
+This instruction set is supported by Pentium3 and newer chips, in the \s-1AMD\s0 line
+by Athlon\-4, Athlon-xp and Athlon-mp chips.  The earlier version of \s-1SSE\s0
+instruction set supports only single precision arithmetics, thus the double and
+extended precision arithmetics is still done using 387.  Later version, present
+only in Pentium4 and the future \s-1AMD\s0 x86\-64 chips supports double precision
+arithmetics too.
+.Sp
+For i387 you need to use \fB\-march=\fR\fIcpu-type\fR, \fB\-msse\fR or
+\&\fB\-msse2\fR switches to enable \s-1SSE\s0 extensions and make this option
+effective.  For x86\-64 compiler, these extensions are enabled by default.
+.Sp
+The resulting code should be considerably faster in majority of cases and avoid
+the numerical instability problems of 387 code, but may break some existing
+code that expects temporaries to be 80bit.
+.Sp
+This is the default choice for x86\-64 compiler.
+.IP "\fBpni\fR" 4
+.IX Item "pni"
+Use all \s-1SSE\s0 extensions enabled by \fB\-msse2\fR as well as the new
+\&\s-1SSE\s0 extensions in Prescott New Intrunctions. \fB\-mpni\fR also
+enables 2 builtin functions, \f(CW\*(C`_\|_builtin_ia32_monitor\*(C'\fR and
+\&\f(CW\*(C`_\|_builtin_ia32_mwait\*(C'\fR, for new intrunctions \f(CW\*(C`monitor\*(C'\fR and
+\&\f(CW\*(C`mwait\*(C'\fR. 
+.IP "\fBsse,387\fR" 4
+.IX Item "sse,387"
+Attempt to utilize both instruction sets at once.  This effectively double the
+amount of available registers and on chips with separate execution units for
+387 and \s-1SSE\s0 the execution resources too.  Use this option with care, as it is
+still experimental, because gcc register allocator does not model separate
+functional units well resulting in instable performance.
+.RE
+.RS 4
+.RE
+.IP "\fB\-masm=\fR\fIdialect\fR" 4
+.IX Item "-masm=dialect"
+Output asm instructions using selected \fIdialect\fR. Supported choices are
+\&\fBintel\fR or \fBatt\fR (the default one).
+.IP "\fB\-mieee\-fp\fR" 4
+.IX Item "-mieee-fp"
+.PD 0
+.IP "\fB\-mno\-ieee\-fp\fR" 4
+.IX Item "-mno-ieee-fp"
+.PD
+Control whether or not the compiler uses \s-1IEEE\s0 floating point
+comparisons.  These handle correctly the case where the result of a
+comparison is unordered.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries are not part of \s-1GCC\s0.
+Normally the facilities of the machine's usual C compiler are used, but
+this can't be done directly in cross\-compilation.  You must make your
+own arrangements to provide suitable library functions for
+cross\-compilation.
+.Sp
+On machines where a function returns floating point results in the 80387
+register stack, some floating point opcodes may be emitted even if
+\&\fB\-msoft\-float\fR is used.
+.IP "\fB\-mno\-fp\-ret\-in\-387\fR" 4
+.IX Item "-mno-fp-ret-in-387"
+Do not use the \s-1FPU\s0 registers for return values of functions.
+.Sp
+The usual calling convention has functions return values of types
+\&\f(CW\*(C`float\*(C'\fR and \f(CW\*(C`double\*(C'\fR in an \s-1FPU\s0 register, even if there
+is no \s-1FPU\s0.  The idea is that the operating system should emulate
+an \s-1FPU\s0.
+.Sp
+The option \fB\-mno\-fp\-ret\-in\-387\fR causes such values to be returned
+in ordinary \s-1CPU\s0 registers instead.
+.IP "\fB\-mno\-fancy\-math\-387\fR" 4
+.IX Item "-mno-fancy-math-387"
+Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and
+\&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387.  Specify this option to avoid
+generating those instructions.  This option is the default on FreeBSD,
+OpenBSD and NetBSD.  This option is overridden when \fB\-march\fR
+indicates that the target cpu will always have an \s-1FPU\s0 and so the
+instruction will not need emulation.  As of revision 2.6.1, these
+instructions are not generated unless you also use the
+\&\fB\-funsafe\-math\-optimizations\fR switch.
+.IP "\fB\-malign\-double\fR" 4
+.IX Item "-malign-double"
+.PD 0
+.IP "\fB\-mno\-align\-double\fR" 4
+.IX Item "-mno-align-double"
+.PD
+Control whether \s-1GCC\s0 aligns \f(CW\*(C`double\*(C'\fR, \f(CW\*(C`long double\*(C'\fR, and
+\&\f(CW\*(C`long long\*(C'\fR variables on a two word boundary or a one word
+boundary.  Aligning \f(CW\*(C`double\*(C'\fR variables on a two word boundary will
+produce code that runs somewhat faster on a \fBPentium\fR at the
+expense of more memory.
+.Sp
+\&\fBWarning:\fR if you use the \fB\-malign\-double\fR switch,
+structures containing the above types will be aligned differently than
+the published application binary interface specifications for the 386
+and will not be binary compatible with structures in code compiled
+without that switch.
+.IP "\fB\-m96bit\-long\-double\fR" 4
+.IX Item "-m96bit-long-double"
+.PD 0
+.IP "\fB\-m128bit\-long\-double\fR" 4
+.IX Item "-m128bit-long-double"
+.PD
+These switches control the size of \f(CW\*(C`long double\*(C'\fR type. The i386 
+application binary interface specifies the size to be 96 bits, 
+so \fB\-m96bit\-long\-double\fR is the default in 32 bit mode.
+.Sp
+Modern architectures (Pentium and newer) would prefer \f(CW\*(C`long double\*(C'\fR
+to be aligned to an 8 or 16 byte boundary.  In arrays or structures 
+conforming to the \s-1ABI\s0, this would not be possible.  So specifying a 
+\&\fB\-m128bit\-long\-double\fR will align \f(CW\*(C`long double\*(C'\fR
+to a 16 byte boundary by padding the \f(CW\*(C`long double\*(C'\fR with an additional
+32 bit zero. 
+.Sp
+In the x86\-64 compiler, \fB\-m128bit\-long\-double\fR is the default choice as
+its \s-1ABI\s0 specifies that \f(CW\*(C`long double\*(C'\fR is to be aligned on 16 byte boundary.
+.Sp
+Notice that neither of these options enable any extra precision over the x87
+standard of 80 bits for a \f(CW\*(C`long double\*(C'\fR. 
+.Sp
+\&\fBWarning:\fR if you override the default value for your target \s-1ABI\s0, the
+structures and arrays containing \f(CW\*(C`long double\*(C'\fR will change their size as
+well as function calling convention for function taking \f(CW\*(C`long double\*(C'\fR
+will be modified.  Hence they will not be binary compatible with arrays or
+structures in code compiled without that switch.
+.IP "\fB\-msvr3\-shlib\fR" 4
+.IX Item "-msvr3-shlib"
+.PD 0
+.IP "\fB\-mno\-svr3\-shlib\fR" 4
+.IX Item "-mno-svr3-shlib"
+.PD
+Control whether \s-1GCC\s0 places uninitialized local variables into the
+\&\f(CW\*(C`bss\*(C'\fR or \f(CW\*(C`data\*(C'\fR segments.  \fB\-msvr3\-shlib\fR places them
+into \f(CW\*(C`bss\*(C'\fR.  These options are meaningful only on System V Release 3.
+.IP "\fB\-mrtd\fR" 4
+.IX Item "-mrtd"
+Use a different function-calling convention, in which functions that
+take a fixed number of arguments return with the \f(CW\*(C`ret\*(C'\fR \fInum\fR
+instruction, which pops their arguments while returning.  This saves one
+instruction in the caller since there is no need to pop the arguments
+there.
+.Sp
+You can specify that an individual function is called with this calling
+sequence with the function attribute \fBstdcall\fR.  You can also
+override the \fB\-mrtd\fR option by using the function attribute
+\&\fBcdecl\fR.  
+.Sp
+\&\fBWarning:\fR this calling convention is incompatible with the one
+normally used on Unix, so you cannot use it if you need to call
+libraries compiled with the Unix compiler.
+.Sp
+Also, you must provide function prototypes for all functions that
+take variable numbers of arguments (including \f(CW\*(C`printf\*(C'\fR);
+otherwise incorrect code will be generated for calls to those
+functions.
+.Sp
+In addition, seriously incorrect code will result if you call a
+function with too many arguments.  (Normally, extra arguments are
+harmlessly ignored.)
+.IP "\fB\-mregparm=\fR\fInum\fR" 4
+.IX Item "-mregparm=num"
+Control how many registers are used to pass integer arguments.  By
+default, no registers are used to pass arguments, and at most 3
+registers can be used.  You can control this behavior for a specific
+function by using the function attribute \fBregparm\fR.
+.Sp
+\&\fBWarning:\fR if you use this switch, and
+\&\fInum\fR is nonzero, then you must build all modules with the same
+value, including any libraries.  This includes the system libraries and
+startup modules.
+.IP "\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR" 4
+.IX Item "-mpreferred-stack-boundary=num"
+Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
+byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
+the default is 4 (16 bytes or 128 bits), except when optimizing for code
+size (\fB\-Os\fR), in which case the default is the minimum correct
+alignment (4 bytes for x86, and 8 bytes for x86\-64).
+.Sp
+On Pentium and PentiumPro, \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long double\*(C'\fR values
+should be aligned to an 8 byte boundary (see \fB\-malign\-double\fR) or
+suffer significant run time performance penalties.  On Pentium \s-1III\s0, the
+Streaming \s-1SIMD\s0 Extension (\s-1SSE\s0) data type \f(CW\*(C`_\|_m128\*(C'\fR suffers similar
+penalties if it is not 16 byte aligned.
+.Sp
+To ensure proper alignment of this values on the stack, the stack boundary
+must be as aligned as that required by any value stored on the stack.
+Further, every function must be generated such that it keeps the stack
+aligned.  Thus calling a function compiled with a higher preferred
+stack boundary from a function compiled with a lower preferred stack
+boundary will most likely misalign the stack.  It is recommended that
+libraries that use callbacks always use the default setting.
+.Sp
+This extra alignment does consume extra stack space, and generally
+increases code size.  Code that is sensitive to stack space usage, such
+as embedded systems and operating system kernels, may want to reduce the
+preferred alignment to \fB\-mpreferred\-stack\-boundary=2\fR.
+.IP "\fB\-mmmx\fR" 4
+.IX Item "-mmmx"
+.PD 0
+.IP "\fB\-mno\-mmx\fR" 4
+.IX Item "-mno-mmx"
+.IP "\fB\-msse\fR" 4
+.IX Item "-msse"
+.IP "\fB\-mno\-sse\fR" 4
+.IX Item "-mno-sse"
+.IP "\fB\-msse2\fR" 4
+.IX Item "-msse2"
+.IP "\fB\-mno\-sse2\fR" 4
+.IX Item "-mno-sse2"
+.IP "\fB\-mpni\fR" 4
+.IX Item "-mpni"
+.IP "\fB\-mno\-pni\fR" 4
+.IX Item "-mno-pni"
+.IP "\fB\-m3dnow\fR" 4
+.IX Item "-m3dnow"
+.IP "\fB\-mno\-3dnow\fR" 4
+.IX Item "-mno-3dnow"
+.PD
+These switches enable or disable the use of built-in functions that allow
+direct access to the \s-1MMX\s0, \s-1SSE\s0 and 3Dnow extensions of the instruction set.
+.Sp
+To have \s-1SSE/SSE2\s0 instructions generated automatically from floating-point
+code, see \fB\-mfpmath=sse\fR.
+.IP "\fB\-mpush\-args\fR" 4
+.IX Item "-mpush-args"
+.PD 0
+.IP "\fB\-mno\-push\-args\fR" 4
+.IX Item "-mno-push-args"
+.PD
+Use \s-1PUSH\s0 operations to store outgoing parameters.  This method is shorter
+and usually equally fast as method using \s-1SUB/MOV\s0 operations and is enabled
+by default.  In some cases disabling it may improve performance because of
+improved scheduling and reduced dependencies.
+.IP "\fB\-maccumulate\-outgoing\-args\fR" 4
+.IX Item "-maccumulate-outgoing-args"
+If enabled, the maximum amount of space required for outgoing arguments will be
+computed in the function prologue.  This is faster on most modern CPUs
+because of reduced dependencies, improved scheduling and reduced stack usage
+when preferred stack boundary is not equal to 2.  The drawback is a notable
+increase in code size.  This switch implies \fB\-mno\-push\-args\fR.
+.IP "\fB\-mthreads\fR" 4
+.IX Item "-mthreads"
+Support thread-safe exception handling on \fBMingw32\fR.  Code that relies
+on thread-safe exception handling must compile and link all code with the
+\&\fB\-mthreads\fR option.  When compiling, \fB\-mthreads\fR defines
+\&\fB\-D_MT\fR; when linking, it links in a special thread helper library
+\&\fB\-lmingwthrd\fR which cleans up per thread exception handling data.
+.IP "\fB\-mno\-align\-stringops\fR" 4
+.IX Item "-mno-align-stringops"
+Do not align destination of inlined string operations.  This switch reduces
+code size and improves performance in case the destination is already aligned,
+but gcc don't know about it.
+.IP "\fB\-minline\-all\-stringops\fR" 4
+.IX Item "-minline-all-stringops"
+By default \s-1GCC\s0 inlines string operations only when destination is known to be
+aligned at least to 4 byte boundary.  This enables more inlining, increase code
+size, but may improve performance of code that depends on fast memcpy, strlen
+and memset for short lengths.
+.IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
+.IX Item "-momit-leaf-frame-pointer"
+Don't keep the frame pointer in a register for leaf functions.  This
+avoids the instructions to save, set up and restore frame pointers and
+makes an extra register available in leaf functions.  The option
+\&\fB\-fomit\-frame\-pointer\fR removes the frame pointer for all functions
+which might make debugging harder.
+.PP
+These \fB\-m\fR switches are supported in addition to the above
+on \s-1AMD\s0 x86\-64 processors in 64\-bit environments.
+.IP "\fB\-m32\fR" 4
+.IX Item "-m32"
+.PD 0
+.IP "\fB\-m64\fR" 4
+.IX Item "-m64"
+.PD
+Generate code for a 32\-bit or 64\-bit environment.
+The 32\-bit environment sets int, long and pointer to 32 bits and
+generates code that runs on any i386 system.
+The 64\-bit environment sets int to 32 bits and long and pointer
+to 64 bits and generates code for \s-1AMD\s0's x86\-64 architecture.
+.IP "\fB\-mno\-red\-zone\fR" 4
+.IX Item "-mno-red-zone"
+Do not use a so called red zone for x86\-64 code.  The red zone is mandated
+by the x86\-64 \s-1ABI\s0, it is a 128\-byte area beyond the location of the
+stack pointer that will not be modified by signal or interrupt handlers
+and therefore can be used for temporary data without adjusting the stack
+pointer.  The flag \fB\-mno\-red\-zone\fR disables this red zone.
+.IP "\fB\-mcmodel=small\fR" 4
+.IX Item "-mcmodel=small"
+Generate code for the small code model: the program and its symbols must
+be linked in the lower 2 \s-1GB\s0 of the address space.  Pointers are 64 bits.
+Programs can be statically or dynamically linked.  This is the default
+code model.
+.IP "\fB\-mcmodel=kernel\fR" 4
+.IX Item "-mcmodel=kernel"
+Generate code for the kernel code model.  The kernel runs in the
+negative 2 \s-1GB\s0 of the address space.
+This model has to be used for Linux kernel code.
+.IP "\fB\-mcmodel=medium\fR" 4
+.IX Item "-mcmodel=medium"
+Generate code for the medium model: The program is linked in the lower 2
+\&\s-1GB\s0 of the address space but symbols can be located anywhere in the
+address space.  Programs can be statically or dynamically linked, but
+building of shared libraries are not supported with the medium model.
+.IP "\fB\-mcmodel=large\fR" 4
+.IX Item "-mcmodel=large"
+Generate code for the large model: This model makes no assumptions
+about addresses and sizes of sections.  Currently \s-1GCC\s0 does not implement
+this model.
+.Sh "\s-1HPPA\s0 Options"
+.IX Subsection "HPPA Options"
+These \fB\-m\fR options are defined for the \s-1HPPA\s0 family of computers:
+.IP "\fB\-march=\fR\fIarchitecture-type\fR" 4
+.IX Item "-march=architecture-type"
+Generate code for the specified architecture.  The choices for
+\&\fIarchitecture-type\fR are \fB1.0\fR for \s-1PA\s0 1.0, \fB1.1\fR for \s-1PA\s0
+1.1, and \fB2.0\fR for \s-1PA\s0 2.0 processors.  Refer to
+\&\fI/usr/lib/sched.models\fR on an HP-UX system to determine the proper
+architecture option for your machine.  Code compiled for lower numbered
+architectures will run on higher numbered architectures, but not the
+other way around.
+.Sp
+\&\s-1PA\s0 2.0 support currently requires gas snapshot 19990413 or later.  The
+next release of binutils (current is 2.9.1) will probably contain \s-1PA\s0 2.0
+support.
+.IP "\fB\-mpa\-risc\-1\-0\fR" 4
+.IX Item "-mpa-risc-1-0"
+.PD 0
+.IP "\fB\-mpa\-risc\-1\-1\fR" 4
+.IX Item "-mpa-risc-1-1"
+.IP "\fB\-mpa\-risc\-2\-0\fR" 4
+.IX Item "-mpa-risc-2-0"
+.PD
+Synonyms for \fB\-march=1.0\fR, \fB\-march=1.1\fR, and \fB\-march=2.0\fR respectively.
+.IP "\fB\-mbig\-switch\fR" 4
+.IX Item "-mbig-switch"
+Generate code suitable for big switch tables.  Use this option only if
+the assembler/linker complain about out of range branches within a switch
+table.
+.IP "\fB\-mjump\-in\-delay\fR" 4
+.IX Item "-mjump-in-delay"
+Fill delay slots of function calls with unconditional jump instructions
+by modifying the return pointer for the function call to be the target
+of the conditional jump.
+.IP "\fB\-mdisable\-fpregs\fR" 4
+.IX Item "-mdisable-fpregs"
+Prevent floating point registers from being used in any manner.  This is
+necessary for compiling kernels which perform lazy context switching of
+floating point registers.  If you use this option and attempt to perform
+floating point operations, the compiler will abort.
+.IP "\fB\-mdisable\-indexing\fR" 4
+.IX Item "-mdisable-indexing"
+Prevent the compiler from using indexing address modes.  This avoids some
+rather obscure problems when compiling \s-1MIG\s0 generated code under \s-1MACH\s0.
+.IP "\fB\-mno\-space\-regs\fR" 4
+.IX Item "-mno-space-regs"
+Generate code that assumes the target has no space registers.  This allows
+\&\s-1GCC\s0 to generate faster indirect calls and use unscaled index address modes.
+.Sp
+Such code is suitable for level 0 \s-1PA\s0 systems and kernels.
+.IP "\fB\-mfast\-indirect\-calls\fR" 4
+.IX Item "-mfast-indirect-calls"
+Generate code that assumes calls never cross space boundaries.  This
+allows \s-1GCC\s0 to emit code which performs faster indirect calls.
+.Sp
+This option will not work in the presence of shared libraries or nested
+functions.
+.IP "\fB\-mlong\-load\-store\fR" 4
+.IX Item "-mlong-load-store"
+Generate 3\-instruction load and store sequences as sometimes required by
+the HP-UX 10 linker.  This is equivalent to the \fB+k\fR option to
+the \s-1HP\s0 compilers.
+.IP "\fB\-mportable\-runtime\fR" 4
+.IX Item "-mportable-runtime"
+Use the portable calling conventions proposed by \s-1HP\s0 for \s-1ELF\s0 systems.
+.IP "\fB\-mgas\fR" 4
+.IX Item "-mgas"
+Enable the use of assembler directives only \s-1GAS\s0 understands.
+.IP "\fB\-mschedule=\fR\fIcpu-type\fR" 4
+.IX Item "-mschedule=cpu-type"
+Schedule code according to the constraints for the machine type
+\&\fIcpu-type\fR.  The choices for \fIcpu-type\fR are \fB700\fR
+\&\fB7100\fR, \fB7100LC\fR, \fB7200\fR, \fB7300\fR and \fB8000\fR.  Refer
+to \fI/usr/lib/sched.models\fR on an HP-UX system to determine the
+proper scheduling option for your machine.  The default scheduling is
+\&\fB8000\fR.
+.IP "\fB\-mlinker\-opt\fR" 4
+.IX Item "-mlinker-opt"
+Enable the optimization pass in the HP-UX linker.  Note this makes symbolic
+debugging impossible.  It also triggers a bug in the HP-UX 8 and HP-UX 9
+linkers in which they give bogus error messages when linking some programs.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries are not available for all \s-1HPPA\s0
+targets.  Normally the facilities of the machine's usual C compiler are
+used, but this cannot be done directly in cross\-compilation.  You must make
+your own arrangements to provide suitable library functions for
+cross\-compilation.  The embedded target \fBhppa1.1\-*\-pro\fR
+does provide software floating point support.
+.Sp
+\&\fB\-msoft\-float\fR changes the calling convention in the output file;
+therefore, it is only useful if you compile \fIall\fR of a program with
+this option.  In particular, you need to compile \fIlibgcc.a\fR, the
+library that comes with \s-1GCC\s0, with \fB\-msoft\-float\fR in order for
+this to work.
+.IP "\fB\-msio\fR" 4
+.IX Item "-msio"
+Generate the predefine, \f(CW\*(C`_SIO\*(C'\fR, for server \s-1IO\s0.  The default is
+\&\fB\-mwsio\fR.  This generates the predefines, \f(CW\*(C`_\|_hp9000s700\*(C'\fR,
+\&\f(CW\*(C`_\|_hp9000s700_\|_\*(C'\fR and \f(CW\*(C`_WSIO\*(C'\fR, for workstation \s-1IO\s0.  These
+options are available under HP-UX and \s-1HI\-UX\s0.
+.IP "\fB\-mgnu\-ld\fR" 4
+.IX Item "-mgnu-ld"
+Use \s-1GNU\s0 ld specific options.  This passes \fB\-shared\fR to ld when
+building a shared library.  It is the default when \s-1GCC\s0 is configured,
+explicitly or implicitly, with the \s-1GNU\s0 linker.  This option does not
+have any affect on which ld is called, it only changes what parameters
+are passed to that ld.  The ld that is called is determined by the
+\&\fB\-\-with\-ld\fR configure option, gcc's program search path, and
+finally by the user's \fB\s-1PATH\s0\fR.  The linker used by \s-1GCC\s0 can be printed
+using \fBwhich `gcc \-print\-prog\-name=ld`\fR.
+.IP "\fB\-mhp\-ld\fR" 4
+.IX Item "-mhp-ld"
+Use \s-1HP\s0 ld specific options.  This passes \fB\-b\fR to ld when building
+a shared library and passes \fB+Accept TypeMismatch\fR to ld on all
+links.  It is the default when \s-1GCC\s0 is configured, explicitly or
+implicitly, with the \s-1HP\s0 linker.  This option does not have any affect on
+which ld is called, it only changes what parameters are passed to that
+ld.  The ld that is called is determined by the \fB\-\-with\-ld\fR
+configure option, gcc's program search path, and finally by the user's
+\&\fB\s-1PATH\s0\fR.  The linker used by \s-1GCC\s0 can be printed using \fBwhich
+`gcc \-print\-prog\-name=ld`\fR.
+.IP "\fB\-mlong\-calls\fR" 4
+.IX Item "-mlong-calls"
+Generate code that uses long call sequences.  This ensures that a call
+is always able to reach linker generated stubs.  The default is to generate
+long calls only when the distance from the call site to the beginning
+of the function or translation unit, as the case may be, exceeds a
+predefined limit set by the branch type being used.  The limits for
+normal calls are 7,600,000 and 240,000 bytes, respectively for the
+\&\s-1PA\s0 2.0 and \s-1PA\s0 1.X architectures.  Sibcalls are always limited at
+240,000 bytes.
+.Sp
+Distances are measured from the beginning of functions when using the
+\&\fB\-ffunction\-sections\fR option, or when using the \fB\-mgas\fR
+and \fB\-mno\-portable\-runtime\fR options together under HP-UX with
+the \s-1SOM\s0 linker.
+.Sp
+It is normally not desirable to use this option as it will degrade
+performance.  However, it may be useful in large applications,
+particularly when partial linking is used to build the application.
+.Sp
+The types of long calls used depends on the capabilities of the
+assembler and linker, and the type of code being generated.  The
+impact on systems that support long absolute calls, and long pic
+symbol-difference or pc-relative calls should be relatively small.
+However, an indirect call is used on 32\-bit \s-1ELF\s0 systems in pic code
+and it is quite long.
+.IP "\fB\-nolibdld\fR" 4
+.IX Item "-nolibdld"
+Suppress the generation of link options to search libdld.sl when the
+\&\fB\-static\fR option is specified on HP-UX 10 and later.
+.IP "\fB\-static\fR" 4
+.IX Item "-static"
+The HP-UX implementation of setlocale in libc has a dependency on
+libdld.sl.  There isn't an archive version of libdld.sl.  Thus,
+when the \fB\-static\fR option is specified, special link options
+are needed to resolve this dependency.
+.Sp
+On HP-UX 10 and later, the \s-1GCC\s0 driver adds the necessary options to
+link with libdld.sl when the \fB\-static\fR option is specified.
+This causes the resulting binary to be dynamic.  On the 64\-bit port,
+the linkers generate dynamic binaries by default in any case.  The
+\&\fB\-nolibdld\fR option can be used to prevent the \s-1GCC\s0 driver from
+adding these link options.
+.IP "\fB\-threads\fR" 4
+.IX Item "-threads"
+Add support for multithreading with the \fIdce thread\fR library
+under \s-1HP\-UX\s0.  This option sets flags for both the preprocessor and
+linker.
+.Sh "Intel 960 Options"
+.IX Subsection "Intel 960 Options"
+These \fB\-m\fR options are defined for the Intel 960 implementations:
+.IP "\fB\-m\fR\fIcpu-type\fR" 4
+.IX Item "-mcpu-type"
+Assume the defaults for the machine type \fIcpu-type\fR for some of
+the other options, including instruction scheduling, floating point
+support, and addressing modes.  The choices for \fIcpu-type\fR are
+\&\fBka\fR, \fBkb\fR, \fBmc\fR, \fBca\fR, \fBcf\fR,
+\&\fBsa\fR, and \fBsb\fR.
+The default is
+\&\fBkb\fR.
+.IP "\fB\-mnumerics\fR" 4
+.IX Item "-mnumerics"
+.PD 0
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+.PD
+The \fB\-mnumerics\fR option indicates that the processor does support
+floating-point instructions.  The \fB\-msoft\-float\fR option indicates
+that floating-point support should not be assumed.
+.IP "\fB\-mleaf\-procedures\fR" 4
+.IX Item "-mleaf-procedures"
+.PD 0
+.IP "\fB\-mno\-leaf\-procedures\fR" 4
+.IX Item "-mno-leaf-procedures"
+.PD
+Do (or do not) attempt to alter leaf procedures to be callable with the
+\&\f(CW\*(C`bal\*(C'\fR instruction as well as \f(CW\*(C`call\*(C'\fR.  This will result in more
+efficient code for explicit calls when the \f(CW\*(C`bal\*(C'\fR instruction can be
+substituted by the assembler or linker, but less efficient code in other
+cases, such as calls via function pointers, or using a linker that doesn't
+support this optimization.
+.IP "\fB\-mtail\-call\fR" 4
+.IX Item "-mtail-call"
+.PD 0
+.IP "\fB\-mno\-tail\-call\fR" 4
+.IX Item "-mno-tail-call"
+.PD
+Do (or do not) make additional attempts (beyond those of the
+machine-independent portions of the compiler) to optimize tail-recursive
+calls into branches.  You may not want to do this because the detection of
+cases where this is not valid is not totally complete.  The default is
+\&\fB\-mno\-tail\-call\fR.
+.IP "\fB\-mcomplex\-addr\fR" 4
+.IX Item "-mcomplex-addr"
+.PD 0
+.IP "\fB\-mno\-complex\-addr\fR" 4
+.IX Item "-mno-complex-addr"
+.PD
+Assume (or do not assume) that the use of a complex addressing mode is a
+win on this implementation of the i960.  Complex addressing modes may not
+be worthwhile on the K\-series, but they definitely are on the C\-series.
+The default is currently \fB\-mcomplex\-addr\fR for all processors except
+the \s-1CB\s0 and \s-1CC\s0.
+.IP "\fB\-mcode\-align\fR" 4
+.IX Item "-mcode-align"
+.PD 0
+.IP "\fB\-mno\-code\-align\fR" 4
+.IX Item "-mno-code-align"
+.PD
+Align code to 8\-byte boundaries for faster fetching (or don't bother).
+Currently turned on by default for C\-series implementations only.
+.IP "\fB\-mic\-compat\fR" 4
+.IX Item "-mic-compat"
+.PD 0
+.IP "\fB\-mic2.0\-compat\fR" 4
+.IX Item "-mic2.0-compat"
+.IP "\fB\-mic3.0\-compat\fR" 4
+.IX Item "-mic3.0-compat"
+.PD
+Enable compatibility with iC960 v2.0 or v3.0.
+.IP "\fB\-masm\-compat\fR" 4
+.IX Item "-masm-compat"
+.PD 0
+.IP "\fB\-mintel\-asm\fR" 4
+.IX Item "-mintel-asm"
+.PD
+Enable compatibility with the iC960 assembler.
+.IP "\fB\-mstrict\-align\fR" 4
+.IX Item "-mstrict-align"
+.PD 0
+.IP "\fB\-mno\-strict\-align\fR" 4
+.IX Item "-mno-strict-align"
+.PD
+Do not permit (do permit) unaligned accesses.
+.IP "\fB\-mold\-align\fR" 4
+.IX Item "-mold-align"
+Enable structure-alignment compatibility with Intel's gcc release version
+1.3 (based on gcc 1.37).  This option implies \fB\-mstrict\-align\fR.
+.IP "\fB\-mlong\-double\-64\fR" 4
+.IX Item "-mlong-double-64"
+Implement type \fBlong double\fR as 64\-bit floating point numbers.
+Without the option \fBlong double\fR is implemented by 80\-bit
+floating point numbers.  The only reason we have it because there is
+no 128\-bit \fBlong double\fR support in \fBfp\-bit.c\fR yet.  So it
+is only useful for people using soft-float targets.  Otherwise, we
+should recommend against use of it.
+.Sh "\s-1DEC\s0 Alpha Options"
+.IX Subsection "DEC Alpha Options"
+These \fB\-m\fR options are defined for the \s-1DEC\s0 Alpha implementations:
+.IP "\fB\-mno\-soft\-float\fR" 4
+.IX Item "-mno-soft-float"
+.PD 0
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+.PD
+Use (do not use) the hardware floating-point instructions for
+floating-point operations.  When \fB\-msoft\-float\fR is specified,
+functions in \fIlibgcc.a\fR will be used to perform floating-point
+operations.  Unless they are replaced by routines that emulate the
+floating-point operations, or compiled in such a way as to call such
+emulations routines, these routines will issue floating-point
+operations.   If you are compiling for an Alpha without floating-point
+operations, you must ensure that the library is built so as not to call
+them.
+.Sp
+Note that Alpha implementations without floating-point operations are
+required to have floating-point registers.
+.IP "\fB\-mfp\-reg\fR" 4
+.IX Item "-mfp-reg"
+.PD 0
+.IP "\fB\-mno\-fp\-regs\fR" 4
+.IX Item "-mno-fp-regs"
+.PD
+Generate code that uses (does not use) the floating-point register set.
+\&\fB\-mno\-fp\-regs\fR implies \fB\-msoft\-float\fR.  If the floating-point
+register set is not used, floating point operands are passed in integer
+registers as if they were integers and floating-point results are passed
+in \f(CW$0\fR instead of \f(CW$f0\fR.  This is a non-standard calling sequence,
+so any function with a floating-point argument or return value called by code
+compiled with \fB\-mno\-fp\-regs\fR must also be compiled with that
+option.
+.Sp
+A typical use of this option is building a kernel that does not use,
+and hence need not save and restore, any floating-point registers.
+.IP "\fB\-mieee\fR" 4
+.IX Item "-mieee"
+The Alpha architecture implements floating-point hardware optimized for
+maximum performance.  It is mostly compliant with the \s-1IEEE\s0 floating
+point standard.  However, for full compliance, software assistance is
+required.  This option generates code fully \s-1IEEE\s0 compliant code
+\&\fIexcept\fR that the \fIinexact-flag\fR is not maintained (see below).
+If this option is turned on, the preprocessor macro \f(CW\*(C`_IEEE_FP\*(C'\fR is
+defined during compilation.  The resulting code is less efficient but is
+able to correctly support denormalized numbers and exceptional \s-1IEEE\s0
+values such as not-a-number and plus/minus infinity.  Other Alpha
+compilers call this option \fB\-ieee_with_no_inexact\fR.
+.IP "\fB\-mieee\-with\-inexact\fR" 4
+.IX Item "-mieee-with-inexact"
+This is like \fB\-mieee\fR except the generated code also maintains
+the \s-1IEEE\s0 \fIinexact-flag\fR.  Turning on this option causes the
+generated code to implement fully-compliant \s-1IEEE\s0 math.  In addition to
+\&\f(CW\*(C`_IEEE_FP\*(C'\fR, \f(CW\*(C`_IEEE_FP_EXACT\*(C'\fR is defined as a preprocessor
+macro.  On some Alpha implementations the resulting code may execute
+significantly slower than the code generated by default.  Since there is
+very little code that depends on the \fIinexact-flag\fR, you should
+normally not specify this option.  Other Alpha compilers call this
+option \fB\-ieee_with_inexact\fR.
+.IP "\fB\-mfp\-trap\-mode=\fR\fItrap-mode\fR" 4
+.IX Item "-mfp-trap-mode=trap-mode"
+This option controls what floating-point related traps are enabled.
+Other Alpha compilers call this option \fB\-fptm\fR \fItrap-mode\fR.
+The trap mode can be set to one of four values:
+.RS 4
+.IP "\fBn\fR" 4
+.IX Item "n"
+This is the default (normal) setting.  The only traps that are enabled
+are the ones that cannot be disabled in software (e.g., division by zero
+trap).
+.IP "\fBu\fR" 4
+.IX Item "u"
+In addition to the traps enabled by \fBn\fR, underflow traps are enabled
+as well.
+.IP "\fBsu\fR" 4
+.IX Item "su"
+Like \fBsu\fR, but the instructions are marked to be safe for software
+completion (see Alpha architecture manual for details).
+.IP "\fBsui\fR" 4
+.IX Item "sui"
+Like \fBsu\fR, but inexact traps are enabled as well.
+.RE
+.RS 4
+.RE
+.IP "\fB\-mfp\-rounding\-mode=\fR\fIrounding-mode\fR" 4
+.IX Item "-mfp-rounding-mode=rounding-mode"
+Selects the \s-1IEEE\s0 rounding mode.  Other Alpha compilers call this option
+\&\fB\-fprm\fR \fIrounding-mode\fR.  The \fIrounding-mode\fR can be one
+of:
+.RS 4
+.IP "\fBn\fR" 4
+.IX Item "n"
+Normal \s-1IEEE\s0 rounding mode.  Floating point numbers are rounded towards
+the nearest machine number or towards the even machine number in case
+of a tie.
+.IP "\fBm\fR" 4
+.IX Item "m"
+Round towards minus infinity.
+.IP "\fBc\fR" 4
+.IX Item "c"
+Chopped rounding mode.  Floating point numbers are rounded towards zero.
+.IP "\fBd\fR" 4
+.IX Item "d"
+Dynamic rounding mode.  A field in the floating point control register
+(\fIfpcr\fR, see Alpha architecture reference manual) controls the
+rounding mode in effect.  The C library initializes this register for
+rounding towards plus infinity.  Thus, unless your program modifies the
+\&\fIfpcr\fR, \fBd\fR corresponds to round towards plus infinity.
+.RE
+.RS 4
+.RE
+.IP "\fB\-mtrap\-precision=\fR\fItrap-precision\fR" 4
+.IX Item "-mtrap-precision=trap-precision"
+In the Alpha architecture, floating point traps are imprecise.  This
+means without software assistance it is impossible to recover from a
+floating trap and program execution normally needs to be terminated.
+\&\s-1GCC\s0 can generate code that can assist operating system trap handlers
+in determining the exact location that caused a floating point trap.
+Depending on the requirements of an application, different levels of
+precisions can be selected:
+.RS 4
+.IP "\fBp\fR" 4
+.IX Item "p"
+Program precision.  This option is the default and means a trap handler
+can only identify which program caused a floating point exception.
+.IP "\fBf\fR" 4
+.IX Item "f"
+Function precision.  The trap handler can determine the function that
+caused a floating point exception.
+.IP "\fBi\fR" 4
+.IX Item "i"
+Instruction precision.  The trap handler can determine the exact
+instruction that caused a floating point exception.
+.RE
+.RS 4
+.Sp
+Other Alpha compilers provide the equivalent options called
+\&\fB\-scope_safe\fR and \fB\-resumption_safe\fR.
+.RE
+.IP "\fB\-mieee\-conformant\fR" 4
+.IX Item "-mieee-conformant"
+This option marks the generated code as \s-1IEEE\s0 conformant.  You must not
+use this option unless you also specify \fB\-mtrap\-precision=i\fR and either
+\&\fB\-mfp\-trap\-mode=su\fR or \fB\-mfp\-trap\-mode=sui\fR.  Its only effect
+is to emit the line \fB.eflag 48\fR in the function prologue of the
+generated assembly file.  Under \s-1DEC\s0 Unix, this has the effect that
+IEEE-conformant math library routines will be linked in.
+.IP "\fB\-mbuild\-constants\fR" 4
+.IX Item "-mbuild-constants"
+Normally \s-1GCC\s0 examines a 32\- or 64\-bit integer constant to
+see if it can construct it from smaller constants in two or three
+instructions.  If it cannot, it will output the constant as a literal and
+generate code to load it from the data segment at runtime.
+.Sp
+Use this option to require \s-1GCC\s0 to construct \fIall\fR integer constants
+using code, even if it takes more instructions (the maximum is six).
+.Sp
+You would typically use this option to build a shared library dynamic
+loader.  Itself a shared library, it must relocate itself in memory
+before it can find the variables and constants in its own data segment.
+.IP "\fB\-malpha\-as\fR" 4
+.IX Item "-malpha-as"
+.PD 0
+.IP "\fB\-mgas\fR" 4
+.IX Item "-mgas"
+.PD
+Select whether to generate code to be assembled by the vendor-supplied
+assembler (\fB\-malpha\-as\fR) or by the \s-1GNU\s0 assembler \fB\-mgas\fR.
+.IP "\fB\-mbwx\fR" 4
+.IX Item "-mbwx"
+.PD 0
+.IP "\fB\-mno\-bwx\fR" 4
+.IX Item "-mno-bwx"
+.IP "\fB\-mcix\fR" 4
+.IX Item "-mcix"
+.IP "\fB\-mno\-cix\fR" 4
+.IX Item "-mno-cix"
+.IP "\fB\-mfix\fR" 4
+.IX Item "-mfix"
+.IP "\fB\-mno\-fix\fR" 4
+.IX Item "-mno-fix"
+.IP "\fB\-mmax\fR" 4
+.IX Item "-mmax"
+.IP "\fB\-mno\-max\fR" 4
+.IX Item "-mno-max"
+.PD
+Indicate whether \s-1GCC\s0 should generate code to use the optional \s-1BWX\s0,
+\&\s-1CIX\s0, \s-1FIX\s0 and \s-1MAX\s0 instruction sets.  The default is to use the instruction
+sets supported by the \s-1CPU\s0 type specified via \fB\-mcpu=\fR option or that
+of the \s-1CPU\s0 on which \s-1GCC\s0 was built if none was specified.
+.IP "\fB\-mfloat\-vax\fR" 4
+.IX Item "-mfloat-vax"
+.PD 0
+.IP "\fB\-mfloat\-ieee\fR" 4
+.IX Item "-mfloat-ieee"
+.PD
+Generate code that uses (does not use) \s-1VAX\s0 F and G floating point
+arithmetic instead of \s-1IEEE\s0 single and double precision.
+.IP "\fB\-mexplicit\-relocs\fR" 4
+.IX Item "-mexplicit-relocs"
+.PD 0
+.IP "\fB\-mno\-explicit\-relocs\fR" 4
+.IX Item "-mno-explicit-relocs"
+.PD
+Older Alpha assemblers provided no way to generate symbol relocations
+except via assembler macros.  Use of these macros does not allow
+optimal instruction scheduling.  \s-1GNU\s0 binutils as of version 2.12
+supports a new syntax that allows the compiler to explicitly mark
+which relocations should apply to which instructions.  This option
+is mostly useful for debugging, as \s-1GCC\s0 detects the capabilities of
+the assembler when it is built and sets the default accordingly.
+.IP "\fB\-msmall\-data\fR" 4
+.IX Item "-msmall-data"
+.PD 0
+.IP "\fB\-mlarge\-data\fR" 4
+.IX Item "-mlarge-data"
+.PD
+When \fB\-mexplicit\-relocs\fR is in effect, static data is
+accessed via \fIgp-relative\fR relocations.  When \fB\-msmall\-data\fR
+is used, objects 8 bytes long or smaller are placed in a \fIsmall data area\fR
+(the \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR sections) and are accessed via
+16\-bit relocations off of the \f(CW$gp\fR register.  This limits the
+size of the small data area to 64KB, but allows the variables to be
+directly accessed via a single instruction.
+.Sp
+The default is \fB\-mlarge\-data\fR.  With this option the data area
+is limited to just below 2GB.  Programs that require more than 2GB of
+data must use \f(CW\*(C`malloc\*(C'\fR or \f(CW\*(C`mmap\*(C'\fR to allocate the data in the
+heap instead of in the program's data segment.
+.Sp
+When generating code for shared libraries, \fB\-fpic\fR implies
+\&\fB\-msmall\-data\fR and \fB\-fPIC\fR implies \fB\-mlarge\-data\fR.
+.IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
+.IX Item "-mcpu=cpu_type"
+Set the instruction set and instruction scheduling parameters for
+machine type \fIcpu_type\fR.  You can specify either the \fB\s-1EV\s0\fR
+style name or the corresponding chip number.  \s-1GCC\s0 supports scheduling
+parameters for the \s-1EV4\s0, \s-1EV5\s0 and \s-1EV6\s0 family of processors and will
+choose the default values for the instruction set from the processor
+you specify.  If you do not specify a processor type, \s-1GCC\s0 will default
+to the processor on which the compiler was built.
+.Sp
+Supported values for \fIcpu_type\fR are
+.RS 4
+.IP "\fBev4\fR" 4
+.IX Item "ev4"
+.PD 0
+.IP "\fBev45\fR" 4
+.IX Item "ev45"
+.IP "\fB21064\fR" 4
+.IX Item "21064"
+.PD
+Schedules as an \s-1EV4\s0 and has no instruction set extensions.
+.IP "\fBev5\fR" 4
+.IX Item "ev5"
+.PD 0
+.IP "\fB21164\fR" 4
+.IX Item "21164"
+.PD
+Schedules as an \s-1EV5\s0 and has no instruction set extensions.
+.IP "\fBev56\fR" 4
+.IX Item "ev56"
+.PD 0
+.IP "\fB21164a\fR" 4
+.IX Item "21164a"
+.PD
+Schedules as an \s-1EV5\s0 and supports the \s-1BWX\s0 extension.
+.IP "\fBpca56\fR" 4
+.IX Item "pca56"
+.PD 0
+.IP "\fB21164pc\fR" 4
+.IX Item "21164pc"
+.IP "\fB21164PC\fR" 4
+.IX Item "21164PC"
+.PD
+Schedules as an \s-1EV5\s0 and supports the \s-1BWX\s0 and \s-1MAX\s0 extensions.
+.IP "\fBev6\fR" 4
+.IX Item "ev6"
+.PD 0
+.IP "\fB21264\fR" 4
+.IX Item "21264"
+.PD
+Schedules as an \s-1EV6\s0 and supports the \s-1BWX\s0, \s-1FIX\s0, and \s-1MAX\s0 extensions.
+.IP "\fBev67\fR" 4
+.IX Item "ev67"
+.PD 0
+.IP "\fB21264a\fR" 4
+.IX Item "21264a"
+.PD
+Schedules as an \s-1EV6\s0 and supports the \s-1BWX\s0, \s-1CIX\s0, \s-1FIX\s0, and \s-1MAX\s0 extensions.
+.RE
+.RS 4
+.RE
+.IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
+.IX Item "-mtune=cpu_type"
+Set only the instruction scheduling parameters for machine type
+\&\fIcpu_type\fR.  The instruction set is not changed.
+.IP "\fB\-mmemory\-latency=\fR\fItime\fR" 4
+.IX Item "-mmemory-latency=time"
+Sets the latency the scheduler should assume for typical memory
+references as seen by the application.  This number is highly
+dependent on the memory access patterns used by the application
+and the size of the external cache on the machine.
+.Sp
+Valid options for \fItime\fR are
+.RS 4
+.IP "\fInumber\fR" 4
+.IX Item "number"
+A decimal number representing clock cycles.
+.IP "\fBL1\fR" 4
+.IX Item "L1"
+.PD 0
+.IP "\fBL2\fR" 4
+.IX Item "L2"
+.IP "\fBL3\fR" 4
+.IX Item "L3"
+.IP "\fBmain\fR" 4
+.IX Item "main"
+.PD
+The compiler contains estimates of the number of clock cycles for
+``typical'' \s-1EV4\s0 & \s-1EV5\s0 hardware for the Level 1, 2 & 3 caches
+(also called Dcache, Scache, and Bcache), as well as to main memory.
+Note that L3 is only valid for \s-1EV5\s0.
+.RE
+.RS 4
+.RE
+.Sh "\s-1DEC\s0 Alpha/VMS Options"
+.IX Subsection "DEC Alpha/VMS Options"
+These \fB\-m\fR options are defined for the \s-1DEC\s0 Alpha/VMS implementations:
+.IP "\fB\-mvms\-return\-codes\fR" 4
+.IX Item "-mvms-return-codes"
+Return \s-1VMS\s0 condition codes from main.  The default is to return \s-1POSIX\s0
+style condition (e.g. error) codes.
+.Sh "H8/300 Options"
+.IX Subsection "H8/300 Options"
+These \fB\-m\fR options are defined for the H8/300 implementations:
+.IP "\fB\-mrelax\fR" 4
+.IX Item "-mrelax"
+Shorten some address references at link time, when possible; uses the
+linker option \fB\-relax\fR.  
+.IP "\fB\-mh\fR" 4
+.IX Item "-mh"
+Generate code for the H8/300H.
+.IP "\fB\-ms\fR" 4
+.IX Item "-ms"
+Generate code for the H8S.
+.IP "\fB\-mn\fR" 4
+.IX Item "-mn"
+Generate code for the H8S and H8/300H in the normal mode.  This switch
+must be used either with \-mh or \-ms.
+.IP "\fB\-ms2600\fR" 4
+.IX Item "-ms2600"
+Generate code for the H8S/2600.  This switch must be used with \fB\-ms\fR.
+.IP "\fB\-mint32\fR" 4
+.IX Item "-mint32"
+Make \f(CW\*(C`int\*(C'\fR data 32 bits by default.
+.IP "\fB\-malign\-300\fR" 4
+.IX Item "-malign-300"
+On the H8/300H and H8S, use the same alignment rules as for the H8/300.
+The default for the H8/300H and H8S is to align longs and floats on 4
+byte boundaries.
+\&\fB\-malign\-300\fR causes them to be aligned on 2 byte boundaries.
+This option has no effect on the H8/300.
+.Sh "\s-1SH\s0 Options"
+.IX Subsection "SH Options"
+These \fB\-m\fR options are defined for the \s-1SH\s0 implementations:
+.IP "\fB\-m1\fR" 4
+.IX Item "-m1"
+Generate code for the \s-1SH1\s0.
+.IP "\fB\-m2\fR" 4
+.IX Item "-m2"
+Generate code for the \s-1SH2\s0.
+.IP "\fB\-m3\fR" 4
+.IX Item "-m3"
+Generate code for the \s-1SH3\s0.
+.IP "\fB\-m3e\fR" 4
+.IX Item "-m3e"
+Generate code for the SH3e.
+.IP "\fB\-m4\-nofpu\fR" 4
+.IX Item "-m4-nofpu"
+Generate code for the \s-1SH4\s0 without a floating-point unit.
+.IP "\fB\-m4\-single\-only\fR" 4
+.IX Item "-m4-single-only"
+Generate code for the \s-1SH4\s0 with a floating-point unit that only
+supports single-precision arithmetic.
+.IP "\fB\-m4\-single\fR" 4
+.IX Item "-m4-single"
+Generate code for the \s-1SH4\s0 assuming the floating-point unit is in
+single-precision mode by default.
+.IP "\fB\-m4\fR" 4
+.IX Item "-m4"
+Generate code for the \s-1SH4\s0.
+.IP "\fB\-mb\fR" 4
+.IX Item "-mb"
+Compile code for the processor in big endian mode.
+.IP "\fB\-ml\fR" 4
+.IX Item "-ml"
+Compile code for the processor in little endian mode.
+.IP "\fB\-mdalign\fR" 4
+.IX Item "-mdalign"
+Align doubles at 64\-bit boundaries.  Note that this changes the calling
+conventions, and thus some functions from the standard C library will
+not work unless you recompile it first with \fB\-mdalign\fR.
+.IP "\fB\-mrelax\fR" 4
+.IX Item "-mrelax"
+Shorten some address references at link time, when possible; uses the
+linker option \fB\-relax\fR.
+.IP "\fB\-mbigtable\fR" 4
+.IX Item "-mbigtable"
+Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
+16\-bit offsets.
+.IP "\fB\-mfmovd\fR" 4
+.IX Item "-mfmovd"
+Enable the use of the instruction \f(CW\*(C`fmovd\*(C'\fR.
+.IP "\fB\-mhitachi\fR" 4
+.IX Item "-mhitachi"
+Comply with the calling conventions defined by Renesas.
+.IP "\fB\-mnomacsave\fR" 4
+.IX Item "-mnomacsave"
+Mark the \f(CW\*(C`MAC\*(C'\fR register as call\-clobbered, even if
+\&\fB\-mhitachi\fR is given.
+.IP "\fB\-mieee\fR" 4
+.IX Item "-mieee"
+Increase IEEE-compliance of floating-point code.
+.IP "\fB\-misize\fR" 4
+.IX Item "-misize"
+Dump instruction size and location in the assembly code.
+.IP "\fB\-mpadstruct\fR" 4
+.IX Item "-mpadstruct"
+This option is deprecated.  It pads structures to multiple of 4 bytes,
+which is incompatible with the \s-1SH\s0 \s-1ABI\s0.
+.IP "\fB\-mspace\fR" 4
+.IX Item "-mspace"
+Optimize for space instead of speed.  Implied by \fB\-Os\fR.
+.IP "\fB\-mprefergot\fR" 4
+.IX Item "-mprefergot"
+When generating position-independent code, emit function calls using
+the Global Offset Table instead of the Procedure Linkage Table.
+.IP "\fB\-musermode\fR" 4
+.IX Item "-musermode"
+Generate a library function call to invalidate instruction cache
+entries, after fixing up a trampoline.  This library function call
+doesn't assume it can write to the whole memory address space.  This
+is the default when the target is \f(CW\*(C`sh\-*\-linux*\*(C'\fR.
+.Sh "Options for System V"
+.IX Subsection "Options for System V"
+These additional options are available on System V Release 4 for
+compatibility with other compilers on those systems:
+.IP "\fB\-G\fR" 4
+.IX Item "-G"
+Create a shared object.
+It is recommended that \fB\-symbolic\fR or \fB\-shared\fR be used instead.
+.IP "\fB\-Qy\fR" 4
+.IX Item "-Qy"
+Identify the versions of each tool used by the compiler, in a
+\&\f(CW\*(C`.ident\*(C'\fR assembler directive in the output.
+.IP "\fB\-Qn\fR" 4
+.IX Item "-Qn"
+Refrain from adding \f(CW\*(C`.ident\*(C'\fR directives to the output file (this is
+the default).
+.IP "\fB\-YP,\fR\fIdirs\fR" 4
+.IX Item "-YP,dirs"
+Search the directories \fIdirs\fR, and no others, for libraries
+specified with \fB\-l\fR.
+.IP "\fB\-Ym,\fR\fIdir\fR" 4
+.IX Item "-Ym,dir"
+Look in the directory \fIdir\fR to find the M4 preprocessor.
+The assembler uses this option.
+.Sh "TMS320C3x/C4x Options"
+.IX Subsection "TMS320C3x/C4x Options"
+These \fB\-m\fR options are defined for TMS320C3x/C4x implementations:
+.IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
+.IX Item "-mcpu=cpu_type"
+Set the instruction set, register set, and instruction scheduling
+parameters for machine type \fIcpu_type\fR.  Supported values for
+\&\fIcpu_type\fR are \fBc30\fR, \fBc31\fR, \fBc32\fR, \fBc40\fR, and
+\&\fBc44\fR.  The default is \fBc40\fR to generate code for the
+\&\s-1TMS320C40\s0.
+.IP "\fB\-mbig\-memory\fR" 4
+.IX Item "-mbig-memory"
+.PD 0
+.IP "\fB\-mbig\fR" 4
+.IX Item "-mbig"
+.IP "\fB\-msmall\-memory\fR" 4
+.IX Item "-msmall-memory"
+.IP "\fB\-msmall\fR" 4
+.IX Item "-msmall"
+.PD
+Generates code for the big or small memory model.  The small memory
+model assumed that all data fits into one 64K word page.  At run-time
+the data page (\s-1DP\s0) register must be set to point to the 64K page
+containing the .bss and .data program sections.  The big memory model is
+the default and requires reloading of the \s-1DP\s0 register for every direct
+memory access.
+.IP "\fB\-mbk\fR" 4
+.IX Item "-mbk"
+.PD 0
+.IP "\fB\-mno\-bk\fR" 4
+.IX Item "-mno-bk"
+.PD
+Allow (disallow) allocation of general integer operands into the block
+count register \s-1BK\s0.
+.IP "\fB\-mdb\fR" 4
+.IX Item "-mdb"
+.PD 0
+.IP "\fB\-mno\-db\fR" 4
+.IX Item "-mno-db"
+.PD
+Enable (disable) generation of code using decrement and branch,
+DBcond(D), instructions.  This is enabled by default for the C4x.  To be
+on the safe side, this is disabled for the C3x, since the maximum
+iteration count on the C3x is 2^{23 + 1} (but who iterates loops more than
+2^{23} times on the C3x?).  Note that \s-1GCC\s0 will try to reverse a loop so
+that it can utilize the decrement and branch instruction, but will give
+up if there is more than one memory reference in the loop.  Thus a loop
+where the loop counter is decremented can generate slightly more
+efficient code, in cases where the \s-1RPTB\s0 instruction cannot be utilized.
+.IP "\fB\-mdp\-isr\-reload\fR" 4
+.IX Item "-mdp-isr-reload"
+.PD 0
+.IP "\fB\-mparanoid\fR" 4
+.IX Item "-mparanoid"
+.PD
+Force the \s-1DP\s0 register to be saved on entry to an interrupt service
+routine (\s-1ISR\s0), reloaded to point to the data section, and restored on
+exit from the \s-1ISR\s0.  This should not be required unless someone has
+violated the small memory model by modifying the \s-1DP\s0 register, say within
+an object library.
+.IP "\fB\-mmpyi\fR" 4
+.IX Item "-mmpyi"
+.PD 0
+.IP "\fB\-mno\-mpyi\fR" 4
+.IX Item "-mno-mpyi"
+.PD
+For the C3x use the 24\-bit \s-1MPYI\s0 instruction for integer multiplies
+instead of a library call to guarantee 32\-bit results.  Note that if one
+of the operands is a constant, then the multiplication will be performed
+using shifts and adds.  If the \fB\-mmpyi\fR option is not specified for the C3x,
+then squaring operations are performed inline instead of a library call.
+.IP "\fB\-mfast\-fix\fR" 4
+.IX Item "-mfast-fix"
+.PD 0
+.IP "\fB\-mno\-fast\-fix\fR" 4
+.IX Item "-mno-fast-fix"
+.PD
+The C3x/C4x \s-1FIX\s0 instruction to convert a floating point value to an
+integer value chooses the nearest integer less than or equal to the
+floating point value rather than to the nearest integer.  Thus if the
+floating point number is negative, the result will be incorrectly
+truncated an additional code is necessary to detect and correct this
+case.  This option can be used to disable generation of the additional
+code required to correct the result.
+.IP "\fB\-mrptb\fR" 4
+.IX Item "-mrptb"
+.PD 0
+.IP "\fB\-mno\-rptb\fR" 4
+.IX Item "-mno-rptb"
+.PD
+Enable (disable) generation of repeat block sequences using the \s-1RPTB\s0
+instruction for zero overhead looping.  The \s-1RPTB\s0 construct is only used
+for innermost loops that do not call functions or jump across the loop
+boundaries.  There is no advantage having nested \s-1RPTB\s0 loops due to the
+overhead required to save and restore the \s-1RC\s0, \s-1RS\s0, and \s-1RE\s0 registers.
+This is enabled by default with \fB\-O2\fR.
+.IP "\fB\-mrpts=\fR\fIcount\fR" 4
+.IX Item "-mrpts=count"
+.PD 0
+.IP "\fB\-mno\-rpts\fR" 4
+.IX Item "-mno-rpts"
+.PD
+Enable (disable) the use of the single instruction repeat instruction
+\&\s-1RPTS\s0.  If a repeat block contains a single instruction, and the loop
+count can be guaranteed to be less than the value \fIcount\fR, \s-1GCC\s0 will
+emit a \s-1RPTS\s0 instruction instead of a \s-1RPTB\s0.  If no value is specified,
+then a \s-1RPTS\s0 will be emitted even if the loop count cannot be determined
+at compile time.  Note that the repeated instruction following \s-1RPTS\s0 does
+not have to be reloaded from memory each iteration, thus freeing up the
+\&\s-1CPU\s0 buses for operands.  However, since interrupts are blocked by this
+instruction, it is disabled by default.
+.IP "\fB\-mloop\-unsigned\fR" 4
+.IX Item "-mloop-unsigned"
+.PD 0
+.IP "\fB\-mno\-loop\-unsigned\fR" 4
+.IX Item "-mno-loop-unsigned"
+.PD
+The maximum iteration count when using \s-1RPTS\s0 and \s-1RPTB\s0 (and \s-1DB\s0 on the C40)
+is 2^{31 + 1} since these instructions test if the iteration count is
+negative to terminate the loop.  If the iteration count is unsigned
+there is a possibility than the 2^{31 + 1} maximum iteration count may be
+exceeded.  This switch allows an unsigned iteration count.
+.IP "\fB\-mti\fR" 4
+.IX Item "-mti"
+Try to emit an assembler syntax that the \s-1TI\s0 assembler (asm30) is happy
+with.  This also enforces compatibility with the \s-1API\s0 employed by the \s-1TI\s0
+C3x C compiler.  For example, long doubles are passed as structures
+rather than in floating point registers.
+.IP "\fB\-mregparm\fR" 4
+.IX Item "-mregparm"
+.PD 0
+.IP "\fB\-mmemparm\fR" 4
+.IX Item "-mmemparm"
+.PD
+Generate code that uses registers (stack) for passing arguments to functions.
+By default, arguments are passed in registers where possible rather
+than by pushing arguments on to the stack.
+.IP "\fB\-mparallel\-insns\fR" 4
+.IX Item "-mparallel-insns"
+.PD 0
+.IP "\fB\-mno\-parallel\-insns\fR" 4
+.IX Item "-mno-parallel-insns"
+.PD
+Allow the generation of parallel instructions.  This is enabled by
+default with \fB\-O2\fR.
+.IP "\fB\-mparallel\-mpy\fR" 4
+.IX Item "-mparallel-mpy"
+.PD 0
+.IP "\fB\-mno\-parallel\-mpy\fR" 4
+.IX Item "-mno-parallel-mpy"
+.PD
+Allow the generation of MPY||ADD and MPY||SUB parallel instructions,
+provided \fB\-mparallel\-insns\fR is also specified.  These instructions have
+tight register constraints which can pessimize the code generation
+of large functions.
+.Sh "V850 Options"
+.IX Subsection "V850 Options"
+These \fB\-m\fR options are defined for V850 implementations:
+.IP "\fB\-mlong\-calls\fR" 4
+.IX Item "-mlong-calls"
+.PD 0
+.IP "\fB\-mno\-long\-calls\fR" 4
+.IX Item "-mno-long-calls"
+.PD
+Treat all calls as being far away (near).  If calls are assumed to be
+far away, the compiler will always load the functions address up into a
+register, and call indirect through the pointer.
+.IP "\fB\-mno\-ep\fR" 4
+.IX Item "-mno-ep"
+.PD 0
+.IP "\fB\-mep\fR" 4
+.IX Item "-mep"
+.PD
+Do not optimize (do optimize) basic blocks that use the same index
+pointer 4 or more times to copy pointer into the \f(CW\*(C`ep\*(C'\fR register, and
+use the shorter \f(CW\*(C`sld\*(C'\fR and \f(CW\*(C`sst\*(C'\fR instructions.  The \fB\-mep\fR
+option is on by default if you optimize.
+.IP "\fB\-mno\-prolog\-function\fR" 4
+.IX Item "-mno-prolog-function"
+.PD 0
+.IP "\fB\-mprolog\-function\fR" 4
+.IX Item "-mprolog-function"
+.PD
+Do not use (do use) external functions to save and restore registers
+at the prologue and epilogue of a function.  The external functions
+are slower, but use less code space if more than one function saves
+the same number of registers.  The \fB\-mprolog\-function\fR option
+is on by default if you optimize.
+.IP "\fB\-mspace\fR" 4
+.IX Item "-mspace"
+Try to make the code as small as possible.  At present, this just turns
+on the \fB\-mep\fR and \fB\-mprolog\-function\fR options.
+.IP "\fB\-mtda=\fR\fIn\fR" 4
+.IX Item "-mtda=n"
+Put static or global variables whose size is \fIn\fR bytes or less into
+the tiny data area that register \f(CW\*(C`ep\*(C'\fR points to.  The tiny data
+area can hold up to 256 bytes in total (128 bytes for byte references).
+.IP "\fB\-msda=\fR\fIn\fR" 4
+.IX Item "-msda=n"
+Put static or global variables whose size is \fIn\fR bytes or less into
+the small data area that register \f(CW\*(C`gp\*(C'\fR points to.  The small data
+area can hold up to 64 kilobytes.
+.IP "\fB\-mzda=\fR\fIn\fR" 4
+.IX Item "-mzda=n"
+Put static or global variables whose size is \fIn\fR bytes or less into
+the first 32 kilobytes of memory.
+.IP "\fB\-mv850\fR" 4
+.IX Item "-mv850"
+Specify that the target processor is the V850.
+.IP "\fB\-mbig\-switch\fR" 4
+.IX Item "-mbig-switch"
+Generate code suitable for big switch tables.  Use this option only if
+the assembler/linker complain about out of range branches within a switch
+table.
+.IP "\fB\-mapp\-regs\fR" 4
+.IX Item "-mapp-regs"
+This option will cause r2 and r5 to be used in the code generated by
+the compiler.  This setting is the default.
+.IP "\fB\-mno\-app\-regs\fR" 4
+.IX Item "-mno-app-regs"
+This option will cause r2 and r5 to be treated as fixed registers.
+.IP "\fB\-mv850e\fR" 4
+.IX Item "-mv850e"
+Specify that the target processor is the V850E.  The preprocessor
+constant \fB_\|_v850e_\|_\fR will be defined if this option is used.
+.Sp
+If neither \fB\-mv850\fR nor \fB\-mv850e\fR are defined
+then a default target processor will be chosen and the relevant
+\&\fB_\|_v850*_\|_\fR preprocessor constant will be defined.
+.Sp
+The preprocessor constants \fB_\|_v850\fR and \fB_\|_v851_\|_\fR are always
+defined, regardless of which processor variant is the target.
+.IP "\fB\-mdisable\-callt\fR" 4
+.IX Item "-mdisable-callt"
+This option will suppress generation of the \s-1CALLT\s0 instruction for the
+v850e flavors of the v850 architecture.  The default is
+\&\fB\-mno\-disable\-callt\fR which allows the \s-1CALLT\s0 instruction to be used.
+.Sh "\s-1ARC\s0 Options"
+.IX Subsection "ARC Options"
+These options are defined for \s-1ARC\s0 implementations:
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+Compile code for little endian mode.  This is the default.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+Compile code for big endian mode.
+.IP "\fB\-mmangle\-cpu\fR" 4
+.IX Item "-mmangle-cpu"
+Prepend the name of the cpu to all public symbol names.
+In multiple-processor systems, there are many \s-1ARC\s0 variants with different
+instruction and register set characteristics.  This flag prevents code
+compiled for one cpu to be linked with code compiled for another.
+No facility exists for handling variants that are ``almost identical''.
+This is an all or nothing option.
+.IP "\fB\-mcpu=\fR\fIcpu\fR" 4
+.IX Item "-mcpu=cpu"
+Compile code for \s-1ARC\s0 variant \fIcpu\fR.
+Which variants are supported depend on the configuration.
+All variants support \fB\-mcpu=base\fR, this is the default.
+.IP "\fB\-mtext=\fR\fItext-section\fR" 4
+.IX Item "-mtext=text-section"
+.PD 0
+.IP "\fB\-mdata=\fR\fIdata-section\fR" 4
+.IX Item "-mdata=data-section"
+.IP "\fB\-mrodata=\fR\fIreadonly-data-section\fR" 4
+.IX Item "-mrodata=readonly-data-section"
+.PD
+Put functions, data, and readonly data in \fItext-section\fR,
+\&\fIdata-section\fR, and \fIreadonly-data-section\fR respectively
+by default.  This can be overridden with the \f(CW\*(C`section\*(C'\fR attribute.
+.Sh "\s-1NS32K\s0 Options"
+.IX Subsection "NS32K Options"
+These are the \fB\-m\fR options defined for the 32000 series.  The default
+values for these options depends on which style of 32000 was selected when
+the compiler was configured; the defaults for the most common choices are
+given below.
+.IP "\fB\-m32032\fR" 4
+.IX Item "-m32032"
+.PD 0
+.IP "\fB\-m32032\fR" 4
+.IX Item "-m32032"
+.PD
+Generate output for a 32032.  This is the default
+when the compiler is configured for 32032 and 32016 based systems.
+.IP "\fB\-m32332\fR" 4
+.IX Item "-m32332"
+.PD 0
+.IP "\fB\-m32332\fR" 4
+.IX Item "-m32332"
+.PD
+Generate output for a 32332.  This is the default
+when the compiler is configured for 32332\-based systems.
+.IP "\fB\-m32532\fR" 4
+.IX Item "-m32532"
+.PD 0
+.IP "\fB\-m32532\fR" 4
+.IX Item "-m32532"
+.PD
+Generate output for a 32532.  This is the default
+when the compiler is configured for 32532\-based systems.
+.IP "\fB\-m32081\fR" 4
+.IX Item "-m32081"
+Generate output containing 32081 instructions for floating point.
+This is the default for all systems.
+.IP "\fB\-m32381\fR" 4
+.IX Item "-m32381"
+Generate output containing 32381 instructions for floating point.  This
+also implies \fB\-m32081\fR.  The 32381 is only compatible with the 32332
+and 32532 cpus.  This is the default for the pc532\-netbsd configuration.
+.IP "\fB\-mmulti\-add\fR" 4
+.IX Item "-mmulti-add"
+Try and generate multiply-add floating point instructions \f(CW\*(C`polyF\*(C'\fR
+and \f(CW\*(C`dotF\*(C'\fR.  This option is only available if the \fB\-m32381\fR
+option is in effect.  Using these instructions requires changes to
+register allocation which generally has a negative impact on
+performance.  This option should only be enabled when compiling code
+particularly likely to make heavy use of multiply-add instructions.
+.IP "\fB\-mnomulti\-add\fR" 4
+.IX Item "-mnomulti-add"
+Do not try and generate multiply-add floating point instructions
+\&\f(CW\*(C`polyF\*(C'\fR and \f(CW\*(C`dotF\*(C'\fR.  This is the default on all platforms.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Generate output containing library calls for floating point.
+\&\fBWarning:\fR the requisite libraries may not be available.
+.IP "\fB\-mieee\-compare\fR" 4
+.IX Item "-mieee-compare"
+.PD 0
+.IP "\fB\-mno\-ieee\-compare\fR" 4
+.IX Item "-mno-ieee-compare"
+.PD
+Control whether or not the compiler uses \s-1IEEE\s0 floating point
+comparisons.  These handle correctly the case where the result of a
+comparison is unordered.
+\&\fBWarning:\fR the requisite kernel support may not be available.
+.IP "\fB\-mnobitfield\fR" 4
+.IX Item "-mnobitfield"
+Do not use the bit-field instructions.  On some machines it is faster to
+use shifting and masking operations.  This is the default for the pc532.
+.IP "\fB\-mbitfield\fR" 4
+.IX Item "-mbitfield"
+Do use the bit-field instructions.  This is the default for all platforms
+except the pc532.
+.IP "\fB\-mrtd\fR" 4
+.IX Item "-mrtd"
+Use a different function-calling convention, in which functions
+that take a fixed number of arguments return pop their
+arguments on return with the \f(CW\*(C`ret\*(C'\fR instruction.
+.Sp
+This calling convention is incompatible with the one normally
+used on Unix, so you cannot use it if you need to call libraries
+compiled with the Unix compiler.
+.Sp
+Also, you must provide function prototypes for all functions that
+take variable numbers of arguments (including \f(CW\*(C`printf\*(C'\fR);
+otherwise incorrect code will be generated for calls to those
+functions.
+.Sp
+In addition, seriously incorrect code will result if you call a
+function with too many arguments.  (Normally, extra arguments are
+harmlessly ignored.)
+.Sp
+This option takes its name from the 680x0 \f(CW\*(C`rtd\*(C'\fR instruction.
+.IP "\fB\-mregparam\fR" 4
+.IX Item "-mregparam"
+Use a different function-calling convention where the first two arguments
+are passed in registers.
+.Sp
+This calling convention is incompatible with the one normally
+used on Unix, so you cannot use it if you need to call libraries
+compiled with the Unix compiler.
+.IP "\fB\-mnoregparam\fR" 4
+.IX Item "-mnoregparam"
+Do not pass any arguments in registers.  This is the default for all
+targets.
+.IP "\fB\-msb\fR" 4
+.IX Item "-msb"
+It is \s-1OK\s0 to use the sb as an index register which is always loaded with
+zero.  This is the default for the pc532\-netbsd target.
+.IP "\fB\-mnosb\fR" 4
+.IX Item "-mnosb"
+The sb register is not available for use or has not been initialized to
+zero by the run time system.  This is the default for all targets except
+the pc532\-netbsd.  It is also implied whenever \fB\-mhimem\fR or
+\&\fB\-fpic\fR is set.
+.IP "\fB\-mhimem\fR" 4
+.IX Item "-mhimem"
+Many ns32000 series addressing modes use displacements of up to 512MB.
+If an address is above 512MB then displacements from zero can not be used.
+This option causes code to be generated which can be loaded above 512MB.
+This may be useful for operating systems or \s-1ROM\s0 code.
+.IP "\fB\-mnohimem\fR" 4
+.IX Item "-mnohimem"
+Assume code will be loaded in the first 512MB of virtual address space.
+This is the default for all platforms.
+.Sh "\s-1AVR\s0 Options"
+.IX Subsection "AVR Options"
+These options are defined for \s-1AVR\s0 implementations:
+.IP "\fB\-mmcu=\fR\fImcu\fR" 4
+.IX Item "-mmcu=mcu"
+Specify \s-1ATMEL\s0 \s-1AVR\s0 instruction set or \s-1MCU\s0 type.
+.Sp
+Instruction set avr1 is for the minimal \s-1AVR\s0 core, not supported by the C
+compiler, only for assembler programs (\s-1MCU\s0 types: at90s1200, attiny10,
+attiny11, attiny12, attiny15, attiny28).
+.Sp
+Instruction set avr2 (default) is for the classic \s-1AVR\s0 core with up to
+8K program memory space (\s-1MCU\s0 types: at90s2313, at90s2323, attiny22,
+at90s2333, at90s2343, at90s4414, at90s4433, at90s4434, at90s8515,
+at90c8534, at90s8535).
+.Sp
+Instruction set avr3 is for the classic \s-1AVR\s0 core with up to 128K program
+memory space (\s-1MCU\s0 types: atmega103, atmega603, at43usb320, at76c711).
+.Sp
+Instruction set avr4 is for the enhanced \s-1AVR\s0 core with up to 8K program
+memory space (\s-1MCU\s0 types: atmega8, atmega83, atmega85).
+.Sp
+Instruction set avr5 is for the enhanced \s-1AVR\s0 core with up to 128K program
+memory space (\s-1MCU\s0 types: atmega16, atmega161, atmega163, atmega32, atmega323,
+atmega64, atmega128, at43usb355, at94k).
+.IP "\fB\-msize\fR" 4
+.IX Item "-msize"
+Output instruction sizes to the asm file.
+.IP "\fB\-minit\-stack=\fR\fIN\fR" 4
+.IX Item "-minit-stack=N"
+Specify the initial stack address, which may be a symbol or numeric value,
+\&\fB_\|_stack\fR is the default.
+.IP "\fB\-mno\-interrupts\fR" 4
+.IX Item "-mno-interrupts"
+Generated code is not compatible with hardware interrupts.
+Code size will be smaller.
+.IP "\fB\-mcall\-prologues\fR" 4
+.IX Item "-mcall-prologues"
+Functions prologues/epilogues expanded as call to appropriate
+subroutines.  Code size will be smaller.
+.IP "\fB\-mno\-tablejump\fR" 4
+.IX Item "-mno-tablejump"
+Do not generate tablejump insns which sometimes increase code size.
+.IP "\fB\-mtiny\-stack\fR" 4
+.IX Item "-mtiny-stack"
+Change only the low 8 bits of the stack pointer.
+.Sh "MCore Options"
+.IX Subsection "MCore Options"
+These are the \fB\-m\fR options defined for the Motorola M*Core
+processors.
+.IP "\fB\-mhardlit\fR" 4
+.IX Item "-mhardlit"
+.PD 0
+.IP "\fB\-mno\-hardlit\fR" 4
+.IX Item "-mno-hardlit"
+.PD
+Inline constants into the code stream if it can be done in two
+instructions or less.
+.IP "\fB\-mdiv\fR" 4
+.IX Item "-mdiv"
+.PD 0
+.IP "\fB\-mno\-div\fR" 4
+.IX Item "-mno-div"
+.PD
+Use the divide instruction.  (Enabled by default).
+.IP "\fB\-mrelax\-immediate\fR" 4
+.IX Item "-mrelax-immediate"
+.PD 0
+.IP "\fB\-mno\-relax\-immediate\fR" 4
+.IX Item "-mno-relax-immediate"
+.PD
+Allow arbitrary sized immediates in bit operations.
+.IP "\fB\-mwide\-bitfields\fR" 4
+.IX Item "-mwide-bitfields"
+.PD 0
+.IP "\fB\-mno\-wide\-bitfields\fR" 4
+.IX Item "-mno-wide-bitfields"
+.PD
+Always treat bit-fields as int\-sized.
+.IP "\fB\-m4byte\-functions\fR" 4
+.IX Item "-m4byte-functions"
+.PD 0
+.IP "\fB\-mno\-4byte\-functions\fR" 4
+.IX Item "-mno-4byte-functions"
+.PD
+Force all functions to be aligned to a four byte boundary.
+.IP "\fB\-mcallgraph\-data\fR" 4
+.IX Item "-mcallgraph-data"
+.PD 0
+.IP "\fB\-mno\-callgraph\-data\fR" 4
+.IX Item "-mno-callgraph-data"
+.PD
+Emit callgraph information.
+.IP "\fB\-mslow\-bytes\fR" 4
+.IX Item "-mslow-bytes"
+.PD 0
+.IP "\fB\-mno\-slow\-bytes\fR" 4
+.IX Item "-mno-slow-bytes"
+.PD
+Prefer word access when reading byte quantities.
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+.PD 0
+.IP "\fB\-mbig\-endian\fR" 4
+.IX Item "-mbig-endian"
+.PD
+Generate code for a little endian target.
+.IP "\fB\-m210\fR" 4
+.IX Item "-m210"
+.PD 0
+.IP "\fB\-m340\fR" 4
+.IX Item "-m340"
+.PD
+Generate code for the 210 processor.
+.Sh "\s-1IA\-64\s0 Options"
+.IX Subsection "IA-64 Options"
+These are the \fB\-m\fR options defined for the Intel \s-1IA\-64\s0 architecture.
+.IP "\fB\-mbig\-endian\fR" 4
+.IX Item "-mbig-endian"
+Generate code for a big endian target.  This is the default for \s-1HP\-UX\s0.
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+Generate code for a little endian target.  This is the default for \s-1AIX5\s0
+and Linux.
+.IP "\fB\-mgnu\-as\fR" 4
+.IX Item "-mgnu-as"
+.PD 0
+.IP "\fB\-mno\-gnu\-as\fR" 4
+.IX Item "-mno-gnu-as"
+.PD
+Generate (or don't) code for the \s-1GNU\s0 assembler.  This is the default.
+.IP "\fB\-mgnu\-ld\fR" 4
+.IX Item "-mgnu-ld"
+.PD 0
+.IP "\fB\-mno\-gnu\-ld\fR" 4
+.IX Item "-mno-gnu-ld"
+.PD
+Generate (or don't) code for the \s-1GNU\s0 linker.  This is the default.
+.IP "\fB\-mno\-pic\fR" 4
+.IX Item "-mno-pic"
+Generate code that does not use a global pointer register.  The result
+is not position independent code, and violates the \s-1IA\-64\s0 \s-1ABI\s0.
+.IP "\fB\-mvolatile\-asm\-stop\fR" 4
+.IX Item "-mvolatile-asm-stop"
+.PD 0
+.IP "\fB\-mno\-volatile\-asm\-stop\fR" 4
+.IX Item "-mno-volatile-asm-stop"
+.PD
+Generate (or don't) a stop bit immediately before and after volatile asm
+statements.
+.IP "\fB\-mb\-step\fR" 4
+.IX Item "-mb-step"
+Generate code that works around Itanium B step errata.
+.IP "\fB\-mregister\-names\fR" 4
+.IX Item "-mregister-names"
+.PD 0
+.IP "\fB\-mno\-register\-names\fR" 4
+.IX Item "-mno-register-names"
+.PD
+Generate (or don't) \fBin\fR, \fBloc\fR, and \fBout\fR register names for
+the stacked registers.  This may make assembler output more readable.
+.IP "\fB\-mno\-sdata\fR" 4
+.IX Item "-mno-sdata"
+.PD 0
+.IP "\fB\-msdata\fR" 4
+.IX Item "-msdata"
+.PD
+Disable (or enable) optimizations that use the small data section.  This may
+be useful for working around optimizer bugs.
+.IP "\fB\-mconstant\-gp\fR" 4
+.IX Item "-mconstant-gp"
+Generate code that uses a single constant global pointer value.  This is
+useful when compiling kernel code.
+.IP "\fB\-mauto\-pic\fR" 4
+.IX Item "-mauto-pic"
+Generate code that is self\-relocatable.  This implies \fB\-mconstant\-gp\fR.
+This is useful when compiling firmware code.
+.IP "\fB\-minline\-float\-divide\-min\-latency\fR" 4
+.IX Item "-minline-float-divide-min-latency"
+Generate code for inline divides of floating point values
+using the minimum latency algorithm.
+.IP "\fB\-minline\-float\-divide\-max\-throughput\fR" 4
+.IX Item "-minline-float-divide-max-throughput"
+Generate code for inline divides of floating point values
+using the maximum throughput algorithm.
+.IP "\fB\-minline\-int\-divide\-min\-latency\fR" 4
+.IX Item "-minline-int-divide-min-latency"
+Generate code for inline divides of integer values
+using the minimum latency algorithm.
+.IP "\fB\-minline\-int\-divide\-max\-throughput\fR" 4
+.IX Item "-minline-int-divide-max-throughput"
+Generate code for inline divides of integer values
+using the maximum throughput algorithm.
+.IP "\fB\-mno\-dwarf2\-asm\fR" 4
+.IX Item "-mno-dwarf2-asm"
+.PD 0
+.IP "\fB\-mdwarf2\-asm\fR" 4
+.IX Item "-mdwarf2-asm"
+.PD
+Don't (or do) generate assembler code for the \s-1DWARF2\s0 line number debugging
+info.  This may be useful when not using the \s-1GNU\s0 assembler.
+.IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
+.IX Item "-mfixed-range=register-range"
+Generate code treating the given register range as fixed registers.
+A fixed register is one that the register allocator can not use.  This is
+useful when compiling kernel code.  A register range is specified as
+two registers separated by a dash.  Multiple register ranges can be
+specified separated by a comma.
+.Sh "D30V Options"
+.IX Subsection "D30V Options"
+These \fB\-m\fR options are defined for D30V implementations:
+.IP "\fB\-mextmem\fR" 4
+.IX Item "-mextmem"
+Link the \fB.text\fR, \fB.data\fR, \fB.bss\fR, \fB.strings\fR,
+\&\fB.rodata\fR, \fB.rodata1\fR, \fB.data1\fR sections into external
+memory, which starts at location \f(CW0x80000000\fR.
+.IP "\fB\-mextmemory\fR" 4
+.IX Item "-mextmemory"
+Same as the \fB\-mextmem\fR switch.
+.IP "\fB\-monchip\fR" 4
+.IX Item "-monchip"
+Link the \fB.text\fR section into onchip text memory, which starts at
+location \f(CW0x0\fR.  Also link \fB.data\fR, \fB.bss\fR,
+\&\fB.strings\fR, \fB.rodata\fR, \fB.rodata1\fR, \fB.data1\fR sections
+into onchip data memory, which starts at location \f(CW0x20000000\fR.
+.IP "\fB\-mno\-asm\-optimize\fR" 4
+.IX Item "-mno-asm-optimize"
+.PD 0
+.IP "\fB\-masm\-optimize\fR" 4
+.IX Item "-masm-optimize"
+.PD
+Disable (enable) passing \fB\-O\fR to the assembler when optimizing.
+The assembler uses the \fB\-O\fR option to automatically parallelize
+adjacent short instructions where possible.
+.IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
+.IX Item "-mbranch-cost=n"
+Increase the internal costs of branches to \fIn\fR.  Higher costs means
+that the compiler will issue more instructions to avoid doing a branch.
+The default is 2.
+.IP "\fB\-mcond\-exec=\fR\fIn\fR" 4
+.IX Item "-mcond-exec=n"
+Specify the maximum number of conditionally executed instructions that
+replace a branch.  The default is 4.
+.Sh "S/390 and zSeries Options"
+.IX Subsection "S/390 and zSeries Options"
+These are the \fB\-m\fR options defined for the S/390 and zSeries architecture.
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+.PD 0
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+.PD
+Use (do not use) the hardware floating-point instructions and registers
+for floating-point operations.  When \fB\-msoft\-float\fR is specified,
+functions in \fIlibgcc.a\fR will be used to perform floating-point
+operations.  When \fB\-mhard\-float\fR is specified, the compiler
+generates \s-1IEEE\s0 floating-point instructions.  This is the default.
+.IP "\fB\-mbackchain\fR" 4
+.IX Item "-mbackchain"
+.PD 0
+.IP "\fB\-mno\-backchain\fR" 4
+.IX Item "-mno-backchain"
+.PD
+Generate (or do not generate) code which maintains an explicit
+backchain within the stack frame that points to the caller's frame.
+This is currently needed to allow debugging.  The default is to
+generate the backchain.
+.IP "\fB\-msmall\-exec\fR" 4
+.IX Item "-msmall-exec"
+.PD 0
+.IP "\fB\-mno\-small\-exec\fR" 4
+.IX Item "-mno-small-exec"
+.PD
+Generate (or do not generate) code using the \f(CW\*(C`bras\*(C'\fR instruction
+to do subroutine calls.
+This only works reliably if the total executable size does not
+exceed 64k.  The default is to use the \f(CW\*(C`basr\*(C'\fR instruction instead,
+which does not have this limitation.
+.IP "\fB\-m64\fR" 4
+.IX Item "-m64"
+.PD 0
+.IP "\fB\-m31\fR" 4
+.IX Item "-m31"
+.PD
+When \fB\-m31\fR is specified, generate code compliant to the
+Linux for S/390 \s-1ABI\s0.  When \fB\-m64\fR is specified, generate
+code compliant to the Linux for zSeries \s-1ABI\s0.  This allows \s-1GCC\s0 in
+particular to generate 64\-bit instructions.  For the \fBs390\fR
+targets, the default is \fB\-m31\fR, while the \fBs390x\fR
+targets default to \fB\-m64\fR.
+.IP "\fB\-mmvcle\fR" 4
+.IX Item "-mmvcle"
+.PD 0
+.IP "\fB\-mno\-mvcle\fR" 4
+.IX Item "-mno-mvcle"
+.PD
+Generate (or do not generate) code using the \f(CW\*(C`mvcle\*(C'\fR instruction
+to perform block moves.  When \fB\-mno\-mvcle\fR is specified,
+use a \f(CW\*(C`mvc\*(C'\fR loop instead.  This is the default.
+.IP "\fB\-mdebug\fR" 4
+.IX Item "-mdebug"
+.PD 0
+.IP "\fB\-mno\-debug\fR" 4
+.IX Item "-mno-debug"
+.PD
+Print (or do not print) additional debug information when compiling.
+The default is to not print debug information.
+.Sh "\s-1CRIS\s0 Options"
+.IX Subsection "CRIS Options"
+These options are defined specifically for the \s-1CRIS\s0 ports.
+.IP "\fB\-march=\fR\fIarchitecture-type\fR" 4
+.IX Item "-march=architecture-type"
+.PD 0
+.IP "\fB\-mcpu=\fR\fIarchitecture-type\fR" 4
+.IX Item "-mcpu=architecture-type"
+.PD
+Generate code for the specified architecture.  The choices for
+\&\fIarchitecture-type\fR are \fBv3\fR, \fBv8\fR and \fBv10\fR for
+respectively \s-1ETRAX\s0\ 4, \s-1ETRAX\s0\ 100, and \s-1ETRAX\s0\ 100\ \s-1LX\s0.
+Default is \fBv0\fR except for cris\-axis\-linux\-gnu, where the default is
+\&\fBv10\fR.
+.IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
+.IX Item "-mtune=architecture-type"
+Tune to \fIarchitecture-type\fR everything applicable about the generated
+code, except for the \s-1ABI\s0 and the set of available instructions.  The
+choices for \fIarchitecture-type\fR are the same as for
+\&\fB\-march=\fR\fIarchitecture-type\fR.
+.IP "\fB\-mmax\-stack\-frame=\fR\fIn\fR" 4
+.IX Item "-mmax-stack-frame=n"
+Warn when the stack frame of a function exceeds \fIn\fR bytes.
+.IP "\fB\-melinux\-stacksize=\fR\fIn\fR" 4
+.IX Item "-melinux-stacksize=n"
+Only available with the \fBcris-axis-aout\fR target.  Arranges for
+indications in the program to the kernel loader that the stack of the
+program should be set to \fIn\fR bytes.
+.IP "\fB\-metrax4\fR" 4
+.IX Item "-metrax4"
+.PD 0
+.IP "\fB\-metrax100\fR" 4
+.IX Item "-metrax100"
+.PD
+The options \fB\-metrax4\fR and \fB\-metrax100\fR are synonyms for
+\&\fB\-march=v3\fR and \fB\-march=v8\fR respectively.
+.IP "\fB\-mpdebug\fR" 4
+.IX Item "-mpdebug"
+Enable CRIS-specific verbose debug-related information in the assembly
+code.  This option also has the effect to turn off the \fB#NO_APP\fR
+formatted-code indicator to the assembler at the beginning of the
+assembly file.
+.IP "\fB\-mcc\-init\fR" 4
+.IX Item "-mcc-init"
+Do not use condition-code results from previous instruction; always emit
+compare and test instructions before use of condition codes.
+.IP "\fB\-mno\-side\-effects\fR" 4
+.IX Item "-mno-side-effects"
+Do not emit instructions with side-effects in addressing modes other than
+post\-increment.
+.IP "\fB\-mstack\-align\fR" 4
+.IX Item "-mstack-align"
+.PD 0
+.IP "\fB\-mno\-stack\-align\fR" 4
+.IX Item "-mno-stack-align"
+.IP "\fB\-mdata\-align\fR" 4
+.IX Item "-mdata-align"
+.IP "\fB\-mno\-data\-align\fR" 4
+.IX Item "-mno-data-align"
+.IP "\fB\-mconst\-align\fR" 4
+.IX Item "-mconst-align"
+.IP "\fB\-mno\-const\-align\fR" 4
+.IX Item "-mno-const-align"
+.PD
+These options (no\-options) arranges (eliminate arrangements) for the
+stack\-frame, individual data and constants to be aligned for the maximum
+single data access size for the chosen \s-1CPU\s0 model.  The default is to
+arrange for 32\-bit alignment.  \s-1ABI\s0 details such as structure layout are
+not affected by these options.
+.IP "\fB\-m32\-bit\fR" 4
+.IX Item "-m32-bit"
+.PD 0
+.IP "\fB\-m16\-bit\fR" 4
+.IX Item "-m16-bit"
+.IP "\fB\-m8\-bit\fR" 4
+.IX Item "-m8-bit"
+.PD
+Similar to the stack\- data\- and const-align options above, these options
+arrange for stack\-frame, writable data and constants to all be 32\-bit,
+16\-bit or 8\-bit aligned.  The default is 32\-bit alignment.
+.IP "\fB\-mno\-prologue\-epilogue\fR" 4
+.IX Item "-mno-prologue-epilogue"
+.PD 0
+.IP "\fB\-mprologue\-epilogue\fR" 4
+.IX Item "-mprologue-epilogue"
+.PD
+With \fB\-mno\-prologue\-epilogue\fR, the normal function prologue and
+epilogue that sets up the stack-frame are omitted and no return
+instructions or return sequences are generated in the code.  Use this
+option only together with visual inspection of the compiled code: no
+warnings or errors are generated when call-saved registers must be saved,
+or storage for local variable needs to be allocated.
+.IP "\fB\-mno\-gotplt\fR" 4
+.IX Item "-mno-gotplt"
+.PD 0
+.IP "\fB\-mgotplt\fR" 4
+.IX Item "-mgotplt"
+.PD
+With \fB\-fpic\fR and \fB\-fPIC\fR, don't generate (do generate)
+instruction sequences that load addresses for functions from the \s-1PLT\s0 part
+of the \s-1GOT\s0 rather than (traditional on other architectures) calls to the
+\&\s-1PLT\s0.  The default is \fB\-mgotplt\fR.
+.IP "\fB\-maout\fR" 4
+.IX Item "-maout"
+Legacy no-op option only recognized with the cris-axis-aout target.
+.IP "\fB\-melf\fR" 4
+.IX Item "-melf"
+Legacy no-op option only recognized with the cris-axis-elf and
+cris-axis-linux-gnu targets.
+.IP "\fB\-melinux\fR" 4
+.IX Item "-melinux"
+Only recognized with the cris-axis-aout target, where it selects a
+GNU/linux\-like multilib, include files and instruction set for
+\&\fB\-march=v8\fR.
+.IP "\fB\-mlinux\fR" 4
+.IX Item "-mlinux"
+Legacy no-op option only recognized with the cris-axis-linux-gnu target.
+.IP "\fB\-sim\fR" 4
+.IX Item "-sim"
+This option, recognized for the cris-axis-aout and cris-axis-elf arranges
+to link with input-output functions from a simulator library.  Code,
+initialized data and zero-initialized data are allocated consecutively.
+.IP "\fB\-sim2\fR" 4
+.IX Item "-sim2"
+Like \fB\-sim\fR, but pass linker options to locate initialized data at
+0x40000000 and zero-initialized data at 0x80000000.
+.Sh "\s-1MMIX\s0 Options"
+.IX Subsection "MMIX Options"
+These options are defined for the \s-1MMIX:\s0
+.IP "\fB\-mlibfuncs\fR" 4
+.IX Item "-mlibfuncs"
+.PD 0
+.IP "\fB\-mno\-libfuncs\fR" 4
+.IX Item "-mno-libfuncs"
+.PD
+Specify that intrinsic library functions are being compiled, passing all
+values in registers, no matter the size.
+.IP "\fB\-mepsilon\fR" 4
+.IX Item "-mepsilon"
+.PD 0
+.IP "\fB\-mno\-epsilon\fR" 4
+.IX Item "-mno-epsilon"
+.PD
+Generate floating-point comparison instructions that compare with respect
+to the \f(CW\*(C`rE\*(C'\fR epsilon register.
+.IP "\fB\-mabi=mmixware\fR" 4
+.IX Item "-mabi=mmixware"
+.PD 0
+.IP "\fB\-mabi=gnu\fR" 4
+.IX Item "-mabi=gnu"
+.PD
+Generate code that passes function parameters and return values that (in
+the called function) are seen as registers \f(CW$0\fR and up, as opposed to
+the \s-1GNU\s0 \s-1ABI\s0 which uses global registers \f(CW$231\fR and up.
+.IP "\fB\-mzero\-extend\fR" 4
+.IX Item "-mzero-extend"
+.PD 0
+.IP "\fB\-mno\-zero\-extend\fR" 4
+.IX Item "-mno-zero-extend"
+.PD
+When reading data from memory in sizes shorter than 64 bits, use (do not
+use) zero-extending load instructions by default, rather than
+sign-extending ones.
+.IP "\fB\-mknuthdiv\fR" 4
+.IX Item "-mknuthdiv"
+.PD 0
+.IP "\fB\-mno\-knuthdiv\fR" 4
+.IX Item "-mno-knuthdiv"
+.PD
+Make the result of a division yielding a remainder have the same sign as
+the divisor.  With the default, \fB\-mno\-knuthdiv\fR, the sign of the
+remainder follows the sign of the dividend.  Both methods are
+arithmetically valid, the latter being almost exclusively used.
+.IP "\fB\-mtoplevel\-symbols\fR" 4
+.IX Item "-mtoplevel-symbols"
+.PD 0
+.IP "\fB\-mno\-toplevel\-symbols\fR" 4
+.IX Item "-mno-toplevel-symbols"
+.PD
+Prepend (do not prepend) a \fB:\fR to all global symbols, so the assembly
+code can be used with the \f(CW\*(C`PREFIX\*(C'\fR assembly directive.
+.IP "\fB\-melf\fR" 4
+.IX Item "-melf"
+Generate an executable in the \s-1ELF\s0 format, rather than the default
+\&\fBmmo\fR format used by the \fBmmix\fR simulator.
+.IP "\fB\-mbranch\-predict\fR" 4
+.IX Item "-mbranch-predict"
+.PD 0
+.IP "\fB\-mno\-branch\-predict\fR" 4
+.IX Item "-mno-branch-predict"
+.PD
+Use (do not use) the probable-branch instructions, when static branch
+prediction indicates a probable branch.
+.IP "\fB\-mbase\-addresses\fR" 4
+.IX Item "-mbase-addresses"
+.PD 0
+.IP "\fB\-mno\-base\-addresses\fR" 4
+.IX Item "-mno-base-addresses"
+.PD
+Generate (do not generate) code that uses \fIbase addresses\fR.  Using a
+base address automatically generates a request (handled by the assembler
+and the linker) for a constant to be set up in a global register.  The
+register is used for one or more base address requests within the range 0
+to 255 from the value held in the register.  The generally leads to short
+and fast code, but the number of different data items that can be
+addressed is limited.  This means that a program that uses lots of static
+data may require \fB\-mno\-base\-addresses\fR.
+.IP "\fB\-msingle\-exit\fR" 4
+.IX Item "-msingle-exit"
+.PD 0
+.IP "\fB\-mno\-single\-exit\fR" 4
+.IX Item "-mno-single-exit"
+.PD
+Force (do not force) generated code to have a single exit point in each
+function.
+.Sh "\s-1PDP\-11\s0 Options"
+.IX Subsection "PDP-11 Options"
+These options are defined for the \s-1PDP\-11:\s0
+.IP "\fB\-mfpu\fR" 4
+.IX Item "-mfpu"
+Use hardware \s-1FPP\s0 floating point.  This is the default.  (\s-1FIS\s0 floating
+point on the \s-1PDP\-11/40\s0 is not supported.)
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Do not use hardware floating point.
+.IP "\fB\-mac0\fR" 4
+.IX Item "-mac0"
+Return floating-point results in ac0 (fr0 in Unix assembler syntax).
+.IP "\fB\-mno\-ac0\fR" 4
+.IX Item "-mno-ac0"
+Return floating-point results in memory.  This is the default.
+.IP "\fB\-m40\fR" 4
+.IX Item "-m40"
+Generate code for a \s-1PDP\-11/40\s0.
+.IP "\fB\-m45\fR" 4
+.IX Item "-m45"
+Generate code for a \s-1PDP\-11/45\s0.  This is the default.
+.IP "\fB\-m10\fR" 4
+.IX Item "-m10"
+Generate code for a \s-1PDP\-11/10\s0.
+.IP "\fB\-mbcopy\-builtin\fR" 4
+.IX Item "-mbcopy-builtin"
+Use inline \f(CW\*(C`movstrhi\*(C'\fR patterns for copying memory.  This is the
+default.
+.IP "\fB\-mbcopy\fR" 4
+.IX Item "-mbcopy"
+Do not use inline \f(CW\*(C`movstrhi\*(C'\fR patterns for copying memory.
+.IP "\fB\-mint16\fR" 4
+.IX Item "-mint16"
+.PD 0
+.IP "\fB\-mno\-int32\fR" 4
+.IX Item "-mno-int32"
+.PD
+Use 16\-bit \f(CW\*(C`int\*(C'\fR.  This is the default.
+.IP "\fB\-mint32\fR" 4
+.IX Item "-mint32"
+.PD 0
+.IP "\fB\-mno\-int16\fR" 4
+.IX Item "-mno-int16"
+.PD
+Use 32\-bit \f(CW\*(C`int\*(C'\fR.
+.IP "\fB\-mfloat64\fR" 4
+.IX Item "-mfloat64"
+.PD 0
+.IP "\fB\-mno\-float32\fR" 4
+.IX Item "-mno-float32"
+.PD
+Use 64\-bit \f(CW\*(C`float\*(C'\fR.  This is the default.
+.IP "\fB\-mfloat32\fR" 4
+.IX Item "-mfloat32"
+.PD 0
+.IP "\fB\-mno\-float64\fR" 4
+.IX Item "-mno-float64"
+.PD
+Use 32\-bit \f(CW\*(C`float\*(C'\fR.
+.IP "\fB\-mabshi\fR" 4
+.IX Item "-mabshi"
+Use \f(CW\*(C`abshi2\*(C'\fR pattern.  This is the default.
+.IP "\fB\-mno\-abshi\fR" 4
+.IX Item "-mno-abshi"
+Do not use \f(CW\*(C`abshi2\*(C'\fR pattern.
+.IP "\fB\-mbranch\-expensive\fR" 4
+.IX Item "-mbranch-expensive"
+Pretend that branches are expensive.  This is for experimenting with
+code generation only.
+.IP "\fB\-mbranch\-cheap\fR" 4
+.IX Item "-mbranch-cheap"
+Do not pretend that branches are expensive.  This is the default.
+.IP "\fB\-msplit\fR" 4
+.IX Item "-msplit"
+Generate code for a system with split I&D.
+.IP "\fB\-mno\-split\fR" 4
+.IX Item "-mno-split"
+Generate code for a system without split I&D.  This is the default.
+.IP "\fB\-munix\-asm\fR" 4
+.IX Item "-munix-asm"
+Use Unix assembler syntax.  This is the default when configured for
+\&\fBpdp11\-*\-bsd\fR.
+.IP "\fB\-mdec\-asm\fR" 4
+.IX Item "-mdec-asm"
+Use \s-1DEC\s0 assembler syntax.  This is the default when configured for any
+\&\s-1PDP\-11\s0 target other than \fBpdp11\-*\-bsd\fR.
+.Sh "Xstormy16 Options"
+.IX Subsection "Xstormy16 Options"
+These options are defined for Xstormy16:
+.IP "\fB\-msim\fR" 4
+.IX Item "-msim"
+Choose startup files and linker script suitable for the simulator.
+.Sh "\s-1FRV\s0 Options"
+.IX Subsection "FRV Options"
+.IP "\fB\-mgpr\-32\fR" 4
+.IX Item "-mgpr-32"
+Only use the first 32 general purpose registers.
+.IP "\fB\-mgpr\-64\fR" 4
+.IX Item "-mgpr-64"
+Use all 64 general purpose registers.
+.IP "\fB\-mfpr\-32\fR" 4
+.IX Item "-mfpr-32"
+Use only the first 32 floating point registers.
+.IP "\fB\-mfpr\-64\fR" 4
+.IX Item "-mfpr-64"
+Use all 64 floating point registers
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+Use hardware instructions for floating point operations.
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+Use library routines for floating point operations.
+.IP "\fB\-malloc\-cc\fR" 4
+.IX Item "-malloc-cc"
+Dynamically allocate condition code registers.
+.IP "\fB\-mfixed\-cc\fR" 4
+.IX Item "-mfixed-cc"
+Do not try to dynamically allocate condition code registers, only
+use \f(CW\*(C`icc0\*(C'\fR and \f(CW\*(C`fcc0\*(C'\fR.
+.IP "\fB\-mdword\fR" 4
+.IX Item "-mdword"
+Change \s-1ABI\s0 to use double word insns.
+.IP "\fB\-mno\-dword\fR" 4
+.IX Item "-mno-dword"
+Do not use double word instructions.
+.IP "\fB\-mdouble\fR" 4
+.IX Item "-mdouble"
+Use floating point double instructions.
+.IP "\fB\-mno\-double\fR" 4
+.IX Item "-mno-double"
+Do not use floating point double instructions.
+.IP "\fB\-mmedia\fR" 4
+.IX Item "-mmedia"
+Use media instructions.
+.IP "\fB\-mno\-media\fR" 4
+.IX Item "-mno-media"
+Do not use media instructions.
+.IP "\fB\-mmuladd\fR" 4
+.IX Item "-mmuladd"
+Use multiply and add/subtract instructions.
+.IP "\fB\-mno\-muladd\fR" 4
+.IX Item "-mno-muladd"
+Do not use multiply and add/subtract instructions.
+.IP "\fB\-mlibrary\-pic\fR" 4
+.IX Item "-mlibrary-pic"
+Enable \s-1PIC\s0 support for building libraries
+.IP "\fB\-macc\-4\fR" 4
+.IX Item "-macc-4"
+Use only the first four media accumulator registers.
+.IP "\fB\-macc\-8\fR" 4
+.IX Item "-macc-8"
+Use all eight media accumulator registers.
+.IP "\fB\-mpack\fR" 4
+.IX Item "-mpack"
+Pack \s-1VLIW\s0 instructions.
+.IP "\fB\-mno\-pack\fR" 4
+.IX Item "-mno-pack"
+Do not pack \s-1VLIW\s0 instructions.
+.IP "\fB\-mno\-eflags\fR" 4
+.IX Item "-mno-eflags"
+Do not mark \s-1ABI\s0 switches in e_flags.
+.IP "\fB\-mcond\-move\fR" 4
+.IX Item "-mcond-move"
+Enable the use of conditional-move instructions (default).
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mno\-cond\-move\fR" 4
+.IX Item "-mno-cond-move"
+Disable the use of conditional-move instructions.
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mscc\fR" 4
+.IX Item "-mscc"
+Enable the use of conditional set instructions (default).
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mno\-scc\fR" 4
+.IX Item "-mno-scc"
+Disable the use of conditional set instructions.
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mcond\-exec\fR" 4
+.IX Item "-mcond-exec"
+Enable the use of conditional execution (default).
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mno\-cond\-exec\fR" 4
+.IX Item "-mno-cond-exec"
+Disable the use of conditional execution.
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mvliw\-branch\fR" 4
+.IX Item "-mvliw-branch"
+Run a pass to pack branches into \s-1VLIW\s0 instructions (default).
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mno\-vliw\-branch\fR" 4
+.IX Item "-mno-vliw-branch"
+Do not run a pass to pack branches into \s-1VLIW\s0 instructions.
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mmulti\-cond\-exec\fR" 4
+.IX Item "-mmulti-cond-exec"
+Enable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution
+(default).
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mno\-multi\-cond\-exec\fR" 4
+.IX Item "-mno-multi-cond-exec"
+Disable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution.
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mnested\-cond\-exec\fR" 4
+.IX Item "-mnested-cond-exec"
+Enable nested conditional execution optimizations (default).
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mno\-nested\-cond\-exec\fR" 4
+.IX Item "-mno-nested-cond-exec"
+Disable nested conditional execution optimizations.
+.Sp
+This switch is mainly for debugging the compiler and will likely be removed
+in a future version.
+.IP "\fB\-mtomcat\-stats\fR" 4
+.IX Item "-mtomcat-stats"
+Cause gas to print out tomcat statistics.
+.IP "\fB\-mcpu=\fR\fIcpu\fR" 4
+.IX Item "-mcpu=cpu"
+Select the processor type for which to generate code.  Possible values are
+\&\fBsimple\fR, \fBtomcat\fR, \fBfr500\fR, \fBfr400\fR, \fBfr300\fR,
+\&\fBfrv\fR.
+.Sh "Xtensa Options"
+.IX Subsection "Xtensa Options"
+The Xtensa architecture is designed to support many different
+configurations.  The compiler's default options can be set to match a
+particular Xtensa configuration by copying a configuration file into the
+\&\s-1GCC\s0 sources when building \s-1GCC\s0.  The options below may be used to
+override the default options.
+.IP "\fB\-mbig\-endian\fR" 4
+.IX Item "-mbig-endian"
+.PD 0
+.IP "\fB\-mlittle\-endian\fR" 4
+.IX Item "-mlittle-endian"
+.PD
+Specify big-endian or little-endian byte ordering for the target Xtensa
+processor.
+.IP "\fB\-mdensity\fR" 4
+.IX Item "-mdensity"
+.PD 0
+.IP "\fB\-mno\-density\fR" 4
+.IX Item "-mno-density"
+.PD
+Enable or disable use of the optional Xtensa code density instructions.
+.IP "\fB\-mmac16\fR" 4
+.IX Item "-mmac16"
+.PD 0
+.IP "\fB\-mno\-mac16\fR" 4
+.IX Item "-mno-mac16"
+.PD
+Enable or disable use of the Xtensa \s-1MAC16\s0 option.  When enabled, \s-1GCC\s0
+will generate \s-1MAC16\s0 instructions from standard C code, with the
+limitation that it will use neither the \s-1MR\s0 register file nor any
+instruction that operates on the \s-1MR\s0 registers.  When this option is
+disabled, \s-1GCC\s0 will translate 16\-bit multiply/accumulate operations to a
+combination of core instructions and library calls, depending on whether
+any other multiplier options are enabled.
+.IP "\fB\-mmul16\fR" 4
+.IX Item "-mmul16"
+.PD 0
+.IP "\fB\-mno\-mul16\fR" 4
+.IX Item "-mno-mul16"
+.PD
+Enable or disable use of the 16\-bit integer multiplier option.  When
+enabled, the compiler will generate 16\-bit multiply instructions for
+multiplications of 16 bits or smaller in standard C code.  When this
+option is disabled, the compiler will either use 32\-bit multiply or
+\&\s-1MAC16\s0 instructions if they are available or generate library calls to
+perform the multiply operations using shifts and adds.
+.IP "\fB\-mmul32\fR" 4
+.IX Item "-mmul32"
+.PD 0
+.IP "\fB\-mno\-mul32\fR" 4
+.IX Item "-mno-mul32"
+.PD
+Enable or disable use of the 32\-bit integer multiplier option.  When
+enabled, the compiler will generate 32\-bit multiply instructions for
+multiplications of 32 bits or smaller in standard C code.  When this
+option is disabled, the compiler will generate library calls to perform
+the multiply operations using either shifts and adds or 16\-bit multiply
+instructions if they are available.
+.IP "\fB\-mnsa\fR" 4
+.IX Item "-mnsa"
+.PD 0
+.IP "\fB\-mno\-nsa\fR" 4
+.IX Item "-mno-nsa"
+.PD
+Enable or disable use of the optional normalization shift amount
+(\f(CW\*(C`NSA\*(C'\fR) instructions to implement the built-in \f(CW\*(C`ffs\*(C'\fR function.
+.IP "\fB\-mminmax\fR" 4
+.IX Item "-mminmax"
+.PD 0
+.IP "\fB\-mno\-minmax\fR" 4
+.IX Item "-mno-minmax"
+.PD
+Enable or disable use of the optional minimum and maximum value
+instructions.
+.IP "\fB\-msext\fR" 4
+.IX Item "-msext"
+.PD 0
+.IP "\fB\-mno\-sext\fR" 4
+.IX Item "-mno-sext"
+.PD
+Enable or disable use of the optional sign extend (\f(CW\*(C`SEXT\*(C'\fR)
+instruction.
+.IP "\fB\-mbooleans\fR" 4
+.IX Item "-mbooleans"
+.PD 0
+.IP "\fB\-mno\-booleans\fR" 4
+.IX Item "-mno-booleans"
+.PD
+Enable or disable support for the boolean register file used by Xtensa
+coprocessors.  This is not typically useful by itself but may be
+required for other options that make use of the boolean registers (e.g.,
+the floating-point option).
+.IP "\fB\-mhard\-float\fR" 4
+.IX Item "-mhard-float"
+.PD 0
+.IP "\fB\-msoft\-float\fR" 4
+.IX Item "-msoft-float"
+.PD
+Enable or disable use of the floating-point option.  When enabled, \s-1GCC\s0
+generates floating-point instructions for 32\-bit \f(CW\*(C`float\*(C'\fR
+operations.  When this option is disabled, \s-1GCC\s0 generates library calls
+to emulate 32\-bit floating-point operations using integer instructions.
+Regardless of this option, 64\-bit \f(CW\*(C`double\*(C'\fR operations are always
+emulated with calls to library functions.
+.IP "\fB\-mfused\-madd\fR" 4
+.IX Item "-mfused-madd"
+.PD 0
+.IP "\fB\-mno\-fused\-madd\fR" 4
+.IX Item "-mno-fused-madd"
+.PD
+Enable or disable use of fused multiply/add and multiply/subtract
+instructions in the floating-point option.  This has no effect if the
+floating-point option is not also enabled.  Disabling fused multiply/add
+and multiply/subtract instructions forces the compiler to use separate
+instructions for the multiply and add/subtract operations.  This may be
+desirable in some cases where strict \s-1IEEE\s0 754\-compliant results are
+required: the fused multiply add/subtract instructions do not round the
+intermediate result, thereby producing results with \fImore\fR bits of
+precision than specified by the \s-1IEEE\s0 standard.  Disabling fused multiply
+add/subtract instructions also ensures that the program output is not
+sensitive to the compiler's ability to combine multiply and add/subtract
+operations.
+.IP "\fB\-mserialize\-volatile\fR" 4
+.IX Item "-mserialize-volatile"
+.PD 0
+.IP "\fB\-mno\-serialize\-volatile\fR" 4
+.IX Item "-mno-serialize-volatile"
+.PD
+When this option is enabled, \s-1GCC\s0 inserts \f(CW\*(C`MEMW\*(C'\fR instructions before
+\&\f(CW\*(C`volatile\*(C'\fR memory references to guarantee sequential consistency.
+The default is \fB\-mserialize\-volatile\fR.  Use
+\&\fB\-mno\-serialize\-volatile\fR to omit the \f(CW\*(C`MEMW\*(C'\fR instructions.
+.IP "\fB\-mtext\-section\-literals\fR" 4
+.IX Item "-mtext-section-literals"
+.PD 0
+.IP "\fB\-mno\-text\-section\-literals\fR" 4
+.IX Item "-mno-text-section-literals"
+.PD
+Control the treatment of literal pools.  The default is
+\&\fB\-mno\-text\-section\-literals\fR, which places literals in a separate
+section in the output file.  This allows the literal pool to be placed
+in a data \s-1RAM/ROM\s0, and it also allows the linker to combine literal
+pools from separate object files to remove redundant literals and
+improve code size.  With \fB\-mtext\-section\-literals\fR, the literals
+are interspersed in the text section in order to keep them as close as
+possible to their references.  This may be necessary for large assembly
+files.
+.IP "\fB\-mtarget\-align\fR" 4
+.IX Item "-mtarget-align"
+.PD 0
+.IP "\fB\-mno\-target\-align\fR" 4
+.IX Item "-mno-target-align"
+.PD
+When this option is enabled, \s-1GCC\s0 instructs the assembler to
+automatically align instructions to reduce branch penalties at the
+expense of some code density.  The assembler attempts to widen density
+instructions to align branch targets and the instructions following call
+instructions.  If there are not enough preceding safe density
+instructions to align a target, no widening will be performed.  The
+default is \fB\-mtarget\-align\fR.  These options do not affect the
+treatment of auto-aligned instructions like \f(CW\*(C`LOOP\*(C'\fR, which the
+assembler will always align, either by widening density instructions or
+by inserting no-op instructions.
+.IP "\fB\-mlongcalls\fR" 4
+.IX Item "-mlongcalls"
+.PD 0
+.IP "\fB\-mno\-longcalls\fR" 4
+.IX Item "-mno-longcalls"
+.PD
+When this option is enabled, \s-1GCC\s0 instructs the assembler to translate
+direct calls to indirect calls unless it can determine that the target
+of a direct call is in the range allowed by the call instruction.  This
+translation typically occurs for calls to functions in other source
+files.  Specifically, the assembler translates a direct \f(CW\*(C`CALL\*(C'\fR
+instruction into an \f(CW\*(C`L32R\*(C'\fR followed by a \f(CW\*(C`CALLX\*(C'\fR instruction.
+The default is \fB\-mno\-longcalls\fR.  This option should be used in
+programs where the call target can potentially be out of range.  This
+option is implemented in the assembler, not the compiler, so the
+assembly code generated by \s-1GCC\s0 will still show direct call
+instructions\-\-\-look at the disassembled object code to see the actual
+instructions.  Note that the assembler will use an indirect call for
+every cross-file call, not just those that really will be out of range.
+.Sh "Options for Code Generation Conventions"
+.IX Subsection "Options for Code Generation Conventions"
+These machine-independent options control the interface conventions
+used in code generation.
+.PP
+Most of them have both positive and negative forms; the negative form
+of \fB\-ffoo\fR would be \fB\-fno\-foo\fR.  In the table below, only
+one of the forms is listed\-\-\-the one which is not the default.  You
+can figure out the other form by either removing \fBno\-\fR or adding
+it.
+.IP "\fB\-fbounds\-check\fR" 4
+.IX Item "-fbounds-check"
+For front-ends that support it, generate additional code to check that
+indices used to access arrays are within the declared range.  This is
+currently only supported by the Java and Fortran 77 front\-ends, where
+this option defaults to true and false respectively.
+.IP "\fB\-ftrapv\fR" 4
+.IX Item "-ftrapv"
+This option generates traps for signed overflow on addition, subtraction,
+multiplication operations.
+.IP "\fB\-fexceptions\fR" 4
+.IX Item "-fexceptions"
+Enable exception handling.  Generates extra code needed to propagate
+exceptions.  For some targets, this implies \s-1GCC\s0 will generate frame
+unwind information for all functions, which can produce significant data
+size overhead, although it does not affect execution.  If you do not
+specify this option, \s-1GCC\s0 will enable it by default for languages like
+\&\*(C+ which normally require exception handling, and disable it for
+languages like C that do not normally require it.  However, you may need
+to enable this option when compiling C code that needs to interoperate
+properly with exception handlers written in \*(C+.  You may also wish to
+disable this option if you are compiling older \*(C+ programs that don't
+use exception handling.
+.IP "\fB\-fnon\-call\-exceptions\fR" 4
+.IX Item "-fnon-call-exceptions"
+Generate code that allows trapping instructions to throw exceptions.
+Note that this requires platform-specific runtime support that does
+not exist everywhere.  Moreover, it only allows \fItrapping\fR
+instructions to throw exceptions, i.e. memory references or floating
+point instructions.  It does not allow exceptions to be thrown from
+arbitrary signal handlers such as \f(CW\*(C`SIGALRM\*(C'\fR.
+.IP "\fB\-funwind\-tables\fR" 4
+.IX Item "-funwind-tables"
+Similar to \fB\-fexceptions\fR, except that it will just generate any needed
+static data, but will not affect the generated code in any other way.
+You will normally not enable this option; instead, a language processor
+that needs this handling would enable it on your behalf.
+.IP "\fB\-fasynchronous\-unwind\-tables\fR" 4
+.IX Item "-fasynchronous-unwind-tables"
+Generate unwind table in dwarf2 format, if supported by target machine.  The
+table is exact at each instruction boundary, so it can be used for stack
+unwinding from asynchronous events (such as debugger or garbage collector).
+.IP "\fB\-fpcc\-struct\-return\fR" 4
+.IX Item "-fpcc-struct-return"
+Return ``short'' \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
+longer ones, rather than in registers.  This convention is less
+efficient, but it has the advantage of allowing intercallability between
+GCC-compiled files and files compiled with other compilers, particularly
+the Portable C Compiler (pcc).
+.Sp
+The precise convention for returning structures in memory depends
+on the target configuration macros.
+.Sp
+Short structures and unions are those whose size and alignment match
+that of some integer type.
+.Sp
+\&\fBWarning:\fR code compiled with the \fB\-fpcc\-struct\-return\fR
+switch is not binary compatible with code compiled with the
+\&\fB\-freg\-struct\-return\fR switch.
+Use it to conform to a non-default application binary interface.
+.IP "\fB\-freg\-struct\-return\fR" 4
+.IX Item "-freg-struct-return"
+Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
+This is more efficient for small structures than
+\&\fB\-fpcc\-struct\-return\fR.
+.Sp
+If you specify neither \fB\-fpcc\-struct\-return\fR nor
+\&\fB\-freg\-struct\-return\fR, \s-1GCC\s0 defaults to whichever convention is
+standard for the target.  If there is no standard convention, \s-1GCC\s0
+defaults to \fB\-fpcc\-struct\-return\fR, except on targets where \s-1GCC\s0 is
+the principal compiler.  In those cases, we can choose the standard, and
+we chose the more efficient register return alternative.
+.Sp
+\&\fBWarning:\fR code compiled with the \fB\-freg\-struct\-return\fR
+switch is not binary compatible with code compiled with the
+\&\fB\-fpcc\-struct\-return\fR switch.
+Use it to conform to a non-default application binary interface.
+.IP "\fB\-fshort\-enums\fR" 4
+.IX Item "-fshort-enums"
+Allocate to an \f(CW\*(C`enum\*(C'\fR type only as many bytes as it needs for the
+declared range of possible values.  Specifically, the \f(CW\*(C`enum\*(C'\fR type
+will be equivalent to the smallest integer type which has enough room.
+.Sp
+\&\fBWarning:\fR the \fB\-fshort\-enums\fR switch causes \s-1GCC\s0 to generate
+code that is not binary compatible with code generated without that switch.
+Use it to conform to a non-default application binary interface.
+.IP "\fB\-fshort\-double\fR" 4
+.IX Item "-fshort-double"
+Use the same size for \f(CW\*(C`double\*(C'\fR as for \f(CW\*(C`float\*(C'\fR.
+.Sp
+\&\fBWarning:\fR the \fB\-fshort\-double\fR switch causes \s-1GCC\s0 to generate
+code that is not binary compatible with code generated without that switch.
+Use it to conform to a non-default application binary interface.
+.IP "\fB\-fshort\-wchar\fR" 4
+.IX Item "-fshort-wchar"
+Override the underlying type for \fBwchar_t\fR to be \fBshort
+unsigned int\fR instead of the default for the target.  This option is
+useful for building programs to run under \s-1WINE\s0.
+.Sp
+\&\fBWarning:\fR the \fB\-fshort\-wchar\fR switch causes \s-1GCC\s0 to generate
+code that is not binary compatible with code generated without that switch.
+Use it to conform to a non-default application binary interface.
+.IP "\fB\-fshared\-data\fR" 4
+.IX Item "-fshared-data"
+Requests that the data and non\-\f(CW\*(C`const\*(C'\fR variables of this
+compilation be shared data rather than private data.  The distinction
+makes sense only on certain operating systems, where shared data is
+shared between processes running the same program, while private data
+exists in one copy per process.
+.IP "\fB\-fno\-common\fR" 4
+.IX Item "-fno-common"
+In C, allocate even uninitialized global variables in the data section of the
+object file, rather than generating them as common blocks.  This has the
+effect that if the same variable is declared (without \f(CW\*(C`extern\*(C'\fR) in
+two different compilations, you will get an error when you link them.
+The only reason this might be useful is if you wish to verify that the
+program will work on other systems which always work this way.
+.IP "\fB\-fno\-ident\fR" 4
+.IX Item "-fno-ident"
+Ignore the \fB#ident\fR directive.
+.IP "\fB\-fno\-gnu\-linker\fR" 4
+.IX Item "-fno-gnu-linker"
+Do not output global initializations (such as \*(C+ constructors and
+destructors) in the form used by the \s-1GNU\s0 linker (on systems where the \s-1GNU\s0
+linker is the standard method of handling them).  Use this option when
+you want to use a non-GNU linker, which also requires using the
+\&\fBcollect2\fR program to make sure the system linker includes
+constructors and destructors.  (\fBcollect2\fR is included in the \s-1GCC\s0
+distribution.)  For systems which \fImust\fR use \fBcollect2\fR, the
+compiler driver \fBgcc\fR is configured to do this automatically.
+.IP "\fB\-finhibit\-size\-directive\fR" 4
+.IX Item "-finhibit-size-directive"
+Don't output a \f(CW\*(C`.size\*(C'\fR assembler directive, or anything else that
+would cause trouble if the function is split in the middle, and the
+two halves are placed at locations far apart in memory.  This option is
+used when compiling \fIcrtstuff.c\fR; you should not need to use it
+for anything else.
+.IP "\fB\-fverbose\-asm\fR" 4
+.IX Item "-fverbose-asm"
+Put extra commentary information in the generated assembly code to
+make it more readable.  This option is generally only of use to those
+who actually need to read the generated assembly code (perhaps while
+debugging the compiler itself).
+.Sp
+\&\fB\-fno\-verbose\-asm\fR, the default, causes the
+extra information to be omitted and is useful when comparing two assembler
+files.
+.IP "\fB\-fvolatile\fR" 4
+.IX Item "-fvolatile"
+Consider all memory references through pointers to be volatile.
+.IP "\fB\-fvolatile\-global\fR" 4
+.IX Item "-fvolatile-global"
+Consider all memory references to extern and global data items to
+be volatile.  \s-1GCC\s0 does not consider static data items to be volatile
+because of this switch.
+.IP "\fB\-fvolatile\-static\fR" 4
+.IX Item "-fvolatile-static"
+Consider all memory references to static data to be volatile.
+.IP "\fB\-fpic\fR" 4
+.IX Item "-fpic"
+Generate position-independent code (\s-1PIC\s0) suitable for use in a shared
+library, if supported for the target machine.  Such code accesses all
+constant addresses through a global offset table (\s-1GOT\s0).  The dynamic
+loader resolves the \s-1GOT\s0 entries when the program starts (the dynamic
+loader is not part of \s-1GCC\s0; it is part of the operating system).  If
+the \s-1GOT\s0 size for the linked executable exceeds a machine-specific
+maximum size, you get an error message from the linker indicating that
+\&\fB\-fpic\fR does not work; in that case, recompile with \fB\-fPIC\fR
+instead.  (These maximums are 16k on the m88k, 8k on the \s-1SPARC\s0, and 32k
+on the m68k and \s-1RS/6000\s0.  The 386 has no such limit.)
+.Sp
+Position-independent code requires special support, and therefore works
+only on certain machines.  For the 386, \s-1GCC\s0 supports \s-1PIC\s0 for System V
+but not for the Sun 386i.  Code generated for the \s-1IBM\s0 \s-1RS/6000\s0 is always
+position\-independent.
+.IP "\fB\-fPIC\fR" 4
+.IX Item "-fPIC"
+If supported for the target machine, emit position-independent code,
+suitable for dynamic linking and avoiding any limit on the size of the
+global offset table.  This option makes a difference on the m68k, m88k,
+and the \s-1SPARC\s0.
+.Sp
+Position-independent code requires special support, and therefore works
+only on certain machines.
+.IP "\fB\-fpie\fR" 4
+.IX Item "-fpie"
+.PD 0
+.IP "\fB\-fPIE\fR" 4
+.IX Item "-fPIE"
+.PD
+These options are similar to \fB\-fpic\fR and \fB\-fPIC\fR, but
+generated position independent code can be only linked into executables.
+Usually these options are used when \fB\-pie\fR \s-1GCC\s0 option will be
+used during linking.
+.IP "\fB\-ffixed\-\fR\fIreg\fR" 4
+.IX Item "-ffixed-reg"
+Treat the register named \fIreg\fR as a fixed register; generated code
+should never refer to it (except perhaps as a stack pointer, frame
+pointer or in some other fixed role).
+.Sp
+\&\fIreg\fR must be the name of a register.  The register names accepted
+are machine-specific and are defined in the \f(CW\*(C`REGISTER_NAMES\*(C'\fR
+macro in the machine description macro file.
+.Sp
+This flag does not have a negative form, because it specifies a
+three-way choice.
+.IP "\fB\-fcall\-used\-\fR\fIreg\fR" 4
+.IX Item "-fcall-used-reg"
+Treat the register named \fIreg\fR as an allocable register that is
+clobbered by function calls.  It may be allocated for temporaries or
+variables that do not live across a call.  Functions compiled this way
+will not save and restore the register \fIreg\fR.
+.Sp
+It is an error to used this flag with the frame pointer or stack pointer.
+Use of this flag for other registers that have fixed pervasive roles in
+the machine's execution model will produce disastrous results.
+.Sp
+This flag does not have a negative form, because it specifies a
+three-way choice.
+.IP "\fB\-fcall\-saved\-\fR\fIreg\fR" 4
+.IX Item "-fcall-saved-reg"
+Treat the register named \fIreg\fR as an allocable register saved by
+functions.  It may be allocated even for temporaries or variables that
+live across a call.  Functions compiled this way will save and restore
+the register \fIreg\fR if they use it.
+.Sp
+It is an error to used this flag with the frame pointer or stack pointer.
+Use of this flag for other registers that have fixed pervasive roles in
+the machine's execution model will produce disastrous results.
+.Sp
+A different sort of disaster will result from the use of this flag for
+a register in which function values may be returned.
+.Sp
+This flag does not have a negative form, because it specifies a
+three-way choice.
+.IP "\fB\-fpack\-struct\fR" 4
+.IX Item "-fpack-struct"
+Pack all structure members together without holes.
+.Sp
+\&\fBWarning:\fR the \fB\-fpack\-struct\fR switch causes \s-1GCC\s0 to generate
+code that is not binary compatible with code generated without that switch.
+Additionally, it makes the code suboptimal.
+Use it to conform to a non-default application binary interface.
+.IP "\fB\-finstrument\-functions\fR" 4
+.IX Item "-finstrument-functions"
+Generate instrumentation calls for entry and exit to functions.  Just
+after function entry and just before function exit, the following
+profiling functions will be called with the address of the current
+function and its call site.  (On some platforms,
+\&\f(CW\*(C`_\|_builtin_return_address\*(C'\fR does not work beyond the current
+function, so the call site information may not be available to the
+profiling functions otherwise.)
+.Sp
+.Vb 4
+\&        void __cyg_profile_func_enter (void *this_fn,
+\&                                       void *call_site);
+\&        void __cyg_profile_func_exit  (void *this_fn,
+\&                                       void *call_site);
+.Ve
+.Sp
+The first argument is the address of the start of the current function,
+which may be looked up exactly in the symbol table.
+.Sp
+This instrumentation is also done for functions expanded inline in other
+functions.  The profiling calls will indicate where, conceptually, the
+inline function is entered and exited.  This means that addressable
+versions of such functions must be available.  If all your uses of a
+function are expanded inline, this may mean an additional expansion of
+code size.  If you use \fBextern inline\fR in your C code, an
+addressable version of such functions must be provided.  (This is
+normally the case anyways, but if you get lucky and the optimizer always
+expands the functions inline, you might have gotten away without
+providing static copies.)
+.Sp
+A function may be given the attribute \f(CW\*(C`no_instrument_function\*(C'\fR, in
+which case this instrumentation will not be done.  This can be used, for
+example, for the profiling functions listed above, high-priority
+interrupt routines, and any functions from which the profiling functions
+cannot safely be called (perhaps signal handlers, if the profiling
+routines generate output or allocate memory).
+.IP "\fB\-fstack\-check\fR" 4
+.IX Item "-fstack-check"
+Generate code to verify that you do not go beyond the boundary of the
+stack.  You should specify this flag if you are running in an
+environment with multiple threads, but only rarely need to specify it in
+a single-threaded environment since stack overflow is automatically
+detected on nearly all systems if there is only one stack.
+.Sp
+Note that this switch does not actually cause checking to be done; the
+operating system must do that.  The switch causes generation of code
+to ensure that the operating system sees the stack being extended.
+.IP "\fB\-fstack\-limit\-register=\fR\fIreg\fR" 4
+.IX Item "-fstack-limit-register=reg"
+.PD 0
+.IP "\fB\-fstack\-limit\-symbol=\fR\fIsym\fR" 4
+.IX Item "-fstack-limit-symbol=sym"
+.IP "\fB\-fno\-stack\-limit\fR" 4
+.IX Item "-fno-stack-limit"
+.PD
+Generate code to ensure that the stack does not grow beyond a certain value,
+either the value of a register or the address of a symbol.  If the stack
+would grow beyond the value, a signal is raised.  For most targets,
+the signal is raised before the stack overruns the boundary, so
+it is possible to catch the signal without taking special precautions.
+.Sp
+For instance, if the stack starts at absolute address \fB0x80000000\fR
+and grows downwards, you can use the flags
+\&\fB\-fstack\-limit\-symbol=_\|_stack_limit\fR and
+\&\fB\-Wl,\-\-defsym,_\|_stack_limit=0x7ffe0000\fR to enforce a stack limit
+of 128KB.  Note that this may only work with the \s-1GNU\s0 linker.
+.IP "\fB\-fargument\-alias\fR" 4
+.IX Item "-fargument-alias"
+.PD 0
+.IP "\fB\-fargument\-noalias\fR" 4
+.IX Item "-fargument-noalias"
+.IP "\fB\-fargument\-noalias\-global\fR" 4
+.IX Item "-fargument-noalias-global"
+.PD
+Specify the possible relationships among parameters and between
+parameters and global data.
+.Sp
+\&\fB\-fargument\-alias\fR specifies that arguments (parameters) may
+alias each other and may alias global storage.\fB\-fargument\-noalias\fR specifies that arguments do not alias
+each other, but may alias global storage.\fB\-fargument\-noalias\-global\fR specifies that arguments do not
+alias each other and do not alias global storage.
+.Sp
+Each language will automatically use whatever option is required by
+the language standard.  You should not need to use these options yourself.
+.IP "\fB\-fleading\-underscore\fR" 4
+.IX Item "-fleading-underscore"
+This option and its counterpart, \fB\-fno\-leading\-underscore\fR, forcibly
+change the way C symbols are represented in the object file.  One use
+is to help link with legacy assembly code.
+.Sp
+\&\fBWarning:\fR the \fB\-fleading\-underscore\fR switch causes \s-1GCC\s0 to
+generate code that is not binary compatible with code generated without that
+switch.  Use it to conform to a non-default application binary interface.
+Not all targets provide complete support for this switch.
+.IP "\fB\-ftls\-model=\fR\fImodel\fR" 4
+.IX Item "-ftls-model=model"
+Alter the thread-local storage model to be used.
+The \fImodel\fR argument should be one of \f(CW\*(C`global\-dynamic\*(C'\fR,
+\&\f(CW\*(C`local\-dynamic\*(C'\fR, \f(CW\*(C`initial\-exec\*(C'\fR or \f(CW\*(C`local\-exec\*(C'\fR.
+.Sp
+The default without \fB\-fpic\fR is \f(CW\*(C`initial\-exec\*(C'\fR; with
+\&\fB\-fpic\fR the default is \f(CW\*(C`global\-dynamic\*(C'\fR.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+This section describes several environment variables that affect how \s-1GCC\s0
+operates.  Some of them work by specifying directories or prefixes to use
+when searching for various kinds of files.  Some are used to specify other
+aspects of the compilation environment.
+.PP
+Note that you can also specify places to search using options such as
+\&\fB\-B\fR, \fB\-I\fR and \fB\-L\fR.  These
+take precedence over places specified using environment variables, which
+in turn take precedence over those specified by the configuration of \s-1GCC\s0.
+.IP "\fB\s-1LANG\s0\fR" 4
+.IX Item "LANG"
+.PD 0
+.IP "\fB\s-1LC_CTYPE\s0\fR" 4
+.IX Item "LC_CTYPE"
+.IP "\fB\s-1LC_MESSAGES\s0\fR" 4
+.IX Item "LC_MESSAGES"
+.IP "\fB\s-1LC_ALL\s0\fR" 4
+.IX Item "LC_ALL"
+.PD
+These environment variables control the way that \s-1GCC\s0 uses
+localization information that allow \s-1GCC\s0 to work with different
+national conventions.  \s-1GCC\s0 inspects the locale categories
+\&\fB\s-1LC_CTYPE\s0\fR and \fB\s-1LC_MESSAGES\s0\fR if it has been configured to do
+so.  These locale categories can be set to any value supported by your
+installation.  A typical value is \fBen_UK\fR for English in the United
+Kingdom.
+.Sp
+The \fB\s-1LC_CTYPE\s0\fR environment variable specifies character
+classification.  \s-1GCC\s0 uses it to determine the character boundaries in
+a string; this is needed for some multibyte encodings that contain quote
+and escape characters that would otherwise be interpreted as a string
+end or escape.
+.Sp
+The \fB\s-1LC_MESSAGES\s0\fR environment variable specifies the language to
+use in diagnostic messages.
+.Sp
+If the \fB\s-1LC_ALL\s0\fR environment variable is set, it overrides the value
+of \fB\s-1LC_CTYPE\s0\fR and \fB\s-1LC_MESSAGES\s0\fR; otherwise, \fB\s-1LC_CTYPE\s0\fR
+and \fB\s-1LC_MESSAGES\s0\fR default to the value of the \fB\s-1LANG\s0\fR
+environment variable.  If none of these variables are set, \s-1GCC\s0
+defaults to traditional C English behavior.
+.IP "\fB\s-1TMPDIR\s0\fR" 4
+.IX Item "TMPDIR"
+If \fB\s-1TMPDIR\s0\fR is set, it specifies the directory to use for temporary
+files.  \s-1GCC\s0 uses temporary files to hold the output of one stage of
+compilation which is to be used as input to the next stage: for example,
+the output of the preprocessor, which is the input to the compiler
+proper.
+.IP "\fB\s-1GCC_EXEC_PREFIX\s0\fR" 4
+.IX Item "GCC_EXEC_PREFIX"
+If \fB\s-1GCC_EXEC_PREFIX\s0\fR is set, it specifies a prefix to use in the
+names of the subprograms executed by the compiler.  No slash is added
+when this prefix is combined with the name of a subprogram, but you can
+specify a prefix that ends with a slash if you wish.
+.Sp
+If \fB\s-1GCC_EXEC_PREFIX\s0\fR is not set, \s-1GCC\s0 will attempt to figure out
+an appropriate prefix to use based on the pathname it was invoked with.
+.Sp
+If \s-1GCC\s0 cannot find the subprogram using the specified prefix, it
+tries looking in the usual places for the subprogram.
+.Sp
+The default value of \fB\s-1GCC_EXEC_PREFIX\s0\fR is
+\&\fI\fIprefix\fI/lib/gcc\-lib/\fR where \fIprefix\fR is the value
+of \f(CW\*(C`prefix\*(C'\fR when you ran the \fIconfigure\fR script.
+.Sp
+Other prefixes specified with \fB\-B\fR take precedence over this prefix.
+.Sp
+This prefix is also used for finding files such as \fIcrt0.o\fR that are
+used for linking.
+.Sp
+In addition, the prefix is used in an unusual way in finding the
+directories to search for header files.  For each of the standard
+directories whose name normally begins with \fB/usr/local/lib/gcc\-lib\fR
+(more precisely, with the value of \fB\s-1GCC_INCLUDE_DIR\s0\fR), \s-1GCC\s0 tries
+replacing that beginning with the specified prefix to produce an
+alternate directory name.  Thus, with \fB\-Bfoo/\fR, \s-1GCC\s0 will search
+\&\fIfoo/bar\fR where it would normally search \fI/usr/local/lib/bar\fR.
+These alternate directories are searched first; the standard directories
+come next.
+.IP "\fB\s-1COMPILER_PATH\s0\fR" 4
+.IX Item "COMPILER_PATH"
+The value of \fB\s-1COMPILER_PATH\s0\fR is a colon-separated list of
+directories, much like \fB\s-1PATH\s0\fR.  \s-1GCC\s0 tries the directories thus
+specified when searching for subprograms, if it can't find the
+subprograms using \fB\s-1GCC_EXEC_PREFIX\s0\fR.
+.IP "\fB\s-1LIBRARY_PATH\s0\fR" 4
+.IX Item "LIBRARY_PATH"
+The value of \fB\s-1LIBRARY_PATH\s0\fR is a colon-separated list of
+directories, much like \fB\s-1PATH\s0\fR.  When configured as a native compiler,
+\&\s-1GCC\s0 tries the directories thus specified when searching for special
+linker files, if it can't find them using \fB\s-1GCC_EXEC_PREFIX\s0\fR.  Linking
+using \s-1GCC\s0 also uses these directories when searching for ordinary
+libraries for the \fB\-l\fR option (but directories specified with
+\&\fB\-L\fR come first).
+.IP "\fB\s-1LANG\s0\fR" 4
+.IX Item "LANG"
+This variable is used to pass locale information to the compiler.  One way in
+which this information is used is to determine the character set to be used
+when character literals, string literals and comments are parsed in C and \*(C+.
+When the compiler is configured to allow multibyte characters,
+the following values for \fB\s-1LANG\s0\fR are recognized:
+.RS 4
+.IP "\fBC\-JIS\fR" 4
+.IX Item "C-JIS"
+Recognize \s-1JIS\s0 characters.
+.IP "\fBC\-SJIS\fR" 4
+.IX Item "C-SJIS"
+Recognize \s-1SJIS\s0 characters.
+.IP "\fBC\-EUCJP\fR" 4
+.IX Item "C-EUCJP"
+Recognize \s-1EUCJP\s0 characters.
+.RE
+.RS 4
+.Sp
+If \fB\s-1LANG\s0\fR is not defined, or if it has some other value, then the
+compiler will use mblen and mbtowc as defined by the default locale to
+recognize and translate multibyte characters.
+.RE
+.PP
+Some additional environments variables affect the behavior of the
+preprocessor.
+.IP "\fB\s-1CPATH\s0\fR" 4
+.IX Item "CPATH"
+.PD 0
+.IP "\fBC_INCLUDE_PATH\fR" 4
+.IX Item "C_INCLUDE_PATH"
+.IP "\fB\s-1CPLUS_INCLUDE_PATH\s0\fR" 4
+.IX Item "CPLUS_INCLUDE_PATH"
+.IP "\fB\s-1OBJC_INCLUDE_PATH\s0\fR" 4
+.IX Item "OBJC_INCLUDE_PATH"
+.PD
+Each variable's value is a list of directories separated by a special
+character, much like \fB\s-1PATH\s0\fR, in which to look for header files.
+The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target-dependent and
+determined at \s-1GCC\s0 build time.  For Windows-based targets it is a
+semicolon, and for almost all other targets it is a colon.
+.Sp
+\&\fB\s-1CPATH\s0\fR specifies a list of directories to be searched as if
+specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
+options on the command line.  This environment variable is used
+regardless of which language is being preprocessed.
+.Sp
+The remaining environment variables apply only when preprocessing the
+particular language indicated.  Each specifies a list of directories
+to be searched as if specified with \fB\-isystem\fR, but after any
+paths given with \fB\-isystem\fR options on the command line.
+.Sp
+In all these variables, an empty element instructs the compiler to
+search its current working directory.  Empty elements can appear at the
+beginning or end of a path.  For instance, if the value of
+\&\fB\s-1CPATH\s0\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
+effect as \fB\-I.\ \-I/special/include\fR.
+.IP "\fB\s-1DEPENDENCIES_OUTPUT\s0\fR" 4
+.IX Item "DEPENDENCIES_OUTPUT"
+If this variable is set, its value specifies how to output
+dependencies for Make based on the non-system header files processed
+by the compiler.  System header files are ignored in the dependency
+output.
+.Sp
+The value of \fB\s-1DEPENDENCIES_OUTPUT\s0\fR can be just a file name, in
+which case the Make rules are written to that file, guessing the target
+name from the source file name.  Or the value can have the form
+\&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
+file \fIfile\fR using \fItarget\fR as the target name.
+.Sp
+In other words, this environment variable is equivalent to combining
+the options \fB\-MM\fR and \fB\-MF\fR,
+with an optional \fB\-MT\fR switch too.
+.IP "\fB\s-1SUNPRO_DEPENDENCIES\s0\fR" 4
+.IX Item "SUNPRO_DEPENDENCIES"
+This variable is the same as \fB\s-1DEPENDENCIES_OUTPUT\s0\fR (see above),
+except that system header files are not ignored, so it implies
+\&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
+main input file is omitted.
+.SH "BUGS"
+.IX Header "BUGS"
+For instructions on reporting bugs, see
+<\fBhttp://gcc.gnu.org/bugs.html\fR>.  Use of the \fBgccbug\fR
+script to report bugs is recommended.
+.SH "FOOTNOTES"
+.IX Header "FOOTNOTES"
+.IP "1." 4
+On some systems, \fBgcc \-shared\fR
+needs to build supplementary stub code for constructors to work.  On
+multi-libbed systems, \fBgcc \-shared\fR must select the correct support
+libraries to link against.  Failing to supply the correct flags may lead
+to subtle defects.  Supplying them in cases where they are not necessary
+is innocuous.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
+\&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIg77\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIadb\fR\|(1), \fIdbx\fR\|(1), \fIsdb\fR\|(1)
+and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIg77\fR, \fIas\fR,
+\&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+See the Info entry for \fBgcc\fR, or
+<\fBhttp://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
+for contributors to \s-1GCC\s0.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``\s-1GNU\s0 General Public License'' and ``Funding
+Free Software'', the Front-Cover texts being (a) (see below), and with
+the Back-Cover Texts being (b) (see below).  A copy of the license is
+included in the \fIgfdl\fR\|(7) man page.
+.PP
+(a) The \s-1FSF\s0's Front-Cover Text is:
+.PP
+.Vb 1
+\&     A GNU Manual
+.Ve
+.PP
+(b) The \s-1FSF\s0's Back-Cover Text is:
+.PP
+.Vb 3
+\&     You have freedom to copy and modify this GNU Manual, like GNU
+\&     software.  Copies published by the Free Software Foundation raise
+\&     funds for GNU development.
+.Ve
diff --git a/raw/man1/gedit.1 b/raw/man1/gedit.1
new file mode 100644
index 0000000..c39dfd5
--- /dev/null
+++ b/raw/man1/gedit.1
@@ -0,0 +1,61 @@
+.TH GEDIT l "05 Jan 2003"
+.SH NAME
+\fBgedit\fP \- simple text editor for GNOME
+
+The gedit application is a simple text editor. You can use gedit to create and edit text files. You can use gedit plugins to perform a variety of tasks related to text-editing from within the gedit window.
+
+.SH SYNTAX
+.B gedit
+.RI [--help]
+.RI [--debug [-section]]
+.RI [--new-window]
+.RI [--new-document]
+.RI [--quit]
+.RI [filename(s)...]
+.SH DESCRIPTION
+.B gedit
+is a text editor for the GNOME Desktop.
+.LP
+.SH OPTIONS
+
+.TP
+\fB\-\-help\fR
+Prints the command line options.
+.TP
+\fB\-\-debug[-section]\fR
+Runs gedit in debug mode. In debug mode function names are dumped to the console when they are invoked. Specific sections for debugging are allowed.  The sections are: window, commands, document, file, plugins, prefs, print, search,
+undo, view and recent. Run `gedit \-\-help' for more information.
+.TP
+\fB\-\-new\-window\fR
+Create a new toplevel window in an existing instance of gedit.
+.TP
+\fB\-\-new\-document\fR
+Create a new document in an existing instance of gedit.
+.TP
+\fB\-\-quit\fR
+Quit an existing instance of gedit.
+.TP
+\fBfilename(s)...\fR
+Specifies the file to open when gedit starts - if this is not specified, gedit will
+load a blank file with an Untitled label. Multiple files can be loaded if they are
+separated by spaces.  
+gedit also supports handling of remote files.  For example, you can pass the location of a webpage to gedit, like "http://www.gnome.org", or load a file from a FTP server,
+like "ftp://ftp.gnome.org/robots.txt".
+.SH PIPES
+Gedit accepts pipes, so it can be run after another command to load the output into
+gedit. For example :
+.TP
+ls -l | gedit
+.PB
+.SH BUGS
+If you find a bug, please report it at http://bugzilla.gnome.org/enter_bug.cgi?product=gedit.
+
+.SH AUTHORS
+Paolo Maggi (maggi at athena.polito.it)
+.TP
+James Willcox (jwillcox at cs.indiana.edu)
+.TP
+Federico Mena Quintero (federico at ximian.com)
+.TP
+Chema Celorio (chema at celorio.com)
+
diff --git a/raw/man1/getopts.1 b/raw/man1/getopts.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/getopts.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/gnroff.1 b/raw/man1/gnroff.1
new file mode 100644
index 0000000..ef67cae
--- /dev/null
+++ b/raw/man1/gnroff.1
@@ -0,0 +1,144 @@
+.ig
+Copyright (C) 1989-2001 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.TH NROFF 1 "23 September 2003" "Groff Version 1.18.1"
+.SH NAME
+nroff \- emulate nroff command with groff
+.SH SYNOPSIS
+.nr a \n(.j
+.ad l
+.nr i \n(.i
+.in +\w'\fBnroff 'u
+.ti \niu
+.B nroff
+.de OP
+.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
+.el .RB "[\ " "\\$1" "\ ]"
+..
+.OP \-h
+.OP \-i
+.OP \-m name
+.OP \-n num
+.OP \-o list
+.OP \-p
+.OP \-r cn
+.OP \-S
+.OP \-t
+.OP \-T name
+.OP \-U
+.OP \-v
+.RI "[\ " "file" "\ .\|.\|.\ ]"
+.br
+.ad \na
+.SH DESCRIPTION
+The
+.B nroff
+script emulates the
+.B nroff
+command using groff.
+Only 
+.BR ascii ,
+.BR ascii8 ,
+.BR latin1 ,
+.BR utf8 ,
+.BR nippon ,
+and
+.B cp1047
+are valid arguments for the
+.B -T
+option.
+If an invalid or no
+.BR \-T
+option is given,
+.B nroff
+checks the current locale to select a default output device.
+It first tries the
+.B locale
+program, then the environment variables
+.BR LC_ALL ,
+.BR LC_CTYPE ,
+and
+.BR LANG ,
+and finally the
+.B LESSCHARSET
+environment variable.
+.PP
+The
+.B \-h
+and
+.B \-c
+options
+are equivalent to
+.BR grotty 's
+options
+.B \-h
+(using tabs in the output) and
+.B \-c
+(using the old output scheme instead of SGR escape sequences).
+The
+.BR \-C ,
+.BR \-i ,
+.BR \-n ,
+.BR \-m ,
+.BR \-o ,
+and
+.B \-r
+options have the effect described in
+.BR troff (1).
+In addition,
+.B nroff
+silently ignores the options
+.BR \-e ,
+.BR \-q ,
+and
+.BR \-s
+(which are not implemented in
+.BR troff ).
+Options 
+.B \-p
+(pic),
+.B \-t
+(tbl),
+.B \-S
+(safer), and
+.B \-U
+(unsafe) are passed to
+.BR groff . 
+.B \-v
+shows the version number.
+.SH ENVIRONMENT
+.TP
+.SM
+.B GROFF_BIN_PATH
+A colon separated list of directories in which to search for the
+.B groff
+executable before searching in PATH.  If unset, `/usr/bin' is used.
+.SH NOTES
+This shell script is basically intended for use with
+.BR man (1),
+so warnings are suppressed.
+nroff-style character definitions (in the file tty-char.tmac) are also
+loaded to emulate unrepresentable glyphs.
+.SH "SEE ALSO"
+.BR groff (1),
+.BR troff (1),
+.BR grotty (1)
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/raw/man1/grep.1 b/raw/man1/grep.1
new file mode 100644
index 0000000..7278813
--- /dev/null
+++ b/raw/man1/grep.1
@@ -0,0 +1,782 @@
+.\" grep man page
+.if !\n(.g \{\
+.	if !\w|\*(lq| \{\
+.		ds lq ``
+.		if \w'\(lq' .ds lq "\(lq
+.	\}
+.	if !\w|\*(rq| \{\
+.		ds rq ''
+.		if \w'\(rq' .ds rq "\(rq
+.	\}
+.\}
+.de Id
+.ds Dt \\$4
+..
+.TH GREP 1 \*(Dt "GNU Project"
+.SH NAME
+grep, egrep, fgrep \- print lines matching a pattern
+.SH SYNOPSIS
+.B grep
+.RI [ options ]
+.I PATTERN
+.RI [ FILE .\|.\|.]
+.br
+.B grep
+.RI [ options ]
+.RB [ \-e
+.I PATTERN
+|
+.B \-f
+.IR FILE ]
+.RI [ FILE .\|.\|.]
+.SH DESCRIPTION
+.PP
+.B Grep
+searches the named input
+.IR FILE s
+(or standard input if no files are named, or
+the file name
+.B \-
+is given)
+for lines containing a match to the given
+.IR PATTERN .
+By default,
+.B grep
+prints the matching lines.
+.PP
+In addition, two variant programs
+.B egrep
+and
+.B fgrep
+are available.
+.B Egrep
+is the same as
+.BR "grep\ \-E" .
+.B Fgrep
+is the same as
+.BR "grep\ \-F" .
+.SH OPTIONS
+.TP
+.BI \-A " NUM" "\fR,\fP \-\^\-after-context=" NUM
+Print
+.I NUM
+lines of trailing context after matching lines.
+Places a line containing
+.B \-\^\-
+between contiguous groups of matches.
+.TP
+.BR \-a ", " \-\^\-text
+Process a binary file as if it were text; this is equivalent to the
+.B \-\^\-binary-files=text
+option.
+.TP
+.BI \-B " NUM" "\fR,\fP \-\^\-before-context=" NUM
+Print
+.I NUM
+lines of leading context before matching lines.
+Places a line containing
+.B \-\^\-
+between contiguous groups of matches.
+.TP
+.BI \-C " NUM" "\fR,\fP \-\^\-context=" NUM
+Print
+.I NUM
+lines of output context.
+Places a line containing
+.B \-\^\-
+between contiguous groups of matches.
+.TP
+.BR \-b ", " \-\^\-byte-offset
+Print the byte offset within the input file before
+each line of output.
+.TP
+.BI \-\^\-binary-files= TYPE
+If the first few bytes of a file indicate that the file contains binary
+data, assume that the file is of type
+.IR TYPE .
+By default,
+.I TYPE
+is
+.BR binary ,
+and
+.B grep
+normally outputs either
+a one-line message saying that a binary file matches, or no message if
+there is no match.
+If
+.I TYPE
+is
+.BR without-match ,
+.B grep
+assumes that a binary file does not match; this is equivalent to the
+.B \-I
+option.
+If
+.I TYPE
+is
+.BR text ,
+.B grep
+processes a binary file as if it were text; this is equivalent to the
+.B \-a
+option.
+.I Warning:
+.B "grep \-\^\-binary-files=text"
+might output binary garbage,
+which can have nasty side effects if the output is a terminal and if the
+terminal driver interprets some of it as commands.
+.TP
+.BI \-\^\-colour[=\fIWHEN\fR] ", " \-\^\-color[=\fIWHEN\fR]
+Surround the matching string with the marker find in
+.B GREP_COLOR
+environment variable. WHEN may be `never', `always', or `auto'
+.TP
+.BR \-c ", " \-\^\-count
+Suppress normal output; instead print a count of
+matching lines for each input file.
+With the
+.BR \-v ", " \-\^\-invert-match
+option (see below), count non-matching lines.
+.TP
+.BI \-D " ACTION" "\fR,\fP \-\^\-devices=" ACTION
+If an input file is a device, FIFO or socket, use
+.I ACTION
+to process it.  By default,
+.I ACTION
+is
+.BR read ,
+which means that devices are read just as if they were ordinary files.
+If
+.I ACTION
+is
+.BR skip ,
+devices are silently skipped.
+.TP
+.BI \-d " ACTION" "\fR,\fP \-\^\-directories=" ACTION
+If an input file is a directory, use
+.I ACTION
+to process it.  By default,
+.I ACTION
+is
+.BR read ,
+which means that directories are read just as if they were ordinary files.
+If
+.I ACTION
+is
+.BR skip ,
+directories are silently skipped.
+If
+.I ACTION
+is
+.BR recurse ,
+.B grep
+reads all files under each directory, recursively;
+this is equivalent to the
+.B \-r
+option.
+.TP
+.BR \-E ", " \-\^\-extended-regexp
+Interpret
+.I PATTERN
+as an extended regular expression (see below).
+.TP
+.BI \-e " PATTERN" "\fR,\fP \-\^\-regexp=" PATTERN
+Use
+.I PATTERN
+as the pattern; useful to protect patterns beginning with
+.BR \- .
+.TP
+.BR \-F ", " \-\^\-fixed-strings
+Interpret
+.I PATTERN
+as a list of fixed strings, separated by newlines,
+any of which is to be matched.
+.TP
+.BR \-P ", " \-\^\-perl-regexp
+Interpret
+.I PATTERN
+as a Perl regular expression.
+.TP
+.BI \-f " FILE" "\fR,\fP \-\^\-file=" FILE
+Obtain patterns from
+.IR FILE ,
+one per line.
+The empty file contains zero patterns, and therefore matches nothing.
+.TP
+.BR \-G ", " \-\^\-basic-regexp
+Interpret
+.I PATTERN
+as a basic regular expression (see below).  This is the default.
+.TP
+.BR \-H ", " \-\^\-with-filename
+Print the filename for each match.
+.TP
+.BR \-h ", " \-\^\-no-filename
+Suppress the prefixing of filenames on output
+when multiple files are searched.
+.TP
+.B \-\^\-help
+Output a brief help message.
+.TP
+.BR \-I
+Process a binary file as if it did not contain matching data; this is
+equivalent to the
+.B \-\^\-binary-files=without-match
+option.
+.TP
+.BR \-i ", " \-\^\-ignore-case
+Ignore case distinctions in both the
+.I PATTERN
+and the input files.
+.TP
+.BR \-L ", " \-\^\-files-without-match
+Suppress normal output; instead print the name
+of each input file from which no output would
+normally have been printed.  The scanning will stop
+on the first match.
+.TP
+.BR \-l ", " \-\^\-files-with-matches
+Suppress normal output; instead print
+the name of each input file from which output
+would normally have been printed.  The scanning will
+stop on the first match.
+.TP
+.BI \-m " NUM" "\fR,\fP \-\^\-max-count=" NUM
+Stop reading a file after
+.I NUM
+matching lines.  If the input is standard input from a regular file,
+and
+.I NUM
+matching lines are output,
+.B grep
+ensures that the standard input is positioned to just after the last
+matching line before exiting, regardless of the presence of trailing
+context lines.  This enables a calling process to resume a search.
+When
+.B grep
+stops after
+.I NUM
+matching lines, it outputs any trailing context lines.  When the
+.B \-c
+or
+.B \-\^\-count
+option is also used,
+.B grep
+does not output a count greater than
+.IR NUM .
+When the
+.B \-v
+or
+.B \-\^\-invert-match
+option is also used,
+.B grep
+stops after outputting
+.I NUM
+non-matching lines.
+.TP
+.B \-\^\-mmap
+If possible, use the
+.BR mmap (2)
+system call to read input, instead of
+the default
+.BR read (2)
+system call.  In some situations,
+.B \-\^\-mmap
+yields better performance.  However,
+.B \-\^\-mmap
+can cause undefined behavior (including core dumps)
+if an input file shrinks while
+.B grep
+is operating, or if an I/O error occurs.
+.TP
+.BR \-n ", " \-\^\-line-number
+Prefix each line of output with the line number
+within its input file.
+.TP
+.BR \-o ", " \-\^\-only-matching
+Show only the part of a matching line that matches
+.I PATTERN.
+.TP
+.BI \-\^\-label= LABEL
+Displays input actually coming from standard input as input coming from file
+.I LABEL.
+This is especially useful for tools like zgrep, e.g.
+.B "gzip -cd foo.gz |grep --label=foo something"
+.TP
+.BR \-\^\-line-buffered
+Use line buffering, it can be a performance penality.
+.TP
+.BR \-q ", " \-\^\-quiet ", " \-\^\-silent
+Quiet; do not write anything to standard output.
+Exit immediately with zero status if any match is found,
+even if an error was detected.
+Also see the
+.B \-s
+or
+.B \-\^\-no-messages
+option.
+.TP
+.BR \-R ", " \-r ", " \-\^\-recursive
+Read all files under each directory, recursively;
+this is equivalent to the
+.B "\-d recurse"
+option.
+.TP
+.BR "\fR \fP \-\^\-include=" PATTERN
+Recurse in directories only searching file matching
+.I PATTERN.
+.TP
+.BR "\fR \fP \-\^\-exclude=" PATTERN
+Recurse in directories skip file matching
+.I PATTERN.
+.TP
+.BR \-s ", " \-\^\-no-messages
+Suppress error messages about nonexistent or unreadable files.
+Portability note: unlike \s-1GNU\s0
+.BR grep ,
+traditional
+.B grep
+did not conform to \s-1POSIX.2\s0, because traditional
+.B grep
+lacked a
+.B \-q
+option and its
+.B \-s
+option behaved like \s-1GNU\s0
+.BR grep 's
+.B \-q
+option.
+Shell scripts intended to be portable to traditional
+.B grep
+should avoid both
+.B \-q
+and
+.B \-s
+and should redirect output to /dev/null instead.
+.TP
+.BR \-U ", " \-\^\-binary
+Treat the file(s) as binary.  By default, under MS-DOS and MS-Windows,
+.BR grep
+guesses the file type by looking at the contents of the first 32KB
+read from the file.  If
+.BR grep
+decides the file is a text file, it strips the CR characters from the
+original file contents (to make regular expressions with
+.B ^
+and
+.B $
+work correctly).  Specifying
+.B \-U
+overrules this guesswork, causing all files to be read and passed to the
+matching mechanism verbatim; if the file is a text file with CR/LF
+pairs at the end of each line, this will cause some regular
+expressions to fail.
+This option has no effect on platforms other than MS-DOS and
+MS-Windows.
+.TP
+.BR \-u ", " \-\^\-unix-byte-offsets
+Report Unix-style byte offsets.  This switch causes
+.B grep
+to report byte offsets as if the file were Unix-style text file, i.e. with
+CR characters stripped off.  This will produce results identical to running
+.B grep
+on a Unix machine.  This option has no effect unless
+.B \-b
+option is also used;
+it has no effect on platforms other than MS-DOS and MS-Windows.
+.TP
+.BR \-V ", " \-\^\-version
+Print the version number of
+.B grep
+to standard error.  This version number should
+be included in all bug reports (see below).
+.TP
+.BR \-v ", " \-\^\-invert-match
+Invert the sense of matching, to select non-matching lines.
+.TP
+.BR \-w ", " \-\^\-word-regexp
+Select only those lines containing matches that form whole words.
+The test is that the matching substring must either be at the
+beginning of the line, or preceded by a non-word constituent
+character.  Similarly, it must be either at the end of the line
+or followed by a non-word constituent character.  Word-constituent
+characters are letters, digits, and the underscore.
+.TP
+.BR \-x ", " \-\^\-line-regexp
+Select only those matches that exactly match the whole line.
+.TP
+.B \-y
+Obsolete synonym for
+.BR \-i .
+.TP
+.BR \-Z ", " \-\^\-null
+Output a zero byte (the \s-1ASCII\s0
+.B NUL
+character) instead of the character that normally follows a file name.
+For example,
+.B "grep \-lZ"
+outputs a zero byte after each file name instead of the usual newline.
+This option makes the output unambiguous, even in the presence of file
+names containing unusual characters like newlines.  This option can be
+used with commands like
+.BR "find \-print0" ,
+.BR "perl \-0" ,
+.BR "sort \-z" ,
+and
+.B "xargs \-0"
+to process arbitrary file names,
+even those that contain newline characters.
+.SH "REGULAR EXPRESSIONS"
+.PP
+A regular expression is a pattern that describes a set of strings.
+Regular expressions are constructed analogously to arithmetic
+expressions, by using various operators to combine smaller expressions.
+.PP
+.B Grep
+understands two different versions of regular expression syntax:
+\*(lqbasic\*(rq and \*(lqextended.\*(rq  In
+.RB "\s-1GNU\s0\ " grep ,
+there is no difference in available functionality using either syntax.
+In other implementations, basic regular expressions are less powerful.
+The following description applies to extended regular expressions;
+differences for basic regular expressions are summarized afterwards.
+.PP
+The fundamental building blocks are the regular expressions that match
+a single character.  Most characters, including all letters and digits,
+are regular expressions that match themselves.  Any metacharacter with
+special meaning may be quoted by preceding it with a backslash.
+.PP
+A
+.I "bracket expression"
+is a list of characters enclosed by
+.B [
+and
+.BR ] .
+It matches any single
+character in that list; if the first character of the list
+is the caret
+.B ^
+then it matches any character
+.I not
+in the list.
+For example, the regular expression
+.B [0123456789]
+matches any single digit.
+.PP
+Within a bracket expression, a
+.I "range expression"
+consists of two characters separated by a hyphen.
+It matches any single character that sorts between the two characters,
+inclusive, using the locale's collating sequence and character set.
+For example, in the default C locale,
+.B [a\-d]
+is equivalent to
+.BR [abcd] .
+Many locales sort characters in dictionary order, and in these locales
+.B [a\-d]
+is typically not equivalent to
+.BR [abcd] ;
+it might be equivalent to
+.BR [aBbCcDd] ,
+for example.
+To obtain the traditional interpretation of bracket expressions,
+you can use the C locale by setting the
+.B LC_ALL
+environment variable to the value
+.BR C .
+.PP
+Finally, certain named classes of characters are predefined within
+bracket expressions, as follows.
+Their names are self explanatory, and they are
+.BR [:alnum:] ,
+.BR [:alpha:] ,
+.BR [:cntrl:] ,
+.BR [:digit:] ,
+.BR [:graph:] ,
+.BR [:lower:] ,
+.BR [:print:] ,
+.BR [:punct:] ,
+.BR [:space:] ,
+.BR [:upper:] ,
+and
+.BR [:xdigit:].
+For example,
+.B [[:alnum:]]
+means
+.BR [0\-9A\-Za\-z] ,
+except the latter form depends upon the C locale and the
+\s-1ASCII\s0 character encoding, whereas the former is independent
+of locale and character set.
+(Note that the brackets in these class names are part of the symbolic
+names, and must be included in addition to the brackets delimiting
+the bracket list.)  Most metacharacters lose their special meaning
+inside lists.  To include a literal
+.B ]
+place it first in the list.  Similarly, to include a literal
+.B ^
+place it anywhere but first.  Finally, to include a literal
+.B \-
+place it last.
+.PP
+The period
+.B .
+matches any single character.
+The symbol
+.B \ew
+is a synonym for
+.B [[:alnum:]]
+and
+.B \eW
+is a synonym for
+.BR [^[:alnum]] .
+.PP
+The caret
+.B ^
+and the dollar sign
+.B $
+are metacharacters that respectively match the empty string at the
+beginning and end of a line.
+The symbols
+.B \e<
+and
+.B \e>
+respectively match the empty string at the beginning and end of a word.
+The symbol
+.B \eb
+matches the empty string at the edge of a word,
+and
+.B \eB
+matches the empty string provided it's
+.I not
+at the edge of a word.
+.PP
+A regular expression may be followed by one of several repetition operators:
+.PD 0
+.TP
+.B ?
+The preceding item is optional and matched at most once.
+.TP
+.B *
+The preceding item will be matched zero or more times.
+.TP
+.B +
+The preceding item will be matched one or more times.
+.TP
+.BI { n }
+The preceding item is matched exactly
+.I n
+times.
+.TP
+.BI { n ,}
+The preceding item is matched
+.I n
+or more times.
+.TP
+.BI { n , m }
+The preceding item is matched at least
+.I n
+times, but not more than
+.I m
+times.
+.PD
+.PP
+Two regular expressions may be concatenated; the resulting
+regular expression matches any string formed by concatenating
+two substrings that respectively match the concatenated
+subexpressions.
+.PP
+Two regular expressions may be joined by the infix operator
+.BR | ;
+the resulting regular expression matches any string matching
+either subexpression.
+.PP
+Repetition takes precedence over concatenation, which in turn
+takes precedence over alternation.  A whole subexpression may be
+enclosed in parentheses to override these precedence rules.
+.PP
+The backreference
+.BI \e n\c
+\&, where
+.I n
+is a single digit, matches the substring
+previously matched by the
+.IR n th
+parenthesized subexpression of the regular expression.
+.PP
+In basic regular expressions the metacharacters
+.BR ? ,
+.BR + ,
+.BR { ,
+.BR | ,
+.BR ( ,
+and
+.BR )
+lose their special meaning; instead use the backslashed
+versions
+.BR \e? ,
+.BR \e+ ,
+.BR \e{ ,
+.BR \e| ,
+.BR \e( ,
+and
+.BR \e) .
+.PP
+Traditional
+.B egrep
+did not support the
+.B {
+metacharacter, and some
+.B egrep
+implementations support
+.B \e{
+instead, so portable scripts should avoid
+.B {
+in
+.B egrep
+patterns and should use
+.B [{]
+to match a literal
+.BR { .
+.PP
+\s-1GNU\s0
+.B egrep
+attempts to support traditional usage by assuming that
+.B {
+is not special if it would be the start of an invalid interval
+specification.  For example, the shell command
+.B "egrep '{1'"
+searches for the two-character string
+.B {1
+instead of reporting a syntax error in the regular expression.
+\s-1POSIX.2\s0 allows this behavior as an extension, but portable scripts
+should avoid it.
+.SH "ENVIRONMENT VARIABLES"
+Grep's behavior is affected by the following environment variables.
+.PP
+A locale
+.BI LC_ foo
+is specified by examining the three environment variables
+.BR LC_ALL ,
+.BR LC_\fIfoo\fP ,
+.BR LANG ,
+in that order.
+The first of these variables that is set specifies the locale.
+For example, if
+.B LC_ALL
+is not set, but
+.B LC_MESSAGES
+is set to
+.BR pt_BR ,
+then Brazilian Portuguese is used for the
+.B LC_MESSAGES
+locale.
+The C locale is used if none of these environment variables are set,
+or if the locale catalog is not installed, or if
+.B grep
+was not compiled with national language support (\s-1NLS\s0).
+.TP
+.B GREP_OPTIONS
+This variable specifies default options to be placed in front of any
+explicit options.  For example, if
+.B GREP_OPTIONS
+is
+.BR "'\-\^\-binary-files=without-match \-\^\-directories=skip'" ,
+.B grep
+behaves as if the two options
+.B \-\^\-binary-files=without-match
+and
+.B \-\^\-directories=skip
+had been specified before any explicit options.
+Option specifications are separated by whitespace.
+A backslash escapes the next character,
+so it can be used to specify an option containing whitespace or a backslash.
+.TP
+.B GREP_COLOR
+Specifies the marker for highlighting.
+.TP
+\fBLC_ALL\fP, \fBLC_COLLATE\fP, \fBLANG\fP
+These variables specify the
+.B LC_COLLATE
+locale, which determines the collating sequence used to interpret
+range expressions like
+.BR [a\-z] .
+.TP
+\fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLANG\fP
+These variables specify the
+.B LC_CTYPE
+locale, which determines the type of characters, e.g., which
+characters are whitespace.
+.TP
+\fBLC_ALL\fP, \fBLC_MESSAGES\fP, \fBLANG\fP
+These variables specify the
+.B LC_MESSAGES
+locale, which determines the language that
+.B grep
+uses for messages.
+The default C locale uses American English messages.
+.TP
+.B POSIXLY_CORRECT
+If set,
+.B grep
+behaves as \s-1POSIX.2\s0 requires; otherwise,
+.B grep
+behaves more like other \s-1GNU\s0 programs.
+\s-1POSIX.2\s0 requires that options that follow file names must be
+treated as file names; by default, such options are permuted to the
+front of the operand list and are treated as options.
+Also, \s-1POSIX.2\s0 requires that unrecognized options be diagnosed as
+\*(lqillegal\*(rq, but since they are not really against the law the default
+is to diagnose them as \*(lqinvalid\*(rq.
+.B POSIXLY_CORRECT
+also disables \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP,
+described below.
+.TP
+\fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP
+(Here
+.I N
+is
+.BR grep 's
+numeric process ID.)  If the
+.IR i th
+character of this environment variable's value is
+.BR 1 ,
+do not consider the
+.IR i th
+operand of
+.B grep
+to be an option, even if it appears to be one.
+A shell can put this variable in the environment for each command it runs,
+specifying which operands are the results of file name wildcard
+expansion and therefore should not be treated as options.
+This behavior is available only with the \s-1GNU\s0 C library, and only
+when
+.B POSIXLY_CORRECT
+is not set.
+.SH DIAGNOSTICS
+.PP
+Normally, exit status is 0 if selected lines are found and 1 otherwise.
+But the exit status is 2 if an error occurred, unless the
+.B \-q
+or
+.B \-\^\-quiet
+or
+.B \-\^\-silent
+option is used and a selected line is found.
+.SH BUGS
+.PP
+Email bug reports to
+.BR bug-gnu-utils at gnu.org .
+Be sure to include the word \*(lqgrep\*(rq somewhere in the
+\*(lqSubject:\*(rq field.
+.PP
+Large repetition counts in the
+.BI { n , m }
+construct may cause grep to use lots of memory.
+In addition,
+certain other obscure regular expressions require exponential time
+and space, and may cause
+.B grep
+to run out of memory.
+.PP
+Backreferences are very slow, and may require exponential time.
+.\" Work around problems with some troff -man implementations.
+.br
diff --git a/raw/man1/groff.1 b/raw/man1/groff.1
new file mode 100644
index 0000000..2383178
--- /dev/null
+++ b/raw/man1/groff.1
@@ -0,0 +1,1596 @@
+.ig
+groff.man
+
+Last update: 14 July 2002
+
+Copyright (C) 1989, 2002 Free Software Foundation, Inc.
+Rewritten in 2002 by Bernd Warken <bwarken at mayn.de>
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this .ig-section and AUTHOR, with no
+Front-Cover Texts, and with no Back-Cover Texts.
+
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
+..
+.
+.\" --------------------------------------------------------------------
+.\" Setup
+.\" --------------------------------------------------------------------
+.
+.mso www.tmac
+.
+.\" set adjust to both
+.ad b
+.
+.\" fonts of fixed length
+.
+.if n \{\
+.  mso tty-char.tmac
+.  ftr CR R
+.  ftr CI I
+.  ftr CB B
+.\}
+.
+.if '\*[.T]'dvi' \
+.  ftr CB CW
+.
+.\" --------------------------------------------------------------------
+.\" String definitions
+.
+.ds @- "\-\"
+.ds @-- "\-\^\-\"
+.
+.ds Ellipsis .\|.\|.\"
+.
+.
+.\" --------------------------------------------------------------------
+.\" Begin of macro definitions
+.de c
+.\" this is like a comment request when escape mechanism is off
+..
+.eo
+.
+.c --------------------------------------------------------------------
+.de TP+
+.br
+.ns
+.TP \$1
+..
+.c --------------------------------------------------------------------
+.c Like TP, but if specified indent is more than half
+.c the current line-length - indent, use the default indent.
+.de Tp
+.  ie \n[.$]=0:((0\$1)*2u>(\n.lu-\n(.iu)) .TP
+.  el .TP "\$1"
+..
+.c --------------------------------------------------------------------
+.de Text
+.  nop \)\$*
+..
+.c --------------------------------------------------------------------
+.de Synopsis
+.  ds @arg1 \$1\"
+.  nr @old_indent \n[.i]
+.  ad l
+.  in +\w'\f[B]\*[@arg1]\0'u
+.  ti \n[@old_indent]u
+.  B \*[@arg1]\0\c
+.  rr @old_indent
+.  rm @arg1
+..
+.c --------------------------------------------------------------------
+.de EndSynopsis
+.  ad
+.  in
+..
+.c --------------------------------------------------------------------
+.c ShortOpt[]  (name [arg])
+.c
+.c short option in synopsis
+.c
+.de ShortOpt[]
+.  if \n[.$]=0 \
+.    return
+.  ds @opt \$1\"
+.  shift
+.  ie \n[.$]=0 \
+.    Text \f[R][\f[]\f[CB]\*[@-]\*[@opt]\f[]\f[R]]\f[]
+.  el \
+.    Text \f[R][\f[]\f[CB]\*[@-]\*[@opt]\~\f[]\f[I]\/\$*\f[]\f[R]]\f[]
+.  rm @opt
+..
+.c --------------------------------------------------------------------
+.c Option in synopsis (short option)
+.de SynOpt
+.  if \n[.$]=0 \
+.    return
+.  ds @opt \$1\"
+.  shift
+.  ie \n[.$]=0 \
+.    Text \f[R][\f[]\f[CB]\*[@-]\*[@opt]\f[]\f[R]]\f[]
+.  el \
+.    Text \f[R][\f[]\f[CB]\*[@-]\*[@opt]\~\f[]\f[I]\/\$*\f[]\f[R]]\f[]
+.  rm @opt
+..
+.c --------------------------------------------------------------------
+.c ShortOpt ([char [punct]])
+.c
+.c `-c' somwhere in the text 
+.c second arg is punctuation
+.c
+.de ShortOpt
+.  ds @opt \$1\"
+.  shift
+.  Text \f[CB]\*[@-]\*[@opt]\f[]\/\$*
+.  rm @opt
+..
+.c --------------------------------------------------------------------
+.c LongOpt  ([name [punct]])
+.c
+.c `--name' somwhere in the text 
+.c second arg is punctuation
+.c
+.de LongOpt
+.  ds @opt \$1\"
+.  shift
+.  Text \f[CB]\*[@--]\f[]\f[B]\*[@opt]\f[]\/\$*
+.  rm @opt
+..
+.c --------------------------------------------------------------------
+.c OptDef  (shortopt [longopt [argument]])
+.c
+.c option documentation
+.c args : `shortopt', `longopt' can be ""
+.c
+.de OptDef
+.  ds @short
+.  ds @long
+.  ds @arg
+.  if \n[.$]>=1 \{\
+.    ds @arg1 "\$1\"
+.    if !'\*[@arg1]'' \
+.      ds @short "\f[CB]\*[@-]\*[@arg1]\f[]\"
+.    if \n[.$]>=2 \{\
+.      if !'\*[@short]'' \
+.        as @short \f[CW]\0\f[]
+.      ds @arg2 "\$2\"
+.      if !'\*[@arg2]'' \
+.        ds @long "\f[CB]\*[@--]\f[]\f[B]\*[@arg2]\f[]\"
+.      if \n[.$]>=3 \{\
+.        if !'\*[@long]'' \
+.          as @long \|=\|\"
+.        shift 2
+.        ds @arg \f[I]\$*\"
+.      \}
+.    \}
+.  \}
+.  IP "\f[R]\*[@short]\*[@long]\*[@arg]\f[]"
+.  rm @arg
+.  rm @arg1
+.  rm @arg2
+.  rm @short
+.  rm @long
+..
+.c --------------------------------------------------------------------
+.c Continuation of an OptDef header.
+.de OptDef+
+.  br
+.  ns
+.  OptDef \$@
+..
+.c --------------------------------------------------------------------
+.c Environment variable
+.de EnvVar
+.  SM
+.  BR \$1 \$2
+..
+.c --------------------------------------------------------------------
+.c a shell command line
+.de ShellCommand
+.  nr @font \n[.f]
+.  c replace argument separator by unbreakable space
+.  ds @args \$1\""
+.  shift
+.  while (\n[.$]>0) \{\
+.    ds @args \*[@args]\~\$1
+.    shift
+.  \}
+.  br
+.  ad l
+.  nh
+.  Text \f[I]sh#\h'1m'\f[P]\f[CR]\*[@args]\f[P]\&\"
+.  ft R
+.  ft P
+.  hy
+.  ad
+.  ft \n[@font]
+.  br
+.  rr @font
+.  rm @args
+..
+.c --------------------------------------------------------------------
+.c `char or string'
+.de Quoted
+.  ft CR
+.  Text \[oq]\$*\[cq]
+.  ft
+..
+.c --------------------------------------------------------------------
+.c End of macro definitions
+.ec
+.
+.
+.\" --------------------------------------------------------------------
+.\" Title
+.\" --------------------------------------------------------------------
+.
+.TH GROFF 1 "23 September 2003" "Groff Version 1.18.1"
+.SH NAME
+groff \- front-end for the groff document formatting system
+.
+.
+.\" --------------------------------------------------------------------
+.SH SYNOPSIS
+.\" --------------------------------------------------------------------
+.
+.ad l
+.Synopsis groff
+.ShortOpt[] abcegilpstzCEGNRSUVXZ
+.ShortOpt[] d cs
+.ShortOpt[] f fam
+.ShortOpt[] F dir
+.ShortOpt[] I dir
+.ShortOpt[] L arg
+.ShortOpt[] m name
+.ShortOpt[] M dir
+.ShortOpt[] n num
+.ShortOpt[] o list
+.ShortOpt[] P arg
+.ShortOpt[] r cn
+.ShortOpt[] T dev
+.ShortOpt[] w name
+.ShortOpt[] W name
+.RI [ file
+.Text \*[Ellipsis]]
+.EndSynopsis
+.
+.Synopsis groff
+.ShortOpt h
+|
+.LongOpt help
+.EndSynopsis
+.
+.Synopsis groff
+.ShortOpt v
+|
+.LongOpt version
+.RI [ option
+.Text \*[Ellipsis]]
+.EndSynopsis
+.
+.P
+The command line is parsed according to the usual GNU convention.
+.
+The whitespace between a command line option and its argument is
+optional.
+.
+Options can be grouped behind a single
+.ShortOpt
+(minus character).
+.
+A filename of
+.ShortOpt
+(minus character) denotes the standard input.
+.
+.
+.\" --------------------------------------------------------------------
+.SH DESCRIPTION
+.\" --------------------------------------------------------------------
+.
+This document describes the
+.B groff
+program, the main front-end for the 
+.I groff
+document formatting system.
+.
+The
+.I groff
+program and macro suite is the implementation of a
+.BR roff (7)
+system within the free software collection
+.URL http://\:www.gnu.org "GNU" .
+.
+The
+.I groff
+system has all features of the classical
+.IR roff ,
+but adds many extensions.
+.
+.P
+The
+.B groff
+program allows to control the whole
+.I groff
+system by comand line options.
+.
+This is a great simplification in comparison to the classical case (which
+uses pipes only).
+.
+.
+.\" --------------------------------------------------------------------
+.SH OPTIONS
+.\" --------------------------------------------------------------------
+.
+As
+.B groff
+is a wrapper program for
+.B troff
+both programs share a set of options.
+.
+But the
+.B groff
+program has some additional, native options and gives a new meaning to
+some
+.B troff
+options.
+.
+On the other hand, not all
+.B troff
+options can be fed into
+.BR groff .
+.
+.
+.\" --------------------------------------------------------------------
+.SS Native groff Options
+.\" --------------------------------------------------------------------
+.
+The following options either do not exist for
+.B troff
+or are differently interpreted by
+.BR groff .
+.
+.
+.OptDef e
+Preprocess with
+.BR eqn .
+.
+.
+.OptDef g
+Preprocess with
+.BR grn .
+.
+.
+.OptDef G
+Preprocess with
+.BR grap .
+.
+.
+.OptDef h help
+Print a help message.
+.
+.
+.OptDef I "" dir
+Add search directory for
+.BR \%soelim (1).
+This option implies the
+.ShortOpt s
+option.
+.
+.
+.OptDef l
+Send the output to a spooler program for printing.
+.
+The command that should be used for this is specified by the
+.B print
+command in the device description file, see
+.BR \%groff_font (5).
+If this command is not present, the output is piped into the
+.BR lpr (1)
+program by default.
+.
+See options
+.ShortOpt L
+and
+.ShortOpt X .
+.
+.
+.OptDef L "" arg
+Pass
+.I arg
+to the spooler program.
+Several arguments should be passed with a separate
+.ShortOpt L
+option each.
+.
+Note that
+.B groff
+does not prepend
+.ShortOpt\" just a minus sign
+(a minus sign) to
+.I arg
+before passing it to the spooler program.
+.
+.
+.OptDef N
+Don't allow newlines within
+.I eqn
+delimiters.
+.
+This is the same as the
+.ShortOpt N
+option in
+.BR eqn .
+.
+.
+.OptDef p
+Preprocess with
+.BR pic .
+.
+.
+.OptDef P "" "-option"
+.OptDef+ P "" "-option \f[CB]-P\f[] arg"
+Pass
+.I -option
+or
+.I -option arg
+to the postprocessor.
+.
+The option must be specified with the necessary preceding minus
+sign(s)
+.Quoted \*[@-]
+or
+.Quoted \*[@--]
+because groff does not prepend any dashes before passing it to the
+postprocessor.
+.
+For example, to pass a title to the gxditview postprocessor, the shell
+command
+.IP
+.ShellCommand groff -X -P -title -P 'groff it' \f[I]foo\f[]
+.IP
+is equivalent to
+.IP
+.ShellCommand groff -X -Z \f[I]foo\f[] | gxditview -title 'groff it' -
+.
+.
+.OptDef R
+Preprocess with
+.BR refer .
+.
+No mechanism is provided for passing arguments to 
+.B refer
+because most
+.B refer
+options have equivalent language elements that can be specified within
+the document.
+.
+See
+.BR \%refer (1)
+for more details.
+.
+.
+.OptDef s
+Preprocess with
+.BR soelim .
+.
+.
+.OptDef S
+Safer mode.
+.
+Pass the
+.ShortOpt S
+option to
+.B pic
+and disable the following
+.B troff
+requests:
+.BR .open ,
+.BR .opena ,
+.BR .pso ,
+.BR .sy ,
+and
+.BR .pi .
+For security reasons, safer mode is enabled by default.
+.
+.
+.OptDef t
+Preprocess with
+.BR tbl .
+.
+.
+.OptDef T "" dev
+Set output device to
+.IR dev .
+The possible values in
+.I groff
+are
+.BR ascii ,
+.BR cp1047 ,
+.BR dvi ,
+.BR html ,
+.BR latin1 ,
+.BR lbp ,
+.BR lj4 ,
+.BR ps ,
+.BR utf8 ,
+.BR X75 ,
+and
+.BR X100 .
+.
+Additionally,
+.B X75-12
+and
+.B X100-12
+are available for documents which use 12\|pt as the base document size.
+.
+The default device is
+.BR ps .
+.
+.
+.OptDef U
+Unsafe mode.
+.
+Reverts to the (old) unsafe behaviour; see option
+.ShortOpt S .
+.
+.
+.OptDef v version
+Output version information of
+.B groff
+and of all programs that are run by it; that is, the given command line
+is parsed in the usual way, passing
+.ShortOpt v
+to all subprograms.
+.
+.
+.OptDef V
+Output the pipeline that would be run by
+.BR groff
+(as a wrapper program), but do not execute it.
+.
+.
+.OptDef X
+Use
+.B gxditview
+instead of using the usual postprocessor to (pre)view a document.
+.
+The printing spooler behavior as outlined with options
+.ShortOpt l
+and
+.ShortOpt L 
+is carried over to 
+.BR \%gxditview (1)
+by determining an argument for the
+.B -printCommand
+option of
+.BR \%gxditview (1).
+.
+This sets the default
+.B Print
+action and the corresponding menu entry to that value.
+.
+.ShortOpt X
+only produces good results with
+.ShortOpt Tps ,
+.ShortOpt TX75 ,
+.ShortOpt TX75-12 ,
+.ShortOpt TX100 ,
+and
+.ShortOpt TX100-12 .
+.
+The default resolution for previewing
+.ShortOpt Tps
+output is 75\|dpi; this can be changed by passing the
+.ShortOpt resolution
+option to
+.BR gxditview ,
+for example
+.
+.IP
+.ShellCommand groff -X -P-resolution -P100 -man foo.1
+.
+.
+.OptDef z
+Suppress output generated by
+.BR troff .
+Only error messages will be printed.
+.
+.
+.OptDef Z
+Do not postprocess the output of
+.B troff
+that is normally
+called automatically by
+.BR groff .
+This will print the intermediate output to standard output; see
+.BR \%groff_out (5).
+.
+.
+.\" --------------------------------------------------------------------
+.SS Tranparent Options
+.\" --------------------------------------------------------------------
+.
+The following options are transparently handed over to the formatter
+program
+.B troff
+that is called by groff subsequently.
+.
+These options are described in more detail in
+.BR troff (1).
+.
+.OptDef a
+ascii approximation of output.
+.
+.OptDef b
+backtrace on error or warning.
+.
+.OptDef c
+disable color output.
+.
+.OptDef C
+enable compatibility mode.
+.
+.OptDef d "" cs
+.OptDef+ d "" name=s
+define string.
+.
+.OptDef E
+disable
+.B troff
+error messages.
+.
+.OptDef f "" fam
+set default font family.
+.
+.OptDef F "" dir
+set path for font DESC files.
+.
+.OptDef i
+process standard input after the specified input files.
+.
+.OptDef m "" name
+include macro file \f[I]name\f[]\f[B].tmac\f[] (or
+\f[B]tmac.\f[]\f[I]name\f[]); see also
+.BR \%groff_tmac (5).
+.
+.OptDef M "" dir
+path for macro files.
+.
+.OptDef n "" num
+number the first page
+.IR num .
+.
+.OptDef o "" list
+output only pages in
+.IR list .
+.
+.OptDef r "" cn
+.OptDef+ r "" name=n
+set number register.
+.
+.OptDef w "" name
+enable warning
+.IR name .
+.
+.OptDef W "" name
+disable warning
+.IR name .
+.
+.
+.\" --------------------------------------------------------------------
+.SH "USING GROFF"
+.\" --------------------------------------------------------------------
+.
+The
+.I groff system
+implements the infrastructure of classical roff; see
+.BR roff (7)
+for a survey on how a roff system works in general.
+.
+Due to the front-end programs available within the groff system, using
+.I groff
+is much easier than
+.IR "classical roff" .
+.
+This section gives an overview of the parts that consitute the groff
+system.
+.
+It complements
+.BR roff (7)
+with groff-specific features.
+.
+This section can be regarded as a guide to the documentation around
+the groff system.
+.
+.
+.\" --------------------------------------------------------------------
+.SS Front-ends
+.\" --------------------------------------------------------------------
+.
+The
+.B groff
+program is a wrapper around the
+.BR troff (1)
+program.
+.
+It allows to specify the preprocessors by command line options and
+automatically runs the postprocessor that is appropriate for the
+selected device.
+.
+Doing so, the sometimes tedious piping mechanism of classical
+.BR roff (7)
+can be avoided.
+.
+.P
+The
+.BR grog (1)
+program can be used for guessing the correct groff command line to
+format a file.
+.
+.P
+The
+.BR \%groffer (1)
+program is an allround-viewer for groff files and man pages.
+.
+.
+.\" --------------------------------------------------------------------
+.SS Preprocessors
+.\" --------------------------------------------------------------------
+.
+The groff preprocessors are reimplementations of the classical
+preprocessors with moderate extensions.
+.
+The preprocessors distributed with the
+.I groff
+package are
+.
+.TP
+.BR eqn (1)
+for mathematical formul\(ae,
+.TP
+.BR grn (1)
+for including
+.BR gremlin (1)
+pictures,
+.TP
+.BR pic (1)
+for drawing diagrams,
+.TP
+.BR \%refer (1)
+for bibliographic references,
+.TP
+.BR \%soelim (1)
+for including macro files from standard locations,
+.
+.P
+and
+.TP
+.BR tbl (1)
+for tables.
+.
+.P
+Besides these, there are some internal preprocessors that are
+automatically run with some devices.
+.
+These aren't visible to the user.
+.
+.
+.\" --------------------------------------------------------------------
+.SS "Macro Packages"
+.\" --------------------------------------------------------------------
+.
+Macro packages can be included by option
+.ShortOpt m .
+.
+The groff system implements and extends all classical macro packages
+in a compatible way and adds some packages of its own.
+.
+Actually, the following macro packages come with
+.IR groff :
+.
+.TP
+.B man
+The traditional man page format; see
+.BR \%groff_man (7).
+It can be specified on the command line as
+.ShortOpt man
+or
+.ShortOpt m
+.BR man .
+.
+.TP
+.B mandoc
+The general package for man pages; it automatically recognizes
+whether the documents uses the
+.I man
+or the
+.I mdoc
+format and branches to the corresponding macro package.
+.
+It can be specified on the command line as
+.ShortOpt mandoc
+or
+.ShortOpt m
+.BR mandoc .
+.
+.TP
+.B mdoc
+The BSD-style man page format; see
+.BR \%groff_mdoc (7).
+It can be specified on the command line as
+.ShortOpt mdoc
+or
+.ShortOpt m
+.BR mdoc .
+.
+.TP
+.B me
+The classical
+.I me
+document format; see
+.BR \%groff_me (7).
+It can be specified on the command line as
+.ShortOpt me
+or
+.ShortOpt m
+.BR me .
+.
+.TP
+.B mm
+The classical
+.I mm
+document format; see
+.BR \%groff_mm (7).
+It can be specified on the command line as
+.ShortOpt mm
+or
+.ShortOpt m
+.BR mm .
+.
+.TP
+.B ms
+The classical
+.I ms
+document format; see
+.BR \%groff_ms (7).
+It can be specified on the command line as
+.ShortOpt ms
+or
+.ShortOpt m
+.BR ms .
+.
+.TP
+.B www
+HTML-like macros for inclusion in arbitrary groff documents; see
+.BR \%groff_www (7).
+.
+.P
+Details on the naming of macro files and their placement can be found
+in
+.BR \%groff_tmac (5).
+.
+.
+.\" --------------------------------------------------------------------
+.SS "Programming Language"
+.\" --------------------------------------------------------------------
+.
+General concepts common to all roff programming languages are
+described in
+.BR roff (7).
+.
+.P
+The groff extensions to the classical troff language are documented in
+.BR \%groff_diff (7).
+.
+.P
+The groff language as a whole is described in the (still incomplete)
+.IR "groff info file" ;
+a short (but complete) reference can be found in
+.BR groff (7).
+.
+.
+.\" --------------------------------------------------------------------
+.SS Formatters
+.\" --------------------------------------------------------------------
+.
+The central roff formatter within the groff system is
+.BR troff (1).
+It provides the features of both the classical troff and nroff, as
+well as the groff extensions.
+.
+The command line option
+.ShortOpt C
+switches
+.B troff
+into
+.I "compatibility mode"
+which tries to emulate classical roff as much as possible.
+.
+.P
+There is a shell script
+.BR nroff (1)
+that emulates the behavior of classical nroff.
+.
+It tries to automatically select the proper output encoding, according to
+the current locale.
+.
+.P
+The formatter program generates
+.IR "intermediate output" ;
+see
+.BR \%groff_out (7).
+.
+.
+.\" --------------------------------------------------------------------
+.SS Devices
+.\" --------------------------------------------------------------------
+.
+In roff, the output targets are called
+.IR devices .
+A device can be a piece of hardware, e.g. a printer, or a software
+file format.
+.
+A device is specified by the option
+.ShortOpt T .
+The groff devices are as follows.
+.
+.TP
+.B ascii
+Text output using the
+.BR ascii (7)
+character set.
+.
+.TP
+.B cp1047
+Text output using the EBCDIC code page IBM cp1047 (e.g. OS/390 Unix).
+.
+.TP
+.B nippon
+Text output using the Japanese-EUC character set.
+.
+.TP
+.B dvi
+TeX DVI format.
+.
+.TP
+.B html
+HTML output.
+.
+.TP
+.B ascii8
+For typewriter-like devices.  Unlike
+.BR ascii ,
+this device is 8 bit clean.  This device is intended to be used
+for codesets other than ASCII and ISO-8859-1.
+.TP
+.B latin1
+Text output using the ISO Latin-1 (ISO 8859-1) character set; see
+.BR iso_8859_1 (7).
+.
+.TP
+.B lbp
+Output for Canon CAPSL printers (LBP-4 and LBP-8 series laser printers).
+.
+.TP 
+.B lj4
+HP LaserJet4-compatible (or other PCL5-compatible) printers.
+.
+.TP
+.B ps
+PostScript output; suitable for printers and previewers like
+.BR gv (1).
+.
+.TP
+.B utf8
+Text output using the Unicode (ISO 10646) character set with UTF-8
+encoding; see
+.BR unicode (7).
+.
+.TP
+.B X75
+75dpi X Window System output suitable for the previewers
+.BR xditview (1x)
+and
+.BR \%gxditview (1).
+A variant for a 12\|pt document base font is
+.BR X75-12 .
+.
+.TP
+.B X100
+100dpi X Window System output suitable for the previewers
+.BR xditview (1x)
+and
+.BR \%gxditview (1).
+A variant for a 12\|pt document base font is
+.BR X100-12 .
+.
+.P
+The postprocessor to be used for a device is specified by the
+.B postpro
+command in the device description file; see
+.BR \%groff_font (5).
+.
+This can be overridden with the
+.B \-X
+option.
+.
+.P
+The default device is
+.BR ps .
+.
+.
+.\" --------------------------------------------------------------------
+.SS Postprocessors
+.\" --------------------------------------------------------------------
+.
+groff provides 3\~hardware postprocessors:
+.
+.TP
+.BR \%grolbp (1)
+for some Canon printers,
+.TP
+.BR \%grolj4 (1)
+for printers compatible to the HP LaserJet\~4 and PCL5,
+.TP
+.BR \%grotty (1)
+for text output using various encodings, e.g. on text-oriented
+terminals or line-printers.
+.
+.P
+Today, most printing or drawing hardware is handled by the operating
+system, by device drivers, or by software interfaces, usally accepting
+PostScript.
+.
+Consequently, there isn't an urgent need for more hardware device
+postprocessors.
+.
+.P
+The groff software devices for conversion into other document file
+formats are
+.
+.TP
+.BR \%grodvi (1)
+for the DVI format,
+.TP
+.BR \%grohtml (1)
+for HTML format,
+.TP
+.BR grops (1)
+for PostScript.
+.
+.P
+Combined with the many existing free conversion tools this should
+be sufficient to convert a troff document into virtually any existing
+data format.
+.
+.
+.\" --------------------------------------------------------------------
+.SS Utilities
+.\" --------------------------------------------------------------------
+.
+The following utility programs around groff are available.
+.
+.TP
+.BR \%addftinfo (1)
+Add information to troff font description files for use with groff.
+.
+.TP
+.BR \%afmtodit (1)
+Create font description files for PostScript device.
+.
+.TP
+.BR \%groffer (1)
+General viewer program for groff files and man pages.
+.
+.TP
+.BR \%gxditview (1)
+The groff X viewer, the GNU version of xditview.
+.
+.TP
+.BR \%hpftodit (1)
+Create font description files for lj4 device.
+.
+.TP
+.BR \%indxbib (1)
+Make inverted index for bibliographic databases.
+.
+.TP
+.BR lkbib (1)
+Search bibliographic databases.
+.
+.TP
+.BR \%lookbib (1)
+Interactively search bibliographic databases.
+.
+.TP
+.BR \%pfbtops (1)
+Translate a PostScript font in .pfb format to ASCII.
+.
+.TP
+.BR \%tfmtodit (1)
+Create font description files for TeX DVI device.
+.
+.TP
+.BR \%xditview (1x)
+roff viewer distributed with X window.
+.
+.
+.\" --------------------------------------------------------------------
+.SH ENVIRONMENT
+.\" --------------------------------------------------------------------
+.
+Normally, the path separator in the following environment variables is the
+colon; this may vary depending on the operating system.
+.
+For example, DOS and Windows use a semicolon instead.
+.
+.TP
+.EnvVar GROFF_BIN_PATH
+This search path, followed by
+.EnvVar $PATH ,
+will be used for commands that are executed by
+.BR groff .
+.
+If it is not set then the directory where the groff binaries were
+installed is prepended to
+.EnvVar PATH .
+.
+.TP
+.EnvVar GROFF_COMMAND_PREFIX
+When there is a need to run different roff implementations at the same
+time
+.I groff
+provides the facility to prepend a prefix to most of its programs that
+could provoke name clashings at run time (default is to have none).
+.
+Historically, this prefix was the character
+.BR g ,
+but it can be anything.
+.
+For example,
+.BR gtroff
+stood for
+.IR groff 's
+.BR troff ,
+.BR gtbl
+for the
+.I groff
+version of
+.BR tbl .
+.
+By setting
+.EnvVar GROFF_COMMAND_PREFIX
+to different values, the different roff installations can be
+addressed.
+.
+More exactly, if it is set to prefix
+.I xxx
+then
+.B groff
+as a wrapper program will internally call
+.IB xxx troff
+instead of
+.BR troff .
+This also applies to the preprocessors
+.BR \%eqn ,
+.BR \%grn ,
+.BR \%pic ,
+.BR \%refer ,
+.BR \%tbl ,
+.BR \%soelim ,
+and to the utilities
+.B \%indxbib
+and
+.BR \%lookbib .
+.
+This feature does not apply to any programs different from the ones
+above (most notably
+.B groff
+itself) since they are unique to the groff package.
+.
+.
+.TP
+.EnvVar GROFF_FONT_PATH
+A list of directories in which to search for the
+.BI dev name
+directory in addition to the default ones.
+.
+See
+.BR troff (1)
+and
+.BR \%groff_font (5)
+for more details.
+.
+.
+.TP
+.EnvVar GROFF_TMAC_PATH
+A list of directories in which to search for macro files in addition to
+the default directories.
+.
+See
+.BR troff (1)
+and
+.BR \%groff_tmac (5)
+for more details.
+.
+.
+.TP
+.EnvVar GROFF_TMPDIR
+The directory in which temporary files will be created.
+.
+If this is not set but the environment variable
+.EnvVar TMPDIR
+instead, temporary files will be created in the directory
+.EnvVar $TMPDIR .
+.
+Otherwise temporary files will be created in
+.BR /tmp .
+The
+.BR \%refer (1),
+.BR \%groffer (1),
+.BR \%grohtml (1),
+and
+.BR grops (1)
+commands use temporary files.
+.
+.
+.TP
+.EnvVar GROFF_TYPESETTER
+Preset the default device.
+.
+If this is not set the
+.B ps
+device is used as default.
+.
+This device name is overwritten by the option
+.ShortOpt T .
+.
+.
+.\" --------------------------------------------------------------------
+.SH FILES
+.\" --------------------------------------------------------------------
+.
+There are some directories in which
+.I groff
+installs all of its data files.
+.
+Due to different installation habits on different operating systems,
+their locations are not absolutely fixed, but their function is
+clearly defined and coincides on all systems.
+.
+.
+.\" --------------------------------------------------------------------
+.SS "groff Macro Directory"
+.\" --------------------------------------------------------------------
+.
+This contains all information related to macro packages.
+.
+Note that more than a single directory is searched for those files
+as documented in
+.BR \%groff_tmac (5).
+.
+For the groff installation corresponding to this document, it is
+located at
+.IR /usr/share/groff/1.18.1/tmac .
+.
+The following files contained in the
+.I groff macro directory
+have a special meaning:
+.
+.
+.TP
+.B troffrc
+Initialization file for troff.
+.
+This is interpreted by
+.B troff
+before reading the macro sets and any input.
+.
+.
+.TP
+.B troffrc-end
+Final startup file for troff, it is parsed after all macro sets have
+been read.
+.
+.
+.TP
+.IB name .tmac
+.TP+
+.BI tmac. name
+Macro file for macro package
+.IR name .
+.
+.
+.\" --------------------------------------------------------------------
+.SS "groff Font Directory"
+.\" --------------------------------------------------------------------
+.
+This contains all information related to output devices.
+.
+Note that more than a single directory is searched for those files; see
+.BR troff (1).
+.
+For the groff installation corresponding to this document, it is
+located at
+.IR /usr/share/groff/1.18.1/font .
+.
+The following files contained in the
+.I groff font directory
+have a special meaning:
+.
+.
+.TP
+.BI dev name /DESC
+Device description file for device
+.IR name ,
+see
+.BR \%groff_font (5).
+.
+.
+.TP
+.BI dev name / F
+Font file for font
+.I F
+of device
+.IR name .
+.
+.
+.\" --------------------------------------------------------------------
+.SH EXAMPLES
+.\" --------------------------------------------------------------------
+.
+The following example illustrates the power of the
+.B groff
+program as a wrapper around
+.BR troff .
+.
+.P
+To process a roff file using the preprocessors
+.B tbl
+and
+.B pic
+and the
+.B me
+macro set, classical troff had to be called by
+.
+.P
+.ShellCommand pic foo.me | tbl | troff -me -Tlatin1 | grotty
+.
+.P
+Using
+.BR groff ,
+this pipe can be shortened to the equivalent command
+.P
+.ShellCommand groff -p -t -me -T latin1 foo.me
+.
+.P
+An even easier way to call this is to use
+.BR grog (1)
+to guess the preprocessor and macro options and execute the generated
+command (by specifying shell left quotes)
+.P
+.ShellCommand `grog -Tlatin1 foo.me`
+.
+.P
+The simplest way is to view the contents in an automated way by
+calling
+.
+.P
+.ShellCommand groffer foo.me
+.
+.
+.\" --------------------------------------------------------------------
+.SH BUGS
+.\" --------------------------------------------------------------------
+.
+.P
+On EBCDIC hosts (e.g. OS/390 Unix), output devices
+.B ascii
+and
+.B latin1
+aren't available.
+.
+Similarly, output for EBCDIC code page
+.B cp1047
+is not available on ASCII based operating systems.
+.
+.P
+Report bugs to bug-groff at gnu.org.
+.
+Include a complete, self-contained example that will allow the bug to
+be reproduced, and say which version of groff you are using.
+.
+.
+.\" --------------------------------------------------------------------
+.SH AVAILABILITY
+.\" --------------------------------------------------------------------
+.
+Information on how to get groff and related information is available
+at the
+.URL http://\:www.gnu.org/\:software/\:groff "GNU website" .
+The most recent released version of groff is available for anonymous
+ftp at the
+.URL ftp://ftp.ffii.org/\:pub/\:groff/\:devel/\:groff-current.tar.gz \
+     "groff development site" .
+.
+.P
+Three groff mailing lists are available:
+.TP
+.MTO bug-groff at gnu.org
+for reporting bugs,
+.
+.TP
+.MTO groff at gnu.org
+for general discussion of groff,
+.
+.TP
+.MTO groff-commit at ffii.org
+a read-only list showing logs of commitments to the CVS repository.
+.
+.P
+Details on CVS access and much more can be found in the file
+.B README
+at the top directory of the groff source package.
+.
+.P
+There is a free implementation of the
+.B grap
+preprocessor, written by
+.MTO faber at lunabase.org " Ted Faber" .
+.
+The actual version can be found at the
+.
+.URL http://\:www.lunabase.org/\:~faber/\:Vault/\:software/\:grap/ \
+     "grap website" .
+This is the only grap version supported by groff.
+.
+.
+.\" --------------------------------------------------------------------
+.SH AUTHORS
+.\" --------------------------------------------------------------------
+.
+Copyright \(co 1989, 2002 Free Software Foundation, Inc.
+.
+.P
+This document is distributed under the terms of the FDL (GNU Free
+Documentation License) version 1.1 or later.
+.
+You should have received a copy of the FDL on your system, it is also
+available on-line at the
+.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
+.
+.P
+This document is based on the original groff man page written by
+.MTO jjc at jclark.com "James Clark" .
+.
+It was rewritten, enhanced, and put under the FDL license by
+.MTO bwarken at mayn.de "Bernd Warken" .
+.
+It is maintained by
+.MTO wl at gnu.org "Werner Lemberg" .
+.
+.P
+.I groff
+is a GNU free software project.
+.
+All parts of the
+.I groff package
+are protected by GNU copyleft licenses.
+.
+The software files are distributed under the terms of the GNU General
+Public License (GPL), while the documentation files mostly use the GNU
+Free Documentation License (FDL).
+.
+.
+.\" --------------------------------------------------------------------
+.SH "SEE ALSO"
+.\" --------------------------------------------------------------------
+.
+The
+.IR "groff info file"
+contains all information on the groff system within a single document.
+.
+Beneath the detailed documentation of all aspects, it provides
+examples and background information.
+.
+See
+.BR info (1)
+on how to read it.
+.
+.P
+Due to its complex structure, the groff system has many man pages.
+.
+They can be read with
+.BR man (1)
+or
+.BR \%groffer (1).
+.
+.TP
+Introduction, history and further readings:
+.BR roff (7).
+.
+.TP
+Viewer for groff files:
+.BR \%groffer (1),
+.BR \%gxditview (1),
+.BR \%xditview (1x).
+.
+.TP
+Wrapper programs for formatters:
+.BR \%groff (1),
+.BR \%grog (1).
+.
+.TP
+Roff preprocessors:
+.BR \%eqn (1),
+.BR \%grn (1),
+.BR \%pic (1),
+.BR \%refer (1),
+.BR \%soelim (1),
+.BR \%tbl (1),
+.BR grap (1).
+.
+.TP
+Roff language with the groff extensions:
+.BR \%groff (7),
+.BR \%groff_char (7),
+.BR \%groff_diff (7),
+.BR \%groff_font (5).
+.
+.TP
+Roff formatter programs:
+.BR \%nroff (1),
+.BR \%troff (1),
+.BR ditroff (7).
+.
+.TP
+The intermediate output language:
+.BR \%groff_out (7).
+.
+.TP
+Postprocessors for the output devices:
+.BR \%grodvi (1),
+.BR \%grohtml (1),
+.BR \%grolbp (1),
+.BR \%grolj4 (1),
+.BR \%grops (1),
+.BR \%grotty (1).
+.
+.TP
+Groff macro packages and macro-specific utilities:
+.BR \%groff_tmac (5),
+.BR \%groff_man (7),
+.BR \%groff_mdoc (7),
+.BR \%groff_me (7),
+.BR \%groff_mm (7),
+.BR \%groff_mmse (7),
+.BR \%groff_mom (7),
+.BR \%groff_ms (7),
+.BR \%groff_www (7),
+.BR \%mmroff (7).
+.
+.TP
+The following utilities are available:
+.BR \%addftinfo (1),
+.BR \%afmtodit (1),
+.BR \%eqn2graph (1),
+.BR \%groffer (1),
+.BR \%gxditview (1),
+.BR \%hpftodit (1),
+.BR \%indxbib (1),
+.BR \%lookbib (1),
+.BR \%pfbtops (1),
+.BR \%pic2graph (1),
+.BR \%tfmtodit (1).
+.
+.
+.\" --------------------------------------------------------------------
+.\" Emacs setup
+.\" --------------------------------------------------------------------
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/raw/man1/groups.1 b/raw/man1/groups.1
new file mode 100644
index 0000000..015ceb3
--- /dev/null
+++ b/raw/man1/groups.1
@@ -0,0 +1,31 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH GROUPS "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+groups \- print the groups a user is in
+.SH SYNOPSIS
+.B groups
+[\fIOPTION\fR]... [\fIUSERNAME\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Same as id \fB\-Gn\fR.  If no USERNAME, use current process.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH "SEE ALSO"
+The full documentation for
+.B groups
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B groups
+programs are properly installed at your site, the command
+.IP
+.B info groups
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/gunzip.1 b/raw/man1/gunzip.1
new file mode 100644
index 0000000..c2a5145
--- /dev/null
+++ b/raw/man1/gunzip.1
@@ -0,0 +1 @@
+.so man1/gzip.1
diff --git a/raw/man1/gzip.1 b/raw/man1/gzip.1
new file mode 100644
index 0000000..06986eb
--- /dev/null
+++ b/raw/man1/gzip.1
@@ -0,0 +1,499 @@
+.TH GZIP 1 local
+.SH NAME
+gzip, gunzip, zcat \- compress or expand files
+.SH SYNOPSIS
+.ll +8
+.B gzip
+.RB [ " \-acdfhlLnNrtvV19 " ]
+.RB [ \-S\ suffix ]
+[
+.I "name \&..."
+]
+.ll -8
+.br
+.B gunzip
+.RB [ " \-acfhlLnNrtvV " ]
+.RB [ \-S\ suffix ]
+[
+.I "name \&..."
+]
+.br
+.B zcat
+.RB [ " \-fhLV " ]
+[
+.I "name \&..."
+]
+.SH DESCRIPTION
+.I Gzip
+reduces the size of the named files using Lempel-Ziv coding (LZ77).
+Whenever possible,
+each file is replaced by one with the extension
+.B "\&.gz,"
+while keeping the same ownership modes, access and modification times.
+(The default extension is
+.B "\-gz"
+for VMS,
+.B "z"
+for MSDOS, OS/2 FAT, Windows NT FAT and Atari.)
+If no files are specified, or if a file name is "-", the standard input is
+compressed to the standard output.
+.I Gzip
+will only attempt to compress regular files.
+In particular, it will ignore symbolic links.
+.PP
+If the compressed file name is too long for its file system,
+.I gzip
+truncates it.
+.I Gzip
+attempts to truncate only the parts of the file name longer than 3 characters.
+(A part is delimited by dots.) If the name consists of small parts only,
+the longest parts are truncated. For example, if file names are limited
+to 14 characters, gzip.msdos.exe is compressed to gzi.msd.exe.gz.
+Names are not truncated on systems which do not have a limit on file name
+length.
+.PP
+By default,
+.I gzip
+keeps the original file name and timestamp in the compressed file. These
+are used when decompressing the file with the
+.B \-N
+option. This is useful when the compressed file name was truncated or
+when the time stamp was not preserved after a file transfer.
+.PP
+Compressed files can be restored to their original form using
+.I gzip -d
+or
+.I gunzip
+or
+.I zcat.
+If the original name saved in the compressed file is not suitable for its
+file system, a new name is constructed from the original one to make it
+legal.
+.PP
+.I gunzip
+takes a list of files on its command line and replaces each
+file whose name ends with .gz, -gz, .z, -z, _z or .Z
+and which begins with the correct magic number with an uncompressed
+file without the original extension.
+.I gunzip
+also recognizes the special extensions
+.B "\&.tgz"
+and
+.B "\&.taz"
+as shorthands for
+.B "\&.tar.gz"
+and
+.B "\&.tar.Z"
+respectively.
+When compressing,
+.I gzip
+uses the
+.B "\&.tgz"
+extension if necessary instead of truncating a file with a
+.B "\&.tar"
+extension.
+.PP
+.I gunzip
+can currently decompress files created by
+.I gzip, zip, compress, compress -H
+or
+.I pack.
+The detection of the input format is automatic.  When using
+the first two formats,
+.I gunzip
+checks a 32 bit CRC. For
+.I pack, gunzip
+checks the uncompressed length. The standard
+.I compress
+format was not designed to allow consistency checks. However
+.I gunzip
+is sometimes able to detect a bad .Z file. If you get an error
+when uncompressing a .Z file, do not assume that the .Z file is
+correct simply because the standard
+.I uncompress
+does not complain. This generally means that the standard
+.I uncompress
+does not check its input, and happily generates garbage output.
+The SCO compress -H format (lzh compression method) does not include a CRC
+but also allows some consistency checks.
+.PP
+Files created by
+.I zip
+can be uncompressed by gzip only if they have a single member compressed
+with the 'deflation' method. This feature is only intended to help
+conversion of tar.zip files to the tar.gz format. To extract zip files
+with several members, use
+.I unzip
+instead of
+.I gunzip.
+.PP
+.I zcat
+is identical to
+.I gunzip
+.B \-c.
+(On some systems,
+.I zcat
+may be installed as
+.I gzcat
+to preserve the original link to
+.I compress.)
+.I zcat
+uncompresses either a list of files on the command line or its
+standard input and writes the uncompressed data on standard output.
+.I zcat
+will uncompress files that have the correct magic number whether
+they have a
+.B "\&.gz"
+suffix or not.
+.PP
+.I Gzip
+uses the Lempel-Ziv algorithm used in
+.I zip
+and PKZIP.
+The amount of compression obtained depends on the size of the
+input and the distribution of common substrings.
+Typically, text such as source code or English
+is reduced by 60\-70%.
+Compression is generally much better than that achieved by
+LZW (as used in
+.IR compress ),
+Huffman coding (as used in
+.IR pack ),
+or adaptive Huffman coding
+.RI ( compact ).
+.PP
+Compression is always performed, even if the compressed file is
+slightly larger than the original. The worst case expansion is
+a few bytes for the gzip file header, plus 5 bytes every 32K block,
+or an expansion ratio of 0.015% for large files. Note that the actual
+number of used disk blocks almost never increases.
+.I gzip
+preserves the mode, ownership and timestamps of files when compressing
+or decompressing.
+
+.SH OPTIONS
+.TP
+.B \-a --ascii
+Ascii text mode: convert end-of-lines using local conventions. This option
+is supported only on some non-Unix systems. For MSDOS, CR LF is converted
+to LF when compressing, and LF is converted to CR LF when decompressing.
+.TP
+.B \-c --stdout --to-stdout
+Write output on standard output; keep original files unchanged.
+If there are several input files, the output consists of a sequence of
+independently compressed members. To obtain better compression,
+concatenate all input files before compressing them.
+.TP
+.B \-d --decompress --uncompress
+Decompress.
+.TP
+.B \-f --force
+Force compression or decompression even if the file has multiple links
+or the corresponding file already exists, or if the compressed data
+is read from or written to a terminal. If the input data is not in
+a format recognized by
+.I gzip,
+and if the option --stdout is also given, copy the input data without change
+to the standard ouput: let
+.I zcat
+behave as
+.I cat.
+If
+.B \-f
+is not given,
+and when not running in the background,
+.I gzip
+prompts to verify whether an existing file should be overwritten.
+.TP
+.B \-h --help
+Display a help screen and quit.
+.TP
+.B \-l --list
+For each compressed file, list the following fields:
+
+    compressed size: size of the compressed file
+    uncompressed size: size of the uncompressed file
+    ratio: compression ratio (0.0% if unknown)
+    uncompressed_name: name of the uncompressed file
+
+The uncompressed size is given as -1 for files not in gzip format,
+such as compressed .Z files. To get the uncompressed size for such a file,
+you can use:
+
+    zcat file.Z | wc -c
+
+In combination with the --verbose option, the following fields are also
+displayed:
+
+    method: compression method
+    crc: the 32-bit CRC of the uncompressed data
+    date & time: time stamp for the uncompressed file
+
+The compression methods currently supported are deflate, compress, lzh
+(SCO compress -H) and pack.  The crc is given as ffffffff for a file
+not in gzip format.
+
+With --name, the uncompressed name,  date and time  are
+those stored within the compress file if present.
+
+With --verbose, the size totals and compression ratio for all files
+is also displayed, unless some sizes are unknown. With --quiet,
+the title and totals lines are not displayed.
+.TP
+.B \-L --license
+Display the
+.I gzip
+license and quit.
+.TP
+.B \-n --no-name
+When compressing, do not save the original file name and time stamp by
+default. (The original name is always saved if the name had to be
+truncated.) When decompressing, do not restore the original file name
+if present (remove only the
+.I gzip
+suffix from the compressed file name) and do not restore the original
+time stamp if present (copy it from the compressed file). This option
+is the default when decompressing.
+.TP
+.B \-N --name
+When compressing, always save the original file name and time stamp; this
+is the default. When decompressing, restore the original file name and
+time stamp if present. This option is useful on systems which have
+a limit on file name length or when the time stamp has been lost after
+a file transfer.
+.TP
+.B \-q --quiet
+Suppress all warnings.
+.TP
+.B \-r --recursive
+Travel the directory structure recursively. If any of the file names
+specified on the command line are directories,
+.I gzip
+will descend into the directory and compress all the files it finds there
+(or decompress them in the case of
+.I gunzip
+).
+.TP
+.B \-S .suf   --suffix .suf
+Use suffix .suf instead of .gz. Any suffix can be given, but suffixes
+other than .z and .gz should be avoided to avoid confusion when files
+are transferred to other systems.  A null suffix forces gunzip to  try
+decompression on all given files regardless of suffix, as in:
+
+    gunzip -S "" *       (*.* for MSDOS)
+
+Previous versions of gzip used
+the .z suffix. This was changed to avoid a conflict with
+.IR pack "(1)".
+.TP
+.B \-t --test
+Test. Check the compressed file integrity.
+.TP
+.B \-v --verbose
+Verbose. Display the name and percentage reduction for each file compressed
+or decompressed.
+.TP
+.B \-V --version
+Version. Display the version number and compilation options then quit.
+.TP
+.B \-# --fast --best
+Regulate the speed of compression using the specified digit
+.IR # ,
+where
+.B \-1
+or
+.B \-\-fast
+indicates the fastest compression method (less compression)
+and
+.B \-9
+or
+.B \-\-best
+indicates the slowest compression method (best compression).
+The default compression level is
+.BR \-6
+(that is, biased towards high compression at expense of speed).
+.SH "ADVANCED USAGE"
+Multiple compressed files can be concatenated. In this case,
+.I gunzip
+will extract all members at once. For example:
+
+      gzip -c file1  > foo.gz
+      gzip -c file2 >> foo.gz
+
+Then
+
+      gunzip -c foo
+
+is equivalent to
+
+      cat file1 file2
+
+In case of damage to one member of a .gz file, other members can
+still be recovered (if the damaged member is removed). However,
+you can get better compression by compressing all members at once:
+
+      cat file1 file2 | gzip > foo.gz
+
+compresses better than
+
+      gzip -c file1 file2 > foo.gz
+
+If you want to recompress concatenated files to get better compression, do:
+
+      gzip -cd old.gz | gzip > new.gz
+
+If a compressed file consists of several members, the uncompressed
+size and CRC reported by the --list option applies to the last member
+only. If you need the uncompressed size for all members, you can use:
+
+      gzip -cd file.gz | wc -c
+
+If you wish to create a single archive file with multiple members so
+that members can later be extracted independently, use an archiver
+such as tar or zip. GNU tar supports the -z option to invoke gzip
+transparently. gzip is designed as a complement to tar, not as a
+replacement.
+.SH "ENVIRONMENT"
+The environment variable
+.B GZIP
+can hold a set of default options for
+.I gzip.
+These options are interpreted first and can be overwritten by
+explicit command line parameters. For example:
+      for sh:    GZIP="-8v --name"; export GZIP
+      for csh:   setenv GZIP "-8v --name"
+      for MSDOS: set GZIP=-8v --name
+
+On Vax/VMS, the name of the environment variable is GZIP_OPT, to
+avoid a conflict with the symbol set for invocation of the program.
+.SH "SEE ALSO"
+znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1),
+pack(1), compact(1)
+.PP
+The
+.I gzip
+file format is specified in P. Deutsch, \s-1GZIP\s0 file format
+specification version 4.3,
+.BR <ftp://ftp.isi.edu/in-notes/rfc1952.txt> ,
+Internet RFC 1952 (May 1996).
+The
+.I zip
+deflation format is specified in P. Deutsch, \s-1DEFLATE\s0 Compressed
+Data Format Specification version 1.3,
+.BR <ftp://ftp.isi.edu/in-notes/rfc1951.txt> ,
+Internet RFC 1951 (May 1996).
+.SH "DIAGNOSTICS"
+Exit status is normally 0;
+if an error occurs, exit status is 1. If a warning occurs, exit status is 2.
+.TP
+Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
+Invalid options were specified on the command line.
+.TP
+\fIfile\fP\^: not in gzip format
+The file specified to
+.I gunzip
+has not been compressed.
+.TP
+\fIfile\fP\^: Corrupt input. Use zcat to recover some data.
+The compressed file has been damaged. The data up to the point of failure
+can be recovered using
+
+      zcat \fIfile\fP > recover
+.TP
+\fIfile\fP\^: compressed with \fIxx\fP bits, can only handle \fIyy\fP bits
+.I File
+was compressed (using LZW) by a program that could deal with
+more
+.I bits
+than the decompress code on this machine.
+Recompress the file with gzip, which compresses better and uses
+less memory.
+.TP
+\fIfile\fP\^: already has .gz suffix -- no change
+The file is assumed to be already compressed.
+Rename the file and try again.
+.TP
+\fIfile\fP already exists; do you wish to overwrite (y or n)?
+Respond "y" if you want the output file to be replaced; "n" if not.
+.TP
+gunzip: corrupt input
+A SIGSEGV violation was detected which usually means that the input file has
+been corrupted.
+.TP
+\fIxx.x%\fP Percentage of the input saved by compression.
+(Relevant only for
+.BR \-v
+and
+.BR \-l \.)
+.TP
+-- not a regular file or directory: ignored
+When the input file is not a regular file or directory,
+(e.g. a symbolic link, socket, FIFO, device file), it is
+left unaltered.
+.TP
+-- has \fIxx\fP other links: unchanged
+The input file has links; it is left unchanged.  See
+.IR ln "(1)"
+for more information. Use the
+.B \-f
+flag to force compression of multiply-linked files.
+.SH CAVEATS
+When writing compressed data to a tape, it is generally necessary to
+pad the output with zeroes up to a block boundary. When the data is
+read and the whole block is passed to
+.I gunzip
+for decompression,
+.I gunzip
+detects that there is extra trailing garbage after the compressed data
+and emits a warning by default. You have to use the --quiet option to
+suppress the warning. This option can be set in the
+.B GZIP
+environment variable as in:
+  for sh:  GZIP="-q"  tar -xfz --block-compress /dev/rst0
+  for csh: (setenv GZIP -q; tar -xfz --block-compr /dev/rst0
+
+In the above example, gzip is invoked implicitly by the -z option of
+GNU tar. Make sure that the same block size (-b option of tar) is used
+for reading and writing compressed data on tapes.  (This example
+assumes you are using the GNU version of tar.)
+.SH BUGS
+The gzip format represents the the input size modulo 2^32, so the
+--list option reports incorrect uncompressed sizes and compression
+ratios for uncompressed files 4 GB and larger.  To work around this
+problem, you can use the following command to discover a large
+uncompressed file's true size:
+
+      zcat file.gz | wc -c
+
+The --list option reports sizes as -1 and crc as ffffffff if the
+compressed file is on a non seekable media.
+
+In some rare cases, the --best option gives worse compression than
+the default compression level (-6). On some highly redundant files,
+.I compress
+compresses better than
+.I gzip.
+.SH "COPYRIGHT NOTICE"
+Copyright \(co 1998, 1999, 2001 Free Software Foundation, Inc.
+.br
+Copyright \(co 1992, 1993 Jean-loup Gailly
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.ig
+Permission is granted to process this file through troff and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+..
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
diff --git a/raw/man1/hash.1 b/raw/man1/hash.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/hash.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/head.1 b/raw/man1/head.1
new file mode 100644
index 0000000..59b788e
--- /dev/null
+++ b/raw/man1/head.1
@@ -0,0 +1,56 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH HEAD "1" "October 2003" "head (coreutils) 5.0" FSF
+.SH NAME
+head \- output the first part of files
+.SH SYNOPSIS
+.B head
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print first 10 lines of each FILE to standard output.
+With more than one FILE, precede each with a header giving the file name.
+With no FILE, or when FILE is -, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR=\fISIZE\fR
+print first SIZE bytes
+.TP
+\fB\-n\fR, \fB\-\-lines\fR=\fINUMBER\fR
+print first NUMBER lines instead of first 10
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+never print headers giving file names
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+always print headers giving file names
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B head
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B head
+programs are properly installed at your site, the command
+.IP
+.B info head
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/help.1 b/raw/man1/help.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/help.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/history.1 b/raw/man1/history.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/history.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/host.1 b/raw/man1/host.1
new file mode 100644
index 0000000..38a1ef6
--- /dev/null
+++ b/raw/man1/host.1
@@ -0,0 +1,129 @@
+.\"
+.\" Copyright (C) 2000, 2001  Internet Software Consortium.
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
+.\" DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+.\" INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.TH "HOST" "1" "Jun 30, 2000" "BIND9" ""
+.SH NAME
+host \- DNS lookup utility
+.SH SYNOPSIS
+.sp
+\fBhost\fR [ \fB-aCdlnrTwv\fR ]  [ \fB-c \fIclass\fB\fR ]  [ \fB-N \fIndots\fB\fR ]  [ \fB-R \fInumber\fB\fR ]  [ \fB-t \fItype\fB\fR ]  [ \fB-W \fIwait\fB\fR ]  \fBname\fR [ \fBserver\fR ] 
+.SH "DESCRIPTION"
+.PP
+\fBhost\fR
+is a simple utility for performing DNS lookups.
+It is normally used to convert names to IP addresses and vice versa.
+When no arguments or options are given,
+\fBhost\fR
+prints a short summary of its command line arguments and options.
+.PP
+\fIname\fR is the domain name that is to be looked
+up. It can also be a dotted-decimal IPv4 address or a colon-delimited
+IPv6 address, in which case \fBhost\fR will by default
+perform a reverse lookup for that address.
+\fIserver\fR is an optional argument which is either
+the name or IP address of the name server that \fBhost\fR
+should query instead of the server or servers listed in
+\fI/etc/resolv.conf\fR.
+.PP
+The \fB-a\fR (all) option is equivalent to setting the
+\fB-v\fR option and asking \fBhost\fR to make
+a query of type ANY.
+.PP
+When the \fB-C\fR option is used, \fBhost\fR
+will attempt to display the SOA records for zone
+\fIname\fR from all the listed authoritative name
+servers for that zone. The list of name servers is defined by the NS
+records that are found for the zone.
+.PP
+The \fB-c\fR option instructs to make a DNS query of class
+\fIclass\fR. This can be used to lookup Hesiod or
+Chaosnet class resource records. The default class is IN (Internet).
+.PP
+Verbose output is generated by \fBhost\fR when the
+\fB-d\fR or \fB-v\fR option is used. The two
+options are equivalent. They have been provided for backwards
+compatibility. In previous versions, the \fB-d\fR option
+switched on debugging traces and \fB-v\fR enabled verbose
+output.
+.PP
+List mode is selected by the \fB-l\fR option. This makes
+\fBhost\fR perform a zone transfer for zone
+\fIname\fR. The argument is provided for
+compatibility with older implementations. This option is equivalent
+to making a query of type AXFR.
+.PP
+The \fB-n\fR
+option specifies that reverse lookups of IPv6 addresses should
+use the IP6.INT domain and "nibble" labels as defined in RFC1886.
+The default is to use IP6.ARPA and binary labels as defined in RFC2874.
+.PP
+The \fB-N\fR option sets the number of dots that have to be
+in \fIname\fR for it to be considered absolute. The
+default value is that defined using the ndots statement in
+\fI/etc/resolv.conf\fR, or 1 if no ndots statement is
+present. Names with fewer dots are interpreted as relative names and
+will be searched for in the domains listed in the \fBsearch\fR
+or \fBdomain\fR directive in
+\fI/etc/resolv.conf\fR.
+.PP
+The number of UDP retries for a lookup can be changed with the
+\fB-R\fR option. \fInumber\fR indicates
+how many times \fBhost\fR will repeat a query that does
+not get answered. The default number of retries is 1. If
+\fInumber\fR is negative or zero, the number of
+retries will default to 1.
+.PP
+Non-recursive queries can be made via the \fB-r\fR option.
+Setting this option clears the \fBRD\fR \(em recursion
+desired \(em bit in the query which \fBhost\fR makes.
+This should mean that the name server receiving the query will not
+attempt to resolve \fIname\fR. The
+\fB-r\fR option enables \fBhost\fR to mimic
+the behaviour of a name server by making non-recursive queries and
+expecting to receive answers to those queries that are usually
+referrals to other name servers.
+.PP
+By default \fBhost\fR uses UDP when making queries. The
+\fB-T\fR option makes it use a TCP connection when querying
+the name server. TCP will be automatically selected for queries that
+require it, such as zone transfer (AXFR) requests.
+.PP
+The \fB-t\fR option is used to select the query type.
+\fItype\fR can be any recognised query type: CNAME,
+NS, SOA, SIG, KEY, AXFR, etc. When no query type is specified,
+\fBhost\fR automatically selects an appropriate query
+type. By default it looks for A records, but if the
+\fB-C\fR option was given, queries will be made for SOA
+records, and if \fIname\fR is a dotted-decimal IPv4
+address or colon-delimited IPv6 address, \fBhost\fR will
+query for PTR records.
+.PP
+The time to wait for a reply can be controlled through the
+\fB-W\fR and \fB-w\fR options. The
+\fB-W\fR option makes \fBhost\fR wait for
+\fIwait\fR seconds. If \fIwait\fR
+is less than one, the wait interval is set to one second. When the
+\fB-w\fR option is used, \fBhost\fR will
+effectively wait forever for a reply. The time to wait for a response
+will be set to the number of seconds given by the hardware's maximum
+value for an integer quantity.
+.SH "FILES"
+.PP
+\fI/etc/resolv.conf\fR
+.SH "SEE ALSO"
+.PP
+\fBdig\fR(1),
+\fBnamed\fR(8).
diff --git a/raw/man1/hostid.1 b/raw/man1/hostid.1
new file mode 100644
index 0000000..6c1ab40
--- /dev/null
+++ b/raw/man1/hostid.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH HOSTID "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+hostid \- print the numeric identifier for the current host
+.SH SYNOPSIS
+.B hostid
+
+.br
+.B hostid
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the numeric identifier (in hexadecimal) for the current host.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B hostid
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B hostid
+programs are properly installed at your site, the command
+.IP
+.B info hostid
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/hostname.1 b/raw/man1/hostname.1
new file mode 100644
index 0000000..e17e651
--- /dev/null
+++ b/raw/man1/hostname.1
@@ -0,0 +1,200 @@
+.TH HOSTNAME 1 "28 Jan 1996" "net-tools" "Linux Programmer's Manual"
+
+.SH NAME
+hostname \- show or set the system's host name
+.br
+domainname \- show or set the system's NIS/YP domain name
+.br
+dnsdomainname \- show the system's DNS domain name
+.br
+nisdomainname \- show or set system's NIS/YP domain name
+.br
+ypdomainname \- show or set the system's NIS/YP domain name
+
+.SH SYNOPSIS
+.B hostname
+.RB [ \-v ]
+.RB [ \-a ]
+.RB [ \-\-alias ]
+.RB [ \-d ]
+.RB [ \-\-domain ]
+.RB [ \-f ]
+.RB [ \-\-fqdn ]
+.RB [ \-i ]
+.RB [ \-\-ip-address ]
+.RB [ \-\-long ]
+.RB [ \-s ]
+.RB [ \-\-short ]
+.RB [ \-y ]
+.RB [ \-\-yp ]
+.RB [ \-\-nis ]
+.RB [ \-n ]
+.RB [ \-\-node ]
+
+.PP
+.B hostname 
+.RB [ \-v ]
+.RB [ \-F\ filename ]
+.RB [ \-\-file\ filename ]
+.RB [ hostname ]
+
+.PP
+.B domainname
+.RB [ \-v ]
+.RB [ \-F\ filename ]
+.RB [ \-\-file\ filename ]
+.RB [ name ]
+
+.PP 
+.B nodename
+.RB [ \-v ]
+.RB [ \-F\ filename ]
+.RB [ \-\-file\ filename ]
+.RB [ name ]
+
+.PP
+.B hostname
+.RB [ \-v ]
+.RB [ \-h ]
+.RB [ \-\-help ]
+.RB [ \-V ]
+.RB [ \-\-version ]
+
+.PP
+.B dnsdomainname
+.RB [ \-v ]
+.br
+.B nisdomainname
+.RB [ \-v ]
+.br
+.B ypdomainname
+.RB [ \-v ]
+
+.SH DESCRIPTION
+.B Hostname
+is the program that is used to either set or display
+the current host, domain or node name of the system.  These names are used
+by many of the networking programs to identify the machine. The domain 
+name is also used by NIS/YP.
+
+.SS "GET NAME"
+When called without any arguments, the program displays the current
+names:
+
+.LP
+.B hostname
+will print the name of the system as returned by the
+.BR gethostname (2)
+function.
+
+.LP
+.B "domainname, nisdomainname, ypdomainname"
+will print the name of the system as returned by the
+.BR getdomainname (2)
+function. This is also known as the YP/NIS domain name of the system.
+
+.LP
+.B dnsdomainname
+will print the domain part of the FQDN (Fully Qualified Domain Name). The
+complete FQDN of the system is returned with
+.BR "hostname \-\-fqdn" .
+
+.SS "SET NAME"
+When called with one argument or with the 
+.B \-\-file
+option, the commands set the host name, the NIS/YP domain name or
+the node name. 
+
+.LP
+Note, that only the super-user can change the names. 
+
+.LP
+It is not possible to set the FQDN or the DNS domain name with the 
+.B dnsdomainname 
+command (see 
+.B "THE FQDN"
+below).
+
+.LP
+The host name is usually set once at system startup in
+.I /etc/rc.d/rc.inet1
+or
+.I /etc/init.d/boot
+(normally by reading the contents of a file which contains
+the host name, e.g. 
+.IR /etc/hostname ).
+
+.SS THE FQDN
+You can't change the FQDN (as returned by 
+.BR "hostname \-\-fqdn" ) 
+or the DNS domain name (as returned by
+.BR "dnsdomainname" ) 
+with this command. The FQDN of the system is the name that the
+.BR resolver (3)
+returns for the host name. 
+
+.LP
+Technically: The FQDN is the name
+.BR gethostbyname (2)
+returns for the host name returned by
+.BR gethostname (2).
+The DNS domain name is the part after the first dot.
+.LP
+Therefore it depends on the configuration (usually in 
+.IR /etc/host.conf )
+how you can change it. Usually (if the hosts file is parsed before DNS or 
+NIS) you can change it in 
+.IR /etc/hosts .
+
+
+.SH OPTIONS
+.TP
+.I "\-a, \-\-alias"
+Display the alias name of the host (if used).
+.TP
+.I "\-d, \-\-domain"
+Display the name of the DNS domain. Don't use the command
+.B domainname
+to get the DNS domain name because it will show the NIS domain name and
+not the DNS domain name. Use
+.B dnsdomainname 
+instead.
+.TP
+.I "\-F, \-\-file filename"
+Read the host name from the specified file. Comments (lines starting with
+a `#') are ignored.
+.TP
+.I "\-f, \-\-fqdn, \-\-long"
+Display the FQDN (Fully Qualified Domain Name). A FQDN consists of a
+short host name and the DNS domain name. Unless you are using bind or NIS
+for host lookups you can change the FQDN and the DNS domain name (which is
+part of the FQDN) in the \fI/etc/hosts\fR file.
+.TP
+.I "\-h, \-\-help"
+Print a usage message and exit.
+.TP
+.I "\-i, \-\-ip-address"
+Display the IP address(es) of the host.
+.TP
+.I "\-s, \-\-short"
+Display the short host name. This is the host name cut at the first dot.
+.TP
+.I "\-V, \-\-version"
+Print version information on standard output and exit successfully.
+.TP
+.I "\-v, \-\-verbose"
+Be verbose and tell what's going on.
+.TP
+.I "\-y, \-\-yp, \-\-nis"
+Display the NIS domain name. If a parameter is given (or 
+.B \-\-file name
+) then root can also set a new NIS domain.
+.SH FILES
+.B /etc/hosts
+.SH AUTHOR
+Peter Tobias, <tobias at et-inf.fho-emden.de>
+.br
+Bernd Eckenfels, <net-tools at lina.inka.de> (NIS and manpage).
+.br
+Steve Whitehouse, <SteveW at ACM.org> (DECnet support and manpage).
+
diff --git a/raw/man1/iconv.1 b/raw/man1/iconv.1
new file mode 100644
index 0000000..f5cfd10
--- /dev/null
+++ b/raw/man1/iconv.1
@@ -0,0 +1,239 @@
+.rn '' }`
+''' $RCSfile: iconv.1,v $$Revision: 1.1 $$Date: 2003/12/20 03:31:53 $
+'''
+''' $Log: iconv.1,v $
+''' Revision 1.1  2003/12/20 03:31:53  bbbush
+''' Add original text to raw directory
+'''
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+'''     Set up \*(-- to give an unbreakable dash;
+'''     string Tr holds user defined translation string.
+'''     Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+'''   \*(L" and \*(R", except that they are used on ".xx" lines,
+'''   such as .IP and .SH, which do another additional levels of
+'''   double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\"	If the F register is turned on, we'll generate
+.\"	index entries out stderr for the following things:
+.\"		TH	Title 
+.\"		SH	Header
+.\"		Sh	Subsection 
+.\"		Ip	Item
+.\"		X<>	Xref  (embedded
+.\"	Of course, you have to process the output yourself
+.\"	in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH ICONV 1 "March 2001" "Red Hat Linux"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ          \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+.	\" AM - accent mark definitions
+.bd B 3
+.	\" fudge factors for nroff and troff
+.if n \{\
+.	ds #H 0
+.	ds #V .8m
+.	ds #F .3m
+.	ds #[ \f1
+.	ds #] \fP
+.\}
+.if t \{\
+.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.	ds #V .6m
+.	ds #F 0
+.	ds #[ \&
+.	ds #] \&
+.\}
+.	\" simple accents for nroff and troff
+.if n \{\
+.	ds ' \&
+.	ds ` \&
+.	ds ^ \&
+.	ds , \&
+.	ds ~ ~
+.	ds ? ?
+.	ds ! !
+.	ds /
+.	ds q
+.\}
+.if t \{\
+.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+.	\" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+.	\" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.	\" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.	ds : e
+.	ds 8 ss
+.	ds v \h'-1'\o'\(aa\(ga'
+.	ds _ \h'-1'^
+.	ds . \h'-1'.
+.	ds 3 3
+.	ds o a
+.	ds d- d\h'-1'\(ga
+.	ds D- D\h'-1'\(hy
+.	ds th \o'bp'
+.	ds Th \o'LP'
+.	ds ae ae
+.	ds Ae AE
+.	ds oe oe
+.	ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+iconv \- Convert encoding of given files from one encoding to another
+.SH "SYNOPSIS"
+iconv \fB\-f\fR \fIencoding\fR \fB\-t\fR \fIencoding\fR \fIinputfile\fR
+.SH "DESCRIPTION"
+The \fBiconv\fR program converts the encoding of characters in
+\fIinputfile\fR from one coded character set to another. The result is
+written to standard output unless otherwise specified by the
+\fB--output\fR option.
+.PP
+\fB--from-code\fR, \fB\-f\fR \fIencoding\fR
+.PP
+Convert characters from \fIencoding\fR
+.PP
+\fB--to-code\fR, \fB\-t\fR \fIencoding\fR
+.PP
+Convert characters to \fIencoding\fR
+.PP
+\fB--list\fR
+.PP
+List known coded character sets
+.PP
+\fB--output\fR, \fB\-o\fR \fIfile\fR
+.PP
+Specify output file (instead of stdout)
+.PP
+\fB--verbose\fR
+.PP
+Print progress information.
+.SH "AUTHOR"
+iconv is written by Ulrich Drepper as part of the GNU C Library.
+.PP
+This man page is written by Joel Klecker <espy at debian.org>,
+for the Debian GNU/Linux system.
+
+.rn }` ''
+.IX Title "ICONV 1"
+.IX Name "iconv - Convert encoding of given files from one encoding to another"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Header "AUTHOR"
+
diff --git a/raw/man1/id.1 b/raw/man1/id.1
new file mode 100644
index 0000000..c9f3b32
--- /dev/null
+++ b/raw/man1/id.1
@@ -0,0 +1,58 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH ID "1" "October 2003" "id (coreutils) 5.0" FSF
+.SH NAME
+id \- print real and effective UIDs and GIDs
+.SH SYNOPSIS
+.B id
+[\fIOPTION\fR]... [\fIUSERNAME\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print information for USERNAME, or the current user.
+.TP
+\fB\-a\fR
+ignore, for compatibility with other versions
+.TP
+\fB\-g\fR, \fB\-\-group\fR
+print only the effective group ID
+.TP
+\fB\-G\fR, \fB\-\-groups\fR
+print all group IDs
+.TP
+\fB\-n\fR, \fB\-\-name\fR
+print a name instead of a number, for \fB\-ugG\fR
+.TP
+\fB\-r\fR, \fB\-\-real\fR
+print the real ID instead of the effective ID, with \fB\-ugG\fR
+.TP
+\fB\-u\fR, \fB\-\-user\fR
+print only the effective user ID
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Without any OPTION, print some useful set of identified information.
+.SH AUTHOR
+Written by Arnold Robbins and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B id
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B id
+programs are properly installed at your site, the command
+.IP
+.B info id
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/info.1 b/raw/man1/info.1
new file mode 100644
index 0000000..085fed3
--- /dev/null
+++ b/raw/man1/info.1
@@ -0,0 +1,83 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH INFO "1" "June 2003" "info 4.6" "User Commands"
+.SH NAME
+info \- read Info documents
+.SH SYNOPSIS
+.B info
+[\fIOPTION\fR]... [\fIMENU-ITEM\fR...]
+.SH DESCRIPTION
+Read documentation in Info format.
+.SH OPTIONS
+.TP
+\fB\-\-apropos\fR=\fISTRING\fR
+look up STRING in all indices of all manuals.
+.TP
+\fB\-d\fR, \fB\-\-directory\fR=\fIDIR\fR
+add DIR to INFOPATH.
+.TP
+\fB\-\-dribble\fR=\fIFILENAME\fR
+remember user keystrokes in FILENAME.
+.TP
+\fB\-f\fR, \fB\-\-file\fR=\fIFILENAME\fR
+specify Info file to visit.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-index\-search\fR=\fISTRING\fR
+go to node pointed by index entry STRING.
+.TP
+\fB\-n\fR, \fB\-\-node\fR=\fINODENAME\fR
+specify nodes in first visited Info file.
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILENAME\fR
+output selected nodes to FILENAME.
+.TP
+\fB\-R\fR, \fB\-\-raw\-escapes\fR
+don't remove ANSI escapes from man pages.
+.TP
+\fB\-\-restore\fR=\fIFILENAME\fR
+read initial keystrokes from FILENAME.
+.TP
+\fB\-O\fR, \fB\-\-show\-options\fR, \fB\-\-usage\fR
+go to command-line options node.
+.TP
+\fB\-\-subnodes\fR
+recursively output menu items.
+.TP
+\fB\-\-vi\-keys\fR
+use vi-like and less-like key bindings.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.PP
+The first non-option argument, if present, is the menu entry to start from;
+it is searched for in all `dir' files along INFOPATH.
+If it is not present, info merges all `dir' files and shows the result.
+Any remaining arguments are treated as the names of menu
+items relative to the initial node visited.
+.SH EXAMPLES
+.TP
+info
+show top-level dir menu
+.TP
+info emacs
+start at emacs node from top-level dir
+.TP
+info emacs buffers
+start at buffers node within emacs manual
+.TP
+info \fB\-\-show\-options\fR emacs
+start at node with emacs' command line options
+.TP
+info \fB\-f\fR ./foo.info
+show file ./foo.info, not searching dir
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo at gnu.org,
+general questions and discussion to help-texinfo at gnu.org.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/raw/man1/initdb.1 b/raw/man1/initdb.1
new file mode 100644
index 0000000..90c140e
--- /dev/null
+++ b/raw/man1/initdb.1
@@ -0,0 +1,150 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "INITDB" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+initdb \- create a new PostgreSQL database cluster
+
+.SH SYNOPSIS
+.sp
+\fBinitdb\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR \fR\fR \fB--pgdata \fR\fR | \fR\fB-D \fR\fIdirectory\fR\fR\fR
+.SH "DESCRIPTION"
+.PP
+\fBinitdb\fR creates a new
+PostgreSQL database cluster. A database
+cluster is a collection of databases that are managed by a single
+server instance.
+.PP
+Creating a database cluster consists of creating the directories in which
+the database data will live, generating the shared catalog tables 
+(tables that belong to the whole cluster rather than to any particular
+database), and creating the template1
+database. When you later create a new database, everything in the
+template1 database is copied.
+It contains catalog tables filled in for things like the
+built-in types.
+.PP
+\fBinitdb\fR initializes the database cluster's
+default locale and character set encoding. Some locale categories
+are fixed for the lifetime of the cluster, so it is important to
+make the right choice when running \fBinitdb\fR.
+Other locale categories can be changed later when the server is
+started. \fBinitdb\fR will write those locale
+settings into the \fIpostgresql.conf\fR
+configuration file so they are the default, but they can be changed
+by editing that file. To set the locale that
+\fBinitdb\fR uses, see the description of the
+\fB--locale\fR option. The character set encoding can
+be set separately for each database as it is created.
+\fBinitdb\fR determines the encoding for the
+template1 database, which will serve as the
+default for all other databases. To alter the default encoding use
+the \fB--encoding\fR option.
+.PP
+\fBinitdb\fR must be run as the user that will own the
+server process, because the server needs to have access to the
+files and directories that \fBinitdb\fR creates.
+Since the server may not be run as root, you must not run
+\fBinitdb\fR as root either. (It will in fact refuse
+to do so.)
+.PP
+Although \fBinitdb\fR will attempt to create the
+specified data directory, often it won't have permission to do so,
+since the parent of the desired data directory is often a root-owned
+directory. To set up an arrangement like this, create an empty data
+directory as root, then use \fBchown\fR to hand over
+ownership of that directory to the database user account, then
+\fBsu\fR to become the database user, and
+finally run \fBinitdb\fR as the database user.
+.SH "OPTIONS"
+.PP
+.TP
+\fB-D \fIdirectory\fB\fR
+.TP
+\fB--pgdata=\fIdirectory\fB\fR
+This option specifies the directory where the database cluster
+should be stored. This is the only information required by
+\fBinitdb\fR, but you can avoid writing it by
+setting the \fBPGDATA\fR environment variable, which
+can be convenient since the database server
+(\fBpostmaster\fR) can find the database
+directory later by the same variable.
+.TP
+\fB-E \fIencoding\fB\fR
+.TP
+\fB--encoding=\fIencoding\fB\fR
+Selects the encoding of the template database. This will also
+be the default encoding of any database you create later, unless you
+override it there. The default is SQL_ASCII.
+.TP
+\fB--locale=\fIlocale\fB\fR
+Sets the default locale for the database cluster. If this
+option is not specified, the locale is inherited from the
+environment that \fBinitdb\fR runs in.
+.TP
+\fB--lc-collate=\fIlocale\fB\fR
+.TP
+\fB--lc-ctype=\fIlocale\fB\fR
+.TP
+\fB--lc-messages=\fIlocale\fB\fR
+.TP
+\fB--lc-monetary=\fIlocale\fB\fR
+.TP
+\fB--lc-numeric=\fIlocale\fB\fR
+.TP
+\fB--lc-time=\fIlocale\fB\fR
+Like \fB--locale\fR, but only sets the locale in
+the specified category.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username=\fIusername\fB\fR
+Selects the user name of the database superuser. This defaults
+to the name of the effective user running
+\fBinitdb\fR. It is really not important what the
+superuser's name is, but one might choose to keep the
+customary name \fBpostgres\fR, even if the operating
+system user's name is different.
+.TP
+\fB-W\fR
+.TP
+\fB--pwprompt\fR
+Makes \fBinitdb\fR prompt for a password
+to give the database superuser. If you don't plan on using password
+authentication, this is not important. Otherwise you won't be
+able to use password authentication until you have a password
+set up.
+.PP
+.PP
+Other, less commonly used, parameters are also available:
+.TP
+\fB-d\fR
+.TP
+\fB--debug\fR
+Print debugging output from the bootstrap backend and a few other
+messages of lesser interest for the general public.
+The bootstrap backend is the program \fBinitdb\fR
+uses to create the catalog tables. This option generates a tremendous
+amount of extremely boring output.
+.TP
+\fB-L \fIdirectory\fB\fR
+Specifies where \fBinitdb\fR should find
+its input files to initialize the database cluster. This is
+normally not necessary. You will be told if you need to
+specify their location explicitly.
+.TP
+\fB-n\fR
+.TP
+\fB--noclean\fR
+By default, when \fBinitdb\fR
+determines that an error prevented it from completely creating the database
+cluster, it removes any files it may have created before discovering
+that it can't finish the job. This option inhibits tidying-up and is
+thus useful for debugging.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATA\fR
+Specifies the directory where the database cluster is to be
+stored; may be overridden using the \fB-D\fR option.
+.SH "SEE ALSO"
+\fBpostgres\fR(1), \fBpostmaster\fR(1)
+
diff --git a/raw/man1/initex.1 b/raw/man1/initex.1
new file mode 100644
index 0000000..b6cf832
--- /dev/null
+++ b/raw/man1/initex.1
@@ -0,0 +1 @@
+.so man1/tex.1
diff --git a/raw/man1/initlocation.1 b/raw/man1/initlocation.1
new file mode 100644
index 0000000..a3b3350
--- /dev/null
+++ b/raw/man1/initlocation.1
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "INITLOCATION" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+initlocation \- create a secondary PostgreSQL database storage area
+
+.SH SYNOPSIS
+.sp
+\fBinitlocation\fR \fB\fIdirectory\fB\fR
+.SH "DESCRIPTION"
+.PP
+\fBinitlocation\fR 
+creates a new PostgreSQL secondary database storage area.
+See the discussion under CREATE DATABASE [\fBcreate_database\fR(7)]
+about how to manage and use secondary storage areas. If the argument does not contain
+a slash and is not valid as a path, it is assumed to be an environment variable,
+which is referenced. See the examples at the end.
+.PP
+In order to use this command you must be logged in (using \fBsu\fR, for example)
+as the database superuser.
+.SH "EXAMPLES"
+.PP
+To create a database in an alternate location, using an
+environment variable:
+.sp
+.nf
+$ \fBexport PGDATA2=/opt/postgres/data\fR
+.sp
+.fi
+Stop and start \fBpostmaster\fR so it sees the \fBPGDATA2\fR
+environment variable. The system must be configured so the
+\fBpostmaster\fR sees \fBPGDATA2\fR every time it starts. Finally:
+.sp
+.nf
+$ \fBinitlocation PGDATA2\fR
+$ \fBcreatedb -D PGDATA2 testdb\fR
+.sp
+.fi
+.PP
+Alternatively, if you allow absolute paths you could write:
+.sp
+.nf
+$ \fBinitlocation /opt/postgres/data\fR
+$ \fBcreatedb -D /opt/postgres/data/testdb testdb\fR
+.sp
+.fi
diff --git a/raw/man1/install-info.1 b/raw/man1/install-info.1
new file mode 100644
index 0000000..312e13b
--- /dev/null
+++ b/raw/man1/install-info.1
@@ -0,0 +1,78 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH INSTALL-INFO "1" "June 2003" "install-info 4.6" "User Commands"
+.SH NAME
+install-info \- update info/dir entries
+.SH SYNOPSIS
+.B install-info
+[\fIOPTION\fR]... [\fIINFO-FILE \fR[\fIDIR-FILE\fR]]
+.SH DESCRIPTION
+Install or delete dir entries from INFO-FILE in the Info directory file
+DIR-FILE.
+.SH OPTIONS
+.TP
+\fB\-\-delete\fR
+delete existing entries for INFO-FILE from DIR-FILE;
+don't insert any new entries.
+.TP
+\fB\-\-dir\-file\fR=\fINAME\fR
+specify file name of Info directory file.
+This is equivalent to using the DIR-FILE argument.
+.TP
+\fB\-\-entry\fR=\fITEXT\fR
+insert TEXT as an Info directory entry.
+TEXT should have the form of an Info menu item line
+plus zero or more extra lines starting with whitespace.
+If you specify more than one entry, they are all added.
+If you don't specify any entries, they are determined
+from information in the Info file itself.
+.TP
+\fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-info\-file\fR=\fIFILE\fR
+specify Info file to install in the directory.
+This is equivalent to using the INFO-FILE argument.
+.TP
+\fB\-\-info\-dir\fR=\fIDIR\fR
+same as \fB\-\-dir\-file\fR=\fIDIR\fR/dir.
+.TP
+\fB\-\-item\fR=\fITEXT\fR
+same as \fB\-\-entry\fR TEXT.
+An Info directory entry is actually a menu item.
+.TP
+\fB\-\-quiet\fR
+suppress warnings.
+.TP
+\fB\-\-remove\fR
+same as \fB\-\-delete\fR.
+.TP
+\fB\-\-section\fR=\fISEC\fR
+put this file's entries in section SEC of the directory.
+If you specify more than one section, all the entries
+are added in each of the sections.
+If you don't specify any sections, they are determined
+from information in the Info file itself.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo at gnu.org,
+general questions and discussion to help-texinfo at gnu.org.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO"
+The full documentation for
+.B install-info
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B install-info
+programs are properly installed at your site, the command
+.IP
+.B info install-info
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/install.1 b/raw/man1/install.1
new file mode 100644
index 0000000..3288fec
--- /dev/null
+++ b/raw/man1/install.1
@@ -0,0 +1,101 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH INSTALL "1" "October 2003" "install (coreutils) 5.0" FSF
+.SH NAME
+ginstall \- copy files and set attributes
+.SH SYNOPSIS
+.B install
+[\fIOPTION\fR]... \fISOURCE DEST           (1st format)\fR
+.br
+.B install
+[\fIOPTION\fR]... \fISOURCE\fR... \fIDIRECTORY   (2nd format)\fR
+.br
+.B install
+\fI-d \fR[\fIOPTION\fR]... \fIDIRECTORY\fR...       \fI(3rd format)\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to
+the existing DIRECTORY, while setting permission modes and owner/group.
+In the third format, create all components of the given DIRECTORY(ies).
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.HP
+\fB\-\-backup\fR[=\fICONTROL\fR] make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-c\fR
+(ignored)
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+treat all arguments as directory names; create all
+components of the specified directories
+.TP
+\fB\-D\fR
+create all leading components of DEST except the last,
+then copy SOURCE to DEST;  useful in the 1st format
+.TP
+\fB\-g\fR, \fB\-\-group\fR=\fIGROUP\fR
+set group ownership, instead of process' current group
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set permission mode (as in chmod), instead of rwxr-xr-x
+.TP
+\fB\-o\fR, \fB\-\-owner\fR=\fIOWNER\fR
+set ownership (super-user only)
+.TP
+\fB\-p\fR, \fB\-\-preserve\-timestamps\fR
+apply access/modification times of SOURCE files
+to corresponding destination files
+.TP
+\fB\-s\fR, \fB\-\-strip\fR
+strip symbol tables, only for 1st and 2nd formats
+.HP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR override the usual backup suffix
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+print the name of each directory as it is created
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable.  Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B install
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B install
+programs are properly installed at your site, the command
+.IP
+.B info install
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/intro.1 b/raw/man1/intro.1
new file mode 100644
index 0000000..31627c5
--- /dev/null
+++ b/raw/man1/intro.1
@@ -0,0 +1,258 @@
+.\" Copyright (c) 2002 Andries Brouwer <aeb at cwi.nl>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH INTRO 1 2002-08-06 "Linux" "Linux Programmer's Manual"
+.SH NAME
+intro \- Introduction to user commands
+.SH DESCRIPTION
+Linux is a flavour of Unix, and as a first approximation
+all user commands under Unix work precisely the same under
+Linux (and FreeBSD and lots of other Unix-like systems).
+.LP
+Under Linux there are GUIs (graphical user interfaces), where you
+can point and click and drag, and hopefully get work done without
+first reading lots of documentation. The traditional Unix environment
+is a CLI (command line interface), where you type commands to
+tell the computer what to do. That is faster and more powerful,
+but requires finding out what the commands are.
+Below a bare minimum, to get started.
+.SS "Login"
+In order to start working, you probably first have to login,
+that is, give your username and password. See also
+.BR login (1).
+The program
+.I login
+now starts a
+.I shell
+(command interpreter) for you.
+In case of a graphical login, you get a screen with menus or icons
+and a mouse click will start a shell in a window. See also
+.BR xterm (1).
+.SS "The shell"
+One types commands to the
+.IR shell ,
+the command interpreter. It is not built-in, but is just a program
+and you can change your shell. Everybody has her own favourite one.
+The standard one is called
+.IR sh .
+See also
+.BR ash (1),
+.BR bash (1),
+.BR csh (1),
+.BR zsh (1),
+.BR chsh (1).
+.LP
+A session might go like
+
+.RS
+.nf
+.BI "knuth login: " aeb
+.BI "Password: " ********
+.BI "% " date
+Tue Aug  6 23:50:44 CEST 2002
+.BI "% " cal
+     August 2002
+Su Mo Tu We Th Fr Sa 
+             1  2  3
+ 4  5  6  7  8  9 10
+11 12 13 14 15 16 17
+18 19 20 21 22 23 24
+25 26 27 28 29 30 31
+
+.BI "% " ls
+bin  tel
+.BI "% " "ls -l"
+total 2
+drwxrwxr-x   2 aeb       1024 Aug  6 23:51 bin
+-rw-rw-r--   1 aeb         37 Aug  6 23:52 tel
+.BI "% " "cat tel"
+maja    0501-1136285
+peter   0136-7399214
+.BI "% " "cp tel tel2"
+.BI "% " "ls -l"
+total 3
+drwxr-xr-x   2 aeb       1024 Aug  6 23:51 bin
+-rw-r--r--   1 aeb         37 Aug  6 23:52 tel
+-rw-r--r--   1 aeb         37 Aug  6 23:53 tel2
+.BI "% " "mv tel tel1"
+.BI "% " "ls -l"
+total 3
+drwxr-xr-x   2 aeb       1024 Aug  6 23:51 bin
+-rw-r--r--   1 aeb         37 Aug  6 23:52 tel1
+-rw-r--r--   1 aeb         37 Aug  6 23:53 tel2
+.BI "% " "diff tel1 tel2"
+.BI "% " "rm tel1"
+.BI "% " "grep maja tel2"
+maja    0501-1136285
+.BI "% "
+.fi
+.RE
+and here typing Control-D ended the session.
+The
+.B "% "
+here was the command prompt - it is the shell's way of indicating
+that it is ready for the next command. The prompt can be customized
+in lots of ways, and one might include stuff like user name,
+machine name, current directory, time, etc.
+An assignment PS1="What next, master? "
+would change the prompt as indicated.
+.LP
+We see that there are commands
+.I date
+(that gives date and time), and
+.I cal
+(that gives a calendar).
+.LP
+The command
+.I ls
+lists the contents of the current directory - it tells you what
+files you have. With a \-l option it gives a long listing,
+that includes the owner and size and date of the file, and the
+permissions people have for reading and/or changing the file.
+For example, the file "tel" here is 37 bytes long, owned by aeb
+and the owner can read and write it, others can only read it.
+Owner and permissions can be changed by the commands
+.I chown
+and
+.IR chmod .
+.LP
+The command
+.I cat
+will show the contents of a file.
+(The name is from "concatenate and print": all files given as
+parameters are concatenated and sent to "standard output", here
+the terminal screen.)
+.LP
+The command
+.I cp
+(from "copy") will copy a file.
+On the other hand, the command
+.I mv
+(from "move") only renames it.
+.LP
+The command
+.I diff
+lists the differences between two files.
+Here there was no output because there were no differences.
+.LP
+The command
+.I rm
+(from "remove") deletes the file, and be careful! it is gone.
+No wastepaper basket or anything. Deleted means lost.
+.LP
+The command
+.I grep
+(from "g/re/p") finds occurrences of a string in one or more files.
+Here it finds Maja's telephone number.
+.SS "Path names and the current directory"
+Files live in a large tree, the file hierarchy.
+Each has a
+.I "path name"
+describing the path from the root of the tree (which is called /)
+to the file. For example, such a full path name might be /home/aeb/tel.
+Always using full path names would be inconvenient, and the name
+of a file in the current directory may be abbreviated by only giving
+the last component. That is why "/home/aeb/tel" can be abbreviated
+to "tel" when the current directory is "/home/aeb".
+.LP
+The command
+.I pwd
+prints the current directory.
+.LP
+The command
+.I cd
+changes the current directory.
+Try "cd /" and "pwd" and "cd" and "pwd".
+.SS "Directories"
+The command
+.I mkdir
+makes a new directory.
+.LP
+The command
+.I rmdir
+removes a directory if it is empty, and complains otherwise.
+.LP
+The command
+.I find
+(with a rather baroque syntax) will find files with given name
+or other properties. For example, "find . -name tel" would find
+the file "tel" starting in the present directory (which is called ".").
+And "find / -name tel" would do the same, but starting at the root
+of the tree. Large searches on a multi-GB disk will be time-consuming,
+and it may be better to use
+.BR locate (1).
+.SS "Disks and Filesystems"
+The command
+.I mount
+will attach the filesystem found on some disk (or floppy, or CDROM or so)
+to the big filesystem hierarchy. And
+.I umount
+detaches it again.
+The command
+.I df
+will tell you how much of your disk is still free.
+.SS "Processes"
+On a Unix system many user and system processes run simultaneously.
+The one you are talking to runs in the
+.IR foreground ,
+the others in the
+.IR background .
+The command
+.I ps
+will show you which processes are active and what numbers these
+processes have.
+The command
+.I kill
+allows you to get rid of them. Without option this is a friendly
+request: please go away. And "kill -9" followed by the number
+of the process is an immediate kill.
+Foreground processes can often be killed by typing Control-C.
+.SS "Getting information"
+There are thousands of commands, each with many options.
+Traditionally commands are documented on
+.IR "man pages" ,
+(like this one), so that the command "man kill" will document
+the use of the command "kill" (and "man man" document the command "man").
+The program
+.I man
+sends the text through some
+.IR pager ,
+usually
+.IR less .
+Hit the space bar to get the next page, hit q to quit.
+.LP
+In documentation it is custumary to refer to man pages
+by giving the name and section number, as in
+.BR man (1).
+Man pages are terse, and allow you to find quickly some forgotten
+detail. For newcomers an introductory text with more examples
+and explanations is useful.
+.LP
+A lot of GNU/FSF software is provided with info files. Type "info info"
+for an introduction on the use of the program "info".
+.LP
+Special topics are often treated in HOWTOs. Look in
+.I /usr/share/doc/howto/en
+and use a browser if you find HTML files there.
+.\"
+.\" Actual examples? Separate section for each of cat, cp, ...?
+.\" gzip, bzip2, tar, rpm
diff --git a/raw/man1/ipcclean.1 b/raw/man1/ipcclean.1
new file mode 100644
index 0000000..88e1828
--- /dev/null
+++ b/raw/man1/ipcclean.1
@@ -0,0 +1,35 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "IPCCLEAN" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+ipcclean \- remove shared memory and semaphores from an aborted PostgreSQL server
+
+.SH SYNOPSIS
+.sp
+\fBipcclean\fR
+.SH "DESCRIPTION"
+.PP
+\fBipcclean\fR removes all shared memory segments and
+semaphore sets owned by the current user. It is intended to be
+used for cleaning up after a crashed
+PostgreSQL server (\fBpostmaster\fR(1)). Note that immediately restarting the
+server will also clean up shared memory and semaphores, so this
+command is of little real utility.
+.PP
+Only the database administrator should execute this program as it
+can cause bizarre behavior (i.e., crashes) if run during multiuser
+execution. If this command is executed while a server is running,
+the shared memory and semaphores allocated by that server will be
+deleted, which would have rather severe consequences for that
+server.
+.SH "NOTES"
+.PP
+This script is a hack, but in the many years since it was written,
+no one has come up with an equally effective and portable solution.
+Since the \fBpostmaster\fR can now clean up by
+itself, it is unlikely that \fBipcclean\fR will be
+improved upon in the future.
+.PP
+The script makes assumption about the format of output of the
+\fBipcs\fR
+utility which may not be true across different operating systems.
+Therefore, it may not work on your particular OS.
diff --git a/raw/man1/jobs.1 b/raw/man1/jobs.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/jobs.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/kbd_mode.1 b/raw/man1/kbd_mode.1
new file mode 100644
index 0000000..ee3316a
--- /dev/null
+++ b/raw/man1/kbd_mode.1
@@ -0,0 +1,41 @@
+.\" @(#)kbd_mode.1 1.0 940406 aeb
+.TH KBD_MODE 1 "6 Apr 1994"
+.SH NAME
+kbd_mode \- report or set the keyboard mode
+.SH SYNOPSIS
+.B kbd_mode
+[
+.I -a | -u | -k | -s 
+]
+.SH DESCRIPTION
+.IX "kbd_mode command" "" "\fLkbd_mode\fR command"  
+.LP
+Without argument,
+.B kbd_mode
+prints the current keyboard mode (RAW, MEDIUMRAW or XLATE).
+With argument, it sets the keyboard mode as indicated:
+.LP
+\-s: scancode mode (RAW),
+.LP
+\-k: keycode mode (MEDIUMRAW),
+.LP
+\-a: ASCII mode (XLATE),
+.LP
+\-u: UTF-8 mode (UNICODE).
+.LP
+Of course the "\-a" is only traditional, and the code used can be any
+8-bit character set.  With "\-u" a 16-bit character set is expected,
+and these chars are transmitted to the kernel as 1, 2, or 3 bytes
+(following the UTF-8 coding).
+In these latter two modes the key mapping defined by loadkeys(1)
+is used.
+
+Warning: changing the keyboard mode, other than between ASCII and
+Unicode, will probably make your keyboard unusable.
+This command is only meant for use (say via remote login)
+when some program left your keyboard in the wrong state.
+Note that in some obsolete versions of this program the "\-u"
+option was a synonym for "\-s".
+.SH "SEE ALSO"
+.BR loadkeys (1)
+
diff --git a/raw/man1/kill.1 b/raw/man1/kill.1
new file mode 100644
index 0000000..78fd8bb
--- /dev/null
+++ b/raw/man1/kill.1
@@ -0,0 +1,87 @@
+.\" Copyright 1994 Salvatore Valente (svalente at mit.edu)
+.\" Copyright 1992 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.TH KILL 1 "14 October 1994" "Linux Utilities" "Linux Programmer's Manual"
+.SH NAME
+kill \- terminate a process
+.SH SYNOPSIS
+.BI "kill [ \-s " signal " | \-p ] [ \-a ] [ \-\- ] " "pid ..."
+.br
+.BI "kill -l [ " signal " ]"
+.SH DESCRIPTION
+The command
+.B kill
+sends the specified signal to the specified process or process group.
+If no signal is specified, the TERM signal is sent.  The TERM signal
+will kill processes which do not catch this signal.  For other processes,
+it may be necessary to use the KILL (9) signal, since this signal cannot
+be caught.
+.PP
+Most modern shells have a builtin kill function, with a usage rather similar
+to that of the command described here. The `-a' and `-p' options,
+and the possibility to specify pids by command name is a local extension.
+.SH OPTIONS
+.TP
+.IR pid ...
+Specify the list of processes that
+.B kill
+should signal.  Each
+.I pid
+can be one of five things:
+
+.RS
+.TP
+.I n
+where
+.I n
+is larger than 0.  The process with pid
+.I n
+will be signaled.
+.TP
+.B 0
+All processes in the current process group are signaled.
+.TP
+.B -1
+All processes with pid larger than 1 will be signaled.
+.TP
+.BI - n
+where 
+.I n 
+is larger than 1.
+All processes in process group
+.I n
+are signaled.  When an argument of the form `-n' is given,
+and it is meant to denote a process group,
+either the signal must be specified first, or the argument must be preceded
+by a `--' option, otherwise it will be taken as the signal to send.
+.TP
+.I commandname
+All processes invoked using that name will be signaled.
+.RE
+.TP
+.BI \-s " signal"
+Specify the signal to send.
+The signal may be given as a signal name or number.
+.TP
+.B \-l
+Print a list of signal names.  These are found in
+.I /usr/include/linux/signal.h
+.TP
+.B \-a
+Do not restrict the commandname-to-pid conversion to processes
+with the same uid as the present process.
+.TP
+.B \-p
+Specify that
+.B kill
+should only print the process id (pid)
+of the named processes, and not send any signals.
+.SH "SEE ALSO"
+.BR bash (1),
+.BR tcsh (1),
+.BR kill (2),
+.BR sigvec (2),
+.BR signal (7)
+.SH AUTHOR
+Taken from BSD 4.4.  The ability to translate process names to process
+ids was added by Salvatore Valente <svalente at mit.edu>.
diff --git a/raw/man1/killall.1 b/raw/man1/killall.1
new file mode 100644
index 0000000..b3e0671
--- /dev/null
+++ b/raw/man1/killall.1
@@ -0,0 +1,96 @@
+.TH KILLALL 1 "March 25, 2001" "Linux" "User Commands"
+.SH NAME
+killall \- kill processes by name
+.SH SYNOPSIS
+.ad l
+.B killall
+.RB [ \-d , \-\-sid ]
+.RB [ \-c , \-\-context ] 
+.RB [ \-e , --exact ]
+.RB [ \-g , \-\-process-group ]
+.RB [ \-i , \-\-interactive ]
+.RB [ \-q , \-\-quiet ]
+.RB [ \-s , \-\-signal 
+.IR signal ]
+.RB [ \-v , \-\-verbose ]
+.RB [ \-w , \-\-wait ]
+.RB [ \-V, \-\-version ]
+.RB [ \-\- ]
+.I name ...
+.br
+.B killall
+.RB \-l
+.br
+.B killall
+.RB \-V, \-\-version
+.ad b
+.SH DESCRIPTION
+.B killall
+sends a signal to all processes running any of the specified commands. If no
+signal name is specified, SIGTERM is sent.
+.PP
+Signals can be specified either by name (e.g. \fB\-HUP\fP) or by number
+(e.g. \fB\-1\fP). 
+.PP
+If the command name contains a slash (\fB/\fP), processes executing that
+particular file will be selected for killing, independent of their name.
+.PP
+\fBkillall\fP returns a zero return code if at least one process has been 
+killed for each ilisted command. \fBkillall\fP returns zero otherwise.
+.PP
+A \fBkillall\fP process never kills itself (but may kill other \fBkillall\fP
+processes).
+.SH OPTIONS
+.IP "\fB\-e\fP, \fB\-\-exact\fP"
+Require an exact match for very long names. If a command name is longer
+than 15 characters, the full name may be unavailable (i.e. it is swapped
+out). In this case, \fBkillall\fP will kill everything that matches within
+the first 15 characters. With \fB\-e\fP, such entries are skipped.
+\fBkillall\fP prints a message for each skipped entry 
+if \fB\-v\fP is specified in addition to \fB\-e\fP,
+.IP "\fB\-g\fP, \fB\-\-process-group\fP"
+Kill the process group to which the process belongs. The kill signal is only
+sent once per group, even if multiple processes belonging to the same process
+group were found.
+.IP "\fB\-i\fP, \fB\-\-interactive\fP"
+Interactively ask for confirmation before killing.
+.IP "\fB\-l\fP, \fB\-\-list\fP"
+List all known signal names.
+.IP "\fB\-q\fP, \fB\-\-quiet\fP"
+Do not complain if no processes were killed.
+.IP "\fB\-v\fP, \fB\-\-verbose\fP"
+Report if the signal was successfully sent.
+.IP "\fB\-V\fP, \fB\-\-version\fP"
+Display version information.
+.IP "\fB\-w\fP, \fB\-\-wait\fP"
+Wait for all killed processes to die. \fBkillall\fP checks once per second if
+any of the killed processes still exist and only returns if none are left.
+Note that \fBkillall\fP may wait forever if the signal was ignored, had no
+effect, or if the process stays in zombie state.
+.IP \fB\-d\fP
+(Flask only) Specify SID: kill only processes with given SID. Mutually exclusive
+with \fB-c\fP argument.  Must precede other arguments on command line.
+.IP \fB\-c\fP
+(Flask only) Specify security context: kill only processes with given security context.
+Mutually exclusive with \fB-d\fP.  Must precede other arguments on the command line.
+.SH FILES
+.nf
+/proc	location of the proc file system
+.fi
+.SH "KNOWN BUGS"
+Killing by file only works for executables that are kept open during
+execution, i.e. impure executables can't be killed this way.
+.PP
+Be warned that typing \fBkillall\fP \fIname\fP may not have the desired
+effect on non-Linux systems, especially when done by a privileged
+user.
+.PP
+\fBkillall \-w\fP doesn't detect if a process disappears and is replaced by
+a new process with the same PID between scans.
+.SH AUTHORS
+Werner Almesberger <Werner.Almesberger at epfl.ch> wrote the original version
+of psmisc.  Since version 20 Craig Small <csmall at small.dropbear.id.au> 
+can be blamed.
+.SH "SEE ALSO"
+.BR kill (1), fuser (1), pgrep (1), pidof (1), ps (1), kill (2)
+.\"{{{}}}
diff --git a/raw/man1/last.1 b/raw/man1/last.1
new file mode 100644
index 0000000..a403107
--- /dev/null
+++ b/raw/man1/last.1
@@ -0,0 +1,102 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH LAST,LASTB 1 "Jul 29, 1999" "" "Linux System Administrator's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+last, lastb \- show listing of last logged in users
+.\"}}}
+.\"{{{  Synopsis
+.SH SYNOPSIS
+.B last
+.RB [ \-R ]
+.RB [ \-\fInum\fP ]
+.RB "[ \-\fBn\fP \fInum\fP ]"
+.RB [ \-adiox ]
+.RB "[ \-\fBf\fP \fIfile\fP ]"
+.RB "[ \-\fBt\fP \fIYYYYMMDDHHMMSS\fP ]"
+.RI [ name... ]
+.RI [ tty... ]
+.br
+.B lastb
+.RB [ \-R ]
+.RB [ \-\fInum\fP ]
+.RB "[ \-\fBn\fP \fInum\fP ]"
+.RB "[ \-\fBf\fP \fIfile\fP ]"
+.RB "[ \-\fBt\fP \fIYYYYMMDDHHMMSS\fP ]"
+.RB [ \-adiox ]
+.RI [ name... ]
+.RI [ tty... ]
+.\"}}}
+.\"{{{  Description
+.SH DESCRIPTION
+.B Last
+searches back through the file \fB/var/log/wtmp\fP (or the file
+designated by the \fB\-f\fP flag) and displays a list of all
+users logged in (and out) since that file was created.  Names of users
+and tty's can be given, in which case \fBlast\fP will show only those entries
+matching the arguments.  Names of ttys can be abbreviated, thus \fBlast
+0\fP is the same as \fBlast tty0\fP.  
+.PP
+When \fBlast\fP catches a \s-2SIGINT\s0 signal (generated by the interrupt key,
+usually control-C) or a \s-2SIGQUIT\s0 signal (generated by the quit key, 
+usually control-\e), \fBlast\fP will show how far it has searched through the 
+file; in the case of the \s-2SIGINT\s0 signal \fBlast\fP will then terminate.
+.PP
+The pseudo user \fBreboot\fP logs in each time the system is rebooted.
+Thus \fBlast reboot\fP will show a log of all reboots since the log file
+was created.
+.PP
+\fBLastb\fP is the same as \fBlast\fP, except that by default it shows a log
+of the file \fB/var/log/btmp\fP, which contains all the bad login attempts.
+.\"}}}
+.\"{{{  Options
+.SH OPTIONS
+.IP \fB\-\fP\fInum\fP
+This is a count telling \fBlast\fP how many lines to show.
+.IP "\fB\-n\fP \fInum\fP"
+The same.
+.IP "\fB\-t\fP \fIYYYYMMDDHHMMSS\fP"
+Display the state of logins as of the specified time.  This is
+useful, e.g., to determine easily who was logged in at a particular
+time -- specify that time with \fB\-t\fP and look for "still logged
+in".
+.IP \fB\-R\fP
+Suppresses the display of the hostname field.
+.IP \fB\-a\fP
+Display the hostname in the last column. Useful in combination
+with the next flag.
+.IP \fB\-d\fP
+For non-local logins, Linux stores not only the host name of the remote
+host but its IP number as well. This option translates the IP number
+back into a hostname.
+.IP \fB\-i\fP
+This option is like \fB-d\fP in that it displays the IP number of the remote
+host, but it displays the IP number in numbers-and-dots notation.
+.IP \fB\-o\fP
+Read an old-type wtmp file (written by linux-libc5 applications).
+.IP \fB\-x\fP
+Display the system shutdown entries and run level changes.
+.\"}}}
+.SH NOTES
+The files \fIwtmp\fP and \fIbtmp\fP might not be found. The system only
+logs information in these files if they are present. This is a local
+configuration issue. If you want the files to be used, they can be
+created with a simple \fBtouch\fP(1) command (for example, 
+\fItouch /var/log/wtmp\fP).
+.\"{{{  Files
+.SH FILES
+/var/log/wtmp
+.br
+/var/log/btmp
+.\"}}}
+.\"{{{  Author
+.SH AUTHOR
+Miquel van Smoorenburg, miquels at cistron.nl
+.\"}}}
+.\"{{{  See also
+.SH "SEE ALSO"
+.BR shutdown (8),
+.BR login (1),
+.BR init (8)
+.\"}}}
diff --git a/raw/man1/ld.1 b/raw/man1/ld.1
new file mode 100644
index 0000000..909fd6e
--- /dev/null
+++ b/raw/man1/ld.1
@@ -0,0 +1,1912 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LD 1"
+.TH LD 1 "2003-09-30" "binutils-2.14.90.0.6" "GNU Development Tools"
+.SH "NAME"
+ld \- Using LD, the GNU linker
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ld [\fBoptions\fR] \fIobjfile\fR ...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBld\fR combines a number of object and archive files, relocates
+their data and ties up symbol references. Usually the last step in
+compiling a program is to run \fBld\fR.
+.PP
+\&\fBld\fR accepts Linker Command Language files written in
+a superset of \s-1AT&T\s0's Link Editor Command Language syntax,
+to provide explicit and total control over the linking process.
+.PP
+This man page does not describe the command language; see the 
+\&\fBld\fR entry in \f(CW\*(C`info\*(C'\fR, or the manual
+ld: the \s-1GNU\s0 linker, for full details on the command language and 
+on other aspects of the \s-1GNU\s0 linker. 
+.PP
+This version of \fBld\fR uses the general purpose \s-1BFD\s0 libraries
+to operate on object files. This allows \fBld\fR to read, combine, and
+write object files in many different formats\-\-\-for example, \s-1COFF\s0 or
+\&\f(CW\*(C`a.out\*(C'\fR.  Different formats may be linked together to produce any
+available kind of object file.  
+.PP
+Aside from its flexibility, the \s-1GNU\s0 linker is more helpful than other
+linkers in providing diagnostic information.  Many linkers abandon
+execution immediately upon encountering an error; whenever possible,
+\&\fBld\fR continues executing, allowing you to identify other errors
+(or, in some cases, to get an output file in spite of the error).
+.PP
+The \s-1GNU\s0 linker \fBld\fR is meant to cover a broad range of situations,
+and to be as compatible as possible with other linkers.  As a result,
+you have many choices to control its behavior.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The linker supports a plethora of command-line options, but in actual
+practice few of them are used in any particular context.
+For instance, a frequent use of \fBld\fR is to link standard Unix
+object files on a standard, supported Unix system.  On such a system, to
+link a file \f(CW\*(C`hello.o\*(C'\fR:
+.PP
+.Vb 1
+\&        ld -o <output> /lib/crt0.o hello.o -lc
+.Ve
+.PP
+This tells \fBld\fR to produce a file called \fIoutput\fR as the
+result of linking the file \f(CW\*(C`/lib/crt0.o\*(C'\fR with \f(CW\*(C`hello.o\*(C'\fR and
+the library \f(CW\*(C`libc.a\*(C'\fR, which will come from the standard search
+directories.  (See the discussion of the \fB\-l\fR option below.)
+.PP
+Some of the command-line options to \fBld\fR may be specified at any
+point in the command line.  However, options which refer to files, such
+as \fB\-l\fR or \fB\-T\fR, cause the file to be read at the point at
+which the option appears in the command line, relative to the object
+files and other file options.  Repeating non-file options with a
+different argument will either have no further effect, or override prior
+occurrences (those further to the left on the command line) of that
+option.  Options which may be meaningfully specified more than once are
+noted in the descriptions below.
+.PP
+Non-option arguments are object files or archives which are to be linked
+together.  They may follow, precede, or be mixed in with command-line
+options, except that an object file argument may not be placed between
+an option and its argument.
+.PP
+Usually the linker is invoked with at least one object file, but you can
+specify other forms of binary input files using \fB\-l\fR, \fB\-R\fR,
+and the script command language.  If \fIno\fR binary input files at all
+are specified, the linker does not produce any output, and issues the
+message \fBNo input files\fR.
+.PP
+If the linker cannot recognize the format of an object file, it will
+assume that it is a linker script.  A script specified in this way
+augments the main linker script used for the link (either the default
+linker script or the one specified by using \fB\-T\fR).  This feature
+permits the linker to link against a file which appears to be an object
+or an archive, but actually merely defines some symbol values, or uses
+\&\f(CW\*(C`INPUT\*(C'\fR or \f(CW\*(C`GROUP\*(C'\fR to load other objects.  Note that
+specifying a script in this way merely augments the main linker script;
+use the \fB\-T\fR option to replace the default linker script entirely.
+.PP
+For options whose names are a single letter,
+option arguments must either follow the option letter without intervening
+whitespace, or be given as separate arguments immediately following the
+option that requires them.
+.PP
+For options whose names are multiple letters, either one dash or two can
+precede the option name; for example, \fB\-trace\-symbol\fR and
+\&\fB\-\-trace\-symbol\fR are equivalent.  Note\-\-\-there is one exception to
+this rule.  Multiple letter options that start with a lower case 'o' can
+only be preceeded by two dashes.  This is to reduce confusion with the
+\&\fB\-o\fR option.  So for example \fB\-omagic\fR sets the output file
+name to \fBmagic\fR whereas \fB\-\-omagic\fR sets the \s-1NMAGIC\s0 flag on the
+output.
+.PP
+Arguments to multiple-letter options must either be separated from the
+option name by an equals sign, or be given as separate arguments
+immediately following the option that requires them.  For example,
+\&\fB\-\-trace\-symbol foo\fR and \fB\-\-trace\-symbol=foo\fR are equivalent.
+Unique abbreviations of the names of multiple-letter options are
+accepted.
+.PP
+Note\-\-\-if the linker is being invoked indirectly, via a compiler driver
+(e.g. \fBgcc\fR) then all the linker command line options should be
+prefixed by \fB\-Wl,\fR (or whatever is appropriate for the particular
+compiler driver) like this:
+.PP
+.Vb 1
+\&          gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
+.Ve
+.PP
+This is important, because otherwise the compiler driver program may
+silently drop the linker options, resulting in a bad link.
+.PP
+Here is a table of the generic command line switches accepted by the \s-1GNU\s0
+linker:
+.IP "\fB\-a\fR\fIkeyword\fR" 4
+.IX Item "-akeyword"
+This option is supported for \s-1HP/UX\s0 compatibility.  The \fIkeyword\fR
+argument must be one of the strings \fBarchive\fR, \fBshared\fR, or
+\&\fBdefault\fR.  \fB\-aarchive\fR is functionally equivalent to
+\&\fB\-Bstatic\fR, and the other two keywords are functionally equivalent
+to \fB\-Bdynamic\fR.  This option may be used any number of times.
+.IP "\fB\-A\fR\fIarchitecture\fR" 4
+.IX Item "-Aarchitecture"
+.PD 0
+.IP "\fB\-\-architecture=\fR\fIarchitecture\fR" 4
+.IX Item "--architecture=architecture"
+.PD
+In the current release of \fBld\fR, this option is useful only for the
+Intel 960 family of architectures.  In that \fBld\fR configuration, the
+\&\fIarchitecture\fR argument identifies the particular architecture in
+the 960 family, enabling some safeguards and modifying the
+archive-library search path.  
+.Sp
+Future releases of \fBld\fR may support similar functionality for
+other architecture families.
+.IP "\fB\-b\fR \fIinput-format\fR" 4
+.IX Item "-b input-format"
+.PD 0
+.IP "\fB\-\-format=\fR\fIinput-format\fR" 4
+.IX Item "--format=input-format"
+.PD
+\&\fBld\fR may be configured to support more than one kind of object
+file.  If your \fBld\fR is configured this way, you can use the
+\&\fB\-b\fR option to specify the binary format for input object files
+that follow this option on the command line.  Even when \fBld\fR is
+configured to support alternative object formats, you don't usually need
+to specify this, as \fBld\fR should be configured to expect as a
+default input format the most usual format on each machine.
+\&\fIinput-format\fR is a text string, the name of a particular format
+supported by the \s-1BFD\s0 libraries.  (You can list the available binary
+formats with \fBobjdump \-i\fR.)
+.Sp
+You may want to use this option if you are linking files with an unusual
+binary format.  You can also use \fB\-b\fR to switch formats explicitly (when
+linking object files of different formats), by including
+\&\fB\-b\fR \fIinput-format\fR before each group of object files in a
+particular format.
+.Sp
+The default format is taken from the environment variable
+\&\f(CW\*(C`GNUTARGET\*(C'\fR.
+.Sp
+You can also define the input format from a script, using the command
+\&\f(CW\*(C`TARGET\*(C'\fR;
+.IP "\fB\-c\fR \fIMRI-commandfile\fR" 4
+.IX Item "-c MRI-commandfile"
+.PD 0
+.IP "\fB\-\-mri\-script=\fR\fIMRI-commandfile\fR" 4
+.IX Item "--mri-script=MRI-commandfile"
+.PD
+For compatibility with linkers produced by \s-1MRI\s0, \fBld\fR accepts script
+files written in an alternate, restricted command language, described in
+the \s-1MRI\s0 Compatible Script Files section of \s-1GNU\s0 ld documentation.
+Introduce \s-1MRI\s0 script files with
+the option \fB\-c\fR; use the \fB\-T\fR option to run linker
+scripts written in the general-purpose \fBld\fR scripting language.
+If \fIMRI-cmdfile\fR does not exist, \fBld\fR looks for it in the directories
+specified by any \fB\-L\fR options.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-dc\fR" 4
+.IX Item "-dc"
+.IP "\fB\-dp\fR" 4
+.IX Item "-dp"
+.PD
+These three options are equivalent; multiple forms are supported for
+compatibility with other linkers.  They assign space to common symbols
+even if a relocatable output file is specified (with \fB\-r\fR).  The
+script command \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR has the same effect.
+.IP "\fB\-e\fR \fIentry\fR" 4
+.IX Item "-e entry"
+.PD 0
+.IP "\fB\-\-entry=\fR\fIentry\fR" 4
+.IX Item "--entry=entry"
+.PD
+Use \fIentry\fR as the explicit symbol for beginning execution of your
+program, rather than the default entry point.  If there is no symbol
+named \fIentry\fR, the linker will try to parse \fIentry\fR as a number,
+and use that as the entry address (the number will be interpreted in
+base 10; you may use a leading \fB0x\fR for base 16, or a leading
+\&\fB0\fR for base 8).  
+.IP "\fB\-E\fR" 4
+.IX Item "-E"
+.PD 0
+.IP "\fB\-\-export\-dynamic\fR" 4
+.IX Item "--export-dynamic"
+.PD
+When creating a dynamically linked executable, add all symbols to the
+dynamic symbol table.  The dynamic symbol table is the set of symbols
+which are visible from dynamic objects at run time.
+.Sp
+If you do not use this option, the dynamic symbol table will normally
+contain only those symbols which are referenced by some dynamic object
+mentioned in the link.
+.Sp
+If you use \f(CW\*(C`dlopen\*(C'\fR to load a dynamic object which needs to refer
+back to the symbols defined by the program, rather than some other
+dynamic object, then you will probably need to use this option when
+linking the program itself.
+.Sp
+You can also use the version script to control what symbols should
+be added to the dynamic symbol table if the output format supports it.
+See the description of \fB\-\-version\-script\fR in \f(CW at ref\fR{\s-1VERSION\s0}.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+Link big-endian objects.  This affects the default output format.
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+Link little-endian objects.  This affects the default output format.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+.PD 0
+.IP "\fB\-\-auxiliary\fR \fIname\fR" 4
+.IX Item "--auxiliary name"
+.PD
+When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_AUXILIARY\s0 field
+to the specified name.  This tells the dynamic linker that the symbol
+table of the shared object should be used as an auxiliary filter on the
+symbol table of the shared object \fIname\fR.
+.Sp
+If you later link a program against this filter object, then, when you
+run the program, the dynamic linker will see the \s-1DT_AUXILIARY\s0 field.  If
+the dynamic linker resolves any symbols from the filter object, it will
+first check whether there is a definition in the shared object
+\&\fIname\fR.  If there is one, it will be used instead of the definition
+in the filter object.  The shared object \fIname\fR need not exist.
+Thus the shared object \fIname\fR may be used to provide an alternative
+implementation of certain functions, perhaps for debugging or for
+machine specific performance.
+.Sp
+This option may be specified more than once.  The \s-1DT_AUXILIARY\s0 entries
+will be created in the order in which they appear on the command line.
+.IP "\fB\-F\fR \fIname\fR" 4
+.IX Item "-F name"
+.PD 0
+.IP "\fB\-\-filter\fR \fIname\fR" 4
+.IX Item "--filter name"
+.PD
+When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_FILTER\s0 field to
+the specified name.  This tells the dynamic linker that the symbol table
+of the shared object which is being created should be used as a filter
+on the symbol table of the shared object \fIname\fR.
+.Sp
+If you later link a program against this filter object, then, when you
+run the program, the dynamic linker will see the \s-1DT_FILTER\s0 field.  The
+dynamic linker will resolve symbols according to the symbol table of the
+filter object as usual, but it will actually link to the definitions
+found in the shared object \fIname\fR.  Thus the filter object can be
+used to select a subset of the symbols provided by the object
+\&\fIname\fR.
+.Sp
+Some older linkers used the \fB\-F\fR option throughout a compilation
+toolchain for specifying object-file format for both input and output
+object files.
+The \s-1GNU\s0 linker uses other mechanisms for this purpose: the
+\&\fB\-b\fR, \fB\-\-format\fR, \fB\-\-oformat\fR options, the 
+\&\f(CW\*(C`TARGET\*(C'\fR command in linker scripts, and the \f(CW\*(C`GNUTARGET\*(C'\fR
+environment variable.
+The \s-1GNU\s0 linker will ignore the \fB\-F\fR option when not
+creating an \s-1ELF\s0 shared object.
+.IP "\fB\-fini\fR \fIname\fR" 4
+.IX Item "-fini name"
+When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
+executable or shared object is unloaded, by setting \s-1DT_FINI\s0 to the
+address of the function.  By default, the linker uses \f(CW\*(C`_fini\*(C'\fR as
+the function to call.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+Ignored.  Provided for compatibility with other tools.
+.IP "\fB\-G\fR\fIvalue\fR" 4
+.IX Item "-Gvalue"
+.PD 0
+.IP "\fB\-\-gpsize=\fR\fIvalue\fR" 4
+.IX Item "--gpsize=value"
+.PD
+Set the maximum size of objects to be optimized using the \s-1GP\s0 register to
+\&\fIsize\fR.  This is only meaningful for object file formats such as
+\&\s-1MIPS\s0 \s-1ECOFF\s0 which supports putting large and small objects into different
+sections.  This is ignored for other object file formats.
+.IP "\fB\-h\fR\fIname\fR" 4
+.IX Item "-hname"
+.PD 0
+.IP "\fB\-soname=\fR\fIname\fR" 4
+.IX Item "-soname=name"
+.PD
+When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_SONAME\s0 field to
+the specified name.  When an executable is linked with a shared object
+which has a \s-1DT_SONAME\s0 field, then when the executable is run the dynamic
+linker will attempt to load the shared object specified by the \s-1DT_SONAME\s0
+field rather than the using the file name given to the linker.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+Perform an incremental link (same as option \fB\-r\fR).
+.IP "\fB\-init\fR \fIname\fR" 4
+.IX Item "-init name"
+When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
+executable or shared object is loaded, by setting \s-1DT_INIT\s0 to the address
+of the function.  By default, the linker uses \f(CW\*(C`_init\*(C'\fR as the
+function to call.
+.IP "\fB\-l\fR\fIarchive\fR" 4
+.IX Item "-larchive"
+.PD 0
+.IP "\fB\-\-library=\fR\fIarchive\fR" 4
+.IX Item "--library=archive"
+.PD
+Add archive file \fIarchive\fR to the list of files to link.  This
+option may be used any number of times.  \fBld\fR will search its
+path-list for occurrences of \f(CW\*(C`lib\f(CIarchive\f(CW.a\*(C'\fR for every
+\&\fIarchive\fR specified.
+.Sp
+On systems which support shared libraries, \fBld\fR may also search for
+libraries with extensions other than \f(CW\*(C`.a\*(C'\fR.  Specifically, on \s-1ELF\s0
+and SunOS systems, \fBld\fR will search a directory for a library with
+an extension of \f(CW\*(C`.so\*(C'\fR before searching for one with an extension of
+\&\f(CW\*(C`.a\*(C'\fR.  By convention, a \f(CW\*(C`.so\*(C'\fR extension indicates a shared
+library.
+.Sp
+The linker will search an archive only once, at the location where it is
+specified on the command line.  If the archive defines a symbol which
+was undefined in some object which appeared before the archive on the
+command line, the linker will include the appropriate file(s) from the
+archive.  However, an undefined symbol in an object appearing later on
+the command line will not cause the linker to search the archive again.
+.Sp
+See the \fB\-(\fR option for a way to force the linker to search
+archives multiple times.
+.Sp
+You may list the same archive multiple times on the command line.
+.Sp
+This type of archive searching is standard for Unix linkers.  However,
+if you are using \fBld\fR on \s-1AIX\s0, note that it is different from the
+behaviour of the \s-1AIX\s0 linker.
+.IP "\fB\-L\fR\fIsearchdir\fR" 4
+.IX Item "-Lsearchdir"
+.PD 0
+.IP "\fB\-\-library\-path=\fR\fIsearchdir\fR" 4
+.IX Item "--library-path=searchdir"
+.PD
+Add path \fIsearchdir\fR to the list of paths that \fBld\fR will search
+for archive libraries and \fBld\fR control scripts.  You may use this
+option any number of times.  The directories are searched in the order
+in which they are specified on the command line.  Directories specified
+on the command line are searched before the default directories.  All
+\&\fB\-L\fR options apply to all \fB\-l\fR options, regardless of the
+order in which the options appear.
+.Sp
+If \fIsearchdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced
+by the \fIsysroot prefix\fR, a path specified when the linker is configured.
+.Sp
+The default set of paths searched (without being specified with
+\&\fB\-L\fR) depends on which emulation mode \fBld\fR is using, and in
+some cases also on how it was configured.  
+.Sp
+The paths can also be specified in a link script with the
+\&\f(CW\*(C`SEARCH_DIR\*(C'\fR command.  Directories specified this way are searched
+at the point in which the linker script appears in the command line.
+.IP "\fB\-m\fR\fIemulation\fR" 4
+.IX Item "-memulation"
+Emulate the \fIemulation\fR linker.  You can list the available
+emulations with the \fB\-\-verbose\fR or \fB\-V\fR options.
+.Sp
+If the \fB\-m\fR option is not used, the emulation is taken from the
+\&\f(CW\*(C`LDEMULATION\*(C'\fR environment variable, if that is defined.
+.Sp
+Otherwise, the default emulation depends upon how the linker was
+configured.
+.IP "\fB\-M\fR" 4
+.IX Item "-M"
+.PD 0
+.IP "\fB\-\-print\-map\fR" 4
+.IX Item "--print-map"
+.PD
+Print a link map to the standard output.  A link map provides
+information about the link, including the following:
+.RS 4
+.IP "*" 4
+Where object files and symbols are mapped into memory.
+.IP "*" 4
+How common symbols are allocated.
+.IP "*" 4
+All archive members included in the link, with a mention of the symbol
+which caused the archive member to be brought in.
+.RE
+.RS 4
+.RE
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-nmagic\fR" 4
+.IX Item "--nmagic"
+.PD
+Turn off page alignment of sections, and mark the output as
+\&\f(CW\*(C`NMAGIC\*(C'\fR if possible.
+.IP "\fB\-N\fR" 4
+.IX Item "-N"
+.PD 0
+.IP "\fB\-\-omagic\fR" 4
+.IX Item "--omagic"
+.PD
+Set the text and data sections to be readable and writable.  Also, do
+not page-align the data segment, and disable linking against shared
+libraries.  If the output format supports Unix style magic numbers,
+mark the output as \f(CW\*(C`OMAGIC\*(C'\fR.
+.IP "\fB\-\-no\-omagic\fR" 4
+.IX Item "--no-omagic"
+This option negates most of the effects of the \fB\-N\fR option.  It
+sets the text section to be read\-only, and forces the data segment to
+be page\-aligned.  Note \- this option does not enable linking against
+shared libraries.  Use \fB\-Bdynamic\fR for this.
+.IP "\fB\-o\fR \fIoutput\fR" 4
+.IX Item "-o output"
+.PD 0
+.IP "\fB\-\-output=\fR\fIoutput\fR" 4
+.IX Item "--output=output"
+.PD
+Use \fIoutput\fR as the name for the program produced by \fBld\fR; if this
+option is not specified, the name \fIa.out\fR is used by default.  The
+script command \f(CW\*(C`OUTPUT\*(C'\fR can also specify the output file name.
+.IP "\fB\-O\fR \fIlevel\fR" 4
+.IX Item "-O level"
+If \fIlevel\fR is a numeric values greater than zero \fBld\fR optimizes
+the output.  This might take significantly longer and therefore probably
+should only be enabled for the final binary.
+.IP "\fB\-q\fR" 4
+.IX Item "-q"
+.PD 0
+.IP "\fB\-\-emit\-relocs\fR" 4
+.IX Item "--emit-relocs"
+.PD
+Leave relocation sections and contents in fully linked exececutables.
+Post link analysis and optimization tools may need this information in
+order to perform correct modifications of executables.  This results
+in larger executables.
+.Sp
+This option is currently only supported on \s-1ELF\s0 platforms.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.IP "\fB\-\-relocatable\fR" 4
+.IX Item "--relocatable"
+.PD
+Generate relocatable output\-\-\-i.e., generate an output file that can in
+turn serve as input to \fBld\fR.  This is often called \fIpartial
+linking\fR.  As a side effect, in environments that support standard Unix
+magic numbers, this option also sets the output file's magic number to
+\&\f(CW\*(C`OMAGIC\*(C'\fR.
+If this option is not specified, an absolute file is produced.  When
+linking \*(C+ programs, this option \fIwill not\fR resolve references to
+constructors; to do that, use \fB\-Ur\fR.
+.Sp
+When an input file does not have the same format as the output file,
+partial linking is only supported if that input file does not contain any
+relocations.  Different output formats can have further restrictions; for
+example some \f(CW\*(C`a.out\*(C'\fR\-based formats do not support partial linking
+with input files in other formats at all.
+.Sp
+This option does the same thing as \fB\-i\fR.
+.IP "\fB\-R\fR \fIfilename\fR" 4
+.IX Item "-R filename"
+.PD 0
+.IP "\fB\-\-just\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--just-symbols=filename"
+.PD
+Read symbol names and their addresses from \fIfilename\fR, but do not
+relocate it or include it in the output.  This allows your output file
+to refer symbolically to absolute locations of memory defined in other
+programs.  You may use this option more than once.
+.Sp
+For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is
+followed by a directory name, rather than a file name, it is treated as
+the \fB\-rpath\fR option.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-strip\-all\fR" 4
+.IX Item "--strip-all"
+.PD
+Omit all symbol information from the output file.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-strip\-debug\fR" 4
+.IX Item "--strip-debug"
+.PD
+Omit debugger symbol information (but not all symbols) from the output file.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-trace\fR" 4
+.IX Item "--trace"
+.PD
+Print the names of the input files as \fBld\fR processes them.
+.IP "\fB\-T\fR \fIscriptfile\fR" 4
+.IX Item "-T scriptfile"
+.PD 0
+.IP "\fB\-\-script=\fR\fIscriptfile\fR" 4
+.IX Item "--script=scriptfile"
+.PD
+Use \fIscriptfile\fR as the linker script.  This script replaces
+\&\fBld\fR's default linker script (rather than adding to it), so
+\&\fIcommandfile\fR must specify everything necessary to describe the
+output file.    If \fIscriptfile\fR does not exist in
+the current directory, \f(CW\*(C`ld\*(C'\fR looks for it in the directories
+specified by any preceding \fB\-L\fR options.  Multiple \fB\-T\fR
+options accumulate.
+.IP "\fB\-u\fR \fIsymbol\fR" 4
+.IX Item "-u symbol"
+.PD 0
+.IP "\fB\-\-undefined=\fR\fIsymbol\fR" 4
+.IX Item "--undefined=symbol"
+.PD
+Force \fIsymbol\fR to be entered in the output file as an undefined
+symbol.  Doing this may, for example, trigger linking of additional
+modules from standard libraries.  \fB\-u\fR may be repeated with
+different option arguments to enter additional undefined symbols.  This
+option is equivalent to the \f(CW\*(C`EXTERN\*(C'\fR linker script command.
+.IP "\fB\-Ur\fR" 4
+.IX Item "-Ur"
+For anything other than \*(C+ programs, this option is equivalent to
+\&\fB\-r\fR: it generates relocatable output\-\-\-i.e., an output file that can in
+turn serve as input to \fBld\fR.  When linking \*(C+ programs, \fB\-Ur\fR
+\&\fIdoes\fR resolve references to constructors, unlike \fB\-r\fR.
+It does not work to use \fB\-Ur\fR on files that were themselves linked
+with \fB\-Ur\fR; once the constructor table has been built, it cannot
+be added to.  Use \fB\-Ur\fR only for the last partial link, and
+\&\fB\-r\fR for the others.
+.IP "\fB\-\-unique[=\fR\fI\s-1SECTION\s0\fR\fB]\fR" 4
+.IX Item "--unique[=SECTION]"
+Creates a separate output section for every input section matching
+\&\fI\s-1SECTION\s0\fR, or if the optional wildcard \fI\s-1SECTION\s0\fR argument is
+missing, for every orphan input section.  An orphan section is one not
+specifically mentioned in a linker script.  You may use this option
+multiple times on the command line;  It prevents the normal merging of
+input sections with the same name, overriding output section assignments
+in a linker script.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD
+Display the version number for \fBld\fR.  The \fB\-V\fR option also
+lists the supported emulations.
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.IP "\fB\-\-discard\-all\fR" 4
+.IX Item "--discard-all"
+.PD
+Delete all local symbols.
+.IP "\fB\-X\fR" 4
+.IX Item "-X"
+.PD 0
+.IP "\fB\-\-discard\-locals\fR" 4
+.IX Item "--discard-locals"
+.PD
+Delete all temporary local symbols.  For most targets, this is all local
+symbols whose names begin with \fBL\fR.
+.IP "\fB\-y\fR \fIsymbol\fR" 4
+.IX Item "-y symbol"
+.PD 0
+.IP "\fB\-\-trace\-symbol=\fR\fIsymbol\fR" 4
+.IX Item "--trace-symbol=symbol"
+.PD
+Print the name of each linked file in which \fIsymbol\fR appears.  This
+option may be given any number of times.  On many systems it is necessary
+to prepend an underscore.
+.Sp
+This option is useful when you have an undefined symbol in your link but
+don't know where the reference is coming from.
+.IP "\fB\-Y\fR \fIpath\fR" 4
+.IX Item "-Y path"
+Add \fIpath\fR to the default library search path.  This option exists
+for Solaris compatibility.
+.IP "\fB\-z\fR \fIkeyword\fR" 4
+.IX Item "-z keyword"
+The recognized keywords are:
+.RS 4
+.IP "\fBcombreloc\fR" 4
+.IX Item "combreloc"
+Combines multiple reloc sections and sorts them to make dynamic symbol
+lookup caching possible.
+.IP "\fBdefs\fR" 4
+.IX Item "defs"
+Disallows undefined symbols in object files.  Undefined symbols in
+shared libaries are still allowed.
+.IP "\fBinitfirst\fR" 4
+.IX Item "initfirst"
+This option is only meaningful when building a shared object.
+It marks the object so that its runtime initialization will occur
+before the runtime initialization of any other objects brought into
+the process at the same time.  Similarly the runtime finalization of
+the object will occur after the runtime finalization of any other
+objects.
+.IP "\fBinterpose\fR" 4
+.IX Item "interpose"
+Marks the object that its symbol table interposes before all symbols
+but the primary executable.
+.IP "\fBloadfltr\fR" 4
+.IX Item "loadfltr"
+Marks  the object that its filters be processed immediately at
+runtime.
+.IP "\fBmuldefs\fR" 4
+.IX Item "muldefs"
+Allows multiple definitions.
+.IP "\fBnocombreloc\fR" 4
+.IX Item "nocombreloc"
+Disables multiple reloc sections combining.
+.IP "\fBnocopyreloc\fR" 4
+.IX Item "nocopyreloc"
+Disables production of copy relocs.
+.IP "\fBnodefaultlib\fR" 4
+.IX Item "nodefaultlib"
+Marks the object that the search for dependencies of this object will
+ignore any default library search paths.
+.IP "\fBnodelete\fR" 4
+.IX Item "nodelete"
+Marks the object shouldn't be unloaded at runtime.
+.IP "\fBnodlopen\fR" 4
+.IX Item "nodlopen"
+Marks the object not available to \f(CW\*(C`dlopen\*(C'\fR.
+.IP "\fBnodump\fR" 4
+.IX Item "nodump"
+Marks the object can not be dumped by \f(CW\*(C`dldump\*(C'\fR.
+.IP "\fBnow\fR" 4
+.IX Item "now"
+When generating an executable or shared library, mark it to tell the
+dynamic linker to resolve all symbols when the program is started, or
+when the shared library is linked to using dlopen, instead of
+deferring function call resolution to the point when the function is
+first called.
+.IP "\fBorigin\fR" 4
+.IX Item "origin"
+Marks the object may contain \f(CW$ORIGIN\fR.
+.RE
+.RS 4
+.Sp
+Other keywords are ignored for Solaris compatibility.  
+.RE
+.IP "\fB\-(\fR \fIarchives\fR \fB\-)\fR" 4
+.IX Item "-( archives -)"
+.PD 0
+.IP "\fB\-\-start\-group\fR \fIarchives\fR \fB\-\-end\-group\fR" 4
+.IX Item "--start-group archives --end-group"
+.PD
+The \fIarchives\fR should be a list of archive files.  They may be
+either explicit file names, or \fB\-l\fR options.
+.Sp
+The specified archives are searched repeatedly until no new undefined
+references are created.  Normally, an archive is searched only once in
+the order that it is specified on the command line.  If a symbol in that
+archive is needed to resolve an undefined symbol referred to by an
+object in an archive that appears later on the command line, the linker
+would not be able to resolve that reference.  By grouping the archives,
+they all be searched repeatedly until all possible references are
+resolved.
+.Sp
+Using this option has a significant performance cost.  It is best to use
+it only when there are unavoidable circular references between two or
+more archives.
+.IP "\fB\-\-accept\-unknown\-input\-arch\fR" 4
+.IX Item "--accept-unknown-input-arch"
+.PD 0
+.IP "\fB\-\-no\-accept\-unknown\-input\-arch\fR" 4
+.IX Item "--no-accept-unknown-input-arch"
+.PD
+Tells the linker to accept input files whose architecture cannot be
+recognised.  The assumption is that the user knows what they are doing
+and deliberately wants to link in these unknown input files.  This was
+the default behaviour of the linker, before release 2.14.  The default
+behaviour from release 2.14 onwards is to reject such input files, and
+so the \fB\-\-accept\-unknown\-input\-arch\fR option has been added to
+restore the old behaviour.
+.IP "\fB\-assert\fR \fIkeyword\fR" 4
+.IX Item "-assert keyword"
+This option is ignored for SunOS compatibility.
+.IP "\fB\-Bdynamic\fR" 4
+.IX Item "-Bdynamic"
+.PD 0
+.IP "\fB\-dy\fR" 4
+.IX Item "-dy"
+.IP "\fB\-call_shared\fR" 4
+.IX Item "-call_shared"
+.PD
+Link against dynamic libraries.  This is only meaningful on platforms
+for which shared libraries are supported.  This option is normally the
+default on such platforms.  The different variants of this option are
+for compatibility with various systems.  You may use this option
+multiple times on the command line: it affects library searching for
+\&\fB\-l\fR options which follow it.  This
+option also implies \fB\-\-unresolved\-symbols=ignore\-all\fR.
+.IP "\fB\-Bgroup\fR" 4
+.IX Item "-Bgroup"
+Set the \f(CW\*(C`DF_1_GROUP\*(C'\fR flag in the \f(CW\*(C`DT_FLAGS_1\*(C'\fR entry in the dynamic
+section.  This causes the runtime linker to handle lookups in this
+object and its dependencies to be performed only inside the group.
+\&\fB\-\-unresolved\-symbols=report\-all\fR is implied.  This option is
+only meaningful on \s-1ELF\s0 platforms which support shared libraries.
+.IP "\fB\-Bstatic\fR" 4
+.IX Item "-Bstatic"
+.PD 0
+.IP "\fB\-dn\fR" 4
+.IX Item "-dn"
+.IP "\fB\-non_shared\fR" 4
+.IX Item "-non_shared"
+.IP "\fB\-static\fR" 4
+.IX Item "-static"
+.PD
+Do not link against shared libraries.  This is only meaningful on
+platforms for which shared libraries are supported.  The different
+variants of this option are for compatibility with various systems.  You
+may use this option multiple times on the command line: it affects
+library searching for \fB\-l\fR options which follow it.  This
+option also implies \fB\-\-unresolved\-symbols=report\-all\fR.
+.IP "\fB\-Bsymbolic\fR" 4
+.IX Item "-Bsymbolic"
+When creating a shared library, bind references to global symbols to the
+definition within the shared library, if any.  Normally, it is possible
+for a program linked against a shared library to override the definition
+within the shared library.  This option is only meaningful on \s-1ELF\s0
+platforms which support shared libraries.
+.IP "\fB\-\-check\-sections\fR" 4
+.IX Item "--check-sections"
+.PD 0
+.IP "\fB\-\-no\-check\-sections\fR" 4
+.IX Item "--no-check-sections"
+.PD
+Asks the linker \fInot\fR to check section addresses after they have
+been assigned to see if there any overlaps.  Normally the linker will
+perform this check, and if it finds any overlaps it will produce
+suitable error messages.  The linker does know about, and does make
+allowances for sections in overlays.  The default behaviour can be
+restored by using the command line switch \fB\-\-check\-sections\fR.
+.IP "\fB\-\-cref\fR" 4
+.IX Item "--cref"
+Output a cross reference table.  If a linker map file is being
+generated, the cross reference table is printed to the map file.
+Otherwise, it is printed on the standard output.
+.Sp
+The format of the table is intentionally simple, so that it may be
+easily processed by a script if necessary.  The symbols are printed out,
+sorted by name.  For each symbol, a list of file names is given.  If the
+symbol is defined, the first file listed is the location of the
+definition.  The remaining files contain references to the symbol.
+.IP "\fB\-\-no\-define\-common\fR" 4
+.IX Item "--no-define-common"
+This option inhibits the assignment of addresses to common symbols.
+The script command \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fR has the same effect.
+.Sp
+The \fB\-\-no\-define\-common\fR option allows decoupling
+the decision to assign addresses to Common symbols from the choice
+of the output file type; otherwise a non-Relocatable output type
+forces assigning addresses to Common symbols.
+Using \fB\-\-no\-define\-common\fR allows Common symbols that are referenced
+from a shared library to be assigned addresses only in the main program.
+This eliminates the unused duplicate space in the shared library,
+and also prevents any possible confusion over resolving to the wrong
+duplicate when there are many dynamic modules with specialized search
+paths for runtime symbol resolution.
+.IP "\fB\-\-defsym\fR \fIsymbol\fR\fB=\fR\fIexpression\fR" 4
+.IX Item "--defsym symbol=expression"
+Create a global symbol in the output file, containing the absolute
+address given by \fIexpression\fR.  You may use this option as many
+times as necessary to define multiple symbols in the command line.  A
+limited form of arithmetic is supported for the \fIexpression\fR in this
+context: you may give a hexadecimal constant or the name of an existing
+symbol, or use \f(CW\*(C`+\*(C'\fR and \f(CW\*(C`\-\*(C'\fR to add or subtract hexadecimal
+constants or symbols.  If you need more elaborate expressions, consider
+using the linker command language from a script.  \fINote:\fR there should be no white
+space between \fIsymbol\fR, the equals sign (``\fB=\fR''), and
+\&\fIexpression\fR.
+.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
+.IX Item "--demangle[=style]"
+.PD 0
+.IP "\fB\-\-no\-demangle\fR" 4
+.IX Item "--no-demangle"
+.PD
+These options control whether to demangle symbol names in error messages
+and other output.  When the linker is told to demangle, it tries to
+present symbol names in a readable fashion: it strips leading
+underscores if they are used by the object file format, and converts \*(C+
+mangled symbol names into user readable names.  Different compilers have
+different mangling styles.  The optional demangling style argument can be used
+to choose an appropriate demangling style for your compiler.  The linker will
+demangle by default unless the environment variable \fB\s-1COLLECT_NO_DEMANGLE\s0\fR
+is set.  These options may be used to override the default.
+.IP "\fB\-\-dynamic\-linker\fR \fIfile\fR" 4
+.IX Item "--dynamic-linker file"
+Set the name of the dynamic linker.  This is only meaningful when
+generating dynamically linked \s-1ELF\s0 executables.  The default dynamic
+linker is normally correct; don't use this unless you know what you are
+doing.
+.IP "\fB\-\-embedded\-relocs\fR" 4
+.IX Item "--embedded-relocs"
+This option is only meaningful when linking \s-1MIPS\s0 embedded \s-1PIC\s0 code,
+generated by the \-membedded\-pic option to the \s-1GNU\s0 compiler and
+assembler.  It causes the linker to create a table which may be used at
+runtime to relocate any data which was statically initialized to pointer
+values.  See the code in testsuite/ld\-empic for details.
+.IP "\fB\-\-fatal\-warnings\fR" 4
+.IX Item "--fatal-warnings"
+Treat all warnings as errors.
+.IP "\fB\-\-force\-exe\-suffix\fR" 4
+.IX Item "--force-exe-suffix"
+Make sure that an output file has a .exe suffix.
+.Sp
+If a successfully built fully linked output file does not have a
+\&\f(CW\*(C`.exe\*(C'\fR or \f(CW\*(C`.dll\*(C'\fR suffix, this option forces the linker to copy
+the output file to one of the same name with a \f(CW\*(C`.exe\*(C'\fR suffix. This
+option is useful when using unmodified Unix makefiles on a Microsoft
+Windows host, since some versions of Windows won't run an image unless
+it ends in a \f(CW\*(C`.exe\*(C'\fR suffix.
+.IP "\fB\-\-no\-gc\-sections\fR" 4
+.IX Item "--no-gc-sections"
+.PD 0
+.IP "\fB\-\-gc\-sections\fR" 4
+.IX Item "--gc-sections"
+.PD
+Enable garbage collection of unused input sections.  It is ignored on
+targets that do not support this option.  This option is not compatible
+with \fB\-r\fR, nor should it be used with dynamic linking.  The default
+behaviour (of not performing this garbage collection) can be restored by
+specifying \fB\-\-no\-gc\-sections\fR on the command line.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print a summary of the command-line options on the standard output and exit.
+.IP "\fB\-\-target\-help\fR" 4
+.IX Item "--target-help"
+Print a summary of all target specific options on the standard output and exit.
+.IP "\fB\-Map\fR \fImapfile\fR" 4
+.IX Item "-Map mapfile"
+Print a link map to the file \fImapfile\fR.  See the description of the
+\&\fB\-M\fR option, above.
+.IP "\fB\-\-no\-keep\-memory\fR" 4
+.IX Item "--no-keep-memory"
+\&\fBld\fR normally optimizes for speed over memory usage by caching the
+symbol tables of input files in memory.  This option tells \fBld\fR to
+instead optimize for memory usage, by rereading the symbol tables as
+necessary.  This may be required if \fBld\fR runs out of memory space
+while linking a large executable.
+.IP "\fB\-\-no\-undefined\fR" 4
+.IX Item "--no-undefined"
+.PD 0
+.IP "\fB\-z defs\fR" 4
+.IX Item "-z defs"
+.PD
+Report unresolved symbol references from regular object files.  This
+is done even if the linker is creating a non-symbolic shared library.
+The switch \fB\-\-[no\-]allow\-shlib\-undefined\fR controls the
+behaviour for reporting unresolved references found in shared
+libraries being linked in.  
+.IP "\fB\-\-allow\-multiple\-definition\fR" 4
+.IX Item "--allow-multiple-definition"
+.PD 0
+.IP "\fB\-z muldefs\fR" 4
+.IX Item "-z muldefs"
+.PD
+Normally when a symbol is defined multiple times, the linker will
+report a fatal error. These options allow multiple definitions and the
+first definition will be used.
+.IP "\fB\-\-allow\-shlib\-undefined\fR" 4
+.IX Item "--allow-shlib-undefined"
+.PD 0
+.IP "\fB\-\-no\-allow\-shlib\-undefined\fR" 4
+.IX Item "--no-allow-shlib-undefined"
+.PD
+Allows (the default) or disallows undefined symbols in shared libraries.
+This switch is similar to \fB\-\-no\-undefined\fR except that it
+determines the behaviour when the undefined symbols are in a
+shared library rather than a regular object file.  It does not affect
+how undefined symbols in regular object files are handled.
+.Sp
+The reason that \fB\-\-allow\-shlib\-undefined\fR is the default is that
+the shared library being specified at link time may not be the same as
+the one that is available at load time, so the symbols might actually be
+resolvable at load time.  Plus there are some systems, (eg BeOS) where
+undefined symbols in shared libraries is normal.  (The kernel patches
+them at load time to select which function is most appropriate 
+for the current architecture.  This is used for example to dynamically
+select an appropriate memset function).  Apparently it is also normal
+for \s-1HPPA\s0 shared libraries to have undefined symbols.
+.IP "\fB\-\-no\-undefined\-version\fR" 4
+.IX Item "--no-undefined-version"
+Normally when a symbol has an undefined version, the linker will ignore
+it. This option disallows symbols with undefined version and a fatal error
+will be issued instead.
+.IP "\fB\-\-no\-warn\-mismatch\fR" 4
+.IX Item "--no-warn-mismatch"
+Normally \fBld\fR will give an error if you try to link together input
+files that are mismatched for some reason, perhaps because they have
+been compiled for different processors or for different endiannesses.
+This option tells \fBld\fR that it should silently permit such possible
+errors.  This option should only be used with care, in cases when you
+have taken some special action that ensures that the linker errors are
+inappropriate.
+.IP "\fB\-\-no\-whole\-archive\fR" 4
+.IX Item "--no-whole-archive"
+Turn off the effect of the \fB\-\-whole\-archive\fR option for subsequent
+archive files.
+.IP "\fB\-\-noinhibit\-exec\fR" 4
+.IX Item "--noinhibit-exec"
+Retain the executable output file whenever it is still usable.
+Normally, the linker will not produce an output file if it encounters
+errors during the link process; it exits without writing an output file
+when it issues any error whatsoever.
+.IP "\fB\-nostdlib\fR" 4
+.IX Item "-nostdlib"
+Only search library directories explicitly specified on the
+command line.  Library directories specified in linker scripts
+(including linker scripts specified on the command line) are ignored.
+.IP "\fB\-\-oformat\fR \fIoutput-format\fR" 4
+.IX Item "--oformat output-format"
+\&\fBld\fR may be configured to support more than one kind of object
+file.  If your \fBld\fR is configured this way, you can use the
+\&\fB\-\-oformat\fR option to specify the binary format for the output
+object file.  Even when \fBld\fR is configured to support alternative
+object formats, you don't usually need to specify this, as \fBld\fR
+should be configured to produce as a default output format the most
+usual format on each machine.  \fIoutput-format\fR is a text string, the
+name of a particular format supported by the \s-1BFD\s0 libraries.  (You can
+list the available binary formats with \fBobjdump \-i\fR.)  The script
+command \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR can also specify the output format, but
+this option overrides it.  
+.IP "\fB\-pie\fR" 4
+.IX Item "-pie"
+.PD 0
+.IP "\fB\-\-pic\-executable\fR" 4
+.IX Item "--pic-executable"
+.PD
+Create a position independent executable.  This is currently only supported on
+\&\s-1ELF\s0 platforms.  Position independent executables are similar to shared
+libraries in that they are relocated by the dynamic linker to the virtual
+address the \s-1OS\s0 chooses for them (which can vary between invocations).  Like
+normal dynamically linked executables they can be executed and symbols
+defined in the executable cannot be overridden by shared libraries.
+.IP "\fB\-qmagic\fR" 4
+.IX Item "-qmagic"
+This option is ignored for Linux compatibility.
+.IP "\fB\-Qy\fR" 4
+.IX Item "-Qy"
+This option is ignored for \s-1SVR4\s0 compatibility.
+.IP "\fB\-\-relax\fR" 4
+.IX Item "--relax"
+An option with machine dependent effects.
+This option is only supported on a few targets.
+.Sp
+On some platforms, the \fB\-\-relax\fR option performs global
+optimizations that become possible when the linker resolves addressing
+in the program, such as relaxing address modes and synthesizing new
+instructions in the output object file.
+.Sp
+On some platforms these link time global optimizations may make symbolic
+debugging of the resulting executable impossible.
+This is known to be
+the case for the Matsushita \s-1MN10200\s0 and \s-1MN10300\s0 family of processors.
+.Sp
+On platforms where this is not supported, \fB\-\-relax\fR is accepted,
+but ignored.
+.IP "\fB\-\-retain\-symbols\-file\fR \fIfilename\fR" 4
+.IX Item "--retain-symbols-file filename"
+Retain \fIonly\fR the symbols listed in the file \fIfilename\fR,
+discarding all others.  \fIfilename\fR is simply a flat file, with one
+symbol name per line.  This option is especially useful in environments
+(such as VxWorks)
+where a large global symbol table is accumulated gradually, to conserve
+run-time memory.
+.Sp
+\&\fB\-\-retain\-symbols\-file\fR does \fInot\fR discard undefined symbols,
+or symbols needed for relocations.
+.Sp
+You may only specify \fB\-\-retain\-symbols\-file\fR once in the command
+line.  It overrides \fB\-s\fR and \fB\-S\fR.
+.IP "\fB\-rpath\fR \fIdir\fR" 4
+.IX Item "-rpath dir"
+Add a directory to the runtime library search path.  This is used when
+linking an \s-1ELF\s0 executable with shared objects.  All \fB\-rpath\fR
+arguments are concatenated and passed to the runtime linker, which uses
+them to locate shared objects at runtime.  The \fB\-rpath\fR option is
+also used when locating shared objects which are needed by shared
+objects explicitly included in the link; see the description of the
+\&\fB\-rpath\-link\fR option.  If \fB\-rpath\fR is not used when linking an
+\&\s-1ELF\s0 executable, the contents of the environment variable
+\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR will be used if it is defined.
+.Sp
+The \fB\-rpath\fR option may also be used on SunOS.  By default, on
+SunOS, the linker will form a runtime search patch out of all the
+\&\fB\-L\fR options it is given.  If a \fB\-rpath\fR option is used, the
+runtime search path will be formed exclusively using the \fB\-rpath\fR
+options, ignoring the \fB\-L\fR options.  This can be useful when using
+gcc, which adds many \fB\-L\fR options which may be on \s-1NFS\s0 mounted
+filesystems.
+.Sp
+For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is
+followed by a directory name, rather than a file name, it is treated as
+the \fB\-rpath\fR option.
+.IP "\fB\-rpath\-link\fR \fI\s-1DIR\s0\fR" 4
+.IX Item "-rpath-link DIR"
+When using \s-1ELF\s0 or SunOS, one shared library may require another.  This
+happens when an \f(CW\*(C`ld \-shared\*(C'\fR link includes a shared library as one
+of the input files.
+.Sp
+When the linker encounters such a dependency when doing a non\-shared,
+non-relocatable link, it will automatically try to locate the required
+shared library and include it in the link, if it is not included
+explicitly.  In such a case, the \fB\-rpath\-link\fR option
+specifies the first set of directories to search.  The
+\&\fB\-rpath\-link\fR option may specify a sequence of directory names
+either by specifying a list of names separated by colons, or by
+appearing multiple times.
+.Sp
+This option should be used with caution as it overrides the search path
+that may have been hard compiled into a shared library. In such a case it
+is possible to use unintentionally a different search path than the
+runtime linker would do.
+.Sp
+The linker uses the following search paths to locate required shared
+libraries.
+.RS 4
+.IP "1." 4
+Any directories specified by \fB\-rpath\-link\fR options.
+.IP "2." 4
+Any directories specified by \fB\-rpath\fR options.  The difference
+between \fB\-rpath\fR and \fB\-rpath\-link\fR is that directories
+specified by \fB\-rpath\fR options are included in the executable and
+used at runtime, whereas the \fB\-rpath\-link\fR option is only effective
+at link time. It is for the native linker only.
+.IP "3." 4
+On an \s-1ELF\s0 system, if the \fB\-rpath\fR and \f(CW\*(C`rpath\-link\*(C'\fR options
+were not used, search the contents of the environment variable
+\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR. It is for the native linker only.
+.IP "4." 4
+On SunOS, if the \fB\-rpath\fR option was not used, search any
+directories specified using \fB\-L\fR options.
+.IP "5." 4
+For a native linker, the contents of the environment variable
+\&\f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR.
+.IP "6." 4
+For a native \s-1ELF\s0 linker, the directories in \f(CW\*(C`DT_RUNPATH\*(C'\fR or
+\&\f(CW\*(C`DT_RPATH\*(C'\fR of a shared library are searched for shared
+libraries needed by it. The \f(CW\*(C`DT_RPATH\*(C'\fR entries are ignored if
+\&\f(CW\*(C`DT_RUNPATH\*(C'\fR entries exist.
+.IP "7." 4
+The default directories, normally \fI/lib\fR and \fI/usr/lib\fR.
+.IP "8." 4
+For a native linker on an \s-1ELF\s0 system, if the file \fI/etc/ld.so.conf\fR
+exists, the list of directories found in that file.
+.RE
+.RS 4
+.Sp
+If the required shared library is not found, the linker will issue a
+warning and continue with the link.
+.RE
+.IP "\fB\-shared\fR" 4
+.IX Item "-shared"
+.PD 0
+.IP "\fB\-Bshareable\fR" 4
+.IX Item "-Bshareable"
+.PD
+Create a shared library.  This is currently only supported on \s-1ELF\s0, \s-1XCOFF\s0
+and SunOS platforms.  On SunOS, the linker will automatically create a
+shared library if the \fB\-e\fR option is not used and there are
+undefined symbols in the link.
+.IP "\fB\-\-sort\-common\fR" 4
+.IX Item "--sort-common"
+This option tells \fBld\fR to sort the common symbols by size when it
+places them in the appropriate output sections.  First come all the one
+byte symbols, then all the two byte, then all the four byte, and then
+everything else.  This is to prevent gaps between symbols due to
+alignment constraints.
+.IP "\fB\-\-split\-by\-file [\fR\fIsize\fR\fB]\fR" 4
+.IX Item "--split-by-file [size]"
+Similar to \fB\-\-split\-by\-reloc\fR but creates a new output section for
+each input file when \fIsize\fR is reached.  \fIsize\fR defaults to a
+size of 1 if not given.
+.IP "\fB\-\-split\-by\-reloc [\fR\fIcount\fR\fB]\fR" 4
+.IX Item "--split-by-reloc [count]"
+Tries to creates extra sections in the output file so that no single
+output section in the file contains more than \fIcount\fR relocations.
+This is useful when generating huge relocatable files for downloading into
+certain real time kernels with the \s-1COFF\s0 object file format; since \s-1COFF\s0
+cannot represent more than 65535 relocations in a single section.  Note
+that this will fail to work with object file formats which do not
+support arbitrary sections.  The linker will not split up individual
+input sections for redistribution, so if a single input section contains
+more than \fIcount\fR relocations one output section will contain that
+many relocations.  \fIcount\fR defaults to a value of 32768.
+.IP "\fB\-\-stats\fR" 4
+.IX Item "--stats"
+Compute and display statistics about the operation of the linker, such
+as execution time and memory usage.
+.IP "\fB\-\-traditional\-format\fR" 4
+.IX Item "--traditional-format"
+For some targets, the output of \fBld\fR is different in some ways from
+the output of some existing linker.  This switch requests \fBld\fR to
+use the traditional format instead.
+.Sp
+For example, on SunOS, \fBld\fR combines duplicate entries in the
+symbol string table.  This can reduce the size of an output file with
+full debugging information by over 30 percent.  Unfortunately, the SunOS
+\&\f(CW\*(C`dbx\*(C'\fR program can not read the resulting program (\f(CW\*(C`gdb\*(C'\fR has no
+trouble).  The \fB\-\-traditional\-format\fR switch tells \fBld\fR to not
+combine duplicate entries.
+.IP "\fB\-\-section\-start\fR \fIsectionname\fR\fB=\fR\fIorg\fR" 4
+.IX Item "--section-start sectionname=org"
+Locate a section in the output file at the absolute
+address given by \fIorg\fR.  You may use this option as many
+times as necessary to locate multiple sections in the command
+line.
+\&\fIorg\fR must be a single hexadecimal integer;
+for compatibility with other linkers, you may omit the leading
+\&\fB0x\fR usually associated with hexadecimal values.  \fINote:\fR there
+should be no white space between \fIsectionname\fR, the equals
+sign (``\fB=\fR''), and \fIorg\fR.
+.IP "\fB\-Tbss\fR \fIorg\fR" 4
+.IX Item "-Tbss org"
+.PD 0
+.IP "\fB\-Tdata\fR \fIorg\fR" 4
+.IX Item "-Tdata org"
+.IP "\fB\-Ttext\fR \fIorg\fR" 4
+.IX Item "-Ttext org"
+.PD
+Same as \-\-section\-start, with \f(CW\*(C`.bss\*(C'\fR, \f(CW\*(C`.data\*(C'\fR or
+\&\f(CW\*(C`.text\*(C'\fR as the \fIsectionname\fR.
+.IP "\fB\-\-unresolved\-symbols=\fR\fImethod\fR" 4
+.IX Item "--unresolved-symbols=method"
+Determine how to handle unresolved symbols.  There are four possible
+values for \fBmethod\fR:
+.RS 4
+.IP "\fBignore-all\fR" 4
+.IX Item "ignore-all"
+Do not report any unresolved symbols.  This is the default when
+creating shared libraries or dynamic executables.
+.IP "\fBreport-all\fR" 4
+.IX Item "report-all"
+Report all unresolved symbols.  This is the default when creating
+static binaries.
+.IP "\fBignore-in-object-files\fR" 4
+.IX Item "ignore-in-object-files"
+Report unresolved symbols that are contained in shared libraries, but
+ignore them if they come from regular object files.
+.IP "\fBignore-in-shared-libs\fR" 4
+.IX Item "ignore-in-shared-libs"
+Report unresolved symbols that come from regular object files, but
+ignore them if they come from shared libraries.  This can be useful
+when creating a dynamic binary and it is known that all the shared
+libraries that it should be referencing are included on the linker's
+command line.
+.RE
+.RS 4
+.Sp
+The behaviour for shared libraries on their own can also be controlled
+by the \fB\-\-[no\-]allow\-shlib\-undefined\fR option.
+.Sp
+Normally the linker will generate an error message for each reported
+unresolved symbol but the option \fB\-\-warn\-unresolved\-symbols\fR
+can change this to a warning.
+.RE
+.IP "\fB\-\-dll\-verbose\fR" 4
+.IX Item "--dll-verbose"
+.PD 0
+.IP "\fB\-\-verbose\fR" 4
+.IX Item "--verbose"
+.PD
+Display the version number for \fBld\fR and list the linker emulations
+supported.  Display which input files can and cannot be opened.  Display
+the linker script being used by the linker.
+.IP "\fB\-\-version\-script=\fR\fIversion-scriptfile\fR" 4
+.IX Item "--version-script=version-scriptfile"
+Specify the name of a version script to the linker.  This is typically
+used when creating shared libraries to specify additional information
+about the version hierarchy for the library being created.  This option
+is only meaningful on \s-1ELF\s0 platforms which support shared libraries.
+.IP "\fB\-\-warn\-common\fR" 4
+.IX Item "--warn-common"
+Warn when a common symbol is combined with another common symbol or with
+a symbol definition.  Unix linkers allow this somewhat sloppy practise,
+but linkers on some other operating systems do not.  This option allows
+you to find potential problems from combining global symbols.
+Unfortunately, some C libraries use this practise, so you may get some
+warnings about symbols in the libraries as well as in your programs.
+.Sp
+There are three kinds of global symbols, illustrated here by C examples:
+.RS 4
+.IP "\fBint i = 1;\fR" 4
+.IX Item "int i = 1;"
+A definition, which goes in the initialized data section of the output
+file.
+.IP "\fBextern int i;\fR" 4
+.IX Item "extern int i;"
+An undefined reference, which does not allocate space.
+There must be either a definition or a common symbol for the
+variable somewhere.
+.IP "\fBint i;\fR" 4
+.IX Item "int i;"
+A common symbol.  If there are only (one or more) common symbols for a
+variable, it goes in the uninitialized data area of the output file.
+The linker merges multiple common symbols for the same variable into a
+single symbol.  If they are of different sizes, it picks the largest
+size.  The linker turns a common symbol into a declaration, if there is
+a definition of the same variable.
+.RE
+.RS 4
+.Sp
+The \fB\-\-warn\-common\fR option can produce five kinds of warnings.
+Each warning consists of a pair of lines: the first describes the symbol
+just encountered, and the second describes the previous symbol
+encountered with the same name.  One or both of the two symbols will be
+a common symbol.
+.IP "1." 4
+Turning a common symbol into a reference, because there is already a
+definition for the symbol.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: common of `<symbol>'
+\&           overridden by definition
+\&        <file>(<section>): warning: defined here
+.Ve
+.IP "2." 4
+Turning a common symbol into a reference, because a later definition for
+the symbol is encountered.  This is the same as the previous case,
+except that the symbols are encountered in a different order.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: definition of `<symbol>'
+\&           overriding common
+\&        <file>(<section>): warning: common is here
+.Ve
+.IP "3." 4
+Merging a common symbol with a previous same-sized common symbol.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: multiple common
+\&           of `<symbol>'
+\&        <file>(<section>): warning: previous common is here
+.Ve
+.IP "4." 4
+Merging a common symbol with a previous larger common symbol.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: common of `<symbol>'
+\&           overridden by larger common
+\&        <file>(<section>): warning: larger common is here
+.Ve
+.IP "5." 4
+Merging a common symbol with a previous smaller common symbol.  This is
+the same as the previous case, except that the symbols are
+encountered in a different order.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: common of `<symbol>'
+\&           overriding smaller common
+\&        <file>(<section>): warning: smaller common is here
+.Ve
+.RE
+.RS 4
+.RE
+.IP "\fB\-\-warn\-constructors\fR" 4
+.IX Item "--warn-constructors"
+Warn if any global constructors are used.  This is only useful for a few
+object file formats.  For formats like \s-1COFF\s0 or \s-1ELF\s0, the linker can not
+detect the use of global constructors.
+.IP "\fB\-\-warn\-multiple\-gp\fR" 4
+.IX Item "--warn-multiple-gp"
+Warn if multiple global pointer values are required in the output file.
+This is only meaningful for certain processors, such as the Alpha.
+Specifically, some processors put large-valued constants in a special
+section.  A special register (the global pointer) points into the middle
+of this section, so that constants can be loaded efficiently via a
+base-register relative addressing mode.  Since the offset in
+base-register relative mode is fixed and relatively small (e.g., 16
+bits), this limits the maximum size of the constant pool.  Thus, in
+large programs, it is often necessary to use multiple global pointer
+values in order to be able to address all possible constants.  This
+option causes a warning to be issued whenever this case occurs.
+.IP "\fB\-\-warn\-once\fR" 4
+.IX Item "--warn-once"
+Only warn once for each undefined symbol, rather than once per module
+which refers to it.
+.IP "\fB\-\-warn\-section\-align\fR" 4
+.IX Item "--warn-section-align"
+Warn if the address of an output section is changed because of
+alignment.  Typically, the alignment will be set by an input section.
+The address will only be changed if it not explicitly specified; that
+is, if the \f(CW\*(C`SECTIONS\*(C'\fR command does not specify a start address for
+the section.
+.IP "\fB\-\-warn\-unresolved\-symbols\fR" 4
+.IX Item "--warn-unresolved-symbols"
+If the linker is going to report an unresolved symbol (see the option
+\&\fB\-\-unresolved\-symbols\fR) it will normally generate an error.
+This option makes it generate a warning instead.
+.IP "\fB\-\-error\-unresolved\-symbols\fR" 4
+.IX Item "--error-unresolved-symbols"
+This restores the linker's default behaviour of generating errors when
+it is reporting unresolved symbols.
+.IP "\fB\-\-whole\-archive\fR" 4
+.IX Item "--whole-archive"
+For each archive mentioned on the command line after the
+\&\fB\-\-whole\-archive\fR option, include every object file in the archive
+in the link, rather than searching the archive for the required object
+files.  This is normally used to turn an archive file into a shared
+library, forcing every object to be included in the resulting shared
+library.  This option may be used more than once.
+.Sp
+Two notes when using this option from gcc: First, gcc doesn't know
+about this option, so you have to use \fB\-Wl,\-whole\-archive\fR.
+Second, don't forget to use \fB\-Wl,\-no\-whole\-archive\fR after your
+list of archives, because gcc will add its own list of archives to
+your link and you may not want this flag to affect those as well.
+.IP "\fB\-\-wrap\fR \fIsymbol\fR" 4
+.IX Item "--wrap symbol"
+Use a wrapper function for \fIsymbol\fR.  Any undefined reference to
+\&\fIsymbol\fR will be resolved to \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR.  Any
+undefined reference to \f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR will be resolved to
+\&\fIsymbol\fR.
+.Sp
+This can be used to provide a wrapper for a system function.  The
+wrapper function should be called \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR.  If it
+wishes to call the system function, it should call
+\&\f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR.
+.Sp
+Here is a trivial example:
+.Sp
+.Vb 6
+\&        void *
+\&        __wrap_malloc (int c)
+\&        {
+\&          printf ("malloc called with %ld\en", c);
+\&          return __real_malloc (c);
+\&        }
+.Ve
+.Sp
+If you link other code with this file using \fB\-\-wrap malloc\fR, then
+all calls to \f(CW\*(C`malloc\*(C'\fR will call the function \f(CW\*(C`_\|_wrap_malloc\*(C'\fR
+instead.  The call to \f(CW\*(C`_\|_real_malloc\*(C'\fR in \f(CW\*(C`_\|_wrap_malloc\*(C'\fR will
+call the real \f(CW\*(C`malloc\*(C'\fR function.
+.Sp
+You may wish to provide a \f(CW\*(C`_\|_real_malloc\*(C'\fR function as well, so that
+links without the \fB\-\-wrap\fR option will succeed.  If you do this,
+you should not put the definition of \f(CW\*(C`_\|_real_malloc\*(C'\fR in the same
+file as \f(CW\*(C`_\|_wrap_malloc\*(C'\fR; if you do, the assembler may resolve the
+call before the linker has a chance to wrap it to \f(CW\*(C`malloc\*(C'\fR.
+.IP "\fB\-\-enable\-new\-dtags\fR" 4
+.IX Item "--enable-new-dtags"
+.PD 0
+.IP "\fB\-\-disable\-new\-dtags\fR" 4
+.IX Item "--disable-new-dtags"
+.PD
+This linker can create the new dynamic tags in \s-1ELF\s0. But the older \s-1ELF\s0
+systems may not understand them. If you specify
+\&\fB\-\-enable\-new\-dtags\fR, the dynamic tags will be created as needed.
+If you specify \fB\-\-disable\-new\-dtags\fR, no new dynamic tags will be
+created. By default, the new dynamic tags are not created. Note that
+those options are only available for \s-1ELF\s0 systems.
+.PP
+The i386 \s-1PE\s0 linker supports the \fB\-shared\fR option, which causes
+the output to be a dynamically linked library (\s-1DLL\s0) instead of a
+normal executable.  You should name the output \f(CW\*(C`*.dll\*(C'\fR when you
+use this option.  In addition, the linker fully supports the standard
+\&\f(CW\*(C`*.def\*(C'\fR files, which may be specified on the linker command line
+like an object file (in fact, it should precede archives it exports
+symbols from, to ensure that they get linked in, just like a normal
+object file).
+.PP
+In addition to the options common to all targets, the i386 \s-1PE\s0 linker
+support additional command line options that are specific to the i386
+\&\s-1PE\s0 target.  Options that take values may be separated from their
+values by either a space or an equals sign.
+.IP "\fB\-\-add\-stdcall\-alias\fR" 4
+.IX Item "--add-stdcall-alias"
+If given, symbols with a stdcall suffix (@\fInn\fR) will be exported
+as-is and also with the suffix stripped.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-base\-file\fR \fIfile\fR" 4
+.IX Item "--base-file file"
+Use \fIfile\fR as the name of a file in which to save the base
+addresses of all the relocations needed for generating DLLs with
+\&\fIdlltool\fR.
+[This is an i386 \s-1PE\s0 specific option]
+.IP "\fB\-\-dll\fR" 4
+.IX Item "--dll"
+Create a \s-1DLL\s0 instead of a regular executable.  You may also use
+\&\fB\-shared\fR or specify a \f(CW\*(C`LIBRARY\*(C'\fR in a given \f(CW\*(C`.def\*(C'\fR
+file.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-stdcall\-fixup\fR" 4
+.IX Item "--enable-stdcall-fixup"
+.PD 0
+.IP "\fB\-\-disable\-stdcall\-fixup\fR" 4
+.IX Item "--disable-stdcall-fixup"
+.PD
+If the link finds a symbol that it cannot resolve, it will attempt to
+do ``fuzzy linking'' by looking for another defined symbol that differs
+only in the format of the symbol name (cdecl vs stdcall) and will
+resolve that symbol by linking to the match.  For example, the
+undefined symbol \f(CW\*(C`_foo\*(C'\fR might be linked to the function
+\&\f(CW\*(C`_foo at 12\*(C'\fR, or the undefined symbol \f(CW\*(C`_bar at 16\*(C'\fR might be linked
+to the function \f(CW\*(C`_bar\*(C'\fR.  When the linker does this, it prints a
+warning, since it normally should have failed to link, but sometimes
+import libraries generated from third-party dlls may need this feature
+to be usable.  If you specify \fB\-\-enable\-stdcall\-fixup\fR, this
+feature is fully enabled and warnings are not printed.  If you specify
+\&\fB\-\-disable\-stdcall\-fixup\fR, this feature is disabled and such
+mismatches are considered to be errors.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-export\-all\-symbols\fR" 4
+.IX Item "--export-all-symbols"
+If given, all global symbols in the objects used to build a \s-1DLL\s0 will
+be exported by the \s-1DLL\s0.  Note that this is the default if there
+otherwise wouldn't be any exported symbols.  When symbols are
+explicitly exported via \s-1DEF\s0 files or implicitly exported via function
+attributes, the default is to not export anything else unless this
+option is given.  Note that the symbols \f(CW\*(C`DllMain at 12\*(C'\fR,
+\&\f(CW\*(C`DllEntryPoint at 0\*(C'\fR, \f(CW\*(C`DllMainCRTStartup at 12\*(C'\fR, and 
+\&\f(CW\*(C`impure_ptr\*(C'\fR will not be automatically
+exported.  Also, symbols imported from other DLLs will not be 
+re\-exported, nor will symbols specifying the \s-1DLL\s0's internal layout 
+such as those beginning with \f(CW\*(C`_head_\*(C'\fR or ending with 
+\&\f(CW\*(C`_iname\*(C'\fR.  In addition, no symbols from \f(CW\*(C`libgcc\*(C'\fR, 
+\&\f(CW\*(C`libstd++\*(C'\fR, \f(CW\*(C`libmingw32\*(C'\fR, or \f(CW\*(C`crtX.o\*(C'\fR will be exported.
+Symbols whose names begin with \f(CW\*(C`_\|_rtti_\*(C'\fR or \f(CW\*(C`_\|_builtin_\*(C'\fR will
+not be exported, to help with \*(C+ DLLs.  Finally, there is an
+extensive list of cygwin-private symbols that are not exported 
+(obviously, this applies on when building DLLs for cygwin targets).
+These cygwin-excludes are: \f(CW\*(C`_cygwin_dll_entry at 12\*(C'\fR, 
+\&\f(CW\*(C`_cygwin_crt0_common at 8\*(C'\fR, \f(CW\*(C`_cygwin_noncygwin_dll_entry at 12\*(C'\fR,
+\&\f(CW\*(C`_fmode\*(C'\fR, \f(CW\*(C`_impure_ptr\*(C'\fR, \f(CW\*(C`cygwin_attach_dll\*(C'\fR, 
+\&\f(CW\*(C`cygwin_premain0\*(C'\fR, \f(CW\*(C`cygwin_premain1\*(C'\fR, \f(CW\*(C`cygwin_premain2\*(C'\fR,
+\&\f(CW\*(C`cygwin_premain3\*(C'\fR, and \f(CW\*(C`environ\*(C'\fR. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4
+.IX Item "--exclude-symbols symbol,symbol,..."
+Specifies a list of symbols which should not be automatically
+exported.  The symbol names may be delimited by commas or colons.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-exclude\-libs\fR \fIlib\fR\fB,\fR\fIlib\fR\fB,...\fR" 4
+.IX Item "--exclude-libs lib,lib,..."
+Specifies a list of archive libraries from which symbols should not be automatically
+exported. The library names may be delimited by commas or colons.  Specifying
+\&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fR excludes symbols in all archive libraries from
+automatic export. Symbols explicitly listed in a .def file are still exported,
+regardless of this option. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-file\-alignment\fR" 4
+.IX Item "--file-alignment"
+Specify the file alignment.  Sections in the file will always begin at
+file offsets which are multiples of this number.  This defaults to
+512.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-heap\fR \fIreserve\fR" 4
+.IX Item "--heap reserve"
+.PD 0
+.IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4
+.IX Item "--heap reserve,commit"
+.PD
+Specify the amount of memory to reserve (and optionally commit) to be
+used as heap for this program.  The default is 1Mb reserved, 4K
+committed.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4
+.IX Item "--image-base value"
+Use \fIvalue\fR as the base address of your program or dll.  This is
+the lowest memory location that will be used when your program or dll
+is loaded.  To reduce the need to relocate and improve performance of
+your dlls, each should have a unique base address and not overlap any
+other dlls.  The default is 0x400000 for executables, and 0x10000000
+for dlls.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-kill\-at\fR" 4
+.IX Item "--kill-at"
+If given, the stdcall suffixes (@\fInn\fR) will be stripped from
+symbols before they are exported.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4
+.IX Item "--major-image-version value"
+Sets the major number of the ``image version''.  Defaults to 1.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4
+.IX Item "--major-os-version value"
+Sets the major number of the ``os version''.  Defaults to 4.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4
+.IX Item "--major-subsystem-version value"
+Sets the major number of the ``subsystem version''.  Defaults to 4.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4
+.IX Item "--minor-image-version value"
+Sets the minor number of the ``image version''.  Defaults to 0.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4
+.IX Item "--minor-os-version value"
+Sets the minor number of the ``os version''.  Defaults to 0.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4
+.IX Item "--minor-subsystem-version value"
+Sets the minor number of the ``subsystem version''.  Defaults to 0.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-output\-def\fR \fIfile\fR" 4
+.IX Item "--output-def file"
+The linker will create the file \fIfile\fR which will contain a \s-1DEF\s0
+file corresponding to the \s-1DLL\s0 the linker is generating.  This \s-1DEF\s0 file
+(which should be called \f(CW\*(C`*.def\*(C'\fR) may be used to create an import
+library with \f(CW\*(C`dlltool\*(C'\fR or may be used as a reference to
+automatically or implicitly exported symbols.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-out\-implib\fR \fIfile\fR" 4
+.IX Item "--out-implib file"
+The linker will create the file \fIfile\fR which will contain an
+import lib corresponding to the \s-1DLL\s0 the linker is generating. This
+import lib (which should be called \f(CW\*(C`*.dll.a\*(C'\fR or \f(CW\*(C`*.a\*(C'\fR
+may be used to link clients against the generated \s-1DLL\s0; this behaviour
+makes it possible to skip a separate \f(CW\*(C`dlltool\*(C'\fR import library
+creation step.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-auto\-image\-base\fR" 4
+.IX Item "--enable-auto-image-base"
+Automatically choose the image base for DLLs, unless one is specified
+using the \f(CW\*(C`\-\-image\-base\*(C'\fR argument.  By using a hash generated
+from the dllname to create unique image bases for each \s-1DLL\s0, in-memory
+collisions and relocations which can delay program execution are
+avoided.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-disable\-auto\-image\-base\fR" 4
+.IX Item "--disable-auto-image-base"
+Do not automatically generate a unique image base.  If there is no
+user-specified image base (\f(CW\*(C`\-\-image\-base\*(C'\fR) then use the platform
+default.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4
+.IX Item "--dll-search-prefix string"
+When linking dynamically to a dll without an import library,
+search for \f(CW\*(C`<string><basename>.dll\*(C'\fR in preference to 
+\&\f(CW\*(C`lib<basename>.dll\*(C'\fR. This behaviour allows easy distinction
+between DLLs built for the various \*(L"subplatforms\*(R": native, cygwin,
+uwin, pw, etc.  For instance, cygwin DLLs typically use
+\&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-auto\-import\fR" 4
+.IX Item "--enable-auto-import"
+Do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for 
+\&\s-1DATA\s0 imports from DLLs, and create the necessary thunking symbols when 
+building the import libraries with those \s-1DATA\s0 exports.  This generally 
+will 'just work' \*(-- but sometimes you may see this message:
+.Sp
+"variable '<var>' can't be auto\-imported. Please read the 
+documentation for ld's \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fR for details."
+.Sp
+This message occurs when some (sub)expression accesses an address 
+ultimately given by the sum of two constants (Win32 import tables only 
+allow one).  Instances where this may occur include accesses to member 
+fields of struct variables imported from a \s-1DLL\s0, as well as using a 
+constant index into an array variable imported from a \s-1DLL\s0.  Any 
+multiword variable (arrays, structs, long long, etc) may trigger
+this error condition.  However, regardless of the exact data type
+of the offending exported variable, ld will always detect it, issue
+the warning, and exit.
+.Sp
+There are several ways to address this difficulty, regardless of the
+data type of the exported variable:
+.Sp
+One way is to use \-\-enable\-runtime\-pseudo\-reloc switch. This leaves the task
+of adjusting references in your client code for runtime environment, so
+this method works only when runtime environment supports this feature.
+.Sp
+A second solution is to force one of the 'constants' to be a variable \*(-- 
+that is, unknown and un-optimizable at compile time.  For arrays, 
+there are two possibilities: a) make the indexee (the array's address) 
+a variable, or b) make the 'constant' index a variable.  Thus:
+.Sp
+.Vb 3
+\&        extern type extern_array[];
+\&        extern_array[1] --> 
+\&           { volatile type *t=extern_array; t[1] }
+.Ve
+.Sp
+or
+.Sp
+.Vb 3
+\&        extern type extern_array[];
+\&        extern_array[1] --> 
+\&           { volatile int t=1; extern_array[t] }
+.Ve
+.Sp
+For structs (and most other multiword data types) the only option 
+is to make the struct itself (or the long long, or the ...) variable:
+.Sp
+.Vb 3
+\&        extern struct s extern_struct;
+\&        extern_struct.field --> 
+\&           { volatile struct s *t=&extern_struct; t->field }
+.Ve
+.Sp
+or
+.Sp
+.Vb 3
+\&        extern long long extern_ll;
+\&        extern_ll -->
+\&          { volatile long long * local_ll=&extern_ll; *local_ll }
+.Ve
+.Sp
+A third method of dealing with this difficulty is to abandon
+\&'auto\-import' for the offending symbol and mark it with 
+\&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR.  However, in practise that
+requires using compile-time #defines to indicate whether you are
+building a \s-1DLL\s0, building client code that will link to the \s-1DLL\s0, or 
+merely building/linking to a static library.   In making the choice 
+between the various methods of resolving the 'direct address with 
+constant offset' problem, you should consider typical real-world usage:
+.Sp
+Original:
+.Sp
+.Vb 7
+\&        --foo.h
+\&        extern int arr[];
+\&        --foo.c
+\&        #include "foo.h"
+\&        void main(int argc, char **argv){
+\&          printf("%d\en",arr[1]);
+\&        }
+.Ve
+.Sp
+Solution 1:
+.Sp
+.Vb 9
+\&        --foo.h
+\&        extern int arr[];
+\&        --foo.c
+\&        #include "foo.h"
+\&        void main(int argc, char **argv){
+\&          /* This workaround is for win32 and cygwin; do not "optimize" */
+\&          volatile int *parr = arr;
+\&          printf("%d\en",parr[1]);
+\&        }
+.Ve
+.Sp
+Solution 2:
+.Sp
+.Vb 14
+\&        --foo.h
+\&        /* Note: auto-export is assumed (no __declspec(dllexport)) */
+\&        #if (defined(_WIN32) || defined(__CYGWIN__)) && \e
+\&          !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
+\&        #define FOO_IMPORT __declspec(dllimport)
+\&        #else
+\&        #define FOO_IMPORT
+\&        #endif
+\&        extern FOO_IMPORT int arr[];
+\&        --foo.c
+\&        #include "foo.h"
+\&        void main(int argc, char **argv){
+\&          printf("%d\en",arr[1]);
+\&        }
+.Ve
+.Sp
+A fourth way to avoid this problem is to re-code your 
+library to use a functional interface rather than a data interface
+for the offending variables (e.g. \fIset_foo()\fR and \fIget_foo()\fR accessor
+functions).
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-disable\-auto\-import\fR" 4
+.IX Item "--disable-auto-import"
+Do not attempt to do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to 
+\&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for \s-1DATA\s0 imports from DLLs.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-runtime\-pseudo\-reloc\fR" 4
+.IX Item "--enable-runtime-pseudo-reloc"
+If your code contains expressions described in \-\-enable\-auto\-import section,
+that is, \s-1DATA\s0 imports from \s-1DLL\s0 with non-zero offset, this switch will create
+a vector of 'runtime pseudo relocations' which can be used by runtime
+environment to adjust references to such data in your client code. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-disable\-runtime\-pseudo\-reloc\fR" 4
+.IX Item "--disable-runtime-pseudo-reloc"
+Do not create pseudo relocations for non-zero offset \s-1DATA\s0 imports from
+DLLs.  This is the default.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-extra\-pe\-debug\fR" 4
+.IX Item "--enable-extra-pe-debug"
+Show additional debug info related to auto-import symbol thunking.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-section\-alignment\fR" 4
+.IX Item "--section-alignment"
+Sets the section alignment.  Sections in memory will always begin at
+addresses which are a multiple of this number.  Defaults to 0x1000.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-stack\fR \fIreserve\fR" 4
+.IX Item "--stack reserve"
+.PD 0
+.IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4
+.IX Item "--stack reserve,commit"
+.PD
+Specify the amount of memory to reserve (and optionally commit) to be
+used as stack for this program.  The default is 2Mb reserved, 4K
+committed.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-subsystem\fR \fIwhich\fR" 4
+.IX Item "--subsystem which"
+.PD 0
+.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4
+.IX Item "--subsystem which:major"
+.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4
+.IX Item "--subsystem which:major.minor"
+.PD
+Specifies the subsystem under which your program will execute.  The
+legal values for \fIwhich\fR are \f(CW\*(C`native\*(C'\fR, \f(CW\*(C`windows\*(C'\fR,
+\&\f(CW\*(C`console\*(C'\fR, and \f(CW\*(C`posix\*(C'\fR.  You may optionally set the
+subsystem version also.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+You can change the behaviour of \fBld\fR with the environment variables
+\&\f(CW\*(C`GNUTARGET\*(C'\fR,
+\&\f(CW\*(C`LDEMULATION\*(C'\fR and \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR.
+.PP
+\&\f(CW\*(C`GNUTARGET\*(C'\fR determines the input-file object format if you don't
+use \fB\-b\fR (or its synonym \fB\-\-format\fR).  Its value should be one
+of the \s-1BFD\s0 names for an input format.  If there is no
+\&\f(CW\*(C`GNUTARGET\*(C'\fR in the environment, \fBld\fR uses the natural format
+of the target. If \f(CW\*(C`GNUTARGET\*(C'\fR is set to \f(CW\*(C`default\*(C'\fR then \s-1BFD\s0
+attempts to discover the input format by examining binary input files;
+this method often succeeds, but there are potential ambiguities, since
+there is no method of ensuring that the magic number used to specify
+object-file formats is unique.  However, the configuration procedure for
+\&\s-1BFD\s0 on each system places the conventional format for that system first
+in the search\-list, so ambiguities are resolved in favor of convention.
+.PP
+\&\f(CW\*(C`LDEMULATION\*(C'\fR determines the default emulation if you don't use the
+\&\fB\-m\fR option.  The emulation can affect various aspects of linker
+behaviour, particularly the default linker script.  You can list the
+available emulations with the \fB\-\-verbose\fR or \fB\-V\fR options.  If
+the \fB\-m\fR option is not used, and the \f(CW\*(C`LDEMULATION\*(C'\fR environment
+variable is not defined, the default emulation depends upon how the
+linker was configured.
+.PP
+Normally, the linker will default to demangling symbols.  However, if
+\&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR is set in the environment, then it will
+default to not demangling symbols.  This environment variable is used in
+a similar fashion by the \f(CW\*(C`gcc\*(C'\fR linker wrapper program.  The default
+may be overridden by the \fB\-\-demangle\fR and \fB\-\-no\-demangle\fR
+options.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjcopy\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1) and
+the Info entries for \fIbinutils\fR and
+\&\fIld\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
+2002, 2003 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, with no Front-Cover Texts, and with no
+Back-Cover Texts.  A copy of the license is included in the
+section entitled ``\s-1GNU\s0 Free Documentation License''.
diff --git a/raw/man1/ldd.1 b/raw/man1/ldd.1
new file mode 100644
index 0000000..1b4b6ef
--- /dev/null
+++ b/raw/man1/ldd.1
@@ -0,0 +1,55 @@
+.\" Copyright 1995-2000 David Engel (david at ods.com)
+.\" Copyright 1995 Rickard E. Faith (faith at cs.unc.edu)
+.\" Copyright 2000 Ben Collins (bcollins at debian.org)
+.\"    Redone for GLibc 2.2
+.\" Copyright 2000 Jakub Jelinek (jakub at redhat.com)
+.\"    Corrected.
+.\" Most of this was copied from the README file.  Do not restrict distribution.
+.\" May be distributed under the GNU General Public License
+.TH LDD 1 "30 October 2000"
+.SH NAME
+ldd \- print shared library dependencies
+.SH SYNOPSIS
+.B ldd
+.RB [OPTION]...
+FILE...
+.SH DESCRIPTION
+.B ldd
+prints the shared libraries required by each program or shared library
+specified on the command line.
+.SH OPTIONS
+.TP
+.B \-\-version
+Print the version number of
+.BR ldd .
+.TP
+.B \-v\ \-\-verbose
+Print all information, including e.g. symbol versioning information.
+.TP
+.B \-d\ \-\-data\-relocs
+Perform relocations and report any missing objects (ELF only).
+.TP
+.B \-r\ \-\-function\-relocs
+Perform relocations for both data objects and functions, and
+report any missing objects or functions (ELF only).
+.TP
+.B \-\-help
+Usage information.
+.SH BUGS
+.B ldd
+does not work on a.out shared libraries.
+.PP
+.B ldd
+does not work with some extremely old a.out programs which were
+built before
+.B ldd
+support was added to the compiler releases.
+If you use
+.B ldd
+on one of these programs, the program will attempt to run with argc = 0 and
+the results will be unpredictable.
+.SH AUTHOR
+Roland McGrath and Ulrich Drepper.
+.SH SEE ALSO
+.BR ldconfig (8),
+.BR ld.so (8).
diff --git a/raw/man1/let.1 b/raw/man1/let.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/let.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/ln.1 b/raw/man1/ln.1
new file mode 100644
index 0000000..406eb02
--- /dev/null
+++ b/raw/man1/ln.1
@@ -0,0 +1,99 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH LN "1" "October 2003" "ln (coreutils) 5.0" FSF
+.SH NAME
+ln \- make links between files
+.SH SYNOPSIS
+.B ln
+[\fIOPTION\fR]... \fITARGET \fR[\fILINK_NAME\fR]
+.br
+.B ln
+[\fIOPTION\fR]... \fITARGET\fR... \fIDIRECTORY\fR
+.br
+.B ln
+[\fIOPTION\fR]... \fI--target-directory=DIRECTORY TARGET\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create a link to the specified TARGET with optional LINK_NAME.
+If LINK_NAME is omitted, a link with the same basename as the TARGET is
+created in the current directory.  When using the second form with more
+than one TARGET, the last argument must be a directory;  create links
+in DIRECTORY to each TARGET.  Create hard links by default, symbolic
+links with \fB\-\-symbolic\fR.  When creating hard links, each TARGET must exist.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-d\fR, \fB\-F\fR, \fB\-\-directory\fR
+hard link directories (super-user only)
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+remove existing destination files
+.TP
+\fB\-n\fR, \fB\-\-no\-dereference\fR
+treat destination that is a symlink to a
+directory as if it were a normal file
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt whether to remove destinations
+.TP
+\fB\-s\fR, \fB\-\-symbolic\fR
+make symbolic links instead of hard links
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+specify the DIRECTORY in which to create
+the links
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+print name of each file before linking
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable.  Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.SH AUTHOR
+Written by Mike Parker and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B ln
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B ln
+programs are properly installed at your site, the command
+.IP
+.B info ln
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/loadkeys.1 b/raw/man1/loadkeys.1
new file mode 100644
index 0000000..d188238
--- /dev/null
+++ b/raw/man1/loadkeys.1
@@ -0,0 +1,153 @@
+.\" @(#)loadkeys.1
+.TH LOADKEYS 1 "6 Feb 1994"
+.SH NAME
+loadkeys \- load keyboard translation tables
+.SH SYNOPSIS
+.B loadkeys
+[
+.I -c --clearcompose
+] [
+.I -d --default
+] [
+.I -h --help
+] [
+.I -m --mktable
+] [
+.I -s --clearstrings
+] [
+.I -v --verbose
+] [
+.I filename...
+]
+.LP
+.SH DESCRIPTION
+.IX "loadkeys command" "" "\fLloadkeys\fR command"  
+.LP
+The program
+.B loadkeys
+reads the file or files specified by
+.IR filename... .
+Its main purpose is to load the kernel keymap for the console.
+.SH "RESET TO DEFAULT"
+If the
+.I -d
+(or
+.I --default
+) option is given,
+.B loadkeys
+loads a default keymap, probably the file
+.I defkeymap.map
+either in
+.I //lib/kbd/keymaps
+or in
+.IR /usr/src/linux/drivers/char .
+(Probably the former was user-defined, while the latter
+is a qwerty keyboard map for PCs - maybe not what was desired.)
+Sometimes, with a strange keymap loaded (with the minus on
+some obscure unknown modifier combination) it is easier to
+type `loadkeys defkeymap'.
+.SH "LOAD KERNEL KEYMAP"
+The main function of
+.B loadkeys
+is to load or modify the keyboard driver's translation tables.
+When specifying the file names, standard input can be denoted
+by dash (-). If no file is specified, the data is read from
+the standard input.
+.LP
+For many countries and keyboard types appropriate keymaps
+are available already, and a command like `loadkeys uk' might
+do what you want. On the other hand, it is easy to construct
+one's own keymap. The user has to tell what symbols belong
+to each key. She can find the keycode for a key by use of
+.BR showkey (1),
+while the keymap format is given in
+.BR keymaps (5)
+and can also be seen from the output of
+.BR dumpkeys (1).
+.SH "LOAD KERNEL ACCENT TABLE"
+If the input file does not contain any compose key definitions,
+the kernel accent table is left unchanged, unless the
+.I -c
+(or
+.I --clearcompose
+) option is given, in which case the kernel accent table is emptied.
+If the input file does contain compose key definitions, then all
+old definitions are removed, and replaced by the specified new entries.
+The kernel accent table is a sequence of (by default 68) entries
+describing how dead diacritical signs and compose keys behave.
+For example, a line
+.LP
+.RS
+compose ',' 'c' to ccedilla
+.RE
+.LP
+means that <ComposeKey><,><c> must be combined to <ccedilla>.
+The current content of this table can be see
+using `dumpkeys --compose-only'.
+.SH "LOAD KERNEL STRING TABLE"
+The option
+.I -s
+(or
+.I --clearstrings
+) clears the kernel string table. If this option is not given,
+.B loadkeys
+will only add or replace strings, not remove them.
+(Thus, the option \-s is required to reach a well-defined state.)
+The kernel string table is a sequence of strings
+with names like F31. One can make function key F5 (on
+an ordinary PC keyboard) produce the text `Hello!',
+and Shift+F5 `Goodbye!' using lines
+.LP
+.RS
+keycode 63 = F70 F71
+.br
+string F70 = "Hello!"
+.br
+string F71 = "Goodbye!"
+.RE
+.LP
+in the keymap.
+The default bindings for the function keys are certain
+escape sequences mostly inspired by the VT100 terminal.
+.SH "CREATE KERNEL SOURCE TABLE"
+If the 
+.I -m
+(or
+.I --mktable
+) option is given
+.B loadkeys
+prints to the standard output a file that may be used as
+.I /usr/src/linux\%/drivers\%/char\%/defkeymap.c,
+specifying the default key bindings for a kernel
+(and does not modify the current keymap).
+.SH "OTHER OPTIONS"
+.TP
+.B \-h \-\-help
+.B loadkeys
+prints its version number and a short usage message to the programs
+standard error output and exits.
+.SH WARNING
+Note that anyone having read access to
+.B /dev/console
+can run
+.B loadkeys
+and thus change the keyboard layout, possibly making it unusable. Note
+that the keyboard translation table is common for all the virtual
+consoles, so any changes to the keyboard bindings affect all the virtual
+consoles simultaneously.
+.LP
+Note that because the changes affect all the virtual consoles, they also
+outlive your session. This means that even at the login prompt the key
+bindings may not be what the user expects.
+.SH FILES
+.TP
+.BI //lib/kbd/keymaps
+default directory for keymaps
+.LP
+.TP
+.BI /usr/src/linux/drivers/char/defkeymap.map
+default kernel keymap
+.SH "SEE ALSO"
+.BR dumpkeys (1),
+.BR keymaps (5)
+
diff --git a/raw/man1/local.1 b/raw/man1/local.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/local.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/lockfile.1 b/raw/man1/lockfile.1
new file mode 100644
index 0000000..a709dad
--- /dev/null
+++ b/raw/man1/lockfile.1
@@ -0,0 +1,290 @@
+.\"if n .pl +(135i-\n(.pu)
+.de Id
+.ds Rv \\$3
+.ds Dt \\$4
+..
+.Id $Id: lockfile.1,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH LOCKFILE 1 \*(Dt BuGless
+.rn SH Sh
+.de SH
+.br
+.ne 11
+.Sh "\\$1"
+..
+.rn SS Ss
+.de SS
+.br
+.ne 10
+.Ss "\\$1"
+..
+.rn TP Tp
+.de TP
+.br
+.ne 9
+.Tp \\$1
+..
+.rn RS Rs
+.de RS
+.na
+.nf
+.Rs
+..
+.rn RE Re
+.de RE
+.Re
+.fi
+.ad
+..
+.de Sx
+.PP
+.ne \\$1
+.RS
+..
+.de Ex
+.RE
+.PP
+..
+.na
+.SH NAME
+lockfile \- conditional semaphore-file creator
+.SH SYNOPSIS
+.B lockfile
+.I "\fB\-\fPsleeptime"
+|
+.I "\fB\-r \fPretries"
+|
+.if n .ti +0.5i
+.I "\fB\-l \fPlocktimeout"
+|
+.I "\fB\-s \fPsuspend"
+|
+.B "\-!"
+|
+.B "\-ml"
+|
+.B "\-mu"
+|
+.I filename
+\&.\|.\|.
+.ad
+.SH DESCRIPTION
+.B lockfile
+can be used to create one or more
+.I semaphore
+.IR files .
+If lockfile can't create all the specified files (in the specified order),
+it waits
+.I sleeptime
+(defaults to 8) seconds and retries the last file that didn't
+succeed.  You can specify the number of
+.I retries
+to do until failure is returned.
+If the number of
+.I retries
+is \-1 (default, i.e.,
+.BR \-r\-1 )
+lockfile will retry forever.
+.PP
+If the number of
+.I retries
+expires before all files have been created, lockfile returns failure and
+removes all the files it created up till that point.
+.PP
+Using lockfile as the condition of a loop in a shell script can be done
+easily by using the
+.B \-!
+flag to invert the exit status.  To prevent infinite loops, failures
+for any reason other than the lockfile already existing are not
+inverted to success but rather are still returned as failures.
+.PP
+All flags can be specified anywhere on the command line, they will be
+processed when encountered.  The command line is simply parsed from
+left to right.
+.PP
+All files created by lockfile will be read-only, and therefore
+will have to be removed with
+.B rm
+.BR \-f .
+.PP
+If you specify a
+.I locktimeout
+then a lockfile will be removed by force after locktimeout seconds have
+passed since the lockfile was last modified/created (most likely by some
+other program that unexpectedly died a long time ago, and hence could not clean
+up any leftover lockfiles).  Lockfile is clock skew immune.  After a lockfile
+has been removed by force, a suspension of
+.I suspend
+seconds (defaults to 16) is taken into account, in order to prevent
+the inadvertent immediate removal of any newly created lockfile by another
+program (compare
+.BR SUSPEND
+in
+.BR procmail (1)).
+.SS "Mailbox locks"
+If the permissions on the system mail spool directory allow it, or if lockfile
+is suitably setgid, it will be able to lock and unlock your system mailbox by
+using the options
+.B "\-ml"
+and
+.B "\-mu"
+respectively.
+.SH EXAMPLES
+Suppose you want to make sure that access to the file "important" is
+serialised, i.e., no more than one program or shell script should be allowed
+to access it.  For simplicity's sake, let's suppose that it is a shell
+script.  In this case you could solve it like this:
+.RS
+\&.\|.\|.
+lockfile important.lock
+\&.\|.\|.
+access_"important"_to_your_hearts_content
+\&.\|.\|.
+rm \-f important.lock
+\&.\|.\|.
+.RE
+Now if all the scripts that access "important" follow this guideline, you
+will be assured that at most one script will be executing between the
+`lockfile' and the `rm' commands.
+.SH ENVIRONMENT
+.TP 2.3i
+.B LOGNAME
+used as a hint to determine the invoker's loginname
+.SH FILES
+.TP 2.3i
+.B /etc/passwd
+to verify and/or correct the invoker's loginname (and to find out his HOME
+directory, if needed)
+.TP
+.B /var/spool/mail/$LOGNAME.lock
+lockfile for the system mailbox, the environment variables present in here
+will not be taken from the environment, but will be determined by looking
+in /etc/passwd
+.SH "SEE ALSO"
+.na
+.nh
+.BR rm (1),
+.BR mail (1),
+.BR binmail (1),
+.BR sendmail (8),
+.BR procmail (1)
+.hy
+.ad
+.SH DIAGNOSTICS
+.TP 2.3i
+Filename too long, .\|.\|.
+Use shorter filenames.
+.TP
+Forced unlock denied on "x"
+No write permission in the directory where lockfile "x" resides, or more than
+one lockfile trying to force a lock at exactly the same time.
+.TP
+Forcing lock on "x"
+Lockfile "x" is going to be removed by force because of a timeout
+(compare
+.BR LOCKTIMEOUT
+in
+.BR procmail (1)).
+.TP
+Out of memory, .\|.\|.
+The system is out of swap space.
+.TP
+Signal received, .\|.\|.
+Lockfile will remove anything it created till now and terminate.
+.TP
+Sorry, .\|.\|.
+The
+.I retries
+limit has been reached.
+.TP
+Truncating "x" and retrying lock
+"x" does not seem to be a valid filename.
+.TP
+Try praying, .\|.\|.
+Missing subdirectories or insufficient privileges.
+.SH BUGS
+Definitely less than one.
+.SH WARNINGS
+The behavior of the
+.B \-!
+flag, while useful, is not necessarily intuitive or consistent.  When
+testing lockfile's return value, shell script writers should consider
+carefully whether they want to use the
+.B \-!
+flag, simply reverse the test, or do a switch on the exact exitcode.
+In general, the
+.B \-!
+flag should only be used when lockfile is the conditional of a loop.
+.SH MISCELLANEOUS
+Lockfile is NFS-resistant and eight-bit clean.
+.SH NOTES
+Calling up lockfile with the \-h or \-? options will cause
+it to display a command-line help page.  Calling it up with the \-v
+option will cause it to display its version information.
+.PP
+Multiple
+.B \-!
+flags will toggle the return status.
+.PP
+Since flags can occur anywhere on the command line, any filename starting
+with a '-' has to be preceded by './'.
+.PP
+The number of
+.I retries
+will not be reset when any following file is being created (i.e., they are
+simply used up).  It can, however, be reset by specifying
+.RI \-r newretries
+after every file on the command line.
+.PP
+Although files with any name can be used as lockfiles, it is common practice
+to use the extension `.lock' to lock mailfolders (it is appended to the
+mailfolder name).  In case one does not want to have to worry about too long
+filenames and does not have to conform to any other lockfilename convention,
+then an excellent way to generate a lockfilename corresponding to some already
+existing file is by taking the prefix `lock.' and appending the i-node number
+of the file which is to be locked.
+.Sh SOURCE
+This program is part of the
+.I procmail mail-processing-package
+(v3.22) available at http://www.procmail.org/ or
+ftp.procmail.org in
+.BR pub/procmail/ .
+.Sh MAILINGLIST
+There exists a mailinglist for questions relating to any program in the
+procmail package:
+.RS
+<procmail-users at procmail.org>
+.RS
+for submitting questions/answers.
+.RE
+<procmail-users-request at procmail.org>
+.RS
+for subscription requests.
+.RE
+.PP
+.RE
+If you would like to stay informed about new versions and official patches send
+a subscription request to
+.RS
+procmail-announce-request at procmail.org
+.RE
+(this is a readonly list).
+.SH AUTHORS
+Stephen R. van den Berg
+.RS
+<srb at cuci.nl>
+.RE
+Philip A. Guenther
+.RS
+<guenther at sendmail.com>
+.RE
+.\".if n .pl -(\n(.tu-1i)
+.rm SH
+.rn Sh SH
+.rm SS
+.rn Ss SS
+.rm TP
+.rn Tp TP
+.rm RS
+.rn Rs RS
+.rm RE
+.rn Re RE
diff --git a/raw/man1/logname.1 b/raw/man1/logname.1
new file mode 100644
index 0000000..607b73c
--- /dev/null
+++ b/raw/man1/logname.1
@@ -0,0 +1,38 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH LOGNAME "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+logname \- print user\'s login name
+.SH SYNOPSIS
+.B logname
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the name of the current user.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by FIXME: unknown.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B logname
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B logname
+programs are properly installed at your site, the command
+.IP
+.B info logname
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/logout.1 b/raw/man1/logout.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/logout.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/ls.1 b/raw/man1/ls.1
new file mode 100644
index 0000000..0235d11
--- /dev/null
+++ b/raw/man1/ls.1
@@ -0,0 +1,233 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH LS "1" "October 2003" "ls (coreutils) 5.0" FSF
+.SH NAME
+ls \- list directory contents
+.SH SYNOPSIS
+.B ls
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+List information about the FILEs (the current directory by default).
+Sort entries alphabetically if none of \fB\-cftuSUX\fR nor \fB\-\-sort\fR.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+do not hide entries starting with .
+.TP
+\fB\-A\fR, \fB\-\-almost\-all\fR
+do not list implied . and ..
+.TP
+\fB\-\-author\fR
+print the author of each file
+.TP
+\fB\-b\fR, \fB\-\-escape\fR
+print octal escapes for nongraphic characters
+.TP
+\fB\-\-block\-size\fR=\fISIZE\fR
+use SIZE-byte blocks
+.TP
+\fB\-B\fR, \fB\-\-ignore\-backups\fR
+do not list implied entries ending with ~
+.TP
+\fB\-c\fR
+with \fB\-lt\fR: sort by, and show, ctime (time of last
+modification of file status information)
+with \fB\-l\fR: show ctime and sort by name
+otherwise: sort by ctime
+.TP
+\fB\-C\fR
+list entries by columns
+.TP
+\fB\-\-color\fR[=\fIWHEN\fR]
+control whether color is used to distinguish file
+types.  WHEN may be `never', `always', or `auto'
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+list directory entries instead of contents,
+and do not dereference symbolic links
+.TP
+\fB\-D\fR, \fB\-\-dired\fR
+generate output designed for Emacs' dired mode
+.TP
+\fB\-f\fR
+do not sort, enable \fB\-aU\fR, disable \fB\-lst\fR
+.TP
+\fB\-F\fR, \fB\-\-classify\fR
+append indicator (one of */=@|) to entries
+.TP
+\fB\-\-format\fR=\fIWORD\fR
+across \fB\-x\fR, commas \fB\-m\fR, horizontal \fB\-x\fR, long \fB\-l\fR,
+single-column \fB\-1\fR, verbose \fB\-l\fR, vertical \fB\-C\fR
+.TP
+\fB\-\-full\-time\fR
+like \fB\-l\fR \fB\-\-time\-style\fR=\fIfull\-iso\fR
+.TP
+\fB\-g\fR
+like \fB\-l\fR, but do not list owner
+.TP
+\fB\-G\fR, \fB\-\-no\-group\fR
+inhibit display of group information
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+print sizes in human readable format (e.g., 1K 234M 2G)
+.TP
+\fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-H\fR, \fB\-\-dereference\-command\-line\fR
+follow symbolic links listed on the command line
+.TP
+\fB\-\-dereference\-command\-line\-symlink\-to\-dir\fR
+follow each command line symbolic link
+.IP
+that points to a directory
+.TP
+\fB\-\-indicator\-style\fR=\fIWORD\fR append indicator with style WORD to entry names:
+none (default), classify (-F), file-type (-p)
+.TP
+\fB\-i\fR, \fB\-\-inode\fR
+print index number of each file
+.TP
+\fB\-I\fR, \fB\-\-ignore\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR
+use a long listing format
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+when showing file information for a symbolic
+link, show information for the file the link
+references rather than for the link itself
+.TP
+\fB\-m\fR
+fill width with a comma separated list of entries
+.TP
+\fB\-n\fR, \fB\-\-numeric\-uid\-gid\fR
+like \fB\-l\fR, but list numeric UIDs and GIDs
+.TP
+\fB\-N\fR, \fB\-\-literal\fR
+print raw entry names (don't treat e.g. control
+characters specially)
+.TP
+\fB\-o\fR
+like \fB\-l\fR, but do not list group information
+.TP
+\fB\-p\fR, \fB\-\-file\-type\fR
+append indicator (one of /=@|) to entries
+.TP
+\fB\-q\fR, \fB\-\-hide\-control\-chars\fR
+print ? instead of non graphic characters
+.TP
+\fB\-\-show\-control\-chars\fR
+show non graphic characters as-is (default
+unless program is `ls' and output is a terminal)
+.TP
+\fB\-Q\fR, \fB\-\-quote\-name\fR
+enclose entry names in double quotes
+.TP
+\fB\-\-quoting\-style\fR=\fIWORD\fR
+use quoting style WORD for entry names:
+literal, locale, shell, shell-always, c, escape
+.TP
+\fB\-r\fR, \fB\-\-reverse\fR
+reverse order while sorting
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+list subdirectories recursively
+.TP
+\fB\-s\fR, \fB\-\-size\fR
+print size of each file, in blocks
+.TP
+\fB\-S\fR
+sort by file size
+.TP
+\fB\-\-sort\fR=\fIWORD\fR
+extension \fB\-X\fR, none \fB\-U\fR, size \fB\-S\fR, time \fB\-t\fR,
+version \fB\-v\fR
+.IP
+status \fB\-c\fR, time \fB\-t\fR, atime \fB\-u\fR, access \fB\-u\fR, use \fB\-u\fR
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+show time as WORD instead of modification time:
+atime, access, use, ctime or status; use
+specified time as sort key if \fB\-\-sort\fR=\fItime\fR
+.TP
+\fB\-\-time\-style\fR=\fISTYLE\fR
+show times using style STYLE:
+full-iso, long-iso, iso, locale, +FORMAT
+.IP
+FORMAT is interpreted like `date'; if FORMAT is
+FORMAT1<newline>FORMAT2, FORMAT1 applies to
+non-recent files and FORMAT2 to recent files;
+if STYLE is prefixed with `posix-', STYLE
+takes effect only outside the POSIX locale
+.TP
+\fB\-t\fR
+sort by modification time
+.TP
+\fB\-T\fR, \fB\-\-tabsize\fR=\fICOLS\fR
+assume tab stops at each COLS instead of 8
+.TP
+\fB\-u\fR
+with \fB\-lt\fR: sort by, and show, access time
+with \fB\-l\fR: show access time and sort by name
+otherwise: sort by access time
+.TP
+\fB\-U\fR
+do not sort; list entries in directory order
+.TP
+\fB\-v\fR
+sort by version
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fICOLS\fR
+assume screen width instead of current value
+.TP
+\fB\-x\fR
+list entries by lines instead of by columns
+.TP
+\fB\-X\fR
+sort alphabetically by entry extension
+.TP
+\fB\-1\fR
+list one file per line
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1,000,000, M 1,048,576, and so on for G, T, P, E, Z, Y.
+.PP
+By default, color is not used to distinguish types of files.  That is
+equivalent to using \fB\-\-color\fR=\fInone\fR.  Using the \fB\-\-color\fR option without the
+optional WHEN argument is equivalent to using \fB\-\-color\fR=\fIalways\fR.  With
+\fB\-\-color\fR=\fIauto\fR, color codes are output only if standard output is connected
+to a terminal (tty).
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B ls
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B ls
+programs are properly installed at your site, the command
+.IP
+.B info ls
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/lsattr.1 b/raw/man1/lsattr.1
new file mode 100644
index 0000000..20f99c3
--- /dev/null
+++ b/raw/man1/lsattr.1
@@ -0,0 +1,44 @@
+.\" -*- nroff -*-
+.TH LSATTR 1 "July 2003" "E2fsprogs version 1.34"
+.SH NAME
+lsattr \- list file attributes on a Linux second extended file system
+.SH SYNOPSIS
+.B lsattr
+[
+.B \-RVadv
+]
+[
+.I files...
+]
+.SH DESCRIPTION
+.B lsattr
+lists the file attributes on a second extended file system.  See
+.BR chattr (1)
+for a description of the attributes and what they mean.
+.SH OPTIONS
+.TP
+.B \-R
+Recursively list attributes of directories and their contents.
+.TP
+.B \-V
+Display the program version.
+.TP
+.B \-a
+List all files in directories, including files that start with `.'.
+.TP
+.B \-d
+List directories like other files, rather than listing their contents.
+.TP
+.B \-v
+List the file's version/generation number.
+.SH AUTHOR
+.B lsattr
+was written by Remy Card <Remy.Card at linux.org>.
+.SH BUGS
+There are none :-).
+.SH AVAILABILITY
+.B lsattr
+is part of the e2fsprogs package and is available from
+http://e2fsprogs.sourceforge.net.
+.SH SEE ALSO
+.BR chattr (1)
diff --git a/raw/man1/mail.1 b/raw/man1/mail.1
new file mode 100644
index 0000000..3b2ed03
--- /dev/null
+++ b/raw/man1/mail.1
@@ -0,0 +1,1041 @@
+.\"	$OpenBSD: mail.1,v 1.5 1994/06/29 05:09:32 deraadt Exp $
+.\" Copyright (c) 1980, 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)mail.1	8.2 (Berkeley) 12/30/93
+.\"
+.Dd December 30, 1993
+.Dt MAIL 1
+.Os BSD 4
+.Sh NAME
+.Nm mail
+.Nd send and receive mail
+.Sh SYNOPSIS
+.Nm mail
+.Op Fl iInv
+.Op Fl s Ar subject
+.Op Fl c Ar cc-addr
+.Op Fl b Ar bcc-addr
+.Ar to-addr...
+.Nm mail
+.Op Fl iInNv
+.Fl f
+.Op Ar name
+.Nm mail
+.Op Fl iInNv
+.Op Fl u Ar user
+.Sh INTRODUCTION
+.Nm Mail
+is an intelligent mail processing system, which has
+a command syntax reminiscent of
+.Xr \&ed 1
+with lines replaced by messages.
+.Pp
+.Bl -tag -width flag
+.It Fl v
+Verbose mode.
+The details of
+delivery are displayed on the user's terminal.
+.It Fl i
+Ignore tty interrupt signals.
+This is
+particularly useful when using
+.Nm mail
+on noisy phone lines.
+.It Fl I
+Forces mail to run in interactive mode even when
+input isn't a terminal.
+In particular, the
+.Sq Ic \&~
+special
+character when sending mail is only active in interactive mode.
+.It Fl n
+Inhibits reading
+.Pa /etc/mail.rc
+upon startup.
+.It Fl N
+Inhibits the initial display of message headers
+when reading mail or editing a mail folder.
+.It Fl s
+Specify subject on command line
+(only the first argument after the
+.Fl s
+flag is used as a subject; be careful to quote subjects
+containing spaces.)
+.It Fl c
+Send carbon copies to
+.Ar list
+of users.
+.It Fl b
+Send blind carbon copies to
+.Ar list .
+List should be a comma-separated list of names.
+.It Fl f
+Read in the contents of your
+.Ar mbox
+(or the specified file)
+for processing; when you
+.Ar quit  ,
+.Nm mail
+writes undeleted messages back to this file.
+.It Fl u
+Is equivalent to:
+.Pp
+.Dl mail -f /var/spool/mail/user
+.El
+.Ss Sending mail
+To send a message to one or more people,
+.Nm mail
+can be invoked with arguments which are the names of people to
+whom the mail will be sent.
+You are then expected to type in
+your message, followed
+by an
+.Sq Li control\-D
+at the beginning of a line.
+The section below
+.Ar Replying to or originating mail ,
+describes some features of
+.Nm mail
+available to help you compose your letter.
+.Pp
+.Ss Reading mail
+In normal usage
+.Nm mail
+is given no arguments and checks your mail out of the
+post office, then
+prints out a one line header of each message found.
+The current message is initially the first message (numbered 1)
+and can be printed using the
+.Ic print
+command (which can be abbreviated
+.Ql Ic p ) .
+You can move among the messages much as you move between lines in
+.Xr \&ed 1 ,
+with the commands
+.Ql Ic \&+
+and
+.Ql Ic \&\-
+moving backwards and forwards, and
+simple numbers.
+.Pp
+.Ss Disposing of mail.
+After examining a message you can
+.Ic delete
+.Ql Ic d )
+the message or
+.Ic reply
+.Ql Ic r )
+to it.
+Deletion causes the
+.Nm mail
+program to forget about the message.
+This is not irreversible; the message can be
+.Ic undeleted
+.Ql Ic u )
+by giving its number, or the
+.Nm mail
+session can be aborted by giving the
+.Ic exit
+.Ql Ic x )
+command.
+Deleted messages will, however, usually disappear never to be seen again.
+.Pp
+.Ss Specifying messages
+Commands such as
+.Ic print
+and
+.Ic delete
+can be given a list of message numbers as arguments to apply
+to a number of messages at once.
+Thus
+.Dq Li delete 1 2
+deletes messages 1 and 2, while
+.Dq Li delete 1\-5
+deletes messages 1 through 5.
+The special name
+.Ql Li \&*
+addresses all messages, and
+.Ql Li \&$
+addresses
+the last message; thus the command
+.Ic top
+which prints the first few lines of a message could be used in
+.Dq Li top \&*
+to print the first few lines of all messages.
+.Pp
+.Ss Replying to or originating mail.
+You can use the
+.Ic reply
+command to
+set up a response to a message, sending it back to the
+person who it was from.
+Text you then type in, up to an end-of-file,
+defines the contents of the message.
+While you are composing a message,
+.Nm mail
+treats lines beginning with the character
+.Ql Ic \&~
+specially.
+For instance, typing
+.Ql Ic \&~m
+(alone on a line) will place a copy
+of the current message into the response right shifting it by a tabstop
+(see
+.Em indentprefix
+variable, below).
+Other escapes will set up subject fields, add and delete recipients
+to the message and allow you to escape to an editor to revise the
+message or to a shell to run some commands.
+(These options
+are given in the summary below.)
+.Pp
+.Ss Ending a mail processing session.
+You can end a
+.Nm mail
+session with the
+.Ic quit
+.Ql Ic q )
+command.
+Messages which have been examined go to your
+.Ar mbox
+file unless they have been deleted in which case they are discarded.
+Unexamined messages go back to the post office.
+(See the
+.Fl f
+option above).
+.Pp
+.Ss Personal and systemwide distribution lists.
+It is also possible to create a personal distribution lists so that,
+for instance, you can send mail to
+.Dq Li cohorts
+and have it go
+to a group of people.
+Such lists can be defined by placing a line like
+.Pp
+.Dl alias cohorts bill ozalp jkf mark kridle at ucbcory
+.Pp
+in the file
+.Pa \&.mailrc
+in your home directory.
+The current list of such aliases can be displayed with the
+.Ic alias
+command in
+.Nm mail  .
+System wide distribution lists can be created by editing
+.Pa /etc/aliases ,
+see
+.Xr aliases  5
+and
+.Xr sendmail  8  ;
+these are kept in a different syntax.
+In mail you send, personal aliases will be expanded in mail sent
+to others so that they will be able to
+.Ic reply
+to the recipients.
+System wide
+.Ic aliases
+are not expanded when the mail is sent,
+but any reply returned to the machine will have the system wide
+alias expanded as all mail goes through
+.Xr sendmail  .
+.Pp
+.Ss Network mail (ARPA, UUCP, Berknet)
+See
+.Xr mailaddr 7
+for a description of network addresses.
+.Pp
+.Nm Mail
+has a number of options which can be set in the
+.Pa .mailrc
+file to alter its behavior; thus
+.Dq Li set askcc
+enables the
+.Ar askcc
+feature.
+(These options are summarized below.)
+.Sh SUMMARY
+(Adapted from the `Mail Reference Manual')
+.Pp
+Each command is typed on a line by itself, and may take arguments
+following the command word.
+The command need not be typed in its
+entirety \- the first command which matches the typed prefix is used.
+For commands which take message lists as arguments, if no message
+list is given, then the next message forward which satisfies the
+command's requirements is used.
+If there are no messages forward of
+the current message, the search proceeds backwards, and if there are no
+good messages at all,
+.Nm mail
+types
+.Dq Li No applicable messages
+and
+aborts the command.
+.Bl -tag -width delete
+.It Ic \&\-
+Print out the preceding message.
+If given a numeric
+argument
+.Ar n  ,
+goes to the
+.Ar n Ns 'th
+previous message and prints it.
+.It Ic \&?
+Prints a brief summary of commands.
+.It Ic \&!
+Executes the shell
+(see
+.Xr sh 1
+and
+.Xr csh 1 )
+command which follows.
+.It Ic Print
+.Pq Ic P
+Like
+.Ic print
+but also prints out ignored header fields.
+See also
+.Ic print ,
+.Ic ignore
+and
+.Ic retain .
+.It Ic Reply
+.Pq Ic R
+Reply to originator.
+Does not reply to other
+recipients of the original message.
+.It Ic Type
+.Pq Ic T
+Identical to the
+.Ic Print
+command.
+.It Ic alias
+.Pq Ic a
+With no arguments, prints out all currently-defined aliases.
+With one
+argument, prints out that alias.
+With more than one argument, creates
+a new alias or changes an old one.
+.It Ic alternates
+.Pq Ic alt
+The
+.Ic alternates
+command is useful if you have accounts on several machines.
+It can be used to inform
+.Nm mail
+that the listed addresses are really you.
+When you
+.Ic reply
+to messages,
+.Nm mail
+will not send a copy of the message to any of the addresses
+listed on the
+.Ic alternates
+list.
+If the
+.Ic alternates
+command is given with no argument, the current set of alternate
+names is displayed.
+.It Ic chdir
+.Pq Ic c
+Changes the user's working directory to that specified, if given.
+If
+no directory is given, then changes to the user's login directory.
+.It Ic copy
+.Pq Ic co
+The
+.Ic copy
+command does the same thing that
+.Ic save
+does, except that it does not mark the messages it
+is used on for deletion when you quit.
+.It Ic delete
+.Pq Ic d
+Takes a list of messages as argument and marks them all as deleted.
+Deleted messages will not be saved in
+.Ar mbox  ,
+nor will they be available for most other commands.
+.It Ic dp
+(also
+.Ic dt )
+Deletes the current message and prints the next message.
+If there is no next message,
+.Nm mail
+says
+.Dq Li "at EOF" .
+.It Ic edit
+.Pq Ic e
+Takes a list of messages and points the text editor at each one in
+turn.
+On return from the editor, the message is read back in.
+.It Ic exit
+.Pf ( Ic ex
+or
+.Ic x )
+Effects an immediate return to the Shell without
+modifying the user's system mailbox, his
+.Ar mbox
+file, or his edit file in
+.Fl f  .
+.It Ic file
+.Pq Ic fi
+The same as
+.Ic folder  .
+.It Ic folders
+List the names of the folders in your folder directory.
+.It Ic folder
+.Pq Ic fo
+The
+.Ic folder
+command switches to a new mail file or folder.
+With no
+arguments, it tells you which file you are currently reading.
+If you give it an argument, it will write out changes (such
+as deletions) you have made in the current file and read in
+the new file.
+Some special conventions are recognized for
+the name.
+# means the previous file, % means your system
+mailbox, %user means user's system mailbox, & means
+your
+.Ar mbox
+file, and
+\&+\&folder means a file in your folder
+directory.
+.It Ic from
+.Pq Ic f
+Takes a list of messages and prints their message headers.
+.It Ic headers
+.Pq Ic h
+Lists the current range of headers, which is an 18\-message group.
+If
+a
+.Ql \&+
+argument is given, then the next 18\-message group is printed, and if
+a
+.Ql \&\-
+argument is given, the previous 18\-message group is printed.
+.It Ic help
+A synonym for
+.Ic \&?
+.It Ic hold
+.Pf ( Ic ho ,
+also
+.Ic preserve )
+Takes a message list and marks each
+message therein to be saved in the
+user's system mailbox instead of in
+.Ar mbox  .
+Does not override the
+.Ic delete
+command.
+.It Ic ignore
+Add the list of header fields named to the
+.Ar ignored list .
+Header fields in the ignore list are not printed
+on your terminal when you print a message.
+This
+command is very handy for suppression of certain machine-generated
+header fields.
+The
+.Ic Type
+and
+.Ic Print
+commands can be used to print a message in its entirety, including
+ignored fields.
+If
+.Ic ignore
+is executed with no arguments, it lists the current set of
+ignored fields.
+.It Ic mail
+.Pq Ic m
+Takes as argument login names and distribution group names and sends
+mail to those people.
+.It Ic mbox
+Indicate that a list of messages be sent to
+.Ic mbox
+in your home directory when you quit.
+This is the default
+action for messages if you do
+.Em not
+have the
+.Ic hold
+option set.
+.It Ic next
+.Pq Ic n
+like
+.Ic \&+
+or
+.Tn CR )
+Goes to the next message in sequence and types it.
+With an argument list, types the next matching message.
+.It Ic preserve
+.Pq Ic pre
+A synonym for
+.Ic hold  .
+.It Ic print
+.Pq Ic p
+Takes a message list and types out each message on the user's terminal.
+.It Ic quit
+.Pq Ic q
+Terminates the session, saving all undeleted, unsaved messages in
+the user's
+.Ar mbox
+file in his login directory, preserving all messages marked with
+.Ic hold
+or
+.Ic preserve
+or never referenced
+in his system mailbox, and removing all other messages from his system
+mailbox.
+If new mail has arrived during the session, the message
+.Dq Li "You have new mail"
+is given.
+If given while editing a
+mailbox file with the
+.Fl f
+flag, then the edit file is rewritten.
+A return to the Shell is
+effected, unless the rewrite of edit file fails, in which case the user
+can escape with the
+.Ic exit
+command.
+.It Ic reply
+.Pq Ic r
+Takes a message list and sends mail to the sender and all
+recipients of the specified message.
+The default message must not be deleted.
+.It Ic respond
+A synonym for
+.Ic reply  .
+.It Ic retain
+Add the list of header fields named to the
+.Ar retained list
+Only the header fields in the retain list
+are shown on your terminal when you print a message.
+All other header fields are suppressed.
+The
+.Ic Type
+and
+.Ic Print
+commands can be used to print a message in its entirety.
+If
+.Ic retain
+is executed with no arguments, it lists the current set of
+retained fields.
+.It Ic save
+.Pq Ic s
+Takes a message list and a filename and appends each message in
+turn to the end of the file.
+The filename in quotes, followed by the line
+count and character count is echoed on the user's terminal.
+.It Ic set
+.Pq Ic se
+With no arguments, prints all variable values.
+Otherwise, sets
+option.
+Arguments are of the form
+.Ar option=value
+(no space before or after =) or
+.Ar option .
+Quotation marks may be placed around any part of the assignment statement to
+quote blanks or tabs, i.e.
+.Dq Li "set indentprefix=\*q->\*q"
+.It Ic saveignore
+.Ic Saveignore
+is to
+.Ic save
+what
+.Ic ignore
+is to
+.Ic print
+and
+.Ic type  .
+Header fields thus marked are filtered out when
+saving a message by
+.Ic save
+or when automatically saving to
+.Ar mbox  .
+.It Ic saveretain
+.Ic Saveretain
+is to
+.Ic save
+what
+.Ic retain
+is to
+.Ic print
+and
+.Ic type  .
+Header fields thus marked are the only ones saved
+with a message when saving by
+.Ic save
+or when automatically saving to
+.Ar mbox  .
+.Ic Saveretain
+overrides
+.Ic saveignore  .
+.It Ic shell
+.Pq Ic sh
+Invokes an interactive version of the shell.
+.It Ic size
+Takes a message list and prints out the size in characters of each
+message.
+.It Ic source
+The
+.Ic source
+command reads
+commands from a file.
+.It Ic top
+Takes a message list and prints the top few lines of each.
+The number of
+lines printed is controlled by the variable
+.Ic toplines
+and defaults to five.
+.It Ic type
+.Pq Ic t
+A synonym for
+.Ic print  .
+.It Ic unalias
+Takes a list of names defined by
+.Ic alias
+commands and discards the remembered groups of users.
+The group names
+no longer have any significance.
+.It Ic undelete
+.Pq Ic u
+Takes a message list and marks each message as
+.Ic not
+being deleted.
+.It Ic unread
+.Pq Ic U
+Takes a message list and marks each message as
+.Ic not
+having been read.
+.It Ic unset
+Takes a list of option names and discards their remembered values;
+the inverse of
+.Ic set  .
+.It Ic visual
+.Pq Ic v
+Takes a message list and invokes the display editor on each message.
+.It Ic write
+.Pq Ic w
+Similar to
+.Ic save  ,
+except that
+.Ic only
+the message body
+.Pq Ar without
+the header) is saved.
+Extremely useful for such tasks as sending and receiving source
+program text over the message system.
+.It Ic xit
+.Pq Ic x
+A synonym for
+.Ic exit  .
+.It Ic z
+.Nm Mail
+presents message headers in windowfuls as described under the
+.Ic headers
+command.
+You can move
+.Nm mail Ns 's
+attention forward to the next window with the
+.Ic \&z
+command.
+Also, you can move to the previous window by using
+.Ic \&z\&\-  .
+.El
+.Ss Tilde/Escapes
+.Pp
+Here is a summary of the tilde escapes,
+which are used when composing messages to perform
+special functions.
+Tilde escapes are only recognized at the beginning
+of lines.
+The name
+.Dq Em tilde\ escape
+is somewhat of a misnomer since the actual escape character can be set
+by the option
+.Ic escape .
+.Bl -tag -width Ds
+.It Ic \&~! Ns Ar command
+Execute the indicated shell command, then return to the message.
+.It Ic \&~b Ns Ar name ...
+Add the given names to the list of carbon copy recipients but do not make
+the names visible in the Cc: line ("blind" carbon copy).
+.It Ic \&~c Ns Ar name ...
+Add the given names to the list of carbon copy recipients.
+.It Ic \&~d
+Read the file
+.Dq Pa dead.letter
+from your home directory into the message.
+.It Ic \&~e
+Invoke the text editor on the message collected so far.
+After the
+editing session is finished, you may continue appending text to the
+message.
+.It Ic \&~f Ns Ar messages
+Read the named messages into the message being sent.
+If no messages are specified, read in the current message.
+Message headers currently being ignored (by the
+.Ic ignore
+or
+.Ic retain
+command) are not included.
+.It Ic \&~F Ns Ar messages
+Identical to
+.Ic \&~f ,
+except all message headers are included.
+.It Ic \&~h
+Edit the message header fields by typing each one in turn and allowing
+the user to append text to the end or modify the field by using the
+current terminal erase and kill characters.
+.It Ic \&~m Ns Ar messages
+Read the named messages into the message being sent, indented by a
+tab or by the value of
+.Ar indentprefix  .
+If no messages are specified,
+read the current message.
+Message headers currently being ignored (by the
+.Ic ignore
+or
+.Ic retain
+command) are not included.
+.It Ic \&~M Ns Ar messages
+Identical to
+.Ic \&~m ,
+except all message headers are included.
+.It Ic \&~p
+Print out the message collected so far, prefaced by the message header
+fields.
+.It Ic \&~q
+Abort the message being sent, copying the message to
+.Dq Pa dead.letter
+in your home directory if
+.Ic save
+is set.
+.It Ic \&~r Ns Ar filename
+Read the named file into the message.
+.It Ic \&~s Ns Ar string
+Cause the named string to become the current subject field.
+.It Ic \&~\&t Ns Ar name ...
+Add the given names to the direct recipient list.
+.It Ic \&~\&v
+Invoke an alternate editor (defined by the
+.Ev VISUAL
+option) on the
+message collected so far.
+Usually, the alternate editor will be a
+screen editor.
+After you quit the editor, you may resume appending
+text to the end of your message.
+.It Ic \&~w Ns Ar filename
+Write the message onto the named file.
+.It Ic \&~\&| Ns Ar command
+Pipe the message through the command as a filter.
+If the command gives
+no output or terminates abnormally, retain the original text of the
+message.
+The command
+.Xr fmt 1
+is often used as
+.Ic command
+to rejustify the message.
+.It Ic \&~: Ns Ar mail-command
+Execute the given mail command.
+Not all commands, however, are allowed.
+.It Ic \&~~ Ns Ar string
+Insert the string of text in the message prefaced by a single ~.
+If
+you have changed the escape character, then you should double
+that character in order to send it.
+.El
+.Ss Mail Options
+Options are controlled via
+.Ic set
+and
+.Ic unset
+commands.
+Options may be either binary, in which case it is only
+significant to see whether they are set or not; or string, in which
+case the actual value is of interest.
+The binary options include the following:
+.Bl -tag -width append
+.It Ar append
+Causes messages saved in
+.Ar mbox
+to be appended to the end rather than prepended.
+This should always be set (perhaps in
+.Pa /etc/mail.rc ) .
+.It Ar ask, asksub
+Causes
+.Nm mail
+to prompt you for the subject of each message you send.
+If
+you respond with simply a newline, no subject field will be sent.
+.It Ar askcc
+Causes you to be prompted for additional carbon copy recipients at the
+end of each message.
+Responding with a newline indicates your
+satisfaction with the current list.
+.It Ar askbcc
+Causes you to be prompted for additional blind carbon copy recipients at the
+end of each message.
+Responding with a newline indicates your
+satisfaction with the current list.
+.It Ar autoprint
+Causes the
+.Ic delete
+command to behave like
+.Ic dp
+\- thus, after deleting a message, the next one will be typed
+automatically.
+.It Ar debug
+Setting the binary option
+.Ar debug
+is the same as specifying
+.Fl d
+on the command line and causes
+.Nm mail
+to output all sorts of information useful for debugging
+.Nm mail  .
+.It Ar dot
+The binary option
+.Ar dot
+causes
+.Nm mail
+to interpret a period alone on a line as the terminator
+of a message you are sending.
+.It Ar hold
+This option is used to hold messages in the system mailbox
+by default.
+.It Ar ignore
+Causes interrupt signals from your terminal to be ignored and echoed as
+@'s.
+.It Ar ignoreeof
+An option related to
+.Ar dot
+is
+.Ar ignoreeof
+which makes
+.Nm mail
+refuse to accept a control-d as the end of a message.
+.Ar Ignoreeof
+also applies to
+.Nm mail
+command mode.
+.It Ar metoo
+Usually, when a group is expanded that contains the sender, the sender
+is removed from the expansion.
+Setting this option causes the sender
+to be included in the group.
+.It Ar noheader
+Setting the option
+.Ar noheader
+is the same as giving the
+.Fl N
+flag on the command line.
+.It Ar nosave
+Normally, when you abort a message with two
+.Tn RUBOUT
+(erase or delete)
+.Nm mail
+copies the partial letter to the file
+.Dq Pa dead.letter
+in your home directory.
+Setting the binary option
+.Ar nosave
+prevents this.
+.It Ar Replyall
+Reverses the sense of
+.Ic reply
+and
+.Ic Reply
+commands.
+.It Ar quiet
+Suppresses the printing of the version when first invoked.
+.It Ar searchheaders
+If this option is set, then a message-list specifier in the form ``/x:y''
+will expand to all messages containing the substring ``y'' in the header
+field ``x''.  The string search is case insensitive.
+.It Ar verbose
+Setting the option
+.Ar verbose
+is the same as using the
+.Fl v
+flag on the command line.
+When mail runs in verbose mode,
+the actual delivery of messages is displayed on the user's
+terminal.
+.El
+.Ss Option String Values
+.Bl -tag -width Va
+.It Ev EDITOR
+Pathname of the text editor to use in the
+.Ic edit
+command and
+.Ic \&~e
+escape.
+If not defined, then a default editor is used.
+.It Ev LISTER
+Pathname of the directory lister to use in the
+.Ic folders
+command.
+Default is
+.Pa /bin/ls .
+.It Ev PAGER
+Pathname of the program to use in the
+.Ic more
+command or when
+.Ic crt
+variable is set.
+The default paginator
+.Xr more 1
+is used if this option is not defined.
+.It Ev SHELL
+Pathname of the shell to use in the
+.Ic \&!
+command and the
+.Ic \&~!
+escape.
+A default shell is used if this option is
+not defined.
+.It Ev VISUAL
+Pathname of the text editor to use in the
+.Ic visual
+command and
+.Ic \&~v
+escape.
+.It Va crt
+The valued option
+.Va crt
+is used as a threshold to determine how long a message must
+be before
+.Ev PAGER
+is used to read it.
+If
+.Va crt
+is set without a value,
+then the height of the terminal screen stored in the system
+is used to compute the threshold (see
+.Xr stty 1 ) .
+.It Ar escape
+If defined, the first character of this option gives the character to
+use in the place of ~ to denote escapes.
+.It Ar folder
+The name of the directory to use for storing folders of
+messages.
+If this name begins with a `/',
+.Nm mail
+considers it to be an absolute pathname; otherwise, the
+folder directory is found relative to your home directory.
+.It Ev MBOX
+The name of the
+.Ar mbox
+file.
+It can be the name of a folder.
+The default is
+.Dq Li mbox
+in the user's home directory.
+.It Ar record
+If defined, gives the pathname of the file used to record all outgoing
+mail.
+If not defined, then outgoing mail is not so saved.
+.It Ar indentprefix
+String used by the ``~m'' tilde escape for indenting messages, in place of
+the normal tab character (^I).
+Be sure to quote the value if it contains
+spaces or tabs.
+.It Ar toplines
+If defined, gives the number of lines of a message to be printed out
+with the
+.Ic top
+command; normally, the first five lines are printed.
+.El
+.Sh ENVIRONMENT
+.Nm Mail
+utilizes the
+.Ev HOME,
+.Ev USER,
+.Ev SHELL,
+.Ev DEAD,
+.Ev PAGER,
+.Ev LISTER,
+.Ev EDITOR,
+.Ev VISUAL
+and
+.Ev MBOX
+environment variables.
+.Sh FILES
+.Bl -tag -width /usr/lib/mail.*help -compact
+.It Pa /var/spool/mail/*
+Post office.
+.It ~/mbox
+User's old mail.
+.It ~/.mailrc
+File giving initial mail commands.  Only used if the owner of the file is the
+user running this copy of mail.
+.It Pa /tmp/R*
+Temporary files.
+.It Pa /usr/lib/mail.*help
+Help files.
+.It Pa /etc/mail.rc
+System initialization file.
+.El
+.Sh SEE ALSO
+.Xr fmt 1 ,
+.Xr newaliases 1 ,
+.Xr vacation 1 ,
+.Xr aliases 5 ,
+.Xr mailaddr 7 ,
+.Xr sendmail 8
+and
+.Rs
+.%T "The Mail Reference Manual" .
+.Re
+.Sh HISTORY
+A
+.Nm mail
+command
+appeared in
+.At v6 .
+This man page is derived from
+.%T "The Mail Reference Manual"
+originally written by Kurt Shoens.
+.Sh BUGS
+There are some flags that are not documented here.
+Most are
+not useful to the general user.
+.Pp
+.\" This bug is not the case in this particular distribution.
+.\" Usually, .Nm mail is just a link to .Nm Mail, which can be confusing.
diff --git a/raw/man1/makeinfo.1 b/raw/man1/makeinfo.1
new file mode 100644
index 0000000..75e9fe4
--- /dev/null
+++ b/raw/man1/makeinfo.1
@@ -0,0 +1,188 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH MAKEINFO "1" "June 2003" "makeinfo 4.6" "User Commands"
+.SH NAME
+makeinfo \- translate Texinfo documents
+.SH SYNOPSIS
+.B makeinfo
+[\fIOPTION\fR]... \fITEXINFO-FILE\fR...
+.SH DESCRIPTION
+Translate Texinfo source documentation to various other formats, by default
+Info files suitable for reading online with Emacs or standalone GNU Info.
+.SS "General options:"
+.TP
+\fB\-\-error\-limit\fR=\fINUM\fR
+quit after NUM errors (default 100).
+.TP
+\fB\-\-force\fR
+preserve output even if errors.
+.TP
+\fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-no\-validate\fR
+suppress node cross-reference validation.
+.TP
+\fB\-\-no\-warn\fR
+suppress warnings (but not errors).
+.TP
+\fB\-\-reference\-limit\fR=\fINUM\fR
+warn about at most NUM references (default 1000).
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.SS "Output format selection (default is to produce Info):"
+.TP
+\fB\-\-docbook\fR
+output DocBook XML rather than Info.
+.TP
+\fB\-\-html\fR
+output HTML rather than Info.
+.TP
+\fB\-\-xml\fR
+output Texinfo XML rather than Info.
+.SS "General output options:"
+.TP
+\fB\-E\fR, \fB\-\-macro\-expand\fR FILE
+output macro-expanded source to FILE.
+ignoring any @setfilename.
+.TP
+\fB\-\-no\-headers\fR
+suppress node separators, Node: lines, and menus
+from Info output (thus producing plain text)
+or from HTML (thus producing shorter output);
+also, write to standard output by default.
+.TP
+\fB\-\-no\-split\fR
+suppress splitting of Info or HTML output,
+generate only one output file.
+.TP
+\fB\-\-number\-sections\fR
+output chapter and sectioning numbers.
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
+output to FILE (directory if split HTML),
+.SS "Options for Info and plain text:"
+.TP
+\fB\-\-enable\-encoding\fR
+output accented and special characters in
+Info output based on @documentencoding.
+.TP
+\fB\-\-fill\-column\fR=\fINUM\fR
+break Info lines at NUM characters (default 72).
+.TP
+\fB\-\-footnote\-style\fR=\fISTYLE\fR
+output footnotes in Info according to STYLE:
+`separate' to put them in their own node;
+`end' to put them at the end of the node
+.IP
+in which they are defined (default).
+.TP
+\fB\-\-paragraph\-indent\fR=\fIVAL\fR
+indent Info paragraphs by VAL spaces (default 3).
+If VAL is `none', do not indent; if VAL is
+`asis', preserve existing indentation.
+.TP
+\fB\-\-split\-size\fR=\fINUM\fR
+split Info files at size NUM (default 300000).
+.SS "Options for HTML:"
+.TP
+\fB\-\-css\-include\fR=\fIFILE\fR
+include FILE in HTML <style> output;
+read stdin if FILE is -.
+.SS "Input file options:"
+.TP
+\fB\-\-commands\-in\-node\-names\fR
+allow @ commands in node names.
+.TP
+\fB\-D\fR VAR
+define the variable VAR, as with @set.
+.TP
+\fB\-I\fR DIR
+append DIR to the @include search path.
+.TP
+\fB\-P\fR DIR
+prepend DIR to the @include search path.
+.TP
+\fB\-U\fR VAR
+undefine the variable VAR, as with @clear.
+.SS "Conditional processing in input:"
+.TP
+\fB\-\-ifhtml\fR
+process @ifhtml and @html even if not generating HTML.
+.TP
+\fB\-\-ifinfo\fR
+process @ifinfo even if not generating Info.
+.TP
+\fB\-\-ifplaintext\fR
+process @ifplaintext even if not generating plain text.
+.TP
+\fB\-\-iftex\fR
+process @iftex and @tex; implies \fB\-\-no\-split\fR.
+.TP
+\fB\-\-ifxml\fR
+process @ifxml and @xml.
+.TP
+\fB\-\-no\-ifhtml\fR
+do not process @ifhtml and @html text.
+.TP
+\fB\-\-no\-ifinfo\fR
+do not process @ifinfo text.
+.TP
+\fB\-\-no\-ifplaintext\fR
+do not process @ifplaintext text.
+.TP
+\fB\-\-no\-iftex\fR
+do not process @iftex and @tex text.
+.TP
+\fB\-\-no\-ifxml\fR
+do not process @ifxml and @xml text.
+.IP
+The defaults for the @if... conditionals depend on the output format:
+if generating HTML, \fB\-\-ifhtml\fR is on and the others are off;
+if generating Info, \fB\-\-ifinfo\fR is on and the others are off;
+if generating plain text, \fB\-\-ifplaintext\fR is on and the others are off;
+if generating XML, \fB\-\-ifxml\fR is on and the others are off.
+.SH EXAMPLES
+.TP
+makeinfo foo.texi
+write Info to foo's @setfilename
+.TP
+makeinfo \fB\-\-html\fR foo.texi
+write HTML to @setfilename
+.TP
+makeinfo \fB\-\-xml\fR foo.texi
+write Texinfo XML to @setfilename
+.TP
+makeinfo \fB\-\-docbook\fR foo.texi
+write DocBook XML to @setfilename
+.TP
+makeinfo \fB\-\-no\-headers\fR foo.texi
+write plain text to standard output
+.IP
+makeinfo \fB\-\-html\fR \fB\-\-no\-headers\fR foo.texi write html without node lines, menus
+makeinfo \fB\-\-number\-sections\fR foo.texi   write Info with numbered sections
+makeinfo \fB\-\-no\-split\fR foo.texi          write one Info file however big
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo at gnu.org,
+general questions and discussion to help-texinfo at gnu.org.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO"
+The full documentation for
+.B makeinfo
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B makeinfo
+programs are properly installed at your site, the command
+.IP
+.B info makeinfo
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/man.1 b/raw/man1/man.1
new file mode 100644
index 0000000..1479d1d
--- /dev/null
+++ b/raw/man1/man.1
@@ -0,0 +1,452 @@
+.\"
+.\" Generated automatically from man.1.in by the
+.\" configure script.
+.\"
+.\" Man page for man (and the former manpath)
+.\"
+.\" Copyright (c) 1990, 1991, John W. Eaton.
+.\"
+.\" You may distribute under the terms of the GNU General Public
+.\" License as specified in the README file that comes with the man 1.0
+.\" distribution.  
+.\"
+.\" John W. Eaton
+.\" jwe at che.utexas.edu
+.\" Department of Chemical Engineering
+.\" The University of Texas at Austin
+.\" Austin, Texas  78712
+.\"
+.\" Many changes - aeb
+.\"
+.TH man 1 "September 2, 1995"
+.LO 1
+.SH NAME
+man \- format and display the on-line manual pages
+.br
+manpath \- determine user's search path for man pages
+.SH SYNOPSIS
+.B man 
+.RB [ \-acdfFhkKtwW ]
+.RB [ --path ] 
+.RB [ \-m 
+.IR system ] 
+.RB [ \-p 
+.IR string ] 
+.RB [ \-C 
+.IR config_file ] 
+.RB [ \-M 
+.IR pathlist ]
+.RB [ \-P
+.IR pager ] 
+.RB [ \-S 
+.IR section_list ] 
+.RI [ section ] 
+.I "name ..."
+
+.SH DESCRIPTION
+.B man
+formats and displays the on-line manual pages.  If you specify
+.IR section ,
+.B man
+only looks in that section of the manual.
+.I name
+is normally the name of the manual page, which is typically the name
+of a command, function, or file.  
+However, if
+.I name
+contains a slash
+.RB ( / ) 
+then 
+.B man 
+interprets it as a file specification, so that you can do
+.B "man ./foo.5"
+or even
+.B "man /cd/foo/bar.1.gz\fR.\fP"
+.PP
+See below for a description of where 
+.B man
+looks for the manual page files.
+ 
+.SH OPTIONS
+.TP
+.B \-\^C " config_file"
+Specify the configuration file to use; the default is
+.BR /etc/man.config .
+(See
+.BR man.config (5).)
+.TP
+.B \-\^M " path"
+Specify the list of directories to search for man pages.
+Separate the directories with colons.  An empty list is the same as
+not specifying 
+.B \-M
+at all.  See
+.BR "SEARCH PATH FOR MANUAL PAGES" .
+.TP
+.B \-\^P " pager"
+Specify which pager to use. 
+This option overrides the
+.B MANPAGER
+environment variable, which in turn overrides the
+.B PAGER
+variable.  By default,
+.B man
+uses
+.BR "/usr/bin/less -isr" .
+.TP
+.B \-\^S " section_list"
+List is a colon separated list of manual sections to search.
+This option overrides the
+.B MANSECT
+environment variable.
+.TP
+.B \-\^a
+By default,
+.B man
+will exit after displaying the first manual page it
+finds.  Using this option forces
+.B man
+to display all the manual pages that match
+.B name, 
+not just the first.
+.TP
+.B \-\^c
+Reformat the source man page, even when an up-to-date cat page exists.
+This can be meaningful if the cat page was formatted for a screen
+with a different number of columns, or if the preformatted page
+is corrupted.
+.TP
+.B \-\^d
+Don't actually display the man pages, but do print gobs of debugging
+information.
+.TP
+.B \-\^D
+Both display and print debugging info.
+.TP
+.B \-\^f
+Equivalent to
+.BR whatis .
+.TP
+.BR \-\^F " or " \-\-preformat
+Format only - do not display.
+.TP
+.B \-\^h
+Print a one-line help message and exit.
+.TP
+.B \-\^k
+Equivalent to
+.BR apropos .
+.TP
+.B \-\^K
+Search for the specified string in *all* man pages. Warning: this is
+probably very slow! It helps to specify a section.
+(Just to give a rough idea, on my machine this takes about a minute
+per 500 man pages.)
+.TP
+.B \-\^m " system"
+Specify an alternate set of man pages to search based on the system
+name given.
+.TP
+.B \-\^p " string"
+Specify the sequence of preprocessors to run before
+.B nroff
+or
+.BR troff .
+Not all installations will have a full set of preprocessors.
+Some of the preprocessors and the letters used to designate them are: 
+eqn (e), grap (g), pic (p), tbl (t), vgrind (v), refer (r).
+This option overrides the
+.B MANROFFSEQ
+environment variable.
+.TP
+.B \-\^t
+Use
+.B /usr/bin/groff -Tps -mandoc
+to format the manual page, passing the output to 
+.B stdout.
+The output from
+.B /usr/bin/groff -Tps -mandoc
+may need to be passed through some filter or another before being
+printed.
+.TP
+.B \-\^w \fRor\fP \-\-path
+Don't actually display the man pages, but do print the location(s) of
+the files that would be formatted or displayed. If no argument is given:
+display (on stdout) the list of directories that is searched by
+.B man
+for man pages. If
+.B manpath
+is a link to man, then "manpath" is equivalent to "man --path".
+.TP
+.B \-\^W
+Like \-\^w, but print file names one per line, without additional information.
+This is useful in shell commands like
+.ft CW
+.B "man -aW man | xargs ls -l"
+.ft
+
+.SH "CAT PAGES"
+Man will try to save the formatted man pages, in order to save
+formatting time the next time these pages are needed.
+Traditionally, formatted versions of pages in DIR/manX are
+saved in DIR/catX, but other mappings from man dir to cat dir
+can be specified in
+.BR /etc/man.config .
+No cat pages are saved when the required cat directory does not exist.
+No cat pages are saved when they are formatted for a line length
+different from 80.
+No cat pages are saved when man.conf contains the line NOCACHE.
+.PP
+It is possible to make
+.B man
+suid to a user man. Then, if a cat directory
+has owner man and mode 0755 (only writable by man), and the cat files
+have owner man and mode 0644 or 0444 (only writable by man, or not
+writable at all), no ordinary user can change the cat pages or put
+other files in the cat directory. If
+.B man
+is not made suid, then a cat directory should have mode 0777
+if all users should be able to leave cat pages there.
+.PP
+The option
+.B \-c
+forces reformatting a page, even if a recent cat page exists.
+
+
+.SH "SEARCH PATH FOR MANUAL PAGES"
+.B man
+uses a sophisticated method of finding manual page files, based on the
+invocation options and environment variables, the 
+.B /etc/man.config 
+configuration file, and some built in conventions and heuristics.
+.PP
+First of all, when the 
+.I name
+argument to 
+.B man
+contains a slash 
+.RB ( / ),
+.B man
+assumes it is a file specification itself,
+and there is no searching involved.
+.PP
+But in the normal case where 
+.I name
+doesn't contain a slash,
+.B man
+searches a variety of directories for a file that could be a manual page
+for the topic named.
+.PP
+If you specify the 
+.BI "-M " pathlist
+option,
+.I pathlist 
+is a colon-separated list of the directories that 
+.B man 
+searches.
+.PP
+If you don't specify
+.B -M
+but set the
+.B MANPATH
+environment variable, the value of that variable is the list of the 
+directories that 
+.B man
+searches.
+.PP
+If you don't specify an explicit path list with 
+.B -M
+or 
+.BR MANPATH ,
+.B man
+develops its own path list based on the contents of the configuration 
+file
+.BR /etc/man.config .
+The
+.B MANPATH
+statements in the configuration file identify particular directories to 
+include in the search path.
+.PP
+Furthermore, the 
+.B MANPATH_MAP 
+statements add to the search path depending on your command search path
+(i.e. your
+.B PATH 
+environment variable).  For each directory that may be in the command
+search path, a
+.B MANPATH_MAP
+statement specifies a directory that should be added to the search
+path for manual page files.
+.B man
+looks at the 
+.B PATH
+variable and adds the corresponding directories to the manual page
+file search path.  Thus, with the proper use of
+.BR MANPATH_MAP ,
+when you issue the command
+.BR "man xyz" ,
+you get a manual page for the program that would run if you issued the
+command 
+.BR xyz .
+.PP
+In addition, for each directory in the command search path (we'll call
+it a "command directory") for which you do
+.I not
+have a 
+.B MANPATH_MAP 
+statement,
+.B man
+automatically looks for a manual page directory "nearby"
+namely as a subdirectory in the command directory itself or
+in the parent directory of the command directory.
+.PP
+You can disable the automatic "nearby" searches by including a
+.B NOAUTOPATH
+statement in 
+.BR /etc/man.config .
+.PP
+In each directory in the search path as described above, 
+.B man
+searches for a file named
+.IB topic . section\fR,
+with an optional suffix on the section number and 
+possibly a compression suffix.
+If it doesn't find such a file, it then looks in any subdirectories
+named
+.BI man N
+or 
+.BI cat N
+where
+.I N
+is the manual section number.
+If the file is in a 
+.BI cat N
+subdirectory, 
+.B man
+assumes it is a formatted manual page file (cat page).  Otherwise,
+.B man
+assumes it is unformatted.  In either case, if the filename has a
+known compression suffix (like
+.BR .gz ),
+.B man
+assumes it is gzipped.
+.PP
+If you want to see where (or if)
+.B man
+would find the manual page for a particular topic, use the 
+.BR "--path " ( -w )
+option.
+
+.SH ENVIRONMENT
+.TP
+.B MANPATH
+If
+.B MANPATH
+is set, 
+.B man
+uses it as the path to search for manual page files.  It overrides the
+configuration file and the automatic search path, but is overridden by
+the
+.B -M
+invocation option.  See 
+.BR "SEARCH PATH FOR MANUAL PAGES" .
+.TP
+.B MANPL
+If
+.B MANPL
+is set, its value is used as the display page length.
+Otherwise, the entire man page will occupy one (long) page.
+.TP
+.B MANROFFSEQ
+If
+.B MANROFFSEQ
+is set, its value is used to determine the set of preprocessors run
+before running
+.B nroff
+or
+.BR troff .
+By default, pages are passed through
+the tbl preprocessor before
+.BR nroff .
+.TP
+.B MANSECT
+If
+.B MANSECT
+is set, its value is used to determine which manual sections to search.
+.TP
+.B MANWIDTH
+If
+.B MANWIDTH
+is set, its value is used as the width manpages should be displayed.
+Otherwise the pages may be displayed over the whole width of your
+screen.
+.TP
+.B MANPAGER
+If
+.B MANPAGER
+is set, its value is used as the name of the program to use to display
+the man page.  If not, then
+.B PAGER
+is used. If that has no value either,
+.B /usr/bin/less -isr
+is used.
+.TP
+.B LANG
+If
+.B LANG
+is set, its value defines the name of the subdirectory where man
+first looks for man pages. Thus, the command `LANG=dk man 1 foo'
+will cause man to look for the foo man page in .../dk/man1/foo.1,
+and if it cannot find such a file, then in .../man1/foo.1,
+where ... is a directory on the search path.
+.TP
+.B "NLSPATH, LC_MESSAGES, LANG"
+The environment variables
+.B NLSPATH
+and
+.B LC_MESSAGES
+(or
+.B LANG
+when the latter does not exist)
+play a role in locating the message catalog.
+(But the English messages are compiled in, and for English no catalog
+is required.)
+Note that programs like
+.BR col(1)
+called by man also use e.g. LC_CTYPE.
+.TP
+.B PATH
+.B PATH
+helps determine the search path for manual page files.  See
+.BR "SEARCH PATH FOR MANUAL PAGES" .
+.TP
+.B SYSTEM
+.B SYSTEM
+is used to get the default alternate system name (for use
+with the
+.B \-m
+option). 
+.SH "SEE ALSO"
+apropos(1), whatis(1), less(1), groff(1), man.conf(5).
+.SH BUGS
+The
+.B \-t
+option only works if a troff-like program is installed.
+.br
+If you see blinking \e255 or <AD> instead of hyphens,
+put `LESSCHARSET=latin1' in your environment.
+.SH TIPS
+If you add the line
+
+  (global-set-key [(f1)] (lambda () (interactive) (manual-entry (current-word))))
+
+to your
+.IR .emacs 
+file, then hitting F1 will give you the man page for the library call
+at the current cursor position.
+.LP
+To get a plain text version of a man page, without backspaces
+and underscores, try
+
+  # man foo | col -b > foo.mantxt
+
diff --git a/raw/man1/md5sum.1 b/raw/man1/md5sum.1
new file mode 100644
index 0000000..757a67a
--- /dev/null
+++ b/raw/man1/md5sum.1
@@ -0,0 +1,63 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH MD5SUM "1" "October 2003" "md5sum (coreutils) 5.0" FSF
+.SH NAME
+md5sum \- compute and check MD5 message digest
+.SH SYNOPSIS
+.B md5sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.br
+.B md5sum
+[\fIOPTION\fR] \fI--check \fR[\fIFILE\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check MD5 (128-bit) checksums.
+With no FILE, or when FILE is -, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read files in binary mode (default on DOS/Windows)
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+check MD5 sums against given list
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read files in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formated checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in RFC 1321.  When checking, the input
+should be a former output of this program.  The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper and Scott Miller.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B md5sum
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B md5sum
+programs are properly installed at your site, the command
+.IP
+.B info md5sum
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/mesg.1 b/raw/man1/mesg.1
new file mode 100644
index 0000000..8b69a18
--- /dev/null
+++ b/raw/man1/mesg.1
@@ -0,0 +1,42 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH MESG 1 "Feb 26, 2001" "" "Linux User's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+mesg \- control write access to your terminal
+.\"}}}
+.\"{{{  Synopsis
+.SH SYNOPSIS
+.B mesg
+.RB [ y | n ]
+.\"}}}
+.\"{{{  Description
+.SH DESCRIPTION
+.B Mesg
+controls the access to your terminal by others.  It's typically used to
+allow or disallow other users to write to your terminal (see \fBwrite\fP(1)).
+.\"}}}
+.\"{{{  Options
+.SH OPTIONS
+.IP \fBy\fP
+Allow write access to your terminal.
+.IP \fBn\fP
+Disallow write access to your terminal.
+.PP
+If no option is given, \fBmesg\fP prints out the current access state of your
+terminal.
+.PP NOTES
+\fBMesg\fP assumes that it's standard input is connected to your
+terminal. That also means that if you are logged in multiple times,
+you can get/set the mesg status of other sessions by using redirection.
+For example "mesg n < /dev/pts/46".
+.SH AUTHOR
+Miquel van Smoorenburg (miquels at cistron.nl)
+.\"}}}
+.\"{{{  See also
+.SH "SEE ALSO"
+.BR talk (1),
+.BR write (1),
+.BR wall (1)
+.\"}}}
diff --git a/raw/man1/minicom.1 b/raw/man1/minicom.1
new file mode 100644
index 0000000..70ba6be
--- /dev/null
+++ b/raw/man1/minicom.1
@@ -0,0 +1,854 @@
+.\" This file Copyright 1992,93 Michael K. Johnson (johnsonm at stolaf.edu)
+.\" Copyright 1995,1996 Miquel van Smoorenburg <miquels at cistron.nl>
+.\" Copyright 1997-2000 Jukka Lahtinen <walker at clinet.fi>
+.\" It may be distributed under the GNU Public License, version 2, or
+.\" any higher version.  See section COPYING of the GNU Public license
+.\" for conditions under which this file may be redistributed.
+.TH MINICOM 1 "2003/12/20 03:31:53" "User's Manual"
+.SH NAME
+minicom \- friendly serial communication program
+.SH SYNOPSIS
+.B minicom
+.RI "[-somMlwz8] [-c on|off] [-S script] [-d entry]"
+.br
+.in 15
+.RI "[-a on|off] [-t term] [-p pty] [-C capturefile] [" configuration ]
+.SH DESCRIPTION
+.B minicom
+is a communication program which somewhat resembles the shareware
+program TELIX but is free with source code and runs under most unices.
+Features include dialing directory with auto-redial, support for
+UUCP-style lock files on serial devices, a seperate script language
+interpreter, capture to file, multiple users with individual
+configurations, and more.
+.SH COMMAND-LINE
+.TP 0.5i
+.B -s
+.BR S etup.
+Root edits the system-wide defaults in /etc/minirc.dfl with this option. 
+When it is used, minicom does 
+.I not 
+initialize, but puts you directly into the
+configuration menu. This is very handy if minicom refuses to start up
+because your system has changed, or for the first time you run
+minicom. For most systems, reasonable defaults are already compiled in.
+.TP 0.5i
+.B -o
+Do not initialize. Minicom will skip the initialization code.  This
+option is handy if you quitted from minicom without resetting, and
+then want to restart a session. It is potentially dangerous though: no
+check for lock files etc. is made, so a normal user could interfere
+with things like uucp... Maybe this will be taken out later. For now
+it is assumed, that users who are given access to a modem are
+responsible enough for their actions.
+.TP 0.5i
+.B -m
+Override command-key with the Meta or ALT key. This is the default in 1.80
+and it can also be configured in one of minicom's menus, but if you use 
+different terminals all the time, of which some don't have a Meta or ALT key,
+it's handy to set the default command key to Ctrl-A and use this option
+when you have a keyboard supporting Meta or ALT keys. Minicom
+assumes that your Meta key sends the ESC prefix, not the other variant
+that sets the highest bit of the character.
+.TP 0.5i
+.B -M
+Same as -m, but assumes that your Meta key sets the 8th bit of the
+character high (sends 128 + character code).
+.TP 0.5i
+.B -z
+Use terminal status line. This only works on terminals that support it
+and that have the relevant information in their \fItermcap\fP or
+\fIterminfo\fP database entry.
+.TP 0.5i
+.B -l
+.BR L iteral
+translation of characters with the high bit set. With this flag on,
+minicom will not try to translate the IBM line characters to ASCII,
+but passes them straight trough. Many PC-unix clones will display
+them correctly without translation (Linux in a special mode, Coherent
+and Sco).
+.TP 0.5i
+.B -w
+Turns linewrap on at startup by default.
+.TP 0.5i
+.B -a
+.BR A ttribute
+usage. Some terminals, notably televideo's, have a rotten attribute
+handling (serial instead of parallel). By default, minicom uses '-a
+on', but if you are using such a terminal you can (must!)  supply the
+option '-a off'. The trailing 'on' or 'off' is needed.
+.TP 0.5i
+.B -t
+.BR T erminal
+type. With this flag, you can override the environment TERM variable.
+This is handy for use in the MINICOM environment variable; one can create
+a special termcap entry for use with minicom on the console, that
+initializes the screen to raw mode so that in conjunction with the -l
+flag, the IBM line characters are displayed untranslated.
+.TP 0.5i
+.B -c
+.BR C olor
+usage. Some terminals (such as the Linux console) support color with
+the standard ANSI escape sequences. Because there is apparently no
+termcap support for color, these escape sequences are hard-coded into
+minicom. Therefore this option is off by default.  You can turn it on
+with '-c on'. This, and the '-m' option, are good candidates to put
+into the MINICOM environment variable.
+.TP 0.5i
+.B -S 
+.BR script .
+Run the named script at startup. So far, passing username and password
+to a startup script is not supported. If you also use the -d option to
+start dialing at startup, the -S script will be run BEFORE dialing the
+entries specified with -d.
+.TP 0.5i
+.B -d
+.BR D ial
+an entry from the dialing directory on startup. You can specify an
+index number, but also a substring of the name of the entry. If you 
+specify a name that has multiple entries in the directory, they are all
+tagged for dialing. You can also specify multiple names or index numbers
+by separating them with commas. The dialing will start from the first 
+entry specified after all other program initialization procedures are 
+completed.
+.TP 0.5i
+.B -p
+.BR P seudo
+terminal
+to use. This overrrides the terminal port defined in the configuration
+files, but only if it is a pseudo tty. The filename supplied must be of
+the form (/dev/)tty[p-z/][0-f], (/dev/)pts[p-z/][0-f] or 
+(/dev/)pty[p-z/][0-f]. For example, /dev/ttyp1, pts/0 or /dev/ptyp2.
+.TP 0.5i
+.B -C
+.BR filename .
+Open capture file at startup.
+.TP 0.5i
+.B -8
+'8bit clean' and 'continuous' mode. '8bit clean' means Minicom let
+8bit characters pass through without any modification.  'Continuous'
+means no locate/attribute control sequences are inserted without
+real change of locate/attribute. This mode is to display 8bit
+multibyte characters such as Japanese. Not needed in every language with
+8bit characters. (For example displaying Finnish text doesn't need this.)
+.PP
+.RS 0.5i
+When
+.B minicom
+starts, it first searches the MINICOM environment variable for
+command-line arguments, which can be over-ridden on the command line.
+Thus, if you have done
+.PP
+.RS 0.5i
+.PD 0
+MINICOM='-m -c on'
+.PP
+export MINICOM
+.PP
+.PD 1
+.PP
+.RE
+or the equivalent, and start minicom, minicom will assume that your
+terminal
+.I has 
+a Meta or <ALT> key and that color is supported.  If you then log in
+from a terminal without color support, and you have set MINICOM in your
+startup (.profile or equivalent) file, and don't want to re-set your
+environment variable, you can type 'minicom -c off' and run without
+color support for that session.
+.RE
+.TP 0.5i
+.B configuration
+The
+.I configuration
+argument is more interesting. Normally, minicom gets its defaults from
+a file called "minirc.dfl". If you however give an argument to
+minicom, it will try to get its defaults from a file called
+"minirc.\fIconfiguration\fR\|".  So it is possible to create multiple
+configuration files, for different ports, different users etc. Most
+sensible is to use device names, such as tty1, tty64, sio2 etc. If a
+user creates his own configuration file, it will show up in his home
+directory as '.minirc.dfl'.
+.SH USE
+Minicom is window based. To popup a window with the function you
+want, press Control-A (from now on, we will use C-A to mean
+Control-A), and then the function key (a-z or A-Z). By pressing C-A
+first and then 'z', a help screen comes up with a short summary of all
+commands. This escape key can be altered when minicom is configured
+(-s option or C-A O), but we'll stick to Control-A for now.
+.PP
+.PD 0
+For every menu the next keys can be used:
+.TP 0.75i
+.B UP
+arrow-up or 'k'
+.TP 0.75i
+.B DOWN
+arrow-down or 'j'
+.TP 0.75i
+.B LEFT
+arrow-left or 'h'
+.TP 0.75i
+.B RIGHT
+arrow-right or 'l'
+.TP 0.75i
+.B CHOOSE
+Enter
+.TP 0.75i
+.B CANCEL
+ESCape.
+.PD 1
+.PP
+The screen is divided into two portions: the upper 24 lines are the
+terminal-emulator screen. In this window, ANSI or VT100 escape
+sequences are interpreted.  If there is a line left at the
+bottom, a status line is placed there.  If this is not possible the
+status line will be showed every time you press C-A. On terminals
+that have a special status line that will be used if the termcap
+information is complete \fIand\fP the \fB-k\fP flag has been given.
+.PP
+.PD 0
+Possible commands are listed next, in alphabetical order.
+.TP 0.5i
+.B C-A
+Pressing C-A a second time will just send a C-A to the remote system.
+If you have changed your "escape character" to something other than
+C-A, this works analogously for that character.
+.TP 0.5i
+.B A
+Toggle 'Add Linefeed' on/off. If it is on, a linefeed is added before
+every carriage return displayed on the screen.
+.TP 0.5i
+.B B
+Gives you a scroll back buffer. You can scroll up with \fBu\fP, down with
+\fBd\fP, a page up with \fBb\fP, a page down with \fBf\fP, and if you have them
+the \fBarrow\fP and \fBpage up/page down\fP keys can also be used. You can 
+search for text in the buffer with \fBs\fP (case-sensitive) or \fBS\fP 
+(case-insensitive). \fBN\fP will find the next occurrence of the string.
+\fBc\fP will enter citation mode. A text cursor appears and you
+specify the start line by hitting Enter key. Then scroll back mode will
+finish and the contents with prefix '>' will be sent.
+.TP 0.5i
+.B C
+Clears the screen.
+.TP 0.5i
+.B D
+Dial a number, or go to the dialing directory.
+.TP 0.5i
+.B E
+Toggle local echo on and off (if your version of minicom supports it).
+.TP 0.5i
+.B F
+A break signal is sent to the modem.
+.TP 0.5i
+.B G
+Run script (Go). Runs a login script.
+.TP 0.5i
+.B H
+Hangup.
+.TP 0.5i
+.B I
+Toggle the type of escape sequence that the cursor keys send between
+normal and applications mode. (See also the comment about the status
+line below).
+.TP 0.5i
+.B J
+Jump to a shell. On return, the whole screen will be redrawn.
+.TP 0.5i
+.B K
+Clears the screen, runs kermit and redraws the screen upon return.
+.TP 0.5i
+.B L
+Turn Capture file on off. If turned on, all output sent to the screen
+will be captured in the file too.
+.TP 0.5i
+.B M
+Sends the modem initialization string. If you are online and the DCD line
+setting is on, you are asked for confirmation before the modem is 
+initialized.
+.TP 0.5i
+.B O
+Configure minicom. Puts you in the configuration menu.
+.TP 0.5i
+.B P
+Communication Parameters. Allows you to change the bps rate, parity and
+number of bits.
+.TP 0.5i
+.B Q
+Exit minicom without resetting the modem. If macros changed and were not
+saved, you will have a chance to do so.
+.TP 0.5i
+.B R
+Receive files. Choose from various protocols (external). If you have the
+filename selection window and the prompt for download directory enabled,
+you'll get a selection window for choosing the directory for
+downloading. Otherwise the download directory defined in the Filenames and
+paths menu will be used.
+.TP 0.5i
+.B S
+Send files. Choose the protocol like you do with the receive command. If
+you don't have the filename selection window enabled (in the File transfer
+protocols menu), you'll just have to write the filename(s) in a dialog
+window. If you have the selection window enabled, a window will pop up
+showing the filenames in your upload directory. You can tag and untag
+filenames by pressing spacebar, and move the cursor up and down with the
+cursor keys or j/k. The selected filenames are shown highlighted. Directory
+names are shown [within brackets] and you can move up or down in the
+directory tree by pressing the spacebar twice. Finally, send the files by
+pressing ENTER or quit by pressing ESC.
+.TP 0.5i
+.B T
+Choose Terminal emulation: Ansi(color) or vt100.
+You can also change the backspace key here, turn the status line on or off, 
+and define delay (in milliseconds) after each newline if you need that.
+.TP 0.5i
+.B W
+Toggle linewrap on/off.
+.TP 0.5i
+.B X
+Exit minicom, reset modem. If macros changed and were not saved, you will 
+have a chance to do so.
+.TP 0.5i
+.B Z
+Pop up the help screen.
+.PD 1
+.SH "DIALING DIRECTORY"
+By pressing C-A D the program puts you in the dialing directory. Select a
+command by pressing the capitalized letter or moving cursor right/left with
+the arrow keys or the h/l keys and pressing Enter. You can add, delete or
+edit entries and move them up and down in the directory list. By choosing
+"dial" the phone numbers of the tagged entries, or if nothing is tagged,
+the number of the highlighted entry will be dialed. While the modem is
+dialing, you can press escape to cancel dialing. Any other key will close
+the dial window, but won't cancel the dialing itself. Your dialing
+directory will be saved into a the file ".dialdir" in your home directory.
+You can scroll up and down with the arrow keys, but you can also scroll
+complete pages by pressing the PageUp or PageDown key.  If you don't have
+those, use Control-B (Backward) and Control-F (Forward). You can use the
+space bar to \fBtag\fP a number of entries and minicom will rotate trough
+this list if a connection can't be made. A '>' symbol is drawn in the
+directory before the names of the tagged entries.
+.PP
+The "edit" menu speaks for itself, but I will discuss it briefly here.
+.PD 0
+.TP 1.0i
+.B A - Name
+The name for this entry
+.TP 1.0i
+.B B - Number
+and its telephone number.
+.TP 1.0i
+.B C - Dial string #
+Which specific dial string you want to use to connect. There are three
+different dial strings (prefixes and suffixes) that can be configured
+in the \fBModem and dialing\fP menu.
+.TP 1.0i
+.B D - Local echo
+can be on or off for this system (if your version of minicom supports it).
+.TP 1.0i
+.B E - Script 
+The script that must be executed after a succesfull connection is made
+(see the manual for runscript)
+.TP 1.0i
+.B F - Username
+The username that is passed to the runscript program.  It
+is passed in the environment string "$LOGIN".
+.TP 1.0i
+.B G - Password
+The password is passed as "$PASS".
+.TP 1.0i
+.B H - Terminal Emulation
+Use ANSI or VT100 emulation.
+.TP 1.0i
+.B I - Backspace key sends
+What code (Backspace or Delete) the backspace key sends.
+.TP 1.0i
+.B J - Linewrap
+Can be on or off.
+.TP 1.0i
+.B K - Line settings
+Bps rate, bits, parity and number of stop bits to use for this connection. 
+You can choose \fBcurrent\fP for the speed, so that it will use whatever 
+speed is being used at that moment (useful if you have multiple modems).
+.TP 1.0i
+.B L - Conversion table
+You may spacify a character conversion table to be loaded whenever this
+entry answers, before running the login script. If this field is blank, 
+the conversion table stays unchanged.
+.PP 
+.PD 1
+The edit menu also shows the latest date and time when you called this
+entry and the total number of calls there, but doesn't let you change them.
+They are updated automatically when you connect.
+.PD 1
+.PP
+The moVe command lets you move the highlighted entry up or down in the
+dialing directory with the up/down arrow keys or the k and j keys. Press
+Enter or ESC to end moving the entry. 
+.PP
+.SH CONFIGURATION
+By pressing C-A O you will be thrown into the setup menu. Most
+settings there can be changed by everyone, but some are restricted
+to root only. Those priviliged settings are marked with a star (*) here.
+.PP
+.PD 0
+.B "Filenames and paths"
+.PP
+.RS 0.25i
+This menu defines your default directories.
+.TP 0.5i
+.B A - Download directory
+where the downloaded files go to.
+.TP 0.5i
+.B B - Upload directory
+where the uploaded files are read from.
+.TP 0.5i
+.B C - Script directory
+Where you keep your login scripts.
+.TP 0.5i
+.B D - Script program
+Which program to use as the script interpreter. Defaults to the
+program "runscript", but if you want to use something else (eg,
+/bin/sh or "expect") it is possible.  Stdin and stdout are connected
+to the modem, stderr to the screen.
+.RS 0.5i
+If the path is relative (ie, does not start with a slash) then it's
+relative to your home directory, except for the script interpreter.
+.RE
+.TP 0.5i
+.B E - Kermit program
+Where to find the executable for kermit, and it's options. Some simple
+macro's can be used on the command line: '%l' is expanded to the
+complete filename of the dial out-device, '%f' is expanded to the serial
+port file descriptor and '%b' is expanded to the current serial port speed.
+.TP 0.5i
+.B F - Logging options
+Options to configure the logfile writing.
+.RS 0.5i
+.PD 1
+.TP 0.5i
+.B A - File name
+Here you can enter the name of the logfile. The file will be written in
+your home directory, and the default value is "minicom.log". 
+If you blank the name, all logging is turned off.
+.TP 0.5i
+.B B - Log connects and hangups
+This option defines whether or not the logfile is written when the remote
+end answers the call or hangs up. Or when you give the hangup command
+yourself or leave minicom without hangup while online.
+.TP 0.5i
+.B C - Log file transfers
+Do you want log entries of receiving and sending files.
+.RE
+The 'log' command in the scripts is not affected by logging options B and C.
+It is always executed, if you just have the name of the log file defined.
+.RE
+.PD 1
+.PP
+.B "File Transfer Protocols"
+.PD 0
+.PP
+.RS 0.25i
+Protocols defined here will show up when C-A s/r is pressed.  "Name" in the
+beginning of the line is the name that will show up in the menu. "Program"
+is the path to the protocol. "Name" after that defines if the program needs
+an argument, eg. a file to be transmitted. U/D defines if this entry should
+show up in the upload or the download menu.  Fullscr defines if the program
+should run full screen, or that minicom will only show it's stderr in a
+window. IO-Red defines if minicom should attach the program's standard in
+and output to the modem port or not. "Multi" tells the filename selection
+window whether or not the protocol can send multiple files with one
+command. It has no effect on download protocols, and it is also ignored
+with upload protocols if you don't use the filename selection window. The
+old sz and rz are not full screen, and have IO-Red set. However, there are
+curses based versions of at least rz that do not want their stdin and
+stdout redirected, and run full screen.  All file transfer protocols are
+run with the UID of the user, and not with UID=root. '%l', '%f' and '%b' 
+can be used on the command line as with kermit.  Within this menu you can 
+also define if you want to use the filename selection window when prompted 
+for files to upload, and if you like to be prompted for the download 
+directory every time the automatic download is started. If you leave the 
+download directory prompt disabled, the download directory defined in the 
+file and directory menu is used.
+.RE
+.PD 1
+.PP
+.B "Serial port setup"
+.RS 0.25i
+.PD 0
+.TP 0.5i
+.B *A - Serial device
+/dev/tty1 or /dev/ttyS1 for most people.
+/dev/cua<n> is still possible under linux, but not recommended any more 
+because these devices are obsolete and many newly installed systems 
+with kernel 2.2.x or newer don't have them. 
+Use /dev/ttyS<n> instead. 
+You may also have /dev/modem as a symlink to the real device.
+.br
+If you have modems connected to two or more serial ports, you may specify
+all of them here in a list separated by space, comma or semicolon. When
+Minicom starts, it checks the list until it finds an available modem and 
+uses that one. (However, you can't specify different init strings to 
+them ..at least not yet.)
+.TP 0.5i
+.B *B - Lock file location
+On most systems This should be /usr/spool/uucp. Linux systems use
+/var/lock. If this directory does not exist,
+minicom will not attempt to use lockfiles.
+.TP 0.5i
+.B *C - Callin program
+If you have a uugetty or something on your serial port, it could be
+that you want a program to be run to switch the modem cq. port into
+dialin/dialout mode. This is the program to get into dialin mode.
+.TP 0.5i
+.B *D - Callout program
+And this to get into dialout mode.
+.TP 0.5i
+.B E - Bps/Par/Bits
+Default parameters at startup.
+.PD 1
+.PP  
+If one of the entries is left blank, it will not be used. So if you
+don't care about locking, and don't have a getty running on your
+modemline, entries B - D should be left blank.  Be warned! The callin
+and callout programs are run with the effective user id of "root", eg
+0!
+.RE
+.PP
+.B "Modem and Dialing"
+.PD 0
+.PP
+.RS 0.25i
+Here, the parameters for your modem are defined. I will not explain
+this further because the defaults are for generic Hayes modems, and
+should work always. This file is not a Hayes tutorial :-) The only
+things worth noticing are that control characters can be sent by
+prefixing them with a '^', in which '^^' means '^' itself, and the '\\'
+character must also be doubled as '\\\\', because backslash is used 
+specially in the macro definitions.  Some options however, don't have 
+much to do with the modem but more with the behaviour of minicom itself:
+.PP
+.TP 0.5i
+.B M - Dial time
+The number of seconds before minicom times out if no connection is
+established.
+.TP 0.5i
+.B N - Delay before redial
+Minicom will redial if no connection was made, but it first waits some
+time.
+.TP 0.5i
+.B O - Number of tries
+Maximum number of times that minicom attempts to dial.
+.TP 0.5i
+.B P - Drop DTR time
+If you set this to 0, minicom hangs up by sending a Hayes-type hangup
+sequence. If you specify a non-zero value, the hangup will be done by 
+dropping the DTR line. The value tells in seconds how long DTR will be
+kept down.
+.TP 0.5i
+.B Q - Auto bps detect
+If this is on, minicom tries to match the dialed party's speed.
+With most modern modems this is NOT desirable, since the modem buffers
+the data and converts the speed.
+.TP 0.5i
+.B R - Modem has DCD line
+If your modem, and your O/S both support the DCD line (that goes 'high'
+when a connection is made) minicom will use it. When you have this option
+on, minicom will also NOT start dialing while you are already online.
+.TP 0.5i
+.B S - Status line shows DTE speed / line speed
+You can toggle the status line to show either the DTE speed (the speed 
+which minicom uses to communicate with your modem) or the line speed
+(the speed that your modem uses on the line to communicate with the 
+other modem). Notice that the line speed may change during the connection,
+but you will still only see the initial speed that the modems started
+the connection with. This is because the modem doesn't tell the program
+if the speed is changed. Also, to see the line speed, you need to have
+the modem set to show it in the connect string. 
+Otherwise you will only see 0 as the line speed.
+.TP 0.5i
+.B T - Multi-line untag
+You can toggle the feature to untag entries from the dialing directory when
+a connection is established to a multi-line BBS. All the tagged entries that
+have the same name are untagged.
+.PD 1
+.PP
+.RE
+.RS 0.5i
+.B Note that a special exception is made for this menu: every user
+.B can change all parameters here, but some of them will not be saved.
+.RE
+.PP
+.B "Screen and keyboard"
+.RS 0.25i
+.PD 0
+.TP 0.5i
+.B A - Command key is
+the 'Hot Key' that brings you into command mode. If this is set
+to 'ALT' or 'meta key', you can directly call commands
+by alt-key instead of HotKey-key.
+.TP 0.5i
+.B B - Backspace key sends
+There still are some systems that want a VT100 to send DEL instead of
+BS. With this option you can enable that stupidity.  (Eh, it's even on
+by default...)
+.TP 0.5i
+.B C - Status line is
+Enabled or disabled. Some slow terminals (for example, X-terminals)
+cause the status line to jump "up and down" when scrolling, so you can
+turn it off if desired. It will still be shown in command-mode.
+.TP 0.5i
+.B D - Alarm sound
+If turned on, minicom will sound an alarm (on the console only) after
+a succesfull connection and when up/downloading is complete.
+.TP 0.5i
+.B E - Foreground Color (menu)
+indicates 
+the foreground color to use for all the configuration windows in minicom.
+.TP 0.5i
+.B F - Background Color (menu)
+indicates the background color to use for 
+all the configuration windows in minicom. Note that minicom will not allow 
+you to set forground and background colors to the same value.
+.TP 0.5i
+.B G - Foreground Color (term)
+indicates the foreground color to use in the terminal window.
+.TP 0.5i
+.B H - Background Color (term)
+indicates the background color to use in 
+the terminal window. Note that minicom will not allow you to set forground 
+and background colors to the same value.
+.TP 0.5i
+.B I - Foreground Color (stat)
+indicates the foreground color to use in for the status bar.
+.TP 0.5i
+.B J - Background Color (stat)
+indicates the color to use in for the
+status bar. Note that minicom will allow you to set the status bar's
+forground and background colors to the same value. This will effectively
+make the status bar invisible but if these are your intensions, please
+see the option
+.TP 0.5i
+.B K - History buffer size
+The number of lines to keep in the history buffer (for backscrolling).
+.TP 0.5i
+.B L - Macros file
+is the full path to the file that holds
+macros. Macros allow you to define a string to be sent when you press
+a certain key. In minicom, you may define F1 through F10 to send
+up to 256 characters [this is set at compile time]. The filename you
+specify is verified as soon as you hit ENTER. If you do not have permissions
+to create the specified file, an error message will so indicate and you
+will be forced to re-edit the filename. If you are permitted to create
+the file, minicom checks to see if it already exists. If so, it assumes
+it's a macro file and reads it in. If it isn't, well, it's your problem :-)
+If the file does not exist, the filename is accepted.
+.TP 0.5i
+.B M - Edit Macros
+opens up a new window 
+which allows you to edit the F1 through F10 macros. 
+.TP 0.5i
+.B N - Macros enabled
+- Yes or No. If macros are disabled, the F1-F10
+keys will just send the VT100/VT220 function key escape sequences.
+.TP 0.5i
+.B O - Character conversion
+The active conversion table filename is shown here. If you can see no
+name, no conversion is active. Pressing O, you will see the conversion 
+table edit menu.
+.RS 0.5i
+.PD 1
+.TP 0.25i
+.B "Edit Macros"
+Here, the macros for F1 through F10 are defined. The bottom of the
+window shows a legend of character combinations that have special meaning.
+They allow you to enter special control characters with plain text by
+prefixing them with a '^', in which '^^' means '^' itself. You can
+send a 1 second delay with the '^~' code. This is useful when you are
+trying to login after ftp'ing or telnet'ing somewhere. 
+You can also include your current username and password from the phone 
+directory in the macros with '\\u' and '\\p', respectively. If you need
+the backslash character in the macro, write it doubled as '\\\\'.
+To edit a macro, press the number (or letter for F10) and you will be 
+moved to the end of the macro. When editing the line, you may use the 
+left & right arrows, Home & End keys, Delete & BackSpace, and ESC and 
+RETURN.  ESC cancels any changes made while ENTER accepts the changes.
+.PD 1
+.TP 0.25i
+.B "Character conversion"
+Here you can edit the character conversion table. If you are not an
+American, you know that in many languages there are characters that are
+not included in the ASCII character set, and in the old times they may
+have replaced some less important characters in ASCII and now they are
+often represented with character codes above 127. AND there are various
+different ways to represent them. This is where you may edit conversion
+tables for systems that use a character set different from the one on your
+computer.
+.TP 0.5i
+.B A - Load table
+You probably guessed it. This command loads a table from the disk.
+You are asked a file name for the table.
+Predefined tables .mciso, .mcpc8 and .mcsf7 should be included with the
+program. Table .mciso does no conversion, .mcpc8 is to be used for 
+connections with systems that use the 8-bit pc character set, and .mcsf7
+is for compatibility with the systems that uses the good old 7-bit coding
+to replace the characters {|}[]\\ with the diacritical characters used in
+Finnish and Swedish.
+.TP 0.5i
+.B B - Save table
+This one saves the active table on the filename you specify.
+.TP 0.5i
+.B C - edit char
+This is where you can make your own modifications to the existing table.
+First you are asked the character value (in decimal) whose conversion you
+want to change. Next you'll say which character you want to see on your 
+screen when that character comes from the outside world. And then you'll
+be asked what you want to be sent out when you enter that character from
+your keyboard.
+.TP 0.5i
+.B D - next screen
+.TP 0.5i
+.B E - prev screen
+Yeah, you probably noticed that this screen shows you what kind of
+conversions are active. The screen just is (usually) too small to show
+the whole table at once in an easy-to-understand format. This is how you can
+scroll the table left and right.
+.TP 0.5i
+.B F - convert capture
+Toggles whether or not the character conversion table is used when
+writing the capture file.
+.RE
+.RE
+.PD 1
+.TP 0.25i
+.B "Save setup as dfl"
+Save the parameters as the default for the next time the program is
+started. Instead of dfl, any other parameter name may appear, depending
+on which one was used when the program was started.
+.TP 0.25i
+.B "Save setup as.."
+Save the parameters under a special name. Whenever Minicom is started
+with this name as an argument, it will use these parameters. This
+option is of course priviliged to root.
+.TP 0.25i
+.B "Exit"
+Escape from this menu without saving.  This can also be done with ESC.
+.TP 0.25i
+.B "Exit from minicom"
+Only root will see this menu entry, if he/she started minicom with the '-s'
+option. This way, it is possible to change the configuration without
+actually running minicom.
+.PD 1
+.SH "STATUS LINE"
+The status line has several indicators, that speak for themselves.
+The mysterious APP or NOR indicator probably needs explanation. The
+VT100 cursor keys can be in two modes: applications mode and cursor
+mode. This is controlled by an escape sequence. If you find that
+the cursor keys do not work in, say, vi when you're logged in using
+minicom then you can see with this indicator whether the cursor keys
+are in applications or cursor mode. You can toggle the two with the
+C-A I key. If the cursor keys then work, it's probably an error in
+the remote system's termcap initialization strings (is).
+.PD 1
+.SH "LOCALES"
+Minicom has now support for local languages. This means you can change most
+of the English messages and other strings to another language by setting
+the environment variable LANG. On September 2001 the supported languages
+are Brazilian Portuguese, Finnish, Japanese, French, Polish, Czech, Russian 
+and Spanish.
+Turkish is under construction.
+.PD 1
+.SH "SECURITY ISSUES"
+Since Minicom is run setuid root on some computers, you probably want to 
+restrict access to it. This is possible by using a configuration file 
+in the same directory as the default files, called "minicom.users". 
+The syntax of this file is as following:
+.PP
+.RS 0.5i
+<username> <configuration> [configuration...]
+.RE
+.PP
+To allow user 'miquels' to use the default configuration, enter the 
+following line into "minicom.users":
+.PP
+.RS 0.5i
+miquels dfl
+.RE
+.PP
+If you want users to be able to use more than the default
+configurations, just add the names of those configurations behind the
+user name. If no configuration is given behind the username, minicom
+assumes that the user has access to all configurations.
+.PD 1
+.SH MISC
+If minicom is hung, kill it with SIGTERM . (This means kill -15, or
+since sigterm is default, just plain "kill <minicompid>". This will
+cause a graceful exit of minicom, doing resets and everything.
+You may kill minicom from a script with the command "! killall -9 minicom"
+without hanging up the line. Without the -9 parameter, minicom first 
+hangs up before exiting.
+.PP
+Since a lot of escape sequences begin with ESC (Arrow up is ESC [ A),
+Minicom does not know if the escape character it gets is you pressing
+the escape key, or part of a sequence.
+.PP
+An old version of Minicom, V1.2, solved this in a rather crude way:
+to get the escape key, you had to press it 
+.IR twice .
+.PP
+As of release 1.3 this has bettered a little: now a 1-second timeout
+is builtin, like in vi. For systems that have the select() system call
+the timeout is 0.5 seconds. And... surprise: a special Linux-dependant
+.BR hack " :-) was added. Now, minicom can separate the escape key and"
+escape-sequences. To see how dirty this was done, look into wkeys.c.
+But it works like a charm!
+.SH FILES
+Minicom keeps it's configuration files in one directory, usually
+/var/lib/minicom, /usr/local/etc or /etc. To find out what default
+directory minicom has compiled in, issue the command \fIminicom -h\fP.
+You'll probably also find the demo files for \fBrunscript\fP(1),
+and the examples of character conversion tables either there or 
+in the subdirectories of /usr/doc/minicom*. The conversion tables are
+named something like mc.* in that directory, but you probably want to
+copy the ones you need in your home directory as something beginning
+with a dot.
+.sp 1
+.nf
+minicom.users
+minirc.*
+$HOME/.minirc.*
+$HOME/.dialdir
+$HOME/minicom.log
+/usr/share/locale/*/LC_MESSAGES/minicom.mo
+.fi
+.SH VERSION
+Minicom is now up to version 2.00.0.
+.SH AUTHORS
+The original author of minicom is Miquel van Smoorenburg (miquels at cistron.nl).
+He wrote versions up to 1.75.
+.br
+Jukka Lahtinen (walker at clinet.fi, walker at megabaud.fi) has been responsible
+for new versions since 1.78, helped by some other people, including:
+.br
+filipg at paranoia.com wrote the History buffer searching to 1.79.
+.br
+Arnaldo Carvalho de Melo (acme at conectiva.com.br) did the internationalization 
+and the Brasilian Portuguese translations.
+.br
+Jim Seymour (jseymour at jimsun.LinxNet.com) wrote the multiple modem support 
+and the filename selection window used since 1.80.
+.br
+Tomohiro Kubota (kubota at debian.or.jp) wrote the Japanese translations 
+and the citation facility, and did some fixes.
+.br
+Gael Queri (gqueri at mail.dotcom.fr) wrote the French translations.
+.br
+Arkadiusz Miskiewicz (misiek at pld.org.pl) wrote the Polish translations.
+.br
+Kim Soyoung (nexti at chollian.net) wrote the Korean translations.
+.PP
+Most of this man page is copied, with corrections, from the original minicom
+README, but some pieces and the corrections are by Michael K. Johnson.
+.PP
+Jukka Lahtinen (walker at clinet.fi) has added some information of the changes 
+made after version 1.75.
diff --git a/raw/man1/mkdir.1 b/raw/man1/mkdir.1
new file mode 100644
index 0000000..0b059ab
--- /dev/null
+++ b/raw/man1/mkdir.1
@@ -0,0 +1,49 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH MKDIR "1" "October 2003" "mkdir (coreutils) 5.0" FSF
+.SH NAME
+mkdir \- make directories
+.SH SYNOPSIS
+.B mkdir
+[\fIOPTION\fR] \fIDIRECTORY\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create the DIRECTORY(ies), if they do not already exist.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set permission mode (as in chmod), not rwxrwxrwx - umask
+.TP
+\fB\-p\fR, \fB\-\-parents\fR
+no error if existing, make parent directories as needed
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+print a message for each created directory
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B mkdir
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B mkdir
+programs are properly installed at your site, the command
+.IP
+.B info mkdir
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/mkfifo.1 b/raw/man1/mkfifo.1
new file mode 100644
index 0000000..bb477ff
--- /dev/null
+++ b/raw/man1/mkfifo.1
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH MKFIFO "1" "October 2003" "mkfifo (coreutils) 5.0" FSF
+.SH NAME
+mkfifo \- make FIFOs (named pipes)
+.SH SYNOPSIS
+.B mkfifo
+[\fIOPTION\fR] \fINAME\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create named pipes (FIFOs) with the given NAMEs.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set permission mode (as in chmod), not a=rw - umask
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B mkfifo
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B mkfifo
+programs are properly installed at your site, the command
+.IP
+.B info mkfifo
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/mknod.1 b/raw/man1/mknod.1
new file mode 100644
index 0000000..151e7db
--- /dev/null
+++ b/raw/man1/mknod.1
@@ -0,0 +1,57 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH MKNOD "1" "October 2003" "mknod (coreutils) 5.0" FSF
+.SH NAME
+mknod \- make block or character special files
+.SH SYNOPSIS
+.B mknod
+[\fIOPTION\fR]... \fINAME TYPE \fR[\fIMAJOR MINOR\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create the special file NAME of the given TYPE.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set permission mode (as in chmod), not a=rw - umask
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they
+must be omitted when TYPE is p.  If MAJOR or MINOR begins with 0x or 0X,
+it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;
+otherwise, as decimal.  TYPE may be:
+.TP
+b
+create a block (buffered) special file
+.TP
+c, u
+create a character (unbuffered) special file
+.TP
+p
+create a FIFO
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B mknod
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B mknod
+programs are properly installed at your site, the command
+.IP
+.B info mknod
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/mkpasswd.1 b/raw/man1/mkpasswd.1
new file mode 100644
index 0000000..9da760c
--- /dev/null
+++ b/raw/man1/mkpasswd.1
@@ -0,0 +1,100 @@
+.TH MKPASSWD 1 "22 August 1994"
+.SH NAME
+mkpasswd \- generate new password, optionally apply it to a user
+.SH SYNOPSIS
+.B mkpasswd
+.I
+[
+.I args
+]
+[
+.I user
+]
+.SH INTRODUCTION
+.B mkpasswd
+generates passwords and can apply them automatically to users.
+mkpasswd is based on the code from Chapter 23 of the O'Reilly book
+"Exploring Expect".
+.SH USAGE
+With no arguments,
+.B mkpasswd
+returns a new password.
+
+	mkpasswd
+
+With a user name,
+.B mkpasswd
+assigns a new password to the user.
+
+	mkpasswd don
+
+The passwords are randomly generated according to the flags below.
+
+.SH FLAGS
+The
+.B \-l
+flag defines the length of the password.  The default is 9.  
+The following example creates a 20 character password.
+
+	mkpasswd -l 20
+
+The
+.B \-d
+flag defines the minimum number of digits that must be in the password.
+The default is 2.  The following example creates a password with at least
+3 digits.
+
+	mkpasswd -d 3
+
+The
+.B \-c
+flag defines the minimum number of lowercase alphabetic characters that must be in the password.
+The default is 2.
+
+The
+.B \-C
+flag defines the minimum number of uppercase alphabetic characters that must be in the password.
+The default is 2.
+
+The
+.B \-s
+flag defines the minimum number of special characters that must be in the password.
+The default is 1.
+
+The
+.B \-p
+flag names a program to set the password.
+By default, /etc/yppasswd is used if present, otherwise /bin/passwd is used.
+
+The
+.B \-2
+flag causes characters to be chosen so that they alternate between
+right and left hands (qwerty-style), making it harder for anyone
+watching passwords being entered.  This can also make it easier for
+a password-guessing program.
+
+The
+.B \-v
+flag causes the password-setting interaction to be visible.
+By default, it is suppressed.
+
+.SH EXAMPLE
+The following example creates a 15-character password
+that contains at least 3 digits and 5 uppercase characters.
+
+	mkpasswd -l 15 -d 3 -C 5
+
+.SH SEE ALSO
+.I
+"Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs"
+\fRby Don Libes,
+O'Reilly and Associates, January 1995.
+.SH AUTHOR
+Don Libes, National Institute of Standards and Technology
+
+.B mkpasswd
+is in the public domain.
+NIST and I would
+appreciate credit if this program or parts of it are used.
+
+
diff --git a/raw/man1/mktemp.1 b/raw/man1/mktemp.1
new file mode 100644
index 0000000..d309560
--- /dev/null
+++ b/raw/man1/mktemp.1
@@ -0,0 +1,243 @@
+.\"	$Id: mktemp.1,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.\"
+.\" Copyright (c) 1996, 2000, 2001 Todd C. Miller <Todd.Miller at courtesan.com>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote products
+.\"    derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+.\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.TH MKTEMP 1 "30 September 2001"
+.SH NAME
+\fBmktemp\fP \- make temporary filename (unique)
+.SH SYNOPSIS
+\fBmktemp\fP [\fB\-V\fP] | [\fB\-dqtu\fP] [\fB\-p\fP \fIdirectory\fP] [\fItemplate\fP]
+.SH DESCRIPTION
+The
+.B mktemp
+utility takes the given filename
+.I template
+and overwrites a portion of it to create a unique filename.
+The
+.I template
+may be any filename with some number of
+`Xs' appended to it, for example
+.I /tmp/tfile.XXXXXXXXXX.
+If no
+.I template
+is specified a default of
+.I tmp.XXXXXXXXXX
+is used and the
+.B \-t
+flag is implied (see below).
+.PP
+The trailing `Xs' are replaced with a combination
+of the current process number and random letters.
+The name chosen depends both on the number of `Xs' in the
+.I template
+and the number of collisions with pre\-existing files.
+The number of unique filenames
+.B mktemp
+can return depends on the number of
+`Xs' provided; ten `Xs' will result in
+.B mktemp
+testing roughly 26 ** 10 combinations.
+.PP
+If
+.B mktemp
+can successfully generate a unique filename, the file (or directory)
+is created with file permissions such that it is only readable and writable
+by its owner (unless the
+.B \-u
+flag is given) and the filename is printed to standard output.
+.PP
+.B mktemp
+is provided to allow shell scripts to safely use temporary
+files.  Traditionally, many shell scripts take the name of the program with
+the PID as a suffix and use that as a temporary filename.
+This kind of naming scheme is predictable and the race condition it creates
+is easy for an attacker to win.
+A safer, though still inferior approach
+is to make a temporary directory using the same naming scheme.
+While this does allow one to guarantee that a temporary file will not be
+subverted, it still allows a simple denial of service attack.
+For these reasons it is suggested that
+.B mktemp
+be used instead.
+.PP
+The options are as follows:
+.TP
+.B \-V
+Print the version and exit.
+.TP
+.B \-d
+Make a directory instead of a file.
+.TP
+.BI "\-p " directory
+Use the specified
+.I directory
+as a prefix when generating the temporary filename.
+The
+.I directory
+will be overridden by the user's
+.SM TMPDIR
+environment variable if it is set.
+This option implies the
+.B \-t
+flag (see below).
+.TP
+.B \-q
+Fail silently if an error occurs.
+This is useful if
+a script does not want error output to go to standard error.
+.TP
+.B \-t
+Generate a path rooted in a temporary directory.
+This directory is chosen as follows:
+.RS
+.IP \(bu
+If the user's
+.SM TMPDIR
+environment variable is set, the directory contained therein is used.
+.IP \(bu
+Otherwise, if the
+.B \-p
+flag was given the specified directory is used.
+.IP \(bu
+If none of the above apply,
+.I /tmp
+is used.
+.RE
+.PP
+In this mode, the
+.I template
+(if specified) should be a directory component (as opposed to a full path)
+and thus should not contain any forward slashes.
+.TP
+.B \-u
+Operate in ``unsafe'' mode.
+The temp file will be unlinked before
+.B mktemp
+exits.  This is slightly better than mktemp(3)
+but still introduces a race condition.  Use of this
+option is not encouraged.
+.PP
+The
+.B mktemp
+utility
+exits with a value of 0 on success or 1 on failure.
+.SH EXAMPLES
+The following sh(1)
+fragment illustrates a simple use of
+.B mktemp
+where the script should quit if it cannot get a safe
+temporary file.
+.RS
+.nf
+
+TMPFILE=`mktemp /tmp/example.XXXXXXXXXX` || exit 1
+echo "program output" >> $TMPFILE
+
+.fi
+.RE
+The same fragment with support for a user's
+.SM TMPDIR
+environment variable can be written as follows.
+.RS
+.nf
+
+TMPFILE=`mktemp \-t example.XXXXXXXXXX` || exit 1
+echo "program output" >> $TMPFILE
+
+.fi
+.RE
+This can be further simplified if we don't care about the actual name of
+the temporary file.  In this case the
+.B \-t
+flag is implied.
+.RS
+.nf
+
+TMPFILE=`mktemp` || exit 1
+echo "program output" >> $TMPFILE
+
+.fi
+.RE
+In some cases, it may be desirable to use a default temporary directory
+other than
+.I /tmp.
+In this example the temporary file will be created in
+.I /extra/tmp
+unless the user's
+.SM TMPDIR
+environment variable specifies otherwise.
+.RS
+.nf
+
+TMPFILE=`mktemp \-p /extra/tmp example.XXXXXXXXXX` || exit 1
+echo "program output" >> $TMPFILE
+
+.fi
+.RE
+In some cases, we want the script to catch the error.
+For instance, if we attempt to create two temporary files and
+the second one fails we need to remove the first before exiting.
+.RS
+.nf
+
+TMP1=`mktemp \-t example.1.XXXXXXXXXX` || exit 1
+TMP2=`mktemp \-t example.2.XXXXXXXXXX`
+if [ $? \-ne 0 ]; then
+	rm \-f $TMP1
+	exit 1
+fi
+
+.fi
+.RE
+Or perhaps you don't want to exit if
+.B mktemp
+is unable to create the file.
+In this case you can protect that part of the script thusly.
+.RS
+.nf
+
+TMPFILE=`mktemp \-t example.XXXXXXXXXX` && {
+	# Safe to use $TMPFILE in this block
+	echo data > $TMPFILE
+	...
+	rm \-f $TMPFILE
+}
+
+.fi
+.RE
+.SH ENVIRONMENT
+.IP TMPDIR 8
+directory in which to place the temporary file when in
+.B \-t
+mode
+.SH SEE ALSO
+.BR mkdtemp (3),
+.BR mkstemp (3),
+.BR mktemp (3)
+.SH HISTORY
+The
+.B mktemp
+utility appeared in OpenBSD 2.1.
diff --git a/raw/man1/more.1 b/raw/man1/more.1
new file mode 100644
index 0000000..0142d8c
--- /dev/null
+++ b/raw/man1/more.1
@@ -0,0 +1,202 @@
+.\" Copyright (c) 1988, 1990 The Regents of the University of California.
+.\" Copyright (c) 1988 Mark Nudleman
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	@(#)more.1	5.15 (Berkeley) 7/29/91
+.\"
+.\" Revised: Fri Dec 25 15:27:27 1992 by root
+.\" 25Dec92: Extensive changes made by Rik Faith (faith at cs.unc.edu) to
+.\" conform with the more 5.19 currently in use by the Linux community.
+.\"
+.\" .Dd July 29, 1991 (Modified December 25, 1992)
+.Dd December 25, 1992
+.Dt MORE 1
+.Os "Linux 0.98"
+.Sh NAME
+.Nm more
+.Nd file perusal filter for crt viewing
+.Sh SYNOPSIS
+.Nm more
+.Op Fl dlfpcsu
+.Op Fl num
+.Op +/ pattern
+.Op + linenum
+.Op Ar
+.Sh DESCRIPTION
+.Nm More
+is a filter for paging through text one screenful at a time.  This version
+is especially primitve.  Users should realize that
+.Xr less 1
+provides
+.Xr more 1
+emulation and extensive enhancements.
+.Sh OPTIONS
+Command line options are described below.
+Options are also taken from the environment variable
+.Ev MORE
+(make sure to precede them with a dash (``-'')) but command
+line options will override them.
+.Bl -tag -width flag
+.It Fl num
+This option specifies an integer which is the screen size (in lines).
+.It Fl d
+.Nm more
+will prompt the user with the message "[Press space to continue, 'q' to
+quit.]" and will display "[Press 'h' for instructions.]" instead of ringing
+the bell when an illegal key is pressed.
+.It Fl l
+.Nm more
+usually treats
+.Ic \&^L
+(form feed) as a special character, and will pause after any line that
+contains a form feed.  The
+.Fl l
+option will prevent this behavior.
+.It Fl f
+Causes
+.Nm more
+to count logical, rather than screen lines (i.e., long lines are not
+folded).
+.It Fl p
+Do not scroll.  Instead, clear the whole screen and then display the text.
+.It Fl c
+Do not scroll.  Instead, paint each screen from the top, clearing the
+remainder of each line as it is displayed.
+.It Fl s
+Squeeze multiple blank lines into one.
+.It Fl u
+Suppress underlining.
+.It Ic +/
+The
+.Ic +/
+option specifies a string that will be searched for before
+each file is displayed.
+.It Ic +num
+Start at line number
+.Ic num .
+.El
+.Sh COMMANDS
+Interactive commands for
+.Nm more
+are based on
+.Xr vi  1  .
+Some commands may be preceded by a decimal number, called k in the
+descriptions below.
+In the following descriptions, ^X means control-X.
+.Pp
+.Bl -tag -width Ic
+.It Ic h No or Ic ?
+Help: display a summary of these commands.
+If you forget all the other commands, remember this one.
+.It Ic SPACE
+Display next k lines of text.  Defaults to current screen size.
+.It Ic z
+Display next k lines of text.  Defaults to current screen size.  Argument
+becomes new default.
+.It Ic RETURN
+Display next k lines of text.  Defaults to 1.  Argument becomes new
+default.
+.It Ic d No or Ic \&^D
+Scroll k lines.  Default is current scroll size, initially 11.  Argument
+becomes new default.
+.It Xo
+.Ic q
+.No or
+.Ic Q
+.No or
+.Ic INTERRUPT
+.Xc
+Exit.
+.It Ic s
+Skip forward k lines of text.  Defaults to 1.
+.It Ic f
+Skip forward k screenfuls of text.  Defaults to 1.
+.It Ic b No or Ic \&^B
+Skip backwards k screenfuls of text.  Defaults to 1.
+Only works with files, not pipes.
+.It Ic '
+Go to place where previous search started.
+.It Ic =
+Display current line number.
+.It Ic \&/ Ns Ar pattern
+Search for kth occurrence of regular expression.  Defaults to 1.
+.It Ic n
+Search for kth occurrence of last r.e.  Defaults to 1.
+.It Ic !<cmd> No or Ic :!<cmd>
+Execute <cmd> in a subshell
+.It Ic v
+Start up an editor at current line.
+The editor is taken from the environment variable VISUAL if defined,
+or EDITOR if VISUAL is not defined,
+or defaults to "vi" if neither VISUAL nor EDITOR is defined.
+.It Ic \&^L
+Redraw screen
+.It Ic :n
+Go to kth next file.  Defaults to 1.
+.It Ic :p
+Go to kth previous file.  Defaults to 1.
+.It Ic :f
+Display current file name and line number
+.It Ic \&.
+Repeat previous command
+.El
+.Sh ENVIRONMENT
+.Nm More
+utilizes the following environment variables, if they exist:
+.Bl -tag -width Fl
+.It Ev MORE
+This variable may be set with favored options to
+.Nm more .
+.It Ev SHELL
+Current shell in use (normally set by the shell at login time).
+.It Ev TERM
+Specifies terminal type, used by more to get the terminal
+characteristics necessary to manipulate the screen.
+.El
+.Sh SEE ALSO
+.Xr vi 1
+.Xr less 1
+.Sh AUTHORS
+Eric Shienbrood, UC Berkeley
+.br
+Modified by Geoff Peck, UCB to add underlining, single spacing
+.br
+Modified by John Foderaro, UCB to add -c and MORE environment variable
+.Sh HISTORY
+The
+.Nm more
+command appeared in
+.Bx 3.0 .
+This man page documents
+.Nm more
+version 5.19 (Berkeley 6/29/88), which is currently in use in the Linux
+community.  Documentation was produced using several other versions of the
+man page, and extensive inspection of the source code.
diff --git a/raw/man1/mv.1 b/raw/man1/mv.1
new file mode 100644
index 0000000..dcebc47
--- /dev/null
+++ b/raw/man1/mv.1
@@ -0,0 +1,97 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH MV "1" "October 2003" "mv (coreutils) 5.0" FSF
+.SH NAME
+mv \- move (rename) files
+.SH SYNOPSIS
+.B mv
+[\fIOPTION\fR]... \fISOURCE DEST\fR
+.br
+.B mv
+[\fIOPTION\fR]... \fISOURCE\fR... \fIDIRECTORY\fR
+.br
+.B mv
+[\fIOPTION\fR]... \fI--target-directory=DIRECTORY SOURCE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+do not prompt before overwriting
+equivalent to \fB\-\-reply\fR=\fIyes\fR
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt before overwrite
+equivalent to \fB\-\-reply\fR=\fIquery\fR
+.TP
+\fB\-\-reply=\fR{yes,no,query}
+specify how to handle the prompt about an
+existing destination file
+.TP
+\fB\-\-strip\-trailing\-slashes\fR remove any trailing slashes from each SOURCE
+argument
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+move all SOURCE arguments into DIRECTORY
+.TP
+\fB\-u\fR, \fB\-\-update\fR
+move only when the SOURCE file is newer
+than the destination file or when the
+destination file is missing
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable.  Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.SH AUTHOR
+Written by Mike Parker, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B mv
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B mv
+programs are properly installed at your site, the command
+.IP
+.B info mv
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/newgrp.1 b/raw/man1/newgrp.1
new file mode 100644
index 0000000..de420ec
--- /dev/null
+++ b/raw/man1/newgrp.1
@@ -0,0 +1,28 @@
+.\" Original author unknown.  This man page is in the public domain.
+.\" Modified Sat Oct  9 17:46:48 1993 by faith at cs.unc.edu
+.TH NEWGRP 1 "9 October 1993" "Linux 1.2" "Linux Programmer's Manual"
+.SH NAME
+newgrp \- log in to a new group
+.SH SYNOPSIS
+.BI "newgrp [ " group " ]"
+.SH DESCRIPTION
+.B Newgrp
+changes the group identification of its caller, analogously to
+.BR login (1).
+The same person remains logged in, and the current directory
+is unchanged, but calculations of access permissions to files are performed
+with respect to the new group ID.
+.LP
+If no group is specified, the GID is changed to the login GID.
+.LP
+.SH FILES
+.I /etc/group
+.br
+.I /etc/passwd
+
+.SH "SEE ALSO"
+.BR login "(1), " group (5)
+
+.SH AUTHOR
+Originally by Michael Haardt. Currently maintained by 
+Peter Orbaek (poe at daimi.aau.dk).
diff --git a/raw/man1/nice.1 b/raw/man1/nice.1
new file mode 100644
index 0000000..a4c7cab
--- /dev/null
+++ b/raw/man1/nice.1
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH NICE "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+nice \- run a program with modified scheduling priority
+.SH SYNOPSIS
+.B nice
+[\fIOPTION\fR] [\fICOMMAND \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Run COMMAND with an adjusted scheduling priority.
+With no COMMAND, print the current scheduling priority.  ADJUST is 10
+by default.  Range goes from \fB\-20\fR (highest priority) to 19 (lowest).
+.TP
+\fB\-n\fR, \fB\-\-adjustment\fR=\fIADJUST\fR
+increment priority by ADJUST first
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B nice
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B nice
+programs are properly installed at your site, the command
+.IP
+.B info nice
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/nmblookup.1 b/raw/man1/nmblookup.1
new file mode 100644
index 0000000..8dc68a3
--- /dev/null
+++ b/raw/man1/nmblookup.1
@@ -0,0 +1,185 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "NMBLOOKUP" 1 "" "" ""
+.SH NAME
+nmblookup \- NetBIOS over TCP/IP client used to lookup NetBIOS names
+.SH "SYNOPSIS"
+
+.nf
+\fBnmblookup\fR [-M] [-R] [-S] [-r] [-A] [-h] [-B <broadcast address>] [-U <unicast
+          address>] [-d <debug level>] [-s <smb config file>] [-i <NetBIOS scope>]
+          [-T] [-f] {name}
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBnmblookup\fR is used to query NetBIOS names and map them to IP addresses in a network using NetBIOS over TCP/IP queries\&. The options allow the name queries to be directed at a particular IP broadcast area or to a particular machine\&. All queries are done over UDP\&.
+
+.SH "OPTIONS"
+
+.TP
+-M
+Searches for a master browser by looking up the NetBIOS name \fIname\fR with a type of \fB0x1d\fR\&. If \fI name\fR is "-" then it does a lookup on the special name \fB__MSBROWSE__\fR\&. Please note that in order to use the name "-", you need to make sure "-" isn't parsed as an argument, e\&.g\&. use : \fBnmblookup -M -- -\fR\&.
+
+
+.TP
+-R
+Set the recursion desired bit in the packet to do a recursive lookup\&. This is used when sending a name query to a machine running a WINS server and the user wishes to query the names in the WINS server\&. If this bit is unset the normal (broadcast responding) NetBIOS processing code on a machine is used instead\&. See RFC1001, RFC1002 for details\&.
+
+
+.TP
+-S
+Once the name query has returned an IP address then do a node status query as well\&. A node status query returns the NetBIOS names registered by a host\&.
+
+
+.TP
+-r
+Try and bind to UDP port 137 to send and receive UDP datagrams\&. The reason for this option is a bug in Windows 95 where it ignores the source port of the requesting packet and only replies to UDP port 137\&. Unfortunately, on most UNIX systems root privilege is needed to bind to this port, and in addition, if the \fBnmbd\fR(8) daemon is running on this machine it also binds to this port\&.
+
+
+.TP
+-A
+Interpret \fIname\fR as an IP Address and do a node status query on this address\&.
+
+
+.TP
+-n <primary NetBIOS name>
+This option allows you to override the NetBIOS name that Samba uses for itself\&. This is identical to setting the \fInetbios name\fR parameter in the \fIsmb\&.conf\fR file\&. However, a command line setting will take precedence over settings in \fIsmb\&.conf\fR\&.
+
+
+.TP
+-i <scope>
+This specifies a NetBIOS scope that \fBnmblookup\fR will use to communicate with when generating NetBIOS names\&. For details on the use of NetBIOS scopes, see rfc1001\&.txt and rfc1002\&.txt\&. NetBIOS scopes are \fBvery\fR rarely used, only set this parameter if you are the system administrator in charge of all the NetBIOS systems you communicate with\&.
+
+
+.TP
+-W|--workgroup=domain
+Set the SMB domain of the username\&. This overrides the default domain which is the domain defined in smb\&.conf\&. If the domain specified is the same as the servers NetBIOS name, it causes the client to log on using the servers local SAM (as opposed to the Domain SAM)\&.
+
+
+.TP
+-O socket options
+TCP socket options to set on the client socket\&. See the socket options parameter in the \fIsmb\&.conf\fR manual page for the list of valid options\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-B <broadcast address>
+Send the query to the given broadcast address\&. Without this option the default behavior of nmblookup is to send the query to the broadcast address of the network interfaces as either auto-detected or defined in the \fIinterfaces\fR parameter of the \fBsmb.conf\fR(5) file\&.
+
+
+.TP
+-U <unicast address>
+Do a unicast query to the specified address or host \fIunicast address\fR\&. This option (along with the \fI-R\fR option) is needed to query a WINS server\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR is an integer from 0 to 10\&. The default value if this parameter is not specified is zero\&.
+
+
+The higher this value, the more detail will be logged to the log files about the activities of the server\&. At level 0, only critical errors and serious warnings will be logged\&. Level 1 is a reasonable level for day-to-day running - it generates a small amount of information about operations carried out\&.
+
+
+Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem\&. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic\&.
+
+
+Note that specifying this parameter here will override the \fIlog level\fR parameter in the \fIsmb\&.conf\fR file\&.
+
+
+.TP
+-l|--logfile=logbasename
+File name for log/debug files\&. The extension \fB"\&.client"\fR will be appended\&. The log file is never removed by the client\&.
+
+
+.TP
+-T
+This causes any IP addresses found in the lookup to be looked up via a reverse DNS lookup into a DNS name, and printed out before each
+
+
+\fBIP address \&.\&.\&.\&. NetBIOS name\fR
+
+
+pair that is the normal output\&.
+
+
+.TP
+-f
+Show which flags apply to the name that has been looked up\&. Possible answers are zero or more of: Response, Authoritative, Truncated, Recursion_Desired, Recursion_Available, Broadcast\&.
+
+
+.TP
+name
+This is the NetBIOS name being queried\&. Depending upon the previous options this may be a NetBIOS name or IP address\&. If a NetBIOS name then the different name types may be specified by appending '#<type>' to the name\&. This name may also be '*', which will return all registered names within a broadcast area\&.
+
+
+.SH "EXAMPLES"
+
+.PP
+\fBnmblookup\fR can be used to query a WINS server (in the same way \fBnslookup\fR is used to query DNS servers)\&. To query a WINS server, \fBnmblookup\fR must be called like this:
+
+.PP
+\fBnmblookup -U server -R 'name'\fR
+
+.PP
+For example, running :
+
+.PP
+\fBnmblookup -U samba.org -R 'IRIX#1B'\fR
+
+.PP
+would query the WINS server samba\&.org for the domain master browser (1B name type) for the IRIX workgroup\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBnmbd\fR(8), \fBsamba\fR(7), and \fBsmb.conf\fR(5)\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/nohup.1 b/raw/man1/nohup.1
new file mode 100644
index 0000000..81aaec0
--- /dev/null
+++ b/raw/man1/nohup.1
@@ -0,0 +1,34 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH NOHUP "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+nohup \- run a command immune to hangups, with output to a non-tty
+.SH SYNOPSIS
+.B nohup
+\fICOMMAND \fR[\fIARG\fR]...
+.br
+.B nohup
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Run COMMAND, ignoring hangup signals.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH "SEE ALSO"
+The full documentation for
+.B nohup
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B nohup
+programs are properly installed at your site, the command
+.IP
+.B info nohup
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/nroff.1 b/raw/man1/nroff.1
new file mode 100644
index 0000000..ef67cae
--- /dev/null
+++ b/raw/man1/nroff.1
@@ -0,0 +1,144 @@
+.ig
+Copyright (C) 1989-2001 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.TH NROFF 1 "23 September 2003" "Groff Version 1.18.1"
+.SH NAME
+nroff \- emulate nroff command with groff
+.SH SYNOPSIS
+.nr a \n(.j
+.ad l
+.nr i \n(.i
+.in +\w'\fBnroff 'u
+.ti \niu
+.B nroff
+.de OP
+.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
+.el .RB "[\ " "\\$1" "\ ]"
+..
+.OP \-h
+.OP \-i
+.OP \-m name
+.OP \-n num
+.OP \-o list
+.OP \-p
+.OP \-r cn
+.OP \-S
+.OP \-t
+.OP \-T name
+.OP \-U
+.OP \-v
+.RI "[\ " "file" "\ .\|.\|.\ ]"
+.br
+.ad \na
+.SH DESCRIPTION
+The
+.B nroff
+script emulates the
+.B nroff
+command using groff.
+Only 
+.BR ascii ,
+.BR ascii8 ,
+.BR latin1 ,
+.BR utf8 ,
+.BR nippon ,
+and
+.B cp1047
+are valid arguments for the
+.B -T
+option.
+If an invalid or no
+.BR \-T
+option is given,
+.B nroff
+checks the current locale to select a default output device.
+It first tries the
+.B locale
+program, then the environment variables
+.BR LC_ALL ,
+.BR LC_CTYPE ,
+and
+.BR LANG ,
+and finally the
+.B LESSCHARSET
+environment variable.
+.PP
+The
+.B \-h
+and
+.B \-c
+options
+are equivalent to
+.BR grotty 's
+options
+.B \-h
+(using tabs in the output) and
+.B \-c
+(using the old output scheme instead of SGR escape sequences).
+The
+.BR \-C ,
+.BR \-i ,
+.BR \-n ,
+.BR \-m ,
+.BR \-o ,
+and
+.B \-r
+options have the effect described in
+.BR troff (1).
+In addition,
+.B nroff
+silently ignores the options
+.BR \-e ,
+.BR \-q ,
+and
+.BR \-s
+(which are not implemented in
+.BR troff ).
+Options 
+.B \-p
+(pic),
+.B \-t
+(tbl),
+.B \-S
+(safer), and
+.B \-U
+(unsafe) are passed to
+.BR groff . 
+.B \-v
+shows the version number.
+.SH ENVIRONMENT
+.TP
+.SM
+.B GROFF_BIN_PATH
+A colon separated list of directories in which to search for the
+.B groff
+executable before searching in PATH.  If unset, `/usr/bin' is used.
+.SH NOTES
+This shell script is basically intended for use with
+.BR man (1),
+so warnings are suppressed.
+nroff-style character definitions (in the file tty-char.tmac) are also
+loaded to emulate unrepresentable glyphs.
+.SH "SEE ALSO"
+.BR groff (1),
+.BR troff (1),
+.BR grotty (1)
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/raw/man1/octave-bug.1 b/raw/man1/octave-bug.1
new file mode 100644
index 0000000..d15cd6d
--- /dev/null
+++ b/raw/man1/octave-bug.1
@@ -0,0 +1,76 @@
+.\" Man page for octave-bug
+.\"
+.\" Copyright (C) 1996 - 2000 John W. Eaton
+.\"
+.\" This file is part of Octave.
+.\"
+.\" Octave 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, or (at your option) any
+.\" later version.
+.\"
+.\" Octave is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with Octave; see the file COPYING.  If not, write to the Free
+.\" Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+.\" 02111-1307, USA.
+.\"
+.\" This page was contributed by Dirk Eddelbuettel <edd at debian.org>
+.\" 
+.TH octave-bug 1 "6 March 2000" GNU
+.LO 1
+.SH NAME
+octave-bug \- report a bug in GNU Octave
+.SH SYNOPSIS
+.B octave-bug
+.RB [\| \-s
+.IR subject \|]
+.SH DESCRIPTION
+.B octave-bug
+is a shell script to help the user compose and mail bug reports
+concerning Octave in a standard format.  
+.B octave-bug
+is typically invoked by the Octave command
+.B bug_report
+which is intended to be called interactively from within Octave. This
+provides the best way to submit a bug report for Octave. It creates a
+template bug report file and starts an editor on that file.  The bug report
+will be sent to the bug-octave mailing list once the editing has been
+completed (this assumes of course that your system can use email). However,
+the user could also call \fBoctave-bug\fR outside of Octave.
+.PP
+Please read the `Bugs' chapter in the Octave manual to find out how to submit
+a bug report that will enable the Octave maintainers to fix the problem.  If
+you are unable to use the bug_report command, send your message to the
+bug-octave mailing list, bug-octave at bevo.che.wisc.edu.
+.SH OPTIONS
+.TP
+.BI -s\  subject
+Specify a subject line for the bug report.  Spaces in the subject must
+be quoted.
+.SH ENVIRONMENT VARIABLES
+.B 
+octave-bug 
+uses the environment variables
+.BR USER, 
+.BR EDITOR, 
+and 
+.B PAGER 
+which can be used for customization.
+.SH VERSION
+This document was last revised for Octave version 2.0.16.
+.SH SEE ALSO
+.BR octave (1),
+.BR bashbug (1)     
+.SH AUTHOR
+.nf
+John W. Eaton
+Department of Chemical Engineering
+University of Wisconsin-Madison
+Madison, WI 53706
+USA
+<jwe at bevo.che.wisc.edu>       
diff --git a/raw/man1/octave-config.1 b/raw/man1/octave-config.1
new file mode 100644
index 0000000..bfebf49
--- /dev/null
+++ b/raw/man1/octave-config.1
@@ -0,0 +1,37 @@
+.\" Man page contributed by Dirk Eddelbuettel <edd at debian.org>
+.\" and released under the GNU GPL
+.TH OCTAVE-CONFIG 1 "19 February 2003" "GNU Octave"
+.SH NAME
+octave-config - GNU Octave component and library information retrieval
+.SH SYNOPSIS
+.BR octave-config\  [--m-site-dir]\ [--oct-site-dir]\ [-v|--version]\ 
+[-h|-?|--help]
+.SH DESCRIPTION
+.PP
+\fIoctave-config\fP is a tool to obtain directory information for 
+.f .oct
+and 
+.f .m
+files for
+.BR octave (1).
+.SH OPTIONS
+.l
+\fIoctave-config\fP accepts the following options:
+.TP 8
+.B \--m-site-dir
+Display the main directory for local, or site-specific, .m script files.
+.TP 8
+.B \--oct-site-dir
+Display the main directory for local, or site-specific, .oct dynamic-link libraries.
+.B \-v|\-\-version
+Display the version number of 
+.BR octave (1).
+.TP 8
+.B \-h|-?|--help
+Display a help page about
+\fIoctave-config\fP
+.SH AUTHOR
+John W. Eaton <jwe at bevo.che.wisc.edu>
+
+This manual page was contributed by Dirk Eddelbuettel <edd at debian.org> 
+for the Debian GNU/Linux distribution but may be used by others.
diff --git a/raw/man1/octave.1 b/raw/man1/octave.1
new file mode 100644
index 0000000..8db1d43
--- /dev/null
+++ b/raw/man1/octave.1
@@ -0,0 +1,82 @@
+.\" Man page for Octave
+.\"
+.\" Copyright (C) 1996, 1997 John W. Eaton
+.\"
+.\" This file is part of Octave.
+.\"
+.\" Octave 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, or (at your option) any
+.\" later version.
+.\"
+.\" Octave is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with Octave; see the file COPYING.  If not, write to the Free
+.\" Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+.\" 02111-1307, USA. 
+.\"
+.TH Octave 1 "Jan 8 1996"
+.LO 1
+.SH NAME
+octave \- A high-level interactive language for numerical computations.
+.SH SYNOPSIS
+.nf
+octave [options]
+.fi
+.SH OPTIONS
+The complete set of command-line options for octave is available by
+running the command
+.nf
+
+    octave --help
+
+.fi
+.SH DESCRIPTION
+Octave is a high-level language, primarily intended for numerical
+computations.  It provides a convenient command line interface for
+solving linear and nonlinear problems numerically.
+.SH DOCUMENTATION
+The primary documentation for Octave is written using Texinfo, the GNU
+documentation system, which allows the same source files to be used to
+produce on-line and printed versions of the manual.
+.PP
+You can read the on-line copy of the Octave documentation by issuing
+the command
+.nf
+
+    octave:13> help -i
+
+.fi
+while running Octave interactively, by using the GNU Emacs info mode,
+or by running standalone programs like info or xinfo.
+.SH BUGS
+The best way to submit a bug report for Octave is to use the command
+.nf
+
+     octave:13> bug_report
+
+.fi
+while running Octave interactively.  This will create a template bug
+report file and start an editor on that file.  Your 
+message will be sent to the bug-octave mailing list
+once you are finished editing the template.
+.PP
+If you are unable to use the bug_report command, send your message
+to the
+.B bug-octave at bevo.che.wisc.edu
+mailing list by some other means.  Please read the `Bugs' chapter in
+the Octave manual to find out how to submit a bug report that will
+enable the Octave maintainers to fix the problem.
+.SH AUTHOR
+.nf
+John W. Eaton
+Department of Chemical Engineering
+University of Wisconsin-Madison
+Madison, WI 53706
+USA
+<jwe at bevo.che.wisc.edu>
+.fi
diff --git a/raw/man1/paste.1 b/raw/man1/paste.1
new file mode 100644
index 0000000..3312808
--- /dev/null
+++ b/raw/man1/paste.1
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH PASTE "1" "October 2003" "paste (coreutils) 5.0" FSF
+.SH NAME
+paste \- merge lines of files
+.SH SYNOPSIS
+.B paste
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write lines consisting of the sequentially corresponding lines from
+each FILE, separated by TABs, to standard output.
+With no FILE, or when FILE is -, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-d\fR, \fB\-\-delimiters\fR=\fILIST\fR
+reuse characters from LIST instead of TABs
+.TP
+\fB\-s\fR, \fB\-\-serial\fR
+paste one file at a time instead of in parallel
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David M. Ihnat and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B paste
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B paste
+programs are properly installed at your site, the command
+.IP
+.B info paste
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/perlbook.1 b/raw/man1/perlbook.1
new file mode 100644
index 0000000..429209e
--- /dev/null
+++ b/raw/man1/perlbook.1
@@ -0,0 +1,146 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLBOOK 1"
+.TH PERLBOOK 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlbook \- Perl book information
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The Camel Book, officially known as \fIProgramming Perl, Third Edition\fR,
+by Larry Wall et al, is the definitive reference work covering nearly
+all of Perl.  You can order it and other Perl books from O'Reilly &
+Associates, 1\-800\-998\-9938.  Local/overseas is +1 707 829 0515.  If you
+can locate an O'Reilly order form, you can also fax to +1 707 829 0104.
+If you're web\-connected, you can even mosey on over to http://www.oreilly.com/
+for an online order form.
+.PP
+Other Perl books from various publishers and authors 
+can be found listed in perlfaq2.
diff --git a/raw/man1/perlboot.1 b/raw/man1/perlboot.1
new file mode 100644
index 0000000..0d802ae
--- /dev/null
+++ b/raw/man1/perlboot.1
@@ -0,0 +1,1046 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLBOOT 1"
+.TH PERLBOOT 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlboot \- Beginner's Object\-Oriented Tutorial
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+If you're not familiar with objects from other languages, some of the
+other Perl object documentation may be a little daunting, such as
+perlobj, a basic reference in using objects, and perltoot, which
+introduces readers to the peculiarities of Perl's object system in a
+tutorial way.
+.PP
+So, let's take a different approach, presuming no prior object
+experience. It helps if you know about subroutines (perlsub),
+references (perlref et. seq.), and packages (perlmod), so become
+familiar with those first if you haven't already.
+.Sh "If we could talk to the animals..."
+.IX Subsection "If we could talk to the animals..."
+Let's let the animals talk for a moment:
+.PP
+.Vb 9
+\&    sub Cow::speak {
+\&      print "a Cow goes moooo!\en";
+\&    }
+\&    sub Horse::speak {
+\&      print "a Horse goes neigh!\en";
+\&    }
+\&    sub Sheep::speak {
+\&      print "a Sheep goes baaaah!\en"
+\&    }
+.Ve
+.PP
+.Vb 3
+\&    Cow::speak;
+\&    Horse::speak;
+\&    Sheep::speak;
+.Ve
+.PP
+This results in:
+.PP
+.Vb 3
+\&    a Cow goes moooo!
+\&    a Horse goes neigh!
+\&    a Sheep goes baaaah!
+.Ve
+.PP
+Nothing spectacular here.  Simple subroutines, albeit from separate
+packages, and called using the full package name.  So let's create
+an entire pasture:
+.PP
+.Vb 5
+\&    # Cow::speak, Horse::speak, Sheep::speak as before
+\&    @pasture = qw(Cow Cow Horse Sheep Sheep);
+\&    foreach $animal (@pasture) {
+\&      &{$animal."::speak"};
+\&    }
+.Ve
+.PP
+This results in:
+.PP
+.Vb 5
+\&    a Cow goes moooo!
+\&    a Cow goes moooo!
+\&    a Horse goes neigh!
+\&    a Sheep goes baaaah!
+\&    a Sheep goes baaaah!
+.Ve
+.PP
+Wow.  That symbolic coderef de-referencing there is pretty nasty.
+We're counting on \f(CW\*(C`no strict subs\*(C'\fR mode, certainly not recommended
+for larger programs.  And why was that necessary?  Because the name of
+the package seems to be inseparable from the name of the subroutine we
+want to invoke within that package.
+.PP
+Or is it?
+.Sh "Introducing the method invocation arrow"
+.IX Subsection "Introducing the method invocation arrow"
+For now, let's say that \f(CW\*(C`Class\->method\*(C'\fR invokes subroutine
+\&\f(CW\*(C`method\*(C'\fR in package \f(CW\*(C`Class\*(C'\fR.  (Here, \*(L"Class\*(R" is used in its
+\&\*(L"category\*(R" meaning, not its \*(L"scholastic\*(R" meaning.) That's not
+completely accurate, but we'll do this one step at a time.  Now let's
+use it like so:
+.PP
+.Vb 4
+\&    # Cow::speak, Horse::speak, Sheep::speak as before
+\&    Cow->speak;
+\&    Horse->speak;
+\&    Sheep->speak;
+.Ve
+.PP
+And once again, this results in:
+.PP
+.Vb 3
+\&    a Cow goes moooo!
+\&    a Horse goes neigh!
+\&    a Sheep goes baaaah!
+.Ve
+.PP
+That's not fun yet.  Same number of characters, all constant, no
+variables.  But yet, the parts are separable now.  Watch:
+.PP
+.Vb 2
+\&    $a = "Cow";
+\&    $a->speak; # invokes Cow->speak
+.Ve
+.PP
+Ahh!  Now that the package name has been parted from the subroutine
+name, we can use a variable package name.  And this time, we've got
+something that works even when \f(CW\*(C`use strict refs\*(C'\fR is enabled.
+.Sh "Invoking a barnyard"
+.IX Subsection "Invoking a barnyard"
+Let's take that new arrow invocation and put it back in the barnyard
+example:
+.PP
+.Vb 9
+\&    sub Cow::speak {
+\&      print "a Cow goes moooo!\en";
+\&    }
+\&    sub Horse::speak {
+\&      print "a Horse goes neigh!\en";
+\&    }
+\&    sub Sheep::speak {
+\&      print "a Sheep goes baaaah!\en"
+\&    }
+.Ve
+.PP
+.Vb 4
+\&    @pasture = qw(Cow Cow Horse Sheep Sheep);
+\&    foreach $animal (@pasture) {
+\&      $animal->speak;
+\&    }
+.Ve
+.PP
+There!  Now we have the animals all talking, and safely at that,
+without the use of symbolic coderefs.
+.PP
+But look at all that common code.  Each of the \f(CW\*(C`speak\*(C'\fR routines has a
+similar structure: a \f(CW\*(C`print\*(C'\fR operator and a string that contains
+common text, except for two of the words.  It'd be nice if we could
+factor out the commonality, in case we decide later to change it all
+to \f(CW\*(C`says\*(C'\fR instead of \f(CW\*(C`goes\*(C'\fR.
+.PP
+And we actually have a way of doing that without much fuss, but we
+have to hear a bit more about what the method invocation arrow is
+actually doing for us.
+.Sh "The extra parameter of method invocation"
+.IX Subsection "The extra parameter of method invocation"
+The invocation of:
+.PP
+.Vb 1
+\&    Class->method(@args)
+.Ve
+.PP
+attempts to invoke subroutine \f(CW\*(C`Class::method\*(C'\fR as:
+.PP
+.Vb 1
+\&    Class::method("Class", @args);
+.Ve
+.PP
+(If the subroutine can't be found, \*(L"inheritance\*(R" kicks in, but we'll
+get to that later.)  This means that we get the class name as the
+first parameter (the only parameter, if no arguments are given).  So
+we can rewrite the \f(CW\*(C`Sheep\*(C'\fR speaking subroutine as:
+.PP
+.Vb 4
+\&    sub Sheep::speak {
+\&      my $class = shift;
+\&      print "a $class goes baaaah!\en";
+\&    }
+.Ve
+.PP
+And the other two animals come out similarly:
+.PP
+.Vb 8
+\&    sub Cow::speak {
+\&      my $class = shift;
+\&      print "a $class goes moooo!\en";
+\&    }
+\&    sub Horse::speak {
+\&      my $class = shift;
+\&      print "a $class goes neigh!\en";
+\&    }
+.Ve
+.PP
+In each case, \f(CW$class\fR will get the value appropriate for that
+subroutine.  But once again, we have a lot of similar structure.  Can
+we factor that out even further?  Yes, by calling another method in
+the same class.
+.Sh "Calling a second method to simplify things"
+.IX Subsection "Calling a second method to simplify things"
+Let's call out from \f(CW\*(C`speak\*(C'\fR to a helper method called \f(CW\*(C`sound\*(C'\fR.
+This method provides the constant text for the sound itself.
+.PP
+.Vb 7
+\&    { package Cow;
+\&      sub sound { "moooo" }
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en"
+\&      }
+\&    }
+.Ve
+.PP
+Now, when we call \f(CW\*(C`Cow\->speak\*(C'\fR, we get a \f(CW$class\fR of \f(CW\*(C`Cow\*(C'\fR in
+\&\f(CW\*(C`speak\*(C'\fR.  This in turn selects the \f(CW\*(C`Cow\->sound\*(C'\fR method, which
+returns \f(CW\*(C`moooo\*(C'\fR.  But how different would this be for the \f(CW\*(C`Horse\*(C'\fR?
+.PP
+.Vb 7
+\&    { package Horse;
+\&      sub sound { "neigh" }
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en"
+\&      }
+\&    }
+.Ve
+.PP
+Only the name of the package and the specific sound change.  So can we
+somehow share the definition for \f(CW\*(C`speak\*(C'\fR between the Cow and the
+Horse?  Yes, with inheritance!
+.Sh "Inheriting the windpipes"
+.IX Subsection "Inheriting the windpipes"
+We'll define a common subroutine package called \f(CW\*(C`Animal\*(C'\fR, with the
+definition for \f(CW\*(C`speak\*(C'\fR:
+.PP
+.Vb 6
+\&    { package Animal;
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en"
+\&      }
+\&    }
+.Ve
+.PP
+Then, for each animal, we say it \*(L"inherits\*(R" from \f(CW\*(C`Animal\*(C'\fR, along
+with the animal-specific sound:
+.PP
+.Vb 4
+\&    { package Cow;
+\&      @ISA = qw(Animal);
+\&      sub sound { "moooo" }
+\&    }
+.Ve
+.PP
+Note the added \f(CW at ISA\fR array.  We'll get to that in a minute.
+.PP
+But what happens when we invoke \f(CW\*(C`Cow\->speak\*(C'\fR now?
+.PP
+First, Perl constructs the argument list.  In this case, it's just
+\&\f(CW\*(C`Cow\*(C'\fR.  Then Perl looks for \f(CW\*(C`Cow::speak\*(C'\fR.  But that's not there, so
+Perl checks for the inheritance array \f(CW at Cow::ISA\fR.  It's there,
+and contains the single name \f(CW\*(C`Animal\*(C'\fR.
+.PP
+Perl next checks for \f(CW\*(C`speak\*(C'\fR inside \f(CW\*(C`Animal\*(C'\fR instead, as in
+\&\f(CW\*(C`Animal::speak\*(C'\fR.  And that's found, so Perl invokes that subroutine
+with the already frozen argument list.
+.PP
+Inside the \f(CW\*(C`Animal::speak\*(C'\fR subroutine, \f(CW$class\fR becomes \f(CW\*(C`Cow\*(C'\fR (the
+first argument).  So when we get to the step of invoking
+\&\f(CW\*(C`$class\->sound\*(C'\fR, it'll be looking for \f(CW\*(C`Cow\->sound\*(C'\fR, which
+gets it on the first try without looking at \f(CW at ISA\fR.  Success!
+.ie n .Sh "A few notes about @ISA"
+.el .Sh "A few notes about \f(CW at ISA\fP"
+.IX Subsection "A few notes about @ISA"
+This magical \f(CW at ISA\fR variable (pronounced \*(L"is a\*(R" not \*(L"ice\-uh\*(R"), has
+declared that \f(CW\*(C`Cow\*(C'\fR \*(L"is a\*(R" \f(CW\*(C`Animal\*(C'\fR.  Note that it's an array,
+not a simple single value, because on rare occasions, it makes sense
+to have more than one parent class searched for the missing methods.
+.PP
+If \f(CW\*(C`Animal\*(C'\fR also had an \f(CW at ISA\fR, then we'd check there too.  The
+search is recursive, depth\-first, left-to-right in each \f(CW at ISA\fR.
+Typically, each \f(CW at ISA\fR has only one element (multiple elements means
+multiple inheritance and multiple headaches), so we get a nice tree of
+inheritance.
+.PP
+When we turn on \f(CW\*(C`use strict\*(C'\fR, we'll get complaints on \f(CW at ISA\fR, since
+it's not a variable containing an explicit package name, nor is it a
+lexical (\*(L"my\*(R") variable.  We can't make it a lexical variable though
+(it has to belong to the package to be found by the inheritance mechanism),
+so there's a couple of straightforward ways to handle that.
+.PP
+The easiest is to just spell the package name out:
+.PP
+.Vb 1
+\&    @Cow::ISA = qw(Animal);
+.Ve
+.PP
+Or allow it as an implicitly named package variable:
+.PP
+.Vb 3
+\&    package Cow;
+\&    use vars qw(@ISA);
+\&    @ISA = qw(Animal);
+.Ve
+.PP
+If you're bringing in the class from outside, via an object-oriented
+module, you change:
+.PP
+.Vb 4
+\&    package Cow;
+\&    use Animal;
+\&    use vars qw(@ISA);
+\&    @ISA = qw(Animal);
+.Ve
+.PP
+into just:
+.PP
+.Vb 2
+\&    package Cow;
+\&    use base qw(Animal);
+.Ve
+.PP
+And that's pretty darn compact.
+.Sh "Overriding the methods"
+.IX Subsection "Overriding the methods"
+Let's add a mouse, which can barely be heard:
+.PP
+.Vb 10
+\&    # Animal package from before
+\&    { package Mouse;
+\&      @ISA = qw(Animal);
+\&      sub sound { "squeak" }
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en";
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    Mouse->speak;
+.Ve
+.PP
+which results in:
+.PP
+.Vb 2
+\&    a Mouse goes squeak!
+\&    [but you can barely hear it!]
+.Ve
+.PP
+Here, \f(CW\*(C`Mouse\*(C'\fR has its own speaking routine, so \f(CW\*(C`Mouse\->speak\*(C'\fR
+doesn't immediately invoke \f(CW\*(C`Animal\->speak\*(C'\fR.  This is known as
+\&\*(L"overriding\*(R".  In fact, we didn't even need to say that a \f(CW\*(C`Mouse\*(C'\fR was
+an \f(CW\*(C`Animal\*(C'\fR at all, since all of the methods needed for \f(CW\*(C`speak\*(C'\fR are
+completely defined with \f(CW\*(C`Mouse\*(C'\fR.
+.PP
+But we've now duplicated some of the code from \f(CW\*(C`Animal\->speak\*(C'\fR,
+and this can once again be a maintenance headache.  So, can we avoid
+that?  Can we say somehow that a \f(CW\*(C`Mouse\*(C'\fR does everything any other
+\&\f(CW\*(C`Animal\*(C'\fR does, but add in the extra comment?  Sure!
+.PP
+First, we can invoke the \f(CW\*(C`Animal::speak\*(C'\fR method directly:
+.PP
+.Vb 10
+\&    # Animal package from before
+\&    { package Mouse;
+\&      @ISA = qw(Animal);
+\&      sub sound { "squeak" }
+\&      sub speak {
+\&        my $class = shift;
+\&        Animal::speak($class);
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+Note that we have to include the \f(CW$class\fR parameter (almost surely
+the value of \f(CW"Mouse"\fR) as the first parameter to \f(CW\*(C`Animal::speak\*(C'\fR,
+since we've stopped using the method arrow.  Why did we stop?  Well,
+if we invoke \f(CW\*(C`Animal\->speak\*(C'\fR there, the first parameter to the
+method will be \f(CW"Animal"\fR not \f(CW"Mouse"\fR, and when time comes for it
+to call for the \f(CW\*(C`sound\*(C'\fR, it won't have the right class to come back
+to this package.
+.PP
+Invoking \f(CW\*(C`Animal::speak\*(C'\fR directly is a mess, however.  What if
+\&\f(CW\*(C`Animal::speak\*(C'\fR didn't exist before, and was being inherited from a
+class mentioned in \f(CW at Animal::ISA\fR?  Because we are no longer using
+the method arrow, we get one and only one chance to hit the right
+subroutine.
+.PP
+Also note that the \f(CW\*(C`Animal\*(C'\fR classname is now hardwired into the
+subroutine selection.  This is a mess if someone maintains the code,
+changing \f(CW at ISA\fR for <Mouse> and didn't notice \f(CW\*(C`Animal\*(C'\fR there in
+\&\f(CW\*(C`speak\*(C'\fR.  So, this is probably not the right way to go.
+.Sh "Starting the search from a different place"
+.IX Subsection "Starting the search from a different place"
+A better solution is to tell Perl to search from a higher place
+in the inheritance chain:
+.PP
+.Vb 9
+\&    # same Animal as before
+\&    { package Mouse;
+\&      # same @ISA, &sound as before
+\&      sub speak {
+\&        my $class = shift;
+\&        $class->Animal::speak;
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+Ahh.  This works.  Using this syntax, we start with \f(CW\*(C`Animal\*(C'\fR to find
+\&\f(CW\*(C`speak\*(C'\fR, and use all of \f(CW\*(C`Animal\*(C'\fR's inheritance chain if not found
+immediately.  And yet the first parameter will be \f(CW$class\fR, so the
+found \f(CW\*(C`speak\*(C'\fR method will get \f(CW\*(C`Mouse\*(C'\fR as its first entry, and
+eventually work its way back to \f(CW\*(C`Mouse::sound\*(C'\fR for the details.
+.PP
+But this isn't the best solution.  We still have to keep the \f(CW at ISA\fR
+and the initial search package coordinated.  Worse, if \f(CW\*(C`Mouse\*(C'\fR had
+multiple entries in \f(CW at ISA\fR, we wouldn't necessarily know which one
+had actually defined \f(CW\*(C`speak\*(C'\fR.  So, is there an even better way?
+.Sh "The \s-1SUPER\s0 way of doing things"
+.IX Subsection "The SUPER way of doing things"
+By changing the \f(CW\*(C`Animal\*(C'\fR class to the \f(CW\*(C`SUPER\*(C'\fR class in that
+invocation, we get a search of all of our super classes (classes
+listed in \f(CW at ISA\fR) automatically:
+.PP
+.Vb 9
+\&    # same Animal as before
+\&    { package Mouse;
+\&      # same @ISA, &sound as before
+\&      sub speak {
+\&        my $class = shift;
+\&        $class->SUPER::speak;
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+So, \f(CW\*(C`SUPER::speak\*(C'\fR means look in the current package's \f(CW at ISA\fR for
+\&\f(CW\*(C`speak\*(C'\fR, invoking the first one found. Note that it does \fInot\fR look in
+the \f(CW at ISA\fR of \f(CW$class\fR.
+.Sh "Where we're at so far..."
+.IX Subsection "Where we're at so far..."
+So far, we've seen the method arrow syntax:
+.PP
+.Vb 1
+\&  Class->method(@args);
+.Ve
+.PP
+or the equivalent:
+.PP
+.Vb 2
+\&  $a = "Class";
+\&  $a->method(@args);
+.Ve
+.PP
+which constructs an argument list of:
+.PP
+.Vb 1
+\&  ("Class", @args)
+.Ve
+.PP
+and attempts to invoke
+.PP
+.Vb 1
+\&  Class::method("Class", @Args);
+.Ve
+.PP
+However, if \f(CW\*(C`Class::method\*(C'\fR is not found, then \f(CW at Class::ISA\fR is examined
+(recursively) to locate a package that does indeed contain \f(CW\*(C`method\*(C'\fR,
+and that subroutine is invoked instead.
+.PP
+Using this simple syntax, we have class methods, (multiple)
+inheritance, overriding, and extending.  Using just what we've seen so
+far, we've been able to factor out common code, and provide a nice way
+to reuse implementations with variations.  This is at the core of what
+objects provide, but objects also provide instance data, which we
+haven't even begun to cover.
+.Sh "A horse is a horse, of course of course \*(-- or is it?"
+.IX Subsection "A horse is a horse, of course of course  or is it?"
+Let's start with the code for the \f(CW\*(C`Animal\*(C'\fR class
+and the \f(CW\*(C`Horse\*(C'\fR class:
+.PP
+.Vb 10
+\&  { package Animal;
+\&    sub speak {
+\&      my $class = shift;
+\&      print "a $class goes ", $class->sound, "!\en"
+\&    }
+\&  }
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&  }
+.Ve
+.PP
+This lets us invoke \f(CW\*(C`Horse\->speak\*(C'\fR to ripple upward to
+\&\f(CW\*(C`Animal::speak\*(C'\fR, calling back to \f(CW\*(C`Horse::sound\*(C'\fR to get the specific
+sound, and the output of:
+.PP
+.Vb 1
+\&  a Horse goes neigh!
+.Ve
+.PP
+But all of our Horse objects would have to be absolutely identical.
+If I add a subroutine, all horses automatically share it.  That's
+great for making horses the same, but how do we capture the
+distinctions about an individual horse?  For example, suppose I want
+to give my first horse a name.  There's got to be a way to keep its
+name separate from the other horses.
+.PP
+We can do that by drawing a new distinction, called an \*(L"instance\*(R".
+An \*(L"instance\*(R" is generally created by a class.  In Perl, any reference
+can be an instance, so let's start with the simplest reference
+that can hold a horse's name: a scalar reference.
+.PP
+.Vb 2
+\&  my $name = "Mr. Ed";
+\&  my $talking = \e$name;
+.Ve
+.PP
+So now \f(CW$talking\fR is a reference to what will be the instance-specific
+data (the name).  The final step in turning this into a real instance
+is with a special operator called \f(CW\*(C`bless\*(C'\fR:
+.PP
+.Vb 1
+\&  bless $talking, Horse;
+.Ve
+.PP
+This operator stores information about the package named \f(CW\*(C`Horse\*(C'\fR into
+the thing pointed at by the reference.  At this point, we say
+\&\f(CW$talking\fR is an instance of \f(CW\*(C`Horse\*(C'\fR.  That is, it's a specific
+horse.  The reference is otherwise unchanged, and can still be used
+with traditional dereferencing operators.
+.Sh "Invoking an instance method"
+.IX Subsection "Invoking an instance method"
+The method arrow can be used on instances, as well as names of
+packages (classes).  So, let's get the sound that \f(CW$talking\fR makes:
+.PP
+.Vb 1
+\&  my $noise = $talking->sound;
+.Ve
+.PP
+To invoke \f(CW\*(C`sound\*(C'\fR, Perl first notes that \f(CW$talking\fR is a blessed
+reference (and thus an instance).  It then constructs an argument
+list, in this case from just \f(CW\*(C`($talking)\*(C'\fR.  (Later we'll see that
+arguments will take their place following the instance variable,
+just like with classes.)
+.PP
+Now for the fun part: Perl takes the class in which the instance was
+blessed, in this case \f(CW\*(C`Horse\*(C'\fR, and uses that to locate the subroutine
+to invoke the method.  In this case, \f(CW\*(C`Horse::sound\*(C'\fR is found directly
+(without using inheritance), yielding the final subroutine invocation:
+.PP
+.Vb 1
+\&  Horse::sound($talking)
+.Ve
+.PP
+Note that the first parameter here is still the instance, not the name
+of the class as before.  We'll get \f(CW\*(C`neigh\*(C'\fR as the return value, and
+that'll end up as the \f(CW$noise\fR variable above.
+.PP
+If Horse::sound had not been found, we'd be wandering up the
+\&\f(CW at Horse::ISA\fR list to try to find the method in one of the
+superclasses, just as for a class method.  The only difference between
+a class method and an instance method is whether the first parameter
+is an instance (a blessed reference) or a class name (a string).
+.Sh "Accessing the instance data"
+.IX Subsection "Accessing the instance data"
+Because we get the instance as the first parameter, we can now access
+the instance-specific data.  In this case, let's add a way to get at
+the name:
+.PP
+.Vb 8
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&    sub name {
+\&      my $self = shift;
+\&      $$self;
+\&    }
+\&  }
+.Ve
+.PP
+Now we call for the name:
+.PP
+.Vb 1
+\&  print $talking->name, " says ", $talking->sound, "\en";
+.Ve
+.PP
+Inside \f(CW\*(C`Horse::name\*(C'\fR, the \f(CW at _\fR array contains just \f(CW$talking\fR,
+which the \f(CW\*(C`shift\*(C'\fR stores into \f(CW$self\fR.  (It's traditional to shift
+the first parameter off into a variable named \f(CW$self\fR for instance
+methods, so stay with that unless you have strong reasons otherwise.)
+Then, \f(CW$self\fR gets de-referenced as a scalar ref, yielding \f(CW\*(C`Mr. Ed\*(C'\fR,
+and we're done with that.  The result is:
+.PP
+.Vb 1
+\&  Mr. Ed says neigh.
+.Ve
+.Sh "How to build a horse"
+.IX Subsection "How to build a horse"
+Of course, if we constructed all of our horses by hand, we'd most
+likely make mistakes from time to time.  We're also violating one of
+the properties of object-oriented programming, in that the \*(L"inside
+guts\*(R" of a Horse are visible.  That's good if you're a veterinarian,
+but not if you just like to own horses.  So, let's let the Horse class
+build a new horse:
+.PP
+.Vb 13
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&    sub name {
+\&      my $self = shift;
+\&      $$self;
+\&    }
+\&    sub named {
+\&      my $class = shift;
+\&      my $name = shift;
+\&      bless \e$name, $class;
+\&    }
+\&  }
+.Ve
+.PP
+Now with the new \f(CW\*(C`named\*(C'\fR method, we can build a horse:
+.PP
+.Vb 1
+\&  my $talking = Horse->named("Mr. Ed");
+.Ve
+.PP
+Notice we're back to a class method, so the two arguments to
+\&\f(CW\*(C`Horse::named\*(C'\fR are \f(CW\*(C`Horse\*(C'\fR and \f(CW\*(C`Mr. Ed\*(C'\fR.  The \f(CW\*(C`bless\*(C'\fR operator
+not only blesses \f(CW$name\fR, it also returns the reference to \f(CW$name\fR,
+so that's fine as a return value.  And that's how to build a horse.
+.PP
+We've called the constructor \f(CW\*(C`named\*(C'\fR here, so that it quickly denotes
+the constructor's argument as the name for this particular \f(CW\*(C`Horse\*(C'\fR.
+You can use different constructors with different names for different
+ways of \*(L"giving birth\*(R" to the object (like maybe recording its
+pedigree or date of birth).  However, you'll find that most people
+coming to Perl from more limited languages use a single constructor
+named \f(CW\*(C`new\*(C'\fR, with various ways of interpreting the arguments to
+\&\f(CW\*(C`new\*(C'\fR.  Either style is fine, as long as you document your particular
+way of giving birth to an object.  (And you \fIwere\fR going to do that,
+right?)
+.Sh "Inheriting the constructor"
+.IX Subsection "Inheriting the constructor"
+But was there anything specific to \f(CW\*(C`Horse\*(C'\fR in that method?  No.  Therefore,
+it's also the same recipe for building anything else that inherited from
+\&\f(CW\*(C`Animal\*(C'\fR, so let's put it there:
+.PP
+.Vb 19
+\&  { package Animal;
+\&    sub speak {
+\&      my $class = shift;
+\&      print "a $class goes ", $class->sound, "!\en"
+\&    }
+\&    sub name {
+\&      my $self = shift;
+\&      $$self;
+\&    }
+\&    sub named {
+\&      my $class = shift;
+\&      my $name = shift;
+\&      bless \e$name, $class;
+\&    }
+\&  }
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&  }
+.Ve
+.PP
+Ahh, but what happens if we invoke \f(CW\*(C`speak\*(C'\fR on an instance?
+.PP
+.Vb 2
+\&  my $talking = Horse->named("Mr. Ed");
+\&  $talking->speak;
+.Ve
+.PP
+We get a debugging value:
+.PP
+.Vb 1
+\&  a Horse=SCALAR(0xaca42ac) goes neigh!
+.Ve
+.PP
+Why?  Because the \f(CW\*(C`Animal::speak\*(C'\fR routine is expecting a classname as
+its first parameter, not an instance.  When the instance is passed in,
+we'll end up using a blessed scalar reference as a string, and that
+shows up as we saw it just now.
+.Sh "Making a method work with either classes or instances"
+.IX Subsection "Making a method work with either classes or instances"
+All we need is for a method to detect if it is being called on a class
+or called on an instance.  The most straightforward way is with the
+\&\f(CW\*(C`ref\*(C'\fR operator.  This returns a string (the classname) when used on a
+blessed reference, and \f(CW\*(C`undef\*(C'\fR when used on a string (like a
+classname).  Let's modify the \f(CW\*(C`name\*(C'\fR method first to notice the change:
+.PP
+.Vb 6
+\&  sub name {
+\&    my $either = shift;
+\&    ref $either
+\&      ? $$either # it's an instance, return name
+\&      : "an unnamed $either"; # it's a class, return generic
+\&  }
+.Ve
+.PP
+Here, the \f(CW\*(C`?:\*(C'\fR operator comes in handy to select either the
+dereference or a derived string.  Now we can use this with either an
+instance or a class.  Note that I've changed the first parameter
+holder to \f(CW$either\fR to show that this is intended:
+.PP
+.Vb 3
+\&  my $talking = Horse->named("Mr. Ed");
+\&  print Horse->name, "\en"; # prints "an unnamed Horse\en"
+\&  print $talking->name, "\en"; # prints "Mr Ed.\en"
+.Ve
+.PP
+and now we'll fix \f(CW\*(C`speak\*(C'\fR to use this:
+.PP
+.Vb 4
+\&  sub speak {
+\&    my $either = shift;
+\&    print $either->name, " goes ", $either->sound, "\en";
+\&  }
+.Ve
+.PP
+And since \f(CW\*(C`sound\*(C'\fR already worked with either a class or an instance,
+we're done!
+.Sh "Adding parameters to a method"
+.IX Subsection "Adding parameters to a method"
+Let's train our animals to eat:
+.PP
+.Vb 30
+\&  { package Animal;
+\&    sub named {
+\&      my $class = shift;
+\&      my $name = shift;
+\&      bless \e$name, $class;
+\&    }
+\&    sub name {
+\&      my $either = shift;
+\&      ref $either
+\&        ? $$either # it's an instance, return name
+\&        : "an unnamed $either"; # it's a class, return generic
+\&    }
+\&    sub speak {
+\&      my $either = shift;
+\&      print $either->name, " goes ", $either->sound, "\en";
+\&    }
+\&    sub eat {
+\&      my $either = shift;
+\&      my $food = shift;
+\&      print $either->name, " eats $food.\en";
+\&    }
+\&  }
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&  }
+\&  { package Sheep;
+\&    @ISA = qw(Animal);
+\&    sub sound { "baaaah" }
+\&  }
+.Ve
+.PP
+And now try it out:
+.PP
+.Vb 3
+\&  my $talking = Horse->named("Mr. Ed");
+\&  $talking->eat("hay");
+\&  Sheep->eat("grass");
+.Ve
+.PP
+which prints:
+.PP
+.Vb 2
+\&  Mr. Ed eats hay.
+\&  an unnamed Sheep eats grass.
+.Ve
+.PP
+An instance method with parameters gets invoked with the instance,
+and then the list of parameters.  So that first invocation is like:
+.PP
+.Vb 1
+\&  Animal::eat($talking, "hay");
+.Ve
+.Sh "More interesting instances"
+.IX Subsection "More interesting instances"
+What if an instance needs more data?  Most interesting instances are
+made of many items, each of which can in turn be a reference or even
+another object.  The easiest way to store these is often in a hash.
+The keys of the hash serve as the names of parts of the object (often
+called \*(L"instance variables\*(R" or \*(L"member variables\*(R"), and the
+corresponding values are, well, the values.
+.PP
+But how do we turn the horse into a hash?  Recall that an object was
+any blessed reference.  We can just as easily make it a blessed hash
+reference as a blessed scalar reference, as long as everything that
+looks at the reference is changed accordingly.
+.PP
+Let's make a sheep that has a name and a color:
+.PP
+.Vb 1
+\&  my $bad = bless { Name => "Evil", Color => "black" }, Sheep;
+.Ve
+.PP
+so \f(CW\*(C`$bad\->{Name}\*(C'\fR has \f(CW\*(C`Evil\*(C'\fR, and \f(CW\*(C`$bad\->{Color}\*(C'\fR has
+\&\f(CW\*(C`black\*(C'\fR.  But we want to make \f(CW\*(C`$bad\->name\*(C'\fR access the name, and
+that's now messed up because it's expecting a scalar reference.  Not
+to worry, because that's pretty easy to fix up:
+.PP
+.Vb 7
+\&  ## in Animal
+\&  sub name {
+\&    my $either = shift;
+\&    ref $either ?
+\&      $either->{Name} :
+\&      "an unnamed $either";
+\&  }
+.Ve
+.PP
+And of course \f(CW\*(C`named\*(C'\fR still builds a scalar sheep, so let's fix that
+as well:
+.PP
+.Vb 7
+\&  ## in Animal
+\&  sub named {
+\&    my $class = shift;
+\&    my $name = shift;
+\&    my $self = { Name => $name, Color => $class->default_color };
+\&    bless $self, $class;
+\&  }
+.Ve
+.PP
+What's this \f(CW\*(C`default_color\*(C'\fR?  Well, if \f(CW\*(C`named\*(C'\fR has only the name,
+we still need to set a color, so we'll have a class-specific initial color.
+For a sheep, we might define it as white:
+.PP
+.Vb 2
+\&  ## in Sheep
+\&  sub default_color { "white" }
+.Ve
+.PP
+And then to keep from having to define one for each additional class,
+we'll define a \*(L"backstop\*(R" method that serves as the \*(L"default default\*(R",
+directly in \f(CW\*(C`Animal\*(C'\fR:
+.PP
+.Vb 2
+\&  ## in Animal
+\&  sub default_color { "brown" }
+.Ve
+.PP
+Now, because \f(CW\*(C`name\*(C'\fR and \f(CW\*(C`named\*(C'\fR were the only methods that
+referenced the \*(L"structure\*(R" of the object, the rest of the methods can
+remain the same, so \f(CW\*(C`speak\*(C'\fR still works as before.
+.Sh "A horse of a different color"
+.IX Subsection "A horse of a different color"
+But having all our horses be brown would be boring.  So let's add a
+method or two to get and set the color.
+.PP
+.Vb 7
+\&  ## in Animal
+\&  sub color {
+\&    $_[0]->{Color}
+\&  }
+\&  sub set_color {
+\&    $_[0]->{Color} = $_[1];
+\&  }
+.Ve
+.PP
+Note the alternate way of accessing the arguments: \f(CW$_[0]\fR is used
+in\-place, rather than with a \f(CW\*(C`shift\*(C'\fR.  (This saves us a bit of time
+for something that may be invoked frequently.)  And now we can fix
+that color for Mr. Ed:
+.PP
+.Vb 3
+\&  my $talking = Horse->named("Mr. Ed");
+\&  $talking->set_color("black-and-white");
+\&  print $talking->name, " is colored ", $talking->color, "\en";
+.Ve
+.PP
+which results in:
+.PP
+.Vb 1
+\&  Mr. Ed is colored black-and-white
+.Ve
+.Sh "Summary"
+.IX Subsection "Summary"
+So, now we have class methods, constructors, instance methods,
+instance data, and even accessors.  But that's still just the
+beginning of what Perl has to offer.  We haven't even begun to talk
+about accessors that double as getters and setters, destructors,
+indirect object notation, subclasses that add instance data, per-class
+data, overloading, \*(L"isa\*(R" and \*(L"can\*(R" tests, \f(CW\*(C`UNIVERSAL\*(C'\fR class, and so
+on.  That's for the rest of the Perl documentation to cover.
+Hopefully, this gets you started, though.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+For more information, see perlobj (for all the gritty details about
+Perl objects, now that you've seen the basics), perltoot (the
+tutorial for those who already know objects), perltooc (dealing
+with class data), perlbot (for some more tricks), and books such as
+Damian Conway's excellent \fIObject Oriented Perl\fR.
+.PP
+Some modules which might prove interesting are Class::Accessor,
+Class::Class, Class::Contract, Class::Data::Inheritable,
+Class::MethodMaker and Tie::SecureHash
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1999, 2000 by Randal L. Schwartz and Stonehenge
+Consulting Services, Inc.  Permission is hereby granted to distribute
+this document intact with the Perl distribution, and in accordance
+with the licenses of the Perl distribution; derived documents must
+include this copyright notice intact.
+.PP
+Portions of this text have been derived from Perl Training materials
+originally appearing in the \fIPackages, References, Objects, and
+Modules\fR course taught by instructors for Stonehenge Consulting
+Services, Inc. and used with permission.
+.PP
+Portions of this text have been derived from materials originally
+appearing in \fILinux Magazine\fR and used with permission.
diff --git a/raw/man1/perlcn.1 b/raw/man1/perlcn.1
new file mode 100644
index 0000000..3a32baf
--- /dev/null
+++ b/raw/man1/perlcn.1
@@ -0,0 +1,253 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLCN 1"
+.TH PERLCN 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlcn \- �������� Perl ָ��
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+��ӭ���� Perl �����!
+.PP
+�� 5.8.0 �濪ʼ, Perl �߱������Ƶ� Unicode (ͳһ��) ֧Ԯ,
+Ҳ����֧Ԯ�����������ϵ����ı��뷽ʽ; \s-1CJK\s0 (���պ�) �������е�һ����.
+Unicode �ǹ����Եı�׼, ��ͼ�������������е��ַ�: ��������, ��������,
+�Լ����߼��һ�� (ϣ����, ��������, ��������, ϣ������, ӡ����,
+ӡ�ذ���, �ȵ�). ��Ҳ�����˶�����ҵϵͳ��ƽ̨ (�� \s-1PC\s0 �������).
+.PP
+Perl ������ Unicode ���в���. ���ʾ Perl �ڲ����ַ������ݿ��� Unicode
+��ʾ; Perl �ĺ�ʽ����� (���������ʾʽ�ȶ�) Ҳ�ܶ� Unicode ���в���.
+�����뼰���ʱ, Ϊ�˴����� Unicode ֮ǰ�ı��뷽ʽ��ŵ�����, Perl
+�ṩ�� Encode ���ģ��, �����������׵ض�ȡ��д����еı�������.
+.PP
+Encode ����ģ��֧Ԯ���м������ĵı��뷽ʽ ('gb2312' ��ʾ 'euc\-cn'):
+.PP
+.Vb 6
+\&    euc-cn      Unix �����ַ���, Ҳ�����׳ƵĹ�����
+\&    gb2312-raw  δ������� (�ͱ���) GB2312 �ַ���
+\&    gb12345     δ��������й��÷������ı���
+\&    iso-ir-165  GB2312 + GB6345 + GB8565 + �����ַ�
+\&    cp936       ����ҳ 936, Ҳ������ 'GBK' (���������) ָ��
+\&    hz          7 �����ݳ�ʽ GB2312 ����
+.Ve
+.PP
+������˵, �� EUC-CN ����ĵ���ת�� Unicode, �����������ָ��:
+.PP
+.Vb 1
+\&    perl -Mencoding=euc-cn,STDOUT,utf8 -pe1 < file.euc-cn > file.utf8
+.Ve
+.PP
+Perl Ҳ�ڸ��� \*(L"piconv\*(R", һ֧��ȫ�� Perl д�ɵ��ַ�ת�����߳���, �÷�����:
+.PP
+.Vb 2
+\&    piconv -f euc-cn -t utf8 < file.euc-cn > file.utf8
+\&    piconv -f utf8 -t euc-cn < file.utf8 > file.euc-cn
+.Ve
+.PP
+����, ���� encoding ģ��, ���������д�����ַ�Ϊ��λ�ij�����, ������ʾ:
+.PP
+.Vb 7
+\&    #!/usr/bin/env perl
+\&    # �� euc-cn �ִ�����; ��׼����뼰��׼������Ϊ euc-cn ����
+\&    use encoding 'euc-cn', STDIN => 'euc-cn', STDOUT => 'euc-cn';
+\&    print length("����");            #  2 (˫���ű�ʾ�ַ�)
+\&    print length('����');            #  4 (�����ű�ʾ�ֽ�)
+\&    print index("׻׻�̻�", "�׻�"); # -1 (�����������ַ���)
+\&    print index('׻׻�̻�', '�׻�'); #  1 (�ӵڶ����ֽڿ�ʼ)
+.Ve
+.PP
+�����һ��������, \*(L"׻\*(R" �ĵڶ����ֽ��� \*(L"׻\*(R" �ĵ�һ���ֽڽ�ϳ� EUC-CN
+��� \*(L"��\*(R"; \*(L"׻\*(R" �ĵڶ����ֽ����� \*(L"��\*(R" �ĵ�һ���ֽڽ�ϳ� \*(L"��\*(R".
+��������ǰ EUC-CN ��ȶԴ����ϳ���������.
+.Sh "��������ı���"
+.IX Subsection "��������ı���"
+�����Ҫ��������ı���, ���Դ� \s-1CPAN\s0 (<http://www.cpan.org/>) ����
+Encode::HanExtra ģ��. ��Ŀǰ�ṩ���б��뷽ʽ:
+.PP
+.Vb 1
+\&    gb18030     �����������, ������������
+.Ve
+.PP
+����, Encode::HanConvert ģ�����ṩ�˼�ת���õ����ֱ���:
+.PP
+.Vb 2
+\&    big5-simp   Big5 ���������� Unicode �������Ļ�ת
+\&    gbk-trad    GBK ���������� Unicode �������Ļ�ת
+.Ve
+.PP
+������ \s-1GBK\s0 �� Big5 ֮�以ת, ��ο���ģ���ڸ��� b2g.pl �� g2b.pl ��֧����,
+���ڳ�����ʹ������д��:
+.PP
+.Vb 3
+\&    use Encode::HanConvert;
+\&    $euc_cn = big5_to_gb($big5); # �� Big5 תΪ GBK
+\&    $big5 = gb_to_big5($euc_cn); # �� GBK תΪ Big5
+.Ve
+.Sh "��һ������Ϣ"
+.IX Subsection "��һ������Ϣ"
+��ο� Perl �ڸ��Ĵ���˵���ļ� (����ȫ����Ӣ��д��), ��ѧϰ�������
+Perl ��֪ʶ, �Լ� Unicode ��ʹ�÷�ʽ. ����, �ⲿ����Դ�൱�ḻ:
+.Sh "�ṩ Perl ��Դ����ַ"
+.IX Subsection "�ṩ Perl ��Դ����ַ"
+.IP "<http://www.perl.com/>" 4
+.IX Item "<http://www.perl.com/>"
+Perl ����ҳ (��ŷ����˾ά��)
+.IP "<http://www.cpan.org/>" 4
+.IX Item "<http://www.cpan.org/>"
+Perl �ۺϵ���� (Comprehensive Perl Archive Network)
+.IP "<http://lists.perl.org/>" 4
+.IX Item "<http://lists.perl.org/>"
+Perl �ʵ���̳һ��
+.Sh "ѧϰ Perl ����ַ"
+.IX Subsection "ѧϰ Perl ����ַ"
+.IP "<http://www.oreilly.com.cn/html/perl.html>" 4
+.IX Item "<http://www.oreilly.com.cn/html/perl.html>"
+�������İ��ŷ���� Perl ���
+.Sh "Perl ʹ���߼���"
+.IX Subsection "Perl ʹ���߼���"
+.IP "<http://www.pm.org/groups/asia.shtml#China>" 4
+.IX Item "<http://www.pm.org/groups/asia.shtml#China>"
+�й� Perl �ƹ���һ��
+.Sh "Unicode �����ַ"
+.IX Subsection "Unicode �����ַ"
+.IP "<http://www.unicode.org/>" 4
+.IX Item "<http://www.unicode.org/>"
+Unicode ѧ��ѧ�� (Unicode ��׼���ƶ���)
+.IP "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>" 4
+.IX Item "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>"
+Unix/Linux �ϵ� \s-1UTF\-8\s0 �� Unicode �����
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Encode, Encode::CN, encoding, perluniintro, perlunicode
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Jarkko Hietaniemi <jhi at iki.fi>
+.PP
+Autrijus Tang (���ں�) <autrijus at autrijus.org>
diff --git a/raw/man1/perlcompile.1 b/raw/man1/perlcompile.1
new file mode 100644
index 0000000..5510aa2
--- /dev/null
+++ b/raw/man1/perlcompile.1
@@ -0,0 +1,560 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLCOMPILE 1"
+.TH PERLCOMPILE 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlcompile \- Introduction to the Perl Compiler\-Translator 
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Perl has always had a compiler: your source is compiled into an
+internal form (a parse tree) which is then optimized before being
+run.  Since version 5.005, Perl has shipped with a module
+capable of inspecting the optimized parse tree (\f(CW\*(C`B\*(C'\fR), and this has
+been used to write many useful utilities, including a module that lets
+you turn your Perl into C source code that can be compiled into a
+native executable.
+.PP
+The \f(CW\*(C`B\*(C'\fR module provides access to the parse tree, and other modules
+(\*(L"back ends\*(R") do things with the tree.  Some write it out as
+bytecode, C source code, or a semi-human-readable text.  Another
+traverses the parse tree to build a cross-reference of which
+subroutines, formats, and variables are used where.  Another checks
+your code for dubious constructs.  Yet another back end dumps the
+parse tree back out as Perl source, acting as a source code beautifier
+or deobfuscator.
+.PP
+Because its original purpose was to be a way to produce C code
+corresponding to a Perl program, and in turn a native executable, the
+\&\f(CW\*(C`B\*(C'\fR module and its associated back ends are known as \*(L"the
+compiler\*(R", even though they don't really compile anything.
+Different parts of the compiler are more accurately a \*(L"translator\*(R",
+or an \*(L"inspector\*(R", but people want Perl to have a \*(L"compiler
+option\*(R" not an \*(L"inspector gadget\*(R".  What can you do?
+.PP
+This document covers the use of the Perl compiler: which modules
+it comprises, how to use the most important of the back end modules,
+what problems there are, and how to work around them.
+.Sh "Layout"
+.IX Subsection "Layout"
+The compiler back ends are in the \f(CW\*(C`B::\*(C'\fR hierarchy, and the front-end
+(the module that you, the user of the compiler, will sometimes
+interact with) is the O module.  Some back ends (e.g., \f(CW\*(C`B::C\*(C'\fR) have
+programs (e.g., \fIperlcc\fR) to hide the modules' complexity.
+.PP
+Here are the important back ends to know about, with their status
+expressed as a number from 0 (outline for later implementation) to
+10 (if there's a bug in it, we're very surprised):
+.IP "B::Bytecode" 4
+.IX Item "B::Bytecode"
+Stores the parse tree in a machine-independent format, suitable
+for later reloading through the ByteLoader module.  Status: 5 (some
+things work, some things don't, some things are untested).
+.IP "B::C" 4
+.IX Item "B::C"
+Creates a C source file containing code to rebuild the parse tree
+and resume the interpreter.  Status: 6 (many things work adequately,
+including programs using Tk).
+.IP "B::CC" 4
+.IX Item "B::CC"
+Creates a C source file corresponding to the run time code path in
+the parse tree.  This is the closest to a Perl-to-C translator there
+is, but the code it generates is almost incomprehensible because it
+translates the parse tree into a giant switch structure that
+manipulates Perl structures.  Eventual goal is to reduce (given
+sufficient type information in the Perl program) some of the
+Perl data structure manipulations into manipulations of C\-level
+ints, floats, etc.  Status: 5 (some things work, including
+uncomplicated Tk examples).
+.IP "B::Lint" 4
+.IX Item "B::Lint"
+Complains if it finds dubious constructs in your source code.  Status:
+6 (it works adequately, but only has a very limited number of areas
+that it checks).
+.IP "B::Deparse" 4
+.IX Item "B::Deparse"
+Recreates the Perl source, making an attempt to format it coherently.
+Status: 8 (it works nicely, but a few obscure things are missing).
+.IP "B::Xref" 4
+.IX Item "B::Xref"
+Reports on the declaration and use of subroutines and variables.
+Status: 8 (it works nicely, but still has a few lingering bugs).
+.SH "Using The Back Ends"
+.IX Header "Using The Back Ends"
+The following sections describe how to use the various compiler back
+ends.  They're presented roughly in order of maturity, so that the
+most stable and proven back ends are described first, and the most
+experimental and incomplete back ends are described last.
+.PP
+The O module automatically enabled the \fB\-c\fR flag to Perl, which
+prevents Perl from executing your code once it has been compiled.
+This is why all the back ends print:
+.PP
+.Vb 1
+\&  myperlprogram syntax OK
+.Ve
+.PP
+before producing any other output.
+.Sh "The Cross Referencing Back End"
+.IX Subsection "The Cross Referencing Back End"
+The cross referencing back end (B::Xref) produces a report on your program,
+breaking down declarations and uses of subroutines and variables (and
+formats) by file and subroutine.  For instance, here's part of the
+report from the \fIpod2man\fR program that comes with Perl:
+.PP
+.Vb 12
+\&  Subroutine clear_noremap
+\&    Package (lexical)
+\&      $ready_to_print   i1069, 1079
+\&    Package main
+\&      $&                1086
+\&      $.                1086
+\&      $0                1086
+\&      $1                1087
+\&      $2                1085, 1085
+\&      $3                1085, 1085
+\&      $ARGV             1086
+\&      %HTML_Escapes     1085, 1085
+.Ve
+.PP
+This shows the variables used in the subroutine \f(CW\*(C`clear_noremap\*(C'\fR.  The
+variable \f(CW$ready_to_print\fR is a \fImy()\fR (lexical) variable,
+\&\fBi\fRntroduced (first declared with \fImy()\fR) on line 1069, and used on
+line 1079.  The variable \f(CW$&\fR from the main package is used on 1086,
+and so on.
+.PP
+A line number may be prefixed by a single letter:
+.IP "i" 4
+.IX Item "i"
+Lexical variable introduced (declared with \fImy()\fR) for the first time.
+.IP "&" 4
+Subroutine or method call.
+.IP "s" 4
+.IX Item "s"
+Subroutine defined.
+.IP "r" 4
+.IX Item "r"
+Format defined.
+.PP
+The most useful option the cross referencer has is to save the report
+to a separate file.  For instance, to save the report on
+\&\fImyperlprogram\fR to the file \fIreport\fR:
+.PP
+.Vb 1
+\&  $ perl -MO=Xref,-oreport myperlprogram
+.Ve
+.Sh "The Decompiling Back End"
+.IX Subsection "The Decompiling Back End"
+The Deparse back end turns your Perl source back into Perl source.  It
+can reformat along the way, making it useful as a de\-obfuscator.  The
+most basic way to use it is:
+.PP
+.Vb 1
+\&  $ perl -MO=Deparse myperlprogram
+.Ve
+.PP
+You'll notice immediately that Perl has no idea of how to paragraph
+your code.  You'll have to separate chunks of code from each other
+with newlines by hand.  However, watch what it will do with
+one\-liners:
+.PP
+.Vb 12
+\&  $ perl -MO=Deparse -e '$op=shift||die "usage: $0
+\&  code [...]";chomp(@ARGV=<>)unless at ARGV; for(@ARGV){$was=$_;eval$op;
+\&  die$@ if$@; rename$was,$_ unless$was eq $_}'
+\&  -e syntax OK
+\&  $op = shift @ARGV || die("usage: $0 code [...]");
+\&  chomp(@ARGV = <ARGV>) unless @ARGV;
+\&  foreach $_ (@ARGV) {
+\&      $was = $_;
+\&      eval $op;
+\&      die $@ if $@;
+\&      rename $was, $_ unless $was eq $_;
+\&  }
+.Ve
+.PP
+The decompiler has several options for the code it generates.  For
+instance, you can set the size of each indent from 4 (as above) to
+2 with:
+.PP
+.Vb 1
+\&  $ perl -MO=Deparse,-si2 myperlprogram
+.Ve
+.PP
+The \fB\-p\fR option adds parentheses where normally they are omitted:
+.PP
+.Vb 6
+\&  $ perl -MO=Deparse -e 'print "Hello, world\en"'
+\&  -e syntax OK
+\&  print "Hello, world\en";
+\&  $ perl -MO=Deparse,-p -e 'print "Hello, world\en"'
+\&  -e syntax OK
+\&  print("Hello, world\en");
+.Ve
+.PP
+See B::Deparse for more information on the formatting options.
+.Sh "The Lint Back End"
+.IX Subsection "The Lint Back End"
+The lint back end (B::Lint) inspects programs for poor style.  One
+programmer's bad style is another programmer's useful tool, so options
+let you select what is complained about.
+.PP
+To run the style checker across your source code:
+.PP
+.Vb 1
+\&  $ perl -MO=Lint myperlprogram
+.Ve
+.PP
+To disable context checks and undefined subroutines:
+.PP
+.Vb 1
+\&  $ perl -MO=Lint,-context,-undefined-subs myperlprogram
+.Ve
+.PP
+See B::Lint for information on the options.
+.Sh "The Simple C Back End"
+.IX Subsection "The Simple C Back End"
+This module saves the internal compiled state of your Perl program
+to a C source file, which can be turned into a native executable
+for that particular platform using a C compiler.  The resulting
+program links against the Perl interpreter library, so it
+will not save you disk space (unless you build Perl with a shared
+library) or program size.  It may, however, save you startup time.
+.PP
+The \f(CW\*(C`perlcc\*(C'\fR tool generates such executables by default.
+.PP
+.Vb 1
+\&  perlcc myperlprogram.pl
+.Ve
+.Sh "The Bytecode Back End"
+.IX Subsection "The Bytecode Back End"
+This back end is only useful if you also have a way to load and
+execute the bytecode that it produces.  The ByteLoader module provides
+this functionality.
+.PP
+To turn a Perl program into executable byte code, you can use \f(CW\*(C`perlcc\*(C'\fR
+with the \f(CW\*(C`\-B\*(C'\fR switch:
+.PP
+.Vb 1
+\&  perlcc -B myperlprogram.pl
+.Ve
+.PP
+The byte code is machine independent, so once you have a compiled
+module or program, it is as portable as Perl source (assuming that
+the user of the module or program has a modern-enough Perl interpreter
+to decode the byte code).
+.PP
+See \fBB::Bytecode\fR for information on options to control the
+optimization and nature of the code generated by the Bytecode module.
+.Sh "The Optimized C Back End"
+.IX Subsection "The Optimized C Back End"
+The optimized C back end will turn your Perl program's run time
+code-path into an equivalent (but optimized) C program that manipulates
+the Perl data structures directly.  The program will still link against
+the Perl interpreter library, to allow for \fIeval()\fR, \f(CW\*(C`s///e\*(C'\fR,
+\&\f(CW\*(C`require\*(C'\fR, etc.
+.PP
+The \f(CW\*(C`perlcc\*(C'\fR tool generates such executables when using the \-O
+switch.  To compile a Perl program (ending in \f(CW\*(C`.pl\*(C'\fR
+or \f(CW\*(C`.p\*(C'\fR):
+.PP
+.Vb 1
+\&  perlcc -O myperlprogram.pl
+.Ve
+.PP
+To produce a shared library from a Perl module (ending in \f(CW\*(C`.pm\*(C'\fR):
+.PP
+.Vb 1
+\&  perlcc -O Myperlmodule.pm
+.Ve
+.PP
+For more information, see perlcc and B::CC.
+.SH "Module List for the Compiler Suite"
+.IX Header "Module List for the Compiler Suite"
+.IP "B" 4
+.IX Item "B"
+This module is the introspective (\*(L"reflective\*(R" in Java terms)
+module, which allows a Perl program to inspect its innards.  The
+back end modules all use this module to gain access to the compiled
+parse tree.  You, the user of a back end module, will not need to
+interact with B.
+.IP "O" 4
+.IX Item "O"
+This module is the front-end to the compiler's back ends.  Normally
+called something like this:
+.Sp
+.Vb 1
+\&  $ perl -MO=Deparse myperlprogram
+.Ve
+.Sp
+This is like saying \f(CW\*(C`use O 'Deparse'\*(C'\fR in your Perl program.
+.IP "B::Asmdata" 4
+.IX Item "B::Asmdata"
+This module is used by the B::Assembler module, which is in turn used
+by the B::Bytecode module, which stores a parse-tree as
+bytecode for later loading.  It's not a back end itself, but rather a
+component of a back end.
+.IP "B::Assembler" 4
+.IX Item "B::Assembler"
+This module turns a parse-tree into data suitable for storing
+and later decoding back into a parse\-tree.  It's not a back end
+itself, but rather a component of a back end.  It's used by the
+\&\fIassemble\fR program that produces bytecode.
+.IP "B::Bblock" 4
+.IX Item "B::Bblock"
+This module is used by the B::CC back end.  It walks \*(L"basic blocks\*(R".
+A basic block is a series of operations which is known to execute from
+start to finish, with no possibility of branching or halting.
+.IP "B::Bytecode" 4
+.IX Item "B::Bytecode"
+This module is a back end that generates bytecode from a
+program's parse tree.  This bytecode is written to a file, from where
+it can later be reconstructed back into a parse tree.  The goal is to
+do the expensive program compilation once, save the interpreter's
+state into a file, and then restore the state from the file when the
+program is to be executed.  See \*(L"The Bytecode Back End\*(R"
+for details about usage.
+.IP "B::C" 4
+.IX Item "B::C"
+This module writes out C code corresponding to the parse tree and
+other interpreter internal structures.  You compile the corresponding
+C file, and get an executable file that will restore the internal
+structures and the Perl interpreter will begin running the
+program.  See \*(L"The Simple C Back End\*(R" for details about usage.
+.IP "B::CC" 4
+.IX Item "B::CC"
+This module writes out C code corresponding to your program's
+operations.  Unlike the B::C module, which merely stores the
+interpreter and its state in a C program, the B::CC module makes a
+C program that does not involve the interpreter.  As a consequence,
+programs translated into C by B::CC can execute faster than normal
+interpreted programs.  See \*(L"The Optimized C Back End\*(R" for
+details about usage.
+.IP "B::Concise" 4
+.IX Item "B::Concise"
+This module prints a concise (but complete) version of the Perl parse
+tree.  Its output is more customizable than the one of B::Terse or
+B::Debug (and it can emulate them). This module useful for people who
+are writing their own back end, or who are learning about the Perl
+internals.  It's not useful to the average programmer.
+.IP "B::Debug" 4
+.IX Item "B::Debug"
+This module dumps the Perl parse tree in verbose detail to \s-1STDOUT\s0.
+It's useful for people who are writing their own back end, or who
+are learning about the Perl internals.  It's not useful to the
+average programmer.
+.IP "B::Deparse" 4
+.IX Item "B::Deparse"
+This module produces Perl source code from the compiled parse tree.
+It is useful in debugging and deconstructing other people's code,
+also as a pretty-printer for your own source.  See
+\&\*(L"The Decompiling Back End\*(R" for details about usage.
+.IP "B::Disassembler" 4
+.IX Item "B::Disassembler"
+This module turns bytecode back into a parse tree.  It's not a back
+end itself, but rather a component of a back end.  It's used by the
+\&\fIdisassemble\fR program that comes with the bytecode.
+.IP "B::Lint" 4
+.IX Item "B::Lint"
+This module inspects the compiled form of your source code for things
+which, while some people frown on them, aren't necessarily bad enough
+to justify a warning.  For instance, use of an array in scalar context
+without explicitly saying \f(CW\*(C`scalar(@array)\*(C'\fR is something that Lint
+can identify.  See \*(L"The Lint Back End\*(R" for details about usage.
+.IP "B::Showlex" 4
+.IX Item "B::Showlex"
+This module prints out the \fImy()\fR variables used in a function or a
+file.  To get a list of the \fImy()\fR variables used in the subroutine
+\&\fImysub()\fR defined in the file myperlprogram:
+.Sp
+.Vb 1
+\&  $ perl -MO=Showlex,mysub myperlprogram
+.Ve
+.Sp
+To get a list of the \fImy()\fR variables used in the file myperlprogram:
+.Sp
+.Vb 1
+\&  $ perl -MO=Showlex myperlprogram
+.Ve
+.Sp
+[\s-1BROKEN\s0]
+.IP "B::Stackobj" 4
+.IX Item "B::Stackobj"
+This module is used by the B::CC module.  It's not a back end itself,
+but rather a component of a back end.
+.IP "B::Stash" 4
+.IX Item "B::Stash"
+This module is used by the perlcc program, which compiles a module
+into an executable.  B::Stash prints the symbol tables in use by a
+program, and is used to prevent B::CC from producing C code for the
+B::* and O modules.  It's not a back end itself, but rather a
+component of a back end.
+.IP "B::Terse" 4
+.IX Item "B::Terse"
+This module prints the contents of the parse tree, but without as much
+information as B::Debug.  For comparison, \f(CW\*(C`print "Hello, world."\*(C'\fR
+produced 96 lines of output from B::Debug, but only 6 from B::Terse.
+.Sp
+This module is useful for people who are writing their own back end,
+or who are learning about the Perl internals.  It's not useful to the
+average programmer.
+.IP "B::Xref" 4
+.IX Item "B::Xref"
+This module prints a report on where the variables, subroutines, and
+formats are defined and used within a program and the modules it
+loads.  See \*(L"The Cross Referencing Back End\*(R" for details about
+usage.
+.SH "KNOWN PROBLEMS"
+.IX Header "KNOWN PROBLEMS"
+The simple C backend currently only saves typeglobs with alphanumeric
+names.
+.PP
+The optimized C backend outputs code for more modules than it should
+(e.g., DirHandle).  It also has little hope of properly handling
+\&\f(CW\*(C`goto LABEL\*(C'\fR outside the running subroutine (\f(CW\*(C`goto &sub\*(C'\fR is okay).
+\&\f(CW\*(C`goto LABEL\*(C'\fR currently does not work at all in this backend.
+It also creates a huge initialization function that gives
+C compilers headaches.  Splitting the initialization function gives
+better results.  Other problems include: unsigned math does not
+work correctly; some opcodes are handled incorrectly by default
+opcode handling mechanism.
+.PP
+BEGIN{} blocks are executed while compiling your code.  Any external
+state that is initialized in BEGIN{}, such as opening files, initiating
+database connections etc., do not behave properly.  To work around
+this, Perl has an INIT{} block that corresponds to code being executed
+before your program begins running but after your program has finished
+being compiled.  Execution order: BEGIN{}, (possible save of state
+through compiler back\-end), INIT{}, program runs, END{}.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+This document was originally written by Nathan Torkington, and is now
+maintained by the perl5\-porters mailing list
+\&\fIperl5\-porters at perl.org\fR.
diff --git a/raw/man1/perldata.1 b/raw/man1/perldata.1
new file mode 100644
index 0000000..3db92e1
--- /dev/null
+++ b/raw/man1/perldata.1
@@ -0,0 +1,1075 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLDATA 1"
+.TH PERLDATA 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perldata \- Perl data types
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+.Sh "Variable names"
+.IX Subsection "Variable names"
+Perl has three built-in data types: scalars, arrays of scalars, and
+associative arrays of scalars, known as \*(L"hashes\*(R".  A scalar is a 
+single string (of any size, limited only by the available memory),
+number, or a reference to something (which will be discussed
+in perlref).  Normal arrays are ordered lists of scalars indexed
+by number, starting with 0.  Hashes are unordered collections of scalar 
+values indexed by their associated string key.
+.PP
+Values are usually referred to by name, or through a named reference.
+The first character of the name tells you to what sort of data
+structure it refers.  The rest of the name tells you the particular
+value to which it refers.  Usually this name is a single \fIidentifier\fR,
+that is, a string beginning with a letter or underscore, and
+containing letters, underscores, and digits.  In some cases, it may
+be a chain of identifiers, separated by \f(CW\*(C`::\*(C'\fR (or by the slightly
+archaic \f(CW\*(C`'\*(C'\fR); all but the last are interpreted as names of packages,
+to locate the namespace in which to look up the final identifier
+(see \*(L"Packages\*(R" in perlmod for details).  It's possible to substitute
+for a simple identifier, an expression that produces a reference
+to the value at runtime.   This is described in more detail below
+and in perlref.
+.PP
+Perl also has its own built-in variables whose names don't follow
+these rules.  They have strange names so they don't accidentally
+collide with one of your normal variables.  Strings that match
+parenthesized parts of a regular expression are saved under names
+containing only digits after the \f(CW\*(C`$\*(C'\fR (see perlop and perlre).
+In addition, several special variables that provide windows into
+the inner working of Perl have names containing punctuation characters
+and control characters.  These are documented in perlvar.
+.PP
+Scalar values are always named with '$', even when referring to a
+scalar that is part of an array or a hash.  The '$' symbol works
+semantically like the English word \*(L"the\*(R" in that it indicates a
+single value is expected.
+.PP
+.Vb 4
+\&    $days               # the simple scalar value "days"
+\&    $days[28]           # the 29th element of array @days
+\&    $days{'Feb'}        # the 'Feb' value from hash %days
+\&    $#days              # the last index of array @days
+.Ve
+.PP
+Entire arrays (and slices of arrays and hashes) are denoted by '@',
+which works much like the word \*(L"these\*(R" or \*(L"those\*(R" does in English,
+in that it indicates multiple values are expected.
+.PP
+.Vb 3
+\&    @days               # ($days[0], $days[1],... $days[n])
+\&    @days[3,4,5]        # same as ($days[3],$days[4],$days[5])
+\&    @days{'a','c'}      # same as ($days{'a'},$days{'c'})
+.Ve
+.PP
+Entire hashes are denoted by '%':
+.PP
+.Vb 1
+\&    %days               # (key1, val1, key2, val2 ...)
+.Ve
+.PP
+In addition, subroutines are named with an initial '&', though this
+is optional when unambiguous, just as the word \*(L"do\*(R" is often redundant
+in English.  Symbol table entries can be named with an initial '*',
+but you don't really care about that yet (if ever :\-).
+.PP
+Every variable type has its own namespace, as do several
+non-variable identifiers.  This means that you can, without fear
+of conflict, use the same name for a scalar variable, an array, or
+a hash\*(--or, for that matter, for a filehandle, a directory handle, a
+subroutine name, a format name, or a label.  This means that \f(CW$foo\fR
+and \f(CW at foo\fR are two different variables.  It also means that \f(CW$foo[1]\fR
+is a part of \f(CW at foo\fR, not a part of \f(CW$foo\fR.  This may seem a bit weird,
+but that's okay, because it is weird.
+.PP
+Because variable references always start with '$', '@', or '%', the
+\&\*(L"reserved\*(R" words aren't in fact reserved with respect to variable
+names.  They \fIare\fR reserved with respect to labels and filehandles,
+however, which don't have an initial special character.  You can't
+have a filehandle named \*(L"log\*(R", for instance.  Hint: you could say
+\&\f(CW\*(C`open(LOG,'logfile')\*(C'\fR rather than \f(CW\*(C`open(log,'logfile')\*(C'\fR.  Using
+uppercase filehandles also improves readability and protects you
+from conflict with future reserved words.  Case \fIis\fR significant\-\-\*(L"\s-1FOO\s0\*(R",
+\&\*(L"Foo\*(R", and \*(L"foo\*(R" are all different names.  Names that start with a
+letter or underscore may also contain digits and underscores.
+.PP
+It is possible to replace such an alphanumeric name with an expression
+that returns a reference to the appropriate type.  For a description
+of this, see perlref.
+.PP
+Names that start with a digit may contain only more digits.  Names
+that do not start with a letter, underscore, digit or a caret (i.e.
+a control character) are limited to one character, e.g.,  \f(CW$%\fR or
+\&\f(CW$$\fR.  (Most of these one character names have a predefined
+significance to Perl.  For instance, \f(CW$$\fR is the current process
+id.)
+.Sh "Context"
+.IX Subsection "Context"
+The interpretation of operations and values in Perl sometimes depends
+on the requirements of the context around the operation or value.
+There are two major contexts: list and scalar.  Certain operations
+return list values in contexts wanting a list, and scalar values
+otherwise.  If this is true of an operation it will be mentioned in
+the documentation for that operation.  In other words, Perl overloads
+certain operations based on whether the expected return value is
+singular or plural.  Some words in English work this way, like \*(L"fish\*(R"
+and \*(L"sheep\*(R".
+.PP
+In a reciprocal fashion, an operation provides either a scalar or a
+list context to each of its arguments.  For example, if you say
+.PP
+.Vb 1
+\&    int( <STDIN> )
+.Ve
+.PP
+the integer operation provides scalar context for the <>
+operator, which responds by reading one line from \s-1STDIN\s0 and passing it
+back to the integer operation, which will then find the integer value
+of that line and return that.  If, on the other hand, you say
+.PP
+.Vb 1
+\&    sort( <STDIN> )
+.Ve
+.PP
+then the sort operation provides list context for <>, which
+will proceed to read every line available up to the end of file, and
+pass that list of lines back to the sort routine, which will then
+sort those lines and return them as a list to whatever the context
+of the sort was.
+.PP
+Assignment is a little bit special in that it uses its left argument
+to determine the context for the right argument.  Assignment to a
+scalar evaluates the right-hand side in scalar context, while
+assignment to an array or hash evaluates the righthand side in list
+context.  Assignment to a list (or slice, which is just a list
+anyway) also evaluates the righthand side in list context.
+.PP
+When you use the \f(CW\*(C`use warnings\*(C'\fR pragma or Perl's \fB\-w\fR command-line 
+option, you may see warnings
+about useless uses of constants or functions in \*(L"void context\*(R".
+Void context just means the value has been discarded, such as a
+statement containing only \f(CW\*(C`"fred";\*(C'\fR or \f(CW\*(C`getpwuid(0);\*(C'\fR.  It still
+counts as scalar context for functions that care whether or not
+they're being called in list context.
+.PP
+User-defined subroutines may choose to care whether they are being
+called in a void, scalar, or list context.  Most subroutines do not
+need to bother, though.  That's because both scalars and lists are
+automatically interpolated into lists.  See \*(L"wantarray\*(R" in perlfunc
+for how you would dynamically discern your function's calling
+context.
+.Sh "Scalar values"
+.IX Subsection "Scalar values"
+All data in Perl is a scalar, an array of scalars, or a hash of
+scalars.  A scalar may contain one single value in any of three
+different flavors: a number, a string, or a reference.  In general,
+conversion from one form to another is transparent.  Although a
+scalar may not directly hold multiple values, it may contain a
+reference to an array or hash which in turn contains multiple values.
+.PP
+Scalars aren't necessarily one thing or another.  There's no place
+to declare a scalar variable to be of type \*(L"string\*(R", type \*(L"number\*(R",
+type \*(L"reference\*(R", or anything else.  Because of the automatic
+conversion of scalars, operations that return scalars don't need
+to care (and in fact, cannot care) whether their caller is looking
+for a string, a number, or a reference.  Perl is a contextually
+polymorphic language whose scalars can be strings, numbers, or
+references (which includes objects).  Although strings and numbers
+are considered pretty much the same thing for nearly all purposes,
+references are strongly\-typed, uncastable pointers with builtin
+reference-counting and destructor invocation.
+.PP
+A scalar value is interpreted as \s-1TRUE\s0 in the Boolean sense if it is not
+the null string or the number 0 (or its string equivalent, \*(L"0\*(R").  The
+Boolean context is just a special kind of scalar context where no 
+conversion to a string or a number is ever performed.
+.PP
+There are actually two varieties of null strings (sometimes referred
+to as \*(L"empty\*(R" strings), a defined one and an undefined one.  The
+defined version is just a string of length zero, such as \f(CW""\fR.
+The undefined version is the value that indicates that there is
+no real value for something, such as when there was an error, or
+at end of file, or when you refer to an uninitialized variable or
+element of an array or hash.  Although in early versions of Perl,
+an undefined scalar could become defined when first used in a
+place expecting a defined value, this no longer happens except for
+rare cases of autovivification as explained in perlref.  You can
+use the \fIdefined()\fR operator to determine whether a scalar value is
+defined (this has no meaning on arrays or hashes), and the \fIundef()\fR
+operator to produce an undefined value.
+.PP
+To find out whether a given string is a valid non-zero number, it's
+sometimes enough to test it against both numeric 0 and also lexical
+\&\*(L"0\*(R" (although this will cause noises if warnings are on).  That's 
+because strings that aren't numbers count as 0, just as they do in \fBawk\fR:
+.PP
+.Vb 3
+\&    if ($str == 0 && $str ne "0")  {
+\&        warn "That doesn't look like a number";
+\&    }
+.Ve
+.PP
+That method may be best because otherwise you won't treat \s-1IEEE\s0
+notations like \f(CW\*(C`NaN\*(C'\fR or \f(CW\*(C`Infinity\*(C'\fR properly.  At other times, you
+might prefer to determine whether string data can be used numerically
+by calling the \fIPOSIX::strtod()\fR function or by inspecting your string
+with a regular expression (as documented in perlre).
+.PP
+.Vb 8
+\&    warn "has nondigits"        if     /\eD/;
+\&    warn "not a natural number" unless /^\ed+$/;             # rejects -3
+\&    warn "not an integer"       unless /^-?\ed+$/;           # rejects +3
+\&    warn "not an integer"       unless /^[+-]?\ed+$/;
+\&    warn "not a decimal number" unless /^-?\ed+\e.?\ed*$/;     # rejects .2
+\&    warn "not a decimal number" unless /^-?(?:\ed+(?:\e.\ed*)?|\e.\ed+)$/;
+\&    warn "not a C float"
+\&        unless /^([+-]?)(?=\ed|\e.\ed)\ed*(\e.\ed*)?([Ee]([+-]?\ed+))?$/;
+.Ve
+.PP
+The length of an array is a scalar value.  You may find the length
+of array \f(CW at days\fR by evaluating \f(CW$#days\fR, as in \fBcsh\fR.  However, this
+isn't the length of the array; it's the subscript of the last element,
+which is a different value since there is ordinarily a 0th element.
+Assigning to \f(CW$#days\fR actually changes the length of the array.
+Shortening an array this way destroys intervening values.  Lengthening
+an array that was previously shortened does not recover values
+that were in those elements.  (It used to do so in Perl 4, but we
+had to break this to make sure destructors were called when expected.)
+.PP
+You can also gain some minuscule measure of efficiency by pre-extending
+an array that is going to get big.  You can also extend an array
+by assigning to an element that is off the end of the array.  You
+can truncate an array down to nothing by assigning the null list
+() to it.  The following are equivalent:
+.PP
+.Vb 2
+\&    @whatever = ();
+\&    $#whatever = -1;
+.Ve
+.PP
+If you evaluate an array in scalar context, it returns the length
+of the array.  (Note that this is not true of lists, which return
+the last value, like the C comma operator, nor of built-in functions,
+which return whatever they feel like returning.)  The following is
+always true:
+.PP
+.Vb 1
+\&    scalar(@whatever) == $#whatever - $[ + 1;
+.Ve
+.PP
+Version 5 of Perl changed the semantics of \f(CW$[\fR: files that don't set
+the value of \f(CW$[\fR no longer need to worry about whether another
+file changed its value.  (In other words, use of \f(CW$[\fR is deprecated.)
+So in general you can assume that
+.PP
+.Vb 1
+\&    scalar(@whatever) == $#whatever + 1;
+.Ve
+.PP
+Some programmers choose to use an explicit conversion so as to 
+leave nothing to doubt:
+.PP
+.Vb 1
+\&    $element_count = scalar(@whatever);
+.Ve
+.PP
+If you evaluate a hash in scalar context, it returns false if the
+hash is empty.  If there are any key/value pairs, it returns true;
+more precisely, the value returned is a string consisting of the
+number of used buckets and the number of allocated buckets, separated
+by a slash.  This is pretty much useful only to find out whether
+Perl's internal hashing algorithm is performing poorly on your data
+set.  For example, you stick 10,000 things in a hash, but evaluating
+\&\f(CW%HASH\fR in scalar context reveals \f(CW"1/16"\fR, which means only one out
+of sixteen buckets has been touched, and presumably contains all
+10,000 of your items.  This isn't supposed to happen.
+.PP
+You can preallocate space for a hash by assigning to the \fIkeys()\fR function.
+This rounds up the allocated buckets to the next power of two:
+.PP
+.Vb 1
+\&    keys(%users) = 1000;                # allocate 1024 buckets
+.Ve
+.Sh "Scalar value constructors"
+.IX Subsection "Scalar value constructors"
+Numeric literals are specified in any of the following floating point or
+integer formats:
+.PP
+.Vb 9
+\&    12345
+\&    12345.67
+\&    .23E-10             # a very small number
+\&    3.14_15_92          # a very important number
+\&    4_294_967_296       # underscore for legibility
+\&    0xff                # hex
+\&    0xdead_beef         # more hex   
+\&    0377                # octal
+\&    0b011011            # binary
+.Ve
+.PP
+You are allowed to use underscores (underbars) in numeric literals
+between digits for legibility.  You could, for example, group binary
+digits by threes (as for a Unix-style mode argument such as 0b110_100_100)
+or by fours (to represent nibbles, as in 0b1010_0110) or in other groups.
+.PP
+String literals are usually delimited by either single or double
+quotes.  They work much like quotes in the standard Unix shells:
+double-quoted string literals are subject to backslash and variable
+substitution; single-quoted strings are not (except for \f(CW\*(C`\e'\*(C'\fR and
+\&\f(CW\*(C`\e\e\*(C'\fR).  The usual C\-style backslash rules apply for making
+characters such as newline, tab, etc., as well as some more exotic
+forms.  See \*(L"Quote and Quote-like Operators\*(R" in perlop for a list.
+.PP
+Hexadecimal, octal, or binary, representations in string literals
+(e.g. '0xff') are not automatically converted to their integer
+representation.  The \fIhex()\fR and \fIoct()\fR functions make these conversions
+for you.  See \*(L"hex\*(R" in perlfunc and \*(L"oct\*(R" in perlfunc for more details.
+.PP
+You can also embed newlines directly in your strings, i.e., they can end
+on a different line than they begin.  This is nice, but if you forget
+your trailing quote, the error will not be reported until Perl finds
+another line containing the quote character, which may be much further
+on in the script.  Variable substitution inside strings is limited to
+scalar variables, arrays, and array or hash slices.  (In other words,
+names beginning with $ or @, followed by an optional bracketed
+expression as a subscript.)  The following code segment prints out "The
+price is $\&100."
+.PP
+.Vb 2
+\&    $Price = '$100';    # not interpolated
+\&    print "The price is $Price.\en";     # interpolated
+.Ve
+.PP
+There is no double interpolation in Perl, so the \f(CW$100\fR is left as is.
+.PP
+As in some shells, you can enclose the variable name in braces to
+disambiguate it from following alphanumerics (and underscores).
+You must also do
+this when interpolating a variable into a string to separate the
+variable name from a following double-colon or an apostrophe, since
+these would be otherwise treated as a package separator:
+.PP
+.Vb 3
+\&    $who = "Larry";
+\&    print PASSWD "${who}::0:0:Superuser:/:/bin/perl\en";
+\&    print "We use ${who}speak when ${who}'s here.\en";
+.Ve
+.PP
+Without the braces, Perl would have looked for a \f(CW$whospeak\fR, a
+\&\f(CW$who::0\fR, and a \f(CW$who's\fR variable.  The last two would be the
+\&\f(CW$0\fR and the \f(CW$s\fR variables in the (presumably) non-existent package
+\&\f(CW\*(C`who\*(C'\fR.
+.PP
+In fact, an identifier within such curlies is forced to be a string,
+as is any simple identifier within a hash subscript.  Neither need
+quoting.  Our earlier example, \f(CW$days{'Feb'}\fR can be written as
+\&\f(CW$days{Feb}\fR and the quotes will be assumed automatically.  But
+anything more complicated in the subscript will be interpreted as
+an expression.
+.PP
+\fIVersion Strings\fR
+.IX Subsection "Version Strings"
+.PP
+\&\fBNote:\fR Version Strings (v\-strings) have been deprecated.  They will
+not be available after Perl 5.8.  The marginal benefits of v\-strings
+were greatly outweighed by the potential for Surprise and Confusion.
+.PP
+A literal of the form \f(CW\*(C`v1.20.300.4000\*(C'\fR is parsed as a string composed
+of characters with the specified ordinals.  This form, known as
+v\-strings, provides an alternative, more readable way to construct
+strings, rather than use the somewhat less readable interpolation form
+\&\f(CW"\ex{1}\ex{14}\ex{12c}\ex{fa0}"\fR.  This is useful for representing
+Unicode strings, and for comparing version \*(L"numbers\*(R" using the string
+comparison operators, \f(CW\*(C`cmp\*(C'\fR, \f(CW\*(C`gt\*(C'\fR, \f(CW\*(C`lt\*(C'\fR etc.  If there are two or
+more dots in the literal, the leading \f(CW\*(C`v\*(C'\fR may be omitted.
+.PP
+.Vb 3
+\&    print v9786;              # prints UTF-8 encoded SMILEY, "\ex{263a}"
+\&    print v102.111.111;       # prints "foo"
+\&    print 102.111.111;        # same
+.Ve
+.PP
+Such literals are accepted by both \f(CW\*(C`require\*(C'\fR and \f(CW\*(C`use\*(C'\fR for
+doing a version check.  The \f(CW$^V\fR special variable also contains the
+running Perl interpreter's version in this form.  See \*(L"$^V\*(R" in perlvar.
+Note that using the v\-strings for IPv4 addresses is not portable unless
+you also use the \fIinet_aton()\fR/\fIinet_ntoa()\fR routines of the Socket package.
+.PP
+Note that since Perl 5.8.1 the single-number v\-strings (like \f(CW\*(C`v65\*(C'\fR)
+are not v\-strings before the \f(CW\*(C`=>\*(C'\fR operator (which is usually used
+to separate a hash key from a hash value), instead they are interpreted
+as literal strings ('v65').  They were v\-strings from Perl 5.6.0 to
+Perl 5.8.0, but that caused more confusion and breakage than good.
+Multi-number v\-strings like \f(CW\*(C`v65.66\*(C'\fR and \f(CW65.66.67\fR continue to
+be v\-strings always.
+.PP
+\fISpecial Literals\fR
+.IX Subsection "Special Literals"
+.PP
+The special literals _\|_FILE_\|_, _\|_LINE_\|_, and _\|_PACKAGE_\|_
+represent the current filename, line number, and package name at that
+point in your program.  They may be used only as separate tokens; they
+will not be interpolated into strings.  If there is no current package
+(due to an empty \f(CW\*(C`package;\*(C'\fR directive), _\|_PACKAGE_\|_ is the undefined
+value.
+.PP
+The two control characters ^D and ^Z, and the tokens _\|_END_\|_ and _\|_DATA_\|_
+may be used to indicate the logical end of the script before the actual
+end of file.  Any following text is ignored.
+.PP
+Text after _\|_DATA_\|_ but may be read via the filehandle \f(CW\*(C`PACKNAME::DATA\*(C'\fR,
+where \f(CW\*(C`PACKNAME\*(C'\fR is the package that was current when the _\|_DATA_\|_
+token was encountered.  The filehandle is left open pointing to the
+contents after _\|_DATA_\|_.  It is the program's responsibility to
+\&\f(CW\*(C`close DATA\*(C'\fR when it is done reading from it.  For compatibility with
+older scripts written before _\|_DATA_\|_ was introduced, _\|_END_\|_ behaves
+like _\|_DATA_\|_ in the toplevel script (but not in files loaded with
+\&\f(CW\*(C`require\*(C'\fR or \f(CW\*(C`do\*(C'\fR) and leaves the remaining contents of the
+file accessible via \f(CW\*(C`main::DATA\*(C'\fR.
+.PP
+See SelfLoader for more description of _\|_DATA_\|_, and
+an example of its use.  Note that you cannot read from the \s-1DATA\s0
+filehandle in a \s-1BEGIN\s0 block: the \s-1BEGIN\s0 block is executed as soon
+as it is seen (during compilation), at which point the corresponding
+_\|_DATA_\|_ (or _\|_END_\|_) token has not yet been seen.
+.PP
+\fIBarewords\fR
+.IX Subsection "Barewords"
+.PP
+A word that has no other interpretation in the grammar will
+be treated as if it were a quoted string.  These are known as
+\&\*(L"barewords\*(R".  As with filehandles and labels, a bareword that consists
+entirely of lowercase letters risks conflict with future reserved
+words, and if you use the \f(CW\*(C`use warnings\*(C'\fR pragma or the \fB\-w\fR switch, 
+Perl will warn you about any
+such words.  Some people may wish to outlaw barewords entirely.  If you
+say
+.PP
+.Vb 1
+\&    use strict 'subs';
+.Ve
+.PP
+then any bareword that would \s-1NOT\s0 be interpreted as a subroutine call
+produces a compile-time error instead.  The restriction lasts to the
+end of the enclosing block.  An inner block may countermand this
+by saying \f(CW\*(C`no strict 'subs'\*(C'\fR.
+.PP
+\fIArray Joining Delimiter\fR
+.IX Subsection "Array Joining Delimiter"
+.PP
+Arrays and slices are interpolated into double-quoted strings
+by joining the elements with the delimiter specified in the \f(CW$"\fR
+variable (\f(CW$LIST_SEPARATOR\fR if \*(L"use English;\*(R" is specified), 
+space by default.  The following are equivalent:
+.PP
+.Vb 2
+\&    $temp = join($", @ARGV);
+\&    system "echo $temp";
+.Ve
+.PP
+.Vb 1
+\&    system "echo @ARGV";
+.Ve
+.PP
+Within search patterns (which also undergo double-quotish substitution)
+there is an unfortunate ambiguity:  Is \f(CW\*(C`/$foo[bar]/\*(C'\fR to be interpreted as
+\&\f(CW\*(C`/${foo}[bar]/\*(C'\fR (where \f(CW\*(C`[bar]\*(C'\fR is a character class for the regular
+expression) or as \f(CW\*(C`/${foo[bar]}/\*(C'\fR (where \f(CW\*(C`[bar]\*(C'\fR is the subscript to array
+\&\f(CW at foo\fR)?  If \f(CW at foo\fR doesn't otherwise exist, then it's obviously a
+character class.  If \f(CW at foo\fR exists, Perl takes a good guess about \f(CW\*(C`[bar]\*(C'\fR,
+and is almost always right.  If it does guess wrong, or if you're just
+plain paranoid, you can force the correct interpretation with curly
+braces as above.
+.PP
+If you're looking for the information on how to use here\-documents,
+which used to be here, that's been moved to
+\&\*(L"Quote and Quote-like Operators\*(R" in perlop.
+.Sh "List value constructors"
+.IX Subsection "List value constructors"
+List values are denoted by separating individual values by commas
+(and enclosing the list in parentheses where precedence requires it):
+.PP
+.Vb 1
+\&    (LIST)
+.Ve
+.PP
+In a context not requiring a list value, the value of what appears
+to be a list literal is simply the value of the final element, as
+with the C comma operator.  For example,
+.PP
+.Vb 1
+\&    @foo = ('cc', '-E', $bar);
+.Ve
+.PP
+assigns the entire list value to array \f(CW at foo\fR, but
+.PP
+.Vb 1
+\&    $foo = ('cc', '-E', $bar);
+.Ve
+.PP
+assigns the value of variable \f(CW$bar\fR to the scalar variable \f(CW$foo\fR.
+Note that the value of an actual array in scalar context is the
+length of the array; the following assigns the value 3 to \f(CW$foo:\fR
+.PP
+.Vb 2
+\&    @foo = ('cc', '-E', $bar);
+\&    $foo = @foo;                # $foo gets 3
+.Ve
+.PP
+You may have an optional comma before the closing parenthesis of a
+list literal, so that you can say:
+.PP
+.Vb 5
+\&    @foo = (
+\&        1,
+\&        2,
+\&        3,
+\&    );
+.Ve
+.PP
+To use a here-document to assign an array, one line per element,
+you might use an approach like this:
+.PP
+.Vb 7
+\&    @sauces = <<End_Lines =~ m/(\eS.*\eS)/g;
+\&        normal tomato
+\&        spicy tomato
+\&        green chile
+\&        pesto
+\&        white wine
+\&    End_Lines
+.Ve
+.PP
+LISTs do automatic interpolation of sublists.  That is, when a \s-1LIST\s0 is
+evaluated, each element of the list is evaluated in list context, and
+the resulting list value is interpolated into \s-1LIST\s0 just as if each
+individual element were a member of \s-1LIST\s0.  Thus arrays and hashes lose their
+identity in a LIST\*(--the list
+.PP
+.Vb 1
+\&    (@foo, at bar,&SomeSub,%glarch)
+.Ve
+.PP
+contains all the elements of \f(CW at foo\fR followed by all the elements of \f(CW at bar\fR,
+followed by all the elements returned by the subroutine named SomeSub 
+called in list context, followed by the key/value pairs of \f(CW%glarch\fR.
+To make a list reference that does \fI\s-1NOT\s0\fR interpolate, see perlref.
+.PP
+The null list is represented by ().  Interpolating it in a list
+has no effect.  Thus ((),(),()) is equivalent to ().  Similarly,
+interpolating an array with no elements is the same as if no
+array had been interpolated at that point.
+.PP
+This interpolation combines with the facts that the opening
+and closing parentheses are optional (except when necessary for
+precedence) and lists may end with an optional comma to mean that
+multiple commas within lists are legal syntax. The list \f(CW\*(C`1,,3\*(C'\fR is a
+concatenation of two lists, \f(CW\*(C`1,\*(C'\fR and \f(CW3\fR, the first of which ends
+with that optional comma.  \f(CW\*(C`1,,3\*(C'\fR is \f(CW\*(C`(1,),(3)\*(C'\fR is \f(CW\*(C`1,3\*(C'\fR (And
+similarly for \f(CW\*(C`1,,,3\*(C'\fR is \f(CW\*(C`(1,),(,),3\*(C'\fR is \f(CW\*(C`1,3\*(C'\fR and so on.)  Not that
+we'd advise you to use this obfuscation.
+.PP
+A list value may also be subscripted like a normal array.  You must
+put the list in parentheses to avoid ambiguity.  For example:
+.PP
+.Vb 2
+\&    # Stat returns list value.
+\&    $time = (stat($file))[8];
+.Ve
+.PP
+.Vb 2
+\&    # SYNTAX ERROR HERE.
+\&    $time = stat($file)[8];  # OOPS, FORGOT PARENTHESES
+.Ve
+.PP
+.Vb 2
+\&    # Find a hex digit.
+\&    $hexdigit = ('a','b','c','d','e','f')[$digit-10];
+.Ve
+.PP
+.Vb 2
+\&    # A "reverse comma operator".
+\&    return (pop(@foo),pop(@foo))[0];
+.Ve
+.PP
+Lists may be assigned to only when each element of the list
+is itself legal to assign to:
+.PP
+.Vb 1
+\&    ($a, $b, $c) = (1, 2, 3);
+.Ve
+.PP
+.Vb 1
+\&    ($map{'red'}, $map{'blue'}, $map{'green'}) = (0x00f, 0x0f0, 0xf00);
+.Ve
+.PP
+An exception to this is that you may assign to \f(CW\*(C`undef\*(C'\fR in a list.
+This is useful for throwing away some of the return values of a
+function:
+.PP
+.Vb 1
+\&    ($dev, $ino, undef, undef, $uid, $gid) = stat($file);
+.Ve
+.PP
+List assignment in scalar context returns the number of elements
+produced by the expression on the right side of the assignment:
+.PP
+.Vb 2
+\&    $x = (($foo,$bar) = (3,2,1));       # set $x to 3, not 2
+\&    $x = (($foo,$bar) = f());           # set $x to f()'s return count
+.Ve
+.PP
+This is handy when you want to do a list assignment in a Boolean
+context, because most list functions return a null list when finished,
+which when assigned produces a 0, which is interpreted as \s-1FALSE\s0.
+.PP
+It's also the source of a useful idiom for executing a function or
+performing an operation in list context and then counting the number of
+return values, by assigning to an empty list and then using that
+assignment in scalar context. For example, this code:
+.PP
+.Vb 1
+\&    $count = () = $string =~ /\ed+/g;
+.Ve
+.PP
+will place into \f(CW$count\fR the number of digit groups found in \f(CW$string\fR.
+This happens because the pattern match is in list context (since it
+is being assigned to the empty list), and will therefore return a list
+of all matching parts of the string. The list assignment in scalar
+context will translate that into the number of elements (here, the
+number of times the pattern matched) and assign that to \f(CW$count\fR. Note
+that simply using
+.PP
+.Vb 1
+\&    $count = $string =~ /\ed+/g;
+.Ve
+.PP
+would not have worked, since a pattern match in scalar context will
+only return true or false, rather than a count of matches.
+.PP
+The final element of a list assignment may be an array or a hash:
+.PP
+.Vb 2
+\&    ($a, $b, @rest) = split;
+\&    my($a, $b, %rest) = @_;
+.Ve
+.PP
+You can actually put an array or hash anywhere in the list, but the first one
+in the list will soak up all the values, and anything after it will become
+undefined.  This may be useful in a \fImy()\fR or \fIlocal()\fR.
+.PP
+A hash can be initialized using a literal list holding pairs of
+items to be interpreted as a key and a value:
+.PP
+.Vb 2
+\&    # same as map assignment above
+\&    %map = ('red',0x00f,'blue',0x0f0,'green',0xf00);
+.Ve
+.PP
+While literal lists and named arrays are often interchangeable, that's
+not the case for hashes.  Just because you can subscript a list value like
+a normal array does not mean that you can subscript a list value as a
+hash.  Likewise, hashes included as parts of other lists (including
+parameters lists and return lists from functions) always flatten out into
+key/value pairs.  That's why it's good to use references sometimes.
+.PP
+It is often more readable to use the \f(CW\*(C`=>\*(C'\fR operator between key/value
+pairs.  The \f(CW\*(C`=>\*(C'\fR operator is mostly just a more visually distinctive
+synonym for a comma, but it also arranges for its left-hand operand to be
+interpreted as a string \*(-- if it's a bareword that would be a legal simple
+identifier (\f(CW\*(C`=>\*(C'\fR doesn't quote compound identifiers, that contain
+double colons). This makes it nice for initializing hashes:
+.PP
+.Vb 5
+\&    %map = (
+\&                 red   => 0x00f,
+\&                 blue  => 0x0f0,
+\&                 green => 0xf00,
+\&   );
+.Ve
+.PP
+or for initializing hash references to be used as records:
+.PP
+.Vb 5
+\&    $rec = {
+\&                witch => 'Mable the Merciless',
+\&                cat   => 'Fluffy the Ferocious',
+\&                date  => '10/31/1776',
+\&    };
+.Ve
+.PP
+or for using call-by-named-parameter to complicated functions:
+.PP
+.Vb 7
+\&   $field = $query->radio_group(
+\&               name      => 'group_name',
+\&               values    => ['eenie','meenie','minie'],
+\&               default   => 'meenie',
+\&               linebreak => 'true',
+\&               labels    => \e%labels
+\&   );
+.Ve
+.PP
+Note that just because a hash is initialized in that order doesn't
+mean that it comes out in that order.  See \*(L"sort\*(R" in perlfunc for examples
+of how to arrange for an output ordering.
+.Sh "Subscripts"
+.IX Subsection "Subscripts"
+An array is subscripted by specifying a dollary sign (\f(CW\*(C`$\*(C'\fR), then the
+name of the array (without the leading \f(CW\*(C`@\*(C'\fR), then the subscript inside
+square brackets.  For example:
+.PP
+.Vb 2
+\&    @myarray = (5, 50, 500, 5000);
+\&    print "Element Number 2 is", $myarray[2], "\en";
+.Ve
+.PP
+The array indices start with 0. A negative subscript retrieves its 
+value from the end.  In our example, \f(CW$myarray[\-1]\fR would have been 
+5000, and \f(CW$myarray[\-2]\fR would have been 500.
+.PP
+Hash subscripts are similar, only instead of square brackets curly brackets
+are used. For example:
+.PP
+.Vb 7
+\&    %scientists = 
+\&    (
+\&        "Newton" => "Isaac",
+\&        "Einstein" => "Albert",
+\&        "Darwin" => "Charles",
+\&        "Feynman" => "Richard",
+\&    );
+.Ve
+.PP
+.Vb 1
+\&    print "Darwin's First Name is ", $scientists{"Darwin"}, "\en";
+.Ve
+.Sh "Slices"
+.IX Subsection "Slices"
+A common way to access an array or a hash is one scalar element at a
+time.  You can also subscript a list to get a single element from it.
+.PP
+.Vb 3
+\&    $whoami = $ENV{"USER"};             # one element from the hash
+\&    $parent = $ISA[0];                  # one element from the array
+\&    $dir    = (getpwnam("daemon"))[7];  # likewise, but with list
+.Ve
+.PP
+A slice accesses several elements of a list, an array, or a hash
+simultaneously using a list of subscripts.  It's more convenient
+than writing out the individual elements as a list of separate
+scalar values.
+.PP
+.Vb 4
+\&    ($him, $her)   = @folks[0,-1];              # array slice
+\&    @them          = @folks[0 .. 3];            # array slice
+\&    ($who, $home)  = @ENV{"USER", "HOME"};      # hash slice
+\&    ($uid, $dir)   = (getpwnam("daemon"))[2,7]; # list slice
+.Ve
+.PP
+Since you can assign to a list of variables, you can also assign to
+an array or hash slice.
+.PP
+.Vb 4
+\&    @days[3..5]    = qw/Wed Thu Fri/;
+\&    @colors{'red','blue','green'} 
+\&                   = (0xff0000, 0x0000ff, 0x00ff00);
+\&    @folks[0, -1]  = @folks[-1, 0];
+.Ve
+.PP
+The previous assignments are exactly equivalent to
+.PP
+.Vb 4
+\&    ($days[3], $days[4], $days[5]) = qw/Wed Thu Fri/;
+\&    ($colors{'red'}, $colors{'blue'}, $colors{'green'})
+\&                   = (0xff0000, 0x0000ff, 0x00ff00);
+\&    ($folks[0], $folks[-1]) = ($folks[-1], $folks[0]);
+.Ve
+.PP
+Since changing a slice changes the original array or hash that it's
+slicing, a \f(CW\*(C`foreach\*(C'\fR construct will alter some\*(--or even all\*(--of the
+values of the array or hash.
+.PP
+.Vb 1
+\&    foreach (@array[ 4 .. 10 ]) { s/peter/paul/ }
+.Ve
+.PP
+.Vb 5
+\&    foreach (@hash{qw[key1 key2]}) {
+\&        s/^\es+//;           # trim leading whitespace
+\&        s/\es+$//;           # trim trailing whitespace
+\&        s/(\ew+)/\eu\eL$1/g;   # "titlecase" words
+\&    }
+.Ve
+.PP
+A slice of an empty list is still an empty list.  Thus:
+.PP
+.Vb 3
+\&    @a = ()[1,0];           # @a has no elements
+\&    @b = (@a)[0,1];         # @b has no elements
+\&    @c = (0,1)[2,3];        # @c has no elements
+.Ve
+.PP
+But:
+.PP
+.Vb 2
+\&    @a = (1)[1,0];          # @a has two elements
+\&    @b = (1,undef)[1,0,2];  # @b has three elements
+.Ve
+.PP
+This makes it easy to write loops that terminate when a null list
+is returned:
+.PP
+.Vb 3
+\&    while ( ($home, $user) = (getpwent)[7,0]) {
+\&        printf "%-8s %s\en", $user, $home;
+\&    }
+.Ve
+.PP
+As noted earlier in this document, the scalar sense of list assignment
+is the number of elements on the right-hand side of the assignment.
+The null list contains no elements, so when the password file is
+exhausted, the result is 0, not 2.
+.PP
+If you're confused about why you use an '@' there on a hash slice
+instead of a '%', think of it like this.  The type of bracket (square
+or curly) governs whether it's an array or a hash being looked at.
+On the other hand, the leading symbol ('$' or '@') on the array or
+hash indicates whether you are getting back a singular value (a
+scalar) or a plural one (a list).
+.Sh "Typeglobs and Filehandles"
+.IX Subsection "Typeglobs and Filehandles"
+Perl uses an internal type called a \fItypeglob\fR to hold an entire
+symbol table entry.  The type prefix of a typeglob is a \f(CW\*(C`*\*(C'\fR, because
+it represents all types.  This used to be the preferred way to
+pass arrays and hashes by reference into a function, but now that
+we have real references, this is seldom needed.  
+.PP
+The main use of typeglobs in modern Perl is create symbol table aliases.
+This assignment:
+.PP
+.Vb 1
+\&    *this = *that;
+.Ve
+.PP
+makes \f(CW$this\fR an alias for \f(CW$that\fR, \f(CW at this\fR an alias for \f(CW at that\fR, \f(CW%this\fR an alias
+for \f(CW%that\fR, &this an alias for &that, etc.  Much safer is to use a reference.
+This:
+.PP
+.Vb 1
+\&    local *Here::blue = \e$There::green;
+.Ve
+.PP
+temporarily makes \f(CW$Here::blue\fR an alias for \f(CW$There::green\fR, but doesn't
+make \f(CW at Here::blue\fR an alias for \f(CW at There::green\fR, or \f(CW%Here::blue\fR an alias for
+\&\f(CW%There::green\fR, etc.  See \*(L"Symbol Tables\*(R" in perlmod for more examples
+of this.  Strange though this may seem, this is the basis for the whole
+module import/export system.
+.PP
+Another use for typeglobs is to pass filehandles into a function or
+to create new filehandles.  If you need to use a typeglob to save away
+a filehandle, do it this way:
+.PP
+.Vb 1
+\&    $fh = *STDOUT;
+.Ve
+.PP
+or perhaps as a real reference, like this:
+.PP
+.Vb 1
+\&    $fh = \e*STDOUT;
+.Ve
+.PP
+See perlsub for examples of using these as indirect filehandles
+in functions.
+.PP
+Typeglobs are also a way to create a local filehandle using the \fIlocal()\fR
+operator.  These last until their block is exited, but may be passed back.
+For example:
+.PP
+.Vb 7
+\&    sub newopen {
+\&        my $path = shift;
+\&        local  *FH;  # not my!
+\&        open   (FH, $path)          or  return undef;
+\&        return *FH;
+\&    }
+\&    $fh = newopen('/etc/passwd');
+.Ve
+.PP
+Now that we have the \f(CW*foo{THING}\fR notation, typeglobs aren't used as much
+for filehandle manipulations, although they're still needed to pass brand
+new file and directory handles into or out of functions. That's because
+\&\f(CW*HANDLE{IO}\fR only works if \s-1HANDLE\s0 has already been used as a handle.
+In other words, \f(CW*FH\fR must be used to create new symbol table entries;
+\&\f(CW*foo{THING}\fR cannot.  When in doubt, use \f(CW*FH\fR.
+.PP
+All functions that are capable of creating filehandles (\fIopen()\fR,
+\&\fIopendir()\fR, \fIpipe()\fR, \fIsocketpair()\fR, \fIsysopen()\fR, \fIsocket()\fR, and \fIaccept()\fR)
+automatically create an anonymous filehandle if the handle passed to
+them is an uninitialized scalar variable. This allows the constructs
+such as \f(CW\*(C`open(my $fh, ...)\*(C'\fR and \f(CW\*(C`open(local $fh,...)\*(C'\fR to be used to
+create filehandles that will conveniently be closed automatically when
+the scope ends, provided there are no other references to them. This
+largely eliminates the need for typeglobs when opening filehandles
+that must be passed around, as in the following example:
+.PP
+.Vb 5
+\&    sub myopen {
+\&        open my $fh, "@_"
+\&             or die "Can't open '@_': $!";
+\&        return $fh;
+\&    }
+.Ve
+.PP
+.Vb 5
+\&    {
+\&        my $f = myopen("</etc/motd");
+\&        print <$f>;
+\&        # $f implicitly closed here
+\&    }
+.Ve
+.PP
+Note that if an initialized scalar variable is used instead the
+result is different: \f(CW\*(C`my $fh='zzz'; open($fh, ...)\*(C'\fR is equivalent
+to \f(CW\*(C`open( *{'zzz'}, ...)\*(C'\fR.
+\&\f(CW\*(C`use strict 'refs'\*(C'\fR forbids such practice.
+.PP
+Another way to create anonymous filehandles is with the Symbol
+module or with the IO::Handle module and its ilk.  These modules
+have the advantage of not hiding different types of the same name
+during the \fIlocal()\fR.  See the bottom of \*(L"\fIopen()\fR\*(R" in perlfunc for an
+example.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+See perlvar for a description of Perl's built-in variables and
+a discussion of legal variable names.  See perlref, perlsub,
+and \*(L"Symbol Tables\*(R" in perlmod for more discussion on typeglobs and
+the \f(CW*foo{THING}\fR syntax.
diff --git a/raw/man1/perlfaq.1 b/raw/man1/perlfaq.1
new file mode 100644
index 0000000..0635a34
--- /dev/null
+++ b/raw/man1/perlfaq.1
@@ -0,0 +1,858 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ 1"
+.TH PERLFAQ 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq \- frequently asked questions about Perl ($Date: 2004/06/16 03:02:15 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The perlfaq is divided into several documents based on topics.  A table
+of contents is at the end of this document.
+.Sh "Where to get the perlfaq"
+.IX Subsection "Where to get the perlfaq"
+Extracts of the perlfaq are posted regularly to
+comp.lang.perl.misc.  It is available on many web sites:
+http://www.perldoc.com/ and http://faq.perl.org/
+.Sh "How to contribute to the perlfaq"
+.IX Subsection "How to contribute to the perlfaq"
+You may mail corrections, additions, and suggestions to
+perlfaq\-workers at perl.org .  This alias should not be used to
+\&\fIask\fR FAQs.  It's for fixing the current \s-1FAQ\s0. Send
+questions to the comp.lang.perl.misc newsgroup.  You can
+view the source tree at http://cvs.perl.org/cvsweb/perlfaq/
+(which is outside of the main Perl source tree).  The \s-1CVS\s0
+repository notes all changes to the \s-1FAQ\s0.
+.Sh "What will happen if you mail your Perl programming problems to the authors"
+.IX Subsection "What will happen if you mail your Perl programming problems to the authors"
+Your questions will probably go unread, unless they're
+suggestions of new questions to add to the \s-1FAQ\s0, in which
+case they should have gone to the perlfaq\-workers at perl.org
+instead.
+.PP
+You should have read section 2 of this faq.  There you would
+have learned that comp.lang.perl.misc is the appropriate
+place to go for free advice.  If your question is really
+important and you require a prompt and correct answer, you
+should hire a consultant.
+.SH "Credits"
+.IX Header "Credits"
+The original perlfaq was written by Tom Christiansen, then expanded
+by collaboration between Tom and Nathan Torkington.  The current
+document is maintained by the perlfaq-workers (perlfaq\-workers at perl.org).
+Several people have contributed answers, corrections, and comments.
+.SH "Author and Copyright Information"
+.IX Header "Author and Copyright Information"
+Copyright (c) 1997\-2003 Tom Christiansen, Nathan Torkington, and 
+other contributors noted in the answers.
+.PP
+All rights reserved.
+.Sh "Bundled Distributions"
+.IX Subsection "Bundled Distributions"
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in these files
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
+.Sh "Disclaimer"
+.IX Subsection "Disclaimer"
+This information is offered in good faith and in the hope that it may
+be of use, but is not guaranteed to be correct, up to date, or suitable
+for any particular purpose whatsoever.  The authors accept no liability
+in respect of this information or its use.
+.SH "Table of Contents"
+.IX Header "Table of Contents"
+.IP "perlfaq  \- this document" 4
+.IX Item "perlfaq  - this document"
+.PD 0
+.IP "perlfaq1 \- General Questions About Perl" 4
+.IX Item "perlfaq1 - General Questions About Perl"
+.IP "perlfaq2 \- Obtaining and Learning about Perl" 4
+.IX Item "perlfaq2 - Obtaining and Learning about Perl"
+.IP "perlfaq3 \- Programming Tools" 4
+.IX Item "perlfaq3 - Programming Tools"
+.IP "perlfaq4 \- Data Manipulation" 4
+.IX Item "perlfaq4 - Data Manipulation"
+.IP "perlfaq5 \- Files and Formats" 4
+.IX Item "perlfaq5 - Files and Formats"
+.IP "perlfaq6 \- Regular Expressions" 4
+.IX Item "perlfaq6 - Regular Expressions"
+.IP "perlfaq7 \- General Perl Language Issues" 4
+.IX Item "perlfaq7 - General Perl Language Issues"
+.IP "perlfaq8 \- System Interaction" 4
+.IX Item "perlfaq8 - System Interaction"
+.IP "perlfaq9 \- Networking" 4
+.IX Item "perlfaq9 - Networking"
+.PD
+.SH "The Questions"
+.IX Header "The Questions"
+.Sh "perlfaq1: General Questions About Perl"
+.IX Subsection "perlfaq1: General Questions About Perl"
+Very general, high-level questions about Perl.
+.IP "\(bu" 4
+What is Perl?
+.IP "\(bu" 4
+Who supports Perl?  Who develops it?  Why is it free?
+.IP "\(bu" 4
+Which version of Perl should I use?
+.IP "\(bu" 4
+What are perl4 and perl5?
+.IP "\(bu" 4
+What is perl6?
+.IP "\(bu" 4
+How stable is Perl?
+.IP "\(bu" 4
+Is Perl difficult to learn?
+.IP "\(bu" 4
+How does Perl compare with other languages like Java, Python, \s-1REXX\s0, Scheme, or Tcl?
+.IP "\(bu" 4
+Can I do [task] in Perl?
+.IP "\(bu" 4
+When shouldn't I program in Perl?
+.IP "\(bu" 4
+What's the difference between \*(L"perl\*(R" and \*(L"Perl\*(R"?
+.IP "\(bu" 4
+Is it a Perl program or a Perl script?
+.IP "\(bu" 4
+What is a \s-1JAPH\s0?
+.IP "\(bu" 4
+Where can I get a list of Larry Wall witticisms?
+.IP "\(bu" 4
+How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?
+.Sh "perlfaq2: Obtaining and Learning about Perl"
+.IX Subsection "perlfaq2: Obtaining and Learning about Perl"
+Where to find source and documentation for Perl, support,
+and related matters.
+.IP "\(bu" 4
+What machines support Perl?  Where do I get it?
+.IP "\(bu" 4
+How can I get a binary version of Perl?
+.IP "\(bu" 4
+I don't have a C compiler on my system.  How can I compile perl?
+.IP "\(bu" 4
+I copied the Perl binary from one machine to another, but scripts don't work.
+.IP "\(bu" 4
+I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed.  How do I make it work?
+.IP "\(bu" 4
+What modules and extensions are available for Perl?  What is \s-1CPAN\s0?  What does CPAN/src/... mean?
+.IP "\(bu" 4
+Is there an \s-1ISO\s0 or \s-1ANSI\s0 certified version of Perl?
+.IP "\(bu" 4
+Where can I get information on Perl?
+.IP "\(bu" 4
+What are the Perl newsgroups on Usenet?  Where do I post questions?
+.IP "\(bu" 4
+Where should I post source code?
+.IP "\(bu" 4
+Perl Books
+.IP "\(bu" 4
+Perl in Magazines
+.IP "\(bu" 4
+Perl on the Net: \s-1FTP\s0 and \s-1WWW\s0 Access
+.IP "\(bu" 4
+What mailing lists are there for Perl?
+.IP "\(bu" 4
+Archives of comp.lang.perl.misc
+.IP "\(bu" 4
+Where can I buy a commercial version of Perl?
+.IP "\(bu" 4
+Where do I send bug reports?
+.IP "\(bu" 4
+What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
+.Sh "perlfaq3: Programming Tools"
+.IX Subsection "perlfaq3: Programming Tools"
+Programmer tools and programming support.
+.IP "\(bu" 4
+How do I do (anything)?
+.IP "\(bu" 4
+How can I use Perl interactively?
+.IP "\(bu" 4
+Is there a Perl shell?
+.IP "\(bu" 4
+How do I find which modules are installed on my system?
+.IP "\(bu" 4
+How do I debug my Perl programs?
+.IP "\(bu" 4
+How do I profile my Perl programs?
+.IP "\(bu" 4
+How do I cross-reference my Perl programs?
+.IP "\(bu" 4
+Is there a pretty-printer (formatter) for Perl?
+.IP "\(bu" 4
+Is there a ctags for Perl?
+.IP "\(bu" 4
+Is there an \s-1IDE\s0 or Windows Perl Editor?
+.IP "\(bu" 4
+Where can I get Perl macros for vi?
+.IP "\(bu" 4
+Where can I get perl-mode for emacs?
+.IP "\(bu" 4
+How can I use curses with Perl?
+.IP "\(bu" 4
+How can I use X or Tk with Perl?
+.IP "\(bu" 4
+How can I generate simple menus without using \s-1CGI\s0 or Tk?
+.IP "\(bu" 4
+How can I make my Perl program run faster?
+.IP "\(bu" 4
+How can I make my Perl program take less memory?
+.IP "\(bu" 4
+Is it safe to return a reference to local or lexical data?
+.IP "\(bu" 4
+How can I free an array or hash so my program shrinks?
+.IP "\(bu" 4
+How can I make my \s-1CGI\s0 script more efficient?
+.IP "\(bu" 4
+How can I hide the source for my Perl program?
+.IP "\(bu" 4
+How can I compile my Perl program into byte code or C?
+.IP "\(bu" 4
+How can I compile Perl into Java?
+.IP "\(bu" 4
+How can I get \f(CW\*(C`#!perl\*(C'\fR to work on [\s-1MS\-DOS\s0,NT,...]?
+.IP "\(bu" 4
+Can I write useful Perl programs on the command line?
+.IP "\(bu" 4
+Why don't Perl one-liners work on my DOS/Mac/VMS system?
+.IP "\(bu" 4
+Where can I learn about \s-1CGI\s0 or Web programming in Perl?
+.IP "\(bu" 4
+Where can I learn about object-oriented Perl programming?
+.IP "\(bu" 4
+Where can I learn about linking C with Perl? [h2xs, xsubpp]
+.IP "\(bu" 4
+I've read perlembed, perlguts, etc., but I can't embed perl in
+my C program; what am I doing wrong?
+.IP "\(bu" 4
+When I tried to run my script, I got this message. What does it mean?
+.IP "\(bu" 4
+What's MakeMaker?
+.Sh "perlfaq4: Data Manipulation"
+.IX Subsection "perlfaq4: Data Manipulation"
+Manipulating numbers, dates, strings, arrays, hashes, and
+miscellaneous data issues.
+.IP "\(bu" 4
+Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
+.IP "\(bu" 4
+Why isn't my octal data interpreted correctly?
+.IP "\(bu" 4
+Does Perl have a \fIround()\fR function?  What about \fIceil()\fR and \fIfloor()\fR?  Trig functions?
+.IP "\(bu" 4
+How do I convert between numeric representations?
+.IP "\(bu" 4
+Why doesn't & work the way I want it to?
+.IP "\(bu" 4
+How do I multiply matrices?
+.IP "\(bu" 4
+How do I perform an operation on a series of integers?
+.IP "\(bu" 4
+How can I output Roman numerals?
+.IP "\(bu" 4
+Why aren't my random numbers random?
+.IP "\(bu" 4
+How do I get a random number between X and Y?
+.IP "\(bu" 4
+How do I find the day or week of the year?
+.IP "\(bu" 4
+How do I find the current century or millennium?
+.IP "\(bu" 4
+How can I compare two dates and find the difference?
+.IP "\(bu" 4
+How can I take a string and turn it into epoch seconds?
+.IP "\(bu" 4
+How can I find the Julian Day?
+.IP "\(bu" 4
+How do I find yesterday's date?
+.IP "\(bu" 4
+Does Perl have a Year 2000 problem?  Is Perl Y2K compliant?
+.IP "\(bu" 4
+How do I validate input?
+.IP "\(bu" 4
+How do I unescape a string?
+.IP "\(bu" 4
+How do I remove consecutive pairs of characters?
+.IP "\(bu" 4
+How do I expand function calls in a string?
+.IP "\(bu" 4
+How do I find matching/nesting anything?
+.IP "\(bu" 4
+How do I reverse a string?
+.IP "\(bu" 4
+How do I expand tabs in a string?
+.IP "\(bu" 4
+How do I reformat a paragraph?
+.IP "\(bu" 4
+How can I access or change N characters of a string?
+.IP "\(bu" 4
+How do I change the Nth occurrence of something?
+.IP "\(bu" 4
+How can I count the number of occurrences of a substring within a string?
+.IP "\(bu" 4
+How do I capitalize all the words on one line?
+.IP "\(bu" 4
+How can I split a [character] delimited string except when inside [character]?
+.IP "\(bu" 4
+How do I strip blank space from the beginning/end of a string?
+.IP "\(bu" 4
+How do I pad a string with blanks or pad a number with zeroes?
+.IP "\(bu" 4
+How do I extract selected columns from a string?
+.IP "\(bu" 4
+How do I find the soundex value of a string?
+.IP "\(bu" 4
+How can I expand variables in text strings?
+.IP "\(bu" 4
+What's wrong with always quoting \*(L"$vars\*(R"?
+.IP "\(bu" 4
+Why don't my <<\s-1HERE\s0 documents work?
+.IP "\(bu" 4
+What is the difference between a list and an array?
+.IP "\(bu" 4
+What is the difference between \f(CW$array\fR[1] and \f(CW at array\fR[1]?
+.IP "\(bu" 4
+How can I remove duplicate elements from a list or array?
+.IP "\(bu" 4
+How can I tell whether a certain element is contained in a list or array?
+.IP "\(bu" 4
+How do I compute the difference of two arrays?  How do I compute the intersection of two arrays?
+.IP "\(bu" 4
+How do I test whether two arrays or hashes are equal?
+.IP "\(bu" 4
+How do I find the first array element for which a condition is true?
+.IP "\(bu" 4
+How do I handle linked lists?
+.IP "\(bu" 4
+How do I handle circular lists?
+.IP "\(bu" 4
+How do I shuffle an array randomly?
+.IP "\(bu" 4
+How do I process/modify each element of an array?
+.IP "\(bu" 4
+How do I select a random element from an array?
+.IP "\(bu" 4
+How do I permute N elements of a list?
+.IP "\(bu" 4
+How do I sort an array by (anything)?
+.IP "\(bu" 4
+How do I manipulate arrays of bits?
+.IP "\(bu" 4
+Why does \fIdefined()\fR return true on empty arrays and hashes?
+.IP "\(bu" 4
+How do I process an entire hash?
+.IP "\(bu" 4
+What happens if I add or remove keys from a hash while iterating over it?
+.IP "\(bu" 4
+How do I look up a hash element by value?
+.IP "\(bu" 4
+How can I know how many entries are in a hash?
+.IP "\(bu" 4
+How do I sort a hash (optionally by value instead of key)?
+.IP "\(bu" 4
+How can I always keep my hash sorted?
+.IP "\(bu" 4
+What's the difference between \*(L"delete\*(R" and \*(L"undef\*(R" with hashes?
+.IP "\(bu" 4
+Why don't my tied hashes make the defined/exists distinction?
+.IP "\(bu" 4
+How do I reset an \fIeach()\fR operation part-way through?
+.IP "\(bu" 4
+How can I get the unique keys from two hashes?
+.IP "\(bu" 4
+How can I store a multidimensional array in a \s-1DBM\s0 file?
+.IP "\(bu" 4
+How can I make my hash remember the order I put elements into it?
+.IP "\(bu" 4
+Why does passing a subroutine an undefined element in a hash create it?
+.IP "\(bu" 4
+How can I make the Perl equivalent of a C structure/\*(C+ class/hash or array of hashes or arrays?
+.IP "\(bu" 4
+How can I use a reference as a hash key?
+.IP "\(bu" 4
+How do I handle binary data correctly?
+.IP "\(bu" 4
+How do I determine whether a scalar is a number/whole/integer/float?
+.IP "\(bu" 4
+How do I keep persistent data across program calls?
+.IP "\(bu" 4
+How do I print out or copy a recursive data structure?
+.IP "\(bu" 4
+How do I define methods for every class/object?
+.IP "\(bu" 4
+How do I verify a credit card checksum?
+.IP "\(bu" 4
+How do I pack arrays of doubles or floats for \s-1XS\s0 code?
+.Sh "perlfaq5: Files and Formats"
+.IX Subsection "perlfaq5: Files and Formats"
+I/O and the \*(L"f\*(R" issues: filehandles, flushing, formats, and footers.
+.IP "\(bu" 4
+How do I flush/unbuffer an output filehandle?  Why must I do this?
+.IP "\(bu" 4
+How do I change one line in a file/delete a line in a file/insert a line in the middle of a file/append to the beginning of a file?
+.IP "\(bu" 4
+How do I count the number of lines in a file?
+.IP "\(bu" 4
+How can I use Perl's \f(CW\*(C`\-i\*(C'\fR option from within a program?
+.IP "\(bu" 4
+How do I make a temporary file name?
+.IP "\(bu" 4
+How can I manipulate fixed-record-length files?
+.IP "\(bu" 4
+How can I make a filehandle local to a subroutine?  How do I pass filehandles between subroutines?  How do I make an array of filehandles?
+.IP "\(bu" 4
+How can I use a filehandle indirectly?
+.IP "\(bu" 4
+How can I set up a footer format to be used with \fIwrite()\fR?
+.IP "\(bu" 4
+How can I \fIwrite()\fR into a string?
+.IP "\(bu" 4
+How can I output my numbers with commas added?
+.IP "\(bu" 4
+How can I translate tildes (~) in a filename?
+.IP "\(bu" 4
+How come when I open a file read-write it wipes it out?
+.IP "\(bu" 4
+Why do I sometimes get an \*(L"Argument list too long\*(R" when I use <*>?
+.IP "\(bu" 4
+Is there a leak/bug in \fIglob()\fR?
+.IP "\(bu" 4
+How can I open a file with a leading \*(L">\*(R" or trailing blanks?
+.IP "\(bu" 4
+How can I reliably rename a file?
+.IP "\(bu" 4
+How can I lock a file?
+.IP "\(bu" 4
+Why can't I just open(\s-1FH\s0, ">file.lock")?
+.IP "\(bu" 4
+I still don't get locking.  I just want to increment the number in the file.  How can I do this?
+.IP "\(bu" 4
+All I want to do is append a small amount of text to the end of a file.  Do I still have to use locking?
+.IP "\(bu" 4
+How do I randomly update a binary file?
+.IP "\(bu" 4
+How do I get a file's timestamp in perl?
+.IP "\(bu" 4
+How do I set a file's timestamp in perl?
+.IP "\(bu" 4
+How do I print to more than one file at once?
+.IP "\(bu" 4
+How can I read in an entire file all at once?
+.IP "\(bu" 4
+How can I read in a file by paragraphs?
+.IP "\(bu" 4
+How can I read a single character from a file?  From the keyboard?
+.IP "\(bu" 4
+How can I tell whether there's a character waiting on a filehandle?
+.IP "\(bu" 4
+How do I do a \f(CW\*(C`tail \-f\*(C'\fR in perl?
+.IP "\(bu" 4
+How do I \fIdup()\fR a filehandle in Perl?
+.IP "\(bu" 4
+How do I close a file descriptor by number?
+.IP "\(bu" 4
+Why can't I use \*(L"C:\etemp\efoo\*(R" in \s-1DOS\s0 paths?  What doesn't `C:\etemp\efoo.exe` work?
+.IP "\(bu" 4
+Why doesn't glob(\*(L"*.*\*(R") get all the files?
+.IP "\(bu" 4
+Why does Perl let me delete read-only files?  Why does \f(CW\*(C`\-i\*(C'\fR clobber protected files?  Isn't this a bug in Perl?
+.IP "\(bu" 4
+How do I select a random line from a file?
+.IP "\(bu" 4
+Why do I get weird spaces when I print an array of lines?
+.Sh "perlfaq6: Regular Expressions"
+.IX Subsection "perlfaq6: Regular Expressions"
+Pattern matching and regular expressions.
+.IP "\(bu" 4
+How can I hope to use regular expressions without creating illegible and unmaintainable code?
+.IP "\(bu" 4
+I'm having trouble matching over more than one line.  What's wrong?
+.IP "\(bu" 4
+How can I pull out lines between two patterns that are themselves on different lines?
+.IP "\(bu" 4
+I put a regular expression into $/ but it didn't work. What's wrong?
+.IP "\(bu" 4
+How do I substitute case insensitively on the \s-1LHS\s0 while preserving case on the \s-1RHS\s0?
+.IP "\(bu" 4
+How can I make \f(CW\*(C`\ew\*(C'\fR match national character sets?
+.IP "\(bu" 4
+How can I match a locale-smart version of \f(CW\*(C`/[a\-zA\-Z]/\*(C'\fR?
+.IP "\(bu" 4
+How can I quote a variable to use in a regex?
+.IP "\(bu" 4
+What is \f(CW\*(C`/o\*(C'\fR really for?
+.IP "\(bu" 4
+How do I use a regular expression to strip C style comments from a file?
+.IP "\(bu" 4
+Can I use Perl regular expressions to match balanced text?
+.IP "\(bu" 4
+What does it mean that regexes are greedy?  How can I get around it?
+.IP "\(bu" 4
+How do I process each word on each line?
+.IP "\(bu" 4
+How can I print out a word-frequency or line-frequency summary?
+.IP "\(bu" 4
+How can I do approximate matching?
+.IP "\(bu" 4
+How do I efficiently match many regular expressions at once?
+.IP "\(bu" 4
+Why don't word-boundary searches with \f(CW\*(C`\eb\*(C'\fR work for me?
+.IP "\(bu" 4
+Why does using $&, $`, or $' slow my program down?
+.IP "\(bu" 4
+What good is \f(CW\*(C`\eG\*(C'\fR in a regular expression?
+.IP "\(bu" 4
+Are Perl regexes DFAs or NFAs?  Are they \s-1POSIX\s0 compliant?
+.IP "\(bu" 4
+What's wrong with using grep or map in a void context?
+.IP "\(bu" 4
+How can I match strings with multibyte characters?
+.IP "\(bu" 4
+How do I match a pattern that is supplied by the user?
+.Sh "perlfaq7: General Perl Language Issues"
+.IX Subsection "perlfaq7: General Perl Language Issues"
+General Perl language issues that don't clearly fit into any of the
+other sections.
+.IP "\(bu" 4
+Can I get a BNF/yacc/RE for the Perl language?
+.IP "\(bu" 4
+What are all these $@%&* punctuation signs, and how do I know when to use them?
+.IP "\(bu" 4
+Do I always/never have to quote my strings or use semicolons and commas?
+.IP "\(bu" 4
+How do I skip some return values?
+.IP "\(bu" 4
+How do I temporarily block warnings?
+.IP "\(bu" 4
+What's an extension?
+.IP "\(bu" 4
+Why do Perl operators have different precedence than C operators?
+.IP "\(bu" 4
+How do I declare/create a structure?
+.IP "\(bu" 4
+How do I create a module?
+.IP "\(bu" 4
+How do I create a class?
+.IP "\(bu" 4
+How can I tell if a variable is tainted?
+.IP "\(bu" 4
+What's a closure?
+.IP "\(bu" 4
+What is variable suicide and how can I prevent it?
+.IP "\(bu" 4
+How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
+.IP "\(bu" 4
+How do I create a static variable?
+.IP "\(bu" 4
+What's the difference between dynamic and lexical (static) scoping?  Between \fIlocal()\fR and \fImy()\fR?
+.IP "\(bu" 4
+How can I access a dynamic variable while a similarly named lexical is in scope?
+.IP "\(bu" 4
+What's the difference between deep and shallow binding?
+.IP "\(bu" 4
+Why doesn't "my($foo) = <\s-1FILE\s0>;" work right?
+.IP "\(bu" 4
+How do I redefine a builtin function, operator, or method?
+.IP "\(bu" 4
+What's the difference between calling a function as &foo and \fIfoo()\fR?
+.IP "\(bu" 4
+How do I create a switch or case statement?
+.IP "\(bu" 4
+How can I catch accesses to undefined variables, functions, or methods?
+.IP "\(bu" 4
+Why can't a method included in this same file be found?
+.IP "\(bu" 4
+How can I find out my current package?
+.IP "\(bu" 4
+How can I comment out a large block of perl code?
+.IP "\(bu" 4
+How do I clear a package?
+.IP "\(bu" 4
+How can I use a variable as a variable name?
+.IP "\(bu" 4
+What does \*(L"bad interpreter\*(R" mean?
+.Sh "perlfaq8: System Interaction"
+.IX Subsection "perlfaq8: System Interaction"
+Interprocess communication (\s-1IPC\s0), control over the user-interface
+(keyboard, screen and pointing devices).
+.IP "\(bu" 4
+How do I find out which operating system I'm running under?
+.IP "\(bu" 4
+How come \fIexec()\fR doesn't return?
+.IP "\(bu" 4
+How do I do fancy stuff with the keyboard/screen/mouse?
+.IP "\(bu" 4
+How do I print something out in color?
+.IP "\(bu" 4
+How do I read just one key without waiting for a return key?
+.IP "\(bu" 4
+How do I check whether input is ready on the keyboard?
+.IP "\(bu" 4
+How do I clear the screen?
+.IP "\(bu" 4
+How do I get the screen size?
+.IP "\(bu" 4
+How do I ask the user for a password?
+.IP "\(bu" 4
+How do I read and write the serial port?
+.IP "\(bu" 4
+How do I decode encrypted password files?
+.IP "\(bu" 4
+How do I start a process in the background?
+.IP "\(bu" 4
+How do I trap control characters/signals?
+.IP "\(bu" 4
+How do I modify the shadow password file on a Unix system?
+.IP "\(bu" 4
+How do I set the time and date?
+.IP "\(bu" 4
+How can I \fIsleep()\fR or \fIalarm()\fR for under a second?
+.IP "\(bu" 4
+How can I measure time under a second?
+.IP "\(bu" 4
+How can I do an \fIatexit()\fR or \fIsetjmp()\fR/\fIlongjmp()\fR? (Exception handling)
+.IP "\(bu" 4
+Why doesn't my sockets program work under System V (Solaris)?  What does the error message \*(L"Protocol not supported\*(R" mean?
+.IP "\(bu" 4
+How can I call my system's unique C functions from Perl?
+.IP "\(bu" 4
+Where do I get the include files to do \fIioctl()\fR or \fIsyscall()\fR?
+.IP "\(bu" 4
+Why do setuid perl scripts complain about kernel problems?
+.IP "\(bu" 4
+How can I open a pipe both to and from a command?
+.IP "\(bu" 4
+Why can't I get the output of a command with \fIsystem()\fR?
+.IP "\(bu" 4
+How can I capture \s-1STDERR\s0 from an external command?
+.IP "\(bu" 4
+Why doesn't \fIopen()\fR return an error when a pipe open fails?
+.IP "\(bu" 4
+What's wrong with using backticks in a void context?
+.IP "\(bu" 4
+How can I call backticks without shell processing?
+.IP "\(bu" 4
+Why can't my script read from \s-1STDIN\s0 after I gave it \s-1EOF\s0 (^D on Unix, ^Z on \s-1MS\-DOS\s0)?
+.IP "\(bu" 4
+How can I convert my shell script to perl?
+.IP "\(bu" 4
+Can I use perl to run a telnet or ftp session?
+.IP "\(bu" 4
+How can I write expect in Perl?
+.IP "\(bu" 4
+Is there a way to hide perl's command line from programs such as \*(L"ps\*(R"?
+.IP "\(bu" 4
+I {changed directory, modified my environment} in a perl script.  How come the change disappeared when I exited the script?  How do I get my changes to be visible?
+.IP "\(bu" 4
+How do I close a process's filehandle without waiting for it to complete?
+.IP "\(bu" 4
+How do I fork a daemon process?
+.IP "\(bu" 4
+How do I find out if I'm running interactively or not?
+.IP "\(bu" 4
+How do I timeout a slow event?
+.IP "\(bu" 4
+How do I set \s-1CPU\s0 limits?
+.IP "\(bu" 4
+How do I avoid zombies on a Unix system?
+.IP "\(bu" 4
+How do I use an \s-1SQL\s0 database?
+.IP "\(bu" 4
+How do I make a \fIsystem()\fR exit on control\-C?
+.IP "\(bu" 4
+How do I open a file without blocking?
+.IP "\(bu" 4
+How do I install a module from \s-1CPAN\s0?
+.IP "\(bu" 4
+What's the difference between require and use?
+.IP "\(bu" 4
+How do I keep my own module/library directory?
+.IP "\(bu" 4
+How do I add the directory my program lives in to the module/library search path?
+.IP "\(bu" 4
+How do I add a directory to my include path at runtime?
+.IP "\(bu" 4
+What is socket.ph and where do I get it?
+.Sh "perlfaq9: Networking"
+.IX Subsection "perlfaq9: Networking"
+Networking, the internet, and a few on the web.
+.IP "\(bu" 4
+What is the correct form of response from a \s-1CGI\s0 script?
+.IP "\(bu" 4
+My \s-1CGI\s0 script runs from the command line but not the browser.  (500 Server Error)
+.IP "\(bu" 4
+How can I get better error messages from a \s-1CGI\s0 program?
+.IP "\(bu" 4
+How do I remove \s-1HTML\s0 from a string?
+.IP "\(bu" 4
+How do I extract URLs?
+.IP "\(bu" 4
+How do I download a file from the user's machine?  How do I open a file on another machine?
+.IP "\(bu" 4
+How do I make a pop-up menu in \s-1HTML\s0?
+.IP "\(bu" 4
+How do I fetch an \s-1HTML\s0 file?
+.IP "\(bu" 4
+How do I automate an \s-1HTML\s0 form submission?
+.IP "\(bu" 4
+How do I decode or create those %\-encodings on the web?
+.IP "\(bu" 4
+How do I redirect to another page?
+.IP "\(bu" 4
+How do I put a password on my web pages?
+.IP "\(bu" 4
+How do I edit my .htpasswd and .htgroup files with Perl?
+.IP "\(bu" 4
+How do I make sure users can't enter values into a form that cause my \s-1CGI\s0 script to do bad things?
+.IP "\(bu" 4
+How do I parse a mail header?
+.IP "\(bu" 4
+How do I decode a \s-1CGI\s0 form?
+.IP "\(bu" 4
+How do I check a valid mail address?
+.IP "\(bu" 4
+How do I decode a \s-1MIME/BASE64\s0 string?
+.IP "\(bu" 4
+How do I return the user's mail address?
+.IP "\(bu" 4
+How do I send mail?
+.IP "\(bu" 4
+How do I use \s-1MIME\s0 to make an attachment to a mail message?
+.IP "\(bu" 4
+How do I read mail?
+.IP "\(bu" 4
+How do I find out my hostname/domainname/IP address?
+.IP "\(bu" 4
+How do I fetch a news article or the active newsgroups?
+.IP "\(bu" 4
+How do I fetch/put an \s-1FTP\s0 file?
+.IP "\(bu" 4
+How can I do \s-1RPC\s0 in Perl?
diff --git a/raw/man1/perlfaq1.1 b/raw/man1/perlfaq1.1
new file mode 100644
index 0000000..073a150
--- /dev/null
+++ b/raw/man1/perlfaq1.1
@@ -0,0 +1,461 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ1 1"
+.TH PERLFAQ1 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq1 \- General Questions About Perl ($Revision: 1.1 $, $Date: 2004/06/16 03:02:15 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This section of the \s-1FAQ\s0 answers very general, high-level questions
+about Perl.
+.Sh "What is Perl?"
+.IX Subsection "What is Perl?"
+Perl is a high-level programming language with an eclectic heritage
+written by Larry Wall and a cast of thousands.  It derives from the
+ubiquitous C programming language and to a lesser extent from sed,
+awk, the Unix shell, and at least a dozen other tools and languages.
+Perl's process, file, and text manipulation facilities make it
+particularly well-suited for tasks involving quick prototyping, system
+utilities, software tools, system management tasks, database access,
+graphical programming, networking, and world wide web programming.
+These strengths make it especially popular with system administrators
+and \s-1CGI\s0 script authors, but mathematicians, geneticists, journalists,
+and even managers also use Perl.  Maybe you should, too.
+.Sh "Who supports Perl?  Who develops it?  Why is it free?"
+.IX Subsection "Who supports Perl?  Who develops it?  Why is it free?"
+The original culture of the pre-populist Internet and the deeply-held
+beliefs of Perl's author, Larry Wall, gave rise to the free and open
+distribution policy of perl.  Perl is supported by its users.  The
+core, the standard Perl library, the optional modules, and the
+documentation you're reading now were all written by volunteers.  See
+the personal note at the end of the \s-1README\s0 file in the perl source
+distribution for more details.  See perlhist (new as of 5.005)
+for Perl's milestone releases.
+.PP
+In particular, the core development team (known as the Perl Porters)
+are a rag-tag band of highly altruistic individuals committed to
+producing better software for free than you could hope to purchase for
+money.  You may snoop on pending developments via the archives at
+http://www.xray.mpe.mpg.de/mailing\-lists/perl5\-porters/
+and http://archive.develooper.com/perl5\-porters@perl.org/
+or the news gateway nntp://nntp.perl.org/perl.perl5.porters or
+its web interface at http://nntp.perl.org/group/perl.perl5.porters ,
+or read the faq at http://simon\-cozens.org/writings/p5p\-faq ,
+or you can subscribe to the mailing list by sending
+perl5\-porters\-request at perl.org a subscription request
+(an empty message with no subject is fine).
+.PP
+While the \s-1GNU\s0 project includes Perl in its distributions, there's no
+such thing as \*(L"\s-1GNU\s0 Perl\*(R".  Perl is not produced nor maintained by the
+Free Software Foundation.  Perl's licensing terms are also more open
+than \s-1GNU\s0 software's tend to be.
+.PP
+You can get commercial support of Perl if you wish, although for most
+users the informal support will more than suffice.  See the answer to
+\&\*(L"Where can I buy a commercial version of perl?\*(R" for more information.
+.Sh "Which version of Perl should I use?"
+.IX Subsection "Which version of Perl should I use?"
+You should definitely use version 5.  Version 4 is old, limited, and
+no longer maintained; its last patch (4.036) was in 1992, long ago and
+far away.  Sure, it's stable, but so is anything that's dead; in fact,
+perl4 had been called a dead, flea-bitten camel carcass.  The most
+recent production release is 5.8.2 (although 5.005_03 and 5.6.2 are
+still supported). The most cutting-edge development release is 5.9.
+Further references to the Perl language in this document refer to the
+production release unless otherwise specified.  There may be one or
+more official bug fixes by the time you read this, and also perhaps
+some experimental versions on the way to the next release.
+All releases prior to 5.004 were subject to buffer overruns, a grave
+security issue.
+.Sh "What are perl4 and perl5?"
+.IX Subsection "What are perl4 and perl5?"
+Perl4 and perl5 are informal names for different versions of the Perl
+programming language.  It's easier to say \*(L"perl5\*(R" than it is to say
+\&\*(L"the 5(.004) release of Perl\*(R", but some people have interpreted this
+to mean there's a language called \*(L"perl5\*(R", which isn't the case.
+Perl5 is merely the popular name for the fifth major release (October 1994),
+while perl4 was the fourth major release (March 1991).  There was also a
+perl1 (in January 1988), a perl2 (June 1988), and a perl3 (October 1989).
+.PP
+The 5.0 release is, essentially, a ground-up rewrite of the original
+perl source code from releases 1 through 4.  It has been modularized,
+object\-oriented, tweaked, trimmed, and optimized until it almost doesn't
+look like the old code.  However, the interface is mostly the same, and
+compatibility with previous releases is very high.
+See \*(L"Perl4 to Perl5 Traps\*(R" in perltrap.
+.PP
+To avoid the \*(L"what language is perl5?\*(R" confusion, some people prefer to
+simply use \*(L"perl\*(R" to refer to the latest version of perl and avoid using
+\&\*(L"perl5\*(R" altogether.  It's not really that big a deal, though.
+.PP
+See perlhist for a history of Perl revisions.
+.Sh "What is Ponie?"
+.IX Subsection "What is Ponie?"
+At The O'Reilly Open Source Software Convention in 2003, Artur
+Bergman, Fotango, and The Perl Foundation announced a project to
+run perl5 on the Parrot virtual machine named Ponie. Ponie stands for
+Perl On New Internal Engine.  The Perl 5.10 language implementation
+will be used for Ponie, and there will be no language level
+differences between perl5 and ponie.  Ponie is not a complete rewrite
+of perl5.
+.PP
+For more details, see http://www.poniecode.org/
+.Sh "What is perl6?"
+.IX Subsection "What is perl6?"
+At The Second O'Reilly Open Source Software Convention, Larry Wall
+announced Perl6 development would begin in earnest. Perl6 was an oft
+used term for Chip Salzenberg's project to rewrite Perl in \*(C+ named
+Topaz. However, Topaz provided valuable insights to the next version
+of Perl and its implementation, but was ultimately abandoned.
+.PP
+If you want to learn more about Perl6, or have a desire to help in
+the crusade to make Perl a better place then peruse the Perl6 developers
+page at http://dev.perl.org/perl6/ and get involved.
+.PP
+Perl6 is not scheduled for release yet, and Perl5 will still be supported
+for quite awhile after its release. Do not wait for Perl6 to do whatever
+you need to do.
+.PP
+\&\*(L"We're really serious about reinventing everything that needs reinventing.\*(R"
+\&\-\-Larry Wall
+.Sh "How stable is Perl?"
+.IX Subsection "How stable is Perl?"
+Production releases, which incorporate bug fixes and new functionality,
+are widely tested before release.  Since the 5.000 release, we have
+averaged only about one production release per year.
+.PP
+Larry and the Perl development team occasionally make changes to the
+internal core of the language, but all possible efforts are made toward
+backward compatibility.  While not quite all perl4 scripts run flawlessly
+under perl5, an update to perl should nearly never invalidate a program
+written for an earlier version of perl (barring accidental bug fixes
+and the rare new keyword).
+.Sh "Is Perl difficult to learn?"
+.IX Subsection "Is Perl difficult to learn?"
+No, Perl is easy to start learning\*(--and easy to keep learning.  It looks
+like most programming languages you're likely to have experience
+with, so if you've ever written a C program, an awk script, a shell
+script, or even a \s-1BASIC\s0 program, you're already partway there.
+.PP
+Most tasks only require a small subset of the Perl language.  One of
+the guiding mottos for Perl development is \*(L"there's more than one way
+to do it\*(R" (\s-1TMTOWTDI\s0, sometimes pronounced \*(L"tim toady\*(R").  Perl's
+learning curve is therefore shallow (easy to learn) and long (there's
+a whole lot you can do if you really want).
+.PP
+Finally, because Perl is frequently (but not always, and certainly not by
+definition) an interpreted language, you can write your programs and test
+them without an intermediate compilation step, allowing you to experiment
+and test/debug quickly and easily.  This ease of experimentation flattens
+the learning curve even more.
+.PP
+Things that make Perl easier to learn: Unix experience, almost any kind
+of programming experience, an understanding of regular expressions, and
+the ability to understand other people's code.  If there's something you
+need to do, then it's probably already been done, and a working example is
+usually available for free.  Don't forget the new perl modules, either.
+They're discussed in Part 3 of this \s-1FAQ\s0, along with \s-1CPAN\s0, which is
+discussed in Part 2.
+.Sh "How does Perl compare with other languages like Java, Python, \s-1REXX\s0, Scheme, or Tcl?"
+.IX Subsection "How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?"
+Favorably in some areas, unfavorably in others.  Precisely which areas
+are good and bad is often a personal choice, so asking this question
+on Usenet runs a strong risk of starting an unproductive Holy War.
+.PP
+Probably the best thing to do is try to write equivalent code to do a
+set of tasks.  These languages have their own newsgroups in which you
+can learn about (but hopefully not argue about) them.
+.PP
+Some comparison documents can be found at http://language.perl.com/versus/
+if you really can't stop yourself.
+.Sh "Can I do [task] in Perl?"
+.IX Subsection "Can I do [task] in Perl?"
+Perl is flexible and extensible enough for you to use on virtually any
+task, from one-line file-processing tasks to large, elaborate systems.
+For many people, Perl serves as a great replacement for shell scripting.
+For others, it serves as a convenient, high-level replacement for most of
+what they'd program in low-level languages like C or \*(C+.  It's ultimately
+up to you (and possibly your management) which tasks you'll use Perl
+for and which you won't.
+.PP
+If you have a library that provides an \s-1API\s0, you can make any component
+of it available as just another Perl function or variable using a Perl
+extension written in C or \*(C+ and dynamically linked into your main
+perl interpreter.  You can also go the other direction, and write your
+main program in C or \*(C+, and then link in some Perl code on the fly,
+to create a powerful application.  See perlembed.
+.PP
+That said, there will always be small, focused, special-purpose
+languages dedicated to a specific problem domain that are simply more
+convenient for certain kinds of problems.  Perl tries to be all things
+to all people, but nothing special to anyone.  Examples of specialized
+languages that come to mind include prolog and matlab.
+.Sh "When shouldn't I program in Perl?"
+.IX Subsection "When shouldn't I program in Perl?"
+When your manager forbids it\*(--but do consider replacing them :\-).
+.PP
+Actually, one good reason is when you already have an existing
+application written in another language that's all done (and done
+well), or you have an application language specifically designed for a
+certain task (e.g. prolog, make).
+.PP
+For various reasons, Perl is probably not well-suited for real-time
+embedded systems, low-level operating systems development work like
+device drivers or context-switching code, complex multi-threaded
+shared-memory applications, or extremely large applications.  You'll
+notice that perl is not itself written in Perl.
+.PP
+The new, native-code compiler for Perl may eventually reduce the
+limitations given in the previous statement to some degree, but understand
+that Perl remains fundamentally a dynamically typed language, not
+a statically typed one.  You certainly won't be chastised if you don't
+trust nuclear-plant or brain-surgery monitoring code to it.  And Larry
+will sleep easier, too\*(--Wall Street programs not withstanding. :\-)
+.ie n .Sh "What's the difference between ""perl"" and ""Perl""?"
+.el .Sh "What's the difference between ``perl'' and ``Perl''?"
+.IX Subsection "What's the difference between perl and Perl?"
+One bit.  Oh, you weren't talking \s-1ASCII\s0? :\-) Larry now uses \*(L"Perl\*(R" to
+signify the language proper and \*(L"perl\*(R" the implementation of it,
+i.e. the current interpreter.  Hence Tom's quip that \*(L"Nothing but perl
+can parse Perl.\*(R"  You may or may not choose to follow this usage.  For
+example, parallelism means \*(L"awk and perl\*(R" and \*(L"Python and Perl\*(R" look
+\&\s-1OK\s0, while \*(L"awk and Perl\*(R" and \*(L"Python and perl\*(R" do not.  But never
+write \*(L"\s-1PERL\s0\*(R", because perl is not an acronym, apocryphal
+folklore and post-facto expansions notwithstanding.
+.Sh "Is it a Perl program or a Perl script?"
+.IX Subsection "Is it a Perl program or a Perl script?"
+Larry doesn't really care.  He says (half in jest) that \*(L"a script is
+what you give the actors.  A program is what you give the audience.\*(R"
+.PP
+Originally, a script was a canned sequence of normally interactive
+commands\*(--that is, a chat script.  Something like a \s-1UUCP\s0 or \s-1PPP\s0 chat
+script or an expect script fits the bill nicely, as do configuration
+scripts run by a program at its start up, such \fI.cshrc\fR or \fI.ircrc\fR,
+for example.  Chat scripts were just drivers for existing programs,
+not stand-alone programs in their own right.
+.PP
+A computer scientist will correctly explain that all programs are
+interpreted and that the only question is at what level.  But if you
+ask this question of someone who isn't a computer scientist, they might
+tell you that a \fIprogram\fR has been compiled to physical machine code
+once and can then be run multiple times, whereas a \fIscript\fR must be
+translated by a program each time it's used.
+.PP
+Perl programs are (usually) neither strictly compiled nor strictly
+interpreted.  They can be compiled to a byte-code form (something of a
+Perl virtual machine) or to completely different languages, like C or
+assembly language.  You can't tell just by looking at it whether the
+source is destined for a pure interpreter, a parse-tree interpreter,
+a byte-code interpreter, or a native-code compiler, so it's hard to give
+a definitive answer here.
+.PP
+Now that \*(L"script\*(R" and \*(L"scripting\*(R" are terms that have been seized by
+unscrupulous or unknowing marketeers for their own nefarious purposes,
+they have begun to take on strange and often pejorative meanings,
+like \*(L"non serious\*(R" or \*(L"not real programming\*(R".  Consequently, some Perl
+programmers prefer to avoid them altogether.
+.Sh "What is a \s-1JAPH\s0?"
+.IX Subsection "What is a JAPH?"
+These are the \*(L"just another perl hacker\*(R" signatures that some people
+sign their postings with.  Randal Schwartz made these famous.  About
+100 of the earlier ones are available from
+http://www.cpan.org/misc/japh .
+.Sh "Where can I get a list of Larry Wall witticisms?"
+.IX Subsection "Where can I get a list of Larry Wall witticisms?"
+Over a hundred quips by Larry, from postings of his or source code,
+can be found at http://www.cpan.org/misc/lwall\-quotes.txt.gz .
+.Sh "How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?"
+.IX Subsection "How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?"
+If your manager or employees are wary of unsupported software, or
+software which doesn't officially ship with your operating system, you
+might try to appeal to their self\-interest.  If programmers can be
+more productive using and utilizing Perl constructs, functionality,
+simplicity, and power, then the typical manager/supervisor/employee
+may be persuaded.  Regarding using Perl in general, it's also
+sometimes helpful to point out that delivery times may be reduced
+using Perl compared to other languages.
+.PP
+If you have a project which has a bottleneck, especially in terms of
+translation or testing, Perl almost certainly will provide a viable,
+quick solution.  In conjunction with any persuasion effort, you
+should not fail to point out that Perl is used, quite extensively, and
+with extremely reliable and valuable results, at many large computer
+software and hardware companies throughout the world.  In fact,
+many Unix vendors now ship Perl by default.  Support is usually
+just a news-posting away, if you can't find the answer in the
+\&\fIcomprehensive\fR documentation, including this \s-1FAQ\s0.
+.PP
+See http://www.perl.org/advocacy/ for more information.
+.PP
+If you face reluctance to upgrading from an older version of perl,
+then point out that version 4 is utterly unmaintained and unsupported
+by the Perl Development Team.  Another big sell for Perl5 is the large
+number of modules and extensions which greatly reduce development time
+for any given task.  Also mention that the difference between version
+4 and version 5 of Perl is like the difference between awk and \*(C+.
+(Well, \s-1OK\s0, maybe it's not quite that distinct, but you get the idea.)
+If you want support and a reasonable guarantee that what you're
+developing will continue to work in the future, then you have to run
+the supported version.  As of December 2003 that means running either
+5.8.2 (released in November 2003), or one of the older releases like
+5.6.2 (also released in November 2003; a maintenance release to let perl
+5.6 compile on newer systems as 5.6.1 was released in April 2001) or
+5.005_03 (released in March 1999),
+although 5.004_05 isn't that bad if you \fBabsolutely\fR need such an old
+version (released in April 1999) for stability  reasons.
+Anything older than 5.004_05 shouldn't be used.
+.PP
+Of particular note is the massive bug hunt for buffer overflow
+problems that went into the 5.004 release.  All releases prior to
+that, including perl4, are considered insecure and should be upgraded
+as soon as possible.
+.PP
+In August 2000 in all Linux distributions a new security problem was
+found in the optional 'suidperl' (not built or installed by default)
+in all the Perl branches 5.6, 5.005, and 5.004, see
+http://www.cpan.org/src/5.0/sperl\-2000\-08\-05/
+Perl maintenance releases 5.6.1 and 5.8.0 have this security hole closed.
+Most, if not all, Linux distribution have patches for this
+vulnerability available, see http://www.linuxsecurity.com/advisories/ ,
+but the most recommendable way is to upgrade to at least Perl 5.6.1.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen and Nathan
+Torkington.  All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples here are in the public
+domain.  You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit.  A simple comment in the code giving credit to the \s-1FAQ\s0 would
+be courteous but is not required.
diff --git a/raw/man1/perlfaq2.1 b/raw/man1/perlfaq2.1
new file mode 100644
index 0000000..6a23520
--- /dev/null
+++ b/raw/man1/perlfaq2.1
@@ -0,0 +1,732 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ2 1"
+.TH PERLFAQ2 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq2 \- Obtaining and Learning about Perl ($Revision: 1.1 $, $Date: 2004/06/16 03:02:15 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This section of the \s-1FAQ\s0 answers questions about where to find
+source and documentation for Perl, support, and
+related matters.
+.Sh "What machines support Perl?  Where do I get it?"
+.IX Subsection "What machines support Perl?  Where do I get it?"
+The standard release of Perl (the one maintained by the perl
+development team) is distributed only in source code form.  You
+can find this at http://www.cpan.org/src/latest.tar.gz , which
+is in a standard Internet format (a gzipped archive in \s-1POSIX\s0 tar format).
+.PP
+Perl builds and runs on a bewildering number of platforms.  Virtually
+all known and current Unix derivatives are supported (Perl's native
+platform), as are other systems like \s-1VMS\s0, \s-1DOS\s0, \s-1OS/2\s0, Windows,
+\&\s-1QNX\s0, BeOS, \s-1OS\s0 X, MPE/iX and the Amiga.
+.PP
+Binary distributions for some proprietary platforms, including
+Apple systems, can be found http://www.cpan.org/ports/ directory.
+Because these are not part of the standard distribution, they may
+and in fact do differ from the base Perl port in a variety of ways.
+You'll have to check their respective release notes to see just
+what the differences are.  These differences can be either positive
+(e.g. extensions for the features of the particular platform that
+are not supported in the source release of perl) or negative (e.g.
+might be based upon a less current source release of perl).
+.Sh "How can I get a binary version of Perl?"
+.IX Subsection "How can I get a binary version of Perl?"
+If you don't have a C compiler because your vendor for whatever
+reasons did not include one with your system, the best thing to do is
+grab a binary version of gcc from the net and use that to compile perl
+with.  \s-1CPAN\s0 only has binaries for systems that are terribly hard to
+get free compilers for, not for Unix systems.
+.PP
+Some URLs that might help you are:
+.PP
+.Vb 2
+\&    http://www.cpan.org/ports/
+\&    http://www.perl.com/pub/language/info/software.html
+.Ve
+.PP
+Someone looking for a Perl for Win16 might look to Laszlo Molnar's djgpp
+port in http://www.cpan.org/ports/#msdos , which comes with clear
+installation instructions.  A simple installation guide for MS-DOS using
+Ilya Zakharevich's \s-1OS/2\s0 port is available at
+http://www.cs.ruu.nl/%7Epiet/perl5dos.html
+and similarly for Windows 3.1 at http://www.cs.ruu.nl/%7Epiet/perlwin3.html .
+.Sh "I don't have a C compiler on my system.  How can I compile perl?"
+.IX Subsection "I don't have a C compiler on my system.  How can I compile perl?"
+Since you don't have a C compiler, you're doomed and your vendor
+should be sacrificed to the Sun gods.  But that doesn't help you.
+.PP
+What you need to do is get a binary version of gcc for your system
+first.  Consult the Usenet FAQs for your operating system for
+information on where to get such a binary version.
+.Sh "I copied the Perl binary from one machine to another, but scripts don't work."
+.IX Subsection "I copied the Perl binary from one machine to another, but scripts don't work."
+That's probably because you forgot libraries, or library paths differ.
+You really should build the whole distribution on the machine it will
+eventually live on, and then type \f(CW\*(C`make install\*(C'\fR.  Most other
+approaches are doomed to failure.
+.PP
+One simple way to check that things are in the right place is to print out
+the hard-coded \f(CW at INC\fR that perl looks through for libraries:
+.PP
+.Vb 1
+\&    % perl -le 'print for @INC'
+.Ve
+.PP
+If this command lists any paths that don't exist on your system, then you
+may need to move the appropriate libraries to these locations, or create
+symbolic links, aliases, or shortcuts appropriately.  \f(CW at INC\fR is also printed as
+part of the output of
+.PP
+.Vb 1
+\&    % perl -V
+.Ve
+.PP
+You might also want to check out
+\&\*(L"How do I keep my own module/library directory?\*(R" in perlfaq8.
+.Sh "I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed.  How do I make it work?"
+.IX Subsection "I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed.  How do I make it work?"
+Read the \fI\s-1INSTALL\s0\fR file, which is part of the source distribution.
+It describes in detail how to cope with most idiosyncrasies that the
+Configure script can't work around for any given system or
+architecture.
+.Sh "What modules and extensions are available for Perl?  What is \s-1CPAN\s0?  What does CPAN/src/... mean?"
+.IX Subsection "What modules and extensions are available for Perl?  What is CPAN?  What does CPAN/src/... mean?"
+\&\s-1CPAN\s0 stands for Comprehensive Perl Archive Network, a ~1.2Gb archive
+replicated on nearly 200 machines all over the world.  \s-1CPAN\s0 contains
+source code, non-native ports, documentation, scripts, and many
+third-party modules and extensions, designed for everything from
+commercial database interfaces to keyboard/screen control to web
+walking and \s-1CGI\s0 scripts.  The master web site for \s-1CPAN\s0 is
+http://www.cpan.org/ and there is the \s-1CPAN\s0 Multiplexer at
+http://www.cpan.org/CPAN.html which will choose a mirror near you
+via \s-1DNS\s0.  See http://www.perl.com/CPAN (without a slash at the
+end) for how this process works. Also, http://mirror.cpan.org/
+has a nice interface to the http://www.cpan.org/MIRRORED.BY
+mirror directory.
+.PP
+See the \s-1CPAN\s0 \s-1FAQ\s0 at http://www.cpan.org/misc/cpan\-faq.html for
+answers to the most frequently asked questions about \s-1CPAN\s0
+including how to become a mirror.
+.PP
+CPAN/path/... is a naming convention for files available on \s-1CPAN\s0
+sites.  \s-1CPAN\s0 indicates the base directory of a \s-1CPAN\s0 mirror, and the
+rest of the path is the path from that directory to the file.  For
+instance, if you're using ftp://ftp.funet.fi/pub/languages/perl/CPAN
+as your \s-1CPAN\s0 site, the file CPAN/misc/japh is downloadable as
+ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh .
+.PP
+Considering that there are close to two thousand existing modules in
+the archive, one probably exists to do nearly anything you can think of.
+Current categories under CPAN/modules/by\-category/ include Perl core
+modules; development support; operating system interfaces; networking,
+devices, and interprocess communication; data type utilities; database
+interfaces; user interfaces; interfaces to other languages; filenames,
+file systems, and file locking; internationalization and locale; world
+wide web support; server and daemon utilities; archiving and
+compression; image manipulation; mail and news; control flow
+utilities; filehandle and I/O; Microsoft Windows modules; and
+miscellaneous modules.
+.PP
+See http://www.cpan.org/modules/00modlist.long.html or
+http://search.cpan.org/ for a more complete list of modules by category.
+.PP
+\&\s-1CPAN\s0 is not affiliated with O'Reilly and Associates.
+.Sh "Is there an \s-1ISO\s0 or \s-1ANSI\s0 certified version of Perl?"
+.IX Subsection "Is there an ISO or ANSI certified version of Perl?"
+Certainly not.  Larry expects that he'll be certified before Perl is.
+.Sh "Where can I get information on Perl?"
+.IX Subsection "Where can I get information on Perl?"
+The complete Perl documentation is available with the Perl distribution.
+If you have Perl installed locally, you probably have the documentation
+installed as well: type \f(CW\*(C`man perl\*(C'\fR if you're on a system resembling Unix.
+This will lead you to other important man pages, including how to set your
+\&\f(CW$MANPATH\fR.  If you're not on a Unix system, access to the documentation
+will be different; for example, documentation might only be in \s-1HTML\s0 format.  All
+proper Perl installations have fully-accessible documentation.
+.PP
+You might also try \f(CW\*(C`perldoc perl\*(C'\fR in case your system doesn't
+have a proper man command, or it's been misinstalled.  If that doesn't
+work, try looking in /usr/local/lib/perl5/pod for documentation.
+.PP
+If all else fails, consult http://perldoc.cpan.org/ or
+http://www.perldoc.com/ both offer the complete documentation
+in html format.
+.PP
+Many good books have been written about Perl\*(--see the section below
+for more details.
+.PP
+Tutorial documents are included in current or upcoming Perl releases
+include perltoot for objects or perlboot for a beginner's
+approach to objects, perlopentut for file opening semantics,
+perlreftut for managing references, perlretut for regular
+expressions, perlthrtut for threads, perldebtut for debugging,
+and perlxstut for linking C and Perl together.  There may be more
+by the time you read this.  The following URLs might also be of
+assistance:
+.PP
+.Vb 3
+\&    http://perldoc.cpan.org/
+\&    http://www.perldoc.com/
+\&    http://bookmarks.cpan.org/search.cgi?cat=Training%2FTutorials
+.Ve
+.Sh "What are the Perl newsgroups on Usenet?  Where do I post questions?"
+.IX Subsection "What are the Perl newsgroups on Usenet?  Where do I post questions?"
+Several groups devoted to the Perl language are on Usenet:
+.PP
+.Vb 5
+\&    comp.lang.perl.announce             Moderated announcement group
+\&    comp.lang.perl.misc                 High traffic general Perl discussion
+\&    comp.lang.perl.moderated        Moderated discussion group
+\&    comp.lang.perl.modules              Use and development of Perl modules
+\&    comp.lang.perl.tk                   Using Tk (and X) from Perl
+.Ve
+.PP
+.Vb 1
+\&    comp.infosystems.www.authoring.cgi  Writing CGI scripts for the Web.
+.Ve
+.PP
+Some years ago, comp.lang.perl was divided into those groups, and
+comp.lang.perl itself officially removed.  While that group may still
+be found on some news servers, it is unwise to use it, because
+postings there will not appear on news servers which honour the
+official list of group names.  Use comp.lang.perl.misc for topics
+which do not have a more-appropriate specific group.
+.PP
+There is also a Usenet gateway to Perl mailing lists sponsored by
+perl.org at nntp://nntp.perl.org , a web interface to the same lists
+at http://nntp.perl.org/group/ and these lists are also available
+under the \f(CW\*(C`perl.*\*(C'\fR hierarchy at http://groups.google.com . Other
+groups are listed at http://lists.perl.org/ ( also known as
+http://lists.cpan.org/ ).
+.PP
+A nice place to ask questions is the PerlMonks site, 
+http://www.perlmonks.org/ , or the Perl Beginners mailing list
+http://lists.perl.org/showlist.cgi?name=beginners .
+.PP
+Note that none of the above are supposed to write your code for you:
+asking questions about particular problems or general advice is fine,
+but asking someone to write your code for free is not very cool.
+.Sh "Where should I post source code?"
+.IX Subsection "Where should I post source code?"
+You should post source code to whichever group is most appropriate, but
+feel free to cross-post to comp.lang.perl.misc.  If you want to cross-post
+to alt.sources, please make sure it follows their posting standards,
+including setting the Followup-To header line to \s-1NOT\s0 include alt.sources;
+see their \s-1FAQ\s0 ( http://www.faqs.org/faqs/alt\-sources\-intro/ ) for details.
+.PP
+If you're just looking for software, first use Google
+( http://www.google.com ), Google's usenet search interface
+( http://groups.google.com ),  and \s-1CPAN\s0 Search ( http://search.cpan.org ).
+This is faster and more productive than just posting a request.
+.Sh "Perl Books"
+.IX Subsection "Perl Books"
+A number of books on Perl and/or \s-1CGI\s0 programming are available.  A few of
+these are good, some are \s-1OK\s0, but many aren't worth your money.  Tom
+Christiansen maintains a list of these books, some with extensive
+reviews, at http://www.perl.com/perl/critiques/index.html .
+.PP
+The incontestably definitive reference book on Perl, written by
+the creator of Perl, is now (July 2000) in its third edition:
+.PP
+.Vb 5
+\&    Programming Perl (the "Camel Book"):
+\&        by Larry Wall, Tom Christiansen, and Jon Orwant
+\&        0-596-00027-8  [3rd edition July 2000]
+\&        http://www.oreilly.com/catalog/pperl3/
+\&    (English, translations to several languages are also available)
+.Ve
+.PP
+The companion volume to the Camel containing thousands
+of real-world examples, mini\-tutorials, and complete programs is:
+.PP
+.Vb 5
+\&    The Perl Cookbook (the "Ram Book"):
+\&        by Tom Christiansen and Nathan Torkington,
+\&            with Foreword by Larry Wall
+\&        ISBN 1-56592-243-3 [1st Edition August 1998]
+\&        http://perl.oreilly.com/catalog/cookbook/
+.Ve
+.PP
+If you're already a seasoned programmer, then the Camel Book might
+suffice for you to learn Perl from.  If you're not, check out the
+Llama book:
+.PP
+.Vb 4
+\&    Learning Perl (the "Llama Book")
+\&        by Randal L. Schwartz and Tom Phoenix
+\&        ISBN 0-596-00132-0 [3rd edition July 2001]
+\&        http://www.oreilly.com/catalog/lperl3/
+.Ve
+.PP
+And for more advanced information on writing larger programs,
+presented in the same style as the Llama book, continue your education
+with the Alpaca book:
+.PP
+.Vb 4
+\&    Learning Perl Objects, References, and Modules (the "Alpaca Book")
+\&       by Randal L. Schwartz, with Tom Phoenix (foreword by Damian Conway)
+\&       ISBN 0-596-00478-8 [1st edition June 2003]
+\&       http://www.oreilly.com/catalog/lrnperlorm/
+.Ve
+.PP
+If you're not an accidental programmer, but a more serious and
+possibly even degreed computer scientist who doesn't need as much
+hand-holding as we try to provide in the Llama, please check out the
+delightful book
+.PP
+.Vb 5
+\&    Perl: The Programmer's Companion
+\&        by Nigel Chapman
+\&        ISBN 0-471-97563-X [1997, 3rd printing Spring 1998]
+\&        http://www.wiley.com/compbooks/catalog/97563-X.htm
+\&        http://www.wiley.com/compbooks/chapman/perl/perltpc.html (errata etc)
+.Ve
+.PP
+If you are more at home in Windows the following is available
+(though unfortunately rather dated).
+.PP
+.Vb 5
+\&    Learning Perl on Win32 Systems (the "Gecko Book")
+\&        by Randal L. Schwartz, Erik Olson, and Tom Christiansen,
+\&            with foreword by Larry Wall
+\&        ISBN 1-56592-324-3 [1st edition August 1997]
+\&        http://www.oreilly.com/catalog/lperlwin/
+.Ve
+.PP
+Addison-Wesley ( http://www.awlonline.com/ ) and Manning
+( http://www.manning.com/ ) are also publishers of some fine Perl books
+such as \fIObject Oriented Programming with Perl\fR by Damian Conway and
+\&\fINetwork Programming with Perl\fR by Lincoln Stein.
+.PP
+An excellent technical book discounter is Bookpool at
+http://www.bookpool.com/ where a 30% discount or more is not unusual.
+.PP
+What follows is a list of the books that the \s-1FAQ\s0 authors found personally
+useful.  Your mileage may (but, we hope, probably won't) vary.
+.PP
+Recommended books on (or mostly on) Perl follow.
+.IP "References" 4
+.IX Item "References"
+.Vb 4
+\&    Programming Perl
+\&        by Larry Wall, Tom Christiansen, and Jon Orwant
+\&        ISBN 0-596-00027-8 [3rd edition July 2000]
+\&        http://www.oreilly.com/catalog/pperl3/
+.Ve
+.Sp
+.Vb 4
+\&    Perl 5 Pocket Reference
+\&    by Johan Vromans
+\&        ISBN 0-596-00032-4 [3rd edition May 2000]
+\&        http://www.oreilly.com/catalog/perlpr3/
+.Ve
+.Sp
+.Vb 4
+\&    Perl in a Nutshell
+\&    by Ellen Siever, Stephan Spainhour, and Nathan Patwardhan
+\&        ISBN 1-56592-286-7 [1st edition December 1998]
+\&        http://www.oreilly.com/catalog/perlnut/
+.Ve
+.IP "Tutorials" 4
+.IX Item "Tutorials"
+.Vb 4
+\&    Elements of Programming with Perl
+\&        by Andrew L. Johnson
+\&        ISBN 1-884777-80-5 [1st edition October 1999]
+\&        http://www.manning.com/Johnson/
+.Ve
+.Sp
+.Vb 4
+\&    Learning Perl
+\&        by Randal L. Schwartz and Tom Phoenix
+\&        ISBN 0-596-00132-0 [3rd edition July 2001]
+\&        http://www.oreilly.com/catalog/lperl3/
+.Ve
+.Sp
+.Vb 4
+\&    Learning Perl Objects, References, and Modules
+\&       by Randal L. Schwartz, with Tom Phoenix (foreword by Damian Conway)
+\&       ISBN 0-596-00478-8 [1st edition June 2003]
+\&       http://www.oreilly.com/catalog/lrnperlorm/
+.Ve
+.Sp
+.Vb 5
+\&    Learning Perl on Win32 Systems
+\&        by Randal L. Schwartz, Erik Olson, and Tom Christiansen,
+\&            with foreword by Larry Wall
+\&        ISBN 1-56592-324-3 [1st edition August 1997]
+\&        http://www.oreilly.com/catalog/lperlwin/
+.Ve
+.Sp
+.Vb 5
+\&    Perl: The Programmer's Companion
+\&        by Nigel Chapman
+\&        ISBN 0-471-97563-X [1997, 3rd printing Spring 1998]
+\&    http://www.wiley.com/compbooks/catalog/97563-X.htm
+\&    http://www.wiley.com/compbooks/chapman/perl/perltpc.html (errata etc)
+.Ve
+.Sp
+.Vb 4
+\&    Cross-Platform Perl
+\&        by Eric Foster-Johnson
+\&        ISBN 1-55851-483-X [2nd edition September 2000]
+\&        http://www.pconline.com/~erc/perlbook.htm
+.Ve
+.Sp
+.Vb 5
+\&    MacPerl: Power and Ease
+\&        by Vicki Brown and Chris Nandor,
+\&            with foreword by Matthias Neeracher
+\&        ISBN 1-881957-32-2 [1st edition May 1998]
+\&        http://www.macperl.com/ptf_book/
+.Ve
+.IP "Task-Oriented" 4
+.IX Item "Task-Oriented"
+.Vb 5
+\&    The Perl Cookbook
+\&        by Tom Christiansen and Nathan Torkington
+\&            with foreword by Larry Wall
+\&        ISBN 1-56592-243-3 [1st edition August 1998]
+\&        http://www.oreilly.com/catalog/cookbook/
+.Ve
+.Sp
+.Vb 4
+\&    Effective Perl Programming
+\&        by Joseph Hall
+\&        ISBN 0-201-41975-0 [1st edition 1998]
+\&        http://www.awl.com/
+.Ve
+.IP "Special Topics" 4
+.IX Item "Special Topics"
+.Vb 4
+\&    Mastering Regular Expressions
+\&        by Jeffrey E. F. Friedl
+\&        ISBN 0-596-00289-0 [2nd edition July 2002]
+\&        http://www.oreilly.com/catalog/regex2/
+.Ve
+.Sp
+.Vb 4
+\&    Network Programming with Perl
+\&        by Lincoln Stein
+\&        ISBN 0-201-61571-1 [1st edition 2001]
+\&        http://www.awlonline.com/
+.Ve
+.Sp
+.Vb 5
+\&    Object Oriented Perl
+\&        Damian Conway
+\&            with foreword by Randal L. Schwartz
+\&        ISBN 1-884777-79-1 [1st edition August 1999]
+\&        http://www.manning.com/Conway/
+.Ve
+.Sp
+.Vb 4
+\&    Data Munging with Perl
+\&        Dave Cross
+\&        ISBN 1-930110-00-6 [1st edition 2001]
+\&        http://www.manning.com/cross
+.Ve
+.Sp
+.Vb 4
+\&    Mastering Perl/Tk
+\&        by Steve Lidie and Nancy Walsh
+\&        ISBN 1-56592-716-8 [1st edition January 2002]
+\&        http://www.oreilly.com/catalog/mastperltk/
+.Ve
+.Sp
+.Vb 4
+\&    Extending and Embedding Perl
+\&       by Tim Jenness and Simon Cozens
+\&       ISBN 1-930110-82-0 [1st edition August 2002]
+\&       http://www.manning.com/jenness
+.Ve
+.Sh "Perl in Magazines"
+.IX Subsection "Perl in Magazines"
+The first (and for a long time, only) periodical devoted to All Things Perl,
+\&\fIThe Perl Journal\fR contains tutorials, demonstrations, case studies,
+announcements, contests, and much more.  \fI\s-1TPJ\s0\fR has columns on web
+development, databases, Win32 Perl, graphical programming, regular
+expressions, and networking, and sponsors the Obfuscated Perl Contest
+and the Perl Poetry Contests.  Beginning in November 2002, \s-1TPJ\s0 moved to a 
+reader-supported monthly e\-zine format in which subscribers can download 
+issues as \s-1PDF\s0 documents. For more details on \s-1TPJ\s0, see http://www.tpj.com/
+.PP
+Beyond this, magazines that frequently carry quality articles on
+Perl are \fIThe Perl Review\fR ( http://www.theperlreview.com ),
+\&\fIUnix Review\fR ( http://www.unixreview.com/ ),
+\&\fILinux Magazine\fR ( http://www.linuxmagazine.com/ ),
+and Usenix's newsletter/magazine to its members, \fIlogin:\fR
+( http://www.usenix.org/ )
+.PP
+The Perl columns of Randal L. Schwartz are available on the web at
+http://www.stonehenge.com/merlyn/WebTechniques/ ,
+http://www.stonehenge.com/merlyn/UnixReview/ , and
+http://www.stonehenge.com/merlyn/LinuxMag/ .
+.Sh "Perl on the Net: \s-1FTP\s0 and \s-1WWW\s0 Access"
+.IX Subsection "Perl on the Net: FTP and WWW Access"
+To get the best performance, pick a site from the list at
+http://www.cpan.org/SITES.html . From there you can find the quickest
+site for you.
+.PP
+You may also use xx.cpan.org where \*(L"xx\*(R" is the 2\-letter country code
+for your domain; e.g. Australia would use au.cpan.org. [Note: This
+only applies to countries that host at least one mirror.]
+.Sh "What mailing lists are there for Perl?"
+.IX Subsection "What mailing lists are there for Perl?"
+Most of the major modules (Tk, \s-1CGI\s0, libwww\-perl) have their own
+mailing lists.  Consult the documentation that came with the module for
+subscription information.
+.PP
+A comprehensive list of Perl related mailing lists can be found at:
+.PP
+.Vb 1
+\&        http://lists.perl.org/
+.Ve
+.Sh "Archives of comp.lang.perl.misc"
+.IX Subsection "Archives of comp.lang.perl.misc"
+The Google search engine now carries archived and searchable newsgroup
+content.
+.PP
+http://groups.google.com/groups?group=comp.lang.perl.misc
+.PP
+If you have a question, you can be sure someone has already asked the
+same question at some point on c.l.p.m. It requires some time and patience
+to sift through all the content but often you will find the answer you
+seek.
+.Sh "Where can I buy a commercial version of Perl?"
+.IX Subsection "Where can I buy a commercial version of Perl?"
+In a real sense, Perl already \fIis\fR commercial software: it has a license
+that you can grab and carefully read to your manager. It is distributed
+in releases and comes in well-defined packages. There is a very large
+user community and an extensive literature.  The comp.lang.perl.*
+newsgroups and several of the mailing lists provide free answers to your
+questions in near real\-time.  Perl has traditionally been supported by
+Larry, scores of software designers and developers, and myriad
+programmers, all working for free to create a useful thing to make life
+better for everyone.
+.PP
+However, these answers may not suffice for managers who require a
+purchase order from a company whom they can sue should anything go awry.
+Or maybe they need very serious hand-holding and contractual obligations.
+Shrink-wrapped CDs with Perl on them are available from several sources if
+that will help.  For example, many Perl books include a distribution of Perl,
+as do the O'Reilly Perl Resource Kits (in both the Unix flavor
+and in the proprietary Microsoft flavor); the free Unix distributions
+also all come with Perl.
+.PP
+Alternatively, you can purchase commercial incidence based support
+through the Perl Clinic.  The following is a commercial from them:
+.PP
+"The Perl Clinic is a commercial Perl support service operated by
+ActiveState Tool Corp. and The Ingram Group.  The operators have many
+years of in-depth experience with Perl applications and Perl internals
+on a wide range of platforms.
+.PP
+\&\*(L"Through our group of highly experienced and well-trained support engineers,
+we will put our best effort into understanding your problem, providing an
+explanation of the situation, and a recommendation on how to proceed.\*(R"
+.PP
+Contact The Perl Clinic at
+.PP
+.Vb 1
+\&    www.PerlClinic.com
+.Ve
+.PP
+.Vb 3
+\&    North America Pacific Standard Time (GMT-8)
+\&    Tel:    1 604 606-4611 hours 8am-6pm
+\&    Fax:    1 604 606-4640
+.Ve
+.PP
+.Vb 3
+\&    Europe (GMT)
+\&    Tel:    00 44 1483 862814
+\&    Fax:    00 44 1483 862801
+.Ve
+.PP
+See also www.perl.com for updates on tutorials, training, and support.
+.Sh "Where do I send bug reports?"
+.IX Subsection "Where do I send bug reports?"
+If you are reporting a bug in the perl interpreter or the modules
+shipped with Perl, use the \fIperlbug\fR program in the Perl distribution or
+mail your report to perlbug at perl.org .
+.PP
+If you are posting a bug with a non-standard port (see the answer to
+\&\*(L"What platforms is Perl available for?\*(R"), a binary distribution, or a
+non-standard module (such as Tk, \s-1CGI\s0, etc), then please see the
+documentation that came with it to determine the correct place to post
+bugs.
+.PP
+Read the \fIperlbug\fR\|(1) man page (perl5.004 or later) for more information.
+.Sh "What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?"
+.IX Subsection "What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?"
+The Perl Home Page at http://www.perl.com/ is currently hosted by
+The O'Reilly Network, a subsidiary of O'Reilly and Associates.
+.PP
+Perl Mongers is an advocacy organization for the Perl language which
+maintains the web site http://www.perl.org/ as a general advocacy
+site for the Perl language.
+.PP
+Perl Mongers uses the pm.org domain for services related to Perl user
+groups, including the hosting of mailing lists and web sites.  See the
+Perl user group web site at http://www.pm.org/ for more information about
+joining, starting, or requesting services for a Perl user group.
+.PP
+Perl Mongers also maintain the perl.org domain to provide general
+support services to the Perl community, including the hosting of mailing
+lists, web sites, and other services.  The web site
+http://www.perl.org/ is a general advocacy site for the Perl language,
+and there are many other sub-domains for special topics, such as
+.PP
+.Vb 4
+\&    http://bugs.perl.org/
+\&    http://history.perl.org/
+\&    http://lists.perl.org/
+\&    http://use.perl.org/
+.Ve
+.PP
+http://www.cpan.org/ is the Comprehensive Perl Archive Network,
+a replicated worlwide repository of Perl software, see
+the \fIWhat is \s-1CPAN\s0?\fR question earlier in this document.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2001 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples here are in the public
+domain.  You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit.  A simple comment in the code giving credit to the \s-1FAQ\s0 would
+be courteous but is not required.
diff --git a/raw/man1/perlfaq3.1 b/raw/man1/perlfaq3.1
new file mode 100644
index 0000000..b282520
--- /dev/null
+++ b/raw/man1/perlfaq3.1
@@ -0,0 +1,1102 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ3 1"
+.TH PERLFAQ3 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq3 \- Programming Tools ($Revision: 1.1 $, $Date: 2004/06/16 03:02:15 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This section of the \s-1FAQ\s0 answers questions related to programmer tools
+and programming support.
+.Sh "How do I do (anything)?"
+.IX Subsection "How do I do (anything)?"
+Have you looked at \s-1CPAN\s0 (see perlfaq2)?  The chances are that
+someone has already written a module that can solve your problem.
+Have you read the appropriate manpages?  Here's a brief index:
+.PP
+.Vb 12
+\&        Basics          perldata, perlvar, perlsyn, perlop, perlsub
+\&        Execution       perlrun, perldebug
+\&        Functions       perlfunc
+\&        Objects         perlref, perlmod, perlobj, perltie
+\&        Data Structures perlref, perllol, perldsc
+\&        Modules         perlmod, perlmodlib, perlsub
+\&        Regexes         perlre, perlfunc, perlop, perllocale
+\&        Moving to perl5 perltrap, perl
+\&        Linking w/C     perlxstut, perlxs, perlcall, perlguts, perlembed
+\&        Various         http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz
+\&                        (not a man-page but still useful, a collection
+\&                         of various essays on Perl techniques)
+.Ve
+.PP
+A crude table of contents for the Perl manpage set is found in perltoc.
+.Sh "How can I use Perl interactively?"
+.IX Subsection "How can I use Perl interactively?"
+The typical approach uses the Perl debugger, described in the
+\&\fIperldebug\fR\|(1) manpage, on an ``empty'' program, like this:
+.PP
+.Vb 1
+\&    perl -de 42
+.Ve
+.PP
+Now just type in any legal Perl code, and it will be immediately
+evaluated.  You can also examine the symbol table, get stack
+backtraces, check variable values, set breakpoints, and other
+operations typically found in symbolic debuggers.
+.Sh "Is there a Perl shell?"
+.IX Subsection "Is there a Perl shell?"
+The psh (Perl sh) is currently at version 1.8. The Perl Shell is a
+shell that combines the interactive nature of a Unix shell with the
+power of Perl. The goal is a full featured shell that behaves as
+expected for normal shell activity and uses Perl syntax and
+functionality for control-flow statements and other things.
+You can get psh at http://www.focusresearch.com/gregor/psh/ .
+.PP
+Zoidberg is a similar project and provides a shell written in perl,
+configured in perl and operated in perl. It is intended as a login shell
+and development environment. It can be found at http://zoidberg.sf.net/
+or your local \s-1CPAN\s0 mirror.
+.PP
+The Shell.pm module (distributed with Perl) makes Perl try commands
+which aren't part of the Perl language as shell commands.  perlsh
+from the source distribution is simplistic and uninteresting, but
+may still be what you want.
+.Sh "How do I find which modules are installed on my system?"
+.IX Subsection "How do I find which modules are installed on my system?"
+You can use the ExtUtils::Installed module to show all
+installed distributions, although it can take awhile to do
+its magic.  The standard library which comes with Perl just
+shows up as \*(L"Perl\*(R" (although you can get those with
+Module::CoreList).
+.PP
+.Vb 1
+\&        use ExtUtils::Installed;
+.Ve
+.PP
+.Vb 2
+\&        my $inst    = ExtUtils::Installed->new();
+\&        my @modules = $inst->modules();
+.Ve
+.PP
+If you want a list of all of the Perl module filenames, you
+can use File::Find::Rule.
+.PP
+.Vb 1
+\&        use File::Find::Rule;
+.Ve
+.PP
+.Vb 1
+\&        my @files = File::Find::Rule->file()->name( '*.pm' )->in( @INC );
+.Ve
+.PP
+If you do not have that module, you can do the same thing
+with File::Find which is part of the standard library.
+.PP
+.Vb 2
+\&    use File::Find;
+\&    my @files;
+.Ve
+.PP
+.Vb 2
+\&    find sub { push @files, $File::Find::name if -f _ && /\e.pm$/ },
+\&         @INC;
+.Ve
+.PP
+.Vb 1
+\&        print join "\en", @files;
+.Ve
+.PP
+If you simply need to quickly check to see if a module is
+available, you can check for its documentation.  If you can
+read the documentation the module is most likely installed.
+If you cannot read the documentation, the module might not
+have any (in rare cases).
+.PP
+.Vb 1
+\&        prompt% perldoc Module::Name
+.Ve
+.PP
+You can also try to include the module in a one-liner to see if
+perl finds it.
+.PP
+.Vb 1
+\&        perl -MModule::Name -e1
+.Ve
+.Sh "How do I debug my Perl programs?"
+.IX Subsection "How do I debug my Perl programs?"
+Have you tried \f(CW\*(C`use warnings\*(C'\fR or used \f(CW\*(C`\-w\*(C'\fR?  They enable warnings
+to detect dubious practices.
+.PP
+Have you tried \f(CW\*(C`use strict\*(C'\fR?  It prevents you from using symbolic
+references, makes you predeclare any subroutines that you call as bare
+words, and (probably most importantly) forces you to predeclare your
+variables with \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, or \f(CW\*(C`use vars\*(C'\fR.
+.PP
+Did you check the return values of each and every system call?  The operating
+system (and thus Perl) tells you whether they worked, and if not
+why.
+.PP
+.Vb 2
+\&  open(FH, "> /etc/cantwrite")
+\&    or die "Couldn't write to /etc/cantwrite: $!\en";
+.Ve
+.PP
+Did you read perltrap?  It's full of gotchas for old and new Perl
+programmers and even has sections for those of you who are upgrading
+from languages like \fIawk\fR and \fIC\fR.
+.PP
+Have you tried the Perl debugger, described in perldebug?  You can
+step through your program and see what it's doing and thus work out
+why what it's doing isn't what it should be doing.
+.Sh "How do I profile my Perl programs?"
+.IX Subsection "How do I profile my Perl programs?"
+You should get the Devel::DProf module from the standard distribution
+(or separately on \s-1CPAN\s0) and also use Benchmark.pm from the standard
+distribution.  The Benchmark module lets you time specific portions of
+your code, while Devel::DProf gives detailed breakdowns of where your
+code spends its time.
+.PP
+Here's a sample use of Benchmark:
+.PP
+.Vb 1
+\&  use Benchmark;
+.Ve
+.PP
+.Vb 2
+\&  @junk = `cat /etc/motd`;
+\&  $count = 10_000;
+.Ve
+.PP
+.Vb 8
+\&  timethese($count, {
+\&            'map' => sub { my @a = @junk;
+\&                           map { s/a/b/ } @a;
+\&                           return @a },
+\&            'for' => sub { my @a = @junk;
+\&                           for (@a) { s/a/b/ };
+\&                           return @a },
+\&           });
+.Ve
+.PP
+This is what it prints (on one machine\*(--your results will be dependent
+on your hardware, operating system, and the load on your machine):
+.PP
+.Vb 3
+\&  Benchmark: timing 10000 iterations of for, map...
+\&         for:  4 secs ( 3.97 usr  0.01 sys =  3.98 cpu)
+\&         map:  6 secs ( 4.97 usr  0.00 sys =  4.97 cpu)
+.Ve
+.PP
+Be aware that a good benchmark is very hard to write.  It only tests the
+data you give it and proves little about the differing complexities
+of contrasting algorithms.
+.Sh "How do I cross-reference my Perl programs?"
+.IX Subsection "How do I cross-reference my Perl programs?"
+The B::Xref module can be used to generate cross-reference reports
+for Perl programs.
+.PP
+.Vb 1
+\&    perl -MO=Xref[,OPTIONS] scriptname.plx
+.Ve
+.Sh "Is there a pretty-printer (formatter) for Perl?"
+.IX Subsection "Is there a pretty-printer (formatter) for Perl?"
+Perltidy is a Perl script which indents and reformats Perl scripts
+to make them easier to read by trying to follow the rules of the
+perlstyle. If you write Perl scripts, or spend much time reading
+them, you will probably find it useful.  It is available at
+http://perltidy.sourceforge.net
+.PP
+Of course, if you simply follow the guidelines in perlstyle,
+you shouldn't need to reformat.  The habit of formatting your code
+as you write it will help prevent bugs.  Your editor can and should
+help you with this.  The perl-mode or newer cperl-mode for emacs
+can provide remarkable amounts of help with most (but not all)
+code, and even less programmable editors can provide significant
+assistance.  Tom Christiansen and many other \s-1VI\s0 users  swear by
+the following settings in vi and its clones:
+.PP
+.Vb 2
+\&    set ai sw=4
+\&    map! ^O {^M}^[O^T
+.Ve
+.PP
+Put that in your \fI.exrc\fR file (replacing the caret characters
+with control characters) and away you go.  In insert mode, ^T is
+for indenting, ^D is for undenting, and ^O is for blockdenting\*(--
+as it were.  A more complete example, with comments, can be found at
+http://www.cpan.org/authors/id/TOMC/scripts/toms.exrc.gz
+.PP
+The a2ps http://www\-inf.enst.fr/%7Edemaille/a2ps/black+white.ps.gz does
+lots of things related to generating nicely printed output of
+documents, as does enscript at http://people.ssh.fi/mtr/genscript/ .
+.Sh "Is there a ctags for Perl?"
+.IX Subsection "Is there a ctags for Perl?"
+Recent versions of ctags do much more than older versions did.
+\&\s-1EXUBERANT\s0 \s-1CTAGS\s0 is available from http://ctags.sourceforge.net/
+and does a good job of making tags files for perl code.
+.PP
+There is also a simple one at
+http://www.cpan.org/authors/id/TOMC/scripts/ptags.gz which may do
+the trick.  It can be easy to hack this into what you want.
+.Sh "Is there an \s-1IDE\s0 or Windows Perl Editor?"
+.IX Subsection "Is there an IDE or Windows Perl Editor?"
+Perl programs are just plain text, so any editor will do.
+.PP
+If you're on Unix, you already have an IDE\*(--Unix itself.  The \s-1UNIX\s0
+philosophy is the philosophy of several small tools that each do one
+thing and do it well.  It's like a carpenter's toolbox.
+.PP
+If you want an \s-1IDE\s0, check the following:
+.IP "Komodo" 4
+.IX Item "Komodo"
+ActiveState's cross-platform (as of April 2001 Windows and Linux),
+multi-language \s-1IDE\s0 has Perl support, including a regular expression
+debugger and remote debugging
+( http://www.ActiveState.com/Products/Komodo/index.html ).  (Visual
+Perl, a Visual Studio.NET plug-in is currently (early 2001) in beta
+( http://www.ActiveState.com/Products/VisualPerl/index.html )).
+.IP "The Object System" 4
+.IX Item "The Object System"
+( http://www.castlelink.co.uk/object_system/ ) is a Perl web
+applications development \s-1IDE\s0, apparently for any platform
+that runs Perl.
+.IP "Open Perl \s-1IDE\s0" 4
+.IX Item "Open Perl IDE"
+( http://open\-perl\-ide.sourceforge.net/ )
+Open Perl \s-1IDE\s0 is an integrated development environment for writing
+and debugging Perl scripts with ActiveState's ActivePerl distribution
+under Windows 95/98/NT/2000.
+.IP "PerlBuilder" 4
+.IX Item "PerlBuilder"
+( http://www.solutionsoft.com/perl.htm ) is an integrated development
+environment for Windows that supports Perl development.
+.IP "visiPerl+" 4
+.IX Item "visiPerl+"
+( http://helpconsulting.net/visiperl/ )
+From Help Consulting, for Windows.
+.IP "OptiPerl" 4
+.IX Item "OptiPerl"
+( http://www.optiperl.com/ ) is a Windows \s-1IDE\s0 with simulated \s-1CGI\s0
+environment, including debugger and syntax highlighting editor.
+.PP
+For editors: if you're on Unix you probably have vi or a vi clone already,
+and possibly an emacs too, so you may not need to download anything.
+In any emacs the cperl-mode (M\-x cperl\-mode) gives you perhaps the
+best available Perl editing mode in any editor.
+.PP
+If you are using Windows, you can use any editor that lets
+you work with plain text, such as NotePad or WordPad.  Word
+processors, such as Microsoft Word or WordPerfect, typically
+do not work since they insert all sorts of behind-the-scenes
+information, although some allow you to save files as \*(L"Text
+Only\*(R". You can also download text editors designed
+specifically for programming, such as Textpad
+( http://www.textpad.com/ ) and UltraEdit
+( http://www.ultraedit.com/ ), among others.
+.PP
+If you are using MacOS, the same concerns apply.  MacPerl
+(for Classic environments) comes with a simple editor.
+Popular external editors are BBEdit ( http://www.bbedit.com/ )
+or Alpha ( http://www.kelehers.org/alpha/ ). MacOS X users can
+use Unix editors as well.
+.IP "\s-1GNU\s0 Emacs" 4
+.IX Item "GNU Emacs"
+http://www.gnu.org/software/emacs/windows/ntemacs.html
+.IP "MicroEMACS" 4
+.IX Item "MicroEMACS"
+http://www.microemacs.de/
+.IP "XEmacs" 4
+.IX Item "XEmacs"
+http://www.xemacs.org/Download/index.html
+.IP "Jed" 4
+.IX Item "Jed"
+http://space.mit.edu/~davis/jed/
+.PP
+or a vi clone such as
+.IP "Elvis" 4
+.IX Item "Elvis"
+ftp://ftp.cs.pdx.edu/pub/elvis/ http://www.fh\-wedel.de/elvis/
+.IP "Vile" 4
+.IX Item "Vile"
+http://dickey.his.com/vile/vile.html
+.IP "Vim" 4
+.IX Item "Vim"
+http://www.vim.org/
+.PP
+For vi lovers in general, Windows or elsewhere:
+.PP
+.Vb 1
+\&        http://www.thomer.com/thomer/vi/vi.html
+.Ve
+.PP
+nvi ( http://www.bostic.com/vi/ , available from \s-1CPAN\s0 in src/misc/) is
+yet another vi clone, unfortunately not available for Windows, but in
+\&\s-1UNIX\s0 platforms you might be interested in trying it out, firstly because
+strictly speaking it is not a vi clone, it is the real vi, or the new
+incarnation of it, and secondly because you can embed Perl inside it
+to use Perl as the scripting language.  nvi is not alone in this,
+though: at least also vim and vile offer an embedded Perl.
+.PP
+The following are Win32 multilanguage editor/IDESs that support Perl:
+.IP "Codewright" 4
+.IX Item "Codewright"
+http://www.starbase.com/
+.IP "MultiEdit" 4
+.IX Item "MultiEdit"
+http://www.MultiEdit.com/
+.IP "SlickEdit" 4
+.IX Item "SlickEdit"
+http://www.slickedit.com/
+.PP
+There is also a toyedit Text widget based editor written in Perl
+that is distributed with the Tk module on \s-1CPAN\s0.  The ptkdb
+( http://world.std.com/~aep/ptkdb/ ) is a Perl/tk based debugger that
+acts as a development environment of sorts.  Perl Composer
+( http://perlcomposer.sourceforge.net/ ) is an \s-1IDE\s0 for Perl/Tk
+\&\s-1GUI\s0 creation.
+.PP
+In addition to an editor/IDE you might be interested in a more
+powerful shell environment for Win32.  Your options include
+.IP "Bash" 4
+.IX Item "Bash"
+from the Cygwin package ( http://sources.redhat.com/cygwin/ )
+.IP "Ksh" 4
+.IX Item "Ksh"
+from the \s-1MKS\s0 Toolkit ( http://www.mks.com/ ), or the Bourne shell of
+the U/WIN environment ( http://www.research.att.com/sw/tools/uwin/ )
+.IP "Tcsh" 4
+.IX Item "Tcsh"
+ftp://ftp.astron.com/pub/tcsh/ , see also
+http://www.primate.wisc.edu/software/csh\-tcsh\-book/
+.IP "Zsh" 4
+.IX Item "Zsh"
+ftp://ftp.blarg.net/users/amol/zsh/ , see also http://www.zsh.org/
+.PP
+\&\s-1MKS\s0 and U/WIN are commercial (U/WIN is free for educational and
+research purposes), Cygwin is covered by the \s-1GNU\s0 Public License (but
+that shouldn't matter for Perl use).  The Cygwin, \s-1MKS\s0, and U/WIN all
+contain (in addition to the shells) a comprehensive set of standard
+\&\s-1UNIX\s0 toolkit utilities.
+.PP
+If you're transferring text files between Unix and Windows using \s-1FTP\s0
+be sure to transfer them in \s-1ASCII\s0 mode so the ends of lines are
+appropriately converted.
+.PP
+On Mac \s-1OS\s0 the MacPerl Application comes with a simple 32k text editor
+that behaves like a rudimentary \s-1IDE\s0.  In contrast to the MacPerl Application
+the \s-1MPW\s0 Perl tool can make use of the \s-1MPW\s0 Shell itself as an editor (with
+no 32k limit).
+.IP "BBEdit and BBEdit Lite" 4
+.IX Item "BBEdit and BBEdit Lite"
+are text editors for Mac \s-1OS\s0 that have a Perl sensitivity mode
+( http://web.barebones.com/ ).
+.IP "Alpha" 4
+.IX Item "Alpha"
+is an editor, written and extensible in Tcl, that nonetheless has
+built in support for several popular markup and programming languages
+including Perl and \s-1HTML\s0 ( http://alpha.olm.net/ ).
+.PP
+Pepper and Pe are programming language sensitive text editors for Mac
+\&\s-1OS\s0 X and BeOS respectively ( http://www.hekkelman.com/ ).
+.Sh "Where can I get Perl macros for vi?"
+.IX Subsection "Where can I get Perl macros for vi?"
+For a complete version of Tom Christiansen's vi configuration file,
+see http://www.cpan.org/authors/Tom_Christiansen/scripts/toms.exrc.gz ,
+the standard benchmark file for vi emulators.  The file runs best with nvi,
+the current version of vi out of Berkeley, which incidentally can be built
+with an embedded Perl interpreter\*(--see http://www.cpan.org/src/misc/ .
+.Sh "Where can I get perl-mode for emacs?"
+.IX Subsection "Where can I get perl-mode for emacs?"
+Since Emacs version 19 patchlevel 22 or so, there have been both a
+perl\-mode.el and support for the Perl debugger built in.  These should
+come with the standard Emacs 19 distribution.
+.PP
+In the Perl source directory, you'll find a directory called \*(L"emacs\*(R",
+which contains a cperl-mode that color-codes keywords, provides
+context-sensitive help, and other nifty things.
+.PP
+Note that the perl-mode of emacs will have fits with \f(CW"main'foo"\fR
+(single quote), and mess up the indentation and highlighting.  You
+are probably using \f(CW"main::foo"\fR in new Perl code anyway, so this
+shouldn't be an issue.
+.Sh "How can I use curses with Perl?"
+.IX Subsection "How can I use curses with Perl?"
+The Curses module from \s-1CPAN\s0 provides a dynamically loadable object
+module interface to a curses library.  A small demo can be found at the
+directory http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz ;
+this program repeats a command and updates the screen as needed, rendering
+\&\fBrep ps axu\fR similar to \fBtop\fR.
+.Sh "How can I use X or Tk with Perl?"
+.IX Subsection "How can I use X or Tk with Perl?"
+Tk is a completely Perl\-based, object-oriented interface to the Tk toolkit
+that doesn't force you to use Tcl just to get at Tk.  Sx is an interface
+to the Athena Widget set.  Both are available from \s-1CPAN\s0.  See the
+directory http://www.cpan.org/modules/by\-category/08_User_Interfaces/
+.PP
+Invaluable for Perl/Tk programming are the Perl/Tk \s-1FAQ\s0 at
+http://w4.lns.cornell.edu/%7Epvhp/ptk/ptkTOC.html , the Perl/Tk Reference
+Guide available at
+http://www.cpan.org/authors/Stephen_O_Lidie/ , and the
+online manpages at
+http://www\-users.cs.umn.edu/%7Eamundson/perl/perltk/toc.html .
+.Sh "How can I generate simple menus without using \s-1CGI\s0 or Tk?"
+.IX Subsection "How can I generate simple menus without using CGI or Tk?"
+The http://www.cpan.org/authors/id/SKUNZ/perlmenu.v4.0.tar.gz
+module, which is curses\-based, can help with this.
+.Sh "How can I make my Perl program run faster?"
+.IX Subsection "How can I make my Perl program run faster?"
+The best way to do this is to come up with a better algorithm.  This
+can often make a dramatic difference.  Jon Bentley's book
+\&\fIProgramming Pearls\fR (that's not a misspelling!)  has some good tips
+on optimization, too.  Advice on benchmarking boils down to: benchmark
+and profile to make sure you're optimizing the right part, look for
+better algorithms instead of microtuning your code, and when all else
+fails consider just buying faster hardware.  You will probably want to
+read the answer to the earlier question ``How do I profile my Perl
+programs?'' if you haven't done so already.
+.PP
+A different approach is to autoload seldom-used Perl code.  See the
+AutoSplit and AutoLoader modules in the standard distribution for
+that.  Or you could locate the bottleneck and think about writing just
+that part in C, the way we used to take bottlenecks in C code and
+write them in assembler.  Similar to rewriting in C, modules that have
+critical sections can be written in C (for instance, the \s-1PDL\s0 module
+from \s-1CPAN\s0).
+.PP
+If you're currently linking your perl executable to a shared
+\&\fIlibc.so\fR, you can often gain a 10\-25% performance benefit by
+rebuilding it to link with a static libc.a instead.  This will make a
+bigger perl executable, but your Perl programs (and programmers) may
+thank you for it.  See the \fI\s-1INSTALL\s0\fR file in the source distribution
+for more information.
+.PP
+The undump program was an ancient attempt to speed up Perl program by
+storing the already-compiled form to disk.  This is no longer a viable
+option, as it only worked on a few architectures, and wasn't a good
+solution anyway.
+.Sh "How can I make my Perl program take less memory?"
+.IX Subsection "How can I make my Perl program take less memory?"
+When it comes to time-space tradeoffs, Perl nearly always prefers to
+throw memory at a problem.  Scalars in Perl use more memory than
+strings in C, arrays take more than that, and hashes use even more.  While
+there's still a lot to be done, recent releases have been addressing
+these issues.  For example, as of 5.004, duplicate hash keys are
+shared amongst all hashes using them, so require no reallocation.
+.PP
+In some cases, using \fIsubstr()\fR or \fIvec()\fR to simulate arrays can be
+highly beneficial.  For example, an array of a thousand booleans will
+take at least 20,000 bytes of space, but it can be turned into one
+125\-byte bit vector\*(--a considerable memory savings.  The standard
+Tie::SubstrHash module can also help for certain types of data
+structure.  If you're working with specialist data structures
+(matrices, for instance) modules that implement these in C may use
+less memory than equivalent Perl modules.
+.PP
+Another thing to try is learning whether your Perl was compiled with
+the system malloc or with Perl's builtin malloc.  Whichever one it
+is, try using the other one and see whether this makes a difference.
+Information about malloc is in the \fI\s-1INSTALL\s0\fR file in the source
+distribution.  You can find out whether you are using perl's malloc by
+typing \f(CW\*(C`perl \-V:usemymalloc\*(C'\fR.
+.PP
+Of course, the best way to save memory is to not do anything to waste
+it in the first place. Good programming practices can go a long way
+toward this:
+.IP "* Don't slurp!" 4
+.IX Item "Don't slurp!"
+Don't read an entire file into memory if you can process it line
+by line. Or more concretely, use a loop like this:
+.Sp
+.Vb 6
+\&        #
+\&        # Good Idea
+\&        #
+\&        while (<FILE>) {
+\&           # ...
+\&        }
+.Ve
+.Sp
+instead of this:
+.Sp
+.Vb 7
+\&        #
+\&        # Bad Idea
+\&        #
+\&        @data = <FILE>;
+\&        foreach (@data) {
+\&            # ...
+\&        }
+.Ve
+.Sp
+When the files you're processing are small, it doesn't much matter which
+way you do it, but it makes a huge difference when they start getting
+larger.
+.IP "* Use map and grep selectively" 4
+.IX Item "Use map and grep selectively"
+Remember that both map and grep expect a \s-1LIST\s0 argument, so doing this:
+.Sp
+.Vb 1
+\&        @wanted = grep {/pattern/} <FILE>;
+.Ve
+.Sp
+will cause the entire file to be slurped. For large files, it's better
+to loop:
+.Sp
+.Vb 3
+\&        while (<FILE>) {
+\&                push(@wanted, $_) if /pattern/;
+\&        }
+.Ve
+.IP "* Avoid unnecessary quotes and stringification" 4
+.IX Item "Avoid unnecessary quotes and stringification"
+Don't quote large strings unless absolutely necessary:
+.Sp
+.Vb 1
+\&        my $copy = "$large_string";
+.Ve
+.Sp
+makes 2 copies of \f(CW$large_string\fR (one for \f(CW$copy\fR and another for the
+quotes), whereas
+.Sp
+.Vb 1
+\&        my $copy = $large_string;
+.Ve
+.Sp
+only makes one copy.
+.Sp
+Ditto for stringifying large arrays:
+.Sp
+.Vb 4
+\&        {
+\&                local $, = "\en";
+\&                print @big_array;
+\&        }
+.Ve
+.Sp
+is much more memory-efficient than either
+.Sp
+.Vb 1
+\&        print join "\en", @big_array;
+.Ve
+.Sp
+or
+.Sp
+.Vb 4
+\&        {
+\&                local $" = "\en";
+\&                print "@big_array";
+\&        }
+.Ve
+.IP "* Pass by reference" 4
+.IX Item "Pass by reference"
+Pass arrays and hashes by reference, not by value. For one thing, it's
+the only way to pass multiple lists or hashes (or both) in a single
+call/return. It also avoids creating a copy of all the contents. This
+requires some judgment, however, because any changes will be propagated
+back to the original data. If you really want to mangle (er, modify) a
+copy, you'll have to sacrifice the memory needed to make one.
+.IP "* Tie large variables to disk." 4
+.IX Item "Tie large variables to disk."
+For \*(L"big\*(R" data stores (i.e. ones that exceed available memory) consider
+using one of the \s-1DB\s0 modules to store it on disk instead of in \s-1RAM\s0. This
+will incur a penalty in access time, but that's probably better than
+causing your hard disk to thrash due to massive swapping.
+.Sh "Is it safe to return a reference to local or lexical data?"
+.IX Subsection "Is it safe to return a reference to local or lexical data?"
+Yes. Perl's garbage collection system takes care of this so
+everything works out right.
+.PP
+.Vb 4
+\&    sub makeone {
+\&        my @a = ( 1 .. 10 );
+\&        return \e at a;
+\&    }
+.Ve
+.PP
+.Vb 3
+\&    for ( 1 .. 10 ) {
+\&        push @many, makeone();
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    print $many[4][5], "\en";
+.Ve
+.PP
+.Vb 1
+\&    print "@many\en";
+.Ve
+.Sh "How can I free an array or hash so my program shrinks?"
+.IX Subsection "How can I free an array or hash so my program shrinks?"
+You usually can't. On most operating systems, memory
+allocated to a program can never be returned to the system.
+That's why long-running programs sometimes re-exec
+themselves. Some operating systems (notably, systems that
+use \fImmap\fR\|(2) for allocating large chunks of memory) can
+reclaim memory that is no longer used, but on such systems,
+perl must be configured and compiled to use the \s-1OS\s0's malloc,
+not perl's.
+.PP
+However, judicious use of \fImy()\fR on your variables will help make sure
+that they go out of scope so that Perl can free up that space for
+use in other parts of your program.  A global variable, of course, never
+goes out of scope, so you can't get its space automatically reclaimed,
+although \fIundef()\fRing and/or \fIdelete()\fRing it will achieve the same effect.
+In general, memory allocation and de-allocation isn't something you can
+or should be worrying about much in Perl, but even this capability
+(preallocation of data types) is in the works.
+.Sh "How can I make my \s-1CGI\s0 script more efficient?"
+.IX Subsection "How can I make my CGI script more efficient?"
+Beyond the normal measures described to make general Perl programs
+faster or smaller, a \s-1CGI\s0 program has additional issues.  It may be run
+several times per second.  Given that each time it runs it will need
+to be re-compiled and will often allocate a megabyte or more of system
+memory, this can be a killer.  Compiling into C \fBisn't going to help
+you\fR because the process start-up overhead is where the bottleneck is.
+.PP
+There are two popular ways to avoid this overhead.  One solution
+involves running the Apache \s-1HTTP\s0 server (available from
+http://www.apache.org/ ) with either of the mod_perl or mod_fastcgi
+plugin modules.
+.PP
+With mod_perl and the Apache::Registry module (distributed with
+mod_perl), httpd will run with an embedded Perl interpreter which
+pre-compiles your script and then executes it within the same address
+space without forking.  The Apache extension also gives Perl access to
+the internal server \s-1API\s0, so modules written in Perl can do just about
+anything a module written in C can.  For more on mod_perl, see
+http://perl.apache.org/
+.PP
+With the \s-1FCGI\s0 module (from \s-1CPAN\s0) and the mod_fastcgi
+module (available from http://www.fastcgi.com/ ) each of your Perl
+programs becomes a permanent \s-1CGI\s0 daemon process.
+.PP
+Both of these solutions can have far-reaching effects on your system
+and on the way you write your \s-1CGI\s0 programs, so investigate them with
+care.
+.PP
+See http://www.cpan.org/modules/by\-category/15_World_Wide_Web_HTML_HTTP_CGI/ .
+.PP
+A non\-free, commercial product, ``The Velocity Engine for Perl'',
+(http://www.binevolve.com/ or http://www.binevolve.com/velocigen/ )
+might also be worth looking at.  It will allow you to increase the
+performance of your Perl programs, running programs up to 25 times
+faster than normal \s-1CGI\s0 Perl when running in persistent Perl mode or 4
+to 5 times faster without any modification to your existing \s-1CGI\s0
+programs. Fully functional evaluation copies are available from the
+web site.
+.Sh "How can I hide the source for my Perl program?"
+.IX Subsection "How can I hide the source for my Perl program?"
+Delete it. :\-) Seriously, there are a number of (mostly
+unsatisfactory) solutions with varying levels of ``security''.
+.PP
+First of all, however, you \fIcan't\fR take away read permission, because
+the source code has to be readable in order to be compiled and
+interpreted.  (That doesn't mean that a \s-1CGI\s0 script's source is
+readable by people on the web, though\*(--only by people with access to
+the filesystem.)  So you have to leave the permissions at the socially
+friendly 0755 level.
+.PP
+Some people regard this as a security problem.  If your program does
+insecure things and relies on people not knowing how to exploit those
+insecurities, it is not secure.  It is often possible for someone to
+determine the insecure things and exploit them without viewing the
+source.  Security through obscurity, the name for hiding your bugs
+instead of fixing them, is little security indeed.
+.PP
+You can try using encryption via source filters (Starting from Perl
+5.8 the Filter::Simple and Filter::Util::Call modules are included in
+the standard distribution), but any decent programmer will be able to
+decrypt it.  You can try using the byte code compiler and interpreter
+described below, but the curious might still be able to de-compile it.
+You can try using the native-code compiler described below, but
+crackers might be able to disassemble it.  These pose varying degrees
+of difficulty to people wanting to get at your code, but none can
+definitively conceal it (true of every language, not just Perl).
+.PP
+It is very easy to recover the source of Perl programs.  You simply
+feed the program to the perl interpreter and use the modules in
+the B:: hierarchy.  The B::Deparse module should be able to
+defeat most attempts to hide source.  Again, this is not
+unique to Perl.
+.PP
+If you're concerned about people profiting from your code, then the
+bottom line is that nothing but a restrictive license will give you
+legal security.  License your software and pepper it with threatening
+statements like ``This is unpublished proprietary software of \s-1XYZ\s0 Corp.
+Your access to it does not give you permission to use it blah blah
+blah.''  We are not lawyers, of course, so you should see a lawyer if
+you want to be sure your license's wording will stand up in court.
+.Sh "How can I compile my Perl program into byte code or C?"
+.IX Subsection "How can I compile my Perl program into byte code or C?"
+Malcolm Beattie has written a multifunction backend compiler,
+available from \s-1CPAN\s0, that can do both these things.  It is included
+in the perl5.005 release, but is still considered experimental.
+This means it's fun to play with if you're a programmer but not
+really for people looking for turn-key solutions.
+.PP
+Merely compiling into C does not in and of itself guarantee that your
+code will run very much faster.  That's because except for lucky cases
+where a lot of native type inferencing is possible, the normal Perl
+run-time system is still present and so your program will take just as
+long to run and be just as big.  Most programs save little more than
+compilation time, leaving execution no more than 10\-30% faster.  A few
+rare programs actually benefit significantly (even running several times
+faster), but this takes some tweaking of your code.
+.PP
+You'll probably be astonished to learn that the current version of the
+compiler generates a compiled form of your script whose executable is
+just as big as the original perl executable, and then some.  That's
+because as currently written, all programs are prepared for a full
+\&\fIeval()\fR statement.  You can tremendously reduce this cost by building a
+shared \fIlibperl.so\fR library and linking against that.  See the
+\&\fI\s-1INSTALL\s0\fR podfile in the Perl source distribution for details.  If
+you link your main perl binary with this, it will make it minuscule.
+For example, on one author's system, \fI/usr/bin/perl\fR is only 11k in
+size!
+.PP
+In general, the compiler will do nothing to make a Perl program smaller,
+faster, more portable, or more secure.  In fact, it can make your
+situation worse.  The executable will be bigger, your \s-1VM\s0 system may take
+longer to load the whole thing, the binary is fragile and hard to fix,
+and compilation never stopped software piracy in the form of crackers,
+viruses, or bootleggers.  The real advantage of the compiler is merely
+packaging, and once you see the size of what it makes (well, unless
+you use a shared \fIlibperl.so\fR), you'll probably want a complete
+Perl install anyway.
+.Sh "How can I compile Perl into Java?"
+.IX Subsection "How can I compile Perl into Java?"
+You can also integrate Java and Perl with the
+Perl Resource Kit from O'Reilly and Associates.  See
+http://www.oreilly.com/catalog/prkunix/ .
+.PP
+Perl 5.6 comes with Java Perl Lingo, or \s-1JPL\s0.  \s-1JPL\s0, still in
+development, allows Perl code to be called from Java.  See jpl/README
+in the Perl source tree.
+.ie n .Sh "How can I get ""#!perl"" to work on [\s-1MS\-DOS\s0,NT,...]?"
+.el .Sh "How can I get \f(CW#!perl\fP to work on [\s-1MS\-DOS\s0,NT,...]?"
+.IX Subsection "How can I get #!perl to work on [MS-DOS,NT,...]?"
+For \s-1OS/2\s0 just use
+.PP
+.Vb 1
+\&    extproc perl -S -your_switches
+.Ve
+.PP
+as the first line in \f(CW\*(C`*.cmd\*(C'\fR file (\f(CW\*(C`\-S\*(C'\fR due to a bug in cmd.exe's
+`extproc' handling).  For \s-1DOS\s0 one should first invent a corresponding
+batch file and codify it in \f(CW\*(C`ALTERNATE_SHEBANG\*(C'\fR (see the
+\&\fIdosish.h\fR file in the source distribution for more information).
+.PP
+The Win95/NT installation, when using the ActiveState port of Perl,
+will modify the Registry to associate the \f(CW\*(C`.pl\*(C'\fR extension with the
+perl interpreter.  If you install another port, perhaps even building
+your own Win95/NT Perl from the standard sources by using a Windows port
+of gcc (e.g., with cygwin or mingw32), then you'll have to modify
+the Registry yourself.  In addition to associating \f(CW\*(C`.pl\*(C'\fR with the
+interpreter, \s-1NT\s0 people can use: \f(CW\*(C`SET PATHEXT=%PATHEXT%;.PL\*(C'\fR to let them
+run the program \f(CW\*(C`install\-linux.pl\*(C'\fR merely by typing \f(CW\*(C`install\-linux\*(C'\fR.
+.PP
+Macintosh Perl programs will have the appropriate Creator and
+Type, so that double-clicking them will invoke the Perl application.
+.PP
+\&\fI\s-1IMPORTANT\s0!\fR: Whatever you do, \s-1PLEASE\s0 don't get frustrated, and just
+throw the perl interpreter into your cgi-bin directory, in order to
+get your programs working for a web server.  This is an \s-1EXTREMELY\s0 big
+security risk.  Take the time to figure out how to do it correctly.
+.Sh "Can I write useful Perl programs on the command line?"
+.IX Subsection "Can I write useful Perl programs on the command line?"
+Yes.  Read perlrun for more information.  Some examples follow.
+(These assume standard Unix shell quoting rules.)
+.PP
+.Vb 2
+\&    # sum first and last fields
+\&    perl -lane 'print $F[0] + $F[-1]' *
+.Ve
+.PP
+.Vb 2
+\&    # identify text files
+\&    perl -le 'for(@ARGV) {print if -f && -T _}' *
+.Ve
+.PP
+.Vb 2
+\&    # remove (most) comments from C program
+\&    perl -0777 -pe 's{/\e*.*?\e*/}{}gs' foo.c
+.Ve
+.PP
+.Vb 2
+\&    # make file a month younger than today, defeating reaper daemons
+\&    perl -e '$X=24*60*60; utime(time(),time() + 30 * $X, at ARGV)' *
+.Ve
+.PP
+.Vb 2
+\&    # find first unused uid
+\&    perl -le '$i++ while getpwuid($i); print $i'
+.Ve
+.PP
+.Vb 3
+\&    # display reasonable manpath
+\&    echo $PATH | perl -nl -072 -e '
+\&        s![^/+]*$!man!&&-d&&!$s{$_}++&&push at m,$_;END{print"@m"}'
+.Ve
+.PP
+\&\s-1OK\s0, the last one was actually an Obfuscated Perl Contest entry. :\-)
+.Sh "Why don't Perl one-liners work on my DOS/Mac/VMS system?"
+.IX Subsection "Why don't Perl one-liners work on my DOS/Mac/VMS system?"
+The problem is usually that the command interpreters on those systems
+have rather different ideas about quoting than the Unix shells under
+which the one-liners were created.  On some systems, you may have to
+change single-quotes to double ones, which you must \fI\s-1NOT\s0\fR do on Unix
+or Plan9 systems.  You might also have to change a single % to a %%.
+.PP
+For example:
+.PP
+.Vb 2
+\&    # Unix
+\&    perl -e 'print "Hello world\en"'
+.Ve
+.PP
+.Vb 2
+\&    # DOS, etc.
+\&    perl -e "print \e"Hello world\en\e""
+.Ve
+.PP
+.Vb 3
+\&    # Mac
+\&    print "Hello world\en"
+\&     (then Run "Myscript" or Shift-Command-R)
+.Ve
+.PP
+.Vb 2
+\&    # MPW
+\&    perl -e 'print "Hello world\en"'
+.Ve
+.PP
+.Vb 2
+\&    # VMS
+\&    perl -e "print ""Hello world\en"""
+.Ve
+.PP
+The problem is that none of these examples are reliable: they depend on the
+command interpreter.  Under Unix, the first two often work. Under \s-1DOS\s0,
+it's entirely possible that neither works.  If 4DOS was the command shell,
+you'd probably have better luck like this:
+.PP
+.Vb 1
+\&  perl -e "print <Ctrl-x>"Hello world\en<Ctrl-x>""
+.Ve
+.PP
+Under the Mac, it depends which environment you are using.  The MacPerl
+shell, or \s-1MPW\s0, is much like Unix shells in its support for several
+quoting variants, except that it makes free use of the Mac's non-ASCII
+characters as control characters.
+.PP
+Using \fIqq()\fR, q(), and \fIqx()\fR, instead of \*(L"double quotes\*(R", 'single
+quotes', and `backticks`, may make one-liners easier to write.
+.PP
+There is no general solution to all of this.  It is a mess.
+.PP
+[Some of this answer was contributed by Kenneth Albanowski.]
+.Sh "Where can I learn about \s-1CGI\s0 or Web programming in Perl?"
+.IX Subsection "Where can I learn about CGI or Web programming in Perl?"
+For modules, get the \s-1CGI\s0 or \s-1LWP\s0 modules from \s-1CPAN\s0.  For textbooks,
+see the two especially dedicated to web stuff in the question on
+books.  For problems and questions related to the web, like ``Why
+do I get 500 Errors'' or ``Why doesn't it run from the browser right
+when it runs fine on the command line'', see the troubleshooting
+guides and references in perlfaq9 or in the \s-1CGI\s0 MetaFAQ:
+.PP
+.Vb 1
+\&        http://www.perl.org/CGI_MetaFAQ.html
+.Ve
+.Sh "Where can I learn about object-oriented Perl programming?"
+.IX Subsection "Where can I learn about object-oriented Perl programming?"
+A good place to start is perltoot, and you can use perlobj,
+perlboot, perltoot, perltooc, and perlbot for reference.
+(If you are using really old Perl, you may not have all of these,
+try http://www.perldoc.com/ , but consider upgrading your perl.)
+.PP
+A good book on \s-1OO\s0 on Perl is the \*(L"Object\-Oriented Perl\*(R"
+by Damian Conway from Manning Publications,
+http://www.manning.com/Conway/index.html
+.Sh "Where can I learn about linking C with Perl? [h2xs, xsubpp]"
+.IX Subsection "Where can I learn about linking C with Perl? [h2xs, xsubpp]"
+If you want to call C from Perl, start with perlxstut,
+moving on to perlxs, xsubpp, and perlguts.  If you want to
+call Perl from C, then read perlembed, perlcall, and
+perlguts.  Don't forget that you can learn a lot from looking at
+how the authors of existing extension modules wrote their code and
+solved their problems.
+.Sh "I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?"
+.IX Subsection "I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?"
+Download the ExtUtils::Embed kit from \s-1CPAN\s0 and run `make test'.  If
+the tests pass, read the pods again and again and again.  If they
+fail, see perlbug and send a bug report with the output of
+\&\f(CW\*(C`make test TEST_VERBOSE=1\*(C'\fR along with \f(CW\*(C`perl \-V\*(C'\fR.
+.Sh "When I tried to run my script, I got this message. What does it mean?"
+.IX Subsection "When I tried to run my script, I got this message. What does it mean?"
+A complete list of Perl's error messages and warnings with explanatory
+text can be found in perldiag. You can also use the splain program
+(distributed with Perl) to explain the error messages:
+.PP
+.Vb 2
+\&    perl program 2>diag.out
+\&    splain [-v] [-p] diag.out
+.Ve
+.PP
+or change your program to explain the messages for you:
+.PP
+.Vb 1
+\&    use diagnostics;
+.Ve
+.PP
+or
+.PP
+.Vb 1
+\&    use diagnostics -verbose;
+.Ve
+.Sh "What's MakeMaker?"
+.IX Subsection "What's MakeMaker?"
+This module (part of the standard Perl distribution) is designed to
+write a Makefile for an extension module from a Makefile.PL.  For more
+information, see ExtUtils::MakeMaker.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2002 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples here are in the public
+domain.  You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit.  A simple comment in the code giving credit to the \s-1FAQ\s0 would
+be courteous but is not required.
diff --git a/raw/man1/perlfaq7.1 b/raw/man1/perlfaq7.1
new file mode 100644
index 0000000..10889af
--- /dev/null
+++ b/raw/man1/perlfaq7.1
@@ -0,0 +1,1182 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ7 1"
+.TH PERLFAQ7 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq7 \- General Perl Language Issues ($Revision: 1.1 $, $Date: 2004/06/16 12:41:53 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This section deals with general Perl language issues that don't
+clearly fit into any of the other sections.
+.Sh "Can I get a BNF/yacc/RE for the Perl language?"
+.IX Subsection "Can I get a BNF/yacc/RE for the Perl language?"
+There is no \s-1BNF\s0, but you can paw your way through the yacc grammar in
+perly.y in the source distribution if you're particularly brave.  The
+grammar relies on very smart tokenizing code, so be prepared to
+venture into toke.c as well.
+.PP
+In the words of Chaim Frenkel: \*(L"Perl's grammar can not be reduced to \s-1BNF\s0.
+The work of parsing perl is distributed between yacc, the lexer, smoke
+and mirrors.\*(R"
+.Sh "What are all these $@%&* punctuation signs, and how do I know when to use them?"
+.IX Subsection "What are all these $@%&* punctuation signs, and how do I know when to use them?"
+They are type specifiers, as detailed in perldata:
+.PP
+.Vb 6
+\&    $ for scalar values (number, string or reference)
+\&    @ for arrays
+\&    % for hashes (associative arrays)
+\&    & for subroutines (aka functions, procedures, methods)
+\&    * for all types of that symbol name.  In version 4 you used them like
+\&      pointers, but in modern perls you can just use references.
+.Ve
+.PP
+There are couple of other symbols that you're likely to encounter that aren't
+really type specifiers:
+.PP
+.Vb 2
+\&    <> are used for inputting a record from a filehandle.
+\&    \e  takes a reference to something.
+.Ve
+.PP
+Note that <\s-1FILE\s0> is \fIneither\fR the type specifier for files
+nor the name of the handle.  It is the \f(CW\*(C`<>\*(C'\fR operator applied
+to the handle \s-1FILE\s0.  It reads one line (well, record\*(--see
+"$/" in perlvar) from the handle \s-1FILE\s0 in scalar context, or \fIall\fR lines
+in list context.  When performing open, close, or any other operation
+besides \f(CW\*(C`<>\*(C'\fR on files, or even when talking about the handle, do
+\&\fInot\fR use the brackets.  These are correct: \f(CW\*(C`eof(FH)\*(C'\fR, \f(CW\*(C`seek(FH, 0,
+2)\*(C'\fR and \*(L"copying from \s-1STDIN\s0 to \s-1FILE\s0\*(R".
+.Sh "Do I always/never have to quote my strings or use semicolons and commas?"
+.IX Subsection "Do I always/never have to quote my strings or use semicolons and commas?"
+Normally, a bareword doesn't need to be quoted, but in most cases
+probably should be (and must be under \f(CW\*(C`use strict\*(C'\fR).  But a hash key
+consisting of a simple word (that isn't the name of a defined
+subroutine) and the left-hand operand to the \f(CW\*(C`=>\*(C'\fR operator both
+count as though they were quoted:
+.PP
+.Vb 4
+\&    This                    is like this
+\&    ------------            ---------------
+\&    $foo{line}              $foo{"line"}
+\&    bar => stuff            "bar" => stuff
+.Ve
+.PP
+The final semicolon in a block is optional, as is the final comma in a
+list.  Good style (see perlstyle) says to put them in except for
+one\-liners:
+.PP
+.Vb 2
+\&    if ($whoops) { exit 1 }
+\&    @nums = (1, 2, 3);
+.Ve
+.PP
+.Vb 7
+\&    if ($whoops) {
+\&        exit 1;
+\&    }
+\&    @lines = (
+\&        "There Beren came from mountains cold",
+\&        "And lost he wandered under leaves",
+\&    );
+.Ve
+.Sh "How do I skip some return values?"
+.IX Subsection "How do I skip some return values?"
+One way is to treat the return values as a list and index into it:
+.PP
+.Vb 1
+\&        $dir = (getpwnam($user))[7];
+.Ve
+.PP
+Another way is to use undef as an element on the left\-hand\-side:
+.PP
+.Vb 1
+\&    ($dev, $ino, undef, undef, $uid, $gid) = stat($file);
+.Ve
+.PP
+You can also use a list slice to select only the elements that
+you need:
+.PP
+.Vb 1
+\&        ($dev, $ino, $uid, $gid) = ( stat($file) )[0,1,4,5];
+.Ve
+.Sh "How do I temporarily block warnings?"
+.IX Subsection "How do I temporarily block warnings?"
+If you are running Perl 5.6.0 or better, the \f(CW\*(C`use warnings\*(C'\fR pragma
+allows fine control of what warning are produced.
+See perllexwarn for more details.
+.PP
+.Vb 4
+\&    {
+\&        no warnings;          # temporarily turn off warnings
+\&        $a = $b + $c;         # I know these might be undef
+\&    }
+.Ve
+.PP
+If you have an older version of Perl, the \f(CW$^W\fR variable (documented
+in perlvar) controls runtime warnings for a block:
+.PP
+.Vb 4
+\&    {
+\&        local $^W = 0;        # temporarily turn off warnings
+\&        $a = $b + $c;         # I know these might be undef
+\&    }
+.Ve
+.PP
+Note that like all the punctuation variables, you cannot currently
+use \fImy()\fR on \f(CW$^W\fR, only \fIlocal()\fR.
+.Sh "What's an extension?"
+.IX Subsection "What's an extension?"
+An extension is a way of calling compiled C code from Perl.  Reading
+perlxstut is a good place to learn more about extensions.
+.Sh "Why do Perl operators have different precedence than C operators?"
+.IX Subsection "Why do Perl operators have different precedence than C operators?"
+Actually, they don't.  All C operators that Perl copies have the same
+precedence in Perl as they do in C.  The problem is with operators that C
+doesn't have, especially functions that give a list context to everything
+on their right, eg. print, chmod, exec, and so on.  Such functions are
+called \*(L"list operators\*(R" and appear as such in the precedence table in
+perlop.
+.PP
+A common mistake is to write:
+.PP
+.Vb 1
+\&    unlink $file || die "snafu";
+.Ve
+.PP
+This gets interpreted as:
+.PP
+.Vb 1
+\&    unlink ($file || die "snafu");
+.Ve
+.PP
+To avoid this problem, either put in extra parentheses or use the
+super low precedence \f(CW\*(C`or\*(C'\fR operator:
+.PP
+.Vb 2
+\&    (unlink $file) || die "snafu";
+\&    unlink $file or die "snafu";
+.Ve
+.PP
+The \*(L"English\*(R" operators (\f(CW\*(C`and\*(C'\fR, \f(CW\*(C`or\*(C'\fR, \f(CW\*(C`xor\*(C'\fR, and \f(CW\*(C`not\*(C'\fR)
+deliberately have precedence lower than that of list operators for
+just such situations as the one above.
+.PP
+Another operator with surprising precedence is exponentiation.  It
+binds more tightly even than unary minus, making \f(CW\*(C`\-2**2\*(C'\fR product a
+negative not a positive four.  It is also right\-associating, meaning
+that \f(CW\*(C`2**3**2\*(C'\fR is two raised to the ninth power, not eight squared.
+.PP
+Although it has the same precedence as in C, Perl's \f(CW\*(C`?:\*(C'\fR operator
+produces an lvalue.  This assigns \f(CW$x\fR to either \f(CW$a\fR or \f(CW$b\fR, depending
+on the trueness of \f(CW$maybe:\fR
+.PP
+.Vb 1
+\&    ($maybe ? $a : $b) = $x;
+.Ve
+.Sh "How do I declare/create a structure?"
+.IX Subsection "How do I declare/create a structure?"
+In general, you don't \*(L"declare\*(R" a structure.  Just use a (probably
+anonymous) hash reference.  See perlref and perldsc for details.
+Here's an example:
+.PP
+.Vb 3
+\&    $person = {};                   # new anonymous hash
+\&    $person->{AGE}  = 24;           # set field AGE to 24
+\&    $person->{NAME} = "Nat";        # set field NAME to "Nat"
+.Ve
+.PP
+If you're looking for something a bit more rigorous, try perltoot.
+.Sh "How do I create a module?"
+.IX Subsection "How do I create a module?"
+A module is a package that lives in a file of the same name.  For
+example, the Hello::There module would live in Hello/There.pm.  For
+details, read perlmod.  You'll also find Exporter helpful.  If
+you're writing a C or mixed-language module with both C and Perl, then
+you should study perlxstut.
+.PP
+The \f(CW\*(C`h2xs\*(C'\fR program will create stubs for all the important stuff for you:
+.PP
+.Vb 1
+\&  % h2xs -XA -n My::Module
+.Ve
+.PP
+The \f(CW\*(C`\-X\*(C'\fR switch tells \f(CW\*(C`h2xs\*(C'\fR that you are not using \f(CW\*(C`XS\*(C'\fR extension
+code.  The \f(CW\*(C`\-A\*(C'\fR switch tells \f(CW\*(C`h2xs\*(C'\fR that you are not using the
+AutoLoader, and the \f(CW\*(C`\-n\*(C'\fR switch specifies the name of the module.
+See h2xs for more details.
+.Sh "How do I create a class?"
+.IX Subsection "How do I create a class?"
+See perltoot for an introduction to classes and objects, as well as
+perlobj and perlbot.
+.Sh "How can I tell if a variable is tainted?"
+.IX Subsection "How can I tell if a variable is tainted?"
+You can use the \fItainted()\fR function of the Scalar::Util module, available
+from \s-1CPAN\s0 (or included with Perl since release 5.8.0).
+See also \*(L"Laundering and Detecting Tainted Data\*(R" in perlsec.
+.Sh "What's a closure?"
+.IX Subsection "What's a closure?"
+Closures are documented in perlref.
+.PP
+\&\fIClosure\fR is a computer science term with a precise but
+hard-to-explain meaning. Closures are implemented in Perl as anonymous
+subroutines with lasting references to lexical variables outside their
+own scopes.  These lexicals magically refer to the variables that were
+around when the subroutine was defined (deep binding).
+.PP
+Closures make sense in any programming language where you can have the
+return value of a function be itself a function, as you can in Perl.
+Note that some languages provide anonymous functions but are not
+capable of providing proper closures: the Python language, for
+example.  For more information on closures, check out any textbook on
+functional programming.  Scheme is a language that not only supports
+but encourages closures.
+.PP
+Here's a classic function-generating function:
+.PP
+.Vb 3
+\&    sub add_function_generator {
+\&      return sub { shift + shift };
+\&    }
+.Ve
+.PP
+.Vb 2
+\&    $add_sub = add_function_generator();
+\&    $sum = $add_sub->(4,5);                # $sum is 9 now.
+.Ve
+.PP
+The closure works as a \fIfunction template\fR with some customization
+slots left out to be filled later.  The anonymous subroutine returned
+by \fIadd_function_generator()\fR isn't technically a closure because it
+refers to no lexicals outside its own scope.
+.PP
+Contrast this with the following \fImake_adder()\fR function, in which the
+returned anonymous function contains a reference to a lexical variable
+outside the scope of that function itself.  Such a reference requires
+that Perl return a proper closure, thus locking in for all time the
+value that the lexical had when the function was created.
+.PP
+.Vb 4
+\&    sub make_adder {
+\&        my $addpiece = shift;
+\&        return sub { shift + $addpiece };
+\&    }
+.Ve
+.PP
+.Vb 2
+\&    $f1 = make_adder(20);
+\&    $f2 = make_adder(555);
+.Ve
+.PP
+Now \f(CW\*(C`&$f1($n)\*(C'\fR is always 20 plus whatever \f(CW$n\fR you pass in, whereas
+\&\f(CW\*(C`&$f2($n)\*(C'\fR is always 555 plus whatever \f(CW$n\fR you pass in.  The \f(CW$addpiece\fR
+in the closure sticks around.
+.PP
+Closures are often used for less esoteric purposes.  For example, when
+you want to pass in a bit of code into a function:
+.PP
+.Vb 2
+\&    my $line;
+\&    timeout( 30, sub { $line = <STDIN> } );
+.Ve
+.PP
+If the code to execute had been passed in as a string,
+\&\f(CW'$line = <STDIN>'\fR, there would have been no way for the
+hypothetical \fItimeout()\fR function to access the lexical variable
+\&\f(CW$line\fR back in its caller's scope.
+.Sh "What is variable suicide and how can I prevent it?"
+.IX Subsection "What is variable suicide and how can I prevent it?"
+Variable suicide is when you (temporarily or permanently) lose the
+value of a variable.  It is caused by scoping through \fImy()\fR and \fIlocal()\fR
+interacting with either closures or aliased \fIforeach()\fR iterator
+variables and subroutine arguments.  It used to be easy to
+inadvertently lose a variable's value this way, but now it's much
+harder.  Take this code:
+.PP
+.Vb 6
+\&    my $f = "foo";
+\&    sub T {
+\&      while ($i++ < 3) { my $f = $f; $f .= "bar"; print $f, "\en" }
+\&    }
+\&    T;
+\&    print "Finally $f\en";
+.Ve
+.PP
+The \f(CW$f\fR that has \*(L"bar\*(R" added to it three times should be a new \f(CW$f\fR
+(\f(CW\*(C`my $f\*(C'\fR should create a new local variable each time through the loop).
+It isn't, however.  This was a bug, now fixed in the latest releases
+(tested against 5.004_05, 5.005_03, and 5.005_56).
+.Sh "How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?"
+.IX Subsection "How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?"
+With the exception of regexes, you need to pass references to these
+objects.  See \*(L"Pass by Reference\*(R" in perlsub for this particular
+question, and perlref for information on references.
+.PP
+See ``Passing Regexes'', below, for information on passing regular
+expressions.
+.IP "Passing Variables and Functions" 4
+.IX Item "Passing Variables and Functions"
+Regular variables and functions are quite easy to pass: just pass in a
+reference to an existing or anonymous variable or function:
+.Sp
+.Vb 1
+\&    func( \e$some_scalar );
+.Ve
+.Sp
+.Vb 2
+\&    func( \e at some_array  );
+\&    func( [ 1 .. 10 ]   );
+.Ve
+.Sp
+.Vb 2
+\&    func( \e%some_hash   );
+\&    func( { this => 10, that => 20 }   );
+.Ve
+.Sp
+.Vb 2
+\&    func( \e&some_func   );
+\&    func( sub { $_[0] ** $_[1] }   );
+.Ve
+.IP "Passing Filehandles" 4
+.IX Item "Passing Filehandles"
+As of Perl 5.6, you can represent filehandles with scalar variables
+which you treat as any other scalar.
+.Sp
+.Vb 2
+\&        open my $fh, $filename or die "Cannot open $filename! $!";
+\&        func( $fh );
+.Ve
+.Sp
+.Vb 2
+\&        sub func {
+\&                my $passed_fh = shift;
+.Ve
+.Sp
+.Vb 2
+\&                my $line = <$fh>;
+\&                }
+.Ve
+.Sp
+Before Perl 5.6, you had to use the \f(CW*FH\fR or \f(CW\*(C`\e*FH\*(C'\fR notations.
+These are \*(L"typeglobs\*(R"\-\-see \*(L"Typeglobs and Filehandles\*(R" in perldata
+and especially \*(L"Pass by Reference\*(R" in perlsub for more information.
+.IP "Passing Regexes" 4
+.IX Item "Passing Regexes"
+To pass regexes around, you'll need to be using a release of Perl
+sufficiently recent as to support the \f(CW\*(C`qr//\*(C'\fR construct, pass around
+strings and use an exception-trapping eval, or else be very, very clever.
+.Sp
+Here's an example of how to pass in a string to be regex compared
+using \f(CW\*(C`qr//\*(C'\fR:
+.Sp
+.Vb 6
+\&    sub compare($$) {
+\&        my ($val1, $regex) = @_;
+\&        my $retval = $val1 =~ /$regex/;
+\&        return $retval;
+\&    }
+\&    $match = compare("old McDonald", qr/d.*D/i);
+.Ve
+.Sp
+Notice how \f(CW\*(C`qr//\*(C'\fR allows flags at the end.  That pattern was compiled
+at compile time, although it was executed later.  The nifty \f(CW\*(C`qr//\*(C'\fR
+notation wasn't introduced until the 5.005 release.  Before that, you
+had to approach this problem much less intuitively.  For example, here
+it is again if you don't have \f(CW\*(C`qr//\*(C'\fR:
+.Sp
+.Vb 6
+\&    sub compare($$) {
+\&        my ($val1, $regex) = @_;
+\&        my $retval = eval { $val1 =~ /$regex/ };
+\&        die if $@;
+\&        return $retval;
+\&    }
+.Ve
+.Sp
+.Vb 1
+\&    $match = compare("old McDonald", q/($?i)d.*D/);
+.Ve
+.Sp
+Make sure you never say something like this:
+.Sp
+.Vb 1
+\&    return eval "\e$val =~ /$regex/";   # WRONG
+.Ve
+.Sp
+or someone can sneak shell escapes into the regex due to the double
+interpolation of the eval and the double-quoted string.  For example:
+.Sp
+.Vb 1
+\&    $pattern_of_evil = 'danger ${ system("rm -rf * &") } danger';
+.Ve
+.Sp
+.Vb 1
+\&    eval "\e$string =~ /$pattern_of_evil/";
+.Ve
+.Sp
+Those preferring to be very, very clever might see the O'Reilly book,
+\&\fIMastering Regular Expressions\fR, by Jeffrey Friedl.  Page 273's
+\&\fIBuild_MatchMany_Function()\fR is particularly interesting.  A complete
+citation of this book is given in perlfaq2.
+.IP "Passing Methods" 4
+.IX Item "Passing Methods"
+To pass an object method into a subroutine, you can do this:
+.Sp
+.Vb 7
+\&    call_a_lot(10, $some_obj, "methname")
+\&    sub call_a_lot {
+\&        my ($count, $widget, $trick) = @_;
+\&        for (my $i = 0; $i < $count; $i++) {
+\&            $widget->$trick();
+\&        }
+\&    }
+.Ve
+.Sp
+Or, you can use a closure to bundle up the object, its
+method call, and arguments:
+.Sp
+.Vb 6
+\&    my $whatnot =  sub { $some_obj->obfuscate(@args) };
+\&    func($whatnot);
+\&    sub func {
+\&        my $code = shift;
+\&        &$code();
+\&    }
+.Ve
+.Sp
+You could also investigate the \fIcan()\fR method in the \s-1UNIVERSAL\s0 class
+(part of the standard perl distribution).
+.Sh "How do I create a static variable?"
+.IX Subsection "How do I create a static variable?"
+As with most things in Perl, \s-1TMTOWTDI\s0.  What is a \*(L"static variable\*(R" in
+other languages could be either a function-private variable (visible
+only within a single function, retaining its value between calls to
+that function), or a file-private variable (visible only to functions
+within the file it was declared in) in Perl.
+.PP
+Here's code to implement a function-private variable:
+.PP
+.Vb 5
+\&    BEGIN {
+\&        my $counter = 42;
+\&        sub prev_counter { return --$counter }
+\&        sub next_counter { return $counter++ }
+\&    }
+.Ve
+.PP
+Now \fIprev_counter()\fR and \fInext_counter()\fR share a private variable \f(CW$counter\fR
+that was initialized at compile time.
+.PP
+To declare a file-private variable, you'll still use a \fImy()\fR, putting
+the declaration at the outer scope level at the top of the file.
+Assume this is in file Pax.pm:
+.PP
+.Vb 2
+\&    package Pax;
+\&    my $started = scalar(localtime(time()));
+.Ve
+.PP
+.Vb 1
+\&    sub begun { return $started }
+.Ve
+.PP
+When \f(CW\*(C`use Pax\*(C'\fR or \f(CW\*(C`require Pax\*(C'\fR loads this module, the variable will
+be initialized.  It won't get garbage-collected the way most variables
+going out of scope do, because the \fIbegun()\fR function cares about it,
+but no one else can get it.  It is not called \f(CW$Pax::started\fR because
+its scope is unrelated to the package.  It's scoped to the file.  You
+could conceivably have several packages in that same file all
+accessing the same private variable, but another file with the same
+package couldn't get to it.
+.PP
+See \*(L"Persistent Private Variables\*(R" in perlsub for details.
+.Sh "What's the difference between dynamic and lexical (static) scoping?  Between \fIlocal()\fP and \fImy()\fP?"
+.IX Subsection "What's the difference between dynamic and lexical (static) scoping?  Between local() and my()?"
+\&\f(CW\*(C`local($x)\*(C'\fR saves away the old value of the global variable \f(CW$x\fR
+and assigns a new value for the duration of the subroutine \fIwhich is
+visible in other functions called from that subroutine\fR.  This is done
+at run\-time, so is called dynamic scoping.  \fIlocal()\fR always affects global
+variables, also called package variables or dynamic variables.
+.PP
+\&\f(CW\*(C`my($x)\*(C'\fR creates a new variable that is only visible in the current
+subroutine.  This is done at compile\-time, so it is called lexical or
+static scoping.  \fImy()\fR always affects private variables, also called
+lexical variables or (improperly) static(ly scoped) variables.
+.PP
+For instance:
+.PP
+.Vb 3
+\&    sub visible {
+\&        print "var has value $var\en";
+\&    }
+.Ve
+.PP
+.Vb 4
+\&    sub dynamic {
+\&        local $var = 'local';   # new temporary value for the still-global
+\&        visible();              #   variable called $var
+\&    }
+.Ve
+.PP
+.Vb 4
+\&    sub lexical {
+\&        my $var = 'private';    # new private variable, $var
+\&        visible();              # (invisible outside of sub scope)
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    $var = 'global';
+.Ve
+.PP
+.Vb 3
+\&    visible();                  # prints global
+\&    dynamic();                  # prints local
+\&    lexical();                  # prints global
+.Ve
+.PP
+Notice how at no point does the value \*(L"private\*(R" get printed.  That's
+because \f(CW$var\fR only has that value within the block of the \fIlexical()\fR
+function, and it is hidden from called subroutine.
+.PP
+In summary, \fIlocal()\fR doesn't make what you think of as private, local
+variables.  It gives a global variable a temporary value.  \fImy()\fR is
+what you're looking for if you want private variables.
+.PP
+See \*(L"Private Variables via \fImy()\fR\*(R" in perlsub and
+\&\*(L"Temporary Values via \fIlocal()\fR\*(R" in perlsub for excruciating details.
+.Sh "How can I access a dynamic variable while a similarly named lexical is in scope?"
+.IX Subsection "How can I access a dynamic variable while a similarly named lexical is in scope?"
+If you know your package, you can just mention it explicitly, as in
+\&\f(CW$Some_Pack::var\fR. Note that the notation \f(CW$::var\fR is \fBnot\fR the dynamic \f(CW$var\fR
+in the current package, but rather the one in the \*(L"main\*(R" package, as
+though you had written \f(CW$main::var\fR.
+.PP
+.Vb 3
+\&        use vars '$var';
+\&        local $var = "global";
+\&        my    $var = "lexical";
+.Ve
+.PP
+.Vb 2
+\&        print "lexical is $var\en";
+\&        print "global  is $main::var\en";
+.Ve
+.PP
+Alternatively you can use the compiler directive \fIour()\fR to bring a
+dynamic variable into the current lexical scope.
+.PP
+.Vb 2
+\&        require 5.006; # our() did not exist before 5.6
+\&        use vars '$var';
+.Ve
+.PP
+.Vb 2
+\&        local $var = "global";
+\&        my $var    = "lexical";
+.Ve
+.PP
+.Vb 1
+\&        print "lexical is $var\en";
+.Ve
+.PP
+.Vb 4
+\&        {
+\&          our $var;
+\&          print "global  is $var\en";
+\&        }
+.Ve
+.Sh "What's the difference between deep and shallow binding?"
+.IX Subsection "What's the difference between deep and shallow binding?"
+In deep binding, lexical variables mentioned in anonymous subroutines
+are the same ones that were in scope when the subroutine was created.
+In shallow binding, they are whichever variables with the same names
+happen to be in scope when the subroutine is called.  Perl always uses
+deep binding of lexical variables (i.e., those created with \fImy()\fR).
+However, dynamic variables (aka global, local, or package variables)
+are effectively shallowly bound.  Consider this just one more reason
+not to use them.  See the answer to \*(L"What's a closure?\*(R".
+.ie n .Sh "Why doesn't ""my($foo) = <\s-1FILE\s0>;"" work right?"
+.el .Sh "Why doesn't ``my($foo) = <\s-1FILE\s0>;'' work right?"
+.IX Subsection "Why doesn't ""my($foo) = <FILE>;"" work right?"
+\&\f(CW\*(C`my()\*(C'\fR and \f(CW\*(C`local()\*(C'\fR give list context to the right hand side
+of \f(CW\*(C`=\*(C'\fR.  The <\s-1FH\s0> read operation, like so many of Perl's
+functions and operators, can tell which context it was called in and
+behaves appropriately.  In general, the \fIscalar()\fR function can help.
+This function does nothing to the data itself (contrary to popular myth)
+but rather tells its argument to behave in whatever its scalar fashion is.
+If that function doesn't have a defined scalar behavior, this of course
+doesn't help you (such as with \fIsort()\fR).
+.PP
+To enforce scalar context in this particular case, however, you need
+merely omit the parentheses:
+.PP
+.Vb 3
+\&    local($foo) = <FILE>;           # WRONG
+\&    local($foo) = scalar(<FILE>);   # ok
+\&    local $foo  = <FILE>;           # right
+.Ve
+.PP
+You should probably be using lexical variables anyway, although the
+issue is the same here:
+.PP
+.Vb 2
+\&    my($foo) = <FILE>;  # WRONG
+\&    my $foo  = <FILE>;  # right
+.Ve
+.Sh "How do I redefine a builtin function, operator, or method?"
+.IX Subsection "How do I redefine a builtin function, operator, or method?"
+Why do you want to do that? :\-)
+.PP
+If you want to override a predefined function, such as \fIopen()\fR,
+then you'll have to import the new definition from a different
+module.  See \*(L"Overriding Built-in Functions\*(R" in perlsub.  There's
+also an example in \*(L"Class::Template\*(R" in perltoot.
+.PP
+If you want to overload a Perl operator, such as \f(CW\*(C`+\*(C'\fR or \f(CW\*(C`**\*(C'\fR,
+then you'll want to use the \f(CW\*(C`use overload\*(C'\fR pragma, documented
+in overload.
+.PP
+If you're talking about obscuring method calls in parent classes,
+see \*(L"Overridden Methods\*(R" in perltoot.
+.Sh "What's the difference between calling a function as &foo and \fIfoo()\fP?"
+.IX Subsection "What's the difference between calling a function as &foo and foo()?"
+When you call a function as \f(CW&foo\fR, you allow that function access to
+your current \f(CW at _\fR values, and you bypass prototypes.
+The function doesn't get an empty \f(CW at _\fR\-\-it gets yours!  While not
+strictly speaking a bug (it's documented that way in perlsub), it
+would be hard to consider this a feature in most cases.
+.PP
+When you call your function as \f(CW\*(C`&foo()\*(C'\fR, then you \fIdo\fR get a new \f(CW at _\fR,
+but prototyping is still circumvented.
+.PP
+Normally, you want to call a function using \f(CW\*(C`foo()\*(C'\fR.  You may only
+omit the parentheses if the function is already known to the compiler
+because it already saw the definition (\f(CW\*(C`use\*(C'\fR but not \f(CW\*(C`require\*(C'\fR),
+or via a forward reference or \f(CW\*(C`use subs\*(C'\fR declaration.  Even in this
+case, you get a clean \f(CW at _\fR without any of the old values leaking through
+where they don't belong.
+.Sh "How do I create a switch or case statement?"
+.IX Subsection "How do I create a switch or case statement?"
+This is explained in more depth in the perlsyn.  Briefly, there's
+no official case statement, because of the variety of tests possible
+in Perl (numeric comparison, string comparison, glob comparison,
+regex matching, overloaded comparisons, ...).
+Larry couldn't decide how best to do this, so he left it out, even
+though it's been on the wish list since perl1.
+.PP
+Starting from Perl 5.8 to get switch and case one can use the
+Switch extension and say:
+.PP
+.Vb 1
+\&        use Switch;
+.Ve
+.PP
+after which one has switch and case.  It is not as fast as it could be
+because it's not really part of the language (it's done using source
+filters) but it is available, and it's very flexible.
+.PP
+But if one wants to use pure Perl, the general answer is to write a
+construct like this:
+.PP
+.Vb 6
+\&    for ($variable_to_test) {
+\&        if    (/pat1/)  { }     # do something
+\&        elsif (/pat2/)  { }     # do something else
+\&        elsif (/pat3/)  { }     # do something else
+\&        else            { }     # default
+\&    }
+.Ve
+.PP
+Here's a simple example of a switch based on pattern matching, this
+time lined up in a way to make it look more like a switch statement.
+We'll do a multiway conditional based on the type of reference stored
+in \f(CW$whatchamacallit:\fR
+.PP
+.Vb 1
+\&    SWITCH: for (ref $whatchamacallit) {
+.Ve
+.PP
+.Vb 1
+\&        /^$/            && die "not a reference";
+.Ve
+.PP
+.Vb 4
+\&        /SCALAR/        && do {
+\&                                print_scalar($$ref);
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 4
+\&        /ARRAY/         && do {
+\&                                print_array(@$ref);
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 4
+\&        /HASH/          && do {
+\&                                print_hash(%$ref);
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 4
+\&        /CODE/          && do {
+\&                                warn "can't print function ref";
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 1
+\&        # DEFAULT
+.Ve
+.PP
+.Vb 1
+\&        warn "User defined type skipped";
+.Ve
+.PP
+.Vb 1
+\&    }
+.Ve
+.PP
+See \f(CW\*(C`perlsyn/"Basic BLOCKs and Switch Statements"\*(C'\fR for many other
+examples in this style.
+.PP
+Sometimes you should change the positions of the constant and the variable.
+For example, let's say you wanted to test which of many answers you were
+given, but in a case-insensitive way that also allows abbreviations.
+You can use the following technique if the strings all start with
+different characters or if you want to arrange the matches so that
+one takes precedence over another, as \f(CW"SEND"\fR has precedence over
+\&\f(CW"STOP"\fR here:
+.PP
+.Vb 6
+\&    chomp($answer = <>);
+\&    if    ("SEND"  =~ /^\eQ$answer/i) { print "Action is send\en"  }
+\&    elsif ("STOP"  =~ /^\eQ$answer/i) { print "Action is stop\en"  }
+\&    elsif ("ABORT" =~ /^\eQ$answer/i) { print "Action is abort\en" }
+\&    elsif ("LIST"  =~ /^\eQ$answer/i) { print "Action is list\en"  }
+\&    elsif ("EDIT"  =~ /^\eQ$answer/i) { print "Action is edit\en"  }
+.Ve
+.PP
+A totally different approach is to create a hash of function references.
+.PP
+.Vb 6
+\&    my %commands = (
+\&        "happy" => \e&joy,
+\&        "sad",  => \e&sullen,
+\&        "done"  => sub { die "See ya!" },
+\&        "mad"   => \e&angry,
+\&    );
+.Ve
+.PP
+.Vb 7
+\&    print "How are you? ";
+\&    chomp($string = <STDIN>);
+\&    if ($commands{$string}) {
+\&        $commands{$string}->();
+\&    } else {
+\&        print "No such command: $string\en";
+\&    }
+.Ve
+.Sh "How can I catch accesses to undefined variables, functions, or methods?"
+.IX Subsection "How can I catch accesses to undefined variables, functions, or methods?"
+The \s-1AUTOLOAD\s0 method, discussed in \*(L"Autoloading\*(R" in perlsub and
+\&\*(L"\s-1AUTOLOAD:\s0 Proxy Methods\*(R" in perltoot, lets you capture calls to
+undefined functions and methods.
+.PP
+When it comes to undefined variables that would trigger a warning
+under \f(CW\*(C`use warnings\*(C'\fR, you can promote the warning to an error.
+.PP
+.Vb 1
+\&        use warnings FATAL => qw(uninitialized);
+.Ve
+.Sh "Why can't a method included in this same file be found?"
+.IX Subsection "Why can't a method included in this same file be found?"
+Some possible reasons: your inheritance is getting confused, you've
+misspelled the method name, or the object is of the wrong type.  Check
+out perltoot for details about any of the above cases.  You may
+also use \f(CW\*(C`print ref($object)\*(C'\fR to find out the class \f(CW$object\fR was
+blessed into.
+.PP
+Another possible reason for problems is because you've used the
+indirect object syntax (eg, \f(CW\*(C`find Guru "Samy"\*(C'\fR) on a class name
+before Perl has seen that such a package exists.  It's wisest to make
+sure your packages are all defined before you start using them, which
+will be taken care of if you use the \f(CW\*(C`use\*(C'\fR statement instead of
+\&\f(CW\*(C`require\*(C'\fR.  If not, make sure to use arrow notation (eg.,
+\&\f(CW\*(C`Guru\->find("Samy")\*(C'\fR) instead.  Object notation is explained in
+perlobj.
+.PP
+Make sure to read about creating modules in perlmod and
+the perils of indirect objects in \*(L"Method Invocation\*(R" in perlobj.
+.Sh "How can I find out my current package?"
+.IX Subsection "How can I find out my current package?"
+If you're just a random program, you can do this to find
+out what the currently compiled package is:
+.PP
+.Vb 1
+\&    my $packname = __PACKAGE__;
+.Ve
+.PP
+But, if you're a method and you want to print an error message
+that includes the kind of object you were called on (which is
+not necessarily the same as the one in which you were compiled):
+.PP
+.Vb 5
+\&    sub amethod {
+\&        my $self  = shift;
+\&        my $class = ref($self) || $self;
+\&        warn "called me from a $class object";
+\&    }
+.Ve
+.Sh "How can I comment out a large block of perl code?"
+.IX Subsection "How can I comment out a large block of perl code?"
+You can use embedded \s-1POD\s0 to discard it.  Enclose the blocks you want
+to comment out in \s-1POD\s0 markers, for example \f(CW\*(C`=for nobody\*(C'\fR and \f(CW\*(C`=cut\*(C'\fR
+(which marks ends of \s-1POD\s0 blocks).
+.PP
+.Vb 1
+\&    # program is here
+.Ve
+.PP
+.Vb 1
+\&    =for nobody
+.Ve
+.PP
+.Vb 1
+\&    all of this stuff
+.Ve
+.PP
+.Vb 2
+\&    here will be ignored
+\&    by everyone
+.Ve
+.PP
+.Vb 1
+\&    =cut
+.Ve
+.PP
+.Vb 1
+\&    # program continues
+.Ve
+.PP
+The pod directives cannot go just anywhere.  You must put a
+pod directive where the parser is expecting a new statement,
+not just in the middle of an expression or some other
+arbitrary grammar production.
+.PP
+See perlpod for more details.
+.Sh "How do I clear a package?"
+.IX Subsection "How do I clear a package?"
+Use this code, provided by Mark-Jason Dominus:
+.PP
+.Vb 17
+\&    sub scrub_package {
+\&        no strict 'refs';
+\&        my $pack = shift;
+\&        die "Shouldn't delete main package"
+\&            if $pack eq "" || $pack eq "main";
+\&        my $stash = *{$pack . '::'}{HASH};
+\&        my $name;
+\&        foreach $name (keys %$stash) {
+\&            my $fullname = $pack . '::' . $name;
+\&            # Get rid of everything with that name.
+\&            undef $$fullname;
+\&            undef @$fullname;
+\&            undef %$fullname;
+\&            undef &$fullname;
+\&            undef *$fullname;
+\&        }
+\&    }
+.Ve
+.PP
+Or, if you're using a recent release of Perl, you can
+just use the \fISymbol::delete_package()\fR function instead.
+.Sh "How can I use a variable as a variable name?"
+.IX Subsection "How can I use a variable as a variable name?"
+Beginners often think they want to have a variable contain the name
+of a variable.
+.PP
+.Vb 3
+\&    $fred    = 23;
+\&    $varname = "fred";
+\&    ++$$varname;         # $fred now 24
+.Ve
+.PP
+This works \fIsometimes\fR, but it is a very bad idea for two reasons.
+.PP
+The first reason is that this technique \fIonly works on global
+variables\fR.  That means that if \f(CW$fred\fR is a lexical variable created
+with \fImy()\fR in the above example, the code wouldn't work at all: you'd
+accidentally access the global and skip right over the private lexical
+altogether.  Global variables are bad because they can easily collide
+accidentally and in general make for non-scalable and confusing code.
+.PP
+Symbolic references are forbidden under the \f(CW\*(C`use strict\*(C'\fR pragma.
+They are not true references and consequently are not reference counted
+or garbage collected.
+.PP
+The other reason why using a variable to hold the name of another
+variable is a bad idea is that the question often stems from a lack of
+understanding of Perl data structures, particularly hashes.  By using
+symbolic references, you are just using the package's symbol-table hash
+(like \f(CW%main::\fR) instead of a user-defined hash.  The solution is to
+use your own hash or a real reference instead.
+.PP
+.Vb 3
+\&    $USER_VARS{"fred"} = 23;
+\&    $varname = "fred";
+\&    $USER_VARS{$varname}++;  # not $$varname++
+.Ve
+.PP
+There we're using the \f(CW%USER_VARS\fR hash instead of symbolic references.
+Sometimes this comes up in reading strings from the user with variable
+references and wanting to expand them to the values of your perl
+program's variables.  This is also a bad idea because it conflates the
+program-addressable namespace and the user-addressable one.  Instead of
+reading a string and expanding it to the actual contents of your program's
+own variables:
+.PP
+.Vb 2
+\&    $str = 'this has a $fred and $barney in it';
+\&    $str =~ s/(\e$\ew+)/$1/eeg;             # need double eval
+.Ve
+.PP
+it would be better to keep a hash around like \f(CW%USER_VARS\fR and have
+variable references actually refer to entries in that hash:
+.PP
+.Vb 1
+\&    $str =~ s/\e$(\ew+)/$USER_VARS{$1}/g;   # no /e here at all
+.Ve
+.PP
+That's faster, cleaner, and safer than the previous approach.  Of course,
+you don't need to use a dollar sign.  You could use your own scheme to
+make it less confusing, like bracketed percent symbols, etc.
+.PP
+.Vb 2
+\&    $str = 'this has a %fred% and %barney% in it';
+\&    $str =~ s/%(\ew+)%/$USER_VARS{$1}/g;   # no /e here at all
+.Ve
+.PP
+Another reason that folks sometimes think they want a variable to
+contain the name of a variable is because they don't know how to build
+proper data structures using hashes.  For example, let's say they
+wanted two hashes in their program: \f(CW%fred\fR and \f(CW%barney\fR, and that they
+wanted to use another scalar variable to refer to those by name.
+.PP
+.Vb 2
+\&    $name = "fred";
+\&    $$name{WIFE} = "wilma";     # set %fred
+.Ve
+.PP
+.Vb 2
+\&    $name = "barney";
+\&    $$name{WIFE} = "betty";     # set %barney
+.Ve
+.PP
+This is still a symbolic reference, and is still saddled with the
+problems enumerated above.  It would be far better to write:
+.PP
+.Vb 2
+\&    $folks{"fred"}{WIFE}   = "wilma";
+\&    $folks{"barney"}{WIFE} = "betty";
+.Ve
+.PP
+And just use a multilevel hash to start with.
+.PP
+The only times that you absolutely \fImust\fR use symbolic references are
+when you really must refer to the symbol table.  This may be because it's
+something that can't take a real reference to, such as a format name.
+Doing so may also be important for method calls, since these always go
+through the symbol table for resolution.
+.PP
+In those cases, you would turn off \f(CW\*(C`strict 'refs'\*(C'\fR temporarily so you
+can play around with the symbol table.  For example:
+.PP
+.Vb 5
+\&    @colors = qw(red blue green yellow orange purple violet);
+\&    for my $name (@colors) {
+\&        no strict 'refs';  # renege for the block
+\&        *$name = sub { "<FONT COLOR='$name'>@_</FONT>" };
+\&    }
+.Ve
+.PP
+All those functions (\fIred()\fR, \fIblue()\fR, \fIgreen()\fR, etc.) appear to be separate,
+but the real code in the closure actually was compiled only once.
+.PP
+So, sometimes you might want to use symbolic references to directly
+manipulate the symbol table.  This doesn't matter for formats, handles, and
+subroutines, because they are always global\*(--you can't use \fImy()\fR on them.
+For scalars, arrays, and hashes, though\*(--and usually for subroutines\*(--
+you probably only want to use hard references.
+.ie n .Sh "What does ""bad interpreter"" mean?"
+.el .Sh "What does ``bad interpreter'' mean?"
+.IX Subsection "What does bad interpreter mean?"
+The \*(L"bad interpreter\*(R" message comes from the shell, not perl.  The
+actual message may vary depending on your platform, shell, and locale
+settings.
+.PP
+If you see \*(L"bad interpreter \- no such file or directory\*(R", the first
+line in your perl script (the \*(L"shebang\*(R" line) does not contain the
+right path to perl (or any other program capable of running scripts). 
+Sometimes this happens when you move the script from one machine to
+another and each machine has a different path to perl\-\-\-/usr/bin/perl
+versus /usr/local/bin/perl for instance.
+.PP
+If you see \*(L"bad interpreter: Permission denied\*(R", you need to make your
+script executable.
+.PP
+In either case, you should still be able to run the scripts with perl
+explicitly:
+.PP
+.Vb 1
+\&        % perl script.pl
+.Ve
+.PP
+If you get a message like \*(L"perl: command not found\*(R", perl is not in
+your \s-1PATH\s0, which might also mean that the location of perl is not
+where you expect it so you need to adjust your shebang line.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2002 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
diff --git a/raw/man1/perlfaq8.1 b/raw/man1/perlfaq8.1
new file mode 100644
index 0000000..c387375
--- /dev/null
+++ b/raw/man1/perlfaq8.1
@@ -0,0 +1,1420 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ8 1"
+.TH PERLFAQ8 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq8 \- System Interaction ($Revision: 1.1 $, $Date: 2004/06/16 12:41:53 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This section of the Perl \s-1FAQ\s0 covers questions involving operating
+system interaction.  Topics include interprocess communication (\s-1IPC\s0),
+control over the user-interface (keyboard, screen and pointing
+devices), and most anything else not related to data manipulation.
+.PP
+Read the FAQs and documentation specific to the port of perl to your
+operating system (eg, perlvms, perlplan9, ...).  These should
+contain more detailed information on the vagaries of your perl.
+.Sh "How do I find out which operating system I'm running under?"
+.IX Subsection "How do I find out which operating system I'm running under?"
+The $^O variable ($OSNAME if you use English) contains an indication of
+the name of the operating system (not its release number) that your perl
+binary was built for.
+.Sh "How come \fIexec()\fP doesn't return?"
+.IX Subsection "How come exec() doesn't return?"
+Because that's what it does: it replaces your currently running
+program with a different one.  If you want to keep going (as is
+probably the case if you're asking this question) use \fIsystem()\fR
+instead.
+.Sh "How do I do fancy stuff with the keyboard/screen/mouse?"
+.IX Subsection "How do I do fancy stuff with the keyboard/screen/mouse?"
+How you access/control keyboards, screens, and pointing devices
+(\*(L"mice\*(R") is system\-dependent.  Try the following modules:
+.IP "Keyboard" 4
+.IX Item "Keyboard"
+.Vb 5
+\&    Term::Cap                   Standard perl distribution
+\&    Term::ReadKey               CPAN
+\&    Term::ReadLine::Gnu         CPAN
+\&    Term::ReadLine::Perl        CPAN
+\&    Term::Screen                CPAN
+.Ve
+.IP "Screen" 4
+.IX Item "Screen"
+.Vb 3
+\&    Term::Cap                   Standard perl distribution
+\&    Curses                      CPAN
+\&    Term::ANSIColor             CPAN
+.Ve
+.IP "Mouse" 4
+.IX Item "Mouse"
+.Vb 1
+\&    Tk                          CPAN
+.Ve
+.PP
+Some of these specific cases are shown below.
+.Sh "How do I print something out in color?"
+.IX Subsection "How do I print something out in color?"
+In general, you don't, because you don't know whether
+the recipient has a color-aware display device.  If you
+know that they have an \s-1ANSI\s0 terminal that understands
+color, you can use the Term::ANSIColor module from \s-1CPAN:\s0
+.PP
+.Vb 3
+\&    use Term::ANSIColor;
+\&    print color("red"), "Stop!\en", color("reset");
+\&    print color("green"), "Go!\en", color("reset");
+.Ve
+.PP
+Or like this:
+.PP
+.Vb 3
+\&    use Term::ANSIColor qw(:constants);
+\&    print RED, "Stop!\en", RESET;
+\&    print GREEN, "Go!\en", RESET;
+.Ve
+.Sh "How do I read just one key without waiting for a return key?"
+.IX Subsection "How do I read just one key without waiting for a return key?"
+Controlling input buffering is a remarkably system-dependent matter.
+On many systems, you can just use the \fBstty\fR command as shown in
+\&\*(L"getc\*(R" in perlfunc, but as you see, that's already getting you into
+portability snags.
+.PP
+.Vb 6
+\&    open(TTY, "+</dev/tty") or die "no tty: $!";
+\&    system "stty  cbreak </dev/tty >/dev/tty 2>&1";
+\&    $key = getc(TTY);           # perhaps this works
+\&    # OR ELSE
+\&    sysread(TTY, $key, 1);      # probably this does
+\&    system "stty -cbreak </dev/tty >/dev/tty 2>&1";
+.Ve
+.PP
+The Term::ReadKey module from \s-1CPAN\s0 offers an easy-to-use interface that
+should be more efficient than shelling out to \fBstty\fR for each key.
+It even includes limited support for Windows.
+.PP
+.Vb 4
+\&    use Term::ReadKey;
+\&    ReadMode('cbreak');
+\&    $key = ReadKey(0);
+\&    ReadMode('normal');
+.Ve
+.PP
+However, using the code requires that you have a working C compiler
+and can use it to build and install a \s-1CPAN\s0 module.  Here's a solution
+using the standard \s-1POSIX\s0 module, which is already on your systems
+(assuming your system supports \s-1POSIX\s0).
+.PP
+.Vb 2
+\&    use HotKey;
+\&    $key = readkey();
+.Ve
+.PP
+And here's the HotKey module, which hides the somewhat mystifying calls
+to manipulate the \s-1POSIX\s0 termios structures.
+.PP
+.Vb 2
+\&    # HotKey.pm
+\&    package HotKey;
+.Ve
+.PP
+.Vb 2
+\&    @ISA = qw(Exporter);
+\&    @EXPORT = qw(cbreak cooked readkey);
+.Ve
+.PP
+.Vb 3
+\&    use strict;
+\&    use POSIX qw(:termios_h);
+\&    my ($term, $oterm, $echo, $noecho, $fd_stdin);
+.Ve
+.PP
+.Vb 4
+\&    $fd_stdin = fileno(STDIN);
+\&    $term     = POSIX::Termios->new();
+\&    $term->getattr($fd_stdin);
+\&    $oterm     = $term->getlflag();
+.Ve
+.PP
+.Vb 2
+\&    $echo     = ECHO | ECHOK | ICANON;
+\&    $noecho   = $oterm & ~$echo;
+.Ve
+.PP
+.Vb 5
+\&    sub cbreak {
+\&        $term->setlflag($noecho);  # ok, so i don't want echo either
+\&        $term->setcc(VTIME, 1);
+\&        $term->setattr($fd_stdin, TCSANOW);
+\&    }
+.Ve
+.PP
+.Vb 5
+\&    sub cooked {
+\&        $term->setlflag($oterm);
+\&        $term->setcc(VTIME, 0);
+\&        $term->setattr($fd_stdin, TCSANOW);
+\&    }
+.Ve
+.PP
+.Vb 7
+\&    sub readkey {
+\&        my $key = '';
+\&        cbreak();
+\&        sysread(STDIN, $key, 1);
+\&        cooked();
+\&        return $key;
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    END { cooked() }
+.Ve
+.PP
+.Vb 1
+\&    1;
+.Ve
+.Sh "How do I check whether input is ready on the keyboard?"
+.IX Subsection "How do I check whether input is ready on the keyboard?"
+The easiest way to do this is to read a key in nonblocking mode with the
+Term::ReadKey module from \s-1CPAN\s0, passing it an argument of \-1 to indicate
+not to block:
+.PP
+.Vb 1
+\&    use Term::ReadKey;
+.Ve
+.PP
+.Vb 1
+\&    ReadMode('cbreak');
+.Ve
+.PP
+.Vb 5
+\&    if (defined ($char = ReadKey(-1)) ) {
+\&        # input was waiting and it was $char
+\&    } else {
+\&        # no input was waiting
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    ReadMode('normal');                  # restore normal tty settings
+.Ve
+.Sh "How do I clear the screen?"
+.IX Subsection "How do I clear the screen?"
+If you only have do so infrequently, use \f(CW\*(C`system\*(C'\fR:
+.PP
+.Vb 1
+\&    system("clear");
+.Ve
+.PP
+If you have to do this a lot, save the clear string
+so you can print it 100 times without calling a program
+100 times:
+.PP
+.Vb 2
+\&    $clear_string = `clear`;
+\&    print $clear_string;
+.Ve
+.PP
+If you're planning on doing other screen manipulations, like cursor
+positions, etc, you might wish to use Term::Cap module:
+.PP
+.Vb 3
+\&    use Term::Cap;
+\&    $terminal = Term::Cap->Tgetent( {OSPEED => 9600} );
+\&    $clear_string = $terminal->Tputs('cl');
+.Ve
+.Sh "How do I get the screen size?"
+.IX Subsection "How do I get the screen size?"
+If you have Term::ReadKey module installed from \s-1CPAN\s0,
+you can use it to fetch the width and height in characters
+and in pixels:
+.PP
+.Vb 2
+\&    use Term::ReadKey;
+\&    ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
+.Ve
+.PP
+This is more portable than the raw \f(CW\*(C`ioctl\*(C'\fR, but not as
+illustrative:
+.PP
+.Vb 10
+\&    require 'sys/ioctl.ph';
+\&    die "no TIOCGWINSZ " unless defined &TIOCGWINSZ;
+\&    open(TTY, "+</dev/tty")                     or die "No tty: $!";
+\&    unless (ioctl(TTY, &TIOCGWINSZ, $winsize='')) {
+\&        die sprintf "$0: ioctl TIOCGWINSZ (%08x: $!)\en", &TIOCGWINSZ;
+\&    }
+\&    ($row, $col, $xpixel, $ypixel) = unpack('S4', $winsize);
+\&    print "(row,col) = ($row,$col)";
+\&    print "  (xpixel,ypixel) = ($xpixel,$ypixel)" if $xpixel || $ypixel;
+\&    print "\en";
+.Ve
+.Sh "How do I ask the user for a password?"
+.IX Subsection "How do I ask the user for a password?"
+(This question has nothing to do with the web.  See a different
+\&\s-1FAQ\s0 for that.)
+.PP
+There's an example of this in \*(L"crypt\*(R" in perlfunc).  First, you put the
+terminal into \*(L"no echo\*(R" mode, then just read the password normally.
+You may do this with an old-style \fIioctl()\fR function, \s-1POSIX\s0 terminal
+control (see \s-1POSIX\s0 or its documentation the Camel Book), or a call
+to the \fBstty\fR program, with varying degrees of portability.
+.PP
+You can also do this for most systems using the Term::ReadKey module
+from \s-1CPAN\s0, which is easier to use and in theory more portable.
+.PP
+.Vb 1
+\&    use Term::ReadKey;
+.Ve
+.PP
+.Vb 2
+\&    ReadMode('noecho');
+\&    $password = ReadLine(0);
+.Ve
+.Sh "How do I read and write the serial port?"
+.IX Subsection "How do I read and write the serial port?"
+This depends on which operating system your program is running on.  In
+the case of Unix, the serial ports will be accessible through files in
+/dev; on other systems, device names will doubtless differ.
+Several problem areas common to all device interaction are the
+following:
+.IP "lockfiles" 4
+.IX Item "lockfiles"
+Your system may use lockfiles to control multiple access.  Make sure
+you follow the correct protocol.  Unpredictable behavior can result
+from multiple processes reading from one device.
+.IP "open mode" 4
+.IX Item "open mode"
+If you expect to use both read and write operations on the device,
+you'll have to open it for update (see \*(L"open\*(R" in perlfunc for
+details).  You may wish to open it without running the risk of
+blocking by using \fIsysopen()\fR and \f(CW\*(C`O_RDWR|O_NDELAY|O_NOCTTY\*(C'\fR from the
+Fcntl module (part of the standard perl distribution).  See
+\&\*(L"sysopen\*(R" in perlfunc for more on this approach.
+.IP "end of line" 4
+.IX Item "end of line"
+Some devices will be expecting a \*(L"\er\*(R" at the end of each line rather
+than a \*(L"\en\*(R".  In some ports of perl, \*(L"\er\*(R" and \*(L"\en\*(R" are different from
+their usual (Unix) \s-1ASCII\s0 values of \*(L"\e012\*(R" and \*(L"\e015\*(R".  You may have to
+give the numeric values you want directly, using octal (\*(L"\e015\*(R"), hex
+(\*(L"0x0D\*(R"), or as a control-character specification (\*(L"\ecM\*(R").
+.Sp
+.Vb 2
+\&    print DEV "atv1\e012";       # wrong, for some devices
+\&    print DEV "atv1\e015";       # right, for some devices
+.Ve
+.Sp
+Even though with normal text files a \*(L"\en\*(R" will do the trick, there is
+still no unified scheme for terminating a line that is portable
+between Unix, DOS/Win, and Macintosh, except to terminate \fI\s-1ALL\s0\fR line
+ends with \*(L"\e015\e012\*(R", and strip what you don't need from the output.
+This applies especially to socket I/O and autoflushing, discussed
+next.
+.IP "flushing output" 4
+.IX Item "flushing output"
+If you expect characters to get to your device when you \fIprint()\fR them,
+you'll want to autoflush that filehandle.  You can use \fIselect()\fR
+and the \f(CW$|\fR variable to control autoflushing (see "$|" in perlvar
+and \*(L"select\*(R" in perlfunc, or perlfaq5, ``How do I flush/unbuffer an
+output filehandle?  Why must I do this?''):
+.Sp
+.Vb 3
+\&    $oldh = select(DEV);
+\&    $| = 1;
+\&    select($oldh);
+.Ve
+.Sp
+You'll also see code that does this without a temporary variable, as in
+.Sp
+.Vb 1
+\&    select((select(DEV), $| = 1)[0]);
+.Ve
+.Sp
+Or if you don't mind pulling in a few thousand lines
+of code just because you're afraid of a little $| variable:
+.Sp
+.Vb 2
+\&    use IO::Handle;
+\&    DEV->autoflush(1);
+.Ve
+.Sp
+As mentioned in the previous item, this still doesn't work when using
+socket I/O between Unix and Macintosh.  You'll need to hard code your
+line terminators, in that case.
+.IP "non-blocking input" 4
+.IX Item "non-blocking input"
+If you are doing a blocking \fIread()\fR or \fIsysread()\fR, you'll have to
+arrange for an alarm handler to provide a timeout (see
+\&\*(L"alarm\*(R" in perlfunc).  If you have a non-blocking open, you'll likely
+have a non-blocking read, which means you may have to use a 4\-arg
+\&\fIselect()\fR to determine whether I/O is ready on that device (see
+\&\*(L"select\*(R" in perlfunc.
+.PP
+While trying to read from his caller-id box, the notorious Jamie Zawinski
+<jwz at netscape.com>, after much gnashing of teeth and fighting with sysread,
+sysopen, \s-1POSIX\s0's tcgetattr business, and various other functions that
+go bump in the night, finally came up with this:
+.PP
+.Vb 13
+\&    sub open_modem {
+\&        use IPC::Open2;
+\&        my $stty = `/bin/stty -g`;
+\&        open2( \e*MODEM_IN, \e*MODEM_OUT, "cu -l$modem_device -s2400 2>&1");
+\&        # starting cu hoses /dev/tty's stty settings, even when it has
+\&        # been opened on a pipe...
+\&        system("/bin/stty $stty");
+\&        $_ = <MODEM_IN>;
+\&        chomp;
+\&        if ( !m/^Connected/ ) {
+\&            print STDERR "$0: cu printed `$_' instead of `Connected'\en";
+\&        }
+\&    }
+.Ve
+.Sh "How do I decode encrypted password files?"
+.IX Subsection "How do I decode encrypted password files?"
+You spend lots and lots of money on dedicated hardware, but this is
+bound to get you talked about.
+.PP
+Seriously, you can't if they are Unix password files\*(--the Unix
+password system employs one-way encryption.  It's more like hashing than
+encryption.  The best you can check is whether something else hashes to
+the same string.  You can't turn a hash back into the original string.
+Programs like Crack
+can forcibly (and intelligently) try to guess passwords, but don't
+(can't) guarantee quick success.
+.PP
+If you're worried about users selecting bad passwords, you should
+proactively check when they try to change their password (by modifying
+\&\fIpasswd\fR\|(1), for example).
+.Sh "How do I start a process in the background?"
+.IX Subsection "How do I start a process in the background?"
+Several modules can start other processes that do not block
+your Perl program.  You can use IPC::Open3, Parallel::Jobs,
+IPC::Run, and some of the \s-1POE\s0 modules.  See \s-1CPAN\s0 for more
+details.
+.PP
+You could also use
+.PP
+.Vb 1
+\&    system("cmd &")
+.Ve
+.PP
+or you could use fork as documented in \*(L"fork\*(R" in perlfunc, with
+further examples in perlipc.  Some things to be aware of, if you're
+on a Unix-like system:
+.IP "\s-1STDIN\s0, \s-1STDOUT\s0, and \s-1STDERR\s0 are shared" 4
+.IX Item "STDIN, STDOUT, and STDERR are shared"
+Both the main process and the backgrounded one (the \*(L"child\*(R" process)
+share the same \s-1STDIN\s0, \s-1STDOUT\s0 and \s-1STDERR\s0 filehandles.  If both try to
+access them at once, strange things can happen.  You may want to close
+or reopen these for the child.  You can get around this with
+\&\f(CW\*(C`open\*(C'\fRing a pipe (see \*(L"open\*(R" in perlfunc) but on some systems this
+means that the child process cannot outlive the parent.
+.IP "Signals" 4
+.IX Item "Signals"
+You'll have to catch the \s-1SIGCHLD\s0 signal, and possibly \s-1SIGPIPE\s0 too.
+\&\s-1SIGCHLD\s0 is sent when the backgrounded process finishes.  \s-1SIGPIPE\s0 is
+sent when you write to a filehandle whose child process has closed (an
+untrapped \s-1SIGPIPE\s0 can cause your program to silently die).  This is
+not an issue with \f(CW\*(C`system("cmd&")\*(C'\fR.
+.IP "Zombies" 4
+.IX Item "Zombies"
+You have to be prepared to \*(L"reap\*(R" the child process when it finishes.
+.Sp
+.Vb 1
+\&    $SIG{CHLD} = sub { wait };
+.Ve
+.Sp
+.Vb 1
+\&    $SIG{CHLD} = 'IGNORE';
+.Ve
+.Sp
+You can also use a double fork. You immediately \fIwait()\fR for your
+first child, and the init daemon will \fIwait()\fR for your grandchild once
+it exits.
+.Sp
+.Vb 8
+\&        unless ($pid = fork) {
+\&                unless (fork) {
+\&            exec "what you really wanna do";
+\&            die "exec failed!";
+\&                }
+\&        exit 0;
+\&        }
+\&    waitpid($pid,0);
+.Ve
+.Sp
+See \*(L"Signals\*(R" in perlipc for other examples of code to do this.
+Zombies are not an issue with \f(CW\*(C`system("prog &")\*(C'\fR.
+.Sh "How do I trap control characters/signals?"
+.IX Subsection "How do I trap control characters/signals?"
+You don't actually \*(L"trap\*(R" a control character.  Instead, that character
+generates a signal which is sent to your terminal's currently
+foregrounded process group, which you then trap in your process.
+Signals are documented in \*(L"Signals\*(R" in perlipc and the
+section on ``Signals'' in the Camel.
+.PP
+Be warned that very few C libraries are re\-entrant.  Therefore, if you
+attempt to \fIprint()\fR in a handler that got invoked during another stdio
+operation your internal structures will likely be in an
+inconsistent state, and your program will dump core.  You can
+sometimes avoid this by using \fIsyswrite()\fR instead of \fIprint()\fR.
+.PP
+Unless you're exceedingly careful, the only safe things to do inside a
+signal handler are (1) set a variable and (2) exit.  In the first case,
+you should only set a variable in such a way that \fImalloc()\fR is not
+called (eg, by setting a variable that already has a value).
+.PP
+For example:
+.PP
+.Vb 5
+\&    $Interrupted = 0;   # to ensure it has a value
+\&    $SIG{INT} = sub {
+\&        $Interrupted++;
+\&        syswrite(STDERR, "ouch\en", 5);
+\&    }
+.Ve
+.PP
+However, because syscalls restart by default, you'll find that if
+you're in a \*(L"slow\*(R" call, such as <\s-1FH\s0>, \fIread()\fR, \fIconnect()\fR, or
+\&\fIwait()\fR, that the only way to terminate them is by \*(L"longjumping\*(R" out;
+that is, by raising an exception.  See the time-out handler for a
+blocking \fIflock()\fR in \*(L"Signals\*(R" in perlipc or the section on ``Signals''
+in the Camel book.
+.Sh "How do I modify the shadow password file on a Unix system?"
+.IX Subsection "How do I modify the shadow password file on a Unix system?"
+If perl was installed correctly and your shadow library was written
+properly, the getpw*() functions described in perlfunc should in
+theory provide (read\-only) access to entries in the shadow password
+file.  To change the file, make a new shadow password file (the format
+varies from system to system\*(--see passwd for specifics) and use
+\&\fIpwd_mkdb\fR\|(8) to install it (see pwd_mkdb for more details).
+.Sh "How do I set the time and date?"
+.IX Subsection "How do I set the time and date?"
+Assuming you're running under sufficient permissions, you should be
+able to set the system-wide date and time by running the \fIdate\fR\|(1)
+program.  (There is no way to set the time and date on a per-process
+basis.)  This mechanism will work for Unix, \s-1MS\-DOS\s0, Windows, and \s-1NT\s0;
+the \s-1VMS\s0 equivalent is \f(CW\*(C`set time\*(C'\fR.
+.PP
+However, if all you want to do is change your time zone, you can
+probably get away with setting an environment variable:
+.PP
+.Vb 3
+\&    $ENV{TZ} = "MST7MDT";                  # unixish
+\&    $ENV{'SYS$TIMEZONE_DIFFERENTIAL'}="-5" # vms
+\&    system "trn comp.lang.perl.misc";
+.Ve
+.Sh "How can I \fIsleep()\fP or \fIalarm()\fP for under a second?"
+.IX Subsection "How can I sleep() or alarm() for under a second?"
+If you want finer granularity than the 1 second that the \fIsleep()\fR
+function provides, the easiest way is to use the \fIselect()\fR function as
+documented in \*(L"select\*(R" in perlfunc.  Try the Time::HiRes and
+the BSD::Itimer modules (available from \s-1CPAN\s0, and starting from
+Perl 5.8 Time::HiRes is part of the standard distribution).
+.Sh "How can I measure time under a second?"
+.IX Subsection "How can I measure time under a second?"
+In general, you may not be able to.  The Time::HiRes module (available
+from \s-1CPAN\s0, and starting from Perl 5.8 part of the standard distribution)
+provides this functionality for some systems.
+.PP
+If your system supports both the \fIsyscall()\fR function in Perl as well as
+a system call like \fIgettimeofday\fR\|(2), then you may be able to do
+something like this:
+.PP
+.Vb 1
+\&    require 'sys/syscall.ph';
+.Ve
+.PP
+.Vb 1
+\&    $TIMEVAL_T = "LL";
+.Ve
+.PP
+.Vb 1
+\&    $done = $start = pack($TIMEVAL_T, ());
+.Ve
+.PP
+.Vb 2
+\&    syscall(&SYS_gettimeofday, $start, 0) != -1
+\&               or die "gettimeofday: $!";
+.Ve
+.PP
+.Vb 3
+\&       ##########################
+\&       # DO YOUR OPERATION HERE #
+\&       ##########################
+.Ve
+.PP
+.Vb 2
+\&    syscall( &SYS_gettimeofday, $done, 0) != -1
+\&           or die "gettimeofday: $!";
+.Ve
+.PP
+.Vb 2
+\&    @start = unpack($TIMEVAL_T, $start);
+\&    @done  = unpack($TIMEVAL_T, $done);
+.Ve
+.PP
+.Vb 2
+\&    # fix microseconds
+\&    for ($done[1], $start[1]) { $_ /= 1_000_000 }
+.Ve
+.PP
+.Vb 3
+\&    $delta_time = sprintf "%.4f", ($done[0]  + $done[1]  )
+\&                                            -
+\&                                 ($start[0] + $start[1] );
+.Ve
+.Sh "How can I do an \fIatexit()\fP or \fIsetjmp()\fP/\fIlongjmp()\fP? (Exception handling)"
+.IX Subsection "How can I do an atexit() or setjmp()/longjmp()? (Exception handling)"
+Release 5 of Perl added the \s-1END\s0 block, which can be used to simulate
+\&\fIatexit()\fR.  Each package's \s-1END\s0 block is called when the program or
+thread ends (see perlmod manpage for more details).
+.PP
+For example, you can use this to make sure your filter program
+managed to finish its output without filling up the disk:
+.PP
+.Vb 3
+\&    END {
+\&        close(STDOUT) || die "stdout close failed: $!";
+\&    }
+.Ve
+.PP
+The \s-1END\s0 block isn't called when untrapped signals kill the program,
+though, so if you use \s-1END\s0 blocks you should also use
+.PP
+.Vb 1
+\&        use sigtrap qw(die normal-signals);
+.Ve
+.PP
+Perl's exception-handling mechanism is its \fIeval()\fR operator.  You can
+use \fIeval()\fR as setjmp and \fIdie()\fR as longjmp.  For details of this, see
+the section on signals, especially the time-out handler for a blocking
+\&\fIflock()\fR in \*(L"Signals\*(R" in perlipc or the section on ``Signals'' in
+the Camel Book.
+.PP
+If exception handling is all you're interested in, try the
+exceptions.pl library (part of the standard perl distribution).
+.PP
+If you want the \fIatexit()\fR syntax (and an \fIrmexit()\fR as well), try the
+AtExit module available from \s-1CPAN\s0.
+.ie n .Sh "Why doesn't my sockets program work under System V (Solaris)?  What does the error message ""Protocol not supported"" mean?"
+.el .Sh "Why doesn't my sockets program work under System V (Solaris)?  What does the error message ``Protocol not supported'' mean?"
+.IX Subsection "Why doesn't my sockets program work under System V (Solaris)?  What does the error message Protocol not supported mean?"
+Some Sys-V based systems, notably Solaris 2.X, redefined some of the
+standard socket constants.  Since these were constant across all
+architectures, they were often hardwired into perl code.  The proper
+way to deal with this is to \*(L"use Socket\*(R" to get the correct values.
+.PP
+Note that even though SunOS and Solaris are binary compatible, these
+values are different.  Go figure.
+.Sh "How can I call my system's unique C functions from Perl?"
+.IX Subsection "How can I call my system's unique C functions from Perl?"
+In most cases, you write an external module to do it\*(--see the answer
+to \*(L"Where can I learn about linking C with Perl? [h2xs, xsubpp]\*(R".
+However, if the function is a system call, and your system supports
+\&\fIsyscall()\fR, you can use the syscall function (documented in
+perlfunc).
+.PP
+Remember to check the modules that came with your distribution, and
+\&\s-1CPAN\s0 as well\-\-\-someone may already have written a module to do it. On
+Windows, try Win32::API.  On Macs, try Mac::Carbon.  If no module
+has an interface to the C function, you can inline a bit of C in your
+Perl source with Inline::C.
+.Sh "Where do I get the include files to do \fIioctl()\fP or \fIsyscall()\fP?"
+.IX Subsection "Where do I get the include files to do ioctl() or syscall()?"
+Historically, these would be generated by the h2ph tool, part of the
+standard perl distribution.  This program converts \fIcpp\fR\|(1) directives
+in C header files to files containing subroutine definitions, like
+&SYS_getitimer, which you can use as arguments to your functions.
+It doesn't work perfectly, but it usually gets most of the job done.
+Simple files like \fIerrno.h\fR, \fIsyscall.h\fR, and \fIsocket.h\fR were fine,
+but the hard ones like \fIioctl.h\fR nearly always need to hand\-edited.
+Here's how to install the *.ph files:
+.PP
+.Vb 3
+\&    1.  become super-user
+\&    2.  cd /usr/include
+\&    3.  h2ph *.h */*.h
+.Ve
+.PP
+If your system supports dynamic loading, for reasons of portability and
+sanity you probably ought to use h2xs (also part of the standard perl
+distribution).  This tool converts C header files to Perl extensions.
+See perlxstut for how to get started with h2xs.
+.PP
+If your system doesn't support dynamic loading, you still probably
+ought to use h2xs.  See perlxstut and ExtUtils::MakeMaker for
+more information (in brief, just use \fBmake perl\fR instead of a plain
+\&\fBmake\fR to rebuild perl with a new static extension).
+.Sh "Why do setuid perl scripts complain about kernel problems?"
+.IX Subsection "Why do setuid perl scripts complain about kernel problems?"
+Some operating systems have bugs in the kernel that make setuid
+scripts inherently insecure.  Perl gives you a number of options
+(described in perlsec) to work around such systems.
+.Sh "How can I open a pipe both to and from a command?"
+.IX Subsection "How can I open a pipe both to and from a command?"
+The IPC::Open2 module (part of the standard perl distribution) is an
+easy-to-use approach that internally uses \fIpipe()\fR, \fIfork()\fR, and \fIexec()\fR to do
+the job.  Make sure you read the deadlock warnings in its documentation,
+though (see IPC::Open2).  See
+\&\*(L"Bidirectional Communication with Another Process\*(R" in perlipc and
+\&\*(L"Bidirectional Communication with Yourself\*(R" in perlipc
+.PP
+You may also use the IPC::Open3 module (part of the standard perl
+distribution), but be warned that it has a different order of
+arguments from IPC::Open2 (see IPC::Open3).
+.Sh "Why can't I get the output of a command with \fIsystem()\fP?"
+.IX Subsection "Why can't I get the output of a command with system()?"
+You're confusing the purpose of \fIsystem()\fR and backticks (``).  \fIsystem()\fR
+runs a command and returns exit status information (as a 16 bit value:
+the low 7 bits are the signal the process died from, if any, and
+the high 8 bits are the actual exit value).  Backticks (``) run a
+command and return what it sent to \s-1STDOUT\s0.
+.PP
+.Vb 2
+\&    $exit_status   = system("mail-users");
+\&    $output_string = `ls`;
+.Ve
+.Sh "How can I capture \s-1STDERR\s0 from an external command?"
+.IX Subsection "How can I capture STDERR from an external command?"
+There are three basic ways of running external commands:
+.PP
+.Vb 3
+\&    system $cmd;                # using system()
+\&    $output = `$cmd`;           # using backticks (``)
+\&    open (PIPE, "cmd |");       # using open()
+.Ve
+.PP
+With \fIsystem()\fR, both \s-1STDOUT\s0 and \s-1STDERR\s0 will go the same place as the
+script's \s-1STDOUT\s0 and \s-1STDERR\s0, unless the \fIsystem()\fR command redirects them.
+Backticks and \fIopen()\fR read \fBonly\fR the \s-1STDOUT\s0 of your command.
+.PP
+You can also use the \fIopen3()\fR function from IPC::Open3.  Benjamin
+Goldberg provides some sample code:
+.PP
+To capture a program's \s-1STDOUT\s0, but discard its \s-1STDERR:\s0
+.PP
+.Vb 7
+\&    use IPC::Open3;
+\&    use File::Spec;
+\&    use Symbol qw(gensym);
+\&    open(NULL, ">", File::Spec->devnull);
+\&    my $pid = open3(gensym, \e*PH, ">&NULL", "cmd");
+\&    while( <PH> ) { }
+\&    waitpid($pid, 0);
+.Ve
+.PP
+To capture a program's \s-1STDERR\s0, but discard its \s-1STDOUT:\s0
+.PP
+.Vb 7
+\&    use IPC::Open3;
+\&    use File::Spec;
+\&    use Symbol qw(gensym);
+\&    open(NULL, ">", File::Spec->devnull);
+\&    my $pid = open3(gensym, ">&NULL", \e*PH, "cmd");
+\&    while( <PH> ) { }
+\&    waitpid($pid, 0);
+.Ve
+.PP
+To capture a program's \s-1STDERR\s0, and let its \s-1STDOUT\s0 go to our own \s-1STDERR:\s0
+.PP
+.Vb 5
+\&    use IPC::Open3;
+\&    use Symbol qw(gensym);
+\&    my $pid = open3(gensym, ">&STDERR", \e*PH, "cmd");
+\&    while( <PH> ) { }
+\&    waitpid($pid, 0);
+.Ve
+.PP
+To read both a command's \s-1STDOUT\s0 and its \s-1STDERR\s0 separately, you can
+redirect them to temp files, let the command run, then read the temp
+files:
+.PP
+.Vb 10
+\&    use IPC::Open3;
+\&    use Symbol qw(gensym);
+\&    use IO::File;
+\&    local *CATCHOUT = IO::File->new_tempfile;
+\&    local *CATCHERR = IO::File->new_tempfile;
+\&    my $pid = open3(gensym, ">&CATCHOUT", ">&CATCHERR", "cmd");
+\&    waitpid($pid, 0);
+\&    seek $_, 0, 0 for \e*CATCHOUT, \e*CATCHERR;
+\&    while( <CATCHOUT> ) {}
+\&    while( <CATCHERR> ) {}
+.Ve
+.PP
+But there's no real need for *both* to be tempfiles... the following
+should work just as well, without deadlocking:
+.PP
+.Vb 9
+\&    use IPC::Open3;
+\&    use Symbol qw(gensym);
+\&    use IO::File;
+\&    local *CATCHERR = IO::File->new_tempfile;
+\&    my $pid = open3(gensym, \e*CATCHOUT, ">&CATCHERR", "cmd");
+\&    while( <CATCHOUT> ) {}
+\&    waitpid($pid, 0);
+\&    seek CATCHERR, 0, 0;
+\&    while( <CATCHERR> ) {}
+.Ve
+.PP
+And it'll be faster, too, since we can begin processing the program's
+stdout immediately, rather than waiting for the program to finish.
+.PP
+With any of these, you can change file descriptors before the call:
+.PP
+.Vb 2
+\&    open(STDOUT, ">logfile");
+\&    system("ls");
+.Ve
+.PP
+or you can use Bourne shell file-descriptor redirection:
+.PP
+.Vb 2
+\&    $output = `$cmd 2>some_file`;
+\&    open (PIPE, "cmd 2>some_file |");
+.Ve
+.PP
+You can also use file-descriptor redirection to make \s-1STDERR\s0 a
+duplicate of \s-1STDOUT:\s0
+.PP
+.Vb 2
+\&    $output = `$cmd 2>&1`;
+\&    open (PIPE, "cmd 2>&1 |");
+.Ve
+.PP
+Note that you \fIcannot\fR simply open \s-1STDERR\s0 to be a dup of \s-1STDOUT\s0
+in your Perl program and avoid calling the shell to do the redirection.
+This doesn't work:
+.PP
+.Vb 2
+\&    open(STDERR, ">&STDOUT");
+\&    $alloutput = `cmd args`;  # stderr still escapes
+.Ve
+.PP
+This fails because the \fIopen()\fR makes \s-1STDERR\s0 go to where \s-1STDOUT\s0 was
+going at the time of the \fIopen()\fR.  The backticks then make \s-1STDOUT\s0 go to
+a string, but don't change \s-1STDERR\s0 (which still goes to the old
+\&\s-1STDOUT\s0).
+.PP
+Note that you \fImust\fR use Bourne shell (\fIsh\fR\|(1)) redirection syntax in
+backticks, not \fIcsh\fR\|(1)!  Details on why Perl's \fIsystem()\fR and backtick
+and pipe opens all use the Bourne shell are in the
+\&\fIversus/csh.whynot\fR article in the \*(L"Far More Than You Ever Wanted To
+Know\*(R" collection in http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz .  To
+capture a command's \s-1STDERR\s0 and \s-1STDOUT\s0 together:
+.PP
+.Vb 3
+\&    $output = `cmd 2>&1`;                       # either with backticks
+\&    $pid = open(PH, "cmd 2>&1 |");              # or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To capture a command's \s-1STDOUT\s0 but discard its \s-1STDERR:\s0
+.PP
+.Vb 3
+\&    $output = `cmd 2>/dev/null`;                # either with backticks
+\&    $pid = open(PH, "cmd 2>/dev/null |");       # or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To capture a command's \s-1STDERR\s0 but discard its \s-1STDOUT:\s0
+.PP
+.Vb 3
+\&    $output = `cmd 2>&1 1>/dev/null`;           # either with backticks
+\&    $pid = open(PH, "cmd 2>&1 1>/dev/null |");  # or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To exchange a command's \s-1STDOUT\s0 and \s-1STDERR\s0 in order to capture the \s-1STDERR\s0
+but leave its \s-1STDOUT\s0 to come out our old \s-1STDERR:\s0
+.PP
+.Vb 3
+\&    $output = `cmd 3>&1 1>&2 2>&3 3>&-`;        # either with backticks
+\&    $pid = open(PH, "cmd 3>&1 1>&2 2>&3 3>&-|");# or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To read both a command's \s-1STDOUT\s0 and its \s-1STDERR\s0 separately, it's easiest
+and safest to redirect them separately to files, and then read from those
+files when the program is done:
+.PP
+.Vb 1
+\&    system("program args 1>/tmp/program.stdout 2>/tmp/program.stderr");
+.Ve
+.PP
+Ordering is important in all these examples.  That's because the shell
+processes file descriptor redirections in strictly left to right order.
+.PP
+.Vb 2
+\&    system("prog args 1>tmpfile 2>&1");
+\&    system("prog args 2>&1 1>tmpfile");
+.Ve
+.PP
+The first command sends both standard out and standard error to the
+temporary file.  The second command sends only the old standard output
+there, and the old standard error shows up on the old standard out.
+.Sh "Why doesn't \fIopen()\fP return an error when a pipe open fails?"
+.IX Subsection "Why doesn't open() return an error when a pipe open fails?"
+If the second argument to a piped \fIopen()\fR contains shell
+metacharacters, perl \fIfork()\fRs, then \fIexec()\fRs a shell to decode the
+metacharacters and eventually run the desired program.  If the program
+couldn't be run, it's the shell that gets the message, not Perl. All
+your Perl program can find out is whether the shell itself could be
+successfully started.  You can still capture the shell's \s-1STDERR\s0 and
+check it for error messages.  See \*(L"How can I capture \s-1STDERR\s0 from an external command?\*(R" elsewhere in this document, or use the
+IPC::Open3 module.
+.PP
+If there are no shell metacharacters in the argument of \fIopen()\fR, Perl
+runs the command directly, without using the shell, and can correctly
+report whether the command started.
+.Sh "What's wrong with using backticks in a void context?"
+.IX Subsection "What's wrong with using backticks in a void context?"
+Strictly speaking, nothing.  Stylistically speaking, it's not a good
+way to write maintainable code.  Perl has several operators for
+running external commands.  Backticks are one; they collect the output
+from the command for use in your program.  The \f(CW\*(C`system\*(C'\fR function is
+another; it doesn't do this.
+.PP
+Writing backticks in your program sends a clear message to the readers
+of your code that you wanted to collect the output of the command.
+Why send a clear message that isn't true?
+.PP
+Consider this line:
+.PP
+.Vb 1
+\&    `cat /etc/termcap`;
+.Ve
+.PP
+You forgot to check \f(CW$?\fR to see whether the program even ran
+correctly.  Even if you wrote
+.PP
+.Vb 1
+\&    print `cat /etc/termcap`;
+.Ve
+.PP
+this code could and probably should be written as
+.PP
+.Vb 2
+\&    system("cat /etc/termcap") == 0
+\&        or die "cat program failed!";
+.Ve
+.PP
+which will get the output quickly (as it is generated, instead of only
+at the end) and also check the return value.
+.PP
+\&\fIsystem()\fR also provides direct control over whether shell wildcard
+processing may take place, whereas backticks do not.
+.Sh "How can I call backticks without shell processing?"
+.IX Subsection "How can I call backticks without shell processing?"
+This is a bit tricky.  You can't simply write the command
+like this:
+.PP
+.Vb 1
+\&    @ok = `grep @opts '$search_string' @filenames`;
+.Ve
+.PP
+As of Perl 5.8.0, you can use \fIopen()\fR with multiple arguments.
+Just like the list forms of \fIsystem()\fR and \fIexec()\fR, no shell
+escapes happen.
+.PP
+.Vb 3
+\&   open( GREP, "-|", 'grep', @opts, $search_string, @filenames );
+\&   chomp(@ok = <GREP>);
+\&   close GREP;
+.Ve
+.PP
+You can also:
+.PP
+.Vb 10
+\&    my @ok = ();
+\&    if (open(GREP, "-|")) {
+\&        while (<GREP>) {
+\&            chomp;
+\&            push(@ok, $_);
+\&        }
+\&        close GREP;
+\&    } else {
+\&        exec 'grep', @opts, $search_string, @filenames;
+\&    }
+.Ve
+.PP
+Just as with \fIsystem()\fR, no shell escapes happen when you \fIexec()\fR a list.
+Further examples of this can be found in \*(L"Safe Pipe Opens\*(R" in perlipc.
+.PP
+Note that if you're use Microsoft, no solution to this vexing issue
+is even possible.  Even if Perl were to emulate \fIfork()\fR, you'd still
+be stuck, because Microsoft does not have a argc/argv\-style \s-1API\s0.
+.Sh "Why can't my script read from \s-1STDIN\s0 after I gave it \s-1EOF\s0 (^D on Unix, ^Z on \s-1MS\-DOS\s0)?"
+.IX Subsection "Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?"
+Some stdio's set error and eof flags that need clearing.  The
+\&\s-1POSIX\s0 module defines \fIclearerr()\fR that you can use.  That is the
+technically correct way to do it.  Here are some less reliable
+workarounds:
+.IP "1" 4
+.IX Item "1"
+Try keeping around the seekpointer and go there, like this:
+.Sp
+.Vb 2
+\&    $where = tell(LOG);
+\&    seek(LOG, $where, 0);
+.Ve
+.IP "2" 4
+.IX Item "2"
+If that doesn't work, try seeking to a different part of the file and
+then back.
+.IP "3" 4
+.IX Item "3"
+If that doesn't work, try seeking to a different part of
+the file, reading something, and then seeking back.
+.IP "4" 4
+.IX Item "4"
+If that doesn't work, give up on your stdio package and use sysread.
+.Sh "How can I convert my shell script to perl?"
+.IX Subsection "How can I convert my shell script to perl?"
+Learn Perl and rewrite it.  Seriously, there's no simple converter.
+Things that are awkward to do in the shell are easy to do in Perl, and
+this very awkwardness is what would make a shell\->perl converter
+nigh-on impossible to write.  By rewriting it, you'll think about what
+you're really trying to do, and hopefully will escape the shell's
+pipeline datastream paradigm, which while convenient for some matters,
+causes many inefficiencies.
+.Sh "Can I use perl to run a telnet or ftp session?"
+.IX Subsection "Can I use perl to run a telnet or ftp session?"
+Try the Net::FTP, TCP::Client, and Net::Telnet modules (available from
+\&\s-1CPAN\s0).  http://www.cpan.org/scripts/netstuff/telnet.emul.shar
+will also help for emulating the telnet protocol, but Net::Telnet is
+quite probably easier to use..
+.PP
+If all you want to do is pretend to be telnet but don't need
+the initial telnet handshaking, then the standard dual-process
+approach will suffice:
+.PP
+.Vb 12
+\&    use IO::Socket;             # new in 5.004
+\&    $handle = IO::Socket::INET->new('www.perl.com:80')
+\&            || die "can't connect to port 80 on www.perl.com: $!";
+\&    $handle->autoflush(1);
+\&    if (fork()) {               # XXX: undef means failure
+\&        select($handle);
+\&        print while <STDIN>;    # everything from stdin to socket
+\&    } else {
+\&        print while <$handle>;  # everything from socket to stdout
+\&    }
+\&    close $handle;
+\&    exit;
+.Ve
+.Sh "How can I write expect in Perl?"
+.IX Subsection "How can I write expect in Perl?"
+Once upon a time, there was a library called chat2.pl (part of the
+standard perl distribution), which never really got finished.  If you
+find it somewhere, \fIdon't use it\fR.  These days, your best bet is to
+look at the Expect module available from \s-1CPAN\s0, which also requires two
+other modules from \s-1CPAN\s0, IO::Pty and IO::Stty.
+.ie n .Sh "Is there a way to hide perl's command line from programs such as ""ps""?"
+.el .Sh "Is there a way to hide perl's command line from programs such as ``ps''?"
+.IX Subsection "Is there a way to hide perl's command line from programs such as ps?"
+First of all note that if you're doing this for security reasons (to
+avoid people seeing passwords, for example) then you should rewrite
+your program so that critical information is never given as an
+argument.  Hiding the arguments won't make your program completely
+secure.
+.PP
+To actually alter the visible command line, you can assign to the
+variable \f(CW$0\fR as documented in perlvar.  This won't work on all
+operating systems, though.  Daemon programs like sendmail place their
+state there, as in:
+.PP
+.Vb 1
+\&    $0 = "orcus [accepting connections]";
+.Ve
+.Sh "I {changed directory, modified my environment} in a perl script.  How come the change disappeared when I exited the script?  How do I get my changes to be visible?"
+.IX Subsection "I {changed directory, modified my environment} in a perl script.  How come the change disappeared when I exited the script?  How do I get my changes to be visible?"
+.IP "Unix" 4
+.IX Item "Unix"
+In the strictest sense, it can't be done\*(--the script executes as a
+different process from the shell it was started from.  Changes to a
+process are not reflected in its parent\*(--only in any children
+created after the change.  There is shell magic that may allow you to
+fake it by \fIeval()\fRing the script's output in your shell; check out the
+comp.unix.questions \s-1FAQ\s0 for details.
+.Sh "How do I close a process's filehandle without waiting for it to complete?"
+.IX Subsection "How do I close a process's filehandle without waiting for it to complete?"
+Assuming your system supports such things, just send an appropriate signal
+to the process (see \*(L"kill\*(R" in perlfunc).  It's common to first send a \s-1TERM\s0
+signal, wait a little bit, and then send a \s-1KILL\s0 signal to finish it off.
+.Sh "How do I fork a daemon process?"
+.IX Subsection "How do I fork a daemon process?"
+If by daemon process you mean one that's detached (disassociated from
+its tty), then the following process is reported to work on most
+Unixish systems.  Non-Unix users should check their Your_OS::Process
+module for other solutions.
+.IP "\(bu" 4
+Open /dev/tty and use the \s-1TIOCNOTTY\s0 ioctl on it.  See tty
+for details.  Or better yet, you can just use the \fIPOSIX::setsid()\fR
+function, so you don't have to worry about process groups.
+.IP "\(bu" 4
+Change directory to /
+.IP "\(bu" 4
+Reopen \s-1STDIN\s0, \s-1STDOUT\s0, and \s-1STDERR\s0 so they're not connected to the old
+tty.
+.IP "\(bu" 4
+Background yourself like this:
+.Sp
+.Vb 1
+\&    fork && exit;
+.Ve
+.PP
+The Proc::Daemon module, available from \s-1CPAN\s0, provides a function to
+perform these actions for you.
+.Sh "How do I find out if I'm running interactively or not?"
+.IX Subsection "How do I find out if I'm running interactively or not?"
+Good question.  Sometimes \f(CW\*(C`\-t STDIN\*(C'\fR and \f(CW\*(C`\-t STDOUT\*(C'\fR can give clues,
+sometimes not.
+.PP
+.Vb 3
+\&    if (-t STDIN && -t STDOUT) {
+\&        print "Now what? ";
+\&    }
+.Ve
+.PP
+On \s-1POSIX\s0 systems, you can test whether your own process group matches
+the current process group of your controlling terminal as follows:
+.PP
+.Vb 9
+\&    use POSIX qw/getpgrp tcgetpgrp/;
+\&    open(TTY, "/dev/tty") or die $!;
+\&    $tpgrp = tcgetpgrp(fileno(*TTY));
+\&    $pgrp = getpgrp();
+\&    if ($tpgrp == $pgrp) {
+\&        print "foreground\en";
+\&    } else {
+\&        print "background\en";
+\&    }
+.Ve
+.Sh "How do I timeout a slow event?"
+.IX Subsection "How do I timeout a slow event?"
+Use the \fIalarm()\fR function, probably in conjunction with a signal
+handler, as documented in \*(L"Signals\*(R" in perlipc and the section on
+``Signals'' in the Camel.  You may instead use the more flexible
+Sys::AlarmCall module available from \s-1CPAN\s0.
+.PP
+The \fIalarm()\fR function is not implemented on all versions of Windows.
+Check the documentation for your specific version of Perl.
+.Sh "How do I set \s-1CPU\s0 limits?"
+.IX Subsection "How do I set CPU limits?"
+Use the BSD::Resource module from \s-1CPAN\s0.
+.Sh "How do I avoid zombies on a Unix system?"
+.IX Subsection "How do I avoid zombies on a Unix system?"
+Use the reaper code from \*(L"Signals\*(R" in perlipc to call \fIwait()\fR when a
+\&\s-1SIGCHLD\s0 is received, or else use the double-fork technique described
+in \*(L"How do I start a process in the background?\*(R" in perlfaq8.
+.Sh "How do I use an \s-1SQL\s0 database?"
+.IX Subsection "How do I use an SQL database?"
+The \s-1DBI\s0 module provides an abstract interface to most database
+servers and types, including Oracle, \s-1DB2\s0, Sybase, mysql, Postgresql,
+\&\s-1ODBC\s0, and flat files.  The \s-1DBI\s0 module accesses each database type
+through a database driver, or \s-1DBD\s0.  You can see a complete list of
+available drivers on \s-1CPAN:\s0 http://www.cpan.org/modules/by\-module/DBD/ .
+You can read more about \s-1DBI\s0 on http://dbi.perl.org .
+.PP
+Other modules provide more specific access: Win32::ODBC, Alzabo, iodbc,
+and others found on \s-1CPAN\s0 Search: http://search.cpan.org .
+.Sh "How do I make a \fIsystem()\fP exit on control\-C?"
+.IX Subsection "How do I make a system() exit on control-C?"
+You can't.  You need to imitate the \fIsystem()\fR call (see perlipc for
+sample code) and then have a signal handler for the \s-1INT\s0 signal that
+passes the signal on to the subprocess.  Or you can check for it:
+.PP
+.Vb 2
+\&    $rc = system($cmd);
+\&    if ($rc & 127) { die "signal death" }
+.Ve
+.Sh "How do I open a file without blocking?"
+.IX Subsection "How do I open a file without blocking?"
+If you're lucky enough to be using a system that supports
+non-blocking reads (most Unixish systems do), you need only to use the
+O_NDELAY or O_NONBLOCK flag from the Fcntl module in conjunction with
+\&\fIsysopen()\fR:
+.PP
+.Vb 3
+\&    use Fcntl;
+\&    sysopen(FH, "/tmp/somefile", O_WRONLY|O_NDELAY|O_CREAT, 0644)
+\&        or die "can't open /tmp/somefile: $!":
+.Ve
+.Sh "How do I install a module from \s-1CPAN\s0?"
+.IX Subsection "How do I install a module from CPAN?"
+The easiest way is to have a module also named \s-1CPAN\s0 do it for you.
+This module comes with perl version 5.004 and later.
+.PP
+.Vb 1
+\&    $ perl -MCPAN -e shell
+.Ve
+.PP
+.Vb 2
+\&    cpan shell -- CPAN exploration and modules installation (v1.59_54)
+\&    ReadLine support enabled
+.Ve
+.PP
+.Vb 1
+\&    cpan> install Some::Module
+.Ve
+.PP
+To manually install the \s-1CPAN\s0 module, or any well-behaved \s-1CPAN\s0 module
+for that matter, follow these steps:
+.IP "1" 4
+.IX Item "1"
+Unpack the source into a temporary area.
+.IP "2" 4
+.IX Item "2"
+.Vb 1
+\&    perl Makefile.PL
+.Ve
+.IP "3" 4
+.IX Item "3"
+.Vb 1
+\&    make
+.Ve
+.IP "4" 4
+.IX Item "4"
+.Vb 1
+\&    make test
+.Ve
+.IP "5" 4
+.IX Item "5"
+.Vb 1
+\&    make install
+.Ve
+.PP
+If your version of perl is compiled without dynamic loading, then you
+just need to replace step 3 (\fBmake\fR) with \fBmake perl\fR and you will
+get a new \fIperl\fR binary with your extension linked in.
+.PP
+See ExtUtils::MakeMaker for more details on building extensions.
+See also the next question, ``What's the difference between require
+and use?''.
+.Sh "What's the difference between require and use?"
+.IX Subsection "What's the difference between require and use?"
+Perl offers several different ways to include code from one file into
+another.  Here are the deltas between the various inclusion constructs:
+.PP
+.Vb 3
+\&    1)  do $file is like eval `cat $file`, except the former
+\&        1.1: searches @INC and updates %INC.
+\&        1.2: bequeaths an *unrelated* lexical scope on the eval'ed code.
+.Ve
+.PP
+.Vb 3
+\&    2)  require $file is like do $file, except the former
+\&        2.1: checks for redundant loading, skipping already loaded files.
+\&        2.2: raises an exception on failure to find, compile, or execute $file.
+.Ve
+.PP
+.Vb 3
+\&    3)  require Module is like require "Module.pm", except the former
+\&        3.1: translates each "::" into your system's directory separator.
+\&        3.2: primes the parser to disambiguate class Module as an indirect object.
+.Ve
+.PP
+.Vb 3
+\&    4)  use Module is like require Module, except the former
+\&        4.1: loads the module at compile time, not run-time.
+\&        4.2: imports symbols and semantics from that package to the current one.
+.Ve
+.PP
+In general, you usually want \f(CW\*(C`use\*(C'\fR and a proper Perl module.
+.Sh "How do I keep my own module/library directory?"
+.IX Subsection "How do I keep my own module/library directory?"
+When you build modules, use the \s-1PREFIX\s0 and \s-1LIB\s0 options when generating
+Makefiles:
+.PP
+.Vb 1
+\&    perl Makefile.PL PREFIX=/mydir/perl LIB=/mydir/perl/lib
+.Ve
+.PP
+then either set the \s-1PERL5LIB\s0 environment variable before you run
+scripts that use the modules/libraries (see perlrun) or say
+.PP
+.Vb 1
+\&    use lib '/mydir/perl/lib';
+.Ve
+.PP
+This is almost the same as
+.PP
+.Vb 3
+\&    BEGIN {
+\&        unshift(@INC, '/mydir/perl/lib');
+\&    }
+.Ve
+.PP
+except that the lib module checks for machine-dependent subdirectories.
+See Perl's lib for more information.
+.Sh "How do I add the directory my program lives in to the module/library search path?"
+.IX Subsection "How do I add the directory my program lives in to the module/library search path?"
+.Vb 3
+\&    use FindBin;
+\&    use lib "$FindBin::Bin";
+\&    use your_own_modules;
+.Ve
+.Sh "How do I add a directory to my include path (@INC) at runtime?"
+.IX Subsection "How do I add a directory to my include path (@INC) at runtime?"
+Here are the suggested ways of modifying your include path:
+.PP
+.Vb 5
+\&    the PERLLIB environment variable
+\&    the PERL5LIB environment variable
+\&    the perl -Idir command line flag
+\&    the use lib pragma, as in
+\&        use lib "$ENV{HOME}/myown_perllib";
+.Ve
+.PP
+The latter is particularly useful because it knows about machine
+dependent architectures.  The lib.pm pragmatic module was first
+included with the 5.002 release of Perl.
+.Sh "What is socket.ph and where do I get it?"
+.IX Subsection "What is socket.ph and where do I get it?"
+It's a perl4\-style file defining values for system networking
+constants.  Sometimes it is built using h2ph when Perl is installed,
+but other times it is not.  Modern programs \f(CW\*(C`use Socket;\*(C'\fR instead.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2003 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
diff --git a/raw/man1/perlfaq9.1 b/raw/man1/perlfaq9.1
new file mode 100644
index 0000000..f5d151f
--- /dev/null
+++ b/raw/man1/perlfaq9.1
@@ -0,0 +1,841 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ9 1"
+.TH PERLFAQ9 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq9 \- Networking ($Revision: 1.1 $, $Date: 2004/06/16 12:41:53 $)
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This section deals with questions related to networking, the internet,
+and a few on the web.
+.Sh "What is the correct form of response from a \s-1CGI\s0 script?"
+.IX Subsection "What is the correct form of response from a CGI script?"
+(Alan Flavell <flavell+www at a5.ph.gla.ac.uk> answers...)
+.PP
+The Common Gateway Interface (\s-1CGI\s0) specifies a software interface between
+a program (\*(L"\s-1CGI\s0 script\*(R") and a web server (\s-1HTTPD\s0). It is not specific
+to Perl, and has its own FAQs and tutorials, and usenet group,
+comp.infosystems.www.authoring.cgi
+.PP
+The original \s-1CGI\s0 specification is at: http://hoohoo.ncsa.uiuc.edu/cgi/
+.PP
+Current best-practice \s-1RFC\s0 draft at: http://CGI\-Spec.Golux.Com/
+.PP
+Other relevant documentation listed in: http://www.perl.org/CGI_MetaFAQ.html
+.PP
+These Perl FAQs very selectively cover some \s-1CGI\s0 issues. However, Perl
+programmers are strongly advised to use the \s-1CGI\s0.pm module, to take care
+of the details for them.
+.PP
+The similarity between \s-1CGI\s0 response headers (defined in the \s-1CGI\s0
+specification) and \s-1HTTP\s0 response headers (defined in the \s-1HTTP\s0
+specification, \s-1RFC2616\s0) is intentional, but can sometimes be confusing.
+.PP
+The \s-1CGI\s0 specification defines two kinds of script: the \*(L"Parsed Header\*(R"
+script, and the \*(L"Non Parsed Header\*(R" (\s-1NPH\s0) script. Check your server
+documentation to see what it supports. \*(L"Parsed Header\*(R" scripts are
+simpler in various respects. The \s-1CGI\s0 specification allows any of the
+usual newline representations in the \s-1CGI\s0 response (it's the server's
+job to create an accurate \s-1HTTP\s0 response based on it). So \*(L"\en\*(R" written in
+text mode is technically correct, and recommended. \s-1NPH\s0 scripts are more
+tricky: they must put out a complete and accurate set of \s-1HTTP\s0
+transaction response headers; the \s-1HTTP\s0 specification calls for records
+to be terminated with carriage-return and line\-feed, i.e \s-1ASCII\s0 \e015\e012
+written in binary mode.
+.PP
+Using \s-1CGI\s0.pm gives excellent platform independence, including \s-1EBCDIC\s0
+systems. \s-1CGI\s0.pm selects an appropriate newline representation
+($CGI::CRLF) and sets binmode as appropriate.
+.Sh "My \s-1CGI\s0 script runs from the command line but not the browser.  (500 Server Error)"
+.IX Subsection "My CGI script runs from the command line but not the browser.  (500 Server Error)"
+Several things could be wrong.  You can go through the \*(L"Troubleshooting
+Perl \s-1CGI\s0 scripts\*(R" guide at
+.PP
+.Vb 1
+\&        http://www.perl.org/troubleshooting_CGI.html
+.Ve
+.PP
+If, after that, you can demonstrate that you've read the FAQs and that
+your problem isn't something simple that can be easily answered, you'll
+probably receive a courteous and useful reply to your question if you
+post it on comp.infosystems.www.authoring.cgi (if it's something to do
+with \s-1HTTP\s0 or the \s-1CGI\s0 protocols).  Questions that appear to be Perl
+questions but are really \s-1CGI\s0 ones that are posted to comp.lang.perl.misc
+are not so well received.
+.PP
+The useful FAQs, related documents, and troubleshooting guides are
+listed in the \s-1CGI\s0 Meta \s-1FAQ:\s0
+.PP
+.Vb 1
+\&        http://www.perl.org/CGI_MetaFAQ.html
+.Ve
+.Sh "How can I get better error messages from a \s-1CGI\s0 program?"
+.IX Subsection "How can I get better error messages from a CGI program?"
+Use the CGI::Carp module.  It replaces \f(CW\*(C`warn\*(C'\fR and \f(CW\*(C`die\*(C'\fR, plus the
+normal Carp modules \f(CW\*(C`carp\*(C'\fR, \f(CW\*(C`croak\*(C'\fR, and \f(CW\*(C`confess\*(C'\fR functions with
+more verbose and safer versions.  It still sends them to the normal
+server error log.
+.PP
+.Vb 3
+\&    use CGI::Carp;
+\&    warn "This is a complaint";
+\&    die "But this one is serious";
+.Ve
+.PP
+The following use of CGI::Carp also redirects errors to a file of your choice,
+placed in a \s-1BEGIN\s0 block to catch compile-time warnings as well:
+.PP
+.Vb 6
+\&    BEGIN {
+\&        use CGI::Carp qw(carpout);
+\&        open(LOG, ">>/var/local/cgi-logs/mycgi-log")
+\&            or die "Unable to append to mycgi-log: $!\en";
+\&        carpout(*LOG);
+\&    }
+.Ve
+.PP
+You can even arrange for fatal errors to go back to the client browser,
+which is nice for your own debugging, but might confuse the end user.
+.PP
+.Vb 2
+\&    use CGI::Carp qw(fatalsToBrowser);
+\&    die "Bad error here";
+.Ve
+.PP
+Even if the error happens before you get the \s-1HTTP\s0 header out, the module
+will try to take care of this to avoid the dreaded server 500 errors.
+Normal warnings still go out to the server error log (or wherever
+you've sent them with \f(CW\*(C`carpout\*(C'\fR) with the application name and date
+stamp prepended.
+.Sh "How do I remove \s-1HTML\s0 from a string?"
+.IX Subsection "How do I remove HTML from a string?"
+The most correct way (albeit not the fastest) is to use HTML::Parser
+from \s-1CPAN\s0.  Another mostly correct
+way is to use HTML::FormatText which not only removes \s-1HTML\s0 but also
+attempts to do a little simple formatting of the resulting plain text.
+.PP
+Many folks attempt a simple-minded regular expression approach, like
+\&\f(CW\*(C`s/<.*?>//g\*(C'\fR, but that fails in many cases because the tags
+may continue over line breaks, they may contain quoted angle\-brackets,
+or \s-1HTML\s0 comment may be present.  Plus, folks forget to convert
+entities\*(--like \f(CW\*(C`<\*(C'\fR for example.
+.PP
+Here's one \*(L"simple\-minded\*(R" approach, that works for most files:
+.PP
+.Vb 2
+\&    #!/usr/bin/perl -p0777
+\&    s/<(?:[^>'"]*|(['"]).*?\e1)*>//gs
+.Ve
+.PP
+If you want a more complete solution, see the 3\-stage striphtml
+program in
+http://www.cpan.org/authors/Tom_Christiansen/scripts/striphtml.gz
+\&.
+.PP
+Here are some tricky cases that you should think about when picking
+a solution:
+.PP
+.Vb 1
+\&    <IMG SRC = "foo.gif" ALT = "A > B">
+.Ve
+.PP
+.Vb 2
+\&    <IMG SRC = "foo.gif"
+\&         ALT = "A > B">
+.Ve
+.PP
+.Vb 1
+\&    <!-- <A comment> -->
+.Ve
+.PP
+.Vb 1
+\&    <script>if (a<b && a>c)</script>
+.Ve
+.PP
+.Vb 1
+\&    <# Just data #>
+.Ve
+.PP
+.Vb 1
+\&    <![INCLUDE CDATA [ >>>>>>>>>>>> ]]>
+.Ve
+.PP
+If \s-1HTML\s0 comments include other tags, those solutions would also break
+on text like this:
+.PP
+.Vb 3
+\&    <!-- This section commented out.
+\&        <B>You can't see me!</B>
+\&    -->
+.Ve
+.Sh "How do I extract URLs?"
+.IX Subsection "How do I extract URLs?"
+You can easily extract all sorts of URLs from \s-1HTML\s0 with
+\&\f(CW\*(C`HTML::SimpleLinkExtor\*(C'\fR which handles anchors, images, objects,
+frames, and many other tags that can contain a \s-1URL\s0.  If you need
+anything more complex, you can create your own subclass of
+\&\f(CW\*(C`HTML::LinkExtor\*(C'\fR or \f(CW\*(C`HTML::Parser\*(C'\fR.  You might even use
+\&\f(CW\*(C`HTML::SimpleLinkExtor\*(C'\fR as an example for something specifically
+suited to your needs.
+.PP
+You can use URI::Find to extract URLs from an arbitrary text document.
+.PP
+Less complete solutions involving regular expressions can save
+you a lot of processing time if you know that the input is simple.  One
+solution from Tom Christiansen runs 100 times faster than most
+module based approaches but only extracts URLs from anchors where the first
+attribute is \s-1HREF\s0 and there are no other attributes.
+.PP
+.Vb 7
+\&        #!/usr/bin/perl -n00
+\&        # qxurl - tchrist at perl.com
+\&        print "$2\en" while m{
+\&            < \es*
+\&              A \es+ HREF \es* = \es* (["']) (.*?) \e1
+\&            \es* >
+\&        }gsix;
+.Ve
+.Sh "How do I download a file from the user's machine?  How do I open a file on another machine?"
+.IX Subsection "How do I download a file from the user's machine?  How do I open a file on another machine?"
+In this case, download means to use the file upload feature of \s-1HTML\s0
+forms.  You allow the web surfer to specify a file to send to your web
+server.  To you it looks like a download, and to the user it looks
+like an upload.  No matter what you call it, you do it with what's
+known as \fBmultipart/form\-data\fR encoding.  The \s-1CGI\s0.pm module (which
+comes with Perl as part of the Standard Library) supports this in the
+\&\fIstart_multipart_form()\fR method, which isn't the same as the \fIstartform()\fR
+method.
+.PP
+See the section in the \s-1CGI\s0.pm documentation on file uploads for code
+examples and details.
+.Sh "How do I make a pop-up menu in \s-1HTML\s0?"
+.IX Subsection "How do I make a pop-up menu in HTML?"
+Use the \fB<\s-1SELECT\s0>\fR and \fB<\s-1OPTION\s0>\fR tags.  The \s-1CGI\s0.pm
+module (available from \s-1CPAN\s0) supports this widget, as well as many
+others, including some that it cleverly synthesizes on its own.
+.Sh "How do I fetch an \s-1HTML\s0 file?"
+.IX Subsection "How do I fetch an HTML file?"
+One approach, if you have the lynx text-based \s-1HTML\s0 browser installed
+on your system, is this:
+.PP
+.Vb 2
+\&    $html_code = `lynx -source $url`;
+\&    $text_data = `lynx -dump $url`;
+.Ve
+.PP
+The libwww-perl (\s-1LWP\s0) modules from \s-1CPAN\s0 provide a more powerful way
+to do this.  They don't require lynx, but like lynx, can still work
+through proxies:
+.PP
+.Vb 3
+\&    # simplest version
+\&    use LWP::Simple;
+\&    $content = get($URL);
+.Ve
+.PP
+.Vb 3
+\&    # or print HTML from a URL
+\&    use LWP::Simple;
+\&    getprint "http://www.linpro.no/lwp/";
+.Ve
+.PP
+.Vb 11
+\&    # or print ASCII from HTML from a URL
+\&    # also need HTML-Tree package from CPAN
+\&    use LWP::Simple;
+\&    use HTML::Parser;
+\&    use HTML::FormatText;
+\&    my ($html, $ascii);
+\&    $html = get("http://www.perl.com/");
+\&    defined $html
+\&        or die "Can't fetch HTML from http://www.perl.com/";
+\&    $ascii = HTML::FormatText->new->format(parse_html($html));
+\&    print $ascii;
+.Ve
+.Sh "How do I automate an \s-1HTML\s0 form submission?"
+.IX Subsection "How do I automate an HTML form submission?"
+If you're submitting values using the \s-1GET\s0 method, create a \s-1URL\s0 and encode
+the form using the \f(CW\*(C`query_form\*(C'\fR method:
+.PP
+.Vb 2
+\&    use LWP::Simple;
+\&    use URI::URL;
+.Ve
+.PP
+.Vb 3
+\&    my $url = url('http://www.perl.com/cgi-bin/cpan_mod');
+\&    $url->query_form(module => 'DB_File', readme => 1);
+\&    $content = get($url);
+.Ve
+.PP
+If you're using the \s-1POST\s0 method, create your own user agent and encode
+the content appropriately.
+.PP
+.Vb 2
+\&    use HTTP::Request::Common qw(POST);
+\&    use LWP::UserAgent;
+.Ve
+.PP
+.Vb 4
+\&    $ua = LWP::UserAgent->new();
+\&    my $req = POST 'http://www.perl.com/cgi-bin/cpan_mod',
+\&                   [ module => 'DB_File', readme => 1 ];
+\&    $content = $ua->request($req)->as_string;
+.Ve
+.Sh "How do I decode or create those %\-encodings on the web?"
+.IX Subsection "How do I decode or create those %-encodings on the web?"
+If you are writing a \s-1CGI\s0 script, you should be using the \s-1CGI\s0.pm module
+that comes with perl, or some other equivalent module.  The \s-1CGI\s0 module
+automatically decodes queries for you, and provides an \fIescape()\fR
+function to handle encoding.
+.PP
+The best source of detailed information on \s-1URI\s0 encoding is \s-1RFC\s0 2396.
+Basically, the following substitutions do it:
+.PP
+.Vb 1
+\&    s/([^\ew()'*~!.-])/sprintf '%%%02x', ord $1/eg;   # encode
+.Ve
+.PP
+.Vb 1
+\&    s/%([A-Fa-f\ed]{2})/chr hex $1/eg;            # decode
+.Ve
+.PP
+However, you should only apply them to individual \s-1URI\s0 components, not
+the entire \s-1URI\s0, otherwise you'll lose information and generally mess
+things up.  If that didn't explain it, don't worry.  Just go read
+section 2 of the \s-1RFC\s0, it's probably the best explanation there is.
+.PP
+\&\s-1RFC\s0 2396 also contains a lot of other useful information, including a
+regexp for breaking any arbitrary \s-1URI\s0 into components (Appendix B).
+.Sh "How do I redirect to another page?"
+.IX Subsection "How do I redirect to another page?"
+Specify the complete \s-1URL\s0 of the destination (even if it is on the same
+server). This is one of the two different kinds of \s-1CGI\s0 \*(L"Location:\*(R"
+responses which are defined in the \s-1CGI\s0 specification for a Parsed Headers
+script. The other kind (an absolute URLpath) is resolved internally to
+the server without any \s-1HTTP\s0 redirection. The \s-1CGI\s0 specifications do not
+allow relative URLs in either case.
+.PP
+Use of \s-1CGI\s0.pm is strongly recommended.  This example shows redirection
+with a complete \s-1URL\s0. This redirection is handled by the web browser.
+.PP
+.Vb 1
+\&      use CGI qw/:standard/;
+.Ve
+.PP
+.Vb 2
+\&      my $url = 'http://www.cpan.org/';
+\&      print redirect($url);
+.Ve
+.PP
+This example shows a redirection with an absolute URLpath.  This
+redirection is handled by the local web server.
+.PP
+.Vb 2
+\&      my $url = '/CPAN/index.html';
+\&      print redirect($url);
+.Ve
+.PP
+But if coded directly, it could be as follows (the final \*(L"\en\*(R" is
+shown separately, for clarity), using either a complete \s-1URL\s0 or
+an absolute URLpath.
+.PP
+.Vb 2
+\&      print "Location: $url\en";   # CGI response header
+\&      print "\en";                 # end of headers
+.Ve
+.Sh "How do I put a password on my web pages?"
+.IX Subsection "How do I put a password on my web pages?"
+To enable authentication for your web server, you need to configure
+your web server.  The configuration is different for different sorts
+of web servers\-\-\-apache does it differently from iPlanet which does
+it differently from \s-1IIS\s0.  Check your web server documentation for
+the details for your particular server.
+.Sh "How do I edit my .htpasswd and .htgroup files with Perl?"
+.IX Subsection "How do I edit my .htpasswd and .htgroup files with Perl?"
+The HTTPD::UserAdmin and HTTPD::GroupAdmin modules provide a
+consistent \s-1OO\s0 interface to these files, regardless of how they're
+stored.  Databases may be text, dbm, Berkeley \s-1DB\s0 or any database with
+a \s-1DBI\s0 compatible driver.  HTTPD::UserAdmin supports files used by the
+`Basic' and `Digest' authentication schemes.  Here's an example:
+.PP
+.Vb 4
+\&    use HTTPD::UserAdmin ();
+\&    HTTPD::UserAdmin
+\&          ->new(DB => "/foo/.htpasswd")
+\&          ->add($username => $password);
+.Ve
+.Sh "How do I make sure users can't enter values into a form that cause my \s-1CGI\s0 script to do bad things?"
+.IX Subsection "How do I make sure users can't enter values into a form that cause my CGI script to do bad things?"
+See the security references listed in the \s-1CGI\s0 Meta \s-1FAQ\s0
+.PP
+.Vb 1
+\&        http://www.perl.org/CGI_MetaFAQ.html
+.Ve
+.Sh "How do I parse a mail header?"
+.IX Subsection "How do I parse a mail header?"
+For a quick-and-dirty solution, try this solution derived
+from \*(L"split\*(R" in perlfunc:
+.PP
+.Vb 4
+\&    $/ = '';
+\&    $header = <MSG>;
+\&    $header =~ s/\en\es+/ /g;      # merge continuation lines
+\&    %head = ( UNIX_FROM_LINE, split /^([-\ew]+):\es*/m, $header );
+.Ve
+.PP
+That solution doesn't do well if, for example, you're trying to
+maintain all the Received lines.  A more complete approach is to use
+the Mail::Header module from \s-1CPAN\s0 (part of the MailTools package).
+.Sh "How do I decode a \s-1CGI\s0 form?"
+.IX Subsection "How do I decode a CGI form?"
+You use a standard module, probably \s-1CGI\s0.pm.  Under no circumstances
+should you attempt to do so by hand!
+.PP
+You'll see a lot of \s-1CGI\s0 programs that blindly read from \s-1STDIN\s0 the number
+of bytes equal to \s-1CONTENT_LENGTH\s0 for POSTs, or grab \s-1QUERY_STRING\s0 for
+decoding GETs.  These programs are very poorly written.  They only work
+sometimes.  They typically forget to check the return value of the \fIread()\fR
+system call, which is a cardinal sin.  They don't handle \s-1HEAD\s0 requests.
+They don't handle multipart forms used for file uploads.  They don't deal
+with \s-1GET/POST\s0 combinations where query fields are in more than one place.
+They don't deal with keywords in the query string.
+.PP
+In short, they're bad hacks.  Resist them at all costs.  Please do not be
+tempted to reinvent the wheel.  Instead, use the \s-1CGI\s0.pm or CGI_Lite.pm
+(available from \s-1CPAN\s0), or if you're trapped in the module-free land
+of perl1 .. perl4, you might look into cgi\-lib.pl (available from
+http://cgi\-lib.stanford.edu/cgi\-lib/ ).
+.PP
+Make sure you know whether to use a \s-1GET\s0 or a \s-1POST\s0 in your form.
+GETs should only be used for something that doesn't update the server.
+Otherwise you can get mangled databases and repeated feedback mail
+messages.  The fancy word for this is ``idempotency''.  This simply
+means that there should be no difference between making a \s-1GET\s0 request
+for a particular \s-1URL\s0 once or multiple times.  This is because the
+\&\s-1HTTP\s0 protocol definition says that a \s-1GET\s0 request may be cached by the
+browser, or server, or an intervening proxy.  \s-1POST\s0 requests cannot be
+cached, because each request is independent and matters.  Typically,
+\&\s-1POST\s0 requests change or depend on state on the server (query or update
+a database, send mail, or purchase a computer).
+.Sh "How do I check a valid mail address?"
+.IX Subsection "How do I check a valid mail address?"
+You can't, at least, not in real time.  Bummer, eh?
+.PP
+Without sending mail to the address and seeing whether there's a human
+on the other hand to answer you, you cannot determine whether a mail
+address is valid.  Even if you apply the mail header standard, you
+can have problems, because there are deliverable addresses that aren't
+\&\s-1RFC\-822\s0 (the mail header standard) compliant, and addresses that aren't
+deliverable which are compliant.
+.PP
+You can use the Email::Valid or RFC::RFC822::Address which check
+the format of the address, although they cannot actually tell you
+if it is a deliverable address (i.e. that mail to the address
+will not bounce).  Modules like Mail::CheckUser and Mail::EXPN
+try to interact with the domain name system or particular
+mail servers to learn even more, but their methods do not
+work everywhere\-\-\-especially for security conscious administrators.
+.PP
+Many are tempted to try to eliminate many frequently-invalid
+mail addresses with a simple regex, such as
+\&\f(CW\*(C`/^[\ew.\-]+\e@(?:[\ew\-]+\e.)+\ew+$/\*(C'\fR.  It's a very bad idea.  However,
+this also throws out many valid ones, and says nothing about
+potential deliverability, so it is not suggested.  Instead, see
+http://www.cpan.org/authors/Tom_Christiansen/scripts/ckaddr.gz ,
+which actually checks against the full \s-1RFC\s0 spec (except for nested
+comments), looks for addresses you may not wish to accept mail to
+(say, Bill Clinton or your postmaster), and then makes sure that the
+hostname given can be looked up in the \s-1DNS\s0 \s-1MX\s0 records.  It's not fast,
+but it works for what it tries to do.
+.PP
+Our best advice for verifying a person's mail address is to have them
+enter their address twice, just as you normally do to change a password.
+This usually weeds out typos.  If both versions match, send
+mail to that address with a personal message that looks somewhat like:
+.PP
+.Vb 1
+\&    Dear someuser at host.com,
+.Ve
+.PP
+.Vb 5
+\&    Please confirm the mail address you gave us Wed May  6 09:38:41
+\&    MDT 1998 by replying to this message.  Include the string
+\&    "Rumpelstiltskin" in that reply, but spelled in reverse; that is,
+\&    start with "Nik...".  Once this is done, your confirmed address will
+\&    be entered into our records.
+.Ve
+.PP
+If you get the message back and they've followed your directions,
+you can be reasonably assured that it's real.
+.PP
+A related strategy that's less open to forgery is to give them a \s-1PIN\s0
+(personal \s-1ID\s0 number).  Record the address and \s-1PIN\s0 (best that it be a
+random one) for later processing.  In the mail you send, ask them to
+include the \s-1PIN\s0 in their reply.  But if it bounces, or the message is
+included via a ``vacation'' script, it'll be there anyway.  So it's
+best to ask them to mail back a slight alteration of the \s-1PIN\s0, such as
+with the characters reversed, one added or subtracted to each digit, etc.
+.Sh "How do I decode a \s-1MIME/BASE64\s0 string?"
+.IX Subsection "How do I decode a MIME/BASE64 string?"
+The MIME\-Base64 package (available from \s-1CPAN\s0) handles this as well as
+the \s-1MIME/QP\s0 encoding.  Decoding \s-1BASE64\s0 becomes as simple as:
+.PP
+.Vb 2
+\&    use MIME::Base64;
+\&    $decoded = decode_base64($encoded);
+.Ve
+.PP
+The MIME-Tools package (available from \s-1CPAN\s0) supports extraction with
+decoding of \s-1BASE64\s0 encoded attachments and content directly from email
+messages.
+.PP
+If the string to decode is short (less than 84 bytes long)
+a more direct approach is to use the \fIunpack()\fR function's \*(L"u\*(R"
+format after minor transliterations:
+.PP
+.Vb 4
+\&    tr#A-Za-z0-9+/##cd;                   # remove non-base64 chars
+\&    tr#A-Za-z0-9+/# -_#;                  # convert to uuencoded format
+\&    $len = pack("c", 32 + 0.75*length);   # compute length byte
+\&    print unpack("u", $len . $_);         # uudecode and print
+.Ve
+.Sh "How do I return the user's mail address?"
+.IX Subsection "How do I return the user's mail address?"
+On systems that support getpwuid, the $< variable, and the
+Sys::Hostname module (which is part of the standard perl distribution),
+you can probably try using something like this:
+.PP
+.Vb 2
+\&    use Sys::Hostname;
+\&    $address = sprintf('%s@%s', scalar getpwuid($<), hostname);
+.Ve
+.PP
+Company policies on mail address can mean that this generates addresses
+that the company's mail system will not accept, so you should ask for
+users' mail addresses when this matters.  Furthermore, not all systems
+on which Perl runs are so forthcoming with this information as is Unix.
+.PP
+The Mail::Util module from \s-1CPAN\s0 (part of the MailTools package) provides a
+\&\fImailaddress()\fR function that tries to guess the mail address of the user.
+It makes a more intelligent guess than the code above, using information
+given when the module was installed, but it could still be incorrect.
+Again, the best way is often just to ask the user.
+.Sh "How do I send mail?"
+.IX Subsection "How do I send mail?"
+Use the \f(CW\*(C`sendmail\*(C'\fR program directly:
+.PP
+.Vb 6
+\&    open(SENDMAIL, "|/usr/lib/sendmail -oi -t -odq")
+\&                        or die "Can't fork for sendmail: $!\en";
+\&    print SENDMAIL <<"EOF";
+\&    From: User Originating Mail <me\e at host>
+\&    To: Final Destination <you\e at otherhost>
+\&    Subject: A relevant subject line
+.Ve
+.PP
+.Vb 4
+\&    Body of the message goes here after the blank line
+\&    in as many lines as you like.
+\&    EOF
+\&    close(SENDMAIL)     or warn "sendmail didn't close nicely";
+.Ve
+.PP
+The \fB\-oi\fR option prevents sendmail from interpreting a line consisting
+of a single dot as \*(L"end of message\*(R".  The \fB\-t\fR option says to use the
+headers to decide who to send the message to, and \fB\-odq\fR says to put
+the message into the queue.  This last option means your message won't
+be immediately delivered, so leave it out if you want immediate
+delivery.
+.PP
+Alternate, less convenient approaches include calling mail (sometimes
+called mailx) directly or simply opening up port 25 have having an
+intimate conversation between just you and the remote \s-1SMTP\s0 daemon,
+probably sendmail.
+.PP
+Or you might be able use the \s-1CPAN\s0 module Mail::Mailer:
+.PP
+.Vb 1
+\&    use Mail::Mailer;
+.Ve
+.PP
+.Vb 8
+\&    $mailer = Mail::Mailer->new();
+\&    $mailer->open({ From    => $from_address,
+\&                    To      => $to_address,
+\&                    Subject => $subject,
+\&                  })
+\&        or die "Can't open: $!\en";
+\&    print $mailer $body;
+\&    $mailer->close();
+.Ve
+.PP
+The Mail::Internet module uses Net::SMTP which is less Unix-centric than
+Mail::Mailer, but less reliable.  Avoid raw \s-1SMTP\s0 commands.  There
+are many reasons to use a mail transport agent like sendmail.  These
+include queuing, \s-1MX\s0 records, and security.
+.Sh "How do I use \s-1MIME\s0 to make an attachment to a mail message?"
+.IX Subsection "How do I use MIME to make an attachment to a mail message?"
+This answer is extracted directly from the MIME::Lite documentation.
+Create a multipart message (i.e., one with attachments).
+.PP
+.Vb 1
+\&    use MIME::Lite;
+.Ve
+.PP
+.Vb 8
+\&    ### Create a new multipart message:
+\&    $msg = MIME::Lite->new(
+\&                 From    =>'me at myhost.com',
+\&                 To      =>'you at yourhost.com',
+\&                 Cc      =>'some at other.com, some at more.com',
+\&                 Subject =>'A message with 2 parts...',
+\&                 Type    =>'multipart/mixed'
+\&                 );
+.Ve
+.PP
+.Vb 8
+\&    ### Add parts (each "attach" has same arguments as "new"):
+\&    $msg->attach(Type     =>'TEXT',
+\&                 Data     =>"Here's the GIF file you wanted"
+\&                 );
+\&    $msg->attach(Type     =>'image/gif',
+\&                 Path     =>'aaa000123.gif',
+\&                 Filename =>'logo.gif'
+\&                 );
+.Ve
+.PP
+.Vb 1
+\&    $text = $msg->as_string;
+.Ve
+.PP
+MIME::Lite also includes a method for sending these things.
+.PP
+.Vb 1
+\&    $msg->send;
+.Ve
+.PP
+This defaults to using sendmail but can be customized to use
+\&\s-1SMTP\s0 via Net::SMTP.
+.Sh "How do I read mail?"
+.IX Subsection "How do I read mail?"
+While you could use the Mail::Folder module from \s-1CPAN\s0 (part of the
+MailFolder package) or the Mail::Internet module from \s-1CPAN\s0 (part
+of the MailTools package), often a module is overkill.  Here's a
+mail sorter.
+.PP
+.Vb 1
+\&    #!/usr/bin/perl
+.Ve
+.PP
+.Vb 13
+\&    my(@msgs, @sub);
+\&    my $msgno = -1;
+\&    $/ = '';                    # paragraph reads
+\&    while (<>) {
+\&        if (/^From /m) {
+\&            /^Subject:\es*(?:Re:\es*)*(.*)/mi;
+\&            $sub[++$msgno] = lc($1) || '';
+\&        }
+\&        $msgs[$msgno] .= $_;
+\&    }
+\&    for my $i (sort { $sub[$a] cmp $sub[$b] || $a <=> $b } (0 .. $#msgs)) {
+\&        print $msgs[$i];
+\&    }
+.Ve
+.PP
+Or more succinctly,
+.PP
+.Vb 6
+\&    #!/usr/bin/perl -n00
+\&    # bysub2 - awkish sort-by-subject
+\&    BEGIN { $msgno = -1 }
+\&    $sub[++$msgno] = (/^Subject:\es*(?:Re:\es*)*(.*)/mi)[0] if /^From/m;
+\&    $msg[$msgno] .= $_;
+\&    END { print @msg[ sort { $sub[$a] cmp $sub[$b] || $a <=> $b } (0 .. $#msg) ] }
+.Ve
+.Sh "How do I find out my hostname/domainname/IP address?"
+.IX Subsection "How do I find out my hostname/domainname/IP address?"
+The normal way to find your own hostname is to call the \f(CW`hostname`\fR
+program.  While sometimes expedient, this has some problems, such as
+not knowing whether you've got the canonical name or not.  It's one of
+those tradeoffs of convenience versus portability.
+.PP
+The Sys::Hostname module (part of the standard perl distribution) will
+give you the hostname after which you can find out the \s-1IP\s0 address
+(assuming you have working \s-1DNS\s0) with a \fIgethostbyname()\fR call.
+.PP
+.Vb 4
+\&    use Socket;
+\&    use Sys::Hostname;
+\&    my $host = hostname();
+\&    my $addr = inet_ntoa(scalar gethostbyname($host || 'localhost'));
+.Ve
+.PP
+Probably the simplest way to learn your \s-1DNS\s0 domain name is to grok
+it out of /etc/resolv.conf, at least under Unix.  Of course, this
+assumes several things about your resolv.conf configuration, including
+that it exists.
+.PP
+(We still need a good \s-1DNS\s0 domain name-learning method for non-Unix
+systems.)
+.Sh "How do I fetch a news article or the active newsgroups?"
+.IX Subsection "How do I fetch a news article or the active newsgroups?"
+Use the Net::NNTP or News::NNTPClient modules, both available from \s-1CPAN\s0.
+This can make tasks like fetching the newsgroup list as simple as
+.PP
+.Vb 2
+\&    perl -MNews::NNTPClient
+\&      -e 'print News::NNTPClient->new->list("newsgroups")'
+.Ve
+.Sh "How do I fetch/put an \s-1FTP\s0 file?"
+.IX Subsection "How do I fetch/put an FTP file?"
+LWP::Simple (available from \s-1CPAN\s0) can fetch but not put.  Net::FTP (also
+available from \s-1CPAN\s0) is more complex but can put as well as fetch.
+.Sh "How can I do \s-1RPC\s0 in Perl?"
+.IX Subsection "How can I do RPC in Perl?"
+A \s-1DCE::RPC\s0 module is being developed (but is not yet available) and
+will be released as part of the DCE-Perl package (available from
+\&\s-1CPAN\s0).  The rpcgen suite, available from CPAN/authors/id/JAKE/, is
+an \s-1RPC\s0 stub generator and includes an \s-1RPC::ONC\s0 module.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2002 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
diff --git a/raw/man1/perlform.1 b/raw/man1/perlform.1
new file mode 100644
index 0000000..28f967b
--- /dev/null
+++ b/raw/man1/perlform.1
@@ -0,0 +1,502 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFORM 1"
+.TH PERLFORM 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlform \- Perl formats
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Perl has a mechanism to help you generate simple reports and charts.  To
+facilitate this, Perl helps you code up your output page close to how it
+will look when it's printed.  It can keep track of things like how many
+lines are on a page, what page you're on, when to print page headers,
+etc.  Keywords are borrowed from \s-1FORTRAN:\s0 \fIformat()\fR to declare and \fIwrite()\fR
+to execute; see their entries in perlfunc.  Fortunately, the layout is
+much more legible, more like \s-1BASIC\s0's \s-1PRINT\s0 \s-1USING\s0 statement.  Think of it
+as a poor man's \fInroff\fR\|(1).
+.PP
+Formats, like packages and subroutines, are declared rather than
+executed, so they may occur at any point in your program.  (Usually it's
+best to keep them all together though.) They have their own namespace
+apart from all the other \*(L"types\*(R" in Perl.  This means that if you have a
+function named \*(L"Foo\*(R", it is not the same thing as having a format named
+\&\*(L"Foo\*(R".  However, the default name for the format associated with a given
+filehandle is the same as the name of the filehandle.  Thus, the default
+format for \s-1STDOUT\s0 is named \*(L"\s-1STDOUT\s0\*(R", and the default format for filehandle
+\&\s-1TEMP\s0 is named \*(L"\s-1TEMP\s0\*(R".  They just look the same.  They aren't.
+.PP
+Output record formats are declared as follows:
+.PP
+.Vb 3
+\&    format NAME =
+\&    FORMLIST
+\&    .
+.Ve
+.PP
+If name is omitted, format \*(L"\s-1STDOUT\s0\*(R" is defined.  \s-1FORMLIST\s0 consists of
+a sequence of lines, each of which may be one of three types:
+.IP "1." 4
+A comment, indicated by putting a '#' in the first column.
+.IP "2." 4
+A \*(L"picture\*(R" line giving the format for one output line.
+.IP "3." 4
+An argument line supplying values to plug into the previous picture line.
+.PP
+Picture lines are printed exactly as they look, except for certain fields
+that substitute values into the line.  Each field in a picture line starts
+with either \*(L"@\*(R" (at) or \*(L"^\*(R" (caret).  These lines do not undergo any kind
+of variable interpolation.  The at field (not to be confused with the array
+marker @) is the normal kind of field; the other kind, caret fields, are used
+to do rudimentary multi-line text block filling.  The length of the field
+is supplied by padding out the field with multiple "<\*(L", \*(R">\*(L", or \*(R"|"
+characters to specify, respectively, left justification, right
+justification, or centering.  If the variable would exceed the width
+specified, it is truncated.
+.PP
+As an alternate form of right justification, you may also use \*(L"#\*(R"
+characters (with an optional \*(L".\*(R") to specify a numeric field. This way
+you can line up the decimal points. With a \*(L"0\*(R" (zero) instead of the
+first \*(L"#\*(R", the formatted number will be padded with leading zeroes if
+necessary. If any value supplied for these fields contains a newline,
+only the text up to the newline is printed. Finally, the special field
+\&\*(L"@*\*(R" can be used for printing multi\-line, nontruncated values; it
+should appear by itself on a line.
+.PP
+The values are specified on the following line in the same order as
+the picture fields.  The expressions providing the values should be
+separated by commas.  The expressions are all evaluated in a list context
+before the line is processed, so a single list expression could produce
+multiple list elements.  The expressions may be spread out to more than
+one line if enclosed in braces.  If so, the opening brace must be the first
+token on the first line.  If an expression evaluates to a number with a
+decimal part, and if the corresponding picture specifies that the decimal
+part should appear in the output (that is, any picture except multiple \*(L"#\*(R"
+characters \fBwithout\fR an embedded \*(L".\*(R"), the character used for the decimal
+point is \fBalways\fR determined by the current \s-1LC_NUMERIC\s0 locale.  This
+means that, if, for example, the run-time environment happens to specify a
+German locale, \*(L",\*(R" will be used instead of the default \*(L".\*(R".  See
+perllocale and \*(L"\s-1WARNINGS\s0\*(R" for more information.
+.PP
+Picture fields that begin with ^ rather than @ are treated specially.
+With a # field, the field is blanked out if the value is undefined.  For
+other field types, the caret enables a kind of fill mode.  Instead of an
+arbitrary expression, the value supplied must be a scalar variable name
+that contains a text string.  Perl puts as much text as it can into the
+field, and then chops off the front of the string so that the next time
+the variable is referenced, more of the text can be printed.  (Yes, this
+means that the variable itself is altered during execution of the \fIwrite()\fR
+call, and is not returned.)  Normally you would use a sequence of fields
+in a vertical stack to print out a block of text.  You might wish to end
+the final field with the text \*(L"...\*(R", which will appear in the output if
+the text was too long to appear in its entirety.  You can change which
+characters are legal to break on by changing the variable \f(CW$:\fR (that's
+\&\f(CW$FORMAT_LINE_BREAK_CHARACTERS\fR if you're using the English module) to a
+list of the desired characters.
+.PP
+Using caret fields can produce variable length records.  If the text
+to be formatted is short, you can suppress blank lines by putting a
+\&\*(L"~\*(R" (tilde) character anywhere in the line.  The tilde will be translated
+to a space upon output.  If you put a second tilde contiguous to the
+first, the line will be repeated until all the fields on the line are
+exhausted.  (If you use a field of the at variety, the expression you
+supply had better not give the same value every time forever!)
+.PP
+Top-of-form processing is by default handled by a format with the
+same name as the current filehandle with \*(L"_TOP\*(R" concatenated to it.
+It's triggered at the top of each page.  See \*(L"write\*(R" in perlfunc.
+.PP
+Examples:
+.PP
+.Vb 10
+\& # a report on the /etc/passwd file
+\& format STDOUT_TOP =
+\&                         Passwd File
+\& Name                Login    Office   Uid   Gid Home
+\& ------------------------------------------------------------------
+\& .
+\& format STDOUT =
+\& @<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<<
+\& $name,              $login,  $office,$uid,$gid, $home
+\& .
+.Ve
+.PP
+.Vb 29
+\& # a report from a bug report form
+\& format STDOUT_TOP =
+\&                         Bug Reports
+\& @<<<<<<<<<<<<<<<<<<<<<<<     @|||         @>>>>>>>>>>>>>>>>>>>>>>>
+\& $system,                      $%,         $date
+\& ------------------------------------------------------------------
+\& .
+\& format STDOUT =
+\& Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&          $subject
+\& Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&        $index,                       $description
+\& Priority: @<<<<<<<<<< Date: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&           $priority,        $date,   $description
+\& From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&       $from,                         $description
+\& Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&              $programmer,            $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<...
+\&                                      $description
+\& .
+.Ve
+.PP
+It is possible to intermix \fIprint()\fRs with \fIwrite()\fRs on the same output
+channel, but you'll have to handle \f(CW\*(C`$\-\*(C'\fR (\f(CW$FORMAT_LINES_LEFT\fR)
+yourself.
+.Sh "Format Variables"
+.IX Subsection "Format Variables"
+The current format name is stored in the variable \f(CW$~\fR (\f(CW$FORMAT_NAME\fR),
+and the current top of form format name is in \f(CW$^\fR (\f(CW$FORMAT_TOP_NAME\fR).
+The current output page number is stored in \f(CW$%\fR (\f(CW$FORMAT_PAGE_NUMBER\fR),
+and the number of lines on the page is in \f(CW$=\fR (\f(CW$FORMAT_LINES_PER_PAGE\fR).
+Whether to autoflush output on this handle is stored in \f(CW$|\fR
+(\f(CW$OUTPUT_AUTOFLUSH\fR).  The string output before each top of page (except
+the first) is stored in \f(CW$^L\fR (\f(CW$FORMAT_FORMFEED\fR).  These variables are
+set on a per-filehandle basis, so you'll need to \fIselect()\fR into a different
+one to affect them:
+.PP
+.Vb 4
+\&    select((select(OUTF),
+\&            $~ = "My_Other_Format",
+\&            $^ = "My_Top_Format"
+\&           )[0]);
+.Ve
+.PP
+Pretty ugly, eh?  It's a common idiom though, so don't be too surprised
+when you see it.  You can at least use a temporary variable to hold
+the previous filehandle: (this is a much better approach in general,
+because not only does legibility improve, you now have intermediary
+stage in the expression to single-step the debugger through):
+.PP
+.Vb 4
+\&    $ofh = select(OUTF);
+\&    $~ = "My_Other_Format";
+\&    $^ = "My_Top_Format";
+\&    select($ofh);
+.Ve
+.PP
+If you use the English module, you can even read the variable names:
+.PP
+.Vb 5
+\&    use English '-no_match_vars';
+\&    $ofh = select(OUTF);
+\&    $FORMAT_NAME     = "My_Other_Format";
+\&    $FORMAT_TOP_NAME = "My_Top_Format";
+\&    select($ofh);
+.Ve
+.PP
+But you still have those funny \fIselect()\fRs.  So just use the FileHandle
+module.  Now, you can access these special variables using lowercase
+method names instead:
+.PP
+.Vb 3
+\&    use FileHandle;
+\&    format_name     OUTF "My_Other_Format";
+\&    format_top_name OUTF "My_Top_Format";
+.Ve
+.PP
+Much better!
+.SH "NOTES"
+.IX Header "NOTES"
+Because the values line may contain arbitrary expressions (for at fields,
+not caret fields), you can farm out more sophisticated processing
+to other functions, like \fIsprintf()\fR or one of your own.  For example:
+.PP
+.Vb 4
+\&    format Ident =
+\&        @<<<<<<<<<<<<<<<
+\&        &commify($n)
+\&    .
+.Ve
+.PP
+To get a real at or caret into the field, do this:
+.PP
+.Vb 4
+\&    format Ident =
+\&    I have an @ here.
+\&            "@"
+\&    .
+.Ve
+.PP
+To center a whole line of text, do something like this:
+.PP
+.Vb 4
+\&    format Ident =
+\&    @|||||||||||||||||||||||||||||||||||||||||||||||
+\&            "Some text line"
+\&    .
+.Ve
+.PP
+There is no builtin way to say \*(L"float this to the right hand side
+of the page, however wide it is.\*(R"  You have to specify where it goes.
+The truly desperate can generate their own format on the fly, based
+on the current number of columns, and then \fIeval()\fR it:
+.PP
+.Vb 9
+\&    $format  = "format STDOUT = \en"
+\&             . '^' . '<' x $cols . "\en"
+\&             . '$entry' . "\en"
+\&             . "\et^" . "<" x ($cols-8) . "~~\en"
+\&             . '$entry' . "\en"
+\&             . ".\en";
+\&    print $format if $Debugging;
+\&    eval $format;
+\&    die $@ if $@;
+.Ve
+.PP
+Which would generate a format looking something like this:
+.PP
+.Vb 6
+\& format STDOUT =
+\& ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\& $entry
+\&         ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+\& $entry
+\& .
+.Ve
+.PP
+Here's a little program that's somewhat like \fIfmt\fR\|(1):
+.PP
+.Vb 3
+\& format =
+\& ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
+\& $_
+.Ve
+.PP
+.Vb 1
+\& .
+.Ve
+.PP
+.Vb 5
+\& $/ = '';
+\& while (<>) {
+\&     s/\es*\en\es*/ /g;
+\&     write;
+\& }
+.Ve
+.Sh "Footers"
+.IX Subsection "Footers"
+While \f(CW$FORMAT_TOP_NAME\fR contains the name of the current header format,
+there is no corresponding mechanism to automatically do the same thing
+for a footer.  Not knowing how big a format is going to be until you
+evaluate it is one of the major problems.  It's on the \s-1TODO\s0 list.
+.PP
+Here's one strategy:  If you have a fixed-size footer, you can get footers
+by checking \f(CW$FORMAT_LINES_LEFT\fR before each \fIwrite()\fR and print the footer
+yourself if necessary.
+.PP
+Here's another strategy: Open a pipe to yourself, using \f(CW\*(C`open(MYSELF, "|\-")\*(C'\fR
+(see \*(L"\fIopen()\fR\*(R" in perlfunc) and always \fIwrite()\fR to \s-1MYSELF\s0 instead of \s-1STDOUT\s0.
+Have your child process massage its \s-1STDIN\s0 to rearrange headers and footers
+however you like.  Not very convenient, but doable.
+.Sh "Accessing Formatting Internals"
+.IX Subsection "Accessing Formatting Internals"
+For low-level access to the formatting mechanism.  you may use \fIformline()\fR
+and access \f(CW$^A\fR (the \f(CW$ACCUMULATOR\fR variable) directly.
+.PP
+For example:
+.PP
+.Vb 3
+\&    $str = formline <<'END', 1,2,3;
+\&    @<<<  @|||  @>>>
+\&    END
+.Ve
+.PP
+.Vb 1
+\&    print "Wow, I just stored `$^A' in the accumulator!\en";
+.Ve
+.PP
+Or to make an \fIswrite()\fR subroutine, which is to \fIwrite()\fR what \fIsprintf()\fR
+is to \fIprintf()\fR, do this:
+.PP
+.Vb 8
+\&    use Carp;
+\&    sub swrite {
+\&        croak "usage: swrite PICTURE ARGS" unless @_;
+\&        my $format = shift;
+\&        $^A = "";
+\&        formline($format, at _);
+\&        return $^A;
+\&    }
+.Ve
+.PP
+.Vb 5
+\&    $string = swrite(<<'END', 1, 2, 3);
+\& Check me out
+\& @<<<  @|||  @>>>
+\& END
+\&    print $string;
+.Ve
+.SH "WARNINGS"
+.IX Header "WARNINGS"
+The lone dot that ends a format can also prematurely end a mail
+message passing through a misconfigured Internet mailer (and based on
+experience, such misconfiguration is the rule, not the exception).  So
+when sending format code through mail, you should indent it so that
+the format-ending dot is not on the left margin; this will prevent
+\&\s-1SMTP\s0 cutoff.
+.PP
+Lexical variables (declared with \*(L"my\*(R") are not visible within a
+format unless the format is declared within the scope of the lexical
+variable.  (They weren't visible at all before version 5.001.)
+.PP
+Formats are the only part of Perl that unconditionally use information
+from a program's locale; if a program's environment specifies an
+\&\s-1LC_NUMERIC\s0 locale, it is always used to specify the decimal point
+character in formatted output.  Perl ignores all other aspects of locale
+handling unless the \f(CW\*(C`use locale\*(C'\fR pragma is in effect.  Formatted output
+cannot be controlled by \f(CW\*(C`use locale\*(C'\fR because the pragma is tied to the
+block structure of the program, and, for historical reasons, formats
+exist outside that block structure.  See perllocale for further
+discussion of locale handling.
+.PP
+Inside of an expression, the whitespace characters \en, \et and \ef are
+considered to be equivalent to a single space.  Thus, you could think
+of this filter being applied to each value in the format:
+.PP
+.Vb 1
+\& $value =~ tr/\en\et\ef/ /;
+.Ve
+.PP
+The remaining whitespace character, \er, forces the printing of a new
+line if allowed by the picture line.
diff --git a/raw/man1/perlfunc.1 b/raw/man1/perlfunc.1
new file mode 100644
index 0000000..e10c084
--- /dev/null
+++ b/raw/man1/perlfunc.1
@@ -0,0 +1,7474 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFUNC 1"
+.TH PERLFUNC 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfunc \- Perl builtin functions
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The functions in this section can serve as terms in an expression.
+They fall into two major categories: list operators and named unary
+operators.  These differ in their precedence relationship with a
+following comma.  (See the precedence table in perlop.)  List
+operators take more than one argument, while unary operators can never
+take more than one argument.  Thus, a comma terminates the argument of
+a unary operator, but merely separates the arguments of a list
+operator.  A unary operator generally provides a scalar context to its
+argument, while a list operator may provide either scalar or list
+contexts for its arguments.  If it does both, the scalar arguments will
+be first, and the list argument will follow.  (Note that there can ever
+be only one such list argument.)  For instance, \fIsplice()\fR has three scalar
+arguments followed by a list, whereas \fIgethostbyname()\fR has four scalar
+arguments.
+.PP
+In the syntax descriptions that follow, list operators that expect a
+list (and provide list context for the elements of the list) are shown
+with \s-1LIST\s0 as an argument.  Such a list may consist of any combination
+of scalar arguments or list values; the list values will be included
+in the list as if each individual element were interpolated at that
+point in the list, forming a longer single-dimensional list value.
+Elements of the \s-1LIST\s0 should be separated by commas.
+.PP
+Any function in the list below may be used either with or without
+parentheses around its arguments.  (The syntax descriptions omit the
+parentheses.)  If you use the parentheses, the simple (but occasionally
+surprising) rule is this: It \fIlooks\fR like a function, therefore it \fIis\fR a
+function, and precedence doesn't matter.  Otherwise it's a list
+operator or unary operator, and precedence does matter.  And whitespace
+between the function and left parenthesis doesn't count\*(--so you need to
+be careful sometimes:
+.PP
+.Vb 5
+\&    print 1+2+4;        # Prints 7.
+\&    print(1+2) + 4;     # Prints 3.
+\&    print (1+2)+4;      # Also prints 3!
+\&    print +(1+2)+4;     # Prints 7.
+\&    print ((1+2)+4);    # Prints 7.
+.Ve
+.PP
+If you run Perl with the \fB\-w\fR switch it can warn you about this.  For
+example, the third line above produces:
+.PP
+.Vb 2
+\&    print (...) interpreted as function at - line 1.
+\&    Useless use of integer addition in void context at - line 1.
+.Ve
+.PP
+A few functions take no arguments at all, and therefore work as neither
+unary nor list operators.  These include such functions as \f(CW\*(C`time\*(C'\fR
+and \f(CW\*(C`endpwent\*(C'\fR.  For example, \f(CW\*(C`time+86_400\*(C'\fR always means
+\&\f(CW\*(C`time() + 86_400\*(C'\fR.
+.PP
+For functions that can be used in either a scalar or list context,
+nonabortive failure is generally indicated in a scalar context by
+returning the undefined value, and in a list context by returning the
+null list.
+.PP
+Remember the following important rule: There is \fBno rule\fR that relates
+the behavior of an expression in list context to its behavior in scalar
+context, or vice versa.  It might do two totally different things.
+Each operator and function decides which sort of value it would be most
+appropriate to return in scalar context.  Some operators return the
+length of the list that would have been returned in list context.  Some
+operators return the first value in the list.  Some operators return the
+last value in the list.  Some operators return a count of successful
+operations.  In general, they do what you want, unless you want
+consistency.
+.PP
+A named array in scalar context is quite different from what would at
+first glance appear to be a list in scalar context.  You can't get a list
+like \f(CW\*(C`(1,2,3)\*(C'\fR into being in scalar context, because the compiler knows
+the context at compile time.  It would generate the scalar comma operator
+there, not the list construction version of the comma.  That means it
+was never a list to start with.
+.PP
+In general, functions in Perl that serve as wrappers for system calls
+of the same name (like \fIchown\fR\|(2), \fIfork\fR\|(2), \fIclosedir\fR\|(2), etc.) all return
+true when they succeed and \f(CW\*(C`undef\*(C'\fR otherwise, as is usually mentioned
+in the descriptions below.  This is different from the C interfaces,
+which return \f(CW\*(C`\-1\*(C'\fR on failure.  Exceptions to this rule are \f(CW\*(C`wait\*(C'\fR,
+\&\f(CW\*(C`waitpid\*(C'\fR, and \f(CW\*(C`syscall\*(C'\fR.  System calls also set the special \f(CW$!\fR
+variable on failure.  Other functions do not, except accidentally.
+.Sh "Perl Functions by Category"
+.IX Subsection "Perl Functions by Category"
+Here are Perl's functions (including things that look like
+functions, like some keywords and named operators)
+arranged by category.  Some functions appear in more
+than one place.
+.IP "Functions for SCALARs or strings" 4
+.IX Item "Functions for SCALARs or strings"
+\&\f(CW\*(C`chomp\*(C'\fR, \f(CW\*(C`chop\*(C'\fR, \f(CW\*(C`chr\*(C'\fR, \f(CW\*(C`crypt\*(C'\fR, \f(CW\*(C`hex\*(C'\fR, \f(CW\*(C`index\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`lcfirst\*(C'\fR,
+\&\f(CW\*(C`length\*(C'\fR, \f(CW\*(C`oct\*(C'\fR, \f(CW\*(C`ord\*(C'\fR, \f(CW\*(C`pack\*(C'\fR, \f(CW\*(C`q/STRING/\*(C'\fR, \f(CW\*(C`qq/STRING/\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR,
+\&\f(CW\*(C`rindex\*(C'\fR, \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`substr\*(C'\fR, \f(CW\*(C`tr///\*(C'\fR, \f(CW\*(C`uc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, \f(CW\*(C`y///\*(C'\fR
+.IP "Regular expressions and pattern matching" 4
+.IX Item "Regular expressions and pattern matching"
+\&\f(CW\*(C`m//\*(C'\fR, \f(CW\*(C`pos\*(C'\fR, \f(CW\*(C`quotemeta\*(C'\fR, \f(CW\*(C`s///\*(C'\fR, \f(CW\*(C`split\*(C'\fR, \f(CW\*(C`study\*(C'\fR, \f(CW\*(C`qr//\*(C'\fR
+.IP "Numeric functions" 4
+.IX Item "Numeric functions"
+\&\f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`atan2\*(C'\fR, \f(CW\*(C`cos\*(C'\fR, \f(CW\*(C`exp\*(C'\fR, \f(CW\*(C`hex\*(C'\fR, \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`log\*(C'\fR, \f(CW\*(C`oct\*(C'\fR, \f(CW\*(C`rand\*(C'\fR,
+\&\f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`sqrt\*(C'\fR, \f(CW\*(C`srand\*(C'\fR
+.ie n .IP "Functions for real @ARRAYs" 4
+.el .IP "Functions for real \f(CW at ARRAYs\fR" 4
+.IX Item "Functions for real @ARRAYs"
+\&\f(CW\*(C`pop\*(C'\fR, \f(CW\*(C`push\*(C'\fR, \f(CW\*(C`shift\*(C'\fR, \f(CW\*(C`splice\*(C'\fR, \f(CW\*(C`unshift\*(C'\fR
+.IP "Functions for list data" 4
+.IX Item "Functions for list data"
+\&\f(CW\*(C`grep\*(C'\fR, \f(CW\*(C`join\*(C'\fR, \f(CW\*(C`map\*(C'\fR, \f(CW\*(C`qw/STRING/\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR, \f(CW\*(C`sort\*(C'\fR, \f(CW\*(C`unpack\*(C'\fR
+.ie n .IP "Functions for real %HASHes" 4
+.el .IP "Functions for real \f(CW%HASHes\fR" 4
+.IX Item "Functions for real %HASHes"
+\&\f(CW\*(C`delete\*(C'\fR, \f(CW\*(C`each\*(C'\fR, \f(CW\*(C`exists\*(C'\fR, \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`values\*(C'\fR
+.IP "Input and output functions" 4
+.IX Item "Input and output functions"
+\&\f(CW\*(C`binmode\*(C'\fR, \f(CW\*(C`close\*(C'\fR, \f(CW\*(C`closedir\*(C'\fR, \f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`eof\*(C'\fR,
+\&\f(CW\*(C`fileno\*(C'\fR, \f(CW\*(C`flock\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`getc\*(C'\fR, \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`printf\*(C'\fR, \f(CW\*(C`read\*(C'\fR,
+\&\f(CW\*(C`readdir\*(C'\fR, \f(CW\*(C`rewinddir\*(C'\fR, \f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`seekdir\*(C'\fR, \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR,
+\&\f(CW\*(C`sysread\*(C'\fR, \f(CW\*(C`sysseek\*(C'\fR, \f(CW\*(C`syswrite\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, \f(CW\*(C`telldir\*(C'\fR, \f(CW\*(C`truncate\*(C'\fR,
+\&\f(CW\*(C`warn\*(C'\fR, \f(CW\*(C`write\*(C'\fR
+.IP "Functions for fixed length data or records" 4
+.IX Item "Functions for fixed length data or records"
+\&\f(CW\*(C`pack\*(C'\fR, \f(CW\*(C`read\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR, \f(CW\*(C`sysread\*(C'\fR, \f(CW\*(C`syswrite\*(C'\fR, \f(CW\*(C`unpack\*(C'\fR, \f(CW\*(C`vec\*(C'\fR
+.IP "Functions for filehandles, files, or directories" 4
+.IX Item "Functions for filehandles, files, or directories"
+\&\f(CW\*(C`\-\f(CIX\f(CW\*(C'\fR, \f(CW\*(C`chdir\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR, \f(CW\*(C`chown\*(C'\fR, \f(CW\*(C`chroot\*(C'\fR, \f(CW\*(C`fcntl\*(C'\fR, \f(CW\*(C`glob\*(C'\fR,
+\&\f(CW\*(C`ioctl\*(C'\fR, \f(CW\*(C`link\*(C'\fR, \f(CW\*(C`lstat\*(C'\fR, \f(CW\*(C`mkdir\*(C'\fR, \f(CW\*(C`open\*(C'\fR, \f(CW\*(C`opendir\*(C'\fR,
+\&\f(CW\*(C`readlink\*(C'\fR, \f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`rmdir\*(C'\fR, \f(CW\*(C`stat\*(C'\fR, \f(CW\*(C`symlink\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR,
+\&\f(CW\*(C`umask\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR, \f(CW\*(C`utime\*(C'\fR
+.IP "Keywords related to the control flow of your perl program" 4
+.IX Item "Keywords related to the control flow of your perl program"
+\&\f(CW\*(C`caller\*(C'\fR, \f(CW\*(C`continue\*(C'\fR, \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`do\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`eval\*(C'\fR, \f(CW\*(C`exit\*(C'\fR,
+\&\f(CW\*(C`goto\*(C'\fR, \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, \f(CW\*(C`redo\*(C'\fR, \f(CW\*(C`return\*(C'\fR, \f(CW\*(C`sub\*(C'\fR, \f(CW\*(C`wantarray\*(C'\fR
+.IP "Keywords related to scoping" 4
+.IX Item "Keywords related to scoping"
+\&\f(CW\*(C`caller\*(C'\fR, \f(CW\*(C`import\*(C'\fR, \f(CW\*(C`local\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "Miscellaneous functions" 4
+.IX Item "Miscellaneous functions"
+\&\f(CW\*(C`defined\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`eval\*(C'\fR, \f(CW\*(C`formline\*(C'\fR, \f(CW\*(C`local\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`reset\*(C'\fR,
+\&\f(CW\*(C`scalar\*(C'\fR, \f(CW\*(C`undef\*(C'\fR, \f(CW\*(C`wantarray\*(C'\fR
+.IP "Functions for processes and process groups" 4
+.IX Item "Functions for processes and process groups"
+\&\f(CW\*(C`alarm\*(C'\fR, \f(CW\*(C`exec\*(C'\fR, \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`getpgrp\*(C'\fR, \f(CW\*(C`getppid\*(C'\fR, \f(CW\*(C`getpriority\*(C'\fR, \f(CW\*(C`kill\*(C'\fR,
+\&\f(CW\*(C`pipe\*(C'\fR, \f(CW\*(C`qx/STRING/\*(C'\fR, \f(CW\*(C`setpgrp\*(C'\fR, \f(CW\*(C`setpriority\*(C'\fR, \f(CW\*(C`sleep\*(C'\fR, \f(CW\*(C`system\*(C'\fR,
+\&\f(CW\*(C`times\*(C'\fR, \f(CW\*(C`wait\*(C'\fR, \f(CW\*(C`waitpid\*(C'\fR
+.IP "Keywords related to perl modules" 4
+.IX Item "Keywords related to perl modules"
+\&\f(CW\*(C`do\*(C'\fR, \f(CW\*(C`import\*(C'\fR, \f(CW\*(C`no\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`require\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "Keywords related to classes and object-orientedness" 4
+.IX Item "Keywords related to classes and object-orientedness"
+\&\f(CW\*(C`bless\*(C'\fR, \f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`ref\*(C'\fR, \f(CW\*(C`tie\*(C'\fR, \f(CW\*(C`tied\*(C'\fR,
+\&\f(CW\*(C`untie\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "Low-level socket functions" 4
+.IX Item "Low-level socket functions"
+\&\f(CW\*(C`accept\*(C'\fR, \f(CW\*(C`bind\*(C'\fR, \f(CW\*(C`connect\*(C'\fR, \f(CW\*(C`getpeername\*(C'\fR, \f(CW\*(C`getsockname\*(C'\fR,
+\&\f(CW\*(C`getsockopt\*(C'\fR, \f(CW\*(C`listen\*(C'\fR, \f(CW\*(C`recv\*(C'\fR, \f(CW\*(C`send\*(C'\fR, \f(CW\*(C`setsockopt\*(C'\fR, \f(CW\*(C`shutdown\*(C'\fR,
+\&\f(CW\*(C`socket\*(C'\fR, \f(CW\*(C`socketpair\*(C'\fR
+.IP "System V interprocess communication functions" 4
+.IX Item "System V interprocess communication functions"
+\&\f(CW\*(C`msgctl\*(C'\fR, \f(CW\*(C`msgget\*(C'\fR, \f(CW\*(C`msgrcv\*(C'\fR, \f(CW\*(C`msgsnd\*(C'\fR, \f(CW\*(C`semctl\*(C'\fR, \f(CW\*(C`semget\*(C'\fR, \f(CW\*(C`semop\*(C'\fR,
+\&\f(CW\*(C`shmctl\*(C'\fR, \f(CW\*(C`shmget\*(C'\fR, \f(CW\*(C`shmread\*(C'\fR, \f(CW\*(C`shmwrite\*(C'\fR
+.IP "Fetching user and group info" 4
+.IX Item "Fetching user and group info"
+\&\f(CW\*(C`endgrent\*(C'\fR, \f(CW\*(C`endhostent\*(C'\fR, \f(CW\*(C`endnetent\*(C'\fR, \f(CW\*(C`endpwent\*(C'\fR, \f(CW\*(C`getgrent\*(C'\fR,
+\&\f(CW\*(C`getgrgid\*(C'\fR, \f(CW\*(C`getgrnam\*(C'\fR, \f(CW\*(C`getlogin\*(C'\fR, \f(CW\*(C`getpwent\*(C'\fR, \f(CW\*(C`getpwnam\*(C'\fR,
+\&\f(CW\*(C`getpwuid\*(C'\fR, \f(CW\*(C`setgrent\*(C'\fR, \f(CW\*(C`setpwent\*(C'\fR
+.IP "Fetching network info" 4
+.IX Item "Fetching network info"
+\&\f(CW\*(C`endprotoent\*(C'\fR, \f(CW\*(C`endservent\*(C'\fR, \f(CW\*(C`gethostbyaddr\*(C'\fR, \f(CW\*(C`gethostbyname\*(C'\fR,
+\&\f(CW\*(C`gethostent\*(C'\fR, \f(CW\*(C`getnetbyaddr\*(C'\fR, \f(CW\*(C`getnetbyname\*(C'\fR, \f(CW\*(C`getnetent\*(C'\fR,
+\&\f(CW\*(C`getprotobyname\*(C'\fR, \f(CW\*(C`getprotobynumber\*(C'\fR, \f(CW\*(C`getprotoent\*(C'\fR,
+\&\f(CW\*(C`getservbyname\*(C'\fR, \f(CW\*(C`getservbyport\*(C'\fR, \f(CW\*(C`getservent\*(C'\fR, \f(CW\*(C`sethostent\*(C'\fR,
+\&\f(CW\*(C`setnetent\*(C'\fR, \f(CW\*(C`setprotoent\*(C'\fR, \f(CW\*(C`setservent\*(C'\fR
+.IP "Time-related functions" 4
+.IX Item "Time-related functions"
+\&\f(CW\*(C`gmtime\*(C'\fR, \f(CW\*(C`localtime\*(C'\fR, \f(CW\*(C`time\*(C'\fR, \f(CW\*(C`times\*(C'\fR
+.IP "Functions new in perl5" 4
+.IX Item "Functions new in perl5"
+\&\f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`bless\*(C'\fR, \f(CW\*(C`chomp\*(C'\fR, \f(CW\*(C`chr\*(C'\fR, \f(CW\*(C`exists\*(C'\fR, \f(CW\*(C`formline\*(C'\fR, \f(CW\*(C`glob\*(C'\fR,
+\&\f(CW\*(C`import\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`lcfirst\*(C'\fR, \f(CW\*(C`map\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`no\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`prototype\*(C'\fR,
+\&\f(CW\*(C`qx\*(C'\fR, \f(CW\*(C`qw\*(C'\fR, \f(CW\*(C`readline\*(C'\fR, \f(CW\*(C`readpipe\*(C'\fR, \f(CW\*(C`ref\*(C'\fR, \f(CW\*(C`sub*\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR, \f(CW\*(C`tie\*(C'\fR,
+\&\f(CW\*(C`tied\*(C'\fR, \f(CW\*(C`uc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, \f(CW\*(C`untie\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.Sp
+* \- \f(CW\*(C`sub\*(C'\fR was a keyword in perl4, but in perl5 it is an
+operator, which can be used in expressions.
+.IP "Functions obsoleted in perl5" 4
+.IX Item "Functions obsoleted in perl5"
+\&\f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR
+.Sh "Portability"
+.IX Subsection "Portability"
+Perl was born in Unix and can therefore access all common Unix
+system calls.  In non-Unix environments, the functionality of some
+Unix system calls may not be available, or details of the available
+functionality may differ slightly.  The Perl functions affected
+by this are:
+.PP
+\&\f(CW\*(C`\-X\*(C'\fR, \f(CW\*(C`binmode\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR, \f(CW\*(C`chown\*(C'\fR, \f(CW\*(C`chroot\*(C'\fR, \f(CW\*(C`crypt\*(C'\fR,
+\&\f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`endgrent\*(C'\fR, \f(CW\*(C`endhostent\*(C'\fR,
+\&\f(CW\*(C`endnetent\*(C'\fR, \f(CW\*(C`endprotoent\*(C'\fR, \f(CW\*(C`endpwent\*(C'\fR, \f(CW\*(C`endservent\*(C'\fR, \f(CW\*(C`exec\*(C'\fR,
+\&\f(CW\*(C`fcntl\*(C'\fR, \f(CW\*(C`flock\*(C'\fR, \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`getgrent\*(C'\fR, \f(CW\*(C`getgrgid\*(C'\fR, \f(CW\*(C`gethostbyname\*(C'\fR,
+\&\f(CW\*(C`gethostent\*(C'\fR, \f(CW\*(C`getlogin\*(C'\fR, \f(CW\*(C`getnetbyaddr\*(C'\fR, \f(CW\*(C`getnetbyname\*(C'\fR, \f(CW\*(C`getnetent\*(C'\fR,
+\&\f(CW\*(C`getppid\*(C'\fR, \f(CW\*(C`getprgp\*(C'\fR, \f(CW\*(C`getpriority\*(C'\fR, \f(CW\*(C`getprotobynumber\*(C'\fR,
+\&\f(CW\*(C`getprotoent\*(C'\fR, \f(CW\*(C`getpwent\*(C'\fR, \f(CW\*(C`getpwnam\*(C'\fR, \f(CW\*(C`getpwuid\*(C'\fR,
+\&\f(CW\*(C`getservbyport\*(C'\fR, \f(CW\*(C`getservent\*(C'\fR, \f(CW\*(C`getsockopt\*(C'\fR, \f(CW\*(C`glob\*(C'\fR, \f(CW\*(C`ioctl\*(C'\fR,
+\&\f(CW\*(C`kill\*(C'\fR, \f(CW\*(C`link\*(C'\fR, \f(CW\*(C`lstat\*(C'\fR, \f(CW\*(C`msgctl\*(C'\fR, \f(CW\*(C`msgget\*(C'\fR, \f(CW\*(C`msgrcv\*(C'\fR,
+\&\f(CW\*(C`msgsnd\*(C'\fR, \f(CW\*(C`open\*(C'\fR, \f(CW\*(C`pipe\*(C'\fR, \f(CW\*(C`readlink\*(C'\fR, \f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`semctl\*(C'\fR,
+\&\f(CW\*(C`semget\*(C'\fR, \f(CW\*(C`semop\*(C'\fR, \f(CW\*(C`setgrent\*(C'\fR, \f(CW\*(C`sethostent\*(C'\fR, \f(CW\*(C`setnetent\*(C'\fR,
+\&\f(CW\*(C`setpgrp\*(C'\fR, \f(CW\*(C`setpriority\*(C'\fR, \f(CW\*(C`setprotoent\*(C'\fR, \f(CW\*(C`setpwent\*(C'\fR,
+\&\f(CW\*(C`setservent\*(C'\fR, \f(CW\*(C`setsockopt\*(C'\fR, \f(CW\*(C`shmctl\*(C'\fR, \f(CW\*(C`shmget\*(C'\fR, \f(CW\*(C`shmread\*(C'\fR,
+\&\f(CW\*(C`shmwrite\*(C'\fR, \f(CW\*(C`socket\*(C'\fR, \f(CW\*(C`socketpair\*(C'\fR,
+\&\f(CW\*(C`stat\*(C'\fR, \f(CW\*(C`symlink\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR, \f(CW\*(C`system\*(C'\fR,
+\&\f(CW\*(C`times\*(C'\fR, \f(CW\*(C`truncate\*(C'\fR, \f(CW\*(C`umask\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR,
+\&\f(CW\*(C`utime\*(C'\fR, \f(CW\*(C`wait\*(C'\fR, \f(CW\*(C`waitpid\*(C'\fR
+.PP
+For more information about the portability of these functions, see
+perlport and other available platform-specific documentation.
+.Sh "Alphabetical Listing of Perl Functions"
+.IX Subsection "Alphabetical Listing of Perl Functions"
+.IP "\-X \s-1FILEHANDLE\s0" 8
+.IX Item "-X FILEHANDLE"
+.PD 0
+.IP "\-X \s-1EXPR\s0" 8
+.IX Item "-X EXPR"
+.IP "\-X" 8
+.IX Item "-X"
+.PD
+A file test, where X is one of the letters listed below.  This unary
+operator takes one argument, either a filename or a filehandle, and
+tests the associated file to see if something is true about it.  If the
+argument is omitted, tests \f(CW$_\fR, except for \f(CW\*(C`\-t\*(C'\fR, which tests \s-1STDIN\s0.
+Unless otherwise documented, it returns \f(CW1\fR for true and \f(CW''\fR for false, or
+the undefined value if the file doesn't exist.  Despite the funny
+names, precedence is the same as any other named unary operator, and
+the argument may be parenthesized like any other unary operator.  The
+operator may be any of:
+.IX Xref "-r -w -x -o -R -W -X -O -e -z -s -f -d -l -p -S -b -c -t -u -g -k -T -B -M -A -C"
+.Sp
+.Vb 4
+\&    -r  File is readable by effective uid/gid.
+\&    -w  File is writable by effective uid/gid.
+\&    -x  File is executable by effective uid/gid.
+\&    -o  File is owned by effective uid.
+.Ve
+.Sp
+.Vb 4
+\&    -R  File is readable by real uid/gid.
+\&    -W  File is writable by real uid/gid.
+\&    -X  File is executable by real uid/gid.
+\&    -O  File is owned by real uid.
+.Ve
+.Sp
+.Vb 3
+\&    -e  File exists.
+\&    -z  File has zero size (is empty).
+\&    -s  File has nonzero size (returns size in bytes).
+.Ve
+.Sp
+.Vb 8
+\&    -f  File is a plain file.
+\&    -d  File is a directory.
+\&    -l  File is a symbolic link.
+\&    -p  File is a named pipe (FIFO), or Filehandle is a pipe.
+\&    -S  File is a socket.
+\&    -b  File is a block special file.
+\&    -c  File is a character special file.
+\&    -t  Filehandle is opened to a tty.
+.Ve
+.Sp
+.Vb 3
+\&    -u  File has setuid bit set.
+\&    -g  File has setgid bit set.
+\&    -k  File has sticky bit set.
+.Ve
+.Sp
+.Vb 2
+\&    -T  File is an ASCII text file (heuristic guess).
+\&    -B  File is a "binary" file (opposite of -T).
+.Ve
+.Sp
+.Vb 3
+\&    -M  Script start time minus file modification time, in days.
+\&    -A  Same for access time.
+\&    -C  Same for inode change time (Unix, may differ for other platforms)
+.Ve
+.Sp
+Example:
+.Sp
+.Vb 5
+\&    while (<>) {
+\&        chomp;
+\&        next unless -f $_;      # ignore specials
+\&        #...
+\&    }
+.Ve
+.Sp
+The interpretation of the file permission operators \f(CW\*(C`\-r\*(C'\fR, \f(CW\*(C`\-R\*(C'\fR,
+\&\f(CW\*(C`\-w\*(C'\fR, \f(CW\*(C`\-W\*(C'\fR, \f(CW\*(C`\-x\*(C'\fR, and \f(CW\*(C`\-X\*(C'\fR is by default based solely on the mode
+of the file and the uids and gids of the user.  There may be other
+reasons you can't actually read, write, or execute the file.  Such
+reasons may be for example network filesystem access controls, ACLs
+(access control lists), read-only filesystems, and unrecognized
+executable formats.
+.Sp
+Also note that, for the superuser on the local filesystems, the \f(CW\*(C`\-r\*(C'\fR,
+\&\f(CW\*(C`\-R\*(C'\fR, \f(CW\*(C`\-w\*(C'\fR, and \f(CW\*(C`\-W\*(C'\fR tests always return 1, and \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-X\*(C'\fR return 1
+if any execute bit is set in the mode.  Scripts run by the superuser
+may thus need to do a \fIstat()\fR to determine the actual mode of the file,
+or temporarily set their effective uid to something else.
+.Sp
+If you are using ACLs, there is a pragma called \f(CW\*(C`filetest\*(C'\fR that may
+produce more accurate results than the bare \fIstat()\fR mode bits.
+When under the \f(CW\*(C`use filetest 'access'\*(C'\fR the above-mentioned filetests
+will test whether the permission can (not) be granted using the
+\&\fIaccess()\fR family of system calls.  Also note that the \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-X\*(C'\fR may
+under this pragma return true even if there are no execute permission
+bits set (nor any extra execute permission ACLs).  This strangeness is
+due to the underlying system calls' definitions.  Read the
+documentation for the \f(CW\*(C`filetest\*(C'\fR pragma for more information.
+.Sp
+Note that \f(CW\*(C`\-s/a/b/\*(C'\fR does not do a negated substitution.  Saying
+\&\f(CW\*(C`\-exp($foo)\*(C'\fR still works as expected, however\*(--only single letters
+following a minus are interpreted as file tests.
+.Sp
+The \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR switches work as follows.  The first block or so of the
+file is examined for odd characters such as strange control codes or
+characters with the high bit set.  If too many strange characters (>30%)
+are found, it's a \f(CW\*(C`\-B\*(C'\fR file, otherwise it's a \f(CW\*(C`\-T\*(C'\fR file.  Also, any file
+containing null in the first block is considered a binary file.  If \f(CW\*(C`\-T\*(C'\fR
+or \f(CW\*(C`\-B\*(C'\fR is used on a filehandle, the current \s-1IO\s0 buffer is examined
+rather than the first block.  Both \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR return true on a null
+file, or a file at \s-1EOF\s0 when testing a filehandle.  Because you have to
+read a file to do the \f(CW\*(C`\-T\*(C'\fR test, on most occasions you want to use a \f(CW\*(C`\-f\*(C'\fR
+against the file first, as in \f(CW\*(C`next unless \-f $file && \-T $file\*(C'\fR.
+.Sp
+If any of the file tests (or either the \f(CW\*(C`stat\*(C'\fR or \f(CW\*(C`lstat\*(C'\fR operators) are given
+the special filehandle consisting of a solitary underline, then the stat
+structure of the previous file test (or stat operator) is used, saving
+a system call.  (This doesn't work with \f(CW\*(C`\-t\*(C'\fR, and you need to remember
+that \fIlstat()\fR and \f(CW\*(C`\-l\*(C'\fR will leave values in the stat structure for the
+symbolic link, not the real file.)  (Also, if the stat buffer was filled by
+a \f(CW\*(C`lstat\*(C'\fR call, \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR will reset it with the results of \f(CW\*(C`stat _\*(C'\fR).
+Example:
+.Sp
+.Vb 1
+\&    print "Can do.\en" if -r $a || -w _ || -x _;
+.Ve
+.Sp
+.Vb 9
+\&    stat($filename);
+\&    print "Readable\en" if -r _;
+\&    print "Writable\en" if -w _;
+\&    print "Executable\en" if -x _;
+\&    print "Setuid\en" if -u _;
+\&    print "Setgid\en" if -g _;
+\&    print "Sticky\en" if -k _;
+\&    print "Text\en" if -T _;
+\&    print "Binary\en" if -B _;
+.Ve
+.IP "abs \s-1VALUE\s0" 8
+.IX Item "abs VALUE"
+.PD 0
+.IP "abs" 8
+.IX Item "abs"
+.PD
+Returns the absolute value of its argument.
+If \s-1VALUE\s0 is omitted, uses \f(CW$_\fR.
+.IP "accept \s-1NEWSOCKET\s0,GENERICSOCKET" 8
+.IX Item "accept NEWSOCKET,GENERICSOCKET"
+Accepts an incoming socket connect, just as the \fIaccept\fR\|(2) system call
+does.  Returns the packed address if it succeeded, false otherwise.
+See the example in \*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F.  See \*(L"$^F\*(R" in perlvar.
+.IP "alarm \s-1SECONDS\s0" 8
+.IX Item "alarm SECONDS"
+.PD 0
+.IP "alarm" 8
+.IX Item "alarm"
+.PD
+Arranges to have a \s-1SIGALRM\s0 delivered to this process after the
+specified number of wallclock seconds have elapsed.  If \s-1SECONDS\s0 is not
+specified, the value stored in \f(CW$_\fR is used. (On some machines,
+unfortunately, the elapsed time may be up to one second less or more
+than you specified because of how seconds are counted, and process
+scheduling may delay the delivery of the signal even further.)
+.Sp
+Only one timer may be counting at once.  Each call disables the
+previous timer, and an argument of \f(CW0\fR may be supplied to cancel the
+previous timer without starting a new one.  The returned value is the
+amount of time remaining on the previous timer.
+.Sp
+For delays of finer granularity than one second, you may use Perl's
+four-argument version of \fIselect()\fR leaving the first three arguments
+undefined, or you might be able to use the \f(CW\*(C`syscall\*(C'\fR interface to
+access \fIsetitimer\fR\|(2) if your system supports it.  The Time::HiRes
+module (from \s-1CPAN\s0, and starting from Perl 5.8 part of the standard
+distribution) may also prove useful.
+.Sp
+It is usually a mistake to intermix \f(CW\*(C`alarm\*(C'\fR and \f(CW\*(C`sleep\*(C'\fR calls.
+(\f(CW\*(C`sleep\*(C'\fR may be internally implemented in your system with \f(CW\*(C`alarm\*(C'\fR)
+.Sp
+If you want to use \f(CW\*(C`alarm\*(C'\fR to time out a system call you need to use an
+\&\f(CW\*(C`eval\*(C'\fR/\f(CW\*(C`die\*(C'\fR pair.  You can't rely on the alarm causing the system call to
+fail with \f(CW$!\fR set to \f(CW\*(C`EINTR\*(C'\fR because Perl sets up signal handlers to
+restart system calls on some systems.  Using \f(CW\*(C`eval\*(C'\fR/\f(CW\*(C`die\*(C'\fR always works,
+modulo the caveats given in \*(L"Signals\*(R" in perlipc.
+.Sp
+.Vb 13
+\&    eval {
+\&        local $SIG{ALRM} = sub { die "alarm\en" }; # NB: \en required
+\&        alarm $timeout;
+\&        $nread = sysread SOCKET, $buffer, $size;
+\&        alarm 0;
+\&    };
+\&    if ($@) {
+\&        die unless $@ eq "alarm\en";   # propagate unexpected errors
+\&        # timed out
+\&    }
+\&    else {
+\&        # didn't
+\&    }
+.Ve
+.Sp
+For more information see perlipc.
+.IP "atan2 Y,X" 8
+.IX Item "atan2 Y,X"
+Returns the arctangent of Y/X in the range \-PI to \s-1PI\s0.
+.Sp
+For the tangent operation, you may use the \f(CW\*(C`Math::Trig::tan\*(C'\fR
+function, or use the familiar relation:
+.Sp
+.Vb 1
+\&    sub tan { sin($_[0]) / cos($_[0])  }
+.Ve
+.IP "bind \s-1SOCKET\s0,NAME" 8
+.IX Item "bind SOCKET,NAME"
+Binds a network address to a socket, just as the bind system call
+does.  Returns true if it succeeded, false otherwise.  \s-1NAME\s0 should be a
+packed address of the appropriate type for the socket.  See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "binmode \s-1FILEHANDLE\s0, \s-1LAYER\s0" 8
+.IX Item "binmode FILEHANDLE, LAYER"
+.PD 0
+.IP "binmode \s-1FILEHANDLE\s0" 8
+.IX Item "binmode FILEHANDLE"
+.PD
+Arranges for \s-1FILEHANDLE\s0 to be read or written in \*(L"binary\*(R" or \*(L"text\*(R"
+mode on systems where the run-time libraries distinguish between
+binary and text files.  If \s-1FILEHANDLE\s0 is an expression, the value is
+taken as the name of the filehandle.  Returns true on success,
+otherwise it returns \f(CW\*(C`undef\*(C'\fR and sets \f(CW$!\fR (errno).
+.Sp
+On some systems (in general, \s-1DOS\s0 and Windows-based systems) \fIbinmode()\fR
+is necessary when you're not working with a text file.  For the sake
+of portability it is a good idea to always use it when appropriate,
+and to never use it when it isn't appropriate.  Also, people can
+set their I/O to be by default \s-1UTF\-8\s0 encoded Unicode, not bytes.
+.Sp
+In other words: regardless of platform, use \fIbinmode()\fR on binary data,
+like for example images.
+.Sp
+If \s-1LAYER\s0 is present it is a single string, but may contain multiple
+directives. The directives alter the behaviour of the file handle.
+When \s-1LAYER\s0 is present using binmode on text file makes sense.
+.Sp
+If \s-1LAYER\s0 is omitted or specified as \f(CW\*(C`:raw\*(C'\fR the filehandle is made
+suitable for passing binary data. This includes turning off possible \s-1CRLF\s0
+translation and marking it as bytes (as opposed to Unicode characters).
+Note that as despite what may be implied in \fI\*(L"Programming Perl\*(R"\fR
+(the Camel) or elsewhere \f(CW\*(C`:raw\*(C'\fR is \fInot\fR the simply inverse of \f(CW\*(C`:crlf\*(C'\fR
+\&\*(-- other layers which would affect binary nature of the stream are
+\&\fIalso\fR disabled. See PerlIO, perlrun and the discussion about the
+\&\s-1PERLIO\s0 environment variable.
+.Sp
+The \f(CW\*(C`:bytes\*(C'\fR, \f(CW\*(C`:crlf\*(C'\fR, and \f(CW\*(C`:utf8\*(C'\fR, and any other directives of the
+form \f(CW\*(C`:...\*(C'\fR, are called I/O \fIlayers\fR.  The \f(CW\*(C`open\*(C'\fR pragma can be used to
+establish default I/O layers.  See open.
+.Sp
+\&\fIThe \s-1LAYER\s0 parameter of the \fIbinmode()\fI function is described as \*(L"\s-1DISCIPLINE\s0\*(R"
+in \*(L"Programming Perl, 3rd Edition\*(R".  However, since the publishing of this
+book, by many known as \*(L"Camel \s-1III\s0\*(R", the consensus of the naming of this
+functionality has moved from \*(L"discipline\*(R" to \*(L"layer\*(R".  All documentation
+of this version of Perl therefore refers to \*(L"layers\*(R" rather than to
+\&\*(L"disciplines\*(R".  Now back to the regularly scheduled documentation...\fR
+.Sp
+To mark \s-1FILEHANDLE\s0 as \s-1UTF\-8\s0, use \f(CW\*(C`:utf8\*(C'\fR.
+.Sp
+In general, \fIbinmode()\fR should be called after \fIopen()\fR but before any I/O
+is done on the filehandle.  Calling \fIbinmode()\fR will normally flush any
+pending buffered output data (and perhaps pending input data) on the
+handle.  An exception to this is the \f(CW\*(C`:encoding\*(C'\fR layer that
+changes the default character encoding of the handle, see open.
+The \f(CW\*(C`:encoding\*(C'\fR layer sometimes needs to be called in
+mid\-stream, and it doesn't flush the stream.  The \f(CW\*(C`:encoding\*(C'\fR
+also implicitly pushes on top of itself the \f(CW\*(C`:utf8\*(C'\fR layer because
+internally Perl will operate on \s-1UTF\-8\s0 encoded Unicode characters.
+.Sp
+The operating system, device drivers, C libraries, and Perl run-time
+system all work together to let the programmer treat a single
+character (\f(CW\*(C`\en\*(C'\fR) as the line terminator, irrespective of the external
+representation.  On many operating systems, the native text file
+representation matches the internal representation, but on some
+platforms the external representation of \f(CW\*(C`\en\*(C'\fR is made up of more than
+one character.
+.Sp
+Mac \s-1OS\s0, all variants of Unix, and Stream_LF files on \s-1VMS\s0 use a single
+character to end each line in the external representation of text (even
+though that single character is \s-1CARRIAGE\s0 \s-1RETURN\s0 on Mac \s-1OS\s0 and \s-1LINE\s0 \s-1FEED\s0
+on Unix and most \s-1VMS\s0 files). In other systems like \s-1OS/2\s0, \s-1DOS\s0 and the
+various flavors of MS-Windows your program sees a \f(CW\*(C`\en\*(C'\fR as a simple \f(CW\*(C`\ecJ\*(C'\fR,
+but what's stored in text files are the two characters \f(CW\*(C`\ecM\ecJ\*(C'\fR.  That
+means that, if you don't use \fIbinmode()\fR on these systems, \f(CW\*(C`\ecM\ecJ\*(C'\fR
+sequences on disk will be converted to \f(CW\*(C`\en\*(C'\fR on input, and any \f(CW\*(C`\en\*(C'\fR in
+your program will be converted back to \f(CW\*(C`\ecM\ecJ\*(C'\fR on output.  This is what
+you want for text files, but it can be disastrous for binary files.
+.Sp
+Another consequence of using \fIbinmode()\fR (on some systems) is that
+special end-of-file markers will be seen as part of the data stream.
+For systems from the Microsoft family this means that if your binary
+data contains \f(CW\*(C`\ecZ\*(C'\fR, the I/O subsystem will regard it as the end of
+the file, unless you use \fIbinmode()\fR.
+.Sp
+\&\fIbinmode()\fR is not only important for \fIreadline()\fR and \fIprint()\fR operations,
+but also when using \fIread()\fR, \fIseek()\fR, \fIsysread()\fR, \fIsyswrite()\fR and \fItell()\fR
+(see perlport for more details).  See the \f(CW$/\fR and \f(CW\*(C`$\e\*(C'\fR variables
+in perlvar for how to manually set your input and output
+line-termination sequences.
+.IP "bless \s-1REF\s0,CLASSNAME" 8
+.IX Item "bless REF,CLASSNAME"
+.PD 0
+.IP "bless \s-1REF\s0" 8
+.IX Item "bless REF"
+.PD
+This function tells the thingy referenced by \s-1REF\s0 that it is now an object
+in the \s-1CLASSNAME\s0 package.  If \s-1CLASSNAME\s0 is omitted, the current package
+is used.  Because a \f(CW\*(C`bless\*(C'\fR is often the last thing in a constructor,
+it returns the reference for convenience.  Always use the two-argument
+version if the function doing the blessing might be inherited by a
+derived class.  See perltoot and perlobj for more about the blessing
+(and blessings) of objects.
+.Sp
+Consider always blessing objects in CLASSNAMEs that are mixed case.
+Namespaces with all lowercase names are considered reserved for
+Perl pragmata.  Builtin types have all uppercase names, so to prevent
+confusion, you may wish to avoid such package names as well.  Make sure
+that \s-1CLASSNAME\s0 is a true value.
+.Sp
+See \*(L"Perl Modules\*(R" in perlmod.
+.IP "caller \s-1EXPR\s0" 8
+.IX Item "caller EXPR"
+.PD 0
+.IP "caller" 8
+.IX Item "caller"
+.PD
+Returns the context of the current subroutine call.  In scalar context,
+returns the caller's package name if there is a caller, that is, if
+we're in a subroutine or \f(CW\*(C`eval\*(C'\fR or \f(CW\*(C`require\*(C'\fR, and the undefined value
+otherwise.  In list context, returns
+.Sp
+.Vb 1
+\&    ($package, $filename, $line) = caller;
+.Ve
+.Sp
+With \s-1EXPR\s0, it returns some extra information that the debugger uses to
+print a stack trace.  The value of \s-1EXPR\s0 indicates how many call frames
+to go back before the current one.
+.Sp
+.Vb 2
+\&    ($package, $filename, $line, $subroutine, $hasargs,
+\&    $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i);
+.Ve
+.Sp
+Here \f(CW$subroutine\fR may be \f(CW\*(C`(eval)\*(C'\fR if the frame is not a subroutine
+call, but an \f(CW\*(C`eval\*(C'\fR.  In such a case additional elements \f(CW$evaltext\fR and
+\&\f(CW$is_require\fR are set: \f(CW$is_require\fR is true if the frame is created by a
+\&\f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR statement, \f(CW$evaltext\fR contains the text of the
+\&\f(CW\*(C`eval EXPR\*(C'\fR statement.  In particular, for an \f(CW\*(C`eval BLOCK\*(C'\fR statement,
+\&\f(CW$filename\fR is \f(CW\*(C`(eval)\*(C'\fR, but \f(CW$evaltext\fR is undefined.  (Note also that
+each \f(CW\*(C`use\*(C'\fR statement creates a \f(CW\*(C`require\*(C'\fR frame inside an \f(CW\*(C`eval EXPR\*(C'\fR
+frame.)  \f(CW$subroutine\fR may also be \f(CW\*(C`(unknown)\*(C'\fR if this particular
+subroutine happens to have been deleted from the symbol table.
+\&\f(CW$hasargs\fR is true if a new instance of \f(CW at _\fR was set up for the frame.
+\&\f(CW$hints\fR and \f(CW$bitmask\fR contain pragmatic hints that the caller was
+compiled with.  The \f(CW$hints\fR and \f(CW$bitmask\fR values are subject to change
+between versions of Perl, and are not meant for external use.
+.Sp
+Furthermore, when called from within the \s-1DB\s0 package, caller returns more
+detailed information: it sets the list variable \f(CW at DB::args\fR to be the
+arguments with which the subroutine was invoked.
+.Sp
+Be aware that the optimizer might have optimized call frames away before
+\&\f(CW\*(C`caller\*(C'\fR had a chance to get the information.  That means that \f(CWcaller(N)\fR
+might not return information about the call frame you expect it do, for
+\&\f(CW\*(C`N > 1\*(C'\fR.  In particular, \f(CW at DB::args\fR might have information from the
+previous time \f(CW\*(C`caller\*(C'\fR was called.
+.IP "chdir \s-1EXPR\s0" 8
+.IX Item "chdir EXPR"
+Changes the working directory to \s-1EXPR\s0, if possible. If \s-1EXPR\s0 is omitted,
+changes to the directory specified by \f(CW$ENV{HOME}\fR, if set; if not,
+changes to the directory specified by \f(CW$ENV{LOGDIR}\fR. (Under \s-1VMS\s0, the
+variable \f(CW$ENV{SYS$LOGIN}\fR is also checked, and used if it is set.) If
+neither is set, \f(CW\*(C`chdir\*(C'\fR does nothing. It returns true upon success,
+false otherwise. See the example under \f(CW\*(C`die\*(C'\fR.
+.IP "chmod \s-1LIST\s0" 8
+.IX Item "chmod LIST"
+Changes the permissions of a list of files.  The first element of the
+list must be the numerical mode, which should probably be an octal
+number, and which definitely should \fInot\fR a string of octal digits:
+\&\f(CW0644\fR is okay, \f(CW'0644'\fR is not.  Returns the number of files
+successfully changed.  See also \*(L"oct\*(R", if all you have is a string.
+.Sp
+.Vb 6
+\&    $cnt = chmod 0755, 'foo', 'bar';
+\&    chmod 0755, @executables;
+\&    $mode = '0644'; chmod $mode, 'foo';      # !!! sets mode to
+\&                                             # --w----r-T
+\&    $mode = '0644'; chmod oct($mode), 'foo'; # this is better
+\&    $mode = 0644;   chmod $mode, 'foo';      # this is best
+.Ve
+.Sp
+You can also import the symbolic \f(CW\*(C`S_I*\*(C'\fR constants from the Fcntl
+module:
+.Sp
+.Vb 1
+\&    use Fcntl ':mode';
+.Ve
+.Sp
+.Vb 2
+\&    chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
+\&    # This is identical to the chmod 0755 of the above example.
+.Ve
+.IP "chomp \s-1VARIABLE\s0" 8
+.IX Item "chomp VARIABLE"
+.PD 0
+.IP "chomp( \s-1LIST\s0 )" 8
+.IX Item "chomp( LIST )"
+.IP "chomp" 8
+.IX Item "chomp"
+.PD
+This safer version of \*(L"chop\*(R" removes any trailing string
+that corresponds to the current value of \f(CW$/\fR (also known as
+\&\f(CW$INPUT_RECORD_SEPARATOR\fR in the \f(CW\*(C`English\*(C'\fR module).  It returns the total
+number of characters removed from all its arguments.  It's often used to
+remove the newline from the end of an input record when you're worried
+that the final record may be missing its newline.  When in paragraph
+mode (\f(CW\*(C`$/ = ""\*(C'\fR), it removes all trailing newlines from the string.
+When in slurp mode (\f(CW\*(C`$/ = undef\*(C'\fR) or fixed-length record mode (\f(CW$/\fR is
+a reference to an integer or the like, see perlvar) \fIchomp()\fR won't
+remove anything.
+If \s-1VARIABLE\s0 is omitted, it chomps \f(CW$_\fR.  Example:
+.Sp
+.Vb 5
+\&    while (<>) {
+\&        chomp;  # avoid \en on last field
+\&        @array = split(/:/);
+\&        # ...
+\&    }
+.Ve
+.Sp
+If \s-1VARIABLE\s0 is a hash, it chomps the hash's values, but not its keys.
+.Sp
+You can actually chomp anything that's an lvalue, including an assignment:
+.Sp
+.Vb 2
+\&    chomp($cwd = `pwd`);
+\&    chomp($answer = <STDIN>);
+.Ve
+.Sp
+If you chomp a list, each element is chomped, and the total number of
+characters removed is returned.
+.Sp
+Note that parentheses are necessary when you're chomping anything
+that is not a simple variable.  This is because \f(CW\*(C`chomp $cwd = `pwd`;\*(C'\fR
+is interpreted as \f(CW\*(C`(chomp $cwd) = `pwd`;\*(C'\fR, rather than as
+\&\f(CW\*(C`chomp( $cwd = `pwd` )\*(C'\fR which you might expect.  Similarly,
+\&\f(CW\*(C`chomp $a, $b\*(C'\fR is interpreted as \f(CW\*(C`chomp($a), $b\*(C'\fR rather than
+as \f(CW\*(C`chomp($a, $b)\*(C'\fR.
+.IP "chop \s-1VARIABLE\s0" 8
+.IX Item "chop VARIABLE"
+.PD 0
+.IP "chop( \s-1LIST\s0 )" 8
+.IX Item "chop( LIST )"
+.IP "chop" 8
+.IX Item "chop"
+.PD
+Chops off the last character of a string and returns the character
+chopped.  It is much more efficient than \f(CW\*(C`s/.$//s\*(C'\fR because it neither
+scans nor copies the string.  If \s-1VARIABLE\s0 is omitted, chops \f(CW$_\fR.
+If \s-1VARIABLE\s0 is a hash, it chops the hash's values, but not its keys.
+.Sp
+You can actually chop anything that's an lvalue, including an assignment.
+.Sp
+If you chop a list, each element is chopped.  Only the value of the
+last \f(CW\*(C`chop\*(C'\fR is returned.
+.Sp
+Note that \f(CW\*(C`chop\*(C'\fR returns the last character.  To return all but the last
+character, use \f(CW\*(C`substr($string, 0, \-1)\*(C'\fR.
+.Sp
+See also \*(L"chomp\*(R".
+.IP "chown \s-1LIST\s0" 8
+.IX Item "chown LIST"
+Changes the owner (and group) of a list of files.  The first two
+elements of the list must be the \fInumeric\fR uid and gid, in that
+order.  A value of \-1 in either position is interpreted by most
+systems to leave that value unchanged.  Returns the number of files
+successfully changed.
+.Sp
+.Vb 2
+\&    $cnt = chown $uid, $gid, 'foo', 'bar';
+\&    chown $uid, $gid, @filenames;
+.Ve
+.Sp
+Here's an example that looks up nonnumeric uids in the passwd file:
+.Sp
+.Vb 4
+\&    print "User: ";
+\&    chomp($user = <STDIN>);
+\&    print "Files: ";
+\&    chomp($pattern = <STDIN>);
+.Ve
+.Sp
+.Vb 2
+\&    ($login,$pass,$uid,$gid) = getpwnam($user)
+\&        or die "$user not in passwd file";
+.Ve
+.Sp
+.Vb 2
+\&    @ary = glob($pattern);      # expand filenames
+\&    chown $uid, $gid, @ary;
+.Ve
+.Sp
+On most systems, you are not allowed to change the ownership of the
+file unless you're the superuser, although you should be able to change
+the group to any of your secondary groups.  On insecure systems, these
+restrictions may be relaxed, but this is not a portable assumption.
+On \s-1POSIX\s0 systems, you can detect this condition this way:
+.Sp
+.Vb 2
+\&    use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
+\&    $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
+.Ve
+.IP "chr \s-1NUMBER\s0" 8
+.IX Item "chr NUMBER"
+.PD 0
+.IP "chr" 8
+.IX Item "chr"
+.PD
+Returns the character represented by that \s-1NUMBER\s0 in the character set.
+For example, \f(CW\*(C`chr(65)\*(C'\fR is \f(CW"A"\fR in either \s-1ASCII\s0 or Unicode, and
+chr(0x263a) is a Unicode smiley face.  Note that characters from 128
+to 255 (inclusive) are by default not encoded in \s-1UTF\-8\s0 Unicode for
+backward compatibility reasons (but see encoding).
+.Sp
+If \s-1NUMBER\s0 is omitted, uses \f(CW$_\fR.
+.Sp
+For the reverse, use \*(L"ord\*(R".
+.Sp
+Note that under the \f(CW\*(C`bytes\*(C'\fR pragma the \s-1NUMBER\s0 is masked to
+the low eight bits.
+.Sp
+See perlunicode and encoding for more about Unicode.
+.IP "chroot \s-1FILENAME\s0" 8
+.IX Item "chroot FILENAME"
+.PD 0
+.IP "chroot" 8
+.IX Item "chroot"
+.PD
+This function works like the system call by the same name: it makes the
+named directory the new root directory for all further pathnames that
+begin with a \f(CW\*(C`/\*(C'\fR by your process and all its children.  (It doesn't
+change your current working directory, which is unaffected.)  For security
+reasons, this call is restricted to the superuser.  If \s-1FILENAME\s0 is
+omitted, does a \f(CW\*(C`chroot\*(C'\fR to \f(CW$_\fR.
+.IP "close \s-1FILEHANDLE\s0" 8
+.IX Item "close FILEHANDLE"
+.PD 0
+.IP "close" 8
+.IX Item "close"
+.PD
+Closes the file or pipe associated with the file handle, returning
+true only if \s-1IO\s0 buffers are successfully flushed and closes the system
+file descriptor.  Closes the currently selected filehandle if the
+argument is omitted.
+.Sp
+You don't have to close \s-1FILEHANDLE\s0 if you are immediately going to do
+another \f(CW\*(C`open\*(C'\fR on it, because \f(CW\*(C`open\*(C'\fR will close it for you.  (See
+\&\f(CW\*(C`open\*(C'\fR.)  However, an explicit \f(CW\*(C`close\*(C'\fR on an input file resets the line
+counter (\f(CW$.\fR), while the implicit close done by \f(CW\*(C`open\*(C'\fR does not.
+.Sp
+If the file handle came from a piped open \f(CW\*(C`close\*(C'\fR will additionally
+return false if one of the other system calls involved fails or if the
+program exits with non-zero status.  (If the only problem was that the
+program exited non-zero \f(CW$!\fR will be set to \f(CW0\fR.)  Closing a pipe
+also waits for the process executing on the pipe to complete, in case you
+want to look at the output of the pipe afterwards, and
+implicitly puts the exit status value of that command into \f(CW$?\fR.
+.Sp
+Prematurely closing the read end of a pipe (i.e. before the process
+writing to it at the other end has closed it) will result in a
+\&\s-1SIGPIPE\s0 being delivered to the writer.  If the other end can't
+handle that, be sure to read all the data before closing the pipe.
+.Sp
+Example:
+.Sp
+.Vb 8
+\&    open(OUTPUT, '|sort >foo')  # pipe to sort
+\&        or die "Can't start sort: $!";
+\&    #...                        # print stuff to output
+\&    close OUTPUT                # wait for sort to finish
+\&        or warn $! ? "Error closing sort pipe: $!"
+\&                   : "Exit status $? from sort";
+\&    open(INPUT, 'foo')          # get sort's results
+\&        or die "Can't open 'foo' for input: $!";
+.Ve
+.Sp
+\&\s-1FILEHANDLE\s0 may be an expression whose value can be used as an indirect
+filehandle, usually the real filehandle name.
+.IP "closedir \s-1DIRHANDLE\s0" 8
+.IX Item "closedir DIRHANDLE"
+Closes a directory opened by \f(CW\*(C`opendir\*(C'\fR and returns the success of that
+system call.
+.IP "connect \s-1SOCKET\s0,NAME" 8
+.IX Item "connect SOCKET,NAME"
+Attempts to connect to a remote socket, just as the connect system call
+does.  Returns true if it succeeded, false otherwise.  \s-1NAME\s0 should be a
+packed address of the appropriate type for the socket.  See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "continue \s-1BLOCK\s0" 8
+.IX Item "continue BLOCK"
+Actually a flow control statement rather than a function.  If there is a
+\&\f(CW\*(C`continue\*(C'\fR \s-1BLOCK\s0 attached to a \s-1BLOCK\s0 (typically in a \f(CW\*(C`while\*(C'\fR or
+\&\f(CW\*(C`foreach\*(C'\fR), it is always executed just before the conditional is about to
+be evaluated again, just like the third part of a \f(CW\*(C`for\*(C'\fR loop in C.  Thus
+it can be used to increment a loop variable, even when the loop has been
+continued via the \f(CW\*(C`next\*(C'\fR statement (which is similar to the C \f(CW\*(C`continue\*(C'\fR
+statement).
+.Sp
+\&\f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, or \f(CW\*(C`redo\*(C'\fR may appear within a \f(CW\*(C`continue\*(C'\fR
+block.  \f(CW\*(C`last\*(C'\fR and \f(CW\*(C`redo\*(C'\fR will behave as if they had been executed within
+the main block.  So will \f(CW\*(C`next\*(C'\fR, but since it will execute a \f(CW\*(C`continue\*(C'\fR
+block, it may be more entertaining.
+.Sp
+.Vb 9
+\&    while (EXPR) {
+\&        ### redo always comes here
+\&        do_something;
+\&    } continue {
+\&        ### next always comes here
+\&        do_something_else;
+\&        # then back the top to re-check EXPR
+\&    }
+\&    ### last always comes here
+.Ve
+.Sp
+Omitting the \f(CW\*(C`continue\*(C'\fR section is semantically equivalent to using an
+empty one, logically enough.  In that case, \f(CW\*(C`next\*(C'\fR goes directly back
+to check the condition at the top of the loop.
+.IP "cos \s-1EXPR\s0" 8
+.IX Item "cos EXPR"
+.PD 0
+.IP "cos" 8
+.IX Item "cos"
+.PD
+Returns the cosine of \s-1EXPR\s0 (expressed in radians).  If \s-1EXPR\s0 is omitted,
+takes cosine of \f(CW$_\fR.
+.Sp
+For the inverse cosine operation, you may use the \f(CW\*(C`Math::Trig::acos()\*(C'\fR
+function, or use this relation:
+.Sp
+.Vb 1
+\&    sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
+.Ve
+.IP "crypt \s-1PLAINTEXT\s0,SALT" 8
+.IX Item "crypt PLAINTEXT,SALT"
+Encrypts a string exactly like the \fIcrypt\fR\|(3) function in the C library
+(assuming that you actually have a version there that has not been
+extirpated as a potential munition).  This can prove useful for checking
+the password file for lousy passwords, amongst other things.  Only the
+guys wearing white hats should do this.
+.Sp
+Note that crypt is intended to be a one-way function, much like
+breaking eggs to make an omelette.  There is no (known) corresponding
+decrypt function (in other words, the \fIcrypt()\fR is a one-way hash
+function).  As a result, this function isn't all that useful for
+cryptography.  (For that, see your nearby \s-1CPAN\s0 mirror.)
+.Sp
+When verifying an existing encrypted string you should use the
+encrypted text as the salt (like \f(CW\*(C`crypt($plain, $crypted) eq
+$crypted\*(C'\fR).  This allows your code to work with the standard crypt
+and with more exotic implementations.  In other words, do not assume
+anything about the returned string itself, or how many bytes in
+the encrypted string matter.
+.Sp
+Traditionally the result is a string of 13 bytes: two first bytes of
+the salt, followed by 11 bytes from the set \f(CW\*(C`[./0\-9A\-Za\-z]\*(C'\fR, and only
+the first eight bytes of the encrypted string mattered, but
+alternative hashing schemes (like \s-1MD5\s0), higher level security schemes
+(like C2), and implementations on non-UNIX platforms may produce
+different strings.
+.Sp
+When choosing a new salt create a random two character string whose
+characters come from the set \f(CW\*(C`[./0\-9A\-Za\-z]\*(C'\fR (like \f(CW\*(C`join '', ('.',
+\&'/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]\*(C'\fR).  This set of
+characters is just a recommendation; the characters allowed in
+the salt depend solely on your system's crypt library, and Perl can't
+restrict what salts \f(CW\*(C`crypt()\*(C'\fR accepts.
+.Sp
+Here's an example that makes sure that whoever runs this program knows
+their own password:
+.Sp
+.Vb 1
+\&    $pwd = (getpwuid($<))[1];
+.Ve
+.Sp
+.Vb 5
+\&    system "stty -echo";
+\&    print "Password: ";
+\&    chomp($word = <STDIN>);
+\&    print "\en";
+\&    system "stty echo";
+.Ve
+.Sp
+.Vb 5
+\&    if (crypt($word, $pwd) ne $pwd) {
+\&        die "Sorry...\en";
+\&    } else {
+\&        print "ok\en";
+\&    }
+.Ve
+.Sp
+Of course, typing in your own password to whoever asks you
+for it is unwise.
+.Sp
+The crypt function is unsuitable for encrypting large quantities
+of data, not least of all because you can't get the information
+back.  Look at the \fIby\-module/Crypt\fR and \fIby\-module/PGP\fR directories
+on your favorite \s-1CPAN\s0 mirror for a slew of potentially useful
+modules.
+.Sp
+If using \fIcrypt()\fR on a Unicode string (which \fIpotentially\fR has
+characters with codepoints above 255), Perl tries to make sense
+of the situation by trying to downgrade (a copy of the string)
+the string back to an eight-bit byte string before calling \fIcrypt()\fR
+(on that copy).  If that works, good.  If not, \fIcrypt()\fR dies with
+\&\f(CW\*(C`Wide character in crypt\*(C'\fR.
+.IP "dbmclose \s-1HASH\s0" 8
+.IX Item "dbmclose HASH"
+[This function has been largely superseded by the \f(CW\*(C`untie\*(C'\fR function.]
+.Sp
+Breaks the binding between a \s-1DBM\s0 file and a hash.
+.IP "dbmopen \s-1HASH\s0,DBNAME,MASK" 8
+.IX Item "dbmopen HASH,DBNAME,MASK"
+[This function has been largely superseded by the \f(CW\*(C`tie\*(C'\fR function.]
+.Sp
+This binds a \fIdbm\fR\|(3), \fIndbm\fR\|(3), \fIsdbm\fR\|(3), \fIgdbm\fR\|(3), or Berkeley \s-1DB\s0 file to a
+hash.  \s-1HASH\s0 is the name of the hash.  (Unlike normal \f(CW\*(C`open\*(C'\fR, the first
+argument is \fInot\fR a filehandle, even though it looks like one).  \s-1DBNAME\s0
+is the name of the database (without the \fI.dir\fR or \fI.pag\fR extension if
+any).  If the database does not exist, it is created with protection
+specified by \s-1MASK\s0 (as modified by the \f(CW\*(C`umask\*(C'\fR).  If your system supports
+only the older \s-1DBM\s0 functions, you may perform only one \f(CW\*(C`dbmopen\*(C'\fR in your
+program.  In older versions of Perl, if your system had neither \s-1DBM\s0 nor
+ndbm, calling \f(CW\*(C`dbmopen\*(C'\fR produced a fatal error; it now falls back to
+\&\fIsdbm\fR\|(3).
+.Sp
+If you don't have write access to the \s-1DBM\s0 file, you can only read hash
+variables, not set them.  If you want to test whether you can write,
+either use file tests or try setting a dummy hash entry inside an \f(CW\*(C`eval\*(C'\fR,
+which will trap the error.
+.Sp
+Note that functions such as \f(CW\*(C`keys\*(C'\fR and \f(CW\*(C`values\*(C'\fR may return huge lists
+when used on large \s-1DBM\s0 files.  You may prefer to use the \f(CW\*(C`each\*(C'\fR
+function to iterate over large \s-1DBM\s0 files.  Example:
+.Sp
+.Vb 6
+\&    # print out history file offsets
+\&    dbmopen(%HIST,'/usr/lib/news/history',0666);
+\&    while (($key,$val) = each %HIST) {
+\&        print $key, ' = ', unpack('L',$val), "\en";
+\&    }
+\&    dbmclose(%HIST);
+.Ve
+.Sp
+See also AnyDBM_File for a more general description of the pros and
+cons of the various dbm approaches, as well as DB_File for a particularly
+rich implementation.
+.Sp
+You can control which \s-1DBM\s0 library you use by loading that library
+before you call \fIdbmopen()\fR:
+.Sp
+.Vb 3
+\&    use DB_File;
+\&    dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
+\&        or die "Can't open netscape history file: $!";
+.Ve
+.IP "defined \s-1EXPR\s0" 8
+.IX Item "defined EXPR"
+.PD 0
+.IP "defined" 8
+.IX Item "defined"
+.PD
+Returns a Boolean value telling whether \s-1EXPR\s0 has a value other than
+the undefined value \f(CW\*(C`undef\*(C'\fR.  If \s-1EXPR\s0 is not present, \f(CW$_\fR will be
+checked.
+.Sp
+Many operations return \f(CW\*(C`undef\*(C'\fR to indicate failure, end of file,
+system error, uninitialized variable, and other exceptional
+conditions.  This function allows you to distinguish \f(CW\*(C`undef\*(C'\fR from
+other values.  (A simple Boolean test will not distinguish among
+\&\f(CW\*(C`undef\*(C'\fR, zero, the empty string, and \f(CW"0"\fR, which are all equally
+false.)  Note that since \f(CW\*(C`undef\*(C'\fR is a valid scalar, its presence
+doesn't \fInecessarily\fR indicate an exceptional condition: \f(CW\*(C`pop\*(C'\fR
+returns \f(CW\*(C`undef\*(C'\fR when its argument is an empty array, \fIor\fR when the
+element to return happens to be \f(CW\*(C`undef\*(C'\fR.
+.Sp
+You may also use \f(CW\*(C`defined(&func)\*(C'\fR to check whether subroutine \f(CW&func\fR
+has ever been defined.  The return value is unaffected by any forward
+declarations of \f(CW&func\fR.  Note that a subroutine which is not defined
+may still be callable: its package may have an \f(CW\*(C`AUTOLOAD\*(C'\fR method that
+makes it spring into existence the first time that it is called \*(-- see
+perlsub.
+.Sp
+Use of \f(CW\*(C`defined\*(C'\fR on aggregates (hashes and arrays) is deprecated.  It
+used to report whether memory for that aggregate has ever been
+allocated.  This behavior may disappear in future versions of Perl.
+You should instead use a simple test for size:
+.Sp
+.Vb 2
+\&    if (@an_array) { print "has array elements\en" }
+\&    if (%a_hash)   { print "has hash members\en"   }
+.Ve
+.Sp
+When used on a hash element, it tells you whether the value is defined,
+not whether the key exists in the hash.  Use \*(L"exists\*(R" for the latter
+purpose.
+.Sp
+Examples:
+.Sp
+.Vb 6
+\&    print if defined $switch{'D'};
+\&    print "$val\en" while defined($val = pop(@ary));
+\&    die "Can't readlink $sym: $!"
+\&        unless defined($value = readlink $sym);
+\&    sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
+\&    $debugging = 0 unless defined $debugging;
+.Ve
+.Sp
+Note:  Many folks tend to overuse \f(CW\*(C`defined\*(C'\fR, and then are surprised to
+discover that the number \f(CW0\fR and \f(CW""\fR (the zero-length string) are, in fact,
+defined values.  For example, if you say
+.Sp
+.Vb 1
+\&    "ab" =~ /a(.*)b/;
+.Ve
+.Sp
+The pattern match succeeds, and \f(CW$1\fR is defined, despite the fact that it
+matched \*(L"nothing\*(R".  But it didn't really match nothing\*(--rather, it
+matched something that happened to be zero characters long.  This is all
+very above-board and honest.  When a function returns an undefined value,
+it's an admission that it couldn't give you an honest answer.  So you
+should use \f(CW\*(C`defined\*(C'\fR only when you're questioning the integrity of what
+you're trying to do.  At other times, a simple comparison to \f(CW0\fR or \f(CW""\fR is
+what you want.
+.Sp
+See also \*(L"undef\*(R", \*(L"exists\*(R", \*(L"ref\*(R".
+.IP "delete \s-1EXPR\s0" 8
+.IX Item "delete EXPR"
+Given an expression that specifies a hash element, array element, hash slice,
+or array slice, deletes the specified element(s) from the hash or array.
+In the case of an array, if the array elements happen to be at the end,
+the size of the array will shrink to the highest element that tests
+true for \fIexists()\fR (or 0 if no such element exists).
+.Sp
+Returns each element so deleted or the undefined value if there was no such
+element.  Deleting from \f(CW$ENV{}\fR modifies the environment.  Deleting from
+a hash tied to a \s-1DBM\s0 file deletes the entry from the \s-1DBM\s0 file.  Deleting
+from a \f(CW\*(C`tie\*(C'\fRd hash or array may not necessarily return anything.
+.Sp
+Deleting an array element effectively returns that position of the array
+to its initial, uninitialized state.  Subsequently testing for the same
+element with \fIexists()\fR will return false.  Note that deleting array
+elements in the middle of an array will not shift the index of the ones
+after them down\*(--use \fIsplice()\fR for that.  See \*(L"exists\*(R".
+.Sp
+The following (inefficiently) deletes all the values of \f(CW%HASH\fR and \f(CW at ARRAY:\fR
+.Sp
+.Vb 3
+\&    foreach $key (keys %HASH) {
+\&        delete $HASH{$key};
+\&    }
+.Ve
+.Sp
+.Vb 3
+\&    foreach $index (0 .. $#ARRAY) {
+\&        delete $ARRAY[$index];
+\&    }
+.Ve
+.Sp
+And so do these:
+.Sp
+.Vb 1
+\&    delete @HASH{keys %HASH};
+.Ve
+.Sp
+.Vb 1
+\&    delete @ARRAY[0 .. $#ARRAY];
+.Ve
+.Sp
+But both of these are slower than just assigning the empty list
+or undefining \f(CW%HASH\fR or \f(CW at ARRAY:\fR
+.Sp
+.Vb 2
+\&    %HASH = ();         # completely empty %HASH
+\&    undef %HASH;        # forget %HASH ever existed
+.Ve
+.Sp
+.Vb 2
+\&    @ARRAY = ();        # completely empty @ARRAY
+\&    undef @ARRAY;       # forget @ARRAY ever existed
+.Ve
+.Sp
+Note that the \s-1EXPR\s0 can be arbitrarily complicated as long as the final
+operation is a hash element, array element,  hash slice, or array slice
+lookup:
+.Sp
+.Vb 2
+\&    delete $ref->[$x][$y]{$key};
+\&    delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
+.Ve
+.Sp
+.Vb 2
+\&    delete $ref->[$x][$y][$index];
+\&    delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices];
+.Ve
+.IP "die \s-1LIST\s0" 8
+.IX Item "die LIST"
+Outside an \f(CW\*(C`eval\*(C'\fR, prints the value of \s-1LIST\s0 to \f(CW\*(C`STDERR\*(C'\fR and
+exits with the current value of \f(CW$!\fR (errno).  If \f(CW$!\fR is \f(CW0\fR,
+exits with the value of \f(CW\*(C`($? >> 8)\*(C'\fR (backtick `command`
+status).  If \f(CW\*(C`($? >> 8)\*(C'\fR is \f(CW0\fR, exits with \f(CW255\fR.  Inside
+an \f(CW\*(C`eval(),\*(C'\fR the error message is stuffed into \f(CW$@\fR and the
+\&\f(CW\*(C`eval\*(C'\fR is terminated with the undefined value.  This makes
+\&\f(CW\*(C`die\*(C'\fR the way to raise an exception.
+.Sp
+Equivalent examples:
+.Sp
+.Vb 2
+\&    die "Can't cd to spool: $!\en" unless chdir '/usr/spool/news';
+\&    chdir '/usr/spool/news' or die "Can't cd to spool: $!\en"
+.Ve
+.Sp
+If the last element of \s-1LIST\s0 does not end in a newline, the current
+script line number and input line number (if any) are also printed,
+and a newline is supplied.  Note that the \*(L"input line number\*(R" (also
+known as \*(L"chunk\*(R") is subject to whatever notion of \*(L"line\*(R" happens to
+be currently in effect, and is also available as the special variable
+\&\f(CW$.\fR.  See \*(L"$/\*(R" in perlvar and \*(L"$.\*(R" in perlvar.
+.Sp
+Hint: sometimes appending \f(CW", stopped"\fR to your message will cause it
+to make better sense when the string \f(CW"at foo line 123"\fR is appended.
+Suppose you are running script \*(L"canasta\*(R".
+.Sp
+.Vb 2
+\&    die "/etc/games is no good";
+\&    die "/etc/games is no good, stopped";
+.Ve
+.Sp
+produce, respectively
+.Sp
+.Vb 2
+\&    /etc/games is no good at canasta line 123.
+\&    /etc/games is no good, stopped at canasta line 123.
+.Ve
+.Sp
+See also \fIexit()\fR, \fIwarn()\fR, and the Carp module.
+.Sp
+If \s-1LIST\s0 is empty and \f(CW$@\fR already contains a value (typically from a
+previous eval) that value is reused after appending \f(CW"\et...propagated"\fR.
+This is useful for propagating exceptions:
+.Sp
+.Vb 2
+\&    eval { ... };
+\&    die unless $@ =~ /Expected exception/;
+.Ve
+.Sp
+If \s-1LIST\s0 is empty and \f(CW$@\fR contains an object reference that has a
+\&\f(CW\*(C`PROPAGATE\*(C'\fR method, that method will be called with additional file
+and line number parameters.  The return value replaces the value in
+\&\f(CW$@\fR.  ie. as if \f(CW\*(C`$@ = eval { $@\->PROPAGATE(_\|_FILE_\|_, _\|_LINE_\|_) };\*(C'\fR
+were called.
+.Sp
+If \f(CW$@\fR is empty then the string \f(CW"Died"\fR is used.
+.Sp
+\&\fIdie()\fR can also be called with a reference argument.  If this happens to be
+trapped within an \fIeval()\fR, $@ contains the reference.  This behavior permits
+a more elaborate exception handling implementation using objects that
+maintain arbitrary state about the nature of the exception.  Such a scheme
+is sometimes preferable to matching particular string values of $@ using
+regular expressions.  Here's an example:
+.Sp
+.Vb 9
+\&    eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
+\&    if ($@) {
+\&        if (ref($@) && UNIVERSAL::isa($@,"Some::Module::Exception")) {
+\&            # handle Some::Module::Exception
+\&        }
+\&        else {
+\&            # handle all other possible exceptions
+\&        }
+\&    }
+.Ve
+.Sp
+Because perl will stringify uncaught exception messages before displaying
+them, you may want to overload stringification operations on such custom
+exception objects.  See overload for details about that.
+.Sp
+You can arrange for a callback to be run just before the \f(CW\*(C`die\*(C'\fR
+does its deed, by setting the \f(CW$SIG{_\|_DIE_\|_}\fR hook.  The associated
+handler will be called with the error text and can change the error
+message, if it sees fit, by calling \f(CW\*(C`die\*(C'\fR again.  See
+\&\*(L"$SIG{expr}\*(R" in perlvar for details on setting \f(CW%SIG\fR entries, and
+\&\*(L"eval \s-1BLOCK\s0\*(R" for some examples.  Although this feature was meant
+to be run only right before your program was to exit, this is not
+currently the case\*(--the \f(CW$SIG{_\|_DIE_\|_}\fR hook is currently called
+even inside \fIeval()\fRed blocks/strings!  If one wants the hook to do
+nothing in such situations, put
+.Sp
+.Vb 1
+\&        die @_ if $^S;
+.Ve
+.Sp
+as the first line of the handler (see \*(L"$^S\*(R" in perlvar).  Because
+this promotes strange action at a distance, this counterintuitive
+behavior may be fixed in a future release.
+.IP "do \s-1BLOCK\s0" 8
+.IX Item "do BLOCK"
+Not really a function.  Returns the value of the last command in the
+sequence of commands indicated by \s-1BLOCK\s0.  When modified by a loop
+modifier, executes the \s-1BLOCK\s0 once before testing the loop condition.
+(On other statements the loop modifiers test the conditional first.)
+.Sp
+\&\f(CW\*(C`do BLOCK\*(C'\fR does \fInot\fR count as a loop, so the loop control statements
+\&\f(CW\*(C`next\*(C'\fR, \f(CW\*(C`last\*(C'\fR, or \f(CW\*(C`redo\*(C'\fR cannot be used to leave or restart the block.
+See perlsyn for alternative strategies.
+.IP "do \s-1SUBROUTINE\s0(\s-1LIST\s0)" 8
+.IX Item "do SUBROUTINE(LIST)"
+A deprecated form of subroutine call.  See perlsub.
+.IP "do \s-1EXPR\s0" 8
+.IX Item "do EXPR"
+Uses the value of \s-1EXPR\s0 as a filename and executes the contents of the
+file as a Perl script.  Its primary use is to include subroutines
+from a Perl subroutine library.
+.Sp
+.Vb 1
+\&    do 'stat.pl';
+.Ve
+.Sp
+is just like
+.Sp
+.Vb 1
+\&    eval `cat stat.pl`;
+.Ve
+.Sp
+except that it's more efficient and concise, keeps track of the current
+filename for error messages, searches the \f(CW at INC\fR libraries, and updates
+\&\f(CW%INC\fR if the file is found.  See \*(L"Predefined Names\*(R" in perlvar for these
+variables.  It also differs in that code evaluated with \f(CW\*(C`do FILENAME\*(C'\fR
+cannot see lexicals in the enclosing scope; \f(CW\*(C`eval STRING\*(C'\fR does.  It's the
+same, however, in that it does reparse the file every time you call it,
+so you probably don't want to do this inside a loop.
+.Sp
+If \f(CW\*(C`do\*(C'\fR cannot read the file, it returns undef and sets \f(CW$!\fR to the
+error.  If \f(CW\*(C`do\*(C'\fR can read the file but cannot compile it, it
+returns undef and sets an error message in \f(CW$@\fR.   If the file is
+successfully compiled, \f(CW\*(C`do\*(C'\fR returns the value of the last expression
+evaluated.
+.Sp
+Note that inclusion of library modules is better done with the
+\&\f(CW\*(C`use\*(C'\fR and \f(CW\*(C`require\*(C'\fR operators, which also do automatic error checking
+and raise an exception if there's a problem.
+.Sp
+You might like to use \f(CW\*(C`do\*(C'\fR to read in a program configuration
+file.  Manual error checking can be done this way:
+.Sp
+.Vb 10
+\&    # read in config files: system first, then user
+\&    for $file ("/share/prog/defaults.rc",
+\&               "$ENV{HOME}/.someprogrc")
+\&   {
+\&        unless ($return = do $file) {
+\&            warn "couldn't parse $file: $@" if $@;
+\&            warn "couldn't do $file: $!"    unless defined $return;
+\&            warn "couldn't run $file"       unless $return;
+\&        }
+\&    }
+.Ve
+.IP "dump \s-1LABEL\s0" 8
+.IX Item "dump LABEL"
+.PD 0
+.IP "dump" 8
+.IX Item "dump"
+.PD
+This function causes an immediate core dump.  See also the \fB\-u\fR
+command-line switch in perlrun, which does the same thing.
+Primarily this is so that you can use the \fBundump\fR program (not
+supplied) to turn your core dump into an executable binary after
+having initialized all your variables at the beginning of the
+program.  When the new binary is executed it will begin by executing
+a \f(CW\*(C`goto LABEL\*(C'\fR (with all the restrictions that \f(CW\*(C`goto\*(C'\fR suffers).
+Think of it as a goto with an intervening core dump and reincarnation.
+If \f(CW\*(C`LABEL\*(C'\fR is omitted, restarts the program from the top.
+.Sp
+\&\fB\s-1WARNING\s0\fR: Any files opened at the time of the dump will \fInot\fR
+be open any more when the program is reincarnated, with possible
+resulting confusion on the part of Perl.
+.Sp
+This function is now largely obsolete, partly because it's very
+hard to convert a core file into an executable, and because the
+real compiler backends for generating portable bytecode and compilable
+C code have superseded it.  That's why you should now invoke it as
+\&\f(CW\*(C`CORE::dump()\*(C'\fR, if you don't want to be warned against a possible
+typo.
+.Sp
+If you're looking to use dump to speed up your program, consider
+generating bytecode or native C code as described in perlcc.  If
+you're just trying to accelerate a \s-1CGI\s0 script, consider using the
+\&\f(CW\*(C`mod_perl\*(C'\fR extension to \fBApache\fR, or the \s-1CPAN\s0 module, CGI::Fast.
+You might also consider autoloading or selfloading, which at least
+make your program \fIappear\fR to run faster.
+.IP "each \s-1HASH\s0" 8
+.IX Item "each HASH"
+When called in list context, returns a 2\-element list consisting of the
+key and value for the next element of a hash, so that you can iterate over
+it.  When called in scalar context, returns only the key for the next
+element in the hash.
+.Sp
+Entries are returned in an apparently random order.  The actual random
+order is subject to change in future versions of perl, but it is
+guaranteed to be in the same order as either the \f(CW\*(C`keys\*(C'\fR or \f(CW\*(C`values\*(C'\fR
+function would produce on the same (unmodified) hash.  Since Perl
+5.8.1 the ordering is different even between different runs of Perl
+for security reasons (see \*(L"Algorithmic Complexity Attacks\*(R" in perlsec).
+.Sp
+When the hash is entirely read, a null array is returned in list context
+(which when assigned produces a false (\f(CW0\fR) value), and \f(CW\*(C`undef\*(C'\fR in
+scalar context.  The next call to \f(CW\*(C`each\*(C'\fR after that will start iterating
+again.  There is a single iterator for each hash, shared by all \f(CW\*(C`each\*(C'\fR,
+\&\f(CW\*(C`keys\*(C'\fR, and \f(CW\*(C`values\*(C'\fR function calls in the program; it can be reset by
+reading all the elements from the hash, or by evaluating \f(CW\*(C`keys HASH\*(C'\fR or
+\&\f(CW\*(C`values HASH\*(C'\fR.  If you add or delete elements of a hash while you're
+iterating over it, you may get entries skipped or duplicated, so
+don't.  Exception: It is always safe to delete the item most recently
+returned by \f(CW\*(C`each()\*(C'\fR, which means that the following code will work:
+.Sp
+.Vb 4
+\&        while (($key, $value) = each %hash) {
+\&          print $key, "\en";
+\&          delete $hash{$key};   # This is safe
+\&        }
+.Ve
+.Sp
+The following prints out your environment like the \fIprintenv\fR\|(1) program,
+only in a different order:
+.Sp
+.Vb 3
+\&    while (($key,$value) = each %ENV) {
+\&        print "$key=$value\en";
+\&    }
+.Ve
+.Sp
+See also \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`values\*(C'\fR and \f(CW\*(C`sort\*(C'\fR.
+.IP "eof \s-1FILEHANDLE\s0" 8
+.IX Item "eof FILEHANDLE"
+.PD 0
+.IP "eof ()" 8
+.IX Item "eof ()"
+.IP "eof" 8
+.IX Item "eof"
+.PD
+Returns 1 if the next read on \s-1FILEHANDLE\s0 will return end of file, or if
+\&\s-1FILEHANDLE\s0 is not open.  \s-1FILEHANDLE\s0 may be an expression whose value
+gives the real filehandle.  (Note that this function actually
+reads a character and then \f(CW\*(C`ungetc\*(C'\fRs it, so isn't very useful in an
+interactive context.)  Do not read from a terminal file (or call
+\&\f(CW\*(C`eof(FILEHANDLE)\*(C'\fR on it) after end-of-file is reached.  File types such
+as terminals may lose the end-of-file condition if you do.
+.Sp
+An \f(CW\*(C`eof\*(C'\fR without an argument uses the last file read.  Using \f(CW\*(C`eof()\*(C'\fR
+with empty parentheses is very different.  It refers to the pseudo file
+formed from the files listed on the command line and accessed via the
+\&\f(CW\*(C`<>\*(C'\fR operator.  Since \f(CW\*(C`<>\*(C'\fR isn't explicitly opened,
+as a normal filehandle is, an \f(CW\*(C`eof()\*(C'\fR before \f(CW\*(C`<>\*(C'\fR has been
+used will cause \f(CW at ARGV\fR to be examined to determine if input is
+available.   Similarly, an \f(CW\*(C`eof()\*(C'\fR after \f(CW\*(C`<>\*(C'\fR has returned
+end-of-file will assume you are processing another \f(CW at ARGV\fR list,
+and if you haven't set \f(CW at ARGV\fR, will read input from \f(CW\*(C`STDIN\*(C'\fR;
+see \*(L"I/O Operators\*(R" in perlop.
+.Sp
+In a \f(CW\*(C`while (<>)\*(C'\fR loop, \f(CW\*(C`eof\*(C'\fR or \f(CW\*(C`eof(ARGV)\*(C'\fR can be used to
+detect the end of each file, \f(CW\*(C`eof()\*(C'\fR will only detect the end of the
+last file.  Examples:
+.Sp
+.Vb 7
+\&    # reset line numbering on each input file
+\&    while (<>) {
+\&        next if /^\es*#/;        # skip comments
+\&        print "$.\et$_";
+\&    } continue {
+\&        close ARGV  if eof;     # Not eof()!
+\&    }
+.Ve
+.Sp
+.Vb 8
+\&    # insert dashes just before last line of last file
+\&    while (<>) {
+\&        if (eof()) {            # check for end of last file
+\&            print "--------------\en";
+\&        }
+\&        print;
+\&        last if eof();          # needed if we're reading from a terminal
+\&    }
+.Ve
+.Sp
+Practical hint: you almost never need to use \f(CW\*(C`eof\*(C'\fR in Perl, because the
+input operators typically return \f(CW\*(C`undef\*(C'\fR when they run out of data, or if
+there was an error.
+.IP "eval \s-1EXPR\s0" 8
+.IX Item "eval EXPR"
+.PD 0
+.IP "eval \s-1BLOCK\s0" 8
+.IX Item "eval BLOCK"
+.PD
+In the first form, the return value of \s-1EXPR\s0 is parsed and executed as if it
+were a little Perl program.  The value of the expression (which is itself
+determined within scalar context) is first parsed, and if there weren't any
+errors, executed in the lexical context of the current Perl program, so
+that any variable settings or subroutine and format definitions remain
+afterwards.  Note that the value is parsed every time the eval executes.
+If \s-1EXPR\s0 is omitted, evaluates \f(CW$_\fR.  This form is typically used to
+delay parsing and subsequent execution of the text of \s-1EXPR\s0 until run time.
+.Sp
+In the second form, the code within the \s-1BLOCK\s0 is parsed only once\*(--at the
+same time the code surrounding the eval itself was parsed\*(--and executed
+within the context of the current Perl program.  This form is typically
+used to trap exceptions more efficiently than the first (see below), while
+also providing the benefit of checking the code within \s-1BLOCK\s0 at compile
+time.
+.Sp
+The final semicolon, if any, may be omitted from the value of \s-1EXPR\s0 or within
+the \s-1BLOCK\s0.
+.Sp
+In both forms, the value returned is the value of the last expression
+evaluated inside the mini\-program; a return statement may be also used, just
+as with subroutines.  The expression providing the return value is evaluated
+in void, scalar, or list context, depending on the context of the eval itself.
+See \*(L"wantarray\*(R" for more on how the evaluation context can be determined.
+.Sp
+If there is a syntax error or runtime error, or a \f(CW\*(C`die\*(C'\fR statement is
+executed, an undefined value is returned by \f(CW\*(C`eval\*(C'\fR, and \f(CW$@\fR is set to the
+error message.  If there was no error, \f(CW$@\fR is guaranteed to be a null
+string.  Beware that using \f(CW\*(C`eval\*(C'\fR neither silences perl from printing
+warnings to \s-1STDERR\s0, nor does it stuff the text of warning messages into \f(CW$@\fR.
+To do either of those, you have to use the \f(CW$SIG{_\|_WARN_\|_}\fR facility, or
+turn off warnings inside the \s-1BLOCK\s0 or \s-1EXPR\s0 using \f(CW\*(C`no\ warnings\ 'all'\*(C'\fR.
+See \*(L"warn\*(R", perlvar, warnings and perllexwarn.
+.Sp
+Note that, because \f(CW\*(C`eval\*(C'\fR traps otherwise-fatal errors, it is useful for
+determining whether a particular feature (such as \f(CW\*(C`socket\*(C'\fR or \f(CW\*(C`symlink\*(C'\fR)
+is implemented.  It is also Perl's exception trapping mechanism, where
+the die operator is used to raise exceptions.
+.Sp
+If the code to be executed doesn't vary, you may use the eval-BLOCK
+form to trap run-time errors without incurring the penalty of
+recompiling each time.  The error, if any, is still returned in \f(CW$@\fR.
+Examples:
+.Sp
+.Vb 2
+\&    # make divide-by-zero nonfatal
+\&    eval { $answer = $a / $b; }; warn $@ if $@;
+.Ve
+.Sp
+.Vb 2
+\&    # same thing, but less efficient
+\&    eval '$answer = $a / $b'; warn $@ if $@;
+.Ve
+.Sp
+.Vb 2
+\&    # a compile-time error
+\&    eval { $answer = };                 # WRONG
+.Ve
+.Sp
+.Vb 2
+\&    # a run-time error
+\&    eval '$answer =';   # sets $@
+.Ve
+.Sp
+Due to the current arguably broken state of \f(CW\*(C`_\|_DIE_\|_\*(C'\fR hooks, when using
+the \f(CW\*(C`eval{}\*(C'\fR form as an exception trap in libraries, you may wish not
+to trigger any \f(CW\*(C`_\|_DIE_\|_\*(C'\fR hooks that user code may have installed.
+You can use the \f(CW\*(C`local $SIG{_\|_DIE_\|_}\*(C'\fR construct for this purpose,
+as shown in this example:
+.Sp
+.Vb 3
+\&    # a very private exception trap for divide-by-zero
+\&    eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
+\&    warn $@ if $@;
+.Ve
+.Sp
+This is especially significant, given that \f(CW\*(C`_\|_DIE_\|_\*(C'\fR hooks can call
+\&\f(CW\*(C`die\*(C'\fR again, which has the effect of changing their error messages:
+.Sp
+.Vb 7
+\&    # __DIE__ hooks may modify error messages
+\&    {
+\&       local $SIG{'__DIE__'} =
+\&              sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
+\&       eval { die "foo lives here" };
+\&       print $@ if $@;                # prints "bar lives here"
+\&    }
+.Ve
+.Sp
+Because this promotes action at a distance, this counterintuitive behavior
+may be fixed in a future release.
+.Sp
+With an \f(CW\*(C`eval\*(C'\fR, you should be especially careful to remember what's
+being looked at when:
+.Sp
+.Vb 2
+\&    eval $x;            # CASE 1
+\&    eval "$x";          # CASE 2
+.Ve
+.Sp
+.Vb 2
+\&    eval '$x';          # CASE 3
+\&    eval { $x };        # CASE 4
+.Ve
+.Sp
+.Vb 2
+\&    eval "\e$$x++";      # CASE 5
+\&    $$x++;              # CASE 6
+.Ve
+.Sp
+Cases 1 and 2 above behave identically: they run the code contained in
+the variable \f(CW$x\fR.  (Although case 2 has misleading double quotes making
+the reader wonder what else might be happening (nothing is).)  Cases 3
+and 4 likewise behave in the same way: they run the code \f(CW'$x'\fR, which
+does nothing but return the value of \f(CW$x\fR.  (Case 4 is preferred for
+purely visual reasons, but it also has the advantage of compiling at
+compile-time instead of at run\-time.)  Case 5 is a place where
+normally you \fIwould\fR like to use double quotes, except that in this
+particular situation, you can just use symbolic references instead, as
+in case 6.
+.Sp
+\&\f(CW\*(C`eval BLOCK\*(C'\fR does \fInot\fR count as a loop, so the loop control statements
+\&\f(CW\*(C`next\*(C'\fR, \f(CW\*(C`last\*(C'\fR, or \f(CW\*(C`redo\*(C'\fR cannot be used to leave or restart the block.
+.Sp
+Note that as a very special case, an \f(CW\*(C`eval ''\*(C'\fR executed within the \f(CW\*(C`DB\*(C'\fR
+package doesn't see the usual surrounding lexical scope, but rather the
+scope of the first non-DB piece of code that called it. You don't normally
+need to worry about this unless you are writing a Perl debugger.
+.IP "exec \s-1LIST\s0" 8
+.IX Item "exec LIST"
+.PD 0
+.IP "exec \s-1PROGRAM\s0 \s-1LIST\s0" 8
+.IX Item "exec PROGRAM LIST"
+.PD
+The \f(CW\*(C`exec\*(C'\fR function executes a system command \fIand never returns\fR\-\-
+use \f(CW\*(C`system\*(C'\fR instead of \f(CW\*(C`exec\*(C'\fR if you want it to return.  It fails and
+returns false only if the command does not exist \fIand\fR it is executed
+directly instead of via your system's command shell (see below).
+.Sp
+Since it's a common mistake to use \f(CW\*(C`exec\*(C'\fR instead of \f(CW\*(C`system\*(C'\fR, Perl
+warns you if there is a following statement which isn't \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`warn\*(C'\fR,
+or \f(CW\*(C`exit\*(C'\fR (if \f(CW\*(C`\-w\*(C'\fR is set  \-  but you always do that).   If you
+\&\fIreally\fR want to follow an \f(CW\*(C`exec\*(C'\fR with some other statement, you
+can use one of these styles to avoid the warning:
+.Sp
+.Vb 2
+\&    exec ('foo')   or print STDERR "couldn't exec foo: $!";
+\&    { exec ('foo') }; print STDERR "couldn't exec foo: $!";
+.Ve
+.Sp
+If there is more than one argument in \s-1LIST\s0, or if \s-1LIST\s0 is an array
+with more than one value, calls \fIexecvp\fR\|(3) with the arguments in \s-1LIST\s0.
+If there is only one scalar argument or an array with one element in it,
+the argument is checked for shell metacharacters, and if there are any,
+the entire argument is passed to the system's command shell for parsing
+(this is \f(CW\*(C`/bin/sh \-c\*(C'\fR on Unix platforms, but varies on other platforms).
+If there are no shell metacharacters in the argument, it is split into
+words and passed directly to \f(CW\*(C`execvp\*(C'\fR, which is more efficient.
+Examples:
+.Sp
+.Vb 2
+\&    exec '/bin/echo', 'Your arguments are: ', @ARGV;
+\&    exec "sort $outfile | uniq";
+.Ve
+.Sp
+If you don't really want to execute the first argument, but want to lie
+to the program you are executing about its own name, you can specify
+the program you actually want to run as an \*(L"indirect object\*(R" (without a
+comma) in front of the \s-1LIST\s0.  (This always forces interpretation of the
+\&\s-1LIST\s0 as a multivalued list, even if there is only a single scalar in
+the list.)  Example:
+.Sp
+.Vb 2
+\&    $shell = '/bin/csh';
+\&    exec $shell '-sh';          # pretend it's a login shell
+.Ve
+.Sp
+or, more directly,
+.Sp
+.Vb 1
+\&    exec {'/bin/csh'} '-sh';    # pretend it's a login shell
+.Ve
+.Sp
+When the arguments get executed via the system shell, results will
+be subject to its quirks and capabilities.  See \*(L"`STRING`\*(R" in perlop
+for details.
+.Sp
+Using an indirect object with \f(CW\*(C`exec\*(C'\fR or \f(CW\*(C`system\*(C'\fR is also more
+secure.  This usage (which also works fine with \fIsystem()\fR) forces
+interpretation of the arguments as a multivalued list, even if the
+list had just one argument.  That way you're safe from the shell
+expanding wildcards or splitting up words with whitespace in them.
+.Sp
+.Vb 1
+\&    @args = ( "echo surprise" );
+.Ve
+.Sp
+.Vb 3
+\&    exec @args;               # subject to shell escapes
+\&                                # if @args == 1
+\&    exec { $args[0] } @args;  # safe even with one-arg list
+.Ve
+.Sp
+The first version, the one without the indirect object, ran the \fIecho\fR
+program, passing it \f(CW"surprise"\fR an argument.  The second version
+didn't\*(--it tried to run a program literally called \fI\*(L"echo surprise\*(R"\fR,
+didn't find it, and set \f(CW$?\fR to a non-zero value indicating failure.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before the exec, but this may not be supported on some platforms
+(see perlport).  To be safe, you may need to set \f(CW$|\fR ($AUTOFLUSH
+in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method of \f(CW\*(C`IO::Handle\*(C'\fR on any
+open handles in order to avoid lost output.
+.Sp
+Note that \f(CW\*(C`exec\*(C'\fR will not call your \f(CW\*(C`END\*(C'\fR blocks, nor will it call
+any \f(CW\*(C`DESTROY\*(C'\fR methods in your objects.
+.IP "exists \s-1EXPR\s0" 8
+.IX Item "exists EXPR"
+Given an expression that specifies a hash element or array element,
+returns true if the specified element in the hash or array has ever
+been initialized, even if the corresponding value is undefined.  The
+element is not autovivified if it doesn't exist.
+.Sp
+.Vb 3
+\&    print "Exists\en"    if exists $hash{$key};
+\&    print "Defined\en"   if defined $hash{$key};
+\&    print "True\en"      if $hash{$key};
+.Ve
+.Sp
+.Vb 3
+\&    print "Exists\en"    if exists $array[$index];
+\&    print "Defined\en"   if defined $array[$index];
+\&    print "True\en"      if $array[$index];
+.Ve
+.Sp
+A hash or array element can be true only if it's defined, and defined if
+it exists, but the reverse doesn't necessarily hold true.
+.Sp
+Given an expression that specifies the name of a subroutine,
+returns true if the specified subroutine has ever been declared, even
+if it is undefined.  Mentioning a subroutine name for exists or defined
+does not count as declaring it.  Note that a subroutine which does not
+exist may still be callable: its package may have an \f(CW\*(C`AUTOLOAD\*(C'\fR
+method that makes it spring into existence the first time that it is
+called \*(-- see perlsub.
+.Sp
+.Vb 2
+\&    print "Exists\en"    if exists &subroutine;
+\&    print "Defined\en"   if defined &subroutine;
+.Ve
+.Sp
+Note that the \s-1EXPR\s0 can be arbitrarily complicated as long as the final
+operation is a hash or array key lookup or subroutine name:
+.Sp
+.Vb 2
+\&    if (exists $ref->{A}->{B}->{$key})  { }
+\&    if (exists $hash{A}{B}{$key})       { }
+.Ve
+.Sp
+.Vb 2
+\&    if (exists $ref->{A}->{B}->[$ix])   { }
+\&    if (exists $hash{A}{B}[$ix])        { }
+.Ve
+.Sp
+.Vb 1
+\&    if (exists &{$ref->{A}{B}{$key}})   { }
+.Ve
+.Sp
+Although the deepest nested array or hash will not spring into existence
+just because its existence was tested, any intervening ones will.
+Thus \f(CW\*(C`$ref\->{"A"}\*(C'\fR and \f(CW\*(C`$ref\->{"A"}\->{"B"}\*(C'\fR will spring
+into existence due to the existence test for the \f(CW$key\fR element above.
+This happens anywhere the arrow operator is used, including even:
+.Sp
+.Vb 3
+\&    undef $ref;
+\&    if (exists $ref->{"Some key"})      { }
+\&    print $ref;             # prints HASH(0x80d3d5c)
+.Ve
+.Sp
+This surprising autovivification in what does not at first\*(--or even
+second\*(--glance appear to be an lvalue context may be fixed in a future
+release.
+.Sp
+See \*(L"Pseudo\-hashes: Using an array as a hash\*(R" in perlref for specifics
+on how \fIexists()\fR acts when used on a pseudo\-hash.
+.Sp
+Use of a subroutine call, rather than a subroutine name, as an argument
+to \fIexists()\fR is an error.
+.Sp
+.Vb 2
+\&    exists ⊂        # OK
+\&    exists &sub();      # Error
+.Ve
+.IP "exit \s-1EXPR\s0" 8
+.IX Item "exit EXPR"
+Evaluates \s-1EXPR\s0 and exits immediately with that value.    Example:
+.Sp
+.Vb 2
+\&    $ans = <STDIN>;
+\&    exit 0 if $ans =~ /^[Xx]/;
+.Ve
+.Sp
+See also \f(CW\*(C`die\*(C'\fR.  If \s-1EXPR\s0 is omitted, exits with \f(CW0\fR status.  The only
+universally recognized values for \s-1EXPR\s0 are \f(CW0\fR for success and \f(CW1\fR
+for error; other values are subject to interpretation depending on the
+environment in which the Perl program is running.  For example, exiting
+69 (\s-1EX_UNAVAILABLE\s0) from a \fIsendmail\fR incoming-mail filter will cause
+the mailer to return the item undelivered, but that's not true everywhere.
+.Sp
+Don't use \f(CW\*(C`exit\*(C'\fR to abort a subroutine if there's any chance that
+someone might want to trap whatever error happened.  Use \f(CW\*(C`die\*(C'\fR instead,
+which can be trapped by an \f(CW\*(C`eval\*(C'\fR.
+.Sp
+The \fIexit()\fR function does not always exit immediately.  It calls any
+defined \f(CW\*(C`END\*(C'\fR routines first, but these \f(CW\*(C`END\*(C'\fR routines may not
+themselves abort the exit.  Likewise any object destructors that need to
+be called are called before the real exit.  If this is a problem, you
+can call \f(CW\*(C`POSIX:_exit($status)\*(C'\fR to avoid \s-1END\s0 and destructor processing.
+See perlmod for details.
+.IP "exp \s-1EXPR\s0" 8
+.IX Item "exp EXPR"
+.PD 0
+.IP "exp" 8
+.IX Item "exp"
+.PD
+Returns \fIe\fR (the natural logarithm base) to the power of \s-1EXPR\s0.
+If \s-1EXPR\s0 is omitted, gives \f(CW\*(C`exp($_)\*(C'\fR.
+.IP "fcntl \s-1FILEHANDLE\s0,FUNCTION,SCALAR" 8
+.IX Item "fcntl FILEHANDLE,FUNCTION,SCALAR"
+Implements the \fIfcntl\fR\|(2) function.  You'll probably have to say
+.Sp
+.Vb 1
+\&    use Fcntl;
+.Ve
+.Sp
+first to get the correct constant definitions.  Argument processing and
+value return works just like \f(CW\*(C`ioctl\*(C'\fR below.
+For example:
+.Sp
+.Vb 3
+\&    use Fcntl;
+\&    fcntl($filehandle, F_GETFL, $packed_return_buffer)
+\&        or die "can't fcntl F_GETFL: $!";
+.Ve
+.Sp
+You don't have to check for \f(CW\*(C`defined\*(C'\fR on the return from \f(CW\*(C`fcntl\*(C'\fR.
+Like \f(CW\*(C`ioctl\*(C'\fR, it maps a \f(CW0\fR return from the system call into
+\&\f(CW"0 but true"\fR in Perl.  This string is true in boolean context and \f(CW0\fR
+in numeric context.  It is also exempt from the normal \fB\-w\fR warnings
+on improper numeric conversions.
+.Sp
+Note that \f(CW\*(C`fcntl\*(C'\fR will produce a fatal error if used on a machine that
+doesn't implement \fIfcntl\fR\|(2).  See the Fcntl module or your \fIfcntl\fR\|(2)
+manpage to learn what functions are available on your system.
+.IP "fileno \s-1FILEHANDLE\s0" 8
+.IX Item "fileno FILEHANDLE"
+Returns the file descriptor for a filehandle, or undefined if the
+filehandle is not open.  This is mainly useful for constructing
+bitmaps for \f(CW\*(C`select\*(C'\fR and low-level \s-1POSIX\s0 tty-handling operations.
+If \s-1FILEHANDLE\s0 is an expression, the value is taken as an indirect
+filehandle, generally its name.
+.Sp
+You can use this to find out whether two handles refer to the
+same underlying descriptor:
+.Sp
+.Vb 3
+\&    if (fileno(THIS) == fileno(THAT)) {
+\&        print "THIS and THAT are dups\en";
+\&    }
+.Ve
+.Sp
+(Filehandles connected to memory objects via new features of \f(CW\*(C`open\*(C'\fR may
+return undefined even though they are open.)
+.IP "flock \s-1FILEHANDLE\s0,OPERATION" 8
+.IX Item "flock FILEHANDLE,OPERATION"
+Calls \fIflock\fR\|(2), or an emulation of it, on \s-1FILEHANDLE\s0.  Returns true
+for success, false on failure.  Produces a fatal error if used on a
+machine that doesn't implement \fIflock\fR\|(2), \fIfcntl\fR\|(2) locking, or \fIlockf\fR\|(3).
+\&\f(CW\*(C`flock\*(C'\fR is Perl's portable file locking interface, although it locks
+only entire files, not records.
+.Sp
+Two potentially non-obvious but traditional \f(CW\*(C`flock\*(C'\fR semantics are
+that it waits indefinitely until the lock is granted, and that its locks
+\&\fBmerely advisory\fR.  Such discretionary locks are more flexible, but offer
+fewer guarantees.  This means that files locked with \f(CW\*(C`flock\*(C'\fR may be
+modified by programs that do not also use \f(CW\*(C`flock\*(C'\fR.  See perlport,
+your port's specific documentation, or your system-specific local manpages
+for details.  It's best to assume traditional behavior if you're writing
+portable programs.  (But if you're not, you should as always feel perfectly
+free to write for your own system's idiosyncrasies (sometimes called
+\&\*(L"features\*(R").  Slavish adherence to portability concerns shouldn't get
+in the way of your getting your job done.)
+.Sp
+\&\s-1OPERATION\s0 is one of \s-1LOCK_SH\s0, \s-1LOCK_EX\s0, or \s-1LOCK_UN\s0, possibly combined with
+\&\s-1LOCK_NB\s0.  These constants are traditionally valued 1, 2, 8 and 4, but
+you can use the symbolic names if you import them from the Fcntl module,
+either individually, or as a group using the ':flock' tag.  \s-1LOCK_SH\s0
+requests a shared lock, \s-1LOCK_EX\s0 requests an exclusive lock, and \s-1LOCK_UN\s0
+releases a previously requested lock.  If \s-1LOCK_NB\s0 is bitwise\-or'ed with
+\&\s-1LOCK_SH\s0 or \s-1LOCK_EX\s0 then \f(CW\*(C`flock\*(C'\fR will return immediately rather than blocking
+waiting for the lock (check the return status to see if you got it).
+.Sp
+To avoid the possibility of miscoordination, Perl now flushes \s-1FILEHANDLE\s0
+before locking or unlocking it.
+.Sp
+Note that the emulation built with \fIlockf\fR\|(3) doesn't provide shared
+locks, and it requires that \s-1FILEHANDLE\s0 be open with write intent.  These
+are the semantics that \fIlockf\fR\|(3) implements.  Most if not all systems
+implement \fIlockf\fR\|(3) in terms of \fIfcntl\fR\|(2) locking, though, so the
+differing semantics shouldn't bite too many people.
+.Sp
+Note that the \fIfcntl\fR\|(2) emulation of \fIflock\fR\|(3) requires that \s-1FILEHANDLE\s0
+be open with read intent to use \s-1LOCK_SH\s0 and requires that it be open
+with write intent to use \s-1LOCK_EX\s0.
+.Sp
+Note also that some versions of \f(CW\*(C`flock\*(C'\fR cannot lock things over the
+network; you would need to use the more system-specific \f(CW\*(C`fcntl\*(C'\fR for
+that.  If you like you can force Perl to ignore your system's \fIflock\fR\|(2)
+function, and so provide its own \fIfcntl\fR\|(2)\-based emulation, by passing
+the switch \f(CW\*(C`\-Ud_flock\*(C'\fR to the \fIConfigure\fR program when you configure
+perl.
+.Sp
+Here's a mailbox appender for \s-1BSD\s0 systems.
+.Sp
+.Vb 1
+\&    use Fcntl ':flock'; # import LOCK_* constants
+.Ve
+.Sp
+.Vb 6
+\&    sub lock {
+\&        flock(MBOX,LOCK_EX);
+\&        # and, in case someone appended
+\&        # while we were waiting...
+\&        seek(MBOX, 0, 2);
+\&    }
+.Ve
+.Sp
+.Vb 3
+\&    sub unlock {
+\&        flock(MBOX,LOCK_UN);
+\&    }
+.Ve
+.Sp
+.Vb 2
+\&    open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
+\&            or die "Can't open mailbox: $!";
+.Ve
+.Sp
+.Vb 3
+\&    lock();
+\&    print MBOX $msg,"\en\en";
+\&    unlock();
+.Ve
+.Sp
+On systems that support a real \fIflock()\fR, locks are inherited across \fIfork()\fR
+calls, whereas those that must resort to the more capricious \fIfcntl()\fR
+function lose the locks, making it harder to write servers.
+.Sp
+See also DB_File for other \fIflock()\fR examples.
+.IP "fork" 8
+.IX Item "fork"
+Does a \fIfork\fR\|(2) system call to create a new process running the
+same program at the same point.  It returns the child pid to the
+parent process, \f(CW0\fR to the child process, or \f(CW\*(C`undef\*(C'\fR if the fork is
+unsuccessful.  File descriptors (and sometimes locks on those descriptors)
+are shared, while everything else is copied.  On most systems supporting
+\&\fIfork()\fR, great care has gone into making it extremely efficient (for
+example, using copy-on-write technology on data pages), making it the
+dominant paradigm for multitasking over the last few decades.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before forking the child process, but this may not be supported
+on some platforms (see perlport).  To be safe, you may need to set
+\&\f(CW$|\fR ($AUTOFLUSH in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method of
+\&\f(CW\*(C`IO::Handle\*(C'\fR on any open handles in order to avoid duplicate output.
+.Sp
+If you \f(CW\*(C`fork\*(C'\fR without ever waiting on your children, you will
+accumulate zombies.  On some systems, you can avoid this by setting
+\&\f(CW$SIG{CHLD}\fR to \f(CW"IGNORE"\fR.  See also perlipc for more examples of
+forking and reaping moribund children.
+.Sp
+Note that if your forked child inherits system file descriptors like
+\&\s-1STDIN\s0 and \s-1STDOUT\s0 that are actually connected by a pipe or socket, even
+if you exit, then the remote server (such as, say, a \s-1CGI\s0 script or a
+backgrounded job launched from a remote shell) won't think you're done.
+You should reopen those to \fI/dev/null\fR if it's any issue.
+.IP "format" 8
+.IX Item "format"
+Declare a picture format for use by the \f(CW\*(C`write\*(C'\fR function.  For
+example:
+.Sp
+.Vb 4
+\&    format Something =
+\&        Test: @<<<<<<<< @||||| @>>>>>
+\&              $str,     $%,    '$' . int($num)
+\&    .
+.Ve
+.Sp
+.Vb 4
+\&    $str = "widget";
+\&    $num = $cost/$quantity;
+\&    $~ = 'Something';
+\&    write;
+.Ve
+.Sp
+See perlform for many details and examples.
+.IP "formline \s-1PICTURE\s0,LIST" 8
+.IX Item "formline PICTURE,LIST"
+This is an internal function used by \f(CW\*(C`format\*(C'\fRs, though you may call it,
+too.  It formats (see perlform) a list of values according to the
+contents of \s-1PICTURE\s0, placing the output into the format output
+accumulator, \f(CW$^A\fR (or \f(CW$ACCUMULATOR\fR in English).
+Eventually, when a \f(CW\*(C`write\*(C'\fR is done, the contents of
+\&\f(CW$^A\fR are written to some filehandle, but you could also read \f(CW$^A\fR
+yourself and then set \f(CW$^A\fR back to \f(CW""\fR.  Note that a format typically
+does one \f(CW\*(C`formline\*(C'\fR per line of form, but the \f(CW\*(C`formline\*(C'\fR function itself
+doesn't care how many newlines are embedded in the \s-1PICTURE\s0.  This means
+that the \f(CW\*(C`~\*(C'\fR and \f(CW\*(C`~~\*(C'\fR tokens will treat the entire \s-1PICTURE\s0 as a single line.
+You may therefore need to use multiple formlines to implement a single
+record format, just like the format compiler.
+.Sp
+Be careful if you put double quotes around the picture, because an \f(CW\*(C`@\*(C'\fR
+character may be taken to mean the beginning of an array name.
+\&\f(CW\*(C`formline\*(C'\fR always returns true.  See perlform for other examples.
+.IP "getc \s-1FILEHANDLE\s0" 8
+.IX Item "getc FILEHANDLE"
+.PD 0
+.IP "getc" 8
+.IX Item "getc"
+.PD
+Returns the next character from the input file attached to \s-1FILEHANDLE\s0,
+or the undefined value at end of file, or if there was an error (in
+the latter case \f(CW$!\fR is set).  If \s-1FILEHANDLE\s0 is omitted, reads from
+\&\s-1STDIN\s0.  This is not particularly efficient.  However, it cannot be
+used by itself to fetch single characters without waiting for the user
+to hit enter.  For that, try something more like:
+.Sp
+.Vb 6
+\&    if ($BSD_STYLE) {
+\&        system "stty cbreak </dev/tty >/dev/tty 2>&1";
+\&    }
+\&    else {
+\&        system "stty", '-icanon', 'eol', "\e001";
+\&    }
+.Ve
+.Sp
+.Vb 1
+\&    $key = getc(STDIN);
+.Ve
+.Sp
+.Vb 7
+\&    if ($BSD_STYLE) {
+\&        system "stty -cbreak </dev/tty >/dev/tty 2>&1";
+\&    }
+\&    else {
+\&        system "stty", 'icanon', 'eol', '^@'; # ASCII null
+\&    }
+\&    print "\en";
+.Ve
+.Sp
+Determination of whether \f(CW$BSD_STYLE\fR should be set
+is left as an exercise to the reader.
+.Sp
+The \f(CW\*(C`POSIX::getattr\*(C'\fR function can do this more portably on
+systems purporting \s-1POSIX\s0 compliance.  See also the \f(CW\*(C`Term::ReadKey\*(C'\fR
+module from your nearest \s-1CPAN\s0 site; details on \s-1CPAN\s0 can be found on
+\&\*(L"\s-1CPAN\s0\*(R" in perlmodlib.
+.IP "getlogin" 8
+.IX Item "getlogin"
+Implements the C library function of the same name, which on most
+systems returns the current login from \fI/etc/utmp\fR, if any.  If null,
+use \f(CW\*(C`getpwuid\*(C'\fR.
+.Sp
+.Vb 1
+\&    $login = getlogin || getpwuid($<) || "Kilroy";
+.Ve
+.Sp
+Do not consider \f(CW\*(C`getlogin\*(C'\fR for authentication: it is not as
+secure as \f(CW\*(C`getpwuid\*(C'\fR.
+.IP "getpeername \s-1SOCKET\s0" 8
+.IX Item "getpeername SOCKET"
+Returns the packed sockaddr address of other end of the \s-1SOCKET\s0 connection.
+.Sp
+.Vb 5
+\&    use Socket;
+\&    $hersockaddr    = getpeername(SOCK);
+\&    ($port, $iaddr) = sockaddr_in($hersockaddr);
+\&    $herhostname    = gethostbyaddr($iaddr, AF_INET);
+\&    $herstraddr     = inet_ntoa($iaddr);
+.Ve
+.IP "getpgrp \s-1PID\s0" 8
+.IX Item "getpgrp PID"
+Returns the current process group for the specified \s-1PID\s0.  Use
+a \s-1PID\s0 of \f(CW0\fR to get the current process group for the
+current process.  Will raise an exception if used on a machine that
+doesn't implement \fIgetpgrp\fR\|(2).  If \s-1PID\s0 is omitted, returns process
+group of current process.  Note that the \s-1POSIX\s0 version of \f(CW\*(C`getpgrp\*(C'\fR
+does not accept a \s-1PID\s0 argument, so only \f(CW\*(C`PID==0\*(C'\fR is truly portable.
+.IP "getppid" 8
+.IX Item "getppid"
+Returns the process id of the parent process.
+.Sp
+Note for Linux users: on Linux, the C functions \f(CW\*(C`getpid()\*(C'\fR and
+\&\f(CW\*(C`getppid()\*(C'\fR return different values from different threads. In order to
+be portable, this behavior is not reflected by the perl-level function
+\&\f(CW\*(C`getppid()\*(C'\fR, that returns a consistent value across threads. If you want
+to call the underlying \f(CW\*(C`getppid()\*(C'\fR, you may use the \s-1CPAN\s0 module
+\&\f(CW\*(C`Linux::Pid\*(C'\fR.
+.IP "getpriority \s-1WHICH\s0,WHO" 8
+.IX Item "getpriority WHICH,WHO"
+Returns the current priority for a process, a process group, or a user.
+(See \fIgetpriority\fR\|(2).)  Will raise a fatal exception if used on a
+machine that doesn't implement \fIgetpriority\fR\|(2).
+.IP "getpwnam \s-1NAME\s0" 8
+.IX Item "getpwnam NAME"
+.PD 0
+.IP "getgrnam \s-1NAME\s0" 8
+.IX Item "getgrnam NAME"
+.IP "gethostbyname \s-1NAME\s0" 8
+.IX Item "gethostbyname NAME"
+.IP "getnetbyname \s-1NAME\s0" 8
+.IX Item "getnetbyname NAME"
+.IP "getprotobyname \s-1NAME\s0" 8
+.IX Item "getprotobyname NAME"
+.IP "getpwuid \s-1UID\s0" 8
+.IX Item "getpwuid UID"
+.IP "getgrgid \s-1GID\s0" 8
+.IX Item "getgrgid GID"
+.IP "getservbyname \s-1NAME\s0,PROTO" 8
+.IX Item "getservbyname NAME,PROTO"
+.IP "gethostbyaddr \s-1ADDR\s0,ADDRTYPE" 8
+.IX Item "gethostbyaddr ADDR,ADDRTYPE"
+.IP "getnetbyaddr \s-1ADDR\s0,ADDRTYPE" 8
+.IX Item "getnetbyaddr ADDR,ADDRTYPE"
+.IP "getprotobynumber \s-1NUMBER\s0" 8
+.IX Item "getprotobynumber NUMBER"
+.IP "getservbyport \s-1PORT\s0,PROTO" 8
+.IX Item "getservbyport PORT,PROTO"
+.IP "getpwent" 8
+.IX Item "getpwent"
+.IP "getgrent" 8
+.IX Item "getgrent"
+.IP "gethostent" 8
+.IX Item "gethostent"
+.IP "getnetent" 8
+.IX Item "getnetent"
+.IP "getprotoent" 8
+.IX Item "getprotoent"
+.IP "getservent" 8
+.IX Item "getservent"
+.IP "setpwent" 8
+.IX Item "setpwent"
+.IP "setgrent" 8
+.IX Item "setgrent"
+.IP "sethostent \s-1STAYOPEN\s0" 8
+.IX Item "sethostent STAYOPEN"
+.IP "setnetent \s-1STAYOPEN\s0" 8
+.IX Item "setnetent STAYOPEN"
+.IP "setprotoent \s-1STAYOPEN\s0" 8
+.IX Item "setprotoent STAYOPEN"
+.IP "setservent \s-1STAYOPEN\s0" 8
+.IX Item "setservent STAYOPEN"
+.IP "endpwent" 8
+.IX Item "endpwent"
+.IP "endgrent" 8
+.IX Item "endgrent"
+.IP "endhostent" 8
+.IX Item "endhostent"
+.IP "endnetent" 8
+.IX Item "endnetent"
+.IP "endprotoent" 8
+.IX Item "endprotoent"
+.IP "endservent" 8
+.IX Item "endservent"
+.PD
+These routines perform the same functions as their counterparts in the
+system library.  In list context, the return values from the
+various get routines are as follows:
+.Sp
+.Vb 7
+\&    ($name,$passwd,$uid,$gid,
+\&       $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
+\&    ($name,$passwd,$gid,$members) = getgr*
+\&    ($name,$aliases,$addrtype,$length, at addrs) = gethost*
+\&    ($name,$aliases,$addrtype,$net) = getnet*
+\&    ($name,$aliases,$proto) = getproto*
+\&    ($name,$aliases,$port,$proto) = getserv*
+.Ve
+.Sp
+(If the entry doesn't exist you get a null list.)
+.Sp
+The exact meaning of the \f(CW$gcos\fR field varies but it usually contains
+the real name of the user (as opposed to the login name) and other
+information pertaining to the user.  Beware, however, that in many
+system users are able to change this information and therefore it
+cannot be trusted and therefore the \f(CW$gcos\fR is tainted (see
+perlsec).  The \f(CW$passwd\fR and \f(CW$shell\fR, user's encrypted password and
+login shell, are also tainted, because of the same reason.
+.Sp
+In scalar context, you get the name, unless the function was a
+lookup by name, in which case you get the other thing, whatever it is.
+(If the entry doesn't exist you get the undefined value.)  For example:
+.Sp
+.Vb 7
+\&    $uid   = getpwnam($name);
+\&    $name  = getpwuid($num);
+\&    $name  = getpwent();
+\&    $gid   = getgrnam($name);
+\&    $name  = getgrgid($num);
+\&    $name  = getgrent();
+\&    #etc.
+.Ve
+.Sp
+In \fIgetpw*()\fR the fields \f(CW$quota\fR, \f(CW$comment\fR, and \f(CW$expire\fR are special
+cases in the sense that in many systems they are unsupported.  If the
+\&\f(CW$quota\fR is unsupported, it is an empty scalar.  If it is supported, it
+usually encodes the disk quota.  If the \f(CW$comment\fR field is unsupported,
+it is an empty scalar.  If it is supported it usually encodes some
+administrative comment about the user.  In some systems the \f(CW$quota\fR
+field may be \f(CW$change\fR or \f(CW$age\fR, fields that have to do with password
+aging.  In some systems the \f(CW$comment\fR field may be \f(CW$class\fR.  The \f(CW$expire\fR
+field, if present, encodes the expiration period of the account or the
+password.  For the availability and the exact meaning of these fields
+in your system, please consult your \fIgetpwnam\fR\|(3) documentation and your
+\&\fIpwd.h\fR file.  You can also find out from within Perl what your
+\&\f(CW$quota\fR and \f(CW$comment\fR fields mean and whether you have the \f(CW$expire\fR field
+by using the \f(CW\*(C`Config\*(C'\fR module and the values \f(CW\*(C`d_pwquota\*(C'\fR, \f(CW\*(C`d_pwage\*(C'\fR,
+\&\f(CW\*(C`d_pwchange\*(C'\fR, \f(CW\*(C`d_pwcomment\*(C'\fR, and \f(CW\*(C`d_pwexpire\*(C'\fR.  Shadow password
+files are only supported if your vendor has implemented them in the
+intuitive fashion that calling the regular C library routines gets the
+shadow versions if you're running under privilege or if there exists
+the \fIshadow\fR\|(3) functions as found in System V ( this includes Solaris
+and Linux.)  Those systems which implement a proprietary shadow password
+facility are unlikely to be supported.
+.Sp
+The \f(CW$members\fR value returned by \fIgetgr*()\fR is a space separated list of
+the login names of the members of the group.
+.Sp
+For the \fIgethost*()\fR functions, if the \f(CW\*(C`h_errno\*(C'\fR variable is supported in
+C, it will be returned to you via \f(CW$?\fR if the function call fails.  The
+\&\f(CW at addrs\fR value returned by a successful call is a list of the raw
+addresses returned by the corresponding system library call.  In the
+Internet domain, each address is four bytes long and you can unpack it
+by saying something like:
+.Sp
+.Vb 1
+\&    ($a,$b,$c,$d) = unpack('C4',$addr[0]);
+.Ve
+.Sp
+The Socket library makes this slightly easier:
+.Sp
+.Vb 3
+\&    use Socket;
+\&    $iaddr = inet_aton("127.1"); # or whatever address
+\&    $name  = gethostbyaddr($iaddr, AF_INET);
+.Ve
+.Sp
+.Vb 2
+\&    # or going the other way
+\&    $straddr = inet_ntoa($iaddr);
+.Ve
+.Sp
+If you get tired of remembering which element of the return list
+contains which return value, by-name interfaces are provided
+in standard modules: \f(CW\*(C`File::stat\*(C'\fR, \f(CW\*(C`Net::hostent\*(C'\fR, \f(CW\*(C`Net::netent\*(C'\fR,
+\&\f(CW\*(C`Net::protoent\*(C'\fR, \f(CW\*(C`Net::servent\*(C'\fR, \f(CW\*(C`Time::gmtime\*(C'\fR, \f(CW\*(C`Time::localtime\*(C'\fR,
+and \f(CW\*(C`User::grent\*(C'\fR.  These override the normal built\-ins, supplying
+versions that return objects with the appropriate names
+for each field.  For example:
+.Sp
+.Vb 3
+\&   use File::stat;
+\&   use User::pwent;
+\&   $is_his = (stat($filename)->uid == pwent($whoever)->uid);
+.Ve
+.Sp
+Even though it looks like they're the same method calls (uid),
+they aren't, because a \f(CW\*(C`File::stat\*(C'\fR object is different from
+a \f(CW\*(C`User::pwent\*(C'\fR object.
+.IP "getsockname \s-1SOCKET\s0" 8
+.IX Item "getsockname SOCKET"
+Returns the packed sockaddr address of this end of the \s-1SOCKET\s0 connection,
+in case you don't know the address because you have several different
+IPs that the connection might have come in on.
+.Sp
+.Vb 6
+\&    use Socket;
+\&    $mysockaddr = getsockname(SOCK);
+\&    ($port, $myaddr) = sockaddr_in($mysockaddr);
+\&    printf "Connect to %s [%s]\en",
+\&       scalar gethostbyaddr($myaddr, AF_INET),
+\&       inet_ntoa($myaddr);
+.Ve
+.IP "getsockopt \s-1SOCKET\s0,LEVEL,OPTNAME" 8
+.IX Item "getsockopt SOCKET,LEVEL,OPTNAME"
+Returns the socket option requested, or undef if there is an error.
+.IP "glob \s-1EXPR\s0" 8
+.IX Item "glob EXPR"
+.PD 0
+.IP "glob" 8
+.IX Item "glob"
+.PD
+In list context, returns a (possibly empty) list of filename expansions on
+the value of \s-1EXPR\s0 such as the standard Unix shell \fI/bin/csh\fR would do. In
+scalar context, glob iterates through such filename expansions, returning
+undef when the list is exhausted. This is the internal function
+implementing the \f(CW\*(C`<*.c>\*(C'\fR operator, but you can use it directly. If
+\&\s-1EXPR\s0 is omitted, \f(CW$_\fR is used.  The \f(CW\*(C`<*.c>\*(C'\fR operator is discussed in
+more detail in \*(L"I/O Operators\*(R" in perlop.
+.Sp
+Beginning with v5.6.0, this operator is implemented using the standard
+\&\f(CW\*(C`File::Glob\*(C'\fR extension.  See File::Glob for details.
+.IP "gmtime \s-1EXPR\s0" 8
+.IX Item "gmtime EXPR"
+Converts a time as returned by the time function to an 8\-element list
+with the time localized for the standard Greenwich time zone.
+Typically used as follows:
+.Sp
+.Vb 3
+\&    #  0    1    2     3     4    5     6     7
+\&    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) =
+\&                                            gmtime(time);
+.Ve
+.Sp
+All list elements are numeric, and come straight out of the C `struct
+tm'.  \f(CW$sec\fR, \f(CW$min\fR, and \f(CW$hour\fR are the seconds, minutes, and hours of the
+specified time.  \f(CW$mday\fR is the day of the month, and \f(CW$mon\fR is the month
+itself, in the range \f(CW0..11\fR with 0 indicating January and 11
+indicating December.  \f(CW$year\fR is the number of years since 1900.  That
+is, \f(CW$year\fR is \f(CW123\fR in year 2023.  \f(CW$wday\fR is the day of the week, with
+0 indicating Sunday and 3 indicating Wednesday.  \f(CW$yday\fR is the day of
+the year, in the range \f(CW0..364\fR (or \f(CW0..365\fR in leap years.)
+.Sp
+Note that the \f(CW$year\fR element is \fInot\fR simply the last two digits of
+the year.  If you assume it is, then you create non\-Y2K\-compliant
+programs\*(--and you wouldn't want to do that, would you?
+.Sp
+The proper way to get a complete 4\-digit year is simply:
+.Sp
+.Vb 1
+\&        $year += 1900;
+.Ve
+.Sp
+And to get the last two digits of the year (e.g., '01' in 2001) do:
+.Sp
+.Vb 1
+\&        $year = sprintf("%02d", $year % 100);
+.Ve
+.Sp
+If \s-1EXPR\s0 is omitted, \f(CW\*(C`gmtime()\*(C'\fR uses the current time (\f(CW\*(C`gmtime(time)\*(C'\fR).
+.Sp
+In scalar context, \f(CW\*(C`gmtime()\*(C'\fR returns the \fIctime\fR\|(3) value:
+.Sp
+.Vb 1
+\&    $now_string = gmtime;  # e.g., "Thu Oct 13 04:54:34 1994"
+.Ve
+.Sp
+Also see the \f(CW\*(C`timegm\*(C'\fR function provided by the \f(CW\*(C`Time::Local\*(C'\fR module,
+and the \fIstrftime\fR\|(3) function available via the \s-1POSIX\s0 module.
+.Sp
+This scalar value is \fBnot\fR locale dependent (see perllocale), but
+is instead a Perl builtin.  Also see the \f(CW\*(C`Time::Local\*(C'\fR module, and the
+\&\fIstrftime\fR\|(3) and \fImktime\fR\|(3) functions available via the \s-1POSIX\s0 module.  To
+get somewhat similar but locale dependent date strings, set up your
+locale environment variables appropriately (please see perllocale)
+and try for example:
+.Sp
+.Vb 2
+\&    use POSIX qw(strftime);
+\&    $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
+.Ve
+.Sp
+Note that the \f(CW%a\fR and \f(CW%b\fR escapes, which represent the short forms
+of the day of the week and the month of the year, may not necessarily
+be three characters wide in all locales.
+.IP "goto \s-1LABEL\s0" 8
+.IX Item "goto LABEL"
+.PD 0
+.IP "goto \s-1EXPR\s0" 8
+.IX Item "goto EXPR"
+.IP "goto &NAME" 8
+.IX Item "goto &NAME"
+.PD
+The \f(CW\*(C`goto\-LABEL\*(C'\fR form finds the statement labeled with \s-1LABEL\s0 and resumes
+execution there.  It may not be used to go into any construct that
+requires initialization, such as a subroutine or a \f(CW\*(C`foreach\*(C'\fR loop.  It
+also can't be used to go into a construct that is optimized away,
+or to get out of a block or subroutine given to \f(CW\*(C`sort\*(C'\fR.
+It can be used to go almost anywhere else within the dynamic scope,
+including out of subroutines, but it's usually better to use some other
+construct such as \f(CW\*(C`last\*(C'\fR or \f(CW\*(C`die\*(C'\fR.  The author of Perl has never felt the
+need to use this form of \f(CW\*(C`goto\*(C'\fR (in Perl, that is\*(--C is another matter).
+(The difference being that C does not offer named loops combined with
+loop control.  Perl does, and this replaces most structured uses of \f(CW\*(C`goto\*(C'\fR
+in other languages.)
+.Sp
+The \f(CW\*(C`goto\-EXPR\*(C'\fR form expects a label name, whose scope will be resolved
+dynamically.  This allows for computed \f(CW\*(C`goto\*(C'\fRs per \s-1FORTRAN\s0, but isn't
+necessarily recommended if you're optimizing for maintainability:
+.Sp
+.Vb 1
+\&    goto ("FOO", "BAR", "GLARCH")[$i];
+.Ve
+.Sp
+The \f(CW\*(C`goto\-&NAME\*(C'\fR form is quite different from the other forms of
+\&\f(CW\*(C`goto\*(C'\fR.  In fact, it isn't a goto in the normal sense at all, and
+doesn't have the stigma associated with other gotos.  Instead, it
+exits the current subroutine (losing any changes set by \fIlocal()\fR) and
+immediately calls in its place the named subroutine using the current
+value of \f(CW at _\fR.  This is used by \f(CW\*(C`AUTOLOAD\*(C'\fR subroutines that wish to
+load another subroutine and then pretend that the other subroutine had
+been called in the first place (except that any modifications to \f(CW at _\fR
+in the current subroutine are propagated to the other subroutine.)
+After the \f(CW\*(C`goto\*(C'\fR, not even \f(CW\*(C`caller\*(C'\fR will be able to tell that this
+routine was called first.
+.Sp
+\&\s-1NAME\s0 needn't be the name of a subroutine; it can be a scalar variable
+containing a code reference, or a block which evaluates to a code
+reference.
+.IP "grep \s-1BLOCK\s0 \s-1LIST\s0" 8
+.IX Item "grep BLOCK LIST"
+.PD 0
+.IP "grep \s-1EXPR\s0,LIST" 8
+.IX Item "grep EXPR,LIST"
+.PD
+This is similar in spirit to, but not the same as, \fIgrep\fR\|(1) and its
+relatives.  In particular, it is not limited to using regular expressions.
+.Sp
+Evaluates the \s-1BLOCK\s0 or \s-1EXPR\s0 for each element of \s-1LIST\s0 (locally setting
+\&\f(CW$_\fR to each element) and returns the list value consisting of those
+elements for which the expression evaluated to true.  In scalar
+context, returns the number of times the expression was true.
+.Sp
+.Vb 1
+\&    @foo = grep(!/^#/, @bar);    # weed out comments
+.Ve
+.Sp
+or equivalently,
+.Sp
+.Vb 1
+\&    @foo = grep {!/^#/} @bar;    # weed out comments
+.Ve
+.Sp
+Note that \f(CW$_\fR is an alias to the list value, so it can be used to
+modify the elements of the \s-1LIST\s0.  While this is useful and supported,
+it can cause bizarre results if the elements of \s-1LIST\s0 are not variables.
+Similarly, grep returns aliases into the original list, much as a for
+loop's index variable aliases the list elements.  That is, modifying an
+element of a list returned by grep (for example, in a \f(CW\*(C`foreach\*(C'\fR, \f(CW\*(C`map\*(C'\fR
+or another \f(CW\*(C`grep\*(C'\fR) actually modifies the element in the original list.
+This is usually something to be avoided when writing clear code.
+.Sp
+See also \*(L"map\*(R" for a list composed of the results of the \s-1BLOCK\s0 or \s-1EXPR\s0.
+.IP "hex \s-1EXPR\s0" 8
+.IX Item "hex EXPR"
+.PD 0
+.IP "hex" 8
+.IX Item "hex"
+.PD
+Interprets \s-1EXPR\s0 as a hex string and returns the corresponding value.
+(To convert strings that might start with either 0, 0x, or 0b, see
+\&\*(L"oct\*(R".)  If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.Sp
+.Vb 2
+\&    print hex '0xAf'; # prints '175'
+\&    print hex 'aF';   # same
+.Ve
+.Sp
+Hex strings may only represent integers.  Strings that would cause
+integer overflow trigger a warning.  Leading whitespace is not stripped,
+unlike \fIoct()\fR.
+.IP "import" 8
+.IX Item "import"
+There is no builtin \f(CW\*(C`import\*(C'\fR function.  It is just an ordinary
+method (subroutine) defined (or inherited) by modules that wish to export
+names to another module.  The \f(CW\*(C`use\*(C'\fR function calls the \f(CW\*(C`import\*(C'\fR method
+for the package used.  See also \*(L"use\*(R", perlmod, and Exporter.
+.IP "index \s-1STR\s0,SUBSTR,POSITION" 8
+.IX Item "index STR,SUBSTR,POSITION"
+.PD 0
+.IP "index \s-1STR\s0,SUBSTR" 8
+.IX Item "index STR,SUBSTR"
+.PD
+The index function searches for one string within another, but without
+the wildcard-like behavior of a full regular-expression pattern match.
+It returns the position of the first occurrence of \s-1SUBSTR\s0 in \s-1STR\s0 at
+or after \s-1POSITION\s0.  If \s-1POSITION\s0 is omitted, starts searching from the
+beginning of the string.  The return value is based at \f(CW0\fR (or whatever
+you've set the \f(CW$[\fR variable to\*(--but don't do that).  If the substring
+is not found, returns one less than the base, ordinarily \f(CW\*(C`\-1\*(C'\fR.
+.IP "int \s-1EXPR\s0" 8
+.IX Item "int EXPR"
+.PD 0
+.IP "int" 8
+.IX Item "int"
+.PD
+Returns the integer portion of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+You should not use this function for rounding: one because it truncates
+towards \f(CW0\fR, and two because machine representations of floating point
+numbers can sometimes produce counterintuitive results.  For example,
+\&\f(CW\*(C`int(\-6.725/0.025)\*(C'\fR produces \-268 rather than the correct \-269; that's
+because it's really more like \-268.99999999999994315658 instead.  Usually,
+the \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`printf\*(C'\fR, or the \f(CW\*(C`POSIX::floor\*(C'\fR and \f(CW\*(C`POSIX::ceil\*(C'\fR
+functions will serve you better than will \fIint()\fR.
+.IP "ioctl \s-1FILEHANDLE\s0,FUNCTION,SCALAR" 8
+.IX Item "ioctl FILEHANDLE,FUNCTION,SCALAR"
+Implements the \fIioctl\fR\|(2) function.  You'll probably first have to say
+.Sp
+.Vb 1
+\&    require "ioctl.ph"; # probably in /usr/local/lib/perl/ioctl.ph
+.Ve
+.Sp
+to get the correct function definitions.  If \fIioctl.ph\fR doesn't
+exist or doesn't have the correct definitions you'll have to roll your
+own, based on your C header files such as \fI<sys/ioctl.h>\fR.
+(There is a Perl script called \fBh2ph\fR that comes with the Perl kit that
+may help you in this, but it's nontrivial.)  \s-1SCALAR\s0 will be read and/or
+written depending on the FUNCTION\*(--a pointer to the string value of \s-1SCALAR\s0
+will be passed as the third argument of the actual \f(CW\*(C`ioctl\*(C'\fR call.  (If \s-1SCALAR\s0
+has no string value but does have a numeric value, that value will be
+passed rather than a pointer to the string value.  To guarantee this to be
+true, add a \f(CW0\fR to the scalar before using it.)  The \f(CW\*(C`pack\*(C'\fR and \f(CW\*(C`unpack\*(C'\fR
+functions may be needed to manipulate the values of structures used by
+\&\f(CW\*(C`ioctl\*(C'\fR.
+.Sp
+The return value of \f(CW\*(C`ioctl\*(C'\fR (and \f(CW\*(C`fcntl\*(C'\fR) is as follows:
+.Sp
+.Vb 4
+\&        if OS returns:          then Perl returns:
+\&            -1                    undefined value
+\&             0                  string "0 but true"
+\&        anything else               that number
+.Ve
+.Sp
+Thus Perl returns true on success and false on failure, yet you can
+still easily determine the actual value returned by the operating
+system:
+.Sp
+.Vb 2
+\&    $retval = ioctl(...) || -1;
+\&    printf "System returned %d\en", $retval;
+.Ve
+.Sp
+The special string "\f(CW0\fR but true" is exempt from \fB\-w\fR complaints
+about improper numeric conversions.
+.Sp
+Here's an example of setting a filehandle named \f(CW\*(C`REMOTE\*(C'\fR to be
+non-blocking at the system level.  You'll have to negotiate \f(CW$|\fR
+on your own, though.
+.Sp
+.Vb 1
+\&    use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
+.Ve
+.Sp
+.Vb 2
+\&    $flags = fcntl(REMOTE, F_GETFL, 0)
+\&                or die "Can't get flags for the socket: $!\en";
+.Ve
+.Sp
+.Vb 2
+\&    $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
+\&                or die "Can't set flags for the socket: $!\en";
+.Ve
+.IP "join \s-1EXPR\s0,LIST" 8
+.IX Item "join EXPR,LIST"
+Joins the separate strings of \s-1LIST\s0 into a single string with fields
+separated by the value of \s-1EXPR\s0, and returns that new string.  Example:
+.Sp
+.Vb 1
+\&    $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
+.Ve
+.Sp
+Beware that unlike \f(CW\*(C`split\*(C'\fR, \f(CW\*(C`join\*(C'\fR doesn't take a pattern as its
+first argument.  Compare \*(L"split\*(R".
+.IP "keys \s-1HASH\s0" 8
+.IX Item "keys HASH"
+Returns a list consisting of all the keys of the named hash.
+(In scalar context, returns the number of keys.)
+.Sp
+The keys are returned in an apparently random order.  The actual
+random order is subject to change in future versions of perl, but it
+is guaranteed to be the same order as either the \f(CW\*(C`values\*(C'\fR or \f(CW\*(C`each\*(C'\fR
+function produces (given that the hash has not been modified).  Since
+Perl 5.8.1 the ordering is different even between different runs of
+Perl for security reasons (see \*(L"Algorithmic Complexity Attacks\*(R" in perlsec).
+.Sp
+As a side effect, calling \fIkeys()\fR resets the \s-1HASH\s0's internal iterator,
+see \*(L"each\*(R".
+.Sp
+Here is yet another way to print your environment:
+.Sp
+.Vb 5
+\&    @keys = keys %ENV;
+\&    @values = values %ENV;
+\&    while (@keys) {
+\&        print pop(@keys), '=', pop(@values), "\en";
+\&    }
+.Ve
+.Sp
+or how about sorted by key:
+.Sp
+.Vb 3
+\&    foreach $key (sort(keys %ENV)) {
+\&        print $key, '=', $ENV{$key}, "\en";
+\&    }
+.Ve
+.Sp
+The returned values are copies of the original keys in the hash, so
+modifying them will not affect the original hash.  Compare \*(L"values\*(R".
+.Sp
+To sort a hash by value, you'll need to use a \f(CW\*(C`sort\*(C'\fR function.
+Here's a descending numeric sort of a hash by its values:
+.Sp
+.Vb 3
+\&    foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash) {
+\&        printf "%4d %s\en", $hash{$key}, $key;
+\&    }
+.Ve
+.Sp
+As an lvalue \f(CW\*(C`keys\*(C'\fR allows you to increase the number of hash buckets
+allocated for the given hash.  This can gain you a measure of efficiency if
+you know the hash is going to get big.  (This is similar to pre-extending
+an array by assigning a larger number to $#array.)  If you say
+.Sp
+.Vb 1
+\&    keys %hash = 200;
+.Ve
+.Sp
+then \f(CW%hash\fR will have at least 200 buckets allocated for it\-\-256 of them,
+in fact, since it rounds up to the next power of two.  These
+buckets will be retained even if you do \f(CW\*(C`%hash = ()\*(C'\fR, use \f(CW\*(C`undef
+%hash\*(C'\fR if you want to free the storage while \f(CW%hash\fR is still in scope.
+You can't shrink the number of buckets allocated for the hash using
+\&\f(CW\*(C`keys\*(C'\fR in this way (but you needn't worry about doing this by accident,
+as trying has no effect).
+.Sp
+See also \f(CW\*(C`each\*(C'\fR, \f(CW\*(C`values\*(C'\fR and \f(CW\*(C`sort\*(C'\fR.
+.IP "kill \s-1SIGNAL\s0, \s-1LIST\s0" 8
+.IX Item "kill SIGNAL, LIST"
+Sends a signal to a list of processes.  Returns the number of
+processes successfully signaled (which is not necessarily the
+same as the number actually killed).
+.Sp
+.Vb 2
+\&    $cnt = kill 1, $child1, $child2;
+\&    kill 9, @goners;
+.Ve
+.Sp
+If \s-1SIGNAL\s0 is zero, no signal is sent to the process.  This is a
+useful way to check that a child process is alive and hasn't changed
+its \s-1UID\s0.  See perlport for notes on the portability of this
+construct.
+.Sp
+Unlike in the shell, if \s-1SIGNAL\s0 is negative, it kills
+process groups instead of processes.  (On System V, a negative \fI\s-1PROCESS\s0\fR
+number will also kill process groups, but that's not portable.)  That
+means you usually want to use positive not negative signals.  You may also
+use a signal name in quotes.
+.Sp
+See \*(L"Signals\*(R" in perlipc for more details.
+.IP "last \s-1LABEL\s0" 8
+.IX Item "last LABEL"
+.PD 0
+.IP "last" 8
+.IX Item "last"
+.PD
+The \f(CW\*(C`last\*(C'\fR command is like the \f(CW\*(C`break\*(C'\fR statement in C (as used in
+loops); it immediately exits the loop in question.  If the \s-1LABEL\s0 is
+omitted, the command refers to the innermost enclosing loop.  The
+\&\f(CW\*(C`continue\*(C'\fR block, if any, is not executed:
+.Sp
+.Vb 4
+\&    LINE: while (<STDIN>) {
+\&        last LINE if /^$/;      # exit when done with header
+\&        #...
+\&    }
+.Ve
+.Sp
+\&\f(CW\*(C`last\*(C'\fR cannot be used to exit a block which returns a value such as
+\&\f(CW\*(C`eval {}\*(C'\fR, \f(CW\*(C`sub {}\*(C'\fR or \f(CW\*(C`do {}\*(C'\fR, and should not be used to exit
+a \fIgrep()\fR or \fImap()\fR operation.
+.Sp
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus \f(CW\*(C`last\*(C'\fR can be used to effect an early
+exit out of such a block.
+.Sp
+See also \*(L"continue\*(R" for an illustration of how \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, and
+\&\f(CW\*(C`redo\*(C'\fR work.
+.IP "lc \s-1EXPR\s0" 8
+.IX Item "lc EXPR"
+.PD 0
+.IP "lc" 8
+.IX Item "lc"
+.PD
+Returns a lowercased version of \s-1EXPR\s0.  This is the internal function
+implementing the \f(CW\*(C`\eL\*(C'\fR escape in double-quoted strings.  Respects
+current \s-1LC_CTYPE\s0 locale if \f(CW\*(C`use locale\*(C'\fR in force.  See perllocale
+and perlunicode for more details about locale and Unicode support.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "lcfirst \s-1EXPR\s0" 8
+.IX Item "lcfirst EXPR"
+.PD 0
+.IP "lcfirst" 8
+.IX Item "lcfirst"
+.PD
+Returns the value of \s-1EXPR\s0 with the first character lowercased.  This
+is the internal function implementing the \f(CW\*(C`\el\*(C'\fR escape in
+double-quoted strings.  Respects current \s-1LC_CTYPE\s0 locale if \f(CW\*(C`use
+locale\*(C'\fR in force.  See perllocale and perlunicode for more
+details about locale and Unicode support.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "length \s-1EXPR\s0" 8
+.IX Item "length EXPR"
+.PD 0
+.IP "length" 8
+.IX Item "length"
+.PD
+Returns the length in \fIcharacters\fR of the value of \s-1EXPR\s0.  If \s-1EXPR\s0 is
+omitted, returns length of \f(CW$_\fR.  Note that this cannot be used on
+an entire array or hash to find out how many elements these have.
+For that, use \f(CW\*(C`scalar @array\*(C'\fR and \f(CW\*(C`scalar keys %hash\*(C'\fR respectively.
+.Sp
+Note the \fIcharacters\fR: if the \s-1EXPR\s0 is in Unicode, you will get the
+number of characters, not the number of bytes.  To get the length
+in bytes, use \f(CW\*(C`do { use bytes; length(EXPR) }\*(C'\fR, see bytes.
+.IP "link \s-1OLDFILE\s0,NEWFILE" 8
+.IX Item "link OLDFILE,NEWFILE"
+Creates a new filename linked to the old filename.  Returns true for
+success, false otherwise.
+.IP "listen \s-1SOCKET\s0,QUEUESIZE" 8
+.IX Item "listen SOCKET,QUEUESIZE"
+Does the same thing that the listen system call does.  Returns true if
+it succeeded, false otherwise.  See the example in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "local \s-1EXPR\s0" 8
+.IX Item "local EXPR"
+You really probably want to be using \f(CW\*(C`my\*(C'\fR instead, because \f(CW\*(C`local\*(C'\fR isn't
+what most people think of as \*(L"local\*(R".  See
+\&\*(L"Private Variables via \fImy()\fR\*(R" in perlsub for details.
+.Sp
+A local modifies the listed variables to be local to the enclosing
+block, file, or eval.  If more than one value is listed, the list must
+be placed in parentheses.  See \*(L"Temporary Values via \fIlocal()\fR\*(R" in perlsub
+for details, including issues with tied arrays and hashes.
+.IP "localtime \s-1EXPR\s0" 8
+.IX Item "localtime EXPR"
+Converts a time as returned by the time function to a 9\-element list
+with the time analyzed for the local time zone.  Typically used as
+follows:
+.Sp
+.Vb 3
+\&    #  0    1    2     3     4    5     6     7     8
+\&    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
+\&                                                localtime(time);
+.Ve
+.Sp
+All list elements are numeric, and come straight out of the C `struct
+tm'.  \f(CW$sec\fR, \f(CW$min\fR, and \f(CW$hour\fR are the seconds, minutes, and hours of the
+specified time.  \f(CW$mday\fR is the day of the month, and \f(CW$mon\fR is the month
+itself, in the range \f(CW0..11\fR with 0 indicating January and 11
+indicating December.  \f(CW$year\fR is the number of years since 1900.  That
+is, \f(CW$year\fR is \f(CW123\fR in year 2023.  \f(CW$wday\fR is the day of the week, with
+0 indicating Sunday and 3 indicating Wednesday.  \f(CW$yday\fR is the day of
+the year, in the range \f(CW0..364\fR (or \f(CW0..365\fR in leap years.)  \f(CW$isdst\fR
+is true if the specified time occurs during daylight savings time,
+false otherwise.
+.Sp
+Note that the \f(CW$year\fR element is \fInot\fR simply the last two digits of
+the year.  If you assume it is, then you create non\-Y2K\-compliant
+programs\*(--and you wouldn't want to do that, would you?
+.Sp
+The proper way to get a complete 4\-digit year is simply:
+.Sp
+.Vb 1
+\&        $year += 1900;
+.Ve
+.Sp
+And to get the last two digits of the year (e.g., '01' in 2001) do:
+.Sp
+.Vb 1
+\&        $year = sprintf("%02d", $year % 100);
+.Ve
+.Sp
+If \s-1EXPR\s0 is omitted, \f(CW\*(C`localtime()\*(C'\fR uses the current time (\f(CW\*(C`localtime(time)\*(C'\fR).
+.Sp
+In scalar context, \f(CW\*(C`localtime()\*(C'\fR returns the \fIctime\fR\|(3) value:
+.Sp
+.Vb 1
+\&    $now_string = localtime;  # e.g., "Thu Oct 13 04:54:34 1994"
+.Ve
+.Sp
+This scalar value is \fBnot\fR locale dependent, see perllocale, but
+instead a Perl builtin.  Also see the \f(CW\*(C`Time::Local\*(C'\fR module
+(to convert the second, minutes, hours, ... back to seconds since the
+stroke of midnight the 1st of January 1970, the value returned by
+\&\fItime()\fR), and the \fIstrftime\fR\|(3) and \fImktime\fR\|(3) functions available via the
+\&\s-1POSIX\s0 module.  To get somewhat similar but locale dependent date
+strings, set up your locale environment variables appropriately
+(please see perllocale) and try for example:
+.Sp
+.Vb 2
+\&    use POSIX qw(strftime);
+\&    $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
+.Ve
+.Sp
+Note that the \f(CW%a\fR and \f(CW%b\fR, the short forms of the day of the week
+and the month of the year, may not necessarily be three characters wide.
+.IP "lock \s-1THING\s0" 8
+.IX Item "lock THING"
+This function places an advisory lock on a shared variable, or referenced
+object contained in \fI\s-1THING\s0\fR until the lock goes out of scope.
+.Sp
+\&\fIlock()\fR is a \*(L"weak keyword\*(R" : this means that if you've defined a function
+by this name (before any calls to it), that function will be called
+instead. (However, if you've said \f(CW\*(C`use threads\*(C'\fR, \fIlock()\fR is always a
+keyword.) See threads.
+.IP "log \s-1EXPR\s0" 8
+.IX Item "log EXPR"
+.PD 0
+.IP "log" 8
+.IX Item "log"
+.PD
+Returns the natural logarithm (base \fIe\fR) of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted,
+returns log of \f(CW$_\fR.  To get the log of another base, use basic algebra:
+The base-N log of a number is equal to the natural log of that number
+divided by the natural log of N.  For example:
+.Sp
+.Vb 4
+\&    sub log10 {
+\&        my $n = shift;
+\&        return log($n)/log(10);
+\&    }
+.Ve
+.Sp
+See also \*(L"exp\*(R" for the inverse operation.
+.IP "lstat \s-1EXPR\s0" 8
+.IX Item "lstat EXPR"
+.PD 0
+.IP "lstat" 8
+.IX Item "lstat"
+.PD
+Does the same thing as the \f(CW\*(C`stat\*(C'\fR function (including setting the
+special \f(CW\*(C`_\*(C'\fR filehandle) but stats a symbolic link instead of the file
+the symbolic link points to.  If symbolic links are unimplemented on
+your system, a normal \f(CW\*(C`stat\*(C'\fR is done.  For much more detailed
+information, please see the documentation for \*(L"stat\*(R".
+.Sp
+If \s-1EXPR\s0 is omitted, stats \f(CW$_\fR.
+.IP "m//" 8
+.IX Item "m//"
+The match operator.  See perlop.
+.IP "map \s-1BLOCK\s0 \s-1LIST\s0" 8
+.IX Item "map BLOCK LIST"
+.PD 0
+.IP "map \s-1EXPR\s0,LIST" 8
+.IX Item "map EXPR,LIST"
+.PD
+Evaluates the \s-1BLOCK\s0 or \s-1EXPR\s0 for each element of \s-1LIST\s0 (locally setting
+\&\f(CW$_\fR to each element) and returns the list value composed of the
+results of each such evaluation.  In scalar context, returns the
+total number of elements so generated.  Evaluates \s-1BLOCK\s0 or \s-1EXPR\s0 in
+list context, so each element of \s-1LIST\s0 may produce zero, one, or
+more elements in the returned value.
+.Sp
+.Vb 1
+\&    @chars = map(chr, @nums);
+.Ve
+.Sp
+translates a list of numbers to the corresponding characters.  And
+.Sp
+.Vb 1
+\&    %hash = map { getkey($_) => $_ } @array;
+.Ve
+.Sp
+is just a funny way to write
+.Sp
+.Vb 4
+\&    %hash = ();
+\&    foreach $_ (@array) {
+\&        $hash{getkey($_)} = $_;
+\&    }
+.Ve
+.Sp
+Note that \f(CW$_\fR is an alias to the list value, so it can be used to
+modify the elements of the \s-1LIST\s0.  While this is useful and supported,
+it can cause bizarre results if the elements of \s-1LIST\s0 are not variables.
+Using a regular \f(CW\*(C`foreach\*(C'\fR loop for this purpose would be clearer in
+most cases.  See also \*(L"grep\*(R" for an array composed of those items of
+the original list for which the \s-1BLOCK\s0 or \s-1EXPR\s0 evaluates to true.
+.Sp
+\&\f(CW\*(C`{\*(C'\fR starts both hash references and blocks, so \f(CW\*(C`map { ...\*(C'\fR could be either
+the start of map \s-1BLOCK\s0 \s-1LIST\s0 or map \s-1EXPR\s0, \s-1LIST\s0. Because perl doesn't look
+ahead for the closing \f(CW\*(C`}\*(C'\fR it has to take a guess at which its dealing with
+based what it finds just after the \f(CW\*(C`{\*(C'\fR. Usually it gets it right, but if it
+doesn't it won't realize something is wrong until it gets to the \f(CW\*(C`}\*(C'\fR and
+encounters the missing (or unexpected) comma. The syntax error will be
+reported close to the \f(CW\*(C`}\*(C'\fR but you'll need to change something near the \f(CW\*(C`{\*(C'\fR
+such as using a unary \f(CW\*(C`+\*(C'\fR to give perl some help:
+.Sp
+.Vb 5
+\&    %hash = map {  "\eL$_", 1  } @array  # perl guesses EXPR.  wrong
+\&    %hash = map { +"\eL$_", 1  } @array  # perl guesses BLOCK. right
+\&    %hash = map { ("\eL$_", 1) } @array  # this also works
+\&    %hash = map {  lc($_), 1  } @array  # as does this.
+\&    %hash = map +( lc($_), 1 ), @array  # this is EXPR and works!
+.Ve
+.Sp
+.Vb 1
+\&    %hash = map  ( lc($_), 1 ), @array  # evaluates to (1, @array)
+.Ve
+.Sp
+or to force an anon hash constructor use \f(CW\*(C`+{\*(C'\fR
+.Sp
+.Vb 1
+\&   @hashes = map +{ lc($_), 1 }, @array # EXPR, so needs , at end
+.Ve
+.Sp
+and you get list of anonymous hashes each with only 1 entry.
+.IP "mkdir \s-1FILENAME\s0,MASK" 8
+.IX Item "mkdir FILENAME,MASK"
+.PD 0
+.IP "mkdir \s-1FILENAME\s0" 8
+.IX Item "mkdir FILENAME"
+.PD
+Creates the directory specified by \s-1FILENAME\s0, with permissions
+specified by \s-1MASK\s0 (as modified by \f(CW\*(C`umask\*(C'\fR).  If it succeeds it
+returns true, otherwise it returns false and sets \f(CW$!\fR (errno).
+If omitted, \s-1MASK\s0 defaults to 0777.
+.Sp
+In general, it is better to create directories with permissive \s-1MASK\s0,
+and let the user modify that with their \f(CW\*(C`umask\*(C'\fR, than it is to supply
+a restrictive \s-1MASK\s0 and give the user no way to be more permissive.
+The exceptions to this rule are when the file or directory should be
+kept private (mail files, for instance).  The \fIperlfunc\fR\|(1) entry on
+\&\f(CW\*(C`umask\*(C'\fR discusses the choice of \s-1MASK\s0 in more detail.
+.Sp
+Note that according to the \s-1POSIX\s0 1003.1\-1996 the \s-1FILENAME\s0 may have any
+number of trailing slashes.  Some operating and filesystems do not get
+this right, so Perl automatically removes all trailing slashes to keep
+everyone happy.
+.IP "msgctl \s-1ID\s0,CMD,ARG" 8
+.IX Item "msgctl ID,CMD,ARG"
+Calls the System V \s-1IPC\s0 function \fImsgctl\fR\|(2).  You'll probably have to say
+.Sp
+.Vb 1
+\&    use IPC::SysV;
+.Ve
+.Sp
+first to get the correct constant definitions.  If \s-1CMD\s0 is \f(CW\*(C`IPC_STAT\*(C'\fR,
+then \s-1ARG\s0 must be a variable which will hold the returned \f(CW\*(C`msqid_ds\*(C'\fR
+structure.  Returns like \f(CW\*(C`ioctl\*(C'\fR: the undefined value for error,
+\&\f(CW"0 but true"\fR for zero, or the actual return value otherwise.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, and \f(CW\*(C`IPC::Semaphore\*(C'\fR documentation.
+.IP "msgget \s-1KEY\s0,FLAGS" 8
+.IX Item "msgget KEY,FLAGS"
+Calls the System V \s-1IPC\s0 function \fImsgget\fR\|(2).  Returns the message queue
+id, or the undefined value if there is an error.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc and \f(CW\*(C`IPC::SysV\*(C'\fR and \f(CW\*(C`IPC::Msg\*(C'\fR documentation.
+.IP "msgrcv \s-1ID\s0,VAR,SIZE,TYPE,FLAGS" 8
+.IX Item "msgrcv ID,VAR,SIZE,TYPE,FLAGS"
+Calls the System V \s-1IPC\s0 function msgrcv to receive a message from
+message queue \s-1ID\s0 into variable \s-1VAR\s0 with a maximum message size of
+\&\s-1SIZE\s0.  Note that when a message is received, the message type as a
+native long integer will be the first thing in \s-1VAR\s0, followed by the
+actual message.  This packing may be opened with \f(CW\*(C`unpack("l! a*")\*(C'\fR.
+Taints the variable.  Returns true if successful, or false if there is
+an error.  See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, and
+\&\f(CW\*(C`IPC::SysV::Msg\*(C'\fR documentation.
+.IP "msgsnd \s-1ID\s0,MSG,FLAGS" 8
+.IX Item "msgsnd ID,MSG,FLAGS"
+Calls the System V \s-1IPC\s0 function msgsnd to send the message \s-1MSG\s0 to the
+message queue \s-1ID\s0.  \s-1MSG\s0 must begin with the native long integer message
+type, and be followed by the length of the actual message, and finally
+the message itself.  This kind of packing can be achieved with
+\&\f(CW\*(C`pack("l! a*", $type, $message)\*(C'\fR.  Returns true if successful,
+or false if there is an error.  See also \f(CW\*(C`IPC::SysV\*(C'\fR
+and \f(CW\*(C`IPC::SysV::Msg\*(C'\fR documentation.
+.IP "my \s-1EXPR\s0" 8
+.IX Item "my EXPR"
+.PD 0
+.IP "my \s-1TYPE\s0 \s-1EXPR\s0" 8
+.IX Item "my TYPE EXPR"
+.IP "my \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "my EXPR : ATTRS"
+.IP "my \s-1TYPE\s0 \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "my TYPE EXPR : ATTRS"
+.PD
+A \f(CW\*(C`my\*(C'\fR declares the listed variables to be local (lexically) to the
+enclosing block, file, or \f(CW\*(C`eval\*(C'\fR.  If more than one value is listed,
+the list must be placed in parentheses.
+.Sp
+The exact semantics and interface of \s-1TYPE\s0 and \s-1ATTRS\s0 are still
+evolving.  \s-1TYPE\s0 is currently bound to the use of \f(CW\*(C`fields\*(C'\fR pragma,
+and attributes are handled using the \f(CW\*(C`attributes\*(C'\fR pragma, or starting
+from Perl 5.8.0 also via the \f(CW\*(C`Attribute::Handlers\*(C'\fR module.  See
+\&\*(L"Private Variables via \fImy()\fR\*(R" in perlsub for details, and fields,
+attributes, and Attribute::Handlers.
+.IP "next \s-1LABEL\s0" 8
+.IX Item "next LABEL"
+.PD 0
+.IP "next" 8
+.IX Item "next"
+.PD
+The \f(CW\*(C`next\*(C'\fR command is like the \f(CW\*(C`continue\*(C'\fR statement in C; it starts
+the next iteration of the loop:
+.Sp
+.Vb 4
+\&    LINE: while (<STDIN>) {
+\&        next LINE if /^#/;      # discard comments
+\&        #...
+\&    }
+.Ve
+.Sp
+Note that if there were a \f(CW\*(C`continue\*(C'\fR block on the above, it would get
+executed even on discarded lines.  If the \s-1LABEL\s0 is omitted, the command
+refers to the innermost enclosing loop.
+.Sp
+\&\f(CW\*(C`next\*(C'\fR cannot be used to exit a block which returns a value such as
+\&\f(CW\*(C`eval {}\*(C'\fR, \f(CW\*(C`sub {}\*(C'\fR or \f(CW\*(C`do {}\*(C'\fR, and should not be used to exit
+a \fIgrep()\fR or \fImap()\fR operation.
+.Sp
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus \f(CW\*(C`next\*(C'\fR will exit such a block early.
+.Sp
+See also \*(L"continue\*(R" for an illustration of how \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, and
+\&\f(CW\*(C`redo\*(C'\fR work.
+.IP "no Module \s-1VERSION\s0 \s-1LIST\s0" 8
+.IX Item "no Module VERSION LIST"
+.PD 0
+.IP "no Module \s-1VERSION\s0" 8
+.IX Item "no Module VERSION"
+.IP "no Module \s-1LIST\s0" 8
+.IX Item "no Module LIST"
+.IP "no Module" 8
+.IX Item "no Module"
+.PD
+See the \f(CW\*(C`use\*(C'\fR function, which \f(CW\*(C`no\*(C'\fR is the opposite of.
+.IP "oct \s-1EXPR\s0" 8
+.IX Item "oct EXPR"
+.PD 0
+.IP "oct" 8
+.IX Item "oct"
+.PD
+Interprets \s-1EXPR\s0 as an octal string and returns the corresponding
+value.  (If \s-1EXPR\s0 happens to start off with \f(CW\*(C`0x\*(C'\fR, interprets it as a
+hex string.  If \s-1EXPR\s0 starts off with \f(CW\*(C`0b\*(C'\fR, it is interpreted as a
+binary string.  Leading whitespace is ignored in all three cases.)
+The following will handle decimal, binary, octal, and hex in the standard
+Perl or C notation:
+.Sp
+.Vb 1
+\&    $val = oct($val) if $val =~ /^0/;
+.Ve
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.   To go the other way (produce a number
+in octal), use \fIsprintf()\fR or \fIprintf()\fR:
+.Sp
+.Vb 2
+\&    $perms = (stat("filename"))[2] & 07777;
+\&    $oct_perms = sprintf "%lo", $perms;
+.Ve
+.Sp
+The \fIoct()\fR function is commonly used when a string such as \f(CW644\fR needs
+to be converted into a file mode, for example. (Although perl will
+automatically convert strings into numbers as needed, this automatic
+conversion assumes base 10.)
+.IP "open \s-1FILEHANDLE\s0,EXPR" 8
+.IX Item "open FILEHANDLE,EXPR"
+.PD 0
+.IP "open \s-1FILEHANDLE\s0,MODE,EXPR" 8
+.IX Item "open FILEHANDLE,MODE,EXPR"
+.IP "open \s-1FILEHANDLE\s0,MODE,EXPR,LIST" 8
+.IX Item "open FILEHANDLE,MODE,EXPR,LIST"
+.IP "open \s-1FILEHANDLE\s0,MODE,REFERENCE" 8
+.IX Item "open FILEHANDLE,MODE,REFERENCE"
+.IP "open \s-1FILEHANDLE\s0" 8
+.IX Item "open FILEHANDLE"
+.PD
+Opens the file whose filename is given by \s-1EXPR\s0, and associates it with
+\&\s-1FILEHANDLE\s0.
+.Sp
+(The following is a comprehensive reference to \fIopen()\fR: for a gentler
+introduction you may consider perlopentut.)
+.Sp
+If \s-1FILEHANDLE\s0 is an undefined scalar variable (or array or hash element)
+the variable is assigned a reference to a new anonymous filehandle,
+otherwise if \s-1FILEHANDLE\s0 is an expression, its value is used as the name of
+the real filehandle wanted.  (This is considered a symbolic reference, so
+\&\f(CW\*(C`use strict 'refs'\*(C'\fR should \fInot\fR be in effect.)
+.Sp
+If \s-1EXPR\s0 is omitted, the scalar variable of the same name as the
+\&\s-1FILEHANDLE\s0 contains the filename.  (Note that lexical variables\*(--those
+declared with \f(CW\*(C`my\*(C'\fR\-\-will not work for this purpose; so if you're
+using \f(CW\*(C`my\*(C'\fR, specify \s-1EXPR\s0 in your call to open.)
+.Sp
+If three or more arguments are specified then the mode of opening and
+the file name are separate. If \s-1MODE\s0 is \f(CW'<'\fR or nothing, the file
+is opened for input.  If \s-1MODE\s0 is \f(CW'>'\fR, the file is truncated and
+opened for output, being created if necessary.  If \s-1MODE\s0 is \f(CW'>>'\fR,
+the file is opened for appending, again being created if necessary.
+.Sp
+You can put a \f(CW'+'\fR in front of the \f(CW'>'\fR or \f(CW'<'\fR to
+indicate that you want both read and write access to the file; thus
+\&\f(CW'+<'\fR is almost always preferred for read/write updates\*(--the \f(CW'+>'\fR mode would clobber the file first.  You can't usually use
+either read-write mode for updating textfiles, since they have
+variable length records.  See the \fB\-i\fR switch in perlrun for a
+better approach.  The file is created with permissions of \f(CW0666\fR
+modified by the process' \f(CW\*(C`umask\*(C'\fR value.
+.Sp
+These various prefixes correspond to the \fIfopen\fR\|(3) modes of \f(CW'r'\fR,
+\&\f(CW'r+'\fR, \f(CW'w'\fR, \f(CW'w+'\fR, \f(CW'a'\fR, and \f(CW'a+'\fR.
+.Sp
+In the 2\-arguments (and 1\-argument) form of the call the mode and
+filename should be concatenated (in this order), possibly separated by
+spaces.  It is possible to omit the mode in these forms if the mode is
+\&\f(CW'<'\fR.
+.Sp
+If the filename begins with \f(CW'|'\fR, the filename is interpreted as a
+command to which output is to be piped, and if the filename ends with a
+\&\f(CW'|'\fR, the filename is interpreted as a command which pipes output to
+us.  See \*(L"Using \fIopen()\fR for \s-1IPC\s0\*(R" in perlipc
+for more examples of this.  (You are not allowed to \f(CW\*(C`open\*(C'\fR to a command
+that pipes both in \fIand\fR out, but see IPC::Open2, IPC::Open3,
+and \*(L"Bidirectional Communication with Another Process\*(R" in perlipc
+for alternatives.)
+.Sp
+For three or more arguments if \s-1MODE\s0 is \f(CW'|\-'\fR, the filename is
+interpreted as a command to which output is to be piped, and if \s-1MODE\s0
+is \f(CW'\-|'\fR, the filename is interpreted as a command which pipes
+output to us.  In the 2\-arguments (and 1\-argument) form one should
+replace dash (\f(CW'\-'\fR) with the command.
+See \*(L"Using \fIopen()\fR for \s-1IPC\s0\*(R" in perlipc for more examples of this.
+(You are not allowed to \f(CW\*(C`open\*(C'\fR to a command that pipes both in \fIand\fR
+out, but see IPC::Open2, IPC::Open3, and
+\&\*(L"Bidirectional Communication\*(R" in perlipc for alternatives.)
+.Sp
+In the three-or-more argument form of pipe opens, if \s-1LIST\s0 is specified
+(extra arguments after the command name) then \s-1LIST\s0 becomes arguments
+to the command invoked if the platform supports it.  The meaning of
+\&\f(CW\*(C`open\*(C'\fR with more than three arguments for non-pipe modes is not yet
+specified. Experimental \*(L"layers\*(R" may give extra \s-1LIST\s0 arguments
+meaning.
+.Sp
+In the 2\-arguments (and 1\-argument) form opening \f(CW'\-'\fR opens \s-1STDIN\s0
+and opening \f(CW'>\-'\fR opens \s-1STDOUT\s0.
+.Sp
+You may use the three-argument form of open to specify \s-1IO\s0 \*(L"layers\*(R"
+(sometimes also referred to as \*(L"disciplines\*(R") to be applied to the handle
+that affect how the input and output are processed (see open and
+PerlIO for more details). For example
+.Sp
+.Vb 1
+\&  open(FH, "<:utf8", "file")
+.Ve
+.Sp
+will open the \s-1UTF\-8\s0 encoded file containing Unicode characters,
+see perluniintro. (Note that if layers are specified in the
+three-arg form then default layers set by the \f(CW\*(C`open\*(C'\fR pragma are
+ignored.)
+.Sp
+Open returns nonzero upon success, the undefined value otherwise.  If
+the \f(CW\*(C`open\*(C'\fR involved a pipe, the return value happens to be the pid of
+the subprocess.
+.Sp
+If you're running Perl on a system that distinguishes between text
+files and binary files, then you should check out \*(L"binmode\*(R" for tips
+for dealing with this.  The key distinction between systems that need
+\&\f(CW\*(C`binmode\*(C'\fR and those that don't is their text file formats.  Systems
+like Unix, Mac \s-1OS\s0, and Plan 9, which delimit lines with a single
+character, and which encode that character in C as \f(CW"\en"\fR, do not
+need \f(CW\*(C`binmode\*(C'\fR.  The rest need it.
+.Sp
+When opening a file, it's usually a bad idea to continue normal execution
+if the request failed, so \f(CW\*(C`open\*(C'\fR is frequently used in connection with
+\&\f(CW\*(C`die\*(C'\fR.  Even if \f(CW\*(C`die\*(C'\fR won't do what you want (say, in a \s-1CGI\s0 script,
+where you want to make a nicely formatted error message (but there are
+modules that can help with that problem)) you should always check
+the return value from opening a file.  The infrequent exception is when
+working with an unopened filehandle is actually what you want to do.
+.Sp
+As a special case the 3 arg form with a read/write mode and the third
+argument being \f(CW\*(C`undef\*(C'\fR:
+.Sp
+.Vb 1
+\&    open(TMP, "+>", undef) or die ...
+.Ve
+.Sp
+opens a filehandle to an anonymous temporary file.  Also using \*(L"+<\*(R"
+works for symmetry, but you really should consider writing something
+to the temporary file first.  You will need to \fIseek()\fR to do the
+reading.
+.Sp
+File handles can be opened to \*(L"in memory\*(R" files held in Perl scalars via:
+.Sp
+.Vb 1
+\&    open($fh, '>', \e$variable) || ..
+.Ve
+.Sp
+Though if you try to re-open \f(CW\*(C`STDOUT\*(C'\fR or \f(CW\*(C`STDERR\*(C'\fR as an \*(L"in memory\*(R"
+file, you have to close it first:
+.Sp
+.Vb 2
+\&    close STDOUT;
+\&    open STDOUT, '>', \e$variable or die "Can't open STDOUT: $!";
+.Ve
+.Sp
+Examples:
+.Sp
+.Vb 3
+\&    $ARTICLE = 100;
+\&    open ARTICLE or die "Can't find article $ARTICLE: $!\en";
+\&    while (<ARTICLE>) {...
+.Ve
+.Sp
+.Vb 2
+\&    open(LOG, '>>/usr/spool/news/twitlog');     # (log is reserved)
+\&    # if the open fails, output is discarded
+.Ve
+.Sp
+.Vb 2
+\&    open(DBASE, '+<', 'dbase.mine')             # open for update
+\&        or die "Can't open 'dbase.mine' for update: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(DBASE, '+<dbase.mine')                 # ditto
+\&        or die "Can't open 'dbase.mine' for update: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(ARTICLE, '-|', "caesar <$article")     # decrypt article
+\&        or die "Can't start caesar: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(ARTICLE, "caesar <$article |")         # ditto
+\&        or die "Can't start caesar: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(EXTRACT, "|sort >/tmp/Tmp$$")          # $$ is our process id
+\&        or die "Can't start sort: $!";
+.Ve
+.Sp
+.Vb 4
+\&    # in memory files
+\&    open(MEMORY,'>', \e$var)
+\&        or die "Can't open memory file: $!";
+\&    print MEMORY "foo!\en";                      # output will end up in $var
+.Ve
+.Sp
+.Vb 1
+\&    # process argument list of files along with any includes
+.Ve
+.Sp
+.Vb 3
+\&    foreach $file (@ARGV) {
+\&        process($file, 'fh00');
+\&    }
+.Ve
+.Sp
+.Vb 7
+\&    sub process {
+\&        my($filename, $input) = @_;
+\&        $input++;               # this is a string increment
+\&        unless (open($input, $filename)) {
+\&            print STDERR "Can't open $filename: $!\en";
+\&            return;
+\&        }
+.Ve
+.Sp
+.Vb 9
+\&        local $_;
+\&        while (<$input>) {              # note use of indirection
+\&            if (/^#include "(.*)"/) {
+\&                process($1, $input);
+\&                next;
+\&            }
+\&            #...                # whatever
+\&        }
+\&    }
+.Ve
+.Sp
+You may also, in the Bourne shell tradition, specify an \s-1EXPR\s0 beginning
+with \f(CW'>&'\fR, in which case the rest of the string is interpreted
+as the name of a filehandle (or file descriptor, if numeric) to be
+duped (as \fIdup\fR\|(2)) and opened.  You may use \f(CW\*(C`&\*(C'\fR after \f(CW\*(C`>\*(C'\fR,
+\&\f(CW\*(C`>>\*(C'\fR, \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`+>\*(C'\fR, \f(CW\*(C`+>>\*(C'\fR, and \f(CW\*(C`+<\*(C'\fR.
+The mode you specify should match the mode of the original filehandle.
+(Duping a filehandle does not take into account any existing contents
+of \s-1IO\s0 buffers.) If you use the 3 arg form then you can pass either a
+number, the name of a filehandle or the normal \*(L"reference to a glob\*(R".
+.Sp
+Here is a script that saves, redirects, and restores \f(CW\*(C`STDOUT\*(C'\fR and
+\&\f(CW\*(C`STDERR\*(C'\fR using various methods:
+.Sp
+.Vb 3
+\&    #!/usr/bin/perl
+\&    open my $oldout, ">&STDOUT"     or die "Can't dup STDOUT: $!";
+\&    open OLDERR,     ">&", \e*STDERR or die "Can't dup STDERR: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open STDOUT, '>', "foo.out" or die "Can't redirect STDOUT: $!";
+\&    open STDERR, ">&STDOUT"     or die "Can't dup STDOUT: $!";
+.Ve
+.Sp
+.Vb 2
+\&    select STDERR; $| = 1;      # make unbuffered
+\&    select STDOUT; $| = 1;      # make unbuffered
+.Ve
+.Sp
+.Vb 2
+\&    print STDOUT "stdout 1\en";  # this works for
+\&    print STDERR "stderr 1\en";  # subprocesses too
+.Ve
+.Sp
+.Vb 2
+\&    close STDOUT;
+\&    close STDERR;
+.Ve
+.Sp
+.Vb 2
+\&    open STDOUT, ">&", $oldout or die "Can't dup \e$oldout: $!";
+\&    open STDERR, ">&OLDERR"    or die "Can't dup OLDERR: $!";
+.Ve
+.Sp
+.Vb 2
+\&    print STDOUT "stdout 2\en";
+\&    print STDERR "stderr 2\en";
+.Ve
+.Sp
+If you specify \f(CW'<&=X'\fR, where \f(CW\*(C`X\*(C'\fR is a file descriptor number
+or a filehandle, then Perl will do an equivalent of C's \f(CW\*(C`fdopen\*(C'\fR of
+that file descriptor (and not call \fIdup\fR\|(2)); this is more
+parsimonious of file descriptors.  For example:
+.Sp
+.Vb 2
+\&    # open for input, reusing the fileno of $fd
+\&    open(FILEHANDLE, "<&=$fd")
+.Ve
+.Sp
+or
+.Sp
+.Vb 1
+\&    open(FILEHANDLE, "<&=", $fd)
+.Ve
+.Sp
+or
+.Sp
+.Vb 2
+\&    # open for append, using the fileno of OLDFH
+\&    open(FH, ">>&=", OLDFH)
+.Ve
+.Sp
+or
+.Sp
+.Vb 1
+\&    open(FH, ">>&=OLDFH")
+.Ve
+.Sp
+Being parsimonious on filehandles is also useful (besides being
+parsimonious) for example when something is dependent on file
+descriptors, like for example locking using \fIflock()\fR.  If you do just
+\&\f(CW\*(C`open(A, '>>&B')\*(C'\fR, the filehandle A will not have the same file
+descriptor as B, and therefore flock(A) will not flock(B), and vice
+versa.  But with \f(CW\*(C`open(A, '>>&=B')\*(C'\fR the filehandles will share
+the same file descriptor.
+.Sp
+Note that if you are using Perls older than 5.8.0, Perl will be using
+the standard C libraries' \fIfdopen()\fR to implement the \*(L"=\*(R" functionality.
+On many \s-1UNIX\s0 systems \fIfdopen()\fR fails when file descriptors exceed a
+certain value, typically 255.  For Perls 5.8.0 and later, PerlIO is
+most often the default.
+.Sp
+You can see whether Perl has been compiled with PerlIO or not by
+running \f(CW\*(C`perl \-V\*(C'\fR and looking for \f(CW\*(C`useperlio=\*(C'\fR line.  If \f(CW\*(C`useperlio\*(C'\fR
+is \f(CW\*(C`define\*(C'\fR, you have PerlIO, otherwise you don't.
+.Sp
+If you open a pipe on the command \f(CW'\-'\fR, i.e., either \f(CW'|\-'\fR or \f(CW'\-|'\fR
+with 2\-arguments (or 1\-argument) form of \fIopen()\fR, then
+there is an implicit fork done, and the return value of open is the pid
+of the child within the parent process, and \f(CW0\fR within the child
+process.  (Use \f(CW\*(C`defined($pid)\*(C'\fR to determine whether the open was successful.)
+The filehandle behaves normally for the parent, but i/o to that
+filehandle is piped from/to the \s-1STDOUT/STDIN\s0 of the child process.
+In the child process the filehandle isn't opened\*(--i/o happens from/to
+the new \s-1STDOUT\s0 or \s-1STDIN\s0.  Typically this is used like the normal
+piped open when you want to exercise more control over just how the
+pipe command gets executed, such as when you are running setuid, and
+don't want to have to scan shell commands for metacharacters.
+The following triples are more or less equivalent:
+.Sp
+.Vb 4
+\&    open(FOO, "|tr '[a-z]' '[A-Z]'");
+\&    open(FOO, '|-', "tr '[a-z]' '[A-Z]'");
+\&    open(FOO, '|-') || exec 'tr', '[a-z]', '[A-Z]';
+\&    open(FOO, '|-', "tr", '[a-z]', '[A-Z]');
+.Ve
+.Sp
+.Vb 4
+\&    open(FOO, "cat -n '$file'|");
+\&    open(FOO, '-|', "cat -n '$file'");
+\&    open(FOO, '-|') || exec 'cat', '-n', $file;
+\&    open(FOO, '-|', "cat", '-n', $file);
+.Ve
+.Sp
+The last example in each block shows the pipe as \*(L"list form\*(R", which is
+not yet supported on all platforms.  A good rule of thumb is that if
+your platform has true \f(CW\*(C`fork()\*(C'\fR (in other words, if your platform is
+\&\s-1UNIX\s0) you can use the list form.
+.Sp
+See \*(L"Safe Pipe Opens\*(R" in perlipc for more examples of this.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before any operation that may do a fork, but this may not be
+supported on some platforms (see perlport).  To be safe, you may need
+to set \f(CW$|\fR ($AUTOFLUSH in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method
+of \f(CW\*(C`IO::Handle\*(C'\fR on any open handles.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor as determined by the value
+of $^F.  See \*(L"$^F\*(R" in perlvar.
+.Sp
+Closing any piped filehandle causes the parent process to wait for the
+child to finish, and returns the status value in \f(CW$?\fR.
+.Sp
+The filename passed to 2\-argument (or 1\-argument) form of \fIopen()\fR will
+have leading and trailing whitespace deleted, and the normal
+redirection characters honored.  This property, known as \*(L"magic open\*(R",
+can often be used to good effect.  A user could specify a filename of
+\&\fI\*(L"rsh cat file |\*(R"\fR, or you could change certain filenames as needed:
+.Sp
+.Vb 2
+\&    $filename =~ s/(.*\e.gz)\es*$/gzip -dc < $1|/;
+\&    open(FH, $filename) or die "Can't open $filename: $!";
+.Ve
+.Sp
+Use 3\-argument form to open a file with arbitrary weird characters in it,
+.Sp
+.Vb 1
+\&    open(FOO, '<', $file);
+.Ve
+.Sp
+otherwise it's necessary to protect any leading and trailing whitespace:
+.Sp
+.Vb 2
+\&    $file =~ s#^(\es)#./$1#;
+\&    open(FOO, "< $file\e0");
+.Ve
+.Sp
+(this may not work on some bizarre filesystems).  One should
+conscientiously choose between the \fImagic\fR and 3\-arguments form
+of \fIopen()\fR:
+.Sp
+.Vb 1
+\&    open IN, $ARGV[0];
+.Ve
+.Sp
+will allow the user to specify an argument of the form \f(CW"rsh cat file |"\fR,
+but will not work on a filename which happens to have a trailing space, while
+.Sp
+.Vb 1
+\&    open IN, '<', $ARGV[0];
+.Ve
+.Sp
+will have exactly the opposite restrictions.
+.Sp
+If you want a \*(L"real\*(R" C \f(CW\*(C`open\*(C'\fR (see \fIopen\fR\|(2) on your system), then you
+should use the \f(CW\*(C`sysopen\*(C'\fR function, which involves no such magic (but
+may use subtly different filemodes than Perl \fIopen()\fR, which is mapped
+to C \fIfopen()\fR).  This is
+another way to protect your filenames from interpretation.  For example:
+.Sp
+.Vb 7
+\&    use IO::Handle;
+\&    sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL)
+\&        or die "sysopen $path: $!";
+\&    $oldfh = select(HANDLE); $| = 1; select($oldfh);
+\&    print HANDLE "stuff $$\en";
+\&    seek(HANDLE, 0, 0);
+\&    print "File contains: ", <HANDLE>;
+.Ve
+.Sp
+Using the constructor from the \f(CW\*(C`IO::Handle\*(C'\fR package (or one of its
+subclasses, such as \f(CW\*(C`IO::File\*(C'\fR or \f(CW\*(C`IO::Socket\*(C'\fR), you can generate anonymous
+filehandles that have the scope of whatever variables hold references to
+them, and automatically close whenever and however you leave that scope:
+.Sp
+.Vb 12
+\&    use IO::File;
+\&    #...
+\&    sub read_myfile_munged {
+\&        my $ALL = shift;
+\&        my $handle = new IO::File;
+\&        open($handle, "myfile") or die "myfile: $!";
+\&        $first = <$handle>
+\&            or return ();     # Automatically closed here.
+\&        mung $first or die "mung failed";       # Or here.
+\&        return $first, <$handle> if $ALL;       # Or here.
+\&        $first;                                 # Or here.
+\&    }
+.Ve
+.Sp
+See \*(L"seek\*(R" for some details about mixing reading and writing.
+.IP "opendir \s-1DIRHANDLE\s0,EXPR" 8
+.IX Item "opendir DIRHANDLE,EXPR"
+Opens a directory named \s-1EXPR\s0 for processing by \f(CW\*(C`readdir\*(C'\fR, \f(CW\*(C`telldir\*(C'\fR,
+\&\f(CW\*(C`seekdir\*(C'\fR, \f(CW\*(C`rewinddir\*(C'\fR, and \f(CW\*(C`closedir\*(C'\fR.  Returns true if successful.
+\&\s-1DIRHANDLE\s0 may be an expression whose value can be used as an indirect
+dirhandle, usually the real dirhandle name.  If \s-1DIRHANDLE\s0 is an undefined
+scalar variable (or array or hash element), the variable is assigned a
+reference to a new anonymous dirhandle.
+DIRHANDLEs have their own namespace separate from FILEHANDLEs.
+.IP "ord \s-1EXPR\s0" 8
+.IX Item "ord EXPR"
+.PD 0
+.IP "ord" 8
+.IX Item "ord"
+.PD
+Returns the numeric (the native 8\-bit encoding, like \s-1ASCII\s0 or \s-1EBCDIC\s0,
+or Unicode) value of the first character of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted,
+uses \f(CW$_\fR.
+.Sp
+For the reverse, see \*(L"chr\*(R".
+See perlunicode and encoding for more about Unicode.
+.IP "our \s-1EXPR\s0" 8
+.IX Item "our EXPR"
+.PD 0
+.IP "our \s-1EXPR\s0 \s-1TYPE\s0" 8
+.IX Item "our EXPR TYPE"
+.IP "our \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "our EXPR : ATTRS"
+.IP "our \s-1TYPE\s0 \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "our TYPE EXPR : ATTRS"
+.PD
+An \f(CW\*(C`our\*(C'\fR declares the listed variables to be valid globals within
+the enclosing block, file, or \f(CW\*(C`eval\*(C'\fR.  That is, it has the same
+scoping rules as a \*(L"my\*(R" declaration, but does not create a local
+variable.  If more than one value is listed, the list must be placed
+in parentheses.  The \f(CW\*(C`our\*(C'\fR declaration has no semantic effect unless
+\&\*(L"use strict vars\*(R" is in effect, in which case it lets you use the
+declared global variable without qualifying it with a package name.
+(But only within the lexical scope of the \f(CW\*(C`our\*(C'\fR declaration.  In this
+it differs from \*(L"use vars\*(R", which is package scoped.)
+.Sp
+An \f(CW\*(C`our\*(C'\fR declaration declares a global variable that will be visible
+across its entire lexical scope, even across package boundaries.  The
+package in which the variable is entered is determined at the point
+of the declaration, not at the point of use.  This means the following
+behavior holds:
+.Sp
+.Vb 3
+\&    package Foo;
+\&    our $bar;           # declares $Foo::bar for rest of lexical scope
+\&    $bar = 20;
+.Ve
+.Sp
+.Vb 2
+\&    package Bar;
+\&    print $bar;         # prints 20
+.Ve
+.Sp
+Multiple \f(CW\*(C`our\*(C'\fR declarations in the same lexical scope are allowed
+if they are in different packages.  If they happened to be in the same
+package, Perl will emit warnings if you have asked for them.
+.Sp
+.Vb 4
+\&    use warnings;
+\&    package Foo;
+\&    our $bar;           # declares $Foo::bar for rest of lexical scope
+\&    $bar = 20;
+.Ve
+.Sp
+.Vb 3
+\&    package Bar;
+\&    our $bar = 30;      # declares $Bar::bar for rest of lexical scope
+\&    print $bar;         # prints 30
+.Ve
+.Sp
+.Vb 1
+\&    our $bar;           # emits warning
+.Ve
+.Sp
+An \f(CW\*(C`our\*(C'\fR declaration may also have a list of attributes associated
+with it.
+.Sp
+The exact semantics and interface of \s-1TYPE\s0 and \s-1ATTRS\s0 are still
+evolving.  \s-1TYPE\s0 is currently bound to the use of \f(CW\*(C`fields\*(C'\fR pragma,
+and attributes are handled using the \f(CW\*(C`attributes\*(C'\fR pragma, or starting
+from Perl 5.8.0 also via the \f(CW\*(C`Attribute::Handlers\*(C'\fR module.  See
+\&\*(L"Private Variables via \fImy()\fR\*(R" in perlsub for details, and fields,
+attributes, and Attribute::Handlers.
+.Sp
+The only currently recognized \f(CW\*(C`our()\*(C'\fR attribute is \f(CW\*(C`unique\*(C'\fR which
+indicates that a single copy of the global is to be used by all
+interpreters should the program happen to be running in a
+multi-interpreter environment. (The default behaviour would be for
+each interpreter to have its own copy of the global.)  Examples:
+.Sp
+.Vb 3
+\&    our @EXPORT : unique = qw(foo);
+\&    our %EXPORT_TAGS : unique = (bar => [qw(aa bb cc)]);
+\&    our $VERSION : unique = "1.00";
+.Ve
+.Sp
+Note that this attribute also has the effect of making the global
+readonly when the first new interpreter is cloned (for example,
+when the first new thread is created).
+.Sp
+Multi-interpreter environments can come to being either through the
+\&\fIfork()\fR emulation on Windows platforms, or by embedding perl in a
+multi-threaded application.  The \f(CW\*(C`unique\*(C'\fR attribute does nothing in
+all other environments.
+.IP "pack \s-1TEMPLATE\s0,LIST" 8
+.IX Item "pack TEMPLATE,LIST"
+Takes a \s-1LIST\s0 of values and converts it into a string using the rules
+given by the \s-1TEMPLATE\s0.  The resulting string is the concatenation of
+the converted values.  Typically, each converted value looks
+like its machine-level representation.  For example, on 32\-bit machines
+a converted integer may be represented by a sequence of 4 bytes.
+.Sp
+The \s-1TEMPLATE\s0 is a sequence of characters that give the order and type
+of values, as follows:
+.Sp
+.Vb 3
+\&    a   A string with arbitrary binary data, will be null padded.
+\&    A   A text (ASCII) string, will be space padded.
+\&    Z   A null terminated (ASCIZ) string, will be null padded.
+.Ve
+.Sp
+.Vb 4
+\&    b   A bit string (ascending bit order inside each byte, like vec()).
+\&    B   A bit string (descending bit order inside each byte).
+\&    h   A hex string (low nybble first).
+\&    H   A hex string (high nybble first).
+.Ve
+.Sp
+.Vb 2
+\&    c   A signed char value.
+\&    C   An unsigned char value.  Only does bytes.  See U for Unicode.
+.Ve
+.Sp
+.Vb 5
+\&    s   A signed short value.
+\&    S   An unsigned short value.
+\&          (This 'short' is _exactly_ 16 bits, which may differ from
+\&           what a local C compiler calls 'short'.  If you want
+\&           native-length shorts, use the '!' suffix.)
+.Ve
+.Sp
+.Vb 6
+\&    i   A signed integer value.
+\&    I   An unsigned integer value.
+\&          (This 'integer' is _at_least_ 32 bits wide.  Its exact
+\&           size depends on what a local C compiler calls 'int',
+\&           and may even be larger than the 'long' described in
+\&           the next item.)
+.Ve
+.Sp
+.Vb 5
+\&    l   A signed long value.
+\&    L   An unsigned long value.
+\&          (This 'long' is _exactly_ 32 bits, which may differ from
+\&           what a local C compiler calls 'long'.  If you want
+\&           native-length longs, use the '!' suffix.)
+.Ve
+.Sp
+.Vb 6
+\&    n   An unsigned short in "network" (big-endian) order.
+\&    N   An unsigned long in "network" (big-endian) order.
+\&    v   An unsigned short in "VAX" (little-endian) order.
+\&    V   An unsigned long in "VAX" (little-endian) order.
+\&          (These 'shorts' and 'longs' are _exactly_ 16 bits and
+\&           _exactly_ 32 bits, respectively.)
+.Ve
+.Sp
+.Vb 5
+\&    q   A signed quad (64-bit) value.
+\&    Q   An unsigned quad value.
+\&          (Quads are available only if your system supports 64-bit
+\&           integer values _and_ if Perl has been compiled to support those.
+\&           Causes a fatal error otherwise.)
+.Ve
+.Sp
+.Vb 2
+\&    j   A signed integer value (a Perl internal integer, IV).
+\&    J   An unsigned integer value (a Perl internal unsigned integer, UV).
+.Ve
+.Sp
+.Vb 2
+\&    f   A single-precision float in the native format.
+\&    d   A double-precision float in the native format.
+.Ve
+.Sp
+.Vb 6
+\&    F   A floating point value in the native native format
+\&           (a Perl internal floating point value, NV).
+\&    D   A long double-precision float in the native format.
+\&          (Long doubles are available only if your system supports long
+\&           double values _and_ if Perl has been compiled to support those.
+\&           Causes a fatal error otherwise.)
+.Ve
+.Sp
+.Vb 2
+\&    p   A pointer to a null-terminated string.
+\&    P   A pointer to a structure (fixed-length string).
+.Ve
+.Sp
+.Vb 3
+\&    u   A uuencoded string.
+\&    U   A Unicode character number.  Encodes to UTF-8 internally
+\&        (or UTF-EBCDIC in EBCDIC platforms).
+.Ve
+.Sp
+.Vb 4
+\&    w   A BER compressed integer.  Its bytes represent an unsigned
+\&        integer in base 128, most significant digit first, with as
+\&        few digits as possible.  Bit eight (the high bit) is set
+\&        on each byte except the last.
+.Ve
+.Sp
+.Vb 5
+\&    x   A null byte.
+\&    X   Back up a byte.
+\&    @   Null fill to absolute position, counted from the start of
+\&        the innermost ()-group.
+\&    (   Start of a ()-group.
+.Ve
+.Sp
+The following rules apply:
+.RS 8
+.IP "*" 8
+Each letter may optionally be followed by a number giving a repeat
+count.  With all types except \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`A\*(C'\fR, \f(CW\*(C`Z\*(C'\fR, \f(CW\*(C`b\*(C'\fR, \f(CW\*(C`B\*(C'\fR, \f(CW\*(C`h\*(C'\fR,
+\&\f(CW\*(C`H\*(C'\fR, \f(CW\*(C`@\*(C'\fR, \f(CW\*(C`x\*(C'\fR, \f(CW\*(C`X\*(C'\fR and \f(CW\*(C`P\*(C'\fR the pack function will gobble up that
+many values from the \s-1LIST\s0.  A \f(CW\*(C`*\*(C'\fR for the repeat count means to use
+however many items are left, except for \f(CW\*(C`@\*(C'\fR, \f(CW\*(C`x\*(C'\fR, \f(CW\*(C`X\*(C'\fR, where it is
+equivalent to \f(CW0\fR, and \f(CW\*(C`u\*(C'\fR, where it is equivalent to 1 (or 45, what
+is the same).  A numeric repeat count may optionally be enclosed in
+brackets, as in \f(CW\*(C`pack 'C[80]', @arr\*(C'\fR.
+.Sp
+One can replace the numeric repeat count by a template enclosed in brackets;
+then the packed length of this template in bytes is used as a count.
+For example, \f(CW\*(C`x[L]\*(C'\fR skips a long (it skips the number of bytes in a long);
+the template \f(CW\*(C`$t X[$t] $t\*(C'\fR \fIunpack()\fRs twice what \f(CW$t\fR unpacks.
+If the template in brackets contains alignment commands (such as \f(CW\*(C`x![d]\*(C'\fR),
+its packed length is calculated as if the start of the template has the maximal
+possible alignment.
+.Sp
+When used with \f(CW\*(C`Z\*(C'\fR, \f(CW\*(C`*\*(C'\fR results in the addition of a trailing null
+byte (so the packed result will be one longer than the byte \f(CW\*(C`length\*(C'\fR
+of the item).
+.Sp
+The repeat count for \f(CW\*(C`u\*(C'\fR is interpreted as the maximal number of bytes
+to encode per line of output, with 0 and 1 replaced by 45.
+.IP "*" 8
+The \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`A\*(C'\fR, and \f(CW\*(C`Z\*(C'\fR types gobble just one value, but pack it as a
+string of length count, padding with nulls or spaces as necessary.  When
+unpacking, \f(CW\*(C`A\*(C'\fR strips trailing spaces and nulls, \f(CW\*(C`Z\*(C'\fR strips everything
+after the first null, and \f(CW\*(C`a\*(C'\fR returns data verbatim.  When packing,
+\&\f(CW\*(C`a\*(C'\fR, and \f(CW\*(C`Z\*(C'\fR are equivalent.
+.Sp
+If the value-to-pack is too long, it is truncated.  If too long and an
+explicit count is provided, \f(CW\*(C`Z\*(C'\fR packs only \f(CW\*(C`$count\-1\*(C'\fR bytes, followed
+by a null byte.  Thus \f(CW\*(C`Z\*(C'\fR always packs a trailing null byte under
+all circumstances.
+.IP "*" 8
+Likewise, the \f(CW\*(C`b\*(C'\fR and \f(CW\*(C`B\*(C'\fR fields pack a string that many bits long.
+Each byte of the input field of \fIpack()\fR generates 1 bit of the result.
+Each result bit is based on the least-significant bit of the corresponding
+input byte, i.e., on \f(CW\*(C`ord($byte)%2\*(C'\fR.  In particular, bytes \f(CW"0"\fR and
+\&\f(CW"1"\fR generate bits 0 and 1, as do bytes \f(CW"\e0"\fR and \f(CW"\e1"\fR.
+.Sp
+Starting from the beginning of the input string of \fIpack()\fR, each 8\-tuple
+of bytes is converted to 1 byte of output.  With format \f(CW\*(C`b\*(C'\fR
+the first byte of the 8\-tuple determines the least-significant bit of a
+byte, and with format \f(CW\*(C`B\*(C'\fR it determines the most-significant bit of
+a byte.
+.Sp
+If the length of the input string is not exactly divisible by 8, the
+remainder is packed as if the input string were padded by null bytes
+at the end.  Similarly, during \fIunpack()\fRing the \*(L"extra\*(R" bits are ignored.
+.Sp
+If the input string of \fIpack()\fR is longer than needed, extra bytes are ignored.
+A \f(CW\*(C`*\*(C'\fR for the repeat count of \fIpack()\fR means to use all the bytes of
+the input field.  On \fIunpack()\fRing the bits are converted to a string
+of \f(CW"0"\fRs and \f(CW"1"\fRs.
+.IP "*" 8
+The \f(CW\*(C`h\*(C'\fR and \f(CW\*(C`H\*(C'\fR fields pack a string that many nybbles (4\-bit groups,
+representable as hexadecimal digits, 0\-9a\-f) long.
+.Sp
+Each byte of the input field of \fIpack()\fR generates 4 bits of the result.
+For non-alphabetical bytes the result is based on the 4 least-significant
+bits of the input byte, i.e., on \f(CW\*(C`ord($byte)%16\*(C'\fR.  In particular,
+bytes \f(CW"0"\fR and \f(CW"1"\fR generate nybbles 0 and 1, as do bytes
+\&\f(CW"\e0"\fR and \f(CW"\e1"\fR.  For bytes \f(CW"a".."f"\fR and \f(CW"A".."F"\fR the result
+is compatible with the usual hexadecimal digits, so that \f(CW"a"\fR and
+\&\f(CW"A"\fR both generate the nybble \f(CW\*(C`0xa==10\*(C'\fR.  The result for bytes
+\&\f(CW"g".."z"\fR and \f(CW"G".."Z"\fR is not well\-defined.
+.Sp
+Starting from the beginning of the input string of \fIpack()\fR, each pair
+of bytes is converted to 1 byte of output.  With format \f(CW\*(C`h\*(C'\fR the
+first byte of the pair determines the least-significant nybble of the
+output byte, and with format \f(CW\*(C`H\*(C'\fR it determines the most-significant
+nybble.
+.Sp
+If the length of the input string is not even, it behaves as if padded
+by a null byte at the end.  Similarly, during \fIunpack()\fRing the \*(L"extra\*(R"
+nybbles are ignored.
+.Sp
+If the input string of \fIpack()\fR is longer than needed, extra bytes are ignored.
+A \f(CW\*(C`*\*(C'\fR for the repeat count of \fIpack()\fR means to use all the bytes of
+the input field.  On \fIunpack()\fRing the bits are converted to a string
+of hexadecimal digits.
+.IP "*" 8
+The \f(CW\*(C`p\*(C'\fR type packs a pointer to a null-terminated string.  You are
+responsible for ensuring the string is not a temporary value (which can
+potentially get deallocated before you get around to using the packed result).
+The \f(CW\*(C`P\*(C'\fR type packs a pointer to a structure of the size indicated by the
+length.  A \s-1NULL\s0 pointer is created if the corresponding value for \f(CW\*(C`p\*(C'\fR or
+\&\f(CW\*(C`P\*(C'\fR is \f(CW\*(C`undef\*(C'\fR, similarly for \fIunpack()\fR.
+.IP "*" 8
+The \f(CW\*(C`/\*(C'\fR template character allows packing and unpacking of strings where
+the packed structure contains a byte count followed by the string itself.
+You write \fIlength-item\fR\f(CW\*(C`/\*(C'\fR\fIstring-item\fR.
+.Sp
+The \fIlength-item\fR can be any \f(CW\*(C`pack\*(C'\fR template letter, and describes
+how the length value is packed.  The ones likely to be of most use are
+integer-packing ones like \f(CW\*(C`n\*(C'\fR (for Java strings), \f(CW\*(C`w\*(C'\fR (for \s-1ASN\s0.1 or
+\&\s-1SNMP\s0) and \f(CW\*(C`N\*(C'\fR (for Sun \s-1XDR\s0).
+.Sp
+For \f(CW\*(C`pack\*(C'\fR, the \fIstring-item\fR must, at present, be \f(CW"A*"\fR, \f(CW"a*"\fR or
+\&\f(CW"Z*"\fR. For \f(CW\*(C`unpack\*(C'\fR the length of the string is obtained from the
+\&\fIlength-item\fR, but if you put in the '*' it will be ignored. For all other
+codes, \f(CW\*(C`unpack\*(C'\fR applies the length value to the next item, which must not
+have a repeat count.
+.Sp
+.Vb 3
+\&    unpack 'C/a', "\e04Gurusamy";        gives 'Guru'
+\&    unpack 'a3/A* A*', '007 Bond  J ';  gives (' Bond','J')
+\&    pack 'n/a* w/a*','hello,','world';  gives "\e000\e006hello,\e005world"
+.Ve
+.Sp
+The \fIlength-item\fR is not returned explicitly from \f(CW\*(C`unpack\*(C'\fR.
+.Sp
+Adding a count to the \fIlength-item\fR letter is unlikely to do anything
+useful, unless that letter is \f(CW\*(C`A\*(C'\fR, \f(CW\*(C`a\*(C'\fR or \f(CW\*(C`Z\*(C'\fR.  Packing with a
+\&\fIlength-item\fR of \f(CW\*(C`a\*(C'\fR or \f(CW\*(C`Z\*(C'\fR may introduce \f(CW"\e000"\fR characters,
+which Perl does not regard as legal in numeric strings.
+.IP "*" 8
+The integer types \f(CW\*(C`s\*(C'\fR, \f(CW\*(C`S\*(C'\fR, \f(CW\*(C`l\*(C'\fR, and \f(CW\*(C`L\*(C'\fR may be
+immediately followed by a \f(CW\*(C`!\*(C'\fR suffix to signify native shorts or
+longs\*(--as you can see from above for example a bare \f(CW\*(C`l\*(C'\fR does mean
+exactly 32 bits, the native \f(CW\*(C`long\*(C'\fR (as seen by the local C compiler)
+may be larger.  This is an issue mainly in 64\-bit platforms.  You can
+see whether using \f(CW\*(C`!\*(C'\fR makes any difference by
+.Sp
+.Vb 2
+\&        print length(pack("s")), " ", length(pack("s!")), "\en";
+\&        print length(pack("l")), " ", length(pack("l!")), "\en";
+.Ve
+.Sp
+\&\f(CW\*(C`i!\*(C'\fR and \f(CW\*(C`I!\*(C'\fR also work but only because of completeness;
+they are identical to \f(CW\*(C`i\*(C'\fR and \f(CW\*(C`I\*(C'\fR.
+.Sp
+The actual sizes (in bytes) of native shorts, ints, longs, and long
+longs on the platform where Perl was built are also available via
+Config:
+.Sp
+.Vb 5
+\&       use Config;
+\&       print $Config{shortsize},    "\en";
+\&       print $Config{intsize},      "\en";
+\&       print $Config{longsize},     "\en";
+\&       print $Config{longlongsize}, "\en";
+.Ve
+.Sp
+(The \f(CW$Config{longlongsize}\fR will be undefined if your system does
+not support long longs.)
+.IP "*" 8
+The integer formats \f(CW\*(C`s\*(C'\fR, \f(CW\*(C`S\*(C'\fR, \f(CW\*(C`i\*(C'\fR, \f(CW\*(C`I\*(C'\fR, \f(CW\*(C`l\*(C'\fR, \f(CW\*(C`L\*(C'\fR, \f(CW\*(C`j\*(C'\fR, and \f(CW\*(C`J\*(C'\fR
+are inherently non-portable between processors and operating systems
+because they obey the native byteorder and endianness.  For example a
+4\-byte integer 0x12345678 (305419896 decimal) would be ordered natively
+(arranged in and handled by the \s-1CPU\s0 registers) into bytes as
+.Sp
+.Vb 2
+\&        0x12 0x34 0x56 0x78     # big-endian
+\&        0x78 0x56 0x34 0x12     # little-endian
+.Ve
+.Sp
+Basically, the Intel and \s-1VAX\s0 CPUs are little\-endian, while everybody
+else, for example Motorola m68k/88k, \s-1PPC\s0, Sparc, \s-1HP\s0 \s-1PA\s0, Power, and
+Cray are big\-endian.  Alpha and \s-1MIPS\s0 can be either: Digital/Compaq
+used/uses them in little-endian mode; SGI/Cray uses them in big-endian
+mode.
+.Sp
+The names `big\-endian' and `little\-endian' are comic references to
+the classic \*(L"Gulliver's Travels\*(R" (via the paper \*(L"On Holy Wars and a
+Plea for Peace\*(R" by Danny Cohen, \s-1USC/ISI\s0 \s-1IEN\s0 137, April 1, 1980) and
+the egg-eating habits of the Lilliputians.
+.Sp
+Some systems may have even weirder byte orders such as
+.Sp
+.Vb 2
+\&        0x56 0x78 0x12 0x34
+\&        0x34 0x12 0x78 0x56
+.Ve
+.Sp
+You can see your system's preference with
+.Sp
+.Vb 2
+\&        print join(" ", map { sprintf "%#02x", $_ }
+\&                            unpack("C*",pack("L",0x12345678))), "\en";
+.Ve
+.Sp
+The byteorder on the platform where Perl was built is also available
+via Config:
+.Sp
+.Vb 2
+\&        use Config;
+\&        print $Config{byteorder}, "\en";
+.Ve
+.Sp
+Byteorders \f(CW'1234'\fR and \f(CW'12345678'\fR are little\-endian, \f(CW'4321'\fR
+and \f(CW'87654321'\fR are big\-endian.
+.Sp
+If you want portable packed integers use the formats \f(CW\*(C`n\*(C'\fR, \f(CW\*(C`N\*(C'\fR,
+\&\f(CW\*(C`v\*(C'\fR, and \f(CW\*(C`V\*(C'\fR, their byte endianness and size are known.
+See also perlport.
+.IP "*" 8
+Real numbers (floats and doubles) are in the native machine format only;
+due to the multiplicity of floating formats around, and the lack of a
+standard \*(L"network\*(R" representation, no facility for interchange has been
+made.  This means that packed floating point data written on one machine
+may not be readable on another \- even if both use \s-1IEEE\s0 floating point
+arithmetic (as the endian-ness of the memory representation is not part
+of the \s-1IEEE\s0 spec).  See also perlport.
+.Sp
+Note that Perl uses doubles internally for all numeric calculation, and
+converting from double into float and thence back to double again will
+lose precision (i.e., \f(CW\*(C`unpack("f", pack("f", $foo)\*(C'\fR) will not in general
+equal \f(CW$foo\fR).
+.IP "*" 8
+If the pattern begins with a \f(CW\*(C`U\*(C'\fR, the resulting string will be
+treated as UTF\-8\-encoded Unicode. You can force \s-1UTF\-8\s0 encoding on in a
+string with an initial \f(CW\*(C`U0\*(C'\fR, and the bytes that follow will be
+interpreted as Unicode characters. If you don't want this to happen,
+you can begin your pattern with \f(CW\*(C`C0\*(C'\fR (or anything else) to force Perl
+not to \s-1UTF\-8\s0 encode your string, and then follow this with a \f(CW\*(C`U*\*(C'\fR
+somewhere in your pattern.
+.IP "*" 8
+You must yourself do any alignment or padding by inserting for example
+enough \f(CW'x'\fRes while packing.  There is no way to \fIpack()\fR and \fIunpack()\fR
+could know where the bytes are going to or coming from.  Therefore
+\&\f(CW\*(C`pack\*(C'\fR (and \f(CW\*(C`unpack\*(C'\fR) handle their output and input as flat
+sequences of bytes.
+.IP "*" 8
+A ()\-group is a sub-TEMPLATE enclosed in parentheses.  A group may
+take a repeat count, both as postfix, and for \fIunpack()\fR also via the \f(CW\*(C`/\*(C'\fR
+template character. Within each repetition of a group, positioning with
+\&\f(CW\*(C`@\*(C'\fR starts again at 0. Therefore, the result of
+.Sp
+.Vb 1
+\&    pack( '@1A((@2A)@3A)', 'a', 'b', 'c' )
+.Ve
+.Sp
+is the string \*(L"\e0a\e0\e0bc\*(R".
+.IP "*" 8
+\&\f(CW\*(C`x\*(C'\fR and \f(CW\*(C`X\*(C'\fR accept \f(CW\*(C`!\*(C'\fR modifier.  In this case they act as
+alignment commands: they jump forward/back to the closest position
+aligned at a multiple of \f(CW\*(C`count\*(C'\fR bytes.  For example, to \fIpack()\fR or
+\&\fIunpack()\fR C's \f(CW\*(C`struct {char c; double d; char cc[2]}\*(C'\fR one may need to
+use the template \f(CW\*(C`C x![d] d C[2]\*(C'\fR; this assumes that doubles must be
+aligned on the double's size.
+.Sp
+For alignment commands \f(CW\*(C`count\*(C'\fR of 0 is equivalent to \f(CW\*(C`count\*(C'\fR of 1;
+both result in no\-ops.
+.IP "*" 8
+A comment in a \s-1TEMPLATE\s0 starts with \f(CW\*(C`#\*(C'\fR and goes to the end of line.
+White space may be used to separate pack codes from each other, but
+a \f(CW\*(C`!\*(C'\fR modifier and a repeat count must follow immediately.
+.IP "*" 8
+If \s-1TEMPLATE\s0 requires more arguments to \fIpack()\fR than actually given, \fIpack()\fR
+assumes additional \f(CW""\fR arguments.  If \s-1TEMPLATE\s0 requires less arguments
+to \fIpack()\fR than actually given, extra arguments are ignored.
+.RE
+.RS 8
+.Sp
+Examples:
+.Sp
+.Vb 6
+\&    $foo = pack("CCCC",65,66,67,68);
+\&    # foo eq "ABCD"
+\&    $foo = pack("C4",65,66,67,68);
+\&    # same thing
+\&    $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9);
+\&    # same thing with Unicode circled letters
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("ccxxcc",65,66,67,68);
+\&    # foo eq "AB\e0\e0CD"
+.Ve
+.Sp
+.Vb 4
+\&    # note: the above examples featuring "C" and "c" are true
+\&    # only on ASCII and ASCII-derived systems such as ISO Latin 1
+\&    # and UTF-8.  In EBCDIC the first example would be
+\&    # $foo = pack("CCCC",193,194,195,196);
+.Ve
+.Sp
+.Vb 3
+\&    $foo = pack("s2",1,2);
+\&    # "\e1\e0\e2\e0" on little-endian
+\&    # "\e0\e1\e0\e2" on big-endian
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("a4","abcd","x","y","z");
+\&    # "abcd"
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("aaaa","abcd","x","y","z");
+\&    # "axyz"
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("a14","abcdefg");
+\&    # "abcdefg\e0\e0\e0\e0\e0\e0\e0"
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("i9pl", gmtime);
+\&    # a real struct tm (on my system anyway)
+.Ve
+.Sp
+.Vb 3
+\&    $utmp_template = "Z8 Z8 Z16 L";
+\&    $utmp = pack($utmp_template, @utmp1);
+\&    # a struct utmp (BSDish)
+.Ve
+.Sp
+.Vb 2
+\&    @utmp2 = unpack($utmp_template, $utmp);
+\&    # "@utmp1" eq "@utmp2"
+.Ve
+.Sp
+.Vb 3
+\&    sub bintodec {
+\&        unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
+\&    }
+.Ve
+.Sp
+.Vb 5
+\&    $foo = pack('sx2l', 12, 34);
+\&    # short 12, two zero bytes padding, long 34
+\&    $bar = pack('s at 4l', 12, 34);
+\&    # short 12, zero fill to position 4, long 34
+\&    # $foo eq $bar
+.Ve
+.Sp
+The same template may generally also be used in \fIunpack()\fR.
+.RE
+.IP "package \s-1NAMESPACE\s0" 8
+.IX Item "package NAMESPACE"
+.PD 0
+.IP "package" 8
+.IX Item "package"
+.PD
+Declares the compilation unit as being in the given namespace.  The scope
+of the package declaration is from the declaration itself through the end
+of the enclosing block, file, or eval (the same as the \f(CW\*(C`my\*(C'\fR operator).
+All further unqualified dynamic identifiers will be in this namespace.
+A package statement affects only dynamic variables\*(--including those
+you've used \f(CW\*(C`local\*(C'\fR on\*(--but \fInot\fR lexical variables, which are created
+with \f(CW\*(C`my\*(C'\fR.  Typically it would be the first declaration in a file to
+be included by the \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR operator.  You can switch into a
+package in more than one place; it merely influences which symbol table
+is used by the compiler for the rest of that block.  You can refer to
+variables and filehandles in other packages by prefixing the identifier
+with the package name and a double colon:  \f(CW$Package::Variable\fR.
+If the package name is null, the \f(CW\*(C`main\*(C'\fR package as assumed.  That is,
+\&\f(CW$::sail\fR is equivalent to \f(CW$main::sail\fR (as well as to \f(CW$main'sail\fR,
+still seen in older code).
+.Sp
+If \s-1NAMESPACE\s0 is omitted, then there is no current package, and all
+identifiers must be fully qualified or lexicals.  However, you are
+strongly advised not to make use of this feature. Its use can cause
+unexpected behaviour, even crashing some versions of Perl. It is
+deprecated, and will be removed from a future release.
+.Sp
+See \*(L"Packages\*(R" in perlmod for more information about packages, modules,
+and classes.  See perlsub for other scoping issues.
+.IP "pipe \s-1READHANDLE\s0,WRITEHANDLE" 8
+.IX Item "pipe READHANDLE,WRITEHANDLE"
+Opens a pair of connected pipes like the corresponding system call.
+Note that if you set up a loop of piped processes, deadlock can occur
+unless you are very careful.  In addition, note that Perl's pipes use
+\&\s-1IO\s0 buffering, so you may need to set \f(CW$|\fR to flush your \s-1WRITEHANDLE\s0
+after each command, depending on the application.
+.Sp
+See IPC::Open2, IPC::Open3, and \*(L"Bidirectional Communication\*(R" in perlipc
+for examples of such things.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will be set
+for the newly opened file descriptors as determined by the value of $^F.
+See \*(L"$^F\*(R" in perlvar.
+.IP "pop \s-1ARRAY\s0" 8
+.IX Item "pop ARRAY"
+.PD 0
+.IP "pop" 8
+.IX Item "pop"
+.PD
+Pops and returns the last value of the array, shortening the array by
+one element.  Has an effect similar to
+.Sp
+.Vb 1
+\&    $ARRAY[$#ARRAY--]
+.Ve
+.Sp
+If there are no elements in the array, returns the undefined value
+(although this may happen at other times as well).  If \s-1ARRAY\s0 is
+omitted, pops the \f(CW at ARGV\fR array in the main program, and the \f(CW at _\fR
+array in subroutines, just like \f(CW\*(C`shift\*(C'\fR.
+.IP "pos \s-1SCALAR\s0" 8
+.IX Item "pos SCALAR"
+.PD 0
+.IP "pos" 8
+.IX Item "pos"
+.PD
+Returns the offset of where the last \f(CW\*(C`m//g\*(C'\fR search left off for the variable
+in question (\f(CW$_\fR is used when the variable is not specified).  May be
+modified to change that offset.  Such modification will also influence
+the \f(CW\*(C`\eG\*(C'\fR zero-width assertion in regular expressions.  See perlre and
+perlop.
+.IP "print \s-1FILEHANDLE\s0 \s-1LIST\s0" 8
+.IX Item "print FILEHANDLE LIST"
+.PD 0
+.IP "print \s-1LIST\s0" 8
+.IX Item "print LIST"
+.IP "print" 8
+.IX Item "print"
+.PD
+Prints a string or a list of strings.  Returns true if successful.
+\&\s-1FILEHANDLE\s0 may be a scalar variable name, in which case the variable
+contains the name of or a reference to the filehandle, thus introducing
+one level of indirection.  (\s-1NOTE:\s0 If \s-1FILEHANDLE\s0 is a variable and
+the next token is a term, it may be misinterpreted as an operator
+unless you interpose a \f(CW\*(C`+\*(C'\fR or put parentheses around the arguments.)
+If \s-1FILEHANDLE\s0 is omitted, prints by default to standard output (or
+to the last selected output channel\*(--see \*(L"select\*(R").  If \s-1LIST\s0 is
+also omitted, prints \f(CW$_\fR to the currently selected output channel.
+To set the default output channel to something other than \s-1STDOUT\s0
+use the select operation.  The current value of \f(CW$,\fR (if any) is
+printed between each \s-1LIST\s0 item.  The current value of \f(CW\*(C`$\e\*(C'\fR (if
+any) is printed after the entire \s-1LIST\s0 has been printed.  Because
+print takes a \s-1LIST\s0, anything in the \s-1LIST\s0 is evaluated in list
+context, and any subroutine that you call will have one or more of
+its expressions evaluated in list context.  Also be careful not to
+follow the print keyword with a left parenthesis unless you want
+the corresponding right parenthesis to terminate the arguments to
+the print\*(--interpose a \f(CW\*(C`+\*(C'\fR or put parentheses around all the
+arguments.
+.Sp
+Note that if you're storing \s-1FILEHANDLES\s0 in an array or other expression,
+you will have to use a block returning its value instead:
+.Sp
+.Vb 2
+\&    print { $files[$i] } "stuff\en";
+\&    print { $OK ? STDOUT : STDERR } "stuff\en";
+.Ve
+.IP "printf \s-1FILEHANDLE\s0 \s-1FORMAT\s0, \s-1LIST\s0" 8
+.IX Item "printf FILEHANDLE FORMAT, LIST"
+.PD 0
+.IP "printf \s-1FORMAT\s0, \s-1LIST\s0" 8
+.IX Item "printf FORMAT, LIST"
+.PD
+Equivalent to \f(CW\*(C`print FILEHANDLE sprintf(FORMAT, LIST)\*(C'\fR, except that \f(CW\*(C`$\e\*(C'\fR
+(the output record separator) is not appended.  The first argument
+of the list will be interpreted as the \f(CW\*(C`printf\*(C'\fR format. See \f(CW\*(C`sprintf\*(C'\fR
+for an explanation of the format argument. If \f(CW\*(C`use locale\*(C'\fR is in effect,
+the character used for the decimal point in formatted real numbers is
+affected by the \s-1LC_NUMERIC\s0 locale.  See perllocale.
+.Sp
+Don't fall into the trap of using a \f(CW\*(C`printf\*(C'\fR when a simple
+\&\f(CW\*(C`print\*(C'\fR would do.  The \f(CW\*(C`print\*(C'\fR is more efficient and less
+error prone.
+.IP "prototype \s-1FUNCTION\s0" 8
+.IX Item "prototype FUNCTION"
+Returns the prototype of a function as a string (or \f(CW\*(C`undef\*(C'\fR if the
+function has no prototype).  \s-1FUNCTION\s0 is a reference to, or the name of,
+the function whose prototype you want to retrieve.
+.Sp
+If \s-1FUNCTION\s0 is a string starting with \f(CW\*(C`CORE::\*(C'\fR, the rest is taken as a
+name for Perl builtin.  If the builtin is not \fIoverridable\fR (such as
+\&\f(CW\*(C`qw//\*(C'\fR) or its arguments cannot be expressed by a prototype (such as
+\&\f(CW\*(C`system\*(C'\fR) returns \f(CW\*(C`undef\*(C'\fR because the builtin does not really behave
+like a Perl function.  Otherwise, the string describing the equivalent
+prototype is returned.
+.IP "push \s-1ARRAY\s0,LIST" 8
+.IX Item "push ARRAY,LIST"
+Treats \s-1ARRAY\s0 as a stack, and pushes the values of \s-1LIST\s0
+onto the end of \s-1ARRAY\s0.  The length of \s-1ARRAY\s0 increases by the length of
+\&\s-1LIST\s0.  Has the same effect as
+.Sp
+.Vb 3
+\&    for $value (LIST) {
+\&        $ARRAY[++$#ARRAY] = $value;
+\&    }
+.Ve
+.Sp
+but is more efficient.  Returns the new number of elements in the array.
+.IP "q/STRING/" 8
+.IX Item "q/STRING/"
+.PD 0
+.IP "qq/STRING/" 8
+.IX Item "qq/STRING/"
+.IP "qr/STRING/" 8
+.IX Item "qr/STRING/"
+.IP "qx/STRING/" 8
+.IX Item "qx/STRING/"
+.IP "qw/STRING/" 8
+.IX Item "qw/STRING/"
+.PD
+Generalized quotes.  See \*(L"Regexp Quote-Like Operators\*(R" in perlop.
+.IP "quotemeta \s-1EXPR\s0" 8
+.IX Item "quotemeta EXPR"
+.PD 0
+.IP "quotemeta" 8
+.IX Item "quotemeta"
+.PD
+Returns the value of \s-1EXPR\s0 with all non\-\*(L"word\*(R"
+characters backslashed.  (That is, all characters not matching
+\&\f(CW\*(C`/[A\-Za\-z_0\-9]/\*(C'\fR will be preceded by a backslash in the
+returned string, regardless of any locale settings.)
+This is the internal function implementing
+the \f(CW\*(C`\eQ\*(C'\fR escape in double-quoted strings.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "rand \s-1EXPR\s0" 8
+.IX Item "rand EXPR"
+.PD 0
+.IP "rand" 8
+.IX Item "rand"
+.PD
+Returns a random fractional number greater than or equal to \f(CW0\fR and less
+than the value of \s-1EXPR\s0.  (\s-1EXPR\s0 should be positive.)  If \s-1EXPR\s0 is
+omitted, the value \f(CW1\fR is used.  Currently \s-1EXPR\s0 with the value \f(CW0\fR is
+also special-cased as \f(CW1\fR \- this has not been documented before perl 5.8.0
+and is subject to change in future versions of perl.  Automatically calls
+\&\f(CW\*(C`srand\*(C'\fR unless \f(CW\*(C`srand\*(C'\fR has already been called.  See also \f(CW\*(C`srand\*(C'\fR.
+.Sp
+Apply \f(CW\*(C`int()\*(C'\fR to the value returned by \f(CW\*(C`rand()\*(C'\fR if you want random
+integers instead of random fractional numbers.  For example,
+.Sp
+.Vb 1
+\&    int(rand(10))
+.Ve
+.Sp
+returns a random integer between \f(CW0\fR and \f(CW9\fR, inclusive.
+.Sp
+(Note: If your rand function consistently returns numbers that are too
+large or too small, then your version of Perl was probably compiled
+with the wrong number of \s-1RANDBITS\s0.)
+.IP "read \s-1FILEHANDLE\s0,SCALAR,LENGTH,OFFSET" 8
+.IX Item "read FILEHANDLE,SCALAR,LENGTH,OFFSET"
+.PD 0
+.IP "read \s-1FILEHANDLE\s0,SCALAR,LENGTH" 8
+.IX Item "read FILEHANDLE,SCALAR,LENGTH"
+.PD
+Attempts to read \s-1LENGTH\s0 \fIcharacters\fR of data into variable \s-1SCALAR\s0
+from the specified \s-1FILEHANDLE\s0.  Returns the number of characters
+actually read, \f(CW0\fR at end of file, or undef if there was an error (in
+the latter case \f(CW$!\fR is also set).  \s-1SCALAR\s0 will be grown or shrunk 
+so that the last character actually read is the last character of the
+scalar after the read.
+.Sp
+An \s-1OFFSET\s0 may be specified to place the read data at some place in the
+string other than the beginning.  A negative \s-1OFFSET\s0 specifies
+placement at that many characters counting backwards from the end of
+the string.  A positive \s-1OFFSET\s0 greater than the length of \s-1SCALAR\s0
+results in the string being padded to the required size with \f(CW"\e0"\fR
+bytes before the result of the read is appended.
+.Sp
+The call is actually implemented in terms of either Perl's or system's
+\&\fIfread()\fR call.  To get a true \fIread\fR\|(2) system call, see \f(CW\*(C`sysread\*(C'\fR.
+.Sp
+Note the \fIcharacters\fR: depending on the status of the filehandle,
+either (8\-bit) bytes or characters are read.  By default all
+filehandles operate on bytes, but for example if the filehandle has
+been opened with the \f(CW\*(C`:utf8\*(C'\fR I/O layer (see \*(L"open\*(R", and the \f(CW\*(C`open\*(C'\fR
+pragma, open), the I/O will operate on \s-1UTF\-8\s0 encoded Unicode
+characters, not bytes.  Similarly for the \f(CW\*(C`:encoding\*(C'\fR pragma:
+in that case pretty much any characters can be read.
+.IP "readdir \s-1DIRHANDLE\s0" 8
+.IX Item "readdir DIRHANDLE"
+Returns the next directory entry for a directory opened by \f(CW\*(C`opendir\*(C'\fR.
+If used in list context, returns all the rest of the entries in the
+directory.  If there are no more entries, returns an undefined value in
+scalar context or a null list in list context.
+.Sp
+If you're planning to filetest the return values out of a \f(CW\*(C`readdir\*(C'\fR, you'd
+better prepend the directory in question.  Otherwise, because we didn't
+\&\f(CW\*(C`chdir\*(C'\fR there, it would have been testing the wrong file.
+.Sp
+.Vb 3
+\&    opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
+\&    @dots = grep { /^\e./ && -f "$some_dir/$_" } readdir(DIR);
+\&    closedir DIR;
+.Ve
+.IP "readline \s-1EXPR\s0" 8
+.IX Item "readline EXPR"
+Reads from the filehandle whose typeglob is contained in \s-1EXPR\s0.  In scalar
+context, each call reads and returns the next line, until end-of-file is
+reached, whereupon the subsequent call returns undef.  In list context,
+reads until end-of-file is reached and returns a list of lines.  Note that
+the notion of \*(L"line\*(R" used here is however you may have defined it
+with \f(CW$/\fR or \f(CW$INPUT_RECORD_SEPARATOR\fR).  See \*(L"$/\*(R" in perlvar.
+.Sp
+When \f(CW$/\fR is set to \f(CW\*(C`undef\*(C'\fR, when \fIreadline()\fR is in scalar
+context (i.e. file slurp mode), and when an empty file is read, it
+returns \f(CW''\fR the first time, followed by \f(CW\*(C`undef\*(C'\fR subsequently.
+.Sp
+This is the internal function implementing the \f(CW\*(C`<EXPR>\*(C'\fR
+operator, but you can use it directly.  The \f(CW\*(C`<EXPR>\*(C'\fR
+operator is discussed in more detail in \*(L"I/O Operators\*(R" in perlop.
+.Sp
+.Vb 2
+\&    $line = <STDIN>;
+\&    $line = readline(*STDIN);           # same thing
+.Ve
+.Sp
+If readline encounters an operating system error, \f(CW$!\fR will be set with the
+corresponding error message.  It can be helpful to check \f(CW$!\fR when you are
+reading from filehandles you don't trust, such as a tty or a socket.  The
+following example uses the operator form of \f(CW\*(C`readline\*(C'\fR, and takes the necessary
+steps to ensure that \f(CW\*(C`readline\*(C'\fR was successful.
+.Sp
+.Vb 8
+\&    for (;;) {
+\&        undef $!;
+\&        unless (defined( $line = <> )) {
+\&            die $! if $!;
+\&            last; # reached EOF
+\&        }
+\&        # ...
+\&    }
+.Ve
+.IP "readlink \s-1EXPR\s0" 8
+.IX Item "readlink EXPR"
+.PD 0
+.IP "readlink" 8
+.IX Item "readlink"
+.PD
+Returns the value of a symbolic link, if symbolic links are
+implemented.  If not, gives a fatal error.  If there is some system
+error, returns the undefined value and sets \f(CW$!\fR (errno).  If \s-1EXPR\s0 is
+omitted, uses \f(CW$_\fR.
+.IP "readpipe \s-1EXPR\s0" 8
+.IX Item "readpipe EXPR"
+\&\s-1EXPR\s0 is executed as a system command.
+The collected standard output of the command is returned.
+In scalar context, it comes back as a single (potentially
+multi\-line) string.  In list context, returns a list of lines
+(however you've defined lines with \f(CW$/\fR or \f(CW$INPUT_RECORD_SEPARATOR\fR).
+This is the internal function implementing the \f(CW\*(C`qx/EXPR/\*(C'\fR
+operator, but you can use it directly.  The \f(CW\*(C`qx/EXPR/\*(C'\fR
+operator is discussed in more detail in \*(L"I/O Operators\*(R" in perlop.
+.IP "recv \s-1SOCKET\s0,SCALAR,LENGTH,FLAGS" 8
+.IX Item "recv SOCKET,SCALAR,LENGTH,FLAGS"
+Receives a message on a socket.  Attempts to receive \s-1LENGTH\s0 characters
+of data into variable \s-1SCALAR\s0 from the specified \s-1SOCKET\s0 filehandle.
+\&\s-1SCALAR\s0 will be grown or shrunk to the length actually read.  Takes the
+same flags as the system call of the same name.  Returns the address
+of the sender if \s-1SOCKET\s0's protocol supports this; returns an empty
+string otherwise.  If there's an error, returns the undefined value.
+This call is actually implemented in terms of \fIrecvfrom\fR\|(2) system call.
+See \*(L"\s-1UDP:\s0 Message Passing\*(R" in perlipc for examples.
+.Sp
+Note the \fIcharacters\fR: depending on the status of the socket, either
+(8\-bit) bytes or characters are received.  By default all sockets
+operate on bytes, but for example if the socket has been changed using
+\&\fIbinmode()\fR to operate with the \f(CW\*(C`:utf8\*(C'\fR I/O layer (see the \f(CW\*(C`open\*(C'\fR
+pragma, open), the I/O will operate on \s-1UTF\-8\s0 encoded Unicode
+characters, not bytes.  Similarly for the \f(CW\*(C`:encoding\*(C'\fR pragma:
+in that case pretty much any characters can be read.
+.IP "redo \s-1LABEL\s0" 8
+.IX Item "redo LABEL"
+.PD 0
+.IP "redo" 8
+.IX Item "redo"
+.PD
+The \f(CW\*(C`redo\*(C'\fR command restarts the loop block without evaluating the
+conditional again.  The \f(CW\*(C`continue\*(C'\fR block, if any, is not executed.  If
+the \s-1LABEL\s0 is omitted, the command refers to the innermost enclosing
+loop.  This command is normally used by programs that want to lie to
+themselves about what was just input:
+.Sp
+.Vb 16
+\&    # a simpleminded Pascal comment stripper
+\&    # (warning: assumes no { or } in strings)
+\&    LINE: while (<STDIN>) {
+\&        while (s|({.*}.*){.*}|$1 |) {}
+\&        s|{.*}| |;
+\&        if (s|{.*| |) {
+\&            $front = $_;
+\&            while (<STDIN>) {
+\&                if (/}/) {      # end of comment?
+\&                    s|^|$front\e{|;
+\&                    redo LINE;
+\&                }
+\&            }
+\&        }
+\&        print;
+\&    }
+.Ve
+.Sp
+\&\f(CW\*(C`redo\*(C'\fR cannot be used to retry a block which returns a value such as
+\&\f(CW\*(C`eval {}\*(C'\fR, \f(CW\*(C`sub {}\*(C'\fR or \f(CW\*(C`do {}\*(C'\fR, and should not be used to exit
+a \fIgrep()\fR or \fImap()\fR operation.
+.Sp
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus \f(CW\*(C`redo\*(C'\fR inside such a block will effectively
+turn it into a looping construct.
+.Sp
+See also \*(L"continue\*(R" for an illustration of how \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, and
+\&\f(CW\*(C`redo\*(C'\fR work.
+.IP "ref \s-1EXPR\s0" 8
+.IX Item "ref EXPR"
+.PD 0
+.IP "ref" 8
+.IX Item "ref"
+.PD
+Returns a true value if \s-1EXPR\s0 is a reference, false otherwise.  If \s-1EXPR\s0
+is not specified, \f(CW$_\fR will be used.  The value returned depends on the
+type of thing the reference is a reference to.
+Builtin types include:
+.Sp
+.Vb 7
+\&    SCALAR
+\&    ARRAY
+\&    HASH
+\&    CODE
+\&    REF
+\&    GLOB
+\&    LVALUE
+.Ve
+.Sp
+If the referenced object has been blessed into a package, then that package
+name is returned instead.  You can think of \f(CW\*(C`ref\*(C'\fR as a \f(CW\*(C`typeof\*(C'\fR operator.
+.Sp
+.Vb 9
+\&    if (ref($r) eq "HASH") {
+\&        print "r is a reference to a hash.\en";
+\&    }
+\&    unless (ref($r)) {
+\&        print "r is not a reference at all.\en";
+\&    }
+\&    if (UNIVERSAL::isa($r, "HASH")) {  # for subclassing
+\&        print "r is a reference to something that isa hash.\en";
+\&    }
+.Ve
+.Sp
+See also perlref.
+.IP "rename \s-1OLDNAME\s0,NEWNAME" 8
+.IX Item "rename OLDNAME,NEWNAME"
+Changes the name of a file; an existing file \s-1NEWNAME\s0 will be
+clobbered.  Returns true for success, false otherwise.
+.Sp
+Behavior of this function varies wildly depending on your system
+implementation.  For example, it will usually not work across file system
+boundaries, even though the system \fImv\fR command sometimes compensates
+for this.  Other restrictions include whether it works on directories,
+open files, or pre-existing files.  Check perlport and either the
+\&\fIrename\fR\|(2) manpage or equivalent system documentation for details.
+.IP "require \s-1VERSION\s0" 8
+.IX Item "require VERSION"
+.PD 0
+.IP "require \s-1EXPR\s0" 8
+.IX Item "require EXPR"
+.IP "require" 8
+.IX Item "require"
+.PD
+Demands a version of Perl specified by \s-1VERSION\s0, or demands some semantics
+specified by \s-1EXPR\s0 or by \f(CW$_\fR if \s-1EXPR\s0 is not supplied.
+.Sp
+\&\s-1VERSION\s0 may be either a numeric argument such as 5.006, which will be
+compared to \f(CW$]\fR, or a literal of the form v5.6.1, which will be compared
+to \f(CW$^V\fR (aka \f(CW$PERL_VERSION\fR).  A fatal error is produced at run time if
+\&\s-1VERSION\s0 is greater than the version of the current Perl interpreter.
+Compare with \*(L"use\*(R", which can do a similar check at compile time.
+.Sp
+Specifying \s-1VERSION\s0 as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl which do not support this syntax.  The equivalent numeric
+version should be used instead.
+.Sp
+.Vb 3
+\&    require v5.6.1;     # run time version check
+\&    require 5.6.1;      # ditto
+\&    require 5.006_001;  # ditto; preferred for backwards compatibility
+.Ve
+.Sp
+Otherwise, demands that a library file be included if it hasn't already
+been included.  The file is included via the do-FILE mechanism, which is
+essentially just a variety of \f(CW\*(C`eval\*(C'\fR.  Has semantics similar to the following
+subroutine:
+.Sp
+.Vb 20
+\&    sub require {
+\&        my($filename) = @_;
+\&        return 1 if $INC{$filename};
+\&        my($realfilename,$result);
+\&        ITER: {
+\&            foreach $prefix (@INC) {
+\&                $realfilename = "$prefix/$filename";
+\&                if (-f $realfilename) {
+\&                    $INC{$filename} = $realfilename;
+\&                    $result = do $realfilename;
+\&                    last ITER;
+\&                }
+\&            }
+\&            die "Can't find $filename in \e at INC";
+\&        }
+\&        delete $INC{$filename} if $@ || !$result;
+\&        die $@ if $@;
+\&        die "$filename did not return true value" unless $result;
+\&        return $result;
+\&    }
+.Ve
+.Sp
+Note that the file will not be included twice under the same specified
+name.  The file must return true as the last statement to indicate
+successful execution of any initialization code, so it's customary to
+end such a file with \f(CW\*(C`1;\*(C'\fR unless you're sure it'll return true
+otherwise.  But it's better just to put the \f(CW\*(C`1;\*(C'\fR, in case you add more
+statements.
+.Sp
+If \s-1EXPR\s0 is a bareword, the require assumes a "\fI.pm\fR\*(L" extension and
+replaces \*(R"\fI::\fR\*(L" with \*(R"\fI/\fR" in the filename for you,
+to make it easy to load standard modules.  This form of loading of
+modules does not risk altering your namespace.
+.Sp
+In other words, if you try this:
+.Sp
+.Vb 1
+\&        require Foo::Bar;    # a splendid bareword
+.Ve
+.Sp
+The require function will actually look for the "\fIFoo/Bar.pm\fR" file in the
+directories specified in the \f(CW at INC\fR array.
+.Sp
+But if you try this:
+.Sp
+.Vb 4
+\&        $class = 'Foo::Bar';
+\&        require $class;      # $class is not a bareword
+\&    #or
+\&        require "Foo::Bar";  # not a bareword because of the ""
+.Ve
+.Sp
+The require function will look for the "\fIFoo::Bar\fR\*(L" file in the \f(CW at INC\fR array and
+will complain about not finding \*(R"\fIFoo::Bar\fR" there.  In this case you can do:
+.Sp
+.Vb 1
+\&        eval "require $class";
+.Ve
+.Sp
+Now that you understand how \f(CW\*(C`require\*(C'\fR looks for files in the case of
+a bareword argument, there is a little extra functionality going on
+behind the scenes.  Before \f(CW\*(C`require\*(C'\fR looks for a "\fI.pm\fR\*(L" extension,
+it will first look for a filename with a \*(R"\fI.pmc\fR" extension.  A file
+with this extension is assumed to be Perl bytecode generated by
+B::Bytecode.  If this file is found, and it's modification
+time is newer than a coinciding "\fI.pm\fR\*(L" non-compiled file, it will be
+loaded in place of that non-compiled file ending in a \*(R"\fI.pm\fR" extension.
+.Sp
+You can also insert hooks into the import facility, by putting directly
+Perl code into the \f(CW at INC\fR array.  There are three forms of hooks: subroutine
+references, array references and blessed objects.
+.Sp
+Subroutine references are the simplest case.  When the inclusion system
+walks through \f(CW at INC\fR and encounters a subroutine, this subroutine gets
+called with two parameters, the first being a reference to itself, and the
+second the name of the file to be included (e.g. "\fIFoo/Bar.pm\fR").  The
+subroutine should return \f(CW\*(C`undef\*(C'\fR or a filehandle, from which the file to
+include will be read.  If \f(CW\*(C`undef\*(C'\fR is returned, \f(CW\*(C`require\*(C'\fR will look at
+the remaining elements of \f(CW at INC\fR.
+.Sp
+If the hook is an array reference, its first element must be a subroutine
+reference.  This subroutine is called as above, but the first parameter is
+the array reference.  This enables to pass indirectly some arguments to
+the subroutine.
+.Sp
+In other words, you can write:
+.Sp
+.Vb 5
+\&    push @INC, \e&my_sub;
+\&    sub my_sub {
+\&        my ($coderef, $filename) = @_;  # $coderef is \e&my_sub
+\&        ...
+\&    }
+.Ve
+.Sp
+or:
+.Sp
+.Vb 7
+\&    push @INC, [ \e&my_sub, $x, $y, ... ];
+\&    sub my_sub {
+\&        my ($arrayref, $filename) = @_;
+\&        # Retrieve $x, $y, ...
+\&        my @parameters = @$arrayref[1..$#$arrayref];
+\&        ...
+\&    }
+.Ve
+.Sp
+If the hook is an object, it must provide an \s-1INC\s0 method, that will be
+called as above, the first parameter being the object itself.  (Note that
+you must fully qualify the sub's name, as it is always forced into package
+\&\f(CW\*(C`main\*(C'\fR.)  Here is a typical code layout:
+.Sp
+.Vb 7
+\&    # In Foo.pm
+\&    package Foo;
+\&    sub new { ... }
+\&    sub Foo::INC {
+\&        my ($self, $filename) = @_;
+\&        ...
+\&    }
+.Ve
+.Sp
+.Vb 2
+\&    # In the main program
+\&    push @INC, new Foo(...);
+.Ve
+.Sp
+Note that these hooks are also permitted to set the \f(CW%INC\fR entry
+corresponding to the files they have loaded. See \*(L"%INC\*(R" in perlvar.
+.Sp
+For a yet-more-powerful import facility, see \*(L"use\*(R" and perlmod.
+.IP "reset \s-1EXPR\s0" 8
+.IX Item "reset EXPR"
+.PD 0
+.IP "reset" 8
+.IX Item "reset"
+.PD
+Generally used in a \f(CW\*(C`continue\*(C'\fR block at the end of a loop to clear
+variables and reset \f(CW\*(C`??\*(C'\fR searches so that they work again.  The
+expression is interpreted as a list of single characters (hyphens
+allowed for ranges).  All variables and arrays beginning with one of
+those letters are reset to their pristine state.  If the expression is
+omitted, one-match searches (\f(CW\*(C`?pattern?\*(C'\fR) are reset to match again.  Resets
+only variables or searches in the current package.  Always returns
+1.  Examples:
+.Sp
+.Vb 3
+\&    reset 'X';          # reset all X variables
+\&    reset 'a-z';        # reset lower case variables
+\&    reset;              # just reset ?one-time? searches
+.Ve
+.Sp
+Resetting \f(CW"A\-Z"\fR is not recommended because you'll wipe out your
+\&\f(CW at ARGV\fR and \f(CW at INC\fR arrays and your \f(CW%ENV\fR hash.  Resets only package
+variables\*(--lexical variables are unaffected, but they clean themselves
+up on scope exit anyway, so you'll probably want to use them instead.
+See \*(L"my\*(R".
+.IP "return \s-1EXPR\s0" 8
+.IX Item "return EXPR"
+.PD 0
+.IP "return" 8
+.IX Item "return"
+.PD
+Returns from a subroutine, \f(CW\*(C`eval\*(C'\fR, or \f(CW\*(C`do FILE\*(C'\fR with the value
+given in \s-1EXPR\s0.  Evaluation of \s-1EXPR\s0 may be in list, scalar, or void
+context, depending on how the return value will be used, and the context
+may vary from one execution to the next (see \f(CW\*(C`wantarray\*(C'\fR).  If no \s-1EXPR\s0
+is given, returns an empty list in list context, the undefined value in
+scalar context, and (of course) nothing at all in a void context.
+.Sp
+(Note that in the absence of an explicit \f(CW\*(C`return\*(C'\fR, a subroutine, eval,
+or do \s-1FILE\s0 will automatically return the value of the last expression
+evaluated.)
+.IP "reverse \s-1LIST\s0" 8
+.IX Item "reverse LIST"
+In list context, returns a list value consisting of the elements
+of \s-1LIST\s0 in the opposite order.  In scalar context, concatenates the
+elements of \s-1LIST\s0 and returns a string value with all characters
+in the opposite order.
+.Sp
+.Vb 1
+\&    print reverse <>;           # line tac, last line first
+.Ve
+.Sp
+.Vb 2
+\&    undef $/;                   # for efficiency of <>
+\&    print scalar reverse <>;    # character tac, last line tsrif
+.Ve
+.Sp
+This operator is also handy for inverting a hash, although there are some
+caveats.  If a value is duplicated in the original hash, only one of those
+can be represented as a key in the inverted hash.  Also, this has to
+unwind one hash and build a whole new one, which may take some time
+on a large hash, such as from a \s-1DBM\s0 file.
+.Sp
+.Vb 1
+\&    %by_name = reverse %by_address;     # Invert the hash
+.Ve
+.IP "rewinddir \s-1DIRHANDLE\s0" 8
+.IX Item "rewinddir DIRHANDLE"
+Sets the current position to the beginning of the directory for the
+\&\f(CW\*(C`readdir\*(C'\fR routine on \s-1DIRHANDLE\s0.
+.IP "rindex \s-1STR\s0,SUBSTR,POSITION" 8
+.IX Item "rindex STR,SUBSTR,POSITION"
+.PD 0
+.IP "rindex \s-1STR\s0,SUBSTR" 8
+.IX Item "rindex STR,SUBSTR"
+.PD
+Works just like \fIindex()\fR except that it returns the position of the \s-1LAST\s0
+occurrence of \s-1SUBSTR\s0 in \s-1STR\s0.  If \s-1POSITION\s0 is specified, returns the
+last occurrence at or before that position.
+.IP "rmdir \s-1FILENAME\s0" 8
+.IX Item "rmdir FILENAME"
+.PD 0
+.IP "rmdir" 8
+.IX Item "rmdir"
+.PD
+Deletes the directory specified by \s-1FILENAME\s0 if that directory is
+empty.  If it succeeds it returns true, otherwise it returns false and
+sets \f(CW$!\fR (errno).  If \s-1FILENAME\s0 is omitted, uses \f(CW$_\fR.
+.IP "s///" 8
+.IX Item "s///"
+The substitution operator.  See perlop.
+.IP "scalar \s-1EXPR\s0" 8
+.IX Item "scalar EXPR"
+Forces \s-1EXPR\s0 to be interpreted in scalar context and returns the value
+of \s-1EXPR\s0.
+.Sp
+.Vb 1
+\&    @counts = ( scalar @a, scalar @b, scalar @c );
+.Ve
+.Sp
+There is no equivalent operator to force an expression to
+be interpolated in list context because in practice, this is never
+needed.  If you really wanted to do so, however, you could use
+the construction \f(CW\*(C`@{[ (some expression) ]}\*(C'\fR, but usually a simple
+\&\f(CW\*(C`(some expression)\*(C'\fR suffices.
+.Sp
+Because \f(CW\*(C`scalar\*(C'\fR is unary operator, if you accidentally use for \s-1EXPR\s0 a
+parenthesized list, this behaves as a scalar comma expression, evaluating
+all but the last element in void context and returning the final element
+evaluated in scalar context.  This is seldom what you want.
+.Sp
+The following single statement:
+.Sp
+.Vb 1
+\&        print uc(scalar(&foo,$bar)),$baz;
+.Ve
+.Sp
+is the moral equivalent of these two:
+.Sp
+.Vb 2
+\&        &foo;
+\&        print(uc($bar),$baz);
+.Ve
+.Sp
+See perlop for more details on unary operators and the comma operator.
+.IP "seek \s-1FILEHANDLE\s0,POSITION,WHENCE" 8
+.IX Item "seek FILEHANDLE,POSITION,WHENCE"
+Sets \s-1FILEHANDLE\s0's position, just like the \f(CW\*(C`fseek\*(C'\fR call of \f(CW\*(C`stdio\*(C'\fR.
+\&\s-1FILEHANDLE\s0 may be an expression whose value gives the name of the
+filehandle.  The values for \s-1WHENCE\s0 are \f(CW0\fR to set the new position
+\&\fIin bytes\fR to \s-1POSITION\s0, \f(CW1\fR to set it to the current position plus
+\&\s-1POSITION\s0, and \f(CW2\fR to set it to \s-1EOF\s0 plus \s-1POSITION\s0 (typically
+negative).  For \s-1WHENCE\s0 you may use the constants \f(CW\*(C`SEEK_SET\*(C'\fR,
+\&\f(CW\*(C`SEEK_CUR\*(C'\fR, and \f(CW\*(C`SEEK_END\*(C'\fR (start of the file, current position, end
+of the file) from the Fcntl module.  Returns \f(CW1\fR upon success, \f(CW0\fR
+otherwise.
+.Sp
+Note the \fIin bytes\fR: even if the filehandle has been set to
+operate on characters (for example by using the \f(CW\*(C`:utf8\*(C'\fR open
+layer), \fItell()\fR will return byte offsets, not character offsets
+(because implementing that would render \fIseek()\fR and \fItell()\fR rather slow).
+.Sp
+If you want to position file for \f(CW\*(C`sysread\*(C'\fR or \f(CW\*(C`syswrite\*(C'\fR, don't use
+\&\f(CW\*(C`seek\*(C'\fR\-\-buffering makes its effect on the file's system position
+unpredictable and non\-portable.  Use \f(CW\*(C`sysseek\*(C'\fR instead.
+.Sp
+Due to the rules and rigors of \s-1ANSI\s0 C, on some systems you have to do a
+seek whenever you switch between reading and writing.  Amongst other
+things, this may have the effect of calling stdio's \fIclearerr\fR\|(3).
+A \s-1WHENCE\s0 of \f(CW1\fR (\f(CW\*(C`SEEK_CUR\*(C'\fR) is useful for not moving the file position:
+.Sp
+.Vb 1
+\&    seek(TEST,0,1);
+.Ve
+.Sp
+This is also useful for applications emulating \f(CW\*(C`tail \-f\*(C'\fR.  Once you hit
+\&\s-1EOF\s0 on your read, and then sleep for a while, you might have to stick in a
+\&\fIseek()\fR to reset things.  The \f(CW\*(C`seek\*(C'\fR doesn't change the current position,
+but it \fIdoes\fR clear the end-of-file condition on the handle, so that the
+next \f(CW\*(C`<FILE>\*(C'\fR makes Perl try again to read something.  We hope.
+.Sp
+If that doesn't work (some \s-1IO\s0 implementations are particularly
+cantankerous), then you may need something more like this:
+.Sp
+.Vb 8
+\&    for (;;) {
+\&        for ($curpos = tell(FILE); $_ = <FILE>;
+\&             $curpos = tell(FILE)) {
+\&            # search for some stuff and put it into files
+\&        }
+\&        sleep($for_a_while);
+\&        seek(FILE, $curpos, 0);
+\&    }
+.Ve
+.IP "seekdir \s-1DIRHANDLE\s0,POS" 8
+.IX Item "seekdir DIRHANDLE,POS"
+Sets the current position for the \f(CW\*(C`readdir\*(C'\fR routine on \s-1DIRHANDLE\s0.  \s-1POS\s0
+must be a value returned by \f(CW\*(C`telldir\*(C'\fR.  Has the same caveats about
+possible directory compaction as the corresponding system library
+routine.
+.IP "select \s-1FILEHANDLE\s0" 8
+.IX Item "select FILEHANDLE"
+.PD 0
+.IP "select" 8
+.IX Item "select"
+.PD
+Returns the currently selected filehandle.  Sets the current default
+filehandle for output, if \s-1FILEHANDLE\s0 is supplied.  This has two
+effects: first, a \f(CW\*(C`write\*(C'\fR or a \f(CW\*(C`print\*(C'\fR without a filehandle will
+default to this \s-1FILEHANDLE\s0.  Second, references to variables related to
+output will refer to this output channel.  For example, if you have to
+set the top of form format for more than one output channel, you might
+do the following:
+.Sp
+.Vb 4
+\&    select(REPORT1);
+\&    $^ = 'report1_top';
+\&    select(REPORT2);
+\&    $^ = 'report2_top';
+.Ve
+.Sp
+\&\s-1FILEHANDLE\s0 may be an expression whose value gives the name of the
+actual filehandle.  Thus:
+.Sp
+.Vb 1
+\&    $oldfh = select(STDERR); $| = 1; select($oldfh);
+.Ve
+.Sp
+Some programmers may prefer to think of filehandles as objects with
+methods, preferring to write the last example as:
+.Sp
+.Vb 2
+\&    use IO::Handle;
+\&    STDERR->autoflush(1);
+.Ve
+.IP "select \s-1RBITS\s0,WBITS,EBITS,TIMEOUT" 8
+.IX Item "select RBITS,WBITS,EBITS,TIMEOUT"
+This calls the \fIselect\fR\|(2) system call with the bit masks specified, which
+can be constructed using \f(CW\*(C`fileno\*(C'\fR and \f(CW\*(C`vec\*(C'\fR, along these lines:
+.Sp
+.Vb 4
+\&    $rin = $win = $ein = '';
+\&    vec($rin,fileno(STDIN),1) = 1;
+\&    vec($win,fileno(STDOUT),1) = 1;
+\&    $ein = $rin | $win;
+.Ve
+.Sp
+If you want to select on many filehandles you might wish to write a
+subroutine:
+.Sp
+.Vb 9
+\&    sub fhbits {
+\&        my(@fhlist) = split(' ',$_[0]);
+\&        my($bits);
+\&        for (@fhlist) {
+\&            vec($bits,fileno($_),1) = 1;
+\&        }
+\&        $bits;
+\&    }
+\&    $rin = fhbits('STDIN TTY SOCK');
+.Ve
+.Sp
+The usual idiom is:
+.Sp
+.Vb 2
+\&    ($nfound,$timeleft) =
+\&      select($rout=$rin, $wout=$win, $eout=$ein, $timeout);
+.Ve
+.Sp
+or to block until something becomes ready just do this
+.Sp
+.Vb 1
+\&    $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
+.Ve
+.Sp
+Most systems do not bother to return anything useful in \f(CW$timeleft\fR, so
+calling \fIselect()\fR in scalar context just returns \f(CW$nfound\fR.
+.Sp
+Any of the bit masks can also be undef.  The timeout, if specified, is
+in seconds, which may be fractional.  Note: not all implementations are
+capable of returning the \f(CW$timeleft\fR.  If not, they always return
+\&\f(CW$timeleft\fR equal to the supplied \f(CW$timeout\fR.
+.Sp
+You can effect a sleep of 250 milliseconds this way:
+.Sp
+.Vb 1
+\&    select(undef, undef, undef, 0.25);
+.Ve
+.Sp
+Note that whether \f(CW\*(C`select\*(C'\fR gets restarted after signals (say, \s-1SIGALRM\s0)
+is implementation\-dependent.
+.Sp
+\&\fB\s-1WARNING\s0\fR: One should not attempt to mix buffered I/O (like \f(CW\*(C`read\*(C'\fR
+or <\s-1FH\s0>) with \f(CW\*(C`select\*(C'\fR, except as permitted by \s-1POSIX\s0, and even
+then only on \s-1POSIX\s0 systems.  You have to use \f(CW\*(C`sysread\*(C'\fR instead.
+.IP "semctl \s-1ID\s0,SEMNUM,CMD,ARG" 8
+.IX Item "semctl ID,SEMNUM,CMD,ARG"
+Calls the System V \s-1IPC\s0 function \f(CW\*(C`semctl\*(C'\fR.  You'll probably have to say
+.Sp
+.Vb 1
+\&    use IPC::SysV;
+.Ve
+.Sp
+first to get the correct constant definitions.  If \s-1CMD\s0 is \s-1IPC_STAT\s0 or
+\&\s-1GETALL\s0, then \s-1ARG\s0 must be a variable which will hold the returned
+semid_ds structure or semaphore value array.  Returns like \f(CW\*(C`ioctl\*(C'\fR:
+the undefined value for error, "\f(CW\*(C`0 but true\*(C'\fR" for zero, or the actual
+return value otherwise.  The \s-1ARG\s0 must consist of a vector of native
+short integers, which may be created with \f(CW\*(C`pack("s!",(0)x$nsem)\*(C'\fR.
+See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, \f(CW\*(C`IPC::Semaphore\*(C'\fR
+documentation.
+.IP "semget \s-1KEY\s0,NSEMS,FLAGS" 8
+.IX Item "semget KEY,NSEMS,FLAGS"
+Calls the System V \s-1IPC\s0 function semget.  Returns the semaphore id, or
+the undefined value if there is an error.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, \f(CW\*(C`IPC::SysV::Semaphore\*(C'\fR
+documentation.
+.IP "semop \s-1KEY\s0,OPSTRING" 8
+.IX Item "semop KEY,OPSTRING"
+Calls the System V \s-1IPC\s0 function semop to perform semaphore operations
+such as signalling and waiting.  \s-1OPSTRING\s0 must be a packed array of
+semop structures.  Each semop structure can be generated with
+\&\f(CW\*(C`pack("s!3", $semnum, $semop, $semflag)\*(C'\fR.  The number of semaphore
+operations is implied by the length of \s-1OPSTRING\s0.  Returns true if
+successful, or false if there is an error.  As an example, the
+following code waits on semaphore \f(CW$semnum\fR of semaphore id \f(CW$semid:\fR
+.Sp
+.Vb 2
+\&    $semop = pack("s!3", $semnum, -1, 0);
+\&    die "Semaphore trouble: $!\en" unless semop($semid, $semop);
+.Ve
+.Sp
+To signal the semaphore, replace \f(CW\*(C`\-1\*(C'\fR with \f(CW1\fR.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, and \f(CW\*(C`IPC::SysV::Semaphore\*(C'\fR
+documentation.
+.IP "send \s-1SOCKET\s0,MSG,FLAGS,TO" 8
+.IX Item "send SOCKET,MSG,FLAGS,TO"
+.PD 0
+.IP "send \s-1SOCKET\s0,MSG,FLAGS" 8
+.IX Item "send SOCKET,MSG,FLAGS"
+.PD
+Sends a message on a socket.  Attempts to send the scalar \s-1MSG\s0 to the
+\&\s-1SOCKET\s0 filehandle.  Takes the same flags as the system call of the
+same name.  On unconnected sockets you must specify a destination to
+send \s-1TO\s0, in which case it does a C \f(CW\*(C`sendto\*(C'\fR.  Returns the number of
+characters sent, or the undefined value if there is an error.  The C
+system call \fIsendmsg\fR\|(2) is currently unimplemented.  See
+\&\*(L"\s-1UDP:\s0 Message Passing\*(R" in perlipc for examples.
+.Sp
+Note the \fIcharacters\fR: depending on the status of the socket, either
+(8\-bit) bytes or characters are sent.  By default all sockets operate
+on bytes, but for example if the socket has been changed using
+\&\fIbinmode()\fR to operate with the \f(CW\*(C`:utf8\*(C'\fR I/O layer (see \*(L"open\*(R", or the
+\&\f(CW\*(C`open\*(C'\fR pragma, open), the I/O will operate on \s-1UTF\-8\s0 encoded
+Unicode characters, not bytes.  Similarly for the \f(CW\*(C`:encoding\*(C'\fR pragma:
+in that case pretty much any characters can be sent.
+.IP "setpgrp \s-1PID\s0,PGRP" 8
+.IX Item "setpgrp PID,PGRP"
+Sets the current process group for the specified \s-1PID\s0, \f(CW0\fR for the current
+process.  Will produce a fatal error if used on a machine that doesn't
+implement \s-1POSIX\s0 \fIsetpgid\fR\|(2) or \s-1BSD\s0 \fIsetpgrp\fR\|(2).  If the arguments are omitted,
+it defaults to \f(CW\*(C`0,0\*(C'\fR.  Note that the \s-1BSD\s0 4.2 version of \f(CW\*(C`setpgrp\*(C'\fR does not
+accept any arguments, so only \f(CW\*(C`setpgrp(0,0)\*(C'\fR is portable.  See also
+\&\f(CW\*(C`POSIX::setsid()\*(C'\fR.
+.IP "setpriority \s-1WHICH\s0,WHO,PRIORITY" 8
+.IX Item "setpriority WHICH,WHO,PRIORITY"
+Sets the current priority for a process, a process group, or a user.
+(See \fIsetpriority\fR\|(2).)  Will produce a fatal error if used on a machine
+that doesn't implement \fIsetpriority\fR\|(2).
+.IP "setsockopt \s-1SOCKET\s0,LEVEL,OPTNAME,OPTVAL" 8
+.IX Item "setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL"
+Sets the socket option requested.  Returns undefined if there is an
+error.  \s-1OPTVAL\s0 may be specified as \f(CW\*(C`undef\*(C'\fR if you don't want to pass an
+argument.
+.IP "shift \s-1ARRAY\s0" 8
+.IX Item "shift ARRAY"
+.PD 0
+.IP "shift" 8
+.IX Item "shift"
+.PD
+Shifts the first value of the array off and returns it, shortening the
+array by 1 and moving everything down.  If there are no elements in the
+array, returns the undefined value.  If \s-1ARRAY\s0 is omitted, shifts the
+\&\f(CW at _\fR array within the lexical scope of subroutines and formats, and the
+\&\f(CW at ARGV\fR array at file scopes or within the lexical scopes established by
+the \f(CW\*(C`eval ''\*(C'\fR, \f(CW\*(C`BEGIN {}\*(C'\fR, \f(CW\*(C`INIT {}\*(C'\fR, \f(CW\*(C`CHECK {}\*(C'\fR, and \f(CW\*(C`END {}\*(C'\fR
+constructs.
+.Sp
+See also \f(CW\*(C`unshift\*(C'\fR, \f(CW\*(C`push\*(C'\fR, and \f(CW\*(C`pop\*(C'\fR.  \f(CW\*(C`shift\*(C'\fR and \f(CW\*(C`unshift\*(C'\fR do the
+same thing to the left end of an array that \f(CW\*(C`pop\*(C'\fR and \f(CW\*(C`push\*(C'\fR do to the
+right end.
+.IP "shmctl \s-1ID\s0,CMD,ARG" 8
+.IX Item "shmctl ID,CMD,ARG"
+Calls the System V \s-1IPC\s0 function shmctl.  You'll probably have to say
+.Sp
+.Vb 1
+\&    use IPC::SysV;
+.Ve
+.Sp
+first to get the correct constant definitions.  If \s-1CMD\s0 is \f(CW\*(C`IPC_STAT\*(C'\fR,
+then \s-1ARG\s0 must be a variable which will hold the returned \f(CW\*(C`shmid_ds\*(C'\fR
+structure.  Returns like ioctl: the undefined value for error, "\f(CW0\fR but
+true" for zero, or the actual return value otherwise.
+See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc and \f(CW\*(C`IPC::SysV\*(C'\fR documentation.
+.IP "shmget \s-1KEY\s0,SIZE,FLAGS" 8
+.IX Item "shmget KEY,SIZE,FLAGS"
+Calls the System V \s-1IPC\s0 function shmget.  Returns the shared memory
+segment id, or the undefined value if there is an error.
+See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc and \f(CW\*(C`IPC::SysV\*(C'\fR documentation.
+.IP "shmread \s-1ID\s0,VAR,POS,SIZE" 8
+.IX Item "shmread ID,VAR,POS,SIZE"
+.PD 0
+.IP "shmwrite \s-1ID\s0,STRING,POS,SIZE" 8
+.IX Item "shmwrite ID,STRING,POS,SIZE"
+.PD
+Reads or writes the System V shared memory segment \s-1ID\s0 starting at
+position \s-1POS\s0 for size \s-1SIZE\s0 by attaching to it, copying in/out, and
+detaching from it.  When reading, \s-1VAR\s0 must be a variable that will
+hold the data read.  When writing, if \s-1STRING\s0 is too long, only \s-1SIZE\s0
+bytes are used; if \s-1STRING\s0 is too short, nulls are written to fill out
+\&\s-1SIZE\s0 bytes.  Return true if successful, or false if there is an error.
+\&\fIshmread()\fR taints the variable. See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc,
+\&\f(CW\*(C`IPC::SysV\*(C'\fR documentation, and the \f(CW\*(C`IPC::Shareable\*(C'\fR module from \s-1CPAN\s0.
+.IP "shutdown \s-1SOCKET\s0,HOW" 8
+.IX Item "shutdown SOCKET,HOW"
+Shuts down a socket connection in the manner indicated by \s-1HOW\s0, which
+has the same interpretation as in the system call of the same name.
+.Sp
+.Vb 3
+\&    shutdown(SOCKET, 0);    # I/we have stopped reading data
+\&    shutdown(SOCKET, 1);    # I/we have stopped writing data
+\&    shutdown(SOCKET, 2);    # I/we have stopped using this socket
+.Ve
+.Sp
+This is useful with sockets when you want to tell the other
+side you're done writing but not done reading, or vice versa.
+It's also a more insistent form of close because it also
+disables the file descriptor in any forked copies in other
+processes.
+.IP "sin \s-1EXPR\s0" 8
+.IX Item "sin EXPR"
+.PD 0
+.IP "sin" 8
+.IX Item "sin"
+.PD
+Returns the sine of \s-1EXPR\s0 (expressed in radians).  If \s-1EXPR\s0 is omitted,
+returns sine of \f(CW$_\fR.
+.Sp
+For the inverse sine operation, you may use the \f(CW\*(C`Math::Trig::asin\*(C'\fR
+function, or use this relation:
+.Sp
+.Vb 1
+\&    sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
+.Ve
+.IP "sleep \s-1EXPR\s0" 8
+.IX Item "sleep EXPR"
+.PD 0
+.IP "sleep" 8
+.IX Item "sleep"
+.PD
+Causes the script to sleep for \s-1EXPR\s0 seconds, or forever if no \s-1EXPR\s0.
+May be interrupted if the process receives a signal such as \f(CW\*(C`SIGALRM\*(C'\fR.
+Returns the number of seconds actually slept.  You probably cannot
+mix \f(CW\*(C`alarm\*(C'\fR and \f(CW\*(C`sleep\*(C'\fR calls, because \f(CW\*(C`sleep\*(C'\fR is often implemented
+using \f(CW\*(C`alarm\*(C'\fR.
+.Sp
+On some older systems, it may sleep up to a full second less than what
+you requested, depending on how it counts seconds.  Most modern systems
+always sleep the full amount.  They may appear to sleep longer than that,
+however, because your process might not be scheduled right away in a
+busy multitasking system.
+.Sp
+For delays of finer granularity than one second, you may use Perl's
+\&\f(CW\*(C`syscall\*(C'\fR interface to access \fIsetitimer\fR\|(2) if your system supports
+it, or else see \*(L"select\*(R" above.  The Time::HiRes module (from \s-1CPAN\s0,
+and starting from Perl 5.8 part of the standard distribution) may also
+help.
+.Sp
+See also the \s-1POSIX\s0 module's \f(CW\*(C`pause\*(C'\fR function.
+.IP "socket \s-1SOCKET\s0,DOMAIN,TYPE,PROTOCOL" 8
+.IX Item "socket SOCKET,DOMAIN,TYPE,PROTOCOL"
+Opens a socket of the specified kind and attaches it to filehandle
+\&\s-1SOCKET\s0.  \s-1DOMAIN\s0, \s-1TYPE\s0, and \s-1PROTOCOL\s0 are specified the same as for
+the system call of the same name.  You should \f(CW\*(C`use Socket\*(C'\fR first
+to get the proper definitions imported.  See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F.  See \*(L"$^F\*(R" in perlvar.
+.IP "socketpair \s-1SOCKET1\s0,SOCKET2,DOMAIN,TYPE,PROTOCOL" 8
+.IX Item "socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL"
+Creates an unnamed pair of sockets in the specified domain, of the
+specified type.  \s-1DOMAIN\s0, \s-1TYPE\s0, and \s-1PROTOCOL\s0 are specified the same as
+for the system call of the same name.  If unimplemented, yields a fatal
+error.  Returns true if successful.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptors, as determined by the value
+of $^F.  See \*(L"$^F\*(R" in perlvar.
+.Sp
+Some systems defined \f(CW\*(C`pipe\*(C'\fR in terms of \f(CW\*(C`socketpair\*(C'\fR, in which a call
+to \f(CW\*(C`pipe(Rdr, Wtr)\*(C'\fR is essentially:
+.Sp
+.Vb 4
+\&    use Socket;
+\&    socketpair(Rdr, Wtr, AF_UNIX, SOCK_STREAM, PF_UNSPEC);
+\&    shutdown(Rdr, 1);        # no more writing for reader
+\&    shutdown(Wtr, 0);        # no more reading for writer
+.Ve
+.Sp
+See perlipc for an example of socketpair use.  Perl 5.8 and later will
+emulate socketpair using \s-1IP\s0 sockets to localhost if your system implements
+sockets but not socketpair.
+.IP "sort \s-1SUBNAME\s0 \s-1LIST\s0" 8
+.IX Item "sort SUBNAME LIST"
+.PD 0
+.IP "sort \s-1BLOCK\s0 \s-1LIST\s0" 8
+.IX Item "sort BLOCK LIST"
+.IP "sort \s-1LIST\s0" 8
+.IX Item "sort LIST"
+.PD
+In list context, this sorts the \s-1LIST\s0 and returns the sorted list value.
+In scalar context, the behaviour of \f(CW\*(C`sort()\*(C'\fR is undefined.
+.Sp
+If \s-1SUBNAME\s0 or \s-1BLOCK\s0 is omitted, \f(CW\*(C`sort\*(C'\fRs in standard string comparison
+order.  If \s-1SUBNAME\s0 is specified, it gives the name of a subroutine
+that returns an integer less than, equal to, or greater than \f(CW0\fR,
+depending on how the elements of the list are to be ordered.  (The \f(CW\*(C`<=>\*(C'\fR and \f(CW\*(C`cmp\*(C'\fR operators are extremely useful in such routines.)
+\&\s-1SUBNAME\s0 may be a scalar variable name (unsubscripted), in which case
+the value provides the name of (or a reference to) the actual
+subroutine to use.  In place of a \s-1SUBNAME\s0, you can provide a \s-1BLOCK\s0 as
+an anonymous, in-line sort subroutine.
+.Sp
+If the subroutine's prototype is \f(CW\*(C`($$)\*(C'\fR, the elements to be compared
+are passed by reference in \f(CW at _\fR, as for a normal subroutine.  This is
+slower than unprototyped subroutines, where the elements to be
+compared are passed into the subroutine
+as the package global variables \f(CW$a\fR and \f(CW$b\fR (see example below).  Note that
+in the latter case, it is usually counter-productive to declare \f(CW$a\fR and
+\&\f(CW$b\fR as lexicals.
+.Sp
+In either case, the subroutine may not be recursive.  The values to be
+compared are always passed by reference, so don't modify them.
+.Sp
+You also cannot exit out of the sort block or subroutine using any of the
+loop control operators described in perlsyn or with \f(CW\*(C`goto\*(C'\fR.
+.Sp
+When \f(CW\*(C`use locale\*(C'\fR is in effect, \f(CW\*(C`sort LIST\*(C'\fR sorts \s-1LIST\s0 according to the
+current collation locale.  See perllocale.
+.Sp
+Perl 5.6 and earlier used a quicksort algorithm to implement sort.
+That algorithm was not stable, and \fIcould\fR go quadratic.  (A \fIstable\fR sort
+preserves the input order of elements that compare equal.  Although
+quicksort's run time is O(NlogN) when averaged over all arrays of
+length N, the time can be O(N**2), \fIquadratic\fR behavior, for some
+inputs.)  In 5.7, the quicksort implementation was replaced with
+a stable mergesort algorithm whose worst case behavior is O(NlogN).
+But benchmarks indicated that for some inputs, on some platforms,
+the original quicksort was faster.  5.8 has a sort pragma for
+limited control of the sort.  Its rather blunt control of the
+underlying algorithm may not persist into future perls, but the
+ability to characterize the input or output in implementation
+independent ways quite probably will.  See sort.
+.Sp
+Examples:
+.Sp
+.Vb 2
+\&    # sort lexically
+\&    @articles = sort @files;
+.Ve
+.Sp
+.Vb 2
+\&    # same thing, but with explicit sort routine
+\&    @articles = sort {$a cmp $b} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # now case-insensitively
+\&    @articles = sort {uc($a) cmp uc($b)} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # same thing in reversed order
+\&    @articles = sort {$b cmp $a} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # sort numerically ascending
+\&    @articles = sort {$a <=> $b} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # sort numerically descending
+\&    @articles = sort {$b <=> $a} @files;
+.Ve
+.Sp
+.Vb 3
+\&    # this sorts the %age hash by value instead of key
+\&    # using an in-line function
+\&    @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
+.Ve
+.Sp
+.Vb 5
+\&    # sort using explicit subroutine name
+\&    sub byage {
+\&        $age{$a} <=> $age{$b};  # presuming numeric
+\&    }
+\&    @sortedclass = sort byage @class;
+.Ve
+.Sp
+.Vb 9
+\&    sub backwards { $b cmp $a }
+\&    @harry  = qw(dog cat x Cain Abel);
+\&    @george = qw(gone chased yz Punished Axed);
+\&    print sort @harry;
+\&            # prints AbelCaincatdogx
+\&    print sort backwards @harry;
+\&            # prints xdogcatCainAbel
+\&    print sort @george, 'to', @harry;
+\&            # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
+.Ve
+.Sp
+.Vb 3
+\&    # inefficiently sort by descending numeric compare using
+\&    # the first integer after the first = sign, or the
+\&    # whole record case-insensitively otherwise
+.Ve
+.Sp
+.Vb 5
+\&    @new = sort {
+\&        ($b =~ /=(\ed+)/)[0] <=> ($a =~ /=(\ed+)/)[0]
+\&                            ||
+\&                    uc($a)  cmp  uc($b)
+\&    } @old;
+.Ve
+.Sp
+.Vb 8
+\&    # same thing, but much more efficiently;
+\&    # we'll build auxiliary indices instead
+\&    # for speed
+\&    @nums = @caps = ();
+\&    for (@old) {
+\&        push @nums, /=(\ed+)/;
+\&        push @caps, uc($_);
+\&    }
+.Ve
+.Sp
+.Vb 6
+\&    @new = @old[ sort {
+\&                        $nums[$b] <=> $nums[$a]
+\&                                 ||
+\&                        $caps[$a] cmp $caps[$b]
+\&                       } 0..$#old
+\&               ];
+.Ve
+.Sp
+.Vb 6
+\&    # same thing, but without any temps
+\&    @new = map { $_->[0] }
+\&           sort { $b->[1] <=> $a->[1]
+\&                           ||
+\&                  $a->[2] cmp $b->[2]
+\&           } map { [$_, /=(\ed+)/, uc($_)] } @old;
+.Ve
+.Sp
+.Vb 4
+\&    # using a prototype allows you to use any comparison subroutine
+\&    # as a sort subroutine (including other package's subroutines)
+\&    package other;
+\&    sub backwards ($$) { $_[1] cmp $_[0]; }     # $a and $b are not set here
+.Ve
+.Sp
+.Vb 2
+\&    package main;
+\&    @new = sort other::backwards @old;
+.Ve
+.Sp
+.Vb 3
+\&    # guarantee stability, regardless of algorithm
+\&    use sort 'stable';
+\&    @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
+.Ve
+.Sp
+.Vb 3
+\&    # force use of mergesort (not portable outside Perl 5.8)
+\&    use sort '_mergesort';  # note discouraging _
+\&    @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
+.Ve
+.Sp
+If you're using strict, you \fImust not\fR declare \f(CW$a\fR
+and \f(CW$b\fR as lexicals.  They are package globals.  That means
+if you're in the \f(CW\*(C`main\*(C'\fR package and type
+.Sp
+.Vb 1
+\&    @articles = sort {$b <=> $a} @files;
+.Ve
+.Sp
+then \f(CW$a\fR and \f(CW$b\fR are \f(CW$main::a\fR and \f(CW$main::b\fR (or \f(CW$::a\fR and \f(CW$::b\fR),
+but if you're in the \f(CW\*(C`FooPack\*(C'\fR package, it's the same as typing
+.Sp
+.Vb 1
+\&    @articles = sort {$FooPack::b <=> $FooPack::a} @files;
+.Ve
+.Sp
+The comparison function is required to behave.  If it returns
+inconsistent results (sometimes saying \f(CW$x[1]\fR is less than \f(CW$x[2]\fR and
+sometimes saying the opposite, for example) the results are not
+well\-defined.
+.Sp
+Because \f(CW\*(C`<=>\*(C'\fR returns \f(CW\*(C`undef\*(C'\fR when either operand is \f(CW\*(C`NaN\*(C'\fR
+(not\-a\-number), and because \f(CW\*(C`sort\*(C'\fR will trigger a fatal error unless the
+result of a comparison is defined, when sorting with a comparison function
+like \f(CW\*(C`$a <=> $b\*(C'\fR, be careful about lists that might contain a \f(CW\*(C`NaN\*(C'\fR.
+The following example takes advantage of the fact that \f(CW\*(C`NaN != NaN\*(C'\fR to
+eliminate any \f(CW\*(C`NaN\*(C'\fRs from the input.
+.Sp
+.Vb 1
+\&    @result = sort { $a <=> $b } grep { $_ == $_ } @input;
+.Ve
+.IP "splice \s-1ARRAY\s0,OFFSET,LENGTH,LIST" 8
+.IX Item "splice ARRAY,OFFSET,LENGTH,LIST"
+.PD 0
+.IP "splice \s-1ARRAY\s0,OFFSET,LENGTH" 8
+.IX Item "splice ARRAY,OFFSET,LENGTH"
+.IP "splice \s-1ARRAY\s0,OFFSET" 8
+.IX Item "splice ARRAY,OFFSET"
+.IP "splice \s-1ARRAY\s0" 8
+.IX Item "splice ARRAY"
+.PD
+Removes the elements designated by \s-1OFFSET\s0 and \s-1LENGTH\s0 from an array, and
+replaces them with the elements of \s-1LIST\s0, if any.  In list context,
+returns the elements removed from the array.  In scalar context,
+returns the last element removed, or \f(CW\*(C`undef\*(C'\fR if no elements are
+removed.  The array grows or shrinks as necessary.
+If \s-1OFFSET\s0 is negative then it starts that far from the end of the array.
+If \s-1LENGTH\s0 is omitted, removes everything from \s-1OFFSET\s0 onward.
+If \s-1LENGTH\s0 is negative, removes the elements from \s-1OFFSET\s0 onward
+except for \-LENGTH elements at the end of the array.
+If both \s-1OFFSET\s0 and \s-1LENGTH\s0 are omitted, removes everything. If \s-1OFFSET\s0 is
+past the end of the array, perl issues a warning, and splices at the
+end of the array.
+.Sp
+The following equivalences hold (assuming \f(CW\*(C`$[ == 0 and $#a >= $i\*(C'\fR )
+.Sp
+.Vb 5
+\&    push(@a,$x,$y)      splice(@a, at a,0,$x,$y)
+\&    pop(@a)             splice(@a,-1)
+\&    shift(@a)           splice(@a,0,1)
+\&    unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
+\&    $a[$i] = $y         splice(@a,$i,1,$y)
+.Ve
+.Sp
+Example, assuming array lengths are passed before arrays:
+.Sp
+.Vb 10
+\&    sub aeq {   # compare two list values
+\&        my(@a) = splice(@_,0,shift);
+\&        my(@b) = splice(@_,0,shift);
+\&        return 0 unless @a == @b;       # same len?
+\&        while (@a) {
+\&            return 0 if pop(@a) ne pop(@b);
+\&        }
+\&        return 1;
+\&    }
+\&    if (&aeq($len, at foo[1..$len],0+ at bar, at bar)) { ... }
+.Ve
+.IP "split /PATTERN/,EXPR,LIMIT" 8
+.IX Item "split /PATTERN/,EXPR,LIMIT"
+.PD 0
+.IP "split /PATTERN/,EXPR" 8
+.IX Item "split /PATTERN/,EXPR"
+.IP "split /PATTERN/" 8
+.IX Item "split /PATTERN/"
+.IP "split" 8
+.IX Item "split"
+.PD
+Splits a string into a list of strings and returns that list.  By default,
+empty leading fields are preserved, and empty trailing ones are deleted.
+.Sp
+In scalar context, returns the number of fields found and splits into
+the \f(CW at _\fR array.  Use of split in scalar context is deprecated, however,
+because it clobbers your subroutine arguments.
+.Sp
+If \s-1EXPR\s0 is omitted, splits the \f(CW$_\fR string.  If \s-1PATTERN\s0 is also omitted,
+splits on whitespace (after skipping any leading whitespace).  Anything
+matching \s-1PATTERN\s0 is taken to be a delimiter separating the fields.  (Note
+that the delimiter may be longer than one character.)
+.Sp
+If \s-1LIMIT\s0 is specified and positive, it represents the maximum number
+of fields the \s-1EXPR\s0 will be split into, though the actual number of
+fields returned depends on the number of times \s-1PATTERN\s0 matches within
+\&\s-1EXPR\s0.  If \s-1LIMIT\s0 is unspecified or zero, trailing null fields are
+stripped (which potential users of \f(CW\*(C`pop\*(C'\fR would do well to remember).
+If \s-1LIMIT\s0 is negative, it is treated as if an arbitrarily large \s-1LIMIT\s0
+had been specified.  Note that splitting an \s-1EXPR\s0 that evaluates to the
+empty string always returns the empty list, regardless of the \s-1LIMIT\s0
+specified.
+.Sp
+A pattern matching the null string (not to be confused with
+a null pattern \f(CW\*(C`//\*(C'\fR, which is just one member of the set of patterns
+matching a null string) will split the value of \s-1EXPR\s0 into separate
+characters at each point it matches that way.  For example:
+.Sp
+.Vb 1
+\&    print join(':', split(/ */, 'hi there'));
+.Ve
+.Sp
+produces the output 'h:i:t:h:e:r:e'.
+.Sp
+Using the empty pattern \f(CW\*(C`//\*(C'\fR specifically matches the null string, and is
+not be confused with the use of \f(CW\*(C`//\*(C'\fR to mean \*(L"the last successful pattern
+match\*(R".
+.Sp
+Empty leading (or trailing) fields are produced when there are positive width
+matches at the beginning (or end) of the string; a zero-width match at the
+beginning (or end) of the string does not produce an empty field.  For
+example:
+.Sp
+.Vb 1
+\&   print join(':', split(/(?=\ew)/, 'hi there!'));
+.Ve
+.Sp
+produces the output 'h:i :t:h:e:r:e!'.
+.Sp
+The \s-1LIMIT\s0 parameter can be used to split a line partially
+.Sp
+.Vb 1
+\&    ($login, $passwd, $remainder) = split(/:/, $_, 3);
+.Ve
+.Sp
+When assigning to a list, if \s-1LIMIT\s0 is omitted, or zero, Perl supplies
+a \s-1LIMIT\s0 one larger than the number of variables in the list, to avoid
+unnecessary work.  For the list above \s-1LIMIT\s0 would have been 4 by
+default.  In time critical applications it behooves you not to split
+into more fields than you really need.
+.Sp
+If the \s-1PATTERN\s0 contains parentheses, additional list elements are
+created from each matching substring in the delimiter.
+.Sp
+.Vb 1
+\&    split(/([,-])/, "1-10,20", 3);
+.Ve
+.Sp
+produces the list value
+.Sp
+.Vb 1
+\&    (1, '-', 10, ',', 20)
+.Ve
+.Sp
+If you had the entire header of a normal Unix email message in \f(CW$header\fR,
+you could split it up into fields and their values this way:
+.Sp
+.Vb 2
+\&    $header =~ s/\en\es+/ /g;  # fix continuation lines
+\&    %hdrs   =  (UNIX_FROM => split /^(\eS*?):\es*/m, $header);
+.Ve
+.Sp
+The pattern \f(CW\*(C`/PATTERN/\*(C'\fR may be replaced with an expression to specify
+patterns that vary at runtime.  (To do runtime compilation only once,
+use \f(CW\*(C`/$variable/o\*(C'\fR.)
+.Sp
+As a special case, specifying a \s-1PATTERN\s0 of space (\f(CW'\ '\fR) will split on
+white space just as \f(CW\*(C`split\*(C'\fR with no arguments does.  Thus, \f(CW\*(C`split('\ ')\*(C'\fR can
+be used to emulate \fBawk\fR's default behavior, whereas \f(CW\*(C`split(/\ /)\*(C'\fR
+will give you as many null initial fields as there are leading spaces.
+A \f(CW\*(C`split\*(C'\fR on \f(CW\*(C`/\es+/\*(C'\fR is like a \f(CW\*(C`split('\ ')\*(C'\fR except that any leading
+whitespace produces a null first field.  A \f(CW\*(C`split\*(C'\fR with no arguments
+really does a \f(CW\*(C`split('\ ',\ $_)\*(C'\fR internally.
+.Sp
+A \s-1PATTERN\s0 of \f(CW\*(C`/^/\*(C'\fR is treated as if it were \f(CW\*(C`/^/m\*(C'\fR, since it isn't
+much use otherwise.
+.Sp
+Example:
+.Sp
+.Vb 7
+\&    open(PASSWD, '/etc/passwd');
+\&    while (<PASSWD>) {
+\&        chomp;
+\&        ($login, $passwd, $uid, $gid,
+\&         $gcos, $home, $shell) = split(/:/);
+\&        #...
+\&    }
+.Ve
+.Sp
+As with regular pattern matching, any capturing parentheses that are not
+matched in a \f(CW\*(C`split()\*(C'\fR will be set to \f(CW\*(C`undef\*(C'\fR when returned:
+.Sp
+.Vb 2
+\&    @fields = split /(A)|B/, "1A2B3";
+\&    # @fields is (1, 'A', 2, undef, 3)
+.Ve
+.IP "sprintf \s-1FORMAT\s0, \s-1LIST\s0" 8
+.IX Item "sprintf FORMAT, LIST"
+Returns a string formatted by the usual \f(CW\*(C`printf\*(C'\fR conventions of the C
+library function \f(CW\*(C`sprintf\*(C'\fR.  See below for more details
+and see \fIsprintf\fR\|(3) or \fIprintf\fR\|(3) on your system for an explanation of
+the general principles.
+.Sp
+For example:
+.Sp
+.Vb 2
+\&        # Format number with up to 8 leading zeroes
+\&        $result = sprintf("%08d", $number);
+.Ve
+.Sp
+.Vb 2
+\&        # Round number to 3 digits after decimal point
+\&        $rounded = sprintf("%.3f", $number);
+.Ve
+.Sp
+Perl does its own \f(CW\*(C`sprintf\*(C'\fR formatting\*(--it emulates the C
+function \f(CW\*(C`sprintf\*(C'\fR, but it doesn't use it (except for floating-point
+numbers, and even then only the standard modifiers are allowed).  As a
+result, any non-standard extensions in your local \f(CW\*(C`sprintf\*(C'\fR are not
+available from Perl.
+.Sp
+Unlike \f(CW\*(C`printf\*(C'\fR, \f(CW\*(C`sprintf\*(C'\fR does not do what you probably mean when you
+pass it an array as your first argument. The array is given scalar context,
+and instead of using the 0th element of the array as the format, Perl will
+use the count of elements in the array as the format, which is almost never
+useful.
+.Sp
+Perl's \f(CW\*(C`sprintf\*(C'\fR permits the following universally-known conversions:
+.Sp
+.Vb 10
+\&   %%   a percent sign
+\&   %c   a character with the given number
+\&   %s   a string
+\&   %d   a signed integer, in decimal
+\&   %u   an unsigned integer, in decimal
+\&   %o   an unsigned integer, in octal
+\&   %x   an unsigned integer, in hexadecimal
+\&   %e   a floating-point number, in scientific notation
+\&   %f   a floating-point number, in fixed decimal notation
+\&   %g   a floating-point number, in %e or %f notation
+.Ve
+.Sp
+In addition, Perl permits the following widely-supported conversions:
+.Sp
+.Vb 7
+\&   %X   like %x, but using upper-case letters
+\&   %E   like %e, but using an upper-case "E"
+\&   %G   like %g, but with an upper-case "E" (if applicable)
+\&   %b   an unsigned integer, in binary
+\&   %p   a pointer (outputs the Perl value's address in hexadecimal)
+\&   %n   special: *stores* the number of characters output so far
+\&        into the next variable in the parameter list
+.Ve
+.Sp
+Finally, for backward (and we do mean \*(L"backward\*(R") compatibility, Perl
+permits these unnecessary but widely-supported conversions:
+.Sp
+.Vb 5
+\&   %i   a synonym for %d
+\&   %D   a synonym for %ld
+\&   %U   a synonym for %lu
+\&   %O   a synonym for %lo
+\&   %F   a synonym for %f
+.Ve
+.Sp
+Note that the number of exponent digits in the scientific notation produced
+by \f(CW%e\fR, \f(CW%E\fR, \f(CW%g\fR and \f(CW%G\fR for numbers with the modulus of the
+exponent less than 100 is system\-dependent: it may be three or less
+(zero\-padded as necessary).  In other words, 1.23 times ten to the
+99th may be either \*(L"1.23e99\*(R" or \*(L"1.23e099\*(R".
+.Sp
+Between the \f(CW\*(C`%\*(C'\fR and the format letter, you may specify a number of
+additional attributes controlling the interpretation of the format.
+In order, these are:
+.RS 8
+.IP "format parameter index" 4
+.IX Item "format parameter index"
+An explicit format parameter index, such as \f(CW\*(C`2$\*(C'\fR. By default sprintf
+will format the next unused argument in the list, but this allows you
+to take the arguments out of order. Eg:
+.Sp
+.Vb 2
+\&  printf '%2$d %1$d', 12, 34;      # prints "34 12"
+\&  printf '%3$d %d %1$d', 1, 2, 3;  # prints "3 1 1"
+.Ve
+.IP "flags" 4
+.IX Item "flags"
+one or more of:
+   space   prefix positive number with a space
+   +       prefix positive number with a plus sign
+   \-       left-justify within the field
+   0       use zeros, not spaces, to right-justify
+   #       prefix non-zero octal with \*(L"0\*(R", non-zero hex with \*(L"0x\*(R",
+           non-zero binary with \*(L"0b\*(R"
+.Sp
+For example:
+.Sp
+.Vb 6
+\&  printf '<% d>', 12;   # prints "< 12>"
+\&  printf '<%+d>', 12;   # prints "<+12>"
+\&  printf '<%6s>', 12;   # prints "<    12>"
+\&  printf '<%-6s>', 12;  # prints "<12    >"
+\&  printf '<%06s>', 12;  # prints "<000012>"
+\&  printf '<%#x>', 12;   # prints "<0xc>"
+.Ve
+.IP "vector flag" 4
+.IX Item "vector flag"
+The vector flag \f(CW\*(C`v\*(C'\fR, optionally specifying the join string to use.
+This flag tells perl to interpret the supplied string as a vector
+of integers, one for each character in the string, separated by
+a given string (a dot \f(CW\*(C`.\*(C'\fR by default). This can be useful for
+displaying ordinal values of characters in arbitrary strings:
+.Sp
+.Vb 1
+\&  printf "version is v%vd\en", $^V;     # Perl's version
+.Ve
+.Sp
+Put an asterisk \f(CW\*(C`*\*(C'\fR before the \f(CW\*(C`v\*(C'\fR to override the string to
+use to separate the numbers:
+.Sp
+.Vb 2
+\&  printf "address is %*vX\en", ":", $addr;   # IPv6 address
+\&  printf "bits are %0*v8b\en", " ", $bits;   # random bitstring
+.Ve
+.Sp
+You can also explicitly specify the argument number to use for
+the join string using eg \f(CW\*(C`*2$v\*(C'\fR:
+.Sp
+.Vb 1
+\&  printf '%*4$vX %*4$vX %*4$vX', @addr[1..3], ":";   # 3 IPv6 addresses
+.Ve
+.IP "(minimum) width" 4
+.IX Item "(minimum) width"
+Arguments are usually formatted to be only as wide as required to
+display the given value. You can override the width by putting
+a number here, or get the width from the next argument (with \f(CW\*(C`*\*(C'\fR)
+or from a specified argument (with eg \f(CW\*(C`*2$\*(C'\fR):
+.Sp
+.Vb 5
+\&  printf '<%s>', "a";       # prints "<a>"
+\&  printf '<%6s>', "a";      # prints "<     a>"
+\&  printf '<%*s>', 6, "a";   # prints "<     a>"
+\&  printf '<%*2$s>', "a", 6; # prints "<     a>"
+\&  printf '<%2s>', "long";   # prints "<long>" (does not truncate)
+.Ve
+.Sp
+If a field width obtained through \f(CW\*(C`*\*(C'\fR is negative, it has the same
+effect as the \f(CW\*(C`\-\*(C'\fR flag: left\-justification.
+.IP "precision, or maximum width" 4
+.IX Item "precision, or maximum width"
+You can specify a precision (for numeric conversions) or a maximum
+width (for string conversions) by specifying a \f(CW\*(C`.\*(C'\fR followed by a number.
+For floating point formats, with the exception of 'g' and 'G', this specifies
+the number of decimal places to show (the default being 6), eg:
+.Sp
+.Vb 6
+\&  # these examples are subject to system-specific variation
+\&  printf '<%f>', 1;    # prints "<1.000000>"
+\&  printf '<%.1f>', 1;  # prints "<1.0>"
+\&  printf '<%.0f>', 1;  # prints "<1>"
+\&  printf '<%e>', 10;   # prints "<1.000000e+01>"
+\&  printf '<%.1e>', 10; # prints "<1.0e+01>"
+.Ve
+.Sp
+For 'g' and 'G', this specifies the maximum number of digits to show,
+including prior to the decimal point as well as after it, eg:
+.Sp
+.Vb 8
+\&  # these examples are subject to system-specific variation
+\&  printf '<%g>', 1;        # prints "<1>"
+\&  printf '<%.10g>', 1;     # prints "<1>"
+\&  printf '<%g>', 100;      # prints "<100>"
+\&  printf '<%.1g>', 100;    # prints "<1e+02>"
+\&  printf '<%.2g>', 100.01; # prints "<1e+02>"
+\&  printf '<%.5g>', 100.01; # prints "<100.01>"
+\&  printf '<%.4g>', 100.01; # prints "<100>"
+.Ve
+.Sp
+For integer conversions, specifying a precision implies that the
+output of the number itself should be zero-padded to this width:
+.Sp
+.Vb 3
+\&  printf '<%.6x>', 1;      # prints "<000001>"
+\&  printf '<%#.6x>', 1;     # prints "<0x000001>"
+\&  printf '<%-10.6x>', 1;   # prints "<000001    >"
+.Ve
+.Sp
+For string conversions, specifying a precision truncates the string
+to fit in the specified width:
+.Sp
+.Vb 2
+\&  printf '<%.5s>', "truncated";   # prints "<trunc>"
+\&  printf '<%10.5s>', "truncated"; # prints "<     trunc>"
+.Ve
+.Sp
+You can also get the precision from the next argument using \f(CW\*(C`.*\*(C'\fR:
+.Sp
+.Vb 2
+\&  printf '<%.6x>', 1;       # prints "<000001>"
+\&  printf '<%.*x>', 6, 1;    # prints "<000001>"
+.Ve
+.Sp
+You cannot currently get the precision from a specified number,
+but it is intended that this will be possible in the future using
+eg \f(CW\*(C`.*2$\*(C'\fR:
+.Sp
+.Vb 1
+\&  printf '<%.*2$x>', 1, 6;   # INVALID, but in future will print "<000001>"
+.Ve
+.IP "size" 4
+.IX Item "size"
+For numeric conversions, you can specify the size to interpret the
+number as using \f(CW\*(C`l\*(C'\fR, \f(CW\*(C`h\*(C'\fR, \f(CW\*(C`V\*(C'\fR, \f(CW\*(C`q\*(C'\fR, \f(CW\*(C`L\*(C'\fR, or \f(CW\*(C`ll\*(C'\fR. For integer
+conversions (\f(CW\*(C`d u o x X b i D U O\*(C'\fR), numbers are usually assumed to be
+whatever the default integer size is on your platform (usually 32 or 64
+bits), but you can override this to use instead one of the standard C types,
+as supported by the compiler used to build Perl:
+.Sp
+.Vb 4
+\&   l           interpret integer as C type "long" or "unsigned long"
+\&   h           interpret integer as C type "short" or "unsigned short"
+\&   q, L or ll  interpret integer as C type "long long", "unsigned long long".
+\&               or "quads" (typically 64-bit integers)
+.Ve
+.Sp
+The last will produce errors if Perl does not understand \*(L"quads\*(R" in your
+installation. (This requires that either the platform natively supports quads
+or Perl was specifically compiled to support quads.) You can find out
+whether your Perl supports quads via Config:
+.Sp
+.Vb 3
+\&        use Config;
+\&        ($Config{use64bitint} eq 'define' || $Config{longsize} >= 8) &&
+\&                print "quads\en";
+.Ve
+.Sp
+For floating point conversions (\f(CW\*(C`e f g E F G\*(C'\fR), numbers are usually assumed
+to be the default floating point size on your platform (double or long double),
+but you can force 'long double' with \f(CW\*(C`q\*(C'\fR, \f(CW\*(C`L\*(C'\fR, or \f(CW\*(C`ll\*(C'\fR if your
+platform supports them. You can find out whether your Perl supports long
+doubles via Config:
+.Sp
+.Vb 2
+\&        use Config;
+\&        $Config{d_longdbl} eq 'define' && print "long doubles\en";
+.Ve
+.Sp
+You can find out whether Perl considers 'long double' to be the default
+floating point size to use on your platform via Config:
+.Sp
+.Vb 3
+\&        use Config;
+\&        ($Config{uselongdouble} eq 'define') &&
+\&                print "long doubles by default\en";
+.Ve
+.Sp
+It can also be the case that long doubles and doubles are the same thing:
+.Sp
+.Vb 3
+\&        use Config;
+\&        ($Config{doublesize} == $Config{longdblsize}) &&
+\&                print "doubles are long doubles\en";
+.Ve
+.Sp
+The size specifier \f(CW\*(C`V\*(C'\fR has no effect for Perl code, but it is supported
+for compatibility with \s-1XS\s0 code; it means 'use the standard size for
+a Perl integer (or floating-point number)', which is already the
+default for Perl code.
+.IP "order of arguments" 4
+.IX Item "order of arguments"
+Normally, sprintf takes the next unused argument as the value to
+format for each format specification. If the format specification
+uses \f(CW\*(C`*\*(C'\fR to require additional arguments, these are consumed from
+the argument list in the order in which they appear in the format
+specification \fIbefore\fR the value to format. Where an argument is
+specified using an explicit index, this does not affect the normal
+order for the arguments (even when the explicitly specified index
+would have been the next argument in any case).
+.Sp
+So:
+.Sp
+.Vb 1
+\&  printf '<%*.*s>', $a, $b, $c;
+.Ve
+.Sp
+would use \f(CW$a\fR for the width, \f(CW$b\fR for the precision and \f(CW$c\fR
+as the value to format, while:
+.Sp
+.Vb 1
+\&  print '<%*1$.*s>', $a, $b;
+.Ve
+.Sp
+would use \f(CW$a\fR for the width and the precision, and \f(CW$b\fR as the
+value to format.
+.Sp
+Here are some more examples \- beware that when using an explicit
+index, the \f(CW\*(C`$\*(C'\fR may need to be escaped:
+.Sp
+.Vb 4
+\&  printf "%2\e$d %d\en",    12, 34;               # will print "34 12\en"
+\&  printf "%2\e$d %d %d\en", 12, 34;               # will print "34 12 34\en"
+\&  printf "%3\e$d %d %d\en", 12, 34, 56;           # will print "56 12 34\en"
+\&  printf "%2\e$*3\e$d %d\en", 12, 34, 3;           # will print " 34 12\en"
+.Ve
+.RE
+.RS 8
+.Sp
+If \f(CW\*(C`use locale\*(C'\fR is in effect, the character used for the decimal
+point in formatted real numbers is affected by the \s-1LC_NUMERIC\s0 locale.
+See perllocale.
+.RE
+.IP "sqrt \s-1EXPR\s0" 8
+.IX Item "sqrt EXPR"
+.PD 0
+.IP "sqrt" 8
+.IX Item "sqrt"
+.PD
+Return the square root of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted, returns square
+root of \f(CW$_\fR.  Only works on non-negative operands, unless you've
+loaded the standard Math::Complex module.
+.Sp
+.Vb 2
+\&    use Math::Complex;
+\&    print sqrt(-2);    # prints 1.4142135623731i
+.Ve
+.IP "srand \s-1EXPR\s0" 8
+.IX Item "srand EXPR"
+.PD 0
+.IP "srand" 8
+.IX Item "srand"
+.PD
+Sets the random number seed for the \f(CW\*(C`rand\*(C'\fR operator.
+.Sp
+The point of the function is to \*(L"seed\*(R" the \f(CW\*(C`rand\*(C'\fR function so that
+\&\f(CW\*(C`rand\*(C'\fR can produce a different sequence each time you run your
+program.
+.Sp
+If \fIsrand()\fR is not called explicitly, it is called implicitly at the
+first use of the \f(CW\*(C`rand\*(C'\fR operator.  However, this was not the case in
+versions of Perl before 5.004, so if your script will run under older
+Perl versions, it should call \f(CW\*(C`srand\*(C'\fR.
+.Sp
+Most programs won't even call \fIsrand()\fR at all, except those that
+need a cryptographically-strong starting point rather than the
+generally acceptable default, which is based on time of day,
+process \s-1ID\s0, and memory allocation, or the \fI/dev/urandom\fR device,
+if available.
+.Sp
+You can call srand($seed) with the same \f(CW$seed\fR to reproduce the
+\&\fIsame\fR sequence from \fIrand()\fR, but this is usually reserved for
+generating predictable results for testing or debugging.
+Otherwise, don't call \fIsrand()\fR more than once in your program.
+.Sp
+Do \fBnot\fR call \fIsrand()\fR (i.e. without an argument) more than once in
+a script.  The internal state of the random number generator should
+contain more entropy than can be provided by any seed, so calling
+\&\fIsrand()\fR again actually \fIloses\fR randomness.
+.Sp
+Most implementations of \f(CW\*(C`srand\*(C'\fR take an integer and will silently
+truncate decimal numbers.  This means \f(CW\*(C`srand(42)\*(C'\fR will usually
+produce the same results as \f(CW\*(C`srand(42.1)\*(C'\fR.  To be safe, always pass
+\&\f(CW\*(C`srand\*(C'\fR an integer.
+.Sp
+In versions of Perl prior to 5.004 the default seed was just the
+current \f(CW\*(C`time\*(C'\fR.  This isn't a particularly good seed, so many old
+programs supply their own seed value (often \f(CW\*(C`time ^ $$\*(C'\fR or \f(CW\*(C`time ^
+($$ + ($$ << 15))\*(C'\fR), but that isn't necessary any more.
+.Sp
+Note that you need something much more random than the default seed for
+cryptographic purposes.  Checksumming the compressed output of one or more
+rapidly changing operating system status programs is the usual method.  For
+example:
+.Sp
+.Vb 1
+\&    srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
+.Ve
+.Sp
+If you're particularly concerned with this, see the \f(CW\*(C`Math::TrulyRandom\*(C'\fR
+module in \s-1CPAN\s0.
+.Sp
+Frequently called programs (like \s-1CGI\s0 scripts) that simply use
+.Sp
+.Vb 1
+\&    time ^ $$
+.Ve
+.Sp
+for a seed can fall prey to the mathematical property that
+.Sp
+.Vb 1
+\&    a^b == (a+1)^(b+1)
+.Ve
+.Sp
+one-third of the time.  So don't do that.
+.IP "stat \s-1FILEHANDLE\s0" 8
+.IX Item "stat FILEHANDLE"
+.PD 0
+.IP "stat \s-1EXPR\s0" 8
+.IX Item "stat EXPR"
+.IP "stat" 8
+.IX Item "stat"
+.PD
+Returns a 13\-element list giving the status info for a file, either
+the file opened via \s-1FILEHANDLE\s0, or named by \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted,
+it stats \f(CW$_\fR.  Returns a null list if the stat fails.  Typically used
+as follows:
+.Sp
+.Vb 3
+\&    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+\&       $atime,$mtime,$ctime,$blksize,$blocks)
+\&           = stat($filename);
+.Ve
+.Sp
+Not all fields are supported on all filesystem types.  Here are the
+meaning of the fields:
+.Sp
+.Vb 13
+\&  0 dev      device number of filesystem
+\&  1 ino      inode number
+\&  2 mode     file mode  (type and permissions)
+\&  3 nlink    number of (hard) links to the file
+\&  4 uid      numeric user ID of file's owner
+\&  5 gid      numeric group ID of file's owner
+\&  6 rdev     the device identifier (special files only)
+\&  7 size     total size of file, in bytes
+\&  8 atime    last access time in seconds since the epoch
+\&  9 mtime    last modify time in seconds since the epoch
+\& 10 ctime    inode change time in seconds since the epoch (*)
+\& 11 blksize  preferred block size for file system I/O
+\& 12 blocks   actual number of blocks allocated
+.Ve
+.Sp
+(The epoch was at 00:00 January 1, 1970 \s-1GMT\s0.)
+.Sp
+(*) The ctime field is non\-portable, in particular you cannot expect
+it to be a \*(L"creation time\*(R", see \*(L"Files and Filesystems\*(R" in perlport
+for details.
+.Sp
+If stat is passed the special filehandle consisting of an underline, no
+stat is done, but the current contents of the stat structure from the
+last stat or filetest are returned.  Example:
+.Sp
+.Vb 3
+\&    if (-x $file && (($d) = stat(_)) && $d < 0) {
+\&        print "$file is executable NFS file\en";
+\&    }
+.Ve
+.Sp
+(This works on machines only for which the device number is negative
+under \s-1NFS\s0.)
+.Sp
+Because the mode contains both the file type and its permissions, you
+should mask off the file type portion and (s)printf using a \f(CW"%o"\fR
+if you want to see the real permissions.
+.Sp
+.Vb 2
+\&    $mode = (stat($filename))[2];
+\&    printf "Permissions are %04o\en", $mode & 07777;
+.Ve
+.Sp
+In scalar context, \f(CW\*(C`stat\*(C'\fR returns a boolean value indicating success
+or failure, and, if successful, sets the information associated with
+the special filehandle \f(CW\*(C`_\*(C'\fR.
+.Sp
+The File::stat module provides a convenient, by-name access mechanism:
+.Sp
+.Vb 5
+\&    use File::stat;
+\&    $sb = stat($filename);
+\&    printf "File is %s, size is %s, perm %04o, mtime %s\en",
+\&        $filename, $sb->size, $sb->mode & 07777,
+\&        scalar localtime $sb->mtime;
+.Ve
+.Sp
+You can import symbolic mode constants (\f(CW\*(C`S_IF*\*(C'\fR) and functions
+(\f(CW\*(C`S_IS*\*(C'\fR) from the Fcntl module:
+.Sp
+.Vb 1
+\&    use Fcntl ':mode';
+.Ve
+.Sp
+.Vb 1
+\&    $mode = (stat($filename))[2];
+.Ve
+.Sp
+.Vb 3
+\&    $user_rwx      = ($mode & S_IRWXU) >> 6;
+\&    $group_read    = ($mode & S_IRGRP) >> 3;
+\&    $other_execute =  $mode & S_IXOTH;
+.Ve
+.Sp
+.Vb 1
+\&    printf "Permissions are %04o\en", S_IMODE($mode), "\en";
+.Ve
+.Sp
+.Vb 2
+\&    $is_setuid     =  $mode & S_ISUID;
+\&    $is_setgid     =  S_ISDIR($mode);
+.Ve
+.Sp
+You could write the last two using the \f(CW\*(C`\-u\*(C'\fR and \f(CW\*(C`\-d\*(C'\fR operators.
+The commonly available S_IF* constants are
+.Sp
+.Vb 1
+\&    # Permissions: read, write, execute, for user, group, others.
+.Ve
+.Sp
+.Vb 3
+\&    S_IRWXU S_IRUSR S_IWUSR S_IXUSR
+\&    S_IRWXG S_IRGRP S_IWGRP S_IXGRP
+\&    S_IRWXO S_IROTH S_IWOTH S_IXOTH
+.Ve
+.Sp
+.Vb 2
+\&    # Setuid/Setgid/Stickiness/SaveText.
+\&    # Note that the exact meaning of these is system dependent.
+.Ve
+.Sp
+.Vb 1
+\&    S_ISUID S_ISGID S_ISVTX S_ISTXT
+.Ve
+.Sp
+.Vb 1
+\&    # File types.  Not necessarily all are available on your system.
+.Ve
+.Sp
+.Vb 1
+\&    S_IFREG S_IFDIR S_IFLNK S_IFBLK S_ISCHR S_IFIFO S_IFSOCK S_IFWHT S_ENFMT
+.Ve
+.Sp
+.Vb 1
+\&    # The following are compatibility aliases for S_IRUSR, S_IWUSR, S_IXUSR.
+.Ve
+.Sp
+.Vb 1
+\&    S_IREAD S_IWRITE S_IEXEC
+.Ve
+.Sp
+and the S_IF* functions are
+.Sp
+.Vb 2
+\&    S_IMODE($mode)      the part of $mode containing the permission bits
+\&                        and the setuid/setgid/sticky bits
+.Ve
+.Sp
+.Vb 3
+\&    S_IFMT($mode)       the part of $mode containing the file type
+\&                        which can be bit-anded with e.g. S_IFREG
+\&                        or with the following functions
+.Ve
+.Sp
+.Vb 1
+\&    # The operators -f, -d, -l, -b, -c, -p, and -s.
+.Ve
+.Sp
+.Vb 2
+\&    S_ISREG($mode) S_ISDIR($mode) S_ISLNK($mode)
+\&    S_ISBLK($mode) S_ISCHR($mode) S_ISFIFO($mode) S_ISSOCK($mode)
+.Ve
+.Sp
+.Vb 3
+\&    # No direct -X operator counterpart, but for the first one
+\&    # the -g operator is often equivalent.  The ENFMT stands for
+\&    # record flocking enforcement, a platform-dependent feature.
+.Ve
+.Sp
+.Vb 1
+\&    S_ISENFMT($mode) S_ISWHT($mode)
+.Ve
+.Sp
+See your native \fIchmod\fR\|(2) and \fIstat\fR\|(2) documentation for more details
+about the S_* constants.
+.Sp
+To get status info for a symbolic link instead of the target file
+behind the link, use the \f(CW\*(C`lstat\*(C'\fR function, see \*(L"stat\*(R".
+.IP "study \s-1SCALAR\s0" 8
+.IX Item "study SCALAR"
+.PD 0
+.IP "study" 8
+.IX Item "study"
+.PD
+Takes extra time to study \s-1SCALAR\s0 (\f(CW$_\fR if unspecified) in anticipation of
+doing many pattern matches on the string before it is next modified.
+This may or may not save time, depending on the nature and number of
+patterns you are searching on, and on the distribution of character
+frequencies in the string to be searched\*(--you probably want to compare
+run times with and without it to see which runs faster.  Those loops
+which scan for many short constant strings (including the constant
+parts of more complex patterns) will benefit most.  You may have only
+one \f(CW\*(C`study\*(C'\fR active at a time\*(--if you study a different scalar the first
+is \*(L"unstudied\*(R".  (The way \f(CW\*(C`study\*(C'\fR works is this: a linked list of every
+character in the string to be searched is made, so we know, for
+example, where all the \f(CW'k'\fR characters are.  From each search string,
+the rarest character is selected, based on some static frequency tables
+constructed from some C programs and English text.  Only those places
+that contain this \*(L"rarest\*(R" character are examined.)
+.Sp
+For example, here is a loop that inserts index producing entries
+before any line containing a certain pattern:
+.Sp
+.Vb 8
+\&    while (<>) {
+\&        study;
+\&        print ".IX foo\en"       if /\ebfoo\eb/;
+\&        print ".IX bar\en"       if /\ebbar\eb/;
+\&        print ".IX blurfl\en"    if /\ebblurfl\eb/;
+\&        # ...
+\&        print;
+\&    }
+.Ve
+.Sp
+In searching for \f(CW\*(C`/\ebfoo\eb/\*(C'\fR, only those locations in \f(CW$_\fR that contain \f(CW\*(C`f\*(C'\fR
+will be looked at, because \f(CW\*(C`f\*(C'\fR is rarer than \f(CW\*(C`o\*(C'\fR.  In general, this is
+a big win except in pathological cases.  The only question is whether
+it saves you more time than it took to build the linked list in the
+first place.
+.Sp
+Note that if you have to look for strings that you don't know till
+runtime, you can build an entire loop as a string and \f(CW\*(C`eval\*(C'\fR that to
+avoid recompiling all your patterns all the time.  Together with
+undefining \f(CW$/\fR to input entire files as one record, this can be very
+fast, often faster than specialized programs like \fIfgrep\fR\|(1).  The following
+scans a list of files (\f(CW at files\fR) for a list of words (\f(CW at words\fR), and prints
+out the names of those files that contain a match:
+.Sp
+.Vb 12
+\&    $search = 'while (<>) { study;';
+\&    foreach $word (@words) {
+\&        $search .= "++\e$seen{\e$ARGV} if /\e\eb$word\e\eb/;\en";
+\&    }
+\&    $search .= "}";
+\&    @ARGV = @files;
+\&    undef $/;
+\&    eval $search;               # this screams
+\&    $/ = "\en";          # put back to normal input delimiter
+\&    foreach $file (sort keys(%seen)) {
+\&        print $file, "\en";
+\&    }
+.Ve
+.IP "sub \s-1NAME\s0 \s-1BLOCK\s0" 8
+.IX Item "sub NAME BLOCK"
+.PD 0
+.IP "sub \s-1NAME\s0 (\s-1PROTO\s0) \s-1BLOCK\s0" 8
+.IX Item "sub NAME (PROTO) BLOCK"
+.IP "sub \s-1NAME\s0 : \s-1ATTRS\s0 \s-1BLOCK\s0" 8
+.IX Item "sub NAME : ATTRS BLOCK"
+.IP "sub \s-1NAME\s0 (\s-1PROTO\s0) : \s-1ATTRS\s0 \s-1BLOCK\s0" 8
+.IX Item "sub NAME (PROTO) : ATTRS BLOCK"
+.PD
+This is subroutine definition, not a real function \fIper se\fR.
+Without a \s-1BLOCK\s0 it's just a forward declaration.  Without a \s-1NAME\s0,
+it's an anonymous function declaration, and does actually return
+a value: the \s-1CODE\s0 ref of the closure you just created.
+.Sp
+See perlsub and perlref for details about subroutines and
+references, and attributes and Attribute::Handlers for more
+information about attributes.
+.IP "substr \s-1EXPR\s0,OFFSET,LENGTH,REPLACEMENT" 8
+.IX Item "substr EXPR,OFFSET,LENGTH,REPLACEMENT"
+.PD 0
+.IP "substr \s-1EXPR\s0,OFFSET,LENGTH" 8
+.IX Item "substr EXPR,OFFSET,LENGTH"
+.IP "substr \s-1EXPR\s0,OFFSET" 8
+.IX Item "substr EXPR,OFFSET"
+.PD
+Extracts a substring out of \s-1EXPR\s0 and returns it.  First character is at
+offset \f(CW0\fR, or whatever you've set \f(CW$[\fR to (but don't do that).
+If \s-1OFFSET\s0 is negative (or more precisely, less than \f(CW$[\fR), starts
+that far from the end of the string.  If \s-1LENGTH\s0 is omitted, returns
+everything to the end of the string.  If \s-1LENGTH\s0 is negative, leaves that
+many characters off the end of the string.
+.Sp
+You can use the \fIsubstr()\fR function as an lvalue, in which case \s-1EXPR\s0
+must itself be an lvalue.  If you assign something shorter than \s-1LENGTH\s0,
+the string will shrink, and if you assign something longer than \s-1LENGTH\s0,
+the string will grow to accommodate it.  To keep the string the same
+length you may need to pad or chop your value using \f(CW\*(C`sprintf\*(C'\fR.
+.Sp
+If \s-1OFFSET\s0 and \s-1LENGTH\s0 specify a substring that is partly outside the
+string, only the part within the string is returned.  If the substring
+is beyond either end of the string, \fIsubstr()\fR returns the undefined
+value and produces a warning.  When used as an lvalue, specifying a
+substring that is entirely outside the string is a fatal error.
+Here's an example showing the behavior for boundary cases:
+.Sp
+.Vb 5
+\&    my $name = 'fred';
+\&    substr($name, 4) = 'dy';            # $name is now 'freddy'
+\&    my $null = substr $name, 6, 2;      # returns '' (no warning)
+\&    my $oops = substr $name, 7;         # returns undef, with warning
+\&    substr($name, 7) = 'gap';           # fatal error
+.Ve
+.Sp
+An alternative to using \fIsubstr()\fR as an lvalue is to specify the
+replacement string as the 4th argument.  This allows you to replace
+parts of the \s-1EXPR\s0 and return what was there before in one operation,
+just as you can with \fIsplice()\fR.
+.Sp
+If the lvalue returned by substr is used after the \s-1EXPR\s0 is changed in
+any way, the behaviour may not be as expected and is subject to change.
+This caveat includes code such as \f(CW\*(C`print(substr($foo,$a,$b)=$bar)\*(C'\fR or
+\&\f(CW\*(C`(substr($foo,$a,$b)=$bar)=$fud\*(C'\fR (where \f(CW$foo\fR is changed via the
+substring assignment, and then the substr is used again), or where a
+\&\fIsubstr()\fR is aliased via a \f(CW\*(C`foreach\*(C'\fR loop or passed as a parameter or
+a reference to it is taken and then the alias, parameter, or deref'd
+reference either is used after the original \s-1EXPR\s0 has been changed or
+is assigned to and then used a second time.
+.IP "symlink \s-1OLDFILE\s0,NEWFILE" 8
+.IX Item "symlink OLDFILE,NEWFILE"
+Creates a new filename symbolically linked to the old filename.
+Returns \f(CW1\fR for success, \f(CW0\fR otherwise.  On systems that don't support
+symbolic links, produces a fatal error at run time.  To check for that,
+use eval:
+.Sp
+.Vb 1
+\&    $symlink_exists = eval { symlink("",""); 1 };
+.Ve
+.IP "syscall \s-1NUMBER\s0, \s-1LIST\s0" 8
+.IX Item "syscall NUMBER, LIST"
+Calls the system call specified as the first element of the list,
+passing the remaining elements as arguments to the system call.  If
+unimplemented, produces a fatal error.  The arguments are interpreted
+as follows: if a given argument is numeric, the argument is passed as
+an int.  If not, the pointer to the string value is passed.  You are
+responsible to make sure a string is pre-extended long enough to
+receive any result that might be written into a string.  You can't use a
+string literal (or other read-only string) as an argument to \f(CW\*(C`syscall\*(C'\fR
+because Perl has to assume that any string pointer might be written
+through.  If your
+integer arguments are not literals and have never been interpreted in a
+numeric context, you may need to add \f(CW0\fR to them to force them to look
+like numbers.  This emulates the \f(CW\*(C`syswrite\*(C'\fR function (or vice versa):
+.Sp
+.Vb 3
+\&    require 'syscall.ph';               # may need to run h2ph
+\&    $s = "hi there\en";
+\&    syscall(&SYS_write, fileno(STDOUT), $s, length $s);
+.Ve
+.Sp
+Note that Perl supports passing of up to only 14 arguments to your system call,
+which in practice should usually suffice.
+.Sp
+Syscall returns whatever value returned by the system call it calls.
+If the system call fails, \f(CW\*(C`syscall\*(C'\fR returns \f(CW\*(C`\-1\*(C'\fR and sets \f(CW$!\fR (errno).
+Note that some system calls can legitimately return \f(CW\*(C`\-1\*(C'\fR.  The proper
+way to handle such calls is to assign \f(CW\*(C`$!=0;\*(C'\fR before the call and
+check the value of \f(CW$!\fR if syscall returns \f(CW\*(C`\-1\*(C'\fR.
+.Sp
+There's a problem with \f(CW\*(C`syscall(&SYS_pipe)\*(C'\fR: it returns the file
+number of the read end of the pipe it creates.  There is no way
+to retrieve the file number of the other end.  You can avoid this
+problem by using \f(CW\*(C`pipe\*(C'\fR instead.
+.IP "sysopen \s-1FILEHANDLE\s0,FILENAME,MODE" 8
+.IX Item "sysopen FILEHANDLE,FILENAME,MODE"
+.PD 0
+.IP "sysopen \s-1FILEHANDLE\s0,FILENAME,MODE,PERMS" 8
+.IX Item "sysopen FILEHANDLE,FILENAME,MODE,PERMS"
+.PD
+Opens the file whose filename is given by \s-1FILENAME\s0, and associates it
+with \s-1FILEHANDLE\s0.  If \s-1FILEHANDLE\s0 is an expression, its value is used as
+the name of the real filehandle wanted.  This function calls the
+underlying operating system's \f(CW\*(C`open\*(C'\fR function with the parameters
+\&\s-1FILENAME\s0, \s-1MODE\s0, \s-1PERMS\s0.
+.Sp
+The possible values and flag bits of the \s-1MODE\s0 parameter are
+system\-dependent; they are available via the standard module \f(CW\*(C`Fcntl\*(C'\fR.
+See the documentation of your operating system's \f(CW\*(C`open\*(C'\fR to see which
+values and flag bits are available.  You may combine several flags
+using the \f(CW\*(C`|\*(C'\fR\-operator.
+.Sp
+Some of the most common values are \f(CW\*(C`O_RDONLY\*(C'\fR for opening the file in
+read-only mode, \f(CW\*(C`O_WRONLY\*(C'\fR for opening the file in write-only mode,
+and \f(CW\*(C`O_RDWR\*(C'\fR for opening the file in read-write mode, and.
+.Sp
+For historical reasons, some values work on almost every system
+supported by perl: zero means read\-only, one means write\-only, and two
+means read/write.  We know that these values do \fInot\fR work under
+\&\s-1OS/390\s0 & \s-1VM/ESA\s0 Unix and on the Macintosh; you probably don't want to
+use them in new code.
+.Sp
+If the file named by \s-1FILENAME\s0 does not exist and the \f(CW\*(C`open\*(C'\fR call creates
+it (typically because \s-1MODE\s0 includes the \f(CW\*(C`O_CREAT\*(C'\fR flag), then the value of
+\&\s-1PERMS\s0 specifies the permissions of the newly created file.  If you omit
+the \s-1PERMS\s0 argument to \f(CW\*(C`sysopen\*(C'\fR, Perl uses the octal value \f(CW0666\fR.
+These permission values need to be in octal, and are modified by your
+process's current \f(CW\*(C`umask\*(C'\fR.
+.Sp
+In many systems the \f(CW\*(C`O_EXCL\*(C'\fR flag is available for opening files in
+exclusive mode.  This is \fBnot\fR locking: exclusiveness means here that
+if the file already exists, \fIsysopen()\fR fails.  The \f(CW\*(C`O_EXCL\*(C'\fR wins
+\&\f(CW\*(C`O_TRUNC\*(C'\fR.
+.Sp
+Sometimes you may want to truncate an already-existing file: \f(CW\*(C`O_TRUNC\*(C'\fR.
+.Sp
+You should seldom if ever use \f(CW0644\fR as argument to \f(CW\*(C`sysopen\*(C'\fR, because
+that takes away the user's option to have a more permissive umask.
+Better to omit it.  See the \fIperlfunc\fR\|(1) entry on \f(CW\*(C`umask\*(C'\fR for more
+on this.
+.Sp
+Note that \f(CW\*(C`sysopen\*(C'\fR depends on the \fIfdopen()\fR C library function.
+On many \s-1UNIX\s0 systems, \fIfdopen()\fR is known to fail when file descriptors
+exceed a certain value, typically 255. If you need more file
+descriptors than that, consider rebuilding Perl to use the \f(CW\*(C`sfio\*(C'\fR
+library, or perhaps using the \fIPOSIX::open()\fR function.
+.Sp
+See perlopentut for a kinder, gentler explanation of opening files.
+.IP "sysread \s-1FILEHANDLE\s0,SCALAR,LENGTH,OFFSET" 8
+.IX Item "sysread FILEHANDLE,SCALAR,LENGTH,OFFSET"
+.PD 0
+.IP "sysread \s-1FILEHANDLE\s0,SCALAR,LENGTH" 8
+.IX Item "sysread FILEHANDLE,SCALAR,LENGTH"
+.PD
+Attempts to read \s-1LENGTH\s0 bytes of data into variable \s-1SCALAR\s0 from the
+specified \s-1FILEHANDLE\s0, using the system call \fIread\fR\|(2).  It bypasses
+buffered \s-1IO\s0, so mixing this with other kinds of reads, \f(CW\*(C`print\*(C'\fR,
+\&\f(CW\*(C`write\*(C'\fR, \f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, or \f(CW\*(C`eof\*(C'\fR can cause confusion because the
+perlio or stdio layers usually buffers data.  Returns the number of
+bytes actually read, \f(CW0\fR at end of file, or undef if there was an
+error (in the latter case \f(CW$!\fR is also set).  \s-1SCALAR\s0 will be grown or
+shrunk so that the last byte actually read is the last byte of the
+scalar after the read.
+.Sp
+An \s-1OFFSET\s0 may be specified to place the read data at some place in the
+string other than the beginning.  A negative \s-1OFFSET\s0 specifies
+placement at that many characters counting backwards from the end of
+the string.  A positive \s-1OFFSET\s0 greater than the length of \s-1SCALAR\s0
+results in the string being padded to the required size with \f(CW"\e0"\fR
+bytes before the result of the read is appended.
+.Sp
+There is no \fIsyseof()\fR function, which is ok, since \fIeof()\fR doesn't work
+very well on device files (like ttys) anyway.  Use \fIsysread()\fR and check
+for a return value for 0 to decide whether you're done.
+.Sp
+Note that if the filehandle has been marked as \f(CW\*(C`:utf8\*(C'\fR Unicode
+characters are read instead of bytes (the \s-1LENGTH\s0, \s-1OFFSET\s0, and the
+return value of \fIsysread()\fR are in Unicode characters).
+The \f(CW\*(C`:encoding(...)\*(C'\fR layer implicitly introduces the \f(CW\*(C`:utf8\*(C'\fR layer.
+See \*(L"binmode\*(R", \*(L"open\*(R", and the \f(CW\*(C`open\*(C'\fR pragma, open.
+.IP "sysseek \s-1FILEHANDLE\s0,POSITION,WHENCE" 8
+.IX Item "sysseek FILEHANDLE,POSITION,WHENCE"
+Sets \s-1FILEHANDLE\s0's system position in bytes using the system call
+\&\fIlseek\fR\|(2).  \s-1FILEHANDLE\s0 may be an expression whose value gives the name
+of the filehandle.  The values for \s-1WHENCE\s0 are \f(CW0\fR to set the new
+position to \s-1POSITION\s0, \f(CW1\fR to set the it to the current position plus
+\&\s-1POSITION\s0, and \f(CW2\fR to set it to \s-1EOF\s0 plus \s-1POSITION\s0 (typically
+negative).
+.Sp
+Note the \fIin bytes\fR: even if the filehandle has been set to operate
+on characters (for example by using the \f(CW\*(C`:utf8\*(C'\fR I/O layer), \fItell()\fR
+will return byte offsets, not character offsets (because implementing
+that would render \fIsysseek()\fR very slow).
+.Sp
+\&\fIsysseek()\fR bypasses normal buffered \s-1IO\s0, so mixing this with reads (other
+than \f(CW\*(C`sysread\*(C'\fR, for example >&lt or \fIread()\fR) \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`write\*(C'\fR,
+\&\f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, or \f(CW\*(C`eof\*(C'\fR may cause confusion.
+.Sp
+For \s-1WHENCE\s0, you may also use the constants \f(CW\*(C`SEEK_SET\*(C'\fR, \f(CW\*(C`SEEK_CUR\*(C'\fR,
+and \f(CW\*(C`SEEK_END\*(C'\fR (start of the file, current position, end of the file)
+from the Fcntl module.  Use of the constants is also more portable
+than relying on 0, 1, and 2.  For example to define a \*(L"systell\*(R" function:
+.Sp
+.Vb 2
+\&        use Fcntl 'SEEK_CUR';
+\&        sub systell { sysseek($_[0], 0, SEEK_CUR) }
+.Ve
+.Sp
+Returns the new position, or the undefined value on failure.  A position
+of zero is returned as the string \f(CW"0 but true"\fR; thus \f(CW\*(C`sysseek\*(C'\fR returns
+true on success and false on failure, yet you can still easily determine
+the new position.
+.IP "system \s-1LIST\s0" 8
+.IX Item "system LIST"
+.PD 0
+.IP "system \s-1PROGRAM\s0 \s-1LIST\s0" 8
+.IX Item "system PROGRAM LIST"
+.PD
+Does exactly the same thing as \f(CW\*(C`exec LIST\*(C'\fR, except that a fork is
+done first, and the parent process waits for the child process to
+complete.  Note that argument processing varies depending on the
+number of arguments.  If there is more than one argument in \s-1LIST\s0,
+or if \s-1LIST\s0 is an array with more than one value, starts the program
+given by the first element of the list with arguments given by the
+rest of the list.  If there is only one scalar argument, the argument
+is checked for shell metacharacters, and if there are any, the
+entire argument is passed to the system's command shell for parsing
+(this is \f(CW\*(C`/bin/sh \-c\*(C'\fR on Unix platforms, but varies on other
+platforms).  If there are no shell metacharacters in the argument,
+it is split into words and passed directly to \f(CW\*(C`execvp\*(C'\fR, which is
+more efficient.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before any operation that may do a fork, but this may not be
+supported on some platforms (see perlport).  To be safe, you may need
+to set \f(CW$|\fR ($AUTOFLUSH in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method
+of \f(CW\*(C`IO::Handle\*(C'\fR on any open handles.
+.Sp
+The return value is the exit status of the program as returned by the
+\&\f(CW\*(C`wait\*(C'\fR call.  To get the actual exit value shift right by eight (see below).
+See also \*(L"exec\*(R".  This is \fInot\fR what you want to use to capture
+the output from a command, for that you should use merely backticks or
+\&\f(CW\*(C`qx//\*(C'\fR, as described in \*(L"`STRING`\*(R" in perlop.  Return value of \-1
+indicates a failure to start the program (inspect $! for the reason).
+.Sp
+Like \f(CW\*(C`exec\*(C'\fR, \f(CW\*(C`system\*(C'\fR allows you to lie to a program about its name if
+you use the \f(CW\*(C`system PROGRAM LIST\*(C'\fR syntax.  Again, see \*(L"exec\*(R".
+.Sp
+Because \f(CW\*(C`system\*(C'\fR and backticks block \f(CW\*(C`SIGINT\*(C'\fR and \f(CW\*(C`SIGQUIT\*(C'\fR,
+killing the program they're running doesn't actually interrupt
+your program.
+.Sp
+.Vb 3
+\&    @args = ("command", "arg1", "arg2");
+\&    system(@args) == 0
+\&         or die "system @args failed: $?"
+.Ve
+.Sp
+You can check all the failure possibilities by inspecting
+\&\f(CW$?\fR like this:
+.Sp
+.Vb 10
+\&    if ($? == -1) {
+\&        print "failed to execute: $!\en";
+\&    }
+\&    elsif ($? & 127) {
+\&        printf "child died with signal %d, %s coredump\en",
+\&            ($? & 127),  ($? & 128) ? 'with' : 'without';
+\&    }
+\&    else {
+\&        printf "child exited with value %d\en", $? >> 8;
+\&    }
+.Ve
+.Sp
+or more portably by using the W*() calls of the \s-1POSIX\s0 extension;
+see perlport for more information.
+.Sp
+When the arguments get executed via the system shell, results
+and return codes will be subject to its quirks and capabilities.
+See \*(L"`STRING`\*(R" in perlop and \*(L"exec\*(R" for details.
+.IP "syswrite \s-1FILEHANDLE\s0,SCALAR,LENGTH,OFFSET" 8
+.IX Item "syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET"
+.PD 0
+.IP "syswrite \s-1FILEHANDLE\s0,SCALAR,LENGTH" 8
+.IX Item "syswrite FILEHANDLE,SCALAR,LENGTH"
+.IP "syswrite \s-1FILEHANDLE\s0,SCALAR" 8
+.IX Item "syswrite FILEHANDLE,SCALAR"
+.PD
+Attempts to write \s-1LENGTH\s0 bytes of data from variable \s-1SCALAR\s0 to the
+specified \s-1FILEHANDLE\s0, using the system call \fIwrite\fR\|(2).  If \s-1LENGTH\s0 is
+not specified, writes whole \s-1SCALAR\s0.  It bypasses buffered \s-1IO\s0, so
+mixing this with reads (other than \f(CWsysread())\fR, \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`write\*(C'\fR,
+\&\f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, or \f(CW\*(C`eof\*(C'\fR may cause confusion because the perlio and
+stdio layers usually buffers data.  Returns the number of bytes
+actually written, or \f(CW\*(C`undef\*(C'\fR if there was an error (in this case the
+errno variable \f(CW$!\fR is also set).  If the \s-1LENGTH\s0 is greater than the
+available data in the \s-1SCALAR\s0 after the \s-1OFFSET\s0, only as much data as is
+available will be written.
+.Sp
+An \s-1OFFSET\s0 may be specified to write the data from some part of the
+string other than the beginning.  A negative \s-1OFFSET\s0 specifies writing
+that many characters counting backwards from the end of the string.
+In the case the \s-1SCALAR\s0 is empty you can use \s-1OFFSET\s0 but only zero offset.
+.Sp
+Note that if the filehandle has been marked as \f(CW\*(C`:utf8\*(C'\fR, Unicode
+characters are written instead of bytes (the \s-1LENGTH\s0, \s-1OFFSET\s0, and the
+return value of \fIsyswrite()\fR are in \s-1UTF\-8\s0 encoded Unicode characters).
+The \f(CW\*(C`:encoding(...)\*(C'\fR layer implicitly introduces the \f(CW\*(C`:utf8\*(C'\fR layer.
+See \*(L"binmode\*(R", \*(L"open\*(R", and the \f(CW\*(C`open\*(C'\fR pragma, open.
+.IP "tell \s-1FILEHANDLE\s0" 8
+.IX Item "tell FILEHANDLE"
+.PD 0
+.IP "tell" 8
+.IX Item "tell"
+.PD
+Returns the current position \fIin bytes\fR for \s-1FILEHANDLE\s0, or \-1 on
+error.  \s-1FILEHANDLE\s0 may be an expression whose value gives the name of
+the actual filehandle.  If \s-1FILEHANDLE\s0 is omitted, assumes the file
+last read.
+.Sp
+Note the \fIin bytes\fR: even if the filehandle has been set to
+operate on characters (for example by using the \f(CW\*(C`:utf8\*(C'\fR open
+layer), \fItell()\fR will return byte offsets, not character offsets
+(because that would render \fIseek()\fR and \fItell()\fR rather slow).
+.Sp
+The return value of \fItell()\fR for the standard streams like the \s-1STDIN\s0
+depends on the operating system: it may return \-1 or something else.
+\&\fItell()\fR on pipes, fifos, and sockets usually returns \-1.
+.Sp
+There is no \f(CW\*(C`systell\*(C'\fR function.  Use \f(CW\*(C`sysseek(FH, 0, 1)\*(C'\fR for that.
+.Sp
+Do not use \fItell()\fR on a filehandle that has been opened using
+\&\fIsysopen()\fR, use \fIsysseek()\fR for that as described above.  Why?  Because
+\&\fIsysopen()\fR creates unbuffered, \*(L"raw\*(R", filehandles, while \fIopen()\fR creates
+buffered filehandles.  \fIsysseek()\fR make sense only on the first kind,
+\&\fItell()\fR only makes sense on the second kind.
+.IP "telldir \s-1DIRHANDLE\s0" 8
+.IX Item "telldir DIRHANDLE"
+Returns the current position of the \f(CW\*(C`readdir\*(C'\fR routines on \s-1DIRHANDLE\s0.
+Value may be given to \f(CW\*(C`seekdir\*(C'\fR to access a particular location in a
+directory.  Has the same caveats about possible directory compaction as
+the corresponding system library routine.
+.IP "tie \s-1VARIABLE\s0,CLASSNAME,LIST" 8
+.IX Item "tie VARIABLE,CLASSNAME,LIST"
+This function binds a variable to a package class that will provide the
+implementation for the variable.  \s-1VARIABLE\s0 is the name of the variable
+to be enchanted.  \s-1CLASSNAME\s0 is the name of a class implementing objects
+of correct type.  Any additional arguments are passed to the \f(CW\*(C`new\*(C'\fR
+method of the class (meaning \f(CW\*(C`TIESCALAR\*(C'\fR, \f(CW\*(C`TIEHANDLE\*(C'\fR, \f(CW\*(C`TIEARRAY\*(C'\fR,
+or \f(CW\*(C`TIEHASH\*(C'\fR).  Typically these are arguments such as might be passed
+to the \f(CW\*(C`dbm_open()\*(C'\fR function of C.  The object returned by the \f(CW\*(C`new\*(C'\fR
+method is also returned by the \f(CW\*(C`tie\*(C'\fR function, which would be useful
+if you want to access other methods in \s-1CLASSNAME\s0.
+.Sp
+Note that functions such as \f(CW\*(C`keys\*(C'\fR and \f(CW\*(C`values\*(C'\fR may return huge lists
+when used on large objects, like \s-1DBM\s0 files.  You may prefer to use the
+\&\f(CW\*(C`each\*(C'\fR function to iterate over such.  Example:
+.Sp
+.Vb 7
+\&    # print out history file offsets
+\&    use NDBM_File;
+\&    tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
+\&    while (($key,$val) = each %HIST) {
+\&        print $key, ' = ', unpack('L',$val), "\en";
+\&    }
+\&    untie(%HIST);
+.Ve
+.Sp
+A class implementing a hash should have the following methods:
+.Sp
+.Vb 10
+\&    TIEHASH classname, LIST
+\&    FETCH this, key
+\&    STORE this, key, value
+\&    DELETE this, key
+\&    CLEAR this
+\&    EXISTS this, key
+\&    FIRSTKEY this
+\&    NEXTKEY this, lastkey
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+A class implementing an ordinary array should have the following methods:
+.Sp
+.Vb 14
+\&    TIEARRAY classname, LIST
+\&    FETCH this, key
+\&    STORE this, key, value
+\&    FETCHSIZE this
+\&    STORESIZE this, count
+\&    CLEAR this
+\&    PUSH this, LIST
+\&    POP this
+\&    SHIFT this
+\&    UNSHIFT this, LIST
+\&    SPLICE this, offset, length, LIST
+\&    EXTEND this, count
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+A class implementing a file handle should have the following methods:
+.Sp
+.Vb 16
+\&    TIEHANDLE classname, LIST
+\&    READ this, scalar, length, offset
+\&    READLINE this
+\&    GETC this
+\&    WRITE this, scalar, length, offset
+\&    PRINT this, LIST
+\&    PRINTF this, format, LIST
+\&    BINMODE this
+\&    EOF this
+\&    FILENO this
+\&    SEEK this, position, whence
+\&    TELL this
+\&    OPEN this, mode, LIST
+\&    CLOSE this
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+A class implementing a scalar should have the following methods:
+.Sp
+.Vb 5
+\&    TIESCALAR classname, LIST
+\&    FETCH this,
+\&    STORE this, value
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+Not all methods indicated above need be implemented.  See perltie,
+Tie::Hash, Tie::Array, Tie::Scalar, and Tie::Handle.
+.Sp
+Unlike \f(CW\*(C`dbmopen\*(C'\fR, the \f(CW\*(C`tie\*(C'\fR function will not use or require a module
+for you\*(--you need to do that explicitly yourself.  See DB_File
+or the \fIConfig\fR module for interesting \f(CW\*(C`tie\*(C'\fR implementations.
+.Sp
+For further details see perltie, \*(L"tied \s-1VARIABLE\s0\*(R".
+.IP "tied \s-1VARIABLE\s0" 8
+.IX Item "tied VARIABLE"
+Returns a reference to the object underlying \s-1VARIABLE\s0 (the same value
+that was originally returned by the \f(CW\*(C`tie\*(C'\fR call that bound the variable
+to a package.)  Returns the undefined value if \s-1VARIABLE\s0 isn't tied to a
+package.
+.IP "time" 8
+.IX Item "time"
+Returns the number of non-leap seconds since whatever time the system
+considers to be the epoch (that's 00:00:00, January 1, 1904 for Mac \s-1OS\s0,
+and 00:00:00 \s-1UTC\s0, January 1, 1970 for most other systems).
+Suitable for feeding to \f(CW\*(C`gmtime\*(C'\fR and \f(CW\*(C`localtime\*(C'\fR.
+.Sp
+For measuring time in better granularity than one second,
+you may use either the Time::HiRes module (from \s-1CPAN\s0, and starting from
+Perl 5.8 part of the standard distribution), or if you have
+\&\fIgettimeofday\fR\|(2), you may be able to use the \f(CW\*(C`syscall\*(C'\fR interface of Perl.
+See perlfaq8 for details.
+.IP "times" 8
+.IX Item "times"
+Returns a four-element list giving the user and system times, in
+seconds, for this process and the children of this process.
+.Sp
+.Vb 1
+\&    ($user,$system,$cuser,$csystem) = times;
+.Ve
+.Sp
+In scalar context, \f(CW\*(C`times\*(C'\fR returns \f(CW$user\fR.
+.IP "tr///" 8
+.IX Item "tr///"
+The transliteration operator.  Same as \f(CW\*(C`y///\*(C'\fR.  See perlop.
+.IP "truncate \s-1FILEHANDLE\s0,LENGTH" 8
+.IX Item "truncate FILEHANDLE,LENGTH"
+.PD 0
+.IP "truncate \s-1EXPR\s0,LENGTH" 8
+.IX Item "truncate EXPR,LENGTH"
+.PD
+Truncates the file opened on \s-1FILEHANDLE\s0, or named by \s-1EXPR\s0, to the
+specified length.  Produces a fatal error if truncate isn't implemented
+on your system.  Returns true if successful, the undefined value
+otherwise.
+.Sp
+The behavior is undefined if \s-1LENGTH\s0 is greater than the length of the
+file.
+.IP "uc \s-1EXPR\s0" 8
+.IX Item "uc EXPR"
+.PD 0
+.IP "uc" 8
+.IX Item "uc"
+.PD
+Returns an uppercased version of \s-1EXPR\s0.  This is the internal function
+implementing the \f(CW\*(C`\eU\*(C'\fR escape in double-quoted strings.  Respects
+current \s-1LC_CTYPE\s0 locale if \f(CW\*(C`use locale\*(C'\fR in force.  See perllocale
+and perlunicode for more details about locale and Unicode support.
+It does not attempt to do titlecase mapping on initial letters.  See
+\&\f(CW\*(C`ucfirst\*(C'\fR for that.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "ucfirst \s-1EXPR\s0" 8
+.IX Item "ucfirst EXPR"
+.PD 0
+.IP "ucfirst" 8
+.IX Item "ucfirst"
+.PD
+Returns the value of \s-1EXPR\s0 with the first character in uppercase
+(titlecase in Unicode).  This is the internal function implementing
+the \f(CW\*(C`\eu\*(C'\fR escape in double-quoted strings.  Respects current \s-1LC_CTYPE\s0
+locale if \f(CW\*(C`use locale\*(C'\fR in force.  See perllocale and perlunicode
+for more details about locale and Unicode support.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "umask \s-1EXPR\s0" 8
+.IX Item "umask EXPR"
+.PD 0
+.IP "umask" 8
+.IX Item "umask"
+.PD
+Sets the umask for the process to \s-1EXPR\s0 and returns the previous value.
+If \s-1EXPR\s0 is omitted, merely returns the current umask.
+.Sp
+The Unix permission \f(CW\*(C`rwxr\-x\-\-\-\*(C'\fR is represented as three sets of three
+bits, or three octal digits: \f(CW0750\fR (the leading 0 indicates octal
+and isn't one of the digits).  The \f(CW\*(C`umask\*(C'\fR value is such a number
+representing disabled permissions bits.  The permission (or \*(L"mode\*(R")
+values you pass \f(CW\*(C`mkdir\*(C'\fR or \f(CW\*(C`sysopen\*(C'\fR are modified by your umask, so
+even if you tell \f(CW\*(C`sysopen\*(C'\fR to create a file with permissions \f(CW0777\fR,
+if your umask is \f(CW0022\fR then the file will actually be created with
+permissions \f(CW0755\fR.  If your \f(CW\*(C`umask\*(C'\fR were \f(CW0027\fR (group can't
+write; others can't read, write, or execute), then passing
+\&\f(CW\*(C`sysopen\*(C'\fR \f(CW0666\fR would create a file with mode \f(CW0640\fR (\f(CW\*(C`0666 &~
+027\*(C'\fR is \f(CW0640\fR).
+.Sp
+Here's some advice: supply a creation mode of \f(CW0666\fR for regular
+files (in \f(CW\*(C`sysopen\*(C'\fR) and one of \f(CW0777\fR for directories (in
+\&\f(CW\*(C`mkdir\*(C'\fR) and executable files.  This gives users the freedom of
+choice: if they want protected files, they might choose process umasks
+of \f(CW022\fR, \f(CW027\fR, or even the particularly antisocial mask of \f(CW077\fR.
+Programs should rarely if ever make policy decisions better left to
+the user.  The exception to this is when writing files that should be
+kept private: mail files, web browser cookies, \fI.rhosts\fR files, and
+so on.
+.Sp
+If \fIumask\fR\|(2) is not implemented on your system and you are trying to
+restrict access for \fIyourself\fR (i.e., (\s-1EXPR\s0 & 0700) > 0), produces a
+fatal error at run time.  If \fIumask\fR\|(2) is not implemented and you are
+not trying to restrict access for yourself, returns \f(CW\*(C`undef\*(C'\fR.
+.Sp
+Remember that a umask is a number, usually given in octal; it is \fInot\fR a
+string of octal digits.  See also \*(L"oct\*(R", if all you have is a string.
+.IP "undef \s-1EXPR\s0" 8
+.IX Item "undef EXPR"
+.PD 0
+.IP "undef" 8
+.IX Item "undef"
+.PD
+Undefines the value of \s-1EXPR\s0, which must be an lvalue.  Use only on a
+scalar value, an array (using \f(CW\*(C`@\*(C'\fR), a hash (using \f(CW\*(C`%\*(C'\fR), a subroutine
+(using \f(CW\*(C`&\*(C'\fR), or a typeglob (using \f(CW\*(C`*\*(C'\fR).  (Saying \f(CW\*(C`undef $hash{$key}\*(C'\fR
+will probably not do what you expect on most predefined variables or
+\&\s-1DBM\s0 list values, so don't do that; see delete.)  Always returns the
+undefined value.  You can omit the \s-1EXPR\s0, in which case nothing is
+undefined, but you still get an undefined value that you could, for
+instance, return from a subroutine, assign to a variable or pass as a
+parameter.  Examples:
+.Sp
+.Vb 9
+\&    undef $foo;
+\&    undef $bar{'blurfl'};      # Compare to: delete $bar{'blurfl'};
+\&    undef @ary;
+\&    undef %hash;
+\&    undef &mysub;
+\&    undef *xyz;       # destroys $xyz, @xyz, %xyz, &xyz, etc.
+\&    return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
+\&    select undef, undef, undef, 0.25;
+\&    ($a, $b, undef, $c) = &foo;       # Ignore third value returned
+.Ve
+.Sp
+Note that this is a unary operator, not a list operator.
+.IP "unlink \s-1LIST\s0" 8
+.IX Item "unlink LIST"
+.PD 0
+.IP "unlink" 8
+.IX Item "unlink"
+.PD
+Deletes a list of files.  Returns the number of files successfully
+deleted.
+.Sp
+.Vb 3
+\&    $cnt = unlink 'a', 'b', 'c';
+\&    unlink @goners;
+\&    unlink <*.bak>;
+.Ve
+.Sp
+Note: \f(CW\*(C`unlink\*(C'\fR will not delete directories unless you are superuser and
+the \fB\-U\fR flag is supplied to Perl.  Even if these conditions are
+met, be warned that unlinking a directory can inflict damage on your
+filesystem.  Use \f(CW\*(C`rmdir\*(C'\fR instead.
+.Sp
+If \s-1LIST\s0 is omitted, uses \f(CW$_\fR.
+.IP "unpack \s-1TEMPLATE\s0,EXPR" 8
+.IX Item "unpack TEMPLATE,EXPR"
+\&\f(CW\*(C`unpack\*(C'\fR does the reverse of \f(CW\*(C`pack\*(C'\fR: it takes a string
+and expands it out into a list of values.
+(In scalar context, it returns merely the first value produced.)
+.Sp
+The string is broken into chunks described by the \s-1TEMPLATE\s0.  Each chunk
+is converted separately to a value.  Typically, either the string is a result
+of \f(CW\*(C`pack\*(C'\fR, or the bytes of the string represent a C structure of some
+kind.
+.Sp
+The \s-1TEMPLATE\s0 has the same format as in the \f(CW\*(C`pack\*(C'\fR function.
+Here's a subroutine that does substring:
+.Sp
+.Vb 4
+\&    sub substr {
+\&        my($what,$where,$howmuch) = @_;
+\&        unpack("x$where a$howmuch", $what);
+\&    }
+.Ve
+.Sp
+and then there's
+.Sp
+.Vb 1
+\&    sub ordinal { unpack("c",$_[0]); } # same as ord()
+.Ve
+.Sp
+In addition to fields allowed in \fIpack()\fR, you may prefix a field with
+a %<number> to indicate that
+you want a <number>\-bit checksum of the items instead of the items
+themselves.  Default is a 16\-bit checksum.  Checksum is calculated by
+summing numeric values of expanded values (for string fields the sum of
+\&\f(CW\*(C`ord($char)\*(C'\fR is taken, for bit fields the sum of zeroes and ones).
+.Sp
+For example, the following
+computes the same number as the System V sum program:
+.Sp
+.Vb 4
+\&    $checksum = do {
+\&        local $/;  # slurp!
+\&        unpack("%32C*",<>) % 65535;
+\&    };
+.Ve
+.Sp
+The following efficiently counts the number of set bits in a bit vector:
+.Sp
+.Vb 1
+\&    $setbits = unpack("%32b*", $selectmask);
+.Ve
+.Sp
+The \f(CW\*(C`p\*(C'\fR and \f(CW\*(C`P\*(C'\fR formats should be used with care.  Since Perl
+has no way of checking whether the value passed to \f(CW\*(C`unpack()\*(C'\fR
+corresponds to a valid memory location, passing a pointer value that's
+not known to be valid is likely to have disastrous consequences.
+.Sp
+If there are more pack codes or if the repeat count of a field or a group
+is larger than what the remainder of the input string allows, the result
+is not well defined: in some cases, the repeat count is decreased, or
+\&\f(CW\*(C`unpack()\*(C'\fR will produce null strings or zeroes, or terminate with an
+error. If the input string is longer than one described by the \s-1TEMPLATE\s0,
+the rest is ignored.
+.Sp
+See \*(L"pack\*(R" for more examples and notes.
+.IP "untie \s-1VARIABLE\s0" 8
+.IX Item "untie VARIABLE"
+Breaks the binding between a variable and a package.  (See \f(CW\*(C`tie\*(C'\fR.)
+Has no effect if the variable is not tied.
+.IP "unshift \s-1ARRAY\s0,LIST" 8
+.IX Item "unshift ARRAY,LIST"
+Does the opposite of a \f(CW\*(C`shift\*(C'\fR.  Or the opposite of a \f(CW\*(C`push\*(C'\fR,
+depending on how you look at it.  Prepends list to the front of the
+array, and returns the new number of elements in the array.
+.Sp
+.Vb 1
+\&    unshift(@ARGV, '-e') unless $ARGV[0] =~ /^-/;
+.Ve
+.Sp
+Note the \s-1LIST\s0 is prepended whole, not one element at a time, so the
+prepended elements stay in the same order.  Use \f(CW\*(C`reverse\*(C'\fR to do the
+reverse.
+.IP "use Module \s-1VERSION\s0 \s-1LIST\s0" 8
+.IX Item "use Module VERSION LIST"
+.PD 0
+.IP "use Module \s-1VERSION\s0" 8
+.IX Item "use Module VERSION"
+.IP "use Module \s-1LIST\s0" 8
+.IX Item "use Module LIST"
+.IP "use Module" 8
+.IX Item "use Module"
+.IP "use \s-1VERSION\s0" 8
+.IX Item "use VERSION"
+.PD
+Imports some semantics into the current package from the named module,
+generally by aliasing certain subroutine or variable names into your
+package.  It is exactly equivalent to
+.Sp
+.Vb 1
+\&    BEGIN { require Module; import Module LIST; }
+.Ve
+.Sp
+except that Module \fImust\fR be a bareword.
+.Sp
+\&\s-1VERSION\s0 may be either a numeric argument such as 5.006, which will be
+compared to \f(CW$]\fR, or a literal of the form v5.6.1, which will be compared
+to \f(CW$^V\fR (aka \f(CW$PERL_VERSION\fR.  A fatal error is produced if \s-1VERSION\s0 is
+greater than the version of the current Perl interpreter; Perl will not
+attempt to parse the rest of the file.  Compare with \*(L"require\*(R", which can
+do a similar check at run time.
+.Sp
+Specifying \s-1VERSION\s0 as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl which do not support this syntax.  The equivalent numeric
+version should be used instead.
+.Sp
+.Vb 3
+\&    use v5.6.1;         # compile time version check
+\&    use 5.6.1;          # ditto
+\&    use 5.006_001;      # ditto; preferred for backwards compatibility
+.Ve
+.Sp
+This is often useful if you need to check the current Perl version before
+\&\f(CW\*(C`use\*(C'\fRing library modules that have changed in incompatible ways from
+older versions of Perl.  (We try not to do this more than we have to.)
+.Sp
+The \f(CW\*(C`BEGIN\*(C'\fR forces the \f(CW\*(C`require\*(C'\fR and \f(CW\*(C`import\*(C'\fR to happen at compile time.  The
+\&\f(CW\*(C`require\*(C'\fR makes sure the module is loaded into memory if it hasn't been
+yet.  The \f(CW\*(C`import\*(C'\fR is not a builtin\*(--it's just an ordinary static method
+call into the \f(CW\*(C`Module\*(C'\fR package to tell the module to import the list of
+features back into the current package.  The module can implement its
+\&\f(CW\*(C`import\*(C'\fR method any way it likes, though most modules just choose to
+derive their \f(CW\*(C`import\*(C'\fR method via inheritance from the \f(CW\*(C`Exporter\*(C'\fR class that
+is defined in the \f(CW\*(C`Exporter\*(C'\fR module.  See Exporter.  If no \f(CW\*(C`import\*(C'\fR
+method can be found then the call is skipped.
+.Sp
+If you do not want to call the package's \f(CW\*(C`import\*(C'\fR method (for instance,
+to stop your namespace from being altered), explicitly supply the empty list:
+.Sp
+.Vb 1
+\&    use Module ();
+.Ve
+.Sp
+That is exactly equivalent to
+.Sp
+.Vb 1
+\&    BEGIN { require Module }
+.Ve
+.Sp
+If the \s-1VERSION\s0 argument is present between Module and \s-1LIST\s0, then the
+\&\f(CW\*(C`use\*(C'\fR will call the \s-1VERSION\s0 method in class Module with the given
+version as an argument.  The default \s-1VERSION\s0 method, inherited from
+the \s-1UNIVERSAL\s0 class, croaks if the given version is larger than the
+value of the variable \f(CW$Module::VERSION\fR.
+.Sp
+Again, there is a distinction between omitting \s-1LIST\s0 (\f(CW\*(C`import\*(C'\fR called
+with no arguments) and an explicit empty \s-1LIST\s0 \f(CW\*(C`()\*(C'\fR (\f(CW\*(C`import\*(C'\fR not
+called).  Note that there is no comma after \s-1VERSION\s0!
+.Sp
+Because this is a wide-open interface, pragmas (compiler directives)
+are also implemented this way.  Currently implemented pragmas are:
+.Sp
+.Vb 8
+\&    use constant;
+\&    use diagnostics;
+\&    use integer;
+\&    use sigtrap  qw(SEGV BUS);
+\&    use strict   qw(subs vars refs);
+\&    use subs     qw(afunc blurfl);
+\&    use warnings qw(all);
+\&    use sort     qw(stable _quicksort _mergesort);
+.Ve
+.Sp
+Some of these pseudo-modules import semantics into the current
+block scope (like \f(CW\*(C`strict\*(C'\fR or \f(CW\*(C`integer\*(C'\fR, unlike ordinary modules,
+which import symbols into the current package (which are effective
+through the end of the file).
+.Sp
+There's a corresponding \f(CW\*(C`no\*(C'\fR command that unimports meanings imported
+by \f(CW\*(C`use\*(C'\fR, i.e., it calls \f(CW\*(C`unimport Module LIST\*(C'\fR instead of \f(CW\*(C`import\*(C'\fR.
+.Sp
+.Vb 3
+\&    no integer;
+\&    no strict 'refs';
+\&    no warnings;
+.Ve
+.Sp
+See perlmodlib for a list of standard modules and pragmas.  See perlrun
+for the \f(CW\*(C`\-M\*(C'\fR and \f(CW\*(C`\-m\*(C'\fR command-line options to perl that give \f(CW\*(C`use\*(C'\fR
+functionality from the command\-line.
+.IP "utime \s-1LIST\s0" 8
+.IX Item "utime LIST"
+Changes the access and modification times on each file of a list of
+files.  The first two elements of the list must be the \s-1NUMERICAL\s0 access
+and modification times, in that order.  Returns the number of files
+successfully changed.  The inode change time of each file is set
+to the current time.  For example, this code has the same effect as the
+Unix \fItouch\fR\|(1) command when the files \fIalready exist\fR.
+.Sp
+.Vb 3
+\&    #!/usr/bin/perl
+\&    $now = time;
+\&    utime $now, $now, @ARGV;
+.Ve
+.Sp
+\&\fBNote:\fR  Under \s-1NFS\s0, \fItouch\fR\|(1) uses the time of the \s-1NFS\s0 server, not
+the time of the local machine.  If there is a time synchronization
+problem, the \s-1NFS\s0 server and local machine will have different times.
+.Sp
+Since perl 5.7.2, if the first two elements of the list are \f(CW\*(C`undef\*(C'\fR, then
+the \fIutime\fR\|(2) function in the C library will be called with a null second
+argument. On most systems, this will set the file's access and
+modification times to the current time (i.e. equivalent to the example
+above.)
+.Sp
+.Vb 1
+\&    utime undef, undef, @ARGV;
+.Ve
+.IP "values \s-1HASH\s0" 8
+.IX Item "values HASH"
+Returns a list consisting of all the values of the named hash.
+(In a scalar context, returns the number of values.)
+.Sp
+The values are returned in an apparently random order.  The actual
+random order is subject to change in future versions of perl, but it
+is guaranteed to be the same order as either the \f(CW\*(C`keys\*(C'\fR or \f(CW\*(C`each\*(C'\fR
+function would produce on the same (unmodified) hash.  Since Perl
+5.8.1 the ordering is different even between different runs of Perl
+for security reasons (see \*(L"Algorithmic Complexity Attacks\*(R" in perlsec).
+.Sp
+As a side effect, calling \fIvalues()\fR resets the \s-1HASH\s0's internal iterator,
+see \*(L"each\*(R".
+.Sp
+Note that the values are not copied, which means modifying them will
+modify the contents of the hash:
+.Sp
+.Vb 2
+\&    for (values %hash)      { s/foo/bar/g }   # modifies %hash values
+\&    for (@hash{keys %hash}) { s/foo/bar/g }   # same
+.Ve
+.Sp
+See also \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`each\*(C'\fR, and \f(CW\*(C`sort\*(C'\fR.
+.IP "vec \s-1EXPR\s0,OFFSET,BITS" 8
+.IX Item "vec EXPR,OFFSET,BITS"
+Treats the string in \s-1EXPR\s0 as a bit vector made up of elements of
+width \s-1BITS\s0, and returns the value of the element specified by \s-1OFFSET\s0
+as an unsigned integer.  \s-1BITS\s0 therefore specifies the number of bits
+that are reserved for each element in the bit vector.  This must
+be a power of two from 1 to 32 (or 64, if your platform supports
+that).
+.Sp
+If \s-1BITS\s0 is 8, \*(L"elements\*(R" coincide with bytes of the input string.
+.Sp
+If \s-1BITS\s0 is 16 or more, bytes of the input string are grouped into chunks
+of size \s-1BITS/8\s0, and each group is converted to a number as with
+\&\fIpack()\fR/\fIunpack()\fR with big-endian formats \f(CW\*(C`n\*(C'\fR/\f(CW\*(C`N\*(C'\fR (and analogously
+for BITS==64).  See \*(L"pack\*(R" for details.
+.Sp
+If bits is 4 or less, the string is broken into bytes, then the bits
+of each byte are broken into 8/BITS groups.  Bits of a byte are
+numbered in a little-endian-ish way, as in \f(CW0x01\fR, \f(CW0x02\fR,
+\&\f(CW0x04\fR, \f(CW0x08\fR, \f(CW0x10\fR, \f(CW0x20\fR, \f(CW0x40\fR, \f(CW0x80\fR.  For example,
+breaking the single input byte \f(CW\*(C`chr(0x36)\*(C'\fR into two groups gives a list
+\&\f(CW\*(C`(0x6, 0x3)\*(C'\fR; breaking it into 4 groups gives \f(CW\*(C`(0x2, 0x1, 0x3, 0x0)\*(C'\fR.
+.Sp
+\&\f(CW\*(C`vec\*(C'\fR may also be assigned to, in which case parentheses are needed
+to give the expression the correct precedence as in
+.Sp
+.Vb 1
+\&    vec($image, $max_x * $x + $y, 8) = 3;
+.Ve
+.Sp
+If the selected element is outside the string, the value 0 is returned.
+If an element off the end of the string is written to, Perl will first
+extend the string with sufficiently many zero bytes.   It is an error
+to try to write off the beginning of the string (i.e. negative \s-1OFFSET\s0).
+.Sp
+The string should not contain any character with the value > 255 (which
+can only happen if you're using \s-1UTF\-8\s0 encoding).  If it does, it will be
+treated as something which is not \s-1UTF\-8\s0 encoded.  When the \f(CW\*(C`vec\*(C'\fR was
+assigned to, other parts of your program will also no longer consider the
+string to be \s-1UTF\-8\s0 encoded.  In other words, if you do have such characters
+in your string, \fIvec()\fR will operate on the actual byte string, and not the
+conceptual character string.
+.Sp
+Strings created with \f(CW\*(C`vec\*(C'\fR can also be manipulated with the logical
+operators \f(CW\*(C`|\*(C'\fR, \f(CW\*(C`&\*(C'\fR, \f(CW\*(C`^\*(C'\fR, and \f(CW\*(C`~\*(C'\fR.  These operators will assume a bit
+vector operation is desired when both operands are strings.
+See \*(L"Bitwise String Operators\*(R" in perlop.
+.Sp
+The following code will build up an \s-1ASCII\s0 string saying \f(CW'PerlPerlPerl'\fR.
+The comments show the string after each step.  Note that this code works
+in the same way on big-endian or little-endian machines.
+.Sp
+.Vb 2
+\&    my $foo = '';
+\&    vec($foo,  0, 32) = 0x5065726C;     # 'Perl'
+.Ve
+.Sp
+.Vb 2
+\&    # $foo eq "Perl" eq "\ex50\ex65\ex72\ex6C", 32 bits
+\&    print vec($foo, 0, 8);              # prints 80 == 0x50 == ord('P')
+.Ve
+.Sp
+.Vb 11
+\&    vec($foo,  2, 16) = 0x5065;         # 'PerlPe'
+\&    vec($foo,  3, 16) = 0x726C;         # 'PerlPerl'
+\&    vec($foo,  8,  8) = 0x50;           # 'PerlPerlP'
+\&    vec($foo,  9,  8) = 0x65;           # 'PerlPerlPe'
+\&    vec($foo, 20,  4) = 2;              # 'PerlPerlPe'   . "\ex02"
+\&    vec($foo, 21,  4) = 7;              # 'PerlPerlPer'
+\&                                        # 'r' is "\ex72"
+\&    vec($foo, 45,  2) = 3;              # 'PerlPerlPer'  . "\ex0c"
+\&    vec($foo, 93,  1) = 1;              # 'PerlPerlPer'  . "\ex2c"
+\&    vec($foo, 94,  1) = 1;              # 'PerlPerlPerl'
+\&                                        # 'l' is "\ex6c"
+.Ve
+.Sp
+To transform a bit vector into a string or list of 0's and 1's, use these:
+.Sp
+.Vb 2
+\&    $bits = unpack("b*", $vector);
+\&    @bits = split(//, unpack("b*", $vector));
+.Ve
+.Sp
+If you know the exact length in bits, it can be used in place of the \f(CW\*(C`*\*(C'\fR.
+.Sp
+Here is an example to illustrate how the bits actually fall in place:
+.Sp
+.Vb 1
+\&    #!/usr/bin/perl -wl
+.Ve
+.Sp
+.Vb 5
+\&    print <<'EOT';
+\&                                      0         1         2         3
+\&                       unpack("V",$_) 01234567890123456789012345678901
+\&    ------------------------------------------------------------------
+\&    EOT
+.Ve
+.Sp
+.Vb 13
+\&    for $w (0..3) {
+\&        $width = 2**$w;
+\&        for ($shift=0; $shift < $width; ++$shift) {
+\&            for ($off=0; $off < 32/$width; ++$off) {
+\&                $str = pack("B*", "0"x32);
+\&                $bits = (1<<$shift);
+\&                vec($str, $off, $width) = $bits;
+\&                $res = unpack("b*",$str);
+\&                $val = unpack("V", $str);
+\&                write;
+\&            }
+\&        }
+\&    }
+.Ve
+.Sp
+.Vb 5
+\&    format STDOUT =
+\&    vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+\&    $off, $width, $bits, $val, $res
+\&    .
+\&    __END__
+.Ve
+.Sp
+Regardless of the machine architecture on which it is run, the above
+example should print the following table:
+.Sp
+.Vb 131
+\&                                      0         1         2         3
+\&                       unpack("V",$_) 01234567890123456789012345678901
+\&    ------------------------------------------------------------------
+\&    vec($_, 0, 1) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 1) = 1   ==          2 01000000000000000000000000000000
+\&    vec($_, 2, 1) = 1   ==          4 00100000000000000000000000000000
+\&    vec($_, 3, 1) = 1   ==          8 00010000000000000000000000000000
+\&    vec($_, 4, 1) = 1   ==         16 00001000000000000000000000000000
+\&    vec($_, 5, 1) = 1   ==         32 00000100000000000000000000000000
+\&    vec($_, 6, 1) = 1   ==         64 00000010000000000000000000000000
+\&    vec($_, 7, 1) = 1   ==        128 00000001000000000000000000000000
+\&    vec($_, 8, 1) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 9, 1) = 1   ==        512 00000000010000000000000000000000
+\&    vec($_,10, 1) = 1   ==       1024 00000000001000000000000000000000
+\&    vec($_,11, 1) = 1   ==       2048 00000000000100000000000000000000
+\&    vec($_,12, 1) = 1   ==       4096 00000000000010000000000000000000
+\&    vec($_,13, 1) = 1   ==       8192 00000000000001000000000000000000
+\&    vec($_,14, 1) = 1   ==      16384 00000000000000100000000000000000
+\&    vec($_,15, 1) = 1   ==      32768 00000000000000010000000000000000
+\&    vec($_,16, 1) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_,17, 1) = 1   ==     131072 00000000000000000100000000000000
+\&    vec($_,18, 1) = 1   ==     262144 00000000000000000010000000000000
+\&    vec($_,19, 1) = 1   ==     524288 00000000000000000001000000000000
+\&    vec($_,20, 1) = 1   ==    1048576 00000000000000000000100000000000
+\&    vec($_,21, 1) = 1   ==    2097152 00000000000000000000010000000000
+\&    vec($_,22, 1) = 1   ==    4194304 00000000000000000000001000000000
+\&    vec($_,23, 1) = 1   ==    8388608 00000000000000000000000100000000
+\&    vec($_,24, 1) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_,25, 1) = 1   ==   33554432 00000000000000000000000001000000
+\&    vec($_,26, 1) = 1   ==   67108864 00000000000000000000000000100000
+\&    vec($_,27, 1) = 1   ==  134217728 00000000000000000000000000010000
+\&    vec($_,28, 1) = 1   ==  268435456 00000000000000000000000000001000
+\&    vec($_,29, 1) = 1   ==  536870912 00000000000000000000000000000100
+\&    vec($_,30, 1) = 1   == 1073741824 00000000000000000000000000000010
+\&    vec($_,31, 1) = 1   == 2147483648 00000000000000000000000000000001
+\&    vec($_, 0, 2) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 2) = 1   ==          4 00100000000000000000000000000000
+\&    vec($_, 2, 2) = 1   ==         16 00001000000000000000000000000000
+\&    vec($_, 3, 2) = 1   ==         64 00000010000000000000000000000000
+\&    vec($_, 4, 2) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 5, 2) = 1   ==       1024 00000000001000000000000000000000
+\&    vec($_, 6, 2) = 1   ==       4096 00000000000010000000000000000000
+\&    vec($_, 7, 2) = 1   ==      16384 00000000000000100000000000000000
+\&    vec($_, 8, 2) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_, 9, 2) = 1   ==     262144 00000000000000000010000000000000
+\&    vec($_,10, 2) = 1   ==    1048576 00000000000000000000100000000000
+\&    vec($_,11, 2) = 1   ==    4194304 00000000000000000000001000000000
+\&    vec($_,12, 2) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_,13, 2) = 1   ==   67108864 00000000000000000000000000100000
+\&    vec($_,14, 2) = 1   ==  268435456 00000000000000000000000000001000
+\&    vec($_,15, 2) = 1   == 1073741824 00000000000000000000000000000010
+\&    vec($_, 0, 2) = 2   ==          2 01000000000000000000000000000000
+\&    vec($_, 1, 2) = 2   ==          8 00010000000000000000000000000000
+\&    vec($_, 2, 2) = 2   ==         32 00000100000000000000000000000000
+\&    vec($_, 3, 2) = 2   ==        128 00000001000000000000000000000000
+\&    vec($_, 4, 2) = 2   ==        512 00000000010000000000000000000000
+\&    vec($_, 5, 2) = 2   ==       2048 00000000000100000000000000000000
+\&    vec($_, 6, 2) = 2   ==       8192 00000000000001000000000000000000
+\&    vec($_, 7, 2) = 2   ==      32768 00000000000000010000000000000000
+\&    vec($_, 8, 2) = 2   ==     131072 00000000000000000100000000000000
+\&    vec($_, 9, 2) = 2   ==     524288 00000000000000000001000000000000
+\&    vec($_,10, 2) = 2   ==    2097152 00000000000000000000010000000000
+\&    vec($_,11, 2) = 2   ==    8388608 00000000000000000000000100000000
+\&    vec($_,12, 2) = 2   ==   33554432 00000000000000000000000001000000
+\&    vec($_,13, 2) = 2   ==  134217728 00000000000000000000000000010000
+\&    vec($_,14, 2) = 2   ==  536870912 00000000000000000000000000000100
+\&    vec($_,15, 2) = 2   == 2147483648 00000000000000000000000000000001
+\&    vec($_, 0, 4) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 4) = 1   ==         16 00001000000000000000000000000000
+\&    vec($_, 2, 4) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 3, 4) = 1   ==       4096 00000000000010000000000000000000
+\&    vec($_, 4, 4) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_, 5, 4) = 1   ==    1048576 00000000000000000000100000000000
+\&    vec($_, 6, 4) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_, 7, 4) = 1   ==  268435456 00000000000000000000000000001000
+\&    vec($_, 0, 4) = 2   ==          2 01000000000000000000000000000000
+\&    vec($_, 1, 4) = 2   ==         32 00000100000000000000000000000000
+\&    vec($_, 2, 4) = 2   ==        512 00000000010000000000000000000000
+\&    vec($_, 3, 4) = 2   ==       8192 00000000000001000000000000000000
+\&    vec($_, 4, 4) = 2   ==     131072 00000000000000000100000000000000
+\&    vec($_, 5, 4) = 2   ==    2097152 00000000000000000000010000000000
+\&    vec($_, 6, 4) = 2   ==   33554432 00000000000000000000000001000000
+\&    vec($_, 7, 4) = 2   ==  536870912 00000000000000000000000000000100
+\&    vec($_, 0, 4) = 4   ==          4 00100000000000000000000000000000
+\&    vec($_, 1, 4) = 4   ==         64 00000010000000000000000000000000
+\&    vec($_, 2, 4) = 4   ==       1024 00000000001000000000000000000000
+\&    vec($_, 3, 4) = 4   ==      16384 00000000000000100000000000000000
+\&    vec($_, 4, 4) = 4   ==     262144 00000000000000000010000000000000
+\&    vec($_, 5, 4) = 4   ==    4194304 00000000000000000000001000000000
+\&    vec($_, 6, 4) = 4   ==   67108864 00000000000000000000000000100000
+\&    vec($_, 7, 4) = 4   == 1073741824 00000000000000000000000000000010
+\&    vec($_, 0, 4) = 8   ==          8 00010000000000000000000000000000
+\&    vec($_, 1, 4) = 8   ==        128 00000001000000000000000000000000
+\&    vec($_, 2, 4) = 8   ==       2048 00000000000100000000000000000000
+\&    vec($_, 3, 4) = 8   ==      32768 00000000000000010000000000000000
+\&    vec($_, 4, 4) = 8   ==     524288 00000000000000000001000000000000
+\&    vec($_, 5, 4) = 8   ==    8388608 00000000000000000000000100000000
+\&    vec($_, 6, 4) = 8   ==  134217728 00000000000000000000000000010000
+\&    vec($_, 7, 4) = 8   == 2147483648 00000000000000000000000000000001
+\&    vec($_, 0, 8) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 8) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 2, 8) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_, 3, 8) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_, 0, 8) = 2   ==          2 01000000000000000000000000000000
+\&    vec($_, 1, 8) = 2   ==        512 00000000010000000000000000000000
+\&    vec($_, 2, 8) = 2   ==     131072 00000000000000000100000000000000
+\&    vec($_, 3, 8) = 2   ==   33554432 00000000000000000000000001000000
+\&    vec($_, 0, 8) = 4   ==          4 00100000000000000000000000000000
+\&    vec($_, 1, 8) = 4   ==       1024 00000000001000000000000000000000
+\&    vec($_, 2, 8) = 4   ==     262144 00000000000000000010000000000000
+\&    vec($_, 3, 8) = 4   ==   67108864 00000000000000000000000000100000
+\&    vec($_, 0, 8) = 8   ==          8 00010000000000000000000000000000
+\&    vec($_, 1, 8) = 8   ==       2048 00000000000100000000000000000000
+\&    vec($_, 2, 8) = 8   ==     524288 00000000000000000001000000000000
+\&    vec($_, 3, 8) = 8   ==  134217728 00000000000000000000000000010000
+\&    vec($_, 0, 8) = 16  ==         16 00001000000000000000000000000000
+\&    vec($_, 1, 8) = 16  ==       4096 00000000000010000000000000000000
+\&    vec($_, 2, 8) = 16  ==    1048576 00000000000000000000100000000000
+\&    vec($_, 3, 8) = 16  ==  268435456 00000000000000000000000000001000
+\&    vec($_, 0, 8) = 32  ==         32 00000100000000000000000000000000
+\&    vec($_, 1, 8) = 32  ==       8192 00000000000001000000000000000000
+\&    vec($_, 2, 8) = 32  ==    2097152 00000000000000000000010000000000
+\&    vec($_, 3, 8) = 32  ==  536870912 00000000000000000000000000000100
+\&    vec($_, 0, 8) = 64  ==         64 00000010000000000000000000000000
+\&    vec($_, 1, 8) = 64  ==      16384 00000000000000100000000000000000
+\&    vec($_, 2, 8) = 64  ==    4194304 00000000000000000000001000000000
+\&    vec($_, 3, 8) = 64  == 1073741824 00000000000000000000000000000010
+\&    vec($_, 0, 8) = 128 ==        128 00000001000000000000000000000000
+\&    vec($_, 1, 8) = 128 ==      32768 00000000000000010000000000000000
+\&    vec($_, 2, 8) = 128 ==    8388608 00000000000000000000000100000000
+\&    vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001
+.Ve
+.IP "wait" 8
+.IX Item "wait"
+Behaves like the \fIwait\fR\|(2) system call on your system: it waits for a child
+process to terminate and returns the pid of the deceased process, or
+\&\f(CW\*(C`\-1\*(C'\fR if there are no child processes.  The status is returned in \f(CW$?\fR.
+Note that a return value of \f(CW\*(C`\-1\*(C'\fR could mean that child processes are
+being automatically reaped, as described in perlipc.
+.IP "waitpid \s-1PID\s0,FLAGS" 8
+.IX Item "waitpid PID,FLAGS"
+Waits for a particular child process to terminate and returns the pid of
+the deceased process, or \f(CW\*(C`\-1\*(C'\fR if there is no such child process.  On some
+systems, a value of 0 indicates that there are processes still running.
+The status is returned in \f(CW$?\fR.  If you say
+.Sp
+.Vb 5
+\&    use POSIX ":sys_wait_h";
+\&    #...
+\&    do {
+\&        $kid = waitpid(-1, WNOHANG);
+\&    } until $kid > 0;
+.Ve
+.Sp
+then you can do a non-blocking wait for all pending zombie processes.
+Non-blocking wait is available on machines supporting either the
+\&\fIwaitpid\fR\|(2) or \fIwait4\fR\|(2) system calls.  However, waiting for a particular
+pid with \s-1FLAGS\s0 of \f(CW0\fR is implemented everywhere.  (Perl emulates the
+system call by remembering the status values of processes that have
+exited but have not been harvested by the Perl script yet.)
+.Sp
+Note that on some systems, a return value of \f(CW\*(C`\-1\*(C'\fR could mean that child
+processes are being automatically reaped.  See perlipc for details,
+and for other examples.
+.IP "wantarray" 8
+.IX Item "wantarray"
+Returns true if the context of the currently executing subroutine is
+looking for a list value.  Returns false if the context is looking
+for a scalar.  Returns the undefined value if the context is looking
+for no value (void context).
+.Sp
+.Vb 3
+\&    return unless defined wantarray;    # don't bother doing more
+\&    my @a = complex_calculation();
+\&    return wantarray ? @a : "@a";
+.Ve
+.Sp
+This function should have been named \fIwantlist()\fR instead.
+.IP "warn \s-1LIST\s0" 8
+.IX Item "warn LIST"
+Produces a message on \s-1STDERR\s0 just like \f(CW\*(C`die\*(C'\fR, but doesn't exit or throw
+an exception.
+.Sp
+If \s-1LIST\s0 is empty and \f(CW$@\fR already contains a value (typically from a
+previous eval) that value is used after appending \f(CW"\et...caught"\fR
+to \f(CW$@\fR.  This is useful for staying almost, but not entirely similar to
+\&\f(CW\*(C`die\*(C'\fR.
+.Sp
+If \f(CW$@\fR is empty then the string \f(CW"Warning: Something's wrong"\fR is used.
+.Sp
+No message is printed if there is a \f(CW$SIG{_\|_WARN_\|_}\fR handler
+installed.  It is the handler's responsibility to deal with the message
+as it sees fit (like, for instance, converting it into a \f(CW\*(C`die\*(C'\fR).  Most
+handlers must therefore make arrangements to actually display the
+warnings that they are not prepared to deal with, by calling \f(CW\*(C`warn\*(C'\fR
+again in the handler.  Note that this is quite safe and will not
+produce an endless loop, since \f(CW\*(C`_\|_WARN_\|_\*(C'\fR hooks are not called from
+inside one.
+.Sp
+You will find this behavior is slightly different from that of
+\&\f(CW$SIG{_\|_DIE_\|_}\fR handlers (which don't suppress the error text, but can
+instead call \f(CW\*(C`die\*(C'\fR again to change it).
+.Sp
+Using a \f(CW\*(C`_\|_WARN_\|_\*(C'\fR handler provides a powerful way to silence all
+warnings (even the so-called mandatory ones).  An example:
+.Sp
+.Vb 7
+\&    # wipe out *all* compile-time warnings
+\&    BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
+\&    my $foo = 10;
+\&    my $foo = 20;          # no warning about duplicate my $foo,
+\&                           # but hey, you asked for it!
+\&    # no compile-time or run-time warnings before here
+\&    $DOWARN = 1;
+.Ve
+.Sp
+.Vb 2
+\&    # run-time warnings enabled after here
+\&    warn "\e$foo is alive and $foo!";     # does show up
+.Ve
+.Sp
+See perlvar for details on setting \f(CW%SIG\fR entries, and for more
+examples.  See the Carp module for other kinds of warnings using its
+\&\fIcarp()\fR and \fIcluck()\fR functions.
+.IP "write \s-1FILEHANDLE\s0" 8
+.IX Item "write FILEHANDLE"
+.PD 0
+.IP "write \s-1EXPR\s0" 8
+.IX Item "write EXPR"
+.IP "write" 8
+.IX Item "write"
+.PD
+Writes a formatted record (possibly multi\-line) to the specified \s-1FILEHANDLE\s0,
+using the format associated with that file.  By default the format for
+a file is the one having the same name as the filehandle, but the
+format for the current output channel (see the \f(CW\*(C`select\*(C'\fR function) may be set
+explicitly by assigning the name of the format to the \f(CW$~\fR variable.
+.Sp
+Top of form processing is handled automatically:  if there is
+insufficient room on the current page for the formatted record, the
+page is advanced by writing a form feed, a special top-of-page format
+is used to format the new page header, and then the record is written.
+By default the top-of-page format is the name of the filehandle with
+\&\*(L"_TOP\*(R" appended, but it may be dynamically set to the format of your
+choice by assigning the name to the \f(CW$^\fR variable while the filehandle is
+selected.  The number of lines remaining on the current page is in
+variable \f(CW\*(C`$\-\*(C'\fR, which can be set to \f(CW0\fR to force a new page.
+.Sp
+If \s-1FILEHANDLE\s0 is unspecified, output goes to the current default output
+channel, which starts out as \s-1STDOUT\s0 but may be changed by the
+\&\f(CW\*(C`select\*(C'\fR operator.  If the \s-1FILEHANDLE\s0 is an \s-1EXPR\s0, then the expression
+is evaluated and the resulting string is used to look up the name of
+the \s-1FILEHANDLE\s0 at run time.  For more on formats, see perlform.
+.Sp
+Note that write is \fInot\fR the opposite of \f(CW\*(C`read\*(C'\fR.  Unfortunately.
+.IP "y///" 8
+.IX Item "y///"
+The transliteration operator.  Same as \f(CW\*(C`tr///\*(C'\fR.  See perlop.
diff --git a/raw/man1/perlnumber.1 b/raw/man1/perlnumber.1
new file mode 100644
index 0000000..1c10cba
--- /dev/null
+++ b/raw/man1/perlnumber.1
@@ -0,0 +1,314 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLNUMBER 1"
+.TH PERLNUMBER 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlnumber \- semantics of numbers and numeric operations in Perl
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 7
+\&    $n = 1234;              # decimal integer
+\&    $n = 0b1110011;         # binary integer
+\&    $n = 01234;             # octal integer
+\&    $n = 0x1234;            # hexadecimal integer
+\&    $n = 12.34e-56;         # exponential notation
+\&    $n = "-12.34e56";       # number specified as a string
+\&    $n = "1234";            # number specified as a string
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This document describes how Perl internally handles numeric values.
+.PP
+Perl's operator overloading facility is completely ignored here.  Operator
+overloading allows user-defined behaviors for numbers, such as operations
+over arbitrarily large integers, floating points numbers with arbitrary
+precision, operations over \*(L"exotic\*(R" numbers such as modular arithmetic or
+p\-adic arithmetic, and so on.  See overload for details.
+.SH "Storing numbers"
+.IX Header "Storing numbers"
+Perl can internally represent numbers in 3 different ways: as native
+integers, as native floating point numbers, and as decimal strings.
+Decimal strings may have an exponential notation part, as in \f(CW"12.34e\-56"\fR.
+\&\fINative\fR here means \*(L"a format supported by the C compiler which was used
+to build perl\*(R".
+.PP
+The term \*(L"native\*(R" does not mean quite as much when we talk about native
+integers, as it does when native floating point numbers are involved.
+The only implication of the term \*(L"native\*(R" on integers is that the limits for
+the maximal and the minimal supported true integral quantities are close to
+powers of 2.  However, \*(L"native\*(R" floats have a most fundamental
+restriction: they may represent only those numbers which have a relatively
+\&\*(L"short\*(R" representation when converted to a binary fraction.  For example,
+0.9 cannot be represented by a native float, since the binary fraction
+for 0.9 is infinite:
+.PP
+.Vb 1
+\&  binary0.1110011001100...
+.Ve
+.PP
+with the sequence \f(CW1100\fR repeating again and again.  In addition to this
+limitation,  the exponent of the binary number is also restricted when it
+is represented as a floating point number.  On typical hardware, floating
+point values can store numbers with up to 53 binary digits, and with binary
+exponents between \-1024 and 1024.  In decimal representation this is close
+to 16 decimal digits and decimal exponents in the range of \-304..304.
+The upshot of all this is that Perl cannot store a number like
+12345678901234567 as a floating point number on such architectures without
+loss of information.
+.PP
+Similarly, decimal strings can represent only those numbers which have a
+finite decimal expansion.  Being strings, and thus of arbitrary length, there
+is no practical limit for the exponent or number of decimal digits for these
+numbers.  (But realize that what we are discussing the rules for just the
+\&\fIstorage\fR of these numbers.  The fact that you can store such \*(L"large\*(R" numbers
+does not mean that the \fIoperations\fR over these numbers will use all
+of the significant digits.
+See \*(L"Numeric operators and numeric conversions\*(R" for details.)
+.PP
+In fact numbers stored in the native integer format may be stored either
+in the signed native form, or in the unsigned native form.  Thus the limits
+for Perl numbers stored as native integers would typically be \-2**31..2**32\-1,
+with appropriate modifications in the case of 64\-bit integers.  Again, this
+does not mean that Perl can do operations only over integers in this range:
+it is possible to store many more integers in floating point format.
+.PP
+Summing up, Perl numeric values can store only those numbers which have
+a finite decimal expansion or a \*(L"short\*(R" binary expansion.
+.SH "Numeric operators and numeric conversions"
+.IX Header "Numeric operators and numeric conversions"
+As mentioned earlier, Perl can store a number in any one of three formats,
+but most operators typically understand only one of those formats.  When
+a numeric value is passed as an argument to such an operator, it will be
+converted to the format understood by the operator.
+.PP
+Six such conversions are possible:
+.PP
+.Vb 6
+\&  native integer        --> native floating point       (*)
+\&  native integer        --> decimal string
+\&  native floating_point --> native integer              (*)
+\&  native floating_point --> decimal string              (*)
+\&  decimal string        --> native integer
+\&  decimal string        --> native floating point       (*)
+.Ve
+.PP
+These conversions are governed by the following general rules:
+.IP "\(bu" 4
+If the source number can be represented in the target form, that
+representation is used.
+.IP "\(bu" 4
+If the source number is outside of the limits representable in the target form,
+a representation of the closest limit is used.  (\fILoss of information\fR)
+.IP "\(bu" 4
+If the source number is between two numbers representable in the target form,
+a representation of one of these numbers is used.  (\fILoss of information\fR)
+.IP "\(bu" 4
+In \f(CW\*(C`native floating point \-\-> native integer\*(C'\fR conversions the magnitude
+of the result is less than or equal to the magnitude of the source.
+(\fI\*(L"Rounding to zero\*(R".\fR)
+.IP "\(bu" 4
+If the \f(CW\*(C`decimal string \-\-> native integer\*(C'\fR conversion cannot be done
+without loss of information, the result is compatible with the conversion
+sequence \f(CW\*(C`decimal_string \-\-> native_floating_point \-\-> native_integer\*(C'\fR.
+In particular, rounding is strongly biased to 0, though a number like
+\&\f(CW"0.99999999999999999999"\fR has a chance of being rounded to 1.
+.PP
+\&\fB\s-1RESTRICTION\s0\fR: The conversions marked with \f(CW\*(C`(*)\*(C'\fR above involve steps
+performed by the C compiler.  In particular, bugs/features of the compiler
+used may lead to breakage of some of the above rules.
+.SH "Flavors of Perl numeric operations"
+.IX Header "Flavors of Perl numeric operations"
+Perl operations which take a numeric argument treat that argument in one
+of four different ways: they may force it to one of the integer/floating/
+string formats, or they may behave differently depending on the format of
+the operand.  Forcing a numeric value to a particular format does not
+change the number stored in the value.
+.PP
+All the operators which need an argument in the integer format treat the
+argument as in modular arithmetic, e.g., \f(CW\*(C`mod 2**32\*(C'\fR on a 32\-bit
+architecture.  \f(CW\*(C`sprintf "%u", \-1\*(C'\fR therefore provides the same result as
+\&\f(CW\*(C`sprintf "%u", ~0\*(C'\fR.
+.IP "Arithmetic operators" 4
+.IX Item "Arithmetic operators"
+The binary operators \f(CW\*(C`+\*(C'\fR \f(CW\*(C`\-\*(C'\fR \f(CW\*(C`*\*(C'\fR \f(CW\*(C`/\*(C'\fR \f(CW\*(C`%\*(C'\fR \f(CW\*(C`==\*(C'\fR \f(CW\*(C`!=\*(C'\fR \f(CW\*(C`>\*(C'\fR \f(CW\*(C`<\*(C'\fR
+\&\f(CW\*(C`>=\*(C'\fR \f(CW\*(C`<=\*(C'\fR and the unary operators \f(CW\*(C`\-\*(C'\fR \f(CW\*(C`abs\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR will
+attempt to convert arguments to integers.  If both conversions are possible
+without loss of precision, and the operation can be performed without
+loss of precision then the integer result is used.  Otherwise arguments are
+converted to floating point format and the floating point result is used.
+The caching of conversions (as described above) means that the integer
+conversion does not throw away fractional parts on floating point numbers.
+.IP "++" 4
+\&\f(CW\*(C`++\*(C'\fR behaves as the other operators above, except that if it is a string
+matching the format \f(CW\*(C`/^[a\-zA\-Z]*[0\-9]*\ez/\*(C'\fR the string increment described
+in perlop is used.
+.ie n .IP "Arithmetic operators during ""use integer""" 4
+.el .IP "Arithmetic operators during \f(CWuse integer\fR" 4
+.IX Item "Arithmetic operators during use integer"
+In scopes where \f(CW\*(C`use integer;\*(C'\fR is in force, nearly all the operators listed
+above will force their argument(s) into integer format, and return an integer
+result.  The exceptions, \f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`++\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR, do not change their
+behavior with \f(CW\*(C`use integer;\*(C'\fR
+.IP "Other mathematical operators" 4
+.IX Item "Other mathematical operators"
+Operators such as \f(CW\*(C`**\*(C'\fR, \f(CW\*(C`sin\*(C'\fR and \f(CW\*(C`exp\*(C'\fR force arguments to floating point
+format.
+.IP "Bitwise operators" 4
+.IX Item "Bitwise operators"
+Arguments are forced into the integer format if not strings.
+.ie n .IP "Bitwise operators during ""use integer""" 4
+.el .IP "Bitwise operators during \f(CWuse integer\fR" 4
+.IX Item "Bitwise operators during use integer"
+forces arguments to integer format. Also shift operations internally use
+signed integers rather than the default unsigned.
+.IP "Operators which expect an integer" 4
+.IX Item "Operators which expect an integer"
+force the argument into the integer format.  This is applicable
+to the third and fourth arguments of \f(CW\*(C`sysread\*(C'\fR, for example.
+.IP "Operators which expect a string" 4
+.IX Item "Operators which expect a string"
+force the argument into the string format.  For example, this is
+applicable to \f(CW\*(C`printf "%s", $value\*(C'\fR.
+.PP
+Though forcing an argument into a particular form does not change the
+stored number, Perl remembers the result of such conversions.  In
+particular, though the first such conversion may be time\-consuming,
+repeated operations will not need to redo the conversion.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Ilya Zakharevich \f(CW\*(C`ilya at math.ohio\-state.edu\*(C'\fR
+.PP
+Editorial adjustments by Gurusamy Sarathy <gsar at ActiveState.com>
+.PP
+Updates for 5.8.0 by Nicholas Clark <nick at ccl4.org>
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+overload, perlop
diff --git a/raw/man1/perlsec.1 b/raw/man1/perlsec.1
new file mode 100644
index 0000000..a02e85c
--- /dev/null
+++ b/raw/man1/perlsec.1
@@ -0,0 +1,629 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLSEC 1"
+.TH PERLSEC 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlsec \- Perl security
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Perl is designed to make it easy to program securely even when running
+with extra privileges, like setuid or setgid programs.  Unlike most
+command line shells, which are based on multiple substitution passes on
+each line of the script, Perl uses a more conventional evaluation scheme
+with fewer hidden snags.  Additionally, because the language has more
+builtin functionality, it can rely less upon external (and possibly
+untrustworthy) programs to accomplish its purposes.
+.PP
+Perl automatically enables a set of special security checks, called \fItaint
+mode\fR, when it detects its program running with differing real and effective
+user or group IDs.  The setuid bit in Unix permissions is mode 04000, the
+setgid bit mode 02000; either or both may be set.  You can also enable taint
+mode explicitly by using the \fB\-T\fR command line flag. This flag is
+\&\fIstrongly\fR suggested for server programs and any program run on behalf of
+someone else, such as a \s-1CGI\s0 script. Once taint mode is on, it's on for
+the remainder of your script.
+.PP
+While in this mode, Perl takes special precautions called \fItaint
+checks\fR to prevent both obvious and subtle traps.  Some of these checks
+are reasonably simple, such as verifying that path directories aren't
+writable by others; careful programmers have always used checks like
+these.  Other checks, however, are best supported by the language itself,
+and it is these checks especially that contribute to making a set-id Perl
+program more secure than the corresponding C program.
+.PP
+You may not use data derived from outside your program to affect
+something else outside your program\*(--at least, not by accident.  All
+command line arguments, environment variables, locale information (see
+perllocale), results of certain system calls (\fIreaddir()\fR,
+\&\fIreadlink()\fR, the variable of \fIshmread()\fR, the messages returned by
+\&\fImsgrcv()\fR, the password, gcos and shell fields returned by the
+\&\fIgetpwxxx()\fR calls), and all file input are marked as \*(L"tainted\*(R".
+Tainted data may not be used directly or indirectly in any command
+that invokes a sub\-shell, nor in any command that modifies files,
+directories, or processes, \fBwith the following exceptions\fR:
+.IP "\(bu" 4
+Arguments to \f(CW\*(C`print\*(C'\fR and \f(CW\*(C`syswrite\*(C'\fR are \fBnot\fR checked for taintedness.
+.IP "\(bu" 4
+Symbolic methods
+.Sp
+.Vb 1
+\&    $obj->$method(@args);
+.Ve
+.Sp
+and symbolic sub references
+.Sp
+.Vb 2
+\&    &{$foo}(@args);
+\&    $foo->(@args);
+.Ve
+.Sp
+are not checked for taintedness.  This requires extra carefulness
+unless you want external data to affect your control flow.  Unless
+you carefully limit what these symbolic values are, people are able
+to call functions \fBoutside\fR your Perl code, such as POSIX::system,
+in which case they are able to run arbitrary external code.
+.PP
+For efficiency reasons, Perl takes a conservative view of
+whether data is tainted.  If an expression contains tainted data,
+any subexpression may be considered tainted, even if the value
+of the subexpression is not itself affected by the tainted data.
+.PP
+Because taintedness is associated with each scalar value, some
+elements of an array or hash can be tainted and others not.
+The keys of a hash are never tainted.
+.PP
+For example:
+.PP
+.Vb 8
+\&    $arg = shift;               # $arg is tainted
+\&    $hid = $arg, 'bar';         # $hid is also tainted
+\&    $line = <>;                 # Tainted
+\&    $line = <STDIN>;            # Also tainted
+\&    open FOO, "/home/me/bar" or die $!;
+\&    $line = <FOO>;              # Still tainted
+\&    $path = $ENV{'PATH'};       # Tainted, but see below
+\&    $data = 'abc';              # Not tainted
+.Ve
+.PP
+.Vb 5
+\&    system "echo $arg";         # Insecure
+\&    system "/bin/echo", $arg;   # Considered insecure
+\&                                # (Perl doesn't know about /bin/echo)
+\&    system "echo $hid";         # Insecure
+\&    system "echo $data";        # Insecure until PATH set
+.Ve
+.PP
+.Vb 1
+\&    $path = $ENV{'PATH'};       # $path now tainted
+.Ve
+.PP
+.Vb 2
+\&    $ENV{'PATH'} = '/bin:/usr/bin';
+\&    delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
+.Ve
+.PP
+.Vb 2
+\&    $path = $ENV{'PATH'};       # $path now NOT tainted
+\&    system "echo $data";        # Is secure now!
+.Ve
+.PP
+.Vb 2
+\&    open(FOO, "< $arg");        # OK - read-only file
+\&    open(FOO, "> $arg");        # Not OK - trying to write
+.Ve
+.PP
+.Vb 3
+\&    open(FOO,"echo $arg|");     # Not OK
+\&    open(FOO,"-|")
+\&        or exec 'echo', $arg;   # Also not OK
+.Ve
+.PP
+.Vb 1
+\&    $shout = `echo $arg`;       # Insecure, $shout now tainted
+.Ve
+.PP
+.Vb 2
+\&    unlink $data, $arg;         # Insecure
+\&    umask $arg;                 # Insecure
+.Ve
+.PP
+.Vb 3
+\&    exec "echo $arg";           # Insecure
+\&    exec "echo", $arg;          # Insecure
+\&    exec "sh", '-c', $arg;      # Very insecure!
+.Ve
+.PP
+.Vb 2
+\&    @files = <*.c>;             # insecure (uses readdir() or similar)
+\&    @files = glob('*.c');       # insecure (uses readdir() or similar)
+.Ve
+.PP
+.Vb 4
+\&    # In Perl releases older than 5.6.0 the <*.c> and glob('*.c') would
+\&    # have used an external program to do the filename expansion; but in
+\&    # either case the result is tainted since the list of filenames comes
+\&    # from outside of the program.
+.Ve
+.PP
+.Vb 2
+\&    $bad = ($arg, 23);          # $bad will be tainted
+\&    $arg, `true`;               # Insecure (although it isn't really)
+.Ve
+.PP
+If you try to do something insecure, you will get a fatal error saying
+something like \*(L"Insecure dependency\*(R" or \*(L"Insecure \f(CW$ENV\fR{\s-1PATH\s0}\*(R".
+.Sh "Laundering and Detecting Tainted Data"
+.IX Subsection "Laundering and Detecting Tainted Data"
+To test whether a variable contains tainted data, and whose use would
+thus trigger an \*(L"Insecure dependency\*(R" message, you can use the
+\&\fItainted()\fR function of the Scalar::Util module, available in your
+nearby \s-1CPAN\s0 mirror, and included in Perl starting from the release 5.8.0.
+Or you may be able to use the following \f(CW\*(C`is_tainted()\*(C'\fR function.
+.PP
+.Vb 3
+\&    sub is_tainted {
+\&        return ! eval { eval("#" . substr(join("", @_), 0, 0)); 1 };
+\&    }
+.Ve
+.PP
+This function makes use of the fact that the presence of tainted data
+anywhere within an expression renders the entire expression tainted.  It
+would be inefficient for every operator to test every argument for
+taintedness.  Instead, the slightly more efficient and conservative
+approach is used that if any tainted value has been accessed within the
+same expression, the whole expression is considered tainted.
+.PP
+But testing for taintedness gets you only so far.  Sometimes you have just
+to clear your data's taintedness.  Values may be untainted by using them
+as keys in a hash; otherwise the only way to bypass the tainting
+mechanism is by referencing subpatterns from a regular expression match.
+Perl presumes that if you reference a substring using \f(CW$1\fR, \f(CW$2\fR, etc., that
+you knew what you were doing when you wrote the pattern.  That means using
+a bit of thought\*(--don't just blindly untaint anything, or you defeat the
+entire mechanism.  It's better to verify that the variable has only good
+characters (for certain values of \*(L"good\*(R") rather than checking whether it
+has any bad characters.  That's because it's far too easy to miss bad
+characters that you never thought of.
+.PP
+Here's a test to make sure that the data contains nothing but \*(L"word\*(R"
+characters (alphabetics, numerics, and underscores), a hyphen, an at sign,
+or a dot.
+.PP
+.Vb 5
+\&    if ($data =~ /^([-\e@\ew.]+)$/) {
+\&        $data = $1;                     # $data now untainted
+\&    } else {
+\&        die "Bad data in '$data'";      # log this somewhere
+\&    }
+.Ve
+.PP
+This is fairly secure because \f(CW\*(C`/\ew+/\*(C'\fR doesn't normally match shell
+metacharacters, nor are dot, dash, or at going to mean something special
+to the shell.  Use of \f(CW\*(C`/.+/\*(C'\fR would have been insecure in theory because
+it lets everything through, but Perl doesn't check for that.  The lesson
+is that when untainting, you must be exceedingly careful with your patterns.
+Laundering data using regular expression is the \fIonly\fR mechanism for
+untainting dirty data, unless you use the strategy detailed below to fork
+a child of lesser privilege.
+.PP
+The example does not untaint \f(CW$data\fR if \f(CW\*(C`use locale\*(C'\fR is in effect,
+because the characters matched by \f(CW\*(C`\ew\*(C'\fR are determined by the locale.
+Perl considers that locale definitions are untrustworthy because they
+contain data from outside the program.  If you are writing a
+locale-aware program, and want to launder data with a regular expression
+containing \f(CW\*(C`\ew\*(C'\fR, put \f(CW\*(C`no locale\*(C'\fR ahead of the expression in the same
+block.  See \*(L"\s-1SECURITY\s0\*(R" in perllocale for further discussion and examples.
+.ie n .Sh "Switches On the ""#!"" Line"
+.el .Sh "Switches On the ``#!'' Line"
+.IX Subsection "Switches On the #! Line"
+When you make a script executable, in order to make it usable as a
+command, the system will pass switches to perl from the script's #!
+line.  Perl checks that any command line switches given to a setuid
+(or setgid) script actually match the ones set on the #! line.  Some
+Unix and Unix-like environments impose a one-switch limit on the #!
+line, so you may need to use something like \f(CW\*(C`\-wU\*(C'\fR instead of \f(CW\*(C`\-w \-U\*(C'\fR
+under such systems.  (This issue should arise only in Unix or
+Unix-like environments that support #! and setuid or setgid scripts.)
+.ie n .Sh "Taint mode and @INC"
+.el .Sh "Taint mode and \f(CW at INC\fP"
+.IX Subsection "Taint mode and @INC"
+When the taint mode (\f(CW\*(C`\-T\*(C'\fR) is in effect, the \*(L".\*(R" directory is removed
+from \f(CW at INC\fR, and the environment variables \f(CW\*(C`PERL5LIB\*(C'\fR and \f(CW\*(C`PERLLIB\*(C'\fR
+are ignored by Perl. You can still adjust \f(CW at INC\fR from outside the
+program by using the \f(CW\*(C`\-I\*(C'\fR command line option as explained in
+perlrun. The two environment variables are ignored because
+they are obscured, and a user running a program could be unaware that
+they are set, whereas the \f(CW\*(C`\-I\*(C'\fR option is clearly visible and
+therefore permitted.
+.PP
+Another way to modify \f(CW at INC\fR without modifying the program, is to use
+the \f(CW\*(C`lib\*(C'\fR pragma, e.g.:
+.PP
+.Vb 1
+\&  perl -Mlib=/foo program
+.Ve
+.PP
+The benefit of using \f(CW\*(C`\-Mlib=/foo\*(C'\fR over \f(CW\*(C`\-I/foo\*(C'\fR, is that the former
+will automagically remove any duplicated directories, while the later
+will not.
+.Sh "Cleaning Up Your Path"
+.IX Subsection "Cleaning Up Your Path"
+For "Insecure \f(CW$ENV{PATH}\fR" messages, you need to set \f(CW$ENV{'PATH'}\fR to a
+known value, and each directory in the path must be non-writable by others
+than its owner and group.  You may be surprised to get this message even
+if the pathname to your executable is fully qualified.  This is \fInot\fR
+generated because you didn't supply a full path to the program; instead,
+it's generated because you never set your \s-1PATH\s0 environment variable, or
+you didn't set it to something that was safe.  Because Perl can't
+guarantee that the executable in question isn't itself going to turn
+around and execute some other program that is dependent on your \s-1PATH\s0, it
+makes sure you set the \s-1PATH\s0.
+.PP
+The \s-1PATH\s0 isn't the only environment variable which can cause problems.
+Because some shells may use the variables \s-1IFS\s0, \s-1CDPATH\s0, \s-1ENV\s0, and
+\&\s-1BASH_ENV\s0, Perl checks that those are either empty or untainted when
+starting subprocesses. You may wish to add something like this to your
+setid and taint-checking scripts.
+.PP
+.Vb 1
+\&    delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};   # Make %ENV safer
+.Ve
+.PP
+It's also possible to get into trouble with other operations that don't
+care whether they use tainted values.  Make judicious use of the file
+tests in dealing with any user-supplied filenames.  When possible, do
+opens and such \fBafter\fR properly dropping any special user (or group!)
+privileges. Perl doesn't prevent you from opening tainted filenames for reading,
+so be careful what you print out.  The tainting mechanism is intended to
+prevent stupid mistakes, not to remove the need for thought.
+.PP
+Perl does not call the shell to expand wild cards when you pass \fBsystem\fR
+and \fBexec\fR explicit parameter lists instead of strings with possible shell
+wildcards in them.  Unfortunately, the \fBopen\fR, \fBglob\fR, and
+backtick functions provide no such alternate calling convention, so more
+subterfuge will be required.
+.PP
+Perl provides a reasonably safe way to open a file or pipe from a setuid
+or setgid program: just create a child process with reduced privilege who
+does the dirty work for you.  First, fork a child using the special
+\&\fBopen\fR syntax that connects the parent and child by a pipe.  Now the
+child resets its \s-1ID\s0 set and any other per-process attributes, like
+environment variables, umasks, current working directories, back to the
+originals or known safe values.  Then the child process, which no longer
+has any special permissions, does the \fBopen\fR or other system call.
+Finally, the child passes the data it managed to access back to the
+parent.  Because the file or pipe was opened in the child while running
+under less privilege than the parent, it's not apt to be tricked into
+doing something it shouldn't.
+.PP
+Here's a way to do backticks reasonably safely.  Notice how the \fBexec\fR is
+not called with a string that the shell could expand.  This is by far the
+best way to call something that might be subjected to shell escapes: just
+never call the shell at all.  
+.PP
+.Vb 25
+\&        use English '-no_match_vars';
+\&        die "Can't fork: $!" unless defined($pid = open(KID, "-|"));
+\&        if ($pid) {           # parent
+\&            while (<KID>) {
+\&                # do something
+\&            }
+\&            close KID;
+\&        } else {
+\&            my @temp     = ($EUID, $EGID);
+\&            my $orig_uid = $UID;
+\&            my $orig_gid = $GID;
+\&            $EUID = $UID;
+\&            $EGID = $GID;
+\&            # Drop privileges
+\&            $UID  = $orig_uid;
+\&            $GID  = $orig_gid;
+\&            # Make sure privs are really gone
+\&            ($EUID, $EGID) = @temp;
+\&            die "Can't drop privileges"
+\&                unless $UID == $EUID  && $GID eq $EGID;
+\&            $ENV{PATH} = "/bin:/usr/bin"; # Minimal PATH.
+\&            # Consider sanitizing the environment even more.
+\&            exec 'myprog', 'arg1', 'arg2'
+\&                or die "can't exec myprog: $!";
+\&        }
+.Ve
+.PP
+A similar strategy would work for wildcard expansion via \f(CW\*(C`glob\*(C'\fR, although
+you can use \f(CW\*(C`readdir\*(C'\fR instead.
+.PP
+Taint checking is most useful when although you trust yourself not to have
+written a program to give away the farm, you don't necessarily trust those
+who end up using it not to try to trick it into doing something bad.  This
+is the kind of security checking that's useful for set-id programs and
+programs launched on someone else's behalf, like \s-1CGI\s0 programs.
+.PP
+This is quite different, however, from not even trusting the writer of the
+code not to try to do something evil.  That's the kind of trust needed
+when someone hands you a program you've never seen before and says, \*(L"Here,
+run this.\*(R"  For that kind of safety, check out the Safe module,
+included standard in the Perl distribution.  This module allows the
+programmer to set up special compartments in which all system operations
+are trapped and namespace access is carefully controlled.
+.Sh "Security Bugs"
+.IX Subsection "Security Bugs"
+Beyond the obvious problems that stem from giving special privileges to
+systems as flexible as scripts, on many versions of Unix, set-id scripts
+are inherently insecure right from the start.  The problem is a race
+condition in the kernel.  Between the time the kernel opens the file to
+see which interpreter to run and when the (now\-set\-id) interpreter turns
+around and reopens the file to interpret it, the file in question may have
+changed, especially if you have symbolic links on your system.
+.PP
+Fortunately, sometimes this kernel \*(L"feature\*(R" can be disabled.
+Unfortunately, there are two ways to disable it.  The system can simply
+outlaw scripts with any set-id bit set, which doesn't help much.
+Alternately, it can simply ignore the set-id bits on scripts.  If the
+latter is true, Perl can emulate the setuid and setgid mechanism when it
+notices the otherwise useless setuid/gid bits on Perl scripts.  It does
+this via a special executable called \fBsuidperl\fR that is automatically
+invoked for you if it's needed.
+.PP
+However, if the kernel set-id script feature isn't disabled, Perl will
+complain loudly that your set-id script is insecure.  You'll need to
+either disable the kernel set-id script feature, or put a C wrapper around
+the script.  A C wrapper is just a compiled program that does nothing
+except call your Perl program.   Compiled programs are not subject to the
+kernel bug that plagues set-id scripts.  Here's a simple wrapper, written
+in C:
+.PP
+.Vb 6
+\&    #define REAL_PATH "/path/to/script"
+\&    main(ac, av)
+\&        char **av;
+\&    {
+\&        execv(REAL_PATH, av);
+\&    }
+.Ve
+.PP
+Compile this wrapper into a binary executable and then make \fIit\fR rather
+than your script setuid or setgid.
+.PP
+In recent years, vendors have begun to supply systems free of this
+inherent security bug.  On such systems, when the kernel passes the name
+of the set-id script to open to the interpreter, rather than using a
+pathname subject to meddling, it instead passes \fI/dev/fd/3\fR.  This is a
+special file already opened on the script, so that there can be no race
+condition for evil scripts to exploit.  On these systems, Perl should be
+compiled with \f(CW\*(C`\-DSETUID_SCRIPTS_ARE_SECURE_NOW\*(C'\fR.  The \fBConfigure\fR
+program that builds Perl tries to figure this out for itself, so you
+should never have to specify this yourself.  Most modern releases of
+SysVr4 and \s-1BSD\s0 4.4 use this approach to avoid the kernel race condition.
+.PP
+Prior to release 5.6.1 of Perl, bugs in the code of \fBsuidperl\fR could
+introduce a security hole.
+.Sh "Protecting Your Programs"
+.IX Subsection "Protecting Your Programs"
+There are a number of ways to hide the source to your Perl programs,
+with varying levels of \*(L"security\*(R".
+.PP
+First of all, however, you \fIcan't\fR take away read permission, because
+the source code has to be readable in order to be compiled and
+interpreted.  (That doesn't mean that a \s-1CGI\s0 script's source is
+readable by people on the web, though.)  So you have to leave the
+permissions at the socially friendly 0755 level.  This lets 
+people on your local system only see your source.
+.PP
+Some people mistakenly regard this as a security problem.  If your program does
+insecure things, and relies on people not knowing how to exploit those
+insecurities, it is not secure.  It is often possible for someone to
+determine the insecure things and exploit them without viewing the
+source.  Security through obscurity, the name for hiding your bugs
+instead of fixing them, is little security indeed.
+.PP
+You can try using encryption via source filters (Filter::* from \s-1CPAN\s0,
+or Filter::Util::Call and Filter::Simple since Perl 5.8).
+But crackers might be able to decrypt it.  You can try using the byte
+code compiler and interpreter described below, but crackers might be
+able to de-compile it.  You can try using the native-code compiler
+described below, but crackers might be able to disassemble it.  These
+pose varying degrees of difficulty to people wanting to get at your
+code, but none can definitively conceal it (this is true of every
+language, not just Perl).
+.PP
+If you're concerned about people profiting from your code, then the
+bottom line is that nothing but a restrictive licence will give you
+legal security.  License your software and pepper it with threatening
+statements like \*(L"This is unpublished proprietary software of \s-1XYZ\s0 Corp.
+Your access to it does not give you permission to use it blah blah
+blah.\*(R"  You should see a lawyer to be sure your licence's wording will
+stand up in court.
+.Sh "Unicode"
+.IX Subsection "Unicode"
+Unicode is a new and complex technology and one may easily overlook
+certain security pitfalls.  See perluniintro for an overview and
+perlunicode for details, and \*(L"Security Implications of Unicode\*(R" in perlunicode for security implications in particular.
+.Sh "Algorithmic Complexity Attacks"
+.IX Subsection "Algorithmic Complexity Attacks"
+Certain internal algorithms used in the implementation of Perl can
+be attacked by choosing the input carefully to consume large amounts
+of either time or space or both.  This can lead into the so-called
+\&\fIDenial of Service\fR (DoS) attacks.
+.IP "\(bu" 4
+Hash Function \- the algorithm used to \*(L"order\*(R" hash elements has been
+changed several times during the development of Perl, mainly to be
+reasonably fast.  In Perl 5.8.1 also the security aspect was taken
+into account.
+.Sp
+In Perls before 5.8.1 one could rather easily generate data that as
+hash keys would cause Perl to consume large amounts of time because
+internal structure of hashes would badly degenerate.  In Perl 5.8.1
+the hash function is randomly perturbed by a pseudorandom seed which
+makes generating such naughty hash keys harder.
+See \*(L"\s-1PERL_HASH_SEED\s0\*(R" in perlrun for more information.
+.Sp
+The random perturbation is done by default but if one wants for some
+reason emulate the old behaviour one can set the environment variable
+\&\s-1PERL_HASH_SEED\s0 to zero (or any other integer).  One possible reason
+for wanting to emulate the old behaviour is that in the new behaviour
+consecutive runs of Perl will order hash keys differently, which may
+confuse some applications (like Data::Dumper: the outputs of two
+different runs are no more identical).
+.Sp
+\&\fBPerl has never guaranteed any ordering of the hash keys\fR, and the
+ordering has already changed several times during the lifetime of
+Perl 5.  Also, the ordering of hash keys has always been, and
+continues to be, affected by the insertion order.
+.Sp
+Also note that while the order of the hash elements might be
+randomised, this \*(L"pseudoordering\*(R" should \fBnot\fR be used for
+applications like shuffling a list randomly (use \fIList::Util::shuffle()\fR
+for that, see List::Util, a standard core module since Perl 5.8.0;
+or the \s-1CPAN\s0 module Algorithm::Numerical::Shuffle), or for generating
+permutations (use e.g. the \s-1CPAN\s0 modules Algorithm::Permute or
+Algorithm::FastPermute), or for any cryptographic applications.
+.IP "\(bu" 4
+Regular expressions \- Perl's regular expression engine is so called
+\&\s-1NFA\s0 (Non\-Finite Automaton), which among other things means that it can
+rather easily consume large amounts of both time and space if the
+regular expression may match in several ways.  Careful crafting of the
+regular expressions can help but quite often there really isn't much
+one can do (the book \*(L"Mastering Regular Expressions\*(R" is required
+reading, see perlfaq2).  Running out of space manifests itself by
+Perl running out of memory.
+.IP "\(bu" 4
+Sorting \- the quicksort algorithm used in Perls before 5.8.0 to
+implement the \fIsort()\fR function is very easy to trick into misbehaving
+so that it consumes a lot of time.  Nothing more is required than
+resorting a list already sorted.  Starting from Perl 5.8.0 a different
+sorting algorithm, mergesort, is used.  Mergesort is insensitive to
+its input data, so it cannot be similarly fooled.
+.PP
+See <http://www.cs.rice.edu/~scrosby/hash/> for more information,
+and any computer science text book on the algorithmic complexity.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+perlrun for its description of cleaning up environment variables.
diff --git a/raw/man1/perlstyle.1 b/raw/man1/perlstyle.1
new file mode 100644
index 0000000..a3e3a66
--- /dev/null
+++ b/raw/man1/perlstyle.1
@@ -0,0 +1,353 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLSTYLE 1"
+.TH PERLSTYLE 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlstyle \- Perl style guide
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Each programmer will, of course, have his or her own preferences in
+regards to formatting, but there are some general guidelines that will
+make your programs easier to read, understand, and maintain.
+.PP
+The most important thing is to run your programs under the \fB\-w\fR
+flag at all times.  You may turn it off explicitly for particular
+portions of code via the \f(CW\*(C`no warnings\*(C'\fR pragma or the \f(CW$^W\fR variable 
+if you must.  You should also always run under \f(CW\*(C`use strict\*(C'\fR or know the
+reason why not.  The \f(CW\*(C`use sigtrap\*(C'\fR and even \f(CW\*(C`use diagnostics\*(C'\fR pragmas
+may also prove useful.
+.PP
+Regarding aesthetics of code lay out, about the only thing Larry
+cares strongly about is that the closing curly bracket of
+a multi-line \s-1BLOCK\s0 should line up with the keyword that started the construct.
+Beyond that, he has other preferences that aren't so strong:
+.IP "\(bu" 4
+4\-column indent.
+.IP "\(bu" 4
+Opening curly on same line as keyword, if possible, otherwise line up.
+.IP "\(bu" 4
+Space before the opening curly of a multi-line \s-1BLOCK\s0.
+.IP "\(bu" 4
+One-line \s-1BLOCK\s0 may be put on one line, including curlies.
+.IP "\(bu" 4
+No space before the semicolon.
+.IP "\(bu" 4
+Semicolon omitted in \*(L"short\*(R" one-line \s-1BLOCK\s0.
+.IP "\(bu" 4
+Space around most operators.
+.IP "\(bu" 4
+Space around a \*(L"complex\*(R" subscript (inside brackets).
+.IP "\(bu" 4
+Blank lines between chunks that do different things.
+.IP "\(bu" 4
+Uncuddled elses.
+.IP "\(bu" 4
+No space between function name and its opening parenthesis.
+.IP "\(bu" 4
+Space after each comma.
+.IP "\(bu" 4
+Long lines broken after an operator (except \*(L"and\*(R" and \*(L"or\*(R").
+.IP "\(bu" 4
+Space after last parenthesis matching on current line.
+.IP "\(bu" 4
+Line up corresponding items vertically.
+.IP "\(bu" 4
+Omit redundant punctuation as long as clarity doesn't suffer.
+.PP
+Larry has his reasons for each of these things, but he doesn't claim that
+everyone else's mind works the same as his does.
+.PP
+Here are some other more substantive style issues to think about:
+.IP "\(bu" 4
+Just because you \fI\s-1CAN\s0\fR do something a particular way doesn't mean that
+you \fI\s-1SHOULD\s0\fR do it that way.  Perl is designed to give you several
+ways to do anything, so consider picking the most readable one.  For
+instance
+.Sp
+.Vb 1
+\&    open(FOO,$foo) || die "Can't open $foo: $!";
+.Ve
+.Sp
+is better than
+.Sp
+.Vb 1
+\&    die "Can't open $foo: $!" unless open(FOO,$foo);
+.Ve
+.Sp
+because the second way hides the main point of the statement in a
+modifier.  On the other hand
+.Sp
+.Vb 1
+\&    print "Starting analysis\en" if $verbose;
+.Ve
+.Sp
+is better than
+.Sp
+.Vb 1
+\&    $verbose && print "Starting analysis\en";
+.Ve
+.Sp
+because the main point isn't whether the user typed \fB\-v\fR or not.
+.Sp
+Similarly, just because an operator lets you assume default arguments
+doesn't mean that you have to make use of the defaults.  The defaults
+are there for lazy systems programmers writing one-shot programs.  If
+you want your program to be readable, consider supplying the argument.
+.Sp
+Along the same lines, just because you \fI\s-1CAN\s0\fR omit parentheses in many
+places doesn't mean that you ought to:
+.Sp
+.Vb 2
+\&    return print reverse sort num values %array;
+\&    return print(reverse(sort num (values(%array))));
+.Ve
+.Sp
+When in doubt, parenthesize.  At the very least it will let some poor
+schmuck bounce on the % key in \fBvi\fR.
+.Sp
+Even if you aren't in doubt, consider the mental welfare of the person
+who has to maintain the code after you, and who will probably put
+parentheses in the wrong place.
+.IP "\(bu" 4
+Don't go through silly contortions to exit a loop at the top or the
+bottom, when Perl provides the \f(CW\*(C`last\*(C'\fR operator so you can exit in
+the middle.  Just \*(L"outdent\*(R" it a little to make it more visible:
+.Sp
+.Vb 7
+\&    LINE:
+\&        for (;;) {
+\&            statements;
+\&          last LINE if $foo;
+\&            next LINE if /^#/;
+\&            statements;
+\&        }
+.Ve
+.IP "\(bu" 4
+Don't be afraid to use loop labels\*(--they're there to enhance
+readability as well as to allow multilevel loop breaks.  See the
+previous example.
+.IP "\(bu" 4
+Avoid using \fIgrep()\fR (or \fImap()\fR) or `backticks` in a void context, that is,
+when you just throw away their return values.  Those functions all
+have return values, so use them.  Otherwise use a \fIforeach()\fR loop or
+the \fIsystem()\fR function instead.
+.IP "\(bu" 4
+For portability, when using features that may not be implemented on
+every machine, test the construct in an eval to see if it fails.  If
+you know what version or patchlevel a particular feature was
+implemented, you can test \f(CW$]\fR (\f(CW$PERL_VERSION\fR in \f(CW\*(C`English\*(C'\fR) to see if it
+will be there.  The \f(CW\*(C`Config\*(C'\fR module will also let you interrogate values
+determined by the \fBConfigure\fR program when Perl was installed.
+.IP "\(bu" 4
+Choose mnemonic identifiers.  If you can't remember what mnemonic means,
+you've got a problem.
+.IP "\(bu" 4
+While short identifiers like \f(CW$gotit\fR are probably ok, use underscores to
+separate words.  It is generally easier to read \f(CW$var_names_like_this\fR than
+\&\f(CW$VarNamesLikeThis\fR, especially for non-native speakers of English. It's
+also a simple rule that works consistently with \s-1VAR_NAMES_LIKE_THIS\s0.
+.Sp
+Package names are sometimes an exception to this rule.  Perl informally
+reserves lowercase module names for \*(L"pragma\*(R" modules like \f(CW\*(C`integer\*(C'\fR and
+\&\f(CW\*(C`strict\*(C'\fR.  Other modules should begin with a capital letter and use mixed
+case, but probably without underscores due to limitations in primitive
+file systems' representations of module names as files that must fit into a
+few sparse bytes.
+.IP "\(bu" 4
+You may find it helpful to use letter case to indicate the scope
+or nature of a variable. For example:
+.Sp
+.Vb 3
+\&    $ALL_CAPS_HERE   constants only (beware clashes with perl vars!)
+\&    $Some_Caps_Here  package-wide global/static
+\&    $no_caps_here    function scope my() or local() variables
+.Ve
+.Sp
+Function and method names seem to work best as all lowercase.
+E.g., \f(CW$obj\fR\->\fIas_string()\fR.
+.Sp
+You can use a leading underscore to indicate that a variable or
+function should not be used outside the package that defined it.
+.IP "\(bu" 4
+If you have a really hairy regular expression, use the \f(CW\*(C`/x\*(C'\fR modifier and
+put in some whitespace to make it look a little less like line noise.
+Don't use slash as a delimiter when your regexp has slashes or backslashes.
+.IP "\(bu" 4
+Use the new \*(L"and\*(R" and \*(L"or\*(R" operators to avoid having to parenthesize
+list operators so much, and to reduce the incidence of punctuation
+operators like \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR.  Call your subroutines as if they were
+functions or list operators to avoid excessive ampersands and parentheses.
+.IP "\(bu" 4
+Use here documents instead of repeated \fIprint()\fR statements.
+.IP "\(bu" 4
+Line up corresponding things vertically, especially if it'd be too long
+to fit on one line anyway.
+.Sp
+.Vb 4
+\&    $IDX = $ST_MTIME;
+\&    $IDX = $ST_ATIME       if $opt_u;
+\&    $IDX = $ST_CTIME       if $opt_c;
+\&    $IDX = $ST_SIZE        if $opt_s;
+.Ve
+.Sp
+.Vb 3
+\&    mkdir $tmpdir, 0700 or die "can't mkdir $tmpdir: $!";
+\&    chdir($tmpdir)      or die "can't chdir $tmpdir: $!";
+\&    mkdir 'tmp',   0777 or die "can't mkdir $tmpdir/tmp: $!";
+.Ve
+.IP "\(bu" 4
+Always check the return codes of system calls.  Good error messages should
+go to \s-1STDERR\s0, include which program caused the problem, what the failed
+system call and arguments were, and (\s-1VERY\s0 \s-1IMPORTANT\s0) should contain the
+standard system error message for what went wrong.  Here's a simple but
+sufficient example:
+.Sp
+.Vb 1
+\&    opendir(D, $dir)     or die "can't opendir $dir: $!";
+.Ve
+.IP "\(bu" 4
+Line up your transliterations when it makes sense:
+.Sp
+.Vb 2
+\&    tr [abc]
+\&       [xyz];
+.Ve
+.IP "\(bu" 4
+Think about reusability.  Why waste brainpower on a one-shot when you
+might want to do something like it again?  Consider generalizing your
+code.  Consider writing a module or object class.  Consider making your
+code run cleanly with \f(CW\*(C`use strict\*(C'\fR and \f(CW\*(C`use warnings\*(C'\fR (or \fB\-w\fR) in
+effect.  Consider giving away your code.  Consider changing your whole
+world view.  Consider... oh, never mind.
+.IP "\(bu" 4
+Be consistent.
+.IP "\(bu" 4
+Be nice.
diff --git a/raw/man1/perltw.1 b/raw/man1/perltw.1
new file mode 100644
index 0000000..8668637
--- /dev/null
+++ b/raw/man1/perltw.1
@@ -0,0 +1,271 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLTW 1"
+.TH PERLTW 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH "NAME"
+perltw \- ���餤�� Perl ���n
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+�w��Ө� Perl ���Ѧa!
+.PP
+�q 5.8.0 ���}�l, Perl ��ƤF������ Unicode (�U��X) �䴩,
+�]�s�a�䴩�F�\e�h�ԤB�y�t�H�~���s�X�覡; \s-1CJK\s0 (������) �K�O�䤤���@����.
+Unicode �O��کʪ��з�, �չϲ[�\e�@�ɤW�Ҧ����r��: ���@��, �F��@��,
+�H�Ψ�̶����@�� (��þ��, �ԧQ�Ȥ�, ���ԧB��, �ƧB�Ӥ�, �L�פ�,
+�L�a�w��, ����). ���]�e�ǤF�h�ا@�~�t�λP���O (�p \s-1PC\s0 �γ�����).
+.PP
+Perl �����H Unicode �i��ާ@. �o��� Perl �������r���ƥi�� Unicode
+���; Perl ���禡�P��� (�Ҧp���W��ܦ����) �]��� Unicode �i��ާ@.
+�b��J�ο�X��, ���F�B�z�H Unicode ���e���s�X�覡�x�s�����, Perl
+���ѤF Encode �o�ӼҲ�, �i�H���A�����aŪ���μg�J�¦����s�X���.
+.PP
+Encode �����Ҳդ䴩�U�C���餤�媺�s�X�覡 ('big5' ��� 'big5\-eten'):
+.PP
+.Vb 3
+\&    big5-eten   Big5 �s�X (�t�ʤѩ����r��)
+\&    big5-hkscs  Big5 + ����~�r��, 2001 �~��
+\&    cp950       �r�X�� 950 (Big5 + �L�n�K�[���r��)
+.Ve
+.PP
+�|�Ҩӻ�, �N Big5 �s�X���ɮ��ন Unicode, ������J�U�C���O:
+.PP
+.Vb 1
+\&    perl -Mencoding=big5,STDOUT,utf8 -pe1 < file.big5 > file.utf8
+.Ve
+.PP
+Perl �]�����F \*(L"piconv\*(R", �@�䧹���H Perl �g�����r���ഫ�u��{��, �Ϊk�p�U:
+.PP
+.Vb 2
+\&    piconv -f big5 -t utf8 < file.big5 > file.utf8
+\&    piconv -f utf8 -t big5 < file.utf8 > file.big5
+.Ve
+.PP
+�t�~, �Q�� encoding �Ҳ�, �A�i�H�����g�X�H�r�Ŭ���쪺�{���X, �p�U�ҥ�:
+.PP
+.Vb 7
+\&    #!/usr/bin/env perl
+\&    # �Ұ� big5 �r��ѪR; �зǿ�X�J�μзǿ��~���]�� big5 �s�X
+\&    use encoding 'big5', STDIN => 'big5', STDOUT => 'big5';
+\&    print length("�d�m");            #  2 (���޸���ܦr��)
+\&    print length('�d�m');            #  4 (��޸���ܦ줸��)
+\&    print index("�ναл�", "να"); # -1 (���]�t���l�r��)
+\&    print index('�ναл�', 'να'); #  1 (�q�ĤG�Ӧ줸�ն}�l)
+.Ve
+.PP
+�b�̫�@�C�Ҥl��, \*(L"��\*(R" ���ĤG�Ӧ줸�ջP \*(L"��\*(R" ���Ĥ@�Ӧ줸�յ��X�� Big5
+�X�� \*(L"ν\*(R"; \*(L"��\*(R" ���ĤG�Ӧ줸�իh�P \*(L"��\*(R" ���Ĥ@�Ӧ줸�յ��X�� \*(L"α\*(R".
+�o�ѨM�F�H�e Big5 �X���B�z�W�`�������D.
+.Sh "�B�~������s�X"
+.IX Subsection "�B�~������s�X"
+�p�G�ݭn��h������s�X, �i�H�q \s-1CPAN\s0 (<http://www.cpan.org/>) �U��
+Encode::HanExtra �Ҳ�. ���ثe���ѤU�C�s�X�覡:
+.PP
+.Vb 4
+\&    cccii       1980 �~��ط|�������T�洫�X
+\&    euc-tw      Unix �����r�Ŷ�, �]�t CNS11643 ���� 1-7
+\&    big5plus    ����Ʀ�Ƨ޳N���s����|�� Big5+
+\&    big5ext     ����Ʀ�Ƨ޳N���s����|�� Big5e
+.Ve
+.PP
+�t�~, Encode::HanConvert �Ҳիh���ѤF²�c�ഫ�Ϊ���ؽs�X:
+.PP
+.Vb 2
+\&    big5-simp   Big5 ���餤��P Unicode ²�餤�夬��
+\&    gbk-trad    GBK ²�餤��P Unicode ���餤�夬��
+.Ve
+.PP
+�Y�Q�b \s-1GBK\s0 �P Big5 ��������, �аѦҸӼҲդ����� b2g.pl �P g2b.pl ���{��,
+�Φb�{�����ϥΤU�C�g�k:
+.PP
+.Vb 3
+\&    use Encode::HanConvert;
+\&    $euc_cn = big5_to_gb($big5); # �q Big5 �ର GBK
+\&    $big5 = gb_to_big5($euc_cn); # �q GBK �ର Big5
+.Ve
+.Sh "�i�@�B����T"
+.IX Subsection "�i�@�B����T"
+�аѦ� Perl �������j�q������� (�������O�έ^��g��), �ӾDzߧ�h����
+Perl ������, �H�� Unicode ���ϥΤ覡. ���L, �~�����귽�۷��״I:
+.Sh "���� Perl �귽����}"
+.IX Subsection "���� Perl �귽����}"
+.IP "<http://www.perl.com/>" 4
+.IX Item "<http://www.perl.com/>"
+Perl ������ (�Ѽڵ�§���q���@)
+.IP "<http://www.cpan.org/>" 4
+.IX Item "<http://www.cpan.org/>"
+Perl ��X���ú� (Comprehensive Perl Archive Network)
+.IP "<http://lists.perl.org/>" 4
+.IX Item "<http://lists.perl.org/>"
+Perl �l���׾¤@��
+.Sh "�Dz� Perl ����}"
+.IX Subsection "�Dz� Perl ����}"
+.IP "<http://www.oreilly.com.tw/chinese/perl/index.html>" 4
+.IX Item "<http://www.oreilly.com.tw/chinese/perl/index.html>"
+���餤�媩���ڵ�§ Perl ����
+.IP "<http://groups.google.com/groups?q=tw.bbs.comp.lang.perl>" 4
+.IX Item "<http://groups.google.com/groups?q=tw.bbs.comp.lang.perl>"
+�O�W Perl �s�u�Q�װ� (�]�N�O�U�j \s-1BBS\s0 �� Perl �s�u��)
+.Sh "Perl �ϥΪ̶��|"
+.IX Subsection "Perl �ϥΪ̶��|"
+.IP "<http://www.pm.org/groups/asia.shtml#Taiwan>" 4
+.IX Item "<http://www.pm.org/groups/asia.shtml#Taiwan>"
+�O�W Perl ���s�դ@��
+.IP "<http://irc.elixus.org/>" 4
+.IX Item "<http://irc.elixus.org/>"
+���ߨ�u�W��ѫ�
+.Sh "Unicode ������}"
+.IX Subsection "Unicode ������}"
+.IP "<http://www.unicode.org/>" 4
+.IX Item "<http://www.unicode.org/>"
+Unicode �dzN�Ƿ| (Unicode �зǪ���w��)
+.IP "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>" 4
+.IX Item "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>"
+Unix/Linux �W�� \s-1UTF\-8\s0 �� Unicode ���Ȱ�
+.Sh "����Ƹ�T"
+.IX Subsection "����Ƹ�T"
+.ie n .IP "������s ""���餤��"" ���s ""�c�餤��""?" 4
+.el .IP "������s ``���餤��'' ���s ``�c�餤��''?" 4
+.IX Item "������s ���餤�� ���s �c�餤��?"
+<http://www.csie.ntu.edu.tw/~b7506051/mozilla/faq.html#faqglossary>
+.IP "����Ƴn���p��" 4
+.IX Item "����Ƴn���p��"
+<http://www.cpatch.org/>
+.IP "Linux �n�餤��ƭp��" 4
+.IX Item "Linux �n�餤��ƭp��"
+<http://www.linux.org.tw/CLDP/>
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Encode, Encode::TW, encoding, perluniintro, perlunicode
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Jarkko Hietaniemi <jhi at iki.fi>
+.PP
+Autrijus Tang (��v�~) <autrijus at autrijus.org>
diff --git a/raw/man1/pg_controldata.1 b/raw/man1/pg_controldata.1
new file mode 100644
index 0000000..df0afed
--- /dev/null
+++ b/raw/man1/pg_controldata.1
@@ -0,0 +1,24 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_CONTROLDATA" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_controldata \- display control information of a PostgreSQL database cluster
+
+.SH SYNOPSIS
+.sp
+\fBpg_controldata\fR\fR [ \fR\fB\fIdatadir\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBpg_controldata\fR prints information initialized during
+\fBinitdb\fR, such as the catalog version and server locale.
+It also shows information about write-ahead logging and checkpoint 
+processing. This information is cluster-wide, and not specific to any one
+database.
+.PP
+This utility may only be run by the user who initialized the cluster because
+it requires read access to the data directory.
+You can specify the data directory on the command line, or use 
+the environment variable \fBPGDATA\fR.
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATA\fR
+Default data directory location
diff --git a/raw/man1/pg_ctl.1 b/raw/man1/pg_ctl.1
new file mode 100644
index 0000000..2b78e2d
--- /dev/null
+++ b/raw/man1/pg_ctl.1
@@ -0,0 +1,239 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_CTL" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_ctl \- start, stop, or restart a PostgreSQL server
+
+.SH SYNOPSIS
+.sp
+\fBpg_ctl\fR \fBstart\fR\fR [ \fR\fB-w \fR\fR]\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-l \fIfilename\fB \fR\fR]\fR\fR [ \fR\fB-o \fIoptions\fB \fR\fR]\fR\fR [ \fR\fB-p \fIpath\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBstop\fR\fR [ \fR\fB-W \fR\fR]\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-m \fR\fB s[mart]\fR | \fBf[ast]\fR | \fBi[mmediate]\fR\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBrestart\fR\fR [ \fR\fB-w \fR\fR]\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-m \fR\fB s[mart]\fR | \fBf[ast]\fR | \fBi[mmediate]\fR\fB \fR\fR]\fR\fR [ \fR\fB-o \fIoptions\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBreload\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBstatus\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBpg_ctl\fR is a utility for starting,
+stopping, or restarting the PostgreSQL
+backend server (\fBpostmaster\fR(1)), or displaying the
+status of a running server. Although the server can be started
+manually, \fBpg_ctl\fR encapsulates tasks such
+as redirecting log output and properly detaching from the terminal
+and process group. It also provides convenient options for
+controlled shutdown.
+.PP
+In \fBstart\fR mode, a new server is launched. The
+server is started in the background, and standard input is attached to
+\fI/dev/null\fR. The standard output and standard
+error are either appended to a log file (if the \fB-l\fR
+option is used), or redirected to \fBpg_ctl\fR's 
+standard output (not standard error). If no log file is chosen, the 
+standard output of \fBpg_ctl\fR should be redirected 
+to a file or piped to another process, for example a log rotating program,
+otherwise \fBpostmaster\fR will write its output to the controlling
+terminal (from the background) and will not leave the shell's
+process group.
+.PP
+In \fBstop\fR mode, the server that is running in
+the specified data directory is shut down. Three different
+shutdown methods can be selected with the \fB-m\fR
+option: ``Smart'' mode waits for all the clients to
+disconnect. This is the default. ``Fast'' mode does
+not wait for clients to disconnect. All active transactions are
+rolled back and clients are forcibly disconnected, then the
+server is shut down. ``Immediate'' mode will abort
+all server processes without a clean shutdown. This will lead to 
+a recovery run on restart.
+.PP
+\fBrestart\fR mode effectively executes a stop followed
+by a start. This allows changing the \fBpostmaster\fR
+command-line options.
+.PP
+\fBreload\fR mode simply sends the
+\fBpostmaster\fR process a \fBSIGHUP\fR
+signal, causing it to reread its configuration files
+(\fIpostgresql.conf\fR,
+\fIpg_hba.conf\fR, etc.). This allows changing of
+configuration-file options that do not require a complete restart
+to take effect.
+.PP
+\fBstatus\fR mode checks whether a server is running in
+the specified data directory. If it is, the PID
+and the command line options that were used to invoke it are
+displayed.
+.SH "OPTIONS"
+.PP
+.TP
+\fB-D \fIdatadir\fB\fR
+Specifies the file system location of the database files. If
+this is omitted, the environment variable
+\fBPGDATA\fR is used.
+.TP
+\fB-l \fIfilename\fB\fR
+Append the server log output to
+\fIfilename\fR. If the file does not
+exist, it is created. The \fBumask\fR is set to 077, so access to
+the log file from other users is disallowed by default.
+.TP
+\fB-m \fImode\fB\fR
+Specifies the shutdown mode. \fImode\fR
+may be smart, fast, or
+immediate, or the first letter of one of
+these three.
+.TP
+\fB-o \fIoptions\fB\fR
+Specifies options to be passed directly to the
+\fBpostmaster\fR command.
+
+The options are usually surrounded by single or double
+quotes to ensure that they are passed through as a group.
+.TP
+\fB-p \fIpath\fB\fR
+Specifies the location of the \fIpostmaster\fR
+executable. By default the \fIpostmaster\fR executable is taken from the same
+directory as \fBpg_ctl\fR, or failing that, the hard-wired
+installation directory. It is not necessary to use this
+option unless you are doing something unusual and get errors
+that the \fIpostmaster\fR executable was not found.
+.TP
+\fB-s\fR
+Only print errors, no informational messages.
+.TP
+\fB-w\fR
+Wait for the start or shutdown to complete. Times out after
+60 seconds. This is the default for shutdowns. A successful 
+shutdown is indicated by removal of the PID 
+file. For starting up, a successful \fBpsql -l\fR 
+indicates success. \fBpg_ctl\fR will attempt to 
+use the proper port for \fBpsql\fR. If the environment variable 
+\fBPGPORT\fR exists, that is used. Otherwise, it will see if a port 
+has been set in the \fIpostgresql.conf\fR file. 
+If neither of those is used, it will use the default port that 
+PostgreSQL was compiled with 
+(5432 by default).
+.TP
+\fB-W\fR
+Do not wait for start or shutdown to complete. This is the
+default for starts and restarts.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATA\fR
+Default data directory location.
+.TP
+\fBPGPORT\fR
+Default port for \fBpsql\fR(1) (used by the -w option).
+.PP
+For others, see \fBpostmaster\fR(1).
+.PP
+.SH "FILES"
+.TP
+\fB\fIpostmaster.pid\fB\fR
+The existence of this file in the data directory is used to help
+\fBpg_ctl\fR determine if the server is
+currently running or not.
+.TP
+\fB\fIpostmaster.opts.default\fB\fR
+If this file exists in the data directory,
+\fBpg_ctl\fR (in \fBstart\fR
+mode) will pass the contents of the file as options to the
+\fBpostmaster\fR command, unless overridden by the
+\fB-o\fR option.
+.TP
+\fB\fIpostmaster.opts\fB\fR
+If this file exists in the data directory,
+\fBpg_ctl\fR (in \fBrestart\fR mode) 
+will pass the contents of the file as options to the 
+\fBpostmaster\fR, unless overridden 
+by the \fB-o\fR option. The contents of this file 
+are also displayed in \fBstatus\fR mode.
+.TP
+\fB\fIpostgresql.conf\fB\fR
+This file, located in the data directory, is parsed to find the
+proper port to use with \fBpsql\fR when the
+\fB-w\fR is given in \fBstart\fR mode.
+.SH "NOTES"
+.PP
+Waiting for complete start is not a well-defined operation and may
+fail if access control is set up so that a local client cannot
+connect without manual interaction (e.g., password authentication).
+.SH "EXAMPLES"
+.SS "STARTING THE SERVER"
+.PP
+To start up a server:
+.sp
+.nf
+$ \fBpg_ctl start\fR
+.sp
+.fi
+.PP
+An example of starting the server, blocking until the server has
+come up is:
+.sp
+.nf
+$ \fBpg_ctl -w start\fR
+.sp
+.fi
+.PP
+For a server using port 5433, and
+running without \fBfsync\fR, use:
+.sp
+.nf
+$ \fBpg_ctl -o "-F -p 5433" start\fR
+.sp
+.fi
+.SS "STOPPING THE SERVER"
+.PP
+.sp
+.nf
+$ \fBpg_ctl stop\fR
+.sp
+.fi
+stops the server. Using the \fB-m\fR switch allows one
+to control \fBhow\fR the backend shuts down.
+.SS "RESTARTING THE SERVER"
+.PP
+Restarting the server is almost equivalent to stopping the
+server and starting it again
+except that \fBpg_ctl\fR saves and reuses the command line options that
+were passed to the previously running instance. To restart
+the server in the simplest form, use:
+.sp
+.nf
+$ \fBpg_ctl restart\fR
+.sp
+.fi
+.PP
+To restart server,
+waiting for it to shut down and to come up:
+.sp
+.nf
+$ \fBpg_ctl -w restart\fR
+.sp
+.fi
+.PP
+To restart using port 5433 and disabling \fBfsync\fR after restarting:
+.sp
+.nf
+$ \fBpg_ctl -o "-F -p 5433" restart\fR
+.sp
+.fi
+.SS "SHOWING THE SERVER STATUS"
+.PP
+Here is a sample status output from
+\fBpg_ctl\fR:
+.sp
+.nf
+$ \fBpg_ctl status\fR
+pg_ctl: postmaster is running (pid: 13718)
+Command line was:
+/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
+.sp
+.fi
+This is the command line that would be invoked in restart mode.
+.SH "SEE ALSO"
+.PP
+\fBpostmaster\fR(1)
diff --git a/raw/man1/pg_dump.1 b/raw/man1/pg_dump.1
new file mode 100644
index 0000000..031c98e
--- /dev/null
+++ b/raw/man1/pg_dump.1
@@ -0,0 +1,411 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_DUMP" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pg_dump \- extract a PostgreSQL database into a script file or other archive file
+
+.SH SYNOPSIS
+.sp
+\fBpg_dump\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBpg_dump\fR is a utility for backing up a
+PostgreSQL database. It makes consistent
+backups even if the database is being used concurrently.
+\fBpg_dump\fR does not block other users
+accessing the database (readers or writers).
+.PP
+Dumps can be output in script or archive file formats. The script
+files are in plain-text format and contain the SQL commands required
+to reconstruct the database to the state it was in at the time it was
+saved. To restore these scripts, use \fBpsql\fR(1). They
+can be used to reconstruct the database even on other machines and
+other architectures, with some modifications even on other SQL
+database products.
+.PP
+The alternative archive file formats that are meant to be used with
+\fBpg_restore\fR(1) to rebuild the database, and they also
+allow \fBpg_restore\fR to be selective about
+what is restored, or even to reorder the items prior to being
+restored. The archive files are also designed to be portable across
+architectures.
+.PP
+When used with one of the archive file formats and combined with
+\fBpg_restore\fR,
+\fBpg_dump\fR provides a flexible archival and
+transfer mechanism. \fBpg_dump\fR can be used to
+backup an entire database, then \fBpg_restore\fR
+can be used to examine the archive and/or select which parts of the
+database are to be restored. The most flexible output file format is
+the ``custom'' format (\fB-Fc\fR). It allows
+for selection and reordering of all archived items, and is compressed
+by default. The \fBtar\fR format
+(\fB-Ft\fR) is not compressed and it is not possible to
+reorder data when loading, but it is otherwise quite flexible;
+moreover, it can be manipulated with other tools such as
+\fBtar\fR.
+.PP
+While running \fBpg_dump\fR, one should examine the
+output for any warnings (printed on standard error), especially in
+light of the limitations listed below.
+.SH "OPTIONS"
+.PP
+The following command-line options are used to control the output format.
+.TP
+\fB\fIdbname\fB\fR
+Specifies the name of the database to be dumped. If this is
+not specified, the environment variable
+\fBPGDATABASE\fR is used. If that is not set, the
+user name specified for the connection is used.
+.TP
+\fB-a\fR
+.TP
+\fB--data-only\fR
+Dump only the data, not the schema (data definitions).
+
+This option is only meaningful for the plain-text format. For
+the other formats, you may specify the option when you
+call \fBpg_restore\fR.
+.TP
+\fB-b\fR
+.TP
+\fB--blobs\fR
+Include large objects in dump.
+.TP
+\fB-c\fR
+.TP
+\fB--clean\fR
+Output commands to clean (drop)
+database objects prior to (the commands for) creating them.
+
+This option is only meaningful for the plain-text format. For
+the other formats, you may specify the option when you
+call \fBpg_restore\fR.
+.TP
+\fB-C\fR
+.TP
+\fB--create\fR
+Begin the output with a command to create the
+database itself and reconnect to the created database. (With a
+script of this form, it doesn't matter which database you connect
+to before running the script.)
+
+This option is only meaningful for the plain-text format. For
+the other formats, you may specify the option when you
+call \fBpg_restore\fR.
+.TP
+\fB-d\fR
+.TP
+\fB--inserts\fR
+Dump data as \fBINSERT\fR commands (rather
+than \fBCOPY\fR). This will make restoration very
+slow, but it makes the archives more portable to other SQL database
+packages.
+.TP
+\fB-D\fR
+.TP
+\fB--column-inserts\fR
+.TP
+\fB--attribute-inserts\fR
+Dump data as \fBINSERT\fR commands with explicit
+column names (INSERT INTO
+\fItable\fR
+(\fIcolumn\fR, ...) VALUES
+\&...). This will make restoration very slow,
+but it is necessary if you desire to rearrange the column ordering.
+.TP
+\fB-f \fIfile\fB\fR
+.TP
+\fB--file=\fIfile\fB\fR
+Send output to the specified file. If this is omitted, the
+standard output is used.
+.TP
+\fB-F \fIformat\fB\fR
+.TP
+\fB--format=\fIformat\fB\fR
+Selects the format of the output.
+\fIformat\fR can be one of the following:
+.RS
+.TP
+\fBp\fR
+Output a plain-text SQL script file (default)
+.TP
+\fBt\fR
+Output a \fBtar\fR archive suitable for input into 
+\fBpg_restore\fR. Using this archive format 
+allows reordering and/or exclusion of schema elements 
+at the time the database is restored. It is also possible to limit 
+which data is reloaded at restore time.
+.TP
+\fBc\fR
+Output a custom archive suitable for input into 
+\fBpg_restore\fR. This is the most flexible 
+format in that it allows reordering of data load as well 
+as schema elements. This format is also compressed by default.
+.RE
+.PP
+.TP
+\fB-i\fR
+.TP
+\fB--ignore-version\fR
+Ignore version mismatch between
+\fBpg_dump\fR and the database server.
+
+\fBpg_dump\fR can handle databases from
+previous releases of PostgreSQL, but very old
+versions are not supported anymore (currently prior to 7.0).
+Use this option if you need to override the version check (and
+if \fBpg_dump\fR then fails, don't say
+you weren't warned).
+.TP
+\fB-n \fInamespace\fB\fR
+.TP
+\fB--schema=\fIschema\fB\fR
+Dump the contents of \fIschema\fR
+only. If this option is not specified, all non-system schemas
+in the target database will be dumped.
+.sp
+.RS
+.B "Note:"
+In this mode, \fBpg_dump\fR makes no
+attempt to dump any other database objects that objects in the
+selected schema may depend upon. Therefore, there is no
+guarantee that the results of a single-schema dump can be
+successfully restored by themselves into a clean database.
+.RE
+.sp
+.TP
+\fB-o\fR
+.TP
+\fB--oids\fR
+Dump object identifiers (OIDs) for every
+table. Use this option if your application references the OID
+columns in some way (e.g., in a foreign key constraint).
+Otherwise, this option should not be used.
+.TP
+\fB-O\fR
+.TP
+\fB--no-owner\fR
+Do not output commands to set
+ownership of objects to match the original database.
+By default, \fBpg_dump\fR issues
+\fBSET SESSION AUTHORIZATION\fR
+statements to set ownership of created schema elements.
+These statements
+will fail when the script is run unless it is started by a superuser
+(or the same user that owns all of the objects in the script).
+To make a script that can be restored by any user, but will give
+that user ownership of all the objects, specify \fB-O\fR.
+
+This option is only meaningful for the plain-text format. For
+the other formats, you may specify the option when you
+call \fBpg_restore\fR.
+.TP
+\fB-R\fR
+.TP
+\fB--no-reconnect\fR
+This option is obsolete but still accepted for backwards
+compatibility.
+.TP
+\fB-s\fR
+.TP
+\fB--schema-only\fR
+Dump only the schema (data definitions), no data.
+.TP
+\fB-S \fIusername\fB\fR
+.TP
+\fB--superuser=\fIusername\fB\fR
+Specify the superuser user name to use when disabling triggers.
+This is only relevant if \fB--disable-triggers\fR is used.
+(Usually, it's better to leave this out, and instead start the
+resulting script as superuser.)
+.TP
+\fB-t \fItable\fB\fR
+.TP
+\fB--table=\fItable\fB\fR
+Dump data for \fItable\fR
+only. It is possible for there to be
+multiple tables with the same name in different schemas; if that
+is the case, all matching tables will be dumped. Specify both
+\fB--schema\fR and \fB--table\fR to select just one table.
+.sp
+.RS
+.B "Note:"
+In this mode, \fBpg_dump\fR makes no
+attempt to dump any other database objects that the selected table
+may depend upon. Therefore, there is no guarantee
+that the results of a single-table dump can be successfully
+restored by themselves into a clean database.
+.RE
+.sp
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+Specifies verbose mode. This will cause
+\fBpg_dump\fR to print progress messages
+to standard error.
+.TP
+\fB-x\fR
+.TP
+\fB--no-privileges\fR
+.TP
+\fB--no-acl\fR
+Prevent dumping of access privileges (grant/revoke commands).
+.TP
+\fB-X use-set-session-authorization\fR
+.TP
+\fB--use-set-session-authorization\fR
+This option is obsolete but still accepted for backwards
+compatibility.
+\fBpg_dump\fR now always behaves in the
+way formerly selected by this option.
+.TP
+\fB-X disable-triggers\fR
+.TP
+\fB--disable-triggers\fR
+This option is only relevant when creating a data-only dump.
+It instructs \fBpg_dump\fR to include commands
+to temporarily disable triggers on the target tables while
+the data is reloaded. Use this if you have referential
+integrity checks or other triggers on the tables that you
+do not want to invoke during data reload.
+
+Presently, the commands emitted for \fB--disable-triggers\fR
+must be done as superuser. So, you should also specify
+a superuser name with \fB-S\fR, or preferably be careful to
+start the resulting script as a superuser.
+
+This option is only meaningful for the plain-text format. For
+the other formats, you may specify the option when you
+call \fBpg_restore\fR.
+.TP
+\fB-Z \fI0..9\fB\fR
+.TP
+\fB--compress=\fI0..9\fB\fR
+Specify the compression level to use in archive formats that
+support compression. (Currently only the custom archive
+format supports compression.)
+.PP
+.PP
+The following command-line options control the database connection parameters.
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host=\fIhost\fB\fR
+Specifies the host name of the machine on which the server is
+running. If the value begins with a slash, it is used as the
+directory for the Unix domain socket. The default is taken
+from the \fBPGHOST\fR environment variable, if set,
+else a Unix domain socket connection is attempted.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port=\fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file
+extension on which the server is listening for connections.
+Defaults to the \fBPGPORT\fR environment variable, if
+set, or a compiled-in default.
+.TP
+\fB-U \fIusername\fB\fR
+Connect as the given user
+.TP
+\fB-W\fR
+Force a password prompt. This should happen automatically if
+the server requires password authentication.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters.
+.SH "DIAGNOSTICS"
+.PP
+\fBpg_dump\fR internally executes
+\fBSELECT\fR statements. If you have problems running
+\fBpg_dump\fR, make sure you are able to
+select information from the database using, for example, \fBpsql\fR(1).
+.SH "NOTES"
+.PP
+If your database cluster has any local additions to the template1 database,
+be careful to restore the output of \fBpg_dump\fR into a
+truly empty database; otherwise you are likely to get errors due to
+duplicate definitions of the added objects. To make an empty database
+without any local additions, copy from template0 not template1,
+for example:
+.sp
+.nf
+CREATE DATABASE foo WITH TEMPLATE template0;
+.sp
+.fi
+.PP
+\fBpg_dump\fR has a few limitations:
+.TP 0.2i
+\(bu
+When dumping a single table or as plain text, \fBpg_dump\fR 
+does not handle large objects. Large objects must be dumped with the
+entire database using one of the non-text archive formats.
+.TP 0.2i
+\(bu
+When a data-only dump is chosen and the option
+\fB--disable-triggers\fR is used,
+\fBpg_dump\fR emits commands to disable
+triggers on user tables before inserting the data and commands
+to re-enable them after the data has been inserted. If the
+restore is stopped in the middle, the system catalogs may be
+left in the wrong state.
+.PP
+.PP
+Members of tar archives are limited to a size less than 8 GB.
+(This is an inherent limitation of the tar file format.) Therefore
+this format cannot be used if the textual representation of a table
+exceeds that size. The total size of a tar archive and any of the
+other output formats is not limited, except possibly by the
+operating system.
+.PP
+Once restored, it is wise to run \fBANALYZE\fR on each
+restored table so the optimizer has useful statistics.
+.SH "EXAMPLES"
+.PP
+To dump a database:
+.sp
+.nf
+$ \fBpg_dump mydb > db.out\fR
+.sp
+.fi
+.PP
+To reload this database:
+.sp
+.nf
+$ \fBpsql -d database -f db.out\fR
+.sp
+.fi
+.PP
+To dump a database called mydb that contains
+large objects to a \fItar\fR file:
+.sp
+.nf
+$ \fBpg_dump -Ft -b mydb > db.tar\fR
+.sp
+.fi
+.PP
+To reload this database (with large objects) to an
+existing database called newdb:
+.sp
+.nf
+$ \fBpg_restore -d newdb db.tar\fR
+.sp
+.fi
+.SH "HISTORY"
+.PP
+The \fBpg_dump\fR utility first appeared in
+\fBPostgres95\fR release 0.02. The
+non-plain-text output formats were introduced in
+PostgreSQL release 7.1.
+.SH "SEE ALSO"
+\fBpg_dumpall\fR(1), \fBpg_restore\fR(1), \fBpsql\fR(1)
+
diff --git a/raw/man1/pg_dumpall.1 b/raw/man1/pg_dumpall.1
new file mode 100644
index 0000000..b643f22
--- /dev/null
+++ b/raw/man1/pg_dumpall.1
@@ -0,0 +1,187 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_DUMPALL" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pg_dumpall \- extract a PostgreSQL database cluster into a script file
+
+.SH SYNOPSIS
+.sp
+\fBpg_dumpall\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBpg_dumpall\fR is a utility for writing out
+(``dumping'') all PostgreSQL databases
+of a cluster into one script file. The script file contains
+SQL commands that can be used as input to \fBpsql\fR(1) to restore the databases. It does this by
+calling \fBpg_dump\fR(1) for each database in a cluster.
+\fBpg_dumpall\fR also dumps global objects
+that are common to all databases.
+(\fBpg_dump\fR does not save these objects.)
+This currently includes information about database users and
+groups, and access permissions that apply to databases as a whole.
+.PP
+Thus, \fBpg_dumpall\fR is an integrated
+solution for backing up your databases. But note a limitation:
+it cannot dump ``large objects'', since
+\fBpg_dump\fR cannot dump such objects into
+text files. If you have databases containing large objects,
+they should be dumped using one of \fBpg_dump\fR's
+non-text output modes.
+.PP
+Since \fBpg_dumpall\fR reads tables from all
+databases you will most likely have to connect as a database
+superuser in order to produce a complete dump. Also you will need
+superuser privileges to execute the saved script in order to be
+allowed to add users and groups, and to create databases.
+.PP
+The SQL script will be written to the standard output. Shell
+operators should be used to redirect it into a file.
+.PP
+\fBpg_dumpall\fR needs to connect several
+times to the PostgreSQL server and might be asking for
+a password each time. It is convenient to have a
+\fI$HOME/.pgpass\fR file in such cases.
+.SH "OPTIONS"
+.PP
+The following command-line options are used to control the content and
+format of the output.
+.TP
+\fB-a\fR
+.TP
+\fB--data-only\fR
+Dump only the data, not the schema (data definitions).
+.TP
+\fB-c\fR
+.TP
+\fB--clean\fR
+Include SQL commands to clean (drop) the databases before
+recreating them.
+.TP
+\fB-d\fR
+.TP
+\fB--inserts\fR
+Dump data as \fBINSERT\fR commands (rather
+than \fBCOPY\fR). This will make restoration very
+slow, but it makes the output more portable to other SQL database
+packages.
+.TP
+\fB-D\fR
+.TP
+\fB--column-inserts\fR
+.TP
+\fB--attribute-inserts\fR
+Dump data as \fBINSERT\fR commands with explicit
+column names (INSERT INTO
+\fItable\fR
+(\fIcolumn\fR, ...) VALUES
+\&...). This will make restoration very slow,
+but it is necessary if you desire to rearrange column ordering.
+.TP
+\fB-g\fR
+.TP
+\fB--globals-only\fR
+Dump only global objects (users and groups), no databases.
+.TP
+\fB-i\fR
+.TP
+\fB--ignore-version\fR
+Ignore version mismatch between
+\fBpg_dumpall\fR and the database server.
+
+\fBpg_dumpall\fR can handle databases
+from previous releases of PostgreSQL, but very
+old versions are not supported anymore (currently prior to
+7.0). Use this option if you need to override the version
+check (and if \fBpg_dumpall\fR then
+fails, don't say you weren't warned).
+.TP
+\fB-o\fR
+.TP
+\fB--oids\fR
+Dump object identifiers (OIDs) for every
+table. Use this option if your application references the OID
+columns in some way (e.g., in a foreign key constraint).
+Otherwise, this option should not be used.
+.TP
+\fB-s\fR
+.TP
+\fB--schema-only\fR
+Dump only the schema (data definitions), no data.
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+Specifies verbose mode. This will cause
+\fBpg_dumpall\fR to print progress
+messages to standard error.
+.TP
+\fB-x\fR
+.TP
+\fB--no-privileges\fR
+.TP
+\fB--no-acl\fR
+Prevent dumping of access privileges (grant/revoke commands).
+.PP
+.PP
+The following command-line options control the database connection parameters.
+.TP
+\fB-h \fIhost\fB\fR
+Specifies the host name of the machine on which the database
+server is running. If the value begins with a slash, it is
+used as the directory for the Unix domain socket. The default
+is taken from the \fBPGHOST\fR environment variable,
+if set, else a Unix domain socket connection is attempted.
+.TP
+\fB-p \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file
+extension on which the server is listening for connections.
+Defaults to the \fBPGPORT\fR environment variable, if
+set, or a compiled-in default.
+.TP
+\fB-U \fIusername\fB\fR
+Connect as the given user.
+.TP
+\fB-W\fR
+Force a password prompt. This should happen automatically if
+the server requires password authentication.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "NOTES"
+.PP
+Since \fBpg_dumpall\fR calls
+\fBpg_dump\fR internally, some diagnostic
+messages will refer to \fBpg_dump\fR.
+.PP
+Once restored, it is wise to run \fBANALYZE\fR on each
+database so the optimizer has useful statistics. You
+can also run \fBvacuumdb -a -z\fR to analyze all
+databases.
+.SH "EXAMPLES"
+.PP
+To dump all databases:
+.sp
+.nf
+$ \fBpg_dumpall > db.out\fR
+.sp
+.fi
+.PP
+To reload this database use, for example:
+.sp
+.nf
+$ \fBpsql -f db.out template1\fR
+.sp
+.fi
+(It is not important to which database you connect here since the
+script file created by \fBpg_dumpall\fR will
+contain the appropriate commands to create and connect to the saved
+databases.)
+.SH "SEE ALSO"
+.PP
+\fBpg_dump\fR(1). Check there for details on possible
+error conditions.
diff --git a/raw/man1/pg_resetxlog.1 b/raw/man1/pg_resetxlog.1
new file mode 100644
index 0000000..b08d65b
--- /dev/null
+++ b/raw/man1/pg_resetxlog.1
@@ -0,0 +1,80 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_RESETXLOG" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_resetxlog \- reset the write-ahead log and other control information of a PostgreSQL database cluster
+.SH SYNOPSIS
+.sp
+\fBpg_resetxlog\fR\fR [ \fR\fB -f  \fR\fR]\fR\fR [ \fR\fB -n  \fR\fR]\fR\fR [ \fR\fB -o \fIoid\fB  \fR\fR]\fR\fR [ \fR\fB -x \fIxid\fB  \fR\fR]\fR\fR [ \fR\fB -l \fIfileid\fB,\fIseg\fB  \fR\fR]\fR \fB\fIdatadir\fB\fR
+.SH "DESCRIPTION"
+.PP
+\fBpg_resetxlog\fR clears the write-ahead log (WAL) and
+optionally resets some other control information (stored in the
+\fIpg_control\fR file). This function is sometimes needed
+if these files have become corrupted. It should be used only as a
+last resort, when the server will not start due to such corruption.
+.PP
+After running this command, it should be possible to start the server,
+but bear in mind that the database may contain inconsistent data due to
+partially-committed transactions. You should immediately dump your data,
+run \fBinitdb\fR, and reload. After reload, check for
+inconsistencies and repair as needed.
+.PP
+This utility can only be run by the user who installed the server, because
+it requires read/write access to the data directory.
+For safety reasons, you must specify the data directory on the command line.
+\fBpg_resetxlog\fR does not use the environment variable
+\fBPGDATA\fR.
+.PP
+If \fBpg_resetxlog\fR complains that it cannot determine
+valid data for \fIpg_control\fR, you can force it to proceed anyway
+by specifying the -f (force) switch. In this case plausible
+values will be substituted for the missing data. Most of the fields can be
+expected to match, but manual assistance may be needed for the next OID,
+next transaction ID, WAL starting address, and database locale fields.
+The first three of these can be set using the switches discussed below.
+\fBpg_resetxlog\fR's own environment is the source for its
+guess at the locale fields; take care that \fBLANG\fR and so forth
+match the environment that \fBinitdb\fR was run in.
+If you are not able to determine correct values for all these fields,
+-f can still be used, but
+the recovered database must be treated with even more suspicion than
+usual: an immediate dump and reload is imperative. \fBDo not\fR
+execute any data-modifying operations in the database before you dump;
+as any such action is likely to make the corruption worse.
+.PP
+The -o, -x, and -l switches allow
+the next OID, next transaction ID, and WAL starting address values to
+be set manually. These are only needed when
+\fBpg_resetxlog\fR is unable to determine appropriate values
+by reading \fIpg_control\fR. A safe value for the
+next transaction ID may be determined by looking for the numerically largest
+file name in the directory \fIpg_clog\fR under the data directory, adding one,
+and then multiplying by 1048576. Note that the file names are in
+hexadecimal. It is usually easiest to specify the switch value in
+hexadecimal too. For example, if \fI0011\fR is the largest entry
+in \fIpg_clog\fR, -x 0x1200000 will work (five trailing
+zeroes provide the proper multiplier).
+The WAL starting address should be
+larger than any file number currently existing in
+the directory \fIpg_xlog\fR under the data directory. The addresses are also in hexadecimal and
+have two parts. For example, if \fI000000FF0000003A\fR is the
+largest entry in \fIpg_xlog\fR, -l 0xFF,0x3B will work.
+There is no comparably easy way to determine a next OID that's beyond
+the largest one in the database, but fortunately it is not critical to
+get the next-OID setting right.
+.PP
+The -n (no operation) switch instructs
+\fBpg_resetxlog\fR to print the values reconstructed from
+\fIpg_control\fR and then exit without modifying anything.
+This is mainly a debugging tool, but may be useful as a sanity check
+before allowing \fBpg_resetxlog\fR to proceed for real.
+.SH "NOTES"
+.PP
+This command must not be used when the server is 
+running. \fBpg_resetxlog\fR will refuse to start up if
+it finds a server lock file in the data directory. If the
+server crashed then a lock file may have been left
+behind; in that case you can remove the lock file to allow
+\fBpg_resetxlog\fR to run. But before you do
+so, make doubly certain that there
+is no \fBpostmaster\fR nor any backend server process still alive.
diff --git a/raw/man1/pg_restore.1 b/raw/man1/pg_restore.1
new file mode 100644
index 0000000..205063a
--- /dev/null
+++ b/raw/man1/pg_restore.1
@@ -0,0 +1,405 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_RESTORE" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pg_restore \- restore a PostgreSQL database from an archive file created by pg_dump
+
+.SH SYNOPSIS
+.sp
+\fBpg_restore\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIfilename\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBpg_restore\fR is a utility for restoring a
+PostgreSQL database from an archive
+created by \fBpg_dump\fR(1) in one of the non-plain-text
+formats. It will issue the commands necessary to reconstruct the
+database to the state it was in at the time it was saved. The
+archive files also allow \fBpg_restore\fR to
+be selective about what is restored, or even to reorder the items
+prior to being restored. The archive files are designed to be
+portable across architectures.
+.PP
+\fBpg_restore\fR can operate in two modes: If
+a database name is specified, the archive is restored directly into
+the database. (Large objects can only be restored by using such a direct
+database connection.) Otherwise, a script containing the SQL
+commands necessary to rebuild the database is created (and written
+to a file or standard output), similar to the ones created by the
+\fBpg_dump\fR plain text format. Some of the
+options controlling the script output are therefore analogous to
+\fBpg_dump\fR options.
+.PP
+Obviously, \fBpg_restore\fR cannot restore information
+that is not present in the archive file. For instance, if the
+archive was made using the ``dump data as
+\fBINSERT\fR commands'' option,
+\fBpg_restore\fR will not be able to load the data
+using \fBCOPY\fR statements.
+.SH "OPTIONS"
+.PP
+\fBpg_restore\fR accepts the following command
+line arguments.
+.TP
+\fB\fIfilename\fB\fR
+Specifies the location of the archive file to be restored.
+If not specified, the standard input is used.
+.TP
+\fB-a\fR
+.TP
+\fB--data-only\fR
+Restore only the data, not the schema (data definitions).
+.TP
+\fB-c\fR
+.TP
+\fB--clean\fR
+Clean (drop) database objects before recreating them.
+.TP
+\fB-C\fR
+.TP
+\fB--create\fR
+Create the database before restoring into it. (When this
+option is used, the database named with \fB-d\fR is
+used only to issue the initial CREATE DATABASE
+command. All data is restored into the database name that
+appears in the archive.)
+.TP
+\fB-d \fIdbname\fB\fR
+.TP
+\fB--dbname=\fIdbname\fB\fR
+Connect to database \fIdbname\fR and restore directly
+into the database.
+.TP
+\fB-f \fIfilename\fB\fR
+.TP
+\fB--file=\fIfilename\fB\fR
+Specify output file for generated script, or for the listing
+when used with \fB-l\fR. Default is the standard
+output.
+.TP
+\fB-F \fIformat\fB\fR
+.TP
+\fB--format=\fIformat\fB\fR
+Specify format of the archive. It is not necessary to specify
+the format, since \fBpg_restore\fR will
+determine the format automatically. If specified, it can be
+one of the following:
+.RS
+.TP
+\fBt\fR
+The archive is a \fBtar\fR archive. Using this
+archive format allows reordering and/or exclusion of schema
+elements at the time the database is restored. It is also
+possible to limit which data is reloaded at restore time.
+.TP
+\fBc\fR
+The archive is in the custom format of
+\fBpg_dump\fR. This is the most
+flexible format in that it allows reordering of data load
+as well as schema elements. This format is also compressed
+by default.
+.RE
+.PP
+.TP
+\fB-i\fR
+.TP
+\fB--ignore-version\fR
+Ignore database version checks.
+.TP
+\fB-I \fIindex\fB\fR
+.TP
+\fB--index=\fIindex\fB\fR
+Restore definition of named index only.
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+List the contents of the archive. The output of this operation
+can be used with the \fB-L\fR option to restrict
+and reorder the items that are restored.
+.TP
+\fB-L \fIlist-file\fB\fR
+.TP
+\fB--use-list=\fIlist-file\fB\fR
+Restore elements in \fIlist-file\fR only, and in the
+order they appear in the file. Lines can be moved and may also
+be commented out by placing a ; at the
+start of the line. (See below for examples.)
+.TP
+\fB-N\fR
+.TP
+\fB--orig-order\fR
+Restore items in the order they were originally generated within
+\fBpg_dump\fR. This option has no known
+practical use, since \fBpg_dump\fR generates
+the items in an order convenient to it, which is unlikely to be a
+safe order for restoring them. (This is \fBnot\fR the order
+in which the items are ultimately listed in the archive's table of
+contents.) See also \fB-r\fR.
+.TP
+\fB-o\fR
+.TP
+\fB--oid-order\fR
+Restore items in order by OID. This option is of limited usefulness,
+since OID is only an approximate indication of original creation
+order. This option overrides \fB-N\fR if both are specified.
+See also \fB-r\fR.
+.TP
+\fB-O\fR
+.TP
+\fB--no-owner\fR
+Do not output commands to set
+ownership of objects to match the original database.
+By default, \fBpg_restore\fR issues
+\fBSET SESSION AUTHORIZATION\fR
+statements to set ownership of created schema elements.
+These statements will fail unless the initial connection to the
+database is made by a superuser
+(or the same user that owns all of the objects in the script).
+With \fB-O\fR, any user name can be used for the
+initial connection, and this user will own all the created objects.
+.TP
+\fB-P \fIfunction-name(argtype [, ...])\fB\fR
+.TP
+\fB--function=\fIfunction-name(argtype [, ...])\fB\fR
+Restore the named function only. Be careful to spell the function
+name and arguments exactly as they appear in the dump file's table
+of contents.
+.TP
+\fB-r\fR
+.TP
+\fB--rearrange\fR
+Rearrange items by object type (this occurs after the sorting
+specified by \fB-N\fR or \fB-o\fR, if
+given). The rearrangement is intended to give the best possible
+restore performance.
+
+When none of \fB-N\fR, \fB-o\fR, and
+\fB-r\fR appear, \fBpg_restore\fR restores
+items in the order they appear in the dump's table of contents,
+or in the order they appear in the \fIlist-file\fR if \fB-L\fR is
+given. The combination of \fB-o\fR and \fB-r\fR
+duplicates the sorting done by \fBpg_dump\fR
+before creating the dump's table of contents,
+and so it is normally unnecessary to specify it.
+.TP
+\fB-R\fR
+.TP
+\fB--no-reconnect\fR
+This option is obsolete but still accepted for backwards
+compatibility.
+.TP
+\fB-s\fR
+.TP
+\fB--schema-only\fR
+Restore only the schema (data definitions), not the data.
+Sequence values will be reset.
+.TP
+\fB-S \fIusername\fB\fR
+.TP
+\fB--superuser=\fIusername\fB\fR
+Specify the superuser user name to use when disabling triggers.
+This is only relevant if \fB--disable-triggers\fR is used.
+.TP
+\fB-t \fItable\fB\fR
+.TP
+\fB--table=\fItable\fB\fR
+Restore definition and/or data of named table only.
+.TP
+\fB-T \fItrigger\fB\fR
+.TP
+\fB--trigger=\fItrigger\fB\fR
+Restore named trigger only.
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+Specifies verbose mode.
+.TP
+\fB-x\fR
+.TP
+\fB--no-privileges\fR
+.TP
+\fB--no-acl\fR
+Prevent restoration of access privileges (grant/revoke commands).
+.TP
+\fB-X use-set-session-authorization\fR
+.TP
+\fB--use-set-session-authorization\fR
+This option is obsolete but still accepted for backwards
+compatibility.
+\fBpg_restore\fR now always behaves in the
+way formerly selected by this option.
+.TP
+\fB-X disable-triggers\fR
+.TP
+\fB--disable-triggers\fR
+This option is only relevant when performing a data-only restore.
+It instructs \fBpg_restore\fR to execute commands
+to temporarily disable triggers on the target tables while
+the data is reloaded. Use this if you have referential
+integrity checks or other triggers on the tables that you
+do not want to invoke during data reload.
+
+Presently, the commands emitted for
+\fB--disable-triggers\fR must be done as superuser. So, you
+should also specify a superuser name with \fB-S\fR, or
+preferably run \fBpg_restore\fR as a
+PostgreSQL superuser.
+.PP
+.PP
+\fBpg_restore\fR also accepts
+the following command line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host=\fIhost\fB\fR
+Specifies the host name of the machine on which the server is
+running. If the value begins with a slash, it is used as the
+directory for the Unix domain socket. The default is taken
+from the \fBPGHOST\fR environment variable, if set,
+else a Unix domain socket connection is attempted.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port=\fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file
+extension on which the server is listening for connections.
+Defaults to the \fBPGPORT\fR environment variable, if
+set, or a compiled-in default.
+.TP
+\fB-U \fIusername\fB\fR
+Connect as the given user
+.TP
+\fB-W\fR
+Force a password prompt. This should happen automatically if
+the server requires password authentication.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+When a direct database connection is specified using the
+\fB-d\fR option, \fBpg_restore\fR
+internally executes SQL statements. If you have
+problems running \fBpg_restore\fR, make sure
+you are able to select information from the database using, for
+example, \fBpsql\fR.
+.SH "NOTES"
+.PP
+If your installation has any local additions to the
+template1 database, be careful to load the output of
+\fBpg_restore\fR into a truly empty database;
+otherwise you are likely to get errors due to duplicate definitions
+of the added objects. To make an empty database without any local
+additions, copy from template0 not template1, for example:
+.sp
+.nf
+CREATE DATABASE foo WITH TEMPLATE template0;
+.sp
+.fi
+.PP
+The limitations of \fBpg_restore\fR are detailed below.
+.TP 0.2i
+\(bu
+When restoring data to a pre-existing table and the option
+\fB--disable-triggers\fR is used,
+\fBpg_restore\fR emits commands
+to disable triggers on user tables before inserting the data then emits commands to
+re-enable them after the data has been inserted. If the restore is stopped in the
+middle, the system catalogs may be left in the wrong state.
+.TP 0.2i
+\(bu
+\fBpg_restore\fR will not restore large objects for a single table. If
+an archive contains large objects, then all large objects will be restored.
+.PP
+.PP
+See also the \fBpg_dump\fR(1) documentation for details on
+limitations of \fBpg_dump\fR.
+.PP
+Once restored, it is wise to run \fBANALYZE\fR on each
+restored table so the optimizer has useful statistics.
+.SH "EXAMPLES"
+.PP
+To dump a database called mydb that contains
+large objects to a \fItar\fR file:
+.sp
+.nf
+$ \fBpg_dump -Ft -b mydb > db.tar\fR
+.sp
+.fi
+.PP
+To reload this database (with large objects) to an
+existing database called newdb:
+.sp
+.nf
+$ \fBpg_restore -d newdb db.tar\fR
+.sp
+.fi
+.PP
+To reorder database items, it is first necessary to dump the table of
+contents of the archive:
+.sp
+.nf
+$ \fBpg_restore -l archive.file > archive.list\fR
+.sp
+.fi
+The listing file consists of a header and one line for each item, e.g.,
+.sp
+.nf
+;
+; Archive created at Fri Jul 28 22:28:36 2000
+;     dbname: birds
+;     TOC Entries: 74
+;     Compression: 0
+;     Dump Version: 1.4-0
+;     Format: CUSTOM
+;
+;
+; Selected TOC Entries:
+;
+2; 145344 TABLE species postgres
+3; 145344 ACL species
+4; 145359 TABLE nt_header postgres
+5; 145359 ACL nt_header
+6; 145402 TABLE species_records postgres
+7; 145402 ACL species_records
+8; 145416 TABLE ss_old postgres
+9; 145416 ACL ss_old
+10; 145433 TABLE map_resolutions postgres
+11; 145433 ACL map_resolutions
+12; 145443 TABLE hs_old postgres
+13; 145443 ACL hs_old
+.sp
+.fi
+Semicolons start a comment, and the numbers at the start of lines refer to the
+internal archive ID assigned to each item.
+.PP
+Lines in the file can be commented out, deleted, and reordered. For example,
+.sp
+.nf
+10; 145433 TABLE map_resolutions postgres
+;2; 145344 TABLE species postgres
+;4; 145359 TABLE nt_header postgres
+6; 145402 TABLE species_records postgres
+;8; 145416 TABLE ss_old postgres
+.sp
+.fi
+could be used as input to \fBpg_restore\fR and would only restore
+items 10 and 6, in that order:
+.sp
+.nf
+$ \fBpg_restore -L archive.list archive.file\fR
+.sp
+.fi
+.SH "HISTORY"
+.PP
+The \fBpg_restore\fR utility first appeared in
+PostgreSQL 7.1.
+.SH "SEE ALSO"
+\fBpg_dump\fR(1), \fBpg_dumpall\fR(1), \fBpsql\fR(1)
+
diff --git a/raw/man1/popd.1 b/raw/man1/popd.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/popd.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/postgres.1 b/raw/man1/postgres.1
new file mode 100644
index 0000000..877a81a
--- /dev/null
+++ b/raw/man1/postgres.1
@@ -0,0 +1,223 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "POSTGRES" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+postgres \- run a PostgreSQL server in single-user mode
+
+.SH SYNOPSIS
+.sp
+\fBpostgres\fR\fR [ \fR\fB-A  \fR\fB 0\fR | \fB1\fR\fB \fR\fR]\fR\fR [ \fR\fB-B \fInbuffers\fB \fR\fR]\fR\fR [ \fR\fB-c \fIname\fB=\fIvalue\fB \fR\fR]\fR\fR [ \fR\fB-d \fIdebug-level\fB \fR\fR]\fR\fR [ \fR\fB--describe-config \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-e \fR\fR]\fR\fR [ \fR\fB-E \fR\fR]\fR\fR [ \fR\fB-f \fR\fB s\fR | \fBi\fR | \fBt\fR | \fBn\fR | \fBm\fR | \fBh\fR\fB \fR\fR]\fR\fR [ \fR\fB-F \fR\fR]\fR\fR [ \fR\fB-N \fR\fR]\fR\fR [ \fR\fB-o \fIfilename\ [...]
+
+\fBpostgres\fR\fR [ \fR\fB-A  \fR\fB 0\fR | \fB1\fR\fB \fR\fR]\fR\fR [ \fR\fB-B \fInbuffers\fB \fR\fR]\fR\fR [ \fR\fB-c \fIname\fB=\fIvalue\fB \fR\fR]\fR\fR [ \fR\fB-d \fIdebug-level\fB \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-e \fR\fR]\fR\fR [ \fR\fB-f \fR\fB s\fR | \fBi\fR | \fBt\fR | \fBn\fR | \fBm\fR | \fBh\fR\fB \fR\fR]\fR\fR [ \fR\fB-F \fR\fR]\fR\fR [ \fR\fB-o \fIfilename\fB \fR\fR]\fR\fR [ \fR\fB-O \fR\fR]\fR\fR [ \fR\fB-p \fIdatabase\fB \fR\fR]\fR\fR [ \fR\fB [...]
+.SH "DESCRIPTION"
+.PP
+The \fBpostgres\fR executable is the actual
+PostgreSQL server process that processes
+queries. It is normally not called directly; instead a \fBpostmaster\fR(1) multiuser server is started.
+.PP
+The second form above is how
+\fBpostgres\fR is invoked by the \fBpostmaster\fR(1) (only
+conceptually, since both \fIpostmaster\fR and
+\fIpostgres\fR are in fact the same program); it
+should not be invoked directly this way. The first form invokes
+the server directly in interactive single-user mode. The primary use
+for this mode is during bootstrapping by \fBinitdb\fR(1).
+Sometimes it is used for debugging or disaster recovery.
+.PP
+When invoked in interactive mode from the shell, the user can enter
+queries and the results will be printed to the screen, but in a
+form that is more useful for developers than end users. But note
+that running a single-user server is not truly suitable for
+debugging the server since no realistic interprocess communication
+and locking will happen.
+.PP
+When running a stand-alone server, the session user will be set to
+the user with ID 1. This user does not actually have to exist, so
+a stand-alone server can be used to manually recover from certain
+kinds of accidental damage to the system catalogs. Implicit
+superuser powers are granted to the user with ID 1 in stand-alone
+mode.
+.SH "OPTIONS"
+.PP
+When \fBpostgres\fR is started by a \fBpostmaster\fR(1) then it
+inherits all options set by the latter. Additionally,
+\fBpostgres\fR-specific options can be passed
+from the \fBpostmaster\fR with the
+\fB-o\fR switch.
+.PP
+You can avoid having to type these options by setting up a
+configuration file. See the section called ``Run-time Configuration'' in the documentation for details. Some
+(safe) options can also be set from the connecting client in an
+application-dependent way. For example, if the environment
+variable \fBPGOPTIONS\fR is set, then
+\fBlibpq\fR-based clients will pass that string to the
+server, which will interpret it as
+\fBpostgres\fR command-line options.
+.SS "GENERAL PURPOSE"
+.PP
+The options \fB-A\fR, \fB-B\fR,
+\fB-c\fR, \fB-d\fR, \fB-D\fR,
+\fB-F\fR, and \fB--\fIname\fB\fR have the same meanings
+as the \fBpostmaster\fR(1) except that
+-d 0 prevents the server log level of
+the \fBpostmaster\fR from being propagated to \fBpostgres\fR.
+.TP
+\fB-e\fR
+Sets the default date style to ``European'', that is
+DMY ordering of input date fields. This also causes
+the day to be printed before the month in certain date output formats.
+See the section called ``Date/Time Types'' in the documentation for more information.
+.TP
+\fB-o \fIfilename\fB\fR
+Send all server log output to 
+\fIfilename\fR.
+If \fBpostgres\fR is running under the
+\fBpostmaster\fR, this option is ignored,
+and the \fBstderr\fR inherited from the
+\fBpostmaster\fR is used.
+.TP
+\fB-P\fR
+Ignore system indexes when reading system tables (but still update
+the indexes when modifying the tables). This is useful when
+recovering from damaged system indexes.
+.TP
+\fB-s\fR
+Print time information and other statistics at the end of each command.
+This is useful for benchmarking or for use in tuning the number of
+buffers.
+.TP
+\fB-S \fIsort-mem\fB\fR
+Specifies the amount of memory to be used by internal sorts and hashes
+before resorting to temporary disk files. The value is specified in
+kilobytes, and defaults to 1024. Note that for a complex query,
+several sorts and/or hashes might be running in parallel, and each one
+will be allowed to use as much as
+\fIsort-mem\fR kilobytes
+before it starts to put data into temporary files.
+.SS "OPTIONS FOR STAND-ALONE MODE"
+.TP
+\fB\fIdatabase\fB\fR
+Specifies the name of the database to be accessed. If it is
+omitted it defaults to the user name. 
+.TP
+\fB-E\fR
+Echo all commands.
+.TP
+\fB-N\fR
+Disables use of newline as a statement delimiter.
+.SS "SEMI-INTERNAL OPTIONS"
+.PP
+There are several other options that may be specified, used
+mainly for debugging purposes. These are listed here only for
+the use by PostgreSQL system
+developers. \fBUse of any of these options is highly
+discouraged.\fR Furthermore, any of these options may
+disappear or change in a future release without notice.
+.TP
+\fB-f { s | i | m | n | h }\fR
+Forbids the use of particular scan and join methods:
+s and i
+disable sequential and index scans respectively, while
+n, m, and h
+disable nested-loop, merge and hash joins respectively.
+.sp
+.RS
+.B "Note:"
+Neither sequential scans nor nested-loop joins can be disabled completely;
+the -fs and -fn
+options simply discourage the optimizer from using those
+plan types if it has any other alternative.
+.RE
+.sp
+.TP
+\fB-O\fR
+Allows the structure of system tables to be modified. This is
+used by \fBinitdb\fR.
+.TP
+\fB-p \fIdatabase\fB\fR
+Indicates that this process has been started by a
+\fBpostmaster\fR and specifies the database to use.
+etc.
+.TP
+\fB-t pa[rser] | pl[anner] | e[xecutor]\fR
+Print timing statistics for each query relating to each of the
+major system modules. This option cannot be used together
+with the \fB-s\fR option.
+.TP
+\fB-v \fIprotocol\fB\fR
+Specifies the version number of the frontend/backend protocol
+to be used for this particular session.
+.TP
+\fB-W \fIseconds\fB\fR
+As soon as this option is encountered, the process sleeps for
+the specified amount of seconds. This gives developers time
+to attach a debugger to the server process.
+.TP
+\fB--describe-config\fR
+This option dumps out the server's internal configuration variables, 
+descriptions, and defaults in tab-delimited \fBCOPY\fR format.
+It is designed primarily for use by administration tools.
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATA\fR
+Default data direction location
+.PP
+For others, which have little influence during single-user mode,
+see \fBpostmaster\fR(1).
+.PP
+.SH "NOTES"
+.PP
+To cancel a running query, send the SIGINT signal
+to the \fBpostgres\fR process running that command.
+.PP
+To tell \fBpostgres\fR to reload the configuration files,
+send a SIGHUP signal. Normally it's best to
+SIGHUP the \fBpostmaster\fR instead;
+the \fBpostmaster\fR will in turn SIGHUP
+each of its children. But in some cases it might be desirable to have only
+one \fBpostgres\fR process reload the configuration files.
+.PP
+The \fBpostmaster\fR uses SIGTERM
+to tell a \fBpostgres\fR process to quit normally and
+SIGQUIT to terminate without the normal cleanup.
+These signals \fBshould not\fR be used by users. It is also
+unwise to send SIGKILL to a \fBpostgres\fR
+process --- the \fBpostmaster\fR will interpret this as
+a crash in \fBpostgres\fR, and will force all the sibling
+\fBpostgres\fR processes to quit as part of its standard
+crash-recovery procedure.
+.SH "USAGE"
+.PP
+Start a stand-alone server with a command like
+.sp
+.nf
+\fBpostgres -D /usr/local/pgsql/data \fIother-options\fB my_database\fR
+.sp
+.fi
+Provide the correct path to the database directory with \fB-D\fR, or
+make sure that the environment variable \fBPGDATA\fR is set.
+Also specify the name of the particular database you want to work in.
+.PP
+Normally, the stand-alone server treats newline as the command
+entry terminator; there is no intelligence about semicolons,
+as there is in \fBpsql\fR. To continue a command
+across multiple lines, you must type backslash just before each
+newline except the last one.
+.PP
+But if you use the \fB-N\fR command line switch, then newline does
+not terminate command entry. In this case, the server will read the standard input
+until the end-of-file (EOF) marker, then
+process the input as a single command string. Backslash-newline is not
+treated specially in this case.
+.PP
+To quit the session, type EOF
+(\fBControl\fR+\fBD\fR, usually).
+If you've
+used \fB-N\fR, two consecutive EOFs are needed to exit.
+.PP
+Note that the stand-alone server does not provide sophisticated
+line-editing features (no command history, for example).
+.SH "SEE ALSO"
+.PP
+\fBinitdb\fR(1),
+\fBipcclean\fR(1),
+\fBpostmaster\fR(1)
diff --git a/raw/man1/postmaster.1 b/raw/man1/postmaster.1
new file mode 100644
index 0000000..b53f9a8
--- /dev/null
+++ b/raw/man1/postmaster.1
@@ -0,0 +1,330 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "POSTMASTER" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+postmaster \- PostgreSQL multiuser database server
+
+.SH SYNOPSIS
+.sp
+\fBpostmaster\fR\fR [ \fR\fB-A  \fR\fB 0\fR | \fB1\fR\fB \fR\fR]\fR\fR [ \fR\fB-B \fInbuffers\fB \fR\fR]\fR\fR [ \fR\fB-c \fIname\fB=\fIvalue\fB \fR\fR]\fR\fR [ \fR\fB-d \fIdebug-level\fB \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-F \fR\fR]\fR\fR [ \fR\fB-h \fIhostname\fB \fR\fR]\fR\fR [ \fR\fB-i \fR\fR]\fR\fR [ \fR\fB-k \fIdirectory\fB \fR\fR]\fR\fR [ \fR\fB-l \fR\fR]\fR\fR [ \fR\fB-N \fImax-connections\fB \fR\fR]\fR\fR [ \fR\fB-o \fIextra-options\fB \fR\fR]\fR\fR [ \ [...]
+.SH "DESCRIPTION"
+.PP
+\fBpostmaster\fR is the
+PostgreSQL multiuser database server.
+In order for a client application to access a database it connects
+(over a network or locally) to a running
+\fBpostmaster\fR. The
+\fBpostmaster\fR then starts a separate server
+process (``\fBpostgres\fR(1)'') to handle
+the connection. The \fBpostmaster\fR also
+manages the communication among server processes.
+.PP
+By default the \fBpostmaster\fR starts in the
+foreground and prints log messages to the standard error stream. In
+practical applications the \fBpostmaster\fR
+should be started as a background process, perhaps at boot time.
+.PP
+One \fBpostmaster\fR always manages the data
+from exactly one database cluster. A database cluster is a
+collection of databases that is stored at a common file system
+location. When the \fBpostmaster\fR starts it needs to know the location
+of the database cluster files (``data area''). This is
+done with the \fB-D\fR invocation option or the
+\fBPGDATA\fR environment variable; there is no default.
+More than one \fBpostmaster\fR process can run on a system at one time,
+as long as they use different data areas and different
+communication ports (see below). A data area is created with \fBinitdb\fR(1).
+.SH "OPTIONS"
+.PP
+\fBpostmaster\fR accepts the following
+command line arguments. For a detailed discussion of the options
+consult the section called ``Run-time Configuration'' in the documentation. You can also save typing most of these
+options by setting up a configuration file.
+.TP
+\fB-A 0|1\fR
+Enables run-time assertion checks, which is a debugging aid to
+detect programming mistakes. This is only available if it was
+enabled during compilation. If so, the default is on.
+.TP
+\fB-B \fInbuffers\fB\fR
+Sets the number of shared buffers for use by the server
+processes. This value defaults to 64 buffers, where each
+buffer is 8 kB.
+.TP
+\fB-c \fIname\fB=\fIvalue\fB\fR
+Sets a named run-time parameter. Consult the section called ``Run-time Configuration'' in the documentation for
+a list and descriptions. Most of the other command line
+options are in fact short forms of such a parameter
+assignment. \fB-c\fR can appear multiple times to set
+multiple parameters.
+.TP
+\fB-d \fIdebug-level\fB\fR
+Sets the debug level. The higher this value is set, the more
+debugging output is written to the server log. Values are from
+1 to 5.
+.TP
+\fB-D \fIdatadir\fB\fR
+Specifies the file system location of the data directory. See
+discussion above.
+.TP
+\fB-F\fR
+Disables \fBfsync\fR calls for performance
+improvement, at the risk of data corruption in event of a
+system crash. This option corresponds to setting
+fsync=false in \fIpostgresql.conf\fR. Read the detailed
+documentation before using this!
+
+\fB--fsync=true\fR has the opposite effect
+of this option.
+.TP
+\fB-h \fIhostname\fB\fR
+Specifies the IP host name or address on which the
+\fBpostmaster\fR is to listen for
+connections from client applications. Defaults to
+listening on all configured addresses (including
+\fBlocalhost\fR).
+.TP
+\fB-i\fR
+Allows clients to connect via TCP/IP (Internet domain)
+connections. Without this option, only local Unix domain
+socket connections are accepted. This option corresponds
+to setting tcpip_socket=true in \fIpostgresql.conf\fR.
+
+\fB--tcpip-socket=false\fR has the opposite
+effect of this option.
+.TP
+\fB-k \fIdirectory\fB\fR
+Specifies the directory of the Unix-domain socket on which the
+\fBpostmaster\fR is to listen for
+connections from client applications. The default is normally
+\fI/tmp\fR, but can be changed at build time.
+.TP
+\fB-l\fR
+Enables secure connections using SSL. The \fB-i\fR
+option is also required. You must have compiled with SSL
+enabled to use this option.
+.TP
+\fB-N \fImax-connections\fB\fR
+Sets the maximum number of client connections that this
+\fBpostmaster\fR will accept. By
+default, this value is 32, but it can be set as high as your
+system will support. (Note that
+\fB-B\fR is required to be at least twice
+\fB-N\fR. See the section called ``Managing Kernel Resources'' in the documentation for a discussion of
+system resource requirements for large numbers of client
+connections.)
+.TP
+\fB-o \fIextra-options\fB\fR
+The command line-style options specified in \fIextra-options\fR are passed to
+all server processes started by this
+\fBpostmaster\fR. See \fBpostgres\fR(1) for possibilities. If the option
+string contains any spaces, the entire string must be quoted.
+.TP
+\fB-p \fIport\fB\fR
+Specifies the TCP/IP port or local Unix domain socket file
+extension on which the \fBpostmaster\fR
+is to listen for connections from client applications.
+Defaults to the value of the \fBPGPORT\fR environment
+variable, or if \fBPGPORT\fR is not set, then
+defaults to the value established during compilation (normally
+5432). If you specify a port other than the default port,
+then all client applications must specify the same port using
+either command-line options or \fBPGPORT\fR.
+.TP
+\fB-S\fR
+Specifies that the \fBpostmaster\fR
+process should start up in silent mode. That is, it will
+disassociate from the user's (controlling) terminal, start its
+own process group, and redirect its standard output and
+standard error to \fI/dev/null\fR.
+
+Using this switch discards all logging output, which is
+probably not what you want, since it makes it very difficult
+to troubleshoot problems. See below for a better way to start
+the \fBpostmaster\fR in the background.
+
+\fB--silent-mode=false\fR has the opposite effect
+of this option.
+.TP
+\fB--\fIname\fB=\fIvalue\fB\fR
+Sets a named run-time parameter; a shorter form of
+\fB-c\fR.
+.PP
+.PP
+Two additional command line options are available for debugging
+problems that cause a server process to die abnormally. The
+ordinary strategy in this situation is to notify all other server
+processes that they must terminate and then reinitialize the
+shared memory and semaphores. This is because an errant server
+process could have corrupted some shared state before terminating.
+These options select alternative behaviors of the
+\fBpostmaster\fR in this situation.
+\fBNeither option is intended for use in ordinary
+operation.\fR
+.PP
+.PP
+These special-case options are:
+.TP
+\fB-n\fR
+\fBpostmaster\fR
+will not reinitialize shared data structures. A knowledgeable system
+programmer can then use a debugger
+to examine shared memory and semaphore state.
+.TP
+\fB-s\fR
+\fBpostmaster\fR
+will stop all other server processes by sending the signal
+SIGSTOP,
+but will not cause them to terminate. This permits system programmers
+to collect core dumps from all server processes by hand.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGCLIENTENCODING\fR
+Default character encoding used by clients. (The clients may
+override this individually.) This value can also be set in the
+configuration file.
+.TP
+\fBPGDATA\fR
+Default data direction location
+.TP
+\fBPGDATESTYLE\fR
+Default value of the DATESTYLE run-time
+parameter. (The use of this environment variable is deprecated.)
+.TP
+\fBPGPORT\fR
+Default port (preferably set in the configuration file)
+.TP
+\fBTZ\fR
+Server time zone
+.TP
+\fBothers\fR
+Other environment variables may be used to designate alternative
+data storage locations. See the chapter called ``Managing Databases'' in the documentation for more
+information.
+.SH "DIAGNOSTICS"
+.PP
+A failure message mentioning semget or shmget
+probably indicates you need to configure your kernel to provide adequate
+shared memory and semaphores. For more discussion see the section called ``Managing Kernel Resouces'' in the documentation.
+.sp
+.RS
+.B "Tip:"
+You may be able to postpone reconfiguring your kernel by decreasing
+shared_buffers to reduce the shared memory consumption
+of PostgreSQL, and/or by reducing
+max_connections to reduce the semaphore consumption.
+.RE
+.sp
+.PP
+A failure message suggesting that another postmaster is already running
+should be checked carefully, for example by using the command
+.sp
+.nf
+$ \fBps ax | grep postmaster\fR
+.sp
+.fi
+or
+.sp
+.nf
+$ \fBps -ef | grep postmaster\fR
+.sp
+.fi
+depending on your system. If you are certain that no conflicting
+postmaster is running, you may remove the lock file mentioned in the
+message and try again.
+.PP
+A failure message indicating inability to bind to a port may indicate
+that that port is already in use by some non-PostgreSQL process.
+You may also get this error if you terminate the
+\fBpostmaster\fR
+and immediately restart it using the same port; in this case, you must
+simply wait a few seconds until the operating system closes the port
+before trying again. Finally, you may get this error if you specify
+a port number that your operating system considers to be reserved.
+For example, many versions of Unix consider port numbers under 1024 to
+be ``trusted''
+and only permit the Unix superuser to access them.
+.SH "NOTES"
+.PP
+If at all possible, \fBdo not\fR use
+SIGKILL to kill the
+\fBpostmaster\fR. Doing so will prevent
+\fBpostmaster\fR from freeing the system
+resources (e.g., shared memory and semaphores) that it holds before
+terminating. This may cause problems for starting a fresh
+\fBpostmaster\fR run.
+.PP
+To terminate the \fBpostmaster\fR normally,
+the signals SIGTERM, SIGINT,
+or SIGQUIT can be used. The first will wait for
+all clients to terminate before quitting, the second will
+forcefully disconnect all clients, and the third will quit
+immediately without proper shutdown, resulting in a recovery run
+during restart. The SIGHUP signal will 
+reload the server configuration files.
+.PP
+The utility command \fBpg_ctl\fR(1) can be used to
+start and shut down the \fBpostmaster\fR
+safely and comfortably.
+.PP
+The \fB--\fR options will not work on \fBFreeBSD\fR or \fBOpenBSD\fR.
+Use \fB-c\fR instead. This is a bug in the affected operating
+systems; a future release of PostgreSQL
+will provide a workaround if this is not fixed.
+.SH "EXAMPLES"
+.PP
+To start \fBpostmaster\fR in the background
+using default values, type:
+.sp
+.nf
+$ \fBnohup postmaster >logfile 2>&1 </dev/null &\fR
+.sp
+.fi
+.PP
+To start \fBpostmaster\fR with a specific
+port:
+.sp
+.nf
+$ \fBpostmaster -p 1234\fR
+.sp
+.fi
+This command will start up \fBpostmaster\fR
+communicating through the port 1234. In order to connect to this
+\fBpostmaster\fR using \fBpsql\fR, you would need to
+run it as
+.sp
+.nf
+$ \fBpsql -p 1234\fR
+.sp
+.fi
+or set the environment variable \fBPGPORT\fR:
+.sp
+.nf
+$ \fBexport PGPORT=1234\fR
+$ \fBpsql\fR
+.sp
+.fi
+.PP
+Named run-time parameters can be set in either of these styles:
+.sp
+.nf
+$ \fBpostmaster -c sort_mem=1234\fR
+$ \fBpostmaster --sort-mem=1234\fR
+.sp
+.fi
+Either form overrides whatever setting might exist for SORT_MEM
+in \fIpostgresql.conf\fR. Notice that underscores in parameter
+names can be written as either underscore or dash on the command line.
+.sp
+.RS
+.B "Tip:"
+Except for short-term experiments,
+it's probably better practice to edit the setting in
+\fIpostgresql.conf\fR than to rely on a command-line switch
+to set a parameter.
+.RE
+.sp
+.SH "SEE ALSO"
+.PP
+\fBinitdb\fR(1),
+\fBpg_ctl\fR(1)
diff --git a/raw/man1/printf.1 b/raw/man1/printf.1
new file mode 100644
index 0000000..d6b4d9d
--- /dev/null
+++ b/raw/man1/printf.1
@@ -0,0 +1,96 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH PRINTF "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+printf \- format and print data
+.SH SYNOPSIS
+.B printf
+\fIFORMAT \fR[\fIARGUMENT\fR]...
+.br
+.B printf
+\fIOPTION\fR
+.SH DESCRIPTION
+NOTE: your shell may have its own version of printf which will supercede
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.PP
+Print ARGUMENT(s) according to FORMAT.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+FORMAT controls the output as in C printf.  Interpreted sequences are:
+.TP
+\e"
+double quote
+.TP
+\e0NNN
+character with octal value NNN (0 to 3 digits)
+.TP
+\e\e
+backslash
+.TP
+\ea
+alert (BEL)
+.TP
+\eb
+backspace
+.TP
+\ec
+produce no further output
+.TP
+\ef
+form feed
+.TP
+\en
+new line
+.TP
+\er
+carriage return
+.TP
+\et
+horizontal tab
+.TP
+\ev
+vertical tab
+.TP
+\exNN
+byte with hexadecimal value NN (1 to 2 digits)
+.TP
+\euNNNN
+character with hexadecimal value NNNN (4 digits)
+.TP
+\eUNNNNNNNN
+character with hexadecimal value NNNNNNNN (8 digits)
+.TP
+%%
+a single %
+.TP
+%b
+ARGUMENT as a string with `\e' escapes interpreted
+.PP
+and all C format specifications ending with one of diouxXfeEgGcs, with
+ARGUMENTs converted to proper type first.  Variable widths are handled.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B printf
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B printf
+programs are properly installed at your site, the command
+.IP
+.B info printf
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/psfaddtable.1 b/raw/man1/psfaddtable.1
new file mode 100644
index 0000000..ad5c844
--- /dev/null
+++ b/raw/man1/psfaddtable.1
@@ -0,0 +1,47 @@
+.\" @(#)psfaddtable.1
+.TH PSFADDTABLE 1 "25 Oct 1994"
+.SH NAME
+psfaddtable \- add a Unicode character table to a console font
+.SH SYNOPSIS
+.B psfaddtable
+.I fontfile tablefile outfile
+.SH DESCRIPTION
+.IX "psfaddtable command" "" "\fLpsfaddtable\fR command"  
+.LP
+.B psfaddtable
+takes a console font in .psf format given by
+.I fontfile
+and merges it with the Unicode character table given by
+.I tablefile
+to produce a font file with an embedded character table, which is
+written to
+.IR outfile .
+An input file name of "\-" denotes standard input,
+and an output file name of "\-" denotes standard output.
+If the
+.I fontfile
+already contains an embedded character table, it is ignored.
+.SH TABLE FILE FORMAT
+Each line in the
+.I tablefile
+should be either blank, contain a comment (preceded by
+.IR # ),
+or contain a sequence of numbers in either decimal (default), octal
+(preceded by
+.IR 0 ),
+or hexadecimal (preceded by
+.IR 0x )
+format, separated by spaces or tabs.
+The first number on each line indicates the glyph slot in the
+font that is being referred to, this is between 0 and 0xff for a
+256-character font and 0 and 0x1ff for a 512-character font.  Any
+subsequent numbers on the same line are Unicodes matched by this
+specific glyph slot.  Instead of a single Unicode one may have
+a sequence of Unicodes separates by commas, to denote that the
+glyph depicts the corresponding composed symbol.
+It is permissible to have multiple lines for the same glyph.
+.SH "SEE ALSO"
+.BR setfont (8),
+.BR psfgettable (1),
+.BR psfstriptable (1),
+.BR psfxtable (1)
diff --git a/raw/man1/psfgettable.1 b/raw/man1/psfgettable.1
new file mode 100644
index 0000000..228be18
--- /dev/null
+++ b/raw/man1/psfgettable.1
@@ -0,0 +1,22 @@
+.\" @(#)psfgettable.1
+.TH PSFGETTABLE 1 "25 Oct 1994"
+.SH NAME
+psfgettable \- extract the embedded Unicode character table from a console font
+.SH SYNOPSIS
+.B psfgettable
+.I fontfile
+.RI [ outfile ]
+.SH DESCRIPTION
+.IX "psfgettable command" "" "\fLpsfgettable\fR command"  
+.LP
+.B psfgettable
+extracts the embedded Unicode character table from a .psf format
+console font into a human readable ASCII file of the format used by
+.BR psfaddtable (1).
+If the font file name is a single dash (\-), the font is read from
+standard input.
+.SH "SEE ALSO"
+.BR setfont (8),
+.BR psfaddtable (1),
+.BR psfstriptable (1),
+.BR psfxtable (1)
diff --git a/raw/man1/psfstriptable.1 b/raw/man1/psfstriptable.1
new file mode 100644
index 0000000..f7e059d
--- /dev/null
+++ b/raw/man1/psfstriptable.1
@@ -0,0 +1,23 @@
+.\" @(#)psfstriptable.1
+.TH PSFSTRIPTABLE 1 "25 Oct 1994"
+.SH NAME
+psfstriptable \- remove the embedded Unicode character table from a console font
+.SH SYNOPSIS
+.B psfstriptable
+.I fontfile outfile
+.SH DESCRIPTION
+.IX "psfstriptable command" "" "\fLpsfstriptable\fR command"  
+.LP
+.B psfstriptable
+reads a .psf format console font from 
+.IR fontfile ,
+removes the embedded Unicode font table if there is one,
+and writes the result to
+.IR outfile .
+An input file name of "\-" denotes standard input,
+and an output file name of "\-" denotes standard output.
+.SH "SEE ALSO"
+.BR setfont (8),
+.BR psfaddtable (1),
+.BR psfgettable (1),
+.BR psfxtable (1)
diff --git a/raw/man1/psql.1 b/raw/man1/psql.1
new file mode 100644
index 0000000..58ad104
--- /dev/null
+++ b/raw/man1/psql.1
@@ -0,0 +1,1613 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PSQL" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+psql \- PostgreSQL interactive terminal
+
+.SH SYNOPSIS
+.sp
+\fBpsql\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB\fR [ \fB\fIusername\fB \fR]\fB \fR\fR]\fR
+.SH "DESCRIPTION"
+.PP
+\fBpsql\fR is a terminal-based front-end to
+PostgreSQL. It enables you to type in
+queries interactively, issue them to
+PostgreSQL, and see the query results.
+Alternatively, input can be from a file. In addition, it provides a
+number of meta-commands and various shell-like features to
+facilitate writing scripts and automating a wide variety of tasks.
+.SH "OPTIONS"
+.TP
+\fB-a\fR
+.TP
+\fB--echo-all\fR
+Print all the lines to the screen as they are read. This is more
+useful for script processing rather than interactive mode. This is
+equivalent to setting the variable ECHO to
+all.
+.TP
+\fB-A\fR
+.TP
+\fB--no-align\fR
+Switches to unaligned output mode. (The default output mode is
+otherwise aligned.)
+.TP
+\fB-c \fIcommand\fB\fR
+.TP
+\fB--command \fIcommand\fB\fR
+Specifies that \fBpsql\fR is to execute one
+command string, \fIcommand\fR,
+and then exit. This is useful in shell scripts.
+
+\fIcommand\fR must be either
+a command string that is completely parsable by the server (i.e.,
+it contains no \fBpsql\fR specific features),
+or it is a single backslash command. Thus you cannot mix
+SQL and \fBpsql\fR
+meta-commands. To achieve that, you could pipe the string into
+\fBpsql\fR, like this: echo "\\x \\\\
+select * from foo;" | psql.
+
+If the command string contains multiple SQL commands, they are
+processed in a single transaction, unless there are explicit
+BEGIN/COMMIT commands included in the string to divide it into
+multiple transactions. This is different from the behavior when
+the same string is fed to \fBpsql\fR's standard input.
+.TP
+\fB-d \fIdbname\fB\fR
+.TP
+\fB--dbname \fIdbname\fB\fR
+Specifies the name of the database to connect to. This is
+equivalent to specifying \fIdbname\fR as the first non-option
+argument on the command line.
+.TP
+\fB-e\fR
+.TP
+\fB--echo-queries\fR
+Show all commands that are sent to the server. This is equivalent
+to setting the variable ECHO to
+queries.
+.TP
+\fB-E\fR
+.TP
+\fB--echo-hidden\fR
+Echo the actual queries generated by \fB\\d\fR and other backslash
+commands. You can use this if you wish to include similar
+functionality into your own programs. This is equivalent to
+setting the variable ECHO_HIDDEN from within
+\fBpsql\fR.
+.TP
+\fB-f \fIfilename\fB\fR
+.TP
+\fB--file \fIfilename\fB\fR
+Use the file \fIfilename\fR
+as the source of commands instead of reading commands interactively.
+After the file is processed, \fBpsql\fR
+terminates. This is in many ways equivalent to the internal
+command \fB\\i\fR.
+
+If \fIfilename\fR is -
+(hyphen), then standard input is read.
+
+Using this option is subtly different from writing psql
+< \fIfilename\fR. In general,
+both will do what you expect, but using -f
+enables some nice features such as error messages with line
+numbers. There is also a slight chance that using this option will
+reduce the start-up overhead. On the other hand, the variant using
+the shell's input redirection is (in theory) guaranteed to yield
+exactly the same output that you would have gotten had you entered
+everything by hand.
+.TP
+\fB-F \fIseparator\fB\fR
+.TP
+\fB--field-separator \fIseparator\fB\fR
+Use \fIseparator\fR as the
+field separator. This is equivalent to \fB\\pset
+fieldsep\fR or \fB\\f\fR.
+.TP
+\fB-h \fIhostname\fB\fR
+.TP
+\fB--host \fIhostname\fB\fR
+Specifies the host name of the machine on which the
+server is running. If the value begins
+with a slash, it is used as the directory for the Unix-domain
+socket.
+.TP
+\fB-H\fR
+.TP
+\fB--html\fR
+Turn on HTML tabular output. This is
+equivalent to \\pset format html or the
+\fB\\H\fR command.
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+List all available databases, then exits. Other non-connection
+options are ignored. This is similar to the internal command
+\fB\\list\fR.
+.TP
+\fB-o \fIfilename\fB\fR
+.TP
+\fB--output \fIfilename\fB\fR
+Put all query output into file \fIfilename\fR. This is equivalent to
+the command \fB\\o\fR.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or the local Unix domain
+socket file extension on which the server is listening for
+connections. Defaults to the value of the \fBPGPORT\fR
+environment variable or, if not set, to the port specified at
+compile time, usually 5432.
+.TP
+\fB-P \fIassignment\fB\fR
+.TP
+\fB--pset \fIassignment\fB\fR
+Allows you to specify printing options in the style of
+\fB\\pset\fR on the command line. Note that here you
+have to separate name and value with an equal sign instead of a
+space. Thus to set the output format to LaTeX, you could write
+-P format=latex.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Specifies that \fBpsql\fR should do its work
+quietly. By default, it prints welcome messages and various
+informational output. If this option is used, none of this
+happens. This is useful with the \fB-c\fR option.
+Within \fBpsql\fR you can also set the
+QUIET variable to achieve the same effect.
+.TP
+\fB-R \fIseparator\fB\fR
+.TP
+\fB--record-separator \fIseparator\fB\fR
+Use \fIseparator\fR as the
+record separator. This is equivalent to the \fB\\pset
+recordsep\fR command.
+.TP
+\fB-s\fR
+.TP
+\fB--single-step\fR
+Run in single-step mode. That means the user is prompted before
+each command is sent to the server, with the option to cancel
+execution as well. Use this to debug scripts.
+.TP
+\fB-S\fR
+.TP
+\fB--single-line\fR
+Runs in single-line mode where a newline terminates an SQL command, as a
+semicolon does.
+.sp
+.RS
+.B "Note:"
+This mode is provided for those who insist on it, but you are not
+necessarily encouraged to use it. In particular, if you mix
+SQL and meta-commands on a line the order of
+execution might not always be clear to the inexperienced user.
+.RE
+.sp
+.TP
+\fB-t\fR
+.TP
+\fB--tuples-only\fR
+Turn off printing of column names and result row count footers,
+etc. It is completely equivalent to the \fB\\t\fR
+meta-command.
+.TP
+\fB-T \fItable_options\fB\fR
+.TP
+\fB--table-attr \fItable_options\fB\fR
+Allows you to specify options to be placed within the
+HTML table tag. See
+\fB\\pset\fR for details.
+.TP
+\fB-u\fR
+Makes \fBpsql\fR prompt for the user name and
+password before connecting to the database.
+
+This option is deprecated, as it is conceptually flawed.
+(Prompting for a non-default user name and prompting for a
+password because the server requires it are really two different
+things.) You are encouraged to look at the \fB-U\fR and
+\fB-W\fR options instead.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+Connect to the database as the user \fIusername\fR instead of the default.
+(You must have permission to do so, of course.)
+.TP
+\fB-v \fIassignment\fB\fR
+.TP
+\fB--set \fIassignment\fB\fR
+.TP
+\fB--variable \fIassignment\fB\fR
+Perform a variable assignment, like the \fB\\set\fR
+internal command. Note that you must separate name and value, if
+any, by an equal sign on the command line. To unset a variable,
+leave off the equal sign. To just set a variable without a value,
+use the equal sign but leave off the value. These assignments are
+done during a very early stage of start-up, so variables reserved
+for internal purposes might get overwritten later.
+.TP
+\fB-V\fR
+.TP
+\fB--version\fR
+Show the \fBpsql\fR version.
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Requests that \fBpsql\fR should prompt for a
+password before connecting to a database. This will remain set for
+the entire session, even if you change the database connection
+with the meta-command \fB\\connect\fR.
+
+In the current version, \fBpsql\fR
+automatically issues a password prompt whenever the server
+requests password authentication. Because this is currently based
+on a hack, the automatic recognition might mysteriously fail,
+hence this option to force a prompt. If no password prompt is
+issued and the server requires password authentication the
+connection attempt will fail.
+.TP
+\fB-x\fR
+.TP
+\fB--expanded\fR
+Turn on the extended table formatting mode. This is equivalent to the
+command \fB\\x\fR.
+.TP
+\fB-X,\fR
+.TP
+\fB--no-psqlrc\fR
+Do not read the start-up file \fI~/.psqlrc\fR.
+.TP
+\fB-?\fR
+.TP
+\fB--help\fR
+Show help about \fBpsql\fR command line
+arguments.
+.SH "EXIT STATUS"
+.PP
+\fBpsql\fR returns 0 to the shell if it
+finished normally, 1 if a fatal error of its own (out of memory,
+file not found) occurs, 2 if the connection to the server went bad
+and the session was not interactive, and 3 if an error occurred in a
+script and the variable ON_ERROR_STOP was set.
+.SH "USAGE"
+.SS "CONNECTING TO A DATABASE"
+.PP
+\fBpsql\fR is a regular
+PostgreSQL client application. In order
+to connect to a database you need to know the name of your target
+database, the host name and port number of the server and what user
+name you want to connect as. \fBpsql\fR can be
+told about those parameters via command line options, namely
+\fB-d\fR, \fB-h\fR, \fB-p\fR, and
+\fB-U\fR respectively. If an argument is found that does
+not belong to any option it will be interpreted as the database name
+(or the user name, if the database name is also given). Not all
+these options are required, defaults do apply. If you omit the host
+name, \fBpsql\fR will connect via a Unix domain socket to a server on the
+local host. The default port number is compile-time determined.
+Since the database server uses the same default, you will not have
+to specify the port in most cases. The default user name is your
+Unix user name, as is the default database name. Note that you can't
+just connect to any database under any user name. Your database
+administrator should have informed you about your access rights. To
+save you some typing you can also set the environment variables
+\fBPGDATABASE\fR, \fBPGHOST\fR,
+\fBPGPORT\fR and \fBPGUSER\fR to appropriate
+values.
+.PP
+If the connection could not be made for any reason (e.g., insufficient
+privileges, server is not running on the targeted host, etc.),
+\fBpsql\fR will return an error and terminate.
+.SS "ENTERING SQL COMMANDS"
+.PP
+In normal operation, \fBpsql\fR provides a
+prompt with the name of the database to which
+\fBpsql\fR is currently connected, followed by
+the string =>. For example,
+.sp
+.nf
+$ \fBpsql testdb\fR
+Welcome to psql 7.4beta5, the PostgreSQL interactive terminal.
+
+Type:  \\copyright for distribution terms
+       \\h for help with SQL commands
+       \\? for help on internal slash commands
+       \\g or terminate with semicolon to execute query
+       \\q to quit
+
+testdb=>
+.sp
+.fi
+.PP
+At the prompt, the user may type in SQL commands.
+Ordinarily, input lines are sent to the server when a
+command-terminating semicolon is reached. An end of line does not
+terminate a command. Thus commands can be spread over several lines for
+clarity. If the command was sent and without error, the results of the command
+are displayed on the screen.
+.PP
+Whenever a command is executed, \fBpsql\fR also polls
+for asynchronous notification events generated by
+LISTEN [\fBlisten\fR(7)] and
+NOTIFY [\fBnotify\fR(7)].
+.SS "META-COMMANDS"
+.PP
+Anything you enter in \fBpsql\fR that begins
+with an unquoted backslash is a \fBpsql\fR
+meta-command that is processed by \fBpsql\fR
+itself. These commands are what makes
+\fBpsql\fR interesting for administration or
+scripting. Meta-commands are more commonly called slash or backslash
+commands.
+.PP
+The format of a \fBpsql\fR command is the backslash, 
+followed immediately by a command verb, then any arguments. The arguments
+are separated from the command verb and each other by any number of 
+whitespace characters.
+.PP
+To include whitespace into an argument you may quote it with a
+single quote. To include a single quote into such an argument,
+precede it by a backslash. Anything contained in single quotes is
+furthermore subject to C-like substitutions for
+\\n (new line), \\t (tab),
+\\\fIdigits\fR,
+\\0\fIdigits\fR, and
+\\0x\fIdigits\fR (the
+character with the given decimal, octal, or hexadecimal code).
+.PP
+If an unquoted argument begins with a colon (:),
+it is taken as a \fBpsql\fR variable and the value of the
+variable is used as the argument instead.
+.PP
+Arguments that are enclosed in backquotes (`)
+are taken as a command line that is passed to the shell. The
+output of the command (with any trailing newline removed) is taken
+as the argument value. The above escape sequences also apply in
+backquotes.
+.PP
+Some commands take an SQL identifier (such as a
+table name) as argument. These arguments follow the syntax rules
+of SQL: Unquoted letters are forced to
+lowercase, while double quotes (") protect letters
+from case conversion and allow incorporation of whitespace into
+the identifier. Within double quotes, paired double quotes reduce
+to a single double quote in the resulting name. For example,
+FOO"BAR"BAZ is interpreted as fooBARbaz,
+and "A weird"" name" becomes A weird"
+name.
+.PP
+Parsing for arguments stops when another unquoted backslash occurs.
+This is taken as the beginning of a new meta-command. The special
+sequence \\\\ (two backslashes) marks the end of
+arguments and continues parsing SQL commands, if
+any. That way SQL and
+\fBpsql\fR commands can be freely mixed on a
+line. But in any case, the arguments of a meta-command cannot
+continue beyond the end of the line.
+.PP
+The following meta-commands are defined:
+.TP
+\fB\\a\fR
+If the current table output format is unaligned, it is switched to aligned.
+If it is not unaligned, it is set to unaligned. This command is
+kept for backwards compatibility. See \fB\\pset\fR for a
+general solution.
+.TP
+\fB\\cd [\fIdirectory\fB]\fR
+Changes the current working directory to
+\fIdirectory\fR. Without argument, changes
+to the current user's home directory.
+.sp
+.RS
+.B "Tip:"
+To print your current working directory, use \\!pwd.
+.RE
+.sp
+.TP
+\fB\\C [ \fItitle\fB ]\fR
+Sets the title of any tables being printed as the result of a
+query or unset any such title. This command is equivalent to
+\\pset title \fItitle\fR. (The name of
+this command derives from ``caption'', as it was
+previously only used to set the caption in an
+HTML table.)
+.TP
+\fB\\connect (or \\c) [ \fIdbname\fB [ \fIusername\fB ] ]\fR
+Establishes a connection to a new database and/or under a user
+name. The previous connection is closed. If \fIdbname\fR is -
+the current database name is assumed.
+
+If \fIusername\fR is
+omitted the current user name is assumed. 
+
+As a special rule, \fB\\connect\fR without any
+arguments will connect to the default database as the default
+user (as you would have gotten by starting
+\fBpsql\fR without any arguments).
+
+If the connection attempt failed (wrong user name, access
+denied, etc.), the previous connection will be kept if and only
+if \fBpsql\fR is in interactive mode. When
+executing a non-interactive script, processing will immediately
+stop with an error. This distinction was chosen as a user
+convenience against typos on the one hand, and a safety
+mechanism that scripts are not accidentally acting on the wrong
+database on the other hand.
+.TP
+\fB\\copy \fItable\fB\fR
+Performs a frontend (client) copy. This is an operation that
+runs an SQL COPY [\fBcopy\fR(7)] command, but instead of the server
+reading or writing the specified file,
+\fBpsql\fR reads or writes the file and
+routes the data between the server and the local file system.
+This means that file accessibility and privileges are those
+of the local user, not the server, and no SQL superuser
+privileges are required.
+
+The syntax of the command is similar to that of the
+SQL \fBCOPY\fR command. (See its
+description for the details.) Note that, because of this,
+special parsing rules apply to the \fB\\copy\fR
+command. In particular, the variable substitution rules and
+backslash escapes do not apply.
+.sp
+.RS
+.B "Tip:"
+This operation is not as efficient as the SQL
+\fBCOPY\fR command because all data must pass
+through the client/server connection. For large
+amounts of data the other technique may be preferable.
+.RE
+.sp
+.sp
+.RS
+.B "Note:"
+Note the difference in interpretation of
+stdin and stdout between
+client and server copies: in a client copy these always
+refer to \fBpsql\fR's input and output
+stream. On a server copy stdin comes from
+wherever the \fBCOPY\fR itself came from (for
+example, a script run with the \fB-f\fR option), and
+stdout refers to the query output stream (see
+\fB\\o\fR meta-command below).
+.RE
+.sp
+.TP
+\fB\\copyright\fR
+Shows the copyright and distribution terms of
+\fBPostgreSQL\fR.
+.TP
+\fB\\d [ \fIpattern\fB ]\fR
+For each relation (table, view, index, or sequence) matching the
+\fIpattern\fR, show all
+columns, their types, and any special
+attributes such as NOT NULL or defaults, if
+any. Associated indexes, constraints, rules, and triggers are
+also shown, as is the view definition if the relation is a view.
+(``Matching the pattern'' is defined below.)
+
+The command form \\d+ is identical, but any
+comments associated with the table columns are shown as well.
+.sp
+.RS
+.B "Note:"
+If \fB\\d\fR is used without a
+\fIpattern\fR argument, it is
+equivalent to \fB\\dtvs\fR which will show a list of
+all tables, views, and sequences. This is purely a convenience
+measure.
+.RE
+.sp
+.TP
+\fB\\da [ \fIpattern\fB ]\fR
+Lists all available aggregate functions, together with the data
+type they operate on. If \fIpattern\fR
+is specified, only aggregates whose names match the pattern are shown.
+.TP
+\fB\\dc [ \fIpattern\fB ]\fR
+Lists all available conversions between character-set encodings.
+If \fIpattern\fR
+is specified, only conversions whose names match the pattern are
+listed.
+.TP
+\fB\\dC\fR
+Lists all available type casts.
+.TP
+\fB\\dd [ \fIpattern\fB ]\fR
+Shows the descriptions of objects matching the \fIpattern\fR, or of all visible objects if
+no argument is given. But in either case, only objects that have
+a description are listed.
+(``Object'' covers aggregates, functions, operators,
+types, relations (tables, views, indexes, sequences, large
+objects), rules, and triggers.) For example:
+.sp
+.nf
+=> \fB\\dd version\fR
+                     Object descriptions
+   Schema   |  Name   |  Object  |        Description
+------------+---------+----------+---------------------------
+ pg_catalog | version | function | PostgreSQL version string
+(1 row)
+.sp
+.fi
+
+Descriptions for objects can be created with the
+\fBCOMMENT\fR SQL command.
+.TP
+\fB\\dD [ \fIpattern\fB ]\fR
+Lists all available domains. If \fIpattern\fR
+is specified, only matching domains are shown.
+.TP
+\fB\\df [ \fIpattern\fB ]\fR
+Lists available functions, together with their argument and
+return types. If \fIpattern\fR
+is specified, only functions whose names match the pattern are shown.
+If the form
+\\df+ is used, additional information about
+each function, including language and description, is shown.
+.sp
+.RS
+.B "Note:"
+To reduce clutter, \\df does not show data type I/O
+functions. This is implemented by ignoring functions that accept
+or return type \fBcstring\fR.
+.RE
+.sp
+.TP
+\fB\\distvS [ \fIpattern\fB ]\fR
+This is not the actual command name: the letters i, s, t, v, S
+stand for index, sequence, table, view, and system table,
+respectively. You can specify any or all of these letters, in any
+order, to obtain a listing of all the matching objects. The letter
+S restricts the listing to system objects; without S, only non-system
+objects are shown.
+If + is appended to the command name, each object is
+listed with its associated description, if any.
+
+If \fIpattern\fR is
+specified, only objects whose names match the pattern are listed.
+.TP
+\fB\\dl\fR
+This is an alias for \fB\\lo_list\fR, which shows a
+list of large objects.
+.TP
+\fB\\dn [ \fIpattern\fB ]\fR
+Lists all available schemas (namespaces). If \fIpattern\fR (a regular expression)
+is specified, only schemas whose names match the pattern are listed.
+.TP
+\fB\\do [ \fIpattern\fB ]\fR
+Lists available operators with their operand and return types.
+If \fIpattern\fR is
+specified, only operators whose names match the pattern are listed.
+.TP
+\fB\\dp [ \fIpattern\fB ]\fR
+Produces a list of all available tables with their
+associated access privileges.
+If \fIpattern\fR is
+specified, only tables whose names match the pattern are listed.
+
+The commands \fBgrant\fR(7) and
+\fBrevoke\fR(7)
+are used to set access privileges. See \fBgrant\fR(7)
+for more information.
+.TP
+\fB\\dT [ \fIpattern\fB ]\fR
+Lists all data types or only those that match \fIpattern\fR. The command form
+\\dT+ shows extra information.
+.TP
+\fB\\du [ \fIpattern\fB ]\fR
+Lists all database users or only those that match \fIpattern\fR.
+.TP
+\fB\\edit (or \\e) [ \fIfilename\fB ]\fR
+If \fIfilename\fR is
+specified, the file is edited; after the editor exits, its
+content is copied back to the query buffer. If no argument is
+given, the current query buffer is copied to a temporary file
+which is then edited in the same fashion.
+
+The new query buffer is then re-parsed according to the normal
+rules of \fBpsql\fR, where the whole buffer
+is treated as a single line. (Thus you cannot make scripts this
+way. Use \fB\\i\fR for that.) This means also that
+if the query ends with (or rather contains) a semicolon, it is
+immediately executed. In other cases it will merely wait in the
+query buffer.
+.sp
+.RS
+.B "Tip:"
+\fBpsql\fR searches the environment
+variables \fBPSQL_EDITOR\fR, \fBEDITOR\fR, and
+\fBVISUAL\fR (in that order) for an editor to use. If
+all of them are unset, \fI/bin/vi\fR is run.
+.RE
+.sp
+.TP
+\fB\\echo \fItext\fB [ ... ]\fR
+Prints the arguments to the standard output, separated by one
+space and followed by a newline. This can be useful to
+intersperse information in the output of scripts. For example:
+.sp
+.nf
+=> \fB\\echo `date`\fR
+Tue Oct 26 21:40:57 CEST 1999
+.sp
+.fi
+If the first argument is an unquoted -n the the trailing
+newline is not written.
+.sp
+.RS
+.B "Tip:"
+If you use the \fB\\o\fR command to redirect your
+query output you may wish to use \fB\\qecho\fR
+instead of this command.
+.RE
+.sp
+.TP
+\fB\\encoding [ \fIencoding\fB ]\fR
+Sets the client character set encoding. Without an argument, this command
+shows the current encoding.
+.TP
+\fB\\f [ \fIstring\fB ]\fR
+Sets the field separator for unaligned query output. The default
+is the vertical bar (|). See also
+\fB\\pset\fR for a generic way of setting output
+options.
+.TP
+\fB\\g [ { \fIfilename\fB | |\fIcommand\fB } ]\fR
+Sends the current query input buffer to the server and
+optionally saves the output in \fIfilename\fR or pipes the output
+into a separate Unix shell to execute \fIcommand\fR. A bare
+\\g is virtually equivalent to a semicolon. A
+\\g with argument is a ``one-shot''
+alternative to the \fB\\o\fR command.
+.TP
+\fB\\help (or \\h) [ \fIcommand\fB ]\fR
+Gives syntax help on the specified SQL
+command. If \fIcommand\fR
+is not specified, then \fBpsql\fR will list
+all the commands for which syntax help is available. If
+\fIcommand\fR is an
+asterisk (*), then syntax help on all
+SQL commands is shown.
+.sp
+.RS
+.B "Note:"
+To simplify typing, commands that consists of several words do
+not have to be quoted. Thus it is fine to type \fB\\help
+alter table\fR.
+.RE
+.sp
+.TP
+\fB\\H\fR
+Turns on HTML query output format. If the
+HTML format is already on, it is switched
+back to the default aligned text format. This command is for
+compatibility and convenience, but see \fB\\pset\fR
+about setting other output options.
+.TP
+\fB\\i \fIfilename\fB\fR
+Reads input from the file \fIfilename\fR and executes it as
+though it had been typed on the keyboard.
+.sp
+.RS
+.B "Note:"
+If you want to see the lines on the screen as they are read you
+must set the variable ECHO to
+all.
+.RE
+.sp
+.TP
+\fB\\l (or \\list)\fR
+List the names, owners, and character set encodings of all the databases in
+the server. Append a + to the command name to
+see any descriptions for the databases as well.
+.TP
+\fB\\lo_export \fIloid\fB \fIfilename\fB\fR
+Reads the large object with OID \fIloid\fR from the database and
+writes it to \fIfilename\fR. Note that this is
+subtly different from the server function
+\fBlo_export\fR, which acts with the permissions
+of the user that the database server runs as and on the server's
+file system.
+.sp
+.RS
+.B "Tip:"
+Use \fB\\lo_list\fR to find out the large object's
+OID.
+.RE
+.sp
+.TP
+\fB\\lo_import \fIfilename\fB [ \fIcomment\fB ]\fR
+Stores the file into a PostgreSQL
+large object. Optionally, it associates the given
+comment with the object. Example:
+.sp
+.nf
+foo=> \fB\\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'\fR
+lo_import 152801
+.sp
+.fi
+The response indicates that the large object received object ID
+152801 which one ought to remember if one wants to access the
+object ever again. For that reason it is recommended to always
+associate a human-readable comment with every object. Those can
+then be seen with the \fB\\lo_list\fR command.
+
+Note that this command is subtly different from the server-side
+\fBlo_import\fR because it acts as the local user
+on the local file system, rather than the server's user and file
+system.
+.TP
+\fB\\lo_list\fR
+Shows a list of all PostgreSQL
+large objects currently stored in the database,
+along with any comments provided for them.
+.TP
+\fB\\lo_unlink \fIloid\fB\fR
+Deletes the large object with OID
+\fIloid\fR from the
+database.
+.sp
+.RS
+.B "Tip:"
+Use \fB\\lo_list\fR to find out the large object's
+OID.
+.RE
+.sp
+.TP
+\fB\\o [ {\fIfilename\fB | |\fIcommand\fB} ]\fR
+Saves future query results to the file \fIfilename\fR or pipes future results
+into a separate Unix shell to execute \fIcommand\fR. If no arguments are
+specified, the query output will be reset to the standard output.
+
+``Query results'' includes all tables, command
+responses, and notices obtained from the database server, as
+well as output of various backslash commands that query the
+database (such as \fB\\d\fR), but not error
+messages.
+.sp
+.RS
+.B "Tip:"
+To intersperse text output in between query results, use
+\fB\\qecho\fR.
+.RE
+.sp
+.TP
+\fB\\p\fR
+Print the current query buffer to the standard output.
+.TP
+\fB\\pset \fIparameter\fB [ \fIvalue\fB ]\fR
+This command sets options affecting the output of query result
+tables. \fIparameter\fR
+describes which option is to be set. The semantics of
+\fIvalue\fR depend
+thereon.
+
+Adjustable printing options are:
+.RS
+.TP
+\fBformat\fR
+Sets the output format to one of unaligned,
+aligned, html, or
+latex. Unique abbreviations are allowed.
+(That would mean one letter is enough.)
+
+``Unaligned'' writes all columns of a row on a
+line, separated by the currently active field separator. This
+is intended to create output that might be intended to be read
+in by other programs (tab-separated, comma-separated).
+``Aligned'' mode is the standard, human-readable,
+nicely formatted text output that is default. The
+``HTML'' and
+``LaTeX'' modes put out tables that are intended to
+be included in documents using the respective mark-up
+language. They are not complete documents! (This might not be
+so dramatic in HTML, but in LaTeX you must
+have a complete document wrapper.)
+.TP
+\fBborder\fR
+The second argument must be a number. In general, the higher
+the number the more borders and lines the tables will have,
+but this depends on the particular format. In
+HTML mode, this will translate directly
+into the border=... attribute, in the
+others only values 0 (no border), 1 (internal dividing lines),
+and 2 (table frame) make sense.
+.TP
+\fBexpanded (or x)\fR
+Toggles between regular and expanded format. When expanded
+format is enabled, all output has two columns with the column
+name on the left and the data on the right. This mode is
+useful if the data wouldn't fit on the screen in the normal
+``horizontal'' mode.
+
+Expanded mode is supported by all four output formats.
+.TP
+\fBnull\fR
+The second argument is a string that should be printed
+whenever a column is null. The default is not to print
+anything, which can easily be mistaken for, say, an empty
+string. Thus, one might choose to write \\pset null
+\&'(null)'.
+.TP
+\fBfieldsep\fR
+Specifies the field separator to be used in unaligned output
+mode. That way one can create, for example, tab- or
+comma-separated output, which other programs might prefer. To
+set a tab as field separator, type \\pset fieldsep
+\&'\\t'. The default field separator is
+\&'|' (a vertical bar).
+.TP
+\fBfooter\fR
+Toggles the display of the default footer (x
+rows).
+.TP
+\fBrecordsep\fR
+Specifies the record (line) separator to use in unaligned
+output mode. The default is a newline character.
+.TP
+\fBtuples_only (or t)\fR
+Toggles between tuples only and full display. Full display may
+show extra information such as column headers, titles, and
+various footers. In tuples only mode, only actual table data
+is shown.
+.TP
+\fBtitle [ \fItext\fB ]\fR
+Sets the table title for any subsequently printed tables. This
+can be used to give your output descriptive tags. If no
+argument is given, the title is unset.
+.TP
+\fBtableattr (or T) [ \fItext\fB ]\fR
+Allows you to specify any attributes to be placed inside the
+HTML table tag. This
+could for example be cellpadding or
+bgcolor. Note that you probably don't want
+to specify border here, as that is already
+taken care of by \\pset border.
+.TP
+\fBpager\fR
+Controls use of a pager for query and \fBpsql\fR
+help output. If the environment variable \fBPAGER\fR
+is set, the output is piped to the specified program.
+Otherwise a platform-dependent default (such as
+\fImore\fR) is used.
+
+When the pager is off, the pager is not used. When the pager
+is on, the pager is used only when appropriate, i.e. the
+output is to a terminal and will not fit on the screen.
+(\fBpsql\fR does not do a perfect job of estimating
+when to use the pager.) \\pset pager turns the
+pager on and off. Pager can also be set to always,
+which causes the pager to be always used.
+.RE
+.PP
+
+Illustrations on how these different formats look can be seen in
+the Examples [\fBpsql\fR(1)] section.
+.sp
+.RS
+.B "Tip:"
+There are various shortcut commands for \fB\\pset\fR. See
+\fB\\a\fR, \fB\\C\fR, \fB\\H\fR,
+\fB\\t\fR, \fB\\T\fR, and \fB\\x\fR.
+.RE
+.sp
+.sp
+.RS
+.B "Note:"
+It is an error to call \fB\\pset\fR without
+arguments. In the future this call might show the current status
+of all printing options.
+.RE
+.sp
+.TP
+\fB\\q\fR
+Quits the \fBpsql\fR program.
+.TP
+\fB\\qecho \fItext\fB [ ... ]\fR
+This command is identical to \fB\\echo\fR except
+that all output will be written to the query output channel, as
+set by \fB\\o\fR.
+.TP
+\fB\\r\fR
+Resets (clears) the query buffer.
+.TP
+\fB\\s [ \fIfilename\fB ]\fR
+Print or save the command line history to \fIfilename\fR. If \fIfilename\fR is omitted, the history
+is written to the standard output. This option is only available
+if \fBpsql\fR is configured to use the
+GNU history library.
+.sp
+.RS
+.B "Note:"
+In the current version, it is no longer necessary to save the
+command history, since that will be done automatically on
+program termination. The history is also loaded automatically
+every time \fBpsql\fR starts up.
+.RE
+.sp
+.TP
+\fB\\set [ \fIname\fB [ \fIvalue\fB [ ... ]]]\fR
+Sets the internal variable \fIname\fR to \fIvalue\fR or, if more than one value
+is given, to the concatenation of all of them. If no second
+argument is given, the variable is just set with no value. To
+unset a variable, use the \fB\\unset\fR command.
+
+Valid variable names can contain characters, digits, and
+underscores. See the section Variables [\fBpsql\fR(1)] below for details.
+
+Although you are welcome to set any variable to anything you
+want, \fBpsql\fR treats several variables
+as special. They are documented in the section about variables.
+.sp
+.RS
+.B "Note:"
+This command is totally separate from the SQL
+command SET [\fBset\fR(7)].
+.RE
+.sp
+.TP
+\fB\\t\fR
+Toggles the display of output column name headings and row count
+footer. This command is equivalent to \\pset
+tuples_only and is provided for convenience.
+.TP
+\fB\\T \fItable_options\fB\fR
+Allows you to specify attributes to be placed within the
+table tag in HTML tabular
+output mode. This command is equivalent to \\pset
+tableattr \fItable_options\fR.
+.TP
+\fB\\timing\fR
+Toggles a display of how long each SQL statement takes, in milliseconds.
+.TP
+\fB\\w {\fIfilename\fB | \fI|command\fB}\fR
+Outputs the current query buffer to the file \fIfilename\fR or pipes it to the Unix
+command \fIcommand\fR.
+.TP
+\fB\\x\fR
+Toggles extended table formatting mode. As such it is equivalent to
+\\pset expanded.
+.TP
+\fB\\z [ \fIpattern\fB ]\fR
+Produces a list of all available tables with their
+associated access privileges.
+If a \fIpattern\fR is
+specified, only tables whose names match the pattern are listed.
+
+The commands \fBgrant\fR(7) and
+\fBrevoke\fR(7)
+are used to set access privileges. See \fBgrant\fR(7)
+for more information.
+
+This is an alias for \fB\\dp\fR (``display
+privileges'').
+.TP
+\fB\\! [ \fIcommand\fB ]\fR
+Escapes to a separate Unix shell or executes the Unix command
+\fIcommand\fR. The
+arguments are not further interpreted, the shell will see them
+as is.
+.TP
+\fB\\?\fR
+Shows help information about the backslash commands.
+.PP
+.PP
+The various \\d commands accept a \fIpattern\fR parameter to specify the
+object name(s) to be displayed. * means ``any
+sequence of characters'' and ? means ``any single
+character''. (This notation is comparable to Unix shell file name
+patterns.) Advanced users can also use regular-expression
+notations such as character classes, for example [0-9]
+to match ``any digit''. To make any of these
+pattern-matching characters be interpreted literally, surround it
+with double quotes.
+.PP
+A pattern that contains an (unquoted) dot is interpreted as a schema
+name pattern followed by an object name pattern. For example,
+\\dt foo*.bar* displays all tables in schemas whose name
+starts with foo and whose table name 
+starts with bar. If no dot appears, then the pattern
+matches only objects that are visible in the current schema search path.
+.PP
+Whenever the \fIpattern\fR parameter
+is omitted completely, the \\d commands display all objects
+that are visible in the current schema search path. To see all objects
+in the database, use the pattern *.*.
+.SS "ADVANCED FEATURES"
+.SS "VARIABLES"
+.PP
+\fBpsql\fR provides variable substitution
+features similar to common Unix command shells.
+Variables are simply name/value pairs, where the value
+can be any string of any length. To set variables, use the
+\fBpsql\fR meta-command
+\fB\\set\fR:
+.sp
+.nf
+testdb=> \fB\\set foo bar\fR
+.sp
+.fi
+sets the variable foo to the value
+bar. To retrieve the content of the variable, precede
+the name with a colon and use it as the argument of any slash
+command:
+.sp
+.nf
+testdb=> \fB\\echo :foo\fR
+bar
+.sp
+.fi
+.sp
+.RS
+.B "Note:"
+The arguments of \fB\\set\fR are subject to the same
+substitution rules as with other commands. Thus you can construct
+interesting references such as \\set :foo
+\&'something' and get ``soft links'' or
+``variable variables'' of Perl
+or PHP fame,
+respectively. Unfortunately (or fortunately?), there is no way to do
+anything useful with these constructs. On the other hand,
+\\set bar :foo is a perfectly valid way to copy a
+variable.
+.RE
+.sp
+.PP
+If you call \fB\\set\fR without a second argument, the
+variable is set, with an empty string as value. To unset (or delete) a
+variable, use the command \fB\\unset\fR.
+.PP
+\fBpsql\fR's internal variable names can
+consist of letters, numbers, and underscores in any order and any
+number of them. A number of these variables are treated specially
+by \fBpsql\fR. They indicate certain option
+settings that can be changed at run time by altering the value of
+the variable or represent some state of the application. Although
+you can use these variables for any other purpose, this is not
+recommended, as the program behavior might grow really strange
+really quickly. By convention, all specially treated variables
+consist of all upper-case letters (and possibly numbers and
+underscores). To ensure maximum compatibility in the future, avoid
+using such variable names for your own purposes. A list of all specially
+treated variables follows.
+.TP
+\fBAUTOCOMMIT\fR
+When on (the default), each SQL command is automatically
+committed upon successful completion. To postpone commit in this
+mode, you must enter a \fBBEGIN\fR or \fBSTART
+TRANSACTION\fR SQL command. When off or unset, SQL
+commands are not committed until you explicitly issue
+\fBCOMMIT\fR or \fBEND\fR. The autocommit-off
+mode works by issuing an implicit \fBBEGIN\fR for you, just
+before any command that is not already in a transaction block and
+is not itself a \fBBEGIN\fR or other transaction-control
+command.
+.sp
+.RS
+.B "Note:"
+In autocommit-off mode, you must explicitly abandon any failed
+transaction by entering \fBABORT\fR or \fBROLLBACK\fR.
+Also keep in mind that if you exit the session
+without committing, your work will be lost.
+.RE
+.sp
+.sp
+.RS
+.B "Note:"
+The autocommit-on mode is PostgreSQL's traditional
+behavior, but autocommit-off is closer to the SQL spec. If you
+prefer autocommit-off, you may wish to set it in
+your \fI.psqlrc\fR file.
+.RE
+.sp
+.TP
+\fBDBNAME\fR
+The name of the database you are currently connected to. This is
+set every time you connect to a database (including program
+start-up), but can be unset.
+.TP
+\fBECHO\fR
+If set to all, all lines
+entered or from a script are written to the standard output
+before they are parsed or executed. To select this behavior on program
+start-up, use the switch \fB-a\fR. If set to
+queries,
+\fBpsql\fR merely prints all queries as
+they are sent to the server. The switch for this is
+\fB-e\fR.
+.TP
+\fBECHO_HIDDEN\fR
+When this variable is set and a backslash command queries the
+database, the query is first shown. This way you can study the
+PostgreSQL internals and provide
+similar functionality in your own programs. (To select this behavior
+on program start-up, use the switch \fB-E\fR.) If you set
+the variable to the value noexec, the queries are
+just shown but are not actually sent to the server and executed.
+.TP
+\fBENCODING\fR
+The current client character set encoding.
+.TP
+\fBHISTCONTROL\fR
+If this variable is set to ignorespace,
+lines which begin with a space are not entered into the history
+list. If set to a value of ignoredups, lines
+matching the previous history line are not entered. A value of
+ignoreboth combines the two options. If
+unset, or if set to any other value than those above, all lines
+read in interactive mode are saved on the history list.
+.sp
+.RS
+.B "Note:"
+This feature was shamelessly plagiarized from
+\fBBash\fR.
+.RE
+.sp
+.TP
+\fBHISTSIZE\fR
+The number of commands to store in the command history. The
+default value is 500.
+.sp
+.RS
+.B "Note:"
+This feature was shamelessly plagiarized from
+\fBBash\fR.
+.RE
+.sp
+.TP
+\fBHOST\fR
+The database server host you are currently connected to. This is
+set every time you connect to a database (including program
+start-up), but can be unset.
+.TP
+\fBIGNOREEOF\fR
+If unset, sending an EOF character (usually
+\fBControl\fR+\fBD\fR)
+to an interactive session of \fBpsql\fR
+will terminate the application. If set to a numeric value,
+that many EOF characters are ignored before the
+application terminates. If the variable is set but has no
+numeric value, the default is 10.
+.sp
+.RS
+.B "Note:"
+This feature was shamelessly plagiarized from
+\fBBash\fR.
+.RE
+.sp
+.TP
+\fBLASTOID\fR
+The value of the last affected OID, as returned from an
+\fBINSERT\fR or \fBlo_insert\fR
+command. This variable is only guaranteed to be valid until
+after the result of the next SQL command has
+been displayed.
+.TP
+\fBON_ERROR_STOP\fR
+By default, if non-interactive scripts encounter an error, such
+as a malformed SQL command or internal
+meta-command, processing continues. This has been the
+traditional behavior of \fBpsql\fR but it
+is sometimes not desirable. If this variable is set, script
+processing will immediately terminate. If the script was called
+from another script it will terminate in the same fashion. If
+the outermost script was not called from an interactive
+\fBpsql\fR session but rather using the
+\fB-f\fR option, \fBpsql\fR will
+return error code 3, to distinguish this case from fatal error
+conditions (error code 1).
+.TP
+\fBPORT\fR
+The database server port to which you are currently connected.
+This is set every time you connect to a database (including
+program start-up), but can be unset.
+.TP
+\fBPROMPT1\fR
+.TP
+\fBPROMPT2\fR
+.TP
+\fBPROMPT3\fR
+These specify what the prompts \fBpsql\fR
+issues should look like. See Prompting [\fBpsql\fR(1)] below.
+.TP
+\fBQUIET\fR
+This variable is equivalent to the command line option
+\fB-q\fR. It is probably not too useful in
+interactive mode.
+.TP
+\fBSINGLELINE\fR
+This variable is equivalent to the command line option
+\fB-S\fR.
+.TP
+\fBSINGLESTEP\fR
+This variable is equivalent to the command line option
+\fB-s\fR.
+.TP
+\fBUSER\fR
+The database user you are currently connected as. This is set
+every time you connect to a database (including program
+start-up), but can be unset.
+.TP
+\fBVERBOSITY\fR
+This variable can be set to the values default,
+verbose, or terse to control the verbosity
+of error reports.
+.SS "SQL INTERPOLATION"
+.PP
+An additional useful feature of \fBpsql\fR
+variables is that you can substitute (``interpolate'')
+them into regular SQL statements. The syntax for
+this is again to prepend the variable name with a colon
+(:).
+.sp
+.nf
+testdb=> \fB\\set foo 'my_table'\fR
+testdb=> \fBSELECT * FROM :foo;\fR
+.sp
+.fi
+would then query the table my_table. The value of
+the variable is copied literally, so it can even contain unbalanced
+quotes or backslash commands. You must make sure that it makes sense
+where you put it. Variable interpolation will not be performed into
+quoted SQL entities.
+.PP
+A popular application of this facility is to refer to the last
+inserted OID in subsequent statements to build a
+foreign key scenario. Another possible use of this mechanism is to
+copy the contents of a file into a table column. First load the file into a
+variable and then proceed as above.
+.sp
+.nf
+testdb=> \fB\\set content '\\'' `cat my_file.txt` '\\''\fR
+testdb=> \fBINSERT INTO my_table VALUES (:content);\fR
+.sp
+.fi
+One possible problem with this approach is that \fImy_file.txt\fR
+might contain single quotes. These need to be escaped so that
+they don't cause a syntax error when the second line is processed. This
+could be done with the program \fBsed\fR:
+.sp
+.nf
+testdb=> \fB\\set content '\\'' `sed -e "s/'/\\\\\\\\\\\\'/g" < my_file.txt` '\\''\fR
+.sp
+.fi
+Observe the correct number of backslashes (6)! It works
+this way: After \fBpsql\fR has parsed this
+line, it passes sed -e "s/'/\\\\\\'/g" < my_file.txt
+to the shell. The shell will do its own thing inside the double
+quotes and execute \fBsed\fR with the arguments
+-e and s/'/\\\\'/g. When
+\fBsed\fR parses this it will replace the two
+backslashes with a single one and then do the substitution. Perhaps
+at one point you thought it was great that all Unix commands use the
+same escape character. And this is ignoring the fact that you might
+have to escape all backslashes as well because
+SQL text constants are also subject to certain
+interpretations. In that case you might be better off preparing the
+file externally.
+.PP
+Since colons may legally appear in SQL commands, the following rule
+applies: the character sequence
+``:name'' is not changed unless ``name'' is the name
+of a variable that is currently set. In any case you can escape
+a colon with a backslash to protect it from substitution. (The
+colon syntax for variables is standard SQL for
+embedded query languages, such as \fBECPG\fR.
+The colon syntax for array slices and type casts are
+PostgreSQL extensions, hence the
+conflict.)
+.SS "PROMPTING"
+.PP
+The prompts \fBpsql\fR issues can be customized
+to your preference. The three variables PROMPT1,
+PROMPT2, and PROMPT3 contain strings
+and special escape sequences that describe the appearance of the
+prompt. Prompt 1 is the normal prompt that is issued when
+\fBpsql\fR requests a new command. Prompt 2 is
+issued when more input is expected during command input because the
+command was not terminated with a semicolon or a quote was not closed.
+Prompt 3 is issued when you run an SQL
+\fBCOPY\fR command and you are expected to type in the
+row values on the terminal.
+.PP
+The value of the selected prompt variable is printed literally,
+except where a percent sign (%) is encountered.
+Depending on the next character, certain other text is substituted
+instead. Defined substitutions are:
+.TP
+\fB%M\fR
+The full host name (with domain name) of the database server,
+or [local] if the connection is over a Unix
+domain socket, or
+[local:\fI/dir/name\fR], if the Unix domain socket is not at the compiled in default
+location.
+.TP
+\fB%m\fR
+The host name of the database server, truncated at the
+first dot, or [local] if the connection is
+over a Unix domain socket.
+.TP
+\fB%>\fR
+The port number at which the database server is listening.
+.TP
+\fB%n\fR
+The database session user name. (The expansion of this
+value might change during a database session as the result
+of the command \fBSET SESSION
+AUTHORIZATION\fR.)
+.TP
+\fB%/\fR
+The name of the current database.
+.TP
+\fB%~\fR
+Like %/, but the output is ~
+(tilde) if the database is your default database.
+.TP
+\fB%#\fR
+If the session user is a database superuser, then a
+#, otherwise a >.
+(The expansion of this value might change during a database
+session as the result of the command \fBSET SESSION
+AUTHORIZATION\fR.)
+.TP
+\fB%R\fR
+In prompt 1 normally =, but ^ if
+in single-line mode, and ! if the session is
+disconnected from the database (which can happen if
+\fB\\connect\fR fails). In prompt 2 the sequence is
+replaced by -, *, a single quote,
+or a double quote, depending on whether
+\fBpsql\fR expects more input because the
+command wasn't terminated yet, because you are inside a
+/* ... */ comment, or because you are inside
+a quote. In prompt 3 the sequence doesn't produce anything.
+.TP
+\fB%x\fR
+Transaction status: an empty string when not in a transaction
+block, or * when in a transaction block, or
+! when in a failed transaction block, or ?
+when the transaction state is indeterminate (for example, because
+there is no connection).
+.TP
+\fB%\fIdigits\fB\fR
+The character with the indicated numeric code is substituted.
+If \fIdigits\fR starts
+with 0x the rest of the characters are
+interpreted as hexadecimal; otherwise if the first digit is
+0 the digits are interpreted as octal;
+otherwise the digits are read as a decimal number.
+.TP
+\fB%:\fIname\fB:\fR
+The value of the \fBpsql\fR variable
+\fIname\fR. See the
+section Variables [\fBpsql\fR(1)] for details.
+.TP
+\fB%`\fIcommand\fB`\fR
+The output of \fIcommand\fR, similar to ordinary
+``back-tick'' substitution.
+.PP
+To insert a percent sign into your prompt, write
+%%. The default prompts are
+\&'%/%R%# ' for prompts 1 and 2, and
+\&'>> ' for prompt 3.
+.sp
+.RS
+.B "Note:"
+This feature was shamelessly plagiarized from
+\fBtcsh\fR.
+.RE
+.sp
+.SS "COMMAND-LINE EDITING"
+.PP
+\fBpsql\fR supports the \fBReadline\fR
+library for convenient line editing and retrieval. The command
+history is stored in a file named \fI.psql_history\fR
+in your home directory and is reloaded when
+\fBpsql\fR starts up. Tab-completion is also
+supported, although the completion logic makes no claim to be an
+SQL parser. If for some reason you do not like the tab completion, you
+can turn if off by putting this in a file named
+\fI\&.inputrc\fR in your home directory:
+.sp
+.nf
+$if psql
+set disable-completion on
+$endif
+.sp
+.fi
+(This is not a \fBpsql\fR but a
+\fBReadline\fR feature. Read its documentation
+for further details.)
+.SH "ENVIRONMENT"
+.TP
+\fBHOME\fR
+Directory for initialization file (\fI.psqlrc\fR)
+and command history file (\fI.psql_history\fR).
+.TP
+\fBPAGER\fR
+If the query results do not fit on the screen, they are piped
+through this command. Typical values are
+more or less. The default
+is platform-dependent. The use of the pager can be disabled by
+using the \fB\\pset\fR command.
+.TP
+\fBPGDATABASE\fR
+Default database to connect to
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.TP
+\fBPSQL_EDITOR\fR
+.TP
+\fBEDITOR\fR
+.TP
+\fBVISUAL\fR
+Editor used by the \fB\\e\fR command. The variables
+are examined in the order listed; the first that is set is used.
+.TP
+\fBSHELL\fR
+Command executed by the \fB\\!\fR command.
+.TP
+\fBTMPDIR\fR
+Directory for storing temporary files. The default is
+\fI/tmp\fR.
+.SH "FILES"
+.TP 0.2i
+\(bu
+Before starting up, \fBpsql\fR attempts to
+read and execute commands from the file
+\fI$HOME/.psqlrc\fR. It could be used to set up
+the client or the server to taste (using the \fB\\set
+\fRand \fBSET\fR commands).
+.TP 0.2i
+\(bu
+The command-line history is stored in the file
+\fI$HOME/.psql_history\fR.
+.SH "NOTES"
+.TP 0.2i
+\(bu
+In an earlier life \fBpsql\fR allowed the
+first argument of a single-letter backslash command to start
+directly after the command, without intervening whitespace. For
+compatibility this is still supported to some extent,
+but were are not going to explain the details here as this use is
+discouraged. If you get strange messages, keep this in mind.
+For example
+.sp
+.nf
+testdb=> \fB\\foo\fR
+Field separator is "oo".
+.sp
+.fi
+which is perhaps not what one would expect.
+.TP 0.2i
+\(bu
+\fBpsql\fR only works smoothly with servers
+of the same version. That does not mean other combinations will
+fail outright, but subtle and not-so-subtle problems might come
+up. Backslash commands are particularly likely to fail if the
+server is of a different version.
+.SH "EXAMPLES"
+.PP
+The first example shows how to spread a command over several lines of
+input. Notice the changing prompt:
+.sp
+.nf
+testdb=> \fBCREATE TABLE my_table (\fR
+testdb(> \fB first integer not null default 0,\fR
+testdb(> \fB second text\fR
+testdb-> \fB);\fR
+CREATE TABLE
+.sp
+.fi
+Now look at the table definition again:
+.sp
+.nf
+testdb=> \fB\\d my_table\fR
+             Table "my_table"
+ Attribute |  Type   |      Modifier
+-----------+---------+--------------------
+ first     | integer | not null default 0
+ second    | text    |
+.sp
+.fi
+Now we change the prompt to something more interesting:
+.sp
+.nf
+testdb=> \fB\\set PROMPT1 '%n@%m %~%R%# '\fR
+peter at localhost testdb=>
+.sp
+.fi
+Let's assume you have filled the table with data and want to take a
+look at it:
+.sp
+.nf
+peter at localhost testdb=> SELECT * FROM my_table;
+ first | second
+-------+--------
+     1 | one
+     2 | two
+     3 | three
+     4 | four
+(4 rows)
+.sp
+.fi
+You can make this table look differently by using the
+\fB\\pset\fR command:
+.sp
+.nf
+peter at localhost testdb=> \fB\\pset border 2\fR
+Border style is 2.
+peter at localhost testdb=> \fBSELECT * FROM my_table;\fR
++-------+--------+
+| first | second |
++-------+--------+
+|     1 | one    |
+|     2 | two    |
+|     3 | three  |
+|     4 | four   |
++-------+--------+
+(4 rows)
+
+peter at localhost testdb=> \fB\\pset border 0\fR
+Border style is 0.
+peter at localhost testdb=> \fBSELECT * FROM my_table;\fR
+first second
+----- ------
+    1 one
+    2 two
+    3 three
+    4 four
+(4 rows)
+
+peter at localhost testdb=> \fB\\pset border 1\fR
+Border style is 1.
+peter at localhost testdb=> \fB\\pset format unaligned\fR
+Output format is unaligned.
+peter at localhost testdb=> \fB\\pset fieldsep ","\fR
+Field separator is ",".
+peter at localhost testdb=> \fB\\pset tuples_only\fR
+Showing only tuples.
+peter at localhost testdb=> \fBSELECT second, first FROM my_table;\fR
+one,1
+two,2
+three,3
+four,4
+.sp
+.fi
+Alternatively, use the short commands:
+.sp
+.nf
+peter at localhost testdb=> \fB\\a \\t \\x\fR
+Output format is aligned.
+Tuples only is off.
+Expanded display is on.
+peter at localhost testdb=> \fBSELECT * FROM my_table;\fR
+-[ RECORD 1 ]-
+first  | 1
+second | one
+-[ RECORD 2 ]-
+first  | 2
+second | two
+-[ RECORD 3 ]-
+first  | 3
+second | three
+-[ RECORD 4 ]-
+first  | 4
+second | four
+.sp
+.fi
diff --git a/raw/man1/pushd.1 b/raw/man1/pushd.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/pushd.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/pwd.1 b/raw/man1/pwd.1
new file mode 100644
index 0000000..09e3b7f
--- /dev/null
+++ b/raw/man1/pwd.1
@@ -0,0 +1,40 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH PWD "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+pwd \- print name of current/working directory
+.SH SYNOPSIS
+.B pwd
+[\fIOPTION\fR]
+.SH DESCRIPTION
+NOTE: your shell may have its own version of pwd which will supercede
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.PP
+Print the full filename of the current working directory.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B pwd
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B pwd
+programs are properly installed at your site, the command
+.IP
+.B info pwd
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/quota.1 b/raw/man1/quota.1
new file mode 100644
index 0000000..3c49610
--- /dev/null
+++ b/raw/man1/quota.1
@@ -0,0 +1,125 @@
+.TH QUOTA 1
+.SH NAME
+quota \- display disk usage and limits
+.SH SYNOPSIS
+.B quota
+[
+.B -F
+.I format-name
+] [
+.BR -guvs \ |
+.B q
+]
+.br
+.B quota
+[
+.B -F
+.I format-name
+] [
+.BR -uvs \ |
+.B q
+]
+.I user
+.br
+.B quota
+[
+.B -F
+.I format-name
+] [
+.BR -gvs \ |
+.B q
+]
+.I group
+.SH DESCRIPTION
+.B quota
+displays users' disk usage and limits.
+By default only the user quotas are printed.
+.PP
+.B quota
+reports the quotas of all the filesystems listed in
+.BR /etc/mtab .
+For filesystems that are NFS-mounted a call to the rpc.rquotad on
+the server machine is performed to get the information.
+.SH OPTIONS
+.TP
+.B \-F \f2format-name\f1
+Show quota for specified format (ie. don't perform format autodetection).
+Possible format names are:
+.B vfsold
+(version 1 quota),
+.B vfsv0
+(version 2 quota),
+.B rpc
+(quota over NFS),
+.B xfs
+(quota on XFS filesystem)
+.TP
+.B \-g
+Print group quotas for the group 
+of which the user is a member.
+The optional
+.TP
+.B \-u
+flag is equivalent to the default.
+.TP
+.B \-v
+will display quotas on filesystems
+where no storage is allocated.
+.TP
+.B \-s
+flag will make
+.BR quota (1)
+try to choose units for showing limits, used space and used inodes.
+.TP
+.B \-q
+Print a more terse message,
+containing only information
+on filesystems where usage is over quota.
+.LP
+Specifying both
+.B \-g
+and
+.B \-u
+displays both the user quotas and the group quotas (for
+the user).
+.LP
+Only the super-user may use the
+.B \-u
+flag and the optional
+.B user
+argument to view the limits of other users.
+Non-super-users can use the the
+.B \-g
+flag and optional
+.B group
+argument to view only the limits of groups of which they are members.
+.LP
+The
+.B \-q
+flag takes precedence over the
+.B \-v
+flag.
+.SH DIAGNOSTICS
+If
+.B quota
+exits with a non-zero status, one or more filesystems
+are over quota.
+.SH FILES
+.PD 0
+.TP 20
+.B aquota.user " or " aquota.group
+quota file at the filesystem root (version 2 quota, non-XFS filesystems)
+.TP 20
+.B quota.user " or " quota.group
+quota file at the filesystem root (version 1 quota, non-XFS filesystems)
+.TP
+.B /etc/mtab
+default filesystems
+.PD
+.SH SEE ALSO
+.BR quotactl (2),
+.BR fstab (5),
+.BR edquota (8),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8)
diff --git a/raw/man1/read.1 b/raw/man1/read.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/read.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/readonly.1 b/raw/man1/readonly.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/readonly.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/return.1 b/raw/man1/return.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/return.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/rlogin.1 b/raw/man1/rlogin.1
new file mode 100644
index 0000000..182736a
--- /dev/null
+++ b/raw/man1/rlogin.1
@@ -0,0 +1,125 @@
+.\" Copyright (c) 1983, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)rlogin.1	6.19 (Berkeley) 7/27/91
+.\"
+.Dd August 15, 1999
+.Dt RLOGIN 1
+.Os "Linux NetKit (0.17)"
+.Sh NAME
+.Nm rlogin
+.Nd remote login
+.Sh SYNOPSIS
+.Ar rlogin
+.Op Fl 8EKLdx
+.Op Fl e Ar char
+.Op Fl l Ar username
+.Ar host
+.Sh DESCRIPTION
+.Nm Rlogin
+starts a terminal session on a remote host
+.Ar host  .
+.Pp
+The standard Berkeley
+.Pa rhosts
+authorization mechanism is used.
+The options are as follows:
+.Bl -tag -width flag
+.It Fl 8
+The
+.Fl 8
+option allows an eight-bit input data path at all times; otherwise
+parity bits are stripped except when the remote side's stop and start
+characters are other than
+^S/^Q .
+.It Fl E
+The
+.Fl E
+option stops any character from being recognized as an escape character.
+When used with the
+.Fl 8
+option, this provides a completely transparent connection.
+.It Fl L
+The
+.Fl L
+option allows the rlogin session to be run in ``litout'' (see
+.Xr tty 4 )
+mode.
+.It Fl d
+The
+.Fl d
+option turns on socket debugging (see
+.Xr setsockopt 2 )
+on the TCP sockets used for communication with the remote host.
+.It Fl e
+The
+.Fl e
+option allows user specification of the escape character, which is
+``~'' by default.
+This specification may be as a literal character, or as an octal
+value in the form \ennn.
+.El
+.Pp
+A line of the form ``<escape char>.'' disconnects from the remote host.
+Similarly, the line ``<escape char>^Z'' will suspend the
+.Nm rlogin
+session, and ``<escape char><delayed-suspend char>'' suspends the
+send portion of the rlogin, but allows output from the remote system.
+By default, the tilde (``~'') character is the escape character, and
+normally control-Y (``^Y'') is the delayed-suspend character.
+.Pp
+All echoing takes place at the remote site, so that (except for delays)
+the
+.Nm rlogin
+is transparent.
+Flow control via ^S/^Q and flushing of input and output on interrupts
+are handled properly.
+.Sh ENVIRONMENT
+The following environment variable is utilized by
+.Nm rlogin :
+.Bl -tag -width TERM
+.It Ev TERM
+Determines the user's terminal type.
+.El
+.Sh SEE ALSO
+.Xr rsh 1 ,
+.Sh HISTORY
+The
+.Nm rlogin
+command appeared in
+.Bx 4.2 .
+.Sh BUGS
+.Nm Rlogin
+will be replaced by
+.Xr telnet  1
+in the near future.
+.Pp
+More of the environment should be propagated.
diff --git a/raw/man1/rm.1 b/raw/man1/rm.1
new file mode 100644
index 0000000..057c0fc
--- /dev/null
+++ b/raw/man1/rm.1
@@ -0,0 +1,79 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH RM "1" "March 2003" "rm (coreutils) 5.0" "User Commands"
+.SH NAME
+rm \- remove files or directories
+.SH SYNOPSIS
+.B rm
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR rm .
+.B rm
+removes each specified file.  By default, it does not remove
+directories.
+.P
+If a file is unwritable, the standard input is a tty, and
+the \fI\-f\fR or \fI\-\-force\fR option is not given,
+.B rm
+prompts the user for whether to remove the file.  If the response
+does not begin with `y' or `Y', the file is skipped.
+.SH OPTIONS
+.PP
+Remove (unlink) the FILE(s).
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+unlink FILE, even if it is a non-empty directory
+(super-user only)
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+ignore nonexistent files, never prompt
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt before any removal
+.TP
+\fB\-r\fR, \fB\-R\fR, \fB\-\-recursive\fR
+remove the contents of directories recursively
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+To remove a file whose name starts with a `-', for example `-foo',
+use one of these commands:
+.IP
+\fBrm\fR \fB\-\-\fR \-foo
+.IP
+\fBrm\fR ./\-foo
+.PP
+Note that if you use rm to remove a file, it is usually possible to recover
+the contents of that file.  If you want more assurance that the contents are
+truly unrecoverable, consider using shred.
+.SH AUTHOR
+Written by Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+shred(1)
+.PP
+The full documentation for
+.B rm
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B rm
+programs are properly installed at your site, the command
+.IP
+.B info rm
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/rmdir.1 b/raw/man1/rmdir.1
new file mode 100644
index 0000000..ef87507
--- /dev/null
+++ b/raw/man1/rmdir.1
@@ -0,0 +1,51 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH RMDIR "1" "October 2003" "rmdir (coreutils) 5.0" FSF
+.SH NAME
+rmdir \- remove empty directories
+.SH SYNOPSIS
+.B rmdir
+[\fIOPTION\fR]... \fIDIRECTORY\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Remove the DIRECTORY(ies), if they are empty.
+.HP
+\fB\-\-ignore\-fail\-on\-non\-empty\fR
+.IP
+ignore each failure that is solely because a directory
+is non-empty
+.TP
+\fB\-p\fR, \fB\-\-parents\fR
+remove DIRECTORY, then try to remove each directory
+component of that path name.  E.g., `rmdir \fB\-p\fR a/b/c' is
+similar to `rmdir a/b/c a/b a'.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every directory processed
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B rmdir
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B rmdir
+programs are properly installed at your site, the command
+.IP
+.B info rmdir
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/rvi.1 b/raw/man1/rvi.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/rvi.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/rview.1 b/raw/man1/rview.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/rview.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/rvim.1 b/raw/man1/rvim.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/rvim.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/scp.1 b/raw/man1/scp.1
new file mode 100644
index 0000000..a3ec2e0
--- /dev/null
+++ b/raw/man1/scp.1
@@ -0,0 +1,167 @@
+.\"  -*- nroff -*-
+.\"
+.\" scp.1
+.\"
+.\" Author: Tatu Ylonen <ylo at cs.hut.fi>
+.\"
+.\" Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
+.\"                    All rights reserved
+.\"
+.\" Created: Sun May  7 00:14:37 1995 ylo
+.\"
+.\" $OpenBSD: scp.1,v 1.27 2003/03/28 10:11:43 jmc Exp $
+.\"
+.Dd September 25, 1999
+.Dt SCP 1
+.Os
+.Sh NAME
+.Nm scp
+.Nd secure copy (remote file copy program)
+.Sh SYNOPSIS
+.Nm scp
+.Bk -words
+.Op Fl pqrvBC1246
+.Op Fl F Ar ssh_config
+.Op Fl S Ar program
+.Op Fl P Ar port
+.Op Fl c Ar cipher
+.Op Fl i Ar identity_file
+.Op Fl l Ar limit
+.Op Fl o Ar ssh_option
+.Sm off
+.Oo
+.Op Ar user@
+.Ar host1 No :
+.Oc Ns Ar file1
+.Sm on
+.Op Ar ...
+.Sm off
+.Oo
+.Op Ar user@
+.Ar host2 No :
+.Oc Ar file2
+.Sm on
+.Ek
+.Sh DESCRIPTION
+.Nm
+copies files between hosts on a network.
+It uses
+.Xr ssh 1
+for data transfer, and uses the same authentication and provides the
+same security as
+.Xr ssh 1 .
+Unlike
+.Xr rcp 1 ,
+.Nm
+will ask for passwords or passphrases if they are needed for
+authentication.
+.Pp
+Any file name may contain a host and user specification to indicate
+that the file is to be copied to/from that host.
+Copies between two remote hosts are permitted.
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl c Ar cipher
+Selects the cipher to use for encrypting the data transfer.
+This option is directly passed to
+.Xr ssh 1 .
+.It Fl i Ar identity_file
+Selects the file from which the identity (private key) for RSA
+authentication is read.
+This option is directly passed to
+.Xr ssh 1 .
+.It Fl l Ar limit
+Limits the used bandwidth, specified in Kbit/s.
+.It Fl p
+Preserves modification times, access times, and modes from the
+original file.
+.It Fl r
+Recursively copy entire directories.
+.It Fl v
+Verbose mode.
+Causes
+.Nm
+and
+.Xr ssh 1
+to print debugging messages about their progress.
+This is helpful in
+debugging connection, authentication, and configuration problems.
+.It Fl B
+Selects batch mode (prevents asking for passwords or passphrases).
+.It Fl q
+Disables the progress meter.
+.It Fl C
+Compression enable.
+Passes the
+.Fl C
+flag to
+.Xr ssh 1
+to enable compression.
+.It Fl F Ar ssh_config
+Specifies an alternative
+per-user configuration file for
+.Nm ssh .
+This option is directly passed to
+.Xr ssh 1 .
+.It Fl P Ar port
+Specifies the port to connect to on the remote host.
+Note that this option is written with a capital
+.Sq P ,
+because
+.Fl p
+is already reserved for preserving the times and modes of the file in
+.Xr rcp 1 .
+.It Fl S Ar program
+Name of
+.Ar program
+to use for the encrypted connection.
+The program must understand
+.Xr ssh 1
+options.
+.It Fl o Ar ssh_option
+Can be used to pass options to
+.Nm ssh
+in the format used in
+.Xr ssh_config 5 .
+This is useful for specifying options
+for which there is no separate
+.Nm scp
+command-line flag.
+.It Fl 1
+Forces
+.Nm
+to use protocol 1.
+.It Fl 2
+Forces
+.Nm
+to use protocol 2.
+.It Fl 4
+Forces
+.Nm
+to use IPv4 addresses only.
+.It Fl 6
+Forces
+.Nm
+to use IPv6 addresses only.
+.El
+.Sh DIAGNOSTICS
+.Nm
+exits with 0 on success or >0 if an error occurred.
+.Sh AUTHORS
+Timo Rinne <tri at iki.fi> and Tatu Ylonen <ylo at cs.hut.fi>
+.Sh HISTORY
+.Nm
+is based on the
+.Xr rcp 1
+program in BSD source code from the Regents of the University of
+California.
+.Sh SEE ALSO
+.Xr rcp 1 ,
+.Xr sftp 1 ,
+.Xr ssh 1 ,
+.Xr ssh-add 1 ,
+.Xr ssh-agent 1 ,
+.Xr ssh-keygen 1 ,
+.Xr ssh_config 5 ,
+.Xr sshd 8
diff --git a/raw/man1/set.1 b/raw/man1/set.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/set.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/setleds.1 b/raw/man1/setleds.1
new file mode 100644
index 0000000..21b50c9
--- /dev/null
+++ b/raw/man1/setleds.1
@@ -0,0 +1,84 @@
+.\" @(#)setleds.1 1.0 940924 aeb
+.TH SETLEDS 1 "24 Sep 1994"
+.SH NAME
+setleds \- set the keyboard leds
+.SH SYNOPSIS
+.B setleds
+.RI [ "-v" "] [" "-L" "] [" "-D" "] [" "-F" ]
+.RI [ {+|-}num "] [" {+|-}caps "] [" {+|-}scroll ]
+.SH DESCRIPTION
+.IX "setleds command" "" "\fLsetleds\fR command"  
+.LP
+.B Setleds
+reports and changes the led flag settings of a VT
+(namely NumLock, CapsLock and ScrollLock).
+Without arguments,
+.B setleds
+prints the current settings.
+With arguments, it sets or clears the indicated flags
+(and leaves the others unchanged). The settings before
+and after the change are reported if the -v flag is given.
+.LP
+The led flag settings are specific for each VT (and the VT
+corresponding to stdin is used).
+.LP
+By default (or with option -F),
+.B setleds
+will only change the VT flags (and their setting may be
+reflected by the keyboard leds).
+.LP
+With option -D,
+.B setleds
+will change both the VT flags and their default settings
+(so that a subsequent reset will not undo the change).
+This might be useful for people who always want to have numlock set.
+.LP
+With option -L,
+.B setleds
+will not touch the VT flags, but only change the leds.
+From this moment on, the leds will no longer reflect the VT flags
+(but display whatever is put into them). The command
+.B "setleds -L"
+(without further arguments) will restore the situation in which
+the leds reflect the VT flags.
+.LP
+One might use
+.B setleds
+in /etc/rc to define the initial and default state of NumLock,
+e.g. by
+.br
+.in +5m
+INITTY=/dev/tty[1-8]
+.br
+for tty in $INITTY; do
+.br
+.in +5m
+setleds -D +num < $tty
+.br
+.in -5m
+done
+.in -5m
+.SH OPTIONS
+.TP
+\-num \+num
+Clear or set NumLock.
+(At present, the NumLock setting influences the
+interpretation of keypad keys.
+Pressing the NumLock key complements the NumLock setting.)
+.TP
+\-caps \+caps
+Clear or set CapsLock.
+(At present, the CapsLock setting complements the Shift key
+when applied to letters.
+Pressing the CapsLock key complements the CapsLock setting.)
+.TP
+\-scroll \+scroll
+Clear or set ScrollLock.
+(At present, pressing the ScrollLock key (or ^S/^Q) stops/starts
+console output.)
+.SH "BUGS"
+In keyboard application mode the NumLock key does not
+influence the NumLock flag setting.
+.SH "SEE ALSO"
+.BR loadkeys (1)
+
diff --git a/raw/man1/setmetamode.1 b/raw/man1/setmetamode.1
new file mode 100644
index 0000000..2a0dd81
--- /dev/null
+++ b/raw/man1/setmetamode.1
@@ -0,0 +1,46 @@
+.\" @(#)setmetamode.1 1.0 940130 aeb
+.TH SETMETAMODE 1 "30 Jan 1994"
+.SH NAME
+setmetamode \- define the keyboard meta key handling
+.SH SYNOPSIS
+.B setmetamode
+[
+.I {meta|bit|metabit | esc|prefix|escprefix}
+]
+.SH DESCRIPTION
+.IX "setmetamode command" "" "\fLsetmetamode\fR command"  
+.LP
+Without argument,
+.B setmetamode
+prints the current Meta key mode.
+With argument, it sets the Meta key mode as indicated.
+The setting before and after the change are reported.
+.LP
+The Meta key mode is specific for each VT (and the VT
+corresponding to stdin is used).
+One might use
+.B setmetamode
+in /etc/rc to define the initial state of the Meta key mode,
+e.g. by
+.br
+.in +5m
+INITTY=/dev/tty[1-8]
+.br
+for tty in $INITTY; do
+.br
+.in +5m
+setmetamode escprefix < $tty
+.br
+.in -5m
+done
+.in -5m
+.SH OPTIONS
+.TP
+esc prefix escprefix
+The Meta key sends an Escape prefix.
+.TP
+meta bit metabit
+The Meta key sets the high order bit of the character.
+.SH "SEE ALSO"
+.BR loadkeys (1)
+
diff --git a/raw/man1/sh.1 b/raw/man1/sh.1
new file mode 100644
index 0000000..e07a9f6
--- /dev/null
+++ b/raw/man1/sh.1
@@ -0,0 +1,8368 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\"	Chet Ramey
+.\"	Information Network Services
+.\"	Case Western Reserve University
+.\"	chet at ins.CWRU.Edu
+.\"
+.\"	Last Change: Mon Jul 15 15:20:56 EDT 2002
+.\"
+.\" bash_builtins, strip all but Built-Ins section
+.if \n(zZ=1 .ig zZ
+.if \n(zY=1 .ig zY
+.TH BASH 1 "2002 July 15" "GNU Bash-2.05b"
+.\"
+.\" There's some problem with having a `@'
+.\" in a tagged paragraph with the BSD man macros.
+.\" It has to do with `@' appearing in the }1 macro.
+.\" This is a problem on 4.3 BSD and Ultrix, but Sun
+.\" appears to have fixed it.
+.\" If you're seeing the characters
+.\" `@u-3p' appearing before the lines reading
+.\" `possible-hostname-completions
+.\" and `complete-hostname' down in READLINE,
+.\" then uncomment this redefinition.
+.\"
+.de }1
+.ds ]X \&\\*(]B\\
+.nr )E 0
+.if !"\\$1"" .nr )I \\$1n
+.}f
+.ll \\n(LLu
+.in \\n()Ru+\\n(INu+\\n()Iu
+.ti \\n(INu
+.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X
+.br\}
+.el \\*(]X\h|\\n()Iu+\\n()Ru\c
+.}f
+..
+.\"
+.\" File Name macro.  This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+bash \- GNU Bourne-Again SHell
+.SH SYNOPSIS
+.B bash
+[options]
+[file]
+.SH COPYRIGHT
+.if n Bash is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+.B Bash
+is an \fBsh\fR-compatible command language interpreter that
+executes commands read from the standard input or from a file.
+.B Bash
+also incorporates useful features from the \fIKorn\fP and \fIC\fP
+shells (\fBksh\fP and \fBcsh\fP).
+.PP
+.B Bash
+is intended to be a conformant implementation of the IEEE
+POSIX Shell and Tools specification (IEEE Working Group 1003\.2).
+.SH OPTIONS
+In addition to the single-character shell options documented in the
+description of the \fBset\fR builtin command, \fBbash\fR
+interprets the following options when it is invoked:
+.PP
+.PD 0
+.TP 10
+.BI \-c "\| string\^"
+If the
+.B \-c
+option is present, then commands are read from
+.IR string .
+If there are arguments after the
+.IR string ,
+they are assigned to the positional parameters, starting with
+.BR $0 .
+.TP
+.B \-i
+If the
+.B \-i
+option is present, the shell is
+.IR interactive .
+.TP
+.B \-l
+Make
+.B bash
+act as if it had been invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-r
+If the
+.B \-r
+option is present, the shell becomes
+.I restricted
+(see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-s
+If the
+.B \-s
+option is present, or if no arguments remain after option
+processing, then commands are read from the standard input.
+This option allows the positional parameters to be set
+when invoking an interactive shell.
+.TP
+.B \-D
+A list of all double-quoted strings preceded by \fB$\fP
+is printed on the standard ouput.
+These are the strings that
+are subject to language translation when the current locale
+is not \fBC\fP or \fBPOSIX\fP.
+This implies the \fB\-n\fP option; no commands will be executed.
+.TP
+.B [\-+]O [\fIshopt_option\fP]
+\fIshopt_option\fP is one of the shell options accepted by the
+\fBshopt\fP builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+If \fIshopt_option\fP is present, \fB\-O\fP sets the value of that option;
+\fB+O\fP unsets it.
+If \fIshopt_option\fP is not supplied, the names and values of the shell
+options accepted by \fBshopt\fP are printed on the standard output.
+If the invocation option is \fB+O\fP, the output is displayed in a format
+that may be reused as input.
+.TP
+.B \-\-
+A
+.B \-\-
+signals the end of options and disables further option processing.
+Any arguments after the
+.B \-\-
+are treated as filenames and arguments.  An argument of
+.B \-
+is equivalent to \fB\-\-\fP.
+.PD
+.PP
+.B Bash
+also interprets a number of multi-character options.
+These options must appear on the command line before the
+single-character options to be recognized.
+.PP
+.PD 0
+.TP
+.B \-\-dump\-po\-strings
+Equivalent to \fB\-D\fP, but the output is in the GNU \fIgettext\fP
+\fBpo\fP (portable object) file format.
+.TP
+.B \-\-dump\-strings
+Equivalent to \fB\-D\fP.
+.TP
+.B \-\-help
+Display a usage message on standard output and exit successfully.
+.TP
+\fB\-\-init\-file\fP \fIfile\fP
+.PD 0
+.TP
+\fB\-\-rcfile\fP \fIfile\fP
+.PD
+Execute commands from
+.I file
+instead of the standard personal initialization file
+.I ~/.bashrc
+if the shell is interactive (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-login
+Equivalent to \fB\-l\fP.
+.TP
+.B \-\-noediting
+Do not use the GNU
+.B readline
+library to read command lines when the shell is interactive.
+.TP
+.B \-\-noprofile
+Do not read either the system-wide startup file
+.FN /etc/profile
+or any of the personal initialization files
+.IR ~/.bash_profile ,
+.IR ~/.bash_login ,
+or
+.IR ~/.profile .
+By default,
+.B bash
+reads these files when it is invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-norc
+Do not read and execute the personal initialization file
+.I ~/.bashrc
+if the shell is interactive.
+This option is on by default if the shell is invoked as
+.BR sh .
+.TP
+.B \-\-posix
+Change the behavior of \fBbash\fP where the default operation differs
+from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP).
+.TP
+.B \-\-restricted
+The shell becomes restricted (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-\-rpm-requires
+Produce the list of files that are required for the 
+shell script to run.  This implies '-n' and is subject
+to the same limitations as compile time error checking checking;
+Backticks, [] tests,  and evals are not parsed so some 
+dependencies may be missed.
+.B \-\-verbose
+Equivalent to  \fB\-v\fP.
+.TP
+.B \-\-version
+Show version information for this instance of
+.B bash
+on the standard output and exit successfully.
+.PD
+.SH ARGUMENTS
+If arguments remain after option processing, and neither the
+.B \-c
+nor the
+.B \-s
+option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands.
+If
+.B bash
+is invoked in this fashion, 
+.B $0
+is set to the name of the file, and the positional parameters
+are set to the remaining arguments.
+.B Bash
+reads and executes commands from this file, then exits.
+\fBBash\fP's exit status is the exit status of the last command
+executed in the script.
+If no commands are executed, the exit status is 0.
+An attempt is first made to open the file in the current directory, and,
+if no file is found, then the shell searches the directories in
+.SM
+.B PATH
+for the script.
+.SH INVOCATION
+A \fIlogin shell\fP is one whose first character of argument zero is a
+.BR \- ,
+or one started with the 
+.B \-\-login
+option.
+.PP
+An \fIinteractive\fP shell is one started without non-option arguments
+and without the
+.B \-c
+option
+whose standard input and output are
+both connected to terminals (as determined by
+.IR isatty (3)),
+or one started with the
+.B \-i
+option.
+.SM
+.B PS1
+is set and
+.B $\-
+includes
+.B i
+if
+.B bash
+is interactive,
+allowing a shell script or a startup file to test this state.
+.PP
+The following paragraphs describe how
+.B bash
+executes its startup files.
+If any of the files exist but cannot be read,
+.B bash
+reports an error.
+Tildes are expanded in file names as described below under
+.B "Tilde Expansion"
+in the
+.SM
+.B EXPANSION
+section.
+.PP
+When
+.B bash
+is invoked as an interactive login shell, or as a non-interactive shell
+with the \fB\-\-login\fP option, it first reads and
+executes commands from the file \fI/etc/profile\fP, if that
+file exists.
+After reading that file, it looks for \fI~/.bash_profile\fP,
+\fI~/.bash_login\fP, and \fI~/.profile\fP, in that order, and reads
+and executes commands from the first one that exists and is readable.
+The
+.B \-\-noprofile
+option may be used when the shell is started to inhibit this behavior.
+.PP
+When a login shell exits,
+.B bash
+reads and executes commands from the file \fI~/.bash_logout\fP, if it
+exists.
+.PP
+When an interactive shell that is not a login shell is started,
+.B bash
+reads and executes commands from \fI~/.bashrc\fP, if that file exists.
+This may be inhibited by using the
+.B \-\-norc
+option.
+The \fB\-\-rcfile\fP \fIfile\fP option will force
+.B bash
+to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP.
+.PP
+When
+.B bash
+is started non-interactively, to run a shell script, for example, it
+looks for the variable
+.SM
+.B BASH_ENV
+in the environment, expands its value if it appears there, and uses the
+expanded value as the name of a file to read and execute.
+.B Bash
+behaves as if the following command were executed:
+.sp .5
+.RS
+.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP
+.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
+.RE
+.sp .5
+but the value of the
+.SM
+.B PATH
+variable is not used to search for the file name.
+.PP
+If
+.B bash
+is invoked with the name
+.BR sh ,
+it tries to mimic the startup behavior of historical versions of
+.B sh
+as closely as possible,
+while conforming to the POSIX standard as well.
+When invoked as an interactive login shell, or a non-interactive
+shell with the \fB\-\-login\fP option, it first attempts to
+read and execute commands from
+.I /etc/profile
+and
+.IR ~/.profile ,
+in that order.
+The
+.B \-\-noprofile
+option may be used to inhibit this behavior.
+When invoked as an interactive shell with the name
+.BR sh ,
+.B bash
+looks for the variable
+.SM
+.BR ENV ,
+expands its value if it is defined, and uses the
+expanded value as the name of a file to read and execute.
+Since a shell invoked as
+.B sh
+does not attempt to read and execute commands from any other startup
+files, the
+.B \-\-rcfile
+option has no effect.
+A non-interactive shell invoked with the name
+.B sh
+does not attempt to read any other startup files. 
+When invoked as
+.BR sh ,
+.B bash
+enters
+.I posix
+mode after the startup files are read.
+.PP
+When
+.B bash
+is started in
+.I posix
+mode, as with the
+.B \-\-posix
+command line option, it follows the POSIX standard for startup files.
+In this mode, interactive shells expand the
+.SM
+.B ENV
+variable and commands are read and executed from the file
+whose name is the expanded value.
+No other startup files are read.
+.PP
+.B Bash
+attempts to determine when it is being run by the remote shell
+daemon, usually \fIrshd\fP.
+If
+.B bash
+determines it is being run by \fIrshd\fP, it reads and executes
+commands from \fI~/.bashrc\fP, if that file exists and is readable.
+It will not do this if invoked as \fBsh\fP.
+The
+.B \-\-norc
+option may be used to inhibit this behavior, and the
+.B \-\-rcfile
+option may be used to force another file to be read, but
+\fIrshd\fP does not generally invoke the shell with those options
+or allow them to be specified.
+.PP
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, no startup
+files are read, shell functions are not inherited from the environment, the
+.SM
+.B SHELLOPTS
+variable, if it appears in the environment, is ignored,
+and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at invocation, the startup behavior is
+the same, but the effective user id is not reset.
+.SH DEFINITIONS
+.PP
+The following definitions are used throughout the rest of this
+document.
+.PD 0
+.TP
+.B blank 
+A space or tab.
+.TP
+.B word
+A sequence of characters considered as a single unit by the shell.
+Also known as a
+.BR token .
+.TP
+.B name
+A 
+.I word
+consisting only of alphanumeric characters and underscores, and
+beginning with an alphabetic character or an underscore.  Also
+referred to as an
+.BR identifier .
+.TP
+.B metacharacter
+A character that, when unquoted, separates words.  One of the following:
+.br
+.RS
+.PP
+.if t \fB|  &  ;  (  )  <  >  space  tab\fP
+.if n \fB|  & ; ( ) < > space tab\fP
+.RE
+.PP
+.TP
+.B control operator
+A \fItoken\fP that performs a control function.  It is one of the following
+symbols:
+.RS
+.PP
+.if t \fB\(bv\(bv  &  &&  ;  ;;  (  )  |  <newline>\fP
+.if n \fB|| & && ; ;; ( ) | <newline>\fP
+.RE
+.PD
+.SH "RESERVED WORDS"
+\fIReserved words\fP are words that have a special meaning to the shell.
+The following words are recognized as reserved when unquoted and either
+the first word of a simple command (see
+.SM
+.B SHELL GRAMMAR
+below) or the third word of a 
+.B case 
+or
+.B for
+command:
+.if t .RS
+.PP
+.B
+.if n ! case  do done elif else esac fi for function if in select then until while { } time [[ ]]
+.if t !    case    do    done    elif    else    esac    fi    for    function    if    in    select    then    until    while    {    }    time    [[    ]]
+.if t .RE
+.RE
+.SH "SHELL GRAMMAR"
+.SS Simple Commands
+.PP
+A \fIsimple command\fP is a sequence of optional variable assignments
+followed by \fBblank\fP-separated words and redirections, and
+terminated by a \fIcontrol operator\fP.  The first word
+specifies the command to be executed, and is passed as argument zero.
+The remaining words are passed as arguments to the invoked command.
+.PP
+The return value of a \fIsimple command\fP is its exit status, or
+128+\fIn\^\fP if the command is terminated by signal
+.IR n .
+.SS Pipelines
+.PP
+A \fIpipeline\fP is a sequence of one or more commands separated by
+the character
+.BR | .
+The format for a pipeline is:
+.RS
+.PP
+[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ \fB|\fP \fIcommand2\fP ... ]
+.RE
+.PP
+The standard output of
+.I command
+is connected via a pipe to the standard input of
+.IR command2 .
+This connection is performed before any redirections specified by the
+command (see
+.SM
+.B REDIRECTION
+below).
+.PP
+If the reserved word
+.B !
+precedes a pipeline, the exit status of that
+pipeline is the logical NOT of the exit status of the last command.
+Otherwise, the status of the pipeline is the exit status of the last
+command.
+The shell waits for all commands in the pipeline to
+terminate before returning a value.
+.PP
+If the
+.B time
+reserved word precedes a pipeline, the elapsed as well as user and
+system time consumed by its execution are reported when the pipeline
+terminates.
+The \fB\-p\fP option changes the output format to that specified by POSIX.
+The
+.SM
+.B TIMEFORMAT
+variable may be set to a format string that specifies how the timing
+information should be displayed; see the description of
+.SM
+.B TIMEFORMAT
+under
+.B "Shell Variables"
+below.
+.PP
+Each command in a pipeline is executed as a separate process (i.e., in a
+subshell).
+.SS Lists
+.PP
+A \fIlist\fP is a sequence of one or more pipelines separated by one
+of the operators
+.BR ; ,
+.BR & ,
+.BR && ,
+or
+.BR \(bv\(bv ,
+and optionally terminated by one of
+.BR ; ,
+.BR & ,
+or
+.BR <newline> .
+.PP
+Of these list operators,
+.B &&
+and
+.B \(bv\(bv
+have equal precedence, followed by
+.B ;
+and
+.BR &,
+which have equal precedence.
+.PP
+A sequence of one or more newlines may appear in a \fIlist\fP instead
+of a semicolon to delimit commands.
+.PP
+If a command is terminated by the control operator
+.BR & ,
+the shell executes the command in the \fIbackground\fP
+in a subshell.  The shell does not wait for the command to
+finish, and the return status is 0.  Commands separated by a
+.B ;
+are executed sequentially; the shell waits for each
+command to terminate in turn.  The return status is the
+exit status of the last command executed.
+.PP
+The control operators
+.B &&
+and
+.B \(bv\(bv
+denote AND lists and OR lists, respectively.
+An AND list has the form
+.RS
+.PP
+\fIcommand1\fP \fB&&\fP \fIcommand2\fP
+.RE
+.PP
+.I command2
+is executed if, and only if,
+.I command1
+returns an exit status of zero.
+.PP
+An OR list has the form
+.RS
+.PP
+\fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP
+.PP
+.RE
+.PP
+.I command2
+is executed if and only if
+.I command1
+returns a non-zero exit status.  The return status of
+AND and OR lists is the exit status of the last command
+executed in the list.
+.SS Compound Commands
+.PP
+A \fIcompound command\fP is one of the following:
+.TP
+(\fIlist\fP)
+\fIlist\fP is executed in a subshell.  Variable assignments and builtin
+commands that affect the shell's environment do not remain in effect
+after the command completes.  The return status is the exit status of
+\fIlist\fP.
+.TP
+{ \fIlist\fP; }
+\fIlist\fP is simply executed in the current shell environment.
+\fIlist\fP must be terminated with a newline or semicolon.
+This is known as a \fIgroup command\fP.
+The return status is the exit status of
+\fIlist\fP.
+Note that unlike the metacharacters \fB(\fP and \fB\)\fP, \fB{\fP and
+\fB}\fP are \fIreserved words\fP and must occur where a reserved
+word is permitted to be recognized.  Since they do not cause a word
+break, they must be separated from \fIlist\fP by whitespace.
+.TP
+((\fIexpression\fP))
+The \fIexpression\fP is evaluated according to the rules described
+below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If the value of the expression is non-zero, the return status is 0;
+otherwise the return status is 1.  This is exactly equivalent to
+\fBlet "\fIexpression\fP"\fR.
+.TP
+\fB[[\fP \fIexpression\fP \fB]]\fP
+Return a status of 0 or 1 depending on the evaluation of
+the conditional expression \fIexpression\fP.
+Expressions are composed of the primaries described below under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+Word splitting and pathname expansion are not performed on the words
+between the \fB[[\fP and \fB]]\fP; tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal are performed.
+.if t .sp 0.5
+.if n .sp 1
+When the \fB==\fP and \fB!=\fP operators are used, the string to the
+right of the operator is considered a pattern and matched according
+to the rules described below under \fBPattern Matching\fP.
+The return value is 0 if the string matches or does not match
+the pattern, respectively, and 1 otherwise.
+Any part of the pattern may be quoted to force it to be matched as a
+string.
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence:
+.if t .sp 0.5
+.if n .sp 1
+.RS
+.PD 0
+.TP
+.B ( \fIexpression\fP )
+Returns the value of \fIexpression\fP.
+This may be used to override the normal precedence of operators.
+.TP
+.B ! \fIexpression\fP
+True if
+.I expression
+is false.
+.TP
+\fIexpression1\fP \fB&&\fP \fIexpression2\fP
+True if both
+.I expression1
+and
+.I expression2
+are true.
+.TP
+.if t \fIexpression1\fP \fB\(bv\(bv\fP \fIexpression2\fP
+.if n \fIexpression1\fP \fB||\fP \fIexpression2\fP
+True if either
+.I expression1
+or
+.I expression2
+is true.
+.PD
+.LP
+The \fB&&\fP and
+.if t \fB\(bv\(bv\fP
+.if n \fB||\fP
+operators do not evaluate \fIexpression2\fP if the value of
+\fIexpression1\fP is sufficient to determine the return value of
+the entire conditional expression.
+.RE
+.TP
+\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.
+The variable \fIname\fP is set to each element of this list
+in turn, and \fIlist\fP is executed each time.
+If the \fBin\fP \fIword\fP is omitted, the \fBfor\fP command executes
+\fIlist\fP once for each positional parameter that is set (see
+.SM
+.B PARAMETERS
+below).
+The return status is the exit status of the last command that executes.
+If the expansion of the items following \fBin\fP results in an empty
+list, no commands are executed, and the return status is 0.
+.TP
+\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+First, the arithmetic expression \fIexpr1\fP is evaluated according
+to the rules described below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+The arithmetic expression \fIexpr2\fP is then evaluated repeatedly
+until it evaluates to zero.
+Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is
+executed and the arithmetic expression \fIexpr3\fP is evaluated.
+If any expression is omitted, it behaves as if it evaluates to 1.
+The return value is the exit status of the last command in \fIlist\fP
+that is executed, or false if any of the expressions is invalid.
+.TP
+\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.  The set of expanded words is printed on the standard
+error, each preceded by a number.  If the \fBin\fP
+\fIword\fP is omitted, the positional parameters are printed (see
+.SM
+.B PARAMETERS
+below).  The
+.B PS3
+prompt is then displayed and a line read from the standard input.
+If the line consists of a number corresponding to one of
+the displayed words, then the value of
+.I name
+is set to that word.  If the line is empty, the words and prompt
+are displayed again.  If EOF is read, the command completes.  Any
+other value read causes
+.I name
+to be set to null.  The line read is saved in the variable
+.BR REPLY .
+The
+.I list
+is executed after each selection until a
+.B break
+command is executed.
+The exit status of
+.B select
+is the exit status of the last command executed in
+.IR list ,
+or zero if no commands were executed.
+.TP
+\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \
+... ) \fIlist\fP ;; ] ... \fBesac\fP
+A \fBcase\fP command first expands \fIword\fP, and tries to match
+it against each \fIpattern\fP in turn, using the same matching rules
+as for pathname expansion (see
+.B Pathname Expansion
+below).  When a match is found, the
+corresponding \fIlist\fP is executed.  After the first match, no
+subsequent matches are attempted.  The exit status is zero if no
+pattern matches.  Otherwise, it is the exit status of the
+last command executed in \fIlist\fP.
+.TP
+\fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP \
+[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \
+[ \fBelse\fP \fIlist\fP; ] \fBfi\fP
+The
+.B if 
+.I list
+is executed.  If its exit status is zero, the
+\fBthen\fP \fIlist\fP is executed.  Otherwise, each \fBelif\fP
+\fIlist\fP is executed in turn, and if its exit status is zero,
+the corresponding \fBthen\fP \fIlist\fP is executed and the
+command completes.  Otherwise, the \fBelse\fP \fIlist\fP is
+executed, if present.  The exit status is the exit status of the
+last command executed, or zero if no condition tested true.
+.TP
+\fBwhile\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD 0
+.TP
+\fBuntil\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD
+The \fBwhile\fP command continuously executes the \fBdo\fP
+\fIlist\fP as long as the last command in \fIlist\fP returns
+an exit status of zero.  The \fBuntil\fP command is identical
+to the \fBwhile\fP command, except that the test is negated;
+the
+.B do
+.I list
+is executed as long as the last command in
+.I list
+returns a non-zero exit status.
+The exit status of the \fBwhile\fP and \fBuntil\fP commands
+is the exit status
+of the last \fBdo\fP \fIlist\fP command executed, or zero if
+none was executed.
+.TP
+[ \fBfunction\fP ] \fIname\fP () { \fIlist\fP; }
+This defines a function named \fIname\fP.  The \fIbody\fP of the
+function is the
+.I list
+of commands between { and }.  This list
+is executed whenever \fIname\fP is specified as the
+name of a simple command.  The exit status of a function is
+the exit status of the last command executed in the body.  (See
+.SM
+.B FUNCTIONS
+below.)
+.SH COMMENTS
+In a non-interactive shell, or an interactive shell in which the
+.B interactive_comments
+option to the
+.B shopt
+builtin is enabled (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), a word beginning with
+.B #
+causes that word and all remaining characters on that line to
+be ignored.  An interactive shell without the
+.B interactive_comments
+option enabled does not allow comments.  The
+.B interactive_comments
+option is on by default in interactive shells.
+.SH QUOTING
+\fIQuoting\fP is used to remove the special meaning of certain
+characters or words to the shell.  Quoting can be used to 
+disable special treatment for special characters, to prevent
+reserved words from being recognized as such, and to prevent
+parameter expansion.
+.PP
+Each of the \fImetacharacters\fP listed above under
+.SM
+.B DEFINITIONS
+has special meaning to the shell and must be quoted if it is to
+represent itself.
+.PP
+When the command history expansion facilities are being used, the
+\fIhistory expansion\fP character, usually \fB!\fP, must be quoted
+to prevent history expansion.
+.PP
+There are three quoting mechanisms: the
+.IR "escape character" ,
+single quotes, and double quotes.
+.PP
+A non-quoted backslash (\fB\e\fP) is the
+.IR "escape character" .
+It preserves the literal value of the next character that follows,
+with the exception of <newline>.  If a \fB\e\fP<newline> pair
+appears, and the backslash is not itself quoted, the \fB\e\fP<newline>
+is treated as a line continuation (that is, it is removed from the
+input stream and effectively ignored).
+.PP
+Enclosing characters in single quotes preserves the literal value
+of each character within the quotes.  A single quote may not occur
+between single quotes, even when preceded by a backslash.
+.PP
+Enclosing characters in double quotes preserves the literal value
+of all characters within the quotes, with the exception of
+.BR $ ,
+.BR ` ,
+and
+.BR \e .
+The characters
+.B $
+and
+.B `
+retain their special meaning within double quotes.  The backslash
+retains its special meaning only when followed by one of the following
+characters:
+.BR $ ,
+.BR ` ,
+\^\fB"\fP\^,
+.BR \e ,
+or
+.BR <newline> .
+A double quote may be quoted within double quotes by preceding it with
+a backslash.
+.PP
+The special parameters
+.B *
+and
+.B @
+have special meaning when in double
+quotes (see
+.SM
+.B PARAMETERS
+below).
+.PP
+Words of the form \fB$\fP'\fIstring\fP' are treated specially.  The
+word expands to \fIstring\fP, with backslash-escaped characters replaced
+as specifed by the ANSI C standard.  Backslash escape sequences, if
+present, are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ee
+an escape character
+.TP   
+.B \ef
+form feed
+.TP  
+.B \en
+new line
+.TP     
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP   
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e'
+single quote
+.TP   
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.TP
+.B \ec\fIx\fP
+a control-\fIx\fP character
+.PD
+.RE
+.LP
+The expanded result is single-quoted, as if the dollar sign had
+not been present.
+.PP
+A double-quoted string preceded by a dollar sign (\fB$\fP) will cause
+the string to be translated according to the current locale.
+If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign
+is ignored.
+If the string is translated and replaced, the replacement is
+double-quoted.
+.SH PARAMETERS
+A
+.I parameter
+is an entity that stores values.
+It can be a
+.IR name ,
+a number, or one of the special characters listed below under
+.BR "Special Parameters" .
+For the shell's purposes, a
+.I variable
+is a parameter denoted by a
+.IR name .
+A variable has a \fIvalue\fP and zero or more \fIattributes\fP.
+Attributes are assigned using the
+.B declare
+builtin command (see
+.B declare
+below in
+.SM
+.BR "SHELL BUILTIN COMMANDS" ).
+.PP
+A parameter is set if it has been assigned a value.  The null string is
+a valid value.  Once a variable is set, it may be unset only by using
+the
+.B unset
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.PP
+A
+.I variable
+may be assigned to by a statement of the form
+.RS
+.PP
+\fIname\fP=[\fIvalue\fP]
+.RE
+.PP
+If
+.I value
+is not given, the variable is assigned the null string.  All
+.I values
+undergo tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote
+removal (see
+.SM
+.B EXPANSION
+below).  If the variable has its
+.B integer
+attribute set, then
+.I value
+is subject to arithmetic expansion even if the $((...)) expansion is
+not used (see
+.B "Arithmetic Expansion"
+below).
+Word splitting is not performed, with the exception
+of \fB"$@"\fP as explained below under
+.BR "Special Parameters" .
+Pathname expansion is not performed.
+Assignment statements may also appear as arguments to the
+.BR declare ,
+.BR typeset ,
+.BR export ,
+.BR readonly ,
+and
+.B local
+builtin commands.
+.SS Positional Parameters
+.PP
+A
+.I positional parameter
+is a parameter denoted by one or more
+digits, other than the single digit 0.  Positional parameters are
+assigned from the shell's arguments when it is invoked,
+and may be reassigned using the
+.B set
+builtin command.  Positional parameters may not be assigned to
+with assignment statements.  The positional parameters are
+temporarily replaced when a shell function is executed (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+When a positional parameter consisting of more than a single
+digit is expanded, it must be enclosed in braces (see
+.SM
+.B EXPANSION
+below).
+.SS Special Parameters
+.PP
+The shell treats several parameters specially.  These parameters may
+only be referenced; assignment to them is not allowed.
+.PD 0
+.TP
+.B *
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, it expands to a single word
+with the value of each parameter separated by the first character
+of the 
+.SM
+.B IFS
+special variable.  That is, "\fB$*\fP" is equivalent
+to "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", where
+.I c
+is the first character of the value of the
+.SM
+.B IFS
+variable.  If
+.SM
+.B IFS
+is unset, the parameters are separated by spaces.
+If
+.SM
+.B IFS
+is null, the parameters are joined without intervening separators.
+.TP
+.B @
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, each parameter expands to a
+separate word.  That is, "\fB$@\fP" is equivalent to
+"\fB$1\fP" "\fB$2\fP" ...
+When there are no positional parameters, "\fB$@\fP" and 
+.B $@
+expand to nothing (i.e., they are removed).
+.TP
+.B #
+Expands to the number of positional parameters in decimal.
+.TP
+.B ?
+Expands to the status of the most recently executed foreground
+pipeline.
+.TP
+.B \-
+Expands to the current option flags as specified upon invocation, 
+by the
+.B set
+builtin command, or those set by the shell itself
+(such as the
+.B \-i
+option).
+.TP
+.B $
+Expands to the process ID of the shell.  In a () subshell, it
+expands to the process ID of the current shell, not the
+subshell.
+.TP
+.B !
+Expands to the process ID of the most recently executed background
+(asynchronous) command.
+.TP
+.B 0
+Expands to the name of the shell or shell script.  This is set at
+shell initialization.  If
+.B bash
+is invoked with a file of commands,
+.B $0
+is set to the name of that file.  If
+.B bash
+is started with the
+.B \-c
+option, then
+.B $0
+is set to the first argument after the string to be
+executed, if one is present.  Otherwise, it is set
+to the file name used to invoke
+.BR bash ,
+as given by argument zero.
+.TP
+.B _
+At shell startup, set to the absolute file name of the shell or shell
+script being executed as passed in the argument list.
+Subsequently, expands to the last argument to the previous command,
+after expansion.
+Also set to the full file name of each command executed and placed in
+the environment exported to that command.
+When checking mail, this parameter holds the name of the mail file
+currently being checked.
+.PD
+.SS Shell Variables
+.PP
+The following variables are set by the shell:
+.PP
+.PD 0
+.TP
+.B BASH
+Expands to the full file name used to invoke this instance of
+.BR bash .
+.TP
+.B BASH_VERSINFO
+A readonly array variable whose members hold version information for
+this instance of
+.BR bash .
+The values assigned to the array members are as follows:
+.sp .5
+.RS
+.PD 0
+.TP 24
+.B BASH_VERSINFO[\fR0\fP]
+The major version number (the \fIrelease\fP).
+.TP
+.B BASH_VERSINFO[\fR1\fP]
+The minor version number (the \fIversion\fP).
+.TP
+.B BASH_VERSINFO[\fR2\fP]
+The patch level.
+.TP
+.B BASH_VERSINFO[\fR3\fP]
+The build version.
+.TP
+.B BASH_VERSINFO[\fR4\fP]
+The release status (e.g., \fIbeta1\fP).
+.TP
+.B BASH_VERSINFO[\fR5\fP]
+The value of \fBMACHTYPE\fP.
+.PD
+.RE
+.TP
+.B BASH_VERSION
+Expands to a string describing the version of this instance of
+.BR bash .
+.TP
+.B COMP_CWORD
+An index into \fB${COMP_WORDS}\fP of the word containing the current
+cursor position.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_LINE
+The current command line.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_POINT
+The index of the current cursor position relative to the beginning of
+the current command.
+If the current cursor position is at the end of the current command,
+the value of this variable is equal to \fB${#COMP_LINE}\fP.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_WORDS
+An array variable (see \fBArrays\fP below) consisting of the individual
+words in the current command line.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B DIRSTACK
+An array variable (see
+.B Arrays
+below) containing the current contents of the directory stack.
+Directories appear in the stack in the order they are displayed by the
+.B dirs
+builtin.
+Assigning to members of this array variable may be used to modify
+directories already in the stack, but the
+.B pushd
+and
+.B popd
+builtins must be used to add and remove directories.
+Assignment to this variable will not change the current directory.
+If
+.SM
+.B DIRSTACK
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B EUID
+Expands to the effective user ID of the current user, initialized at
+shell startup.  This variable is readonly.
+.TP
+.B FUNCNAME
+The name of any currently-executing shell function.
+This variable exists only when a shell function is executing.
+Assignments to
+.SM
+.B FUNCNAME
+have no effect and return an error status.
+If
+.SM
+.B FUNCNAME
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B GROUPS
+An array variable containing the list of groups of which the current
+user is a member.
+Assignments to    
+.SM
+.B GROUPS
+have no effect and return an error status.
+If
+.SM
+.B GROUPS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HISTCMD
+The history number, or index in the history list, of the current
+command.
+If
+.SM
+.B HISTCMD
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HOSTNAME
+Automatically set to the name of the current host.
+.TP
+.B HOSTTYPE
+Automatically set to a string that uniquely
+describes the type of machine on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B LINENO
+Each time this parameter is referenced, the shell substitutes
+a decimal number representing the current sequential line number
+(starting with 1) within a script or function.  When not in a
+script or function, the value substituted is not guaranteed to
+be meaningful.
+If
+.SM
+.B LINENO
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B MACHTYPE
+Automatically set to a string that fully describes the system
+type on which
+.B bash
+is executing, in the standard GNU \fIcpu-company-system\fP format.
+The default is system-dependent.
+.TP
+.B OLDPWD
+The previous working directory as set by the
+.B cd
+command.
+.TP
+.B OPTARG
+The value of the last option argument processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OPTIND
+The index of the next argument to be processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OSTYPE
+Automatically set to a string that
+describes the operating system on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B PIPESTATUS
+An array variable (see
+.B Arrays
+below) containing a list of exit status values from the processes
+in the most-recently-executed foreground pipeline (which may
+contain only a single command).
+.TP
+.B PPID
+The process ID of the shell's parent.  This variable is readonly.
+.TP
+.B PWD
+The current working directory as set by the
+.B cd
+command.
+.TP
+.B RANDOM
+Each time this parameter is referenced, a random integer between
+0 and 32767 is
+generated.  The sequence of random numbers may be initialized by assigning
+a value to
+.SM
+.BR RANDOM .
+If
+.SM
+.B RANDOM
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B REPLY
+Set to the line of input read by the
+.B read
+builtin command when no arguments are supplied.
+.TP
+.B SECONDS
+Each time this parameter is
+referenced, the number of seconds since shell invocation is returned.  If a
+value is assigned to 
+.SM
+.BR SECONDS ,
+the value returned upon subsequent
+references is
+the number of seconds since the assignment plus the value assigned.
+If
+.SM
+.B SECONDS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B SHELLOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).  The options appearing in
+.SM
+.B SHELLOPTS
+are those reported as
+.I on
+by \fBset \-o\fP.
+If this variable is in the environment when
+.B bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.
+This variable is read-only.
+.TP
+.B SHLVL
+Incremented by one each time an instance of
+.B bash
+is started.
+.TP
+.B UID
+Expands to the user ID of the current user, initialized at shell startup.
+This variable is readonly.
+.PD
+.PP
+The following variables are used by the shell.  In some cases,
+.B bash
+assigns a default value to a variable; these cases are noted
+below.
+.PP
+.PD 0
+.TP
+.B BASH_ENV
+If this parameter is set when \fBbash\fP is executing a shell script,
+its value is interpreted as a filename containing commands to
+initialize the shell, as in
+.IR ~/.bashrc .
+The value of
+.SM
+.B BASH_ENV
+is subjected to parameter expansion, command substitution, and arithmetic
+expansion before being interpreted as a file name.
+.SM
+.B PATH
+is not used to search for the resultant file name.
+.TP
+.B CDPATH
+The search path for the
+.B cd
+command.
+This is a colon-separated list of directories in which the shell looks
+for destination directories specified by the
+.B cd
+command.
+A sample value is
+.if t \f(CW".:~:/usr"\fP.
+.if n ".:~:/usr".
+.TP
+.B COLUMNS
+Used by the \fBselect\fP builtin command to determine the terminal width
+when printing selection lists.  Automatically set upon receipt of a SIGWINCH.
+.TP
+.B COMPREPLY
+An array variable from which \fBbash\fP reads the possible completions
+generated by a shell function invoked by the programmable completion
+facility (see \fBProgrammable Completion\fP below).
+.TP
+.B FCEDIT
+The default editor for the
+.B fc
+builtin command.
+.TP
+.B FIGNORE
+A colon-separated list of suffixes to ignore when performing
+filename completion (see
+.SM
+.B READLINE
+below).
+A filename whose suffix matches one of the entries in 
+.SM
+.B FIGNORE
+is excluded from the list of matched filenames.
+A sample value is
+.if t \f(CW".o:~"\fP.
+.if n ".o:~".
+.TP
+.B GLOBIGNORE
+A colon-separated list of patterns defining the set of filenames to
+be ignored by pathname expansion.
+If a filename matched by a pathname expansion pattern also matches one
+of the patterns in
+.SM
+.BR GLOBIGNORE ,
+it is removed from the list of matches.
+.TP
+.B HISTCONTROL
+If set to a value of
+.IR ignorespace ,
+lines which begin with a
+.B space
+character are not entered on the history list.
+If set to a value of
+.IR ignoredups ,
+lines matching the last history line are not entered.
+A value of
+.I ignoreboth
+combines the two options.
+If unset, or if set to any other value than those above,
+all lines read
+by the parser are saved on the history list, subject to the value
+of
+.BR HISTIGNORE .
+This variable's function is superseded by
+.BR HISTIGNORE .
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+.BR HISTCONTROL .
+.TP
+.B HISTFILE
+The name of the file in which command history is saved (see
+.SM
+.B HISTORY
+below).  The default value is \fI~/.bash_history\fP.  If unset, the
+command history is not saved when an interactive shell exits.
+.TP
+.B HISTFILESIZE
+The maximum number of lines contained in the history file.  When this
+variable is assigned a value, the history file is truncated, if
+necessary, to contain no more than that number of lines.  The default
+value is 500.  The history file is also truncated to this size after
+writing it when an interactive shell exits.
+.TP
+.B HISTIGNORE
+A colon-separated list of patterns used to decide which command lines
+should be saved on the history list.  Each pattern is anchored at the
+beginning of the line and must match the complete line (no implicit
+`\fB*\fP' is appended).  Each pattern is tested against the line
+after the checks specified by
+.B HISTCONTROL
+are applied.
+In addition to the normal shell pattern matching characters, `\fB&\fP'
+matches the previous history line.  `\fB&\fP' may be escaped using a
+backslash; the backslash is removed before attempting a match.
+The second and subsequent lines of a multi-line compound command are
+not tested, and are added to the history regardless of the value of
+.BR HISTIGNORE .
+.TP
+.B HISTSIZE
+The number of commands to remember in the command history (see
+.SM
+.B HISTORY
+below).  The default value is 500.
+.TP
+.B HOME
+The home directory of the current user; the default argument for the
+\fBcd\fP builtin command.
+The value of this variable is also used when performing tilde expansion.
+.TP
+.B HOSTFILE
+Contains the name of a file in the same format as
+.FN /etc/hosts
+that should be read when the shell needs to complete a
+hostname.
+The list of possible hostname completions may be changed while the
+shell is running;
+the next time hostname completion is attempted after the
+value is changed,
+.B bash
+adds the contents of the new file to the existing list.
+If
+.SM
+.B HOSTFILE
+is set, but has no value, \fBbash\fP attempts to read
+.FN /etc/hosts
+to obtain the list of possible hostname completions.
+When
+.SM
+.B HOSTFILE
+is unset, the hostname list is cleared.
+.TP
+.B IFS
+The
+.I Internal Field Separator
+that is used
+for word splitting after expansion and to
+split lines into words with the
+.B read
+builtin command.  The default value is
+``<space><tab><newline>''.
+.TP
+.B IGNOREEOF
+Controls the
+action of an interactive shell on receipt of an
+.SM
+.B EOF
+character as the sole input.  If set, the value is the number of
+consecutive
+.SM
+.B EOF
+characters which must be
+typed as the first characters on an input line before
+.B bash
+exits.  If the variable exists but does not have a numeric value, or
+has no value, the default value is 10.  If it does not exist,
+.SM
+.B EOF
+signifies the end of input to the shell.
+.TP
+.B INPUTRC
+The filename for the
+.B readline
+startup file, overriding the default of
+.FN ~/.inputrc
+(see
+.SM
+.B READLINE
+below).
+.TP
+.B LANG
+Used to determine the locale category for any category not specifically
+selected with a variable starting with \fBLC_\fP.
+.TP
+.B LC_ALL
+This variable overrides the value of \fBLANG\fP and any other
+\fBLC_\fP variable specifying a locale category.
+.TP
+.B LC_COLLATE
+This variable determines the collation order used when sorting the
+results of pathname expansion, and determines the behavior of range
+expressions, equivalence classes, and collating sequences within
+pathname expansion and pattern matching.
+.TP
+.B LC_CTYPE
+This variable determines the interpretation of characters and the
+behavior of character classes within pathname expansion and pattern
+matching.
+.TP
+.B LC_MESSAGES
+This variable determines the locale used to translate double-quoted
+strings preceded by a \fB$\fP.
+.TP
+.B LC_NUMERIC
+This variable determines the locale category used for number formatting.
+.TP
+.B LINES
+Used by the \fBselect\fP builtin command to determine the column length
+for printing selection lists.  Automatically set upon receipt of a SIGWINCH.
+.TP
+.B MAIL
+If this parameter is set to a file name and the
+.SM
+.B MAILPATH
+variable is not set,
+.B bash
+informs the user of the arrival of mail in the specified file.
+.TP
+.B MAILCHECK
+Specifies how
+often (in seconds)
+.B bash
+checks for mail.  The default is 60 seconds.  When it is time to check
+for mail, the shell does so before displaying the primary prompt.
+If this variable is unset, or set to a value that is not a number
+greater than or equal to zero, the shell disables mail checking.
+.TP
+.B MAILPATH
+A colon-separated list of file names to be checked for mail. 
+The message to be printed when mail arrives in a particular file
+may be specified by separating the file name from the message with a `?'.
+When used in the text of the message, \fB$_\fP expands to the name of
+the current mailfile. 
+Example:
+.RS
+.PP
+\fBMAILPATH\fP='/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"'
+.PP
+.B Bash
+supplies a default value for this variable, but the location of the user
+mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP).
+.RE
+.TP
+.B OPTERR
+If set to the value 1,
+.B bash
+displays error messages generated by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SM
+.B OPTERR
+is initialized to 1 each time the shell is invoked or a shell
+script is executed.
+.TP
+.B PATH
+The search path for commands.  It
+is a colon-separated list of directories in which
+the shell looks for commands (see
+.SM
+.B COMMAND EXECUTION
+below).  The default path is system-dependent,
+and is set by the administrator who installs
+.BR bash .
+A common value is
+.if t \f(CW/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.\fP.
+.if n ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''.
+.TP
+.B POSIXLY_CORRECT
+If this variable is in the environment when \fBbash\fP starts, the shell
+enters \fIposix mode\fP before reading the startup files, as if the
+.B \-\-posix
+invocation option had been supplied.  If it is set while the shell is
+running, \fBbash\fP enables \fIposix mode\fP, as if the command
+.if t \f(CWset -o posix\fP
+.if n \fIset -o posix\fP
+had been executed.
+.TP
+.B PROMPT_COMMAND
+If set, the value is executed as a command prior to issuing each primary
+prompt.
+.TP
+.B PS1
+The value of this parameter is expanded (see
+.SM
+.B PROMPTING
+below) and used as the primary prompt string.  The default value is
+``\fB\es\-\ev\e$ \fP''.
+.TP
+.B PS2
+The value of this parameter is expanded as with
+.B PS1
+and used as the secondary prompt string.  The default is
+``\fB> \fP''.
+.TP
+.B PS3
+The value of this parameter is used as the prompt for the
+.B select
+command (see
+.SM
+.B SHELL GRAMMAR
+above).
+.TP
+.B PS4
+The value of this parameter is expanded as with
+.B PS1
+and the value is printed before each command
+.B bash
+displays during an execution trace.  The first character of
+.SM
+.B PS4
+is replicated multiple times, as necessary, to indicate multiple
+levels of indirection.  The default is ``\fB+ \fP''.
+.TP
+.B TIMEFORMAT
+The value of this parameter is used as a format string specifying
+how the timing information for pipelines prefixed with the
+.B time
+reserved word should be displayed.
+The \fB%\fP character introduces an escape sequence that is
+expanded to a time value or other information.
+The escape sequences and their meanings are as follows; the
+braces denote optional portions.
+.sp .5
+.RS
+.PD 0
+.TP 10
+.B %%
+A literal \fB%\fP.
+.TP
+.B %[\fIp\fP][l]R
+The elapsed time in seconds.
+.TP
+.B %[\fIp\fP][l]U
+The number of CPU seconds spent in user mode.
+.TP
+.B %[\fIp\fP][l]S
+The number of CPU seconds spent in system mode.
+.TP
+.B %P
+The CPU percentage, computed as (%U + %S) / %R.
+.PD
+.RE
+.IP
+The optional \fIp\fP is a digit specifying the \fIprecision\fP,
+the number of fractional digits after a decimal point.
+A value of 0 causes no decimal point or fraction to be output.
+At most three places after the decimal point may be specified;
+values of \fIp\fP greater than 3 are changed to 3.
+If \fIp\fP is not specified, the value 3 is used.
+.IP
+The optional \fBl\fP specifies a longer format, including
+minutes, of the form \fIMM\fPm\fISS\fP.\fIFF\fPs.
+The value of \fIp\fP determines whether or not the fraction is
+included.
+.IP
+If this variable is not set, \fBbash\fP acts as if it had the
+value \fB$'\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS'\fP.
+If the value is null, no timing information is displayed.
+A trailing newline is added when the format string is displayed.
+.TP
+.B TMOUT
+If set to a value greater than zero, \fBTMOUT\fP is treated as the
+default timeout for the \fBread\fP builtin.
+The \fBselect\fP command terminates if input does not arrive
+after \fBTMOUT\fP seconds when input is coming from a terminal.
+In an interactive shell, the value is interpreted as the
+number of seconds to wait for input after issuing the primary prompt.
+.B Bash
+terminates after waiting for that number of seconds if input does
+not arrive.
+.TP
+.B auto_resume
+This variable controls how the shell interacts with the user and
+job control.  If this variable is set, single word simple
+commands without redirections are treated as candidates for resumption
+of an existing stopped job.  There is no ambiguity allowed; if there is
+more than one job beginning with the string typed, the job most recently
+accessed is selected.  The
+.I name
+of a stopped job, in this context, is the command line used to
+start it.
+If set to the value
+.IR exact ,
+the string supplied must match the name of a stopped job exactly;
+if set to
+.IR substring ,
+the string supplied needs to match a substring of the name of a
+stopped job.  The
+.I substring
+value provides functionality analogous to the
+.B %?
+job identifier (see
+.SM
+.B JOB CONTROL
+below).  If set to any other value, the supplied string must
+be a prefix of a stopped job's name; this provides functionality
+analogous to the
+.B %
+job identifier.
+.TP
+.B histchars
+The two or three characters which control history expansion
+and tokenization (see
+.SM
+.B HISTORY EXPANSION
+below).  The first character is the \fIhistory expansion\fP character,
+the character which signals the start of a history
+expansion, normally `\fB!\fP'.
+The second character is the \fIquick substitution\fP
+character, which is used as shorthand for re-running the previous
+command entered, substituting one string for another in the command.
+The default is `\fB^\fP'.
+The optional third character is the character
+which indicates that the remainder of the line is a comment when found
+as the first character of a word, normally `\fB#\fP'.  The history
+comment character causes history substitution to be skipped for the
+remaining words on the line.  It does not necessarily cause the shell
+parser to treat the rest of the line as a comment.
+.PD
+.SS Arrays
+.B Bash
+provides one-dimensional array variables.  Any variable may be used as
+an array; the
+.B declare
+builtin will explicitly declare an array.  There is no maximum
+limit on the size of an array, nor any requirement that members
+be indexed or assigned contiguously.  Arrays are indexed using
+integers and are zero-based.
+.PP
+An array is created automatically if any variable is assigned to using
+the syntax \fIname\fP[\fIsubscript\fP]=\fIvalue\fP.  The
+.I subscript
+is treated as an arithmetic expression that must evaluate to a number
+greater than or equal to zero.  To explicitly declare an array, use
+.B declare \-a \fIname\fP
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.B declare \-a \fIname\fP[\fIsubscript\fP]
+is also accepted; the \fIsubscript\fP is ignored.  Attributes may be
+specified for an array variable using the
+.B declare
+and
+.B readonly
+builtins.  Each attribute applies to all members of an array.
+.PP
+Arrays are assigned to using compound assignments of the form
+\fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP, where each
+\fIvalue\fP is of the form [\fIsubscript\fP]=\fIstring\fP.  Only
+\fIstring\fP is required.  If
+the optional brackets and subscript are supplied, that index is assigned to;
+otherwise the index of the element assigned is the last index assigned
+to by the statement plus one.  Indexing starts at zero.
+This syntax is also accepted by the
+.B declare
+builtin.  Individual array elements may be assigned to using the
+\fIname\fP[\fIsubscript\fP]=\fIvalue\fP syntax introduced above.
+.PP
+Any element of an array may be referenced using
+${\fIname\fP[\fIsubscript\fP]}.  The braces are required to avoid
+conflicts with pathname expansion.  If
+\fIsubscript\fP is \fB@\fP or \fB*\fP, the word expands to
+all members of \fIname\fP.  These subscripts differ only when the
+word appears within double quotes.  If the word is double-quoted,
+${\fIname\fP[*]} expands to a single
+word with the value of each array member separated by the first
+character of the
+.SM
+.B IFS
+special variable, and ${\fIname\fP[@]} expands each element of
+\fIname\fP to a separate word.  When there are no array members,
+${\fIname\fP[@]} expands to nothing.  This is analogous to the expansion
+of the special parameters \fB*\fP and \fB@\fP (see
+.B Special Parameters
+above).  ${#\fIname\fP[\fIsubscript\fP]} expands to the length of
+${\fIname\fP[\fIsubscript\fP]}.  If \fIsubscript\fP is \fB*\fP or
+\fB@\fP, the expansion is the number of elements in the array.
+Referencing an array variable without a subscript is equivalent to
+referencing element zero.
+.PP
+The
+.B unset
+builtin is used to destroy arrays.  \fBunset\fP \fIname\fP[\fIsubscript\fP]
+destroys the array element at index \fIsubscript\fP.
+\fBunset\fP \fIname\fP, where \fIname\fP is an array, or
+\fBunset\fP \fIname\fP[\fIsubscript\fP], where
+\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array.
+.PP
+The
+.BR declare ,
+.BR local ,
+and
+.B readonly
+builtins each accept a
+.B \-a
+option to specify an array.  The
+.B read
+builtin accepts a
+.B \-a
+option to assign a list of words read from the standard input
+to an array.  The
+.B set
+and
+.B declare
+builtins display array values in a way that allows them to be
+reused as assignments.
+.SH EXPANSION
+Expansion is performed on the command line after it has been split into
+words.  There are seven kinds of expansion performed:
+.IR "brace expansion" ,
+.IR "tilde expansion" ,
+.IR "parameter and variable expansion" ,
+.IR "command substitution" ,
+.IR "arithmetic expansion" ,
+.IR "word splitting" ,
+and
+.IR "pathname expansion" .
+.PP
+The order of expansions is: brace expansion, tilde expansion,
+parameter, variable and arithmetic expansion and
+command substitution
+(done in a left-to-right fashion), word splitting, and pathname
+expansion.
+.PP
+On systems that can support it, there is an additional expansion
+available: \fIprocess substitution\fP.
+.PP
+Only brace expansion, word splitting, and pathname expansion
+can change the number of words of the expansion; other expansions
+expand a single word to a single word.
+The only exceptions to this are the expansions of
+"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP"
+as explained above (see
+.SM
+.BR PARAMETERS ).
+.SS Brace Expansion
+.PP
+.I "Brace expansion"
+is a mechanism by which arbitrary strings
+may be generated.  This mechanism is similar to
+\fIpathname expansion\fP, but the filenames generated
+need not exist.  Patterns to be brace expanded take
+the form of an optional
+.IR preamble ,
+followed by a series of comma-separated strings
+between a pair of braces, followed by an optional
+.IR postscript .
+The preamble is prefixed to each string contained
+within the braces, and the postscript is then appended
+to each resulting string, expanding left to right.
+.PP
+Brace expansions may be nested.  The results of each expanded
+string are not sorted; left to right order is preserved.
+For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'.
+.PP
+Brace expansion is performed before any other expansions,
+and any characters special to other expansions are preserved
+in the result.  It is strictly textual.
+.B Bash
+does not apply any syntactic interpretation to the context of the
+expansion or the text between the braces.
+.PP
+A correctly-formed brace expansion must contain unquoted opening
+and closing braces, and at least one unquoted comma.
+Any incorrectly formed brace expansion is left unchanged.
+A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its
+being considered part of a brace expression.
+To avoid conflicts with parameter expansion, the string \fB${\fP
+is not considered eligible for brace expansion.
+.PP
+This construct is typically used as shorthand when the common
+prefix of the strings to be generated is longer than in the
+above example:
+.RS
+.PP
+mkdir /usr/local/src/bash/{old,new,dist,bugs}
+.RE
+or
+.RS
+chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+.RE
+.PP
+Brace expansion introduces a slight incompatibility with
+historical versions of
+.BR sh .
+.B sh
+does not treat opening or closing braces specially when they
+appear as part of a word, and preserves them in the output.
+.B Bash
+removes braces from words as a consequence of brace
+expansion.  For example, a word entered to
+.B sh
+as \fIfile{1,2}\fP
+appears identically in the output.  The same word is
+output as
+.I file1 file2
+after expansion by
+.BR bash .
+If strict compatibility with
+.B sh
+is desired, start
+.B bash
+with the
+.B +B 
+option or disable brace expansion with the
+.B +B
+option to the
+.B set
+command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS Tilde Expansion
+.PP
+If a word begins with an unquoted tilde character (`\fB~\fP'), all of
+the characters preceding the first unquoted slash (or all characters,
+if there is no unquoted slash) are considered a \fItilde-prefix\fP.
+If none of the characters in the tilde-prefix are quoted, the
+characters in the tilde-prefix following the tilde are treated as a
+possible \fIlogin name\fP.
+If this login name is the null string, the tilde is replaced with the
+value of the shell parameter
+.SM
+.BR HOME .
+If
+.SM
+.B HOME
+is unset, the home directory of the user executing the shell is
+substituted instead.
+Otherwise, the tilde-prefix is replaced with the home directory
+associated with the specified login name.
+.PP
+If the tilde-prefix is a `~+', the value of the shell variable
+.SM
+.B PWD
+replaces the tilde-prefix.
+If the tilde-prefix is a `~\-', the value of the shell variable
+.SM
+.BR OLDPWD ,
+if it is set, is substituted.
+If the characters following the tilde in the tilde-prefix consist
+of a number \fIN\fP, optionally prefixed
+by a `+' or a `\-', the tilde-prefix is replaced with the corresponding
+element from the directory stack, as it would be displayed by the
+.B dirs
+builtin invoked with the tilde-prefix as an argument.
+If the characters following the tilde in the tilde-prefix consist of a
+number without a leading `+' or `\-', `+' is assumed.
+.PP
+If the login name is invalid, or the tilde expansion fails, the word
+is unchanged.
+.PP
+Each variable assignment is checked for unquoted tilde-prefixes immediately
+following a
+.B :
+or
+.BR = .
+In these cases, tilde expansion is also performed.
+Consequently, one may use file names with tildes in assignments to
+.SM
+.BR PATH ,
+.SM
+.BR MAILPATH ,
+and
+.SM
+.BR CDPATH ,
+and the shell assigns the expanded value.
+.SS Parameter Expansion
+.PP
+The `\fB$\fP' character introduces parameter expansion,
+command substitution, or arithmetic expansion.  The parameter name
+or symbol to be expanded may be enclosed in braces, which
+are optional but serve to protect the variable to be expanded from
+characters immediately following it which could be
+interpreted as part of the name.
+.PP
+When braces are used, the matching ending brace is the first `\fB}\fP'
+not escaped by a backslash or within a quoted string, and not within an
+embedded arithmetic expansion, command substitution, or paramter
+expansion.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP}
+The value of \fIparameter\fP is substituted.  The braces are required
+when
+.I parameter
+is a positional parameter with more than one digit,
+or when
+.I parameter
+is followed by a character which is not to be
+interpreted as part of its name.
+.PD
+.PP
+If the first character of \fIparameter\fP is an exclamation point,
+a level of variable indirection is introduced.
+\fBBash\fP uses the value of the variable formed from the rest of
+\fIparameter\fP as the name of the variable; this variable is then
+expanded and that value is used in the rest of the substitution, rather
+than the value of \fIparameter\fP itself.
+This is known as \fIindirect expansion\fP.
+The exception to this is the expansion of ${!\fIprefix\fP*}
+described below.
+.PP
+In each of the cases below, \fIword\fP is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
+When not performing substring expansion, \fBbash\fP tests for a parameter
+that is unset or null; omitting the colon results in a test only for a
+parameter that is unset.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP\fB:\-\fP\fIword\fP}
+\fBUse Default Values\fP.  If
+.I parameter
+is unset or null, the expansion of
+.I word
+is substituted.  Otherwise, the value of
+.I parameter
+is substituted.
+.TP
+${\fIparameter\fP\fB:=\fP\fIword\fP}
+\fBAssign Default Values\fP.
+If
+.I parameter
+is unset or null, the expansion of
+.I word
+is assigned to
+.IR parameter .
+The value of
+.I parameter
+is then substituted.  Positional parameters and special parameters may
+not be assigned to in this way.
+.TP
+${\fIparameter\fP\fB:?\fP\fIword\fP}
+\fBDisplay Error if Null or Unset\fP.
+If
+.I parameter
+is null or unset, the expansion of \fIword\fP (or a message to that effect
+if
+.I word
+is not present) is written to the standard error and the shell, if it
+is not interactive, exits.  Otherwise, the value of \fIparameter\fP is
+substituted.
+.TP
+${\fIparameter\fP\fB:+\fP\fIword\fP}
+\fBUse Alternate Value\fP.
+If
+.I parameter
+is null or unset, nothing is substituted, otherwise the expansion of
+.I word
+is substituted.
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
+.PD
+\fBSubstring Expansion.\fP
+Expands to up to \fIlength\fP characters of \fIparameter\fP
+starting at the character specified by \fIoffset\fP.
+If \fIlength\fP is omitted, expands to the substring of
+\fIparameter\fP starting at the character specified by \fIoffset\fP.
+\fIlength\fP and \fIoffset\fP are arithmetic expressions (see
+.SM
+.B
+ARITHMETIC EVALUATION
+below).
+\fIlength\fP must evaluate to a number greater than or equal to zero.
+If \fIoffset\fP evaluates to a number less than zero, the value
+is used as an offset from the end of the value of \fIparameter\fP.
+If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional
+parameters beginning at \fIoffset\fP.
+If \fIparameter\fP is an array name indexed by @ or *,
+the result is the \fIlength\fP
+members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}.
+Substring indexing is zero-based unless the positional parameters 
+are used, in which case the indexing starts at 1.
+.TP
+${\fB!\fP\fIprefix\fP\fB*\fP}
+Expands to the names of variables whose names begin with \fIprefix\fP,
+separated by the first character of the
+.SM
+.B IFS
+special variable.
+.TP
+${\fB#\fP\fIparameter\fP}
+The length in characters of the value of \fIparameter\fP is substituted.
+If
+.I parameter
+is
+.B *
+or 
+.BR @ ,
+the value substituted is the number of positional parameters.
+If
+.I parameter
+is an array name subscripted by
+.B *
+or
+.BR @ ,
+the value substituted is the number of elements in the array.
+.TP
+${\fIparameter\fP\fB#\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB##\fP\fIword\fP}
+.PD
+The 
+.I word
+is expanded to produce a pattern just as in pathname
+expansion.  If the pattern matches the beginning of
+the value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB#\fP'' case) or the
+longest matching pattern (the ``\fB##\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB%\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB%%\fP\fIword\fP}
+.PD
+The \fIword\fP is expanded to produce a pattern just as in
+pathname expansion.
+If the pattern matches a trailing portion of the expanded value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB%\fP'' case) or the
+longest matching pattern (the ``\fB%%\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD
+The \fIpattern\fP is expanded to produce a pattern just as in
+pathname expansion.
+\fIParameter\fP is expanded and the longest match of \fIpattern\fP
+against its value is replaced with \fIstring\fP.
+In the first form, only the first match is replaced.
+The second form causes all matches of \fIpattern\fP to be
+replaced with \fIstring\fP.
+If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
+of the expanded value of \fIparameter\fP.
+If \fIpattern\fP begins with \fB%\fP, it must match at the end
+of the expanded value of \fIparameter\fP.
+If \fIstring\fP is null, matches of \fIpattern\fP are deleted
+and the \fB/\fP following \fIpattern\fP may be omitted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the substitution operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the substitution operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.SS Command Substitution
+.PP
+\fICommand substitution\fP allows the output of a command to replace
+the command name.  There are two forms:
+.PP
+.RS
+.PP
+\fB$(\fP\fIcommand\fP\|\fB)\fP
+.RE
+or
+.RS
+\fB`\fP\fIcommand\fP\fB`\fP
+.RE
+.PP
+.B Bash
+performs the expansion by executing \fIcommand\fP and
+replacing the command substitution with the standard output of the
+command, with any trailing newlines deleted.
+Embedded newlines are not deleted, but they may be removed during
+word splitting.
+The command substitution \fB$(cat \fIfile\fP)\fR can be replaced by
+the equivalent but faster \fB$(< \fIfile\fP)\fR.
+.PP
+When the old-style backquote form of substitution is used,
+backslash retains its literal meaning except when followed by
+.BR $ ,
+.BR ` ,
+or
+.BR \e .
+The first backquote not preceded by a backslash terminates the
+command substitution.
+When using the $(\^\fIcommand\fP\|) form, all characters between the
+parentheses make up the command; none are treated specially.
+.PP
+Command substitutions may be nested.  To nest when using the backquoted form,
+escape the inner backquotes with backslashes.
+.PP
+If the substitution appears within double quotes, word splitting and
+pathname expansion are not performed on the results.
+.SS Arithmetic Expansion
+.PP
+Arithmetic expansion allows the evaluation of an arithmetic expression
+and the substitution of the result.  The format for arithmetic expansion is:
+.RS
+.PP
+\fB$((\fP\fIexpression\fP\fB))\fP
+.RE
+.PP
+The
+.I expression
+is treated as if it were within double quotes, but a double quote
+inside the parentheses is not treated specially.
+All tokens in the expression undergo parameter expansion, string
+expansion, command substitution, and quote removal.
+Arithmetic substitutions may be nested.
+.PP
+The evaluation is performed according to the rules listed below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If
+.I expression
+is invalid,
+.B bash
+prints a message indicating failure and no substitution occurs.
+.SS Process Substitution
+.PP
+\fIProcess substitution\fP is supported on systems that support named
+pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files.
+It takes the form of
+\fB<(\fP\fIlist\^\fP\fB)\fP
+or
+\fB>(\fP\fIlist\^\fP\fB)\fP.
+The process \fIlist\fP is run with its input or output connected to a
+\fIFIFO\fP or some file in \fB/dev/fd\fP.  The name of this file is
+passed as an argument to the current command as the result of the
+expansion.  If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to
+the file will provide input for \fIlist\fP.  If the
+\fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an
+argument should be read to obtain the output of \fIlist\fP.
+.PP
+When available, process substitution is performed
+simultaneously with parameter and variable expansion, 
+command substitution,
+and arithmetic expansion.
+.SS Word Splitting
+.PP
+The shell scans the results of
+parameter expansion,
+command substitution,
+and
+arithmetic expansion
+that did not occur within double quotes for
+.IR "word splitting" .
+.PP
+The shell treats each character of
+.SM
+.B IFS
+as a delimiter, and splits the results of the other
+expansions into words on these characters.  If
+.SM
+.B IFS
+is unset, or its
+value is exactly
+.BR <space><tab><newline> ,
+the default, then
+any sequence of
+.SM
+.B IFS
+characters serves to delimit words.  If
+.SM
+.B IFS
+has a value other than the default, then sequences of
+the whitespace characters
+.B space
+and
+.B tab
+are ignored at the beginning and end of the
+word, as long as the whitespace character is in the
+value of
+.SM
+.BR IFS
+(an
+.SM
+.B IFS
+whitespace character).
+Any character in
+.SM
+.B IFS
+that is not
+.SM
+.B IFS
+whitespace, along with any adjacent
+.SM
+.B IFS
+whitespace characters, delimits a field.
+A sequence of
+.SM
+.B IFS
+whitespace characters is also treated as a delimiter.
+If the value of
+.SM
+.B IFS
+is null, no word splitting occurs.
+.PP
+Explicit null arguments (\^\f3"\^"\fP or \^\f3'\^'\fP\^) are retained.
+Unquoted implicit null arguments, resulting from the expansion of
+parameters that have no values, are removed.
+If a parameter with no value is expanded within double quotes, a
+null argument results and is retained.
+.PP
+Note that if no expansion occurs, no splitting
+is performed.
+.SS Pathname Expansion
+.PP
+After word splitting,
+unless the
+.B \-f
+option has been set,
+.B bash
+scans each word for the characters
+.BR * ,
+.BR ? ,
+and
+.BR [ .
+If one of these characters appears, then the word is
+regarded as a
+.IR pattern ,
+and replaced with an alphabetically sorted list of
+file names matching the pattern.
+If no matching file names are found,
+and the shell option
+.B nullglob
+is disabled, the word is left unchanged.
+If the 
+.B nullglob
+option is set, and no matches are found,
+the word is removed.
+If the shell option
+.B nocaseglob
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+When a pattern is used for pathname expansion,
+the character
+.B ``.''
+at the start of a name or immediately following a slash
+must be matched explicitly, unless the shell option
+.B dotglob
+is set.
+When matching a pathname, the slash character must always be
+matched explicitly.
+In other cases, the
+.B ``.''
+character is not treated specially.
+See the description of
+.B shopt
+below under
+.SM
+.B SHELL BUILTIN COMMANDS
+for a description of the
+.BR nocaseglob ,
+.BR nullglob ,
+and
+.B dotglob
+shell options.
+.PP
+The
+.SM
+.B GLOBIGNORE
+shell variable may be used to restrict the set of file names matching a
+.IR pattern .
+If
+.SM
+.B GLOBIGNORE
+is set, each matching file name that also matches one of the patterns in
+.SM
+.B GLOBIGNORE
+is removed from the list of matches.
+The file names
+.B ``.''
+and
+.B ``..''
+are always ignored, even when
+.SM
+.B GLOBIGNORE
+is set.  However, setting
+.SM
+.B GLOBIGNORE
+has the effect of enabling the
+.B dotglob
+shell option, so all other file names beginning with a
+.B ``.''
+will match.
+To get the old behavior of ignoring file names beginning with a
+.BR ``.'' ,
+make
+.B ``.*''
+one of the patterns in
+.SM
+.BR GLOBIGNORE .
+The
+.B dotglob
+option is disabled when
+.SM
+.B GLOBIGNORE
+is unset.
+.PP
+\fBPattern Matching\fP
+.PP
+Any character that appears in a pattern, other than the special pattern
+characters described below, matches itself.  The NUL character may not
+occur in a pattern.  The special pattern characters must be quoted if
+they are to be matched literally.
+.PP
+The special pattern characters have the following meanings:
+.PP
+.PD 0
+.TP
+.B *
+Matches any string, including the null string.
+.TP
+.B ?
+Matches any single character.
+.TP
+.B [...]
+Matches any one of the enclosed characters.  A pair of characters
+separated by a hyphen denotes a
+\fIrange expression\fP;
+any character that sorts between those two characters, inclusive,
+using the current locale's collating sequence and character set,
+is matched.  If the first character following the
+.B [
+is a
+.B !
+or a
+.B ^
+then any character not enclosed is matched.
+The sorting order of characters in range expressions is determined by
+the current locale and the value of the \fBLC_COLLATE\fP shell variable,
+if set.
+A 
+.B \-
+may be matched by including it as the first or last character
+in the set.
+A
+.B ]
+may be matched by including it as the first character
+in the set.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and
+.BR ] ,
+\fIcharacter classes\fP can be specified using the syntax
+\fB[:\fP\fIclass\fP\fB:]\fP, where \fIclass\fP is one of the
+following classes defined in the POSIX.2 standard:
+.PP
+.RS
+.B
+.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
+.if t alnum   alpha   ascii   blank   cntrl   digit   graph   lower   print   punct   space   upper   word   xdigit
+.br
+A character class matches any character belonging to that class.
+The \fBword\fP character class matches letters, digits, and the character _.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+an \fIequivalence class\fP can be specified using the syntax
+\fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the
+same collation weight (as defined by the current locale) as
+the character \fIc\fP.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol
+\fIsymbol\fP.
+.RE
+.PD
+.PP
+If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
+builtin, several extended pattern matching operators are recognized.
+In the following description, a \fIpattern-list\fP is a list of one
+or more patterns separated by a \fB|\fP.
+Composite patterns may be formed using one or more of the following
+sub-patterns:
+.sp 1
+.PD 0
+.RS
+.TP
+\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or one occurrence of the given patterns
+.TP
+\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or more occurrences of the given patterns
+.TP
+\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches one or more occurrences of the given patterns
+.TP
+\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches exactly one of the given patterns
+.TP
+\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches anything except one of the given patterns
+.RE
+.PD
+.SS Quote Removal
+.PP
+After the preceding expansions, all unquoted occurrences of the
+characters
+.BR \e ,
+.BR ' ,
+and \^\f3"\fP\^ that did not result from one of the above
+expansions are removed.
+.SH REDIRECTION
+Before a command is executed, its input and output
+may be
+.I redirected
+using a special notation interpreted by the shell.
+Redirection may also be used to open and close files for the
+current shell execution environment.  The following redirection
+operators may precede or appear anywhere within a
+.I simple command
+or may follow a
+.IR command .
+Redirections are processed in the order they appear, from
+left to right.
+.PP
+In the following descriptions, if the file descriptor number is
+omitted, and the first character of the redirection operator is
+.BR < ,
+the redirection refers to the standard input (file descriptor
+0).  If the first character of the redirection operator is
+.BR > ,
+the redirection refers to the standard output (file descriptor
+1).
+.PP
+The word following the redirection operator in the following
+descriptions, unless otherwise noted, is subjected to brace expansion,
+tilde expansion, parameter expansion, command substitution, arithmetic
+expansion, quote removal, pathname expansion, and word splitting.
+If it expands to more than one word,
+.B bash
+reports an error.
+.PP
+Note that the order of redirections is significant.  For example, 
+the command
+.RS
+.PP
+ls \fB>\fP dirlist 2\fB>&\fP1
+.RE
+.PP
+directs both standard output and standard error to the file 
+.IR dirlist ,
+while the command
+.RS
+.PP
+ls 2\fB>&\fP1 \fB>\fP dirlist
+.RE
+.PP
+directs only the standard output to file
+.IR dirlist ,
+because the standard error was duplicated as standard output
+before the standard output was redirected to
+.IR dirlist .
+.PP
+\fBBash\fP handles several filenames specially when they are used in
+redirections, as described in the following table:
+.RS
+.PP
+.PD 0
+.TP
+.B /dev/fd/\fIfd\fP
+If \fIfd\fP is a valid integer, file descriptor \fIfd\fP is duplicated.
+.TP
+.B /dev/stdin
+File descriptor 0 is duplicated.
+.TP
+.B /dev/stdout
+File descriptor 1 is duplicated.
+.TP
+.B /dev/stderr
+File descriptor 2 is duplicated.
+.TP
+.B /dev/tcp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+a TCP connection to the corresponding socket.
+.TP
+.B /dev/udp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+a UDP connection to the corresponding socket.
+.PD
+.RE
+.PP
+A failure to open or create a file causes the redirection to fail.
+.SS Redirecting Input
+.PP
+Redirection of input causes the file whose name results from
+the expansion of
+.I word
+to be opened for reading on file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if
+.I n
+is not specified.
+.PP
+The general format for redirecting input is:
+.RS
+.PP
+[\fIn\fP]\fB<\fP\fIword\fP
+.RE
+.SS Redirecting Output
+.PP
+Redirection of output causes the file whose name results from
+the expansion of
+.I word
+to be opened for writing on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created;
+if it does exist it is truncated to zero size.
+.PP
+The general format for redirecting output is:
+.RS
+.PP
+[\fIn\fP]\fB>\fP\fIword\fP
+.RE
+.PP
+If the redirection operator is
+.BR > ,
+and the
+.B noclobber
+option to the
+.B set
+builtin has been enabled, the redirection will fail if the file
+whose name results from the expansion of \fIword\fP exists and is
+a regular file.
+If the redirection operator is
+.BR >| ,
+or the redirection operator is
+.B >
+and the
+.B noclobber
+option to the
+.B set
+builtin command is not enabled, the redirection is attempted even
+if the file named by \fIword\fP exists.
+.SS Appending Redirected Output
+.PP
+Redirection of output in this fashion
+causes the file whose name results from
+the expansion of
+.I word
+to be opened for appending on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created.
+.PP
+The general format for appending output is:
+.RS
+.PP
+[\fIn\fP]\fB>>\fP\fIword\fP
+.RE
+.PP
+.SS Redirecting Standard Output and Standard Error
+.PP
+.B Bash
+allows both the
+standard output (file descriptor 1) and
+the standard error output (file descriptor 2)
+to be redirected to the file whose name is the
+expansion of
+.I word
+with this construct.
+.PP
+There are two formats for redirecting standard output and
+standard error:
+.RS
+.PP
+\fB&>\fP\fIword\fP
+.RE
+and
+.RS
+\fB>&\fP\fIword\fP
+.RE
+.PP
+Of the two forms, the first is preferred.
+This is semantically equivalent to
+.RS
+.PP
+\fB>\fP\fIword\fP 2\fB>&\fP1
+.RE
+.SS Here Documents
+.PP
+This type of redirection instructs the shell to read input from the
+current source until a line containing only
+.I word
+(with no trailing blanks)
+is seen.  All of
+the lines read up to that point are then used as the standard
+input for a command.
+.PP
+The format of here-documents is:
+.RS
+.PP
+.nf
+\fB<<\fP[\fB\-\fP]\fIword\fP
+        \fIhere-document\fP
+\fIdelimiter\fP
+.fi
+.RE
+.PP
+No parameter expansion, command substitution, arithmetic expansion,
+or pathname expansion is performed on
+.IR word .
+If any characters in
+.I word
+are quoted, the
+.I delimiter
+is the result of quote removal on
+.IR word ,
+and the lines in the here-document are not expanded.
+If \fIword\fP is unquoted,
+all lines of the here-document are subjected to parameter expansion,
+command substitution, and arithmetic expansion.  In the latter
+case, the character sequence
+.B \e<newline>
+is ignored, and
+.B \e
+must be used to quote the characters
+.BR \e ,
+.BR $ ,
+and
+.BR ` .
+.PP
+If the redirection operator is
+.BR <<\- ,
+then all leading tab characters are stripped from input lines and the
+line containing
+.IR delimiter .
+This allows
+here-documents within shell scripts to be indented in a
+natural fashion.
+.SS "Here Strings"
+A variant of here documents, the format is:
+.RS
+.PP
+.nf
+\fB<<<\fP\fIword\fP
+.fi
+.RE
+.PP
+The \fIword\fP is expanded and supplied to the command on its standard
+input.
+.SS "Duplicating File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIword\fP
+.RE
+.PP
+is used to duplicate input file descriptors.
+If
+.I word
+expands to one or more digits, the file descriptor denoted by
+.I n
+is made to be a copy of that file descriptor.
+If the digits in
+.I word
+do not specify a file descriptor open for input, a redirection error occurs.
+If
+.I word
+evaluates to
+.BR \- ,
+file descriptor
+.I n
+is closed.  If
+.I n
+is not specified, the standard input (file descriptor 0) is used.
+.PP
+The operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIword\fP
+.RE
+.PP
+is used similarly to duplicate output file descriptors.  If
+.I n
+is not specified, the standard output (file descriptor 1) is used.
+If the digits in
+.I word
+do not specify a file descriptor open for output, a redirection error occurs.
+As a special case, if \fIn\fP is omitted, and \fIword\fP does not
+expand to one or more digits, the standard output and standard
+error are redirected as described previously.
+.SS "Moving File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if \fIn\fP is not specified.
+\fIdigit\fP is closed after being duplicated to \fIn\fP.
+.PP
+Similarly, the redirection operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if \fIn\fP is not specified.
+.SS "Opening File Descriptors for Reading and Writing"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<>\fP\fIword\fP
+.RE
+.PP
+causes the file whose name is the expansion of
+.I word
+to be opened for both reading and writing on file descriptor
+.IR n ,
+or on file descriptor 0 if
+.I n
+is not specified.  If the file does not exist, it is created.
+.SH ALIASES
+\fIAliases\fP allow a string to be substituted for a word when it is used
+as the first word of a simple command.
+The shell maintains a list of aliases that may be set and unset with the
+.B alias
+and
+.B unalias
+builtin commands (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+The first word of each command, if unquoted,
+is checked to see if it has an
+alias.  If so, that word is replaced by the text of the alias.
+The alias name and the replacement text may contain any valid
+shell input, including the
+.I metacharacters
+listed above, with the exception that the alias name may not
+contain \fI=\fP.  The first word of the replacement text is tested
+for aliases, but a word that is identical to an alias being expanded
+is not expanded a second time.  This means that one may alias
+.B ls
+to
+.BR "ls \-F" ,
+for instance, and
+.B bash
+does not try to recursively expand the replacement text.
+If the last character of the alias value is a
+.IR blank ,
+then the next command
+word following the alias is also checked for alias expansion.
+.PP
+Aliases are created and listed with the
+.B alias
+command, and removed with the
+.B unalias
+command.
+.PP
+There is no mechanism for using arguments in the replacement text.
+If arguments are needed, a shell function should be used (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+Aliases are not expanded when the shell is not interactive, unless
+the
+.B expand_aliases
+shell option is set using
+.B shopt
+(see the description of
+.B shopt
+under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP
+below).
+.PP
+The rules concerning the definition and use of aliases are
+somewhat confusing.
+.B Bash
+always reads at least one complete line
+of input before executing any
+of the commands on that line.  Aliases are expanded when a
+command is read, not when it is executed.  Therefore, an
+alias definition appearing on the same line as another
+command does not take effect until the next line of input is read.
+The commands following the alias definition
+on that line are not affected by the new alias.
+This behavior is also an issue when functions are executed.
+Aliases are expanded when a function definition is read,
+not when the function is executed, because a function definition
+is itself a compound command.  As a consequence, aliases
+defined in a function are not available until after that
+function is executed.  To be safe, always put
+alias definitions on a separate line, and do not use
+.B alias
+in compound commands.
+.PP
+For almost every purpose, aliases are superseded by
+shell functions.
+.SH FUNCTIONS
+A shell function, defined as described above under
+.SM
+.BR "SHELL GRAMMAR" ,
+stores a series of commands for later execution.
+When the name of a shell function is used as a simple command name,
+the list of commands associated with that function name is executed.
+Functions are executed in the context of the
+current shell; no new process is created to interpret
+them (contrast this with the execution of a shell script).
+When a function is executed, the arguments to the
+function become the positional parameters
+during its execution.
+The special parameter
+.B #
+is updated to reflect the change.  Positional parameter 0
+is unchanged.
+The
+.SM
+.B FUNCNAME
+variable is set to the name of the function while the function
+is executing.
+All other aspects of the shell execution
+environment are identical between a function and its caller
+with the exception that the
+.SM
+.B DEBUG
+trap (see the description of the
+.B trap
+builtin under
+.SM
+.B SHELL BUILTIN COMMANDS
+below) is not inherited unless the function has been given the
+\fBtrace\fP attribute (see the description of the
+.SM
+.B declare
+builtin below).
+.PP
+Variables local to the function may be declared with the
+.B local
+builtin command.  Ordinarily, variables and their values
+are shared between the function and its caller.
+.PP
+If the builtin command
+.B return
+is executed in a function, the function completes and
+execution resumes with the next command after the function
+call.  When a function completes, the values of the
+positional parameters and the special parameter
+.B #
+are restored to the values they had prior to the function's
+execution.
+.PP
+Function names and definitions may be listed with the
+.B \-f
+option to the
+.B declare
+or
+.B typeset
+builtin commands.  The
+.B \-F
+option to
+.B declare
+or
+.B typeset
+will list the function names only.
+Functions may be exported so that subshells
+automatically have them defined with the
+.B \-f
+option to the 
+.B export
+builtin.
+.PP
+Functions may be recursive.  No limit is imposed on the number
+of recursive calls.
+.SH "ARITHMETIC EVALUATION"
+The shell allows arithmetic expressions to be evaluated, under
+certain circumstances (see the \fBlet\fP builtin command and
+\fBArithmetic Expansion\fP).
+Evaluation is done in fixed-width integers with no check for overflow,
+though division by 0 is trapped and flagged as an error.
+The operators and their precedence and associativity are the same
+as in the C language.
+The following list of operators is grouped into levels of
+equal-precedence operators.
+The levels are listed in order of decreasing precedence.
+.PP
+.PD 0
+.TP
+.B \fIid\fP++ \fIid\fP\-\-
+variable post-increment and post-decrement
+.TP
+.B ++\fIid\fP \-\-\fIid\fP
+variable pre-increment and pre-decrement
+.TP
+.B \- +
+unary minus and plus
+.TP
+.B ! ~
+logical and bitwise negation
+.TP
+.B **
+exponentiation
+.TP
+.B * / %
+multiplication, division, remainder
+.TP
+.B + \-
+addition, subtraction
+.TP
+.B << >>
+left and right bitwise shifts
+.TP
+.B <= >= < >
+comparison
+.TP
+.B == !=
+equality and inequality
+.TP
+.B &
+bitwise AND
+.TP
+.B ^
+bitwise exclusive OR
+.TP
+.B |
+bitwise OR
+.TP
+.B &&
+logical AND
+.TP
+.B ||
+logical OR
+.TP
+.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP
+conditional evaluation
+.TP
+.B = *= /= %= += \-= <<= >>= &= ^= |=
+assignment
+.TP
+.B \fIexpr1\fP , \fIexpr2\fP
+comma
+.PD
+.PP
+Shell variables are allowed as operands; parameter expansion is
+performed before the expression is evaluated.
+Within an expression, shell variables may also be referenced by name
+without using the parameter expansion syntax.
+The value of a variable is evaluated as an arithmetic expression
+when it is referenced.
+A shell variable need not have its integer attribute
+turned on to be used in an expression.
+.PP
+Constants with a leading 0 are interpreted as octal numbers.
+A leading 0x or 0X denotes hexadecimal.
+Otherwise, numbers take the form [\fIbase#\fP]n, where \fIbase\fP
+is a decimal number between 2 and 64 representing the arithmetic
+base, and \fIn\fP is a number in that base.
+If \fIbase#\fP is omitted, then base 10 is used.
+The digits greater than 9 are represented by the lowercase letters,
+the uppercase letters, @, and _, in that order.
+If \fIbase\fP is less than or equal to 36, lowercase and uppercase
+letters may be used interchangably to represent numbers between 10
+and 35.
+.PP
+Operators are evaluated in order of precedence.  Sub-expressions in
+parentheses are evaluated first and may override the precedence
+rules above.
+.SH "CONDITIONAL EXPRESSIONS"
+Conditional expressions are used by the \fB[[\fP compound command and
+the \fBtest\fP and \fB[\fP builtin commands to test file attributes
+and perform string and arithmetic comparisons.
+Expressions are formed from the following unary or binary primaries.
+If any \fIfile\fP argument to one of the primaries is of the form
+\fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked.
+If the \fIfile\fP argument to one of the primaries is one of
+\fI/dev/stdin\fP, \fI/dev/stdout\fP, or \fI/dev/stderr\fP, file
+descriptor 0, 1, or 2, respectively, is checked.
+.sp 1
+.PD 0
+.TP
+.B \-a \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-b \fIfile\fP
+True if \fIfile\fP exists and is a block special file.
+.TP
+.B \-c \fIfile\fP
+True if \fIfile\fP exists and is a character special file.
+.TP
+.B \-d \fIfile\fP
+True if \fIfile\fP exists and is a directory.
+.TP
+.B \-e \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-f \fIfile\fP
+True if \fIfile\fP exists and is a regular file.
+.TP
+.B \-g \fIfile\fP
+True if \fIfile\fP exists and is set-group-id.
+.TP
+.B \-h \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-k \fIfile\fP
+True if \fIfile\fP exists and its ``sticky'' bit is set.
+.TP
+.B \-p \fIfile\fP
+True if \fIfile\fP exists and is a named pipe (FIFO).
+.TP
+.B \-r \fIfile\fP
+True if \fIfile\fP exists and is readable.
+.TP
+.B \-s \fIfile\fP
+True if \fIfile\fP exists and has a size greater than zero.
+.TP
+.B \-t \fIfd\fP
+True if file descriptor
+.I fd
+is open and refers to a terminal.
+.TP
+.B \-u \fIfile\fP
+True if \fIfile\fP exists and its set-user-id bit is set.
+.TP
+.B \-w \fIfile\fP
+True if \fIfile\fP exists and is writable.
+.TP
+.B \-x \fIfile\fP
+True if \fIfile\fP exists and is executable.
+.TP
+.B \-O \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective user id.
+.TP
+.B \-G \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective group id.
+.TP
+.B \-L \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-S \fIfile\fP
+True if \fIfile\fP exists and is a socket.
+.TP
+.B \-N \fIfile\fP
+True if \fIfile\fP exists and has been modified since it was last read.
+.TP
+\fIfile1\fP \-\fBnt\fP \fIfile2\fP
+True if \fIfile1\fP is newer (according to modification date) than \fIfile2\fP,
+or if \fIfile1\fP exists and \fPfile2\fP does not.
+.TP
+\fIfile1\fP \-\fBot\fP \fIfile2\fP
+True if \fIfile1\fP is older than \fIfile2\fP, or if \fIfile2\fP exists
+and \fIfile1\fP does not.
+.TP
+\fIfile1\fP \fB\-ef\fP \fIfile2\fP
+True if \fIfile1\fP and \fIfile2\fP refer to the same device and
+inode numbers.
+.TP
+.B \-o \fIoptname\fP
+True if shell option
+.I optname
+is enabled.
+See the list of options under the description of the
+.B \-o
+option to the
+.B set
+builtin below.
+.TP
+.B \-z \fIstring\fP
+True if the length of \fIstring\fP is zero.
+.TP
+.B \-n \fIstring\fP
+.TP
+\fIstring\fP
+True if the length of
+.I string
+is non-zero.
+.TP
+\fIstring1\fP \fB==\fP \fIstring2\fP
+True if the strings are equal.  \fB=\fP may be used in place of
+\fB==\fP for strict POSIX compliance.
+.TP
+\fIstring1\fP \fB!=\fP \fIstring2\fP
+True if the strings are not equal.
+.TP
+\fIstring1\fP \fB<\fP \fIstring2\fP
+True if \fIstring1\fP sorts before \fIstring2\fP lexicographically
+in the current locale.
+.TP
+\fIstring1\fP \fB>\fP \fIstring2\fP
+True if \fIstring1\fP sorts after \fIstring2\fP lexicographically
+in the current locale.
+.TP
+.I \fIarg1\fP \fBOP\fP \fIarg2\fP
+.SM
+.B OP
+is one of
+.BR \-eq ,
+.BR \-ne ,
+.BR \-lt ,
+.BR \-le ,
+.BR \-gt ,
+or
+.BR \-ge .
+These arithmetic binary operators return true if \fIarg1\fP
+is equal to, not equal to, less than, less than or equal to,
+greater than, or greater than or equal to \fIarg2\fP, respectively.
+.I Arg1
+and
+.I arg2
+may be positive or negative integers.
+.PD
+.SH "SIMPLE COMMAND EXPANSION"
+When a simple command is executed, the shell performs the following
+expansions, assignments, and redirections, from left to right.
+.IP 1.
+The words that the parser has marked as variable assignments (those
+preceding the command name) and redirections are saved for later
+processing.
+.IP 2.
+The words that are not variable assignments or redirections are
+expanded.  If any words remain after expansion, the first word
+is taken to be the name of the command and the remaining words are
+the arguments.
+.IP 3.
+Redirections are performed as described above under
+.SM
+.BR REDIRECTION .
+.IP 4.
+The text after the \fB=\fP in each variable assignment undergoes tilde
+expansion, parameter expansion, command substitution, arithmetic expansion,
+and quote removal before being assigned to the variable.
+.PP
+If no command name results, the variable assignments affect the current
+shell environment.  Otherwise, the variables are added to the environment
+of the executed command and do not affect the current shell environment.
+If any of the assignments attempts to assign a value to a readonly variable,
+an error occurs, and the command exits with a non-zero status.
+.PP
+If no command name results, redirections are performed, but do not
+affect the current shell environment.  A redirection error causes the
+command to exit with a non-zero status.
+.PP
+If there is a command name left after expansion, execution proceeds as
+described below.  Otherwise, the command exits.  If one of the expansions
+contained a command substitution, the exit status of the command is
+the exit status of the last command substitution performed.  If there
+were no command substitutions, the command exits with a status of zero.
+.SH "COMMAND EXECUTION"
+After a command has been split into words, if it results in a
+simple command and an optional list of arguments, the following
+actions are taken.
+.PP
+If the command name contains no slashes, the shell attempts to
+locate it.  If there exists a shell function by that name, that
+function is invoked as described above in
+.SM
+.BR FUNCTIONS .
+If the name does not match a function, the shell searches for
+it in the list of shell builtins.  If a match is found, that
+builtin is invoked.
+.PP
+If the name is neither a shell function nor a builtin,
+and contains no slashes,
+.B bash
+searches each element of the
+.SM
+.B PATH
+for a directory containing an executable file by that name.
+.B Bash
+uses a hash table to remember the full pathnames of executable
+files (see
+.B hash
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+A full search of the directories in
+.SM
+.B PATH
+is performed only if the command is not found in the hash table.
+If the search is unsuccessful, the shell prints an error
+message and returns an exit status of 127.
+.PP
+If the search is successful, or if the command name contains
+one or more slashes, the shell executes the named program in a
+separate execution environment.
+Argument 0 is set to the name given, and the remaining arguments
+to the command are set to the arguments given, if any.
+.PP
+If this execution fails because the file is not in executable
+format, and the file is not a directory, it is assumed to be
+a \fIshell script\fP, a file
+containing shell commands.  A subshell is spawned to execute
+it.  This subshell reinitializes itself, so
+that the effect is as if a new shell had been invoked
+to handle the script, with the exception that the locations of
+commands remembered by the parent (see
+.B hash
+below under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP)
+are retained by the child.
+.PP
+If the program is a file beginning with
+.BR #! ,
+the remainder of the first line specifies an interpreter
+for the program.  The shell executes the
+specified interpreter on operating systems that do not
+handle this executable format themselves.  The arguments to the 
+interpreter consist of a single optional argument following the
+interpreter name on the first line of the program, followed
+by the name of the program, followed by the command
+arguments, if any.
+.SH COMMAND EXECUTION ENVIRONMENT
+The shell has an \fIexecution environment\fP, which consists of the
+following:
+.sp 1
+.IP \(bu
+open files inherited by the shell at invocation, as modified by
+redirections supplied to the \fBexec\fP builtin
+.IP \(bu
+the current working directory as set by \fBcd\fP, \fBpushd\fP, or
+\fBpopd\fP, or inherited by the shell at invocation
+.IP \(bu
+the file creation mode mask as set by \fBumask\fP or inherited from
+the shell's parent
+.IP \(bu
+current traps set by \fBtrap\fP
+.IP \(bu
+shell parameters that are set by variable assignment or with \fBset\fP
+or inherited from the shell's parent in the environment
+.IP \(bu
+shell functions defined during execution or inherited from the shell's
+parent in the environment
+.IP \(bu
+options enabled at invocation (either by default or with command-line
+arguments) or by \fBset\fP
+.IP \(bu
+options enabled by \fBshopt\fP
+.IP \(bu
+shell aliases defined with \fBalias\fP
+.IP \(bu
+various process IDs, including those of background jobs, the value
+of \fB$$\fP, and the value of \fB$PPID\fP
+.PP
+When a simple command other than a builtin or shell function
+is to be executed, it
+is invoked in a separate execution environment that consists of
+the following.  Unless otherwise noted, the values are inherited
+from the shell.
+.sp 1
+.IP \(bu
+the shell's open files, plus any modifications and additions specified
+by redirections to the command
+.IP \(bu
+the current working directory
+.IP \(bu
+the file creation mode mask
+.IP \(bu
+shell variables marked for export, along with variables exported for
+the command, passed in the environment
+.IP \(bu
+traps caught by the shell are reset to the values the inherited
+from the shell's parent, and traps ignored by the shell are ignored
+.PP
+A command invoked in this separate environment cannot affect the
+shell's execution environment. 
+.PP
+Command substitution and asynchronous commands are invoked in a
+subshell environment that is a duplicate of the shell environment,
+except that traps caught by the shell are reset to the values
+that the shell inherited from its parent at invocation.  Builtin
+commands that are invoked as part of a pipeline are also executed in a
+subshell environment.  Changes made to the subshell environment
+cannot affect the shell's execution environment.
+.PP
+If a command is followed by a \fB&\fP and job control is not active, the
+default standard input for the command is the empty file \fI/dev/null\fP.
+Otherwise, the invoked command inherits the file descriptors of the calling
+shell as modified by redirections.
+.SH ENVIRONMENT
+When a program is invoked it is given an array of strings
+called the
+.IR environment .
+This is a list of 
+\fIname\fP\-\fIvalue\fP pairs, of the form
+.IR "name\fR=\fPvalue" .
+.PP
+The shell provides several ways to manipulate the environment.
+On invocation, the shell scans its own environment and
+creates a parameter for each name found, automatically marking
+it for
+.I export
+to child processes.  Executed commands inherit the environment.
+The
+.B export
+and
+.B declare \-x
+commands allow parameters and functions to be added to and
+deleted from the environment.  If the value of a parameter
+in the environment is modified, the new value becomes part
+of the environment, replacing the old.  The environment
+inherited by any executed command consists of the shell's
+initial environment, whose values may be modified in the shell,
+less any pairs removed by the
+.B unset
+command, plus any additions via the
+.B export
+and
+.B declare \-x
+commands.
+.PP
+The environment for any
+.I simple command
+or function may be augmented temporarily by prefixing it with
+parameter assignments, as described above in
+.SM
+.BR PARAMETERS .
+These assignment statements affect only the environment seen
+by that command.
+.PP
+If the 
+.B \-k
+option is set (see the
+.B set
+builtin command below), then
+.I all
+parameter assignments are placed in the environment for a command,
+not just those that precede the command name.
+.PP
+When
+.B bash
+invokes an external command, the variable
+.B _
+is set to the full file name of the command and passed to that
+command in its environment.
+.SH "EXIT STATUS"
+For the shell's purposes, a command which exits with a 
+zero exit status has succeeded.  An exit status of zero
+indicates success.  A non-zero exit status indicates failure.
+When a command terminates on a fatal signal \fIN\fP, \fBbash\fP uses
+the value of 128+\fIN\fP as the exit status.
+.PP
+If a command is not found, the child process created to
+execute it returns a status of 127.  If a command is found
+but is not executable, the return status is 126.
+.PP
+If a command fails because of an error during expansion or redirection,
+the exit status is greater than zero.
+.PP
+Shell builtin commands return a status of 0 (\fItrue\fP) if
+successful, and non-zero (\fIfalse\fP) if an error occurs
+while they execute. 
+All builtins return an exit status of 2 to indicate incorrect usage.
+.PP
+\fBBash\fP itself returns the exit status of the last command
+executed, unless a syntax error occurs, in which case it exits
+with a non-zero value.  See also the \fBexit\fP builtin
+command below.
+.SH SIGNALS
+When \fBbash\fP is interactive, in the absence of any traps, it ignores
+.SM
+.B SIGTERM
+(so that \fBkill 0\fP does not kill an interactive shell),
+and
+.SM
+.B SIGINT
+is caught and handled (so that the \fBwait\fP builtin is interruptible).
+In all cases, \fBbash\fP ignores
+.SM
+.BR SIGQUIT .
+If job control is in effect,
+.B bash
+ignores
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+Synchronous jobs started by \fBbash\fP have signal handlers
+set to the values inherited by the shell from its parent.
+When job control is not in effect, asynchronous commands
+ignore
+.SM
+.B SIGINT
+and
+.SM
+.B SIGQUIT
+as well.
+Commands run as a result of command substitution ignore the
+keyboard-generated job control signals
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+The shell exits by default upon receipt of a
+.SM
+.BR SIGHUP .
+Before exiting, an interactive shell resends the
+.SM
+.B SIGHUP
+to all jobs, running or stopped.
+Stopped jobs are sent
+.SM
+.B SIGCONT
+to ensure that they receive the
+.SM
+.BR SIGHUP .
+To prevent the shell from
+sending the signal to a particular job, it should be removed from the
+jobs table with the 
+.B disown
+builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below) or marked 
+to not receive
+.SM
+.B SIGHUP
+using
+.BR "disown \-h" .
+.PP
+If the
+.B huponexit
+shell option has been set with
+.BR shopt ,
+.B bash
+sends a 
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.PP
+When \fBbash\fP receives a signal for which a trap has been set while
+waiting for a command to complete, the trap will not be executed until
+the command completes.
+When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP
+builtin, the reception of a signal for which a trap has been set will
+cause the \fBwait\fP builtin to return immediately with an exit status
+greater than 128, immediately after which the trap is executed.
+.SH "JOB CONTROL"
+.I Job control
+refers to the ability to selectively stop (\fIsuspend\fP)
+the execution of processes and continue (\fIresume\fP)
+their execution at a later point.  A user typically employs
+this facility via an interactive interface supplied jointly
+by the system's terminal driver and
+.BR bash .
+.PP
+The shell associates a
+.I job
+with each pipeline.  It keeps a table of currently executing
+jobs, which may be listed with the
+.B jobs
+command.  When
+.B bash
+starts a job asynchronously (in the
+.IR background ),
+it prints a line that looks like:
+.RS
+.PP
+[1] 25647
+.RE
+.PP
+indicating that this job is job number 1 and that the process ID
+of the last process in the pipeline associated with this job is 25647.
+All of the processes in a single pipeline are members of the same job.
+.B Bash
+uses the
+.I job
+abstraction as the basis for job control.
+.PP
+To facilitate the implementation of the user interface to job
+control, the operating system maintains the notion of a \fIcurrent terminal
+process group ID\fP.  Members of this process group (processes whose
+process group ID is equal to the current terminal process group ID)
+receive keyboard-generated signals such as
+.SM
+.BR SIGINT .
+These processes are said to be in the
+.IR foreground .
+.I Background
+processes are those whose process group ID differs from the terminal's;
+such processes are immune to keyboard-generated signals.
+Only foreground processes are allowed to read from or write to the
+terminal.  Background processes which attempt to read from (write to) the
+terminal are sent a 
+.SM
+.B SIGTTIN (SIGTTOU)
+signal by the terminal driver, 
+which, unless caught, suspends the process.
+.PP
+If the operating system on which
+.B bash
+is running supports
+job control,
+.B bash
+contains facilities to use it.
+Typing the
+.I suspend
+character (typically
+.BR ^Z ,
+Control-Z) while a process is running
+causes that process to be stopped and returns control to 
+.BR bash .
+Typing the
+.I "delayed suspend"
+character (typically
+.BR ^Y ,
+Control-Y) causes the process to be stopped when it
+attempts to read input from the terminal, and control to
+be returned to
+.BR bash .
+The user may then manipulate the state of this job, using the
+.B bg
+command to continue it in the background, the
+.B fg
+command to continue it in the foreground, or
+the
+.B kill
+command to kill it.  A \fB^Z\fP takes effect immediately,
+and has the additional side effect of causing pending output
+and typeahead to be discarded.
+.PP
+There are a number of ways to refer to a job in the shell.
+The character
+.B %
+introduces a job name.  Job number
+.I n
+may be referred to as
+.BR %n .
+A job may also be referred to using a prefix of the name used to
+start it, or using a substring that appears in its command line.
+For example,
+.B %ce
+refers to a stopped
+.B ce
+job.  If a prefix matches more than one job,
+.B bash
+reports an error.  Using
+.BR %?ce ,
+on the other hand, refers to any job containing the string
+.B ce
+in its command line.  If the substring matches more than one job,
+.B bash
+reports an error.  The symbols
+.B %%
+and
+.B %+
+refer to the shell's notion of the
+.IR "current job" ,
+which is the last job stopped while it was in
+the foreground or started in the background.
+The 
+.I "previous job"
+may be referenced using
+.BR %\- .
+In output pertaining to jobs (e.g., the output of the
+.B jobs
+command), the current job is always flagged with a
+.BR + ,
+and the previous job with a
+.BR \- .
+.PP
+Simply naming a job can be used to bring it into the
+foreground:
+.B %1
+is a synonym for
+\fB``fg %1''\fP,
+bringing job 1 from the background into the foreground.
+Similarly,
+.B ``%1 &''
+resumes job 1 in the background, equivalent to
+\fB``bg %1''\fP.
+.PP
+The shell learns immediately whenever a job changes state.
+Normally,
+.B bash
+waits until it is about to print a prompt before reporting
+changes in a job's status so as to not interrupt
+any other output.  If the 
+.B \-b
+option to the
+.B set
+builtin command
+is enabled,
+.B bash
+reports such changes immediately.
+Any trap on
+.SM
+.B SIGCHLD
+is executed for each child that exits.
+.PP
+If an attempt to exit
+.B bash
+is made while jobs are stopped, the shell prints a warning message.  The
+.B jobs
+command may then be used to inspect their status.
+If a second attempt to exit is made without an intervening command,
+the shell does not print another warning, and the stopped
+jobs are terminated.
+.SH PROMPTING
+When executing interactively, 
+.B bash
+displays the primary prompt
+.SM
+.B PS1
+when it is ready to read a command, and the secondary prompt
+.SM
+.B PS2
+when it needs more input to complete a command.
+.B Bash
+allows these prompt strings to be customized by inserting a number of
+backslash-escaped special characters that are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+an ASCII bell character (07)
+.TP
+.B \ed
+the date in "Weekday Month Date" format (e.g., "Tue May 26")
+.TP
+.B \eD{\fIformat\fP}
+the \fIformat\fP is passed to \fIstrftime\fP(3) and the result is inserted
+into the prompt string; an empty \fIformat\fP results in a locale-specific
+time representation.  The braces are required
+.TP
+.B \ee
+an ASCII escape character (033)
+.TP
+.B \eh
+the hostname up to the first `.'
+.TP
+.B \eH
+the hostname
+.TP
+.B \ej
+the number of jobs currently managed by the shell
+.TP
+.B \el
+the basename of the shell's terminal device name
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \es
+the name of the shell, the basename of
+.B $0
+(the portion following the final slash)
+.TP
+.B \et
+the current time in 24-hour HH:MM:SS format
+.TP
+.B \eT
+the current time in 12-hour HH:MM:SS format
+.TP
+.B \e@
+the current time in 12-hour am/pm format
+.TP
+.B \eA
+the current time in 24-hour HH:MM format
+.TP
+.B \eu
+the username of the current user
+.TP
+.B \ev
+the version of \fBbash\fP (e.g., 2.00)
+.TP
+.B \eV
+the release of \fBbash\fP, version + patchelvel (e.g., 2.00.0)
+.TP
+.B \ew
+the current working directory
+.TP
+.B \eW
+the basename of the current working directory
+.TP
+.B \e!
+the history number of this command
+.TP
+.B \e#
+the command number of this command
+.TP
+.B \e$
+if the effective UID is 0, a
+.BR # ,
+otherwise a
+.B $
+.TP
+.B \e\fInnn\fP
+the character corresponding to the octal number \fInnn\fP
+.TP
+.B \e\e
+a backslash
+.TP
+.B \e[
+begin a sequence of non-printing characters, which could be used to
+embed a terminal control sequence into the prompt
+.TP
+.B \e]
+end a sequence of non-printing characters
+.PD
+.RE
+.PP
+The command number and the history number are usually different:
+the history number of a command is its position in the history
+list, which may include commands restored from the history file
+(see
+.SM
+.B HISTORY
+below), while the command number is the position in the sequence
+of commands executed during the current shell session.
+After the string is decoded, it is expanded via
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal, subject to the value of the
+.B promptvars
+shell option (see the description of the
+.B shopt
+command under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+.SH READLINE
+This is the library that handles reading input when using an interactive
+shell, unless the
+.B \-\-noediting
+option is given at shell invocation.
+By default, the line editing commands are similar to those of emacs.
+A vi-style line editing interface is also available.
+To turn off line editing after the shell is running, use the
+.B +o emacs
+or
+.B +o vi
+options to the
+.B set
+builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Notation"
+.PP
+In this section, the emacs-style notation is used to denote
+keystrokes.  Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
+means Control\-N.  Similarly, 
+.I meta
+keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X.  (On keyboards
+without a 
+.I meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
+then the
+.I x
+key.  This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
+or press the Escape key
+then hold the Control key while pressing the
+.I x
+key.)
+.PP
+Readline commands may be given numeric
+.IR arguments ,
+which normally act as a repeat count.
+Sometimes, however, it is the sign of the argument that is significant.
+Passing a negative argument to a command that acts in the forward
+direction (e.g., \fBkill\-line\fP) causes that command to act in a
+backward direction. 
+Commands whose behavior with arguments deviates from this are noted
+below.
+.PP
+When a command is described as \fIkilling\fP text, the text
+deleted is saved for possible future retrieval
+(\fIyanking\fP).  The killed text is saved in a
+\fIkill ring\fP.  Consecutive kills cause the text to be
+accumulated into one unit, which can be yanked all at once. 
+Commands which do not kill text separate the chunks of text
+on the kill ring.
+.SS "Readline Initialization"
+.PP
+Readline is customized by putting commands in an initialization
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
+.SM
+.B INPUTRC
+variable.  If that variable is unset, the default is
+.IR ~/.inputrc .
+When a program which uses the readline library starts up, the
+initialization file is read, and the key bindings and variables
+are set.
+There are only a few basic constructs allowed in the
+readline initialization file.
+Blank lines are ignored.
+Lines beginning with a \fB#\fP are comments.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
+.PP
+The default key-bindings may be changed with an
+.I inputrc 
+file.
+Other programs that use this library may add their own commands
+and bindings.
+.PP
+For example, placing
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+or
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+into the 
+.I inputrc
+would make M\-C\-u execute the readline command
+.IR universal\-argument .
+.PP
+The following symbolic character names are recognized:
+.IR RUBOUT ,
+.IR DEL ,
+.IR ESC ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR SPC ,
+.IR SPACE ,
+and
+.IR TAB .
+.PP
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a \fImacro\fP).
+.SS "Readline Key Bindings"
+.PP
+The syntax for controlling key bindings in the
+.I inputrc
+file is simple.  All that is required is the name of the
+command or the text of a macro and a key sequence to which
+it should be bound. The name may be specified in one of two ways:
+as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
+prefixes, or as a key sequence.
+.PP
+When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.I keyname
+is the name of a key spelled out in English.  For example:
+.sp
+.RS
+Control-u: universal\-argument
+.br
+Meta-Rubout: backward-kill-word
+.br
+Control-o: "> output"
+.RE
+.LP
+In the above example,
+.I C\-u
+is bound to the function
+.BR universal\-argument ,
+.I M\-DEL
+is bound to the function
+.BR backward\-kill\-word ,
+and
+.I C\-o
+is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+.if t \f(CW> output\fP
+.if n ``> output''
+into the line).
+.PP
+In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.B keyseq
+differs from
+.B keyname
+above in that strings denoting
+an entire key sequence may be specified by placing the sequence
+within double quotes.  Some GNU Emacs style key escapes can be
+used, as in the following example, but the symbolic character names
+are not recognized.
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+In this example,
+.I C\-u
+is again bound to the function
+.BR universal\-argument .
+.I "C\-x C\-r"
+is bound to the function
+.BR re\-read\-init\-file ,
+and 
+.I "ESC [ 1 1 ~"
+is bound to insert the text
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+The full set of GNU Emacs style escape sequences is
+.RS
+.PD 0
+.TP
+.B \eC\-
+control prefix
+.TP
+.B \eM\-
+meta prefix
+.TP
+.B \ee
+an escape character
+.TP
+.B \e\e
+backslash
+.TP
+.B \e"
+literal "
+.TP
+.B \e'
+literal '
+.RE
+.PD
+.PP
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ed
+delete
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.RE
+.PD
+.PP
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including " and '.
+.PP
+.B Bash
+allows the current readline key bindings to be displayed or modified
+with the
+.B bind
+builtin command.  The editing mode may be switched during interactive
+use by using the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Variables"
+.PP
+Readline has variables that can be used to further customize its
+behavior.  A variable may be set in the
+.I inputrc
+file with a statement of the form
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+Except where noted, readline variables can take the values
+.B On
+or
+.BR Off .
+The variables and their default values are:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+Controls what happens when readline wants to ring the terminal bell.
+If set to \fBnone\fP, readline never rings the bell.  If set to
+\fBvisible\fP, readline uses a visible bell if one is available.
+If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+.TP
+.B comment\-begin (``#'')
+The string that is inserted when the readline
+.B insert\-comment
+command is executed.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
+.TP
+.B completion\-ignore\-case (Off)
+If set to \fBOn\fP, readline performs filename matching and completion
+in a case\-insensitive fashion.
+.TP
+.B completion\-query\-items (100)
+This determines when the user is queried about viewing
+the number of possible completions
+generated by the \fBpossible\-completions\fP command.
+It may be set to any integer value greater than or equal to
+zero.  If the number of possible completions is greater than
+or equal to the value of this variable, the user is asked whether
+or not he wishes to view them; otherwise they are simply listed
+on the terminal.
+.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prefixing an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion.  Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to \fIemacs\fP or \fIvi\fP.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called.  Some systems need this to enable the
+arrow keys.
+.TP
+.B expand\-tilde (Off)
+If set to \fBon\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B history-preserve-point
+If set to \fBon\fP, the history code attempts to place point at the
+same location on each history line retrived with \fBprevious-history\fP
+or \fBnext-history\fP.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+.TP
+.B input\-meta (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not strip the high bit from the characters it reads),
+regardless of what the terminal claims it can support.  The name
+.B meta\-flag
+is a synonym for this variable.
+.TP
+.B isearch\-terminators (``C\-[C\-J'')
+The string of characters that should terminate an incremental
+search without subsequently executing the character as a command.
+If this variable has not been given a value, the characters
+\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+.TP
+.B keymap (emacs)
+Set the current readline keymap.  The set of valid keymap names is
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.  The default value is
+.IR emacs ;
+the value of
+.B editing\-mode
+also affects the default keymap.
+.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B mark\-symlinked\-directories (Off)
+If set to \fBOn\fP, completed names which are symbolic links to directories
+have a slash appended (subject to the value of
+\fBmark\-directories\fP).
+.TP
+.B match\-hidden\-files (On)
+This variable, when set to \fBOn\fP, causes readline to match files whose
+names begin with a `.' (hidden files) when performing filename 
+completion, unless the leading `.' is
+supplied by the user in the filename to be completed.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+.TP
+.B page\-completions (On)
+If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+to display a screenful of possible completions at a time.
+.TP
+.B print\-completions\-horizontally (Off)
+If set to \fBOn\fP, readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+.TP
+.B show\-all\-if\-ambiguous (Off)
+This alters the default behavior of the completion functions.  If
+set to
+.BR on ,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+.TP
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fIstat\fP(2) is appended to the filename when listing possible
+completions.
+.PD
+.SS "Readline Conditional Constructs"
+.PP
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests.  There are four parser directives used.
+.IP \fB$if\fP
+The 
+.B $if
+construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+readline.  The text of the test extends to the end of the line;
+no characters are required to isolate it.
+.RS
+.IP \fBmode\fP
+The \fBmode=\fP form of the \fB$if\fP directive is used to test
+whether readline is in emacs or vi mode.
+This may be used in conjunction
+with the \fBset keymap\fP command, for instance, to set bindings in
+the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if
+readline is starting out in emacs mode.
+.IP \fBterm\fP
+The \fBterm=\fP form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys.  The word on the right side of the
+.B =
+is tested against the both full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP.  This allows
+.I sun
+to match both
+.I sun
+and
+.IR sun\-cmd ,
+for instance.
+.IP \fBapplication\fP
+The \fBapplication\fP construct is used to include
+application-specific settings.  Each program using the readline
+library sets the \fIapplication name\fP, and an initialization
+file can test for a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program.  For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC\-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.RE
+.IP \fB$endif\fP
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.IP \fB$else\fP
+Commands in this branch of the \fB$if\fP directive are executed if
+the test fails.
+.IP \fB$include\fP
+This directive takes a single filename as an argument and reads commands
+and bindings from that file.  For example, the following directive
+would read \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SS Searching
+.PP
+Readline provides commands for searching through the command history
+(see
+.SM
+.B HISTORY
+below) for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+The characters present in the value of the \fBisearch-terminators\fP
+variable are used to terminate an incremental search.
+If that variable has not been assigned a value the Escape and
+Control-J characters will terminate an incremental search.
+Control-G will abort an incremental search and restore the original
+line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+.PP
+To find other matching entries in the history list, type Control-S or
+Control-R as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a readline command will terminate
+the search and execute that command.
+For instance, a \fInewline\fP will terminate the search and accept
+the line, thereby executing the command from the history list.
+.PP
+Readline remembers the last incremental search string.  If two
+Control-Rs are typed without any intervening characters defining a
+new search string, any remembered search string is used.
+.PP
+Non-incremental searches read the entire search string before starting
+to search for matching history lines.  The search string may be
+typed by the user or be part of the contents of the current line.
+.SS "Readline Command Names"
+.PP
+The following is a list of the names of the commands and the default
+key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
+In the following descriptions, \fIpoint\fP refers to the current cursor
+position, and \fImark\fP refers to a cursor position saved by the
+\fBset\-mark\fP command.
+The text between the point and mark is referred to as the \fIregion\fP.
+.SS Commands for Moving
+.PP
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+Move to the start of the current line.
+.TP
+.B end\-of\-line (C\-e)
+Move to the end of the line.
+.TP
+.B forward\-char (C\-f)
+Move forward a character.
+.TP
+.B backward\-char (C\-b)
+Move back a character.
+.TP
+.B forward\-word (M\-f)
+Move forward to the end of the next word.  Words are composed of
+alphanumeric characters (letters and digits).
+.TP
+.B backward\-word (M\-b)
+Move back to the start of the current or previous word.  Words are
+composed of alphanumeric characters (letters and digits).
+.TP
+.B clear\-screen (C\-l)
+Clear the screen leaving the current line at the top of the screen.
+With an argument, refresh the current line without clearing the
+screen.
+.TP
+.B redraw\-current\-line
+Refresh the current line.
+.PD
+.SS Commands for Manipulating the History
+.PP
+.PD 0
+.TP
+.B accept\-line (Newline, Return)
+Accept the line regardless of where the cursor is.  If this line is
+non-empty, add it to the history list according to the state of the
+.SM
+.B HISTCONTROL
+variable.  If the line is a modified history
+line, then restore the history line to its original state.
+.TP
+.B previous\-history (C\-p)
+Fetch the previous command from the history list, moving back in
+the list.
+.TP
+.B next\-history (C\-n)
+Fetch the next command from the history list, moving forward in the
+list.
+.TP
+.B beginning\-of\-history (M\-<)
+Move to the first line in the history.
+.TP
+.B end\-of\-history (M\->)
+Move to the end of the input history, i.e., the line currently being
+entered.
+.TP
+.B reverse\-search\-history (C\-r)
+Search backward starting at the current line and moving `up' through
+the history as necessary.  This is an incremental search.
+.TP
+.B forward\-search\-history (C\-s)
+Search forward starting at the current line and moving `down' through
+the history as necessary.  This is an incremental search.
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+Search backward through the history starting at the current line
+using a non-incremental search for a string supplied by the user.
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+Search forward through the history using a non-incremental search for
+a string supplied by the user.
+.TP
+.B history\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B history\-search\-backward
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B yank\-nth\-arg (M\-C\-y)
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument
+.IR n ,
+insert the \fIn\fPth word from the previous command (the words
+in the previous command begin with word 0).  A negative argument
+inserts the \fIn\fPth word from the end of the previous command.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry).  With an argument,
+behave exactly like \fByank\-nth\-arg\fP.
+Successive calls to \fByank\-last\-arg\fP move back through the history
+list, inserting the last argument of each line in turn.
+.TP
+.B shell\-expand\-line (M\-C\-e)
+Expand the line as the shell does.  This
+performs alias and history expansion as well as all of the shell
+word expansions.  See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B history\-expand\-line (M\-^)
+Perform history expansion on the current line.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B magic\-space
+Perform history expansion on the current line and insert a space.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B alias\-expand\-line
+Perform alias expansion on the current line.
+See
+.SM
+.B ALIASES
+above for a description of alias expansion.
+.TP
+.B history\-and\-alias\-expand\-line
+Perform history and alias expansion on the current line.
+.TP
+.B insert\-last\-argument (M\-.\^, M\-_\^)
+A synonym for \fByank\-last\-arg\fP.
+.TP
+.B operate\-and\-get\-next (C\-o)
+Accept the current line for execution and fetch the next line
+relative to the current line from the history for editing.  Any
+argument is ignored.
+.TP
+.B edit\-and\-execute\-command (C\-xC\-e)
+Invoke an editor on the current command line, and execute the result as shell
+commands.
+\fBBash\fP attempts to invoke
+.SM
+.BR $FCEDIT ,
+.SM
+.BR $EDITOR ,
+and \fIemacs\fP as the editor, in that order.
+.PD
+.SS Commands for Changing Text
+.PP
+.PD 0
+.TP
+.B delete\-char (C\-d)
+Delete the character at point.  If point is at the
+beginning of the line, there are no characters in the line, and
+the last character typed was not bound to \fBdelete\-char\fP,
+then return
+.SM
+.BR EOF .
+.TP
+.B backward\-delete\-char (Rubout)
+Delete the character behind the cursor.  When given a numeric argument,
+save the deleted text on the kill ring.
+.TP
+.B forward\-backward\-delete\-char
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted.
+.TP
+.B quoted\-insert (C\-q, C\-v)
+Add the next character typed to the line verbatim.  This is
+how to insert characters like \fBC\-q\fP, for example.
+.TP
+.B tab\-insert (C\-v TAB)
+Insert a tab character.
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+Insert the character typed.
+.TP
+.B transpose\-chars (C\-t)
+Drag the character before point forward over the character at point,
+moving point forward as well.
+If point is at the end of the line, then this transposes
+the two characters before point.
+Negative arguments have no effect.
+.TP
+.B transpose\-words (M\-t)
+Drag the word before point past the word after point,
+moving point over that word as well.
+If point is at the end of the line, this transposes
+the last two words on the line.   
+.TP
+.B upcase\-word (M\-u)
+Uppercase the current (or following) word.  With a negative argument,
+uppercase the previous word, but do not move point.
+.TP
+.B downcase\-word (M\-l)
+Lowercase the current (or following) word.  With a negative argument,
+lowercase the previous word, but do not move point.
+.TP
+.B capitalize\-word (M\-c)
+Capitalize the current (or following) word.  With a negative argument,
+capitalize the previous word, but do not move point.
+.TP
+.B overwrite\-mode
+Toggle overwrite mode.  With an explicit positive numeric argument,
+switches to overwrite mode.  With an explicit non-positive numeric
+argument, switches to insert mode.  This command affects only
+\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Each call to \fIreadline()\fP starts in insert mode.
+In overwrite mode, characters bound to \fBself\-insert\fP replace   
+the text at point rather than pushing the text to the right.
+Characters bound to \fBbackward\-delete\-char\fP replace the character
+before point with a space.  By default, this command is unbound.
+.PD
+.SS Killing and Yanking
+.PP
+.PD 0
+.TP
+.B kill\-line (C\-k)
+Kill the text from point to the end of the line.
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+Kill backward to the beginning of the line.
+.TP
+.B unix\-line\-discard (C\-u)
+Kill backward from point to the beginning of the line.
+The killed text is saved on the kill-ring.
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+Kill all characters on the current line, no matter where point is.
+.TP
+.B kill\-word  (M\-d)
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as those used by \fBforward\-word\fP.
+.TP
+.B backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBbackward\-word\fP.
+.TP
+.B unix\-word\-rubout (C\-w)
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+.TP
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text in the current region.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+The word boundaries are the same as \fBbackward\-word\fP.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
+The word boundaries are the same as \fBforward\-word\fP.
+.TP
+.B yank (C\-y)
+Yank the top of the kill ring into the buffer at point.
+.TP
+.B yank\-pop (M\-y)
+Rotate the kill ring, and yank the new top.  Only works following
+.B yank
+or
+.BR yank\-pop .
+.PD
+.SS Numeric Arguments
+.PP
+.PD 0
+.TP
+.B digit\-argument (M\-0, M\-1, ..., M\-\-)
+Add this digit to the argument already accumulating, or start a new
+argument.  M\-\- starts a negative argument.
+.TP
+.B universal\-argument
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing
+.B universal\-argument
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+.PD
+.SS Completing
+.PP
+.PD 0
+.TP
+.B complete (TAB)
+Attempt to perform completion on the text before point.
+.B Bash
+attempts completion treating the text as a variable (if the
+text begins with \fB$\fP), username (if the text begins with
+\fB~\fP), hostname (if the text begins with \fB@\fP), or
+command (including aliases and functions) in turn.  If none
+of these produces a match, filename completion is attempted.
+.TP
+.B possible\-completions (M\-?)
+List the possible completions of the text before point.
+.TP
+.B insert\-completions (M\-*)
+Insert all completions of the text before point
+that would have been generated by
+\fBpossible\-completions\fP.
+.TP
+.B menu\-complete
+Similar to \fBcomplete\fP, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of \fBmenu\-complete\fP steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of \fBbell\-style\fP)
+and the original text is restored.
+An argument of \fIn\fP moves \fIn\fP positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to \fBTAB\fP, but is unbound
+by default.
+.TP
+.B delete\-char\-or\-list
+Deletes the character under the cursor if not at the beginning or
+end of the line (like \fBdelete\-char\fP).
+If at the end of the line, behaves identically to
+\fBpossible\-completions\fP.
+This command is unbound by default.
+.TP
+.B complete\-filename (M\-/)
+Attempt filename completion on the text before point.
+.TP
+.B possible\-filename\-completions (C\-x /)
+List the possible completions of the text before point,
+treating it as a filename.
+.TP
+.B complete\-username (M\-~)
+Attempt completion on the text before point, treating
+it as a username.
+.TP
+.B possible\-username\-completions (C\-x ~)
+List the possible completions of the text before point,
+treating it as a username.
+.TP
+.B complete\-variable (M\-$)
+Attempt completion on the text before point, treating
+it as a shell variable.
+.TP
+.B possible\-variable\-completions (C\-x $)
+List the possible completions of the text before point,
+treating it as a shell variable.
+.TP
+.B complete\-hostname (M\-@)
+Attempt completion on the text before point, treating
+it as a hostname.
+.TP
+.B possible\-hostname\-completions (C\-x @)
+List the possible completions of the text before point,
+treating it as a hostname.
+.TP
+.B complete\-command (M\-!)
+Attempt completion on the text before point, treating
+it as a command name.  Command completion attempts to
+match the text against aliases, reserved words, shell
+functions, shell builtins, and finally executable filenames,
+in that order.
+.TP
+.B possible\-command\-completions (C\-x !)
+List the possible completions of the text before point,
+treating it as a command name.
+.TP
+.B dynamic\-complete\-history (M\-TAB)
+Attempt completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+.TP
+.B complete\-into\-braces (M\-{)
+Perform filename completion and insert the list of possible completions
+enclosed within braces so the list is available to the shell (see
+.B Brace Expansion
+above).
+.PD
+.SS Keyboard Macros
+.PP
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+Begin saving the characters typed into the current keyboard macro.
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+Stop saving the characters typed into the current keyboard macro
+and store the definition.
+.TP
+.B call\-last\-kbd\-macro (C\-x e)
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+.PD
+.SS Miscellaneous
+.PP
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
+any bindings or variable assignments found there.
+.TP
+.B abort (C\-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+.BR bell\-style ).
+.TP
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is lowercase, run the command
+that is bound to the corresponding uppercase character.
+.TP
+.B prefix\-meta (ESC)
+Metafy the next character typed.
+.SM
+.B ESC
+.B f
+is equivalent to
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+Incremental undo, separately remembered for each line.
+.TP
+.B revert\-line (M\-r)
+Undo all changes made to this line.  This is like executing the
+.B undo
+command enough times to return the line to its initial state.
+.TP
+.B tilde\-expand (M\-&)
+Perform tilde expansion on the current word.
+.TP
+.B set\-mark (C\-@, M\-<space>)
+Set the mark to the point.  If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B exchange\-point\-and\-mark (C\-x C\-x)
+Swap the point with the mark.  The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+.TP
+.B character\-search (C\-])
+A character is read and point is moved to the next occurrence of that
+character.  A negative count searches for previous occurrences.
+.TP
+.B character\-search\-backward (M\-C\-])
+A character is read and point is moved to the previous occurrence of that
+character.  A negative count searches for subsequent occurrences.
+.TP
+.B insert\-comment (M\-#)
+Without a numeric argument, the value of the readline
+.B comment\-begin
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle:  if
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters in \fBcomment-begin\fP are deleted from the beginning of 
+the line.
+In either case, the line is accepted as if a newline had been typed.
+The default value of
+\fBcomment\-begin\fP causes this command to make the current line
+a shell comment.
+If a numeric argument causes the comment character to be removed, the line
+will be executed by the shell.
+.TP
+.B glob\-complete\-word (M\-g)
+The word before point is treated as a pattern for pathname expansion,
+with an asterisk implicitly appended.  This pattern is used to
+generate a list of matching file names for possible completions.
+.TP
+.B glob\-expand\-word (C\-x *)
+The word before point is treated as a pattern for pathname expansion,
+and the list of matching file names is inserted, replacing the word.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B glob\-list\-expansions (C\-x g)
+The list of expansions that would have been generated by
+.B glob\-expand\-word
+is displayed, and the line is redrawn.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B dump\-functions
+Print all of the functions and their key bindings to the
+readline output stream.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-variables
+Print all of the settable readline variables and their values to the
+readline output stream.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-macros
+Print all of the readline key sequences bound to macros and the
+strings they ouput.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B display\-shell\-version (C\-x C\-v)
+Display version information about the current instance of
+.BR bash .
+.PD
+.SS Programmable Completion
+.PP
+When word completion is attempted for an argument to a command for
+which a completion specification (a \fIcompspec\fP) has been defined
+using the \fBcomplete\fP builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the programmable completion facilities are invoked.
+.PP
+First, the command name is identified.
+If a compspec has been defined for that command, the
+compspec is used to generate the list of possible completions for the word.
+If the command word is a full pathname, a compspec for the full
+pathname is searched for first.
+If no compspec is found for the full pathname, an attempt is made to
+find a compspec for the portion following the final slash.
+.PP
+Once a compspec has been found, it is used to generate the list of
+matching words.
+If a compspec is not found, the default \fBbash\fP completion as
+described above under \fBCompleting\fP is performed.
+.PP
+First, the actions specified by the compspec are used.
+Only matches which are prefixed by the word being completed are
+returned.
+When the
+.B \-f
+or
+.B \-d
+option is used for filename or directory name completion, the shell
+variable
+.SM
+.B FIGNORE
+is used to filter the matches.
+.PP
+Any completions specified by a filename expansion pattern to the
+\fB\-G\fP option are generated next.
+The words generated by the pattern need not match the word
+being completed.
+The
+.SM
+.B GLOBIGNORE
+shell variable is not used to filter the matches, but the
+.SM
+.B FIGNORE
+variable is used.
+.PP
+Next, the string specified as the argument to the \fB\-W\fP option
+is considered.
+The string is first split using the characters in the
+.SM
+.B IFS
+special variable as delimiters.
+Shell quoting is honored.
+Each word is then expanded using
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and pathname expansion,
+as described above under 
+.SM
+.BR EXPANSION .
+The results are split using the rules described above under
+\fBWord Splitting\fP.
+The results of the expansion are prefix-matched against the word being
+completed, and the matching words become the possible completions.
+.PP
+After these matches have been generated, any shell function or command
+specified with the \fB\-F\fP and \fB\-C\fP options is invoked.
+When the command or function is invoked, the
+.SM
+.B COMP_LINE
+and
+.SM
+.B COMP_POINT
+variables are assigned values as described above under
+\fBShell Variables\fP.
+If a shell function is being invoked, the 
+.SM
+.B COMP_WORDS
+and
+.SM
+.B COMP_CWORD
+variables are also set.
+When the function or command is invoked, the first argument is the
+name of the command whose arguments are being completed, the
+second argument is the word being completed, and the third argument
+is the word preceding the word being completed on the current command line.
+No filtering of the generated completions against the word being completed
+is performed; the function or command has complete freedom in generating
+the matches.
+.PP
+Any function specified with \fB\-F\fP is invoked first.
+The function may use any of the shell facilities, including the
+\fBcompgen\fP builtin described below, to generate the matches.
+It must put the possible completions in the
+.SM
+.B COMPREPLY
+array variable.
+.PP
+Next, any command specified with the \fB\-C\fP option is invoked
+in an environment equivalent to command substitution.
+It should print a list of completions, one per line, to the
+standard output.
+Backslash may be used to escape a newline, if necessary.
+.PP
+After all of the possible completions are generated, any filter
+specified with the \fB\-X\fP option is applied to the list.
+The filter is a pattern as used for pathname expansion; a \fB&\fP
+in the pattern is replaced with the text of the word being completed.
+A literal \fB&\fP may be escaped with a backslash; the backslash
+is removed before attempting a match.
+Any completion that matches the pattern will be removed from the list.
+A leading \fB!\fP negates the pattern; in this case any completion
+not matching the pattern will be removed.
+.PP
+Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP
+options are added to each member of the completion list, and the result is
+returned to the readline completion code as the list of possible
+completions.
+.PP
+If the previously-applied actions do not generate any matches, and the
+\fB\-o dirnames\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, directory name completion is attempted.
+.PP
+By default, if a compspec is found, whatever it generates is returned
+to the completion code as the full set of possible completions.
+The default \fBbash\fP completions are not attempted, and the readline
+default of filename completion is disabled.
+If the \fB-o default\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, readline's default completion will be performed
+if the compspec generates no matches.
+.PP
+When a compspec indicates that directory name completion is desired,
+the programmable completion functions force readline to append a slash
+to completed names which are symbolic links to directories, subject to  
+the value of the \fBmark\-directories\fP readline variable, regardless
+of the setting of the \fBmark-symlinked\-directories\fP readline variable.
+.SH HISTORY
+When the
+.B \-o history
+option to the
+.B set
+builtin is enabled, the shell provides access to the
+\fIcommand history\fP,
+the list of commands previously typed.
+The value of the \fBHISTSIZE\fP variable is used as the
+number of commands to save in a history list.
+The text of the last
+.SM
+.B HISTSIZE
+commands (default 500) is saved.  The shell
+stores each command in the history list prior to parameter and
+variable expansion (see
+.SM
+.B EXPANSION
+above) but after history expansion is performed, subject to the
+values of the shell variables
+.SM
+.B HISTIGNORE
+and
+.SM
+.BR HISTCONTROL .
+.PP
+On startup, the history is initialized from the file named by
+the variable
+.SM
+.B HISTFILE
+(default \fI~/.bash_history\fP).
+The file named by the value of
+.SM
+.B HISTFILE
+is truncated, if necessary, to contain no more than
+the number of lines specified by the value of
+.SM
+.BR HISTFILESIZE .
+When an interactive shell exits, the last
+.SM
+.B $HISTSIZE
+lines are copied from the history list to
+.SM
+.BR $HISTFILE .
+If the
+.B histappend
+shell option is enabled
+(see the description of
+.B shopt
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the lines are appended to the history file,
+otherwise the history file is overwritten.
+If
+.SM
+.B HISTFILE
+is unset, or if the history file is unwritable, the history is
+not saved.  After saving the history, the history file is truncated
+to contain no more than
+.SM
+.B HISTFILESIZE
+lines.  If
+.SM
+.B HISTFILESIZE
+is not set, no truncation is performed.
+.PP
+The builtin command
+.B fc
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below) may be used to list or edit and re-execute a portion of
+the history list.
+The
+.B history
+builtin may be used to display or modify the history list and
+manipulate the history file.
+When using command-line editing, search commands
+are available in each editing mode that provide access to the
+history list.
+.PP
+The shell allows control over which commands are saved on the history
+list.  The
+.SM
+.B HISTCONTROL
+and
+.SM
+.B HISTIGNORE
+variables may be set to cause the shell to save only a subset of the
+commands entered.
+The
+.B cmdhist
+shell option, if enabled, causes the shell to attempt to save each
+line of a multi-line command in the same history entry, adding
+semicolons where necessary to preserve syntactic correctness.
+The
+.B lithist
+shell option causes the shell to save the command with embedded newlines
+instead of semicolons.  See the description of the
+.B shopt
+builtin below under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+for information on setting and unsetting shell options.
+.SH "HISTORY EXPANSION"
+.PP
+The shell supports a history expansion feature that
+is similar to the history expansion in
+.BR csh.
+This section describes what syntax features are available.  This
+feature is enabled by default for interactive shells, and can be
+disabled using the
+.B \+H
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).  Non-interactive shells do not perform history expansion
+by default.
+.PP
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+.PP
+History expansion is performed immediately after a complete line
+is read, before the shell breaks it into words.
+It takes place in two parts.
+The first is to determine which line from the history list
+to use during substitution.
+The second is to select portions of that line for inclusion into
+the current one.
+The line selected from the history is the \fIevent\fP,
+and the portions of that line that are acted upon are \fIwords\fP.
+Various \fImodifiers\fP are available to manipulate the selected words.
+The line is broken into words in the same fashion as when reading input,
+so that several \fImetacharacter\fP-separated words surrounded by
+quotes are considered one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is \^\fB!\fP\^ by default.
+Only backslash (\^\fB\e\fP\^) and single quotes can quote
+the history expansion character.
+.PP
+Several shell options settable with the
+.B shopt
+builtin may be used to tailor the behavior of history expansion.
+If the
+.B histverify
+shell option is enabled (see the description of the
+.B shopt
+builtin), and
+.B readline
+is being used, history substitutions are not immediately passed to
+the shell parser.
+Instead, the expanded line is reloaded into the
+.B readline
+editing buffer for further modification.
+If
+.B readline
+is being used, and the
+.B histreedit
+shell option is enabled, a failed history substitution will be reloaded
+into the
+.B readline
+editing buffer for correction.
+The
+.B \-p
+option to the
+.B history
+builtin command may be used to see what a history expansion will
+do before using it.
+The
+.B \-s
+option to the
+.B history
+builtin may be used to add commands to the end of the history list
+without actually executing them, so that they are available for
+subsequent recall.
+.PP
+The shell allows control of the various characters used by the
+history expansion mechanism (see the description of
+.B histchars
+above under
+.BR "Shell Variables" ).
+.SS Event Designators
+.PP
+An event designator is a reference to a command line entry in the
+history list.
+.PP
+.PD 0
+.TP
+.B !
+Start a history substitution, except when followed by a
+.BR blank ,
+newline, = or (.
+.TP
+.B !\fIn\fR
+Refer to command line
+.IR n .
+.TP
+.B !\-\fIn\fR
+Refer to the current command line minus
+.IR n .
+.TP
+.B !!
+Refer to the previous command.  This is a synonym for `!\-1'.
+.TP
+.B !\fIstring\fR
+Refer to the most recent command starting with 
+.IR string .
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+Refer to the most recent command containing
+.IR string .
+The trailing \fB?\fP may be omitted if
+.I string
+is followed immediately by a newline.
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+Quick substitution.  Repeat the last command, replacing
+.I string1
+with
+.IR string2 .
+Equivalent to
+``!!:s/\fIstring1\fP/\fIstring2\fP/''
+(see \fBModifiers\fP below).
+.TP
+.B !#
+The entire command line typed so far.
+.PD
+.SS Word Designators
+.PP
+Word designators are used to select desired words from the event.
+A 
+.B :
+separates the event specification from the word designator.
+It may be omitted if the word designator begins with a
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+or
+.BR % .
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+Words are inserted into the current line separated by single spaces.
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+The zeroth word.  For the shell, this is the command
+word.
+.TP
+.I n
+The \fIn\fRth word.
+.TP
+.B ^
+The first argument.  That is, word 1.
+.TP
+.B $
+The last argument.
+.TP
+.B %
+The word matched by the most recent `?\fIstring\fR?' search.
+.TP
+.I x\fB\-\fPy
+A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+.TP
+.B *
+All of the words but the zeroth.  This is a synonym
+for `\fI1\-$\fP'.  It is not an error to use
+.B *
+if there is just one
+word in the event; the empty string is returned in that case.
+.TP
+.B x*
+Abbreviates \fIx\-$\fP.
+.TP
+.B x\-
+Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+.PD
+.PP
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+.SS Modifiers
+.PP
+After the optional word designator, there may appear a sequence of
+one or more of the following modifiers, each preceded by a `:'.
+.PP
+.PD 0
+.PP
+.TP
+.B h
+Remove a trailing file name component, leaving only the head.
+.TP
+.B t
+Remove all leading file name components, leaving the tail.
+.TP
+.B r
+Remove a trailing suffix of the form \fI.xxx\fP, leaving the
+basename.
+.TP
+.B e
+Remove all but the trailing suffix.
+.TP
+.B p
+Print the new command but do not execute it.
+.TP
+.B q
+Quote the substituted words, escaping further substitutions.
+.TP
+.B x
+Quote the substituted words as with
+.BR q ,
+but break into words at
+.B blanks
+and newlines.
+.TP
+.B s/\fIold\fP/\fInew\fP/
+Substitute
+.I new
+for the first occurrence of
+.I old
+in the event line.  Any delimiter can be used in place of /.  The
+final delimiter is optional if it is the last character of the
+event line.  The delimiter may be quoted in
+.I old
+and
+.I new
+with a single backslash.  If & appears in
+.IR new ,
+it is replaced by
+.IR old .
+A single backslash will quote the &.  If
+.I old
+is null, it is set to the last
+.I old
+substituted, or, if no previous history substitutions took place,
+the last
+.I string
+in a
+.B !?\fIstring\fR\fB[?]\fR
+search.
+.TP
+.B &
+Repeat the previous substitution.
+.TP
+.B g
+Cause changes to be applied over the entire event line.  This is
+used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
+or `\fB:&\fP'.  If used with
+`\fB:s\fP', any delimiter can be used
+in place of /, and the final delimiter is optional
+if it is the last character of the event line.
+.PD
+.SH "SHELL BUILTIN COMMANDS"
+.\" start of bash_builtins
+.zZ
+.PP
+Unless otherwise noted, each builtin command documented in this
+section as accepting options preceded by
+.B \-
+accepts
+.B \-\-
+to signify the end of the options.
+.sp .5
+.PD 0
+.TP
+\fB:\fP [\fIarguments\fP]
+.PD
+No effect; the command does nothing beyond expanding
+.I arguments
+and performing any specified
+redirections.  A zero exit code is returned.
+.TP
+\fB .\| \fP \fIfilename\fP [\fIarguments\fP]
+.PD 0
+.TP
+\fBsource\fP \fIfilename\fP [\fIarguments\fP]
+.PD
+Read and execute commands from
+.I filename
+in the current
+shell environment and return the exit status of the last command
+executed from
+.IR filename .
+If
+.I filename
+does not contain a slash, file names in
+.SM
+.B PATH
+are used to find the directory containing
+.IR filename .
+The file searched for in
+.SM
+.B PATH
+need not be executable.
+When \fBbash\fP is not in \fIposix mode\fP, the current directory is
+searched if no file is found in
+.SM
+.BR PATH .
+If the
+.B sourcepath
+option to the
+.B shopt
+builtin command is turned off, the
+.SM
+.B PATH
+is not searched.
+If any \fIarguments\fP are supplied, they become the positional
+parameters when \fIfilename\fP is executed.  Otherwise the positional
+parameters are unchanged.
+The return status is the status of the last command exited within
+the script (0 if no commands are executed), and false if
+.I filename
+is not found or cannot be read.
+.TP
+\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBAlias\fP with no arguments or with the
+.B \-p
+option prints the list of aliases in the form
+\fBalias\fP \fIname\fP=\fIvalue\fP on standard output.
+When arguments are supplied, an alias is defined for
+each \fIname\fP whose \fIvalue\fP is given.
+A trailing space in  \fIvalue\fP causes the next word to be
+checked for alias substitution when the alias is expanded.
+For each \fIname\fP in the argument list for which no \fIvalue\fP
+is supplied, the name and value of the alias is printed.
+\fBAlias\fP returns true unless a \fIname\fP is given for which
+no alias has been defined.
+.TP
+\fBbg\fP [\fIjobspec\fP]
+Resume the suspended job \fIjobspec\fP in the background, as if it
+had been started with
+.BR & .
+If \fIjobspec\fP is not present, the shell's notion of the
+\fIcurrent job\fP is used.
+.B bg
+.I jobspec
+returns 0 unless run when job control is disabled or, when run with
+job control enabled, if \fIjobspec\fP was not found or started without
+job control.
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\fP]
+.PD 0
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP]
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
+.TP
+\fBbind\fP \fIreadline\-command\fP
+.PD
+Display current
+.B readline
+key and function bindings, bind a key sequence to a
+.B readline
+function or macro, or set a
+.B readline
+variable.
+Each non-option argument is a command as it would appear in
+.IR .inputrc ,
+but each binding or command must be passed as a separate argument;
+e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-m \fIkeymap\fP
+Use
+.I keymap
+as the keymap to be affected by the subsequent bindings.
+Acceptable
+.I keymap
+names are
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-move, vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.
+.TP
+.B \-l
+List the names of all \fBreadline\fP functions.
+.TP
+.B \-p
+Display \fBreadline\fP function names and bindings in such a way
+that they can be re-read.
+.TP
+.B \-P
+List current \fBreadline\fP function names and bindings.
+.TP
+.B \-v
+Display \fBreadline\fP variable names and values in such a way that they
+can be re-read.
+.TP
+.B \-V
+List current \fBreadline\fP variable names and values.
+.TP
+.B \-s
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output in such a way that they can be re-read.
+.TP
+.B \-S
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output.
+.TP
+.B \-f \fIfilename\fP
+Read key bindings from \fIfilename\fP.
+.TP
+.B \-q \fIfunction\fP
+Query about which keys invoke the named \fIfunction\fP.
+.TP
+.B \-u \fIfunction\fP
+Unbind all keys bound to the named \fIfunction\fP.
+.TP
+.B \-r \fIkeyseq\fP
+Remove any current binding for \fIkeyseq\fP.
+.TP
+.B \-x \fIkeyseq\fP:\fIshell\-command\fP
+Cause \fIshell\-command\fP to be executed whenever \fIkeyseq\fP is
+entered.
+.PD
+.PP
+The return value is 0 unless an unrecognized option is given or an
+error occurred.
+.RE
+.TP
+\fBbreak\fP [\fIn\fP]
+Exit from within a
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.  If \fIn\fP is specified, break \fIn\fP levels.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, all enclosing loops
+are exited.  The return value is 0 unless the shell is not executing
+a loop when
+.B break
+is executed.
+.TP
+\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
+Execute the specified shell builtin, passing it
+.IR arguments ,
+and return its exit status.
+This is useful when defining a
+function whose name is the same as a shell builtin,
+retaining the functionality of the builtin within the function.
+The \fBcd\fP builtin is commonly redefined this way.
+The return status is false if
+.I shell\-builtin
+is not a shell builtin command.
+.TP
+\fBcd\fP [\fB\-L|-P\fP] [\fIdir\fP]
+Change the current directory to \fIdir\fP.  The variable
+.SM
+.B HOME
+is the
+default
+.IR dir .
+The variable
+.SM
+.B CDPATH
+defines the search path for the directory containing
+.IR dir .
+Alternative directory names in
+.SM
+.B CDPATH
+are separated by a colon (:).  A null directory name in
+.SM
+.B CDPATH
+is the same as the current directory, i.e., ``\fB.\fP''.  If
+.I dir
+begins with a slash (/),
+then
+.SM
+.B CDPATH
+is not used. The
+.B \-P
+option says to use the physical directory structure instead of
+following symbolic links (see also the
+.B \-P
+option to the
+.B set
+builtin command); the
+.B \-L
+option forces symbolic links to be followed.  An argument of
+.B \-
+is equivalent to
+.SM
+.BR $OLDPWD .
+The return value is true if the directory was successfully changed;
+false otherwise.
+.TP
+\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...]
+Run
+.I command
+with
+.I args
+suppressing the normal shell function lookup. Only builtin
+commands or commands found in the
+.SM
+.B PATH
+are executed.  If the
+.B \-p
+option is given, the search for
+.I command
+is performed using a default value for
+.B PATH
+that is guaranteed to find all of the standard utilities.
+If either the
+.B \-V
+or
+.B \-v
+option is supplied, a description of
+.I command
+is printed.  The
+.B \-v
+option causes a single word indicating the command or file name
+used to invoke
+.I command
+to be displayed; the
+.B \-V
+option produces a more verbose description.
+If the
+.B \-V
+or
+.B \-v
+option is supplied, the exit status is 0 if
+.I command
+was found, and 1 if not.  If neither option is supplied and
+an error occurred or
+.I command
+cannot be found, the exit status is 127.  Otherwise, the exit status of the
+.B command
+builtin is the exit status of
+.IR command .
+.TP
+\fBcompgen\fP [\fIoption\fP] [\fIword\fP]
+Generate possible completion matches for \fIword\fP according to
+the \fIoption\fPs, which may be any option accepted by the
+.B complete
+builtin with the exception of \fB\-p\fP and \fB\-r\fP, and write
+the matches to the standard output.
+When using the \fB\-F\fP or \fB\-C\fP options, the various shell variables
+set by the programmable completion facilities, while available, will not
+have useful values.
+.sp 1
+The matches will be generated in the same way as if the programmable
+completion code had generated them directly from a completion specification
+with the same flags.
+If \fIword\fP is specified, only those completions matching \fIword\fP
+will be displayed.
+.sp 1
+The return value is true unless an invalid option is supplied, or no
+matches were generated.
+.TP
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP]
+.br
+[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP]
+.PD 0
+.TP
+\fBcomplete\fP \fB\-pr\fP [\fIname\fP ...]
+.PD
+Specify how arguments to each \fIname\fP should be completed.
+If the \fB\-p\fP option is supplied, or if no options are supplied,
+existing completion specifications are printed in a way that allows
+them to be reused as input.
+The \fB\-r\fP option removes a completion specification for
+each \fIname\fP, or, if no \fIname\fPs are supplied, all
+completion specifications.
+.sp 1
+The process of applying these completion specifications when word completion
+is attempted is described above under \fBProgrammable Completion\fP.
+.sp 1
+Other options, if specified, have the following meanings.
+The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options
+(and, if necessary, the \fB\-P\fP and \fB\-S\fP options)
+should be quoted to protect them from expansion before the
+.B complete
+builtin is invoked.
+.RS
+.PD 0
+.TP 8
+\fB\-o\fP \fIcomp-option\fP
+The \fIcomp-option\fP controls several aspects of the compspec's behavior
+beyond the simple generation of completions.
+\fIcomp-option\fP may be one of:
+.RS
+.TP 8
+.B default
+Use readline's default filename completion if the compspec generates
+no matches.
+.TP 8
+.B dirnames
+Perform directory name completion if the compspec generates no matches.
+.TP 8
+.B filenames
+Tell readline that the compspec generates filenames, so it can perform any
+filename\-specific processing (like adding a slash to directory names or
+suppressing trailing spaces).  Intended to be used with shell functions.
+.TP 8
+.B nospace
+Tell readline not to append a space (the default) to words completed at
+the end of the line.
+.RE
+.TP 8
+\fB\-A\fP \fIaction\fP
+The \fIaction\fP may be one of the following to generate a list of possible
+completions:
+.RS
+.TP 8
+.B alias
+Alias names.  May also be specified as \fB\-a\fP.
+.TP 8
+.B arrayvar
+Array variable names.
+.TP 8
+.B binding
+\fBReadline\fP key binding names.
+.TP 8
+.B builtin
+Names of shell builtin commands.  May also be specified as \fB\-b\fP.
+.TP 8
+.B command
+Command names.  May also be specified as \fB\-c\fP.
+.TP 8
+.B directory
+Directory names.  May also be specified as \fB\-d\fP.
+.TP 8
+.B disabled
+Names of disabled shell builtins.
+.TP 8
+.B enabled
+Names of enabled shell builtins.
+.TP 8
+.B export
+Names of exported shell variables.  May also be specified as \fB\-e\fP.
+.TP 8
+.B file
+File names.  May also be specified as \fB\-f\fP.
+.TP 8
+.B function
+Names of shell functions.
+.TP 8
+.B group
+Group names.  May also be specified as \fB\-g\fP.
+.TP 8
+.B helptopic
+Help topics as accepted by the \fBhelp\fP builtin.
+.TP 8
+.B hostname
+Hostnames, as taken from the file specified by the
+.SM
+.B HOSTFILE
+shell variable.
+.TP 8
+.B job
+Job names, if job control is active.  May also be specified as \fB\-j\fP.
+.TP 8
+.B keyword
+Shell reserved words.  May also be specified as \fB\-k\fP.
+.TP 8
+.B running
+Names of running jobs, if job control is active.
+.TP 8
+.B service
+Service names.  May also be specified as \fB\-s\fP.
+.TP 8
+.B setopt
+Valid arguments for the \fB\-o\fP option to the \fBset\fP builtin.
+.TP 8
+.B shopt
+Shell option names as accepted by the \fBshopt\fP builtin.
+.TP 8
+.B signal
+Signal names.
+.TP 8
+.B stopped
+Names of stopped jobs, if job control is active.
+.TP 8
+.B user
+User names.  May also be specified as \fB\-u\fP.
+.TP 8
+.B variable
+Names of all shell variables.  May also be specified as \fB\-v\fP.
+.RE
+.TP 8
+\fB\-G\fP \fIglobpat\fP
+The filename expansion pattern \fIglobpat\fP is expanded to generate
+the possible completions.
+.TP 8
+\fB\-W\fP \fIwordlist\fP
+The \fIwordlist\fP is split using the characters in the
+.SM
+.B IFS
+special variable as delimiters, and each resultant word is expanded.
+The possible completions are the members of the resultant list which
+match the word being completed.
+.TP 8
+\fB\-C\fP \fIcommand\fP
+\fIcommand\fP is executed in a subshell environment, and its output is
+used as the possible completions.
+.TP 8
+\fB\-F\fP \fIfunction\fP
+The shell function \fIfunction\fP is executed in the current shell
+environment.
+When it finishes, the possible completions are retrieved from the value
+of the
+.SM
+.B COMPREPLY
+array variable.
+.TP 8
+\fB\-X\fP \fIfilterpat\fP
+\fIfilterpat\fP is a pattern as used for filename expansion.
+It is applied to the list of possible completions generated by the
+preceding options and arguments, and each completion matching
+\fIfilterpat\fP is removed from the list.
+A leading \fB!\fP in \fIfilterpat\fP negates the pattern; in this
+case, any completion not matching \fIfilterpat\fP is removed.
+.TP 8
+\fB\-P\fP \fIprefix\fP
+\fIprefix\fP is added at the beginning of each possible completion
+after all other options have been applied.
+.TP 8
+\fB\-S\fP \fIsuffix\fP
+\fIsuffix\fP is appended to each possible completion
+after all other options have been applied.
+.PD
+.PP
+The return value is true unless an invalid option is supplied, an option
+other than \fB\-p\fP or \fB\-r\fP is supplied without a \fIname\fP
+argument, an attempt is made to remove a completion specification for
+a \fIname\fP for which no specification exists, or
+an error occurs adding a completion specification.
+.RE
+.TP
+\fBcontinue\fP [\fIn\fP]
+Resume the next iteration of the enclosing
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.
+If
+.I n
+is specified, resume at the \fIn\fPth enclosing loop.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, the last enclosing loop
+(the ``top-level'' loop) is resumed.  The return value is 0 unless the
+shell is not executing a loop when
+.B continue
+is executed.
+.TP
+\fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP]]
+.PD 0
+.TP
+\fBtypeset\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP]]
+.PD
+Declare variables and/or give them attributes.
+If no \fIname\fPs are given then display the values of variables.
+The
+.B \-p
+option will display the attributes and values of each
+.IR name .
+When
+.B \-p
+is used, additional options are ignored.
+The
+.B \-F
+option inhibits the display of function definitions; only the
+function name and attributes are printed.
+The
+.B \-F
+option implies
+.BR \-f .
+The following options can
+be used to restrict output to variables with the specified attribute or
+to give variables attributes:
+.RS
+.PD 0
+.TP
+.B \-a
+Each \fIname\fP is an array variable (see
+.B Arrays
+above).
+.TP
+.B \-f
+Use function names only.
+.TP
+.B \-i
+The variable is treated as an integer; arithmetic evaluation (see
+.SM
+.B "ARITHMETIC EVALUATION" ") "
+is performed when the variable is assigned a value.
+.TP
+.B \-r
+Make \fIname\fPs readonly.  These names cannot then be assigned values
+by subsequent assignment statements or unset.
+.TP
+.B \-t
+Give each \fIname\fP the \fItrace\fP attribute.
+Traced functions inherit the \fBDEBUG\fP trap from the calling shell.
+The trace attribute has no special meaning for variables.
+.TP
+.B \-x
+Mark \fIname\fPs for export to subsequent commands via the environment.
+.PD
+.PP
+Using `+' instead of `\-'
+turns off the attribute instead, with the exception that \fB+a\fP
+may not be used to destroy an array variable.  When used in a function,
+makes each
+\fIname\fP local, as with the 
+.B local
+command.  The return value is 0 unless an invalid option is encountered,
+an attempt is made to define a function using
+.if n ``\-f foo=bar'',
+.if t \f(CW\-f foo=bar\fP,
+an attempt is made to assign a value to a readonly variable,
+an attempt is made to assign a value to an array variable without
+using the compound assignment syntax (see
+.B Arrays
+above), one of the \fInames\fP is not a valid shell variable name,
+an attempt is made to turn off readonly status for a readonly variable,
+an attempt is made to turn off array status for an array variable,
+or an attempt is made to display a non-existent function with \fB\-f\fP.
+.RE
+.TP
+.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP]
+Without options, displays the list of currently remembered directories.
+The default display is on a single line with directory names separated
+by spaces.
+Directories are added to the list with the 
+.B pushd
+command; the
+.B popd
+command removes entries from the list.
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the left of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+\fB\-\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the right of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+.B \-c
+Clears the directory stack by deleting all of the entries.
+.TP
+.B \-l
+Produces a longer listing; the default listing format uses a 
+tilde to denote the home directory.
+.TP
+.B \-p
+Print the directory stack with one entry per line.
+.TP
+.B \-v
+Print the directory stack with one entry per line,
+prefixing each entry with its index in the stack.
+.PD
+.PP
+The return value is 0 unless an
+invalid option is supplied or \fIn\fP indexes beyond the end
+of the directory stack.
+.RE
+.TP
+\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...]
+Without options, each
+.I jobspec
+is removed from the table of active jobs.
+If the \fB\-h\fP option is given, each
+.I jobspec
+is not removed from the table, but is marked so that
+.SM
+.B SIGHUP
+is not sent to the job if the shell receives a
+.SM
+.BR SIGHUP .
+If no
+.I jobspec
+is present, and neither the
+.B \-a
+nor the
+.B \-r
+option is supplied, the \fIcurrent job\fP is used.
+If no
+.I jobspec
+is supplied, the
+.B \-a
+option means to remove or mark all jobs; the
+.B \-r
+option without a
+.I jobspec
+argument restricts operation to running jobs.
+The return value is 0 unless a
+.I jobspec
+does not specify a valid job.
+.TP
+\fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
+Output the \fIarg\fPs, separated by spaces, followed by a newline.
+The return status is always 0.
+If \fB\-n\fP is specified, the trailing newline is
+suppressed.  If the \fB\-e\fP option is given, interpretation of
+the following backslash-escaped characters is enabled.  The
+.B \-E
+option disables the interpretation of these escape characters,
+even on systems where they are interpreted by default.
+The \fBxpg_echo\fP shell option may be used to
+dynamically determine whether or not \fBecho\fP expands these
+escape characters by default.
+.B echo
+does not interpret
+.B \-\-
+to mean the end of options.
+.B echo
+interprets the following escape sequences:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ec
+suppress trailing newline
+.TP
+.B \ee
+an escape character
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+new line
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e0\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(zero to three octal digits)
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three octal digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.PD
+.RE
+.TP
+\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...]
+Enable and disable builtin shell commands.
+Disabling a builtin allows a disk command which has the same name
+as a shell builtin to be executed without specifying a full pathname,
+even though the shell normally searches for builtins before disk commands.
+If \fB\-n\fP is used, each \fIname\fP
+is disabled; otherwise,
+\fInames\fP are enabled.  For example, to use the
+.B test
+binary found via the
+.SM
+.B PATH
+instead of the shell builtin version, run
+.if t \f(CWenable -n test\fP.
+.if n ``enable -n test''.
+The
+.B \-f
+option means to load the new builtin command
+.I name
+from shared object
+.IR filename ,
+on systems that support dynamic loading.  The
+.B \-d
+option will delete a builtin previously loaded with
+.BR \-f .
+If no \fIname\fP arguments are given, or if the
+.B \-p
+option is supplied, a list of shell builtins is printed.
+With no other option arguments, the list consists of all enabled
+shell builtins.
+If \fB\-n\fP is supplied, only disabled builtins are printed.
+If \fB\-a\fP is supplied, the list printed includes all builtins, with an
+indication of whether or not each is enabled.
+If \fB\-s\fP is supplied, the output is restricted to the POSIX
+\fIspecial\fP builtins.
+The return value is 0 unless a
+.I name
+is not a shell builtin or there is an error loading a new builtin
+from a shared object.
+.TP
+\fBeval\fP [\fIarg\fP ...]
+The \fIarg\fPs are read and concatenated together into a single
+command.  This command is then read and executed by the shell, and
+its exit status is returned as the value of
+.BR eval .
+If there are no
+.IR args ,
+or only null arguments,
+.B eval
+returns 0.
+.TP
+\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]]
+If
+.I command
+is specified, it replaces the shell.
+No new process is created.  The
+.I arguments
+become the arguments to \fIcommand\fP.
+If the
+.B \-l
+option is supplied,
+the shell places a dash at the beginning of the zeroth arg passed to 
+.IR command .
+This is what
+.IR login (1)
+does.  The
+.B \-c
+option causes
+.I command
+to be executed with an empty environment.  If
+.B \-a
+is supplied, the shell passes
+.I name
+as the zeroth argument to the executed command.  If
+.I command
+cannot be executed for some reason, a non-interactive shell exits,
+unless the shell option
+.B execfail
+is enabled, in which case it returns failure.
+An interactive shell returns failure if the file cannot be executed.
+If
+.I command
+is not specified, any redirections take effect in the current shell,
+and the return status is 0.  If there is a redirection error, the
+return status is 1.
+.TP
+\fBexit\fP [\fIn\fP]
+Cause the shell to exit
+with a status of \fIn\fP.  If
+.I n
+is omitted, the exit status
+is that of the last command executed.
+A trap on
+.SM
+.B EXIT
+is executed before the shell terminates.
+.TP
+\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ...
+.PD 0
+.TP
+.B export \-p
+.PD
+The supplied
+.I names
+are marked for automatic export to the environment of
+subsequently executed commands.  If the 
+.B \-f
+option is given,
+the 
+.I names
+refer to functions.
+If no
+.I names
+are given, or if the
+.B \-p
+option is supplied, a list
+of all names that are exported in this shell is printed.
+The
+.B \-n
+option causes the export property to be removed from the
+named variables.
+.B export
+returns an exit status of 0 unless an invalid option is
+encountered,
+one of the \fInames\fP is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP]
+.PD 0
+.TP
+\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP]
+.PD
+Fix Command.  In the first form, a range of commands from
+.I first
+to
+.I last
+is selected from the history list.
+.I First
+and
+.I last
+may be specified as a string (to locate the last command beginning
+with that string) or as a number (an index into the history list,
+where a negative number is used as an offset from the current
+command number).  If 
+.I last
+is not specified it is set to
+the current command for listing (so that
+.if n ``fc \-l \-10''
+.if t \f(CWfc \-l \-10\fP
+prints the last 10 commands) and to
+.I first
+otherwise.
+If
+.I first
+is not specified it is set to the previous
+command for editing and \-16 for listing.
+.sp 1
+The
+.B \-n
+option suppresses
+the command numbers when listing.  The
+.B \-r
+option reverses the order of
+the commands.  If the
+.B \-l
+option is given,
+the commands are listed on
+standard output.  Otherwise, the editor given by
+.I ename
+is invoked
+on a file containing those commands.  If
+.I ename
+is not given, the
+value of the
+.SM
+.B FCEDIT
+variable is used, and
+the value of
+.SM
+.B EDITOR
+if
+.SM
+.B FCEDIT
+is not set.  If neither variable is set,
+.FN vi
+is used.  When editing is complete, the edited commands are
+echoed and executed.
+.sp 1
+In the second form, \fIcommand\fP is re-executed after each instance
+of \fIpat\fP is replaced by \fIrep\fP.
+A useful alias to use with this is
+.if n ``r=fc -s'',
+.if t \f(CWr='fc \-s'\fP,
+so that typing
+.if n ``r cc''
+.if t \f(CWr cc\fP
+runs the last command beginning with
+.if n ``cc''
+.if t \f(CWcc\fP
+and typing
+.if n ``r''
+.if t \f(CWr\fP
+re-executes the last command.
+.sp 1
+If the first form is used, the return value is 0 unless an invalid
+option is encountered or
+.I first
+or
+.I last
+specify history lines out of range.
+If the
+.B \-e
+option is supplied, the return value is the value of the last
+command executed or failure if an error occurs with the temporary
+file of commands.  If the second form is used, the return status
+is that of the command re-executed, unless
+.I cmd
+does not specify a valid history line, in which case
+.B fc
+returns failure.
+.TP
+\fBfg\fP [\fIjobspec\fP]
+Resume
+.I jobspec
+in the foreground, and make it the current job.
+If
+.I jobspec
+is not present, the shell's notion of the \fIcurrent job\fP is used.
+The return value is that of the command placed into the foreground,
+or failure if run when job control is disabled or, when run with
+job control enabled, if
+.I jobspec
+does not specify a valid job or
+.I jobspec
+specifies a job that was started without job control.
+.TP
+\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
+.B getopts
+is used by shell procedures to parse positional parameters.
+.I optstring
+contains the option characters to be recognized; if a character
+is followed by a colon, the option is expected to have an
+argument, which should be separated from it by white space.
+The colon and question mark characters may not be used as
+option characters.
+Each time it is invoked,
+.B getopts
+places the next option in the shell variable
+.IR name ,
+initializing
+.I name
+if it does not exist,
+and the index of the next argument to be processed into the
+variable
+.SM
+.BR OPTIND .
+.SM
+.B OPTIND
+is initialized to 1 each time the shell or a shell script
+is invoked.  When an option requires an argument,
+.B getopts
+places that argument into the variable
+.SM
+.BR OPTARG .
+The shell does not reset
+.SM
+.B OPTIND
+automatically; it must be manually reset between multiple
+calls to
+.B getopts
+within the same shell invocation if a new set of parameters
+is to be used.
+.sp 1
+When the end of options is encountered, \fBgetopts\fP exits with a
+return value greater than zero.
+\fBOPTIND\fP is set to the index of the first non-option argument,
+and \fBname\fP is set to ?.
+.sp 1
+.B getopts
+normally parses the positional parameters, but if more arguments are
+given in
+.IR args ,
+.B getopts
+parses those instead.
+.sp 1
+.B getopts
+can report errors in two ways.  If the first character of
+.I optstring
+is a colon,
+.I silent
+error reporting is used.  In normal operation diagnostic messages
+are printed when invalid options or missing option arguments are
+encountered.
+If the variable
+.SM
+.B OPTERR
+is set to 0, no error messages will be displayed, even if the first
+character of 
+.I optstring
+is not a colon.
+.sp 1
+If an invalid option is seen,
+.B getopts
+places ? into
+.I name
+and, if not silent,
+prints an error message and unsets
+.SM
+.BR OPTARG .
+If
+.B getopts
+is silent,
+the option character found is placed in
+.SM
+.B OPTARG
+and no diagnostic message is printed.
+.sp 1
+If a required argument is not found, and
+.B getopts
+is not silent,
+a question mark (\^\fB?\fP\^) is placed in
+.IR name ,
+.SM
+.B OPTARG
+is unset, and a diagnostic message is printed.
+If
+.B getopts
+is silent, then a colon (\^\fB:\fP\^) is placed in
+.I name
+and
+.SM
+.B OPTARG
+is set to the option character found.
+.sp 1
+.B getopts
+returns true if an option, specified or unspecified, is found.
+It returns false if the end of options is encountered or an
+error occurs.
+.TP
+\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP]
+For each
+.IR name ,
+the full file name of the command is determined by searching
+the directories in
+.B $PATH
+and remembered.
+If the
+.B \-p
+option is supplied, no path search is performed, and
+.I filename
+is used as the full file name of the command.
+The
+.B \-r
+option causes the shell to forget all
+remembered locations.
+The
+.B \-d
+option causes the shell to forget the remembered location of each \fIname\fP.
+If the
+.B \-t
+option is supplied, the full pathname to which each \fIname\fP corresponds
+is printed.  If multiple \fIname\fP arguments are supplied with \fB\-t\fP,
+the \fIname\fP is printed before the hashed full pathname.
+The
+.B \-l
+option causes output to be displayed in a format that may be reused as input.
+If no arguments are given, or if only \fB\-l\fP is supplied,
+information about remembered commands is printed.
+The return status is true unless a
+.I name
+is not found or an invalid option is supplied.
+.TP
+\fBhelp\fP [\fB\-s\fP] [\fIpattern\fP]
+Display helpful information about builtin commands.  If
+.I pattern
+is specified,
+.B help
+gives detailed help on all commands matching
+.IR pattern ;
+otherwise help for all the builtins and shell control structures
+is printed.
+The \fB\-s\fP option restricts the information displayed to a short
+usage synopsis.
+The return status is 0 unless no command matches
+.IR pattern .
+.TP
+\fBhistory [\fIn\fP]
+.PD 0
+.TP
+\fBhistory\fP \fB\-c\fP
+.TP
+\fBhistory \-d\fP \fIoffset\fP
+.TP
+\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
+.TP
+\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
+.TP
+\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
+.PD
+With no options, display the command
+history list with line numbers.  Lines listed
+with a 
+.B *
+have been modified.  An argument of
+.I n
+lists only the last
+.I n
+lines.  If \fIfilename\fP is supplied, it is used as the
+name of the history file; if not, the value of
+.SM
+.B HISTFILE
+is used.  Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-c
+Clear the history list by deleting all the entries.
+.TP
+\fB\-d\fP \fIoffset\fP
+Delete the history entry at position \fIoffset\fP.
+.TP
+.B \-a
+Append the ``new'' history lines (history lines entered since the
+beginning of the current \fBbash\fP session) to the history file.
+.TP
+.B \-n
+Read the history lines not already read from the history
+file into the current history list.  These are lines
+appended to the history file since the beginning of the
+current \fBbash\fP session.
+.TP
+.B \-r
+Read the contents of the history file
+and use them as the current history.
+.TP
+.B \-w
+Write the current history to the history file, overwriting the
+history file's contents.
+.TP
+.B \-p
+Perform history substitution on the following \fIargs\fP and display
+the result on the standard output.
+Does not store the results in the history list.
+Each \fIarg\fP must be quoted to disable normal history expansion.
+.TP
+.B \-s
+Store the
+.I args
+in the history list as a single entry.  The last command in the
+history list is removed before the
+.I args
+are added.
+.PD
+.PP
+The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the
+history expansion supplied as an argument to \fB\-p\fP fails.
+.RE
+.TP
+\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ]
+.PD 0
+.TP
+\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ]
+.PD
+The first form lists the active jobs.  The options have the following
+meanings:
+.RS
+.PD 0
+.TP
+.B \-l
+List process IDs
+in addition to the normal information.
+.TP
+.B \-p
+List only the process ID of the job's process group
+leader.
+.TP
+.B \-n
+Display information only about jobs that have changed status since
+the user was last notified of their status.
+.TP
+.B \-r
+Restrict output to running jobs.
+.TP
+.B \-s
+Restrict output to stopped jobs.
+.PD
+.PP
+If
+.I jobspec
+is given, output is restricted to information about that job.
+The return status is 0 unless an invalid option is encountered
+or an invalid
+.I jobspec
+is supplied.
+.PP
+If the
+.B \-x
+option is supplied,
+.B jobs
+replaces any
+.I jobspec
+found in
+.I command
+or
+.I args
+with the corresponding process group ID, and executes
+.I command
+passing it
+.IR args ,
+returning its exit status.
+.RE
+.TP
+\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ...
+.PD 0
+.TP
+\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP]
+.PD
+Send the signal named by
+.I sigspec
+or
+.I signum
+to the processes named by
+.I pid
+or
+.IR jobspec .
+.I sigspec
+is either a signal name such as
+.SM
+.B SIGKILL
+or a signal number;
+.I signum
+is a signal number.  If
+.I sigspec
+is a signal name, the name may be
+given with or without the
+.SM
+.B SIG
+prefix.
+If
+.I sigspec
+is not present, then
+.SM
+.B SIGTERM
+is assumed.
+An argument of
+.B \-l
+lists the signal names.
+If any arguments are supplied when
+.B \-l
+is given, the names of the signals corresponding to the arguments are
+listed, and the return status is 0.
+The \fIexit_status\fP argument to
+.B \-l
+is a number specifying either a signal number or the exit status of
+a process terminated by a signal.
+.B kill
+returns true if at least one signal was successfully sent, or false
+if an error occurs or an invalid option is encountered.
+.TP
+\fBlet\fP \fIarg\fP [\fIarg\fP ...]
+Each
+.I arg
+is an arithmetic expression to be evaluated (see
+.SM
+.BR "ARITHMETIC EVALUATION" ).
+If the last
+.I arg
+evaluates to 0,
+.B let
+returns 1; 0 is returned otherwise.
+.TP
+\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...]
+For each argument, a local variable named
+.I name 
+is created, and assigned
+.IR value .
+The \fIoption\fP can be any of the options accepted by \fBdeclare\fP.
+When
+.B local
+is used within a function, it causes the variable
+.I name
+to have a visible scope restricted to that function and its children.
+With no operands,
+.B local
+writes a list of local variables to the standard output.  It is
+an error to use
+.B local
+when not within a function.  The return status is 0 unless
+.B local
+is used outside a function, an invalid
+.I name
+is supplied, or
+\fIname\fP is a readonly variable.
+.TP
+.B logout
+Exit a login shell.
+.TP
+\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
+Removes entries from the directory stack.  With no arguments,
+removes the top directory from the stack, and performs a
+.B cd
+to the new top directory.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the left of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd +0''
+.if t \f(CWpopd +0\fP
+removes the first directory,
+.if n ``popd +1''
+.if t \f(CWpopd +1\fP
+the second.
+.TP
+\fB\-\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the right of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd -0''
+.if t \f(CWpopd -0\fP
+removes the last directory,
+.if n ``popd -1''
+.if t \f(CWpopd -1\fP
+the next to last.
+.TP
+.B \-n
+Suppresses the normal change of directory when removing directories
+from the stack, so that only the stack is manipulated.
+.PD
+.PP
+If the
+.B popd
+command is successful, a 
+.B dirs
+is performed as well, and the return status is 0.
+.B popd
+returns false if an invalid option is encountered, the directory stack
+is empty, a non-existent directory stack entry is specified, or the
+directory change fails.
+.RE
+.TP
+\fBprintf\fP \fIformat\fP [\fIarguments\fP]
+Write the formatted \fIarguments\fP to the standard output under the
+control of the \fIformat\fP.
+The \fIformat\fP is a character string which contains three types of objects:
+plain characters, which are simply copied to standard output, character
+escape sequences, which are converted and copied to the standard output, and
+format specifications, each of which causes printing of the next successive
+\fIargument\fP.
+In addition to the standard \fIprintf\fP(1) formats, \fB%b\fP causes
+\fBprintf\fP to expand backslash escape sequences in the corresponding
+\fIargument\fP, and \fB%q\fP causes \fBprintf\fP to output the corresponding
+\fIargument\fP in a format that can be reused as shell input.
+.sp 1
+The \fIformat\fP is reused as necessary to consume all of the \fIarguments\fP.
+If the \fIformat\fP requires more \fIarguments\fP than are supplied, the
+extra format specifications behave as if a zero value or null string, as
+appropriate, had been supplied.  The return value is zero on success,
+non-zero on failure.
+.TP
+\fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
+.PD 0
+.TP
+\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
+.PD
+Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.  With no arguments, exchanges the top two directories
+and returns 0, unless the directory stack is empty.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the left of the list shown by
+.BR dirs ,
+starting with zero)
+is at the top.
+.TP
+\fB\-\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the right of the list shown by
+.BR dirs ,
+starting with zero) is at the top.
+.TP
+.B \-n
+Suppresses the normal change of directory when adding directories
+to the stack, so that only the stack is manipulated.
+.TP
+.I dir
+Adds
+.I dir
+to the directory stack at the top, making it the
+new current working directory.
+.PD
+.PP
+If the
+.B pushd
+command is successful, a 
+.B dirs
+is performed as well.
+If the first form is used,
+.B pushd
+returns 0 unless the cd to
+.I dir
+fails.  With the second form,
+.B pushd
+returns 0 unless the directory stack is empty,
+a non-existent directory stack element is specified,
+or the directory change to the specified new current directory
+fails.
+.RE
+.TP
+\fBpwd\fP [\fB\-LP\fP]
+Print the absolute pathname of the current working directory.
+The pathname printed contains no symbolic links if the
+.B \-P
+option is supplied or the 
+.B \-o physical
+option to the
+.B set
+builtin command is enabled.
+If the
+.B \-L
+option is used, the pathname printed may contain symbolic links.
+The return status is 0 unless an error occurs while
+reading the name of the current directory or an
+invalid option is supplied.
+.TP
+\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...]
+One line is read from the standard input, or from the file descriptor
+\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word
+is assigned to the first
+.IR name ,
+the second word to the second
+.IR name ,
+and so on, with leftover words and their intervening separators assigned
+to the last
+.IR name .
+If there are fewer words read from the input stream than names,
+the remaining names are assigned empty values.
+The characters in 
+.SM
+.B IFS
+are used to split the line into words.
+The backslash character (\fB\e\fP) may be used to remove any special
+meaning for the next character read and for line continuation.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-a \fIaname\fP
+The words are assigned to sequential indices
+of the array variable
+.IR aname ,
+starting at 0.
+.I aname
+is unset before any new values are assigned.
+Other \fIname\fP arguments are ignored.
+.TP
+.B \-d \fIdelim\fP
+The first character of \fIdelim\fP is used to terminate the input line,
+rather than newline.
+.TP
+.B \-e
+If the standard input
+is coming from a terminal,
+.B readline
+(see
+.SM
+.B READLINE
+above) is used to obtain the line.
+.TP
+.B \-n \fInchars\fP
+\fBread\fP returns after reading \fInchars\fP characters rather than
+waiting for a complete line of input.
+.TP
+.B \-p \fIprompt\fP
+Display \fIprompt\fP on standard error, without a
+trailing newline, before attempting to read any input.  The prompt
+is displayed only if input is coming from a terminal.
+.TP
+.B \-r
+Backslash does not act as an escape character.
+The backslash is considered to be part of the line.
+In particular, a backslash-newline pair may not be used as a line
+continuation.
+.TP
+.B \-s
+Silent mode.  If input is coming from a terminal, characters are
+not echoed.
+.TP
+.B \-t \fItimeout\fP
+Cause \fBread\fP to time out and return failure if a complete line of
+input is not read within \fItimeout\fP seconds.
+This option has no effect if \fBread\fP is not reading input from the
+terminal or a pipe.
+.TP
+.B \-u \fIfd\FP
+Read input from file descriptor \fIfd\fP.
+.PD
+.PP
+If no
+.I names
+are supplied, the line read is assigned to the variable
+.SM
+.BR REPLY .
+The return code is zero, unless end-of-file is encountered, \fBread\fP
+times out, or an invalid file descriptor is supplied as the argument to
+\fB\-u\fP.
+.RE
+.TP
+\fBreadonly\fP [\fB\-apf\fP] [\fIname\fP ...]
+.PD
+The given
+\fInames\fP are marked readonly; the values of these
+.I names
+may not be changed by subsequent assignment.
+If the
+.B \-f
+option is supplied, the functions corresponding to the
+\fInames\fP are so
+marked.
+The
+.B \-a
+option restricts the variables to arrays.
+If no
+.I name
+arguments are given, or if the
+.B \-p
+option is supplied, a list of all readonly names is printed.
+The
+.B \-p
+option causes output to be displayed in a format that
+may be reused as input.
+The return status is 0 unless an invalid option is encountered,
+one of the
+.I names
+is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBreturn\fP [\fIn\fP]
+Causes a function to exit with the return value specified by
+.IR n .
+If 
+.I n
+is omitted, the return status is that of the last command
+executed in the function body.  If used outside a function,
+but during execution of a script by the 
+.B .
+(\fBsource\fP) command, it causes the shell to stop executing
+that script and return either
+.I n
+or the exit status of the last command executed within the
+script as the exit status of the script.  If used outside a
+function and not during execution of a script by \fB.\fP\^,
+the return status is false.
+.TP
+\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...]
+Without options, the name and value of each shell variable are displayed
+in a format that can be reused as input.
+The output is sorted according to the current locale.
+When options are specified, they set or unset shell attributes.
+Any arguments remaining after the options are processed are treated
+as values for the positional parameters and are assigned, in order, to 
+.BR $1 ,
+.BR $2 ,
+.B ...
+.BR $\fIn\fP .
+Options, if specified, have the following meanings:
+.RS
+.PD 0
+.TP 8
+.B \-a
+Automatically mark variables and functions which are modified or created
+for export to the environment of subsequent commands.
+.TP 8
+.B \-b
+Report the status of terminated background jobs
+immediately, rather than before the next primary prompt.  This is
+effective only when job control is enabled.
+.TP 8
+.B \-e
+Exit immediately if a \fIsimple command\fP (see
+.SM
+.B SHELL GRAMMAR
+above) exits with a non-zero status.  The shell does not exit if the
+command that fails is part of an
+.I until
+or
+.I while
+loop,
+part of an
+.I if
+statement, part of a
+.B &&
+or
+.B \(bv\(bv
+list, or if the command's return value is
+being inverted via
+.BR ! .
+A trap on \fBERR\fP, if set, is executed before the shell exits.
+.TP 8
+.B \-f
+Disable pathname expansion.
+.TP 8 
+.B \-h
+Remember the location of commands as they are looked up for execution.
+This is enabled by default.
+.TP 8
+.B \-k
+All arguments in the form of assignment statements
+are placed in the environment for a command, not just
+those that precede the command name.
+.TP 8
+.B \-m
+Monitor mode.  Job control is enabled.  This option is on
+by default for interactive shells on systems that support
+it (see
+.SM
+.B JOB CONTROL
+above).  Background processes run in a separate process
+group and a line containing their exit status is printed
+upon their completion.
+.TP 8
+.B \-n
+Read commands but do not execute them.  This may be used to 
+check a shell script for syntax errors.  This is ignored by
+interactive shells.
+.TP 8
+.B \-o \fIoption\-name\fP
+The \fIoption\-name\fP can be one of the following:
+.RS
+.TP 8
+.B allexport
+Same as
+.BR \-a .
+.TP 8
+.B braceexpand
+Same as
+.BR \-B .
+.TP 8
+.B emacs
+Use an emacs-style command line editing interface.  This is enabled
+by default when the shell is interactive, unless the shell is started
+with the
+.B \-\-noediting
+option.
+.TP 8
+.B errexit
+Same as
+.BR \-e .
+.TP 8
+.B hashall
+Same as
+.BR \-h .
+.TP 8
+.B histexpand
+Same as
+.BR \-H .
+.TP 8
+.B history
+Enable command history, as described above under
+.SM
+.BR HISTORY .
+This option is on by default in interactive shells.
+.TP 8
+.B ignoreeof
+The effect is as if the shell command
+.if t \f(CWIGNOREEOF=10\fP
+.if n ``IGNOREEOF=10''
+had been executed
+(see
+.B Shell Variables
+above).
+.TP 8
+.B keyword
+Same as
+.BR \-k .
+.TP 8
+.B monitor
+Same as
+.BR \-m .
+.TP 8
+.B noclobber
+Same as
+.BR \-C .
+.TP 8
+.B noexec
+Same as
+.BR \-n .
+.TP 8
+.B noglob
+Same as
+.BR \-f .
+.B nolog
+Currently ignored.
+.TP 8
+.B notify
+Same as
+.BR \-b .
+.TP 8
+.B nounset
+Same as
+.BR \-u .
+.TP 8
+.B onecmd
+Same as
+.BR \-t .
+.TP 8
+.B physical
+Same as
+.BR \-P .
+.TP 8
+.B posix
+Change the behavior of
+.B bash
+where the default operation differs
+from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP).
+.TP 8
+.B privileged
+Same as
+.BR \-p .
+.TP 8
+.B verbose
+Same as
+.BR \-v .
+.TP 8
+.B vi
+Use a vi-style command line editing interface.
+.TP 8
+.B xtrace
+Same as
+.BR \-x .
+.sp .5
+.PP
+If
+.B \-o
+is supplied with no \fIoption\-name\fP, the values of the current options are
+printed.
+If
+.B +o
+is supplied with no \fIoption\-name\fP, a series of
+.B set
+commands to recreate the current option settings is displayed on
+the standard output.
+.RE
+.TP 8
+.B \-p
+Turn on
+.I privileged
+mode.  In this mode, the
+.SM
+.B $ENV
+and
+.SM
+.B $BASH_ENV
+files are not processed, shell functions are not inherited from the
+environment, and the
+.SM
+.B SHELLOPTS
+variable, if it appears in the environment, is ignored.
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, these actions
+are taken and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at startup, the effective user id is
+not reset.
+Turning this option off causes the effective user
+and group ids to be set to the real user and group ids.
+.TP 8
+.B \-t
+Exit after reading and executing one command.
+.TP 8
+.B \-u
+Treat unset variables as an error when performing
+parameter expansion.  If expansion is attempted on an
+unset variable, the shell prints an error message, and,
+if not interactive, exits with a non-zero status.
+.TP 8
+.B \-v
+Print shell input lines as they are read.
+.TP 8
+.B \-x
+After expanding each \fIsimple command\fP,
+display the expanded value of
+.SM
+.BR PS4 ,
+followed by the command and its expanded arguments.
+.TP 8
+.B \-B
+The shell performs brace expansion (see
+.B Brace Expansion
+above).  This is on by default.
+.TP 8
+.B \-C
+If set,
+.B bash
+does not overwrite an existing file with the
+.BR > ,
+.BR >& ,
+and
+.B <>
+redirection operators.  This may be overridden when 
+creating output files by using the redirection operator
+.B >|
+instead of
+.BR > .
+.TP 8
+.B \-H
+Enable
+.B !
+style history substitution.  This option is on by
+default when the shell is interactive.
+.TP 8
+.B \-P
+If set, the shell does not follow symbolic links when executing
+commands such as
+.B cd
+that change the current working directory.  It uses the
+physical directory structure instead.  By default,
+.B bash
+follows the logical chain of directories when performing commands
+which change the current directory.
+.TP 8
+.B \-\-
+If no arguments follow this option, then the positional parameters are
+unset.  Otherwise, the positional parameters are set to the
+\fIarg\fPs, even if some of them begin with a
+.BR \- .
+.TP 8
+.B \-
+Signal the end of options, cause all remaining \fIarg\fPs to be
+assigned to the positional parameters.  The
+.B \-x
+and
+.B \-v
+options are turned off.
+If there are no \fIarg\fPs,
+the positional parameters remain unchanged.
+.PD
+.PP
+The options are off by default unless otherwise noted.
+Using + rather than \- causes these options to be turned off.
+The options can also be specified as arguments to an invocation of
+the shell.
+The current set of options may be found in
+.BR $\- .
+The return status is always true unless an invalid option is encountered.
+.RE
+.TP
+\fBshift\fP [\fIn\fP]
+The positional parameters from \fIn\fP+1 ... are renamed to
+.B $1
+.B ....
+Parameters represented by the numbers \fB$#\fP
+down to \fB$#\fP\-\fIn\fP+1 are unset.
+.I n
+must be a non-negative number less than or equal to \fB$#\fP.
+If
+.I n
+is 0, no parameters are changed.
+If
+.I n 
+is not given, it is assumed to be 1.
+If
+.I n
+is greater than \fB$#\fP, the positional parameters are not changed.
+The return status is greater than zero if
+.I n
+is greater than
+.B $#
+or less than zero; otherwise 0.
+.TP
+\fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...]
+Toggle the values of variables controlling optional shell behavior.
+With no options, or with the
+.B \-p
+option, a list of all settable options is displayed, with
+an indication of whether or not each is set.
+The \fB\-p\fP option causes output to be displayed in a form that
+may be reused as input.
+Other options have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-s
+Enable (set) each \fIoptname\fP.
+.TP
+.B \-u
+Disable (unset) each \fIoptname\fP.
+.TP
+.B \-q
+Suppresses normal output (quiet mode); the return status indicates
+whether the \fIoptname\fP is set or unset.
+If multiple \fIoptname\fP arguments are given with
+.BR \-q ,
+the return status is zero if all \fIoptnames\fP are enabled; non-zero
+otherwise.
+.TP
+.B \-o
+Restricts the values of \fIoptname\fP to be those defined for the
+.B \-o
+option to the
+.B set
+builtin.
+.PD
+.PP
+If either
+.B \-s
+or
+.B \-u
+is used with no \fIoptname\fP arguments, the display is limited to
+those options which are set or unset, respectively.
+Unless otherwise noted, the \fBshopt\fP options are disabled (unset)
+by default.
+.PP
+The return status when listing options is zero if all \fIoptnames\fP
+are enabled, non-zero otherwise.  When setting or unsetting options,
+the return status is zero unless an \fIoptname\fP is not a valid shell
+option.
+.PP
+The list of \fBshopt\fP options is:
+.if t .sp .5v
+.if n .sp 1v
+.PD 0
+.TP 8
+.B cdable_vars
+If set, an argument to the
+.B cd
+builtin command that
+is not a directory is assumed to be the name of a variable whose
+value is the directory to change to.
+.TP 8
+.B cdspell
+If set, minor errors in the spelling of a directory component in a
+.B cd
+command will be corrected.
+The errors checked for are transposed characters,
+a missing character, and one character too many.
+If a correction is found, the corrected file name is printed,
+and the command proceeds.
+This option is only used by interactive shells.
+.TP 8
+.B checkhash
+If set, \fBbash\fP checks that a command found in the hash
+table exists before trying to execute it.  If a hashed command no
+longer exists, a normal path search is performed.
+.TP 8
+.B checkwinsize
+If set, \fBbash\fP checks the window size after each command
+and, if necessary, updates the values of
+.SM
+.B LINES
+and
+.SM
+.BR COLUMNS .
+.TP 8
+.B cmdhist
+If set,
+.B bash
+attempts to save all lines of a multiple-line
+command in the same history entry.  This allows
+easy re-editing of multi-line commands.
+.TP 8
+.B dotglob
+If set, 
+.B bash
+includes filenames beginning with a `.' in the results of pathname
+expansion.
+.TP 8
+.B execfail
+If set, a non-interactive shell will not exit if
+it cannot execute the file specified as an argument to the
+.B exec
+builtin command.  An interactive shell does not exit if
+.B exec
+fails.
+.TP 8
+.B expand_aliases
+If set, aliases are expanded as described above under
+.SM
+.BR ALIASES .
+This option is enabled by default for interactive shells.
+.TP 8
+.B extglob
+If set, the extended pattern matching features described above under
+\fBPathname Expansion\fP are enabled.
+.TP 8
+.B histappend
+If set, the history list is appended to the file named by the value
+of the
+.B HISTFILE
+variable when the shell exits, rather than overwriting the file.
+.TP 8
+.B histreedit
+If set, and
+.B readline
+is being used, a user is given the opportunity to re-edit a
+failed history substitution.
+.TP 8
+.B histverify
+If set, and 
+.B readline
+is being used, the results of history substitution are not immediately
+passed to the shell parser.  Instead, the resulting line is loaded into
+the \fBreadline\fP editing buffer, allowing further modification.
+.TP 8
+.B hostcomplete
+If set, and
+.B readline
+is being used, \fBbash\fP will attempt to perform hostname completion when a
+word containing a \fB@\fP is being completed (see
+.B Completing
+under
+.SM
+.B READLINE
+above).
+This is enabled by default.
+.TP 8
+.B huponexit
+If set, \fBbash\fP will send
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.TP 8
+.B interactive_comments
+If set, allow a word beginning with
+.B #
+to cause that word and all remaining characters on that
+line to be ignored in an interactive shell (see
+.SM
+.B COMMENTS
+above).  This option is enabled by default.
+.TP 8
+.B lithist
+If set, and the
+.B cmdhist
+option is enabled, multi-line commands are saved to the history with
+embedded newlines rather than using semicolon separators where possible.
+.TP 8
+.B login_shell
+The shell sets this option if it is started as a login shell (see
+.SM
+.B "INVOCATION"
+above).
+The value may not be changed.
+.TP 8
+.B mailwarn
+If set, and a file that \fBbash\fP is checking for mail has been  
+accessed since the last time it was checked, the message ``The mail in
+\fImailfile\fP has been read'' is displayed.
+.TP 8
+.B no_empty_cmd_completion
+If set, and
+.B readline
+is being used,
+.B bash
+will not attempt to search the \fBPATH\fP for possible completions when
+completion is attempted on an empty line.
+.TP 8
+.B nocaseglob
+If set,
+.B bash
+matches filenames in a case\-insensitive fashion when performing pathname
+expansion (see
+.B Pathname Expansion
+above).
+.TP 8
+.B nullglob
+If set,
+.B bash
+allows patterns which match no
+files (see
+.B Pathname Expansion
+above)
+to expand to a null string, rather than themselves.
+.TP 8
+.B progcomp
+If set, the programmable completion facilities (see
+\fBProgrammable Completion\fP above) are enabled.
+This option is enabled by default.
+.TP 8
+.B promptvars
+If set, prompt strings undergo variable and parameter expansion after
+being expanded as described in
+.SM
+.B PROMPTING
+above.  This option is enabled by default.
+.TP 8
+.B restricted_shell
+The shell sets this option if it is started in restricted mode (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+The value may not be changed.
+This is not reset when the startup files are executed, allowing
+the startup files to discover whether or not a shell is restricted.
+.TP 8
+.B shift_verbose
+If set, the
+.B shift
+builtin prints an error message when the shift count exceeds the
+number of positional parameters.
+.TP 8
+.B sourcepath
+If set, the
+\fBsource\fP (\fB.\fP) builtin uses the value of
+.SM
+.B PATH
+to find the directory containing the file supplied as an argument.
+This option is enabled by default.
+.TP 8
+.B xpg_echo
+If set, the \fBecho\fP builtin expands backslash-escape sequences
+by default.
+.RE
+.TP
+\fBsuspend\fP [\fB\-f\fP]
+Suspend the execution of this shell until it receives a
+.SM
+.B SIGCONT
+signal.  The
+.B \-f
+option says not to complain if this is 
+a login shell; just suspend anyway.  The return status is 0 unless
+the shell is a login shell and
+.B \-f
+is not supplied, or if job control is not enabled.
+.TP
+\fBtest\fP \fIexpr\fP
+.PD 0
+.TP
+\fB[\fP \fIexpr\fP \fB]\fP
+Return a status of 0 or 1 depending on
+the evaluation of the conditional expression
+.IR expr .
+Each operator and operand must be a separate argument.
+Expressions are composed of the primaries described above under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence.
+.RS
+.PD 0
+.TP
+.B ! \fIexpr\fP
+True if
+.I expr
+is false.
+.TP
+.B ( \fIexpr\fP )
+Returns the value of \fIexpr\fP.
+This may be used to override the normal precedence of operators.
+.TP
+\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
+True if both
+.I expr1
+and
+.I expr2
+are true.
+.TP
+\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
+True if either
+.I expr1
+or
+.I expr2
+is true.
+.PD
+.PP
+\fBtest\fP and \fB[\fP evaluate conditional
+expressions using a set of rules based on the number of arguments.
+.if t .sp 0.5
+.if n .sp 1
+.PD 0
+.TP
+0 arguments
+The expression is false.
+.TP
+1 argument
+The expression is true if and only if the argument is not null.
+.TP
+2 arguments
+If the first argument is \fB!\fP, the expression is true if and
+only if the second argument is null.
+If the first argument is one of the unary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the expression is true if the unary test is true.
+If the first argument is not a valid unary conditional operator, the expression
+is false.
+.TP
+3 arguments
+If the second argument is one of the binary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the result of the expression is the result of the binary test using
+the first and third arguments as operands.
+If the first argument is \fB!\fP, the value is the negation of
+the two-argument test using the second and third arguments.
+If the first argument is exactly \fB(\fP and the third argument is
+exactly \fB)\fP, the result is the one-argument test of the second
+argument.
+Otherwise, the expression is false.
+The \fB\-a\fP and \fB\-o\fP operators are considered binary operators
+in this case.  
+.TP
+4 arguments
+If the first argument is \fB!\fP, the result is the negation of
+the three-argument expression composed of the remaining arguments.
+Otherwise, the expression is parsed and evaluated according to 
+precedence using the rules listed above.
+.TP
+5 or more arguments
+The expression is parsed and evaluated according to precedence
+using the rules listed above.
+.RE
+.PD
+.TP
+.B times
+Print the accumulated user and system times for the shell and
+for processes run from the shell.  The return status is 0.
+.TP
+\fBtrap\fP [\fB\-lp\fP] [\fIarg\fP] [\fIsigspec\fP ...]
+The command
+.I arg
+is to be read and executed when the shell receives
+signal(s)
+.IR sigspec .
+If
+.I arg
+is absent or
+.BR \- ,
+all specified signals are
+reset to their original values (the values they had
+upon entrance to the shell).
+If 
+.I arg
+is the null string the signal specified by each
+.I sigspec
+is ignored by the shell and by the commands it invokes.
+If
+.I arg
+is not present and
+.B \-p
+has been supplied, then the trap commands associated with each
+.I sigspec
+are displayed.
+If no arguments are supplied or if only
+.B \-p
+is given,
+.B trap
+prints the list of commands associated with each signal number.
+Each
+.I sigspec
+is either
+a signal name defined in <\fIsignal.h\fP>, or a signal number.
+If a
+.I sigspec
+is
+.SM
+.B EXIT
+(0) the command
+.I arg
+is executed on exit from the shell.
+If a
+.I sigspec
+is
+.SM
+.BR DEBUG ,
+the command
+.I arg
+is executed after every \fIsimple command\fP (see
+.SM
+.B SHELL GRAMMAR
+above).
+If a
+.I sigspec
+is
+.SM
+.BR ERR ,
+the command
+.I arg
+is executed whenever a simple command has a non\-zero exit status.
+The
+.SM
+.BR ERR
+trap is not executed if the failed command is part of an
+.I until
+or
+.I while
+loop,
+part of an
+.I if
+statement, part of a
+.B &&
+or
+.B \(bv\(bv
+list, or if the command's return value is
+being inverted via
+.BR ! .
+The
+.B \-l
+option causes the shell to print a list of signal names and
+their corresponding numbers.
+Signals ignored upon entry to the shell cannot be trapped or reset.
+Trapped signals are reset to their original values in a child
+process when it is created.
+The return status is false if any
+.I sigspec
+is invalid; otherwise
+.B trap
+returns true.
+.TP
+\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...]
+With no options, 
+indicate how each
+.I name
+would be interpreted if used as a command name.
+If the
+.B \-t
+option is used,
+.B type
+prints a string which is one of
+.IR alias ,
+.IR keyword ,
+.IR function ,
+.IR builtin ,
+or
+.I file 
+if
+.I name
+is an alias, shell reserved word, function, builtin, or disk file,
+respectively.
+If the
+.I name
+is not found, then nothing is printed, and an exit status of false
+is returned.
+If the
+.B \-p
+option is used,
+.B type
+either returns the name of the disk file
+that would be executed if
+.I name
+were specified as a command name,
+or nothing if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+The
+.B \-P
+option forces a
+.SM
+.B PATH
+search for each \fIname\fP, even if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+If a command is hashed,
+.B \-p
+and
+.B \-P
+print the hashed value, not necessarily the file that appears
+first in 
+.SM
+.BR PATH .
+If the
+.B \-a
+option is used, 
+.B type
+prints all of the places that contain
+an executable named 
+.IR name .
+This includes aliases and functions,
+if and only if the 
+.B \-p
+option is not also used.
+The table of hashed commands is not consulted
+when using
+.BR \-a .
+The
+.B \-f
+option suppresses shell function lookup, as with the \fBcommand\fP builtin.
+.B type
+returns true if any of the arguments are found, false if
+none are found.
+.TP
+\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
+Provides control over the resources available to the shell and to
+processes started by it, on systems that allow such control.
+The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is
+set for the given resource.  A hard limit cannot be increased once it
+is set; a soft limit may be increased up to the value of the hard limit.
+If neither \fB\-H\fP nor \fB\-S\fP is specified, both the soft and hard
+limits are set.
+The value of
+.I limit
+can be a number in the unit specified for the resource
+or one of the special values
+.BR hard ,
+.BR soft ,
+or
+.BR unlimited ,
+which stand for the current hard limit, the current soft limit, and
+no limit, respectively.
+If
+.I limit
+is omitted, the current value of the soft limit of the resource is
+printed, unless the \fB\-H\fP option is given.  When more than one
+resource is specified, the limit name and unit are printed before the value.
+Other options are interpreted as follows:
+.RS
+.PD 0
+.TP
+.B \-a
+All current limits are reported
+.TP
+.B \-c
+The maximum size of core files created
+.TP
+.B \-d
+The maximum size of a process's data segment
+.TP
+.B \-f
+The maximum size of files created by the shell
+.TP
+.B \-l
+The maximum size that may be locked into memory
+.TP
+.B \-m
+The maximum resident set size
+.TP
+.B \-n
+The maximum number of open file descriptors (most systems do not
+allow this value to be set)
+.TP
+.B \-p
+The pipe size in 512-byte blocks (this may not be set)
+.TP
+.B \-s
+The maximum stack size
+.TP
+.B \-t
+The maximum amount of cpu time in seconds
+.TP
+.B \-u
+The maximum number of processes available to a single user
+.TP
+.B \-v
+The maximum amount of virtual memory available to the shell
+.PD
+.PP
+If
+.I limit
+is given, it is the new value of the specified resource (the
+.B \-a
+option is display only).
+If no option is given, then
+.B \-f
+is assumed.  Values are in 1024-byte increments, except for
+.BR \-t ,
+which is in seconds,
+.BR \-p ,
+which is in units of 512-byte blocks,
+and
+.B \-n
+and
+.BR \-u ,
+which are unscaled values.
+The return status is 0 unless an invalid option or argument is supplied,
+or an error occurs while setting a new limit.
+.RE
+.TP
+\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+The user file-creation mask is set to 
+.IR mode .
+If
+.I mode
+begins with a digit, it
+is interpreted as an octal number; otherwise
+it is interpreted as a symbolic mode mask similar
+to that accepted by
+.IR chmod (1).
+If
+.I mode
+is omitted, the current value of the mask is printed.
+The
+.B \-S
+option causes the mask to be printed in symbolic form; the
+default output is an octal number.
+If the
+.B \-p
+option is supplied, and
+.I mode
+is omitted, the output is in a form that may be reused as input.
+The return status is 0 if the mode was successfully changed or if
+no \fImode\fP argument was supplied, and false otherwise.
+.TP
+\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...]
+Remove each \fIname\fP from the list of defined aliases.  If
+.B \-a
+is supplied, all alias definitions are removed.  The return
+value is true unless a supplied
+.I name
+is not a defined alias.
+.TP
+\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...]
+For each
+.IR name ,
+remove the corresponding variable or function.
+If no options are supplied, or the
+.B \-v
+option is given, each
+.I name
+refers to a shell variable.
+Read-only variables may not be unset.
+If
+.B \-f
+is specifed, 
+each
+.I name
+refers to a shell function, and the function definition
+is removed.
+Each unset variable or function is removed from the environment
+passed to subsequent commands.
+If any of
+.SM
+.BR RANDOM ,
+.SM
+.BR SECONDS ,
+.SM
+.BR LINENO ,
+.SM
+.BR HISTCMD ,
+.SM
+.BR FUNCNAME ,
+.SM
+.BR GROUPS ,
+or
+.SM
+.B DIRSTACK
+are unset, they lose their special properties, even if they are
+subsequently reset.  The exit status is true unless a
+.I name
+does not exist or is readonly.
+.TP
+\fBwait\fP [\fIn\fP]
+Wait for the specified process and return its termination
+status.
+.I n
+may be a process
+ID or a job specification; if a job spec is given, all processes
+in that job's pipeline are waited for.  If
+.I n
+is not given, all currently active child processes
+are waited for, and the return status is zero.  If
+.I n
+specifies a non-existent process or job, the return status is
+127.  Otherwise, the return status is the exit status of the last
+process or job waited for.
+.\" bash_builtins
+.if \n(zZ=1 .ig zZ
+.SH "RESTRICTED SHELL"
+.\" rbash.1
+.zY
+.PP
+If
+.B bash
+is started with the name
+.BR rbash ,
+or the
+.B \-r
+option is supplied at invocation,
+the shell becomes restricted.
+A restricted shell is used to
+set up an environment more controlled than the standard shell.
+It behaves identically to
+.B bash
+with the exception that the following are disallowed or not performed:
+.IP \(bu
+changing directories with \fBcd\fP
+.IP \(bu
+setting or unsetting the values of
+.BR SHELL ,
+.BR PATH ,
+.BR ENV ,
+or
+.B BASH_ENV
+.IP \(bu
+specifying command names containing
+.B /
+.IP \(bu
+specifying a file name containing a
+.B /
+as an argument to the
+.B .
+builtin command
+.IP \(bu
+Specifying a filename containing a slash as an argument to the
+.B \-p
+option to the
+.B hash
+builtin command
+.IP \(bu
+importing function definitions from the shell environment at startup
+.IP \(bu
+parsing the value of \fBSHELLOPTS\fP from the shell environment at startup
+.IP \(bu
+redirecting output using the >, >|, <>, >&, &>, and >> redirection operators
+.IP \(bu
+using the
+.B exec
+builtin command to replace the shell with another command
+.IP \(bu
+adding or deleting builtin commands with the
+.B \-f
+and
+.B \-d
+options to the
+.B enable
+builtin command
+.IP \(bu
+Using the \fBenable\fP builtin command to enable disabled shell builtins
+.IP \(bu
+specifying the
+.B \-p
+option to the
+.B command
+builtin command
+.IP \(bu
+turning off restricted mode with
+\fBset +r\fP or \fBset +o restricted\fP.
+.PP
+These restrictions are enforced after any startup files are read.
+.PP
+When a command that is found to be a shell script is executed (see
+.SM
+.B "COMMAND EXECUTION"
+above),
+.B rbash
+turns off any restrictions in the shell spawned to execute the
+script.
+.\" end of rbash.1
+.if \n(zY=1 .ig zY
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIBash Reference Manual\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE
+.TP
+\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1)
+.TP
+\fIemacs\fP(1), \fIvi\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH FILES
+.PD 0
+.TP
+.FN /bin/bash
+The \fBbash\fP executable
+.TP
+.FN /etc/profile
+The systemwide initialization file, executed for login shells
+.TP
+.FN ~/.bash_profile
+The personal initialization file, executed for login shells
+.TP
+.FN ~/.bashrc
+The individual per-interactive-shell startup file
+.TP
+.FN ~/.bash_logout
+The individual login shell cleanup file, executed when a login shell exits
+.TP
+.FN ~/.inputrc
+Individual \fIreadline\fP initialization file
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox at gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet at ins.CWRU.Edu
+.SH BUG REPORTS
+If you find a bug in
+.B bash,
+you should report it.  But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of
+.B bash
+that you have.
+.PP
+Once you have determined that a bug actually exists, use the
+.I bashbug
+command to submit a bug report.
+If you have a fix, you are encouraged to mail that as well!
+Suggestions and `philosophical' bug reports may be mailed
+to \fIbug-bash at gnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+ALL bug reports should include:
+.PP
+.PD 0
+.TP 20
+The version number of \fBbash\fR
+.TP
+The hardware and operating system
+.TP
+The compiler used to compile
+.TP
+A description of the bug behaviour
+.TP
+A short script or `recipe' which exercises the bug
+.PD
+.PP
+.I bashbug
+inserts the first three items automatically into the template
+it provides for filing a bug report.
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet at ins.CWRU.Edu .
+.SH BUGS
+.PP
+It's too big and too slow.
+.PP
+There are some subtle differences between 
+.B bash
+and traditional versions of
+.BR sh ,
+mostly because of the
+.SM
+.B POSIX
+specification.
+.PP
+Aliases are confusing in some uses.
+.PP
+Shell builtin commands and functions are not stoppable/restartable.
+.PP
+Compound commands and command sequences of the form `a ; b ; c'
+are not handled gracefully when process suspension is attempted.
+When a process is stopped, the shell immediately executes the next
+command in the sequence.
+It suffices to place the sequence of commands between
+parentheses to force it into a subshell, which may be stopped as
+a unit.
+.PP
+Commands inside of \fB$(\fP...\fB)\fP command substitution are not
+parsed until substitution is attempted.  This will delay error
+reporting until some time after the command is entered.
+.PP
+Array variables may not (yet) be exported.
+.zZ
+.zY
diff --git a/raw/man1/shift.1 b/raw/man1/shift.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/shift.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/shopt.1 b/raw/man1/shopt.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/shopt.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/showkey.1 b/raw/man1/showkey.1
new file mode 100644
index 0000000..0c0f091
--- /dev/null
+++ b/raw/man1/showkey.1
@@ -0,0 +1,73 @@
+.\" @(#)showkey.1 1.1 980201 aeb
+.TH SHOWKEY 1 "1 Feb 1998"
+.SH NAME
+showkey \- examine the codes sent by the keyboard
+.SH SYNOPSIS
+showkey [-h|--help] [-a|--ascii] [-s|--scancodes] [-k|--keycodes]
+.SH DESCRIPTION
+.IX "showkey command" "" "\fLshowkey\fR command"  
+.LP
+.B showkey
+prints to standard output either the scan codes or the keycode
+or the `ascii' code of each key pressed.
+In the first two modes the program runs until 10 seconds have elapsed
+since the last key press or release event, or until it receives
+a suitable signal, like SIGTERM, from another process.
+In `ascii' mode the program terminates when the user types ^D.
+.LP
+When in scancode dump mode, 
+.B showkey
+prints in hexadecimal format each byte received from the keyboard to the
+standard output. A new line is printed when an interval of about 0.1
+seconds occurs between the bytes received, or when the internal receive
+buffer fills up. This can be used to determine roughly, what byte
+sequences the keyboard sends at once on a given key press. The scan code
+dumping mode is primarily intended for debugging the keyboard driver or
+other low level interfaces. As such it shouldn't be of much interest to
+the regular end-user. However, some modern keyboards have keys or buttons
+that produce scancodes to which the kernel does not associate a keycode,
+and, after finding out what these are, the user can assign keycodes with
+.BR setkeycodes (8).
+.LP
+When in the default keycode dump mode,
+.B showkey
+prints to the standard output the keycode number or each key pressed or
+released. The kind of the event, press or release, is also reported.
+Keycodes are numbers assigned by the kernel to each individual physical
+key. Every key has always only one associated keycode number, whether
+the keyboard sends single or multiple scan codes when pressing it. Using
+.B showkey
+in this mode, you can find out what numbers to use in your personalized
+keymap files.
+.LP
+When in `ascii' dump mode,
+.B showkey
+prints to the standard output the decimal, octal, and hexadecimal
+value(s) of the key pressed, according to he present keymap.
+.SH OPTIONS
+.TP
+\-h \-\-help
+.B showkey
+prints to the standard error output its version number, a compile
+option and a short usage message, then exits.
+.TP
+\-s \-\-scancodes
+Starts
+.B showkey
+in scan code dump mode.
+.TP
+\-k \-\-keycodes
+Starts
+.B showkey
+in keycode dump mode. This is the default, when no command line options
+are present.
+.TP
+\-a \-\-ascii
+Starts
+.B showkey
+in `ascii' dump mode.
+.SH "SEE ALSO"
+.BR loadkeys (1),
+.BR dumpkeys (1),
+.BR keymaps (5),
+.BR setkeycodes (8)
diff --git a/raw/man1/size.1 b/raw/man1/size.1
new file mode 100644
index 0000000..7447236
--- /dev/null
+++ b/raw/man1/size.1
@@ -0,0 +1,250 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "SIZE 1"
+.TH SIZE 1 "2003-11-24" "binutils-2.14.90.0.6" "GNU Development Tools"
+.SH "NAME"
+size \- list section sizes and total size.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+size [\fB\-A\fR|\fB\-B\fR|\fB\-\-format=\fR\fIcompatibility\fR]
+     [\fB\-\-help\fR]
+     [\fB\-d\fR|\fB\-o\fR|\fB\-x\fR|\fB\-\-radix=\fR\fInumber\fR]
+     [\fB\-t\fR|\fB\-\-totals\fR]
+     [\fB\-\-target=\fR\fIbfdname\fR] [\fB\-V\fR|\fB\-\-version\fR]  
+     [\fIobjfile\fR...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \s-1GNU\s0 \fBsize\fR utility lists the section sizes\-\-\-and the total
+size\-\-\-for each of the object or archive files \fIobjfile\fR in its
+argument list.  By default, one line of output is generated for each
+object file or each module in an archive.
+.PP
+\&\fIobjfile\fR... are the object files to be examined.
+If none are specified, the file \f(CW\*(C`a.out\*(C'\fR will be used.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The command line options have the following meanings:
+.IP "\fB\-A\fR" 4
+.IX Item "-A"
+.PD 0
+.IP "\fB\-B\fR" 4
+.IX Item "-B"
+.IP "\fB\-\-format=\fR\fIcompatibility\fR" 4
+.IX Item "--format=compatibility"
+.PD
+Using one of these options, you can choose whether the output from \s-1GNU\s0
+\&\fBsize\fR resembles output from System V \fBsize\fR (using \fB\-A\fR,
+or \fB\-\-format=sysv\fR), or Berkeley \fBsize\fR (using \fB\-B\fR, or
+\&\fB\-\-format=berkeley\fR).  The default is the one-line format similar to
+Berkeley's.  
+.Sp
+Here is an example of the Berkeley (default) format of output from
+\&\fBsize\fR: 
+.Sp
+.Vb 4
+\&        $ size --format=Berkeley ranlib size
+\&        text    data    bss     dec     hex     filename
+\&        294880  81920   11592   388392  5ed28   ranlib
+\&        294880  81920   11888   388688  5ee50   size
+.Ve
+.Sp
+This is the same data, but displayed closer to System V conventions:
+.Sp
+.Vb 7
+\&        $ size --format=SysV ranlib size
+\&        ranlib  :
+\&        section         size         addr
+\&        .text         294880         8192       
+\&        .data          81920       303104       
+\&        .bss           11592       385024       
+\&        Total         388392
+.Ve
+.Sp
+.Vb 6
+\&        size  :
+\&        section         size         addr
+\&        .text         294880         8192       
+\&        .data          81920       303104       
+\&        .bss           11888       385024       
+\&        Total         388688
+.Ve
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Show a summary of acceptable arguments and options.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.IP "\fB\-\-radix=\fR\fInumber\fR" 4
+.IX Item "--radix=number"
+.PD
+Using one of these options, you can control whether the size of each
+section is given in decimal (\fB\-d\fR, or \fB\-\-radix=10\fR); octal
+(\fB\-o\fR, or \fB\-\-radix=8\fR); or hexadecimal (\fB\-x\fR, or
+\&\fB\-\-radix=16\fR).  In \fB\-\-radix=\fR\fInumber\fR, only the three
+values (8, 10, 16) are supported.  The total size is always given in two
+radices; decimal and hexadecimal for \fB\-d\fR or \fB\-x\fR output, or
+octal and hexadecimal if you're using \fB\-o\fR.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-totals\fR" 4
+.IX Item "--totals"
+.PD
+Show totals of all objects listed (Berkeley format listing mode only).
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+Specify that the object-code format for \fIobjfile\fR is
+\&\fIbfdname\fR.  This option may not be necessary; \fBsize\fR can
+automatically recognize many formats.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Display the version number of \fBsize\fR.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
+2001, 2002, 2003 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, with no Front-Cover Texts, and with no
+Back-Cover Texts.  A copy of the license is included in the
+section entitled ``\s-1GNU\s0 Free Documentation License''.
diff --git a/raw/man1/sleep.1 b/raw/man1/sleep.1
new file mode 100644
index 0000000..b3f192c
--- /dev/null
+++ b/raw/man1/sleep.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH SLEEP "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+sleep \- delay for a specified amount of time
+.SH SYNOPSIS
+.B sleep
+\fINUMBER\fR[\fISUFFIX\fR]...
+.br
+.B sleep
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Pause for NUMBER seconds.  SUFFIX may be `s' for seconds (the default),
+`m' for minutes, `h' for hours or `d' for days.  Unlike most implementations
+that require NUMBER be an integer, here NUMBER may be an arbitrary floating
+point number.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering and Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B sleep
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B sleep
+programs are properly installed at your site, the command
+.IP
+.B info sleep
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/smbclient.1 b/raw/man1/smbclient.1
new file mode 100644
index 0000000..e14a277
--- /dev/null
+++ b/raw/man1/smbclient.1
@@ -0,0 +1,637 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBCLIENT" 1 "" "" ""
+.SH NAME
+smbclient \- ftp-like client to access SMB/CIFS resources on servers
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbclient\fR {servicename} [password] [-b <buffer size>] [-d debuglevel] [-D Directory]
+          [-U username] [-W workgroup] [-M <netbios name>] [-m maxprotocol] [-A authfile] [-N] [-l logfile] [-L <netbios name>] [-I destinationIP] [-E] [-c <command string>] [-i scope] [-O <socket options>] [-p port] [-R <name resolve order>] [-s <smb config file>] [-T<c|x>IXFqgbNan] [-k]
+         
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBsmbclient\fR is a client that can 'talk' to an SMB/CIFS server\&. It offers an interface similar to that of the ftp program (see \fBftp\fR(1))\&. Operations include things like getting files from the server to the local machine, putting files from the local machine to the server, retrieving directory information from the server and so on\&.
+
+.SH "OPTIONS"
+
+.TP
+servicename
+servicename is the name of the service you want to use on the server\&. A service name takes the form \fI//server/service\fR where \fIserver \fR is the NetBIOS name of the SMB/CIFS server offering the desired service and \fIservice\fR is the name of the service offered\&. Thus to connect to the service "printer" on the SMB/CIFS server "smbserver", you would use the servicename \fI//smbserver/printer \fR
+
+
+Note that the server name required is NOT necessarily the IP (DNS) host name of the server ! The name required is a NetBIOS server name, which may or may not be the same as the IP hostname of the machine running the server\&.
+
+
+The server name is looked up according to either the \fI-R\fR parameter to \fBsmbclient\fR or using the name resolve order parameter in the \fBsmb.conf\fR(5) file, allowing an administrator to change the order and methods by which server names are looked up\&.
+
+
+.TP
+password
+The password required to access the specified service on the specified server\&. If this parameter is supplied, the \fI-N\fR option (suppress password prompt) is assumed\&.
+
+
+There is no default password\&. If no password is supplied on the command line (either by using this parameter or adding a password to the \fI-U\fR option (see below)) and the \fI-N\fR option is not specified, the client will prompt for a password, even if the desired service does not require one\&. (If no password is required, simply press ENTER to provide a null password\&.)
+
+
+Note: Some servers (including OS/2 and Windows for Workgroups) insist on an uppercase password\&. Lowercase or mixed case passwords may be rejected by these servers\&.
+
+
+Be cautious about including passwords in scripts\&.
+
+
+.TP
+-R <name resolve order>
+This option is used by the programs in the Samba suite to determine what naming services and in what order to resolve host names to IP addresses\&. The option takes a space-separated string of different name resolution options\&.
+
+
+The options are :"lmhosts", "host", "wins" and "bcast"\&. They cause names to be resolved as follows:
+
+
+\fBlmhosts\fR: Lookup an IP address in the Samba lmhosts file\&. If the line in lmhosts has no name type attached to the NetBIOS name (see the \fBlmhosts\fR(5) for details) then any name type matches for lookup\&.
+
+\fBhost\fR: Do a standard host name to IP address resolution, using the system \fI/etc/hosts \fR, NIS, or DNS lookups\&. This method of name resolution is operating system dependent, for instance on IRIX or Solaris this may be controlled by the \fI/etc/nsswitch\&.conf\fR file)\&. Note that this method is only used if the NetBIOS name type being queried is the 0x20 (server) name type, otherwise it is ignored\&.
+
+\fBwins\fR: Query a name with the IP address listed in the \fIwins server\fR parameter\&. If no WINS server has been specified this method will be ignored\&.
+
+\fBbcast\fR: Do a broadcast on each of the known local interfaces listed in the \fIinterfaces\fR parameter\&. This is the least reliable of the name resolution methods as it depends on the target host being on a locally connected subnet\&.
+
+If this parameter is not set then the name resolve order defined in the \fBsmb.conf\fR(5) file parameter (name resolve order) will be used\&.
+
+
+The default order is lmhosts, host, wins, bcast and without this parameter or any entry in the \fIname resolve order \fR parameter of the \fBsmb.conf\fR(5) file the name resolution methods will be attempted in this order\&.
+
+
+.TP
+-M NetBIOS name
+This options allows you to send messages, using the "WinPopup" protocol, to another computer\&. Once a connection is established you then type your message, pressing ^D (control-D) to end\&.
+
+
+If the receiving computer is running WinPopup the user will receive the message and probably a beep\&. If they are not running WinPopup the message will be lost, and no error message will occur\&.
+
+
+The message is also automatically truncated if the message is over 1600 bytes, as this is the limit of the protocol\&.
+
+
+One useful trick is to cat the message through \fBsmbclient\fR\&. For example: \fB cat mymessage.txt | smbclient -M FRED \fR will send the message in the file \fImymessage\&.txt\fR to the machine FRED\&.
+
+
+You may also find the \fI-U\fR and \fI-I\fR options useful, as they allow you to control the FROM and TO parts of the message\&.
+
+
+See the \fImessage command\fR parameter in the \fBsmb.conf\fR(5) for a description of how to handle incoming WinPopup messages in Samba\&.
+
+
+\fBNote\fR: Copy WinPopup into the startup group on your WfWg PCs if you want them to always be able to receive messages\&.
+
+
+.TP
+-p port
+This number is the TCP port number that will be used when making connections to the server\&. The standard (well-known) TCP port number for an SMB/CIFS server is 139, which is the default\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-I IP-address
+\fIIP address\fR is the address of the server to connect to\&. It should be specified in standard "a\&.b\&.c\&.d" notation\&.
+
+
+Normally the client would attempt to locate a named SMB/CIFS server by looking it up via the NetBIOS name resolution mechanism described above in the \fIname resolve order\fR parameter above\&. Using this parameter will force the client to assume that the server is on the machine with the specified IP address and the NetBIOS name component of the resource being connected to will be ignored\&.
+
+
+There is no default for this parameter\&. If not supplied, it will be determined automatically by the client as described above\&.
+
+
+.TP
+-E
+This parameter causes the client to write messages to the standard error stream (stderr) rather than to the standard output stream\&.
+
+
+By default, the client writes messages to standard output - typically the user's tty\&.
+
+
+.TP
+-L
+This option allows you to look at what services are available on a server\&. You use it as \fBsmbclient -L host\fR and a list should appear\&. The \fI-I \fR option may be useful if your NetBIOS names don't match your TCP/IP DNS host names or if you are trying to reach a host on another network\&.
+
+
+.TP
+-t terminal code
+This option tells \fBsmbclient\fR how to interpret filenames coming from the remote server\&. Usually Asian language multibyte UNIX implementations use different character sets than SMB/CIFS servers (\fBEUC\fR instead of \fB SJIS\fR for example)\&. Setting this parameter will let \fBsmbclient\fR convert between the UNIX filenames and the SMB filenames correctly\&. This option has not been seriously tested and may have some problems\&.
+
+
+The terminal codes include CWsjis, CWeuc, CWjis7, CWjis8, CWjunet, CWhex, CWcap\&. This is not a complete list, check the Samba source code for the complete list\&.
+
+
+.TP
+-b buffersize
+This option changes the transmit/send buffer size when getting or putting a file from/to the server\&. The default is 65520 bytes\&. Setting this value smaller (to 1200 bytes) has been observed to speed up file transfers to and from a Win9x server\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR is an integer from 0 to 10\&. The default value if this parameter is not specified is zero\&.
+
+
+The higher this value, the more detail will be logged to the log files about the activities of the server\&. At level 0, only critical errors and serious warnings will be logged\&. Level 1 is a reasonable level for day-to-day running - it generates a small amount of information about operations carried out\&.
+
+
+Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem\&. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic\&.
+
+
+Note that specifying this parameter here will override the \fIlog level\fR parameter in the \fIsmb\&.conf\fR file\&.
+
+
+.TP
+-l|--logfile=logbasename
+File name for log/debug files\&. The extension \fB"\&.client"\fR will be appended\&. The log file is never removed by the client\&.
+
+
+.TP
+-N
+If specified, this parameter suppresses the normal password prompt from the client to the user\&. This is useful when accessing a service that does not require a password\&.
+
+
+Unless a password is specified on the command line or this parameter is specified, the client will request a password\&.
+
+
+.TP
+-k
+Try to authenticate with kerberos\&. Only useful in an Active Directory environment\&.
+
+
+.TP
+-A|--authfile=filename
+This option allows you to specify a file from which to read the username and password used in the connection\&. The format of the file is
+
+
+.nf
+
+username = <value>
+password = <value>
+domain   = <value>
+.fi
+
+
+Make certain that the permissions on the file restrict access from unwanted users\&.
+
+
+.TP
+-U|--user=username[%password]
+Sets the SMB username or username and password\&.
+
+
+If %password is not specified, the user will be prompted\&. The client will first check the \fBUSER\fR environment variable, then the \fBLOGNAME\fR variable and if either exists, the string is uppercased\&. If these environmental variables are not found, the username \fBGUEST\fR is used\&.
+
+
+A third option is to use a credentials file which contains the plaintext of the username and password\&. This option is mainly provided for scripts where the admin does not wish to pass the credentials on the command line or via environment variables\&. If this method is used, make certain that the permissions on the file restrict access from unwanted users\&. See the \fI-A\fR for more details\&.
+
+
+Be cautious about including passwords in scripts\&. Also, on many systems the command line of a running process may be seen via the \fBps\fR command\&. To be safe always allow \fBrpcclient\fR to prompt for a password and type it in directly\&.
+
+
+.TP
+-n <primary NetBIOS name>
+This option allows you to override the NetBIOS name that Samba uses for itself\&. This is identical to setting the \fInetbios name\fR parameter in the \fIsmb\&.conf\fR file\&. However, a command line setting will take precedence over settings in \fIsmb\&.conf\fR\&.
+
+
+.TP
+-i <scope>
+This specifies a NetBIOS scope that \fBnmblookup\fR will use to communicate with when generating NetBIOS names\&. For details on the use of NetBIOS scopes, see rfc1001\&.txt and rfc1002\&.txt\&. NetBIOS scopes are \fBvery\fR rarely used, only set this parameter if you are the system administrator in charge of all the NetBIOS systems you communicate with\&.
+
+
+.TP
+-W|--workgroup=domain
+Set the SMB domain of the username\&. This overrides the default domain which is the domain defined in smb\&.conf\&. If the domain specified is the same as the servers NetBIOS name, it causes the client to log on using the servers local SAM (as opposed to the Domain SAM)\&.
+
+
+.TP
+-O socket options
+TCP socket options to set on the client socket\&. See the socket options parameter in the \fIsmb\&.conf\fR manual page for the list of valid options\&.
+
+
+.TP
+-T tar options
+smbclient may be used to create \fBtar(1) \fR compatible backups of all the files on an SMB/CIFS share\&. The secondary tar flags that can be given to this option are :
+
+
+\fIc\fR - Create a tar file on UNIX\&. Must be followed by the name of a tar file, tape device or "-" for standard output\&. If using standard output you must turn the log level to its lowest value -d0 to avoid corrupting your tar file\&. This flag is mutually exclusive with the \fIx\fR flag\&.
+
+\fIx\fR - Extract (restore) a local tar file back to a share\&. Unless the -D option is given, the tar files will be restored from the top level of the share\&. Must be followed by the name of the tar file, device or "-" for standard input\&. Mutually exclusive with the \fIc\fR flag\&. Restored files have their creation times (mtime) set to the date saved in the tar file\&. Directories currently do not get their creation dates restored properly\&.
+
+\fII\fR - Include files and directories\&. Is the default behavior when filenames are specified above\&. Causes tar files to be included in an extract or create (and therefore everything else to be excluded)\&. See example below\&. Filename globbing works in one of two ways\&. See r below\&.
+
+\fIX\fR - Exclude files and directories\&. Causes tar files to be excluded from an extract or create\&. See example below\&. Filename globbing works in one of two ways now\&. See \fIr\fR below\&.
+
+\fIb\fR - Blocksize\&. Must be followed by a valid (greater than zero) blocksize\&. Causes tar file to be written out in blocksize*TBLOCK (usually 512 byte) blocks\&.
+
+\fIg\fR - Incremental\&. Only back up files that have the archive bit set\&. Useful only with the \fIc\fR flag\&.
+
+\fIq\fR - Quiet\&. Keeps tar from printing diagnostics as it works\&. This is the same as tarmode quiet\&.
+
+\fIr\fR - Regular expression include or exclude\&. Uses regular expression matching for excluding or excluding files if compiled with HAVE_REGEX_H\&. However this mode can be very slow\&. If not compiled with HAVE_REGEX_H, does a limited wildcard match on '*' and '?'\&.
+
+\fIN\fR - Newer than\&. Must be followed by the name of a file whose date is compared against files found on the share during a create\&. Only files newer than the file specified are backed up to the tar file\&. Useful only with the \fIc\fR flag\&.
+
+\fIa\fR - Set archive bit\&. Causes the archive bit to be reset when a file is backed up\&. Useful with the \fIg\fR and \fIc\fR flags\&.
+
+\fBTar Long File Names\fR
+
+
+\fBsmbclient\fR's tar option now supports long file names both on backup and restore\&. However, the full path name of the file must be less than 1024 bytes\&. Also, when a tar archive is created, \fBsmbclient\fR's tar option places all files in the archive with relative names, not absolute names\&.
+
+
+\fBTar Filenames\fR
+
+
+All file names can be given as DOS path names (with '\\\\' as the component separator) or as UNIX path names (with '/' as the component separator)\&.
+
+
+\fBExamples\fR
+
+
+Restore from tar file \fIbackup\&.tar\fR into myshare on mypc (no password on share)\&.
+
+
+\fBsmbclient //mypc/yshare "" -N -Tx backup.tar \fR
+
+
+Restore everything except \fIusers/docs\fR
+
+
+\fBsmbclient //mypc/myshare "" -N -TXx backup.tar users/docs\fR
+
+
+Create a tar file of the files beneath \fI users/docs\fR\&.
+
+
+\fBsmbclient //mypc/myshare "" -N -Tc backup.tar users/docs \fR
+
+
+Create the same tar file as above, but now use a DOS path name\&.
+
+
+\fBsmbclient //mypc/myshare "" -N -tc backup.tar users\edocs \fR
+
+
+Create a tar file of all the files and directories in the share\&.
+
+
+\fBsmbclient //mypc/myshare "" -N -Tc backup.tar * \fR
+
+
+.TP
+-D initial directory
+Change to initial directory before starting\&. Probably only of any use with the tar -T option\&.
+
+
+.TP
+-c command string
+command string is a semicolon-separated list of commands to be executed instead of prompting from stdin\&. \fI -N\fR is implied by \fI-c\fR\&.
+
+
+This is particularly useful in scripts and for printing stdin to the server, e\&.g\&. \fB-c 'print -'\fR\&.
+
+
+.SH "OPERATIONS"
+
+.PP
+Once the client is running, the user is presented with a prompt :
+
+.PP
+smb:\\>
+
+.PP
+The backslash ("\\\\") indicates the current working directory on the server, and will change if the current working directory is changed\&.
+
+.PP
+The prompt indicates that the client is ready and waiting to carry out a user command\&. Each command is a single word, optionally followed by parameters specific to that command\&. Command and parameters are space-delimited unless these notes specifically state otherwise\&. All commands are case-insensitive\&. Parameters to commands may or may not be case sensitive, depending on the command\&.
+
+.PP
+You can specify file names which have spaces in them by quoting the name with double quotes, for example "a long file name"\&.
+
+.PP
+Parameters shown in square brackets (e\&.g\&., "[parameter]") are optional\&. If not given, the command will use suitable defaults\&. Parameters shown in angle brackets (e\&.g\&., "<parameter>") are required\&.
+
+.PP
+Note that all commands operating on the server are actually performed by issuing a request to the server\&. Thus the behavior may vary from server to server, depending on how the server was implemented\&.
+
+.PP
+The commands available are given here in alphabetical order\&.
+
+.TP
+? [command]
+If \fIcommand\fR is specified, the ? command will display a brief informative message about the specified command\&. If no command is specified, a list of available commands will be displayed\&.
+
+
+.TP
+! [shell command]
+If \fIshell command\fR is specified, the ! command will execute a shell locally and run the specified shell command\&. If no command is specified, a local shell will be run\&.
+
+
+.TP
+altname file
+The client will request that the server return the "alternate" name (the 8\&.3 name) for a file or directory\&.
+
+
+.TP
+cancel jobid0 [jobid1] \&.\&.\&. [jobidN]
+The client will request that the server cancel the printjobs identified by the given numeric print job ids\&.
+
+
+.TP
+chmod file mode in octal
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server change the UNIX permissions to the given octal mode, in standard UNIX format\&.
+
+
+.TP
+chown file uid gid
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server change the UNIX user and group ownership to the given decimal values\&. Note there is currently no way to remotely look up the UNIX uid and gid values for a given name\&. This may be addressed in future versions of the CIFS UNIX extensions\&.
+
+
+.TP
+cd [directory name]
+If "directory name" is specified, the current working directory on the server will be changed to the directory specified\&. This operation will fail if for any reason the specified directory is inaccessible\&.
+
+
+If no directory name is specified, the current working directory on the server will be reported\&.
+
+
+.TP
+del <mask>
+The client will request that the server attempt to delete all files matching \fImask\fR from the current working directory on the server\&.
+
+
+.TP
+dir <mask>
+A list of the files matching \fImask\fR in the current working directory on the server will be retrieved from the server and displayed\&.
+
+
+.TP
+exit
+Terminate the connection with the server and exit from the program\&.
+
+
+.TP
+get <remote file name> [local file name]
+Copy the file called \fIremote file name\fR from the server to the machine running the client\&. If specified, name the local copy \fIlocal file name\fR\&. Note that all transfers in \fBsmbclient\fR are binary\&. See also the lowercase command\&.
+
+
+.TP
+help [command]
+See the ? command above\&.
+
+
+.TP
+lcd [directory name]
+If \fIdirectory name\fR is specified, the current working directory on the local machine will be changed to the directory specified\&. This operation will fail if for any reason the specified directory is inaccessible\&.
+
+
+If no directory name is specified, the name of the current working directory on the local machine will be reported\&.
+
+
+.TP
+link source destination
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server create a hard link between the source and destination files\&. The source file must not exist\&.
+
+
+.TP
+lowercase
+Toggle lowercasing of filenames for the get and mget commands\&.
+
+
+When lowercasing is toggled ON, local filenames are converted to lowercase when using the get and mget commands\&. This is often useful when copying (say) MSDOS files from a server, because lowercase filenames are the norm on UNIX systems\&.
+
+
+.TP
+ls <mask>
+See the dir command above\&.
+
+
+.TP
+mask <mask>
+This command allows the user to set up a mask which will be used during recursive operation of the mget and mput commands\&.
+
+
+The masks specified to the mget and mput commands act as filters for directories rather than files when recursion is toggled ON\&.
+
+
+The mask specified with the mask command is necessary to filter files within those directories\&. For example, if the mask specified in an mget command is "source*" and the mask specified with the mask command is "*\&.c" and recursion is toggled ON, the mget command will retrieve all files matching "*\&.c" in all directories below and including all directories matching "source*" in the current working directory\&.
+
+
+Note that the value for mask defaults to blank (equivalent to "*") and remains so until the mask command is used to change it\&. It retains the most recently specified value indefinitely\&. To avoid unexpected results it would be wise to change the value of mask back to "*" after using the mget or mput commands\&.
+
+
+.TP
+md <directory name>
+See the mkdir command\&.
+
+
+.TP
+mget <mask>
+Copy all files matching \fImask\fR from the server to the machine running the client\&.
+
+
+Note that \fImask\fR is interpreted differently during recursive operation and non-recursive operation - refer to the recurse and mask commands for more information\&. Note that all transfers in \fBsmbclient\fR are binary\&. See also the lowercase command\&.
+
+
+.TP
+mkdir <directory name>
+Create a new directory on the server (user access privileges permitting) with the specified name\&.
+
+
+.TP
+mput <mask>
+Copy all files matching \fImask\fR in the current working directory on the local machine to the current working directory on the server\&.
+
+
+Note that \fImask\fR is interpreted differently during recursive operation and non-recursive operation - refer to the recurse and mask commands for more information\&. Note that all transfers in \fBsmbclient\fR are binary\&.
+
+
+.TP
+print <file name>
+Print the specified file from the local machine through a printable service on the server\&.
+
+
+See also the printmode command\&.
+
+
+.TP
+printmode <graphics or text>
+Set the print mode to suit either binary data (such as graphical information) or text\&. Subsequent print commands will use the currently set print mode\&.
+
+
+.TP
+prompt
+Toggle prompting for filenames during operation of the mget and mput commands\&.
+
+
+When toggled ON, the user will be prompted to confirm the transfer of each file during these commands\&. When toggled OFF, all specified files will be transferred without prompting\&.
+
+
+.TP
+put <local file name> [remote file name]
+Copy the file called \fIlocal file name\fR from the machine running the client to the server\&. If specified, name the remote copy \fIremote file name\fR\&. Note that all transfers in \fBsmbclient\fR are binary\&. See also the lowercase command\&.
+
+
+.TP
+queue
+Displays the print queue, showing the job id, name, size and current status\&.
+
+
+.TP
+quit
+See the exit command\&.
+
+
+.TP
+rd <directory name>
+See the rmdir command\&.
+
+
+.TP
+recurse
+Toggle directory recursion for the commands mget and mput\&.
+
+
+When toggled ON, these commands will process all directories in the source directory (i\&.e\&., the directory they are copying from ) and will recurse into any that match the mask specified to the command\&. Only files that match the mask specified using the mask command will be retrieved\&. See also the mask command\&.
+
+
+When recursion is toggled OFF, only files from the current working directory on the source machine that match the mask specified to the mget or mput commands will be copied, and any mask specified using the mask command will be ignored\&.
+
+
+.TP
+rm <mask>
+Remove all files matching \fImask\fR from the current working directory on the server\&.
+
+
+.TP
+rmdir <directory name>
+Remove the specified directory (user access privileges permitting) from the server\&.
+
+
+.TP
+setmode <filename> <perm=[+|\\-]rsha>
+A version of the DOS attrib command to set file permissions\&. For example:
+
+
+\fBsetmode myfile +r \fR
+
+
+would make myfile read only\&.
+
+
+.TP
+symlink source destination
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server create a symbolic hard link between the source and destination files\&. The source file must not exist\&. Note that the server will not create a link to any path that lies outside the currently connected share\&. This is enforced by the Samba server\&.
+
+
+.TP
+tar <c|x>[IXbgNa]
+Performs a tar operation - see the \fI-T \fR command line option above\&. Behavior may be affected by the tarmode command (see below)\&. Using g (incremental) and N (newer) will affect tarmode settings\&. Note that using the "-" option with tar x may not work - use the command line option instead\&.
+
+
+.TP
+blocksize <blocksize>
+Blocksize\&. Must be followed by a valid (greater than zero) blocksize\&. Causes tar file to be written out in \fIblocksize\fR*TBLOCK (usually 512 byte) blocks\&.
+
+
+.TP
+tarmode <full|inc|reset|noreset>
+Changes tar's behavior with regard to archive bits\&. In full mode, tar will back up everything regardless of the archive bit setting (this is the default mode)\&. In incremental mode, tar will only back up files with the archive bit set\&. In reset mode, tar will reset the archive bit on all files it backs up (implies read/write share)\&.
+
+
+.SH "NOTES"
+
+.PP
+Some servers are fussy about the case of supplied usernames, passwords, share names (AKA service names) and machine names\&. If you fail to connect try giving all parameters in uppercase\&.
+
+.PP
+It is often necessary to use the -n option when connecting to some types of servers\&. For example OS/2 LanManager insists on a valid NetBIOS name being used, so you need to supply a valid name that would be known to the server\&.
+
+.PP
+smbclient supports long file names where the server supports the LANMAN2 protocol or above\&.
+
+.SH "ENVIRONMENT VARIABLES"
+
+.PP
+The variable \fBUSER\fR may contain the username of the person using the client\&. This information is used only if the protocol level is high enough to support session-level passwords\&.
+
+.PP
+The variable \fBPASSWD\fR may contain the password of the person using the client\&. This information is used only if the protocol level is high enough to support session-level passwords\&.
+
+.PP
+The variable \fBLIBSMB_PROG\fR may contain the path, executed with system(), which the client should connect to instead of connecting to a server\&. This functionality is primarily intended as a development aid, and works best when using a LMHOSTS file
+
+.SH "INSTALLATION"
+
+.PP
+The location of the client program is a matter for individual system administrators\&. The following are thus suggestions only\&.
+
+.PP
+It is recommended that the smbclient software be installed in the \fI/usr/local/samba/bin/\fR or \fI /usr/samba/bin/\fR directory, this directory readable by all, writeable only by root\&. The client program itself should be executable by all\&. The client should \fBNOT\fR be setuid or setgid!
+
+.PP
+The client log files should be put in a directory readable and writeable only by the user\&.
+
+.PP
+To test the client, you will need to know the name of a running SMB/CIFS server\&. It is possible to run \fBsmbd\fR(8) as an ordinary user - running that server as a daemon on a user-accessible port (typically any port number over 1024) would provide a suitable test server\&.
+
+.SH "DIAGNOSTICS"
+
+.PP
+Most diagnostics issued by the client are logged in a specified log file\&. The log file name is specified at compile time, but may be overridden on the command line\&.
+
+.PP
+The number and nature of diagnostics available depends on the debug level used by the client\&. If you have problems, set the debug level to 3 and peruse the log files\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 2\&.2 of the Samba suite\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/smbcontrol.1 b/raw/man1/smbcontrol.1
new file mode 100644
index 0000000..cec003a
--- /dev/null
+++ b/raw/man1/smbcontrol.1
@@ -0,0 +1,221 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBCONTROL" 1 "" "" ""
+.SH NAME
+smbcontrol \- send messages to smbd, nmbd or winbindd processes
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbcontrol\fR [-i] [-s]
+.fi
+
+.nf
+\fBsmbcontrol\fR [destination] [message-type] [parameter]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBsmbcontrol\fR is a very small program, which sends messages to a \fBsmbd\fR(8), a \fBnmbd\fR(8), or a \fBwinbindd\fR(8) daemon running on the system\&.
+
+.SH "OPTIONS"
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-i
+Run interactively\&. Individual commands of the form destination message-type parameters can be entered on STDIN\&. An empty command line or a "q" will quit the program\&.
+
+
+.TP
+destination
+One of \fInmbd\fR, \fIsmbd\fR or a process ID\&.
+
+
+The \fIsmbd\fR destination causes the message to "broadcast" to all smbd daemons\&.
+
+
+The \fInmbd\fR destination causes the message to be sent to the nmbd daemon specified in the \fInmbd\&.pid\fR file\&.
+
+
+If a single process ID is given, the message is sent to only that process\&.
+
+
+.TP
+message-type
+Type of message to send\&. See the section \fBMESSAGE-TYPES\fR for details\&.
+
+
+.TP
+parameters
+any parameters required for the message-type
+
+
+.SH "MESSAGE-TYPES"
+
+.PP
+Available message types are:
+
+.TP
+close-share
+Order smbd to close the client connections to the named share\&. Note that this doesn't affect client connections to any other shares\&. This message-type takes an argument of the share name for which client connections will be closed, or the "*" character which will close all currently open shares\&. This may be useful if you made changes to the access controls on the share\&. This message can only be sent to \fBsmbd\fR\&.
+
+
+.TP
+debug
+Set debug level to the value specified by the parameter\&. This can be sent to any of the destinations\&.
+
+
+.TP
+force-election
+This message causes the \fBnmbd\fR daemon to force a new browse master election\&.
+
+
+.TP
+ping
+Send specified number of "ping" messages and wait for the same number of reply "pong" messages\&. This can be sent to any of the destinations\&.
+
+
+.TP
+profile
+Change profile settings of a daemon, based on the parameter\&. The parameter can be "on" to turn on profile stats collection, "off" to turn off profile stats collection, "count" to enable only collection of count stats (time stats are disabled), and "flush" to zero the current profile stats\&. This can be sent to any smbd or nmbd destinations\&.
+
+
+.TP
+debuglevel
+Request debuglevel of a certain daemon and write it to stdout\&. This can be sent to any of the destinations\&.
+
+
+.TP
+profilelevel
+Request profilelevel of a certain daemon and write it to stdout\&. This can be sent to any smbd or nmbd destinations\&.
+
+
+.TP
+printnotify
+Order smbd to send a printer notify message to any Windows NT clients connected to a printer\&. This message-type takes the following arguments:
+
+
+
+.RS
+
+.TP
+queuepause printername
+Send a queue pause change notify message to the printer specified\&.
+
+
+.TP
+queueresume printername
+Send a queue resume change notify message for the printer specified\&.
+
+
+.TP
+jobpause printername unixjobid
+Send a job pause change notify message for the printer and unix jobid specified\&.
+
+
+.TP
+jobresume printername unixjobid
+Send a job resume change notify message for the printer and unix jobid specified\&.
+
+
+.TP
+jobdelete printername unixjobid
+Send a job delete change notify message for the printer and unix jobid specified\&.
+
+
+.RE
+Note that this message only sends notification that an event has occured\&. It doesn't actually cause the event to happen\&.
+
+
+This message can only be sent to \fBsmbd\fR\&.
+
+
+.TP
+samsync
+Order smbd to synchronise sam database from PDC (being BDC)\&. Can only be sent to \fBsmbd\fR\&.
+
+Not working at the moment
+
+
+.TP
+samrepl
+Send sam replication message, with specified serial\&. Can only be sent to \fBsmbd\fR\&. Should not be used manually\&.
+
+
+.TP
+dmalloc-mark
+Set a mark for dmalloc\&. Can be sent to both smbd and nmbd\&. Only available if samba is built with dmalloc support\&.
+
+
+.TP
+dmalloc-log-changed
+Dump the pointers that have changed since the mark set by dmalloc-mark\&. Can be sent to both smbd and nmbd\&. Only available if samba is built with dmalloc support\&.
+
+
+.TP
+shutdown
+Shut down specified daemon\&. Can be sent to both smbd and nmbd\&.
+
+
+.TP
+pool-usage
+Print a human-readable description of all talloc(pool) memory usage by the specified daemon/process\&. Available for both smbd and nmbd\&.
+
+
+.TP
+drvupgrade
+Force clients of printers using specified driver to update their local version of the driver\&. Can only be sent to smbd\&.
+
+
+.TP
+reload-config
+Force daemon to reload smb\&.conf configuration file\&. Can be sent to \fBsmbd\fR, \fBnmbd\fR, or \fBwinbindd\fR\&.
+
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBnmbd\fR(8) and \fBsmbd\fR(8)\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/smbstatus.1 b/raw/man1/smbstatus.1
new file mode 100644
index 0000000..44f0bae
--- /dev/null
+++ b/raw/man1/smbstatus.1
@@ -0,0 +1,131 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBSTATUS" 1 "" "" ""
+.SH NAME
+smbstatus \- report on current Samba connections
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbstatus\fR [-P] [-b] [-d <debug level>] [-v] [-L] [-B] [-p] [-S] [-s <configuration
+          file>] [-u <username>]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBsmbstatus\fR is a very simple program to list the current Samba connections\&.
+
+.SH "OPTIONS"
+
+.TP
+-P|--profile
+If samba has been compiled with the profiling option, print only the contents of the profiling shared memory area\&.
+
+
+.TP
+-b|--brief
+gives brief output\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR is an integer from 0 to 10\&. The default value if this parameter is not specified is zero\&.
+
+
+The higher this value, the more detail will be logged to the log files about the activities of the server\&. At level 0, only critical errors and serious warnings will be logged\&. Level 1 is a reasonable level for day-to-day running - it generates a small amount of information about operations carried out\&.
+
+
+Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem\&. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic\&.
+
+
+Note that specifying this parameter here will override the \fIlog level\fR parameter in the \fIsmb\&.conf\fR file\&.
+
+
+.TP
+-l|--logfile=logbasename
+File name for log/debug files\&. The extension \fB"\&.client"\fR will be appended\&. The log file is never removed by the client\&.
+
+
+.TP
+-v|--verbose
+gives verbose output\&.
+
+
+.TP
+-L|--locks
+causes smbstatus to only list locks\&.
+
+
+.TP
+-B|--byterange
+causes smbstatus to include byte range locks\&.
+
+
+.TP
+-p|--processes
+print a list of \fBsmbd\fR(8) processes and exit\&. Useful for scripting\&.
+
+
+.TP
+-S|--shares
+causes smbstatus to only list shares\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-u|--user=<username>
+selects information relevant to \fIusername\fR only\&.
+
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbd\fR(8) and \fBsmb.conf\fR(5)\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/smbtar.1 b/raw/man1/smbtar.1
new file mode 100644
index 0000000..00d913b
--- /dev/null
+++ b/raw/man1/smbtar.1
@@ -0,0 +1,148 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBTAR" 1 "" "" ""
+.SH NAME
+smbtar \- shell script for backing up SMB/CIFS shares directly to UNIX tape drives
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbtar\fR [-r] [-i] [-a] [-v] {-s server} [-p password] [-x services] [-X] [-N filename]
+       [-b blocksize] [-d directory] [-l loglevel] [-u user] [-t tape] {filenames}
+      
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBsmbtar\fR is a very small shell script on top of \fBsmbclient\fR(1) which dumps SMB shares directly to tape\&.
+
+.SH "OPTIONS"
+
+.TP
+-s server
+The SMB/CIFS server that the share resides upon\&.
+
+
+.TP
+-x service
+The share name on the server to connect to\&. The default is "backup"\&.
+
+
+.TP
+-X
+Exclude mode\&. Exclude filenames\&.\&.\&. from tar create or restore\&.
+
+
+.TP
+-d directory
+Change to initial \fIdirectory \fR before restoring / backing up files\&.
+
+
+.TP
+-v
+Verbose mode\&.
+
+
+.TP
+-p password
+The password to use to access a share\&. Default: none
+
+
+.TP
+-u user
+The user id to connect as\&. Default: UNIX login name\&.
+
+
+.TP
+-a
+Reset DOS archive bit mode to indicate file has been archived\&.
+
+
+.TP
+-t tape
+Tape device\&. May be regular file or tape device\&. Default: \fI$TAPE\fR environmental variable; if not set, a file called \fItar\&.out \fR\&.
+
+
+.TP
+-b blocksize
+Blocking factor\&. Defaults to 20\&. See \fBtar(1)\fR for a fuller explanation\&.
+
+
+.TP
+-N filename
+Backup only files newer than filename\&. Could be used (for example) on a log file to implement incremental backups\&.
+
+
+.TP
+-i
+Incremental mode; tar files are only backed up if they have the archive bit set\&. The archive bit is reset after each file is read\&.
+
+
+.TP
+-r
+Restore\&. Files are restored to the share from the tar file\&.
+
+
+.TP
+-l log level
+Log (debug) level\&. Corresponds to the \fI-d\fR flag of \fBsmbclient\fR(1)\&.
+
+
+.SH "ENVIRONMENT VARIABLES"
+
+.PP
+The \fI$TAPE\fR variable specifies the default tape device to write to\&. May be overridden with the -t option\&.
+
+.SH "BUGS"
+
+.PP
+The \fBsmbtar\fR script has different options from ordinary tar and from smbclient's tar command\&.
+
+.SH "CAVEATS"
+
+.PP
+Sites that are more careful about security may not like the way the script handles PC passwords\&. Backup and restore work on entire shares; should work on file lists\&. smbtar works best with GNU tar and may not work well with other versions\&.
+
+.SH "DIAGNOSTICS"
+
+.PP
+See the \fBDIAGNOSTICS\fR section for the \fBsmbclient\fR(1) command\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbd\fR(8), \fBsmbclient\fR(1), \fBsmb.conf\fR(5)\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+Ricky Poulten wrote the tar extension and this man page\&. The \fBsmbtar\fR script was heavily rewritten and improved by Martin Kraemer\&. Many thanks to everyone who suggested extensions, improvements, bug fixes, etc\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Ger [...]
+
diff --git a/raw/man1/sort.1 b/raw/man1/sort.1
new file mode 100644
index 0000000..3c46a29
--- /dev/null
+++ b/raw/man1/sort.1
@@ -0,0 +1,114 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH SORT "1" "March 2003" "sort (coreutils) 5.0" "User Commands"
+.SH NAME
+sort \- sort lines of text files
+.SH SYNOPSIS
+.B sort
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write sorted concatenation of all FILE(s) to standard output.
+.PP
+Ordering options:
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.HP
+\fB\-b\fR, \fB\-\-ignore\-leading\-blanks\fR ignore leading blanks
+.TP
+\fB\-d\fR, \fB\-\-dictionary\-order\fR
+consider only blanks and alphanumeric characters
+.TP
+\fB\-f\fR, \fB\-\-ignore\-case\fR
+fold lower case to upper case characters
+.TP
+\fB\-g\fR, \fB\-\-general\-numeric\-sort\fR
+compare according to general numerical value
+.TP
+\fB\-i\fR, \fB\-\-ignore\-nonprinting\fR
+consider only printable characters
+.TP
+\fB\-M\fR, \fB\-\-month\-sort\fR
+compare (unknown) < `JAN' < ... < `DEC'
+.TP
+\fB\-n\fR, \fB\-\-numeric\-sort\fR
+compare according to string numerical value
+.TP
+\fB\-r\fR, \fB\-\-reverse\fR
+reverse the result of comparisons
+.PP
+Other options:
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+check whether input is sorted; do not sort
+.TP
+\fB\-k\fR, \fB\-\-key\fR=\fIPOS1[\fR,POS2]
+start a key at POS1, end it at POS 2 (origin 1)
+.TP
+\fB\-m\fR, \fB\-\-merge\fR
+merge already sorted files; do not sort
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
+write result to FILE instead of standard output
+.TP
+\fB\-s\fR, \fB\-\-stable\fR
+stabilize sort by disabling last-resort comparison
+.TP
+\fB\-S\fR, \fB\-\-buffer\-size\fR=\fISIZE\fR
+use SIZE for main memory buffer
+.HP
+\fB\-t\fR, \fB\-\-field\-separator\fR=\fISEP\fR use SEP instead of non- to whitespace transition
+.TP
+\fB\-T\fR, \fB\-\-temporary\-directory\fR=\fIDIR\fR
+use DIR for temporaries, not $TMPDIR or /tmp
+multiple options specify multiple directories
+.TP
+\fB\-u\fR, \fB\-\-unique\fR
+with \fB\-c\fR: check for strict ordering
+.br
+otherwise: output only the first of an equal run
+.TP
+\fB\-z\fR, \fB\-\-zero\-terminated\fR
+end lines with 0 byte, not newline
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+POS is F[.C][OPTS], where F is the field number and C the character position
+in the field.  OPTS is one or more single-letter ordering options, which
+override global ordering options for that key.  If no key is given, use the
+entire line as the key.
+.PP
+SIZE may be followed by the following multiplicative suffixes:
+% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.
+.PP
+With no FILE, or when FILE is -, read standard input.
+.PP
+*** WARNING ***
+The locale specified by the environment affects sort order.
+Set LC_ALL=C to get the traditional sort order that uses
+native byte values.
+.SH AUTHOR
+Written by Mike Haertel and Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B sort
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B sort
+programs are properly installed at your site, the command
+.IP
+.B info sort
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/source.1 b/raw/man1/source.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/source.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/split.1 b/raw/man1/split.1
new file mode 100644
index 0000000..5317f85
--- /dev/null
+++ b/raw/man1/split.1
@@ -0,0 +1,59 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH SPLIT "1" "October 2003" "split (coreutils) 5.0" FSF
+.SH NAME
+split \- split a file into pieces
+.SH SYNOPSIS
+.B split
+[\fIOPTION\fR] [\fIINPUT \fR[\fIPREFIX\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
+PREFIX is `x'.  With no INPUT, or when INPUT is -, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-suffix\-length\fR=\fIN\fR
+use suffixes of length N (default 2)
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR=\fISIZE\fR
+put SIZE bytes per output file
+.TP
+\fB\-C\fR, \fB\-\-line\-bytes\fR=\fISIZE\fR
+put at most SIZE bytes of lines per output file
+.TP
+\fB\-l\fR, \fB\-\-lines\fR=\fINUMBER\fR
+put NUMBER lines per output file
+.TP
+\fB\-\-verbose\fR
+print a diagnostic to standard error just
+before each output file is opened
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.
+.SH AUTHOR
+Written by Torbjorn Granlund and Richard M. Stallman.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B split
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B split
+programs are properly installed at your site, the command
+.IP
+.B info split
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/ssh.1 b/raw/man1/ssh.1
new file mode 100644
index 0000000..5a5e2d1
--- /dev/null
+++ b/raw/man1/ssh.1
@@ -0,0 +1,991 @@
+.\"  -*- nroff -*-
+.\"
+.\" Author: Tatu Ylonen <ylo at cs.hut.fi>
+.\" Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
+.\"                    All rights reserved
+.\"
+.\" As far as I am concerned, the code I have written for this software
+.\" can be used freely for any purpose.  Any derived versions of this
+.\" software must be clearly marked as such, and if the derived work is
+.\" incompatible with the protocol description in the RFC file, it must be
+.\" called by a name other than "ssh" or "Secure Shell".
+.\"
+.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
+.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
+.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $OpenBSD: ssh.1,v 1.168 2003/03/28 10:11:43 jmc Exp $
+.Dd September 25, 1999
+.Dt SSH 1
+.Os
+.Sh NAME
+.Nm ssh
+.Nd OpenSSH SSH client (remote login program)
+.Sh SYNOPSIS
+.Nm ssh
+.Op Fl l Ar login_name
+.Ar hostname | user at hostname
+.Op Ar command
+.Pp
+.Nm ssh
+.Bk -words
+.Op Fl afgknqstvxACNTX1246
+.Op Fl b Ar bind_address
+.Op Fl c Ar cipher_spec
+.Op Fl e Ar escape_char
+.Op Fl i Ar identity_file
+.Op Fl l Ar login_name
+.Op Fl m Ar mac_spec
+.Op Fl o Ar option
+.Op Fl p Ar port
+.Op Fl F Ar configfile
+.Oo Fl L Xo
+.Sm off
+.Ar port :
+.Ar host :
+.Ar hostport
+.Sm on
+.Xc
+.Oc
+.Ek
+.Bk -words
+.Oo Fl R Xo
+.Sm off
+.Ar port :
+.Ar host :
+.Ar hostport
+.Sm on
+.Xc
+.Oc
+.Op Fl D Ar port
+.Ar hostname | user at hostname
+.Op Ar command
+.Ek
+.Sh DESCRIPTION
+.Nm
+(SSH client) is a program for logging into a remote machine and for
+executing commands on a remote machine.
+It is intended to replace
+rlogin and rsh, and provide secure encrypted communications between
+two untrusted hosts over an insecure network.
+X11 connections and
+arbitrary TCP/IP ports can also be forwarded over the secure channel.
+.Pp
+.Nm
+connects and logs into the specified
+.Ar hostname .
+The user must prove
+his/her identity to the remote machine using one of several methods
+depending on the protocol version used:
+.Pp
+.Ss SSH protocol version 1
+.Pp
+First, if the machine the user logs in from is listed in
+.Pa /etc/hosts.equiv
+or
+.Pa /etc/ssh/shosts.equiv
+on the remote machine, and the user names are
+the same on both sides, the user is immediately permitted to log in.
+Second, if
+.Pa \&.rhosts
+or
+.Pa \&.shosts
+exists in the user's home directory on the
+remote machine and contains a line containing the name of the client
+machine and the name of the user on that machine, the user is
+permitted to log in.
+This form of authentication alone is normally not
+allowed by the server because it is not secure.
+.Pp
+The second authentication method is the
+.Pa rhosts
+or
+.Pa hosts.equiv
+method combined with RSA-based host authentication.
+It means that if the login would be permitted by
+.Pa $HOME/.rhosts ,
+.Pa $HOME/.shosts ,
+.Pa /etc/hosts.equiv ,
+or
+.Pa /etc/ssh/shosts.equiv ,
+and if additionally the server can verify the client's
+host key (see
+.Pa /etc/ssh/ssh_known_hosts
+and
+.Pa $HOME/.ssh/known_hosts
+in the
+.Sx FILES
+section), only then login is permitted.
+This authentication method closes security holes due to IP
+spoofing, DNS spoofing and routing spoofing.
+[Note to the administrator:
+.Pa /etc/hosts.equiv ,
+.Pa $HOME/.rhosts ,
+and the rlogin/rsh protocol in general, are inherently insecure and should be
+disabled if security is desired.]
+.Pp
+As a third authentication method,
+.Nm
+supports RSA based authentication.
+The scheme is based on public-key cryptography: there are cryptosystems
+where encryption and decryption are done using separate keys, and it
+is not possible to derive the decryption key from the encryption key.
+RSA is one such system.
+The idea is that each user creates a public/private
+key pair for authentication purposes.
+The server knows the public key, and only the user knows the private key.
+The file
+.Pa $HOME/.ssh/authorized_keys
+lists the public keys that are permitted for logging
+in.
+When the user logs in, the
+.Nm
+program tells the server which key pair it would like to use for
+authentication.
+The server checks if this key is permitted, and if
+so, sends the user (actually the
+.Nm
+program running on behalf of the user) a challenge, a random number,
+encrypted by the user's public key.
+The challenge can only be
+decrypted using the proper private key.
+The user's client then decrypts the
+challenge using the private key, proving that he/she knows the private
+key but without disclosing it to the server.
+.Pp
+.Nm
+implements the RSA authentication protocol automatically.
+The user creates his/her RSA key pair by running
+.Xr ssh-keygen 1 .
+This stores the private key in
+.Pa $HOME/.ssh/identity
+and the public key in
+.Pa $HOME/.ssh/identity.pub
+in the user's home directory.
+The user should then copy the
+.Pa identity.pub
+to
+.Pa $HOME/.ssh/authorized_keys
+in his/her home directory on the remote machine (the
+.Pa authorized_keys
+file corresponds to the conventional
+.Pa $HOME/.rhosts
+file, and has one key
+per line, though the lines can be very long).
+After this, the user can log in without giving the password.
+RSA authentication is much
+more secure than rhosts authentication.
+.Pp
+The most convenient way to use RSA authentication may be with an
+authentication agent.
+See
+.Xr ssh-agent 1
+for more information.
+.Pp
+If other authentication methods fail,
+.Nm
+prompts the user for a password.
+The password is sent to the remote
+host for checking; however, since all communications are encrypted,
+the password cannot be seen by someone listening on the network.
+.Pp
+.Ss SSH protocol version 2
+.Pp
+When a user connects using protocol version 2
+similar authentication methods are available.
+Using the default values for
+.Cm PreferredAuthentications ,
+the client will try to authenticate first using the hostbased method;
+if this method fails public key authentication is attempted,
+and finally if this method fails keyboard-interactive and
+password authentication are tried.
+.Pp
+The public key method is similar to RSA authentication described
+in the previous section and allows the RSA or DSA algorithm to be used:
+The client uses his private key,
+.Pa $HOME/.ssh/id_dsa
+or
+.Pa $HOME/.ssh/id_rsa ,
+to sign the session identifier and sends the result to the server.
+The server checks whether the matching public key is listed in
+.Pa $HOME/.ssh/authorized_keys
+and grants access if both the key is found and the signature is correct.
+The session identifier is derived from a shared Diffie-Hellman value
+and is only known to the client and the server.
+.Pp
+If public key authentication fails or is not available a password
+can be sent encrypted to the remote host for proving the user's identity.
+.Pp
+Additionally,
+.Nm
+supports hostbased or challenge response authentication.
+.Pp
+Protocol 2 provides additional mechanisms for confidentiality
+(the traffic is encrypted using 3DES, Blowfish, CAST128 or Arcfour)
+and integrity (hmac-md5, hmac-sha1).
+Note that protocol 1 lacks a strong mechanism for ensuring the
+integrity of the connection.
+.Pp
+.Ss Login session and remote execution
+.Pp
+When the user's identity has been accepted by the server, the server
+either executes the given command, or logs into the machine and gives
+the user a normal shell on the remote machine.
+All communication with
+the remote command or shell will be automatically encrypted.
+.Pp
+If a pseudo-terminal has been allocated (normal login session), the
+user may use the escape characters noted below.
+.Pp
+If no pseudo tty has been allocated, the
+session is transparent and can be used to reliably transfer binary
+data.
+On most systems, setting the escape character to
+.Dq none
+will also make the session transparent even if a tty is used.
+.Pp
+The session terminates when the command or shell on the remote
+machine exits and all X11 and TCP/IP connections have been closed.
+The exit status of the remote program is returned as the exit status
+of
+.Nm ssh .
+.Pp
+.Ss Escape Characters
+.Pp
+When a pseudo terminal has been requested, ssh supports a number of functions
+through the use of an escape character.
+.Pp
+A single tilde character can be sent as
+.Ic ~~
+or by following the tilde by a character other than those described below.
+The escape character must always follow a newline to be interpreted as
+special.
+The escape character can be changed in configuration files using the
+.Cm EscapeChar
+configuration directive or on the command line by the
+.Fl e
+option.
+.Pp
+The supported escapes (assuming the default
+.Ql ~ )
+are:
+.Bl -tag -width Ds
+.It Cm ~.
+Disconnect
+.It Cm ~^Z
+Background ssh
+.It Cm ~#
+List forwarded connections
+.It Cm ~&
+Background ssh at logout when waiting for forwarded connection / X11 sessions
+to terminate
+.It Cm ~?
+Display a list of escape characters
+.It Cm ~C
+Open command line (only useful for adding port forwardings using the
+.Fl L
+and
+.Fl R
+options)
+.It Cm ~R
+Request rekeying of the connection (only useful for SSH protocol version 2
+and if the peer supports it)
+.El
+.Pp
+.Ss X11 and TCP forwarding
+.Pp
+If the
+.Cm ForwardX11
+variable is set to
+.Dq yes
+(or, see the description of the
+.Fl X
+and
+.Fl x
+options described later)
+and the user is using X11 (the
+.Ev DISPLAY
+environment variable is set), the connection to the X11 display is
+automatically forwarded to the remote side in such a way that any X11
+programs started from the shell (or command) will go through the
+encrypted channel, and the connection to the real X server will be made
+from the local machine.
+The user should not manually set
+.Ev DISPLAY .
+Forwarding of X11 connections can be
+configured on the command line or in configuration files.
+.Pp
+The
+.Ev DISPLAY
+value set by
+.Nm
+will point to the server machine, but with a display number greater
+than zero.
+This is normal, and happens because
+.Nm
+creates a
+.Dq proxy
+X server on the server machine for forwarding the
+connections over the encrypted channel.
+.Pp
+.Nm
+will also automatically set up Xauthority data on the server machine.
+For this purpose, it will generate a random authorization cookie,
+store it in Xauthority on the server, and verify that any forwarded
+connections carry this cookie and replace it by the real cookie when
+the connection is opened.
+The real authentication cookie is never
+sent to the server machine (and no cookies are sent in the plain).
+.Pp
+If the
+.Cm ForwardAgent
+variable is set to
+.Dq yes
+(or, see the description of the
+.Fl A
+and
+.Fl a
+options described later) and
+the user is using an authentication agent, the connection to the agent
+is automatically forwarded to the remote side.
+.Pp
+Forwarding of arbitrary TCP/IP connections over the secure channel can
+be specified either on the command line or in a configuration file.
+One possible application of TCP/IP forwarding is a secure connection to an
+electronic purse; another is going through firewalls.
+.Pp
+.Ss Server authentication
+.Pp
+.Nm
+automatically maintains and checks a database containing
+identifications for all hosts it has ever been used with.
+Host keys are stored in
+.Pa $HOME/.ssh/known_hosts
+in the user's home directory.
+Additionally, the file
+.Pa /etc/ssh/ssh_known_hosts
+is automatically checked for known hosts.
+Any new hosts are automatically added to the user's file.
+If a host's identification
+ever changes,
+.Nm
+warns about this and disables password authentication to prevent a
+trojan horse from getting the user's password.
+Another purpose of
+this mechanism is to prevent man-in-the-middle attacks which could
+otherwise be used to circumvent the encryption.
+The
+.Cm StrictHostKeyChecking
+option can be used to prevent logins to machines whose
+host key is not known or has changed.
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl a
+Disables forwarding of the authentication agent connection.
+.It Fl A
+Enables forwarding of the authentication agent connection.
+This can also be specified on a per-host basis in a configuration file.
+.Pp
+Agent forwarding should be enabled with caution.
+Users with the ability to bypass file permissions on the remote host
+(for the agent's Unix-domain socket)
+can access the local agent through the forwarded connection.
+An attacker cannot obtain key material from the agent,
+however they can perform operations on the keys that enable them to
+authenticate using the identities loaded into the agent.
+.It Fl b Ar bind_address
+Specify the interface to transmit from on machines with multiple
+interfaces or aliased addresses.
+.It Fl c Ar blowfish|3des|des
+Selects the cipher to use for encrypting the session.
+.Ar 3des
+is used by default.
+It is believed to be secure.
+.Ar 3des
+(triple-des) is an encrypt-decrypt-encrypt triple with three different keys.
+.Ar blowfish
+is a fast block cipher, it appears very secure and is much faster than
+.Ar 3des .
+.Ar des
+is only supported in the
+.Nm
+client for interoperability with legacy protocol 1 implementations
+that do not support the
+.Ar 3des
+cipher.
+Its use is strongly discouraged due to cryptographic weaknesses.
+.It Fl c Ar cipher_spec
+Additionally, for protocol version 2 a comma-separated list of ciphers can
+be specified in order of preference.
+See
+.Cm Ciphers
+for more information.
+.It Fl e Ar ch|^ch|none
+Sets the escape character for sessions with a pty (default:
+.Ql ~ ) .
+The escape character is only recognized at the beginning of a line.
+The escape character followed by a dot
+.Pq Ql \&.
+closes the connection, followed
+by control-Z suspends the connection, and followed by itself sends the
+escape character once.
+Setting the character to
+.Dq none
+disables any escapes and makes the session fully transparent.
+.It Fl f
+Requests
+.Nm
+to go to background just before command execution.
+This is useful if
+.Nm
+is going to ask for passwords or passphrases, but the user
+wants it in the background.
+This implies
+.Fl n .
+The recommended way to start X11 programs at a remote site is with
+something like
+.Ic ssh -f host xterm .
+.It Fl g
+Allows remote hosts to connect to local forwarded ports.
+.It Fl i Ar identity_file
+Selects a file from which the identity (private key) for
+RSA or DSA authentication is read.
+The default is
+.Pa $HOME/.ssh/identity
+for protocol version 1, and
+.Pa $HOME/.ssh/id_rsa
+and
+.Pa $HOME/.ssh/id_dsa
+for protocol version 2.
+Identity files may also be specified on
+a per-host basis in the configuration file.
+It is possible to have multiple
+.Fl i
+options (and multiple identities specified in
+configuration files).
+.It Fl I Ar smartcard_device
+Specifies which smartcard device to use. The argument is
+the device
+.Nm
+should use to communicate with a smartcard used for storing the user's
+private RSA key.
+.It Fl k
+Disables forwarding of Kerberos tickets and AFS tokens.
+This may also be specified on a per-host basis in the configuration file.
+.It Fl l Ar login_name
+Specifies the user to log in as on the remote machine.
+This also may be specified on a per-host basis in the configuration file.
+.It Fl m Ar mac_spec
+Additionally, for protocol version 2 a comma-separated list of MAC
+(message authentication code) algorithms can
+be specified in order of preference.
+See the
+.Cm MACs
+keyword for more information.
+.It Fl n
+Redirects stdin from
+.Pa /dev/null
+(actually, prevents reading from stdin).
+This must be used when
+.Nm
+is run in the background.
+A common trick is to use this to run X11 programs on a remote machine.
+For example,
+.Ic ssh -n shadows.cs.hut.fi emacs &
+will start an emacs on shadows.cs.hut.fi, and the X11
+connection will be automatically forwarded over an encrypted channel.
+The
+.Nm
+program will be put in the background.
+(This does not work if
+.Nm
+needs to ask for a password or passphrase; see also the
+.Fl f
+option.)
+.It Fl N
+Do not execute a remote command.
+This is useful for just forwarding ports
+(protocol version 2 only).
+.It Fl o Ar option
+Can be used to give options in the format used in the configuration file.
+This is useful for specifying options for which there is no separate
+command-line flag.
+.It Fl p Ar port
+Port to connect to on the remote host.
+This can be specified on a
+per-host basis in the configuration file.
+.It Fl q
+Quiet mode.
+Causes all warning and diagnostic messages to be suppressed.
+.It Fl s
+May be used to request invocation of a subsystem on the remote system. Subsystems are a feature of the SSH2 protocol which facilitate the use
+of SSH as a secure transport for other applications (eg. sftp). The
+subsystem is specified as the remote command.
+.It Fl t
+Force pseudo-tty allocation.
+This can be used to execute arbitrary
+screen-based programs on a remote machine, which can be very useful,
+e.g., when implementing menu services.
+Multiple
+.Fl t
+options force tty allocation, even if
+.Nm
+has no local tty.
+.It Fl T
+Disable pseudo-tty allocation.
+.It Fl v
+Verbose mode.
+Causes
+.Nm
+to print debugging messages about its progress.
+This is helpful in
+debugging connection, authentication, and configuration problems.
+Multiple
+.Fl v
+options increases the verbosity.
+Maximum is 3.
+.It Fl x
+Disables X11 forwarding.
+.It Fl X
+Enables X11 forwarding.
+This can also be specified on a per-host basis in a configuration file.
+.Pp
+X11 forwarding should be enabled with caution.
+Users with the ability to bypass file permissions on the remote host
+(for the user's X authorization database)
+can access the local X11 display through the forwarded connection.
+An attacker may then be able to perform activities such as keystroke monitoring.
+.It Fl C
+Requests compression of all data (including stdin, stdout, stderr, and
+data for forwarded X11 and TCP/IP connections).
+The compression algorithm is the same used by
+.Xr gzip 1 ,
+and the
+.Dq level
+can be controlled by the
+.Cm CompressionLevel
+option for protocol version 1.
+Compression is desirable on modem lines and other
+slow connections, but will only slow down things on fast networks.
+The default value can be set on a host-by-host basis in the
+configuration files; see the
+.Cm Compression
+option.
+.It Fl F Ar configfile
+Specifies an alternative per-user configuration file.
+If a configuration file is given on the command line,
+the system-wide configuration file
+.Pq Pa /etc/ssh/ssh_config
+will be ignored.
+The default for the per-user configuration file is
+.Pa $HOME/.ssh/config .
+.It Fl L Ar port:host:hostport
+Specifies that the given port on the local (client) host is to be
+forwarded to the given host and port on the remote side.
+This works by allocating a socket to listen to
+.Ar port
+on the local side, and whenever a connection is made to this port, the
+connection is forwarded over the secure channel, and a connection is
+made to
+.Ar host
+port
+.Ar hostport
+from the remote machine.
+Port forwardings can also be specified in the configuration file.
+Only root can forward privileged ports.
+IPv6 addresses can be specified with an alternative syntax:
+.Ar port/host/hostport
+.It Fl R Ar port:host:hostport
+Specifies that the given port on the remote (server) host is to be
+forwarded to the given host and port on the local side.
+This works by allocating a socket to listen to
+.Ar port
+on the remote side, and whenever a connection is made to this port, the
+connection is forwarded over the secure channel, and a connection is
+made to
+.Ar host
+port
+.Ar hostport
+from the local machine.
+Port forwardings can also be specified in the configuration file.
+Privileged ports can be forwarded only when
+logging in as root on the remote machine.
+IPv6 addresses can be specified with an alternative syntax:
+.Ar port/host/hostport
+.It Fl D Ar port
+Specifies a local
+.Dq dynamic
+application-level port forwarding.
+This works by allocating a socket to listen to
+.Ar port
+on the local side, and whenever a connection is made to this port, the
+connection is forwarded over the secure channel, and the application
+protocol is then used to determine where to connect to from the
+remote machine.
+Currently the SOCKS4 protocol is supported, and
+.Nm
+will act as a SOCKS4 server.
+Only root can forward privileged ports.
+Dynamic port forwardings can also be specified in the configuration file.
+.It Fl 1
+Forces
+.Nm
+to try protocol version 1 only.
+.It Fl 2
+Forces
+.Nm
+to try protocol version 2 only.
+.It Fl 4
+Forces
+.Nm
+to use IPv4 addresses only.
+.It Fl 6
+Forces
+.Nm
+to use IPv6 addresses only.
+.El
+.Sh CONFIGURATION FILES
+.Nm
+may additionally obtain configuration data from
+a per-user configuration file and a system-wide configuration file.
+The file format and configuration options are described in
+.Xr ssh_config 5 .
+.Sh ENVIRONMENT
+.Nm
+will normally set the following environment variables:
+.Bl -tag -width Ds
+.It Ev DISPLAY
+The
+.Ev DISPLAY
+variable indicates the location of the X11 server.
+It is automatically set by
+.Nm
+to point to a value of the form
+.Dq hostname:n
+where hostname indicates
+the host where the shell runs, and n is an integer >= 1.
+.Nm
+uses this special value to forward X11 connections over the secure
+channel.
+The user should normally not set
+.Ev DISPLAY
+explicitly, as that
+will render the X11 connection insecure (and will require the user to
+manually copy any required authorization cookies).
+.It Ev HOME
+Set to the path of the user's home directory.
+.It Ev LOGNAME
+Synonym for
+.Ev USER ;
+set for compatibility with systems that use this variable.
+.It Ev MAIL
+Set to the path of the user's mailbox.
+.It Ev PATH
+Set to the default
+.Ev PATH ,
+as specified when compiling
+.Nm ssh .
+.It Ev SSH_ASKPASS
+If
+.Nm
+needs a passphrase, it will read the passphrase from the current
+terminal if it was run from a terminal.
+If
+.Nm
+does not have a terminal associated with it but
+.Ev DISPLAY
+and
+.Ev SSH_ASKPASS
+are set, it will execute the program specified by
+.Ev SSH_ASKPASS
+and open an X11 window to read the passphrase.
+This is particularly useful when calling
+.Nm
+from a
+.Pa .Xsession
+or related script.
+(Note that on some machines it
+may be necessary to redirect the input from
+.Pa /dev/null
+to make this work.)
+.It Ev SSH_AUTH_SOCK
+Identifies the path of a unix-domain socket used to communicate with the
+agent.
+.It Ev SSH_CONNECTION
+Identifies the client and server ends of the connection.
+The variable contains
+four space-separated values: client ip-address, client port number,
+server ip-address and server port number.
+.It Ev SSH_ORIGINAL_COMMAND
+The variable contains the original command line if a forced command
+is executed.
+It can be used to extract the original arguments.
+.It Ev SSH_TTY
+This is set to the name of the tty (path to the device) associated
+with the current shell or command.
+If the current session has no tty,
+this variable is not set.
+.It Ev TZ
+The timezone variable is set to indicate the present timezone if it
+was set when the daemon was started (i.e., the daemon passes the value
+on to new connections).
+.It Ev USER
+Set to the name of the user logging in.
+.El
+.Pp
+Additionally,
+.Nm
+reads
+.Pa $HOME/.ssh/environment ,
+and adds lines of the format
+.Dq VARNAME=value
+to the environment if the file exists and if users are allowed to
+change their environment.
+See the
+.Cm PermitUserEnvironment
+option in
+.Xr sshd_config 5 .
+.Sh FILES
+.Bl -tag -width Ds
+.It Pa $HOME/.ssh/known_hosts
+Records host keys for all hosts the user has logged into that are not
+in
+.Pa /etc/ssh/ssh_known_hosts .
+See
+.Xr sshd 8 .
+.It Pa $HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa
+Contains the authentication identity of the user.
+They are for protocol 1 RSA, protocol 2 DSA, and protocol 2 RSA, respectively.
+These files
+contain sensitive data and should be readable by the user but not
+accessible by others (read/write/execute).
+Note that
+.Nm
+ignores a private key file if it is accessible by others.
+It is possible to specify a passphrase when
+generating the key; the passphrase will be used to encrypt the
+sensitive part of this file using 3DES.
+.It Pa $HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub
+Contains the public key for authentication (public part of the
+identity file in human-readable form).
+The contents of the
+.Pa $HOME/.ssh/identity.pub
+file should be added to
+.Pa $HOME/.ssh/authorized_keys
+on all machines
+where the user wishes to log in using protocol version 1 RSA authentication.
+The contents of the
+.Pa $HOME/.ssh/id_dsa.pub
+and
+.Pa $HOME/.ssh/id_rsa.pub
+file should be added to
+.Pa $HOME/.ssh/authorized_keys
+on all machines
+where the user wishes to log in using protocol version 2 DSA/RSA authentication.
+These files are not
+sensitive and can (but need not) be readable by anyone.
+These files are
+never used automatically and are not necessary; they are only provided for
+the convenience of the user.
+.It Pa $HOME/.ssh/config
+This is the per-user configuration file.
+The file format and configuration options are described in
+.Xr ssh_config 5 .
+.It Pa $HOME/.ssh/authorized_keys
+Lists the public keys (RSA/DSA) that can be used for logging in as this user.
+The format of this file is described in the
+.Xr sshd 8
+manual page.
+In the simplest form the format is the same as the .pub
+identity files.
+This file is not highly sensitive, but the recommended
+permissions are read/write for the user, and not accessible by others.
+.It Pa /etc/ssh/ssh_known_hosts
+Systemwide list of known host keys.
+This file should be prepared by the
+system administrator to contain the public host keys of all machines in the
+organization.
+This file should be world-readable.
+This file contains
+public keys, one per line, in the following format (fields separated
+by spaces): system name, public key and optional comment field.
+When different names are used
+for the same machine, all such names should be listed, separated by
+commas.
+The format is described on the
+.Xr sshd 8
+manual page.
+.Pp
+The canonical system name (as returned by name servers) is used by
+.Xr sshd 8
+to verify the client host when logging in; other names are needed because
+.Nm
+does not convert the user-supplied name to a canonical name before
+checking the key, because someone with access to the name servers
+would then be able to fool host authentication.
+.It Pa /etc/ssh/ssh_config
+Systemwide configuration file.
+The file format and configuration options are described in
+.Xr ssh_config 5 .
+.It Pa /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key
+These three files contain the private parts of the host keys
+and are used for
+.Cm RhostsRSAAuthentication
+and
+.Cm HostbasedAuthentication .
+If the protocol version 1
+.Cm RhostsRSAAuthentication
+method is used,
+.Nm
+must be setuid root, since the host key is readable only by root.
+For protocol version 2,
+.Nm
+uses
+.Xr ssh-keysign 8
+to access the host keys for
+.Cm HostbasedAuthentication .
+This eliminates the requirement that
+.Nm
+be setuid root when that authentication method is used.
+By default
+.Nm
+is not setuid root.
+.It Pa $HOME/.rhosts
+This file is used in
+.Pa \&.rhosts
+authentication to list the
+host/user pairs that are permitted to log in.
+(Note that this file is
+also used by rlogin and rsh, which makes using this file insecure.)
+Each line of the file contains a host name (in the canonical form
+returned by name servers), and then a user name on that host,
+separated by a space.
+On some machines this file may need to be
+world-readable if the user's home directory is on a NFS partition,
+because
+.Xr sshd 8
+reads it as root.
+Additionally, this file must be owned by the user,
+and must not have write permissions for anyone else.
+The recommended
+permission for most machines is read/write for the user, and not
+accessible by others.
+.Pp
+Note that by default
+.Xr sshd 8
+will be installed so that it requires successful RSA host
+authentication before permitting \s+2.\s0rhosts authentication.
+If the server machine does not have the client's host key in
+.Pa /etc/ssh/ssh_known_hosts ,
+it can be stored in
+.Pa $HOME/.ssh/known_hosts .
+The easiest way to do this is to
+connect back to the client from the server machine using ssh; this
+will automatically add the host key to
+.Pa $HOME/.ssh/known_hosts .
+.It Pa $HOME/.shosts
+This file is used exactly the same way as
+.Pa \&.rhosts .
+The purpose for
+having this file is to be able to use rhosts authentication with
+.Nm
+without permitting login with
+.Nm rlogin
+or
+.Xr rsh 1 .
+.It Pa /etc/hosts.equiv
+This file is used during
+.Pa \&.rhosts authentication.
+It contains
+canonical hosts names, one per line (the full format is described on
+the
+.Xr sshd 8
+manual page).
+If the client host is found in this file, login is
+automatically permitted provided client and server user names are the
+same.
+Additionally, successful RSA host authentication is normally
+required.
+This file should only be writable by root.
+.It Pa /etc/ssh/shosts.equiv
+This file is processed exactly as
+.Pa /etc/hosts.equiv .
+This file may be useful to permit logins using
+.Nm
+but not using rsh/rlogin.
+.It Pa /etc/ssh/sshrc
+Commands in this file are executed by
+.Nm
+when the user logs in just before the user's shell (or command) is started.
+See the
+.Xr sshd 8
+manual page for more information.
+.It Pa $HOME/.ssh/rc
+Commands in this file are executed by
+.Nm
+when the user logs in just before the user's shell (or command) is
+started.
+See the
+.Xr sshd 8
+manual page for more information.
+.It Pa $HOME/.ssh/environment
+Contains additional definitions for environment variables, see section
+.Sx ENVIRONMENT
+above.
+.El
+.Sh DIAGNOSTICS
+.Nm
+exits with the exit status of the remote command or with 255
+if an error occurred.
+.Sh AUTHORS
+OpenSSH is a derivative of the original and free
+ssh 1.2.12 release by Tatu Ylonen.
+Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
+Theo de Raadt and Dug Song
+removed many bugs, re-added newer features and
+created OpenSSH.
+Markus Friedl contributed the support for SSH
+protocol versions 1.5 and 2.0.
+.Sh SEE ALSO
+.Xr rsh 1 ,
+.Xr scp 1 ,
+.Xr sftp 1 ,
+.Xr ssh-add 1 ,
+.Xr ssh-agent 1 ,
+.Xr ssh-keygen 1 ,
+.Xr telnet 1 ,
+.Xr ssh_config 5 ,
+.Xr ssh-keysign 8 ,
+.Xr sshd 8
+.Rs
+.%A T. Ylonen
+.%A T. Kivinen
+.%A M. Saarinen
+.%A T. Rinne
+.%A S. Lehtinen
+.%T "SSH Protocol Architecture"
+.%N draft-ietf-secsh-architecture-12.txt
+.%D January 2002
+.%O work in progress material
+.Re
diff --git a/raw/man1/stat.1 b/raw/man1/stat.1
new file mode 100644
index 0000000..0ca475a
--- /dev/null
+++ b/raw/man1/stat.1
@@ -0,0 +1,165 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH STAT "1" "October 2003" "stat (coreutils) 5.0" FSF
+.SH NAME
+stat \- display file or filesystem status
+.SH SYNOPSIS
+.B stat
+[\fIOPTION\fR] \fIFILE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Display file or filesystem status.
+.TP
+\fB\-f\fR, \fB\-\-filesystem\fR
+display filesystem status instead of file status
+.TP
+\fB\-c\fR
+\fB\-\-format\fR=\fIFORMAT\fR   use the specified FORMAT instead of the default
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+follow links
+.TP
+\fB\-t\fR, \fB\-\-terse\fR
+print the information in terse form
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The valid format sequences for files (without \fB\-\-filesystem\fR):
+.TP
+%A
+Access rights in human readable form
+.TP
+%a
+Access rights in octal
+.TP
+%B
+The size in bytes of each block reported by `%b'
+.TP
+%b
+Number of blocks allocated (see %B)
+.TP
+%D
+Device number in hex
+.TP
+%d
+Device number in decimal
+.TP
+%F
+File type
+.TP
+%f
+Raw mode in hex
+.TP
+%G
+Group name of owner
+.TP
+%g
+Group ID of owner
+.TP
+%h
+Number of hard links
+.TP
+%i
+Inode number
+.TP
+%N
+Quoted File name with dereference if symbolic link
+.TP
+%n
+File name
+.TP
+%o
+IO block size
+.TP
+%s
+Total size, in bytes
+.TP
+%T
+Minor device type in hex
+.TP
+%t
+Major device type in hex
+.TP
+%U
+User name of owner
+.TP
+%u
+User ID of owner
+.TP
+%X
+Time of last access as seconds since Epoch
+.TP
+%x
+Time of last access
+.TP
+%Y
+Time of last modification as seconds since Epoch
+.TP
+%y
+Time of last modification
+.TP
+%Z
+Time of last change as seconds since Epoch
+.TP
+%z
+Time of last change
+.PP
+Valid format sequences for file systems:
+.TP
+%a
+Free blocks available to non-superuser
+.TP
+%b
+Total data blocks in file system
+.TP
+%c
+Total file nodes in file system
+.TP
+%d
+Free file nodes in file system
+.TP
+%f
+Free blocks in file system
+.TP
+%i
+File System id in hex
+.TP
+%l
+Maximum length of filenames
+.TP
+%n
+File name
+.TP
+%s
+Optimal transfer block size
+.TP
+%T
+Type in human readable form
+.TP
+%t
+Type in hex
+.SH AUTHOR
+Written by Michael Meskes.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B stat
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B stat
+programs are properly installed at your site, the command
+.IP
+.B info stat
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/strings.1 b/raw/man1/strings.1
new file mode 100644
index 0000000..e62e91e
--- /dev/null
+++ b/raw/man1/strings.1
@@ -0,0 +1,236 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "STRINGS 1"
+.TH STRINGS 1 "2003-09-30" "binutils-2.14.90.0.6" "GNU Development Tools"
+.SH "NAME"
+strings \- print the strings of printable characters in files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+strings [\fB\-afov\fR] [\fB\-\fR\fImin-len\fR]
+        [\fB\-n\fR \fImin-len\fR] [\fB\-\-bytes=\fR\fImin-len\fR]
+        [\fB\-t\fR \fIradix\fR] [\fB\-\-radix=\fR\fIradix\fR]
+        [\fB\-e\fR \fIencoding\fR] [\fB\-\-encoding=\fR\fIencoding\fR]
+        [\fB\-\fR] [\fB\-\-all\fR] [\fB\-\-print\-file\-name\fR]
+        [\fB\-\-target=\fR\fIbfdname\fR]
+        [\fB\-\-help\fR] [\fB\-\-version\fR] \fIfile\fR...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+For each \fIfile\fR given, \s-1GNU\s0 \fBstrings\fR prints the printable
+character sequences that are at least 4 characters long (or the number
+given with the options below) and are followed by an unprintable
+character.  By default, it only prints the strings from the initialized
+and loaded sections of object files; for other types of files, it prints
+the strings from the whole file.
+.PP
+\&\fBstrings\fR is mainly useful for determining the contents of non-text
+files.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-all\fR" 4
+.IX Item "--all"
+.IP "\fB\-\fR" 4
+.IX Item "-"
+.PD
+Do not scan only the initialized and loaded sections of object files;
+scan the whole files.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+.PD 0
+.IP "\fB\-\-print\-file\-name\fR" 4
+.IX Item "--print-file-name"
+.PD
+Print the name of the file before each string.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print a summary of the program usage on the standard output and exit.
+.IP "\fB\-\fR\fImin-len\fR" 4
+.IX Item "-min-len"
+.PD 0
+.IP "\fB\-n\fR \fImin-len\fR" 4
+.IX Item "-n min-len"
+.IP "\fB\-\-bytes=\fR\fImin-len\fR" 4
+.IX Item "--bytes=min-len"
+.PD
+Print sequences of characters that are at least \fImin-len\fR characters
+long, instead of the default 4.
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+Like \fB\-t o\fR.  Some other versions of \fBstrings\fR have \fB\-o\fR
+act like \fB\-t d\fR instead.  Since we can not be compatible with both
+ways, we simply chose one.
+.IP "\fB\-t\fR \fIradix\fR" 4
+.IX Item "-t radix"
+.PD 0
+.IP "\fB\-\-radix=\fR\fIradix\fR" 4
+.IX Item "--radix=radix"
+.PD
+Print the offset within the file before each string.  The single
+character argument specifies the radix of the offset\-\-\-\fBo\fR for
+octal, \fBx\fR for hexadecimal, or \fBd\fR for decimal.
+.IP "\fB\-e\fR \fIencoding\fR" 4
+.IX Item "-e encoding"
+.PD 0
+.IP "\fB\-\-encoding=\fR\fIencoding\fR" 4
+.IX Item "--encoding=encoding"
+.PD
+Select the character encoding of the strings that are to be found.
+Possible values for \fIencoding\fR are: \fBs\fR = single\-7\-bit\-byte
+characters (\s-1ASCII\s0, \s-1ISO\s0 8859, etc., default), \fBS\fR =
+single\-8\-bit\-byte characters, \fBb\fR = 16\-bit bigendian, \fBl\fR =
+16\-bit littleendian, \fBB\fR = 32\-bit bigendian, \fBL\fR = 32\-bit
+littleendian. Useful for finding wide character strings.
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+Specify an object code format other than your system's default format.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Print the program version number on the standard output and exit.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjdump\fR\|(1), \fIranlib\fR\|(1), \fIreadelf\fR\|(1)
+and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
+2001, 2002, 2003 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, with no Front-Cover Texts, and with no
+Back-Cover Texts.  A copy of the license is included in the
+section entitled ``\s-1GNU\s0 Free Documentation License''.
diff --git a/raw/man1/stty.1 b/raw/man1/stty.1
new file mode 100644
index 0000000..5c017d0
--- /dev/null
+++ b/raw/man1/stty.1
@@ -0,0 +1,401 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH STTY "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+stty \- change and print terminal line settings
+.SH SYNOPSIS
+.B stty
+[\fI-F DEVICE\fR] [\fI--file=DEVICE\fR] [\fISETTING\fR]...
+.br
+.B stty
+[\fI-F DEVICE\fR] [\fI--file=DEVICE\fR] [\fI-a|--all\fR]
+.br
+.B stty
+[\fI-F DEVICE\fR] [\fI--file=DEVICE\fR] [\fI-g|--save\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or change terminal characteristics.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+print all current settings in human-readable form
+.TP
+\fB\-g\fR, \fB\-\-save\fR
+print all current settings in a stty-readable form
+.TP
+\fB\-F\fR, \fB\-\-file\fR=\fIDEVICE\fR
+open and use the specified DEVICE instead of stdin
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Optional - before SETTING indicates negation.  An * marks non-POSIX
+settings.  The underlying system defines which settings are available.
+.SS "Special characters:"
+.TP
+* dsusp CHAR
+CHAR will send a terminal stop signal once input flushed
+.TP
+eof CHAR
+CHAR will send an end of file (terminate the input)
+.TP
+eol CHAR
+CHAR will end the line
+.TP
+* eol2 CHAR
+alternate CHAR for ending the line
+.TP
+erase CHAR
+CHAR will erase the last character typed
+.TP
+intr CHAR
+CHAR will send an interrupt signal
+.TP
+kill CHAR
+CHAR will erase the current line
+.TP
+* lnext CHAR
+CHAR will enter the next character quoted
+.TP
+quit CHAR
+CHAR will send a quit signal
+.TP
+* rprnt CHAR
+CHAR will redraw the current line
+.TP
+start CHAR
+CHAR will restart the output after stopping it
+.TP
+stop CHAR
+CHAR will stop the output
+.TP
+susp CHAR
+CHAR will send a terminal stop signal
+.TP
+* swtch CHAR
+CHAR will switch to a different shell layer
+.TP
+* werase CHAR
+CHAR will erase the last word typed
+.SS "Special settings:"
+.TP
+N
+set the input and output speeds to N bauds
+.TP
+* cols N
+tell the kernel that the terminal has N columns
+.TP
+* columns N
+same as cols N
+.TP
+ispeed N
+set the input speed to N
+.TP
+* line N
+use line discipline N
+.TP
+min N
+with \fB\-icanon\fR, set N characters minimum for a completed read
+.TP
+ospeed N
+set the output speed to N
+.TP
+* rows N
+tell the kernel that the terminal has N rows
+.TP
+* size
+print the number of rows and columns according to the kernel
+.TP
+speed
+print the terminal speed
+.TP
+time N
+with \fB\-icanon\fR, set read timeout of N tenths of a second
+.SS "Control settings:"
+.TP
+[-]clocal
+disable modem control signals
+.TP
+[-]cread
+allow input to be received
+.TP
+* [-]crtscts
+enable RTS/CTS handshaking
+.TP
+csN
+set character size to N bits, N in [5..8]
+.TP
+[-]cstopb
+use two stop bits per character (one with `-')
+.TP
+[-]hup
+send a hangup signal when the last process closes the tty
+.TP
+[-]hupcl
+same as [-]hup
+.TP
+[-]parenb
+generate parity bit in output and expect parity bit in input
+.TP
+[-]parodd
+set odd parity (even with `-')
+.SS "Input settings:"
+.TP
+[-]brkint
+breaks cause an interrupt signal
+.TP
+[-]icrnl
+translate carriage return to newline
+.TP
+[-]ignbrk
+ignore break characters
+.TP
+[-]igncr
+ignore carriage return
+.TP
+[-]ignpar
+ignore characters with parity errors
+.TP
+* [-]imaxbel
+beep and do not flush a full input buffer on a character
+.TP
+[-]inlcr
+translate newline to carriage return
+.TP
+[-]inpck
+enable input parity checking
+.TP
+[-]istrip
+clear high (8th) bit of input characters
+.TP
+* [-]iuclc
+translate uppercase characters to lowercase
+.TP
+* [-]ixany
+let any character restart output, not only start character
+.TP
+[-]ixoff
+enable sending of start/stop characters
+.TP
+[-]ixon
+enable XON/XOFF flow control
+.TP
+[-]parmrk
+mark parity errors (with a 255-0-character sequence)
+.TP
+[-]tandem
+same as [-]ixoff
+.SS "Output settings:"
+.TP
+* bsN
+backspace delay style, N in [0..1]
+.TP
+* crN
+carriage return delay style, N in [0..3]
+.TP
+* ffN
+form feed delay style, N in [0..1]
+.TP
+* nlN
+newline delay style, N in [0..1]
+.TP
+* [-]ocrnl
+translate carriage return to newline
+.TP
+* [-]ofdel
+use delete characters for fill instead of null characters
+.TP
+* [-]ofill
+use fill (padding) characters instead of timing for delays
+.TP
+* [-]olcuc
+translate lowercase characters to uppercase
+.TP
+* [-]onlcr
+translate newline to carriage return-newline
+.TP
+* [-]onlret
+newline performs a carriage return
+.TP
+* [-]onocr
+do not print carriage returns in the first column
+.TP
+[-]opost
+postprocess output
+.TP
+* tabN
+horizontal tab delay style, N in [0..3]
+.TP
+* tabs
+same as tab0
+.TP
+* \fB\-tabs\fR
+same as tab3
+.TP
+* vtN
+vertical tab delay style, N in [0..1]
+.SS "Local settings:"
+.TP
+[-]crterase
+echo erase characters as backspace-space-backspace
+.TP
+* crtkill
+kill all line by obeying the echoprt and echoe settings
+.TP
+* \fB\-crtkill\fR
+kill all line by obeying the echoctl and echok settings
+.TP
+* [-]ctlecho
+echo control characters in hat notation (`^c')
+.TP
+[-]echo
+echo input characters
+.TP
+* [-]echoctl
+same as [-]ctlecho
+.TP
+[-]echoe
+same as [-]crterase
+.TP
+[-]echok
+echo a newline after a kill character
+.TP
+* [-]echoke
+same as [-]crtkill
+.TP
+[-]echonl
+echo newline even if not echoing other characters
+.TP
+* [-]echoprt
+echo erased characters backward, between `\e' and '/'
+.TP
+[-]icanon
+enable erase, kill, werase, and rprnt special characters
+.TP
+[-]iexten
+enable non-POSIX special characters
+.TP
+[-]isig
+enable interrupt, quit, and suspend special characters
+.TP
+[-]noflsh
+disable flushing after interrupt and quit special characters
+.TP
+* [-]prterase
+same as [-]echoprt
+.TP
+* [-]tostop
+stop background jobs that try to write to the terminal
+.TP
+* [-]xcase
+with icanon, escape with `\e' for uppercase characters
+.SS "Combination settings:"
+.TP
+* [-]LCASE
+same as [-]lcase
+.TP
+cbreak
+same as \fB\-icanon\fR
+.TP
+\fB\-cbreak\fR
+same as icanon
+.TP
+cooked
+same as brkint ignpar istrip icrnl ixon opost isig
+icanon, eof and eol characters to their default values
+.TP
+\fB\-cooked\fR
+same as raw
+.TP
+crt
+same as echoe echoctl echoke
+.TP
+dec
+same as echoe echoctl echoke \fB\-ixany\fR intr ^c erase 0177
+kill ^u
+.TP
+* [-]decctlq
+same as [-]ixany
+.TP
+ek
+erase and kill characters to their default values
+.TP
+evenp
+same as parenb \fB\-parodd\fR cs7
+.TP
+\fB\-evenp\fR
+same as \fB\-parenb\fR cs8
+.TP
+* [-]lcase
+same as xcase iuclc olcuc
+.TP
+litout
+same as \fB\-parenb\fR \fB\-istrip\fR \fB\-opost\fR cs8
+.TP
+\fB\-litout\fR
+same as parenb istrip opost cs7
+.TP
+nl
+same as \fB\-icrnl\fR \fB\-onlcr\fR
+.TP
+\fB\-nl\fR
+same as icrnl \fB\-inlcr\fR \fB\-igncr\fR onlcr \fB\-ocrnl\fR \fB\-onlret\fR
+.TP
+oddp
+same as parenb parodd cs7
+.TP
+\fB\-oddp\fR
+same as \fB\-parenb\fR cs8
+.TP
+[-]parity
+same as [-]evenp
+.TP
+pass8
+same as \fB\-parenb\fR \fB\-istrip\fR cs8
+.TP
+\fB\-pass8\fR
+same as parenb istrip cs7
+.TP
+raw
+same as \fB\-ignbrk\fR \fB\-brkint\fR \fB\-ignpar\fR \fB\-parmrk\fR \fB\-inpck\fR \fB\-istrip\fR
+\fB\-inlcr\fR \fB\-igncr\fR \fB\-icrnl\fR  \fB\-ixon\fR  \fB\-ixoff\fR  \fB\-iuclc\fR  \fB\-ixany\fR
+\fB\-imaxbel\fR \fB\-opost\fR \fB\-isig\fR \fB\-icanon\fR \fB\-xcase\fR min 1 time 0
+.TP
+\fB\-raw\fR
+same as cooked
+.TP
+sane
+same as cread \fB\-ignbrk\fR brkint \fB\-inlcr\fR \fB\-igncr\fR icrnl
+\fB\-ixoff\fR \fB\-iuclc\fR \fB\-ixany\fR imaxbel opost \fB\-olcuc\fR \fB\-ocrnl\fR onlcr
+\fB\-onocr\fR \fB\-onlret\fR \fB\-ofill\fR \fB\-ofdel\fR nl0 cr0 tab0 bs0 vt0 ff0
+isig icanon iexten echo echoe echok \fB\-echonl\fR \fB\-noflsh\fR
+\fB\-xcase\fR \fB\-tostop\fR \fB\-echoprt\fR echoctl echoke, all special
+characters to their default values.
+.PP
+Handle the tty line connected to standard input.  Without arguments,
+prints baud rate, line discipline, and deviations from stty sane.  In
+settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or
+127; special values ^- or undef used to disable special characters.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B stty
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B stty
+programs are properly installed at your site, the command
+.IP
+.B info stty
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/su.1 b/raw/man1/su.1
new file mode 100644
index 0000000..69bc0fc
--- /dev/null
+++ b/raw/man1/su.1
@@ -0,0 +1,58 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH SU "1" "October 2003" "su (coreutils) 5.0" FSF
+.SH NAME
+su \- run a shell with substitute user and group IDs
+.SH SYNOPSIS
+.B su
+[\fIOPTION\fR]... [\fI-\fR] [\fIUSER \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Change the effective user id and group id to that of USER.
+.TP
+-, \fB\-l\fR, \fB\-\-login\fR
+make the shell a login shell
+.TP
+\fB\-c\fR, \fB\-\-commmand\fR=\fICOMMAND\fR
+pass a single COMMAND to the shell with \fB\-c\fR
+.TP
+\fB\-f\fR, \fB\-\-fast\fR
+pass \fB\-f\fR to the shell (for csh or tcsh)
+.TP
+\fB\-m\fR, \fB\-\-preserve\-environment\fR
+do not reset environment variables
+.TP
+\fB\-p\fR
+same as \fB\-m\fR
+.TP
+\fB\-s\fR, \fB\-\-shell\fR=\fISHELL\fR
+run SHELL if /etc/shells allows it
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A mere - implies \fB\-l\fR.   If USER not given, assume root.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B su
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B su
+programs are properly installed at your site, the command
+.IP
+.B info su
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/sum.1 b/raw/man1/sum.1
new file mode 100644
index 0000000..9d4ded8
--- /dev/null
+++ b/raw/man1/sum.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH SUM "1" "October 2003" "sum (coreutils) 5.0" FSF
+.SH NAME
+sum \- checksum and count the blocks in a file
+.SH SYNOPSIS
+.B sum
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print checksum and block counts for each FILE.
+.TP
+\fB\-r\fR
+defeat \fB\-s\fR, use BSD sum algorithm, use 1K blocks
+.TP
+\fB\-s\fR, \fB\-\-sysv\fR
+use System V sum algorithm, use 512 bytes blocks
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE, or when FILE is -, read standard input.
+.SH AUTHOR
+Written by Kayvan Aghaiepour and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B sum
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B sum
+programs are properly installed at your site, the command
+.IP
+.B info sum
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/suspend.1 b/raw/man1/suspend.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/suspend.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/svn.1 b/raw/man1/svn.1
new file mode 100644
index 0000000..c11f3eb
--- /dev/null
+++ b/raw/man1/svn.1
@@ -0,0 +1,27 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svn 1
+.SH NAME
+svn \- Subversion command line client tool
+.SH SYNOPSIS
+.TP
+\fBsvn\fP \fIcommand\fP [\fIoptions\fP] [\fIargs\fP]
+.SH OVERVIEW
+Subversion is a version control system, which allows you to keep old
+versions of files and directories (usually source code), keep a log of
+who, when, and why changes occurred, etc., like CVS, RCS or SCCS.
+\fBSubversion\fP keeps a single copy of the master sources.  This copy
+is called the source ``repository''; it contains all the information
+to permit extracting previous versions of those files at any time.
+
+For more information about the Subversion project, visit 
+http://subversion.tigris.org.
+
+Documentation for Subversion and its tools, including detailed usage
+explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
+\fBsvnlook\fP programs, historical background, philosophical 
+approaches and reasonings, etc., can be found at 
+http://svnbook.red-bean.com/.
+
+Run `svn help' to access the built-in tool documentation.
\ No newline at end of file
diff --git a/raw/man1/svnadmin.1 b/raw/man1/svnadmin.1
new file mode 100644
index 0000000..9c31681
--- /dev/null
+++ b/raw/man1/svnadmin.1
@@ -0,0 +1,27 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnadmin 1
+.SH NAME
+svnadmin \- Subversion repository administration tool
+.SH SYNOPSIS
+.TP
+\fBsvnadmin\fP \fIcommand\fP \fI/path/to/repos\fP [\fIoptions\fP] [\fIargs\fP]
+.SH OVERVIEW
+Subversion is a version control system, which allows you to keep old
+versions of files and directories (usually source code), keep a log of
+who, when, and why changes occurred, etc., like CVS, RCS or SCCS.
+\fBSubversion\fP keeps a single copy of the master sources.  This copy
+is called the source ``repository''; it contains all the information
+to permit extracting previous versions of those files at any time.
+
+For more information about the Subversion project, visit 
+http://subversion.tigris.org.
+
+Documentation for Subversion and its tools, including detailed usage
+explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
+\fBsvnlook\fP programs, historical background, philosophical 
+approaches and reasonings, etc., can be found at 
+http://svnbook.red-bean.com/.
+
+Run `svnadmin help' to access the built-in tool documentation.
\ No newline at end of file
diff --git a/raw/man1/svndumpfilter.1 b/raw/man1/svndumpfilter.1
new file mode 100644
index 0000000..19ffe7f
--- /dev/null
+++ b/raw/man1/svndumpfilter.1
@@ -0,0 +1,27 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svndumpfilter 1
+.SH NAME
+svndumpfilter \- Filter a subversion repository 'dumpfile'.
+.SH SYNOPSIS
+.TP
+\fBsvndumpfilter\fP \fIcommand\fP [\fIoptions\fP & \fIargs\fP]
+.SH OVERVIEW
+Subversion is a version control system, which allows you to keep old
+versions of files and directories (usually source code), keep a log of
+who, when, and why changes occurred, etc., like CVS, RCS or SCCS.
+\fBSubversion\fP keeps a single copy of the master sources.  This copy
+is called the source ``repository''; it contains all the information
+to permit extracting previous versions of those files at any time.
+
+For more information about the Subversion project, visit 
+http://subversion.tigris.org.
+
+Documentation for Subversion and its tools, including detailed usage
+explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
+\fBsvnlook\fP programs, historical background, philosophical 
+approaches and reasonings, etc., can be found at 
+http://svnbook.red-bean.com/.
+
+Run `svndumpfilter help' to access the built-in tool documentation.
diff --git a/raw/man1/svnlook.1 b/raw/man1/svnlook.1
new file mode 100644
index 0000000..473c617
--- /dev/null
+++ b/raw/man1/svnlook.1
@@ -0,0 +1,27 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnlook 1
+.SH NAME
+svnlook \- Subversion repository examination tool
+.SH SYNOPSIS
+.TP
+\fBsvnlook\fP \fIcommand\fP \fI/path/to/repos\fP [\fIoptions\fP] [\fIargs\fP]
+.SH OVERVIEW
+Subversion is a version control system, which allows you to keep old
+versions of files and directories (usually source code), keep a log of
+who, when, and why changes occurred, etc., like CVS, RCS or SCCS.
+\fBSubversion\fP keeps a single copy of the master sources.  This copy
+is called the source ``repository''; it contains all the information
+to permit extracting previous versions of those files at any time.
+
+For more information about the Subversion project, visit 
+http://subversion.tigris.org.
+
+Documentation for Subversion and its tools, including detailed usage
+explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
+\fBsvnlook\fP programs, historical background, philosophical 
+approaches and reasonings, etc., can be found at 
+http://svnbook.red-bean.com/.
+
+Run `svnlook help' to access the built-in tool documentation.
\ No newline at end of file
diff --git a/raw/man1/svnversion.1 b/raw/man1/svnversion.1
new file mode 100644
index 0000000..1d40658
--- /dev/null
+++ b/raw/man1/svnversion.1
@@ -0,0 +1,28 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnversion 1
+.SH NAME
+svnversion \- Produce a compact version number for a working copy.
+.SH SYNOPSIS
+.TP
+\fBsvnversion\fP wc_path [\fItrail_url\fP]
+.SH OVERVIEW
+Subversion is a version control system, which allows you to keep old
+versions of files and directories (usually source code), keep a log of
+who, when, and why changes occurred, etc., like CVS, RCS or SCCS.
+\fBSubversion\fP keeps a single copy of the master sources.  This copy
+is called the source ``repository''; it contains all the information
+to permit extracting previous versions of those files at any time.
+
+For more information about the Subversion project, visit 
+http://subversion.tigris.org.
+
+Documentation for Subversion and its tools, including detailed usage
+explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
+\fBsvnlook\fP programs, historical background, philosophical 
+approaches and reasonings, etc., can be found at 
+http://svnbook.red-bean.com/.
+
+Run `svnversion' with no arguments to access the built-in tool
+documentation.
diff --git a/raw/man1/sync.1 b/raw/man1/sync.1
new file mode 100644
index 0000000..e853e06
--- /dev/null
+++ b/raw/man1/sync.1
@@ -0,0 +1,38 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH SYNC "1" "October 2003" "sync (coreutils) 5.0" FSF
+.SH NAME
+sync \- flush filesystem buffers
+.SH SYNOPSIS
+.B sync
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Force changed blocks to disk, update the super block.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B sync
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B sync
+programs are properly installed at your site, the command
+.IP
+.B info sync
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/tac.1 b/raw/man1/tac.1
new file mode 100644
index 0000000..a7d16a9
--- /dev/null
+++ b/raw/man1/tac.1
@@ -0,0 +1,50 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH TAC "1" "October 2003" "tac (coreutils) 5.0" FSF
+.SH NAME
+tac \- concatenate and print files in reverse
+.SH SYNOPSIS
+.B tac
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write each FILE to standard output, last line first.
+With no FILE, or when FILE is -, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-before\fR
+attach the separator before instead of after
+.TP
+\fB\-r\fR, \fB\-\-regex\fR
+interpret the separator as a regular expression
+.TP
+\fB\-s\fR, \fB\-\-separator\fR=\fISTRING\fR
+use STRING as the separator instead of newline
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jay Lepreau and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B tac
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B tac
+programs are properly installed at your site, the command
+.IP
+.B info tac
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/tail.1 b/raw/man1/tail.1
new file mode 100644
index 0000000..2a6fdb8
--- /dev/null
+++ b/raw/man1/tail.1
@@ -0,0 +1,93 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH TAIL "1" "October 2003" "tail (coreutils) 5.0" FSF
+.SH NAME
+tail \- output the last part of files
+.SH SYNOPSIS
+.B tail
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the last 10 lines of each FILE to standard output.
+With more than one FILE, precede each with a header giving the file name.
+With no FILE, or when FILE is -, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-retry\fR
+keep trying to open a file even if it is
+inaccessible when tail starts or if it becomes
+inaccessible later \fB\-\-\fR useful only with \fB\-f\fR
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR=\fIN\fR
+output the last N bytes
+.TP
+\fB\-f\fR, \fB\-\-follow[=\fR{name|descriptor}]
+output appended data as the file grows;
+\fB\-f\fR, \fB\-\-follow\fR, and \fB\-\-follow\fR=\fIdescriptor\fR are
+equivalent
+.TP
+\fB\-F\fR
+same as \fB\-\-follow\fR=\fIname\fR \fB\-\-retry\fR
+.TP
+\fB\-n\fR, \fB\-\-lines\fR=\fIN\fR
+output the last N lines, instead of the last 10
+.TP
+\fB\-\-max\-unchanged\-stats\fR=\fIN\fR
+with \fB\-\-follow\fR=\fIname\fR, reopen a FILE which has not
+changed size after N (default 5) iterations
+to see if it has been unlinked or renamed
+(this is the usual case of rotated log files)
+.TP
+\fB\-\-pid\fR=\fIPID\fR
+with \fB\-f\fR, terminate after process ID, PID dies
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+never output headers giving file names
+.TP
+\fB\-s\fR, \fB\-\-sleep\-interval\fR=\fIS\fR
+with \fB\-f\fR, sleep for approximately S seconds
+(default 1.0) between iterations.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+always output headers giving file names
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If the first character of N (the number of bytes or lines) is a `+',
+print beginning with the Nth item from the start of each file, otherwise,
+print the last N items in the file.  N may have a multiplier suffix:
+b for 512, k for 1024, m for 1048576 (1 Meg).
+.PP
+With \fB\-\-follow\fR (-f), tail defaults to following the file descriptor, which
+means that even if a tail'ed file is renamed, tail will continue to track
+its end.  This default behavior is not desirable when you really want to
+track the actual name of the file, not the file descriptor (e.g., log
+rotation).  Use \fB\-\-follow\fR=\fIname\fR in that case.  That causes tail to track the
+named file by reopening it periodically to see if it has been removed and
+recreated by some other program.
+.SH AUTHOR
+Written by Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B tail
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B tail
+programs are properly installed at your site, the command
+.IP
+.B info tail
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/tar.1 b/raw/man1/tar.1
new file mode 100644
index 0000000..3b5b052
--- /dev/null
+++ b/raw/man1/tar.1
@@ -0,0 +1,336 @@
+.\" @(#)tar.1 1.13.14 2000/10/30 Bero;
+.TH TAR 1 "30 October 2000"
+.SH NAME
+tar \- The GNU version of the tar archiving utility
+.SH SYNOPSIS
+.B tar
+[
+.B \-
+]
+.B A --catenate --concatenate \||\| c --create \||\| d --diff --compare \||\| r --append \||\| t --list \||\| u --update \||\| x -extract --get
+[
+.B --atime-preserve
+]
+[
+.B -b, --block-size N
+]
+[
+.B -B, --read-full-blocks
+]
+[
+.B -C, --directory DIR
+]
+[
+.B --checkpoint	
+]
+[
+.B -f, --file [HOSTNAME:]F
+]
+[
+.B --force-local	
+]
+[
+.B -F, --info-script F --new-volume-script F
+]
+[
+.B -G, --incremental
+]
+[
+.B -g, --listed-incremental F
+]
+[
+.B -h, --dereference
+]
+[
+.B -i, --ignore-zeros
+]
+[
+.B -j, -I, --bzip
+]
+[
+.B --ignore-failed-read
+]
+[
+.B -k, --keep-old-files
+]
+[
+.B -K, --starting-file F
+]
+[
+.B -l, --one-file-system
+]
+[
+.B -L, --tape-length N
+]
+[
+.B -m, --modification-time
+]
+[
+.B -M, --multi-volume
+]
+[
+.B -N, --after-date DATE, --newer DATE
+]
+[
+.B -o, --old-archive, --portability
+]
+[
+.B -O, --to-stdout
+]
+[
+.B -p, --same-permissions, --preserve-permissions
+]
+[
+.B -P, --absolute-paths
+]
+[
+.B --preserve	
+]
+[
+.B -R, --record-number
+]
+[
+.B --remove-files
+]
+[
+.B -s, --same-order, --preserve-order
+]
+[
+.B --same-owner
+]
+[
+.B -S, --sparse
+]
+[
+.B -T, --files-from=F
+]
+[
+.B --null	
+]
+[
+.B --totals	
+]
+[
+.B -v, --verbose
+]
+[
+.B -V, --label NAME
+]
+[
+.B --version	
+]
+[
+.B -w, --interactive, --confirmation
+]
+[
+.B -W, --verify	
+]
+[
+.B --exclude FILE
+]
+[
+.B -X, --exclude-from FILE
+]
+[
+.B -Z, --compress, --uncompress
+]
+[
+.B -z, --gzip, --ungzip	
+]
+[
+.B --use-compress-program PROG
+]
+[
+.B --block-compress
+]
+[
+.B -[0-7][lmh]	
+]
+.TP
+.I filename1 [ filename2, ... filenameN ] 
+.TP
+.I directory1 [ directory2, ...directoryN ]
+.SH DESCRIPTION
+.LP
+This manual page documents the GNU version of
+.B tar
+, an archiving program designed to store and extract files from 
+an archive file known as a 
+.IR tarfile.
+A 
+.IR tarfile 
+may be made on a tape drive, however, it is also common
+to write a
+.IR tarfile
+to a normal file. 
+The first argument to 
+.B tar
+must be one of the options:
+.BR Acdrtux ,
+followed by any optional functions.
+The final arguments to 
+.B tar
+are the names of the files or directories which should be archived. The use
+of a directory name always implies that the subdirectories below should be
+included in the archive.
+.SH "FUNCTION LETTERS"
+.TP
+.B One of the following options must be used:
+.TP
+.B -A, --catenate, --concatenate
+append tar files to an archive
+.TP
+.B -c, --create	
+create a new archive
+.TP
+.B -d, --diff, --compare
+find differences between archive and file system
+.TP
+.B --delete		
+delete from the archive (not for use on mag tapes!)
+.TP
+.B -r, --append		
+append files to the end of an archive
+.TP
+.B -t, --list		
+list the contents of an archive
+.TP
+.B -u, --update		
+only append files that are newer than copy in archive
+.TP
+.B -x, --extract, --get		
+extract files from an archive
+.SH "OTHER OPTIONS"
+.TP
+.B --atime-preserve	
+don't change access times on dumped files
+.TP
+.B -b, --block-size N	
+block size of Nx512 bytes (default N=20)
+.TP
+.B -B, --read-full-blocks	
+reblock as we read (for reading 4.2BSD pipes)
+.TP 
+.B -C, --directory DIR	
+change to directory DIR
+.TP 
+.B --checkpoint		
+print directory names while reading the archive
+.TP
+.B -f, --file [HOSTNAME:]F	
+use archive file or device F (default /dev/rmt0)
+.TP
+.B --force-local		
+archive file is local even if has a colon
+.TP 
+.B -F, --info-script F --new-volume-script F 
+run script at end of each tape (implies -M)
+.TP
+.B -G, --incremental	
+create/list/extract old GNU-format incremental backup
+.TP
+.B -g, --listed-incremental F 
+create/list/extract new GNU-format incremental backup
+.TP 
+.B -h, --dereference	
+don't dump symlinks; dump the files they point to
+.TP
+.B -i, --ignore-zeros	
+ignore blocks of zeros in archive (normally mean EOF)
+.TP
+.B -j, -I, --bzip
+filter the archive through bzip2. Note: -I is deprecated and may get a
+different meaning in the near future.
+.TP
+.B --ignore-failed-read	
+don't exit with non-zero status on unreadable files
+.TP
+.B -k, --keep-old-files	
+keep existing files; don't overwrite them from archive
+.TP
+.B -K, --starting-file F	
+begin at file F in the archive
+.TP
+.B -l, --one-file-system	
+stay in local file system when creating an archive
+.TP
+.B -L, --tape-length N	
+change tapes after writing N*1024 bytes
+.TP
+.B -m, --modification-time	
+don't extract file modified time
+.TP
+.B -M, --multi-volume	
+create/list/extract multi-volume archive
+.TP
+.B -N, --after-date DATE, --newer DATE	
+only store files newer than DATE
+.TP
+.B -o, --old-archive, --portability	
+write a V7 format archive, rather than ANSI format
+.TP
+.B -O, --to-stdout		
+extract files to standard output
+.TP
+.B -p, --same-permissions, --preserve-permissions 
+extract all protection information
+.TP
+.B -P, --absolute-paths	
+don't strip leading `/'s from file names
+.TP
+.B --preserve		
+like -p -s
+.TP
+.B -R, --record-number	
+show record number within archive with each message
+.TP 
+.B --remove-files		
+remove files after adding them to the archive
+.TP
+.B -s, --same-order, --preserve-order	
+list of names to extract is sorted to match archive
+.TP
+.B --same-owner		
+create extracted files with the same ownership 
+.TP
+.B -S, --sparse		
+handle sparse files efficiently
+.TP 
+.B -T, --files-from=F	
+get names to extract or create from file F
+.TP
+.B --null			
+-T reads null-terminated names, disable -C
+.TP
+.B --totals		
+print total bytes written with --create
+.TP
+.B -v, --verbose		
+verbosely list files processed
+.TP
+.B -V, --label NAME	
+create archive with volume name NAME
+.TP 
+.B --version		
+print tar program version number
+.TP
+.B -w, --interactive, --confirmation	
+ask for confirmation for every action
+.TP
+.B -W, --verify		
+attempt to verify the archive after writing it
+.TP
+.B --exclude FILE		
+exclude file FILE
+.TP
+.B -X, --exclude-from FILE	
+exclude files listed in FILE
+.TP
+.B -Z, --compress, --uncompress      	
+filter the archive through compress
+.TP 
+.B -z, --gzip, --ungzip		
+filter the archive through gzip
+.TP
+.B --use-compress-program PROG
+filter the archive through PROG (which must accept -d)
diff --git a/raw/man1/tclsh.1 b/raw/man1/tclsh.1
new file mode 100644
index 0000000..ab41ab6
--- /dev/null
+++ b/raw/man1/tclsh.1
@@ -0,0 +1,359 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tclsh 1 "" Tcl "Tcl Applications"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tclsh \- Simple shell containing Tcl interpreter
+.SH SYNOPSIS
+\fBtclsh\fR ?\fIfileName arg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBTclsh\fR is a shell-like application that reads Tcl commands
+from its standard input or from a file and evaluates them.
+If invoked with no arguments then it runs interactively, reading
+Tcl commands from standard input and printing command results and
+error messages to standard output.
+It runs until the \fBexit\fR command is invoked or until it
+reaches end-of-file on its standard input.
+If there exists a file \fB.tclshrc\fR (or \fBtclshrc.tcl\fR on
+the Windows platforms) in the home directory of
+the user, \fBtclsh\fR evaluates the file as a Tcl script
+just before reading the first command from standard input.
+
+.SH "SCRIPT FILES"
+.PP
+If \fBtclsh\fR is invoked with arguments then the first argument
+is the name of a script file and any additional arguments
+are made available to the script as variables (see below).
+Instead of reading commands from standard input \fBtclsh\fR will
+read Tcl commands from the named file;  \fBtclsh\fR will exit
+when it reaches the end of the file.
+There is no automatic evaluation of \fB.tclshrc\fR in this
+case, but the script file can always \fBsource\fR it if desired.
+.PP
+If you create a Tcl script in a file whose first line is
+.CS
+\fB#!/usr/local/bin/tclsh\fR
+.CE
+then you can invoke the script file directly from your shell if
+you mark the file as executable.
+This assumes that \fBtclsh\fR has been installed in the default
+location in /usr/local/bin;  if it's installed somewhere else
+then you'll have to modify the above line to match.
+Many UNIX systems do not allow the \fB#!\fR line to exceed about
+30 characters in length, so be sure that the \fBtclsh\fR
+executable can be accessed with a short file name.
+.PP
+An even better approach is to start your script files with the
+following three lines:
+.CS
+\fB#!/bin/sh
+# the next line restarts using tclsh \e
+exec tclsh "$0" "$@"\fR
+.CE
+This approach has three advantages over the approach in the previous
+paragraph.  First, the location of the \fBtclsh\fR binary doesn't have
+to be hard-wired into the script:  it can be anywhere in your shell
+search path.  Second, it gets around the 30-character file name limit
+in the previous approach.
+Third, this approach will work even if \fBtclsh\fR is
+itself a shell script (this is done on some systems in order to
+handle multiple architectures or operating systems:  the \fBtclsh\fR
+script selects one of several binaries to run).  The three lines
+cause both \fBsh\fR and \fBtclsh\fR to process the script, but the
+\fBexec\fR is only executed by \fBsh\fR.
+\fBsh\fR processes the script first;  it treats the second
+line as a comment and executes the third line.
+The \fBexec\fR statement cause the shell to stop processing and
+instead to start up \fBtclsh\fR to reprocess the entire script.
+When \fBtclsh\fR starts up, it treats all three lines as comments,
+since the backslash at the end of the second line causes the third
+line to be treated as part of the comment on the second line.
+.PP
+.VS
+You should note that it is also common practise to install tclsh with
+its version number as part of the name.  This has the advantage of
+allowing multiple versions of Tcl to exist on the same system at once,
+but also the disadvantage of making it harder to write scripts that
+start up uniformly across different versions of Tcl.
+.VE
+
+.SH "VARIABLES"
+.PP
+\fBTclsh\fR sets the following Tcl variables:
+.TP 15
+\fBargc\fR
+Contains a count of the number of \fIarg\fR arguments (0 if none),
+not including the name of the script file.
+.TP 15
+\fBargv\fR
+Contains a Tcl list whose elements are the \fIarg\fR arguments,
+in order, or an empty string if there are no \fIarg\fR arguments.
+.TP 15
+\fBargv0\fR
+Contains \fIfileName\fR if it was specified.
+Otherwise, contains the name by which \fBtclsh\fR was invoked.
+.TP 15
+\fBtcl_interactive\fR
+Contains 1 if \fBtclsh\fR is running interactively (no
+\fIfileName\fR was specified and standard input is a terminal-like
+device), 0 otherwise.
+
+.SH PROMPTS
+.PP
+When \fBtclsh\fR is invoked interactively it normally prompts for each
+command with ``\fB% \fR''.  You can change the prompt by setting the
+variables \fBtcl_prompt1\fR and \fBtcl_prompt2\fR.  If variable
+\fBtcl_prompt1\fR exists then it must consist of a Tcl script
+to output a prompt;  instead of outputting a prompt \fBtclsh\fR
+will evaluate the script in \fBtcl_prompt1\fR.
+The variable \fBtcl_prompt2\fR is used in a similar way when
+a newline is typed but the current command isn't yet complete;
+if \fBtcl_prompt2\fR isn't set then no prompt is output for
+incomplete commands.
+
+.SH KEYWORDS
+argument, interpreter, prompt, script file, shell
diff --git a/raw/man1/tee.1 b/raw/man1/tee.1
new file mode 100644
index 0000000..8e89532
--- /dev/null
+++ b/raw/man1/tee.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH TEE "1" "October 2003" "tee (coreutils) 5.0" FSF
+.SH NAME
+tee \- read from standard input and write to standard output and files
+.SH SYNOPSIS
+.B tee
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Copy standard input to each FILE, and also to standard output.
+.TP
+\fB\-a\fR, \fB\-\-append\fR
+append to the given FILEs, do not overwrite
+.TP
+\fB\-i\fR, \fB\-\-ignore\-interrupts\fR
+ignore interrupt signals
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Mike Parker, Richard M. Stallman, and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B tee
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B tee
+programs are properly installed at your site, the command
+.IP
+.B info tee
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/testparm.1 b/raw/man1/testparm.1
new file mode 100644
index 0000000..4207c2f
--- /dev/null
+++ b/raw/man1/testparm.1
@@ -0,0 +1,123 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "TESTPARM" 1 "" "" ""
+.SH NAME
+testparm \- check an smb.conf configuration file for internal correctness
+.SH "SYNOPSIS"
+
+.nf
+\fBtestparm\fR [-s] [-h] [-v] [-L <servername>] [-t <encoding>] {config filename} [hostname
+         hostIP]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBtestparm\fR is a very simple test program to check an \fBsmbd\fR(8) configuration file for internal correctness\&. If this program reports no problems, you can use the configuration file with confidence that \fBsmbd \fR will successfully load the configuration file\&.
+
+.PP
+Note that this is \fBNOT\fR a guarantee that the services specified in the configuration file will be available or will operate as expected\&.
+
+.PP
+If the optional host name and host IP address are specified on the command line, this test program will run through the service entries reporting whether the specified host has access to each service\&.
+
+.PP
+If \fBtestparm\fR finds an error in the \fI smb\&.conf\fR file it returns an exit code of 1 to the calling program, else it returns an exit code of 0\&. This allows shell scripts to test the output from \fBtestparm\fR\&.
+
+.SH "OPTIONS"
+
+.TP
+-s
+Without this option, \fBtestparm\fR will prompt for a carriage return after printing the service names and before dumping the service definitions\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-L servername
+Sets the value of the %L macro to \fIservername\fR\&. This is useful for testing include files specified with the %L macro\&.
+
+
+.TP
+-v
+If this option is specified, testparm will also output all options that were not used in \fBsmb.conf\fR(5) and are thus set to their defaults\&.
+
+
+.TP
+-t encoding
+Output data in specified encoding\&.
+
+
+.TP
+configfilename
+This is the name of the configuration file to check\&. If this parameter is not present then the default \fBsmb.conf\fR(5) file will be checked\&.
+
+
+.TP
+hostname
+If this parameter and the following are specified, then \fBtestparm\fR will examine the \fIhosts allow\fR and \fIhosts deny\fR parameters in the \fBsmb.conf\fR(5) file to determine if the hostname with this IP address would be allowed access to the \fBsmbd\fR server\&. If this parameter is supplied, the hostIP parameter must also be supplied\&.
+
+
+.TP
+hostIP
+This is the IP address of the host specified in the previous parameter\&. This address must be supplied if the hostname parameter is supplied\&.
+
+
+.SH "FILES"
+
+.TP
+\fBsmb.conf\fR(5)
+This is usually the name of the configuration file used by \fBsmbd\fR(8)\&.
+
+
+.SH "DIAGNOSTICS"
+
+.PP
+The program will issue a message saying whether the configuration file loaded OK or not\&. This message may be preceded by errors and warnings if the file did not load\&. If the file was loaded OK, the program then dumps all known service details to stdout\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmb.conf\fR(5), \fBsmbd\fR(8)
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/testprns.1 b/raw/man1/testprns.1
new file mode 100644
index 0000000..9f98ea1
--- /dev/null
+++ b/raw/man1/testprns.1
@@ -0,0 +1,96 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "TESTPRNS" 1 "" "" ""
+.SH NAME
+testprns \- check printer name for validity with smbd
+.SH "SYNOPSIS"
+
+.nf
+\fBtestprns\fR {printername} [printcapname]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBtestprns\fR is a very simple test program to determine whether a given printer name is valid for use in a service to be provided by \fBsmbd\fR(8)\&.
+
+.PP
+"Valid" in this context means "can be found in the printcap specified"\&. This program is very stupid - so stupid in fact that it would be wisest to always specify the printcap file to use\&.
+
+.SH "OPTIONS"
+
+.TP
+printername
+The printer name to validate\&.
+
+
+Printer names are taken from the first field in each record in the printcap file, single printer names and sets of aliases separated by vertical bars ("|") are recognized\&. Note that no validation or checking of the printcap syntax is done beyond that required to extract the printer name\&. It may be that the print spooling system is more forgiving or less forgiving than \fBtestprns\fR\&. However, if \fBtestprns\fR finds the printer then \fBsmbd\fR(8) should do so as well\&.
+
+
+.TP
+printcapname
+This is the name of the printcap file within which to search for the given printer name\&.
+
+
+If no printcap name is specified \fBtestprns \fR will attempt to scan the printcap file name specified at compile time\&.
+
+
+.SH "FILES"
+
+.TP
+\fI/etc/printcap\fR
+This is usually the default printcap file to scan\&. See \fIprintcap (5)\fR\&.
+
+
+.SH "DIAGNOSTICS"
+
+.PP
+If a printer is found to be valid, the message "Printer name <printername> is valid" will be displayed\&.
+
+.PP
+If a printer is found to be invalid, the message "Printer name <printername> is not valid" will be displayed\&.
+
+.PP
+All messages that would normally be logged during operation of the Samba daemons are logged by this program to the file \fItest\&.log\fR in the current directory\&. The program runs at debuglevel 3, so quite extensive logging information is written\&. The log should be checked carefully for errors and warnings\&.
+
+.PP
+Other messages are self-explanatory\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fIprintcap(5)\fR,\fBsmbd\fR(8), \fBsmbclient\fR(1)
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/tex.1 b/raw/man1/tex.1
new file mode 100644
index 0000000..6f360a4
--- /dev/null
+++ b/raw/man1/tex.1
@@ -0,0 +1,421 @@
+.TH TEX 1 "10 November 2001" "Web2C 7.4.5"
+.\"=====================================================================
+.if n .ds MF Metafont
+.if t .ds MF M\s-2ETAFONT\s0
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP\" for troff
+.el .ds OX TeX\" for nroff
+.\" the same but obliqued
+.\" BX definition must follow TX so BX can use TX
+.if t .ds BX \fRB\s-2IB\s0\fP\*(TX
+.if n .ds BX BibTeX
+.\" LX definition must follow TX so LX can use TX
+.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX
+.if n .ds LX LaTeX
+.if n .ds WB Web
+.if t .ds WB W\s-2EB\s0
+.\"=====================================================================
+.SH NAME
+tex, virtex, initex \- text formatting and typesetting
+.SH SYNOPSIS
+.B tex
+.RI [ options ]
+.RI [ commands ]
+.\"=====================================================================
+.SH DESCRIPTION
+This manual page is not meant to be exhaustive.  The complete
+documentation for this version of \*(TX can be found in the info file
+or manual
+.IR "Web2C: A TeX implementation" .
+.PP
+\*(TX
+formats the interspersed text and commands contained in the named
+files
+and outputs a typesetter independent file (called
+.IR DVI ,
+which is short for
+.IR "DeVice Independent" ).
+\*(TX's capabilities and language are described in
+.IR "The \*(OXbook" .
+\*(TX
+is normally used with a large body of precompiled macros,
+and there are several specific formatting systems, such as
+\*(LX,
+which require the support of several macro files.
+.PP
+This version of \*(TX looks at its command line to see what name it
+was called under.  Both
+.B initex
+and
+.B virtex
+are symlinks to the
+.B tex
+executable.  When called as
+.BR initex
+(or when the
+.B --ini
+option is given) it can be used to precompile macros into a
+.I .fmt
+file.  When called as
+.B virtex
+it will use the
+.I plain
+format.  When called under any other name, \*(TX will use that name as
+the name of the format to use.  For example, when called as
+.B tex
+the
+.I tex
+format is used, which is identical to the
+.I plain
+format.  The commands defined by the
+.I plain
+format are documented in
+.IR "The \*(OXbook" .
+Other formats that are often available include
+.I latex
+and
+.IR amstex .
+.PP
+The
+.I commands
+given on the command line to the
+\*(TX
+program are passed to it as the first input line.  (But it is often
+easier to type extended arguments as the first input line, since UNIX
+shells tend to gobble up or misinterpret \*(TX's favorite symbols,
+like backslashes, unless you quote them.)
+As described in
+.IR "The \*(OXbook" ,
+that first line should begin with a filename, a
+.IR \econtrolsequence ,
+or a
+.IR &formatname .
+.PP
+The normal usage is to say
+.RS
+.I tex paper
+.RE
+to start processing
+.IR paper.tex .
+The name
+.I paper
+will be the ``jobname'', and is used in forming
+output filenames.
+If \*(TX doesn't get a filename in the first line, the jobname is
+.IR texput .
+When looking for a file, \*(TX looks for the name with and without the
+default extension
+.RI ( .tex )
+appended, unless the name already contains that extension.  If
+.I paper
+is the ``jobname'',
+a log of error messages, with rather more detail than normally appears
+on the screen, will appear in
+.IR paper.log ,
+and the output file will be in
+.IR paper.dvi .
+.PP
+This version of \*(TX can look in the first line of the file
+.I paper.tex
+to see if it begins with the magic sequence
+.IR %& .
+If the first line begins with
+.BI %& format
+.BI --translate-file \ tcxname
+then \*(TX will use the named format and transation table
+.I tcxname
+to process the source file.  Either the format name or the
+.B --translate-file
+specification may be omitted, but not both.  This overrides the
+format selection based on the name by which the program is invoked.
+The
+.B --parse-first-line
+option or the
+.B parse_first_line
+configuration variable control whether this behaviour is enabled.
+.PP
+The
+.I e
+response to \*(TX's error prompt causes the system default editor to
+start up at the current line of the current file.  The environment
+variable TEXEDIT can be used to change the editor used.  It may
+contain a string with "%s" indicating where the filename goes and "%d"
+indicating where the decimal line number (if any) goes.  For example,
+a TEXEDIT string for
+.B emacs
+can be set with the
+.B sh
+command
+.RS
+\fITEXEDIT="emacs +%d %s"; export TEXEDIT\fP
+.RE
+.PP
+A convenient file in the library is
+.IR null.tex ,
+containing nothing.
+When \*(TX can't find a file it thinks you want to input, it keeps
+asking you for another filename; responding `null' gets you out
+of the loop if you don't want to input anything.  You can also type your
+EOF character (usually control-D).
+.PP
+.\"=====================================================================
+.SH OPTIONS
+This version of \*(TX understands the following command line options.
+.TP
+.B --file-line-error-style
+.rb
+Print error messages in the form
+.I file:line:error
+which is similar to the way many compilers format them.
+.TP
+.BI --fmt \ format
+.rb
+Use
+.I format
+as the name of the format to be used, instead of the name by which
+\*(TX was called or a
+.I %&
+line.
+.TP
+.B --help
+.rb
+Print help message and exit.
+.TP
+.B --ini
+.rb
+Be
+.BR initex ,
+for dumping formats; this is implicitly true if the program is called
+as
+.BR initex .
+.TP
+.BI --interaction \ mode
+.rb
+Sets the interaction mode.  The mode can be one of
+.IR batchmode ,
+.IR nonstopmode ,
+.IR scrollmode ,
+and
+.IR errorstopmode .
+The meaning of these modes is the same as that of the corresponding
+\ecommands.
+.TP
+.B --ipc
+.rb
+Send DVI output to a socket as well as the usual output file.  Whether
+this option is available is the choice of the installer.
+.TP
+.B --ipc-start
+.rb
+As
+.BR --ipc ,
+and starts the server at the other end as well.  Whether this option
+is available is the choice of the installer.
+.TP
+.BI --jobname \ name
+.rb
+Use
+.I name
+for the job name, instead of deriving it from the name of the input file.
+.TP
+.BI --kpathsea-debug \ bitmask
+.rb
+Sets path searching debugging flags according to the bitmask.  See the
+.I Kpathsea
+manual for details.
+.TP
+.BI --maketex \ fmt
+.rb
+Enable
+.RI mktex fmt ,
+where
+.I fmt
+must be one of
+.I tex
+or
+.IR tfm .
+.TP
+.B --mltex
+.rb
+Enable ML\*(TX extensions.
+.TP
+.BI --no-maketex \ fmt
+.rb
+Disable
+.RI mktex fmt ,
+where
+.I fmt
+must be one of
+.I tex
+or
+.IR tfm .
+.TP
+.BI --output-comment \ string
+.rb
+Use
+.I string
+for the DVI file comment instead of the date.
+.TP
+.B --parse-first-line
+.rb
+If the first line of the main input file begins with
+.I %&
+parse it to look for a dump name or a
+.B --translate-file
+option.
+.TP
+.BI --progname \ name
+.rb
+Pretend to be program
+.IR name .
+This affects both the format used and the search paths.
+.TP
+.B --recorder
+.rb
+Enable the filename recorder.  This leaves a trace of the files opened
+for input and output in a file with extension
+.IR .fls .
+.TP
+.B --shell-escape
+.rb
+Enable the
+.BI \ewrite18{ command }
+construct.  The
+.I command
+can be any Bourne shell command.  This construct is normally
+disallowed for security reasons.
+.TP
+.BI --translate-file \ tcxname
+.rb
+Use the
+.I tcxname
+translation table.
+.TP
+.B --version
+.rb
+Print version information and exit.
+.\"=====================================================================
+.SH ENVIRONMENT
+See the Kpathsearch library documentation (the `Path specifications'
+node) for precise details of how the environment variables are used.
+The
+.B kpsewhich
+utility can be used to query the values of the variables.
+.PP
+One caveat: In most \*(TX formats, you cannot use ~ in a filename you
+give directly to \*(TX, because ~ is an active character, and hence is
+expanded, not taken as part of the filename.  Other programs, such as
+\*(MF, do not have this problem.
+.PP
+.TP
+TEXMFOUTPUT
+Normally, \*(TX puts its output files in the current directory.  If
+any output file cannot be opened there, it tries to open it in the
+directory specified in the environment variable TEXMFOUTPUT.
+There is no default value for that variable.  For example, if you say
+.I tex paper
+and the current directory is not writable, if TEXMFOUTPUT has
+the value
+.IR /tmp ,
+\*(TX attempts to create
+.I /tmp/paper.log
+(and
+.IR /tmp/paper.dvi ,
+if any output is produced.)
+.TP
+TEXINPUTS
+Search path for
+.I \einput
+and
+.I \eopenin
+files.
+This should probably start with ``.'', so
+that user files are found before system files.  An empty path
+component will be replaced with the paths defined in the
+.I texmf.cnf
+file.  For example, set TEXINPUTS to ".:/home/usr/tex:" to prepend the
+current direcory and ``/home/user/tex'' to the standard search path.
+.TP
+TEXEDIT
+Command template for switching to editor.  The default, usually
+.BR vi ,
+is set when \*(TX is compiled.
+.\"=====================================================================
+.SH FILES
+The location of the files mentioned below varies from system to
+system.  Use the
+.B kpsewhich
+utility to find their locations.
+.TP
+.I texmf.cnf
+Configuration file.  This contains definitions of search paths as well
+as other configuration parameters like
+.BR parse_first_line .
+.TP
+.I tex.pool
+Encoded text of \*(TX's messages.
+.TP
+.I texfonts.map
+Filename mapping definitions.
+.TP
+.I *.tfm
+Metric files for \*(TX's fonts.
+.TP
+.I *.fmt
+Predigested \*(TX format (.\|fmt) files.
+.TP
+.I $TEXMFMAIN/tex/plain/base/plain.tex
+The basic macro package described in the \*(OXbook.
+.br
+.\"=====================================================================
+.SH BUGS
+This version of \*(TX implements a number of optional extensions.
+In fact, many of these extensions conflict to a greater or lesser
+extent with the definition of \*(TX.  When such extensions are
+enabled, the banner printed when \*(TX starts is changed to print
+.B TeXk
+instead of
+.BR TeX .
+.PP
+This version of \*(TX fails to trap arithmetic overflow when
+dimensions are added or subtracted.  Cases where this occurs are rare,
+but when it does the generated
+.I DVI
+file will be invalid.
+.\"=====================================================================
+.SH "SEE ALSO"
+.BR mf (1),
+.br
+Donald E. Knuth,
+.IR "The \*(OXbook" ,
+Addison-Wesley, 1986, ISBN 0-201-13447-0.
+.br
+Leslie Lamport,
+.IR "\*(LX \- A Document Preparation System" ,
+Addison-Wesley, 1985, ISBN 0-201-15790-X.
+.br
+K. Berry,
+.IR "Eplain: Expanded plain \*(TX" ,
+ftp://ftp.cs.umb.edu/pub/tex/eplain/doc.
+.br
+Michael Spivak,
+.IR "The Joy of \*(OX" ,
+2nd edition, Addison-Wesley, 1990, ISBN 0-8218-2997-1.
+.br
+.I TUGboat
+(the journal of the \*(TX Users Group).
+.\"=====================================================================
+.SH TRIVIA
+\*(TX, pronounced properly, rhymes with ``blecchhh.''  The proper
+spelling in typewriter-like fonts is ``TeX'' and not ``TEX'' or ``tex.''
+.\"=====================================================================
+.SH AUTHORS
+\*(TX was designed by Donald E. Knuth,
+who implemented it using his \*(WB system for Pascal programs.
+It was ported to Unix at Stanford by Howard Trickey, and
+at Cornell by Pavel Curtis.
+The version now offered with the Unix \*(TX distribution is that
+generated by the \*(WB to C system
+.RB ( web2c ),
+originally written by Tomas Rokicki and Tim Morgan.
diff --git a/raw/man1/texi2dvi.1 b/raw/man1/texi2dvi.1
new file mode 100644
index 0000000..4f07110
--- /dev/null
+++ b/raw/man1/texi2dvi.1
@@ -0,0 +1,92 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH TEXI2DVI "1" "June 2003" "texi2dvi 1.23" "User Commands"
+.SH NAME
+texi2dvi \- print Texinfo documents
+.SH SYNOPSIS
+.B texi2dvi
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH DESCRIPTION
+Run each Texinfo or LaTeX FILE through TeX in turn until all
+cross-references are resolved, building all indices.  The directory
+containing each FILE is searched for included files.  The suffix of FILE
+is used to determine its language (LaTeX or Texinfo).
+.PP
+Makeinfo is used to perform Texinfo macro expansion before running TeX
+when needed.
+.SS "Operation modes:"
+.TP
+\fB\-b\fR, \fB\-\-batch\fR
+no interaction
+.TP
+\fB\-c\fR, \fB\-\-clean\fR
+remove all auxiliary files
+.TP
+\fB\-D\fR, \fB\-\-debug\fR
+turn on shell debugging (set \fB\-x\fR)
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+display this help and exit successfully
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIOFILE\fR
+leave output in OFILE (implies \fB\-\-clean\fR);
+Only one input FILE may be specified in this case
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR
+no output unless errors (implies \fB\-\-batch\fR)
+.TP
+\fB\-s\fR, \fB\-\-silent\fR
+same as \fB\-\-quiet\fR
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+display version information and exit successfully
+.TP
+\fB\-V\fR, \fB\-\-verbose\fR
+report on what is done
+.SS "TeX tuning:"
+.TP
+-@
+use @input instead of \einput; for preloaded Texinfo
+.TP
+\fB\-e\fR, \fB\-E\fR, \fB\-\-expand\fR
+force macro expansion using makeinfo
+.TP
+\fB\-I\fR DIR
+search DIR for Texinfo files
+.TP
+\fB\-l\fR, \fB\-\-language\fR=\fILANG\fR
+specify the LANG of FILE (LaTeX or Texinfo)
+.TP
+\fB\-p\fR, \fB\-\-pdf\fR
+use pdftex or pdflatex for processing
+.TP
+\fB\-t\fR, \fB\-\-command\fR=\fICMD\fR
+insert CMD in copy of input file;
+.TP
+or \fB\-\-texinfo\fR=\fICMD\fR
+multiple values accumulate
+.PP
+The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO, TEX
+(or PDFTEX), and TEXINDEX environment variables are used to run those
+commands, if they are set.  Any CMD strings are added after @setfilename
+for Texinfo input, in the first line for LaTeX input.
+.SH "REPORTING BUGS"
+Email bug reports to <bug-texinfo at gnu.org>,
+general questions and discussion to <help-texinfo at gnu.org>.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO"
+The full documentation for
+.B texi2dvi
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B texi2dvi
+programs are properly installed at your site, the command
+.IP
+.B info texi2dvi
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/texindex.1 b/raw/man1/texindex.1
new file mode 100644
index 0000000..6882c45
--- /dev/null
+++ b/raw/man1/texindex.1
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH TEXINDEX "1" "June 2003" "texindex 4.6" "User Commands"
+.SH NAME
+texindex \- sort Texinfo index files
+.SH SYNOPSIS
+.B texindex
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH DESCRIPTION
+Generate a sorted index for each TeX output FILE.
+Usually FILE... is specified as `foo.??' for a document `foo.texi'.
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-k\fR, \fB\-\-keep\fR
+keep temporary files around after processing
+.TP
+\fB\-\-no\-keep\fR
+do not keep temporary files around after processing (default)
+.TP
+\fB\-o\fR, \fB\-\-output\fR FILE
+send output to FILE
+.TP
+\fB\-\-version\fR
+display version information and exit
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo at gnu.org,
+general questions and discussion to help-texinfo at gnu.org.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO"
+The full documentation for
+.B texindex
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B texindex
+programs are properly installed at your site, the command
+.IP
+.B info texindex
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/times.1 b/raw/man1/times.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/times.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/touch.1 b/raw/man1/touch.1
new file mode 100644
index 0000000..46ff653
--- /dev/null
+++ b/raw/man1/touch.1
@@ -0,0 +1,77 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH TOUCH "1" "March 2003" "touch (coreutils) 5.0" "User Commands"
+.SH NAME
+touch \- change file timestamps
+.SH SYNOPSIS
+.B touch
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Update the access and modification times of each FILE to the current time.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR
+change only the access time
+.TP
+\fB\-B\fR, \fB\-\-backward\fR=\fISECONDS\fR
+Modify the time by going back SECONDS seconds.
+For example, \fBtouch -r foo -B 5 bar\fR will make the file bar 5 seconds
+older than file foo.
+.TP
+\fB\-c\fR, \fB\-\-no\-create\fR
+do not create any files
+.TP
+\fB\-d\fR, \fB\-\-date\fR=\fISTRING\fR
+parse STRING and use it instead of current time
+.TP
+\fB\-F\fR, \fB\-\-forward\fR=\fISECONDS\fR
+Modify the time by going forward SECONDS seconds.
+For example, \fBtouch -r foo -F 5 bar\fR will make the file bar 5 seconds
+newer than file foo.
+.TP
+\fB\-f\fR
+(ignored)
+.TP
+\fB\-m\fR
+change only the modification time
+.TP
+\fB\-r\fR, \fB\-\-reference\fR=\fIFILE\fR
+use this file's times instead of current time
+.TP
+\fB\-t\fR STAMP
+use [[CC]YY]MMDDhhmm[.ss] instead of current time
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+set time given by WORD: access atime use (same as \fB\-a\fR)
+modify mtime (same as \fB\-m\fR)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Note that the \fB\-d\fR and \fB\-t\fR options accept different time-date formats.
+.SH AUTHOR
+Written by Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B touch
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B touch
+programs are properly installed at your site, the command
+.IP
+.B info touch
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/trap.1 b/raw/man1/trap.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/trap.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/troff.1 b/raw/man1/troff.1
new file mode 100644
index 0000000..113549d
--- /dev/null
+++ b/raw/man1/troff.1
@@ -0,0 +1,686 @@
+'\" t
+.ig
+troff.man
+
+Last update : 9 Jan 2002
+
+This file is part of groff, the GNU roff type-setting system.
+
+Copyright (C) 1989, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+written by James Clark
+
+modified by Werner Lemberg <wl at gnu.org>
+            Bernd Warken <bwarken at mayn.de>
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this .ig-section and AUTHOR, with no
+Front-Cover Texts, and with no Back-Cover Texts.
+
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
+..
+.
+.
+.\" --------------------------------------------------------------------
+.\" Setup
+.\" --------------------------------------------------------------------
+.
+.mso www.tmac
+.
+.if n \{\
+.  mso tty-char.tmac
+.  ftr CR R
+.  ftr CI I
+.  ftr CB B
+.\}
+.
+.if '\*[.T]'dvi' \
+.  ftr CB CW
+.
+.de TQ
+.br
+.ns
+.TP \\$1
+..
+.
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.
+.
+.\" --------------------------------------------------------------------
+.\" Title
+.\" --------------------------------------------------------------------
+.
+.TH TROFF 1 "16 September 2002" "Groff Version 1.18.1"
+.SH NAME
+troff \- the troff processor of the groff text formatting system
+.
+.
+.\" --------------------------------------------------------------------
+.SH SYNOPSIS
+.\" --------------------------------------------------------------------
+.
+.nr a \n(.j
+.ad l
+.nr i \n(.i
+.in +\w'\fBtroff 'u
+.ti \niu
+.B troff
+.de OP
+.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
+.el .RB "[\ " "\\$1" "\ ]"
+..
+.OP \-abcivzCERU
+.OP \-d cs
+.OP \-f fam
+.OP \-F dir
+.OP \-m name
+.OP \-M dir
+.OP \-n num
+.OP \-o list
+.OP \-r cn
+.OP \-T name
+.OP \-w name
+.OP \-W name
+.RI "[\ " files\|.\|.\|. "\ ]"
+.br
+.ad \na
+.P
+It is possible to have whitespace between a command line option and
+its parameter.
+.
+.
+.\" --------------------------------------------------------------------
+.SH DESCRIPTION
+.\" --------------------------------------------------------------------
+.
+This manual page describes the GNU version of
+.BR troff .
+It is part of the groff document formatting system.
+.
+It is functionally compatible with UNIX troff, but has many extensions,
+see
+.BR \%groff_diff (7).
+Usually it should be invoked using the
+.BR groff (1)
+command which will also run preprocessors and postprocessors in the
+appropriate order and with the appropriate options.
+.
+.
+.\" --------------------------------------------------------------------
+.SH OPTIONS
+.\" --------------------------------------------------------------------
+.
+.TP \w'\-dname=s'u+2n
+.B \-a
+Generate an
+.SM ASCII
+approximation of the typeset output.
+.
+.TP
+.B \-b
+Print a backtrace with each warning or error message.
+.
+This backtrace should help track down the cause of the error.
+.
+The line numbers given in the backtrace may not always be correct, for
+.BR troff 's
+idea of line numbers gets confused by
+.B as
+or 
+.B am
+requests.
+.
+.TP
+.B \-c
+Disable color output (always disabled in compatibility mode).
+.
+.TP
+.B \-C
+Enable compatibility mode.
+.
+.TP
+.BI \-d cs
+.TQ
+.BI \-d name = s
+Define
+.I c
+or
+.I name
+to be a string
+.IR s ;
+.I c
+must be a one letter name.
+.
+.TP
+.B \-E
+Inhibit all error messages of
+.BR troff .
+Note that this doesn't affect messages output to standard error by macro
+packages using the
+.B tm
+or
+.B tm1
+requests.
+.
+.TP
+.BI \-f fam
+Use
+.I fam
+as the default font family.
+.
+.TP
+.BI \-F dir
+Search in directory (or directory path)
+.I dir
+for subdirectories
+.BI dev name
+.RI ( name
+is the name of the device) and there for the
+.B DESC
+file and font files.
+.I dir
+is scanned before all other font directories.
+.
+.TP
+.B \-i
+Read the standard input after all the named input files have been
+processed.
+.
+.TP
+.BI \-m name
+Read in the file
+.IB name .tmac\fR.
+If it isn't found, try
+.BI tmac. name
+instead.
+.
+It will be first searched for in directories given with the
+.B \-M
+command line option, then in directories given in the
+.B GROFF_TMAC_PATH
+environment variable, then in the current directory (only if in unsafe
+mode), the home directory, /usr/lib/groff/site-tmac, /usr/share/groff/site-tmac, and
+/usr/share/groff/1.18.1/tmac.
+.
+.TP
+.BI \-M dir
+Search directory (or directory path)
+.I dir
+for macro files.
+.
+This is scanned before all other macro directories.
+.
+.TP
+.BI \-n num
+Number the first page
+.IR num .
+.
+.TP
+.BI \-o list
+Output only pages in
+.IR list ,
+which is a comma-separated list of page ranges;
+.I n
+means print page
+.IR n ,
+.IB m \- n
+means print every page between
+.I m
+and
+.IR n ,
+.BI \- n
+means print every page up to
+.IR n ,
+.IB n \-
+means print every page from
+.IR n .
+.B troff
+will exit after printing the last page in the list.
+.
+.TP
+.BI \-r cn
+.TQ
+.BI \-r name = n
+Set number register
+.I c
+or
+.I name
+to
+.IR n ;
+.I c
+must be a one character name;
+.I n
+can be any troff numeric expression.
+.
+.TP
+.B \-R
+Don't load
+.B troffrc
+and
+.BR troffrc-end .
+.
+.TP
+.BI \-T name
+Prepare output for device
+.IR name ,
+rather than the default
+.BR ps .
+.
+.TP
+.B \-U
+Unsafe mode.
+.
+This will enable the following requests:
+.BR open ,
+.BR opena ,
+.BR pso ,
+.BR sy ,
+and
+.BR pi .
+For security reasons, these potentially dangerous requests are disabled
+otherwise.
+.
+It will also add the current directory to the macro search path.
+.
+.TP
+.B \-v
+Print the version number.
+.
+.TP
+.BI \-w name
+Enable warning
+.IR  name .
+Available warnings are described in the section
+.I WARNINGS
+below.
+.
+For example, to enable all warnings, use
+.B \-w
+.BR all .
+Multiple
+.B \-w
+options are allowed.
+.
+.TP
+.BI \-W name
+Inhibit warning
+.IR name .
+Multiple
+.B \-W
+options are allowed.
+.
+.TP
+.B \-z
+Suppress formatted output.
+.
+.
+.\" --------------------------------------------------------------------
+.SH WARNINGS
+.\" --------------------------------------------------------------------
+.
+The warnings that can be given by
+.B troff
+are divided into the following categories.
+.
+The name associated with each warning is used by the
+.B \-w
+and
+.B \-W
+options; the number is used by the
+.B warn
+request, and by the
+.B .warn
+register; it is always a power of 2 to allow bitwise composition.
+.
+.P
+.TS
+tab(@), center, box;
+c c c | c c c
+r rI lB | r rI lB.
+Bit at Code@Warning at Bit@Code at Warning
+_
+0 at 1@char at 10@1024 at reg
+1 at 2@number at 11@2048 at tab
+2 at 4@break at 12@4096 at right-brace
+3 at 8@delim at 13@8192 at missing
+4 at 16@el at 14@16384 at input
+5 at 32@scale at 15@32768 at escape
+6 at 64@range at 16@65536 at space
+7 at 128@syntax at 17@131072 at font
+8 at 256@di at 18@262144 at ig
+9 at 512@mac at 19@524288 at color
+.TE
+.
+.P
+.nr x \w'\fBright-brace'+1n+\w'00000'u
+.ta \nxuR
+.
+.TP \nxu+3n
+.BR break "\t4"
+In fill mode, lines which could not be broken so that their length was
+less than the line length.
+.
+This is enabled by default.
+.
+.TP
+.BR char "\t1"
+Non-existent characters.
+.
+This is enabled by default.
+.
+.TP
+.BR color "\t524288"
+Color related warnings.
+.
+.TP
+.BR delim "\t8"
+Missing or mismatched closing delimiters.
+.
+.TP
+.BR di "\t256"
+Use of
+.B di
+or
+.B da
+without an argument when there is no current diversion.
+.
+.TP
+.BR el "\t16"
+Use of the
+.B el
+request with no matching
+.B ie
+request.
+.
+.TP
+.BR escape "\t32768"
+Unrecognized escape sequences.
+.
+When an unrecognized escape sequence is encountered, the escape
+character is ignored.
+.
+.TP
+.BR font "\t131072"
+Non-existent fonts.
+.
+This is enabled by default.
+.
+.TP
+.BR ig "\t262144"
+Invalid escapes in text ignored with the
+.B ig
+request.
+.
+These are conditions that are errors when they do not occur in ignored
+text.
+.
+.TP
+.BR input "\t16384"
+Invalid input characters.
+.
+.TP
+.BR mac "\t512"
+Use of undefined strings, macros and diversions.
+.
+When an undefined string, macro or diversion is used, that string is
+automatically defined as empty.
+.
+So, in most cases, at most one warning will be given for each name.
+.
+.TP
+.BR missing "\t8192"
+Requests that are missing non-optional arguments.
+.
+.TP
+.BR number "\t2"
+Invalid numeric expressions.
+.
+This is enabled by default.
+.
+.TP
+.BR range "\t64"
+Out of range arguments.
+.
+.TP
+.BR reg "\t1024"
+Use of undefined number registers.
+.
+When an undefined number register is used, that register is
+automatically defined to have a value of\~0.
+.
+So, in most cases, at most one warning will be given for use of a
+particular name.
+.
+.TP
+.BR right-brace "\t4096"
+Use of
+.B \[rs]}
+where a number was expected.
+.
+.TP
+.BR scale "\t32"
+Meaningless scaling indicators.
+.
+.TP
+.BR space "\t65536"
+Missing space between a request or macro and its argument.
+.
+This warning will be given when an undefined name longer than two
+characters is encountered, and the first two characters of the name
+make a defined name.
+.
+The request or macro will not be invoked.
+.
+When this warning is given, no macro is automatically defined.
+.
+This is enabled by default.
+.
+This warning will never occur in compatibility mode.
+.
+.TP
+.BR syntax "\t128"
+Dubious syntax in numeric expressions.
+.
+.TP
+.BR tab "\t2048"
+Inappropriate use of a tab character.
+Either use of a tab character where a number was expected, or use of tab
+character in an unquoted macro argument.
+.
+.P
+There are also names that can be used to refer to groups of warnings:
+.
+.TP
+.B all
+All warnings except
+.BR di ,
+.BR mac ,
+and
+.BR reg .
+It is intended that this covers all warnings that are useful with
+traditional macro packages.
+.
+.TP
+.B w
+All warnings.
+.
+.
+.\" --------------------------------------------------------------------
+.SH ENVIRONMENT
+.\" --------------------------------------------------------------------
+.
+.TP
+.SM
+.B GROFF_TMAC_PATH
+A colon separated list of directories in which to search for
+macro files.
+.B troff
+will scan directories given in the
+.B \-M
+option before these, and in standard directories (current directory if
+in unsafe mode, home directory,
+.BR /usr/lib/groff/site-tmac ,
+.BR /usr/share/groff/site-tmac ,
+.BR /usr/share/groff/1.18.1/tmac )
+after these.
+.
+.TP
+.SM
+.B GROFF_TYPESETTER
+Default device.
+.
+.TP
+.SM
+.B GROFF_FONT_PATH
+A colon separated list of directories in which to search for the
+.BI dev name
+directory.
+.B troff
+will scan directories given in the
+.B \-F
+option before these, and in standard directories
+.RB ( /usr/share/groff/site-font ,
+.BR /usr/share/groff/1.18.1/font ,
+.BR /usr/lib/font )
+after these.
+.
+.
+.\" --------------------------------------------------------------------
+.SH FILES
+.\" --------------------------------------------------------------------
+.
+.Tp \w'/usr/share/groff/1.18.1/font/devname/DESC'u+3n
+.B /usr/share/groff/1.18.1/tmac/troffrc
+Initialization file (called before any other macro package).
+.
+.TP
+.B /usr/share/groff/1.18.1/tmac/troffrc-end
+Initialization file (called after any other macro package).
+.
+.TP
+.BI /usr/share/groff/1.18.1/tmac/ name .tmac
+.TQ
+.BI /usr/share/groff/1.18.1/tmac/tmac. name
+Macro files
+.
+.TP
+.BI /usr/share/groff/1.18.1/font/dev name /DESC
+Device description file for device
+.IR name .
+.
+.TP
+.BI /usr/share/groff/1.18.1/font/dev name / F
+Font file for font
+.I F
+of device
+.IR name .
+.P
+Note that
+.B troffrc
+and
+.B troffrc-end
+are neither searched in the current nor in the home directory by
+default for security reasons (even if the
+.B \-U
+option is given).
+.
+Use the
+.B \-M
+command line option or the
+.B GROFF_TMAC_PATH
+environment variable to add these directories to the search path if
+necessary.
+.
+.
+.\" --------------------------------------------------------------------
+.SH AUTHOR
+.\" --------------------------------------------------------------------
+.
+Copyright (C) 1989, 2001, 2002 Free Software Foundation, Inc.
+.
+.P
+This document is distributed under the terms of the FDL (GNU Free
+Documentation License) version 1.1 or later.
+.
+You should have received a copy of the FDL on your system, it is also
+available on-line at the
+.URL http://www.gnu.org/copyleft/fdl.html "GNU copyleft site" .
+This document was written by James Clark, with modifications from
+.MTO wl at gnu.org "Werner Lemberg"
+and
+.MTO bwarken at mayn.de "Bernd Warken"
+.
+.P
+This document is part of
+.IR groff ,
+the GNU roff distribution.
+.
+.
+.\" --------------------------------------------------------------------
+.SH "SEE ALSO"
+.\" --------------------------------------------------------------------
+.
+.TP
+.BR groff (1)
+The main program of the
+.I groff
+system, a wrapper around
+.IR troff .
+.
+.TP
+.BR groff (7)
+A description of the
+.I groff
+language, including a short but complete reference of all predefined
+requests, registers, and escapes of plain
+.IR groff .
+From the command line, this is called by
+.RS
+.IP
+.B man 7 groff
+.RE
+.
+.TP
+.BR \%groff_diff (7)
+The differences of the
+.I groff
+language and the
+.I classical troff
+language.
+.
+Currently, this is the most actual document of the
+.I groff
+system.
+.
+.TP
+.BR roff (7)
+An overview over
+.I groff
+and other
+.I roff
+systems, including pointers to further related documentation.
+.
+.P
+The
+.I groff info
+.IR file ,
+cf.\&
+.BR info (1),
+presents all groff documentation within a single document.
+.
+.
+.\" --------------------------------------------------------------------
+.\" Emacs variables
+.\" --------------------------------------------------------------------
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/raw/man1/true.1 b/raw/man1/true.1
new file mode 100644
index 0000000..fa01840
--- /dev/null
+++ b/raw/man1/true.1
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH TRUE "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+true \- do nothing, successfully
+.SH SYNOPSIS
+.B true
+[\fIignored command line arguments\fR]
+.br
+.B true
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Exit with a status code indicating success.
+.PP
+These option names may not be abbreviated.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B true
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B true
+programs are properly installed at your site, the command
+.IP
+.B info true
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/tty.1 b/raw/man1/tty.1
new file mode 100644
index 0000000..be67c28
--- /dev/null
+++ b/raw/man1/tty.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH TTY "1" "October 2003" "tty (coreutils) 5.0" FSF
+.SH NAME
+tty \- print the file name of the terminal connected to standard input
+.SH SYNOPSIS
+.B tty
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the file name of the terminal connected to standard input.
+.TP
+\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+print nothing, only return an exit status
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B tty
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B tty
+programs are properly installed at your site, the command
+.IP
+.B info tty
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/type.1 b/raw/man1/type.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/type.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/typeset.1 b/raw/man1/typeset.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/typeset.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/ulimit.1 b/raw/man1/ulimit.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/ulimit.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/umask.1 b/raw/man1/umask.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/umask.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/unalias.1 b/raw/man1/unalias.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/unalias.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/uname.1 b/raw/man1/uname.1
new file mode 100644
index 0000000..652ca4c
--- /dev/null
+++ b/raw/man1/uname.1
@@ -0,0 +1,65 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH UNAME "1" "October 2003" "uname (coreutils) 5.0" FSF
+.SH NAME
+uname \- print system information
+.SH SYNOPSIS
+.B uname
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print certain system information.  With no OPTION, same as \fB\-s\fR.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+print all information, in the following order:
+.TP
+\fB\-s\fR, \fB\-\-kernel\-name\fR
+print the kernel name
+.TP
+\fB\-n\fR, \fB\-\-nodename\fR
+print the network node hostname
+.TP
+\fB\-r\fR, \fB\-\-kernel\-release\fR
+print the kernel release
+.TP
+\fB\-v\fR, \fB\-\-kernel\-version\fR
+print the kernel version
+.TP
+\fB\-m\fR, \fB\-\-machine\fR
+print the machine hardware name
+.TP
+\fB\-p\fR, \fB\-\-processor\fR
+print the processor type
+.TP
+\fB\-i\fR, \fB\-\-hardware\-platform\fR
+print the hardware platform
+.TP
+\fB\-o\fR, \fB\-\-operating\-system\fR
+print the operating system
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B uname
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B uname
+programs are properly installed at your site, the command
+.IP
+.B info uname
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/unicode_start.1 b/raw/man1/unicode_start.1
new file mode 100644
index 0000000..7c2b939
--- /dev/null
+++ b/raw/man1/unicode_start.1
@@ -0,0 +1,39 @@
+.\" @(#)unicode_start.1 1.0 010203 aeb
+.TH UNICODE_START 1 "3 Feb 2001"
+.SH NAME
+unicode_start \- put keyboard and console in unicode mode
+.SH SYNOPSIS
+.B unicode_start
+.RI [ font " [" umap ]]
+.SH DESCRIPTION
+.IX "unicode_start command" "" "\fLunicode_start\fR command"  
+.LP
+The
+.B unicode_start
+command will put the keyboard and console into Unicode (UTF-8) mode.
+.LP
+For the keyboard this means that one can attach 16-bit U+xxxx values
+to keyboard keys using
+.BR loadkeys (1),
+and have these appear as UTF-8 input to user programs.
+Also, that one can type hexadecimal Alt-xxxx using the numeric keypad,
+and again produce UTF-8.
+.LP
+For the console this means that the kernel expects UTF-8 output
+from user programs, and displays the output accordingly.
+.LP
+The parameter
+.I font
+is a font that is loaded. It should have a built-in Unicode map,
+or, if it hasn't, such a map can be given explicitly as second parameter.
+When no font was specified, some default font is loaded.
+.SH NOTE
+Unicode mode is a parameter with a value per virtual console.
+However, usually the font and keymap is common to all consoles.
+.SH "SEE ALSO"
+.BR dumpkeys (1),
+.BR kbd_mode (1),
+.BR loadkeys (1),
+.BR unicode_stop (1),
+.BR utf-8(7),
+.BR setfont (8)
diff --git a/raw/man1/unicode_stop.1 b/raw/man1/unicode_stop.1
new file mode 100644
index 0000000..2fa2015
--- /dev/null
+++ b/raw/man1/unicode_stop.1
@@ -0,0 +1,20 @@
+.\" @(#)unicode_stop.1 1.0 010203 aeb
+.TH UNICODE_STOP 1 "3 Feb 2001"
+.SH NAME
+unicode_stop \- revert keyboard and console from unicode mode
+.SH SYNOPSIS
+.B unicode_stop
+.SH DESCRIPTION
+.IX "unicode_stop command" "" "\fLunicode_stop\fR command"  
+.LP
+The
+.B unicode_stop
+command will more-or-less undo the effect of
+.BR unicode_start .
+It puts the keyboard in ASCII (XLATE) mode, and clears
+the console UTF-8 mode.
+.SH "SEE ALSO"
+.BR kbd_mode (1),
+.BR unicode_start (1),
+.BR utf-8(7),
+.BR setfont (8)
diff --git a/raw/man1/uniq.1 b/raw/man1/uniq.1
new file mode 100644
index 0000000..70555ad
--- /dev/null
+++ b/raw/man1/uniq.1
@@ -0,0 +1,69 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH UNIQ "1" "October 2003" "uniq (coreutils) 5.0" FSF
+.SH NAME
+uniq \- remove duplicate lines from a sorted file
+.SH SYNOPSIS
+.B uniq
+[\fIOPTION\fR]... [\fIINPUT \fR[\fIOUTPUT\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Discard all but one of successive identical lines from INPUT (or
+standard input), writing to OUTPUT (or standard output).
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-c\fR, \fB\-\-count\fR
+prefix lines by the number of occurrences
+.TP
+\fB\-d\fR, \fB\-\-repeated\fR
+only print duplicate lines
+.TP
+\fB\-D\fR, \fB\-\-all\-repeated\fR[=\fIdelimit\-method\fR] print all duplicate lines
+delimit-method={none(default),prepend,separate}
+Delimiting is done with blank lines.
+.TP
+\fB\-f\fR, \fB\-\-skip\-fields\fR=\fIN\fR
+avoid comparing the first N fields
+.TP
+\fB\-i\fR, \fB\-\-ignore\-case\fR
+ignore differences in case when comparing
+.TP
+\fB\-s\fR, \fB\-\-skip\-chars\fR=\fIN\fR
+avoid comparing the first N characters
+.TP
+\fB\-u\fR, \fB\-\-unique\fR
+only print unique lines
+.TP
+\fB\-w\fR, \fB\-\-check\-chars\fR=\fIN\fR
+compare no more than N characters in lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A field is a run of whitespace, then non-whitespace characters.
+Fields are skipped before chars.
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B uniq
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B uniq
+programs are properly installed at your site, the command
+.IP
+.B info uniq
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/unset.1 b/raw/man1/unset.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/unset.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/uptime.1 b/raw/man1/uptime.1
new file mode 100644
index 0000000..f215999
--- /dev/null
+++ b/raw/man1/uptime.1
@@ -0,0 +1,37 @@
+.\"             -*-Nroff-*-
+.\"
+.TH UPTIME 1 "26 Jan 1993" "Cohesive Systems" "Linux User's Manual"
+.SH NAME
+uptime \- Tell how long the system has been running.
+.SH SYNOPSIS
+.B uptime
+.br
+.BR uptime " [" "\-V" ]
+.SH DESCRIPTION
+.B uptime
+gives a one line display of the following information.
+The current time,
+how long the system has been running,
+how many users are currently logged on,
+and the system load averages for the past 1, 5, and 15 minutes.
+.sp
+This is the same information contained in the header line displayed by 
+.BR w (1).
+.SH FILES
+.IR /var/run/utmp "	information about who is currently logged on"
+.br
+.IR /proc "	process information"
+.SH AUTHORS
+.B uptime
+was written by Larry Greenfield <greenfie at gauss.rutgers.edu> and
+Michael K. Johnson <johnsonm at sunsite.unc.edu>.
+
+The procps package is maintained by Robert Love and was created by Michael
+Johnson.
+
+Please send bug reports to <procps-list at redhat.com>.
+.SH "SEE ALSO"
+.BR ps (1),
+.BR top (1),
+.BR utmp (5),
+.BR w (1)
diff --git a/raw/man1/usleep.1 b/raw/man1/usleep.1
new file mode 100644
index 0000000..2d7520f
--- /dev/null
+++ b/raw/man1/usleep.1
@@ -0,0 +1,25 @@
+.TH USLEEP 1 "Red Hat, Inc" \" -*- nroff -*-
+.SH NAME
+usleep \- sleep some number of microseconds
+.SH SYNOPSIS
+.B usleep
+[\fInumber\fP]
+.SH DESCRIPTION
+.B usleep
+sleeps some number of microseconds.  The default is 1.
+.SH OPTIONS
+\fI--usage\fP
+Show short usage message.
+.TP
+\fI--help, -?\fP
+Print help information.
+.TP
+\fI-v, --version\fP
+Print version information.
+.SH BUGS
+Probably not accurate on many machines down to the microsecond.  Count
+on precision only to -4 or maybe -5.
+.SH AUTHOR
+Donald Barnes <djb at redhat.com>
+.br
+Erik Troan <ewt at redhat.com>
diff --git a/raw/man1/vacuumdb.1 b/raw/man1/vacuumdb.1
new file mode 100644
index 0000000..2693fd0
--- /dev/null
+++ b/raw/man1/vacuumdb.1
@@ -0,0 +1,162 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "VACUUMDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+vacuumdb \- garbage-collect and analyze a PostgreSQL database
+
+.SH SYNOPSIS
+.sp
+\fBvacuumdb\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR[\fR \fB--full\fR\fR | \fR\fB-f\fR\fR ]\fR \fR[\fR \fB--verbose\fR\fR | \fR\fB-v\fR\fR ]\fR \fR[\fR \fB--analyze\fR\fR | \fR\fB-z\fR\fR ]\fR\fR [ \fR\fB--table | -t \fItable\fB\fR [ \fB( \fIcolumn\fB [,...] ) \fR]\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBvacuumdb\fR\fR [ \fR\fB\fIconnection-options\fB\fR...\fB \fR\fR]\fR \fR[\fR \fB--all\fR\fR | \fR\fB-a\fR\fR ]\fR \fR[\fR \fB--full\fR\fR | \fR\fB-f\fR\fR ]\fR \fR[\fR \fB--verbose\fR\fR | \fR\fB-v\fR\fR ]\fR \fR[\fR \fB--analyze\fR\fR | \fR\fB-z\fR\fR ]\fR
+.SH "DESCRIPTION"
+.PP
+\fBvacuumdb\fR is a utility for cleaning a
+PostgreSQL database.
+\fBvacuumdb\fR will also generate internal statistics
+used by the PostgreSQL query optimizer.
+.PP
+\fBvacuumdb\fR is a wrapper around the SQL
+command VACUUM [\fBvacuum\fR(7)].
+There is no effective difference between vacuuming databases via
+this utility and via other methods for accessing the server.
+.SH "OPTIONS"
+.PP
+\fBvacuumdb\fR accepts the following command-line arguments:
+.TP
+\fB-a\fR
+.TP
+\fB--all\fR
+Vacuum all databases.
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+Specifies the name of the database to be cleaned or analyzed.
+If this is not specified and \fB-a\fR (or
+\fB--all\fR) is not used, the database name is read
+from the environment variable \fBPGDATABASE\fR. If
+that is not set, the user name specified for the connection is
+used.
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+Echo the commands that \fBvacuumdb\fR generates
+and sends to the server.
+.TP
+\fB-f\fR
+.TP
+\fB--full\fR
+Perform ``full'' vacuuming.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+Do not display a response.
+.TP
+\fB-t \fItable\fB [ (\fIcolumn\fB [,...]) ]\fR
+.TP
+\fB--table \fItable\fB [ (\fIcolumn\fB [,...]) ]\fR
+Clean or analyze \fItable\fR only.
+Column names may be specified only in conjunction with
+the \fB--analyze\fR option.
+.sp
+.RS
+.B "Tip:"
+If you specify columns, you probably have to escape the parentheses
+from the shell. (See examples below.)
+.RE
+.sp
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+Print detailed information during processing.
+.TP
+\fB-z\fR
+.TP
+\fB--analyze\fR
+Calculate statistics for use by the optimizer.
+.PP
+.PP
+\fBvacuumdb\fR also accepts 
+the following command-line arguments for connection parameters:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+Specifies the host name of the machine on which the 
+server
+is running. If the value begins with a slash, it is used 
+as the directory for the Unix domain socket.
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+Specifies the TCP port or local Unix domain socket file 
+extension on which the server
+is listening for connections.
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+User name to connect as
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+Force password prompt.
+.PP
+.SH "ENVIRONMENT"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+Default connection parameters
+.SH "DIAGNOSTICS"
+.PP
+In case of difficulty, see VACUUM [\fBvacuum\fR(7)] and \fBpsql\fR(1) for
+discussions of potential problems and error messages.
+The database server must be running at the
+targeted host. Also, any default connection settings and environment
+variables used by the \fBlibpq\fR front-end
+library will apply.
+.SH "NOTES"
+.PP
+\fBvacuumdb\fR might need to connect several
+times to the PostgreSQL server, asking
+for a password each time. It is convenient to have a
+\fI$HOME/.pgpass\fR file in such cases.
+.SH "EXAMPLES"
+.PP
+To clean the database test:
+.sp
+.nf
+$ \fBvacuumdb test\fR
+.sp
+.fi
+.PP
+To clean and analyze for the optimizer a database named
+bigdb:
+.sp
+.nf
+$ \fBvacuumdb --analyze bigdb\fR
+.sp
+.fi
+.PP
+To clean a single table
+foo in a database named
+xyzzy, and analyze a single column
+bar of the table for the optimizer:
+.sp
+.nf
+$ \fBvacuumdb --analyze --verbose --table 'foo(bar)' xyzzy\fR
+.sp
+.fi
+.SH "SEE ALSO"
+VACUUM [\fBvacuum\fR(7)]
+
diff --git a/raw/man1/vi.1 b/raw/man1/vi.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/vi.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/view.1 b/raw/man1/view.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/view.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/vim.1 b/raw/man1/vim.1
new file mode 100644
index 0000000..b6f1d24
--- /dev/null
+++ b/raw/man1/vim.1
@@ -0,0 +1,493 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option, so that writing files is not possible.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--version
+Print version information and exit.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/share/vim/vim62/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/share/vim/vim62/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/share/vim/vim62/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/share/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/share/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/share/vim/vim62/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/share/vim/vim62/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/share/vim/vim62/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/share/vim/vim62/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/share/vim/vim62/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/raw/man1/vimtutor.1 b/raw/man1/vimtutor.1
new file mode 100644
index 0000000..ef3a738
--- /dev/null
+++ b/raw/man1/vimtutor.1
@@ -0,0 +1,54 @@
+.TH VIMTUTOR 1 "2001 April 2"
+.SH NAME
+vimtutor \- the Vim tutor
+.SH SYNOPSIS
+.br
+.B vimtutor [language]
+.SH DESCRIPTION
+.B Vimtutor
+starts the
+.B Vim
+tutor.
+It copies the tutor file first, so that it can be modified without changing
+the original file.
+.PP
+The
+.B Vimtutor
+is useful for people that want to learn their first
+.B Vim
+commands.
+.PP
+The optional [language] argument is the two-letter name of a language, like
+"it" or "es".
+If the [language] argument is missing, the language of the current locale will
+be used.
+If a tutor in this language is available, it will be used.
+Otherwise the English version will be used.
+.PP
+.B Vim
+is always started in Vi compatible mode.
+.SH FILES
+.TP 15
+/usr/share/vim/vim62/tutor/tutor[.language]
+The
+.B Vimtutor
+text file(s).
+.TP 15
+/usr/share/vim/vim62/tutor/tutor.vim
+The Vim script used to copy the
+.B Vimtutor
+text file.
+.SH AUTHOR
+The
+.B Vimtutor
+was originally written for Vi by Michael C. Pierce and Robert K. Ware,
+Colorado School of Mines using ideas supplied by Charles Smith,
+Colorado State University.
+E-mail: bware at mines.colorado.edu.
+.br
+It was modified for
+.B Vim
+by Bram Moolenaar.
+For the names of the translators see the tutor files.
+.SH SEE ALSO
+vim(1)
diff --git a/raw/man1/virtex.1 b/raw/man1/virtex.1
new file mode 100644
index 0000000..b6cf832
--- /dev/null
+++ b/raw/man1/virtex.1
@@ -0,0 +1 @@
+.so man1/tex.1
diff --git a/raw/man1/w.1 b/raw/man1/w.1
new file mode 100644
index 0000000..da3c6ad
--- /dev/null
+++ b/raw/man1/w.1
@@ -0,0 +1,86 @@
+.\" w.1 - manpage for the w(1) utility, part of procps
+.TH W 1 "10 Aug 2003" "Linux" "Linux User's Manual"
+.SH NAME
+w \- show who is logged on and what they are doing
+.SH SYNOPSIS
+.B w \-
+.RB [ -husfV ]
+.RI [ user ]
+.SH DESCRIPTION
+.B "w "
+displays information about the users currently on the machine and their
+processes. The header shows (in this order) the current time, how long the
+system has been running, how many users are currently logged on, and the system
+load averages for the past 1, 5, and 15 minutes.
+.sp
+The following entries are displayed for each user: their login name, the tty
+name, their remote host, their login time, their idle time, JCPU, PCPU, and the
+command line of their current process.
+.sp
+The
+.B JCPU
+time is the time used by all processes attached to the tty.  It
+does not include past background jobs, but does include currently
+running background jobs.
+.sp
+The
+.B PCPU
+time is the time used by the current process, which is listed in the "what"
+field.
+
+.PP
+.SH "COMMAND\-LINE OPTIONS"
+.TP 0.5i
+.B "\-h "
+Don't print the header.
+.TP 0.5i
+.B "\-u "
+Ignores the username while figuring out the current process and cpu
+times.  To demonstrate this, do a "su" and do a "w" and a "w -u".
+.TP 0.5i
+.B "\-s "
+Use the short format.
+Don't print the login time, JCPU or PCPU times.
+.TP 0.5i
+.B "\-f "
+Toggle printing the
+.B from
+(remote hostname) field.  The default is for the
+.B from
+field to be printed, although your system administrator or distribution
+maintainer may have compiled a version in which the
+.B from
+field is not shown by default.
+.TP 0.5i
+.B "\-V "
+Display version information and exit.
+.TP 0.5i
+.B "user "
+Show information about the specified user only.
+
+.SH FILES
+.ta
+.I /etc/utmp
+information about who is currently logged on
+.I /proc
+process information
+.fi
+
+.SH "SEE ALSO"
+.BR free (1),
+.BR ps (1),
+.BR top (1),
+.BR uptime (1),
+.BR utmp (5),
+.BR who (1)
+
+.SH AUTHORS
+.B w
+was re-written almost entirely by Charles Blake, based on the version by Larry
+Greenfield <greenfie at gauss.rutgers.edu> and Michael K. Johnson
+<johnsonm at redhat.com>.
+
+The procps package is maintained by Robert Love and was created by Michael
+Johnson.
+
+Please send bug reports to <procps-list at redhat.com>.
diff --git a/raw/man1/wait.1 b/raw/man1/wait.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/raw/man1/wait.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/raw/man1/wall.1 b/raw/man1/wall.1
new file mode 100644
index 0000000..f086be0
--- /dev/null
+++ b/raw/man1/wall.1
@@ -0,0 +1,58 @@
+.TH WALL 1 "15 April 2003" "" "Linux User's Manual"
+
+.SH NAME
+wall -- send a message to everybody's terminal.
+
+.SH SYNOPSIS
+.B wall
+.RB [ \-n ]
+.RB [ " message " ]
+
+.SH DESCRIPTION
+.B Wall
+sends a message to everybody logged in with their
+.IR mesg (1)
+permission
+set to
+.BR yes .
+The message can be given as an argument to
+.IR wall ,
+or it can be sent to
+.IR wall 's
+standard input.  When using the standard input from a terminal,
+the message should be terminated with the
+.B EOF
+key (usually Control-D).
+.PP
+The length of the message is limited to 20 lines.
+For every invocation of
+.I wall
+a notification will be written to syslog, with facility
+.B LOG_USER
+and level
+.BR LOG_INFO .
+
+.SH OPTIONS
+.IP \fB\-n\fn
+Suppresses the normal banner printed by
+.IR wall ,
+changing it to "Remote broadcast message".
+This option is only available for root if
+.I wall
+is installed set-group-id, and is used by
+.IR rpc.walld (8).
+.PP
+
+.SH ENVIRONMENT
+.I Wall
+ignores the
+.B TZ
+variable - the time printed in the banner is based on the systems
+local time.
+
+.SH SEE ALSO
+.IR mesg (1),
+.IR rpc.rwalld (8).
+
+.SH AUTHOR
+Miquel van Smoorenburg, miquels at cistron.nl
diff --git a/raw/man1/wbinfo.1 b/raw/man1/wbinfo.1
new file mode 100644
index 0000000..f740448
--- /dev/null
+++ b/raw/man1/wbinfo.1
@@ -0,0 +1,203 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "WBINFO" 1 "" "" ""
+.SH NAME
+wbinfo \- Query information from winbind daemon
+.SH "SYNOPSIS"
+
+.nf
+\fBwbinfo\fR [-a user%password] [-c username] [-C groupname] [--domain domain] [-I ip] [-s sid] [-u] [-U uid] [-g] [--get-auth-user] [-G gid] [-m] [-n name] [-N netbios-name] [-o user:group] [-O user:group] [-p] [-r user] [--set-auth-user user%password] [--sequence] [-S sid] [-t] [-x username] [-X groupname] [-Y sid]
+      
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+The \fBwbinfo\fR program queries and returns information created and used by the \fBwinbindd\fR(8) daemon\&.
+
+.PP
+The \fBwinbindd\fR(8) daemon must be configured and running for the \fBwbinfo\fR program to be able to return information\&.
+
+.SH "OPTIONS"
+
+.TP
+-a username%password
+Attempt to authenticate a user via winbindd\&. This checks both authenticaion methods and reports its results\&.
+
+
+.TP
+-c user
+Create a local winbind user\&.
+
+
+.TP
+-C group
+Create a local winbindd group\&.
+
+
+.TP
+--domain name
+This parameter sets the domain on which any specified operations will performed\&. If special domain name '\&.' is used to represent the current domain to which winbindd belongs\&. Currently only the \fB--sequence\fR, \fB-u\fR, and \fB-g\fR options honor this parameter\&.
+
+
+.TP
+-g
+This option will list all groups available in the Windows NT domain for which the \fBSamba\fR(7) daemon is operating in\&. Groups in all trusted domains will also be listed\&. Note that this operation does not assign group ids to any groups that have not already been seen by \fBwinbindd\fR(8)\&.
+
+
+.TP
+--get-auth-user
+Print username and password used by winbindd during session setup to a domain controller\&. Username and password can be set using '-A'\&. Only available for root\&.
+
+
+.TP
+-G gid
+Try to convert a UNIX group id to a Windows NT SID\&. If the gid specified does not refer to one within the idmap gid range then the operation will fail\&.
+
+
+.TP
+-I ip
+The \fI-I\fR option queries \fBwinbindd\fR(8) to send a node status request to get the NetBIOS name associated with the IP address specified by the \fIip\fR parameter\&.
+
+
+.TP
+-m
+Produce a list of domains trusted by the Windows NT server \fBwinbindd\fR(8) contacts when resolving names\&. This list does not include the Windows NT domain the server is a Primary Domain Controller for\&.
+
+
+.TP
+-n name
+The \fI-n\fR option queries \fBwinbindd\fR(8) for the SID associated with the name specified\&. Domain names can be specified before the user name by using the winbind separator character\&. For example CWDOM1/Administrator refers to the Administrator user in the domain CWDOM1\&. If no domain is specified then the domain used is the one specified in the \fBsmb.conf\fR(5) \fIworkgroup \fR parameter\&.
+
+
+.TP
+-N name
+The \fI-N\fR option queries \fBwinbindd\fR(8) to query the WINS server for the IP address associated with the NetBIOS name specified by the \fIname\fR parameter\&.
+
+
+.TP
+-o user:group
+Add a winbindd local group as a secondary group for the specified winbindd local user\&.
+
+
+.TP
+-O user:group
+Remove a winbindd local group as a secondary group for the specified winbindd local user\&.
+
+
+.TP
+-p
+Check whether winbindd is still alive\&. Prints out either 'succeeded' or 'failed'\&.
+
+
+.TP
+-r username
+Try to obtain the list of UNIX group ids to which the user belongs\&. This only works for users defined on a Domain Controller\&.
+
+
+.TP
+-s sid
+Use \fI-s\fR to resolve a SID to a name\&. This is the inverse of the \fI-n \fR option above\&. SIDs must be specified as ASCII strings in the traditional Microsoft format\&. For example, S-1-5-21-1455342024-3071081365-2475485837-500\&.
+
+
+.TP
+--set-auth-user username%password
+Store username and password used by winbindd during session setup to a domain controller\&. This enables winbindd to operate in a Windows 2000 domain with Restrict Anonymous turned on (a\&.k\&.a\&. Permissions compatiable with Windows 2000 servers only)\&.
+
+
+.TP
+--sequence
+Show sequence numbers of all known domains
+
+
+.TP
+-S sid
+Convert a SID to a UNIX user id\&. If the SID does not correspond to a UNIX user mapped by \fBwinbindd\fR(8) then the operation will fail\&.
+
+
+.TP
+-t
+Verify that the workstation trust account created when the Samba server is added to the Windows NT domain is working\&.
+
+
+.TP
+-u
+This option will list all users available in the Windows NT domain for which the \fBwinbindd\fR(8) daemon is operating in\&. Users in all trusted domains will also be listed\&. Note that this operation does not assign user ids to any users that have not already been seen by \fBwinbindd\fR(8) \&.
+
+
+.TP
+-U uid
+Try to convert a UNIX user id to a Windows NT SID\&. If the uid specified does not refer to one within the idmap uid range then the operation will fail\&.
+
+
+.TP
+-x user
+Delete an existing local winbind user\&.
+
+
+.TP
+-X group
+Delete an existing local winbindd group\&.
+
+
+.TP
+-Y sid
+Convert a SID to a UNIX group id\&. If the SID does not correspond to a UNIX group mapped by \fBwinbindd\fR(8) then the operation will fail\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.SH "EXIT STATUS"
+
+.PP
+The wbinfo program returns 0 if the operation succeeded, or 1 if the operation failed\&. If the \fBwinbindd\fR(8) daemon is not working \fBwbinfo\fR will always return failure\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBwinbindd\fR(8)
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+\fBwbinfo\fR and \fBwinbindd\fR were written by Tim Potter\&.
+
+.PP
+The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man1/wc.1 b/raw/man1/wc.1
new file mode 100644
index 0000000..bb2e228
--- /dev/null
+++ b/raw/man1/wc.1
@@ -0,0 +1,55 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH WC "1" "October 2003" "wc (coreutils) 5.0" FSF
+.SH NAME
+wc \- print the number of bytes, words, and lines in files
+.SH SYNOPSIS
+.B wc
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print byte, word, and newline counts for each FILE, and a total line if
+more than one FILE is specified.  With no FILE, or when FILE is -,
+read standard input.
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR
+print the byte counts
+.TP
+\fB\-m\fR, \fB\-\-chars\fR
+print the character counts
+.TP
+\fB\-l\fR, \fB\-\-lines\fR
+print the newline counts
+.TP
+\fB\-L\fR, \fB\-\-max\-line\-length\fR
+print the length of the longest line
+.TP
+\fB\-w\fR, \fB\-\-words\fR
+print the word counts
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Paul Rubin and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B wc
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B wc
+programs are properly installed at your site, the command
+.IP
+.B info wc
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/whatis.1 b/raw/man1/whatis.1
new file mode 100644
index 0000000..a407a48
--- /dev/null
+++ b/raw/man1/whatis.1
@@ -0,0 +1,33 @@
+.\"
+.\" Generated automatically from whatis.1.in by the
+.\" configure script.
+.\"
+.\" Man page for whatis
+.\"
+.\" Copyright (c) 1990, 1991, John W. Eaton.
+.\"
+.\" You may distribute under the terms of the GNU General Public
+.\" License as specified in the README file that comes with the man 1.0
+.\" distribution.  
+.\"
+.\" John W. Eaton
+.\" jwe at che.utexas.edu
+.\" Department of Chemical Engineering
+.\" The University of Texas at Austin
+.\" Austin, Texas  78712
+.\"
+.TH whatis 1 "Jan 5, 1991"
+.LO 1
+.SH NAME
+whatis \- search the whatis database for complete words.
+.SH SYNOPSIS
+.BI whatis
+keyword ...
+.SH DESCRIPTION
+whatis searches a set of database files containing short descriptions
+of system commands for keywords and displays the result on the
+standard output.  Only complete word matches are displayed.
+
+The whatis database is created using the command /usr/sbin/makewhatis.
+.SH "SEE ALSO"
+apropos(1), man(1).
diff --git a/raw/man1/who.1 b/raw/man1/who.1
new file mode 100644
index 0000000..ef52703
--- /dev/null
+++ b/raw/man1/who.1
@@ -0,0 +1,93 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH WHO "1" "October 2003" "who (coreutils) 5.0" FSF
+.SH NAME
+who \- show who is logged on
+.SH SYNOPSIS
+.B who
+[\fIOPTION\fR]... [ \fIFILE | ARG1 ARG2 \fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+same as \fB\-b\fR \fB\-d\fR \fB\-\-login\fR \fB\-p\fR \fB\-r\fR \fB\-t\fR \fB\-T\fR \fB\-u\fR
+.TP
+\fB\-b\fR, \fB\-\-boot\fR
+time of last system boot
+.TP
+\fB\-d\fR, \fB\-\-dead\fR
+print dead processes
+.TP
+\fB\-H\fR, \fB\-\-heading\fR
+print line of column headings
+.TP
+\fB\-i\fR, \fB\-\-idle\fR
+add idle time as HOURS:MINUTES, . or old
+(deprecated, use \fB\-u\fR)
+.TP
+\fB\-\-login\fR
+print system login processes
+(equivalent to SUS \fB\-l\fR)
+.TP
+\fB\-l\fR, \fB\-\-lookup\fR
+attempt to canonicalize hostnames via DNS
+(-l is deprecated, use \fB\-\-lookup\fR)
+.TP
+\fB\-m\fR
+only hostname and user associated with stdin
+.TP
+\fB\-p\fR, \fB\-\-process\fR
+print active processes spawned by init
+.TP
+\fB\-q\fR, \fB\-\-count\fR
+all login names and number of users logged on
+.TP
+\fB\-r\fR, \fB\-\-runlevel\fR
+print current runlevel
+.TP
+\fB\-s\fR, \fB\-\-short\fR
+print only name, line, and time (default)
+.TP
+\fB\-t\fR, \fB\-\-time\fR
+print last system clock change
+.TP
+\fB\-T\fR, \fB\-w\fR, \fB\-\-mesg\fR
+add user's message status as +, - or ?
+.TP
+\fB\-u\fR, \fB\-\-users\fR
+list users logged in
+.TP
+\fB\-\-message\fR
+same as \fB\-T\fR
+.TP
+\fB\-\-writable\fR
+same as \fB\-T\fR
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If FILE is not specified, use /var/run/utmp.  /var/log/wtmp as FILE is common.
+If ARG1 ARG2 given, \fB\-m\fR presumed: `am i' or `mom likes' are usual.
+.SH AUTHOR
+Written by Joseph Arceneaux, David MacKenzie, and Michael Stone.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B who
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B who
+programs are properly installed at your site, the command
+.IP
+.B info who
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/wish.1 b/raw/man1/wish.1
new file mode 100644
index 0000000..f1fd28b
--- /dev/null
+++ b/raw/man1/wish.1
@@ -0,0 +1,421 @@
+'\"
+'\" Copyright (c) 1991-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: wish.1,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: wish.1,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH wish 1 8.0 Tk "Tk Applications"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+wish \- Simple windowing shell
+.SH SYNOPSIS
+\fBwish\fR ?\fIfileName arg arg ...\fR?
+.SH OPTIONS
+.IP "\fB\-colormap \fInew\fR" 20
+Specifies that the window should have a new private colormap instead of
+using the default colormap for the screen.
+.IP "\fB\-display \fIdisplay\fR" 20
+Display (and screen) on which to display window.
+.IP "\fB\-geometry \fIgeometry\fR" 20
+Initial geometry to use for window.  If this option is specified, its
+value is stored in the \fBgeometry\fR global variable of the application's
+Tcl interpreter.
+.IP "\fB\-name \fIname\fR" 20
+Use \fIname\fR as the title to be displayed in the window, and
+as the name of the interpreter for \fBsend\fR commands.
+.IP "\fB\-sync\fR" 20
+Execute all X server commands synchronously, so that errors
+are reported immediately.  This will result in much slower
+execution, but it is useful for debugging.
+.VS 8.0 br
+.IP "\fB\-use\fR \fIid\fR" 20
+Specifies that the main window for the application is to be embedded in
+the window whose identifier is \fIid\fR, instead of being created as an
+independent toplevel window.  \fIId\fR must be specified in the same
+way as the value for the \fB\-use\fR option for toplevel widgets (i.e.
+it has a form like that returned by the \fBwinfo id\fR command).
+.VE
+.IP "\fB\-visual \fIvisual\fR" 20
+Specifies the visual to use for the window.
+\fIVisual\fR may have any of the forms supported by the \fBTk_GetVisual\fR
+procedure.
+.IP "\fB\-\|\-\fR" 20
+Pass all remaining arguments through to the script's \fBargv\fR
+variable without interpreting them.
+This provides a mechanism for passing arguments such as \fB\-name\fR
+to a script instead of having \fBwish\fR interpret them.
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBWish\fR is a simple program consisting of the Tcl command
+language, the Tk toolkit, and a main program that reads commands
+from standard input or from a file.
+It creates a main window and then processes Tcl commands.
+If \fBwish\fR is invoked with no arguments, or with a first argument
+that starts with ``\-'', then it reads Tcl commands interactively from
+standard input.
+It will continue processing commands until all windows have been
+deleted or until end-of-file is reached on standard input.
+If there exists a file \fB.wishrc\fR in the home directory of
+the user, \fBwish\fR evaluates the file as a Tcl script
+just before reading the first command from standard input.
+.PP
+If \fBwish\fR is invoked with an initial \fIfileName\fR argument, then 
+\fIfileName\fR is treated as the name of a script file.
+\fBWish\fR will evaluate the script in \fIfileName\fR (which
+presumably creates a user interface), then it will respond to events
+until all windows have been deleted.
+Commands will not be read from standard input.
+There is no automatic evaluation of \fB.wishrc\fR in this
+case, but the script file can always \fBsource\fR it if desired.
+
+.SH "OPTIONS"
+.PP
+\fBWish\fR automatically processes all of the command-line options
+described in the \fBOPTIONS\fR summary above.
+Any other command-line arguments besides these are passed through
+to the application using the \fBargc\fR and \fBargv\fR variables
+described later.
+
+.SH "APPLICATION NAME AND CLASS"
+.PP
+The name of the application, which is used for purposes such as
+\fBsend\fR commands, is taken from the \fB\-name\fR option,
+if it is specified;  otherwise it is taken from \fIfileName\fR,
+if it is specified, or from the command name by which
+\fBwish\fR was invoked.  In the last two cases, if the name contains a ``/''
+character, then only the characters after the last slash are used
+as the application name.
+.PP
+The class of the application, which is used for purposes such as
+specifying options with a \fBRESOURCE_MANAGER\fR property or .Xdefaults
+file, is the same as its name except that the first letter is
+capitalized.
+
+.SH "VARIABLES"
+.PP
+\fBWish\fR sets the following Tcl variables:
+.TP 15
+\fBargc\fR
+Contains a count of the number of \fIarg\fR arguments (0 if none),
+not including the options described above.
+.TP 15
+\fBargv\fR
+Contains a Tcl list whose elements are the \fIarg\fR arguments
+that follow a \fB\-\|\-\fR option or don't match any of the
+options described in OPTIONS above, in order, or an empty string
+if there are no such arguments.
+.TP 15
+\fBargv0\fR
+Contains \fIfileName\fR if it was specified.
+Otherwise, contains the name by which \fBwish\fR was invoked.
+.TP 15
+\fBgeometry\fR
+If the \fB\-geometry\fR option is specified, \fBwish\fR copies its
+value into this variable.  If the variable still exists after
+\fIfileName\fR has been evaluated, \fBwish\fR uses the value of
+the variable in a \fBwm geometry\fR command to set the main
+window's geometry.
+.TP 15
+\fBtcl_interactive\fR
+Contains 1 if \fBwish\fR is reading commands interactively (\fIfileName\fR
+was not specified and standard input is a terminal-like
+device), 0 otherwise.
+
+.SH "SCRIPT FILES"
+.PP
+If you create a Tcl script in a file whose first line is
+.CS
+\fB#!/usr/local/bin/wish\fR
+.CE
+then you can invoke the script file directly from your shell if
+you mark it as executable.
+This assumes that \fBwish\fR has been installed in the default
+location in /usr/local/bin;  if it's installed somewhere else
+then you'll have to modify the above line to match.
+Many UNIX systems do not allow the \fB#!\fR line to exceed about
+30 characters in length, so be sure that the \fBwish\fR executable
+can be accessed with a short file name.
+.PP
+An even better approach is to start your script files with the
+following three lines:
+.CS
+\fB#!/bin/sh
+# the next line restarts using wish \e
+exec wish "$0" "$@"\fR
+.CE
+This approach has three advantages over the approach in the previous
+paragraph.  First, the location of the \fBwish\fR binary doesn't have
+to be hard-wired into the script:  it can be anywhere in your shell
+search path.  Second, it gets around the 30-character file name limit
+in the previous approach.
+Third, this approach will work even if \fBwish\fR is
+itself a shell script (this is done on some systems in order to
+handle multiple architectures or operating systems:  the \fBwish\fR
+script selects one of several binaries to run).  The three lines
+cause both \fBsh\fR and \fBwish\fR to process the script, but the
+\fBexec\fR is only executed by \fBsh\fR.
+\fBsh\fR processes the script first;  it treats the second
+line as a comment and executes the third line.
+The \fBexec\fR statement cause the shell to stop processing and
+instead to start up \fBwish\fR to reprocess the entire script.
+When \fBwish\fR starts up, it treats all three lines as comments,
+since the backslash at the end of the second line causes the third
+line to be treated as part of the comment on the second line.
+
+.SH PROMPTS
+.PP
+When \fBwish\fR is invoked interactively it normally prompts for each
+command with ``\fB% \fR''.  You can change the prompt by setting the
+variables \fBtcl_prompt1\fR and \fBtcl_prompt2\fR.  If variable
+\fBtcl_prompt1\fR exists then it must consist of a Tcl script
+to output a prompt;  instead of outputting a prompt \fBwish\fR
+will evaluate the script in \fBtcl_prompt1\fR.
+The variable \fBtcl_prompt2\fR is used in a similar way when
+a newline is typed but the current command isn't yet complete;
+if \fBtcl_prompt2\fR isn't set then no prompt is output for
+incomplete commands.
+
+.SH KEYWORDS
+shell, toolkit
diff --git a/raw/man1/xargs.1 b/raw/man1/xargs.1
new file mode 100644
index 0000000..a9f39a7
--- /dev/null
+++ b/raw/man1/xargs.1
@@ -0,0 +1,112 @@
+.TH XARGS 1L \" -*- nroff -*-
+.SH NAME
+xargs \- build and execute command lines from standard input
+.SH SYNOPSIS
+.B xargs
+[\-0prtx] [\-e[eof-str]] [\-i[replace-str]] [\-l[max-lines]]
+[\-n max-args] [\-s max-chars] [\-P max-procs] [\-\-null] [\-\-eof[=eof-str]]
+[\-\-replace[=replace-str]] [\-\-max-lines[=max-lines]] [\-\-interactive]
+[\-\-max-chars=max-chars] [\-\-verbose] [\-\-exit] [\-\-max-procs=max-procs]
+[\-\-max-args=max-args] [\-\-no-run-if-empty] [\-\-version] [\-\-help]
+[command [initial-arguments]]
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR xargs .
+.B xargs
+reads arguments from the standard input, delimited by blanks (which can be
+protected with double or single quotes or a backslash) or newlines,
+and executes the
+.I command
+(default is /bin/echo) one or more times with any
+.I initial-arguments
+followed by arguments read from standard input.  Blank lines on the
+standard input are ignored.
+.P
+.B xargs
+exits with the following status:
+.nf
+0 if it succeeds
+123 if any invocation of the command exited with status 1-125
+124 if the command exited with status 255
+125 if the command is killed by a signal
+126 if the command cannot be run
+127 if the command is not found
+1 if some other error occurred.
+.fi
+.SS OPTIONS
+.TP
+.I "\-\-null, \-0"
+Input filenames are terminated by a null character instead of by
+whitespace, and the quotes and backslash are not special (every
+character is taken literally).  Disables the end of file string, which
+is treated like any other argument.  Useful when arguments might
+contain white space, quote marks, or backslashes.  The GNU find
+\-print0 option produces input suitable for this mode.
+.TP
+.I "\-\-eof[=eof-str], \-e[eof-str]"
+Set the end of file string to \fIeof-str\fR.  If the end of file
+string occurs as a line of input, the rest of the input is ignored.
+If \fIeof-str\fR is omitted, there is no end of file string.  If this
+option is not given, the end of file string defaults to "_".
+.TP
+.I "\-\-help"
+Print a summary of the options to
+.B xargs
+and exit.
+.TP
+.I "\-\-replace[=replace-str], \-i[replace-str]"
+Replace occurences of \fIreplace-str\fR in the initial arguments with
+names read from standard input.
+Also, unquoted blanks do not terminate arguments.
+If \fIreplace-str\fR is omitted, it
+defaults to "{}" (like for `find \-exec').  Implies \fI\-x\fP and
+\fI\-l 1\fP.
+.TP
+.I "\-\-max-lines[=max-lines], -l[max-lines]"
+Use at most \fImax-lines\fR nonblank input lines per command line;
+\fImax-lines\fR defaults to 1 if omitted.  Trailing blanks cause an
+input line to be logically continued on the next input line.  Implies
+\fI\-x\fR.
+.TP
+.I "\-\-max-args=max-args, \-n max-args"
+Use at most \fImax-args\fR arguments per command line.  Fewer than
+\fImax-args\fR arguments will be used if the size (see the \-s option)
+is exceeded, unless the \-x option is given, in which case \fBxargs\fR
+will exit.
+.TP
+.I "\-\-interactive, \-p"
+Prompt the user about whether to run each command line and read a line
+from the terminal.  Only run the command line if the response starts
+with `y' or `Y'.  Implies \fI\-t\fR.
+.TP
+.I "\-\-no-run-if-empty, \-r"
+If the standard input does not contain any nonblanks, do not run the
+command.  Normally, the command is run once even if there is no input.
+.TP
+.I "\-\-max-chars=max-chars, \-s max-chars"
+Use at most \fImax-chars\fR characters per command line, including the
+command and initial arguments and the terminating nulls at the ends of
+the argument strings.  The default is as large as possible, up to 20k
+characters.
+.TP
+.I "\-\-verbose, \-t"
+Print the command line on the standard error output before executing
+it.
+.TP
+.I "\-\-version"
+Print the version number of
+.B xargs
+and exit.
+.TP
+.I "\-\-exit, \-x"
+Exit if the size (see the \fI\-s\fR option) is exceeded.
+.TP
+.I "\-\-max-procs=max-procs, \-P max-procs"
+Run up to \fImax-procs\fR processes at a time; the default is 1.  If
+\fImax-procs\fR is 0, \fBxargs\fR will run as many processes as
+possible at a time.  Use the \fI\-n\fR option with \fI\-P\fR;
+otherwise chances are that only one exec will be done.
+.SH "SEE ALSO"
+\fBfind\fP(1L), \fBlocate\fP(1L), \fBlocatedb\fP(5L), \fBupdatedb\fP(1)
+\fBFinding Files\fP (on-line in Info, or printed)
diff --git a/raw/man1/xpdf.1 b/raw/man1/xpdf.1
new file mode 100644
index 0000000..9f7b263
--- /dev/null
+++ b/raw/man1/xpdf.1
@@ -0,0 +1,495 @@
+.\" Copyright 1996-2003 Glyph & Cog, LLC
+.TH xpdf 1 "10 October 2003"
+.SH NAME
+xpdf \- Portable Document Format (PDF) file viewer for X (version 2.03)
+.SH SYNOPSIS
+.B xpdf
+[options]
+.RI [ PDF-file
+.RI [ page " | +" dest ]]
+.SH DESCRIPTION
+.B Xpdf
+is a viewer for Portable Document Format (PDF) files.  (These are also
+sometimes also called \'Acrobat' files, from the name of Adobe's PDF
+software.)  Xpdf runs under the X Window System on UNIX, VMS, and
+OS/2.
+.PP
+To run xpdf, simply type:
+.PP
+.RS
+xpdf file.pdf
+.RE
+.PP
+where
+.I file.pdf
+is your PDF file.  The file name can be followed by a number
+specifying the page which should be displayed first, e.g.:
+.PP
+.RS
+xpdf file.pdf 18
+.RE
+.PP
+You can also give a named destination, prefixed with \'+' in place of
+the page number.
+.PP
+You can also start xpdf without opening any files:
+.PP
+.RS
+xpdf
+.RE
+.SH CONFIGURATION FILE
+Xpdf reads a configuration file at startup.  It first tries to find
+the user's private config file, ~/.xpdfrc.  If that doesn't exist, it
+looks for a system-wide config file, typically /etc/xpdfrc
+(but this location can be changed when xpdf is built).  See the
+.BR xpdfrc (5)
+man page for details.
+.SH OPTIONS
+Many of the following options can be set with configuration file
+commands or X resources.  These are listed in square brackets with the
+description of the corresponding command line option.
+.TP
+.BI \-g " geometry"
+Set the initial window geometry.
+.RB ( \-geometry
+is equivalent.)
+.RB "[X resource: " xpdf.geometry ]
+.TP
+.BI \-title " title"
+Set the window title.  By default, the title will be "xpdf: foo.pdf".
+.RB "[X resource: " xpdf.title ]
+.TP
+.B \-cmap
+Install a private colormap.  This is ignored on TrueColor visuals.
+.RB "[X resource: " xpdf.installCmap ]
+.TP
+.BI \-rgb " number"
+Set the size of largest RGB cube xpdf will try to allocate.  The
+default is 5 (for a 5x5x5 cube); set to a smaller number to conserve
+color table entries.  This is ignored with private colormaps and on
+TrueColor visuals.
+.RB "[X resource: " xpdf.rgbCubeSize ]
+.TP
+.B \-rv
+Set reverse video mode.  This reverses the colors of everything except
+images.  It may not always produce great results for PDF files which
+do weird things with color.  This also causes the paper color to
+default to black.
+.RB "[X resource: " xpdf.reverseVideo ]
+.TP
+.BI \-papercolor " color"
+Set the "paper color", i.e., the background of the page display.  This
+will not work too well with PDF files that do things like filling in
+white behind the text.
+.RB "[X resource: " xpdf.paperColor ]
+.TP
+.BI \-z " zoom"
+Set the initial zoom factor.  A number specifies a zoom percentage,
+where 100 means 72 dpi.You may also specify \'page', to fit the page
+to the window size, or \'width', to fit the page width to the window
+width.
+.RB "[config file: " initialZoom "; or X resource: " xpdf.initialZoom ]
+.TP
+.BI \-t1lib " font-type"
+Set the type of font rendering for t1lib (the Type 1 rasterizer) to
+use.  Options are \'none' (don't use t1lib at all), \'plain' (use
+non-anti-aliased fonts), \'low' or \'high' (use low-level or
+high-level anti-aliased fonts).
+.RB "[config file: " t1libControl ]
+.TP
+.BI \-freetype " font-type"
+Set the type of font rendering for FreeType (the TrueType rasterizer)
+to use.  Options are \'none' (don't use FreeType at all), \'plain'
+(use non-anti-aliased fonts), \'low' or \'high' (use anti-aliased
+fonts; these two are identical).
+.RB "[config file: " freetypeControl ]
+.TP
+.BI \-ps " PS-file"
+Set the default file name for PostScript output.  This can also be of
+the form \'|command' to pipe the PostScript through a command.
+.RB "[config file: " psFile ]
+.TP
+.BI \-paper " size"
+Set the paper size to one of "letter", "legal", "A4", or "A3".  This
+can also be set to "match", which will set the paper size to match the
+size specified in the PDF file.
+.RB "[config file: " psPaperSize ]
+.TP
+.BI \-paperw " size"
+Set the paper width, in points.
+.RB "[config file: " psPaperSize ]
+.TP
+.BI \-paperh " size"
+Set the paper height, in points.
+.RB "[config file: " psPaperSize ]
+.TP
+.B \-level1
+Generate Level 1 PostScript.  The resulting PostScript files will be
+significantly larger (if they contain images), but will print on Level
+1 printers.  This also converts all images to black and white.
+.RB "[config file: " psLevel ]
+.TP
+.BI \-enc " encoding-name"
+Sets the encoding to use for text output.  The
+.I encoding\-name
+must be defined with the unicodeMap command (see
+.BR xpdfrc (5)).
+This defaults to "Latin1" (which is a built-in encoding).
+.RB "[config file: " textEncoding ]
+.TP
+.BI \-eol " unix | dos | mac"
+Sets the end-of-line convention to use for text output.
+.RB "[config file: " textEOL ]
+.TP
+.BI \-opw " password"
+Specify the owner password for the PDF file.  Providing this will
+bypass all security restrictions.
+.TP
+.BI \-upw " password"
+Specify the user password for the PDF file.
+.TP
+.B \-fullscreen
+Open xpdf in a full-screen mode, useful for presentations.  You may
+also want to specify '-bg black' (or similar) with this.  (There is
+currently no way to switch between window and full-screen modes on the
+fly.)
+.TP
+.BI \-remote " name"
+Start/contact xpdf remote server with specified name (see the
+.B "REMOTE SERVER MODE"
+section below).
+.TP
+.B \-reload
+Reload xpdf remote server window (with -remote only).
+.TP
+.B \-raise
+Raise xpdf remote server window (with -remote only).
+.TP
+.B \-quit
+Kill xpdf remote server (with -remote only).
+.TP
+.B \-cmd
+Print commands as they're executed (useful for debugging).
+.RB "[config file: " printCommands ]
+.TP
+.B \-q
+Don't print any messages or errors.
+.RB "[config file: " errQuiet ]
+.TP
+.BI \-cfg " config-file"
+Read
+.I config-file
+in place of ~/.xpdfrc or the system-wide config file.
+.TP
+.B \-v
+Print copyright and version information.
+.TP
+.B \-h
+Print usage information.
+.RB ( \-help
+and
+.B \-\-help
+are equivalent.)
+.PP
+Several other standard X options and resources will work as expected:
+.TP
+.BI \-display " display"
+.RB "[X resource: " xpdf.display ]
+.TP
+.BI \-fg " color"
+.RB ( \-foreground
+is equivalent.)
+.RB "[X resource: " xpdf*Foreground ]
+.TP
+.BI \-bg " color"
+.RB ( \-background
+is equivalent.)
+.RB "[X resource: " xpdf*Background ]
+.TP
+.BI \-font " font"
+.RB ( \-fn
+is equivalent.)
+.RB "[X resource: " xpdf*fontList ]
+.PP
+The color and font options only affect the user interface elements,
+not the PDF display (the \'paper').
+.PP
+The following X resources do not have command line option equivalents:
+.TP
+.B xpdf.viKeys
+Enables the \'h', \'l', \'k' and \'j' keys for left, right, up, and
+down scrolling.
+.SH CONTROLS
+.SS On-screen controls, at the bottom of the xpdf window
+.TP
+.B "left/right arrow buttons"
+Move to the previous/next page.
+.TP
+.B "double left/right arrow buttons"
+Move backward or forward by ten pages.
+.TP
+.B "dashed left/right arrow buttons"
+Move backward or forward along the history path.
+.TP
+.B "\'Page' entry box"
+Move to a specific page number.  Click in the box to activate it, type
+the page number, then hit return.
+.TP
+.B "zoom popup menu"
+Change the zoom factor (see the description of the -z option above).
+.TP
+.B "binoculars button"
+Find a text string.
+.TP
+.B "print button"
+Bring up a dialog for generating a PostScript file.  The dialog has
+options to set the pages to be printed and the PostScript file name.
+The file name can be \'-' for stdout or \'|command' to pipe the
+PostScript through a command, e.g., \'|lpr'.
+.TP
+.B "\'?' button"
+Bring up the \'about xpdf' window.
+.TP
+.B "link info"
+The space between the \'?' and \'Quit' buttons is used to show the URL
+or external file name when the mouse is over a link.
+.TP
+.B "\'Quit' button"
+Quit xpdf.
+.PP
+.SS Menu
+Pressing the right mouse button will post a popup menu with the
+following commands:
+.TP
+.B "Open..."
+Open a new PDF file via a file requester.
+.TP
+.B "Open in new window..."
+Create a new window and open a new PDF file via a file requester.
+.TP
+.B "Reload"
+Reload the current PDF file.  Note that Xpdf will reload the file
+automatically (on a page change or redraw) if it has changed since it
+was last loaded.
+.TP
+.B "Save as..."
+Save the current file via a file requester.
+.TP
+.B "Rotate counterclockwise"
+Rotate the page 90 degrees counterclockwise.
+.TP
+.B "Rotate clockwise"
+Rotate the page 90 degrees clockwise.  The two rotate commands are
+intended primarily for PDF files where the rotation isn't correctly
+specified in the file, but they're also useful if your X server
+doesn't support font rotation.
+.TP
+.B "Close"
+Close the current window.  If this is the only open window, the
+document is closed, but the window is left open (i.e., this menu
+command won't quit xpdf).
+.TP
+.B "Quit"
+Quit xpdf.
+.PP
+.SS Outline
+If the PDF contains an outline (a.k.a., bookmarks), there will be an
+outline pane on the left side of the window.  The width of the outline
+pane is adjustable with a vertical split bar via the knob near its
+bottom end.
+.PP
+.SS Text selection
+Dragging the mouse with the left button held down will highlight an
+arbitrary rectangle.  Any text inside this rectangle will be copied to
+the X selection buffer.
+.PP
+.SS Links
+Clicking on a hyperlink will jump to the link's destination.  A link
+to another PDF document will make xpdf load that document.  A
+\'launch' link to an executable program will display a dialog, and if
+you click \'ok', execute the program.  URL links call an external
+command (see the
+.B WEB BROWSERS
+section below).
+.PP
+.SS Panning
+Dragging the mouse with the middle button held down pans the window.
+.PP
+.SS Key bindings
+.TP
+.B o
+Open a new PDF file via a file requester.
+.TP
+.B r
+Reload the current PDF file.  Note that Xpdf will reload the file
+automatically (on a page change or redraw) if it has changed since it
+was last loaded.
+.TP
+.B control-L
+Redraw the current page.
+.TP
+.B control-W
+Close the current window.
+.TP
+.B f or control-F
+Find a text string.
+.TP
+.B control-G
+Find next occurrence.
+.TP
+.B control-P
+Print.
+.TP
+.B n
+Move to the next page.  Scrolls to the top of the page, unless scroll
+lock is turned on.
+.TP
+.B p
+Move to the previous page.  Scrolls to the top of the page, unless
+scroll lock is turned on.
+.TP
+.BR <Space> " or " <PageDown> " or " <Next>
+Scroll down on the current page; if already at bottom, move to next
+page.
+.TP
+.BR <Backspace> " or " <Delete> " or " <PageUp> " or " <Previous>
+Scroll up on the current page; if already at top, move to previous
+page.
+.TP
+.B v
+Move forward along the history path.
+.TP
+.B b
+Move backward along the history path.
+.TP
+.B <Home>
+Scroll to top of current page.
+.TP
+.B <End>
+Scroll to bottom of current page.
+.TP
+.B control-<Home>
+Scroll to first page of document.
+.TP
+.B control-<End>
+Scroll to last page of document.
+.TP
+.B arrows
+Scroll the current page.
+.TP
+.B g
+Activate the page number text field ("goto page").
+.TP
+.B 0
+Set the zoom factor to zero (72 dpi).
+.TP
+.B +
+Zoom in (increment the zoom factor by 1).
+.TP
+.B -
+Zoom out (decrement the zoom factor by 1).
+.TP
+.B z
+Set the zoom factor to 'page' (fit page to window).
+.TP
+.B w
+Set the zoom factor to 'width' (fit page width to window).
+.TP
+.B q
+Quit xpdf.
+.SH "WEB BROWSERS"
+If you want to run xpdf automatically from netscape or mosaic (and
+probably other browsers) when you click on a link to a PDF file, you
+need to edit (or create) the files
+.I .mime.types
+and
+.I .mailcap
+in your home directory.  In
+.I .mime.types
+add the line:
+.PP
+.RS
+application/pdf pdf
+.RE
+.PP
+In
+.I .mailcap
+add the lines:
+.PP
+.RS
+# Use xpdf to view PDF files.
+.RE
+.RS
+application/pdf; xpdf -q %s
+.RE
+.PP
+Make sure that xpdf is on your executable search path.
+.PP
+When you click on a URL link in a PDF file, xpdf will execute the
+command specified by the urlCommand config file option, replacing an
+occurrence of \'%s' with the URL.  For example, to call netscape with
+the URL, add this line to your config file:
+.PP
+.RS
+urlCommand "netscape -remote 'openURL(%s)'"
+.RE
+.SH "REMOTE SERVER MODE"
+Xpdf can be started in remote server mode by specifying a server name
+(in addition to the file name and page number).  For example:
+.PP
+.RS
+xpdf -remote myServer file.pdf
+.RE
+.PP
+If there is currently no xpdf running in server mode with the name
+\'myServer', a new xpdf window will be opened.  If another command:
+.PP
+.RS
+xpdf -remote myServer another.pdf 9
+.RE
+.PP
+is issued, a new copy of xpdf will not be started.  Instead, the first
+xpdf (the server) will load
+.I another.pdf
+and display page nine.  If the file name is the same:
+.PP
+.RS
+xpdf -remote myServer another.pdf 4
+.RE
+.PP
+the xpdf server will simply display the specified page.
+.PP
+The -raise option tells the server to raise its window; it can be
+specified with or without a file name and page number.
+.PP
+The -quit option tells the server to close its window and exit.
+.SH EXIT CODES
+The Xpdf tools use the following exit codes:
+.TP
+0
+No error.
+.TP
+1
+Error opening a PDF file.
+.TP
+2
+Error opening an output file.
+.TP
+3
+Error related to PDF permissions.
+.TP
+99
+Other error.
+.SH AUTHOR
+The xpdf software and documentation are copyright 1996-2003 Glyph &
+Cog, LLC.
+.SH "SEE ALSO"
+.BR pdftops (1),
+.BR pdftotext (1),
+.BR pdfinfo (1),
+.BR pdffonts (1),
+.BR pdftopbm (1),
+.BR pdfimages (1),
+.BR xpdfrc (5)
+.br
+.B http://www.foolabs.com/xpdf/
diff --git a/raw/man1/xxd.1 b/raw/man1/xxd.1
new file mode 100644
index 0000000..fba0521
--- /dev/null
+++ b/raw/man1/xxd.1
@@ -0,0 +1,373 @@
+.TH XXD 1 "August 1996" "Manual page for xxd"
+.\"
+.\" 21st May 1996
+.\" Man page author:
+.\"    Tony Nugent <tony at sctnugen.ppp.gu.edu.au> <T.Nugent at sct.gu.edu.au>
+.\"    Changes by Bram Moolenaar <Bram at vim.org>
+.SH NAME
+.I xxd
+\- make a hexdump or do the reverse.
+.SH SYNOPSIS
+.B xxd
+\-h[elp]
+.br
+.B xxd
+[options] [infile [outfile]]
+.br
+.B xxd
+\-r[evert] [options] [infile [outfile]]
+.SH DESCRIPTION
+.I xxd
+creates a hex dump of a given file or standard input.
+It can also convert a hex dump back to its original binary form.
+Like
+.BR uuencode(1)
+and
+.BR uudecode(1)
+it allows the transmission of binary data in a `mail-safe' ASCII representation,
+but has the advantage of decoding to standard output.
+Moreover, it can be used to perform binary file patching.
+.SH OPTIONS
+If no
+.I infile
+is given, standard input is read.
+If
+.I infile
+is specified as a
+.RB \` \- '
+character, then input is taken from standard input.
+If no
+.I outfile
+is given (or a
+.RB \` \- '
+character is in its place), results are sent to standard output.
+.PP
+Note that a "lazy" parser is used which does not check for more than the first
+option letter, unless the option is followed by a parameter.
+Spaces between a single option letter and its parameter are optional.
+Parameters to options can be specified in decimal, hexadecimal or octal
+notation.
+Thus
+.BR \-c8 ,
+.BR "\-c 8" ,
+.B \-c 010
+and
+.B \-cols 8
+are all equivalent.
+.PP
+.TP
+.IR \-a " | " \-autoskip
+toggle autoskip: A single '*' replaces nul-lines.  Default off.
+.TP
+.IR \-b " | " \-bits
+Switch to bits (binary digits) dump, rather than hexdump.
+This option writes octets as eight digits "1"s and "0"s instead of a normal
+hexacecimal dump. Each line is preceded by a line number in hexadecimal and
+followed by an ascii (or ebcdic) representation. The command line switches
+\-r, \-p, \-i do not work with this mode.
+.TP
+.IR "\-c cols " | " \-cols cols"
+.IR "\-c cols " | " \-cols cols"
+format
+.RI < cols >
+octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256.
+.TP
+.IR \-E " | " \-EBCDIC
+Change the character encoding in the righthand column from ASCII to EBCDIC.
+This does not change the hexadecimal representation. The option is
+meaningless in combinations with \-r, \-p or \-i.
+.TP
+.IR "\-g bytes " | " \-groupsize bytes"
+seperate the output of every
+.RI < bytes >
+bytes (two hex characters or eight bit-digits each) by a whitespace.
+Specify
+.I \-g 0
+to suppress grouping.
+.RI < Bytes "> defaults to " 2
+in normal mode and \fI1\fP in bits mode.
+Grouping does not apply to postscript or include style.
+.TP
+.IR \-h " | " \-help
+print a summary of available commands and exit.  No hex dumping is performed.
+.TP
+.IR \-i " | " \-include
+output in C include file style. A complete static array definition is written
+(named after the input file), unless xxd reads from stdin.
+.TP
+.IR "\-l len " | " \-len len"
+stop after writing
+.RI  < len >
+octets.
+.TP
+.IR \-p " | " \-ps " | " \-postscript " | " \-plain
+output in postscript continuous hexdump style. Also known as plain hexdump
+style.
+.TP
+.IR \-r " | " \-revert
+reverse operation: convert (or patch) hexdump into binary.
+If not writing to stdout, xxd writes into its output file without truncating
+it. Use the combination
+.I \-r \-p
+to read plain hexadecimal dumps without line number information and without a
+particular column layout. Additional Whitespace and line-breaks are allowed
+anywhere.
+.TP
+.I \-seek offset
+When used after
+.I \-r
+: revert with
+.RI < offset >
+added to file positions found in hexdump.
+.TP
+.I \-s [\+][\-]seek
+start at
+.RI < seek >
+bytes abs. (or rel.) infile offset.
+\fI\+ \fRindicates that the seek is relative to the current stdin file position
+(meaningless when not reading from stdin).  \fI\- \fRindicates that the seek
+should be that many characters from the end of the input (or if combined with
+\fI \+ \fR: before the current stdin file position).
+Without \-s option, xxd starts at the current file position.
+.TP
+.I \-u
+use upper case hex letters. Default is lower case.
+.TP
+.IR \-v " | " \-version
+show version string.
+.SH CAVEATS
+.PP
+.I xxd \-r
+has some builtin magic while evaluating line number information.
+If the ouput file is seekable, then the linenumbers at the start of each
+hexdump line may be out of order, lines may be missing, or overlapping. In
+these cases xxd will lseek(2) to the next position. If the output file is not
+seekable, only gaps are allowed, which will be filled by null-bytes.
+.PP
+.I xxd \-r
+never generates parse errors. Garbage is silently skipped.
+.PP
+When editing hexdumps, please note that
+.I xxd \-r
+skips everything on the input line after reading enough columns of hexadecimal
+data (see option \-c). This also means, that changes to the printable ascii (or
+ebcdic) columns are always ignored. Reverting a plain (or postscript) style
+hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted.
+.PP
+Note the difference between
+.br
+\fI% xxd \-i file\fR
+.br
+and
+.br
+\fI% xxd \-i \< file\fR
+.PP
+.I xxd \-s \+seek
+may be different from
+.I xxd \-s seek
+, as lseek(2) is used to "rewind" input.  A '+'
+makes a difference if the input source is stdin, and if stdin's file position
+is not at the start of the file by the time xxd is started and given its input.
+The following examples may help to clarify (or further confuse!)...
+.PP
+Rewind stdin before reading; needed because the `cat' has already read to the
+end of stdin.
+.br
+\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
+.PP
+Hexdump from file position 0x480 (=1024+128) onwards.
+The `+' sign means "relative to the current position", thus the `128' adds to
+the 1k where dd left off.
+.br
+\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
+.PP
+Hexdump from file position 0x100 ( = 1024-768) on.
+.br
+\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
+.PP
+However, this is a rare situation and the use of `+' is rarely needed.
+the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used.
+.SH EXAMPLES
+.PP
+.br
+Print everything but the first three lines (hex 0x30 bytes) of
+.B file
+\.
+.br
+\fI% xxd \-s 0x30 file
+.PP
+.br
+Print 3 lines (hex 0x30 bytes) from the end of
+.B file
+\.
+.br
+\fI% xxd \-s \-0x30 file
+.PP
+.br
+Print 120 bytes as continuous hexdump with 40 octets per line.
+.br
+\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
+.br
+2e544820585844203120224d616e75616c207061
+.br
+676520666f7220787864220a2e5c220a2e5c2220
+.br
+32317374204d617920313939360a2e5c22204d61
+.br
+6e207061676520617574686f723a0a2e5c222020
+.br
+2020546f6e79204e7567656e74203c746f6e7940
+.br
+7363746e7567656e2e7070702e67752e6564752e
+.br
+
+.br
+Hexdump the first 120 bytes of this man page with 12 octets per line.
+.br
+\fI% xxd \-l 120 \-c 12 xxd.1\fR
+.br
+0000000: 2e54 4820 5858 4420 3120 224d  .TH XXD 1 "M
+.br
+000000c: 616e 7561 6c20 7061 6765 2066  anual page f
+.br
+0000018: 6f72 2078 7864 220a 2e5c 220a  or xxd"..\\".
+.br
+0000024: 2e5c 2220 3231 7374 204d 6179  .\\" 21st May
+.br
+0000030: 2031 3939 360a 2e5c 2220 4d61   1996..\\" Ma
+.br
+000003c: 6e20 7061 6765 2061 7574 686f  n page autho
+.br
+0000048: 723a 0a2e 5c22 2020 2020 546f  r:..\\"    To
+.br
+0000054: 6e79 204e 7567 656e 7420 3c74  ny Nugent <t
+.br
+0000060: 6f6e 7940 7363 746e 7567 656e  ony at sctnugen
+.br
+000006c: 2e70 7070 2e67 752e 6564 752e  .ppp.gu.edu.
+.PP
+.br
+Display just the date from the file xxd.1
+.br
+\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+.br
+0000028: 3231 7374 204d 6179 2031 3939  21st May 199
+.PP
+.br
+Copy
+.B input_file
+to
+.B output_file
+and prepend 100 bytes of value 0x00.
+.br
+\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR
+.br
+
+.br
+Patch the date in the file xxd.1
+.br
+\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
+.br
+\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+.br
+0000028: 3235 7468 204d 6179 2031 3939  25th May 199
+.PP
+.br
+Create a 65537 byte file with all bytes 0x00,
+except for the last one which is 'A' (hex 0x41).
+.br
+\fI% echo '010000: 41' | xxd \-r \> file\fR
+.PP
+.br
+Hexdump this file with autoskip.
+.br
+\fI% xxd \-a \-c 12 file\fR
+.br
+0000000: 0000 0000 0000 0000 0000 0000  ............
+.br
+*
+.br
+000fffc: 0000 0000 40                   ....A
+.PP
+Create a 1 byte file containing a single 'A' character.
+The number after '\-r \-s' adds to the linenumbers found in the file;
+in effect, the leading bytes are suppressed.
+.br
+\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
+.PP
+Use xxd as a filter within an editor such as
+.B vim(1)
+to hexdump a region marked between `a' and `z'.
+.br
+\fI:'a,'z!xxd\fR
+.PP
+Use xxd as a filter within an editor such as
+.B vim(1)
+to recover a binary hexdump marked between `a' and `z'.
+.br
+\fI:'a,'z!xxd \-r\fR
+.PP
+Use xxd as a filter within an editor such as
+.B vim(1)
+to recover one line of a hexdump.  Move the cursor over the line and type:
+.br
+\fI!!xxd \-r\fR
+.PP
+Read single characters from a serial line
+.br
+\fI% xxd \-c1 < /dev/term/b &\fR
+.br
+\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
+.br
+\fI% echo \-n foo > /dev/term/b\fR
+.PP
+.SH "RETURN VALUES"
+The following error values are returned:
+.TP
+0
+no errors encountered.
+.TP
+\-1
+operation not supported (
+.I xxd \-r \-i
+still impossible).
+.TP
+1
+error while parsing options.
+.TP
+2
+problems with input file.
+.TP
+3
+problems with output file.
+.TP
+4,5
+desired seek position is unreachable.
+.SH "SEE ALSO"
+uuencode(1), uudecode(1), patch(1)
+.br
+.SH WARNINGS
+The tools weirdness matches its creators brain.
+Use entirely at your own risk. Copy files. Trace it. Become a wizard.
+.br
+.SH VERSION
+This manual page documents xxd version 1.7
+.SH AUTHOR
+.br
+(c) 1990-1997 by Juergen Weigert
+.br
+<jnweiger at informatik.uni-erlangen.de>
+.LP
+Distribute freely and credit me,
+.br
+make money and share with me,
+.br
+lose money and don't ask me.
+.PP
+Manual page started by Tony Nugent
+.br
+<tony at sctnugen.ppp.gu.edu.au> <T.Nugent at sct.gu.edu.au>
+.br
+Small changes by Bram Moolenaar.
+Edited by Juergen Weigert.
+.PP
diff --git a/raw/man1/yacc.1 b/raw/man1/yacc.1
new file mode 100644
index 0000000..cc6a304
--- /dev/null
+++ b/raw/man1/yacc.1
@@ -0,0 +1,139 @@
+.\" Copyright (c) 1989, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Robert Paul Corbett.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)yacc.1	5.8 (Berkeley) 5/24/93
+.\" $FreeBSD: src/usr.bin/yacc/yacc.1,v 1.10 2000/01/10 08:54:09 kris Exp $
+.\"
+.Dd May 24, 1993
+.Dt YACC 1
+.Os
+.Sh NAME
+.Nm yacc
+.Nd an LALR(1) parser generator
+.Sh SYNOPSIS
+.Nm
+.Op Fl dlrtv
+.Op Fl b Ar file_prefix
+.Op Fl o Ar output_filename
+.Op Fl p Ar symbol_prefix
+.Ar filename
+.Sh DESCRIPTION
+.Nm Yacc
+reads the grammar specification in the file
+.Ar filename
+and generates an LR(1) parser for it.
+The parsers consist of a set of LALR(1) parsing tables and a driver routine
+written in the C programming language.
+.Nm Yacc
+normally writes the parse tables and the driver routine to the file
+.Pa y.tab.c .
+.Pp
+The following options are available:
+.Bl -tag -width indent
+.It Fl b Ar file_prefix
+Change the prefix prepended to the output file names to
+the string denoted by
+.Ar file_prefix .
+The default prefix is the character
+.Pa y .
+.It Fl d
+Cause the header file
+.Pa y.tab.h
+to be written.
+.It Fl l
+If the
+.Fl l
+option is not specified,
+.Nm
+will insert #line directives in the generated code.
+The #line directives let the C compiler relate errors in the
+generated code to the user's original code.
+If the
+.Fl l
+option is specified,
+.Nm
+will not insert the #line directives.
+Any #line directives specified by the user will be retained.
+.It Fl o Ar output_filename
+Cause
+.Nm
+to write the generated code to
+.Ar output_filename
+instead of the default file,
+.Pa y.tab.c .
+.It Fl p Ar symbol_prefix
+Change the prefix prepended to yacc-generated symbols to
+the string denoted by
+.Ar symbol_prefix .
+The default prefix is the string
+.Pa yy .
+.It Fl r
+Cause
+.Nm
+to produce separate files for code and tables.  The code file
+is named
+.Pa y.code.c ,
+and the tables file is named
+.Pa y.tab.c .
+.It Fl t
+Change the preprocessor directives generated by
+.Nm
+so that debugging statements will be incorporated in the compiled code.
+.It Fl v
+Cause a human-readable description of the generated parser to
+be written to the file
+.Pa y.output .
+.El
+.Pp
+If the environment variable
+.Ev TMPDIR
+is set, the string denoted by
+.Ev TMPDIR
+will be used as the name of the directory where the temporary
+files are created.
+.Sh FILES
+.Bl -tag -width /tmp/yacc.aXXXXXXXXXX -compact
+.It Pa y.code.c
+.It Pa y.tab.c
+.It Pa y.tab.h
+.It Pa y.output
+.It Pa /tmp/yacc.aXXXXXXXXXX
+.It Pa /tmp/yacc.tXXXXXXXXXX
+.It Pa /tmp/yacc.uXXXXXXXXXX
+.El
+.Sh DIAGNOSTICS
+If there are rules that are never reduced, the number of such rules is
+reported on standard error.
+If there are any LALR(1) conflicts, the number of conflicts is reported
+on standard error.
diff --git a/raw/man1/yes.1 b/raw/man1/yes.1
new file mode 100644
index 0000000..c313e68
--- /dev/null
+++ b/raw/man1/yes.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.022.
+.TH YES "1" "October 2003" "GNU coreutils 5.0" FSF
+.SH NAME
+yes \- output a string repeatedly until killed
+.SH SYNOPSIS
+.B yes
+[\fISTRING\fR]...
+.br
+.B yes
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Repeatedly output a line with all specified STRING(s), or `y'.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug-coreutils at gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+The full documentation for
+.B yes
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B yes
+programs are properly installed at your site, the command
+.IP
+.B info yes
+.PP
+should give you access to the complete manual.
diff --git a/raw/man1/ypchfn.1 b/raw/man1/ypchfn.1
new file mode 100644
index 0000000..f94f124
--- /dev/null
+++ b/raw/man1/ypchfn.1
@@ -0,0 +1 @@
+.so man1/yppasswd.1
diff --git a/raw/man1/ypchsh.1 b/raw/man1/ypchsh.1
new file mode 100644
index 0000000..f94f124
--- /dev/null
+++ b/raw/man1/ypchsh.1
@@ -0,0 +1 @@
+.so man1/yppasswd.1
diff --git a/raw/man1/yppasswd.1 b/raw/man1/yppasswd.1
new file mode 100644
index 0000000..7aeb5ca
--- /dev/null
+++ b/raw/man1/yppasswd.1
@@ -0,0 +1,156 @@
+.\" -*- nroff -*-
+.\" Copyright (C) 1998, 1999, 2001 Thorsten Kukuk
+.\" This file is part of the yp-tools.
+.\" Author: Thorsten Kukuk <kukuk at suse.de>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License version 2 as
+.\"  published by the Free Software Foundation.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+.\"
+.TH yppasswd 1 "May 1998" "YP Tools 2.8"
+.SH NAME
+yppasswd, ypchfn, ypchsh \- change your password in the NIS database
+.SH SYNOPSIS
+.B "yppasswd [-f] [-l] [-p] [user]"
+.br
+.B "ypchfn [user]"
+.br
+.B "ypchsh [user]"
+.SH DESCRIPTION
+The standard
+.BR passwd (1),
+.BR chfn (1)
+and
+.BR chsh (1)
+cannot be used under Linux to change the users NIS password, shell and GECOS
+information, because they only modify the password file on the local host.
+For changing the NIS information, they are replaced by their NIS
+counterparts,
+.BR yppasswd ,
+.B ypchfn
+and
+.BR ypchsh .
+.P
+These commands are the same program, linked to different names.
+Using the command line switches, you can choose whether to update your
+password
+.BR \-p ,
+your login shell
+.BR \-l ,
+or your GECOS field
+.BR \-f ,
+or a combination of them.
+.B yppasswd
+implies the
+.B \-p
+option, if no other option is given. If you use the
+.B \-f
+or
+.B \-l
+option, you also need to add the
+.B \-p
+flag.
+.B ypchfn
+implies the
+.B \-f
+option, and
+.B ypchsh
+.BR \-l .
+.P
+When invoked without the
+.I user
+argument, the account information for the invoking user will be updated,
+otherwise that of
+.I user
+will be updated. This option is only available to the super-user. If the
+yppasswdd daemon on the server supports it, you can give the root password
+of the server instead of the users [old] password.
+.P
+All tools will first prompt the user for the current NIS password needed
+for authentication with the
+.BR yppasswdd (8)
+daemon. Subsequently, the
+program prompts for the updated information:
+.\"
+.\"
+.IP "\fByppasswd\fP or \fB-l\fP"
+Change the user's NIS password.	The user is prompted for the new password.
+While typing the password, echoing is turned off, so the password does not
+appear on the screen. An empty password is rejected, as are passwords shorter
+than six characters. The user will then be requested to retype the
+password to make sure it wasn't	misspelled the first time.
+.\"
+.\"
+.IP "\fBypchsh\fP or \fB-l\fP"
+Change the user's login shell. The user is prompted for a new shell,
+offering the old one as default:
+.IP
+.in +2n
+.ft B
+.nf
+Login shell [/bin/sh]: _
+.fi
+.ft
+.in
+.IP
+To accept the default, simply press return. To clear the shell field in
+your
+.BR passwd (5)
+file entry (so that the system's default shell is selected),
+enter the string
+.IR none .
+.\"
+.\"
+.IP "\fBypchfn\fP or \fB-f\fP"
+Change the user's full name and related information. Traditionally, some
+applications expect the GECOS field (field 4) of the
+.BR passwd (5)
+file to
+contain the user's real name (as opposed to the login name) plus some
+additional information like the office phone number. This information is
+displayed by
+.BR finger (1)
+and probably some other tools, too.
+.IP
+When setting the full name,
+.B ypchfn
+displays the following prompts, with the defaults in brackets:
+.IP
+.in +2n
+.ft B
+.nf
+Name [Joe Doe]:
+Location [2nd floor, bldg 34]:
+Office Phone [12345]:
+Home Phone []:
+.fi
+.ft
+.in
+.IP
+To accept a default, simply press return. To clear a field, enter the string
+.IR none .
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR finger (1),
+.BR passwd (5),
+.BR passwd (1),
+.BR ypcat (1),
+.BR yppasswdd (8),
+.BR ypserv (8),
+.BR ypwhich (1)
+.LP
+.SH AUTHOR
+.B yppasswd
+is part of the
+.B yp-tools
+package, which was written by Thorsten Kukuk <kukuk at suse.de>.
diff --git a/raw/man1/zcat.1 b/raw/man1/zcat.1
new file mode 100644
index 0000000..c2a5145
--- /dev/null
+++ b/raw/man1/zcat.1
@@ -0,0 +1 @@
+.so man1/gzip.1
diff --git a/raw/man1/zipinfo.1 b/raw/man1/zipinfo.1
new file mode 100644
index 0000000..eca6307
--- /dev/null
+++ b/raw/man1/zipinfo.1
@@ -0,0 +1,488 @@
+.\"  Copyright (c) 1990-2002 Info-ZIP.  All rights reserved.
+.\"
+.\"  See the accompanying file LICENSE, version 2000-Apr-09 or later
+.\"  (the contents of which are also included in unzip.h) for terms of use.
+.\"  If, for some reason, all these files are missing, the Info-ZIP license
+.\"  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
+.\"
+.\" zipinfo.1 by Greg Roelofs and others.
+.\"
+.\" =========================================================================
+.\" define .X macro (for long-line ZipInfo output examples; small Courier):
+.de X
+.nf
+.ft CW
+.ie n .ti -5
+.el \{ .ti +2m
+.ps -1 \}
+\&\\$1
+.ie n .ti +5
+.el \{ .ti -2m
+.ps +1 \}
+.ft
+.fi
+..
+.\" define .EX/.EE (for multiline user-command examples; normal Courier font)
+.de EX
+.in +4n
+.nf
+.ft CW
+..
+.de EE
+.ft
+.fi
+.in -4n
+..
+.\" =========================================================================
+.TH ZIPINFO 1L "17 February 2002 (v2.4)" "Info-ZIP"
+.SH NAME
+zipinfo \- list detailed information about a ZIP archive
+.PD
+.SH SYNOPSIS
+\fBzipinfo\fP [\fB\-12smlvhMtTz\fP] \fIfile\fP[\fI.zip\fP]
+[\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]
+.PP
+\fBunzip\fP \fB\-Z\fP [\fB\-12smlvhMtTz\fP] \fIfile\fP[\fI.zip\fP]
+[\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]
+.PD
+.\" =========================================================================
+.SH DESCRIPTION
+\fIzipinfo\fP lists technical information about files in a ZIP archive, most
+commonly found on MS-DOS systems.  Such information includes file access
+permissions, encryption status, type of compression, version and operating
+system or file system of compressing program, and the like.  The default
+behavior (with no options) is
+to list single-line entries for each file in the archive, with header and
+trailer lines providing summary information for the entire archive.  The
+format is a cross between Unix ``\fCls \-l\fR'' and ``\fCunzip \-v\fR''
+output.  See
+.B "DETAILED DESCRIPTION"
+below.  Note that \fIzipinfo\fP is the same program as \fIunzip\fP (under
+Unix, a link to it); on some systems, however, \fIzipinfo\fP support may
+have been omitted when \fIunzip\fP was compiled.
+.PD
+.\" =========================================================================
+.SH ARGUMENTS
+.TP
+.IR file [ .zip ]
+Path of the ZIP archive(s).  If the file specification is a wildcard,
+each matching file is processed in an order determined by the operating
+system (or file system).  Only the filename can be a wildcard; the path
+itself cannot.  Wildcard expressions are similar to Unix \fIegrep\fP(1)
+(regular) expressions and may contain:
+.RS
+.IP *
+matches a sequence of 0 or more characters
+.IP ?
+matches exactly 1 character
+.IP [.\|.\|.]
+matches any single character found inside the brackets; ranges are specified
+by a beginning character, a hyphen, and an ending character.  If an exclamation
+point or a caret (`!' or `^') follows the left bracket, then the range of
+characters within the brackets is complemented (that is, anything \fIexcept\fP
+the characters inside the brackets is considered a match).
+.RE
+.IP
+(Be sure to quote any character that might otherwise be interpreted or
+modified by the operating system, particularly under Unix and VMS.)  If no
+matches are found, the specification is assumed to be a literal filename;
+and if that also fails, the suffix \fC.zip\fR is appended.  Note that
+self-extracting ZIP files are supported; just specify the \fC.exe\fR suffix
+(if any) explicitly.
+.IP [\fIfile(s)\fP]
+An optional list of archive members to be processed.
+Regular expressions (wildcards) may be used to match multiple members; see
+above.  Again, be sure to quote expressions that would otherwise be expanded
+or modified by the operating system.
+.IP [\fB\-x\fP\ \fIxfile(s)\fP]
+An optional list of archive members to be excluded from processing.
+.\" =========================================================================
+.SH OPTIONS
+.TP
+.B \-1
+list filenames only, one per line.  This option excludes all others; headers,
+trailers and zipfile comments are never printed.  It is intended for use in
+Unix shell scripts.
+.TP
+.B \-2
+list filenames only, one per line, but allow headers (\fB\-h\fP), trailers
+(\fB\-t\fP) and zipfile comments (\fB\-z\fP), as well.  This option may be
+useful in cases where the stored filenames are particularly long.
+.TP
+.B \-s
+list zipfile info in short Unix ``\fCls \-l\fR'' format.  This is the default
+behavior; see below.
+.TP
+.B \-m
+list zipfile info in medium Unix ``\fCls \-l\fR'' format.  Identical to the
+\fB\-s\fP output, except that the compression factor, expressed as a
+percentage, is also listed.
+.TP
+.B \-l
+list zipfile info in long Unix ``\fCls \-l\fR'' format.  As with \fB\-m\fP
+except that the compressed size (in bytes) is printed instead of the
+compression ratio.
+.TP
+.B \-v
+list zipfile information in verbose, multi-page format.
+.TP
+.B \-h
+list header line.  The archive name, actual size (in bytes) and total number
+of files is printed.
+.TP
+.B \-M
+pipe all output through an internal pager similar to the Unix \fImore\fP(1)
+command.  At the end of a screenful of output, \fIzipinfo\fP pauses with a
+``\-\-More\-\-'' prompt; the next screenful may be viewed by pressing the
+Enter (Return) key or the space bar.  \fIzipinfo\fP can be terminated by
+pressing the ``q'' key and, on some systems, the Enter/Return key.  Unlike
+Unix \fImore\fP(1), there is no forward-searching or editing capability.
+Also, \fIzipinfo\fP doesn't notice if long lines wrap at the edge of the
+screen, effectively resulting in the printing of two or more lines and the
+likelihood that some text will scroll off the top of the screen before being
+viewed.  On some systems the number of available lines on the screen is not
+detected, in which case \fIzipinfo\fP assumes the height is 24 lines.
+.TP
+.B \-t
+list totals for files listed or for all files.  The number of files listed,
+their uncompressed and compressed total sizes, and their overall compression
+factor is printed; or, if only the totals line is being printed, the values
+for the entire archive are given.  Note that the total compressed (data)
+size will never match the actual zipfile size, since the latter includes all
+of the internal zipfile headers in addition to the compressed data.
+.TP
+.B \-T
+print the file dates and times in a sortable decimal format (yymmdd.hhmmss).
+The default date format is a more standard, human-readable version with
+abbreviated month names (see examples below).
+.TP
+.B \-z
+include the archive comment (if any) in the listing.
+.PD
+.\" =========================================================================
+.SH "DETAILED DESCRIPTION"
+.I zipinfo
+has a number of modes, and its behavior can be rather difficult to fathom
+if one isn't familiar with Unix \fIls\fP(1) (or even if one is).  The default
+behavior is to list files in the following format:
+.PP
+.X "-rw-rws---  1.9 unx    2802 t- defX 11-Aug-91 13:48 perms.2660"
+.PP
+The last three fields are the modification date and time of
+the file, and its name.  The case of the filename is respected; thus
+files that come from MS-DOS PKZIP are always capitalized.  If the file
+was zipped with a stored directory name, that is also displayed as part
+of the filename.
+.PP
+The second and third fields indicate that the file was zipped under
+Unix with version 1.9 of \fIzip\fP.  Since it comes from Unix, the file
+permissions at the beginning of the line are printed in Unix format.
+The uncompressed file-size (2802 in this example) is the fourth field.
+.PP
+The fifth field consists of two characters, either of which may take
+on several values.  The first character may be either `t' or `b', indicating
+that \fIzip\fP believes the file to be text or binary, respectively;
+but if the file is encrypted, \fIzipinfo\fP
+notes this fact by capitalizing the character (`T' or `B').  The second
+character may also take on four values, depending on whether there is
+an extended local header and/or an ``extra field'' associated with the
+file (fully explained in PKWare's APPNOTE.TXT, but basically analogous to
+pragmas in ANSI C--i.e., they provide a standard way to include non-standard
+information in the archive).  If neither exists, the character
+will be a hyphen (`\-'); if there is an extended local header but no extra
+field, `l'; if the reverse, `x'; and if both exist, `X'.  Thus the
+file in this example is (probably) a text file, is not encrypted, and
+has neither an extra field nor an extended local header associated with it.
+The example below, on the other hand, is an encrypted binary file with an
+extra field:
+.PP
+.X "RWD,R,R     0.9 vms     168 Bx shrk  9-Aug-91 19:15 perms.0644"
+.PP
+Extra fields are used for various purposes (see discussion of the \fB\-v\fP
+option below) including the storage of VMS file attributes, which is
+presumably the case here.  Note that the file attributes are listed in
+VMS format.  Some other possibilities for the host operating system (which
+is actually a misnomer--host file system is more correct) include
+OS/2 or NT with High Performance File System (HPFS), MS-DOS, OS/2 or NT
+with File Allocation Table (FAT) file system, and Macintosh.  These are
+denoted as follows:
+.PP
+.X "-rw-a--     1.0 hpf    5358 Tl i4:3  4-Dec-91 11:33 longfilename.hpfs"
+.X "-r--ahs     1.1 fat    4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF"
+.X "--w-------  1.0 mac   17357 bx i8:2  4-May-92 04:02 unzip.macr"
+.PP
+File attributes in the first two cases are indicated in a Unix-like format,
+where the seven subfields indicate whether the file:  (1) is a directory,
+(2) is readable (always true), (3) is writable, (4) is executable (guessed
+on the basis of the extension--\fI.exe\fP, \fI.com\fP, \fI.bat\fP, \fI.cmd\fP
+and \fI.btm\fP files are assumed to be so), (5) has its archive bit set,
+(6) is hidden, and (7) is a system file.  Interpretation of Macintosh file
+attributes is unreliable because some Macintosh archivers don't store any
+attributes in the archive.
+.PP
+Finally, the sixth field indicates
+the compression method and possible sub-method used.  There are six methods
+known at present:  storing (no compression), reducing, shrinking, imploding,
+tokenizing (never publicly released), and deflating.  In addition, there are
+four levels of reducing (1 through 4); four types of imploding (4K or 8K
+sliding dictionary, and 2 or 3 Shannon-Fano trees); and four levels of
+deflating (superfast, fast, normal, maximum compression).  \fIzipinfo\fP
+represents these methods and their sub-methods as follows:  \fIstor\fP;
+\fIre:1\fP, \fIre:2\fP, etc.; \fIshrk\fP; \fIi4:2\fP, \fIi8:3\fP, etc.;
+\fItokn\fP; and \fIdefS\fP, \fIdefF\fP, \fIdefN\fP, and \fIdefX\fP.
+.PP
+The medium and long listings are almost identical to the short format except
+that they add information on the file's compression.  The medium format lists
+the file's compression factor as a percentage indicating the amount of space
+that has been ``removed'':
+.PP
+.X "-rw-rws---  1.5 unx    2802 t- 81% defX 11-Aug-91 13:48 perms.2660"
+.PP
+In this example, the file has been compressed by more than a factor of
+five; the compressed data are only 19% of the original size.  The long
+format gives the compressed file's size in bytes, instead:
+.PP
+.X "-rw-rws---  1.5 unx    2802 t-     538 defX 11-Aug-91 13:48 perms.2660"
+.PP
+Adding the \fB\-T\fP option changes the file date and time to decimal
+format:
+.PP
+.X "-rw-rws---  1.5 unx    2802 t-     538 defX 910811.134804 perms.2660"
+.PP
+Note that because of limitations in the MS-DOS format used to store file
+times, the seconds field is always rounded to the nearest even second.
+For Unix files this is expected to change in the next major releases of
+\fIzip\fP(1L) and \fIunzip\fP.
+.PP
+In addition to individual file information, a default zipfile listing
+also includes header and trailer lines:
+.PP
+.X "Archive:  OS2.zip   5453 bytes   5 files"
+.X ",,rw,       1.0 hpf     730 b- i4:3 26-Jun-92 23:40 Contents"
+.X ",,rw,       1.0 hpf    3710 b- i4:3 26-Jun-92 23:33 makefile.os2"
+.X ",,rw,       1.0 hpf    8753 b- i8:3 26-Jun-92 15:29 os2unzip.c"
+.X ",,rw,       1.0 hpf      98 b- stor 21-Aug-91 15:34 unzip.def"
+.X ",,rw,       1.0 hpf      95 b- stor 21-Aug-91 17:51 zipinfo.def"
+.X "5 files, 13386 bytes uncompressed, 4951 bytes compressed:  63.0%"
+.PP
+The header line gives the name of the archive, its total size, and the
+total number of files; the trailer gives the number of files listed,
+their total uncompressed size, and their total compressed size (not
+including any of \fIzip\fP's internal overhead).  If, however, one or
+more \fIfile(s)\fP are provided, the header and trailer lines are
+not listed.  This behavior is also similar to that of Unix's ``\fCls \-l\fR'';
+it may be overridden by specifying the \fB\-h\fP and \fB\-t\fP options
+explicitly.
+In such a case the listing format must also be specified explicitly,
+since \fB\-h\fP or \fB\-t\fP (or both) in the absence of other options implies
+that ONLY the header or trailer line (or both) is listed.  See the
+\fBEXAMPLES\fP section below for a semi-intelligible translation of this
+nonsense.
+.PP
+The verbose listing is mostly self-explanatory.  It also lists file
+comments and the zipfile comment, if any, and the type and number of bytes
+in any stored extra fields.  Currently known types of extra fields include
+PKWARE's authentication (``AV'') info; OS/2 extended attributes; VMS
+filesystem info, both PKWARE and Info-ZIP versions; Macintosh resource
+forks; Acorn/Archimedes SparkFS info; and so on.  (Note
+that in the case of OS/2 extended attributes--perhaps the most common
+use of zipfile extra fields--the size of the stored EAs as reported by
+\fIzipinfo\fP may not match the number given by OS/2's \fIdir\fP command:
+OS/2 always reports the number of bytes required in 16-bit format, whereas
+\fIzipinfo\fP always reports the 32-bit storage.)
+.PD
+.\" =========================================================================
+.SH "ENVIRONMENT OPTIONS"
+Modifying \fIzipinfo\fP's default behavior via options placed in
+an environment variable can be a bit complicated to explain, due to
+\fIzipinfo\fP's attempts to handle various defaults in an intuitive,
+yet Unix-like, manner.  (Try not to laugh.)  Nevertheless, there is some
+underlying logic.  In brief,
+there are three ``priority levels'' of options:  the default options;
+environment options, which can override or add to the defaults; and
+explicit options given by the user, which can override or add to
+either of the above.
+.PP
+The default listing format, as noted above, corresponds roughly
+to the "\fCzipinfo \-hst\fR" command (except when individual zipfile members
+are specified).
+A user who prefers the long-listing format (\fB\-l\fP) can make use of the
+\fIzipinfo\fP's environment variable to change this default:
+.TP
+Unix Bourne shell:
+\f(CW\&ZIPINFO=\-l; export ZIPINFO\fP
+.TP
+Unix C shell:
+\f(CW\&setenv ZIPINFO \-l\fP
+.TP
+OS/2 or MS-DOS:
+\f(CW\&set ZIPINFO=\-l\fP
+.TP
+VMS (quotes for \fIlowercase\fP):
+\f(CW\&define ZIPINFO_OPTS "\-l"\fP
+.EE
+.PP
+If, in addition, the user dislikes the trailer line, \fIzipinfo\fP's
+concept of ``negative options'' may be used to override the default
+inclusion of the line.  This is accomplished by preceding the undesired
+option with one or more minuses:  e.g., ``\fC\-l\-t\fR'' or ``\fC\-\-tl\fR'',
+in this example.  The first hyphen is the regular switch character, but the
+one before the `t' is a minus sign.  The dual use of hyphens may seem a
+little awkward, but it's reasonably intuitive nonetheless:  simply ignore
+the first hyphen and go from there.  It is also consistent with the behavior
+of the Unix command \fInice\fP(1).
+.PP
+As suggested above, the default variable names are ZIPINFO_OPTS for VMS
+(where the symbol used to install \fIzipinfo\fP as a foreign command
+would otherwise be confused with the environment variable), and ZIPINFO
+for all other operating systems.  For compatibility with \fIzip\fP(1L),
+ZIPINFOOPT is also accepted (don't ask).  If both ZIPINFO and ZIPINFOOPT
+are defined, however, ZIPINFO takes precedence.  \fIunzip\fP's diagnostic
+option (\fB\-v\fP with no zipfile name) can be used to check the values
+of all four possible \fIunzip\fP and \fIzipinfo\fP environment variables.
+.PD
+.\" =========================================================================
+.SH EXAMPLES
+To get a basic, short-format listing of the complete contents of a ZIP
+archive \fIstorage.zip\fP, with both header and totals lines, use only
+the archive name as an argument to zipinfo:
+.PP
+.EX
+zipinfo storage
+.EE
+.PP
+To produce a basic, long-format listing (not verbose), including header and
+totals lines, use \fB\-l\fP:
+.PP
+.EX
+zipinfo \-l storage
+.EE
+.PP
+To list the complete contents of the archive without header and totals
+lines, either negate the \fB\-h\fP and \fB\-t\fP options or else specify the
+contents explicitly:
+.PP
+.EX
+zipinfo \-\-h\-t storage
+zipinfo storage \e*
+.EE
+.PP
+(where the backslash is required only if the shell would otherwise expand
+the `*' wildcard, as in Unix when globbing is turned on--double quotes around
+the asterisk would have worked as well).  To turn off the totals line by
+default, use the environment variable (C shell is assumed here):
+.PP
+.EX
+setenv ZIPINFO \-\-t
+zipinfo storage
+.EE
+.PP
+To get the full, short-format listing of the first example again, given
+that the environment variable is set as in the previous example, it is
+necessary to specify the \fB\-s\fP option explicitly, since the \fB\-t\fP
+option by itself implies that ONLY the footer line is to be printed:
+.PP
+.EX
+setenv ZIPINFO \-\-t
+zipinfo \-t storage            \fR[only totals line]\fP
+zipinfo \-st storage           \fR[full listing]\fP
+.EE
+.PP
+The \fB\-s\fP option, like \fB\-m\fP and \fB\-l\fP, includes headers and
+footers by default, unless otherwise specified.  Since the environment
+variable specified no footers and that has a higher precedence than the
+default behavior of \fB\-s\fP, an explicit \fB\-t\fP option was necessary
+to produce the full listing.  Nothing was indicated about the header,
+however, so the \fB\-s\fP option was sufficient.  Note that both the
+\fB\-h\fP and \fB\-t\fP options, when used by themselves or with
+each other, override any default listing of member files; only the header
+and/or footer are printed.  This behavior is useful when \fIzipinfo\fP is
+used with a wildcard zipfile specification; the contents of all zipfiles
+are then summarized with a single command.
+.PP
+To list information on a single file within the archive, in medium format,
+specify the filename explicitly:
+.PP
+.EX
+zipinfo \-m storage unshrink.c
+.EE
+.PP
+The specification of any member file, as in this example, will override
+the default header and totals lines; only the single line of information
+about the requested file will be printed.  This is intuitively what one
+would expect when requesting information about a single file.  For multiple
+files, it is often useful to know the total compressed and uncompressed
+size; in such cases \fB\-t\fP may be specified explicitly:
+.PP
+.EX
+zipinfo \-mt storage "*.[ch]" Mak\e*
+.EE
+.PP
+To get maximal information about the ZIP archive, use the verbose
+option.  It is usually wise to pipe the output into a filter such as
+Unix \fImore\fP(1) if the operating system allows it:
+.PP
+.EX
+zipinfo \-v storage | more
+.EE
+.PP
+Finally, to see the most recently modified files in the archive, use
+the \fB\-T\fP option in conjunction with an external sorting utility
+such as Unix \fIsort\fP(1) (and \fItail\fP(1) as well, in this example):
+.PP
+.EX
+zipinfo \-T storage | sort -n +6 | tail -15
+.EE
+.PP
+The \fB\-n\fP option to \fIsort\fP(1) tells it to sort numerically
+rather than in ASCII order, and the \fB\+6\fP option tells it to sort
+on the sixth field after the first one (i.e., the seventh field).  This
+assumes the default short-listing format; if \fB\-m\fP or \fB\-l\fP is
+used, the proper \fIsort\fP(1) option would be \fB\+7\fP.  The \fItail\fP(1)
+command filters out all but the last 15 lines of the listing.  Future
+releases of \fIzipinfo\fP may incorporate date/time and filename sorting
+as built-in options.
+.PD
+.\" =========================================================================
+.SH TIPS
+The author finds it convenient to define an alias \fIii\fP for \fIzipinfo\fP
+on systems that allow aliases (or, on other systems, copy/rename the
+executable, create a link or create a command file with the name \fIii\fP).
+The \fIii\fP usage parallels the common \fIll\fP alias for long listings in
+Unix, and the similarity between the outputs of the two commands was
+intentional.
+.PD
+.\" =========================================================================
+.SH BUGS
+As with \fIunzip\fP, \fIzipinfo\fP's \fB\-M\fP (``more'') option is overly
+simplistic in its handling of screen output; as noted above, it fails to detect
+the wrapping of long lines and may thereby cause lines at the top of the screen
+to be scrolled off before being read.  \fIzipinfo\fP should detect and treat
+each occurrence of line-wrap as one additional line printed.  This requires
+knowledge of the screen's width as well as its height.  In addition,
+\fIzipinfo\fP should detect the true screen geometry on all systems.
+.PP
+\fIzipinfo\fP's listing-format behavior is unnecessarily complex and should
+be simplified.  (This is not to say that it will be.)
+.PP
+.\" =========================================================================
+.SH "SEE ALSO"
+\fIls\fP(1), \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L),
+\fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L)
+.PD
+.\" =========================================================================
+.SH URL
+The Info-ZIP home page is currently at
+.EX
+\fChttp://www.info-zip.org/pub/infozip/\fR
+.EE
+or
+.EX
+\fCftp://ftp.info-zip.org/pub/infozip/\fR .
+.EE
+.PD
+.\" =========================================================================
+.SH AUTHOR
+Greg ``Cave Newt'' Roelofs.  ZipInfo contains pattern-matching code
+by Mark Adler and fixes/improvements by many others.  Please refer to the
+CONTRIBS file in the UnZip source distribution for a more complete list.
diff --git a/raw/man1/zless.1 b/raw/man1/zless.1
new file mode 100644
index 0000000..996fb0c
--- /dev/null
+++ b/raw/man1/zless.1
@@ -0,0 +1,18 @@
+.TH ZLESS 1
+.SH NAME
+zless \- file perusal filter for crt viewing of compressed text
+.SH SYNOPSIS
+.B zless
+[ name ...  ]
+.SH DESCRIPTION
+.I  Zless
+is a filter which allows examination of compressed or plain text files
+one screenful at a time on a soft-copy terminal.  It is the equivalent of
+setting the environment variable PAGER to 
+.I less,
+and then running zmore.  However, enough people seem to think that having the
+command 
+.I zless
+available is important to be worth providing it.
+.SH "SEE ALSO"
+zmore(1), less(1)
diff --git a/raw/man2/accept.2 b/raw/man2/accept.2
new file mode 100644
index 0000000..de344fb
--- /dev/null
+++ b/raw/man2/accept.2
@@ -0,0 +1,288 @@
+.\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Sat Jul 24 16:42:42 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 1998-2000 by Andi Kleen to match Linux 2.2 reality
+.\" Modified Tue Apr 23 20:33:18 CEST 2002 by Roger Luethi <rl at hellgate.ch>
+.TH ACCEPT 2 2002-04-23 "Linux 2.2 Page" "Linux Programmer's Manual"
+.SH NAME
+accept \- accept a connection on a socket
+.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
+.B #include <sys/socket.h>
+.sp
+.BI "int accept(int " s ", struct sockaddr *" addr ", socklen_t *" addrlen );
+.SH DESCRIPTION
+
+The
+.B accept
+function is used with connection-based socket types
+.RB ( SOCK_STREAM ,
+.B SOCK_SEQPACKET
+and
+.BR SOCK_RDM ).
+It extracts the first connection request on the queue of pending
+connections, creates a new connected socket with mostly the same properties as
+.IR s ,
+and allocates a new file descriptor for the socket, which is returned.
+The newly created socket is no longer in the listening state.
+The original socket
+.I s
+is unaffected by this call. Note that any per file descriptor flags 
+(everything that can be set with the 
+.B F_SETFL
+fcntl, like non blocking or async state) are not inherited across
+an
+.IR accept .
+.PP
+The argument
+.I s
+is a socket that has been created with
+.BR socket (2),
+bound to a local address with
+.BR bind (2),
+and is listening for connections after a
+.BR listen (2).
+
+The argument
+.I addr
+is a pointer to a sockaddr structure. This structure is filled in
+with the address of the connecting entity,
+as known to the communications layer.  The exact format of the
+address passed in the
+.I addr
+parameter is determined by the socket's family (see
+.BR socket (2) 
+and the respective protocol man pages).
+The
+.I addrlen
+argument is a value-result parameter: it should initially contain the
+size of the structure pointed to by
+.IR addr ;
+on return it will contain the actual length (in bytes) of the address
+returned. When 
+.I addr
+is NULL nothing is filled in.
+.PP
+If no pending
+connections are present on the queue, and the socket is not marked as
+non-blocking,
+.B accept
+blocks the caller until a connection is present.  If the socket is marked
+non-blocking and no pending connections are present on the queue,
+.B accept
+returns EAGAIN. 
+.PP
+In order to be notified of incoming connections on a socket, you can use
+.BR select (2)
+or
+.BR poll (2).
+A readable event will be delivered when a new connection is attempted and you
+may then call
+.B accept
+to get a socket for that connection.  Alternatively, you can set the socket
+to deliver
+.B SIGIO
+when activity occurs on a socket; see
+.BR socket (7)
+for details.
+.PP
+For certain protocols which require an explicit confirmation,
+such as
+DECNet,
+.B accept
+can be thought of as merely dequeuing the next connection request and not
+implying confirmation.  Confirmation can be implied by
+a normal read or write on the new file descriptor, and rejection can be
+implied by closing the new socket. Currently only 
+DECNet 
+has these semantics on Linux. 
+.SH NOTES
+There may not always be a connection waiting after a
+.B SIGIO
+is delivered or
+.BR select (2)
+or
+.BR poll (2)
+return a readability event because the connection might have been
+removed by an asynchronous network error or another thread before
+.B accept
+is called.
+If this happens then the call will block waiting for the next
+connection to arrive.
+To ensure that
+.B accept
+never blocks, the passed socket
+.I s
+needs to have the
+.B O_NONBLOCK
+flag set (see
+.BR socket (7)).
+.SH "RETURN VALUE"
+The call returns \-1 on error.  If it succeeds, it returns a non-negative
+integer that is a descriptor for the accepted socket.
+.SH "ERROR HANDLING"
+Linux 
+.B accept 
+passes already-pending network errors on the new socket 
+as an error code from 
+.BR accept . 
+This behaviour differs from other BSD socket
+implementations. For reliable operation the application should detect
+the network errors defined for the protocol after 
+.B accept 
+and treat
+them like 
+.BR EAGAIN
+by retrying. In case of TCP/IP these are
+.BR ENETDOWN ,
+.BR EPROTO ,
+.BR ENOPROTOOPT ,
+.BR EHOSTDOWN ,
+.BR ENONET ,
+.BR EHOSTUNREACH ,
+.BR EOPNOTSUPP ,
+and
+.BR ENETUNREACH .
+.SH ERRORS
+.B accept
+shall fail if:
+.TP
+.BR EAGAIN " or " EWOULDBLOCK
+The socket is marked non-blocking and no connections are
+present to be accepted.
+.TP
+.B EBADF
+The descriptor is invalid.
+.TP
+.B ENOTSOCK
+The descriptor references a file, not a socket.
+.TP
+.B EOPNOTSUPP
+The referenced socket is not of type
+.BR SOCK_STREAM . 
+.TP
+.B EINTR
+The system call was interrupted by a signal that was caught
+before a valid connection arrived. 
+.TP
+.B ECONNABORTED
+A connection has been aborted.
+.TP
+.B EINVAL
+Socket is not listening for connections.
+.TP
+.B EMFILE
+The per-process limit of open file descriptors has been reached.
+.TP
+.B ENFILE
+The system maximum for file descriptors has been reached.
+.PP
+.B accept
+may fail if:
+.TP
+.B EFAULT
+The
+.I addr
+parameter is not in a writable part of the user address space.
+.TP
+.B ENOBUFS, ENOMEM
+Not enough free memory.  
+This often means that the memory allocation is limited by the socket buffer
+limits, not by the system memory.
+.TP
+.B EPROTO
+Protocol error.
+.PP
+Linux
+.B accept
+may fail if:
+.TP
+.B EPERM
+Firewall rules forbid connection.
+.PP
+In addition, network errors for the new socket and as defined
+for the protocol may be returned. Various Linux kernels can
+return other errors such as
+.BR ENOSR ,
+.BR ESOCKTNOSUPPORT ,
+.BR EPROTONOSUPPORT ,
+.BR ETIMEDOUT .
+The value
+.B ERESTARTSYS
+may be seen during a trace.
+.SH "CONFORMING TO"
+SVr4, 4.4BSD (the
+.B accept
+function first appeared in BSD 4.2).
+The BSD man page documents five possible error returns
+(EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT).
+SUSv3 documents errors EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE,
+ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK. In
+addition, SUSv2 documents EFAULT and ENOSR.
+.LP
+Linux accept does _not_ inherit socket flags like
+.BR O_NONBLOCK .
+This behaviour differs from other BSD socket implementations.
+Portable programs should not rely on this behaviour and always set
+all required flags on the socket returned from accept.
+.SH NOTE
+The third argument of
+.B accept
+was originally declared as an `int *' (and is that under libc4 and libc5
+and on many other systems like BSD 4.*, SunOS 4, SGI); a POSIX 1003.1g draft
+standard wanted to change it into a `size_t *', and that is what it is
+for SunOS 5.
+Later POSIX drafts have `socklen_t *', and so do the Single Unix Specification
+and glibc2.
+Quoting Linus Torvalds:
+.\" .I fails: only italicizes a single line
+\fI_Any_ sane library _must_ have "socklen_t" be the same size
+as int.  Anything else breaks any BSD socket layer stuff.
+POSIX initially _did_ make it a size_t, and I (and hopefully others, but
+obviously not too many) complained to them very loudly indeed.  Making
+it a size_t is completely broken, exactly because size_t very seldom is
+the same size as "int" on 64-bit architectures, for example.  And it
+_has_ to be the same size as "int" because that's what the BSD socket
+interface is. 
+Anyway, the POSIX people eventually got a clue, and created "socklen_t". 
+They shouldn't have touched it in the first place, but once they did
+they felt it had to have a named type for some unfathomable reason
+(probably somebody didn't like losing face over having done the original
+stupid thing, so they silently just renamed their blunder).\fP
+.SH "SEE ALSO"
+.BR bind (2),
+.BR connect (2),
+.BR listen (2),
+.BR select (2),
+.BR socket (2)
diff --git a/raw/man2/bind.2 b/raw/man2/bind.2
new file mode 100644
index 0000000..7dc14d7
--- /dev/null
+++ b/raw/man2/bind.2
@@ -0,0 +1,207 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" Portions extracted from /usr/include/sys/socket.h, which does not have
+.\" any authorship information in it.  It is probably available under the GPL.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"
+.\" Other portions are from the 6.9 (Berkeley) 3/10/91 man page:
+.\"
+.\" Copyright (c) 1983 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"     This product includes software developed by the University of
+.\"     California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 1998 by Andi Kleen
+.TH BIND 2 1998-10-03 "Linux 2.2" "Linux Programmer's Manual"
+.SH NAME
+bind \- bind a name to a socket
+.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
+.B #include <sys/socket.h>
+.sp
+.BI "int bind(int " sockfd ", struct sockaddr *" my_addr ", socklen_t " addrlen );
+.SH DESCRIPTION
+.B bind
+gives the socket
+.I sockfd
+the local address
+.IR my_addr .
+.I my_addr
+is
+.I addrlen
+bytes long.  Traditionally, this is called \(lqassigning a name to a socket.\(rq
+When a socket is created with
+.BR socket (2),
+it exists in a name space (address family) but has no name assigned.
+.PP
+It is normally necessary to assign a local address using
+.B bind
+before a
+.B SOCK_STREAM
+socket may receive connections (see
+.BR accept (2)).
+
+The rules used in name binding vary between address families.  Consult
+the manual entries in Section 7 for detailed information. For
+.B AF_INET
+see
+.BR ip (7),
+for
+.B AF_UNIX
+see
+.BR unix (7),
+for
+.B AF_APPLETALK
+see
+.BR ddp (7),
+for
+.B AF_PACKET
+see
+.BR packet (7),
+for
+.B AF_X25
+see
+.BR x25 (7)
+and for
+.B AF_NETLINK
+see
+.BR netlink (7).
+
+.SH "RETURN VALUE"
+On success, zero is returned.  On error, \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EBADF
+.I sockfd
+is not a valid descriptor.
+.TP
+.B EINVAL
+The socket is already bound to an address.  This may change in the future:
+see
+.I linux/unix/sock.c
+for details.
+.TP
+.B EACCES
+The address is protected, and the user is not the super-user.
+.TP
+.B ENOTSOCK
+Argument is a descriptor for a file, not a socket.
+.PP
+The following errors are specific to UNIX domain 
+.RB ( AF_UNIX ) 
+sockets:
+.TP
+.B EINVAL
+The
+.I addrlen
+is wrong, or the socket was not in the
+.B AF_UNIX
+family.
+.TP
+.B EROFS
+The socket inode would reside on a read-only file system.
+.TP
+.B EFAULT
+.I my_addr
+points outside the user's accessible address space.
+.TP
+.B ENAMETOOLONG
+.I my_addr
+is too long.
+.TP
+.B ENOENT
+The file does not exist.
+.TP
+.B ENOMEM
+Insufficient kernel memory was available.
+.TP
+.B ENOTDIR
+A component of the path prefix is not a directory.
+.TP
+.B EACCES
+Search permission is denied on a component of the path prefix.
+.TP
+.B ELOOP
+Too many symbolic links were encountered in resolving
+.IR my_addr .
+.SH BUGS
+The transparent proxy options are not described.
+.SH "CONFORMING TO"
+SVr4, 4.4BSD (the
+.B bind
+function first appeared in BSD 4.2).  SVr4 documents additional
+.BR EADDRNOTAVAIL , 
+.BR EADDRINUSE , 
+and
+.B ENOSR 
+general error conditions, and
+additional 
+.B EIO
+and
+.B EISDIR
+Unix-domain error conditions.
+.SH NOTE
+The third argument of
+.B bind
+is in reality an int (and this is what BSD 4.* and libc4 and libc5 have).
+Some POSIX confusion resulted in the present socklen_t. See also
+.BR accept (2).
+.SH "SEE ALSO"
+.BR accept (2),
+.BR connect (2),
+.BR listen (2),
+.BR socket (2),
+.BR getsockname (2),
+.BR ip (7),
+.BR socket (7)
diff --git a/raw/man2/close.2 b/raw/man2/close.2
new file mode 100644
index 0000000..bec96d4
--- /dev/null
+++ b/raw/man2/close.2
@@ -0,0 +1,101 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Wed Jul 21 22:40:25 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sat Feb 18 15:27:48 1995 by Michael Haardt
+.\" Modified Sun Apr 14 11:40:50 1996 by Andries Brouwer <aeb at cwi.nl>:
+.\"   corrected description of effect on locks (thanks to
+.\"   Tigran Aivazian <tigran at sco.com>).
+.\" Modified Fri Jan 31 16:21:46 1997 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 2000-07-22 by Nicol?s Lichtmaier <nick at debian.org>
+.\"   added note about close(2) not guaranteeing that data is safe on close.
+.\"
+.TH CLOSE 2 2001-12-13 "" "Linux Programmer's Manual"
+.SH NAME
+close \- close a file descriptor
+.SH SYNOPSIS
+.nf
+.B #include <unistd.h>
+.sp
+.BI "int close(int " fd );
+.fi
+.SH DESCRIPTION
+.B close
+closes a file descriptor, so that it no longer refers to any file and
+may be reused. Any locks held on the file it was associated with,
+and owned by the process, are removed (regardless of the file
+descriptor that was used to obtain the lock).
+.PP
+If
+.I fd
+is the last copy of a particular file descriptor the resources
+associated with it are freed;
+if the descriptor was the last reference to a file which has been
+removed using
+.BR unlink (2)
+the file is deleted.
+.SH "RETURN VALUE"
+.B close
+returns zero on success, or \-1 if an error occurred.
+.SH ERRORS
+.TP
+.B EBADF
+.I fd
+isn't a valid open file descriptor.
+.TP
+.B EINTR
+The
+.BR close ()
+call was interrupted by a signal.
+.TP
+.B EIO
+An I/O error occurred.
+.SH "CONFORMING TO"
+SVr4, SVID, POSIX, X/OPEN, BSD 4.3.  SVr4 documents an additional
+ENOLINK error condition.
+.SH NOTES
+Not checking the return value of close is a common but nevertheless
+serious programming error.  It is quite possible that errors on a
+previous
+.BR write (2)
+operation are first reported at the final
+.BR close .
+Not checking the return value when closing the file may lead to
+silent loss of data.  This can especially be observed with NFS
+and disk quotas.
+.PP
+A successful close does not guarantee that the data has been successfully
+saved to disk, as the kernel defers writes. It is not common for a filesystem
+to flush the buffers when the stream is closed. If you need to be sure that
+the data is physically stored use
+.BR fsync (2).
+(It will depend on the disk hardware at this point.)
+.SH "SEE ALSO"
+.BR open (2),
+.BR fcntl (2),
+.BR shutdown (2),
+.BR unlink (2),
+.BR fclose (3),
+.BR fsync (2)
diff --git a/raw/man2/create_module.2 b/raw/man2/create_module.2
new file mode 100644
index 0000000..12fc442
--- /dev/null
+++ b/raw/man2/create_module.2
@@ -0,0 +1,41 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" This file is distributed according to the GNU General Public License.
+.\" See the file COPYING in the top level source directory for details.
+.\"
+.TH CREATE_MODULE 2 "26 Dec 1996" Linux "Linux Module Support"
+.SH NAME
+create_module \- create a loadable module entry
+.SH SYNOPSIS
+.nf
+.B #include <linux/module.h>
+.sp
+.BI "caddr_t create_module(const char *" name ", size_t " size );
+.fi
+.SH DESCRIPTION
+.B create_module
+attempts to create a loadable module entry and reserve the kernel memory
+that will be needed to hold the module.  This system call is only open
+to the superuser.
+.SH "RETURN VALUE"
+On success, returns the kernel address at which the module will reside.
+On error \-1 is returned and \fIerrno\fP is set appropriately.
+.SH ERRORS
+.TP
+.B EPERM
+The user is not the superuser.
+.TP
+.B EEXIST
+A module by that name already exists.
+.TP
+.B EINVAL
+The requested size is too small even for the module header information.
+.TP
+.B ENOMEM
+The kernel could not allocate a contiguous block of memory large
+enough for the module.
+.TP
+.B EFAULT
+.I name
+is outside the program's accessible address space.
+.SH "SEE ALSO
+.BR init_module "(2), " delete_module "(2), " query_module "(2)."
diff --git a/raw/man2/execve.2 b/raw/man2/execve.2
new file mode 100644
index 0000000..4c460bb
--- /dev/null
+++ b/raw/man2/execve.2
@@ -0,0 +1,203 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew at cs.colorado.edu), March 28, 1992
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <michael at moria.de>
+.\" Modified Wed Jul 21 22:47:01 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified 21 Aug 1994 by Michael Chastain <mec at shell.portal.com>:
+.\"   Fixed typoes.
+.\" Modified Fri Jan 31 16:24:28 1997 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified Fri Nov 12 22:57:27 1999 by Urs Thuermann <urs at isnogud.escape.de>
+.\"
+.TH EXECVE 2 1997-09-03 "Linux 2.0.30" "Linux Programmer's Manual"
+.SH NAME
+execve \- execute program
+.SH SYNOPSIS
+.B #include <unistd.h>
+.sp
+.BI "int execve(const char *" filename ", char *const " argv
+.BI "[], char *const " envp []);
+.SH DESCRIPTION
+\fBexecve()\fP executes the program pointed to by \fIfilename\fP.
+\fIfilename\fP must be either a binary executable, or a script
+starting with a line of the form "\fB#! \fIinterpreter \fR[arg]".
+In the latter case, the interpreter must be a valid pathname for an
+executable which is not itself a script, which will be invoked as
+\fBinterpreter\fR [arg] \fIfilename\fR.
+
+\fIargv\fP is an array of argument strings passed to the new program.
+\fIenvp\fP is an array of strings, conventionally of the form
+\fBkey=value\fR, which are passed as environment to the new
+program.  Both, \fIargv\fP and \fIenvp\fP must be terminated by a null
+pointer.  The argument vector and environment can be accessed by the
+called program's main function, when it is defined as \fBint main(int
+argc, char *argv[], char *envp[])\fR.
+
+\fBexecve()\fP does not return on success, and the text, data, bss, and
+stack of the calling process are overwritten by that of the program
+loaded.  The program invoked inherits the calling process's PID, and any
+open file descriptors that are not set to close on exec.  Signals pending
+on the calling process are cleared.  Any signals set to be caught by
+the calling process are reset to their default behaviour.
+The SIGCHLD signal (when set to SIG_IGN) may or may not be reset to SIG_DFL.
+
+If the current program is being ptraced, a \fBSIGTRAP\fP is sent to it
+after a successful \fBexecve()\fP.
+
+If the set-uid bit is set on the program file pointed to by
+\fIfilename\fP the effective user ID of the calling process is changed
+to that of the owner of the program file.  Similarly, when the set-gid
+bit of the program file is set the effective group ID of the calling
+process is set to the group of the program file.
+
+If the executable is an a.out dynamically-linked binary executable containing
+shared-library stubs, the Linux dynamic linker
+.BR ld.so (8)
+is called at the start of execution to bring needed shared libraries into core
+and link the executable with them.
+
+If the executable is a dynamically-linked ELF executable, the
+interpreter named in the PT_INTERP segment is used to load the needed
+shared libraries.  This interpreter is typically
+\fI/lib/ld-linux.so.1\fR for binaries linked with the Linux libc
+version 5, or \fI/lib/ld-linux.so.2\fR for binaries linked with the
+GNU libc version 2.
+.SH "RETURN VALUE"
+On success, \fBexecve()\fP does not return, on error \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EACCES
+The file or a script interpreter is not a regular file.
+.TP
+.B EACCES
+Execute permission is denied for the file or a script or ELF interpreter.
+.TP
+.B EACCES
+The file system is mounted
+.IR noexec .
+.TP
+.B EPERM
+The file system is mounted
+.IR nosuid ,
+the user is not the superuser, and the file has an SUID or SGID bit set.
+.TP
+.B EPERM
+The process is being traced, the user is not the superuser and the
+file has an SUID or SGID bit set.
+.TP
+.B E2BIG
+The argument list is too big.
+.TP
+.B ENOEXEC
+An executable is not in a recognised format, is for the wrong
+architecture, or has some other format error that means it cannot be
+executed.
+.TP
+.B EFAULT
+.I filename
+points outside your accessible address space.
+.TP
+.B ENAMETOOLONG
+.I filename
+is too long.
+.TP
+.B ENOENT
+The file 
+.I filename
+or a script or ELF interpreter does not exist, or a shared library
+needed for file or interpreter cannot be found.
+.TP
+.B ENOMEM
+Insufficient kernel memory was available.
+.TP
+.B ENOTDIR
+A component of the path prefix of
+.I filename
+or a script or ELF interpreter is not a directory.
+.TP
+.B EACCES
+Search permission is denied on a component of the path prefix of
+.I filename
+or the name of a script interpreter.
+.TP
+.B ELOOP
+Too many symbolic links were encountered in resolving
+.I filename
+or the name of a script or ELF interpreter.
+.TP
+.B ETXTBSY
+Executable was open for writing by one or more processes.
+.TP
+.B EIO
+An I/O error occurred.
+.TP
+.B ENFILE
+The limit on the total number of files open on the system has been reached.
+.TP
+.B EMFILE
+The process has the maximum number of files open.
+.TP
+.B EINVAL
+An ELF executable had more than one PT_INTERP segment (i.e., tried to
+name more than one interpreter).
+.TP
+.B EISDIR
+An ELF interpreter was a directory.
+.TP
+.B ELIBBAD
+An ELF interpreter was not in a recognised format.
+.SH "CONFORMING TO"
+SVr4, SVID, X/OPEN, BSD 4.3.  POSIX does not document the #!  behavior
+but is otherwise compatible.  SVr4 documents additional error
+conditions EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX does not
+document ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL,
+EISDIR or ELIBBAD error conditions.
+.SH NOTES
+SUID and SGID processes can not be \fBptrace()\fPd.
+
+Linux ignores the SUID and SGID bits on scripts.
+
+The result of mounting a filesystem
+.I nosuid
+vary between Linux kernel versions:
+some will refuse execution of SUID/SGID executables when this would
+give the user powers she did not have already (and return EPERM),
+some will just ignore the SUID/SGID bits and exec successfully.
+
+A maximum line length of 127 characters is allowed for the first line in
+a #! executable shell script. 
+.\" .SH BUGS
+.\" Some Linux versions have failed to check permissions on ELF
+.\" interpreters.  This is a security hole, because it allows users to
+.\" open any file, such as a rewinding tape device, for reading.  Some
+.\" Linux versions have also had other security holes in \fBexecve()\fP,
+.\" that could be exploited for denial of service by a suitably crafted
+.\" ELF binary. There are no known problems with 2.0.34 or 2.2.15.
+.SH "SEE ALSO"
+.BR chmod (2),
+.BR fork (2),
+.BR execl (3),
+.BR environ (5),
+.BR ld.so (8)
diff --git a/raw/man2/init_module.2 b/raw/man2/init_module.2
new file mode 100644
index 0000000..b3debf6
--- /dev/null
+++ b/raw/man2/init_module.2
@@ -0,0 +1,77 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" This file is distributed according to the GNU General Public License.
+.\" See the file COPYING in the top level source directory for details.
+.\"
+.TH INIT_MODULE 2 "26 Dec 1996" "Linux 2.1.17" "Linux Module Support"
+.SH NAME
+init_module \- initialize a loadable module entry
+.SH SYNOPSIS
+.nf
+.B #include <linux/module.h>
+.sp
+.BI "int init_module(const char *" name ", struct module *" image );
+.fi
+.SH DESCRIPTION
+.B init_module
+loads the relocated module image into kernel space and runs the
+module's \fIinit\fP function.
+.PP
+The module image begins with a module structure and is followed by
+code and data as appropriate.  The module structure is defined as follows:
+.PP
+.RS
+.nf
+struct module
+{
+  unsigned long size_of_struct;
+  struct module *next;
+  const char *name;
+  unsigned long size;
+  long usecount;
+  unsigned long flags;
+  unsigned int nsyms;
+  unsigned int ndeps;
+  struct module_symbol *syms;
+  struct module_ref *deps;
+  struct module_ref *refs;
+  int (*init)(void);
+  void (*cleanup)(void);
+  const struct exception_table_entry *ex_table_start;
+  const struct exception_table_entry *ex_table_end;
+#ifdef __alpha__
+  unsigned long gp;
+#endif
+};
+.fi
+.RE
+.PP
+All of the pointer fields, with the exception of \fInext\fP and
+\fIrefs\fP, are expected to point within the module body and be
+initialized as appropriate for kernel space, i.e. relocated with
+the rest of the module.
+.PP
+This system call is only open to the superuser.
+.SH "RETURN VALUE"
+On success, zero is returned.  On error, \-1 is returned and \fIerrno\fP
+is set appropriately.
+.SH ERRORS
+.TP
+.B EPERM
+The user is not the superuser.
+.TP
+.B ENOENT
+No module by that name exists.
+.TP
+.B EINVAL
+Some \fIimage\fP slot filled in incorrectly, \fIimage->name\fP does not
+correspond to the original module name, some \fIimage->deps\fP entry
+does not correspond to a loaded module, or some other similar inconsistency.
+.TP
+.B EBUSY
+The module's initialization routine failed.
+.TP
+.B EFAULT
+\fIname\fP or \fIimage\fP
+is outside the program's accessible address space.
+.SH "SEE ALSO
+.BR create_module "(2), " delete_module "(2), " query_module "(2)."
diff --git a/raw/man2/listen.2 b/raw/man2/listen.2
new file mode 100644
index 0000000..e6b0ced
--- /dev/null
+++ b/raw/man2/listen.2
@@ -0,0 +1,130 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Fri Jul 23 22:07:54 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified 950727 by aeb, following a suggestion by Urs Thuermann
+.\" <urs at isnogud.escape.de>
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 1998 by Andi Kleen 
+.\" Modified 11 May 2001 by Sam Varshavchik <mrsam at courier-mta.com>
+.\"
+.TH LISTEN 2 1993-07-23 "BSD Man Page" "Linux Programmer's Manual"
+.SH NAME
+listen \- listen for connections on a socket
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.sp
+.BI "int listen(int " s ", int " backlog );
+.SH DESCRIPTION
+To accept connections, a socket is first created with
+.BR socket (2),
+a willingness to accept incoming connections and a queue limit for incoming
+connections are specified with
+.BR listen ,
+and then the connections are
+accepted with
+.BR accept (2).
+The
+.B listen
+call applies only to sockets of type
+.B SOCK_STREAM
+or
+.BR SOCK_SEQPACKET .
+.PP
+The
+.I backlog
+parameter defines the maximum length the queue of pending connections may
+grow to.  If a connection request arrives with the queue full the client
+may receive an error with an indication of
+.B ECONNREFUSED
+or, if the underlying protocol supports retransmission, the request may be
+ignored so that retries succeed.
+.SH NOTES
+The behaviour of the 
+.I backlog 
+parameter on TCP sockets changed with Linux 2.2.
+Now it specifies the queue length for 
+.I completely 
+established sockets waiting to be accepted, instead of the number of incomplete
+connection requests. The maximum length of the queue for incomplete sockets
+can be set using the 
+.B tcp_max_syn_backlog
+sysctl.
+When syncookies are enabled there is no logical maximum 
+length and this sysctl setting is ignored.
+See 
+.BR tcp (7)
+for more information.
+
+.SH "RETURN VALUE"
+On success, zero is returned.  On error, \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EADDRINUSE
+Another socket is already listening on the same port.
+.TP
+.B EBADF
+The argument
+.I s
+is not a valid descriptor.
+.TP
+.B ENOTSOCK
+The argument
+.I s
+is not a socket.
+.TP
+.B EOPNOTSUPP
+The socket is not of a type that supports the
+.B listen 
+operation.
+.SH "CONFORMING TO"
+Single Unix, 4.4BSD, POSIX 1003.1g draft. The
+.B listen
+function call first appeared in 4.2BSD. 
+.SH BUGS
+If the socket is of type 
+.BR AF_INET , 
+and the
+.I backlog
+argument is greater
+than the constant 
+.B SOMAXCONN 
+(128 in Linux 2.0 & 2.2), it is silently truncated
+to 
+.BR SOMAXCONN . 
+Don't rely on this value in portable applications since BSD
+(and some BSD-derived systems) limit the backlog to 5.
+.SH "SEE ALSO"
+.BR accept (2),
+.BR connect (2),
+.BR socket (2)
diff --git a/raw/man2/open.2 b/raw/man2/open.2
new file mode 100644
index 0000000..97b3d81
--- /dev/null
+++ b/raw/man2/open.2
@@ -0,0 +1,432 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Wed Jul 21 22:42:16 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Aug 21 18:18:14 1994: Michael Haardt's NFS diffs were
+.\"          applied by hand (faith at cs.unc.edu).
+.\" Modified Sat Apr 13 16:25:28 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Mon May 13 00:53:52 1996: added symbolic constants
+.\"          as sent by Thomas Koenig
+.\" Modified Fri Dec 20 16:06:45 1996 by Michael Haardt: More NFS details
+.\" Modified Fri Feb 19 15:08:34 1999 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified 981128 by Joseph S. Myers <jsm28 at hermes.cam.ac.uk>
+.\" Modified Thu Jun  3 19:29:06 1999 by Michael Haardt: NFS lock optimisation
+.\" Modified, 7 May 2002, Michael Kerrisk <mtk16 at ext.canterbury.ac.nz>
+.\"
+.TH OPEN 2 1999-06-03 "Linux" "System calls"
+.SH NAME
+open, creat \- open and possibly create a file or device
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.B #include <sys/stat.h>
+.B #include <fcntl.h>
+.sp
+.BI "int open(const char *" pathname ", int " flags );
+.BI "int open(const char *" pathname ", int " flags ", mode_t " mode );
+.BI "int creat(const char *" pathname ", mode_t " mode );
+.fi
+.SH DESCRIPTION
+The
+.B open()
+system call is used to convert a pathname into a file descriptor
+(a small, non-negative integer for use in subsequent I/O as with
+.BR read ", " write ", etc.)."
+When the call is successful, the file descriptor returned will be
+the lowest file descriptor not currently open for the process.
+This call creates a new open file, not shared with any other process.
+(But shared open files may arise via the
+.BR fork (2)
+system call.)
+The new file descriptor is set to remain open across exec functions
+(see
+.BR fcntl (2)).
+The file offset is set to the beginning of the file. 
+
+The parameter
+.I flags
+is one of
+.BR O_RDONLY ", " O_WRONLY " or " O_RDWR
+which request opening the file read-only, write-only or read/write,
+respectively,
+.RI bitwise- or 'd
+with zero or more of the following:
+.TP
+.B O_CREAT
+If the file does not exist it will be created.
+The owner (user ID) of the file is set to the effective user ID
+of the process. The group ownership (group ID) is set either to
+the effective group ID of the process or to the group ID of the
+parent directory (depending on filesystem type and mount options,
+and the mode of the parent directory, see, e.g., the mount options
+.I bsdgroups
+and
+.I sysvgroups
+of the ext2 filesystem, as described in
+.BR mount (8)).
+.TP
+.B O_EXCL
+When used with
+.BR O_CREAT ,
+if the file already exists it is an error and the
+.B open
+will fail. In this context, a symbolic link exists, regardless
+of where its points to.
+.B O_EXCL
+is broken on NFS file systems, programs which rely on it for performing
+locking tasks will contain a race condition.  The solution for performing
+atomic file locking using a lockfile is to create a unique file on the same
+fs (e.g., incorporating hostname and pid), use
+.BR link (2)
+to make a link to the lockfile. If \fBlink()\fP returns 0, the lock is
+successful.  Otherwise, use
+.BR stat (2)
+on the unique file to check if its link count has increased to 2,
+in which case the lock is also successful.
+.TP
+.B O_NOCTTY
+If
+.I pathname
+refers to a terminal device \(em see
+.BR tty (4)
+\(em it will not become the process's controlling terminal even if the
+process does not have one.
+.TP
+.B O_TRUNC
+If the file already exists and is a regular file and the open mode allows
+writing (i.e., is O_RDWR or O_WRONLY) it will be truncated to length 0.
+If the file is a FIFO or terminal device file, the O_TRUNC
+flag is ignored. Otherwise the effect of O_TRUNC is unspecified.
+.TP
+.B O_APPEND
+The file is opened in append mode. Before each
+.BR write ,
+the file pointer is positioned at the end of the file,
+as if with
+.BR lseek .
+.B O_APPEND
+may lead to corrupted files on NFS file systems if more than one process
+appends data to a file at once.  This is because NFS does not support
+appending to a file, so the client kernel has to simulate it, which
+can't be done without a race condition.
+.TP
+.BR O_NONBLOCK " or " O_NDELAY
+When possible, the file is opened in non-blocking mode. Neither the
+.B open
+nor any subsequent operations on the file descriptor which is
+returned will cause the calling process to wait.
+For the handling of FIFOs (named pipes), see also
+.BR fifo (4).
+This mode need not have any effect on files other than FIFOs.
+.TP
+.B O_SYNC
+The file is opened for synchronous I/O. Any
+.BR write s
+on the resulting file descriptor will block the calling process until
+the data has been physically written to the underlying hardware.
+.I See RESTRICTIONS below, though.
+.TP
+.B O_NOFOLLOW
+If \fIpathname\fR is a symbolic link, then the open fails.  This is a
+FreeBSD extension, which was added to Linux in version 2.1.126.
+Symbolic links in earlier components of the pathname will still be
+followed.  The headers from glibc 2.0.100 and later include a
+definition of this flag; \fIkernels before 2.1.126 will ignore it if
+used\fR.
+.TP
+.B O_DIRECTORY
+If \fIpathname\fR is not a directory, cause the open to fail.  This
+flag is Linux-specific, and was added in kernel version 2.1.126, to
+avoid denial-of-service problems if \fBopendir\fR(3) is called on a
+FIFO or tape device, but should not be used outside of the
+implementation of \fBopendir\fR.
+.TP
+.B O_DIRECT
+Try to minimize cache effects of the I/O to and from this file.
+In general this will degrade performance, but it is useful in
+special situations, such as when applications do their own caching.
+File I/O is done directly to/from user space buffers.
+The I/O is synchronous, i.e., at the completion of the
+.BR read (2)
+or
+.BR write (2)
+system call, data is guaranteed to have been transferred.
+Under Linux 2.4 transfer sizes, and the alignment of user buffer
+and file offset must all be multiples of the logical block size
+of the file system. Under Linux 2.6 alignment to 512-byte boundaries
+suffices.
+.\" There may be coherency problems.
+.br
+A semantically similar interface for block devices is described in
+.BR raw (8).
+.TP
+.B O_ASYNC
+Generate a signal (SIGIO by default, but this can be changed via
+.BR fcntl (2))
+when input or output becomes possible on this file descriptor.
+This feature is only available for terminals, pseudo-terminals, and
+sockets. See
+.BR fcntl (2)
+for further details.
+.TP
+.B O_LARGEFILE
+On 32-bit systems that support the Large Files System, allow files
+whose sizes cannot be represented in 31 bits to be opened.
+.PP
+Some of these optional flags can be altered using
+.B fcntl
+after the file has been opened.
+
+The argument
+.I mode
+specifies the permissions to use in case a new file is created. It is
+modified by the process's
+.BR umask
+in the usual way: the permissions of the created file are
+.BR "(mode & ~umask)" .
+Note that this mode only applies to future accesses of the
+newly created file; the
+.B open
+call that creates a read-only file may well return a read/write
+file descriptor.
+.PP
+The following symbolic constants are provided for
+.IR mode :
+.TP
+.B S_IRWXU
+00700 user (file owner) has read, write and execute permission
+.TP
+.B S_IRUSR (S_IREAD)
+00400 user has read permission
+.TP
+.B S_IWUSR (S_IWRITE)
+00200 user has write permission
+.TP
+.B S_IXUSR (S_IEXEC)
+00100 user has execute permission
+.TP
+.B S_IRWXG
+00070 group has read, write and execute permission
+.TP
+.B S_IRGRP
+00040 group has read permission
+.TP
+.B S_IWGRP
+00020 group has write permission
+.TP
+.B S_IXGRP
+00010 group has execute permission
+.TP
+.B S_IRWXO
+00007 others have read, write and execute permission
+.TP
+.B S_IROTH
+00004 others have read permission
+.TP
+.B S_IWOTH
+00002 others have write permisson
+.TP
+.B S_IXOTH
+00001 others have execute permission
+.PP
+.I mode
+must be specified when
+.B O_CREAT
+is in the
+.IR flags ,
+and is ignored otherwise.
+
+.B creat
+is equivalent to
+.B open
+with
+.I flags
+equal to
+.BR O_CREAT|O_WRONLY|O_TRUNC .
+.SH "RETURN VALUE"
+.BR open " and " creat
+return the new file descriptor, or \-1 if an error occurred (in which case,
+.I errno
+is set appropriately).
+Note that
+.B open
+can open device special files, but
+.B creat
+cannot create them - use
+.BR mknod (2)
+instead.
+.LP
+On NFS file systems with UID mapping enabled, \fBopen\fP may return a file
+descriptor but e.g. \fBread\fP(2) requests are denied with \fBEACCES\fP.
+This is because the client performs \fBopen\fP by checking the permissions,
+but UID mapping is performed by the server upon read and write requests.
+
+If the file is newly created, its atime, ctime, mtime fields are set
+to the current time, and so are the ctime and mtime fields of the
+parent directory.
+Otherwise, if the file is modified because of the O_TRUNC flag,
+its ctime and mtime fields are set to the current time.
+
+.SH ERRORS
+.TP
+.B EEXIST
+.I pathname
+already exists and
+.BR O_CREAT " and " O_EXCL
+were used.
+.TP
+.B EISDIR
+.I pathname
+refers to a directory and the access requested involved writing
+(that is,
+.B O_WRONLY
+or
+.B O_RDWR
+is set).
+.TP
+.B EACCES
+The requested access to the file is not allowed, or one of the
+directories in
+.IR pathname
+did not allow search (execute) permission, or the file did not exist
+yet and write access to the parent directory is not allowed.
+.TP
+.B ENAMETOOLONG
+.IR pathname " was too long."
+.TP
+.B ENOENT
+O_CREAT is not set and the named file does not exist.
+Or, a directory component in
+.I pathname
+does not exist or is a dangling symbolic link.
+.TP
+.B ENOTDIR
+A component used as a directory in
+.I pathname
+is not, in fact, a directory, or \fBO_DIRECTORY\fR was specified and
+.I pathname
+was not a directory.
+.TP
+.B ENXIO
+O_NONBLOCK | O_WRONLY is set, the named file is a FIFO and
+no process has the file open for reading.
+Or, the file is a device special file and no corresponding device exists.
+.TP
+.B ENODEV
+.I pathname
+refers to a device special file and no corresponding device exists.
+(This is a Linux kernel bug - in this situation ENXIO must be returned.)
+.TP
+.B EROFS
+.I pathname
+refers to a file on a read-only filesystem and write access was
+requested.
+.TP
+.B ETXTBSY
+.I pathname
+refers to an executable image which is currently being executed and
+write access was requested.
+.TP
+.B EFAULT
+.IR pathname " points outside your accessible address space."
+.TP
+.B ELOOP
+Too many symbolic links were encountered in resolving
+.IR pathname ,
+or \fBO_NOFOLLOW\fR was specified but
+.I pathname
+was a symbolic link.
+.TP
+.B ENOSPC
+.I pathname
+was to be created but the device containing
+.I pathname
+has no room for the new file.
+.TP
+.B ENOMEM
+Insufficient kernel memory was available.
+.TP
+.B EMFILE
+The process already has the maximum number of files open.
+.TP
+.B ENFILE
+The limit on the total number of files open on the system has been
+reached.
+.SH "CONFORMING TO"
+SVr4, SVID, POSIX, X/OPEN, BSD 4.3.
+The
+.B O_NOFOLLOW
+and
+.B O_DIRECTORY
+flags are Linux-specific.
+One may have to define the
+.B _GNU_SOURCE
+macro to get their definitions.
+.LP
+The (undefined) effect of
+.B O_RDONLY | O_TRUNC
+various among implementations. On many systems the file is actually
+truncated.
+.\" Linux 2.0, 2.5: truncate
+.\" Solaris 5.7, 5.8: truncate
+.\" Irix 6.5: truncate
+.\" Tru64 5.1B: truncate
+.\" HP-UX 11.22: truncate
+.\" FreeBSD 4.7: truncate
+.LP
+The
+.B O_DIRECT
+flag was introduced in SGI IRIX, where it has alignment restrictions
+similar to those of Linux 2.4.  IRIX has also a fcntl(2) call to
+query appropriate alignments, and sizes.   FreeBSD 4.x introduced
+a flag of same name, but without alignment restrictions.
+Support was added under Linux in kernel version 2.4.10.
+Older Linux kernels simply ignore this flag.
+.SH BUGS
+"The thing that has always disturbed me about O_DIRECT is that the whole
+interface is just stupid, and was probably designed by a deranged monkey
+on some serious mind-controlling substances." -- Linus
+.SH RESTRICTIONS
+There are many infelicities in the protocol underlying NFS, affecting
+amongst others
+.BR O_SYNC " and " O_NDELAY .
+
+POSIX provides for three different variants of synchronised I/O,
+corresponding to the flags \fBO_SYNC\fR, \fBO_DSYNC\fR and
+\fBO_RSYNC\fR.  Currently (2.1.130) these are all synonymous under Linux.
+.SH "SEE ALSO"
+.BR read (2),
+.BR write (2),
+.BR fcntl (2),
+.BR close (2),
+.BR link (2),
+.BR mknod (2),
+.BR mount (2),
+.BR stat (2),
+.BR umask (2),
+.BR unlink (2),
+.BR socket (2),
+.BR fopen (3),
+.BR fifo (4)
diff --git a/raw/man2/query_module.2 b/raw/man2/query_module.2
new file mode 100644
index 0000000..f8a78fa
--- /dev/null
+++ b/raw/man2/query_module.2
@@ -0,0 +1,101 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" This file is distributed according to the GNU General Public License.
+.\" See the file COPYING in the top level source directory for details.
+.\"
+.TH QUERY_MODULE 2 "26 Dec 1996" "Linux 2.1.17" "Linux Module Support"
+.SH NAME
+query_module \- query the kernel for various bits pertaining to modules.
+.SH SYNOPSIS
+.nf
+.B #include <linux/module.h>
+.sp
+\fBint query_module(const char *\fIname\fB, int \fIwhich\fB,
+void *\fIbuf\fB, size_t \fIbufsize\fB, size_t *\fIret\fB);
+.fi
+.SH DESCRIPTION
+.B query_module
+requests information related to loadable modules from the kernel.  The
+precise nature of the information and its format depends on the \fIwhich\fP
+sub function.  Some functions require \fIname\fP to name a currently
+loaded module, some allow \fIname\fP to be \fBNULL\fP indicating the
+kernel proper.
+
+.SS "VALUES OF WHICH"
+.TP
+.B 0
+Always returns success.  Used to probe for the system call.
+.TP
+.B QM_MODULES
+Returns the names of all loaded modules.  The output buffer format is
+adjacent null-terminated strings; \fIret\fP is set to the number of
+modules.
+.TP
+.B QM_DEPS
+Returns the names of all modules used by the indicated module.  The
+output buffer format is adjacent null-terminated strings; \fIret\fP is
+set to the number of modules.
+.TP
+.B QM_REFS
+Returns the names of all modules using the indicated module.  This is
+the inverse of \fBQM_DEPS\fP.  The output buffer format is adjacent
+null-terminated strings; \fIret\fP is set to the number of modules.
+.TP
+.B QM_SYMBOLS
+Returns the symbols and values exported by the kernel or the indicated
+module.  The buffer format is an array of:
+.RS
+.PP
+.nf
+struct module_symbol
+{
+  unsigned long value;
+  unsigned long name;
+};
+.fi
+.PP
+followed by null-terminated strings.  The value of \fIname\fP is the
+character offset of the string relative to the start of \fIbuf\fP;
+\fIret\fP is set to the number of symbols.
+.RE
+.TP
+.B QM_INFO
+Returns miscellaneous information about the indicated module.  The output
+buffer format is:
+.RS
+.PP
+.nf
+struct module_info
+{
+  unsigned long address;
+  unsigned long size;
+  unsigned long flags;
+};
+.fi
+.PP
+where \fIaddress\fP is the kernel address at which the module resides,
+\fIsize\fP is the size of the module in bytes, and \fIflags\fP is
+a mask of \fBMOD_RUNNING\fP, \fBMOD_AUTOCLEAN\fP, et al that indicates
+the current status of the module.  \fIret\fP is set to the size of
+the \fBmodule_info\fP struct.
+.RE
+.SH "RETURN VALUE"
+On success, zero is returned.  On error, \-1 is returned and \fIerrno\fP
+is set appropriately.
+.SH ERRORS
+.TP
+.B ENOENT
+No module by that \fIname\fP exists.
+.TP
+.B EINVAL
+Invalid \fIwhich\fP, or \fIname\fP indicates the kernel for an
+inappropriate sub function.
+.TP
+.B ENOSPC
+The buffer size provided was too small.  \fIret\fP is set to the
+minimum size needed.
+.TP
+.B EFAULT
+At least one of \fIname\fP, \fIbuf\fP, or \fIret\fP was
+outside the program's accessible address space.
+.SH "SEE ALSO
+.BR create_module "(2), " init_module "(2), " delete_module "(2).
diff --git a/raw/man2/read.2 b/raw/man2/read.2
new file mode 100644
index 0000000..2c616b0
--- /dev/null
+++ b/raw/man2/read.2
@@ -0,0 +1,140 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sat Jul 24 00:06:00 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt
+.\"   <michael at cantor.informatik.rwth-aachen.de>
+.\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer <aeb at cwi.nl>
+.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb at cwi.nl>
+.\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
+.\"   <michael at cantor.informatik.rwth-aachen.de>
+.\"
+.TH READ 2 1997-07-12 "Linux 2.0.32" "Linux Programmer's Manual"
+.SH NAME
+read \- read from a file descriptor
+.SH SYNOPSIS
+.nf
+.B #include <unistd.h>
+.sp
+.BI "ssize_t read(int " fd ", void *" buf ", size_t " count );
+.fi
+.SH DESCRIPTION
+.B read()
+attempts to read up to
+.I count
+bytes from file descriptor
+.I fd
+into the buffer starting at
+.IR buf .
+.PP
+If
+.I count
+is zero, \fBread()\fP returns zero and has no other results.
+If
+.I count
+is greater than SSIZE_MAX, the result is unspecified.
+.PP
+.SH "RETURN VALUE"
+On success, the number of bytes read is returned (zero indicates end of
+file), and the file position is advanced by this number.
+It is not an error if this number is smaller than the number of bytes
+requested; this may happen for example because fewer bytes are actually
+available right now (maybe because we were close to end-of-file, or
+because we are reading from a pipe, or from a terminal), or because
+\fBread()\fP was interrupted by a signal.
+On error, \-1 is returned, and
+.I errno
+is set appropriately. In this case it is left unspecified whether
+the file position (if any) changes.
+.SH ERRORS
+.TP
+.B EINTR
+The call was interrupted by a signal before any data was read.
+.TP
+.B EAGAIN
+Non-blocking I/O has been selected using
+.B O_NONBLOCK
+and no data was immediately available for reading.
+.TP
+.B EIO
+I/O error. This will happen for example when the process is in a
+background process group, tries to read from its controlling tty,
+and either it is ignoring or blocking SIGTTIN or its process group
+is orphaned.  It may also occur when there is a low-level I/O error
+while reading from a disk or tape.
+.TP
+.B EISDIR
+.I fd
+refers to a directory.
+.TP
+.B EBADF
+.I fd
+is not a valid file descriptor or is not open for reading.
+.TP
+.B EINVAL
+.I fd
+is attached to an object which is unsuitable for reading.
+.TP
+.B EFAULT
+.I buf
+is outside your accessible address space.
+.PP
+Other errors may occur, depending on the object connected to
+.IR fd .
+POSIX allows a
+.B read
+that is interrupted after reading some data
+to return \-1 (with
+.I errno
+set to EINTR) or to return the number of bytes already read.
+.SH "CONFORMING TO"
+SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3
+.SH RESTRICTIONS
+On NFS file systems, reading small amounts of data will only update the
+time stamp the first time, subsequent calls may not do so.  This is caused
+by client side attribute caching, because most if not all NFS clients
+leave atime updates to the server and client side reads satisfied from the
+client's cache will not cause atime updates on the server as there are no
+server side reads.  UNIX semantics can be obtained by disabling client
+side attribute caching, but in most situations this will substantially
+increase server load and decrease performance.
+.PP
+Many filesystems and disks were considered to be fast enough that the 
+implementation of 
+.B O_NONBLOCK
+was deemed unneccesary. So, O_NONBLOCK may not be available on files
+and/or disks.
+.SH "SEE ALSO"
+.BR close (2),
+.BR fcntl (2),
+.BR ioctl (2),
+.BR lseek (2),
+.BR readdir (2),
+.BR readlink (2),
+.BR select (2),
+.BR write (2),
+.BR fread (3),
+.BR readv (3)
diff --git a/raw/man2/send.2 b/raw/man2/send.2
new file mode 100644
index 0000000..2313041
--- /dev/null
+++ b/raw/man2/send.2
@@ -0,0 +1,252 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Sat Jul 24 01:15:33 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Tue Oct 22 17:55:49 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified Oct 1998 by Andi Kleen
+.\"
+.TH SEND 2 2002-12-31 "Linux Man Page" "Linux Programmer's Manual"
+.SH NAME
+send, sendto, sendmsg \- send a message from a socket
+.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
+.B #include <sys/socket.h>
+.sp
+.BI "ssize_t send(int " s ", const void *" msg ", size_t " len ,
+.BI "int " flags );
+.br
+.BI "ssize_t sendto(int " s ", const void *" msg ", size_t " len ,
+.BI "int " flags ", const struct sockaddr *" to ", socklen_t " tolen );
+.br
+.BI "ssize_t sendmsg(int " s ", const struct msghdr *" msg ,
+.BI "int " flags );
+.SH DESCRIPTION
+.BR Send ,
+.BR sendto ,
+and
+.B sendmsg
+are used to transmit a message to another socket.
+.B Send
+may be used only when the socket is in a 
+.I connected
+state, while 
+.B sendto
+and
+.B sendmsg
+may be used at any time.
+.PP
+The address of the target is given by
+.I to
+with 
+.I tolen
+specifying its size.  The length of the message is given by
+.IR len .
+If the message is too long to pass atomically through the
+underlying protocol, the error
+.B EMSGSIZE
+is returned, and the message is not transmitted.
+.PP
+No indication of failure to deliver is implicit in a
+.BR send .
+Locally detected errors are indicated by a return value of \-1.
+.PP
+When the message does not fit into the send buffer of the socket,
+.B send
+normally blocks, unless the socket has been placed in non-blocking I/O
+mode.  In non-blocking mode it would return
+.B EAGAIN
+in this case.
+The
+.BR select (2)
+call may be used to determine when it is possible to send more data.
+.PP
+The
+.I flags
+parameter is a flagword and can contain the following flags:
+.\" XXX document MSG_PROXY
+.TP
+.B MSG_OOB
+Sends
+.I out-of-band
+data on sockets that support this notion (e.g.
+.BR SOCK_STREAM );
+the underlying protocol must also support
+.I out-of-band
+data.
+.TP
+.B MSG_DONTROUTE
+Dont't use a gateway to send out the packet, only send to hosts on 
+directly connected networks. This is usually used only 
+by diagnostic or routing programs. This is only defined for protocol
+families that route; packet sockets don't.
+.TP
+.B MSG_DONTWAIT
+Enables non-blocking operation; if the operation would block,
+.B EAGAIN
+is returned (this can also be enabled using the
+.B O_NONBLOCK
+with the
+.B F_SETFL
+.BR fcntl (2)).
+.TP
+.B MSG_NOSIGNAL
+Requests not to send 
+.B SIGPIPE 
+on errors on stream oriented sockets when the other end breaks the
+connection. The 
+.B EPIPE
+error is still returned.
+.TP
+.BR MSG_CONFIRM " (Linux 2.3+ only)"
+Tell the link layer that forward process happened: you got a successful
+reply from the other side. If the link layer doesn't get this 
+it'll regularly reprobe the neighbour (e.g. via a unicast ARP).
+Only valid on 
+.B SOCK_DGRAM
+and
+.B SOCK_RAW
+sockets and currently only implemented for IPv4 and IPv6. See
+.BR arp (7)
+for details.
+.PP
+The definition of the
+.I msghdr
+structure follows. See 
+.BR recv (2)
+and below for an exact description of its fields.
+.IP
+.RS
+.nf
+.ta 4n 17n 33n
+struct msghdr {
+	void	* msg_name;	/* optional address */
+	socklen_t	msg_namelen;	/* size of address */
+	struct iovec	* msg_iov;	/* scatter/gather array */
+	size_t	msg_iovlen;	/* # elements in msg_iov */
+	void	* msg_control;	/* ancillary data, see below */
+	socklen_t	msg_controllen;	/* ancillary data buffer len */
+	int	msg_flags;	/* flags on received message */
+};
+.ta
+.fi
+.RE
+.PP
+You may send control information using the 
+.I msg_control 
+and 
+.I msg_controllen 
+members. The maximum control buffer length the kernel can process is limited
+per socket by the
+.B net.core.optmem_max 
+sysctl; see
+.BR socket (7).
+.SH "RETURN VALUE"
+The calls return the number of characters sent, or \-1
+if an error occurred.
+.SH ERRORS
+These are some standard errors generated by the socket layer. Additional errors
+may be generated and returned from the underlying protocol modules; see their
+respective manual pages.
+.TP
+.B EBADF
+An invalid descriptor was specified.
+.TP
+.B ENOTSOCK
+The argument
+.I s
+is not a socket.
+.TP
+.B EFAULT
+An invalid user space address was specified for a parameter.
+.TP
+.B EMSGSIZE
+The socket requires that message be sent atomically, and the size
+of the message to be sent made this impossible.
+.TP
+.BR EAGAIN " or " EWOULDBLOCK
+The socket is marked non-blocking and the requested operation
+would block.
+.TP
+.B ENOBUFS
+The output queue for a network interface was full.
+This generally indicates that the interface has stopped sending,
+but may be caused by transient congestion.
+(Normally, this does not occur in Linux. Packets are just silently dropped
+when a device queue overflows.)
+.TP
+.B EINTR
+A signal occurred.
+.TP
+.B ENOMEM
+No memory available.
+.TP
+.B EINVAL
+Invalid argument passed. 
+.TP
+.B EPIPE
+The local end has been shut down on a connection oriented socket.
+In this case the process
+will also receive a 
+.B SIGPIPE 
+unless 
+.B MSG_NOSIGNAL 
+is set.
+.SH "CONFORMING TO"
+4.4BSD, SVr4, POSIX 1003.1g draft (these function calls appeared in 4.2BSD).
+
+.B MSG_CONFIRM 
+is a Linux extension.
+.SH NOTE
+The prototypes given above follow the Single Unix Specification,
+as glibc2 also does; the
+.I flags
+argument was `int' in BSD 4.*, but `unsigned int' in libc4 and libc5;
+the
+.I len
+argument was `int' in BSD 4.* and libc4, but `size_t' in libc5;
+the
+.I tolen
+argument was `int' in BSD 4.* and libc4 and libc5.
+See also
+.BR accept (2).
+.SH "SEE ALSO"
+.BR fcntl (2),
+.BR recv (2),
+.BR select (2),
+.BR getsockopt (2),
+.BR sendfile (2),
+.BR socket (2),
+.BR write (2),
+.BR socket (7),
+.BR ip (7),
+.BR tcp (7),
+.BR udp (7)
diff --git a/raw/man2/write.2 b/raw/man2/write.2
new file mode 100644
index 0000000..0dd0b7f
--- /dev/null
+++ b/raw/man2/write.2
@@ -0,0 +1,127 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sat Jul 24 13:35:59 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sun Nov 28 17:19:01 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sat Jan 13 12:58:08 1996 by Michael Haardt
+.\"   <michael at cantor.informatik.rwth-aachen.de>
+.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb at cwi.nl>
+.\" 2001-12-13 added remark by Zack Weinberg
+.\"
+.TH WRITE 2 2001-12-13 "Linux 2.0.32" "Linux Programmer's Manual"
+.SH NAME
+write \- write to a file descriptor
+.SH SYNOPSIS
+.B #include <unistd.h>
+.sp
+.BI "ssize_t write(int " fd ", const void *" buf ", size_t " count );
+.SH DESCRIPTION
+.B write
+writes up to
+.I count
+bytes to the file referenced by the file descriptor
+.I fd
+from the buffer starting at
+.IR buf .
+POSIX requires that a \fBread()\fP which can be proved to occur after a
+\fBwrite()\fP has returned returns the new data.  Note that not all file
+systems are POSIX conforming.
+.SH "RETURN VALUE"
+On success, the number of bytes written are returned (zero indicates
+nothing was written).  On error, \-1 is returned, and \fIerrno\fP is set
+appropriately.  If \fIcount\fP is zero and the file descriptor refers to
+a regular file, 0 will be returned without causing any other effect.
+For a special file, the results are not portable.
+.SH ERRORS
+.TP
+.B EBADF
+.I fd
+is not a valid file descriptor or is not open for writing.
+.TP
+.B EINVAL
+.I fd
+is attached to an object which is unsuitable for writing.
+.TP
+.B EFAULT
+.I buf
+is outside your accessible address space.
+.TP
+.B EFBIG
+An attempt was made to write a file that exceeds the implementation-defined
+maximum file size or the process' file size limit, or to write at a position
+past than the maximum allowed offset.
+.TP
+.B EPIPE
+.I fd
+is connected to a pipe or socket whose reading end is closed.  When this
+happens the writing process will also receive a
+.B SIGPIPE
+signal.
+(Thus, the write return value is seen only if the program
+catches, blocks or ignores this signal.)
+.TP
+.B EAGAIN
+Non-blocking I/O has been selected using
+.B O_NONBLOCK
+and the write would block.
+.TP
+.B EINTR
+The call was interrupted by a signal before any data was written.
+.TP
+.B ENOSPC
+The device containing the file referred to by
+.I fd
+has no room for the data.
+.TP
+.B EIO
+A low-level I/O error occurred while modifying the inode.
+.PP
+Other errors may occur, depending on the object connected to
+.IR fd .
+.SH "CONFORMING TO"
+SVr4, SVID, POSIX, X/OPEN, 4.3BSD.  SVr4 documents additional error
+conditions EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, or ERANGE.
+Under SVr4 a write may be interrupted and return EINTR at any point,
+not just before any data is written. 
+.SH NOTES
+A successful return from
+.B write
+does not make any guarantee that data has been committed to disk.
+In fact, on some buggy implementations, it does not even guarantee
+that space has successfully been reserved for the data.
+The only way to be sure is to call
+.BR fsync (2)
+after you are done writing all your data.
+.SH "SEE ALSO"
+.BR close (2),
+.BR fcntl (2),
+.BR fsync (2),
+.BR ioctl (2),
+.BR lseek (2),
+.BR open (2),
+.BR read (2),
+.BR select (2),
+.BR fwrite (3),
+.BR writev (3)
diff --git a/raw/man3/Object.3 b/raw/man3/Object.3
new file mode 100644
index 0000000..449f2cc
--- /dev/null
+++ b/raw/man3/Object.3
@@ -0,0 +1,568 @@
+'\"
+'\" Copyright (c) 1996-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH Tcl_Obj 3 8.0 Tcl "Tcl Library Procedures"
+.BS
+.SH NAME
+Tcl_NewObj, Tcl_DuplicateObj, Tcl_IncrRefCount, Tcl_DecrRefCount, Tcl_IsShared, Tcl_InvalidateStringRep \- manipulate Tcl objects
+.SH SYNOPSIS
+.nf
+\fB#include <tcl.h>\fR
+.sp
+Tcl_Obj *
+\fBTcl_NewObj\fR()
+.sp
+Tcl_Obj *
+\fBTcl_DuplicateObj\fR(\fIobjPtr\fR)
+.sp
+\fBTcl_IncrRefCount\fR(\fIobjPtr\fR)
+.sp
+\fBTcl_DecrRefCount\fR(\fIobjPtr\fR)
+.sp
+int
+\fBTcl_IsShared\fR(\fIobjPtr\fR)
+.sp
+\fBTcl_InvalidateStringRep\fR(\fIobjPtr\fR)
+.SH ARGUMENTS
+.AS Tcl_Obj *objPtr in
+.AP Tcl_Obj *objPtr in
+Points to an object;
+must have been the result of a previous call to \fBTcl_NewObj\fR.
+.BE
+
+.SH INTRODUCTION
+.PP
+This man page presents an overview of Tcl objects and how they are used.
+It also describes generic procedures for managing Tcl objects.
+These procedures are used to create and copy objects,
+and increment and decrement the count of references (pointers) to objects.
+The procedures are used in conjunction with ones
+that operate on specific types of objects such as
+\fBTcl_GetIntFromObj\fR and \fBTcl_ListObjAppendElement\fR.
+The individual procedures are described along with the data structures
+they manipulate.
+.PP
+Tcl's \fIdual-ported\fR objects provide a general-purpose mechanism
+for storing and exchanging Tcl values.
+They largely replace the use of strings in Tcl.
+For example, they are used to store variable values,
+command arguments, command results, and scripts.
+Tcl objects behave like strings but also hold an internal representation
+that can be manipulated more efficiently.
+For example, a Tcl list is now represented as an object
+that holds the list's string representation
+as well as an array of pointers to the objects for each list element.
+Dual-ported objects avoid most runtime type conversions.
+They also improve the speed of many operations
+since an appropriate representation is immediately available.
+The compiler itself uses Tcl objects to
+cache the instruction bytecodes resulting from compiling scripts.
+.PP
+The two representations are a cache of each other and are computed lazily.
+That is, each representation is only computed when necessary,
+it is computed from the other representation,
+and, once computed, it is saved.
+In addition, a change in one representation invalidates the other one.
+As an example, a Tcl program doing integer calculations can
+operate directly on a variable's internal machine integer
+representation without having to constantly convert
+between integers and strings.
+Only when it needs a string representing the variable's value,
+say to print it,
+will the program regenerate the string representation from the integer.
+Although objects contain an internal representation,
+their semantics are defined in terms of strings:
+an up-to-date string can always be obtained,
+and any change to the object will be reflected in that string
+when the object's string representation is fetched.
+Because of this representation invalidation and regeneration,
+it is dangerous for extension writers to access
+\fBTcl_Obj\fR fields directly.
+It is better to access Tcl_Obj information using
+procedures like \fBTcl_GetStringFromObj\fR and \fBTcl_GetString\fR.
+.PP
+Objects are allocated on the heap
+and are referenced using a pointer to their \fBTcl_Obj\fR structure.
+Objects are shared as much as possible.
+This significantly reduces storage requirements
+because some objects such as long lists are very large.
+Also, most Tcl values are only read and never modified.
+This is especially true for procedure arguments,
+which can be shared between the caller and the called procedure.
+Assignment and argument binding is done by
+simply assigning a pointer to the value. 
+Reference counting is used to determine when it is safe to
+reclaim an object's storage.
+.PP
+Tcl objects are typed.
+An object's internal representation is controlled by its type.
+Seven types are predefined in the Tcl core
+including integer, double, list, and bytecode.
+Extension writers can extend the set of types
+by using the procedure \fBTcl_RegisterObjType\fR .
+
+.SH "THE TCL_OBJ STRUCTURE"
+.PP
+Each Tcl object is represented by a \fBTcl_Obj\fR structure
+which is defined as follows.
+.CS
+typedef struct Tcl_Obj {
+	int \fIrefCount\fR;
+	char *\fIbytes\fR;
+	int \fIlength\fR;
+	Tcl_ObjType *\fItypePtr\fR;
+	union {
+		long \fIlongValue\fR;
+		double \fIdoubleValue\fR;
+		VOID *\fIotherValuePtr\fR;
+		struct {
+			VOID *\fIptr1\fR;
+			VOID *\fIptr2\fR;
+		} \fItwoPtrValue\fR;
+	} \fIinternalRep\fR;
+} Tcl_Obj;
+.CE
+The \fIbytes\fR and the \fIlength\fR members together hold
+an object's string representation,
+which is a \fIcounted\fR or \fIbinary string\fR
+that may contain binary data with embedded null bytes.
+\fIbytes\fR points to the first byte of the string representation.
+The \fIlength\fR member gives the number of bytes.
+The byte array must always have a null after the last byte,
+at offset \fIlength\fR;
+this allows string representations that do not contain nulls
+to be treated as conventional null-terminated C strings.
+C programs use \fBTcl_GetStringFromObj\fR and \fBTcl_GetString\fR to get
+an object's string representation.
+If \fIbytes\fR is NULL,
+the string representation is invalid.
+.PP
+An object's type manages its internal representation.
+The member \fItypePtr\fR points to the Tcl_ObjType structure
+that describes the type.
+If \fItypePtr\fR is NULL,
+the internal representation is invalid.
+.PP
+The \fIinternalRep\fR union member holds
+an object's internal representation.
+This is either a (long) integer, a double-precision floating point number,
+a pointer to a value containing additional information
+needed by the object's type to represent the object,
+or two arbitrary pointers.
+.PP
+The \fIrefCount\fR member is used to tell when it is safe to free
+an object's storage.
+It holds the count of active references to the object.
+Maintaining the correct reference count is a key responsibility
+of extension writers.
+Reference counting is discussed below
+in the section \fBSTORAGE MANAGEMENT OF OBJECTS\fR.
+.PP
+Although extension writers can directly access
+the members of a Tcl_Obj structure,
+it is much better to use the appropriate procedures and macros.
+For example, extension writers should never
+read or update \fIrefCount\fR directly;
+they should use macros such as
+\fBTcl_IncrRefCount\fR and \fBTcl_IsShared\fR instead.
+.PP
+A key property of Tcl objects is that they hold two representations.
+An object typically starts out containing only a string representation:
+it is untyped and has a NULL \fItypePtr\fR.
+An object containing an empty string or a copy of a specified string
+is created using \fBTcl_NewObj\fR or \fBTcl_NewStringObj\fR respectively.
+An object's string value is gotten with
+\fBTcl_GetStringFromObj\fR or \fBTcl_GetString\fR
+and changed with \fBTcl_SetStringObj\fR.
+If the object is later passed to a procedure like \fBTcl_GetIntFromObj\fR
+that requires a specific internal representation,
+the procedure will create one and set the object's \fItypePtr\fR.
+The internal representation is computed from the string representation.
+An object's two representations are duals of each other:
+changes made to one are reflected in the other.
+For example, \fBTcl_ListObjReplace\fR will modify an object's
+internal representation and the next call to \fBTcl_GetStringFromObj\fR
+or \fBTcl_GetString\fR will reflect that change.
+.PP
+Representations are recomputed lazily for efficiency.
+A change to one representation made by a procedure
+such as \fBTcl_ListObjReplace\fR is not reflected immediately
+in the other representation.
+Instead, the other representation is marked invalid
+so that it is only regenerated if it is needed later.
+Most C programmers never have to be concerned with how this is done
+and simply use procedures such as \fBTcl_GetBooleanFromObj\fR or
+\fBTcl_ListObjIndex\fR.
+Programmers that implement their own object types
+must check for invalid representations
+and mark representations invalid when necessary.
+The procedure \fBTcl_InvalidateStringRep\fR is used
+to mark an object's string representation invalid and to
+free any storage associated with the old string representation.
+.PP
+Objects usually remain one type over their life,
+but occasionally an object must be converted from one type to another.
+For example, a C program might build up a string in an object
+with repeated calls to \fBTcl_AppendToObj\fR,
+and then call \fBTcl_ListObjIndex\fR to extract a list element from
+the object.
+The same object holding the same string value
+can have several different internal representations
+at different times.
+Extension writers can also force an object to be converted from one type
+to another using the \fBTcl_ConvertToType\fR procedure.
+Only programmers that create new object types need to be concerned
+about how this is done.
+A procedure defined as part of the object type's implementation
+creates a new internal representation for an object
+and changes its \fItypePtr\fR.
+See the man page for \fBTcl_RegisterObjType\fR
+to see how to create a new object type.
+
+.SH "EXAMPLE OF THE LIFETIME OF AN OBJECT"
+.PP
+As an example of the lifetime of an object,
+consider the following sequence of commands:
+.CS
+\fBset x 123\fR
+.CE
+This assigns to \fIx\fR an untyped object whose
+\fIbytes\fR member points to \fB123\fR and \fIlength\fR member contains 3.
+The object's \fItypePtr\fR member is NULL.
+.CS
+\fBputs "x is $x"\fR
+.CE
+\fIx\fR's string representation is valid (since \fIbytes\fR is non-NULL)
+and is fetched for the command.
+.CS
+\fBincr x\fR
+.CE
+The \fBincr\fR command first gets an integer from \fIx\fR's object
+by calling \fBTcl_GetIntFromObj\fR.
+This procedure checks whether the object is already an integer object.
+Since it is not, it converts the object
+by setting the object's \fIinternalRep.longValue\fR member
+to the integer \fB123\fR
+and setting the object's \fItypePtr\fR
+to point to the integer Tcl_ObjType structure.
+Both representations are now valid.
+\fBincr\fR increments the object's integer internal representation
+then invalidates its string representation
+(by calling \fBTcl_InvalidateStringRep\fR)
+since the string representation
+no longer corresponds to the internal representation.
+.CS
+\fBputs "x is now $x"\fR
+.CE
+The string representation of \fIx\fR's object is needed
+and is recomputed.
+The string representation is now \fB124\fR.
+and both representations are again valid.
+
+.SH "STORAGE MANAGEMENT OF OBJECTS"
+.PP
+Tcl objects are allocated on the heap and are shared as much as possible
+to reduce storage requirements.
+Reference counting is used to determine when an object is
+no longer needed and can safely be freed.
+An object just created by \fBTcl_NewObj\fR or \fBTcl_NewStringObj\fR
+has \fIrefCount\fR 0.
+The macro \fBTcl_IncrRefCount\fR increments the reference count
+when a new reference to the object is created.
+The macro \fBTcl_DecrRefCount\fR decrements the count
+when a reference is no longer needed and,
+if the object's reference count drops to zero, frees its storage.
+An object shared by different code or data structures has
+\fIrefCount\fR greater than 1.
+Incrementing an object's reference count ensures that
+it won't be freed too early or have its value change accidently.
+.PP
+As an example, the bytecode interpreter shares argument objects
+between calling and called Tcl procedures to avoid having to copy objects.
+It assigns the call's argument objects to the procedure's
+formal parameter variables.
+In doing so, it calls \fBTcl_IncrRefCount\fR to increment
+the reference count of each argument since there is now a new
+reference to it from the formal parameter.
+When the called procedure returns,
+the interpreter calls \fBTcl_DecrRefCount\fR to decrement
+each argument's reference count.
+When an object's reference count drops less than or equal to zero,
+\fBTcl_DecrRefCount\fR reclaims its storage.
+Most command procedures do not have to be concerned about
+reference counting since they use an object's value immediately
+and don't retain a pointer to the object after they return.
+However, if they do retain a pointer to an object in a data structure,
+they must be careful to increment its reference count
+since the retained pointer is a new reference.
+.PP
+Command procedures that directly modify objects
+such as those for \fBlappend\fR and \fBlinsert\fR must be careful to
+copy a shared object before changing it.
+They must first check whether the object is shared
+by calling \fBTcl_IsShared\fR.
+If the object is shared they must copy the object
+by using \fBTcl_DuplicateObj\fR;
+this returns a new duplicate of the original object
+that has \fIrefCount\fR 0.
+If the object is not shared,
+the command procedure "owns" the object and can safely modify it directly.
+For example, the following code appears in the command procedure
+that implements \fBlinsert\fR.
+This procedure modifies the list object passed to it in \fIobjv[1]\fR
+by inserting \fIobjc-3\fR new elements before \fIindex\fR.
+.CS
+listPtr = objv[1];
+if (Tcl_IsShared(listPtr)) {
+	listPtr = Tcl_DuplicateObj(listPtr);
+}
+result = Tcl_ListObjReplace(interp, listPtr, index, 0, (objc-3), &(objv[3]));
+.CE
+As another example, \fBincr\fR's command procedure
+must check whether the variable's object is shared before
+incrementing the integer in its internal representation.
+If it is shared, it needs to duplicate the object
+in order to avoid accidently changing values in other data structures.
+
+.SH "SEE ALSO"
+Tcl_ConvertToType, Tcl_GetIntFromObj, Tcl_ListObjAppendElement, Tcl_ListObjIndex, Tcl_ListObjReplace, Tcl_RegisterObjType
+
+.SH KEYWORDS
+internal representation, object, object creation, object type, reference counting, string representation, type conversion
diff --git a/raw/man3/basename.3 b/raw/man3/basename.3
new file mode 100644
index 0000000..3d44094
--- /dev/null
+++ b/raw/man3/basename.3
@@ -0,0 +1,135 @@
+.\" (c) 2000 by Michael Kerrisk (michael.kerrisk at gmx.net)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. 
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Created, 14 Dec 2000 by Michael Kerrisk
+.\"
+.TH DIRNAME 3  2000-12-14 "GNU" "Linux Programmer's Manual"
+.SH NAME
+dirname, basename \- Parse pathname components
+.SH SYNOPSIS
+.nf
+.B #include <libgen.h>
+.sp
+.BI "char *dirname(char *" path );
+.nl
+.BI "char *basename(char *" path );
+.fi
+.SH DESCRIPTION
+The functions
+.B dirname
+and
+.B basename
+break a null-terminated pathname string into directory 
+and filename components.  
+In the usual case, 
+.B dirname
+returns the string up to, but not including, the final '/', and
+.B basename
+returns the component following the final '/'.
+Trailing '/' characters are not counted as part of the pathname.
+.PP
+If 
+.I path
+does not contain a slash,
+.B dirname
+returns the string "." while
+.B basename
+returns a copy of
+.IR path .
+If 
+.I path
+is the string "/", then both
+.B dirname
+and 
+.B basename
+return the string "/".
+If 
+.I path
+is a NULL pointer or points to an empty string, then both
+.B dirname
+and
+.B basename
+return the string ".".
+.PP
+Concatenating the string returned by
+.BR dirname ,
+a "/", and the string returned by 
+.B basename
+yields a complete pathname.
+.PP
+Both 
+.B dirname
+and
+.B basename
+may modify the contents of 
+.IR path , 
+so if you need to preserve the pathname string,
+copies should be passed to these functions.  Furthermore, 
+.B dirname
+and
+.B basename
+may return pointers to statically allocated memory
+which may be overwritten by subsequent calls.
+.PP
+The following list of examples (taken from SUSv2)
+shows the strings returned by 
+.B dirname
+and
+.B basename
+for different paths:
+.sp
+.nf
+.B 
+path  		dirname		basename
+"/usr/lib"	"/usr"		"lib"
+"/usr/"		"/"  		"usr"
+"usr"		"."  		"usr"
+"/"  		"/"  		"/"
+"."  		"."  		"."
+".."  		"."  		".."
+.fi
+.SH EXAMPLE
+.nf
+char *dirc, *basec, *bname, *dname;
+char *path = "/etc/passwd";
+
+dirc = strdup(path);
+basec = strdup(path);
+dname = dirname(dirc);
+bname = basename(basec);
+printf("dirname=%s, basename=%s\\n", dname, bname);
+free(dirc);
+free(basec);
+.fi
+.SH "RETURN VALUE"
+Both 
+.B dirname
+and
+.B basename
+return pointers to null-terminated strings.
+.SH BUGS
+In versions of glibc up to and including 2.2.1, 
+.B dirname
+does not correctly handle pathnames with trailing '/' characters,
+and generates a segmentation violation if given a NULL argument.
+.SH "CONFORMING TO"
+SUSv2
+.SH "SEE ALSO"
+.BR dirname (1),
+.BR basename (1),
diff --git a/raw/man3/bindtextdomain.3 b/raw/man3/bindtextdomain.3
new file mode 100644
index 0000000..3de1252
--- /dev/null
+++ b/raw/man3/bindtextdomain.3
@@ -0,0 +1,69 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   GNU glibc-2 source code and manual
+.\"   GNU gettext source code and manual
+.\"   LI18NUX 2000 Globalization Specification
+.\"
+.TH BINDTEXTDOMAIN 3 "May 2001" "GNU gettext 0.12.1"
+.SH NAME
+bindtextdomain \- set directory containing message catalogs
+.SH SYNOPSIS
+.nf
+.B #include <libintl.h>
+.sp
+.BI "char * bindtextdomain (const char * " domainname ", const char * " dirname );
+.fi
+.SH DESCRIPTION
+The \fBbindtextdomain\fP function sets the base directory of the hierarchy
+containing message catalogs for a given message domain.
+.PP
+A message domain is a set of translatable \fImsgid\fP messages. Usually,
+every software package has its own message domain. The need for calling
+\fBbindtextdomain\fP arises because packages are not always installed with
+the same prefix as the <libintl.h> header and the libc/libintl libraries.
+.PP
+Message catalogs will be expected at the pathnames
+\fIdirname\fP/\fIlocale\fP/\fIcategory\fP/\fIdomainname\fP.mo,
+where \fIlocale\fP is a locale name and \fIcategory\fP is a locale facet such
+as \fBLC_MESSAGES\fP.
+.PP
+\fIdomainname\fP must be a non-empty string.
+.PP
+If \fIdirname\fP is not NULL, the base directory for message catalogs belonging
+to domain \fIdomainname\fP is set to \fIdirname\fP. The function makes copies
+of the argument strings as needed. If the program wishes to call the
+\fBchdir\fP function, it is important that \fIdirname\fP be an absolute
+pathname; otherwise it cannot be guaranteed that the message catalogs will
+be found.
+.PP
+If \fIdirname\fP is NULL, the function returns the previously set base
+directory for domain \fIdomainname\fP.
+.SH "RETURN VALUE"
+If successful, the \fBbindtextdomain\fP function returns the current base
+directory for domain \fIdomainname\fP, after possibly changing it. The
+resulting string is valid until the next \fBbindtextdomain\fP call for the
+same \fIdomainname\fP and must not be modified or freed. If a memory allocation
+failure occurs, it sets \fBerrno\fP to \fBENOMEM\fP and returns NULL.
+.SH ERRORS
+The following error can occur, among others:
+.TP
+.B ENOMEM
+Not enough memory available.
+.SH BUGS
+The return type ought to be \fBconst char *\fP, but is \fBchar *\fP to avoid
+warnings in C code predating ANSI C.
+.SH "SEE ALSO"
+.BR gettext (3),
+.BR dgettext (3),
+.BR dcgettext (3),
+.BR ngettext (3),
+.BR dngettext (3),
+.BR dcngettext (3),
+.BR textdomain (3),
+.BR realpath (3)
diff --git a/raw/man3/bzero.3 b/raw/man3/bzero.3
new file mode 100644
index 0000000..8839cc6
--- /dev/null
+++ b/raw/man3/bzero.3
@@ -0,0 +1,54 @@
+.\" Copyright 1993 David Metcalfe (david at prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sat Jul 24 21:28:17 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Tue Oct 22 23:49:37 1996 by Eric S. Raymond <esr at thyrsus.com>
+.TH BZERO 3  2002-12-31 "Linux" "Linux Programmer's Manual"
+.SH NAME
+bzero \- write zero bytes
+.SH SYNOPSIS
+.nf
+.B #include <strings.h>
+.sp
+.BI "void bzero(void *" s ", size_t " n );
+.fi
+.SH DESCRIPTION
+The
+.B bzero()
+function sets the first
+.I n
+bytes of the byte area starting at
+.I s
+to zero.
+.SH "RETURN VALUE"
+None.
+.SH "CONFORMING TO"
+4.3BSD.  This function is deprecated -- use
+.BR memset
+in new programs.  
+.SH "SEE ALSO"
+.BR memset (3),
+.BR swab (3)
diff --git a/raw/man3/clearerr.3 b/raw/man3/clearerr.3
new file mode 100644
index 0000000..3a95cca
--- /dev/null
+++ b/raw/man3/clearerr.3
@@ -0,0 +1 @@
+.so man3/ferror.3
diff --git a/raw/man3/exec.3 b/raw/man3/exec.3
new file mode 100644
index 0000000..b820bc9
--- /dev/null
+++ b/raw/man3/exec.3
@@ -0,0 +1,207 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)exec.3	6.4 (Berkeley) 4/19/91
+.\"
+.\" Converted for Linux, Mon Nov 29 11:12:48 1993, faith at cs.unc.edu
+.\" Updated more for Linux, Tue Jul 15 11:54:18 1997, pacman at cqc.com
+.\"
+.TH EXEC 3  1993-11-29 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+execl, execlp, execle, execv, execvp \- execute a file
+.SH SYNOPSIS
+.B #include <unistd.h>
+.sp
+.B extern char **environ;
+.sp
+.BI "int execl(const char *" path ", const char *" arg ", ...);"
+.br
+.BI "int execlp(const char *" file ", const char *" arg ", ...);"
+.br
+.BI "int execle(const char *" path ", const char *" arg
+.BI ", ..., char * const " envp "[]);"
+.br
+.BI "int execv(const char *" path ", char *const " argv "[]);"
+.br
+.BI "int execvp(const char *" file ", char *const " argv "[]);"
+.SH DESCRIPTION
+The
+.B exec
+family of functions replaces the current process image with a new process
+image.  The functions described in this manual page are front-ends for the
+function
+.BR execve (2).
+(See the manual page for
+.B execve
+for detailed information about the replacement of the current process.)
+.PP
+The initial argument for these functions is the pathname of a file which is
+to be executed.
+.PP
+The
+.I "const char *arg"
+and subsequent ellipses in the
+.BR execl ,
+.BR execlp ,
+and
+.B execle
+functions can be thought of as
+.IR arg0 ,
+.IR arg1 ,
+\&...,
+.IR argn .
+Together they describe a list of one or more pointers to null-terminated
+strings that represent the argument list available to the executed program.
+The first argument, by convention, should point to the file name associated
+with the file being executed.  The list of arguments
+.I must
+be terminated by a
+.B NULL
+pointer.
+.PP
+The
+.B execv
+and
+.B execvp
+functions provide an array of pointers to null-terminated strings that
+represent the argument list available to the new program.  The first
+argument, by convention, should point to the file name associated with the
+file being executed.  The array of pointers
+.I must
+be terminated by a
+.B NULL
+pointer.
+.PP
+The
+.B execle
+function also specifies the environment of the executed process by following
+the
+.B NULL
+pointer that terminates the list of arguments in the parameter list or the
+pointer to the argv array with an additional parameter.  This additional
+parameter is an array of pointers to null-terminated strings and
+.I must
+be terminated by a
+.B NULL
+pointer.  The other functions take the environment for the new process
+image from the external variable
+.I environ
+in the current process.
+.PP
+Some of these functions have special semantics.
+.PP
+The functions
+.B execlp
+and
+.B execvp
+will duplicate the actions of the shell in searching for an executable file
+if the specified file name does not contain a slash (/) character.  The
+search path is the path specified in the environment by the
+.B PATH
+variable.  If this variable isn't specified, the default path
+``:/bin:/usr/bin'' is used.  In addition, certain
+errors are treated specially.
+.PP
+If permission is denied for a file (the attempted
+.B execve
+returned
+.BR EACCES ),
+these functions will continue searching the rest of the search path.  If no
+other file is found, however, they will return with the global variable
+.I errno
+set to
+.BR EACCES .
+.PP
+If the header of a file isn't recognized (the attempted
+.B execve
+returned
+.BR ENOEXEC ),
+these functions will execute the shell with the path of the file as its
+first argument.  (If this attempt fails, no further searching is done.)
+.SH "RETURN VALUE"
+If any of the
+.B exec
+functions returns, an error will have occurred.  The return value is \-1,
+and the global variable
+.I errno
+will be set to indicate the error.
+.SH FILES
+.I /bin/sh
+.SH ERRORS
+All of these functions may fail and set
+.I errno
+for any of the errors specified for the library function
+.BR execve (2).
+.SH "SEE ALSO"
+.BR sh (1),
+.BR execve (2),
+.BR fork (2),
+.BR environ (5),
+.BR ptrace (2)
+.SH COMPATIBILITY
+On some other systems the default path (used when the environment
+does not contain the variable \fBPATH\fR) has the current working
+directory listed after
+.I /bin
+and
+.IR /usr/bin ,
+as an anti-Trojan-horse measure. Linux uses here the
+traditional "current directory first" default path.
+.PP
+The behavior of
+.B execlp
+and
+.B execvp
+when errors occur while attempting to execute the file is historic
+practice, but has not traditionally been documented and is not specified by
+the POSIX standard. BSD (and possibly other systems) do an automatic
+sleep and retry if ETXTBSY is encountered. Linux treats it as a hard
+error and returns immediately.
+.PP
+Traditionally, the functions
+.B execlp
+and
+.B execvp
+ignored all errors except for the ones described above and
+.B ENOMEM
+and
+.BR E2BIG ,
+upon which they returned.  They now return if any error other than the ones
+described above occurs.
+.SH "CONFORMING TO"
+.BR execl ,
+.BR execv ,
+.BR execle ,
+.B execlp
+and
+.B execvp
+conform to
+IEEE Std1003.1-88 (``POSIX.1'').
diff --git a/raw/man3/exit.3 b/raw/man3/exit.3
new file mode 100644
index 0000000..bc8ded7
--- /dev/null
+++ b/raw/man3/exit.3
@@ -0,0 +1,96 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb at cwi.nl>.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH EXIT 3  2001-11-17 "" "Linux Programmer's Manual"
+.SH NAME
+exit \- cause normal program termination
+.SH SYNOPSIS
+.nf
+.B #include <stdlib.h>
+.sp
+.BI "void exit(int " status );
+.fi
+.SH DESCRIPTION
+The \fBexit()\fP function causes normal program termination and the
+the value of \fIstatus & 0377\fP is returned to the parent
+(see
+.BR wait (2)).
+All functions registered with \fBatexit()\fP and \fBon_exit()\fP
+are called in the reverse order of their registration,
+and all open streams are flushed and closed.
+Files created by \fItmpfile()\fP are removed.
+.LP
+The C standard specifies two defines \fIEXIT_SUCCESS\fP and \fIEXIT_FAILURE\fP
+that may be passed to \fBexit()\fP to indicate successful or unsuccessful
+termination, respectively.
+.SH "RETURN VALUE"
+The \fBexit()\fP function does not return.
+.SH "CONFORMING TO"
+SVID 3, POSIX, BSD 4.3, ISO 9899 (``ANSI C'')
+.SH NOTES
+During the exit processing, it is possible to register additional
+functions with \fBatexit()\fP and \fBon_exit()\fP.
+Always the last-registered function is removed from the chain
+of registered functions, and invoked.
+It is undefined what happens if during this processing
+either \fBexit()\fP or \fBlongjmp()\fP is called.
+.LP
+The use of EXIT_SUCCESS and EXIT_FAILURE is slightly more portable
+(to non-Unix environments) than that of 0 and some nonzero value
+like 1 or \-1. In particular, VMS uses a different convention.
+.LP
+BSD has attempted to standardize exit codes - see the file
+.IR <sysexits.h> .
+.LP
+After \fBexit()\fP, the exit status must be transmitted to the
+parent process. There are three cases. If the parent has set
+SA_NOCLDWAIT, or has set the SIGCHLD handler to SIG_IGN, the
+status is discarded. If the parent was waiting on the child
+it is notified of the exit status. In both cases the exiting
+process dies immediately. If the parent has not indicated that
+it is not interested in the exit status, but is not waiting,
+the exiting process turns into a "zombie" process
+(which is nothing but a container for the single byte representing
+the exit status) so that the parent can learn the exit status when
+it later calls one of the \fIwait()\fP functions.
+.LP
+If the implementation supports the SIGCHLD signal, this signal
+is sent to the parent. If the parent has set SA_NOCLDWAIT,
+it is undefined whether a SIGCHLD signal is sent.
+.LP
+If the process is a session leader and its controlling terminal
+the controlling terminal of the session, then each process in
+the foreground process group of this controlling terminal
+is sent a SIGHUP signal, and the terminal is disassociated
+from this session, allowing it to be acquired by a new controlling
+process.
+.LP
+If the exit of the process causes a process group to become orphaned,
+and if any member of the newly-orphaned process group is stopped,
+then a SIGHUP signal followed by a SIGCONT signal will be
+sent to each process in this process group.
+.SH "SEE ALSO"
+.BR _exit (2),
+.BR wait (2),
+.BR atexit (3),
+.BR on_exit (3),
+.BR tmpfile (3)
diff --git a/raw/man3/fclose.3 b/raw/man3/fclose.3
new file mode 100644
index 0000000..1cc960a
--- /dev/null
+++ b/raw/man3/fclose.3
@@ -0,0 +1,104 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fclose.3	6.7 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:19:14 1993, faith at cs.unc.edu
+.\"
+.\" Modified 2000-07-22 by Nicol??s Lichtmaier <nick at debian.org>
+.\"
+.TH FCLOSE 3  1993-11-29 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+fclose \- close a stream
+.SH SYNOPSIS
+.B #include <stdio.h>
+.sp
+.BI "int fclose(FILE *" stream );
+.SH DESCRIPTION
+The
+.B fclose
+function dissociates the named
+.I stream
+from its underlying file or set of functions.  If the stream was being used
+for output, any buffered data is written first, using
+.BR fflush (3).
+.SH "RETURN VALUE"
+Upon successful completion 0 is returned.  Otherwise,
+.B EOF
+is returned and the global variable
+.I errno
+is set to indicate the error.  In either case any further access
+(including another call to
+.BR fclose "())"
+to the stream results in undefined behaviour.
+.SH ERRORS
+.TP
+.B EBADF
+The filedescriptor underlying
+.I stream
+is not valid.
+.\"  This error cannot occur unless you are mixing ANSI C stdio operations and
+.\"  low-level file operations on the same stream. If you do get this error,
+.\"  you must have closed the stream's low-level file descriptor using
+.\"  something like close(fileno(fp)).
+.PP
+The
+.B fclose
+function may also fail and set
+.I errno
+for any of the errors specified for the routines
+.BR close (2),
+.BR write (2)
+or
+.BR fflush (3).
+.SH NOTES
+Note that
+.B fclose
+only flushes the user space buffers provided by the
+C library. To ensure that the data is physically stored
+on disk the kernel buffers must be flushed too, e.g. with
+.BR sync (2)
+or
+.BR fsync (2).
+.SH "CONFORMING TO"
+The
+.B fclose
+function conforms to ANSI X3.159-1989 (``ANSI C'').
+.SH "SEE ALSO"
+.BR close (2),
+.BR fcloseall (3),
+.BR fflush (3),
+.BR fopen (3),
+.BR setbuf (3)
diff --git a/raw/man3/fcloseall.3 b/raw/man3/fcloseall.3
new file mode 100644
index 0000000..07eeeee
--- /dev/null
+++ b/raw/man3/fcloseall.3
@@ -0,0 +1,70 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fclose.3	6.7 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:19:14 1993, faith at cs.unc.edu
+.\" Modified to be fcloseall(3) by Nicol??s Lichtmaier <nick at debian.org> Fri Apr 10 1998
+.\"
+.TH FCLOSE 3  1998-04-10 "GNU" "Linux Programmer's Manual"
+.SH NAME
+fcloseall \- close all open streams
+.SH SYNOPSIS
+.B #define _GNU_SOURCE
+.sp
+.B #include <stdio.h>
+.sp
+.B int fcloseall(void);
+.SH DESCRIPTION
+The
+.B fcloseall
+function dissociates all open streams
+from its underlying file or set of functions.  Any buffered output data is
+written first, using
+.BR fflush (3).
+Note that the standard streams (stdin, stdout
+and stderr) are also closed.
+.SH "RETURN VALUE"
+This function always returns 0.
+.SH "SEE ALSO"
+.BR fclose (3),
+.BR close (2),
+.BR fflush (3),
+.BR fopen (3),
+.BR setbuf (3)
+.SH "CONFORMING TO"
+The
+.B fcloseall
+function is a GNU extension.
diff --git a/raw/man3/fdopen.3 b/raw/man3/fdopen.3
new file mode 100644
index 0000000..9a40124
--- /dev/null
+++ b/raw/man3/fdopen.3
@@ -0,0 +1 @@
+.so man3/fopen.3
diff --git a/raw/man3/feof.3 b/raw/man3/feof.3
new file mode 100644
index 0000000..3a95cca
--- /dev/null
+++ b/raw/man3/feof.3
@@ -0,0 +1 @@
+.so man3/ferror.3
diff --git a/raw/man3/ferror.3 b/raw/man3/ferror.3
new file mode 100644
index 0000000..c0fff2d
--- /dev/null
+++ b/raw/man3/ferror.3
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)ferror.3	6.8 (Berkeley) 6/29/91
+.\"
+.\"
+.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith at cs.unc.edu
+.\" Added remark on EBADF for fileno, aeb, 2001-03-22
+.\"
+.TH FERROR 3  2001-10-16 "" "Linux Programmer's Manual"
+.SH NAME
+clearerr, feof, ferror, fileno \- check and reset stream status
+.SH SYNOPSIS
+.B #include <stdio.h>
+.sp
+.BI "void clearerr(FILE *" stream );
+.br
+.BI "int feof(FILE *" stream );
+.br
+.BI "int ferror(FILE *" stream );
+.br
+.BI "int fileno(FILE *" stream );
+.SH DESCRIPTION
+The function
+.B clearerr
+clears the end-of-file and error indicators for the stream pointed to by
+.IR stream .
+.PP
+The function
+.B feof
+tests the end-of-file indicator for the stream pointed to by
+.IR stream ,
+returning non-zero if it is set.  The end-of-file indicator can only be
+cleared by the function
+.BR clearerr .
+.PP
+The function
+.B ferror
+tests the error indicator for the stream pointed to by
+.IR stream ,
+returning non-zero if it is set.  The error indicator can only be reset by
+the
+.B clearerr
+function.
+.PP
+The function
+.B fileno
+examines the argument
+.I stream
+and returns its integer descriptor.
+.PP
+For non-locking counterparts, see
+.BR unlocked_stdio (3).
+.SH ERRORS
+These functions should not fail and do not set the external variable
+.IR errno .
+(However, in case
+.B fileno
+detects that its argument is not a valid stream, it must
+return \-1 and set
+.I errno
+to
+.BR EBADF .)
+.SH "CONFORMING TO"
+The functions
+.BR clearerr ,
+.BR feof ,
+and
+.BR ferror
+conform to X3.159-1989 (``ANSI C'').
+.SH "SEE ALSO"
+.BR open (2),
+.BR unlocked_stdio (3),
+.BR stdio (3)
diff --git a/raw/man3/fflush.3 b/raw/man3/fflush.3
new file mode 100644
index 0000000..159cb51
--- /dev/null
+++ b/raw/man3/fflush.3
@@ -0,0 +1,107 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fflush.3	5.4 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith at cs.unc.edu
+.\"
+.\" Modified 2000-07-22 by Nicol??s Lichtmaier <nick at debian.org>
+.\" Modified 2001-10-16 by John Levon <moz at compsoc.man.ac.uk>
+.\"
+.TH FFLUSH 3  1993-11-29 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+fflush \- flush a stream
+.SH SYNOPSIS
+.B #include <stdio.h>
+.sp
+.BI "int fflush(FILE *" stream );
+.SH DESCRIPTION
+The function
+.B fflush
+forces a write of all user-space buffered data for the given output or update
+.I stream
+via the stream's underlying write function.  The open status of the stream
+is unaffected.
+.PP
+If the
+.I stream
+argument is
+.BR NULL ,
+.B fflush
+flushes
+.I all
+open output streams.
+.PP
+For a non-locking counterpart, see
+.BR unlocked_stdio (3).
+.SH "RETURN VALUE"
+Upon successful completion 0 is returned.  Otherwise,
+.B EOF
+is returned and the global variable
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EBADF
+.I Stream
+is not an open stream, or is not open for writing.
+.PP
+The function
+.B fflush
+may also fail and set
+.I errno
+for any of the errors specified for the routine
+.BR write (2).
+.SH NOTES
+Note that
+.B fflush()
+only flushes the user space buffers provided by the C library.
+To ensure that the data is physically stored on disk
+the kernel buffers must be flushed too, e.g. with
+.BR sync (2)
+or
+.BR fsync (2).
+.SH "CONFORMING TO"
+The function
+.BR fflush()
+conforms to ANSI X3.159-1989 (``ANSI C'').
+.SH "SEE ALSO"
+.BR fsync (2),
+.BR sync (2),
+.BR write (2),
+.BR fclose (3),
+.BR fopen (3),
+.BR setbuf (3),
+.BR unlocked_stdio (3)
diff --git a/raw/man3/fileno.3 b/raw/man3/fileno.3
new file mode 100644
index 0000000..3a95cca
--- /dev/null
+++ b/raw/man3/fileno.3
@@ -0,0 +1 @@
+.so man3/ferror.3
diff --git a/raw/man3/flockfile.3 b/raw/man3/flockfile.3
new file mode 100644
index 0000000..fd736a5
--- /dev/null
+++ b/raw/man3/flockfile.3
@@ -0,0 +1,89 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb at cwi.nl>.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH LOCKFILE 3  2001-10-18 "" "Linux Programmer's Manual"
+.SH NAME
+flockfile, ftrylockfile, funlockfile \- lock FILE for stdio
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.sp
+.BI "void flockfile(FILE *" filehandle );
+.br
+.BI "int ftrylockfile(FILE *" filehandle );
+.br
+.BI "void funlockfile(FILE *" filehandle );
+.fi
+.SH DESCRIPTION
+The stdio functions are thread-safe. This is achieved by assigning
+to each FILE object a lockcount and (if the lockcount is nonzero)
+an owning thread.
+For each library call, these functions wait until the FILE object
+is no longer locked by a different thread, then lock it, do the
+requested I/O, and unlock the object again.
+.LP
+(Note: this locking has nothing to do with the file locking done
+by functions like
+.BR flock (2)
+and
+.BR lockf (3).)
+.LP
+All this is invisible to the C-programmer, but there may be two
+reasons to wish for more detailed control. On the one hand, maybe
+a series of I/O actions by one thread belongs together, and should
+not be interrupted by the I/O of some other thread.
+On the other hand, maybe the locking overhead should be avoided
+for greater efficiency.
+.LP
+To this end, a thread can explicitly lock the FILE object,
+then do its series of I/O actions, then unlock. This prevents
+other threads from coming in between. If the reason for doing
+this was to achieve greater efficiency, one does the I/O with
+the non-locking versions of the stdio functions: with
+\fIgetc_unlocked\fP() and \fIputc_unlocked\fP() instead of
+\fIgetc\fP() and \fIputc\fP().
+.LP
+The \fBflockfile()\fP function waits for *\fIfilehandle\fP to be
+no longer locked by a different thread, then makes the
+current thread owner of *\fIfilehandle\fP, and increments
+the lockcount.
+.LP
+The \fBfunlockfile()\fP function decrements the lock count.
+.LP
+The \fBftrylockfile()\fP function is a non-blocking version
+of \fBflockfile()\fP. It does nothing in case some other thread
+owns *\fIfilehandle\fP, and it obtains ownership and increments
+the lockcount otherwise.
+.SH "RETURN VALUE"
+The \fBftrylockfile()\fP function returns zero for success
+(the lock was obtained), and nonzero for failure.
+.SH ERRORS
+None.
+.SH AVAILABILITY
+These functions are available when _POSIX_THREAD_SAFE_FUNCTIONS
+is defined. They are in libc since libc 5.1.1 and in glibc
+since glibc 2.0.
+.SH "CONFORMING TO"
+POSIX.1
+.SH "SEE ALSO"
+.BR unlocked_stdio (3)
+
diff --git a/raw/man3/fopen.3 b/raw/man3/fopen.3
new file mode 100644
index 0000000..e9da6d5
--- /dev/null
+++ b/raw/man3/fopen.3
@@ -0,0 +1,236 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fopen.3	6.8 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith at cs.unc.edu
+.\" Modified, aeb, 960421, 970806
+.\" Modified, joey, aeb, 2002-01-03
+.\"
+.TH FOPEN 3  2002-01-03 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+fopen, fdopen, freopen \- stream open functions
+.SH SYNOPSIS
+.B #include <stdio.h>
+.sp
+.BI "FILE *fopen(const char *" path ", const char *" mode );
+.br
+.BI "FILE *fdopen(int " fildes ", const char *" mode );
+.br
+.BI "FILE *freopen(const char *" path ", const char *" mode ", FILE *" stream );
+.SH DESCRIPTION
+The
+.B fopen
+function opens the file whose name is the string pointed to by
+.I path
+and associates a stream with it.
+.PP
+The argument
+.I mode
+points to a string beginning with one of the following sequences
+(Additional characters may follow these sequences.):
+.TP
+.B r
+Open text file for reading.  The stream is positioned at the beginning of
+the file.
+.TP
+.B r+
+Open for reading and writing.  The stream is positioned at the beginning of
+the file.
+.TP
+.B w
+Truncate file to zero length or create text file for writing.  The stream
+is positioned at the beginning of the file.
+.TP
+.B w+
+Open for reading and writing.  The file is created if it does not exist,
+otherwise it is truncated.  The stream is positioned at the beginning of
+the file.
+.TP
+.B a
+Open for appending (writing at end of file).  The file is created
+if it does not exist.  The stream is positioned at the end of the file.
+.TP
+.B a+
+Open for reading and appending (writing at end of file).  The file
+is created if it does not exist.
+The initial file position for reading is at the beginning of the file,
+but output is always appended to the end of the file.
+.PP
+The
+.I mode
+string can also include the letter ``b'' either as a last character or as
+a character between the characters in any of the two-character strings
+described above.  This is strictly for compatibility with ANSI X3.159-1989
+(``ANSI C'') and has no effect; the ``b'' is ignored on all POSIX
+conforming systems, including Linux.
+(Other systems may treat text files and binary files differently,
+and adding the ``b'' may be a good idea if you do I/O to a binary
+file and expect that your program may be ported to non-Unix
+environments.)
+.PP
+Any created files will have mode
+.BR S_IRUSR \&| S_IWUSR \&|  S_IRGRP \&|  S_IWGRP \&| S_IROTH \&| S_IWOTH
+(0666), as modified by the process' umask value (see
+.BR umask (2)).
+.PP
+Reads and writes may be intermixed on read/write streams in any order.
+Note that ANSI C requires that a file positioning function intervene
+between output and input, unless an input operation encounters end-of-file.
+(If this condition is not met, then a read is allowed to return the
+result of writes other than the most recent.)
+Therefore it is good practice (and indeed sometimes necessary
+under Linux) to put an
+.B fseek
+or
+.B fgetpos
+operation between write and read operations on such a stream.  This
+operation may be an apparent no-op (as in \fIfseek(..., 0L,
+SEEK_CUR)\fR called for its synchronizing side effect.
+.PP
+Opening a file in append mode (\fBa\fR as the first character of
+.IR mode )
+causes all subsequent write operations to this stream to occur
+at end-of-file, as if preceded by an
+.RS
+fseek(stream,0,SEEK_END);
+.RE
+call.
+.PP
+The
+.B fdopen
+function associates a stream with the existing file descriptor,
+.IR fildes .
+The
+.I mode
+of the stream (one of the values "r", "r+", "w", "w+", "a", "a+")
+must be compatible with the mode of the file descriptor.
+The file position indicator of the new stream is set to that
+belonging to
+.IR fildes ,
+and the error and end-of-file indicators are cleared.
+Modes "w" or "w+" do not cause truncation of the file.
+The file descriptor is not dup'ed, and will be closed when
+the stream created by
+.B fdopen
+is closed.
+The result of applying
+.B fdopen
+to a shared memory object is undefined.
+.PP
+The
+.B freopen
+function opens the file whose name is the string pointed to by
+.I path
+and associates the stream pointed to by
+.I stream
+with it.  The original stream (if it exists) is closed.  The
+.I mode
+argument is used just as in the
+.B fopen
+function.  The primary use of the
+.B freopen
+function is to change the file associated with a standard text stream
+.IR "" ( stderr ", " stdin ", or " stdout ).
+.SH "RETURN VALUE"
+Upon successful completion
+.BR fopen ,
+.B fdopen
+and
+.B freopen
+return a
+.B FILE
+pointer.  Otherwise,
+.B NULL
+is returned and the global variable
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EINVAL
+The
+.I mode
+provided to
+.BR fopen ,
+.BR fdopen ,
+or
+.B freopen
+was invalid.
+.PP
+The
+.BR fopen ,
+.B fdopen
+and
+.B freopen
+functions may also fail and set
+.I errno
+for any of the errors specified for the routine
+.BR malloc (3).
+.PP
+The
+.B fopen
+function may also fail and set
+.I errno
+for any of the errors specified for the routine
+.BR open (2).
+.PP
+The
+.B fdopen
+function may also fail and set
+.I errno
+for any of the errors specified for the routine
+.BR fcntl (2).
+.PP
+The
+.B freopen
+function may also fail and set
+.I errno
+for any of the errors specified for the routines
+.BR open (2),
+.BR fclose (3)
+and
+.BR fflush (3).
+.SH "CONFORMING TO"
+The
+.B fopen
+and
+.B freopen
+functions conform to ANSI X3.159-1989 (``ANSI C'').  The
+.B fdopen
+function conforms to IEEE Std1003.1-1988 (``POSIX.1'').
+.SH "SEE ALSO"
+.BR open (2),
+.BR fclose (3),
+.BR fileno (3)
diff --git a/raw/man3/freopen.3 b/raw/man3/freopen.3
new file mode 100644
index 0000000..9a40124
--- /dev/null
+++ b/raw/man3/freopen.3
@@ -0,0 +1 @@
+.so man3/fopen.3
diff --git a/raw/man3/iconv_close.3 b/raw/man3/iconv_close.3
new file mode 100644
index 0000000..8b9e4ac
--- /dev/null
+++ b/raw/man3/iconv_close.3
@@ -0,0 +1,33 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   GNU glibc-2 source code and manual
+.\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
+.\"
+.TH ICONV_CLOSE 3  1999-11-27 "GNU" "Linux Programmer's Manual"
+.SH NAME
+iconv_close \- deallocate descriptor for character set conversion
+.SH SYNOPSIS
+.nf
+.B #include <iconv.h>
+.sp
+.BI "int iconv_close(iconv_t " cd );
+.fi
+.SH DESCRIPTION
+The \fBiconv_close\fP function deallocates a conversion descriptor \fIcd\fP
+previously allocated using \fBiconv_open\fP.
+.SH "RETURN VALUE"
+When successful, the \fBiconv_close\fP function returns 0.
+In case of error, it sets
+.I errno
+and returns \-1.
+.SH "CONFORMING TO"
+UNIX98
+.SH "SEE ALSO"
+.BR iconv_open (3),
+.BR iconv (3)
diff --git a/raw/man3/iconv_open.3 b/raw/man3/iconv_open.3
new file mode 100644
index 0000000..cb689ca
--- /dev/null
+++ b/raw/man3/iconv_open.3
@@ -0,0 +1,54 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   GNU glibc-2 source code and manual
+.\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
+.\"
+.TH ICONV_OPEN 3  1999-11-27 "GNU" "Linux Programmer's Manual"
+.SH NAME
+iconv_open \- allocate descriptor for character set conversion
+.SH SYNOPSIS
+.nf
+.B #include <iconv.h>
+.sp
+.BI "iconv_t iconv_open(const char *" tocode ", const char *" fromcode );
+.fi
+.SH DESCRIPTION
+The \fBiconv_open\fP function allocates a conversion descriptor suitable
+for converting byte sequences from character encoding \fIfromcode\fP to
+character encoding \fItocode\fP.
+.PP
+The values permitted for \fIfromcode\fP and \fItocode\fP and the supported
+combinations are system dependent. For the GNU C library, the permitted
+values are listed by the \fBiconv --list\fP command, and all combinations
+of the listed values are supported.
+.PP
+The resulting conversion descriptor can be used with \fBiconv\fP any number
+of times. It remains valid until deallocated using \fBiconv_close\fP.
+.PP
+A conversion descriptor contains a conversion state. After creation using
+\fBiconv_open\fP, the state is in the initial state. Using \fBiconv\fP
+modifies the descriptor's conversion state. (This implies that a conversion
+descriptor can not be used in multiple threads simultaneously.) To bring the
+state back to the initial state, use \fBiconv\fP with NULL as \fIinbuf\fP
+argument.
+.SH "RETURN VALUE"
+The \fBiconv_open\fP function returns a freshly allocated conversion
+descriptor. In case of error, it sets \fBerrno\fP and returns (iconv_t)(-1).
+.SH ERRORS
+The following error can occur, among others:
+.TP
+.B EINVAL
+The conversion from \fIfromcode\fP to \fItocode\fP is not supported by the
+implementation.
+.SH "CONFORMING TO"
+UNIX98
+.SH "SEE ALSO"
+.BR iconv (3),
+.BR iconv_close (3),
+.BR iconv (1)
diff --git a/raw/man3/setbuf.3 b/raw/man3/setbuf.3
new file mode 100644
index 0000000..5c58a43
--- /dev/null
+++ b/raw/man3/setbuf.3
@@ -0,0 +1,190 @@
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)setbuf.3	6.10 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 14:55:24 1993, faith at cs.unc.edu
+.\" Added section to BUGS, Sun Mar 12 22:28:33 MET 1995,
+.\"                   Thomas.Koenig at ciw.uni-karlsruhe.de
+.\" Correction,  Sun, 11 Apr 1999 15:55:18,
+.\"     Martin Vicente <martin at netadmin.dgac.fr>
+.\" Correction,  2000-03-03, Andreas Jaeger <aj at suse.de>
+.\" Added return value for setvbuf, aeb, 
+.\"
+.TH SETBUF 3  2001-06-09 "Linux" "Linux Programmer's Manual"
+.SH NAME
+setbuf, setbuffer, setlinebuf, setvbuf \- stream buffering operations
+.SH SYNOPSIS
+.na
+.B #include <stdio.h>
+.sp
+.BI "void setbuf(FILE *" stream ", char *" buf );
+.br
+.BI "void setbuffer(FILE *" stream ", char *" buf ", size_t "  size );
+.br
+.BI "void setlinebuf(FILE *" stream );
+.br
+.BI "int setvbuf(FILE *" stream ", char *" buf ", int " mode
+.BI ", size_t " size );
+.ad
+.SH DESCRIPTION
+The three types of buffering available are unbuffered, block buffered, and
+line buffered.  When an output stream is unbuffered, information appears on
+the destination file or terminal as soon as written; when it is block
+buffered many characters are saved up and written as a block; when it is
+line buffered characters are saved up until a newline is output or input is
+read from any stream attached to a terminal device (typically stdin).  The
+function
+.BR fflush (3)
+may be used to force the block out early.
+(See 
+.BR fclose (3).)
+Normally all files are block buffered.  When the first I/O operation occurs
+on a file,
+.BR malloc (3)
+is called, and a buffer is obtained.  If a stream refers to a terminal (as
+.I stdout
+normally does) it is line buffered.  The standard error stream
+.I stderr
+is always unbuffered by default.
+.PP
+The
+.B setvbuf
+function may be used on any open stream to change its buffer.
+The
+.I mode
+parameter must be one of the following three macros:
+.RS
+.TP
+.B _IONBF
+unbuffered
+.TP
+.B _IOLBF
+line buffered
+.TP
+.B _IOFBF
+fully buffered
+.RE
+.PP
+Except for unbuffered files, the
+.I buf
+argument should point to a buffer at least
+.I size
+bytes long; this buffer will be used instead of the current buffer.  If the
+argument
+.I buf
+is
+.BR NULL ,
+only the mode is affected; a new buffer will be allocated on the next read
+or write operation.  The
+.B setvbuf
+function may only be used after opening a stream and before any other
+operations have been performed on it.
+.PP
+The other three calls are, in effect, simply aliases for calls to
+.BR setvbuf .
+The
+.B setbuf
+function is exactly equivalent to the call
+.PP
+.RS
+setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
+.RE
+.PP
+The
+.B setbuffer
+function is the same, except that the size of the buffer is up to the
+caller, rather than being determined by the default
+.BR BUFSIZ .
+The
+.B setlinebuf
+function is exactly equivalent to the call:
+.PP
+.RS
+setvbuf(stream, (char *)NULL, _IOLBF, 0);
+.RE
+.SH "RETURN VALUE"
+The function
+.B setvbuf
+returns 0 on success.
+It can return any value on failure, but returns nonzero when
+.I mode
+is invalid or the request cannot be honoured. It may set
+.I errno
+on failure.
+The other functions are void.
+.SH "CONFORMING TO"
+The
+.B setbuf
+and
+.B setvbuf
+functions conform to ANSI X3.159-1989 (``ANSI C'').
+.SH BUGS
+The
+.B setbuffer
+and
+.B setlinebuf
+functions are not portable to versions of BSD before 4.2BSD, and
+are available under Linux since libc 4.5.21.  On 4.2BSD and 4.3BSD systems,
+.B setbuf
+always uses a suboptimal buffer size and should be avoided.
+.P
+You must make sure that both
+.I buf
+and the space it points to still exist by the time 
+.I stream
+is closed, which also happens at program termination.
+.P
+For example, the following is illegal:
+.nf
+.sp
+#include <stdio.h>
+int main()
+{
+    char buf[BUFSIZ];
+    setbuf(stdin, buf);
+    printf("Hello, world!\\n");
+    return 0;
+}
+.fi
+.sp
+.SH "SEE ALSO"
+.BR fclose (3),
+.BR fflush (3),
+.BR fopen (3),
+.BR fread (3),
+.BR malloc (3),
+.BR printf (3),
+.BR puts (3)
diff --git a/raw/man3/setbuffer.3 b/raw/man3/setbuffer.3
new file mode 100644
index 0000000..dc02d9e
--- /dev/null
+++ b/raw/man3/setbuffer.3
@@ -0,0 +1 @@
+.so man3/setbuf.3
diff --git a/raw/man3/setlinebuf.3 b/raw/man3/setlinebuf.3
new file mode 100644
index 0000000..dc02d9e
--- /dev/null
+++ b/raw/man3/setlinebuf.3
@@ -0,0 +1 @@
+.so man3/setbuf.3
diff --git a/raw/man3/setlocale.3 b/raw/man3/setlocale.3
new file mode 100644
index 0000000..ad76ee2
--- /dev/null
+++ b/raw/man3/setlocale.3
@@ -0,0 +1,190 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\" and 1999 by Bruno Haible (haible at clisp.cons.org)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 18:20:12 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Tue Jul 15 16:49:10 1997 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Sun Jul  4 14:52:16 1999 by Bruno Haible (haible at clisp.cons.org)
+.\" Modified Tue Aug 24 17:11:01 1999 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Tue Feb  6 03:31:55 2001 by Andries Brouwer (aeb at cwi.nl)
+.\"
+.TH SETLOCALE 3  1999-07-04 "GNU" "Linux Programmer's Manual"
+.SH NAME
+setlocale \- set the current locale.
+.SH SYNOPSIS
+.nf
+.B #include <locale.h>
+.sp
+.BI "char *setlocale(int " category ", const char *" locale );
+.fi
+.SH DESCRIPTION
+The 
+.B setlocale()
+function is used to set or query the program's current locale.
+.PP
+If
+.I locale
+is not
+.BR NULL ,
+the program's current locale is modified according to the arguments.
+The argument
+.I category
+determines which parts of the program's current locale should be modified.
+.TP
+.B LC_ALL
+for all of the locale.
+.TP
+.B LC_COLLATE
+for regular expression matching (it determines the meaning
+of range expressions and equivalence classes) and string collation.
+.TP
+.B LC_CTYPE
+for regular expression matching, character classification, conversion,
+case-sensitive comparison, and wide character functions.
+.TP
+.B LC_MESSAGES
+for localizable natural-language messages.
+.TP
+.B LC_MONETARY
+for monetary formatting.
+.TP
+.B LC_NUMERIC
+for number formatting (such as the decimal point and the thousands separator).
+.TP
+.B LC_TIME
+for time and date formatting.
+.PP
+The argument
+.I locale
+is a pointer to a character string containing the
+required setting of
+.IR category .
+Such a string is either a well-known constant like "C" or "da_DK"
+(see below), or an opaque string that was returned by another call of
+.BR setlocale .
+.PP
+If
+.I locale
+is
+.BR """""" ,
+each part of the locale that should be modified is set according to the
+environment variables. The details are implementation dependent.
+For glibc, first
+.\" [This is false on my system - must check which library versions do this]
+.\" if
+.\" .I category
+.\" is LC_MESSAGES, the environment variable LANGUAGE is inspected,
+.\" then
+(regardless of
+.IR category ),
+the environment variable LC_ALL is inspected,
+next the environment variable with the same name as the category
+(LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME)
+and finally the environment variable LANG.
+The first existing environment variable is used.
+If its value is not a valid locale specification, the locale
+is unchanged, and
+.B setlocale
+returns NULL.
+.\" The environment variable LANGUAGE may contain several, colon-separated,
+.\" locale names.
+.PP
+The locale
+.B """C"""
+or
+.B """POSIX"""
+is a portable locale; its LC_CTYPE part corresponds to the 7-bit ASCII
+character set.
+.PP
+A locale name is typically of the form
+.IR language "[_" territory "][." codeset "][@" modifier "],"
+where
+.I language
+is an ISO 639 language code,
+.I territory
+is an ISO 3166 country code, and
+.I codeset
+is a character set or encoding identifier like
+.B "ISO-8859-1"
+or
+.BR "UTF-8" .
+For a list of all supported locales, try "locale -a", cf.\&
+.BR locale (1).
+.PP
+If
+.I locale
+is
+.BR NULL ,
+the current locale is only queried, not modified.
+.PP
+On startup of the main program, the portable
+.B """C"""
+locale is selected as default.
+A program may be made portable to all locales by calling
+.B setlocale(LC_ALL, """""")
+after program  initialization, by using the values returned
+from a
+.B localeconv()
+call
+for locale \- dependent information, by using the multi-byte and wide
+character functions for text processing if
+.BR "MB_CUR_MAX > 1" ,
+and by using
+.BR strcoll() ", " wcscoll()
+or 
+.BR strxfrm() ", " wcsxfrm()
+to compare strings.
+.SH "RETURN VALUE"
+A successful call to
+.B setlocale()
+returns an opaque string that corresponds to the locale set.
+This string may be allocated in static storage.
+The string returned is such that a subsequent call with that string
+and its associated category will restore that part of the process's
+locale. The return value is
+.B NULL
+if the request cannot be honored.
+.SH "CONFORMING TO"
+ANSI C, POSIX.1
+.SH NOTES
+Linux (that is, GNU libc) supports the portable locales
+.BR """C""" " and " """POSIX""" .
+In the good old days there used to be support for
+the European Latin-1 
+.B """ISO-8859-1"""
+locale (e.g. in libc-4.5.21 and libc-4.6.27), and the Russian
+.B """KOI-8"""
+(more precisely, "koi-8r") locale (e.g. in libc-4.6.27),
+so that having an environment variable LC_CTYPE=ISO-8859-1
+sufficed to make isprint() return the right answer.
+These days non-English speaking Europeans have to work a bit harder,
+and must install actual locale files.
+.SH "SEE ALSO"
+.BR locale (1),
+.BR localedef (1),
+.BR strcoll (3),
+.BR isalpha (3),
+.BR localeconv (3),
+.BR strftime (3),
+.BR charsets (4),
+.BR locale (7),
+.BR nl_langinfo (3)
diff --git a/raw/man3/setvbuf.3 b/raw/man3/setvbuf.3
new file mode 100644
index 0000000..dc02d9e
--- /dev/null
+++ b/raw/man3/setvbuf.3
@@ -0,0 +1 @@
+.so man3/setbuf.3
diff --git a/raw/man3/stderr.3 b/raw/man3/stderr.3
new file mode 100644
index 0000000..752ae27
--- /dev/null
+++ b/raw/man3/stderr.3
@@ -0,0 +1 @@
+.so man3/stdin.3
diff --git a/raw/man3/stdin.3 b/raw/man3/stdin.3
new file mode 100644
index 0000000..42d0271
--- /dev/null
+++ b/raw/man3/stdin.3
@@ -0,0 +1,130 @@
+.\" From dholland at burgundy.eecs.harvard.edu Tue Mar 24 18:08:15 1998
+.\"
+.\" This man page was written in 1998 by David A. Holland
+.\" and placed in the Public Domain. Polished a bit by aeb.
+.\"
+.Dd March 24, 1998
+.Dt STDIN 3
+.Os "Linux 2.0"
+.Sh NAME
+.Nm stdin ,
+.Nm stdout ,
+.Nm stderr
+.Nd standard I/O streams
+.Sh SYNOPSIS
+.Fd #include <stdio.h>
+.Fd extern FILE *stdin;
+.Fd extern FILE *stdout;
+.Fd extern FILE *stderr;
+.Sh DESCRIPTION
+Under normal circumstances every Unix program has three streams opened
+for it when it starts up, one for input, one for output, and one for
+printing diagnostic or error messages. These are typically attached to
+the user's terminal (see
+.Xr tty 4 )
+but might instead refer to files or other devices, depending on what
+the parent process chose to set up. (See also the ``Redirection'' section of
+.Xr sh 1 .)
+.Pp
+The input stream is referred to as ``standard input''; the output stream is
+referred to as ``standard output''; and the error stream is referred to
+as ``standard error''. These terms are abbreviated to form the symbols
+used to refer to these files, namely
+.Nm stdin ,
+.Nm stdout ,
+and
+.Nm stderr .
+.Pp
+Each of these symbols is a
+.Xr stdio 3
+macro of type pointer to FILE, and can be used with functions like
+.Xr fprintf 3
+or
+.Xr fread 3 .
+.Pp
+Since FILEs are a buffering wrapper around Unix file descriptors, the
+same underlying files may also be accessed using the raw Unix file
+interface, that is, the functions like
+.Xr read 2
+and
+.Xr lseek 2 . 
+The integer file descriptors associated with the streams
+.Nm stdin ,
+.Nm stdout ,
+and
+.Nm stderr
+are 0, 1, and 2, respectively. The preprocessor symbols STDIN_FILENO,
+STDOUT_FILENO, and STDERR_FILENO are defined with these values in 
+<unistd.h>.
+.Pp
+Note that mixing use of FILEs and raw file descriptors can produce
+unexpected results and should generally be avoided.
+(For the masochistic among you: POSIX.1, section 8.2.3, describes
+in detail how this interaction is supposed to work.)
+A general rule is that file descriptors are handled in the kernel,
+while stdio is just a library. This means for example, that after an
+exec, the child inherits all open file descriptors, but all old streams
+have become inaccessible. 
+.Pp
+Since the symbols
+.Nm stdin ,
+.Nm stdout ,
+and
+.Nm stderr
+are specified to be macros, assigning to them is non-portable.
+The standard streams can be made to refer to different files
+with help of the library function
+.Xr freopen 3 ,
+specially introduced to make it possible to reassign
+.Nm stdin ,
+.Nm stdout ,
+and
+.Nm stderr .
+The standard streams are closed by a call to
+.Xr exit 3
+and by normal program termination.
+.Sh SEE ALSO
+.Xr sh 1 ,
+.Xr csh 1 ,
+.Xr open 2 ,
+.Xr fopen 3 ,
+.Xr stdio 3
+.Sh CONSIDERATIONS
+The stream
+.Nm stderr
+is unbuffered. The stream
+.Nm stdout
+is line-buffered when it points to a terminal. Partial lines will not
+appear until
+.Xr fflush 3
+or
+.Xr exit 3
+is called, or a newline is printed. This can produce unexpected
+results, especially with debugging output.
+The buffering mode of the standard streams (or any other stream)
+can be changed using the
+.Xr setbuf 3
+or
+.Xr setvbuf 3
+call.
+Note that in case
+.Nm stdin
+is associated with a terminal, there may also be input buffering
+in the terminal driver, entirely unrelated to stdio buffering.
+(Indeed, normally terminal input is line buffered in the kernel.)
+This kernel input handling can be modified using calls like
+.Xr tcsetattr 3 ;
+see also
+.Xr stty 1 ,
+and
+.Xr termios 3 .
+.Sh "CONFORMING TO"
+The
+.Nm stdin ,
+.Nm stdout ,
+and
+.Nm stderr
+macros conform to
+.St -ansiC ,
+and this standard also stipulates that these three
+streams shall be open at program startup.
diff --git a/raw/man3/stdio.3 b/raw/man3/stdio.3
new file mode 100644
index 0000000..e5f3a0e
--- /dev/null
+++ b/raw/man3/stdio.3
@@ -0,0 +1,353 @@
+.\" Copyright (c) 1990, 1991 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)stdio.3	6.5 (Berkeley) 5/6/91
+.\"
+.\" Converted for Linux, Mon Nov 29 16:07:22 1993, faith at cs.unc.edu
+.\" Modified, 2001-12-26, aeb
+.\"
+.TH STDIO 3  2001-12-26 "" "Linux Programmer's Manual"
+.SH NAME
+stdio \- standard input/output library functions
+.SH SYNOPSIS
+.B #include <stdio.h>
+.sp
+.B FILE *stdin;
+.br
+.B FILE *stdout;
+.br
+.B FILE *stderr;
+.SH DESCRIPTION
+The standard I/O library provides a simple and efficient buffered stream
+I/O interface.  Input and output is mapped into logical data streams and the
+physical I/O characteristics are concealed. The functions and macros are
+listed below; more information is available from the individual man pages.
+.PP
+A stream is associated with an external file (which may be a physical
+device) by
+.I opening
+a file, which may involve creating a new file. Creating an existing file
+causes its former contents to be discarded.  If a file can support
+positioning requests (such as a disk file, as opposed to a terminal) then a
+.I file position indicator
+associated with the stream is positioned at the start of the file (byte
+zero), unless the file is opened with append mode. If append mode is used,
+it is unspecified whether the position indicator will be placed at the
+start or the end of the file.  The position indicator is maintained by
+subsequent reads, writes and positioning requests. All input occurs
+as if the characters were read by successive calls to the
+.BR fgetc (3)
+function; all output takes place as if all characters were written by
+successive calls to the
+.BR fputc (3)
+function.
+.PP
+A file is disassociated from a stream by
+.I closing
+the file.  Output streams are flushed (any unwritten buffer contents are
+transferred to the host environment) before the stream is disassociated from
+the file.  The value of a pointer to a
+.B FILE
+object is indeterminate after a file is closed (garbage).
+.PP
+A file may be subsequently reopened, by the same or another program
+execution, and its contents reclaimed or modified (if it can be
+repositioned at the start).  If the main function returns to its original
+caller, or the
+.BR exit (3)
+function is called, all open files are closed (hence all output streams are
+flushed) before program termination.  Other methods of program termination,
+such as
+.BR abort (3)
+do not bother about closing files properly.
+.PP
+At program startup, three text streams are predefined and need not be
+opened explicitly \(em
+.I standard input 
+(for reading conventional input), \(em
+.I standard output 
+(for writing conventional input), and
+.I standard error
+(for writing diagnostic output).  These streams are abbreviated
+.IR stdin , stdout
+and
+.IR stderr .
+When opened, the standard error stream is not fully buffered; the standard
+input and output streams are fully buffered if and only if the streams do
+not to refer to an interactive device.
+.PP
+Output streams that refer to terminal devices are always line buffered by
+default; pending output to such streams is written automatically whenever
+an input stream that refers to a terminal device is read.  In cases where a
+large amount of computation is done after printing part of a line on an
+output terminal, it is necessary to
+.BR fflush (3)
+the standard output before going off and computing so that the output will
+appear.
+.PP
+The
+.B stdio
+library is a part of the library
+.B libc
+and routines are automatically loaded as needed by the compilers
+.BR cc (1)
+and
+.BR pc (1).
+The
+.B SYNOPSIS
+sections of the following manual pages indicate which include files are to
+be used, what the compiler declaration for the function looks like and
+which external variables are of interest.
+.PP
+The following are defined as macros; these names may not be re-used without
+first removing their current definitions with
+.BR #undef :
+.BR BUFSIZ ,
+.BR EOF ,
+.BR FILENAME_MAX ,
+.BR FOPEN_MAX ,
+.BR L_cuserid ,
+.BR L_ctermid ,
+.BR L_tmpnam,
+.BR NULL ,
+.BR SEEK_END ,
+.BR SEEK_SET ,
+.BR SEE_CUR ,
+.BR TMP_MAX ,
+.BR clearerr ,
+.BR feof ,
+.BR ferror ,
+.BR fileno ,
+.BR fropen ,
+.BR fwopen ,
+.BR getc ,
+.BR getchar ,
+.BR putc ,
+.BR putchar ,
+.BR stderr ,
+.BR stdin ,
+.BR stdout .
+Function versions of the macro functions
+.BR feof ,
+.BR ferror ,
+.BR clearerr ,
+.BR fileno ,
+.BR getc ,
+.BR getchar ,
+.BR putc ,
+and
+.B putchar
+exist and will be used if the macros definitions are explicitly removed.
+.SH "LIST OF FUNCTIONS"
+.TP 10n
+.B Function
+.B Description
+.TP
+.B clearerr
+check and reset stream status
+.TP
+.B fclose
+close a stream
+.TP
+.B fdopen
+stream open functions
+.TP
+.B feof
+check and reset stream status
+.TP
+.B ferror
+check and reset stream status
+.TP
+.B fflush
+flush a stream
+.TP
+.B fgetc
+get next character or word from input stream
+.\" .TP
+.\" .B fgetline
+.\" get a line from a stream (BSD only; renamed to fgetln())
+.TP
+.B fgetpos
+reposition a stream
+.TP
+.B fgets
+get a line from a stream
+.TP
+.B fileno
+return the integer descriptor of the argument stream
+.TP
+.B fopen
+stream open functions
+.TP
+.B fprintf
+formatted output conversion
+.TP
+.B fpurge
+flush a stream
+.TP
+.B fputc
+output a character or word to a stream
+.TP
+.B fputs
+output a line to a stream
+.TP
+.B fread
+binary stream input/output
+.TP
+.B freopen
+stream open functions
+.TP
+.B fropen
+open a stream
+.TP
+.B fscanf
+input format conversion
+.TP
+.B fseek
+reposition a stream
+.TP
+.B fsetpos
+reposition a stream
+.TP
+.B ftell
+reposition a stream
+.TP
+.B fwrite
+binary stream input/output
+.TP
+.B getc
+get next character or word from input stream
+.TP
+.B getchar
+get next character or word from input stream
+.TP
+.B gets
+get a line from a stream
+.TP
+.B getw
+get next character or word from input stream
+.TP
+.B mktemp
+make temporary file name (unique)
+.TP
+.B perror
+system error messages
+.TP
+.B printf
+formatted output conversion
+.TP
+.B putc
+output a character or word to a stream
+.TP
+.B putchar
+output a character or word to a stream
+.TP
+.B puts
+output a line to a stream
+.TP
+.B putw
+output a character or word to a stream
+.TP
+.B remove
+remove directory entry
+.TP
+.B rewind
+reposition a stream
+.TP
+.B scanf
+input format conversion
+.TP
+.B setbuf
+stream buffering operations
+.TP
+.B setbuffer
+stream buffering operations
+.TP
+.B setlinebuf
+stream buffering operations
+.TP
+.B setvbuf
+stream buffering operations
+.TP
+.B sprintf
+formatted output conversion
+.TP
+.B sscanf
+input format conversion
+.TP
+.B strerror
+system error messages
+.TP
+.B sys_errlist
+system error messages
+.TP
+.B sys_nerr
+system error messages
+.TP
+.B tempnam
+temporary file routines
+.TP
+.B tmpfile
+temporary file routines
+.TP
+.B tmpnam
+temporary file routines
+.TP
+.B ungetc
+un-get character from input stream
+.TP
+.B vfprintf
+formatted output conversion
+.TP
+.B vfscanf
+input format conversion
+.TP
+.B vprintf
+formatted output conversion
+.TP
+.B vscanf
+input format conversion
+.TP
+.B vsprintf
+formatted output conversion
+.TP
+.B vsscanf
+input format conversion
+.SH "CONFORMING TO"
+The
+.B stdio
+library conforms to ANSI X3.159-1989 (``ANSI C'').
+.SH "SEE ALSO"
+.BR open (2),
+.BR close (2),
+.BR read (2),
+.BR write (2),
+.BR stdout (3)
diff --git a/raw/man3/stdout.3 b/raw/man3/stdout.3
new file mode 100644
index 0000000..752ae27
--- /dev/null
+++ b/raw/man3/stdout.3
@@ -0,0 +1 @@
+.so man3/stdin.3
diff --git a/raw/man3/strcoll.3 b/raw/man3/strcoll.3
new file mode 100644
index 0000000..358aa42
--- /dev/null
+++ b/raw/man3/strcoll.3
@@ -0,0 +1,60 @@
+.\" Copyright 1993 David Metcalfe (david at prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sun Jul 25 10:40:44 1993 by Rik Faith (faith at cs.unc.edu)
+.TH STRCOLL 3  1993-04-12 "GNU" "Linux Programmer's Manual"
+.SH NAME
+strcoll \- compare two strings using the current locale
+.SH SYNOPSIS
+.nf
+.B #include <string.h>
+.sp
+.BI "int strcoll(const char *" s1 ", const char *" s2 );
+.fi
+.SH DESCRIPTION
+The \fBstrcoll()\fP function compares the two strings \fIs1\fP and
+\fIs2\fP.  It returns an integer less than, equal to, or greater 
+than zero if \fIs1\fP is found, respectively, to be less than, 
+to match, or be greater than \fIs2\fP.  The comparison is based on
+strings interpreted as appropriate for the program's current locale 
+for category \fILC_COLLATE\fP.  (See \fBsetlocale\fP(3)).
+.SH "RETURN VALUE"
+The \fBstrcoll()\fP function returns an integer less than, equal to, 
+or greater than zero if \fIs1\fP is found, respectively, to be less 
+than, to match, or be greater than \fIs2\fP, when both are interpreted
+as appropriate for the current locale.
+.SH "CONFORMING TO"
+SVID 3, BSD 4.3, ISO 9899
+.SH NOTES
+In the \fI"POSIX"\fP or \fI"C"\fP locales \fBstrcoll()\fP is equivalent to
+\fBstrcmp()\fP.
+.SH "SEE ALSO"
+.BR bcmp (3),
+.BR memcmp (3),
+.BR strcasecmp (3),
+.BR strcmp (3),
+.BR strxfrm (3),
+.BR setlocale (3)
diff --git a/raw/man3/strxfrm.3 b/raw/man3/strxfrm.3
new file mode 100644
index 0000000..916412c
--- /dev/null
+++ b/raw/man3/strxfrm.3
@@ -0,0 +1,61 @@
+.\" Copyright 1993 David Metcalfe (david at prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sun Jul 25 10:41:28 1993 by Rik Faith (faith at cs.unc.edu)
+.TH STRXFRM 3  1993-04-12 "GNU" "Linux Programmer's Manual"
+.SH NAME
+strxfrm \- string transformation
+.SH SYNOPSIS
+.nf
+.B #include <string.h>
+.sp
+.BI "size_t strxfrm(char *" dest ", const char *" src ", size_t " n );
+.fi
+.SH DESCRIPTION
+The \fBstrxfrm()\fP function transforms the \fIsrc\fP string into a
+form such that the result of \fBstrcmp()\fP on two strings that have
+been transformed with \fBstrxfrm()\fP is the same as the result of
+\fBstrcoll()\fP on the two strings before their transformation.  The
+first \fIn\fP characters of the transformed string are placed in
+\fIdest\fP.  The transformation is based on the program's current
+locale for category \fILC_COLLATE\fP.  (See \fBsetlocale\fP(3)).
+.SH "RETURN VALUE"
+The \fBstrxfrm()\fP function returns the number of bytes required to
+store the transformed string in \fIdest\fP excluding the terminating
+`\\0' character.  If the value returned is \fIn\fP or more, the
+contents of \fIdest\fP are indeterminate.
+.SH "CONFORMING TO"
+SVID 3, BSD 4.3, ISO 9899
+.SH NOTES
+In the \fI"POSIX"\fP or \fI"C"\fP locales \fBstrxfrm()\fP is equivalent to
+copying the string with \fBstrncpy()\fP.
+.SH "SEE ALSO"
+.BR bcmp (3),
+.BR memcmp (3),
+.BR strcasecmp (3),
+.BR strcmp (3),
+.BR strcoll (3),
+.BR setlocale (3)
diff --git a/raw/man3/ulimit.3 b/raw/man3/ulimit.3
new file mode 100644
index 0000000..684a7dd
--- /dev/null
+++ b/raw/man3/ulimit.3
@@ -0,0 +1,81 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1996 Andries Brouwer (aeb at cwi.nl)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Moved to man3, aeb, 980612
+.\"
+.TH ULIMIT 3 1998-06-12 "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+ulimit \- get and set user limits
+.SH SYNOPSIS
+.B #include <ulimit.h>
+.sp
+.BI "long ulimit(int " cmd ", long " newlimit );
+.SH DESCRIPTION
+Warning: This routine is obsolete. The include file is no longer
+provided by glibc.  Use getrlimit(2), setrlimit(2) and sysconf(3)
+instead.
+For the shell command
+.BR ulimit ,
+see
+.BR bash (1).
+
+The
+.B ulimit
+call will get or set some limit for the current process.
+The
+.I cmd
+argument can have one of the following values.
+.TP
+.B UL_GETFSIZE 
+Return the limit on the size of a file, in units of 512 bytes.
+.TP
+.B UL_SETFSIZE
+Set the limit on the size of a file.
+.TP
+.B 3
+(Not implemented for Linux.)
+Return the maximum possible address of the data segment.
+.TP
+.B 4
+(Implemented but no symbolic constant provided.)
+Return the maximum number of files that the calling process can open.
+
+.SH "RETURN VALUE"
+On success,
+.B ulimit
+returns a nonnegative value.
+On error, \-1 is returned, and
+.I errno
+is set appropriately.
+.SH ERRORS
+.TP
+.B EPERM
+A non-root process tried to increase a limit.
+.SH "CONFORMING TO"
+SVID.
+.SH "SEE ALSO"
+.BR bash (1),
+.BR getrlimit (2),
+.BR setrlimit (2),
+.BR sysconf (3)
diff --git a/raw/man3/unlocked_stdio.3 b/raw/man3/unlocked_stdio.3
new file mode 100644
index 0000000..53fa32f
--- /dev/null
+++ b/raw/man3/unlocked_stdio.3
@@ -0,0 +1,94 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb at cwi.nl>.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH UNLOCKED_STDIO 3  2001-10-18 "" "Linux Programmer's Manual"
+.SH NAME
+*_unlocked \- non-locking stdio functions
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.sp
+.BI "int getc_unlocked(FILE *" stream );
+.BI "int getchar_unlocked(void);"
+.BI "int putc_unlocked(int " c ", FILE *" stream );
+.BI "int putchar_unlocked(int " c );
+.sp
+.BR "#define _BSD_SOURCE" " /* or _SVID_SOURCE or _GNU_SOURCE */
+.B #include <stdio.h>
+.sp
+.BI "void clearerr_unlocked(FILE *" stream );
+.BI "int feof_unlocked(FILE *" stream );
+.BI "int ferror_unlocked(FILE *" stream );
+.BI "int fileno_unlocked(FILE *" stream );
+.BI "int fflush_unlocked(FILE *" stream );
+.BI "int fgetc_unlocked(FILE *" stream );
+.BI "int fputc_unlocked(int " c ", FILE *" stream );
+.BI "size_t fread_unlocked(void *" ptr ", size_t " size ", size_t " n ,
+.BI "  FILE *" stream );
+.BI "size_t fwrite_unlocked(const void *" ptr ", size_t " size ", size_t " n ,
+.BI "  FILE *" stream );
+.sp
+.B #define _GNU_SOURCE
+.B #include <stdio.h>
+.sp
+.BI "char *fgets_unlocked(char *" s ", int " n ", FILE *" stream );
+.BI "int fputs_unlocked(const char *" s ", FILE *" stream );
+.sp
+.B #define _GNU_SOURCE
+.B #include <wchar.h>
+.sp
+.BI "wint_t getwc_unlocked(FILE *" stream );
+.BI "wint_t getwchar_unlocked(void);"
+.BI "wint_t fgetwc_unlocked(FILE *" stream );
+.BI "wint_t fputwc_unlocked(wchar_t " wc ", FILE *" stream );
+.BI "wint_t putwc_unlocked(wchar_t " wc ", FILE *" stream );
+.BI "wint_t putwchar_unlocked(wchar_t " wc );
+.BI "wchar_t *fgetws_unlocked(wchar_t *" ws ", int " n ", FILE *" stream );
+.BI "int fputws_unlocked(const wchar_t *" ws ", FILE *" stream );
+.fi
+.SH DESCRIPTION
+Each of these functions has the same behaviour as its counterpart
+without the `_unlocked' suffix, except that they do not use locking
+(they do not set locks themselves, and do not test for the presence
+of locks set by others) and hence are thread-unsafe.
+See
+.BR flockfile (3).
+.SH "CONFORMING TO"
+The four functions \fIgetc_unlocked\fP(), \fIgetchar_unlocked\fP(),
+\fIputc_unlocked\fP(), \fIputchar_unlocked\fP() are in POSIX.1.
+The nonstandard
+.BR *_unlocked()
+variants occur on a few Unix systems, and are available in recent glibc.
+.\" E.g., in HPUX 10.0. In HPUX 10.30 they are called obsolescent, and
+.\" moved to a compatibility library.
+.\" Available in HPUX 10.0: clearerr_unlocked, fclose_unlocked,
+.\" feof_unlocked, ferror_unlocked, fflush_unlocked, fgets_unlocked,
+.\" fgetwc_unlocked, fgetws_unlocked, fileno_unlocked, fputs_unlocked,
+.\" fputwc_unlocked, fputws_unlocked, fread_unlocked, fseek_unlocked,
+.\" ftell_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
+.\" getw_unlocked, getwc_unlocked, getwchar_unlocked, putc_unlocked,
+.\" putchar_unlocked, puts_unlocked, putws_unlocked, putw_unlocked,
+.\" putwc_unlocked, putwchar_unlocked, rewind_unlocked, setvbuf_unlocked,
+.\" ungetc_unlocked, ungetwc_unlocked.
+They should probably not be used.
+.SH "SEE ALSO"
+.BR flockfile (3)
diff --git a/raw/man4/console_codes.4 b/raw/man4/console_codes.4
new file mode 100644
index 0000000..7b8fbf3
--- /dev/null
+++ b/raw/man4/console_codes.4
@@ -0,0 +1,527 @@
+'\" t
+.\" Copyright (c) 1996 Andries Brouwer <aeb at cwi.nl>, Mon Oct 31 22:13:04 1996
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" This is combined from many sources.
+.\" For Linux, the definitive source is of course console.c.
+.\" About vt100-like escape sequences in general there are
+.\" the ISO 6429 and ISO 2022 norms, the descriptions of
+.\" an actual vt100, and the xterm docs (ctlseqs.ms).
+.\" Substantial portions of this text are derived from a write-up
+.\" by Eric S. Raymond <esr at thyrsus.com>.
+.\"
+.\" Tiny correction, aeb, 961107.
+.\"
+.TH CONSOLE_CODES 4 1996-10-31 "Linux" "Linux Programmer's Manual"
+.SH NAME
+console_codes \- Linux console escape and control sequences
+.SH DESCRIPTION
+The Linux console implements a large subset of the VT102 and ECMA-48/ISO
+6429/ANSI X3.64 terminal controls, plus certain private-mode sequences
+for changing the color palette, character-set mapping, etc.
+In the tabular descriptions below, the second column gives ECMA-48 or DEC
+mnemonics (the latter if prefixed with DEC) for the given function.
+Sequences without a mnemonic are neither ECMA-48 nor VT102.
+.LP
+After all the normal output processing has been done, and a
+stream of characters arrives at the console driver for actual
+printing, the first thing that happens is a translation from
+the code used for processing to the code used for printing.
+.LP
+If the console is in UTF-8 mode, then the incoming bytes are
+first assembled into 16-bit Unicode codes.  Otherwise
+each byte is transformed according to the current mapping table
+(which translates it to a Unicode value).  See the CHARACTER SETS
+section below for discussion.
+.LP
+In the normal case, the Unicode value is converted to a font index,
+and this is stored in video memory, so that the corresponding glyph
+(as found in video ROM) appears on the screen.
+Note that the use of Unicode (and the design of the PC hardware)
+allows us to use 512 different glyphs simultaneously.
+.LP
+If the current Unicode value is a control character, or we are
+currently processing an escape sequence, the value will treated
+specially.  Instead of being turned into a font index and rendered as
+a glyph, it may trigger cursor movement or other control functions.
+See the LINUX CONSOLE CONTROLS section below for discussion.
+.LP
+It is generally not good practice to hard-wire terminal controls into
+programs.  Linux supports a 
+.BR terminfo (5)
+database of terminal capabilities.  
+Rather than emitting console escape sequences by hand, you will almost
+always want to use a terminfo-aware screen library or utility such as
+.BR ncurses (3),
+.BR tput (1), 
+or
+.BR reset (1).
+
+.SH "LINUX CONSOLE CONTROLS"
+
+This section describes all the control characters and escape sequences
+that invoke special functions (i.e. anything other than writing a
+glyph at the current cursor location) on the Linux console. 
+.SS "Control characters"
+A character is a control character if (before transformation
+according to the mapping table) it has one of the 14 codes
+00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a (LF), 0b (VT),
+0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB),
+1b (ESC), 7f (DEL).
+One can set a `display control characters' mode (see below),
+and allow 07, 09, 0b, 18, 1a, 7f to be displayed as glyphs.
+On the other hand, in UTF-8 mode all codes 00-1f are regarded
+as control characters, regardless of any `display control characters'
+mode.
+
+If we have a control character, it is acted upon immediately
+and then discarded (even in the middle of an escape sequence)
+and the escape sequence continues with the next character.
+(However, ESC starts a new escape sequence, possibly aborting a previous
+unfinished one, and CAN and SUB abort any escape sequence.)
+The recognized control characters are BEL, BS, HT, LF, VT, FF,
+CR, SO, SI, CAN, SUB, ESC, DEL, CSI. They do what one would expect:
+.HP
+BEL (0x07, ^G) beeps;
+.HP
+BS (0x08, ^H) backspaces one column
+(but not past the beginning of the line);
+.HP
+HT (0x09, ^I) goes to the next tab stop or to the end of the line
+if there is no earlier tab stop;
+.HP
+LF (0x0A, ^J), VT (0x0B, ^K) and FF (0x0C, ^L) all give a linefeed;
+.HP
+CR (0x0D, ^M) gives a carriage return;
+.HP
+SO (0x0E, ^N) activates the G1 character set,
+and if LF/NL (new line mode) is set also a carriage return;
+.HP
+SI (0x0F, ^O) activates the G0 character set;
+.HP
+CAN (0x18, ^X) and SUB (0x1A, ^Z) interrupt escape sequences;
+.HP
+ESC (0x1B, ^[) starts an escape sequence;
+.HP
+DEL (0x7F) is ignored;
+.HP
+CSI (0x9B) is equivalent to ESC [.
+.\" .LP
+.SS "ESC- but not CSI-sequences"
+.TS
+l l l.
+ESC c	RIS	Reset.
+ESC D	IND	Linefeed.
+ESC E	NEL	Newline.
+ESC H	HTS	Set tab stop at current column.
+ESC M	RI	Reverse linefeed.
+ESC Z	DECID	DEC private identification. The kernel
+		returns the string  ESC [ ? 6 c, claiming
+		that it is a VT102.
+ESC 7	DECSC	Save current state (cursor coordinates,
+		attributes, character sets pointed at by G0, G1).
+ESC 8	DECRC	Restore state most recently saved by ESC 7.
+ESC [	CSI	Control sequence introducer
+ESC %		Start sequence selecting character set
+ESC % @		\0\0\0Select default (ISO 646 / ISO 8859-1)
+ESC % G		\0\0\0Select UTF-8
+ESC % 8		\0\0\0Select UTF-8 (obsolete)
+ESC # 8	DECALN	DEC screen alignment test - fill screen with E's.
+ESC (		Start sequence defining G0 character set
+ESC ( B		\0\0\0Select default (ISO 8859-1 mapping)
+ESC ( 0		\0\0\0Select vt100 graphics mapping
+ESC ( U		\0\0\0Select null mapping - straight to character ROM
+ESC ( K		\0\0\0Select user mapping - the map that is loaded by
+		\0\0\0the utility \fBmapscrn\fP(8).
+ESC )		Start sequence defining G1
+		(followed by one of B, 0, U, K, as above).
+ESC >	DECPNM	Set numeric keypad mode
+ESC =	DECPAM	Set application keypad mode
+ESC ]	OSC	(Should be: Operating system command)
+		ESC ] P \fInrrggbb\fP: set palette, with parameter
+		given in 7 hexadecimal digits after the final P :-(.
+		Here \fIn\fP is the color (0-15), and \fIrrggbb\fP indicates
+		the red/green/blue values (0-255). 
+		ESC ] R: reset palette
+.TE
+.SS "ECMA-48 CSI sequences"
+
+CSI (or ESC [) is followed by a sequence of parameters,
+at most NPAR (16), that are decimal numbers separated by
+semicolons. An empty or absent parameter is taken to be 0.
+The sequence of parameters may be preceded by a single question mark.
+
+However, after CSI [ (or ESC [ [) a single character is read
+and this entire sequence is ignored. (The idea is to ignore
+an echoed function key.)
+
+The action of a CSI sequence is determined by its final character.
+
+.TS
+l l l.
+@	ICH	Insert the indicated # of blank characters.
+A	CUU	Move cursor up the indicated # of rows.
+B	CUD	Move cursor down the indicated # of rows.
+C	CUF	Move cursor right the indicated # of columns.
+D	CUB	Move cursor left the indicated # of columns.
+E	CNL	Move cursor down the indicated # of rows, to column 1.
+F	CPL	Move cursor up the indicated # of rows, to column 1.
+G	CHA	Move cursor to indicated column in current row.
+H	CUP	Move cursor to the indicated row, column (origin at 1,1).
+J	ED	Erase display (default: from cursor to end of display).
+		ESC [ 1 J: erase from start to cursor.
+		ESC [ 2 J: erase whole display.
+K	EL	Erase line (default: from cursor to end of line).
+		ESC [ 1 K: erase from start of line to cursor.
+		ESC [ 2 K: erase whole line.
+L	IL	Insert the indicated # of blank lines.
+M	DL	Delete the indicated # of lines.
+P	DCH	Delete the indicated # of characters on the current line.
+X	ECH	Erase the indicated # of characters on the current line.
+a	HPR	Move cursor right the indicated # of columns.
+c	DA	Answer ESC [ ? 6 c: `I am a VT102'.
+d	VPA	Move cursor to the indicated row, current column.
+e	VPR	Move cursor down the indicated # of rows.
+f	HVP	Move cursor to the indicated row, column.
+g	TBC	Without parameter: clear tab stop at the current position.
+		ESC [ 3 g: delete all tab stops.
+h	SM	Set Mode (see below).
+l	RM	Reset Mode (see below).
+m	SGR	Set attributes (see below).
+n	DSR	Status report (see below).
+q	DECLL	Set keyboard LEDs.
+		ESC [ 0 q: clear all LEDs
+		ESC [ 1 q: set Scroll Lock LED
+		ESC [ 2 q: set Num Lock LED
+		ESC [ 3 q: set Caps Lock LED
+r	DECSTBM	Set scrolling region; parameters are top and bottom row.
+s	?	Save cursor location.
+u	?	Restore cursor location.
+`	HPA	Move cursor to indicated column in current row.
+.TE
+.SS ECMA-48 Set Graphics Rendition
+
+The ECMA-48 SGR sequence ESC [ <parameters> m sets display attributes.
+Several attributes can be set in the same sequence.
+.LP
+.TS
+l l.
+par	result
+0	reset all attributes to their defaults
+1	set bold
+2	set half-bright (simulated with color on a color display)
+4	set underscore (simulated with color on a color display)
+	(the colors used to simulate dim or underline are set
+	using ESC ] ...)
+5	set blink
+7	set reverse video
+10	reset selected mapping, display control flag,
+	and toggle meta flag.
+11	select null mapping, set display control flag,
+	reset toggle meta flag.
+12	select null mapping, set display control flag,
+	set toggle meta flag. (The toggle meta flag
+	causes the high bit of a byte to be toggled
+	before the mapping table translation is done.)
+21	set normal intensity (this is not compatible with ECMA-48)
+22	set normal intensity
+24	underline off
+25	blink off
+27	reverse video off
+30	set black foreground
+31	set red foreground
+32	set green foreground
+33	set brown foreground
+34	set blue foreground
+35	set magenta foreground
+36	set cyan foreground
+37	set white foreground
+38	set underscore on, set default foreground color
+39	set underscore off, set default foreground color
+40	set black background
+41	set red background
+42	set green background
+43	set brown background
+44	set blue background
+45	set magenta background
+46	set cyan background
+47	set white background
+49	set default background color
+.TE
+.SS ECMA-48 Mode Switches
+.TP
+ESC [ 3 h
+DECCRM (default off): Display control chars.
+.TP
+ESC [ 4 h
+DECIM (default off): Set insert mode.
+.TP
+ESC [ 20 h
+LF/NL (default off): Automatically follow echo of LF, VT or FF with CR.
+.\"
+.SS ECMA-48 Status Report Commands
+.\"
+.TP
+ESC [ 5 n
+Device status report (DSR): Answer is ESC [ 0 n (Terminal OK).
+.TP
+ESC [ 6 n
+Cursor position report (CPR): Answer is ESC [ \fIy\fP ; \fIx\fP R,
+where \fIx,y\fP is the cursor location.
+.\"
+.SS DEC Private Mode (DECSET/DECRST) sequences.
+.\"
+These are not described in ECMA-48.  We list the Set Mode sequences;
+the Reset Mode sequences are obtained by replacing the final `h'
+by `l'.
+.TP
+ESC [ ? 1 h
+DECCKM (default off): When set, the cursor keys send an ESC O prefix,
+rather than ESC [.
+.TP
+ESC [ ? 3 h
+DECCOLM (default off = 80 columns): 80/132 col mode switch.  The
+driver sources note that this alone does not suffice; some user-mode
+utility such as
+.BR resizecons (8)
+has to change the hardware registers on the console video card.
+.TP
+ESC [ ? 5 h
+DECSCNM (default off): Set reverse-video mode.
+.TP
+ESC [ ? 6 h
+DECOM (default off): When set, cursor addressing is relative to
+the upper left corner of the scrolling region.
+.TP
+ESC [ ? 7 h
+DECAWM (default on): Set autowrap on.  In this mode, a graphic
+character emitted after column 80 (or column 132 of DECCOLM is on)
+forces a wrap to the beginning of the following line first.
+.TP
+ESC [ ? 8 h
+DECARM (default on): Set keyboard autorepreat on.
+.TP
+ESC [ ? 9 h
+X10 Mouse Reporting (default off): Set reporting mode to 1 (or reset to
+0) \- see below.
+.TP
+ESC [ ? 25 h
+DECCM (default on): Make cursor visible.
+.TP
+ESC [ ? 1000 h
+X11 Mouse Reporting (default off): Set reporting mode to 2 (or reset
+to 0) \- see below.
+.\"
+.SS Linux Console Private CSI Sequences
+.\"
+The following sequences are neither ECMA-48 nor native VT102.  They
+are native to the Linux console driver.  Colors are in SGR parameters:
+0 = black, 1 = red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 =
+cyan, 7 = white.
+
+.TS
+l l.
+ESC [ 1 ; \fIn\fP ]	Set color \fIn\fP as the underline color
+ESC [ 2 ; \fIn\fP ]	Set color \fIn\fP as the dim color
+ESC [ 8 ]       	Make the current color pair the default attributes.
+ESC [ 9 ; \fIn\fP ]	Set screen blank timeout to \fIn\fP minutes.
+ESC [ 10 ; \fIn\fP ]	Set bell frequency in Hz.
+ESC [ 11 ; \fIn\fP ]	Set bell duration in msec.
+ESC [ 12 ; \fIn\fP ]	Bring specified console to the front.
+ESC [ 13 ]      	Unblank the screen.
+ESC [ 14 ; \fIn\fP ]   	Set the VESA powerdown interval in minutes.
+.TE
+
+.SH "CHARACTER SETS"
+
+The kernel knows about 4 translations of bytes into console-screen symbols.
+The four tables are: a) Latin1 -> PC,  b) VT100 graphics -> PC, c) PC -> PC,
+d) user-defined.
+
+There are two character sets, called G0 and G1, and one of them
+is the current character set. (Initially G0.)
+Typing ^N causes G1 to become current, ^O causes G0 to become current.
+
+These variables G0 and G1 point at a translation table, and can be changed
+by the user. Initially they point at tables a) and b), respectively.
+The sequences ESC ( B and ESC ( 0 and ESC ( U and ESC ( K cause G0 to point
+at translation table a), b), c) and d), respectively.
+The sequences ESC ) B and ESC ) 0 and ESC ) U and ESC ) K cause G1 to point
+at translation table a), b), c) and d), respectively.
+
+The sequence ESC c causes a terminal reset, which is what you want if the
+screen is all garbled. The oft-advised "echo ^V^O" will only make G0 current,
+but there is no guarantee that G0 points at table a).
+In some distributions there is a program
+.BR reset (1)
+that just does "echo ^[c".
+If your terminfo entry for the console is correct (and has an entry rs1=\\Ec),
+then "tput reset" will also work.
+
+The user-defined mapping table can be set using
+.BR mapscrn (8).
+The result of the mapping is that if a symbol c is printed, the symbol
+s = map[c] is sent to the video memory. The bitmap that corresponds to
+s is found in the character ROM, and can be changed using
+.BR setfont(8).
+
+.SH "MOUSE TRACKING"
+
+The mouse tracking facility is intended to return xterm-compatible
+mouse status reports.  Because the console driver has no way to know
+the device or type of the mouse, these reports are returned in the 
+console input stream only when the virtual terminal driver receives 
+a mouse update ioctl.  These ioctls must be generated by a mouse-aware
+user-mode application such as the \fBgpm(8)\fR daemon.
+
+Parameters for all mouse tracking escape sequences generated by
+\fIxterm\fP encode numeric parameters in a single character as
+\fIvalue\fP+040.  For example, `!' is 1.  The screen
+coordinate system is 1-based.
+
+The X10 compatibility mode sends an escape sequence on button press
+encoding the location and the mouse button pressed.
+It is enabled by sending ESC [ ? 9 h and disabled with ESC [ ? 9 l.
+On button press, \fIxterm\fP sends
+ESC [ M \fIbxy\fP (6 characters).  Here \fIb\fP is button\-1,
+and \fIx\fP and \fIy\fP are the x and y coordinates of the mouse
+when the button was pressed.
+This is the same code the kernel also produces.
+
+Normal tracking mode (not implemented in Linux 2.0.24) sends an escape
+sequence on both button press and release.  Modifier information is
+also sent.  It is enabled by sending ESC [ ? 1000 h and disabled with
+ESC [ 1000 l.  On button press or release, \fIxterm\fP sends ESC [ M
+\fIbxy\fP.  The low two bits of \fIb\fP encode button information:
+0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release.  The upper
+bits encode what modifiers were down when the button was pressed and
+are added together: 4=Shift, 8=Meta, 16=Control.  Again \fIx\fP and
+\fIy\fP are the x and y coordinates of the mouse event.  The upper
+left corner is (1,1).
+
+.SH "COMPARISONS WITH OTHER TERMINALS"
+
+Many different terminal types are described, like the Linux console,
+as being `VT100-compatible'.  Here we discuss differences vbetween the
+Linux console an the two most important others, the DEC VT102 and
+.BR xterm (1).
+.\"
+.SS Control-character handling
+The vt102 also recognized the following control characters:
+.HP
+NUL (0x00) was ignored;
+.HP
+ENQ (0x05) triggered an answerback message;
+.HP
+DC1 (0x11, ^Q, XON) resumed transmission;
+.HP
+DC3 (0x13, ^S, XOFF) caused vt100 to ignore (and stop transmitting)
+all codes except XOFF and XON.
+.LP
+VT100-like DC1/DC3 processing may be enabled by the tty driver.
+.LP
+The 
+.I xterm
+program (in vt100 mode) recognizes the control characters 
+BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC.
+.\"
+.SS Escape sequences
+VT100 console sequences not implemented on the Linux console:
+.LP
+.TS
+l l l.
+ESC N	SS2	Single shift 2. (Select G2 character set for the next
+		character only.)
+ESC O	SS3	Single shift 3. (Select G3 character set for the next
+		character only.)
+ESC P	DCS	Device control string (ended by ESC \e)
+ESC X	SOS	Start of string.
+ESC ^	PM	Privacy message (ended by ESC \e)
+ESC \e	ST	String terminator
+ESC * ...		Designate G2 character set
+ESC + ...		Designate G3 character set
+.TE
+
+The program
+.I xterm
+(in vt100 mode) recognizes ESC c, ESC # 8, ESC >, ESC =,
+ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \,
+ESC Z (it answers ESC [ ? 1 ; 2 c, `I am a vt100 with advanced video option')
+and ESC ^ ... ESC \ with the same meanings as indicated above.
+It accepts ESC (, ESC ), ESC *,  ESC + followed by 0, A, B for
+the DEC special character and line drawing set, UK, and USASCII,
+respectively.
+It accepts ESC ] for the setting of certain resources:
+.LP
+.TS
+l l.
+ESC ] 0 ; txt BEL	Set icon name and window title to txt.
+ESC ] 1 ; txt BEL	Set icon name to txt.
+ESC ] 2 ; txt BEL	Set window title to txt.
+ESC ] 4 6 ; name BEL	Change log file to name (normally disabled
+	by a compile-time option)
+ESC ] 5 0 ; fn BEL	Set font to fn.
+.TE
+
+It recognizes the following with slightly modified meaning:
+.LP
+.TS
+l l l.
+ESC 7  DECSC	Save cursor
+ESC 8  DECRC	Restore cursor
+.TE
+
+It also recognizes
+.LP
+.TS
+l l l.
+ESC F		Cursor to lower left corner of screen (if enabled by
+		the hpLowerleftBugCompat resource)
+ESC l		Memory lock (per HP terminals).
+		Locks memory above the cursor.
+ESC m		Memory unlock (per HP terminals).
+ESC n	LS2	Invoke the G2 character set.
+ESC o	LS3	Invoke the G3 character set.
+ESC |	LS3R	Invoke the G3 character set as GR.
+		Has no visible effect in xterm.
+ESC }	LS2R	Invoke the G2 character set as GR.
+		Has no visible effect in xterm.
+ESC ~	LS1R	Invoke the G1 character set as GR.
+		Has no visible effect in xterm.
+.TE
+
+It does not recognize ESC % ...
+.\"
+.SS CSI Sequences
+The 
+.I xterm
+program (as of XFree86 3.1.2G) does not recognize the blink or invisible-mode 
+SGRs. Stock X11R6 versions do not recognize the color-setting SGRs.
+All other ECMA-48 CSI sequences recognized by Linux are also recognized by
+.IR xterm ,
+and vice-versa.
+
+The 
+.I xterm
+program will recognize all of the DEC Private Mode sequences listed
+above, but none of the Linux private-mode sequences.  For discussion
+of 
+.IR xterm 's
+own private-mode sequences, refer to the
+.I Xterm Control Sequences
+document by Edward Moy and Stephen Gildea, available with the X 
+distribution.
+
+.SH BUGS
+
+In 2.0.23, CSI is broken, and NUL is not ignored inside escape sequences.
+
+.SH "SEE ALSO"
+.BR console (4),
+.BR console_ioctl (4),
+.BR charsets (7)
+
diff --git a/raw/man4/fifo.4 b/raw/man4/fifo.4
new file mode 100644
index 0000000..006ed87
--- /dev/null
+++ b/raw/man4/fifo.4
@@ -0,0 +1,57 @@
+.\" This man page is Copyright (C) 1999 Claus Fischer.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" 
+.\" 990620 - page created - aeb at cwi.nl
+.\"
+.TH FIFO 4 1999-06-20 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+fifo \- first-in first-out special file, named pipe
+.SH DESCRIPTION
+A FIFO special file (a named pipe) is similar to a pipe,
+except that it is accessed as part of the file system.
+It can be opened by multiple processes for reading or
+writing. When processes are exchanging data via the FIFO,
+the kernel passes all data internally without writing it
+to the file system. Thus, the FIFO special file has no
+contents on the file system, the file system entry merely
+serves as a reference point so that processes can access
+the pipe using a name in the file system.
+.PP
+The kernel maintains exactly one pipe object for each
+FIFO special file that is opened by at least one process.
+The FIFO must be opened on both ends (reading and writing)
+before data can be passed. Normally, opening the FIFO blocks
+until the other end is opened also.
+.PP
+A process can open a FIFO in non-blocking mode. In this
+case, opening for read only will succeed even if noone has
+opened on the write side yet; opening for write only will
+fail with ENXIO (no such device or address) unless the other
+end has already been opened.
+.PP
+Under Linux, opening a FIFO for read and write will succeed
+both in blocking and non-blocking mode. POSIX leaves this
+behaviour undefined. This can be used to open a FIFO for
+writing while there are no readers available. A process
+that uses both ends of the connection in order to communicate
+with itself should be very careful to avoid deadlocks.
+.SH NOTES
+When a process tries to write to a FIFO that is not opened
+for read on the other side, the process is sent a SIGPIPE
+signal.
+
+FIFO special files can be created by
+.BR mkfifo (3),
+and are specially indicated in
+.IR "ls -l" .
+.SH "SEE ALSO"
+.BR mkfifo (3),
+.BR mkfifo (1),
+.BR pipe (2),
+.BR socketpair (2),
+.BR open (2),
+.BR signal (2),
+.BR sigaction (2)
diff --git a/raw/man4/hd.4 b/raw/man4/hd.4
new file mode 100644
index 0000000..8de8e4c
--- /dev/null
+++ b/raw/man4/hd.4
@@ -0,0 +1,97 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sat Jul 24 16:56:20 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 21:38:51 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" (and some more by aeb)
+.\"
+.TH HD 4 1992-12-17 "Linux" "Linux Programmer's Manual"
+.SH NAME
+hd \- MFM/IDE hard disk devices
+.SH DESCRIPTION
+The \fBhd*\fP devices are block devices to access MFM/IDE hard disk drives
+in raw mode.  The master drive on the primary IDE controller (major device
+number 3) is \fBhda\fR; the slave drive is \fBhdb\fR.  The master
+drive of the second controller (major device number 22) is \fBhdc\fR
+and the slave \fBhdd\fR.
+.LP
+General IDE block device names have the form
+.BI hd X\c
+, or
+.BI hd XP\c
+, where
+.I X
+is a letter denoting the physical drive, and
+.I P
+is a number denoting the partition on that physical drive.
+The first form,
+.BI hd X,
+is used to address the whole drive.
+Partition numbers are assigned in the order the partitions
+are discovered, and only non-empty, non-extended partitions
+get a number. However, partition numbers 1-4 are given to the
+four partitions described in the MBR (the `primary' partitions),
+regardless of whether they are unused or extended.
+Thus, the first logical partition will be
+.BI hd X 5\c
+\&.
+Both DOS-type partitioning and BSD-disklabel partitioning are supported.
+You can have at most 63 partitions on an IDE disk.
+.LP
+For example,
+.B /dev/hda
+refers to all of the first IDE drive in the system; and
+.B /dev/hdb3
+refers to the third DOS `primary' partition on the second one.
+.LP
+They are typically created by:
+.RS
+.sp
+mknod -m 660 /dev/hda b 3 0
+.br
+mknod -m 660 /dev/hda1 b 3 1
+.br
+mknod -m 660 /dev/hda2 b 3 2
+.br
+\&...
+.br
+mknod -m 660 /dev/hda8 b 3 8
+.br
+mknod -m 660 /dev/hdb b 3 64
+.br
+mknod -m 660 /dev/hdb1 b 3 65
+.br
+mknod -m 660 /dev/hdb2 b 3 66
+.br
+\&...
+.br
+mknod -m 660 /dev/hdb8 b 3 72
+.br
+chown root:disk /dev/hd*
+.RE
+.SH FILES
+/dev/hd*
+.SH "SEE ALSO"
+.BR mknod (1),
+.BR chown (1),
+.BR mount (8),
+.BR sd (4)
diff --git a/raw/man5/acct.5 b/raw/man5/acct.5
new file mode 100644
index 0000000..4e62eae
--- /dev/null
+++ b/raw/man5/acct.5
@@ -0,0 +1,40 @@
+.\" Copyright (c) 1995 Dirk Eddelbuettel (Dirk.Eddelbuettel at qed.econ.queensu.ca)
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.TH ACCT 5 1995-10-31 "Debian GNU/Linux"
+.SH NAME
+acct \- execution accounting file
+.SH SYNOPSIS
+.B #include <sys/acct.h>
+.SH DESCRIPTION
+The kernel maintains an accounting information structure for all
+processes. If a process terminates, and accounting is enabled, the kernel
+calls the
+.BR acct (2)
+function to prepare, and then append, a record for this process
+to the accounting file. The accounting structure
+.B "struct acct"
+is also described in the file
+.IR /usr/include/linux/acct.h .
+.SH "SEE ALSO"
+.BR acct (2),
+.BR sa (1)
diff --git a/raw/man5/aliases.5 b/raw/man5/aliases.5
new file mode 100644
index 0000000..6b3f7ef
--- /dev/null
+++ b/raw/man5/aliases.5
@@ -0,0 +1,120 @@
+.\" Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers.
+.\"	 All rights reserved.
+.\" Copyright (c) 1983, 1997 Eric P. Allman.  All rights reserved.
+.\" Copyright (c) 1985, 1991, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\"     $Id: aliases.5,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.\"
+.TH ALIASES 5 "$Date: 2003/12/20 03:31:53 $"
+.SH NAME
+aliases
+\- aliases file for sendmail
+.SH SYNOPSIS
+.B aliases
+.SH DESCRIPTION
+This file describes user 
+ID 
+aliases used by 
+sendmail.
+The file resides in 
+/etc/mail 
+and 
+is formatted as a series of lines of the form
+.IP
+name: addr_1, addr_2, addr_3, . . .
+.PP
+The
+.I name
+is the name to alias, and the
+.I addr_n
+are the aliases for that name.  
+.I addr_n
+can be another alias, a local username, a local filename,
+a command,
+an include file,
+or an external address.
+.TP
+.B Local Username
+username
+.IP
+The username must be available via getpwnam(3).
+.TP
+.B Local Filename
+/path/name
+.IP
+Messages are appended to the file specified by the full pathname
+(starting with a slash (/))
+.TP
+.B Command
+|command
+.IP
+A command starts with a pipe symbol (|),
+it receives messages via standard input.
+.TP
+.B Include File
+:include: /path/name
+.IP
+The aliases in pathname are added to the aliases for
+.I name.
+.TP
+.B E-Mail Address
+user at domain
+.IP
+An e-mail address in RFC 822 format.
+.PP
+Lines beginning with white space are continuation lines.  
+Another way to continue lines is by placing a backslash 
+directly before a newline.  
+Lines beginning with 
+# 
+are comments.
+.PP
+Aliasing occurs only on local names.  
+Loops can not occur, since no message will be sent to any person more than once.
+.PP
+After aliasing has been done, local and valid recipients who have a 
+``.forward'' 
+file in their home directory have messages forwarded to the 
+list of users defined in that file.
+.PP
+This is only the raw data file; the actual aliasing information is
+placed into a binary format in the file 
+/etc/mail/aliases.db
+using the program 
+newaliases(1).  
+A 
+newaliases
+command should be executed each time the aliases file is changed for the 
+change to take effect.
+.SH SEE  ALSO
+newaliases(1), 
+dbm(3), 
+dbopen(3), 
+db_open(3), 
+sendmail(8)
+.PP
+.I
+SENDMAIL Installation and Operation Guide.
+.PP
+.I 
+SENDMAIL An Internetwork Mail Router.
+.SH BUGS
+If you have compiled 
+sendmail 
+with DBM support instead of NEWDB,
+you may have encountered problems in 
+dbm(3) 
+restricting a single alias to about 1000 bytes of information.  
+You can get longer aliases by ``chaining''; that is, make the last name in 
+the alias be a dummy name which is a continuation alias.
+.SH HISTORY
+The
+.B aliases
+file format appeared in 
+4.0BSD.
diff --git a/raw/man5/environ.5 b/raw/man5/environ.5
new file mode 100644
index 0000000..88c3914
--- /dev/null
+++ b/raw/man5/environ.5
@@ -0,0 +1,221 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de),
+.\"   Fri Apr  2 11:32:09 MET DST 1993
+.\" and Andries Brouwer (aeb at cwi.nl), Fri Feb 14 21:47:50 1997.
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sun Jul 25 10:45:30 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Mon Oct 21 17:47:19 1996 by Eric S. Raymond (esr at thyrsus.com)
+.\" Modified Wed Aug 27 20:28:58 1997 by Nicol?s Lichtmaier (nick at debian.org)
+.\" Modified Mon Sep 21 00:00:26 1998 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Wed Jan 24 06:37:24 2001 by Eric S. Raymond (esr at thyrsus.com)
+.\" Modified Thu Dec 13 23:53:27 2001 by Martin Schulze <joey at infodrom.org>
+.\"
+.TH ENVIRON 5 2001-12-14 "Linux" "Linux Programmer's Manual"
+.SH NAME
+environ \- user environment
+.SH SYNOPSIS
+.ad l
+.nf
+.B extern char **environ;
+.br
+.fi
+.ad b
+.SH DESCRIPTION
+The variable
+.I environ
+points to an array of strings called the `environment'.
+(This variable must be declared in the user program,
+but is declared in the header file
+.I unistd.h
+in case the header files came from libc4 or libc5, and
+in case they came from glibc and
+.B _GNU_SOURCE
+was defined.)
+This array of strings is made available to the process by the
+.BR exec (3)
+call that started the process.  By convention these strings
+have the form `\fIname\fP\fB=\fP\fIvalue\fP'.  Common examples are:
+.TP
+.B USER
+The name of the logged-in user (used by some BSD-derived programs).
+.TP
+.B LOGNAME
+The name of the logged-in user (used by some System-V derived programs).
+.TP
+.B HOME
+A user's login directory, set by
+.BR login (1)
+from the password file
+.BR passwd (5).
+.TP
+.B LANG
+The name of a locale to use for locale categories when not overridden
+by \fBLC_ALL\fP or more specific environment variables like
+\fBLC_COLLATE\fP, \fBLC_CTYPE\fP, \fBLC_MESSAGES\fP, \fBLC_MONETARY\fP,
+\fBLC_NUMERIC\fP, \fBLC_TIME\fP, cf.
+.BR locale (5).
+.TP
+.B PATH
+The sequence of directory prefixes that \fBsh\fP(1) and many other
+programs apply in searching for a file known by an incomplete path name.
+The prefixes are separated by `\fB:\fP'.
+(Similarly one has \fBCDPATH\fP used by some shells to find the target
+of a change directory command, \fBMANPATH\fP used by \fBman\fP(1) to
+find manual pages, etc.)
+.TP
+.B PWD
+The current working directory. Set by some shells.
+.TP
+.B SHELL
+The file name of the user's login shell.
+.TP
+.B TERM
+The terminal type for which output is to be prepared.
+.TP
+.B PAGER
+The user's preferred utility to display text files.
+.TP
+.BR EDITOR / VISUAL
+The user's preferred utility to edit text files.
+.TP
+.B BROWSER
+The user's preferred utility to browse URLs. Sequence of colon-separated
+browser commands. See http://www.tuxedo.org/~esr/BROWSER/ .
+.PP
+Further names may be placed in the environment by the \fBexport\fP
+command and `name=value' in
+.BR sh (1),
+or by the \fBsetenv\fP command if you use
+.BR csh (1).
+Arguments may also be placed in the
+environment at the point of an
+.BR exec (3).
+A C program can manipulate its environment using the functions
+.BR getenv (3),
+.BR putenv (3),
+.BR setenv (3),
+and
+.BR unsetenv (3).
+
+Note that the behaviour of many programs and library routines is
+influenced by the presence or value of certain environment variables.
+A random collection:
+.LP
+The variables
+.BR LANG ", " LANGUAGE ", " NLSPATH ", " LOCPATH ", " LC_ALL ", " LC_MESSAGES ", "
+etc. influence locale handling, cf.
+.BR locale (5).
+.LP
+.B TMPDIR
+influences the path prefix of names created by
+\fBtmpnam(3)\fP and other routines, the temporary directory used by
+\fBsort\fP(1) and other programs, etc.
+.LP
+.BR LD_LIBRARY_PATH ", " LD_PRELOAD
+and other LD_* variables influence
+the behaviour of the dynamic loader/linker.
+.LP
+.B POSIXLY_CORRECT
+makes certain programs and library routines follow
+the prescriptions of POSIX.
+.LP
+The behaviour of \fBmalloc\fP(3) is influenced by MALLOC_* variables.
+.LP
+The variable
+.B HOSTALIASES
+gives the name of a file containing aliases
+to be used with \fBgethostbyname\fP(3).
+.LP
+.BR TZ " and " TZDIR
+give time zone information used by
+.BR tzset (3)
+and through that by functions like
+.IR ctime (),
+.IR localtime (),
+.IR mktime (),
+.IR strftime ().
+See also
+.BR tzselect (1).
+.LP
+.B TERMCAP
+gives information on how to address a given terminal
+(or gives the name of a file containing such information).
+.LP
+.BR COLUMNS " and " LINES
+tell applications about the window size, possibly overriding the actual size.
+.LP
+.BR PRINTER " or " LPDEST
+may specify the desired printer to use. See
+.BR lpr (1).
+.LP
+Etc.
+.SH BUGS
+Clearly there is a security risk here. Many a system command has been
+tricked into mischief by a user who specified unusual values for
+.BR IFS " or " LD_LIBRARY_PATH .
+
+There is also the risk of name space pollution.
+Programs like
+.I make
+and
+.I autoconf
+allow overriding of default utility names from the
+environment with similarly named variables in all caps.
+Thus one uses
+.B CC
+to select the desired C compiler (and similarly
+.BR MAKE ,
+.BR AR ,
+.BR AS ,
+.BR FC ,
+.BR LD ,
+.BR LEX ,
+.BR RM ,
+.BR YACC ,
+etc.).
+However, in some traditional uses such an environment variable
+gives options for the program instead of a pathname.
+Thus, one has
+.BR MORE ,
+.BR LESS ,
+and
+.BR GZIP .
+Such usage is considered mistaken, and to be avoided in new
+programs. The authors of
+.I gzip
+should consider renaming their option to
+.BR GZIP_OPT .
+.SH "SEE ALSO"
+.BR login (1),
+.BR sh (1),
+.BR bash (1),
+.BR csh (1),
+.BR tcsh (1),
+.BR execve (2),
+.BR exec (3),
+.BR getenv (3),
+.BR putenv (3),
+.BR setenv (3),
+.BR clearenv (3),
+.BR unsetenv (3),
+.BR locale (5)
diff --git a/raw/man5/fs.5 b/raw/man5/fs.5
new file mode 100644
index 0000000..e63e09b
--- /dev/null
+++ b/raw/man5/fs.5
@@ -0,0 +1,165 @@
+.\" Copyright 1996 Daniel Quinlan (Daniel.Quinlan at linux.org)
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.TH FILESYSTEMS 5 2001-12-07 "" "Linux Programmer's Manual"
+.nh
+.SH NAME
+filesystems \- Linux filesystem types: minix, ext, ext2, ext3, xia, msdos,
+umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs
+.SH DESCRIPTION
+When, as is customary, the
+.B proc
+filesystem is mounted on
+.IR /proc ,
+you can find in the file
+.I /proc/filesystems
+which filesystems your kernel currently supports.
+If you need a currently unsupported one, insert the corresponding
+module or recompile the kernel.
+
+In order to use a filesystem, you have to
+.I mount
+it, see
+.BR mount (8)
+for the mount command, and for the available mount options.
+
+Below a short description of a few of the available filesystems.
+
+.TP
+.B "minix"
+is the filesystem used in the Minix operating system, the first to run
+under Linux.  It has a number of shortcomings: a 64MB partition size
+limit, short filenames, a single time stamp, etc.
+It remains useful for floppies and RAM disks.
+.TP
+.B ext
+is an elaborate extension of the
+.B minix
+filesystem.  It has been completely superseded by the second version
+of the extended filesystem
+.RB ( ext2 )
+and has been removed from the kernel (in 2.1.21).
+.TP
+.B ext2
+is the high performance disk filesystem used by Linux for fixed disks
+as well as removable media.
+The second extended filesystem was designed as an extension of the
+extended file system
+.RB ( ext ).
+.B ext2
+offers the best performance (in terms of speed and CPU usage) of
+the filesystems supported under Linux.
+.TP
+.B ext3
+is a journaling version of the ext2 filesystem. It is easy to
+switch back and forth between ext2 and ext3. ext3 offers the most
+complete set of journaling options available among journaling
+filesystems.
+.\"----------------------------------------------------------------------
+.TP
+.B xiafs
+was designed and implemented to be a stable, safe filesystem by
+extending the Minix filesystem code.  It provides the basic most
+requested features without undue complexity.
+The
+.B xia
+filesystem is no longer actively developed or maintained.
+It was removed from the kernel in 2.1.21.
+.TP
+.B msdos
+is the filesystem used by DOS, Windows, and some OS/2 computers.
+.B msdos
+filenames can be no longer than 8 characters, followed by an
+optional period and 3 character extension.
+.TP
+.B umsdos
+is an extended DOS filesystem used by Linux.  It adds capability for
+long filenames, UID/GID, POSIX permissions, and special files
+(devices, named pipes, etc.)  under the DOS filesystem, without
+sacrificing compatibility with DOS.
+.TP
+.B vfat
+is an extended DOS filesystem used by Microsoft Windows95 and Windows NT.
+VFAT adds the capability to use long filenames under the MSDOS filesystem.
+.TP
+.B proc
+is a pseudo-filesystem which is used as an interface to kernel data
+structures rather than reading and interpreting
+.IR /dev/kmem .
+In particular, its files do not take disk space. See proc(5).
+.TP
+.B iso9660
+is a CD-ROM filesystem type conforming to the ISO 9660 standard.
+.RS
+.TP
+.B "High Sierra"
+Linux supports High Sierra, the precursor to the ISO 9660 standard for
+CD-ROM filesystems.  It is automatically recognized within the
+.B iso9660
+filesystem support under Linux.
+.TP
+.B "Rock Ridge"
+Linux also supports the System Use Sharing Protocol records specified
+by the Rock Ridge Interchange Protocol.  They are used to further
+describe the files in the
+.B iso9660
+filesystem to a UNIX host, and provide information such as long
+filenames, UID/GID, POSIX permissions, and devices.  It is
+automatically recognized within the
+.B iso9660
+filesystem support under Linux.
+.RE
+.TP
+.B hpfs
+is the High Performance Filesystem, used in OS/2.  This filesystem is
+read-only under Linux due to the lack of available documentation.
+.TP
+.B sysv
+is an implementation of the SystemV/Coherent filesystem for Linux.  It
+implements all of Xenix FS, SystemV/386 FS, and Coherent FS.
+.TP
+.B nfs
+is the network filesystem used to access disks located on remote computers.
+.TP
+.B smb
+is a network filesystem that supports the SMB protocol, used by
+Windows for Workgroups, Windows NT, and Lan Manager.
+.sp
+To use
+.B smb
+fs, you need a special mount program, which can be found in the ksmbfs
+package, found at
+.IR ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/smbfs .
+.TP
+.B ncpfs
+is a network filesystem that supports the NCP protocol, used by
+Novell NetWare.
+.sp
+To use
+.BR ncpfs ,
+you need special programs, which can be found at
+.IR ftp://linux01.gwdg.de/pub/ncpfs .
+.SH "SEE ALSO"
+.BR proc (5),
+.BR fsck (8),
+.BR mkfs (8),
+.BR mount (8)
diff --git a/raw/man5/group.5 b/raw/man5/group.5
new file mode 100644
index 0000000..9ff53d0
--- /dev/null
+++ b/raw/man5/group.5
@@ -0,0 +1,50 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sat Jul 24 17:06:03 1993 by Rik Faith (faith at cs.unc.edu)
+.TH GROUP 5 1992-12-29 "Linux" "Linux Programmer's Manual"
+.SH NAME
+group \- user group file
+.SH DESCRIPTION
+\fB/etc/group\fP is an ASCII file which defines the groups to which users
+belong.  There is one entry per line, and each line has the format:
+.sp
+.RS
+group_name:passwd:GID:user_list
+.RE
+.sp
+The field descriptions are:
+.IP group_name
+the name of the group.
+.IP password
+the (encrypted) group password.  If this field is
+empty, no password is needed.
+.IP GID
+the numerical group ID.
+.IP user_list
+all the group member's user names, separated by commas.
+.SH FILES
+/etc/group
+.SH "SEE ALSO"
+.BR login (1),
+.BR newgrp (1),
+.BR passwd (5)
diff --git a/raw/man5/host.conf.5 b/raw/man5/host.conf.5
new file mode 100644
index 0000000..e7088b2
--- /dev/null
+++ b/raw/man5/host.conf.5
@@ -0,0 +1,192 @@
+.\" Copyright (c) 1997 Martin Schulze (joey at infodrom.north.de)
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.\" Much of the text is copied from the manpage of resolv+(8).
+.\"
+.\" 2003-08-23 Martin Schulze <joey at infodrom.org> Updated according to glibc 2.3.2
+.TH HOST.CONF 5 2003-08-23 "Debian GNU/Linux" "Linux System Administration"
+.SH NAME
+host.conf \- resolver configuration file
+.SH DESCRIPTION
+The file
+.I /etc/host.conf
+contains configuration information specific to the resolver library.
+It should contain one configuration keyword per line, followed by
+appropriate configuration information.  The keywords recognized are
+.IR order ", " trim ", " multi ", " nospoof ", " spoof ", and " reorder .
+These keywords are described below.
+
+.TP
+.I order
+This keyword specifies how host lookups are to be performed.  It
+should be followed by one or more lookup methods, separated by commas.
+Valid methods are
+.IR bind ", " hosts ", and " nis .
+.TP
+.I trim 
+This keyword may be listed more than once.  Each time it should be
+followed by a list of domains, separated by colons (`:'), semicolons
+(`;') or commas (`,'), with the leading dot.  When set, the
+resolv+ library will automatically trim the given domain name from the
+end of any hostname resolved via DNS.  This is intended for use with
+local hosts and domains.  (Related note: trim will not affect hostnames
+gathered via NIS or the hosts file.  Care should be taken to
+ensure that the first hostname for each entry in the hosts file is
+fully qualified or non-qualified, as appropriate for the local
+installation.)
+.TP
+.I multi
+Valid values are
+.IR on " and " off .
+If set to
+.IR on ,
+the resolv+ library will return all valid addresses for a host that
+appears in the
+.I /etc/hosts
+file,
+instead of only the first.  This is
+.I off
+by default, as it may cause a substantial performance loss at sites
+with large hosts files.
+.TP
+.I nospoof
+Valid values are
+.IR on " and " off .
+If set to
+.IR on ,
+the resolv+ library will attempt to prevent hostname spoofing to
+enhance the security of
+.BR rlogin " and " rsh .
+It works as follows: after performing a host address lookup, resolv+
+will perform a hostname lookup for that address.  If the two hostnames
+do not match, the query will fail.
+The default value is
+.IR off .
+.TP
+.I spoofalert
+Valid values are
+.IR on " and " off .
+If this option is set to
+.I on
+and the
+.I nospoof
+option is also set, resolv+ will log a warning of the error via the
+syslog facility.  The default value is
+.IR off .
+.TP
+.I spoof
+Valid values are
+.IR off ", " nowarn " and " warn .
+If this option is set to
+.IR off ,
+spoofed addresses are permitted and no warnings will be emitted
+via the syslog facility.
+If this option is set to
+.IR warn ,
+resolv+ will attempt to prevent hostname spoofing to
+enhance the security and log a warning of the error via the syslog
+facility.
+If this option is set to
+.IR nowarn ,
+the resolv+ library will attempt to prevent hostname spoofing to
+enhance the security but not emit warnings via the syslog facility.
+Setting this option to anything else is equal to setting it to
+.IR nowarn .
+.TP
+.I reorder
+Valid values are
+.IR on " and " off .
+If set to
+.IR on ,
+resolv+ will attempt to reorder host addresses so that local addresses
+(i.e., on the same subnet) are listed first when a
+.BR gethostbyname (3)
+is performed.  Reordering is done for all lookup methods.  The default
+value is
+.IR off .
+.SH ENVIRONMENT
+There are six environment variables that can be used to allow users to
+override the behavior which is configured in 
+.IR /etc/host.conf .
+.TP
+.B RESOLV_HOST_CONF
+If set this variable points to a file that should be read instead of
+.IR /etc/host.conf .
+.TP
+.B RESOLV_SERV_ORDER
+Overrides the
+.I order
+command.
+.TP
+.B RESOLV_SPOOF_CHECK
+Overrides the
+.IR nospoof ", " spoofalert " and " spoof
+commands in the same way as the
+.I spoof
+command is parsed.  Valid values are
+.IR off ", " nowarn " and " warn .
+.TP
+.B RESOLV_MULTI
+Overrides the
+.I multi
+command.
+.TP
+.B RESOLV_REORDER
+Overrides the
+.I reorder
+command.
+.TP
+.B RESOLV_ADD_TRIM_DOMAINS
+A list of domains,  separated by colons (`:'), semicolons (`;') or
+commas (`,'), with the leading dot, which will be added to the list of
+domains that should be trimmed.
+.TP
+.B RESOLV_OVERRIDE_TRIM_DOMAINS
+A list of domains,  separated by colons (`:'), semicolons (`;') or
+commas (`,'), with the leading dot, which will replace the list of
+domains that should be trimmed.  Overrides the
+.I trim
+command.
+.SH FILES
+.TP
+.I /etc/host.conf
+Resolver configuration file
+.TP
+.I /etc/resolv.conf
+Resolver configuration file
+.TP
+.I /etc/hosts
+Local hosts database
+.SH NOTES
+The following differences exist compared to the original implementation.
+A new command
+.I spoof
+and a new environment variable
+.B RESOLV_SPOOF_CHECK
+can take arguments like
+.IR off ", " nowarn " and " warn .
+Line comments can appear anywhere and not only at the beginning of a line.
+.SH "SEE ALSO"
+.BR gethostbyname (3),
+.BR hostname (7),
+.BR resolv+ (8),
+.BR named (8)
diff --git a/raw/man5/info.5 b/raw/man5/info.5
new file mode 100644
index 0000000..1c39809
--- /dev/null
+++ b/raw/man5/info.5
@@ -0,0 +1,60 @@
+.\" info(5)
+.\" Copyright (C) 1998 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.TH INFO 5 "GNU Info" "FSF"
+.SH NAME
+info \- readable online documentation
+.SH DESCRIPTION
+The Info file format is an easily-parsable representation for online
+documents.  It can be read by
+.I emacs(1)
+and
+.I info(1)
+among other programs.
+.PP
+Info files are usually created from
+.I texinfo(5)
+sources by
+.IR makeinfo(1) ,
+but can be created from scratch if so desired.
+.PP
+For a full description of the Texinfo language and associated tools,
+please see the Texinfo manual (written in Texinfo itself).  Most likely,
+running this command from your shell:
+.RS
+.I info texinfo
+.RE
+or this key sequence from inside Emacs:
+.RS
+.I M-x info RET m texinfo RET
+.RE
+will get you there.
+.SH AVAILABILITY
+ftp://ftp.gnu.org/pub/gnu/texinfo-<version>.tar.gz
+.br
+or any GNU mirror site.
+.SH "REPORTING BUGS"
+Please send bug reports to bug-texinfo at gnu.org,
+general questions and discussion to help-texinfo at gnu.org.
+.SH "SEE ALSO"
+info(1), install-info(1), makeinfo(1), texi2dvi(1),
+.br
+texindex(1).
+.br
+emacs(1), tex(1).
+.br
+texinfo(5).
diff --git a/raw/man5/inittab.5 b/raw/man5/inittab.5
new file mode 100644
index 0000000..4915d64
--- /dev/null
+++ b/raw/man5/inittab.5
@@ -0,0 +1,248 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH INITTAB 5 "Dec 4, 2001" "" "Linux System Administrator's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+inittab \- format of the inittab file used by the sysv-compatible init
+process
+.\"}}}
+.\"{{{  Description
+.SH DESCRIPTION
+The \fBinittab\fP file describes which processes are started at bootup and
+during normal operation (e.g.\& /etc/init.d/boot, /etc/init.d/rc, gettys...).
+.BR Init (8)
+distinguishes multiple \fIrunlevels\fP, each of which can have its own set of
+processes that are started.  Valid runlevels are \fB0\fP\-\fB6\fP plus
+\fBA\fP, \fBB\fP, and \fBC\fP for \fBondemand\fP entries.  An entry in the
+\fBinittab\fP file has the following format:
+.RS
+.sp
+\fIid\fP:\fIrunlevels\fP:\fIaction\fP:\fIprocess\fP
+.sp
+.RE
+Lines beginning with `#' are ignored.
+.\"{{{  id
+.IP \fIid\fP
+is a unique sequence of 1-4 characters which identifies an entry in
+.B inittab 
+(for versions of sysvinit compiled with the \fIold\fP libc5 (< 5.2.18) or
+a.out libraries the limit is 2 characters).
+.sp
+Note: traditionally, for getty and other login processes, the value of the
+\fIid\fP field is kept the same as the suffix of the corresponding tty, e.g.\&
+\fB1\fP for \fBtty1\fP. Some ancient login accounting programs might
+expect this, though I can't think of any.
+.\"}}}
+.\"{{{  runlevels
+.IP \fIrunlevels\fP
+lists the runlevels for which the specified action should be taken.
+.\"}}}
+.\"{{{  action
+.IP \fIaction\fP
+describes which action should be taken.
+.\"}}}
+.\"{{{  process
+.IP \fIprocess\fP
+specifies the process to be executed.  If the process field starts with
+a `+' character, 
+.B init 
+will not do utmp and wtmp accounting for that process.  This is needed for 
+gettys that insist on doing their own utmp/wtmp housekeeping.  This is also 
+a historic bug.
+.\"}}}
+.PP
+The \fIrunlevels\fP field may contain multiple characters for different
+runlevels.  For example, \fB123\fP specifies that the process should be 
+started in runlevels 1, 2, and 3.
+The \fIrunlevels\fP for \fBondemand\fP entries may contain an \fBA\fP,
+\fBB\fP, or \fBC\fP.  The \fIrunlevels\fP field of \fBsysinit\fP,
+\fBboot\fP, and \fBbootwait\fP entries are ignored.
+.PP
+When the system runlevel is changed, any running processes that are not
+specified for the new runlevel are killed, first with \s-2SIGTERM\s0,
+then with \s-2SIGKILL\s0.
+.PP
+Valid actions for the \fIaction\fP field are:
+.\"{{{  respawn
+.IP \fBrespawn\fP
+The process will be restarted whenever it terminates (e.g.\& getty).
+.\"}}}
+.\"{{{  wait
+.IP \fBwait\fP
+The process will be started once when the specified runlevel is entered and 
+.B init 
+will wait for its termination.
+.\"}}}
+.\"{{{  once
+.IP \fBonce\fP
+The process will be executed once when the specified runlevel is
+entered.
+.\"}}}
+.\"{{{  boot
+.IP \fBboot\fP
+The process will be executed during system boot.  The \fIrunlevels\fP
+field is ignored.
+.\"}}}
+.\"{{{  bootwait
+.IP \fBbootwait\fP
+The process will be executed during system boot, while 
+.B init 
+waits for its termination (e.g.\& /etc/rc).  
+The \fIrunlevels\fP field is ignored.
+.\"}}}
+.\"{{{  off
+.IP \fBoff\fP
+This does nothing.
+.\"}}}
+.\"{{{  ondemand
+.IP \fBondemand\fP
+A process marked with an \fBondemand\fP runlevel will be executed
+whenever the specified \fBondemand\fP runlevel is called.  However, no
+runlevel change will occur (\fBondemand\fP runlevels are `a', `b',
+and `c').
+.\"}}}
+.\"{{{  initdefault
+.IP \fBinitdefault\fP
+An \fBinitdefault\fP entry specifies the runlevel which should be
+entered after system boot.  If none exists, 
+.B init
+will ask for a runlevel on the console. The \fIprocess\fP field is ignored.
+.\"}}}
+.\"{{{  sysinit
+.IP \fBsysinit\fP
+The process will be executed during system boot. It will be
+executed before any \fBboot\fP or \fB bootwait\fP entries.
+The \fIrunlevels\fP field is ignored.
+.\"}}}
+.\"{{{  powerwait
+.IP \fBpowerwait\fP
+The process will be executed when the power goes down. Init is usually
+informed about this by a process talking to a UPS connected to the computer.
+\fBInit\fP will wait for the process to finish before continuing.
+.\"}}}
+.\"{{{  powerfail
+.IP \fBpowerfail\fP
+As for \fBpowerwait\fP, except that \fBinit\fP does not wait for the process's
+completion.
+.\"}}}
+.\"{{{  powerokwait
+.IP \fBpowerokwait\fP
+This process will be executed as soon as \fBinit\fP is informormed that the
+power has been restored.
+.\"}}}
+.\"{{{  powerfailnow
+.IP \fBpowerfailnow\fP
+This process will be executed when \fBinit\fP is told that the battery of
+the external UPS is almost empty and the power is failing (provided that the
+external UPS and the monitoring process are able to detect this condition).
+.\"}}}
+.\"{{{  ctrlaltdel
+.IP \fBctrlaltdel\fP
+The process will be executed when \fBinit\fP receives the SIGINT signal.
+This means that someone on the system console has pressed the
+\fBCTRL\-ALT\-DEL\fP key combination. Typically one wants to execute some
+sort of \fBshutdown\fP either to get into single\-user level or to
+reboot the machine.
+.\"}}}
+.\"{{{  kbrequest
+.IP \fBkbrequest\fP
+The process will be executed when \fBinit\fP receives a signal from the
+keyboard handler that a special key combination was pressed on the
+console keyboard.
+.sp
+The documentation for this function is not complete yet; more documentation
+can be found in the kbd-x.xx packages (most recent was kbd-0.94 at
+the time of this writing). Basically you want to map some keyboard
+combination to the "KeyboardSignal" action. For example, to map Alt-Uparrow
+for this purpose use the following in your keymaps file:
+.RS
+.sp
+alt keycode 103 = KeyboardSignal
+.sp
+.RE
+.\"}}}
+.\"}}}
+.\"{{{  Examples
+.SH EXAMPLES
+This is an example of a inittab which resembles the old Linux inittab:
+.RS
+.sp
+.nf
+.ne 7
+# inittab for linux
+id:1:initdefault:
+rc::bootwait:/etc/rc
+1:1:respawn:/etc/getty 9600 tty1
+2:1:respawn:/etc/getty 9600 tty2
+3:1:respawn:/etc/getty 9600 tty3
+4:1:respawn:/etc/getty 9600 tty4
+.fi
+.sp
+.RE
+This inittab file executes \fB/etc/rc\fP during boot and starts gettys
+on tty1\-tty4.
+.PP
+A more elaborate \fBinittab\fP with different runlevels (see the comments
+inside):
+.RS
+.sp
+.nf
+.ne 19
+# Level to run in
+id:2:initdefault:
+
+# Boot-time system configuration/initialization script.
+si::sysinit:/etc/init.d/rcS
+
+# What to do in single-user mode.
+~:S:wait:/sbin/sulogin
+
+# /etc/init.d executes the S and K scripts upon change
+# of runlevel.
+#
+# Runlevel 0 is halt.
+# Runlevel 1 is single-user.
+# Runlevels 2-5 are multi-user.
+# Runlevel 6 is reboot.
+
+l0:0:wait:/etc/init.d/rc 0
+l1:1:wait:/etc/init.d/rc 1
+l2:2:wait:/etc/init.d/rc 2
+l3:3:wait:/etc/init.d/rc 3
+l4:4:wait:/etc/init.d/rc 4
+l5:5:wait:/etc/init.d/rc 5
+l6:6:wait:/etc/init.d/rc 6
+
+# What to do at the "3 finger salute".
+ca::ctrlaltdel:/sbin/shutdown -t1 -h now
+
+# Runlevel 2,3: getty on virtual consoles
+# Runlevel   3: getty on terminal (ttyS0) and modem (ttyS1)
+1:23:respawn:/sbin/getty tty1 VC linux
+2:23:respawn:/sbin/getty tty2 VC linux
+3:23:respawn:/sbin/getty tty3 VC linux
+4:23:respawn:/sbin/getty tty4 VC linux
+S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320
+S1:3:respawn:/sbin/mgetty -x0 -D ttyS1
+
+.fi
+.sp
+.RE
+.\"}}}
+.\"{{{  Files
+.SH FILES
+/etc/inittab
+.\"}}}
+.\"{{{  Author
+.SH AUTHOR
+\fBInit\fP was written by Miquel van Smoorenburg 
+(miquels at cistron.nl).  This manual page was written by 
+Sebastian Lederer (lederer at francium.informatik.uni-bonn.de) and modified
+by Michael Haardt (u31b3hs at pool.informatik.rwth-aachen.de).
+.\"}}}
+.\"{{{  See also
+.SH "SEE ALSO"
+.BR init (8),
+.BR telinit (8)
+.\"}}}
diff --git a/raw/man5/ipc.5 b/raw/man5/ipc.5
new file mode 100644
index 0000000..d3c3211
--- /dev/null
+++ b/raw/man5/ipc.5
@@ -0,0 +1,383 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio at crcc.it)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH IPC 5 1993-11-01 "Linux 0.99.13" "Linux Programmer's Manual" 
+.SH NAME
+ipc \- System V interprocess communication mechanisms
+.SH SYNOPSIS
+.nf
+.B
+# include <sys/types.h>
+.B
+# include <sys/ipc.h>
+.B
+# include <sys/msg.h>
+.B
+# include <sys/sem.h>
+.B
+# include <sys/shm.h>
+.SH DESCRIPTION
+This manual page refers to the Linux implementation of the System V
+interprocess communication mechanisms:
+message queues, semaphore sets, and shared memory segments.
+In the following, the word
+.B resource
+means an instantiation of one among such mechanisms.
+.SS Resource Access Permissions
+For each resource, the system uses a common structure of type
+.BR "struct ipc_perm"
+to store information needed in determining permissions to perform an
+ipc operation.
+The
+.B ipc_perm
+structure, defined by the
+.I <sys/ipc.h>
+system header file, includes the following members:
+.sp
+.B
+	ushort cuid;	 
+/* creator user id */
+.br
+.B
+	ushort cgid;	 
+/* creator group id */
+.br
+.B
+	ushort uid;	 
+/* owner user id */
+.br
+.B
+	ushort gid;	
+/* owner group id */
+.br
+.B
+	ushort mode;	
+/* r/w permissions */
+.PP
+The
+.B mode
+member of the
+.B ipc_perm
+structure defines, with its lower 9 bits, the access permissions to the
+resource for a process executing an ipc system call.
+The permissions are interpreted as follows:
+.sp
+.nf
+	0400	Read by user.
+	0200	Write by user.
+.sp .5
+	0040	Read by group.
+	0020	Write by group.
+.sp .5
+	0004	Read by others.
+	0002	Write by others.
+.fi
+.PP
+Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.
+Furthermore,
+"write"
+effectively means
+"alter"
+for a semaphore set.
+.PP
+The same system header file also defines the following symbolic
+constants:
+.TP 14
+.B IPC_CREAT
+Create entry if key doesn't exist.
+.TP
+.B IPC_EXCL
+Fail if key exists.
+.TP
+.B IPC_NOWAIT
+Error if request must wait.
+.TP
+.B IPC_PRIVATE
+Private key.
+.TP
+.B IPC_RMID
+Remove resource.
+.TP
+.B IPC_SET
+Set resource options.
+.TP
+.B IPC_STAT
+Get resource options.
+.PP
+Note that
+.B IPC_PRIVATE
+is a
+.B key_t
+type, while all the other symbolic constants are flag fields and can
+be OR'ed into an
+.B int
+type variable.
+.SS Message Queues
+A message queue is uniquely identified by a positive integer
+.RI "(its " msqid )
+and has an associated data structure of type
+.BR "struct msquid_ds" ,
+defined in
+.IR <sys/msg.h> ,
+containing the following members:
+.sp
+.B
+	struct ipc_perm msg_perm;
+.br
+.B
+	ushort msg_qnum;	
+/* no of messages on queue */
+.br
+.B
+	ushort msg_qbytes;	
+/* bytes max on a queue */
+.br
+.B
+	ushort msg_lspid;	
+/* pid of last msgsnd call */
+.br
+.B
+	ushort msg_lrpid;	
+/* pid of last msgrcv call */
+.br
+.B
+	time_t msg_stime;	
+/* last msgsnd time */
+.br
+.B
+	time_t msg_rtime;	
+/* last msgrcv time */
+.br
+.B
+	time_t msg_ctime;	
+/* last change time */
+.TP 11
+.B msg_perm
+.B ipc_perm
+structure that specifies the access permissions on the message
+queue.
+.TP
+.B msg_qnum
+Number of messages currently on the message queue.
+.TP
+.B msg_qbytes
+Maximum number of bytes of message text allowed on the message
+queue.
+.TP
+.B msg_lspid
+ID of the process that performed the last
+.B msgsnd
+system call.
+.TP
+.B msg_lrpid
+ID of the process that performed the last
+.B msgrcv
+system call.
+.TP
+.B msg_stime
+Time of the last
+.B msgsnd
+system call.
+.TP
+.B msg_rtime
+Time of the last
+.B msgcv
+system call.
+.TP
+.B msg_ctime
+Time of the last
+system call that changed a member of the
+.B msqid_ds
+structure.
+.SS Semaphore Sets
+A semaphore set is uniquely identified by a positive integer
+.RI "(its " semid )
+and has an associated data structure of type
+.BR "struct semid_ds" ,
+defined in
+.IR <sys/sem.h> ,
+containing the following members:
+.sp
+.B
+	struct ipc_perm sem_perm;
+.br
+.B
+	time_t sem_otime;	
+/* last operation time */
+.br
+.B
+	time_t sem_ctime;	
+/* last change time */
+.br
+.B
+	ushort sem_nsems;	
+/* count of sems in set */
+.TP 11
+.B sem_perm
+.B ipc_perm
+structure that specifies the access permissions on the semaphore
+set.
+.TP
+.B sem_otime
+Time of last
+.B semop
+system call.
+.TP
+.B sem_ctime
+Time of last
+.B semctl
+system call that changed a member of the above structure or of one
+semaphore belonging to the set.
+.TP
+.B sem_nsems
+Number of semaphores in the set.
+Each semaphore of the set is referenced by a non-negative integer
+ranging from
+.B 0
+to
+.BR sem_nsems\-1 .
+.PP
+A semaphore is a data structure of type
+.B "struct sem"
+containing the following members:
+.sp
+.B
+	ushort semval;	
+/* semaphore value */
+.br
+.B
+	short sempid;	
+/* pid for last operation */
+.br
+.B
+	ushort semncnt;
+/* nr awaiting semval to increase */
+.br
+.B
+	ushort semzcnt;
+/* nr awaiting semval = 0 */
+.TP 11
+.B semval
+Semaphore value: a non-negative integer.
+.TP
+.B sempid
+ID of the last process that performed a semaphore operation
+on this semaphore.
+.TP
+.B semncnt
+Number of processes suspended awaiting for
+.B semval
+to increase.
+.TP
+.B semznt
+Number of processes suspended awaiting for
+.B semval
+to become zero.
+.SS Shared Memory Segments
+A shared memory segment is uniquely identified by a positive integer
+.RI "(its " shmid )
+and has an associated data structure of type
+.BR "struct shmid_ds" ,
+defined in
+.IR <sys/shm.h> ,
+containing the following members:
+.sp
+.B
+	struct ipc_perm shm_perm;
+.br
+.B
+	int shm_segsz; 	
+/* size of segment */
+.br
+.B
+	ushort shm_cpid;	
+/* pid of creator */
+.br
+.B
+	ushort shm_lpid;	
+/* pid, last operation */
+.br
+.B
+	short shm_nattch;	
+/* no. of current attaches */
+.br
+.B
+	time_t shm_atime;	
+/* time of last attach */
+.br
+.B
+	time_t shm_dtime;	
+/* time of last detach */
+.br
+.B
+	time_t shm_ctime;	
+/* time of last change */
+.TP 11
+.B shm_perm
+.B ipc_perm
+structure that specifies the access permissions on the shared memory
+segment.
+.TP
+.B shm_segsz
+Size in bytes of the shared memory segment.
+.TP
+.B shm_cpid
+ID of the process that created the shared memory segment.
+.TP
+.B shm_lpid
+ID of the last process that executed a
+.B shmat
+or
+.B shmdt
+system call.
+.TP
+.B shm_nattch
+Number of current alive attaches for this shared memory segment.
+.TP
+.B shm_atime
+Time of the last
+.B shmat
+system call.
+.TP
+.B shm_dtime
+Time of the last
+.B shmdt
+system call.
+.TP
+.B shm_ctime
+Time of the last
+.B shmctl
+system call that changed
+.BR shmid_ds .
+.SH "SEE ALSO"
+.BR ftok (3),
+.BR msgctl (2),
+.BR msgget (2),
+.BR msgrcv (2),
+.BR msgsnd (2),
+.BR semctl (2),
+.BR semget (2),
+.BR semop (2),
+.BR shmat (2),
+.BR shmctl (2),
+.BR shmget (2),
+.BR shmdt (2)
diff --git a/raw/man5/issue.5 b/raw/man5/issue.5
new file mode 100644
index 0000000..15d58e5
--- /dev/null
+++ b/raw/man5/issue.5
@@ -0,0 +1,38 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sun Jul 25 11:06:22 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.TH ISSUE 5 1993-07-24 "Linux" "Linux Programmer's Manual"
+.SH NAME
+issue \- pre-login message and identification file
+.SH DESCRIPTION
+The file \fB/etc/issue\fP is a text file which contains a message or
+system identification to be printed before the login prompt.  It may
+contain various \fB@\fP\fIchar\fP and \fB\e\fP\fIchar\fP sequences, if
+supported by
+.BR mingetty (1).
+.SH FILES
+/etc/issue
+.SH "SEE ALSO"
+.BR mingetty (1),
+.BR motd (5)
diff --git a/raw/man5/keymaps.5 b/raw/man5/keymaps.5
new file mode 100644
index 0000000..29aadfe
--- /dev/null
+++ b/raw/man5/keymaps.5
@@ -0,0 +1,441 @@
+.\" keymaps.5 - Copyright (C) Andries Brouwer 1998
+.\" May be freely distributed.
+.\" @(#)keymaps.5 1.10 940130 aeb
+.TH KEYMAPS 5 "24 April 1998"
+.SH NAME
+keymaps \- keyboard table descriptions for loadkeys and dumpkeys
+.SH DESCRIPTION
+.IX "keymaps" "" "\fLkeymaps\fR \(em keyboard table descriptions for loadkeys and dumpkeys" ""
+.IX "loadkeys" "keyboard table descriptions" "\fLloadkeys\fR" "keyboard table descriptions"
+.IX "dumpkeys" "keyboard table descriptions" "\fLdumpkeys\fR" "keyboard table descriptions"
+.IX keyboard "table descriptions for loadkeys and dumpkeys" keyboard "table descriptions for \fLloadkeys\fR and \fLdumpkeys\fR"
+.IX "translation tables"
+.LP
+These files are used by
+.BR loadkeys (1)
+to modify the translation tables used by the kernel keyboard driver
+and generated by
+.BR dumpkeys (1)
+from those translation tables.
+.LP
+The format of these files is vaguely similar to the one accepted by
+.BR xmodmap (1).
+The file consists of charset or key or string definition lines
+interspersed with comments.
+.LP
+Comments are introduced with
+.B !
+or
+.B #
+characters and continue to the end of the line. Anything following one
+of these characters on that line is ignored. Note that comments need
+not begin from column one as with
+.BR xmodmap (1).
+.LP
+The syntax of keymap files is line oriented; a complete definition
+must fit on a single logical line. Logical lines can, however, be split
+into multiple physical lines by ending each subline with the backslash
+character (\\).
+.SH "INCLUDE FILES"
+A keymap can include other keymaps using the syntax
+.LP
+.RS
+include "pathname"
+.RE
+.LP
+.SH "CHARSET DEFINITIONS"
+A character set definition line is of the form:
+.LP
+.RS
+.EX
+charset "iso-8859-x"
+.EE
+.RE
+.LP
+It defines how following keysyms are to be interpreted.
+For example, in iso-8859-1 the symbol mu (or micro) has code 0265,
+while in iso-8859-7 the letter mu has code 0354.
+.SH "COMPLETE KEYCODE DEFINITIONS"
+Each complete key definition line is of the form:
+.LP
+.RS
+.nf
+.BI keycode " keynumber " = " keysym keysym keysym" \fR...
+.fi
+.RE
+.LP
+.I keynumber
+is the internal identification number of the key, roughly equivalent to
+the scan code of it.
+.I keynumber
+can be given in decimal, octal or hexadecimal notation.
+Octal is denoted by a leading zero and hexadecimal by the prefix
+.B 0x.
+.LP
+Each of the
+.I keysyms
+represent keyboard actions, of which up to 256 can be bound to a single
+key. The actions available include outputting character codes or
+character sequences, switching consoles or keymaps, booting the machine
+etc. (The complete list can be obtained from dumpkeys(1) by saying
+.BI " dumpkeys -l"
+\&.)
+.LP
+Each
+.I keysym
+may be prefixed by a '+' (plus sign), in wich case this keysym is treated
+as a "letter" and therefore affected by the "CapsLock" the same way as by
+"Shift" (to be correct, the CapsLock inverts the Shift state).
+The ASCII letters ('a'-'z' and 'A'-'Z') are made CapsLock'able by default.
+If Shift+CapsLock should not produce a lower case symbol, put lines like
+.LP
+.RS
+.nf
+.BI "keycode 30 = +a  A"
+.fi
+.RE
+.LP
+in the map file.
+.LP
+Which of the actions bound to a given key is taken when it is pressed
+depends on what modifiers are in effect at that moment.
+The keyboard driver supports 8 modifiers. These modifiers are labeled
+(completely arbitrarily) Shift, AltGr, Control, Alt, ShiftL, ShiftR,
+CtrlL and CtrlR.
+Each of these modifiers has an associated weight of power of two
+according to the following table:
+.LP
+.RS
+.TP 24
+.I modifier
+.I weight
+.TP 24
+Shift
+  1
+.PD 0
+.TP 24
+AltGr
+  2
+.TP 24
+Control
+  4
+.TP 24
+Alt
+  8
+.TP 24
+ShiftL
+ 16
+.TP 24
+ShiftR
+ 32
+.TP 24
+CtrlL
+ 64
+.TP 24
+CtrlR
+128
+.PD
+.RE
+.LP
+The effective action of a key is found out by adding up the weights of
+all the modifiers in effect. By default, no modifiers are in effect, so
+action number zero, i.e. the one in the first column in a key definition
+line, is taken when the key is pressed or released. When e.g. Shift and
+Alt modifiers are in effect, action number nine (from the 10th column)
+is the effective one.
+.LP
+Changing the state of what modifiers are in effect can be achieved by
+binding appropriate key actions to desired keys. For example, binding
+the symbol Shift to a key sets the Shift modifier in effect when that
+key is pressed and cancels the effect of that modifier when the key is
+released. Binding AltGr_Lock to a key sets AltGr in effect when the key
+is pressed and cancels the effect when the key is pressed again.
+(By default Shift, AltGr, Control and Alt are bound to the keys that bear
+a similar label; AltGr may denote the right Alt key.)
+.LP
+Note that you should be very careful when binding the modifier keys,
+otherwise you can end up with an unusable keyboard mapping. If you for
+example define a key to have Control in its first column and leave the
+rest of the columns to be VoidSymbols, you're in trouble. This is
+because pressing the key puts Control modifier in effect and the
+following actions are looked up from the fifth column (see the table
+above). So, when you release the key, the action from the fifth column
+is taken. It has VoidSymbol in it, so nothing happens. This means that
+the Control modifier is still in effect, although you have released the key.
+Re-pressing and releasing the key has no effect. To avoid this,
+you should always define all the columns to have the same modifier
+symbol. There is a handy short-hand notation for this, see below.
+.LP
+.I keysyms
+can be given in decimal, octal, hexadecimal, unicode or symbolic notation.
+The numeric notations use the same format as with
+.IR keynumber .
+Unicode notation is "U+" followed by four hexadecimal digits.
+The symbolic notation resembles that used by
+.BR xmodmap (1).
+Notable differences are the number symbols. The numeric
+symbols '0', ..., '9' of
+.BR xmodmap (1)
+are replaced with the corresponding words 'zero', 'one', ... 'nine' to
+avoid confusion with the numeric notation.
+.LP
+It should be noted that using numeric notation for the
+.I keysyms
+is highly unportable as the key action numbers may vary from one kernel
+version to another and the use of numeric notations is thus strongly
+discouraged. They are intended to be used only when you know there is a
+supported keyboard action in your kernel for which your current version
+of
+.BR loadkeys (1)
+has no symbolic name.
+.LP
+There is a number of short-hand notations to add readability and reduce
+typing work and the probability of typing-errors.
+.LP
+First of all, you can give a map specification line, of the form
+.LP
+.RS
+.EX
+keymaps 0-2,4-5,8,12
+.EE
+.RE
+.LP
+to indicate that the lines of the keymap will not specify all 256 columns,
+but only the indicated ones. (In the example: only the plain, Shift,
+AltGr, Control, Control+Shift, Alt and Control+Alt maps, that is, 7 columns
+instead of 256.)
+When no such line is given, the keymaps 0-M will be defined, where
+M+1 is the maximum number of entries found in any definition line.
+.LP
+Next, you can leave off any trailing VoidSymbol entries from a key
+definition line. VoidSymbol denotes a keyboard action which produces no
+output and has no other effects either. For example, to define key
+number 30 to output 'a' unshifted, 'A' when pressed with Shift and do
+nothing when pressed with AltGr or other modifiers, you can write
+.LP
+.RS
+.nf
+keycode  30 = a	A
+.fi
+.RE
+.LP
+instead of the more verbose
+.LP
+.RS
+.nf
+keycode  30 = a	A	VoidSymbol	VoidSymbol \\
+		VoidSymbol VoidSymbol VoidSymbol ...
+.fi
+.RE
+.LP
+For added convenience, you can usually get off with still more terse
+definitions. If you enter a key definition line with only and exactly
+one action code after the equals sign, it has a special meaning. If the
+code (numeric or symbolic) is not an ASCII letter, it means the code
+is implicitly replicated through all columns being defined.
+If, on the other hand, the action code is an ASCII character in the
+range 'a', ..., 'z' or 'A', ..., 'Z' in the ASCII collating sequence,
+the following definitions are made for the different modifier combinations,
+provided these are actually being defined.
+(The table lists the two possible cases:
+either the single action code is a lower case letter,
+denoted by 'x' or an upper case letter, denoted by 'Y'.)
+.LP
+.RS 4
+.TP 24
+.I modifier
+.I symbol
+.TP 24
+none
+x			Y
+.PD 0
+.TP 24
+Shift
+X			y
+.TP 24
+AltGr
+x			Y
+.TP 24
+Shift+AltGr
+X			y
+.TP 24
+Control
+Control_x		Control_y
+.TP 24
+Shift+Control
+Control_x		Control_y
+.TP 24
+AltGr+Control
+Control_x		Control_y
+.TP 24
+Shift+AltGr+Control
+Control_x		Control_y
+.TP 24
+Alt
+Meta_x		Meta_Y
+.TP 24
+Shift+Alt
+Meta_X		Meta_y
+.TP 24
+AltGr+Alt
+Meta_x		Meta_Y
+.TP 24
+Shift+AltGr+Alt
+Meta_X		Meta_y
+.TP 24
+Control+Alt
+Meta_Control_x	Meta_Control_y
+.TP 24
+Shift+Control+Alt
+Meta_Control_x	Meta_Control_y
+.TP 24
+AltGr+Control+Alt
+Meta_Control_x	Meta_Control_y
+.TP 24
+Shift+AltGr+Control+Alt
+Meta_Control_x	Meta_Control_y
+.PD
+.RE
+.LP
+.SH "SINGLE MODIFIER DEFINITIONS"
+All the previous forms of key definition lines always define all the M+1
+possible modifier combinations being defined, whether the line actually
+contains that many action codes or not.
+There is, however, a variation of the definition
+syntax for defining only single actions to a particular modifier
+combination of a key. This is especially useful, if you load a keymap
+which doesn't match your needs in only some modifier combinations, like
+AltGr+function keys. You can then make a small local file redefining
+only those modifier combinations and loading it after the main file.
+The syntax of this form is:
+.LP
+.BR "" { " plain " "| <modifier sequence> } " keycode
+.I keynumber
+.B =
+.I keysym
+.LP
+, e.g.,
+.RS
+.EX
+.nf
+plain keycode 14 = BackSpace
+control alt keycode 83 = Boot
+alt keycode 105 = Decr_Console
+alt keycode 106 = Incr_Console
+.fi
+.EE
+.RE
+Using "plain" will define only the base entry of a
+key (i.e. the one with no modifiers in effect) without affecting the
+bindings of other modifier combinations of that key.
+.SH "STRING DEFINITIONS"
+In addition to comments and key definition lines, a keymap can
+contain string definitions. These are used to define what each function
+key action code sends. The syntax of string definitions is:
+.LP
+.RS
+.B string
+.I keysym
+.B =
+.BI
+"text"
+.RE
+.LP
+.I text
+can contain literal characters, octal character codes in the format of
+backslash followed by up to three octal digits, and the three escape
+sequences \fB\\n\fP, \fB\\\\\fP, and \fB\\"\fP,
+for newline, backslash and quote, respectively.
+.SH "COMPOSE DEFINITIONS"
+Then there may also be compose definitions. They have syntax
+.LP
+.RS
+.BI "compose '" char "' '" char "' to '" char "'"
+.RE
+and describe how two bytes are combined to form a third one
+(when a dead accent or compose key is used).
+This is used to get accented letters and the like on a standard
+keyboard.
+.SH ABBREVIATIONS
+Various abbreviations can be used with kbd-0.96 and later.
+.TP
+.B "strings as usual"
+Defines the usual values of the strings (but not the keys
+they are bound to).
+.TP
+\fBcompose as usual for "iso-8859-1"\fP
+Defines the usual compose combinations.
+.LP
+To find out what
+.I keysyms
+there are available for use in keymaps, use the command
+.LP
+.RS
+.nf
+.B dumpkeys --long-info
+.fi
+.RE
+.LP
+Unfortunately, there is currently no description of what each symbol
+does. It has to be guessed from the name or figured out from the kernel
+sources.
+.LP
+.SH EXAMPLES
+(Be careful to use a keymaps line, like the first line of `dumpkeys`,
+or "keymaps 0-15" or so.)
+.LP
+The following entry exchanges the left Control key and the Caps Lock
+key on the keyboard:
+.LP
+.RS
+.nf
+keycode  58 = Control
+keycode  29 = Caps_Lock
+.fi
+.RE
+.LP
+Key number 58 is normally the Caps Lock key, and key number 29 is
+normally the Control key.
+.LP
+The following entry sets the Shift and Caps Lock keys to behave more
+nicely, like in older typewriters. That is, pressing Caps Lock key once
+or more sets the keyboard in CapsLock state and pressing either of the
+Shift keys releases it.
+.LP
+.RS
+.nf
+keycode  42 = Uncaps_Shift
+keycode  54 = Uncaps_Shift
+keycode  58 = Caps_On
+.fi
+.RE
+.LP
+The following entry sets the layout of the edit pad in the enhanced
+keyboard to be more like that in the VT200 series terminals:
+.LP
+.RS
+.nf
+keycode 102 = Insert
+keycode 104 = Remove
+keycode 107 = Prior
+shift keycode 107 = Scroll_Backward
+keycode 110 = Find
+keycode 111 = Select
+control alt   keycode 111 = Boot
+control altgr keycode 111 = Boot
+.fi
+.RE
+.LP
+Here's an example to bind the string "du\\ndf\\n" to the key AltGr-D. We use
+the "spare" action code F100 not normally bound to any key.
+.LP
+.RS
+.nf
+altgr keycode 32 = F100
+string F100 = "du\\ndf\\n"
+.LP
+.SH "SEE ALSO"
+.BR loadkeys (1),
+.BR dumpkeys (1),
+.BR showkey (1),
+.BR xmodmap (1)
diff --git a/raw/man5/lmhosts.5 b/raw/man5/lmhosts.5
new file mode 100644
index 0000000..47bedda
--- /dev/null
+++ b/raw/man5/lmhosts.5
@@ -0,0 +1,92 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "LMHOSTS" 5 "" "" ""
+.SH NAME
+lmhosts \- The Samba NetBIOS hosts file
+.SH "SYNOPSIS"
+
+.PP
+\fIlmhosts\fR is the \fBSamba\fR(7) NetBIOS name to IP address mapping file\&.
+
+.SH "DESCRIPTION"
+
+.PP
+This file is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fIlmhosts\fR is the \fBSamba \fR NetBIOS name to IP address mapping file\&. It is very similar to the \fI/etc/hosts\fR file format, except that the hostname component must correspond to the NetBIOS naming format\&.
+
+.SH "FILE FORMAT"
+
+.PP
+It is an ASCII file containing one line for NetBIOS name\&. The two fields on each line are separated from each other by white space\&. Any entry beginning with '#' is ignored\&. Each line in the lmhosts file contains the following information:
+
+.TP 3
+\(bu
+IP Address - in dotted decimal format\&.
+
+.TP
+\(bu
+NetBIOS Name - This name format is a maximum fifteen character host name, with an optional trailing '#' character followed by the NetBIOS name type as two hexadecimal digits\&.
+
+
+If the trailing '#' is omitted then the given IP address will be returned for all names that match the given name, whatever the NetBIOS name type in the lookup\&.
+
+.LP
+
+.PP
+An example follows:
+.nf
+
+#
+# Sample Samba lmhosts file\&.
+#
+192\&.9\&.200\&.1	TESTPC
+192\&.9\&.200\&.20	NTSERVER#20
+192\&.9\&.200\&.21	SAMBASERVER
+	.fi
+
+.PP
+Contains three IP to NetBIOS name mappings\&. The first and third will be returned for any queries for the names "TESTPC" and "SAMBASERVER" respectively, whatever the type component of the NetBIOS name requested\&.
+
+.PP
+The second mapping will be returned only when the "0x20" name type for a name "NTSERVER" is queried\&. Any other name type will not be resolved\&.
+
+.PP
+The default location of the \fIlmhosts\fR file is in the same directory as the \fBsmb.conf\fR(5) file\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbclient\fR(1), \fBsmb.conf\fR(5), and \fBsmbpasswd\fR(8) 
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available atftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man5/locale.5 b/raw/man5/locale.5
new file mode 100644
index 0000000..46caf12
--- /dev/null
+++ b/raw/man5/locale.5
@@ -0,0 +1,577 @@
+.\" Hey Emacs, this is -*- nroff -*-
+.\"
+.\" This file is part of locale(1) which displays the settings of the
+.\" current locale.
+.\" Copyright (C) 1994  Jochen Hein (Hein at Student.TU-Clausthal.de)
+.\"
+.\" 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 version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+.\"
+.TH locale 5 1994-11-09 "National Language Support" "Linux User Manual"
+.SH NAME
+locale \- Describes a locale definition file
+.SH DESCRIPTION
+The 
+.B locale
+definition files contains all the information that the
+.BR localedef (1) 
+command needs to convert it into the binary locale database.
+
+The definition files consist of sections which each describe a
+locale category in detail.
+.SH SYNTAX
+The locale definition file starts with a header that may consist
+of the following keywords:
+.TP
+.I <escape_char>
+is followed by a character that should be used as the
+escape-character for the rest of the file to mark characters that
+should be interpreted in a special way. It defaults to 
+the backslash (
+.B \\\\  
+).
+.TP
+.I <comment_char>
+is followed by a character that will be used as the
+comment-character for the rest of the file. It defaults to the
+number sign (#).
+
+.PP
+The locale definition has one part for each locale category.
+Each part can be copied from another existing locale or
+can be defined from scratch. If the category should be copied,
+the only valid keyword in the definition is
+.B copy
+followed by the name of the locale which should be copied.
+
+.SS LC_CTYPE
+.The definition for the 
+.B LC_CTYPE
+category starts with the string 
+.I LC_CTYPE 
+in the first column.
+
+There are the following keywords allowed:
+
+.TP
+.I upper
+followed by a list of uppercase letters. The letters
+.B A
+trough
+.B Z
+are included automatically. Characters also specified as
+.BR cntrl ,
+.BR digit ,
+.BR punct ,
+or
+.B space
+are not allowed.
+
+.TP
+.I lower
+followed by a list of lowercase letters. The letters
+.B a
+trough
+.B z
+are included automatically. Characters also specified as
+.BR cntrl ,
+.BR digit ,
+.BR punct ,
+or
+.B space
+are not allowed.
+
+.TP
+.I alpha
+followed by a list of letters. All character specified as either
+.B upper
+or 
+.B lower
+are automatically included. Characters also specified as
+.BR cntrl ,
+.BR digit ,
+.BR punct ,
+or
+.B space
+are not allowed.
+
+.TP
+.I digit
+followed by the characters classified as numeric digits. Only the
+digits 
+.B 0 
+trough
+.B 9 
+are allowed. They are included by default in this class.
+
+.TP
+.I space
+followed by a list of characters defined as white-space
+characters. Characters also specified as
+.BR upper ,
+.BR lower ,
+.BR alpha ,
+.BR digit ,
+.BR graph ,
+or
+.B xdigit
+are not allowed. The characters
+.BR <space> ,
+.BR <form-feed> ,
+.BR <newline> ,
+.BR <carriage-return> ,
+.BR <tab> ,
+and
+.B <vertical-tab>
+are automatically included.
+
+.TP
+.I cntrl
+followed by a list of control characters.
+Characters also specified as
+.BR upper ,
+.BR lower ,
+.BR alpha ,
+.BR digit ,
+.BR punct ,
+.BR graph ,
+.BR print ,
+or
+.B xdigit
+are not allowed.
+.TP
+.I punct
+followed by a list of punctuation characters. Characters also
+specified as
+.BR upper ,
+.BR lower ,
+.BR alpha ,
+.BR digit ,
+.BR cntrl ,
+.BR xdigit ,
+or the
+.B <space>
+character are not allowed.
+
+.TP
+.I graph
+followed by a list of printable characters, not including the
+.B <space>
+character. The characters defined as
+.BR upper ,
+.BR lower ,
+.BR alpha ,
+.BR digit ,
+.BR xdigit ,
+and
+.B punct 
+are automatically included.
+Characters also specified as
+.B cntrl
+are not allowed.
+
+.TP
+.I print
+followed by a list of printable characters, including the
+.B <space>
+character. The characters defined as
+.BR upper ,
+.BR lower ,
+.BR alpha ,
+.BR digit ,
+.BR xdigit ,
+.BR punct ,
+and the
+.B <space>
+character are automatically included.
+Characters also specified as
+.B cntrl
+are not allowed.
+
+.TP
+.I xdigit
+followed by a list of characters classified as hexadecimal
+digits. The decimal digits must be included followed by one or
+more set of six characters in ascending order. The following
+characters are included by default:
+.B 0
+trough
+.BR 9 ,
+.B a
+trough
+.BR f ,
+.B A
+trough
+.BR F .
+
+.TP
+.I blank
+followed by a list of characters classified as 
+.BR blank .
+The characters
+.B <space>
+and 
+.B <tab>
+are automatically included.
+
+.TP
+.I toupper
+followed by a list of mappings from lowercase to uppercase
+letters. Each mapping is a pair of a lowercase and an uppercase letter
+separated with a 
+.B ,
+and enclosed in parentheses. The members of the list are separated
+with semicolons.
+.TP
+.I tolower
+followed by a list of mappings from uppercase to lowercase
+letters. If the keyword tolower is not present, the reverse of the
+toupper list is used.
+
+.PP
+The 
+.B LC_CTYPE
+definition ends with the string 
+.I END LC_CYTPE.
+
+.SS LC_COLLATE
+The 
+.B LC_COLLATE 
+category defines the rules for collating characters. Due to
+limitations of libc not all POSIX-options are implemented.
+
+The definition starts with the string
+.B LC_COLLATE
+in the first column.
+
+There are the following keywords allowed:
+
+.TP
+.I collating-element
+
+.TP
+.I collating-symbol
+
+.PP
+The order-definition starts with a line:
+.TP
+.I order_start
+.PP
+followed by a list of keywords out of
+.B forward,
+.B backward,
+or
+.B position.
+The order definition consists of lines that describe the order
+and is terminated with the keyword
+.TP
+.I order_end.
+.PP
+
+For more details see the sources in 
+.B /usr/lib/nls/src
+notably the examples
+.B POSIX,
+.B Example
+and 
+.B Example2
+
+.PP
+The 
+.B LC_COLLATE
+definition ends with the string 
+.I END LC_COLLATE.
+
+.SS LC_MONETARY
+The definition starts with the string
+.B LC_MONETARY
+in the first column.
+
+There are the following keywords allowed:
+
+.TP
+.I int_curr_symbol
+followed by the international currency symbol. This must be a
+4-character string containing the international currency symbol as
+defined by the ISO 4217 standard (three characters) followed by a
+separator.
+.TP
+.I currency_symbol
+followed by the local currency symbol.
+.TP
+.I mon_decimal_point
+followed by the string that will be used as the decimal delimiter
+when formatting monetary quantities.
+.TP
+.I mon_thousands_sep
+followed by the string that will be used as a group separator
+when formatting monetary quantities.
+.TP
+.I mon_grouping
+followed by a string that describes the formatting of numeric
+quantities. 
+.TP
+.I positive_sign
+followed by a string that is used to indicate a positive sign for
+monetary quantities.
+.TP
+.I negative_sign
+followed by a string that is used to indicate a negative sign for
+monetary quantities.
+.TP
+.I int_frac_digits
+followed by the number of fractional digits that should be used when
+formatting with the 
+.B int_curr_symbol.
+.TP
+.I frac_digits
+followed by the number of fractional digits that should be used when
+formatting with the 
+.B currency_symbol.
+.TP
+.I p_cs_precedes
+followed by an integer set to 
+.B 1 
+if the
+.I currency_symbol
+or
+.I int_curr_symbol
+ should precede the formatted monetary quantity or set to
+.B 0
+if the symbol succeeds the value.
+.TP
+.I p_sep_by_space
+followed by an integer.
+.RS
+.TP
+.B 0
+means that no space should be printed between the symbol and the
+value.
+.TP
+.B 1
+means that a space should be printed between the symbol and the
+value. 
+.TP
+.B 2 
+means that a space should be printed between the symbol and the
+sign string, if adjacent.
+.RE
+.TP
+.I n_cs_precedes
+.RS
+.TP
+.B 0 
+- the symbol succeeds the value.
+.TP
+.B 1
+- the symbol precedes the value.
+.RE
+.TP
+.I n_sep_by_space
+An integer set to 
+.B 0
+if no space separates the
+.I currency_symbol
+or 
+.I int_curr_symbol
+from the value for a negative monetary quantity, set to
+.B 1
+if a space separates the symbol from the value and set to
+.B 2
+if a space separates the symbol and the sign string, if adjacent.
+.TP
+.I p_sign_posn
+.RS
+.TP
+.B 0
+Parentheses enclose the quantity and the 
+.I currency_symbol
+or
+.I int_curr_symbol.
+.TP
+.B 1
+The sign string precedes the quantity and the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.TP
+.B 2
+The sign string succeeds the quantity and the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.TP
+.B 3
+The sign string precedes the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.TP
+.B 4
+The sign string succeeds the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.RE
+.TP
+.I n_sign_posn
+.RS
+.TP
+.B 0
+Parentheses enclose the quantity and the 
+.I currency_symbol
+or
+.I int_curr_symbol.
+.TP
+.B 1
+The sign string precedes the quantity and the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.TP
+.B 2
+The sign string succeeds the quantity and the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.TP
+.B 3
+The sign string precedes the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.TP
+.B 4
+The sign string succeeds the
+.I currency_symbol
+or the
+.I int_curr_symbol.
+.RE
+.PP
+The 
+.B LC_MONETARY
+definition ends with the string 
+.I END LC_MONETARY.
+
+.SS LC_NUMERIC
+The definition starts with the string
+.B LC_NUMERIC
+in the first column.
+
+The following keywords are allowed:
+
+.TP
+.I decimal_point
+followed by the string that will be used as the decimal delimiter
+when formatting numeric quantities.
+.TP
+.I thousands_sep
+followed by the string that will be used as a group separator
+when formatting numeric quantities.
+.TP
+.I grouping
+followed by a string that describes the formatting of numeric
+quantities. 
+.PP
+The 
+.B LC_NUMERIC
+definition ends with the string 
+.I END LC_NUMERIC.
+
+.SS LC_TIME
+The definition starts with the string
+.B LC_TIME
+in the first column.
+
+The following keywords are allowed:
+
+.TP
+.I abday
+followed by a list of abbreviated weekday names. The list starts with
+Sunday or its translation.
+.TP
+.I day
+followed by a list of weekday names. The list starts with Sunday.
+.TP
+.I abmon
+followed by a list of abbreviated month names.
+.TP
+.I mon
+followed by a list of month names.
+.TP
+.I am_pm
+The appropriate representation of the
+.B am
+and 
+.B pm
+strings.
+.TP
+.I d_t_fmt
+The appropriate date and time format.
+.TP
+.I d_fmt
+The appropriate date format.
+.TP
+.I t_fmt
+The appropriate time format.
+.TP
+.I t_fmt_ampm
+The appropriate time format when using 12h clock format.
+.PP
+The 
+.B LC_TIME
+definition ends with the string 
+.I END LC_TIME.
+
+.SS LC_MESSAGES
+The definition starts with the string
+.B LC_MESSAGES
+in the first column.
+
+The following keywords are allowed:
+
+.TP
+.I yesexpr
+followed by a regular expression that describes possible
+yes-responses. 
+.TP
+.I noexpr
+followed by a regular expression that describes possible
+no-responses. 
+
+.PP
+The 
+.B LC_MESSAGES
+definition ends with the string 
+.I END LC_MESSAGES.
+
+See the POSIX.2 standard for details.
+.SH FILES
+/usr/lib/locale/
+\- database for the current locale setting of that category
+.br
+/usr/lib/nls/charmap/* \- charmap-files
+.SH BUGS
+The manpage isn't complete.
+.\" .SH AUTHOR
+.\" Jochen Hein (Hein at Student.TU-Clausthal.de)
+.SH "CONFORMING TO"
+POSIX.2
+.SH "SEE ALSO"
+.BR setlocale (3),
+.BR localeconv (3),
+.BR charmap (5),
+.BR locale (1),
+.BR localedef (1)
+
diff --git a/raw/man5/man.config.5 b/raw/man5/man.config.5
new file mode 100644
index 0000000..b03e833
--- /dev/null
+++ b/raw/man5/man.config.5
@@ -0,0 +1,42 @@
+.\" @(#)man.conf
+.TH MAN.CONF 5 "30 Mar 1994"
+.SH NAME
+man.conf \- configuration data for man
+.SH DESCRIPTION
+.LP
+This file is read by
+.BR man (1)
+and contains (a) information on how to construct the search path for man,
+(b) full path names for various programs like nroff, eqn, tbl etc. used by man,
+and (c) a list with uncompressors for files with a given extension.
+An alternative version of this file can be specified with
+.LP
+.RS
+man -C private_man.conf ...
+.RE
+.LP
+The command names may be provided with options. 
+Useful options to nroff can be found in grotty(1).
+For example, instead of the default line
+.LP
+.RS
+.nf
+NROFF /usr/bin/groff -mandoc -Tlatin1
+.fi
+.RE
+.LP
+one may write
+.LP
+.RS
+.nf
+NROFF /usr/bin/groff -mandoc -Tlatin1 -P-u -P-b
+.fi
+.RE
+.LP
+in order to suppress underlining and overstriking.
+.SH FILES
+.I "@man_config_file@"
+.SH "SEE ALSO"
+col(1), (g)eqn(1), (g)pic(1), groff(1), grotty(1), (g)refer(1), (g)tbl(1),
+less(1), man (1) and compress(1), gzip(1).
+
diff --git a/raw/man5/motd.5 b/raw/man5/motd.5
new file mode 100644
index 0000000..904b025
--- /dev/null
+++ b/raw/man5/motd.5
@@ -0,0 +1,40 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sat Jul 24 17:08:16 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.TH MOTD 5 1992-12-29 "Linux" "Linux Programmer's Manual"
+.SH NAME
+motd \- message of the day
+.SH DESCRIPTION
+The contents of \fB/etc/motd\fP are displayed by 
+.BR login (1)
+after a successful login but just before it executes the login shell.
+
+The abbreviation "motd" stands for "message of the day", and this file
+has been traditionally used for exactly that (it requires much less disk
+space than mail to all users).
+.SH FILES
+/etc/motd
+.SH "SEE ALSO"
+.BR login (1),
+.BR issue (5)
diff --git a/raw/man5/nologin.5 b/raw/man5/nologin.5
new file mode 100644
index 0000000..5fb0137
--- /dev/null
+++ b/raw/man5/nologin.5
@@ -0,0 +1,37 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified Sun Jul 25 11:06:34 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Corrected Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr at thyrsus.com)
+.TH NOLOGIN 5 1992-12-29 "Linux" "Linux Programmer's Manual"
+.SH NAME
+nologin \- prevent non-root users from logging into the system
+.SH DESCRIPTION
+If the file \fB/etc/nologin\fP exists, 
+.BR login (1)
+will allow access only to root. Other users will
+be shown the contents of this file and their logins will be refused.
+.SH FILES
+/etc/nologin
+.SH "SEE ALSO"
+.BR login (1),
+.BR shutdown (8)
diff --git a/raw/man5/nscd.conf.5 b/raw/man5/nscd.conf.5
new file mode 100644
index 0000000..bf364d9
--- /dev/null
+++ b/raw/man5/nscd.conf.5
@@ -0,0 +1,125 @@
+.\" -*- nroff -*-
+.\" Copyright (c) 1999, 2000 SuSE GmbH Nuernberg, Germany
+.\" Author: Thorsten Kukuk <kukuk at suse.de>
+.\"
+.\" 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 version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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; see the file COPYING.  If not,
+.\" write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+.\" Boston, MA 02111-1307, USA.
+.\"
+.TH nscd.conf 5 1999-10 "GNU C Library"
+.SH NAME
+/etc/nscd.conf - name service cache daemon configuration file
+.SH DESCRIPTION
+The file
+.B /etc/nscd.conf
+is read from
+.BR nscd (8)
+at startup. Each line specifies either an attribute and a value, or an
+attribute, service, and a value. Fields are separated either by SPACE
+or TAB characters. A `#' (number sign) indicates the beginning of a
+comment; following characters, up to the end of the line,
+are not interpreted by nscd.
+
+
+Valid services are passwd, group, or hosts.
+
+.B logfile
+.I debug-file-name
+.RS
+Specifies name of the file to which debug info should be written.
+.RE
+
+.B debug-level
+.I value
+.RS
+Sets the desired debug level.
+.RE
+
+.B threads
+.I number
+.RS
+This is the number of threads that are started to wait for
+requests. At least five threads will always be created.
+.RE
+
+.B server-user
+.I user
+.RS
+If this option is set, nscd will run as this user and not as root.
+If a separate cache for every user is used (-S parameter), this
+option is ignored.
+.RE
+
+.B enable-cache
+.I service
+.I <yes|no>
+.RS
+Enables or disables the specified
+.I service
+cache.
+.RE
+
+.B positive-time-to-live
+.I service
+.I value
+.RS
+Sets the TTL (time-to-live) for positive entries (successful queries)
+in the specified cache for
+.IR service .
+.I Value
+is in seconds. Larger values increase cache hit rates and reduce mean
+response times, but increase problems with cache coherence.
+.RE
+
+.B negative-time-to-live
+.I service
+.I value
+.RS
+Sets the TTL (time-to-live) for negative entries (unsuccessful queries)
+in the specified cache for
+.IR service .
+.I Value
+is in seconds. Can result in significant performance improvements if there
+are several files owned by uids (user IDs) not in system databases (for
+example untarring the linux kernel sources as root); should be kept small
+to reduce cache coherency problems.
+.RE
+
+.B suggested-size
+.I service
+.I value
+.RS
+This is the internal hash table size,
+.I value
+should remain a prime number for optimum efficiency.
+.RE
+
+.B check-files
+.I service
+.I <yes|no>
+.RS
+Enables or disables checking the file belonging to the specified
+.I service
+for changes. The files are
+.IR /etc/passwd ,
+.IR /etc/group ,
+and
+.IR /etc/hosts .
+.RE
+
+.SH "SEE ALSO"
+.BR nscd (8)
+.SH AUTHOR
+.B nscd
+was written by Thorsten Kukuk and Ulrich Drepper.
diff --git a/raw/man5/passwd.5 b/raw/man5/passwd.5
new file mode 100644
index 0000000..fec474e
--- /dev/null
+++ b/raw/man5/passwd.5
@@ -0,0 +1,127 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified Sun Jul 25 10:46:28 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Aug 21 18:12:27 1994 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Jun 18 01:53:57 1995 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Mon Jan  5 20:24:40 MET 1998 by Michael Haardt
+.\"  (michael at cantor.informatik.rwth-aachen.de)
+.TH PASSWD 5 1998-01-05 "" "File formats"
+.SH NAME
+passwd \- password file
+.SH DESCRIPTION
+.B Passwd
+is a text file, that contains a list of the system's accounts,
+giving for each account some useful information like user ID,
+group ID, home directory, shell, etc.
+Often, it also contains the encrypted passwords for each account.
+It should have general read permission (many utilities, like
+.BR ls (1)
+use it to map user IDs to user names), but write access only for the
+superuser.
+.PP
+In the good old days there was no great problem with this general
+read permission.  Everybody could read the encrypted passwords, but the
+hardware was too slow to crack a well-chosen password, and moreover, the
+basic assumption used to be that of a friendly user-community.  These days
+many people run some version of the shadow password suite, where
+.I /etc/passwd
+has *'s instead of encrypted passwords, and the encrypted passwords are in
+.I /etc/shadow
+which is readable by the superuser only.
+.PP
+Regardless of whether shadow passwords are used, many sysadmins
+use a star in the encrypted password field to make sure
+that this user can not authenticate him- or herself using a
+password. (But see the Notes below.)
+.PP
+If you create a new login, first put a star in the password field,
+then use
+.BR passwd (1)
+to set it.
+.PP
+There is one entry per line, and each line has the format:
+.sp
+.RS
+account:password:UID:GID:GECOS:directory:shell
+.RE
+.sp
+The field descriptions are:
+.sp
+.RS
+.TP 1.0in
+.I account
+the name of the user on the system.  It should not contain capital letters.
+.TP
+.I password
+the encrypted user password or a star.
+.TP
+.I UID
+the numerical user ID.
+.TP
+.I GID
+the numerical primary group ID for this user.
+.TP
+.I GECOS
+This field is optional and only used for informational purposes.
+Usually, it contains the full user name.  GECOS means General Electric
+Comprehensive Operating System, which has been renamed to GCOS when
+GE's large systems division was sold to Honeywell.  Dennis Ritchie has
+reported: "Sometimes we sent printer output or batch jobs to the GCOS
+machine.  The gcos field in the password file was a place to stash the
+information for the $IDENTcard.  Not elegant."
+.TP
+.I directory
+the user's $HOME directory.
+.TP
+.I shell
+the program to run at login (if empty, use
+.BR /bin/sh ).
+If set to a non-existing executable, the user will be unable to login
+through
+.BR login (1).
+.RE
+.SH NOTE
+If you want to create
+user groups, their GIDs must be equal and there must be an entry in
+\fI/etc/group\fP, or no group will exist.
+.PP
+If the encrypted password is set to a star, the user will be unable
+to login using
+.BR login (1),
+but may still login using
+.BR rlogin (1),
+run existing processes and initiate new ones through
+.BR rsh (1),
+.BR cron (1),
+.BR at (1),
+or mail filters, etc.  Trying to lock an account by simply changing the
+shell field yields the same result and additionally allows the use of
+.BR su (1).
+.SH FILES
+.I /etc/passwd
+.SH "SEE ALSO"
+.BR passwd (1),
+.BR login (1),
+.BR su (1),
+.BR group (5),
+.BR shadow (5)
diff --git a/raw/man5/proc.5 b/raw/man5/proc.5
new file mode 100644
index 0000000..c83a52f
--- /dev/null
+++ b/raw/man5/proc.5
@@ -0,0 +1,1424 @@
+.\" Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" with networking additions from Alan Cox (A.Cox at swansea.ac.uk)
+.\" and scsi additions from Michael Neuffer (neuffer at mail.uni-mainz.de)
+.\" and sysctl additions from Andries Brouwer (aeb at cwi.nl)
+.\" and System V IPC (as well as various other) additions from
+.\" Michael Kerrisk (mtk16 at ext.canterbury.ac.nz)
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Wed May 17 15:26:04 1995: faith at cs.unc.edu, updated BUGS section
+.\" Minor changes by aeb and Marty Leisner (leisner at sdsp.mc.xerox.com).
+.\" Sat Apr 13 02:32:45 1996: aeb at cwi.nl, added sys, various fixes.
+.\" Mon Jul 22 17:14:44 1996: aeb at cwi.nl, minor fix.
+.\" Sun Dec 16 11:39:19 2001: rwhron at earthlink.net, update for 2.4.
+.\" Sat Jul 13 14:00:00 2002: jbelton at shaw.ca, added to sys/fs and sys/kernel.
+.\" Modified, 22 Jul 2002, Michael Kerrisk <mtk16 at ext.canterbury.ac.nz>
+.\" Modified, 27 May 2003, Michael Kerrisk <mtk16 at ext.canterbury.ac.nz>
+.\"
+.TH PROC 5 2003-05-27 "" "Linux Programmer's Manual"
+.SH NAME
+proc \- process information pseudo-filesystem
+
+.SH DESCRIPTION
+/proc is a pseudo-filesystem which is used as an interface to kernel
+data structures rather than reading and interpreting /dev/kmem.
+Most of it is read-only, but some files allow kernel variables to be changed.
+.LP
+The following outline gives a quick tour through the /proc hierarchy.
+.LP
+.\" .na
+.\" .nh
+.PD 1
+.TP
+.I [number]
+There is a numerical subdirectory for each running process; the
+subdirectory is named by the process ID.  Each contains the following
+pseudo-files and directories.
+.RS
+.TP
+.I cmdline
+This holds the complete command line for the process, unless the whole
+process has been swapped out, or unless the process is a zombie.  In
+either of these later cases, there is nothing in this file: i.e. a
+read on this file will return 0 characters.
+The command line arguments appear in this file as a set of 
+null-separated strings, with a further null byte after the last string.
+.TP
+.I cwd
+This is a link to the current working directory of the process.  To find out
+the cwd of process 20, for instance, you can do this:
+
+.br
+.nf
+.ft CW
+cd /proc/20/cwd; /bin/pwd
+.fi
+.ft
+
+Note that the pwd command is often a shell builtin, and might
+not work properly. In bash, you may use pwd -P.
+.TP
+.I environ
+This file contains the environment for the process.
+The entries are separated by null characters,
+and there may be a null character at the end.
+Thus, to print out the environment of process 1, you would do:
+
+.br
+.nf
+.ft CW
+(cat /proc/1/environ; echo) | tr "\\000" "\\n"
+.fi
+.ft P
+
+(For a reason why one should want to do this, see
+.BR lilo (8).)
+.TP
+.I exe
+Under Linux 2.2 and 2.4 
+.I exe
+is a symbolic link containing the actual path name of the executed command.
+The 
+.I exe
+symbolic link can be dereferenced normally - attempting to open 
+.I exe
+will open the executable.  You can even type
+.I /proc/[number]/exe
+to run another copy of the same process as [number].
+
+Under Linux 2.0 and earlier
+.I exe
+is a pointer to the binary which was executed, 
+and appears as a symbolic link. A
+.BR readlink (2)
+call on the
+.I exe
+special file under Linux 2.0 returns a string in the format:
+
+[device]:inode
+
+For example, [0301]:1502 would be inode 1502 on device major 03 (IDE,
+MFM, etc. drives) minor 01 (first partition on the first drive).
+
+.BR find (1)
+with the -inum option can be used to locate the file.
+.TP
+.I fd
+This is a subdirectory containing one entry for each file which the
+process has open, named by its file descriptor, and which is a
+symbolic link to the actual file (as the exe entry does).  Thus, 0 is
+standard input, 1 standard output, 2 standard error, etc.
+
+Programs that will take a filename, but will not take the standard
+input, and which write to a file, but will not send their output to
+standard output, can be effectively foiled this way, assuming that -i
+is the flag designating an input file and -o is the flag designating
+an output file:
+.br
+.nf
+\f(CWfoobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...\fR
+.fi
+.br
+and you have a working filter.  Note that this will not work for
+programs that seek on their files, as the files in the fd directory
+are not seekable.
+
+/proc/self/fd/N is approximately the same as /dev/fd/N in some UNIX
+and UNIX-like systems.  Most Linux MAKEDEV scripts symbolically link
+/dev/fd to /proc/self/fd, in fact.
+.TP
+.I maps
+A file containing the currently mapped memory regions and their access
+permissions.
+
+The format is:
+
+.nf
+.ft CW
+.in 8n
+address           perms offset  dev   inode      pathname
+08048000-08056000 r-xp 00000000 03:0c 64593      /usr/sbin/gpm
+08056000-08058000 rw-p 0000d000 03:0c 64593      /usr/sbin/gpm
+08058000-0805b000 rwxp 00000000 00:00 0
+40000000-40013000 r-xp 00000000 03:0c 4165       /lib/ld-2.2.4.so
+40013000-40015000 rw-p 00012000 03:0c 4165       /lib/ld-2.2.4.so
+4001f000-40135000 r-xp 00000000 03:0c 45494      /lib/libc-2.2.4.so
+40135000-4013e000 rw-p 00115000 03:0c 45494      /lib/libc-2.2.4.so
+4013e000-40142000 rw-p 00000000 00:00 0
+bffff000-c0000000 rwxp 00000000 00:00 0
+.ft
+.fi
+.in
+
+where address is the address space in the process that it occupies,
+perms is a set of permissions:
+
+.nf
+.in +5
+r = read
+w = write
+x = execute
+s = shared
+p = private (copy on write)
+.fi
+.in
+
+offset is the offset into the file/whatever, dev is the device
+(major:minor), and inode is the inode on that device.  0 indicates
+that no inode is associated with the memory region, as the case would
+be with bss.
+
+Under Linux 2.0 there is no field giving pathname.
+.TP
+.I mem
+Via the
+.I mem
+file one can access the pages of a process's memory through
+.BR open (2),
+.BR read (2),
+and
+.BR fseek (3).
+.TP
+.I root
+Unix and Linux support the idea of a per-process root of the
+filesystem, set by the
+.BR chroot (2)
+system call.  Root points to the file system root, and behaves as exe,
+fd/*, etc. do.
+.TP
+.I stat
+Status information about the process.  This is used by
+.BR ps (1).  
+It is defined in 
+.IR /usr/src/linux/fs/proc/array.c "."
+
+The fields, in order, with their proper
+.BR scanf (3)
+format specifiers, are:
+.RS
+.TP
+\fIpid\fP %d
+The process id.
+.TP
+\fIcomm\fP %s
+The filename of the executable, in parentheses.  This is visible
+whether or not the executable is swapped out.
+.TP
+\fIstate\fP %c
+One character from the string "RSDZTW" where R is running, S is
+sleeping in an interruptible wait, D is waiting in uninterruptible
+disk sleep, Z is zombie, T is traced or stopped (on a signal),
+and W is paging.
+.TP
+\fIppid\fP %d
+The PID of the parent.
+.TP
+\fIpgrp\fP %d
+The process group ID of the process.
+.TP
+\fIsession\fP %d
+The session ID of the process.
+.TP
+.\" tty_nr needs better explanation.
+\fItty_nr\fP %d
+The tty the process uses.
+.TP
+\fItpgid\fP %d
+The process group ID of the process which currently owns the tty that
+the process is connected to.
+.TP
+\fIflags\fP %lu
+The flags of the process.
+The math bit is decimal 4, and the traced bit is decimal 10.
+.TP
+\fIminflt\fP %lu
+The number of minor faults the process has made which have not
+required loading a memory page from disk.
+.TP
+\fIcminflt\fP %lu
+The number of minor faults that the process and its children have
+made.
+.TP
+\fImajflt\fP %lu
+The number of major faults the process has made which have
+required loading a memory page from disk.
+.TP
+\fIcmajflt\fP %lu
+The number of major faults that the process and its children have
+made.
+.TP
+\fIutime\fP %lu
+The number of jiffies that this process has been scheduled in user
+mode.
+.TP
+\fIstime\fP %lu
+The number of jiffies that this process has been scheduled in kernel
+mode.
+.TP
+\fIcutime\fP %ld
+The number of jiffies that this process and its children have been
+scheduled in user mode.
+.TP
+\fIcstime\fP %ld
+The number of jiffies that this process and its children have been
+scheduled in kernel mode.
+.TP
+\fIpriority\fP %ld
+The standard nice value, plus fifteen.  The value is never negative in
+the kernel.
+.TP
+\fInice\fP %ld
+The nice value ranges from 19 (nicest) to -19 (not nice to others).
+.TP
+.\" .TP
+.\" \fIcounter\fP %ld
+.\" The current maximum size in jiffies of the process's next timeslice,
+.\" or what is currently left of its current timeslice, if it is the
+.\" currently running process.
+.\" .TP
+.\" \fItimeout\fP %u
+.\" The time in jiffies of the process's next timeout.
+\fI0\fP %ld
+This value is hard coded to 0 as a placeholder for a removed field.
+.TP
+\fIitrealvalue\fP %ld
+The time in jiffies before the next SIGALRM is sent to the process
+due to an interval timer.
+.TP
+\fIstarttime\fP %lu
+The time in jiffies the process started after system boot.
+.TP
+\fIvsize\fP %lu
+Virtual memory size in bytes.
+.TP
+\fIrss\fP %ld
+Resident Set Size: number of pages the process has in real memory,
+minus 3 for administrative purposes. This is just the pages which
+count towards text, data, or stack space.  This does not include pages
+which have not been demand-loaded in, or which are swapped out.
+.TP
+\fIrlim\fP %lu
+Current limit in bytes on the rss of the process (usually
+4294967295 on i386).
+.TP
+\fIstartcode\fP %lu
+The address above which program text can run.
+.TP
+\fIendcode\fP %lu
+The address below which program text can run.
+.TP
+\fIstartstack\fP %lu
+The address of the start of the stack.
+.TP
+\fIkstkesp\fP %lu
+The current value of esp (stack pointer), as found in the
+kernel stack page for the process.
+.TP
+\fIkstkeip\fP %lu
+The current EIP (instruction pointer).
+.TP
+\fIsignal\fP %lu
+The bitmap of pending signals (usually 0).
+.TP
+\fIblocked\fP %lu
+The bitmap of blocked signals (usually 0, 2 for shells).
+.TP
+\fIsigignore\fP %lu
+The bitmap of ignored signals.
+.TP
+\fIsigcatch\fP %lu
+The bitmap of catched signals.
+.TP
+\fIwchan\fP %lu
+This is the "channel" in which the process is waiting.  It is the
+address of a system call, and can be looked up in a namelist if you
+need a textual name.  (If you have an up-to-date /etc/psdatabase, then
+try \fIps -l\fP to see the WCHAN field in action.)
+.TP
+\fInswap\fP %lu
+Number of pages swapped - not maintained.
+.TP
+\fIcnswap\fP %lu
+Cumulative \fInswap\fP for child processes.
+.TP
+\fIexit_signal\fP %d
+Signal to be sent to parent when we die.
+.TP
+\fIprocessor\fP %d
+CPU number last executed on.
+.RE
+.TP
+.I statm
+Provides information about memory status in pages.  The columns are:
+ size       total program size
+ resident   resident set size
+ share      shared pages
+ trs        text (code)
+ drs        data/stack
+ lrs        library
+ dt         dirty pages
+.TP
+.I status
+Provides much of the information in
+.I stat
+and
+.I statm
+in an format that's easier for humans to parse.
+.RE
+.TP
+.I apm
+Advanced power management version and battery information
+when CONFIG_APM is defined at kernel compilation time.
+.TP
+.I bus
+Contains subdirectories for installed busses.
+.RS
+.TP
+.I pccard
+Subdirectory for pcmcia devices when CONFIG_PCMCIA is set
+at kernel compilation time.
+.RS
+.TP
+.I drivers
+.RE
+.RE
+.RS
+.TP
+.I pci
+Contains various bus subdirectories and pseudo-files containing 
+information about pci busses, installed devices, and device 
+drivers.  Some of these files are not ASCII.  
+.RS
+.TP
+.I devices
+Information about pci devices.  They may be accessed through 
+.BR lspci (8)
+and
+.BR setpci (8).
+.RE
+.RE
+.TP
+.I cmdline
+Arguments passed to the Linux kernel at boot time.  Often done via
+a boot manager such as
+.BR lilo (1).
+.TP
+.I cpuinfo
+This is a collection of CPU and system architecture dependent items,
+for each supported architecture a different list.
+Two common entries are \fIprocessor\fP which gives CPU number and
+\fIbogomips\fP; a system constant that is calculated 
+during kernel initialization.  SMP machines have information for
+each CPU.
+.TP
+.I devices
+Text listing of major numbers and device groups.  This can be used by
+MAKEDEV scripts for consistency with the kernel.
+.TP
+.I dma
+This is a list of the registered \fIISA\fP DMA (direct memory access) 
+channels in use.
+.TP
+.I driver
+Empty subdirectory.
+.TP
+.I execdomains
+List of the execution domains (ABI personalities).
+.TP
+.I fb
+Frame buffer information when CONFIG_FB is defined during kernel 
+compilation.
+.TP
+.I filesystems
+A text listing of the filesystems which were compiled into the kernel.
+Incidentally, this is used by
+.BR mount (1)
+to cycle through different filesystems when none is specified.
+.TP
+.I fs
+Empty subdirectory.
+.TP
+.I ide
+.I ide
+exists on systems with the ide bus.  There are directories for each
+ide channel and attached device.  Files include:
+
+.nf
+cache              buffer size in KB
+capacity           number of sectors
+driver             driver version
+geometry           physical and logical geometry
+identify           in hexidecimal
+media              media type
+model              manufacturer's model number
+settings           drive settings
+smart_thresholds   in hexidecimal
+smart_values       in hexidecimal
+.fi
+
+The 
+.BR hdparm (8)
+utility provides access to this information in a friendly format.
+.TP
+.I interrupts
+This is used to record the number of interrupts per each IRQ on (at
+least) the i386 architechure.  Very easy to read formatting, done in
+ASCII.
+.TP
+.I iomem
+I/O memory map in Linux 2.4.
+.TP
+.I ioports
+This is a list of currently registered Input-Output port regions that 
+are in use.
+.TP
+.I kcore
+This file represents the physical memory of the system and is stored
+in the ELF core file format.  With this pseudo-file, and an unstripped
+kernel (/usr/src/linux/vmlinux) binary, GDB can be used to
+examine the current state of any kernel data structures.
+
+The total length of the file is the size of physical memory (RAM) plus
+4KB.
+.TP
+.I kmsg
+This file can be used instead of the
+.BR syslog (2)
+system call to read kernel messages.  A process must have superuser
+privileges to read this file, and only one process should read this
+file.  This file should not be read if a syslog process is running
+which uses the
+.BR syslog (2)
+system call facility to log kernel messages.
+
+Information in this file is retrieved with the
+.BR dmesg (8)
+program.
+.TP
+.I ksyms
+This holds the kernel exported symbol definitions used by the
+.BR modules (X)
+tools to dynamically link and bind loadable modules.
+.TP
+.I loadavg
+The load average numbers give the number of jobs in the run queue (state R)
+or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes.
+They are the same as the load average numbers given by
+.BR uptime (1)
+and other programs.
+.TP
+.I locks
+This file shows current file locks
+.RB ( flock "(2) and " fcntl (2))
+and leases
+.RB ( fcntl (2)).
+.TP
+.I malloc
+This file is only present if CONFIGDEBUGMALLOC was defined during
+compilation.
+.TP
+.I meminfo
+This is used by
+.BR free (1)
+to report the amount of free and used memory (both physical and swap)
+on the system as well as the shared memory and buffers used by the
+kernel.
+
+It is in the same format as
+.BR free (1),
+except in bytes rather than KB.
+.TP
+.I mounts
+This is a list of all the file systems currently mounted on the system.
+The format of this file is documented in
+.IR fstab (5).
+.TP
+.I modules
+A text list of the modules that have been loaded by the system.
+See also
+.BR lsmod (8).
+.TP
+.I mtrr
+Memory Type Range Registers.  
+See 
+.I /usr/src/linux/Documentation/mtrr.txt
+for details.
+.TP
+.I net
+various net pseudo-files, all of which give the status of some part of
+the networking layer.  These files contain ASCII structures and are,
+therefore, readable with cat.  However, the standard
+.BR netstat (8)
+suite provides much cleaner access to these files.
+.RS
+.TP
+.I arp
+This holds an ASCII readable dump of the kernel ARP table used for
+address resolutions. It will show both dynamically learned and
+pre-programmed ARP entries.  The format is:
+
+.nf
+.ft CW
+.in 8n
+IP address     HW type   Flags     HW address          Mask   Device
+192.168.0.50   0x1       0x2       00:50:BF:25:68:F3   *      eth0
+192.168.0.250  0x1       0xc       00:00:00:00:00:00   *      eth0
+.ft
+.fi
+.in
+.PP
+Here 'IP address' is the IPv4 address of the machine and the 'HW type' is the
+hardware type of the address from RFC 826. The flags are the internal flags
+of the ARP structure (as defined in /usr/include/linux/if_arp.h) and the 'HW
+address' is the physical layer mapping for that IP address if it is known.
+.TP
+.I dev
+The dev pseudo-file contains network device status information. This gives
+the number of received and sent packets, the number of errors and collisions
+and other basic statistics. These are used by the
+.BR ifconfig (8)
+program to report device status.  The format is:
+
+.nf
+.ft CW
+.in 1n
+Inter-|   Receive                                                |  Transmit
+ face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
+    lo: 2776770   11307    0    0    0     0          0         0  2776770   11307    0    0    0     0       0          0
+  eth0: 1215645    2751    0    0    0     0          0         0  1782404    4324    0    0    0   427       0          0
+  ppp0: 1622270    5552    1    0    0     0          0         0   354130    5669    0    0    0     0       0          0
+  tap0:    7714      81    0    0    0     0          0         0     7714      81    0    0    0     0       0          0
+.in
+.ft
+.fi
+.\" .TP
+.\" .I ipx
+.\" No information.
+.\" .TP
+.\" .I ipx_route
+.\" No information.
+.TP
+.I dev_mcast
+Defined in
+.IR /usr/src/linux/net/core/dev_mcast.c :
+.nf
+.in +5
+indx ifterface_name  dmi_u dmi_g dmi_address
+2    eth0            1     0     01005e000001
+3    eth1            1     0     01005e000001
+4    eth2            1     0     01005e000001
+.in
+.fi
+.TP
+.I igmp
+Internet Group Management Protocol.  Defined in
+.IR /usr/src/linux/net/core/igmp.c .
+.TP
+.I rarp
+This file uses the same format as the
+.I arp
+file and contains the current reverse mapping database used to provide
+.BR rarp (8)
+reverse address lookup services. If RARP is not configured into the kernel,
+this file will not be present.
+.TP
+.I raw
+Holds a dump of the RAW socket table. Much of the information is not of use
+apart from debugging. The 'sl' value is the kernel hash slot for the socket,
+the 'local address' is the local address and protocol number pair."St" is
+the internal status of the socket. The "tx_queue" and "rx_queue" are the
+outgoing and incoming data queue in terms of kernel memory usage. The "tr",
+"tm->when", and "rexmits" fields are not used by RAW. The uid field holds the
+creator euid of the socket.
+.\" .TP
+.\" .I route
+.\" No information, but looks similar to
+.\" .BR route (8).
+.TP
+.I snmp
+This file holds the ASCII data needed for the IP, ICMP, TCP, and UDP management
+information bases for an snmp agent. 
+.TP
+.I tcp
+Holds a dump of the TCP socket table. Much of the information is not of use
+apart from debugging. The "sl" value is the kernel hash slot for the socket,
+the "local address" is the local address and port number pair. The "remote
+address" is the remote address and port number pair (if connected). 'St' is
+the internal status of the socket. The 'tx_queue' and 'rx_queue' are the
+outgoing and incoming data queue in terms of kernel memory usage. The "tr",
+"tm->when", and "rexmits" fields hold internal information of the kernel
+socket state and are only useful for debugging. The uid field holds the
+creator euid of the socket.
+.TP
+.I udp
+Holds a dump of the UDP socket table. Much of the information is not of use
+apart from debugging. The "sl" value is the kernel hash slot for the socket,
+the "local address" is the local address and port number pair. The "remote
+address" is the remote address and port number pair (if connected). "St" is
+the internal status of the socket. The "tx_queue" and "rx_queue" are the
+outgoing and incoming data queue in terms of kernel memory usage. The "tr",
+"tm->when", and "rexmits" fields are not used by UDP. The uid field holds the
+creator euid of the socket.  The format is:
+
+.nf
+.ft CW
+.in 1n
+sl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm->when uid
+ 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
+ 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
+ 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
+.in
+.ft
+.fi
+.TP
+.I unix
+Lists the UNIX domain sockets present within the system and their
+status.  The format is:
+.nf
+.sp .5
+.ft CW
+Num RefCount Protocol Flags    Type St Path
+ 0: 00000002 00000000 00000000 0001 03
+ 1: 00000001 00000000 00010000 0001 01 /dev/printer
+.ft
+.sp .5
+.fi
+.PP
+Here 'Num' is the kernel table slot number, 'RefCount' is the number
+of users of the socket, 'Protocol' is currently always 0, 'Flags'
+represent the internal kernel flags holding the status of the
+socket. Currently, type is always '1' (Unix domain datagram sockets are
+not yet supported in the kernel). 'St' is the internal state of the
+socket and Path is the bound path (if any) of the socket.
+.RE
+.TP
+.I partitions
+Contains major and minor numbers of each partition as well as number
+of blocks and partition name.
+.TP
+.I pci
+This is a listing of all PCI devices found during kernel initialization
+and their configuration.
+.TP
+.I scsi
+A directory with the scsi midlevel pseudo-file and various SCSI lowlevel driver 
+directories, which contain a file for each SCSI host in this system, all of 
+which give the status of some part of the SCSI IO subsystem.  
+These files contain ASCII structures and are, therefore, readable with cat.  
+
+You can also write to some of the files to reconfigure the subsystem or switch
+certain features on or off.
+.RS
+.TP
+.I scsi
+This is a listing of all SCSI devices known to the kernel. The listing is 
+similar to the one seen during bootup.
+scsi currently supports only the \fIadd-single-device\fP command which allows
+root to add a hotplugged device to the list of known devices.
+
+An 
+.B echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi 
+will cause 
+host scsi1 to scan on SCSI channel 0 for a device on ID 5 LUN 0. If there 
+is already a device known on this address or the address is invalid, an
+error will be returned.
+.TP
+.I drivername
+\fIdrivername\fP can currently be NCR53c7xx, aha152x, aha1542, aha1740, 
+aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, 
+scsi_debug, seagate, t128, u15-24f, ultrastore, or wd7000. 
+These directories show up for all drivers that registered at least one SCSI 
+HBA. Every directory contains one file per registered host. Every host-file is
+named after the number the host was assigned during initialization. 
+
+Reading these files will usually show driver and host configuration, 
+statistics etc.
+
+Writing to these files allows different things on different hosts.
+For example, with the \fIlatency\fP and \fInolatency\fP commands,
+root can switch on and off command latency measurement code in the
+eata_dma driver. With the \fIlockup\fP and \fIunlock\fP commands,
+root can control bus lockups simulated by the scsi_debug driver. 
+.RE
+.TP
+.I self
+This directory refers to the process accessing the /proc filesystem,
+and is identical to the /proc directory named by the process ID of the
+same process.
+.TP
+.I slabinfo
+Information about kernel caches.  The columns are:
+.nf
+cache-name
+num-active-objs
+total-objs
+object-size
+num-active-slabs
+total-slabs
+num-pages-per-slab
+.fi
+See 
+.BR slabinfo (5)
+for details.
+.TP
+.I stat
+kernel/system statistics.  Varies with architecture.  Common 
+entries include:
+.RS
+.TP
+\fIcpu  3357 0 4313 1362393\fP
+The number of jiffies (1/100ths of a second) that the system spent in
+user mode, user mode with low priority (nice), system mode, and the
+idle task, respectively.  The last value should be 100 times the
+second entry in the uptime pseudo-file.
+.TP
+\fIpage 5741 1808\fP
+The number of pages the system paged in and the number that were paged
+out (from disk).
+.TP
+\fIswap 1 0\fP
+The number of swap pages that have been brought in and out.
+.TP
+\fIintr 1462898\fP
+The number of interrupts received from the system boot.
+.TP
+\fIdisk_io: (2,0):(31,30,5764,1,2) (3,0):\fP...
+(major,minor):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
+.TP
+\fIctxt 115315\fP
+The number of context switches that the system underwent.
+.TP
+\fIbtime 769041601\fP
+boot time, in seconds since the epoch (January 1, 1970).
+.TP
+\fIprocesses 86031\fP
+Number of forks since boot.
+.RE
+.TP
+.I swaps
+Swap areas in use.  See also
+.BR swapon (8).
+.TP
+.I sys
+This directory (present since 1.3.57) contains a number of files
+and subdirectories corresponding to kernel variables.
+These variables can be read and sometimes modified using
+the \fIproc\fP file system, and the
+.BR sysctl (2)
+system call. Presently, there are subdirectories
+.IR abi ", " debug ", " dev ", " fs ", " kernel ", " net ", " proc ", "
+.IR rxrpc ", " sunrpc " and " vm
+that each contain more files and subdirectories.
+.RS
+.TP
+.I abi
+This directory may contain files with application binary information.
+On some systems, it is not present.
+.TP
+.I debug
+This directory may be empty.
+.TP
+.I dev
+This directory contains device specific information (eg dev/cdrom/info).  On
+some systems, it may be empty.
+.TP
+.I fs
+This contains the subdirectory
+.IR binfmt_misc
+and files
+.IR dentry-state ", " dir-notify-enable ", " dquot-nr ", " file-max ", " 
+.IR file-nr ", " inode-max ", " inode-nr ", " inode-state ", " 
+.IR lease-break-time ", " leases-enable ", " overflowgid ", " overflowuid
+.IR super-max " and " super-nr
+with function fairly clear from the name.
+.LP
+Documentation for the files in
+.I /proc/sys/binfmt_misc
+can be found in the kernel sources in
+.IR Documentation/binfmt_misc.txt .
+.LP
+The file
+.I dentry-state
+contains six numbers, 
+.IR nr_dentry ", " nr_unused ", " age_limit " (age in seconds), " want_pages
+(pages requested by system) and two dummy values.
+nr_dentry seems to be 0 all the time.
+nr_unused seems to be the number of unused dentries.
+age_limit is the age in seconds after which dcache entries
+can be reclaimed when memory is short and want_pages is
+nonzero when the kernel has called shrink_dcache_pages() and the
+dcache isn't pruned yet.
+.LP
+The file
+.I dir-notify-enable
+can be used to disable or enable the
+.I dnotify
+interface described in
+.BR fcntl (2)
+on a system-wide basis.
+A value of 0 in this file disables the interface,
+and a value of 1 enables it.
+.LP
+The file
+.I dquot-max
+shows the maximum number of cached disk quota entries.
+On some (2.4) systems, it is not present.
+If the number of free cached disk quotas is very low and
+you have some awesome number of simultaneous system users,
+you might want to raise the limit.
+.LP
+The file
+.I dquot-nr
+shows the number of allocated disk quota
+entries and the number of free disk quota entries.
+.LP
+The file
+.I file-max
+is a system-wide limit on the number of open files for all processes.
+(See also
+.BR setrlimit (2),
+which can be used by a process to set the per-process limit,
+.BR RLIMIT_NOFILE ,
+on the number of files it may open.)
+If you get lots
+of error messages about running out of file handles,
+try increasing this value:
+.br
+
+.br
+.nf
+.ft CW
+echo 100000 > /proc/sys/fs/file-max
+.fi
+.ft
+.LP
+The kernel constant
+.I NR_OPEN
+imposes an upper limit on the value that may be placed in
+.IR file-max .
+.LP
+If you increase 
+.IR file-max ","
+be sure to increase
+.I inode-max
+to 3-4 times the new
+value of 
+.IR file-max ","
+or you will run out of inodes.
+.LP
+The (read-only) file
+.I file-nr
+gives the number of files presently opened.
+It contains three numbers: The number of allocated
+file handles, the number of free file handles and the maximum
+number of file handles.  The kernel allocates file handles dynamically, but it
+doesn't free them again.  If the number of allocated files is close to the 
+maximum, you should consider increasing the maximum.
+When the number of free file handles is
+large, you've encountered a peak in your usage of file
+handles and you probably don't need to increase the maximum.
+.LP
+The file
+.I inode-max 
+contains the maximum number of in-memory inodes.
+On some (2.4) systems, it may not be
+present. This value should be 3-4 times larger
+than the value in file-max, since stdin, stdout and network sockets also
+need an inode to handle them. When you regularly run
+out of inodes, you need to increase this value.
+.LP
+The file
+.I inode-nr
+contains the first two values from inode-state.
+.LP
+The file
+.I inode-state
+contains seven numbers: nr_inodes, nr_free_inodes, preshrink and four dummy
+values.
+nr_inodes is the number of inodes the system has
+allocated.  This can be slightly more than inode-max because
+Linux allocates them one pageful at a time.
+nr_free_inodes represents the number of free inodes.
+preshrink is nonzero when the nr_inodes > inode-max and the
+system needs to prune the inode list instead of allocating
+more.
+.LP
+The file
+.I lease-break-time
+specifies the grace period that the kernel grants to a process
+holding a file lease
+.RB ( fcntl (2))
+after it has sent a signal to that process notifying it
+that another process is waiting to open the file.
+If the lease holder does not remove or downgrade the lease within
+this grace period, the kernel forcibly breaks the lease.
+.LP
+The file
+.I leases-enable
+can be used to enable or disable file leases
+.RB ( fcntl (2))
+on a system-wide basis.
+If this file contains the value 0, leases are disabled.
+A non-zero value enables leases.
+.LP
+The files
+.IR overflowgid " and "
+.I overflowuid
+allow you to change the value of the fixed UID and GID.
+The default is 65534.
+Some filesystems only support 16-bit UIDs and GIDs, although in Linux
+UIDs and GIDs are 32 bits. When one of these filesystems is mounted
+with writes enabled, any UID or GID that would exceed 65535 is translated
+to the overflow value before being written to disk.  
+.LP
+The file
+.I super-max 
+controls the maximum number of superblocks, and
+thus the maximum number of mounted filesystems the kernel
+can have. You only need to increase super-max if you need to
+mount more filesystems than the current value in super-max
+allows you to.
+The file
+.I super-nr
+contains the number of filesystems currently mounted.
+.TP
+.I kernel
+This directory contains files
+.IR acct ", " cad_pid ", " cap-bound  ", "
+.IR core_pattern ", " core_uses_pid  ", "
+.IR ctrl-alt-del ", " dentry-state ", " domainname ", "
+.IR hotplug ", " hostname ", " 
+.IR htab-reclaim " (PowerPC only), "
+.IR java-appletviewer " (binfmt_java, obsolete), "
+.IR java-interpreter " (binfmt_java, obsolete), " l2cr " (PowerPC only), "
+.IR modprobe ", " msgmax ", " msgmnb ", " 
+.IR msgmni ", " osrelease ", " ostype ", " overflowgid ", " overflowuid ", " 
+.IR panic ", " panic_on_oops ", " pid_max ", "
+.IR powersave-nap " (PowerPC only), " printk ", " random ", "
+.IR real-root-dev ", " reboot-cmd " (SPARC only), " rtsig-max ", " 
+.IR rtsig-nr ", " sem ", " sg-big-buff ", "
+.IR shmall ", " shmmax ", " shmmni ", " sysrq ", " tainted ", " threads-max ", "
+.IR version " and " zero-paged " (PowerPC only) "
+with function fairly clear from the name.
+.LP
+The file
+.I acct
+contains three numbers: highwater, lowwater and frequency.
+If BSD-style process accounting is enabled these values control
+its behaviour. If free space on filesystem where the log lives
+goes below lowwater percent accounting suspends. If free space gets
+above highwater percent accounting resumes.  Frequency determines
+how often the kernel checks the amount of free space (value is in
+seconds). Default values are 4, 2 and 30.
+That is, suspend accounting if <= 2% of space is free; resume it
+if >= 4% of space is free; consider information about amount of free space
+valid for 30 seconds.
+.LP
+The file
+.I cap-bound
+holds the value of the kernel
+.IR "capability bounding set"
+(expressed as a signed decimal number).
+This set is ANDed against the capabilities permitted to a process
+during exec.
+.LP
+The file
+.I core_pattern
+(new in Linux 2.5) provides finer control over the form of
+a core filename than the obsolete
+.IR core_uses_pid
+file described below.
+The name for a core file is controlled by defining a template in
+.IR core_pattern .
+The template can contain % specifiers which are substituted
+by the following values when a core file is created:
+.nf
+    
+  %%  A single % character
+  %p  PID of dumped process
+  %u  real UID of dumped process
+  %g  real GID of dumped process
+  %s  number of signal causing dump
+  %t  time of dump (secs since 0:00h, 1 Jan 1970)
+  %h  hostname (same as the 'nodename' 
+      returned by \fBuname\fP(2))
+  %e  executable filename
+    
+.fi
+A single % at the end of the template is dropped from the 
+core filename, as is the combination of a % followed by any 
+character other than those listed above.
+All other characters in the template become a literal
+part of the core filename.
+The maximum size of the resulting core filename is 64 bytes.
+The default value in this file is "core".
+For backward compatibility, if
+.I core_pattern
+does not include "%p" and
+.I core_uses_pid
+is non-zero, then .PID will be appended to the core filename.
+.LP
+The file
+.I core_uses_pid
+can be used control the naming of a core dump file on Linux 2.4.
+If this file contains the value 0, then a core dump file is simply named
+.IR core .
+If this file contains a non-zero value, then the core dump file includes
+the process ID in a name of the form
+.IR core.PID .
+.LP
+The file
+.I ctrl-alt-del
+controls the handling of Ctrl-Alt-Del from the keyboard.
+When the value in this file is 0, Ctrl-Alt-Del is trapped and
+sent to the
+.BR init (1)
+program to handle a graceful restart.
+When the value is > 0, Linux's reaction to a Vulcan
+Nerve Pinch (tm) will be an immediate reboot, without even
+syncing its dirty buffers.
+Note: when a program (like dosemu) has the keyboard in 'raw'
+mode, the ctrl-alt-del is intercepted by the program before it
+ever reaches the kernel tty layer, and it's up to the program
+to decide what to do with it.
+.LP
+The file
+.I hotplug
+contains the path for the hotplug policy agent.
+The default value in this file "/sbin/hotplug".
+.LP
+The files
+.IR domainname " and "
+.I hostname
+can be used to set the NIS/YP domainname and the
+hostname of your box in exactly the same way as the commands
+domainname and hostname, i.e.:
+.br
+
+.br
+# echo "darkstar" > /proc/sys/kernel/hostname
+.br
+# echo "mydomain" > /proc/sys/kernel/domainname
+.br
+
+.br
+has the same effect as
+.br
+
+.br
+# hostname "darkstar"
+.br
+# domainname "mydomain"
+.br
+
+.br
+Note, however, that the classic darkstar.frop.org has the
+hostname "darkstar" and DNS (Internet Domain Name Server)
+domainname "frop.org", not to be confused with the NIS (Network
+Information Service) or YP (Yellow Pages) domainname. These two
+domain names are in general different. For a detailed discussion
+see the
+.BR hostname (1)
+man page.
+.LP
+If the file
+.I htab-reclaim
+(PowerPC only) is set to a non-zero value,
+the PowerPC htab
+(see kernel file Documentation/powerpc/ppc_htab.txt) is pruned
+each time the system hits the idle loop.
+.LP
+The file
+.I l2cr
+(PowerPC only) contains a flag that controls the L2 cache of G3 processor
+boards. If 0, the cache is disabled. Enabled if nonzero.
+.LP
+The file
+.I modprobe
+is described by the kernel source file Documentation/kmod.txt.
+.LP
+The file
+.I msgmax
+is a system-wide limit specifying the maximum number of bytes in
+a single message written on a System V message queue.
+.LP
+The file
+.I msgmni
+defines the system-wide limit on the number of message queue identifiers.
+(This file is only present in Linux 2.4 onwards.)
+.LP
+The file
+.I msgmnb
+is a system-wide paramter used to initialise the
+.I msg_qbytes
+setting for subsequenly created message queues.
+The
+.I msg_qbytes
+setting specifies the maximum number of bytes that may be written to the
+message queue.
+.LP
+The files
+.I ostype
+and
+.I osrelease
+give substrings of
+.IR /proc/version .
+.LP
+The files
+.I overflowgid
+and
+.I overflowuid
+duplicate the files
+.I /proc/sys/fs/overflowgid
+and
+.IR /proc/sys/fs/overflowuid .
+.LP
+The file
+.I panic
+gives read/write access to the kernel variable
+.IR panic_timeout .
+If this is zero, the kernel will loop on a panic; if nonzero
+it indicates that the kernel should autoreboot after this number
+of seconds.  When you use the
+software watchdog device driver, the recommended setting is 60.
+.LP
+The file 
+.I panic_on_oops
+(new in Linux 2.5) controls the kernel's behaviour when an oops or
+BUG is encountered.  If this file contains 0, then the system
+tries to continue operation.  If it contains 1, then the system
+delays a few seconds (to give klogd time to record the oops output)
+and then panics. 
+If the
+.I panic
+file is also non-zero then the machine will be rebooted.
+.LP
+The file
+.I pid_max
+(new in Linux 2.5)
+specifies the value at which PIDs wrap around
+(i.e., the value in this file is one greater than the maximum PID).
+The default value for this file, 32768,
+results in the same range of PIDs as on earlier kernels.
+The value in this file can be set to any value up to 2^22
+(PID_MAX_LIMIT, approximately 4 million).
+.LP
+The file
+.IR powersave-nap " (PowerPC only)"
+contains a flag.  If set, Linux-PPC will use the 'nap' mode of powersaving,
+otherwise the 'doze' mode will be used.
+.LP
+The four values in the file
+.I printk
+are console_loglevel, default_message_loglevel, minimum_console_level and
+default_console_loglevel.
+These values influence printk() behavior when printing or
+logging error messages. See
+.BR syslog (2)
+for more info on the different loglevels.
+Messages with a higher priority than
+console_loglevel will be printed to the console.
+Messages without an explicit priority
+will be printed with priority default_message_level.
+minimum_console_loglevel is the minimum (highest) value to which
+console_loglevel can be set.
+default_console_loglevel is the default value for console_loglevel.
+.LP
+The directory
+.\" FIXME say more about random
+.I random
+contains various parameters controlling the operation of the file
+.IR /dev/random .
+.LP
+The file
+.I real-root-dev
+is documented in the kernel source file Documentation/initrd.txt.
+.LP
+The file
+.IR reboot-cmd " (Sparc only) "
+seems to be a way to give an argument to the SPARC
+ROM/Flash boot loader. Maybe to tell it what to do after
+rebooting?
+.LP
+The file
+.I rtsig-max
+can be used to tune the maximum number
+of POSIX realtime (queued) signals that can be outstanding
+in the system.
+.LP
+The file
+.I rtsig-nr
+shows the number POSIX realtime signals currently queued.
+.LP
+The file
+.I sem
+(available in Linux 2.4 onwards)
+contains 4 numbers defining limits for System V IPC semaphores.
+These fields are, in order: 
+.IP SEMMSL 8
+The maximum semaphores per semaphore set.
+.IP SEMMNS 8
+A system-wide limit on the number of semaphores in all semaphore sets.
+.IP SEMOPM 8
+The maximum number of operations that may be specified in a
+.BR semop (2)
+call.
+.IP SEMMNI 8
+A system-wide limit on the maximum number of semaphore identifiers.
+.LP
+The file
+.I sg-big-buff
+shows the size of the generic SCSI device (sg) buffer.
+You can't tune it just yet, but you could change it on
+compile time by editing include/scsi/sg.h and changing
+the value of SG_BIG_BUFF.  However, there shouldn't be any reason to change
+this value.
+.LP
+The file
+.I shmall
+contains the system-wide limit on the total number of pages of
+System V shared memory.
+.LP
+The file
+.I shmmax
+can be used to query and set the run time limit
+on the maximum (System V IPC) shared memory segment size that can be created.
+Shared memory segments up to 1Gb are now supported in the 
+kernel.  This value defaults to SHMMAX.
+.LP
+The file
+.I shmmni
+(available in Linux 2.4 and onwards)
+specifies the system-wide maximum number of System V shared memory
+segments that can be created.
+.LP
+The file
+.I version
+contains a string like:
+.br
+
+.br
+#5 Wed Feb 25 21:49:24 MET 1998.TP
+.br
+
+.br
+The '#5' means that
+this is the fifth kernel built from this source base and the
+date behind it indicates the time the kernel was built.
+.LP
+The file
+.IR zero-paged " (PowerPC only) "
+contains a flag. When enabled (non-zero), Linux-PPC will pre-zero pages in
+the idle loop, possibly speeding up get_free_pages.
+.TP
+The
+.I net
+This directory contains networking stuff.
+.TP
+.I proc
+This directory may be empty.
+.TP
+.I sunrpc
+This directory supports Sun remote procedure call for network file system
+(NFS).  On some systems, it is not present.
+.TP
+.I vm
+This directory contains files for memory management tuning, buffer and cache
+management.
+.RE
+.TP
+.I sysvipc
+Subdirectory containing the pseudo-files 
+.IR msg ", "  sem " and "  shm "."
+These files list the System V Interprocess Communication (IPC) objects 
+(respectively: message queues, semaphores, and shared memory)
+that currently exist on the system,
+providing similar information to that available via
+.BR ipcs (1).
+These files have headers and are formatted (one IPC object per line)
+for easy understanding.
+.BR ipc (5)
+provides further background on the information shown by these files.
+.TP
+.I tty
+Subdirectory containing the psuedo-files and subdirectories for 
+tty drivers and line disciplines.
+.TP
+.I uptime
+This file contains two numbers: the uptime of the system (seconds),
+and the amount of time spent in idle process (seconds).
+.TP
+.I version
+This string identifies the kernel version that is currently running.
+It includes the contents of /proc/sys/ostype, /proc/sys/osrelease and 
+/proc/sys/version.  For example:
+.nf
+.in -2
+.ft CW
+Linux version 1.0.9 (quinlan at phaze) #1 Sat May 14 01:51:54 EDT 1994
+.ft
+.in +2
+.fi
+
+.RE
+.RE
+.SH "SEE ALSO"
+.BR cat (1),
+.BR find (1),
+.BR free (1),
+.BR mount (1),
+.BR ps (1),
+.BR tr (1),
+.BR uptime (1),
+.BR chroot (2),
+.BR mmap (2),
+.BR readlink (2),
+.BR syslog (2),
+.BR slabinfo (5),
+.BR hier (7),
+.BR arp (8),
+.BR dmesg (8),
+.BR hdparm (8),
+.BR ifconfig (8),
+.BR lsmod (8),
+.BR lspci (8),
+.BR netstat (8),
+.BR procinfo (8),
+.BR route (8)
+.BR /usr/src/linux/Documentation/filesystems/proc.txt
+.SH "CONFORMS TO"
+This roughly conforms to a Linux 2.4.17 kernel.  Please update this as
+necessary!
+
+Last updated for Linux 2.4.17.
+.SH CAVEATS
+Note that many strings (i.e., the environment and command line) are in
+the internal format, with sub-fields terminated by NUL bytes, so you
+may find that things are more readable if you use \fIod -c\fP or \fItr
+"\\000" "\\n"\fP to read them.
+Alternatively, \fIecho `cat <file>`\fP works well.
+
+This manual page is incomplete, possibly inaccurate, and is the kind
+of thing that needs to be updated very often.
+.SH ACKNOWLEDGEMENTS
+The material on /proc/sys/fs and /proc/sys/kernel is closely based on
+kernel source documentation files written by Rik van Riel.
diff --git a/raw/man5/protocols.5 b/raw/man5/protocols.5
new file mode 100644
index 0000000..ceee60b
--- /dev/null
+++ b/raw/man5/protocols.5
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1995 Martin Schulze <joey at infodrom.north.de>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Wed Oct 18 20:23:54 MET 1995  Martin Schulze  <joey at infodrom.north.de>
+.\"	* first released
+.\"
+.TH PROTOCOLS 5 1995-10-18 "Linux" "Linux Programmer's Manual"
+.SH NAME
+protocols \- the protocols definition file
+.SH DESCRIPTION
+This file is a plain ASCII file, describing the various DARPA internet
+protocols that are available from the TCP/IP subsystem. It should be
+consulted instead of using the numbers in the ARPA include files, or,
+even worse, just guessing them. These numbers will occur in the
+protocol field of any ip header.
+
+Keep this file untouched since changes would result in incorrect ip
+packages. Protocol numbers and names are specified by the DDN Network
+Information Center.
+
+Each line is of the following format:
+
+.RS
+.I protocol number aliases ...
+.RE
+
+where the fields are delimited by spaces or tabs.
+Empty lines are ignored.
+If a line contains a hash mark (#), the hash mark and the part
+of the line following it are ignored.
+
+The field descriptions are:
+
+.TP
+.I protocol
+the native name for the protocol. For example ip, tcp, or udp.
+.TP
+.I number
+the official number for this protocol as it will appear within the ip
+header.
+.TP
+.I aliases
+optional aliases for the protocol.
+.LP
+
+This file might be distributed over a network using a networkwide
+naming service like Yellow Pages/NIS or BIND/Hesiod.
+
+.SH FILES
+.TP
+.I /etc/protocols
+The protocols definition file.
+.SH "SEE ALSO"
+.BR getprotoent (3)
+
+Guide to Yellow Pages Service
+
+Guide to BIND/Hesiod Service
diff --git a/raw/man5/resolver.5 b/raw/man5/resolver.5
new file mode 100644
index 0000000..35977f9
--- /dev/null
+++ b/raw/man5/resolver.5
@@ -0,0 +1,222 @@
+.\" Copyright (c) 1986 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\"
+.Dd November 11, 1993
+.Dt RESOLVER 5 
+.Os BSD 4
+.Sh NAME
+.Nm resolver 
+.Nd resolver configuration file
+.Sh SYNOPSIS
+.Pa /etc/resolv.conf
+.Sh DESCRIPTION
+The
+.Nm resolver
+is a set of routines in the C library
+.Pq Xr resolve 3
+that provide access to the Internet Domain Name System.
+The 
+.Nm resolver 
+configuration file contains information that is read
+by the 
+.Nm resolver 
+routines the first time they are invoked by a process.
+The file is designed to be human readable and contains a list of
+keywords with values that provide various types of 
+.Nm resolver 
+information.
+.Pp
+On a normally configured system, this file should not be necessary.
+The only name server to be queried will be on the local machine,
+the domain name is determined from the host name,
+and the domain search path is constructed from the domain name.
+.Pp
+The different configuration directives are:
+.Bl -tag -width "nameser"
+.It Li nameserver
+Internet address (in dot notation) of a name server that the 
+.Nm resolver 
+should query.  Up to 
+.Dv MAXNS 
+(see
+.Pa <resolv.h> )
+name servers may be listed, one per keyword.
+If there are multiple servers, the 
+.Nm resolver 
+library queries them in the order listed.
+If no 
+.Li nameserver 
+entries are present, the default is to use the name server on the local machine.
+(The algorithm used is to try a name server, and if the query times out,
+try the next, until out of name servers,
+then repeat trying all the name servers
+until a maximum number of retries are made).
+.It Li domain
+Local domain name.
+Most queries for names within this domain can use short names
+relative to the local domain.
+If no 
+.Li domain 
+entry is present, the domain is determined from the local host name returned by
+.Xr gethostname 2 ;
+the domain part is taken to be everything after the first 
+.Sq \&. .
+Finally, if the host name does not contain a domain part, the root
+domain is assumed.
+.It Li search
+Search list for host-name lookup.
+The search list is normally determined from the local domain name;
+by default, it contains only the local domain name.
+This may be changed by listing the desired domain search path
+following the 
+.Li search 
+keyword with spaces or tabs separating the names.
+Most 
+.Nm resolver 
+queries will be attempted using each component
+of the search path in turn until a match is found.
+Note that this process may be slow and will generate a lot of network
+traffic if the servers for the listed domains are not local,
+and that queries will time out if no server is available
+for one of the domains.
+.Pp
+The search list is currently limited to six domains
+with a total of 256 characters.
+.It Li sortlist
+Allows addresses returned by gethostbyname to be sorted.
+A 
+.Li sortlist 
+is specified by IP address netmask pairs. The netmask is
+optional and defaults to the natural netmask of the net. The IP address
+and optional network pairs are separated by slashes. Up to 10 pairs may
+be specified.  For example:
+.Bd -literal -offset indent
+sortlist 130.155.160.0/255.255.240.0 130.155.0.0
+.Ed
+.It Li options
+Allows certain internal 
+.Nm resolver 
+variables to be modified.
+The syntax is
+.D1 Li options Ar option ...
+where 
+.Ar option 
+is one of the following:
+.Bl -tag -width "ndots:n " 
+.It Li debug 
+sets 
+.Dv RES_DEBUG 
+in 
+.Ft _res.options .
+.It Li ndots: Ns Ar n 
+sets a threshold for the number of dots which
+must appear in a name given to 
+.Fn res_query 
+(see 
+.Xr resolver 3 )
+before an 
+.Em initial absolute query 
+will be made.  The default for
+.Ar n 
+is 
+.Dq 1 , 
+meaning that if there are 
+.Em any 
+dots in a name, the name will be tried first as an absolute name before any 
+.Em search list
+elements are appended to it.
+.It Li timeout: Ns Ar n
+sets the amount of time the resolver will wait for a response from a remote
+name server before retrying the query via a different name server.  Measured in
+seconds, the default is
+.Dv RES_TIMEOUT
+(see
+.Pa <resolv.h> ).
+.It Li attempts: Ns Ar n
+sets the number of times the resolver will send a query to its name servers
+before giving up and returning an error to the calling application.  The
+default is
+.Dv RES_DFLRETRY
+(see
+.Pa <resolv.h> ).
+.It Li rotate
+sets
+.Dv RES_ROTATE
+in
+.Ft _res.options ,
+which causes round robin selection of nameservers from among those listed.
+This has the effect of spreading the query load among all listed servers,
+rather than having all clients try the first listed server first every time.
+.It Li no-check-names
+sets
+.Dv RES_NOCHECKNAME
+in
+.Ft _res.options ,
+which disables the modern BIND checking of incoming host names and mail names
+for invalid characters such as underscore (_), non-ASCII, or control characters.
+.It Li inet6
+sets 
+.Dv RES_USE_INET6
+in 
+.Ft _res.options .
+This has the effect of trying a AAAA query before an A query inside the
+.Ft gethostbyname
+function, and of mapping IPv4 responses in IPv6 ``tunnelled form'' if no
+AAAA records are found but an A record set exists.
+.El
+.El
+.Pp
+The 
+.Li domain 
+and 
+.Li search 
+keywords are mutually exclusive.
+If more than one instance of these keywords is present,
+the last instance wins.
+.Pp
+The 
+.Li search 
+keyword of a system's 
+.Pa resolv.conf 
+file can be
+overridden on a per-process basis by setting the environment variable
+.Dq Ev LOCALDOMAIN 
+to a space-separated list of search domains.
+.Pp
+The 
+.Li options 
+keyword of a system's 
+.Pa resolv.conf 
+file can be amended on a per-process basis by setting the environment variable
+.Dq Ev RES_OPTIONS to a space-separated list of 
+.Nm resolver 
+options as explained above under 
+.Li options .
+.Pp
+The keyword and value must appear on a single line, and the keyword
+(e.g., 
+.Li nameserver ) 
+must start the line.  The value follows the keyword, separated by white space.
+.Sh FILES
+.Pa /etc/resolv.conf
+.Pa <resolv.h>
+.Sh SEE ALSO
+.Xr gethostbyname 3 , 
+.Xr hostname 7 , 
+.Xr named 8 ,
+.Xr resolver 3 , 
+.Xr resolver 5 .
+.Dq Name Server Operations Guide for Sy BIND
diff --git a/raw/man5/rpc.5 b/raw/man5/rpc.5
new file mode 100644
index 0000000..5150b56
--- /dev/null
+++ b/raw/man5/rpc.5
@@ -0,0 +1,74 @@
+.\" @(#)rpc.5	2.2 88/08/03 4.0 RPCSRC; from 1.4 87/11/27 SMI;
+.TH RPC 5  1985-09-26 
+.SH NAME
+rpc \- rpc program number data base
+.SH SYNOPSIS
+.B /etc/rpc
+.SH DESCRIPTION
+The
+.I rpc
+file contains user readable names that
+can be used in place of rpc program numbers.
+Each line has the following information:
+.HP 10
+name of server for the rpc program
+.br
+.ns
+.HP 10
+rpc program number
+.br
+.ns
+.HP 10
+aliases
+.LP
+Items are separated by any number of blanks and/or
+tab characters.
+A '#' indicates the beginning of a comment; characters from
+the '#' to the end of the line are not interpreted by routines
+which search the file.
+.LP
+Here is an example of the \fI/etc/rpc\fP file from the Sun RPC Source
+distribution.
+.nf
+.ta 1.5i +0.5i +1.0i +1.0i
+#
+# rpc 88/08/01 4.0 RPCSRC; from 1.12   88/02/07 SMI
+#
+portmapper		100000	portmap sunrpc
+rstatd		100001	rstat rstat_svc rup perfmeter
+rusersd		100002	rusers
+nfs		100003	nfsprog
+ypserv		100004	ypprog
+mountd		100005	mount showmount
+ypbind		100007
+walld		100008	rwall shutdown
+yppasswdd		100009	yppasswd
+etherstatd		100010	etherstat
+rquotad		100011	rquotaprog quota rquota
+sprayd		100012	spray
+3270_mapper		100013
+rje_mapper		100014
+selection_svc		100015	selnsvc
+database_svc		100016
+rexd		100017	rex
+alis		100018
+sched		100019
+llockmgr		100020
+nlockmgr		100021
+x25.inr		100022
+statmon		100023
+status		100024
+bootparam		100026
+ypupdated		100028	ypupdate
+keyserv		100029	keyserver
+tfsd		100037 
+nsed		100038
+nsemntd		100039
+.fi
+.DT
+.SH FILES
+.TP
+.I /etc/rpc
+rpc program number data base
+.SH "SEE ALSO"
+.BR getrpcent (3)
diff --git a/raw/man5/securetty.5 b/raw/man5/securetty.5
new file mode 100644
index 0000000..7c71030
--- /dev/null
+++ b/raw/man5/securetty.5
@@ -0,0 +1,43 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sun Jul 25 11:06:27 1993 by Rik Faith (faith at cs.unc.edu)
+.TH SECURETTY 5 1992-12-29 "Linux" "Linux Programmer's Manual"
+.SH NAME
+securetty \- file which lists ttys from which root can log in
+.SH DESCRIPTION
+The file
+.I /etc/securetty
+is used by (some versions of)
+.BR login (1).
+The file contains the device names of tty lines
+(one per line, without leading
+.IR /dev/ )
+on which root is allowed to login.
+See
+.BR login.defs (5)
+if you use the shadow suite.
+.SH FILES
+.I /etc/securetty
+.SH "SEE ALSO"
+.BR login (1),
+.BR login.defs (5)
diff --git a/raw/man5/services.5 b/raw/man5/services.5
new file mode 100644
index 0000000..9c526ea
--- /dev/null
+++ b/raw/man5/services.5
@@ -0,0 +1,208 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1996 Austin Donnelly <and1000 at cam.ac.uk>,
+.\"  with additional material (c) 1995 Martin Schulze <joey at infodrom.north.de>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"   This manpage was made by merging two independently written manpages,
+.\"   one written by Martin Schulze (18 Oct 95), the other written by
+.\"   Austin Donnelly, (9 Jan 96).
+.\"
+.\" Thu Jan 11 12:14:41 1996 Austin Donnelly  <and1000 at cam.ac.uk>
+.\"   * Merged two services(5) manpages
+.\"
+.TH SERVICES 5 1996-01-11 "Linux" "Linux Programmer's Manual"
+.SH NAME
+services \- Internet network services list
+.SH DESCRIPTION
+.B services
+is a plain ASCII file providing a mapping between friendly textual
+names for internet services, and their underlying assigned port
+numbers and protocol types. Every networking program should look into
+this file to get the port number (and protocol) for its service.
+The C library routines
+.BR getservent (3),
+.BR getservbyname (3),
+.BR getservbyport (3),
+.BR setservent (3),
+and 
+.BR endservent (3)
+support querying this file from programs.
+
+Port numbers are assigned by the IANA (Internet Assigned Numbers
+Authority), and their current policy is to assign both TCP and UDP
+protocols when assigning a port number. Therefore, most entries will
+have two entries, even for TCP only services.
+
+Port numbers below 1024 (so-called 'low numbered' ports) can only be
+bound to by root (see
+.BR bind (2),
+.BR tcp (7),
+and 
+.BR udp (7)).
+This is so clients connecting to low numbered ports can trust
+that the service running on the port is the standard implementation,
+and not a rogue service run by a user of the machine.  Well-known port
+numbers specified by the IANA are normally located in this root-only
+space.
+
+The presence of an entry for a service in the 
+.B services
+file does not necessarily mean that the service is currently running
+on the machine. See
+.BR inetd.conf (5)
+for the configuration of Internet services offered. Note that not all
+networking services are started by
+.BR inetd (8),
+and so won't appear in
+.BR inetd.conf (5).
+In particular, news (NNTP) and mail (SMTP) servers are often
+initialized from the system boot scripts.
+
+The location of the
+.B services
+file is defined by
+.B _PATH_SERVICES
+in
+.IR /usr/include/netdb.h "."
+This is usually set to
+.IR /etc/services "."
+
+Each line describes one service, and is of the form:
+.IP
+\f2service-name\ \ \ port\f3/\f2protocol\ \ \ \f1[\f2aliases ...\f1]
+.TP
+where:
+.TP 10
+.I service-name
+is the friendly name the service is known by and looked up under. It
+is case sensitive. Often, the client program is named after the
+.IR service-name "."
+.TP
+.I port
+is the port number (in decimal) to use for this service.
+.TP
+.I protocol
+is the type of protocol to be used. This field should match an entry
+in the
+.BR protocols (5)
+file. Typical values include
+.B tcp
+and
+.BR udp .
+.TP
+.I aliases
+is an optional space or tab separated list of other names for this
+service (but see the BUGS section below). Again, the names are case
+sensitive.
+.PP
+
+Either spaces or tabs may be used to separate the fields.
+
+Comments are started by the hash sign (#) and continue until the end
+of the line. Blank lines are skipped.
+
+The
+.I service-name
+should begin in the first column of the file, since leading spaces are
+not stripped.
+.I service-names
+can be any printable characters excluding space and tab. However,
+a conservative choice of characters should be used to minimize
+inter-operability problems. E.g., a-z, 0-9, and hyphen (\-) would seem a
+sensible choice.
+
+Lines not matching this format should not be present in the
+file. (Currently, they are silently skipped by
+.BR getservent (3),
+.BR getservbyname (3),
+and
+.BR getservbyport (3).
+However, this behaviour should not be relied on.)
+
+As a backwards compatibility feature, the slash (/) between the
+.I port
+number and
+.I protocol
+name can in fact be either a slash or a comma (,). Use of the comma in
+modern installations is depreciated.
+
+This file might be distributed over a network using a network-wide
+naming service like Yellow Pages/NIS or BIND/Hesiod.
+
+A sample
+.B services
+file might look like this:
+.RS
+.nf
+.sp
+.ta 3i
+netstat         15/tcp
+qotd            17/tcp          quote
+msp             18/tcp          # message send protocol
+msp             18/udp          # message send protocol
+chargen         19/tcp          ttytst source
+chargen         19/udp          ttytst source
+ftp             21/tcp
+# 22 - unassigned
+telnet          23/tcp
+.sp
+.fi
+.RE
+.SH BUGS
+There is a maximum of 35 aliases, due to the way the
+.BR getservent (3)
+code is written.
+
+Lines longer than
+.B BUFSIZ
+(currently 1024) characters will be ignored by
+.BR getservent (3),
+.BR getservbyname (3),
+and
+.BR getservbyport (3).
+However, this will also cause the next line to be mis-parsed.
+.SH FILES
+.TP
+.I /etc/services
+The Internet network services list
+.TP
+.I /usr/include/netdb.h
+Definition of
+.B _PATH_SERVICES
+.SH "SEE ALSO"
+.BR getservent (3),
+.BR getservbyname (3),
+.BR getservbyport (3),
+.BR setservent (3),
+.BR endservent (3),
+.BR protocols (5),
+.BR listen (2),
+.BR inetd.conf (5),
+.BR inetd (8)
+
+Assigned Numbers RFC, most recently RFC 1700, (AKA STD0002)
+
+Guide to Yellow Pages Service
+
+Guide to BIND/Hesiod Service
+
diff --git a/raw/man5/shells.5 b/raw/man5/shells.5
new file mode 100644
index 0000000..cd7d091
--- /dev/null
+++ b/raw/man5/shells.5
@@ -0,0 +1,52 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Thu May 20 20:45:48 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified Sat Jul 24 17:11:07 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Nov 21 10:49:38 1993 by Michael Haardt
+.\" Modified Sun Feb 26 15:09:15 1995 by Rik Faith (faith at cs.unc.edu)
+.TH SHELLS 5 1993-11-21 "" "Linux Programmer's Manual"
+.SH NAME
+shells \- pathnames of valid login shells
+.SH DESCRIPTION
+.B /etc/shells
+is a text file which contains the full pathnames of valid login shells.
+This file is consulted by
+.BR chsh (1)
+and available to be queried by other programs.
+.PP
+Be aware that there are programs which consult this file to
+find out if a user is a normal user. E.g.: ftp daemons traditionally
+disallow access to users with shells not included in this file.
+.SH EXAMPLES
+.B /etc/shells
+may contain the following paths:
+.sp
+.RS
+.I /bin/sh
+.br
+.I /bin/csh
+.RE
+.SH FILES
+.I /etc/shells
+.SH "SEE ALSO"
+.BR chsh (1),
+.BR getusershell (3)
diff --git a/raw/man5/smb.conf.5 b/raw/man5/smb.conf.5
new file mode 100644
index 0000000..0ed8240
--- /dev/null
+++ b/raw/man5/smb.conf.5
@@ -0,0 +1,6939 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMB.CONF" 5 "" "" ""
+.SH NAME
+smb.conf \- The configuration file for the Samba suite
+.SH "SYNOPSIS"
+
+.PP
+The \fIsmb\&.conf\fR file is a configuration file for the Samba suite\&. \fIsmb\&.conf\fR contains runtime configuration information for the Samba programs\&. The \fIsmb\&.conf\fR file is designed to be configured and administered by the \fBswat\fR(8) program\&. The complete description of the file format and possible parameters held within are here for reference purposes\&.
+
+.SH "FILE FORMAT"
+
+.PP
+The file consists of sections and parameters\&. A section begins with the name of the section in square brackets and continues until the next section begins\&. Sections contain parameters of the form
+
+.PP
+\fIname\fR = \fIvalue \fR
+
+.PP
+The file is line-based - that is, each newline-terminated line represents either a comment, a section name or a parameter\&.
+
+.PP
+Section and parameter names are not case sensitive\&.
+
+.PP
+Only the first equals sign in a parameter is significant\&. Whitespace before or after the first equals sign is discarded\&. Leading, trailing and internal whitespace in section and parameter names is irrelevant\&. Leading and trailing whitespace in a parameter value is discarded\&. Internal whitespace within a parameter value is retained verbatim\&.
+
+.PP
+Any line beginning with a semicolon (';') or a hash ('#') character is ignored, as are lines containing only whitespace\&.
+
+.PP
+Any line ending in a '\\' is continued on the next line in the customary UNIX fashion\&.
+
+.PP
+The values following the equals sign in parameters are all either a string (no quotes needed) or a boolean, which may be given as yes/no, 0/1 or true/false\&. Case is not significant in boolean values, but is preserved in string values\&. Some items such as create modes are numeric\&.
+
+.SH "SECTION DESCRIPTIONS"
+
+.PP
+Each section in the configuration file (except for the [global] section) describes a shared resource (known as a "share")\&. The section name is the name of the shared resource and the parameters within the section define the shares attributes\&.
+
+.PP
+There are three special sections, [global], [homes] and [printers], which are described under \fBspecial sections\fR\&. The following notes apply to ordinary section descriptions\&.
+
+.PP
+A share consists of a directory to which access is being given plus a description of the access rights which are granted to the user of the service\&. Some housekeeping options are also specifiable\&.
+
+.PP
+Sections are either file share services (used by the client as an extension of their native file systems) or printable services (used by the client to access print services on the host running the server)\&.
+
+.PP
+Sections may be designated \fBguest\fR services, in which case no password is required to access them\&. A specified UNIX \fBguest account\fR is used to define access privileges in this case\&.
+
+.PP
+Sections other than guest services will require a password to access them\&. The client provides the username\&. As older clients only provide passwords and not usernames, you may specify a list of usernames to check against the password using the "user =" option in the share definition\&. For modern clients such as Windows 95/98/ME/NT/2000, this should not be necessary\&.
+
+.PP
+Note that the access rights granted by the server are masked by the access rights granted to the specified or guest UNIX user by the host system\&. The server does not grant more access than the host system grants\&.
+
+.PP
+The following sample section defines a file space share\&. The user has write access to the path \fI/home/bar\fR\&. The share is accessed via the share name "foo":
+.nf
+
+
+[foo]
+	path = /home/bar
+	read only = no
+
+.fi
+
+.PP
+The following sample section defines a printable share\&. The share is readonly, but printable\&. That is, the only write access permitted is via calls to open, write to and close a spool file\&. The \fBguest ok\fR parameter means access will be permitted as the default guest user (specified elsewhere):
+.nf
+
+
+[aprinter]
+	path = /usr/spool/public
+	read only = yes
+	printable = yes
+	guest ok = yes
+
+.fi
+
+.SH "SPECIAL SECTIONS"
+
+.SS "The [global] section"
+
+.PP
+parameters in this section apply to the server as a whole, or are defaults for sections which do not specifically define certain items\&. See the notes under PARAMETERS for more information\&.
+
+.SS "The [homes] section"
+
+.PP
+If a section called homes is included in the configuration file, services connecting clients to their home directories can be created on the fly by the server\&.
+
+.PP
+When the connection request is made, the existing sections are scanned\&. If a match is found, it is used\&. If no match is found, the requested section name is treated as a user name and looked up in the local password file\&. If the name exists and the correct password has been given, a share is created by cloning the [homes] section\&.
+
+.PP
+Some modifications are then made to the newly created share:
+
+.TP 3
+\(bu
+The share name is changed from homes to the located username\&.
+
+.TP
+\(bu
+If no path was given, the path is set to the user's home directory\&.
+
+.LP
+
+.PP
+If you decide to use a \fBpath =\fR line in your [homes] section then you may find it useful to use the %S macro\&. For example :
+
+.PP
+\fBpath = /data/pchome/%S\fR
+
+.PP
+would be useful if you have different home directories for your PCs than for UNIX access\&.
+
+.PP
+This is a fast and simple way to give a large number of clients access to their home directories with a minimum of fuss\&.
+
+.PP
+A similar process occurs if the requested section name is "homes", except that the share name is not changed to that of the requesting user\&. This method of using the [homes] section works well if different users share a client PC\&.
+
+.PP
+The [homes] section can specify all the parameters a normal service section can specify, though some make more sense than others\&. The following is a typical and suitable [homes] section:
+.nf
+
+
+[homes]
+	read only = no
+
+.fi
+
+.PP
+An important point is that if guest access is specified in the [homes] section, all home directories will be visible to all clients \fBwithout a password\fR\&. In the very unlikely event that this is actually desirable, it would be wise to also specify \fBread only access\fR\&.
+
+.PP
+Note that the \fBbrowseable\fR flag for auto home directories will be inherited from the global browseable flag, not the [homes] browseable flag\&. This is useful as it means setting \fBbrowseable = no\fR in the [homes] section will hide the [homes] share but make any auto home directories visible\&.
+
+.SS "The [printers] section"
+
+.PP
+This section works like [homes], but for printers\&.
+
+.PP
+If a [printers] section occurs in the configuration file, users are able to connect to any printer specified in the local host's printcap file\&.
+
+.PP
+When a connection request is made, the existing sections are scanned\&. If a match is found, it is used\&. If no match is found, but a [homes] section exists, it is used as described above\&. Otherwise, the requested section name is treated as a printer name and the appropriate printcap file is scanned to see if the requested section name is a valid printer share name\&. If a match is found, a new printer share is created by cloning the [printers] section\&.
+
+.PP
+A few modifications are then made to the newly created share:
+
+.TP 3
+\(bu
+The share name is set to the located printer name
+
+.TP
+\(bu
+If no printer name was given, the printer name is set to the located printer name
+
+.TP
+\(bu
+If the share does not permit guest access and no username was given, the username is set to the located printer name\&.
+
+.LP
+
+.PP
+Note that the [printers] service MUST be printable - if you specify otherwise, the server will refuse to load the configuration file\&.
+
+.PP
+Typically the path specified would be that of a world-writeable spool directory with the sticky bit set on it\&. A typical [printers] entry would look like this:
+.nf
+
+[printers]
+	path = /usr/spool/public
+	guest ok = yes
+	printable = yes 
+.fi
+
+.PP
+All aliases given for a printer in the printcap file are legitimate printer names as far as the server is concerned\&. If your printing subsystem doesn't work like that, you will have to set up a pseudo-printcap\&. This is a file consisting of one or more lines like this:
+.nf
+
+
+alias|alias|alias|alias\&.\&.\&.    
+
+.fi
+
+.PP
+Each alias should be an acceptable printer name for your printing subsystem\&. In the [global] section, specify the new file as your printcap\&. The server will then only recognize names found in your pseudo-printcap, which of course can contain whatever aliases you like\&. The same technique could be used simply to limit access to a subset of your local printers\&.
+
+.PP
+An alias, by the way, is defined as any component of the first entry of a printcap record\&. Records are separated by newlines, components (if there are more than one) are separated by vertical bar symbols ('|')\&.
+
+.RS
+.Sh "Note"
+
+.PP
+On SYSV systems which use lpstat to determine what printers are defined on the system you may be able to use "printcap name = lpstat" to automatically obtain a list of printers\&. See the "printcap name" option for more details\&.
+
+.RE
+
+.SH "PARAMETERS"
+
+.PP
+parameters define the specific attributes of sections\&.
+
+.PP
+Some parameters are specific to the [global] section (e\&.g\&., \fBsecurity\fR)\&. Some parameters are usable in all sections (e\&.g\&., \fBcreate mode\fR)\&. All others are permissible only in normal sections\&. For the purposes of the following descriptions the [homes] and [printers] sections will be considered normal\&. The letter \fBG\fR in parentheses indicates that a parameter is specific to the [global] section\&. The letter \fBS\fR indicates that a parameter can be specified in a [...]
+
+.PP
+parameters are arranged here in alphabetical order - this may not create best bedfellows, but at least you can find them! Where there are synonyms, the preferred synonym is described, others refer to the preferred synonym\&.
+
+.SH "VARIABLE SUBSTITUTIONS"
+
+.PP
+Many of the strings that are settable in the config file can take substitutions\&. For example the option "path = /tmp/%u" would be interpreted as "path = /tmp/john" if the user connected with the username john\&.
+
+.PP
+These substitutions are mostly noted in the descriptions below, but there are some general substitutions which apply whenever they might be relevant\&. These are:
+
+.TP
+%U
+session user name (the user name that the client wanted, not necessarily the same as the one they got)\&.
+
+
+.TP
+%G
+primary group name of %U\&.
+
+
+.TP
+%h
+the Internet hostname that Samba is running on\&.
+
+
+.TP
+%m
+the NetBIOS name of the client machine (very useful)\&.
+
+
+.TP
+%L
+the NetBIOS name of the server\&. This allows you to change your config based on what the client calls you\&. Your server can have a "dual personality"\&.
+
+
+Note that this parameter is not available when Samba listens on port 445, as clients no longer send this information
+
+
+.TP
+%M
+the Internet name of the client machine\&.
+
+
+.TP
+%R
+the selected protocol level after protocol negotiation\&. It can be one of CORE, COREPLUS, LANMAN1, LANMAN2 or NT1\&.
+
+
+.TP
+%d
+The process id of the current server process\&.
+
+
+.TP
+%a
+the architecture of the remote machine\&. Only some are recognized, and those may not be 100% reliable\&. It currently recognizes Samba, WfWg, Win95, WinNT and Win2k\&. Anything else will be known as "UNKNOWN"\&. If it gets it wrong then sending a level 3 log to samba at samba\&.org should allow it to be fixed\&.
+
+
+.TP
+%I
+The IP address of the client machine\&.
+
+
+.TP
+%T
+the current date and time\&.
+
+
+.TP
+%D
+Name of the domain or workgroup of the current user\&.
+
+
+.TP
+%$(\fIenvvar\fR)
+The value of the environment variable \fIenvar\fR\&.
+
+
+.PP
+The following substitutes apply only to some configuration options(only those that are used when a connection has been established):
+
+.TP
+%S
+the name of the current service, if any\&.
+
+
+.TP
+%P
+the root directory of the current service, if any\&.
+
+
+.TP
+%u
+user name of the current service, if any\&.
+
+
+.TP
+%g
+primary group name of %u\&.
+
+
+.TP
+%H
+the home directory of the user given by %u\&.
+
+
+.TP
+%N
+the name of your NIS home directory server\&. This is obtained from your NIS auto\&.map entry\&. If you have not compiled Samba with the \fB--with-automount\fR option then this value will be the same as %L\&.
+
+
+.TP
+%p
+the path of the service's home directory, obtained from your NIS auto\&.map entry\&. The NIS auto\&.map entry is split up as "%N:%p"\&.
+
+
+.PP
+There are some quite creative things that can be done with these substitutions and other smb\&.conf options\&.
+
+.SH "NAME MANGLING"
+
+.PP
+Samba supports "name mangling" so that DOS and Windows clients can use files that don't conform to the 8\&.3 format\&. It can also be set to adjust the case of 8\&.3 format filenames\&.
+
+.PP
+There are several options that control the way mangling is performed, and they are grouped here rather than listed separately\&. For the defaults look at the output of the testparm program\&.
+
+.PP
+All of these options can be set separately for each service (or globally, of course)\&.
+
+.PP
+The options are:
+
+.TP
+mangle case = yes/no
+controls if names that have characters that aren't of the "default" case are mangled\&. For example, if this is yes then a name like "Mail" would be mangled\&. Default \fBno\fR\&.
+
+
+.TP
+case sensitive = yes/no
+controls whether filenames are case sensitive\&. If they aren't then Samba must do a filename search and match on passed names\&. Default \fBno\fR\&.
+
+
+.TP
+default case = upper/lower
+controls what the default case is for new filenames\&. Default \fBlower\fR\&.
+
+
+.TP
+preserve case = yes/no
+controls if new files are created with the case that the client passes, or if they are forced to be the "default" case\&. Default \fByes\fR\&.
+
+
+.TP
+short preserve case = yes/no
+controls if new files which conform to 8\&.3 syntax, that is all in upper case and of suitable length, are created upper case, or if they are forced to be the "default" case\&. This option can be use with "preserve case = yes" to permit long filenames to retain their case, while short names are lowercased\&. Default \fByes\fR\&.
+
+
+.PP
+By default, Samba 3\&.0 has the same semantics as a Windows NT server, in that it is case insensitive but case preserving\&.
+
+.SH "NOTE ABOUT USERNAME/PASSWORD VALIDATION"
+
+.PP
+There are a number of ways in which a user can connect to a service\&. The server uses the following steps in determining if it will allow a connection to a specified service\&. If all the steps fail, then the connection request is rejected\&. However, if one of the steps succeeds, then the following steps are not checked\&.
+
+.PP
+If the service is marked "guest only = yes" and the server is running with share-level security ("security = share") then steps 1 to 5 are skipped\&.
+
+.TP 3
+1.
+If the client has passed a username/password pair and that username/password pair is validated by the UNIX system's password programs then the connection is made as that username\&. Note that this includes the \\\\server\\service%\fIusername\fR method of passing a username\&.
+
+.TP
+2.
+If the client has previously registered a username with the system and now supplies a correct password for that username then the connection is allowed\&.
+
+.TP
+3.
+The client's NetBIOS name and any previously used user names are checked against the supplied password, if they match then the connection is allowed as the corresponding user\&.
+
+.TP
+4.
+If the client has previously validated a username/password pair with the server and the client has passed the validation token then that username is used\&.
+
+.TP
+5.
+If a "user = " field is given in the \fIsmb\&.conf\fR file for the service and the client has supplied a password, and that password matches (according to the UNIX system's password checking) with one of the usernames from the "user =" field then the connection is made as the username in the "user =" line\&. If one of the username in the "user =" list begins with a '@' then that name expands to a list of names in the group of the same name\&.
+
+.TP
+6.
+If the service is a guest service then a connection is made as the username given in the "guest account =" for the service, irrespective of the supplied password\&.
+
+.LP
+
+.SH "COMPLETE LIST OF GLOBAL PARAMETERS"
+
+.PP
+Here is a list of all global parameters\&. See the section of each parameter for details\&. Note that some are synonyms\&.
+
+.TP 3
+\(bu
+\fIabort shutdown script\fR
+
+.TP
+\(bu
+\fIadd group script\fR
+
+.TP
+\(bu
+\fIadd machine script\fR
+
+.TP
+\(bu
+\fIaddprinter command\fR
+
+.TP
+\(bu
+\fIadd share command\fR
+
+.TP
+\(bu
+\fIadd user script\fR
+
+.TP
+\(bu
+\fIadd user to group script\fR
+
+.TP
+\(bu
+\fIafs username map\fR
+
+.TP
+\(bu
+\fIalgorithmic rid base\fR
+
+.TP
+\(bu
+\fIallow trusted domains\fR
+
+.TP
+\(bu
+\fIannounce as\fR
+
+.TP
+\(bu
+\fIannounce version\fR
+
+.TP
+\(bu
+\fIauth methods\fR
+
+.TP
+\(bu
+\fIauto services\fR
+
+.TP
+\(bu
+\fIbind interfaces only\fR
+
+.TP
+\(bu
+\fIbrowse list\fR
+
+.TP
+\(bu
+\fIchange notify timeout\fR
+
+.TP
+\(bu
+\fIchange share command\fR
+
+.TP
+\(bu
+\fIclient lanman auth\fR
+
+.TP
+\(bu
+\fIclient ntlmv2 auth\fR
+
+.TP
+\(bu
+\fIclient plaintext auth\fR
+
+.TP
+\(bu
+\fIclient schannel\fR
+
+.TP
+\(bu
+\fIclient signing\fR
+
+.TP
+\(bu
+\fIclient use spnego\fR
+
+.TP
+\(bu
+\fIconfig file\fR
+
+.TP
+\(bu
+\fIdeadtime\fR
+
+.TP
+\(bu
+\fIdebug hires timestamp\fR
+
+.TP
+\(bu
+\fIdebuglevel\fR
+
+.TP
+\(bu
+\fIdebug pid\fR
+
+.TP
+\(bu
+\fIdebug timestamp\fR
+
+.TP
+\(bu
+\fIdebug uid\fR
+
+.TP
+\(bu
+\fIdefault\fR
+
+.TP
+\(bu
+\fIdefault service\fR
+
+.TP
+\(bu
+\fIdelete group script\fR
+
+.TP
+\(bu
+\fIdeleteprinter command\fR
+
+.TP
+\(bu
+\fIdelete share command\fR
+
+.TP
+\(bu
+\fIdelete user from group script\fR
+
+.TP
+\(bu
+\fIdelete user script\fR
+
+.TP
+\(bu
+\fIdfree command\fR
+
+.TP
+\(bu
+\fIdisable netbios\fR
+
+.TP
+\(bu
+\fIdisable spoolss\fR
+
+.TP
+\(bu
+\fIdisplay charset\fR
+
+.TP
+\(bu
+\fIdns proxy\fR
+
+.TP
+\(bu
+\fIdomain logons\fR
+
+.TP
+\(bu
+\fIdomain master\fR
+
+.TP
+\(bu
+\fIdos charset\fR
+
+.TP
+\(bu
+\fIenable rid algorithm\fR
+
+.TP
+\(bu
+\fIencrypt passwords\fR
+
+.TP
+\(bu
+\fIenhanced browsing\fR
+
+.TP
+\(bu
+\fIenumports command\fR
+
+.TP
+\(bu
+\fIget quota command\fR
+
+.TP
+\(bu
+\fIgetwd cache\fR
+
+.TP
+\(bu
+\fIguest account\fR
+
+.TP
+\(bu
+\fIhide local users\fR
+
+.TP
+\(bu
+\fIhomedir map\fR
+
+.TP
+\(bu
+\fIhost msdfs\fR
+
+.TP
+\(bu
+\fIhostname lookups\fR
+
+.TP
+\(bu
+\fIhosts equiv\fR
+
+.TP
+\(bu
+\fIidmap backend\fR
+
+.TP
+\(bu
+\fIidmap gid\fR
+
+.TP
+\(bu
+\fIidmap uid\fR
+
+.TP
+\(bu
+\fIinclude\fR
+
+.TP
+\(bu
+\fIinterfaces\fR
+
+.TP
+\(bu
+\fIkeepalive\fR
+
+.TP
+\(bu
+\fIkernel change notify\fR
+
+.TP
+\(bu
+\fIkernel oplocks\fR
+
+.TP
+\(bu
+\fIlanman auth\fR
+
+.TP
+\(bu
+\fIlarge readwrite\fR
+
+.TP
+\(bu
+\fIldap admin dn\fR
+
+.TP
+\(bu
+\fIldap delete dn\fR
+
+.TP
+\(bu
+\fIldap filter\fR
+
+.TP
+\(bu
+\fIldap group suffix\fR
+
+.TP
+\(bu
+\fIldap idmap suffix\fR
+
+.TP
+\(bu
+\fIldap machine suffix\fR
+
+.TP
+\(bu
+\fIldap passwd sync\fR
+
+.TP
+\(bu
+\fIldap port\fR
+
+.TP
+\(bu
+\fIldap server\fR
+
+.TP
+\(bu
+\fIldap ssl\fR
+
+.TP
+\(bu
+\fIldap suffix\fR
+
+.TP
+\(bu
+\fIldap user suffix\fR
+
+.TP
+\(bu
+\fIlm announce\fR
+
+.TP
+\(bu
+\fIlm interval\fR
+
+.TP
+\(bu
+\fIload printers\fR
+
+.TP
+\(bu
+\fIlocal master\fR
+
+.TP
+\(bu
+\fIlock dir\fR
+
+.TP
+\(bu
+\fIlock directory\fR
+
+.TP
+\(bu
+\fIlock spin count\fR
+
+.TP
+\(bu
+\fIlock spin time\fR
+
+.TP
+\(bu
+\fIlog file\fR
+
+.TP
+\(bu
+\fIlog level\fR
+
+.TP
+\(bu
+\fIlogon drive\fR
+
+.TP
+\(bu
+\fIlogon home\fR
+
+.TP
+\(bu
+\fIlogon path\fR
+
+.TP
+\(bu
+\fIlogon script\fR
+
+.TP
+\(bu
+\fIlpq cache time\fR
+
+.TP
+\(bu
+\fImachine password timeout\fR
+
+.TP
+\(bu
+\fImangled stack\fR
+
+.TP
+\(bu
+\fImangle prefix\fR
+
+.TP
+\(bu
+\fImangling method\fR
+
+.TP
+\(bu
+\fImap to guest\fR
+
+.TP
+\(bu
+\fImax disk size\fR
+
+.TP
+\(bu
+\fImax log size\fR
+
+.TP
+\(bu
+\fImax mux\fR
+
+.TP
+\(bu
+\fImax open files\fR
+
+.TP
+\(bu
+\fImax protocol\fR
+
+.TP
+\(bu
+\fImax smbd processes\fR
+
+.TP
+\(bu
+\fImax ttl\fR
+
+.TP
+\(bu
+\fImax wins ttl\fR
+
+.TP
+\(bu
+\fImax xmit\fR
+
+.TP
+\(bu
+\fImessage command\fR
+
+.TP
+\(bu
+\fImin passwd length\fR
+
+.TP
+\(bu
+\fImin password length\fR
+
+.TP
+\(bu
+\fImin protocol\fR
+
+.TP
+\(bu
+\fImin wins ttl\fR
+
+.TP
+\(bu
+\fIname cache timeout\fR
+
+.TP
+\(bu
+\fIname resolve order\fR
+
+.TP
+\(bu
+\fInetbios aliases\fR
+
+.TP
+\(bu
+\fInetbios name\fR
+
+.TP
+\(bu
+\fInetbios scope\fR
+
+.TP
+\(bu
+\fInis homedir\fR
+
+.TP
+\(bu
+\fIntlm auth\fR
+
+.TP
+\(bu
+\fInt pipe support\fR
+
+.TP
+\(bu
+\fInt status support\fR
+
+.TP
+\(bu
+\fInull passwords\fR
+
+.TP
+\(bu
+\fIobey pam restrictions\fR
+
+.TP
+\(bu
+\fIoplock break wait time\fR
+
+.TP
+\(bu
+\fIos2 driver map\fR
+
+.TP
+\(bu
+\fIos level\fR
+
+.TP
+\(bu
+\fIpam password change\fR
+
+.TP
+\(bu
+\fIpanic action\fR
+
+.TP
+\(bu
+\fIparanoid server security\fR
+
+.TP
+\(bu
+\fIpassdb backend\fR
+
+.TP
+\(bu
+\fIpasswd chat\fR
+
+.TP
+\(bu
+\fIpasswd chat debug\fR
+
+.TP
+\(bu
+\fIpasswd program\fR
+
+.TP
+\(bu
+\fIpassword level\fR
+
+.TP
+\(bu
+\fIpassword server\fR
+
+.TP
+\(bu
+\fIpid directory\fR
+
+.TP
+\(bu
+\fIprefered master\fR
+
+.TP
+\(bu
+\fIpreferred master\fR
+
+.TP
+\(bu
+\fIpreload\fR
+
+.TP
+\(bu
+\fIpreload modules\fR
+
+.TP
+\(bu
+\fIprintcap\fR
+
+.TP
+\(bu
+\fIprivate dir\fR
+
+.TP
+\(bu
+\fIprotocol\fR
+
+.TP
+\(bu
+\fIread bmpx\fR
+
+.TP
+\(bu
+\fIread raw\fR
+
+.TP
+\(bu
+\fIread size\fR
+
+.TP
+\(bu
+\fIrealm\fR
+
+.TP
+\(bu
+\fIremote announce\fR
+
+.TP
+\(bu
+\fIremote browse sync\fR
+
+.TP
+\(bu
+\fIrestrict anonymous\fR
+
+.TP
+\(bu
+\fIroot\fR
+
+.TP
+\(bu
+\fIroot dir\fR
+
+.TP
+\(bu
+\fIroot directory\fR
+
+.TP
+\(bu
+\fIsecurity\fR
+
+.TP
+\(bu
+\fIserver schannel\fR
+
+.TP
+\(bu
+\fIserver signing\fR
+
+.TP
+\(bu
+\fIserver string\fR
+
+.TP
+\(bu
+\fIset primary group script\fR
+
+.TP
+\(bu
+\fIset quota command\fR
+
+.TP
+\(bu
+\fIshow add printer wizard\fR
+
+.TP
+\(bu
+\fIshutdown script\fR
+
+.TP
+\(bu
+\fIsmb passwd file\fR
+
+.TP
+\(bu
+\fIsmb ports\fR
+
+.TP
+\(bu
+\fIsocket address\fR
+
+.TP
+\(bu
+\fIsocket options\fR
+
+.TP
+\(bu
+\fIsource environment\fR
+
+.TP
+\(bu
+\fIstat cache\fR
+
+.TP
+\(bu
+\fIsyslog\fR
+
+.TP
+\(bu
+\fIsyslog only\fR
+
+.TP
+\(bu
+\fItemplate homedir\fR
+
+.TP
+\(bu
+\fItemplate primary group\fR
+
+.TP
+\(bu
+\fItemplate shell\fR
+
+.TP
+\(bu
+\fItime offset\fR
+
+.TP
+\(bu
+\fItime server\fR
+
+.TP
+\(bu
+\fItimestamp logs\fR
+
+.TP
+\(bu
+\fIunicode\fR
+
+.TP
+\(bu
+\fIunix charset\fR
+
+.TP
+\(bu
+\fIunix extensions\fR
+
+.TP
+\(bu
+\fIunix password sync\fR
+
+.TP
+\(bu
+\fIupdate encrypted\fR
+
+.TP
+\(bu
+\fIuse mmap\fR
+
+.TP
+\(bu
+\fIusername level\fR
+
+.TP
+\(bu
+\fIusername map\fR
+
+.TP
+\(bu
+\fIuse spnego\fR
+
+.TP
+\(bu
+\fIutmp\fR
+
+.TP
+\(bu
+\fIutmp directory\fR
+
+.TP
+\(bu
+\fIwinbind cache time\fR
+
+.TP
+\(bu
+\fIwinbind enable local accounts\fR
+
+.TP
+\(bu
+\fIwinbind enum groups\fR
+
+.TP
+\(bu
+\fIwinbind enum users\fR
+
+.TP
+\(bu
+\fIwinbind gid\fR
+
+.TP
+\(bu
+\fIwinbind separator\fR
+
+.TP
+\(bu
+\fIwinbind trusted domains only\fR
+
+.TP
+\(bu
+\fIwinbind uid\fR
+
+.TP
+\(bu
+\fIwinbind use default domain\fR
+
+.TP
+\(bu
+\fIwins hook\fR
+
+.TP
+\(bu
+\fIwins partners\fR
+
+.TP
+\(bu
+\fIwins proxy\fR
+
+.TP
+\(bu
+\fIwins server\fR
+
+.TP
+\(bu
+\fIwins support\fR
+
+.TP
+\(bu
+\fIworkgroup\fR
+
+.TP
+\(bu
+\fIwrite raw\fR
+
+.TP
+\(bu
+\fIwtmp directory\fR
+
+.LP
+
+.SH "COMPLETE LIST OF SERVICE PARAMETERS"
+
+.PP
+Here is a list of all service parameters\&. See the section on each parameter for details\&. Note that some are synonyms\&.
+
+.TP 3
+\(bu
+\fIacl compatibility\fR
+
+.TP
+\(bu
+\fIadmin users\fR
+
+.TP
+\(bu
+\fIafs share\fR
+
+.TP
+\(bu
+\fIallow hosts\fR
+
+.TP
+\(bu
+\fIavailable\fR
+
+.TP
+\(bu
+\fIblocking locks\fR
+
+.TP
+\(bu
+\fIblock size\fR
+
+.TP
+\(bu
+\fIbrowsable\fR
+
+.TP
+\(bu
+\fIbrowseable\fR
+
+.TP
+\(bu
+\fIcase sensitive\fR
+
+.TP
+\(bu
+\fIcasesignames\fR
+
+.TP
+\(bu
+\fIcomment\fR
+
+.TP
+\(bu
+\fIcopy\fR
+
+.TP
+\(bu
+\fIcreate mask\fR
+
+.TP
+\(bu
+\fIcreate mode\fR
+
+.TP
+\(bu
+\fIcsc policy\fR
+
+.TP
+\(bu
+\fIdefault case\fR
+
+.TP
+\(bu
+\fIdefault devmode\fR
+
+.TP
+\(bu
+\fIdelete readonly\fR
+
+.TP
+\(bu
+\fIdelete veto files\fR
+
+.TP
+\(bu
+\fIdeny hosts\fR
+
+.TP
+\(bu
+\fIdirectory\fR
+
+.TP
+\(bu
+\fIdirectory mask\fR
+
+.TP
+\(bu
+\fIdirectory mode\fR
+
+.TP
+\(bu
+\fIdirectory security mask\fR
+
+.TP
+\(bu
+\fIdont descend\fR
+
+.TP
+\(bu
+\fIdos filemode\fR
+
+.TP
+\(bu
+\fIdos filetime resolution\fR
+
+.TP
+\(bu
+\fIdos filetimes\fR
+
+.TP
+\(bu
+\fIexec\fR
+
+.TP
+\(bu
+\fIfake directory create times\fR
+
+.TP
+\(bu
+\fIfake oplocks\fR
+
+.TP
+\(bu
+\fIfollow symlinks\fR
+
+.TP
+\(bu
+\fIforce create mode\fR
+
+.TP
+\(bu
+\fIforce directory mode\fR
+
+.TP
+\(bu
+\fIforce directory security mode\fR
+
+.TP
+\(bu
+\fIforce group\fR
+
+.TP
+\(bu
+\fIforce security mode\fR
+
+.TP
+\(bu
+\fIforce user\fR
+
+.TP
+\(bu
+\fIfstype\fR
+
+.TP
+\(bu
+\fIgroup\fR
+
+.TP
+\(bu
+\fIguest account\fR
+
+.TP
+\(bu
+\fIguest ok\fR
+
+.TP
+\(bu
+\fIguest only\fR
+
+.TP
+\(bu
+\fIhide dot files\fR
+
+.TP
+\(bu
+\fIhide files\fR
+
+.TP
+\(bu
+\fIhide special files\fR
+
+.TP
+\(bu
+\fIhide unreadable\fR
+
+.TP
+\(bu
+\fIhide unwriteable files\fR
+
+.TP
+\(bu
+\fIhosts allow\fR
+
+.TP
+\(bu
+\fIhosts deny\fR
+
+.TP
+\(bu
+\fIinherit acls\fR
+
+.TP
+\(bu
+\fIinherit permissions\fR
+
+.TP
+\(bu
+\fIinvalid users\fR
+
+.TP
+\(bu
+\fIlevel2 oplocks\fR
+
+.TP
+\(bu
+\fIlocking\fR
+
+.TP
+\(bu
+\fIlppause command\fR
+
+.TP
+\(bu
+\fIlpq command\fR
+
+.TP
+\(bu
+\fIlpresume command\fR
+
+.TP
+\(bu
+\fIlprm command\fR
+
+.TP
+\(bu
+\fImagic output\fR
+
+.TP
+\(bu
+\fImagic script\fR
+
+.TP
+\(bu
+\fImangle case\fR
+
+.TP
+\(bu
+\fImangled map\fR
+
+.TP
+\(bu
+\fImangled names\fR
+
+.TP
+\(bu
+\fImangling char\fR
+
+.TP
+\(bu
+\fImap acl inherit\fR
+
+.TP
+\(bu
+\fImap archive\fR
+
+.TP
+\(bu
+\fImap hidden\fR
+
+.TP
+\(bu
+\fImap system\fR
+
+.TP
+\(bu
+\fImax connections\fR
+
+.TP
+\(bu
+\fImax print jobs\fR
+
+.TP
+\(bu
+\fImax reported print jobs\fR
+
+.TP
+\(bu
+\fImin print space\fR
+
+.TP
+\(bu
+\fImsdfs proxy\fR
+
+.TP
+\(bu
+\fImsdfs root\fR
+
+.TP
+\(bu
+\fInt acl support\fR
+
+.TP
+\(bu
+\fIonly guest\fR
+
+.TP
+\(bu
+\fIonly user\fR
+
+.TP
+\(bu
+\fIoplock contention limit\fR
+
+.TP
+\(bu
+\fIoplocks\fR
+
+.TP
+\(bu
+\fIpath\fR
+
+.TP
+\(bu
+\fIposix locking\fR
+
+.TP
+\(bu
+\fIpostexec\fR
+
+.TP
+\(bu
+\fIpreexec\fR
+
+.TP
+\(bu
+\fIpreexec close\fR
+
+.TP
+\(bu
+\fIpreserve case\fR
+
+.TP
+\(bu
+\fIprintable\fR
+
+.TP
+\(bu
+\fIprintcap name\fR
+
+.TP
+\(bu
+\fIprint command\fR
+
+.TP
+\(bu
+\fIprinter\fR
+
+.TP
+\(bu
+\fIprinter admin\fR
+
+.TP
+\(bu
+\fIprinter name\fR
+
+.TP
+\(bu
+\fIprinting\fR
+
+.TP
+\(bu
+\fIprint ok\fR
+
+.TP
+\(bu
+\fIprofile acls\fR
+
+.TP
+\(bu
+\fIpublic\fR
+
+.TP
+\(bu
+\fIqueuepause command\fR
+
+.TP
+\(bu
+\fIqueueresume command\fR
+
+.TP
+\(bu
+\fIread list\fR
+
+.TP
+\(bu
+\fIread only\fR
+
+.TP
+\(bu
+\fIroot postexec\fR
+
+.TP
+\(bu
+\fIroot preexec\fR
+
+.TP
+\(bu
+\fIroot preexec close\fR
+
+.TP
+\(bu
+\fIsecurity mask\fR
+
+.TP
+\(bu
+\fIset directory\fR
+
+.TP
+\(bu
+\fIshare modes\fR
+
+.TP
+\(bu
+\fIshort preserve case\fR
+
+.TP
+\(bu
+\fIstrict allocate\fR
+
+.TP
+\(bu
+\fIstrict locking\fR
+
+.TP
+\(bu
+\fIstrict sync\fR
+
+.TP
+\(bu
+\fIsync always\fR
+
+.TP
+\(bu
+\fIuse client driver\fR
+
+.TP
+\(bu
+\fIuser\fR
+
+.TP
+\(bu
+\fIusername\fR
+
+.TP
+\(bu
+\fIusers\fR
+
+.TP
+\(bu
+\fIuse sendfile\fR
+
+.TP
+\(bu
+\fI-valid\fR
+
+.TP
+\(bu
+\fIvalid users\fR
+
+.TP
+\(bu
+\fIveto files\fR
+
+.TP
+\(bu
+\fIveto oplock files\fR
+
+.TP
+\(bu
+\fIvfs object\fR
+
+.TP
+\(bu
+\fIvfs objects\fR
+
+.TP
+\(bu
+\fIvolume\fR
+
+.TP
+\(bu
+\fIwide links\fR
+
+.TP
+\(bu
+\fIwritable\fR
+
+.TP
+\(bu
+\fIwriteable\fR
+
+.TP
+\(bu
+\fIwrite cache size\fR
+
+.TP
+\(bu
+\fIwrite list\fR
+
+.TP
+\(bu
+\fIwrite ok\fR
+
+.LP
+
+.SH "EXPLANATION OF EACH PARAMETER"
+
+.TP
+abort shutdown script (G)
+\fBThis parameter only exists in the HEAD cvs branch\fR This a full path name to a script called by \fBsmbd\fR(8) that should stop a shutdown procedure issued by the \fIshutdown script\fR\&.
+
+
+This command will be run as user\&.
+
+
+Default: \fBNone\fR\&.
+
+
+Example: \fBabort shutdown script = /sbin/shutdown -c\fR
+
+
+.TP
+acl compatibility (S)
+This parameter specifies what OS ACL semantics should be compatible with\&. Possible values are \fBwinnt\fR for Windows NT 4, \fBwin2k\fR for Windows 2000 and above and \fBauto\fR\&. If you specify \fBauto\fR, the value for this parameter will be based upon the version of the client\&. There should be no reason to change this parameter from the default\&.
+
+
+Default: \fBacl compatibility = Auto\fR
+
+
+Example: \fBacl compatibility = win2k\fR
+
+
+.TP
+add group script (G)
+This is the full pathname to a script that will be run \fBAS ROOT\fR by \fBsmbd\fR(8) when a new group is requested\&. It will expand any \fI%g\fR to the group name passed\&. This script is only useful for installations using the Windows NT domain administration tools\&. The script is free to create a group with an arbitrary name to circumvent unix group name restrictions\&. In that case the script must print the numeric gid of the created group on stdout\&.
+
+
+.TP
+add machine script (G)
+This is the full pathname to a script that will be run by \fBsmbd\fR(8) when a machine is added to it's domain using the administrator username and password method\&.
+
+
+This option is only required when using sam back-ends tied to the Unix uid method of RID calculation such as smbpasswd\&. This option is only available in Samba 3\&.0\&.
+
+
+Default: \fBadd machine script = <empty string>\fR
+
+
+Example: \fBadd machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u\fR
+
+
+.TP
+addprinter command (G)
+With the introduction of MS-RPC based printing support for Windows NT/2000 clients in Samba 2\&.2, The MS Add Printer Wizard (APW) icon is now also available in the "Printers\&.\&.\&." folder displayed a share listing\&. The APW allows for printers to be add remotely to a Samba or Windows NT/2000 print server\&.
+
+
+For a Samba host this means that the printer must be physically added to the underlying printing system\&. The \fIadd printer command\fR defines a script to be run which will perform the necessary operations for adding the printer to the print system and to add the appropriate service definition to the \fIsmb\&.conf\fR file in order that it can be shared by \fBsmbd\fR(8)\&.
+
+
+The \fIaddprinter command\fR is automatically invoked with the following parameter (in order):
+
+
+\fIprinter name\fR
+
+\fIshare name\fR
+
+\fIport name\fR
+
+\fIdriver name\fR
+
+\fIlocation\fR
+
+\fIWindows 9x driver location\fR
+
+All parameters are filled in from the PRINTER_INFO_2 structure sent by the Windows NT/2000 client with one exception\&. The "Windows 9x driver location" parameter is included for backwards compatibility only\&. The remaining fields in the structure are generated from answers to the APW questions\&.
+
+
+Once the \fIaddprinter command\fR has been executed, \fBsmbd\fR will reparse the \fI smb\&.conf\fR to determine if the share defined by the APW exists\&. If the sharename is still invalid, then \fBsmbd \fR will return an ACCESS_DENIED error to the client\&.
+
+
+The "add printer command" program can output a single line of text, which Samba will set as the port the new printer is connected to\&. If this line isn't output, Samba won't reload its printer shares\&.
+
+
+See also \fI deleteprinter command\fR, \fIprinting\fR, \fIshow add printer wizard\fR
+
+
+Default: \fBnone\fR
+
+
+Example: \fBaddprinter command = /usr/bin/addprinter\fR
+
+
+.TP
+add share command (G)
+Samba 2\&.2\&.0 introduced the ability to dynamically add and delete shares via the Windows NT 4\&.0 Server Manager\&. The \fIadd share command\fR is used to define an external program or script which will add a new service definition to \fIsmb\&.conf\fR\&. In order to successfully execute the \fIadd share command\fR, \fBsmbd\fR requires that the administrator be connected using a root account (i\&.e\&. uid == 0)\&.
+
+
+When executed, \fBsmbd\fR will automatically invoke the \fIadd share command\fR with four parameters\&.
+
+
+\fIconfigFile\fR - the location of the global \fIsmb\&.conf\fR file\&.
+
+\fIshareName\fR - the name of the new share\&.
+
+\fIpathName\fR - path to an **existing** directory on disk\&.
+
+\fIcomment\fR - comment string to associate with the new share\&.
+
+This parameter is only used for add file shares\&. To add printer shares, see the \fIaddprinter command\fR\&.
+
+
+See also \fIchange share command\fR, \fIdelete share command\fR\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBadd share command = /usr/local/bin/addshare\fR
+
+
+.TP
+add user script (G)
+This is the full pathname to a script that will be run \fBAS ROOT\fR by \fBsmbd\fR(8) under special circumstances described below\&.
+
+
+Normally, a Samba server requires that UNIX users are created for all users accessing files on this server\&. For sites that use Windows NT account databases as their primary user database creating these users and keeping the user list in sync with the Windows NT PDC is an onerous task\&. This option allows smbd to create the required UNIX users \fBON DEMAND\fR when a user accesses the Samba server\&.
+
+
+In order to use this option, \fBsmbd\fR(8) must \fBNOT\fR be set to \fIsecurity = share\fR and \fIadd user script\fR must be set to a full pathname for a script that will create a UNIX user given one argument of \fI%u\fR, which expands into the UNIX user name to create\&.
+
+
+When the Windows user attempts to access the Samba server, at login (session setup in the SMB protocol) time, \fBsmbd\fR(8) contacts the \fIpassword server\fR and attempts to authenticate the given user with the given password\&. If the authentication succeeds then \fBsmbd\fR attempts to find a UNIX user in the UNIX password database to map the Windows user into\&. If this lookup fails, and \fIadd user script \fR is set then \fBsmbd\fR will call the specified script \fBAS ROOT\fR, expand [...]
+
+
+If this script successfully creates the user then \fBsmbd \fR will continue on as though the UNIX user already existed\&. In this way, UNIX users are dynamically created to match existing Windows NT accounts\&.
+
+
+See also \fI security\fR, \fIpassword server\fR, \fIdelete user script\fR\&.
+
+
+Default: \fBadd user script = <empty string>\fR
+
+
+Example: \fBadd user script = /usr/local/samba/bin/add_user %u\fR
+
+
+.TP
+add user to group script (G)
+Full path to the script that will be called when a user is added to a group using the Windows NT domain administration tools\&. It will be run by \fBsmbd\fR(8) \fBAS ROOT\fR\&. Any \fI%g\fR will be replaced with the group name and any \fI%u\fR will be replaced with the user name\&.
+
+
+Default: \fBadd user to group script = \fR
+
+
+Example: \fBadd user to group script = /usr/sbin/adduser %u %g\fR
+
+
+.TP
+admin users (S)
+This is a list of users who will be granted administrative privileges on the share\&. This means that they will do all file operations as the super-user (root)\&.
+
+
+You should use this option very carefully, as any user in this list will be able to do anything they like on the share, irrespective of file permissions\&.
+
+
+Default: \fBno admin users\fR
+
+
+Example: \fBadmin users = jason\fR
+
+
+.TP
+afs share (S)
+This parameter controls whether special AFS features are enabled for this share\&. If enabled, it assumes that the directory exported via the \fIpath\fR parameter is a local AFS import\&. The special AFS features include the attempt to hand-craft an AFS token if you enabled --with-fake-kaserver in configure\&.
+
+
+Default: \fBafs share = no\fR
+
+
+Example: \fBafs share = yes\fR
+
+
+.TP
+afs username map (G)
+If you are using the fake kaserver AFS feature, you might want to hand-craft the usernames you are creating tokens for\&. For example this is necessary if you have users from several domain in your AFS Protection Database\&. One possible scheme to code users as DOMAIN+User as it is done by winbind with the + as a separator\&.
+
+
+The mapped user name must contain the cell name to log into, so without setting this parameter there will be no token\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBafs username map = %u at afs.samba.org\fR
+
+
+.TP
+algorithmic rid base (G)
+This determines how Samba will use its algorithmic mapping from uids/gid to the RIDs needed to construct NT Security Identifiers\&.
+
+
+Setting this option to a larger value could be useful to sites transitioning from WinNT and Win2k, as existing user and group rids would otherwise clash with sytem users etc\&.
+
+
+All UIDs and GIDs must be able to be resolved into SIDs for the correct operation of ACLs on the server\&. As such the algorithmic mapping can't be 'turned off', but pushing it 'out of the way' should resolve the issues\&. Users and groups can then be assigned 'low' RIDs in arbitary-rid supporting backends\&.
+
+
+Default: \fBalgorithmic rid base = 1000\fR
+
+
+Example: \fBalgorithmic rid base = 100000\fR
+
+
+.TP
+allow hosts (S)
+Synonym for \fIhosts allow\fR\&.
+
+
+.TP
+allow trusted domains (G)
+This option only takes effect when the \fIsecurity\fR option is set to \fBserver\fR or \fBdomain\fR\&. If it is set to no, then attempts to connect to a resource from a domain or workgroup other than the one which smbd is running in will fail, even if that domain is trusted by the remote server doing the authentication\&.
+
+
+This is useful if you only want your Samba server to serve resources to users in the domain it is a member of\&. As an example, suppose that there are two domains DOMA and DOMB\&. DOMB is trusted by DOMA, which contains the Samba server\&. Under normal circumstances, a user with an account in DOMB can then access the resources of a UNIX account with the same account name on the Samba server even if they do not have an account in DOMA\&. This can make implementing a security boundary diff [...]
+
+
+Default: \fBallow trusted domains = yes\fR
+
+
+.TP
+announce as (G)
+This specifies what type of server \fBnmbd\fR(8) will announce itself as, to a network neighborhood browse list\&. By default this is set to Windows NT\&. The valid options are : "NT Server" (which can also be written as "NT"), "NT Workstation", "Win95" or "WfW" meaning Windows NT Server, Windows NT Workstation, Windows 95 and Windows for Workgroups respectively\&. Do not change this parameter unless you have a specific need to stop Samba appearing as an NT server as this may prevent Sam [...]
+
+
+Default: \fBannounce as = NT Server\fR
+
+
+Example: \fBannounce as = Win95\fR
+
+
+.TP
+announce version (G)
+This specifies the major and minor version numbers that nmbd will use when announcing itself as a server\&. The default is 4\&.9\&. Do not change this parameter unless you have a specific need to set a Samba server to be a downlevel server\&.
+
+
+Default: \fBannounce version = 4.9\fR
+
+
+Example: \fBannounce version = 2.0\fR
+
+
+.TP
+auth methods (G)
+This option allows the administrator to chose what authentication methods \fBsmbd\fR will use when authenticating a user\&. This option defaults to sensible values based on \fIsecurity\fR\&. This should be considered a developer option and used only in rare circumstances\&. In the majority (if not all) of production servers, the default setting should be adequate\&.
+
+
+Each entry in the list attempts to authenticate the user in turn, until the user authenticates\&. In practice only one method will ever actually be able to complete the authentication\&.
+
+
+Possible options include \fBguest\fR (anonymous access), \fBsam\fR (lookups in local list of accounts based on netbios name or domain name), \fBwinbind\fR (relay authentication requests for remote users through winbindd), \fBntdomain\fR (pre-winbindd method of authentication for remote domain users; deprecated in favour of winbind method), \fBtrustdomain\fR (authenticate trusted users by contacting the remote DC directly from smbd; deprecated in favour of winbind method)\&.
+
+
+Default: \fBauth methods = <empty string>\fR
+
+
+Example: \fBauth methods = guest sam winbind\fR
+
+
+.TP
+auto services (G)
+This is a synonym for the \fIpreload\fR\&.
+
+
+.TP
+available (S)
+This parameter lets you "turn off" a service\&. If \fIavailable = no\fR, then \fBALL\fR attempts to connect to the service will fail\&. Such failures are logged\&.
+
+
+Default: \fBavailable = yes\fR
+
+
+.TP
+bind interfaces only (G)
+This global parameter allows the Samba admin to limit what interfaces on a machine will serve SMB requests\&. It affects file service \fBsmbd\fR(8) and name service \fBnmbd\fR(8) in a slightly different ways\&.
+
+
+For name service it causes \fBnmbd\fR to bind to ports 137 and 138 on the interfaces listed in the interfaces parameter\&. \fBnmbd\fR also binds to the "all addresses" interface (0\&.0\&.0\&.0) on ports 137 and 138 for the purposes of reading broadcast messages\&. If this option is not set then \fBnmbd\fR will service name requests on all of these sockets\&. If \fIbind interfaces only\fR is set then \fBnmbd\fR will check the source address of any packets coming in on the broadcast socket [...]
+
+
+For file service it causes \fBsmbd\fR(8) to bind only to the interface list given in the interfaces parameter\&. This restricts the networks that \fBsmbd\fR will serve to packets coming in those interfaces\&. Note that you should not use this parameter for machines that are serving PPP or other intermittent or non-broadcast network interfaces as it will not cope with non-permanent interfaces\&.
+
+
+If \fIbind interfaces only\fR is set then unless the network address \fB127\&.0\&.0\&.1\fR is added to the \fIinterfaces\fR parameter list \fBsmbpasswd\fR(8) and \fBswat\fR(8) may not work as expected due to the reasons covered below\&.
+
+
+To change a users SMB password, the \fBsmbpasswd\fR by default connects to the \fBlocalhost - 127\&.0\&.0\&.1\fR address as an SMB client to issue the password change request\&. If \fIbind interfaces only\fR is set then unless the network address \fB127\&.0\&.0\&.1\fR is added to the \fIinterfaces\fR parameter list then \fB smbpasswd\fR will fail to connect in it's default mode\&. \fBsmbpasswd\fR can be forced to use the primary IP interface of the local host by using its \fBsmbpasswd\fR [...]
+
+
+The \fBswat\fR status page tries to connect with \fBsmbd\fR and \fBnmbd\fR at the address \fB127\&.0\&.0\&.1\fR to determine if they are running\&. Not adding \fB127\&.0\&.0\&.1\fR will cause \fB smbd\fR and \fBnmbd\fR to always show "not running" even if they really are\&. This can prevent \fB swat\fR from starting/stopping/restarting \fBsmbd\fR and \fBnmbd\fR\&.
+
+
+Default: \fBbind interfaces only = no\fR
+
+
+.TP
+blocking locks (S)
+This parameter controls the behavior of \fBsmbd\fR(8) when given a request by a client to obtain a byte range lock on a region of an open file, and the request has a time limit associated with it\&.
+
+
+If this parameter is set and the lock range requested cannot be immediately satisfied, samba will internally queue the lock request, and periodically attempt to obtain the lock until the timeout period expires\&.
+
+
+If this parameter is set to \fBno\fR, then samba will behave as previous versions of Samba would and will fail the lock request immediately if the lock range cannot be obtained\&.
+
+
+Default: \fBblocking locks = yes\fR
+
+
+.TP
+block size (S)
+This parameter controls the behavior of \fBsmbd\fR(8) when reporting disk free sizes\&. By default, this reports a disk block size of 1024 bytes\&.
+
+
+Changing this parameter may have some effect on the efficiency of client writes, this is not yet confirmed\&. This parameter was added to allow advanced administrators to change it (usually to a higher value) and test the effect it has on client write performance without re-compiling the code\&. As this is an experimental option it may be removed in a future release\&.
+
+
+Changing this option does not change the disk free reporting size, just the block size unit reported to the client\&.
+
+
+.TP
+browsable (S)
+See the \fIbrowseable\fR\&.
+
+
+.TP
+browseable (S)
+This controls whether this share is seen in the list of available shares in a net view and in the browse list\&.
+
+
+Default: \fBbrowseable = yes\fR
+
+
+.TP
+browse list (G)
+This controls whether \fBsmbd\fR(8) will serve a browse list to a client doing a \fBNetServerEnum\fR call\&. Normally set to \fByes\fR\&. You should never need to change this\&.
+
+
+Default: \fBbrowse list = yes\fR
+
+
+.TP
+case sensitive (S)
+See the discussion in the section NAME MANGLING\&.
+
+
+Default: \fBcase sensitive = no\fR
+
+
+.TP
+casesignames (S)
+Synonym for case sensitive\&.
+
+
+.TP
+change notify timeout (G)
+This SMB allows a client to tell a server to "watch" a particular directory for any changes and only reply to the SMB request when a change has occurred\&. Such constant scanning of a directory is expensive under UNIX, hence an \fBsmbd\fR(8) daemon only performs such a scan on each requested directory once every \fIchange notify timeout\fR seconds\&.
+
+
+Default: \fBchange notify timeout = 60\fR
+
+
+Example: \fBchange notify timeout = 300\fR
+
+
+Would change the scan time to every 5 minutes\&.
+
+
+.TP
+change share command (G)
+Samba 2\&.2\&.0 introduced the ability to dynamically add and delete shares via the Windows NT 4\&.0 Server Manager\&. The \fIchange share command\fR is used to define an external program or script which will modify an existing service definition in \fIsmb\&.conf\fR\&. In order to successfully execute the \fIchange share command\fR, \fBsmbd\fR requires that the administrator be connected using a root account (i\&.e\&. uid == 0)\&.
+
+
+When executed, \fBsmbd\fR will automatically invoke the \fIchange share command\fR with four parameters\&.
+
+
+\fIconfigFile\fR - the location of the global \fIsmb\&.conf\fR file\&.
+
+\fIshareName\fR - the name of the new share\&.
+
+\fIpathName\fR - path to an **existing** directory on disk\&.
+
+\fIcomment\fR - comment string to associate with the new share\&.
+
+This parameter is only used modify existing file shares definitions\&. To modify printer shares, use the "Printers\&.\&.\&." folder as seen when browsing the Samba host\&.
+
+
+See also \fIadd share command\fR, \fIdelete share command\fR\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBchange share command = /usr/local/bin/addshare\fR
+
+
+.TP
+client lanman auth (G)
+This parameter determines whether or not \fBsmbclient\fR(8) and other samba client tools will attempt to authenticate itself to servers using the weaker LANMAN password hash\&. If disabled, only server which support NT password hashes (e\&.g\&. Windows NT/2000, Samba, etc\&.\&.\&. but not Windows 95/98) will be able to be connected from the Samba client\&.
+
+
+The LANMAN encrypted response is easily broken, due to it's case-insensitive nature, and the choice of algorithm\&. Clients without Windows 95/98 servers are advised to disable this option\&.
+
+
+Disabling this option will also disable the \fBclient plaintext auth\fR option
+
+
+Likewise, if the \fBclient ntlmv2 auth\fR parameter is enabled, then only NTLMv2 logins will be attempted\&. Not all servers support NTLMv2, and most will require special configuration to us it\&.
+
+
+Default : \fBclient lanman auth = yes\fR
+
+
+.TP
+client ntlmv2 auth (G)
+This parameter determines whether or not \fBsmbclient\fR(8) will attempt to authenticate itself to servers using the NTLMv2 encrypted password response\&.
+
+
+If enabled, only an NTLMv2 and LMv2 response (both much more secure than earlier versions) will be sent\&. Many servers (including NT4 < SP4, Win9x and Samba 2\&.2) are not compatible with NTLMv2\&.
+
+
+Similarly, if enabled, NTLMv1, \fBclient lanman auth\fR and \fBclient plaintext auth\fR authentication will be disabled\&. This also disables share-level authentication\&.
+
+
+If disabled, an NTLM response (and possibly a LANMAN response) will be sent by the client, depending on the value of \fBclient lanman auth\fR\&.
+
+
+Note that some sites (particularly those following 'best practice' security polices) only allow NTLMv2 responses, and not the weaker LM or NTLM\&.
+
+
+Default : \fBclient ntlmv2 auth = no\fR
+
+
+.TP
+client plaintext auth (G)
+Specifies whether a client should send a plaintext password if the server does not support encrypted passwords\&.
+
+
+Default: \fBclient plaintext auth = yes\fR
+
+
+.TP
+client schannel (G)
+This controls whether the client offers or even demands the use of the netlogon schannel\&. \fIclient schannel = no\fR does not offer the schannel, \fIserver schannel = auto\fR offers the schannel but does not enforce it, and \fIserver schannel = yes\fR denies access if the server is not able to speak netlogon schannel\&.
+
+
+Default: \fBclient schannel = auto\fR
+
+
+Example: \fBclient schannel = yes\fR
+
+
+.TP
+client signing (G)
+This controls whether the client offers or requires the server it talks to to use SMB signing\&. Possible values are \fBauto\fR, \fBmandatory\fR and \fBdisabled\fR\&.
+
+
+When set to auto, SMB signing is offered, but not enforced\&. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either\&.
+
+
+Default: \fBclient signing = auto\fR
+
+
+.TP
+client use spnego (G)
+This variable controls controls whether samba clients will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000 servers to agree upon an authentication mechanism\&. SPNEGO client support for SMB Signing is currently broken, so you might want to turn this option off when operating with Windows 2003 domain controllers in particular\&.
+
+
+Default: \fBclient use spnego = yes\fR
+
+
+.TP
+comment (S)
+This is a text field that is seen next to a share when a client does a queries the server, either via the network neighborhood or via \fBnet view\fR to list what shares are available\&.
+
+
+If you want to set the string that is displayed next to the machine name then see the \fI server string\fR parameter\&.
+
+
+Default: \fBNo comment string\fR
+
+
+Example: \fBcomment = Fred's Files\fR
+
+
+.TP
+config file (G)
+This allows you to override the config file to use, instead of the default (usually \fIsmb\&.conf\fR)\&. There is a chicken and egg problem here as this option is set in the config file!
+
+
+For this reason, if the name of the config file has changed when the parameters are loaded then it will reload them from the new config file\&.
+
+
+This option takes the usual substitutions, which can be very useful\&.
+
+
+If the config file doesn't exist then it won't be loaded (allowing you to special case the config files of just a few clients)\&.
+
+
+Example: \fBconfig file = /usr/local/samba/lib/smb.conf.%m\fR
+
+
+.TP
+copy (S)
+This parameter allows you to "clone" service entries\&. The specified service is simply duplicated under the current service's name\&. Any parameters specified in the current section will override those in the section being copied\&.
+
+
+This feature lets you set up a 'template' service and create similar services easily\&. Note that the service being copied must occur earlier in the configuration file than the service doing the copying\&.
+
+
+Default: \fBno value\fR
+
+
+Example: \fBcopy = otherservice\fR
+
+
+.TP
+create mask (S)
+A synonym for this parameter is \fIcreate mode\fR \&.
+
+
+When a file is created, the necessary permissions are calculated according to the mapping from DOS modes to UNIX permissions, and the resulting UNIX mode is then bit-wise 'AND'ed with this parameter\&. This parameter may be thought of as a bit-wise MASK for the UNIX modes of a file\&. Any bit \fBnot\fR set here will be removed from the modes set on a file when it is created\&.
+
+
+The default value of this parameter removes the 'group' and 'other' write and execute bits from the UNIX modes\&.
+
+
+Following this Samba will bit-wise 'OR' the UNIX mode created from this parameter with the value of the \fIforce create mode\fR parameter which is set to 000 by default\&.
+
+
+This parameter does not affect directory modes\&. See the parameter \fIdirectory mode \fR for details\&.
+
+
+See also the \fIforce create mode\fR parameter for forcing particular mode bits to be set on created files\&. See also the \fIdirectory mode\fR parameter for masking mode bits on created directories\&. See also the \fIinherit permissions\fR parameter\&.
+
+
+Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors\&. If the administrator wishes to enforce a mask on access control lists also, they need to set the \fIsecurity mask\fR\&.
+
+
+Default: \fBcreate mask = 0744\fR
+
+
+Example: \fBcreate mask = 0775\fR
+
+
+.TP
+create mode (S)
+This is a synonym for \fI create mask\fR\&.
+
+
+.TP
+csc policy (S)
+This stands for \fBclient-side caching policy\fR, and specifies how clients capable of offline caching will cache the files in the share\&. The valid values are: manual, documents, programs, disable\&.
+
+
+These values correspond to those used on Windows servers\&.
+
+
+For example, shares containing roaming profiles can have offline caching disabled using \fBcsc policy = disable\fR\&.
+
+
+Default: \fBcsc policy = manual\fR
+
+
+Example: \fBcsc policy = programs\fR
+
+
+.TP
+deadtime (G)
+The value of the parameter (a decimal integer) represents the number of minutes of inactivity before a connection is considered dead, and it is disconnected\&. The deadtime only takes effect if the number of open files is zero\&.
+
+
+This is useful to stop a server's resources being exhausted by a large number of inactive connections\&.
+
+
+Most clients have an auto-reconnect feature when a connection is broken so in most cases this parameter should be transparent to users\&.
+
+
+Using this parameter with a timeout of a few minutes is recommended for most systems\&.
+
+
+A deadtime of zero indicates that no auto-disconnection should be performed\&.
+
+
+Default: \fBdeadtime = 0\fR
+
+
+Example: \fBdeadtime = 15\fR
+
+
+.TP
+debug hires timestamp (G)
+Sometimes the timestamps in the log messages are needed with a resolution of higher that seconds, this boolean parameter adds microsecond resolution to the timestamp message header when turned on\&.
+
+
+Note that the parameter \fI debug timestamp\fR must be on for this to have an effect\&.
+
+
+Default: \fBdebug hires timestamp = no\fR
+
+
+.TP
+debuglevel (G)
+Synonym for \fI log level\fR\&.
+
+
+.TP
+debug pid (G)
+When using only one log file for more then one forked \fBsmbd\fR(8)-process there may be hard to follow which process outputs which message\&. This boolean parameter is adds the process-id to the timestamp message headers in the logfile when turned on\&.
+
+
+Note that the parameter \fI debug timestamp\fR must be on for this to have an effect\&.
+
+
+Default: \fBdebug pid = no\fR
+
+
+.TP
+debug timestamp (G)
+Samba debug log messages are timestamped by default\&. If you are running at a high \fIdebug level\fR these timestamps can be distracting\&. This boolean parameter allows timestamping to be turned off\&.
+
+
+Default: \fBdebug timestamp = yes\fR
+
+
+.TP
+debug uid (G)
+Samba is sometimes run as root and sometime run as the connected user, this boolean parameter inserts the current euid, egid, uid and gid to the timestamp message headers in the log file if turned on\&.
+
+
+Note that the parameter \fI debug timestamp\fR must be on for this to have an effect\&.
+
+
+Default: \fBdebug uid = no\fR
+
+
+.TP
+default (G)
+A synonym for \fI default service\fR\&.
+
+
+.TP
+default case (S)
+See the section on NAME MANGLING\&. Also note the \fIshort preserve case\fR parameter\&.
+
+
+Default: \fBdefault case = lower\fR
+
+
+.TP
+default devmode (S)
+This parameter is only applicable to printable services\&. When smbd is serving Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba server has a Device Mode which defines things such as paper size and orientation and duplex settings\&. The device mode can only correctly be generated by the printer driver itself (which can only be executed on a Win32 platform)\&. Because smbd is unable to execute the driver code to generate the device mode, the default behavior is to se [...]
+
+
+Most problems with serving printer drivers to Windows NT/2k/XP clients can be traced to a problem with the generated device mode\&. Certain drivers will do things such as crashing the client's Explorer\&.exe with a NULL devmode\&. However, other printer drivers can cause the client's spooler service (spoolsv\&.exe) to die if the devmode was not created by the driver itself (i\&.e\&. smbd generates a default devmode)\&.
+
+
+This parameter should be used with care and tested with the printer driver in question\&. It is better to leave the device mode to NULL and let the Windows client set the correct values\&. Because drivers do not do this all the time, setting \fBdefault devmode = yes\fR will instruct smbd to generate a default one\&.
+
+
+For more information on Windows NT/2k printing and Device Modes, see the MSDN documentation\&.
+
+
+Default: \fBdefault devmode = no\fR
+
+
+.TP
+default service (G)
+This parameter specifies the name of a service which will be connected to if the service actually requested cannot be found\&. Note that the square brackets are \fBNOT\fR given in the parameter value (see example below)\&.
+
+
+There is no default value for this parameter\&. If this parameter is not given, attempting to connect to a nonexistent service results in an error\&.
+
+
+Typically the default service would be a \fIguest ok\fR, \fIread-only\fR service\&.
+
+
+Also note that the apparent service name will be changed to equal that of the requested service, this is very useful as it allows you to use macros like \fI%S\fR to make a wildcard service\&.
+
+
+Note also that any "_" characters in the name of the service used in the default service will get mapped to a "/"\&. This allows for interesting things\&.
+
+
+Example:
+
+
+.nf
+
+[global]
+	default service = pub
+        
+[pub]
+	path = /%S
+.fi
+
+
+.TP
+delete group script (G)
+This is the full pathname to a script that will be run \fBAS ROOT\fR \fBsmbd\fR(8) when a group is requested to be deleted\&. It will expand any \fI%g\fR to the group name passed\&. This script is only useful for installations using the Windows NT domain administration tools\&.
+
+
+.TP
+deleteprinter command (G)
+With the introduction of MS-RPC based printer support for Windows NT/2000 clients in Samba 2\&.2, it is now possible to delete printer at run time by issuing the DeletePrinter() RPC call\&.
+
+
+For a Samba host this means that the printer must be physically deleted from underlying printing system\&. The \fI deleteprinter command\fR defines a script to be run which will perform the necessary operations for removing the printer from the print system and from \fIsmb\&.conf\fR\&.
+
+
+The \fIdeleteprinter command\fR is automatically called with only one parameter: \fI "printer name"\fR\&.
+
+
+Once the \fIdeleteprinter command\fR has been executed, \fBsmbd\fR will reparse the \fI smb\&.conf\fR to associated printer no longer exists\&. If the sharename is still valid, then \fBsmbd \fR will return an ACCESS_DENIED error to the client\&.
+
+
+See also \fI addprinter command\fR, \fIprinting\fR, \fIshow add printer wizard\fR
+
+
+Default: \fBnone\fR
+
+
+Example: \fBdeleteprinter command = /usr/bin/removeprinter\fR
+
+
+.TP
+delete readonly (S)
+This parameter allows readonly files to be deleted\&. This is not normal DOS semantics, but is allowed by UNIX\&.
+
+
+This option may be useful for running applications such as rcs, where UNIX file ownership prevents changing file permissions, and DOS semantics prevent deletion of a read only file\&.
+
+
+Default: \fBdelete readonly = no\fR
+
+
+.TP
+delete share command (G)
+Samba 2\&.2\&.0 introduced the ability to dynamically add and delete shares via the Windows NT 4\&.0 Server Manager\&. The \fIdelete share command\fR is used to define an external program or script which will remove an existing service definition from \fIsmb\&.conf\fR\&. In order to successfully execute the \fIdelete share command\fR, \fBsmbd\fR requires that the administrator be connected using a root account (i\&.e\&. uid == 0)\&.
+
+
+When executed, \fBsmbd\fR will automatically invoke the \fIdelete share command\fR with two parameters\&.
+
+
+\fIconfigFile\fR - the location of the global \fIsmb\&.conf\fR file\&.
+
+\fIshareName\fR - the name of the existing service\&.
+
+This parameter is only used to remove file shares\&. To delete printer shares, see the \fIdeleteprinter command\fR\&.
+
+
+See also \fIadd share command\fR, \fIchange share command\fR\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBdelete share command = /usr/local/bin/delshare\fR
+
+
+.TP
+delete user from group script (G)
+Full path to the script that will be called when a user is removed from a group using the Windows NT domain administration tools\&. It will be run by \fBsmbd\fR(8) \fBAS ROOT\fR\&. Any \fI%g\fR will be replaced with the group name and any \fI%u\fR will be replaced with the user name\&.
+
+
+Default: \fBdelete user from group script = \fR
+
+
+Example: \fBdelete user from group script = /usr/sbin/deluser %u %g\fR
+
+
+.TP
+delete user script (G)
+This is the full pathname to a script that will be run by \fBsmbd\fR(8) when managing users with remote RPC (NT) tools\&.
+
+
+This script is called when a remote client removes a user from the server, normally using 'User Manager for Domains' or \fBrpcclient\fR\&.
+
+
+This script should delete the given UNIX username\&.
+
+
+Default: \fBdelete user script = <empty string>\fR
+
+
+Example: \fBdelete user script = /usr/local/samba/bin/del_user %u\fR
+
+
+.TP
+delete veto files (S)
+This option is used when Samba is attempting to delete a directory that contains one or more vetoed directories (see the \fIveto files\fR option)\&. If this option is set to \fBno\fR (the default) then if a vetoed directory contains any non-vetoed files or directories then the directory delete will fail\&. This is usually what you want\&.
+
+
+If this option is set to \fByes\fR, then Samba will attempt to recursively delete any files and directories within the vetoed directory\&. This can be useful for integration with file serving systems such as NetAtalk which create meta-files within directories you might normally veto DOS/Windows users from seeing (e\&.g\&. \fI\&.AppleDouble\fR)
+
+
+Setting \fBdelete veto files = yes\fR allows these directories to be transparently deleted when the parent directory is deleted (so long as the user has permissions to do so)\&.
+
+
+See also the \fIveto files\fR parameter\&.
+
+
+Default: \fBdelete veto files = no\fR
+
+
+.TP
+deny hosts (S)
+Synonym for \fIhosts deny\fR\&.
+
+
+.TP
+dfree command (G)
+The \fIdfree command\fR setting should only be used on systems where a problem occurs with the internal disk space calculations\&. This has been known to happen with Ultrix, but may occur with other operating systems\&. The symptom that was seen was an error of "Abort Retry Ignore" at the end of each directory listing\&.
+
+
+This setting allows the replacement of the internal routines to calculate the total disk space and amount available with an external routine\&. The example below gives a possible script that might fulfill this function\&.
+
+
+The external program will be passed a single parameter indicating a directory in the filesystem being queried\&. This will typically consist of the string \fI\&./\fR\&. The script should return two integers in ASCII\&. The first should be the total disk space in blocks, and the second should be the number of available blocks\&. An optional third return value can give the block size in bytes\&. The default blocksize is 1024 bytes\&.
+
+
+Note: Your script should \fBNOT\fR be setuid or setgid and should be owned by (and writeable only by) root!
+
+
+Default: \fBBy default internal routines for determining the disk capacity and remaining space will be used\&. \fR
+
+
+Example: \fBdfree command = /usr/local/samba/bin/dfree\fR
+
+
+Where the script dfree (which must be made executable) could be:
+
+
+.nf
+ 
+#!/bin/sh
+df $1 | tail -1 | awk '{print $2" "$4}'
+.fi
+
+
+or perhaps (on Sys V based systems):
+
+
+.nf
+ 
+#!/bin/sh
+/usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+.fi
+
+
+Note that you may have to replace the command names with full path names on some systems\&.
+
+
+.TP
+directory (S)
+Synonym for \fIpath\fR\&.
+
+
+.TP
+directory mask (S)
+This parameter is the octal modes which are used when converting DOS modes to UNIX modes when creating UNIX directories\&.
+
+
+When a directory is created, the necessary permissions are calculated according to the mapping from DOS modes to UNIX permissions, and the resulting UNIX mode is then bit-wise 'AND'ed with this parameter\&. This parameter may be thought of as a bit-wise MASK for the UNIX modes of a directory\&. Any bit \fBnot\fR set here will be removed from the modes set on a directory when it is created\&.
+
+
+The default value of this parameter removes the 'group' and 'other' write bits from the UNIX mode, allowing only the user who owns the directory to modify it\&.
+
+
+Following this Samba will bit-wise 'OR' the UNIX mode created from this parameter with the value of the \fIforce directory mode\fR parameter\&. This parameter is set to 000 by default (i\&.e\&. no extra mode bits are added)\&.
+
+
+Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors\&. If the administrator wishes to enforce a mask on access control lists also, they need to set the \fIdirectory security mask\fR\&.
+
+
+See the \fIforce directory mode\fR parameter to cause particular mode bits to always be set on created directories\&.
+
+
+See also the \fIcreate mode \fR parameter for masking mode bits on created files, and the \fIdirectory security mask\fR parameter\&.
+
+
+Also refer to the \fI inherit permissions\fR parameter\&.
+
+
+Default: \fBdirectory mask = 0755\fR
+
+
+Example: \fBdirectory mask = 0775\fR
+
+
+.TP
+directory mode (S)
+Synonym for \fI directory mask\fR
+
+
+.TP
+directory security mask (S)
+This parameter controls what UNIX permission bits can be modified when a Windows NT client is manipulating the UNIX permission on a directory using the native NT security dialog box\&.
+
+
+This parameter is applied as a mask (AND'ed with) to the changed permission bits, thus preventing any bits not in this mask from being modified\&. Essentially, zero bits in this mask may be treated as a set of bits the user is not allowed to change\&.
+
+
+If not set explicitly this parameter is set to 0777 meaning a user is allowed to modify all the user/group/world permissions on a directory\&.
+
+
+\fBNote\fR that users who can access the Samba server through other means can easily bypass this restriction, so it is primarily useful for standalone "appliance" systems\&. Administrators of most normal systems will probably want to leave it as the default of \fB0777\fR\&.
+
+
+See also the \fI force directory security mode\fR, \fIsecurity mask\fR, \fIforce security mode \fR parameters\&.
+
+
+Default: \fBdirectory security mask = 0777\fR
+
+
+Example: \fBdirectory security mask = 0700\fR
+
+
+.TP
+disable netbios (G)
+Enabling this parameter will disable netbios support in Samba\&. Netbios is the only available form of browsing in all windows versions except for 2000 and XP\&.
+
+
+Note that clients that only support netbios won't be able to see your samba server when netbios support is disabled\&.
+
+Default: \fBdisable netbios = no\fR
+
+
+Example: \fBdisable netbios = yes\fR
+
+
+.TP
+disable spoolss (G)
+Enabling this parameter will disable Samba's support for the SPOOLSS set of MS-RPC's and will yield identical behavior as Samba 2\&.0\&.x\&. Windows NT/2000 clients will downgrade to using Lanman style printing commands\&. Windows 9x/ME will be uneffected by the parameter\&. However, this will also disable the ability to upload printer drivers to a Samba server via the Windows NT Add Printer Wizard or by using the NT printer properties dialog window\&. It will also disable the capability [...]
+
+
+See also use client driver
+
+
+Default : \fBdisable spoolss = no\fR
+
+
+.TP
+display charset (G)
+Specifies the charset that samba will use to print messages to stdout and stderr and SWAT will use\&. Should generally be the same as the \fBunix charset\fR\&.
+
+
+Default: \fBdisplay charset = ASCII\fR
+
+
+Example: \fBdisplay charset = UTF8\fR
+
+
+.TP
+dns proxy (G)
+Specifies that \fBnmbd\fR(8) when acting as a WINS server and finding that a NetBIOS name has not been registered, should treat the NetBIOS name word-for-word as a DNS name and do a lookup with the DNS server for that name on behalf of the name-querying client\&.
+
+
+Note that the maximum length for a NetBIOS name is 15 characters, so the DNS name (or DNS alias) can likewise only be 15 characters, maximum\&.
+
+
+\fBnmbd\fR spawns a second copy of itself to do the DNS name lookup requests, as doing a name lookup is a blocking action\&.
+
+
+See also the parameter \fI wins support\fR\&.
+
+
+Default: \fBdns proxy = yes\fR
+
+
+.TP
+domain logons (G)
+If set to \fByes\fR, the Samba server will serve Windows 95/98 Domain logons for the \fIworkgroup\fR it is in\&. Samba 2\&.2 has limited capability to act as a domain controller for Windows NT 4 Domains\&. For more details on setting up this feature see the Samba-PDC-HOWTO included in the Samba documentation\&.
+
+
+Default: \fBdomain logons = no\fR
+
+
+.TP
+domain master (G)
+Tell \fBsmbd\fR(8) to enable WAN-wide browse list collation\&. Setting this option causes \fBnmbd\fR to claim a special domain specific NetBIOS name that identifies it as a domain master browser for its given \fIworkgroup\fR\&. Local master browsers in the same \fIworkgroup\fR on broadcast-isolated subnets will give this \fBnmbd\fR their local browse lists, and then ask \fBsmbd\fR(8) for a complete copy of the browse list for the whole wide area network\&. Browser clients will then conta [...]
+
+
+Note that Windows NT Primary Domain Controllers expect to be able to claim this \fIworkgroup\fR specific special NetBIOS name that identifies them as domain master browsers for that \fIworkgroup\fR by default (i\&.e\&. there is no way to prevent a Windows NT PDC from attempting to do this)\&. This means that if this parameter is set and \fBnmbd\fR claims the special name for a \fIworkgroup\fR before a Windows NT PDC is able to do so then cross subnet browsing will behave strangely and ma [...]
+
+
+If \fBdomain logons = yes\fR , then the default behavior is to enable the \fIdomain master\fR parameter\&. If \fIdomain logons\fR is not enabled (the default setting), then neither will \fIdomain master\fR be enabled by default\&.
+
+
+Default: \fBdomain master = auto\fR
+
+
+.TP
+dont descend (S)
+There are certain directories on some systems (e\&.g\&., the \fI/proc\fR tree under Linux) that are either not of interest to clients or are infinitely deep (recursive)\&. This parameter allows you to specify a comma-delimited list of directories that the server should always show as empty\&.
+
+
+Note that Samba can be very fussy about the exact format of the "dont descend" entries\&. For example you may need \fI \&./proc\fR instead of just \fI/proc\fR\&. Experimentation is the best policy :-)
+
+
+Default: \fBnone (i\&.e\&., all directories are OK to descend)\fR
+
+
+Example: \fBdont descend = /proc,/dev\fR
+
+
+.TP
+dos charset (G)
+DOS SMB clients assume the server has the same charset as they do\&. This option specifies which charset Samba should talk to DOS clients\&.
+
+
+The default depends on which charsets you have installed\&. Samba tries to use charset 850 but falls back to ASCII in case it is not available\&. Run \fBtestparm\fR(1) to check the default on your system\&.
+
+
+.TP
+dos filemode (S)
+The default behavior in Samba is to provide UNIX-like behavior where only the owner of a file/directory is able to change the permissions on it\&. However, this behavior is often confusing to DOS/Windows users\&. Enabling this parameter allows a user who has write access to the file (by whatever means) to modify the permissions on it\&. Note that a user belonging to the group owning the file will not be allowed to change permissions if the group is only granted read access\&. Ownership o [...]
+
+
+Default: \fBdos filemode = no\fR
+
+
+.TP
+dos filetime resolution (S)
+Under the DOS and Windows FAT filesystem, the finest granularity on time resolution is two seconds\&. Setting this parameter for a share causes Samba to round the reported time down to the nearest two second boundary when a query call that requires one second resolution is made to \fBsmbd\fR(8)\&.
+
+
+This option is mainly used as a compatibility option for Visual C++ when used against Samba shares\&. If oplocks are enabled on a share, Visual C++ uses two different time reading calls to check if a file has changed since it was last read\&. One of these calls uses a one-second granularity, the other uses a two second granularity\&. As the two second call rounds any odd second down, then if the file has a timestamp of an odd number of seconds then the two timestamps will not match and V [...]
+
+
+Default: \fBdos filetime resolution = no\fR
+
+
+.TP
+dos filetimes (S)
+Under DOS and Windows, if a user can write to a file they can change the timestamp on it\&. Under POSIX semantics, only the owner of the file or root may change the timestamp\&. By default, Samba runs with POSIX semantics and refuses to change the timestamp on a file if the user \fBsmbd\fR is acting on behalf of is not the file owner\&. Setting this option to \fB yes\fR allows DOS semantics and \fBsmbd\fR(8) will change the file timestamp as DOS requires\&.
+
+
+Default: \fBdos filetimes = no\fR
+
+
+.TP
+enable rid algorithm (G)
+This option is used to control whether or not smbd in Samba 3\&.0 should fallback to the algorithm used by Samba 2\&.2 to generate user and group RIDs\&. The longterm development goal is to remove the algorithmic mappings of RIDs altogether, but this has proved to be difficult\&. This parameter is mainly provided so that developers can turn the algorithm on and off and see what breaks\&. This parameter should not be disabled by non-developers because certain features in Samba will fail t [...]
+
+
+Default: \fBenable rid algorithm = <yes>\fR
+
+
+.TP
+encrypt passwords (G)
+This boolean controls whether encrypted passwords will be negotiated with the client\&. Note that Windows NT 4\&.0 SP3 and above and also Windows 98 will by default expect encrypted passwords unless a registry entry is changed\&. To use encrypted passwords in Samba see the chapter "User Database" in the Samba HOWTO Collection\&.
+
+
+In order for encrypted passwords to work correctly \fBsmbd\fR(8) must either have access to a local \fBsmbpasswd\fR(5) file (see the \fBsmbpasswd\fR(8) program for information on how to set up and maintain this file), or set the security = [server|domain|ads] parameter which causes \fBsmbd\fR to authenticate against another server\&.
+
+
+Default: \fBencrypt passwords = yes\fR
+
+
+.TP
+enhanced browsing (G)
+This option enables a couple of enhancements to cross-subnet browse propagation that have been added in Samba but which are not standard in Microsoft implementations\&.
+
+
+The first enhancement to browse propagation consists of a regular wildcard query to a Samba WINS server for all Domain Master Browsers, followed by a browse synchronization with each of the returned DMBs\&. The second enhancement consists of a regular randomised browse synchronization with all currently known DMBs\&.
+
+
+You may wish to disable this option if you have a problem with empty workgroups not disappearing from browse lists\&. Due to the restrictions of the browse protocols these enhancements can cause a empty workgroup to stay around forever which can be annoying\&.
+
+
+In general you should leave this option enabled as it makes cross-subnet browse propagation much more reliable\&.
+
+
+Default: \fBenhanced browsing = yes\fR
+
+
+.TP
+enumports command (G)
+The concept of a "port" is fairly foreign to UNIX hosts\&. Under Windows NT/2000 print servers, a port is associated with a port monitor and generally takes the form of a local port (i\&.e\&. LPT1:, COM1:, FILE:) or a remote port (i\&.e\&. LPD Port Monitor, etc\&.\&.\&.)\&. By default, Samba has only one port defined--\fB"Samba Printer Port"\fR\&. Under Windows NT/2000, all printers must have a valid port name\&. If you wish to have a list of ports displayed (\fBsmbd \fR does not use a p [...]
+
+
+Default: \fBno enumports command\fR
+
+
+Example: \fBenumports command = /usr/bin/listports\fR
+
+
+.TP
+exec (S)
+This is a synonym for \fIpreexec\fR\&.
+
+
+.TP
+fake directory create times (S)
+NTFS and Windows VFAT file systems keep a create time for all files and directories\&. This is not the same as the ctime - status change time - that Unix keeps, so Samba by default reports the earliest of the various times Unix does keep\&. Setting this parameter for a share causes Samba to always report midnight 1-1-1980 as the create time for directories\&.
+
+
+This option is mainly used as a compatibility option for Visual C++ when used against Samba shares\&. Visual C++ generated makefiles have the object directory as a dependency for each object file, and a make rule to create the directory\&. Also, when NMAKE compares timestamps it uses the creation time when examining a directory\&. Thus the object directory will be created if it does not exist, but once it does exist it will always have an earlier timestamp than the object files it contains\&.
+
+
+However, Unix time semantics mean that the create time reported by Samba will be updated whenever a file is created or or deleted in the directory\&. NMAKE finds all object files in the object directory\&. The timestamp of the last one built is then compared to the timestamp of the object directory\&. If the directory's timestamp if newer, then all object files will be rebuilt\&. Enabling this option ensures directories always predate their contents and an NMAKE build will proceed as exp [...]
+
+
+Default: \fBfake directory create times = no\fR
+
+
+.TP
+fake oplocks (S)
+Oplocks are the way that SMB clients get permission from a server to locally cache file operations\&. If a server grants an oplock (opportunistic lock) then the client is free to assume that it is the only one accessing the file and it will aggressively cache file data\&. With some oplock types the client may even cache file open/close operations\&. This can give enormous performance benefits\&.
+
+
+When you set \fBfake oplocks = yes\fR, \fBsmbd\fR(8) will always grant oplock requests no matter how many clients are using the file\&.
+
+
+It is generally much better to use the real \fIoplocks\fR support rather than this parameter\&.
+
+
+If you enable this option on all read-only shares or shares that you know will only be accessed from one client at a time such as physically read-only media like CDROMs, you will see a big performance improvement on many operations\&. If you enable this option on shares where multiple clients may be accessing the files read-write at the same time you can get data corruption\&. Use this option carefully!
+
+
+Default: \fBfake oplocks = no\fR
+
+
+.TP
+follow symlinks (S)
+This parameter allows the Samba administrator to stop \fBsmbd\fR(8) from following symbolic links in a particular share\&. Setting this parameter to \fBno\fR prevents any file or directory that is a symbolic link from being followed (the user will get an error)\&. This option is very useful to stop users from adding a symbolic link to \fI/etc/passwd\fR in their home directory for instance\&. However it will slow filename lookups down slightly\&.
+
+
+This option is enabled (i\&.e\&. \fBsmbd\fR will follow symbolic links) by default\&.
+
+
+Default: \fBfollow symlinks = yes\fR
+
+
+.TP
+force create mode (S)
+This parameter specifies a set of UNIX mode bit permissions that will \fBalways\fR be set on a file created by Samba\&. This is done by bitwise 'OR'ing these bits onto the mode bits of a file that is being created or having its permissions changed\&. The default for this parameter is (in octal) 000\&. The modes in this parameter are bitwise 'OR'ed onto the file mode after the mask set in the \fIcreate mask\fR parameter is applied\&.
+
+
+See also the parameter \fIcreate mask\fR for details on masking mode bits on files\&.
+
+
+See also the \fIinherit permissions\fR parameter\&.
+
+
+Default: \fBforce create mode = 000\fR
+
+
+Example: \fBforce create mode = 0755\fR
+
+
+would force all created files to have read and execute permissions set for 'group' and 'other' as well as the read/write/execute bits set for the 'user'\&.
+
+
+.TP
+force directory mode (S)
+This parameter specifies a set of UNIX mode bit permissions that will \fBalways\fR be set on a directory created by Samba\&. This is done by bitwise 'OR'ing these bits onto the mode bits of a directory that is being created\&. The default for this parameter is (in octal) 0000 which will not add any extra permission bits to a created directory\&. This operation is done after the mode mask in the parameter \fIdirectory mask\fR is applied\&.
+
+
+See also the parameter \fI directory mask\fR for details on masking mode bits on created directories\&.
+
+
+See also the \fI inherit permissions\fR parameter\&.
+
+
+Default: \fBforce directory mode = 000\fR
+
+
+Example: \fBforce directory mode = 0755\fR
+
+
+would force all created directories to have read and execute permissions set for 'group' and 'other' as well as the read/write/execute bits set for the 'user'\&.
+
+
+.TP
+force directory security mode (S)
+This parameter controls what UNIX permission bits can be modified when a Windows NT client is manipulating the UNIX permission on a directory using the native NT security dialog box\&.
+
+
+This parameter is applied as a mask (OR'ed with) to the changed permission bits, thus forcing any bits in this mask that the user may have modified to be on\&. Essentially, one bits in this mask may be treated as a set of bits that, when modifying security on a directory, the user has always set to be 'on'\&.
+
+
+If not set explicitly this parameter is 000, which allows a user to modify all the user/group/world permissions on a directory without restrictions\&.
+
+
+\fBNote\fR that users who can access the Samba server through other means can easily bypass this restriction, so it is primarily useful for standalone "appliance" systems\&. Administrators of most normal systems will probably want to leave it set as 0000\&.
+
+
+See also the \fI directory security mask\fR, \fIsecurity mask\fR, \fIforce security mode \fR parameters\&.
+
+
+Default: \fBforce directory security mode = 0\fR
+
+
+Example: \fBforce directory security mode = 700\fR
+
+
+.TP
+force group (S)
+This specifies a UNIX group name that will be assigned as the default primary group for all users connecting to this service\&. This is useful for sharing files by ensuring that all access to files on service will use the named group for their permissions checking\&. Thus, by assigning permissions for this group to the files and directories within this service the Samba administrator can restrict or allow sharing of these files\&.
+
+
+In Samba 2\&.0\&.5 and above this parameter has extended functionality in the following way\&. If the group name listed here has a '+' character prepended to it then the current user accessing the share only has the primary group default assigned to this group if they are already assigned as a member of that group\&. This allows an administrator to decide that only users who are already in a particular group will create files with group ownership set to that group\&. This gives a finer g [...]
+
+
+If the \fIforce user\fR parameter is also set the group specified in \fIforce group\fR will override the primary group set in \fIforce user\fR\&.
+
+
+See also \fIforce user\fR\&.
+
+
+Default: \fBno forced group\fR
+
+
+Example: \fBforce group = agroup\fR
+
+
+.TP
+force security mode (S)
+This parameter controls what UNIX permission bits can be modified when a Windows NT client is manipulating the UNIX permission on a file using the native NT security dialog box\&.
+
+
+This parameter is applied as a mask (OR'ed with) to the changed permission bits, thus forcing any bits in this mask that the user may have modified to be on\&. Essentially, one bits in this mask may be treated as a set of bits that, when modifying security on a file, the user has always set to be 'on'\&.
+
+
+If not set explicitly this parameter is set to 0, and allows a user to modify all the user/group/world permissions on a file, with no restrictions\&.
+
+
+\fBNote\fR that users who can access the Samba server through other means can easily bypass this restriction, so it is primarily useful for standalone "appliance" systems\&. Administrators of most normal systems will probably want to leave this set to 0000\&.
+
+
+See also the \fI force directory security mode\fR, \fIdirectory security mask\fR, \fI security mask\fR parameters\&.
+
+
+Default: \fBforce security mode = 0\fR
+
+
+Example: \fBforce security mode = 700\fR
+
+
+.TP
+force user (S)
+This specifies a UNIX user name that will be assigned as the default user for all users connecting to this service\&. This is useful for sharing files\&. You should also use it carefully as using it incorrectly can cause security problems\&.
+
+
+This user name only gets used once a connection is established\&. Thus clients still need to connect as a valid user and supply a valid password\&. Once connected, all file operations will be performed as the "forced user", no matter what username the client connected as\&. This can be very useful\&.
+
+
+In Samba 2\&.0\&.5 and above this parameter also causes the primary group of the forced user to be used as the primary group for all file activity\&. Prior to 2\&.0\&.5 the primary group was left as the primary group of the connecting user (this was a bug)\&.
+
+
+See also \fIforce group\fR
+
+
+Default: \fBno forced user\fR
+
+
+Example: \fBforce user = auser\fR
+
+
+.TP
+fstype (S)
+This parameter allows the administrator to configure the string that specifies the type of filesystem a share is using that is reported by \fBsmbd\fR(8) when a client queries the filesystem type for a share\&. The default type is \fBNTFS\fR for compatibility with Windows NT but this can be changed to other strings such as \fBSamba\fR or \fBFAT \fR if required\&.
+
+
+Default: \fBfstype = NTFS\fR
+
+
+Example: \fBfstype = Samba\fR
+
+
+.TP
+get quota command (G)
+The \fBget quota command\fR should only be used whenever there is no operating system API available from the OS that samba can use\&.
+
+
+This parameter should specify the path to a script that queries the quota information for the specified user/group for the partition that the specified directory is on\&.
+
+
+Such a script should take 3 arguments:
+
+
+directory
+
+type of query
+
+uid of user or gid of group
+
+The type of query can be one of :
+
+
+1 - user quotas
+
+2 - user default quotas (uid = -1)
+
+3 - group quotas
+
+4 - group default quotas (gid = -1)
+
+This script should print its output according to the following format:
+
+
+Line 1 - quota flags (0 = no quotas, 1 = quotas enabled, 2 = quotas enabled and enforced)
+
+Line 2 - number of currently used blocks
+
+Line 3 - the softlimit number of blocks
+
+Line 4 - the hardlimit number of blocks
+
+Line 5 - currently used number of inodes
+
+Line 6 - the softlimit number of inodes
+
+Line 7 - the hardlimit number of inodes
+
+Line 8(optional) - the number of bytes in a block(default is 1024)
+
+See also the \fIset quota command\fR parameter\&.
+
+
+Default: \fBget quota command = \fR
+
+
+Example: \fBget quota command = /usr/local/sbin/query_quota\fR
+
+
+.TP
+getwd cache (G)
+This is a tuning option\&. When this is enabled a caching algorithm will be used to reduce the time taken for getwd() calls\&. This can have a significant impact on performance, especially when the \fIwide links\fR parameter is set to \fBno\fR\&.
+
+
+Default: \fBgetwd cache = yes\fR
+
+
+.TP
+group (S)
+Synonym for \fIforce group\fR\&.
+
+
+.TP
+guest account (G,S)
+This is a username which will be used for access to services which are specified as \fI guest ok\fR (see below)\&. Whatever privileges this user has will be available to any client connecting to the guest service\&. Typically this user will exist in the password file, but will not have a valid login\&. The user account "ftp" is often a good choice for this parameter\&. If a username is specified in a given service, the specified username overrides this one\&.
+
+
+One some systems the default guest account "nobody" may not be able to print\&. Use another account in this case\&. You should test this by trying to log in as your guest user (perhaps by using the \fBsu -\fR command) and trying to print using the system print command such as \fBlpr(1)\fR or \fB lp(1)\fR\&.
+
+
+This parameter does not accept % macros, because many parts of the system require this value to be constant for correct operation\&.
+
+
+Default: \fBspecified at compile time, usually "nobody"\fR
+
+
+Example: \fBguest account = ftp\fR
+
+
+.TP
+guest ok (S)
+If this parameter is \fByes\fR for a service, then no password is required to connect to the service\&. Privileges will be those of the \fI guest account\fR\&.
+
+
+This paramater nullifies the benifits of setting \fIrestrict anonymous\fR = 2
+
+
+See the section below on \fI security\fR for more information about this option\&.
+
+
+Default: \fBguest ok = no\fR
+
+
+.TP
+guest only (S)
+If this parameter is \fByes\fR for a service, then only guest connections to the service are permitted\&. This parameter will have no effect if \fIguest ok\fR is not set for the service\&.
+
+
+See the section below on \fI security\fR for more information about this option\&.
+
+
+Default: \fBguest only = no\fR
+
+
+.TP
+hide dot files (S)
+This is a boolean parameter that controls whether files starting with a dot appear as hidden files\&.
+
+
+Default: \fBhide dot files = yes\fR
+
+
+.TP
+hide files (S)
+This is a list of files or directories that are not visible but are accessible\&. The DOS 'hidden' attribute is applied to any files or directories that match\&.
+
+
+Each entry in the list must be separated by a '/', which allows spaces to be included in the entry\&. '*' and '?' can be used to specify multiple files or directories as in DOS wildcards\&.
+
+
+Each entry must be a Unix path, not a DOS path and must not include the Unix directory separator '/'\&.
+
+
+Note that the case sensitivity option is applicable in hiding files\&.
+
+
+Setting this parameter will affect the performance of Samba, as it will be forced to check all files and directories for a match as they are scanned\&.
+
+
+See also \fIhide dot files\fR, \fI veto files\fR and \fIcase sensitive\fR\&.
+
+
+Default: \fBno file are hidden\fR
+
+
+Example: \fBhide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/\fR
+
+
+The above example is based on files that the Macintosh SMB client (DAVE) available from Thursby creates for internal use, and also still hides all files beginning with a dot\&.
+
+
+.TP
+hide local users (G)
+This parameter toggles the hiding of local UNIX users (root, wheel, floppy, etc) from remote clients\&.
+
+
+Default: \fBhide local users = no\fR
+
+
+.TP
+hide special files (S)
+This parameter prevents clients from seeing special files such as sockets, devices and fifo's in directory listings\&.
+
+
+Default: \fBhide special files = no\fR
+
+
+.TP
+hide unreadable (S)
+This parameter prevents clients from seeing the existance of files that cannot be read\&. Defaults to off\&.
+
+
+Default: \fBhide unreadable = no\fR
+
+
+.TP
+hide unwriteable files (S)
+This parameter prevents clients from seeing the existance of files that cannot be written to\&. Defaults to off\&. Note that unwriteable directories are shown as usual\&.
+
+
+Default: \fBhide unwriteable = no\fR
+
+
+.TP
+homedir map (G)
+If\fInis homedir \fR is \fByes\fR, and \fBsmbd\fR(8) is also acting as a Win95/98 \fIlogon server\fR then this parameter specifies the NIS (or YP) map from which the server for the user's home directory should be extracted\&. At present, only the Sun auto\&.home map format is understood\&. The form of the map is:
+
+
+\fBusername server:/some/file/system\fR
+
+
+and the program will extract the servername from before the first ':'\&. There should probably be a better parsing system that copes with different map formats and also Amd (another automounter) maps\&.
+
+
+A working NIS client is required on the system for this option to work\&.
+
+See also \fInis homedir\fR , \fIdomain logons\fR \&.
+
+
+Default: \fBhomedir map = <empty string>\fR
+
+
+Example: \fBhomedir map = amd.homedir\fR
+
+
+.TP
+host msdfs (G)
+If set to \fByes\fR, Samba will act as a Dfs server, and allow Dfs-aware clients to browse Dfs trees hosted on the server\&.
+
+
+See also the \fI msdfs root\fR share level parameter\&. For more information on setting up a Dfs tree on Samba, refer to ???\&.
+
+
+Default: \fBhost msdfs = no\fR
+
+
+.TP
+hostname lookups (G)
+Specifies whether samba should use (expensive) hostname lookups or use the ip addresses instead\&. An example place where hostname lookups are currently used is when checking the \fBhosts deny\fR and \fBhosts allow\fR\&.
+
+
+Default: \fBhostname lookups = yes\fR
+
+
+Example: \fBhostname lookups = no\fR
+
+
+.TP
+hosts allow (S)
+A synonym for this parameter is \fIallow hosts\fR\&.
+
+
+This parameter is a comma, space, or tab delimited set of hosts which are permitted to access a service\&.
+
+
+If specified in the [global] section then it will apply to all services, regardless of whether the individual service has a different setting\&.
+
+
+You can specify the hosts by name or IP number\&. For example, you could restrict access to only the hosts on a Class C subnet with something like \fBallow hosts = 150.203.5. \fR\&. The full syntax of the list is described in the man page \fIhosts_access(5)\fR\&. Note that this man page may not be present on your system, so a brief description will be given here also\&.
+
+
+Note that the localhost address 127\&.0\&.0\&.1 will always be allowed access unless specifically denied by a \fIhosts deny\fR option\&.
+
+
+You can also specify hosts by network/netmask pairs and by netgroup names if your system supports netgroups\&. The \fBEXCEPT\fR keyword can also be used to limit a wildcard list\&. The following examples may provide some help:
+
+
+Example 1: allow all IPs in 150\&.203\&.*\&.*; except one
+
+
+\fBhosts allow = 150.203. EXCEPT 150.203.6.66\fR
+
+
+Example 2: allow hosts that match the given network/netmask
+
+
+\fBhosts allow = 150.203.15.0/255.255.255.0\fR
+
+
+Example 3: allow a couple of hosts
+
+
+\fBhosts allow = lapland, arvidsjaur\fR
+
+
+Example 4: allow only hosts in NIS netgroup "foonet", but deny access from one particular host
+
+
+\fBhosts allow = @foonet\fR
+
+
+\fBhosts deny = pirate\fR
+
+
+Note that access still requires suitable user-level passwords\&.
+
+See \fBtestparm\fR(1) for a way of testing your host access to see if it does what you expect\&.
+
+
+Default: \fBnone (i\&.e\&., all hosts permitted access)\fR
+
+
+Example: \fBallow hosts = 150.203.5. myhost.mynet.edu.au\fR
+
+
+.TP
+hosts deny (S)
+The opposite of \fIhosts allow\fR - hosts listed here are \fBNOT\fR permitted access to services unless the specific services have their own lists to override this one\&. Where the lists conflict, the \fIallow\fR list takes precedence\&.
+
+
+Default: \fBnone (i\&.e\&., no hosts specifically excluded)\fR
+
+
+Example: \fBhosts deny = 150.203.4. badhost.mynet.edu.au\fR
+
+
+.TP
+hosts equiv (G)
+If this global parameter is a non-null string, it specifies the name of a file to read for the names of hosts and users who will be allowed access without specifying a password\&.
+
+
+This is not be confused with \fIhosts allow\fR which is about hosts access to services and is more useful for guest services\&. \fI hosts equiv\fR may be useful for NT clients which will not supply passwords to Samba\&.
+
+
+The use of \fIhosts equiv \fR can be a major security hole\&. This is because you are trusting the PC to supply the correct username\&. It is very easy to get a PC to supply a false username\&. I recommend that the \fIhosts equiv\fR option be only used if you really know what you are doing, or perhaps on a home network where you trust your spouse and kids\&. And only if you \fBreally\fR trust them :-)\&.
+
+Default: \fBno host equivalences\fR
+
+
+Example: \fBhosts equiv = /etc/hosts.equiv\fR
+
+
+.TP
+idmap backend (G)
+The purpose of the idmap backend parameter is to allow idmap to NOT use the local idmap tdb file to obtain SID to UID / GID mappings, but instead to obtain them from a common LDAP backend\&. This way all domain members and controllers will have the same UID and GID to SID mappings\&. This avoids the risk of UID / GID inconsistencies across UNIX / Linux systems that are sharing information over protocols other than SMB/CIFS (ie: NFS)\&.
+
+
+Default: \fBidmap backend = <empty string>\fR
+
+
+Example: \fBidmap backend = ldap:ldap://ldapslave.example.com\fR
+
+
+.TP
+idmap gid (G)
+The idmap gid parameter specifies the range of group ids that are allocated for the purpose of mapping UNX groups to NT group SIDs\&. This range of group ids should have no existing local or NIS groups within it as strange conflicts can occur otherwise\&.
+
+
+The availability of an idmap gid range is essential for correct operation of all group mapping\&.
+
+
+Default: \fBidmap gid = <empty string>\fR
+
+
+Example: \fBidmap gid = 10000-20000\fR
+
+
+.TP
+idmap uid (G)
+The idmap uid parameter specifies the range of user ids that are allocated for use in mapping UNIX users to NT user SIDs\&. This range of ids should have no existing local or NIS users within it as strange conflicts can occur otherwise\&.
+
+
+Default: \fBidmap uid = <empty string>\fR
+
+
+Example: \fBidmap uid = 10000-20000\fR
+
+
+.TP
+include (G)
+This allows you to include one config file inside another\&. The file is included literally, as though typed in place\&.
+
+
+It takes the standard substitutions, except \fI%u \fR, \fI%P\fR and \fI%S\fR\&.
+
+
+Default: \fBno file included\fR
+
+
+Example: \fBinclude = /usr/local/samba/lib/admin_smb.conf\fR
+
+
+.TP
+inherit acls (S)
+This parameter can be used to ensure that if default acls exist on parent directories, they are always honored when creating a subdirectory\&. The default behavior is to use the mode specified when creating the directory\&. Enabling this option sets the mode to 0777, thus guaranteeing that default directory acls are propagated\&.
+
+
+Default: \fBinherit acls = no\fR
+
+
+.TP
+inherit permissions (S)
+The permissions on new files and directories are normally governed by \fI create mask\fR, \fIdirectory mask\fR, \fIforce create mode\fR and \fIforce directory mode\fR but the boolean inherit permissions parameter overrides this\&.
+
+
+New directories inherit the mode of the parent directory, including bits such as setgid\&.
+
+
+New files inherit their read/write bits from the parent directory\&. Their execute bits continue to be determined by \fImap archive\fR , \fImap hidden\fR and \fImap system\fR as usual\&.
+
+
+Note that the setuid bit is \fBnever\fR set via inheritance (the code explicitly prohibits this)\&.
+
+
+This can be particularly useful on large systems with many users, perhaps several thousand, to allow a single [homes] share to be used flexibly by each user\&.
+
+
+See also \fIcreate mask \fR, \fI directory mask\fR, \fIforce create mode\fR and \fIforce directory mode\fR \&.
+
+
+Default: \fBinherit permissions = no\fR
+
+
+.TP
+interfaces (G)
+This option allows you to override the default network interfaces list that Samba will use for browsing, name registration and other NBT traffic\&. By default Samba will query the kernel for the list of all active interfaces and use any interfaces except 127\&.0\&.0\&.1 that are broadcast capable\&.
+
+
+The option takes a list of interface strings\&. Each string can be in any of the following forms:
+
+
+a network interface name (such as eth0)\&. This may include shell-like wildcards so eth* will match any interface starting with the substring "eth"
+
+an IP address\&. In this case the netmask is determined from the list of interfaces obtained from the kernel
+
+an IP/mask pair\&.
+
+a broadcast/mask pair\&.
+
+The "mask" parameters can either be a bit length (such as 24 for a C class network) or a full netmask in dotted decimal form\&.
+
+
+The "IP" parameters above can either be a full dotted decimal IP address or a hostname which will be looked up via the OS's normal hostname resolution mechanisms\&.
+
+
+For example, the following line:
+
+
+\fBinterfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0\fR
+
+
+would configure three network interfaces corresponding to the eth0 device and IP addresses 192\&.168\&.2\&.10 and 192\&.168\&.3\&.10\&. The netmasks of the latter two interfaces would be set to 255\&.255\&.255\&.0\&.
+
+
+See also \fIbind interfaces only\fR\&.
+
+
+Default: \fBall active interfaces except 127\&.0\&.0\&.1 that are broadcast capable\fR
+
+
+.TP
+invalid users (S)
+This is a list of users that should not be allowed to login to this service\&. This is really a \fBparanoid\fR check to absolutely ensure an improper setting does not breach your security\&.
+
+
+A name starting with a '@' is interpreted as an NIS netgroup first (if your system supports NIS), and then as a UNIX group if the name was not found in the NIS netgroup database\&.
+
+
+A name starting with '+' is interpreted only by looking in the UNIX group database\&. A name starting with '&' is interpreted only by looking in the NIS netgroup database (this requires NIS to be working on your system)\&. The characters '+' and '&' may be used at the start of the name in either order so the value \fI+&group\fR means check the UNIX group database, followed by the NIS netgroup database, and the value \fI&+group\fR means check the NIS netgroup database, followed by the UNI [...]
+
+
+The current servicename is substituted for \fI%S\fR\&. This is useful in the [homes] section\&.
+
+
+See also \fIvalid users \fR\&.
+
+
+Default: \fBno invalid users\fR
+
+
+Example: \fBinvalid users = root fred admin @wheel\fR
+
+
+.TP
+keepalive (G)
+The value of the parameter (an integer) represents the number of seconds between \fIkeepalive\fR packets\&. If this parameter is zero, no keepalive packets will be sent\&. Keepalive packets, if sent, allow the server to tell whether a client is still present and responding\&.
+
+
+Keepalives should, in general, not be needed if the socket being used has the SO_KEEPALIVE attribute set on it (see \fIsocket options\fR)\&. Basically you should only use this option if you strike difficulties\&.
+
+
+Default: \fBkeepalive = 300\fR
+
+
+Example: \fBkeepalive = 600\fR
+
+
+.TP
+kernel change notify (G)
+This parameter specifies whether Samba should ask the kernel for change notifications in directories so that SMB clients can refresh whenever the data on the server changes\&.
+
+
+This parameter is only usd when your kernel supports change notification to user programs, using the F_NOTIFY fcntl\&.
+
+
+Default: \fBYes\fR
+
+
+.TP
+kernel oplocks (G)
+For UNIXes that support kernel based \fIoplocks\fR (currently only IRIX and the Linux 2\&.4 kernel), this parameter allows the use of them to be turned on or off\&.
+
+
+Kernel oplocks support allows Samba \fIoplocks \fR to be broken whenever a local UNIX process or NFS operation accesses a file that \fBsmbd\fR(8) has oplocked\&. This allows complete data consistency between SMB/CIFS, NFS and local file access (and is a \fBvery\fR cool feature :-)\&.
+
+
+This parameter defaults to \fBon\fR, but is translated to a no-op on systems that no not have the necessary kernel support\&. You should never need to touch this parameter\&.
+
+
+See also the \fIoplocks\fR and \fIlevel2 oplocks \fR parameters\&.
+
+
+Default: \fBkernel oplocks = yes\fR
+
+
+.TP
+lanman auth (G)
+This parameter determines whether or not \fBsmbd\fR(8) will attempt to authenticate users using the LANMAN password hash\&. If disabled, only clients which support NT password hashes (e\&.g\&. Windows NT/2000 clients, smbclient, etc\&.\&.\&. but not Windows 95/98 or the MS DOS network client) will be able to connect to the Samba host\&.
+
+
+The LANMAN encrypted response is easily broken, due to it's case-insensitive nature, and the choice of algorithm\&. Servers without Windows 95/98 or MS DOS clients are advised to disable this option\&.
+
+
+Unlike the \fBencypt passwords\fR option, this parameter cannot alter client behaviour, and the LANMAN response will still be sent over the network\&. See the \fBclient lanman auth\fR to disable this for Samba's clients (such as smbclient)
+
+
+If this option, and \fBntlm auth\fR are both disabled, then only NTLMv2 logins will be permited\&. Not all clients support NTLMv2, and most will require special configuration to us it\&.
+
+
+Default : \fBlanman auth = yes\fR
+
+
+.TP
+large readwrite (G)
+This parameter determines whether or not \fBsmbd\fR(8) supports the new 64k streaming read and write varient SMB requests introduced with Windows 2000\&. Note that due to Windows 2000 client redirector bugs this requires Samba to be running on a 64-bit capable operating system such as IRIX, Solaris or a Linux 2\&.4 kernel\&. Can improve performance by 10% with Windows 2000 clients\&. Defaults to on\&. Not as tested as some other Samba code paths\&.
+
+
+Default: \fBlarge readwrite = yes\fR
+
+
+.TP
+ldap admin dn (G)
+The \fIldap admin dn\fR defines the Distinguished Name (DN) name used by Samba to contact the ldap server when retreiving user account information\&. The \fIldap admin dn\fR is used in conjunction with the admin dn password stored in the \fIprivate/secrets\&.tdb\fR file\&. See the \fBsmbpasswd\fR(8) man page for more information on how to accmplish this\&.
+
+
+.TP
+ldap delete dn (G)
+This parameter specifies whether a delete operation in the ldapsam deletes the complete entry or only the attributes specific to Samba\&.
+
+
+Default: \fBldap delete dn = no\fR
+
+
+.TP
+ldap filter (G)
+This parameter specifies the RFC 2254 compliant LDAP search filter\&. The default is to match the login name with the \fBuid\fR attribute for all entries matching the \fBsambaAccount\fR objectclass\&. Note that this filter should only return one entry\&.
+
+
+Default: \fBldap filter = (&(uid=%u)(objectclass=sambaAccount))\fR
+
+
+.TP
+ldap group suffix (G)
+This parameters specifies the suffix that is used for groups when these are added to the LDAP directory\&. If this parameter is unset, the value of \fIldap suffix\fR will be used instead\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBdc=samba,ou=Groups\fR
+
+
+.TP
+ldap idmap suffix (G)
+This parameters specifies the suffix that is used when storing idmap mappings\&. If this parameter is unset, the value of \fIldap suffix\fR will be used instead\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBou=Idmap,dc=samba,dc=org\fR
+
+
+.TP
+ldap machine suffix (G)
+It specifies where machines should be added to the ldap tree\&.
+
+
+Default: \fBnone\fR
+
+
+.TP
+ldap passwd sync (G)
+This option is used to define whether or not Samba should sync the LDAP password with the NT and LM hashes for normal accounts (NOT for workstation, server or domain trusts) on a password change via SAMBA\&.
+
+
+The \fIldap passwd sync\fR can be set to one of three values:
+
+
+\fIYes\fR = Try to update the LDAP, NT and LM passwords and update the pwdLastSet time\&.
+
+\fINo\fR = Update NT and LM passwords and update the pwdLastSet time\&.
+
+\fIOnly\fR = Only update the LDAP password and let the LDAP server do the rest\&.
+
+Default: \fBldap passwd sync = no\fR
+
+
+.TP
+ldap port (G)
+This parameter is only available if Samba has been configure to include the \fB--with-ldapsam\fR option at compile time\&.
+
+
+This option is used to control the tcp port number used to contact the \fIldap server\fR\&. The default is to use the stand LDAPS port 636\&.
+
+
+See Also: ldap ssl
+
+
+Default : \fBldap port = 636 ; if ldap ssl = on\fR
+
+
+Default : \fBldap port = 389 ; if ldap ssl = off\fR
+
+
+.TP
+ldap server (G)
+This parameter is only available if Samba has been configure to include the \fB--with-ldapsam\fR option at compile time\&.
+
+
+This parameter should contain the FQDN of the ldap directory server which should be queried to locate user account information\&.
+
+
+Default : \fBldap server = localhost\fR
+
+
+.TP
+ldap ssl (G)
+This option is used to define whether or not Samba should use SSL when connecting to the ldap server This is \fBNOT\fR related to Samba's previous SSL support which was enabled by specifying the \fB--with-ssl\fR option to the \fIconfigure\fR script\&.
+
+
+The \fIldap ssl\fR can be set to one of three values:
+
+
+\fIOff\fR = Never use SSL when querying the directory\&.
+
+\fIStart_tls\fR = Use the LDAPv3 StartTLS extended operation (RFC2830) for communicating with the directory server\&.
+
+\fIOn\fR = Use SSL on the ldaps port when contacting the \fIldap server\fR\&. Only available when the backwards-compatiblity \fB--with-ldapsam\fR option is specified to configure\&. See \fIpassdb backend\fR
+
+Default : \fBldap ssl = start_tls\fR
+
+
+.TP
+ldap suffix (G)
+Specifies where user and machine accounts are added to the tree\&. Can be overriden by \fBldap user suffix\fR and \fBldap machine suffix\fR\&. It also used as the base dn for all ldap searches\&.
+
+
+Default: \fBnone\fR
+
+
+.TP
+ldap user suffix (G)
+This parameter specifies where users are added to the tree\&. If this parameter is not specified, the value from \fBldap suffix\fR\&.
+
+
+Default: \fBnone\fR
+
+
+.TP
+level2 oplocks (S)
+This parameter controls whether Samba supports level2 (read-only) oplocks on a share\&.
+
+
+Level2, or read-only oplocks allow Windows NT clients that have an oplock on a file to downgrade from a read-write oplock to a read-only oplock once a second client opens the file (instead of releasing all oplocks on a second open, as in traditional, exclusive oplocks)\&. This allows all openers of the file that support level2 oplocks to cache the file for read-ahead only (ie\&. they may not cache writes or lock requests) and increases performance for many accesses of files that are not  [...]
+
+
+Once one of the clients which have a read-only oplock writes to the file all clients are notified (no reply is needed or waited for) and told to break their oplocks to "none" and delete any read-ahead caches\&.
+
+
+It is recommended that this parameter be turned on to speed access to shared executables\&.
+
+
+For more discussions on level2 oplocks see the CIFS spec\&.
+
+
+Currently, if \fIkernel oplocks\fR are supported then level2 oplocks are not granted (even if this parameter is set to \fByes\fR)\&. Note also, the \fIoplocks\fR parameter must be set to \fByes\fR on this share in order for this parameter to have any effect\&.
+
+
+See also the \fIoplocks\fR and \fIkernel oplocks\fR parameters\&.
+
+
+Default: \fBlevel2 oplocks = yes\fR
+
+
+.TP
+lm announce (G)
+This parameter determines if \fBnmbd\fR(8) will produce Lanman announce broadcasts that are needed by OS/2 clients in order for them to see the Samba server in their browse list\&. This parameter can have three values, \fByes\fR, \fBno\fR, or \fBauto\fR\&. The default is \fBauto\fR\&. If set to \fBno\fR Samba will never produce these broadcasts\&. If set to \fByes\fR Samba will produce Lanman announce broadcasts at a frequency set by the parameter \fIlm interval\fR\&. If set to \fBauto\f [...]
+
+
+See also \fIlm interval\fR\&.
+
+
+Default: \fBlm announce = auto\fR
+
+
+Example: \fBlm announce = yes\fR
+
+
+.TP
+lm interval (G)
+If Samba is set to produce Lanman announce broadcasts needed by OS/2 clients (see the \fIlm announce\fR parameter) then this parameter defines the frequency in seconds with which they will be made\&. If this is set to zero then no Lanman announcements will be made despite the setting of the \fIlm announce\fR parameter\&.
+
+
+See also \fIlm announce\fR\&.
+
+
+Default: \fBlm interval = 60\fR
+
+
+Example: \fBlm interval = 120\fR
+
+
+.TP
+load printers (G)
+A boolean variable that controls whether all printers in the printcap will be loaded for browsing by default\&. See the printers section for more details\&.
+
+
+Default: \fBload printers = yes\fR
+
+
+.TP
+local master (G)
+This option allows \fBnmbd\fR(8) to try and become a local master browser on a subnet\&. If set to \fBno\fR then \fB nmbd\fR will not attempt to become a local master browser on a subnet and will also lose in all browsing elections\&. By default this value is set to \fByes\fR\&. Setting this value to \fByes\fR doesn't mean that Samba will \fBbecome\fR the local master browser on a subnet, just that \fBnmbd\fR will \fBparticipate\fR in elections for local master browser\&.
+
+
+Setting this value to \fBno\fR will cause \fBnmbd\fR \fBnever\fR to become a local master browser\&.
+
+
+Default: \fBlocal master = yes\fR
+
+
+.TP
+lock dir (G)
+Synonym for \fI lock directory\fR\&.
+
+
+.TP
+lock directory (G)
+This option specifies the directory where lock files will be placed\&. The lock files are used to implement the \fImax connections\fR option\&.
+
+
+Default: \fBlock directory = ${prefix}/var/locks\fR
+
+
+Example: \fBlock directory = /var/run/samba/locks\fR
+
+
+.TP
+locking (S)
+This controls whether or not locking will be performed by the server in response to lock requests from the client\&.
+
+
+If \fBlocking = no\fR, all lock and unlock requests will appear to succeed and all lock queries will report that the file in question is available for locking\&.
+
+
+If \fBlocking = yes\fR, real locking will be performed by the server\&.
+
+
+This option \fBmay\fR be useful for read-only filesystems which \fBmay\fR not need locking (such as CDROM drives), although setting this parameter of \fBno\fR is not really recommended even in this case\&.
+
+
+Be careful about disabling locking either globally or in a specific service, as lack of locking may result in data corruption\&. You should never need to set this parameter\&.
+
+
+Default: \fBlocking = yes\fR
+
+
+.TP
+lock spin count (G)
+This parameter controls the number of times that smbd should attempt to gain a byte range lock on the behalf of a client request\&. Experiments have shown that Windows 2k servers do not reply with a failure if the lock could not be immediately granted, but try a few more times in case the lock could later be aquired\&. This behavior is used to support PC database formats such as MS Access and FoxPro\&.
+
+
+Default: \fBlock spin count = 3\fR
+
+
+.TP
+lock spin time (G)
+The time in microseconds that smbd should pause before attempting to gain a failed lock\&. See \fIlock spin count\fR for more details\&.
+
+
+Default: \fBlock spin time = 10\fR
+
+
+.TP
+log file (G)
+This option allows you to override the name of the Samba log file (also known as the debug file)\&.
+
+
+This option takes the standard substitutions, allowing you to have separate log files for each user or machine\&.
+
+
+Example: \fBlog file = /usr/local/samba/var/log.%m\fR
+
+
+.TP
+log level (G)
+The value of the parameter (a astring) allows the debug level (logging level) to be specified in the \fIsmb\&.conf\fR file\&. This parameter has been extended since the 2\&.2\&.x series, now it allow to specify the debug level for multiple debug classes\&. This is to give greater flexibility in the configuration of the system\&.
+
+
+The default will be the log level specified on the command line or level zero if none was specified\&.
+
+
+Example: \fBlog level = 3 passdb:5 auth:10 winbind:2\fR
+
+
+.TP
+logon drive (G)
+This parameter specifies the local path to which the home directory will be connected (see \fIlogon home\fR) and is only used by NT Workstations\&.
+
+
+Note that this option is only useful if Samba is set up as a logon server\&.
+
+
+Default: \fBlogon drive = z:\fR
+
+
+Example: \fBlogon drive = h:\fR
+
+
+.TP
+logon home (G)
+This parameter specifies the home directory location when a Win95/98 or NT Workstation logs into a Samba PDC\&. It allows you to do
+
+
+C:\\> \fBNET USE H: /HOME\fR
+
+
+from a command prompt, for example\&.
+
+
+This option takes the standard substitutions, allowing you to have separate logon scripts for each user or machine\&.
+
+
+This parameter can be used with Win9X workstations to ensure that roaming profiles are stored in a subdirectory of the user's home directory\&. This is done in the following way:
+
+
+\fBlogon home = \\%N\%U\profile\fR
+
+
+This tells Samba to return the above string, with substitutions made when a client requests the info, generally in a NetUserGetInfo request\&. Win9X clients truncate the info to \\\\server\\share when a user does \fBnet use /home\fR but use the whole string when dealing with profiles\&.
+
+
+Note that in prior versions of Samba, the \fIlogon path\fR was returned rather than \fIlogon home\fR\&. This broke \fBnet use /home\fR but allowed profiles outside the home directory\&. The current implementation is correct, and can be used for profiles if you use the above trick\&.
+
+
+This option is only useful if Samba is set up as a logon server\&.
+
+
+Default: \fBlogon home = "\\%N\%U"\fR
+
+
+Example: \fBlogon home = "\\remote_smb_server\%U"\fR
+
+
+.TP
+logon path (G)
+This parameter specifies the home directory where roaming profiles (NTuser\&.dat etc files for Windows NT) are stored\&. Contrary to previous versions of these manual pages, it has nothing to do with Win 9X roaming profiles\&. To find out how to handle roaming profiles for Win 9X system, see the \fIlogon home\fR parameter\&.
+
+
+This option takes the standard substitutions, allowing you to have separate logon scripts for each user or machine\&. It also specifies the directory from which the "Application Data", (\fIdesktop\fR, \fIstart menu\fR, \fInetwork neighborhood\fR, \fIprograms\fR and other folders, and their contents, are loaded and displayed on your Windows NT client\&.
+
+
+The share and the path must be readable by the user for the preferences and directories to be loaded onto the Windows NT client\&. The share must be writeable when the user logs in for the first time, in order that the Windows NT client can create the NTuser\&.dat and other directories\&.
+
+
+Thereafter, the directories and any of the contents can, if required, be made read-only\&. It is not advisable that the NTuser\&.dat file be made read-only - rename it to NTuser\&.man to achieve the desired effect (a \fBMAN\fRdatory profile)\&.
+
+
+Windows clients can sometimes maintain a connection to the [homes] share, even though there is no user logged in\&. Therefore, it is vital that the logon path does not include a reference to the homes share (i\&.e\&. setting this parameter to \\%N\\%U\\profile_path will cause problems)\&.
+
+
+This option takes the standard substitutions, allowing you to have separate logon scripts for each user or machine\&.
+
+
+Note that this option is only useful if Samba is set up as a logon server\&.
+
+
+Default: \fBlogon path = \\%N\%U\profile\fR
+
+
+Example: \fBlogon path = \\PROFILESERVER\PROFILE\%U\fR
+
+
+.TP
+logon script (G)
+This parameter specifies the batch file (\&.bat) or NT command file (\&.cmd) to be downloaded and run on a machine when a user successfully logs in\&. The file must contain the DOS style CR/LF line endings\&. Using a DOS-style editor to create the file is recommended\&.
+
+
+The script must be a relative path to the [netlogon] service\&. If the [netlogon] service specifies a \fIpath\fR of \fI/usr/local/samba/netlogon\fR, and \fBlogon script = STARTUP.BAT\fR, then the file that will be downloaded is:
+
+
+\fI/usr/local/samba/netlogon/STARTUP\&.BAT\fR
+
+
+The contents of the batch file are entirely your choice\&.  A 
+	suggested command would be to add \fBNET TIME \\SERVER /SET 
+	/YES\fR, to force every machine to synchronize clocks with 
+	the same time server\&.  Another use would be to add \fBNET USE 
+	U: \\SERVER\UTILS\fR for commonly used utilities, or .nf
+
+	\fBNET USE Q: \\\\SERVER\\ISO9001_QA\fR.fi
+ for example\&.
+
+Note that it is particularly important not to allow write access to the [netlogon] share, or to grant users write permission on the batch files in a secure environment, as this would allow the batch files to be arbitrarily modified and security to be breached\&.
+
+
+This option takes the standard substitutions, allowing you to have separate logon scripts for each user or machine\&.
+
+
+This option is only useful if Samba is set up as a logon server\&.
+
+
+Default: \fBno logon script defined\fR
+
+
+Example: \fBlogon script = scripts\%U.bat\fR
+
+
+.TP
+lppause command (S)
+This parameter specifies the command to be executed on the server host in order to stop printing or spooling a specific print job\&.
+
+
+This command should be a program or script which takes a printer name and job number to pause the print job\&. One way of implementing this is by using job priorities, where jobs having a too low priority won't be sent to the printer\&.
+
+
+If a \fI%p\fR is given then the printer name is put in its place\&. A \fI%j\fR is replaced with the job number (an integer)\&. On HPUX (see \fIprinting=hpux \fR), if the \fI-p%p\fR option is added to the lpq command, the job will show up with the correct status, i\&.e\&. if the job priority is lower than the set fence priority it will have the PAUSED status, whereas if the priority is equal or higher it will have the SPOOLED or PRINTING status\&.
+
+
+Note that it is good practice to include the absolute path in the lppause command as the PATH may not be available to the server\&.
+
+
+See also the \fIprinting \fR parameter\&.
+
+
+Default: Currently no default value is given to this string, unless the value of the \fIprinting\fR parameter is \fBSYSV\fR, in which case the default is :
+
+
+\fBlp -i %p-%j -H hold\fR
+
+
+or if the value of the \fIprinting\fR parameter is \fBSOFTQ\fR, then the default is:
+
+
+\fBqstat -s -j%j -h\fR
+
+
+Example for HPUX: \fBlppause command = /usr/bin/lpalt %p-%j -p0\fR
+
+
+.TP
+lpq cache time (G)
+This controls how long lpq info will be cached for to prevent the \fBlpq\fR command being called too often\&. A separate cache is kept for each variation of the \fB lpq\fR command used by the system, so if you use different \fBlpq\fR commands for different users then they won't share cache information\&.
+
+
+The cache files are stored in \fI/tmp/lpq\&.xxxx\fR where xxxx is a hash of the \fBlpq\fR command in use\&.
+
+
+The default is 10 seconds, meaning that the cached results of a previous identical \fBlpq\fR command will be used if the cached data is less than 10 seconds old\&. A large value may be advisable if your \fBlpq\fR command is very slow\&.
+
+
+A value of 0 will disable caching completely\&.
+
+
+See also the \fIprinting\fR parameter\&.
+
+
+Default: \fBlpq cache time = 10\fR
+
+
+Example: \fBlpq cache time = 30\fR
+
+
+.TP
+lpq command (S)
+This parameter specifies the command to be executed on the server host in order to obtain \fBlpq \fR-style printer status information\&.
+
+
+This command should be a program or script which takes a printer name as its only parameter and outputs printer status information\&.
+
+
+Currently nine styles of printer status information are supported; BSD, AIX, LPRNG, PLP, SYSV, HPUX, QNX, CUPS, and SOFTQ\&. This covers most UNIX systems\&. You control which type is expected using the \fIprinting =\fR option\&.
+
+
+Some clients (notably Windows for Workgroups) may not correctly send the connection number for the printer they are requesting status information about\&. To get around this, the server reports on the first printer service connected to by the client\&. This only happens if the connection number sent is invalid\&.
+
+
+If a \fI%p\fR is given then the printer name is put in its place\&. Otherwise it is placed at the end of the command\&.
+
+
+Note that it is good practice to include the absolute path in the \fIlpq command\fR as the \fB$PATH \fR may not be available to the server\&. When compiled with the CUPS libraries, no \fIlpq command\fR is needed because smbd will make a library call to obtain the print queue listing\&.
+
+
+See also the \fIprinting \fR parameter\&.
+
+
+Default: \fBdepends on the setting of \fI printing\fR\fR
+
+
+Example: \fBlpq command = /usr/bin/lpq -P%p\fR
+
+
+.TP
+lpresume command (S)
+This parameter specifies the command to be executed on the server host in order to restart or continue printing or spooling a specific print job\&.
+
+
+This command should be a program or script which takes a printer name and job number to resume the print job\&. See also the \fIlppause command \fR parameter\&.
+
+
+If a \fI%p\fR is given then the printer name is put in its place\&. A \fI%j\fR is replaced with the job number (an integer)\&.
+
+
+Note that it is good practice to include the absolute path in the \fIlpresume command\fR as the PATH may not be available to the server\&.
+
+
+See also the \fIprinting \fR parameter\&.
+
+
+Default: Currently no default value is given to this string, unless the value of the \fIprinting\fR parameter is \fBSYSV\fR, in which case the default is :
+
+
+\fBlp -i %p-%j -H resume\fR
+
+
+or if the value of the \fIprinting\fR parameter is \fBSOFTQ\fR, then the default is:
+
+
+\fBqstat -s -j%j -r\fR
+
+
+Example for HPUX: \fBlpresume command = /usr/bin/lpalt %p-%j -p2\fR
+
+
+.TP
+lprm command (S)
+This parameter specifies the command to be executed on the server host in order to delete a print job\&.
+
+
+This command should be a program or script which takes a printer name and job number, and deletes the print job\&.
+
+
+If a \fI%p\fR is given then the printer name is put in its place\&. A \fI%j\fR is replaced with the job number (an integer)\&.
+
+
+Note that it is good practice to include the absolute path in the \fIlprm command\fR as the PATH may not be available to the server\&.
+
+
+See also the \fIprinting \fR parameter\&.
+
+
+Default: \fBdepends on the setting of \fIprinting \fR\fR
+
+
+Example 1: \fBlprm command = /usr/bin/lprm -P%p %j\fR
+
+
+Example 2: \fBlprm command = /usr/bin/cancel %p-%j\fR
+
+
+.TP
+machine password timeout (G)
+If a Samba server is a member of a Windows NT Domain (see the security = domain) parameter) then periodically a running smbd process will try and change the MACHINE ACCOUNT PASSWORD stored in the TDB called \fIprivate/secrets\&.tdb \fR\&. This parameter specifies how often this password will be changed, in seconds\&. The default is one week (expressed in seconds), the same as a Windows NT Domain member server\&.
+
+
+See also \fBsmbpasswd\fR(8), and the security = domain) parameter\&.
+
+
+Default: \fBmachine password timeout = 604800\fR
+
+
+.TP
+magic output (S)
+This parameter specifies the name of a file which will contain output created by a magic script (see the \fImagic script\fR parameter below)\&.
+
+
+Warning: If two clients use the same \fImagic script \fR in the same directory the output file content is undefined\&.
+
+
+Default: \fBmagic output = <magic script name>.out\fR
+
+
+Example: \fBmagic output = myfile.txt\fR
+
+
+.TP
+magic script (S)
+This parameter specifies the name of a file which, if opened, will be executed by the server when the file is closed\&. This allows a UNIX script to be sent to the Samba host and executed on behalf of the connected user\&.
+
+
+Scripts executed in this way will be deleted upon completion assuming that the user has the appropriate level of privilege and the file permissions allow the deletion\&.
+
+
+If the script generates output, output will be sent to the file specified by the \fI magic output\fR parameter (see above)\&.
+
+
+Note that some shells are unable to interpret scripts containing CR/LF instead of CR as the end-of-line marker\&. Magic scripts must be executable \fBas is\fR on the host, which for some hosts and some shells will require filtering at the DOS end\&.
+
+
+Magic scripts are \fBEXPERIMENTAL\fR and should \fBNOT\fR be relied upon\&.
+
+
+Default: \fBNone\&. Magic scripts disabled\&.\fR
+
+
+Example: \fBmagic script = user.csh\fR
+
+
+.TP
+mangle case (S)
+See the section on NAME MANGLING
+
+
+Default: \fBmangle case = no\fR
+
+
+.TP
+mangled map (S)
+This is for those who want to directly map UNIX file names which cannot be represented on Windows/DOS\&. The mangling of names is not always what is needed\&. In particular you may have documents with file extensions that differ between DOS and UNIX\&. For example, under UNIX it is common to use \fI\&.html\fR for HTML files, whereas under Windows/DOS \fI\&.htm\fR is more commonly used\&.
+
+
+So to map \fIhtml\fR to \fIhtm\fR you would use:
+
+
+\fBmangled map = (*.html *.htm)\fR
+
+
+One very useful case is to remove the annoying \fI;1 \fR off the ends of filenames on some CDROMs (only visible under some UNIXes)\&. To do this use a map of (*;1 *;)\&.
+
+
+Default: \fBno mangled map\fR
+
+
+Example: \fBmangled map = (*;1 *;)\fR
+
+
+.TP
+mangled names (S)
+This controls whether non-DOS names under UNIX should be mapped to DOS-compatible names ("mangled") and made visible, or whether non-DOS names should simply be ignored\&.
+
+
+See the section on NAME MANGLING for details on how to control the mangling process\&.
+
+
+If mangling is used then the mangling algorithm is as follows:
+
+
+The first (up to) five alphanumeric characters before the rightmost dot of the filename are preserved, forced to upper case, and appear as the first (up to) five characters of the mangled name\&.
+
+A tilde "~" is appended to the first part of the mangled name, followed by a two-character unique sequence, based on the original root name (i\&.e\&., the original filename minus its final extension)\&. The final extension is included in the hash calculation only if it contains any upper case characters or is longer than three characters\&.
+
+
+Note that the character to use may be specified using the \fImangling char\fR option, if you don't like '~'\&.
+
+The first three alphanumeric characters of the final extension are preserved, forced to upper case and appear as the extension of the mangled name\&. The final extension is defined as that part of the original filename after the rightmost dot\&. If there are no dots in the filename, the mangled name will have no extension (except in the case of "hidden files" - see below)\&.
+
+Files whose UNIX name begins with a dot will be presented as DOS hidden files\&. The mangled name will be created as for other filenames, but with the leading dot removed and "___" as its extension regardless of actual original extension (that's three underscores)\&.
+
+The two-digit hash value consists of upper case alphanumeric characters\&.
+
+
+This algorithm can cause name collisions only if files in a directory share the same first five alphanumeric characters\&. The probability of such a clash is 1/1300\&.
+
+
+The name mangling (if enabled) allows a file to be copied between UNIX directories from Windows/DOS while retaining the long UNIX filename\&. UNIX files can be renamed to a new extension from Windows/DOS and will retain the same basename\&. Mangled names do not change between sessions\&.
+
+
+Default: \fBmangled names = yes\fR
+
+
+.TP
+mangled stack (G)
+This parameter controls the number of mangled names that should be cached in the Samba server \fBsmbd\fR(8)\&.
+
+
+This stack is a list of recently mangled base names (extensions are only maintained if they are longer than 3 characters or contains upper case characters)\&.
+
+
+The larger this value, the more likely it is that mangled names can be successfully converted to correct long UNIX names\&. However, large stack sizes will slow most directory accesses\&. Smaller stacks save memory in the server (each stack element costs 256 bytes)\&.
+
+
+It is not possible to absolutely guarantee correct long filenames, so be prepared for some surprises!
+
+
+Default: \fBmangled stack = 50\fR
+
+
+Example: \fBmangled stack = 100\fR
+
+
+.TP
+mangle prefix (G)
+controls the number of prefix characters from the original name used when generating the mangled names\&. A larger value will give a weaker hash and therefore more name collisions\&. The minimum value is 1 and the maximum value is 6\&.
+
+
+mangle prefix is effective only when mangling method is hash2\&.
+
+
+Default: \fBmangle prefix = 1\fR
+
+
+Example: \fBmangle prefix = 4\fR
+
+
+.TP
+mangling char (S)
+This controls what character is used as the \fBmagic\fR character in name mangling\&. The default is a '~' but this may interfere with some software\&. Use this option to set it to whatever you prefer\&. This is effective only when mangling method is hash\&.
+
+
+Default: \fBmangling char = ~\fR
+
+
+Example: \fBmangling char = ^\fR
+
+
+.TP
+mangling method (G)
+controls the algorithm used for the generating the mangled names\&. Can take two different values, "hash" and "hash2"\&. "hash" is the default and is the algorithm that has been used in Samba for many years\&. "hash2" is a newer and considered a better algorithm (generates less collisions) in the names\&. However, many Win32 applications store the mangled names and so changing to the new algorithm must not be done lightly as these applications may break unless reinstalled\&.
+
+
+Default: \fBmangling method = hash2\fR
+
+
+Example: \fBmangling method = hash\fR
+
+
+.TP
+map acl inherit (S)
+This boolean parameter controls whether \fBsmbd\fR(8) will attempt to map the 'inherit' and 'protected' access control entry flags stored in Windows ACLs into an extended attribute called user\&.SAMBA_PAI\&. This parameter only takes effect if Samba is being run on a platform that supports extended attributes (Linux and IRIX so far) and allows the Windows 2000 ACL editor to correctly use inheritance with the Samba POSIX ACL mapping code\&.
+
+
+Default: \fBmap acl inherit = no\fR
+
+
+.TP
+map archive (S)
+This controls whether the DOS archive attribute should be mapped to the UNIX owner execute bit\&. The DOS archive bit is set when a file has been modified since its last backup\&. One motivation for this option it to keep Samba/your PC from making any file it touches from becoming executable under UNIX\&. This can be quite annoying for shared source code, documents, etc\&.\&.\&.
+
+
+Note that this requires the \fIcreate mask\fR parameter to be set such that owner execute bit is not masked out (i\&.e\&. it must include 100)\&. See the parameter \fIcreate mask\fR for details\&.
+
+
+Default: \fBmap archive = yes\fR
+
+
+.TP
+map hidden (S)
+This controls whether DOS style hidden files should be mapped to the UNIX world execute bit\&.
+
+
+Note that this requires the \fIcreate mask\fR to be set such that the world execute bit is not masked out (i\&.e\&. it must include 001)\&. See the parameter \fIcreate mask\fR for details\&.
+
+
+Default: \fBmap hidden = no\fR
+
+
+.TP
+map system (S)
+This controls whether DOS style system files should be mapped to the UNIX group execute bit\&.
+
+
+Note that this requires the \fIcreate mask\fR to be set such that the group execute bit is not masked out (i\&.e\&. it must include 010)\&. See the parameter \fIcreate mask\fR for details\&.
+
+
+Default: \fBmap system = no\fR
+
+
+.TP
+map to guest (G)
+This parameter is only useful in security modes other than \fIsecurity = share\fR - i\&.e\&. \fBuser\fR, \fBserver\fR, and \fBdomain\fR\&.
+
+
+This parameter can take three different values, which tell \fBsmbd\fR(8) what to do with user login requests that don't match a valid UNIX user in some way\&.
+
+
+The three settings are :
+
+
+\fBNever\fR - Means user login requests with an invalid password are rejected\&. This is the default\&.
+
+\fBBad User\fR - Means user logins with an invalid password are rejected, unless the username does not exist, in which case it is treated as a guest login and mapped into the \fI guest account\fR\&.
+
+\fBBad Password\fR - Means user logins with an invalid password are treated as a guest login and mapped into the guest account\&. Note that this can cause problems as it means that any user incorrectly typing their password will be silently logged on as "guest" - and will not know the reason they cannot access files they think they should - there will have been no message given to them that they got their password wrong\&. Helpdesk services will \fBhate\fR you if you set the \fImap to gu [...]
+
+Note that this parameter is needed to set up "Guest" share services when using \fIsecurity\fR modes other than share\&. This is because in these modes the name of the resource being requested is \fBnot\fR sent to the server until after the server has successfully authenticated the client so the server cannot make authentication decisions at the correct time (connection to the share) for "Guest" shares\&.
+
+
+For people familiar with the older Samba releases, this parameter maps to the old compile-time setting of the \fB GUEST_SESSSETUP\fR value in local\&.h\&.
+
+
+Default: \fBmap to guest = Never\fR
+
+
+Example: \fBmap to guest = Bad User\fR
+
+
+.TP
+max connections (S)
+This option allows the number of simultaneous connections to a service to be limited\&. If \fImax connections\fR is greater than 0 then connections will be refused if this number of connections to the service are already open\&. A value of zero mean an unlimited number of connections may be made\&.
+
+
+Record lock files are used to implement this feature\&. The lock files will be stored in the directory specified by the \fIlock directory\fR option\&.
+
+
+Default: \fBmax connections = 0\fR
+
+
+Example: \fBmax connections = 10\fR
+
+
+.TP
+max disk size (G)
+This option allows you to put an upper limit on the apparent size of disks\&. If you set this option to 100 then all shares will appear to be not larger than 100 MB in size\&.
+
+
+Note that this option does not limit the amount of data you can put on the disk\&. In the above case you could still store much more than 100 MB on the disk, but if a client ever asks for the amount of free disk space or the total disk size then the result will be bounded by the amount specified in \fImax disk size\fR\&.
+
+
+This option is primarily useful to work around bugs in some pieces of software that can't handle very large disks, particularly disks over 1GB in size\&.
+
+
+A \fImax disk size\fR of 0 means no limit\&.
+
+
+Default: \fBmax disk size = 0\fR
+
+
+Example: \fBmax disk size = 1000\fR
+
+
+.TP
+max log size (G)
+This option (an integer in kilobytes) specifies the max size the log file should grow to\&. Samba periodically checks the size and if it is exceeded it will rename the file, adding a \fI\&.old\fR extension\&.
+
+
+A size of 0 means no limit\&.
+
+
+Default: \fBmax log size = 5000\fR
+
+
+Example: \fBmax log size = 1000\fR
+
+
+.TP
+max mux (G)
+This option controls the maximum number of outstanding simultaneous SMB operations that Samba tells the client it will allow\&. You should never need to set this parameter\&.
+
+
+Default: \fBmax mux = 50\fR
+
+
+.TP
+max open files (G)
+This parameter limits the maximum number of open files that one \fBsmbd\fR(8) file serving process may have open for a client at any one time\&. The default for this parameter is set very high (10,000) as Samba uses only one bit per unopened file\&.
+
+
+The limit of the number of open files is usually set by the UNIX per-process file descriptor limit rather than this parameter so you should never need to touch this parameter\&.
+
+
+Default: \fBmax open files = 10000\fR
+
+
+.TP
+max print jobs (S)
+This parameter limits the maximum number of jobs allowable in a Samba printer queue at any given moment\&. If this number is exceeded, \fBsmbd\fR(8) will remote "Out of Space" to the client\&. See all \fItotal print jobs\fR\&.
+
+
+Default: \fBmax print jobs = 1000\fR
+
+
+Example: \fBmax print jobs = 5000\fR
+
+
+.TP
+max protocol (G)
+The value of the parameter (a string) is the highest protocol level that will be supported by the server\&.
+
+
+Possible values are :
+
+
+\fBCORE\fR: Earliest version\&. No concept of user names\&.
+
+\fBCOREPLUS\fR: Slight improvements on CORE for efficiency\&.
+
+\fBLANMAN1\fR: First \fB modern\fR version of the protocol\&. Long filename support\&.
+
+\fBLANMAN2\fR: Updates to Lanman1 protocol\&.
+
+\fBNT1\fR: Current up to date version of the protocol\&. Used by Windows NT\&. Known as CIFS\&.
+
+Normally this option should not be set as the automatic negotiation phase in the SMB protocol takes care of choosing the appropriate protocol\&.
+
+
+See also \fImin protocol\fR
+
+
+Default: \fBmax protocol = NT1\fR
+
+
+Example: \fBmax protocol = LANMAN1\fR
+
+
+.TP
+max reported print jobs (S)
+This parameter limits the maximum number of jobs displayed in a port monitor for Samba printer queue at any given moment\&. If this number is exceeded, the excess jobs will not be shown\&. A value of zero means there is no limit on the number of print jobs reported\&. See all \fItotal print jobs\fR and \fImax print jobs\fR parameters\&.
+
+
+Default: \fBmax reported print jobs = 0\fR
+
+
+Example: \fBmax reported print jobs = 1000\fR
+
+
+.TP
+max smbd processes (G)
+This parameter limits the maximum number of \fBsmbd\fR(8) processes concurrently running on a system and is intended as a stopgap to prevent degrading service to clients in the event that the server has insufficient resources to handle more than this number of connections\&. Remember that under normal operating conditions, each user will have an \fBsmbd\fR(8) associated with him or her to handle connections to all shares from a given host\&.
+
+
+Default: \fBmax smbd processes = 0\fR ## no limit
+
+
+Example: \fBmax smbd processes = 1000\fR
+
+
+.TP
+max ttl (G)
+This option tells \fBnmbd\fR(8) what the default 'time to live' of NetBIOS names should be (in seconds) when \fBnmbd\fR is requesting a name using either a broadcast packet or from a WINS server\&. You should never need to change this parameter\&. The default is 3 days\&.
+
+
+Default: \fBmax ttl = 259200\fR
+
+
+.TP
+max wins ttl (G)
+This option tells \fBsmbd\fR(8) when acting as a WINS server ( \fIwins support = yes\fR) what the maximum 'time to live' of NetBIOS names that \fBnmbd\fR will grant will be (in seconds)\&. You should never need to change this parameter\&. The default is 6 days (518400 seconds)\&.
+
+
+See also the \fImin wins ttl\fR parameter\&.
+
+
+Default: \fBmax wins ttl = 518400\fR
+
+
+.TP
+max xmit (G)
+This option controls the maximum packet size that will be negotiated by Samba\&. The default is 65535, which is the maximum\&. In some cases you may find you get better performance with a smaller value\&. A value below 2048 is likely to cause problems\&.
+
+
+Default: \fBmax xmit = 65535\fR
+
+
+Example: \fBmax xmit = 8192\fR
+
+
+.TP
+message command (G)
+This specifies what command to run when the server receives a WinPopup style message\&.
+
+
+This would normally be a command that would deliver the message somehow\&. How this is to be done is up to your imagination\&.
+
+
+An example is:
+
+
+\fBmessage command = csh -c 'xedit %s;rm %s' &\fR
+
+
+This delivers the message using \fBxedit\fR, then removes it afterwards\&. \fBNOTE THAT IT IS VERY IMPORTANT THAT THIS COMMAND RETURN IMMEDIATELY\fR\&. That's why I have the '&' on the end\&. If it doesn't return immediately then your PCs may freeze when sending messages (they should recover after 30 seconds, hopefully)\&.
+
+
+All messages are delivered as the global guest user\&. The command takes the standard substitutions, although \fI %u\fR won't work (\fI%U\fR may be better in this case)\&.
+
+
+Apart from the standard substitutions, some additional ones apply\&. In particular:
+
+
+\fI%s\fR = the filename containing the message\&.
+
+\fI%t\fR = the destination that the message was sent to (probably the server name)\&.
+
+\fI%f\fR = who the message is from\&.
+
+You could make this command send mail, or whatever else takes your fancy\&. Please let us know of any really interesting ideas you have\&.
+
+
+Here's a way of sending the messages as mail to root:
+
+
+\fBmessage command = /bin/mail -s 'message from %f on %m' root < %s; rm %s\fR
+
+
+If you don't have a message command then the message won't be delivered and Samba will tell the sender there was an error\&. Unfortunately WfWg totally ignores the error code and carries on regardless, saying that the message was delivered\&.
+
+
+If you want to silently delete it then try:
+
+
+\fBmessage command = rm %s\fR
+
+
+Default: \fBno message command\fR
+
+
+Example: \fBmessage command = csh -c 'xedit %s; rm %s' &\fR
+
+
+.TP
+min passwd length (G)
+Synonym for \fImin password length\fR\&.
+
+
+.TP
+min password length (G)
+This option sets the minimum length in characters of a plaintext password that \fBsmbd\fR will accept when performing UNIX password changing\&.
+
+
+See also \fIunix password sync\fR, \fIpasswd program\fR and \fIpasswd chat debug\fR\&.
+
+
+Default: \fBmin password length = 5\fR
+
+
+.TP
+min print space (S)
+This sets the minimum amount of free disk space that must be available before a user will be able to spool a print job\&. It is specified in kilobytes\&. The default is 0, which means a user can always spool a print job\&.
+
+
+See also the \fIprinting \fR parameter\&.
+
+
+Default: \fBmin print space = 0\fR
+
+
+Example: \fBmin print space = 2000\fR
+
+
+.TP
+min protocol (G)
+The value of the parameter (a string) is the lowest SMB protocol dialect than Samba will support\&. Please refer to the \fImax protocol\fR parameter for a list of valid protocol names and a brief description of each\&. You may also wish to refer to the C source code in \fIsource/smbd/negprot\&.c\fR for a listing of known protocol dialects supported by clients\&.
+
+
+If you are viewing this parameter as a security measure, you should also refer to the \fIlanman auth\fR parameter\&. Otherwise, you should never need to change this parameter\&.
+
+
+Default : \fBmin protocol = CORE\fR
+
+
+Example : \fBmin protocol = NT1\fR # disable DOS clients
+
+
+.TP
+min wins ttl (G)
+This option tells \fBnmbd\fR(8) when acting as a WINS server (\fI wins support = yes\fR) what the minimum 'time to live' of NetBIOS names that \fBnmbd\fR will grant will be (in seconds)\&. You should never need to change this parameter\&. The default is 6 hours (21600 seconds)\&.
+
+
+Default: \fBmin wins ttl = 21600\fR
+
+
+.TP
+msdfs proxy (S)
+This parameter indicates that the share is a stand-in for another CIFS share whose location is specified by the value of the parameter\&. When clients attempt to connect to this share, they are redirected to the proxied share using the SMB-Dfs protocol\&.
+
+
+Only Dfs roots can act as proxy shares\&. Take a look at the \fImsdfs root\fR and \fIhost msdfs\fR options to find out how to set up a Dfs root share\&.
+
+
+Example: \fBmsdfs proxy = \\\\otherserver\\someshare\fR
+
+
+.TP
+msdfs root (S)
+If set to \fByes\fR, Samba treats the share as a Dfs root and allows clients to browse the distributed file system tree rooted at the share directory\&. Dfs links are specified in the share directory by symbolic links of the form \fImsdfs:serverA\\\\shareA,serverB\\\\shareB\fR and so on\&. For more information on setting up a Dfs tree on Samba, refer to ???\&.
+
+
+See also \fIhost msdfs\fR
+
+
+Default: \fBmsdfs root = no\fR
+
+
+.TP
+name cache timeout (G)
+Specifies the number of seconds it takes before entries in samba's hostname resolve cache time out\&. If the timeout is set to 0\&. the caching is disabled\&.
+
+
+Default: \fBname cache timeout = 660\fR
+
+
+Example: \fBname cache timeout = 0\fR
+
+
+.TP
+name resolve order (G)
+This option is used by the programs in the Samba suite to determine what naming services to use and in what order to resolve host names to IP addresses\&. Its main purpose to is to control how netbios name resolution is performed\&. The option takes a space separated string of name resolution options\&.
+
+
+The options are: "lmhosts", "host", "wins" and "bcast"\&. They cause names to be resolved as follows:
+
+
+\fBlmhosts\fR : Lookup an IP address in the Samba lmhosts file\&. If the line in lmhosts has no name type attached to the NetBIOS name (see the lmhosts(5) for details) then any name type matches for lookup\&.
+
+\fBhost\fR : Do a standard host name to IP address resolution, using the system \fI/etc/hosts \fR, NIS, or DNS lookups\&. This method of name resolution is operating system depended for instance on IRIX or Solaris this may be controlled by the \fI/etc/nsswitch\&.conf\fR file\&. Note that this method is used only if the NetBIOS name type being queried is the 0x20 (server) name type or 0x1c (domain controllers)\&. The latter case is only useful for active directory domains and results in a [...]
+
+\fBwins\fR : Query a name with the IP address listed in the \fI wins server\fR parameter\&. If no WINS server has been specified this method will be ignored\&.
+
+\fBbcast\fR : Do a broadcast on each of the known local interfaces listed in the \fIinterfaces\fR parameter\&. This is the least reliable of the name resolution methods as it depends on the target host being on a locally connected subnet\&.
+
+Default: \fBname resolve order = lmhosts host wins bcast\fR
+
+
+Example: \fBname resolve order = lmhosts bcast host\fR
+
+
+This will cause the local lmhosts file to be examined first, followed by a broadcast attempt, followed by a normal system hostname lookup\&.
+
+
+When Samba is functioning in ADS security mode (\fBsecurity = ads\fR) it is advised to use following settings for \fIname resolve order\fR:
+
+
+\fBname resolve order = wins bcast\fR
+
+
+DC lookups will still be done via DNS, but fallbacks to netbios names will not inundate your DNS servers with needless querys for DOMAIN<0x1c> lookups\&.
+
+
+.TP
+netbios aliases (G)
+This is a list of NetBIOS names that nmbd will advertise as additional names by which the Samba server is known\&. This allows one machine to appear in browse lists under multiple names\&. If a machine is acting as a browse server or logon server none of these names will be advertised as either browse server or logon servers, only the primary name of the machine will be advertised with these capabilities\&.
+
+
+See also \fInetbios name\fR\&.
+
+
+Default: \fBempty string (no additional names)\fR
+
+
+Example: \fBnetbios aliases = TEST TEST1 TEST2\fR
+
+
+.TP
+netbios name (G)
+This sets the NetBIOS name by which a Samba server is known\&. By default it is the same as the first component of the host's DNS name\&. If a machine is a browse server or logon server this name (or the first component of the hosts DNS name) will be the name that these services are advertised under\&.
+
+
+See also \fInetbios aliases\fR\&.
+
+
+Default: \fBmachine DNS name\fR
+
+
+Example: \fBnetbios name = MYNAME\fR
+
+
+.TP
+netbios scope (G)
+This sets the NetBIOS scope that Samba will operate under\&. This should not be set unless every machine on your LAN also sets this value\&.
+
+
+.TP
+nis homedir (G)
+Get the home share server from a NIS map\&. For UNIX systems that use an automounter, the user's home directory will often be mounted on a workstation on demand from a remote server\&.
+
+
+When the Samba logon server is not the actual home directory server, but is mounting the home directories via NFS then two network hops would be required to access the users home directory if the logon server told the client to use itself as the SMB server for home directories (one over SMB and one over NFS)\&. This can be very slow\&.
+
+
+This option allows Samba to return the home share as being on a different server to the logon server and as long as a Samba daemon is running on the home directory server, it will be mounted on the Samba client directly from the directory server\&. When Samba is returning the home share to the client, it will consult the NIS map specified in \fIhomedir map\fR and return the server listed there\&.
+
+
+Note that for this option to work there must be a working NIS system and the Samba server with this option must also be a logon server\&.
+
+
+Default: \fBnis homedir = no\fR
+
+
+.TP
+nt acl support (S)
+This boolean parameter controls whether \fBsmbd\fR(8) will attempt to map UNIX permissions into Windows NT access control lists\&. This parameter was formally a global parameter in releases prior to 2\&.2\&.2\&.
+
+
+Default: \fBnt acl support = yes\fR
+
+
+.TP
+ntlm auth (G)
+This parameter determines whether or not \fBsmbd\fR(8) will attempt to authenticate users using the NTLM encrypted password response\&. If disabled, either the lanman password hash or an NTLMv2 response will need to be sent by the client\&.
+
+
+If this option, and \fBlanman auth\fR are both disabled, then only NTLMv2 logins will be permited\&. Not all clients support NTLMv2, and most will require special configuration to us it\&.
+
+
+Default : \fBntlm auth = yes\fR
+
+
+.TP
+nt pipe support (G)
+This boolean parameter controls whether \fBsmbd\fR(8) will allow Windows NT clients to connect to the NT SMB specific \fBIPC$\fR pipes\&. This is a developer debugging option and can be left alone\&.
+
+
+Default: \fBnt pipe support = yes\fR
+
+
+.TP
+nt status support (G)
+This boolean parameter controls whether \fBsmbd\fR(8) will negotiate NT specific status support with Windows NT/2k/XP clients\&. This is a developer debugging option and should be left alone\&. If this option is set to \fBno\fR then Samba offers exactly the same DOS error codes that versions prior to Samba 2\&.2\&.3 reported\&.
+
+
+You should not need to ever disable this parameter\&.
+
+
+Default: \fBnt status support = yes\fR
+
+
+.TP
+null passwords (G)
+Allow or disallow client access to accounts that have null passwords\&.
+
+
+See also \fBsmbpasswd\fR(5)\&.
+
+
+Default: \fBnull passwords = no\fR
+
+
+.TP
+obey pam restrictions (G)
+When Samba 3\&.0 is configured to enable PAM support (i\&.e\&. --with-pam), this parameter will control whether or not Samba should obey PAM's account and session management directives\&. The default behavior is to use PAM for clear text authentication only and to ignore any account or session management\&. Note that Samba always ignores PAM for authentication in the case of \fIencrypt passwords = yes\fR\&. The reason is that PAM modules cannot support the challenge/response authenticati [...]
+
+
+Default: \fBobey pam restrictions = no\fR
+
+
+.TP
+only guest (S)
+A synonym for \fI guest only\fR\&.
+
+
+.TP
+only user (S)
+This is a boolean option that controls whether connections with usernames not in the \fIuser\fR list will be allowed\&. By default this option is disabled so that a client can supply a username to be used by the server\&. Enabling this parameter will force the server to only use the login names from the \fIuser\fR list and is only really useful in share level security\&.
+
+
+Note that this also means Samba won't try to deduce usernames from the service name\&. This can be annoying for the [homes] section\&. To get around this you could use \fBuser = %S\fR which means your \fIuser\fR list will be just the service name, which for home directories is the name of the user\&.
+
+
+See also the \fIuser\fR parameter\&.
+
+
+Default: \fBonly user = no\fR
+
+
+.TP
+oplock break wait time (G)
+This is a tuning parameter added due to bugs in both Windows 9x and WinNT\&. If Samba responds to a client too quickly when that client issues an SMB that can cause an oplock break request, then the network client can fail and not respond to the break request\&. This tuning parameter (which is set in milliseconds) is the amount of time Samba will wait before sending an oplock break request to such (broken) clients\&.
+
+
+\fBDO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ AND UNDERSTOOD THE SAMBA OPLOCK CODE\fR\&.
+
+
+Default: \fBoplock break wait time = 0\fR
+
+
+.TP
+oplock contention limit (S)
+This is a \fBvery\fR advanced \fBsmbd\fR(8) tuning option to improve the efficiency of the granting of oplocks under multiple client contention for the same file\&.
+
+
+In brief it specifies a number, which causes \fBsmbd\fR(8)not to grant an oplock even when requested if the approximate number of clients contending for an oplock on the same file goes over this limit\&. This causes \fBsmbd\fR to behave in a similar way to Windows NT\&.
+
+
+\fBDO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ AND UNDERSTOOD THE SAMBA OPLOCK CODE\fR\&.
+
+
+Default: \fBoplock contention limit = 2\fR
+
+
+.TP
+oplocks (S)
+This boolean option tells \fBsmbd\fR whether to issue oplocks (opportunistic locks) to file open requests on this share\&. The oplock code can dramatically (approx\&. 30% or more) improve the speed of access to files on Samba servers\&. It allows the clients to aggressively cache files locally and you may want to disable this option for unreliable network environments (it is turned on by default in Windows NT Servers)\&. For more information see the file \fISpeed\&.txt\fR in the Samba \f [...]
+
+
+Oplocks may be selectively turned off on certain files with a share\&. See the \fI veto oplock files\fR parameter\&. On some systems oplocks are recognized by the underlying operating system\&. This allows data synchronization between all access to oplocked files, whether it be via Samba or NFS or a local UNIX process\&. See the \fIkernel oplocks\fR parameter for details\&.
+
+
+See also the \fIkernel oplocks\fR and \fI level2 oplocks\fR parameters\&.
+
+
+Default: \fBoplocks = yes\fR
+
+
+.TP
+os2 driver map (G)
+The parameter is used to define the absolute path to a file containing a mapping of Windows NT printer driver names to OS/2 printer driver names\&. The format is:
+
+
+<nt driver name> = <os2 driver name>\&.<device name>
+
+
+For example, a valid entry using the HP LaserJet 5 printer driver would appear as \fBHP LaserJet 5L = LASERJET.HP LaserJet 5L\fR\&.
+
+
+The need for the file is due to the printer driver namespace problem described in ???\&. For more details on OS/2 clients, please refer to ???\&.
+
+
+Default: \fBos2 driver map = <empty string>\fR
+
+
+.TP
+os level (G)
+This integer value controls what level Samba advertises itself as for browse elections\&. The value of this parameter determines whether \fBnmbd\fR(8) has a chance of becoming a local master browser for the \fI WORKGROUP\fR in the local broadcast area\&.
+
+
+\fBNote :\fRBy default, Samba will win a local master browsing election over all Microsoft operating systems except a Windows NT 4\&.0/2000 Domain Controller\&. This means that a misconfigured Samba host can effectively isolate a subnet for browsing purposes\&. See \fIBROWSING\&.txt \fR in the Samba \fIdocs/\fR directory for details\&.
+
+
+Default: \fBos level = 20\fR
+
+
+Example: \fBos level = 65 \fR
+
+
+.TP
+pam password change (G)
+With the addition of better PAM support in Samba 2\&.2, this parameter, it is possible to use PAM's password change control flag for Samba\&. If enabled, then PAM will be used for password changes when requested by an SMB client instead of the program listed in \fIpasswd program\fR\&. It should be possible to enable this without changing your \fIpasswd chat\fR parameter for most setups\&.
+
+
+Default: \fBpam password change = no\fR
+
+
+.TP
+panic action (G)
+This is a Samba developer option that allows a system command to be called when either \fBsmbd\fR(8) or \fBsmbd\fR(8) crashes\&. This is usually used to draw attention to the fact that a problem occurred\&.
+
+
+Default: \fBpanic action = <empty string>\fR
+
+
+Example: \fBpanic action = "/bin/sleep 90000"\fR
+
+
+.TP
+paranoid server security (G)
+Some version of NT 4\&.x allow non-guest users with a bad passowrd\&. When this option is enabled, samba will not use a broken NT 4\&.x server as password server, but instead complain to the logs and exit\&.
+
+
+Disabling this option prevents Samba from making this check, which involves deliberatly attempting a bad logon to the remote server\&.
+
+
+Default: \fBparanoid server security = yes\fR
+
+
+.TP
+passdb backend (G)
+This option allows the administrator to chose which backends to retrieve and store passwords with\&. This allows (for example) both smbpasswd and tdbsam to be used without a recompile\&. Multiple backends can be specified, separated by spaces\&. The backends will be searched in the order they are specified\&. New users are always added to the first backend specified\&.
+
+
+This parameter is in two parts, the backend's name, and a 'location' string that has meaning only to that particular backed\&. These are separated by a : character\&.
+
+
+Available backends can include: .TP 3 \(bu \fBsmbpasswd\fR - The default smbpasswd backend\&. Takes a path to the smbpasswd file as an optional argument\&. .TP \(bu \fBtdbsam\fR - The TDB based password storage backend\&. Takes a path to the TDB as an optional argument (defaults to passdb\&.tdb in the \fIprivate dir\fR directory\&. .TP \(bu \fBldapsam\fR - The LDAP based passdb backend\&. Takes an LDAP URL as an optional argument (defaults to \fBldap://localhost\fR) LDAP connections shou [...]
+
+
+Default: \fBpassdb backend = smbpasswd\fR
+
+
+Example: \fBpassdb backend = tdbsam:/etc/samba/private/passdb.tdb smbpasswd:/etc/samba/smbpasswd\fR
+
+
+Example: \fBpassdb backend = ldapsam:ldaps://ldap.example.com\fR
+
+
+Example: \fBpassdb backend = mysql:my_plugin_args tdbsam\fR
+
+
+.TP
+passwd chat (G)
+This string controls the \fB"chat"\fR conversation that takes places between \fBsmbd\fR(8) and the local password changing program to change the user's password\&. The string describes a sequence of response-receive pairs that \fBsmbd\fR(8) uses to determine what to send to the \fIpasswd program\fR and what to expect back\&. If the expected output is not received then the password is not changed\&.
+
+
+This chat sequence is often quite site specific, depending on what local methods are used for password control (such as NIS etc)\&.
+
+
+Note that this parameter only is only used if the \fIunix password sync\fR parameter is set to \fByes\fR\&. This sequence is then called \fBAS ROOT\fR when the SMB password in the smbpasswd file is being changed, without access to the old password cleartext\&. This means that root must be able to reset the user's password without knowing the text of the previous password\&. In the presence of NIS/YP, this means that the passwd program must be executed on the NIS master\&.
+
+
+The string can contain the macro \fI%n\fR which is substituted for the new password\&. The chat sequence can also contain the standard macros \fB\\\\n\fR, \fB\\\\r\fR, \fB\\\\t\fR and \fB\\\\s\fR to give line-feed, carriage-return, tab and space\&. The chat sequence string can also contain a '*' which matches any sequence of characters\&. Double quotes can be used to collect strings with spaces in them into a single string\&.
+
+
+If the send string in any part of the chat sequence is a full stop "\&.", then no string is sent\&. Similarly, if the expect string is a full stop then no string is expected\&.
+
+
+If the \fIpam password change\fR parameter is set to \fByes\fR, the chat pairs may be matched in any order, and success is determined by the PAM result, not any particular output\&. The \\n macro is ignored for PAM conversions\&.
+
+
+See also \fIunix password sync\fR, \fI passwd program\fR , \fIpasswd chat debug\fR and \fIpam password change\fR\&.
+
+
+Default: \fBpasswd chat = *new*password* %n\\n *new*password* %n\\n *changed*\fR
+
+
+Example: \fBpasswd chat = "*Enter OLD password*" %o\\n "*Enter NEW password*" %n\\n "*Reenter NEW password*" %n\\n "*Password changed*"\fR
+
+
+.TP
+passwd chat debug (G)
+This boolean specifies if the passwd chat script parameter is run in \fBdebug\fR mode\&. In this mode the strings passed to and received from the passwd chat are printed in the \fBsmbd\fR(8) log with a \fIdebug level\fR of 100\&. This is a dangerous option as it will allow plaintext passwords to be seen in the \fBsmbd\fR log\&. It is available to help Samba admins debug their \fIpasswd chat\fR scripts when calling the \fIpasswd program\fR and should be turned off after this has been done [...]
+
+
+See also \fIpasswd chat\fR , \fIpam password change\fR , \fIpasswd program\fR \&.
+
+
+Default: \fBpasswd chat debug = no\fR
+
+
+.TP
+passwd program (G)
+The name of a program that can be used to set UNIX user passwords\&. Any occurrences of \fI%u\fR will be replaced with the user name\&. The user name is checked for existence before calling the password changing program\&.
+
+
+Also note that many passwd programs insist in \fBreasonable \fR passwords, such as a minimum length, or the inclusion of mixed case chars and digits\&. This can pose a problem as some clients (such as Windows for Workgroups) uppercase the password before sending it\&.
+
+
+\fBNote\fR that if the \fIunix password sync\fR parameter is set to \fByes \fR then this program is called \fBAS ROOT\fR before the SMB password in the smbpasswd file is changed\&. If this UNIX password change fails, then \fBsmbd\fR will fail to change the SMB password also (this is by design)\&.
+
+
+If the \fIunix password sync\fR parameter is set this parameter \fBMUST USE ABSOLUTE PATHS\fR for \fBALL\fR programs called, and must be examined for security implications\&. Note that by default \fIunix password sync\fR is set to \fBno\fR\&.
+
+
+See also \fIunix password sync\fR\&.
+
+
+Default: \fBpasswd program = /bin/passwd\fR
+
+
+Example: \fBpasswd program = /sbin/npasswd %u\fR
+
+
+.TP
+password level (G)
+Some client/server combinations have difficulty with mixed-case passwords\&. One offending client is Windows for Workgroups, which for some reason forces passwords to upper case when using the LANMAN1 protocol, but leaves them alone when using COREPLUS! Another problem child is the Windows 95/98 family of operating systems\&. These clients upper case clear text passwords even when NT LM 0\&.12 selected by the protocol negotiation request/response\&.
+
+
+This parameter defines the maximum number of characters that may be upper case in passwords\&.
+
+
+For example, say the password given was "FRED"\&. If \fI password level\fR is set to 1, the following combinations would be tried if "FRED" failed:
+
+
+"Fred", "fred", "fRed", "frEd","freD"
+
+
+If \fIpassword level\fR was set to 2, the following combinations would also be tried:
+
+
+"FRed", "FrEd", "FreD", "fREd", "fReD", "frED", \&.\&.
+
+
+And so on\&.
+
+
+The higher value this parameter is set to the more likely it is that a mixed case password will be matched against a single case password\&. However, you should be aware that use of this parameter reduces security and increases the time taken to process a new connection\&.
+
+
+A value of zero will cause only two attempts to be made - the password as is and the password in all-lower case\&.
+
+
+Default: \fBpassword level = 0\fR
+
+
+Example: \fBpassword level = 4\fR
+
+
+.TP
+password server (G)
+By specifying the name of another SMB server or Active Directory domain controller with this option, and using \fBsecurity = [ads|domain|server]\fR it is possible to get Samba to to do all its username/password validation using a specific remote server\&.
+
+
+This option sets the name or IP address of the password server to use\&. New syntax has been added to support defining the port to use when connecting to the server the case of an ADS realm\&. To define a port other than the default LDAP port of 389, add the port number using a colon after the name or IP address (e\&.g\&. 192\&.168\&.1\&.100:389)\&. If you do not specify a port, Samba will use the standard LDAP port of tcp/389\&. Note that port numbers have no effect on password servers  [...]
+
+
+If parameter is a name, it is looked up using the parameter \fIname resolve order\fR and so may resolved by any method and order described in that parameter\&.
+
+
+The password server must be a machine capable of using the "LM1\&.2X002" or the "NT LM 0\&.12" protocol, and it must be in user level security mode\&.
+
+
+Using a password server means your UNIX box (running Samba) is only as secure as your password server\&. \fBDO NOT CHOOSE A PASSWORD SERVER THAT YOU DON'T COMPLETELY TRUST\fR\&.
+
+Never point a Samba server at itself for password serving\&. This will cause a loop and could lock up your Samba server!
+
+
+The name of the password server takes the standard substitutions, but probably the only useful one is \fI%m \fR, which means the Samba server will use the incoming client as the password server\&. If you use this then you better trust your clients, and you had better restrict them with hosts allow!
+
+
+If the \fIsecurity\fR parameter is set to \fBdomain\fR or \fBads\fR, then the list of machines in this option must be a list of Primary or Backup Domain controllers for the Domain or the character '*', as the Samba server is effectively in that domain, and will use cryptographically authenticated RPC calls to authenticate the user logging on\&. The advantage of using \fB security = domain\fR is that if you list several hosts in the \fIpassword server\fR option then \fBsmbd \fR will try e [...]
+
+
+If the \fIpassword server\fR option is set to the character '*', then Samba will attempt to auto-locate the Primary or Backup Domain controllers to authenticate against by doing a query for the name \fBWORKGROUP<1C>\fR and then contacting each server returned in the list of IP addresses from the name resolution source\&.
+
+
+If the list of servers contains both names/IP's and the '*' character, the list is treated as a list of preferred domain controllers, but an auto lookup of all remaining DC's will be added to the list as well\&. Samba will not attempt to optimize this list by locating the closest DC\&.
+
+
+If the \fIsecurity\fR parameter is set to \fBserver\fR, then there are different restrictions that \fBsecurity = domain\fR doesn't suffer from:
+
+
+You may list several password servers in the \fIpassword server\fR parameter, however if an \fBsmbd\fR makes a connection to a password server, and then the password server fails, no more users will be able to be authenticated from this \fBsmbd\fR\&. This is a restriction of the SMB/CIFS protocol when in \fBsecurity = server \fR mode and cannot be fixed in Samba\&.
+
+If you are using a Windows NT server as your password server then you will have to ensure that your users are able to login from the Samba server, as when in \fB security = server\fR mode the network logon will appear to come from there rather than from the users workstation\&.
+
+See also the \fIsecurity \fR parameter\&.
+
+
+Default: \fBpassword server = <empty string>\fR
+
+
+Example: \fBpassword server = NT-PDC, NT-BDC1, NT-BDC2, *\fR
+
+
+Example: \fBpassword server = windc.mydomain.com:389 192.168.1.101 *\fR
+
+
+Example: \fBpassword server = *\fR
+
+
+.TP
+path (S)
+This parameter specifies a directory to which the user of the service is to be given access\&. In the case of printable services, this is where print data will spool prior to being submitted to the host for printing\&.
+
+
+For a printable service offering guest access, the service should be readonly and the path should be world-writeable and have the sticky bit set\&. This is not mandatory of course, but you probably won't get the results you expect if you do otherwise\&.
+
+
+Any occurrences of \fI%u\fR in the path will be replaced with the UNIX username that the client is using on this connection\&. Any occurrences of \fI%m\fR will be replaced by the NetBIOS name of the machine they are connecting from\&. These replacements are very useful for setting up pseudo home directories for users\&.
+
+
+Note that this path will be based on \fIroot dir\fR if one was specified\&.
+
+
+Default: \fBnone\fR
+
+
+Example: \fBpath = /home/fred\fR
+
+
+.TP
+pid directory (G)
+This option specifies the directory where pid files will be placed\&.
+
+
+Default: \fBpid directory = ${prefix}/var/locks\fR
+
+
+Example: \fBpid directory = /var/run/\fR
+
+
+.TP
+posix locking (S)
+The \fBsmbd\fR(8) daemon maintains an database of file locks obtained by SMB clients\&. The default behavior is to map this internal database to POSIX locks\&. This means that file locks obtained by SMB clients are consistent with those seen by POSIX compliant applications accessing the files via a non-SMB method (e\&.g\&. NFS or local file access)\&. You should never need to disable this parameter\&.
+
+
+Default: \fBposix locking = yes\fR
+
+
+.TP
+postexec (S)
+This option specifies a command to be run whenever the service is disconnected\&. It takes the usual substitutions\&. The command may be run as the root on some systems\&.
+
+
+An interesting example may be to unmount server resources:
+
+
+\fBpostexec = /etc/umount /cdrom\fR
+
+
+See also \fIpreexec\fR\&.
+
+
+Default: \fBnone (no command executed)\fR
+
+
+Example: \fBpostexec = echo \"%u disconnected from %S from %m (%I)\" >> /tmp/log\fR
+
+
+.TP
+preexec (S)
+This option specifies a command to be run whenever the service is connected to\&. It takes the usual substitutions\&.
+
+
+An interesting example is to send the users a welcome message every time they log in\&. Maybe a message of the day? Here is an example:
+
+
+\fBpreexec = csh -c 'echo \"Welcome to %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' & \fR
+
+
+Of course, this could get annoying after a while :-)
+
+
+See also \fIpreexec close\fR and \fIpostexec \fR\&.
+
+
+Default: \fBnone (no command executed)\fR
+
+
+Example: \fBpreexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/log\fR
+
+
+.TP
+preexec close (S)
+This boolean option controls whether a non-zero return code from \fIpreexec \fR should close the service being connected to\&.
+
+
+Default: \fBpreexec close = no\fR
+
+
+.TP
+prefered master (G)
+Synonym for \fI preferred master\fR for people who cannot spell :-)\&.
+
+
+.TP
+preferred master (G)
+This boolean parameter controls if \fBnmbd\fR(8) is a preferred master browser for its workgroup\&.
+
+
+If this is set to \fByes\fR, on startup, \fBnmbd\fR will force an election, and it will have a slight advantage in winning the election\&. It is recommended that this parameter is used in conjunction with \fB domain master = yes\fR, so that \fBnmbd\fR can guarantee becoming a domain master\&.
+
+
+Use this option with caution, because if there are several hosts (whether Samba servers, Windows 95 or NT) that are preferred master browsers on the same subnet, they will each periodically and continuously attempt to become the local master browser\&. This will result in unnecessary broadcast traffic and reduced browsing capabilities\&.
+
+
+See also \fIos level\fR\&.
+
+
+Default: \fBpreferred master = auto\fR
+
+
+.TP
+preload (G)
+This is a list of services that you want to be automatically added to the browse lists\&. This is most useful for homes and printers services that would otherwise not be visible\&.
+
+
+Note that if you just want all printers in your printcap file loaded then the \fIload printers\fR option is easier\&.
+
+
+Default: \fBno preloaded services\fR
+
+
+Example: \fBpreload = fred lp colorlp\fR
+
+
+.TP
+preload modules (G)
+This is a list of paths to modules that should be loaded into smbd before a client connects\&. This improves the speed of smbd when reacting to new connections somewhat\&.
+
+
+Default: \fBpreload modules = \fR
+
+
+Example: \fBpreload modules = /usr/lib/samba/passdb/mysql.so+++ \fR
+
+
+.TP
+preserve case (S)
+This controls if new filenames are created with the case that the client passes, or if they are forced to be the \fIdefault case \fR\&.
+
+
+Default: \fBpreserve case = yes\fR
+
+
+See the section on NAME MANGLING for a fuller discussion\&.
+
+
+.TP
+printable (S)
+If this parameter is \fByes\fR, then clients may open, write to and submit spool files on the directory specified for the service\&.
+
+
+Note that a printable service will ALWAYS allow writing to the service path (user privileges permitting) via the spooling of print data\&. The \fIread only \fR parameter controls only non-printing access to the resource\&.
+
+
+Default: \fBprintable = no\fR
+
+
+.TP
+printcap (G)
+Synonym for \fI printcap name\fR\&.
+
+
+.TP
+printcap name (S)
+This parameter may be used to override the compiled-in default printcap name used by the server (usually \fI /etc/printcap\fR)\&. See the discussion of the [printers] section above for reasons why you might want to do this\&.
+
+
+To use the CUPS printing interface set \fBprintcap name = cups \fR\&. This should be supplemented by an addtional setting printing = cups in the [global] section\&. \fBprintcap name = cups\fR will use the "dummy" printcap created by CUPS, as specified in your CUPS configuration file\&.
+
+
+On System V systems that use \fBlpstat\fR to list available printers you can use \fBprintcap name = lpstat \fR to automatically obtain lists of available printers\&. This is the default for systems that define SYSV at configure time in Samba (this includes most System V based systems)\&. If \fI printcap name\fR is set to \fBlpstat\fR on these systems then Samba will launch \fBlpstat -v\fR and attempt to parse the output to obtain a printer list\&.
+
+
+A minimal printcap file would look something like this:
+
+
+.nf
+
+print1|My Printer 1
+print2|My Printer 2
+print3|My Printer 3
+print4|My Printer 4
+print5|My Printer 5
+.fi
+
+
+where the '|' separates aliases of a printer\&. The fact that the second alias has a space in it gives a hint to Samba that it's a comment\&.
+
+
+Under AIX the default printcap name is \fI/etc/qconfig\fR\&. Samba will assume the file is in AIX \fIqconfig\fR format if the string \fIqconfig\fR appears in the printcap filename\&.
+
+Default: \fBprintcap name = /etc/printcap\fR
+
+
+Example: \fBprintcap name = /etc/myprintcap\fR
+
+
+.TP
+print command (S)
+After a print job has finished spooling to a service, this command will be used via a \fBsystem()\fR call to process the spool file\&. Typically the command specified will submit the spool file to the host's printing subsystem, but there is no requirement that this be the case\&. The server will not remove the spool file, so whatever command you specify should remove the spool file when it has been processed, otherwise you will need to manually remove old spool files\&.
+
+
+The print command is simply a text string\&. It will be used verbatim after macro substitutions have been made:
+
+
+%s, %f - the path to the spool file name
+
+
+%p - the appropriate printer name
+
+
+%J - the job name as transmitted by the client\&.
+
+
+%c - The number of printed pages of the spooled job (if known)\&.
+
+
+%z - the size of the spooled print job (in bytes)
+
+
+The print command \fBMUST\fR contain at least one occurrence of \fI%s\fR or \fI%f \fR - the \fI%p\fR is optional\&. At the time a job is submitted, if no printer name is supplied the \fI%p \fR will be silently removed from the printer command\&.
+
+
+If specified in the [global] section, the print command given will be used for any printable service that does not have its own print command specified\&.
+
+
+If there is neither a specified print command for a printable service nor a global print command, spool files will be created but not processed and (most importantly) not removed\&.
+
+
+Note that printing may fail on some UNIXes from the \fBnobody\fR account\&. If this happens then create an alternative guest account that can print and set the \fIguest account\fR in the [global] section\&.
+
+
+You can form quite complex print commands by realizing that they are just passed to a shell\&. For example the following will log a print job, print the file, then remove it\&. Note that ';' is the usual separator for command in shell scripts\&.
+
+
+\fBprint command = echo Printing %s >> /tmp/print.log; lpr -P %p %s; rm %s\fR
+
+
+You may have to vary this command considerably depending on how you normally print files on your system\&. The default for the parameter varies depending on the setting of the \fIprinting\fR parameter\&.
+
+
+Default: For \fBprinting = BSD, AIX, QNX, LPRNG or PLP :\fR
+
+
+\fBprint command = lpr -r -P%p %s\fR
+
+
+For \fBprinting = SYSV or HPUX :\fR
+
+
+\fBprint command = lp -c -d%p %s; rm %s\fR
+
+
+For \fBprinting = SOFTQ :\fR
+
+
+\fBprint command = lp -d%p -s %s; rm %s\fR
+
+
+For printing = CUPS : If SAMBA is compiled against libcups, then printcap = cups uses the CUPS API to submit jobs, etc\&. Otherwise it maps to the System V commands with the -oraw option for printing, i\&.e\&. it uses \fBlp -c -d%p -oraw; rm %s\fR\&. With \fBprinting = cups\fR, and if SAMBA is compiled against libcups, any manually set print command will be ignored\&.
+
+
+Example: \fBprint command = /usr/local/samba/bin/myprintscript %p %s\fR
+
+
+.TP
+printer (S)
+Synonym for \fI printer name\fR\&.
+
+
+.TP
+printer admin (S)
+This is a list of users that can do anything to printers via the remote administration interfaces offered by MS-RPC (usually using a NT workstation)\&. Note that the root user always has admin rights\&.
+
+
+Default: \fBprinter admin = <empty string>\fR
+
+
+Example: \fBprinter admin = admin, @staff\fR
+
+
+.TP
+printer name (S)
+This parameter specifies the name of the printer to which print jobs spooled through a printable service will be sent\&.
+
+
+If specified in the [global] section, the printer name given will be used for any printable service that does not have its own printer name specified\&.
+
+
+Default: \fBnone (but may be \fBlp\fR on many systems)\fR
+
+
+Example: \fBprinter name = laserwriter\fR
+
+
+.TP
+printing (S)
+This parameters controls how printer status information is interpreted on your system\&. It also affects the default values for the \fIprint command\fR, \fIlpq command\fR, \fIlppause command \fR, \fIlpresume command\fR, and \fIlprm command\fR if specified in the [global] section\&.
+
+
+Currently nine printing styles are supported\&. They are \fBBSD\fR, \fBAIX\fR, \fBLPRNG\fR, \fBPLP\fR, \fBSYSV\fR, \fBHPUX\fR, \fBQNX\fR, \fBSOFTQ\fR, and \fBCUPS\fR\&.
+
+
+To see what the defaults are for the other print commands when using the various options use the \fBtestparm\fR(1) program\&.
+
+
+This option can be set on a per printer basis
+
+
+See also the discussion in the [printers] section\&.
+
+
+.TP
+print ok (S)
+Synonym for \fIprintable\fR\&.
+
+
+.TP
+private dir (G)
+This parameters defines the directory smbd will use for storing such files as \fIsmbpasswd\fR and \fIsecrets\&.tdb\fR\&.
+
+
+Default :\fBprivate dir = ${prefix}/private\fR
+
+
+.TP
+profile acls (S)
+This boolean parameter controls whether \fBsmbd\fR(8) This boolean parameter was added to fix the problems that people have been having with storing user profiles on Samba shares from Windows 2000 or Windows XP clients\&. New versions of Windows 2000 or Windows XP service packs do security ACL checking on the owner and ability to write of the profile directory stored on a local workstation when copied from a Samba share\&.
+
+
+When not in domain mode with winbindd then the security info copied onto the local workstation has no meaning to the logged in user (SID) on that workstation so the profile storing fails\&. Adding this parameter onto a share used for profile storage changes two things about the returned Windows ACL\&. Firstly it changes the owner and group owner of all reported files and directories to be BUILTIN\\\\Administrators, BUILTIN\\\\Users respectively (SIDs S-1-5-32-544, S-1-5-32-545)\&. Second [...]
+
+
+Note that if you have multiple users logging on to a workstation then in order to prevent them from being able to access each others profiles you must remove the "Bypass traverse checking" advanced user right\&. This will prevent access to other users profile directories as the top level profile directory (named after the user) is created by the workstation profile code and has an ACL restricting entry to the directory tree to the owning user\&.
+
+
+Default: \fBprofile acls = no\fR
+
+
+.TP
+protocol (G)
+Synonym for \fImax protocol\fR\&.
+
+
+.TP
+public (S)
+Synonym for \fIguest ok\fR\&.
+
+
+.TP
+queuepause command (S)
+This parameter specifies the command to be executed on the server host in order to pause the printer queue\&.
+
+
+This command should be a program or script which takes a printer name as its only parameter and stops the printer queue, such that no longer jobs are submitted to the printer\&.
+
+
+This command is not supported by Windows for Workgroups, but can be issued from the Printers window under Windows 95 and NT\&.
+
+
+If a \fI%p\fR is given then the printer name is put in its place\&. Otherwise it is placed at the end of the command\&.
+
+
+Note that it is good practice to include the absolute path in the command as the PATH may not be available to the server\&.
+
+
+Default: \fBdepends on the setting of \fIprinting\fR\fR
+
+
+Example: \fBqueuepause command = disable %p\fR
+
+
+.TP
+queueresume command (S)
+This parameter specifies the command to be executed on the server host in order to resume the printer queue\&. It is the command to undo the behavior that is caused by the previous parameter (\fI queuepause command\fR)\&.
+
+
+This command should be a program or script which takes a printer name as its only parameter and resumes the printer queue, such that queued jobs are resubmitted to the printer\&.
+
+
+This command is not supported by Windows for Workgroups, but can be issued from the Printers window under Windows 95 and NT\&.
+
+
+If a \fI%p\fR is given then the printer name is put in its place\&. Otherwise it is placed at the end of the command\&.
+
+
+Note that it is good practice to include the absolute path in the command as the PATH may not be available to the server\&.
+
+
+Default: \fBdepends on the setting of \fIprinting\fR\fR
+
+
+Example: \fBqueuepause command = enable %p\fR
+
+
+.TP
+read bmpx (G)
+This boolean parameter controls whether \fBsmbd\fR(8) will support the "Read Block Multiplex" SMB\&. This is now rarely used and defaults to \fBno\fR\&. You should never need to set this parameter\&.
+
+
+Default: \fBread bmpx = no\fR
+
+
+.TP
+read list (S)
+This is a list of users that are given read-only access to a service\&. If the connecting user is in this list then they will not be given write access, no matter what the \fIread only\fR option is set to\&. The list can include group names using the syntax described in the \fI invalid users\fR parameter\&.
+
+
+See also the \fI write list\fR parameter and the \fIinvalid users\fR parameter\&.
+
+
+Default: \fBread list = <empty string>\fR
+
+
+Example: \fBread list = mary, @students\fR
+
+
+.TP
+read only (S)
+An inverted synonym is \fIwriteable\fR\&.
+
+
+If this parameter is \fByes\fR, then users of a service may not create or modify files in the service's directory\&.
+
+
+Note that a printable service (\fBprintable = yes\fR) will \fBALWAYS\fR allow writing to the directory (user privileges permitting), but only via spooling operations\&.
+
+
+Default: \fBread only = yes\fR
+
+
+.TP
+read raw (G)
+This parameter controls whether or not the server will support the raw read SMB requests when transferring data to clients\&.
+
+
+If enabled, raw reads allow reads of 65535 bytes in one packet\&. This typically provides a major performance benefit\&.
+
+
+However, some clients either negotiate the allowable block size incorrectly or are incapable of supporting larger block sizes, and for these clients you may need to disable raw reads\&.
+
+
+In general this parameter should be viewed as a system tuning tool and left severely alone\&. See also \fIwrite raw\fR\&.
+
+
+Default: \fBread raw = yes\fR
+
+
+.TP
+read size (G)
+The option \fIread size\fR affects the overlap of disk reads/writes with network reads/writes\&. If the amount of data being transferred in several of the SMB commands (currently SMBwrite, SMBwriteX and SMBreadbraw) is larger than this value then the server begins writing the data before it has received the whole packet from the network, or in the case of SMBreadbraw, it begins writing to the network before all the data has been read from disk\&.
+
+
+This overlapping works best when the speeds of disk and network access are similar, having very little effect when the speed of one is much greater than the other\&.
+
+
+The default value is 16384, but very little experimentation has been done yet to determine the optimal value, and it is likely that the best value will vary greatly between systems anyway\&. A value over 65536 is pointless and will cause you to allocate memory unnecessarily\&.
+
+
+Default: \fBread size = 16384\fR
+
+
+Example: \fBread size = 8192\fR
+
+
+.TP
+realm (G)
+This option specifies the kerberos realm to use\&. The realm is used as the ADS equivalent of the NT4 \fBdomain\fR\&. It is usually set to the DNS name of the kerberos server\&.
+
+
+Default: \fBrealm = \fR
+
+
+Example: \fBrealm = mysambabox.mycompany.com\fR
+
+
+.TP
+remote announce (G)
+This option allows you to setup \fBnmbd\fR(8)to periodically announce itself to arbitrary IP addresses with an arbitrary workgroup name\&.
+
+
+This is useful if you want your Samba server to appear in a remote workgroup for which the normal browse propagation rules don't work\&. The remote workgroup can be anywhere that you can send IP packets to\&.
+
+
+For example:
+
+
+\fBremote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF\fR
+
+
+the above line would cause \fBnmbd\fR to announce itself to the two given IP addresses using the given workgroup names\&. If you leave out the workgroup name then the one given in the \fIworkgroup\fR parameter is used instead\&.
+
+
+The IP addresses you choose would normally be the broadcast addresses of the remote networks, but can also be the IP addresses of known browse masters if your network config is that stable\&.
+
+
+See ???\&.
+
+
+Default: \fBremote announce = <empty string>\fR
+
+
+.TP
+remote browse sync (G)
+This option allows you to setup \fBnmbd\fR(8) to periodically request synchronization of browse lists with the master browser of a Samba server that is on a remote segment\&. This option will allow you to gain browse lists for multiple workgroups across routed networks\&. This is done in a manner that does not work with any non-Samba servers\&.
+
+
+This is useful if you want your Samba server and all local clients to appear in a remote workgroup for which the normal browse propagation rules don't work\&. The remote workgroup can be anywhere that you can send IP packets to\&.
+
+
+For example:
+
+
+\fBremote browse sync = 192.168.2.255 192.168.4.255\fR
+
+
+the above line would cause \fBnmbd\fR to request the master browser on the specified subnets or addresses to synchronize their browse lists with the local server\&.
+
+
+The IP addresses you choose would normally be the broadcast addresses of the remote networks, but can also be the IP addresses of known browse masters if your network config is that stable\&. If a machine IP address is given Samba makes NO attempt to validate that the remote machine is available, is listening, nor that it is in fact the browse master on its segment\&.
+
+
+Default: \fBremote browse sync = <empty string>\fR
+
+
+.TP
+restrict anonymous (G)
+The setting of this parameter determines whether user and group list information is returned for an anonymous connection\&. and mirrors the effects of the \fBHKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\LSA\\RestrictAnonymous\fR registry key in Windows 2000 and Windows NT\&. When set to 0, user and group list information is returned to anyone who asks\&. When set to 1, only an authenticated user can retrive user and group list information\&. For the value 2, supported by Windo [...]
+
+
+The security advantage of using restrict anonymous = 1 is dubious, as user and group list information can be obtained using other means\&.
+
+
+The security advantage of using restrict anonymous = 2 is removed by setting \fIguest ok\fR = yes on any share\&.
+
+Default: \fBrestrict anonymous = 0\fR
+
+
+.TP
+root (G)
+Synonym for \fIroot directory"\fR\&.
+
+
+.TP
+root dir (G)
+Synonym for \fIroot directory"\fR\&.
+
+
+.TP
+root directory (G)
+The server will \fBchroot()\fR (i\&.e\&. Change its root directory) to this directory on startup\&. This is not strictly necessary for secure operation\&. Even without it the server will deny access to files not in one of the service entries\&. It may also check for, and deny access to, soft links to other parts of the filesystem, or attempts to use "\&.\&." in file names to access other directories (depending on the setting of the \fIwide links\fR parameter)\&.
+
+
+Adding a \fIroot directory\fR entry other than "/" adds an extra level of security, but at a price\&. It absolutely ensures that no access is given to files not in the sub-tree specified in the \fIroot directory\fR option, \fBincluding\fR some files needed for complete operation of the server\&. To maintain full operability of the server you will need to mirror some system files into the \fIroot directory\fR tree\&. In particular you will need to mirror \fI/etc/passwd\fR (or a subset of  [...]
+
+
+Default: \fBroot directory = /\fR
+
+
+Example: \fBroot directory = /homes/smb\fR
+
+
+.TP
+root postexec (S)
+This is the same as the \fIpostexec\fR parameter except that the command is run as root\&. This is useful for unmounting filesystems (such as CDROMs) after a connection is closed\&.
+
+
+See also \fI postexec\fR\&.
+
+
+Default: \fBroot postexec = <empty string>\fR
+
+
+.TP
+root preexec (S)
+This is the same as the \fIpreexec\fR parameter except that the command is run as root\&. This is useful for mounting filesystems (such as CDROMs) when a connection is opened\&.
+
+
+See also \fI preexec\fR and \fIpreexec close\fR\&.
+
+
+Default: \fBroot preexec = <empty string>\fR
+
+
+.TP
+root preexec close (S)
+This is the same as the \fIpreexec close \fR parameter except that the command is run as root\&.
+
+
+See also \fI preexec\fR and \fIpreexec close\fR\&.
+
+
+Default: \fBroot preexec close = no\fR
+
+
+.TP
+security (G)
+This option affects how clients respond to Samba and is one of the most important settings in the \fI smb\&.conf\fR file\&.
+
+
+The option sets the "security mode bit" in replies to protocol negotiations with \fBsmbd\fR(8) to turn share level security on or off\&. Clients decide based on this bit whether (and how) to transfer user and password information to the server\&.
+
+
+The default is \fBsecurity = user\fR, as this is the most common setting needed when talking to Windows 98 and Windows NT\&.
+
+
+The alternatives are \fBsecurity = share\fR, \fBsecurity = server\fR or \fBsecurity = domain \fR\&.
+
+
+In versions of Samba prior to 2\&.0\&.0, the default was \fBsecurity = share\fR mainly because that was the only option at one stage\&.
+
+
+There is a bug in WfWg that has relevance to this setting\&. When in user or server level security a WfWg client will totally ignore the password you type in the "connect drive" dialog box\&. This makes it very difficult (if not impossible) to connect to a Samba service as anyone except the user that you are logged into WfWg as\&.
+
+
+If your PCs use usernames that are the same as their usernames on the UNIX machine then you will want to use \fBsecurity = user\fR\&. If you mostly use usernames that don't exist on the UNIX box then use \fBsecurity = share\fR\&.
+
+
+You should also use \fBsecurity = share\fR if you want to mainly setup shares without a password (guest shares)\&. This is commonly used for a shared printer server\&. It is more difficult to setup guest shares with \fBsecurity = user\fR, see the \fImap to guest\fR parameter for details\&.
+
+
+It is possible to use \fBsmbd\fR in a \fB hybrid mode\fR where it is offers both user and share level security under different \fINetBIOS aliases\fR\&.
+
+
+The different settings will now be explained\&.
+
+
+\fBSECURITY = SHARE\fR
+
+
+When clients connect to a share level security server they need not log onto the server with a valid username and password before attempting to connect to a shared resource (although modern clients such as Windows 95/98 and Windows NT will send a logon request with a username but no password when talking to a \fBsecurity = share \fR server)\&. Instead, the clients send authentication information (passwords) on a per-share basis, at the time they attempt to connect to that share\&.
+
+
+Note that \fBsmbd\fR \fBALWAYS\fR uses a valid UNIX user to act on behalf of the client, even in \fBsecurity = share\fR level security\&.
+
+
+As clients are not required to send a username to the server in share level security, \fBsmbd\fR uses several techniques to determine the correct UNIX user to use on behalf of the client\&.
+
+
+A list of possible UNIX usernames to match with the given client password is constructed using the following methods :
+
+
+If the \fIguest only\fR parameter is set, then all the other stages are missed and only the \fIguest account\fR username is checked\&.
+
+Is a username is sent with the share connection request, then this username (after mapping - see \fIusername map\fR), is added as a potential username\&.
+
+If the client did a previous \fBlogon \fR request (the SessionSetup SMB call) then the username sent in this SMB will be added as a potential username\&.
+
+The name of the service the client requested is added as a potential username\&.
+
+The NetBIOS name of the client is added to the list as a potential username\&.
+
+Any users on the \fI user\fR list are added as potential usernames\&.
+
+If the \fIguest only\fR parameter is not set, then this list is then tried with the supplied password\&. The first user for whom the password matches will be used as the UNIX user\&.
+
+
+If the \fIguest only\fR parameter is set, or no username can be determined then if the share is marked as available to the \fIguest account\fR, then this guest user will be used, otherwise access is denied\&.
+
+
+Note that it can be \fBvery\fR confusing in share-level security as to which UNIX username will eventually be used in granting access\&.
+
+
+See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION\&.
+
+
+\fBSECURITY = USER\fR
+
+
+This is the default security setting in Samba 3\&.0\&. With user-level security a client must first "log-on" with a valid username and password (which can be mapped using the \fIusername map\fR parameter)\&. Encrypted passwords (see the \fIencrypted passwords\fR parameter) can also be used in this security mode\&. Parameters such as \fIuser\fR and \fIguest only\fR if set are then applied and may change the UNIX user to use on this connection, but only after the user has been successfully [...]
+
+
+\fBNote\fR that the name of the resource being requested is \fBnot\fR sent to the server until after the server has successfully authenticated the client\&. This is why guest shares don't work in user level security without allowing the server to automatically map unknown users into the \fIguest account\fR\&. See the \fImap to guest\fR parameter for details on doing this\&.
+
+
+See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION\&.
+
+
+\fBSECURITY = DOMAIN\fR
+
+
+This mode will only work correctly if \fBnet\fR(8) has been used to add this machine into a Windows NT Domain\&. It expects the \fIencrypted passwords\fR parameter to be set to \fByes\fR\&. In this mode Samba will try to validate the username/password by passing it to a Windows NT Primary or Backup Domain Controller, in exactly the same way that a Windows NT Server would do\&.
+
+
+\fBNote\fR that a valid UNIX user must still exist as well as the account on the Domain Controller to allow Samba to have a valid UNIX account to map file access to\&.
+
+
+\fBNote\fR that from the client's point of view \fBsecurity = domain\fR is the same as \fBsecurity = user\fR\&. It only affects how the server deals with the authentication, it does not in any way affect what the client sees\&.
+
+
+\fBNote\fR that the name of the resource being requested is \fBnot\fR sent to the server until after the server has successfully authenticated the client\&. This is why guest shares don't work in user level security without allowing the server to automatically map unknown users into the \fIguest account\fR\&. See the \fImap to guest\fR parameter for details on doing this\&.
+
+
+See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION\&.
+
+
+See also the \fIpassword server\fR parameter and the \fIencrypted passwords\fR parameter\&.
+
+
+\fBSECURITY = SERVER\fR
+
+
+In this mode Samba will try to validate the username/password by passing it to another SMB server, such as an NT box\&. If this fails it will revert to \fBsecurity = user\fR\&. It expects the \fIencrypted passwords\fR parameter to be set to \fByes\fR, unless the remote server does not support them\&. However note that if encrypted passwords have been negotiated then Samba cannot revert back to checking the UNIX password file, it must have a valid \fIsmbpasswd\fR file to check users again [...]
+
+
+This mode of operation has significant pitfalls, due to the fact that is activly initiates a man-in-the-middle attack on the remote SMB server\&. In particular, this mode of operation can cause significant resource consuption on the PDC, as it must maintain an active connection for the duration of the user's session\&. Furthermore, if this connection is lost, there is no way to reestablish it, and futher authenticaions to the Samba server may fail\&. (From a single client, till it discon [...]
+
+From the client's point of view \fBsecurity = server\fR is the same as \fBsecurity = user\fR\&. It only affects how the server deals with the authentication, it does not in any way affect what the client sees\&.
+
+\fBNote\fR that the name of the resource being requested is \fBnot\fR sent to the server until after the server has successfully authenticated the client\&. This is why guest shares don't work in user level security without allowing the server to automatically map unknown users into the \fIguest account\fR\&. See the \fImap to guest\fR parameter for details on doing this\&.
+
+
+See also the section NOTE ABOUT USERNAME/PASSWORD VALIDATION\&.
+
+
+See also the \fIpassword server\fR parameter and the \fIencrypted passwords\fR parameter\&.
+
+
+\fBSECURITY = ADS\fR
+
+
+In this mode, Samba will act as a domain member in an ADS realm\&. To operate in this mode, the machine running Samba will need to have Kerberos installed and configured and Samba will need to be joined to the ADS realm using the net utility\&.
+
+
+Note that this mode does NOT make Samba operate as a Active Directory Domain Controller\&.
+
+
+Read the chapter about Domain Membership in the HOWTO for details\&.
+
+
+See also the \fIads server \fR parameter, the \fIrealm \fR paramter and the \fIencrypted passwords\fR parameter\&.
+
+
+Default: \fBsecurity = USER\fR
+
+
+Example: \fBsecurity = DOMAIN\fR
+
+
+.TP
+security mask (S)
+This parameter controls what UNIX permission bits can be modified when a Windows NT client is manipulating the UNIX permission on a file using the native NT security dialog box\&.
+
+
+This parameter is applied as a mask (AND'ed with) to the changed permission bits, thus preventing any bits not in this mask from being modified\&. Essentially, zero bits in this mask may be treated as a set of bits the user is not allowed to change\&.
+
+
+If not set explicitly this parameter is 0777, allowing a user to modify all the user/group/world permissions on a file\&.
+
+
+\fBNote\fR that users who can access the Samba server through other means can easily bypass this restriction, so it is primarily useful for standalone "appliance" systems\&. Administrators of most normal systems will probably want to leave it set to \fB0777\fR\&.
+
+
+See also the \fIforce directory security mode\fR, \fIdirectory security mask\fR, \fIforce security mode\fR parameters\&.
+
+
+Default: \fBsecurity mask = 0777\fR
+
+
+Example: \fBsecurity mask = 0770\fR
+
+
+.TP
+server schannel (G)
+This controls whether the server offers or even demands the use of the netlogon schannel\&. \fIserver schannel = no\fR does not offer the schannel, \fIserver schannel = auto\fR offers the schannel but does not enforce it, and \fIserver schannel = yes\fR denies access if the client is not able to speak netlogon schannel\&. This is only the case for Windows NT4 before SP4\&.
+
+
+Please note that with this set to \fIno\fR you will have to apply the WindowsXP requireSignOrSeal-Registry patch found in the docs/Registry subdirectory\&.
+
+
+Default: \fBserver schannel = auto\fR
+
+
+Example: \fBserver schannel = yes\fR
+
+
+.TP
+server signing (G)
+This controls whether the server offers or requires the client it talks to to use SMB signing\&. Possible values are \fBauto\fR, \fBmandatory\fR and \fBdisabled\fR\&.
+
+
+When set to auto, SMB signing is offered, but not enforced\&. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either\&.
+
+
+Default: \fBclient signing = False\fR
+
+
+.TP
+server string (G)
+This controls what string will show up in the printer comment box in print manager and next to the IPC connection in \fBnet view\fR\&. It can be any string that you wish to show to your users\&.
+
+
+It also sets what will appear in browse lists next to the machine name\&.
+
+
+A \fI%v\fR will be replaced with the Samba version number\&.
+
+
+A \fI%h\fR will be replaced with the hostname\&.
+
+
+Default: \fBserver string = Samba %v\fR
+
+
+Example: \fBserver string = University of GNUs Samba Server\fR
+
+
+.TP
+set directory (S)
+If \fBset directory = no\fR, then users of the service may not use the setdir command to change directory\&.
+
+
+The \fBsetdir\fR command is only implemented in the Digital Pathworks client\&. See the Pathworks documentation for details\&.
+
+
+Default: \fBset directory = no\fR
+
+
+.TP
+set primary group script (G)
+Thanks to the Posix subsystem in NT a Windows User has a primary group in addition to the auxiliary groups\&. This script sets the primary group in the unix userdatase when an administrator sets the primary group from the windows user manager or when fetching a SAM with \fBnet rpc vampire\fR\&. \fI%u\fR will be replaced with the user whose primary group is to be set\&. \fI%g\fR will be replaced with the group to set\&.
+
+
+Default: \fBNo default value\fR
+
+
+Example: \fBset primary group script = /usr/sbin/usermod -g '%g' '%u'\fR
+
+
+.TP
+set quota command (G)
+The \fBset quota command\fR should only be used whenever there is no operating system API available from the OS that samba can use\&.
+
+
+This parameter should specify the path to a script that can set quota for the specified arguments\&.
+
+
+The specified script should take the following arguments:
+
+
+1 - quota type .TP 3 \(bu 1 - user quotas .TP \(bu 2 - user default quotas (uid = -1) .TP \(bu 3 - group quotas .TP \(bu 4 - group default quotas (gid = -1) .LP
+
+2 - id (uid for user, gid for group, -1 if N/A)
+
+3 - quota state (0 = disable, 1 = enable, 2 = enable and enforce)
+
+4 - block softlimit
+
+5 - block hardlimit
+
+6 - inode softlimit
+
+7 - inode hardlimit
+
+8(optional) - block size, defaults to 1024
+
+The script should output at least one line of data\&.
+
+
+See also the \fIget quota command\fR parameter\&.
+
+
+Default: \fBset quota command = \fR
+
+
+Example: \fBset quota command = /usr/local/sbin/set_quota\fR
+
+
+.TP
+share modes (S)
+This enables or disables the honoring of the \fIshare modes\fR during a file open\&. These modes are used by clients to gain exclusive read or write access to a file\&.
+
+
+These open modes are not directly supported by UNIX, so they are simulated using shared memory, or lock files if your UNIX doesn't support shared memory (almost all do)\&.
+
+
+The share modes that are enabled by this option are \fBDENY_DOS\fR, \fBDENY_ALL\fR, \fBDENY_READ\fR, \fBDENY_WRITE\fR, \fBDENY_NONE\fR and \fBDENY_FCB\fR\&.
+
+
+This option gives full share compatibility and enabled by default\&.
+
+
+You should \fBNEVER\fR turn this parameter off as many Windows applications will break if you do so\&.
+
+
+Default: \fBshare modes = yes\fR
+
+
+.TP
+short preserve case (S)
+This boolean parameter controls if new files which conform to 8\&.3 syntax, that is all in upper case and of suitable length, are created upper case, or if they are forced to be the \fIdefault case \fR\&. This option can be use with \fBpreserve case = yes\fR to permit long filenames to retain their case, while short names are lowered\&.
+
+
+See the section on NAME MANGLING\&.
+
+
+Default: \fBshort preserve case = yes\fR
+
+
+.TP
+show add printer wizard (G)
+With the introduction of MS-RPC based printing support for Windows NT/2000 client in Samba 2\&.2, a "Printers\&.\&.\&." folder will appear on Samba hosts in the share listing\&. Normally this folder will contain an icon for the MS Add Printer Wizard (APW)\&. However, it is possible to disable this feature regardless of the level of privilege of the connected user\&.
+
+
+Under normal circumstances, the Windows NT/2000 client will open a handle on the printer server with OpenPrinterEx() asking for Administrator privileges\&. If the user does not have administrative access on the print server (i\&.e is not root or a member of the \fIprinter admin\fR group), the OpenPrinterEx() call fails and the client makes another open call with a request for a lower privilege level\&. This should succeed, however the APW icon will not be displayed\&.
+
+
+Disabling the \fIshow add printer wizard\fR parameter will always cause the OpenPrinterEx() on the server to fail\&. Thus the APW icon will never be displayed\&. \fB Note :\fRThis does not prevent the same user from having administrative privilege on an individual printer\&.
+
+
+See also \fIaddprinter command\fR, \fIdeleteprinter command\fR, \fIprinter admin\fR
+
+
+Default :\fBshow add printer wizard = yes\fR
+
+
+.TP
+shutdown script (G)
+\fBThis parameter only exists in the HEAD cvs branch\fR This a full path name to a script called by \fBsmbd\fR(8) that should start a shutdown procedure\&.
+
+
+This command will be run as the user connected to the server\&.
+
+
+%m %t %r %f parameters are expanded:
+
+
+\fI%m\fR will be substituted with the shutdown message sent to the server\&.
+
+\fI%t\fR will be substituted with the number of seconds to wait before effectively starting the shutdown procedure\&.
+
+\fI%r\fR will be substituted with the switch \fB-r\fR\&. It means reboot after shutdown for NT\&.
+
+\fI%f\fR will be substituted with the switch \fB-f\fR\&. It means force the shutdown even if applications do not respond for NT\&.
+
+Default: \fBNone\fR\&.
+
+
+Example: \fBshutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f\fR
+
+
+Shutdown script example:
+.nf
+
+#!/bin/bash
+		
+$time=0
+let "time/60"
+let "time++"
+
+/sbin/shutdown $3 $4 +$time $1 &
+.fi
+
+Shutdown does not return so we need to launch it in background\&.
+
+
+See also \fIabort shutdown script\fR\&.
+
+
+.TP
+smb passwd file (G)
+This option sets the path to the encrypted smbpasswd file\&. By default the path to the smbpasswd file is compiled into Samba\&.
+
+
+Default: \fBsmb passwd file = ${prefix}/private/smbpasswd\fR
+
+
+Example: \fBsmb passwd file = /etc/samba/smbpasswd\fR
+
+
+.TP
+smb ports (G)
+Specifies which ports the server should listen on for SMB traffic\&.
+
+
+Default: \fBsmb ports = 445 139\fR
+
+
+.TP
+socket address (G)
+This option allows you to control what address Samba will listen for connections on\&. This is used to support multiple virtual interfaces on the one server, each with a different configuration\&.
+
+
+By default Samba will accept connections on any address\&.
+
+
+Example: \fBsocket address = 192.168.2.20\fR
+
+
+.TP
+socket options (G)
+This option allows you to set socket options to be used when talking with the client\&.
+
+
+Socket options are controls on the networking layer of the operating systems which allow the connection to be tuned\&.
+
+
+This option will typically be used to tune your Samba server for optimal performance for your local network\&. There is no way that Samba can know what the optimal parameters are for your net, so you must experiment and choose them yourself\&. We strongly suggest you read the appropriate documentation for your operating system first (perhaps \fBman setsockopt\fR will help)\&.
+
+
+You may find that on some systems Samba will say "Unknown socket option" when you supply an option\&. This means you either incorrectly typed it or you need to add an include file to includes\&.h for your OS\&. If the latter is the case please send the patch to samba-technical at samba\&.org\&.
+
+
+Any of the supported socket options may be combined in any way you like, as long as your OS allows it\&.
+
+
+This is the list of socket options currently settable using this option:
+
+
+SO_KEEPALIVE
+
+SO_REUSEADDR
+
+SO_BROADCAST
+
+TCP_NODELAY
+
+IPTOS_LOWDELAY
+
+IPTOS_THROUGHPUT
+
+SO_SNDBUF *
+
+SO_RCVBUF *
+
+SO_SNDLOWAT *
+
+SO_RCVLOWAT *
+
+Those marked with a \fB'*'\fR take an integer argument\&. The others can optionally take a 1 or 0 argument to enable or disable the option, by default they will be enabled if you don't specify 1 or 0\&.
+
+
+To specify an argument use the syntax SOME_OPTION = VALUE for example \fBSO_SNDBUF = 8192\fR\&. Note that you must not have any spaces before or after the = sign\&.
+
+
+If you are on a local network then a sensible option might be:
+
+
+\fBsocket options = IPTOS_LOWDELAY\fR
+
+
+If you have a local network then you could try:
+
+
+\fBsocket options = IPTOS_LOWDELAY TCP_NODELAY\fR
+
+
+If you are on a wide area network then perhaps try setting IPTOS_THROUGHPUT\&.
+
+
+Note that several of the options may cause your Samba server to fail completely\&. Use these options with caution!
+
+
+Default: \fBsocket options = TCP_NODELAY\fR
+
+
+Example: \fBsocket options = IPTOS_LOWDELAY\fR
+
+
+.TP
+source environment (G)
+This parameter causes Samba to set environment variables as per the content of the file named\&.
+
+
+If the value of this parameter starts with a "|" character then Samba will treat that value as a pipe command to open and will set the environment variables from the output of the pipe\&.
+
+
+The contents of the file or the output of the pipe should be formatted as the output of the standard Unix \fBenv(1)\fR command\&. This is of the form:
+
+
+Example environment entry:
+
+
+\fBSAMBA_NETBIOS_NAME = myhostname\fR
+
+
+Default: \fBNo default value\fR
+
+
+Examples: \fBsource environment = |/etc/smb.conf.sh\fR
+
+
+Example: \fBsource environment = /usr/local/smb_env_vars\fR
+
+
+.TP
+stat cache (G)
+This parameter determines if \fBsmbd\fR(8) will use a cache in order to speed up case insensitive name mappings\&. You should never need to change this parameter\&.
+
+
+Default: \fBstat cache = yes\fR
+
+
+.TP
+strict allocate (S)
+This is a boolean that controls the handling of disk space allocation in the server\&. When this is set to \fByes\fR the server will change from UNIX behaviour of not committing real disk storage blocks when a file is extended to the Windows behaviour of actually forcing the disk system to allocate real storage blocks when a file is created or extended to be a given size\&. In UNIX terminology this means that Samba will stop creating sparse files\&. This can be slow on some systems\&.
+
+
+When strict allocate is \fBno\fR the server does sparse disk block allocation when a file is extended\&.
+
+
+Setting this to \fByes\fR can help Samba return out of quota messages on systems that are restricting the disk quota of users\&.
+
+
+Default: \fBstrict allocate = no\fR
+
+
+.TP
+strict locking (S)
+This is a boolean that controls the handling of file locking in the server\&. When this is set to \fByes\fR, the server will check every read and write access for file locks, and deny access if locks exist\&. This can be slow on some systems\&.
+
+
+When strict locking is disabled, the server performs file lock checks only when the client explicitly asks for them\&.
+
+
+Well-behaved clients always ask for lock checks when it is important\&. So in the vast majority of cases, \fBstrict locking = no\fR is preferable\&.
+
+
+Default: \fBstrict locking = no\fR
+
+
+.TP
+strict sync (S)
+Many Windows applications (including the Windows 98 explorer shell) seem to confuse flushing buffer contents to disk with doing a sync to disk\&. Under UNIX, a sync call forces the process to be suspended until the kernel has ensured that all outstanding data in kernel disk buffers has been safely stored onto stable storage\&. This is very slow and should only be done rarely\&. Setting this parameter to \fBno\fR (the default) means that \fBsmbd\fR(8) ignores the Windows applications requ [...]
+
+
+See also the \fIsync always\fR parameter\&.
+
+
+Default: \fBstrict sync = no\fR
+
+
+.TP
+sync always (S)
+This is a boolean parameter that controls whether writes will always be written to stable storage before the write call returns\&. If this is \fBno\fR then the server will be guided by the client's request in each write call (clients can set a bit indicating that a particular write should be synchronous)\&. If this is \fByes\fR then every write will be followed by a \fBfsync() \fR call to ensure the data is written to disk\&. Note that the \fIstrict sync\fR parameter must be set to \fBye [...]
+
+
+See also the \fIstrict sync\fR parameter\&.
+
+
+Default: \fBsync always = no\fR
+
+
+.TP
+syslog (G)
+This parameter maps how Samba debug messages are logged onto the system syslog logging levels\&. Samba debug level zero maps onto syslog \fBLOG_ERR\fR, debug level one maps onto \fBLOG_WARNING\fR, debug level two maps onto \fBLOG_NOTICE\fR, debug level three maps onto LOG_INFO\&. All higher levels are mapped to \fB LOG_DEBUG\fR\&.
+
+
+This parameter sets the threshold for sending messages to syslog\&. Only messages with debug level less than this value will be sent to syslog\&.
+
+
+Default: \fBsyslog = 1\fR
+
+
+.TP
+syslog only (G)
+If this parameter is set then Samba debug messages are logged into the system syslog only, and not to the debug log files\&.
+
+
+Default: \fBsyslog only = no\fR
+
+
+.TP
+template homedir (G)
+When filling out the user information for a Windows NT user, the \fBwinbindd\fR(8) daemon uses this parameter to fill in the home directory for that user\&. If the string \fI%D\fR is present it is substituted with the user's Windows NT domain name\&. If the string \fI%U\fR is present it is substituted with the user's Windows NT user name\&.
+
+
+Default: \fBtemplate homedir = /home/%D/%U\fR
+
+
+.TP
+template primary group (G)
+This option defines the default primary group for each user created by \fBwinbindd\fR(8)'s local account management functions (similar to the 'add user script')\&.
+
+
+Default: \fBtemplate primary group = nobody\fR
+
+
+.TP
+template shell (G)
+When filling out the user information for a Windows NT user, the \fBwinbindd\fR(8) daemon uses this parameter to fill in the login shell for that user\&.
+
+
+Default: \fBtemplate shell = /bin/false\fR
+
+
+.TP
+time offset (G)
+This parameter is a setting in minutes to add to the normal GMT to local time conversion\&. This is useful if you are serving a lot of PCs that have incorrect daylight saving time handling\&.
+
+
+Default: \fBtime offset = 0\fR
+
+
+Example: \fBtime offset = 60\fR
+
+
+.TP
+time server (G)
+This parameter determines if \fBnmbd\fR(8) advertises itself as a time server to Windows clients\&.
+
+
+Default: \fBtime server = no\fR
+
+
+.TP
+timestamp logs (G)
+Synonym for \fI debug timestamp\fR\&.
+
+
+.TP
+unicode (G)
+Specifies whether Samba should try to use unicode on the wire by default\&. Note: This does NOT mean that samba will assume that the unix machine uses unicode!
+
+
+Default: \fBunicode = yes\fR
+
+
+.TP
+unix charset (G)
+Specifies the charset the unix machine Samba runs on uses\&. Samba needs to know this in order to be able to convert text to the charsets other SMB clients use\&.
+
+
+Default: \fBunix charset = UTF8\fR
+
+
+Example: \fBunix charset = ASCII\fR
+
+
+.TP
+unix extensions (G)
+This boolean parameter controls whether Samba implments the CIFS UNIX extensions, as defined by HP\&. These extensions enable Samba to better serve UNIX CIFS clients by supporting features such as symbolic links, hard links, etc\&.\&.\&. These extensions require a similarly enabled client, and are of no current use to Windows clients\&.
+
+
+Default: \fBunix extensions = yes\fR
+
+
+.TP
+unix password sync (G)
+This boolean parameter controls whether Samba attempts to synchronize the UNIX password with the SMB password when the encrypted SMB password in the smbpasswd file is changed\&. If this is set to \fByes\fR the program specified in the \fIpasswd program\fRparameter is called \fBAS ROOT\fR - to allow the new UNIX password to be set without access to the old UNIX password (as the SMB password change code has no access to the old password cleartext, only the new)\&.
+
+
+See also \fIpasswd program\fR, \fI passwd chat\fR\&.
+
+
+Default: \fBunix password sync = no\fR
+
+
+.TP
+update encrypted (G)
+This boolean parameter allows a user logging on with a plaintext password to have their encrypted (hashed) password in the smbpasswd file to be updated automatically as they log on\&. This option allows a site to migrate from plaintext password authentication (users authenticate with plaintext password over the wire, and are checked against a UNIX account database) to encrypted password authentication (the SMB challenge/response authentication mechanism) without forcing all users to re-e [...]
+
+
+In order for this parameter to work correctly the \fIencrypt passwords\fR parameter must be set to \fBno\fR when this parameter is set to \fByes\fR\&.
+
+
+Note that even when this parameter is set a user authenticating to \fBsmbd\fR must still enter a valid password in order to connect correctly, and to update their hashed (smbpasswd) passwords\&.
+
+
+Default: \fBupdate encrypted = no\fR
+
+
+.TP
+use client driver (S)
+This parameter applies only to Windows NT/2000 clients\&. It has no effect on Windows 95/98/ME clients\&. When serving a printer to Windows NT/2000 clients without first installing a valid printer driver on the Samba host, the client will be required to install a local printer driver\&. From this point on, the client will treat the print as a local printer and not a network printer connection\&. This is much the same behavior that will occur when \fBdisable spoolss = yes\fR\&.
+
+
+The differentiating factor is that under normal circumstances, the NT/2000 client will attempt to open the network printer using MS-RPC\&. The problem is that because the client considers the printer to be local, it will attempt to issue the OpenPrinterEx() call requesting access rights associated with the logged on user\&. If the user possesses local administator rights but not root privilegde on the Samba host (often the case), the OpenPrinterEx() call will fail\&. The result is that t [...]
+
+
+If this parameter is enabled for a printer, then any attempt to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped to PRINTER_ACCESS_USE instead\&. Thus allowing the OpenPrinterEx() call to succeed\&. \fBThis parameter MUST not be able enabled on a print share which has valid print driver installed on the Samba server\&.\fR
+
+
+See also \fIdisable spoolss\fR
+
+
+Default: \fBuse client driver = no\fR
+
+
+.TP
+use mmap (G)
+This global parameter determines if the tdb internals of Samba can depend on mmap working correctly on the running system\&. Samba requires a coherent mmap/read-write system memory cache\&. Currently only HPUX does not have such a coherent cache, and so this parameter is set to \fBno\fR by default on HPUX\&. On all other systems this parameter should be left alone\&. This parameter is provided to help the Samba developers track down problems with the tdb internal code\&.
+
+
+Default: \fBuse mmap = yes\fR
+
+
+.TP
+user (S)
+Synonym for \fIusername\fR\&.
+
+
+.TP
+username (S)
+Multiple users may be specified in a comma-delimited list, in which case the supplied password will be tested against each username in turn (left to right)\&.
+
+
+The \fIusername\fR line is needed only when the PC is unable to supply its own username\&. This is the case for the COREPLUS protocol or where your users have different WfWg usernames to UNIX usernames\&. In both these cases you may also be better using the \\\\server\\share%user syntax instead\&.
+
+
+The \fIusername\fR line is not a great solution in many cases as it means Samba will try to validate the supplied password against each of the usernames in the \fIusername\fR line in turn\&. This is slow and a bad idea for lots of users in case of duplicate passwords\&. You may get timeouts or security breaches using this parameter unwisely\&.
+
+
+Samba relies on the underlying UNIX security\&. This parameter does not restrict who can login, it just offers hints to the Samba server as to what usernames might correspond to the supplied password\&. Users can login as whoever they please and they will be able to do no more damage than if they started a telnet session\&. The daemon runs as the user that they log in as, so they cannot do anything that user cannot do\&.
+
+
+To restrict a service to a particular set of users you can use the \fIvalid users \fR parameter\&.
+
+
+If any of the usernames begin with a '@' then the name will be looked up first in the NIS netgroups list (if Samba is compiled with netgroup support), followed by a lookup in the UNIX groups database and will expand to a list of all users in the group of that name\&.
+
+
+If any of the usernames begin with a '+' then the name will be looked up only in the UNIX groups database and will expand to a list of all users in the group of that name\&.
+
+
+If any of the usernames begin with a '&' then the name will be looked up only in the NIS netgroups database (if Samba is compiled with netgroup support) and will expand to a list of all users in the netgroup group of that name\&.
+
+
+Note that searching though a groups database can take quite some time, and some clients may time out during the search\&.
+
+
+See the section NOTE ABOUT USERNAME/PASSWORD VALIDATION for more information on how this parameter determines access to the services\&.
+
+
+Default: \fBThe guest account if a guest service, else <empty string>.\fR
+
+
+Examples:\fBusername = fred, mary, jack, jane, @users, @pcgroup\fR
+
+
+.TP
+username level (G)
+This option helps Samba to try and 'guess' at the real UNIX username, as many DOS clients send an all-uppercase username\&. By default Samba tries all lowercase, followed by the username with the first letter capitalized, and fails if the username is not found on the UNIX machine\&.
+
+
+If this parameter is set to non-zero the behavior changes\&. This parameter is a number that specifies the number of uppercase combinations to try while trying to determine the UNIX user name\&. The higher the number the more combinations will be tried, but the slower the discovery of usernames will be\&. Use this parameter when you have strange usernames on your UNIX machine, such as \fBAstrangeUser \fR\&.
+
+
+Default: \fBusername level = 0\fR
+
+
+Example: \fBusername level = 5\fR
+
+
+.TP
+username map (G)
+This option allows you to specify a file containing a mapping of usernames from the clients to the server\&. This can be used for several purposes\&. The most common is to map usernames that users use on DOS or Windows machines to those that the UNIX box uses\&. The other is to map multiple users to a single username so that they can more easily share files\&.
+
+
+The map file is parsed line by line\&. Each line should contain a single UNIX username on the left then a '=' followed by a list of usernames on the right\&. The list of usernames on the right may contain names of the form @group in which case they will match any UNIX username in that group\&. The special client name '*' is a wildcard and matches any name\&. Each line of the map file may be up to 1023 characters long\&.
+
+
+The file is processed on each line by taking the supplied username and comparing it with each username on the right hand side of the '=' signs\&. If the supplied name matches any of the names on the right hand side then it is replaced with the name on the left\&. Processing then continues with the next line\&.
+
+
+If any line begins with a '#' or a ';' then it is ignored
+
+
+If any line begins with an '!' then the processing will stop after that line if a mapping was done by the line\&. Otherwise mapping continues with every line being processed\&. Using '!' is most useful when you have a wildcard mapping line later in the file\&.
+
+
+For example to map from the name \fBadmin\fR or \fBadministrator\fR to the UNIX name \fB root\fR you would use:
+
+
+\fBroot = admin administrator\fR
+
+
+Or to map anyone in the UNIX group \fBsystem\fR to the UNIX name \fBsys\fR you would use:
+
+
+\fBsys = @system\fR
+
+
+You can have as many mappings as you like in a username map file\&.
+
+
+If your system supports the NIS NETGROUP option then the netgroup database is checked before the \fI/etc/group \fR database for matching groups\&.
+
+
+You can map Windows usernames that have spaces in them by using double quotes around the name\&. For example:
+
+
+\fBtridge = "Andrew Tridgell"\fR
+
+
+would map the windows username "Andrew Tridgell" to the unix username "tridge"\&.
+
+
+The following example would map mary and fred to the unix user sys, and map the rest to guest\&. Note the use of the '!' to tell Samba to stop processing if it gets a match on that line\&.
+
+
+.nf
+
+!sys = mary fred
+guest = *
+.fi
+
+
+Note that the remapping is applied to all occurrences of usernames\&. Thus if you connect to \\\\server\\fred and \fB fred\fR is remapped to \fBmary\fR then you will actually be connecting to \\\\server\\mary and will need to supply a password suitable for \fBmary\fR not \fBfred\fR\&. The only exception to this is the username passed to the \fI password server\fR (if you have one)\&. The password server will receive whatever username the client supplies without modification\&.
+
+
+Also note that no reverse mapping is done\&. The main effect this has is with printing\&. Users who have been mapped may have trouble deleting print jobs as PrintManager under WfWg will think they don't own the print job\&.
+
+
+Default: \fBno username map\fR
+
+
+Example: \fBusername map = /usr/local/samba/lib/users.map\fR
+
+
+.TP
+users (S)
+Synonym for \fI username\fR\&.
+
+
+.TP
+use sendfile (S)
+If this parameter is \fByes\fR, and Samba was built with the --with-sendfile-support option, and the underlying operating system supports sendfile system call, then some SMB read calls (mainly ReadAndX and ReadRaw) will use the more efficient sendfile system call for files that are exclusively oplocked\&. This may make more efficient use of the system CPU's and cause Samba to be faster\&. This is off by default as it's effects are unknown as yet\&.
+
+
+Default: \fBuse sendfile = no\fR
+
+
+.TP
+use spnego (G)
+This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000 clients to agree upon an authentication mechanism\&. Unless further issues are discovered with our SPNEGO implementation, there is no reason this should ever be disabled\&.
+
+
+Default: \fBuse spnego = yes\fR
+
+
+.TP
+utmp (G)
+This boolean parameter is only available if Samba has been configured and compiled with the option \fB --with-utmp\fR\&. If set to \fByes\fR then Samba will attempt to add utmp or utmpx records (depending on the UNIX system) whenever a connection is made to a Samba server\&. Sites may use this to record the user connecting to a Samba share\&.
+
+
+Due to the requirements of the utmp record, we are required to create a unique identifier for the incoming user\&. Enabling this option creates an n^2 algorithm to find this number\&. This may impede performance on large installations\&.
+
+
+See also the \fI utmp directory\fR parameter\&.
+
+
+Default: \fButmp = no\fR
+
+
+.TP
+utmp directory (G)
+This parameter is only available if Samba has been configured and compiled with the option \fB --with-utmp\fR\&. It specifies a directory pathname that is used to store the utmp or utmpx files (depending on the UNIX system) that record user connections to a Samba server\&. See also the \fIutmp\fR parameter\&. By default this is not set, meaning the system will use whatever utmp file the native system is set to use (usually \fI/var/run/utmp\fR on Linux)\&.
+
+
+Default: \fBno utmp directory\fR
+
+
+Example: \fButmp directory = /var/run/utmp\fR
+
+
+.TP
+-valid (S)
+This parameter indicates whether a share is valid and thus can be used\&. When this parameter is set to false, the share will be in no way visible nor accessible\&.
+
+
+This option should not be used by regular users but might be of help to developers\&. Samba uses this option internally to mark shares as deleted\&.
+
+
+Default: \fBTrue\fR
+
+
+.TP
+valid users (S)
+This is a list of users that should be allowed to login to this service\&. Names starting with '@', '+' and '&' are interpreted using the same rules as described in the \fIinvalid users\fR parameter\&.
+
+
+If this is empty (the default) then any user can login\&. If a username is in both this list and the \fIinvalid users\fR list then access is denied for that user\&.
+
+
+The current servicename is substituted for \fI%S \fR\&. This is useful in the [homes] section\&.
+
+
+See also \fIinvalid users \fR
+
+
+Default: \fBNo valid users list (anyone can login) \fR
+
+
+Example: \fBvalid users = greg, @pcusers\fR
+
+
+.TP
+veto files (S)
+This is a list of files and directories that are neither visible nor accessible\&. Each entry in the list must be separated by a '/', which allows spaces to be included in the entry\&. '*' and '?' can be used to specify multiple files or directories as in DOS wildcards\&.
+
+
+Each entry must be a unix path, not a DOS path and must \fBnot\fR include the unix directory separator '/'\&.
+
+
+Note that the \fIcase sensitive\fR option is applicable in vetoing files\&.
+
+
+One feature of the veto files parameter that it is important to be aware of is Samba's behaviour when trying to delete a directory\&. If a directory that is to be deleted contains nothing but veto files this deletion will \fBfail\fR unless you also set the \fIdelete veto files\fR parameter to \fIyes\fR\&.
+
+
+Setting this parameter will affect the performance of Samba, as it will be forced to check all files and directories for a match as they are scanned\&.
+
+
+See also \fIhide files \fR and \fI case sensitive\fR\&.
+
+
+Default: \fBNo files or directories are vetoed\&. \fR
+
+
+Examples:
+.nf
+
+; Veto any files containing the word Security, 
+; any ending in \&.tmp, and any directory containing the
+; word root\&.
+veto files = /*Security*/*\&.tmp/*root*/
+
+; Veto the Apple specific files that a NetAtalk server
+; creates\&.
+veto files = /\&.AppleDouble/\&.bin/\&.AppleDesktop/Network Trash Folder/
+.fi
+
+
+.TP
+veto oplock files (S)
+This parameter is only valid when the \fIoplocks\fR parameter is turned on for a share\&. It allows the Samba administrator to selectively turn off the granting of oplocks on selected files that match a wildcarded list, similar to the wildcarded list used in the \fIveto files\fR parameter\&.
+
+
+Default: \fBNo files are vetoed for oplock grants\fR
+
+
+You might want to do this on files that you know will be heavily contended for by clients\&. A good example of this is in the NetBench SMB benchmark program, which causes heavy client contention for files ending in \fI\&.SEM\fR\&. To cause Samba not to grant oplocks on these files you would use the line (either in the [global] section or in the section for the particular NetBench share :
+
+
+Example: \fBveto oplock files = /*.SEM/\fR
+
+
+.TP
+vfs object (S)
+Synonym for \fIvfs objects\fR \&.
+
+
+.TP
+vfs objects (S)
+This parameter specifies the backend names which are used for Samba VFS I/O operations\&. By default, normal disk I/O operations are used but these can be overloaded with one or more VFS objects\&.
+
+
+Default: \fBno value\fR
+
+
+Example: \fBvfs objects = extd_audit recycle\fR
+
+
+.TP
+volume (S)
+This allows you to override the volume label returned for a share\&. Useful for CDROMs with installation programs that insist on a particular volume label\&.
+
+
+Default: \fBthe name of the share\fR
+
+
+.TP
+wide links (S)
+This parameter controls whether or not links in the UNIX file system may be followed by the server\&. Links that point to areas within the directory tree exported by the server are always allowed; this parameter controls access only to areas that are outside the directory tree being exported\&.
+
+
+Note that setting this parameter can have a negative effect on your server performance due to the extra system calls that Samba has to do in order to perform the link checks\&.
+
+
+Default: \fBwide links = yes\fR
+
+
+.TP
+winbind cache time (G)
+This parameter specifies the number of seconds the \fBwinbindd\fR(8) daemon will cache user and group information before querying a Windows NT server again\&.
+
+
+Default: \fBwinbind cache type = 300\fR
+
+
+.TP
+winbind enable local accounts (G)
+This parameter controls whether or not winbindd will act as a stand in replacement for the various account management hooks in smb\&.conf (e\&.g\&. 'add user script')\&. If enabled, winbindd will support the creation of local users and groups as another source of UNIX account information available via getpwnam() or getgrgid(), etc\&.\&.\&.
+
+
+Default: \fBwinbind enable local accounts = yes\fR
+
+
+.TP
+winbind enum groups (G)
+On large installations using \fBwinbindd\fR(8) it may be necessary to suppress the enumeration of groups through the \fBsetgrent()\fR, \fBgetgrent()\fR and \fBendgrent()\fR group of system calls\&. If the \fIwinbind enum groups\fR parameter is \fBno\fR, calls to the \fBgetgrent()\fR system call will not return any data\&.
+
+
+\fBWarning:\fR Turning off group enumeration may cause some programs to behave oddly\&.
+
+
+Default: \fBwinbind enum groups = yes \fR
+
+
+.TP
+winbind enum users (G)
+On large installations using \fBwinbindd\fR(8) it may be necessary to suppress the enumeration of users through the \fBsetpwent()\fR, \fBgetpwent()\fR and \fBendpwent()\fR group of system calls\&. If the \fIwinbind enum users\fR parameter is \fBno\fR, calls to the \fBgetpwent\fR system call will not return any data\&.
+
+
+\fBWarning:\fR Turning off user enumeration may cause some programs to behave oddly\&. For example, the finger program relies on having access to the full user list when searching for matching usernames\&.
+
+
+Default: \fBwinbind enum users = yes \fR
+
+
+.TP
+winbind gid (G)
+This parameter is now an alias for \fBidmap gid\fR
+
+
+The winbind gid parameter specifies the range of group ids that are allocated by the \fBwinbindd\fR(8) daemon\&. This range of group ids should have no existing local or NIS groups within it as strange conflicts can occur otherwise\&.
+
+
+Default: \fBwinbind gid = <empty string>\fR
+
+
+Example: \fBwinbind gid = 10000-20000\fR
+
+
+.TP
+winbind separator (G)
+This parameter allows an admin to define the character used when listing a username of the form of \fIDOMAIN \fR\\\fIuser\fR\&. This parameter is only applicable when using the \fIpam_winbind\&.so\fR and \fInss_winbind\&.so\fR modules for UNIX services\&.
+
+
+Please note that setting this parameter to + causes problems with group membership at least on glibc systems, as the character + is used as a special character for NIS in /etc/group\&.
+
+
+Default: \fBwinbind separator = '\'\fR
+
+
+Example: \fBwinbind separator = +\fR
+
+
+.TP
+winbind trusted domains only (G)
+This parameter is designed to allow Samba servers that are members of a Samba controlled domain to use UNIX accounts distributed vi NIS, rsync, or LDAP as the uid's for winbindd users in the hosts primary domain\&. Therefore, the user 'SAMBA\\user1' would be mapped to the account 'user1' in /etc/passwd instead of allocating a new uid for him or her\&.
+
+
+Default: \fBwinbind trusted domains only = <no>\fR
+
+
+.TP
+winbind uid (G)
+This parameter is now an alias for \fBidmap uid\fR
+
+
+The winbind gid parameter specifies the range of user ids that are allocated by the \fBwinbindd\fR(8) daemon\&. This range of ids should have no existing local or NIS users within it as strange conflicts can occur otherwise\&.
+
+
+Default: \fBwinbind uid = <empty string>\fR
+
+
+Example: \fBwinbind uid = 10000-20000\fR
+
+
+.TP
+winbind use default domain (G)
+This parameter specifies whether the \fBwinbindd\fR(8) daemon should operate on users without domain component in their username\&. Users without a domain component are treated as is part of the winbindd server's own domain\&. While this does not benifit Windows users, it makes SSH, FTP and e-mail function in a way much closer to the way they would in a native unix system\&.
+
+
+Default: \fBwinbind use default domain = <no>\fR
+
+
+Example: \fBwinbind use default domain = yes\fR
+
+
+.TP
+wins hook (G)
+When Samba is running as a WINS server this allows you to call an external program for all changes to the WINS database\&. The primary use for this option is to allow the dynamic update of external name resolution databases such as dynamic DNS\&.
+
+
+The wins hook parameter specifies the name of a script or executable that will be called as follows:
+
+
+\fBwins_hook operation name nametype ttl IP_list\fR
+
+
+The first argument is the operation and is one of "add", "delete", or "refresh"\&. In most cases the operation can be ignored as the rest of the parameters provide sufficient information\&. Note that "refresh" may sometimes be called when the name has not previously been added, in that case it should be treated as an add\&.
+
+The second argument is the NetBIOS name\&. If the name is not a legal name then the wins hook is not called\&. Legal names contain only letters, digits, hyphens, underscores and periods\&.
+
+The third argument is the NetBIOS name type as a 2 digit hexadecimal number\&.
+
+The fourth argument is the TTL (time to live) for the name in seconds\&.
+
+The fifth and subsequent arguments are the IP addresses currently registered for that name\&. If this list is empty then the name should be deleted\&.
+
+An example script that calls the BIND dynamic DNS update program \fBnsupdate\fR is provided in the examples directory of the Samba source code\&.
+
+
+.TP
+wins partners (G)
+A space separated list of partners' IP addresses for WINS replication\&. WINS partners are always defined as push/pull partners as defining only one way WINS replication is unreliable\&. WINS replication is currently experimental and unreliable between samba servers\&.
+
+
+Default: \fBwins partners = \fR
+
+
+Example: \fBwins partners = 192.168.0.1 172.16.1.2\fR
+
+
+.TP
+wins proxy (G)
+This is a boolean that controls if \fBnmbd\fR(8) will respond to broadcast name queries on behalf of other hosts\&. You may need to set this to \fByes\fR for some older clients\&.
+
+
+Default: \fBwins proxy = no\fR
+
+
+.TP
+wins server (G)
+This specifies the IP address (or DNS name: IP address for preference) of the WINS server that \fBnmbd\fR(8) should register with\&. If you have a WINS server on your network then you should set this to the WINS server's IP\&.
+
+
+You should point this at your WINS server if you have a multi-subnetted network\&.
+
+
+If you want to work in multiple namespaces, you can give every wins server a 'tag'\&. For each tag, only one (working) server will be queried for a name\&. The tag should be seperated from the ip address by a colon\&.
+
+
+You need to set up Samba to point to a WINS server if you have multiple subnets and wish cross-subnet browsing to work correctly\&.
+
+See the ???\&.
+
+
+Default: \fBnot enabled\fR
+
+
+Example: \fBwins server = mary:192.9.200.1 fred:192.168.3.199 mary:192.168.2.61\fR
+
+
+For this example when querying a certain name, 192\&.19\&.200\&.1 will be asked first and if that doesn't respond 192\&.168\&.2\&.61\&. If either of those doesn't know the name 192\&.168\&.3\&.199 will be queried\&.
+
+
+Example: \fBwins server = 192.9.200.1 192.168.2.61\fR
+
+
+.TP
+wins support (G)
+This boolean controls if the \fBnmbd\fR(8) process in Samba will act as a WINS server\&. You should not set this to \fByes\fR unless you have a multi-subnetted network and you wish a particular \fBnmbd\fR to be your WINS server\&. Note that you should \fBNEVER\fR set this to \fByes\fR on more than one machine in your network\&.
+
+
+Default: \fBwins support = no\fR
+
+
+.TP
+workgroup (G)
+This controls what workgroup your server will appear to be in when queried by clients\&. Note that this parameter also controls the Domain name used with the \fBsecurity = domain\fR setting\&.
+
+
+Default: \fBset at compile time to WORKGROUP\fR
+
+
+Example: \fBworkgroup = MYGROUP\fR
+
+
+.TP
+writable (S)
+Synonym for \fI writeable\fR for people who can't spell :-)\&.
+
+
+.TP
+writeable (S)
+Inverted synonym for \fIread only\fR\&.
+
+
+.TP
+write cache size (S)
+If this integer parameter is set to non-zero value, Samba will create an in-memory cache for each oplocked file (it does \fBnot\fR do this for non-oplocked files)\&. All writes that the client does not request to be flushed directly to disk will be stored in this cache if possible\&. The cache is flushed onto disk when a write comes in whose offset would not fit into the cache or when the file is closed by the client\&. Reads for the file are also served from this cache if the data is st [...]
+
+
+This cache allows Samba to batch client writes into a more efficient write size for RAID disks (i\&.e\&. writes may be tuned to be the RAID stripe size) and can improve performance on systems where the disk subsystem is a bottleneck but there is free memory for userspace programs\&.
+
+
+The integer parameter specifies the size of this cache (per oplocked file) in bytes\&.
+
+
+Default: \fBwrite cache size = 0\fR
+
+
+Example: \fBwrite cache size = 262144\fR
+
+
+for a 256k cache size per file\&.
+
+
+.TP
+write list (S)
+This is a list of users that are given read-write access to a service\&. If the connecting user is in this list then they will be given write access, no matter what the \fIread only\fR option is set to\&. The list can include group names using the @group syntax\&.
+
+
+Note that if a user is in both the read list and the write list then they will be given write access\&.
+
+
+See also the \fIread list \fR option\&.
+
+
+Default: \fBwrite list = <empty string>\fR
+
+
+Example: \fBwrite list = admin, root, @staff\fR
+
+
+.TP
+write ok (S)
+Inverted synonym for \fIread only\fR\&.
+
+
+.TP
+write raw (G)
+This parameter controls whether or not the server will support raw write SMB's when transferring data from clients\&. You should never need to change this parameter\&.
+
+
+Default: \fBwrite raw = yes\fR
+
+
+.TP
+wtmp directory (G)
+This parameter is only available if Samba has been configured and compiled with the option \fB --with-utmp\fR\&. It specifies a directory pathname that is used to store the wtmp or wtmpx files (depending on the UNIX system) that record user connections to a Samba server\&. The difference with the utmp directory is the fact that user info is kept after a user has logged out\&.
+
+
+See also the \fIutmp\fR parameter\&. By default this is not set, meaning the system will use whatever utmp file the native system is set to use (usually \fI/var/run/wtmp\fR on Linux)\&.
+
+
+Default: \fBno wtmp directory\fR
+
+
+Example: \fBwtmp directory = /var/log/wtmp\fR
+
+
+.SH "WARNINGS"
+
+.PP
+Although the configuration file permits service names to contain spaces, your client software may not\&. Spaces will be ignored in comparisons anyway, so it shouldn't be a problem - but be aware of the possibility\&.
+
+.PP
+On a similar note, many clients - especially DOS clients - limit service names to eight characters\&. \fBsmbd\fR(8) has no such limitation, but attempts to connect from such clients will fail if they truncate the service names\&. For this reason you should probably keep your service names down to eight characters in length\&.
+
+.PP
+Use of the [homes] and [printers] special sections make life for an administrator easy, but the various combinations of default attributes can be tricky\&. Take extreme care when designing these sections\&. In particular, ensure that the permissions on spool directories are correct\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsamba\fR(7), \fBsmbpasswd\fR(8), \fBswat\fR(8), \fBsmbd\fR(8), \fBnmbd\fR(8), \fBsmbclient\fR(1), \fBnmblookup\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1)\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man5/smbpasswd.5 b/raw/man5/smbpasswd.5
new file mode 100644
index 0000000..75645d4
--- /dev/null
+++ b/raw/man5/smbpasswd.5
@@ -0,0 +1,111 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBPASSWD" 5 "" "" ""
+.SH NAME
+smbpasswd \- The Samba encrypted password file
+.SH "SYNOPSIS"
+
+.PP
+\fIsmbpasswd\fR
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+smbpasswd is the Samba encrypted password file\&. It contains the username, Unix user id and the SMB hashed passwords of the user, as well as account flag information and the time the password was last changed\&. This file format has been evolving with Samba and has had several different formats in the past\&.
+
+.SH "FILE FORMAT"
+
+.PP
+The format of the smbpasswd file used by Samba 2\&.2 is very similar to the familiar Unix \fIpasswd(5)\fR file\&. It is an ASCII file containing one line for each user\&. Each field ithin each line is separated from the next by a colon\&. Any entry beginning with '#' is ignored\&. The smbpasswd file contains the following information for each user:
+
+.TP
+name
+This is the user name\&. It must be a name that already exists in the standard UNIX passwd file\&.
+
+
+.TP
+uid
+This is the UNIX uid\&. It must match the uid field for the same user entry in the standard UNIX passwd file\&. If this does not match then Samba will refuse to recognize this smbpasswd file entry as being valid for a user\&.
+
+
+.TP
+Lanman Password Hash
+This is the LANMAN hash of the user's password, encoded as 32 hex digits\&. The LANMAN hash is created by DES encrypting a well known string with the user's password as the DES key\&. This is the same password used by Windows 95/98 machines\&. Note that this password hash is regarded as weak as it is vulnerable to dictionary attacks and if two users choose the same password this entry will be identical (i\&.e\&. the password is not "salted" as the UNIX password is)\&. If the user has a n [...]
+
+
+\fBWARNING !!\fR Note that, due to the challenge-response nature of the SMB/CIFS authentication protocol, anyone with a knowledge of this password hash will be able to impersonate the user on the network\&. For this reason these hashes are known as \fBplain text equivalents\fR and must \fBNOT\fR be made available to anyone but the root user\&. To protect these passwords the smbpasswd file is placed in a directory with read and traverse access only to the root user and the smbpasswd file  [...]
+
+
+.TP
+NT Password Hash
+This is the Windows NT hash of the user's password, encoded as 32 hex digits\&. The Windows NT hash is created by taking the user's password as represented in 16-bit, little-endian UNICODE and then applying the MD4 (internet rfc1321) hashing algorithm to it\&.
+
+
+This password hash is considered more secure than the LANMAN Password Hash as it preserves the case of the password and uses a much higher quality hashing algorithm\&. However, it is still the case that if two users choose the same password this entry will be identical (i\&.e\&. the password is not "salted" as the UNIX password is)\&.
+
+
+\fBWARNING !!\fR\&. Note that, due to the challenge-response nature of the SMB/CIFS authentication protocol, anyone with a knowledge of this password hash will be able to impersonate the user on the network\&. For this reason these hashes are known as \fBplain text equivalents\fR and must \fBNOT\fR be made available to anyone but the root user\&. To protect these passwords the smbpasswd file is placed in a directory with read and traverse access only to the root user and the smbpasswd fi [...]
+
+
+.TP
+Account Flags
+This section contains flags that describe the attributes of the users account\&. In the Samba 2\&.2 release this field is bracketed by '[' and ']' characters and is always 13 characters in length (including the '[' and ']' characters)\&. The contents of this field may be any of the following characters:
+
+
+\fBU\fR - This means this is a "User" account, i\&.e\&. an ordinary user\&. Only User and Workstation Trust accounts are currently supported in the smbpasswd file\&.
+
+\fBN\fR - This means the account has no password (the passwords in the fields LANMAN Password Hash and NT Password Hash are ignored)\&. Note that this will only allow users to log on with no password if the \fI null passwords\fR parameter is set in the \fBsmb.conf\fR(5) config file\&.
+
+\fBD\fR - This means the account is disabled and no SMB/CIFS logins will be allowed for this user\&.
+
+\fBW\fR - This means this account is a "Workstation Trust" account\&. This kind of account is used in the Samba PDC code stream to allow Windows NT Workstations and Servers to join a Domain hosted by a Samba PDC\&.
+
+Other flags may be added as the code is extended in future\&. The rest of this field space is filled in with spaces\&.
+
+
+.TP
+Last Change Time
+This field consists of the time the account was last modified\&. It consists of the characters 'LCT-' (standing for "Last Change Time") followed by a numeric encoding of the UNIX time in seconds since the epoch (1970) that the last change was made\&.
+
+
+.PP
+All other colon separated fields are ignored at this time\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbpasswd\fR(8), \fBSamba\fR(7), and the Internet RFC1321 for details on the MD4 algorithm\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man5/svnserve.conf.5 b/raw/man5/svnserve.conf.5
new file mode 100644
index 0000000..0e0f6da
--- /dev/null
+++ b/raw/man5/svnserve.conf.5
@@ -0,0 +1,72 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnserve.conf 5
+.SH NAME
+svnserve.conf \- Repository configuration file for svnserve
+.SH SYNOPSIS
+.TP
+\fIrepository-path\fP\fB/conf/svnserve.conf\fP
+.SH DESCRIPTION
+\fBsvnserve.conf\fP controls the behavior of the \fBsvnserve\fP daemon
+on a per-repository basis.  It is located in the \fBconf\fP
+subdirectory of the repository.
+.PP
+The overall structure of the file is the same as the structure of
+Subversion user configuration files.  At the top level are sections,
+which are specified by words in square brackets; inside each section
+are variable definitions of the form "variable = value".  Lines
+beginning with '#' are ignored.  \fBsvnserve.conf\fP currently uses
+only one section named "general", and supports the following
+variables:
+.PP
+.TP 5
+\fBanon-access\fP = \fBnone\fP|\fBread\fP|\fBwrite\fP
+Determines the access level for unauthenticated users.  \fBwrite\fP
+access allows all repository operations.  \fBread\fP access allows all
+operations except committing and changing revision properties.
+\fBnone\fP access allows no access.  The default level is \fBread\fP.
+.PP
+.TP 5
+\fBauth-access\fP = \fBnone\fP|\fBread\fP|\fBwrite\fP
+Determines the access level for authenticated users, using the same
+access levels as above.  The default level is \fBwrite\fP.
+.PP
+.TP 5
+\fBpassword-db\fP = \fIfilename\fP
+Sets the location of the password database.  \fIfilename\fP may be
+relative to the repository conf directory.  There is no default value.
+The password database has the same overall format as this file.  It
+uses only one section "users"; each variable within the section is a
+username, and each value is a password.
+.PP
+.TP 5
+\fBrealm\fP = \fIrealm\-name\fP
+Sets the authentication realm of the repository.  If two repositories
+have the same password database, they should have the same realm, and
+vice versa; this association allows clients to use a single cached
+password for several repositories.  The default realm value is the
+path to the repository, relative to the server process's virtual
+repository root.
+.SH EXAMPLE
+The following example \fBsvnserve.conf\fP allows read access for
+authenticated users, no access for anonymous users, points to a passwd
+database in the same directory, and defines a realm name.
+.PP
+.nf
+ [general]
+ anon-access = none
+ auth-access = read
+ password-db = passwd
+ realm = My First Repository
+.fi
+.PP
+The file "passwd" would look like:
+.PP
+.nf
+ [users]
+ joeuser = joepassword
+ jayrandom = randomjay
+.fi
+.SH SEE ALSO
+.BR svnserve (8)
diff --git a/raw/man5/termcap.5 b/raw/man5/termcap.5
new file mode 100644
index 0000000..4883fba
--- /dev/null
+++ b/raw/man5/termcap.5
@@ -0,0 +1,453 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified formatting Sat Jul 24 17:13:38 1993, Rik Faith (faith at cs.unc.edu)
+.\" Modified (extensions and corrections) Sun May  1 14:21:25 MET DST 1994 Michael Haardt
+.\"   If mistakes in the capabilities are found, please send a bug report to:
+.\"   michael at moria.de
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr at thyrsus.com)
+.TH TERMCAP 5 "" "Linux" "Linux Programmer's Manual"
+.SH NAME
+termcap \- terminal capability database
+.SH DESCRIPTION
+The termcap database is an obsolete facility for describing the
+capabilities of character-cell terminals and printers.  It is retained
+only for capability with old programs; new ones should use the 
+.BR terminfo (5)
+database and associated libraries.
+.LP
+.B /etc/termcap
+is an ASCII file (the database master) that lists the capabilities of
+many different types of terminals.  Programs can read termcap to find
+the particular escape codes needed to control the visual attributes of
+the terminal actually in use.  (Other aspects of the terminal are
+handled by stty.)  The termcap database is indexed on the TERM
+environment variable.
+.LP
+Termcap entries must be defined on a single logical line, with `\\'
+used to suppress the newline.  Fields are separated by `:'.  The first
+field of each entry starts at the left-hand margin, and contains a list
+of names for the terminal, separated by '|'.
+.LP
+The first subfield may (in BSD termcap entries from versions 4.3 and
+prior) contain a short name consisting of two characters.  This short
+name may consist of capital or small letters.  In 4.4BSD termcap
+entries this field is omitted.
+.LP
+The second subfield (first, in the newer 4.4BSD format) contains the
+name used by the environment variable TERM.  It should be spelled in
+lowercase letters.  Selectable hardware capabilities should be marked
+by appending a hyphen and a suffix to this name.  See below for an
+example.  Usual suffixes are w (more than 80 characters wide), am
+(automatic margins), nam (no automatic margins), and rv (reverse video
+display).  The third subfield contains a long and descriptive name for
+this termcap entry.
+.LP
+Subsequent fields contain the terminal capabilities; any continued
+capability lines must be indented one tab from the left margin.
+.LP
+Although there is no defined order, it is suggested to write first
+boolean, then numeric, and then string capabilities, each sorted
+alphabetically without looking at lower or upper spelling.  Capabilities
+of similar functions can be written in one line.
+.LP
+.nf
+Example for:
+.sp
+Head line: vt|vt101|DEC VT 101 terminal in 80 character mode:\e
+Head line: Vt|vt101-w|DEC VT 101 terminal in (wide) 132 character mode:\e
+Boolean: :bs:\e
+Numeric: :co#80:\e
+String: :sr=\eE[H:\e
+.SS "Boolean Capabilities"
+.nf
+5i	Printer will not echo on screen
+am	Automatic margins which means automatic line wrap
+bs	Control-H (8 dec.) performs a backspace
+bw	Backspace on left margin wraps to previous line and right margin
+da	Display retained above screen
+db	Display retained below screen
+eo	A space erases all characters at cursor position
+es	Escape sequences and special characters work in status line
+gn	Generic device
+hc	This is a hardcopy terminal
+HC	The cursor is hard to see when not on bottom line
+hs	Has a status line
+hz	Hazeltine bug, the terminal can not print tilde characters
+in	Terminal inserts nulls, not spaces, to fill whitespace
+km	Terminal has a meta key
+mi	Cursor movement works in insert mode
+ms	Cursor movement works in standout/underline mode
+NP	No pad character
+NR	ti does not reverse te
+nx	No padding, must use XON/XOFF
+os	Terminal can overstrike
+ul	Terminal underlines although it can not overstrike
+xb	Beehive glitch, f1 sends ESCAPE, f2 sends ^C
+xn	Newline/wraparound glitch
+xo	Terminal uses xon/xoff protocol
+xs	Text typed over standout text will be displayed in standout
+xt	Teleray glitch, destructive tabs and odd standout mode
+.fi
+.SS "Numeric Capabilities"
+.nf
+co	Number of columns
+dB	Delay in milliseconds for backspace on hardcopy terminals
+dC	Delay in milliseconds for carriage return on hardcopy terminals
+dF	Delay in milliseconds for form feed on hardcopy terminals
+dN	Delay in milliseconds for new line on hardcopy terminals
+dT	Delay in milliseconds for tabulator stop on hardcopy terminals
+dV	Delay in milliseconds for vertical tabulator stop on hardcopy terminals
+it	Difference between tab positions
+lh	Height of soft labels
+lm	Lines of memory
+lw	Width of soft labels
+li	Number of lines
+Nl	Number of soft labels
+pb	Lowest baud rate which needs padding
+sg	Standout glitch
+ug	Underline glitch
+vt	virtual terminal number
+ws	Width of status line if different from screen width
+.fi
+.SS "String Capabilities"
+.nf
+!1	shifted save key
+!2	shifted suspend key
+!3	shifted undo key
+#1	shifted help key
+#2	shifted home key
+#3	shifted input key
+#4	shifted cursor left key
+%0	redo key
+%1	help key
+%2	mark key
+%3	message key
+%4	move key
+%5	next-object key
+%6	open key
+%7	options key
+%8	previous-object key
+%9	print key
+%a	shifted message key
+%b	shifted move key
+%c	shifted next key
+%d	shifted options key
+%e	shifted previous key
+%f	shifted print key
+%g	shifted redo key
+%h	shifted replace key
+%i	shifted cusor right key
+%j	shifted resume key
+&0	shifted cancel key
+&1	reference key
+&2	refresh key
+&3	replace key
+&4	restart key
+&5	resume key
+&6	save key
+&7	suspend key
+&8	undo key
+&9	shifted begin key
+*0	shifted find key
+*1	shifted command key
+*2	shifted copy key
+*3	shifted create key
+*4	shifted delete character
+*5	shifted delete line
+*6	select key
+*7	shifted end key
+*8	shifted clear line key
+*9	shifted exit key
+ at 0	find key
+ at 1	begin key
+ at 2	cancel key
+ at 3	close key
+ at 4	command key
+ at 5	copy key
+ at 6	create key
+ at 7	end key
+ at 8	enter/send key
+ at 9	exit key
+al	Insert one line
+AL	Indert %1 lines
+ac	Pairs of block graphic characters to map alternate character set
+ae	End alternative character set
+as	Start alternative character set for block graphic characters
+bc	Backspace, if not ^H
+bl	Audio bell
+bt	Move to previous tab stop
+cb	Clear from beginning of line to cursor
+cc	Dummy command character
+cd	Clear to end of screen
+ce	Clear to end of line
+ch	Move cursor horizontally only to column %1
+cl	Clear screen and cursor home
+cm	Cursor move to row %1 and column %2 (on screen)
+CM	Move cursor to row %1 and column %2 (in memory)
+cr	Carriage return
+cs	Scroll region from line %1 to %2
+ct	Clear tabs
+cv	Move cursor vertically only to line %1
+dc	Delete one character
+DC	Delete %1 characters
+dl	Delete one line
+DL	Delete %1 lines
+dm	Begin delete mode
+do	Cursor down one line
+DO	Cursor down #1 lines
+ds	Disable status line
+eA	Enable alternate character set
+ec	Erase %1 characters starting at cursor
+ed	End delete mode
+ei	End insert mode
+ff	Formfeed character on hardcopy terminals
+fs	Return character to its position before going to status line
+F1	The string sent by function key f11
+F2	The string sent by function key f12
+F3	The string sent by function key f13
+\&...	\&...
+F9	The string sent by function key f19
+FA	The string sent by function key f20
+FB	The string sent by function key f21
+\&...	\&...
+FZ	The string sent by function key f45
+Fa	The string sent by function key f46
+Fb	The string sent by function key f47
+\&...	\&...
+Fr	The string sent by function key f63
+hd	Move cursor a half line down
+ho	Cursor home
+hu	Move cursor a half line up
+i1	Initialization string 1 at login
+i3	Initialization string 3 at login
+is	Initialization string 2 at login
+ic	Insert one character
+IC	Insert %1 characters
+if	Initialization file
+im	Begin insert mode
+ip	Insert pad time and needed special characters after insert
+iP	Initialization program
+K1	upper left key on keypad
+K2	center key on keypad
+K3	upper right key on keypad
+K4	bottom left key on keypad
+K5	bottom right key on keypad
+k0	Function key 0
+k1	Function key 1
+k2	Function key 2
+k3	Function key 3
+k4	Function key 4
+k5	Function key 5
+k6	Function key 6
+k7	Function key 7
+k8	Function key 8
+k9	Function key 9
+k;	Function key 10
+ka	Clear all tabs key
+kA	Insert line key
+kb	Backspace key
+kB	Back tab stop
+kC	Clear screen key
+kd	Cursor down key
+kD	Key for delete character under cursor
+ke	turn keypad off
+kE	Key for clear to end of line
+kF	Key for scolling forward/down
+kh	Cursor home key
+kH	Cursor hown down key
+kI	Insert character/Insert mode key
+kl	Cursor left key
+kL	Key for delete line
+kM	Key for exit insert mode
+kN	Key for next page
+kP	Key for previous page
+kr	Cursor right key
+kR	Key for scolling backward/up
+ks	Turn keypad on
+kS	Clear to end of screen key
+kt	Clear this tab key
+kT	Set tab here key
+ku	Cursor up key
+l0	Label of zeroth function key, if not f0
+l1	Label of first function key, if not f1
+l2	Label of first function key, if not f2
+\&...	\&...
+la	Label of tenth function key, if not f10
+le	Cursor left one character
+ll	Move cursor to lower left corner
+LE	Cursor left %1 characters
+LF	Turn soft labels off
+LO	Turn soft labels on
+mb	Start blinking
+MC	Clear soft margins
+md	Start bold mode
+me	End all mode like so, us, mb, md and mr
+mh	Start half bright mode
+mk	Dark mode (Characters invisible)
+ML	Set left soft margin
+mm	Put terminal in meta mode
+mo	Put terminal out of meta mode
+mp	Turn on protected attribute
+mr	Start reverse mode
+MR	Set right soft margin
+nd	Cursor right one character
+nw	Carriage return command
+pc	Padding character
+pf	Turn printer off
+pk	Program key %1 to send string %2 as if typed by user
+pl	Program key %1 to execute string %2 in local mode
+pn	Program soft label %1 to to show string %2
+po	Turn the printer on
+pO	Turn the printer on for %1 (<256) bytes
+ps	Print screen contents on printer
+px	Program key %1 to send string %2 to computer
+r1	Reset string 1 to set terminal to sane modes
+r2	Reset string 2 to set terminal to sane modes
+r3	Reset string 3 to set terminal to sane modes
+RA	disable automatic margins
+rc	Restore saved cursor position
+rf	Reset string file name
+RF	Request for input from terminal
+RI	Cursor right %1 characters
+rp	Repeat character %1 for %2 times
+rP	Padding after character sent in replace mode
+rs	Reset string
+RX	Turn off XON/XOFF flow control
+sa	Set %1 %2 %3 %4 %5 %6 %7 %8 %9 attributes
+SA	enable automatic margins
+sc	Save cursor position
+se	End standout mode
+sf	Normal scroll one line
+SF	Normal scroll %1 lines
+so	Start standout mode
+sr	Reverse scroll
+SR	scroll back %1 lines
+st	Set tabulator stop in all rows at current column
+SX	Turn on XON/XOFF flow control
+ta	move to next hardware tab
+tc	Read in terminal description from another entry
+te	End program that uses cursor motion
+ti	Begin program that uses cursor motion
+ts	Move cursor to column %1 of status line
+uc	Underline character under cursor and move cursor right
+ue	End underlining
+up	Cursor up one line
+UP	Cursor up %1 lines
+us	Start underlining
+vb	Visible bell
+ve	Normal cursor visible
+vi	Cursor unvisible
+vs	Standout cursor
+wi	Set window from line %1 to %2 and column %3 to %4
+XF	XOFF character if not ^S
+.fi
+.LP
+There are several ways of defining the control codes for string capabilities:
+.LP
+Normal Characters except '^','\e' and '%' repesent themself.
+.LP
+A '^x' means Control-x.  Control-A equals 1 decimal.
+.LP
+\ex means a special code.  x can be one of the following charaters:
+.RS
+E Escape (27)
+.br
+n Linefeed (10)
+.br
+r Carriage return (13)
+.br
+t Tabulation (9)
+.br
+b Backspace (8)
+.br
+f Form feed (12)
+.br
+0 Null character.  A \exxx specifies the octal character xxx.
+.RE
+.IP i
+Increments paramters by one.
+.IP r
+Single parameter capability
+.IP +
+Add value of next character to this parameter and do binary output
+.IP 2
+Do ASCII output of this parameter with a field with of 2
+.IP d
+Do ASCII output of this parameter with a field with of 3
+.IP %
+Print a '%'
+.LP
+If you use binary output, then you should avoid the null character
+because it terminates the string.  You should reset tabulator expansion
+if a tabulator can be the binary output of a parameter.
+.IP Warning:
+The above metacharacters for parameters may be wrong, they document Minix
+termcap which may not be compatible with Linux termcap.
+.LP
+The block graphic characters can be specified by three string capabilities:
+.IP as
+start the alternative charset
+.IP ae
+end it
+.IP ac
+pairs of characters.  The first character is the name of the block graphic
+symbol and the second characters is its definition.
+.LP
+The following names are available:
+.sp
+.nf
++	right arrow (>)
+,	left arrow (<)
+\&.	down arrow (v)
+0	full square (#)
+I	latern (#)
+-	upper arrow (^)
+\&'	rhombus (+)
+a	chess board (:)
+f	degree (')
+g	plus-minus (#)
+h	square (#)
+j	right bottom corner (+)
+k	right upper corner (+)
+l	left upper corner (+)
+m	left bottom corner (+)
+n	cross (+)
+o	upper horizontal line (-)
+q	middle horizontal line (-)
+s	bottom horizontal line (_)
+t	left tee (+)
+u	right tee (+)
+v	bottom tee (+)
+w	normal tee (+)
+x	vertical line (|)
+~	paragraph (???)
+.fi
+.sp
+The values in parentheses are suggested defaults which are used by curses,
+if the capabilities are missing.
+.SH "SEE ALSO"
+.BR termcap (3),
+.BR curses (3),
+.BR terminfo (5)
+
+
diff --git a/raw/man5/texinfo.5 b/raw/man5/texinfo.5
new file mode 100644
index 0000000..be4dc58
--- /dev/null
+++ b/raw/man5/texinfo.5
@@ -0,0 +1,49 @@
+.\" texinfo(5)
+.\" Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.TH TEXINFO 5 "GNU Texinfo" "FSF"
+.SH NAME
+texinfo \- software documentation system
+.SH DESCRIPTION
+Texinfo is a documentation system that uses a single source file to
+produce both online information and printed output.  It is primarily
+designed for writing software manuals.
+.PP
+For a full description of the Texinfo language and associated tools,
+please see the Texinfo manual (written in Texinfo itself).  Most likely,
+running this command from your shell:
+.RS
+.I info texinfo
+.RE
+or this key sequence from inside Emacs:
+.RS
+.I M-x info RET m texinfo RET
+.RE
+will get you there.
+.SH AVAILABILITY
+ftp://ftp.gnu.org/gnu/texinfo/
+.br
+or any GNU mirror site.
+.SH "REPORTING BUGS"
+Please send bug reports to bug-texinfo at gnu.org,
+general questions and discussion to help-texinfo at gnu.org.
+.SH "SEE ALSO"
+info(1), install-info(1), makeinfo(1), texi2dvi(1), texindex(1).
+.br
+emacs(1), tex(1).
+.br
+info(5).
diff --git a/raw/man5/ttytype.5 b/raw/man5/ttytype.5
new file mode 100644
index 0000000..6775bcc
--- /dev/null
+++ b/raw/man5/ttytype.5
@@ -0,0 +1,69 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sat Jul 24 17:17:50 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Thu Oct 19 21:25:21 MET 1995 by Martin Schulze <joey at infodrom.north.de>
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond
+.\" <esr at thyrsus.com>xk
+.TH TTYTYPE 5 1993-07-24 "Linux" "Linux Programmer's Manual"
+.SH NAME
+ttytype \- terminal device to default terminal type mapping
+.SH DESCRIPTION
+The 
+.I /etc/ttytype
+file associates termcap/terminfo terminal type names
+with tty lines.  Each line consists of a terminal type, followed by
+whitespace, followed by a tty name (a device name without the
+.IR /dev/ ") prefix."
+
+This association is used by the program 
+.BR tset (1)
+to set the environment variable TERM to the default terminal name for
+the user's current tty.
+
+This facility was designed for a traditional time-sharing environment
+featuring character-cell terminals hardwired to a Unix minicomputer.
+It is little used on modern workstation and personal Unixes.
+.SH EXAMPLE
+A typical
+.I /etc/ttytype
+is:
+.RS
+.sp
+con80x25 tty1
+.br
+vt320 ttys0
+.sp
+.RE
+.SH FILES
+.TP
+.I /etc/ttytype
+the tty definitions file.
+.SH "SEE ALSO"
+.BR getty (1),
+.BR terminfo (5),
+.BR termcap (5)
+
+
+
+
+
diff --git a/raw/man5/tzfile.5 b/raw/man5/tzfile.5
new file mode 100644
index 0000000..91f67ef
--- /dev/null
+++ b/raw/man5/tzfile.5
@@ -0,0 +1,138 @@
+.\" @(#)tzfile.5	7.11
+.\" This file is in the public domain, so clarified as of
+.\" 1996-06-05 by Arthur David Olson <arthur_david_olson at nih.gov>.
+.TH TZFILE 5
+.SH NAME
+tzfile \- time zone information
+.SH SYNOPSIS
+.B
+#include <tzfile.h>
+.SH DESCRIPTION
+The time zone information files used by
+.BR tzset (3)
+begin with the magic characters "TZif" to identify then as
+time zone information files,
+followed by sixteen bytes reserved for future use,
+followed by six four-byte values of type
+.BR long ,
+written in a ``standard'' byte order
+(the high-order byte of the value is written first).
+These values are,
+in order:
+.TP
+.I tzh_ttisgmtcnt
+The number of UTC/local indicators stored in the file.
+.TP
+.I tzh_ttisstdcnt
+The number of standard/wall indicators stored in the file.
+.TP
+.I tzh_leapcnt
+The number of leap seconds for which data is stored in the file.
+.TP
+.I tzh_timecnt
+The number of "transition times" for which data is stored
+in the file.
+.TP
+.I tzh_typecnt
+The number of "local time types" for which data is stored
+in the file (must not be zero).
+.TP
+.I tzh_charcnt
+The number of characters of "time zone abbreviation strings"
+stored in the file.
+.PP
+The above header is followed by
+.I tzh_timecnt
+four-byte values of type
+.BR long ,
+sorted in ascending order.
+These values are written in ``standard'' byte order.
+Each is used as a transition time (as returned by
+.BR time (2))
+at which the rules for computing local time change.
+Next come
+.I tzh_timecnt
+one-byte values of type
+.BR "unsigned char" ;
+each one tells which of the different types of ``local time'' types
+described in the file is associated with the same-indexed transition time.
+These values serve as indices into an array of
+.I ttinfo
+structures that appears next in the file;
+these structures are defined as follows:
+.in +.5i
+.sp
+.nf
+.ta .5i +\w'unsigned int\0\0'u
+struct ttinfo {
+	long	tt_gmtoff;
+	int	tt_isdst;
+	unsigned int	tt_abbrind;
+};
+.in -.5i
+.fi
+.sp
+Each structure is written as a four-byte value for
+.I tt_gmtoff
+of type
+.BR long ,
+in a standard byte order, followed by a one-byte value for
+.I tt_isdst
+and a one-byte value for
+.IR tt_abbrind .
+In each structure,
+.I tt_gmtoff
+gives the number of seconds to be added to UTC,
+.I tt_isdst
+tells whether
+.I tm_isdst
+should be set by
+.BR localtime (3),
+and
+.I tt_abbrind
+serves as an index into the array of time zone abbreviation characters
+that follow the
+.I ttinfo
+structure(s) in the file.
+.PP
+Then there are
+.I tzh_leapcnt
+pairs of four-byte values, written in standard byte order;
+the first value of each pair gives the time
+(as returned by
+.BR time (2))
+at which a leap second occurs;
+the second gives the
+.I total
+number of leap seconds to be applied after the given time.
+The pairs of values are sorted in ascending order by time.
+.PP
+Then there are
+.I tzh_ttisstdcnt
+standard/wall indicators, each stored as a one-byte value;
+they tell whether the transition times associated with local time types
+were specified as standard time or wall clock time,
+and are used when a time zone file is used in handling POSIX-style
+time zone environment variables.
+.PP
+Finally, there are
+.I tzh_ttisgmtcnt
+UTC/local indicators, each stored as a one-byte value;
+they tell whether the transition times associated with local time types
+were specified as UTC or local time,
+and are used when a time zone file is used in handling POSIX-style
+time zone environment variables.
+.PP
+.I Localtime
+uses the first standard-time
+.I ttinfo
+structure in the file
+(or simply the first
+.I ttinfo
+structure in the absence of a standard-time structure)
+if either
+.I tzh_timecnt
+is zero or the time argument is less than the first transition time recorded
+in the file.
+.\" .SH "SEE ALSO"
+.\" .BR newctime (3)
diff --git a/raw/man5/utmp.5 b/raw/man5/utmp.5
new file mode 100644
index 0000000..ab35d2b
--- /dev/null
+++ b/raw/man5/utmp.5
@@ -0,0 +1,226 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at cantor.informatik.rwth-aachen.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sun Jul 25 10:44:50 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Thu Feb 26 16:08:49 MET 1995 by Michael Haardt
+.\" Modified Sat Jul 20 14:39:03 MET DST 1996 by Michael Haardt
+.\" Modified Wed Jul  2 20:20:53 ART 1997 by Nicol?s Lichtmaier <nick at debian.org>
+.TH UTMP 5 1997-07-02 "" "File formats"
+.SH NAME
+utmp, wtmp \- login records
+.SH SYNOPSIS
+#include <utmp.h>
+.SH DESCRIPTION
+The
+.I utmp
+file allows one to discover information about who is currently using the
+system.  There may be more users currently using the system, because not
+all programs use utmp logging.
+.PP
+.B Warning:
+.I utmp
+must not be writable, because many system programs (foolishly)
+depend on its integrity.  You risk faked system logfiles and
+modifications of system files if you leave
+.I utmp
+writable to any user.
+.PP
+The file is a sequence of entries with the following structure declared
+in the include file (note that this is only one of several definitions
+around; details depend on the version of libc):
+.RS
+.nf
+.sp
+.ta 3i
+#define UT_UNKNOWN	0
+#define RUN_LVL		1
+#define BOOT_TIME	2
+#define NEW_TIME	3
+#define OLD_TIME	4
+#define INIT_PROCESS	5
+#define LOGIN_PROCESS	6
+#define USER_PROCESS	7
+#define DEAD_PROCESS	8
+#define ACCOUNTING	9
+
+#define UT_LINESIZE	12
+#define UT_NAMESIZE	32
+#define UT_HOSTSIZE	256
+
+struct exit_status {
+  short int e_termination;	/* process termination status.  */
+  short int e_exit;	/* process exit status.  */
+};
+
+struct utmp {
+  short ut_type;	/* type of login */
+  pid_t ut_pid;	/* pid of login process */
+  char ut_line[UT_LINESIZE];	/* device name of tty \- "/dev/" */
+  char ut_id[4];	/* init id or abbrev. ttyname */
+  char ut_user[UT_NAMESIZE];	/* user name */
+  char ut_host[UT_HOSTSIZE];	/* hostname for remote login */
+  struct exit_status ut_exit;	/* The exit status of a process
+	   marked as DEAD_PROCESS. */
+  long ut_session;	/* session ID, used for windowing*/
+  struct timeval ut_tv;	/* time entry was made.  */
+  int32_t ut_addr_v6[4];	/* IP address of remote host.  */
+  char pad[20];	/* Reserved for future use.  */
+};
+
+/* Backwards compatibility hacks.  */
+#define ut_name ut_user
+#ifndef _NO_UT_TIME
+#define ut_time ut_tv.tv_sec
+#endif
+#define ut_xtime ut_tv.tv_sec
+#define ut_addr ut_addr_v6[0]
+.sp
+.fi
+.RE
+This structure gives the name of the special file associated with the
+user's terminal, the user's login name, and the time of login in the form
+of
+.BR time (2).
+String fields are terminated by \fB'\e0'\fP if they are shorter than the size
+of the field.
+.PP
+The first entries ever created result from
+.BR init (8)
+processing
+.BR inittab (5).
+Before an entry is processed, though,
+.BR init (8)
+cleans up utmp by setting \fIut_type\fP to \fBDEAD_PROCESS\fP, clearing
+\fIut_user\fP, \fIut_host\fP, and \fIut_time\fP with null bytes for each
+record which \fIut_type\fP is not \fBDEAD_PROCESS\fP or \fBRUN_LVL\fP
+and where no process with PID \fIut_pid\fP exists.  If no empty record
+with the needed \fIut_id\fP can be found, init creates a new one.  It
+sets \fIut_id\fP from the inittab, \fIut_pid\fP and \fIut_time\fP to the
+current values, and \fIut_type\fP to \fBINIT_PROCESS\fP.
+.PP
+.BR getty (8)
+locates the entry by the pid, changes \fIut_type\fP to
+\fBLOGIN_PROCESS\fP, changes \fIut_time\fP, sets \fIut_line\fP, and waits
+for connection to be established.
+.BR login (8),
+after a user has been
+authenticated, changes \fIut_type\fP to \fBUSER_PROCESS\fP, changes
+\fIut_time\fP, and sets \fIut_host\fP and \fIut_addr\fP.  Depending on
+.BR getty (8)
+and
+.BR login (8),
+records may be located by
+\fIut_line\fP instead of the preferable \fIut_pid\fP.
+.PP
+When
+.BR init (8)
+finds that a process has exited, it locates its utmp
+entry by \fIut_pid\fP, sets \fIut_type\fP to \fBDEAD_PROCESS\fP, and
+clears \fIut_user\fP, \fIut_host\fP and \fIut_time\fP with null bytes.
+.PP
+.BR xterm (1)
+and other terminal emulators directly create a
+\fBUSER_PROCESS\fP record and generate the \fIut_id\fP by using the last
+two letters of \fI/dev/ttyp\fP\fI%c\fP or by using \fIp\fP\fI%d\fP for
+\fI/dev/pts/\fP\fI%d\fP.  If they find a \fBDEAD_PROCESS\fP for this id,
+they recycle it, otherwise they create a new entry.  If they can, they
+will mark it as \fBDEAD_PROCESS\fP on exiting and it is advised that
+they null \fIut_line\fP, \fIut_time\fP, \fIut_user\fP, and \fIut_host\fP
+as well.
+.PP
+\fIxdm\fP(8) should not create a utmp record, because there is no
+assigned terminal.  Letting it create one will result in errors, such
+as 'finger: cannot stat /dev/machine.dom'.  It should create wtmp entries,
+though, just like
+.BR ftpd (8)
+does.
+.PP
+.BR telnetd (8)
+sets up a \fBLOGIN_PROCESS\fP entry and leaves the rest to
+.BR login (8)
+as usual.  After the telnet session ends,
+.BR telnetd (8)
+cleans up utmp in the described way.
+.PP
+The \fIwtmp\fP file records all logins and logouts.  Its format is
+exactly like \fIutmp\fP except that a null user name indicates a logout
+on the associated terminal.  Furthermore, the terminal name \fB~\fP
+with user name \fBshutdown\fP or \fBreboot\fP indicates a system
+shutdown or reboot and the pair of terminal names \fB|\fP/\fB}\fP
+logs the old/new system time when
+.BR date (1)
+changes it.  \fIwtmp\fP is maintained by
+.BR login (1),
+.BR init (1),
+and some versions of
+.BR getty (1).
+Neither of these programs creates the file, so if it is
+removed, record-keeping is turned off.
+.SH FILES
+/var/run/utmp
+.br
+/var/log/wtmp
+.SH "CONFORMING TO"
+Linux utmp entries conform neither to v7/BSD nor to SYSV; they are a
+mix of the two.  v7/BSD has fewer fields; most importantly it lacks
+\fIut_type\fP, which causes native v7/BSD-like programs to display (for
+example) dead or login entries.  Further, there is no configuration file
+which allocates slots to sessions.  BSD does so because it lacks
+\fIut_id\fP fields.  In Linux (as in SYSV), the \fIut_id\fP field of a
+record will never change once it has been set, which reserves that slot
+without needing a configuration file.  Clearing \fIut_id\fP may result
+in race conditions leading to corrupted utmp entries and and potential
+security holes.  Clearing the above mentioned fields by filling them
+with null bytes is not required by SYSV semantics, but it allows to run
+many programs which assume BSD semantics and which do not modify utmp.
+Linux uses the BSD conventions for line contents, as documented above.
+.PP
+SYSV only uses the type field to mark them and logs informative messages
+such as e.g.\& \fB"new time"\fP in the line field. \fBUT_UNKNOWN\fP seems
+to be a Linux invention.
+SYSV has no \fIut_host\fP or \fIut_addr_v6\fP fields.
+.PP
+Unlike various other
+systems, where utmp logging can be disabled by removing the file, utmp
+must always exist on Linux.  If you want to disable \fIwho\fP(1) then
+do not make utmp world readable.
+.PP
+Note that the utmp struct from libc5 has changed in libc6. Because of this,
+binaries using the old libc5 struct will corrupt
+.IR /var/run/utmp " and/or " /var/log/wtmp .
+Debian systems include a patched libc5 which uses the new utmp format.
+The problem still exists with wtmp since it's accessed directly in
+libc5.
+.SH RESTRICTIONS
+The file format is machine dependent, so it is recommended that it be
+processed only on the machine architecture where it was created.
+.SH BUGS
+This manpage is based on the libc5 one, things may work differently now.
+.SH "SEE ALSO"
+.BR ac (1),
+.BR date (1),
+.BR getutent (3),
+.BR init (8),
+.BR last (1),
+.BR login (1),
+.BR updwtmp (3),
+.BR who (1)
diff --git a/raw/man6/zic2xpm.6 b/raw/man6/zic2xpm.6
new file mode 100644
index 0000000..9a6769d
--- /dev/null
+++ b/raw/man6/zic2xpm.6
@@ -0,0 +1,74 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" See section COPYING below.
+.TH zic2xpm 6 "11 Apr 1996" "zic2xpm 2.0" "Games"
+.SH NAME
+zic2xpm \- Tool to convert ZIICS chess pieces into XBoard (XPM/XIM) pieces.
+.SH SYNOPSIS
+zic2xpm
+.B file1 [file2 ...]
+.SH DESCRIPTION
+.B zic2xpm
+converts one or more ZIICS piece files into a format that can
+be used by XBoard.
+If you give more than one filename, be aware that multiple sets
+of the same size cannot exist in one directory. Multiple sets
+of different sizes can exist in a single directory.
+.SH EXAMPLE
+If you wanted to make a directory containing the sets SET2.V32,
+SET2.V40, SET2.V50, and SET2.V56, all of which are located in
+~/ziics, you could do:
+
+.nf
+      mkdir Sets
+      cd Sets
+      zic2xpm ~/ziics/SET2.*
+.fi
+
+You would then run XBoard like this:
+
+.nf
+     xboard -pixmap Sets
+.fi
+.SH BUGS
+Please report any bugs to
+.B frankm at hiwaay.net
+.SH "SEE ALSO"
+.BR
+.BR xboard ( 6 ).
+.SH AUTHOR
+Frank McIngvale (frankm at hiwaay.net)
+.SH COPYING
+Copyright (C) 1996 Free Software Foundation, Inc.
+.PP
+NOTICE: The piece images distributed with ZIICS are
+copyrighted works of their original creators.  Images 
+converted with zic2xpm may not be redistributed without
+the permission of the copyright holders.  Do not contact
+the authors of zic2xpm or of ZIICS itself to request
+permission. 
+.PP
+NOTICE:  The format of the ZIICS piece file was gleaned from
+SHOWSETS.PAS, a part of ZIICS.  Thanks to Andy McFarland
+(Zek on ICC) for making this source available!  ZIICS is a 
+completely separate and copyrighted work of Andy
+McFarland.  Use and distribution of ZIICS falls under the
+ZIICS license, NOT the GNU General Public License.
+.PP
+NOTICE: The format of the VGA imageblocks was determined
+by experimentation, and without access to any
+of Borland Inc.'s BGI library source code.
+.PP
+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 version.  However, the above notices
+MUST BE RETAINED in any copy that you redistribute or modify.
+.PP
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+.PP
+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., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
diff --git a/raw/man7/LDP.7 b/raw/man7/LDP.7
new file mode 100644
index 0000000..cffa0c4
--- /dev/null
+++ b/raw/man7/LDP.7
@@ -0,0 +1,87 @@
+.ig \"-*- nroff -*-
+Copyright (C) 2000 Stein Gjoen
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.TH "LDP Introduction" "ldp" 2001-11-15 "LDP"
+.SH NAME
+LDP \- Intro to the Linux Documentation Project, with help, guides and documents
+.SH SYNOPSIS
+The Linux Documentation Project (LDP) provides a variety of
+free documentation resources including
+guides, FAQs, HOWTOs, and man-pages to the Linux community.
+
+.SH AUTHORS
+The various documents in the LDP archives are maintained by individual
+authors, and are listed in the beginning of each HOWTO. If you have
+any questions or inputs to a document we encourage you to contact the
+authors directly.
+
+.SH "WEB PAGES"
+The LDP has its own dedicated web site as do many of
+the various translations projects which are linked from the
+main LDP web site at
+.RS
+\fBhttp://www\&.LinuxDoc\&.org/\fP
+.RE
+which you may wish to bookmark.
+
+.SH "MAN PAGES"
+A web page with status information for manual pages and translations
+is found at
+.RS
+\fBhttp://www\&.win\&.tue\&.nl/~aeb/linux/man/\fP
+.RE
+
+.SH "MAILING LISTS"
+LDP has a number of mailing lists, mostly of use to authors:
+.PP
+.PD 0
+.TP
+.PD
+\fB<ldp\-announce at lists\&.LinuxDoc\&.org>\fP
+Announcements from the LDP project
+.TP
+\fB<ldp\-discuss at lists\&.LinuxDoc\&.org>\fP
+General discussion on the LDP project
+.PP
+To join these lists send a mail with a body of "subscribe"
+to \fB<ldp\-announce\-request at lists\&.LinuxDoc\&.org>\fP
+or \fB<ldp\-discuss\-request at lists\&.LinuxDoc\&.org>\fP
+respectively. These mailing lists are also archived at the
+LinuxDoc site.
+
+.SH FILES
+Most distributions include the HOWTOs and mini-HOWTOs in the installation
+.PD 0
+.TP
+\fB/usr/doc/\fP                   (old place for documentation)
+.TP
+\fB/usr/share/doc/\fP             (new place for documentation)
+.TP
+\fB/usr/share/doc/HOWTO/\fP       (HOWTO files)
+.TP
+\fB/usr/share/doc/HOWTO/mini/\fP  (mini-HOWTO files)
+.PD
+.SH "SEE ALSO"
+.BR man (1),
+.BR xman (1x),
+.BR info (1)
+.PP
+\fBinfo\fP pages as read with
+.BR emacs (1)
+or
+.BR info (1)
diff --git a/raw/man7/abort.7 b/raw/man7/abort.7
new file mode 100644
index 0000000..977191a
--- /dev/null
+++ b/raw/man7/abort.7
@@ -0,0 +1,48 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ABORT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ABORT \- abort the current transaction
+
+.SH SYNOPSIS
+.sp
+.nf
+ABORT [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBABORT\fR rolls back the current transaction and causes
+all the updates made by the transaction to be discarded. 
+This command is identical
+in behavior to the standard SQL command
+ROLLBACK [\fBrollback\fR(7)],
+and is present only for historical reasons.
+.SH "PARAMETERS"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+Optional key words. They have no effect.
+.SH "NOTES"
+.PP
+Use COMMIT [\fBcommit\fR(7)] to
+successfully terminate a transaction.
+.PP
+Issuing \fBABORT\fR when not inside a transaction does
+no harm, but it will provoke a warning message.
+.SH "EXAMPLES"
+.PP
+To abort all changes:
+.sp
+.nf
+ABORT;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command is a PostgreSQL extension
+present for historical reasons. \fBROLLBACK\fR is the
+equivalent standard SQL command.
+.SH "SEE ALSO"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)], ROLLBACK [\fBrollback\fR(l)]
+
diff --git a/raw/man7/alter_aggregate.7 b/raw/man7/alter_aggregate.7
new file mode 100644
index 0000000..e08a014
--- /dev/null
+++ b/raw/man7/alter_aggregate.7
@@ -0,0 +1,43 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER AGGREGATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER AGGREGATE \- change the definition of an aggregate function
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER AGGREGATE \fIname\fR ( \fItype\fR ) RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER AGGREGATE\fR changes the definition of an
+aggregate function. The only currently available functionality is to
+rename the aggregate function.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing aggregate function.
+.TP
+\fB\fItype\fB\fR
+The argument data type of the aggregate function, or
+* if the function accepts any data type.
+.TP
+\fB\fInewname\fB\fR
+The new name of the aggregate function.
+.SH "EXAMPLES"
+.PP
+To rename the aggregate function myavg for type
+\fBinteger\fR to my_average:
+.sp
+.nf
+ALTER AGGREGATE myavg(integer) RENAME TO my_average;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBALTER AGGREGATE\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+CREATE AGGREGATE [\fBcreate_aggregate\fR(7)], DROP AGGREGATE [\fBdrop_aggregate\fR(l)]
+
diff --git a/raw/man7/alter_conversion.7 b/raw/man7/alter_conversion.7
new file mode 100644
index 0000000..ea39db0
--- /dev/null
+++ b/raw/man7/alter_conversion.7
@@ -0,0 +1,39 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER CONVERSION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER CONVERSION \- change the definition of a conversion
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER CONVERSION \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER CONVERSION\fR changes the definition of a
+conversion. The only currently available functionality is to rename the
+conversion.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing conversion.
+.TP
+\fB\fInewname\fB\fR
+The new name of the conversion.
+.SH "EXAMPLES"
+.PP
+To rename the conversion iso_8859_1_to_utf_8 to
+latin1_to_unicode:
+.sp
+.nf
+ALTER CONVERSION iso_8859_1_to_utf_8 RENAME TO latin1_to_unicode;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBALTER CONVERSION\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+CREATE CONVERSION [\fBcreate_conversion\fR(7)], DROP CONVERSION [\fBdrop_conversion\fR(l)]
+
diff --git a/raw/man7/alter_database.7 b/raw/man7/alter_database.7
new file mode 100644
index 0000000..c107e62
--- /dev/null
+++ b/raw/man7/alter_database.7
@@ -0,0 +1,79 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER DATABASE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER DATABASE \- change a database
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER DATABASE \fIname\fR SET \fIparameter\fR { TO | = } { \fIvalue\fR | DEFAULT }
+ALTER DATABASE \fIname\fR RESET \fIparameter\fR
+
+ALTER DATABASE \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER DATABASE\fR is used to change the attributes
+of a database.
+.PP
+The first two forms change the session default of a run-time
+configuration variable for a PostgreSQL
+database. Whenever a new session is subsequently started in that
+database, the specified value becomes the session default value.
+The database-specific default overrides whatever setting is present
+in \fIpostgresql.conf\fR or has been received from the
+\fBpostmaster\fR command line. Only the database
+owner or a superuser can change the session defaults for a
+database.
+.PP
+The third form changes the name of the database. Only the database
+owner can rename a database, and only if he has the
+CREATEDB privilege. The current database cannot
+be renamed. (Connect to a different database if you need to do
+that.)
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the database whose session defaults are to be altered.
+.TP
+\fB\fIparameter\fB\fR
+.TP
+\fB\fIvalue\fB\fR
+Set the session default for this database of the specified
+configuration parameter to the given value. If
+\fIvalue\fR is DEFAULT
+or, equivalently, RESET is used, the
+database-specific variable setting is removed and the system-wide
+default
+setting will be inherited in new sessions. Use RESET
+ALL to clear all settings.
+
+See SET [\fBset\fR(7)] and the section called ``Run-time Configuration'' in the documentation
+for more information about allowed parameter names
+and values.
+.TP
+\fB\fInewname\fB\fR
+The new name of the database.
+.SH "NOTES"
+.PP
+Using ALTER USER [\fBalter_user\fR(7)],
+it is also possible to tie a session default to a specific user
+rather than a database. User-specific settings override database-specific
+ones if there is a conflict.
+.SH "EXAMPLES"
+.PP
+To disable index scans by default in the database
+test:
+.sp
+.nf
+ALTER DATABASE test SET enable_indexscan TO off;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBALTER DATABASE\fR statement is a
+PostgreSQL extension.
+.SH "SEE ALSO"
+ALTER USER [\fBalter_user\fR(7)], CREATE DATABASE [\fBcreate_database\fR(l)], DROP DATABASE [\fBdrop_database\fR(l)], SET [\fBset\fR(l)]
+
diff --git a/raw/man7/alter_domain.7 b/raw/man7/alter_domain.7
new file mode 100644
index 0000000..f6b7603
--- /dev/null
+++ b/raw/man7/alter_domain.7
@@ -0,0 +1,111 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER DOMAIN \- change the definition of a domain
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER DOMAIN \fIname\fR
+    { SET DEFAULT \fIexpression\fR | DROP DEFAULT }
+ALTER DOMAIN \fIname\fR
+    { SET | DROP } NOT NULL
+ALTER DOMAIN \fIname\fR
+    ADD \fIdomain_constraint\fR
+ALTER DOMAIN \fIname\fR
+    DROP CONSTRAINT \fIconstraint_name\fR [ RESTRICT | CASCADE ]
+ALTER DOMAIN \fIname\fR
+    OWNER TO \fInew_owner\fR 
+  
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER DOMAIN\fR changes the definition of an existing domain.
+There are several sub-forms:
+.TP
+\fBSET/DROP DEFAULT\fR
+These forms set or remove the default value for a domain. Note
+that defaults only apply to subsequent \fBINSERT\fR
+commands; they do not affect rows already in a table using the domain.
+.TP
+\fBSET/DROP NOT NULL\fR
+These forms change whether a domain is marked to allow NULL
+values or to reject NULL values. You may only SET NOT NULL
+when the columns using the domain contain no null values.
+.TP
+\fBADD \fIdomain_constraint\fB\fR
+This form adds a new constraint to a domain using the same syntax as
+CREATE DOMAIN [\fBcreate_domain\fR(7)].
+This will only succeed if all columns using the domain satisfy the
+new constraint.
+.TP
+\fBDROP CONSTRAINT\fR
+This form drops constraints on a domain.
+.TP
+\fBOWNER\fR
+This form changes the owner of the domain to the specified user.
+.PP
+You must own the domain to use \fBALTER DOMAIN\fR; except for
+\fBALTER DOMAIN OWNER\fR, which may only be executed by a superuser.
+.PP
+.SH "PARAMETERS"
+.PP
+.TP
+\fB\fIname\fB\fR
+The name (possibly schema-qualified) of an existing domain to
+alter.
+.TP
+\fB\fIdomain_constraint\fB\fR
+New domain constraint for the domain.
+.TP
+\fB\fIconstraint_name\fB\fR
+Name of an existing constraint to drop.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the constraint.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the constraint if there are any dependent
+objects. This is the default behavior.
+.TP
+\fB\fInew_owner\fB\fR
+The user name of the new owner of the domain.
+.PP
+.SH "EXAMPLES"
+.PP
+To add a NOT NULL constraint to a domain:
+.sp
+.nf
+ALTER DOMAIN zipcode SET NOT NULL;
+   
+.sp
+.fi
+To remove a NOT NULL constraint from a domain:
+.sp
+.nf
+ALTER DOMAIN zipcode DROP NOT NULL;
+   
+.sp
+.fi
+.PP
+To add a check constraint to a domain:
+.sp
+.nf
+ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
+   
+.sp
+.fi
+.PP
+To remove a check constraint from a domain:
+.sp
+.nf
+ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;
+   
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBALTER DOMAIN\fR statement is compatible with SQL99,
+except for the OWNER variant, which is a
+PostgreSQL extension.
diff --git a/raw/man7/alter_function.7 b/raw/man7/alter_function.7
new file mode 100644
index 0000000..04781bf
--- /dev/null
+++ b/raw/man7/alter_function.7
@@ -0,0 +1,42 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER FUNCTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER FUNCTION \- change the definition of a function
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER FUNCTION \fIname\fR ( [ \fItype\fR [, ...] ] ) RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER FUNCTION\fR changes the definition of a
+function. The only functionality is to rename the function.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing function.
+.TP
+\fB\fItype\fB\fR
+The data type of an argument of the function.
+.TP
+\fB\fInewname\fB\fR
+The new name of the function.
+.SH "EXAMPLES"
+.PP
+To rename the function sqrt for type
+\fBinteger\fR to square_root:
+.sp
+.nf
+ALTER FUNCTION sqrt(integer) RENAME TO square_root;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is an \fBALTER FUNCTION\fR statement in the SQL
+standard, but it does not provide the option to rename the
+function.
+.SH "SEE ALSO"
+CREATE FUNCTION [\fBcreate_function\fR(7)], DROP FUNCTION [\fBdrop_function\fR(l)]
+
diff --git a/raw/man7/alter_group.7 b/raw/man7/alter_group.7
new file mode 100644
index 0000000..882826f
--- /dev/null
+++ b/raw/man7/alter_group.7
@@ -0,0 +1,56 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER GROUP" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER GROUP \- change a user group
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER GROUP \fIgroupname\fR ADD USER \fIusername\fR [, ... ]
+ALTER GROUP \fIgroupname\fR DROP USER \fIusername\fR [, ... ]
+
+ALTER GROUP \fIgroupname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER GROUP\fR is used to change a user group. The
+first two variants add or remove users from a group. Only database
+superusers can use this command. Adding a user to a group does not
+create the user. Similarly, removing a user from a group does not
+drop the user itself.
+.PP
+The third variant changes the name of the group. Only a database
+superuser can rename groups.
+.SH "PARAMETERS"
+.TP
+\fB\fIgroupname\fB\fR
+The name of the group to modify.
+.TP
+\fB\fIusername\fB\fR
+Users which are to be added or removed from the group. The users
+must exist.
+.TP
+\fB\fInewname\fB\fR
+The new name of the group.
+.SH "EXAMPLES"
+.PP
+Add users to a group:
+.sp
+.nf
+ALTER GROUP staff ADD USER karl, john;
+.sp
+.fi
+Remove a user from a group:
+.sp
+.nf
+ALTER GROUP workers DROP USER beth;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBALTER GROUP\fR statement in the SQL
+standard. The concept of roles is similar.
+.SH "SEE ALSO"
+CREATE GROUP [\fBcreate_group\fR(7)], DROP GROUP [\fBdrop_group\fR(l)]
+
diff --git a/raw/man7/alter_language.7 b/raw/man7/alter_language.7
new file mode 100644
index 0000000..2d92c25
--- /dev/null
+++ b/raw/man7/alter_language.7
@@ -0,0 +1,30 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER LANGUAGE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER LANGUAGE \- change the definition of a procedural language
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER LANGUAGE \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER LANGUAGE\fR changes the definition of a
+language. The only functionality is to rename the language. Only
+a superuser can rename languages.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+Name of a language
+.TP
+\fB\fInewname\fB\fR
+The new name of the language
+.SH "COMPATIBILITY"
+.PP
+There is no \fBALTER LANGUAGE\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+CREATE LANGUAGE [\fBcreate_language\fR(7)], DROP LANGUAGE [\fBdrop_language\fR(l)]
+
diff --git a/raw/man7/alter_operator_class.7 b/raw/man7/alter_operator_class.7
new file mode 100644
index 0000000..1ddf21c
--- /dev/null
+++ b/raw/man7/alter_operator_class.7
@@ -0,0 +1,34 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER OPERATOR CLASS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER OPERATOR CLASS \- change the definition of an operator class
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER OPERATOR CLASS \fIname\fR USING \fIindex_method\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER OPERATOR CLASS\fR changes the definition of
+an operator class. The only functionality is to rename the
+operator class.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing operator
+class.
+.TP
+\fB\fIindex_method\fB\fR
+The name of the index method this operator class is for.
+.TP
+\fB\fInewname\fB\fR
+The new name of the operator class.
+.SH "COMPATIBILITY"
+.PP
+There is no \fBALTER OPERATOR CLASS\fR statement in
+the SQL standard.
+.SH "SEE ALSO"
+CREATE OPERATOR CLASS [\fBcreate_operator_class\fR(7)], DROP OPERATOR CLASS [\fBdrop_operator_class\fR(l)]
+
diff --git a/raw/man7/alter_schema.7 b/raw/man7/alter_schema.7
new file mode 100644
index 0000000..feb2d50
--- /dev/null
+++ b/raw/man7/alter_schema.7
@@ -0,0 +1,31 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER SCHEMA" "7" "2003-11-02" "SQL - Schema Statements" "SQL Commands"
+.SH NAME
+ALTER SCHEMA \- change the definition of a schema
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER SCHEMA \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER SCHEMA\fR changes the definition of a schema.
+The only functionality is to rename the schema. To rename a schema
+you must own the schema and have the privilege
+CREATE for the database.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+Name of a schema
+.TP
+\fB\fInewname\fB\fR
+The new name of the schema
+.SH "COMPATIBILITY"
+.PP
+There is no \fBALTER SCHEMA\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+CREATE SCHEMA [\fBcreate_schema\fR(7)], DROP SCHEMA [\fBdrop_schema\fR(l)]
+
diff --git a/raw/man7/alter_sequence.7 b/raw/man7/alter_sequence.7
new file mode 100644
index 0000000..36e8036
--- /dev/null
+++ b/raw/man7/alter_sequence.7
@@ -0,0 +1,108 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER SEQUENCE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER SEQUENCE \- alter the definition of a sequence generator
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER SEQUENCE \fIname\fR [ INCREMENT [ BY ] \fIincrement\fR ]
+    [ MINVALUE \fIminvalue\fR | NO MINVALUE ] [ MAXVALUE \fImaxvalue\fR | NO MAXVALUE ]
+    [ RESTART [ WITH ] \fIstart\fR ] [ CACHE \fIcache\fR ] [ [ NO ] CYCLE ]
+  
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER SEQUENCE\fR changes the parameters of an existing
+sequence generator. Any parameter not specifically set in the
+\fBALTER SEQUENCE\fR command retains its prior setting.
+.SH "PARAMETERS"
+.PP
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of a sequence to be altered.
+.TP
+\fB\fIincrement\fB\fR
+The clause INCREMENT BY \fIincrement\fR is
+optional. A positive value will make an ascending sequence, a
+negative one a descending sequence. If unspecified, the old
+increment value will be maintained.
+.TP
+\fB\fIminvalue\fB\fR
+.TP
+\fBNO MINVALUE\fR
+The optional clause MINVALUE \fIminvalue\fR determines
+the minimum value a sequence can generate. If NO
+MINVALUE is specified, the defaults of 1 and
+-263-1 for ascending and descending sequences,
+respectively, will be used. If neither option is specified,
+the current minimum value will be maintained.
+.TP
+\fB\fImaxvalue\fB\fR
+.TP
+\fBNO MAXVALUE\fR
+The optional clause MAXVALUE \fImaxvalue\fR determines
+the maximum value for the sequence. If NO
+MAXVALUE is specified, the defaults are
+263-1 and -1 for ascending and descending
+sequences, respectively, will be used. If neither option is
+specified, the current maximum value will be maintained.
+.TP
+\fB\fIstart\fB\fR
+The optional clause RESTART WITH \fIstart\fR changes the
+current value of the sequence.
+.TP
+\fB\fIcache\fB\fR
+The clause CACHE \fIcache\fR enables
+sequence numbers to be preallocated and stored in memory for
+faster access. The minimum value is 1 (only one value can be
+generated at a time, i.e., no cache). If unspecified, the old
+cache value will be maintained.
+.TP
+\fBCYCLE\fR
+The optional CYCLE key word may be used to enable
+the sequence to wrap around when the
+\fImaxvalue\fR or
+\fIminvalue\fR has been
+reached by
+an ascending or descending sequence respectively. If the limit is
+reached, the next number generated will be the
+\fIminvalue\fR or
+\fImaxvalue\fR,
+respectively.
+.TP
+\fBNO CYCLE\fR
+If the optional NO CYCLE key word is
+specified, any calls to \fBnextval\fR after the
+sequence has reached its maximum value will return an error.
+If neither CYCLE or NO
+CYCLE are specified, the old cycle behaviour will be
+maintained.
+.PP
+.SH "EXAMPLES"
+.PP
+Restart a sequence called serial, at 105:
+.sp
+.nf
+ALTER SEQUENCE serial RESTART WITH 105;
+.sp
+.fi
+.SH "NOTES"
+.PP
+To avoid blocking of concurrent transactions that obtain numbers from the
+same sequence, \fBALTER SEQUENCE\fR is never rolled back;
+the changes take effect immediately and are not reversible.
+.PP
+\fBALTER SEQUENCE\fR will not immediately affect
+nextval results in backends,
+other than the current one, that have preallocated (cached) sequence
+values. They will use up all cached values prior to noticing the changed
+sequence parameters. The current backend will be affected immediately.
+.SH "COMPATIBILITY"
+.SS "SQL99"
+.PP
+\fBALTER SEQUENCE\fR is a PostgreSQL
+language extension.
+There is no \fBALTER SEQUENCE\fR statement
+in SQL99.
diff --git a/raw/man7/alter_table.7 b/raw/man7/alter_table.7
new file mode 100644
index 0000000..3a0f6ef
--- /dev/null
+++ b/raw/man7/alter_table.7
@@ -0,0 +1,304 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER TABLE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER TABLE \- change the definition of a table
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ADD [ COLUMN ] \fIcolumn\fR \fItype\fR [ \fIcolumn_constraint\fR [ ... ] ]
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    DROP [ COLUMN ] \fIcolumn\fR [ RESTRICT | CASCADE ]
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR { SET DEFAULT \fIexpression\fR | DROP DEFAULT }
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR { SET | DROP } NOT NULL
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR SET STATISTICS \fIinteger\fR
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    SET WITHOUT OIDS
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    RENAME [ COLUMN ] \fIcolumn\fR TO \fInew_column\fR
+ALTER TABLE \fIname\fR
+    RENAME TO \fInew_name\fR
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ADD \fItable_constraint\fR
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    DROP CONSTRAINT \fIconstraint_name\fR [ RESTRICT | CASCADE ]
+ALTER TABLE \fIname\fR
+    OWNER TO \fInew_owner\fR
+ALTER TABLE \fIname\fR
+    CLUSTER ON \fIindex_name\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER TABLE\fR changes the definition of an existing table.
+There are several subforms:
+.TP
+\fBADD COLUMN\fR
+This form adds a new column to the table using the same syntax as
+CREATE TABLE [\fBcreate_table\fR(7)].
+.TP
+\fBDROP COLUMN\fR
+This form drops a column from a table. Indexes and
+table constraints involving the column will be automatically
+dropped as well. You will need to say CASCADE if
+anything outside the table depends on the column, for example,
+foreign key references or views.
+.TP
+\fBSET/DROP DEFAULT\fR
+These forms set or remove the default value for a column.
+The default values only apply to subsequent \fBINSERT\fR
+commands; they do not cause rows already in the table to change.
+Defaults may also be created for views, in which case they are
+inserted into \fBINSERT\fR statements on the view before
+the view's ON INSERT rule is applied.
+.TP
+\fBSET/DROP NOT NULL\fR
+These forms change whether a column is marked to allow null
+values or to reject null values. You can only use SET
+NOT NULL when the column contains no null values.
+.TP
+\fBSET STATISTICS\fR
+This form
+sets the per-column statistics-gathering target for subsequent
+ANALYZE [\fBanalyze\fR(7)] operations.
+The target can be set in the range 0 to 1000; alternatively, set it
+to -1 to revert to using the system default statistics target.
+.TP
+\fBSET STORAGE\fR
+This form sets the storage mode for a column. This controls whether this
+column is held inline or in a supplementary table, and whether the data
+should be compressed or not. PLAIN must be used
+for fixed-length values such as \fBinteger\fR and is
+inline, uncompressed. MAIN is for inline,
+compressible data. EXTERNAL is for external,
+uncompressed data, and EXTENDED is for external,
+compressed data. EXTENDED is the default for all
+data types that support it. The use of EXTERNAL will, for example,
+make substring operations on a \fBtext\fR column faster, at the penalty of
+increased storage space.
+.TP
+\fBSET WITHOUT OIDS\fR
+This form removes the oid column from the
+table. Removing OIDs from a table does not occur immediately.
+The space that the OID uses will be reclaimed when the row is
+updated. Without updating the row, both the space and the value
+of the OID are kept indefinitely. This is semantically similar
+to the DROP COLUMN process.
+.TP
+\fBRENAME\fR
+The RENAME forms change the name of a table
+(or an index, sequence, or view) or the name of an individual column in
+a table. There is no effect on the stored data.
+.TP
+\fBADD \fItable_constraint\fB\fR
+This form adds a new constraint to a table using the same syntax as
+CREATE TABLE [\fBcreate_table\fR(7)]. 
+.TP
+\fBDROP CONSTRAINT\fR
+This form drops constraints on a table.
+Currently, constraints on tables are not required to have unique
+names, so there may be more than one constraint matching the specified
+name. All such constraints will be dropped.
+.TP
+\fBOWNER\fR
+This form changes the owner of the table, index, sequence, or view to the
+specified user.
+.TP
+\fBCLUSTER\fR
+This form marks a table for future CLUSTER [\fBcluster\fR(7)]
+operations.
+.PP
+.PP
+You must own the table to use \fBALTER TABLE\fR; except for
+\fBALTER TABLE OWNER\fR, which may only be executed by a superuser.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (possibly schema-qualified) of an existing table to
+alter. If ONLY is specified, only that table is
+altered. If ONLY is not specified, the table and all
+its descendant tables (if any) are updated. * can be
+appended to the table name to indicate that descendant tables are
+to be altered, but in the current version, this is the default
+behavior. (In releases before 7.1, ONLY was the
+default behavior. The default can be altered by changing the
+configuration parameter sql_inheritance.)
+.TP
+\fB\fIcolumn\fB\fR
+Name of a new or existing column.
+.TP
+\fB\fItype\fB\fR
+Data type of the new column.
+.TP
+\fB\fInew_column\fB\fR
+New name for an existing column.
+.TP
+\fB\fInew_name\fB\fR
+New name for the table.
+.TP
+\fB\fItable_constraint\fB\fR
+New table constraint for the table.
+.TP
+\fB\fIconstraint_name\fB\fR
+Name of an existing constraint to drop.
+.TP
+\fB\fInew_owner\fB\fR
+The user name of the new owner of the table.
+.TP
+\fB\fIindex_name\fB\fR
+The index name on which the table should be marked for clustering.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the dropped column
+or constraint (for example, views referencing the column).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the column or constraint if there are any dependent
+objects. This is the default behavior.
+.SH "NOTES"
+.PP
+The key word COLUMN is noise and can be omitted.
+.PP
+In the current implementation of ADD COLUMN,
+default and NOT NULL clauses for the new column are not supported.
+The new column always comes into being with all values null.
+You can use the SET DEFAULT form
+of \fBALTER TABLE\fR to set the default afterward.
+(You may also want to update the already existing rows to the
+new default value, using
+UPDATE [\fBupdate\fR(7)].)
+If you want to mark the column non-null, use the SET NOT NULL
+form after you've entered non-null values for the column in all rows.
+.PP
+The DROP COLUMN form does not physically remove
+the column, but simply makes it invisible to SQL operations. Subsequent
+insert and update operations in the table will store a null value for the column.
+Thus, dropping a column is quick but it will not immediately reduce the
+on-disk size of your table, as the space occupied 
+by the dropped column is not reclaimed. The space will be
+reclaimed over time as existing rows are updated.
+To reclaim the space at once, do a dummy \fBUPDATE\fR of all rows
+and then vacuum, as in:
+.sp
+.nf
+UPDATE table SET col = col;
+VACUUM FULL table;
+.sp
+.fi
+.PP
+If a table has any descendant tables, it is not permitted to add
+or rename a column in the parent table without doing the same to
+the descendants. That is, \fBALTER TABLE ONLY\fR
+will be rejected. This ensures that the descendants always have
+columns matching the parent.
+.PP
+A recursive DROP COLUMN operation will remove a
+descendant table's column only if the descendant does not inherit
+that column from any other parents and never had an independent
+definition of the column. A nonrecursive DROP
+COLUMN (i.e., \fBALTER TABLE ONLY ... DROP
+COLUMN\fR) never removes any descendant columns, but
+instead marks them as independently defined rather than inherited.
+.PP
+Changing any part of a system catalog table is not permitted.
+.PP
+Refer to \fBCREATE TABLE\fR for a further description
+of valid parameters. The chapter called ``Data Definition'' in the documentation has further information on
+inheritance.
+.SH "EXAMPLES"
+.PP
+To add a column of type \fBvarchar\fR to a table:
+.sp
+.nf
+ALTER TABLE distributors ADD COLUMN address varchar(30);
+.sp
+.fi
+.PP
+To drop a column from a table:
+.sp
+.nf
+ALTER TABLE distributors DROP COLUMN address RESTRICT;
+.sp
+.fi
+.PP
+To rename an existing column:
+.sp
+.nf
+ALTER TABLE distributors RENAME COLUMN address TO city;
+.sp
+.fi
+.PP
+To rename an existing table:
+.sp
+.nf
+ALTER TABLE distributors RENAME TO suppliers;
+.sp
+.fi
+.PP
+To add a not-null constraint to a column:
+.sp
+.nf
+ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
+.sp
+.fi
+To remove a not-null constraint from a column:
+.sp
+.nf
+ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
+.sp
+.fi
+.PP
+To add a check constraint to a table:
+.sp
+.nf
+ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
+.sp
+.fi
+.PP
+To remove a check constraint from a table and all its children:
+.sp
+.nf
+ALTER TABLE distributors DROP CONSTRAINT zipchk;
+.sp
+.fi
+.PP
+To add a foreign key constraint to a table:
+.sp
+.nf
+ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address) MATCH FULL;
+.sp
+.fi
+.PP
+To add a (multicolumn) unique constraint to a table:
+.sp
+.nf
+ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
+.sp
+.fi
+.PP
+To add an automatically named primary key constraint to a table, noting
+that a table can only ever have one primary key:
+.sp
+.nf
+ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The ADD COLUMN form conforms with the SQL
+standard, with the exception that it does not support defaults and
+not-null constraints, as explained above. The ALTER
+COLUMN form is in full conformance.
+.PP
+The clauses to rename tables, columns, indexes, views, and sequences are
+PostgreSQL extensions of the SQL standard.
+.PP
+\fBALTER TABLE DROP COLUMN\fR can be used to drop the only
+column of a table, leaving a zero-column table. This is an
+extension of SQL, which disallows zero-column tables.
diff --git a/raw/man7/alter_trigger.7 b/raw/man7/alter_trigger.7
new file mode 100644
index 0000000..ef74be0
--- /dev/null
+++ b/raw/man7/alter_trigger.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER TRIGGER \- change the definition of a trigger
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER TRIGGER \fIname\fR ON \fItable\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER TRIGGER\fR changes properties of an existing
+trigger. The RENAME clause changes the name of
+the given trigger without otherwise changing the trigger
+definition.
+.PP
+You must own the table on which the trigger acts to be allowed to change its properties.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of an existing trigger to alter.
+.TP
+\fB\fItable\fB\fR
+The name of the table on which this trigger acts.
+.TP
+\fB\fInewname\fB\fR
+The new name for the trigger.
+.SH "EXAMPLES"
+.PP
+To rename an existing trigger:
+.sp
+.nf
+ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBALTER TRIGGER\fR is a PostgreSQL
+extension of the SQL standard.
diff --git a/raw/man7/alter_user.7 b/raw/man7/alter_user.7
new file mode 100644
index 0000000..e37f129
--- /dev/null
+++ b/raw/man7/alter_user.7
@@ -0,0 +1,156 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER USER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER USER \- change a database user account
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER USER \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]
+
+where \fIoption\fR can be:
+
+    [ ENCRYPTED | UNENCRYPTED ] PASSWORD '\fIpassword\fR' 
+    | CREATEDB | NOCREATEDB
+    | CREATEUSER | NOCREATEUSER 
+    | VALID UNTIL '\fIabstime\fR'
+
+ALTER USER \fIname\fR RENAME TO \fInewname\fR
+
+ALTER USER \fIname\fR SET \fIparameter\fR { TO | = } { \fIvalue\fR | DEFAULT }
+ALTER USER \fIname\fR RESET \fIparameter\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER USER\fR is used to change the attributes of a
+PostgreSQL user account. Attributes not
+mentioned in the command retain their previous settings.
+.PP
+The first variant of this command in the synopsis changes certain
+global user privileges and authentication settings. (See below for
+details.) Only a database superuser can change these privileges and
+the password expiration with this command. Ordinary users can only
+change their own password.
+.PP
+The second variant changes the name of the user. Only a database
+superuser can rename user accounts. The session user cannot be
+renamed. (Connect as a different user if you need to do that.)
+.PP
+The third and the fourth variant change a user's session default for
+a specified configuration variable. Whenever the user subsequently
+starts a new session, the specified value becomes the session default,
+overriding whatever setting is present in \fIpostgresql.conf\fR
+or has been received from the \fBpostmaster\fR command line.
+Ordinary users can change their own session defaults.
+Superusers can change anyone's session defaults.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the user whose attributes are to be altered.
+.TP
+\fB\fIpassword\fB\fR
+The new password to be used for this account.
+.TP
+\fBENCRYPTED\fR
+.TP
+\fBUNENCRYPTED\fR
+These key words control whether the password is stored
+encrypted in pg_shadow. (See
+CREATE USER [\fBcreate_user\fR(7)]
+for more information about this choice.)
+.TP
+\fBCREATEDB\fR
+.TP
+\fBNOCREATEDB\fR
+These clauses define a user's ability to create databases. If
+CREATEDB is specified, the user
+will be allowed to create his own databases. Using
+NOCREATEDB will deny a user the ability to
+create databases.
+.TP
+\fBCREATEUSER\fR
+.TP
+\fBNOCREATEUSER\fR
+These clauses determine whether a user will be permitted to
+create new users himself. This option will also make the user
+a superuser who can override all access restrictions.
+.TP
+\fB\fIabstime\fB\fR
+The date (and, optionally, the time)
+at which this user's password is to expire. To set the password
+never to expire, use 'infinity'.
+.TP
+\fB\fInewname\fB\fR
+The new name of the user.
+.TP
+\fB\fIparameter\fB\fR
+.TP
+\fB\fIvalue\fB\fR
+Set this user's session default for the specified configuration
+parameter to the given value. If
+\fIvalue\fR is DEFAULT
+or, equivalently, RESET is used, the
+user-specific variable setting is removed and the user will
+inherit the system-wide default setting in new sessions. Use
+RESET ALL to clear all settings.
+
+See SET [\fBset\fR(7)] and the section called ``Run-time Configuration'' in the documentation for more information about allowed
+parameter names and values.
+.SH "NOTES"
+.PP
+Use CREATE USER [\fBcreate_user\fR(7)]
+to add new users, and DROP USER [\fBdrop_user\fR(7)] to remove a user.
+.PP
+\fBALTER USER\fR cannot change a user's group memberships.
+Use ALTER GROUP [\fBalter_group\fR(7)]
+to do that.
+.PP
+Using ALTER DATABASE [\fBalter_database\fR(7)], it is also possible to tie a
+session default to a specific database rather than a user.
+.SH "EXAMPLES"
+.PP
+Change a user password:
+.sp
+.nf
+ALTER USER davide WITH PASSWORD 'hu8jmn3';
+.sp
+.fi
+.PP
+Change a user's valid until date:
+.sp
+.nf
+ALTER USER manuel VALID UNTIL 'Jan 31 2030';
+.sp
+.fi
+.PP
+Change a user's valid until date, specifying that his
+authorization should expire at midday on 4th May 2005 using
+the time zone which is one hour ahead of UTC:
+.sp
+.nf
+ALTER USER chris VALID UNTIL 'May 4 12:00:00 2005 +1';
+.sp
+.fi
+.PP
+Make a user valid forever:
+.sp
+.nf
+ALTER USER fred VALID UNTIL 'infinity';
+.sp
+.fi
+.PP
+Give a user the ability to create other users and new databases:
+.sp
+.nf
+ALTER USER miriam CREATEUSER CREATEDB;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBALTER USER\fR statement is a
+PostgreSQL extension. The SQL standard
+leaves the definition of users to the implementation.
+.SH "SEE ALSO"
+CREATE USER [\fBcreate_user\fR(7)], DROP USER [\fBdrop_user\fR(l)], SET [\fBset\fR(l)]
+
diff --git a/raw/man7/analyze.7 b/raw/man7/analyze.7
new file mode 100644
index 0000000..ecfc63d
--- /dev/null
+++ b/raw/man7/analyze.7
@@ -0,0 +1,98 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ANALYZE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ANALYZE \- collect statistics about a database
+
+.SH SYNOPSIS
+.sp
+.nf
+ANALYZE [ VERBOSE ] [ \fItable\fR [ (\fIcolumn\fR [, ...] ) ] ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBANALYZE\fR collects statistics about the contents
+of tables in the database, and stores the results in the system
+table pg_statistic. Subsequently, the query
+planner uses these statistics to help determine the most efficient
+execution plans for queries.
+.PP
+With no parameter, \fBANALYZE\fR examines every table in the
+current database. With a parameter, \fBANALYZE\fR examines
+only that table. It is further possible to give a list of column names,
+in which case only the statistics for those columns are collected.
+.SH "PARAMETERS"
+.TP
+\fBVERBOSE\fR
+Enables display of progress messages.
+.TP
+\fB\fItable\fB\fR
+The name (possibly schema-qualified) of a specific table to
+analyze. Defaults to all tables in the current database.
+.TP
+\fB\fIcolumn\fB\fR
+The name of a specific column to analyze. Defaults to all columns.
+.SH "OUTPUTS"
+.PP
+When VERBOSE is specified, \fBANALYZE\fR emits
+progress messages to indicate which table is currently being
+processed. Various statistics about the tables are printed as well.
+.SH "NOTES"
+.PP
+It is a good idea to run \fBANALYZE\fR periodically, or
+just after making major changes in the contents of a table. Accurate
+statistics will help the planner to choose the most appropriate query
+plan, and thereby improve the speed of query processing. A common
+strategy is to run VACUUM [\fBvacuum\fR(7)]
+and \fBANALYZE\fR once a day during a low-usage time of day.
+.PP
+Unlike \fBVACUUM FULL\fR, \fBANALYZE\fR
+requires only a read lock on the target table, so it can run in
+parallel with other activity on the table.
+.PP
+The statistics collected by \fBANALYZE\fR usually
+include a list of some of the most common values in each column and
+a histogram showing the approximate data distribution in each
+column. One or both of these may be omitted if
+\fBANALYZE\fR deems them uninteresting (for example,
+in a unique-key column, there are no common values) or if the
+column data type does not support the appropriate operators. There
+is more information about the statistics in the chapter called ``Routine Database Maintenance'' in the documentation.
+.PP
+For large tables, \fBANALYZE\fR takes a random sample
+of the table contents, rather than examining every row. This
+allows even very large tables to be analyzed in a small amount of
+time. Note, however, that the statistics are only approximate, and
+will change slightly each time \fBANALYZE\fR is run,
+even if the actual table contents did not change. This may result
+in small changes in the planner's estimated costs shown by
+\fBEXPLAIN\fR. In rare situations, this
+non-determinism will cause the query optimizer to choose a
+different query plan between runs of \fBANALYZE\fR. To
+avoid this, raise the amount of statistics collected by
+\fBANALYZE\fR, as described below.
+.PP
+The extent of analysis can be controlled by adjusting the
+DEFAULT_STATISTICS_TARGET parameter variable, or
+on a column-by-column basis by setting the per-column statistics
+target with \fBALTER TABLE ... ALTER COLUMN ... SET
+STATISTICS\fR (see ALTER TABLE [\fBalter_table\fR(7)]). The target value sets the
+maximum number of entries in the most-common-value list and the
+maximum number of bins in the histogram. The default target value
+is 10, but this can be adjusted up or down to trade off accuracy of
+planner estimates against the time taken for
+\fBANALYZE\fR and the amount of space occupied in
+pg_statistic. In particular, setting the
+statistics target to zero disables collection of statistics for
+that column. It may be useful to do that for columns that are
+never used as part of the WHERE, GROUP BY,
+or ORDER BY clauses of queries, since the planner will
+have no use for statistics on such columns.
+.PP
+The largest statistics target among the columns being analyzed determines
+the number of table rows sampled to prepare the statistics. Increasing
+the target causes a proportional increase in the time and space needed
+to do \fBANALYZE\fR.
+.SH "COMPATIBILITY"
+.PP
+There is no \fBANALYZE\fR statement in the SQL standard.
diff --git a/raw/man7/arp.7 b/raw/man7/arp.7
new file mode 100644
index 0000000..adcc362
--- /dev/null
+++ b/raw/man7/arp.7
@@ -0,0 +1,264 @@
+'\" t
+.\" This man page is Copyright (C) 1999 Matthew Wilcox <willy at bofh.ai>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" Modified June 1999 Andi Kleen
+.\" $Id: arp.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH ARP 7 1999-06-03 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+arp \- Linux ARP kernel module. 
+.SH DESCRIPTION
+This kernel protocol module implements the Address Resolution
+Protocol defined in RFC 826.
+It is used to convert between Layer2 hardware addresses
+and IPv4 protocol addresses on directly connected networks. 
+The user normally doesn't interact directly with this module except to 
+configure it; 
+instead it provides a service for other protocols in the kernel.
+
+A user process can receive ARP packets by using
+.BR packet (7)
+sockets.  There is also a mechanism for managing the ARP cache
+in user-space by using
+.BR netlink (7)
+sockets. The ARP table can also be controlled via 
+.B ioctl (2) 
+on any 
+.B PF_INET 
+socket.
+
+The ARP module maintains a cache of mappings between hardware addresses
+and protocol addresses.  The cache has a limited size so old and less
+frequently used entries are garbage-collected.  Entries which are marked
+as permanent are never deleted by the garbage-collector.  The cache can
+be directly manipulated by the use of ioctls and its behaviour can be
+tuned by the sysctls defined below.  
+
+When there is no positive feedback for an existing mapping after some
+time (see the sysctls below) a neighbour cache entry is considered stale.
+Positive feedback can be gotten from a higher layer; for example from
+a successful TCP ACK. Other protocols can signal forward progress
+using the
+.B MSG_CONFIRM
+flag to
+.BR sendmsg (2).
+When there is no forward progress ARP tries to reprobe.
+It first tries to ask a local arp daemon
+.B app_solicit 
+times for an updated MAC address.
+If that fails and an old MAC address is known an unicast probe is send
+.B ucast_solicit
+times. If that fails too it will broadcast a new ARP 
+request to the network. Requests are only send when there is data queued
+for sending. 
+
+Linux will automatically add a non-permanent proxy arp entry when it receives
+a request for an address it forwards to and proxy arp is enabled on the 
+receiving interface. When there is a reject route for the target
+no proxy arp entry is added.
+
+.SH IOCTLS
+Three ioctls are available on all 
+.B PF_INET
+sockets.
+They take a pointer to a
+.B struct arpreq
+as their parameter.
+
+.nf
+.ta 4 20 33
+struct arpreq
+{
+	struct sockaddr	arp_pa;	/* protocol address */
+	struct sockaddr	arp_ha;	/* hardware address */
+	int	arp_flags;	/* flags */
+	struct sockaddr	arp_netmask;	/* netmask of protocol address */
+	char	arp_dev[16];
+};
+.fi
+
+.BR SIOCSARP ", " SIOCDARP " and " SIOCGARP
+respectively set, delete and get an ARP mapping.
+Setting & deleting ARP maps are privileged operations and may
+only be performed by a process with the
+.B CAP_NET_ADMIN
+capability or an effective UID of 0.
+
+.I arp_pa
+must be an
+.B AF_INET
+socket and
+.I arp_ha
+must have the same type as the device which is specified in
+.IR arp_dev .
+.I arp_dev
+is a zero-terminated string which names a device.
+
+.TS
+tab(:) allbox;
+c s
+l l.
+\fIarp_flags\fR
+flag:meaning
+ATF_COM:Lookup complete
+ATF_PERM:Permanent entry
+ATF_PUBL:Publish entry
+ATF_USETRAILERS:Trailers requested
+ATF_NETMASK:Use a netmask
+ATF_DONTPUB:Don't answer
+.TE
+
+.PP
+
+If the
+.B ATF_NETMASK
+flag is set, then
+.I arp_netmask
+should be valid.  
+Linux 2.2 does not support proxy network ARP entries, so this
+should be set to 0xffffffff, or 0 to remove an existing proxy arp entry. 
+.B ATF_USETRAILERS
+is obsolete and should not be used.
+
+.SH SYSCTLS
+ARP supports a sysctl interface to configure parameters on a global
+or per-interface basis.
+The sysctls can be accessed by reading or writing the 
+.B /proc/sys/net/ipv4/neigh/*/*
+files or with the 
+.BR sysctl (2)
+interface.  Each interface in the system has its own directory in
+/proc/sys/net/ipv4/neigh/.
+The setting in the `default' directory is used for all newly created devices.
+Unless otherwise specified time related sysctls are specified in seconds.
+.TP
+.B anycast_delay
+The maximum number of jiffies to delay before replying to a
+IPv6 neighbour solicitation message.
+Anycast support is not yet implemented.
+Defaults to 1 second.
+.TP
+.B app_solicit
+The maximum number of probes to send to the user space ARP daemon via
+netlink before dropping back to multicast probes (see
+.IR mcast_solicit ).
+Defaults to 0.
+.TP
+.B base_reachable_time
+Once a neighbour has been found, the entry is considered to be valid
+for at least a random value between
+.IR base_reachable_time "/2 and 3*" base_reachable_time /2.
+An entry's validity will be extended if it receives positive feedback
+from higher level protocols.
+Defaults to 30 seconds.
+.TP
+.B delay_first_probe_time
+Delay before first probe after it has been decided that a neighbour
+is stale. 
+Defaults to 5 seconds.
+.TP
+.B gc_interval
+How frequently the garbage collector for neighbour entries 
+should attempt to run.
+Defaults to 30 seconds.
+.TP
+.B gc_stale_time
+Determines how often to check for stale neighbour entries.  When 
+a neighbour entry is considered stale it is resolved again before 
+sending data to it. 
+Defaults to 60 seconds.
+.TP
+.B gc_thresh1
+The minimum number of entries to keep in the ARP cache.
+The garbage collector will not run if there are fewer than
+this number of entries in the cache.
+Defaults to 128.
+.TP
+.B gc_thresh2
+The soft maximum number of entries to keep in the ARP cache.
+The garbage collector will allow the number of entries to exceed
+this for 5 seconds before collection will be performed.
+Defaults to 512.
+.TP
+.B gc_thresh3
+The hard maximum number of entries to keep in the ARP cache.
+The garbage collector will always run if there are more than
+this number of entries in the cache.
+Defaults to 1024.
+.TP
+.B locktime
+The minimum number of jiffies to keep an ARP entry in the cache.
+This prevents ARP cache thrashing if there is more than one potential
+mapping (generally due to network misconfiguration).
+Defaults to 1 second.
+.TP
+.B mcast_solicit
+The maximum number of attempts to resolve an address by multicast/broadcast 
+before marking the entry as unreachable.
+Defaults to 3.
+.TP
+.B proxy_delay
+When an ARP request for a known proxy-ARP address is received, delay up to
+.I proxy_delay
+jiffies before replying.
+This is used to prevent network flooding in some cases.
+Defaults to 0.8 seconds.
+.TP
+.B proxy_qlen
+The maximum number of packets which may be queued to proxy-ARP addresses.
+Defaults to 64.
+.TP
+.B retrans_time
+The number of jiffies to delay before retransmitting a request.
+Defaults to 1 second.
+.TP
+.B ucast_solicit
+The maximum number of attempts to send unicast probes before asking
+the ARP daemon (see
+.IR app_solicit ).
+Defaults to 3.
+.TP
+.B unres_qlen
+The maximum number of packets which may be queued for each unresolved
+address by other network layers.
+Defaults to 3.
+
+.SH BUGS
+Some timer settings are specified in jiffies, which is architecture related.
+On the Alpha a jiffy is 1/1024 of a second, on most other architectures it
+is 1/100s.
+
+There is no way to signal positive feedback from user space. This means
+connection oriented protocols implemented in user space will generate 
+excessive ARP traffic, because ndisc will regularly reprobe the MAC address.
+The same problem applies for some kernel protocols (e.g. NFS over UDP).
+
+This man page mashes IPv4 specific and shared between IPv4 and IPv6 
+functionality together.
+
+.SH VERSIONS
+The
+.B struct arpreq
+changed in Linux 2.0 to include the
+.I arp_dev
+member and the ioctl numbers changed at the same time.
+Support for the old ioctls was dropped in Linux 2.2.
+
+Support for proxy arp entries for networks (netmask not equal 0xffffffff) 
+was dropped in Linux 2.2. It is replaced by automatic proxy arp setup by
+the kernel for all reachable hosts on other interfaces (when forwarding and 
+proxy arp is enabled for the interface).
+
+The neigh/* sysctls did not exist before Linux 2.2.
+
+.SH "SEE ALSO"
+.BR ip (7)
+.PP
+RFC826 for a description of ARP.
+.br
+RFC2461 for a description of IPv6 neighbour discovery and the base
+algorithms used.
+.LP
+Linux 2.2+ IPv4 ARP uses the IPv6 algorithms when applicable.
diff --git a/raw/man7/ascii.7 b/raw/man7/ascii.7
new file mode 100644
index 0000000..2040b1b
--- /dev/null
+++ b/raw/man7/ascii.7
@@ -0,0 +1,159 @@
+'\" t
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de)
+.\" Created Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111
+.\" USA.
+.\"
+.\" Modified Sat Jul 24 17:20:55 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun May 15 19:47:23 1994 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" Modified Tue Nov 22 13:01:59 1994 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" Modified Tue Jul 11 13:36:31 1995 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" Modified Wed Dec 18   :  :   1996 by Michael Haardt and aeb
+.\" Modified Mon May 31 17:30:00 1999 by Dimitri Papadopoulos (dpo at club-internet.fr)
+.\" Modified Sun Aug  8 19:28:11 1999 by Michael Haardt (michael at moria.de)
+.\"
+.TH ASCII 7 1999-08-08 "Linux" "Linux Programmer's Manual"
+.SH NAME
+ascii \- the ASCII character set encoded in octal, decimal, and hexadecimal
+.SH DESCRIPTION
+ASCII is the American Standard Code for Information Interchange.
+It is a 7-bit code. Many 8-bit codes (such as ISO 8859-1, the
+Linux default character set) contain ASCII as their lower half.
+The international counterpart of ASCII is known as ISO 646.
+.LP
+The following table contains the 128 ASCII characters.
+.LP
+C program \f(CW'\eX'\fP escapes are noted.
+.LP
+.if t \{\
+.in 1i
+.ft CW
+\}
+.TS
+l l l l l l l l l.
+Oct	Dec	Hex	Char		Oct	Dec	Hex	Char
+_
+000	0	00	NUL '\e0'		100	64	40	@
+001	1	01	SOH		101	65	41	A
+002	2	02	STX		102	66	42	B
+003	3	03	ETX		103	67	43	C
+004	4	04	EOT		104	68	44	D
+005	5	05	ENQ		105	69	45	E
+006	6	06	ACK		106	70	46	F
+007	7	07	BEL '\ea'		107	71	47	G
+010	8	08	BS  '\eb'		110	72	48	H
+011	9	09	HT  '\et'		111	73	49	I
+012	10	0A	LF  '\en'		112	74	4A	J
+013	11	0B	VT  '\ev'		113	75	4B	K
+014	12	0C	FF  '\ef'		114	76	4C	L
+015	13	0D	CR  '\er'		115	77	4D	M
+016	14	0E	SO		116	78	4E	N
+017	15	0F	SI		117	79	4F	O
+020	16	10	DLE		120	80	50	P
+021	17	11	DC1		121	81	51	Q
+022	18	12	DC2		122	82	52	R
+023	19	13	DC3		123	83	53	S
+024	20	14	DC4		124	84	54	T
+025	21	15	NAK		125	85	55	U
+026	22	16	SYN		126	86	56	V
+027	23	17	ETB		127	87	57	W
+030	24	18	CAN		130	88	58	X
+031	25	19	EM		131	89	59	Y
+032	26	1A	SUB		132	90	5A	Z
+033	27	1B	ESC		133	91	5B	[
+034	28	1C	FS		134	92	5C	\e   '\e\e'
+035	29	1D	GS		135	93	5D	]
+036	30	1E	RS		136	94	5E	^
+037	31	1F	US		137	95	5F	\&_
+040	32	20	SPACE		140	96	60	`
+041	33	21	!		141	97	61	a
+042	34	22	"		142	98	62	b
+043	35	23	#		143	99	63	c
+044	36	24	$		144	100	64	d
+045	37	25	%		145	101	65	e
+046	38	26	&		146	102	66	f
+047	39	27	'		147	103	67	g
+050	40	28	(		150	104	68	h
+051	41	29	)		151	105	69	i
+052	42	2A	*		152	106	6A	j
+053	43	2B	+		153	107	6B	k
+054	44	2C	,		154	108	6C	l
+055	45	2D	\-		155	109	6D	m
+056	46	2E	.		156	110	6E	n
+057	47	2F	/		157	111	6F	o
+060	48	30	0		160	112	70	p
+061	49	31	1		161	113	71	q
+062	50	32	2		162	114	72	r
+063	51	33	3		163	115	73	s
+064	52	34	4		164	116	74	t
+065	53	35	5		165	117	75	u
+066	54	36	6		166	118	76	v
+067	55	37	7		167	119	77	w
+070	56	38	8		170	120	78	x
+071	57	39	9		171	121	79	y
+072	58	3A	:		172	122	7A	z
+073	59	3B	;		173	123	7B	{
+074	60	3C	<		174	124	7C	|
+075	61	3D	= 		175	125	7D	}
+076	62	3E	>		176	126	7E	~
+077	63	3F	?		177	127	7F	DEL
+.TE
+.fi
+.if t \{\
+.in
+.ft P
+\}
+.SH HISTORY
+An
+.B ascii
+manual page appeared in Version 7 of AT&T UNIX.
+.LP
+On older terminals, the underscore code is displayed as a left arrow,
+called backarrow, the caret is displayed as an up-arrow and the vertical
+bar has a hole in the middle.
+.LP
+Uppercase and lowercase characters differ by just one bit and the
+ASCII character 2 differs from the double quote by just one bit, too.
+That made it much easier to encode characters mechanically or with a
+non-microcontroller-based electronic keyboard and that pairing was found
+on old teletypes.
+.LP
+The ASCII standard was published by the United States of America
+Standards Institute (USASI) in 1968.
+.\"
+.\" ASA was the American Standards Association and X3 was an ASA sectional
+.\" committee on computers and data processing.  Its name changed to
+.\" American National Standards Committee X3 (ANSC-X3) and now it is known
+.\" as Accredited Standards Committee X3 (ASC X3).  It is accredited by ANSI
+.\" and administered by ITI.  The subcommittee X3.2 worked on coded
+.\" character sets; the task group working on ASCII appears to have been
+.\" designated X3.2.4.  In 1966, ASA became the United States of America
+.\" Standards Institute (USASI) and published ASCII in 1968.  It became the
+.\" American National Standards Institute (ANSI) in 1969 and is the
+.\" U.S. member body of ISO; private and non-profit.
+.\"
+.SH "SEE ALSO"
+.BR iso_8859-1 (7),
+.BR iso_8859-15 (7),
+.BR iso_8859-16 (7),
+.BR iso_8859-2 (7),
+.BR iso_8859-7 (7),
+.BR iso_8859-9 (7)
diff --git a/raw/man7/begin.7 b/raw/man7/begin.7
new file mode 100644
index 0000000..b598bb8
--- /dev/null
+++ b/raw/man7/begin.7
@@ -0,0 +1,71 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "BEGIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+BEGIN \- start a transaction block
+
+.SH SYNOPSIS
+.sp
+.nf
+BEGIN [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBBEGIN\fR initiates a transaction block, that is,
+all statements after \fBBEGIN\fR command will be
+executed in a single transaction until an explicit COMMIT [\fBcommit\fR(7)] or ROLLBACK [\fBrollback\fR(l)] is given.
+By default (without \fBBEGIN\fR),
+PostgreSQL executes
+transactions in ``autocommit'' mode, that is, each
+statement is executed in its own transaction and a commit is
+implicitly performed at the end of the statement (if execution was
+successful, otherwise a rollback is done).
+.PP
+Statements are executed more quickly in a transaction block, because
+transaction start/commit requires significant CPU and disk
+activity. Execution of multiple statements inside a transaction is
+also useful to ensure consistency when making several related changes:
+other sessions will be unable to see the intermediate states
+wherein not all the related updates have been done.
+.SH "PARAMETERS"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+Optional key words. They have no effect.
+.SH "NOTES"
+.PP
+START TRANSACTION [\fBstart_transaction\fR(7)] has the same functionality
+as \fBBEGIN\fR.
+.PP
+Use COMMIT [\fBcommit\fR(7)] or
+ROLLBACK [\fBrollback\fR(7)]
+to terminate a transaction block.
+.PP
+Issuing \fBBEGIN\fR when already inside a transaction block will
+provoke a warning message. The state of the transaction is not affected.
+.SH "EXAMPLES"
+.PP
+To begin a transaction block:
+.sp
+.nf
+BEGIN;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBBEGIN\fR is a PostgreSQL
+language extension. There is no explicit \fBBEGIN\fR
+command in the SQL standard; transaction initiation is
+always implicit and it terminates either with a
+\fBCOMMIT\fR or \fBROLLBACK\fR statement.
+.PP
+Other relational database systems may offer an autocommit feature
+as a convenience.
+.PP
+Incidentally, the BEGIN key word is used for a
+different purpose in embedded SQL. You are advised to be careful
+about the transaction semantics when porting database applications.
+.SH "SEE ALSO"
+COMMIT [\fBcommit\fR(7)], ROLLBACK [\fBrollback\fR(l)]
+
diff --git a/raw/man7/bootparam.7 b/raw/man7/bootparam.7
new file mode 100644
index 0000000..5a12c1f
--- /dev/null
+++ b/raw/man7/bootparam.7
@@ -0,0 +1,1238 @@
+.\" Copyright (c) 1995,1997 Paul Gortmaker and Andries Brouwer
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" This man page written 950814 by aeb, based on Paul Gortmaker's HOWTO
+.\" (dated v1.0.1, 15/08/95).
+.\" Major update, aeb, 970114.
+.\"
+.TH BOOTPARAM 7 1995-01-14 "Linux 2.1.21" "Linux Programmer's Manual"
+.SH NAME
+bootparam \- Introduction to boot time parameters of the Linux kernel
+.SH DESCRIPTION
+The Linux kernel accepts certain `command line options' or `boot time
+parameters' at the moment it is started. In general this is used to
+supply the kernel with information about hardware parameters that
+the kernel would not be able to determine on its own, or to avoid/override
+the values that the kernel would otherwise detect.
+
+When the kernel is booted directly by the BIOS (say from a floppy to
+which you copied a kernel using `cp zImage /dev/fd0'),
+you have no opportunity to specify any parameters.
+So, in order to take advantage of this possibility you have to
+use software that is able to pass parameters, like LILO or loadlin.
+For a few parameters one can also modify the kernel image itself,
+using rdev, see
+.BR rdev (8)
+for further details.
+
+The LILO program (LInux LOader) written by Werner Almesberger is the
+most commonly used. It has the ability to boot various kernels, and
+stores the configuration information in a plain text file. (See
+.BR lilo (8)
+and
+.BR lilo.conf (5).)
+LILO can boot DOS, OS/2, Linux, FreeBSD, UnixWare, etc., and is quite flexible.
+
+The other commonly used Linux loader is `LoadLin' which is a DOS
+program that has the capability to launch a Linux kernel from the DOS
+prompt (with boot-args) assuming that certain resources are available.
+This is good for people that want to launch Linux from DOS.
+
+It is also very useful if you have certain hardware which relies on
+the supplied DOS driver to put the hardware into a known state. A
+common example is `SoundBlaster Compatible' sound cards that require
+the DOS driver to twiddle a few mystical registers to put the card
+into a SB compatible mode. Booting DOS with the supplied driver, and
+then loading Linux from the DOS prompt with loadlin avoids the reset
+of the card that happens if one rebooted instead.
+
+.SH "THE ARGUMENT LIST"
+
+The kernel command line is parsed into a list of strings
+(boot arguments) separated by spaces. Most of the boot args
+take the form of:
+.IP
+name[=value_1][,value_2]...[,value_10]
+.LP
+where `name' is a unique keyword that is used to identify what part of
+the kernel the associated values (if any) are to be given to.
+Note the limit of 10 is real, as the present code only handles 10 comma
+separated parameters per keyword. (However, you can re-use the same
+keyword with up to an additional 10 parameters in unusually
+complicated situations, assuming the setup function supports it.)
+
+Most of the sorting goes on in linux/init/main.c.  First, the kernel
+checks to see if the argument is any of the special arguments `root=',
+`nfsroot=', `nfsaddrs=', `ro', `rw', `debug' or `init'.  The meaning
+of these special arguments is described below.
+
+Then it walks a list of setup functions (contained in the bootsetups
+array) to see if the specified argument string (such as `foo') has
+been associated with a setup function (`foo_setup()') for a particular
+device or part of the kernel. If you passed the kernel the line
+foo=3,4,5,6 then the kernel would search the bootsetups array to see
+if `foo' was registered. If it was, then it would call the setup
+function associated with `foo' (foo_setup()) and hand it the arguments
+3, 4, 5 and 6 as given on the kernel command line.
+
+Anything of the form `foo=bar' that is not accepted as a setup function
+as described above is then interpreted as an environment variable to
+be set. A (useless?) example would be to use `TERM=vt100' as a boot
+argument.
+
+Any remaining arguments that were not picked up by the kernel and were
+not interpreted as environment variables are then passed onto process
+one, which is usually the init program. The most common argument that
+is passed to the init process is the word `single' which instructs init
+to boot the computer in single user mode, and not launch all the usual
+daemons. Check the manual page for the version of init installed on
+your system to see what arguments it accepts.
+
+.SH "GENERAL NON-DEVICE SPECIFIC BOOT ARGS"
+
+.SS "`init=...'"
+
+This sets the initial command to be executed by the kernel.
+If this is not set, or cannot be found, the kernel will try
+.IR /etc/init ,
+then
+.IR /bin/init ,
+then
+.IR /sbin/init ,
+then
+.IR /bin/sh
+and panic if all of this fails.
+
+.SS "`nfsaddrs=...'"
+
+This sets the nfs boot address to the given string.
+This boot address is used in case of a net boot.
+
+.SS "`nfsroot=...'"
+
+This sets the nfs root name to the given string. If this string
+does not begin with '/' or ',' or a digit, then it is prefixed by
+`/tftpboot/'. This root name is used in case of a net boot.
+
+.SS  "`no387'"
+
+(Only when CONFIG_BUGi386 is defined.)
+Some i387 coprocessor chips have bugs that show up when used in 32 bit
+protected mode. For example, some of the early ULSI-387 chips would
+cause solid lockups while performing floating point calculations.
+Using the `no387' boot arg causes Linux to ignore the maths
+coprocessor even if you have one. Of course you must then have your
+kernel compiled with math emulation support!
+
+.SS "`no-hlt'"
+
+(Only when CONFIG_BUGi386 is defined.)
+Some of the early i486DX-100 chips have a problem with the `hlt'
+instruction, in that they can't reliably return to operating mode
+after this instruction is used. Using the `no-hlt' instruction tells
+Linux to just run an infinite loop when there is nothing else to do,
+and to not halt the CPU. This allows people with these broken chips
+to use Linux.
+
+.SS "`root=...'"
+
+This argument tells the kernel what device is to be used as the root
+filesystem while booting. The default of this setting is determined
+at compile time, and usually is the value of the root device of the
+system that the kernel was built on. To override this value, and
+select the second floppy drive as the root device, one would
+use `root=/dev/fd1'. (The root device can also be set using
+.BR rdev (8).)
+
+The root device can be specified symbolically or numerically.
+A symbolic specification has the form /dev/XXYN, where XX designates
+the device type (`hd' for ST-506 compatible hard disk, with Y in
+`a'-`d'; `sd' for SCSI compatible disk, with Y in `a'-`e';
+`ad' for Atari ACSI disk, with Y in `a'-`e',
+`ez' for a Syquest EZ135 parallel port removable drive, with Y=`a',
+`xd' for XT compatible disk, with Y either `a' or `b'; `fd' for
+floppy disk, with Y the floppy drive number - fd0 would be
+the DOS `A:' drive, and fd1 would be `B:'), Y the driver letter or
+number, and N the number (in decimal) of the partition on this device
+(absent in the case of floppies). Recent kernels allow many other
+types, mostly for CD-ROMs: nfs, ram, scd, mcd, cdu535, aztcd, cm206cd,
+gscd, sbpcd, sonycd, bpcd.
+(The type nfs specifies a net boot; ram refers to a ram disk.)
+
+Note that this has nothing to do with the designation of these
+devices on your file system. The `/dev/' part is purely conventional.
+
+The more awkward and less portable numeric specification of the above
+possible root devices in major/minor format is also accepted. (E.g.,
+/dev/sda3 is major 8, minor 3, so you could use `root=0x803' as an
+alternative.)
+
+.SS "`ro' and `rw'"
+
+The `ro' option tells the kernel to mount the root filesystem
+as `readonly' so that filesystem consistency check programs (fsck)
+can do their work on a quiescent file system. No processes can
+write to files on the filesystem in question until it is `remounted'
+as read/write capable, e.g., by `mount -w -n -o remount /'.
+(See also
+.BR mount (8).)
+
+The `rw' option tells the kernel to mount the root filesystem read/write.
+This is the default.
+
+The choice between read-only and read/write can also be set using
+.BR rdev (8).
+
+.SS "`reserve=...'"
+
+This is used to protect I/O port regions from probes.  The form of the
+command is:
+.IP
+.BI reserve= iobase,extent[,iobase,extent]...
+.LP
+In some machines it may be necessary to prevent device drivers from
+checking for devices (auto-probing) in a specific region. This may be
+because of hardware that reacts badly to the probing, or hardware
+that would be mistakenly identified, or merely
+hardware you don't want the kernel to initialize.
+
+The reserve boot-time argument specifies an I/O port region that
+shouldn't be probed. A device driver will not probe a reserved region,
+unless another boot argument explicitly specifies that it do so.
+
+For example, the boot line
+.IP
+reserve=0x300,32  blah=0x300
+.LP
+keeps all device drivers except the driver for `blah' from probing
+0x300-0x31f.
+
+.SS "`mem=...'"
+
+The BIOS call defined in the PC specification that returns
+the amount of installed memory was only designed to be able
+to report up to 64MB.  Linux uses this BIOS call at boot to
+determine how much memory is installed.  If you have more than 64MB of
+RAM installed, you can use this boot arg to tell Linux how much memory
+you have.  The value is in decimal or hexadecimal (prefix 0x),
+and the suffixes `k' (times 1024) or `M' (times 1048576) can be used.
+Here is a quote from Linus on usage of the `mem=' parameter.
+
+\&``The kernel will accept any `mem=xx' parameter you give it, and if it
+turns out that you lied to it, it will crash horribly sooner or later.
+The parameter indicates the highest addressable RAM address, so
+\&`mem=0x1000000' means you have 16MB of memory, for example.  For a
+96MB machine this would be `mem=0x6000000'.
+
+NOTE NOTE NOTE: some machines might use the top of memory for BIOS
+cacheing or whatever, so you might not actually have up to the full
+96MB addressable.  The reverse is also true: some chipsets will map
+the physical memory that is covered by the BIOS area into the area
+just past the top of memory, so the top-of-mem might actually be 96MB
++ 384kB for example.  If you tell linux that it has more memory than
+it actually does have, bad things will happen: maybe not at once, but
+surely eventually.''
+
+You can also use the boot argument `mem=nopentium' to turn off 4 MB
+pagetables on kernels configured for IA32 systems with a pentium or newer
+CPU.
+
+.SS "`panic=N'"
+By default the kernel will not reboot after a panic, but this option
+will cause a kernel reboot after N seconds (if N > 0).
+This panic timeout can also be set by "echo N > /proc/sys/kernel/panic".
+
+.SS "`reboot=[warm|cold][,[bios|hard]]'"
+(Only when CONFIG_BUGi386 is defined.)
+Since 2.0.22 a reboot is by default a cold reboot.
+One asks for the old default with `reboot=warm'.
+(A cold reboot may be required to reset certain hardware,
+but might destroy not yet written data in a disk cache.
+A warm reboot may be faster.)
+By default a reboot is hard, by asking the keyboard controller
+to pulse the reset line low, but there is at least one type
+of motherboard where that doesn't work. The option `reboot=bios' will
+instead jump through the BIOS.
+
+.SS "`nosmp'" and "`maxcpus=N'"
+(Only when __SMP__ is defined.)
+A command-line option of `nosmp' or `maxcpus=0' will disable SMP
+activation entirely; an option `maxcpus=N' limits the maximum number
+of CPUs activated in SMP mode to N.
+
+
+.SH "BOOT ARGUMENTS FOR USE BY KERNEL DEVELOPERS"
+
+.SS "`debug'"
+
+Kernel messages are handed off to the kernel log daemon klogd so that they
+may be logged to disk. Messages with a priority above 
+.I console_loglevel
+are also printed on the console. (For these levels, see <linux/kernel.h>.)
+By default this variable is set to log anything more important than
+debug messages. This boot argument will cause the kernel to also
+print the messages of DEBUG priority.
+The console loglevel can also be set at run time via an option
+to klogd. See
+.BR klogd (8).
+
+.SS "`profile=N'"
+
+It is possible to enable a kernel profiling function,
+if one wishes to find out where the kernel is spending its CPU cycles.
+Profiling is enabled by setting the variable
+.I prof_shift
+to a nonzero value. This is done either by specifying CONFIG_PROFILE at
+compile time, or by giving the `profile=' option.
+Now the value that
+.I prof_shift
+gets will be N, when given, or CONFIG_PROFILE_SHIFT, when that is given,
+or 2, the default. The significance of this variable is that it
+gives the granularity of the profiling: each clock tick, if the
+system was executing kernel code, a counter is incremented:
+.IP
+profile[address >> prof_shift]++;
+.LP
+The raw profiling information can be read from
+.IR /proc/profile .
+Probably you'll want to use a tool such as readprofile.c to digest it.
+Writing to
+.I /proc/profile
+will clear the counters.
+
+.SS "`swap=N1,N2,N3,N4,N5,N6,N7,N8'"
+Set the eight parameters max_page_age, page_advance, page_decline,
+page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight,
+bufferout_weight that control the kernel swap algorithm.
+For kernel tuners only.
+
+.SS "`buff=N1,N2,N3,N4,N5,N6'"
+Set the six parameters max_buff_age, buff_advance, buff_decline,
+buff_initial_age, bufferout_weight, buffermem_grace that control
+kernel buffer memory management. For kernel tuners only.
+
+
+
+.SH "BOOT ARGUMENTS FOR RAMDISK USE"
+(Only if the kernel was compiled with CONFIG_BLK_DEV_RAM.)
+In general it is a bad idea to use a ramdisk under Linux -
+the system will use available memory more efficiently itself.
+But while booting (or while constructing boot floppies)
+it is often useful to load the floppy contents into a
+ramdisk. One might also have a system in which first
+some modules (for filesystem or hardware) must be loaded
+before the main disk can be accessed.
+
+In Linux 1.3.48, ramdisk handling was changed drastically.
+Earlier, the memory was allocated statically, and there was
+a `ramdisk=N' parameter to tell its size. (This could also
+be set in the kernel image at compile time, or by use of
+.BR rdev (8).)
+These days ram disks use the buffer cache, and grow dynamically.
+For a lot of information (e.g., how to use
+.BR rdev (8)
+in conjunction with the new ramdisk setup), see
+.IR /usr/src/linux/Documentation/ramdisk.txt .
+
+There are four parameters, two boolean and two integral.
+
+.SS "`load_ramdisk=N'"
+If N=1, do load a ramdisk. If N=0, do not load a ramdisk.
+(This is the default.)
+
+.SS "`prompt_ramdisk=N'"
+If N=1, do prompt for insertion of the floppy. (This is the default.)
+If N=0, do not prompt. (Thus, this parameter is never needed.)
+
+.SS "`ramdisk_size=N' or (obsolete) `ramdisk=N'
+Set the maximal size of the ramdisk(s) to N kB. The default is 4096 (4 MB).
+
+.SS "`ramdisk_start=N'"
+Sets the starting block number (the offset on the floppy where
+the ramdisk starts) to N.
+This is needed in case the ramdisk follows a kernel image.
+
+.SS "`noinitrd'"
+(Only if the kernel was compiled with CONFIG_BLK_DEV_RAM
+and CONFIG_BLK_DEV_INITRD.)
+These days it is possible to compile the kernel to use initrd.
+When this feature is enabled, the boot process will load the kernel
+and an initial ramdisk; then the kernel converts initrd into
+a "normal" ramdisk, which is mounted read-write as root device;
+then /linuxrc is executed; afterwards the "real" root file system is mounted,
+and the initrd filesystem is moved over to /initrd; finally
+the usual boot sequence (e.g. invocation of /sbin/init) is performed.
+
+For a detailed description of the initrd feature, see
+.IR /usr/src/linux/Documentation/initrd.txt .
+
+The `noinitrd' option tells the kernel that although it was compiled for
+operation with initrd, it should not go through the above steps, but
+leave the initrd data under
+.IR /dev/initrd .
+(This device can be used only once - the data is freed as soon as
+the last process that used it has closed
+.IR /dev/initrd .)
+
+
+.SH "BOOT ARGUMENTS FOR SCSI DEVICES"
+
+General notation for this section:
+
+.I iobase
+-- the first I/O port that the SCSI host occupies.  These are
+specified in hexidecimal notation, and usually lie in the range from
+0x200 to 0x3ff.
+
+.I irq
+-- the hardware interrupt that the card is configured to use.
+Valid values will be dependent on the card in question, but will
+usually be 5, 7, 9, 10, 11, 12, and 15. The other values are usually
+used for common peripherals like IDE hard disks, floppies, serial
+ports, etc.
+
+.I scsi-id
+-- the ID that the host adapter uses to identify itself on the
+SCSI bus. Only some host adapters allow you to change this value, as
+most have it permanently specified internally. The usual default value
+is 7, but the Seagate and Future Domain TMC-950 boards use 6.
+
+.I parity
+-- whether the SCSI host adapter expects the attached devices
+to supply a parity value with all information exchanges.  Specifying a
+one indicates parity checking is enabled, and a zero disables parity
+checking. Again, not all adapters will support selection of parity
+behaviour as a boot argument.
+
+.SS "`max_scsi_luns=...'"
+
+A SCSI device can have a number of `sub-devices' contained within
+itself. The most common example is one of the new SCSI CD-ROMs that
+handle more than one disk at a time.  Each CD is addressed as a
+`Logical Unit Number' (LUN) of that particular device. But most
+devices, such as hard disks, tape drives and such are only one device,
+and will be assigned to LUN zero.
+
+Some poorly designed SCSI devices cannot handle being probed for
+LUNs not equal to zero. Therefore, if the compile time flag
+CONFIG_SCSI_MULTI_LUN is not set, newer kernels will by default
+only probe LUN zero.
+
+To specify the number of probed LUNs at boot, one enters
+`max_scsi_luns=n' as a boot arg, where n is a number between one and
+eight. To avoid problems as described above, one would use n=1 to
+avoid upsetting such broken devices.
+
+.SS "SCSI tape configuration"
+
+Some boot time configuration of the SCSI tape driver can be achieved
+by using the following:
+.IP
+.BI st= buf_size[,write_threshold[,max_bufs]]
+.LP
+The first two numbers are specified in units of kB.  The default
+.I buf_size
+is 32kB, and the maximum size that can be specified is a
+ridiculous 16384kB.  The
+.I write_threshold
+is the value at which the buffer is committed to tape, with a
+default value of 30kB.  The maximum number of buffers varies
+with the number of drives detected, and has a default of two.
+An example usage would be:
+.IP
+st=32,30,2
+.LP
+Full details can be found in the README.st file that is in the scsi
+directory of the kernel source tree.
+
+.SS "Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI configuration"
+
+The aha numbers refer to cards and the aic numbers refer to the actual
+SCSI chip on these type of cards, including the Soundblaster-16 SCSI.
+
+The probe code for these SCSI hosts looks for an installed BIOS, and
+if none is present, the probe will not find your card. Then you will
+have to use a boot arg of the form:
+.IP
+.BI aha152x= iobase[,irq[,scsi-id[,reconnect[,parity]]]]
+.LP
+If the driver was compiled with debugging enabled, a sixth
+value can be specified to set the debug level.
+
+All the parameters are as described at the top of this section, and the
+.I reconnect
+value will allow device disconnect/reconnect if a non-zero value
+is used. An example usage is as follows:
+.IP
+aha152x=0x340,11,7,1
+.LP
+Note that the parameters must be specified in order, meaning that if
+you want to specify a parity setting, then you will have to specify an
+iobase, irq, scsi-id and reconnect value as well.
+
+.SS "Adaptec aha154x configuration"
+
+The aha1542 series cards have an i82077 floppy controller onboard,
+while the aha1540 series cards do not. These are busmastering cards,
+and have parameters to set the ``fairness'' that is used to share
+the bus with other devices. The boot arg looks like the following.
+.IP
+.BI aha1542= iobase[,buson,busoff[,dmaspeed]]
+.LP
+Valid iobase values are usually one of: 0x130, 0x134, 0x230, 0x234,
+0x330, 0x334.  Clone cards may permit other values.
+
+The
+.IR buson ", " busoff
+values refer to the number of microseconds that the
+card dominates the ISA bus. The defaults are 11us on, and 4us off, so
+that other cards (such as an ISA LANCE Ethernet card) have a chance to
+get access to the ISA bus.
+
+The
+.I dmaspeed
+value refers to the rate (in MB/s) at which the DMA
+(Direct Memory Access) transfers proceed. The default is 5MB/s.
+Newer revision cards allow you to select this value as part of the
+soft-configuration, older cards use jumpers. You can use values up to
+10MB/s assuming that your motherboard is capable of handling it.
+Experiment with caution if using values over 5MB/s.
+
+.SS "Adaptec aha274x, aha284x, aic7xxx configuration"
+
+These boards can accept an argument of the form:
+.IP
+.BI aic7xxx= extended,no_reset
+.LP
+The
+.I extended
+value, if non-zero, indicates that extended translation for large
+disks is enabled. The
+.I no_reset
+value, if non-zero, tells the driver not to reset the SCSI bus when
+setting up the host adaptor at boot.
+
+.SS "AdvanSys SCSI Hosts configuration (`advansys=')"
+
+The AdvanSys driver can accept up to four i/o addresses that will be
+probed for an AdvanSys SCSI card. Note that these values (if used) do
+not effect EISA or PCI probing in any way.  They are only used for
+probing ISA and VLB cards.  In addition, if the driver has been
+compiled with debugging enabled, the level of debugging output can be
+set by adding an 0xdeb[0-f] parameter. The 0-f allows setting the
+level of the debugging messages to any of 16 levels of verbosity.
+
+.SS "AM53C974"
+.IP
+.BI AM53C974= host-scsi-id,target-scsi-id,max-rate,max-offset
+.LP
+
+.SS "BusLogic SCSI Hosts configuration (`BusLogic=')"
+.IP
+.BI BusLogic= N1,N2,N3,N4,N5,S1,S2,...
+.LP
+For an extensive discussion of the BusLogic command line parameters,
+see
+.IR /usr/src/linux/drivers/scsi/BusLogic.c
+(lines 3149-3270 in the kernel version I am looking at). The text
+below is a very much abbreviated extract.
+
+The parameters N1-N5 are integers. The parameters S1,... are strings.
+N1 is the I/O Address at which the Host Adapter is located.
+N2 is the Tagged Queue Depth to use for Target Devices that support
+Tagged Queuing.
+N3 is the Bus Settle Time in seconds.  This is the amount of time
+to wait between a Host Adapter Hard Reset which
+initiates a SCSI Bus Reset and issuing any SCSI Commands.
+N4 is the Local Options (for one Host Adapter).
+N5 is the Global Options (for all Host Adapters).
+
+The string options are used to provide control over Tagged Queuing
+(TQ:Default, TQ:Enable, TQ:Disable, TQ:<Per-Target-Spec>), over
+Error Recovery (ER:Default, ER:HardReset, ER:BusDeviceReset,
+ER:None, ER:<Per-Target-Spec>), and over Host Adapter Probing
+(NoProbe, NoProbeISA, NoSortPCI).
+
+.SS "EATA/DMA configuration"
+The default list of i/o ports to be probed can be changed by
+.IP
+.BI eata= iobase,iobase,... .
+.LP
+
+.SS "Future Domain TMC-16x0 configuration"
+.IP
+.BI fdomain= iobase,irq[,adapter_id]
+.LP
+
+.SS "Great Valley Products (GVP) SCSI controller configuration"
+.IP
+.BI gvp11= dma_transfer_bitmask
+.LP
+
+.SS "Future Domain TMC-8xx, TMC-950 configuration"
+.IP
+.BI tmc8xx= mem_base,irq
+.LP
+The
+.I mem_base
+value is the value of the memory mapped I/O region that
+the card uses. This will usually be one of the following values:
+0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.
+
+.SS "IN2000 configuration"
+.IP
+.BI in2000= S
+.LP
+where S is a comma-separated string of items keyword[:value].
+Recognized keywords (possibly with value) are:
+ioport:addr, noreset, nosync:x, period:ns, disconnect:x,
+debug:x, proc:x. For the function of these parameters, see
+.IR /usr/src/linux/drivers/scsi/in2000.c .
+
+.SS "NCR5380 and NCR53C400 configuration"
+The boot arg is of the form
+.IP
+.BI ncr5380= iobase,irq,dma
+.LP
+or
+.IP
+.BI ncr53c400= iobase,irq
+.LP
+If the card doesn't use interrupts, then an IRQ value of 255 (0xff) will
+disable interrupts. An IRQ value of 254 means to autoprobe. More
+details can be found in the file
+.IR /usr/src/linux/drivers/scsi/README.g_NCR5380 .
+
+.SS "NCR53C8xx configuration"
+.IP
+.BI ncr53c8xx= S
+.LP
+where S is a comma-separated string of items keyword:value.
+Recognized keywords are: mpar (master_parity), spar (scsi_parity),
+disc (disconnection), specf (special_features), ultra (ultra_scsi),
+fsn (force_sync_nego), tags (default_tags), sync (default_sync),
+verb (verbose), debug (debug), burst (burst_max).
+For the function of the assigned values, see
+.IR /usr/src/linux/drivers/scsi/ncr53c8xx.c .
+
+.SS "NCR53c406a configuration"
+.IP
+.BI ncr53c406a= iobase[,irq[,fastpio]]
+.LP
+Specify irq = 0 for non-interrupt driven mode.
+Set fastpio = 1 for fast pio mode, 0 for slow mode.
+
+.SS "Pro Audio Spectrum configuration"
+
+The PAS16 uses a NC5380 SCSI chip, and newer models support
+jumperless configuration. The boot arg is of the form:
+.IP
+.BI pas16= iobase,irq
+.LP
+The only difference is that you can specify an IRQ value of 255, which
+will tell the driver to work without using interrupts, albeit at a
+performance loss. The iobase is usually 0x388.
+
+.SS "Seagate ST-0x configuration"
+
+If your card is not detected at boot time,
+you will then have to use a boot arg of the form:
+.IP
+.BI st0x= mem_base,irq
+.LP
+The
+.I mem_base
+value is the value of the memory mapped I/O region that
+the card uses. This will usually be one of the following values:
+0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.
+
+.SS "Trantor T128 configuration"
+
+These cards are also based on the NCR5380 chip, and accept the
+following options:
+.IP
+.BI t128= mem_base,irq
+.LP
+The valid values for
+.I mem_base
+are as follows: 0xcc000, 0xc8000, 0xdc000, 0xd8000.
+
+.SS "UltraStor 14F/34F configuration"
+The default list of i/o ports to be probed can be changed by
+.IP
+.BI eata= iobase,iobase,... .
+.LP
+
+.SS "WD7000 configuration"
+.IP
+.BI wd7000= irq,dma,iobase
+.LP
+
+.SS "Commodore Amiga A2091/590 SCSI controller configuration"
+.IP
+.BI wd33c93= S
+.LP
+where S is a comma-separated string of options. Recognized options are
+nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x,
+clock:x, next. For details, see
+.IR /usr/src/linux/drivers/scsi/wd33c93.c .
+
+.SH "HARD DISKS"
+
+.SS "IDE Disk/CD-ROM Driver Parameters"
+
+The IDE driver accepts a number of parameters, which range from disk
+geometry specifications, to support for broken controller chips. Drive
+specific options are specified by using `hdX=' with X in `a'-`h'.
+
+Non-drive specific options are specified with the prefix `hd='. Note
+that using a drive specific prefix for a non-drive specific option
+will still work, and the option will just be applied as expected.
+
+Also note that `hd=' can be used to refer to the next unspecified
+drive in the (a, ..., h) sequence.  For the following discussions,
+the `hd=' option will be cited for brevity. See the file
+README.ide in linux/drivers/block for more details.
+
+.SS "The `hd=cyls,heads,sects[,wpcom[,irq]]' options"
+
+These options are used to specify the physical geometry of the disk.
+Only the first three values are required. The cylinder/head/sectors
+values will be those used by fdisk.  The write precompensation value
+is ignored for IDE disks.  The IRQ value specified will be the IRQ
+used for the interface that the drive resides on, and is not really a
+drive specific parameter.
+
+.SS "The `hd=serialize' option"
+
+The dual IDE interface CMD-640 chip is broken as designed such that
+when drives on the secondary interface are used at the same time as
+drives on the primary interface, it will corrupt your data. Using this
+option tells the driver to make sure that both interfaces are never
+used at the same time.
+
+.SS "The `hd=dtc2278' option"
+
+This option tells the driver that you have a DTC-2278D IDE interface.
+The driver then tries to do DTC specific operations to enable the
+second interface and to enable faster transfer modes.
+
+.SS "The `hd=noprobe' option"
+
+Do not probe for this drive. For example,
+.IP
+hdb=noprobe hdb=1166,7,17
+.LP
+would disable the probe, but still specify the drive geometry so
+that it would be registered as a valid block device, and hence
+usable.
+
+.SS "The `hd=nowerr' option"
+
+Some drives apparently have the WRERR_STAT bit stuck on permanently.
+This enables a work-around for these broken devices.
+
+.SS "The `hd=cdrom' option"
+
+This tells the IDE driver that there is an ATAPI compatible CD-ROM
+attached in place of a normal IDE hard disk. In most cases the CD-ROM
+is identified automatically, but if it isn't then this may help.
+
+.SS "Standard ST-506 Disk Driver Options (`hd=')"
+
+The standard disk driver can accept geometry arguments for the disks
+similar to the IDE driver. Note however that it only expects three
+values (C/H/S) -- any more or any less and it will silently ignore
+you. Also, it only accepts `hd=' as an argument, i.e. `hda='
+and so on are not valid here. The format is as follows:
+.IP
+hd=cyls,heads,sects
+.LP
+If there are two disks installed, the above is repeated with the
+geometry parameters of the second disk.
+
+.SS "XT Disk Driver Options (`xd=')"
+
+If you are unfortunate enough to be using one of these old 8 bit cards
+that move data at a whopping 125kB/s then here is the scoop.
+If the card is not recognised, you will have to use a boot arg of the form:
+.IP
+xd=type,irq,iobase,dma_chan
+.LP
+The type value specifies the particular manufacturer of the card,
+overriding autodetection. For the types to use, consult the
+.I drivers/block/xd.c
+source file of the kernel you are using. The type is an index in the list
+.I xd_sigs
+and in the course of time
+.\" 1.1.50, 1.3.81, 1.3.99, 2.0.34, 2.1.67, 2.1.78, 2.1.127
+types have been added to or deleted from the middle of the list,
+changing all type numbers. Today (Linux 2.5.0) the types are
+0=generic; 1=DTC 5150cx; 2,3=DTC 5150x; 4,5=Western Digital;
+6,7,8=Seagate; 9=Omti; 10=XEBEC, and where here several types are
+given with the same designation, they are equivalent.
+
+The xd_setup() function does no checking on the values, and assumes
+that you entered all four values. Don't disappoint it.  Here is an
+example usage for a WD1002 controller with the BIOS disabled/removed,
+using the `default' XT controller parameters:
+.IP
+xd=2,5,0x320,3
+.LP
+
+.SS "Syquest's EZ* removable disks"
+.IP
+.BI ez= iobase[,irq[,rep[,nybble]]]
+.LP
+
+.SH "IBM MCA BUS DEVICES"
+See also
+.IR /usr/src/linux/Documentation/mca.txt .
+
+.SS "PS/2 ESDI hard disks"
+It is possible to specify the desired geometry at boot time:
+.IP
+.BI ed= cyls,heads,sectors.
+.LP
+For a ThinkPad-720, add the option
+.IP
+.BR tp720=1 .
+.LP
+
+.SS "IBM Microchannel SCSI Subsystem configuration"
+.IP
+.BI ibmmcascsi= N
+.LP
+where N is the \fIpun\fP (SCSI ID) of the subsystem.
+
+.SH "CD-ROMs (Non-SCSI/ATAPI/IDE)"
+
+.SS "The Aztech Interface"
+
+The syntax for this type of card is:
+.IP
+aztcd=iobase[,magic_number]
+.LP
+If you set the magic_number to 0x79 then the driver will try and run
+anyway in the event of an unknown firmware version. All other values
+are ignored.
+
+.SS "Parallel port CD-ROM drives"
+Syntax:
+.IP
+pcd.driveN=prt,pro,uni,mod,slv,dly
+.br
+pcd.nice=nice
+.LP
+where `port' is the base address, `pro' is the protocol number, `uni'
+is the unit selector (for chained devices), `mod' is the mode (or -1
+to choose the best automatically), `slv' is 1 if it should be a slave,
+and `dly' is a small integer for slowing down port accesses.  The
+`nice' parameter controls the driver's use of idle CPU time, at the
+expense of some speed.
+
+.SS "The CDU-31A and CDU-33A Sony Interface"
+
+This CD-ROM interface is found on some of the Pro Audio Spectrum sound
+cards, and other Sony supplied interface cards.  The syntax is as
+follows:
+.IP
+cdu31a=iobase,[irq[,is_pas_card]]
+.LP
+Specifying an IRQ value of zero tells the driver that hardware
+interrupts aren't supported (as on some PAS cards). If your card
+supports interrupts, you should use them as it cuts down on the CPU
+usage of the driver.
+
+The
+.I is_pas_card
+should be entered as `PAS' if using a Pro Audio Spectrum card,
+and otherwise it should not be specified at all.
+
+.SS "The CDU-535 Sony Interface"
+
+The syntax for this CD-ROM interface is:
+.IP
+sonycd535=iobase[,irq]
+.LP
+A zero can be used for the I/O base as a `placeholder' if one wishes
+to specify an IRQ value.
+
+.SS "The GoldStar Interface"
+
+The syntax for this CD-ROM interface is:
+.IP
+gscd=iobase
+.LP
+
+.SS "The ISP16 CD-ROM Interface"
+Syntax:
+.IP
+isp16=[iobase[,irq[,dma[,type]]]]
+.LP
+(three integers and a string). If the type is given as `noisp16',
+the interface will not be configured. Other recognized types
+are: `Sanyo", `Sony', `Panasonic' and `Mitsumi'.
+
+.SS "The Mitsumi Standard Interface"
+
+The syntax for this CD-ROM interface is:
+.IP
+mcd=iobase,[irq[,wait_value]]
+.LP
+The
+.I wait_value
+is used as an internal timeout value for people who are
+having problems with their drive, and may or may not be implemented
+depending on a compile time #define.
+The Mitsumi FX400 is an IDE/ATAPI CD-ROM player and does not use
+the mcd driver.
+
+.SS "The Mitsumi XA/MultiSession Interface"
+
+This is for the same hardware as above, but the driver has extended features.
+Syntax:
+.IP
+mcdx=iobase[,irq]
+.LP
+
+.SS "The Optics Storage Interface"
+
+The syntax for this type of card is:
+.IP
+optcd=iobase
+.LP
+
+.SS "The Phillips CM206 Interface"
+
+The syntax for this type of card is:
+.IP
+cm206=[iobase][,irq]
+.LP
+
+The driver assumes numbers between 3 and 11 are IRQ values, and
+numbers between 0x300 and 0x370 are I/O ports, so you can specify one,
+or both numbers, in any order.  It also accepts `cm206=auto' to enable
+autoprobing.
+
+.SS "The Sanyo Interface"
+
+The syntax for this type of card is:
+.IP
+sjcd=iobase[,irq[,dma_channel]]
+.LP
+
+.SS "The SoundBlaster Pro Interface"
+
+The syntax for this type of card is:
+.IP
+sbpcd=iobase,type
+.LP
+where type is one of the following (case sensitive) strings:
+`SoundBlaster', `LaserMate', or `SPEA'.  The I/O base is that of the
+CD-ROM interface, and not that of the sound portion of the card.
+
+.SH "ETHERNET DEVICES"
+
+Different drivers make use of different parameters, but they all at
+least share having an IRQ, an I/O port base value, and a name. In its
+most generic form, it looks something like this:
+.IP
+ether=irq,iobase[,param_1[,...param_8]],name
+.LP
+The first non-numeric argument is taken as the name.  The param_n
+values (if applicable) usually have different meanings for each
+different card/driver.  Typical param_n values are used to specify
+things like shared memory address, interface selection, DMA channel
+and the like.
+
+The most common use of this parameter is to force probing for a second
+ethercard, as the default is to only probe for one. This can be
+accomplished with a simple:
+.IP
+ether=0,0,eth1
+.LP
+Note that the values of zero for the IRQ and I/O base in the above
+example tell the driver(s) to autoprobe.
+
+The Ethernet-HowTo has extensive documentation on using multiple
+cards and on the card/driver specific implementation
+of the param_n values where used. Interested readers should refer to
+the section in that document on their particular card.
+
+.SH "THE FLOPPY DISK DRIVER"
+
+There are many floppy driver options, and they are all listed in
+README.fd in linux/drivers/block. This information is taken directly
+from that file.
+
+.SS "floppy=mask,allowed_drive_mask"
+
+Sets the bitmask of allowed drives to mask. By default, only units 0
+and 1 of each floppy controller are allowed. This is done because
+certain non-standard hardware (ASUS PCI motherboards) mess up the
+keyboard when accessing units 2 or 3. This option is somewhat
+obsoleted by the cmos option.
+
+.SS "floppy=all_drives"
+
+Sets the bitmask of allowed drives to all drives. Use this if you have
+more than two drives connected to a floppy controller.
+
+.SS "floppy=asus_pci"
+
+Sets the bitmask to allow only units 0 and 1. (The default)
+
+.SS "floppy=daring"
+
+Tells the floppy driver that you have a well behaved floppy
+controller.  This allows more efficient and smoother operation, but
+may fail on certain controllers. This may speed up certain operations.
+
+.SS "floppy=0,daring"
+
+Tells the floppy driver that your floppy controller should be used
+with caution.
+
+.SS "floppy=one_fdc"
+
+Tells the floppy driver that you have only floppy controller (default)
+
+.SS "floppy=two_fdc or floppy=address,two_fdc"
+
+Tells the floppy driver that you have two floppy controllers. The
+second floppy controller is assumed to be at address. If address is
+not given, 0x370 is assumed.
+
+.SS "floppy=thinkpad"
+
+Tells the floppy driver that you have a Thinkpad. Thinkpads use an
+inverted convention for the disk change line.
+
+.SS "floppy=0,thinkpad"
+
+Tells the floppy driver that you don't have a Thinkpad.
+
+.SS "floppy=drive,type,cmos"
+
+Sets the cmos type of drive to type.  Additionally, this drive is
+allowed in the bitmask. This is useful if you have more than two
+floppy drives (only two can be described in the physical cmos), or if
+your BIOS uses non-standard CMOS types.  Setting the CMOS to 0 for the
+first two drives (default) makes the floppy driver read the physical
+cmos for those drives.
+
+.SS "floppy=unexpected_interrupts"
+
+Print a warning message when an unexpected interrupt is received
+(default behaviour)
+
+.SS "floppy=no_unexpected_interrupts or floppy=L40SX"
+
+Don't print a message when an unexpected interrupt is received. This
+is needed on IBM L40SX laptops in certain video modes. (There seems to
+be an interaction between video and floppy. The unexpected interrupts
+only affect performance, and can safely be ignored.)
+
+.SH "THE SOUND DRIVER"
+
+The sound driver can also accept boot args to override the compiled in
+values. This is not recommended, as it is rather complex. It is
+described in the Readme.Linux file, in linux/drivers/sound. It accepts
+a boot arg of the form:
+.IP
+sound=device1[,device2[,device3...[,device10]]]
+.LP
+where each deviceN value is of the following format 0xTaaaId and the
+bytes are used as follows:
+
+T - device type: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16,
+7=SB16-MPU401
+
+aaa - I/O address in hex.
+
+I - interrupt line in hex (i.e 10=a, 11=b, ...)
+
+d - DMA channel.
+
+As you can see it gets pretty messy, and you are better off to compile
+in your own personal values as recommended. Using a boot arg of
+`sound=0' will disable the sound driver entirely.
+
+
+.SH "ISDN DRIVERS"
+
+.SS "The ICN ISDN driver"
+Syntax:
+.IP
+icn=iobase,membase,icn_id1,icn_id2
+.LP
+where icn_id1,icn_id2 are two strings used to identify the
+card in kernel messages.
+
+.SS "The PCBIT ISDN driver"
+Syntax:
+.IP
+pcbit=membase1,irq1[,membase2,irq2]
+.LP
+where membaseN is the shared memory base of the N'th card, and irqN is
+the interrupt setting of the N'th card. The default is IRQ 5 and
+membase 0xD0000.
+
+.SS "The Teles ISDN driver"
+Syntax:
+.IP
+teles=iobase,irq,membase,protocol,teles_id
+.LP
+where iobase is the i/o port address of the card, membase is the
+shared memory base address of the card, irq is the interrupt channel
+the card uses, and teles_id is the unique ASCII string identifier.
+
+.SH "SERIAL PORT DRIVERS"
+
+.SS "The RISCom/8 Multiport Serial Driver (`riscom8=')"
+Syntax:
+.IP
+riscom=iobase1[,iobase2[,iobase3[,iobase4]]]
+.LP
+More details can be found in
+.IR /usr/src/linux/Documentation/riscom8.txt .
+
+.SS "The DigiBoard Driver (`digi=')"
+If this option is used, it should have precisely six parameters.
+Syntax:
+.IP
+digi=status,type,altpin,numports,iobase,membase
+.LP
+The parameters maybe given as integers, or as strings.
+If strings are used, then iobase and membase should be given
+in hexadecimal.
+The integer arguments (fewer may be given) are in order:
+status (Enable(1) or Disable(0) this card),
+type (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)),
+altpin (Enable(1) or Disable(0) alternate pin arrangement),
+numports (number of ports on this card),
+iobase (I/O Port where card is configured (in HEX)),
+membase (base of memory window (in HEX)).
+Thus, the following two boot prompt arguments are equivalent:
+.IP
+digi=E,PC/Xi,D,16,200,D0000
+.br
+digi=1,0,0,16,0x200,851968
+.LP
+More details can be found in
+.IR /usr/src/linux/Documentation/digiboard.txt .
+
+.SS "The Baycom Serial/Parallel Radio Modem"
+Syntax:
+.IP
+baycom=iobase,irq,modem
+.LP
+There are precisely 3 parameters; for several cards, give
+several `baycom=' commands. The modem parameter is a string
+that can take one of the values ser12, ser12*, par96, par96*.
+Here the * denotes that software DCD is to be used, and
+ser12/par96 chooses between the supported modem types.
+For more details, see
+.IR /usr/src/linux/drivers/net/README.baycom .
+
+.SS "Soundcard radio modem driver"
+Syntax:
+.IP
+soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode
+.LP
+All parameters except the last are integers;
+the dummy 0 is required because of a bug in the setup code.
+The mode parameter is a string with syntax hw:modem,
+where hw is one of sbc, wss, wssfdx and modem is one of
+afsk1200, fsk9600.
+
+.SH "THE LINE PRINTER DRIVER"
+
+.SS "`lp='"
+Syntax:
+.IP
+lp=0
+.br
+lp=auto
+.br
+lp=reset
+.br
+lp=port[,port...]
+.LP
+You can tell the printer driver what ports to use and what ports not
+to use. The latter comes in handy if you don't want the printer driver
+to claim all available parallel ports, so that other drivers
+(e.g. PLIP, PPA) can use them instead.
+
+The format of the argument is multiple port names. For example,
+lp=none,parport0 would use the first parallel port for lp1, and
+disable lp0.  To disable the printer driver entirely, one can use
+lp=0.
+
+.SS "WDT500/501 driver"
+Syntax:
+.IP
+wdt=io,irq
+.LP
+
+.SH "MOUSE DRIVERS"
+
+.SS "`bmouse=irq'"
+The busmouse driver only accepts one parameter, that being the
+hardware IRQ value to be used.
+
+.SS "`msmouse=irq'"
+And precisely the same is true for the msmouse driver.
+
+.SS "ATARI mouse setup"
+.LP
+atamouse=threshold[,y-threshold]
+.IP
+If only one argument is given, it is used for both
+x-threshold and y-threshold. Otherwise, the first argument
+is the x-threshold, and the second the y-threshold.
+These values must lie between 1 and 20 (inclusive); the default is 2.
+
+.SH "VIDEO HARDWARE"
+
+.SS "`no-scroll'"
+This option tells the console driver not to use hardware scroll
+(where a scroll is effected by moving the screen origin in video
+memory, instead of moving the data). It is required by certain
+Braille machines.
+
+.SH AUTHORS
+Linus Torvalds (and many others)
+
+.SH "SEE ALSO"
+.BR klogd (8),
+.BR lilo.conf (5),
+.BR lilo (8),
+.BR mount (8),
+.BR rdev (8)
+
+Large parts of this man page have been derived from the
+Boot Parameter HOWTO (version 1.0.1) written by Paul Gortmaker.
+More information may be found in this (or a more recent) HOWTO.
+An uptodate source of information is
+.IR /usr/src/linux/Documentation/kernel-parameters.txt .
diff --git a/raw/man7/charsets.7 b/raw/man7/charsets.7
new file mode 100644
index 0000000..dd9f1d9
--- /dev/null
+++ b/raw/man7/charsets.7
@@ -0,0 +1,322 @@
+.\" Copyright (c) 1996 Eric S. Raymond <esr at thyrsus.com>
+.\"                and Andries Brouwer <aeb at cwi.nl>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" This is combined from many sources, including notes by aeb and
+.\" research by esr.  Portions derive from a writeup by Roman Czyborra.
+.\"
+.\" Last changed by David Starner <dstarner98 at aasaa.ofe.org>.
+.TH CHARSETS 7 2001-05-07 "Linux" "Linux Programmer's Manual"
+.SH NAME
+charsets \- programmer's view of character sets and internationalization
+.SH DESCRIPTION
+Linux is an international operating system.  Various of its utilities
+and device drivers (including the console driver) support multilingual
+character sets including Latin-alphabet letters with diacritical
+marks, accents, ligatures, and entire non-Latin alphabets including
+Greek, Cyrillic, Arabic, and Hebrew.
+.LP
+This manual page presents a programmer's-eye view of different
+character-set standards and how they fit together on Linux.  Standards
+discussed include ASCII, ISO 8859, KOI8-R, Unicode, ISO 2022 and
+ISO 4873.  The primary emphasis is on character sets actually used as
+locale character sets, not the myriad others that can be found in data
+from other systems.
+.LP
+A complete list of charsets used in a officially supported locale in glibc
+2.2.3 is: ISO-8859-{1,2,3,5,6,7,8,9,13,15}, CP1251, UTF-8, EUC-{KR,JP,TW},
+KOI8-{R,U}, GB2312, GB18030, GBK, BIG5, BIG5-HKSCS and TIS-620 (in no
+particular order.) (Romanian may be switching to ISO-8859-16.)
+
+.SH ASCII
+ASCII (American Standard Code For Information Interchange) is the original
+7-bit character set, originally designed for American English.  It is
+currently described by the ECMA-6 standard.
+.LP
+Various ASCII variants replacing the dollar sign with other currency
+symbols and replacing punctuation with non-English alphabetic characters
+to cover German, French, Spanish and others in 7 bits exist.  All are
+deprecated; GNU libc doesn't support locales whose character sets aren't
+true supersets of ASCII. (These sets are also known as ISO-646, a close
+relative of ASCII that permitted replacing these characters.)
+.LP
+As Linux was written for hardware designed in the US, it natively
+supports ASCII.
+
+.SH ISO 8859
+ISO 8859 is a series of 15 8-bit character sets all of which have US
+ASCII in their low (7-bit) half, invisible control characters in
+positions 128 to 159, and 96 fixed-width graphics in positions 160-255.
+.LP
+Of these, the most important is ISO 8859-1 (Latin-1).  It is natively
+supported in the Linux console driver, fairly well supported in X11R6,
+and is the base character set of HTML.
+.LP
+Console support for the other 8859 character sets is available under
+Linux through user-mode utilities (such as
+.BR setfont (8))
+.\" // some distributions still have the deprecated consolechars
+that modify keyboard bindings and the EGA graphics
+table and employ the "user mapping" font table in the console
+driver.
+.LP
+Here are brief descriptions of each set:
+.TP
+8859-1 (Latin-1)
+Latin-1 covers most Western European languages such as Albanian, Catalan,
+Danish, Dutch, English, Faroese, Finnish, French, German, Galician,
+Irish, Icelandic, Italian, Norwegian, Portuguese, Spanish, and
+Swedish. The lack of the ligatures Dutch ij, French oe and old-style
+,,German`` quotation marks is considered tolerable.
+.TP
+8859-2 (Latin-2)
+Latin-2 supports most Latin-written Slavic and Central European
+languages: Croatian, Czech, German, Hungarian, Polish, Rumanian,
+Slovak, and Slovene.
+.TP
+8859-3 (Latin-3)
+Latin-3 is popular with authors of Esperanto, Galician, and Maltese.
+(Turkish is now written with 8859-9 instead.)
+.TP
+8859-4 (Latin-4)
+Latin-4 introduced letters for Estonian, Latvian, and Lithuanian.  It
+is essentially obsolete; see 8859-10 (Latin-6) and 8859-13 (Latin-7).
+.TP
+8859-5
+Cyrillic letters supporting Bulgarian, Byelorussian, Macedonian,
+Russian, Serbian and Ukrainian.  Ukrainians read the letter `ghe'
+with downstroke as `heh' and would need a ghe with upstroke to write a
+correct ghe.  See the discussion of KOI8-R below.
+.TP
+8859-6
+Supports Arabic.  The 8859-6 glyph table is a fixed font of separate
+letter forms, but a proper display engine should combine these
+using the proper initial, medial, and final forms.
+.TP
+8859-7
+Supports Modern Greek.
+.TP
+8859-8
+Supports modern Hebrew without niqud (punctuation signs). Niqud
+and full-fledged Biblical Hebrew are outside the scope of this
+character set; under Linux, UTF-8 is the preferred encoding for
+these.
+.TP
+8859-9 (Latin-5)
+This is a variant of Latin-1 that replaces Icelandic letters with
+Turkish ones.
+.TP
+8859-10 (Latin-6)
+Latin 6 adds the last Inuit (Greenlandic) and Sami (Lappish) letters
+that were missing in Latin 4 to cover the entire Nordic area.  RFC
+1345 listed a preliminary and different `latin6'. Skolt Sami still
+needs a few more accents than these.
+.TP
+8859-11
+This only exists as a rejected draft standard. The draft standard
+was identical to TIS-620, which is used under Linux for Thai.
+.TP
+8859-12
+This set does not exist. While Vietnamese has been suggested for this
+space, it does not fit within the 96 (non-combining) characters ISO
+8859 offers. UTF-8 is the preferred character set for Vietnamese use
+under Linux.
+.TP
+8859-13 (Latin-7)
+Supports the Baltic Rim languages; in particular, it includes Latvian
+characters not found in Latin-4.
+.TP
+8859-14 (Latin-8)
+This is the Celtic character set, covering Gaelic and Welsh.
+This charset also contains the dotted characters needed for Old Irish.
+.TP
+8859-15 (Latin-9)
+This adds the Euro sign and French and Finnish letters that were missing in
+Latin-1.
+.TP
+8859-16 (Latin-10)
+This set covers many of the languages covered by 8859-2, and supports
+Romanian more completely then that set does.
+.SH KOI8-R
+KOI8-R is a non-ISO character set popular in Russia.  The lower half
+is US ASCII; the upper is a Cyrillic character set somewhat better
+designed than ISO 8859-5. KOI8-U is a common character set, based off
+KOI8-R, that has better support for Ukrainian. Neither of these sets
+are ISO-2022 compatible, unlike the ISO-8859 series.
+.LP
+Console support for KOI8-R is available under Linux through user-mode
+utilities that modify keyboard bindings and the EGA graphics table,
+and employ the "user mapping" font table in the console driver.
+
+.\" Thanks to Tomohiro KUBOTA for the following sections about 
+.\" national standards.
+.SH JIS X 0208
+JIS X 0208 is a Japanese national standard character set. Though
+there are some more Japanese national standard character sets (like
+JIS X 0201, JIS X 0212, and JIS X 0213), this is the most important
+one. Characters are mapped into a 94x94 two-byte matrix,
+whose each byte is in the range 0x21-0x7e. Note that JIS X 0208
+is a character set, not an encoding. This means that JIS X 0208
+itself is not used for expressing text data. JIS X 0208 is used
+as a component to construct encodings such as EUC-JP, Shift_JIS,
+and ISO-2022-JP. EUC-JP is the most important encoding for Linux
+and includes US ASCII and JIS X 0208. In EUC-JP, JIS X 0208
+characters are expressed in two bytes, each of which is the
+JIS X 0208 code plus 0x80.
+
+.SH KS X 1001
+KS X 1001 is a Korean national standard character set. Just as
+JIS X 0208, characters are mapped into a 94x94 two-byte matrix.
+KS X 1001 is used like JIS X 0208, as a component
+to construct encodings such as EUC-KR, Johab, and ISO-2022-KR.
+EUC-KR is the most important encoding for Linux and includes
+US ASCII and KS X 1001. KS C 5601 is an older name for KS X 1001.
+
+.SH GB 2312
+GB 2312 is a mainland Chinese national standard character set used
+to express simplified Chinese. Just like JIS X 0208, characters are
+mapped into a 94x94 two-byte matrix used to construct EUC-CN.  EUC-CN
+is the most important encoding for Linux and includes US ASCII and
+GB 2312.  Note that EUC-CN is often called as GB, GB 2312, or CN-GB.
+
+.SH Big5
+Big5 is a popular character set in Taiwan to express traditional
+Chinese. (Big5 is both a character set and an encoding.) It is a
+superset of US ASCII. Non-ASCII characters are expressed in two
+bytes. Bytes 0xa1-0xfe are used as leading bytes for two-byte
+characters. Big5 and its extension is widely used in Taiwan and Hong
+Kong. It is not ISO 2022-compliant.
+
+.SH TIS 620
+TIS 620 is a Thai national standard character set and a superset
+of US ASCII. Like ISO 8859 series, Thai characters are mapped into
+0xa1-0xfe. TIS 620 is the only commonly used character set under
+Linux besides UTF-8 to have combining characters.
+
+.SH UNICODE
+Unicode (ISO 10646) is a standard which aims to unambiguously represent every
+character in every human language.  Unicode's structure permits 20.1 bits
+to encode every character. Since most computers don't include 20.1-bit
+integers, Unicode is usually encoded as 32-bit integers internally and
+either a series of 16-bit integers (UTF-16) (needing two 16-bit integers
+only when encoding certain rare characters) or a series of 8-bit bytes
+(UTF-8). Information on Unicode is available at <http://www.unicode.com>.
+.LP
+Linux represents Unicode using the 8-bit Unicode Transformation Format
+(UTF-8).  UTF-8 is a variable length encoding of Unicode.  It uses 1
+byte to code 7 bits, 2 bytes for 11 bits, 3 bytes for 16 bits, 4 bytes
+for 21 bits, 5 bytes for 26 bits, 6 bytes for 31 bits.
+.LP
+Let 0,1,x stand for a zero, one, or arbitrary bit.  A byte 0xxxxxxx
+stands for the Unicode 00000000 0xxxxxxx which codes the same symbol
+as the ASCII 0xxxxxxx.  Thus, ASCII goes unchanged into UTF-8, and
+people using only ASCII do not notice any change: not in code, and not
+in file size.
+.LP
+A byte 110xxxxx is the start of a 2-byte code, and 110xxxxx 10yyyyyy
+is assembled into 00000xxx xxyyyyyy.  A byte 1110xxxx is the start
+of a 3-byte code, and 1110xxxx 10yyyyyy 10zzzzzz is assembled
+into xxxxyyyy yyzzzzzz.
+(When UTF-8 is used to code the 31-bit ISO 10646
+then this progression continues up to 6-byte codes.)
+.LP
+For most people who use ISO-8859 character sets, this means that the
+characters outside of ASCII are now coded with two bytes. This tends
+to expand ordinary text files by only one or two percent. For Russian
+or Greek users, this expands ordinary text files by 100%, since text in
+those languages is mostly outside of ASCII. For Japanese users this means
+that the 16-bit codes now in common use will take three bytes. While there
+are algorithmic conversions from some character sets (esp. ISO-8859-1) to
+Unicode, general conversion requires carrying around conversion tables,
+which can be quite large for 16-bit codes.
+.LP
+Note that UTF-8 is self-synchronizing: 10xxxxxx is a tail, any other
+byte is the head of a code.  Note that the only way ASCII bytes occur
+in a UTF-8 stream, is as themselves. In particular, there are no
+embedded NULs or '/'s that form part of some larger code.
+.LP
+Since ASCII, and, in particular, NUL and '/', are unchanged, the
+kernel does not notice that UTF-8 is being used. It does not care at
+all what the bytes it is handling stand for.
+.LP
+Rendering of Unicode data streams is typically handled through
+`subfont' tables which map a subset of Unicode to glyphs.  Internally
+the kernel uses Unicode to describe the subfont loaded in video RAM.
+This means that in UTF-8 mode one can use a character set with 512
+different symbols.  This is not enough for Japanese, Chinese and
+Korean, but it is enough for most other purposes.
+.LP
+At the current time, the console driver does not handle combining
+characters. So Thai, Sioux and any other script needing combining
+characters can't be handled on the console.
+
+.SH "ISO 2022 AND ISO 4873"
+The ISO 2022 and 4873 standards describe a font-control model
+based on VT100 practice.  This model is (partially) supported
+by the Linux kernel and by
+.BR xterm (1).
+It is popular in Japan and Korea.
+.LP
+There are 4 graphic character sets, called G0, G1, G2 and G3,
+and one of them is the current character set for codes with
+high bit zero (initially G0), and one of them is the current
+character set for codes with high bit one (initially G1).
+Each graphic character set has 94 or 96 characters, and is
+essentially a 7-bit character set. It uses codes either
+040-0177 (041-0176) or 0240-0377 (0241-0376).
+G0 always has size 94 and uses codes 041-0176.
+.LP
+Switching between character sets is done using the shift functions
+^N (SO or LS1), ^O (SI or LS0), ESC n (LS2), ESC o (LS3),
+ESC N (SS2), ESC O (SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R).
+The function LS\fIn\fP makes character set G\fIn\fP the current one
+for codes with high bit zero.
+The function LS\fIn\fPR makes character set G\fIn\fP the current one
+for codes with high bit one.
+The function SS\fIn\fP makes character set G\fIn\fP (\fIn\fP=2 or 3)
+the current one for the next character only (regardless of the value
+of its high order bit).
+.LP
+A 94-character set is designated as G\fIn\fP character set
+by an escape sequence ESC ( xx (for G0), ESC ) xx (for G1),
+ESC * xx (for G2), ESC + xx (for G3), where xx is a symbol
+or a pair of symbols found in the ISO 2375 International
+Register of Coded Character Sets.
+For example, ESC ( @ selects the ISO 646 character set as G0,
+ESC ( A selects the UK standard character set (with pound
+instead of number sign), ESC ( B selects ASCII (with dollar
+instead of currency sign), ESC ( M selects a character set
+for African languages, ESC ( ! A selects the Cuban character
+set, etc. etc.
+.LP
+A 96-character set is designated as G\fIn\fP character set
+by an escape sequence ESC - xx (for G1), ESC . xx (for G2)
+or ESC / xx (for G3).
+For example, ESC - G selects the Hebrew alphabet as G1.
+.LP
+A multibyte character set is designated as G\fIn\fP character set
+by an escape sequence ESC $ xx or ESC $ ( xx (for G0),
+ESC $ ) xx (for G1), ESC $ * xx (for G2), ESC $ + xx (for G3).
+For example, ESC $ ( C selects the Korean character set for G0.
+The Japanese character set selected by ESC $ B has a more
+recent version selected by ESC & @ ESC $ B.
+.LP
+ISO 4873 stipulates a narrower use of character sets, where G0
+is fixed (always ASCII), so that G1, G2 and G3
+can only be invoked for codes with the high order bit set.
+In particular, ^N and ^O are not used anymore, ESC ( xx
+can be used only with xx=B, and ESC ) xx, ESC * xx, ESC + xx
+are equivalent to ESC - xx, ESC . xx, ESC / xx, respectively.
+
+.SH "SEE ALSO"
+.BR console (4),
+.BR console_ioctl (4),
+.BR console_codes (4),
+.BR ascii (7),
+.BR iso_8859-1 (7),
+.BR unicode (7),
+.BR utf-8 (7)
diff --git a/raw/man7/checkpoint.7 b/raw/man7/checkpoint.7
new file mode 100644
index 0000000..45a0c2b
--- /dev/null
+++ b/raw/man7/checkpoint.7
@@ -0,0 +1,32 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CHECKPOINT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CHECKPOINT \- force a transaction log checkpoint
+
+.SH SYNOPSIS
+.sp
+.nf
+CHECKPOINT
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+Write-Ahead Logging (WAL) puts a checkpoint in the transaction log
+every so often. (To adjust the automatic checkpoint interval, see
+the run-time
+configuration options checkpoint_segments
+and checkpoint_timeout.)
+The \fBCHECKPOINT\fR command forces an immediate checkpoint
+when the command is issued, without waiting for a scheduled checkpoint.
+.PP
+A checkpoint is a point in the transaction log sequence at which
+all data files have been updated to reflect the information in the
+log. All data files will be flushed to disk. Refer to the
+the chapter called ``Write-Ahead Logging'' in the documentation for more information about the WAL system.
+.PP
+Only superusers may call \fBCHECKPOINT\fR. The command is
+not intended for use during normal operation.
+.SH "COMPATIBILITY"
+.PP
+The \fBCHECKPOINT\fR command is a
+PostgreSQL language extension.
diff --git a/raw/man7/close.7 b/raw/man7/close.7
new file mode 100644
index 0000000..32ecaf6
--- /dev/null
+++ b/raw/man7/close.7
@@ -0,0 +1,47 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CLOSE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CLOSE \- close a cursor
+
+.SH SYNOPSIS
+.sp
+.nf
+CLOSE \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCLOSE\fR frees the resources associated with an open cursor.
+After the cursor is closed, no subsequent operations
+are allowed on it. A cursor should be closed when it is
+no longer needed.
+.PP
+Every non-holdable open cursor is implicitly closed when a
+transaction is terminated by \fBCOMMIT\fR or
+\fBROLLBACK\fR. A holdable cursor is implicitly
+closed if the transaction that created it aborts via
+\fBROLLBACK\fR. If the creating transaction successfully
+commits, the holdable
+cursor remains open until an explicit \fBCLOSE\fR is
+executed, or the client disconnects.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of an open cursor to close.
+.SH "NOTES"
+.PP
+PostgreSQL does not have an explicit
+\fBOPEN\fR cursor statement; a cursor is considered
+open when it is declared. Use the \fBDECLARE\fR
+statement to declare a cursor.
+.SH "EXAMPLES"
+.PP
+Close the cursor liahona:
+.sp
+.nf
+CLOSE liahona;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCLOSE\fR is fully conforming with the SQL standard.
diff --git a/raw/man7/cluster.7 b/raw/man7/cluster.7
new file mode 100644
index 0000000..9dc1ab2
--- /dev/null
+++ b/raw/man7/cluster.7
@@ -0,0 +1,137 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CLUSTER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CLUSTER \- cluster a table according to an index
+
+.SH SYNOPSIS
+.sp
+.nf
+CLUSTER \fIindexname\fR ON \fItablename\fR
+CLUSTER \fItablename\fR
+CLUSTER
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCLUSTER\fR instructs PostgreSQL 
+to cluster the table specified
+by \fItablename\fR
+based on the index specified by
+\fIindexname\fR. The index must
+already have been defined on 
+\fItablename\fR.
+.PP
+When a table is clustered, it is physically reordered
+based on the index information. Clustering is a one-time operation:
+when the table is subsequently updated, the changes are
+not clustered. That is, no attempt is made to store new or
+updated rows according to their index order. If one wishes, one can
+periodically recluster by issuing the command again.
+.PP
+When a table is clustered, PostgreSQL
+remembers on which index it was clustered. The form
+\fBCLUSTER \fItablename\fB\fR,
+reclusters the table on the same index that it was clustered before.
+.PP
+\fBCLUSTER\fR without any parameter reclusters all the tables
+in the
+current database that the calling user owns, or all tables if called
+by a superuser. (Never-clustered tables are not included.) This
+form of \fBCLUSTER\fR cannot be called from inside a
+transaction or function.
+.PP
+When a table is being clustered, an ACCESS
+EXCLUSIVE lock is acquired on it. This prevents any other
+database operations (both reads and writes) from operating on the
+table until the \fBCLUSTER\fR is finished.
+.SH "PARAMETERS"
+.TP
+\fB\fIindexname\fB\fR
+The name of an index.
+.TP
+\fB\fItablename\fB\fR
+The name (possibly schema-qualified) of a table.
+.SH "NOTES"
+.PP
+In cases where you are accessing single rows randomly
+within a table, the actual order of the data in the
+table is unimportant. However, if you tend to access some
+data more than others, and there is an index that groups
+them together, you will benefit from using \fBCLUSTER\fR.
+If you are requesting a range of indexed values from a table, or a
+single indexed value that has multiple rows that match,
+\fBCLUSTER\fR will help because once the index identifies the
+heap page for the first row that matches, all other rows
+that match are probably already on the same heap page,
+and so you save disk accesses and speed up the query.
+.PP
+During the cluster operation, a temporary copy of the table is created
+that contains the table data in the index order. Temporary copies of
+each index on the table are created as well. Therefore, you need free
+space on disk at least equal to the sum of the table size and the index
+sizes.
+.PP
+Because \fBCLUSTER\fR remembers the clustering information,
+one can cluster the tables one wants clustered manually the first time, and
+setup a timed event similar to \fBVACUUM\fR so that the tables
+are periodically reclustered.
+.PP
+Because the planner records statistics about the ordering of tables, it
+is advisable to run \fBANALYZE\fR on the newly clustered
+table. Otherwise, the planner may make poor choices of query plans.
+.PP
+There is another way to cluster data. The
+\fBCLUSTER\fR command reorders the original table using
+the ordering of the index you specify. This can be slow
+on large tables because the rows are fetched from the heap
+in index order, and if the heap table is unordered, the
+entries are on random pages, so there is one disk page
+retrieved for every row moved. (PostgreSQL has a cache,
+but the majority of a big table will not fit in the cache.)
+The other way to cluster a table is to use
+.sp
+.nf
+CREATE TABLE \fInewtable\fR AS
+    SELECT \fIcolumnlist\fR FROM \fItable\fR ORDER BY \fIcolumnlist\fR;
+.sp
+.fi
+which uses the PostgreSQL sorting code in 
+the ORDER BY clause to create the desired order; this is usually much
+faster than an index scan for
+unordered data. You then drop the old table, use
+\fBALTER TABLE ... RENAME\fR
+to rename \fInewtable\fR to the old name, and
+recreate the table's indexes. However, this approach does not preserve
+OIDs, constraints, foreign key relationships, granted privileges, and
+other ancillary properties of the table --- all such items must be
+manually recreated.
+.SH "EXAMPLES"
+.PP
+Cluster the table employees on the basis of
+its index emp_ind:
+.sp
+.nf
+CLUSTER emp_ind ON emp;
+.sp
+.fi
+.PP
+Cluster the employees relation using the same
+index that was used before:
+.sp
+.nf
+CLUSTER emp;
+.sp
+.fi
+.PP
+Cluster all the tables on the database that have previously been clustered:
+.sp
+.nf
+CLUSTER;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBCLUSTER\fR statement in the SQL standard.
+.SH "SEE ALSO"
+clusterdb [\fBclusterdb\fR(1)]
+
diff --git a/raw/man7/comment.7 b/raw/man7/comment.7
new file mode 100644
index 0000000..229502f
--- /dev/null
+++ b/raw/man7/comment.7
@@ -0,0 +1,111 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "COMMENT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+COMMENT \- define or change the comment of an object
+
+.SH SYNOPSIS
+.sp
+.nf
+COMMENT ON
+{
+  TABLE \fIobject_name\fR |
+  COLUMN \fItable_name\fR.\fIcolumn_name\fR |
+  AGGREGATE \fIagg_name\fR (\fIagg_type\fR) |
+  CONSTRAINT \fIconstraint_name\fR ON \fItable_name\fR |
+  DATABASE \fIobject_name\fR |
+  DOMAIN \fIobject_name\fR |
+  FUNCTION \fIfunc_name\fR (\fIarg1_type\fR, \fIarg2_type\fR, ...) |
+  INDEX \fIobject_name\fR |
+  OPERATOR \fIop\fR (\fIleftoperand_type\fR, \fIrightoperand_type\fR) |
+  RULE \fIrule_name\fR ON \fItable_name\fR |
+  SCHEMA \fIobject_name\fR |
+  SEQUENCE \fIobject_name\fR |
+  TRIGGER \fItrigger_name\fR ON \fItable_name\fR |
+  TYPE \fIobject_name\fR |
+  VIEW \fIobject_name\fR
+} IS \fI'text'\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCOMMENT\fR stores a comment about a database object.
+Comments can be
+easily retrieved with the \fBpsql\fR commands
+\fB\\dd\fR, \fB\\d+\fR, and \fB\\l+\fR.
+Other user interfaces to retrieve comments can be built atop
+the same built-in functions that \fBpsql\fR uses, namely
+\fBobj_description\fR and \fBcol_description\fR.
+.PP
+To modify a comment, issue a new \fBCOMMENT\fR command for the
+same object. Only one comment string is stored for each object.
+To remove a comment, write NULL in place of the text
+string.
+Comments are automatically dropped when the object is dropped.
+.SH "PARAMETERS"
+.TP
+\fB\fIobject_name\fB\fR
+.TP
+\fB\fItable_name.column_name\fB\fR
+.TP
+\fB\fIaggname\fB\fR
+.TP
+\fB\fIconstraint_name\fB\fR
+.TP
+\fB\fIfunc_name\fB\fR
+.TP
+\fB\fIop\fB\fR
+.TP
+\fB\fIrule_name\fB\fR
+.TP
+\fB\fItrigger_name\fB\fR
+The name of the object to be be commented. Names of tables,
+aggregates, domains, functions, indexes, operators, sequences,
+types, and views may be schema-qualified.
+.TP
+\fB\fItext\fB\fR
+The new comment.
+.SH "NOTES"
+.PP
+There is presently no security mechanism for comments: any user
+connected to a database can see all the comments for objects in
+that database (although only superusers can change comments for
+objects that they don't own). Therefore, don't put
+security-critical information in comments.
+.SH "EXAMPLES"
+.PP
+Attach a comment to the table mytable:
+.sp
+.nf
+COMMENT ON TABLE mytable IS 'This is my table.';
+.sp
+.fi
+Remove it again:
+.sp
+.nf
+COMMENT ON TABLE mytable IS NULL;
+.sp
+.fi
+.PP
+Some more examples:
+.sp
+.nf
+COMMENT ON AGGREGATE my_aggregate (double precision) IS 'Computes sample variance';
+COMMENT ON COLUMN my_table.my_column IS 'Employee ID number';
+COMMENT ON DATABASE my_database IS 'Development Database';
+COMMENT ON DOMAIN my_domain IS 'Email Address Domain';
+COMMENT ON FUNCTION my_function (timestamp) IS 'Returns Roman Numeral';
+COMMENT ON INDEX my_index IS 'Enforces uniqueness on employee ID';
+COMMENT ON OPERATOR ^ (text, text) IS 'Performs intersection of two texts';
+COMMENT ON OPERATOR ^ (NONE, text) IS 'This is a prefix operator on text';
+COMMENT ON RULE my_rule ON my_table IS 'Logs updates of employee records';
+COMMENT ON SCHEMA my_schema IS 'Departmental data';
+COMMENT ON SEQUENCE my_sequence IS 'Used to generate primary keys';
+COMMENT ON TABLE my_schema.my_table IS 'Employee Information';
+COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for RI';
+COMMENT ON TYPE complex IS 'Complex number data type';
+COMMENT ON VIEW my_view IS 'View of departmental costs';
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBCOMMENT\fR command in the SQL standard.
diff --git a/raw/man7/commit.7 b/raw/man7/commit.7
new file mode 100644
index 0000000..2554964
--- /dev/null
+++ b/raw/man7/commit.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "COMMIT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+COMMIT \- commit the current transaction
+
+.SH SYNOPSIS
+.sp
+.nf
+COMMIT [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCOMMIT\fR commits the current transaction. All
+changes made by the transaction become visible to others
+and are guaranteed to be durable if a crash occurs.
+.SH "PARAMETERS"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+Optional key words. They have no effect.
+.SH "NOTES"
+.PP
+Use ROLLBACK [\fBrollback\fR(7)] to
+abort a transaction.
+.PP
+Issuing \fBCOMMIT\fR when not inside a transaction does
+no harm, but it will provoke a warning message.
+.SH "EXAMPLES"
+.PP
+To commit the current transaction and make all changes permanent:
+.sp
+.nf
+COMMIT;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The SQL standard only specifies the two forms
+COMMIT and COMMIT
+WORK. Otherwise, this command is fully conforming.
+.SH "SEE ALSO"
+BEGIN [\fBbegin\fR(7)], ROLLBACK [\fBrollback\fR(l)]
+
diff --git a/raw/man7/copy.7 b/raw/man7/copy.7
new file mode 100644
index 0000000..68ed6da
--- /dev/null
+++ b/raw/man7/copy.7
@@ -0,0 +1,372 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "COPY" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+COPY \- copy data between a file and a table
+
+.SH SYNOPSIS
+.sp
+.nf
+COPY \fItablename\fR [ ( \fIcolumn\fR [, ...] ) ]
+    FROM { '\fIfilename\fR' | STDIN }
+    [ [ WITH ] 
+          [ BINARY ] 
+          [ OIDS ]
+          [ DELIMITER [ AS ] '\fIdelimiter\fR' ]
+          [ NULL [ AS ] '\fInull string\fR' ] ]
+
+COPY \fItablename\fR [ ( \fIcolumn\fR [, ...] ) ]
+    TO { '\fIfilename\fR' | STDOUT }
+    [ [ WITH ] 
+          [ BINARY ]
+          [ OIDS ]
+          [ DELIMITER [ AS ] '\fIdelimiter\fR' ]
+          [ NULL [ AS ] '\fInull string\fR' ] ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCOPY\fR moves data between
+PostgreSQL tables and standard file-system
+files. \fBCOPY TO\fR copies the contents of a table
+\fBto\fR a file, while \fBCOPY FROM\fR copies
+data \fBfrom\fR a file to a table (appending the data to
+whatever is in the table already).
+.PP
+If a list of columns is specified, \fBCOPY\fR will
+only copy the data in the specified columns to or from the file.
+If there are any columns in the table that are not in the column list,
+\fBCOPY FROM\fR will insert the default values for
+those columns.
+.PP
+\fBCOPY\fR with a file name instructs the
+PostgreSQL server to directly read from
+or write to a file. The file must be accessible to the server and
+the name must be specified from the viewpoint of the server. When
+STDIN or STDOUT is
+specified, data is transmitted via the connection between the
+client and the server.
+.SH "PARAMETERS"
+.TP
+\fB\fItablename\fB\fR
+The name (optionally schema-qualified) of an existing table.
+.TP
+\fB\fIcolumn\fB\fR
+An optional list of columns to be copied. If no column list is
+specified, all columns will be used.
+.TP
+\fB\fIfilename\fB\fR
+The absolute path name of the input or output file.
+.TP
+\fBSTDIN\fR
+Specifies that input comes from the client application.
+.TP
+\fBSTDOUT\fR
+Specifies that output goes to the client application.
+.TP
+\fBBINARY\fR
+Causes all data to be stored or read in binary format rather
+than as text. You cannot specify the \fBDELIMITER\fR
+or \fBNULL\fR options in binary mode.
+.TP
+\fBOIDS\fR
+Specifies copying the OID for each row. (An error is raised if
+OIDS is specified for a table that does not
+have OIDs.)
+.TP
+\fB\fIdelimiter\fB\fR
+The single character that separates columns within each row
+(line) of the file. The default is a tab character.
+.TP
+\fB\fInull string\fB\fR
+The string that represents a null value. The default is
+\\N (backslash-N). You might prefer an empty
+string, for example.
+.sp
+.RS
+.B "Note:"
+On a \fBCOPY FROM\fR, any data item that matches
+this string will be stored as a null value, so you should make
+sure that you use the same string as you used with
+\fBCOPY TO\fR.
+.RE
+.sp
+.SH "NOTES"
+.PP
+\fBCOPY\fR can only be used with plain tables, not
+with views.
+.PP
+The BINARY key word causes all data to be
+stored/read as binary format rather than as text. It is
+somewhat faster than the normal text mode, but a binary-format
+file is less portable across machine architectures and
+PostgreSQL versions.
+.PP
+You must have select privilege on the table
+whose values are read by \fBCOPY TO\fR, and
+insert privilege on the table into which values
+are inserted by \fBCOPY FROM\fR.
+.PP
+Files named in a \fBCOPY\fR command are read or written
+directly by the server, not by the client application. Therefore,
+they must reside on or be accessible to the database server machine,
+not the client. They must be accessible to and readable or writable
+by the PostgreSQL user (the user ID the
+server runs as), not the client. \fBCOPY\fR naming a
+file is only allowed to database superusers, since it allows reading
+or writing any file that the server has privileges to access.
+.PP
+Do not confuse \fBCOPY\fR with the
+\fBpsql\fR instruction
+\fB\\copy\fR. \fB\\copy\fR invokes
+\fBCOPY FROM STDIN\fR or \fBCOPY TO
+STDOUT\fR, and then fetches/stores the data in a file
+accessible to the \fBpsql\fR client. Thus,
+file accessibility and access rights depend on the client rather
+than the server when \fB\\copy\fR is used.
+.PP
+It is recommended that the file name used in \fBCOPY\fR
+always be specified as an absolute path. This is enforced by the
+server in the case of \fBCOPY TO\fR, but for
+\fBCOPY FROM\fR you do have the option of reading from
+a file specified by a relative path. The path will be interpreted
+relative to the working directory of the server process (somewhere below
+the data directory), not the client's working directory.
+.PP
+\fBCOPY FROM\fR will invoke any triggers and check
+constraints on the destination table. However, it will not invoke rules.
+.PP
+\fBCOPY\fR stops operation at the first error. This
+should not lead to problems in the event of a \fBCOPY
+TO\fR, but the target table will already have received
+earlier rows in a \fBCOPY FROM\fR. These rows will not
+be visible or accessible, but they still occupy disk space. This may
+amount to a considerable amount of wasted disk space if the failure
+happened well into a large copy operation. You may wish to invoke
+\fBVACUUM\fR to recover the wasted space.
+.SH "FILE FORMATS"
+.SS "TEXT FORMAT"
+.PP
+When \fBCOPY\fR is used without the BINARY option,
+the data read or written is a text file with one line per table row.
+Columns in a row are separated by the delimiter character.
+The column values themselves are strings generated by the
+output function, or acceptable to the input function, of each
+attribute's data type. The specified null string is used in
+place of columns that are null.
+\fBCOPY FROM\fR will raise an error if any line of the
+input file contains more or fewer columns than are expected.
+If OIDS is specified, the OID is read or written as the first column,
+preceding the user data columns.
+.PP
+End of data can be represented by a single line containing just
+backslash-period (\\.). An end-of-data marker is
+not necessary when reading from a file, since the end of file
+serves perfectly well; it is needed only when copying data to or from
+client applications using pre-3.0 client protocol.
+.PP
+Backslash characters (\\) may be used in the
+\fBCOPY\fR data to quote data characters that might
+otherwise be taken as row or column delimiters. In particular, the
+following characters \fBmust\fR be preceded by a backslash if
+they appear as part of a column value: backslash itself,
+newline, carriage return, and the current delimiter character.
+.PP
+The specified null string is sent by \fBCOPY TO\fR without
+adding any backslashes; conversely, \fBCOPY FROM\fR matches
+the input against the null string before removing backslashes. Therefore,
+a null string such as \\N cannot be confused with
+the actual data value \\N (which would be represented
+as \\\\N).
+.PP
+The following special backslash sequences are recognized by
+\fBCOPY FROM\fR:
+SequenceRepresents\\bBackspace (ASCII 8)\\fForm feed (ASCII 12)\\nNewline (ASCII 10)\\rCarriage return (ASCII 13)\\tTab (ASCII 9)\\vVertical tab (ASCII 11)\\\fIdigits\fRBackslash followed by one to three octal digits specifies
+the character with that numeric code
+Presently, \fBCOPY TO\fR will never emit an octal-digits
+backslash sequence, but it does use the other sequences listed above
+for those control characters.
+.PP
+Any other backslashed character that is not mentioned in the above table
+will be taken to represent itself. However, beware of adding backslashes
+unnecessarily, since that might accidentally produce a string matching the
+end-of-data marker (\\.) or the null string (\\N by
+default). These strings will be recognized before any other backslash
+processing is done.
+.PP
+It is strongly recommended that applications generating COPY data convert
+data newlines and carriage returns to the \\n and
+\\r sequences respectively. At present it is
+possible to represent a data carriage return by a backslash and carriage
+return, and to represent a data newline by a backslash and newline. 
+However, these representations might not be accepted in future releases.
+They are also highly vulnerable to corruption if the COPY file is
+transferred across different machines (for example, from Unix to Windows
+or vice versa).
+.PP
+\fBCOPY TO\fR will terminate each row with a Unix-style 
+newline (``\\n''). Servers running on MS Windows instead
+output carriage return/newline (``\\r\\n''), but only for
+\fBCOPY\fR to a server file; for consistency across platforms,
+\fBCOPY TO STDOUT\fR always sends ``\\n''
+regardless of server platform.
+\fBCOPY FROM\fR can handle lines ending with newlines,
+carriage returns, or carriage return/newlines. To reduce the risk of
+error due to un-backslashed newlines or carriage returns that were
+meant as data, \fBCOPY FROM\fR will complain if the line
+endings in the input are not all alike.
+.SS "BINARY FORMAT"
+.PP
+The file format used for \fBCOPY BINARY\fR changed in
+PostgreSQL 7.4. The new format consists
+of a file header, zero or more tuples containing the row data, and
+a file trailer. Headers and data are now in network byte order.
+.SS "FILE HEADER"
+.PP
+The file header consists of 15 bytes of fixed fields, followed
+by a variable-length header extension area. The fixed fields are:
+.TP
+\fBSignature\fR
+11-byte sequence PGCOPY\\n\\377\\r\\n\\0 --- note that the zero byte
+is a required part of the signature. (The signature is designed to allow
+easy identification of files that have been munged by a non-8-bit-clean
+transfer. This signature will be changed by end-of-line-translation
+filters, dropped zero bytes, dropped high bits, or parity changes.)
+.TP
+\fBFlags field\fR
+32-bit integer bit mask to denote important aspects of the file format. Bits
+are numbered from 0 (LSB) to 31 (MSB). Note that
+this field is stored in network byte order (most significant byte first),
+as are all the integer fields used in the file format. Bits
+16-31 are reserved to denote critical file format issues; a reader
+should abort if it finds an unexpected bit set in this range. Bits 0-15
+are reserved to signal backwards-compatible format issues; a reader
+should simply ignore any unexpected bits set in this range. Currently
+only one flag bit is defined, and the rest must be zero:
+.RS
+.TP
+\fBBit 16\fR
+if 1, OIDs are included in the data; if 0, not
+.RE
+.PP
+.TP
+\fBHeader extension area length\fR
+32-bit integer, length in bytes of remainder of header, not including self.
+Currently, this is zero, and the first tuple follows
+immediately. Future changes to the format might allow additional data
+to be present in the header. A reader should silently skip over any header
+extension data it does not know what to do with.
+.PP
+.PP
+The header extension area is envisioned to contain a sequence of
+self-identifying chunks. The flags field is not intended to tell readers
+what is in the extension area. Specific design of header extension contents
+is left for a later release.
+.PP
+This design allows for both backwards-compatible header additions (add
+header extension chunks, or set low-order flag bits) and
+non-backwards-compatible changes (set high-order flag bits to signal such
+changes, and add supporting data to the extension area if needed).
+.SS "TUPLES"
+.PP
+Each tuple begins with a 16-bit integer count of the number of fields in the
+tuple. (Presently, all tuples in a table will have the same count, but that
+might not always be true.) Then, repeated for each field in the tuple, there
+is a 32-bit length word followed by that many bytes of field data. (The
+length word does not include itself, and can be zero.) As a special case,
+-1 indicates a NULL field value. No value bytes follow in the NULL case.
+.PP
+There is no alignment padding or any other extra data between fields.
+.PP
+Presently, all data values in a \fBCOPY BINARY\fR file are
+assumed to be in binary format (format code one). It is anticipated that a
+future extension may add a header field that allows per-column format codes
+to be specified.
+.PP
+To determine the appropriate binary format for the actual tuple data you
+should consult the PostgreSQL source, in
+particular the \fB*send\fR and \fB*recv\fR functions for
+each column's data type (typically these functions are found in the
+\fIsrc/backend/utils/adt/\fR directory of the source
+distribution).
+.PP
+If OIDs are included in the file, the OID field immediately follows the
+field-count word. It is a normal field except that it's not included
+in the field-count. In particular it has a length word --- this will allow
+handling of 4-byte vs. 8-byte OIDs without too much pain, and will allow
+OIDs to be shown as null if that ever proves desirable.
+.SS "FILE TRAILER"
+.PP
+The file trailer consists of a 16-bit integer word containing -1. This
+is easily distinguished from a tuple's field-count word.
+.PP
+A reader should report an error if a field-count word is neither -1
+nor the expected number of columns. This provides an extra
+check against somehow getting out of sync with the data.
+.SH "EXAMPLES"
+.PP
+The following example copies a table to the client
+using the vertical bar (|) as the field delimiter:
+.sp
+.nf
+COPY country TO STDOUT WITH DELIMITER '|';
+.sp
+.fi
+.PP
+To copy data from a file into the country table:
+.sp
+.nf
+COPY country FROM '/usr1/proj/bray/sql/country_data';
+.sp
+.fi
+.PP
+Here is a sample of data suitable for copying into a table from
+STDIN:
+.sp
+.nf
+AF      AFGHANISTAN
+AL      ALBANIA
+DZ      ALGERIA
+ZM      ZAMBIA
+ZW      ZIMBABWE
+.sp
+.fi
+Note that the white space on each line is actually a tab character.
+.PP
+The following is the same data, output in binary format.
+The data is shown after filtering through the
+Unix utility \fBod -c\fR. The table has three columns;
+the first has type \fBchar(2)\fR, the second has type \fBtext\fR,
+and the third has type \fBinteger\fR. All the rows have a null value
+in the third column.
+.sp
+.nf
+0000000   P   G   C   O   P   Y  \\n 377  \\r  \\n  \\0  \\0  \\0  \\0  \\0  \\0
+0000020  \\0  \\0  \\0  \\0 003  \\0  \\0  \\0 002   A   F  \\0  \\0  \\0 013   A
+0000040   F   G   H   A   N   I   S   T   A   N 377 377 377 377  \\0 003
+0000060  \\0  \\0  \\0 002   A   L  \\0  \\0  \\0 007   A   L   B   A   N   I
+0000100   A 377 377 377 377  \\0 003  \\0  \\0  \\0 002   D   Z  \\0  \\0  \\0
+0000120 007   A   L   G   E   R   I   A 377 377 377 377  \\0 003  \\0  \\0
+0000140  \\0 002   Z   M  \\0  \\0  \\0 006   Z   A   M   B   I   A 377 377
+0000160 377 377  \\0 003  \\0  \\0  \\0 002   Z   W  \\0  \\0  \\0  \\b   Z   I
+0000200   M   B   A   B   W   E 377 377 377 377 377 377
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBCOPY\fR statement in the SQL standard.
+.PP
+The following syntax was used before PostgreSQL version 7.3 and is
+still supported:
+.sp
+.nf
+COPY [ BINARY ] \fItablename\fR [ WITH OIDS ]
+    FROM { '\fIfilename\fR' | STDIN }
+    [ [USING] DELIMITERS '\fIdelimiter\fR' ]
+    [ WITH NULL AS '\fInull string\fR' ]
+
+COPY [ BINARY ] \fItablename\fR [ WITH OIDS ]
+    TO { '\fIfilename\fR' | STDOUT }
+    [ [USING] DELIMITERS '\fIdelimiter\fR' ]
+    [ WITH NULL AS '\fInull string\fR' ]
+.sp
+.fi
diff --git a/raw/man7/create_aggregate.7 b/raw/man7/create_aggregate.7
new file mode 100644
index 0000000..87a383a
--- /dev/null
+++ b/raw/man7/create_aggregate.7
@@ -0,0 +1,149 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE AGGREGATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE AGGREGATE \- define a new aggregate function
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE AGGREGATE \fIname\fR (
+    BASETYPE = \fIinput_data_type\fR,
+    SFUNC = \fIsfunc\fR,
+    STYPE = \fIstate_data_type\fR
+    [ , FINALFUNC = \fIffunc\fR ]
+    [ , INITCOND = \fIinitial_condition\fR ]
+)
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE AGGREGATE\fR defines a new aggregate function. Some aggregate functions
+for base types such as \fBmin(integer)\fR
+and \fBavg(double precision)\fR are already provided in the standard
+distribution. If one defines new types or needs an aggregate function not
+already provided, then \fBCREATE AGGREGATE\fR
+can be used to provide the desired features.
+.PP
+If a schema name is given (for example, CREATE AGGREGATE
+myschema.myagg ...) then the aggregate function is created in the
+specified schema. Otherwise it is created in the current schema.
+.PP
+An aggregate function is identified by its name and input data type.
+Two aggregates in the same schema can have the same name if they operate on
+different input types. The
+name and input data type of an aggregate must also be distinct from
+the name and input data type(s) of every ordinary function in the same
+schema.
+.PP
+An aggregate function is made from one or two ordinary
+functions:
+a state transition function
+\fIsfunc\fR,
+and an optional final calculation function
+\fIffunc\fR.
+These are used as follows:
+.sp
+.nf
+\fIsfunc\fR( internal-state, next-data-item ) ---> next-internal-state
+\fIffunc\fR( internal-state ) ---> aggregate-value
+.sp
+.fi
+.PP
+PostgreSQL creates a temporary variable
+of data type \fIstype\fR
+to hold the current internal state of the aggregate. At each input
+data item,
+the state transition function is invoked to calculate a new
+internal state value. After all the data has been processed,
+the final function is invoked once to calculate the aggregate's return
+value. If there is no final function then the ending state value
+is returned as-is.
+.PP
+An aggregate function may provide an initial condition,
+that is, an initial value for the internal state value.
+This is specified and stored in the database as a column of type
+\fBtext\fR, but it must be a valid external representation
+of a constant of the state value data type. If it is not supplied
+then the state value starts out null.
+.PP
+If the state transition function is declared ``strict'',
+then it cannot be called with null inputs. With such a transition
+function, aggregate execution behaves as follows. Null input values
+are ignored (the function is not called and the previous state value
+is retained). If the initial state value is null, then the first
+nonnull input value replaces the state value, and the transition
+function is invoked beginning with the second nonnull input value.
+This is handy for implementing aggregates like \fBmax\fR.
+Note that this behavior is only available when
+\fIstate_data_type\fR
+is the same as
+\fIinput_data_type\fR.
+When these types are different, you must supply a nonnull initial
+condition or use a nonstrict transition function.
+.PP
+If the state transition function is not strict, then it will be called
+unconditionally at each input value, and must deal with null inputs
+and null transition values for itself. This allows the aggregate
+author to have full control over the aggregate's handling of null values.
+.PP
+If the final function is declared ``strict'', then it will not
+be called when the ending state value is null; instead a null result
+will be returned automatically. (Of course this is just the normal
+behavior of strict functions.) In any case the final function has
+the option of returning a null value. For example, the final function for
+\fBavg\fR returns null when it sees there were zero
+input rows.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of the aggregate function
+to create.
+.TP
+\fB\fIinput_data_type\fB\fR
+The input data type on which this aggregate function operates.
+This can be specified as "ANY" for an aggregate that
+does not examine its input values (an example is
+\fBcount(*)\fR).
+.TP
+\fB\fIsfunc\fB\fR
+The name of the state transition function to be called for each
+input data value. This is normally a function of two arguments,
+the first being of type \fIstate_data_type\fR and the second
+of type \fIinput_data_type\fR. Alternatively,
+for an aggregate that does not examine its input values, the
+function takes just one argument of type \fIstate_data_type\fR. In either case
+the function must return a value of type \fIstate_data_type\fR. This function
+takes the current state value and the current input data item,
+and returns the next state value.
+.TP
+\fB\fIstate_data_type\fB\fR
+The data type for the aggregate's state value.
+.TP
+\fB\fIffunc\fB\fR
+The name of the final function called to compute the aggregate's
+result after all input data has been traversed. The function
+must take a single argument of type \fIstate_data_type\fR. The return
+data type of the aggregate is defined as the return type of this
+function. If \fIffunc\fR
+is not specified, then the ending state value is used as the
+aggregate's result, and the return type is \fIstate_data_type\fR.
+.TP
+\fB\fIinitial_condition\fB\fR
+The initial setting for the state value. This must be a string
+constant in the form accepted for the data type \fIstate_data_type\fR. If not
+specified, the state value starts out null.
+.PP
+The parameters of \fBCREATE AGGREGATE\fR can be
+written in any order, not just the order illustrated above.
+.PP
+.SH "EXAMPLES"
+.PP
+See the section called ``User-defined Aggregates'' in the documentation.
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE AGGREGATE\fR is a
+PostgreSQL language extension. The SQL
+standard does not provide for user-defined aggregate function.
+.SH "SEE ALSO"
+ALTER AGGREGATE [\fBalter_aggregate\fR(7)], DROP AGGREGATE [\fBdrop_aggregate\fR(l)]
+
diff --git a/raw/man7/create_cast.7 b/raw/man7/create_cast.7
new file mode 100644
index 0000000..3e761ad
--- /dev/null
+++ b/raw/man7/create_cast.7
@@ -0,0 +1,158 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE CAST" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE CAST \- define a new cast
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE CAST (\fIsourcetype\fR AS \fItargettype\fR)
+    WITH FUNCTION \fIfuncname\fR (\fIargtype\fR)
+    [ AS ASSIGNMENT | AS IMPLICIT ]
+
+CREATE CAST (\fIsourcetype\fR AS \fItargettype\fR)
+    WITHOUT FUNCTION
+    [ AS ASSIGNMENT | AS IMPLICIT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE CAST\fR defines a new cast. A cast
+specifies how to perform a conversion between
+two data types. For example,
+.sp
+.nf
+SELECT CAST(42 AS text);
+.sp
+.fi
+converts the integer constant 42 to type \fBtext\fR by
+invoking a previously specified function, in this case
+text(int4). (If no suitable cast has been defined, the
+conversion fails.)
+.PP
+Two types may be \fIbinary compatible\fR, which
+means that they can be converted into one another ``for
+free'' without invoking any function. This requires that
+corresponding values use the same internal representation. For
+instance, the types \fBtext\fR and \fBvarchar\fR are
+binary compatible.
+.PP
+By default, a cast can be invoked only by an explicit cast request,
+that is an explicit CAST(\fIx\fR AS
+\fItypename\fR),
+\fIx\fR::\fItypename\fR, or
+\fItypename\fR(\fIx\fR) construct.
+.PP
+If the cast is marked AS ASSIGNMENT then it can be invoked
+implicitly when assigning a value to a column of the target data type.
+For example, supposing that foo.f1 is a column of
+type \fBtext\fR, then
+.sp
+.nf
+INSERT INTO foo (f1) VALUES (42);
+.sp
+.fi
+will be allowed if the cast from type \fBinteger\fR to type
+\fBtext\fR is marked AS ASSIGNMENT, otherwise
+not.
+(We generally use the term \fIassignment
+cast\fR to describe this kind of cast.)
+.PP
+If the cast is marked AS IMPLICIT then it can be invoked
+implicitly in any context, whether assignment or internally in an
+expression. For example, since || takes \fBtext\fR
+operands,
+.sp
+.nf
+SELECT 'The time is ' || now();
+.sp
+.fi
+will be allowed only if the cast from type \fBtimestamp\fR to
+\fBtext\fR is marked AS IMPLICIT. Otherwise it
+will be necessary to write the cast explicitly, for example
+.sp
+.nf
+SELECT 'The time is ' || CAST(now() AS text);
+.sp
+.fi
+(We generally use the term \fIimplicit
+cast\fR to describe this kind of cast.)
+.PP
+It is wise to be conservative about marking casts as implicit. An
+overabundance of implicit casting paths can cause
+PostgreSQL to choose surprising
+interpretations of commands, or to be unable to resolve commands at
+all because there are multiple possible interpretations. A good
+rule of thumb is to make a cast implicitly invokable only for
+information-preserving transformations between types in the same
+general type category. For example, the cast from \fBint2\fR to
+\fBint4\fR can reasonably be implicit, but the cast from
+\fBfloat8\fR to \fBint4\fR should probably be
+assignment-only. Cross-type-category casts, such as \fBtext\fR
+to \fBint4\fR, are best made explicit-only.
+.PP
+To be able to create a cast, you must own the source or the target
+data type. To create a binary-compatible cast, you must be superuser.
+(This restriction is made because an erroneous binary-compatible cast
+conversion can easily crash the server.)
+.SH "PARAMETERS"
+.TP
+\fB\fIsourcetype\fB\fR
+The name of the source data type of the cast.
+.TP
+\fB\fItargettype\fB\fR
+The name of the target data type of the cast.
+.TP
+\fB\fIfuncname\fB(\fIargtype\fB)\fR
+The function used to perform the cast. The function name may
+be schema-qualified. If it is not, the function will be looked
+up in the path. The argument type must be identical to the
+source type, the result data type must match the target type of
+the cast.
+.TP
+\fBWITHOUT FUNCTION\fR
+Indicates that the source type and the target type are binary
+compatible, so no function is required to perform the cast.
+.TP
+\fBAS ASSIGNMENT\fR
+Indicates that the cast may be invoked implicitly in assignment
+contexts.
+.TP
+\fBAS IMPLICIT\fR
+Indicates that the cast may be invoked implicitly in any context.
+.SH "NOTES"
+.PP
+Use \fBDROP CAST\fR to remove user-defined casts.
+.PP
+Remember that if you want to be able to convert types both ways you
+need to declare casts both ways explicitly.
+.PP
+Prior to PostgreSQL 7.3, every function that had
+the same name as a data type, returned that data type, and took one
+argument of a different type was automatically a cast function.
+This convention has been abandoned in face of the introduction of
+schemas and to be able to represent binary compatible casts in the
+system catalogs. (The built-in cast functions still follow this naming
+scheme, but they have to be shown as casts in the system catalog pg_cast
+now.)
+.SH "EXAMPLES"
+.PP
+To create a cast from type \fBtext\fR to type
+\fBint4\fR using the function int4(text):
+.sp
+.nf
+CREATE CAST (text AS int4) WITH FUNCTION int4(text);
+.sp
+.fi
+(This cast is already predefined in the system.)
+.SH "COMPATIBILITY"
+.PP
+The \fBCREATE CAST\fR command conforms to SQL99,
+except that SQL99 does not make provisions for binary-compatible
+types. AS IMPLICIT is a PostgreSQL
+extension, too.
+.SH "SEE ALSO"
+.PP
+CREATE FUNCTION [\fBcreate_function\fR(7)],
+CREATE TYPE [\fBcreate_type\fR(7)],
+DROP CAST [\fBdrop_cast\fR(7)]
diff --git a/raw/man7/create_constraint_trigger.7 b/raw/man7/create_constraint_trigger.7
new file mode 100644
index 0000000..a130e53
--- /dev/null
+++ b/raw/man7/create_constraint_trigger.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE CONSTRAINT TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE CONSTRAINT TRIGGER \- define a new constraint trigger
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE CONSTRAINT TRIGGER \fIname\fR
+    AFTER \fIevents\fR ON
+    \fItablename\fR \fIconstraint\fR \fIattributes\fR
+    FOR EACH ROW EXECUTE PROCEDURE \fIfuncname\fR ( \fIargs\fR )
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE CONSTRAINT TRIGGER\fR is used within
+\fBCREATE TABLE\fR/\fBALTER TABLE\fR and by
+\fBpg_dump\fR to create the special triggers for
+referential integrity.
+It is not intended for general use.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the constraint trigger.
+.TP
+\fB\fIevents\fB\fR
+The event categories for which this trigger should be fired.
+.TP
+\fB\fItablename\fB\fR
+The name (possibly schema-qualified) of the table in which
+the triggering events occur.
+.TP
+\fB\fIconstraint\fB\fR
+Actual constraint specification.
+.TP
+\fB\fIattributes\fB\fR
+The constraint attributes.
+.TP
+\fB\fIfuncname\fB(\fIargs\fB)\fR
+The function to call as part of the trigger processing.
diff --git a/raw/man7/create_conversion.7 b/raw/man7/create_conversion.7
new file mode 100644
index 0000000..325e7fe
--- /dev/null
+++ b/raw/man7/create_conversion.7
@@ -0,0 +1,84 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE CONVERSION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE CONVERSION \- define a new conversion
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [DEFAULT] CONVERSION \fIname\fR
+    FOR \fIsource_encoding\fR TO \fIdest_encoding\fR FROM \fIfuncname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE CONVERSION\fR defines a new encoding
+conversion. Conversion names may be used in the \fBconvert\fR function
+to specify a particular encoding conversion. Also, conversions that
+are marked DEFAULT can be used for automatic encoding conversion between
+client and server. For this purpose, two conversions, from encoding A to
+B \fBand\fR from encoding B to A, must be defined.
+.PP
+To be able to create a conversion, you must have EXECUTE privilege
+on the function and CREATE privilege on the destination schema.
+.SH "PARAMETERS"
+.TP
+\fBDEFAULT\fR
+The DEFAULT clause indicates that this conversion
+is the default for this particular source to destination
+encoding. There should be only one default encoding in a schema
+for the encoding pair.
+.TP
+\fB\fIname\fB\fR
+The name of the conversion. The conversion name may be
+schema-qualified. If it is not, the conversion is defined in the
+current schema. The conversion name must be unique within a
+schema.
+.TP
+\fB\fIsource_encoding\fB\fR
+The source encoding name.
+.TP
+\fB\fIdest_encoding\fB\fR
+The destination encoding name.
+.TP
+\fB\fIfuncname\fB\fR
+The function used to perform the conversion. The function name may
+be schema-qualified. If it is not, the function will be looked
+up in the path.
+
+The function must have the following signature:
+.sp
+.nf
+conv_proc(
+    integer,  -- source encoding ID
+    integer,  -- destination encoding ID
+    cstring,  -- source string (null terminated C string)
+    cstring,  -- destination string (null terminated C string)
+    integer   -- source string length
+) RETURNS void;
+.sp
+.fi
+.SH "NOTES"
+.PP
+Use \fBDROP CONVERSION\fR to remove user-defined conversions.
+.PP
+The privileges required to create a conversion may be changed in a future
+release.
+.SH "EXAMPLES"
+.PP
+To create a conversion from encoding UNICODE to
+LATIN1 using \fBmyfunc\fR:
+.sp
+.nf
+CREATE CONVERSION myconv FOR 'UNICODE' TO 'LATIN1' FROM myfunc;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE CONVERSION\fR
+is a PostgreSQL extension.
+There is no \fBCREATE CONVERSION\fR
+statement in the SQL standard.
+.SH "SEE ALSO"
+ALTER CONVERSION [\fBalter_conversion\fR(7)], CREATE FUNCTION [\fBcreate_function\fR(l)], DROP CONVERSION [\fBdrop_conversion\fR(l)]
+
diff --git a/raw/man7/create_database.7 b/raw/man7/create_database.7
new file mode 100644
index 0000000..7ab3bbf
--- /dev/null
+++ b/raw/man7/create_database.7
@@ -0,0 +1,147 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE DATABASE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE DATABASE \- create a new database
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE DATABASE \fIname\fR
+    [ [ WITH ] [ OWNER [=] \fIdbowner\fR ]
+           [ LOCATION [=] '\fIdbpath\fR' ]
+           [ TEMPLATE [=] \fItemplate\fR ]
+           [ ENCODING [=] \fIencoding\fR ] ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE DATABASE\fR creates a new
+PostgreSQL database.
+.PP
+To create a database, you must be a superuser or have the special
+CREATEDB privilege.
+See CREATE USER [\fBcreate_user\fR(7)].
+.PP
+Normally, the creator becomes the owner of the new database.
+Superusers can create databases owned by other users using the
+OWNER clause. They can even create databases owned by
+users with no special privileges. Non-superusers with CREATEDB
+privilege can only create databases owned by themselves.
+.PP
+An alternative location can be specified in order to,
+for example, store the database on a different disk.
+The path must have been prepared with the 
+initlocation [\fBinitlocation\fR(1)]
+command.
+.PP
+If the path name does not contain a slash, it is interpreted
+as an environment variable name, which must be known to the
+server process. This way the database administrator can
+exercise control over locations in which databases can be created.
+(A customary choice is, e.g., \fBPGDATA2\fR.)
+If the server is compiled with ALLOW_ABSOLUTE_DBPATHS
+(not so by default), absolute path names, as identified by
+a leading slash
+(e.g., \fI/usr/local/pgsql/data\fR),
+are allowed as well.
+In either case, the final path name must be absolute and must not
+contain any single quotes.
+.PP
+By default, the new database will be created by cloning the standard
+system database template1. A different template can be
+specified by writing TEMPLATE
+\fIname\fR. In particular,
+by writing TEMPLATE template0, you can create a virgin
+database containing only the standard objects predefined by your
+version of PostgreSQL. This is useful
+if you wish to avoid copying
+any installation-local objects that may have been added to
+template1. 
+.PP
+The optional encoding parameter allows selection of the database
+encoding. When not specified, it defaults to the encoding used by
+the selected template database.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of a database to create.
+.TP
+\fB\fIdbowner\fB\fR
+The name of the database user who will own the new database,
+or DEFAULT to use the default (namely, the
+user executing the command).
+.TP
+\fB\fIdbpath\fB\fR
+An alternate file-system location in which to store the new database,
+specified as a string literal;
+or DEFAULT to use the default location.
+.TP
+\fB\fItemplate\fB\fR
+The name of the template from which to create the new database,
+or DEFAULT to use the default template
+(template1).
+.TP
+\fB\fIencoding\fB\fR
+Character set encoding to use in the new database. Specify
+a string constant (e.g., 'SQL_ASCII'),
+or an integer encoding number, or DEFAULT
+to use the default encoding.
+.PP
+Optional parameters can be written in any order, not only the order
+illustrated above.
+.PP
+.SH "NOTES"
+.PP
+\fBCREATE DATABASE\fR cannot be executed inside a transaction
+block.
+.PP
+Errors along the line of ``could not initialize database directory''
+are most likely related to insufficient permissions on the data
+directory, a full disk, or other file system problems. When using an
+alternate location, the user under
+which the database server is running must have access to the location.
+.PP
+Use DROP DATABASE [\fBdrop_database\fR(7)] to remove a database.
+.PP
+The program createdb [\fBcreatedb\fR(1)] is a
+wrapper program around this command, provided for convenience.
+.PP
+There are security issues involved with using alternate database
+locations specified with absolute path names; this is why the feature
+is not enabled by default. See the chapter called ``Managing Databases'' in the documentation for more information.
+.PP
+Although it is possible to copy a database other than template1
+by specifying its name as the template, this is not (yet) intended as
+a general-purpose ``\fBCOPY DATABASE\fR'' facility.
+We recommend that databases used as templates be treated as read-only.
+See the chapter called ``Managing Databases'' in the documentation for more information.
+.SH "EXAMPLES"
+.PP
+To create a new database:
+.sp
+.nf
+CREATE DATABASE lusiadas;
+.sp
+.fi
+.PP
+To create a new database in an alternate area
+\fI~/private_db\fR, execute the following from the
+shell:
+.sp
+.nf
+mkdir private_db
+initlocation ~/private_db
+.sp
+.fi
+Then execute the following from within a
+\fBpsql\fR session:
+.sp
+.nf
+CREATE DATABASE elsewhere WITH LOCATION '/home/olly/private_db';
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBCREATE DATABASE\fR statement in the SQL
+standard. Databases are equivalent to catalogs, whose creation is
+implementation-defined.
diff --git a/raw/man7/create_domain.7 b/raw/man7/create_domain.7
new file mode 100644
index 0000000..0275b95
--- /dev/null
+++ b/raw/man7/create_domain.7
@@ -0,0 +1,97 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE DOMAIN \- define a new domain
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE DOMAIN \fIname\fR [AS] \fIdata_type\fR
+    [ DEFAULT \fIexpression\fR ]
+    [ \fIconstraint\fR [ ... ] ]
+
+where \fIconstraint\fR is:
+
+[ CONSTRAINT \fIconstraint_name\fR ]
+{ NOT NULL | NULL | CHECK (\fIexpression\fR) }
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE DOMAIN\fR creates a new data domain. The
+user who defines a domain becomes its owner.
+.PP
+If a schema name is given (for example, CREATE DOMAIN
+myschema.mydomain ...) then the domain is created in the
+specified schema. Otherwise it is created in the current schema.
+The domain name must be unique among the types and domains existing
+in its schema.
+.PP
+Domains are useful for abstracting common fields between tables into
+a single location for maintenance. For example, an email address column may be used
+in several tables, all with the same properties. Define a domain and
+use that rather than setting up each table's constraints individually.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of a domain to be created.
+.TP
+\fB\fIdata_type\fB\fR
+The underlying data type of the domain. This may include array
+specifiers.
+.TP
+\fBDEFAULT \fIexpression\fB\fR
+The DEFAULT clause specifies a default value for
+columns of the domain data type. The value is any
+variable-free expression (but subqueries are not allowed).
+The data type of the default expression must match the data
+type of the domain. If no default value is specified, then
+the default value is the null value.
+
+The default expression will be used in any insert operation
+that does not specify a value for the column. If a default
+value is defined for a particular column, it overrides any
+default associated with the domain. In turn, the domain
+default overrides any default value associated with the
+underlying data type.
+.TP
+\fBCONSTRAINT \fIconstraint_name\fB\fR
+An optional name for a constraint. If not specified,
+the system generates a name.
+.TP
+\fBNOT NULL\fR
+Values of this domain are not allowed to be null.
+.TP
+\fBNULL\fR
+Values of this domain are allowed to be null. This is the default.
+
+This clause is only intended for compatibility with
+nonstandard SQL databases. Its use is discouraged in new
+applications.
+.TP
+\fBCHECK (\fIexpression\fB)\fR
+CHECK clauses specify integrity constraints or tests
+which values of the domain must satisfy.
+Each constraint must be an expression
+producing a Boolean result. It should use the name VALUE
+to refer to the value being tested.
+
+Currently, CHECK expressions cannot contain
+subqueries nor refer to variables other than VALUE.
+.SH "EXAMPLES"
+.PP
+This example creates the \fBcountry_code\fR data type and then uses the
+type in a table definition:
+.sp
+.nf
+CREATE DOMAIN country_code char(2) NOT NULL;
+CREATE TABLE countrylist (id integer, country country_code);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The command \fBCREATE DOMAIN\fR conforms to the SQL
+standard.
+.SH "SEE ALSO"
+DROP DOMAIN [\fBdrop_domain\fR(7)]
+
diff --git a/raw/man7/create_function.7 b/raw/man7/create_function.7
new file mode 100644
index 0000000..332d910
--- /dev/null
+++ b/raw/man7/create_function.7
@@ -0,0 +1,246 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE FUNCTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE FUNCTION \- define a new function
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ OR REPLACE ] FUNCTION \fIname\fR ( [ \fIargtype\fR [, ...] ] )
+    RETURNS \fIrettype\fR
+  { LANGUAGE \fIlangname\fR
+    | IMMUTABLE | STABLE | VOLATILE
+    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
+    | [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER
+    | AS '\fIdefinition\fR'
+    | AS '\fIobj_file\fR', '\fIlink_symbol\fR'
+  } ...
+    [ WITH ( \fIattribute\fR [, ...] ) ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE FUNCTION\fR defines a new function.
+\fBCREATE OR REPLACE FUNCTION\fR will either create a
+new function, or replace an existing definition.
+.PP
+If a schema name is included, then the function is created in the
+specified schema. Otherwise it is created in the current schema.
+The name of the new function must not match any existing function
+with the same argument types in the same schema. However,
+functions of different argument types may share a name (this is
+called \fIoverloading\fR).
+.PP
+To update the definition of an existing function, use
+\fBCREATE OR REPLACE FUNCTION\fR. It is not possible
+to change the name or argument types of a function this way (if you
+tried, you'd just be creating a new, distinct function). Also,
+\fBCREATE OR REPLACE FUNCTION\fR will not let you
+change the return type of an existing function. To do that, you
+must drop and recreate the function.
+.PP
+If you drop and then recreate a function, the new function is not
+the same entity as the old; you will break existing rules, views,
+triggers, etc. that referred to the old function. Use
+\fBCREATE OR REPLACE FUNCTION\fR to change a function
+definition without breaking objects that refer to the function.
+.PP
+The user that creates the function becomes the owner of the function.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of a function to create.
+.TP
+\fB\fIargtype\fB\fR
+The data type(s) of the function's arguments (optionally 
+schema-qualified), if any. The argument types may be base, complex, or 
+domain types, or copy the type of an existing column.
+
+The type of a column is referenced by writing
+\fItablename\fR.\fIcolumnname\fR%TYPE;
+using this can sometimes help make a function independent from
+changes to the definition of a table.
+
+Depending on the implementation language it may also be allowed
+to specify ``pseudotypes'' such as \fBcstring\fR.
+Pseudotypes indicate that the actual argument type is either
+incompletely specified, or outside the set of ordinary SQL data types.
+.TP
+\fB\fIrettype\fB\fR
+The return data type (optionally schema-qualified). The return type 
+may be specified as a base, complex, or domain type,
+or may copy the type of an existing column. See the description
+under argtype above on how to reference the type
+of an existing column.
+
+Depending on the implementation language it may also be allowed
+to specify ``pseudotypes'' such as \fBcstring\fR.
+The SETOF
+modifier indicates that the function will return a set of
+items, rather than a single item.
+.TP
+\fB\fIlangname\fB\fR
+The name of the language that the function is implemented in.
+May be SQL, C,
+internal, or the name of a user-defined
+procedural language. (See also createlang [\fBcreatelang\fR(1)].) For backward compatibility,
+the name may be enclosed by single quotes.
+.TP
+\fBIMMUTABLE\fR
+.TP
+\fBSTABLE\fR
+.TP
+\fBVOLATILE\fR
+These attributes inform the system whether it is safe to
+replace multiple evaluations of the function with a single
+evaluation, for run-time optimization. At most one choice
+should be specified. If none of these appear,
+VOLATILE is the default assumption.
+
+IMMUTABLE indicates that the function always
+returns the same result when given the same argument values; that
+is, it does not do database lookups or otherwise use information not
+directly present in its argument list. If this option is given,
+any call of the function with all-constant arguments can be
+immediately replaced with the function value.
+
+STABLE indicates that within a single table scan
+the function will consistently
+return the same result for the same argument values, but that its
+result could change across SQL statements. This is the appropriate
+selection for functions whose results depend on database lookups,
+parameter variables (such as the current time zone), etc. Also note
+that the \fBcurrent_timestamp\fR family of functions qualify
+as stable, since their values do not change within a transaction.
+
+VOLATILE indicates that the function value can
+change even within a single table scan, so no optimizations can be
+made. Relatively few database functions are volatile in this sense;
+some examples are random(), currval(),
+timeofday(). Note that any function that has side-effects
+must be classified volatile, even if its result is quite predictable,
+to prevent calls from being optimized away; an example is
+setval().
+.TP
+\fBCALLED ON NULL INPUT\fR
+.TP
+\fBRETURNS NULL ON NULL INPUT\fR
+.TP
+\fBSTRICT\fR
+CALLED ON NULL INPUT (the default) indicates
+that the function will be called normally when some of its
+arguments are null. It is then the function author's
+responsibility to check for null values if necessary and respond
+appropriately.
+
+RETURNS NULL ON NULL INPUT or
+STRICT indicates that the function always
+returns null whenever any of its arguments are null. If this
+parameter is specified, the function is not executed when there
+are null arguments; instead a null result is assumed
+automatically.
+.TP
+\fB[EXTERNAL] SECURITY INVOKER\fR
+.TP
+\fB[EXTERNAL] SECURITY DEFINER\fR
+SECURITY INVOKER indicates that the function
+is to be executed with the privileges of the user that calls it.
+That is the default. SECURITY DEFINER
+specifies that the function is to be executed with the
+privileges of the user that created it.
+
+The key word EXTERNAL is present for SQL
+conformance but is optional since, unlike in SQL, this feature
+does not only apply to external functions.
+.TP
+\fB\fIdefinition\fB\fR
+A string defining the function; the meaning depends on the
+language. It may be an internal function name, the path to an
+object file, an SQL command, or text in a procedural language.
+.TP
+\fB\fIobj_file\fB, \fIlink_symbol\fB\fR
+This form of the AS clause is used for
+dynamically loadable C language functions when the function name
+in the C language source code is not the same as the name of
+the SQL function. The string \fIobj_file\fR is the name of the
+file containing the dynamically loadable object, and
+\fIlink_symbol\fR is the
+function's link symbol, that is, the name of the function in the C
+language source code. If the link symbol is omitted, it is assumed
+to be the same as the name of the SQL function being defined.
+.TP
+\fB\fIattribute\fB\fR
+The historical way to specify optional pieces of information
+about the function. The following attributes may appear here:
+.RS
+.TP
+\fBisStrict\fR
+Equivalent to STRICT or RETURNS NULL ON NULL INPUT
+.TP
+\fBisCachable\fR
+isCachable is an obsolete equivalent of
+IMMUTABLE; it's still accepted for
+backwards-compatibility reasons.
+.RE
+.PP
+Attribute names are not case-sensitive.
+.SH "NOTES"
+.PP
+Refer to the section called ``User-Defined Functions'' in the documentation for further information on writing
+functions.
+.PP
+The full SQL type syntax is allowed for
+input arguments and return value. However, some details of the
+type specification (e.g., the precision field for
+type \fBnumeric\fR) are the responsibility of the
+underlying function implementation and are silently swallowed
+(i.e., not recognized or
+enforced) by the \fBCREATE FUNCTION\fR command.
+.PP
+PostgreSQL allows function
+\fIoverloading\fR; that is, the same name can be
+used for several different functions so long as they have distinct
+argument types. However, the C names of all functions must be
+different, so you must give overloaded C functions different C
+names (for example, use the argument types as part of the C
+names).
+.PP
+When repeated \fBCREATE FUNCTION\fR calls refer to
+the same object file, the file is only loaded once. To unload and
+reload the file (perhaps during development), use the LOAD [\fBload\fR(7)] command.
+.PP
+Use \fBDROP FUNCTION\fR
+to remove user-defined functions.
+.PP
+Any single quotes or backslashes in the function definition must be
+escaped by doubling them.
+.PP
+To be able to define a function, the user must have the
+USAGE privilege on the language.
+.SH "EXAMPLES"
+.PP
+Here is a trivial example to help you get started. For more
+information and examples, see the section called ``User-Defined Functions'' in the documentation.
+.sp
+.nf
+CREATE FUNCTION add(integer, integer) RETURNS integer
+    AS 'select $1 + $2;'
+    LANGUAGE SQL
+    IMMUTABLE
+    RETURNS NULL ON NULL INPUT;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+A \fBCREATE FUNCTION\fR command is defined in SQL99.
+The PostgreSQL version is similar but
+not fully compatible. The attributes are not portable, neither are the
+different available languages.
+.SH "SEE ALSO"
+.PP
+ALTER FUNCTION [\fBalter_function\fR(7)],
+DROP FUNCTION [\fBdrop_function\fR(7)],
+GRANT [\fBgrant\fR(7)],
+LOAD [\fBload\fR(7)],
+REVOKE [\fBrevoke\fR(7)],
+\fBcreatelang\fR(1)
diff --git a/raw/man7/create_group.7 b/raw/man7/create_group.7
new file mode 100644
index 0000000..1f3a765
--- /dev/null
+++ b/raw/man7/create_group.7
@@ -0,0 +1,58 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE GROUP" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE GROUP \- define a new user group
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE GROUP \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]
+
+where \fIoption\fR can be:
+
+     SYSID \fIgid\fR
+   | USER  \fIusername\fR [, ...]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE GROUP\fR will create a new group in the
+database cluster. You must be a database
+superuser to use this command.
+.PP
+Use ALTER GROUP [\fBalter_group\fR(7)]
+to change a group's membership, and DROP GROUP [\fBdrop_group\fR(7)] to remove a group.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the group.
+.TP
+\fB\fIgid\fB\fR
+The SYSID clause can be used to choose
+the PostgreSQL group ID of the new
+group. It is not necessary to do so, however.
+
+If this is not specified, the highest assigned group ID plus one,
+starting at 1, will be used as default.
+.TP
+\fB\fIusername\fB\fR
+A list of users to include in the group. The users must already exist.
+.SH "EXAMPLES"
+.PP
+Create an empty group:
+.sp
+.nf
+CREATE GROUP staff;
+.sp
+.fi
+.PP
+Create a group with members:
+.sp
+.nf
+CREATE GROUP marketing WITH USER jonathan, david;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBCREATE GROUP\fR statement in the SQL
+standard. Roles are similar in concept to groups.
diff --git a/raw/man7/create_index.7 b/raw/man7/create_index.7
new file mode 100644
index 0000000..e0f52a6
--- /dev/null
+++ b/raw/man7/create_index.7
@@ -0,0 +1,143 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE INDEX" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE INDEX \- define a new index
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ UNIQUE ] INDEX \fIname\fR ON \fItable\fR [ USING \fImethod\fR ]
+    ( { \fIcolumn\fR | ( \fIexpression\fR ) } [ \fIopclass\fR ] [, ...] )
+    [ WHERE \fIpredicate\fR ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE INDEX\fR constructs an index \fIindex_name\fR on the specified table.
+Indexes are primarily used to enhance database performance (though
+inappropriate use will result in slower performance).
+.PP
+The key field(s) for the index are specified as column names,
+or alternatively as expressions written in parentheses.
+Multiple fields can be specified if the index method supports
+multicolumn indexes.
+.PP
+An index field can be an expression computed from the values of
+one or more columns of the table row. This feature can be used
+to obtain fast access to data based on some transformation of
+the basic data. For example, an index computed on
+upper(col) would allow the clause
+WHERE upper(col) = 'JIM' to use an index.
+.PP
+PostgreSQL provides the index methods
+B-tree, R-tree, hash, and GiST. The B-tree index method is an
+implementation of Lehman-Yao high-concurrency B-trees. The R-tree
+index method implements standard R-trees using Guttman's quadratic
+split algorithm. The hash index method is an implementation of
+Litwin's linear hashing. Users can also define their own index
+methods, but that is fairly complicated.
+.PP
+When the WHERE clause is present, a
+\fIpartial index\fR is created.
+A partial index is an index that contains entries for only a portion of
+a table, usually a portion that is somehow more interesting than the
+rest of the table. For example, if you have a table that contains both
+billed and unbilled orders where the unbilled orders take up a small
+fraction of the total table and yet that is an often used section, you
+can improve performance by creating an index on just that portion.
+Another possible application is to use WHERE with
+UNIQUE to enforce uniqueness over a subset of a
+table.
+.PP
+The expression used in the WHERE clause may refer
+only to columns of the underlying table (but it can use all columns,
+not only the one(s) being indexed). Presently, subqueries and
+aggregate expressions are also forbidden in WHERE.
+The same restrictions apply to index fields that are expressions.
+.PP
+All functions and operators used in an index definition must be
+``immutable'', that is, their results must depend only on
+their arguments and never on any outside influence (such as
+the contents of another table or the current time). This restriction
+ensures that the behavior of the index is well-defined. To use a
+user-defined function in an index expression or WHERE
+clause, remember to mark the function immutable when you create it.
+.SH "PARAMETERS"
+.TP
+\fBUNIQUE\fR
+Causes the system to check for
+duplicate values in the table when the index is created (if data
+already exist) and each time data is added. Attempts to
+insert or update data which would result in duplicate entries
+will generate an error.
+.TP
+\fB\fIname\fB\fR
+The name of the index to be created. No schema name can be included
+here; the index is always created in the same schema as its parent
+table.
+.TP
+\fB\fItable\fB\fR
+The name (possibly schema-qualified) of the table to be indexed.
+.TP
+\fB\fImethod\fB\fR
+The name of the method to be used for the index. Choices are
+btree, hash,
+rtree, and gist. The
+default method is btree.
+.TP
+\fB\fIcolumn\fB\fR
+The name of a column of the table.
+.TP
+\fB\fIexpression\fB\fR
+An expression based on one or more columns of the table. The
+expression usually must be written with surrounding parentheses,
+as shown in the syntax. However, the parentheses may be omitted
+if the expression has the form of a function call.
+.TP
+\fB\fIopclass\fB\fR
+The name of an operator class. See below for details.
+.TP
+\fB\fIpredicate\fB\fR
+The constraint expression for a partial index.
+.SH "NOTES"
+.PP
+See the chapter called ``Indexes'' in the documentation for information about when indexes can
+be used, when they are not used, and in which particular situations
+can be useful.
+.PP
+Currently, only the B-tree and GiST index methods support
+multicolumn indexes. Up to 32 fields may be specified by default.
+(This limit can be altered when building
+PostgreSQL.) Only B-tree currently
+supports unique indexes.
+.PP
+An \fIoperator class\fR can be specified for each
+column of an index. The operator class identifies the operators to be
+used by the index for that column. For example, a B-tree index on
+four-byte integers would use the int4_ops class;
+this operator class includes comparison functions for four-byte
+integers. In practice the default operator class for the column's data
+type is usually sufficient. The main point of having operator classes
+is that for some data types, there could be more than one meaningful
+ordering. For example, we might want to sort a complex-number data
+type either by absolute value or by real part. We could do this by
+defining two operator classes for the data type and then selecting
+the proper class when making an index. More information about
+operator classes is in the sections called ``Operator Classes'' and ``Interfacing Extensions to Indexes'' in the documentation.
+.PP
+Use DROP INDEX [\fBdrop_index\fR(7)]
+to remove an index.
+.SH "EXAMPLES"
+.PP
+To create a B-tree index on the column title in
+the table films:
+.sp
+.nf
+CREATE UNIQUE INDEX title_idx ON films (title);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE INDEX\fR is a
+PostgreSQL language extension. There
+are no provisions for indexes in the SQL standard.
diff --git a/raw/man7/create_language.7 b/raw/man7/create_language.7
new file mode 100644
index 0000000..b71c3ac
--- /dev/null
+++ b/raw/man7/create_language.7
@@ -0,0 +1,133 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE LANGUAGE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE LANGUAGE \- define a new procedural language
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE \fIname\fR
+    HANDLER \fIcall_handler\fR [ VALIDATOR \fIvalfunction\fR ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+Using \fBCREATE LANGUAGE\fR, a
+PostgreSQL user can register a new
+procedural language with a PostgreSQL
+database. Subsequently, functions and trigger procedures can be
+defined in this new language. The user must have the
+PostgreSQL superuser privilege to
+register a new language.
+.PP
+\fBCREATE LANGUAGE\fR effectively associates the
+language name with a call handler that is responsible for executing
+functions written in the language. Refer to the section called ``User-Defined Functions'' in the documentation
+for more information about language call handlers.
+.PP
+Note that procedural languages are local to individual databases.
+To make a language available in all databases by default, it should
+be installed into the template1 database.
+.SH "PARAMETERS"
+.TP
+\fBTRUSTED\fR
+TRUSTED specifies that the call handler for
+the language is safe, that is, it does not offer an
+unprivileged user any functionality to bypass access
+restrictions. If this key word is omitted when registering the
+language, only users with the
+PostgreSQL superuser privilege can
+use this language to create new functions.
+.TP
+\fBPROCEDURAL\fR
+This is a noise word.
+.TP
+\fB\fIname\fB\fR
+The name of the new procedural language. The language name is
+case insensitive. The name must be unique among the languages
+in the database.
+
+For backward compatibility, the name may be enclosed by single
+quotes.
+.TP
+\fBHANDLER \fIcall_handler\fB\fR
+\fIcall_handler\fR is
+the name of a previously registered function that will be
+called to execute the procedural language functions. The call
+handler for a procedural language must be written in a compiled
+language such as C with version 1 call convention and
+registered with PostgreSQL as a
+function taking no arguments and returning the
+\fBlanguage_handler\fR type, a placeholder type that is
+simply used to identify the function as a call handler.
+.TP
+\fBVALIDATOR \fIvalfunction\fB\fR
+\fIvalfunction\fR is the
+name of a previously registered function that will be called
+when a new function in the language is created, to validate the
+new function.
+If no
+validator function is specified, then a new function will not
+be checked when it is created.
+The validator function must take one argument of
+type \fBoid\fR, which will be the OID of the
+to-be-created function, and will typically return \fBvoid\fR.
+
+A validator function would typically inspect the function body
+for syntactical correctness, but it can also look at other
+properties of the function, for example if the language cannot
+handle certain argument types. To signal an error, the
+validator function should use the \fBereport()\fR
+function. The return value of the function is ignored.
+.SH "NOTES"
+.PP
+This command normally should not be executed directly by users.
+For the procedural languages supplied in the
+PostgreSQL distribution, the \fBcreatelang\fR(1) program should be used, which will also
+install the correct call handler. (\fBcreatelang\fR
+will call \fBCREATE LANGUAGE\fR internally.)
+.PP
+In PostgreSQL versions before 7.3, it was
+necessary to declare handler functions as returning the placeholder
+type \fBopaque\fR, rather than \fBlanguage_handler\fR.
+To support loading 
+of old dump files, \fBCREATE LANGUAGE\fR will accept a function
+declared as returning \fBopaque\fR, but it will issue a notice and
+change the function's declared return type to \fBlanguage_handler\fR.
+.PP
+Use the CREATE FUNCTION [\fBcreate_function\fR(7)] command to create a new
+function.
+.PP
+Use DROP LANGUAGE [\fBdrop_language\fR(7)], or better yet the \fBdroplang\fR(1) program, to drop procedural languages.
+.PP
+The system catalog \fBpg_language\fR (see the chapter called ``System Catalogs'' in the documentation) records information about the
+currently installed languages. Also \fBcreatelang\fR
+has an option to list the installed languages.
+.PP
+The definition of a procedural language cannot be changed once it
+has been created, with the exception of the privileges.
+.PP
+To be able to use a procedural language, a user must be granted the
+USAGE privilege. The
+\fBcreatelang\fR program automatically grants
+permissions to everyone if the language is known to be trusted.
+.SH "EXAMPLES"
+.PP
+The following two commands executed in sequence will register a new
+procedural language and the associated call handler.
+.sp
+.nf
+CREATE FUNCTION plsample_call_handler() RETURNS language_handler
+    AS '$libdir/plsample'
+    LANGUAGE C;
+CREATE LANGUAGE plsample
+    HANDLER plsample_call_handler;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE LANGUAGE\fR is a
+PostgreSQL extension.
+.SH "SEE ALSO"
+ALTER LANGUAGE [\fBalter_language\fR(7)], CREATE FUNCTION [\fBcreate_function\fR(l)], DROP LANGUAGE [\fBdrop_language\fR(l)], GRANT [\fBgrant\fR(l)], REVOKE [\fBrevoke\fR(l)], \fBcreatelang\fR(1), \fBdroplang\fR(1)
+
diff --git a/raw/man7/create_operator.7 b/raw/man7/create_operator.7
new file mode 100644
index 0000000..3adc7ab
--- /dev/null
+++ b/raw/man7/create_operator.7
@@ -0,0 +1,168 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE OPERATOR" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE OPERATOR \- define a new operator
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE OPERATOR \fIname\fR (
+    PROCEDURE = \fIfuncname\fR
+    [, LEFTARG = \fIlefttype\fR ] [, RIGHTARG = \fIrighttype\fR ]
+    [, COMMUTATOR = \fIcom_op\fR ] [, NEGATOR = \fIneg_op\fR ]
+    [, RESTRICT = \fIres_proc\fR ] [, JOIN = \fIjoin_proc\fR ]
+    [, HASHES ] [, MERGES ]
+    [, SORT1 = \fIleft_sort_op\fR ] [, SORT2 = \fIright_sort_op\fR ]
+    [, LTCMP = \fIless_than_op\fR ] [, GTCMP = \fIgreater_than_op\fR ]
+)
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE OPERATOR\fR defines a new operator,
+\fIname\fR. The user who
+defines an operator becomes its owner. If a schema name is given
+then the operator is created in the specified schema. Otherwise it
+is created in the current schema.
+.PP
+The operator name is a sequence of up to \fBNAMEDATALEN\fR-1
+(63 by default) characters from the following list:
+.sp
+.nf
++ - * / < > = ~ ! @ # % ^ & | ` ?
+.sp
+.fi
+There are a few restrictions on your choice of name:
+.TP 0.2i
+\(bu
+-- and /* cannot appear anywhere in an operator name,
+since they will be taken as the start of a comment.
+.TP 0.2i
+\(bu
+A multicharacter operator name cannot end in + or
+-,
+unless the name also contains at least one of these characters:
+.sp
+.nf
+~ ! @ # % ^ & | ` ?
+.sp
+.fi
+For example, @- is an allowed operator name,
+but *- is not.
+This restriction allows PostgreSQL to
+parse SQL-compliant commands without requiring spaces between tokens.
+.PP
+.PP
+The operator != is mapped to
+<> on input, so these two names are always
+equivalent.
+.PP
+At least one of LEFTARG and RIGHTARG must be defined. For
+binary operators, both must be defined. For right unary
+operators, only LEFTARG should be defined, while for left
+unary operators only RIGHTARG should be defined.
+.PP
+The \fIfuncname\fR
+procedure must have been previously defined using \fBCREATE
+FUNCTION\fR and must be defined to accept the correct number
+of arguments (either one or two) of the indicated types.
+.PP
+The other clauses specify optional operator optimization clauses.
+Their meaning is detailed in the section called ``User-Defined Operators'' in the documentation.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the operator to be defined. See above for allowable
+characters. The name may be schema-qualified, for example
+CREATE OPERATOR myschema.+ (...). If not, then
+the operator is created in the current schema. Two operators
+in the same schema can have the same name if they operate on
+different data types. This is called
+\fIoverloading\fR.
+.TP
+\fB\fIfuncname\fB\fR
+The function used to implement this operator.
+.TP
+\fB\fIlefttype\fB\fR
+The type of the left-hand argument of the operator, if any.
+This option would be omitted for a left-unary operator.
+.TP
+\fB\fIrighttype\fB\fR
+The type of the right-hand argument of the operator, if any.
+This option would be omitted for a right-unary operator.
+.TP
+\fB\fIcom_op\fB\fR
+The commutator of this operator.
+.TP
+\fB\fIneg_op\fB\fR
+The negator of this operator.
+.TP
+\fB\fIres_proc\fB\fR
+The restriction selectivity estimator function for this operator.
+.TP
+\fB\fIjoin_proc\fB\fR
+The join selectivity estimator function for this operator.
+.TP
+\fBHASHES\fR
+Indicates this operator can support a hash join.
+.TP
+\fBMERGES\fR
+Indicates this operator can support a merge join.
+.TP
+\fB\fIleft_sort_op\fB\fR
+If this operator can support a merge join, the less-than
+operator that sorts the left-hand data type of this operator.
+.TP
+\fB\fIright_sort_op\fB\fR
+If this operator can support a merge join, the less-than
+operator that sorts the right-hand data type of this operator.
+.TP
+\fB\fIless_than_op\fB\fR
+If this operator can support a merge join, the less-than
+operator that compares the input data types of this operator.
+.TP
+\fB\fIgreater_than_op\fB\fR
+If this operator can support a merge join, the greater-than
+operator that compares the input data types of this operator.
+.PP
+To give a schema-qualified operator name in \fIcom_op\fR or the other optional
+arguments, use the OPERATOR() syntax, for example
+.sp
+.nf
+COMMUTATOR = OPERATOR(myschema.===) ,
+.sp
+.fi
+.PP
+.SH "NOTES"
+.PP
+Refer to the section called ``User-Defined Operators'' in the documentation for further information.
+.PP
+Use \fBDROP OPERATOR\fR to delete user-defined
+operators from a database.
+.SH "EXAMPLES"
+.PP
+The following command defines a new operator, area-equality, for
+the data type \fBbox\fR:
+.sp
+.nf
+CREATE OPERATOR === (
+    LEFTARG = box,
+    RIGHTARG = box,
+    PROCEDURE = area_equal_procedure,
+    COMMUTATOR = ===,
+    NEGATOR = !==,
+    RESTRICT = area_restriction_procedure,
+    JOIN = area_join_procedure,
+    HASHES,
+    SORT1 = <<<,
+    SORT2 = <<<
+    -- Since sort operators were given, MERGES is implied.
+    -- LTCMP and GTCMP are assumed to be < and > respectively
+);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE OPERATOR\fR is a
+PostgreSQL extension. There are no
+provisions for user-defined operators in the SQL standard.
diff --git a/raw/man7/create_operator_class.7 b/raw/man7/create_operator_class.7
new file mode 100644
index 0000000..d4ab1c4
--- /dev/null
+++ b/raw/man7/create_operator_class.7
@@ -0,0 +1,133 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE OPERATOR CLASS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE OPERATOR CLASS \- define a new operator class
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE OPERATOR CLASS \fIname\fR [ DEFAULT ] FOR TYPE \fIdata_type\fR USING \fIindex_method\fR AS
+  {  OPERATOR \fIstrategy_number\fR \fIoperator_name\fR [ ( \fIop_type\fR, \fIop_type\fR ) ] [ RECHECK ]
+   | FUNCTION \fIsupport_number\fR \fIfuncname\fR ( \fIargument_type\fR [, ...] )
+   | STORAGE \fIstorage_type\fR
+  } [, ... ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE OPERATOR CLASS\fR creates a new operator class.
+An operator class defines how a particular data type can be used with
+an index. The operator class specifies that certain operators will fill
+particular roles or ``strategies'' for this data type and this
+index method. The operator class also specifies the support procedures to
+be used by 
+the index method when the operator class is selected for an
+index column. All the operators and functions used by an operator
+class must be defined before the operator class is created.
+.PP
+If a schema name is given then the operator class is created in the
+specified schema. Otherwise it is created in the current schema.
+Two operator classes in the same schema can have the same name only if they
+are for different index methods.
+.PP
+The user who defines an operator class becomes its owner. Presently,
+the creating user must be a superuser. (This restriction is made because
+an erroneous operator class definition could confuse or even crash the
+server.)
+.PP
+\fBCREATE OPERATOR CLASS\fR does not presently check
+whether the operator class definition includes all the operators and functions
+required by the index method. It is the user's
+responsibility to define a valid operator class.
+.PP
+Refer to the section called ``Interfacing Extensions to Indexes'' in the documentation for further information.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the operator class to be created. The name may be
+schema-qualified.
+.TP
+\fBDEFAULT\fR
+If present, the operator class will become the default
+operator class for its data type. At most one operator class
+can be the default for a specific data type and index method.
+.TP
+\fB\fIdata_type\fB\fR
+The column data type that this operator class is for.
+.TP
+\fB\fIindex_method\fB\fR
+The name of the index method this operator class is for.
+.TP
+\fB\fIstrategy_number\fB\fR
+The index method's strategy number for an operator
+associated with the operator class.
+.TP
+\fB\fIoperator_name\fB\fR
+The name (optionally schema-qualified) of an operator associated
+with the operator class.
+.TP
+\fB\fIop_type\fB\fR
+The operand data type(s) of an operator, or NONE to
+signify a left-unary or right-unary operator. The operand data
+types may be omitted in the normal case where they are the same
+as the operator class's data type.
+.TP
+\fBRECHECK\fR
+If present, the index is ``lossy'' for this operator, and
+so the rows retrieved using the index must be rechecked to
+verify that they actually satisfy the qualification clause
+involving this operator.
+.TP
+\fB\fIsupport_number\fB\fR
+The index method's support procedure number for a
+function associated with the operator class.
+.TP
+\fB\fIfuncname\fB\fR
+The name (optionally schema-qualified) of a function that is an
+index method support procedure for the operator class.
+.TP
+\fB\fIargument_types\fB\fR
+The parameter data type(s) of the function.
+.TP
+\fB\fIstorage_type\fB\fR
+The data type actually stored in the index. Normally this is
+the same as the column data type, but some index methods
+(only GiST at this writing) allow it to be different. The
+STORAGE clause must be omitted unless the index
+method allows a different type to be used.
+.PP
+The OPERATOR, FUNCTION, and STORAGE
+clauses may appear in any order.
+.PP
+.SH "EXAMPLES"
+.PP
+The following example command defines a GiST index operator class
+for the data type _int4 (array of \fBint4\fR). See
+\fIcontrib/intarray/\fR for the complete example.
+.sp
+.nf
+CREATE OPERATOR CLASS gist__int_ops
+    DEFAULT FOR TYPE _int4 USING gist AS
+        OPERATOR        3       &&,
+        OPERATOR        6       =       RECHECK,
+        OPERATOR        7       @,
+        OPERATOR        8       ~,
+        OPERATOR        20      @@ (_int4, query_int),
+        FUNCTION        1       g_int_consistent (internal, _int4, int4),
+        FUNCTION        2       g_int_union (bytea, internal),
+        FUNCTION        3       g_int_compress (internal),
+        FUNCTION        4       g_int_decompress (internal),
+        FUNCTION        5       g_int_penalty (internal, internal, internal),
+        FUNCTION        6       g_int_picksplit (internal, internal),
+        FUNCTION        7       g_int_same (_int4, _int4, internal);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE OPERATOR CLASS\fR is a
+PostgreSQL extension. There is no
+\fBCREATE OPERATOR CLASS\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+ALTER OPERATOR CLASS [\fBalter_operator_class\fR(7)], DROP OPERATOR CLASS [\fBdrop_operator_class\fR(l)]
+
diff --git a/raw/man7/create_rule.7 b/raw/man7/create_rule.7
new file mode 100644
index 0000000..4ae2e7c
--- /dev/null
+++ b/raw/man7/create_rule.7
@@ -0,0 +1,152 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE RULE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE RULE \- define a new rewrite rule
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ OR REPLACE ] RULE \fIname\fR AS ON \fIevent\fR
+    TO \fItable\fR [ WHERE \fIcondition\fR ]
+    DO [ INSTEAD ] { NOTHING | \fIcommand\fR | ( \fIcommand\fR ; \fIcommand\fR ... ) }
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE RULE\fR defines a new rule applying to a specified
+table or view.
+\fBCREATE OR REPLACE RULE\fR will either create a
+new rule, or replace an existing rule of the same name for the same
+table.
+.PP
+The PostgreSQL rule system allows one to
+define an alternate action to be performed on insertions, updates,
+or deletions in database tables. Roughly speaking, a rule causes
+additional commands to be executed when a given command on a given
+table is executed. Alternatively, a rule can replace a given
+command by another, or cause a command not to be executed at all.
+Rules are used to implement table views as well. It is important
+to realize that a rule is really a command transformation
+mechanism, or command macro. The transformation happens before the
+execution of the commands starts. If you actually want an
+operation that fires independently for each physical row, you
+probably want to use a trigger, not a rule. More information about
+the rules system is in the chapter called ``The Rule System'' in the documentation.
+.PP
+Presently, ON SELECT rules must be unconditional
+INSTEAD rules and must have actions that consist
+of a single \fBSELECT\fR command. Thus, an
+ON SELECT rule effectively turns the table into
+a view, whose visible contents are the rows returned by the rule's
+\fBSELECT\fR command rather than whatever had been
+stored in the table (if anything). It is considered better style
+to write a \fBCREATE VIEW\fR command than to create a
+real table and define an ON SELECT rule for it.
+.PP
+You can create the illusion of an updatable view by defining
+ON INSERT, ON UPDATE, and
+ON DELETE rules (or any subset of those that's
+sufficient for your purposes) to replace update actions on the view
+with appropriate updates on other tables.
+.PP
+There is a catch if you try to use conditional rules for view
+updates: there \fBmust\fR be an unconditional
+INSTEAD rule for each action you wish to allow
+on the view. If the rule is conditional, or is not
+INSTEAD, then the system will still reject
+attempts to perform the update action, because it thinks it might
+end up trying to perform the action on the dummy table of the view
+in some cases. If you want to handle all the useful cases in
+conditional rules, you can; just add an unconditional DO
+INSTEAD NOTHING rule to ensure that the system
+understands it will never be called on to update the dummy table.
+Then make the conditional rules not INSTEAD; in
+the cases where they are applied, they add to the default
+INSTEAD NOTHING action.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of a rule to create. This must be distinct from the
+name of any other rule for the same table. Multiple rules on
+the same table and same event type are applied in alphabetical
+name order.
+.TP
+\fB\fIevent\fB\fR
+The even is one of SELECT,
+INSERT, UPDATE, or
+DELETE.
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of the table or view the
+rule applies to.
+.TP
+\fB\fIcondition\fB\fR
+Any SQL conditional expression (returning \fBboolean\fR).
+The condition expression may not refer to any tables except
+NEW and OLD, and may not
+contain aggregate functions.
+.TP
+\fB\fIcommand\fB\fR
+The command or commands that make up the rule action. Valid
+commands are SELECT,
+INSERT, UPDATE,
+DELETE, or NOTIFY.
+.PP
+Within \fIcondition\fR and
+\fIcommand\fR, the special
+table names NEW and OLD may
+be used to refer to values in the referenced table.
+NEW is valid in ON INSERT and
+ON UPDATE rules to refer to the new row being
+inserted or updated. OLD is valid in
+ON UPDATE and ON DELETE rules
+to refer to the existing row being updated or deleted.
+.PP
+.SH "NOTES"
+.PP
+You must have the privilege RULE on a table to
+be allowed to define a rule on it.
+.PP
+It is very important to take care to avoid circular rules. For
+example, though each of the following two rule definitions are
+accepted by PostgreSQL, the
+\fBSELECT\fR command would cause
+PostgreSQL to report an error because
+the query cycled too many times:
+.sp
+.nf
+CREATE RULE "_RETURN" AS
+    ON SELECT TO t1
+    DO INSTEAD 
+	SELECT * FROM t2;
+
+CREATE RULE "_RETURN" AS
+    ON SELECT TO t2
+    DO INSTEAD 
+	SELECT * FROM t1;
+
+SELECT * FROM t1;
+.sp
+.fi
+.PP
+Presently, if a rule action contains a \fBNOTIFY\fR
+command, the \fBNOTIFY\fR command will be executed
+unconditionally, that is, the \fBNOTIFY\fR will be
+issued even if there are not any rows that the rule should apply
+to. For example, in
+.sp
+.nf
+CREATE RULE notify_me AS ON UPDATE TO mytable DO NOTIFY mytable;
+
+UPDATE mytable SET name = 'foo' WHERE id = 42;
+.sp
+.fi
+one \fBNOTIFY\fR event will be sent during the
+\fBUPDATE\fR, whether or not there are any rows with
+id = 42. This is an implementation restriction
+that may be fixed in future releases.
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE RULE\fR is a
+PostgreSQL language extension, as is the
+entire rules system.
diff --git a/raw/man7/create_schema.7 b/raw/man7/create_schema.7
new file mode 100644
index 0000000..372ffcd
--- /dev/null
+++ b/raw/man7/create_schema.7
@@ -0,0 +1,114 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE SCHEMA" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE SCHEMA \- define a new schema
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE SCHEMA \fIschemaname\fR [ AUTHORIZATION \fIusername\fR ] [ \fIschema_element\fR [ ... ] ]
+CREATE SCHEMA AUTHORIZATION \fIusername\fR [ \fIschema_element\fR [ ... ] ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE SCHEMA\fR will enter a new schema
+into the current database.
+The schema name must be distinct from the name of any existing schema
+in the current database.
+.PP
+A schema is essentially a namespace:
+it contains named objects (tables, data types, functions, and operators)
+whose names may duplicate those of other objects existing in other
+schemas. Named objects are accessed either by ``qualifying''
+their names with the schema name as a prefix, or by setting a search
+path that includes the desired schema(s). Unqualified objects are
+created in the current schema (the one at the front of the search path,
+which can be determined with the function \fBcurrent_schema\fR).
+.PP
+Optionally, \fBCREATE SCHEMA\fR can include subcommands
+to create objects within the new schema. The subcommands are treated
+essentially the same as separate commands issued after creating the
+schema, except that if the AUTHORIZATION clause is used,
+all the created objects will be owned by that user.
+.SH "PARAMETERS"
+.TP
+\fB\fIschemaname\fB\fR
+The name of a schema to be created. If this is omitted, the user name
+is used as the schema name.
+.TP
+\fB\fIusername\fB\fR
+The name of the user who will own the schema. If omitted,
+defaults to the user executing the command. Only superusers
+may create schemas owned by users other than themselves.
+.TP
+\fB\fIschema_element\fB\fR
+An SQL statement defining an object to be created within the schema.
+Currently, only \fBCREATE TABLE\fR, \fBCREATE VIEW\fR, 
+and \fBGRANT\fR are accepted as clauses within
+\fBCREATE SCHEMA\fR. Other kinds of objects may be created
+in separate commands after the schema is created.
+.SH "NOTES"
+.PP
+To create a schema, the invoking user must have CREATE
+privilege for the current database. (Of course, superusers bypass
+this check.)
+.SH "EXAMPLES"
+.PP
+Create a schema:
+.sp
+.nf
+CREATE SCHEMA myschema;
+.sp
+.fi
+.PP
+Create a schema for user joe; the schema will also be
+named joe:
+.sp
+.nf
+CREATE SCHEMA AUTHORIZATION joe;
+.sp
+.fi
+.PP
+Create a schema and create a table and view within it:
+.sp
+.nf
+CREATE SCHEMA hollywood
+    CREATE TABLE films (title text, release date, awards text[])
+    CREATE VIEW winners AS
+        SELECT title, release FROM films WHERE awards IS NOT NULL;
+.sp
+.fi
+Notice that the individual subcommands do not end with semicolons.
+.PP
+The following is an equivalent way of accomplishing the same result:
+.sp
+.nf
+CREATE SCHEMA hollywood;
+CREATE TABLE hollywood.films (title text, release date, awards text[]);
+CREATE VIEW hollywood.winners AS
+    SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The SQL standard allows a DEFAULT CHARACTER SET clause
+in \fBCREATE SCHEMA\fR, as well as more subcommand
+types than are presently accepted by
+PostgreSQL.
+.PP
+The SQL standard specifies that the subcommands in \fBCREATE
+SCHEMA\fR may appear in any order. The present
+PostgreSQL implementation does not
+handle all cases of forward references in subcommands; it may
+sometimes be necessary to reorder the subcommands to avoid forward
+references.
+.PP
+According to the SQL standard, the owner of a schema always owns
+all objects within it. PostgreSQL
+allows schemas to contain objects owned by users other than the
+schema owner. This can happen only if the schema owner grants the
+CREATE privilege on his schema to someone else.
+.SH "SEE ALSO"
+ALTER SCHEMA [\fBalter_schema\fR(7)], DROP SCHEMA [\fBdrop_schema\fR(l)]
+
diff --git a/raw/man7/create_sequence.7 b/raw/man7/create_sequence.7
new file mode 100644
index 0000000..1eda397
--- /dev/null
+++ b/raw/man7/create_sequence.7
@@ -0,0 +1,194 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE SEQUENCE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE SEQUENCE \- define a new sequence generator
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ TEMPORARY | TEMP ] SEQUENCE \fIname\fR [ INCREMENT [ BY ] \fIincrement\fR ]
+    [ MINVALUE \fIminvalue\fR | NO MINVALUE ] [ MAXVALUE \fImaxvalue\fR | NO MAXVALUE ]
+    [ START [ WITH ] \fIstart\fR ] [ CACHE \fIcache\fR ] [ [ NO ] CYCLE ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE SEQUENCE\fR creates a new sequence number
+generator. This involves creating and initializing a new special
+single-row table with the name \fIname\fR. The generator will be
+owned by the user issuing the command.
+.PP
+If a schema name is given then the sequence is created in the
+specified schema. Otherwise it is created in the current schema.
+Temporary sequences exist in a special schema, so a schema name may not be
+given when creating a temporary sequence.
+The sequence name must be distinct from the name of any other sequence,
+table, index, or view in the same schema.
+.PP
+After a sequence is created, you use the functions
+\fBnextval\fR,
+\fBcurrval\fR, and
+\fBsetval\fR
+to operate on the sequence. These functions are documented in
+the section called ``Sequence-Manipulation Functions'' in the documentation.
+.PP
+Although you cannot update a sequence directly, you can use a query like
+.sp
+.nf
+SELECT * FROM \fIname\fR;
+.sp
+.fi
+to examine the parameters and current state of a sequence. In particular,
+the last_value field of the sequence shows the last value
+allocated by any session. (Of course, this value may be obsolete
+by the time it's printed, if other sessions are actively doing
+\fBnextval\fR calls.)
+.SH "PARAMETERS"
+.TP
+\fBTEMPORARY or TEMP\fR
+If specified, the sequence object is created only for this
+session, and is automatically dropped on session exit. Existing
+permanent sequences with the same name are not visible (in this
+session) while the temporary sequence exists, unless they are
+referenced with schema-qualified names.
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of the sequence to be created.
+.TP
+\fB\fIincrement\fB\fR
+The optional clause INCREMENT BY \fIincrement\fR specified,
+which value is added to the current sequence value to create a
+new value. A positive value will make an ascending sequence, a
+negative one a descending sequence. The default value is 1.
+.TP
+\fB\fIminvalue\fB\fR
+.TP
+\fBNO MINVALUE\fR
+The optional clause MINVALUE \fIminvalue\fR determines
+the minimum value a sequence can generate. If this clause is not
+supplied or \fBNO MINVALUE\fR is specified, then
+defaults will be used. The defaults are 1 and
+-263-1 for ascending and descending sequences,
+respectively.
+.TP
+\fB\fImaxvalue\fB\fR
+.TP
+\fBNO MAXVALUE\fR
+The optional clause MAXVALUE \fImaxvalue\fR determines
+the maximum value for the sequence. If this clause is not
+supplied or \fBNO MAXVALUE\fR is specified, then
+default values will be used. The defaults are
+263-1 and -1 for ascending and descending
+sequences, respectively.
+.TP
+\fB\fIstart\fB\fR
+The optional clause START WITH \fIstart\fR  allows the
+sequence to begin anywhere. The default starting value is
+\fIminvalue\fR for
+ascending sequences and \fImaxvalue\fR for descending ones.
+.TP
+\fB\fIcache\fB\fR
+The optional clause CACHE \fIcache\fR specifies how
+many sequence numbers are to be preallocated and stored in
+memory for faster access. The minimum value is 1 (only one value
+can be generated at a time, i.e., no cache), and this is also the
+default.
+.TP
+\fBCYCLE\fR
+.TP
+\fBNO CYCLE\fR
+The CYCLE option allows the sequence to wrap
+around when the \fImaxvalue\fR or \fIminvalue\fR has been reached by an
+ascending or descending sequence respectively. If the limit is
+reached, the next number generated will be the \fIminvalue\fR or \fImaxvalue\fR, respectively.
+
+If NO CYCLE is specified, any calls to
+\fBnextval\fR after the sequence has reached its
+maximum value will return an error. If neither
+CYCLE or NO CYCLE are
+specified, NO CYCLE is the default.
+.SH "NOTES"
+.PP
+Use \fBDROP SEQUENCE\fR to remove a sequence.
+.PP
+Sequences are based on \fBbigint\fR arithmetic, so the range
+cannot exceed the range of an eight-byte integer
+(-9223372036854775808 to 9223372036854775807). On some older
+platforms, there may be no compiler support for eight-byte
+integers, in which case sequences use regular \fBinteger\fR
+arithmetic (range -2147483648 to +2147483647).
+.PP
+Unexpected results may be obtained if a \fIcache\fR setting greater than one is
+used for a sequence object that will be used concurrently by
+multiple sessions. Each session will allocate and cache successive
+sequence values during one access to the sequence object and
+increase the sequence object's last_value accordingly.
+Then, the next \fIcache\fR-1
+uses of \fBnextval\fR within that session simply return the
+preallocated values without touching the sequence object. So, any
+numbers allocated but not used within a session will be lost when
+that session ends, resulting in ``holes'' in the
+sequence.
+.PP
+Furthermore, although multiple sessions are guaranteed to allocate
+distinct sequence values, the values may be generated out of
+sequence when all the sessions are considered. For example, with
+a \fIcache\fR setting of 10,
+session A might reserve values 1..10 and return
+\fBnextval\fR=1, then session B might reserve values
+11..20 and return \fBnextval\fR=11 before session A
+has generated nextval=2. Thus, with a
+\fIcache\fR setting of one
+it is safe to assume that \fBnextval\fR values are generated
+sequentially; with a \fIcache\fR setting greater than one you
+should only assume that the \fBnextval\fR values are all
+distinct, not that they are generated purely sequentially. Also,
+last_value will reflect the latest value reserved by
+any session, whether or not it has yet been returned by
+\fBnextval\fR.
+.PP
+Another consideration is that a \fBsetval\fR executed on
+such a sequence will not be noticed by other sessions until they
+have used up any preallocated values they have cached.
+.SH "EXAMPLES"
+.PP
+Create an ascending sequence called serial, starting at 101:
+.sp
+.nf
+CREATE SEQUENCE serial START 101;
+.sp
+.fi
+.PP
+Select the next number from this sequence:
+.sp
+.nf
+SELECT nextval('serial');
+    
+ nextval
+---------
+     114
+.sp
+.fi
+.PP
+Use this sequence in an \fBINSERT\fR command:
+.sp
+.nf
+INSERT INTO distributors VALUES (nextval('serial'), 'nothing');
+.sp
+.fi
+.PP
+Update the sequence value after a \fBCOPY FROM\fR:
+.sp
+.nf
+BEGIN;
+COPY distributors FROM 'input_file';
+SELECT setval('serial', max(id)) FROM distributors;
+END;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBCREATE SEQUENCE\fR is a
+PostgreSQL language extension. There is
+no \fBCREATE SEQUENCE\fR statement in the SQL
+standard.
diff --git a/raw/man7/create_table.7 b/raw/man7/create_table.7
new file mode 100644
index 0000000..05a84ab
--- /dev/null
+++ b/raw/man7/create_table.7
@@ -0,0 +1,594 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TABLE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TABLE \- define a new table
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE \fItable_name\fR (
+    { \fIcolumn_name\fR \fIdata_type\fR [ DEFAULT \fIdefault_expr\fR ] [ \fIcolumn_constraint\fR [, ... ] ]
+    | \fItable_constraint\fR
+    | LIKE \fIparent_table\fR [ { INCLUDING | EXCLUDING } DEFAULTS ] }  [, ... ]
+)
+[ INHERITS ( \fIparent_table\fR [, ... ] ) ]
+[ WITH OIDS | WITHOUT OIDS ]
+[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
+
+where \fIcolumn_constraint\fR is:
+
+[ CONSTRAINT \fIconstraint_name\fR ]
+{ NOT NULL | NULL | UNIQUE | PRIMARY KEY |
+  CHECK (\fIexpression\fR) |
+  REFERENCES \fIreftable\fR [ ( \fIrefcolumn\fR ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
+    [ ON DELETE \fIaction\fR ] [ ON UPDATE \fIaction\fR ] }
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+
+and \fItable_constraint\fR is:
+
+[ CONSTRAINT \fIconstraint_name\fR ]
+{ UNIQUE ( \fIcolumn_name\fR [, ... ] ) |
+  PRIMARY KEY ( \fIcolumn_name\fR [, ... ] ) |
+  CHECK ( \fIexpression\fR ) |
+  FOREIGN KEY ( \fIcolumn_name\fR [, ... ] ) REFERENCES \fIreftable\fR [ ( \fIrefcolumn\fR [, ... ] ) ]
+    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE \fIaction\fR ] [ ON UPDATE \fIaction\fR ] }
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE TABLE\fR will create a new, initially empty table
+in the current database. The table will be owned by the user issuing the
+command.
+.PP
+If a schema name is given (for example, CREATE TABLE
+myschema.mytable ...) then the table is created in the
+specified schema. Otherwise it is created in the current schema.
+Temporary tables exist in a special schema, so a schema name may not be
+given when creating a temporary table.
+The table name must be distinct from the name of any other table,
+sequence, index, or view in the same schema.
+.PP
+\fBCREATE TABLE\fR also automatically creates a data
+type that represents the composite type corresponding
+to one row of the table. Therefore, tables cannot have the same
+name as any existing data type in the same schema.
+.PP
+A table cannot have more than 1600 columns. (In practice, the
+effective limit is lower because of tuple-length constraints).
+.PP
+The optional constraint clauses specify constraints (or tests) that
+new or updated rows must satisfy for an insert or update operation
+to succeed. A constraint is an SQL object that helps define the
+set of valid values in the table in various ways.
+.PP
+There are two ways to define constraints: table constraints and
+column constraints. A column constraint is defined as part of a
+column definition. A table constraint definition is not tied to a
+particular column, and it can encompass more than one column.
+Every column constraint can also be written as a table constraint;
+a column constraint is only a notational convenience if the
+constraint only affects one column.
+.SH "PARAMETERS"
+.TP
+\fBTEMPORARY or TEMP\fR
+If specified, the table is created as a temporary table.
+Temporary tables are automatically dropped at the end of a
+session, or optionally at the end of the current transaction 
+(see ON COMMIT below). Existing permanent tables with the same 
+name are not visible to the current session while the temporary 
+table exists, unless they are referenced with schema-qualified 
+names. Any indexes created on a temporary table are automatically
+temporary as well.
+
+Optionally, GLOBAL or LOCAL
+can be written before TEMPORARY or TEMP.
+This makes no difference in PostgreSQL, but see
+Compatibility [\fBcreate_table\fR(7)].
+.TP
+\fB\fItable_name\fB\fR
+The name (optionally schema-qualified) of the table to be created.
+.TP
+\fB\fIcolumn_name\fB\fR
+The name of a column to be created in the new table.
+.TP
+\fB\fIdata_type\fB\fR
+The data type of the column. This may include array specifiers.
+.TP
+\fBDEFAULT\fR
+The DEFAULT clause assigns a default data value for
+the column whose column definition it appears within. The value
+is any variable-free expression (subqueries and cross-references
+to other columns in the current table are not allowed). The
+data type of the default expression must match the data type of the
+column.
+
+The default expression will be used in any insert operation that
+does not specify a value for the column. If there is no default
+for a column, then the default is null.
+.TP
+\fBLIKE \fIparent_table\fB [ { INCLUDING | EXCLUDING } DEFAULTS ]\fR
+The LIKE clause specifies a table from which
+the new table automatically inherits all column names, their data types, and
+not-null constraints.
+
+Unlike INHERITS, the new table and inherited table
+are complete decoupled after creation has been completed. Data inserted
+into the new table will not be reflected into the parent table.
+
+Default expressions for the inherited column definitions will only be included if
+INCLUDING DEFAULTS is specified. The default is to exclude
+default expressions.
+.TP
+\fBINHERITS ( \fIparent_table\fB [, ... ] )\fR
+The optional INHERITS clause specifies a list of
+tables from which the new table automatically inherits all
+columns. If the same column name exists in more than one parent
+table, an error is reported unless the data types of the columns
+match in each of the parent tables. If there is no conflict,
+then the duplicate columns are merged to form a single column in
+the new table. If the column name list of the new table
+contains a column that is also inherited, the data type must
+likewise match the inherited column(s), and the column
+definitions are merged into one. However, inherited and new
+column declarations of the same name need not specify identical
+constraints: all constraints provided from any declaration are
+merged together and all are applied to the new table. If the
+new table explicitly specifies a default value for the column,
+this default overrides any defaults from inherited declarations
+of the column. Otherwise, any parents that specify default
+values for the column must all specify the same default, or an
+error will be reported.
+.TP
+\fBWITH OIDS\fR
+.TP
+\fBWITHOUT OIDS\fR
+This optional clause specifies whether rows of the new table
+should have OIDs (object identifiers) assigned to them. The
+default is to have OIDs. (If the new table inherits from any
+tables that have OIDs, then WITH OIDS is forced even
+if the command says WITHOUT OIDS.)
+
+Specifying WITHOUT OIDS allows the user to suppress
+generation of OIDs for rows of a table. This may be worthwhile
+for large tables, since it will reduce OID consumption and
+thereby postpone wraparound of the 32-bit OID counter. Once the
+counter wraps around, uniqueness of OIDs can no longer be
+assumed, which considerably reduces their usefulness. Specifying
+WITHOUT OIDS also reduces the space required
+to store the table on disk by 4 bytes per row of the table,
+thereby improving performance.
+.TP
+\fBCONSTRAINT \fIconstraint_name\fB\fR
+An optional name for a column or table constraint. If not specified,
+the system generates a name.
+.TP
+\fBNOT NULL\fR
+The column is not allowed to contain null values.
+.TP
+\fBNULL\fR
+The column is allowed to contain null values. This is the default.
+
+This clause is only available for compatibility with
+non-standard SQL databases. Its use is discouraged in new
+applications.
+.TP
+\fBUNIQUE (column constraint)\fR
+.TP
+\fBUNIQUE ( \fIcolumn_name\fB [, ... ] ) (table constraint)\fR
+The UNIQUE constraint specifies that a
+group of one or more distinct columns of a table may contain
+only unique values. The behavior of the unique table constraint
+is the same as that for column constraints, with the additional
+capability to span multiple columns.
+
+For the purpose of a unique constraint, null values are not
+considered equal.
+
+Each unique table constraint must name a set of columns that is
+different from the set of columns named by any other unique or
+primary key constraint defined for the table. (Otherwise it
+would just be the same constraint listed twice.)
+.TP
+\fBPRIMARY KEY (column constraint)\fR
+.TP
+\fBPRIMARY KEY ( \fIcolumn_name\fB [, ... ] ) (table constraint)\fR
+The primary key constraint specifies that a column or columns of a table
+may contain only unique (non-duplicate), nonnull values.
+Technically, PRIMARY KEY is merely a
+combination of UNIQUE and NOT NULL, but
+identifying a set of columns as primary key also provides
+metadata about the design of the schema, as a primary key
+implies that other tables
+may rely on this set of columns as a unique identifier for rows.
+
+Only one primary key can be specified for a table, whether as a
+column constraint or a table constraint.
+
+The primary key constraint should name a set of columns that is
+different from other sets of columns named by any unique
+constraint defined for the same table.
+.TP
+\fBCHECK (\fIexpression\fB)\fR
+The CHECK clause specifies an expression producing a
+Boolean result which new or updated rows must satisfy for an
+insert or update operation to succeed. A check constraint
+specified as a column constraint should reference that column's
+value only, while an expression appearing in a table constraint
+may reference multiple columns.
+
+Currently, CHECK expressions cannot contain
+subqueries nor refer to variables other than columns of the
+current row.
+.TP
+\fBREFERENCES \fIreftable\fB [ ( \fIrefcolumn\fB ) ] [ MATCH \fImatchtype\fB ] [ ON DELETE \fIaction\fB ] [ ON UPDATE \fIaction\fB ] (column constraint)\fR
+.TP
+\fBFOREIGN KEY ( \fIcolumn\fB [, ... ] )\fR
+Theses clauses specify a foreign key constraint, which specifies
+that a group of one or more columns of the new table must only
+contain values which match against values in the referenced
+column(s) \fIrefcolumn\fR
+of the referenced table \fIreftable\fR. If \fIrefcolumn\fR is omitted, the
+primary key of the \fIreftable\fR is used. The
+referenced columns must be the columns of a unique or primary
+key constraint in the referenced table.
+
+A value inserted into these columns is matched against the
+values of the referenced table and referenced columns using the
+given match type. There are three match types: MATCH
+FULL, MATCH PARTIAL, and MATCH
+SIMPLE, which is also the default. MATCH
+FULL will not allow one column of a multicolumn foreign key
+to be null unless all foreign key columns are null.
+MATCH SIMPLE allows some foreign key columns
+to be null while other parts of the foreign key are not
+null. MATCH PARTIAL is not yet implemented.
+
+In addition, when the data in the referenced columns is changed,
+certain actions are performed on the data in this table's
+columns. The ON DELETE clause specifies the
+action to perform when a referenced row in the referenced table is
+being deleted. Likewise, the ON UPDATE
+clause specifies the action to perform when a referenced column
+in the referenced table is being updated to a new value. If the
+row is updated, but the referenced column is not actually
+changed, no action is done. There are the following possible
+actions for each clause:
+.RS
+.TP
+\fBNO ACTION\fR
+Produce an error indicating that the deletion or update
+would create a foreign key constraint violation. This is
+the default action.
+.TP
+\fBRESTRICT\fR
+Same as NO ACTION.
+.TP
+\fBCASCADE\fR
+Delete any rows referencing the deleted row, or update the
+value of the referencing column to the new value of the
+referenced column, respectively.
+.TP
+\fBSET NULL\fR
+Set the referencing column values to null.
+.TP
+\fBSET DEFAULT\fR
+Set the referencing column values to their default value.
+.RE
+.PP
+
+If primary key column is updated frequently, it may be wise to
+add an index to the foreign key column so that NO
+ACTION and CASCADE actions
+associated with the foreign key column can be more efficiently
+performed.
+.TP
+\fBDEFERRABLE\fR
+.TP
+\fBNOT DEFERRABLE\fR
+This controls whether the constraint can be deferred. A
+constraint that is not deferrable will be checked immediately
+after every command. Checking of constraints that are
+deferrable may be postponed until the end of the transaction
+(using the SET CONSTRAINTS [\fBset_constraints\fR(7)] command).
+NOT DEFERRABLE is the default. Only foreign
+key constraints currently accept this clause. All other
+constraint types are not deferrable.
+.TP
+\fBINITIALLY IMMEDIATE\fR
+.TP
+\fBINITIALLY DEFERRED\fR
+If a constraint is deferrable, this clause specifies the default
+time to check the constraint. If the constraint is
+INITIALLY IMMEDIATE, it is checked after each
+statement. This is the default. If the constraint is
+INITIALLY DEFERRED, it is checked only at the
+end of the transaction. The constraint check time can be
+altered with the SET CONSTRAINTS [\fBset_constraints\fR(7)] command.
+.TP
+\fBON COMMIT\fR
+The behavior of temporary tables at the end of a transaction
+block can be controlled using ON COMMIT. 
+The three options are:
+.RS
+.TP
+\fBPRESERVE ROWS\fR
+No special action is taken at the ends of transactions.
+This is the default behavior.
+.TP
+\fBDELETE ROWS\fR
+All rows in the temporary table will be deleted at the
+end of each transaction block. Essentially, an automatic
+\fBtruncate\fR(7) is done at each commit.
+.TP
+\fBDROP\fR
+The temporary table will be dropped at the end of the current
+transaction block.
+.RE
+.PP
+.SH "NOTES"
+.TP 0.2i
+\(bu
+Whenever an application makes use of OIDs to identify specific
+rows of a table, it is recommended to create a unique constraint
+on the \fBoid\fR column of that table, to ensure that
+OIDs in the table will indeed uniquely identify rows even after
+counter wraparound. Avoid assuming that OIDs are unique across
+tables; if you need a database-wide unique identifier, use the
+combination of \fBtableoid\fR and row OID for the
+purpose. (It is likely that future PostgreSQL
+releases will use a separate OID counter for each table, so that
+it will be \fBnecessary\fR, not optional, to include
+\fBtableoid\fR to have a unique identifier
+database-wide.)
+.sp
+.RS
+.B "Tip:"
+The use of WITHOUT OIDS is not recommended
+for tables with no primary key, since without either an OID or a
+unique data key, it is difficult to identify specific rows.
+.RE
+.sp
+.TP 0.2i
+\(bu
+PostgreSQL automatically creates an
+index for each unique constraint and primary key constraint to
+enforce the uniqueness. Thus, it is not necessary to create an
+explicit index for primary key columns. (See CREATE INDEX [\fBcreate_index\fR(7)] for more information.)
+.TP 0.2i
+\(bu
+Unique constraints and primary keys are not inherited in the
+current implementation. This makes the combination of
+inheritance and unique constraints rather dysfunctional.
+.SH "EXAMPLES"
+.PP
+Create table \fBfilms\fR and table
+\fBdistributors\fR:
+.sp
+.nf
+CREATE TABLE films (
+    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
+    title       varchar(40) NOT NULL,
+    did         integer NOT NULL,
+    date_prod   date,
+    kind        varchar(10),
+    len         interval hour to minute
+);
+.sp
+.fi
+.sp
+.nf
+CREATE TABLE distributors (
+     did    integer PRIMARY KEY DEFAULT nextval('serial'),
+     name   varchar(40) NOT NULL CHECK (name <> '')
+);
+.sp
+.fi
+.PP
+Create a table with a 2-dimensional array:
+.sp
+.nf
+CREATE TABLE array (
+    vector  int[][]
+);
+.sp
+.fi
+.PP
+Define a unique table constraint for the table
+films. Unique table constraints can be defined
+on one or more columns of the table.
+.sp
+.nf
+CREATE TABLE films (
+    code        char(5),
+    title       varchar(40),
+    did         integer,
+    date_prod   date,
+    kind        varchar(10),
+    len         interval hour to minute,
+    CONSTRAINT production UNIQUE(date_prod)
+);
+.sp
+.fi
+.PP
+Define a check column constraint:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer CHECK (did > 100),
+    name    varchar(40)
+);
+.sp
+.fi
+.PP
+Define a check table constraint:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40)
+    CONSTRAINT con1 CHECK (did > 100 AND name <> '')
+);
+.sp
+.fi
+.PP
+Define a primary key table constraint for the table
+\fBfilms\fR. Primary key table constraints can be defined
+on one or more columns of the table.
+.sp
+.nf
+CREATE TABLE films (
+    code        char(5),
+    title       varchar(40),
+    did         integer,
+    date_prod   date,
+    kind        varchar(10),
+    len         interval hour to minute,
+    CONSTRAINT code_title PRIMARY KEY(code,title)
+);
+.sp
+.fi
+.PP
+Define a primary key constraint for table
+\fBdistributors\fR. The following two examples are
+equivalent, the first using the table constraint syntax, the second
+the column constraint notation.
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40),
+    PRIMARY KEY(did)
+); 
+.sp
+.fi
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer PRIMARY KEY,
+    name    varchar(40)
+);
+.sp
+.fi
+.PP
+This assigns a literal constant default value for the column
+name, arranges for the default value of column
+did to be generated by selecting the next value
+of a sequence object, and makes the default value of
+modtime be the time at which the row is
+inserted.
+.sp
+.nf
+CREATE TABLE distributors (
+    name      varchar(40) DEFAULT 'Luso Films',
+    did       integer DEFAULT nextval('distributors_serial'),
+    modtime   timestamp DEFAULT current_timestamp
+);
+.sp
+.fi
+.PP
+Define two NOT NULL column constraints on the table
+\fBdistributors\fR, one of which is explicitly
+given a name:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer CONSTRAINT no_null NOT NULL,
+    name    varchar(40) NOT NULL
+);
+.sp
+.fi
+.PP
+Define a unique constraint for the name column:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40) UNIQUE
+);
+.sp
+.fi
+The above is equivalent to the following specified as a table constraint:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40),
+    UNIQUE(name)
+);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBCREATE TABLE\fR command conforms to SQL92
+and to a subset of SQL99, with exceptions listed below.
+.SS "TEMPORARY TABLES"
+.PP
+Although the syntax of CREATE TEMPORARY TABLE
+resembles that of the SQL standard, the effect is not the same. In the
+standard, 
+temporary tables are defined just once and automatically exist (starting
+with empty contents) in every session that needs them.
+PostgreSQL instead
+requires each session to issue its own CREATE TEMPORARY
+TABLE command for each temporary table to be used. This allows
+different sessions to use the same temporary table name for different
+purposes, whereas the standard's approach constrains all instances of a
+given temporary table name to have the same table structure.
+.PP
+The standard's definition of the behavior of temporary tables is
+widely ignored. PostgreSQL's behavior
+on this point is similar to that of several other SQL databases.
+.PP
+The standard's distinction between global and local temporary tables
+is not in PostgreSQL, since that distinction
+depends on the concept of modules, which
+PostgreSQL does not have.
+For compatibility's sake, PostgreSQL will
+accept the GLOBAL and LOCAL keywords
+in a temporary table declaration, but they have no effect.
+.PP
+The ON COMMIT clause for temporary tables
+also resembles the SQL standard, but has some differences.
+If the ON COMMIT clause is omitted, SQL specifies that the
+default behavior is ON COMMIT DELETE ROWS. However, the
+default behavior in PostgreSQL is
+ON COMMIT PRESERVE ROWS. The ON COMMIT
+DROP option does not exist in SQL.
+.SS "COLUMN CHECK CONSTRAINTS"
+.PP
+The SQL standard says that CHECK column constraints
+may only refer to the column they apply to; only CHECK
+table constraints may refer to multiple columns.
+PostgreSQL does not enforce this
+restriction; it treats column and table check constraints alike.
+.SS "NULL ``CONSTRAINT''"
+.PP
+The NULL ``constraint'' (actually a
+non-constraint) is a PostgreSQL
+extension to the SQL standard that is included for compatibility with some
+other database systems (and for symmetry with the NOT
+NULL constraint). Since it is the default for any
+column, its presence is simply noise.
+.SS "INHERITANCE"
+.PP
+Multiple inheritance via the INHERITS clause is
+a PostgreSQL language extension. SQL99
+(but not SQL92) defines single inheritance using a different
+syntax and different semantics. SQL99-style inheritance is not
+yet supported by PostgreSQL.
+.SS "OBJECT IDS"
+.PP
+The PostgreSQL concept of OIDs is not
+standard.
+.SS "ZERO-COLUMN TABLES"
+.PP
+PostgreSQL allows a table of no columns
+to be created (for example, CREATE TABLE foo();). This
+is an extension from the SQL standard, which does not allow zero-column
+tables. Zero-column tables are not in themselves very useful, but
+disallowing them creates odd special cases for \fBALTER TABLE
+DROP COLUMN\fR, so it seems cleaner to ignore this spec restriction.
+.SH "SEE ALSO"
+ALTER TABLE [\fBalter_table\fR(7)], DROP TABLE [\fBdrop_table\fR(l)]
+
diff --git a/raw/man7/create_table_as.7 b/raw/man7/create_table_as.7
new file mode 100644
index 0000000..0e045fb
--- /dev/null
+++ b/raw/man7/create_table_as.7
@@ -0,0 +1,65 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TABLE AS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TABLE AS \- create a new table from the results of a query
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE \fItable_name\fR [ (\fIcolumn_name\fR [, ...] ) ]
+    AS \fIquery\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE TABLE AS\fR creates a table and fills it
+with data computed by a \fBSELECT\fR command or an
+\fBEXECUTE\fR that runs a prepared
+\fBSELECT\fR command. The table columns have the
+names and data types associated with the output columns of the
+\fBSELECT\fR (except that you can override the column
+names by giving an explicit list of new column names).
+.PP
+\fBCREATE TABLE AS\fR bears some resemblance to
+creating a view, but it is really quite different: it creates a new
+table and evaluates the query just once to fill the new table
+initially. The new table will not track subsequent changes to the
+source tables of the query. In contrast, a view re-evaluates its
+defining \fBSELECT\fR statement whenever it is
+queried.
+.SH "PARAMETERS"
+.TP
+\fBTEMPORARY or TEMP\fR
+If specified, the table is created as a temporary table.
+Refer to CREATE TABLE [\fBcreate_table\fR(7)] for details.
+.TP
+\fB\fItable_name\fB\fR
+The name (optionally schema-qualified) of the table to be created.
+.TP
+\fB\fIcolumn_name\fB\fR
+The name of a column in the new table. If column names are not
+provided, they are taken from the output column names of the
+query. If the table is created out of an
+\fBEXECUTE\fR command, a column name list can
+currently not be specified.
+.TP
+\fB\fIquery\fB\fR
+A query statement (that is, a \fBSELECT\fR command
+or an \fBEXECUTE\fR command that runs a prepared
+\fBSELECT\fR command). Refer to SELECT [\fBselect\fR(7)] or EXECUTE [\fBexecute\fR(l)],
+respectively, for a description of the allowed syntax.
+.SH "NOTES"
+.PP
+This command is functionally equivalent to SELECT INTO [\fBselect_into\fR(7)], but it is preferred since it is less
+likely to be confused with other uses of the \fBSELECT
+\&... INTO\fR syntax.
+.SH "COMPATIBILITY"
+.PP
+This command is modeled after an Oracle
+feature. There is no command with equivalent functionality in
+the SQL standard. However, a combination of CREATE
+TABLE and INSERT ... SELECT can
+accomplish the same thing with little more effort.
+.SH "SEE ALSO"
+CREATE TABLE [\fBcreate_table\fR(7)], CREATE VIEW [\fBcreate_view\fR(l)], EXECUTE [\fBexecute\fR(l)], SELECT [\fBselect\fR(l)], SELECT INTO [\fBselect_into\fR(l)]
+
diff --git a/raw/man7/create_trigger.7 b/raw/man7/create_trigger.7
new file mode 100644
index 0000000..cf1ac02
--- /dev/null
+++ b/raw/man7/create_trigger.7
@@ -0,0 +1,152 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TRIGGER \- define a new trigger
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE TRIGGER \fIname\fR { BEFORE | AFTER } { \fIevent\fR [ OR ... ] }
+    ON \fItable\fR [ FOR [ EACH ] { ROW | STATEMENT } ]
+    EXECUTE PROCEDURE \fIfuncname\fR ( \fIarguments\fR )
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE TRIGGER\fR creates a new trigger. The
+trigger will be associated with the specified table and will
+execute the specified function \fIfunc\fR when certain events occur.
+.PP
+The trigger can be specified to fire either before before the
+operation is attempted on a row (before constraints are checked and
+the \fBINSERT\fR, \fBUPDATE\fR, or
+\fBDELETE\fR is attempted) or after the operation has
+completed (after constraints are checked and the
+\fBINSERT\fR, \fBUPDATE\fR, or
+\fBDELETE\fR has completed). If the trigger fires
+before the event, the trigger may skip the operation for the
+current row, or change the row being inserted (for
+\fBINSERT\fR and \fBUPDATE\fR operations
+only). If the trigger fires after the event, all changes, including
+the last insertion, update, or deletion, are ``visible''
+to the trigger.
+.PP
+A trigger that is marked FOR EACH ROW is called
+once for every row that the operation modifies. For example, a
+\fBDELETE\fR that affects 10 rows will cause any
+ON DELETE triggers on the target relation to be
+called 10 separate times, once for each deleted row. In contrast, a
+trigger that is marked FOR EACH STATEMENT only
+executes once for any given operation, regardless of how many rows
+it modifies (in particular, an operation that modifies zero rows
+will still result in the execution of any applicable FOR
+EACH STATEMENT triggers).
+.PP
+If multiple triggers of the same kind are defined for the same event,
+they will be fired in alphabetical order by name.
+.PP
+\fBSELECT\fR does not modify any rows so you can not
+create \fBSELECT\fR triggers. Rules and views are more
+appropriate in such cases.
+.PP
+Refer to the chapter called ``Triggers'' in the documentation for more information about triggers.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name to give the new trigger. This must be distinct from
+the name of any other trigger for the same table.
+.TP
+\fBBEFORE\fR
+.TP
+\fBAFTER\fR
+Determines whether the function is called before or after the
+event.
+.TP
+\fB\fIevent\fB\fR
+One of \fBINSERT\fR, \fBUPDATE\fR, or
+\fBDELETE\fR; this specifies the event that will
+fire the trigger. Multiple events can be specified using
+OR.
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of the table the trigger
+is for.
+.TP
+\fBFOR EACH ROW\fR
+.TP
+\fBFOR EACH STATEMENT\fR
+This specifies whether the trigger procedure should be fired
+once for every row affected by the trigger event, or just once
+per SQL statement. If neither is specified, FOR EACH
+STATEMENT is the default.
+.TP
+\fB\fIfunc\fB\fR
+A user-supplied function that is declared as taking no arguments
+and returning type trigger, which is executed when
+the trigger fires.
+.TP
+\fB\fIarguments\fB\fR
+An optional comma-separated list of arguments to be provided to
+the function when the trigger is executed. The arguments are
+literal string constants. Simple names and numeric constants
+may be written here, too, but they will all be converted to
+strings. Please check the description of the implementation
+language of the trigger function about how the trigger arguments
+are accessible within the function; it may be different from
+normal function arguments.
+.SH "NOTES"
+.PP
+To create a trigger on a table, the user must have the
+TRIGGER privilege on the table.
+.PP
+In PostgreSQL versions before 7.3, it was
+necessary to declare trigger functions as returning the placeholder
+type \fBopaque\fR, rather than \fBtrigger\fR. To support loading
+of old dump files, \fBCREATE TRIGGER\fR will accept a function
+declared as returning \fBopaque\fR, but it will issue a notice and
+change the function's declared return type to \fBtrigger\fR.
+.PP
+Use DROP TRIGGER [\fBdrop_trigger\fR(7)] to remove a trigger.
+.SH "EXAMPLES"
+.PP
+The chapter called ``Triggers'' in the documentation contains a complete example.
+.SH "COMPATIBILITY"
+.PP
+The \fBCREATE TRIGGER\fR statement in
+PostgreSQL implements a subset of the
+SQL99 standard. (There are no provisions for triggers in SQL92.)
+The following functionality is missing:
+.TP 0.2i
+\(bu
+SQL99 allows triggers to fire on updates to specific columns
+(e.g., AFTER UPDATE OF col1, col2).
+.TP 0.2i
+\(bu
+SQL99 allows you to define aliases for the ``old''
+and ``new'' rows or tables for use in the definition
+of the triggered action (e.g., CREATE TRIGGER ... ON
+tablename REFERENCING OLD ROW AS somename NEW ROW AS othername
+\&...). Since PostgreSQL
+allows trigger procedures to be written in any number of
+user-defined languages, access to the data is handled in a
+language-specific way.
+.TP 0.2i
+\(bu
+PostgreSQL only allows the execution
+of a user-defined function for the triggered action. SQL99
+allows the execution of a number of other SQL commands, such as
+\fBCREATE TABLE\fR as triggered action. This
+limitation is not hard to work around by creating a user-defined
+function that executes the desired commands.
+.PP
+.PP
+SQL99 specifies that multiple triggers should be fired in
+time-of-creation order. PostgreSQL uses
+name order, which was judged more convenient to work with.
+.PP
+The ability to specify multiple actions for a single trigger using
+OR is a PostgreSQL extension of
+the SQL standard.
+.SH "SEE ALSO"
+CREATE FUNCTION [\fBcreate_function\fR(7)], ALTER TRIGGER [\fBalter_trigger\fR(l)], DROP TRIGGER [\fBdrop_trigger\fR(l)]
+
diff --git a/raw/man7/create_type.7 b/raw/man7/create_type.7
new file mode 100644
index 0000000..b5e54e8
--- /dev/null
+++ b/raw/man7/create_type.7
@@ -0,0 +1,354 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TYPE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TYPE \- define a new data type
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE TYPE \fIname\fR AS
+    ( \fIattribute_name\fR \fIdata_type\fR [, ... ] )
+
+CREATE TYPE \fIname\fR (
+    INPUT = \fIinput_function\fR,
+    OUTPUT = \fIoutput_function\fR
+    [ , RECEIVE = \fIreceive_function\fR ]
+    [ , SEND = \fIsend_function\fR ]
+    [ , INTERNALLENGTH = { \fIinternallength\fR | VARIABLE } ]
+    [ , PASSEDBYVALUE ]
+    [ , ALIGNMENT = \fIalignment\fR ]
+    [ , STORAGE = \fIstorage\fR ]
+    [ , DEFAULT = \fIdefault\fR ]
+    [ , ELEMENT = \fIelement\fR ]
+    [ , DELIMITER = \fIdelimiter\fR ]
+)
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE TYPE\fR registers a new data type for use in
+the current data base. The user who defines a type becomes its
+owner.
+.PP
+If a schema name is given then the type is created in the specified
+schema. Otherwise it is created in the current schema. The type
+name must be distinct from the name of any existing type or domain
+in the same schema. (Because tables have associated data types,
+the type name must also be distinct from the name of any existing
+table in the same schema.)
+.SS "COMPOSITE TYPES"
+.PP
+The first form of \fBCREATE TYPE\fR
+creates a composite type.
+The composite type is specified by a list of attribute names and data types.
+This is essentially the same as the row type
+of a table, but using \fBCREATE TYPE\fR avoids the need to
+create an actual table when all that is wanted is to define a type.
+A stand-alone composite type is useful as the return type of a function.
+.SS "BASE TYPES"
+.PP
+The second form of \fBCREATE TYPE\fR creates a new base type
+(scalar type). The parameters may appear in any order, not only that
+illustrated above, and most are optional. You must register
+two or more functions (using \fBCREATE FUNCTION\fR) before
+defining the type. The support functions 
+\fIinput_function\fR and
+\fIoutput_function\fR
+are required, while the functions
+\fIreceive_function\fR and
+\fIsend_function\fR
+are optional. Generally these functions have to be coded in C
+or another low-level language.
+.PP
+The \fIinput_function\fR
+converts the type's external textual representation to the internal
+representation used by the
+operators and functions defined for the type.
+\fIoutput_function\fR
+performs the reverse transformation. The input function may be
+declared as taking one argument of type \fBcstring\fR,
+or as taking three arguments of types
+\fBcstring\fR, \fBoid\fR, \fBinteger\fR.
+The first argument is the input text as a C string, the second
+argument is the element type in case this is an array type,
+and the third is the typmod of the destination column, if known.
+The input function should return a value of the data type itself.
+The output function may be
+declared as taking one argument of the new data type, or as taking
+two arguments of which the second is type \fBoid\fR.
+The second argument is again the array element type for array types.
+The output function should return type \fBcstring\fR.
+.PP
+The optional \fIreceive_function\fR
+converts the type's external binary representation to the internal
+representation. If this function is not supplied, the type cannot
+participate in binary input. The binary representation should be
+chosen to be cheap to convert to internal form, while being reasonably
+portable. (For example, the standard integer data types use network
+byte order as the external binary representation, while the internal
+representation is in the machine's native byte order.) The receive
+function should perform adequate checking to ensure that the value is
+valid.
+The receive function may be declared as taking one argument of type
+\fBinternal\fR, or two arguments of types \fBinternal\fR
+and \fBoid\fR. It must return a value of the data type itself.
+(The first argument is a pointer to a \fBStringInfo\fR buffer
+holding the received byte string; the optional second argument is the
+element type in case this is an array type.) Similarly, the optional
+\fIsend_function\fR converts
+from the internal representation to the external binary representation.
+If this function is not supplied, the type cannot participate in binary
+output. The send function may be
+declared as taking one argument of the new data type, or as taking
+two arguments of which the second is type \fBoid\fR.
+The second argument is again the array element type for array types.
+The send function must return type \fBbytea\fR.
+.PP
+You should at this point be wondering how the input and output functions
+can be declared to have results or arguments of the new type, when they have
+to be created before the new type can be created. The answer is that the
+input function must be created first, then the output function (and
+the binary I/O functions if wanted), and finally the data type.
+PostgreSQL will first see the name of the new
+data type as the return type of the input function. It will create a
+``shell'' type, which is simply a placeholder entry in
+the system catalog, and link the input function definition to the shell
+type. Similarly the other functions will be linked to the (now already
+existing) shell type. Finally, \fBCREATE TYPE\fR replaces the
+shell entry with a complete type definition, and the new type can be used.
+.PP
+While the details of the new type's internal representation are only
+known to the I/O functions and other functions you create to work with
+the type, there are several properties of the internal representation
+that must be declared to PostgreSQL.
+Foremost of these is
+\fIinternallength\fR.
+Base data types can be fixed-length, in which case
+\fIinternallength\fR is a
+positive integer, or variable length, indicated by setting
+\fIinternallength\fR
+to VARIABLE. (Internally, this is represented
+by setting typlen to -1.) The internal representation of all
+variable-length types must start with a 4-byte integer giving the total
+length of this value of the type.
+.PP
+The optional flag PASSEDBYVALUE indicates that
+values of this data type are passed by value, rather than by
+reference. You may not pass by value types whose internal
+representation is larger than the size of the \fBDatum\fR type
+(4 bytes on most machines, 8 bytes on a few).
+.PP
+The \fIalignment\fR parameter
+specifies the storage alignment required for the data type. The
+allowed values equate to alignment on 1, 2, 4, or 8 byte boundaries.
+Note that variable-length types must have an alignment of at least
+4, since they necessarily contain an \fBint4\fR as their first component.
+.PP
+The \fIstorage\fR parameter
+allows selection of storage strategies for variable-length data
+types. (Only plain is allowed for fixed-length
+types.) plain specifies that data of the type
+will always be stored in-line and not compressed.
+extended specifies that the system will first
+try to compress a long data value, and will move the value out of
+the main table row if it's still too long.
+external allows the value to be moved out of the
+main table, but the system will not try to compress it.
+main allows compression, but discourages moving
+the value out of the main table. (Data items with this storage
+strategy may still be moved out of the main table if there is no
+other way to make a row fit, but they will be kept in the main
+table preferentially over extended and
+external items.)
+.PP
+A default value may be specified, in case a user wants columns of the
+data type to default to something other than the null value.
+Specify the default with the DEFAULT key word.
+(Such a default may be overridden by an explicit DEFAULT
+clause attached to a particular column.)
+.PP
+To indicate that a type is an array, specify the type of the array
+elements using the ELEMENT key word. For example, to
+define an array of 4-byte integers (\fBint4\fR), specify
+ELEMENT = int4. More details about array types
+appear below.
+.PP
+To indicate the delimiter to be used between values in the external
+representation of arrays of this type, \fIdelimiter\fR can be
+set to a specific character. The default delimiter is the comma
+(,). Note that the delimiter is associated
+with the array element type, not the array type itself.
+.SS "ARRAY TYPES"
+.PP
+Whenever a user-defined base data type is created, 
+PostgreSQL automatically creates an
+associated array type, whose name consists of the base type's
+name prepended with an underscore. The parser understands this
+naming convention, and translates requests for columns of type
+foo[] into requests for type _foo.
+The implicitly-created array type is variable length and uses the
+built-in input and output functions array_in and
+array_out.
+.PP
+You might reasonably ask why there is an \fBELEMENT\fR
+option, if the system makes the correct array type automatically.
+The only case where it's useful to use \fBELEMENT\fR is when you are
+making a fixed-length type that happens to be internally an array of a number of
+identical things, and you want to allow these things to be accessed
+directly by subscripting, in addition to whatever operations you plan
+to provide for the type as a whole. For example, type \fBname\fR
+allows its constituent \fBchar\fR elements to be accessed this way.
+A 2-D \fBpoint\fR type could allow its two component numbers to be
+accessed like point[0] and point[1].
+Note that
+this facility only works for fixed-length types whose internal form
+is exactly a sequence of identical fixed-length fields. A subscriptable
+variable-length type must have the generalized internal representation
+used by array_in and array_out.
+For historical reasons (i.e., this is clearly wrong but it's far too
+late to change it), subscripting of fixed-length array types starts from
+zero, rather than from one as for variable-length arrays.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of a type to be created.
+.TP
+\fB\fIattribute_name\fB\fR
+The name of an attribute (column) for the composite type.
+.TP
+\fB\fIdata_type\fB\fR
+The name of an existing data type to become a column of the
+composite type.
+.TP
+\fB\fIinput_function\fB\fR
+The name of a function that converts data from the type's
+external textual form to its internal form.
+.TP
+\fB\fIoutput_function\fB\fR
+The name of a function that converts data from the type's
+internal form to its external textual form.
+.TP
+\fB\fIreceive_function\fB\fR
+The name of a function that converts data from the type's
+external binary form to its internal form.
+.TP
+\fB\fIsend_function\fB\fR
+The name of a function that converts data from the type's
+internal form to its external binary form.
+.TP
+\fB\fIinternallength\fB\fR
+A numeric constant that specifies the length in bytes of the new
+type's internal representation. The default assumption is that
+it is variable-length.
+.TP
+\fB\fIalignment\fB\fR
+The storage alignment requirement of the data type. If specified,
+it must be char, int2,
+int4, or double; the
+default is int4.
+.TP
+\fB\fIstorage\fB\fR
+The storage strategy for the data type. If specified, must be
+plain, external,
+extended, or main; the
+default is plain.
+.TP
+\fB\fIdefault\fB\fR
+The default value for the data type. If this is omitted, the
+default is null.
+.TP
+\fB\fIelement\fB\fR
+The type being created is an array; this specifies the type of
+the array elements.
+.TP
+\fB\fIdelimiter\fB\fR
+The delimiter character to be used between values in arrays made
+of this type.
+.SH "NOTES"
+.PP
+User-defined type names cannot begin with the underscore character
+(_) and can only be 62 characters
+long (or in general \fBNAMEDATALEN\fR - 2, rather than
+the \fBNAMEDATALEN\fR - 1 characters allowed for other
+names). Type names beginning with underscore are reserved for
+internally-created array type names.
+.PP
+In PostgreSQL versions before 7.3, it
+was customary to avoid creating a shell type by replacing the
+functions' forward references to the type name with the placeholder
+pseudotype \fBopaque\fR. The \fBcstring\fR arguments and
+results also had to be declared as \fBopaque\fR before 7.3. To
+support loading of old dump files, \fBCREATE TYPE\fR will
+accept functions declared using \fBopaque\fR, but it will issue
+a notice and change the function's declaration to use the correct
+types.
+.SH "EXAMPLES"
+.PP
+This example creates a composite type and uses it in
+a function definition:
+.sp
+.nf
+CREATE TYPE compfoo AS (f1 int, f2 text);
+CREATE FUNCTION getfoo() RETURNS SETOF compfoo AS
+  'SELECT fooid, fooname FROM foo' LANGUAGE SQL;
+.sp
+.fi
+.PP
+This example creates the base data type \fBbox\fR and then uses the
+type in a table definition:
+.sp
+.nf
+CREATE TYPE box (
+    INTERNALLENGTH = 16,
+    INPUT = my_box_in_function,
+    OUTPUT = my_box_out_function
+);
+
+CREATE TABLE myboxes (
+    id integer,
+    description box
+);
+.sp
+.fi
+.PP
+If the internal structure of \fBbox\fR were an array of four
+\fBfloat4\fR elements, we might instead use
+.sp
+.nf
+CREATE TYPE box (
+    INTERNALLENGTH = 16,
+    INPUT = my_box_in_function,
+    OUTPUT = my_box_out_function,
+    ELEMENT = float4
+);
+.sp
+.fi
+which would allow a box value's component numbers to be accessed
+by subscripting. Otherwise the type behaves the same as before.
+.PP
+This example creates a large object type and uses it in
+a table definition:
+.sp
+.nf
+CREATE TYPE bigobj (
+    INPUT = lo_filein, OUTPUT = lo_fileout,
+    INTERNALLENGTH = VARIABLE
+);
+CREATE TABLE big_objs (
+    id integer,
+    obj bigobj
+);
+.sp
+.fi
+.PP
+More examples, including suitable input and output functions, are
+in the chapter called ``Extending SQL'' in the documentation.
+.SH "COMPATIBILITY"
+.PP
+This \fBCREATE TYPE\fR command is a
+PostgreSQL extension. There is a
+\fBCREATE TYPE\fR statement in SQL99 that is rather
+different in detail.
+.SH "SEE ALSO"
+CREATE FUNCTION [\fBcreate_function\fR(7)], DROP TYPE [\fBdrop_type\fR(l)]
+
diff --git a/raw/man7/create_user.7 b/raw/man7/create_user.7
new file mode 100644
index 0000000..2dfb9cf
--- /dev/null
+++ b/raw/man7/create_user.7
@@ -0,0 +1,142 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE USER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE USER \- define a new database user account
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE USER \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]
+
+where \fIoption\fR can be:
+    
+      SYSID \fIuid\fR 
+    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '\fIpassword\fR'
+    | CREATEDB | NOCREATEDB
+    | CREATEUSER | NOCREATEUSER
+    | IN GROUP \fIgroupname\fR [, ...]
+    | VALID UNTIL '\fIabstime\fR' 
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE USER\fR adds a new user to a
+PostgreSQL database cluster. Refer to
+the chapters called ``Database Users and Privileges'' and ``Client Authentication'' in the documentation for information about managing
+users and authentication. You must be a database superuser to use
+this command.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the user.
+.TP
+\fB\fIuid\fB\fR
+The SYSID clause can be used to choose the
+PostgreSQL user ID of the user that
+is being created. This is not normally not necessary, but may
+be useful if you need to recreate the owner of an orphaned
+object.
+
+If this is not specified, the highest assigned user ID plus one
+(with a minimum of 100) will be used as default.
+.TP
+\fB\fIpassword\fB\fR
+Sets the user's password. If you do not plan to use password
+authentication you can omit this option, but then the user
+won't be able to connect if you decide to switch to password
+authentication. The password can be set or changed later,
+using ALTER USER [\fBalter_user\fR(7)].
+.TP
+\fBENCRYPTED\fR
+.TP
+\fBUNENCRYPTED\fR
+These key words control whether the password is stored
+encrypted in the system catalogs. (If neither is specified,
+the default behavior is determined by the configuration
+parameter PASSWORD_ENCRYPTION.) If the
+presented password string is already in MD5-encrypted format,
+then it is stored encrypted as-is, regardless of whether
+ENCRYPTED or UNENCRYPTED is specified
+(since the system cannot decrypt the specified encrypted
+password string). This allows reloading of encrypted
+passwords during dump/restore.
+
+Note that older clients may lack support for the MD5
+authentication mechanism that is needed to work with passwords
+that are stored encrypted.
+.TP
+\fBCREATEDB\fR
+.TP
+\fBNOCREATEDB\fR
+These clauses define a user's ability to create databases. If
+CREATEDB is specified, the user being
+defined will be allowed to create his own databases. Using
+NOCREATEDB will deny a user the ability to
+create databases. If this clause is omitted,
+NOCREATEDB is used by default.
+.TP
+\fBCREATEUSER\fR
+.TP
+\fBNOCREATEUSER\fR
+These clauses determine whether a user will be permitted to
+create new users himself. This option will also make the user
+a superuser who can override all access restrictions.
+Omitting this clause will set the user's value of this
+attribute to be NOCREATEUSER.
+.TP
+\fB\fIgroupname\fB\fR
+A name of a group into which to insert the user as a new member.
+Multiple group names may be listed.
+.TP
+\fB\fIabstime\fB\fR
+The VALID UNTIL clause sets an absolute
+time after which the user's password is no longer valid. If
+this clause is omitted the login will be valid for all time.
+.SH "NOTES"
+.PP
+Use ALTER USER [\fBalter_user\fR(7)] to
+change the attributes of a user, and DROP USER [\fBdrop_user\fR(7)] to remove a user. Use ALTER GROUP [\fBalter_group\fR(l)] to add the
+user to groups or remove the user from groups.
+.PP
+PostgreSQL includes a program createuser [\fBcreateuser\fR(1)] that has
+the same functionality as \fBCREATE USER\fR (in fact, it calls this
+command) but can be run from the command shell.
+.SH "EXAMPLES"
+.PP
+Create a user with no password:
+.sp
+.nf
+CREATE USER jonathan;
+.sp
+.fi
+.PP
+Create a user with a password:
+.sp
+.nf
+CREATE USER davide WITH PASSWORD 'jw8s0F4';
+.sp
+.fi
+.PP
+Create a user with a password that is valid until the end of 2004.
+After one second has ticked in 2005, the password is no longer
+valid.
+.sp
+.nf
+CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';
+.sp
+.fi
+.PP
+Create an account where the user can create databases:
+.sp
+.nf
+CREATE USER manuel WITH PASSWORD 'jw8s0F4' CREATEDB;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBCREATE USER\fR statement is a
+PostgreSQL extension. The SQL standard
+leaves the definition of users to the implementation.
+.SH "SEE ALSO"
+ALTER USER [\fBalter_user\fR(7)], DROP USER [\fBdrop_user\fR(l)], \fBcreateuser\fR(1)
+
diff --git a/raw/man7/create_view.7 b/raw/man7/create_view.7
new file mode 100644
index 0000000..e4a2ddf
--- /dev/null
+++ b/raw/man7/create_view.7
@@ -0,0 +1,116 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE VIEW" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE VIEW \- define a new view
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ OR REPLACE ] VIEW \fIname\fR [ ( \fIcolumn_name\fR [, ...] ) ] AS \fIquery\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBCREATE VIEW\fR defines a view of a query. The view
+is not physically materialized. Instead, the query is run every time
+the view is referenced in a query.
+.PP
+\fBCREATE OR REPLACE VIEW\fR is similar, but if a view
+of the same name already exists, it is replaced. You can only replace
+a view with a new query that generates the identical set of columns
+(i.e., same column names and data types).
+.PP
+If a schema name is given (for example, CREATE VIEW
+myschema.myview ...) then the view is created in the
+specified schema. Otherwise it is created in the current schema.
+The view name must be distinct from the name of any other view, table,
+sequence, or index in the same schema.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of a view to be created.
+.TP
+\fB\fIcolumn_name\fB\fR
+An optional list of names to be used for columns of the view.
+If not given, the column names are deduced from the query.
+.TP
+\fB\fIquery\fB\fR
+A query (that is, a \fBSELECT\fR statement) which will
+provide the columns and rows of the view.
+
+Refer to SELECT [\fBselect\fR(7)]
+for more information about valid queries.
+.SH "NOTES"
+.PP
+Currently, views are read only: the system will not allow an insert,
+update, or delete on a view. You can get the effect of an updatable
+view by creating rules that rewrite inserts, etc. on the view into
+appropriate actions on other tables. For more information see
+CREATE RULE [\fBcreate_rule\fR(7)].
+.PP
+Use the \fBDROP VIEW\fR statement to drop views.
+.PP
+Be careful that the names and types of the view's columns will be
+assigned the way you want. For example,
+.sp
+.nf
+CREATE VIEW vista AS SELECT 'Hello World';
+.sp
+.fi
+is bad form in two ways: the column name defaults to ?column?,
+and the column data type defaults to \fBunknown\fR. If you want a
+string literal in a view's result, use something like
+.sp
+.nf
+CREATE VIEW vista AS SELECT text 'Hello World' AS hello;
+.sp
+.fi
+.PP
+Access to tables referenced in the view is determined by permissions of
+the view owner. However, functions called in the view are treated the
+same as if they had been called directly from the query using the view.
+Therefore the user of a view must have permissions to call all functions
+used by the view.
+.SH "EXAMPLES"
+.PP
+Create a view consisting of all comedy films:
+.sp
+.nf
+CREATE VIEW comedies AS
+    SELECT *
+    FROM films
+    WHERE kind = 'Comedy';
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The SQL standard specifies some additional capabilities for the
+\fBCREATE VIEW\fR statement:
+.sp
+.nf
+CREATE VIEW \fIname\fR [ ( \fIcolumn\fR [, ...] ) ]
+    AS query
+    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
+.sp
+.fi
+.PP
+The optional clauses for the full SQL command are:
+.TP
+\fBCHECK OPTION\fR
+This option is to do with updatable views. All
+\fBINSERT\fR and \fBUPDATE\fR commands on the view
+will be checked to ensure data satisfy the view-defining
+condition (that is, the new data would be visible through the
+view). If they do not, the update will be rejected.
+.TP
+\fBLOCAL\fR
+Check for integrity on this view.
+.TP
+\fBCASCADE\fR
+Check for integrity on this view and on any dependent
+view. CASCADE is assumed if neither
+CASCADE nor LOCAL is specified.
+.PP
+.PP
+\fBCREATE OR REPLACE VIEW\fR is a
+PostgreSQL language extension.
diff --git a/raw/man7/deallocate.7 b/raw/man7/deallocate.7
new file mode 100644
index 0000000..14a0f75
--- /dev/null
+++ b/raw/man7/deallocate.7
@@ -0,0 +1,29 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DEALLOCATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DEALLOCATE \- deallocate a prepared statement
+
+.SH SYNOPSIS
+.sp
+.nf
+DEALLOCATE [ PREPARE ] \fIplan_name\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDEALLOCATE\fR is used to deallocate a previously
+prepared SQL statement. If you do not explicitly deallocate a
+prepared statement, it is deallocated when the session ends.
+.PP
+For more information on prepared statements, see PREPARE [\fBprepare\fR(7)].
+.SH "PARAMETERS"
+.TP
+\fBPREPARE\fR
+This key word is ignored.
+.TP
+\fB\fIplan_name\fB\fR
+The name of the prepared statement to deallocate.
+.SH "COMPATIBILITY"
+.PP
+The SQL standard includes a \fBDEALLOCATE\fR
+statement, but it is only for use in embedded SQL.
diff --git a/raw/man7/declare.7 b/raw/man7/declare.7
new file mode 100644
index 0000000..4f208ce
--- /dev/null
+++ b/raw/man7/declare.7
@@ -0,0 +1,184 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DECLARE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DECLARE \- define a cursor
+
+.SH SYNOPSIS
+.sp
+.nf
+DECLARE \fIname\fR [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
+    CURSOR [ { WITH | WITHOUT } HOLD ] FOR \fIquery\fR
+    [ FOR { READ ONLY | UPDATE [ OF \fIcolumn\fR [, ...] ] } ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDECLARE\fR allows a user to create cursors, which
+can be used to retrieve
+a small number of rows at a time out of a larger query. Cursors can
+return data either in text or in binary format using
+FETCH [\fBfetch\fR(7)].
+.PP
+Normal cursors return data in text format, the same as a
+\fBSELECT\fR would produce. Since data is stored natively in
+binary format, the system must do a conversion to produce the text
+format. Once the information comes back in text form, the client
+application may need to convert it to a binary format to manipulate
+it. In addition, data in the text format is often larger in size
+than in the binary format. Binary cursors return the data in a
+binary representation that may be more easily manipulated.
+Nevertheless, if you intend to display the data as text anyway,
+retrieving it in text form will
+save you some effort on the client side.
+.PP
+As an example, if a query returns a value of one from an integer column,
+you would get a string of 1 with a default cursor
+whereas with a binary cursor you would get
+a 4-byte field containing the internal representation of the value
+(in big-endian byte order).
+.PP
+Binary cursors should be used carefully. Many applications,
+including \fBpsql\fR, are not prepared to
+handle binary cursors and expect data to come back in the text
+format.
+.sp
+.RS
+.B "Note:"
+When the client application uses the ``extended query'' protocol
+to issue a \fBFETCH\fR command, the Bind protocol message
+specifies whether data is to be retrieved in text or binary format.
+This choice overrides the way that the cursor is defined. The concept
+of a binary cursor as such is thus obsolete when using extended query
+protocol --- any cursor can be treated as either text or binary.
+.RE
+.sp
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the cursor to be created.
+.TP
+\fBBINARY\fR
+Causes the cursor to return data in binary rather than in text format.
+.TP
+\fBINSENSITIVE\fR
+Indicates that data retrieved from the cursor should be
+unaffected by updates to the tables underlying the cursor while
+the cursor exists. In PostgreSQL,
+all cursors are insensitive; this key word currently has no
+effect and is present for compatibility with the SQL standard.
+.TP
+\fBSCROLL\fR
+.TP
+\fBNO SCROLL\fR
+SCROLL specifies that the cursor may be used
+to retrieve rows in a nonsequential fashion (e.g.,
+backward). Depending upon the complexity of the query's
+execution plan, specifying SCROLL may impose
+a performance penalty on the query's execution time.
+NO SCROLL specifies that the cursor cannot be
+used to retrieve rows in a nonsequential fashion.
+.TP
+\fBWITH HOLD\fR
+.TP
+\fBWITHOUT HOLD\fR
+WITH HOLD specifies that the cursor may
+continue to be used after the transaction that created it
+successfully commits. WITHOUT HOLD specifies
+that the cursor cannot be used outside of the transaction that
+created it. If neither WITHOUT HOLD nor
+WITH HOLD is specified, WITHOUT
+HOLD is the default.
+.TP
+\fB\fIquery\fB\fR
+A \fBSELECT\fR command that will provide the rows to be
+returned by the cursor. Refer to SELECT [\fBselect\fR(7)] for further information about valid
+queries.
+.TP
+\fBFOR READ ONLY\fR
+.TP
+\fBFOR UPDATE\fR
+FOR READ ONLY indicates that the cursor will
+be used in a read-only mode. FOR UPDATE
+indicates that the cursor will be used to update tables. Since
+cursor updates are not currently supported in
+PostgreSQL, specifying FOR
+UPDATE will cause an error message and specifying
+FOR READ ONLY has no effect.
+.TP
+\fB\fIcolumn\fB\fR
+Column(s) to be updated by the cursor. Since cursor updates are
+not currently supported in
+PostgreSQL, the FOR
+UPDATE clause provokes an error message.
+.PP
+The key words BINARY,
+INSENSITIVE, and SCROLL may
+appear in any order.
+.PP
+.SH "NOTES"
+.PP
+Unless WITH HOLD is specified, the cursor
+created by this command can only be used within the current
+transaction. Thus, \fBDECLARE\fR without WITH
+HOLD is useless outside a transaction block: the cursor would
+survive only to the completion of the statement. Therefore
+PostgreSQL reports an error if this
+command is used outside a transaction block.
+Use
+BEGIN [\fBbegin\fR(7)],
+COMMIT [\fBcommit\fR(7)]
+and
+ROLLBACK [\fBrollback\fR(7)]
+to define a transaction block.
+.PP
+If WITH HOLD is specified and the transaction
+that created the cursor successfully commits, the cursor can
+continue to be accessed by subsequent transactions in the same
+session. (But if the creating transaction is aborted, the cursor
+is removed.) A cursor created with WITH HOLD
+is closed when an explicit \fBCLOSE\fR command is
+issued on it, or the session ends. In the current implementation,
+the rows represented by a held cursor are copied into a temporary
+file or memory area so that they remain available for subsequent
+transactions.
+.PP
+The SCROLL option should be specified when defining a
+cursor that will be used to fetch backwards. This is required by
+the SQL standard. However, for compatibility with earlier
+versions, PostgreSQL will allow
+backward fetches without SCROLL, if the cursor's query
+plan is simple enough that no extra overhead is needed to support
+it. However, application developers are advised not to rely on
+using backward fetches from a cursor that has not been created
+with SCROLL. If NO SCROLL is
+specified, then backward fetches are disallowed in any case.
+.PP
+The SQL standard only makes provisions for cursors in embedded
+SQL. The PostgreSQL
+server does not implement an \fBOPEN\fR statement for
+cursors; a cursor is considered to be open when it is declared.
+However, \fBECPG\fR, the embedded SQL
+preprocessor for PostgreSQL, supports
+the standard SQL cursor conventions, including those involving
+\fBDECLARE\fR and \fBOPEN\fR statements.
+.SH "EXAMPLES"
+.PP
+To declare a cursor:
+.sp
+.nf
+DECLARE liahona CURSOR FOR SELECT * FROM films;
+.sp
+.fi
+See FETCH [\fBfetch\fR(7)] for more
+examples of cursor usage.
+.SH "COMPATIBILITY"
+.PP
+The SQL standard allows cursors only in embedded
+SQL and in modules. PostgreSQL
+permits cursors to be used interactively.
+.PP
+The SQL standard allows cursors to update table data. All
+PostgreSQL cursors are read only.
+.PP
+Binary cursors are a PostgreSQL
+extension.
diff --git a/raw/man7/delete.7 b/raw/man7/delete.7
new file mode 100644
index 0000000..aea991a
--- /dev/null
+++ b/raw/man7/delete.7
@@ -0,0 +1,74 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DELETE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DELETE \- delete rows of a table
+
+.SH SYNOPSIS
+.sp
+.nf
+DELETE FROM [ ONLY ] \fItable\fR [ WHERE \fIcondition\fR ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDELETE\fR deletes rows that satisfy the
+WHERE clause from the specified table. If the
+WHERE clause is absent, the effect is to delete
+all rows in the table. The result is a valid, but empty table.
+.sp
+.RS
+.B "Tip:"
+TRUNCATE [\fBtruncate\fR(7)] is a
+PostgreSQL extension which provides a
+faster mechanism to remove all rows from a table.
+.RE
+.sp
+.PP
+By default, \fBDELETE\fR will delete rows in the
+specified table and all its subtables. If you wish to only delete
+from the specific table mentioned, you must use the
+ONLY clause.
+.PP
+You must have the DELETE privilege on the table
+to delete from it, as well as the SELECT
+privilege for any table whose values are read in the \fIcondition\fR.
+.SH "PARAMETERS"
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of an existing table.
+.TP
+\fB\fIcondition\fB\fR
+A value expression that returns a value of type
+\fBboolean\fR that determines the rows which are to be
+deleted.
+.SH "OUTPUTS"
+.PP
+On successful completion, a \fBDELETE\fR command returns a command
+tag of the form
+.sp
+.nf
+DELETE \fIcount\fR
+.sp
+.fi
+The \fIcount\fR is the number
+of rows deleted. If \fIcount\fR is
+0, no rows matched the \fIcondition\fR (this is not considered
+an error).
+.SH "EXAMPLES"
+.PP
+Delete all films but musicals:
+.sp
+.nf
+DELETE FROM films WHERE kind <> 'Musical';
+.sp
+.fi
+.PP
+Clear the table films:
+.sp
+.nf
+DELETE FROM films;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command conforms to the SQL standard.
diff --git a/raw/man7/drop_aggregate.7 b/raw/man7/drop_aggregate.7
new file mode 100644
index 0000000..5eed29e
--- /dev/null
+++ b/raw/man7/drop_aggregate.7
@@ -0,0 +1,47 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP AGGREGATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP AGGREGATE \- remove an aggregate function
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP AGGREGATE \fIname\fR ( \fItype\fR ) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP AGGREGATE\fR will delete an existing
+aggregate function. To execute this command the current
+user must be the owner of the aggregate function.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing aggregate function.
+.TP
+\fB\fItype\fB\fR
+The argument data type of the aggregate function, or
+* if the function accepts any data type.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the aggregate function.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the aggregate function if any objects depend on
+it. This is the default.
+.SH "EXAMPLES"
+.PP
+To remove the aggregate function myavg for type
+\fBinteger\fR:
+.sp
+.nf
+DROP AGGREGATE myavg(integer);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP AGGREGATE\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+ALTER AGGREGATE [\fBalter_aggregate\fR(7)], CREATE AGGREGATE [\fBcreate_aggregate\fR(l)]
+
diff --git a/raw/man7/drop_cast.7 b/raw/man7/drop_cast.7
new file mode 100644
index 0000000..ad29af7
--- /dev/null
+++ b/raw/man7/drop_cast.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP CAST" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP CAST \- remove a cast
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP CAST (\fIsourcetype\fR AS \fItargettype\fR) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP CAST\fR removes a previously defined cast.
+.PP
+To be able to drop a cast, you must own the source or the target
+data type. These are the same privileges that are required to
+create a cast.
+.SH "PARAMETERS"
+.TP
+\fB\fIsourcetype\fB\fR
+The name of the source data type of the cast.
+.TP
+\fB\fItargettype\fB\fR
+The name of the target data type of the cast.
+.TP
+\fBCASCADE\fR
+.TP
+\fBRESTRICT\fR
+These key words do not have any effect, since there are no
+dependencies on casts.
+.SH "EXAMPLES"
+.PP
+To drop the cast from type \fBtext\fR to type \fBint\fR:
+.sp
+.nf
+DROP CAST (text AS int);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBDROP CAST\fR command conforms to the SQL standard.
+.SH "SEE ALSO"
+CREATE CAST [\fBcreate_cast\fR(7)]
+
diff --git a/raw/man7/drop_conversion.7 b/raw/man7/drop_conversion.7
new file mode 100644
index 0000000..0c74ee7
--- /dev/null
+++ b/raw/man7/drop_conversion.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP CONVERSION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP CONVERSION \- remove a conversion
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP CONVERSION \fIname\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP CONVERSION\fR removes a previously defined conversion.
+To be able to drop a conversion, you must own the conversion.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the conversion. The conversion name may be
+schema-qualified.
+.TP
+\fBCASCADE\fR
+.TP
+\fBRESTRICT\fR
+These key words do not have any effect, since there are no
+dependencies on conversions.
+.SH "EXAMPLES"
+.PP
+To drop the conversion named myname:
+.sp
+.nf
+DROP CONVERSION myname;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP CONVERSION\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+ALTER CONVERSION [\fBalter_conversion\fR(7)], CREATE CONVERSION [\fBcreate_conversion\fR(l)]
+
diff --git a/raw/man7/drop_database.7 b/raw/man7/drop_database.7
new file mode 100644
index 0000000..9df5657
--- /dev/null
+++ b/raw/man7/drop_database.7
@@ -0,0 +1,40 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP DATABASE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP DATABASE \- remove a database
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP DATABASE \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP DATABASE\fR drops a database. It removes the
+catalog entries for the database and deletes the directory
+containing the data. It can only be executed by the database owner.
+Also, it cannot be executed while you or anyone else are connected
+to the target database. (Connect to template1 or any
+other database to issue this command.) 
+.PP
+\fBDROP DATABASE\fR cannot be undone. Use it with care!
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the database to remove.
+.SH "NOTES"
+.PP
+\fBDROP DATABASE\fR cannot be executed inside a transaction
+block.
+.PP
+This command cannot be executed while connected to the target
+database. Thus, it might be more convenient to use the program
+dropdb [\fBdropdb\fR(1)] instead,
+which is a wrapper around this command.
+.SH "COMPATIBILITY"
+.PP
+The is no \fBDROP DATABASE\fR statement in the SQL standard.
+.SH "SEE ALSO"
+CREATE DATABASE [\fBcreate_database\fR(7)]
+
diff --git a/raw/man7/drop_domain.7 b/raw/man7/drop_domain.7
new file mode 100644
index 0000000..7ca0847
--- /dev/null
+++ b/raw/man7/drop_domain.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP DOMAIN \- remove a domain
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP DOMAIN \fIname\fR [, ...]  [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP DOMAIN\fR will remove a domain. Only the
+owner of a domain can remove it.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing domain.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the domain (such as
+table columns).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the domain if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+To remove the domain \fBbox\fR:
+.sp
+.nf
+DROP DOMAIN box;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command conforms to the SQL standard.
+.SH "SEE ALSO"
+CREATE DOMAIN [\fBcreate_domain\fR(7)]
+
diff --git a/raw/man7/drop_function.7 b/raw/man7/drop_function.7
new file mode 100644
index 0000000..cb573a2
--- /dev/null
+++ b/raw/man7/drop_function.7
@@ -0,0 +1,48 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP FUNCTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP FUNCTION \- remove a function
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP FUNCTION \fIname\fR ( [ \fItype\fR [, ...] ] ) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP FUNCTION\fR removes the definition of an existing
+function. To execute this command the user must be the
+owner of the function. The argument types to the
+function must be specified, since several different functions
+may exist with the same name and different argument lists.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing function.
+.TP
+\fB\fItype\fB\fR
+The data type of an argument of the function.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the function (such as
+operators or triggers).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the function if any objects depend on it. This
+is the default.
+.SH "EXAMPLES"
+.PP
+This command removes the square root function:
+.sp
+.nf
+DROP FUNCTION sqrt(integer);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+A \fBDROP FUNCTION\fR statement is defined in the SQL
+standard, but it is not compatible with this command.
+.SH "SEE ALSO"
+CREATE FUNCTION [\fBcreate_function\fR(7)], ALTER FUNCTION [\fBalter_function\fR(l)]
+
diff --git a/raw/man7/drop_group.7 b/raw/man7/drop_group.7
new file mode 100644
index 0000000..54bdcf2
--- /dev/null
+++ b/raw/man7/drop_group.7
@@ -0,0 +1,33 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP GROUP" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP GROUP \- remove a user group
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP GROUP \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP GROUP\fR removes the specified group. The
+users in the group are not deleted.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of an existing group.
+.SH "EXAMPLES"
+.PP
+To drop a group:
+.sp
+.nf
+DROP GROUP staff;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP GROUP\fR statement in the SQL standard.
+.SH "SEE ALSO"
+ALTER GROUP [\fBalter_group\fR(7)], CREATE GROUP [\fBcreate_group\fR(l)]
+
diff --git a/raw/man7/drop_index.7 b/raw/man7/drop_index.7
new file mode 100644
index 0000000..6766eae
--- /dev/null
+++ b/raw/man7/drop_index.7
@@ -0,0 +1,43 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP INDEX" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP INDEX \- remove an index
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP INDEX \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP INDEX\fR drops an existing index from the database
+system. To execute this command you must be the owner of
+the index.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an index to remove.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the index.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the index if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+This command will remove the index title_idx:
+.sp
+.nf
+DROP INDEX title_idx;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBDROP INDEX\fR is a
+PostgreSQL language extension. There
+are no provisions for indexes in the SQL standard.
+.SH "SEE ALSO"
+CREATE INDEX [\fBcreate_index\fR(7)]
+
diff --git a/raw/man7/drop_language.7 b/raw/man7/drop_language.7
new file mode 100644
index 0000000..fdf7980
--- /dev/null
+++ b/raw/man7/drop_language.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP LANGUAGE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP LANGUAGE \- remove a procedural language
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP [ PROCEDURAL ] LANGUAGE \fIname\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP LANGUAGE\fR will remove the definition
+of the previously registered procedural language called
+\fIname\fR.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of an existing procedural language. For backward
+compatibility, the name may be enclosed by single quotes.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the language (such as
+functions in the language).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the language if any objects depend on it. This
+is the default.
+.SH "EXAMPLES"
+.PP
+This command removes the procedural language
+plsample:
+.sp
+.nf
+DROP LANGUAGE plsample;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP LANGUAGE\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+ALTER LANGUAGE [\fBalter_language\fR(7)], CREATE LANGUAGE [\fBcreate_language\fR(l)], \fBdroplang\fR(1)
+
diff --git a/raw/man7/drop_operator.7 b/raw/man7/drop_operator.7
new file mode 100644
index 0000000..6f7dde9
--- /dev/null
+++ b/raw/man7/drop_operator.7
@@ -0,0 +1,65 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP OPERATOR" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP OPERATOR \- remove an operator
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP OPERATOR \fIname\fR ( \fIlefttype\fR | NONE , \fIrighttype\fR | NONE ) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP OPERATOR\fR drops an existing operator from
+the database system. To execute this command you must be the owner
+of the operator.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing operator.
+.TP
+\fB\fIlefttype\fB\fR
+The data type of the operator's left operand; write
+NONE if the operator has no left operand.
+.TP
+\fB\fIrighttype\fB\fR
+The data type of the operator's right operand; write
+NONE if the operator has no right operand.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the operator.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the operator if any objects depend on it. This
+is the default.
+.SH "EXAMPLES"
+.PP
+Remove the power operator a^b for type \fBinteger\fR:
+.sp
+.nf
+DROP OPERATOR ^ (integer, integer);
+.sp
+.fi
+.PP
+Remove the left unary bitwise complement operator
+~b for type \fBbit\fR:
+.sp
+.nf
+DROP OPERATOR ~ (none, bit);
+.sp
+.fi
+.PP
+Remove the right unary factorial operator x!
+for type \fBinteger\fR:
+.sp
+.nf
+DROP OPERATOR ! (integer, none);
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP OPERATOR\fR statement in the SQL standard.
+.SH "SEE ALSO"
+CREATE OPERATOR [\fBcreate_operator\fR(7)]
+
diff --git a/raw/man7/drop_operator_class.7 b/raw/man7/drop_operator_class.7
new file mode 100644
index 0000000..ba4e245
--- /dev/null
+++ b/raw/man7/drop_operator_class.7
@@ -0,0 +1,47 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP OPERATOR CLASS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP OPERATOR CLASS \- remove an operator class
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP OPERATOR CLASS \fIname\fR USING \fIindex_method\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP OPERATOR CLASS\fR drops an existing operator class.
+To execute this command you must be the owner of the operator class.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing operator class.
+.TP
+\fB\fIindex_method\fB\fR
+The name of the index access method the operator class is for.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the operator class.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the operator class if any objects depend on it.
+This is the default.
+.SH "EXAMPLES"
+.PP
+Remove the B-tree operator class widget_ops:
+.sp
+.nf
+DROP OPERATOR CLASS widget_ops USING btree;
+.sp
+.fi
+This command will not succeed if there are any existing indexes
+that use the operator class. Add CASCADE to drop
+such indexes along with the operator class.
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP OPERATOR CLASS\fR statement in the
+SQL standard.
+.SH "SEE ALSO"
+ALTER OPERATOR CLASS [\fBalter_operator_class\fR(7)], CREATE OPERATOR CLASS [\fBcreate_operator_class\fR(l)]
+
diff --git a/raw/man7/drop_rule.7 b/raw/man7/drop_rule.7
new file mode 100644
index 0000000..d0260ee
--- /dev/null
+++ b/raw/man7/drop_rule.7
@@ -0,0 +1,43 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP RULE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP RULE \- remove a rewrite rule
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP RULE \fIname\fR ON \fIrelation\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP RULE\fR drops a rewrite rule.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the rule to drop.
+.TP
+\fB\fIrelation\fB\fR
+The name (optionally schema-qualified) of the table or view that
+the rule applies to.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the rule.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the rule if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+To drop the rewrite rule newrule:
+.sp
+.nf
+DROP RULE newrule ON mytable;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP RULE\fR statement in the SQL standard.
+.SH "SEE ALSO"
+CREATE RULE [\fBcreate_rule\fR(7)]
+
diff --git a/raw/man7/drop_schema.7 b/raw/man7/drop_schema.7
new file mode 100644
index 0000000..f17e64c
--- /dev/null
+++ b/raw/man7/drop_schema.7
@@ -0,0 +1,47 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP SCHEMA" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP SCHEMA \- remove a schema
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP SCHEMA \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP SCHEMA\fR removes schemas from the database.
+.PP
+A schema can only be dropped by its owner or a superuser. Note that
+the owner can drop the schema (and thereby all contained objects)
+even if he does not own some of the objects within the schema.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of a schema.
+.TP
+\fBCASCADE\fR
+Automatically drop objects (tables, functions, etc.) that are
+contained in the schema.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the schema if it contains any objects. This is
+the default.
+.SH "EXAMPLES"
+.PP
+To remove schema mystuff from the database,
+along with everything it contains:
+.sp
+.nf
+DROP SCHEMA mystuff CASCADE;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBDROP SCHEMA\fR is fully conforming with the SQL
+standard, except that the standard only allows one schema to be
+dropped per command.
+.SH "SEE ALSO"
+ALTER SCHEMA [\fBalter_schema\fR(7)], CREATE SCHEMA [\fBcreate_schema\fR(l)]
+
diff --git a/raw/man7/drop_sequence.7 b/raw/man7/drop_sequence.7
new file mode 100644
index 0000000..6a978b9
--- /dev/null
+++ b/raw/man7/drop_sequence.7
@@ -0,0 +1,39 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP SEQUENCE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP SEQUENCE \- remove a sequence
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP SEQUENCE \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP SEQUENCE\fR removes sequence number generators.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of a sequence.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the sequence.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the sequence if any objects depend on it. This
+is the default.
+.SH "EXAMPLES"
+.PP
+To remove the sequence serial:
+.sp
+.nf
+DROP SEQUENCE serial;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBDROP SEQUENCE\fR statement in the SQL standard.
+.SH "SEE ALSO"
+CREATE SEQUENCE [\fBcreate_sequence\fR(7)]
+
diff --git a/raw/man7/drop_table.7 b/raw/man7/drop_table.7
new file mode 100644
index 0000000..79443b3
--- /dev/null
+++ b/raw/man7/drop_table.7
@@ -0,0 +1,50 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP TABLE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP TABLE \- remove a table
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP TABLE \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP TABLE\fR removes tables from the database.
+Only its owner may destroy a table. To empty a table of rows,
+without destroying the table, use \fBDELETE\fR.
+.PP
+\fBDROP TABLE\fR always removes any indexes, rules,
+triggers, and constraints that exist for the target table.
+However, to drop a table that is referenced by a foreign-key
+constraint of another table, CASCADE must be
+specified. (CASCADE will remove the foreign-key
+constraint, not the other table entirely.)
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of the table to drop.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the table (such as
+views).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the table if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+To destroy two tables, films and 
+distributors:
+.sp
+.nf
+DROP TABLE films, distributors;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command conforms to the SQL standard.
+.SH "SEE ALSO"
+ALTER TABLE [\fBalter_table\fR(7)], CREATE TABLE [\fBcreate_table\fR(l)]
+
diff --git a/raw/man7/drop_trigger.7 b/raw/man7/drop_trigger.7
new file mode 100644
index 0000000..e8d37bb
--- /dev/null
+++ b/raw/man7/drop_trigger.7
@@ -0,0 +1,50 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP TRIGGER \- remove a trigger
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP TRIGGER \fIname\fR ON \fItable\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP TRIGGER\fR will remove an existing
+trigger definition. To execute this command, the current
+user must be the owner of the table for which the trigger is defined.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the trigger to remove.
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of a table for which the
+trigger is defined.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the trigger.
+.TP
+\fBRESTRICT\fR
+Refuse to drop the trigger if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+Destroy the trigger if_dist_exists on the table
+films:
+.sp
+.nf
+DROP TRIGGER if_dist_exists ON films;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBDROP TRIGGER\fR statement in
+PostgreSQL is incompatible with the SQL
+standard. In the SQL standard, trigger names are not local to
+tables, so the command is simply DROP TRIGGER
+\fIname\fR.
+.SH "SEE ALSO"
+CREATE TRIGGER [\fBcreate_trigger\fR(7)]
+
diff --git a/raw/man7/drop_type.7 b/raw/man7/drop_type.7
new file mode 100644
index 0000000..dd8b202
--- /dev/null
+++ b/raw/man7/drop_type.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP TYPE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP TYPE \- remove a data type
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP TYPE \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP TYPE\fR will remove a user-defined data type.
+Only the owner of a type can remove it.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of the data type to remove.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the type (such as
+table columns, functions, operators).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the type if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+To remove the data type \fBbox\fR:
+.sp
+.nf
+DROP TYPE box;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command is similar to the corresponding command in the SQL
+standard, but note that the \fBCREATE TYPE\fR command
+and the data type extension mechanisms in
+PostgreSQL differ from the SQL standard.
+.SH "SEE ALSO"
+CREATE TYPE [\fBcreate_type\fR(7)]
+
diff --git a/raw/man7/drop_user.7 b/raw/man7/drop_user.7
new file mode 100644
index 0000000..a233b18
--- /dev/null
+++ b/raw/man7/drop_user.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP USER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP USER \- remove a database user account
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP USER \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP USER\fR removes the specified user.
+It does not remove tables, views, or other objects owned by the user. If the
+user owns any database, an error is raised.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of the user to remove.
+.SH "NOTES"
+.PP
+PostgreSQL includes a program dropuser [\fBdropuser\fR(1)] that has the
+same functionality as this command (in fact, it calls this command)
+but can be run from the command shell.
+.PP
+To drop a user who owns a database, first drop the database or change
+its ownership.
+.SH "EXAMPLES"
+.PP
+To drop a user account:
+.sp
+.nf
+DROP USER jonathan;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBDROP USER\fR statement is a
+PostgreSQL extension. The SQL standard
+leaves the definition of users to the implementation.
+.SH "SEE ALSO"
+ALTER USER [\fBalter_user\fR(7)], CREATE USER [\fBcreate_user\fR(l)]
+
diff --git a/raw/man7/drop_view.7 b/raw/man7/drop_view.7
new file mode 100644
index 0000000..dd1d414
--- /dev/null
+++ b/raw/man7/drop_view.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP VIEW" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP VIEW \- remove a view
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP VIEW \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBDROP VIEW\fR drops an existing view. To execute
+this command you must be the owner of the view.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of the view to remove.
+.TP
+\fBCASCADE\fR
+Automatically drop objects that depend on the view (such as
+other views).
+.TP
+\fBRESTRICT\fR
+Refuse to drop the view if any objects depend on it. This is
+the default.
+.SH "EXAMPLES"
+.PP
+This command will remove the view called kinds:
+.sp
+.nf
+DROP VIEW kinds;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command conforms to the SQL standard.
+.SH "SEE ALSO"
+CREATE VIEW [\fBcreate_view\fR(7)]
+
diff --git a/raw/man7/end.7 b/raw/man7/end.7
new file mode 100644
index 0000000..b4b6ad5
--- /dev/null
+++ b/raw/man7/end.7
@@ -0,0 +1,47 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "END" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+END \- commit the current transaction
+
+.SH SYNOPSIS
+.sp
+.nf
+END [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBEND\fR commits the current transaction. All changes
+made by the transaction become visible to others and are guaranteed
+to be durable if a crash occurs. This command is a
+PostgreSQL extension
+that is equivalent to COMMIT [\fBcommit\fR(7)].
+.SH "PARAMETERS"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+Optional key words. They have no effect.
+.SH "NOTES"
+.PP
+Use ROLLBACK [\fBrollback\fR(7)] to
+abort a transaction.
+.PP
+Issuing \fBEND\fR when not inside a transaction does
+no harm, but it will provoke a warning message.
+.SH "EXAMPLES"
+.PP
+To commit the current transaction and make all changes permanent:
+.sp
+.nf
+END;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBEND\fR is a PostgreSQL
+extension that provides functionality equivalent to COMMIT [\fBcommit\fR(7)], which is
+specified in the SQL standard.
+.SH "SEE ALSO"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)], ROLLBACK [\fBrollback\fR(l)]
+
diff --git a/raw/man7/execute.7 b/raw/man7/execute.7
new file mode 100644
index 0000000..684dbf0
--- /dev/null
+++ b/raw/man7/execute.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "EXECUTE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+EXECUTE \- execute a prepared statement
+
+.SH SYNOPSIS
+.sp
+.nf
+EXECUTE \fIplan_name\fR [ (\fIparameter\fR [, ...] ) ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBEXECUTE\fR is used to execute a previously prepared
+statement. Since prepared statements only exist for the duration of a
+session, the prepared statement must have been created by a
+\fBPREPARE\fR statement executed earlier in the
+current session.
+.PP
+If the \fBPREPARE\fR statement that created the statement
+specified some parameters, a compatible set of parameters must be
+passed to the \fBEXECUTE\fR statement, or else an
+error is raised. Note that (unlike functions) prepared statements are
+not overloaded based on the type or number of their parameters; the
+name of a prepared statement must be unique within a database session.
+.PP
+For more information on the creation and usage of prepared statements,
+see PREPARE [\fBprepare\fR(7)].
+.SH "PARAMETERS"
+.TP
+\fB\fIplan_name\fB\fR
+The name of the prepared statement to execute.
+.TP
+\fB\fIparameter\fB\fR
+The actual value of a parameter to the prepared statement. This
+must be an expression yielding a value of a type compatible with
+the data type specified for this parameter position in the
+\fBPREPARE\fR command that created the prepared
+statement.
+.SH "COMPATIBILITY"
+.PP
+The SQL standard includes an \fBEXECUTE\fR statement,
+but it is only for use in embedded SQL. This version of the
+\fBEXECUTE\fR statement also uses a somewhat different
+syntax.
diff --git a/raw/man7/explain.7 b/raw/man7/explain.7
new file mode 100644
index 0000000..681c040
--- /dev/null
+++ b/raw/man7/explain.7
@@ -0,0 +1,173 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "EXPLAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+EXPLAIN \- show the execution plan of a statement
+
+.SH SYNOPSIS
+.sp
+.nf
+EXPLAIN [ ANALYZE ] [ VERBOSE ] \fIstatement\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+This command displays the execution plan that the
+PostgreSQL planner generates for the
+supplied statement. The execution plan shows how the table(s)
+referenced by the statement will be scanned---by plain sequential scan,
+index scan, etc.---and if multiple tables are referenced, what join
+algorithms will be used to bring together the required row from
+each input table.
+.PP
+The most critical part of the display is the estimated statement execution
+cost, which is the planner's guess at how long it will take to run the
+statement (measured in units of disk page fetches). Actually two numbers
+are shown: the start-up time before the first row can be returned, and
+the total time to return all the rows. For most queries the total time
+is what matters, but in contexts such as a subquery in EXISTS, the planner
+will choose the smallest start-up time instead of the smallest total time
+(since the executor will stop after getting one row, anyway).
+Also, if you limit the number of rows to return with a LIMIT clause,
+the planner makes an appropriate interpolation between the endpoint
+costs to estimate which plan is really the cheapest.
+.PP
+The ANALYZE option causes the statement to be actually executed, not only
+planned. The total elapsed time expended within each plan node (in
+milliseconds) and total number of rows it actually returned are added to
+the display. This is useful for seeing whether the planner's estimates
+are close to reality.
+.sp
+.RS
+.B "Important:"
+Keep in mind that the statement is actually executed when
+ANALYZE is used. Although
+\fBEXPLAIN\fR will discard any output that a
+\fBSELECT\fR would return, other side effects of the
+statement will happen as usual. If you wish to use
+\fBEXPLAIN ANALYZE\fR on an
+\fBINSERT\fR, \fBUPDATE\fR,
+\fBDELETE\fR, or \fBEXECUTE\fR statement
+without letting the command affect your data, use this approach:
+.sp
+.nf
+BEGIN;
+EXPLAIN ANALYZE ...;
+ROLLBACK;
+.sp
+.fi
+.RE
+.sp
+.SH "PARAMETERS"
+.TP
+\fBANALYZE\fR
+Carry out the command and show the actual run times.
+.TP
+\fBVERBOSE\fR
+Show the full internal representation of the plan tree, rather
+than just a summary. Usually this option is only useful for
+debugging PostgreSQL. The
+VERBOSE output is either pretty-printed or
+not, depending on the setting of the
+explain_pretty_print configuration parameter.
+.TP
+\fB\fIstatement\fB\fR
+Any \fBSELECT\fR, \fBINSERT\fR, \fBUPDATE\fR,
+\fBDELETE\fR, \fBEXECUTE\fR, or \fBDECLARE\fR
+statement, whose execution plan you wish to see.
+.SH "NOTES"
+.PP
+There is only sparse documentation on the optimizer's use of cost
+information in PostgreSQL. Refer to
+the section called ``Using \fBEXPLAIN\fR'' in the documentation for more information.
+.PP
+In order to allow the PostgreSQL query
+planner to make reasonably informed decisions when optimizing
+queries, the \fBANALYZE\fR statement should be run to
+record statistics about the distribution of data within the
+table. If you have not done this (or if the statistical
+distribution of the data in the table has changed significantly
+since the last time \fBANALYZE\fR was run), the
+estimated costs are unlikely to conform to the real properties of
+the query, and consequently an inferior query plan may be chosen.
+.PP
+Prior to PostgreSQL 7.3, the plan was
+emitted in the form of a NOTICE message. Now it
+appears as a query result (formatted like a table with a single
+text column).
+.SH "EXAMPLES"
+.PP
+To show the plan for a simple query on a table with a single
+\fBinteger\fR column and 10000 rows:
+.sp
+.nf
+EXPLAIN SELECT * FROM foo;
+
+                       QUERY PLAN
+---------------------------------------------------------
+ Seq Scan on foo  (cost=0.00..155.00 rows=10000 width=4)
+(1 row)
+.sp
+.fi
+.PP
+If there is an index and we use a query with an indexable
+WHERE condition, \fBEXPLAIN\fR
+might show a different plan:
+.sp
+.nf
+EXPLAIN SELECT * FROM foo WHERE i = 4;
+
+                         QUERY PLAN
+--------------------------------------------------------------
+ Index Scan using fi on foo  (cost=0.00..5.98 rows=1 width=4)
+   Index Cond: (i = 4)
+(2 rows)
+.sp
+.fi
+.PP
+And here is an example of a query plan for a query
+using an aggregate function:
+.sp
+.nf
+EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;
+
+                             QUERY PLAN
+---------------------------------------------------------------------
+ Aggregate  (cost=23.93..23.93 rows=1 width=4)
+   ->  Index Scan using fi on foo  (cost=0.00..23.92 rows=6 width=4)
+         Index Cond: (i < 10)
+(3 rows)
+.sp
+.fi
+.PP
+Here is an example of using \fBEXPLAIN EXECUTE\fR to
+display the execution plan for a prepared query:
+.sp
+.nf
+PREPARE query(int, int) AS SELECT sum(bar) FROM test
+    WHERE id > $1 AND id < $2
+    GROUP BY foo;
+
+EXPLAIN ANALYZE EXECUTE query(100, 200);
+
+                                                       QUERY PLAN                                                        
+-------------------------------------------------------------------------------------------------------------------------
+ HashAggregate  (cost=39.53..39.53 rows=1 width=8) (actual time=0.661..0.672 rows=7 loops=1)
+   ->  Index Scan using test_pkey on test  (cost=0.00..32.97 rows=1311 width=8) (actual time=0.050..0.395 rows=99 loops=1)
+         Index Cond: ((id > $1) AND (id < $2))
+ Total runtime: 0.851 ms
+(4 rows)
+.sp
+.fi
+.PP
+Of course, the specific numbers shown here depend on the actual
+contents of the tables involved. Also note that the numbers, and
+even the selected query strategy, may vary between
+PostgreSQL releases due to planner
+improvements. In addition, the \fBANALYZE\fR command
+uses random sampling to estimate data statistics; therefore, it is
+possible for cost estimates to change after a fresh run of
+\fBANALYZE\fR, even if the actual distribution of data
+in the table has not changed.
+.SH "COMPATIBILITY"
+.PP
+There is no \fBEXPLAIN\fR statement defined in the SQL standard.
diff --git a/raw/man7/fetch.7 b/raw/man7/fetch.7
new file mode 100644
index 0000000..58071a6
--- /dev/null
+++ b/raw/man7/fetch.7
@@ -0,0 +1,225 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "FETCH" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+FETCH \- retrieve rows from a query using a cursor
+
+.SH SYNOPSIS
+.sp
+.nf
+FETCH [ \fIdirection\fR { FROM | IN } ] \fIcursorname\fR
+
+where \fIdirection\fR can be empty or one of:
+
+    NEXT
+    PRIOR
+    FIRST
+    LAST
+    ABSOLUTE \fIcount\fR
+    RELATIVE \fIcount\fR
+    \fIcount\fR
+    ALL
+    FORWARD
+    FORWARD \fIcount\fR
+    FORWARD ALL
+    BACKWARD
+    BACKWARD \fIcount\fR
+    BACKWARD ALL
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBFETCH\fR retrieves rows using a previously-created cursor.
+.PP
+A cursor has an associated position, which is used by
+\fBFETCH\fR. The cursor position can be before the first row of the
+query result, on any particular row of the result, or after the last row
+of the result. When created, a cursor is positioned before the first row.
+After fetching some rows, the cursor is positioned on the row most recently
+retrieved. If \fBFETCH\fR runs off the end of the available rows
+then the cursor is left positioned after the last row, or before the first
+row if fetching backward. \fBFETCH ALL\fR or \fBFETCH BACKWARD
+ALL\fR will always leave the cursor positioned after the last row or before
+the first row.
+.PP
+The forms NEXT, PRIOR, FIRST,
+LAST, ABSOLUTE, RELATIVE fetch
+a single row after moving the cursor appropriately. If there is no
+such row, an empty result is returned, and the cursor is left
+positioned before the first row or after the last row as
+appropriate.
+.PP
+The forms using FORWARD and BACKWARD
+retrieve the indicated number of rows moving in the forward or
+backward direction, leaving the cursor positioned on the
+last-returned row (or after/before all rows, if the \fIcount\fR exceeds the number of rows
+available).
+.PP
+RELATIVE 0, FORWARD 0, and
+BACKWARD 0 all request fetching the current row without
+moving the cursor, that is, re-fetching the most recently fetched
+row. This will succeed unless the cursor is positioned before the
+first row or after the last row; in which case, no row is returned.
+.SH "PARAMETERS"
+.TP
+\fB\fIdirection\fB\fR
+\fIdirection\fR defines
+the fetch direction and number of rows to fetch. It can be one
+of the following:
+.RS
+.TP
+\fBNEXT\fR
+Fetch the next row. This is the default if \fIdirection\fR is omitted.
+.TP
+\fBPRIOR\fR
+Fetch the prior row.
+.TP
+\fBFIRST\fR
+Fetch the first row of the query (same as ABSOLUTE 1).
+.TP
+\fBLAST\fR
+Fetch the last row of the query (same as ABSOLUTE -1).
+.TP
+\fBABSOLUTE \fIcount\fB\fR
+Fetch the \fIcount\fR'th row of the query,
+or the abs(\fIcount\fR)'th row from
+the end if \fIcount\fR is negative. Position
+before first row or after last row if \fIcount\fR is out of range; in
+particular, ABSOLUTE 0 positions before
+the first row.
+.TP
+\fBRELATIVE \fIcount\fB\fR
+Fetch the \fIcount\fR'th succeeding row, or
+the abs(\fIcount\fR)'th prior
+row if \fIcount\fR is
+negative. RELATIVE 0 re-fetches the
+current row, if any.
+.TP
+\fB\fIcount\fB\fR
+Fetch the next \fIcount\fR rows (same as
+FORWARD \fIcount\fR).
+.TP
+\fBALL\fR
+Fetch all remaining rows (same as FORWARD ALL).
+.TP
+\fBFORWARD\fR
+Fetch the next row (same as NEXT).
+.TP
+\fBFORWARD \fIcount\fB\fR
+Fetch the next \fIcount\fR rows.
+FORWARD 0 re-fetches the current row.
+.TP
+\fBFORWARD ALL\fR
+Fetch all remaining rows.
+.TP
+\fBBACKWARD\fR
+Fetch the prior row (same as PRIOR).
+.TP
+\fBBACKWARD \fIcount\fB\fR
+Fetch the prior \fIcount\fR rows (scanning
+backwards). BACKWARD 0 re-fetches the
+current row.
+.TP
+\fBBACKWARD ALL\fR
+Fetch all prior rows (scanning backwards).
+.RE
+.PP
+.TP
+\fB\fIcount\fB\fR
+\fIcount\fR is a
+possibly-signed integer constant, determining the location or
+number of rows to fetch. For FORWARD and
+BACKWARD cases, specifying a negative \fIcount\fR is equivalent to changing
+the sense of FORWARD and BACKWARD.
+.TP
+\fB\fIcursorname\fB\fR
+An open cursor's name.
+.SH "OUTPUTS"
+.PP
+On successful completion, a \fBFETCH\fR command returns a command
+tag of the form
+.sp
+.nf
+FETCH \fIcount\fR
+.sp
+.fi
+The \fIcount\fR is the number
+of rows fetched (possibly zero). Note that in
+\fBpsql\fR, the command tag will not actually be
+displayed, since \fBpsql\fR displays the fetched
+rows instead.
+.SH "NOTES"
+.PP
+The cursor should be declared with the SCROLL
+option if one intends to use any variants of \fBFETCH\fR
+other than \fBFETCH NEXT\fR or \fBFETCH FORWARD\fR with
+a positive count. For simple queries
+PostgreSQL will allow backwards fetch
+from cursors not declared with SCROLL, but this
+behavior is best not relied on. If the cursor is declared with
+NO SCROLL, no backward fetches are allowed.
+.PP
+ABSOLUTE fetches are not any faster than
+navigating to the desired row with a relative move: the underlying
+implementation must traverse all the intermediate rows anyway.
+Negative absolute fetches are even worse: the query must be read to
+the end to find the last row, and then traversed backward from
+there. However, rewinding to the start of the query (as with
+FETCH ABSOLUTE 0) is fast.
+.PP
+Updating data via a cursor is currently not supported by
+PostgreSQL.
+.PP
+DECLARE [\fBdeclare\fR(7)]
+is used to define a cursor. Use
+MOVE [\fBmove\fR(7)]
+to change cursor position without retrieving data.
+.SH "EXAMPLES"
+.PP
+The following example traverses a table using a cursor.
+.sp
+.nf
+BEGIN WORK;
+
+-- Set up a cursor:
+DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;
+
+-- Fetch the first 5 rows in the cursor liahona:
+FETCH FORWARD 5 FROM liahona;
+
+ code  |          title          | did | date_prod  |   kind   |  len
+-------+-------------------------+-----+------------+----------+-------
+ BL101 | The Third Man           | 101 | 1949-12-23 | Drama    | 01:44
+ BL102 | The African Queen       | 101 | 1951-08-11 | Romantic | 01:43
+ JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25
+ P_301 | Vertigo                 | 103 | 1958-11-14 | Action   | 02:08
+ P_302 | Becket                  | 103 | 1964-02-03 | Drama    | 02:28
+
+-- Fetch the previous row:
+FETCH PRIOR FROM liahona;
+
+ code  |  title  | did | date_prod  |  kind  |  len
+-------+---------+-----+------------+--------+-------
+ P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
+
+-- Close the cursor and end the transaction:
+CLOSE liahona;
+COMMIT WORK;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The SQL standard defines \fBFETCH\fR for use in
+embedded SQL only. This variant of \fBFETCH\fR
+described here returns the data as if it were a
+\fBSELECT\fR result rather than placing it in host
+variables. Other than this point, \fBFETCH\fR is
+fully upward-compatible with the SQL standard.
+.PP
+The \fBFETCH\fR forms involving
+FORWARD and BACKWARD, as well
+as the forms FETCH \fIcount\fR and FETCH
+ALL, in which FORWARD is implicit, are
+PostgreSQL extensions.
+.PP
+The SQL standard allows only FROM preceding the cursor
+name; the option to use IN is an extension.
diff --git a/raw/man7/glob.7 b/raw/man7/glob.7
new file mode 100644
index 0000000..b485767
--- /dev/null
+++ b/raw/man7/glob.7
@@ -0,0 +1,187 @@
+.\" Copyright (c) 1998 Andries Brouwer
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 2003-08-24 fix for / by John Kristoff + joey
+.\"
+.TH GLOB 7 2003-08-24 "Unix" "Linux Programmer's Manual"
+.SH NAME
+glob \- Globbing pathnames
+.SH DESCRIPTION
+Long ago, in Unix V6, there was a program
+.I /etc/glob
+that would expand wildcard patterns.
+Soon afterwards this became a shell built-in.
+
+These days there is also a library routine
+.BR glob (3)
+that will perform this function for a user program.
+
+The rules are as follows (POSIX 1003.2, 3.13).
+.SH "WILDCARD MATCHING"
+A string is a wildcard pattern if it contains one of the
+characters `?', `*' or `['. Globbing is the operation
+that expands a wildcard pattern into the list of pathnames
+matching the pattern. Matching is defined by:
+
+A `?' (not between brackets) matches any single character.
+
+A `*' (not between brackets) matches any string,
+including the empty string.
+
+.SS "Character classes"
+An expression `[...]' where the first character after the
+leading `[' is not an `!' matches a single character,
+namely any of the characters enclosed by the brackets.
+The string enclosed by the brackets cannot be empty;
+therefore `]' can be allowed between the brackets, provided
+that it is the first character. (Thus, `[][!]' matches the
+three characters `[', `]' and `!'.)
+
+.SS Ranges
+There is one special convention:
+two characters separated by `-' denote a range.
+(Thus, `[A-Fa-f0-9]' is equivalent to `[ABCDEFabcdef0123456789]'.)
+One may include `-' in its literal meaning by making it the
+first or last character between the brackets.
+(Thus, `[]-]' matches just the two characters `]' and `-',
+and `[--0]' matches the three characters `-', `.', `0', since `/'
+cannot be matched.)
+
+.SS Complementation
+An expression `[!...]' matches a single character, namely
+any character that is not matched by the expression obtained
+by removing the first `!' from it.
+(Thus, `[!]a-]' matches any single character except `]', `a' and `-'.)
+
+One can remove the special meaning of `?', `*' and `[' by
+preceding them by a backslash, or, in case this is part of
+a shell command line, enclosing them in quotes.
+Between brackets these characters stand for themselves.
+Thus, `[[?*\e]' matches the four characters `[', `?', `*' and `\e'.
+
+.SH PATHNAMES
+Globbing is applied on each of the components of a pathname
+separately. A `/' in a pathname cannot be matched by a `?' or `*'
+wildcard, or by a range like `[.-0]'. A range cannot contain an
+explicit `/' character; this would lead to a syntax error.
+
+If a filename starts with a `.', this character must be matched explicitly.
+(Thus, `rm *' will not remove .profile, and `tar c *' will not
+archive all your files; `tar c .' is better.)
+
+.SH "EMPTY LISTS"
+The nice and simple rule given above: `expand a wildcard pattern
+into the list of matching pathnames' was the original Unix
+definition. It allowed one to have patterns that expand into
+an empty list, as in
+.br
+.nf
+	xv -wait 0 *.gif *.jpg
+.fi
+where perhaps no *.gif files are present (and this is not
+an error).
+However, POSIX requires that a wildcard pattern is left
+unchanged when it is syntactically incorrect, or the list of
+matching pathnames is empty.
+With
+.I bash
+one can force the classical behaviour by setting
+.IR allow_null_glob_expansion=true .
+
+(Similar problems occur elsewhere. E.g., where old scripts have
+.br
+.nf
+	rm `find . -name "*~"`
+.fi
+new scripts require
+.br
+.nf
+	rm -f nosuchfile `find . -name "*~"`
+.fi
+to avoid error messages from
+.I rm
+called with an empty argument list.)
+
+.SH NOTES
+.SS Regular expressions
+Note that wildcard patterns are not regular expressions,
+although they are a bit similar. First of all, they match
+filenames, rather than text, and secondly, the conventions
+are not the same: e.g., in a regular expression `*' means zero or
+more copies of the preceding thing.
+
+Now that regular expressions have bracket expressions where
+the negation is indicated by a `^', POSIX has declared the
+effect of a wildcard pattern `[^...]' to be undefined.
+
+.SS Character classes and Internationalization
+Of course ranges were originally meant to be ASCII ranges,
+so that `[ -%]' stands for `[ !"#$%]' and `[a-z]' stands
+for "any lowercase letter".
+Some Unix implementations generalized this so that a range X-Y
+stands for the set of characters with code between the codes for
+X and for Y.  However, this requires the user to know the
+character coding in use on the local system, and moreover, is
+not convenient if the collating sequence for the local alphabet
+differs from the ordering of the character codes.
+Therefore, POSIX extended the bracket notation greatly,
+both for wildcard patterns and for regular expressions.
+In the above we saw three types of items that can occur in a bracket
+expression: namely (i) the negation, (ii) explicit single characters,
+and (iii) ranges. POSIX specifies ranges in an internationally
+more useful way and adds three more types:
+
+(iii) Ranges X-Y comprise all characters that fall between X
+and Y (inclusive) in the currect collating sequence as defined
+by the LC_COLLATE category in the current locale.
+
+(iv) Named character classes, like
+.br
+.nf
+[:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
+[:digit:]  [:graph:]  [:lower:]  [:print:]
+[:punct:]  [:space:]  [:upper:]  [:xdigit:]
+.fi
+so that one can say `[[:lower:]]' instead of `[a-z]', and have
+things work in Denmark, too, where there are three letters past `z'
+in the alphabet.
+These character classes are defined by the LC_CTYPE category
+in the current locale.
+
+(v) Collating symbols, like `[.ch.]' or `[.a-acute.]',
+where the string between `[.' and `.]' is a collating
+element defined for the current locale. Note that this may
+be a multi-character element.
+
+(vi) Equivalence class expressions, like `[=a=]',
+where the string between `[=' and `=]' is any collating
+element from its equivalence class, as defined for the
+current locale. For example, `[[=a=]]' might be equivalent
+to `[a????]' (warning: Latin-1 here), that is,
+to `[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]'.
+
+.SH "SEE ALSO"
+.BR sh (1),
+.BR glob (3),
+.BR fnmatch (3),
+.BR locale (7),
+.BR regex (7)
diff --git a/raw/man7/grant.7 b/raw/man7/grant.7
new file mode 100644
index 0000000..5de0d9b
--- /dev/null
+++ b/raw/man7/grant.7
@@ -0,0 +1,261 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "GRANT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+GRANT \- define access privileges
+
+.SH SYNOPSIS
+.sp
+.nf
+GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON [ TABLE ] \fItablename\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
+    ON DATABASE \fIdbname\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { EXECUTE | ALL [ PRIVILEGES ] }
+    ON FUNCTION \fIfuncname\fR ([\fItype\fR, ...]) [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { USAGE | ALL [ PRIVILEGES ] }
+    ON LANGUAGE \fIlangname\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
+    ON SCHEMA \fIschemaname\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+The \fBGRANT\fR command gives specific privileges on
+an object (table, view, sequence, database, function, procedural language,
+or schema) to
+one or more users or groups of users. These privileges are added
+to those already granted, if any.
+.PP
+The key word PUBLIC indicates that the
+privileges are to be granted to all users, including those that may
+be created later. PUBLIC may be thought of as an
+implicitly defined group that always includes all users.
+Any particular user will have the sum
+of privileges granted directly to him, privileges granted to any group he
+is presently a member of, and privileges granted to
+PUBLIC.
+.PP
+If WITH GRANT OPTION is specified, the recipient
+of the privilege may in turn grant it to others. By default this
+is not allowed. Grant options can only be granted to individual
+users, not to groups or PUBLIC.
+.PP
+There is no need to grant privileges to the owner of an object
+(usually the user that created it),
+as the owner has all privileges by default. (The owner could,
+however, choose to revoke some of his own privileges for safety.)
+The right to drop an object, or to alter its definition in any way is
+not described by a grantable privilege; it is inherent in the owner,
+and cannot be granted or revoked. It is not possible for the owner's
+grant options to be revoked, either.
+.PP
+Depending on the type of object, the initial default privileges may
+include granting some privileges to PUBLIC.
+The default is no public access for tables and schemas;
+TEMP table creation privilege for databases;
+EXECUTE privilege for functions; and
+USAGE privilege for languages.
+The object owner may of course revoke these privileges. (For maximum
+security, issue the \fBREVOKE\fR in the same transaction that
+creates the object; then there is no window in which another user
+may use the object.)
+.PP
+The possible privileges are:
+.TP
+\fBSELECT\fR
+Allows SELECT [\fBselect\fR(7)] from any column of the
+specified table, view, or sequence. Also allows the use of
+COPY [\fBcopy\fR(7)] TO. For sequences, this
+privilege also allows the use of the \fBcurrval\fR function.
+.TP
+\fBINSERT\fR
+Allows INSERT [\fBinsert\fR(7)] of a new row into the
+specified table. Also allows COPY [\fBcopy\fR(7)] FROM.
+.TP
+\fBUPDATE\fR
+Allows UPDATE [\fBupdate\fR(7)] of any column of the
+specified table. SELECT ... FOR UPDATE
+also requires this privilege (besides the
+SELECT privilege). For sequences, this
+privilege allows the use of the \fBnextval\fR and
+\fBsetval\fR functions.
+.TP
+\fBDELETE\fR
+Allows DELETE [\fBdelete\fR(7)] of a row from the
+specified table.
+.TP
+\fBRULE\fR
+Allows the creation of a rule on the table/view. (See CREATE RULE [\fBcreate_rule\fR(7)] statement.)
+.TP
+\fBREFERENCES\fR
+To create a foreign key constraint, it is
+necessary to have this privilege on both the referencing and
+referenced tables.
+.TP
+\fBTRIGGER\fR
+Allows the creation of a trigger on the specified table. (See
+CREATE TRIGGER [\fBcreate_trigger\fR(7)] statement.)
+.TP
+\fBCREATE\fR
+For databases, allows new schemas to be created within the database.
+
+For schemas, allows new objects to be created within the schema.
+To rename an existing object, you must own the object \fBand\fR
+have this privilege for the containing schema.
+.TP
+\fBTEMPORARY\fR
+.TP
+\fBTEMP\fR
+Allows temporary tables to be created while using the database.
+.TP
+\fBEXECUTE\fR
+Allows the use of the specified function and the use of any
+operators that are implemented on top of the function. This is
+the only type of privilege that is applicable to functions.
+(This syntax works for aggregate functions, as well.)
+.TP
+\fBUSAGE\fR
+For procedural languages, allows the use of the specified language for
+the creation of functions in that language. This is the only type
+of privilege that is applicable to procedural languages.
+
+For schemas, allows access to objects contained in the specified 
+schema (assuming that the objects' own privilege requirements are
+also met). Essentially this allows the grantee to ``look up''
+objects within the schema.
+.TP
+\fBALL PRIVILEGES\fR
+Grant all of the privileges applicable to the object at once.
+The PRIVILEGES key word is optional in
+PostgreSQL, though it is required by
+strict SQL.
+.PP
+The privileges required by other commands are listed on the
+reference page of the respective command.
+.SH "NOTES"
+.PP
+The REVOKE [\fBrevoke\fR(7)] command is used
+to revoke access privileges.
+.PP
+It should be noted that database superusers can access
+all objects regardless of object privilege settings. This
+is comparable to the rights of root in a Unix system.
+As with root, it's unwise to operate as a superuser
+except when absolutely necessary.
+.PP
+If a superuser chooses to issue a \fBGRANT\fR or \fBREVOKE\fR
+command, the command is performed as though it were issued by the
+owner of the affected object. In particular, privileges granted via
+such a command will appear to have been granted by the object owner.
+.PP
+Currently, to grant privileges in PostgreSQL
+to only a few columns, you must
+create a view having the desired columns and then grant privileges
+to that view.
+.PP
+Use \fBpsql\fR(1)'s \fB\\z\fR command
+to obtain information about existing privileges, for example:
+.sp
+.nf
+=> \\z mytable
+
+        Access privileges for database "lusitania"
+ Schema |  Table  |           Access privileges
+--------+---------+---------------------------------------
+ public | mytable | {=r/postgres,miriam=arwdRxt/postgres,"group todos=arw/postgres"}
+(1 row)
+.sp
+.fi
+The entries shown by \fB\\z\fR are interpreted thus:
+.sp
+.nf
+              =xxxx -- privileges granted to PUBLIC
+         uname=xxxx -- privileges granted to a user
+   group gname=xxxx -- privileges granted to a group
+
+                  r -- SELECT ("read")
+                  w -- UPDATE ("write")
+                  a -- INSERT ("append")
+                  d -- DELETE
+                  R -- RULE
+                  x -- REFERENCES
+                  t -- TRIGGER
+                  X -- EXECUTE
+                  U -- USAGE
+                  C -- CREATE
+                  T -- TEMPORARY
+            arwdRxt -- ALL PRIVILEGES (for tables)
+                  * -- grant option for preceding privilege
+
+              /yyyy -- user who granted this privilege
+.sp
+.fi
+The above example display would be seen by user miriam after
+creating table mytable and doing
+.sp
+.nf
+GRANT SELECT ON mytable TO PUBLIC;
+GRANT SELECT, UPDATE, INSERT ON mytable TO GROUP todos;
+.sp
+.fi
+.PP
+If the ``Access privileges'' column is empty for a given object,
+it means the object has default privileges (that is, its privileges column
+is null). Default privileges always include all privileges for the owner,
+and may include some privileges for PUBLIC depending on the
+object type, as explained above. The first \fBGRANT\fR or
+\fBREVOKE\fR on an object
+will instantiate the default privileges (producing, for example,
+{=,miriam=arwdRxt}) and then modify them per the specified request.
+.SH "EXAMPLES"
+.PP
+Grant insert privilege to all users on table films:
+.sp
+.nf
+GRANT INSERT ON films TO PUBLIC;
+.sp
+.fi
+.PP
+Grant all privileges to user manuel on view kinds:
+.sp
+.nf
+GRANT ALL PRIVILEGES ON kinds TO manuel;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+According to the SQL standard, the PRIVILEGES
+key word in ALL PRIVILEGES is required. The
+SQL standard does not support setting the privileges on more than
+one object per command.
+.PP
+The SQL standard allows setting privileges for individual columns
+within a table:
+.sp
+.nf
+GRANT \fIprivileges\fR
+    ON \fItable\fR [ ( \fIcolumn\fR [, ...] ) ] [, ...]
+    TO { PUBLIC | \fIusername\fR [, ...] } [ WITH GRANT OPTION ]
+.sp
+.fi
+.PP
+The SQL standard provides for a USAGE privilege
+on other kinds of objects: character sets, collations,
+translations, domains.
+.PP
+The RULE privilege, and privileges on
+databases, schemas, languages, and sequences are
+PostgreSQL extensions.
+.SH "SEE ALSO"
+.PP
+REVOKE [\fBrevoke\fR(7)]
diff --git a/raw/man7/hier.7 b/raw/man7/hier.7
new file mode 100644
index 0000000..36aad2f
--- /dev/null
+++ b/raw/man7/hier.7
@@ -0,0 +1,471 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sun Jul 25 11:05:58 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sat Feb 10 16:18:03 1996 by Urs Thuermann (urs at isnogud.escape.de)
+.\" Modified Mon Jun 16 20:02:00 1997 by Nicol?s Lichtmaier <nick at debian.org>
+.\" Modified Mon Feb  6 16:41:00 1999 by Nicol?s Lichtmaier <nick at debian.org>
+.\" Modified Tue Feb  8 16:46:45 2000 by Chris Pepper <pepper at tgg.com>
+.\" Modified Fri Sep  7 20:32:45 2001 by Tammy Fox <tfox at redhat.com>
+.TH HIER 7  2001-09-07 "Linux" "Linux Programmer's Manual"
+.SH NAME
+hier \- Description of the file system hierarchy
+.SH DESCRIPTION
+A typical Linux system has, among others, the following directories:
+.TP
+.I /
+This is the root directory.  This is where the whole tree starts.
+.TP
+.I /bin
+This directory contains executable programs which are needed in
+single user mode and to bring the system up or repair it.
+.TP
+.I /boot
+Contains static files for the boot loader.  This directory only holds
+the files which are needed during the boot process.  The map installer
+and configuration files should go to
+.I /sbin
+and
+.IR /etc .
+.TP
+.I /dev
+Special or device files, which refer to physical devices.  See
+mknod(1).
+.TP
+.I /dos
+If both MS\-DOS and Linux are run on one computer, this is a typical
+place to mount a DOS file system.
+.TP
+.I /etc
+Contains configuration files which are local to the machine.  Some
+larger software packages, like X11, can have their own subdirectories
+below
+.IR /etc .
+Site-wide configuration files may be placed here or in
+.IR /usr/etc .
+Nevertheless, programs should always look for these files in
+.I /etc
+and you may have links for these files to
+.IR /usr/etc .
+.TP
+.I /etc/opt
+Host-specific configuration files for add-on applications installed
+in 
+.IR /opt .
+.TP
+.I /etc/sgml
+This directory contains the configuration files for SGML and XML (optional).
+.TP
+.I /etc/skel
+When a new user account is created, files from this directory are
+usually copied into the user's home directory.
+.TP
+.I /etc/X11
+Configuration files for the X11 window system (optional).
+.TP
+.I /home
+On machines with home directories for users, these are usually beneath
+this directory, directly or not.  The structure of this directory
+depends on local administration decisions.
+.TP
+.I /lib
+This directory should hold those shared libraries that are necessary
+to boot the system and to run the commands in the root filesystem.
+.TP
+.I /mnt
+This directory contains mount points for temporarily mounted filesystems
+.TP
+.I /opt
+This directory should contain add-on packages that contain static files.
+.TP
+.I /proc
+This is a mount point for the
+.I proc
+filesystem, which provides information about running processes and
+the kernel.  This pseudo-file system is described in more detail in
+.BR proc (5).
+.TP
+.I /root
+This directory is usually the home directory for the root user (optional).
+.TP
+.I /sbin
+Like
+.IR /bin ,
+this directory holds commands needed to boot the system, but which are
+usually not executed by normal users.
+.TP
+.I /tmp
+This directory contains temporary files which may be deleted with no
+notice, such as by a regular job or at system boot up.
+.TP
+.I /usr
+This directory is usually mounted from a separate partition.  It
+should hold only sharable, read-only data, so that it can be mounted
+by various machines running Linux.
+.TP
+.I /usr/X11R6
+The X\-Window system, version 11 release 6 (optional).
+.TP
+.I /usr/X11R6/bin
+Binaries which belong to the X\-Windows system; often, there is a
+symbolic link from the more traditional
+.I /usr/bin/X11
+to here.
+.TP
+.I /usr/X11R6/lib
+Data files associated with the X\-Windows system.
+.TP
+.I /usr/X11R6/lib/X11
+These contain miscellaneous files needed to run X;  Often, there is a
+symbolic link from 
+.I /usr/lib/X11
+to this directory.
+.TP
+.I /usr/X11R6/include/X11
+Contains include files needed for compiling programs using the X11
+window system.  Often, there is a symbolic link from
+.I /usr/include/X11
+to this directory.
+.TP
+.I /usr/bin
+This is the primary directory for executable programs.  Most programs
+executed by normal users which are not needed for booting or for
+repairing the system and which are not installed locally should be
+placed in this directory.
+.TP
+.I /usr/bin/X11
+is the traditional place to look for X11 executables; on Linux, it
+usually is a symbolic link to
+.IR /usr/X11R6/bin .
+.TP
+.I /usr/dict
+Replaced by
+.IR /usr/share/dict .
+.TP
+.I /usr/doc
+Replaced by
+.IR /usr/share/doc .
+.TP
+.I /usr/etc
+Site-wide configuration files to be shared between several machines
+may be stored in this directory.  However, commands should always
+reference those files using the
+.I /etc
+directory.  Links from files in
+.I /etc
+should point to the appropriate files in
+.IR /usr/etc .
+.TP
+.I /usr/games
+Binaries for games and educational programs (optional).
+.TP
+.I /usr/include
+Include files for the C compiler.
+.TP
+.I /usr/include/X11
+Include files for the C compiler and the X\-Windows system.  This is
+usually a symbolic link to
+.I /usr/X11R6/include/X11.
+.TP
+.I /usr/include/asm
+Include files which declare some assembler functions.  This used to be a
+symbolic link to
+.IR /usr/src/linux/include/asm .
+.TP
+.I /usr/include/linux
+This contains information which may change from system release to
+system release and used to be a symbolic link to
+.I /usr/src/linux/include/linux
+to get at operating system specific information.
+
+(Note that one should have include files there that work correctly with
+the current libc and in user space. However, Linux kernel source is not
+designed to be used with user programs and does not know anything
+about the libc you are using. It is very likely that things will break
+if you let
+.I /usr/include/asm
+and
+.I /usr/include/linux
+point at a random kernel tree. Debian systems don't do this
+and use headers from a known good kernel
+version, provided in the libc*-dev package.)
+.TP
+.I /usr/include/g++
+Include files to use with the GNU C++ compiler.
+.TP
+.I /usr/lib
+Object libraries, including dynamic libraries, plus some executables
+which usually are not invoked directly.  More complicated programs may
+have whole subdirectories there.
+.TP
+.I /usr/lib/X11
+The usual place for data files associated with X programs, and
+configuration files for the X system itself.  On Linux, it usually is
+a symbolic link to
+.IR /usr/X11R6/lib/X11 .
+.TP
+.I /usr/lib/gcc-lib
+contains executables and include files for the GNU C compiler,
+.BR gcc (1).
+.TP
+.I /usr/lib/groff
+Files for the GNU groff document formatting system.
+.TP
+.I /usr/lib/uucp
+Files for 
+.BR uucp (1).
+.TP
+.I /usr/local
+This is where programs which are local to the site typically go.
+.TP
+.I /usr/local/bin
+Binaries for programs local to the site.
+.TP
+.I /usr/local/doc
+Local documentation.
+.TP
+.I /usr/local/etc
+Configuration files associated with locally installed programs.
+.TP
+.I /usr/local/games
+Binaries for locally installed games.
+.TP
+.I /usr/local/lib
+Files associated with locally installed programs.
+.TP
+.I /usr/local/include
+Header files for the local C compiler.
+.TP
+.I /usr/local/info
+Info pages associated with locally installed programs.
+.TP
+.I /usr/local/man
+Man pages associated with locally installed programs.
+.TP
+.I /usr/local/sbin
+Locally installed programs for system administration.
+.TP
+.I /usr/local/share
+Local application data that can be shared among different architectures
+of the same OS.
+.TP
+.I /usr/local/src
+Source code for locally installed software.
+.TP
+.I /usr/man
+Replaced by 
+.IR /usr/share/man .
+.TP
+.I /usr/sbin
+This directory contains program binaries for system administration
+which are not essential for the boot process, for mounting
+.IR /usr ,
+or for system repair.
+.TP
+.I /usr/share
+This directory contains subdirectories with specific application data, that
+can be shared among different architectures of the same OS.
+Often one finds stuff here that used to live in
+.I /usr/doc
+or
+.I /usr/lib
+or
+.IR /usr/man .
+.TP
+.I /usr/share/dict
+Contains the word lists used by spell checkers.
+.TP 
+.I /usr/share/doc
+Documentation about installed programs.
+.TP
+.I /usr/share/games
+Static data files for games in
+.IR /usr/games .
+.TP
+.I /usr/share/info
+Info pages go here.
+.TP
+.I /usr/share/locale
+Locale information goes here.
+.TP
+.I /usr/share/man
+Manpages go here in subdirectories according to the man page sections.
+.TP
+.I /usr/share/man/<locale>/man[1-9]
+These directories contain manual pages for the specific locale in source code
+form. Systems which use a unique language and code set for all manual pages 
+may omit the <locale> substring.
+.TP
+.I /usr/share/misc
+Miscellaneous data that can be shared among different architectures of the
+same OS.
+.TP
+.I /usr/share/nls
+The message catalogs for native language support go here.
+.TP
+.I /usr/share/sgml
+Files for SGML and XML.
+.TP
+.I /usr/share/terminfo
+The datebase for terminfo.
+.TP
+.I /usr/share/tmac
+Troff macros that are not distributed with groff.
+.TP
+.I /usr/share/zoneinfo
+Files for timezone information.
+.TP
+.I /usr/src
+Source files for different parts of the system, included with some packages
+for reference purposes. Don't work here with your own projects, as files
+below /usr should be read-only except when installing software.
+.TP
+.I /usr/src/linux
+This was the traditional place for the kernel source.
+Some distributions put here the source for the default kernel they ship.
+You should probably use another directory when building your own kernel.
+.TP
+.I /usr/tmp
+Obsolete. This should be a link
+to
+.IR /var/tmp .
+This link is present only for compatibility reasons and shouldn't be used.
+.TP
+.I /var
+This directory contains files which may change in size, such as spool
+and log files.
+.TP
+.I /var/adm
+This directory is superseded by
+.I /var/log
+and should be a symbolic link to
+.IR /var/log .
+.TP
+.I /var/backups
+Reserved for historical reasons.
+.TP
+.I /var/cache
+Data cached for programs.
+.TP
+.IR /var/catman/cat[1-9] " or " /var/cache/man/cat[1-9]
+These directories contain preformatted manual pages according to their
+man page section. (The use of preformatted manual pages is deprecated.)
+.TP
+.I /var/cron
+Reserved for historical reasons.
+.TP
+.I /var/lib
+Variable state information for programs.
+.TP
+.I /var/local
+Variable data for
+.IR /usr/local .
+.TP
+.I /var/lock
+Lock files are placed in this directory.  The naming convention for
+device lock files is
+.I LCK..<device>
+where
+.I <device>
+is the device's name in the filesystem.
+The format used is that of HDU UUCP lock files, i.e. lock files
+contain a PID as a 10-byte ASCII decimal number, followed by a newline
+character.
+.TP
+.I /var/log
+Miscellaneous log files.
+.TP
+.I /var/opt
+Variable data for 
+.IR /opt .
+.TP
+.I /var/mail
+Users' mailboxes. Replaces 
+.IR /var/spool/mail .
+.TP
+.I /var/msgs
+Reserved for historical reasons.
+.TP
+.I /var/preserve
+Reserved for historical reasons.
+.TP
+.I /var/run
+Run-time variable files, like files holding process identifiers (PIDs)
+and logged user information
+.IR (utmp) .
+Files in this directory are usually cleared when the system boots.
+.TP
+.I /var/spool
+Spooled (or queued) files for various programs.
+.TP
+.I /var/spool/at
+Spooled jobs for
+.BR at (1).
+.TP
+.I /var/spool/cron
+Spooled jobs for
+.BR cron (1).
+.TP
+.I /var/spool/lpd
+Spooled files for printing.
+.TP
+.I /var/spool/mail
+Replaced by 
+.IR /var/mail .
+.TP
+.I /var/spool/mqueue
+Queued outgoing mail.
+.TP
+.I /var/spool/news
+Spool directory for news.
+.TP
+.I /var/spool/rwho
+Spooled files for 
+.BR rwhod (8).
+.TP
+.I /var/spool/smail
+Spooled files for the
+.BR smail (1)
+mail delivery program.
+.TP
+.I /var/spool/uucp
+Spooled files for
+.BR uucp (1).
+.TP
+.I /var/tmp
+Like
+.IR /tmp ,
+this directory holds temporary files stored for an unspecified duration.
+.TP
+.I /var/yp
+Database files for NIS.
+.SH "CONFORMS TO"
+The Filesystem Hierarchy Standard, Version 2.2 <http://www.pathname.com/fhs/>
+.SH BUGS
+This list is not exhaustive; different systems may be configured
+differently.
+.SH "SEE ALSO"
+.BR find (1),
+.BR ln (1),
+.BR mount (1),
+.BR proc (5),
+The Filesystem Hierarchy Standard
diff --git a/raw/man7/icmp.7 b/raw/man7/icmp.7
new file mode 100644
index 0000000..4092d0e
--- /dev/null
+++ b/raw/man7/icmp.7
@@ -0,0 +1,115 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.TH ICMP 7 1999-04-27 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+icmp, IPPROTO_ICMP \- Linux IPv4 ICMP kernel module. 
+.SH DESCRIPTION
+This kernel protocol module implements the Internet Control Message Protocol 
+defined in RFC792. It is used to signal error conditions and for diagnosis.
+The user doesn't interact directly with this module; instead it communicates
+with the other protocols in the kernel and these pass the ICMP 
+errors to the application layers. The kernel ICMP module also
+answers ICMP requests.
+.PP
+A user protocol may receive ICMP packets for all local sockets by opening
+a raw socket with the protocol 
+.BR IPPROTO_ICMP .
+See
+.BR raw (7)
+for more information.
+The types of ICMP packets passed to the socket can be filtered using the
+.B ICMP_FILTER 
+socket option. ICMP packets are always processed by the kernel too, even
+when passed to a user socket.
+.LP
+Linux limits the rate of ICMP error packets to each destination.
+.B ICMP_REDIRECT
+and
+.B ICMP_DEST_UNREACH
+are also limited by the destination route of the incoming packets.
+.SH SYSCTLS
+ICMP supports a sysctl interface to configure some global IP parameters.
+The sysctls can be accessed by reading or writing the 
+.B /proc/sys/net/ipv4/* 
+files or with the 
+.BR sysctl (2)
+interface. Most of these sysctls are rate limitations for specific ICMP types.
+Linux 2.2 uses a token bucket filter to limit ICMPs. 
+.\" XXX  better description needed
+The value is the timeout in jiffies until the token bucket filter is cleared
+after a burst. A jiffy is a system dependent unit, usually 10ms on x86 and
+about 1ms on alpha and IA64.
+.TP
+.B icmp_destunreach_rate
+Maximum rate to send ICMP Destination Unreachable packets.  This limits the
+rate at which packets are sent to any individual route or destination.
+The limit does not affect sending of
+.B ICMP_FRAG_NEEDED
+packets needed for path MTU discovery.
+.TP
+.B icmp_echo_ignore_all
+If this value is non-zero, Linux will ignore all
+.B ICMP_ECHO
+requests. 
+.TP
+.B icmp_echo_ignore_broadcasts
+If this value is non-zero, Linux will ignore all
+.B ICMP_ECHO
+packets sent to broadcast addresses. 
+.TP
+.B icmp_echoreply_rate
+Maximum rate for sending
+.B ICMP_ECHOREPLY
+packets in response to 
+.B ICMP_ECHOREQUEST
+packets.
+.TP
+.B icmp_paramprob_rate
+Maximum rate for sending
+.B ICMP_PARAMETERPROB
+packets.
+These packets are sent when a packet arrives with an invalid IP header.
+.TP
+.B icmp_timeexceed_rate
+Maximum rate for sending
+.B ICMP_TIME_EXCEEDED
+packets.  These packets are
+sent to prevent loops when a packet has crossed too many hops. 
+.SH NOTES
+As many other implementations don't support 
+.B IPPROTO_ICMP 
+raw sockets, this feature
+should not be relied on in portable programs.
+.\" not really true ATM
+.\" .PP
+.\" Linux ICMP should be compliant to RFC1122.
+.PP
+.B ICMP_REDIRECT
+packets are not sent when Linux is not acting as a router.
+They are also only accepted from the old gateway defined in the routing table and
+the redirect routes are expired after some time.
+.PP
+The 64-bit timestamp returned by
+.B ICMP_TIMESTAMP
+is in milliseconds since January 1, 1970.
+.PP
+Linux ICMP internally uses a raw socket to send ICMPs. This raw socket
+may appear in
+.BR netstat (8)
+output with a zero inode.
+.PP
+.SH VERSIONS
+Support for the
+.B ICMP_ADDRESS
+request was removed in 2.2.
+.PP
+Support for
+.B ICMP_SOURCE_QUENCH
+was removed in Linux 2.2.
+.SH "SEE ALSO"
+.BR ip (7)
+.PP
+RFC792 for a description of the ICMP protocol.
diff --git a/raw/man7/insert.7 b/raw/man7/insert.7
new file mode 100644
index 0000000..5674b52
--- /dev/null
+++ b/raw/man7/insert.7
@@ -0,0 +1,122 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "INSERT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+INSERT \- create new rows in a table
+
+.SH SYNOPSIS
+.sp
+.nf
+INSERT INTO \fItable\fR [ ( \fIcolumn\fR [, ...] ) ]
+    { DEFAULT VALUES | VALUES ( { \fIexpression\fR | DEFAULT } [, ...] ) | \fIquery\fR }
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBINSERT\fR allows one to insert new rows into a
+table. One can insert
+a single row at a time or several rows as a result of a query.
+.PP
+The columns in the target list may be listed in any order.
+Each column not present in the target list will be inserted
+using a default value, either its declared default value
+or null.
+.PP
+If the expression for each column is not of the correct data type,
+automatic type conversion will be attempted.
+.PP
+You must have INSERT privilege to a table in
+order to insert into it. If you use the \fIquery\fR clause to insert rows from a
+query, you also need to have SELECT privilege on
+any table used in the query.
+.SH "PARAMETERS"
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of an existing table.
+.TP
+\fB\fIcolumn\fB\fR
+The name of a column in \fItable\fR.
+.TP
+\fBDEFAULT VALUES\fR
+All columns will be filled with their default values.
+.TP
+\fB\fIexpression\fB\fR
+An expression or value to assign to \fIcolumn\fR.
+.TP
+\fBDEFAULT\fR
+This column will be filled with its default value.
+.TP
+\fB\fIquery\fB\fR
+A query (\fBSELECT\fR statement) that supplies the
+rows to be inserted. Refer to the \fBSELECT\fR
+statement for a description of the syntax.
+.SH "OUTPUTS"
+.PP
+On successful completion, an \fBINSERT\fR command returns a command
+tag of the form
+.sp
+.nf
+INSERT \fIoid\fR \fIcount\fR
+.sp
+.fi
+The \fIcount\fR is the number
+of rows inserted. If \fIcount\fR
+is exactly one, and the target table has OIDs, then
+\fIoid\fR is the
+OID assigned to the inserted row. Otherwise
+\fIoid\fR is zero.
+.SH "EXAMPLES"
+.PP
+Insert a single row into table films:
+.sp
+.nf
+INSERT INTO films VALUES
+    ('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');
+.sp
+.fi
+.PP
+In this second example, the last column len is
+omitted and therefore it will have the default value of null:
+.sp
+.nf
+INSERT INTO films (code, title, did, date_prod, kind)
+    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');
+.sp
+.fi
+.PP
+The third example uses the DEFAULT clause for
+the date columns rather than specifying a value:
+.sp
+.nf
+INSERT INTO films VALUES
+    ('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes');
+INSERT INTO films (code, title, did, date_prod, kind)
+    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');
+.sp
+.fi
+.PP
+This examples inserts several rows into table
+films from table tmp:
+.sp
+.nf
+INSERT INTO films SELECT * FROM tmp;
+.sp
+.fi
+.PP
+This example inserts into array columns:
+.sp
+.nf
+-- Create an empty 3x3 gameboard for noughts-and-crosses
+-- (all of these commands create the same board)
+INSERT INTO tictactoe (game, board[1:3][1:3])
+    VALUES (1,'{{"","",""},{},{"",""}}');
+INSERT INTO tictactoe (game, board[3][3])
+    VALUES (2,'{}');
+INSERT INTO tictactoe (game, board)
+    VALUES (3,'{{,,},{,,},{,,}}');
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBINSERT\fR conforms fully to the SQL standard.
+Possible limitations of the \fIquery\fR clause are documented under
+SELECT [\fBselect\fR(7)].
diff --git a/raw/man7/ip.7 b/raw/man7/ip.7
new file mode 100644
index 0000000..b66c3f2
--- /dev/null
+++ b/raw/man7/ip.7
@@ -0,0 +1,918 @@
+'\" t
+.\" Don't change the line above. it tells man that tbl is needed.
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: ip.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH IP  7 2001-06-19 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+ip \- Linux IPv4 protocol implementation
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.\" .B #include <net/netinet.h> -- does not exist anymore
+.\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
+.B #include <netinet/in.h>
+.sp
+.IB tcp_socket " = socket(PF_INET, SOCK_STREAM, 0);"
+.br 
+.IB raw_socket " = socket(PF_INET, SOCK_RAW, " protocol ");"
+.br
+.IB udp_socket " = socket(PF_INET, SOCK_DGRAM, " protocol ");"
+.SH DESCRIPTION
+Linux implements the Internet Protocol, version 4, 
+described in RFC791 and RFC1122. 
+.B ip 
+contains a level 2 
+multicasting implementation conforming to RFC1112.  It also contains an IP 
+router including a packet filter.
+.\" XXX: has someone verified that 2.1 is really 1812 compliant?
+.PP
+The programmer's interface is BSD sockets compatible.
+For more information on sockets, see 
+.BR socket (7). 
+.PP
+An IP socket is created by calling the
+.BR socket (2) 
+function as 
+.BR "socket(PF_INET, socket_type, protocol)" .
+Valid socket types are 
+.B SOCK_STREAM 
+to open a 
+.BR tcp (7) 
+socket, 
+.B SOCK_DGRAM
+to open a
+.BR udp (7)
+socket, or
+.B SOCK_RAW
+to open a 
+.BR raw (7)
+socket to access the IP protocol directly. 
+.I protocol 
+is the IP protocol in the IP header to be received or sent.  The only valid
+values for
+.I protocol
+are
+.B 0
+and
+.B IPPROTO_TCP
+for TCP sockets and
+.B 0
+and
+.B IPPROTO_UDP 
+for UDP sockets.  For 
+.B SOCK_RAW 
+you may specify
+a valid IANA IP protocol defined in 
+RFC1700
+assigned numbers.
+.PP
+.\" XXX ip current does an autobind in listen, but I'm not sure if that should
+.\" be documented.
+When a process wants to receive new incoming packets or connections, it 
+should bind a socket to a local interface address using
+.BR bind (2).
+Only one IP socket may be bound to any given local (address, port) pair.
+When 
+.B INADDR_ANY 
+is specified in the bind call the socket will be bound to
+.I all
+local interfaces. When 
+.BR listen (2)
+or
+.BR connect (2)
+are called on a unbound socket the socket is automatically bound to a
+random free port with the local address set to
+.BR INADDR_ANY .
+
+A TCP local socket address that has been bound is unavailable for some time after closing,
+unless the 
+.B SO_REUSEADDR
+flag has been set.  Care should be taken when using this flag as it
+makes TCP less reliable.  
+
+.SH "ADDRESS FORMAT"
+An IP socket address is defined as a combination of an IP interface address
+and a port number. The basic IP protocol does not supply port numbers, they
+are implemented by higher level protocols like 
+.BR udp (7)
+and
+.BR tcp (7).
+On raw sockets
+.B sin_port
+is set to the IP protocol.
+
+.PP
+.RS
+.nf
+.ta 4n 19n 31n
+struct sockaddr_in {
+	sa_family_t	sin_family;	/* address family: AF_INET */
+	u_int16_t	sin_port;	/* port in network byte order */
+	struct in_addr  sin_addr;	/* internet address */
+};
+
+/* Internet address. */
+struct in_addr {
+	u_int32_t	s_addr;	/* address in network byte order */
+};
+.ta
+.fi
+.RE
+.PP
+.I sin_family 
+is always set to 
+.BR AF_INET . 
+This is required; in Linux 2.2 most networking functions return 
+.B EINVAL
+when this setting is missing.
+.I sin_port
+contains the port in network byte order. The port numbers below 1024 are called
+.IR "reserved ports" .
+Only processes with effective user id 0 or the 
+.B CAP_NET_BIND_SERVICE 
+capability may 
+.BR bind (2)  
+to these sockets. Note that the raw IPv4 protocol as such has no concept of a 
+port, they are only implemented by higher protocols like
+.BR tcp (7)
+and
+.BR udp (7).
+.PP
+.I sin_addr 
+is the IP host address.
+The 
+.I addr
+member of 
+.B struct in_addr
+contains the host interface address in network order. 
+.B in_addr 
+should be only accessed using the
+.BR inet_aton (3),
+.BR inet_addr (3),
+.BR inet_makeaddr (3)
+library functions or directly with the name resolver (see
+.BR gethostbyname (3)).
+IPv4 addresses are divided into unicast, broadcast 
+and multicast addresses. Unicast addresses specify a single interface of a host,
+broadcast addresses specify all hosts on a network and multicast addresses 
+address all hosts in a multicast group. Datagrams to broadcast addresses
+can be only sent or received when the 
+.B SO_BROADCAST
+socket flag is set.
+In the current implementation connection oriented sockets are only allowed 
+to use unicast addresses.
+.\" Leave a loophole for XTP @)
+
+Note that the address and the port are always stored in network order.
+In particular, this means that you need to call
+.BR htons (3) 
+on the number that is assigned to a port. All address/port manipulation 
+functions in the standard library work in network order.
+
+There are several special addresses: 
+.B INADDR_LOOPBACK
+(127.0.0.1)
+always refers to the local host via the loopback device;
+.B INADDR_ANY 
+(0.0.0.0)
+means any address for binding;
+.B INADDR_BROADCAST
+(255.255.255.255)
+means any host and has the same effect on bind as 
+.B INADDR_ANY
+for historical reasons.
+
+.SH "SOCKET OPTIONS"
+
+IP supports some protocol specific socket options that can be set with
+.BR setsockopt (2)
+and read with
+.BR getsockopt (2).
+The socket option level for IP is 
+.BR SOL_IP .
+A boolean integer flag is zero when it is false, otherwise true.
+
+.TP
+.B IP_OPTIONS
+Sets or get the IP options to be sent with every packet from this
+socket.  The arguments are a pointer to a memory buffer containing the options 
+and the option length.
+The
+.BR setsockopt (2)
+call sets the IP options associated with a socket.
+The maximum option size for IPv4 is 40 bytes. See RFC791 for the allowed
+options. When the initial connection request packet for a
+.B SOCK_STREAM
+socket contains IP options, the IP options will be set automatically
+to the options from the initial packet with routing headers reversed.
+Incoming packets are not allowed to change options after the connection
+is established.
+The processing of all incoming source routing options
+is disabled by default and can be enabled by using the
+.B accept_source_route
+sysctl.  Other options like timestamps are still handled.
+For datagram sockets, IP options can be only set by the local user.
+Calling
+.BR getsockopt (2)
+with
+.I IP_OPTIONS
+puts the current IP options used for sending into the supplied buffer.
+
+.TP
+.B IP_PKTINFO
+Pass an
+.I IP_PKTINFO
+ancillary message that contains a 
+.B pktinfo 
+structure that supplies some information about the incoming packet.
+This only works for datagram oriented sockets.
+The argument is a flag that tells the socket whether the IP_PKTINFO message
+should be passed or not. The message itself can only be sent/retrieved
+as control message with a packet using
+.BR recvmsg (2)
+or
+.BR sendmsg (2).
+
+.IP
+.RS
+.ta 4n 19n 33n
+.nf
+struct in_pktinfo {
+	unsigned int	ipi_ifindex; 	/* Interface index */
+	struct in_addr	ipi_spec_dst;	/* Local address */
+	struct in_addr	ipi_addr;	/* Header Destination address */
+};
+.fi
+.RE
+.IP
+.\" XXX elaborate on that.
+.B ipi_ifindex
+is the unique index of the interface the packet was received on.
+.B ipi_spec_dst
+is the local address of the packet and
+.B ipi_addr
+is the destination address in the packet header.
+If
+.I IP_PKTINFO 
+is passed to
+.BR sendmsg (2)
+and
+.\" This field is grossly misnamed
+.B ipi_spec_dst
+is not zero, then it is used as the local source address for the routing
+table lookup and for setting up IP source route options.
+When
+.B ipi_ifindex
+is not zero the primary local address of the interface specified by the
+index overwrites
+.I ipi_spec_dst
+for the routing table lookup.
+.TP
+.B IP_RECVTOS
+If enabled the 
+.I IP_TOS 
+ancillary message is passed with incoming packets. It contains a byte which
+specifies the Type of Service/Precedence field of the packet header.
+Expects a boolean integer flag. 
+
+.TP
+.B IP_RECVTTL
+When this flag is set
+pass a 
+.I IP_RECVTTL 
+control message with the time to live 
+field of the received packet as a byte. Not supported for
+.B SOCK_STREAM
+sockets.
+
+.TP
+.B IP_RECVOPTS
+Pass all incoming IP options to the user in a
+.I IP_OPTIONS 
+control message. The routing header and other options are already filled in
+for the local host. Not supported for
+.I SOCK_STREAM 
+sockets.
+
+.TP
+.B IP_RETOPTS
+Identical to 
+.I IP_RECVOPTS
+but returns raw unprocessed options with timestamp and route record
+options not filled in for this hop.
+
+.TP
+.B IP_TOS
+Set or receive the Type-Of-Service (TOS) field that is sent with every IP packet 
+originating from this socket. It is used to prioritize packets on the network.
+TOS is a byte. There are some standard TOS flags defined:
+.B IPTOS_LOWDELAY 
+to minimize delays for interactive traffic,
+.B IPTOS_THROUGHPUT
+to optimize throughput,
+.B IPTOS_RELIABILITY
+to optimize for reliability,
+.B IPTOS_MINCOST
+should be used for "filler data" where slow transmission doesn't matter.
+At most one of these TOS values can be specified. Other bits are invalid and
+shall be cleared.
+Linux sends 
+.B IPTOS_LOWDELAY 
+datagrams first by default,
+but the exact behaviour depends on the configured queueing discipline. 
+.\" XXX elaborate on this 
+Some high priority levels may require an effective user id of 0 or the
+.B CAP_NET_ADMIN
+capability.
+The priority can also be set in a protocol independent way by the
+.RB ( SOL_SOCKET ", " SO_PRIORITY )
+socket option (see
+.BR socket (7)). 
+
+.TP  
+.B IP_TTL
+Set or retrieve the current time to live field that is send in every packet
+send from this socket.
+
+.TP
+.B IP_HDRINCL
+If enabled 
+the user supplies an ip header in front of the user data. Only valid
+for 
+.B SOCK_RAW  
+sockets. See
+.BR raw (7)
+for more information. When this flag is enabled the values set by
+.IR IP_OPTIONS ,
+.I IP_TTL
+and
+.I IP_TOS
+are ignored.
+
+.TP
+.BR IP_RECVERR " (defined in <linux/errqueue.h>)"
+Enable extended reliable error message passing. 
+When enabled on a datagram socket all
+generated errors will be queued in a per-socket error queue. When the user
+receives an error from a socket operation the errors can
+be received by calling 
+.BR recvmsg (2) 
+with the 
+.B MSG_ERRQUEUE 
+flag set. The 
+.B sock_extended_err 
+structure describing the error will be passed in a ancillary message with 
+the type 
+.I IP_RECVERR 
+and the level 
+.BR SOL_IP . 
+This is useful for reliable error handling on unconnected sockets.
+The received data portion of the error queue
+contains the error packet.
+.IP
+The 
+.I IP_RECVERR 
+control message contains a 
+.B sock_extended_err
+structure:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 20n 32n
+#define SO_EE_ORIGIN_NONE	0
+#define SO_EE_ORIGIN_LOCAL	1
+#define SO_EE_ORIGIN_ICMP	2
+#define SO_EE_ORIGIN_ICMP6	3
+
+struct sock_extended_err {
+	u_int32_t	ee_errno;	/* error number */
+	u_int8_t	ee_origin;	/* where the error originated */ 
+	u_int8_t	ee_type;	/* type */
+	u_int8_t	ee_code;	/* code */
+	u_int8_t	ee_pad;
+	u_int32_t	ee_info;	/* additional information */
+	u_int32_t	ee_data;	/* other data */  
+	/* More data may follow */ 
+};
+
+struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
+.ta
+.fi
+.RE
+.IP
+.B ee_errno 
+contains the errno number of the queued error. 
+.B ee_origin
+is the origin code of where the error originated. 
+The other fields are protocol specific. The macro
+.B SO_EE_OFFENDER 
+returns a pointer to the address of the network object
+where the error originated from given a pointer to the ancillary message.
+If this address is not known, the
+.I sa_family 
+member of the 
+.B sockaddr 
+contains 
+.B AF_UNSPEC
+and the other fields of the 
+.B sockaddr 
+are undefined. 
+.IP
+IP uses the 
+.B sock_extended_err
+structure as follows:
+.I ee_origin 
+is set to 
+.B SO_EE_ORIGIN_ICMP 
+for errors received as an ICMP packet, or
+.B SO_EE_ORIGIN_LOCAL 
+for locally generated errors. Unknown values should be ignored.
+.I ee_type 
+and 
+.I ee_code 
+are set from the type and code fields of the ICMP header.
+.I ee_info
+contains the discovered MTU for 
+.B EMSGSIZE 
+errors.  The message also contains the 
+.I sockaddr_in of the node
+caused the error, which can be accessed with the 
+.B SO_EE_OFFENDER
+macro. The 
+.I sin_family
+field of the SO_EE_OFFENDER address is 
+.I AF_UNSPEC
+when the source was unknown.
+When the error originated from the network, all IP options 
+.RI ( IP_OPTIONS ", " IP_TTL ", "
+etc.) enabled on the socket and contained in the 
+error packet are passed as control messages. The payload of the packet
+causing the error is returned as normal payload.
+.\" XXX: is it a good idea to document that? It is a dubious feature.
+.\" On 
+.\" .B SOCK_STREAM 
+.\" sockets,
+.\" .I IP_RECVERR 
+.\" has slightly different semantics. Instead of
+.\" saving the errors for the next timeout, it passes all incoming errors 
+.\" immediately to the 
+.\" user. This might be useful for very short-lived TCP connections which
+.\" need fast error handling. Use this option with care: it makes TCP unreliable
+.\" by not allowing it to recover properly from routing shifts and other normal
+.\" conditions and breaks the protocol specification. 
+Note that TCP has no error queue; 
+.B MSG_ERRQUEUE
+is illegal on 
+.B SOCK_STREAM 
+sockets. 
+Thus all errors are returned by socket function return or 
+.B SO_ERROR
+only. 
+.IP
+For raw sockets,
+.I IP_RECVERR 
+enables passing of all received ICMP errors to the
+application, otherwise errors are only reported on connected sockets
+.IP
+It sets or retrieves an integer boolean flag. 
+.I IP_RECVERR
+defaults to off. 
+
+.TP
+.B IP_MTU_DISCOVER
+Sets or receives the Path MTU Discovery setting
+for a socket. When enabled, Linux will perform Path MTU Discovery
+as defined in RFC1191
+on this socket. The don't fragment flag is set on all outgoing datagrams.
+The system-wide default is controlled by the 
+.B ip_no_pmtu_disc 
+sysctl for 
+.B SOCK_STREAM 
+sockets, and disabled on all others. For non
+.B SOCK_STREAM 
+sockets it is the user's responsibility to packetize the data 
+in MTU sized chunks and to do the retransmits if necessary. 
+The kernel will reject packets that are bigger than the known
+path MTU if this flag is set (with
+.B EMSGSIZE
+). 
+
+.TS
+tab(:);
+c l
+l l.
+Path MTU discovery flags:Meaning
+IP_PMTUDISC_WANT:Use per-route settings.
+IP_PMTUDISC_DONT:Never do Path MTU Discovery.
+IP_PMTUDISC_DO:Always do Path MTU Discovery. 
+.TE   
+
+
+When PMTU discovery is enabled the kernel automatically keeps track of
+the path MTU per destination host. 
+When it is connected to a specific peer with
+.BR connect (2)
+the currently known path MTU can be retrieved conveniently using the 
+.B IP_MTU 
+socket option (e.g. after a 
+.B EMSGSIZE 
+error occurred).  It may change over time. 
+For connectionless sockets with many destinations 
+the new also MTU for a given destination can also be accessed using the 
+error queue (see 
+.BR IP_RECVERR ).
+A new error will be queued for every incoming MTU update.
+
+While MTU discovery is in progress initial packets from datagram sockets
+may be dropped.  Applications using UDP should be aware of this and not
+take it into account for their packet retransmit strategy.
+
+To bootstrap the path MTU discovery process on unconnected sockets it
+is possible to start with a big datagram size
+(up to 64K-headers bytes long) and let it shrink by updates of the path MTU.
+.\" XXX this is an ugly hack
+
+To get an initial estimate of the
+path MTU connect a datagram socket to the destination address using
+.BR connect (2)
+and retrieve the MTU by calling
+.BR getsockopt (2)
+with the
+.B IP_MTU
+option.     
+
+.TP
+.B IP_MTU
+Retrieve the current known path MTU of the current socket. 
+Only valid when the socket has been connected. Returns an integer. Only valid
+as a 
+.BR getsockopt (2). 
+.\"
+.TP
+.B IP_ROUTER_ALERT
+Pass all to-be forwarded packets with the 
+IP Router Alert 
+option 
+set to this socket. Only valid for raw sockets. This is useful, for instance, for user
+space RSVP daemons. The tapped packets are not forwarded by the kernel, it is 
+the users responsibility to send them out again. Socket binding is ignored,
+such packets are only filtered by protocol.
+Expects an integer flag. 
+.\"
+.TP
+.B IP_MULTICAST_TTL
+Set or reads the time-to-live value of outgoing multicast packets for this
+socket. It is
+very important for multicast packets to set the smallest TTL possible. 
+The default is 1 which means that multicast packets don't leave the local
+network unless the user program explicitly requests it. Argument is an
+integer.
+.\"
+.TP
+.B IP_MULTICAST_LOOP
+Sets or reads a boolean integer argument whether sent multicast packets should be
+looped back to the local sockets.
+.\"
+.TP
+.B IP_ADD_MEMBERSHIP
+Join a multicast group. Argument is a 
+.B struct ip_mreqn
+structure. 
+.PP
+.RS
+.nf
+.ta 4n 19n 34n
+struct ip_mreqn {
+	struct in_addr	imr_multiaddr;	/* IP multicast group address */
+	struct in_addr	imr_address;	/* IP address of local interface */
+	int	imr_ifindex;	/* interface index */
+};
+.fi
+.RE
+.IP
+.I imr_multiaddr
+contains the address of the multicast group the application wants to join or leave.
+It must be a valid multicast address. 
+.I imr_address
+is the address of the local interface with which the system should join the multicast
+group; if it is equal to 
+.B INADDR_ANY
+an appropriate interface is chosen by the system.
+.I imr_ifindex
+is the interface index of the interface that should join/leave the
+.I imr_multiaddr 
+group, or 0 to indicate any interface. 
+.IP
+For compatibility, the old 
+.B ip_mreq 
+structure is still supported. It differs from 
+.B ip_mreqn 
+only by not including
+the 
+.I imr_ifindex 
+field. Only valid as a 
+.BR setsockopt (2).
+.\"
+.TP
+.B IP_DROP_MEMBERSHIP
+Leave a multicast group. Argument is an
+.B ip_mreqn 
+or 
+.B ip_mreq 
+structure similar to
+.IR IP_ADD_MEMBERSHIP . 
+.\"
+.TP
+.B IP_MULTICAST_IF
+Set the local device for a multicast socket. Argument is an
+.B ip_mreqn 
+or 
+.B ip_mreq 
+structure similar to 
+.IR IP_ADD_MEMBERSHIP .
+.IP
+When an invalid socket option is passed,
+.B ENOPROTOOPT
+is returned. 
+.SH SYSCTLS
+The IP protocol
+supports the sysctl interface to configure some global options. The sysctls
+can be accessed by reading or writing the 
+.B /proc/sys/net/ipv4/* 
+files or using the
+.BR sysctl (2)
+interface.
+.\"
+.TP
+.B ip_default_ttl 
+Set the default time-to-live value of outgoing packets. This can be changed
+per socket with the 
+.I IP_TTL 
+option.
+.\"
+.TP
+.B ip_forward
+Enable IP forwarding with a boolean flag. IP forwarding can be also set on a 
+per interface basis. 
+.\"
+.TP
+.B ip_dynaddr
+Enable dynamic socket address and masquerading entry rewriting on interface 
+address change. This is useful for dialup interface with changing IP addresses.
+0 means no rewriting, 1 turns it on and 2 enables verbose mode.
+.\"
+.TP
+.B ip_autoconfig
+Not documented.
+.\"
+.TP
+.B ip_local_port_range
+Contains two integers that define the default local port range allocated to
+sockets. Allocation starts with the first number and ends with the second number.
+Note that these should not conflict with the ports used by masquerading (although
+the case is handled). Also arbitary choices may cause problems with some
+firewall packet filters that make assumptions about the local ports in use.
+First number should be at least >1024, better >4096 to avoid clashes with well
+known ports and to minimize firewall problems. 
+.\"
+.TP
+.B ip_no_pmtu_disc
+If enabled, don't do Path MTU Discovery for TCP sockets by default. Path MTU
+discovery may fail if misconfigured firewalls (that drop all ICMP packets) or
+misconfigured interfaces (e.g., a point-to-point link where the both ends don't
+agree on the MTU) are on the path. It is better to fix the broken routers on
+the path than to turn off Path MTU Discovery globally, because not doing it
+incurs a high cost to the network.
+.\"
+.TP
+.BR ipfrag_high_thresh ", " ipfrag_low_thresh 
+If the amount of queued IP fragments reaches 
+.BR ipfrag_high_thresh ,
+the queue 
+is pruned down to 
+.BR ipfrag_low_thresh . 
+Contains an integer with the number of 
+bytes.
+.TP
+.B ip_always_defrag
+[New with Kernel 2.2.13; in earlier kernel version the feature was controlled
+at compile time by the
+.B CONFIG_IP_ALWAYS_DEFRAG 
+option]
+
+When this boolean frag is enabled (not equal 0) incoming fragments 
+(parts of IP packets
+that arose when some host between origin and destination decided
+that the packets were too large and cut them into pieces) will be
+reassembled (defragmented) before being processed, even if they are
+about to be forwarded.
+
+Only enable if running either a firewall that is the sole link
+to your network or a transparent proxy; never ever turn on here for a
+normal router or host. Otherwise fragmented communication may me disturbed
+when the fragments would travel over different links. Defragmentation
+also has a large memory and CPU time cost.
+
+This is automagically turned on when masquerading or transparent
+proxying are configured.
+.TP
+.B neigh/*
+See 
+.BR arp (7). 
+.\" XXX Document the conf/*/* sysctls 
+.\" XXX Document the route/* sysctls
+.\" XXX document them all
+.SH IOCTLS
+All ioctls described in
+.BR socket (7) 
+apply to ip.
+.PP 
+The ioctls to configure firewalling are documented in
+.BR ipfw (7)
+from the 
+.B ipchains 
+package.  
+.PP
+Ioctls to configure generic device parameters are described in 
+.BR netdevice (7).  
+.\" XXX Add a chapter about multicasting
+.SH NOTES
+Be very careful with the 
+.B SO_BROADCAST
+option \- it is not privileged in Linux. It is easy to overload the network
+with careless broadcasts. For new application protocols
+it is better to use a multicast group instead of broadcasting. Broadcasting
+is discouraged.   
+.PP
+Some other BSD sockets implementations provide 
+.I IP_RCVDSTADDR 
+and 
+.I IP_RECVIF 
+socket options to get the destination address and the interface of 
+received datagrams. Linux has the more general 
+.I IP_PKTINFO
+for the same task. 
+.PP
+.SH ERRORS
+.\" XXX document all errors. We should really fix the kernels to give more uniform
+.\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)  
+.TP
+.B ENOTCONN
+The operation is only defined on a connected socket, but the socket wasn't
+connected.
+.TP
+.B EINVAL
+Invalid argument passed. 
+For send operations this can be caused by sending to a 
+.I blackhole
+route.
+.TP
+.B EMSGSIZE 
+Datagram is bigger than an MTU on the path and it cannot be fragmented.
+.TP
+.B EACCES
+The user tried to execute an operation without the necessary permissions. 
+These include:
+Sending a packet to a broadcast address without having the 
+.B SO_BROADCAST
+flag set.
+Sending a packet via a 
+.I prohibit
+route.
+Modifying firewall settings without 
+.B CAP_NET_ADMIN
+or effective user id 0.
+Binding to a reserved port without the
+.B CAP_NET_BIND_SERVICE
+capacibility or effective user id 0. 
+
+.TP
+.B EADDRINUSE
+Tried to bind to an address already in use.
+.TP
+.BR ENOPROTOOPT " and " EOPNOTSUPP
+Invalid socket option passed.
+.TP
+.B EPERM
+User doesn't have permission to set high priority, change configuration,
+or send signals to the requested process or group.
+.TP
+.B EADDRNOTAVAIL
+A non-existent interface was requested or the requested source address was
+not local.
+.TP
+.B EAGAIN
+Operation on a non-blocking socket would block.
+.TP
+.B ESOCKTNOSUPPORT
+The socket is not configured or an unknown socket type was requested.
+.TP
+.B EISCONN
+.BR connect (2)
+was called on an already connected socket.
+.TP
+.B EALREADY
+An connection operation on a non-blocking socket is already in progress.
+.TP
+.B ECONNABORTED
+A connection was closed during an
+.BR accept (2). 
+.TP
+.B EPIPE
+The connection was unexpectedly closed or shut down by the other end.
+.TP
+.B ENOENT
+.B SIOCGSTAMP 
+was called on a socket where no packet arrived.
+.TP
+.B EHOSTUNREACH
+No valid routing table entry matches the destination address.  This error
+can be caused by a ICMP message from a remote router or for the local
+routing table.
+.TP
+.B ENODEV 
+Network device not available or not capable of sending IP.
+.TP
+.B ENOPKG 
+A kernel subsystem was not configured.
+.TP
+.BR ENOBUFS ", " ENOMEM
+Not enough free memory.  
+This often means that the memory allocation is limited by the socket buffer
+limits, not by the system memory, but this is not 100% consistent.
+.PP
+Other errors may be generated by the overlaying protocols; see
+.BR tcp (7),
+.BR raw (7),
+.BR udp (7)
+and
+.BR socket (7).
+.SH VERSIONS
+.IR IP_PKTINFO , 
+.IR IP_MTU , 
+.IR IP_MTU_DISCOVER , 
+.IR IP_PKTINFO , 
+.I IP_RECVERR
+and
+.I IP_ROUTER_ALERT
+are new options in Linux 2.2.
+They are also all Linux specific and should not be used in
+programs intended to be portable.
+.PP
+.B struct ip_mreqn 
+is new in Linux 2.2.  Linux 2.0 only supported 
+.BR ip_mreq .
+.PP
+The sysctls were introduced with Linux 2.2. 
+.SH COMPATIBILITY
+For compatibility with Linux 2.0, the obsolete 
+.BI "socket(PF_INET, SOCK_RAW, " protocol )
+syntax is still supported to open a 
+.BR packet (7) 
+socket. This is deprecated and should be replaced by
+.BI "socket(PF_PACKET, SOCK_RAW, " protocol )
+instead. The main difference is the
+new 
+.B sockaddr_ll 
+address structure for generic link layer information instead of the old 
+.BR sockaddr_pkt .
+.SH BUGS
+There are too many inconsistent error values. 
+.PP
+The ioctls to configure IP-specific interface options and ARP tables are
+not described.
+.PP
+Some versions of glibc forget to declare
+.IR in_pktinfo .
+Workaround currently is to copy it into your program from this man page.
+.PP
+Receiving the original destination address with
+.B MSG_ERRQUEUE
+in
+.I msg_name
+by
+.BR recvmsg (2)
+does not work in some 2.2 kernels.
+.SH AUTHORS
+This man page was written by Andi Kleen. 
+.SH "SEE ALSO"
+.BR sendmsg (2),
+.BR recvmsg (2),
+.BR socket (7),
+.BR netlink (7),
+.BR tcp (7),
+.BR udp (7),
+.BR raw (7),
+.BR ipfw (7)
+.PP
+RFC791 for the original IP specification.
+.br
+RFC1122 for the IPv4 host requirements.
+.br
+RFC1812 for the IPv4 router requirements.
+\"  LocalWords:  XXX autobind INADDR REUSEADDR
diff --git a/raw/man7/listen.7 b/raw/man7/listen.7
new file mode 100644
index 0000000..6f6af63
--- /dev/null
+++ b/raw/man7/listen.7
@@ -0,0 +1,66 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "LISTEN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+LISTEN \- listen for a notification
+
+.SH SYNOPSIS
+.sp
+.nf
+LISTEN \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBLISTEN\fR registers the current session as a
+listener on the notification condition \fIname\fR.
+If the current session is already registered as a listener for
+this notification condition, nothing is done.
+.PP
+Whenever the command \fBNOTIFY \fIname\fB\fR is invoked, either
+by this session or another one connected to the same database, all
+the sessions currently listening on that notification condition are
+notified, and each will in turn notify its connected client
+application. See the discussion of \fBNOTIFY\fR for
+more information.
+.PP
+A session can be unregistered for a given notify condition with the
+\fBUNLISTEN\fR command. A session's listen
+registrations are automatically cleared when the session ends.
+.PP
+The method a client application must use to detect notification events depends on
+which PostgreSQL application programming interface it
+uses. With the \fBlibpq\fR library, the application issues
+\fBLISTEN\fR as an ordinary SQL command, and then must
+periodically call the function \fBPQnotifies\fR to find out
+whether any notification events have been received. Other interfaces such as
+\fBlibpgtcl\fR provide higher-level methods for handling notify events; indeed,
+with \fBlibpgtcl\fR the application programmer should not even issue
+\fBLISTEN\fR or \fBUNLISTEN\fR directly. See the
+documentation for the interface you are using for more details.
+.PP
+NOTIFY [\fBnotify\fR(7)]
+contains a more extensive
+discussion of the use of \fBLISTEN\fR and
+\fBNOTIFY\fR.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+Name of a notify condition (any identifier).
+.SH "EXAMPLES"
+.PP
+Configure and execute a listen/notify sequence from
+\fBpsql\fR:
+.sp
+.nf
+LISTEN virtual;
+NOTIFY virtual;
+Asynchronous notification "virtual" received from server process with PID 8448.
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBLISTEN\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+NOTIFY [\fBnotify\fR(7)], UNLISTEN [\fBunlisten\fR(l)]
+
diff --git a/raw/man7/load.7 b/raw/man7/load.7
new file mode 100644
index 0000000..7e42ff1
--- /dev/null
+++ b/raw/man7/load.7
@@ -0,0 +1,33 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "LOAD" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+LOAD \- load or reload a shared library file
+
+.SH SYNOPSIS
+.sp
+.nf
+LOAD '\fIfilename\fR'
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+This command loads a shared library file into the PostgreSQL
+server's address space. If the file had been loaded previously,
+it is first unloaded. This command is primarily useful to unload
+and reload a shared library file that has been changed since the
+server first loaded it. To make use of the shared library,
+function(s) in it need to be declared using the CREATE FUNCTION [\fBcreate_function\fR(7)]
+command.
+.PP
+The file name is specified in the same way as for shared library
+names in CREATE FUNCTION [\fBcreate_function\fR(7)]; in particular, one
+may rely on a search path and automatic addition of the system's standard
+shared library file name extension. See the section called ``User-Defined Functions'' in the documentation for
+more information on this topic.
+.SH "COMPATIBILITY"
+.PP
+\fBLOAD\fR is a PostgreSQL
+extension.
+.SH "SEE ALSO"
+.PP
+CREATE FUNCTION [\fBcreate_function\fR(7)]
diff --git a/raw/man7/locale.7 b/raw/man7/locale.7
new file mode 100644
index 0000000..6ea3ec5
--- /dev/null
+++ b/raw/man7/locale.7
@@ -0,0 +1,204 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sat Jul 24 17:28:34 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sun Jun 01 17:16:34 1997 by Jochen Hein
+.\"   <jochen.hein at delphi.central.de>
+.\" Modified Thu Apr 25 00:43:19 2002 by Bruno Haible <bruno at clisp.org>
+.\"
+.TH LOCALE 7  1993-04-24 "Linux" "Linux Programmer's Manual"
+.SH NAME
+locale \- Description of multi-language support
+.SH SYNOPSIS
+.nf
+.B #include <locale.h>
+.fi
+.SH DESCRIPTION
+A locale is a set of language and cultural rules.  These cover aspects
+such as language for messages, different character sets, lexigraphic
+conventions, etc.  A program needs to be able to determine its locale
+and act accordingly to be portable to different cultures.
+.PP
+The header
+.B <locale.h>
+declares data types, functions and macros which are useful in this
+task.
+.PP
+The functions it declares are
+.B setlocale()
+to set the current locale, and
+.B localeconv()
+to get information about number formatting.
+.PP
+There are different categories for local information a program might
+need; they are declared as macros.  Using them as the first argument
+to the
+.B setlocale()
+function, it is possible to set one of these to the desired locale:
+.TP
+.B LC_COLLATE
+This is used to change the behaviour of the functions
+.B strcoll()
+and
+.BR strxfrm() ,
+which are used to compare strings in the local alphabet.  For example,
+the German sharp s is sorted as "ss".
+.TP
+.B LC_CTYPE
+This changes the behaviour of the character handling and
+classification functions, such as
+.B isupper()
+and
+.BR toupper() ,
+and the multi\-byte character functions such as
+.B mblen()
+or
+.BR wctomb() .
+.TP
+.B LC_MONETARY
+changes the information returned by
+.B localeconv()
+which describes the way numbers are usually printed, with details such
+as decimal point versus decimal comma.  This information is internally
+used by the function
+.BR strfmon() .
+.TP
+.B LC_MESSAGES
+changes the language messages are displayed in and how an affirmative or
+negative answer looks like.  The GNU C-library contains the
+.BR gettext() ,
+.BR ngettext() ,
+and
+.B rpmatch()
+functions to ease the use of these information.  The GNU gettext family of
+functions also obey the environment variable
+.BR LANGUAGE .
+.TP
+.B LC_NUMERIC
+changes the information used by the
+.B printf()
+and
+.B scanf()
+family of functions, when they are advised to use the
+locale-settings.  This information can also be read with the 
+.B localeconv()
+function.
+.TP
+.B LC_TIME
+changes the behaviour of the
+.B strftime()
+function to display the current time in a locally acceptable form; for
+example, most of Europe uses a 24\-hour clock vs. the US' 12\-hour
+clock.
+.TP
+.B LC_ALL
+All of the above.
+.PP
+If the second argument to
+.B setlocale()
+is empty string,
+.BR """""" ,
+for the default locale, it is determined using the following steps:
+.IP 1.
+If there is a non-null environment variable
+.BR LC_ALL ,
+the value of
+.B LC_ALL
+is used.
+.IP 2.
+If an environment variable with the same name as one of the categories
+above exists and is non-null, its value is used for that category.
+.IP 3.
+If there is a non-null environment variable
+.BR LANG ,
+the value of
+.B LANG
+is used.
+.PP
+Values about local numeric formatting is made available in a
+.B struct lconv
+returned by the
+.B localeconv()
+function, which has the following declaration:
+.nf
+struct lconv
+{
+  /* Numeric (non-monetary) information.  */
+
+  char *decimal_point;		/* Decimal point character.  */
+  char *thousands_sep;		/* Thousands separator.  */
+  /* Each element is the number of digits in each group;
+     elements with higher indices are farther left.
+     An element with value CHAR_MAX means that no further grouping is done.
+     An element with value 0 means that the previous element is used
+     for all groups farther left.  */
+  char *grouping;
+
+  /* Monetary information.  */
+
+  /* First three chars are a currency symbol from ISO 4217.
+     Fourth char is the separator.  Fifth char is '\0'.  */
+  char *int_curr_symbol;
+  char *currency_symbol;	/* Local currency symbol.  */
+  char *mon_decimal_point;	/* Decimal point character.  */
+  char *mon_thousands_sep;	/* Thousands separator.  */
+  char *mon_grouping;		/* Like `grouping' element (above).  */
+  char *positive_sign;		/* Sign for positive values.  */
+  char *negative_sign;		/* Sign for negative values.  */
+  char int_frac_digits;		/* Int'l fractional digits.  */
+  char frac_digits;		/* Local fractional digits.  */
+  /* 1 if currency_symbol precedes a positive value, 0 if succeeds.  */
+  char p_cs_precedes;
+  /* 1 if a space separates currency_symbol from a positive value.  */
+  char p_sep_by_space;
+  /* 1 if currency_symbol precedes a negative value, 0 if succeeds.  */
+  char n_cs_precedes;
+  /* 1 if a space separates currency_symbol from a negative value.  */
+  char n_sep_by_space;
+  /* Positive and negative sign positions:
+     0 Parentheses surround the quantity and currency_symbol.
+     1 The sign string precedes the quantity and currency_symbol.
+     2 The sign string succeeds the quantity and currency_symbol.
+     3 The sign string immediately precedes the currency_symbol.
+     4 The sign string immediately succeeds the currency_symbol.  */
+  char p_sign_posn;
+  char n_sign_posn;
+};
+.fi
+.SH "CONFORMS TO"
+.nf
+POSIX.1
+.fi
+The GNU gettext functions are specified in LI18NUX2000.
+.SH "SEE ALSO"
+.BR setlocale (3),
+.BR localeconv (3),
+.BR locale (1),
+.BR localedef (1),
+.BR nl_langinfo (3),
+.BR gettext (3),
+.BR ngettext (3),
+.BR rpmatch (3),
+.BR strfmon (3),
+.BR strcoll (3),
+.BR strxfrm (3),
+.BR strftime (3)
diff --git a/raw/man7/lock.7 b/raw/man7/lock.7
new file mode 100644
index 0000000..97b81f0
--- /dev/null
+++ b/raw/man7/lock.7
@@ -0,0 +1,145 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "LOCK" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+LOCK \- lock a table
+
+.SH SYNOPSIS
+.sp
+.nf
+LOCK [ TABLE ] \fIname\fR [, ...] [ IN \fIlockmode\fR MODE ]
+
+where \fIlockmode\fR is one of:
+
+    ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
+    | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBLOCK TABLE\fR obtains a table-level lock, waiting if
+necessary for any conflicting locks to be released. Once obtained,
+the lock is held for the remainder of the current transaction.
+(There is no \fBUNLOCK TABLE\fR command; locks are always
+released at transaction end.)
+.PP
+When acquiring locks automatically for commands that reference
+tables, PostgreSQL always uses the least
+restrictive lock mode possible. \fBLOCK TABLE\fR
+provides for cases when you might need more restrictive locking.
+For example, suppose an application runs a transaction at the
+isolation level read committed and needs to ensure that data in a
+table remains stable for the duration of the transaction. To
+achieve this you could obtain SHARE lock mode over the
+table before querying. This will prevent concurrent data changes
+and ensure subsequent reads of the table see a stable view of
+committed data, because SHARE lock mode conflicts with
+the ROW EXCLUSIVE lock acquired by writers, and your
+\fBLOCK TABLE \fIname\fB IN SHARE MODE\fR
+statement will wait until any concurrent holders of ROW
+EXCLUSIVE mode locks commit or roll back. Thus, once you
+obtain the lock, there are no uncommitted writes outstanding;
+furthermore none can begin until you release the lock.
+.PP
+To achieve a similar effect when running a transaction at the
+isolation level serializable, you have to execute the \fBLOCK
+TABLE\fR statement before executing any data modification
+statement. A serializable transaction's view of data will be
+frozen when its first data modification statement begins. A later
+\fBLOCK TABLE\fR will still prevent concurrent writes --- but it
+won't ensure that what the transaction reads corresponds to the
+latest committed values.
+.PP
+If a transaction of this sort is going to change the data in the
+table, then it should use SHARE ROW EXCLUSIVE lock mode
+instead of SHARE mode. This ensures that only one
+transaction of this type runs at a time. Without this, a deadlock
+is possible: two transactions might both acquire SHARE
+mode, and then be unable to also acquire ROW EXCLUSIVE
+mode to actually perform their updates. (Note that a transaction's
+own locks never conflict, so a transaction can acquire ROW
+EXCLUSIVE mode when it holds SHARE mode --- but not
+if anyone else holds SHARE mode.) To avoid deadlocks,
+make sure all transactions acquire locks on the same objects in the
+same order, and if multiple lock modes are involved for a single
+object, then transactions should always acquire the most
+restrictive mode first.
+.PP
+More information about the lock modes and locking strategies can be
+found in the section called ``Explicit Locking'' in the documentation.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of an existing table to
+lock.
+
+The command LOCK a, b; is equivalent to
+LOCK a; LOCK b;. The tables are locked one-by-one in
+the order specified in the \fBLOCK\fR command.
+.TP
+\fB\fIlockmode\fB\fR
+The lock mode specifies which locks this lock conflicts with.
+Lock modes are described in the section called ``Explicit Locking'' in the documentation.
+
+If no lock mode is specified, then ACCESS
+EXCLUSIVE, the most restrictive mode, is used.
+.SH "NOTES"
+.PP
+LOCK ... IN ACCESS SHARE MODE requires SELECT
+privileges on the target table. All other forms of \fBLOCK\fR
+require UPDATE and/or DELETE privileges.
+.PP
+\fBLOCK\fR is useful only inside a transaction block
+(\fBBEGIN\fR/\fBCOMMIT\fR pair), since the lock is dropped
+as soon as the transaction ends. A \fBLOCK\fR command appearing
+outside any transaction block forms a self-contained transaction, so the
+lock will be dropped as soon as it is obtained.
+.PP
+\fBLOCK TABLE\fR only deals with table-level locks, and so
+the mode names involving ROW are all misnomers. These
+mode names should generally be read as indicating the intention of
+the user to acquire row-level locks within the locked table. Also,
+ROW EXCLUSIVE mode is a sharable table lock. Keep in
+mind that all the lock modes have identical semantics so far as
+\fBLOCK TABLE\fR is concerned, differing only in the rules
+about which modes conflict with which.
+.SH "EXAMPLES"
+.PP
+Obtain a SHARE lock on a primary key table when going to perform
+inserts into a foreign key table:
+.sp
+.nf
+BEGIN WORK;
+LOCK TABLE films IN SHARE MODE;
+SELECT id FROM films 
+    WHERE name = 'Star Wars: Episode I - The Phantom Menace';
+-- Do ROLLBACK if record was not returned
+INSERT INTO films_user_comments VALUES 
+    (_id_, 'GREAT! I was waiting for it for so long!');
+COMMIT WORK;
+.sp
+.fi
+.PP
+Take a SHARE ROW EXCLUSIVE lock on a primary key table when going to perform
+a delete operation:
+.sp
+.nf
+BEGIN WORK;
+LOCK TABLE films IN SHARE ROW EXCLUSIVE MODE;
+DELETE FROM films_user_comments WHERE id IN
+    (SELECT id FROM films WHERE rating < 5);
+DELETE FROM films WHERE rating < 5;
+COMMIT WORK;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBLOCK TABLE\fR in the SQL standard,
+which instead uses \fBSET TRANSACTION\fR to specify
+concurrency levels on transactions. PostgreSQL supports that too;
+see SET TRANSACTION [\fBset_transaction\fR(7)] for details.
+.PP
+Except for ACCESS SHARE, ACCESS EXCLUSIVE,
+and SHARE UPDATE EXCLUSIVE lock modes, the
+PostgreSQL lock modes and the
+\fBLOCK TABLE\fR syntax are compatible with those
+present in Oracle.
diff --git a/raw/man7/mailaddr.7 b/raw/man7/mailaddr.7
new file mode 100644
index 0000000..9e03d3e
--- /dev/null
+++ b/raw/man7/mailaddr.7
@@ -0,0 +1,120 @@
+.TH MAILADDR 7 1995-06-24 linux "Linux User's Manual" \" -*- nroff -*-
+.\"
+.\" Copyright (c) 1983, 1987 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\"	@(#)mailaddr.7	6.5 (Berkeley) 2/14/89
+.\"
+.\" Extensively rewritten by Arnt Gulbrandsen <agulbra at troll.no>.  My
+.\" changes are placed under the same copyright as the original BSD page.
+.\"
+.\" fool hilith19: "
+.UC 5
+.SH NAME
+mailaddr \- mail addressing description
+.SH DESCRIPTION
+This manual page gives a brief introduction to SMTP mail addresses, as
+used on the Internet.  These addresses are in the general format
+.PP
+	user at domain
+.PP
+where a domain is a hierarchical dot separated list of subdomains.  For
+example, the addresses
+.PP
+	eric at monet.berkeley.edu
+.br
+	Eric Allman <eric at monet.berkeley.edu>
+.br
+	eric at monet.berkeley.edu (Eric Allman)
+.PP
+are valid forms of the same address.
+.PP
+The domain part (``monet.berkeley.edu'') may be the name of an internet
+host, or it may be a logical mail address.  The domain part is not
+case sensitive.
+.PP
+The local part (``eric'') is often a user name, but its meaning is
+defined by the local software.  It can be case sensitive, but usually
+isn't.  If you see a local-part that looks like garbage, it is usually
+because of a gateway between an internal e-mail system and the net,
+here are some examples:
+.PP
+	"surname/admd=telemail/c=us/o=hp/prmd=hp"@some.where
+	USER%SOMETHING at some.where
+	machine!machine!name at some.where
+	I2461572 at some.where
+.PP
+(These are, respectively, an X.400 gateway, a gateway to an arbitrary
+inernal mail system that lacks proper internet support, an UUCP
+gateway, and the last one is just boring username policy.)
+.PP
+The real-name part (``Eric Allman'') can either be placed first, outside
+<>, or last, inside ().  (Strictly speaking the two aren't the same,
+but the difference is outside the scope of this page.)  The name may
+have to be quoted using "" if it contains certain characters, most
+commonly ``.'':
+.PP
+	"Eric P. Allman" <eric at monet.berkeley.edu>
+.SS Abbreviation.
+.PP
+Many mail systems let users abbreviate the domain name.  For instance,
+users at berkeley.edu may get away with ``eric at monet'' to send mail to
+Eric Allman. \fIThis behavior is deprecated.\fP
+.SS Route-addrs.
+.PP
+Under some circumstances it may be necessary to route a message
+through several hosts to get it to the final destination.  Normally
+this happens automatically and invisibly, but sometimes not,
+particularly with old and broken software.  Addresses which show these
+relays are termed ``route-addrs.''  These use the syntax:
+.PP
+	<@hosta, at hostb:user at hostc>
+.PP
+This specifies that the message should be sent to hosta, from there to
+hostb, and finally to hostc.  Some hosts disregard route-addrs and
+send directly to hostc.
+.PP
+Route-addrs occur frequently on return addresses, since these are generally
+augmented by the software at each host.  It is generally possible to ignore
+all but the ``user at hostc'' part of the address to determine the actual
+sender.
+.SS Postmaster.
+.PP
+Every site is required to have a user or user alias designated
+``postmaster'' to which problems with the mail system may be
+addressed.  The ``postmaster'' address is not case sensitive.
+.SS "FREQUENTLY ASKED QUESTIONS"
+rtfm.mit.edu and many mirrors store a collection of FAQs.  Please find
+and use a nearby FAQ archive; there are dozens or hundreds around the
+world.
+.I mail/inter-network-guide
+explains how to send mail between many different networks.
+.I mail/country-codes
+lists the top level domains (e.g. ``no'' is Norway and ``ea'' is Eritrea).
+.I mail/college-email/part*
+gives some useful tips on how to locate e-mail addresses.
+.SH FILES
+.I /etc/aliases
+.br
+.I ~/.forward
+.SH "SEE ALSO"
+.BR binmail (1),
+.BR mail (1),
+.BR mconnect (1),
+.BR forward (5),
+.BR aliases (5),
+.BR sendmail (8),
+.BR vrfy (8),
+RFC822 (Standard for the Format of Arpa Internet Text Messages).
diff --git a/raw/man7/man.7 b/raw/man7/man.7
new file mode 100644
index 0000000..4cdb585
--- /dev/null
+++ b/raw/man7/man.7
@@ -0,0 +1,723 @@
+.\" (C) Copyright 1992-1999 Rickard E. Faith and David A. Wheeler
+.\" (faith at cs.unc.edu and dwheeler at ida.org)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sun Jul 25 11:06:05 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sat Jun  8 00:39:52 1996 by aeb
+.\" Modified Wed Jun 16 23:00:00 1999 by David A. Wheeler (dwheeler at ida.org)
+.\" Modified Thu Jul 15 12:43:28 1999 by aeb
+.\"  [todo: split this into man.7 describing the macros
+.\"   and manpage.7 describing the Linux man page conventions]
+.\"
+.TH MAN 7 1999-06-16 "Linux" "Linux Programmer's Manual"
+.SH NAME
+man \- macros to format man pages
+.SH SYNOPSIS
+.B groff \-Tascii \-man
+.I file
+\&...
+.LP
+.B groff \-Tps \-man
+.I file
+\&...
+.LP
+.B man
+.RI [ section ]
+.I title
+.SH DESCRIPTION
+This manual page explains the
+.B "groff tmac.an"
+macro package (often called the
+.B man
+macro package) and related conventions for creating manual (man) pages.
+This macro package should be used by developers when
+writing or porting man pages for Linux.  It is fairly compatible with other
+versions of this macro package, so porting man pages should not be a major
+problem (exceptions include the NET-2 BSD release, which uses a totally
+different macro package called mdoc; see
+.BR mdoc (7)).
+.PP
+Note that NET-2 BSD mdoc man pages can be used with
+.B groff
+simply by specifying the
+.B \-mdoc
+option instead of the
+.B \-man
+option.  Using the
+.B \-mandoc
+option is, however, recommended, since this will automatically detect which
+macro package is in use.
+.SH PREAMBLE
+The first command in a man page (after comment lines) should be
+.RS
+.sp
+.B \&.TH
+.IR "title section date source manual" ,
+.sp
+.RE
+where:
+.RS
+.TP 10
+.I title
+The title of the man page (e.g.,
+.IR MAN ).
+.TP
+.I section
+The section number the man page should be placed in (e.g.,
+.IR 7 ).
+.TP
+.I date
+The date of the last revision\(emremember to change this every time a
+change is made to the man page, since this is the most general way of doing
+version control.
+.TP
+.I source
+The source of the command.
+.sp
+For binaries, use something like:
+.IR GNU ", " NET-2 ", " "SLS Distribution" ", " "MCC Distribution" .
+.sp
+For system calls, use the version of the kernel that you are currently
+looking at:
+.IR "Linux 0.99.11" .
+.sp
+For library calls, use the source of the function:
+.IR GNU ", " "BSD 4.3" ", " "Linux DLL 4.4.1" .
+.TP
+.I manual
+The title of the manual (e.g.,
+.IR "Linux Programmer's Manual" ).
+.RE
+.PP
+Note that BSD mdoc-formatted pages begin with the
+.B Dd
+command, not the
+.B TH
+command.
+.PP
+The manual sections are traditionally defined as follows:
+.RS
+.TP 10
+.B 1 Commands
+Those commands that can be executed by the user from within
+a shell.
+.TP
+.B 2 System calls
+Those functions which must be performed by the kernel.
+.TP
+.B 3 Library calls
+Most of the
+.I libc
+functions, such as
+.BR qsort (3))
+.TP
+.B 4 Special files
+Files found in
+.IR /dev )
+.TP
+.B 5 File formats and conventions
+The format for
+.I /etc/passwd
+and other human-readable files.
+.TP
+.B 6 Games
+.TP
+.B 7 Macro packages and conventions
+A description of the standard file system layout, network protocols,
+ASCII and other character codes, this man page, and other things.
+.TP
+.B 8 System management commands
+Commands like
+.BR mount (8),
+many of which only
+.I root
+can execute.
+.TP
+.B 9 Kernel routines
+This is an obsolete manual section.
+Once it was thought a good idea to document the Linux kernel here,
+but in fact very little has been documented, and the documentation
+that exists is outdated already. There are better sources of
+information for kernel developers. 
+.RE
+.SH SECTIONS
+Sections are started with
+.B \&.SH
+followed by the heading name.  If the name contains spaces and appears
+on the same line as
+.BR \&.SH ,
+then place the heading in double quotes.  Traditional or suggested
+headings include:
+NAME, SYNOPSIS, DESCRIPTION, RETURN VALUE,
+EXIT STATUS, ERROR HANDLING, ERRORS,
+OPTIONS, USAGE, EXAMPLES, FILES, ENVIRONMENT, DIAGNOSTICS, SECURITY,
+CONFORMING TO, NOTES,
+BUGS, AUTHOR, and SEE ALSO.
+Where a traditional heading would apply, please use it;
+this kind of consistency can make the information easier to understand.
+However, feel free to create your own headings if they make things easier
+to understand.
+The only required heading is
+.IR NAME ,
+which should be the first section and
+be followed on the next line by a one line description of the program:
+.RS
+.sp
+\&.SH NAME
+.br
+chess \\- the game of chess
+.sp
+.RE
+It is extremely important that this format is followed, and that there is a
+backslash before the single dash which follows the command name.  This
+syntax is used by the
+.BR makewhatis (8)
+program to create a database of short command descriptions for the
+.BR whatis (1)
+and
+.BR apropos (1)
+commands.
+.PP
+Some other traditional sections have the following contents:
+.TP 14
+.B SYNOPSIS
+briefly describes the command or function's interface.
+For commands, this shows the syntax of the command and its arguments
+(including options);
+boldface is used for as-is text and italics are used to indicate replaceable
+arguments. Brackets ([]) surround optional arguments, vertical bars (|)
+separate choices, and ellipses (\&...) can be repeated.
+For functions, it shows any required data declarations or
+.B #include
+directives, followed by the function declaration.
+.TP
+.B DESCRIPTION
+gives an explanation of what the command, function, or format does.
+Discuss how it interacts with files and standard input, and what it
+produces on standard output or standard error.
+Omit internals and implementation details unless they're critical for
+understanding the interface.
+Describe the usual case; for information on options use the
+.B OPTIONS
+section.
+If there is some kind of input grammar or complex set of subcommands,
+consider describing them in a separate
+.B USAGE
+section (and just place an overview in the
+.B DESCRIPTION
+section).
+.TP
+.B RETURN VALUE
+gives a
+list of the values the library routine will return to the caller
+and the conditions that cause these values to be returned.
+.TP
+.B EXIT STATUS
+lists the possible exit status values or a program and
+the conditions that cause these values to be returned.
+.TP
+.B OPTIONS
+describes the options accepted by the program and how they change
+its behavior.
+.TP
+.B USAGE
+describes the grammar of any sublanguage this implements.
+.TP
+.B EXAMPLES
+provides one or more examples describing how this function, file or
+command is used.
+.TP
+.B FILES
+lists the files the program or function uses, such as
+configuration files, startup files,
+and files the program directly operates on.
+Give the full pathname of these files, and use the installation
+process to modify the directory part to match user preferences.
+For many programs, the default installation location is in /usr/local,
+so your base manual page should use /usr/local as the base.
+.TP
+.B ENVIRONMENT
+lists all environment variables that affect your program or function
+and how they affect it.
+.TP
+.B DIAGNOSTICS
+gives an overview of the most common error messages and how to
+cope with them.  You don't need to explain system error messages
+or fatal signals that can appear during execution of any program
+unless they're special in some way to your program.
+.TP
+.B SECURITY
+discusses security issues and implications.
+Warn about configurations or environments that should be avoided,
+commands that may have security implications, and so on, especially
+if they aren't obvious.
+Discussing security in a separate section isn't necessary;
+if it's easier to understand, place security information in the
+other sections (such as the
+.B DESCRIPTION
+or
+.B USAGE
+section).
+However, please include security information somewhere!
+.TP
+.B CONFORMING TO
+describes any standards or conventions this implements.
+.TP
+.B NOTES
+provides miscellaneous notes.
+.TP
+.B BUGS
+lists limitations, known defects or inconveniences,
+and other questionable activities.
+.TP
+.B AUTHOR
+lists authors of the documentation or program so you can mail in bug
+reports.
+.TP
+.B SEE ALSO
+lists related man pages in alphabetical order, possibly followed by
+other related pages or documents.
+Conventionally this is the last section.
+.SH FONTS
+Although there are many arbitrary conventions for man pages in the UNIX
+world, the existence of several hundred Linux-specific man pages defines our
+font standards:
+.IP
+For functions, the arguments are always specified using italics,
+.IR "even in the SYNOPSIS section" ,
+where the rest of the function is specified in bold:
+.RS
+.BI "int myfunction(int " argc ", char **" argv );
+.RE
+.IP
+Filenames are always in italics (e.g.,
+.IR "/usr/include/stdio.h" ),
+except in the SYNOPSIS section, where included files are in bold (e.g.,
+.BR "#include <stdio.h>" ).
+.IP
+Special macros, which are usually in upper case, are in bold (e.g.,
+.BR MAXINT ).
+.IP
+When enumerating a list of error codes, the codes are in bold (this list
+usually uses the
+.B \&.TP
+macro).
+.IP
+Any reference to another man page (or to the subject of the current man
+page) is in bold.  If the manual section number is given, it is given in
+Roman (normal) font, without any spaces (e.g.,
+.BR man (7)).
+.LP
+The commands to select the type face are:
+.TP 4
+.B \&.B
+Bold
+.TP
+.B \&.BI
+Bold alternating with italics
+(especially useful for function specifications)
+.TP
+.B \&.BR
+Bold alternating with Roman
+(especially useful for referring to other
+manual pages)
+.TP
+.B \&.I
+Italics
+.TP
+.B \&.IB
+Italics alternating with bold
+.TP
+.B \&.IR
+Italics alternating with Roman
+.TP
+.B \&.RB
+Roman alternating with bold
+.TP
+.B \&.RI
+Roman alternating with italics
+.TP
+.B \&.SB
+Small alternating with bold
+.TP
+.B \&.SM
+Small (useful for acronyms)
+.LP
+Traditionally, each command can have up to six arguments, but the GNU
+implementation removes this limitation (you might still want to limit
+yourself to 6 arguments for portability's sake).
+Arguments are delimited by
+spaces.  Double quotes can be used to specify an argument which contains
+spaces.  All of the arguments will be printed next to each other without
+intervening spaces, so that the
+.B \&.BR
+command can be used to specify a word in bold followed by a mark of
+punctuation in Roman.
+If no arguments are given, the command is applied to the following line
+of text.
+.SH "OTHER MACROS AND STRINGS"
+.PP
+Below are other relevant macros and predefined strings.
+Unless noted otherwise, all macros
+cause a break (end the current line of text).
+Many of these macros set or use the "prevailing indent."
+The "prevailing indent" value is set by any macro with the parameter
+.I i
+below;
+macros may omit
+.I i
+in which case the current prevailing indent will be used.
+As a result, successive indented paragraphs can use the same indent without
+re-specifying the indent value.
+A normal (non-indented) paragraph resets the prevailing indent value
+to its default value (0.5 inches).
+By default a given indent is measured in ens; try to ens or ems as units for
+indents, since these will automatically adjust to font size changes.
+The other key macro definitions are:
+.SS "Normal Paragraphs"
+.TP 9m
+.B \&.LP
+Same as
+.B \&.PP
+(begin a new paragraph).
+.TP
+.B \&.P
+Same as
+.B \&.PP
+(begin a new paragraph).
+.TP
+.B \&.PP
+Begin a new paragraph and reset prevailing indent.
+.SS "Relative Margin Indent"
+.TP 9m
+.BI \&.RS " i"
+Start relative margin indent - moves the left margin
+.I i
+to the right (if
+.I i
+is omitted, the prevailing indent value is used).
+A new prevailing indent is set to 0.5 inches.
+As a result, all following paragraph(s) will be
+indented until the corresponding
+.BR \&.RE .
+.TP
+.B \&.RE
+End relative margin indent and
+restores the previous value of the prevailing indent.
+.SS "Indented Paragraph Macros"
+.TP 9m
+.BI \&.HP " i"
+Begin paragraph with a hanging indent
+(the first line of the paragraph is at the left margin of
+normal paragraphs, and the rest of the paragraph's lines are indented).
+.TP
+.BI \&.IP " x i"
+Indented paragraph with optional hanging tag.
+If the tag
+.I x
+is omitted, the entire following paragraph is indented by
+.IR i .
+If the tag
+.I x
+is provided, it is hung at the left margin
+before the following indented paragraph
+(this is just like
+.BR \&.TP
+except the tag is included with the command instead of being on the
+following line).
+If the tag is too long, the text after the tag will be moved down to the
+next line (text will not be lost or garbled).
+For bulleted lists, use this macro with \e(bu (bullet) or \e(em (em dash)
+as the tag, and for numbered lists, use the number or letter followed by
+a period as the tag;
+this simplifies translation to other formats.
+.TP
+.BI \&.TP " i"
+Begin paragraph with hanging tag.  The tag is given on the next line, but
+its results are like those of the
+.B \&.IP
+command.
+.SS "Hypertext Link Macros"
+.TP 9m
+.BI \&.UR " u"
+Begins a hypertext link to the URI (URL)
+.IR u ;
+it will end with the corresponding
+.B UE
+command.
+When generating HTML this should translate into the HTML command
+\fB<A HREF="\fP\fIu\fP\fB">\fP.
+There is an exception: if
+.I u
+is the special value ":", then no hypertext link of any kind
+will be generated until after the closing
+.B UE
+(this permits disabling hypertext links in phrases like
+.UR ":"
+LALR(1)
+.UE
+when linking is not appropriate).
+These hypertext link "macros" are new, and
+many tools won't do anything with them, but
+since many tools (including troff) will simply ignore undefined macros
+(or at worst insert their text) these are safe to insert.
+.TP
+.BI \&.UE
+Ends the corresponding
+.B UR
+command;
+when generating HTML this should translate into
+\fB</A>\fP.
+.TP
+.BI \&.UN " u"
+Creates a named hypertext location named
+.IR u ;
+do not include a corresponding
+.B UE
+command.
+When generating HTML this should translate into the HTML command
+\fB<A NAME="\fP\fIu\fP\fB" id="\fP\fIu\fP\fB"> </A>\fP
+(the   is optional if support for Mosaic is unneeded).
+.SS "Miscellaneous Macros"
+.TP 9m
+.B \&.DT
+Reset tabs to default tab values (every 0.5 inches);
+does not cause a break.
+.TP
+.BI \&.PD " d"
+Set inter-paragraph vertical distance to d
+(if omitted, d=0.4v);
+does not cause a break.
+.TP
+.BI \&.SS " t"
+Subheading
+.I t
+(like
+.BR \&.SH ,
+but used for a subsection inside a section).
+.SS "Predefined Strings"
+The
+.B man
+package has the following predefined strings:
+.IP \e*R
+Registration Symbol: \*R
+.IP \e*S
+Change to default font size
+.IP \e*(Tm
+Trademark Symbol: \*(Tm
+.IP \e*(lq
+Left angled doublequote: \*(lq
+.IP \e*(rq
+Right angled doublequote: \*(rq
+.SH "SAFE SUBSET"
+Although technically
+.B man
+is a troff macro package, in reality a large number of other tools
+process man page files that don't implement all of troff's abilities.
+Thus, it's best to avoid some of troff's more exotic abilities where possible
+to permit these other tools to work correctly.
+Avoid using the various troff preprocessors
+(if you must, go ahead and use
+.BR tbl (1),
+but try to use the
+.B IP
+and 
+.B TP
+commands instead for two-column tables).
+Avoid using computations; most other tools can't process them.
+Use simple commands that are easy to translate to other formats.
+The following troff macros are believed to be safe (though in many cases
+they will be ignored by translators):
+.BR \e" ,
+.BR . ,
+.BR ad ,
+.BR bp ,
+.BR br ,
+.BR ce ,
+.BR de ,
+.BR ds ,
+.BR el ,
+.BR ie ,
+.BR if ,
+.BR fi ,
+.BR ft ,
+.BR hy ,
+.BR ig ,
+.BR in ,
+.BR na ,
+.BR ne ,
+.BR nf ,
+.BR nh ,
+.BR ps ,
+.BR so ,
+.BR sp ,
+.BR ti ,
+.BR tr .
+.PP
+You may also use many troff escape sequences (those sequences beginning
+with \e).
+When you need to include the backslash character as normal text,
+use \ee.
+Other sequences you may use, where x or xx are any characters and N
+is any digit, include:
+.BR \e' ,
+.BR \e` ,
+.BR \e- ,
+.BR \e. ,
+.BR \e" ,
+.BR \e% ,
+.BR \e*x ,
+.BR \e*(xx ,
+.BR \e(xx ,
+.BR \e$N ,
+.BR \enx ,
+.BR \en(xx ,
+.BR \efx ,
+and
+.BR \ef(xx .
+Avoid using the escape sequences for drawing graphics.
+.PP
+Do not use the optional parameter for
+.B bp
+(break page).
+Use only positive values for
+.B sp
+(vertical space).
+Don't define a macro
+.RB ( de )
+with the same name as a macro in this or the
+mdoc macro package with a different meaning; it's likely that
+such redefinitions will be ignored.
+Every positive indent
+.RB ( in )
+should be paired with a matching negative indent
+(although you should be using the
+.B RS
+and
+.B RE
+macros instead).
+The condition test
+.RB ( if,ie )
+should only have 't' or 'n' as the condition.
+Only translations 
+.RB ( tr )
+that can be ignored should be used.
+Font changes
+.RB ( ft
+and the \fB\ef\fP escape sequence)
+should only have the values 1, 2, 3, 4, R, I, B, P, or CW
+(the ft command may also have no parameters).
+.PP
+If you use capabilities beyond these, check the
+results carefully on several tools.
+Once you've confirmed that the additional capability is safe,
+let the maintainer of this
+document know about the safe command or sequence
+that should be added to this list.
+.SH NOTES
+.PP
+By all means include full URLs (or URIs) in the text itself;
+some tools such as
+.BR man2html (1)
+can automatically turn them into hypertext links.
+You can also use the new
+.B UR
+macro to identify links to related information.
+If you include URLs, use the full URL
+(e.g., <http://www.kernelnotes.org>) to ensure that tools
+can automatically find the URLs.
+.PP
+Tools processing these files should open the file and examine the first
+non-whitespace character. A period (.) or single quote (')
+at the beginning of a line indicates a troff-based file (such as man or mdoc).
+A left angle bracket (<) indicates an SGML/XML-based
+file (such as HTML or Docbook). Anything else suggests simple ASCII
+text (e.g., a "catman" result).
+.PP
+Many man pages begin with '\e" followed by a space and a list of characters,
+indicating how the page is to be preprocessed.
+For portability's sake to non-troff translators we recommend that you avoid
+using anything other than
+.BR tbl (1),
+and Linux can detect that automatically.
+However, you might want to include this information so your man page
+can be handled by other (less capable) systems.
+Here are the definitions of the preprocessors invoked by these characters:
+.TP 3
+.B e
+eqn(1)
+.TP
+.B g
+grap(1)
+.TP
+.B p
+pic(1)
+.TP
+.B r
+refer(1)
+.TP
+.B t
+tbl(1)
+.TP
+.B v
+vgrind(1)
+.SH FILES
+.IR /usr/share/groff/ [*/] tmac/tmac.an
+.br
+.I /usr/man/whatis
+.SH BUGS
+.PP
+Most of the macros describe formatting (e.g., font type and spacing) instead
+of marking semantic content (e.g., this text is a reference to another page),
+compared to formats like mdoc and DocBook (even HTML has more semantic
+markings).
+This situation makes it harder to vary the
+.B man
+format for different media,
+to make the formatting consistent for a given media, and to automatically
+insert cross-references.
+By sticking to the safe subset described above, it should be easier to
+automate transitioning to a different reference page format in the future.
+.LP
+The Sun macro
+.B TX
+is not implemented.
+.SH AUTHORS
+.IP \(em 3m
+James Clark (jjc at jclark.com) wrote the implementation of the macro package.
+.IP \(em
+Rickard E. Faith (faith at cs.unc.edu) wrote the initial version of
+this manual page.
+.IP \(em
+Jens Schweikhardt (schweikh at noc.fdn.de) wrote the Linux Man-Page Mini-HOWTO
+(which influenced this manual page).
+.IP \(em
+David A. Wheeler (dwheeler at ida.org) heavily modified this
+manual page, such as adding detailed information on sections and macros.
+.SH "SEE ALSO"
+.BR apropos (1),
+.BR groff (1),
+.BR man (1),
+.BR man2html (1),
+.BR mdoc (7),
+.BR mdoc.samples (7),
+.BR whatis (1)
diff --git a/raw/man7/mdoc.samples.7 b/raw/man7/mdoc.samples.7
new file mode 100644
index 0000000..04ce369
--- /dev/null
+++ b/raw/man7/mdoc.samples.7
@@ -0,0 +1,2936 @@
+.\" Copyright (c) 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"
+.\" This tutorial sampler invokes every macro in the package several
+.\" times and is guaranteed to give a worst case performance
+.\" for an already extremely slow package.
+.\"
+.Dd December 30, 1993
+.Os
+.Dt MDOC.SAMPLES 7
+.Sh NAME
+.Nm mdoc.samples
+.Nd tutorial sampler for writing
+.Bx
+manuals with
+.Nm \-mdoc
+.Sh SYNOPSIS
+.Nm man mdoc.samples
+.Sh DESCRIPTION
+A tutorial sampler for writing
+.Bx
+manual pages with the
+.Nm \-mdoc
+macro package, a
+.Em content Ns \-based
+and
+.Em domain Ns \-based
+formatting
+package for
+.Xr troff 1 .
+Its predecessor, the
+.Xr \-man 7
+package,
+addressed page layout leaving the
+manipulation of fonts and other
+typesetting details to the individual author.
+In
+.Nm \-mdoc ,
+page layout macros
+make up the
+.Em "page structure domain"
+which consists of macros for titles, section headers, displays
+and lists. Essentially items which affect the physical position
+of text on a formatted page.
+In addition to the page structure domain, there are two more domains,
+the manual domain and the general text domain.
+The general text domain is defined as macros which
+perform tasks such as quoting or emphasizing pieces of text.
+The manual domain is defined as macros that are a subset of the
+day to day informal language used to describe commands, routines
+and related
+.Bx
+files.
+Macros in the manual domain handle
+command names, command line arguments and options, function names,
+function parameters, pathnames, variables, cross
+references to other manual pages, and so on.
+These domain
+items have value
+for both the author and the future user of the manual page.
+It is hoped the consistency gained
+across the manual set will provide easier
+translation to future documentation tools.
+.Pp
+Throughout the
+.Ux
+manual pages, a manual entry
+is simply referred
+to as a man page, regardless of actual length and without
+sexist intention.
+.Sh GETTING STARTED
+Since a tutorial document is normally read when a person
+desires to use the material immediately, the assumption has
+been made that the user of this document may be impatient.
+The material presented in the remained of this document is
+outlined as follows:
+.Bl -enum -offset indent
+.It
+.Tn "TROFF IDIOSYNCRASIES"
+.Bl -tag -width flag -compact -offset indent
+.It "Macro Usage" .
+.It "Passing Space Characters in an Argument" .
+.It "Trailing Blank Space Characters (a warning)" .
+.It "Escaping Special Characters" .
+.El
+.It
+.Tn "THE ANATOMY OF A MAN PAGE"
+.Bl -tag -width flag -compact -offset indent
+.It "A manual page template" .
+.El
+.It
+.Tn "TITLE MACROS" .
+.It
+.Tn "INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS" .
+.Bl -tag -width flag -compact -offset indent
+.It "What's in a name..." .
+.It "General Syntax" .
+.El
+.It
+.Tn "MANUAL DOMAIN"
+.Bl -tag -width flag -compact -offset indent
+.It "Addresses" .
+.It "Author name" .
+.It "Arguments" .
+.It "Configuration Declarations (section four only)" .
+.It "Command Modifier" .
+.It "Defined Variables" .
+.It "Errno's (Section two only)" .
+.It "Environment Variables" .
+.It "Function Argument" .
+.It "Function Declaration" .
+.It "Flags" .
+.It "Functions (library routines)" .
+.It "Function Types" .
+.\" .It "Header File (including source code)" .
+.It "Interactive Commands" .
+.It "Names" .
+.It "Options" .
+.It "Pathnames" .
+.It "Variables" .
+.It "Cross References" .
+.El
+.It
+.Tn "GENERAL TEXT DOMAIN"
+.Bl -tag -width flag -compact -offset indent
+.It "AT&T Macro" .
+.It "BSD Macro" .
+.It "FreeBSD Macro" .
+.It "UNIX Macro" .
+.It "Enclosure/Quoting Macros"
+.Bl -tag -width flag -compact -offset indent
+.It "Angle Bracket Quote/Enclosure" .
+.It "Bracket Quotes/Enclosure" .
+.It "Double Quote macro/Enclosure" .
+.It "Parenthesis Quote/Enclosure" .
+.It "Single Quotes/Enclosure" .
+.It "Prefix Macro" .
+.El
+.It "No\-Op or Normal Text Macro" .
+.It "No Space Macro" .
+.It "Section Cross References" .
+.It "References and Citations" .
+.It "Return Values (sections two and three only)"
+.It "Trade Names (Acronyms and Type Names)" .
+.It "Extended  Arguments" .
+.El
+.It
+.Tn "PAGE STRUCTURE DOMAIN"
+.Bl -tag -width flag -compact -offset indent
+.It "Section Headers" .
+.It "Paragraphs and Line Spacing" .
+.It "Keeps" .
+.It "Displays" .
+.It "Font Modes (Emphasis, Literal, and Symbolic)" .
+.It "Lists and Columns" .
+.El
+.It
+.Tn "PREDEFINED STRINGS"
+.It
+.Tn "DIAGNOSTICS"
+.It
+.Tn "FORMATTING WITH GROFF, TROFF AND NROFF"
+.It
+.Tn "BUGS"
+.El
+.ne 7
+.Sh TROFF IDIOSYNCRASIES
+The
+.Nm \-mdoc
+package attempts to simplify the process of writing a man page.
+Theoretically, one should not have to learn the dirty details of
+.Xr troff 1
+to use
+.Nm \-mdoc ;
+however, there are a few
+limitations which are unavoidable and best gotten out
+of the way.
+And, too, be forewarned, this package is
+.Em not
+fast.
+.Ss Macro Usage
+As in
+.Xr troff 1 ,
+a macro is called by placing a
+.Ql \&\.
+(dot character)
+at the beginning of
+a line followed by the two character name for the macro.
+Arguments may follow the macro separated by spaces.
+It is the dot character at the beginning of the line which causes
+.Xr troff 1
+to interpret the next two characters as a macro name.
+To place a
+.Ql \&\.
+(dot character)
+at the beginning of a line in some context other than
+a macro invocation, precede the
+.Ql \&\.
+(dot) with the
+.Ql \e&
+escape sequence.
+The
+.Ql \e&
+translates literally to a zero width space, and is never displayed in the
+output.
+.Pp
+In general,
+.Xr troff 1
+macros accept up to nine arguments, any
+extra arguments are ignored.
+Most macros in
+.Nm \-mdoc
+accept nine arguments and,
+in limited cases, arguments may be continued or extended
+on the
+next line (See
+.Sx Extensions ) .
+A few macros handle quoted arguments (see
+.Sx Passing Space Characters in an Argument
+below).
+.Pp
+Most of the
+.Nm \-mdoc
+general text domain and manual domain macros are special
+in that their argument lists are
+.Em parsed
+for callable macro names.
+This means an argument on the argument list which matches
+a general text or manual domain macro name and is determined
+to be callable will be executed
+or called when it is processed.
+In this case
+the argument, although the name of a macro,
+is not preceded by a
+.Ql \&\.
+(dot).
+It is in this manner that many macros are nested; for
+example
+the option macro,
+.Ql \&.Op ,
+may
+.Em call
+the flag and argument macros,
+.Ql \&Fl
+and
+.Ql \&Ar ,
+to specify an optional flag with an argument:
+.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
+.It Op Fl s Ar bytes
+is produced by
+.Li \&.Op \&Fl s \&Ar bytes
+.El
+.Pp
+To prevent a two character
+string from being interpreted as a macro name, precede
+the string with the
+escape sequence
+.Ql \e& :
+.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
+.It Op \&Fl s \&Ar bytes
+is produced by
+.Li \&.Op \e&Fl s \e&Ar bytes
+.El
+.Pp
+Here the strings
+.Ql \&Fl
+and
+.Ql \&Ar
+are not interpreted as macros.
+Macros whose argument lists are parsed for callable arguments
+are referred to
+as parsed and macros which may be called from an argument
+list are referred to as callable
+throughout this document and in the companion quick reference
+manual
+.Xr mdoc 7 .
+This is a technical
+.Em faux pas
+as almost all of the macros in 
+.Nm \-mdoc
+are parsed, but as it was cumbersome to constantly refer to macros
+as being callable and being able to call other macros,
+the term parsed has been used.
+.Ss Passing Space Characters in an Argument
+Sometimes it is desirable to give as one argument a string
+containing one or more blank space characters.
+This may be necessary
+to defeat the nine argument limit or to specify arguments to macros
+which expect particular arrangement of items in the argument list.
+For example,
+the function macro
+.Ql \&.Fn
+expects the first argument to be the name of a function and any
+remaining arguments to be function parameters.
+As
+.Tn "ANSI C"
+stipulates the declaration of function parameters in the
+parenthesized parameter list, each parameter is guaranteed
+to be at minimum a two word string.
+For example,
+.Fa int foo .
+.Pp
+There are two possible ways to pass an argument which contains
+an embedded space.
+.Em Implementation note :
+Unfortunately, the most convenient way
+of passing spaces in between quotes by reassigning individual
+arguments before parsing was fairly expensive speed wise
+and space wise to implement in all the macros for
+.Tn AT&T
+.Xr troff .
+It is not expensive for
+.Xr groff
+but for the sake of portability, has been limited
+to the following macros which need
+it the most:
+.Pp
+.Bl -tag -width 4n -offset indent -compact
+.It Li \&Cd
+Configuration declaration (section 4
+.Sx SYNOPSIS )
+.It Li \&Bl
+Begin list (for the width specifier).
+.It Li \&Em
+Emphasized text.
+.It Li \&Fn
+Functions (sections two and four).
+.It Li \&It
+List items.
+.It Li \&Li
+Literal text.
+.It Li \&Sy
+Symbolic text.
+.It Li \&%B
+Book titles.
+.It Li \&%J
+Journal names.
+.It Li \&%O
+Optional notes for a reference.
+.It Li \&%R
+Report title (in a reference).
+.It Li \&%T
+Title of article in a book or journal.
+.El
+.Pp
+One way of passing a string
+containing blank spaces is to use the hard or unpaddable space character
+.Ql \e\  ,
+that is, a blank space preceded by the escape character
+.Ql \e .
+This method may be used with any macro but has the side effect
+of interfering with the adjustment of text
+over the length of a line.
+.Xr Troff
+sees the hard space as if it were any other printable character and
+cannot split the string into blank or newline separated pieces as one
+would expect.
+The method is useful for strings which are not expected
+to overlap a line boundary.
+For example:
+.Bl -tag -width "fetch(char *str)" -offset indent
+.It Fn fetch char\ *str
+is created by
+.Ql \&.Fn fetch char\e *str
+.It Fn fetch "char *str"
+can also be created by
+.Ql \&.Fn fetch "\\*qchar *str\\*q"
+.El
+.Pp
+If the
+.Ql \e
+or quotes
+were omitted,
+.Ql \&.Fn
+would see three arguments and
+the result would be:
+.Pp
+.Dl Fn fetch char *str
+.Pp
+For an example of what happens when the parameter list overlaps
+a newline boundary, see the
+.Sx BUGS
+section.
+.Ss Trailing Blank Space Characters
+.Xr Troff
+can be confused by blank space characters at the end of a line.
+It
+is a wise preventive measure to globally remove all blank spaces
+from <blank-space><end-of-line> character sequences.
+Should the need
+arise to force a blank character at the end of a line,
+it may be forced with an unpaddable space and the
+.Ql \e&
+escape character.
+For example,
+.Ql string\e\ \e& .
+.Ss Escaping Special Characters
+Special characters
+like the newline character
+.Ql \en ,
+are handled by replacing the
+.Ql \e
+with
+.Ql \ee
+(e.g.
+.Ql \een )
+to preserve
+the backslash.
+.Sh THE ANATOMY OF A MAN PAGE
+The body of a man page is easily constructed from a basic
+template found in the file
+.Pa /usr/share/misc/mdoc.template .
+Several example man pages can also be found
+in 
+.Pa /usr/share/examples/mdoc .
+.Pp
+.Ss A manual page template
+.Bd -literal -offset indent
+\&.\e" The following requests are required for all man pages.
+\&.Dd Month day, year
+\&.Os OPERATING_SYSTEM [version/release]
+\&.Dt DOCUMENT_TITLE [section number] [volume]
+\&.Sh NAME
+\&.Nm name
+\&.Nd one line description of name
+\&.Sh SYNOPSIS
+\&.Sh DESCRIPTION
+\&.\e" The following requests should be uncommented and
+\&.\e" used where appropriate.  This next request is
+\&.\e" for sections 2 and 3 function return values only.
+\&.\e" .Sh RETURN VALUES
+\&.\e" This next request is for sections 1, 6, 7 & 8 only
+\&.\e" .Sh ENVIRONMENT
+\&.\e" .Sh FILES
+\&.\e" .Sh EXAMPLES
+\&.\e" This next request is for sections 1, 6, 7 & 8 only
+\&.\e"     (command return values (to shell) and
+\&.\e"	  fprintf/stderr type diagnostics)
+\&.\e" .Sh DIAGNOSTICS
+\&.\e" The next request is for sections 2 and 3 error
+\&.\e" and signal handling only.
+\&.\e" .Sh ERRORS
+\&.\e" .Sh SEE ALSO
+\&.\e" .Sh CONFORMING TO
+\&.\e" .Sh HISTORY
+\&.\e" .Sh AUTHORS
+\&.\e" .Sh BUGS
+.Ed
+.Pp
+The first items in the template are the macros
+.Pq Li \&.Dd , \&.Os , \&.Dt ;
+the document date,
+the operating system the man page or subject source is developed
+or modified for,
+and the man page title
+.Pq Em in upper case
+along with the section of the manual the page
+belongs in.
+These macros identify the page,
+and are discussed below in
+.Sx TITLE MACROS .
+.Pp
+The remaining items in the template are section headers
+.Pq Li \&.Sh ;
+of which
+.Sx NAME ,
+.Sx SYNOPSIS
+and
+.Sx DESCRIPTION
+are mandatory.
+The
+headers are
+discussed in
+.Sx PAGE STRUCTURE DOMAIN ,
+after
+presentation of
+.Sx MANUAL DOMAIN .
+Several content macros are used to demonstrate page layout macros;
+reading about content macros before page layout macros is
+recommended.
+.Sh TITLE MACROS
+The title macros are the first portion of the page structure
+domain, but are presented first and separate for someone who
+wishes to start writing a man page yesterday.
+Three header macros designate the document title or manual page title,
+the operating system,
+and the date of authorship.
+These macros are one called once at the very beginning of the document
+and are used to construct the headers and footers only.
+.Bl -tag -width 6n
+.It Li \&.Dt DOCUMENT_TITLE section# [volume]
+The document title is the
+subject of the man page and must be in
+.Tn CAPITALS
+due to troff
+limitations.
+The section number may be 1,\ ...,\ 8,
+and if it is specified,
+the volume title may be omitted.
+A volume title may be arbitrary or one of the following:
+.\" .Cl
+.\" USD	UNIX User's Supplementary Documents
+.\" .Cl
+.\" PS1	UNIX Programmer's Supplementary Documents
+.Pp
+.Bl -column SMM -offset indent -compact
+.It Li AMD	UNIX Ancestral Manual Documents
+.It Li SMM	UNIX System Manager's Manual
+.It Li URM	UNIX Reference Manual
+.It Li PRM	UNIX Programmer's Manual
+.El
+.Pp
+The default volume labeling is
+.Li URM
+for sections 1, 6, and 7;
+.Li SMM
+for section 8;
+.Li PRM
+for sections 2, 3, 4, and 5.
+.\" .Cl
+.\" MMI	UNIX Manual Master Index
+.\" .Cl
+.\" CON	UNIX Contributed Software Manual
+.\" .Cl
+.\" LOC	UNIX Local Manual
+.It Li \&.Os operating_system release#
+The name of the operating system
+should be the common acronym, e.g.
+.Tn BSD
+or
+.Tn FreeBSD
+or
+.Tn ATT .
+The release should be the standard release
+nomenclature for the system specified, e.g. 4.3, 4.3+Tahoe, V.3,
+V.4.
+Unrecognized arguments are displayed as given in the page footer.
+For instance, a typical footer might be:
+.Pp
+.Dl \&.Os BSD 4.3
+.Pp
+or
+.Dl \&.Os FreeBSD 2.2
+.Pp
+or for a locally produced set
+.Pp
+.Dl \&.Os CS Department
+.Pp
+The Berkeley default,
+.Ql \&.Os
+without an argument, has been defined as
+.Tn BSD
+in the
+site specific file
+.Pa /usr/share/tmac/mdoc/doc-common .
+It really should default to
+.Tn LOCAL .
+Note, if the
+.Ql \&.Os
+macro is not present, the bottom left corner of the page
+will be ugly.
+.It Li \&.Dd month day, year
+The date should be written formally:
+.Pp
+.ne 5
+.Dl January 25, 1989
+.El
+.Sh INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS
+.Ss What's in a name...
+The manual domain macro names are derived from the day to day
+informal language used to describe commands, subroutines and related
+files.
+Slightly different variations of this language are used to describe
+the three different aspects of writing a man page.
+First, there is the description of
+.Nm \-mdoc
+macro request usage.
+Second is the description of a
+.Ux
+command
+.Em with
+.Nm \-mdoc
+macros and third,
+the description of a command to a user in the verbal sense;
+that is, discussion of a command in the text of a man page.
+.Pp
+In the first case,
+.Xr troff 1
+macros are themselves a type of command;
+the general syntax for a troff command is:
+.Bd -filled -offset indent
+\&.Va argument1 argument2 ... argument9
+.Ed
+.Pp
+The
+.Ql \&.Va
+is a macro command or request, and anything following it is an argument to
+be processed.
+In the second case,
+the description of a
+.Ux
+command using the content macros is a
+bit more involved;
+a typical
+.Sx SYNOPSIS
+command line might be displayed as:
+.Bd -filled -offset indent
+.Nm filter
+.Op Fl flag
+.Ar infile outfile
+.Ed
+.Pp
+Here,
+.Nm filter
+is the command name and the
+bracketed string
+.Fl flag
+is a
+.Em flag
+argument designated as optional by the option brackets.
+In
+.Nm \-mdoc
+terms,
+.Ar infile
+and
+.Ar outfile
+are
+called
+.Em arguments .
+The macros which formatted the above example:
+.Bd -literal -offset indent
+\&.Nm filter
+\&.Op \&Fl flag
+\&.Ar infile outfile
+.Ed
+.Pp
+In the third case, discussion of commands and command syntax
+includes both examples above, but may add more detail.
+The
+arguments
+.Ar infile
+and
+.Ar outfile
+from the example above might be referred to as
+.Em operands
+or
+.Em file arguments .
+Some command line argument lists are quite long:
+.Bl -tag -width make -offset indent
+.It Nm make
+.Op Fl eiknqrstv
+.Op Fl D Ar variable
+.Op Fl d Ar flags
+.Op Fl f Ar makefile
+.Bk -words
+.Op Fl I Ar directory
+.Ek
+.Op Fl j Ar max_jobs
+.Op Ar variable=value
+.Bk -words
+.Op Ar target ...
+.Ek
+.El
+.Pp
+Here one might talk about the command
+.Nm make
+and qualify the argument
+.Ar makefile ,
+as an argument to the flag,
+.Fl f ,
+or discuss the optional
+file
+operand
+.Ar target .
+In the verbal context, such detail can prevent confusion,
+however the
+.Nm \-mdoc
+package
+does not have a macro for an argument
+.Em to
+a flag.
+Instead the
+.Ql \&Ar
+argument macro is used for an operand or file argument like
+.Ar target
+as well as an argument to a flag like
+.Ar variable .
+The make command line was produced from:
+.Bd -literal -offset indent
+\&.Nm make
+\&.Op Fl eiknqrstv
+\&.Op Fl D Ar variable
+\&.Op Fl d Ar flags
+\&.Op Fl f Ar makefile
+\&.Op Fl I Ar directory
+\&.Op Fl j Ar max_jobs
+\&.Op Ar variable=value
+\&.Bk -words
+\&.Op Ar target ...
+\&.Ek
+.Ed
+.Pp
+The
+.Ql \&.Bk
+and
+.Ql \&.Ek
+macros are explained in
+.Sx Keeps .
+.Ss General Syntax
+The manual domain and general text domain macros share a similar
+syntax with a few minor deviations:
+.Ql \&.Ar ,
+.Ql \&.Fl ,
+.Ql \&.Nm ,
+and
+.Ql \&.Pa
+differ only when called without arguments;
+.Ql \&.Fn
+and
+.Ql \&.Xr
+impose an order on their argument lists
+and the
+.Ql \&.Op
+and
+.Ql \&.Fn
+macros
+have nesting limitations.
+All content macros
+are capable of recognizing and properly handling punctuation,
+provided each punctuation character is separated by a leading space.
+If an request is given:
+.Pp
+.Dl \&.Li sptr, ptr),
+.Pp
+The result is:
+.Pp
+.Dl Li sptr, ptr),
+.Pp
+The punctuation is not recognized and all is output in the
+literal font. If the punctuation is separated by a leading
+white space:
+.Pp
+.Dl \&.Li "sptr , ptr ) ,"
+.Pp
+The result is:
+.Pp
+.Dl Li sptr , ptr ) ,
+.Pp
+The punctuation is now recognized and is output in the
+default font distinguishing it from the strings in literal font.
+.Pp
+To remove the special meaning from a punctuation character
+escape it with
+.Ql \e& .
+.Xr Troff
+is limited as a macro language, and has difficulty
+when presented with a string containing
+a member of the mathematical, logical or
+quotation set:
+.Bd -literal -offset indent-two
+\&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
+.Ed
+.Pp
+The problem is that
+.Xr troff
+may assume it is supposed to actually perform the operation
+or evaluation suggested by the characters.  To prevent
+the accidental evaluation of these characters,
+escape them with
+.Ql \e& .
+Typical syntax is shown in the first content macro displayed
+below,
+.Ql \&.Ad .
+.Sh MANUAL DOMAIN
+.Ss Address Macro
+The address macro identifies an address construct
+of the form addr1[,addr2[,addr3]].
+.Pp
+.Dl Usage: .Ad address ... \*(Pu
+.Bl -tag -width ".Ad f1 , f2 , f3 :" -compact -offset 14n
+.It Li \&.Ad addr1
+.Ad addr1
+.It Li \&.Ad addr1\ .
+.Ad addr1 .
+.It Li \&.Ad addr1\ , file2
+.Ad addr1 , file2
+.It Li \&.Ad f1\ , f2\ , f3\ :
+.Ad f1 , f2 , f3 :
+.It Li \&.Ad addr\ )\ )\ ,
+.Ad addr ) ) ,
+.El
+.Pp
+It is an error to call
+.Ql \&.Ad
+without arguments.
+.Ql \&.Ad
+is callable by other macros and is parsed.
+.Ss Author Name
+The
+.Ql \&.An
+macro is used to specify the name of the author of the item being
+documented, or the name of the author of the actual manual page.
+Any remaining arguments after the name information are assumed 
+to be punctuation.
+.Pp
+.Dl Usage: .An author_name \*(Pu
+.Bl -tag -width ".An Joe Author ) ) ," -compact -offset 14n
+.It Li \&.An Joe\ Author
+.An Joe Author
+.It Li \&.An Joe\ Author\ ,
+.An Joe\ Author ,
+.It Li \&.An Joe\ Author\ \&Aq\ nobody at FreeBSD.ORG
+.An Joe Author Aq nobody at FreeBSD.ORG
+.It Li \&.An Joe\ Author\ )\ )\ ,
+.An Joe Author ) ) ,
+.El
+.Pp
+The
+.Ql \&.An
+macro is parsed and is callable.
+It is an error to call
+.Ql \&.An
+without
+any arguments.
+.Ss Argument Macro
+The
+.Ql \&.Ar
+argument macro may be used whenever
+a command line argument is referenced.
+.Pp
+.Dl Usage: .Ar argument ... \*(Pu
+.Bl -tag -width ".Ar file1 file2" -compact -offset 15n
+.It Li \&.Ar
+.Ar
+.It Li \&.Ar file1
+.Ar file1
+.It Li \&.Ar file1\ .
+.Ar file1 .
+.It Li \&.Ar file1 file2
+.Ar file1 file2
+.It Li \&.Ar f1 f2 f3\ :
+.Ar f1 f2 f3 :
+.It Li \&.Ar file\ )\ )\ ,
+.Ar file ) ) ,
+.El
+.Pp
+If
+.Ql \&.Ar
+is called without arguments
+.Ql Ar
+is assumed.
+The
+.Ql \&.Ar
+macro is parsed and is callable.
+.Ss Configuration Declaration (section four only)
+The
+.Ql \&.Cd
+macro is used to demonstrate a
+.Xr config 8
+declaration for a device interface in a section four manual.
+This macro accepts quoted arguments (double quotes only).
+.Pp
+.Bl -tag -width "device le0 at scode?" -offset indent
+.It Cd "device le0 at scode?"
+produced by:
+.Ql ".Cd device le0 at scode?" .
+.El
+.Ss Command Modifier
+The command modifier is identical to the
+.Ql \&.Fl
+(flag) command with the exception
+the
+.Ql \&.Cm
+macro does not assert a dash
+in front of every argument.
+Traditionally flags are marked by the
+preceding dash, some commands or subsets of commands do not use them.
+Command modifiers may also be specified in conjunction with interactive
+commands such as editor commands.
+See
+.Sx Flags .
+.Ss Defined Variables
+A variable which is defined in an include file is specified
+by the macro
+.Ql \&.Dv .
+.Pp
+.Dl Usage: .Dv defined_variable ... \*(Pu
+.Bl -tag -width ".Dv MAXHOSTNAMELEN" -compact -offset 14n
+.It Li ".Dv MAXHOSTNAMELEN"
+.Dv MAXHOSTNAMELEN
+.It Li ".Dv TIOCGPGRP )"
+.Dv TIOCGPGRP )
+.El
+.Pp
+It is an error to call
+.Ql \&.Dv
+without arguments.
+.Ql \&.Dv
+is parsed and is callable.
+.Ss Errno's (Section two only)
+The
+.Ql \&.Er
+errno macro specifies the error return value
+for section two library routines.
+The second example
+below shows
+.Ql \&.Er
+used with the
+.Ql \&.Bq
+general text domain macro, as it would be used in
+a section two manual page.
+.Pp
+.Dl Usage: .Er ERRNOTYPE ... \*(Pu
+.Bl -tag -width ".Bq Er ENOTDIR" -compact -offset 14n
+.It Li \&.Er ENOENT
+.Er ENOENT
+.It Li \&.Er ENOENT\ )\ ;
+.Er ENOENT ) ;
+.It Li \&.Bq \&Er ENOTDIR
+.Bq Er ENOTDIR
+.El
+.Pp
+It is an error to call
+.Ql \&.Er
+without arguments.
+The
+.Ql \&.Er
+macro is parsed and is callable.
+.Ss Environment Variables
+The
+.Ql \&.Ev
+macro specifies an environment variable.
+.Pp
+.Dl Usage: .Ev argument ... \*(Pu
+.Bl -tag -width ".Ev PRINTER ) ) ," -compact -offset 14n
+.It Li \&.Ev DISPLAY
+.Ev  DISPLAY
+.It Li \&.Ev PATH\ .
+.Ev PATH .
+.It Li \&.Ev PRINTER\ )\ )\ ,
+.Ev PRINTER ) ) ,
+.El
+.Pp
+It is an error to call
+.Ql \&.Ev
+without arguments.
+The
+.Ql \&.Ev
+macro is parsed and is callable.
+.Ss Function Argument
+The
+.Ql \&.Fa
+macro is used to refer to function arguments (parameters)
+outside of the
+.Sx SYNOPSIS
+section of the manual or inside
+the
+.Sx SYNOPSIS
+section should a parameter list be too
+long for the
+.Ql \&.Fn
+macro and the enclosure macros
+.Ql \&.Fo
+and
+.Ql \&.Fc
+must be used.
+.Ql \&.Fa
+may also be used to refer to structure members.
+.Pp
+.Dl Usage: .Fa function_argument ... \*(Pu
+.Bl -tag -width ".Fa d_namlen\ )\ )\ ," -compact -offset 14n
+.It Li \&.Fa d_namlen\ )\ )\ ,
+.Fa d_namlen ) ) ,
+.It Li \&.Fa iov_len
+.Fa iov_len
+.El
+.Pp
+It is an error to call
+.Ql \&.Fa
+without arguments.
+.Ql \&.Fa
+is parsed and is callable.
+.Ss Function Declaration
+The
+.Ql \&.Fd
+macro is used in the
+.Sx SYNOPSIS
+section with section two or three
+functions.
+The
+.Ql \&.Fd
+macro does not call other macros and is not callable by other
+macros.
+.Pp
+.Dl Usage: .Fd include_file (or defined variable)
+.Pp
+In the
+.Sx SYNOPSIS
+section a
+.Ql \&.Fd
+request causes a line break if a function has already been presented
+and a break has not occurred.
+This leaves a nice vertical space
+in between the previous function call and the declaration for the
+next function.
+.Ss Flags
+The
+.Ql \&.Fl
+macro handles command line flags.
+It prepends
+a dash,
+.Ql \- ,
+to the flag.
+For interactive command flags, which
+are not prepended with a dash, the
+.Ql \&.Cm
+(command modifier)
+macro is identical, but without the dash.
+.Pp
+.Dl Usage: .Fl argument ... \*(Pu
+.Bl -tag -width ".Fl \-s \-t \-v" -compact -offset 14n
+.It Li \&.Fl
+.Fl
+.It Li \&.Fl cfv
+.Fl cfv
+.It Li \&.Fl cfv\ .
+.Fl cfv .
+.It Li \&.Fl s v t
+.Fl s v t
+.It Li \&.Fl -\ ,
+.Fl - ,
+.It Li \&.Fl xyz\ )\ ,
+.Fl xyz ) ,
+.El
+.Pp
+The
+.Ql \&.Fl
+macro without any arguments results
+in a dash representing stdin/stdout.
+Note that giving
+.Ql \&.Fl
+a single dash, will result in two dashes.
+The
+.Ql \&.Fl
+macro is parsed and is callable.
+.Ss Functions (library routines)
+The .Fn macro is modeled on ANSI C conventions.
+.Bd -literal
+Usage: .Fn [type] function [[type] parameters ... \*(Pu]
+.Ed
+.Bl -tag -width ".Fn .int align. .const * char *sptrsxx" -compact
+.It Li "\&.Fn getchar"
+.Fn getchar
+.It Li "\&.Fn strlen ) ,"
+.Fn strlen ) ,
+.It Li \&.Fn "\\*qint align\\*q" "\\*qconst * char *sptrs\\*q" ,
+.Fn "int align" "const * char *sptrs" ,
+.El
+.Pp
+It is an error to call
+.Ql \&.Fn
+without any arguments.
+The
+.Ql \&.Fn
+macro
+is parsed and is callable,
+note that any call to another macro signals the end of
+the
+.Ql \&.Fn
+call (it will close-parenthesis at that point).
+.Pp
+For functions that have more than eight parameters (and this
+is rare), the
+macros
+.Ql \&.Fo
+(function open)
+and
+.Ql \&.Fc
+(function close)
+may be used with
+.Ql \&.Fa
+(function argument)
+to get around the limitation. For example:
+.Bd -literal -offset indent
+\&.Fo "int res_mkquery"
+\&.Fa "int op"
+\&.Fa "char *dname"
+\&.Fa "int class"
+\&.Fa "int type"
+\&.Fa "char *data"
+\&.Fa "int datalen"
+\&.Fa "struct rrec *newrr"
+\&.Fa "char *buf"
+\&.Fa "int buflen"
+\&.Fc
+.Ed
+.Pp
+Produces:
+.Bd -filled -offset indent
+.Fo "int res_mkquery"
+.Fa "int op"
+.Fa "char *dname"
+.Fa "int class"
+.Fa "int type"
+.Fa "char *data"
+.Fa "int datalen"
+.Fa "struct rrec *newrr"
+.Fa "char *buf"
+.Fa "int buflen"
+.Fc
+.Ed
+.Pp
+The
+.Ql \&.Fo
+and
+.Ql \&.Fc
+macros are parsed and are callable.
+In the
+.Sx SYNOPSIS
+section, the function will always begin at
+the beginning of line.
+If there is more than one function
+presented in the
+.Sx SYNOPSIS
+section and a function type has not been
+given, a line break will occur, leaving a nice vertical space
+between the current function name and the one prior.
+At the moment,
+.Ql \&.Fn
+does not check its word boundaries
+against troff line lengths and may split across a newline
+ungracefully.
+This will be fixed in the near future.
+.Ss Function Type
+This macro is intended for the
+.Sx SYNOPSIS
+section.
+It may be used
+anywhere else in the man page without problems, but its main purpose
+is to present the function type in kernel normal form for the
+.Sx SYNOPSIS
+of sections two and three
+(it causes a line break allowing the function name to appear
+on the next line).
+.Pp
+.Dl Usage: .Ft type ... \*(Pu
+.Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
+.It Li \&.Ft struct stat
+.Ft struct stat
+.El
+.Pp
+The
+.Ql \&.Ft
+request is not callable by other macros.
+.Ss Interactive Commands
+The
+.Ql \&.Ic
+macro designates an interactive or internal command.
+.Pp
+.Dl Usage: .Ic argument ... \*(Pu
+.Bl -tag -width ".Ic setenv , unsetenvxx" -compact -offset 14n
+.It Li \&.Ic :wq
+.Ic :wq
+.It Li \&.Ic do while {...}
+.Ic do while {...}
+.It Li \&.Ic setenv\ , unsetenv
+.Ic setenv , unsetenv
+.El
+.Pp
+It is an error to call
+.Ql \&.Ic
+without arguments.
+The
+.Ql \&.Ic
+macro is parsed and is callable.
+.Ss Name Macro
+The
+.Ql \&.Nm
+macro is used for the document title or subject name.
+It has the peculiarity of remembering the first
+argument it was called with, which should
+always be the subject name of the page.
+When called without
+arguments,
+.Ql \&.Nm
+regurgitates this initial name for the sole purpose
+of making less work for the author.
+Note:
+a section two
+or three document function name is addressed with the
+.Ql \&.Nm
+in the
+.Sx NAME
+section, and with
+.Ql \&.Fn
+in the
+.Sx SYNOPSIS
+and remaining sections.
+For interactive commands, such as the
+.Ql while
+command keyword in
+.Xr csh 1 ,
+the
+.Ql \&.Ic
+macro should be used.
+While the
+.Ql \&.Ic
+is nearly identical
+to
+.Ql \&.Nm ,
+it can not recall the first argument it was invoked with.
+.Pp
+.Dl Usage: .Nm argument ... \*(Pu
+.Bl -tag -width ".Nm mdoc.sample" -compact -offset 14n
+.It Li \&.Nm mdoc.sample
+.Nm  mdoc.sample
+.It Li \&.Nm \e-mdoc
+.Nm \-mdoc .
+.It Li \&.Nm foo\ )\ )\ ,
+.Nm foo ) ) ,
+.It Li \&.Nm
+.Nm
+.El
+.Pp
+The
+.Ql \&.Nm
+macro is parsed and is callable.
+.Ss Options
+The
+.Ql \&.Op
+macro
+places option brackets around the any remaining arguments on the command
+line, and places any
+trailing punctuation outside the brackets.
+The macros
+.Ql \&.Oc
+and
+.Ql \&.Oo
+may be used across one or more lines.
+.Pp
+.Dl Usage: .Op options ... \*(Pu
+.Bl -tag -width ".Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
+.It Li \&.Op
+.Op
+.It Li ".Op Fl k"
+.Op Fl k
+.It Li ".Op Fl k ) ."
+.Op Fl k ) .
+.It Li ".Op Fl k Ar kookfile"
+.Op Fl k Ar kookfile
+.It Li ".Op Fl k Ar kookfile ,"
+.Op Fl k Ar kookfile ,
+.It Li ".Op Ar objfil Op Ar corfil"
+.Op Ar objfil Op Ar corfil
+.It Li ".Op Fl c Ar objfil Op Ar corfil ,"
+.Op Fl c Ar objfil Op Ar corfil ,
+.It Li \&.Op word1 word2
+.Op word1 word2
+.El
+.Pp
+The
+.Ql \&.Oc
+and
+.Ql \&.Oo
+macros:
+.Bd -literal -offset indent
+\&.Oo
+\&.Op \&Fl k \&Ar kilobytes
+\&.Op \&Fl i \&Ar interval
+\&.Op \&Fl c \&Ar count
+\&.Oc
+.Ed
+.Pp
+Produce:
+.Oo
+.Op Fl k Ar kilobytes
+.Op Fl i Ar interval
+.Op Fl c Ar count
+.Oc
+.Pp
+The macros
+.Ql \&.Op ,
+.Ql \&.Oc
+and
+.Ql \&.Oo
+are parsed and are callable.
+.Ss Pathnames
+The
+.Ql \&.Pa
+macro formats path or file names.
+.Pp
+.Dl Usage: .Pa pathname \*(Pu
+.Bl -tag -width ".Pa /tmp/fooXXXXX ) ." -compact -offset 14n
+.It Li \&.Pa /usr/share
+.Pa /usr/share
+.It Li \&.Pa /tmp/fooXXXXX\ )\ .
+.Pa /tmp/fooXXXXX ) .
+.El
+.Pp
+The
+.Ql \&.Pa
+macro is parsed and is callable.
+.Ss Variables
+Generic variable reference:
+.Pp
+.Dl Usage: .Va variable ... \*(Pu
+.Bl -tag -width ".Va char s ] ) ) ," -compact -offset 14n
+.It Li \&.Va count
+.Va count
+.It Li \&.Va settimer ,
+.Va settimer ,
+.It Li \&.Va int\ *prt\ )\ :
+.Va int\ *prt ) :
+.It Li \&.Va char\ s\ ]\ )\ )\ ,
+.Va char\ s ] ) ) ,
+.El
+.Pp
+It is an error to call
+.Ql \&.Va
+without any arguments.
+The
+.Ql \&.Va
+macro is parsed and is callable.
+.Ss Manual Page Cross References
+The
+.Ql \&.Xr
+macro expects the first argument to be
+a manual page name, and the second argument, if it exists,
+to be either a section page number or punctuation.
+Any
+remaining arguments are assumed to be punctuation.
+.Pp
+.Dl Usage: .Xr man_page [1,...,8] \*(Pu
+.Bl -tag -width ".Xr mdoc 7 ) ) ," -compact -offset 14n
+.It Li \&.Xr mdoc
+.Xr mdoc
+.It Li \&.Xr mdoc\ ,
+.Xr mdoc ,
+.It Li \&.Xr mdoc 7
+.Xr mdoc 7
+.It Li \&.Xr mdoc 7\ )\ )\ ,
+.Xr mdoc 7 ) ) ,
+.El
+.Pp
+The
+.Ql \&.Xr
+macro is parsed and is callable.
+It is an error to call
+.Ql \&.Xr
+without
+any arguments.
+.Sh GENERAL TEXT DOMAIN
+.Ss AT&T Macro
+.Bd -literal -offset indent -compact
+Usage: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
+.Ed
+.Bl -tag -width ".At v6 ) ," -compact -offset 14n
+.It Li ".At"
+.At
+.It Li ".At v6 ."
+.At v6 .
+.El
+.Pp
+The
+.Ql \&.At
+macro is
+.Em not
+parsed and
+.Em not
+callable. It accepts at most two arguments.
+.Ss BSD Macro
+.Dl Usage: .Bx [Version/release] ... \*(Pu
+.Bl -tag -width ".Bx 4.3 ) ," -compact -offset 14n
+.It Li ".Bx"
+.Bx
+.It Li ".Bx 4.3 ."
+.Bx 4.3 .
+.El
+.Pp
+The
+.Ql \&.Bx
+macro is parsed and is callable.
+.Ss FreeBSD Macro
+.Bd -literal -offset indent -compact
+Usage: .Fx Version.release ... \*(Pu
+.Ed
+.Bl -tag -width ".Fx 2.2 ) ," -compact -offset 14n
+.It Li ".Fx 2.2 ."
+.Fx 2.2 .
+.El
+.Pp
+The
+.Ql \&.Fx
+macro is
+.Em not
+parsed and
+.Em not
+callable. It accepts at most two arguments.
+.Ss UNIX Macro
+.Dl Usage: .Ux ... \*(Pu
+.Bl -tag -width ".Ux 4.3 ) ," -compact -offset 14n
+.It Li ".Ux"
+.Ux
+.El
+.Pp
+The
+.Ql \&.Ux
+macro is parsed and is callable.
+.Ss Enclosure and Quoting Macros
+The concept of enclosure is similar to quoting.
+The object being to enclose one or more strings between
+a pair of characters like quotes or parentheses.
+The terms quoting and enclosure are used
+interchangeably throughout this document.
+Most of the
+one line enclosure macros end
+in small letter
+.Ql q
+to give a hint of quoting, but there are a few irregularities.
+For each enclosure macro
+there is also a pair of open and close macros which end
+in small letters
+.Ql o
+and
+.Ql c
+respectively.
+These can be used across one or more lines of text
+and while they have nesting limitations, the one line quote macros
+can be used inside
+of them.
+.Pp
+.ne 5
+.Bd -filled -offset indent
+.Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
+.Em " Quote	 Close	 Open	Function	Result"
+\&.Aq	.Ac	.Ao	Angle Bracket Enclosure	<string>
+\&.Bq	.Bc	.Bo	Bracket Enclosure	[string]
+\&.Dq	.Dc	.Do	Double Quote	``string''
+	.Ec	.Eo	Enclose String (in XX)	XXstringXX
+\&.Pq	.Pc	.Po	Parenthesis Enclosure	(string)
+\&.Ql			Quoted Literal	`st' or string
+\&.Qq	.Qc	.Qo	Straight Double Quote	"string"
+\&.Sq	.Sc	.So	Single Quote	`string'
+.El
+.Ed
+.Pp
+Except for the irregular macros noted below, all
+of the quoting macros are parsed and callable.
+All handle punctuation properly, as long as it
+is presented one character at a time and separated by spaces.
+The quoting macros examine opening and closing punctuation
+to determine whether it comes before or after the
+enclosing string. This makes some nesting possible.
+.Bl -tag -width xxx,xxxx
+.It Li \&.Ec , \&.Eo
+These macros expect the first argument to be the
+opening and closing strings respectively.
+.It Li \&.Ql
+The quoted literal macro behaves differently for
+.Xr troff
+than
+.Xr nroff .
+If formatted with
+.Xr nroff ,
+a quoted literal is always quoted. If formatted with
+troff, an item is only quoted if the width
+of the item is less than three constant width characters.
+This is to make short strings more visible where the font change
+to literal (constant width) is less noticeable.
+.It Li \&.Pf
+The prefix macro is not callable, but it is parsed:
+.Bl -tag -width "(namexx" -offset indent
+.It Li ".Pf ( Fa name2"
+becomes
+.Pf ( Fa name2 .
+.El
+.Pp
+The
+.Ql \&.Ns
+(no space) macro performs the analogous suffix function.
+.El
+.Pp
+.ne 4
+Examples of quoting:
+.Bl -tag -width ".Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
+.It Li \&.Aq
+.Aq
+.It Li \&.Aq \&Ar ctype.h\ )\ ,
+.Aq Ar ctype.h ) ,
+.It Li \&.Bq
+.Bq
+.It Li \&.Bq \&Em Greek \&, French \&.
+.Bq Em Greek , French .
+.It Li \&.Dq
+.Dq
+.It Li ".Dq string abc ."
+.Dq string abc .
+.It Li ".Dq \'^[A-Z]\'"
+.Dq \'^[A-Z]\'
+.It Li "\&.Ql man mdoc"
+.Ql man mdoc
+.It Li \&.Qq
+.Qq
+.It Li "\&.Qq string ) ,"
+.Qq string ) ,
+.It Li "\&.Qq string Ns ),"
+.Qq string Ns ),
+.It Li \&.Sq
+.Sq
+.It Li "\&.Sq string
+.Sq string
+.El
+.Pp
+For a good example of nested enclosure macros, see the
+.Ql \&.Op
+option macro.
+It was created from the same
+underlying enclosure macros as those presented in the list
+above.
+The
+.Ql \&.Xo
+and
+.Ql \&.Xc
+extended argument list macros
+were also built from the same underlying routines and are a good
+example of
+.Nm \-mdoc
+macro usage at its worst.
+.Ss No\-Op or Normal Text Macro
+The macro
+.Ql \&.No
+is
+a hack for words in a macro command line which should
+.Em not
+be formatted and follows the conventional syntax
+for content macros.
+.Ss No Space Macro
+The
+.Ql \&.Ns
+macro eliminates unwanted spaces in between macro requests.
+It is useful for old style argument lists where there is no space
+between the flag and argument:
+.Bl -tag -width ".Op Fl I Ns Ar directoryxx" -offset indent
+.It Li ".Op Fl I Ns Ar directory"
+produces
+.Op Fl I Ns Ar directory
+.El
+.Pp
+Note: the
+.Ql \&.Ns
+macro always invokes the
+.Ql \&.No
+macro after eliminating the space unless another macro name
+follows it.
+The macro
+.Ql \&.Ns
+is parsed and is callable.
+.Ss Section Cross References
+The
+.Ql \&.Sx
+macro designates a reference to a section header
+within the same document.
+It is parsed and is callable.
+.Pp
+.Bl -tag -width "Li \&.Sx FILES" -offset 14n
+.It Li \&.Sx FILES
+.Sx FILES
+.El
+.Ss References and Citations
+The following macros make a modest attempt to handle references.
+At best, the macros make it convenient to manually drop in a subset of
+refer style references.
+.Pp
+.Bl -tag -width 6n -offset indent -compact
+.It Li ".Rs"
+Reference Start.
+Causes a line break and begins collection
+of reference information until the
+reference end macro is read.
+.It Li ".Re"
+Reference End.
+The reference is printed.
+.It Li ".%A"
+Reference author name, one name per invocation.
+.It Li ".%B"
+Book title.
+.It Li ".\&%C"
+City/place.
+.It Li ".\&%D"
+Date.
+.It Li ".%J"
+Journal name.
+.It Li ".%N"
+Issue number.
+.It Li ".%O"
+Optional information.
+.It Li ".%P"
+Page number.
+.It Li ".%R"
+Report name.
+.It Li ".%T"
+Title of article.
+.It Li ".%V"
+Volume(s).
+.El
+.Pp
+The macros beginning with
+.Ql %
+are not callable, and are parsed only for the trade name macro which
+returns to its caller.
+(And not very predictably at the moment either.)
+The purpose is to allow trade names
+to be pretty printed in
+.Xr troff Ns / Ns Xr ditroff
+output.
+.Ss Return Values
+The
+.Ql \&.Rv
+macro generates text for use in the
+.Sx RETURN VALUES
+section.
+.Pp
+.Dl Usage: .Rv [-std function]
+.Pp
+.Ql \&.Rv -std atexit
+will generate the following text:
+.Pp
+.\" fake chapter 3 to avoid error message from Rv
+.ds cH 3
+.Rv -std atexit
+.\" and back to 7 again
+.ds cH 7
+.Pp
+The
+.Fl std
+option is valid only for manual page sections 2 and 3.
+.Ss Trade Names (or Acronyms and Type Names)
+The trade name macro is generally a small caps macro for
+all upper case words longer than two characters.
+.Pp
+.Dl Usage: .Tn symbol ... \*(Pu
+.Bl -tag -width ".Tn ASCII" -compact -offset 14n
+.It Li \&.Tn DEC
+.Tn DEC
+.It Li \&.Tn ASCII
+.Tn ASCII
+.El
+.Pp
+The
+.Ql \&.Tn
+macro
+is parsed and is callable by other macros.
+.Ss Extended  Arguments
+The
+.Ql \&.Xo
+and
+.Ql \&.Xc
+macros allow one to extend an argument list
+on a macro boundary.
+Argument lists cannot
+be extended within a macro
+which expects all of its arguments on one line such
+as
+.Ql \&.Op .
+.Pp
+Here is an example of
+.Ql \&.Xo
+using the space mode macro to turn spacing off:
+.Bd -literal -offset indent
+\&.Sm off
+\&.It Xo Sy I Ar operation
+\&.No \een Ar count No \een
+\&.Xc
+\&.Sm on
+.Ed
+.Pp
+Produces
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.Sm off
+.It Xo Sy I Ar operation
+.No \en Ar count No \en
+.Xc
+.Sm on
+.El
+.Ed
+.Pp
+Another one:
+.Bd -literal -offset indent
+\&.Sm off
+\&.It Cm S No \&/ Ar old_pattern Xo
+\&.No \&/ Ar new_pattern
+\&.No \&/ Op Cm g
+\&.Xc
+\&.Sm on
+.Ed
+.Pp
+Produces
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.Sm off
+.It Cm S No \&/ Ar old_pattern Xo
+.No \&/ Ar new_pattern
+.No \&/ Op Cm g
+.Xc
+.Sm on
+.El
+.Ed
+.Pp
+Another example of
+.Ql \&.Xo
+and using enclosure macros:
+Test the value of an variable.
+.Bd -literal -offset indent
+\&.It Xo
+\&.Ic .ifndef
+\&.Oo \e&! Oc Ns Ar variable
+\&.Op Ar operator variable ...
+\&.Xc
+.Ed
+.Pp
+Produces
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.It Xo
+.Ic .ifndef
+.Oo \&! Oc Ns Ar variable
+.Op Ar operator variable ...
+.Xc
+.El
+.Ed
+.Pp
+All of the above examples have used the
+.Ql \&.Xo
+macro on the argument list of the
+.Ql \&.It
+(list-item)
+macro.
+The extend macros are not used very often, and when they are
+it is usually to extend the list-item argument list.
+Unfortunately, this is also where the extend macros are the
+most finicky.
+In the first two examples, spacing was turned off;
+in the third, spacing was desired in part of the output but
+not all of it.
+To make these macros work in this situation make sure
+the
+.Ql \&.Xo
+and
+.Ql \&.Xc
+macros are placed as shown in the third example.
+If the
+.Ql \&.Xo
+macro is not alone on the
+.Ql \&.It
+argument list, spacing will be unpredictable.
+The
+.Ql \&.Ns
+(no space macro)
+must not occur as the first or last macro on a line
+in this situation.
+Out of 900 manual pages (about 1500 actual pages)
+currently released with
+.Bx
+only fifteen use the
+.Ql \&.Xo
+macro.
+.Sh PAGE STRUCTURE DOMAIN
+.Ss Section Headers
+The first three
+.Ql \&.Sh
+section header macros
+list below are required in every
+man page.
+The remaining section headers
+are recommended at the discretion of the author
+writing the manual page.
+The
+.Ql \&.Sh
+macro can take up to nine arguments.
+It is parsed and but is not callable.
+.Bl -tag -width ".Sh SYNOPSIS"
+.It \&.Sh NAME
+The
+.Ql \&.Sh NAME
+macro is mandatory.
+If not specified,
+the headers, footers and page layout defaults
+will not be set and things will be rather unpleasant.
+The
+.Sx NAME
+section consists of at least three items.
+The first is the
+.Ql \&.Nm
+name macro naming the subject of the man page.
+The second is the Name Description macro,
+.Ql \&.Nd ,
+which separates the subject
+name from the third item, which is the description.
+The
+description should be the most terse and lucid possible,
+as the space available is small.
+.It \&.Sh SYNOPSIS
+The
+.Sx SYNOPSIS
+section describes the typical usage of the
+subject of a man page.
+The  macros required
+are either
+.Ql ".Nm" ,
+.Ql ".Cd" ,
+.Ql ".Fn" ,
+(and possibly
+.Ql ".Fo" ,
+.Ql ".Fc" ,
+.Ql ".Fd" ,
+.Ql ".Ft"
+macros).
+The function name
+macro
+.Ql ".Fn"
+is required
+for manual page sections 2 and 3, the command and general
+name macro
+.Ql \&.Nm
+is required for sections 1, 5, 6, 7, 8.
+Section 4 manuals require a
+.Ql ".Nm" , 
+.Ql ".Fd"
+or a
+.Ql ".Cd"
+configuration device usage macro.
+Several other macros may be necessary to produce
+the synopsis line as shown below:
+.Pp
+.Bd -filled -offset indent
+.Nm cat
+.Op Fl benstuv
+.Op Fl
+.Ar
+.Ed
+.Pp
+The following macros were used:
+.Pp
+.Dl \&.Nm cat
+.Dl \&.Op \&Fl benstuv
+.Dl \&.Op \&Fl
+.Dl \&.Ar
+.Pp
+.Sy Note :
+The macros
+.Ql \&.Op ,
+.Ql \&.Fl ,
+and
+.Ql \&.Ar
+recognize the pipe bar character
+.Ql \*(Ba ,
+so a command line such as:
+.Pp
+.Dl ".Op Fl a | Fl b"
+.Pp
+will not go orbital.
+.Xr Troff
+normally interprets a \*(Ba as a special operator.
+See
+.Sx PREDEFINED STRINGS
+for a usable \*(Ba
+character in other situations.
+.It \&.Sh DESCRIPTION
+In most cases the first text in the
+.Sx DESCRIPTION
+section
+is a brief paragraph on the command, function or file,
+followed by a lexical list of options and respective
+explanations.
+To create such a list, the
+.Ql \&.Bl
+begin-list,
+.Ql \&.It
+list-item and
+.Ql \&.El
+end-list
+macros are used (see
+.Sx Lists and Columns
+below).
+.El
+.Pp
+The following
+.Ql \&.Sh
+section headers are part of the
+preferred manual page layout and must be used appropriately
+to maintain consistency.
+They are listed in the order
+in which they would be used.
+.Bl -tag -width SYNOPSIS
+.It \&.Sh ENVIRONMENT
+The
+.Sx ENVIRONMENT
+section should reveal any related
+environment
+variables and clues to their behavior and/or usage.
+.It \&.Sh EXAMPLES
+There are several ways to create examples.
+See
+the
+.Sx EXAMPLES
+section below
+for details.
+.It \&.Sh FILES
+Files which are used or created by the man page subject
+should be listed via the
+.Ql \&.Pa
+macro in the
+.Sx FILES
+section.
+.It \&.Sh SEE ALSO
+References to other material on the man page topic and
+cross references to other relevant man pages should
+be placed in the
+.Sx SEE ALSO
+section.
+Cross references
+are specified using the
+.Ql \&.Xr
+macro.
+Cross references in the
+.Sx SEE ALSO
+section should be sorted by section number, and then
+placed in alphabetical order and comma separated.  For example:
+.Pp
+.Xr ls 1 ,
+.Xr ps 1 ,
+.Xr group 5 ,
+.Xr passwd 5 .
+.Pp
+At this time
+.Xr refer 1
+style references are not accommodated.
+.It \&.Sh CONFORMING TO
+If the command, library function or file adheres to a
+specific implementation such as
+.St -p1003.2
+or
+.St -ansiC
+this should be noted here.
+If the
+command does not adhere to any standard, its history
+should be noted in the
+.Sx HISTORY
+section.
+.It \&.Sh HISTORY
+Any command which does not adhere to any specific standards
+should be outlined historically in this section.
+.It \&.Sh AUTHORS
+Credits, if need be, should be placed here.
+.It \&.Sh DIAGNOSTICS
+Diagnostics from a command should be placed in this section.
+.It \&.Sh ERRORS
+Specific error handling, especially from library functions
+(man page sections 2 and 3) should go here.
+The
+.Ql \&.Er
+macro is used to specify an errno.
+.It \&.Sh BUGS
+Blatant problems with the topic go here...
+.El
+.Pp
+User specified
+.Ql \&.Sh
+sections may be added,
+for example, this section was set with:
+.Bd -literal -offset 14n
+\&.Sh PAGE STRUCTURE DOMAIN
+.Ed
+.Ss Paragraphs and Line Spacing.
+.Bl -tag -width 6n
+.It \&.Pp
+The
+.Ql \&.Pp
+paragraph command may
+be used to specify a line space where necessary.
+The macro is not necessary after a
+.Ql \&.Sh
+or
+.Ql \&.Ss
+macro or before
+a
+.Ql \&.Bl
+macro.
+(The
+.Ql \&.Bl
+macro asserts a vertical distance unless the -compact flag is given).
+.El
+.\" This worked with version one, need to redo for version three
+.\" .Pp
+.\" .Ds I
+.\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
+.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx\ (
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va ax
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy \+
+.\" .Cx
+.\" .Cl Cx \&(\&
+.\" .Va ax
+.\" .Cx +
+.\" .Va by
+.\" .Cx +
+.\" .Va c )
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cx \t
+.\" .Li \&.Va by
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy \+
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va c )
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.\" This example shows the same equation in a different format.
+.\" The spaces
+.\" around the
+.\" .Li \&+
+.\" signs were forced with
+.\" .Li \e :
+.\" .Pp
+.\" .Ds I
+.\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
+.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx\ (
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va a
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy x
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx \e\ +\e\ \e&
+.\" .Cx
+.\" .Cl Cx \&(\&
+.\" .Va a
+.\" .Sy x
+.\" .Cx \ +\ \&
+.\" .Va b
+.\" .Sy y
+.\" .Cx \ +\ \&
+.\" .Va c )
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cl Cx \t\t
+.\" .Li \&.Va b
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy y
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx \e\ +\e\ \e&
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va c )
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.\" The incantation below was
+.\" lifted from the
+.\" .Xr adb 1
+.\" manual page:
+.\" .Pp
+.\" .Ds I
+.\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx Op Sy ?/
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Nm m
+.\" .Cx
+.\" .Cl Cx Op Sy ?/
+.\" .Nm m
+.\" .Ad \ b1 e1 f1
+.\" .Op Sy ?/
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cx \t
+.\" .Li \&.Ar \e\ b1 e1 f1
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Op Sy ?/
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.Ss Keeps
+The only keep that is implemented at this time is for words.
+The macros are
+.Ql \&.Bk
+(begin-keep)
+and
+.Ql \&.Ek
+(end-keep).
+The only option that
+.Ql \&.Bk
+accepts is
+.Fl words
+and is useful for preventing line breaks in the middle of options.
+In the example for the make command line arguments (see
+.Sx What's in a name ) ,
+the keep prevented
+.Xr nroff
+from placing up the
+flag and the argument
+on separate lines.
+(Actually, the option macro used to prevent this from occurring,
+but was dropped when the decision (religious) was made to force
+right justified margins in
+.Xr troff
+as options in general look atrocious when spread across a sparse
+line.
+More work needs to be done with the keep macros, a
+.Fl line
+option needs to be added.)
+.Ss Examples and Displays
+There are five types of displays, a quickie one line indented display
+.Ql \&.D1 ,
+a quickie one line literal display
+.Ql \&.Dl ,
+and a block literal, block filled and block ragged which use
+the
+.Ql \&.Bd
+begin-display
+and
+.Ql \&.Ed
+end-display macros.
+.Pp
+.Bl -tag -width \&.Dlxx
+.It Li \&.D1
+(D-one) Display one line of indented text.
+This macro is parsed, but it is not callable.
+.Pp
+.Dl Fl ldghfstru
+.Pp
+The above was produced by:
+.Li \&.Dl Fl ldghfstru .
+.It Li \&.Dl
+(D-ell)
+Display one line of indented
+.Em literal
+text.
+The
+.Ql \&.Dl
+example macro has been used throughout this
+file.
+It allows
+the indent (display) of one line of text.
+Its default font is set to
+constant width (literal) however
+it is parsed and will recognized other macros.
+It is not callable however.
+.Pp
+.Dl % ls -ldg /usr/local/bin
+.Pp
+The above was produced by
+.Li \&.Dl % ls -ldg /usr/local/bin .
+.It Li \&.Bd
+Begin-display.
+The
+.Ql \&.Bd
+display must be ended with the
+.Ql \&.Ed
+macro.
+Displays may be nested within displays and
+lists.
+.Ql \&.Bd
+has the following syntax:
+.Pp
+.Dl ".Bd display-type [-offset offset_value] [-compact]"
+.Pp
+The display-type must be one of the following four types and
+may have an offset specifier for indentation:
+.Ql \&.Bd .
+.Pp
+.Bl -tag -width "file file_name  " -compact
+.It Fl ragged
+Display a block of text as typed,
+right (and left) margin edges are left ragged.
+.It Fl filled
+Display a filled (formatted) block.
+The block of text is formatted (the edges are filled \-
+not left unjustified).
+.It Fl literal
+Display a literal block, useful for source code or
+simple tabbed or spaced text.
+.It Fl file Ar file_name
+The file name following the
+.Fl file
+flag is read and displayed.
+Literal mode is
+asserted and tabs are set at 8 constant width character
+intervals, however any
+.Xr troff/ Ns Nm \-mdoc
+commands in file will be processed.
+.It Fl offset Ar string
+If
+.Fl offset
+is specified with one of the following strings, the string
+is interpreted to indicate the level of indentation for the
+forthcoming block of text:
+.Pp
+.Bl -tag -width "indent-two" -compact
+.It Ar left
+Align block on the current left margin,
+this is the default mode of
+.Ql \&.Bd .
+.It Ar center
+Supposedly center the block.
+At this time
+unfortunately, the block merely gets
+left aligned about an imaginary center margin.
+.It Ar indent
+Indents by one default indent value or tab.
+The default
+indent value is also used for the
+.Ql \&.D1
+display so one is guaranteed the two types of displays
+will line up.
+This indent is normally set to 6n or about two
+thirds of an inch (six constant width characters).
+.It Ar indent-two
+Indents two times the default indent value.
+.It Ar right
+This
+.Em left
+aligns the block about two inches from
+the right side of the page.
+This macro needs
+work and perhaps may never do the right thing by
+.Xr troff .
+.El
+.El
+.It ".Ed"
+End-display.
+.El
+.Ss Font Modes
+There are five macros for changing the appearance of the manual page text:
+.Bl -tag -width \&.Emxx
+.It \&.Em
+Text may be stressed or emphasized with the
+.Ql \&.Em
+macro.
+The usual font for emphasis is italic.
+.Pp
+.Dl Usage: .Em argument ... \*(Pu
+.Bl -tag -width ".Em vide infra ) ) ," -compact -offset 14n
+.It Li ".Em does not"
+.Em does not
+.It Li ".Em exceed 1024 ."
+.Em exceed 1024 .
+.It Li ".Em vide infra ) ) ,"
+.Em vide infra ) ) ,
+.El
+.Pp
+The
+.Ql \&.Em
+macro is parsed and is callable.
+It is an error to call
+.Ql \&.Em
+without arguments.
+.It \&.Li
+The
+.Ql \&.Li
+literal macro may be used for special characters,
+variable constants, anything which should be displayed as it
+would be typed.
+.Pp
+.Dl Usage: .Li argument ... \*(Pu
+.Bl -tag -width ".Li cntrl-D ) ,"  -compact -offset 14n
+.It Li \&.Li \een
+.Li \en
+.It Li \&.Li M1 M2 M3\ ;
+.Li M1 M2 M3 ;
+.It Li \&.Li cntrl-D\ )\ ,
+.Li cntrl-D ) ,
+.It Li \&.Li 1024\ ...
+.Li 1024 ...
+.El
+.Pp
+The
+.Ql \&.Li
+macro is parsed and is callable.
+.It \&.Sy
+The symbolic emphasis macro is generally a boldface macro in
+either the symbolic sense or the traditional English usage.
+.Pp
+.Dl Usage: .Sy symbol ... \*(Pu
+.Bl -tag -width ".Sy Important Noticex" -compact -offset 14n
+.It Li \&.Sy Important Notice
+.Sy Important Notice
+.El
+.Pp
+The
+.Ql \&.Sy
+macro is parsed and is callable.
+Arguments to
+.Ql \&.Sy
+may be quoted.
+.It Li \&.Bf
+Begin font mode.
+The
+.Ql \&.Bf
+font mode must be ended with the
+.Ql \&.Ef
+macro.
+Font modes may be nested within other font modes.
+.Ql \&.Bf
+has the following syntax:
+.Pp
+.Dl ".Bf font-mode"
+.Pp
+The font-mode must be one of the following three types:
+.Ql \&.Bf .
+.Pp
+.Bl -tag -width "file file_name  " -compact
+.It Sy \&Em | Fl emphasis
+Same as if the 
+.Ql \&.Em
+macro was used for the entire block of text.
+.It Sy \&Li | Fl literal
+Same as if the
+.Ql \&.Li
+macro was used for the entire block of text.
+.It Sy \&Sy | Fl symbolic
+Same as if the
+.Ql \&.Sy
+macro was used for the entire block of text.
+.El
+.It ".Ef"
+End font mode.
+.El
+.Ss Tagged Lists and Columns
+There are several types of lists which may be initiated with the
+.Ql ".Bl"
+begin-list macro.
+Items within the list
+are specified with the
+.Ql ".It"
+item macro and
+each list must end with the
+.Ql ".El"
+macro.
+Lists may be nested within themselves and within displays.
+Columns may be used inside of lists, but lists are unproven
+inside of columns.
+.Pp
+In addition, several list attributes may be specified such as
+the width of a tag, the list offset, and compactness
+(blank lines between items allowed or disallowed).
+Most of this document has been formatted with a tag style list
+.Pq Fl tag .
+For a change of pace, the list-type used to present the list-types
+is an over-hanging list
+.Pq Fl ohang .
+This type of list is quite popular with
+.Tn TeX
+users, but might look a bit funny after having read many pages of
+tagged lists.
+The following list types are accepted by
+.Ql ".Bl" :
+.Pp
+.Bl -ohang -compact
+.It Fl bullet
+.It Fl item
+.It Fl enum
+These three are the simplest types of lists.
+Once the
+.Ql ".Bl"
+macro has been given, items in the list are merely
+indicated by a line consisting solely of the
+.Ql ".It"
+macro.
+For example, the source text for a simple enumerated list
+would look like:
+.Bd -literal -offset indent-two
+\&.Bl -enum -compact
+\&.It
+\&Item one goes here.
+\&.It
+\&And item two here.
+\&.It
+\&Lastly item three goes here.
+\&.El
+.Ed
+.Pp
+The results:
+.Pp
+.Bl -enum -offset indent-two -compact
+.It
+Item one goes here.
+.It
+And item two here.
+.It
+Lastly item three goes here.
+.El
+.Pp
+A simple bullet list construction:
+.Bd -literal -offset indent-two
+\&.Bl -bullet -compact
+\&.It
+\&Bullet one goes here.
+\&.It
+\&Bullet two here.
+\&.El
+.Ed
+.Pp
+Produces:
+.Bl -bullet -offset indent-two -compact
+.It
+Bullet one goes here.
+.It
+Bullet two here.
+.El
+.Pp
+.It Fl tag
+.It Fl diag
+.It Fl hang
+.It Fl ohang
+.It Fl inset
+These list-types collect arguments specified with the
+.Ql \&.It
+macro and create a label which may be
+.Em inset
+into the forthcoming text,
+.Em hanged
+from the forthcoming text,
+.Em overhanged
+from above and not indented or
+.Em tagged .
+This
+list was constructed with the
+.Ql Fl ohang
+list-type.
+The
+.Ql \&.It
+macro is parsed only for the inset, hang
+and tag list-types and is not callable.
+Here is an example of inset labels:
+.Bl -inset -offset indent
+.It Em Tag
+The tagged list (also called a tagged paragraph) is the
+most common type of list used in the Berkeley manuals.
+.It Em Diag
+Diag lists create section four diagnostic lists
+and are similar to inset lists except callable
+macros are ignored.
+.It Em Hang
+Hanged labels are a matter of taste.
+.It Em Ohang
+Overhanging labels are nice when space is constrained.
+.It Em Inset
+Inset labels are useful for controlling blocks of
+paragraphs and are valuable for converting
+.Nm \-mdoc
+manuals to other formats.
+.El
+.Pp
+Here is the source text which produced the above example:
+.Bd -literal -offset indent
+\&.Bl -inset -offset indent
+\&.It Em Tag
+\&The tagged list (also called a tagged paragraph) is the
+\&most common type of list used in the Berkeley manuals.
+\&.It Em Diag
+\&Diag lists create section four diagnostic lists
+\&and are similar to inset lists except callable
+\&macros are ignored.
+\&.It Em Hang
+\&Hanged labels are a matter of taste.
+\&.It Em Ohang
+\&Overhanging labels are nice when space is constrained.
+\&.It Em Inset
+\&Inset labels are useful for controlling blocks of
+\&paragraphs and are valuable for converting
+\&.Nm \-mdoc
+\&manuals to other formats.
+\&.El
+.Ed
+.Pp
+Here is a hanged list with two items:
+.Bl -hang -offset indent
+.It Em Hanged
+labels appear similar to tagged lists when the
+label is smaller than the label width.
+.It Em Longer hanged list labels
+blend in to the paragraph unlike
+tagged paragraph labels.
+.El
+.Pp
+And the unformatted text which created it:
+.Bd -literal -offset indent
+\&.Bl -hang -offset indent
+\&.It Em Hanged
+\&labels appear similar to tagged lists when the
+\&label is smaller than the label width.
+\&.It Em Longer hanged list labels
+\&blend in to the paragraph unlike
+\&tagged paragraph labels.
+\&.El
+.Ed
+.Pp
+The tagged list which follows uses an optional width specifier to control
+the width of the tag.
+.Pp
+.Bl -tag -width "PAGEIN" -compact -offset indent
+.It SL
+sleep time of the process (seconds blocked)
+.It PAGEIN
+number of disk
+.Tn I/O Ns 's
+resulting from references
+by the process to pages not loaded in core.
+.It UID
+numerical user-id of process owner
+.It PPID
+numerical id of parent of process process priority
+(non-positive when in non-interruptible wait)
+.El
+.Pp
+The raw text:
+.Bd -literal -offset indent
+\&.Bl -tag -width "PAGEIN" -compact -offset indent
+\&.It SL
+\&sleep time of the process (seconds blocked)
+\&.It PAGEIN
+\&number of disk
+\&.Tn I/O Ns 's
+\&resulting from references
+\&by the process to pages not loaded in core.
+\&.It UID
+\&numerical user-id of process owner
+\&.It PPID
+\&numerical id of parent of process process priority
+\&(non-positive when in non-interruptible wait)
+\&.El
+.Ed
+.Pp
+Acceptable width specifiers:
+.Bl -tag -width Ar -offset indent
+.It Fl width Ar "\&Fl"
+sets the width to the default width for a flag.
+All callable
+macros have a default width value.
+The
+.Ql \&.Fl ,
+value is presently
+set to ten constant width characters or about five sixth of
+an inch.
+.It Fl width Ar "24n"
+sets the width to 24 constant width characters or about two
+inches.
+The
+.Ql n
+is absolutely necessary for the scaling to work correctly.
+.It Fl width Ar "ENAMETOOLONG"
+sets width to the constant width length of the
+string given.
+.It Fl width  Ar "\\*qint mkfifo\\*q"
+again, the width is set to the constant width of the string
+given.
+.El
+.Pp
+If a width is not specified for the tag list type, the first
+time
+.Ql \&.It
+is invoked, an attempt is made to determine an appropriate
+width.
+If the first argument to
+.Ql ".It"
+is a callable macro, the default width for that macro will be used
+as if the macro name had been supplied as the width.
+However,
+if another item in the list is given with a different callable
+macro name, a new and nested list is assumed.
+.Sh PREDEFINED STRINGS
+The following strings are predefined as may be used by
+preceding with the troff string interpreting sequence
+.Ql \&\e*(xx
+where
+.Em xx
+is the name of the defined string or as
+.Ql \&\e*x
+where
+.Em x
+is the name of the string.
+The interpreting sequence may be used any where in the text.
+.Pp
+.Bl -column "String " "Nroff " "Troff " -offset indent
+.It Sy "String	Nroff	Troff"
+.It Li "<=" Ta \&<\&= Ta \*(<=
+.It Li ">=" Ta \&>\&= Ta \*(>=
+.It Li "Rq" Ta "''" Ta \*(Rq
+.It Li "Lq" Ta "``" Ta \*(Lq
+.It Li "ua" Ta ^ Ta \*(ua
+.It Li "aa" Ta ' Ta \*(aa
+.It Li "ga" Ta \` Ta \*(ga
+.\" .It Li "sL" Ta ` Ta \*(sL
+.\" .It Li "sR" Ta ' Ta \*(sR
+.It Li "q" Ta \&" Ta \*q
+.It Li "Pi" Ta pi Ta \*(Pi
+.It Li "Ne" Ta != Ta \*(Ne
+.It Li "Le" Ta <= Ta \*(Le
+.It Li "Ge" Ta >= Ta \*(Ge
+.It Li "Lt" Ta < Ta \*(Gt
+.It Li "Gt" Ta > Ta \*(Lt
+.It Li "Pm" Ta +- Ta \*(Pm
+.It Li "If" Ta infinity Ta \*(If
+.It Li "Na" Ta \fINaN\fP Ta \*(Na
+.It Li "Ba" Ta \fR\&|\fP Ta \*(Ba
+.El
+.Pp
+.Sy Note :
+The string named
+.Ql q
+should be written as
+.Ql \e*q
+since it is only one char.
+.Sh DIAGNOSTICS
+The debugging facilities for
+.Nm \-mdoc
+are limited, but can help detect subtle errors such
+as the collision of an argument name with an internal
+register or macro name.
+(A what?)
+A register is an arithmetic storage class for
+.Xr troff
+with a one or two character name.
+All registers internal to
+.Nm \-mdoc
+for
+.Xr troff
+and
+.Xr ditroff
+are two characters and
+of the form <upper_case><lower_case> such as
+.Ql \&Ar ,
+<lower_case><upper_case> as
+.Ql \&aR
+or
+<upper or lower letter><digit> as
+.Ql \&C\&1 .
+And adding to the muddle,
+.Xr troff
+has its own internal registers all of which are either
+two lower case characters or a dot plus a letter or meta-character
+character.
+In one of the introduction examples, it was shown how to
+prevent the interpretation of a macro name with the escape sequence
+.Ql \e& .
+This is sufficient for the internal register names also.
+.Pp
+.\" Every callable macro name has a corresponding register
+.\" of the same name (<upper_case><lower_case>).
+.\" There are also specific registers which have
+.\" been used for stacks and arrays and are listed in the
+.\" .Sx Appendix .
+.\" .Bd -ragged -offset 4n
+.\" [A-Z][a-z]	registers corresponding to macro names (example ``Ar'')
+.\" [a-z][A-Z]	registers corresponding to macro names (example ``aR'')
+.\" C[0-9]		argument types (example C1)
+.\" O[0-9]		offset stack (displays)
+.\" h[0-9]		horizontal spacing stack (lists)
+.\" o[0-9]		offset (stack) (lists)
+.\" t[0-9]		tag stack (lists)
+.\" v[0-9]		vertical spacing stack (lists)
+.\" w[0-9]		width tag/label stack
+.\" .Ed
+.\" .Pp
+If a non-escaped register name is given in the argument list of a request
+unpredictable behavior will occur.
+In general, any time huge portions
+of text do not appear where expected in the output, or small strings
+such as list tags disappear, chances are there is a misunderstanding
+about an argument type in the argument list.
+Your mother never intended for you to remember this evil stuff - so here
+is a way to find out whether or not your arguments are valid: The
+.Ql \&.Db
+(debug)
+macro displays the interpretation of the argument list for most
+macros.
+Macros such as the
+.Ql \&.Pp
+(paragraph)
+macro do not contain debugging information.
+All of the callable macros do,
+and it is strongly advised whenever in doubt,
+turn on the
+.Ql \&.Db
+macro.
+.Pp
+.Dl Usage: \&.Db [on | off]
+.Pp
+An example of a portion of text with
+the debug macro placed above and below an
+artificially created problem (a flag argument
+.Ql \&aC
+which should be
+.Ql \e&aC
+in order to work):
+.Bd -literal -offset indent
+\&.Db on
+\&.Op Fl aC Ar file )
+\&.Db off
+.Ed
+.Pp
+The resulting output:
+.Bd -literal -offset indent
+DEBUGGING ON
+DEBUG(argv) MACRO: `.Op'  Line #: 2
+	Argc: 1  Argv: `Fl'  Length: 2
+	Space: `'  Class: Executable
+	Argc: 2  Argv: `aC'  Length: 2
+	Space: `'  Class: Executable
+	Argc: 3  Argv: `Ar'  Length: 2
+	Space: `'  Class: Executable
+	Argc: 4  Argv: `file'  Length: 4
+	Space: ` '  Class: String
+	Argc: 5  Argv: `)'  Length: 1
+	Space: ` '  Class: Closing Punctuation or suffix
+	MACRO REQUEST: .Op Fl aC Ar file )
+DEBUGGING OFF
+.Ed
+.Pp
+The first line of information tells the name of the calling
+macro, here
+.Ql \&.Op ,
+and the line number it appears on.
+If one or more files are involved
+(especially if text from another file is included) the line number
+may be bogus.
+If there is only one file, it should be accurate.
+The second line gives the argument count, the argument
+.Pq Ql \&Fl
+and its length.
+If the length of an argument is two characters, the
+argument is tested to see if it is executable (unfortunately, any
+register which contains a non-zero value appears executable).
+The third line gives the space allotted for a class, and the
+class type.
+The problem here is the argument aC should not be
+executable.
+The four types of classes are string, executable, closing
+punctuation and opening punctuation.
+The last line shows the entire
+argument list as it was read.
+In this next example, the offending
+.Ql \&aC
+is escaped:
+.Bd -literal -offset indent
+\&.Db on
+\&.Em An escaped \e&aC
+\&.Db off
+.Ed
+.Bd -literal -offset indent
+DEBUGGING ON
+DEBUG(fargv) MACRO: `.Em'  Line #: 2
+	Argc: 1  Argv: `An'  Length: 2
+	Space: ` '  Class: String
+	Argc: 2  Argv: `escaped'  Length: 7
+	Space: ` '  Class: String
+	Argc: 3  Argv: `aC'  Length: 2
+	Space: ` '  Class: String
+	MACRO REQUEST: .Em An escaped &aC
+DEBUGGING OFF
+.Ed
+.Pp
+The argument
+.Ql \e&aC
+shows up with the same length of 2 as the
+.Ql \e&
+sequence produces a zero width, but a register
+named
+.Ql \e&aC
+was not found and the type classified as string.
+.Pp
+Other diagnostics consist of usage statements and are self explanatory.
+.Sh GROFF, TROFF AND NROFF
+The
+.Nm \-mdoc
+package does not need compatibility mode with
+.Xr groff .
+.Pp
+The package inhibits page breaks, and the headers and footers
+which normally occur at those breaks with
+.Xr nroff ,
+to make the manual more efficient for viewing on-line.
+At the moment,
+.Xr groff
+with
+.Fl T Ns Ar ascii
+does eject the imaginary remainder of the page at end of file.
+The inhibiting of the page breaks makes
+.Xr nroff Ns 'd
+files unsuitable for hardcopy.
+There is a register named
+.Ql \&cR
+which can be set to zero in the site dependent style file
+.Pa /usr/src/share/tmac/doc-nroff
+to restore the old style behavior.
+.Sh FILES
+.Bl -tag -width /usr/share/man0/template.doc -compact
+.It Pa /usr/share/tmac/tmac.doc
+manual macro package
+.It Pa /usr/share/misc/mdoc.template
+template for writing a man page
+.It Pa /usr/share/examples/mdoc/*
+several example man pages
+.El
+.Sh SEE ALSO
+.Xr man 1 ,
+.Xr troff 1 ,
+.Xr mdoc 7
+.Sh BUGS
+Undesirable hyphenation on the dash of a flag
+argument is not yet resolved, and causes
+occasional mishaps in the
+.Sx DESCRIPTION
+section.
+(line break on the hyphen).
+.Pp
+Predefined strings are not declared in documentation.
+.Pp
+Section 3f has not been added to the header routines.
+.Pp
+.Ql \&.Nm
+font should be changed in
+.Sx NAME
+section.
+.Pp
+.Ql \&.Fn
+needs to have a check to prevent splitting up
+if the line length is too short.
+Occasionally it
+separates the last parenthesis, and sometimes
+looks ridiculous if a line is in fill mode.
+.Pp
+The method used to prevent header and footer page
+breaks (other than the initial header and footer) when using
+nroff occasionally places an unsightly partially filled line (blank)
+at the would be bottom of the page.
+.Pp
+The list and display macros to not do any keeps
+and certainly should be able to.
+.\" Note what happens if the parameter list overlaps a newline
+.\" boundary.
+.\" to make sure a line boundary is crossed:
+.\" .Bd -literal
+.\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
+.\" .Ed
+.\" .Pp
+.\" produces, nudge nudge,
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
+.\" nudge
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
+.\" .Pp
+.\" If double quotes are used, for example:
+.\" .Bd -literal
+.\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
+.\" .Ed
+.\" .Pp
+.\" produces, nudge nudge,
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
+.\" nudge
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
+.\" nudge
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
+.\" .Pp
+.\" Not a pretty sight...
+.\" In a paragraph, a long parameter containing unpaddable spaces as
+.\" in the former example will cause
+.\" .Xr troff
+.\" to break the line and spread
+.\" the remaining words out.
+.\" The latter example will adjust nicely to
+.\" justified margins, but may break in between an argument and its
+.\" declaration.
+.\" In
+.\" .Xr nroff
+.\" the right margin adjustment is normally ragged and the problem is
+.\" not as severe.
diff --git a/raw/man7/move.7 b/raw/man7/move.7
new file mode 100644
index 0000000..75e4ef8
--- /dev/null
+++ b/raw/man7/move.7
@@ -0,0 +1,56 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "MOVE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+MOVE \- position a cursor
+
+.SH SYNOPSIS
+.sp
+.nf
+MOVE [ \fIdirection\fR { FROM | IN } ] \fIcursorname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBMOVE\fR repositions a cursor without retrieving any data.
+\fBMOVE\fR works exactly like the \fBFETCH\fR
+command, except it only positions the cursor and does not return rows.
+.PP
+Refer to 
+FETCH [\fBfetch\fR(7)]
+for details on syntax and usage.
+.SH "OUTPUTS"
+.PP
+On successful completion, a \fBMOVE\fR command returns a command
+tag of the form
+.sp
+.nf
+MOVE \fIcount\fR
+.sp
+.fi
+The \fIcount\fR is the number
+of rows moved over (possibly zero).
+.SH "EXAMPLES"
+.sp
+.nf
+BEGIN WORK;
+DECLARE liahona CURSOR FOR SELECT * FROM films;
+
+-- Skip the first 5 rows:
+MOVE FORWARD 5 IN liahona;
+MOVE 5
+
+-- Fetch the 6th row from the cursor liahona:
+FETCH 1 FROM liahona;
+ code  | title  | did | date_prod  |  kind  |  len
+-------+--------+-----+------------+--------+-------
+ P_303 | 48 Hrs | 103 | 1982-10-22 | Action | 01:37
+(1 row)
+
+-- Close the cursor liahona and end the transaction:
+CLOSE liahona;
+COMMIT WORK;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBMOVE\fR statement in the SQL standard.
diff --git a/raw/man7/netdevice.7 b/raw/man7/netdevice.7
new file mode 100644
index 0000000..792e768
--- /dev/null
+++ b/raw/man7/netdevice.7
@@ -0,0 +1,263 @@
+'\" t
+.\" Don't change the first line, it tells man that tbl is needed.
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: netdevice.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH NETDEVICE  7 1999-05-02 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+netdevice \- Low level access to Linux network devices.
+.SH SYNOPSIS
+.B "#include <sys/ioctl.h>"
+.br
+.B "#include <net/if.h>"
+.SH DESCRIPTION
+This man page describes the sockets interface which is used to configure
+network devices.
+
+Linux supports some standard ioctls to configure network devices. They 
+can be used on any socket's file descriptor regardless of the family or type. 
+They pass an 
+.B ifreq 
+structure:
+
+.nf
+.ta 4 12 20
+struct ifreq {
+	char	ifr_name[IFNAMSIZ];	/* Interface name */
+	union {
+		struct sockaddr	ifr_addr;
+		struct sockaddr	ifr_dstaddr;
+		struct sockaddr	ifr_broadaddr;
+		struct sockaddr	ifr_netmask;
+		struct sockaddr	ifr_hwaddr;
+		short	ifr_flags;
+		int	ifr_ifindex;
+		int	ifr_metric;
+		int	ifr_mtu;
+		struct ifmap	ifr_map;
+		char	ifr_slave[IFNAMSIZ];
+		char	ifr_newname[IFNAMSIZ];
+		char *	ifr_data;
+	};
+};
+
+struct ifconf { 
+  	int ifc_len;		/* size of buffer */
+	union {            
+		char *	ifc_buf; /* buffer address */ 
+		struct ifreq *ifc_req; /* array of structures */
+	};  
+}; 	   
+.ta
+.fi
+
+Normally, the user specifies which device to affect by setting
+.B ifr_name
+to the name of the interface. All other members of the structure may 
+share memory. 
+
+.SH IOCTLS
+If an ioctl is marked as privileged then using it requires an effective
+user id of 0 or the
+.B CAP_NET_ADMIN
+capability. If this is not the case 
+.B EPERM
+will be returned.
+
+.TP
+.B SIOCGIFNAME
+Given the
+.BR ifr_ifindex ,
+return the name of the interface in
+.BR ifr_name .
+This is the only ioctl which returns its result in
+.BR ifr_name .
+
+.TP
+.B SIOCGIFINDEX
+Retrieve the interface index of the interface into
+.BR ifr_ifindex .
+
+.TP
+.BR SIOCGIFFLAGS ", " SIOCSIFFLAGS
+Get or set the active flag word of the device.
+.B ifr_flags
+contains a bitmask of the following values:
+
+.TS
+tab(:);
+c s
+l l.
+Device flags
+IFF_UP:Interface is running.
+IFF_BROADCAST:Valid broadcast address set.
+IFF_DEBUG:Internal debugging flag.
+IFF_LOOPBACK:Interface is a loopback interface.
+IFF_POINTOPOINT:Interface is a point-to-point link.
+IFF_RUNNING:Resources allocated.
+IFF_NOARP:No arp protocol, L2 destination address not set.
+IFF_PROMISC:Interface is in promiscuous mode.
+IFF_NOTRAILERS:Avoid use of trailers.
+IFF_ALLMULTI:Receive all multicast packets.
+IFF_MASTER:Master of a load balancing bundle.
+IFF_SLAVE:Slave of a load balancing bundle.
+IFF_MULTICAST:Supports multicast
+IFF_PORTSEL:Is able to select media type via ifmap.
+IFF_AUTOMEDIA:Auto media selection active.
+IFF_DYNAMIC:T{
+The addresses are lost when the interface goes down.
+T}
+.TE 
+
+Setting the active flag word is a privileged operation, but any
+process may read it.
+.TP
+.BR SIOCGIFMETRIC ", " SIOCSIFMETRIC
+Get or set the metric of the device using
+.BR ifr_metric .
+This is currently not implemented; it sets
+.B ifr_metric
+to 0 if you attempt to read it and returns
+.B EOPNOTSUPP
+if you attempt to set it.
+.TP
+.BR SIOCGIFMTU ", " SIOCSIFMTU
+Get or set the MTU (Maximum Transfer Unit) of a device using
+.BR ifr_mtu .
+Setting the MTU is a privileged operation. Setting the MTU to
+too small values may cause kernel crashes.
+.TP
+.BR SIOCGIFHWADDR ", " SIOCSIFHWADDR
+Get or set the hardware address of a device using
+.BR ifr_hwaddr .
+The hardware address is specified in a struct
+.IR sockaddr .
+.I sa_family 
+contains the ARPHRD_* device type, 
+.I sa_data
+the L2 hardware address starting from byte 0. 
+Setting the hardware address is a privileged operation.
+.TP
+.B SIOCSIFHWBROADCAST
+Set the hardware broadcast address of a device from
+.BR ifr_hwaddr .
+This is a privileged operation.
+.TP
+.BR SIOCGIFMAP ", " SIOCSIFMAP
+Get or set the interface's hardware parameters using
+.BR ifr_map .
+Setting the parameters is a privileged operation.
+
+.nf
+.ta 4 20 42
+struct ifmap 
+{
+	unsigned long	mem_start;
+	unsigned long	mem_end;
+	unsigned short	base_addr; 
+	unsigned char	irq;	
+	unsigned char	dma; 
+	unsigned char	port; 
+};
+.ta
+.fi
+
+The interpretation of the ifmap structure depends on the device driver
+and the architecture.
+.TP
+.BR SIOCADDMULTI ", " SIOCDELMULTI
+Add an address to or delete an address from the device's link layer
+multicast filters using
+.BR ifr_hwaddr .
+These are privileged operations.
+See also
+.BR packet (7)
+for an alternative.
+.TP
+.BR SIOCGIFTXQLEN ", " SIOCSIFTXQLEN
+Get or set the transmit queue length of a device using
+.BR ifr_qlen .
+Setting the transmit queue length is a privileged operation.
+.TP
+.B SIOCSIFNAME
+Changes the name of the interface specified in 
+.BR ifr_name
+to
+.BR ifr_newname .
+This is a privileged operation. It is only allowed when the interface
+is not up.
+.TP
+.B SIOCGIFCONF
+Return a list of interface (transport layer) addresses. This currently
+means only addresses of the AF_INET (IPv4) family for compatibility. 
+The user passes a 
+.B ifconf
+structure as argument to the ioctl. It contains a pointer to an array of
+.I ifreq
+structures in 
+.B ifc_req
+and its length in bytes in 
+.B ifc_len.
+The kernel fills the ifreqs with all current L3 interface addresses that
+are running: 
+.I ifr_name 
+contains the interface name (eth0:1 etc.),  
+.I ifr_addr
+the address.
+The kernel returns with the actual length in 
+.IR ifc_len .
+If 
+.I ifc_len
+is equal to the original length the buffer probably has overflowed
+and you should retry with a bigger buffer to get all addresses.
+When no error occurs the ioctl returns 0;
+otherwise \-1. Overflow is no error.
+\" XXX Slaving isn't supported in 2.2
+.\" .TP
+.\" .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
+.\" Get or set the slave device using
+.\" .BR ifr_slave .
+.\" Setting the slave device is a privileged operation.
+.\" .PP
+.\" XXX add amateur radio stuff.
+.PP
+Most protocols support their own ioctls to configure protocol specific 
+interface options. See the protocol man pages for a description.
+For configuring IP addresses see 
+.BR ip (7).
+.PP
+In addition some devices support private ioctls. These are not described here.
+.SH NOTES
+Strictly seen,
+.B SIOCGIFCONF 
+is IP specific and belongs in 
+.BR ip (7).
+.LP
+The names of interfaces with no addresses or that don't have the
+.B IFF_RUNNING 
+flag set can be found via
+.IR /proc/net/dev .
+.LP
+Local IPv6 IP addresses can be found via /proc/net or via 
+.BR rtnetlink (7).
+.SH BUGS
+glibc 2.1 is missing the 
+.I ifr_newname 
+macro in net/if.h. Add the following to your program as workaround:
+.sp
+.RS
+.nf
+.ta 4 20 42
+#ifndef ifr_newname
+#define ifr_newname     ifr_ifru.ifru_slave
+#endif
+.ta
+.fi
+.RE
+.SH "SEE ALSO"
+.BR ip (7),
+.BR proc (7),
+.BR rtnetlink (7)
diff --git a/raw/man7/netlink.7 b/raw/man7/netlink.7
new file mode 100644
index 0000000..7fd36bb
--- /dev/null
+++ b/raw/man7/netlink.7
@@ -0,0 +1,253 @@
+'\" t
+.\" Don't change the first line, it tells man that tbl is needed.
+.\" This man page copyright 1998 by Andi Kleen. Subject to the GPL.
+.\" This manpage copyright 1998 by Andi Kleen. Subject to the GPL.
+.\" Based on the original comments from Alexey Kuznetsov
+.\" $Id: netlink.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH NETLINK  7 1999-04-27 "Linux Man Page" "Linux Programmer's Manual"
+.SH NAME
+netlink, PF_NETLINK \- Communication between kernel and user.
+.SH SYNOPSIS
+.nf
+.\" XXX
+.B #include <asm/types.h>
+.br
+.B #include <sys/socket.h>
+.br
+.B #include <linux/netlink.h> 
+.br
+.PP
+.BI "netlink_socket = socket(PF_NETLINK, " socket_type ", " netlink_family ); 
+.SH DESCRIPTION
+Netlink is used to transfer information between kernel modules and user space processes.  
+It consists of a standard sockets based interface for user processes and an
+internal kernel API for kernel modules. The internal kernel interface is not 
+documented in this man page. Also there is an obsolete netlink interface via
+netlink character devices, this interface is not documented here and is only
+provided for backwards compatibility. 
+
+Netlink is a datagram oriented service.  Both
+.B SOCK_RAW 
+and
+.B SOCK_DGRAM
+are valid values for
+.IR socket_type ;
+however the netlink protocol does not distinguish between
+datagram and raw sockets.
+
+.I netlink_family
+selects the kernel module or netlink group to communicate with. 
+The currently assigned netlink families are:
+.TP
+.B NETLINK_ROUTE
+Receives routing updates and may be used to modify the IPv4 routing
+table (see
+.BR rtnetlink (7)).
+.TP
+.B NETLINK_FIREWALL 
+Receives packets sent by the IPv4 firewall code.
+.TP
+.B NETLINK_ARPD
+For managing the arp table in user space.
+.TP
+.B NETLINK_ROUTE6
+Receives and sends IPv6 routing table updates.
+.TP
+.B NETLINK_IP6_FW
+to receive packets that failed the IPv6 firewall checks (currently not
+implemented).
+.TP
+.BR NETLINK_TAPBASE ... NETLINK_TAPBASE+15
+are the instances of the
+.B ethertap
+device. Ethertap is a pseudo network tunnel device that allows an
+ethernet driver to be simulated from user space.
+.TP
+.B NETLINK_SKIP
+Reserved for ENskip.
+.TP
+.B NETLINK_USERSOCK
+is reserved for future user space protocols.
+.PP
+Netlink messages consist of a byte stream with one or multiple 
+.B nlmsghdr
+headers and associated payload.
+For multipart messages the first and all following headers have the
+.B NLM_F_MULTI
+flag set, except for the last header
+which has the type
+.BR NLMSG_DONE .
+The byte stream should only be accessed with the standard
+.B NLMSG_*
+macros, see
+.BR netlink (3). 
+
+Netlink is not a reliable protocol.  It tries its best to deliver a 
+message to its destination(s), but may drop messages when an out of
+memory condition or other error occurs.  For reliable transfer the
+sender can request an acknowledgement from the receiver by setting the
+.B NLM_F_ACK
+flag.  An acknowledgment is an
+.B NLMSG_ERROR 
+packet with the error field set to 0.  The application must generate
+acks for received messages itself.  The kernel tries to send an
+.B NLMSG_ERROR
+message for every failed packet.  A user process should follow this convention too. 
+
+Each netlink family has a set of 32 multicast groups.
+When
+.BR bind (2)
+is called on the socket, the
+.B nl_groups
+field in the
+.B sockaddr_nl
+should be set to a bitmask of the groups which it wishes to listen to.
+The default value for this field is zero which means that no multicasts
+will be received.
+A socket may multicast messages to any of the multicast groups by setting
+.B nl_groups
+to a bitmask of the groups it wishes to send to when it calls
+.BR sendmsg (2) 
+or does a 
+.BR connect (2).
+Only users with an effective uid of 0 or the
+.B CAP_NET_ADMIN
+capability may send or listen to
+a netlink multicast group.
+Any replies to a message received for a multicast group
+should be sent back to the sending pid and the multicast group. 
+
+.RS
+.nf
+.ta 4 13 25
+struct nlmsghdr
+{
+	__u32	nlmsg_len;	/* Length of message including header */
+	__u16	nlmsg_type;	/* Message content */
+	__u16	nlmsg_flags;	/* Additional flags */
+	__u32	nlmsg_seq;	/* Sequence number */
+	__u32	nlmsg_pid;	/* PID of the process that opened the socket */
+};
+
+
+struct nlmsgerr
+{
+	int	error;	/* negative errno or 0 for acks. */ 
+	struct nlmsghdr msg;	/* message header that caused the error */ 
+};
+.ta
+.fi
+.RE
+
+After each
+.B nlmsghdr
+the payload follows. 
+.B nlmsg_type
+can be one of the standard message types: 
+.B NLMSG_NOOP
+message is to be ignored,
+.B NLMSG_ERROR
+the message signals an error and the payload contains a 
+.I nlmsgerr 
+structure,
+.B NLMSG_DONE
+message terminates a multipart message,
+.\" 2.1.130 does not seem to use it.
+.\" .B NLMSG_OVERRUN
+.\" data was lost. 
+
+A netlink family usually specifies more message types, see the
+appropriate man pages for that, e.g. 
+.BR rtnetlink (7)
+for 
+.IR NETLINK_ROUTE .
+
+.TS 
+tab(:); 
+l s 
+l l.
+Standard Flag bits in nlmsg_flags
+NLM_F_REQUEST:set on all request messages
+NLM_F_MULTI:T{
+the message is part of a multipart message terminated by 
+.B 
+NLMSG_DONE
+.\" XXX describe that
+T}
+NLM_F_ACK:reply with an acknowledgment on success
+NLM_F_ECHO:echo this request
+.TE
+
+.TS
+tab(:);
+l s 
+l l.
+Additional flag bits for GET requests
+NLM_F_ROOT:Return the complete table instead of a single entry.
+NLM_F_MATCH:Not implemented yet. 
+NLM_F_ATOMIC:Return an atomic snapshot of the table.
+NLM_F_DUMP:not documented yet.
+.TE
+
+.TS
+tab(:);
+l s
+l l.
+Additional flag bits for NEW requests
+NLM_F_REPLACE:Override existing object.
+NLM_F_EXCL:Don't replace if the object already exists.
+NLM_F_CREATE:Create object if it doesn't already exist.
+NLM_F_APPEND:Add to the end of the object list.
+.TE
+
+Note that NLM_F_ATOMIC requires CAP_NET_ADMIN or super user rights.
+
+.SH "ADDRESS FORMATS"
+The
+.B sockaddr_nl
+structure describes a netlink client in user space or in the kernel.
+A sockaddr_nl can be either unicast (only send to one peer) or send 
+to netlink groups (nl_groups not equal 0). 
+
+.RS
+.nf
+struct sockaddr_nl
+{
+    sa_family_t nl_family;    /* AF_NETLINK */
+    unsigned short nl_pad;    /* zero */
+    pid_t       nl_pid;       /* process pid */
+    __u32       nl_groups;    /* multicast groups mask */
+};
+.fi
+.RE
+
+.B nl_pid
+is the pid of the process owning the destination socket, or 0 if the
+destination is in the kernel. 
+.B nl_groups 
+is a bitmask with every bit representing a netlink group number.
+.\" XXX describe what that is. 
+
+
+.SH BUGS
+This man page is not complete. 
+
+.SH NOTES
+It is often better to use netlink via 
+.B libnetlink
+than via the low level kernel interface.
+
+.SH VERSIONS
+The socket interface to netlink is a new feature of Linux 2.2
+
+Linux 2.0 supported a more primitive device based netlink interface (which
+is still available as a compatibility option). This obsolete interface is not
+described here. 
+
+.SH "SEE ALSO"
+.BR cmsg (3),
+.BR rtnetlink (7),
+.BR netlink (3)
+.PP
+ftp://ftp.inr.ac.ru/ip-routing/iproute2* 
+for libnetlink
diff --git a/raw/man7/notify.7 b/raw/man7/notify.7
new file mode 100644
index 0000000..0215680
--- /dev/null
+++ b/raw/man7/notify.7
@@ -0,0 +1,108 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "NOTIFY" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+NOTIFY \- generate a notification
+
+.SH SYNOPSIS
+.sp
+.nf
+NOTIFY \fIname\fR        
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+The \fBNOTIFY\fR command sends a notification event to each
+client application that has previously executed
+\fBLISTEN \fIname\fB\fR
+for the specified notification name in the current database.
+.PP
+The information passed to the client for a notification event includes the notification
+name and the notifying session's server process PID. It is up to the
+database designer to define the notification names that will be used in a given
+database and what each one means.
+.PP
+Commonly, the notification name is the same as the name of some table in
+the database, and the notify event essentially means, ``I changed this table,
+take a look at it to see what's new''. But no such association is enforced by
+the \fBNOTIFY\fR and \fBLISTEN\fR commands. For
+example, a database designer could use several different notification names
+to signal different sorts of changes to a single table.
+.PP
+\fBNOTIFY\fR provides a simple form of signal or
+interprocess communication mechanism for a collection of processes
+accessing the same PostgreSQL database.
+Higher-level mechanisms can be built by using tables in the database to
+pass additional data (beyond a mere notification name) from notifier to
+listener(s).
+.PP
+When \fBNOTIFY\fR is used to signal the occurrence of changes
+to a particular table, a useful programming technique is to put the
+\fBNOTIFY\fR in a rule that is triggered by table updates.
+In this way, notification happens automatically when the table is changed,
+and the application programmer can't accidentally forget to do it.
+.PP
+\fBNOTIFY\fR interacts with SQL transactions in some important
+ways. Firstly, if a \fBNOTIFY\fR is executed inside a
+transaction, the notify events are not delivered until and unless the
+transaction is committed. This is appropriate, since if the transaction
+is aborted, all the commands within it have had no
+effect, including \fBNOTIFY\fR. But it can be disconcerting if one
+is expecting the notification events to be delivered immediately. Secondly, if
+a listening session receives a notification signal while it is within a transaction,
+the notification event will not be delivered to its connected client until just
+after the transaction is completed (either committed or aborted). Again, the
+reasoning is that if a notification were delivered within a transaction that was
+later aborted, one would want the notification to be undone somehow---but
+the server cannot ``take back'' a notification once it has sent it to the client.
+So notification events are only delivered between transactions. The upshot of this
+is that applications using \fBNOTIFY\fR for real-time signaling
+should try to keep their transactions short.
+.PP
+\fBNOTIFY\fR behaves like Unix signals in one important
+respect: if the same notification name is signaled multiple times in quick
+succession, recipients may get only one notification event for several executions
+of \fBNOTIFY\fR. So it is a bad idea to depend on the number
+of notifications received. Instead, use \fBNOTIFY\fR to wake up
+applications that need to pay attention to something, and use a database
+object (such as a sequence) to keep track of what happened or how many times
+it happened.
+.PP
+It is common for a client that executes \fBNOTIFY\fR
+to be listening on the same notification name itself. In that case
+it will get back a notification event, just like all the other
+listening sessions. Depending on the application logic, this could
+result in useless work, for example, reading a database table to
+find the same updates that that session just wrote out. It is
+possible to avoid such extra work by noticing whether the notifying
+session's server process PID (supplied in the
+notification event message) is the same as one's own session's
+PID (available from \fBlibpq\fR). When they
+are the same, the notification event is one's own work bouncing
+back, and can be ignored. (Despite what was said in the preceding
+paragraph, this is a safe technique.
+PostgreSQL keeps self-notifications
+separate from notifications arriving from other sessions, so you
+cannot miss an outside notification by ignoring your own
+notifications.)
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+Name of the notification to be signaled (any identifier).
+.SH "EXAMPLES"
+.PP
+Configure and execute a listen/notify sequence from
+\fBpsql\fR:
+.sp
+.nf
+LISTEN virtual;
+NOTIFY virtual;
+Asynchronous notification "virtual" received from server process with PID 8448.
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBNOTIFY\fR statement in the SQL
+standard.
+.SH "SEE ALSO"
+LISTEN [\fBlisten\fR(7)], UNLISTEN [\fBunlisten\fR(l)]
+
diff --git a/raw/man7/packet.7 b/raw/man7/packet.7
new file mode 100644
index 0000000..7da6e2e
--- /dev/null
+++ b/raw/man7/packet.7
@@ -0,0 +1,410 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: packet.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH PACKET  7 1999-04-29 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+packet, PF_PACKET \- packet interface on device level. 
+
+.\" yes, this is ugly.
+.SH SYNOPSIS
+.nf
+.B #include <sys/socket.h>
+.br
+.B #include <features.h>	/* for the glibc version number */
+.br
+.B #if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1 
+.br
+.B #include <netpacket/packet.h>
+.br
+.B #include <net/ethernet.h>	/* the L2 protocols */
+.br
+.B #else
+.br
+.B #include <asm/types.h>
+.br
+.B #include <linux/if_packet.h>
+.br
+.B #include <linux/if_ether.h>	/* The L2 protocols */ 
+.br
+.B #endif
+.sp
+.PP
+.BI "packet_socket = socket(PF_PACKET, int " socket_type ", int "protocol ); 
+.fi
+.SH DESCRIPTION
+Packet sockets are used to receive or send raw packets at the device driver
+(OSI Layer 2)
+level. They allow the user to implement protocol modules in user space 
+on top of the physical layer.
+
+The
+.I socket_type
+is either 
+.B SOCK_RAW 
+for raw packets including the link level header or 
+.B SOCK_DGRAM
+for cooked packets with the link level header removed. The link level
+header information is available in a common format in a 
+.BR sockaddr_ll . 
+.I protocol 
+is the IEEE 802.3 protocol number in network order. See the 
+.B <linux/if_ether.h> 
+include file for a list of allowed protocols. When protocol 
+is set to
+.B htons(ETH_P_ALL) 
+then all protocols are received.
+All incoming packets of that protocol type will be passed to the packet
+socket before they are passed to the protocols implemented in the kernel.
+ 
+Only processes with effective uid 0 or the
+.B CAP_NET_RAW
+capability may open packet sockets. 
+
+.B SOCK_RAW
+packets are passed to and from the device driver without any changes in
+the packet data.  When receiving a packet, the address is still parsed and
+passed in a standard
+.B sockaddr_ll
+address structure.  When transmitting a packet, the user supplied buffer
+should contain the physical layer header.  That packet is then
+queued unmodified to the network driver of the interface defined by the
+destination address. Some device drivers always add other headers. 
+.B SOCK_RAW
+is similar to but not compatible with the obsolete 
+.B SOCK_PACKET
+of Linux 2.0.
+
+.B SOCK_DGRAM 
+operates on a slightly higher level. The physical header is removed before
+the packet is passed to the user.  Packets sent through a
+.B SOCK_DGRAM
+packet socket get a suitable physical layer header based on the information
+in the 
+.B sockaddr_ll 
+destination address before they are queued.
+
+By default all packets of the specified protocol type
+are passed to a packet socket. To only get packets from a specific interface
+use
+.BR bind (2)
+specifying an address in a
+.B struct sockaddr_ll
+to bind the packet socket to an interface. Only the 
+.B sll_protocol 
+and the
+.B sll_ifindex
+address fields are used for purposes of binding.
+
+The
+.BR connect (2)
+operation is not supported on packet sockets.
+
+When the
+.B MSG_TRUNC
+flag is passed to
+.BR recvmsg (2),
+.BR recv (2),
+.BR recvfrom (2)
+the real length of the packet on the wire is always returned, even when it
+is longer than the buffer.
+
+.SH "ADDRESS TYPES"
+The sockaddr_ll is a device independent physical layer address.
+
+.RS
+.nf
+.ta 4n 20n 35n
+struct sockaddr_ll {
+	unsigned short	sll_family;	/* Always AF_PACKET */
+	unsigned short	sll_protocol;	/* Physical layer protocol */
+	int	sll_ifindex;	/* Interface number */
+	unsigned short	sll_hatype;	/* Header type */	
+	unsigned char	sll_pkttype;	/* Packet type */
+	unsigned char	sll_halen;	/* Length of address */ 
+	unsigned char	sll_addr[8];	/* Physical layer address */
+};
+.ta
+.fi
+.RE
+
+.B sll_protocol 
+is the standard ethernet protocol type in network order as defined
+in the
+.B linux/if_ether.h   
+include file.  It defaults to the socket's protocol.
+.B sll_ifindex 
+is the interface index of the interface
+(see
+.BR netdevice (7));
+0 matches any interface (only legal for binding). 
+.B sll_hatype 
+is a ARP type as defined in the 
+.B linux/if_arp.h 
+include file.
+.B sll_pkttype 
+contains the packet type. Valid types are 
+.B PACKET_HOST
+for a packet addressed to the local host,
+.B PACKET_BROADCAST
+for a physical layer broadcast packet,
+.B PACKET_MULTICAST
+for a packet sent to a physical layer multicast address,
+.B PACKET_OTHERHOST
+for a packet to some other host that has been caught by a device driver
+in promiscuous mode, and
+.B PACKET_OUTGOING
+for a packet originated from the local host that is looped back to a packet
+socket. These types make only sense for receiving.
+.B sll_addr
+and
+.B sll_halen
+contain the physical layer (e.g. IEEE 802.3) address and its length. The 
+exact interpretation depends on the device.
+
+When you send packets it is enough to specify
+.BR sll_family ,
+.BR sll_addr ,
+.BR sll_halen ,
+.BR sll_ifindex .
+The other fields should be 0.
+.B sll_hatype
+and
+.B sll_pkttype
+are set on received packets for your information.
+For bind only
+.B sll_protocol
+and
+.B sll_ifindex
+are used.
+
+.SH "SOCKET OPTIONS"
+Packet sockets can be used to configure physical layer multicasting 
+and promiscuous mode. It works by calling 
+.BR setsockopt (2) 
+on a packet socket for SOL_PACKET and one of the options 
+.B PACKET_ADD_MEMBERSHIP 
+to add a binding or 
+.B PACKET_DROP_MEMBERSHIP
+to drop it.
+They both expect a 
+.B packet_mreq
+structure as argument:
+
+.RS
+.nf
+.ta 4n 20n 35n
+struct packet_mreq
+{
+	int	mr_ifindex;	/* interface index */
+	unsigned short	mr_type;	/* action */
+	unsigned short	mr_alen;	/* address length */
+	unsigned char	mr_address[8];	/* physical layer address */ 
+};
+.ta
+.fi
+.RE 
+
+.B mr_ifindex
+contains the interface index for the interface whose status
+should be changed.
+The
+.B mr_type
+parameter specifies which action to perform.
+.B PACKET_MR_PROMISC
+enables receiving all packets on a shared medium - often known as
+``promiscuous mode'',
+.B PACKET_MR_MULTICAST 
+binds the socket to the physical layer multicast group specified in 
+.B mr_address
+and
+.BR mr_alen ,
+and
+.B PACKET_MR_ALLMULTI
+sets the socket up to receive all multicast packets arriving at the interface. 
+
+In addition the traditional ioctls 
+.B SIOCSIFFLAGS,
+.B SIOCADDMULTI, 
+.B SIOCDELMULTI
+can be used for the same purpose.
+
+
+.SH IOCTLS
+.B SIOCGSTAMP
+can be used to receive the time stamp of the last received packet. Argument
+is a 
+.B struct timeval.
+
+In addition all standard ioctls defined in
+.BR netdevice (7)
+and 
+.BR socket (7)
+are valid on packet sockets.
+
+.SH "ERROR HANDLING"
+Packet sockets do no error handling other than errors occurred while passing
+the packet to the device driver. They don't have the concept of a pending
+error.
+
+.SH COMPATIBILITY
+In Linux 2.0, the only way to get a packet socket was by calling
+.BI "socket(PF_INET, SOCK_PACKET, " protocol )\fR.
+This is still supported but strongly deprecated.
+The main difference between the two methods is that
+.B SOCK_PACKET
+uses the old
+.B struct sockaddr_pkt
+to specify an interface, which doesn't provide physical layer independence.
+
+.RS
+.nf
+.ta 4n 20n 35n
+struct sockaddr_pkt
+{
+	unsigned short	spkt_family;
+	unsigned char	spkt_device[14];
+	unsigned short	spkt_protocol;
+};
+.ta
+.fi
+.RE
+
+.B spkt_family 
+contains 
+the device type,
+.B spkt_protocol 
+is the IEEE 802.3 protocol type as defined in
+.B <sys/if_ether.h>
+and
+.B spkt_device 
+is the device name as a null terminated string, e.g. eth0.  
+
+This structure is obsolete and should not be used in new code.
+
+.SH NOTES
+For portable programs it is suggested to use 
+.B PF_PACKET
+via 
+.BR pcap (3);
+although this only covers a subset of the
+.B PF_PACKET
+features.
+
+The
+.B SOCK_DGRAM
+packet sockets make no attempt to create or parse the IEEE 802.2 LLC header
+for a IEEE 802.3 frame. 
+When 
+.B ETH_P_802_3 
+is specified as protocol for sending the kernel creates the 
+802.3 frame and fills out the length field; the user has to supply the LLC 
+header to get a fully conforming packet. Incoming 802.3 packets are not 
+multiplexed on the DSAP/SSAP protocol fields; instead they are supplied to the 
+user as protocol 
+.B ETH_P_802_2
+with the LLC header prepended. It is thus not possible to bind to
+.B ETH_P_802_3;
+bind to 
+.B ETH_P_802_2 
+instead and do the protocol multiplex yourself.
+The default for sending is the standard Ethernet DIX 
+encapsulation with the protocol filled in. 
+
+Packet sockets are not subject to the input or output firewall chains.
+
+.SH ERRORS
+.TP
+.B ENETDOWN
+Interface is not up. 
+
+.TP
+.B ENOTCONN
+No interface address passed.
+
+.TP
+.B ENODEV
+Unknown device name or interface index specified in interface address.
+
+.TP
+.B EMSGSIZE
+Packet is bigger than interface MTU. 
+
+.TP
+.B ENOBUFS
+Not enough memory to allocate the packet.
+
+.TP
+.B EFAULT
+User passed invalid memory address.
+
+.TP
+.B EINVAL
+Invalid argument.
+
+.TP
+.B ENXIO
+Interface address contained illegal interface index.
+
+.TP
+.B EPERM
+User has insufficient privileges to carry out this operation.
+
+.TP
+.B EADDRNOTAVAIL
+Unknown multicast group address passed.
+
+.TP
+.B ENOENT
+No packet received.
+
+In addition other errors may be generated by the low-level driver.
+.SH VERSIONS
+.B PF_PACKET 
+is a new feature in Linux 2.2. Earlier Linux versions supported only
+.B SOCK_PACKET.
+
+.SH BUGS
+glibc 2.1 does not have a define for 
+.B SOL_PACKET.
+The suggested workaround is to use
+.RS
+.nf
+#ifndef SOL_PACKET
+#define SOL_PACKET 263
+#endif
+.fi
+.RE
+This is fixed in later glibc versions and also does not occur on libc5 systems.
+
+The IEEE 802.2/803.3 LLC handling could be considered as a bug. 
+
+Socket filters are not documented.
+
+The
+.I MSG_TRUNC
+recvmsg extension is an ugly hack and should be replaced by a control message.
+There is currently no way to get the original destination address of
+packets via SOCK_DGRAM.
+
+.SH CREDITS
+This man page was written by Andi Kleen with help from Matthew Wilcox.
+PF_PACKET in Linux 2.2 was implemented
+by Alexey Kuznetsov, based on code by Alan Cox and others.
+
+.SH "SEE ALSO"
+.BR ip (7),
+.BR socket (7),
+.BR socket (2),
+.BR raw (7),
+.BR pcap (3)
+
+RFC 894 for the standard IP Ethernet encapsulation.
+
+RFC 1700 for the IEEE 802.3 IP encapsulation.
+
+The 
+.I <linux/if_ether.h>
+include file for physical layer protocols.
diff --git a/raw/man7/prepare.7 b/raw/man7/prepare.7
new file mode 100644
index 0000000..b8d4743
--- /dev/null
+++ b/raw/man7/prepare.7
@@ -0,0 +1,91 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PREPARE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+PREPARE \- prepare a statement for execution
+
+.SH SYNOPSIS
+.sp
+.nf
+PREPARE \fIplan_name\fR [ (\fIdatatype\fR [, ...] ) ] AS \fIstatement\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBPREPARE\fR creates a prepared statement. A prepared
+statement is a server-side object that can be used to optimize
+performance. When the \fBPREPARE\fR statement is
+executed, the specified statement is parsed, rewritten, and
+planned. When an \fBEXECUTE\fR command is subsequently
+issued, the prepared statement need only be executed. Thus, the
+parsing, rewriting, and planning stages are only performed once,
+instead of every time the statement is executed.
+.PP
+Prepared statements can take parameters: values that are
+substituted into the statement when it is executed. To include
+parameters in a prepared statement, supply a list of data types in
+the \fBPREPARE\fR statement, and, in the statement to
+be prepared itself, refer to the parameters by position using
+$1, $2, etc. When executing
+the statement, specify the actual values for these parameters in
+the \fBEXECUTE\fR statement. Refer to EXECUTE [\fBexecute\fR(7)] for more
+information about that.
+.PP
+Prepared statements are only stored in and for the duration of
+the current database session. When
+the session ends, the prepared statement is forgotten, and so it must be
+recreated before being used again. This also means that a single
+prepared statement cannot be used by multiple simultaneous database
+clients; however, each client can create their own prepared statement
+to use.
+.PP
+Prepared statements have the largest performance advantage when a
+single session is being used to execute a large number of similar
+statements. The performance difference will be particularly
+significant if the statements are complex to plan or rewrite, for
+example, if the query involves a join of many tables or requires
+the application of several rules. If the statement is relatively simple
+to plan and rewrite but relatively expensive to execute, the
+performance advantage of prepared statements will be less noticeable.
+.SH "PARAMETERS"
+.TP
+\fB\fIplan_name\fB\fR
+An arbitrary name given to this particular prepared
+statement. It must be unique within a single session and is
+subsequently used to execute or deallocate a previously prepared
+statement.
+.TP
+\fB\fIdatatype\fB\fR
+The data type of a parameter to the prepared statement. To
+refer to the parameters in the prepared statement itself, use
+$1, $2, etc.
+.TP
+\fB\fIstatement\fB\fR
+Any \fBSELECT\fR, \fBINSERT\fR, \fBUPDATE\fR,
+or \fBDELETE\fR statement.
+.SH "NOTES"
+.PP
+In some situations, the query plan produced by for a prepared
+statement may be inferior to the plan produced if the statement
+were submitted and executed normally. This is because when the
+statement is planned and the planner attempts to determine the
+optimal query plan, the actual values of any parameters specified
+in the statement are
+unavailable. PostgreSQL collects
+statistics on the distribution of data in the table, and can use
+constant values in a statement to make guesses about the likely
+result of executing the statement. Since this data is unavailable
+when planning prepared statements with parameters, the chosen plan
+may be suboptimal. To examine the query plan
+PostgreSQL has chosen for a prepared
+statement, use \fBEXPLAIN EXECUTE\fR.
+.PP
+For more information on query planning and the statistics collected
+by PostgreSQL for that purpose, see
+the ANALYZE [\fBanalyze\fR(7)]
+documentation.
+.SH "COMPATIBILITY"
+.PP
+The SQL standard includes a \fBPREPARE\fR statement,
+but it is only for use in embedded SQL. This version of the
+\fBPREPARE\fR statement also uses a somewhat different
+syntax.
diff --git a/raw/man7/raw.7 b/raw/man7/raw.7
new file mode 100644
index 0000000..c259054
--- /dev/null
+++ b/raw/man7/raw.7
@@ -0,0 +1,262 @@
+'\" t
+.\" Don't change the first line, it tells man that we need tbl.
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" Please send bug reports, corrections and suggestions for improvements to 
+.\" <ak at muc.de>
+.\" $Id: raw.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.TH RAW  7 1998-10-02 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+raw, SOCK_RAW \- Linux IPv4 raw sockets
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <netinet/in.h>
+.br
+.BI "raw_socket = socket(PF_INET, SOCK_RAW, int " protocol ); 
+
+.SH DESCRIPTION
+Raw sockets allow new IPv4 protocols to be implemented in user space.
+A raw socket receives or sends the raw datagram not including link level headers.
+
+The IPv4 layer generates an IP header when sending a packet unless the
+.B IP_HDRINCL
+socket option is enabled on the socket.
+When it is enabled, the packet must contain an IP header.
+For receiving the IP header is always included in the packet.
+
+Only processes with an effective user id of 0 or the 
+.B CAP_NET_RAW 
+capability are allowed to open raw sockets.
+
+All packets or errors matching the
+.I protocol
+number specified
+for the raw socket are passed to this socket.  For a list of the
+allowed protocols see RFC1700 assigned numbers and
+.BR getprotobyname (3).
+
+A protocol of
+.B IPPROTO_RAW
+implies enabled
+.B IP_HDRINCL 
+and is able to send any IP protocol that is specified in the passed header.
+Receiving of all IP protocols via
+.B IPPROTO_RAW
+is not possible using raw sockets.
+
+.TS
+tab(:) allbox;
+c s
+l l.
+IP Header fields modified on sending by IP_HDRINCL
+IP Checksum:Always filled in.
+Source Address:Filled in when zero.
+Packet Id:Filled in when zero.
+Total Length:Always filled in.
+.TE
+.PP
+
+If 
+.B IP_HDRINCL
+is specified and the IP header has a non-zero destination address then
+the destination address of the socket is used to route the packet. When 
+.B MSG_DONTROUTE
+is specified the destination address should refer to a local interface,
+otherwise a routing table lookup is done anyways but gatewayed routes
+are ignored.
+
+If
+.B IP_HDRINCL
+isn't set then IP header options can be set on raw sockets with
+.BR setsockopt (2);
+see
+.BR ip (7) 
+for more information.
+
+In Linux 2.2 all IP header fields and options can be set using
+IP socket options. This means raw sockets are usually only needed for new
+protocols or protocols with no user interface (like ICMP).
+
+When a packet is received, it is passed to any raw sockets which have
+been bound to its protocol before it is passed to other protocol handlers
+(e.g. kernel protocol modules).  
+
+.SH "ADDRESS FORMAT"
+
+Raw sockets use the standard 
+.B sockaddr_in 
+address structure defined in 
+.BR ip (7).
+The 
+The 
+.B sin_port
+field could be used to specify the IP protocol number, 
+but it is ignored for sending in Linux 2.2 and should be always
+set to 0 (see BUGS)
+For incoming packets 
+.B sin_port 
+is set to the protocol of the packet. 
+See the
+.B <netinet/in.h>
+include file for valid IP protocols. 
+
+.SH "SOCKET OPTIONS"
+Raw socket options can be set with
+.BR setsockopt (2)
+and read with
+.BR getsockopt (2)
+by passing the 
+.I SOL_RAW 
+family flag. 
+
+.TP
+.B ICMP_FILTER
+Enable a special filter for raw sockets bound to the 
+.B IPPROTO_ICMP 
+protocol.  The value has a bit set for each ICMP message type which
+should be filtered out. The default is to filter no ICMP messages. 
+
+.PP
+In addition all 
+.BR ip (7)
+.B SOL_IP 
+socket options valid for datagram sockets are supported.
+
+.SH NOTES
+Raw sockets fragment a packet when its total length exceeds the interface MTU
+(but see BUGS).
+A more network friendly and faster alternative is to implement path MTU 
+discovery as described in the
+.B IP_PMTU_DISCOVER 
+section of
+.BR ip (7).
+
+A raw socket can be bound to a specific local address using the 
+.BR bind (2)
+call. If it isn't bound all packets with the specified IP protocol are received.
+In addition a RAW socket can be bound to a specific network device using
+.B SO_BINDTODEVICE;
+see 
+.BR socket (7).
+
+An
+.B IPPROTO_RAW
+socket is send only.
+If you really want to receive all IP packets use a
+.BR packet (7)
+socket with the
+.B ETH_P_IP
+protocol. Note that packet sockets don't reassemble IP fragments, unlike raw sockets.
+
+If you want to receive all ICMP packets for a datagram socket it is often better 
+to use
+.B IP_RECVERR
+on that particular socket; see
+.BR ip (7).
+
+Raw sockets may tap all IP protocols in Linux, even
+protocols like ICMP or TCP which have a protocol module in the kernel. In
+this case the packets are passed to both the kernel module and the raw
+socket(s). This should not be relied upon in portable programs, many other BSD 
+socket implementation have limitations here.
+
+Linux never changes headers passed from the user (except for filling in some
+zeroed fields as described for
+.BR IP_HDRINCL ).
+This differs from many other implementations of raw sockets.
+
+RAW sockets are generally rather unportable and should be avoided in programs
+intended to be portable.
+
+Sending on raw sockets should take the IP protocol from 
+.B sin_port;
+this ability was lost in Linux 2.2. Work around is to use
+.B IP_HDRINCL.
+
+.SH "ERROR HANDLING"
+Errors originating from the network are only passed to the user when the
+socket is connected or the 
+.B IP_RECVERR
+flag is enabled. For connected sockets only 
+.B EMSGSIZE   
+and 
+.B EPROTO 
+are passed for compatibility. With
+.B IP_RECVERR
+all network errors are saved in the error queue. 
+.SH ERRORS
+.TP
+.B EMSGSIZE 
+Packet too big. Either Path MTU Discovery is enabled (the
+.B IP_PMTU_DISCOVER
+socket flag) or the packet size exceeds the maximum allowed IPv4 packet size
+of 64KB.  
+.TP
+.B EACCES
+User tried to send to a broadcast address without having the broadcast flag
+set on the socket.
+.TP
+.B EPROTO
+An ICMP error has arrived reporting a parameter problem.
+.TP
+.B EFAULT
+An invalid memory address was supplied.
+.TP
+.B EOPNOTSUPP
+Invalid flag has been passed to a socket call (like 
+.BR MSG_OOB ).
+.TP
+.B EINVAL
+Invalid argument.
+.TP
+.B EPERM
+The user doesn't have permission to open raw sockets. Only processes
+with a effective user id of 0 or the 
+.B CAP_NET_RAW 
+attribute may do that.
+
+.SH VERSIONS
+.B IP_RECVERR 
+and 
+.B ICMP_FILTER 
+are new in Linux 2.2. They are Linux extensions
+and should not be used in portable programs.
+
+Linux 2.0 enabled some bug-to-bug compatibility with BSD in the raw socket code
+when the SO_BSDCOMPAT flag was set - that has been removed in 2.2.
+
+.SH BUGS
+Transparent proxy extensions are not described.
+
+When the 
+.B IP_HDRINCL
+option is set datagrams will not be fragmented and are limited to the interface
+MTU.  This is a limitation in Linux 2.2.
+
+Setting the IP protocol for sending in
+.B sin_port
+got lost in Linux 2.2. The protocol that socket was bound to or that
+was specified in the initial 
+.BR socket (2)
+call is always used.
+
+.SH AUTHORS
+This man page was written by Andi Kleen. 
+
+.SH "SEE ALSO"
+.BR ip (7),
+.BR socket (7),
+.BR recvmsg (2),
+.BR sendmsg (2)
+
+.B RFC1191 
+for path MTU discovery.
+
+.B RFC791 
+and the
+.B <linux/ip.h>
+include file for the IP protocol.
diff --git a/raw/man7/regex.7 b/raw/man7/regex.7
new file mode 100644
index 0000000..9a87d31
--- /dev/null
+++ b/raw/man7/regex.7
@@ -0,0 +1,264 @@
+.\" From Henry Spencer's regex package (as found in the apache
+.\" distribution). The package carries the following copyright:
+.\"
+.\"  Copyright 1992, 1993, 1994 Henry Spencer.  All rights reserved.
+.\"  This software is not subject to any license of the American Telephone
+.\"  and Telegraph Company or of the Regents of the University of California.
+.\"  
+.\"  Permission is granted to anyone to use this software for any purpose
+.\"  on any computer system, and to alter it and redistribute it, subject
+.\"  to the following restrictions:
+.\"  
+.\"  1. The author is not responsible for the consequences of use of this
+.\"     software, no matter how awful, even if they arise from flaws in it.
+.\"  
+.\"  2. The origin of this software must not be misrepresented, either by
+.\"     explicit claim or by omission.  Since few users ever read sources,
+.\"     credits must appear in the documentation.
+.\"  
+.\"  3. Altered versions must be plainly marked as such, and must not be
+.\"     misrepresented as being the original software.  Since few users
+.\"     ever read sources, credits must appear in the documentation.
+.\"  
+.\"  4. This notice may not be removed or altered.
+.\" 
+.\" In order to comply with `credits must appear in the documentation'
+.\" I added an AUTHOR paragraph below - aeb.
+.\"
+.\" In the default nroff environment there is no dagger \(dg.
+.ie t .ds dg \(dg
+.el .ds dg (!)
+.TH REGEX 7 1994-02-07 
+.SH NAME
+regex \- POSIX 1003.2 regular expressions
+.SH DESCRIPTION
+Regular expressions (``RE''s),
+as defined in POSIX 1003.2, come in two forms:
+modern REs (roughly those of
+.IR egrep ;
+1003.2 calls these ``extended'' REs)
+and obsolete REs (roughly those of
+.BR ed (1);
+1003.2 ``basic'' REs).
+Obsolete REs mostly exist for backward compatibility in some old programs;
+they will be discussed at the end.
+1003.2 leaves some aspects of RE syntax and semantics open;
+`\*(dg' marks decisions on these aspects that
+may not be fully portable to other 1003.2 implementations.
+.PP
+A (modern) RE is one\*(dg or more non-empty\*(dg \fIbranches\fR,
+separated by `|'.
+It matches anything that matches one of the branches.
+.PP
+A branch is one\*(dg or more \fIpieces\fR, concatenated.
+It matches a match for the first, followed by a match for the second, etc.
+.PP
+A piece is an \fIatom\fR possibly followed
+by a single\*(dg `*', `+', `?', or \fIbound\fR.
+An atom followed by `*' matches a sequence of 0 or more matches of the atom.
+An atom followed by `+' matches a sequence of 1 or more matches of the atom.
+An atom followed by `?' matches a sequence of 0 or 1 matches of the atom.
+.PP
+A \fIbound\fR is `{' followed by an unsigned decimal integer,
+possibly followed by `,'
+possibly followed by another unsigned decimal integer,
+always followed by `}'.
+The integers must lie between 0 and RE_DUP_MAX (255\*(dg) inclusive,
+and if there are two of them, the first may not exceed the second.
+An atom followed by a bound containing one integer \fIi\fR
+and no comma matches
+a sequence of exactly \fIi\fR matches of the atom.
+An atom followed by a bound
+containing one integer \fIi\fR and a comma matches
+a sequence of \fIi\fR or more matches of the atom.
+An atom followed by a bound
+containing two integers \fIi\fR and \fIj\fR matches
+a sequence of \fIi\fR through \fIj\fR (inclusive) matches of the atom.
+.PP
+An atom is a regular expression enclosed in `()' (matching a match for the
+regular expression),
+an empty set of `()' (matching the null string)\*(dg,
+a \fIbracket expression\fR (see below), `.'
+(matching any single character), `^' (matching the null string at the
+beginning of a line), `$' (matching the null string at the
+end of a line), a `\e' followed by one of the characters
+`^.[$()|*+?{\e'
+(matching that character taken as an ordinary character),
+a `\e' followed by any other character\*(dg
+(matching that character taken as an ordinary character,
+as if the `\e' had not been present\*(dg),
+or a single character with no other significance (matching that character).
+A `{' followed by a character other than a digit is an ordinary
+character, not the beginning of a bound\*(dg.
+It is illegal to end an RE with `\e'.
+.PP
+A \fIbracket expression\fR is a list of characters enclosed in `[]'.
+It normally matches any single character from the list (but see below).
+If the list begins with `^',
+it matches any single character
+(but see below) \fInot\fR from the rest of the list.
+If two characters in the list are separated by `\-', this is shorthand
+for the full \fIrange\fR of characters between those two (inclusive) in the
+collating sequence,
+e.g. `[0-9]' in ASCII matches any decimal digit.
+It is illegal\*(dg for two ranges to share an
+endpoint, e.g. `a-c-e'.
+Ranges are very collating-sequence-dependent,
+and portable programs should avoid relying on them.
+.PP
+To include a literal `]' in the list, make it the first character
+(following a possible `^').
+To include a literal `\-', make it the first or last character,
+or the second endpoint of a range.
+To use a literal `\-' as the first endpoint of a range,
+enclose it in `[.' and `.]' to make it a collating element (see below).
+With the exception of these and some combinations using `[' (see next
+paragraphs), all other special characters, including `\e', lose their
+special significance within a bracket expression.
+.PP
+Within a bracket expression, a collating element (a character,
+a multi-character sequence that collates as if it were a single character,
+or a collating-sequence name for either)
+enclosed in `[.' and `.]' stands for the
+sequence of characters of that collating element.
+The sequence is a single element of the bracket expression's list.
+A bracket expression containing a multi-character collating element 
+can thus match more than one character,
+e.g. if the collating sequence includes a `ch' collating element,
+then the RE `[[.ch.]]*c' matches the first five characters
+of `chchcc'.
+.PP
+Within a bracket expression, a collating element enclosed in `[=' and
+`=]' is an equivalence class, standing for the sequences of characters
+of all collating elements equivalent to that one, including itself.
+(If there are no other equivalent collating elements,
+the treatment is as if the enclosing delimiters were `[.' and `.]'.)
+For example, if o and \o'o^' are the members of an equivalence class,
+then `[[=o=]]', `[[=\o'o^'=]]', and `[o\o'o^']' are all synonymous.
+An equivalence class may not\*(dg be an endpoint
+of a range.
+.PP
+Within a bracket expression, the name of a \fIcharacter class\fR enclosed
+in `[:' and `:]' stands for the list of all characters belonging to that
+class.
+Standard character class names are:
+.PP
+.RS
+.nf
+.ta 3c 6c 9c
+alnum	digit	punct
+alpha	graph	space
+blank	lower	upper
+cntrl	print	xdigit
+.fi
+.RE
+.PP
+These stand for the character classes defined in
+.BR wctype (3).
+A locale may provide others.
+A character class may not be used as an endpoint of a range.
+.PP
+There are two special cases\*(dg of bracket expressions:
+the bracket expressions `[[:<:]]' and `[[:>:]]' match the null string at
+the beginning and end of a word respectively.
+A word is defined as a sequence of
+word characters
+which is neither preceded nor followed by
+word characters.
+A word character is an
+.I alnum
+character (as defined by
+.BR wctype (3))
+or an underscore.
+This is an extension,
+compatible with but not specified by POSIX 1003.2,
+and should be used with
+caution in software intended to be portable to other systems.
+.PP
+In the event that an RE could match more than one substring of a given
+string,
+the RE matches the one starting earliest in the string.
+If the RE could match more than one substring starting at that point,
+it matches the longest.
+Subexpressions also match the longest possible substrings, subject to
+the constraint that the whole match be as long as possible,
+with subexpressions starting earlier in the RE taking priority over
+ones starting later.
+Note that higher-level subexpressions thus take priority over
+their lower-level component subexpressions.
+.PP
+Match lengths are measured in characters, not collating elements.
+A null string is considered longer than no match at all.
+For example,
+`bb*' matches the three middle characters of `abbbc',
+`(wee|week)(knights|nights)' matches all ten characters of `weeknights',
+when `(.*).*' is matched against `abc' the parenthesized subexpression
+matches all three characters, and
+when `(a*)*' is matched against `bc' both the whole RE and the parenthesized
+subexpression match the null string.
+.PP
+If case-independent matching is specified,
+the effect is much as if all case distinctions had vanished from the
+alphabet.
+When an alphabetic that exists in multiple cases appears as an
+ordinary character outside a bracket expression, it is effectively
+transformed into a bracket expression containing both cases,
+e.g. `x' becomes `[xX]'.
+When it appears inside a bracket expression, all case counterparts
+of it are added to the bracket expression, so that (e.g.) `[x]'
+becomes `[xX]' and `[^x]' becomes `[^xX]'.
+.PP
+No particular limit is imposed on the length of REs\*(dg.
+Programs intended to be portable should not employ REs longer
+than 256 bytes,
+as an implementation can refuse to accept such REs and remain
+POSIX-compliant.
+.PP
+Obsolete (``basic'') regular expressions differ in several respects.
+`|', `+', and `?' are ordinary characters and there is no equivalent
+for their functionality.
+The delimiters for bounds are `\e{' and `\e}',
+with `{' and `}' by themselves ordinary characters.
+The parentheses for nested subexpressions are `\e(' and `\e)',
+with `(' and `)' by themselves ordinary characters.
+`^' is an ordinary character except at the beginning of the
+RE or\*(dg the beginning of a parenthesized subexpression,
+`$' is an ordinary character except at the end of the
+RE or\*(dg the end of a parenthesized subexpression,
+and `*' is an ordinary character if it appears at the beginning of the
+RE or the beginning of a parenthesized subexpression
+(after a possible leading `^').
+Finally, there is one new type of atom, a \fIback reference\fR:
+`\e' followed by a non-zero decimal digit \fId\fR
+matches the same sequence of characters
+matched by the \fId\fRth parenthesized subexpression
+(numbering subexpressions by the positions of their opening parentheses,
+left to right),
+so that (e.g.) `\e([bc]\e)\e1' matches `bb' or `cc' but not `bc'.
+.SH "SEE ALSO"
+.BR regex (3)
+.PP
+POSIX 1003.2, section 2.8 (Regular Expression Notation).
+.SH BUGS
+Having two kinds of REs is a botch.
+.PP
+The current 1003.2 spec says that `)' is an ordinary character in
+the absence of an unmatched `(';
+this was an unintentional result of a wording error,
+and change is likely.
+Avoid relying on it.
+.PP
+Back references are a dreadful botch,
+posing major problems for efficient implementations.
+They are also somewhat vaguely defined
+(does
+`a\e(\e(b\e)*\e2\e)*d' match `abbbd'?).
+Avoid using them.
+.PP
+1003.2's specification of case-independent matching is vague.
+The ``one case implies all cases'' definition given above
+is current consensus among implementors as to the right interpretation.
+.PP
+The syntax for word boundaries is incredibly ugly.
+.SH AUTHOR
+This page was taken from Henry Spencer's regex package.
diff --git a/raw/man7/reindex.7 b/raw/man7/reindex.7
new file mode 100644
index 0000000..9a0861d
--- /dev/null
+++ b/raw/man7/reindex.7
@@ -0,0 +1,146 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "REINDEX" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+REINDEX \- rebuild indexes
+
+.SH SYNOPSIS
+.sp
+.nf
+REINDEX { DATABASE | TABLE | INDEX } \fIname\fR [ FORCE ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBREINDEX\fR rebuilds an index based on the data
+stored in the table, replacing the old copy of the index. There are
+two main reasons to use \fBREINDEX\fR:
+.TP 0.2i
+\(bu
+An index has become corrupted, and no longer contains valid
+data. Although in theory this should never happen, in
+practice indexes may become corrupted due to software bugs or
+hardware failures. \fBREINDEX\fR provides a
+recovery method.
+.TP 0.2i
+\(bu
+The index in question contains a lot of dead index pages that
+are not being reclaimed. This can occur with B-tree indexes in
+PostgreSQL under certain access
+patterns. \fBREINDEX\fR provides a way to reduce
+the space consumption of the index by writing a new version of
+the index without the dead pages. See the section called ``Routine Indexing'' in the documentation for more information.
+.PP
+.SH "PARAMETERS"
+.TP
+\fBDATABASE\fR
+Recreate all system indexes of a specified database. Indexes on
+user tables are not processed. Also, indexes on shared system
+catalogs are skipped except in stand-alone mode (see below).
+.TP
+\fBTABLE\fR
+Recreate all indexes of a specified table. If the table has a
+secondary ``TOAST'' table, that is reindexed as well.
+.TP
+\fBINDEX\fR
+Recreate a specified index.
+.TP
+\fB\fIname\fB\fR
+The name of the specific database, table, or index to be
+reindexed. Table and index names may be schema-qualified.
+.TP
+\fBFORCE\fR
+This is an obsolete option; it is ignored if specified.
+.SH "NOTES"
+.PP
+If you suspect corruption of an index on a user table, you can
+simply rebuild that index, or all indexes on the table, using
+\fBREINDEX INDEX\fR or \fBREINDEX
+TABLE\fR. Another approach to dealing with a corrupted
+user-table index is just to drop and recreate it. This may in fact
+be preferable if you would like to maintain some semblance of
+normal operation on the table meanwhile. \fBREINDEX\fR
+acquires exclusive lock on the table, while \fBCREATE
+INDEX\fR only locks out writes not reads of the table.
+.PP
+Things are more difficult if you need to recover from corruption of
+an index on a system table. In this case it's important for the
+system to not have used any of the suspect indexes itself.
+(Indeed, in this sort of scenario you may find that server
+processes are crashing immediately at start-up, due to reliance on
+the corrupted indexes.) To recover safely, the server must be started
+with the \fB-P\fR option, which prevents it from using
+indexes for system catalog lookups.
+.PP
+One way to do this is to shut down the postmaster and start a stand-alone
+PostgreSQL server
+with the \fB-P\fR option included on its command line.
+Then, \fBREINDEX DATABASE\fR,
+\fBREINDEX TABLE\fR, or \fBREINDEX INDEX\fR can be
+issued, depending on how much you want to reconstruct. If in
+doubt, use \fBREINDEX DATABASE\fR to select
+reconstruction of all system indexes in the database. Then quit
+the standalone server session and restart the regular server.
+See the \fBpostgres\fR(1) reference page for more
+information about how to interact with the stand-alone server
+interface.
+.PP
+Alternatively, a regular server session can be started with
+\fB-P\fR included in its command line options.
+The method for doing this varies across clients, but in all
+\fBlibpq\fR-based clients, it is possible to set
+the \fBPGOPTIONS\fR environment variable to -P
+before starting the client. Note that while this method does not
+require locking out other clients, it may still be wise to prevent
+other users from connecting to the damaged database until repairs
+have been completed.
+.PP
+If corruption is suspected in the indexes of any of the shared
+system catalogs (\fBpg_database\fR,
+\fBpg_group\fR, or
+\fBpg_shadow\fR), then a standalone server
+must be used to repair it. \fBREINDEX\fR will not process
+shared catalogs in multiuser mode.
+.PP
+For all indexes except the shared system catalogs, \fBREINDEX\fR
+is crash-safe and transaction-safe. \fBREINDEX\fR is not
+crash-safe for shared indexes, which is why this case is disallowed
+during normal operation. If a failure occurs while reindexing one
+of these catalogs in standalone mode, it will not be possible to
+restart the regular server until the problem is rectified. (The
+typical symptom of a partially rebuilt shared index is ``index is not
+a btree'' errors.)
+.PP
+Prior to PostgreSQL 7.4, \fBREINDEX
+TABLE\fR did not automatically process TOAST tables, and so those had
+to be reindexed by separate commands. This is still possible, but
+redundant.
+.SH "EXAMPLES"
+.PP
+Recreate the indexes on the table my_table:
+.sp
+.nf
+REINDEX TABLE my_table;
+.sp
+.fi
+.PP
+Rebuild a single index:
+.sp
+.nf
+REINDEX INDEX my_index;
+.sp
+.fi
+.PP
+Rebuild all system indexes in a particular database, without trusting them
+to be valid already:
+.sp
+.nf
+$ \fBexport PGOPTIONS="-P"\fR
+$ \fBpsql broken_db\fR
+...
+broken_db=> REINDEX DATABASE broken_db;
+broken_db=> \\q
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBREINDEX\fR command in the SQL standard.
diff --git a/raw/man7/reset.7 b/raw/man7/reset.7
new file mode 100644
index 0000000..8756d09
--- /dev/null
+++ b/raw/man7/reset.7
@@ -0,0 +1,58 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "RESET" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+RESET \- restore the value of a run-time parameter to the default value
+
+.SH SYNOPSIS
+.sp
+.nf
+RESET \fIname\fR
+RESET ALL
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBRESET\fR restores run-time parameters to their
+default values. \fBRESET\fR is an alternative
+spelling for
+.sp
+.nf
+SET \fIparameter\fR TO DEFAULT
+.sp
+.fi
+Refer to SET [\fBset\fR(7)] for
+details.
+.PP
+The default value is defined as the value that the parameter would
+have had, had no \fBSET\fR ever been issued for it in the
+current session. The actual source of this value might be a
+compiled-in default, the configuration file, command-line options,
+or per-database or per-user default settings. See the section called ``Run-time Configuration'' in the documentation for details.
+.PP
+See the \fBSET\fR reference page for details on the
+transaction behavior of \fBRESET\fR.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of a run-time parameter. See SET [\fBset\fR(7)] for a list.
+.TP
+\fBALL\fR
+Resets all settable run-time parameters to default values.
+.SH "EXAMPLES"
+.PP
+Set DATESTYLE to its default value:
+.sp
+.nf
+RESET datestyle;
+.sp
+.fi
+.PP
+Set GEQO to its default value:
+.sp
+.nf
+RESET geqo;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+\fBRESET\fR is a PostgreSQL extension.
diff --git a/raw/man7/revoke.7 b/raw/man7/revoke.7
new file mode 100644
index 0000000..3560247
--- /dev/null
+++ b/raw/man7/revoke.7
@@ -0,0 +1,126 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "REVOKE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+REVOKE \- remove access privileges
+
+.SH SYNOPSIS
+.sp
+.nf
+REVOKE [ GRANT OPTION FOR ]
+    { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON [ TABLE ] \fItablename\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
+    ON DATABASE \fIdbname\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { EXECUTE | ALL [ PRIVILEGES ] }
+    ON FUNCTION \fIfuncname\fR ([\fItype\fR, ...]) [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { USAGE | ALL [ PRIVILEGES ] }
+    ON LANGUAGE \fIlangname\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
+    ON SCHEMA \fIschemaname\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+The \fBREVOKE\fR command revokes previously granted
+privileges from one or more users or groups of users. The key word
+PUBLIC refers to the implicitly defined group of
+all users.
+.PP
+See the description of the GRANT [\fBgrant\fR(7)] command for
+the meaning of the privilege types.
+.PP
+Note that any particular user will have the sum
+of privileges granted directly to him, privileges granted to any group he
+is presently a member of, and privileges granted to
+PUBLIC. Thus, for example, revoking SELECT privilege
+from PUBLIC does not necessarily mean that all users
+have lost SELECT privilege on the object: those who have it granted
+directly or via a group will still have it.
+.PP
+If GRANT OPTION FOR is specified, only the grant
+option for the privilege is revoked, not the privilege itself.
+.PP
+If a user holds a privilege with grant option and has granted it to
+other users then the privileges held by those other users are
+called dependent privileges. If the privilege or the grant option
+held by the first user is being revoked and dependent privileges
+exist, those dependent privileges are also revoked if
+CASCADE is specified, else the revoke action
+will fail. This recursive revocation only affects privileges that
+were granted through a chain of users that is traceable to the user
+that is the subject of this REVOKE command.
+Thus, the affected users may effectively keep the privilege if it
+was also granted through other users.
+.SH "NOTES"
+.PP
+Use \fBpsql\fR(1)'s \fB\\z\fR command to
+display the privileges granted on existing objects. See also GRANT [\fBgrant\fR(7)] for information about the format.
+.PP
+A user can only revoke privileges that were granted directly by
+that user. If, for example, user A has granted a privilege with
+grant option to user B, and user B has in turned granted it to user
+C, then user A cannot revoke the privilege directly from C.
+Instead, user A could revoke the grant option from user B and use
+the CASCADE option so that the privilege is
+automatically revoked from user C.
+.PP
+If a superuser chooses to issue a \fBGRANT\fR or \fBREVOKE\fR
+command, the command is performed as though it were issued by the
+owner of the affected object. Since all privileges ultimately come
+from the object owner (possibly indirectly via chains of grant options),
+it is possible for a superuser to revoke all privileges, but this may
+require use of CASCADE as stated above.
+.SH "EXAMPLES"
+.PP
+Revoke insert privilege for the public on table
+films:
+.sp
+.nf
+REVOKE INSERT ON films FROM PUBLIC;
+.sp
+.fi
+.PP
+Revoke all privileges from user manuel on view kinds:
+.sp
+.nf
+  
+REVOKE ALL PRIVILEGES ON kinds FROM manuel;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The compatibility notes of the GRANT [\fBgrant\fR(7)] command
+apply analogously to \fBREVOKE\fR. The syntax summary is:
+.sp
+.nf
+REVOKE [ GRANT OPTION FOR ] \fIprivileges\fR
+    ON \fIobject\fR [ ( \fIcolumn\fR [, ...] ) ]
+    FROM { PUBLIC | \fIusername\fR [, ...] }
+    { RESTRICT | CASCADE }
+.sp
+.fi
+One of RESTRICT or CASCADE
+is required according to the standard, but PostgreSQL
+assumes RESTRICT by default.
+.SH "SEE ALSO"
+.PP
+GRANT [\fBgrant\fR(7)]
diff --git a/raw/man7/rollback.7 b/raw/man7/rollback.7
new file mode 100644
index 0000000..50e664f
--- /dev/null
+++ b/raw/man7/rollback.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ROLLBACK" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ROLLBACK \- abort the current transaction
+
+.SH SYNOPSIS
+.sp
+.nf
+ROLLBACK [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBROLLBACK\fR rolls back the current transaction and causes
+all the updates made by the transaction to be discarded.
+.SH "PARAMETERS"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+Optional key words. They have no effect.
+.SH "NOTES"
+.PP
+Use COMMIT [\fBcommit\fR(7)] to
+successfully terminate a transaction.
+.PP
+Issuing \fBROLLBACK\fR when not inside a transaction does
+no harm, but it will provoke a warning message.
+.SH "EXAMPLES"
+.PP
+To abort all changes:
+.sp
+.nf
+ROLLBACK;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The SQL standard only specifies the two forms
+ROLLBACK and ROLLBACK
+WORK. Otherwise, this command is fully conforming.
+.SH "SEE ALSO"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)]
+
diff --git a/raw/man7/samba.7 b/raw/man7/samba.7
new file mode 100644
index 0000000..3fddca2
--- /dev/null
+++ b/raw/man7/samba.7
@@ -0,0 +1,226 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SAMBA" 7 "" "" ""
+.SH NAME
+samba \- A Windows SMB/CIFS fileserver for UNIX
+.SH "SYNOPSIS"
+
+.nf
+\fBSamba\fR 
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+The Samba software suite is a collection of programs that implements the Server Message Block (commonly abbreviated as SMB) protocol for UNIX systems\&. This protocol is sometimes also referred to as the Common Internet File System (CIFS)\&. For a more thorough description, see http://www\&.ubiqx\&.org/cifs/\&. Samba also implements the NetBIOS protocol in nmbd\&.
+
+.TP
+\fBsmbd\fR(8)
+The \fBsmbd\fR daemon provides the file and print services to SMB clients, such as Windows 95/98, Windows NT, Windows for Workgroups or LanManager\&. The configuration file for this daemon is described in \fBsmb.conf\fR(5)
+
+
+.TP
+\fBnmbd\fR(8)
+The \fBnmbd\fR daemon provides NetBIOS nameservice and browsing support\&. The configuration file for this daemon is described in \fBsmb.conf\fR(5)
+
+
+.TP
+\fBsmbclient\fR(1)
+The \fBsmbclient\fR program implements a simple ftp-like client\&. This is useful for accessing SMB shares on other compatible servers (such as Windows NT), and can also be used to allow a UNIX box to print to a printer attached to any SMB server (such as a PC running Windows NT)\&.
+
+
+.TP
+\fBtestparm\fR(1)
+The \fBtestparm\fR utility is a simple syntax checker for Samba's \fBsmb.conf\fR(5) configuration file\&.
+
+
+.TP
+\fBtestprns\fR(1)
+The \fBtestprns\fR utility supports testing printer names defined in your \fIprintcap\fR file used by Samba\&.
+
+
+.TP
+\fBsmbstatus\fR(1)
+The \fBsmbstatus\fR tool provides access to information about the current connections to \fBsmbd\fR\&.
+
+
+.TP
+\fBnmblookup\fR(1)
+The \fBnmblookup\fR tools allows NetBIOS name queries to be made from a UNIX host\&.
+
+
+.TP
+\fBsmbgroupedit\fR(8)
+The \fBsmbgroupedit\fR tool allows for mapping unix groups to NT Builtin, Domain, or Local groups\&. Also it allows setting priviledges for that group, such as saAddUser, etc\&.
+
+
+.TP
+\fBsmbpasswd\fR(8)
+The \fBsmbpasswd\fR command is a tool for changing LanMan and Windows NT password hashes on Samba and Windows NT servers\&.
+
+
+.TP
+\fBsmbcacls\fR(1)
+The \fBsmbcacls\fR command is a tool to set ACL's on remote CIFS servers\&.
+
+
+.TP
+\fBsmbsh\fR(1)
+The \fBsmbsh\fR command is a program that allows you to run a unix shell with with an overloaded VFS\&.
+
+
+.TP
+\fBsmbtree\fR(1)
+The \fBsmbtree\fR command is a text-based network neighborhood tool\&.
+
+
+.TP
+\fBsmbtar\fR(1)
+The \fBsmbtar\fR can make backups of data on CIFS/SMB servers\&.
+
+
+.TP
+\fBsmbspool\fR(8)
+\fBsmbspool\fR is a helper utility for printing on printers connected to CIFS servers\&.
+
+
+.TP
+\fBsmbcontrol\fR(1)
+\fBsmbcontrol\fR is a utility that can change the behaviour of running samba daemons\&.
+
+
+.TP
+\fBrpcclient\fR(1)
+\fBrpcclient\fR is a utility that can be used to execute RPC commands on remote CIFS servers\&.
+
+
+.TP
+\fBpdbedit\fR(8)
+The \fBpdbedit\fR command can be used to maintain the local user database on a samba server\&.
+
+
+.TP
+\fBfindsmb\fR(1)
+The \fBfindsmb\fR command can be used to find SMB servers on the local network\&.
+
+
+.TP
+\fBnet\fR(8)
+The \fBnet\fR command is supposed to work similar to the DOS/Windows NET\&.EXE command\&.
+
+
+.TP
+\fBswat\fR(8)
+\fBswat\fR is a web-based interface to configuring \fIsmb\&.conf\fR\&.
+
+
+.TP
+\fBwinbindd\fR(8)
+\fBwinbindd\fR is a daemon that is used for integrating authentication and the user database into unix\&.
+
+
+.TP
+\fBwbinfo\fR(1)
+\fBwbinfo\fR is a utility that retrieves and stores information related to winbind\&.
+
+
+.TP
+\fBeditreg\fR(1)
+\fBeditreg\fR is a command-line utility that can edit windows registry files\&.
+
+
+.TP
+\fBprofiles\fR(1)
+\fBprofiles\fR is a command-line utility that can be used to replace all occurences of a certain SID with another SID\&.
+
+
+.TP
+\fBlog2pcap\fR(1)
+\fBlog2pcap\fR is a utility for generating pcap trace files from Samba log files\&.
+
+
+.TP
+\fBvfstest\fR(1)
+\fBvfstest\fR is a utility that can be used to test vfs modules\&.
+
+
+.TP
+\fBntlm_auth\fR(1)
+\fBntlm_auth\fR is a helper-utility for external programs wanting to do NTLM-authentication\&.
+
+
+.TP
+\fBsmbmount\fR(8), \fBsmbumount\fR(8), \fBsmbmount\fR(8)
+\fBsmbmount\fR,\fBsmbmnt\fR and \fBsmbmnt\fR are commands that can be used to mount CIFS/SMB shares on Linux\&.
+
+
+.TP
+\fBsmbcquotas\fR(1)
+\fBsmbcquotas\fR is a tool that can set remote QUOTA's on server with NTFS 5\&.
+
+
+.SH "COMPONENTS"
+
+.PP
+The Samba suite is made up of several components\&. Each component is described in a separate manual page\&. It is strongly recommended that you read the documentation that comes with Samba and the manual pages of those components that you use\&. If the manual pages and documents aren't clear enough then please visithttp://devel\&.samba\&.org for information on how to file a bug report or submit a patch\&.
+
+.PP
+If you require help, visit the Samba webpage athttp://www\&.samba\&.org/ and explore the many option available to you\&.
+
+.SH "AVAILABILITY"
+
+.PP
+The Samba software suite is licensed under the GNU Public License(GPL)\&. A copy of that license should have come with the package in the file COPYING\&. You are encouraged to distribute copies of the Samba suite, but please obey the terms of this license\&.
+
+.PP
+The latest version of the Samba suite can be obtained via anonymous ftp from samba\&.org in the directory pub/samba/\&. It is also available on several mirror sites worldwide\&.
+
+.PP
+You may also find useful information about Samba on the newsgroup comp\&.protocol\&.smb and the Samba mailing list\&. Details on how to join the mailing list are given in the README file that comes with Samba\&.
+
+.PP
+If you have access to a WWW viewer (such as Mozilla or Konqueror) then you will also find lots of useful information, including back issues of the Samba mailing list, athttp://lists\&.samba\&.org\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "CONTRIBUTIONS"
+
+.PP
+If you wish to contribute to the Samba project, then I suggest you join the Samba mailing list athttp://lists\&.samba\&.org\&.
+
+.PP
+If you have patches to submit, visithttp://devel\&.samba\&.org/ for information on how to do it properly\&. We prefer patches in \fBdiff -u\fR format\&.
+
+.SH "CONTRIBUTORS"
+
+.PP
+Contributors to the project are now too numerous to mention here but all deserve the thanks of all Samba users\&. To see a full list, look at the\fIchange-log\fR in the source package for the pre-CVS changes and at http://cvs\&.samba\&.org/ for the contributors to Samba post-CVS\&. CVS is the Open Source source code control system used by the Samba Team to develop Samba\&. The project would have been unmanageable without it\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man7/select.7 b/raw/man7/select.7
new file mode 100644
index 0000000..f705d28
--- /dev/null
+++ b/raw/man7/select.7
@@ -0,0 +1,804 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SELECT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SELECT \- retrieve rows from a table or view
+
+.SH SYNOPSIS
+.sp
+.nf
+SELECT [ ALL | DISTINCT [ ON ( \fIexpression\fR [, ...] ) ] ]
+    * | \fIexpression\fR [ AS \fIoutput_name\fR ] [, ...]
+    [ FROM \fIfrom_item\fR [, ...] ]
+    [ WHERE \fIcondition\fR ]
+    [ GROUP BY \fIexpression\fR [, ...] ]
+    [ HAVING \fIcondition\fR [, ...] ]
+    [ { UNION | INTERSECT | EXCEPT } [ ALL ] \fIselect\fR ]
+    [ ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...] ]
+    [ LIMIT { \fIcount\fR | ALL } ]
+    [ OFFSET \fIstart\fR ]
+    [ FOR UPDATE [ OF \fItable_name\fR [, ...] ] ]
+
+where \fIfrom_item\fR can be one of:
+
+    [ ONLY ] \fItable_name\fR [ * ] [ [ AS ] \fIalias\fR [ ( \fIcolumn_alias\fR [, ...] ) ] ]
+    ( \fIselect\fR ) [ AS ] \fIalias\fR [ ( \fIcolumn_alias\fR [, ...] ) ]
+    \fIfunction_name\fR ( [ \fIargument\fR [, ...] ] ) [ AS ] \fIalias\fR [ ( \fIcolumn_alias\fR [, ...] | \fIcolumn_definition\fR [, ...] ) ]
+    \fIfunction_name\fR ( [ \fIargument\fR [, ...] ] ) AS ( \fIcolumn_definition\fR [, ...] )
+    \fIfrom_item\fR [ NATURAL ] \fIjoin_type\fR \fIfrom_item\fR [ ON \fIjoin_condition\fR | USING ( \fIjoin_column\fR [, ...] ) ]
+.sp
+.fi
+[Comment: FIXME: This last syntax is incorrect if the join type is an
+INNER or OUTER join (in which case one of NATURAL, ON ..., or USING
+\&... is mandatory, not optional). What's the best way to fix
+this?]
+.SH "DESCRIPTION"
+.PP
+\fBSELECT\fR retrieves rows from one or more tables.
+The general processing of \fBSELECT\fR is as follows:
+.IP 1. 
+All elements in the FROM list are computed.
+(Each element in the FROM list is a real or
+virtual table.) If more than one element is specified in the
+FROM list, they are cross-joined together.
+(See FROM Clause [\fBselect\fR(7)] below.)
+.IP 2. 
+If the WHERE clause is specified, all rows
+that do not satisfy the condition are eliminated from the
+output. (See WHERE Clause [\fBselect\fR(7)] below.)
+.IP 3. 
+If the GROUP BY clause is specified, the
+output is divided into groups of rows that match on one or more
+values. If the HAVING clause is present, it
+eliminates groups that do not satisfy the given condition. (See
+GROUP BY Clause [\fBselect\fR(7)] and
+HAVING Clause [\fBselect\fR(7)] below.)
+.IP 4. 
+Using the operators UNION,
+INTERSECT, and EXCEPT, the
+output of more than one \fBSELECT\fR statement can
+be combined to form a single result set. The
+UNION operator returns all rows that are in
+one or both of the result sets. The
+INTERSECT operator returns all rows that are
+strictly in both result sets. The EXCEPT
+operator returns the rows that are in the first result set but
+not in the second. In all three cases, duplicate rows are
+eliminated unless ALL is specified. (See
+UNION Clause [\fBselect\fR(7)], INTERSECT Clause [\fBselect\fR(l)], and
+EXCEPT Clause [\fBselect\fR(7)] below.)
+.IP 5. 
+The actual output rows are computed the
+\fBSELECT\fR output expressions for each selected
+row. (See
+SELECT List [\fBselect\fR(7)]
+below.)
+.IP 6. 
+If the ORDER BY clause is specified, the
+returned rows are sorted in the specified order. If
+ORDER BY is not given, the rows are returned
+in whatever order the system finds fastest to produce. (See
+ORDER BY Clause [\fBselect\fR(7)] below.)
+.IP 7. 
+If the LIMIT or OFFSET
+clause is specified, the \fBSELECT\fR statement
+only returns a subset of the result rows. (See LIMIT Clause [\fBselect\fR(7)] below.)
+.IP 8. 
+DISTINCT eliminates duplicate rows from the
+result. DISTINCT ON eliminates rows that
+match on all the specified expressions. ALL
+(the default) will return all candidate rows, including
+duplicates. (See DISTINCT Clause [\fBselect\fR(7)] below.)
+.IP 9. 
+The FOR UPDATE clause causes the
+\fBSELECT\fR statement to lock the selected rows
+against concurrent updates. (See FOR UPDATE Clause [\fBselect\fR(7)] below.)
+.PP
+.PP
+You must have SELECT privilege on a table to
+read its values. The use of FOR UPDATE requires
+UPDATE privilege as well.
+.SH "PARAMETERS"
+.SS "FROM CLAUSE"
+.PP
+The FROM clause specifies one or more source
+tables for the \fBSELECT\fR. If multiple sources are
+specified, the result is the Cartesian product (cross join) of all
+the sources. But usually qualification conditions
+are added to restrict the returned rows to a small subset of the
+Cartesian product.
+.PP
+FROM-clause elements can contain:
+.TP
+\fB\fItable_name\fB\fR
+The name (optionally schema-qualified) of an existing table or
+view. If ONLY is specified, only that table is
+scanned. If ONLY is not specified, the table and
+all its descendant tables (if any) are scanned. *
+can be appended to the table name to indicate that descendant
+tables are to be scanned, but in the current version, this is
+the default behavior. (In releases before 7.1,
+ONLY was the default behavior.) The default
+behavior can be modified by changing the
+sql_interitance configuration option.
+.TP
+\fB\fIalias\fB\fR
+A substitute name for the FROM item containing the
+alias. An alias is used for brevity or to eliminate ambiguity
+for self-joins (where the same table is scanned multiple
+times). When an alias is provided, it completely hides the
+actual name of the table or function; for example given
+FROM foo AS f, the remainder of the
+\fBSELECT\fR must refer to this FROM
+item as f not foo. If an alias is
+written, a column alias list can also be written to provide
+substitute names for one or more columns of the table.
+.TP
+\fB\fIselect\fB\fR
+A sub-\fBSELECT\fR can appear in the
+FROM clause. This acts as though its
+output were created as a temporary table for the duration of
+this single \fBSELECT\fR command. Note that the
+sub-\fBSELECT\fR must be surrounded by
+parentheses, and an alias \fBmust\fR be
+provided for it.
+.TP
+\fB\fIfunction_name\fB\fR
+Function calls can appear in the FROM
+clause. (This is especially useful for functions that return
+result sets, but any function can be used.) This acts as
+though its output were created as a temporary table for the
+duration of this single \fBSELECT\fR command. An
+alias may also be used. If an alias is written, a column alias
+list can also be written to provide substitute names for one
+or more attributes of the function's composite return type. If
+the function has been defined as returning the \fBrecord\fR
+data type, then an alias or the key word AS must
+be present, followed by a column definition list in the form
+( \fIcolumn_name\fR \fIdata_type\fR [, ... ]
+). The column definition list must match the actual
+number and types of columns returned by the function.
+.TP
+\fB\fIjoin_type\fB\fR
+One of
+.RS
+.TP 0.2i
+\(bu
+[ INNER ] JOIN
+.TP 0.2i
+\(bu
+LEFT [ OUTER ] JOIN
+.TP 0.2i
+\(bu
+RIGHT [ OUTER ] JOIN
+.TP 0.2i
+\(bu
+FULL [ OUTER ] JOIN
+.TP 0.2i
+\(bu
+CROSS JOIN
+.RE
+.PP
+For the INNER and OUTER join types, a
+join condition must be specified, namely exactly one of
+NATURAL, ON \fIjoin_condition\fR, or
+USING (\fIjoin_column\fR [, ...]).
+See below for the meaning. For CROSS JOIN,
+none of these clauses may appear.
+
+A JOIN clause, combines two
+FROM items. (Use parentheses if necessary to
+determine the order of nesting.)
+
+CROSS JOIN and INNER JOIN
+produce a simple Cartesian product, the same as you get from
+listing the two items at the top level of FROM.
+CROSS JOIN is equivalent to INNER JOIN ON
+(true), that is, no rows are removed by qualification.
+These join types are just a notational convenience, since they
+do nothing you couldn't do with plain FROM and
+WHERE.
+
+LEFT OUTER JOIN returns all rows in the qualified
+Cartesian product (i.e., all combined rows that pass its join
+condition), plus one copy of each row in the left-hand table
+for which there was no right-hand row that passed the join
+condition. This left-hand row is extended to the full width
+of the joined table by inserting null values for the
+right-hand columns. Note that only the JOIN
+clauses own condition is considered while deciding which rows
+have matches. Outer conditions are applied afterwards.
+
+Conversely, RIGHT OUTER JOIN returns all the
+joined rows, plus one row for each unmatched right-hand row
+(extended with nulls on the left). This is just a notational
+convenience, since you could convert it to a LEFT
+OUTER JOIN by switching the left and right inputs.
+
+FULL OUTER JOIN returns all the joined rows, plus
+one row for each unmatched left-hand row (extended with nulls
+on the right), plus one row for each unmatched right-hand row
+(extended with nulls on the left).
+.TP
+\fBON \fIjoin_condition\fB\fR
+\fIjoin_condition\fR is
+an expression resulting in a value of type
+\fBboolean\fR (similar to a WHERE
+clause) that specifies which rows in a join are considered to
+match.
+.TP
+\fBUSING (\fIjoin_column\fB [, ...])\fR
+A clause of the form USING ( a, b, ... ) is
+shorthand for ON left_table.a = right_table.a AND
+left_table.b = right_table.b .... Also,
+USING implies that only one of each pair of
+equivalent columns will be included in the join output, not
+both.
+.TP
+\fBNATURAL\fR
+NATURAL is shorthand for a
+USING list that mentions all columns in the two
+tables that have the same names.
+.PP
+.SS "WHERE CLAUSE"
+.PP
+The optional WHERE clause has the general form
+.sp
+.nf
+WHERE \fIcondition\fR
+.sp
+.fi
+where \fIcondition\fR is
+any expression that evaluates to a result of type
+\fBboolean\fR. Any row that does not satisfy this
+condition will be eliminated from the output. A row satisfies the
+condition if it returns true when the actual row values are
+substituted for any variable references.
+.SS "GROUP BY CLAUSE"
+.PP
+The optional GROUP BY clause has the general form
+.sp
+.nf
+GROUP BY \fIexpression\fR [, ...]
+.sp
+.fi
+.PP
+GROUP BY will condense into a single row all
+selected rows that share the same values for the grouped
+expressions. \fIexpression\fR can be an input column
+name, or the name or ordinal number of an output column
+(\fBSELECT\fR list), or it can be an arbitrary
+expression formed from input-column values. In case of ambiguity,
+a GROUP BY name will be interpreted as an
+input-column name rather than an output column name.
+.PP
+Aggregate functions, if any are used, are computed across all rows
+making up each group, producing a separate value for each group
+(whereas without GROUP BY, an aggregate
+produces a single value computed across all the selected rows).
+When GROUP BY is present, it is not valid for
+the \fBSELECT\fR list expressions to refer to
+ungrouped columns except within aggregate functions, since there
+would be more than one possible value to return for an ungrouped
+column.
+.SS "HAVING CLAUSE"
+.PP
+The optional HAVING clause has the general form
+.sp
+.nf
+HAVING \fIcondition\fR
+.sp
+.fi
+where \fIcondition\fR is
+the same as specified for the WHERE clause.
+.PP
+HAVING eliminates group rows that do not
+satisfy the condition. HAVING is different
+from WHERE: WHERE filters
+individual rows before the application of GROUP
+BY, while HAVING filters group rows
+created by GROUP BY. Each column referenced in
+\fIcondition\fR must
+unambiguously reference a grouping column, unless the reference
+appears within an aggregate function.
+.SS "UNION CLAUSE"
+.PP
+The UNION clause has this general form:
+.sp
+.nf
+\fIselect_statement\fR UNION [ ALL ] \fIselect_statement\fR
+.sp
+.fi
+\fIselect_statement\fR is
+any \fBSELECT\fR statement without an ORDER
+BY, LIMIT, or FOR UPDATE clause.
+(ORDER BY and LIMIT can be attached to a
+subexpression if it is enclosed in parentheses. Without
+parentheses, these clauses will be taken to apply to the result of
+the UNION, not to its right-hand input
+expression.)
+.PP
+The UNION operator computes the set union of
+the rows returned by the involved \fBSELECT\fR
+statements. A row is in the set union of two result sets if it
+appears in at least one of the result sets. The two
+\fBSELECT\fR statements that represent the direct
+operands of the UNION must produce the same
+number of columns, and corresponding columns must be of compatible
+data types.
+.PP
+The result of UNION does not contain any duplicate
+rows unless the ALL option is specified.
+ALL prevents elimination of duplicates.
+.PP
+Multiple UNION operators in the same
+\fBSELECT\fR statement are evaluated left to right,
+unless otherwise indicated by parentheses.
+.PP
+Currently, FOR UPDATE may not be specified either for
+a UNION result or for the inputs of UNION.
+.SS "INTERSECT CLAUSE"
+.PP
+The INTERSECT clause has this general form:
+.sp
+.nf
+\fIselect_statement\fR INTERSECT [ ALL ] \fIselect_statement\fR
+.sp
+.fi
+\fIselect_statement\fR is
+any \fBSELECT\fR statement without an ORDER
+BY, LIMIT, or FOR UPDATE clause.
+.PP
+The INTERSECT operator computes the set
+intersection of the rows returned by the involved
+\fBSELECT\fR statements. A row is in the
+intersection of two result sets if it appears in both result sets.
+.PP
+The result of INTERSECT does not contain any
+duplicate rows unless the ALL option is specified.
+With ALL, a row that has m duplicates in the left
+table and n duplicates in the right table will appear min(m,n)
+times in the result set.
+.PP
+Multiple INTERSECT operators in the same
+\fBSELECT\fR statement are evaluated left to right,
+unless parentheses dictate otherwise.
+INTERSECT binds more tightly than
+UNION. That is, A UNION B INTERSECT
+C will be read as A UNION (B INTERSECT
+C).
+.SS "EXCEPT CLAUSE"
+.PP
+The EXCEPT clause has this general form:
+.sp
+.nf
+\fIselect_statement\fR EXCEPT [ ALL ] \fIselect_statement\fR
+.sp
+.fi
+\fIselect_statement\fR is
+any \fBSELECT\fR statement without an ORDER
+BY, LIMIT, or FOR UPDATE clause.
+.PP
+The EXCEPT operator computes the set of rows
+that are in the result of the left \fBSELECT\fR
+statement but not in the result of the right one.
+.PP
+The result of EXCEPT does not contain any
+duplicate rows unless the ALL option is specified.
+With ALL, a row that has m duplicates in the left
+table and n duplicates in the right table will appear max(m-n,0)
+times in the result set.
+.PP
+Multiple EXCEPT operators in the same
+\fBSELECT\fR statement are evaluated left to right,
+unless parentheses dictate otherwise. EXCEPT binds at
+the same level as UNION.
+.SS "SELECT LIST"
+.PP
+The \fBSELECT\fR list (between the key words
+SELECT and FROM) specifies expressions
+that form the output rows of the \fBSELECT\fR
+statement. The expressions can (and usually do) refer to columns
+computed in the FROM clause. Using the clause
+AS \fIoutput_name\fR, another
+name can be specified for an output column. This name is
+primarily used to label the column for display. It can also be
+used to refer to the column's value in ORDER BY and
+GROUP BY clauses, but not in the WHERE or
+HAVING clauses; there you must write out the
+expression instead.
+.PP
+Instead of an expression, * can be written in
+the output list as a shorthand for all the columns of the selected
+rows. Also, one can write \fItable_name\fR.* as a
+shorthand for the columns coming from just that table.
+.SS "ORDER BY CLAUSE"
+.PP
+The optional ORDER BY clause has this general form:
+.sp
+.nf
+ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...]
+.sp
+.fi
+\fIexpression\fR can be the
+name or ordinal number of an output column
+(\fBSELECT\fR list), or it can be an arbitrary
+expression formed from input-column values.
+.PP
+The ORDER BY clause causes the result rows to
+be sorted according to the specified expressions. If two rows are
+equal according to the leftmost expression, the are compared
+according to the next expression and so on. If they are equal
+according to all specified expressions, they are returned in
+random order.
+.PP
+The ordinal number refers to the ordinal (left-to-right) position
+of the result column. This feature makes it possible to define an
+ordering on the basis of a column that does not have a unique
+name. This is never absolutely necessary because it is always
+possible to assign a name to a result column using the
+AS clause.
+.PP
+It is also possible to use arbitrary expressions in the
+ORDER BY clause, including columns that do not
+appear in the \fBSELECT\fR result list. Thus the
+following statement is valid:
+.sp
+.nf
+SELECT name FROM distributors ORDER BY code;
+.sp
+.fi
+A limitation of this feature is that an ORDER BY
+clause applying to the result of a UNION,
+INTERSECT, or EXCEPT clause may only
+specify an output column name or number, not an expression.
+.PP
+If an ORDER BY expression is a simple name that
+matches both a result column name and an input column name,
+ORDER BY will interpret it as the result column name.
+This is the opposite of the choice that GROUP BY will
+make in the same situation. This inconsistency is made to be
+compatible with the SQL standard.
+.PP
+Optionally one may add the key word ASC (ascending) or
+DESC (descending) after each expression in the
+ORDER BY clause. If not specified, ASC is
+assumed by default. Alternatively, a specific ordering operator
+name may be specified in the USING clause.
+ASC is usually equivalent to USING < and
+DESC is usually equivalent to USING >.
+(But the creator of a user-defined data type can define exactly what the
+default sort ordering is, and it might correspond to operators with other
+names.)
+.PP
+The null value sorts higher than any other value. In other words,
+with ascending sort order, null values sort at the end, and with
+descending sort order, null values sort at the beginning.
+.PP
+Character-string data is sorted according to the locale-specific
+collation order that was established when the database cluster
+was initialized.
+.SS "LIMIT CLAUSE"
+.PP
+The LIMIT clause consists of two independent
+clauses:
+.sp
+.nf
+LIMIT { \fIcount\fR | ALL }
+OFFSET \fIstart\fR
+.sp
+.fi
+\fIcount\fR specifies the
+maximum number of rows to return, and \fIstart\fR specifies the number of rows
+to skip before starting to return rows.
+.PP
+When using LIMIT, it is a good idea to use an
+ORDER BY clause that constrains the result rows into a
+unique order. Otherwise you will get an unpredictable subset of
+the query's rows---you may be asking for the tenth through
+twentieth rows, but tenth through twentieth in what ordering? You
+don't know what ordering unless you specify ORDER BY.
+.PP
+The query planner takes LIMIT into account when
+generating a query plan, so you are very likely to get different
+plans (yielding different row orders) depending on what you use
+for LIMIT and OFFSET. Thus, using
+different LIMIT/OFFSET values to select
+different subsets of a query result \fBwill give
+inconsistent results\fR unless you enforce a predictable
+result ordering with ORDER BY. This is not a bug; it
+is an inherent consequence of the fact that SQL does not promise
+to deliver the results of a query in any particular order unless
+ORDER BY is used to constrain the order.
+.SS "DISTINCT CLAUSE"
+.PP
+If DISTINCT is specified, all duplicate rows are
+removed from the result set (one row is kept from each group of
+duplicates). ALL specifies the opposite: all rows are
+kept; that is the default.
+.PP
+DISTINCT ON ( \fIexpression\fR [, ...] )
+keeps only the first row of each set of rows where the given
+expressions evaluate to equal. The DISTINCT ON
+expressions are interpreted using the same rules as for
+ORDER BY (see above). Note that the ``first
+row'' of each set is unpredictable unless ORDER
+BY is used to ensure that the desired row appears first. For
+example,
+.sp
+.nf
+SELECT DISTINCT ON (location) location, time, report
+    FROM weather_reports
+    ORDER BY location, time DESC;
+.sp
+.fi
+retrieves the most recent weather report for each location. But
+if we had not used ORDER BY to force descending order
+of time values for each location, we'd have gotten a report from
+an unpredictable time for each location.
+.SS "FOR UPDATE CLAUSE"
+.PP
+The FOR UPDATE clause has this form:
+.sp
+.nf
+FOR UPDATE [ OF \fItable_name\fR [, ...] ]
+.sp
+.fi
+.PP
+FOR UPDATE causes the rows retrieved by the
+\fBSELECT\fR statement to be locked as though for
+update. This prevents them from being modified or deleted by
+other transactions until the current transaction ends. That is,
+other transactions that attempt \fBUPDATE\fR,
+\fBDELETE\fR, or \fBSELECT FOR UPDATE\fR
+of these rows will be blocked until the current transaction ends.
+Also, if an \fBUPDATE\fR, \fBDELETE\fR,
+or \fBSELECT FOR UPDATE\fR from another transaction
+has already locked a selected row or rows, \fBSELECT FOR
+UPDATE\fR will wait for the other transaction to complete,
+and will then lock and return the updated row (or no row, if the
+row was deleted). For further discussion see the chapter called ``Concurrency Control'' in the documentation.
+.PP
+If specific tables are named in FOR UPDATE,
+then only rows coming from those tables are locked; any other
+tables used in the \fBSELECT\fR are simply read as
+usual.
+.PP
+FOR UPDATE cannot be used in contexts where
+returned rows can't be clearly identified with individual table
+rows; for example it can't be used with aggregation.
+.PP
+FOR UPDATE may appear before
+LIMIT for compatibility with
+PostgreSQL versions before 7.3. It
+effectively executes after LIMIT, however, and
+so that is the recommended place to write it.
+.SH "EXAMPLES"
+.PP
+To join the table films with the table
+distributors:
+.sp
+.nf
+SELECT f.title, f.did, d.name, f.date_prod, f.kind
+    FROM distributors d, films f
+    WHERE f.did = d.did
+
+       title       | did |     name     | date_prod  |   kind
+-------------------+-----+--------------+------------+----------
+ The Third Man     | 101 | British Lion | 1949-12-23 | Drama
+ The African Queen | 101 | British Lion | 1951-08-11 | Romantic
+ ...
+.sp
+.fi
+.PP
+To sum the column len of all films and group
+the results by kind:
+.sp
+.nf
+SELECT kind, sum(len) AS total FROM films GROUP BY kind;
+
+   kind   | total
+----------+-------
+ Action   | 07:34
+ Comedy   | 02:58
+ Drama    | 14:28
+ Musical  | 06:42
+ Romantic | 04:38
+.sp
+.fi
+.PP
+To sum the column len of all films, group
+the results by kind and show those group totals
+that are less than 5 hours:
+.sp
+.nf
+SELECT kind, sum(len) AS total
+    FROM films
+    GROUP BY kind
+    HAVING sum(len) < interval '5 hours';
+
+   kind   | total
+----------+-------
+ Comedy   | 02:58
+ Romantic | 04:38
+.sp
+.fi
+.PP
+The following two examples are identical ways of sorting the individual
+results according to the contents of the second column
+(name):
+.sp
+.nf
+SELECT * FROM distributors ORDER BY name;
+SELECT * FROM distributors ORDER BY 2;
+
+ did |       name
+-----+------------------
+ 109 | 20th Century Fox
+ 110 | Bavaria Atelier
+ 101 | British Lion
+ 107 | Columbia
+ 102 | Jean Luc Godard
+ 113 | Luso films
+ 104 | Mosfilm
+ 103 | Paramount
+ 106 | Toho
+ 105 | United Artists
+ 111 | Walt Disney
+ 112 | Warner Bros.
+ 108 | Westward
+.sp
+.fi
+.PP
+This example shows how to obtain the union of the tables
+distributors and
+actors, restricting the results to those that begin
+with letter W in each table. Only distinct rows are wanted, so the
+key word ALL is omitted.
+.sp
+.nf
+distributors:               actors:
+ did |     name              id |     name
+-----+--------------        ----+----------------
+ 108 | Westward               1 | Woody Allen
+ 111 | Walt Disney            2 | Warren Beatty
+ 112 | Warner Bros.           3 | Walter Matthau
+ ...                         ...
+
+SELECT distributors.name
+    FROM distributors
+    WHERE distributors.name LIKE 'W%'
+UNION
+SELECT actors.name
+    FROM actors
+    WHERE actors.name LIKE 'W%';
+
+      name
+----------------
+ Walt Disney
+ Walter Matthau
+ Warner Bros.
+ Warren Beatty
+ Westward
+ Woody Allen
+.sp
+.fi
+.PP
+This example shows how to use a function in the FROM
+clause, both with and without a column definition list.
+.sp
+.nf
+CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS '
+    SELECT * FROM distributors WHERE did = $1;
+' LANGUAGE SQL;
+
+SELECT * FROM distributors(111);
+ did |    name
+-----+-------------
+ 111 | Walt Disney
+
+CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS '
+    SELECT * FROM distributors WHERE did = $1;
+' LANGUAGE SQL;
+
+SELECT * FROM distributors_2(111) AS (f1 int, f2 text);
+ f1  |     f2
+-----+-------------
+ 111 | Walt Disney
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+Of course, the \fBSELECT\fR statement is compatible
+with the SQL standard. But there are some extensions and some
+missing features.
+.SS "OMITTED FROM CLAUSES"
+.PP
+PostgreSQL allows one to omit the
+FROM clause. It has a straightforward use to
+compute the results of simple expressions:
+.sp
+.nf
+SELECT 2+2;
+
+ ?column?
+----------
+        4
+.sp
+.fi
+Some other SQL databases cannot do this except
+by introducing a dummy one-row table from which to do the
+\fBSELECT\fR.
+.PP
+A less obvious use is to abbreviate a normal
+\fBSELECT\fR from tables:
+.sp
+.nf
+SELECT distributors.* WHERE distributors.name = 'Westward';
+
+ did |   name
+-----+----------
+ 108 | Westward
+.sp
+.fi
+This works because an implicit FROM item is
+added for each table that is referenced in other parts of the
+\fBSELECT\fR statement but not mentioned in
+FROM.
+.PP
+While this is a convenient shorthand, it's easy to misuse. For
+example, the command
+.sp
+.nf
+SELECT distributors.* FROM distributors d;
+.sp
+.fi
+is probably a mistake; most likely the user meant
+.sp
+.nf
+SELECT d.* FROM distributors d;
+.sp
+.fi
+rather than the unconstrained join
+.sp
+.nf
+SELECT distributors.* FROM distributors d, distributors distributors;
+.sp
+.fi
+that he will actually get. To help detect this sort of mistake,
+PostgreSQL will warn if the
+implicit-FROM feature is used in a
+\fBSELECT\fR statement that also contains an explicit
+FROM clause. Also, it is possible to disable
+the implicit-FROM feature by setting the
+ADD_MISSING_FROM parameter to false.
+.SS "THE AS KEY WORD"
+.PP
+In the SQL standard, the optional key word AS is just
+noise and can be omitted without affecting the meaning. The
+PostgreSQL parser requires this key
+word when renaming output columns because the type extensibility
+features lead to parsing ambiguities without it.
+AS is optional in FROM
+items, however.
+.SS "NAMESPACE AVAILABLE TO GROUP BY AND ORDER BY"
+.PP
+In the SQL92 standard, an ORDER BY clause may
+only use result column names or numbers, while a GROUP
+BY clause may only use expressions based on input column
+names. PostgreSQL extends each of
+these clauses to allow the other choice as well (but it uses the
+standard's interpretation if there is ambiguity).
+PostgreSQL also allows both clauses to
+specify arbitrary expressions. Note that names appearing in an
+expression will always be taken as input-column names, not as
+result-column names.
+.PP
+SQL99 uses a slightly different definition which is not upward compatible
+with SQL92. In most cases, however, PostgreSQL
+will interpret an ORDER BY or GROUP
+BY expression the same way SQL99 does.
+.SS "NONSTANDARD CLAUSES"
+.PP
+The clauses DISTINCT ON,
+LIMIT, and OFFSET are not
+defined in the SQL standard.
diff --git a/raw/man7/select_into.7 b/raw/man7/select_into.7
new file mode 100644
index 0000000..c3affd1
--- /dev/null
+++ b/raw/man7/select_into.7
@@ -0,0 +1,60 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SELECT INTO" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SELECT INTO \- create a new table from the results of a query
+
+.SH SYNOPSIS
+.sp
+.nf
+SELECT [ ALL | DISTINCT [ ON ( \fIexpression\fR [, ...] ) ] ]
+    * | \fIexpression\fR [ AS \fIoutput_name\fR ] [, ...]
+    INTO [ TEMPORARY | TEMP ] [ TABLE ] \fInew_table\fR
+    [ FROM \fIfrom_item\fR [, ...] ]
+    [ WHERE \fIcondition\fR ]
+    [ GROUP BY \fIexpression\fR [, ...] ]
+    [ HAVING \fIcondition\fR [, ...] ]
+    [ { UNION | INTERSECT | EXCEPT } [ ALL ] \fIselect\fR ]
+    [ ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...] ]
+    [ LIMIT { \fIcount\fR | ALL } ]
+    [ OFFSET \fIstart\fR ]
+    [ FOR UPDATE [ OF \fItablename\fR [, ...] ] ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBSELECT INTO\fR creates a new table and fills it
+with data computed by a query. The data is not returned to the
+client, as it is with a normal \fBSELECT\fR. The new
+table's columns have the names and data types associated with the
+output columns of the \fBSELECT\fR.
+.SH "PARAMETERS"
+.TP
+\fBTEMPORARY or TEMP\fR
+If specified, the table is created as a temporary table. Refer
+to CREATE TABLE [\fBcreate_table\fR(7)] for details.
+.TP
+\fB\fInew_table\fB\fR
+The name (optionally schema-qualified) of the table to be created.
+.PP
+All other parameters are described in detail under SELECT [\fBselect\fR(7)].
+.PP
+.SH "NOTES"
+.PP
+CREATE TABLE AS [\fBcreate_table_as\fR(7)]
+is functionally equivalent to \fBSELECT INTO\fR.
+\fBCREATE TABLE AS\fR is the recommended syntax, since
+this form of \fBSELECT INTO\fR is not available in
+\fBECPG\fR or
+\fBPL/pgSQL\fR, because they interpret the
+INTO clause differently.
+.SH "COMPATIBILITY"
+.PP
+The SQL standard uses \fBSELECT ... INTO\fR to
+represent selecting values into scalar variables of a host program,
+rather than creating a new table. This indeed is the usage found
+in \fBECPG\fR and \fBPL/pgSQL\fR.
+The PostgreSQL usage of \fBSELECT
+INTO\fR to represent table creation is historical. It's
+best to use \fBCREATE TABLE AS\fR for this purpose in
+new code. (\fBCREATE TABLE AS\fR isn't standard
+either, but it's less likely to cause confusion.)
diff --git a/raw/man7/set.7 b/raw/man7/set.7
new file mode 100644
index 0000000..cce7d3e
--- /dev/null
+++ b/raw/man7/set.7
@@ -0,0 +1,166 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET \- change a run-time parameter
+
+.SH SYNOPSIS
+.sp
+.nf
+SET [ SESSION | LOCAL ] \fIname\fR { TO | = } { \fIvalue\fR | '\fIvalue\fR' | DEFAULT }
+SET [ SESSION | LOCAL ] TIME ZONE { \fItimezone\fR | LOCAL | DEFAULT }
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+The \fBSET\fR command changes run-time configuration
+parameters. Many of the run-time parameters listed in
+the section called ``Run-time Configuration'' in the documentation can be changed on-the-fly with
+\fBSET\fR.
+(But some require superuser privileges to change, and others cannot
+be changed after server or session start.)
+\fBSET\fR only affects the value used by the current
+session.
+.PP
+If \fBSET\fR or \fBSET SESSION\fR is issued
+within a transaction that is later aborted, the effects of the
+\fBSET\fR command disappear when the transaction is rolled
+back. (This behavior represents a change from
+PostgreSQL versions prior to 7.3, where
+the effects of \fBSET\fR would not roll back after a later
+error.) Once the surrounding transaction is committed, the effects
+will persist until the end of the session, unless overridden by another
+\fBSET\fR.
+.PP
+The effects of \fBSET LOCAL\fR last only till the end of
+the current transaction, whether committed or not. A special case is
+\fBSET\fR followed by \fBSET LOCAL\fR within
+a single transaction: the \fBSET LOCAL\fR value will be
+seen until the end of the transaction, but afterwards (if the transaction
+is committed) the \fBSET\fR value will take effect.
+.SH "PARAMETERS"
+.TP
+\fBSESSION\fR
+Specifies that the command takes effect for the current session.
+(This is the default if neither SESSION nor
+LOCAL appears.)
+.TP
+\fBLOCAL\fR
+Specifies that the command takes effect for only the current
+transaction. After \fBCOMMIT\fR or \fBROLLBACK\fR,
+the session-level setting takes effect again. Note that
+\fBSET LOCAL\fR will appear to have no effect if it is
+executed outside a \fBBEGIN\fR block, since the
+transaction will end immediately.
+.TP
+\fB\fIname\fB\fR
+Name of a settable run-time parameter. Available parameters are
+documented in the section called ``Run-time Configuration'' in the documentation and below.
+.TP
+\fB\fIvalue\fB\fR
+New value of parameter. Values can be specified as string
+constants, identifiers, numbers, or comma-separated lists of
+these. DEFAULT can be used to specify
+resetting the parameter to its default value.
+.PP
+Besides the configuration parameters documented in the section called ``Run-time Configuration'' in the documentation, there are a few that can only be
+adjusted using the \fBSET\fR command or that have a
+special syntax:
+.TP
+\fBNAMES\fR
+SET NAMES \fIvalue\fR is an alias for
+SET client_encoding TO \fIvalue\fR.
+.TP
+\fBSEED\fR
+Sets the internal seed for the random number generator (the
+function \fBrandom\fR). Allowed values are
+floating-point numbers between 0 and 1, which are then
+multiplied by 231-1.
+
+The seed can also be set by invoking the function
+\fBsetseed\fR:
+.sp
+.nf
+SELECT setseed(\fIvalue\fR);
+.sp
+.fi
+.TP
+\fBTIME ZONE\fR
+SET TIME ZONE \fIvalue\fR is an alias
+for SET timezone TO \fIvalue\fR. The
+syntax SET TIME ZONE allows special syntax
+for the time zone specification. Here are examples of valid
+values (but note some are accepted only on some platforms):
+.RS
+.TP
+\fB\&'PST8PDT'\fR
+The time zone for Berkeley, California.
+.TP
+\fB\&'Portugal'\fR
+The time zone for Portugal.
+.TP
+\fB\&'Europe/Rome'\fR
+The time zone for Italy.
+.TP
+\fB-7\fR
+The time zone 7 hours west from UTC (equivalent
+to PDT). Positive values are east from UTC.
+.TP
+\fBINTERVAL '-08:00' HOUR TO MINUTE\fR
+The time zone 8 hours west from UTC (equivalent
+to PST).
+.TP
+\fBLOCAL\fR
+.TP
+\fBDEFAULT\fR
+Set the time zone to your local time zone (the one that
+the server's operating system defaults to).
+.RE
+.PP
+See the section called ``Date/Time Types'' in the documentation for more information
+about time zones.
+.PP
+.PP
+.SH "NOTES"
+.PP
+The function \fBset_config\fR provides equivalent
+functionality. See the section called ``Miscellaneous Functions'' in the documentation.
+.SH "EXAMPLES"
+.PP
+Set the schema search path:
+.sp
+.nf
+SET search_path TO my_schema, public;
+.sp
+.fi
+.PP
+Set the style of date to traditional
+POSTGRES with ``day before month''
+input convention:
+.sp
+.nf
+SET datestyle TO postgres, dmy;
+.sp
+.fi
+.PP
+Set the time zone for Berkeley, California, using quotes to
+preserve the uppercase spelling of the time zone name:
+.sp
+.nf
+SET TIME ZONE 'PST8PDT';
+SELECT current_timestamp AS today;
+
+             today
+-------------------------------
+ 2003-04-29 15:02:01.218622-07
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+SET TIME ZONE extends syntax defined in the SQL
+standard. The standard allows only numeric time zone offsets while
+PostgreSQL allows more flexible
+time-zone specifications. All other SET
+features are PostgreSQL extensions.
+.SH "SEE ALSO"
+RESET [\fBreset\fR(7)], SHOW [\fBshow\fR(l)]
+
diff --git a/raw/man7/set_constraints.7 b/raw/man7/set_constraints.7
new file mode 100644
index 0000000..2030968
--- /dev/null
+++ b/raw/man7/set_constraints.7
@@ -0,0 +1,53 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET CONSTRAINTS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET CONSTRAINTS \- set the constraint mode of the current transaction
+
+.SH SYNOPSIS
+.sp
+.nf
+SET CONSTRAINTS { ALL | \fIname\fR [, ...] } { DEFERRED | IMMEDIATE }
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBSET CONSTRAINTS\fR sets the behavior of constraint
+evaluation in the current transaction. In
+IMMEDIATE mode, constraints are checked at the
+end of each statement. In DEFERRED mode,
+constraints are not checked until transaction commit.
+.PP
+When you change the mode of a constraint to be
+IMMEDIATE, the new constraint mode takes effect
+retroactively: any outstanding data modifications that would have
+been checked at the end of the transaction (when using
+DEFERRED) are instead checked during the
+execution of the \fBSET CONSTRAINTS\fR command.
+.PP
+Upon creation, a constraint is always give one of three
+characteristics: INITIALLY DEFERRED,
+INITIALLY IMMEDIATE DEFERRABLE, or
+INITIALLY IMMEDIATE NOT DEFERRABLE. The third
+class is not affected by the \fBSET CONSTRAINTS\fR
+command.
+.PP
+Currently, only foreign key constraints are affected by this
+setting. Check and unique constraints are always effectively
+initially immediate not deferrable.
+.SH "NOTES"
+.PP
+This command only alters the behavior of constraints within the
+current transaction. Thus, if you execute this command outside of a
+transaction block
+(\fBBEGIN\fR/\fBCOMMIT\fR pair), it will
+not appear to have any effect. If you wish to change the behavior
+of a constraint without needing to issue a \fBSET
+CONSTRAINTS\fR command in every transaction, specify
+INITIALLY DEFERRED or INITIALLY
+IMMEDIATE when you create the constraint.
+.SH "COMPATIBILITY"
+.PP
+This command complies with the behavior defined in the SQL
+standard, except for the limitation that, in
+PostgreSQL, it only applies to
+foreign-key constraints.
diff --git a/raw/man7/set_session_authorization.7 b/raw/man7/set_session_authorization.7
new file mode 100644
index 0000000..8e22235
--- /dev/null
+++ b/raw/man7/set_session_authorization.7
@@ -0,0 +1,69 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET SESSION AUTHORIZATION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET SESSION AUTHORIZATION \- set the session user identifier and the current user identifier of the current session
+
+.SH SYNOPSIS
+.sp
+.nf
+SET [ SESSION | LOCAL ] SESSION AUTHORIZATION \fIusername\fR
+SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
+RESET SESSION AUTHORIZATION
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+This command sets the session user identifier and the current user
+identifier of the current SQL-session context to be \fIusername\fR. The user name may be
+written as either an identifier or a string literal. Using this
+command, it is possible, for example, to temporarily become an
+unprivileged user and later switch back to become a superuser.
+.PP
+The session user identifier is initially set to be the (possibly
+authenticated) user name provided by the client. The current user
+identifier is normally equal to the session user identifier, but
+may change temporarily in the context of ``setuid''
+functions and similar mechanisms. The current user identifier is
+relevant for permission checking.
+.PP
+The session user identifier may be changed only if the initial session
+user (the \fIauthenticated user\fR) had the
+superuser privilege. Otherwise, the command is accepted only if it
+specifies the authenticated user name.
+.PP
+The SESSION and LOCAL modifiers act the same
+as for the regular SET [\fBset\fR(7)]
+command.
+.PP
+The DEFAULT and RESET forms reset the session
+and current user identifiers to be the originally authenticated user
+name. These forms may be executed by any user.
+.SH "EXAMPLES"
+.sp
+.nf
+SELECT SESSION_USER, CURRENT_USER;
+
+ session_user | current_user 
+--------------+--------------
+ peter        | peter
+
+SET SESSION AUTHORIZATION 'paul';
+
+SELECT SESSION_USER, CURRENT_USER;
+
+ session_user | current_user 
+--------------+--------------
+ paul         | paul
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The SQL standard allows some other expressions to appear in place
+of the literal \fIusername\fR which are not
+important in practice. PostgreSQL
+allows identifier syntax ("username"), which SQL
+does not. SQL does not allow this command during a transaction;
+PostgreSQL does not make this
+restriction because there is no reason to. The privileges
+necessary to execute this command are left implementation-defined
+by the standard.
diff --git a/raw/man7/set_transaction.7 b/raw/man7/set_transaction.7
new file mode 100644
index 0000000..28417ef
--- /dev/null
+++ b/raw/man7/set_transaction.7
@@ -0,0 +1,95 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET TRANSACTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET TRANSACTION \- set the characteristics of the current transaction
+
+.SH SYNOPSIS
+.sp
+.nf
+SET TRANSACTION
+    [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
+SET SESSION CHARACTERISTICS AS TRANSACTION
+    [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+The \fBSET TRANSACTION\fR command sets the transaction
+characteristics of the current transaction. It has no effect on any
+subsequent transactions. \fBSET SESSION
+CHARACTERISTICS\fR sets the default transaction
+characteristics for each transaction of a session. \fBSET
+TRANSACTION\fR can override it for an individual
+transaction.
+.PP
+The available transaction characteristics are the transaction
+isolation level and the transaction access mode (read/write or
+read-only).
+.PP
+The isolation level of a transaction determines what data the
+transaction can see when other transactions are running concurrently.
+.TP
+\fBREAD COMMITTED\fR
+A statement can only see rows committed before it began. This
+is the default.
+.TP
+\fBSERIALIZABLE\fR
+The current transaction can only see rows committed before
+first query or data-modification statement was executed in this transaction.
+.sp
+.RS
+.B "Tip:"
+Intuitively, serializable means that two concurrent
+transactions will leave the database in the same state as if
+the two has been executed strictly after one another in either
+order.
+.RE
+.sp
+.PP
+The transaction isolation level cannot be set after the first query
+or data-modification statement (\fBSELECT\fR,
+\fBINSERT\fR, \fBDELETE\fR,
+\fBUPDATE\fR, \fBFETCH\fR,
+\fBCOPY\fR) of a transaction has been executed. See
+the chapter called ``Concurrency Control'' in the documentation for more information about transaction
+isolation and concurrency control.
+.PP
+The transaction access mode determines whether the transaction is
+read/write or read-only. Read/write is the default. When a
+transaction is read-only, the following SQL commands are
+disallowed: INSERT, UPDATE,
+DELETE, and COPY TO if the
+table they would write to is not a temporary table; all
+CREATE, ALTER, and
+DROP commands; COMMENT,
+GRANT, REVOKE,
+TRUNCATE; and EXPLAIN ANALYZE
+and EXECUTE if the command they would execute is
+among those listed. This is a high-level notion of read-only that
+does not prevent writes to disk.
+.SH "NOTES"
+.PP
+The session default transaction isolation level can also be set
+with the command
+.sp
+.nf
+SET default_transaction_isolation = '\fIvalue\fR'
+.sp
+.fi
+and in the configuration file. Consult the section called ``Run-time Configuration'' in the documentation for more
+information.
+.SH "COMPATIBILITY"
+.PP
+Both commands are defined in the SQL standard.
+SERIALIZABLE is the default transaction
+isolation level in the standard; in PostgreSQL the default is
+ordinarily READ COMMITTED, but you can change it as
+described above. PostgreSQL does not
+provide the isolation levels READ UNCOMMITTED
+and REPEATABLE READ. Because of multiversion
+concurrency control, the SERIALIZABLE level is
+not truly serializable. See the chapter called ``Concurrency Control'' in the documentation for details.
+.PP
+In the SQL standard, there is one other transaction characteristic
+that can be set with these commands: the size of the diagnostics
+area. This concept is only for use in embedded SQL.
diff --git a/raw/man7/show.7 b/raw/man7/show.7
new file mode 100644
index 0000000..8e0ca7d
--- /dev/null
+++ b/raw/man7/show.7
@@ -0,0 +1,111 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SHOW" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SHOW \- show the value of a run-time parameter
+
+.SH SYNOPSIS
+.sp
+.nf
+SHOW \fIname\fR
+SHOW ALL
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBSHOW\fR will display the current setting of
+run-time parameters. These variables can be set using the
+\fBSET\fR statement, by editing the
+\fIpostgresql.conf\fR configuration file, through
+the \fBPGOPTIONS\fR environmental variable (when using
+\fBlibpq\fR or a \fBlibpq\fR-based
+application), or through command-line flags when starting the
+\fBpostmaster\fR. See the section called ``Run-time Configuration'' in the documentation for details.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name of a run-time parameter. Available parameters are
+documented in the section called ``Run-time Configuration'' in the documentation and on the SET [\fBset\fR(7)] reference page. In
+addition, there are a few parameters that can be shown but not
+set:
+.RS
+.TP
+\fBSERVER_VERSION\fR
+Shows the server's version number.
+.TP
+\fBSERVER_ENCODING\fR
+Shows the server-side character set encoding. At present,
+this parameter can be shown but not set, because the
+encoding is determined at database creation time.
+.TP
+\fBLC_COLLATE\fR
+Shows the database's locale setting for collation (text
+ordering). At present, this parameter can be shown but not
+set, because the setting is determined at
+\fBinitdb\fR time.
+.TP
+\fBLC_CTYPE\fR
+Shows the database's locale setting for character
+classification. At present, this parameter can be shown but
+not set, because the setting is determined at
+\fBinitdb\fR time.
+.TP
+\fBIS_SUPERUSER\fR
+True if the current session authorization identifier has
+superuser privileges.
+.RE
+.PP
+.TP
+\fBALL\fR
+Show the values of all configurations parameters.
+.SH "NOTES"
+.PP
+The function \fBcurrent_setting\fR produces
+equivalent output. See the section called ``Miscellaneous Functions'' in the documentation.
+.SH "EXAMPLES"
+.PP
+Show the current setting of the parameter DateStyle:
+.sp
+.nf
+SHOW DateStyle;
+ DateStyle
+-----------
+ ISO, MDY
+(1 row)
+.sp
+.fi
+.PP
+Show the current setting of the parameter geqo:
+.sp
+.nf
+SHOW geqo;
+ geqo
+------
+ on
+(1 row)
+.sp
+.fi
+.PP
+Show all settings:
+.sp
+.nf
+SHOW ALL;
+             name              |                setting
+-------------------------------+---------------------------------------
+ australian_timezones          | off
+ authentication_timeout        | 60
+ checkpoint_segments           | 3
+    .
+    .
+    .
+ wal_debug                     | 0
+ wal_sync_method               | fdatasync
+(94 rows)
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+The \fBSHOW\fR command is a
+PostgreSQL extension.
+.SH "SEE ALSO"
+SET [\fBset\fR(7)]
+
diff --git a/raw/man7/signal.7 b/raw/man7/signal.7
new file mode 100644
index 0000000..3cb228b
--- /dev/null
+++ b/raw/man7/signal.7
@@ -0,0 +1,255 @@
+'\" t
+.\" Copyright (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\" Copyright (c) 2002 by Michael Kerrisk (mtk16 at ext.canterbury.ac.nz)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 17:34:08 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Jan  7 01:41:27 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Sun Apr 14 12:02:29 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Sat Nov 13 16:28:23 1999 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified 10 Apr 2002, by Michael Kerrisk (mtk16 at ext.canterbury.ac.nz)
+.\" Modified  7 Jun 2002, by Michael Kerrisk (mtk16 at ext.canterbury.ac.nz)
+.\"	Added information on real-time signals
+.\" Modified 13 Jun 2002, by Michael Kerrisk (mtk16 at ext.canterbury.ac.nz)
+.\"	Noted that SIGSTKFLT is in fact unused
+.\"
+.TH SIGNAL 7  2002-06-13 "Linux 2.4.18" "Linux Programmer's Manual"
+.SH NAME
+signal \- list of available signals
+.SH DESCRIPTION
+Linux supports both POSIX reliable signals (hereinafter
+"standard signals") and POSIX real-time signals.
+.SS "Standard Signals"
+Linux supports the standard signals listed below. Several signal numbers
+are architecture dependent, as indicated in the "Value" column.
+(Where three values are given, the first one is usually valid for
+alpha and sparc, the middle one for i386, ppc and sh, and
+the last one for mips.
+A \- denotes that a signal is absent on the corresponding architecture.)
+
+The entries in the "Action" column of the table specify
+the default action for the signal, as follows:
+.IP Term
+Default action is to terminate the process.
+.IP Ign
+Default action is to ignore the signal.
+.IP Core
+Default action is to terminate the process and dump core.
+.IP Stop
+Default action is to stop the process.
+.PP
+First the signals described in the original POSIX.1 standard.
+.sp
+.PP
+.TS
+l c c l
+____
+lB c c l.
+Signal	Value	Action	Comment
+SIGHUP	\01	Term	Hangup detected on controlling terminal
+			or death of controlling process
+SIGINT	\02	Term	Interrupt from keyboard
+SIGQUIT	\03	Core	Quit from keyboard
+SIGILL	\04	Core	Illegal Instruction
+SIGABRT	\06	Core	Abort signal from \fIabort\fP(3)
+SIGFPE	\08	Core	Floating point exception
+SIGKILL	\09	Term	Kill signal
+SIGSEGV	11	Core	Invalid memory reference
+SIGPIPE	13	Term	Broken pipe: write to pipe with no readers
+SIGALRM	14	Term	Timer signal from \fIalarm\fP(2)
+SIGTERM	15	Term	Termination signal
+SIGUSR1	30,10,16	Term	User\-defined signal 1
+SIGUSR2	31,12,17	Term	User\-defined signal 2
+SIGCHLD	20,17,18	Ign	Child stopped or terminated
+SIGCONT	19,18,25		Continue if stopped
+SIGSTOP	17,19,23	Stop	Stop process
+SIGTSTP	18,20,24	Stop	Stop typed at tty
+SIGTTIN	21,21,26	Stop	tty input for background process
+SIGTTOU	22,22,27	Stop	tty output for background process
+.TE
+
+The signals
+.B SIGKILL
+and
+.B SIGSTOP
+cannot be caught, blocked, or ignored.
+
+Next the signals not in the POSIX.1 standard but described in SUSv2 and
+SUSv3 / POSIX 1003.1-2001.
+.sp
+.PP
+.TS
+l c c l
+____
+lB c c l.
+Signal	Value	Action	Comment
+SIGBUS	10,7,10	Core	Bus error (bad memory access)
+SIGPOLL		Term	Pollable event (Sys V). Synonym of SIGIO
+SIGPROF	27,27,29	Term	Profiling timer expired
+SIGSYS	12,\-,12	Core	Bad argument to routine (SVID)
+SIGTRAP	5	Core	Trace/breakpoint trap
+SIGURG	16,23,21	Ign	Urgent condition on socket (4.2 BSD)
+SIGVTALRM	26,26,28	Term	Virtual alarm clock (4.2 BSD)
+SIGXCPU	24,24,30	Core	CPU time limit exceeded (4.2 BSD)
+SIGXFSZ	25,25,31	Core	File size limit exceeded (4.2 BSD)
+.TE
+
+Up to and including Linux 2.2, the default behaviour for
+.BR SIGSYS ", " SIGXCPU ", " SIGXFSZ ", "
+and (on architectures other than SPARC and MIPS)
+.B SIGBUS
+was to terminate the process (without a core dump).
+(On some other Unices the default action for
+.BR SIGXCPU " and " SIGXFSZ
+is to terminate the process without a core dump.)
+Linux 2.4 conforms to the POSIX 1003.1-2001 requirements for these signals,
+terminating the process with a core dump.
+
+Next various other signals.
+.sp
+.PP
+.TS
+l c c l
+____
+lB c c l.
+Signal	Value	Action	Comment
+SIGIOT	6	Core	IOT trap. A synonym for SIGABRT
+SIGEMT	7,\-,7	Term
+SIGSTKFLT	\-,16,\-	Term	Stack fault on coprocessor (unused)
+SIGIO	23,29,22	Term	I/O now possible (4.2 BSD)
+SIGCLD	\-,\-,18	Ign	A synonym for SIGCHLD
+SIGPWR	29,30,19	Term	Power failure (System V)
+SIGINFO	29,\-,\-		A synonym for SIGPWR
+SIGLOST	\-,\-,\-	Term	File lock lost
+SIGWINCH	28,28,20	Ign	Window resize signal (4.3 BSD, Sun)
+SIGUNUSED	\-,31,\-	Term	Unused signal (will be SIGSYS)
+.TE
+
+(Signal 29 is
+.B SIGINFO
+/
+.B SIGPWR
+on an alpha but
+.B SIGLOST
+on a sparc.)
+
+.B SIGEMT
+is not specified in POSIX 1003.1-2001, but neverthless appears
+on most other Unices, where its default action is typically to terminate
+the process with a core dump.
+
+.B SIGPWR
+(which is not specified in POSIX 1003.1-2001) is typically ignored
+by default on those other Unices where it appears.
+
+.B SIGIO
+(which is not specified in POSIX 1003.1-2001) is ignored by default
+on several other Unices.
+.SS "Real-time Signals"
+Linux supports real-time signals as originally defined in the POSIX.4
+real-time extensions (and now included in POSIX 1003.1-2001).
+Linux supports 32 real-time signals, numbered from 32
+.RB ( SIGRTMIN )
+to 63
+.RB ( SIGRTMAX ).
+(Programs should always refer to real-time signals using notation
+.BR SIGRTMIN +n,
+since the range of real-time signal numbers varies across Unices.)
+.PP
+Unlike standard signals, real-time signals have no predefined meanings:
+the entire set of real-time signals can be used for application-defined
+purposes.
+(Note, however, that the LinuxThreads implementation uses the first
+three real-time signals.)
+.PP
+The default action for an unhandled real-time signal is to terminate the
+receiving process.
+.PP
+Real-time signals are distinguished by the following:
+.IP 1. 4
+Multiple instances of real-time signals can be queued.
+By contrast, if multiple instances of a standard signal are delivered
+while that signal is currently blocked, then only one instance is queued.
+.IP 2. 4
+If the signal is sent using
+.BR sigqueue (2),
+an accompanying value (either an integer or a pointer) can be sent
+with the signal.
+If the receiving process establishes a handler for this signal using the
+.B SA_SIGACTION
+flag to
+.BR sigaction (2)
+then it can obtain this data via the
+.I si_value
+field of the
+.I siginfo_t
+structure passed as the second argument to the handler.
+Furthermore, the
+.I si_pid
+and
+.I si_uid
+fields of this structure can be used to obtain the PID
+and real user ID of the process sending the signal.
+.IP 3. 4
+Real-time signals are delivered in a guaranteed order.
+Multiple real-time signals of the same type are delivered in the order
+they were sent.
+If different real-time signals are sent to a process, they are delivered
+starting with the lowest-numbered signal.
+(I.e., low-numbered signals have highest priority.)
+.PP
+If both standard and real-time signals are pending for a process,
+POSIX leaves it unspecified which is delivered first.
+Linux, like many other implementations, gives priority
+to standard signals in this case.
+.PP
+According to POSIX, an implementation should permit at least
+_POSIX_SIGQUEUE_MAX (32) real-time signals to be queued to
+a process.
+However, rather than placing a per-process limit, Linux imposes
+a system-wide limit on the number of queued real-time signals
+for all processes.
+This limit can be viewed and (with privilege) changed via the
+.I /proc/sys/kernel/rtsig-max
+file.
+A related file,
+.IR /proc/sys/kernel/rtsig-nr ,
+can be used to find out how many real-time signals are currently queued.
+.SH "CONFORMING TO"
+POSIX.1
+.SH BUGS
+.B SIGIO
+and
+.B SIGLOST
+have the same value.
+The latter is commented out in the kernel source, but
+the build process of some software still thinks that
+signal 29 is
+.BR SIGLOST .
+.SH "SEE ALSO"
+.BR kill (1),
+.BR kill (2),
+.BR setitimer (2),
+.BR sigaction (2),
+.BR signal (2),
+.BR sigprocmask (2),
+.BR sigqueue (2)
diff --git a/raw/man7/socket.7 b/raw/man7/socket.7
new file mode 100644
index 0000000..069033e
--- /dev/null
+++ b/raw/man7/socket.7
@@ -0,0 +1,557 @@
+'\" t
+.\" Don't change the first line, it tells man that we need tbl.
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" and copyright (c) 1999 Matthew Wilcox. 
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: socket.7,v 1.1 2003/12/20 03:31:53 bbbush Exp $
+.\"
+.\" 30 Oct 2002, Modified, Michael Kerrisk, mtk16 at ext.canterbury.ac.nz
+.\"	Added description of SO_ACCEPTCONN
+.\"	Plus 1 language tidy-up
+.\"
+.TH SOCKET  7 1999-05-07 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+socket - Linux socket interface
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.IB mysocket " = socket(int " socket_family ", int " socket_type ", int " protocol );
+
+.SH DESCRIPTION
+This manual page describes the Linux networking socket layer user 
+interface. The BSD compatible sockets
+are the uniform interface
+between the user process and the network protocol stacks in the kernel.
+The protocol modules are grouped into 
+.I protocol families
+like
+.BR PF_INET ", " PF_IPX ", " PF_PACKET
+and
+.I socket types
+like
+.B SOCK_STREAM
+or
+.BR SOCK_DGRAM .
+See 
+.BR socket (2)
+for more information on families and types.
+
+.SH "SOCKET LAYER FUNCTIONS"
+These functions are used by the user process to send or receive packets and 
+to do other socket operations. For more information see their respective
+manual pages.
+
+.BR socket (2)
+creates a socket,
+.BR connect (2)
+connects a socket to a remote socket address,
+the 
+.BR bind (2)
+function binds a socket to a local socket address,
+.BR listen (2)
+tells the socket that new connections shall be accepted, and
+.BR accept (2)
+is used to get a new socket with a new incoming connection.
+.BR socketpair (2)
+returns two connected anonymous sockets (only implemented for a few
+local families like
+.BR PF_UNIX )
+.PP
+.BR send (2),
+.BR sendto (2),
+and
+.BR sendmsg (2)
+send data over a socket, and
+.BR recv (2),
+.BR recvfrom (2),
+.BR recvmsg (2)
+receive data from a socket.
+.BR poll (2)
+and
+.BR select (2)
+wait for arriving data or a readiness to send data.
+In addition, the standard I/O operations like 
+.BR write (2),
+.BR writev (2),
+.BR sendfile (2),
+.BR read (2),
+and  
+.BR readv (2) 
+can be used to read and write data.
+.PP
+.BR getsockname (2)
+returns the local socket address and
+.BR getpeername (2)
+returns the remote socket address.
+.BR getsockopt (2)
+and
+.BR setsockopt (2)
+are used to set or get socket layer or protocol options. 
+.BR ioctl (2)
+can be used to set or read some other options.
+.PP
+.BR close (2)
+is used to close a socket.
+.BR shutdown (2)
+closes parts of a full duplex socket connection. 
+.PP
+Seeking, or calling 
+.BR pread (2) 
+or 
+.BR pwrite (2)
+with a non-zero position is not supported on sockets.
+.PP
+It is possible to do non-blocking IO on sockets by setting the 
+.B O_NONBLOCK
+flag on a socket file descriptor using
+.BR fcntl (2).
+Then all operations that would block will (usually)
+return with
+.B EAGAIN 
+(operation should be retried later);
+.BR connect (2) 
+will return 
+.B EINPROGRESS
+error. 
+The user can then wait for various events via
+.BR poll (2)
+or
+.BR select (2). 
+.PP
+.TS
+tab(:) allbox;
+c s s
+l l l.
+I/O events
+Event:Poll flag:Occurrence
+Read:POLLIN:T{
+New data arrived. 
+T}
+Read:POLLIN:T{
+A connection setup has been completed
+(for connection-oriented sockets)
+T}
+Read:POLLHUP:T{
+A disconnection request has been initiated by the other end. 
+T}
+Read:POLLHUP:T{
+A connection is broken (only for connection-oriented protocols). 
+When the socket is written
+.B SIGPIPE 
+is also sent.
+T}
+Write:POLLOUT:T{
+Socket has enough send buffer space for writing new data.
+T}
+Read/Write:T{
+POLLIN|
+.br
+POLLOUT
+T}:T{
+An outgoing
+.BR connect (2)
+finished.
+T}
+Read/Write:POLLERR:An asynchronous error occurred.
+Read/Write:POLLHUP:The other end has shut down one direction.
+Exception:POLLPRI:T{
+Urgent data arrived.  
+.B SIGURG
+is sent then.
+T}
+.\" XXX not true currently
+.\" It is no I/O event when the connection
+.\" is broken from the local end using 
+.\" .BR shutdown (2)
+.\" or 
+.\" .BR close (2)
+.\" .
+.TE
+
+.PP
+An alternative to poll/select  
+is to let the kernel inform the application about events
+via a
+.B SIGIO
+signal. For that the
+.B FASYNC
+flag must be set on a socket file descriptor 
+via
+.BR fcntl (2)
+and a valid signal handler for 
+.B SIGIO
+must be installed via 
+.BR sigaction (2). 
+See the
+.I SIGNALS
+discussion below.
+.SH "SOCKET OPTIONS"
+These socket options can be set by using
+.BR setsockopt (2)
+and read with 
+.BR getsockopt (2)
+with the socket level set to 
+.B SOL_SOCKET 
+for all sockets:
+.TP
+.B SO_KEEPALIVE
+Enable sending of keep-alive messages on connection-oriented sockets. Expects
+a integer boolean flag. 
+.TP
+.B SO_OOBINLINE
+If this option is enabled, out-of-band data is directly placed into the receive
+data stream. Otherwise out-of-band data is only passed when the 
+.B MSG_OOB 
+flag is set during receiving. 
+.\" don't document it because it can do too much harm.
+.\".B SO_NO_CHECK
+.TP
+.BR SO_RCVLOWAT " and " SO_SNDLOWAT
+Specify the minimum number of bytes in the buffer until the socket layer
+will pass the data to the protocol 
+.RB ( SO_SNDLOWAT ) 
+or the user on receiving 
+.RB ( SO_RCVLOWAT ).
+These two values are not changeable in Linux and their argument size
+is always fixed
+to 1 byte. 
+.B getsockopt 
+is able to read them; 
+.B setsockopt 
+will always return
+.BR ENOPROTOOPT .  
+.TP
+.BR SO_RCVTIMEO " and " SO_SNDTIMEO
+Specify the sending or receiving timeouts until reporting an error.
+They are fixed to a protocol specific setting in Linux and cannot be read
+or written. Their functionality can be emulated using 
+.BR alarm (2)
+or
+.BR setitimer (2).
+.TP
+.B SO_BSDCOMPAT
+Enable BSD bug-to-bug compatibility. This is used only by the UDP
+protocol module and scheduled to be removed in future.  
+If enabled ICMP errors received for a UDP socket will not be passed
+to the user program. Linux 2.0 also enabled BSD bug-to-bug compatibility 
+options (random header changing, skipping of the broadcast flag) for raw
+sockets with this option, but that has been removed in Linux 2.2. It is
+better to fix the user programs than to enable this flag.
+.TP
+.B SO_PASSCRED
+Enable or disable the receiving of the
+.B SCM_CREDENTIALS
+control message. For more information see 
+.BR unix (7). 
+.TP
+.B SO_PEERCRED
+Return the credentials of the foreign process connected to this socket. 
+Only useful for 
+.B PF_UNIX 
+sockets; see 
+.BR unix (7). 
+Argument is a
+.B ucred 
+structure. Only valid as a 
+.BR getsockopt .
+.TP
+.B SO_BINDTODEVICE
+Bind this socket to a particular device like \(lqeth0\(rq,
+as specified in the passed interface name. If the
+name is an empty string or the option length is zero, the socket device
+binding is removed. The passed option is a variable-length null terminated
+interface name string with the maximum size of 
+.BR IFNAMSIZ .
+If a socket is bound to an interface,
+only packets received from that particular interface are processed by the 
+socket. Note that this only works for some socket types, particularly
+.B AF_INET
+sockets. It is not supported for packet sockets (use normal 
+.BR bind (8)
+there).
+.TP
+.B SO_DEBUG 
+Enable socket debugging. Only allowed for processes with the
+.B CAP_NET_ADMIN
+capability or an effective user id of 0.
+.TP
+.B SO_REUSEADDR
+Indicates that the rules used in validating addresses supplied in a 
+.BR bind (2) 
+call should allow reuse of local addresses. For
+.B PF_INET
+sockets this
+means that a socket may bind, except when there
+is an active listening socket bound to the address. When the listening
+socket is bound to
+.B INADDR_ANY
+with a specific port then it is not possible
+to bind to this port for any local address.
+.TP
+.B SO_TYPE
+Gets the socket type as an integer (like 
+.BR SOCK_STREAM ). 
+Can only be read
+with 
+.BR getsockopt . 
+.\" SO_ACCEPTCONN is in SUSv3, and its origin is explained in 
+.\" W R Stevens, UNPv1
+.TP
+.B SO_ACCEPTCONN
+Returns a value indicating whether or not this socket has been marked
+to accept connections with
+.BR listen ().
+The value 0 indicates that this is not a listening socket,
+the value 1 indicates that this is a listening socket.
+Can only be read
+with 
+.BR getsockopt . 
+.TP
+.B SO_DONTROUTE
+Don't send via a gateway, only send to directly connected hosts.
+The same effect can be achieved by setting the 
+.B MSG_DONTROUTE
+flag on a socket 
+.BR send (2)
+operation. Expects an integer boolean flag. 
+.TP
+.B SO_BROADCAST
+Set or get the broadcast flag. When enabled, datagram sockets
+receive packets sent to a broadcast address and they are allowed to send 
+packets to a broadcast address.
+This option has no effect on stream-oriented sockets.
+.TP
+.B SO_SNDBUF 
+Sets or gets the maximum socket send buffer in bytes.  The default value is set
+by the 
+.B wmem_default 
+sysctl and the maximum allowed value is set by the 
+.B wmem_max
+sysctl.   
+.TP
+.B SO_RCVBUF
+Sets or gets the maximum socket receive buffer in bytes. The default value is
+set by the 
+.B rmem_default 
+sysctl and the maximum allowed value is set by the 
+.B rmem_max
+sysctl.   
+.TP
+.B SO_LINGER
+Sets or gets the 
+.B SO_LINGER 
+option. The argument is a 
+.B linger 
+structure.
+.PP
+.RS
+.nf
+.ta 4n 10n 22n
+struct linger {
+	int	l_onoff;	/* linger active */
+	int	l_linger;	/* how many seconds to linger for */
+};
+.ta
+.fi
+.RE
+.IP
+When enabled, a 
+.BR close (2)
+or
+.BR shutdown (2)
+will not return until all queued messages for the socket have been
+successfully sent or the linger timeout has been reached. Otherwise,
+the call returns immediately and the closing is done in the background.
+When the socket is closed as part of
+.BR exit (2),
+it always lingers in the background.
+.TP
+.B SO_PRIORITY
+Set the protocol-defined priority for all packets to be sent on this socket.
+Linux uses this value to order the networking queues: packets with a higher
+priority may be processed first depending on the selected device queueing 
+discipline. For
+.BR ip (7),
+this also sets the IP type-of-service (TOS) field for outgoing packets.  
+.TP
+.B SO_ERROR
+Get and clear the pending socket error. Only valid as a 
+.BR getsockopt .
+Expects an integer. 
+.SH SIGNALS
+When writing onto a connection-oriented socket that has been shut down
+(by the local or the remote end) 
+.B SIGPIPE
+is sent to the writing process and 
+.B EPIPE
+is returned. 
+The signal is not sent when the write call
+specified the
+.B MSG_NOSIGNAL 
+flag.
+.PP
+When requested with the 
+.B FIOSETOWN 
+fcntl or 
+.B SIOCSPGRP 
+ioctl,
+.B SIGIO 
+is sent when an I/O event occurs. It is possible to use
+.BR poll (2)
+or 
+.BR select (2)
+in the signal handler to find out which socket the event occurred on.
+An alternative (in Linux 2.2) is to set a realtime signal using the
+.B F_SETSIG
+fcntl; the handler of the real time signal will be called with
+the file descriptor in the
+.I si_fd
+field of its 
+.IR siginfo_t .
+See 
+.BR fcntl (2)
+for more information.
+.PP
+Under some circumstances (e.g. multiple processes accessing a single socket),
+the condition that caused the
+.B SIGIO
+may have already disappeared when the process reacts to the signal.
+If this happens, the process should wait again because Linux will resend the
+signal later.
+.\" .SH ANCILLARY MESSAGES
+.SH SYSCTLS
+The core socket networking sysctls can be accessed using the 
+.B /proc/sys/net/core/* 
+files or with the 
+.BR sysctl (2) 
+interface. 
+.TP
+.B rmem_default
+contains the default setting in bytes of the socket receive buffer.
+.TP
+.B rmem_max
+contains the maximum socket receive buffer size in bytes which a user may
+set by using the 
+.B SO_RCVBUF
+socket option. 
+.TP
+.B wmem_default
+contains the default setting in bytes of the socket send buffer.
+.TP
+.B wmem_max
+contains the maximum socket send buffer size in bytes which a user may
+set by using the 
+.B SO_SNDBUF
+socket option. 
+.TP
+.BR message_cost " and " message_burst 
+configure the token bucket filter used to load limit warning messages
+caused by external network events.
+.TP
+.B netdev_max_backlog 
+Maximum number of packets in the global input queue.
+.TP
+.B optmem_max
+Maximum length of ancillary data and user control data like the iovecs 
+per socket.  
+.\" netdev_fastroute is not documented because it is experimental
+.SH IOCTLS
+These ioctls can be accessed using 
+.BR ioctl (2):
+
+.RS
+.nf
+.IB error " = ioctl(" ip_socket ", " ioctl_type ", " &value_result ");"
+.fi
+.RE
+
+.TP
+.B SIOCGSTAMP
+Return a 
+.B struct timeval 
+with the receive timestamp of the last packet passed to the user. This is useful
+for accurate round trip time measurements. See 
+.BR setitimer (2) 
+for a description of 
+.BR "struct timeval" .
+.\"
+.TP
+.BR SIOCSPGRP
+Set the process or process group to send 
+.B SIGIO
+or 
+.B SIGURG
+signals 
+to when an
+asynchronous I/O operation has finished or urgent data is available.
+The argument is a pointer to a 
+.BR pid_t . 
+If the argument is positive, send the signals to that process.  If the
+argument is negative, send the signals to the process group with the id
+of the absolute value of the argument.
+The process may only choose itself or its own process group to receive
+signals unless it has the
+.B CAP_KILL
+capability or an effective UID of 0.
+.TP
+.B FIOASYNC
+Change the
+.B O_ASYNC
+flag to enable or disable asynchronous IO mode of the socket. Asynchronous IO
+mode means that the
+.B SIGIO 
+signal or the signal set with 
+.B F_SETSIG
+is raised when a new I/O event occurs.
+.IP
+Argument is a integer boolean flag. 
+.\"
+.TP
+.BR SIOCGPGRP
+Get the current process or process group that receives
+.B SIGIO 
+or 
+.B SIGURG
+signals, 
+or 0
+when none is set.  
+.PP
+Valid fcntls:
+.TP
+.BR FIOGETOWN 
+The same as the SIOCGPGRP ioctl.
+.TP
+.BR FIOSETOWN
+The same as the SIOCSPGRP ioctl
+.SH NOTES
+Linux assumes that half of the send/receive buffer is used for internal
+kernel structures; thus the sysctls are twice what can be observed
+on the wire.
+.SH BUGS
+The 
+.B CONFIG_FILTER 
+socket options 
+.B SO_ATTACH_FILTER 
+and 
+.B SO_DETACH_FILTER 
+are 
+not documented. The suggested interface to use them is via the libpcap
+library.
+.SH VERSIONS
+.B SO_BINDTODEVICE 
+was introduced in Linux 2.0.30. 
+.B SO_PASSCRED 
+is new in Linux 2.2.
+The sysctls are new in Linux 2.2. 
+.SH AUTHORS
+This man page was written by Andi Kleen.
+.SH "SEE ALSO"
+.BR socket (2),
+.BR ip (7),
+.BR setsockopt (2),
+.BR getsockopt (2),
+.BR packet (7),
+.BR ddp (7)
diff --git a/raw/man7/start_transaction.7 b/raw/man7/start_transaction.7
new file mode 100644
index 0000000..a2035dd
--- /dev/null
+++ b/raw/man7/start_transaction.7
@@ -0,0 +1,28 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "START TRANSACTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+START TRANSACTION \- start a transaction block
+
+.SH SYNOPSIS
+.sp
+.nf
+START TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+This command begins a new transaction. If the isolation level or
+read/write mode is specified, the new transaction has those
+characteristics, as if SET TRANSACTION [\fBset_transaction\fR(7)] was executed. In all other
+respects, the behavior of this command is identical to the BEGIN [\fBbegin\fR(7)] command.
+.SH "PARAMETERS"
+.PP
+See under SET TRANSACTION [\fBset_transaction\fR(7)] about the meaning of the
+parameters.
+.SH "COMPATIBILITY"
+.PP
+This command conforms to the SQL standard; but see also the
+compatibility section of SET TRANSACTION [\fBset_transaction\fR(7)].
+.SH "SEE ALSO"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)], ROLLBACK [\fBrollback\fR(l)], SET TRANSACTION [\fBset_transaction\fR(l)]
+
diff --git a/raw/man7/tcp.7 b/raw/man7/tcp.7
new file mode 100644
index 0000000..f03fda2
--- /dev/null
+++ b/raw/man7/tcp.7
@@ -0,0 +1,712 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\"
+.\" 2.4 Updates by Nivedita Singhvi 4/20/02 <nivedita at us.ibm.com>.
+.\"
+.TH TCP  7 2003-08-21 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+tcp \- TCP protocol.
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <netinet/in.h>
+.br
+.B #include <netinet/tcp.h>
+.br
+.B tcp_socket = socket(PF_INET, SOCK_STREAM, 0); 
+.SH DESCRIPTION
+This is an implementation of the TCP protocol defined in
+RFC793, RFC1122 and RFC2001 with the NewReno and SACK
+extensions.  It provides a reliable, stream oriented, full
+duplex connection between two sockets on top of
+.BR ip (7),
+for both v4 and v6 versions.
+TCP guarantees that the data arrives in order and
+retransmits lost packets.  It generates and checks a per
+packet checksum to catch transmission errors.  TCP does not
+preserve record boundaries.
+
+A fresh TCP socket has no remote or local address and is not
+fully specified.  To create an outgoing TCP connection use
+.BR connect (2)
+to establish a connection to another TCP socket.
+To receive new incoming connections
+.BR bind (2) 
+the socket first to a local address and port and then call 
+.BR listen (2)
+to put the socket into listening state.  After that a new
+socket for each incoming connection can be accepted 
+using
+.BR accept (2).
+A socket which has had
+.B accept
+or 
+.B connect
+successfully called on it is fully specified and may
+transmit data.  Data cannot be transmitted on listening or
+not yet connected sockets.
+
+Linux supports RFC1323 TCP high performance
+extensions.  These include Protection Against Wrapped
+Sequence Numbers (PAWS), Window Scaling  and 
+Timestamps.  Window scaling allows the use
+of large (> 64K) TCP windows in order to support links with high 
+latency or bandwidth.  To make use of them, the send and 
+receive buffer sizes must be increased.  
+They can be set globally with the
+.B net.ipv4.tcp_wmem
+and
+.B net.ipv4.tcp_rmem
+sysctl variables, or on individual sockets by using the 
+.B SO_SNDBUF 
+and 
+.B SO_RCVBUF 
+socket options with the 
+.BR setsockopt (2)
+call.
+
+The maximum sizes for socket buffers declared via the
+.B SO_SNDBUF
+and 
+.B SO_RCVBUF 
+mechanisms are limited by the global
+.B net.core.rmem_max
+and
+.B net.core.wmem_max
+sysctls.  Note that TCP actually allocates twice the size of
+the buffer requested in the
+.BR setsockopt (2)
+call, and so a succeeding 
+.BR getsockopt (2) 
+call will not return the same size of buffer as requested
+in the 
+.BR setsockopt (2) 
+call.  TCP uses this for administrative purposes and internal
+kernel structures, and the sysctl variables reflect the
+larger sizes compared to the actual TCP windows. 
+On individual connections, the socket buffer size must be
+set prior to the
+.B listen()
+or 
+.B connect()
+calls in order to have it take effect. See
+.BR socket (7)
+for more information. 
+.PP 
+TCP supports urgent data.  Urgent data is used to signal the
+receiver that some important message is part of the data
+stream and that it should be processed as soon as possible.
+To send urgent data specify the
+.B MSG_OOB
+option to 
+.BR send (2).
+When urgent data is received, the kernel sends a
+.B SIGURG
+signal to the reading process or the process or process
+group that has been set for the socket using the
+.B SIOCSPGRP
+or 
+.B FIOSETOWN 
+ioctls. When the 
+.B SO_OOBINLINE
+socket option is enabled, urgent data is put into the normal
+data stream (and can be tested for by the
+.B SIOCATMARK
+ioctl), 
+otherwise it can be only received when the
+.B MSG_OOB
+flag is set for 
+.BR sendmsg (2). 
+
+Linux 2.4 introduced a number of changes for improved
+throughput and scaling, as well as enhanced functionality.
+Some of these features include support for zerocopy
+.BR sendfile (2), 
+Explicit Congestion Notification, new
+management of TIME_WAIT sockets, keep-alive socket options
+and support for Duplicate SACK extensions.
+.SH "ADDRESS FORMATS"
+TCP is built on top of IP (see 
+.BR ip (7)).
+The address formats defined by
+.BR ip (7)
+apply to TCP.  TCP only supports point-to-point
+communication; broadcasting and multicasting are not
+supported.
+.SH SYSCTLS
+These variables can be accessed by the 
+.B /proc/sys/net/ipv4/* 
+files or with the 
+.BR sysctl (2)
+interface.  In addition, most IP sysctls also apply to TCP; see
+.BR ip (7). 
+.TP
+.B tcp_abort_on_overflow
+Enable resetting connections if the listening service is too
+slow and unable to keep up and accept them.  It is not
+enabled by default.  It means that if overflow occurred due
+to a burst, the connection will recover.  Enable this option
+_only_ if you are really sure that the listening daemon
+cannot be tuned to accept connections faster.  Enabling this
+option can harm the clients of your server. 
+.TP
+.B tcp_adv_win_scale
+Count buffering overhead as bytes/2^tcp_adv_win_scale
+(if tcp_adv_win_scale > 0) or bytes-bytes/2^(-tcp_adv_win_scale),
+if it is <= 0. The default is 2.  
+
+The socket receive buffer space is shared between the
+application and kernel.  TCP maintains part of the buffer as
+the TCP window, this is the size of the receive window
+advertised to the other end.  The rest of the space is used
+as the "application" buffer, used to isolate the network
+from scheduling and application latencies.  The 
+.B tcp_adv_win_scale 
+default value of 2 implies that the space
+used for the application buffer is one fourth that of the
+total.  
+.TP 
+.B tcp_app_win 
+This variable defines how many
+bytes of the TCP window are reserved for buffering
+overhead.
+
+A maximum of (window/2^tcp_app_win, mss) bytes in the window
+are reserved for the application buffer.  A value of 0
+implies that no amount is reserved.  The default value is 31.
+.TP
+.B tcp_dsack
+Enable RFC2883 TCP Duplicate SACK support. 
+It is enabled by default.
+.TP
+.B tcp_ecn
+Enable RFC2884 Explicit Congestion Notification.  It is not
+enabled by default.  When enabled, connectivity to some
+destinations could be affected due to older, misbehaving
+routers along the path causing connections to be dropped.
+.TP
+.B tcp_fack
+Enable TCP Forward Acknowledgement support.  It is enabled by
+default.
+.TP
+.B tcp_fin_timeout
+How many seconds to wait for a final FIN packet before the
+socket is forcibly closed.  This is strictly a violation of
+the TCP specification, but required to prevent
+denial-of-service (DoS) attacks.  The default value in 2.4
+kernels is 60, down from 180 in 2.2.
+.TP
+.B tcp_keepalive_intvl
+The number of seconds between TCP keep-alive probes.
+The default value is 75 seconds.
+.TP
+.B tcp_keepalive_probes
+The maximum number of TCP keep-alive probes to send  
+before giving up and killing the connection if
+no response is obtained from the other end.
+The default value is 9. 
+.TP
+.B tcp_keepalive_time
+The number of seconds a connection needs to be idle
+before TCP begins sending out keep-alive probes. 
+Keep-alives are only sent when the 
+.B SO_KEEPALIVE 
+socket option is enabled.  The default value is 7200 seconds
+(2 hours).  An idle connection is terminated after
+approximately an additional 11 minutes (9 probes an interval
+of 75 seconds apart) when keep-alive is enabled.
+
+Note that underlying connection tracking mechanisms and 
+application timeouts may be much shorter.
+.TP
+.B tcp_max_orphans
+The maximum number of orphaned (not attached to any user file
+handle) TCP sockets allowed in the system.  When this number
+is exceeded, the orphaned connection is reset and a warning
+is printed.  This limit exists only to prevent simple DoS
+attacks.  Lowering this limit is not recommended. Network
+conditions might require you to increase the number of
+orphans allowed, but note that each orphan can eat up to ~64K
+of unswappable memory.  The default initial value is set
+equal to the kernel parameter NR_FILE.  This initial default
+is adjusted depending on the memory in the system.
+.TP
+.B tcp_max_syn_backlog
+The maximum number of queued connection requests which have
+still not received an acknowledgement from the connecting
+client.  If this number is exceeded, the kernel will begin
+dropping requests.  The default value of 256 is increased to
+1024 when the memory present in the system is adequate or
+greater (>= 128Mb), and reduced to 128 for those systems with
+very low memory (<= 32Mb).  It is recommended that if this
+needs to be increased above 1024, TCP_SYNQ_HSIZE in
+include/net/tcp.h be modified to keep
+TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog, and the kernel be
+recompiled.
+.TP
+.B tcp_max_tw_buckets
+The maximum number of sockets in TIME_WAIT state allowed in
+the system.  This limit exists only to prevent simple DoS
+attacks.  The default value of NR_FILE*2 is adjusted
+depending on the memory in the system.  If this number is
+exceeded, the socket is closed and a warning is printed.
+.TP 
+.B tcp_mem
+This is a vector of 3 integers: [low, pressure, high].  These
+bounds are used by TCP to track its memory usage.  The
+defaults are calculated at boot time from the amount of
+available memory.
+
+.I low 
+- TCP doesn't regulate its memory allocation when the number
+of pages it has allocated globally is below this number.
+
+.I pressure
+- when the amount of memory allocated by TCP
+exceeds this number of pages, TCP moderates its memory
+consumption.  This memory pressure state is exited
+once the number of pages allocated falls below
+the 
+.B low 
+mark.
+
+.I high
+- the maximum number of pages, globally, that TCP
+will allocate.  This value overrides any other limits
+imposed by the kernel. 
+.TP
+.B tcp_orphan_retries
+The maximum number of attempts made to probe the other
+end of a connection which has been closed by our end.
+The default value is 8.
+.TP
+.B tcp_reordering
+The maximum a packet can be reordered in a TCP packet stream
+without TCP assuming packet loss and going into slow start.
+The default is 3.  It is not advisable to change this number.
+This is a packet reordering detection metric designed to
+minimize unnecessary back off and retransmits provoked by
+reordering of packets on a connection.
+.TP
+.B tcp_retrans_collapse
+Try to send full-sized packets during retransmit. 
+This is enabled by default. 
+.TP
+.B tcp_retries1
+The number of times TCP will attempt to retransmit a
+packet on an established connection normally,
+without the extra effort of getting the network
+layers involved.  Once we exceed this number of
+retransmits, we first have the network layer
+update the route if possible before each new retransmit.
+The default is the RFC specified minimum of 3.
+.TP
+.B tcp_retries2
+The maximum number of times a TCP packet is retransmitted
+in established state before giving up.  The default
+value is 15, which corresponds to a duration of
+approximately between 13 to 30 minutes, depending
+on the retransmission timeout.  The RFC1122 specified
+minimum limit of 100 seconds is typically deemed too
+short.
+.TP
+.B tcp_rfc1337
+Enable TCP behaviour conformant with RFC 1337.
+This is not enabled by default.  When not enabled,
+if a RST is received in TIME_WAIT state, we close 
+the socket immediately without waiting for the end
+of the TIME_WAIT period. 
+.TP
+.B tcp_rmem 
+This is a vector of 3 integers: [min, default,
+max].  These parameters are used by TCP to regulate receive
+buffer sizes.  TCP dynamically adjusts the size of the
+receive buffer from the defaults listed below, in the range
+of these sysctl variables, depending on memory available
+in the system.
+
+.I min
+- minimum size of the receive buffer used by each TCP
+socket.  The default value is 4K, and is lowered to
+PAGE_SIZE bytes in low memory systems.  This value
+is used to ensure that in memory pressure mode,
+allocations below this size will still succeed.  This is not
+used to bound the size of the receive buffer declared
+using
+.B SO_RCVBUF
+on a socket.  
+
+.I default
+- the default size of the receive buffer for a TCP socket.
+This value overwrites the initial default buffer size from
+the generic global 
+.B net.core.rmem_default
+defined for all protocols.  The default value is 87380
+bytes, and is lowered to 43689 in low memory systems.  If
+larger receive buffer sizes are desired, this value should
+be increased (to affect all sockets).  To employ large TCP
+windows, the
+.B net.ipv4.tcp_window_scaling 
+must be enabled (default).
+
+.I max
+- the maximum size of the receive buffer used by
+each TCP socket.  This value does not override the global 
+.BR net.core.rmem_max .
+This is not used to limit the size of the receive buffer
+declared using
+.B SO_RCVBUF
+on a socket.
+The default value of 87380*2 bytes is lowered to 87380
+in low memory systems.
+.TP
+.B tcp_sack
+Enable RFC2018 TCP Selective Acknowledgements. 
+It is enabled by default.
+.TP
+.B tcp_stdurg
+Enable the strict RFC793 interpretation of the TCP
+urgent-pointer field.  The default is to use the
+BSD-compatible interpretation of the urgent-pointer, pointing
+to the first byte after the urgent data.  The RFC793
+interpretation is to have it point to the last byte of urgent
+data.  Enabling this option may lead to interoperatibility
+problems.
+.TP
+.B tcp_synack_retries
+The maximum number of times a SYN/ACK segment
+for a passive TCP connection will be retransmitted.
+This number should not be higher than 255. The default
+value is 5.
+.TP
+.B tcp_syncookies
+Enable TCP syncookies.  The kernel must be compiled with 
+.BR CONFIG_SYN_COOKIES .
+Send out syncookies when the syn backlog queue of a socket
+overflows.  The syncookies feature attempts to protect a
+socket from a SYN flood attack.  This should be used as a
+last resort, if at all.  This is a violation of the TCP
+protocol, and conflicts with other areas of TCP such as TCP
+extensions.  It can cause problems for clients and relays.
+It is not recommended as a tuning mechanism for heavily
+loaded servers to help with overloaded or misconfigured
+conditions.  For recommended alternatives see
+.BR tcp_max_syn_backlog ,
+.BR tcp_synack_retries ,
+.BR tcp_abort_on_overflow .
+.TP
+.B tcp_syn_retries
+The maximum number of times initial SYNs for an active TCP
+connection attempt will be retransmitted.  This value should
+not be higher than 255.  The default value is 5, which
+corresponds to approximately 180 seconds.
+.TP
+.B tcp_timestamps
+Enable RFC1323 TCP timestamps.  This is enabled
+by default.
+.TP
+.B tcp_tw_recycle
+Enable fast recycling of TIME-WAIT sockets.  It is 
+not enabled by default.  Enabling this option is not
+recommended since this causes problems when working
+with NAT (Network Address Translation). 
+.TP
+.B tcp_window_scaling
+Enable RFC1323 TCP window scaling.  It is enabled by
+default.  This feature allows the use of a large window
+(> 64K) on a TCP connection, should the other end support it.
+Normally, the 16 bit window length field in the TCP header
+limits the window size to less than 64K bytes.  If larger
+windows are desired, applications can increase the size of
+their socket buffers and the window scaling option will be
+employed.  If
+.B tcp_window_scaling 
+is disabled, TCP will not negotiate the use of window
+scaling with the other end during connection setup.
+.TP
+.B tcp_wmem
+This is a vector of 3 integers: [min, default, max].  These
+parameters are used by TCP to regulate send buffer sizes.
+TCP dynamically adjusts the size of the send buffer from the
+default values listed below, in the range of these sysctl
+variables, depending on memory available.
+
+.I min
+- minimum size of the send buffer used by each TCP socket.
+The default value is 4K bytes.
+This value is used to ensure that in memory pressure mode,
+allocations below this size will still succeed.  This is not
+used to bound the size of the send buffer declared
+using
+.B SO_SNDBUF
+on a socket.
+
+.I default
+- the default size of the send buffer for a TCP socket.
+This value overwrites the initial default buffer size from
+the generic global
+.B net.core.wmem_default
+defined for all protocols.  The default value is 16K bytes.
+If larger send buffer sizes are desired, this value
+should be increased (to affect all sockets).  To employ
+large TCP windows, the sysctl variable
+.B net.ipv4.tcp_window_scaling
+must be enabled (default).
+
+.I max
+- the maximum size of the send buffer used by
+each TCP socket.  This value does not override the global 
+.BR net.core.wmem_max .
+This is not used to limit the size of the send buffer
+declared using
+.B SO_SNDBUF
+on a socket.
+The default value is 128K bytes.  It is lowered to 64K
+depending on the memory available in the system.
+.SH "SOCKET OPTIONS"
+To set or get a TCP socket option, call
+.BR getsockopt (2)
+to read or
+.BR setsockopt (2)
+to write the option with the option level argument set to 
+.BR SOL_TCP.
+In addition,
+most 
+.B SOL_IP 
+socket options are valid on TCP sockets. For more
+information see
+.BR ip (7).
+.TP
+.B TCP_CORK
+If set, don't send out partial frames.  All queued
+partial frames are sent when the option is cleared again.
+This is useful for prepending headers before calling
+.BR sendfile (2),
+or for throughput optimization.  This option cannot be
+combined with
+.BR TCP_NODELAY.
+This option should not be used in code intended to be
+portable.
+.TP
+.B TCP_DEFER_ACCEPT
+Allows a listener to be awakened only when data arrives on
+the socket.  Takes an integer value (seconds), this can
+bound the maximum number of attempts TCP will make to
+complete the connection.  This option should not be used in
+code intended to be portable.
+.TP
+.B TCP_INFO
+Used to collect information about this socket.  The kernel
+returns a struct tcp_info as defined in the file
+/usr/include/linux/tcp.h.  This option should not be used in
+code intended to be portable.
+.TP
+.B TCP_KEEPCNT
+The maximum number of keepalive probes TCP should send
+before dropping the connection.  This option should not be
+used in code intended to be portable.
+.TP
+.B TCP_KEEPIDLE
+The time (in seconds) the connection needs to remain idle
+before TCP starts sending keepalive probes, if the socket
+option SO_KEEPALIVE has been set on this socket.  This
+option should not be used in code intended to be portable.
+.TP
+.B TCP_KEEPINTVL
+The time (in seconds) between individual keepalive probes.
+This option should not be used in code intended to be
+portable.
+.TP
+.B TCP_LINGER2
+The lifetime of orphaned FIN_WAIT2 state sockets.  This
+option can be used to override the system wide sysctl
+.B tcp_fin_timeout
+on this socket.  This is not to be confused with the 
+.BR socket (7)
+level option 
+.BR SO_LINGER .
+This option should not be used in code intended to be
+portable.
+.TP
+.B TCP_MAXSEG
+The maximum segment size for outgoing TCP packets.  If this
+option is set before connection establishment, it also
+changes the MSS value announced to the other end in the
+initial packet.  Values greater than the (eventual)
+interface MTU have no effect.  TCP will also impose 
+its minimum and maximum bounds over the value provided.
+.TP
+.B TCP_NODELAY
+If set, disable the Nagle algorithm.  This means that segments
+are always sent as soon as possible, even if there is only a
+small amount of data.  When not set, data is buffered until there
+is a sufficient amount to send out, thereby avoiding the
+frequent sending of small packets, which results in poor
+utilization of the network.  This option cannot be used
+at the same time as the option
+.BR TCP_CORK . 
+.TP
+.B TCP_QUICKACK
+Enable quickack mode if set or disable quickack
+mode if cleared.  In quickack mode, acks are sent
+immediately, rather than delayed if needed in accordance
+to normal TCP operation.  This flag is not permanent,
+it only enables a switch to or from quickack mode.
+Subsequent operation of the TCP protocol will
+once again enter/leave quickack mode depending on
+internal protocol processing and factors such as
+delayed ack timeouts occurring and data transfer.
+This option should not be used in code intended to be
+portable.
+.TP
+.B TCP_SYNCNT
+Set the number of SYN retransmits that TCP should send before
+aborting the attempt to connect.  It cannot exceed 255.
+This option should not be used in code intended to be
+portable.
+.TP
+.B TCP_WINDOW_CLAMP
+Bound the size of the advertised window to this value.  The
+kernel imposes a minimum size of SOCK_MIN_RCVBUF/2.
+This option should not be used in code intended to be
+portable.
+.SH IOCTLS
+These ioctls can be accessed using 
+.BR ioctl (2).
+The correct syntax is:
+.PP
+.RS
+.nf
+.BI int " value";
+.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
+.fi
+.RE
+.TP
+.BR SIOCINQ
+Returns the amount of queued unread data in the receive
+buffer.  Argument is a pointer to an integer.  The socket
+must not be in LISTEN state, otherwise an error (EINVAL)
+is returned.
+.TP
+.B SIOCATMARK
+Returns true when the all urgent data has been already
+received by the user program.  This is used together with
+.BR SO_OOBINLINE .
+Argument is an pointer to an integer for the test result.
+.TP
+.B SIOCOUTQ
+Returns the amount of unsent data in the socket send queue
+in the passed integer value pointer.  The socket must not 
+be in LISTEN state, otherwise an error (EINVAL)
+is returned.
+.SH "ERROR HANDLING"
+When a network error occurs, TCP tries to resend the
+packet.  If it doesn't succeed after some time, either
+.B ETIMEDOUT 
+or the last received error on this connection is reported.
+.PP
+Some applications require a quicker error notification.
+This can be enabled with the
+.B SOL_IP 
+level 
+.B IP_RECVERR 
+socket option.  When this option is enabled, all incoming
+errors are immediately passed to the user program.  Use this
+option with care \- it makes TCP less tolerant to routing
+changes and other normal network conditions.
+.SH NOTES
+When an error occurs doing a connection setup occurring in a
+socket write
+.B SIGPIPE
+is only raised when the
+.B SO_KEEPALIVE
+socket option is set.
+.PP
+TCP has no real out-of-band data; it has urgent data. In
+Linux this means if the other end sends newer out-of-band
+data the older urgent data is inserted as normal data into
+the stream (even when
+.B SO_OOBINLINE
+is not set). This differs from BSD based stacks. 
+.PP
+Linux uses the BSD compatible interpretation of the urgent
+pointer field by default.  This violates RFC1122, but is
+required for interoperability with other stacks.  It can be
+changed by the
+.B tcp_stdurg
+sysctl.
+.SH ERRORS
+.TP
+.B EPIPE
+The other end closed the socket unexpectedly or a read is
+executed on a shut down socket.
+.TP
+.B ETIMEDOUT
+The other end didn't acknowledge retransmitted data after
+some time.
+.TP
+.B EAFNOTSUPPORT
+Passed socket address type in
+.I sin_family 
+was not 
+.BR AF_INET .
+.PP
+Any errors defined for
+.BR ip (7)
+or the generic socket layer may also be returned for TCP.
+.SH BUGS
+Not all errors are documented. 
+.br
+IPv6 is not described.
+.\" Only a single Linux kernel version is described
+.\" Info for 2.2 was lost. Should be added again,
+.\" or put into a separate page.
+.SH VERSIONS
+Support for Explicit Congestion Notification, zerocopy 
+sendfile, reordering support and some SACK extensions
+(DSACK) were introduced in 2.4.
+Support for forward acknowledgement (FACK), TIME_WAIT recycling, 
+per connection keepalive socket options and sysctls
+were introduced in 2.3.
+
+The default values and descriptions for the sysctl variables 
+given above are applicable for the 2.4 kernel.
+.SH AUTHORS
+This man page was originally written by Andi Kleen. 
+It was updated for 2.4 by Nivedita Singhvi with input from 
+Alexey Kuznetsov's Documentation/networking/ip-sysctls.txt
+document.
+.SH "SEE ALSO"
+.BR socket (7),
+.BR socket (2),
+.BR ip (7),
+.BR bind (2), 
+.BR listen (2),
+.BR accept (2),
+.BR connect (2),
+.BR sendmsg (2),
+.BR recvmsg (2),
+.BR sendfile (2),
+.BR sysctl (2),
+.BR getsockopt (2).
+.sp
+RFC793 for the TCP specification.
+.br
+RFC1122 for the TCP requirements and a description 
+of the Nagle algorithm.
+.br
+RFC1323 for TCP timestamp and window scaling options.
+.br
+RFC1644 for a description of TIME_WAIT assassination
+hazards.
+.br
+RFC2481 for a description of Explicit Congestion
+Notification.
+.br
+RFC2581 for TCP congestion control algorithms.
+.br
+RFC2018 and RFC2883 for SACK and extensions to SACK.
+
diff --git a/raw/man7/truncate.7 b/raw/man7/truncate.7
new file mode 100644
index 0000000..1836c06
--- /dev/null
+++ b/raw/man7/truncate.7
@@ -0,0 +1,40 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "TRUNCATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+TRUNCATE \- empty a table
+
+.SH SYNOPSIS
+.sp
+.nf
+TRUNCATE [ TABLE ] \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBTRUNCATE\fR quickly removes all rows from a
+table. It has the same effect as an unqualified
+\fBDELETE\fR but since it does not actually scan the
+table it is faster. This is most useful on large tables.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+The name (optionally schema-qualified) of the table to be truncated.
+.SH "NOTES"
+.PP
+\fBTRUNCATE\fR cannot be used if there are foreign-key references
+to the table from other tables. Checking validity in such cases would
+require table scans, and the whole point is not to do one.
+.PP
+\fBTRUNCATE\fR will not run any user-defined ON DELETE triggers
+that might exist for the table.
+.SH "EXAMPLES"
+.PP
+Truncate the table bigtable:
+.sp
+.nf
+TRUNCATE TABLE bigtable;
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBTRUNCATE\fR command in the SQL standard.
diff --git a/raw/man7/udp.7 b/raw/man7/udp.7
new file mode 100644
index 0000000..c187635
--- /dev/null
+++ b/raw/man7/udp.7
@@ -0,0 +1,161 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: udp.7,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.TH UDP  7 1998-10-02 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+udp \- User Datagram Protocol for IPv4
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <netinet/in.h>
+.br
+.B udp_socket = socket(PF_INET, SOCK_DGRAM, 0); 
+.SH DESCRIPTION
+This is an implemention of the User Datagram Protocol described in RFC768. It 
+implements a connectionless, unreliable datagram packet service.
+Packets may be reordered or duplicated before they arrive. UDP
+generates and checks checksums to catch transmission errors.  
+
+When a UDP socket is created, its local and remote addresses are unspecified.
+Datagrams can be sent immediately using 
+.BR sendto (2)
+or
+.BR sendmsg (2)
+with a valid destination address as an argument.  When 
+.BR connect (2) 
+is called on the socket the default destination address is set and datagrams 
+can now be sent using 
+.BR send (2)
+or 
+.BR write (2)
+without specifying an destination address.
+It is still possible to send to other destinations by passing an address to
+.BR sendto (2)
+or
+.BR sendmsg (2).
+In order to receive packets the socket can be bound to an local
+address first by using
+.BR bind (2).
+Otherwise the socket layer will automatically assign
+a free local port out of the range defined by
+.I net.ipv4.ip_local_port_range
+and bind the socket to
+.IR INADDR_ANY .
+
+All receive operations return only one packet.  When the packet is smaller
+than the passed buffer only that much data is returned, when it is bigger
+the packet is truncated and the
+.B MSG_TRUNC
+flag is set.
+.I MSG_WAITALL
+is not supported.
+
+IP options may be sent or received using the socket options described in 
+.BR ip (7).
+They are only processed by the kernel when the appropriate sysctl
+is enabled (but still passed to the user even when it is turned off). See
+.BR ip (7).
+
+When the 
+.B MSG_DONTROUTE
+flag is set on sending the destination address must refer to an local 
+interface address and the packet is only sent to that interface.  
+
+UDP fragments a packet when its total length exceeds the interface MTU
+(Maximum Transmission Unit).
+A more network friendly alternative is to use path MTU discovery
+as described in the
+.B IP_PMTU_DISCOVER 
+section of
+.BR ip (7).
+
+.SH "ADDRESS FORMAT"
+UDP uses the IPv4 
+.B sockaddr_in 
+address format described in 
+.BR ip (7). 
+
+.SH "ERROR HANDLING"
+All fatal errors will be passed to the user as an error return even 
+when the socket is not connected. This includes asynchronous errors
+received from the network. You may get an error for an earlier packet
+that was sent on the same socket.
+This behaviour differs from many other BSD socket implementations
+which don't pass any errors unless the socket is connected.
+Linux's behaviour is mandated by 
+.BR RFC1122 .
+
+For compatibility with legacy code it is possible to set the
+.B SO_BSDCOMPAT  
+SOL_SOCKET option to receive remote errors only when the socket has been 
+connected (except for
+.B EPROTO
+and
+.BR EMSGSIZE ).
+It is better to fix the
+code to handle errors properly than to enable this option.
+Locally generated errors are always passed.
+
+When the 
+.B IP_RECVERR
+option is enabled all errors are stored in the socket error queue
+and can be received by
+.BR recvmsg (2)
+with the 
+.B MSG_ERRQUEUE
+flag set.
+.SH IOCTLS
+These ioctls can be accessed using
+.BR ioctl (2).
+The correct syntax is:
+.PP
+.RS
+.nf
+.BI int " value";
+.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
+.fi
+.RE
+.TP
+.B SIOCINQ
+Gets a pointer to an integer as argument. Returns the size of the next
+pending datagram in the integer in bytes, or 0 when no datagram is pending.
+.TP
+.B SIOCOUTQ
+Returns the number of data bytes in the local send queue. Only supported
+with Linux 2.4 and above.
+.PP
+In addition all ioctls documented in
+.BR ip (7)
+and
+.BR socket (7)
+are supported.
+.SH ERRORS
+All errors documented for 
+.BR socket (7)
+or 
+.BR ip (7)
+may be returned by a send or receive on a UDP socket. 
+
+.B ECONNREFUSED
+No receiver was associated with the destination address.  This might be
+caused by a previous packet sent over the socket.
+
+.SH VERSIONS
+IP_RECVERR is a new feature in Linux 2.2.
+
+.SH CREDITS
+This man page was written by Andi Kleen.
+
+.SH "SEE ALSO"
+.BR ip (7),
+.BR socket (7),
+.BR raw (7)
+
+RFC768 for the User Datagram Protocol.
+.br
+RFC1122 for the host requirements.
+.br
+RFC1191 for a description of path MTU discovery.
diff --git a/raw/man7/unicode.7 b/raw/man7/unicode.7
new file mode 100644
index 0000000..a562eeb
--- /dev/null
+++ b/raw/man7/unicode.7
@@ -0,0 +1,288 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) Markus Kuhn, 1995, 2001
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 1995-11-26  Markus Kuhn <mskuhn at cip.informatik.uni-erlangen.de>
+.\"      First version written
+.\" 2001-05-11  Markus Kuhn <mgk25 at cl.cam.ac.uk>
+.\"      Update
+.\"
+.TH UNICODE 7 2001-05-11 "GNU" "Linux Programmer's Manual"
+.SH NAME
+Unicode \- the Universal Character Set
+.SH DESCRIPTION
+The international standard
+.B ISO 10646
+defines the
+.BR "Universal Character Set (UCS)" .
+UCS contains all characters of all other character set standards. It
+also guarantees
+.BR "round-trip compatibility" ,
+i.e., conversion tables can be built such that no information is lost
+when a string is converted from any other encoding to UCS and back.
+
+UCS contains the characters required to represent practically all
+known languages. This includes not only the Latin, Greek, Cyrillic,
+Hebrew, Arabic, Armenian, and Georgian scripts, but also also Chinese,
+Japanese and Korean Han ideographs as well as scripts such as
+Hiragana, Katakana, Hangul, Devanagari, Bengali, Gurmukhi, Gujarati,
+Oriya, Tamil, Telugu, Kannada, Malayalam, Thai, Lao, Khmer, Bopomofo,
+Tibetan, Runic, Ethiopic, Canadian Syllabics, Cherokee, Mongolian,
+Ogham, Myanmar, Sinhala, Thaana, Yi, and others. For scripts not yet
+covered, research on how to best encode them for computer usage is
+still going on and they will be added eventually. This might
+eventually include not only Hieroglyphs and various historic
+Indo-European languages, but even some selected artistic scripts such
+as Tengwar, Cirth, and Klingon. UCS also covers a large number of
+graphical, typographical, mathematical and scientific symbols,
+including those provided by TeX, Postscript, APL, MS-DOS, MS-Windows,
+Macintosh, OCR fonts, as well as many word processing and publishing
+systems, and more are being added.
+
+The UCS standard (ISO 10646) describes a
+.I "31-bit character set architecture"
+consisting of 128 24-bit
+.IR groups ,
+each divided into 256 16-bit
+.I planes
+made up of 256 8-bit
+.I rows
+with 256
+.I column
+positions, one for each character. Part 1 of the standard
+.RB ( "ISO 10646-1" )
+defines the first 65534 code positions (0x0000 to 0xfffd), which form
+the
+.IR "Basic Multilingual Plane (BMP)" ,
+that is plane 0 in group 0. Part 2 of the standard
+.RB ( "ISO 10646-2" )
+adds characters to group 0 outside the BMP in several
+.I "supplementary planes"
+in the range 0x10000 to 0x10ffff. There are no plans to add characters
+beyond 0x10ffff to the standard, therefore of the entire code space,
+only a small fraction of group 0 will ever be actually used in the
+foreseeable future. The BMP contains all characters found in the
+commonly used other character sets. The supplemental planes added by
+ISO 10646-2 cover only more exotic characters for special scientific,
+dictionary printing, publishing industry, higher-level protocol and
+enthusiast needs.
+.PP
+The representation of each UCS character as a 2-byte word is referred
+to as the
+.B UCS-2
+form (only for BMP characters), whereas
+.B UCS-4
+is the representation of each character by a 4-byte word.
+In addition, there exist two encoding forms
+.B UTF-8
+for backwards compatibility with ASCII processing software and
+.B UTF-16
+for the backwards compatible handling of non-BMP characters up to
+0x10ffff by UCS-2 software.
+.PP
+The UCS characters 0x0000 to 0x007f are identical to those of the
+classic
+.B US-ASCII
+character set and the characters in the range 0x0000 to 0x00ff
+are identical to those in
+.BR "ISO 8859-1 Latin-1" .
+.SH "COMBINING CHARACTERS"
+Some code points in
+.B UCS
+have been assigned to
+.IR "combining characters" .
+These are similar to the non-spacing accent keys on a typewriter. A
+combining character just adds an accent to the previous character. The
+most important accented characters have codes of their own in UCS,
+however, the combining character mechanism allows us to add accents
+and other diacritical marks to any character. The combining characters
+always follow the character which they modify. For example, the German
+character Umlaut-A ("Latin capital letter A with diaeresis") can
+either be represented by the precomposed UCS code 0x00c4, or
+alternatively as the combination of a normal "Latin capital letter A"
+followed by a "combining diaeresis": 0x0041 0x0308.
+.PP
+Combining characters are essential for instance for encoding the Thai
+script or for mathematical typesetting and users of the International
+Phonetic Alphabet.
+.SH "IMPLEMENTATION LEVELS"
+As not all systems are expected to support advanced mechanisms like
+combining characters, ISO 10646-1 specifies the following three
+.I implementation levels
+of UCS:
+.TP 0.9i
+Level 1
+Combining characters and 
+.B Hangul Jamo
+(a variant encoding of the Korean script, where a Hangul syllable
+glyph is coded as a triplet or pair of vovel/consonant codes) are not
+supported.
+.TP
+Level 2
+In addition to level 1, combining characters are now allowed for some
+languages where they are essential (e.g., Thai, Lao, Hebrew,
+Arabic, Devanagari, Malayalam, etc.).
+.TP
+Level 3
+All
+.B UCS
+characters are supported.
+.PP
+The
+.B Unicode 3.0 Standard
+published by the
+.B Unicode Consortium
+contains exactly the
+.B UCS Basic Multilingual Plane
+at implementation level 3, as described in ISO 10646-1:2000.
+.B Unicode 3.1
+added the supplemental planes of ISO 10646-2. The Unicode standard and
+technical reports published by the Unicode Consortium provide much
+additional information on the semantics and recommended usages of
+various characters. They provide guidelines and algorithms for
+editing, sorting, comparing, normalizing, converting and displaying
+Unicode strings.
+.SH "UNICODE UNDER LINUX"
+Under GNU/Linux, the C type
+.B wchar_t
+is a signed 32-bit integer type. Its values are always interpreted
+by the C library as
+.B UCS
+code values (in all locales), a convention that is signaled by the GNU
+C library to applications by defining the constant
+.B __STDC_ISO_10646__
+as specified in the ISO C 99 standard.
+
+UCS/Unicode can be used just like ASCII in input/output streams,
+terminal communication, plaintext files, filenames, and environment
+variables in the ASCII compatible
+.B UTF-8
+multi-byte encoding. To signal the use of UTF-8 as the character
+encoding to all applications, a suitable
+.B locale
+has to be selected via environment variables (e.g.,
+"LANG=en_GB.UTF-8").
+.PP
+The
+.B nl_langinfo(CODESET)
+function returns the name of the selected encoding. Library functions
+such as
+.BR wctomb (3)
+and
+.BR mbsrtowcs (3)
+can be used to transform the internal
+.B wchar_t
+characters and strings into the system character encoding and back
+and
+.BR wcwidth (3)
+tells, how many positions (0\(en2) the cursor is advanced by the
+output of a character.
+.PP
+Under Linux, in general only the BMP at implementation level 1 should
+be used at the moment. Up to two combining characters per base
+character for certain scripts (in particular Thai) are also supported
+by some UTF-8 terminal emulators and ISO 10646 fonts (level 2), but in
+general precomposed characters should be preferred where available
+(Unicode calls this
+.BR "Normalization Form C" ).
+.SH "PRIVATE AREA"
+In the
+.BR BMP ,
+the range 0xe000 to 0xf8ff will never be assigned to any characters by
+the standard and is reserved for private usage. For the Linux
+community, this private area has been subdivided further into the
+range 0xe000 to 0xefff which can be used individually by any end-user
+and the Linux zone in the range 0xf000 to 0xf8ff where extensions are
+coordinated among all Linux users. The registry of the characters
+assigned to the Linux zone is currently maintained by H. Peter Anvin
+<Peter.Anvin at linux.org>.
+.SH LITERATURE
+.TP 0.2i
+*
+Information technology \(em Universal Multiple-Octet Coded Character
+Set (UCS) \(em Part 1: Architecture and Basic Multilingual Plane.
+International Standard ISO/IEC 10646-1, International Organization
+for Standardization, Geneva, 2000.
+
+This is the official specification of
+.BR UCS .
+Available as a PDF file on CD-ROM from http://www.iso.ch/.
+.TP
+*
+The Unicode Standard, Version 3.0.
+The Unicode Consortium, Addison-Wesley,
+Reading, MA, 2000, ISBN 0-201-61633-5.
+.TP
+*
+S. Harbison, G. Steele. C: A Reference Manual. Fourth edition,
+Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
+
+A good reference book about the C programming language. The fourth
+edition covers the 1994 Amendment 1 to the ISO C 90 standard, which
+adds a large number of new C library functions for handling wide and
+multi-byte character encodings, but it does not yet cover ISO C 99,
+which improved wide and multi-byte character support even further.
+.TP
+*
+Unicode Technical Reports.
+.RS
+http://www.unicode.org/unicode/reports/
+.RE
+.TP
+*
+Markus Kuhn: UTF-8 and Unicode FAQ for Unix/Linux.
+.RS
+http://www.cl.cam.ac.uk/~mgk25/unicode.html
+
+Provides subscription information for the
+.B linux-utf8
+mailing list, which is the best place to look for advice on using
+Unicode under Linux.
+.RE
+.TP
+*
+Bruno Haible: Unicode HOWTO.
+.RS
+ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html
+.RE
+.SH BUGS
+When this man page was last revised, the GNU C Library support for
+.B UTF-8
+locales was mature and XFree86 support was in an advanced state, but
+work on making applications (most notably editors) suitable for use in
+.B UTF-8
+locales was still fully in progress. Current general
+.B UCS
+support under Linux usually provides for CJK double-width characters
+and sometimes even simple overstriking combining characters, but
+usually does not include support for scripts with right-to-left
+writing direction or ligature substitution requirements such as
+Hebrew, Arabic, or the Indic scripts. These scripts are currently only
+supported in certain GUI applications (HTML viewers, word processors)
+with sophisticated text rendering engines.
+.SH AUTHOR
+Markus Kuhn <mgk25 at cl.cam.ac.uk>
+.SH "SEE ALSO"
+.BR utf-8 (7),
+.BR charsets (7),
+.BR setlocale (3)
diff --git a/raw/man7/unix.7 b/raw/man7/unix.7
new file mode 100644
index 0000000..2a9f2af
--- /dev/null
+++ b/raw/man7/unix.7
@@ -0,0 +1,254 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\"
+.\" Modified, 2 Dec 2002, Michael Kerrisk, mtk16 at ext.canterbury.ac.nz
+.\"
+.TH UNIX  7 2002-12-02 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL \- Sockets for local interprocess communication.
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <sys/un.h>
+
+.IB unix_socket " = socket(PF_UNIX, type, 0);"
+.br
+.IB error " = socketpair(PF_UNIX, type, 0, int *" sv ");"
+
+.SH DESCRIPTION
+The
+.B PF_UNIX
+(also known as
+.BR PF_LOCAL )
+socket family is used to communicate between processes on the same machine
+efficiently. Unix sockets can be either anonymous (created by 
+.BR socketpair (2))
+or associated with a file of type socket. 
+Linux also supports an abstract namespace which is independent of the
+file system.
+
+Valid types are 
+.B SOCK_STREAM 
+for a stream oriented socket and 
+.B SOCK_DGRAM
+for a datagram oriented socket that preserves message boundaries. Unix
+sockets are always reliable and don't reorder datagrams.
+
+Unix sockets support passing file descriptors or process credentials to other
+processes using ancillary data.
+
+.SH "ADDRESS FORMAT"
+A unix address is defined as a filename in the filesystem or 
+as a unique string in the abstract namespace. Sockets created by 
+.BR socketpair (2)
+are anonymous. For non-anonymous sockets the target address can be set 
+using
+.BR connect (2). 
+The local address can be set using
+.BR bind (2). 
+When a socket is connected and it doesn't already have a local address a
+unique address in the abstract namespace will be generated automatically. 
+
+.RS
+.nf
+#define UNIX_PATH_MAX	108
+
+.ta 4n 17n 42n
+struct sockaddr_un {
+	sa_family_t	sun_family;	/* AF_UNIX */
+	char	sun_path[UNIX_PATH_MAX];	/* pathname */
+};
+.fi
+.RE 
+
+.B sun_family 
+always contains
+.BR AF_UNIX .
+.B sun_path
+contains the zero-terminated pathname of the socket in the file system.
+If 
+.B sun_path
+starts with a zero byte it refers to the abstract namespace maintained by
+the Unix protocol module.
+The socket's address in this namespace is given by the rest of the bytes in
+.BR sun_path .
+Note that names in the abstract namespace are not zero-terminated.
+
+.SH "SOCKET OPTIONS"
+For historical reasons these socket options are specified with a 
+SOL_SOCKET type even though they are PF_UNIX specific.
+They can be set with 
+.BR setsockopt (2)
+and read with 
+.BR getsockopt (2)
+by specifying SOL_SOCKET as the socket family.
+.TP
+.B SO_PASSCRED
+Enables the receiving of the credentials of the sending process 
+ancillary message. When this option is set and the socket is not yet connected
+a unique name in the abstract namespace will be generated automatically.
+Expects an integer boolean flag. 
+
+.SH "ANCILLARY MESSAGES"
+Ancillary data is sent and received using
+.BR sendmsg (2)
+and
+.BR recvmsg (2).
+For historical reasons the ancillary message types listed below
+are specified with a SOL_SOCKET type even though they are PF_UNIX specific.
+To send them set the
+.B cmsg_level
+field of the struct 
+.B cmsghdr
+to SOL_SOCKET and the 
+.B cmsg_type 
+field to the type. For more information see 
+.BR cmsg (3). 
+
+.TP
+.B SCM_RIGHTS
+Send or receive a set of open file descriptors from another process. 
+The data portion contains an integer array of the file descriptors.
+The passed file descriptors behave as though they have been created with
+.BR dup (2).
+
+.TP
+.B SCM_CREDENTIALS
+Send or receive unix credentials.  This can be used for authentication.
+The credentials are passed as a 
+.B struct ucred
+ancillary message.
+
+.RS
+.nf
+.ta 4n 11n 17n
+struct ucred {
+	pid_t	pid;	/* process id of the sending process */  
+	uid_t	uid;	/* user id of the sending process */ 
+	gid_t	gid;	/* group id of the sending process */ 
+};
+.fi
+.RE 
+ 
+The credentials which the sender specifies are checked by the kernel.
+A process with effective user ID 0 is allowed to specify values that do 
+not match his own. 
+The sender must specify its own process ID (unless it has the capability
+.BR CAP_SYS_ADMIN ),
+its user ID, effective user ID or set user ID (unless it has
+.BR CAP_SETUID ),
+and its group id, effective group ID or set group ID (unless it has
+.BR CAP_SETGID ).
+To receive a
+.B struct ucred
+message the
+.B SO_PASSCRED 
+option must be enabled on the socket.
+
+.SH VERSIONS
+.B SCM_CREDENTIALS 
+and the abstract namespace were introduced with Linux 2.2 and should not
+be used in portable programs.
+(Some BSD-derived systems also support credential passing,
+but the implementation details differ.)
+
+.SH NOTES
+In the Linux implementation, sockets which are visible in the
+filesystem honour the permissions of the directory they are in. Their
+owner, group and their permissions can be changed.
+Creation of a new socket will fail if the process does not have write and
+search (execute) permission on the directory the socket is created in.
+Connecting to the socket object requires read/write permission.
+This behavior differs from many BSD-derived systems which
+ignore permissions for Unix sockets. Portable programs should not rely on
+this feature for security.
+
+Binding to a socket with a filename creates a socket
+in the file system that must be deleted by the caller when it is no
+longer needed (using
+.BR unlink (2)).
+The usual Unix close-behind semantics apply; the socket can be unlinked
+at any time and will be finally removed from the file system when the last 
+reference to it is closed.
+
+To pass file descriptors or credentials you need to send/read at least 
+one byte of data.
+
+Unix domain stream sockets do not support the notion of out-of-band data.
+.SH ERRORS
+.TP
+.B ENOMEM
+Out of memory.
+.TP
+.B ECONNREFUSED
+.BR connect (2)
+called with a socket object that isn't listening. This can happen when
+the remote socket does not exist or the filename is not a socket.
+.TP
+.B EINVAL
+Invalid argument passed. A common cause is the missing setting of AF_UNIX
+in the sun_type field of passed addresses or the socket being in an invalid
+state for the applied operation.
+.TP
+.B EOPNOTSUPP
+Stream operation called on non-stream oriented socket or tried to 
+use the out-of-band data option.
+.TP
+.B EPROTONOSUPPORT
+Passed protocol is not PF_UNIX.
+.TP
+.B ESOCKTNOSUPPORT
+Unknown socket type.
+.TP 
+.B EPROTOTYPE
+Remote socket does not match the local socket type (SOCK_DGRAM vs.
+SOCK_STREAM)
+.TP
+.B EADDRINUSE
+Selected local address is already taken or filesystem socket object already
+exists. 
+.TP
+.B EISCONN
+.BR connect (2)
+called on an already connected socket or a target address was
+specified on a connected socket.
+.TP
+.B ENOTCONN
+Socket operation needs a target address, but the socket is not connected.
+.TP
+.B ECONNRESET
+Remote socket was unexpectedly closed.
+.TP
+.B EPIPE
+Remote socket was closed on a stream socket. If enabled, a 
+.B SIGPIPE 
+is sent as well. This can be avoided by passing the 
+.B MSG_NOSIGNAL
+flag to
+.BR sendmsg (2)
+or
+.BR recvmsg (2).
+.TP
+.B EFAULT
+User memory address was not valid.
+.TP
+.B EPERM
+The sender passed invalid credentials in the
+.BR "struct ucred" .
+.PP
+Other errors can be generated by the generic socket layer or 
+by the filesystem while generating a filesystem socket object. See
+the appropriate manual pages for more information. 
+.SH "SEE ALSO"
+.BR recvmsg (2),
+.BR sendmsg (2),
+.BR socket (2),
+.BR socketpair (2),
+.BR cmsg (3),
+.BR capabilities (7),
+.BR socket (7)
+.\" .SH CREDITS
+.\" This man page was written by Andi Kleen. 
diff --git a/raw/man7/unlisten.7 b/raw/man7/unlisten.7
new file mode 100644
index 0000000..9e06135
--- /dev/null
+++ b/raw/man7/unlisten.7
@@ -0,0 +1,65 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "UNLISTEN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+UNLISTEN \- stop listening for a notification
+
+.SH SYNOPSIS
+.sp
+.nf
+UNLISTEN { \fIname\fR | * }
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBUNLISTEN\fR is used to remove an existing
+registration for \fBNOTIFY\fR events.
+\fBUNLISTEN\fR cancels any existing registration of
+the current PostgreSQL session as a
+listener on the notification \fIname\fR. The special wildcard
+* cancels all listener registrations for the
+current session.
+.PP
+NOTIFY [\fBnotify\fR(7)]
+contains a more extensive
+discussion of the use of \fBLISTEN\fR and
+\fBNOTIFY\fR.
+.SH "PARAMETERS"
+.TP
+\fB\fIname\fB\fR
+Name of a notification (any identifier).
+.TP
+\fB*\fR
+All current listen registrations for this session are cleared.
+.SH "NOTES"
+.PP
+You may unlisten something you were not listening for; no warning or error
+will appear.
+.PP
+At the end of each session, \fBUNLISTEN *\fR is
+automatically executed.
+.SH "EXAMPLES"
+.PP
+To make a registration:
+.sp
+.nf
+LISTEN virtual;
+NOTIFY virtual;
+Asynchronous notification "virtual" received from server process with PID 8448.
+.sp
+.fi
+.PP
+Once \fBUNLISTEN\fR has been executed, further \fBNOTIFY\fR
+commands will be ignored:
+.sp
+.nf
+UNLISTEN virtual;
+NOTIFY virtual;
+-- no NOTIFY event is received
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBUNLISTEN\fR command in the SQL standard.
+.SH "SEE ALSO"
+LISTEN [\fBlisten\fR(7)], NOTIFY [\fBnotify\fR(l)]
+
diff --git a/raw/man7/update.7 b/raw/man7/update.7
new file mode 100644
index 0000000..75b9f20
--- /dev/null
+++ b/raw/man7/update.7
@@ -0,0 +1,90 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "UPDATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+UPDATE \- update rows of a table
+
+.SH SYNOPSIS
+.sp
+.nf
+UPDATE [ ONLY ] \fItable\fR SET \fIcolumn\fR = { \fIexpression\fR | DEFAULT } [, ...]
+    [ FROM \fIfromlist\fR ]
+    [ WHERE \fIcondition\fR ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBUPDATE\fR changes the values of the specified
+columns in all rows that satisfy the condition. Only the columns to
+be modified need be mentioned in the statement; columns not explicitly
+SET retain their previous values.
+.PP
+By default, \fBUPDATE\fR will update rows in the
+specified table and all its subtables. If you wish to only update
+the specific table mentioned, you must use the ONLY
+clause.
+.PP
+You must have the UPDATE privilege on the table
+to update it, as well as the SELECT
+privilege to any table whose values are read in the
+\fIexpression\fRs or
+\fIcondition\fR.
+.SH "PARAMETERS"
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of the table to update.
+.TP
+\fB\fIcolumn\fB\fR
+The name of a column in \fItable\fR.
+.TP
+\fB\fIexpression\fB\fR
+An expression to assign to the column. The expression may use the
+old values of this and other columns in the table.
+.TP
+\fBDEFAULT\fR
+Set the column to its default value (which will be NULL if no
+specific default expression has been assigned to it).
+.TP
+\fB\fIfromlist\fB\fR
+A list of table expressions, allowing columns from other tables
+to appear in the WHERE condition and the update expressions.
+.TP
+\fB\fIcondition\fB\fR
+An expression that returns a value of type \fBboolean\fR.
+Only rows for which this expression returns true
+will be updated.
+.SH "OUTPUTS"
+.PP
+On successful completion, an \fBUPDATE\fR command returns a command
+tag of the form
+.sp
+.nf
+UPDATE \fIcount\fR
+.sp
+.fi
+The \fIcount\fR is the number
+of rows updated. If \fIcount\fR is
+0, no rows matched the \fIcondition\fR (this is not considered
+an error).
+.SH "EXAMPLES"
+.PP
+Change the word Drama to Dramatic in the
+column \fBkind\fR of the table films:
+.sp
+.nf
+UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';
+.sp
+.fi
+.PP
+Adjust temperature entries and reset precipitation to its default
+value in one row of the table weather:
+.sp
+.nf
+UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
+  WHERE city = 'San Francisco' AND date = '2003-07-03';
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+This command conforms to the SQL standard. The
+FROM clause is a
+PostgreSQL extension.
diff --git a/raw/man7/utf-8.7 b/raw/man7/utf-8.7
new file mode 100644
index 0000000..e364c2e
--- /dev/null
+++ b/raw/man7/utf-8.7
@@ -0,0 +1,285 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) Markus Kuhn, 1996, 2001
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 1995-11-26  Markus Kuhn <mskuhn at cip.informatik.uni-erlangen.de>
+.\"      First version written
+.\" 2001-05-11  Markus Kuhn <mgk25 at cl.cam.ac.uk>
+.\"      Update
+.\"
+.TH UTF-8 7 2001-05-11 "GNU" "Linux Programmer's Manual"
+.SH NAME
+UTF-8 \- an ASCII compatible multi-byte Unicode encoding
+.SH DESCRIPTION
+The
+.B Unicode 3.0
+character set occupies a 16-bit code space. The most obvious
+Unicode encoding (known as
+.BR UCS-2 )
+consists of a sequence of 16-bit words. Such strings can contain as
+parts of many 16-bit characters bytes like '\\0' or '/' which have a
+special meaning in filenames and other C library function parameters.
+In addition, the majority of UNIX tools expects ASCII files and can't
+read 16-bit words as characters without major modifications. For these
+reasons,
+.B UCS-2
+is not a suitable external encoding of
+.B Unicode
+in filenames, text files, environment variables, etc. The
+.BR "ISO 10646 Universal Character Set (UCS)" ,
+a superset of Unicode, occupies even a 31-bit code space and the obvious
+.B UCS-4
+encoding  for it (a sequence of 32-bit words) has the same problems.
+
+The
+.B UTF-8
+encoding of
+.B Unicode
+and
+.B UCS
+does not have these problems and is the common way in which
+.B Unicode
+is used on Unix-style operating systems.
+.SH PROPERTIES
+The 
+.B UTF-8 
+encoding has the following nice properties:
+.TP 0.2i
+*
+.B UCS
+characters 0x00000000 to 0x0000007f (the classic
+.B US-ASCII
+characters) are encoded simply as bytes 0x00 to 0x7f (ASCII
+compatibility). This means that files and strings which contain only
+7-bit ASCII characters have the same encoding under both 
+.B ASCII
+and
+.BR UTF-8 .
+.TP
+*
+All
+.B UCS
+characters > 0x7f are encoded as a multi-byte sequence
+consisting only of bytes in the range 0x80 to 0xfd, so no ASCII
+byte can appear as part of another character and there are no
+problems with e.g. '\\0' or '/'.
+.TP
+*
+The lexicographic sorting order of
+.B UCS-4
+strings is preserved.
+.TP
+*
+All possible 2^31 UCS codes can be encoded using 
+.BR UTF-8 .
+.TP
+*
+The bytes 0xfe and 0xff are never used in the
+.B UTF-8
+encoding.
+.TP
+* 
+The first byte of a multi-byte sequence which represents a single non-ASCII
+.B UCS
+character is always in the range 0xc0 to 0xfd and indicates how long
+this multi-byte sequence is. All further bytes in a multi-byte sequence
+are in the range 0x80 to 0xbf. This allows easy resynchronization and
+makes the encoding stateless and robust against missing bytes.
+.TP
+*
+.B UTF-8
+encoded
+.B UCS
+characters may be up to six bytes long, however the
+.B Unicode
+standard specifies no characters above 0x10ffff, so Unicode characters
+can only be up to four bytes long in
+.BR UTF-8 .
+.SH ENCODING
+The following byte sequences are used to represent a character. The
+sequence to be used depends on the UCS code number of the character:
+.TP 0.4i
+0x00000000 - 0x0000007F:
+.RI 0 xxxxxxx
+.TP
+0x00000080 - 0x000007FF:
+.RI 110 xxxxx 
+.RI 10 xxxxxx
+.TP
+0x00000800 - 0x0000FFFF:
+.RI 1110 xxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.TP
+0x00010000 - 0x001FFFFF:
+.RI 11110 xxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.TP
+0x00200000 - 0x03FFFFFF:
+.RI 111110 xx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.TP
+0x04000000 - 0x7FFFFFFF:
+.RI 1111110 x
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.RI 10 xxxxxx
+.PP
+The
+.I xxx
+bit positions are filled with the bits of the character code number in
+binary representation. Only the shortest possible multi-byte sequence
+which can represent the code number of the character can be used.
+.PP
+The
+.B UCS
+code values 0xd800\(en0xdfff (UTF-16 surrogates) as well as 0xfffe and
+0xffff (UCS non-characters) should not appear in conforming
+.B UTF-8
+streams.
+.SH EXAMPLES
+The
+.B Unicode
+character 0xa9 = 1010 1001 (the copyright sign) is encoded
+in UTF-8 as
+.PP
+.RS
+11000010 10101001 = 0xc2 0xa9
+.RE
+.PP
+and character 0x2260 = 0010 0010 0110 0000 (the "not equal" symbol) is
+encoded as:
+.PP
+.RS
+11100010 10001001 10100000 = 0xe2 0x89 0xa0
+.RE
+.SH "APPLICATION NOTES"
+Users have to select a 
+.B UTF-8
+locale, for example with
+.PP
+.RS
+export LANG=en_GB.UTF-8
+.RE
+.PP
+in order to activate the 
+.B UTF-8
+support in applications.
+.PP
+Application software that has to be aware of the used character
+encoding should always set the locale with for example
+.PP
+.RS
+setlocale(LC_CTYPE, "")
+.RE
+.PP
+and programmers can then test the expression
+.PP
+.RS
+strcmp(nl_langinfo(CODESET), "UTF-8") == 0
+.RE
+.PP
+to determine whether a 
+.B UTF-8
+locale has been selected and whether
+therefore all plaintext standard input and output, terminal
+communication, plaintext file content, filenames and environment
+variables are encoded in 
+.BR UTF-8 .
+.PP
+Programmers accustomed to single-byte encodings such as
+.B US-ASCII
+or
+.B ISO 8859
+have to be aware that two assumptions made so far are no longer valid
+in
+.B UTF-8
+locales. Firstly, a single byte does not necessarily correspond any
+more to a single character. Secondly, since modern terminal emulators
+in 
+.B UTF-8
+mode also support Chinese, Japanese, and Korean
+.B double-width characters
+as well as non-spacing
+.BR "combining characters"  ,
+outputting a single character does not necessarily advance the cursor
+by one position as it did in 
+.BR ASCII .
+Library functions such as
+.BR mbsrtowcs (3)
+and
+.BR wcswidth (3)
+should be used today to count characters and cursor positions.
+.PP
+The official ESC sequence to switch from an
+.B ISO 2022
+encoding scheme (as used for instance by VT100 terminals) to
+.B UTF-8
+is ESC % G
+("\\x1b%G"). The corresponding return sequence from
+.B UTF-8
+to ISO 2022 is ESC % @ ("\\x1b%@"). Other ISO 2022 sequences (such as
+for switching the G0 and G1 sets) are not applicable in UTF-8 mode.
+.PP
+It can be hoped that in the foreseeable future,
+.B UTF-8
+will replace
+.B ASCII
+and
+.B ISO 8859
+at all levels as the common character encoding on POSIX systems,
+leading to a significantly richer environment for handling plain text.
+.SH SECURITY
+The
+.BR Unicode " and " UCS
+standards require that producers of 
+.B UTF-8
+shall use the shortest form possible, e.g., producing a two-byte
+sequence with first byte 0xc0 is non-conforming.
+.B Unicode 3.1
+has added the requirement that conforming programs must not accept
+non-shortest forms in their input. This is for security reasons: if
+user input is checked for possible security violations, a program
+might check only for the
+.B ASCII
+version of "/../" or ";" or NUL and overlook that there are many
+.RB non- ASCII
+ways to represent these things in a non-shortest
+.B UTF-8
+encoding.
+.SH STANDARDS
+ISO/IEC 10646-1:2000, Unicode 3.1, RFC 2279, Plan 9.
+.SH AUTHOR
+Markus Kuhn <mgk25 at cl.cam.ac.uk>
+.SH "SEE ALSO"
+.BR nl_langinfo (3),
+.BR setlocale (3),
+.BR charsets (7),
+.BR unicode (7)
diff --git a/raw/man7/vacuum.7 b/raw/man7/vacuum.7
new file mode 100644
index 0000000..1f7851f
--- /dev/null
+++ b/raw/man7/vacuum.7
@@ -0,0 +1,139 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "VACUUM" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+VACUUM \- garbage-collect and optionally analyze a database
+
+.SH SYNOPSIS
+.sp
+.nf
+VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ \fItable\fR ]
+VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ \fItable\fR [ (\fIcolumn\fR [, ...] ) ] ]
+.sp
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBVACUUM\fR reclaims storage occupied by deleted tuples.
+In normal PostgreSQL operation, tuples that
+are deleted or obsoleted by an update are not physically removed from
+their table; they remain present until a \fBVACUUM\fR is
+done. Therefore it's necessary to do \fBVACUUM\fR
+periodically, especially on frequently-updated tables.
+.PP
+With no parameter, \fBVACUUM\fR processes every table in the
+current database. With a parameter, \fBVACUUM\fR processes
+only that table.
+.PP
+\fBVACUUM ANALYZE\fR performs a \fBVACUUM\fR
+and then an \fBANALYZE\fR for each selected table. This
+is a handy combination form for routine maintenance scripts. See
+ANALYZE [\fBanalyze\fR(7)]
+for more details about its processing.
+.PP
+Plain \fBVACUUM\fR (without FULL) simply reclaims
+space and makes it
+available for re-use. This form of the command can operate in parallel
+with normal reading and writing of the table, as an exclusive lock
+is not obtained. \fBVACUUM
+FULL\fR does more extensive processing, including moving of tuples
+across blocks to try to compact the table to the minimum number of disk
+blocks. This form is much slower and requires an exclusive lock on each
+table while it is being processed.
+.PP
+\fBFREEZE\fR is a special-purpose option that
+causes tuples to be marked ``frozen'' as soon as possible,
+rather than waiting until they are quite old. If this is done when there
+are no other open transactions in the same database, then it is guaranteed
+that all tuples in the database are ``frozen'' and will not be
+subject to transaction ID wraparound problems, no matter how long the
+database is left unvacuumed.
+\fBFREEZE\fR is not recommended for routine use. Its only
+intended usage is in connection with preparation of user-defined template
+databases, or other databases that are completely read-only and will not
+receive routine maintenance \fBVACUUM\fR operations.
+See the chapter called ``Routine Database Maintenance'' in the documentation for details.
+.SH "PARAMETERS"
+.TP
+\fBFULL\fR
+Selects ``full'' vacuum, which may reclaim more
+space, but takes much longer and exclusively locks the table.
+.TP
+\fBFREEZE\fR
+Selects aggressive ``freezing'' of tuples.
+.TP
+\fBVERBOSE\fR
+Prints a detailed vacuum activity report for each table.
+.TP
+\fBANALYZE\fR
+Updates statistics used by the planner to determine the most
+efficient way to execute a query.
+.TP
+\fB\fItable\fB\fR
+The name (optionally schema-qualified) of a specific table to
+vacuum. Defaults to all tables in the current database.
+.TP
+\fB\fIcolumn\fB\fR
+The name of a specific column to analyze. Defaults to all columns.
+.SH "OUTPUTS"
+.PP
+When VERBOSE is specified, \fBVACUUM\fR emits
+progress messages to indicate which table is currently being
+processed. Various statistics about the tables are printed as well.
+.SH "NOTES"
+.PP
+We recommend that active production databases be
+vacuumed frequently (at least nightly), in order to
+remove expired rows. After adding or deleting a large number
+of rows, it may be a good idea to issue a \fBVACUUM
+ANALYZE\fR command for the affected table. This will update the
+system catalogs with
+the results of all recent changes, and allow the
+PostgreSQL query planner to make better
+choices in planning queries.
+.PP
+The \fBFULL\fR option is not recommended for routine use,
+but may be useful in special cases. An example is when you have deleted
+most of the rows in a table and would like the table to physically shrink
+to occupy less disk space. \fBVACUUM FULL\fR will usually
+shrink the table more than a plain \fBVACUUM\fR would.
+.SH "EXAMPLES"
+.PP
+The following is an example from running \fBVACUUM\fR on a
+table in the regression database:
+.sp
+.nf
+regression=# VACUUM VERBOSE ANALYZE onek;
+INFO:  vacuuming "public.onek"
+INFO:  index "onek_unique1" now contains 1000 tuples in 14 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.01s/0.08u sec elapsed 0.18 sec.
+INFO:  index "onek_unique2" now contains 1000 tuples in 16 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.00s/0.07u sec elapsed 0.23 sec.
+INFO:  index "onek_hundred" now contains 1000 tuples in 13 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.01s/0.08u sec elapsed 0.17 sec.
+INFO:  index "onek_stringu1" now contains 1000 tuples in 48 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.01s/0.09u sec elapsed 0.59 sec.
+INFO:  "onek": removed 3000 tuples in 108 pages
+DETAIL:  CPU 0.01s/0.06u sec elapsed 0.07 sec.
+INFO:  "onek": found 3000 removable, 1000 nonremovable tuples in 143 pages
+DETAIL:  0 dead tuples cannot be removed yet.
+There were 0 unused item pointers.
+0 pages are entirely empty.
+CPU 0.07s/0.39u sec elapsed 1.56 sec.
+INFO:  analyzing "public.onek"
+INFO:  "onek": 36 pages, 1000 rows sampled, 1000 estimated total rows
+VACUUM
+.sp
+.fi
+.SH "COMPATIBILITY"
+.PP
+There is no \fBVACUUM\fR statement in the SQL standard.
+.SH "SEE ALSO"
+vacuumdb [\fBvacuumdb\fR(1)]
+
diff --git a/raw/man7/x25.7 b/raw/man7/x25.7
new file mode 100644
index 0000000..b4f9feb
--- /dev/null
+++ b/raw/man7/x25.7
@@ -0,0 +1,112 @@
+.\" This man page is Copyright (C) 1998 Heiner Eisen. 
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: x25.7,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.TH X25 4 1998-12-01 "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+x25, PF_X25 \- ITU-T X.25 / ISO-8208 protocol interface. 
+
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <linux/x25.h>
+.sp
+.B x25_socket = socket(PF_X25, SOCK_SEQPACKET, 0); 
+
+.SH DESCRIPTION
+X25 sockets provide an interface to the X.25 packet layer protocol.
+This allows applications to
+communicate over a public X.25 data network as standardised by
+International Telecommunication Union's recommendation X.25
+(X.25 DTE-DCE mode). X25 sockets can also be used for communication
+without an intermediate X.25 network (X.25 DTE-DTE mode) as described
+in ISO-8208.
+.PP
+Message boundaries are preserved \- a 
+.BR read (2) 
+from a socket will
+retrieve the same chunk of data as output with the corresponding
+.BR write (2) 
+to the peer socket. When necessary, the kernel takes care
+of segmenting and re-assembling long messages by means of
+the X.25 M-bit. There is no hard-coded upper limit for the
+message size. However, re-assembling of a long message might fail if
+there is a temporary lack of system resources or when other constraints
+(such as socket memory or buffer size limits) become effective. If that
+occurs, the X.25 connection will be reset.
+.SH "SOCKET ADDRESSES"
+The 
+.B AF_X25 
+socket address family uses the
+.B struct sockaddr_x25
+for representing network addresses as defined in ITU-T
+recommendation X.121.
+.PP
+.RS
+.nf
+.ta 4n 18n 32n
+struct sockaddr_x25 {
+	sa_family_t	sx25_family;	/* must be AF_X25 */
+	x25_address	sx25_addr;	/* X.121 Address */
+};
+.ta
+.fi
+.RE
+.PP
+.I sx25_addr
+contains a char array
+.I x25_addr[] 
+to be interpreted as a null-terminated string.
+.I sx25_addr.x25_addr[]
+consists of up to 15 (not counting the terminating 0) ASCII
+characters forming the X.121 address.
+Only the decimal digit characters from `0' to `9' are allowed.
+.SH "SOCKET OPTIONS"
+The following X.25 specific socket options can be set by using
+.BR setsockopt (2)
+and read with 
+.BR getsockopt (2)
+with the level parameter set to 
+.BR SOL_X25 .
+.TP
+.B X25_QBITINCL
+Controls whether the X.25 Q-bit (Qualified Data Bit) is accessible by the
+user. It expects an integer argument. If set to 0 (default),
+the Q-bit is never set for outgoing packets and the Q-bit of incoming
+packets is ignored. If set to 1, an additional first byte is prepended
+to each message read from or written to the socket. For data read from
+the socket, a 0 first byte indicates that the Q-bits of the corresponding
+incoming data packets were not set. A first byte with value 1 indicates
+that the Q-bit of the corresponding incoming data packets was set.
+If the first byte of the data written to the socket is 1 the Q-bit of the
+corresponding outgoing data packets will be set. If the first byte is 0
+the Q-bit will not be set.
+.SH BUGS
+Plenty, as the X.25 PLP implementation is 
+.BR CONFIG_EXPERIMENTAL .
+.PP
+This man page is incomplete.
+.PP
+There is no dedicated application programmer's header file yet;
+you need to include the kernel header file 
+.BR <linux/x25.h> .
+.B CONFIG_EXPERIMENTAL 
+might also imply that future versions of the
+interface are not binary compatible. 
+.PP
+X.25 N-Reset events are not propagated to the user process yet. Thus,
+if a reset occurred, data might be lost without notice. 
+.SH "SEE ALSO"
+.BR socket (7),
+.BR socket (2)
+.PP
+Jonathan Simon Naylor: 
+\(lqThe Re-Analysis and Re-Implementation of X.25.\(rq
+The URL is
+.RS
+.I ftp://ftp.pspt.fi/pub/ham/linux/ax25/x25doc.tgz
+.RE
+.SH VERSIONS
+The PF_X25 protocol family is a new feature of Linux 2.2.
diff --git a/raw/man8/MAKEDEV.8 b/raw/man8/MAKEDEV.8
new file mode 100644
index 0000000..4753c5a
--- /dev/null
+++ b/raw/man8/MAKEDEV.8
@@ -0,0 +1,370 @@
+.TH MAKEDEV 8 "26 June 2001" Linux "Linux Programmer's Manual"
+.SH NAME
+MAKEDEV \- create devices
+.SH SYNOPSIS
+.B "cd dev; ./MAKEDEV -V"
+.br
+.B "cd dev; ./MAKEDEV [ -d directory ] [ -c configdir ] [ -m maxdevices ] [-n] [-v] [-i] [-M] [-S]" " device ..."
+.SH DESCRIPTION
+.B MAKEDEV
+is a program that will create the devices in \fC/dev\fR used to interface
+with drivers in the kernel.
+.PP
+Note that programs giving the error ``ENOENT: No such file or
+directory'' normally means that the device file is missing, whereas
+``ENODEV: No such device'' normally means the kernel does not have the
+driver configured or loaded.
+.SH OPTIONS
+.TP
+.B \-V
+Print out version and exit.
+.TP
+.B \-n
+Do not actually update the devices, just print the actions that would be
+performed.
+.TP
+.B \-M
+Create symlinks, directories, and sockets belonging to the current user,
+and print out the list of devices which would be created in a format
+which is understood by RPM.
+.TP
+.B \-S
+Do not actually update the devices, just print the actions that would be
+performed in a format which can be fed to a shell.
+.TP
+.B \-d directory
+Create the devices under \fBdirectory\fR instead of the default (usually
+\fB/dev\fR).
+.TP
+.B \-v
+Be verbose.  Print out the actions as they are performed.  This is the
+same output as produced by the \fB-n\fR option.
+.TP
+.B \-i
+Ignore errors parsing configuration files.
+.BR
+.SH CUSTOMIZATION
+Since there is currently no standardization in what names are used for
+system users and groups, it is possible that you may need to modify
+\fBMAKEDEV\fR's configuration files to reflect your site's settings.
+.SH DEVICES
+.TP
+Certain devices are required for minimal functionality.  These are:
+.B mem
+\- access to physical memory;
+.B kmem
+\- access to kernel virtual memory;
+.B null
+\- null device (infinite sink);
+.B port
+\- access to I/O ports;
+.B zero
+\- null byte source (infinite source);
+.B core
+\- symlink to \fB/proc/kcore\fR (for kernel debugging);
+.B full
+\- always returns ENOSPACE on write;
+.B ram
+\- ramdisk;
+.B tty
+\- to access the controlling tty of a process.
+.TP 
+.B Virtual Terminals
+.TP
+.I console
+This creates the devices associated with the console.  These are the virtual
+terminals \fBtty\fIx\fR, where \fIx\fR can be from 0 though 63.  The device
+\fItty0\fR is the currently active VT, and is also known as \fCconsole\fR.
+For each VT, there are two devices: \fBvcs\fIx\fR and \fBvcsa\fIx\fR,
+which can be used to generate screen-dumps of the VT (\fBvcs\fIx\fR is just the
+text, and \fBvcsa\fIx\fR includes the attributes).
+.TP
+.B Serial Devices
+.TP
+.I ttyS{0..63}
+Serial ports.
+.TP
+.B Pseudo Terminals
+.TP
+.I pty[p-s]
+Each possible argument will create a bank of 16 master and slave
+pairs.  The current kernel (1.2) is limited to 64 such pairs.
+The master pseudo-terminals are 
+.BR pty[p-s][0-9a-f] ,
+and the slaves are
+.BR tty[p-s][0-9a-f] .
+.TP
+.B Parallel Ports
+.TP
+.I lp
+Standard parallel ports.  The devices are created 
+.BR lp0 , 
+.BR lp1 ,
+and 
+.BR lp2 .
+.TP
+.B Bus Mice
+.TP
+.I busmice
+The various bus mice devices.  This creates the following devices:
+.B logimouse
+(Logitech bus mouse),
+.B psmouse
+(PS/2-style mouse),
+.B msmouse
+(Microsoft Inport bus mouse) and
+.B atimouse
+(ATI XL bus mouse) and
+.B jmouse
+(J-mouse).
+.TP
+.B Joystick Devices
+.TP
+.I js
+Joystick.  Creates 
+.B js0
+and 
+.BR js1 .
+.TP
+.B Disk Devices
+.TP
+.I fd[0-7]
+Floppy disk devices.  The device
+.BI fd x
+is the device which autodetects the format, and the additional devices are
+fixed format (whose size is indicated in the name).
+The other devices are named as
+.BI fd xLn .
+The single letter
+.I L
+identifies the type of floppy disk (d = 5.25" DD, h = 5.25" HD, D = 3.5"
+DD, H = 3.5" HD, E = 3.5" ED).  The number
+.I n
+represents the capacity of that format in K.  Thus the standard formats
+are
+.BI fd x d360 ,
+.BI fd x h1200 ,
+.BI fd x D720 ,
+.BI fd x H1440 ,
+and
+.RI fd x E2880 .
+.IP
+For more information see Alain Knaff's fdutils package.
+.IP
+Devices
+.BI fd0 *
+through
+.BI fd3 *
+are floppy disks on the first controller, and devices
+.BI fd4 *
+through
+.BI fd7 *
+are floppy disks on the second controller.
+.TP
+.I hd[a-d]
+AT hard disks.  The device
+.BI hd x
+provides access to the whole disk, with the partitions being
+.BI hd x [0-20].
+The four primary partitions are
+.BI hd x 1
+through
+.BI hd x 4,
+with the logical partitions being numbered from
+.BI hd x 5
+though
+.BI hd x 20.
+(A primary partition can be made into an extended partition, which can hold
+4 logical partitions).
+By default, only the devices for 4 logical partitions are made.  The
+others can be made by uncommenting them.
+.IP
+Drives hda and hdb are the two on the first controller.  If using the new
+IDE driver (rather than the old HD driver), then hdc and hdd are the two
+drives on the secondary controller.  These devices can also be used to
+acess IDE CDROMs if using the new IDE driver.
+.TP
+.I xd[a-d] 
+XT hard disks.  Partitions are the same as IDE disks.
+.TP
+.I sd[a-z], sd[a-c][a-z], sdd[a-x]
+SCSI hard disks.  The partitions are similar to the IDE disks, but there
+is a limit of 11 logical partitions
+.RI (sd x 5
+through
+.RI sd x 15).
+This is to allow there to be 128 SCSI disks.
+.TP
+.I loop
+Loopback disk devices.  These allow you to use a regular file as a
+block device.  This means that images of filesystems can be mounted,
+and used as normal.  This creates 16 devices loop0 through loop15.
+.TP
+.B Tape Devices
+.TP
+.I st[0-7]
+SCSI tapes.  This creates the rewinding tape device
+.BI st x
+and the non-rewinding tape device
+.BI nst x .
+.TP
+.I qic
+QIC-80 tapes.  The devices created are
+.BR rmt8 ,
+.BR rmt16 ,
+.BR tape-d ,
+and
+.BR tape-reset .
+.TP
+.I ftape
+Floppy driver tapes (QIC-117).  There are 4 methods of access depending on
+the floppy tape drive.  For each of access methods 0, 1, 2 and 3, the
+devices
+.BI rft x
+(rewinding) and
+.BI nrft x
+(non-rewinding) are created.  For compatability, devices
+.B ftape
+and
+.B nftape
+are symlinks to
+.B rft0
+and
+.B nrft0
+respectively.
+.TP
+.B CDROM Devices
+.TP
+.I scd[0-7]
+SCSI CD players.
+.TP
+.I sonycd
+Sony CDU-31A CD player.
+.TP
+.I mcd
+Mitsumi CD player.
+.TP
+.I cdu535
+Sony CDU-535 CD player.
+.TP
+.I lmscd
+LMS/Philips CD player.
+.TP
+.I sbpcd{,1,2,3}
+Sound Blaster CD player.  The kernel is capable of supporting 16 CDROMs,
+each of which is accessed as
+.BR sbpcd[0-9a-f] .
+These are assigned in groups of 4 to each controller.
+.B sbpcd
+is a symlink to
+.BR sbpcd0 .
+.\" .TP
+.\" .I idecd
+.\" NEC CDR-260 (note: this will probably be obsoleted by the new IDE driver).
+.TP
+.B Scanner
+.TP
+.I logiscan
+Logitech ScanMan32 & ScanMan 256.
+.TP
+.I m105scan
+Mustek M105 Handscanner.
+.TP
+.I ac4096
+A4Tek Color Handscanner.
+.TP
+.B Audio
+.TP
+.I sound
+This creates the audio devices used by the sound driver.  These include
+.BR mixer ,
+.BR sequencer ,
+.BR dsp ,
+and
+.BR audio .
+.TP
+.B Miscellaneous
+.TP
+.I sg
+Generic SCSI devices.  The devices created are 
+.B sga
+through
+.B sgh
+and
+.B sg0
+through 
+.BR sg7 .
+These allow arbitary commands to be sent to any SCSI device.  This allows for
+querying information about the device, or controlling SCSI devices that
+are not one of disk, tape or CDROM (e.g. scanner, CD-R, CD-RW).
+.TP
+.I fd
+To allow an arbitary program to be fed input from file descriptor
+.IR x ,
+use
+.BI /dev/fd/ x
+as the file name.  This also creates 
+.BR /dev/stdin ,
+.BR /dev/stdout ,
+and
+.BR /dev/stderr .
+(Note, these are just symlinks into /proc/self/fd).
+.TP
+.I ibcs2
+Devices (and symlinks) needed by the IBCS2 emulation.
+.TP
+.I apm
+Devices for power management.
+.TP
+.B "Network Devices"
+Linux used to have devices in /dev for controlling network devices, but
+that is no longer the case.  To see what network devices are known by the
+kernel, look in /proc/net/dev.
+.TP
+.B "Other Devices"
+Note that the list of devices above is not exhaustive.  MAKEDEV can create
+more devices nodes.  Its aim is to be able to create everything listed in the
+\fBdevices.txt\fR file distributed with Linux 2.4.
+
+.SH CONFIGURATION
+MAKEDEV doesn't actually know anything about devices.  It reads all of the
+information from files stored in \fB/etc/makedev.d\fR.  MAKEDEV will read any
+and all files in the subdirectory, processing lines in them like so:
+.TP
+.B devices
+.B [b|c]
+mode owner group major minor inc count fmt [base]
+.br
+\fIcount\fR devices will be created, with permissions set to \fImode\fR and
+owned by \fIowner\fR and \fIgroup\fR.  The first device will be named \fIfmt\fR,
+and additional devices will be created if \fIcount\fR is larger than 1.
+If \fIfmt\fR contains a C-style formatting string, it will be filled with the
+sum of \fIbase\fR and zero.  Subsequent devices will be filled with the sum of
+\fIbase\fR and \fIn\fR * \fIinc\fR, where \fIn\fR is the order this device is
+being created in.  If the format string did not already include a format
+specifier, a "%d" will automatically be appended to it to make this work.
+.TP
+.B symbolic links
+.B l
+linkname target
+.br
+A symbolic link pointing to \fItarget\fR named \fIlinkname\fR will be created.
+.TP
+.B aliases
+.B a
+alias value
+.br
+Any commands that create devices for \fIalias\fR will also include devices that
+would be crated for \fIvalue\fR.
+
+.SH "SEE ALSO"
+Linux Allocated Devices, maintained by H.\ Peter Anvin,
+<Peter.Anvin at linux.org>.
+.SH BUGS
+Let's hope not.  If we're lucky, any problems we'll find will be confined to
+the configuration files, which were written by examining the devices.txt file.
+.SH AUTHOR
+Nalin Dahyabhai, based largely on work done by
+Nick Holloway
+and
+Michael K. Johnson.
diff --git a/raw/man8/badblocks.8 b/raw/man8/badblocks.8
new file mode 100644
index 0000000..c33d3d8
--- /dev/null
+++ b/raw/man8/badblocks.8
@@ -0,0 +1,202 @@
+.\" -*- nroff -*-
+.TH BADBLOCKS 8 "July 2003" "E2fsprogs version 1.34"
+.SH NAME
+badblocks \- search a device for bad blocks
+.SH SYNOPSIS
+.B badblocks
+[
+.B \-svwnf
+]
+[
+.B \-b
+.I block-size
+]
+[
+.B \-c
+.I blocks_at_once
+]
+[
+.B \-i
+.I input_file
+]
+[
+.B \-o
+.I output_file
+]
+[
+.B \-p
+.I num_passes
+]
+[
+.B \-t
+.I test_pattern
+]
+.I device
+[
+.I last-block
+] [
+.I start-block 
+]
+.SH DESCRIPTION
+.B badblocks
+is used to search for bad blocks on a device (usually a disk partition).
+.I device
+is the special file corresponding to the device (e.g
+.IR /dev/hdc1 ).
+.I last-block
+is the last block to be checked; if it is not specified, the last block
+on the device is used as a default.
+.I start-block
+is an optional parameter specifying the starting block number
+for the test, which allows the testing to start in the middle of the
+disk.  If it is not specified the first block on the disk is used as a default.
+.PP
+.B Important note:
+If the output of 
+.B badblocks
+is going to be fed to the
+.B e2fsck
+or 
+.B mke2fs
+programs, it is important that the block size is properly specified,
+since the block numbers which are generated are very dependent on the 
+block size in use.   For this reason, it is strongly recommended that
+users 
+.B not
+run 
+.B badblocks 
+directly, but rather use the 
+.B \-c
+option of the
+.B e2fsck
+and 
+.B mke2fs
+programs.
+.SH OPTIONS
+.TP
+.BI \-b " block-size"
+Specify the size of blocks in bytes.
+.TP
+.BI \-c " number of blocks"
+is the number of blocks which are tested at a time.  The default is 16.
+Increasing this number will increase the efficiency of
+.B badblocks
+but also will increase its memory usage.
+.B Badblocks
+needs memory proportional to the number of blocks tested at once, in
+read-only mode, proportional to twice that number in read-write mode,
+and proportional to three times that number in non-destructive read-write
+mode.  If you set the number-of-blocks parameter to too high a value,
+.B badblocks
+will exit almost immediately with an out-of-memory error "while allocating
+buffers".  If you set it too low, however, for a non-destructive-write-mode
+test, then it's possble for questionable blocks on an unreliable
+hard drive to be hidden by the effects of the hard disk track buffer.
+.TP
+.B \-f
+Normally, badblocks will refuse to do a read/write or a non-destructive
+test on a device which is mounted, since either can cause the system to
+potentially crash and/or damage the filesystem even if it is mounted
+read-only.  This can be overriden using the
+.B \-f
+flag, but should almost never be used --- if you think you're smarter
+than the 
+.B badblocks
+program, you almost certainly aren't.  The only time when this option 
+might be safe to use is if the /etc/mtab file is incorrect, and the device
+really isn't mounted.
+.TP
+.BI \-i " input_file"
+Read a list of already existing known bad blocks.
+.B Badblocks
+will skip testing these blocks since they are known to be bad.  If
+.I input_file
+is specified as "-", the list will be read from the standard input.
+Blocks listed in this list will be omitted from the list of
+.I new
+bad blocks produced on the standard output or in the output file.
+The
+.B \-b
+option of
+.BR dumpe2fs (8)
+can be used to retrieve the list of blocks currently marked bad on
+an existing filesystem, in a format suitable for use with this option.
+.TP
+.BI \-o " output_file"
+Write the list of bad blocks to the specified file.  Without this option,
+.B badblocks
+displays the list on its standard output.  The format of this file is suitable
+for use by the
+.
+.B \-l
+option in 
+.BR e2fsck (8)
+or
+.BR mke2fs (8).
+.TP
+.BI \-p " num_passes"
+Repeat scanning the disk until there are no new blocks discovered in
+num_passes consecutive scans of the disk.
+Default is 0, meaning
+.B badblocks
+will exit after the first pass.
+.TP
+.BI \-t " test_pattern"
+Specify a test pattern to be read (and written) to disk blocks.   The
+.I test_pattern
+may either be a numeric value between 0 and ULONG_MAX-1 inclusive, or the word 
+"random", which specifies that the block should be filled with a random
+bit pattern.
+For read/write (\fB-w\fR) and non-destructive (\fB-n\fR) modes,
+one or more test patterns may be specified by specifiying the
+.B -t
+option for each test pattern desired.  For
+read-only mode only a single pattern may be specified and it may not be
+"random".  Read-only testing with a pattern assumes that the
+specified pattern has previously been written to the disk - if not, large
+numbers of blocks will fail verification.  
+If multiple patterns
+are specified then all blocks will be tested with an one pattern 
+before proceeding to the next pattern.
+.TP
+.B \-n
+Use non-destructive read-write mode.  By default only a non-destructive 
+read-only test is done.  This option must not be combined with the 
+.B \-w
+option, as they are mutually exclusive.
+.TP
+.B \-s
+Show the progress of the scan by writing out the block numbers as they
+are checked.
+.TP
+.B \-v
+Verbose mode.
+.TP
+.B \-w
+Use write-mode test. With this option,
+.B badblocks
+scans for bad blocks by writing some patterns (0xaa, 0x55, 0xff, 0x00) on
+every block of the device, reading every block and comparing the contents.  
+This option may not be combined with the 
+.B \-n 
+option, as they are mutually exclusive.
+.SH WARNING
+Never use the
+.B \-w
+option on an device containing an existing file system.
+This option erases data!  If you want to do write-mode testing on
+an existing file system, use the
+.B \-n
+option instead.  It is slower, but it will preserve your data.  
+.SH AUTHOR
+.B badblocks
+was written by Remy Card <Remy.Card at linux.org>.  Current maintainer is
+Theodore Ts'o <tytso at alum.mit.edu>.  Non-destructive read/write test
+implemented by David Beattie <dbeattie at softhome.net>.
+.SH AVAILABILITY
+.B badblocks
+is part of the e2fsprogs package and is available from 
+http://e2fsprogs.sourceforge.net.
+.SH SEE ALSO
+.BR e2fsck (8),
+.BR mke2fs (8)
diff --git a/raw/man8/blockdev.8 b/raw/man8/blockdev.8
new file mode 100644
index 0000000..bde6426
--- /dev/null
+++ b/raw/man8/blockdev.8
@@ -0,0 +1,55 @@
+.\" -*- nroff -*-
+.\" Copyright 1998 Andries E. Brouwer (aeb at cwi.nl)
+.\"
+.\" May be distributed under the GNU General Public License
+.TH BLOCKDEV 8 "May 2000" ""
+.SH NAME
+blockdev \- call block device ioctls from the command line
+.SH SYNOPSIS
+.B blockdev
+.RI [ options ]
+.I commands devices
+.SH DESCRIPTION
+The utility
+.B blockdev
+allows one to call block device ioctls from the command line.
+.SH OPTIONS
+.TP
+.B \-V
+Print version and exit.
+.TP
+.B \-q
+Be quiet.
+.TP
+.B \-v
+Be verbose.
+.SH COMMANDS
+.TP
+.B \--setro
+Set read-only.
+.TP
+.B \--setrw
+Set read-write.
+.TP
+.B \--getro
+Get read-only. Print 1 if the device is read-only, 0 otherwise.
+.TP
+.B \--getss
+Print sectorsize in bytes - usually 512.
+.TP
+.B \--getsize
+Print device capacity (in 512-byte sectors).
+.TP
+.BI \--setra " N"
+Set readahead to
+.I N
+512-byte sectors.
+.TP
+.B \--getra
+Print readahead (in 512-byte sectors).
+.TP
+.B \--flushbufs
+Flush buffers.
+.TP
+.B \--rereadpt
+Reread partition table.
diff --git a/raw/man8/chat.8 b/raw/man8/chat.8
new file mode 100644
index 0000000..5498904
--- /dev/null
+++ b/raw/man8/chat.8
@@ -0,0 +1,514 @@
+.\" -*- nroff -*-
+.\" manual page [] for chat 1.8
+.\" SH section heading
+.\" SS subsection heading
+.\" LP paragraph
+.\" IP indented paragraph
+.\" TP hanging label
+.TH CHAT 8 "22 May 1999" "Chat Version 1.22"
+.SH NAME
+chat \- Automated conversational script with a modem
+.SH SYNOPSIS
+.B chat
+[
+.I options
+]
+.I script
+.SH DESCRIPTION
+.LP
+The \fIchat\fR program defines a conversational exchange between the
+computer and the modem. Its primary purpose is to establish the
+connection between the Point-to-Point Protocol Daemon (\fIpppd\fR) and
+the remote's \fIpppd\fR process.
+.SH OPTIONS
+.TP
+.B -f \fI<chat file>
+Read the chat script from the chat \fIfile\fR. The use of this option
+is mutually exclusive with the chat script parameters. The user must
+have read access to the file. Multiple lines are permitted in the
+file. Space or horizontal tab characters should be used to separate
+the strings.
+.TP
+.B -t \fI<timeout>
+Set the timeout for the expected string to be received. If the string
+is not received within the time limit then the reply string is not
+sent. An alternate reply may be sent or the script will fail if there
+is no alternate reply string. A failed script will cause the
+\fIchat\fR program to terminate with a non-zero error code.
+.TP
+.B -r \fI<report file>
+Set the file for output of the report strings. If you use the keyword
+\fIREPORT\fR, the resulting strings are written to this file. If this
+option is not used and you still use \fIREPORT\fR keywords, the
+\fIstderr\fR file is used for the report strings.
+.TP
+.B -e
+Start with the echo option turned on. Echoing may also be turned on
+or off at specific points in the chat script by using the \fIECHO\fR
+keyword. When echoing is enabled, all output from the modem is echoed
+to \fIstderr\fR.
+.TP
+.B -E
+Enables environment variable substituion within chat scripts using the
+standard \fI$xxx\fR syntax.
+.TP
+.B -v
+Request that the \fIchat\fR script be executed in a verbose mode. The
+\fIchat\fR program will then log the execution state of the chat
+script as well as all text received from the modem and the output
+strings sent to the modem.  The default is to log through the SYSLOG;
+the logging method may be altered with the -S and -s flags.
+.TP
+.B -V
+Request that the \fIchat\fR script be executed in a stderr verbose
+mode. The \fIchat\fR program will then log all text received from the
+modem and the output strings sent to the modem to the stderr device. This
+device is usually the local console at the station running the chat or
+pppd program.
+.TP
+.B -s
+Use stderr.  All log messages from '-v' and all error messages will be
+sent to stderr.
+.TP
+.B -S
+Do not use the SYSLOG.  By default, error messages are sent to the
+SYSLOG.  The use of -S will prevent both log messages from '-v' and
+error messages from being sent to the SYSLOG.
+.TP
+.B -T \fI<phone number>
+Pass in an arbitary string, usually a phone number, that will be
+substituted for the \\T substitution metacharacter in a send string.
+.TP
+.B -U \fI<phone number 2>
+Pass in a second string, usually a phone number, that will be
+substituted for the \\U substitution metacharacter in a send string.
+This is useful when dialing an ISDN terminal adapter that requires two 
+numbers.
+.TP
+.B script
+If the script is not specified in a file with the \fI-f\fR option then
+the script is included as parameters to the \fIchat\fR program.
+.SH CHAT SCRIPT
+.LP
+The \fIchat\fR script defines the communications.
+.LP
+A script consists of one or more "expect-send" pairs of strings,
+separated by spaces, with an optional "subexpect-subsend" string pair,
+separated by a dash as in the following example:
+.IP
+ogin:-BREAK-ogin: ppp ssword: hello2u2
+.LP
+This line indicates that the \fIchat\fR program should expect the string
+"ogin:". If it fails to receive a login prompt within the time interval
+allotted, it is to send a break sequence to the remote and then expect the
+string "ogin:". If the first "ogin:" is received then the break sequence is
+not generated.
+.LP
+Once it received the login prompt the \fIchat\fR program will send the
+string ppp and then expect the prompt "ssword:". When it receives the
+prompt for the password, it will send the password hello2u2.
+.LP
+A carriage return is normally sent following the reply string. It is not
+expected in the "expect" string unless it is specifically requested by using
+the \\r character sequence.
+.LP
+The expect sequence should contain only what is needed to identify the
+string. Since it is normally stored on a disk file, it should not contain
+variable information. It is generally not acceptable to look for time
+strings, network identification strings, or other variable pieces of data as
+an expect string.
+.LP
+To help correct for characters which may be corrupted during the initial
+sequence, look for the string "ogin:" rather than "login:". It is possible
+that the leading "l" character may be received in error and you may never
+find the string even though it was sent by the system. For this reason,
+scripts look for "ogin:" rather than "login:" and "ssword:" rather than
+"password:".
+.LP
+A very simple script might look like this:
+.IP
+ogin: ppp ssword: hello2u2
+.LP
+In other words, expect ....ogin:, send ppp, expect ...ssword:, send hello2u2.
+.LP
+In actual practice, simple scripts are rare. At the vary least, you
+should include sub-expect sequences should the original string not be
+received. For example, consider the following script:
+.IP
+ogin:--ogin: ppp ssword: hello2u2
+.LP
+This would be a better script than the simple one used earlier. This would look
+for the same login: prompt, however, if one was not received, a single
+return sequence is sent and then it will look for login: again. Should line
+noise obscure the first login prompt then sending the empty line will
+usually generate a login prompt again.
+.SH COMMENTS
+Comments can be embedded in the chat script. A comment is a line which
+starts with the \fB#\fR (hash) character in column 1. Such comment
+lines are just ignored by the chat program. If a '#' character is to
+be expected as the first character of the expect sequence, you should
+quote the expect string.
+If you want to wait for a prompt that starts with a # (hash)
+character, you would have to write something like this:
+.IP
+# Now wait for the prompt and send logout string
+.br
+\'# ' logout
+.LP
+
+.SH SENDING DATA FROM A FILE
+If the string to send starts with an at sign (@), the rest of the
+string is taken to be the name of a file to read to get the string to
+send.  If the last character of the data read is a newline, it is
+removed.  The file can be a named pipe (or fifo) instead of a regular
+file.  This provides a way for \fBchat\fR to communicate with another
+program, for example, a program to prompt the user and receive a
+password typed in.
+.LP
+
+.SH ABORT STRINGS
+Many modems will report the status of the call as a string. These
+strings may be \fBCONNECTED\fR or \fBNO CARRIER\fR or \fBBUSY\fR. It
+is often desirable to terminate the script should the modem fail to
+connect to the remote. The difficulty is that a script would not know
+exactly which modem string it may receive. On one attempt, it may
+receive \fBBUSY\fR while the next time it may receive \fBNO CARRIER\fR.
+.LP
+These "abort" strings may be specified in the script using the \fIABORT\fR
+sequence. It is written in the script as in the following example:
+.IP
+ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT
+.LP
+This sequence will expect nothing; and then send the string ATZ. The
+expected response to this is the string \fIOK\fR. When it receives \fIOK\fR,
+the string ATDT5551212 to dial the telephone. The expected string is
+\fICONNECT\fR. If the string \fICONNECT\fR is received the remainder of the
+script is executed. However, should the modem find a busy telephone, it will
+send the string \fIBUSY\fR. This will cause the string to match the abort
+character sequence. The script will then fail because it found a match to
+the abort string. If it received the string \fINO CARRIER\fR, it will abort
+for the same reason. Either string may be received. Either string will
+terminate the \fIchat\fR script.
+.SH CLR_ABORT STRINGS
+This sequence allows for clearing previously set \fBABORT\fR strings.
+\fBABORT\fR strings are kept in an array of a pre-determined size (at
+compilation time); \fBCLR_ABORT\fR will reclaim the space for cleared
+entries so that new strings can use that space.
+.SH SAY STRINGS
+The \fBSAY\fR directive allows the script to send strings to the user
+at the terminal via standard error.  If \fBchat\fR is being run by
+pppd, and pppd is running as a daemon (detached from its controlling
+terminal), standard error will normally be redirected to the file
+/etc/ppp/connect-errors.
+.LP
+\fBSAY\fR strings must be enclosed in single or double quotes. If
+carriage return and line feed are needed in the string to be output,
+you must explicitely add them to your string.
+.LP
+The SAY strings could be used to give progress messages in sections of
+the script where you want to have 'ECHO OFF' but still let the user
+know what is happening.  An example is:
+.IP
+ABORT BUSY 
+.br
+ECHO OFF 
+.br
+SAY "Dialling your ISP...\\n" 
+.br
+\'' ATDT5551212 
+.br
+TIMEOUT 120
+.br
+SAY "Waiting up to 2 minutes for connection ... "
+.br
+CONNECT '' 
+.br
+SAY "Connected, now logging in ...\n"
+.br
+ogin: account
+.br
+ssword: pass
+.br
+$ \c
+SAY "Logged in OK ...\n"
+\fIetc ...\fR
+.LP
+This sequence will only present the SAY strings to the user and all
+the details of the script will remain hidden. For example, if the
+above script works, the user will see:
+.IP
+Dialling your ISP...
+.br
+Waiting up to 2 minutes for connection ... Connected, now logging in ...
+.br
+Logged in OK ...
+.LP
+
+.SH REPORT STRINGS
+A \fBreport\fR string is similar to the ABORT string. The difference
+is that the strings, and all characters to the next control character
+such as a carriage return, are written to the report file.
+.LP
+The report strings may be used to isolate the transmission rate of the
+modem's connect string and return the value to the chat user. The
+analysis of the report string logic occurs in conjunction with the
+other string processing such as looking for the expect string. The use
+of the same string for a report and abort sequence is probably not
+very useful, however, it is possible.
+.LP
+The report strings to no change the completion code of the program.
+.LP
+These "report" strings may be specified in the script using the \fIREPORT\fR
+sequence. It is written in the script as in the following example:
+.IP
+REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account
+.LP
+This sequence will expect nothing; and then send the string
+ATDT5551212 to dial the telephone. The expected string is
+\fICONNECT\fR. If the string \fICONNECT\fR is received the remainder
+of the script is executed. In addition the program will write to the
+expect-file the string "CONNECT" plus any characters which follow it
+such as the connection rate.
+.SH CLR_REPORT STRINGS
+This sequence allows for clearing previously set \fBREPORT\fR strings.
+\fBREPORT\fR strings are kept in an array of a pre-determined size (at
+compilation time); \fBCLR_REPORT\fR will reclaim the space for cleared
+entries so that new strings can use that space.
+.SH ECHO
+The echo options controls whether the output from the modem is echoed
+to \fIstderr\fR. This option may be set with the \fI-e\fR option, but
+it can also be controlled by the \fIECHO\fR keyword. The "expect-send"
+pair \fIECHO\fR \fION\fR enables echoing, and \fIECHO\fR \fIOFF\fR
+disables it. With this keyword you can select which parts of the
+conversation should be visible. For instance, with the following
+script:
+.IP
+ABORT   'BUSY'
+.br
+ABORT   'NO CARRIER'
+.br
+''      ATZ
+.br
+OK\\r\\n  ATD1234567
+.br
+\\r\\n    \\c
+.br
+ECHO    ON
+.br
+CONNECT \\c
+.br
+ogin:   account
+.LP
+all output resulting from modem configuration and dialing is not visible,
+but starting with the \fICONNECT\fR (or \fIBUSY\fR) message, everything
+will be echoed.
+.SH HANGUP
+The HANGUP options control whether a modem hangup should be considered
+as an error or not.  This option is useful in scripts for dialling
+systems which will hang up and call your system back.  The HANGUP
+options can be \fBON\fR or \fBOFF\fR.
+.br
+When HANGUP is set OFF and the modem hangs up (e.g., after the first
+stage of logging in to a callback system), \fBchat\fR will continue
+running the script (e.g., waiting for the incoming call and second
+stage login prompt). As soon as the incoming call is connected, you
+should use the \fBHANGUP ON\fR directive to reinstall normal hang up
+signal behavior.  Here is an (simple) example script:
+.IP
+ABORT   'BUSY'
+.br
+''      ATZ
+.br
+OK\\r\\n  ATD1234567
+.br
+\\r\\n    \\c
+.br
+CONNECT \\c
+.br
+\'Callback login:' call_back_ID
+.br
+HANGUP OFF
+.br
+ABORT "Bad Login"
+.br
+\'Callback Password:' Call_back_password
+.br
+TIMEOUT 120
+.br
+CONNECT \\c
+.br
+HANGUP ON
+.br
+ABORT "NO CARRIER"
+.br
+ogin:--BREAK--ogin: real_account
+.br
+\fIetc ...\fR
+.LP
+.SH TIMEOUT
+The initial timeout value is 45 seconds. This may be changed using the \fB-t\fR
+parameter.
+.LP
+To change the timeout value for the next expect string, the following
+example may be used:
+.IP
+ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2
+.LP
+This will change the timeout to 10 seconds when it expects the login:
+prompt. The timeout is then changed to 5 seconds when it looks for the
+password prompt.
+.LP
+The timeout, once changed, remains in effect until it is changed again.
+.SH SENDING EOT
+The special reply string of \fIEOT\fR indicates that the chat program
+should send an EOT character to the remote. This is normally the
+End-of-file character sequence. A return character is not sent
+following the EOT.
+.PR
+The EOT sequence may be embedded into the send string using the
+sequence \fI^D\fR.
+.SH GENERATING BREAK
+The special reply string of \fIBREAK\fR will cause a break condition
+to be sent. The break is a special signal on the transmitter. The
+normal processing on the receiver is to change the transmission rate.
+It may be used to cycle through the available transmission rates on
+the remote until you are able to receive a valid login prompt.
+.PR
+The break sequence may be embedded into the send string using the
+\fI\\K\fR sequence.
+.SH ESCAPE SEQUENCES
+The expect and reply strings may contain escape sequences. All of the
+sequences are legal in the reply string. Many are legal in the expect.
+Those which are not valid in the expect sequence are so indicated.
+.TP
+.B ''
+Expects or sends a null string. If you send a null string then it will still
+send the return character. This sequence may either be a pair of apostrophe
+or quote characters.
+.TP
+.B \\\\b
+represents a backspace character.
+.TP
+.B \\\\c
+Suppresses the newline at the end of the reply string. This is the only
+method to send a string without a trailing return character. It must
+be at the end of the send string. For example,
+the sequence hello\\c will simply send the characters h, e, l, l, o.
+.I (not valid in expect.)
+.TP
+.B \\\\d
+Delay for one second. The program uses sleep(1) which will delay to a
+maximum of one second.
+.I (not valid in expect.)
+.TP
+.B \\\\K
+Insert a BREAK
+.I (not valid in expect.)
+.TP
+.B \\\\n
+Send a newline or linefeed character.
+.TP
+.B \\\\N
+Send a null character. The same sequence may be represented by \\0.
+.I (not valid in expect.)
+.TP
+.B \\\\p
+Pause for a fraction of a second. The delay is 1/10th of a second.
+.I (not valid in expect.)
+.TP
+.B \\\\q
+Suppress writing the string to the SYSLOG file. The string ?????? is
+written to the log in its place.
+.I (not valid in expect.)
+.TP
+.B \\\\r
+Send or expect a carriage return.
+.TP
+.B \\\\s
+Represents a space character in the string. This may be used when it
+is not desirable to quote the strings which contains spaces. The
+sequence 'HI TIM' and HI\\sTIM are the same.
+.TP
+.B \\\\t
+Send or expect a tab character.
+.TP
+.B \\\\T
+Send the phone number string as specified with the \fI-T\fR option
+.I (not valid in expect.)
+.TP
+.B \\\\U
+Send the phone number 2 string as specified with the \fI-U\fR option
+.I (not valid in expect.)
+.TP
+.B \\\\\\\\
+Send or expect a backslash character.
+.TP
+.B \\\\ddd
+Collapse the octal digits (ddd) into a single ASCII character and send that
+character.
+.I (some characters are not valid in expect.)
+.TP
+.B \^^C
+Substitute the sequence with the control character represented by C.
+For example, the character DC1 (17) is shown as \^^Q.
+.I (some characters are not valid in expect.)
+.SH ENVIRONMENT VARIABLES
+Environment variables are available within chat scripts, if  the \fI-E\fR
+option was specified in the command line. The metacharacter \fI$\fR is used
+to introduce the name of the environment variable to substitute. If the
+substition fails, because the requested environment variable is not set,
+\fInothing\fR is replaced for the variable.
+.SH TERMINATION CODES
+The \fIchat\fR program will terminate with the following completion
+codes.
+.TP
+.B 0
+The normal termination of the program. This indicates that the script
+was executed without error to the normal conclusion.
+.TP
+.B 1
+One or more of the parameters are invalid or an expect string was too
+large for the internal buffers. This indicates that the program as not
+properly executed.
+.TP
+.B 2
+An error occurred during the execution of the program. This may be due
+to a read or write operation failing for some reason or chat receiving
+a signal such as SIGINT.
+.TP
+.B 3
+A timeout event occurred when there was an \fIexpect\fR string without
+having a "-subsend" string. This may mean that you did not program the
+script correctly for the condition or that some unexpected event has
+occurred and the expected string could not be found.
+.TP
+.B 4
+The first string marked as an \fIABORT\fR condition occurred.
+.TP
+.B 5
+The second string marked as an \fIABORT\fR condition occurred.
+.TP
+.B 6
+The third string marked as an \fIABORT\fR condition occurred.
+.TP
+.B 7
+The fourth string marked as an \fIABORT\fR condition occurred.
+.TP
+.B ...
+The other termination codes are also strings marked as an \fIABORT\fR
+condition.
+.LP
+Using the termination code, it is possible to determine which event
+terminated the script. It is possible to decide if the string "BUSY"
+was received from the modem as opposed to "NO DIAL TONE". While the
+first event may be retried, the second will probably have little
+chance of succeeding during a retry.
+.SH SEE ALSO
+Additional information about \fIchat\fR scripts may be found with UUCP
+documentation. The \fIchat\fR script was taken from the ideas proposed
+by the scripts used by the \fIuucico\fR program.
+.LP
+uucico(1), uucp(1)
+.SH COPYRIGHT
+The \fIchat\fR program is in public domain. This is not the GNU public
+license. If it breaks then you get to keep both pieces.
diff --git a/raw/man8/chpasswd.8 b/raw/man8/chpasswd.8
new file mode 100644
index 0000000..eda8b29
--- /dev/null
+++ b/raw/man8/chpasswd.8
@@ -0,0 +1,59 @@
+.\" Copyright 1991, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH CHPASSWD 8
+.SH NAME
+\fBchpasswd\fR - update password file in batch
+.SH SYNOPSIS
+\fBchpasswd\fR [\fB-e\fR]
+.SH DESCRIPTION
+\fBchpasswd\fR reads a file of user name and password pairs
+from standard input and uses this information
+to update a group of existing users. Without the -e switch, the
+passwords are expected to be cleartext. With the -e switch, the
+passwords are expected to be in encrypted form.
+Each line is of the format
+.sp 1
+	  \fIuser_name\fR:\fIpassword\fR
+.sp 1
+The named user must exist.
+The supplied password will be encrypted as necessary, and the password age
+updated, if present.
+.PP
+This command is intended to be used in a large system environment where
+many accounts are created at a single time.
+.SH CAVEATS
+.\" The \fBmkpasswd\fR command must be executed afterwards to update the
+.\" DBM password files.
+The input file must be protected if it contains unencrypted passwords.
+.\" This command may be discarded in favor of the newusers(8) command.
+.SH SEE ALSO
+.\" mkpasswd(8), passwd(1), useradd(1)
+.BR passwd (1),
+.BR newusers (8),
+.BR useradd (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/convertquota.8 b/raw/man8/convertquota.8
new file mode 100644
index 0000000..ea5b803
--- /dev/null
+++ b/raw/man8/convertquota.8
@@ -0,0 +1,64 @@
+.TH CONVERTQUOTA 8 "Fri Aug 20 1999"
+.UC 4
+.SH NAME
+convertquota \- convert quota from old file format to new one
+.SH SYNOPSIS
+.B convertquota
+[
+.B -ug
+] [
+.B -e
+|
+.B -f
+]
+.I filesystem
+.SH DESCRIPTION
+.B convertquota
+converts old quota files
+.BR quota.user
+and
+.BR quota.group
+to files
+.BR aquota.user
+and
+.BR aquota.group
+in new format currently used by 2.4.0-ac? and newer or by Red Hat Linux 2.4 kernels on
+.IR filesystem .
+.PP
+New file format allows using quotas for 32-bit uids / gids, setting quotas for root,
+accounting used space in bytes (and so allowing use of quotas in ReiserFS) and it
+is also architecture independent. This format introduces Radix Tree (a simple form of tree
+structure) to quota file.
+.SH OPTIONS
+.TP
+.B -u
+convert user quota file. This is the default.
+.TP
+.B -g
+convert group quota file.
+.TP
+.B -f
+convert from old file format to new one. This is the default.
+.TP
+.B -e
+convert new file format from big endian to little endian.
+.TP
+.B -V
+print version information.
+.SH FILES
+.TP 20
+.B aquota.user
+new user quota file
+.TP
+.B aquota.group
+new group quota file
+.SH "SEE ALSO"
+.BR quota (1),
+.BR setquota (8),
+.BR edquota (8),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8)
+.SH AUTHOR
+Jan Kara \<jack at suse.cz\>
+
diff --git a/raw/man8/cron.8 b/raw/man8/cron.8
new file mode 100644
index 0000000..f73c51c
--- /dev/null
+++ b/raw/man8/cron.8
@@ -0,0 +1,62 @@
+.\"/* Copyright 1988,1990,1993 by Paul Vixie
+.\" * All rights reserved
+.\" *
+.\" * Distribute freely, except: don't remove my name from the source or
+.\" * documentation (don't take credit for my work), mark your changes (don't
+.\" * get me blamed for your possible bugs), don't alter or remove this
+.\" * notice.  May be sold if buildable source is provided to buyer.  No
+.\" * warrantee of any kind, express or implied, is included with this
+.\" * software; use at your own risk, responsibility for damages (if any) to
+.\" * anyone resulting from the use of this software rests entirely with the
+.\" * user.
+.\" *
+.\" * Send bug reports, bug fixes, enhancements, requests, flames, etc., and
+.\" * I'll try to keep a version up to date.  I can be reached as follows:
+.\" * Paul Vixie          <paul at vix.com>          uunet!decwrl!vixie!paul
+.\" */
+.\" 
+.\" $Id: cron.8,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.\" 
+.TH CRON 8 "20 December 1993"
+.UC 4
+.SH NAME
+cron \- daemon to execute scheduled commands (Vixie Cron)
+.SH SYNOPSIS
+cron
+.SH DESCRIPTION
+.I Cron
+should be started from /etc/rc or /etc/rc.local.  It will return immediately,
+so you don't need to start it with '&'.
+.PP
+.I Cron
+searches /var/spool/cron for crontab files which are named after accounts in
+/etc/passwd; crontabs found are loaded into memory.
+.I Cron
+also searches for /etc/crontab and the files in the /etc/cron.d/ directory,
+which are in a different format (see
+.IR crontab(5)).
+.I Cron
+then wakes up every minute, examining all stored crontabs, checking each
+command to see if it should be run in the current minute.  When executing
+commands, any output is mailed to the owner of the crontab (or to the user
+named in the MAILTO environment variable in the crontab, if such exists).
+.PP
+Additionally,
+.I cron
+checks each minute to see if its spool directory's modtime (or the modtime
+on
+.IR /etc/crontab)
+has changed, and if it has,
+.I cron
+will then examine the modtime on all crontabs and reload those which have
+changed.  Thus
+.I cron
+need not be restarted whenever a crontab file is modified.  Note that the
+.IR Crontab (1)
+command updates the modtime of the spool directory whenever it changes a
+crontab.
+.SH "SEE ALSO"
+crontab(1), crontab(5)
+.SH AUTHOR
+.nf
+Paul Vixie <paul at vix.com>
diff --git a/raw/man8/dmesg.8 b/raw/man8/dmesg.8
new file mode 100644
index 0000000..8064b1d
--- /dev/null
+++ b/raw/man8/dmesg.8
@@ -0,0 +1,58 @@
+.\" Copyright 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.TH DMESG 8 
+.SH NAME
+dmesg \- print or control the kernel ring buffer
+.SH SYNOPSIS
+.BI "dmesg [ \-c ] [ \-n " level " ] [ \-s " bufsize " ]"
+.SH DESCRIPTION
+.B dmesg
+is used to examine or control the kernel ring buffer.
+
+The program helps users to print out their bootup messages.  Instead of
+copying the messages by hand, the user need only:
+.RS
+dmesg > boot.messages
+.RE
+and mail the
+.I boot.messages
+file to whoever can debug their problem.
+.SH OPTIONS
+.TP
+.B \-c
+Clear the ring buffer contents after printing.
+.TP
+.BI \-s bufsize
+Use a buffer of size
+.I bufsize
+to query the kernel ring buffer.  This is 16392 by default.
+(The default kernel syslog buffer size was 4096
+at first, 8192 since 1.3.54, 16384 since 2.1.113.)
+If you have set the kernel buffer to be larger than the default
+then this option can be used to view the entire buffer.
+.TP
+.BI \-n level
+Set the
+.I level
+at which logging of messages is done to the console.  For example,
+.B \-n 1
+prevents all messages, expect panic messages, from appearing on the
+console.  All levels of messages are still written to
+.IR /proc/kmsg ,
+so
+.BR syslogd (8)
+can still be used to control exactly where kernel messages appear.  When
+the
+.B \-n
+option is used,
+.B dmesg
+will
+.I not
+print or clear the kernel ring buffer.
+
+When both options are used, only the last option on the command line will
+have an effect.
+.SH SEE ALSO
+.BR syslogd (8)
+.SH AUTHOR
+Theodore Ts'o (tytso at athena.mit.edu)
diff --git a/raw/man8/edquota.8 b/raw/man8/edquota.8
new file mode 100644
index 0000000..5a8e21b
--- /dev/null
+++ b/raw/man8/edquota.8
@@ -0,0 +1,133 @@
+.TH EDQUOTA 8
+.SH NAME
+edquota \- edit user quotas
+.SH SYNOPSIS
+.B edquota
+[
+.B \-p
+.I protoname
+] [
+.BR \-u \ |
+.B \-g
+] [
+.B \-r
+] [
+.B \-F
+.I format-name
+] [
+.B \-f
+.I filesystem
+]
+.IR username .\|.\|.
+.LP
+.B edquota
+[
+.BR \-u \ |
+.B \-g
+] [
+.B \-F
+.I format-name
+] [
+.B \-f
+.I filesystem
+]
+.B \-t
+.SH DESCRIPTION
+.IX  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  edit "user quotas \(em \fLedquota\fP"
+.IX  "user quotas"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  "disk quotas"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  "quotas"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  "filesystem"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.B edquota
+is a quota editor.  One or more users or groups may be specified on the command
+line.  For each user or group a temporary file is created with an
+.SM ASCII
+representation of the current disk quotas for that user or group and an editor
+is then invoked on the file.  The quotas may then be modified, new
+quotas added, etc.
+Setting a quota to zero indicates that no quota should be imposed.
+.PP
+Users are permitted to exceed their soft limits for a grace period that
+may be specified per filesystem.  Once the grace period has expired, the
+soft limit is enforced as a hard limit.
+.PP
+The current usage information in the file is for informational purposes;
+only the hard and soft limits can be changed.
+.PP
+Upon leaving the editor,
+.B edquota
+reads the temporary file and modifies the binary quota files to reflect
+the changes made.
+.LP
+The editor invoked is
+.BR vi (1)
+unless either the
+.SB EDITOR
+or the
+.SB VISUAL
+environment variable specifies otherwise.
+.LP
+Only the super-user may edit quotas.
+.SH OPTIONS
+.TP
+.B \-r
+Edit also non-local quota use rpc.rquotad on remote server to set quota.
+The
+.B \-n
+option is equivalent, and is maintained for backward compatibility.
+.TP
+.B \-u
+Edit the user quota. This is the default.
+.TP
+.B \-g
+Edit the group quota.
+.TP
+.B \-p \f2protoname\f1
+Duplicate the quotas of the prototypical user
+specified for each user specified.  This is the normal
+mechanism used to initialize quotas for groups of users.
+.TP
+.B \-F \f2format-name\f1
+Edit quota for specified format (ie. don't perform format autodetection).
+Possible format names are:
+.B vfsold
+(version 1 quota),
+.B vfsv0
+(version 2 quota),
+.B rpc
+(quota over NFS),
+.B xfs
+(quota on XFS filesystem)
+.TP
+.B \-f \f2filesystem\f1
+Perform specified operations only for given filesystem (default is to perform
+operations for all filesystems with quota).
+.TP
+.B \-t
+Edit the soft time limits for each filesystem.
+In old quota format if the time limits are zero, the default time limits in
+.B <linux/quota.h>
+are used. In new quota format time limits must be specified (there is no default
+value set in kernel). Time units of seconds, minutes, hours, days, weeks, and months
+are understood. Time limits are printed in the greatest possible time unit such that
+the value is greater than or equal to one.
+.SH FILES
+.PD 0
+.TP 20
+.BR aquota.user " or " aquota.group
+quota file at the filesystem root (version 2 quota, non-XFS filesystems)
+.TP
+.BR quota.user " or " quota.group
+quota file at the filesystem root (version 1 quota, non-XFS filesystems)
+.TP
+.B /etc/mtab
+mounted filesystems table
+.PD
+.SH SEE ALSO
+.BR quota (1),
+.BR vi (1),
+.BR quotactl (2),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8)
diff --git a/raw/man8/exportfs.8 b/raw/man8/exportfs.8
new file mode 100644
index 0000000..9024caf
--- /dev/null
+++ b/raw/man8/exportfs.8
@@ -0,0 +1,227 @@
+.\"
+.\" exportfs(8)
+.\" 
+.\" Copyright (C) 1995 Olaf Kirch <okir at monad.swb.de>
+.\" Modifications 1999-2003 Neil Brown <neilb at cse.unsw.edu.au>
+.TH exportfs 8 "18 July 2003"
+.SH NAME
+exportfs \- maintain list of NFS exported file systems
+.SH SYNOPSIS
+.BI "/usr/sbin/exportfs [-avi] [-o " "options,.." "] [" "client:/path" " ..]
+.br
+.BI "/usr/sbin/exportfs -r [-v]"
+.br
+.BI "/usr/sbin/exportfs [-av] -u [" "client:/path" " ..]
+.br
+.BI "/usr/sbin/exportfs [-v]
+.br
+.BI "/usr/sbin/exportfs -f"
+.br
+.SH DESCRIPTION
+The
+.B exportfs
+command is used to maintain the current table of exported file systems for
+NFS. This list is kept in a separate file named
+.BR /var/lib/nfs/xtab
+which is read by
+.B mountd
+when a remote host requests access to mount a file tree, and parts of
+the list which are active are kept in the kernel's export table.
+.P
+Normally this 
+.B xtab
+file is initialized with the list of all file systems named in
+.B /etc/exports 
+by invoking
+.BR "exportfs -a" .
+.P
+However, administrators can choose to add and delete individual file systems
+without modifying
+.B /etc/exports
+using
+.BR exportfs .
+.P
+.B exportfs
+and it's partner program
+.B mountd
+work in one of two modes, a legacy mode which applies to 2.4 and
+earlier versions of the Linux kernel, and a new mode which applies to
+2.6 and later versions providing the
+.B nfsd
+virtual filesystem has been mounted at
+.B /proc/fs/nfsd
+or
+.BR /proc/fs/nfs .
+If this filesystem is not mounted in 2.6, the legacy mode is used.
+.P
+In the new mode,
+.B exportfs
+does not give any information to the kernel but only provides it to
+.B mountd
+through the
+.B /var/lib/nfs/xtab
+file.
+.B mountd
+will listen to requests from the kernel and will provide information
+as needed.
+.P
+In the legacy mode,
+any export requests which identify a specific host (rather than a
+subnet or netgroup etc) are entered directly into the kernel's export
+table as well as being written to
+.BR /var/lib/nfs/xtab .
+Further, any mount points listed in
+.B /var/lib/nfs/rmtab
+which match a non host-specific export request will cause an
+appropriate export entry for the host given in
+.B rmtab
+to be entered
+into the kernel's export table.
+.SH OPTIONS
+.TP 
+.B -a
+Export or unexport all directories.
+.TP
+.BI "-o " options,...
+Specify a list of export options in the same manner as in
+.BR exports(5) .
+.TP
+.B -i
+Ignore the
+.B /etc/exports
+file, so that only default options and options given on the command
+line are used.
+.TP
+.B -r
+Reexport all directories. It synchronizes /var/lib/nfs/xtab
+with /etc/exports. It removes entries in /var/lib/nfs/xtab
+which are deleted from /etc/exports, and remove any entries from the
+kernel export table which are no longer valid.
+.TP
+.B -u
+Unexport one or more directories.
+.TP
+.B -f
+In 'new' mode, flush everything out of the kernels export table. Any
+clients that are active will get new entries added by
+.B mountd
+when they make their next request.
+.TP
+.B -v
+Be verbose. When exporting or unexporting, show what's going on. When
+displaying the current export list, also display the list of export
+options.
+.SH DISCUSSION
+.\" -------------------- Exporting Directories --------------------
+.SS Exporting Directories
+The first synopsis shows how to invoke the command when adding new
+entries to the export table.  When using 
+.BR "exportfs -a" ,
+all directories in
+.B exports(5)
+are added to
+.B xtab
+and the resulting list is pushed into the kernel.
+.P
+The
+.I host:/path
+argument specifies the directory to export along with the host or hosts to
+export it to. All formats described in
+.B exports(5)
+are supported; to export a directory to the world, simply specify
+.IR :/path .
+.P
+The export options for a particular host/directory pair derive from
+several sources.  There is a set of default options which can be overridden by
+entries in
+.B /etc/exports
+(unless the
+.B -i
+option is given).
+In addition, the administrator may overide any options from these sources
+using the
+.B -o
+argument which takes a comma-separated list of options in the same fashion
+as one would specify them in
+.BR exports(5) .
+Thus,
+.B exportfs
+can also be used to modify the export options of an already exported
+directory.
+.P
+Modifications of the kernel export table used by
+.B nfsd(8)
+take place immediately after parsing the command line and updating the
+.B xtab
+file.
+.P
+The default export options are
+.BR sync,ro,root_squash,no_delay .
+.\" -------------------- Unexporting Directories ------------------
+.SS Unexporting Directories
+The third synopsis shows how to unexported a currently exported directory.
+When using
+.BR "exportfs -ua" ,
+all entries listed in
+.B xtab
+are removed from the kernel export tables, and the file is cleared. This
+effectively shuts down all NFS activity.
+.P
+To remove individial export entries, one can specify a
+.I host:/path
+pair. This deletes the specified entry from
+.B xtab
+and removes the corresponding kernel entry (if any).
+.P
+.\" -------------------- Dumping the Export Table -----------------
+.SS Dumping the Export Table 
+Invoking
+.B exportfs
+without further options shows the current list of exported file systems.
+When giving the
+.B -v
+option, the list of flags pertaining to each export are shown in addition.
+.\" -------------------- EXAMPLES ---------------------------------
+.SH EXAMPLES
+The following adds all directories listed in
+.B /etc/exports to /var/lib/nfs/xtab
+and pushes the resulting export entries into the kernel:
+.P
+.nf
+.B "# exportfs -a
+.fi
+.P
+To export the
+.B /usr/tmp
+directory to host 
+.BR djando ,
+allowing asynchronous writes, one would do this:
+.P
+.nf
+.B "# exportfs -o async django:/usr/tmp
+.fi
+.\" -------------------- DEPENDENCIES -----------------------------
+.SH DEPENDENCIES
+Exporting to IP networks, DNS and NIS domains does not enable clients
+from these groups to access NFS immediately; rather, these sorts of
+exports are hints to
+.B mountd(8)
+to grant any mount requests from these clients.
+This is usually not a big problem, because any existing mounts are preserved
+in
+.B rmtab
+across reboots.
+.P
+When unexporting a network or domain entry, any current exports to members
+of this group will be checked against the remaining valid exports and
+if they themselves are nolonger valid they will be removed.
+.P
+.\" -------------------- SEE ALSO --------------------------------
+.SH SEE ALSO
+.BR exports(5) ", " mountd(8)
+.\" -------------------- AUTHOR ----------------------------------
+.SH AUTHORS
+Olaf Kirch, <okir at monad.swb.de>
+.br
+Neil Brown, <neilb at cse.unsw.edu.au>
+
diff --git a/raw/man8/fdisk.8 b/raw/man8/fdisk.8
new file mode 100644
index 0000000..e1bf926
--- /dev/null
+++ b/raw/man8/fdisk.8
@@ -0,0 +1,248 @@
+.\" Copyright 1992, 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" Copyright 1998 Andries E. Brouwer (aeb at cwi.nl)
+.\" May be distributed under the GNU General Public License
+.TH FDISK 8 "11 June 1998" "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+fdisk \- Partition table manipulator for Linux
+.SH SYNOPSIS
+.BI "fdisk [\-u] [\-b " sectorsize ]
+.BI "[\-C " cyls "] [\-H " heads "] [\-S " sects "] " device
+.sp
+.BI "fdisk \-l [\-u] [" "device ..." ]
+.sp
+.BI "fdisk \-s " "partition ..."
+.sp
+.BI "fdisk \-v
+.SH DESCRIPTION
+Hard disks can be divided into one or more logical disks called
+.IR partitions .
+This division is described in the
+.I "partition table"
+found in sector 0 of the disk.
+
+In the BSD world one talks about `disk slices' and a `disklabel'.
+
+Linux needs at least one partition, namely for its root file system.
+It can use swap files and/or swap partitions, but the latter are more
+efficient. So, usually one will want a second Linux partition
+dedicated as swap partition.
+On Intel compatible hardware, the BIOS that boots the system
+can often only access the first 1024 cylinders of the disk.
+For this reason people with large disks often create a third partition,
+just a few MB large, typically mounted on
+.IR /boot ,
+to store the kernel image and a few auxiliary files needed at boot time,
+so as to make sure that this stuff is accessible to the BIOS.
+There may be reasons of security, ease of administration and backup,
+or testing, to use more than the minimum number of partitions.
+
+.B fdisk
+(in the first form of invocation)
+is a menu driven program for creation and manipulation of
+partition tables.
+It understands DOS type partition tables and BSD or SUN type disklabels.
+
+The
+.I device
+is usually one of the following:
+.br
+.nf
+.RS
+/dev/hda
+/dev/hdb
+/dev/sda
+/dev/sdb
+.RE
+.fi
+(/dev/hd[a-h] for IDE disks, /dev/sd[a-p] for SCSI disks,
+/dev/ed[a-d] for ESDI disks, /dev/xd[ab] for XT disks).
+A device name refers to the entire disk.
+
+The
+.I partition
+is a
+.I device
+name followed by a partition number.  For example,
+.B /dev/hda1
+is the first partition on the first IDE hard disk in the system.
+Disks can have up to 15 partitions.
+See also
+.IR /usr/src/linux/Documentation/devices.txt .
+
+A BSD/SUN type disklabel can describe 8 partitions,
+the third of which should be a `whole disk' partition.
+Do not start a partition that actually uses its first sector
+(like a swap partition) at cylinder 0, since that will
+destroy the disklabel.
+
+An IRIX/SGI type disklabel can describe 16 partitions,
+the eleventh of which should be an entire `volume' partition,
+while the ninth should be labeled `volume header'.
+The volume header will also cover the partition table, i.e.,
+it starts at block zero and extends by default over five cylinders.
+The remaining space in the volume header may be used by header
+directory entries.  No partitions may overlap with the volume header.
+Also do not change its type and make some file system on it, since
+you will lose the partition table.  Use this type of label only when
+working with Linux on IRIX/SGI machines or IRIX/SGI disks under Linux.
+
+A DOS type partition table can describe an unlimited number
+of partitions. In sector 0 there is room for the description
+of 4 partitions (called `primary'). One of these may be an
+extended partition; this is a box holding logical partitions,
+with descriptors found in a linked list of sectors, each
+preceding the corresponding logical partitions.
+The four primary partitions, present or not, get numbers 1-4.
+Logical partitions start numbering from 5.
+
+In a DOS type partition table the starting offset and the size
+of each partition is stored in two ways: as an absolute number
+of sectors (given in 32 bits) and as a Cylinders/Heads/Sectors
+triple (given in 10+8+6 bits). The former is OK - with 512-byte
+sectors this will work up to 2 TB. The latter has two different
+problems. First of all, these C/H/S fields can be filled only
+when the number of heads and the number of sectors per track
+are known. Secondly, even if we know what these numbers should be,
+the 24 bits that are available do not suffice.
+DOS uses C/H/S only, Windows uses both, Linux never uses C/H/S.
+
+If possible,
+.B fdisk
+will obtain the disk geometry automatically.  This is not
+necessarily the physical disk geometry (indeed, modern disks do not
+really have anything like a physical geometry, certainly not something
+that can be described in simplistic Cylinders/Heads/Sectors form),
+but is the disk geometry that MS-DOS uses for the partition table.
+
+Usually all goes well by default, and there are no problems if
+Linux is the only system on the disk. However, if the disk has
+to be shared with other operating systems, it is often a good idea
+to let an fdisk from another operating system make at least one
+partition. When Linux boots it looks at the partition table, and
+tries to deduce what (fake) geometry is required for good
+cooperation with other systems.
+
+Whenever a partition table is printed out, a consistency check is performed
+on the partition table entries.  This check verifies that the physical and
+logical start and end points are identical, and that the partition starts
+and ends on a cylinder boundary (except for the first partition).
+
+Some versions of MS-DOS create a first partition which does not begin
+on a cylinder boundary, but on sector 2 of the first cylinder.
+Partitions beginning in cylinder 1 cannot begin on a cylinder boundary, but
+this is unlikely to cause difficulty unless you have OS/2 on your machine.
+
+A sync() and a BLKRRPART ioctl() (reread partition table from disk)
+are performed before exiting when the partition table has been updated.
+Long ago it used to be necessary to reboot after the use of fdisk.
+I do not think this is the case anymore - indeed, rebooting too quickly
+might cause loss of not-yet-written data. Note that both the kernel
+and the disk hardware may buffer data.
+
+.SH "DOS 6.x WARNING"
+
+The DOS 6.x FORMAT command looks for some information in the first
+sector of the data area of the partition, and treats this information
+as more reliable than the information in the partition table.  DOS
+FORMAT expects DOS FDISK to clear the first 512 bytes of the data area
+of a partition whenever a size change occurs.  DOS FORMAT will look at
+this extra information even if the /U flag is given -- we consider
+this a bug in DOS FORMAT and DOS FDISK.
+
+The bottom line is that if you use cfdisk or fdisk to change the size of a
+DOS partition table entry, then you must also use
+.B dd
+to zero the first 512 bytes of that partition before using DOS FORMAT to
+format the partition.  For example, if you were using cfdisk to make a DOS
+partition table entry for /dev/hda1, then (after exiting fdisk or cfdisk
+and rebooting Linux so that the partition table information is valid) you
+would use the command "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" to zero
+the first 512 bytes of the partition.
+
+.B BE EXTREMELY CAREFUL
+if you use the
+.B dd
+command, since a small typo can make all of the data on your disk useless.
+
+For best results, you should always use an OS-specific partition table
+program.  For example, you should make DOS partitions with the DOS FDISK
+program and Linux partitions with the Linux fdisk or Linux cfdisk program.
+
+.SH OPTIONS
+.TP
+.BI "\-b " sectorsize
+Specify the sector size of the disk. Valid values are 512, 1024, or 2048.
+(Recent kernels know the sector size. Use this only on old kernels or
+to override the kernel's ideas.)
+.TP
+.BI "\-C " cyls
+Specify the number of cylinders of the disk.
+I have no idea why anybody would want to do so.
+.TP
+.BI "\-H " heads
+Specify the number of heads of the disk. (Not the physical number,
+of course, but the number used for partition tables.)
+Reasonable values are 255 and 16.
+.TP
+.BI "\-S " sects
+Specify the number of sectors per track of the disk.
+(Not the physical number, of course, but the number used for
+partition tables.)
+A reasonable value is 63.
+.TP
+.B \-l
+List the partition tables for the specified devices and then exit.
+If no devices are given, those mentioned in
+.I /proc/partitions
+(if that exists) are used.
+.TP
+.B \-u
+When listing partition tables, give sizes in sectors instead
+of cylinders.
+.TP
+.BI "\-s " partition
+The
+.I size
+of the partition (in blocks) is printed on the standard output.
+.TP
+.B \-v
+Print version number of
+.B fdisk
+program and exit.
+.SH BUGS
+There are several *fdisk programs around.
+Each has its problems and strengths.
+Try them in the order
+.BR cfdisk ,
+.BR fdisk ,
+.BR sfdisk .
+(Indeed,
+.B cfdisk
+is a beautiful program that has strict requirements on
+the partition tables it accepts, and produces high quality partition
+tables. Use it if you can. 
+.B fdisk
+is a buggy program that does fuzzy things - usually it happens to
+produce reasonable results. Its single advantage is that it has
+some support for BSD disk labels and other non-DOS partition tables.
+Avoid it if you can.
+.B sfdisk
+is for hackers only - the user interface is terrible, but it is
+more correct than fdisk and more powerful than both fdisk and cfdisk.
+Moreover, it can be used noninteractively.)
+.PP
+The IRIX/SGI type disklabel is currently not supported by the kernel.
+Moreover, IRIX/SGI header directories are not fully supported yet.
+.PP
+The option `dump partition table to file' is missing.
+.\" .SH AUTHORS
+.\" A. V. Le Blanc (LeBlanc at mcc.ac.uk)
+.\" Bernhard Fastenrath (fasten at informatik.uni-bonn.de)
+.\" Jakub Jelinek (jj at sunsite.mff.cuni.cz)
+.\" Andreas Neuper (ANeuper at GUUG.de)
+.\" and many others.
+.SH "SEE ALSO"
+.BR cfdisk (8),
+.BR mkfs (8),
+.BR parted (8),
+.BR sfdisk (8)
diff --git a/raw/man8/fsck.8 b/raw/man8/fsck.8
new file mode 100644
index 0000000..10dde44
--- /dev/null
+++ b/raw/man8/fsck.8
@@ -0,0 +1,362 @@
+.\" -*- nroff -*-
+.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
+.\" This file may be copied under the terms of the GNU Public License.
+.\" 
+.TH FSCK 8 "July 2003" "E2fsprogs version 1.34"
+.SH NAME
+fsck \- check and repair a Linux file system
+.SH SYNOPSIS
+.B fsck
+[
+.B \-sACVRTNP
+]
+[
+.B \-t
+.I fstype
+] 
+.I [filesys ... ]
+[\-\-] [
+.B fs-specific-options
+]
+.SH DESCRIPTION
+.B fsck
+is used to check and optionally repair one or more Linux file systems.  
+.I filesys
+can be a device name (e.g.
+.IR /dev/hdc1 ", " /dev/sdb2 ),
+a mount point (e.g.
+.IR / ", " /usr ", " /home ),
+or an ext2 label or UUID specifier (e.g.
+UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd or LABEL=root).  
+Normally, the 
+.B fsck 
+program will try to run filesystems on different physical disk drives 
+in parallel to reduce total amount time to check all of the filesystems.
+.PP
+If no filesystems are specified on the command line, and the 
+.B \-A 
+option is not specified, 
+.B fsck
+will default to checking filesystems in
+.B /etc/fstab
+serial.  This is equivalent to the 
+.B \-As
+options.
+.PP
+The exit code returned by
+.B fsck
+is the sum of the following conditions:
+.br
+\	0\	\-\ No errors
+.br
+\	1\	\-\ File system errors corrected
+.br
+\	2\	\-\ System should be rebooted
+.br
+\	4\	\-\ File system errors left uncorrected
+.br
+\	8\	\-\ Operational error
+.br
+\	16\	\-\ Usage or syntax error
+.br
+\	32\	\-\ Fsck canceled by user request
+.br
+\	128\	\-\ Shared library error
+.br
+The exit code returned when multiple file systems are checked 
+is the bit-wise OR of the exit codes for each
+file system that is checked.
+.PP
+In actuality,
+.B fsck
+is simply a front-end for the various file system checkers
+(\fBfsck\fR.\fIfstype\fR) available under Linux.  The file
+system-specific checker is searched for in
+.I /sbin
+first, then in
+.I /etc/fs
+and
+.IR /etc ,
+and finally in the directories listed in the PATH environment
+variable.  Please see the file system-specific checker manual pages for
+further details.
+.SH OPTIONS
+.TP
+.B \-s
+Serialize 
+.B fsck 
+operations.  This is a good idea if you are checking multiple
+filesystems and the checkers are in an interactive mode.  (Note:
+.BR e2fsck (8)
+runs in an interactive mode by default.  To make 
+.BR e2fsck (8)
+run in a non-interactive mode, you must either specify the
+.B \-p
+or
+.B \-a
+option, if you wish for errors to be corrected automatically, or the 
+.B \-n
+option if you do not.)
+.TP
+.BI \-t " fslist"
+Specifies the type(s) of file system to be checked.  When the
+.B \-A 
+flag is specified, only filesystems that match 
+.I fslist
+are checked.  The
+.I fslist
+parameter is a comma-separated list of filesystems and options
+specifiers.  All of the filesystems in this comma-separated list may be
+prefixed by a negation operator 
+.RB ' no '
+or 
+.RB ' ! ',
+which requests that only those filesystems not listed in
+.I fslist
+will be checked.  If all of the filesystems in 
+.I fslist
+are not prefixed by a negation operator, then only those filesystems
+listed
+in
+.I fslist
+will be checked.
+.sp
+Options specifiers may be included in the comma separated
+.IR fslist .
+They must have the format 
+.BI opts= fs-option\fR.
+If an options specifier is present, then only filesystems which contain
+.I fs-option
+in their mount options field of 
+.B /etc/fstab
+will be checked.  If the options specifier is prefixed by a negation
+operator, then only 
+those filesystems that do not have
+.I fs-option
+in their mount options field of
+.B /etc/fstab 
+will be checked.
+.sp
+For example, if
+.B opts=ro
+appears in
+.IR fslist ,
+then only filesystems listed in
+.B /etc/fstab 
+with the
+.B ro
+option will be checked.
+.sp
+For compatibility with Mandrake distributions whose boot scripts
+depend upon an unauthorized UI change to the
+.B fsck
+program, if a filesystem type of
+.B loop
+is found in
+.IR fslist ,
+it is treated as if
+.B opts=loop
+were specified as an argument to the
+.B \-t
+option.
+.sp
+Normally, the filesystem type is deduced by searching for
+.I filesys
+in the 
+.I /etc/fstab 
+file and using the corresponding entry.
+If the type can not be deduced, and there is only a single filesystem 
+given as an argument to the 
+.B \-t 
+option, 
+.B fsck
+will use the specified filesystem type.  If this type is not
+available, then the default file system type (currently ext2) is used. 
+.TP
+.B \-A
+Walk through the
+.I /etc/fstab
+file and try to check all file systems in one run.  This option is
+typically used from the
+.I /etc/rc
+system initalization file, instead of multiple commands for checking
+a single file system.
+.sp
+The root filesystem will be checked first unless the
+.B \-P
+option is specified (see below).  After that, 
+filesystems will be checked in the order specified by the 
+.I fs_passno 
+(the sixth) field in the 
+.I /etc/fstab
+file.  
+Filesystems with a 
+.I fs_passno
+value of 0 are skipped and are not checked at all.  Filesystems with a
+.I fs_passno
+value of greater than zero will be checked in order, 
+with filesystems with the lowest
+.I fs_passno 
+number being checked first.
+If there are multiple filesystems with the same pass number, 
+fsck will attempt to check them in parallel, although it will avoid running 
+multiple filesystem checks on the same physical disk.  
+.sp
+Hence, a very common configuration in 
+.I /etc/fstab
+files is to set the root filesystem to have a 
+.I fs_passno
+value of 1
+and to set all filesystems to have a
+.I fs_passno
+value of 2.  This will allow
+.B fsck
+to automatically run filesystem checkers in parallel if it is advantageous
+to do so.  System administrators might choose
+not to use this configuration if they need to avoid multiple filesystem
+checks running in parallel for some reason --- for example, if the
+machine in question is short on memory so that
+excessive paging is a concern.
+.TP
+.B \-C
+Display completion/progress bars for those filesystems checkers (currently
+only for ext2) which support them.   Fsck will manage the filesystem checkers
+so that only one of them will display a progress bar at a time.
+.TP
+.B \-N
+Don't execute, just show what would be done.
+.TP
+.B \-P
+When the 
+.B \-A
+flag is set, check the root filesystem in parallel with the other filesystems.
+This is not the safest thing in the world to do,
+since if the root filesystem is in doubt things like the 
+.BR e2fsck (8) 
+executable might be corrupted!  This option is mainly provided
+for those sysadmins who don't want to repartition the root
+filesystem to be small and compact (which is really the right solution).
+.TP
+.B \-R
+When checking all file systems with the
+.B \-A
+flag, skip the root file system (in case it's already mounted read-write).
+.TP
+.B \-T
+Don't show the title on startup.
+.TP
+.B \-V
+Produce verbose output, including all file system-specific commands
+that are executed.
+.TP
+.B fs-specific-options
+Options which are not understood by 
+.B fsck 
+are passed to the filesystem-specific checker.  These arguments
+.B must
+not take arguments, as there is no
+way for 
+.B fsck
+to be able to properly guess which arguments take options and which
+don't.
+.IP
+Options and arguments which follow the
+.B \-\-
+are treated as file system-specific options to be passed to the
+file system-specific checker.
+.IP
+Please note that fsck is not
+designed to pass arbitrarily complicated options to filesystem-specific
+checkers.  If you're doing something complicated, please just
+execute the filesystem-specific checker directly.  If you pass 
+.B fsck
+some horribly complicated option and arguments, and it doesn't do
+what you expect, 
+.B don't bother reporting it as a bug.
+You're almost certainly doing something that you shouldn't be doing
+with 
+.BR fsck.
+.PP
+Currently, standardized file system-specific options are somewhat in
+flux.  Although not guaranteed, the following options are supported
+by most file system checkers:
+.TP
+.B \-a
+Automatically repair the file system without any questions (use
+this option with caution).  Note that 
+.BR e2fsck (8)
+supports 
+.B \-a
+for backwards compatibility only.  This option is mapped to 
+.BR e2fsck 's
+.B \-p
+option which is safe to use, unlike the 
+.B \-a 
+option that most file system checkers support.
+.TP
+.B \-r
+Interactively repair the filesystem (ask for confirmations).  Note: It
+is generally a bad idea to use this option if multiple fsck's are being
+run in parallel.  Also note that this is 
+.BR e2fsck 's
+default behavior; it supports this option for backwards compatibility
+reasons only.
+.SH AUTHOR
+Theodore Ts'o (tytso at mit.edu)
+.SH FILES
+.IR /etc/fstab .
+.SH ENVIRONMENT VARIABLES
+The
+.B fsck
+program's behavior is affected by the following environment variables:
+.TP
+.B FSCK_FORCE_ALL_PARALLEL
+If this environment variable is set, 
+.B fsck
+will attempt to run all of the specified filesystems in parallel,
+regardless of whether the filesystems appear to be on the same
+device.  (This is useful for RAID systems or high-end storage systems
+such as those sold by companies such as IBM or EMC.)
+.TP
+.B FSCK_MAX_INST
+This environment variable will limit the maximum number of file system
+checkers that can be running at one time.  This allows configurations
+which have a large number of disks to avoid 
+.B fsck
+starting too many file system checkers at once, which might overload
+CPU and memory resources available on the system.  If this value is
+zero, then an unlimited number of processes can be spawned.  This is
+currently the default, but future versions of
+.B fsck
+may attempt to automatically determine how many file system checks can
+be run based on gathering accounting data from the operating system.
+.TP
+.B PATH
+The 
+.B PATH
+environment variable is used to find file system checkers.  A set of
+system directories are searched first: 
+.BR /sbin ,
+.BR /sbin/fs.d ,
+.BR  /sbin/fs ,
+.BR /etc/fs ,
+and 
+.BR /etc .
+Then the set of directories found in the
+.B PATH
+environment are searched.
+.TP
+.B FSTAB_FILE
+This environment variable allows the system administrator 
+to override the standard location of the 
+.B /etc/fstab
+file.  It is also use for developers who are testing
+.BR fsck .
+.SH SEE ALSO
+.BR fstab (5),
+.BR mkfs (8),
+.BR fsck.minix (8),
+.BR fsck.ext2 (8)
+or
+.BR e2fsck (8),
+.BR fsck.xiafs (8).
diff --git a/raw/man8/groupadd.8 b/raw/man8/groupadd.8
new file mode 100644
index 0000000..7207973
--- /dev/null
+++ b/raw/man8/groupadd.8
@@ -0,0 +1,79 @@
+.\" Copyright 1991, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH GROUPADD 8
+.SH NAME
+groupadd \- Create a new group
+.SH SYNOPSIS
+\fBgroupadd\fR [\fB-g\fI gid \fR[\fB-o\fR]] [\fB-r\fR] [\fB-f\fR] \fIgroup\fR
+.SH DESCRIPTION
+The \fBgroupadd\fR command
+creates a new group account using the values specified on the
+command line and the default values from the system.
+The new group will be entered into the system files as needed.
+The options which apply to the \fBgroupadd\fR command are
+.IP "\fB-g \fIgid\fR"
+The numerical value of the group's ID.
+This value must be unique, unless the \fB-o\fR option is used.
+The value must be non-negative.
+The default is to use the smallest ID value greater than 500 and
+greater than every other group.
+Values between 0 and 499 are typically reserved for \fIsystem accounts\fR.
+.IP \fB-r\fR
+This flag instructs \fBgroupadd\fR to add a \fIsystem
+account\fR.  The first available \fIgid\fR lower than 499 will be
+automatically selected unless the \fB-g\fR option is also given on the
+command line.
+.br
+This is an option added by Red Hat.
+.IP \fB-f\fR
+This is the \fIforce\fR flag. This will cause \fBgroupadd\fR to exit with an
+error when the group about to be added already exists on the
+system. If that is the case, the group won't be altered (or added
+again).
+.br
+This option also modifies the way \fB-g\fR option works. When you
+request a \fIgid\fR that it is not unique and you don't specify the \fB-o\fR
+option too, the group creation will fall back to the standard behavior
+(adding a group as if neither \fB-g\fR or \fB-o\fR options were
+specified).
+.br
+This is an option added by Red Hat.
+.SH FILES
+/etc/group \- group account information
+.br
+/etc/gshadow \- secure group account information
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/groupdel.8 b/raw/man8/groupdel.8
new file mode 100644
index 0000000..9e6eec1
--- /dev/null
+++ b/raw/man8/groupdel.8
@@ -0,0 +1,56 @@
+.\" Copyright 1991 - 1993, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH GROUPDEL 8
+.SH NAME
+groupdel \- Delete a group
+.SH SYNOPSIS
+\fBgroupdel\fR \fIgroup\fR
+.SH DESCRIPTION
+The \fBgroupdel\fR command modifies the system account files, deleting
+all entries that refer to \fIgroup\fR.
+The named group must exist.
+.PP
+You must manually check all filesystems to insure that no files remain
+with the named group as the file group ID.
+.SH CAVEATS
+You may not remove the primary group of any existing user.
+You must remove the user before you remove the group.
+.SH FILES
+/etc/group \- group information
+.br
+/etc/gshadow \- secure group information
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupadd (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/groupmod.8 b/raw/man8/groupmod.8
new file mode 100644
index 0000000..4ada6e8
--- /dev/null
+++ b/raw/man8/groupmod.8
@@ -0,0 +1,61 @@
+.\" Copyright 1991, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH GROUPMOD 8
+.SH NAME
+groupmod \- Modify a group
+.SH SYNOPSIS
+\fBgroupmod\fR [\fB-g\fI gid \fR[\fB-o\fR]] [\fB-n\fI group_name \fR]
+\fIgroup\fR
+.SH DESCRIPTION
+The \fBgroupmod\fR command modifies the system account files to reflect
+the changes that are specified on the command line.
+The options which apply to the \fIgroupmod\fR command are
+.IP "\fB-g \fIgid\fR"
+The numerical value of the group's ID.
+This value must be unique, unless the \fB-o\fR option is used.
+The value must be non-negative.
+Values between 0 and 99 are typically reserved for system groups.
+Any files which the old group ID is the file group ID
+must have the file group ID changed manually.
+.IP "\fB-n \fIgroup_name\fR"
+The name of the group will be changed from \fIgroup\fR to
+\fIgroup_name\fR.
+.SH FILES
+/etc/group \- group information
+.br
+/etc/gshadow \- secure group information
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/halt.8 b/raw/man8/halt.8
new file mode 100644
index 0000000..6a88ebb
--- /dev/null
+++ b/raw/man8/halt.8
@@ -0,0 +1,102 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH HALT 8 "Nov 6, 2001" "" "Linux System Administrator's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+halt, reboot, poweroff \- stop the system.
+.\"}}}
+.\"{{{  Synopsis
+.SH SYNOPSIS
+.B /sbin/halt
+.RB [ \-n ]
+.RB [ \-w ]
+.RB [ \-d ]
+.RB [ \-f ]
+.RB [ \-i ]
+.RB [ \-p ]
+.RB [ \-h ]
+.br
+.B /sbin/reboot
+.RB [ \-n ]
+.RB [ \-w ]
+.RB [ \-d ]
+.RB [ \-f ]
+.RB [ \-i ]
+.br
+.B /sbin/poweroff
+.RB [ \-n ]
+.RB [ \-w ]
+.RB [ \-d ]
+.RB [ \-f ]
+.RB [ \-i ]
+.RB [ \-h ]
+.\"}}}
+.\"{{{  Description
+.SH DESCRIPTION
+\fBHalt\fP notes that the system is being brought down in the file
+\fI/var/log/wtmp\fP, and then either tells the kernel to halt, reboot or
+poweroff the system.
+.PP
+If \fBhalt\fP or \fBreboot\fP is called when the system is
+\fInot\fP in runlevel \fB0\fP or \fB6\fP, in other words when it's running
+normally, \fBshutdown\fP will be invoked instead (with the \fB-h\fP
+or \fB-r\fP flag). For more info see the \fBshutdown\fP(8)
+manpage.
+.PP
+The rest of this manpage describes the behaviour in runlevels 0
+and 6, that is when the systems shutdown scripts are being run.
+.\"}}}
+.\"{{{  Options
+.SH OPTIONS
+.IP \fB\-n\fP
+Don't sync before reboot or halt.
+.IP \fB\-w\fP
+Don't actually reboot or halt but only write the wtmp record
+(in the \fI/var/log/wtmp\fP file).
+.IP \fB\-d\fP
+Don't write the wtmp record. The \fB\-n\fP flag implies \fB\-d\fP.
+.IP \fB\-f\fP
+Force halt or reboot, don't call \fBshutdown\fP(8).
+.IP \fB\-i\fP
+Shut down all network interfaces just before halt or reboot.
+.IP \fB\-h\fP
+Put all harddrives on the system in standby mode just before halt or poweroff.
+.IP \fB\-p\fP
+When halting the system, do a poweroff. This is the default when halt is
+called as \fBpoweroff\fP.
+.\"}}}
+.\"{{{  Diagnostics
+.SH DIAGNOSTICS
+If you're not the superuser, you will get the message `must be superuser'.
+.\"}}}
+.\"{{{  Notes
+.SH NOTES
+Under older \fBsysvinit\fP releases , \fBreboot\fP and \fBhalt\fP should
+never be called directly. From release 2.74 on \fBhalt\fP and \fBreboot\fP
+invoke \fBshutdown\fP(8) if the system is not in runlevel 0 or 6. This
+means that if \fBhalt\fP or \fBreboot\fP cannot find out the current
+runlevel (for example, when \fI/var/run/utmp\fP hasn't been initialized
+correctly) \fBshutdown\fP will be called, which might not be what you want.
+Use the \fB-f\fP flag if you want to do a hard \fBhalt\fP or \fBreboot\fP.
+.PP
+The \fB-h\fP flag puts all harddisks in standby mode just before halt
+or poweroff. Right now this is only implemented for IDE drives. A side
+effect of putting the drive in standby mode is that the write cache
+on the disk is flushed. This is important for IDE drives, since the
+kernel doesn't flush the write-cache itself before poweroff.
+.PP
+The \fBhalt\fP program uses /proc/ide/hd* to find all IDE disk devices,
+which means that /proc needs to be mounted when \fBhalt\fP or
+\fBpoweroff\fP is called or the \fB-h\fP switch will do nothing.
+.PP
+.\"}}}
+.\"{{{  Author
+.SH AUTHOR
+Miquel van Smoorenburg, miquels at cistron.nl
+.\"}}}
+.\"{{{  See also
+.SH "SEE ALSO"
+.BR shutdown (8),
+.BR init (8)
+.\"}}}
diff --git a/raw/man8/hdparm.8 b/raw/man8/hdparm.8
new file mode 100644
index 0000000..2f5ef58
--- /dev/null
+++ b/raw/man8/hdparm.8
@@ -0,0 +1,483 @@
+.TH HDPARM 8 "Feb 2003" "Version 5.4"
+
+.SH NAME
+hdparm \- get/set hard disk parameters
+.SH SYNOPSIS
+.B hdparm
+[ flags ] [device] ..
+.SH DESCRIPTION
+.BI hdparm
+provides a command line interface to various hard disk ioctls
+supported by the stock Linux ATA/IDE device driver subsystem.
+Some options may work correctly only with the latest kernels.
+For best results, compile hdparm with the include files from the latest kernel source code.
+.SH OPTIONS
+When no flags are given,
+.I -acdgkmnru
+is assumed.
+.TP
+.I -a 
+Get/set sector count for filesystem read-ahead.  This is used to improve
+performance in sequential reads of large files, by prefetching additional
+blocks in anticipation of them being needed by the running task.
+In the current kernel version (2.0.10) this has a default setting
+of 8 sectors (4KB).  This value seems good for most purposes,
+but in a system where most file accesses are random seeks,
+a smaller setting might provide better performance.
+Also, many IDE drives also have a separate built-in read-ahead function,
+which alleviates the need for a filesystem read-ahead in many situations.
+.TP
+.I -A
+Disable/enable the IDE drive's read-lookahead feature (usually ON by default).
+.TP
+.I -b
+Get/set bus state.
+.TP
+.I -B
+Set Advanced Power Management feature, if the drive supports it. A low value
+means aggressive power management and a high value means better performance. A value of 255 will disable apm on the drive.
+.TP
+.I -c
+Query/enable (E)IDE 32-bit I/O support.  A numeric parameter can be
+used to enable/disable 32-bit I/O support:
+Currently supported values include
+.I 0
+to disable 32-bit I/O support,
+.I 1
+to enable 32-bit data transfers, and
+.I 3
+to enable 32-bit data transfers with a special
+.I sync
+sequence required by many chipsets.  The value
+.I 3
+works with nearly all
+32-bit IDE chipsets, but incurs slightly more overhead.
+Note that "32-bit" refers to data transfers across a PCI or VLB bus to the
+interface card only; all (E)IDE drives still have only a 16-bit connection
+over the ribbon cable from the interface card.
+.TP
+.I -C
+Check the current IDE power mode status, which will always be one of
+.B unknown
+(drive does not support this command),
+.B active/idle
+(normal operation),
+.B standby
+(low power mode, drive has spun down),
+or
+.B sleeping
+(lowest power mode, drive is completely shut down).
+The
+.B -S, -y, -Y,
+and
+.B -Z
+flags can be used to manipulate the IDE power modes.
+.TP
+.I -d
+Disable/enable the "using_dma" flag for this drive.  This option now works
+with most combinations of drives and PCI interfaces which support DMA
+and which are known to the IDE driver.
+It is also a good idea to use the appropriate
+.I -X
+option in combination with
+.I -d1
+to ensure that the drive itself is programmed for the correct DMA mode,
+although most BIOSs should do this for you at boot time.
+Using DMA nearly always gives the best performance,
+with fast I/O throughput and low CPU usage.
+But there are at least a few configurations of chipsets and drives
+for which DMA does not make much of a difference, or may even slow
+things down (on really messed up hardware!).  Your mileage may vary.
+.TP
+.I -D
+Enable/disable the on-drive defect management feature,
+whereby the drive firmware tries to automatically manage
+defective sectors by relocating them to "spare" sectors
+reserved by the factory for such.
+.TP
+.I -E
+Set cdrom speed.  This is NOT necessary for regular operation,
+as the drive will automatically switch speeds on its own.
+But if you want to play with it, just supply a speed number
+after the option, usually a number like 2 or 4.
+.TP
+.I -f
+Sync and flush the buffer cache for the device on exit.
+This operation is also performed as part of the
+.I -t
+and
+.I -T
+timings.
+.TP
+.I -g
+Display the drive geometry (cylinders, heads, sectors),
+the size (in sectors) of the device,
+and the starting offset (in sectors) of the device from
+the beginning of the drive.
+.TP
+.I -h
+Display terse usage information (help).
+.TP
+.I -i
+Display the identification info that was obtained from the drive at
+.I boot time,
+if available.
+This is a feature of modern IDE drives,
+and may not be supported by older devices.
+The data returned may or may not be current, depending on activity
+since booting the system.
+However, the current multiple sector mode count is always shown.
+For a more detailed interpretation of the identification info,
+refer to
+.I AT Attachment Interface for Disk Drives
+(ANSI ASC X3T9.2 working draft, revision 4a, April 19/93).
+.TP
+.I -I
+Request identification info directly from the drive,
+which is displayed in a new expanded format with considerably
+more detail than with the older
+.I -i
+flag.  There is a special "no seatbelts" variation on this option,
+.B -Istdin
+which cannot be combined with any other options, and
+which accepts a drive identification block as standard input
+instead of using a /dev/hd* parameter.
+The format of this block must be
+.I exactly
+the same as that found in the /proc/ide/*/hd*/identify "files".
+This variation is designed for use with "libraries" of drive
+identification information, and can also be used on ATAPI
+drives which may give media errors with the standard mechanism.
+.TP
+.I -k
+Get/set the keep_settings_over_reset flag for the drive.
+When this flag is set, the driver will preserve the
+.I -dmu
+options over a soft reset, (as done during the error recovery sequence).
+This flag defaults to off,
+to prevent drive reset loops which could be caused by combinations of
+.I -dmu
+settings.  The
+.I -k
+flag should therefore only be set after one has achieved confidence in
+correct system operation with a chosen set of configuration settings.
+In practice, all that is typically necessary to test a configuration
+(prior to using -k) is to verify that the drive can be read/written,
+and that no error logs (kernel messages) are generated in the process
+(look in /var/adm/messages on most systems).
+.TP
+.I -K
+Set the drive's keep_features_over_reset flag.  Setting this enables
+the drive to retain the settings for
+.I -APSWXZ
+over a soft reset (as done during the error recovery sequence).
+Not all drives support this feature.
+.TP
+.I -L
+Set the drive's doorlock flag.  Setting this to
+.B 1
+will lock the door mechanism of some removeable hard drives
+(eg. Syquest, ZIP, Jazz..), and setting it to
+.B 0
+will unlock the door mechanism.  Normally, Linux
+maintains the door locking mechanism automatically, depending on drive usage
+(locked whenever a filesystem is mounted).  But on system shutdown, this can
+be a nuisance if the root partition is on a removeable disk, since the root
+partition is left mounted (read-only) after shutdown.  So, by using this
+command to unlock the door
+.B after
+the root filesystem is remounted read-only, one can then remove the cartridge
+from the drive after shutdown.
+.TP
+.I -m
+Get/set sector count for multiple sector I/O on the drive.  A setting of
+.B 0
+disables this feature.  Multiple sector mode (aka IDE Block Mode), is a feature
+of most modern IDE hard drives, permitting the transfer of multiple sectors per
+I/O interrupt, rather than the usual one sector per interrupt.  When this
+feature is enabled, it typically reduces operating system overhead for disk
+I/O by 30-50%.  On many systems, it also provides increased data throughput
+of anywhere from 5% to 50%.  Some drives, however
+(most notably the WD Caviar series),
+seem to run slower with multiple mode enabled.  Your mileage may vary.
+Most drives support the minimum settings of
+2, 4, 8, or 16 (sectors).  Larger settings may also be possible, depending on
+the drive.  A setting of 16 or 32 seems optimal on many systems.
+Western Digital recommends lower settings of 4 to 8 on many of their drives,
+due tiny (32kB) drive buffers and non-optimized buffering algorithms.
+The
+.B -i
+flag can be used to find the maximum setting supported by an installed drive
+(look for MaxMultSect in the output).
+Some drives claim to support multiple mode, but lose data at some settings.
+Under rare circumstances, such failures can result in
+.B massive filesystem corruption.
+.TP
+.I -M
+Get/set Automatic Acoustic Management (AAM) setting. Most modern harddisk drives 
+have the ability to speed down the head movements to reduce their noise output.
+The possible values are between 0 and 254. 128 is the most quiet (and therefore
+slowest) setting and 254 the fastest (and loudest). Some drives have ownly two 
+levels (quiet / fast), while others may have different levels between 128 and 254.
+.B THIS FEATURE IS EXPERIMENTAL AND NOT WELL TESTED. USE AT YOUR OWN RISK.
+.TP
+.I -n
+Get or set the "ignore write errors" flag in the driver.
+Do NOT play with this without grokking the driver source code first.
+.TP
+.I -p
+Attempt to reprogram the IDE interface chipset for the specified PIO mode,
+or attempt to auto-tune for the "best" PIO mode supported by the drive.
+This feature is supported in the kernel for only a few "known" chipsets,
+and even then the support is iffy at best.  Some IDE chipsets are unable
+to alter the PIO mode for a single drive, in which case this flag may cause
+the PIO mode for
+.I both
+drives to be set.  Many IDE chipsets support either fewer or more than the
+standard six (0 to 5) PIO modes, so the exact speed setting that is actually
+implemented will vary by chipset/driver sophistication.
+.I Use with extreme caution!
+This feature includes zero protection for the unwary,
+and an unsuccessful outcome may result in
+.I severe filesystem corruption!
+.TP
+.I -P
+Set the maximum sector count for the drive's internal prefetch mechanism.
+Not all drives support this feature.
+.TP
+.I -q
+Handle the next flag quietly, supressing normal output.  This is useful
+for reducing screen clutter when running from /etc/rc.c/rc.local.
+Not applicable to the
+.I -i
+or
+.I -v
+or
+.I -t
+or
+.I -T
+flags.
+.TP
+.I -Q
+Set tagged queue depth (1 or greater), or turn tagged queuing off (0).
+This only works with the newer 2.5.xx (or later) kernels, and only with
+the few drives that currently support it.
+.TP
+.I -r
+Get/set read-only flag for device.  When set, write operations are not
+permitted on the device.
+.TP
+.I -R
+Register an IDE interface.
+.B Dangerous.
+See the
+.B -U
+option for more information.
+.TP
+.I -S
+Set the standby (spindown) timeout for the drive.
+This value is used by the drive to determine how long to wait (with no 
+disk activity) before turning off the spindle motor to save power.
+Under such circumstances, the drive may take as long as 30 seconds
+to respond to a subsequent disk access, though most drives are much quicker.
+The encoding of the timeout value is somewhat peculiar.  A value of zero
+means "off".  Values from 1 to 240 specify multiples of 5 seconds,
+for timeouts from 5 seconds to 20 minutes.
+Values from 241 to 251 specify from 1 to 11 units of 30 minutes,
+for timeouts from 30 minutes to 5.5 hours.  A value of 252 signifies
+a timeout of 21 minutes, 253 sets a vendor-defined timeout,
+and 255 is interpreted as 21 minutes plus 15 seconds.
+.TP
+.I -T
+Perform timings of cache reads for benchmark and comparison purposes.
+For meaningful results, this operation should be repeated 2-3 times
+on an otherwise inactive system (no other active processes) with at
+least a couple of megabytes of free memory.  This displays the speed
+of reading directly from the Linux buffer cache without disk access.
+This measurement is essentially an indication of the throughput of the
+processor, cache, and memory of the system under test.
+If the
+.I -t
+flag is also specified, then a correction factor based on the outcome of
+.I -T
+will be incorporated into the result reported for the
+.I -t
+operation.
+.TP
+.I -t
+Perform timings of device reads for benchmark and comparison purposes.
+For meaningful results, this operation should be repeated 2-3 times on
+an otherwise inactive system (no other active processes) with at least a
+couple of megabytes of free memory.  This displays the speed of reading
+through the buffer cache to the disk without any prior caching of data.
+This measurement is an indication of how fast the drive can sustain
+sequential data reads under Linux, without any filesystem overhead.  To
+ensure accurate measurments, the buffer cache is flushed during the
+processing of
+.I -t
+using the BLKFLSBUF ioctl.
+If the
+.I -T
+flag is also specified, then a correction factor based on the outcome of
+.I -T
+will be incorporated into the result reported for the
+.I -t
+operation.
+.TP
+.I -u
+Get/set interrupt-unmask flag for the drive.  A setting of
+.B 1
+permits the
+driver to unmask other interrupts during processing of a disk interrupt,
+which greatly improves Linux's responsiveness and eliminates "serial port
+overrun" errors.
+.B Use this feature with caution:
+some drive/controller combinations do
+not tolerate the increased I/O latencies possible when this feature is enabled,
+resulting in
+.B massive filesystem corruption.
+In particular,
+.B CMD-640B
+and
+.B RZ1000
+(E)IDE interfaces can be
+.B unreliable
+(due to a hardware flaw) when this option is used with kernel versions earlier
+than 2.0.13.  Disabling the
+.B IDE prefetch
+feature of these interfaces (usually a BIOS/CMOS setting)
+provides a safe fix for the problem for use with earlier kernels.
+.TP
+.I -U
+Un-register an IDE interface.
+.B Dangerous.
+The companion for the
+.B -R
+option.
+Intended for use with hardware made specifically for hot-swapping (very rare!).  
+Use with knowledge and
+.B extreme caution
+as this can easily hang or damage your system.
+The hdparm source distribution includes a 'contrib' directory with
+some user-donated scripts for hot-swapping on the UltraBay of a ThinkPad 600E.
+Use at your own risk.
+.TP
+.I -v 
+Display all settings, except -i (same as -acdgkmnru for IDE, -gr for SCSI or
+-adgr for XT).  This is also the default behaviour when no flags are specified.
+.TP
+.I -w
+Perform a device reset (DANGEROUS).  Do NOT use this option.
+It exists for unlikely situations where a reboot might otherwise be
+required to get a confused drive back into a useable state.
+.TP
+.I -W
+Disable/enable the IDE drive's write-caching feature
+(default state is undeterminable; manufacturer/model specific).
+.TP
+.I -x 
+Tristate device for hotswap (DANGEROUS).
+.TP
+.I -X 
+Set the IDE transfer mode for newer (E)IDE/ATA drives.
+This is typically used in combination with
+.I -d1
+when enabling DMA to/from a drive on a supported interface chipset, where
+.I -X mdma2
+is used to select multiword DMA mode2 transfers and
+.I -X sdma1 
+is used to select simple mode 1 DMA transfers.
+With systems which support UltraDMA burst timings,
+.I -X udma2
+is used to select UltraDMA mode2 transfers (you'll need to prepare
+the chipset for UltraDMA beforehand).
+Apart from that, use of this flag is
+.I seldom necessary
+since most/all modern IDE drives default to their fastest PIO transfer mode
+at power-on.  Fiddling with this can be both needless and risky.
+On drives which support alternate transfer modes,
+.I -X
+can be used to switch the mode of the drive
+.I only.
+Prior to changing the transfer mode, the IDE interface should be jumpered
+or programmed (see
+.I -p
+flag)
+for the new mode setting to prevent loss and/or corruption of data.
+.I Use this with extreme caution!
+For the PIO (Programmed Input/Output)
+transfer modes used by Linux, this value is simply the desired
+PIO mode number plus 8.
+Thus, a value of 09 sets PIO mode1, 10 enables PIO mode2,
+and 11 selects PIO mode3.
+Setting 00 restores the drive's "default" PIO mode, and 01 disables IORDY.
+For multiword DMA, the value used is the desired DMA mode number
+plus 32.  for UltraDMA, the value is the desired UltraDMA mode number
+plus 64.
+.TP
+.I -y
+Force an IDE drive to immediately enter the low power consumption
+.B standby
+mode, usually causing it to spin down.
+The current power mode status can be checked using the
+.B -C
+flag.
+.TP
+.I -Y
+Force an IDE drive to immediately enter the lowest power consumption
+.B sleep
+mode, causing it to shut down completely.  A hard or soft reset
+is required before the drive can be accessed again
+(the Linux IDE driver will automatically handle issuing a reset if/when needed).
+The current power mode status can be checked using the
+.B -C
+flag.
+.TP
+.I -z
+Force a kernel re-read of the partition table of the specified device(s).
+.TP
+.I -Z
+Disable the automatic power-saving function of certain Seagate drives
+(ST3xxx models?), to prevent them from idling/spinning-down
+at inconvenient times.
+.SH BUGS
+As noted above, the
+.B -m sectcount
+and
+.B -u 1
+options should be used with caution at first, preferably on a
+read-only filesystem.  Most drives work well with these features, but
+a few drive/controller combinations are not 100% compatible.  Filesystem
+corruption may result.  Backup everything before experimenting!
+.PP
+Some options (eg. -r for SCSI) may not work with old kernels as 
+necessary ioctl()'s were not supported.
+.PP
+Although this utility is intended primarily for use with (E)IDE hard disk
+devices, several of the options are also valid (and permitted) for use with 
+SCSI hard disk devices and MFM/RLL hard disks with XT interfaces.
+.SH AUTHOR
+.B hdparm
+has been written by Mark Lord <mlord at pobox.com>, the primary developer and
+maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk.
+.PP
+The disable Seagate auto-powersaving code
+is courtesy of Tomi Leppikangas(tomilepp at paju.oulu.fi).
+.SH SEE ALSO
+.B AT Attachment Interface for Disk Drives,
+ANSI ASC X3T9.2 working draft, revision 4a, April 19, 1993.
+.PP
+.B AT Attachment Interface with Extensions (ATA-2),
+ANSI ASC X3T9.2 working draft, revision 2f, July 26, 1994.
+.PP
+.B AT Attachment with Packet Interface - 5 (ATA/ATAPI-5),
+T13-1321D working draft, revision 3, February 29, 2000.
+.PP
+.B AT Attachment with Packet Interface - 6 (ATA/ATAPI-6),
+T13-1410D working draft, revision 3b, February 26, 2002.
+.PP
+.B Western Digital Enhanced IDE Implementation Guide,
+by Western Digital Corporation, revision 5.0, November 10, 1993.
+.PP
+.B Enhanced Disk Drive Specification,
+by Phoenix Technologies Ltd., version 1.0, January 25, 1994.
diff --git a/raw/man8/ifconfig.8 b/raw/man8/ifconfig.8
new file mode 100644
index 0000000..42d2830
--- /dev/null
+++ b/raw/man8/ifconfig.8
@@ -0,0 +1,200 @@
+.TH IFCONFIG 8 "14 August 2000" "net-tools" "Linux Programmer's Manual"
+.SH NAME
+ifconfig \- configure a network interface
+.SH SYNOPSIS
+.B "ifconfig [interface]"
+.br
+.B "ifconfig interface [aftype] options | address ..."
+.SH DESCRIPTION
+.B Ifconfig
+is used to configure the kernel-resident network interfaces.  It is
+used at boot time to set up interfaces as necessary.  After that, it
+is usually only needed when debugging or when system tuning is needed.
+.LP
+If no arguments are given,
+.B ifconfig
+displays the status of the currently active interfaces.  If
+a single
+.B interface
+argument is given, it displays the status of the given interface
+only; if a single
+.B -a
+argument is given, it displays the status of all interfaces, even
+those that are down.  Otherwise, it configures an interface.
+
+.SH Address Families
+If the first argument after the interface name is recognized as
+the name of a supported address family, that address family is
+used for decoding and displaying all protocol addresses.  Currently
+supported address families include
+.B inet
+(TCP/IP, default), 
+.B inet6
+(IPv6),
+.B ax25
+(AMPR Packet Radio),
+.B ddp
+(Appletalk Phase 2),
+.B ipx
+(Novell IPX) and
+.B netrom
+(AMPR Packet radio).
+.SH OPTIONS
+.TP
+.B interface
+The name of the interface.  This is usually a driver name followed by
+a unit number, for example
+.B eth0
+for the first Ethernet interface.
+.TP
+.B up
+This flag causes the interface to be activated.  It is implicitly
+specified if an address is assigned to the interface.
+.TP
+.B down
+This flag causes the driver for this interface to be shut down.
+.TP
+.B "[\-]arp"
+Enable or disable the use of the ARP protocol on this interface.
+.TP
+.B "[\-]promisc"
+Enable or disable the
+.B promiscuous
+mode of the interface.  If selected, all packets on the network will
+be received by the interface.
+.TP
+.B "[\-]allmulti"
+Enable or disable 
+.B all-multicast
+mode.  If selected, all multicast packets on the network will be
+received by the interface.
+.TP
+.B "metric N"
+This parameter sets the interface metric.
+.TP
+.B "mtu N"
+This parameter sets the Maximum Transfer Unit (MTU) of an interface.
+.TP
+.B "dstaddr addr"
+Set the remote IP address for a point-to-point link (such as
+PPP).  This keyword is now obsolete; use the
+.B pointopoint
+keyword instead.
+.TP
+.B "netmask addr"
+Set the IP network mask for this interface.  This value defaults to the
+usual class A, B or C network mask (as derived from the interface IP
+address), but it can be set to any value.
+.TP
+.B "add addr/prefixlen"
+Add an IPv6 address to an interface. 
+.TP
+.B "del addr/prefixlen"
+Remove an IPv6 address from an interface.
+.TP
+.B "tunnel aa.bb.cc.dd"
+Create a new SIT (IPv6-in-IPv4) device, tunnelling to the given destination.
+.TP
+.B "irq addr"
+Set the interrupt line used by this device.  Not all devices can
+dynamically change their IRQ setting.
+.TP
+.B "io_addr addr"
+Set the start address in I/O space for this device. 
+.TP
+.B "mem_start addr"
+Set the start address for shared memory used by this device.  Only a
+few devices need this.
+.TP
+.B "media type"
+Set the physical port or medium type to be used by the device.  Not
+all devices can change this setting, and those that can vary in what
+values they support.  Typical values for
+.B type
+are 
+.B 10base2
+(thin Ethernet),
+.B 10baseT
+(twisted-pair 10Mbps Ethernet),
+.B AUI 
+(external transceiver) and so on.  The special medium type of
+.B auto
+can be used to tell the driver to auto-sense the media.  Again, not
+all drivers can do this.
+.TP
+.B "[-]broadcast [addr]"
+If the address argument is given, set the protocol broadcast
+address for this interface.  Otherwise, set (or clear) the
+.B IFF_BROADCAST
+flag for the interface.
+.TP
+.B "[-]pointopoint [addr]"
+This keyword enables the
+.B point-to-point
+mode of an interface, meaning that it is a direct link between two
+machines with nobody else listening on it.
+.br
+If the address argument is also given, set the protocol address of
+the other side of the link, just like the obsolete
+.B dstaddr
+keyword does.  Otherwise, set or clear the
+.B IFF_POINTOPOINT
+flag for the interface. 
+.TP
+.B hw class address
+Set the hardware address of this interface, if the device driver
+supports this operation.  The keyword must be followed by the
+name of the hardware class and the printable ASCII equivalent of
+the hardware address.  Hardware classes currently supported include
+.B ether
+(Ethernet),
+.B ax25
+(AMPR AX.25),
+.B ARCnet
+and
+.B netrom
+(AMPR NET/ROM).
+.TP
+.B multicast
+Set the multicast flag on the interface. This should not normally be needed
+as the drivers set the flag correctly themselves.
+.TP
+.B address
+The IP address to be assigned to this interface.
+.TP
+.B txqueuelen length
+Set the length of the transmit queue of the device. It is useful to set this
+to small values for slower devices with a high latency (modem links, ISDN)
+to prevent fast bulk transfers from disturbing interactive traffic like
+telnet too much. 
+.SH NOTES
+Since kernel release 2.2 there are no explicit interface statistics for
+alias interfaces anymore. The statistics printed for the original address
+are shared with all alias addresses on the same device. If you want per-address
+statistics you should add explicit accounting
+rules for the address using the 
+.BR ipchains(8)
+command.
+.LP
+Interrupt problems with Ethernet device drivers fail with EAGAIN. See
+.I http://www.scyld.com/expert/irq-conflict.html
+for more information.
+.SH FILES
+.I /proc/net/socket 
+.br
+.I /proc/net/dev
+.br
+.I /proc/net/if_inet6
+.SH BUGS
+While appletalk DDP and IPX addresses will be displayed they cannot be
+altered by this command.
+.SH SEE ALSO
+route(8), netstat(8), arp(8), rarp(8), ipchains(8)
+.SH AUTHORS
+Fred N. van Kempen, <waltje at uwalt.nl.mugnet.org>
+.br
+Alan Cox, <Alan.Cox at linux.org>
+.br
+Phil Blundell, <Philip.Blundell at pobox.com>
+.br
+Andi Kleen
diff --git a/raw/man8/init.8 b/raw/man8/init.8
new file mode 100644
index 0000000..7885720
--- /dev/null
+++ b/raw/man8/init.8
@@ -0,0 +1,284 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH INIT 8 "18 April 2003" "" "Linux System Administrator's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+init, telinit \- process control initialization
+.\"}}}
+.\"{{{  Synopsis
+.SH SYNOPSIS
+.B /sbin/init
+.RB [ " -a " ]
+.RB [ " -s " ]
+.RB [ " -b " ]
+.RB [ " -z xxx " ]
+.RB [ " 0123456Ss " ]
+.br
+.B /sbin/telinit
+.RB [ " \-t sec " ]
+.RB [ " 0123456sSQqabcUu " ]
+.\"}}}
+.\"{{{  Description
+.SH DESCRIPTION
+.\"{{{  init
+.SS Init
+.B Init
+is the parent of all processes.  Its primary role is to create processes
+from a script stored in the file \fB/etc/inittab\fP (see
+\fIinittab\fP(5)).  This file usually has entries which cause \fBinit\fP
+to spawn \fBgetty\fPs on each line that users can log in.  It also
+controls autonomous processes required by any particular system.
+.PP
+.\"{{{ Runlevels
+.SH RUNLEVELS
+A \fIrunlevel\fP is a software configuration of the system which allows
+only a selected group of processes to exist.  The processes spawned by
+\fBinit\fP for each of these runlevels are defined in the
+\fB/etc/inittab\fP file.  \fBInit\fP can be in one of eight runlevels:
+\fB0\(en6\fP and \fBS\fP or \fBs\fP.  The runlevel is
+changed by having a privileged user run \fBtelinit\fP, which sends
+appropriate signals to \fBinit\fP, telling it which runlevel to change
+to.
+.PP
+Runlevels \fB0\fP, \fB1\fP, and \fB6\fP are reserved. Runlevel 0 is used to
+halt the system, runlevel 6 is used to reboot the system, and runlevel
+1 is used to get the system down into single user mode. Runlevel \fBS\fP
+is not really meant to be used directly, but more for the scripts that are
+executed when entering runlevel 1. For more information on this,
+see the manpages for \fBshutdown\fP(8) and \fBinittab\fP(5).
+.PP
+Runlevels 7-9 are also valid, though not really documented. This is
+because "traditional" Unix variants don't use them.
+In case you're curious, runlevels \fIS\fP and \fIs\fP are in fact the same.
+Internally they are aliases for the same runlevel.
+.\"}}}
+.PP
+.SH BOOTING
+After \fBinit\fP is invoked as the last step of the kernel boot sequence,
+it looks for the file \fB/etc/inittab\fP to see if there is an entry of the
+type \fBinitdefault\fP (see \fIinittab\fP(5)). The \fBinitdefault\fP entry
+determines the initial runlevel of the system.  If there is no such
+entry (or no \fB/etc/inittab\fP at all), a runlevel must be
+entered at the system console.
+.PP
+Runlevel \fBS\fP or \fBs\fP bring the system to single user mode
+and do not require an \fB/etc/inittab\fP file.  In single user mode,
+a root shell is opened on \fB/dev/console\fP.
+.PP
+When entering single user mode, \fBinit\fP initializes the consoles
+\fBstty\fP settings to sane values. Clocal mode is set. Hardware
+speed and handshaking are not changed.
+.PP
+When entering a multi-user mode for the first time, \fBinit\fP performs the
+\fBboot\fP and \fBbootwait\fP entries to allow file systems to be
+mounted before users can log in.  Then all entries matching the runlevel
+are processed.
+.PP
+When starting a new process, \fBinit\fP first checks whether the file
+\fI/etc/initscript\fP exists. If it does, it uses this script to
+start the process.
+.PP
+Each time a child terminates, \fBinit\fP records the fact and the reason
+it died in \fB/var/run/utmp\fP and \fB/var/log/wtmp\fP,
+provided that these files exist.
+.SH CHANGING RUNLEVELS
+After it has spawned all of the processes specified, \fBinit\fP waits
+for one of its descendant processes to die, a powerfail signal, or until
+it is signaled by \fBtelinit\fP to change the system's runlevel.  
+When one of the above three conditions occurs, it re-examines
+the \fB/etc/inittab\fP file.  New entries can be added to this file at
+any time.  However, \fBinit\fP still waits for one of the above three
+conditions to occur.  To provide for an instantaneous response, the
+\fBtelinit Q\fP or \fBq\fP command can wake up \fBinit\fP to re-examine the
+\fB/etc/inittab\fP file.
+.PP
+If \fBinit\fP is not in single user mode and receives a powerfail
+signal (SIGPWR), it reads the file \fB/etc/powerstatus\fP. It then starts
+a command based on the contents of this file:
+.IP F(AIL)
+Power is failing, UPS is providing the power. Execute the \fBpowerwait\fP
+and \fBpowerfail\fP entries.
+.IP O(K)
+The power has been restored, execute the \fBpowerokwait\fP entries.
+.IP L(OW)
+The power is failing and the UPS has a low battery. Execute the
+\fBpowerfailnow\fP entries.
+.PP
+If /etc/powerstatus doesn't exist or contains anything else then the
+letters \fBF\fP, \fBO\fP or \fBL\fP, init will behave as if it has read
+the letter \fBF\fP.
+.PP
+Usage of \fBSIGPWR\fP and \fB/etc/powerstatus\fP is discouraged. Someone
+wanting to interact with \fBinit\fP should use the \fB/dev/initctl\fP
+control channel - see the source code of the \fBsysvinit\fP package
+for more documentation about this.
+.PP
+When \fBinit\fP is requested to change the runlevel, it sends the
+warning signal \s-1\fBSIGTERM\fP\s0 to all processes that are undefined
+in the new runlevel.  It then waits 5 seconds before forcibly
+terminating these processes via the \s-1\fBSIGKILL\fP\s0 signal.
+Note that \fBinit\fP assumes that all these processes (and their
+descendants) remain in the same process group which \fBinit\fP
+originally created for them.  If any process changes its process group
+affiliation it will not receive these signals.  Such processes need to
+be terminated separately.
+.\"}}}
+.\"{{{  telinit
+.SH TELINIT
+\fB/sbin/telinit\fP is linked to \fB/sbin/init\fP.  It takes a
+one-character argument and signals \fBinit\fP to perform the appropriate
+action.  The following arguments serve as directives to
+\fBtelinit\fP:
+.IP "\fB0\fP,\fB1\fP,\fB2\fP,\fB3\fP,\fB4\fP,\fB5\fP or \fB6\fP"
+tell \fBinit\fP to switch to the specified run level.
+.IP \fBa\fP,\fBb\fP,\fBc\fP
+tell \fBinit\fP to process only those \fB/etc/inittab\fP file
+entries having runlevel \fBa\fP,\fBb\fP or \fBc\fP.
+.IP "\fBQ\fP or \fBq\fP"
+tell \fBinit\fP to re-examine the \fB/etc/inittab\fP file.
+.IP "\fBS\fP or \fBs\fP"
+tell \fBinit\fP to switch to single user mode.
+.IP "\fBU\fP or \fBu\fP"
+tell \fBinit\fP to re-execute itself (preserving the state). No re-examining of 
+\fB/etc/inittab\fP file happens. Run level should be one of \fBSs12345\fP,
+otherwise request would be silently ignored.
+.PP
+\fBtelinit\fP can also tell \fBinit\fP how long it should wait
+between sending processes the SIGTERM and SIGKILL signals.  The default
+is 5 seconds, but this can be changed with the \fB-t sec\fP option.
+.PP
+\fBtelinit\fP can be invoked only by users with appropriate
+privileges.
+.PP
+The \fBinit\fP binary checks if it is \fBinit\fP or \fBtelinit\fP by looking
+at its \fIprocess id\fP; the real \fBinit\fP's process id is always \fB1\fP.
+From this it follows that instead of calling \fBtelinit\fP one can also
+just use \fBinit\fP instead as a shortcut.
+.\"}}}
+.\"}}}
+.SH ENVIRONMENT
+\fBInit\fP sets the following environment variables for all its children:
+.IP \fBPATH\fP
+\fI/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin\fP
+.IP \fBINIT_VERSION\fP
+As the name says. Useful to determine if a script runs directly from \fBinit\fP.
+.IP \fBRUNLEVEL\fP
+The current system runlevel.
+.IP \fBPREVLEVEL\fP
+The previous runlevel (useful after a runlevel switch).
+.IP \fBCONSOLE\fP
+The system console. This is really inherited from the kernel; however
+if it is not set \fBinit\fP will set it to \fB/dev/console\fP by default.
+.SH BOOTFLAGS
+It is possible to pass a number of flags to \fBinit\fP from the
+boot monitor (eg. LILO). \fBInit\fP accepts the following flags:
+.TP 0.5i
+.B -s, S, single
+Single user mode boot. In this mode \fI/etc/inittab\fP is
+examined and the bootup rc scripts are usually run before
+the single user mode shell is started.
+.PP
+.TP 0.5i
+.B 1-5
+Runlevel to boot into.
+.PP
+.TP 0.5i
+.B -b, emergency
+Boot directly into a single user shell without running any
+other startup scripts.
+.PP
+.TP 0.5i
+.B -a, auto
+The LILO boot loader adds the word "auto" to the command line if it
+booted the kernel with the default command line (without user intervention).
+If this is found \fBinit\fP sets the "AUTOBOOT" environment
+variable to "yes". Note that you cannot use this for any security
+measures - of course the user could specify "auto" or \-a on the
+command line manually.
+.PP
+.TP 0.5i
+.B -z xxx
+The argument to -z is ignored. You can use this to expand the command
+line a bit, so that it takes some more space on the stack. \fBInit\fP
+can then manipulate the command line so that \fBps\fP(1) shows
+the current runlevel.
+.PP
+.SH INTERFACE
+Init listens on a \fIfifo\fP in /dev, \fI/dev/initctl\fP, for messages.
+\fBTelinit\fP uses this to communicate with init. The interface is not
+very well documented or finished. Those interested should study the
+\fIinitreq.h\fP file in the \fIsrc/\fP subdirectory of the \fBinit\fP
+source code tar archive.
+.SH SIGNALS
+Init reacts to several signals:
+.TP 0.5i
+.B SIGHUP
+Has the same effect as \fBtelinit q\fP.
+.PP
+.TP 0.5i
+.B SIGUSR1
+On receipt of this signals, init closes and re-opens its control fifo,
+\fB/dev/initctl\fP. Useful for bootscripts when /dev is remounted.
+.TP 0.5i
+.B SIGINT
+Normally the kernel sends this signal to init when CTRL-ALT-DEL is
+pressed. It activates the \fIctrlaltdel\fP action.
+.TP 0.5i
+.B SIGWINCH
+The kernel sends this signal when the \fIKeyboardSignal\fP key is hit.
+It activates the \fIkbrequest\fP action.
+\"{{{  Conforming to
+.SH CONFORMING TO
+\fBInit\fP is compatible with the System V init. It works closely
+together with the scripts in the directories
+\fI/etc/init.d\fP and \fI/etc/rc{runlevel}.d\fP.
+If your system uses this convention, there should be a \fIREADME\fP
+file in the directory \fI/etc/init.d\fP explaining how these scripts work.
+.\"}}}
+.\"{{{  Files
+.SH FILES
+.nf
+/etc/inittab
+/etc/initscript
+/dev/console
+/var/run/utmp
+/var/log/wtmp
+/dev/initctl
+.fi
+.\"}}}
+.\"{{{  Warnings
+.SH WARNINGS
+\fBInit\fP assumes that processes and descendants of processes
+remain in the same process group which was originally created
+for them.  If the processes change their group, \fBinit\fP can't
+kill them and you may end up with two processes reading from one
+terminal line.
+.\"}}}
+.\"{{{  Diagnostics
+.SH DIAGNOSTICS
+If \fBinit\fP finds that it is continuously respawning an entry
+more than 10 times in 2 minutes, it will assume that there is an error
+in the command string, generate an error message on the system console,
+and refuse to respawn this entry until either 5 minutes has elapsed or
+it receives a signal.  This prevents it from eating up system resources
+when someone makes a typographical error in the \fB/etc/inittab\fP file
+or the program for the entry is removed.
+.\"}}}
+.\"{{{  Author
+.SH AUTHOR
+Miquel van Smoorenburg (miquels at cistron.nl), initial manual
+page by Michael Haardt (u31b3hs at pool.informatik.rwth-aachen.de).
+.\"}}}
+.\"{{{  See also
+.SH "SEE ALSO"
+.BR getty (1),
+.BR login (1),
+.BR sh (1),
+.BR runlevel (8),
+.BR shutdown(8),
+.BR kill (1),
+.BR inittab (5),
+.BR initscript (5),
+.BR utmp (5)
+.\"}}}
diff --git a/raw/man8/iptables-restore.8 b/raw/man8/iptables-restore.8
new file mode 100644
index 0000000..e2649e5
--- /dev/null
+++ b/raw/man8/iptables-restore.8
@@ -0,0 +1,49 @@
+.TH IPTABLES-RESTORE 8 "Jan 04, 2001" "" ""
+.\"
+.\" Man page written by Harald Welte <laforge at gnumonks.org>
+.\" It is based on the iptables man page.
+.\"
+.\"	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 version.
+.\"
+.\"	This program is distributed in the hope that it will be useful,
+.\"	but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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.
+.\"
+.\"
+.SH NAME
+iptables-restore \- Restore IP Tables
+.SH SYNOPSIS
+.BR "iptables-restore " "[-c] [-n]"
+.br
+.SH DESCRIPTION
+.PP
+.B iptables-restore
+is used to restore IP Tables from data specified on STDIN. Use 
+I/O redirection provided by your shell to read from a file
+.TP
+\fB\-c\fR, \fB\-\-counters\fR
+restore the values of all packet and byte counters
+.TP
+\fB\-n\fR, \fB\-\-noflush\fR 
+.TP
+don't flush the previous contents of the table. If not specified, 
+.B iptables-restore
+flushes (deletes) all previous contents of the respective IP Table.
+.SH BUGS
+None known as of iptables-1.2.1 release
+.SH AUTHOR
+Harald Welte <laforge at gnumonks.org>
+.SH SEE ALSO
+.BR iptables-save "(8), " iptables "(8) "
+.PP
+The iptables-HOWTO, which details more iptables usage, the NAT-HOWTO,
+which details NAT, and the netfilter-hacking-HOWTO which details the
+internals.
diff --git a/raw/man8/iptables-save.8 b/raw/man8/iptables-save.8
new file mode 100644
index 0000000..f9c7d65
--- /dev/null
+++ b/raw/man8/iptables-save.8
@@ -0,0 +1,48 @@
+.TH IPTABLES-SAVE 8 "Jan 04, 2001" "" ""
+.\"
+.\" Man page written by Harald Welte <laforge at gnumonks.org>
+.\" It is based on the iptables man page.
+.\"
+.\"	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 version.
+.\"
+.\"	This program is distributed in the hope that it will be useful,
+.\"	but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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.
+.\"
+.\"
+.SH NAME
+iptables-save \- Save IP Tables
+.SH SYNOPSIS
+.BR "iptables-save " "[-c] [-t table]"
+.br
+.SH DESCRIPTION
+.PP
+.B iptables-save
+is used to dump the contents of an IP Table in easily parseable format
+to STDOUT. Use I/O-redirection provided by your shell to write to a file.
+.TP
+\fB\-c\fR, \fB\-\-counters\fR
+include the current values of all packet and byte counters in the output
+.TP
+\fB\-t\fR, \fB\-\-table\fR \fBtablename\fR
+.TP
+restrict output to only one table. If not specified, output includes all
+available tables.
+.SH BUGS
+None known as of iptables-1.2.1 release
+.SH AUTHOR
+Harald Welte <laforge at gnumonks.org>
+.SH SEE ALSO
+.BR iptables-restore "(8), " iptables "(8) "
+.PP
+The iptables-HOWTO, which details more iptables usage, the NAT-HOWTO,
+which details NAT, and the netfilter-hacking-HOWTO which details the
+internals.
diff --git a/raw/man8/iptables.8 b/raw/man8/iptables.8
new file mode 100644
index 0000000..c1039fb
--- /dev/null
+++ b/raw/man8/iptables.8
@@ -0,0 +1,1044 @@
+.TH IPTABLES 8 "Mar 09, 2002" "" ""
+.\"
+.\" Man page written by Herve Eychenne <rv at wallfire.org> (May 1999)
+.\" It is based on ipchains page.
+.\" TODO: add a word for protocol helpers (FTP, IRC, SNMP-ALG)
+.\"
+.\" ipchains page by Paul ``Rusty'' Russell March 1997
+.\" Based on the original ipfwadm man page by Jos Vos <jos at xos.nl>
+.\"
+.\"	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 version.
+.\"
+.\"	This program is distributed in the hope that it will be useful,
+.\"	but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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.
+.\"
+.\"
+.SH NAME
+iptables \- administration tool for IPv4 packet filtering and NAT
+.SH SYNOPSIS
+.BR "iptables [-t table] -[ADC] " "chain rule-specification [options]"
+.br
+.BR "iptables [-t table] -I " "chain [rulenum] rule-specification [options]"
+.br
+.BR "iptables [-t table] -R " "chain rulenum rule-specification [options]"
+.br
+.BR "iptables [-t table] -D " "chain rulenum [options]"
+.br
+.BR "iptables [-t table] -[LFZ] " "[chain] [options]"
+.br
+.BR "iptables [-t table] -N " "chain"
+.br
+.BR "iptables [-t table] -X " "[chain]"
+.br
+.BR "iptables [-t table] -P " "chain target [options]"
+.br
+.BR "iptables [-t table] -E " "old-chain-name new-chain-name"
+.SH DESCRIPTION
+.B Iptables
+is used to set up, maintain, and inspect the tables of IP packet
+filter rules in the Linux kernel.  Several different tables
+may be defined.  Each table contains a number of built-in
+chains and may also contain user-defined chains.
+
+Each chain is a list of rules which can match a set of packets.  Each
+rule specifies what to do with a packet that matches.  This is called
+a `target', which may be a jump to a user-defined chain in the same
+table.
+
+.SH TARGETS
+A firewall rule specifies criteria for a packet, and a target.  If the
+packet does not match, the next rule in the chain is the examined; if
+it does match, then the next rule is specified by the value of the
+target, which can be the name of a user-defined chain or one of the
+special values 
+.IR ACCEPT ,
+.IR DROP ,
+.IR QUEUE ,
+or
+.IR RETURN .
+.PP
+.I ACCEPT 
+means to let the packet through.
+.I DROP
+means to drop the packet on the floor.
+.I QUEUE
+means to pass the packet to userspace (if supported by the kernel).
+.I RETURN
+means stop traversing this chain and resume at the next rule in the
+previous (calling) chain.  If the end of a built-in chain is reached
+or a rule in a built-in chain with target
+.I RETURN
+is matched, the target specified by the chain policy determines the
+fate of the packet.
+.SH TABLES
+There are currently three independent tables (which tables are present
+at any time depends on the kernel configuration options and which
+modules are present).
+.TP
+.BI "-t, --table " "table"
+This option specifies the packet matching table which the command
+should operate on.  If the kernel is configured with automatic module
+loading, an attempt will be made to load the appropriate module for
+that table if it is not already there.
+
+The tables are as follows:
+.TP
+.B "filter"
+This is the default table (if no -t option is passed).  It contains
+the built-in chains
+.B INPUT
+(for packets coming into the box itself),
+.B FORWARD
+(for packets being routed through the box), and
+.B OUTPUT
+(for locally-generated packets).
+.TP
+.B "nat"
+This table is consulted when a packet that creates a new
+connection is encountered.  It consists of three built-ins:
+.B PREROUTING
+(for altering packets as soon as they come in),
+.B OUTPUT
+(for altering locally-generated packets before routing), and
+.B POSTROUTING
+(for altering packets as they are about to go out).
+.TP
+.B "mangle"
+This table is used for specialized packet alteration.  Until kernel
+2.4.17 it had two built-in chains:
+.B PREROUTING
+(for altering incoming packets before routing) and
+.B OUTPUT
+(for altering locally-generated packets before routing).
+Since kernel 2.4.18, three other built-in chains are also supported:
+.B INPUT
+(for packets coming into the box itself),
+.B FORWARD
+(for altering packets being routed through the box), and
+.B POSTROUTING
+(for altering packets as they are about to go out).
+.SH OPTIONS
+The options that are recognized by
+.B iptables
+can be divided into several different groups.
+.SS COMMANDS
+These options specify the specific action to perform.  Only one of them
+can be specified on the command line unless otherwise specified
+below.  For all the long versions of the command and option names, you
+need to use only enough letters to ensure that
+.B iptables
+can differentiate it from all other options.
+.TP
+.BI "-A, --append " "chain rule-specification"
+Append one or more rules to the end of the selected chain.
+When the source and/or destination names resolve to more than one
+address, a rule will be added for each possible address combination.
+.TP
+.BI "-D, --delete " "chain rule-specification"
+.ns
+.TP
+.BI "-D, --delete " "chain rulenum"
+Delete one or more rules from the selected chain.  There are two
+versions of this command: the rule can be specified as a number in the
+chain (starting at 1 for the first rule) or a rule to match.
+.TP
+.BR "-I, --insert " "\fIchain\fP [\fIrulenum\fP] \fIrule-specification\fP"
+Insert one or more rules in the selected chain as the given rule
+number.  So, if the rule number is 1, the rule or rules are inserted
+at the head of the chain.  This is also the default if no rule number
+is specified.
+.TP
+.BI "-R, --replace " "chain rulenum rule-specification"
+Replace a rule in the selected chain.  If the source and/or
+destination names resolve to multiple addresses, the command will
+fail.  Rules are numbered starting at 1.
+.TP
+.BR "-L, --list " "[\fIchain\fP]"
+List all rules in the selected chain.  If no chain is selected, all
+chains are listed.  As every other iptables command, it applies to the
+specified table (filter is the default), so NAT rules get listed by
+.br
+ iptables -t nat -n -L
+.br
+Please note that it is often used with the
+.B -n
+option, in order to avoid long reverse DNS lookups.
+It is legal to specify the
+.B -Z
+(zero) option as well, in which case the chain(s) will be atomically
+listed and zeroed.  The exact output is affected by the other
+arguments given. The exact rules are suppressed until you use
+.br
+ iptables -L -v
+.br
+.TP
+.BR "-F, --flush " "[\fIchain\fP]"
+Flush the selected chain (all the chains in the table if none is given).
+This is equivalent to deleting all the rules one by one.
+.TP
+.BR "-Z, --zero " "[\fIchain\fP]"
+Zero the packet and byte counters in all chains.  It is legal to
+specify the
+.B "-L, --list"
+(list) option as well, to see the counters immediately before they are
+cleared. (See above.)
+.TP
+.BI "-N, --new-chain " "chain"
+Create a new user-defined chain by the given name.  There must be no
+target of that name already.
+.TP
+.BR "-X, --delete-chain " "[\fIchain\fP]"
+Delete the optional user-defined chain specified.  There must be no references
+to the chain.  If there are, you must delete or replace the referring
+rules before the chain can be deleted.  If no argument is given, it
+will attempt to delete every non-builtin chain in the table.
+.TP
+.BI "-P, --policy " "chain target"
+Set the policy for the chain to the given target.  See the section
+.B TARGETS
+for the legal targets.  Only built-in (non-user-defined) chains can have
+policies, and neither built-in nor user-defined chains can be policy
+targets.
+.TP
+.BI "-E, --rename-chain " "old-chain new-chain"
+Rename the user specified chain to the user supplied name.  This is
+cosmetic, and has no effect on the structure of the table.
+.TP
+.B -h
+Help.
+Give a (currently very brief) description of the command syntax.
+.SS PARAMETERS
+The following parameters make up a rule specification (as used in the
+add, delete, insert, replace and append commands).
+.TP
+.BR "-p, --protocol " "[!] \fIprotocol\fP"
+The protocol of the rule or of the packet to check.
+The specified protocol can be one of
+.IR tcp ,
+.IR udp ,
+.IR icmp ,
+or
+.IR all ,
+or it can be a numeric value, representing one of these protocols or a
+different one.  A protocol name from /etc/protocols is also allowed.
+A "!" argument before the protocol inverts the
+test.  The number zero is equivalent to
+.IR all .
+Protocol
+.I all
+will match with all protocols and is taken as default when this
+option is omitted.
+.TP
+.BR "-s, --source " "[!] \fIaddress\fP[/\fImask\fP]"
+Source specification.
+.I Address
+can be either a network name, a hostname (please note that specifying
+any name to be resolved with a remote query such as DNS is a really bad idea),
+a network IP address (with /mask), or a plain IP address.
+The
+.I mask
+can be either a network mask or a plain number,
+specifying the number of 1's at the left side of the network mask.
+Thus, a mask of
+.I 24
+is equivalent to
+.IR 255.255.255.0 .
+A "!" argument before the address specification inverts the sense of
+the address. The flag
+.B --src
+is an alias for this option.
+.TP
+.BR "-d, --destination " "[!] \fIaddress\fP[/\fImask\fP]"
+Destination specification. 
+See the description of the
+.B -s
+(source) flag for a detailed description of the syntax.  The flag
+.B --dst
+is an alias for this option.
+.TP
+.BI "-j, --jump " "target"
+This specifies the target of the rule; i.e., what to do if the packet
+matches it.  The target can be a user-defined chain (other than the
+one this rule is in), one of the special builtin targets which decide
+the fate of the packet immediately, or an extension (see
+.B EXTENSIONS
+below).  If this
+option is omitted in a rule, then matching the rule will have no
+effect on the packet's fate, but the counters on the rule will be
+incremented.
+.TP
+.BR "-i, --in-interface " "[!] \fIname\fP"
+Name of an interface via which a packet is going to be received (only for
+packets entering the 
+.BR INPUT ,
+.B FORWARD
+and
+.B PREROUTING
+chains).  When the "!" argument is used before the interface name, the
+sense is inverted.  If the interface name ends in a "+", then any
+interface which begins with this name will match.  If this option is
+omitted, any interface name will match.
+.TP
+.BR "-o, --out-interface " "[!] \fIname\fP"
+Name of an interface via which a packet is going to be sent (for packets
+entering the
+.BR FORWARD ,
+.B OUTPUT
+and
+.B POSTROUTING
+chains).  When the "!" argument is used before the interface name, the
+sense is inverted.  If the interface name ends in a "+", then any
+interface which begins with this name will match.  If this option is
+omitted, any interface name will match.
+.TP
+.B "[!] " "-f, --fragment"
+This means that the rule only refers to second and further fragments
+of fragmented packets.  Since there is no way to tell the source or
+destination ports of such a packet (or ICMP type), such a packet will
+not match any rules which specify them.  When the "!" argument
+precedes the "-f" flag, the rule will only match head fragments, or
+unfragmented packets.
+.TP
+.BI "-c, --set-counters " "PKTS BYTES"
+This enables the administrator to initialize the packet and byte
+counters of a rule (during
+.B INSERT,
+.B APPEND,
+.B REPLACE
+operations).
+.SS "OTHER OPTIONS"
+The following additional options can be specified:
+.TP
+.B "-v, --verbose"
+Verbose output.  This option makes the list command show the interface
+name, the rule options (if any), and the TOS masks.  The packet and
+byte counters are also listed, with the suffix 'K', 'M' or 'G' for
+1000, 1,000,000 and 1,000,000,000 multipliers respectively (but see
+the
+.B -x
+flag to change this).
+For appending, insertion, deletion and replacement, this causes
+detailed information on the rule or rules to be printed.
+.TP
+.B "-n, --numeric"
+Numeric output.
+IP addresses and port numbers will be printed in numeric format.
+By default, the program will try to display them as host names,
+network names, or services (whenever applicable).
+.TP
+.B "-x, --exact"
+Expand numbers.
+Display the exact value of the packet and byte counters,
+instead of only the rounded number in K's (multiples of 1000)
+M's (multiples of 1000K) or G's (multiples of 1000M).  This option is
+only relevant for the 
+.B -L
+command.
+.TP
+.B "--line-numbers"
+When listing rules, add line numbers to the beginning of each rule,
+corresponding to that rule's position in the chain.
+.TP
+.B "--modprobe=command"
+When adding or inserting rules into a chain, use
+.B command
+to load any necessary modules (targets, match extensions, etc).
+.SH MATCH EXTENSIONS
+iptables can use extended packet matching modules.  These are loaded
+in two ways: implicitly, when
+.B -p
+or
+.B --protocol
+is specified, or with the
+.B -m
+or
+.B --match
+options, followed by the matching module name; after these, various
+extra command line options become available, depending on the specific
+module.  You can specify multiple extended match modules in one line,
+and you can use the
+.B -h
+or
+.B --help
+options after the module has been specified to receive help specific
+to that module.
+
+The following are included in the base package, and most of these can
+be preceded by a
+.B !
+to invert the sense of the match.
+.SS ah
+This module matches the SPIs in AH header of IPSec packets.
+.TP
+.BR "--ahspi " "[!] \fIspi\fP[:\fIspi\fP]"
+.SS conntrack
+This module, when combined with connection tracking, allows access to
+more connection tracking information than the "state" match.
+(this module is present only if iptables was compiled under a kernel
+supporting this feature)
+.TP
+.BI "--ctstate " "state"
+Where state is a comma separated list of the connection states to
+match.  Possible states are
+.B INVALID
+meaning that the packet is associated with no known connection,
+.B ESTABLISHED
+meaning that the packet is associated with a connection which has seen
+packets in both directions,
+.B NEW
+meaning that the packet has started a new connection, or otherwise
+associated with a connection which has not seen packets in both
+directions, and
+.B RELATED
+meaning that the packet is starting a new connection, but is
+associated with an existing connection, such as an FTP data transfer,
+or an ICMP error.
+.B SNAT
+A virtual state, matching if the original source address differs from
+the reply destination.
+.B DNAT
+A virtual state, matching if the original destination differs from the
+reply source.
+.TP
+.BI "--ctproto " "proto"
+Protocol to match (by number or name)
+.TP
+.BI "--ctorigsrc " "[!] \fIaddress\fP[/\fImask\fP]"
+Match against original source address
+.TP
+.BI "--ctorigdst " "[!] \fIaddress\fP[/\fImask\fP]"
+Match against original destination address
+.TP
+.BI "--ctreplsrc " "[!] \fIaddress\fP[/\fImask\fP]"
+Match against reply source address
+.TP
+.BI "--ctrepldst " "[!] \fIaddress\fB[/\fImask\fP]"
+Match against reply destination address
+.TP
+.BI "--ctstatus " "[\fINONE|EXPECTED|SEEN_REPLY|ASSURED\fP][,...]"
+Match against internal conntrack states
+.TP
+.BI "--ctexpire " "\fItime\fP[\fI:time\fP]"
+Match remaining lifetime in seconds against given value
+or range of values (inclusive)
+.SS dscp
+This module matches the 6 bit DSCP field within the TOS field in the
+IP header.  DSCP has superseded TOS within the IETF.
+.TP
+.BI "--dscp " "value"
+Match against a numeric (decimal or hex) value [0-32].
+.TP
+.BI "--dscp-class " "\fIDiffServ Class\fP"
+Match the DiffServ class. This value may be any of the
+BE, EF, AFxx or CSx classes.  It will then be converted
+into it's according numeric value.
+.SS esp
+This module matches the SPIs in ESP header of IPSec packets.
+.TP
+.BR "--espspi " "[!] \fIspi\fP[:\fIspi\fP]"
+.SS helper
+This module matches packets related to a specific conntrack-helper.
+.TP
+.BI "--helper " "string"
+Matches packets related to the specified conntrack-helper.
+.TP
+string can be "ftp" for packets related to a ftp-session on default port.
+For other ports append -portnr to the value, ie. "ftp-2121".
+.br
+Same rules apply for other conntrack-helpers.
+.br
+.SS icmp
+This extension is loaded if `--protocol icmp' is specified.  It
+provides the following option:
+.TP
+.BR "--icmp-type " "[!] \fItypename\fP"
+This allows specification of the ICMP type, which can be a numeric
+ICMP type, or one of the ICMP type names shown by the command
+.br
+ iptables -p icmp -h
+.br
+.SS length
+This module matches the length of a packet against a specific value
+or range of values.
+.TP
+.BR "--length " "\fIlength\fP[:\fIlength\fP]"
+.SS limit
+This module matches at a limited rate using a token bucket filter.
+A rule using this extension will match until this limit is reached
+(unless the `!' flag is used).  It can be used in combination with the
+.B LOG
+target to give limited logging, for example.
+.TP
+.BI "--limit " "rate"
+Maximum average matching rate: specified as a number, with an optional
+`/second', `/minute', `/hour', or `/day' suffix; the default is
+3/hour.
+.TP
+.BI "--limit-burst " "number"
+Maximum initial number of packets to match: this number gets
+recharged by one every time the limit specified above is not reached,
+up to this number; the default is 5.
+.SS mac
+.TP
+.BR "--mac-source " "[!] \fIaddress\fP"
+Match source MAC address.  It must be of the form XX:XX:XX:XX:XX:XX.
+Note that this only makes sense for packets coming from an Ethernet device
+and entering the
+.BR PREROUTING ,
+.B FORWARD
+or
+.B INPUT
+chains.
+.SS mark
+This module matches the netfilter mark field associated with a packet
+(which can be set using the
+.B MARK
+target below).
+.TP
+.BR "--mark " "\fIvalue\fP[/\fImask\fP]"
+Matches packets with the given unsigned mark value (if a mask is
+specified, this is logically ANDed with the mask before the
+comparison).
+.SS multiport
+This module matches a set of source or destination ports.  Up to 15
+ports can be specified.  It can only be used in conjunction with
+.B "-p tcp"
+or
+.BR "-p udp" .
+.TP
+.BR "--source-ports " "\fIport\fP[,\fIport\fP[,\fIport\fP...]]"
+Match if the source port is one of the given ports.  The flag
+.B --sports
+is a convenient alias for this option.
+.TP
+.BR "--destination-ports " "\fIport\fP[,\fIport\fP[,\fIport\fP...]]"
+Match if the destination port is one of the given ports.  The flag
+.B --dports
+is a convenient alias for this option.
+.TP
+.BR "--ports " "\fIport\fP[,\fIport\fP[,\fIport\fP...]]"
+Match if the both the source and destination ports are equal to each
+other and to one of the given ports.
+.SS owner
+This module attempts to match various characteristics of the packet
+creator, for locally-generated packets.  It is only valid in the
+.B OUTPUT
+chain, and even this some packets (such as ICMP ping responses) may
+have no owner, and hence never match.
+.TP
+.BI "--uid-owner " "userid"
+Matches if the packet was created by a process with the given
+effective user id.
+.TP
+.BI "--gid-owner " "groupid"
+Matches if the packet was created by a process with the given
+effective group id.
+.TP
+.BI "--pid-owner " "processid"
+Matches if the packet was created by a process with the given
+process id.
+.TP
+.BI "--sid-owner " "sessionid"
+Matches if the packet was created by a process in the given session
+group.
+.TP
+.BI "--cmd-owner " "name"
+Matches if the packet was created by a process with the given command name.
+(this option is present only if iptables was compiled under a kernel
+supporting this feature)
+.SS physdev
+This module matches on the bridge port input and output devices enslaved
+to a bridge device. This is only useful if the input device or output device
+is a bridge device. This module is a part of the infrastructure that enables
+a transparent bridging IP firewall and is only useful for kernel versions
+above version 2.5.44.
+.TP
+.B --physdev-in name
+Name of a bridge port via which a packet is received (only for
+packets entering the
+.BR INPUT ,
+.B FORWARD
+and
+.B PREROUTING
+chains). If the interface name ends in a "+", then any
+interface which begins with this name will match.
+.TP
+.B --physdev-out name
+Name of a bridge port via which a packet is going to be sent (for packets
+entering the
+.BR FORWARD ,
+.B OUTPUT
+and
+.B POSTROUTING
+chains).  If the interface name ends in a "+", then any
+interface which begins with this name will match. Note that in the
+.BR nat " and " mangle
+.B OUTPUT
+chains one cannot match on the bridge output port, however one can in the
+.B "filter OUTPUT"
+chain.
+.SS pkttype
+This module matches the link-layer packet type.
+.TP
+.BI "--pkt-type " "[\fIunicast\fP|\fIbroadcast\fP|\fImulticast\fP]"
+.SS state
+This module, when combined with connection tracking, allows access to
+the connection tracking state for this packet.
+.TP
+.BI "--state " "state"
+Where state is a comma separated list of the connection states to
+match.  Possible states are
+.B INVALID
+meaning that the packet is associated with no known connection,
+.B ESTABLISHED
+meaning that the packet is associated with a connection which has seen
+packets in both directions,
+.B NEW
+meaning that the packet has started a new connection, or otherwise
+associated with a connection which has not seen packets in both
+directions, and
+.B RELATED
+meaning that the packet is starting a new connection, but is
+associated with an existing connection, such as an FTP data transfer,
+or an ICMP error.
+.SS tcp
+These extensions are loaded if `--protocol tcp' is specified. It
+provides the following options:
+.TP
+.BR "--source-port " "[!] \fIport\fP[:\fIport\fP]"
+Source port or port range specification. This can either be a service
+name or a port number. An inclusive range can also be specified,
+using the format
+.IR port : port .
+If the first port is omitted, "0" is assumed; if the last is omitted,
+"65535" is assumed.
+If the second port greater then the first they will be swapped.
+The flag
+.B --sport
+is a convenient alias for this option.
+.TP
+.BR "--destination-port " "[!] \fIport\fP[:\fIport\fP]"
+Destination port or port range specification.  The flag
+.B --dport
+is a convenient alias for this option.
+.TP
+.BR "--tcp-flags " "[!] \fImask\fP \fIcomp\fP"
+Match when the TCP flags are as specified.  The first argument is the
+flags which we should examine, written as a comma-separated list, and
+the second argument is a comma-separated list of flags which must be
+set.  Flags are:
+.BR "SYN ACK FIN RST URG PSH ALL NONE" .
+Hence the command
+.br
+ iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
+.br
+will only match packets with the SYN flag set, and the ACK, FIN and
+RST flags unset.
+.TP
+.B "[!] --syn"
+Only match TCP packets with the SYN bit set and the ACK and RST bits
+cleared.  Such packets are used to request TCP connection initiation;
+for example, blocking such packets coming in an interface will prevent
+incoming TCP connections, but outgoing TCP connections will be
+unaffected.
+It is equivalent to \fB--tcp-flags SYN,RST,ACK SYN\fP.
+If the "!" flag precedes the "--syn", the sense of the
+option is inverted.
+.TP
+.BR "--tcp-option " "[!] \fInumber\fP"
+Match if TCP option set.
+.TP
+.BR "--mss " "\fIvalue\fP[:\fIvalue\fP]"
+Match TCP SYN or SYN/ACK packets with the specified MSS value (or range),
+which control the maximum packet size for that connection.
+.SS tos
+This module matches the 8 bits of Type of Service field in the IP
+header (ie. including the precedence bits).
+.TP
+.BI "--tos " "tos"
+The argument is either a standard name, (use
+.br
+ iptables -m tos -h
+.br
+to see the list), or a numeric value to match.
+.SS ttl
+This module matches the time to live field in the IP header.
+.TP
+.BI "--ttl " "ttl"
+Matches the given TTL value.
+.SS udp
+These extensions are loaded if `--protocol udp' is specified.  It
+provides the following options:
+.TP
+.BR "--source-port " "[!] \fIport\fP[:\fIport\fP]"
+Source port or port range specification.
+See the description of the
+.B --source-port
+option of the TCP extension for details.
+.TP
+.BR "--destination-port " "[!] \fIport\fP[:\fIport\fP]"
+Destination port or port range specification.
+See the description of the
+.B --destination-port
+option of the TCP extension for details.
+.SS unclean
+This module takes no options, but attempts to match packets which seem
+malformed or unusual.  This is regarded as experimental.
+.SH TARGET EXTENSIONS
+iptables can use extended target modules: the following are included
+in the standard distribution.
+.SS DNAT
+This target is only valid in the
+.B nat
+table, in the
+.B PREROUTING
+and
+.B OUTPUT
+chains, and user-defined chains which are only called from those
+chains.  It specifies that the destination address of the packet
+should be modified (and all future packets in this connection will
+also be mangled), and rules should cease being examined.  It takes one
+type of option:
+.TP
+.BR "--to-destination " "\fIipaddr\fP[-\fIipaddr\fP][:\fIport\fP-\fIport\fP]"
+which can specify a single new destination IP address, an inclusive
+range of IP addresses, and optionally, a port range (which is only
+valid if the rule also specifies
+.B "-p tcp"
+or
+.BR "-p udp" ).
+If no port range is specified, then the destination port will never be
+modified.
+.TP
+You can add several --to-destination options.  If you specify more
+than one destination address, either via an address range or multiple
+--to-destination options, a simple round-robin (one after another in
+cycle) load balancing takes place between these adresses.
+.SS DSCP
+This target allows to alter the value of the DSCP bits within the TOS
+header of the IPv4 packet.  As this manipulates a packet, it can only
+be used in the mangle table.
+.TP
+.BI "--set-dscp " "value"
+Set the DSCP field to a numerical value (can be decimal or hex)
+.TP
+.BI "--set-dscp-class " "class"
+Set the DSCP field to a DiffServ class.
+.SS ECN
+This target allows to selectively work around known ECN blackholes.
+It can only be used in the mangle table.
+.TP
+.BI "--ecn-tcp-remove"
+Remove all ECN bits from the TCP header.  Of course, it can only be used
+in conjunction with
+.BR "-p tcp" .
+.SS LOG
+Turn on kernel logging of matching packets.  When this option is set
+for a rule, the Linux kernel will print some information on all
+matching packets (like most IP header fields) via the kernel log
+(where it can be read with
+.I dmesg
+or 
+.IR syslogd (8)).
+This is a "non-terminating target", i.e. rule traversal continues at
+the next rule.  So if you want to LOG the packets you refuse, use two
+separate rules with the same matching criteria, first using target LOG
+then DROP (or REJECT).
+.TP
+.BI "--log-level " "level"
+Level of logging (numeric or see \fIsyslog.conf\fP(5)).
+.TP
+.BI "--log-prefix " "prefix"
+Prefix log messages with the specified prefix; up to 29 letters long,
+and useful for distinguishing messages in the logs.
+.TP
+.B --log-tcp-sequence
+Log TCP sequence numbers. This is a security risk if the log is
+readable by users.
+.TP
+.B --log-tcp-options
+Log options from the TCP packet header.
+.TP
+.B --log-ip-options
+Log options from the IP packet header.
+.SS MARK
+This is used to set the netfilter mark value associated with the
+packet.  It is only valid in the
+.B mangle
+table.  It can for example be used in conjunction with iproute2.
+.TP
+.BI "--set-mark " "mark"
+.SS MASQUERADE
+This target is only valid in the
+.B nat
+table, in the
+.B POSTROUTING
+chain.  It should only be used with dynamically assigned IP (dialup)
+connections: if you have a static IP address, you should use the SNAT
+target.  Masquerading is equivalent to specifying a mapping to the IP
+address of the interface the packet is going out, but also has the
+effect that connections are
+.I forgotten
+when the interface goes down.  This is the correct behavior when the
+next dialup is unlikely to have the same interface address (and hence
+any established connections are lost anyway).  It takes one option:
+.TP
+.BR "--to-ports " "\fIport\fP[-\fIport\fP]"
+This specifies a range of source ports to use, overriding the default
+.B SNAT
+source port-selection heuristics (see above).  This is only valid
+if the rule also specifies
+.B "-p tcp"
+or
+.BR "-p udp" .
+.SS MIRROR
+This is an experimental demonstration target which inverts the source
+and destination fields in the IP header and retransmits the packet.
+It is only valid in the
+.BR INPUT ,
+.B FORWARD
+and
+.B PREROUTING
+chains, and user-defined chains which are only called from those
+chains.  Note that the outgoing packets are
+.B NOT
+seen by any packet filtering chains, connection tracking or NAT, to
+avoid loops and other problems.
+.SS REDIRECT
+This target is only valid in the
+.B nat
+table, in the
+.B PREROUTING
+and
+.B OUTPUT
+chains, and user-defined chains which are only called from those
+chains.  It alters the destination IP address to send the packet to
+the machine itself (locally-generated packets are mapped to the
+127.0.0.1 address).  It takes one option:
+.TP
+.BR "--to-ports " "\fIport\fP[-\fIport\fP]"
+This specifies a destination port or range of ports to use: without
+this, the destination port is never altered.  This is only valid
+if the rule also specifies
+.B "-p tcp"
+or
+.BR "-p udp" .
+.SS REJECT
+This is used to send back an error packet in response to the matched
+packet: otherwise it is equivalent to
+.B DROP
+so it is a terminating TARGET, ending rule traversal.
+This target is only valid in the
+.BR INPUT ,
+.B FORWARD
+and
+.B OUTPUT
+chains, and user-defined chains which are only called from those
+chains.  The following option controls the nature of the error packet
+returned:
+.TP
+.BI "--reject-with " "type"
+The type given can be
+.BR icmp-net-unreachable ,
+.BR icmp-host-unreachable ,
+.BR icmp-port-unreachable ,
+.BR icmp-proto-unreachable ,
+.BR "icmp-net-prohibited or"
+.BR icmp-host-prohibited ,
+which return the appropriate ICMP error message (\fBport-unreachable\fP is
+the default).  The option
+.B tcp-reset
+can be used on rules which only match the TCP protocol: this causes a
+TCP RST packet to be sent back.  This is mainly useful for blocking 
+.I ident
+(113/tcp) probes which frequently occur when sending mail to broken mail
+hosts (which won't accept your mail otherwise).
+.SS SNAT
+This target is only valid in the
+.B nat
+table, in the
+.B POSTROUTING
+chain.  It specifies that the source address of the packet should be
+modified (and all future packets in this connection will also be
+mangled), and rules should cease being examined.  It takes one type
+of option:
+.TP
+.BR "--to-source  " "\fIipaddr\fP[-\fIipaddr\fP][:\fIport\fP-\fIport\fP]"
+which can specify a single new source IP address, an inclusive range
+of IP addresses, and optionally, a port range (which is only valid if
+the rule also specifies
+.B "-p tcp"
+or
+.BR "-p udp" ).
+If no port range is specified, then source ports below 512 will be
+mapped to other ports below 512: those between 512 and 1023 inclusive
+will be mapped to ports below 1024, and other ports will be mapped to
+1024 or above. Where possible, no port alteration will occur.
+.TP
+You can add several --to-source options.  If you specify more
+than one source address, either via an address range or multiple
+--to-source options, a simple round-robin (one after another in
+cycle) takes place between these adresses.
+.SS TCPMSS
+This target allows to alter the MSS value of TCP SYN packets, to control
+the maximum size for that connection (usually limiting it to your
+outgoing interface's MTU minus 40).  Of course, it can only be used
+in conjunction with
+.BR "-p tcp" .
+.br
+This target is used to overcome criminally braindead ISPs or servers
+which block ICMP Fragmentation Needed packets.  The symptoms of this
+problem are that everything works fine from your Linux
+firewall/router, but machines behind it can never exchange large
+packets:
+.br
+ 1) Web browsers connect, then hang with no data received.
+.br
+ 2) Small mail works fine, but large emails hang.
+.br
+ 3) ssh works fine, but scp hangs after initial handshaking.
+.br
+Workaround: activate this option and add a rule to your firewall
+configuration like:
+.br
+ iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \\
+.br
+             -j TCPMSS --clamp-mss-to-pmtu
+.TP
+.BI "--set-mss " "value"
+Explicitly set MSS option to specified value.
+.TP
+.B "--clamp-mss-to-pmtu"
+Automatically clamp MSS value to (path_MTU - 40).
+.TP
+These options are mutually exclusive.
+.SS TOS
+This is used to set the 8-bit Type of Service field in the IP header.
+It is only valid in the
+.B mangle
+table.
+.TP
+.BI "--set-tos " "tos"
+You can use a numeric TOS values, or use
+.br
+ iptables -j TOS -h
+.br
+to see the list of valid TOS names.
+.SS ULOG
+This target provides userspace logging of matching packets.  When this
+target is set for a rule, the Linux kernel will multicast this packet
+through a
+.IR netlink 
+socket. One or more userspace processes may then subscribe to various 
+multicast groups and receive the packets.
+Like LOG, this is a "non-terminating target", i.e. rule traversal
+continues at the next rule.
+.TP
+.BI "--ulog-nlgroup " "nlgroup"
+This specifies the netlink group (1-32) to which the packet is sent.
+Default value is 1.
+.TP
+.BI "--ulog-prefix " "prefix"
+Prefix log messages with the specified prefix; up to 32 characters
+long, and useful for distinguishing messages in the logs.
+.TP
+.BI "--ulog-cprange " "size"
+Number of bytes to be copied to userspace.  A value of 0 always copies
+the entire packet, regardless of its size.  Default is 0.
+.TP
+.BI "--ulog-qthreshold " "size"
+Number of packet to queue inside kernel.  Setting this value to, e.g. 10
+accumulates ten packets inside the kernel and transmits them as one
+netlink multipart message to userspace.  Default is 1 (for backwards
+compatibility).
+.br
+.SH DIAGNOSTICS
+Various error messages are printed to standard error.  The exit code
+is 0 for correct functioning.  Errors which appear to be caused by
+invalid or abused command line parameters cause an exit code of 2, and
+other errors cause an exit code of 1.
+.SH BUGS
+Bugs?  What's this? ;-)
+Well... the counters are not reliable on sparc64.
+.SH COMPATIBILITY WITH IPCHAINS
+This
+.B iptables
+is very similar to ipchains by Rusty Russell.  The main difference is
+that the chains
+.B INPUT
+and
+.B OUTPUT
+are only traversed for packets coming into the local host and
+originating from the local host respectively.  Hence every packet only
+passes through one of the three chains; previously a forwarded packet
+would pass through all three.
+.PP
+The other main difference is that
+.B -i
+refers to the input interface;
+.B -o
+refers to the output interface, and both are available for packets
+entering the
+.B FORWARD
+chain.
+.PP The various forms of NAT have been separated out; 
+.B iptables 
+is a pure packet filter when using the default `filter' table, with
+optional extension modules.  This should simplify much of the previous
+confusion over the combination of IP masquerading and packet filtering
+seen previously.  So the following options are handled differently:
+.br
+ -j MASQ
+.br
+ -M -S
+.br
+ -M -L
+.br
+There are several other changes in iptables.
+.SH SEE ALSO
+.BR iptables-save (8),
+.BR iptables-restore (8),
+.BR ip6tables (8),
+.BR ip6tables-save (8),
+.BR ip6tables-restore (8).
+.P
+The packet-filtering-HOWTO details iptables usage for
+packet filtering, the NAT-HOWTO details NAT,
+the netfilter-extensions-HOWTO details the extensions that are
+not in the standard distribution,
+and the netfilter-hacking-HOWTO details the netfilter internals.
+.br
+See
+.BR "http://www.netfilter.org/" .
+.SH AUTHORS
+Rusty Russell wrote iptables, in early consultation with Michael
+Neuling.
+.PP
+Marc Boucher made Rusty abandon ipnatctl by lobbying for a generic packet
+selection framework in iptables, then wrote the mangle table, the owner match,
+the mark stuff, and ran around doing cool stuff everywhere.
+.PP
+James Morris wrote the TOS target, and tos match.
+.PP
+Jozsef Kadlecsik wrote the REJECT target.
+.PP
+Harald Welte wrote the ULOG target, TTL, DSCP, ECN matches and targets.
+.PP
+The Netfilter Core Team is: Marc Boucher, Jozsef Kadlecsik, James Morris,
+Harald Welte and Rusty Russell.
+.PP
+Man page written by Herve Eychenne <rv at wallfire.org>.
+
+.\" .. and did I mention that we are incredibly cool people?
+.\" .. sexy, too ..
+.\" .. witty, charming, powerful ..
+.\" .. and most of all, modest ..
diff --git a/raw/man8/losetup.8 b/raw/man8/losetup.8
new file mode 100644
index 0000000..d364f4f
--- /dev/null
+++ b/raw/man8/losetup.8
@@ -0,0 +1,94 @@
+.TH LOSETUP 8 "Nov 24 1993" "Linux" "MAINTENANCE COMMANDS"
+.SH NAME
+losetup \- set up and control loop devices
+.SH SYNOPSIS
+.ad l
+.B losetup
+[
+.B \-e
+.I encryption
+] [
+.B \-o
+.I offset
+]
+.I loop_device file
+.br
+.B losetup
+[
+.B \-d
+]
+.I loop_device
+.ad b
+.SH DESCRIPTION
+.B losetup
+is used to associate loop devices with regular files or block devices,
+to detach loop devices and to query the status of a loop device. If only the
+\fIloop_device\fP argument is given, the status of the corresponding loop
+device is shown.
+.SH OPTIONS
+.IP \fB\-d\fP
+detach the file or device associated with the specified loop device.
+.IP "\fB\-e \fIencryption\fP"
+.RS
+enable data encryption. The following keywords are recognized:
+.IP \fBNONE\fP
+use no encryption (default).
+.PD 0
+.IP \fBXOR\fP
+use a simple XOR encryption.
+.IP \fBDES\fP
+use DES encryption. DES encryption is only available if the optional
+DES package has been added to the kernel. DES encryption uses an additional
+start value that is used to protect passwords against dictionary
+attacks.
+.PD
+.RE
+.IP "\fB\-o \fIoffset\fP"
+the data start is moved \fIoffset\fP bytes into the specified file or
+device.
+.SH RETURN VALUE
+.B losetup
+returns 0 on success, nonzero on failure. When
+.B losetup
+displays the status of a loop device, it returns 1 if the device
+is not configured and 2 if an error occurred which prevented
+.B losetup
+from determining the status of the device.
+
+.SH FILES
+.nf
+/dev/loop0,/dev/loop1,...   loop devices (major=7)
+.fi
+.SH EXAMPLE
+If you are using the loadable module you must have the module loaded
+first with the command
+.IP
+# insmod loop.o
+.LP
+The following commands can be used as an example of using the loop device.
+.nf
+.IP
+dd if=/dev/zero of=/file bs=1k count=100
+losetup -e des /dev/loop0 /file
+Password:
+Init (up to 16 hex digits):
+mkfs -t ext2 /dev/loop0 100
+mount -t ext2 /dev/loop0 /mnt
+ ...
+umount /dev/loop0
+losetup -d /dev/loop0
+.fi
+.LP
+If you are using the loadable module you may remove the module with
+the command
+.IP
+# rmmod loop
+.LP
+.fi
+.SH RESTRICTION
+DES encryption is painfully slow. On the other hand, XOR is terribly weak.
+.SH AUTHORS
+.nf
+Original version: Theodore Ts'o <tytso at athena.mit.edu>
+Original DES by: Eric Young <eay at psych.psy.uq.oz.au>
+.fi
diff --git a/raw/man8/lspci.8 b/raw/man8/lspci.8
new file mode 100644
index 0000000..ceb4d7f
--- /dev/null
+++ b/raw/man8/lspci.8
@@ -0,0 +1,152 @@
+.TH lspci 8 "30 March 2002" "pciutils-2.1.10" "Linux PCI Utilities"
+.IX lspci
+.SH NAME
+lspci \- list all PCI devices
+.SH SYNOPSIS
+.B lspci
+.RB [ options ]
+.SH DESCRIPTION
+.B lspci
+is a utility for displaying information about all PCI buses in the system and
+all devices connected to them.
+
+To make use of all the features of this program, you need to have Linux kernel
+2.1.82 or newer which supports the /proc/bus/pci interface. With older kernels,
+the PCI utilities have to use direct hardware access which is available
+only to root and it suffers from numerous race conditions and other problems.
+
+If you are going to report bugs in PCI device drivers or in
+.I lspci
+itself, please include output of "lspci -vvx".
+
+.SH OPTIONS
+.TP
+.B -v
+Tells
+.I lspci
+to be verbose and display detailed information about all devices.
+.TP
+.B -vv
+Tells
+.I lspci
+to be very verbose and display even more information (actually everything the
+PCI device is able to tell). The exact meaning of these data is not explained
+in this manual page, if you want to know more, consult
+.B /usr/include/linux/pci.h
+or the PCI specs.
+.TP
+.B -n
+Show PCI vendor and device codes as numbers instead of looking them up in the
+PCI ID database.
+.TP
+.B -x
+Show hexadecimal dump of first 64 bytes of the PCI configuration space (the standard
+header). Useful for debugging of drivers and
+.I lspci
+itself.
+.TP
+.B -xxx
+Show hexadecimal dump of whole PCI configuration space. Available only for root
+as several PCI devices
+.B crash
+when you try to read undefined portions of the config space (this behaviour probably
+doesn't violate the PCI standard, but it's at least very stupid).
+.TP
+.B -b
+Bus-centric view. Show all IRQ numbers and addresses as seen by the cards on the
+PCI bus instead of as seen by the kernel.
+.TP
+.B -t
+Show a tree-like diagram containing all buses, bridges, devices and connections
+between them.
+.TP
+.B -s [[<bus>]:][<slot>][.[<func>]]
+Show only devices in specified bus, slot and function. Each component of the device
+address can be omitted or set as "*" meaning "any value". All numbers are
+hexadecimal.  E.g., "0:" means all devices on bus 0, "0" means all functions of device 0
+on any bus, "0.3" selects third function of device 0 on all buses and ".4" shows only
+fourth function of each device.
+.TP
+.B -d [<vendor>]:[<device>]
+Show only devices with specified vendor and device ID. Both ID's are given in
+hexadecimal and may be omitted or given as "*" meaning "any value".
+.TP
+.B -i <file>
+Use
+.B
+<file>
+as PCI ID database instead of /usr/share/hwdata/pci.ids.
+.TP
+.B -p <dir>
+Use
+.B <dir>
+as directory containing PCI bus information instead of /proc/bus/pci.
+.TP
+.B -m
+Dump PCI device data in machine readable form (both normal and verbose format supported)
+for easy parsing by scripts.
+.TP
+.B -M
+Invoke bus mapping mode which scans the bus extensively to find all devices including
+those behind misconfigured bridges etc. Please note that this is intended only for
+debugging and as it can crash the machine (only in case of buggy devices, but
+unfortunately these happen to exist), it's available only to root. Also using
+-M on PCI access methods which don't directly touch the hardware has no
+sense since the results are (modulo bugs in lspci) identical to normal listing
+modes.
+.TP
+.B --version
+Shows 
+.I lspci
+version. This option should be used standalone.
+
+.SH PCILIB OPTIONS
+The PCI utilities use PCILIB (a portable library providing platform-independent
+functions for PCI configuration space access) to talk to the PCI cards. The following
+options control parameters of the library, especially what access method it uses.
+By default, PCILIB uses the first available access method and displays no debugging
+messages. Each switch is accompanied by a list of hardware/software configurations
+it's supported in.
+
+.TP
+.B -P <dir>
+Use Linux 2.1 style configuration access to directory
+.B <dir>
+instead of /proc/bus/pci. (Linux 2.1 or newer only)
+.TP
+.B -H1
+Use direct hardware access via Intel configuration mechanism 1. (i386 and compatible only)
+.TP
+.B -H2
+Use direct hardware access via Intel configuration mechanism 2. Warning: This method
+is able to address only first 16 devices on any bus and it seems to be very
+unrealiable in many cases. (i386 and compatible only)
+.TP
+.B -S
+Use PCI access syscalls. (Linux on Alpha and UltraSparc only)
+.TP
+.B -F <file>
+Extract all information from given file containing output of lspci -x. This is very
+useful for analysis of user-supplied bug reports, because you can display the
+hardware configuration in any way you want without disturbing the user with
+requests for more dumps. (All systems)
+.TP
+.B -G
+Increase debug level of the library. (All systems)
+
+.SH FILES
+.TP
+.B /usr/share/hwdata/pci.ids
+A list of all known PCI ID's (vendors, devices, classes and subclasses).
+.TP
+.B /proc/bus/pci
+An interface to PCI bus configuration space provided by the post-2.1.82 Linux
+kernels. Contains per-bus subdirectories with per-card config space files and a
+.I devices
+file containing a list of all PCI devices.
+
+.SH SEE ALSO
+.BR setpci (8)
+
+.SH AUTHOR
+The Linux PCI Utilities are maintained by Martin Mares <mj at ucw.cz>.
diff --git a/raw/man8/mailstats.8 b/raw/man8/mailstats.8
new file mode 100644
index 0000000..5d1feaa
--- /dev/null
+++ b/raw/man8/mailstats.8
@@ -0,0 +1,115 @@
+.\" Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
+.\"	 All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\"	$Id: mailstats.8,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.\"
+.TH MAILSTATS 8 "$Date: 2003/12/20 03:31:54 $"
+.SH NAME
+mailstats
+\- display mail statistics
+.SH SYNOPSIS
+.B mailstats
+.RB [ \-c "] [" \-o "] [" \-p "] [" \-P ]
+.RB [ \-C 
+.IR cffile ]
+.RB [ \-f
+.IR stfile ]
+.SH DESCRIPTION
+The
+.B mailstats
+utility displays the current mail statistics.
+.PP
+First, the time at which statistics started being kept is displayed,
+in the format specified by 
+ctime(3).  
+Then, 
+the statistics for each mailer are displayed on a single line, 
+each with the following white space separated fields:
+.sp
+.RS
+.PD 0.2v
+.TP 1.2i
+.B M
+The mailer number.
+.TP 
+.B msgsfr
+Number of messages from the mailer.
+.TP
+.B bytes_from
+Kbytes from the mailer.
+.TP
+.B msgsto
+Number of messages to the mailer.
+.TP
+.B bytes_to
+Kbytes to the mailer.
+.TP
+.B msgsrej
+Number of messages rejected.
+.TP
+.B msgsdis
+Number of messages discarded.
+.TP
+.B Mailer
+The name of the mailer.
+.PD
+.RE
+.PP
+After this display, a line totaling the values for all of the mailers 
+is displayed (preceded with a ``T''),
+separated from the previous information by a line containing only equals 
+(``='') 
+characters.
+Another line preceded with a ``C'' lists the number of TCP connections.
+.PP
+The options are as follows:
+.TP 
+.B \-C
+Read the specified file instead of the default
+.B sendmail
+configuration file.
+.TP
+.B \-c
+Try to use submit.cf instead of the default
+.B sendmail
+configuration file.
+.TP
+.B \-f
+Read the specified statistics file instead of the statistics file
+specified in the
+.B sendmail 
+configuration file.
+.TP 
+.B \-P
+Output information in program-readable mode without clearing statistics.
+.TP
+.B \-p
+Output information in program-readable mode and clear statistics.
+.TP
+.B \-o
+Don't display the name of the mailer in the output.
+.PP
+The
+.B mailstats
+utility exits 0 on success, and >0 if an error occurs.
+.SH FILES
+.PD 0.2v
+.TP 2.5i
+/etc/mail/sendmail.cf
+The default
+.B sendmail
+configuration file.
+.TP
+/etc/mail/statistics
+The default
+.B sendmail
+statistics file.
+.PD
+.SH SEE ALSO
+mailq(1), 
+sendmail(8)
diff --git a/raw/man8/makemap.8 b/raw/man8/makemap.8
new file mode 100644
index 0000000..260132f
--- /dev/null
+++ b/raw/man8/makemap.8
@@ -0,0 +1,160 @@
+.\" Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
+.\"	 All rights reserved.
+.\" Copyright (c) 1988, 1991, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\"     $Id: makemap.8,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.\"
+.TH MAKEMAP 8 "$Date: 2003/12/20 03:31:54 $"
+.SH NAME
+makemap
+\- create database maps for sendmail
+.SH SYNOPSIS
+.B makemap
+.RB [ \-C
+.IR file ]
+.RB [ \-N ]
+.RB [ \-c
+.IR cachesize ]
+.RB [ \-d ]
+.RB [ \-e ]
+.RB [ \-f ]
+.RB [ \-l ]
+.RB [ \-o ]
+.RB [ \-r ]
+.RB [ \-s ]
+.RB [ \-t
+.IR delim ]
+.RB [ \-u ]
+.RB [ \-v ]
+.I 
+maptype mapnam
+.SH DESCRIPTION
+.B Makemap
+creates the database maps used by the keyed map lookups in
+sendmail(8).  
+It reads input from the standard input
+and outputs them to the indicated
+.I mapname.
+.PP
+Depending on how it is compiled,
+.B makemap
+handles up to three different database formats, 
+selected using the
+.I maptype
+parameter.  
+They may be
+.TP
+btree
+B-Tree format maps.  
+This requires the new Berkeley DB 
+library.
+.TP
+hash
+Hash format maps.  
+This also requires the Berkeley DB 
+library.
+.PP
+In all cases,
+.B makemap
+reads lines from the standard input consisting of two 
+words separated by white space.  
+The first is the database key, 
+the second is the value.  
+The value may contain 
+``%\fIn\fP'' 
+strings to indicate parameter substitution.  
+Literal percents should be doubled 
+(``%%'').
+Blank lines and lines beginning with ``#'' are ignored.
+.PP
+Notice: do
+.B not
+use
+.B makemap
+to create the aliases data base, but
+.B newaliases
+which puts a special token into the data base that is required by
+.B sendmail.
+.PP
+If the
+.I TrustedUser
+option is set in the sendmail configuration file and
+.B makemap
+is invoked as root, the generated files will be owned by 
+the specified
+.IR TrustedUser.
+.SS Flags
+.TP  
+.B \-C
+Use the specified
+.B sendmail
+configuration file for looking up the TrustedUser option.
+.TP 
+.B \-N
+Include the null byte that terminates strings 
+in the map.  
+This must match the \-N flag in the sendmail.cf 
+``K'' line.
+.TP
+.B \-c
+Use the specified hash and B-Tree cache size.
+.TP
+.B \-d
+Allow duplicate keys in the map.  
+This is only allowed on B-Tree format maps.  
+If two identical keys are read, 
+they will both be inserted into the map.
+.TP
+.B \-e
+Allow empty value (right hand side).
+.TP
+.B \-f
+Normally all upper case letters in the key 
+are folded to lower case.  
+This flag disables that behaviour.  
+This is intended to mesh with the 
+\-f flag in the 
+.B K 
+line in sendmail.cf.  
+The value is never case folded.
+.TP
+.B \-l
+List supported map types.
+.TP
+.B \-o
+Append to an old file.  
+This allows you to augment an existing file.
+.TP
+.B \-r
+Allow replacement of existing keys.  
+Normally
+.B makemap
+complains if you repeat a key, 
+and does not do the insert.
+.TP
+.B \-s
+Ignore safety checks on maps being created.  
+This includes checking for hard or symbolic 
+links in world writable directories.
+.TP
+.B \-t
+Use the specified delimiter instead of white space.
+.TP
+.B \-u
+dump (unmap) the content of the database to standard output.
+.TP
+.B \-v
+Verbosely print what it is doing.
+.SH SEE ALSO
+sendmail(8), newaliases(1)
+.SH HISTORY
+The
+.B makemap
+command appeared in 
+4.4BSD.
diff --git a/raw/man8/mingetty.8 b/raw/man8/mingetty.8
new file mode 100644
index 0000000..629205e
--- /dev/null
+++ b/raw/man8/mingetty.8
@@ -0,0 +1,112 @@
+.TH MINGETTY 8 "6 Apr 1996" "Debian-Local" "Linux Programmer's Manual"
+.SH NAME
+mingetty \- minimal getty for consoles
+.SH SYNOPSIS
+.B mingetty
+[\-\-noclear] [\-\-nonewline] [\-\-noissue] [\-\-nohangup] [\-\-nohostname]
+[\-\-long\-hostname] [\-\-loginprog=/bin/login] [\-\-nice=10] [\-\-delay=5]
+[\-\-chdir=/home] [\-\-chroot=/chroot] [\-\-autologin username]
+.I tty
+.PP
+.SH DESCRIPTION
+.B mingetty 
+is a minimal getty for use on virtual consoles.
+Unlike 
+.BR agetty (8),
+.B mingetty
+is not suitable for serial lines.
+I recommend using
+.BR mgetty (8) 
+for this purpose.
+.PP
+.SH OPTIONS
+.TP
+.B \-\-noclear
+Do not clear the screen before prompting for the login name (the screen
+is normally cleared).
+.TP
+.B \-\-nonewline
+Do not print a newline before writing out /etc/issue.
+.TP
+.B \-\-noissue
+Do not output /etc/issue.
+.TP
+.B \-\-nohangup
+Do not call vhangup() to disable writing to this tty by
+other applications.
+.TP
+.B \-\-nohostname
+Do not print the hostname before the login prompt.
+.TP
+.B \-\-long\-hostname
+By default the hostname is only printed until the first dot.
+With this option enabled, the full text from gethostname() is shown.
+.TP
+.B \-\-loginprog /bin/login
+Change the login app.
+.TP
+.B \-\-nice 10
+Change the priority by calling nice().
+.TP
+.B \-\-delay 5
+Sleep this many seconds after startup of mingetty.
+.TP
+.B \-\-chdir /home
+Change into this directory before calling the login prog.
+.TP
+.B \-\-chroot /chroot
+Call chroot() with this directory name.
+.TP
+.B \-\-autologin username
+Log the specified user automatically in without asking for
+a login name and password. Check the \-f option from
+.B /bin/login
+for this.
+.PP
+.SH "ISSUE ESCAPES"
+.B mingetty 
+recognizes the following escapes sequences which might be embedded in the 
+.I /etc/issue
+file:
+.IP \fB\ed\fP
+insert current day (localtime),
+.IP \fB\el\fP
+insert line on which 
+.B mingetty 
+is running,
+.IP \fB\em\fP
+inserts machine architecture (uname -m),
+.IP \fB\en\fP
+inserts machine's network node hostname (uname -n),
+.IP \fB\eo\fP
+inserts domain name,
+.IP \fB\er\fP
+inserts operating system release (uname -r),
+.IP \fB\et\fP
+insert current time (localtime),
+.IP \fB\es\fP
+inserts operating system name,
+.IP \fB\eu\fP
+resp. \fB\eU\fP
+the current number of users which are currently logged in.
+\\U inserts "\fIn\fP users", where as \\u only inserts "\fIn\fP".
+.IP \fB\ev\fP
+inserts operating system version (uname -v).
+.PP
+.SH EXAMPLE
+"\fBLinux\ eos\ i386\ #1\ Tue\ Mar\ 19\ 21:54:09\ MET\ 1996\fP" was produced
+by putting "\fB\\s\ \\n\ \\m\ \\v\fP" into
+.IR /etc/issue .
+.PP
+.SH FILES
+.IR /etc/issue ,
+.IR /var/run/utmp .
+.PP
+.SH "SEE ALSO"
+.BR mgetty (8),
+.BR agetty (8).
+.PP
+.SH AUTHOR
+Copyright \(co 1996 Florian La Roche <laroche at redhat.com>.
+Man-page written by David Frey <David.Frey at eos.lugs.ch> and
+Florian La Roche.
diff --git a/raw/man8/mkfs.8 b/raw/man8/mkfs.8
new file mode 100644
index 0000000..760a5e0
--- /dev/null
+++ b/raw/man8/mkfs.8
@@ -0,0 +1,123 @@
+.\" -*- nroff -*-
+.TH MKFS 8 "Jun 1995" "Version 1.9"
+.SH NAME
+mkfs \- build a Linux file system
+.SH SYNOPSIS
+.B mkfs
+[
+.B \-V
+]
+[
+.B \-t
+.I fstype
+]
+[
+.B fs-options
+]
+.I filesys
+[
+.I blocks
+]
+.SH DESCRIPTION
+.B mkfs
+is used to build a Linux file system on a device, usually
+a hard disk partition.
+.I filesys
+is either the device name (e.g.
+.IR /dev/hda1 ,
+.IR /dev/sdb2 )
+or the mount point (e.g. 
+.IR / ,
+.IR /usr ,
+.IR /home )
+for the file system.
+.I blocks
+is the number of blocks to be used for the file system.
+.PP
+The exit code returned by
+.B mkfs
+is 0 on success and 1 on failure.
+.PP
+In actuality,
+.B mkfs
+is simply a front-end for the various file system builders
+(\fBmkfs\fR.\fIfstype\fR)
+available under Linux.
+The file system-specific builder is searched for in a number
+of directories like perhaps
+.IR /sbin ,
+.IR /sbin/fs ,
+.IR /sbin/fs.d ,
+.IR /etc/fs ,
+.I /etc
+(the precise list is defined at compile time but at least
+contains
+.I /sbin
+and
+.IR /sbin/fs ),
+and finally in the directories
+listed in the PATH enviroment variable.
+Please see the file system-specific builder manual pages for
+further details.
+.SH OPTIONS
+.TP
+.B -V
+Produce verbose output, including all file system-specific commands
+that are executed.
+Specifying this option more than once inhibits execution of any
+file system-specific commands.
+This is really only useful for testing.
+.TP
+.BI -t \ fstype
+Specifies the type of file system to be built.
+If not specified, the default file system type
+(currently ext2) is used.
+.TP
+.B fs-options
+File system-specific options to be passed to the real file 
+system builder.
+Although not guaranteed, the following options are supported
+by most file system builders.
+.TP
+.B -c
+Check the device for bad blocks before building the file system.
+.TP
+.BI -l \ filename
+Read the bad blocks list from
+.I filename
+.TP
+.B -v
+Produce verbose output.
+.SH BUGS
+All generic options must precede and not be combined with
+file system-specific options.
+Some file system-specific programs do not support the
+.I -v
+(verbose) option, nor return meaningful exit codes.
+Also, some file system-specific programs do not automatically
+detect the device size and require the
+.I blocks
+parameter to be specified.
+.SH AUTHORS
+David Engel (david at ods.com)
+.br
+Fred N. van Kempen (waltje at uwalt.nl.mugnet.org)
+.br
+Ron Sommeling (sommel at sci.kun.nl)
+.br
+The manual page was shamelessly adapted from Remy Card's version
+for the ext2 file system.
+.SH SEE ALSO
+.BR fs (5),
+.BR badblocks (8),
+.BR fsck (8),
+.BR mkdosfs (8),
+.BR mke2fs (8),
+.BR mkfs.bfs (8),
+.BR mkfs.ext2 (8),
+.BR mkfs.ext3 (8),
+.BR mkfs.minix (8),
+.BR mkfs.msdos (8),
+.BR mkfs.vfat (8),
+.BR mkfs.xfs (8),
+.BR mkfs.xiafs (8)
diff --git a/raw/man8/mkswap.8 b/raw/man8/mkswap.8
new file mode 100644
index 0000000..e143704
--- /dev/null
+++ b/raw/man8/mkswap.8
@@ -0,0 +1,152 @@
+.\" Copyright 1998 Andries E. Brouwer (aeb at cwi.nl)
+.\"
+.\" May be distributed under the GNU General Public License
+.\" Rewritten for 2.1.117, aeb, 981010.
+.\"
+.TH MKSWAP 8 "25 March 1999" "Linux 2.2.4" "Linux Programmer's Manual"
+.SH NAME
+mkswap \- set up a Linux swap area
+.SH SYNOPSIS
+.BI "mkswap [\-c] [\-v" N "] [\-f] [\-p " PSZ "] "device  " [" size "]"
+.SH DESCRIPTION
+.B mkswap
+sets up a Linux swap area on a device or in a file.
+
+(After creating the swap area, you need the
+.B swapon
+command to start using it. Usually swap areas are listed in
+.I /etc/fstab
+so that they can be taken into use at boot time by a
+.B swapon -a
+command in some boot script.)
+
+The
+.I device
+argument will usually be a disk partition (something like
+.I /dev/hda4
+or
+.IR /dev/sdb7 )
+but can also be a file.
+The Linux kernel does not look at partition Id's, but
+many installation scripts will assume that partitions
+of hex type 82 (LINUX_SWAP) are meant to be swap partitions.
+(Warning: Solaris also uses this type. Be careful not to kill
+your Solaris partitions.)
+
+The
+.I size
+parameter is superfluous but retained for backwards compatibility.
+(It specifies the desired size of the swap area in 1024-byte blocks.
+.B mkswap
+will use the entire partition or file if it is omitted.
+Specifying it is unwise - a typo may destroy your disk.)
+
+The
+.I PSZ
+parameter specifies the page size to use. It is almost always
+unnecessary (even unwise) to specify it, but certain old libc
+versions lie about the page size, so it is possible that
+.B mkswap
+gets it wrong. The symptom is that a subsequent
+.B swapon
+fails because no swap signature is found. Typical values for
+.I PSZ
+are 4096 or 8192.
+
+Linux knows about two styles of swap areas, old style and new style.
+The last 10 bytes of the first page of the swap area distinguishes
+them: old style has `SWAP_SPACE', new style has `SWAPSPACE2' as
+signature.
+
+In the old style, the rest of this first page was a bit map,
+with a 1 bit for each usable page of the swap area.
+Since the first page holds this bit map, the first bit is 0.
+Also, the last 10 bytes hold the signature. So, if the page
+size is S, an old style swap area can describe at most
+8*(S-10)-1 pages used for swapping.
+With S=4096 (as on i386), the useful area is at most 133890048 bytes
+(almost 128 MiB), and the rest is wasted.
+On an alpha and sparc64, with S=8192, the useful area is at most
+535560992 bytes (almost 512 MiB).
+
+The old setup wastes most of this bitmap page, because zero bits
+denote bad blocks or blocks past the end of the swap space,
+and a simple integer suffices to indicate the size of the swap space,
+while the bad blocks, if any, can simply be listed. Nobody wants
+to use a swap space with hundreds of bad blocks. (I would not even
+use a swap space with 1 bad block.)
+In the new style swap area this is precisely what is done.
+The maximum useful size of a swap area now depends on the architecture.
+It is roughly 2GiB on i386, PPC, m68k, ARM, 1GiB on sparc, 512MiB on mips,
+128GiB on alpha and 3TiB on sparc64.
+
+Note that before 2.1.117 the kernel allocated one byte for each page,
+while it now allocates two bytes, so that taking a swap area of 2 GiB
+in use might require 2 MiB of kernel memory.
+
+Presently, Linux allows 32 swap areas (this was 8 before Linux 2.4.10).
+The areas in use can be seen in the file
+.I /proc/swaps
+(since 2.1.25).
+
+.B mkswap
+refuses areas smaller than 10 pages.
+
+If you don't know the page size that your machine uses, you may be
+able to look it up with "cat /proc/cpuinfo" (or you may not -
+the contents of this file depend on architecture and kernel version).
+
+To setup a swap file, it is necessary to create that file before
+initializing it with
+.B mkswap ,
+e.g. using a command like
+
+.nf
+.RS
+# dd if=/dev/zero of=swapfile bs=1024 count=65536
+.RE
+.fi
+
+Note that a swap file must not contain any holes (so, using
+.BR cp (1)
+to create the file is not acceptable).
+
+.SH OPTIONS
+.TP
+.B \-c
+Check the device (if it is a block device) for bad blocks
+before creating the swap area.
+If any are found, the count is printed.
+.TP
+.B \-f
+Force - go ahead even if the command is stupid.
+This allows the creation of a swap area larger than the file
+or partition it resides on.
+On SPARC, force creation of the swap area.
+Without this option
+.B mkswap
+will refuse to create a v0 swap on a device with a valid SPARC superblock,
+as that probably means one is going to erase the partition table.
+.TP
+.BI "\-p " PSZ
+Specify the page size to use.
+.TP
+.B \-v0
+Create an old style swap area.
+.TP
+.B \-v1
+Create a new style swap area.
+
+.LP
+If no \-v option is given,
+.B mkswap
+will default to new style, but use old style if the current kernel
+is older than 2.1.117 (and also if PAGE_SIZE is less than 2048).
+The new style header does not touch the first block, so may be
+preferable, in case you have a boot loader or disk label there.
+If you need to use both 2.0 and 2.2 kernels, use the \-v0 option
+when creating the swapspace.
+
+.SH "SEE ALSO"
+.BR fdisk (8),
+.BR swapon (8)
diff --git a/raw/man8/modinfo.8 b/raw/man8/modinfo.8
new file mode 100644
index 0000000..4a95696
--- /dev/null
+++ b/raw/man8/modinfo.8
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1996 Free Software Foundation, Inc.
+.\" This program is distributed according to the Gnu General Public License.
+.\" See the file COPYING in the kernel source directory
+.\"
+.TH MODINFO 8 "March 19, 2002" Linux "Linux Module Support"
+.SH NAME
+modinfo \- display information about a kernel module
+.SH SYNOPSIS
+.B modinfo
+[ options ] <module_file>
+.SH DESCRIPTION
+The
+.B modinfo
+utility examines the object file
+.I module_file
+associated with a kernel module and displays any information that it
+can glean.
+.SS OPTIONS
+.TP
+.BR \-a ", " \-\-author
+Display the module's author.
+.TP
+.BR \-d ", " \-\-description
+Display the module's description.
+.TP
+.BI \-f format_string ", \-\-format " format_string
+Let the user specify an arbitrary format string which can extract
+values from the ELF section in
+.I module_file
+which contains the module information.
+Replacements consist of a percent sign followed by a tag name in curly
+braces.
+A tagname of
+.I %{filename}
+is always supported, even if the module has no modinfo section.
+.I %{kernel_version}
+shows the version of the kernel the module was compiled for.
+.I %{using_checksums}
+expands to 1 is the module has versioned symbols and to 0 or <none>
+otherwise.
+
+A tagname of
+.I %{parm}
+is special: the format string line is repeated for each known module
+parameter (which may be zero times) and
+.I %{parm}
+is then replaced by descriptions of module parameters (one parameter
+on each repeated line).
+
+Alternatively,
+.I %a\fR,
+.I %d\fR,
+.I %l\fR,
+.I %n
+and
+.I %p
+can be used instead of
+.I %{author}\fR,
+.I %{description}\fR,
+.I %{filename}\fR,
+.I %{license}
+and
+.I %{parm}\fR,
+respectively.
+.TP
+.BR \-h ", " \-\-help
+Display a summary of options and immediately exit.
+.TP
+.BR \-l ", " \-\-license
+Display the module's license.
+.TP
+.BR \-n ", " \-\-filename
+Display the module's filename.
+.TP
+.BR \-p ", " \-\-parameters
+Display the typed parameters that a module may support.
+.TP
+.BR \-V ", " \-\-version
+Display the version of
+.BR modinfo .
+.PP
+If no options are supplied, the default is filename, description,
+author, license and parameters.
+.SH "SEE ALSO"
+.BR insmod "(8), " modprobe "(8), " depmod "(8), " rmmod "(8), "
+.BR lsmod "(8), " ksyms "(8), " modules "(2) "
diff --git a/raw/man8/netstat.8 b/raw/man8/netstat.8
new file mode 100644
index 0000000..b803eb8
--- /dev/null
+++ b/raw/man8/netstat.8
@@ -0,0 +1,459 @@
+.\"
+.\" netstat.8 
+.\"
+.\" Original: (mdw at tc.cornell.edu & dc6iq at insu1.etec.uni-karlsruhe.de)
+.\"
+.\" Modified: Bernd.Eckenfels at inka.de
+.\" Modified: Andi Kleen ak at muc.de 
+.\" Modified: Tuan Hoang tqhoang at bigfoot.com 
+.\"
+.\"
+.TH NETSTAT 8 "19 December 2000" "net-tools" "Linux Programmer's Manual"
+
+.SH NAME
+netstat \- Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
+
+.SH SYNOPSIS
+
+.B netstat 
+.RI [ address_family_options ]
+.RB [ \-\-tcp | \-t ]
+.RB [ \-\-udp | \-u ]
+.RB [ \-\-raw | \-w ]
+.RB [ \-\-listening | \-l ]
+.RB [ \-\-all | \-a ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-symbolic | \-N ]
+.RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
+.RB [ \-\-timers | \-o ]
+.RB [ \-\-program | \-p ]
+.RB [ \-\-verbose | \-v ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat 
+.RB { \-\-route | \-r }
+.RI [ address_family_options ]
+.RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
+.RB [ \-\-verbose | \-v ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-interfaces | \-i }
+.RI [ iface ]
+.RB [ \-\-all | \-a ]
+.RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
+.RB [ \-\-verbose | \-v ]
+.RB [ \-\-program | \-p ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-groups | \-g }
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-masquerade | \-M }
+.RB [ \-\-extend | \-e ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-statistics | -s }
+.RB [ \-\-tcp | \-t ]
+.RB [ \-\-udp | \-u ]
+.RB [ \-\-raw | \-w ]
+.RB [delay]
+.P
+.B netstat 
+.RB { \-\-version | \-V }
+.P
+.B netstat 
+.RB { \-\-help | \-h }
+.P
+.IR address_family_options :
+.PP
+.RB [ \-\-protocol= { inet , unix , ipx , ax25 , netrom , ddp }[, ...] ]
+.RB [ \-\-unix | \-x ] 
+.RB [ \-\-inet | \-\-ip ]
+.RB [ \-\-ax25 ]
+.RB [ \-\-ipx ] 
+.RB [ \-\-netrom ]
+.RB [ \-\-ddp ]
+
+.SH DESCRIPTION
+.B Netstat
+prints information about the Linux networking subsystem.  The type of
+information printed is controlled by the first argument, as follows:
+.SS (none)
+By default,
+.B
+netstat 
+displays a list of open sockets.  If you don't specify any
+address families, then the active sockets of all configured address
+families will be printed.
+.SS "\-\-route , \-r"
+Display the kernel routing tables.
+.SS "\-\-groups , \-g"
+Display multicast group membership information for IPv4 and IPv6.
+.SS "\-\-interface=\fIiface \fR, \fB\-i"
+Display a table of all network interfaces, or the specified
+.IR iface ) .
+.SS "\-\-masquerade , \-M"
+Display a list of masqueraded connections.
+.SS "\-\-statistics , \-s"
+Display summary statistics for each protocol.
+.SH OPTIONS
+.SS "\-\-verbose , \-v"
+Tell the user what is going on by being verbose. Especially print some
+useful information about unconfigured address families.
+.SS "\-\-numeric , \-n"
+Show numerical addresses instead of trying to determine symbolic host, port
+or user names.
+.SS "\-\-numeric-hosts"
+shows numerical host addresses but does not affect the resolution of
+port or user names.
+.SS "\-\-numeric-ports"
+shows numerical port numbers but does not affect the resolution of
+host or user names.
+.SS "\-\-numeric-users"
+shows numerical user IDs but does not affect the resolution of host or
+port names.
+
+.SS "\-\-protocol=\fIfamily \fR, \fB\-A"
+Specifies the address families (perhaps better described as low level
+protocols) for which connections are to be shown.
+.I family 
+is a comma (',') separated list of address family keywords like
+.BR inet , 
+.BR unix , 
+.BR ipx , 
+.BR ax25 , 
+.BR netrom ,
+and
+.BR ddp .
+This has the same effect as using the 
+.BR \-\-inet ,
+.BR \-\-unix " (" \-x ),
+.BR \-\-ipx ,
+.BR \-\-ax25 ,
+.BR \-\-netrom ,
+and
+.B \-\-ddp 
+options.
+.P
+The address family
+.B inet
+includes raw, udp and tcp protocol sockets.
+.SS "\-c, \-\-continuous"
+This will cause
+.B netstat
+to print the selected information every second continuously.
+.SS "\-e, \-\-extend"
+Display additional information.  Use this option twice for maximum detail.
+.SS "\-o, \-\-timers"
+Include information related to networking timers.
+.SS "\-p, \-\-program"
+Show the PID and name of the program to which each socket belongs.
+.SS "\-l, \-\-listening"
+Show only listening sockets.  (These are omitted by default.)
+.SS "\-a, \-\-all"
+Show both listening and non-listening sockets.  With the
+.B --interfaces
+option, show interfaces that are not marked 
+.SS "\-F"
+Print routing information from the FIB.  (This is the default.)
+.SS "\-C"
+Print routing information from the route cache.
+.SS delay
+Netstat will cycle printing through statistics every 
+.B delay 
+seconds.
+.IR UP .
+.P
+.SH OUTPUT
+.P
+.SS Active Internet connections \fR(TCP, UDP, raw)\fR
+.SS "Proto" 
+The protocol (tcp, udp, raw) used by the socket. 
+.SS "Recv-Q"
+The count of bytes not copied by the user program connected to this socket.
+.SS "Send-Q"
+The count of bytes not acknowledged by the remote host.
+.SS "Local Address" 
+Address and port number of the local end of the socket.  Unless the
+.BR \-\-numeric " (" \-n )
+option is specified, the socket address is resolved to its canonical
+host name (FQDN), and the port number is translated into the
+corresponding service name.
+.SS "Foreign Address"
+Address and port number of the remote end of the socket.
+Analogous to "Local Address."
+.SS "State"
+The state of the socket. Since there are no states in raw mode and usually no
+states used in UDP, this column may be left blank. Normally this can be one
+of several values:
+.TP
+.I
+ESTABLISHED
+The socket has an established connection.
+.TP
+.I
+SYN_SENT
+The socket is actively attempting to establish a connection.
+.TP
+.I
+SYN_RECV
+A connection request has been received from the network.
+.TP
+.I
+FIN_WAIT1
+The socket is closed, and the connection is shutting down.
+.TP
+.I
+FIN_WAIT2
+Connection is closed, and the socket is waiting for a shutdown from the
+remote end.
+.TP
+.I
+TIME_WAIT
+The socket is waiting after close to handle packets still in the network.
+.TP
+.I
+CLOSED
+The socket is not being used.
+.TP
+.I
+CLOSE_WAIT
+The remote end has shut down, waiting for the socket to close.
+.TP
+.I
+LAST_ACK
+The remote end has shut down, and the socket is closed. Waiting for
+acknowledgement.
+.TP
+.I
+LISTEN
+The socket is listening for incoming connections.  Such sockets are 
+not included in the output unless you specify the 
+.BR \-\-listening " (" \-l )
+or 
+.BR \-\-all " (" \-a )
+option.
+.TP
+.I
+CLOSING
+Both sockets are shut down but we still don't have all our data
+sent.
+.TP
+.I
+UNKNOWN
+The state of the socket is unknown.
+.SS "User"
+The username or the user id (UID) of the owner of the socket.
+.SS "PID/Program name"
+Slash-separated pair of the process id (PID) and process name of the 
+process that owns the socket.
+.B --program
+causes this column to be included.  You will also need
+.I superuser
+privileges to see this information on sockets you don't own.  This
+identification information is not yet available for IPX sockets.
+.SS "Timer"
+(this needs to be written)
+.P
+.SS Active UNIX domain Sockets
+.SS "Proto" 
+The protocol (usually unix) used by the socket.
+.SS "RefCnt"
+The reference count (i.e. attached processes via this socket).
+.SS "Flags"
+The flags displayed is SO_ACCEPTON (displayed as 
+.BR ACC ),
+SO_WAITDATA 
+.RB ( W )
+or SO_NOSPACE 
+.RB ( N ). 
+SO_ACCECPTON 
+is used on unconnected sockets if their corresponding
+processes are waiting for a connect request. The other flags are not
+of normal interest.
+.SS "Type"
+There are several types of socket access:
+.TP
+.I
+SOCK_DGRAM
+The socket is used in Datagram (connectionless) mode.
+.TP
+.I
+SOCK_STREAM
+This is a stream (connection) socket.
+.TP
+.I
+SOCK_RAW
+The socket is used as a raw socket.
+.TP
+.I
+SOCK_RDM
+This one serves reliably-delivered messages.
+.TP
+.I
+SOCK_SEQPACKET
+This is a sequential packet socket.
+.TP
+.I
+SOCK_PACKET
+Raw interface access socket.
+.TP
+.I
+UNKNOWN
+Who ever knows what the future will bring us - just fill in here :-)
+.PP
+.SS "State"
+This field will contain one of the following Keywords:
+.TP
+.I FREE
+The socket is not allocated
+.TP
+.I LISTENING 
+The socket is listening for a connection request.  Such
+sockets are only included in the output if you specify the
+.BR \-\-listening " (" \-l )
+or
+.BR \-\-all " (" \-a )
+option.
+.TP
+.I CONNECTING
+The socket is about to establish a connection.
+.TP
+.I CONNECTED
+The socket is connected.
+.TP
+.I DISCONNECTING
+The socket is disconnecting.
+.TP
+.I (empty)
+The socket is not connected to another one.
+.TP
+.I UNKNOWN
+This state should never happen.
+.SS "PID/Program name"
+Process ID (PID) and process name of the process that has the socket open. 
+More info available in
+.B "Active Internet connections"
+section written above.
+.SS "Path"
+This is the path name as which the corresponding processes attached
+to the socket.
+.P
+.SS Active IPX sockets
+(this needs to be done by somebody who knows it)
+.P
+.SS Active NET/ROM sockets
+(this needs to be done by somebody who knows it)
+.P
+.SS Active AX.25 sockets
+(this needs to be done by somebody who knows it)
+.PP
+.SH NOTES
+Starting with Linux release 2.2 
+.B netstat -i 
+does not show interface statistics for alias interfaces. To get per
+alias interface counters you need to setup explicit rules using the
+.BR ipchains(8) 
+command.  
+
+.SH FILES
+.ta
+.I /etc/services
+-- The services translation file
+
+.I /proc
+-- Mount point for the proc filesystem, which gives access to kernel 
+status information via the following files.
+
+.I /proc/net/dev
+-- device information
+
+.I /proc/net/raw
+-- raw socket information
+
+.I /proc/net/tcp
+-- TCP socket information
+
+.I /proc/net/udp
+-- UDP socket information
+
+.I /proc/net/igmp
+-- IGMP multicast information
+
+.I /proc/net/unix
+-- Unix domain socket information
+
+.I /proc/net/ipx
+-- IPX socket information
+
+.I /proc/net/ax25
+-- AX25 socket information
+
+.I /proc/net/appletalk
+-- DDP (appletalk) socket information
+
+.I /proc/net/nr
+-- NET/ROM socket information
+
+.I /proc/net/route
+-- IP routing information
+
+.I /proc/net/ax25_route
+-- AX25 routing information
+
+.I /proc/net/ipx_route
+-- IPX routing information
+
+.I /proc/net/nr_nodes
+-- NET/ROM nodelist
+
+.I /proc/net/nr_neigh
+-- NET/ROM neighbours
+
+.I /proc/net/ip_masquerade
+-- masqueraded connections
+
+.I /proc/net/snmp
+-- statistics
+.fi
+.P
+.SH SEE ALSO
+.BR route (8), 
+.BR ifconfig (8), 
+.BR ipchains (8),
+.BR iptables (8),
+.BR proc (5)
+.P
+.SH BUGS
+Occasionally strange information may appear if a socket changes
+as it is viewed. This is unlikely to occur.
+.P
+.SH AUTHORS
+The netstat user interface was written by Fred Baumgarten
+<dc6iq at insu1.etec.uni-karlsruhe.de> the man page basically
+by Matt Welsh <mdw at tc.cornell.edu>. It was updated by
+Alan Cox <Alan.Cox at linux.org> but could do with a bit more
+work.  It was updated again by Tuan Hoang
+<tqhoang at bigfoot.com>.
+.br
+The man page and the command included in the net-tools
+package is totally rewritten by Bernd Eckenfels 
+<ecki at linux.de>.
diff --git a/raw/man8/nmbd.8 b/raw/man8/nmbd.8
new file mode 100644
index 0000000..dbf6593
--- /dev/null
+++ b/raw/man8/nmbd.8
@@ -0,0 +1,178 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "NMBD" 8 "" "" ""
+.SH NAME
+nmbd \- NetBIOS name server to provide NetBIOS over IP naming services to clients
+.SH "SYNOPSIS"
+
+.nf
+\fBnmbd\fR [-D] [-F] [-S] [-a] [-i] [-o] [-h] [-V] [-d <debug level>] [-H <lmhosts file>] [-l <log directory>] [-n <primary netbios name>] [-p <port number>] [-s <configuration file>]
+    
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This program is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBnmbd\fR is a server that understands and can reply to NetBIOS over IP name service requests, like those produced by SMB/CIFS clients such as Windows 95/98/ME, Windows NT, Windows 2000, Windows XP and LanManager clients\&. It also participates in the browsing protocols which make up the Windows "Network Neighborhood" view\&.
+
+.PP
+SMB/CIFS clients, when they start up, may wish to locate an SMB/CIFS server\&. That is, they wish to know what IP number a specified host is using\&.
+
+.PP
+Amongst other services, \fBnmbd\fR will listen for such requests, and if its own NetBIOS name is specified it will respond with the IP number of the host it is running on\&. Its "own NetBIOS name" is by default the primary DNS name of the host it is running on, but this can be overridden with the \fB-n\fR option (see OPTIONS below)\&. Thus \fBnmbd\fR will reply to broadcast queries for its own name(s)\&. Additional names for \fBnmbd\fR to respond on can be set via parameters in the \fBsm [...]
+
+.PP
+\fBnmbd\fR can also be used as a WINS (Windows Internet Name Server) server\&. What this basically means is that it will act as a WINS database server, creating a database from name registration requests that it receives and replying to queries from clients for these names\&.
+
+.PP
+In addition, \fBnmbd\fR can act as a WINS proxy, relaying broadcast queries from clients that do not understand how to talk the WINS protocol to a WINS server\&.
+
+.SH "OPTIONS"
+
+.TP
+-D
+If specified, this parameter causes \fBnmbd\fR to operate as a daemon\&. That is, it detaches itself and runs in the background, fielding requests on the appropriate port\&. By default, \fBnmbd\fR will operate as a daemon if launched from a command shell\&. nmbd can also be operated from the \fBinetd\fR meta-daemon, although this is not recommended\&.
+
+
+.TP
+-F
+If specified, this parameter causes the main \fBnmbd\fR process to not daemonize, i\&.e\&. double-fork and disassociate with the terminal\&. Child processes are still created as normal to service each connection request, but the main process does not exit\&. This operation mode is suitable for running \fBnmbd\fR under process supervisors such as \fBsupervise\fR and \fBsvscan\fR from Daniel J\&. Bernstein's \fBdaemontools\fR package, or the AIX process monitor\&.
+
+
+.TP
+-S
+If specified, this parameter causes \fBnmbd\fR to log to standard output rather than a file\&.
+
+
+.TP
+-i
+If this parameter is specified it causes the server to run "interactively", not as a daemon, even if the server is executed on the command line of a shell\&. Setting this parameter negates the implicit daemon mode when run from the command line\&. \fBnmbd\fR also logs to standard output, as if the \fB-S\fR parameter had been given\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-H <filename>
+NetBIOS lmhosts file\&. The lmhosts file is a list of NetBIOS names to IP addresses that is loaded by the nmbd server and used via the name resolution mechanism \fIname resolve order\fR described in \fBsmb.conf\fR(5) to resolve any NetBIOS name queries needed by the server\&. Note that the contents of this file are \fBNOT\fR used by \fBnmbd\fR to answer any name queries\&. Adding a line to this file affects name NetBIOS resolution from this host \fBONLY\fR\&.
+
+
+The default path to this file is compiled into Samba as part of the build process\&. Common defaults are \fI/usr/local/samba/lib/lmhosts\fR, \fI/usr/samba/lib/lmhosts\fR or \fI/etc/samba/lmhosts\fR\&. See the \fBlmhosts\fR(5) man page for details on the contents of this file\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR is an integer from 0 to 10\&. The default value if this parameter is not specified is zero\&.
+
+
+The higher this value, the more detail will be logged to the log files about the activities of the server\&. At level 0, only critical errors and serious warnings will be logged\&. Level 1 is a reasonable level for day-to-day running - it generates a small amount of information about operations carried out\&.
+
+
+Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem\&. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic\&.
+
+
+Note that specifying this parameter here will override the \fIlog level\fR parameter in the \fIsmb\&.conf\fR file\&.
+
+
+.TP
+-l|--logfile=logbasename
+File name for log/debug files\&. The extension \fB"\&.client"\fR will be appended\&. The log file is never removed by the client\&.
+
+
+.TP
+-p <UDP port number>
+UDP port number is a positive integer value\&. This option changes the default UDP port number (normally 137) that \fBnmbd\fR responds to name queries on\&. Don't use this option unless you are an expert, in which case you won't need help!
+
+
+.SH "FILES"
+
+.TP
+\fI/etc/inetd\&.conf\fR
+If the server is to be run by the \fBinetd\fR meta-daemon, this file must contain suitable startup information for the meta-daemon\&.
+
+
+.TP
+\fI/etc/rc\fR
+or whatever initialization script your system uses)\&.
+
+
+If running the server as a daemon at startup, this file will need to contain an appropriate startup sequence for the server\&.
+
+
+.TP
+\fI/etc/services\fR
+If running the server via the meta-daemon \fBinetd\fR, this file must contain a mapping of service name (e\&.g\&., netbios-ssn) to service port (e\&.g\&., 139) and protocol type (e\&.g\&., tcp)\&.
+
+
+.TP
+\fI/usr/local/samba/lib/smb\&.conf\fR
+This is the default location of the \fBsmb.conf\fR(5) server configuration file\&. Other common places that systems install this file are \fI/usr/samba/lib/smb\&.conf\fR and \fI/etc/samba/smb\&.conf\fR\&.
+
+
+When run as a WINS server (see the \fIwins support\fR parameter in the \fBsmb.conf\fR(5) man page), \fBnmbd\fR will store the WINS database in the file \fIwins\&.dat\fR in the \fIvar/locks\fR directory configured under wherever Samba was configured to install itself\&.
+
+
+If \fBnmbd\fR is acting as a \fB browse master\fR (see the \fIlocal master\fR parameter in the \fBsmb.conf\fR(5) man page, \fBnmbd\fR will store the browsing database in the file \fIbrowse\&.dat \fR in the \fIvar/locks\fR directory configured under wherever Samba was configured to install itself\&.
+
+
+.SH "SIGNALS"
+
+.PP
+To shut down an \fBnmbd\fR process it is recommended that SIGKILL (-9) \fBNOT\fR be used, except as a last resort, as this may leave the name database in an inconsistent state\&. The correct way to terminate \fBnmbd\fR is to send it a SIGTERM (-15) signal and wait for it to die on its own\&.
+
+.PP
+\fBnmbd\fR will accept SIGHUP, which will cause it to dump out its namelists into the file \fInamelist\&.debug \fR in the \fI/usr/local/samba/var/locks\fR directory (or the \fIvar/locks\fR directory configured under wherever Samba was configured to install itself)\&. This will also cause \fBnmbd\fR to dump out its server database in the \fIlog\&.nmb\fR file\&.
+
+.PP
+The debug log level of nmbd may be raised or lowered using \fBsmbcontrol\fR(1) (SIGUSR[1|2] signals are no longer used since Samba 2\&.2)\&. This is to allow transient problems to be diagnosed, whilst still running at a normally low log level\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBinetd\fR(8), \fBsmbd\fR(8), \fBsmb.conf\fR(5), \fBsmbclient\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1), and the Internet RFC's \fIrfc1001\&.txt\fR, \fIrfc1002\&.txt\fR\&. In addition the CIFS (formerly SMB) specification is available as a link from the Web page http://samba\&.org/cifs/\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/ntsysv.8 b/raw/man8/ntsysv.8
new file mode 100644
index 0000000..503debb
--- /dev/null
+++ b/raw/man8/ntsysv.8
@@ -0,0 +1,34 @@
+.TH NTSYSV 8 "Mon Oct 13 1997"
+.UC 4
+.SH NAME
+ntsysv \- simple interface for configuring runlevels
+.SH SYNOPSIS
+\fBntsysv\fR [--back] [--level <levels>]
+.SH DESCRIPTION
+\fBntsysv\fR is a simple interface for configuring runlevel services which
+are also configurable through \fBchkconfig\fR. By default, it configures
+the current runlevel. If the user would like to configure other runlevels,
+those levels can be specified on the command line by listing the levels
+after \fB--levels\fR, without any spaces. For example, the option
+\fI--levels 016\fR edits runlevels 0, 1, and 6.
+
+A service is considered to be started in the runlevel set if it is started
+in any of the runlevels which are being edited.
+
+The \fBntsysv\fR window normally contains a \fBCancel\fR button. If
+\fB--back\fR is specified, a \fBBack\fR button appears instead.
+
+.PD
+.SH "RETURN CODES"
+\fBntsysv\fR returns 0 on success, 2 on error, and 1 if the user cancelled
+(or backed out of) the program.
+
+.PD
+.SH "SEE ALSO"
+.BR chkconfig (8),
+.BR serviceconf (8)
+
+.SH AUTHOR
+.nf
+Erik Troan <ewt at redhat.com>
+.fi
diff --git a/raw/man8/ping.8 b/raw/man8/ping.8
new file mode 100644
index 0000000..8558de4
--- /dev/null
+++ b/raw/man8/ping.8
@@ -0,0 +1,332 @@
+.\" This manpage has been automatically generated by docbook2man 
+.\" from a DocBook document.  This tool can be found at:
+.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" Please send any bug reports, improvements, comments, patches, 
+.\" etc. to Steve Cheng <steve at ggi-project.org>.
+.TH "PING" "8" "27 September 2002" "iputils-020927" "System Manager's Manual: iputils"
+.SH NAME
+ping, ping6 \- send ICMP ECHO_REQUEST to network hosts
+.SH SYNOPSIS
+
+\fBping\fR [ \fB-LRUbdfnqrvVaAB\fR]  [ \fB-c \fIcount\fB\fR]  [ \fB-i \fIinterval\fB\fR]  [ \fB-l \fIpreload\fB\fR]  [ \fB-p \fIpattern\fB\fR]  [ \fB-s \fIpacketsize\fB\fR]  [ \fB-t \fIttl\fB\fR]  [ \fB-w \fIdeadline\fB\fR]  [ \fB-F \fIflowlabel\fB\fR]  [ \fB-I \fIinterface\fB\fR]  [ \fB-M \fIhint\fB\fR]  [ \fB-Q \fItos\fB\fR]  [ \fB-S \fIsndbuf\fB\fR]  [ \fB-T \fItimestamp option\fB\fR]  [ \fB-W \fItimeout\fB\fR]  [ \fB\fIhop\fB\fR\fI ...\fR]  \fB\fIdestination\fB\fR
+
+.SH "DESCRIPTION"
+.PP
+\fBping\fR uses the ICMP protocol's mandatory ECHO_REQUEST
+datagram to elicit an ICMP ECHO_RESPONSE from a host or gateway.
+ECHO_REQUEST datagrams (``pings'') have an IP and ICMP
+header, followed by a struct timeval and then an arbitrary
+number of ``pad'' bytes used to fill out the packet.
+.SH "OPTIONS"
+.TP
+\fB-a\fR
+Audible ping.
+.TP
+\fB-A\fR
+Adaptive ping. Interpacket interval adapts to round-trip time, so that
+effectively not more than one (or more, if preload is set) unanswered probes
+present in the network. Minimal interval is 200msec for not super-user.
+On networks with low rtt this mode is essentially equivalent to flood mode.  
+.TP
+\fB-b\fR
+Allow pinging a broadcast address.
+.TP
+\fB-B\fR
+Do not allow \fBping\fR to change source address of probes.
+The address is bound to one selected when \fBping\fR starts.
+.TP
+\fB-c \fIcount\fB\fR
+Stop after sending \fIcount\fR ECHO_REQUEST
+packets. With 
+\fIdeadline\fR
+option, \fBping\fR waits for
+\fIcount\fR ECHO_REPLY packets, until the timeout expires.
+.TP
+\fB-d\fR
+Set the SO_DEBUG option on the socket being used.
+Essentially, this socket option is not used by Linux kernel. 
+.TP
+\fB-F \fIflow label\fB\fR
+Allocate and set 20 bit flow label on echo request packets.
+(Only \fBping6\fR). If value is zero, kernel allocates random flow label.
+.TP
+\fB-f\fR
+Flood ping. For every ECHO_REQUEST sent a period ``.'' is printed,
+while for ever ECHO_REPLY received a backspace is printed.
+This provides a rapid display of how many packets are being dropped.
+If interval is not given, it sets interval to zero and
+outputs packets as fast as they come back or one hundred times per second,
+whichever is more.
+Only the super-user may use this option with zero interval.
+.TP
+\fB-i \fIinterval\fB\fR
+Wait \fIinterval\fR seconds between sending each packet.
+The default is to wait for one second between each packet normally,
+or not to wait in flood mode. Only super-user may set interval
+to values less 0.2 seconds.
+.TP
+\fB-I \fIinterface address\fB\fR
+Set source address to specified interface address. Argument
+may be numeric IP address or name of device. When pinging IPv6
+link-local address this option is required.
+.TP
+\fB-l \fIpreload\fB\fR
+If \fIpreload\fR is specified,
+\fBping\fR sends that many packets not waiting for reply.
+Only the super-user may select preload more than 3.
+.TP
+\fB-L\fR
+Suppress loopback of multicast packets.  This flag only applies if the ping
+destination is a multicast address.
+.TP
+\fB-n\fR
+Numeric output only.
+No attempt will be made to lookup symbolic names for host addresses.
+.TP
+\fB-p \fIpattern\fB\fR
+You may specify up to 16 ``pad'' bytes to fill out the packet you send.
+This is useful for diagnosing data-dependent problems in a network.
+For example, \fB-p ff\fR will cause the sent packet
+to be filled with all ones.
+.TP
+\fB-Q \fItos\fB\fR
+Set Quality of Service -related bits in ICMP datagrams.  
+\fItos\fR can be either decimal or hex number.
+Traditionally (RFC1349), these have been interpreted as: 0 for reserved
+(currently being redefined as congestion control), 1-4 for Type of Service
+and 5-7 for Precedence.
+Possible settings for Type of Service are: minimal cost: 0x02, 
+reliability: 0x04, throughput: 0x08, low delay: 0x10.  Multiple TOS bits
+should not be set simultaneously.  Possible settings for
+special Precedence range from priority (0x20) to net control (0xe0).  You
+must be root (CAP_NET_ADMIN capability) to use Critical or
+higher precedence value.  You cannot set
+bit 0x01 (reserved) unless ECN has been enabled in the kernel.
+In RFC2474, these fields has been redefined as 8-bit Differentiated
+Services (DS), consisting of: bits 0-1 of separate data (ECN will be used,
+here), and bits 2-7 of Differentiated Services Codepoint (DSCP).
+.TP
+\fB-q\fR
+Quiet output.
+Nothing is displayed except the summary lines at startup time and
+when finished.
+.TP
+\fB-R\fR
+Record route.
+Includes the RECORD_ROUTE option in the ECHO_REQUEST
+packet and displays the route buffer on returned packets.
+Note that the IP header is only large enough for nine such routes.
+Many hosts ignore or discard this option.
+.TP
+\fB-r\fR
+Bypass the normal routing tables and send directly to a host on an attached
+interface.
+If the host is not on a directly-attached network, an error is returned.
+This option can be used to ping a local host through an interface
+that has no route through it provided the option \fB-I\fR is also
+used.
+.TP
+\fB-s \fIpacketsize\fB\fR
+Specifies the number of data bytes to be sent.  
+The default is 56, which translates into 64 ICMP
+data bytes when combined with the 8 bytes of ICMP header data.
+.TP
+\fB-S \fIsndbuf\fB\fR
+Set socket sndbuf. If not specified, it is selected to buffer
+not more than one packet.
+.TP
+\fB-t \fIttl\fB\fR
+Set the IP Time to Live.
+.TP
+\fB-T \fItimestamp option\fB\fR
+Set special IP timestamp options.
+\fItimestamp option\fR may be either 
+\fItsonly\fR (only timestamps), 
+\fItsandaddr\fR (timestamps and addresses) or 
+\fItsprespec host1 [host2 [host3 [host4]]]\fR
+(timestamp prespecified hops).
+.TP
+\fB-M \fIhint\fB\fR
+Select Path MTU Discovery strategy.
+\fIhint\fR may be either \fIdo\fR
+(prohibit fragmentation, even local one), 
+\fIwant\fR (do PMTU discovery, fragment locally when packet size
+is large), or \fIdont\fR (do not set DF flag).
+.TP
+\fB-U\fR
+Print full user-to-user latency (the old behaviour). Normally
+\fBping\fR
+prints network round trip time, which can be different
+f.e. due to DNS failures. 
+.TP
+\fB-v\fR
+Verbose output.
+.TP
+\fB-V\fR
+Show version and exit.
+.TP
+\fB-w \fIdeadline\fB\fR
+Specify a timeout, in seconds, before
+\fBping\fR
+exits regardless of how many
+packets have been sent or received. In this case
+\fBping\fR
+does not stop after
+\fIcount\fR
+packet are sent, it waits either for
+\fIdeadline\fR
+expire or until
+\fIcount\fR
+probes are answered or for some error notification from network.   
+.TP
+\fB-W \fItimeout\fB\fR
+Time to wait for a response, in seconds. The option affects only timeout
+in absense of any responses, otherwise \fBping\fR waits for two RTTs.
+.PP
+When using \fBping\fR for fault isolation, it should first be run
+on the local host, to verify that the local network interface is up
+and running. Then, hosts and gateways further and further away should be
+``pinged''. Round-trip times and packet loss statistics are computed.
+If duplicate packets are received, they are not included in the packet
+loss calculation, although the round trip time of these packets is used
+in calculating the minimum/average/maximum round-trip time numbers.
+When the specified number of packets have been sent (and received) or
+if the program is terminated with a
+SIGINT, a brief summary is displayed. Shorter current statistics
+can be obtained without termination of process with signal
+SIGQUIT.
+.PP
+If \fBping\fR does not receive any reply packets at all it will
+exit with code 1. If a packet 
+\fIcount\fR
+and
+\fIdeadline\fR
+are both specified, and fewer than
+\fIcount\fR
+packets are received by the time the
+\fIdeadline\fR
+has arrived, it will also exit with code 1. 
+On other error it exits with code 2. Otherwise it exits with code 0. This
+makes it possible to use the exit code to see if a host is alive or
+not.
+.PP
+This program is intended for use in network testing, measurement and
+management.
+Because of the load it can impose on the network, it is unwise to use
+\fBping\fR during normal operations or from automated scripts.
+.SH "ICMP PACKET DETAILS"
+.PP
+An IP header without options is 20 bytes.
+An ICMP ECHO_REQUEST packet contains an additional 8 bytes worth
+of ICMP header followed by an arbitrary amount of data.
+When a \fIpacketsize\fR is given, this indicated the size of this
+extra piece of data (the default is 56). Thus the amount of data received
+inside of an IP packet of type ICMP ECHO_REPLY will always be 8 bytes
+more than the requested data space (the ICMP header).
+.PP
+If the data space is at least of size of struct timeval
+\fBping\fR uses the beginning bytes of this space to include
+a timestamp which it uses in the computation of round trip times.
+If the data space is shorter, no round trip times are given.
+.SH "DUPLICATE AND DAMAGED PACKETS"
+.PP
+\fBping\fR will report duplicate and damaged packets.
+Duplicate packets should never occur, and seem to be caused by
+inappropriate link-level retransmissions.
+Duplicates may occur in many situations and are rarely (if ever) a
+good sign, although the presence of low levels of duplicates may not
+always be cause for alarm.
+.PP
+Damaged packets are obviously serious cause for alarm and often
+indicate broken hardware somewhere in the
+\fBping\fR packet's path (in the network or in the hosts).
+.SH "TRYING DIFFERENT DATA PATTERNS"
+.PP
+The (inter)network layer should never treat packets differently depending
+on the data contained in the data portion.
+Unfortunately, data-dependent problems have been known to sneak into
+networks and remain undetected for long periods of time.
+In many cases the particular pattern that will have problems is something
+that doesn't have sufficient ``transitions'', such as all ones or all
+zeros, or a pattern right at the edge, such as almost all zeros.
+It isn't necessarily enough to specify a data pattern of all zeros (for
+example) on the command line because the pattern that is of interest is
+at the data link level, and the relationship between what you type and
+what the controllers transmit can be complicated.
+.PP
+This means that if you have a data-dependent problem you will probably
+have to do a lot of testing to find it.
+If you are lucky, you may manage to find a file that either can't be sent
+across your network or that takes much longer to transfer than other
+similar length files.
+You can then examine this file for repeated patterns that you can test
+using the \fB-p\fR option of \fBping\fR.
+.SH "TTL DETAILS"
+.PP
+The TTL value of an IP packet represents the maximum number of IP routers
+that the packet can go through before being thrown away.
+In current practice you can expect each router in the Internet to decrement
+the TTL field by exactly one.
+.PP
+The TCP/IP specification states that the TTL field for TCP
+packets should be set to 60, but many systems use smaller values
+(4.3 BSD uses 30, 4.2 used 15).
+.PP
+The maximum possible value of this field is 255, and most Unix systems set
+the TTL field of ICMP ECHO_REQUEST packets to 255.
+This is why you will find you can ``ping'' some hosts, but not reach them
+with
+\fBtelnet\fR(1)
+or
+\fBftp\fR(1).
+.PP
+In normal operation ping prints the ttl value from the packet it receives.
+When a remote system receives a ping packet, it can do one of three things
+with the TTL field in its response:
+.TP 0.2i
+\(bu
+Not change it; this is what Berkeley Unix systems did before the
+4.3BSD Tahoe release. In this case the TTL value in the received packet
+will be 255 minus the number of routers in the round-trip path.
+.TP 0.2i
+\(bu
+Set it to 255; this is what current Berkeley Unix systems do.
+In this case the TTL value in the received packet will be 255 minus the
+number of routers in the path \fBfrom\fR
+the remote system \fBto\fR the \fBping\fRing host.
+.TP 0.2i
+\(bu
+Set it to some other value. Some machines use the same value for
+ICMP packets that they use for TCP packets, for example either 30 or 60.
+Others may use completely wild values.
+.SH "BUGS"
+.TP 0.2i
+\(bu
+Many Hosts and Gateways ignore the RECORD_ROUTE option.
+.TP 0.2i
+\(bu
+The maximum IP header length is too small for options like
+RECORD_ROUTE to be completely useful.
+There's not much that that can be done about this, however.
+.TP 0.2i
+\(bu
+Flood pinging is not recommended in general, and flood pinging the
+broadcast address should only be done under very controlled conditions.
+.SH "SEE ALSO"
+.PP
+\fBnetstat\fR(1),
+\fBifconfig\fR(8).
+.SH "HISTORY"
+.PP
+The \fBping\fR command appeared in 4.3BSD.
+.PP
+The version described here is its descendant specific to Linux.
+.SH "SECURITY"
+.PP
+\fBping\fR requires CAP_NET_RAWIO capability
+to be executed. It may be used as set-uid root.
+.SH "AVAILABILITY"
+.PP
+\fBping\fR is part of \fIiputils\fR package
+and the latest versions are  available in source form for anonymous ftp
+ftp://ftp.inr.ac.ru/ip-routing/iputils-current.tar.gz.
diff --git a/raw/man8/pppd.8 b/raw/man8/pppd.8
new file mode 100644
index 0000000..ec3be32
--- /dev/null
+++ b/raw/man8/pppd.8
@@ -0,0 +1,1590 @@
+.\" manual page [] for pppd 2.4
+.\" SH section heading
+.\" SS subsection heading
+.\" LP paragraph
+.\" IP indented paragraph
+.\" TP hanging label
+.TH PPPD 8
+.SH NAME
+pppd \- Point to Point Protocol daemon
+.SH SYNOPSIS
+.B pppd
+[
+.I tty_name
+] [
+.I speed
+] [
+.I options
+]
+.SH DESCRIPTION
+.LP
+The Point-to-Point Protocol (PPP) provides a method for transmitting
+datagrams over serial point-to-point links.  PPP
+is composed of three parts: a method for encapsulating datagrams over
+serial links, an extensible Link Control Protocol (LCP), and
+a family of Network Control Protocols (NCP) for establishing
+and configuring different network-layer protocols.
+.LP
+The encapsulation scheme is provided by driver code in the kernel.
+Pppd provides the basic LCP, authentication support, and an NCP for
+establishing and configuring the Internet Protocol (IP) (called the IP
+Control Protocol, IPCP).
+.SH FREQUENTLY USED OPTIONS
+.TP
+.I <tty_name>
+Communicate over the named device.  The string "/dev/" is prepended if
+necessary.  If no device name is given, or if the name of the terminal
+connected to the standard input is given, pppd will use that terminal,
+and will not fork to put itself in the background.  A value for this
+option from a privileged source cannot be overridden by a
+non-privileged user.
+.TP
+.I <speed>
+Set the baud rate to <speed> (a decimal number).  On systems such as
+4.4BSD and NetBSD, any speed can be specified.  Other systems
+(e.g. SunOS) allow only a limited set of speeds.
+.TP
+.B asyncmap \fI<map>
+Set the async character map to <map>.  This map describes which
+control characters cannot be successfully received over the serial
+line.  Pppd will ask the peer to send these characters as a 2-byte
+escape sequence.  The argument is a 32 bit hex number with each bit
+representing a character to escape.  Bit 0 (00000001) represents the
+character 0x00; bit 31 (80000000) represents the character 0x1f or ^_.
+If multiple \fIasyncmap\fR options are given, the values are ORed
+together.  If no \fIasyncmap\fR option is given, no async character
+map will be negotiated for the receive direction; the peer should then
+escape \fIall\fR control characters.  To escape transmitted
+characters, use the \fIescape\fR option.
+.TP
+.B auth
+Require the peer to authenticate itself before allowing network
+packets to be sent or received.  This option is the default if the
+system has a default route.  If neither this option nor the
+\fInoauth\fR option is specified, pppd will only allow the peer to use
+IP addresses to which the system does not already have a route.
+.TP
+.B call \fIname
+Read options from the file /etc/ppp/peers/\fIname\fR.  This file may
+contain privileged options, such as \fInoauth\fR, even if pppd
+is not being run by root.  The \fIname\fR string may not begin with /
+or include .. as a pathname component.  The format of the options file
+is described below.
+.TP
+.B connect \fIscript
+Use the executable or shell command specified by \fIscript\fR to set
+up the serial line.  This script would typically use the chat(8)
+program to dial the modem and start the remote ppp session.  A value
+for this option from a privileged source cannot be overridden by a
+non-privileged user.
+.TP
+.B crtscts
+Use hardware flow control (i.e. RTS/CTS) to control the flow of
+data on the serial port.  If neither the \fIcrtscts\fR, the
+\fInocrtscts\fR, the \fIcdtrcts\fR nor the \fInocdtrcts\fR option
+is given, the hardware flow control setting for the serial port is
+left unchanged.
+Some serial ports (such as Macintosh serial ports) lack a true
+RTS output. Such serial ports use this mode to implement
+unidirectional flow control. The serial port will
+suspend transmission when requested by the modem (via CTS)
+but will be unable to request the modem stop sending to the
+computer. This mode retains the ability to use DTR as
+a modem control line.
+.TP
+.B defaultroute
+Add a default route to the system routing tables, using the peer as
+the gateway, when IPCP negotiation is successfully completed.
+This entry is removed when the PPP connection is broken.  This option
+is privileged if the \fInodefaultroute\fR option has been specified.
+.TP
+.B disconnect \fIscript
+Run the executable or shell command specified by \fIscript\fR after
+pppd has terminated the link.  This script could, for example, issue
+commands to the modem to cause it to hang up if hardware modem control
+signals were not available.  The disconnect script is not run if the
+modem has already hung up.  A value for this option from a privileged
+source cannot be overridden by a non-privileged user.
+.TP
+.B escape \fIxx,yy,...
+Specifies that certain characters should be escaped on transmission
+(regardless of whether the peer requests them to be escaped with its
+async control character map).  The characters to be escaped are
+specified as a list of hex numbers separated by commas.  Note that
+almost any character can be specified for the \fIescape\fR option,
+unlike the \fIasyncmap\fR option which only allows control characters
+to be specified.  The characters which may not be escaped are those
+with hex values 0x20 - 0x3f or 0x5e.
+.TP
+.B file \fIname
+Read options from file \fIname\fR (the format is described below).
+The file must be readable by the user who has invoked pppd.
+.TP
+.B init \fIscript
+Run the executable or shell command specified by \fIscript\fR to
+initialize the serial line.  This script would typically use the
+chat(8) program to configure the modem to enable auto answer.  A value
+for this option from a privileged source cannot be overridden by a
+non-privileged user.
+.TP
+.B lock
+Specifies that pppd should create a UUCP-style lock file for the
+serial device to ensure exclusive access to the device.
+.TP
+.B mru \fIn
+Set the MRU [Maximum Receive Unit] value to \fIn\fR. Pppd
+will ask the peer to send packets of no more than \fIn\fR bytes.  The
+minimum MRU value is 128.  The default MRU value is 1500.  A value of
+296 is recommended for slow links (40 bytes for TCP/IP header + 256
+bytes of data).  (Note that for IPv6 MRU must be at least 1280)
+.TP
+.B mtu \fIn
+Set the MTU [Maximum Transmit Unit] value to \fIn\fR.  Unless the
+peer requests a smaller value via MRU negotiation, pppd will
+request that the kernel networking code send data packets of no more
+than \fIn\fR bytes through the PPP network interface.  (Note that for 
+IPv6 MTU must be at least 1280)
+.TP
+.B passive
+Enables the "passive" option in the LCP.  With this option, pppd will
+attempt to initiate a connection; if no reply is received from the
+peer, pppd will then just wait passively for a valid LCP packet from
+the peer, instead of exiting, as it would without this option.
+.SH OPTIONS
+.TP
+.I <local_IP_address>\fB:\fI<remote_IP_address>
+Set the local and/or remote interface IP addresses.  Either one may be
+omitted.  The IP addresses can be specified with a host name or in
+decimal dot notation (e.g. 150.234.56.78).  The default local
+address is the (first) IP address of the system (unless the
+\fInoipdefault\fR
+option is given).  The remote address will be obtained from the peer
+if not specified in any option.  Thus, in simple cases, this option is
+not required.  If a local and/or remote IP address is specified with
+this option, pppd
+will not accept a different value from the peer in the IPCP
+negotiation, unless the \fIipcp-accept-local\fR and/or
+\fIipcp-accept-remote\fR options are given, respectively.
+.TP
+.B ipv6 \fI<local_interface_identifier>\fR,\fI<remote_interface_identifier>
+Set the local and/or remote 64-bit interface identifier. Either one may be
+omitted. The identifier must be specified in standard ascii notation of
+IPv6 addresses (e.g. ::dead:beef). If the
+\fIipv6cp-use-ipaddr\fR
+option is given, the local identifier is the local IPv4 address (see above).
+On systems which supports a unique persistent id, such as EUI-48 derived
+from the Ethernet MAC address, \fIipv6cp-use-persistent\fR option can be
+used to replace the \fIipv6 <local>,<remote>\fR option. Otherwise the 
+identifier is randomized.
+.TP
+.B active-filter \fIfilter-expression
+Specifies a packet filter to be applied to data packets to determine
+which packets are to be regarded as link activity, and therefore reset
+the idle timer, or cause the link to be brought up in demand-dialling
+mode.  This option is useful in conjunction with the
+\fBidle\fR option if there are packets being sent or received
+regularly over the link (for example, routing information packets)
+which would otherwise prevent the link from ever appearing to be idle.
+The \fIfilter-expression\fR syntax is as described for tcpdump(1),
+except that qualifiers which are inappropriate for a PPP link, such as
+\fBether\fR and \fBarp\fR, are not permitted.  Generally the filter
+expression should be enclosed in single-quotes to prevent whitespace
+in the expression from being interpreted by the shell. This option
+is currently only available under NetBSD, and then only
+if both the kernel and pppd were compiled with PPP_FILTER defined.
+.TP
+.B allow-ip \fIaddress(es)
+Allow peers to use the given IP address or subnet without
+authenticating themselves.  The parameter is parsed as for each
+element of the list of allowed IP addresses in the secrets files (see
+the AUTHENTICATION section below).
+.TP
+.B bsdcomp \fInr,nt
+Request that the peer compress packets that it sends, using the
+BSD-Compress scheme, with a maximum code size of \fInr\fR bits, and
+agree to compress packets sent to the peer with a maximum code size of
+\fInt\fR bits.  If \fInt\fR is not specified, it defaults to the value
+given for \fInr\fR.  Values in the range 9 to 15 may be used for
+\fInr\fR and \fInt\fR; larger values give better compression but
+consume more kernel memory for compression dictionaries.
+Alternatively, a value of 0 for \fInr\fR or \fInt\fR disables
+compression in the corresponding direction.  Use \fInobsdcomp\fR or
+\fIbsdcomp 0\fR to disable BSD-Compress compression entirely.
+.TP
+.B cdtrcts
+Use a non-standard hardware flow control (i.e. DTR/CTS) to control
+the flow of data on the serial port.  If neither the \fIcrtscts\fR,
+the \fInocrtscts\fR, the \fIcdtrcts\fR nor the \fInocdtrcts\fR
+option is given, the hardware flow control setting for the serial
+port is left unchanged.
+Some serial ports (such as Macintosh serial ports) lack a true
+RTS output. Such serial ports use this mode to implement true
+bi-directional flow control. The sacrifice is that this flow
+control mode does not permit using DTR as a modem control line.
+.TP
+.B chap-interval \fIn
+If this option is given, pppd will rechallenge the peer every \fIn\fR
+seconds.
+.TP
+.B chap-max-challenge \fIn
+Set the maximum number of CHAP challenge transmissions to \fIn\fR
+(default 10).
+.TP
+.B chap-restart \fIn
+Set the CHAP restart interval (retransmission timeout for challenges)
+to \fIn\fR seconds (default 3).
+.TP
+.B connect-delay \fIn
+Wait for up \fIn\fR milliseconds after the connect script finishes for
+a valid PPP packet from the peer.  At the end of this time, or when a
+valid PPP packet is received from the peer, pppd will commence
+negotiation by sending its first LCP packet.  The default value is
+1000 (1 second).  This wait period only applies if the \fBconnect\fR
+or \fBpty\fR option is used.
+.TP
+.B debug
+Enables connection debugging facilities.
+If this option is given, pppd will log the contents of all
+control packets sent or received in a readable form.  The packets are
+logged through syslog with facility \fIdaemon\fR and level
+\fIdebug\fR.  This information can be directed to a file by setting up
+/etc/syslog.conf appropriately (see syslog.conf(5)).
+.TP
+.B default-asyncmap
+Disable asyncmap negotiation, forcing all control characters to be
+escaped for both the transmit and the receive direction.
+.TP
+.B default-mru
+Disable MRU [Maximum Receive Unit] negotiation.  With this option,
+pppd will use the default MRU value of 1500 bytes for both the
+transmit and receive direction.
+.TP
+.B deflate \fInr,nt
+Request that the peer compress packets that it sends, using the
+Deflate scheme, with a maximum window size of \fI2**nr\fR bytes, and
+agree to compress packets sent to the peer with a maximum window size
+of \fI2**nt\fR bytes.  If \fInt\fR is not specified, it defaults to
+the value given for \fInr\fR.  Values in the range 9 to 15 may be used
+for \fInr\fR and \fInt\fR; larger values give better compression but
+consume more kernel memory for compression dictionaries.
+Alternatively, a value of 0 for \fInr\fR or \fInt\fR disables
+compression in the corresponding direction.  Use \fInodeflate\fR or
+\fIdeflate 0\fR to disable Deflate compression entirely.  (Note: pppd
+requests Deflate compression in preference to BSD-Compress if the peer
+can do either.)
+.TP
+.B demand
+Initiate the link only on demand, i.e. when data traffic is present.
+With this option, the remote IP address must be specified by the user
+on the command line or in an options file.  Pppd will initially
+configure the interface and enable it for IP traffic without
+connecting to the peer.  When traffic is available, pppd will
+connect to the peer and perform negotiation, authentication, etc.
+When this is completed, pppd will commence passing data packets
+(i.e., IP packets) across the link.
+
+The \fIdemand\fR option implies the \fIpersist\fR option.  If this
+behaviour is not desired, use the \fInopersist\fR option after the
+\fIdemand\fR option.  The \fIidle\fR and \fIholdoff\fR
+options are also useful in conjuction with the \fIdemand\fR option.
+.TP
+.B domain \fId
+Append the domain name \fId\fR to the local host name for authentication
+purposes.  For example, if gethostname() returns the name porsche, but
+the fully qualified domain name is porsche.Quotron.COM, you could
+specify \fIdomain Quotron.COM\fR.  Pppd would then use the name
+\fIporsche.Quotron.COM\fR for looking up secrets in the secrets file,
+and as the default name to send to the peer when authenticating itself
+to the peer.  This option is privileged.
+.TP
+.B dryrun
+With the \fBdryrun\fR option, pppd will print out all the option
+values which have been set and then exit, after parsing the command
+line and options files and checking the option values, but before
+initiating the link.  The option values are logged at level info, and
+also printed to standard output unless the device on standard output
+is the device that pppd would be using to communicate with the peer.
+.TP
+.B dump
+With the \fBdump\fR option, pppd will print out all the option values
+which have been set.  This option is like the \fBdryrun\fR option
+except that pppd proceeds as normal rather than exiting.
+.TP
+.B endpoint \fI<epdisc>
+Sets the endpoint discriminator sent by the local machine to the peer
+during multilink negotiation to \fI<epdisc>\fR.  The default is to use
+the MAC address of the first ethernet interface on the system, if any,
+otherwise the IPv4 address corresponding to the hostname, if any,
+provided it is not in the multicast or locally-assigned IP address
+ranges, or the localhost address.  The endpoint discriminator can be
+the string \fBnull\fR or of the form \fItype\fR:\fIvalue\fR, where
+type is a decimal number or one of the strings \fBlocal\fR, \fBIP\fR,
+\fBMAC\fR, \fBmagic\fR, or \fBphone\fR.  The value is an IP address in
+dotted-decimal notation for the \fBIP\fR type, or a string of bytes in
+hexadecimal, separated by periods or colons for the other types.  For
+the MAC type, the value may also be the name of an ethernet or similar
+network interface.  This option is currently only available under
+Linux.
+.TP
+.B hide-password
+When logging the contents of PAP packets, this option causes pppd to
+exclude the password string from the log.  This is the default.
+.TP
+.B holdoff \fIn
+Specifies how many seconds to wait before re-initiating the link after
+it terminates.  This option only has any effect if the \fIpersist\fR
+or \fIdemand\fR option is used.  The holdoff period is not applied if
+the link was terminated because it was idle.
+.TP
+.B idle \fIn
+Specifies that pppd should disconnect if the link is idle for \fIn\fR
+seconds.  The link is idle when no data packets (i.e. IP packets) are
+being sent or received.  Note: it is not advisable to use this option
+with the \fIpersist\fR option without the \fIdemand\fR option.
+If the \fBactive-filter\fR
+option is given, data packets which are rejected by the specified
+activity filter also count as the link being idle.
+.TP
+.B ipcp-accept-local
+With this option, pppd will accept the peer's idea of our local IP
+address, even if the local IP address was specified in an option.
+.TP
+.B ipcp-accept-remote
+With this option, pppd will accept the peer's idea of its (remote) IP
+address, even if the remote IP address was specified in an option.
+.TP
+.B ipcp-max-configure \fIn
+Set the maximum number of IPCP configure-request transmissions to
+\fIn\fR (default 10).
+.TP
+.B ipcp-max-failure \fIn
+Set the maximum number of IPCP configure-NAKs returned before starting
+to send configure-Rejects instead to \fIn\fR (default 10).
+.TP
+.B ipcp-max-terminate \fIn
+Set the maximum number of IPCP terminate-request transmissions to
+\fIn\fR (default 3).
+.TP
+.B ipcp-restart \fIn
+Set the IPCP restart interval (retransmission timeout) to \fIn\fR
+seconds (default 3).
+.TP
+.B ipparam \fIstring
+Provides an extra parameter to the ip-up and ip-down scripts.  If this
+option is given, the \fIstring\fR supplied is given as the 6th
+parameter to those scripts.
+.TP
+.B ipv6cp-max-configure \fIn
+Set the maximum number of IPv6CP configure-request transmissions to
+\fIn\fR (default 10).
+.TP
+.B ipv6cp-max-failure \fIn
+Set the maximum number of IPv6CP configure-NAKs returned before starting
+to send configure-Rejects instead to \fIn\fR (default 10).
+.TP
+.B ipv6cp-max-terminate \fIn
+Set the maximum number of IPv6CP terminate-request transmissions to
+\fIn\fR (default 3).
+.TP
+.B ipv6cp-restart \fIn
+Set the IPv6CP restart interval (retransmission timeout) to \fIn\fR
+seconds (default 3).
+.TP
+.B ipx
+Enable the IPXCP and IPX protocols.  This option is presently only
+supported under Linux, and only if your kernel has been configured to
+include IPX support.
+.TP
+.B ipx-network \fIn
+Set the IPX network number in the IPXCP configure request frame to
+\fIn\fR, a hexadecimal number (without a leading 0x).  There is no
+valid default.  If this option is not specified, the network number is
+obtained from the peer.  If the peer does not have the network number,
+the IPX protocol will not be started.
+.TP
+.B ipx-node \fIn\fB:\fIm
+Set the IPX node numbers. The two node numbers are separated from each
+other with a colon character. The first number \fIn\fR is the local
+node number. The second number \fIm\fR is the peer's node number. Each
+node number is a hexadecimal number, at most 10 digits long. The node
+numbers on the ipx-network must be unique. There is no valid
+default. If this option is not specified then the node numbers are
+obtained from the peer.
+.TP
+.B ipx-router-name \fI<string>
+Set the name of the router. This is a string and is sent to the peer
+as information data.
+.TP
+.B ipx-routing \fIn
+Set the routing protocol to be received by this option. More than one
+instance of \fIipx-routing\fR may be specified. The '\fInone\fR'
+option (0) may be specified as the only instance of ipx-routing. The
+values may be \fI0\fR for \fINONE\fR, \fI2\fR for \fIRIP/SAP\fR, and
+\fI4\fR for \fINLSP\fR.
+.TP
+.B ipxcp-accept-local
+Accept the peer's NAK for the node number specified in the ipx-node
+option. If a node number was specified, and non-zero, the default is
+to insist that the value be used. If you include this option then you
+will permit the peer to override the entry of the node number.
+.TP
+.B ipxcp-accept-network
+Accept the peer's NAK for the network number specified in the
+ipx-network option. If a network number was specified, and non-zero, the
+default is to insist that the value be used. If you include this
+option then you will permit the peer to override the entry of the node
+number.
+.TP
+.B ipxcp-accept-remote
+Use the peer's network number specified in the configure request
+frame. If a node number was specified for the peer and this option was
+not specified, the peer will be forced to use the value which you have
+specified.
+.TP
+.B ipxcp-max-configure \fIn
+Set the maximum number of IPXCP configure request frames which the
+system will send to \fIn\fR. The default is 10.
+.TP
+.B ipxcp-max-failure \fIn
+Set the maximum number of IPXCP NAK frames which the local system will
+send before it rejects the options. The default value is 3.
+.TP
+.B ipxcp-max-terminate \fIn
+Set the maximum nuber of IPXCP terminate request frames before the
+local system considers that the peer is not listening to them. The
+default value is 3.
+.TP
+.B kdebug \fIn
+Enable debugging code in the kernel-level PPP driver.  The argument
+values depend on the specific kernel driver, but in general a value of
+1 will enable general kernel debug messages.  (Note that these
+messages are usually only useful for debugging the kernel driver
+itself.)  For the Linux 2.2.x kernel driver, the value is a sum of
+bits: 1 to
+enable general debug messages, 2 to request that the contents of
+received packets be printed, and 4 to request that the contents of
+transmitted packets be printed.  On most systems, messages printed by
+the kernel are logged by syslog(1) to a file as directed in the
+/etc/syslog.conf configuration file.
+.TP
+.B ktune
+Enables pppd to alter kernel settings as appropriate.  Under Linux,
+pppd will enable IP forwarding (i.e. set /proc/sys/net/ipv4/ip_forward
+to 1) if the \fIproxyarp\fR option is used, and will enable the
+dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
+1) in demand mode if the local address changes.
+.TP
+.B lcp-echo-failure \fIn
+If this option is given, pppd will presume the peer to be dead
+if \fIn\fR LCP echo-requests are sent without receiving a valid LCP
+echo-reply.  If this happens, pppd will terminate the
+connection.  Use of this option requires a non-zero value for the
+\fIlcp-echo-interval\fR parameter.  This option can be used to enable
+pppd to terminate after the physical connection has been broken
+(e.g., the modem has hung up) in situations where no hardware modem
+control lines are available.
+.TP
+.B lcp-echo-interval \fIn
+If this option is given, pppd will send an LCP echo-request frame to
+the peer every \fIn\fR seconds.  Normally the peer should respond to
+the echo-request by sending an echo-reply.  This option can be used
+with the \fIlcp-echo-failure\fR option to detect that the peer is no
+longer connected.
+.TP
+.B lcp-max-configure \fIn
+Set the maximum number of LCP configure-request transmissions to
+\fIn\fR (default 10).
+.TP
+.B lcp-max-failure \fIn
+Set the maximum number of LCP configure-NAKs returned before starting
+to send configure-Rejects instead to \fIn\fR (default 10).
+.TP
+.B lcp-max-terminate \fIn
+Set the maximum number of LCP terminate-request transmissions to
+\fIn\fR (default 3).
+.TP
+.B lcp-restart \fIn
+Set the LCP restart interval (retransmission timeout) to \fIn\fR
+seconds (default 3).
+.TP
+.B linkname \fIname\fR
+Sets the logical name of the link to \fIname\fR.  Pppd will create a
+file named \fBppp-\fIname\fB.pid\fR in /var/run (or /etc/ppp on some
+systems) containing its process ID.  This can be useful in determining
+which instance of pppd is responsible for the link to a given peer
+system.  This is a privileged option.
+.TP
+.B local
+Don't use the modem control lines.  With this option, pppd will ignore
+the state of the CD (Carrier Detect) signal from the modem and will
+not change the state of the DTR (Data Terminal Ready) signal.
+.TP
+.B logfd \fIn
+Send log messages to file descriptor \fIn\fR.  Pppd will send log
+messages to at most one file or file descriptor (as well as sending
+the log messages to syslog), so this option and the \fBlogfile\fR
+option are mutually exclusive.  The default is for pppd to send log
+messages to stdout (file descriptor 1), unless the serial port is
+already open on stdout.
+.TP
+.B logfile \fIfilename
+Append log messages to the file \fIfilename\fR (as well as sending the
+log messages to syslog).  The file is opened with the privileges of
+the user who invoked pppd, in append mode.
+.TP
+.B login
+Use the system password database for authenticating the peer using
+PAP, and record the user in the system wtmp file.  Note that the peer
+must have an entry in the /etc/ppp/pap-secrets file as well as the
+system password database to be allowed access.
+.TP
+.B maxconnect \fIn
+Terminate the connection when it has been available for network
+traffic for \fIn\fR seconds (i.e. \fIn\fR seconds after the first
+network control protocol comes up).
+.TP
+.B maxfail \fIn
+Terminate after \fIn\fR consecutive failed connection attempts.  A
+value of 0 means no limit.  The default value is 10.
+.TP
+.B modem
+Use the modem control lines.  This option is the default.  With this
+option, pppd will wait for the CD (Carrier Detect) signal from the
+modem to be asserted when opening the serial device (unless a connect
+script is specified), and it will drop the DTR (Data Terminal Ready)
+signal briefly when the connection is terminated and before executing
+the connect script.  On Ultrix, this option implies hardware flow
+control, as for the \fIcrtscts\fR option.
+.TP
+.B mp
+Enables the use of PPP multilink; this is an alias for the `multilink'
+option.  This option is currently only available under Linux.
+.TP
+.B mpshortseq
+Enables the use of short (12-bit) sequence numbers in multilink
+headers, as opposed to 24-bit sequence numbers.  This option is only
+available under Linux, and only has any effect if multilink is
+enabled (see the multilink option).
+.TP
+.B mrru \fIn
+Sets the Maximum Reconstructed Receive Unit to \fIn\fR.  The MRRU is
+the maximum size for a received packet on a multilink bundle, and is
+analogous to the MRU for the individual links.  This option is
+currently only available under Linux, and only has any effect if
+multilink is enabled (see the multilink option).
+.TP
+.B ms-dns \fI<addr>
+If pppd is acting as a server for Microsoft Windows clients, this
+option allows pppd to supply one or two DNS (Domain Name Server)
+addresses to the clients.  The first instance of this option specifies
+the primary DNS address; the second instance (if given) specifies the
+secondary DNS address.  (This option was present in some older
+versions of pppd under the name \fBdns-addr\fR.)
+.TP
+.B ms-wins \fI<addr>
+If pppd is acting as a server for Microsoft Windows or "Samba"
+clients, this option allows pppd to supply one or two WINS (Windows
+Internet Name Services) server addresses to the clients.  The first
+instance of this option specifies the primary WINS address; the second
+instance (if given) specifies the secondary WINS address.
+.TP
+.B multilink
+Enables the use of the PPP multilink protocol.  If the peer also
+supports multilink, then this link can become part of a bundle between
+the local system and the peer.  If there is an existing bundle to the
+peer, pppd will join this link to that bundle, otherwise pppd will
+create a new bundle.  See the MULTILINK section below.  This option is
+currently only available under Linux.
+.TP
+.B name \fIname
+Set the name of the local system for authentication purposes to
+\fIname\fR.  This is a privileged option.  With this option, pppd will
+use lines in the secrets files which have \fIname\fR as the second
+field when looking for a secret to use in authenticating the peer.  In
+addition, unless overridden with the \fIuser\fR option, \fIname\fR
+will be used as the name to send to the peer when authenticating the
+local system to the peer.  (Note that pppd does not append the domain
+name to \fIname\fR.)
+.TP
+.B netmask \fIn
+Set the interface netmask to \fIn\fR, a 32 bit netmask in "decimal dot"
+notation (e.g. 255.255.255.0).  If this option is given, the value
+specified is ORed with the default netmask.  The default netmask is
+chosen based on the negotiated remote IP address; it is the
+appropriate network mask for the class of the remote IP address, ORed
+with the netmasks for any non point-to-point network interfaces in the
+system which are on the same network.  (Note: on some platforms, pppd
+will always use 255.255.255.255 for the netmask, if that is the only
+appropriate value for a point-to-point interface.)
+.TP
+.B noaccomp
+Disable Address/Control compression in both directions (send and
+receive).
+.TP
+.B noauth
+Do not require the peer to authenticate itself.  This option is
+privileged.
+.TP
+.B nobsdcomp
+Disables BSD-Compress compression; \fBpppd\fR will not request or
+agree to compress packets using the BSD-Compress scheme.
+.TP
+.B noccp
+Disable CCP (Compression Control Protocol) negotiation.  This option
+should only be required if the peer is buggy and gets confused by
+requests from pppd for CCP negotiation.
+.TP
+.B nocrtscts
+Disable hardware flow control (i.e. RTS/CTS) on the serial port.
+If neither the \fIcrtscts\fR nor the \fInocrtscts\fR nor the
+\fIcdtrcts\fR nor the \fInocdtrcts\fR option is given, the hardware
+flow control setting for the serial port is left unchanged.
+.TP
+.B nocdtrcts
+This option is a synonym for \fInocrtscts\fR. Either of these options will
+disable both forms of hardware flow control.
+.TP
+.B nodefaultroute
+Disable the \fIdefaultroute\fR option.  The system administrator who
+wishes to prevent users from creating default routes with pppd
+can do so by placing this option in the /etc/ppp/options file.
+.TP
+.B nodeflate
+Disables Deflate compression; pppd will not request or agree to
+compress packets using the Deflate scheme.
+.TP
+.B nodetach
+Don't detach from the controlling terminal.  Without this option, if a
+serial device other than the terminal on the standard input is
+specified, pppd will fork to become a background process.
+.TP
+.B noendpoint
+Disables pppd from sending an endpoint discriminator to the peer or
+accepting one from the peer (see the MULTILINK section below).  This
+option should only be required if the peer is buggy.
+.TP
+.B noip
+Disable IPCP negotiation and IP communication.  This option should
+only be required if the peer is buggy and gets confused by requests
+from pppd for IPCP negotiation.
+.TP
+.B noipv6
+Disable IPv6CP negotiation and IPv6 communication. This option should
+only be required if the peer is buggy and gets confused by requests
+from pppd for IPv6CP negotiation.
+.TP
+.B noipdefault
+Disables the default behaviour when no local IP address is specified,
+which is to determine (if possible) the local IP address from the
+hostname.  With this option, the peer will have to supply the local IP
+address during IPCP negotiation (unless it specified explicitly on the
+command line or in an options file).
+.TP
+.B noipx
+Disable the IPXCP and IPX protocols.  This option should only be
+required if the peer is buggy and gets confused by requests from pppd
+for IPXCP negotiation.
+.TP
+.B noktune
+Opposite of the \fIktune\fR option; disables pppd from changing system
+settings.
+.TP
+.B nolog
+Do not send log messages to a file or file descriptor.  This option
+cancels the \fBlogfd\fR and \fBlogfile\fR options.
+.TP
+.B nomagic
+Disable magic number negotiation.  With this option, pppd cannot
+detect a looped-back line.  This option should only be needed if the
+peer is buggy.
+.TP
+.B nomp
+Disables the use of PPP multilink.  This option is currently only
+available under Linux.
+.TP
+.B nompshortseq
+Disables the use of short (12-bit) sequence numbers in the PPP
+multilink protocol, forcing the use of 24-bit sequence numbers.  This
+option is currently only available under Linux, and only has any
+effect if multilink is enabled.
+.TP
+.B nomultilink
+Disables the use of PPP multilink.  This option is currently only
+available under Linux.
+.TP
+.B nopcomp
+Disable protocol field compression negotiation in both the receive and
+the transmit direction.
+.TP
+.B nopersist
+Exit once a connection has been made and terminated.  This is the
+default unless the \fIpersist\fR or \fIdemand\fR option has been
+specified.
+.TP
+.B nopredictor1
+Do not accept or agree to Predictor-1 compression.
+.TP
+.B noproxyarp
+Disable the \fIproxyarp\fR option.  The system administrator who
+wishes to prevent users from creating proxy ARP entries with pppd can
+do so by placing this option in the /etc/ppp/options file.
+.TP
+.B notty
+Normally, pppd requires a terminal device.  With this option, pppd
+will allocate itself a pseudo-tty master/slave pair and use the slave
+as its terminal device.  Pppd will create a child process to act as a
+`character shunt' to transfer characters between the pseudo-tty master
+and its standard input and output.  Thus pppd will transmit characters
+on its standard output and receive characters on its standard input
+even if they are not terminal devices.  This option increases the
+latency and CPU overhead of transferring data over the ppp interface
+as all of the characters sent and received must flow through the
+character shunt process.  An explicit device name may not be given if
+this option is used.
+.TP
+.B novj
+Disable Van Jacobson style TCP/IP header compression in both the
+transmit and the receive direction.
+.TP
+.B novjccomp
+Disable the connection-ID compression option in Van Jacobson style
+TCP/IP header compression.  With this option, pppd will not omit the
+connection-ID byte from Van Jacobson compressed TCP/IP headers, nor
+ask the peer to do so.
+.TP
+.B papcrypt
+Indicates that all secrets in the /etc/ppp/pap-secrets file which are
+used for checking the identity of the peer are encrypted, and thus
+pppd should not accept a password which, before encryption, is
+identical to the secret from the /etc/ppp/pap-secrets file.
+.TP
+.B pap-max-authreq \fIn
+Set the maximum number of PAP authenticate-request transmissions to
+\fIn\fR (default 10).
+.TP
+.B pap-restart \fIn
+Set the PAP restart interval (retransmission timeout) to \fIn\fR
+seconds (default 3).
+.TP
+.B pap-timeout \fIn
+Set the maximum time that pppd will wait for the peer to authenticate
+itself with PAP to \fIn\fR seconds (0 means no limit).
+.TP
+.B pass-filter \fIfilter-expression
+Specifies a packet filter to applied to data packets being sent or
+received to determine which packets should be allowed to pass.
+Packets which are rejected by the filter are silently discarded.  This
+option can be used to prevent specific network daemons (such as
+routed) using up link bandwidth, or to provide a basic firewall
+capability.
+The \fIfilter-expression\fR syntax is as described for tcpdump(1),
+except that qualifiers which are inappropriate for a PPP link, such as
+\fBether\fR and \fBarp\fR, are not permitted.  Generally the filter
+expression should be enclosed in single-quotes to prevent whitespace
+in the expression from being interpreted by the shell.  Note that it
+is possible to apply different constraints to incoming and outgoing
+packets using the \fBinbound\fR and \fBoutbound\fR qualifiers. This
+option is currently only available under NetBSD, and then only if both
+the kernel and pppd were compiled with PPP_FILTER defined.
+.TP
+.B persist
+Do not exit after a connection is terminated; instead try to reopen
+the connection.
+.TP
+.B plugin \fIfilename
+Load the shared library object file \fIfilename\fR as a plugin.  This
+is a privileged option.
+.TP
+.B predictor1
+Request that the peer compress frames that it sends using Predictor-1
+compression, and agree to compress transmitted frames with Predictor-1
+if requested.  This option has no effect unless the kernel driver
+supports Predictor-1 compression.
+.TP
+.B privgroup \fIgroup-name
+Allows members of group \fIgroup-name\fR to use privileged options.
+This is a privileged option.  Use of this option requires care as
+there is no guarantee that members of \fIgroup-name\fR cannot use pppd
+to become root themselves.  Consider it equivalent to putting the
+members of \fIgroup-name\fR in the kmem or disk group.
+.TP
+.B proxyarp
+Add an entry to this system's ARP [Address Resolution Protocol] table
+with the IP address of the peer and the Ethernet address of this
+system.  This will have the effect of making the peer appear to other
+systems to be on the local ethernet.
+.TP
+.B pty \fIscript
+Specifies that the command \fIscript\fR is to be used to communicate
+rather than a specific terminal device.  Pppd will allocate itself a
+pseudo-tty master/slave pair and use the slave as its terminal
+device.  The \fIscript\fR will be run in a child process with the
+pseudo-tty master as its standard input and output.  An explicit
+device name may not be given if this option is used.  (Note: if the
+\fIrecord\fR option is used in conjuction with the \fIpty\fR option,
+the child process will have pipes on its standard input and output.)
+.TP
+.B receive-all
+With this option, pppd will accept all control characters from the
+peer, including those marked in the receive asyncmap.  Without this
+option, pppd will discard those characters as specified in RFC1662.
+This option should only be needed if the peer is buggy.
+.TP
+.B record \fIfilename
+Specifies that pppd should record all characters sent and received to
+a file named \fIfilename\fR.  This file is opened in append mode,
+using the user's user-ID and permissions.  This option is implemented
+using a pseudo-tty and a process to transfer characters between the
+pseudo-tty and the real serial device, so it will increase the latency
+and CPU overhead of transferring data over the ppp interface.  The
+characters are stored in a tagged format with timestamps, which can be
+displayed in readable form using the pppdump(8) program.
+.TP
+.B remotename \fIname
+Set the assumed name of the remote system for authentication purposes
+to \fIname\fR.
+.TP
+.B refuse-chap
+With this option, pppd will not agree to authenticate itself to the
+peer using CHAP.
+.TP
+.B refuse-pap
+With this option, pppd will not agree to authenticate itself to the
+peer using PAP.
+.TP
+.B require-chap
+Require the peer to authenticate itself using CHAP [Challenge
+Handshake Authentication Protocol] authentication.
+.TP
+.B require-pap
+Require the peer to authenticate itself using PAP [Password
+Authentication Protocol] authentication.
+.TP
+.B show-password
+When logging the contents of PAP packets, this option causes pppd to
+show the password string in the log message.
+.TP
+.B silent
+With this option, pppd will not transmit LCP packets to initiate a
+connection until a valid LCP packet is received from the peer (as for
+the `passive' option with ancient versions of pppd).
+.TP
+.B sync
+Use synchronous HDLC serial encoding instead of asynchronous.
+The device used by pppd with this option must have sync support.
+Currently supports Microgate SyncLink adapters
+under Linux and FreeBSD 2.2.8 and later.
+.TP
+.B updetach
+With this option, pppd will detach from its controlling terminal once
+it has successfully established the ppp connection (to the point where
+the first network control protocol, usually the IP control protocol,
+has come up).
+.TP
+.B usehostname
+Enforce the use of the hostname (with domain name appended, if given)
+as the name of the local system for authentication purposes (overrides
+the \fIname\fR option).  This option is not normally needed since the
+\fIname\fR option is privileged.
+.TP
+.B usepeerdns
+Ask the peer for up to 2 DNS server addresses.  The addresses supplied
+by the peer (if any) are passed to the /etc/ppp/ip-up script in the
+environment variables DNS1 and DNS2.  In addition, pppd will create an
+/etc/ppp/resolv.conf file containing one or two nameserver lines with
+the address(es) supplied by the peer.
+.TP
+.B user \fIname
+Sets the name used for authenticating the local system to the peer to
+\fIname\fR.
+.TP
+.B vj-max-slots \fIn
+Sets the number of connection slots to be used by the Van Jacobson
+TCP/IP header compression and decompression code to \fIn\fR, which
+must be between 2 and 16 (inclusive).
+.TP
+.B welcome \fIscript
+Run the executable or shell command specified by \fIscript\fR before
+initiating PPP negotiation, after the connect script (if any) has
+completed.  A value for this option from a privileged source cannot be
+overridden by a non-privileged user.
+.TP
+.B xonxoff
+Use software flow control (i.e. XON/XOFF) to control the flow of data on
+the serial port.
+.SH OPTIONS FILES
+Options can be taken from files as well as the command line.  Pppd
+reads options from the files /etc/ppp/options, ~/.ppprc and
+/etc/ppp/options.\fIttyname\fR (in that order) before processing the
+options on the command line.  (In fact, the command-line options are
+scanned to find the terminal name before the options.\fIttyname\fR
+file is read.)  In forming the name of the options.\fIttyname\fR file,
+the initial /dev/ is removed from the terminal name, and any remaining
+/ characters are replaced with dots.
+.PP
+An options file is parsed into a series of words, delimited by
+whitespace.  Whitespace can be included in a word by enclosing the
+word in double-quotes (").  A backslash (\\) quotes the following character.
+A hash (#) starts a comment, which continues until the end of the
+line.  There is no restriction on using the \fIfile\fR or \fIcall\fR
+options within an options file.
+.SH SECURITY
+.I pppd
+provides system administrators with sufficient access control that PPP
+access to a server machine can be provided to legitimate users without
+fear of compromising the security of the server or the network it's
+on.  This control is provided through restrictions on which IP
+addresses the peer may use, based on its authenticated identity (if
+any), and through restrictions on which options a non-privileged user
+may use.  Several of pppd's options are privileged, in particular
+those which permit potentially insecure configurations; these options
+are only accepted in files which are under the control of the system
+administrator, or if pppd is being run by root.
+.PP
+The default behaviour of pppd is to allow an unauthenticated peer to
+use a given IP address only if the system does not already have a
+route to that IP address.  For example, a system with a
+permanent connection to the wider internet will normally have a
+default route, and thus all peers will have to authenticate themselves
+in order to set up a connection.  On such a system, the \fIauth\fR
+option is the default.  On the other hand, a system where the
+PPP link is the only connection to the internet will not normally have
+a default route, so the peer will be able to use almost any IP address
+without authenticating itself.
+.PP
+As indicated above, some security-sensitive options are privileged,
+which means that they may not be used by an ordinary non-privileged
+user running a setuid-root pppd, either on the command line, in the
+user's ~/.ppprc file, or in an options file read using the \fIfile\fR
+option.  Privileged options may be used in /etc/ppp/options file or in
+an options file read using the \fIcall\fR option.  If pppd is being
+run by the root user, privileged options can be used without
+restriction.
+.PP
+When opening the device, pppd uses either the invoking user's user ID
+or the root UID (that is, 0), depending on whether the device name was
+specified by the user or the system administrator.  If the device name
+comes from a privileged source, that is, /etc/ppp/options or an
+options file read using the \fIcall\fR option, pppd uses full root
+privileges when opening the device.  Thus, by creating an appropriate
+file under /etc/ppp/peers, the system administrator can allow users to
+establish a ppp connection via a device which they would not normally
+have permission to access.  Otherwise pppd uses the invoking user's
+real UID when opening the device.
+.SH AUTHENTICATION
+Authentication is the process whereby one peer convinces the other of
+its identity.  This involves the first peer sending its name to the
+other, together with some kind of secret information which could only
+come from the genuine authorized user of that name.  In such an
+exchange, we will call the first peer the "client" and the other the
+"server".  The client has a name by which it identifies itself to the
+server, and the server also has a name by which it identifies itself
+to the client.  Generally the genuine client shares some secret (or
+password) with the server, and authenticates itself by proving that it
+knows that secret.  Very often, the names used for authentication
+correspond to the internet hostnames of the peers, but this is not
+essential.
+.LP
+At present, pppd supports two authentication protocols: the Password
+Authentication Protocol (PAP) and the Challenge Handshake
+Authentication Protocol (CHAP).  PAP involves the client sending its
+name and a cleartext password to the server to authenticate itself.
+In contrast, the server initiates the CHAP authentication exchange by
+sending a challenge to the client (the challenge packet includes the
+server's name).  The client must respond with a response which
+includes its name plus a hash value derived from the shared secret and
+the challenge, in order to prove that it knows the secret.
+.LP
+The PPP protocol, being symmetrical, allows both peers to require the
+other to authenticate itself.  In that case, two separate and
+independent authentication exchanges will occur.  The two exchanges
+could use different authentication protocols, and in principle,
+different names could be used in the two exchanges.
+.LP
+The default behaviour of pppd is to agree to authenticate if
+requested, and to not require authentication from the peer.  However,
+pppd will not agree to authenticate itself with a particular protocol
+if it has no secrets which could be used to do so.
+.LP
+Pppd stores secrets for use in authentication in secrets
+files (/etc/ppp/pap-secrets for PAP, /etc/ppp/chap-secrets for CHAP).
+Both secrets files have the same format.  The secrets files can
+contain secrets for pppd to use in authenticating itself to other
+systems, as well as secrets for pppd to use when authenticating other
+systems to itself.
+.LP
+Each line in a secrets file contains one secret.  A given secret is
+specific to a particular combination of client and server - it can
+only be used by that client to authenticate itself to that server.
+Thus each line in a secrets file has at least 3 fields: the name of
+the client, the name of the server, and the secret.  These fields may
+be followed by a list of the IP addresses that the specified client
+may use when connecting to the specified server.
+.LP
+A secrets file is parsed into words as for a options file, so the
+client name, server name and secrets fields must each be one word,
+with any embedded spaces or other special characters quoted or
+escaped.  Note that case is significant in the client and server names
+and in the secret.
+.LP
+If the secret starts with an `@', what follows is assumed to be the
+name of a file from which to read the secret.  A "*" as the client or
+server name matches any name.  When selecting a secret, pppd takes the
+best match, i.e.  the match with the fewest wildcards.
+.LP
+Any following words on the same line are taken to be a list of
+acceptable IP addresses for that client.  If there are only 3 words on
+the line, or if the first word is "-", then all IP addresses are
+disallowed.  To allow any address, use "*".  A word starting with "!"
+indicates that the specified address is \fInot\fR acceptable.  An
+address may be followed by "/" and a number \fIn\fR, to indicate a
+whole subnet, i.e. all addresses which have the same value in the most
+significant \fIn\fR bits.  In this form, the address may be followed
+by a plus sign ("+") to indicate that one address from the subnet is
+authorized, based on the ppp network interface unit number in use.
+In this case, the host part of the address will be set to the unit
+number plus one.
+.LP
+Thus a secrets file contains both secrets for use in authenticating
+other hosts, plus secrets which we use for authenticating ourselves to
+others.  When pppd is authenticating the peer (checking the peer's
+identity), it chooses a secret with the peer's name in the first
+field and the name of the local system in the second field.  The
+name of the local system defaults to the hostname, with the domain
+name appended if the \fIdomain\fR option is used.  This default can be
+overridden with the \fIname\fR option, except when the
+\fIusehostname\fR option is used.
+.LP
+When pppd is choosing a secret to use in authenticating itself to the
+peer, it first determines what name it is going to use to identify
+itself to the peer.  This name can be specified by the user with the
+\fIuser\fR option.  If this option is not used, the name defaults to
+the name of the local system, determined as described in the previous
+paragraph.  Then pppd looks for a secret with this name in the first
+field and the peer's name in the second field.  Pppd will know the
+name of the peer if CHAP authentication is being used, because the
+peer will have sent it in the challenge packet.  However, if PAP is being
+used, pppd will have to determine the peer's name from the options
+specified by the user.  The user can specify the peer's name directly
+with the \fIremotename\fR option.  Otherwise, if the remote IP address
+was specified by a name (rather than in numeric form), that name will
+be used as the peer's name.  Failing that, pppd will use the null
+string as the peer's name.
+.LP
+When authenticating the peer with PAP, the supplied password is first
+compared with the secret from the secrets file.  If the password
+doesn't match the secret, the password is encrypted using crypt() and
+checked against the secret again.  Thus secrets for authenticating the
+peer can be stored in encrypted form if desired.  If the
+\fIpapcrypt\fR option is given, the first (unencrypted) comparison is
+omitted, for better security.
+.LP
+Furthermore, if the \fIlogin\fR option was specified, the username and
+password are also checked against the system password database.  Thus,
+the system administrator can set up the pap-secrets file to allow PPP
+access only to certain users, and to restrict the set of IP addresses
+that each user can use.  Typically, when using the \fIlogin\fR option,
+the secret in /etc/ppp/pap-secrets would be "", which will match any
+password supplied by the peer.  This avoids the need to have the same
+secret in two places.
+.LP
+Authentication must be satisfactorily completed before IPCP (or any
+other Network Control Protocol) can be started.  If the peer is
+required to authenticate itself, and fails to do so, pppd will
+terminated the link (by closing LCP).  If IPCP negotiates an
+unacceptable IP address for the remote host, IPCP will be closed.  IP
+packets can only be sent or received when IPCP is open.
+.LP
+In some cases it is desirable to allow some hosts which can't
+authenticate themselves to connect and use one of a restricted set of
+IP addresses, even when the local host generally requires
+authentication.  If the peer refuses to authenticate itself when
+requested, pppd takes that as equivalent to authenticating with PAP
+using the empty string for the username and password.  Thus, by adding
+a line to the pap-secrets file which specifies the empty string for
+the client and password, it is possible to allow restricted access to
+hosts which refuse to authenticate themselves.
+.SH ROUTING
+.LP
+When IPCP negotiation is completed successfully, pppd will inform the
+kernel of the local and remote IP addresses for the ppp interface.
+This is sufficient to create a host route to the remote end of the
+link, which will enable the peers to exchange IP packets.
+Communication with other machines generally requires further
+modification to routing tables and/or ARP (Address Resolution
+Protocol) tables.  In most cases the \fIdefaultroute\fR and/or
+\fIproxyarp\fR options are sufficient for this, but in some cases
+further intervention is required.  The /etc/ppp/ip-up script can be
+used for this.
+.LP
+Sometimes it is desirable to add a default route through the remote
+host, as in the case of a machine whose only connection to the
+Internet is through the ppp interface.  The \fIdefaultroute\fR option
+causes pppd to create such a default route when IPCP comes up, and
+delete it when the link is terminated.
+.LP
+In some cases it is desirable to use proxy ARP, for example on a
+server machine connected to a LAN, in order to allow other hosts to
+communicate with the remote host.  The \fIproxyarp\fR option causes
+pppd to look for a network interface on the same subnet as the remote
+host (an interface supporting broadcast and ARP, which is up and not a
+point-to-point or loopback interface).  If found, pppd creates a
+permanent, published ARP entry with the IP address of the remote host
+and the hardware address of the network interface found.
+.LP
+When the \fIdemand\fR option is used, the interface IP addresses have
+already been set at the point when IPCP comes up.  If pppd has not
+been able to negotiate the same addresses that it used to configure
+the interface (for example when the peer is an ISP that uses dynamic
+IP address assignment), pppd has to change the interface IP addresses
+to the negotiated addresses.  This may disrupt existing connections,
+and the use of demand dialling with peers that do dynamic IP address
+assignment is not recommended.
+.SH MULTILINK
+Multilink PPP provides the capability to combine two or more PPP links
+between a pair of machines into a single `bundle', which appears as a
+single virtual PPP link which has the combined bandwidth of the
+individual links.  Currently, multilink PPP is only supported under
+Linux.
+.LP
+Pppd detects that the link it is controlling is connected to the same
+peer as another link using the peer's endpoint discriminator and the
+authenticated identity of the peer (if it authenticates itself).  The
+endpoint discriminator is a block of data which is hopefully unique
+for each peer.  Several types of data can be used, including
+locally-assigned strings of bytes, IP addresses, MAC addresses,
+randomly strings of bytes, or E-164 phone numbers.  The endpoint
+discriminator sent to the peer by pppd can be set using the endpoint
+option.
+.LP
+In circumstances the peer may send no endpoint discriminator or a
+non-unique value.  The optional bundle option adds an extra string
+which is added to the peer's endpoint discriminator and authenticated
+identity when matching up links to be joined together in a bundle.
+The bundle option can also be used to allow the establishment of
+multiple bundles between the local system and the peer.  Pppd uses a
+TDB database in /var/run/pppd.tdb to match up links.
+.LP
+Assuming that multilink is enabled and the peer is willing to
+negotiate multilink, then when pppd is invoked to bring up the first
+link to the peer, it will detect that no other link is connected to
+the peer and create a new bundle, that is, another ppp network
+interface unit.  When another pppd is invoked to bring up another link
+to the peer, it will detect the existing bundle and join its link to
+it.  Currently, if the first pppd terminates (for example, because of
+a hangup or a received signal) the bundle is destroyed.
+.SH EXAMPLES
+.LP
+The following examples assume that the /etc/ppp/options file contains
+the \fIauth\fR option (as in the default /etc/ppp/options file in the
+ppp distribution).
+.LP
+Probably the most common use of pppd is to dial out to an ISP.  This
+can be done with a command such as
+.IP
+pppd call isp
+.LP
+where the /etc/ppp/peers/isp file is set up by the system
+administrator to contain something like this:
+.IP
+ttyS0 19200 crtscts
+.br
+connect '/usr/sbin/chat -v -f /etc/ppp/chat-isp'
+.br
+noauth
+.LP
+In this example, we are using chat to dial the ISP's modem and go
+through any logon sequence required.  The /etc/ppp/chat-isp file
+contains the script used by chat; it could for example contain
+something like this:
+.IP
+ABORT "NO CARRIER"
+.br
+ABORT "NO DIALTONE"
+.br
+ABORT "ERROR"
+.br
+ABORT "NO ANSWER"
+.br
+ABORT "BUSY"
+.br
+ABORT "Username/Password Incorrect"
+.br
+"" "at"
+.br
+OK "at&d0&c1"
+.br
+OK "atdt2468135"
+.br
+"name:" "^Umyuserid"
+.br
+"word:" "\\qmypassword"
+.br
+"ispts" "\\q^Uppp"
+.br
+"~-^Uppp-~"
+.LP
+See the chat(8) man page for details of chat scripts.
+.LP
+Pppd can also be used to provide a dial-in ppp service for users.  If
+the users already have login accounts, the simplest way to set up the
+ppp service is to let the users log in to their accounts and run pppd
+(installed setuid-root) with a command such as
+.IP
+pppd proxyarp
+.LP
+To allow a user to use the PPP facilities, you need to allocate an IP
+address for that user's machine and create an entry in
+/etc/ppp/pap-secrets or /etc/ppp/chap-secrets (depending on which
+authentication method the PPP implementation on the user's machine
+supports), so that the user's
+machine can authenticate itself.  For example, if Joe has a machine
+called "joespc" which is to be allowed to dial in to the machine
+called "server" and use the IP address joespc.my.net, you would add an
+entry like this to /etc/ppp/pap-secrets or /etc/ppp/chap-secrets:
+.IP
+joespc	server	"joe's secret"	joespc.my.net
+.LP
+Alternatively, you can create a username called (for example) "ppp",
+whose login shell is pppd and whose home directory is /etc/ppp.
+Options to be used when pppd is run this way can be put in
+/etc/ppp/.ppprc.
+.LP
+If your serial connection is any more complicated than a piece of
+wire, you may need to arrange for some control characters to be
+escaped.  In particular, it is often useful to escape XON (^Q) and
+XOFF (^S), using \fIasyncmap a0000\fR.  If the path includes a telnet,
+you probably should escape ^] as well (\fIasyncmap 200a0000\fR).  If
+the path includes an rlogin, you will need to use the \fIescape ff\fR
+option on the end which is running the rlogin client, since many
+rlogin implementations are not transparent; they will remove the
+sequence [0xff, 0xff, 0x73, 0x73, followed by any 8 bytes] from the
+stream.
+.SH DIAGNOSTICS
+.LP
+Messages are sent to the syslog daemon using facility LOG_DAEMON.
+(This can be overriden by recompiling pppd with the macro
+LOG_PPP defined as the desired facility.)  In order to see the error
+and debug messages, you will need to edit your /etc/syslog.conf file
+to direct the messages to the desired output device or file.
+.LP
+The \fIdebug\fR option causes the contents of all control packets sent
+or received to be logged, that is, all LCP, PAP, CHAP or IPCP packets.
+This can be useful if the PPP negotiation does not succeed or if
+authentication fails.
+If debugging is enabled at compile time, the \fIdebug\fR option also
+causes other debugging messages to be logged.
+.LP
+Debugging can also be enabled or disabled by sending a SIGUSR1 signal
+to the pppd process.  This signal acts as a toggle.
+.SH EXIT STATUS
+The exit status of pppd is set to indicate whether any error was
+detected, or the reason for the link being terminated.  The values
+used are:
+.TP
+.B 0
+Pppd has detached, or otherwise the connection was successfully
+established and terminated at the peer's request.
+.TP
+.B 1
+An immediately fatal error of some kind occurred, such as an essential
+system call failing, or running out of virtual memory.
+.TP
+.B 2
+An error was detected in processing the options given, such as two
+mutually exclusive options being used.
+.TP
+.B 3
+Pppd is not setuid-root and the invoking user is not root.
+.TP
+.B 4
+The kernel does not support PPP, for example, the PPP kernel driver is
+not included or cannot be loaded.
+.TP
+.B 5
+Pppd terminated because it was sent a SIGINT, SIGTERM or SIGHUP
+signal.
+.TP
+.B 6
+The serial port could not be locked.
+.TP
+.B 7
+The serial port could not be opened.
+.TP
+.B 8
+The connect script failed (returned a non-zero exit status).
+.TP
+.B 9
+The command specified as the argument to the \fIpty\fR option could
+not be run.
+.TP
+.B 10
+The PPP negotiation failed, that is, it didn't reach the point where
+at least one network protocol (e.g. IP) was running.
+.TP
+.B 11
+The peer system failed (or refused) to authenticate itself.
+.TP
+.B 12
+The link was established successfully and terminated because it was
+idle.
+.TP
+.B 13
+The link was established successfully and terminated because the
+connect time limit was reached.
+.TP
+.B 14
+Callback was negotiated and an incoming call should arrive shortly.
+.TP
+.B 15
+The link was terminated because the peer is not responding to echo
+requests.
+.TP
+.B 16
+The link was terminated by the modem hanging up.
+.TP
+.B 17
+The PPP negotiation failed because serial loopback was detected.
+.TP
+.B 18
+The init script failed (returned a non-zero exit status).
+.TP
+.B 19
+We failed to authenticate ourselves to the peer.
+.SH SCRIPTS
+Pppd invokes scripts at various stages in its processing which can be
+used to perform site-specific ancillary processing.  These scripts are
+usually shell scripts, but could be executable code files instead.
+Pppd does not wait for the scripts to finish.  The scripts are
+executed as root (with the real and effective user-id set to 0), so
+that they can do things such as update routing tables or run
+privileged daemons.  Be careful that the contents of these scripts do
+not compromise your system's security.  Pppd runs the scripts with
+standard input, output and error redirected to /dev/null, and with an
+environment that is empty except for some environment variables that
+give information about the link.  The environment variables that pppd
+sets are:
+.TP
+.B DEVICE
+The name of the serial tty device being used.
+.TP
+.B IFNAME
+The name of the network interface being used.
+.TP
+.B IPLOCAL
+The IP address for the local end of the link.  This is only set when
+IPCP has come up.
+.TP
+.B IPREMOTE
+The IP address for the remote end of the link.  This is only set when
+IPCP has come up.
+.TP
+.B PEERNAME
+The authenticated name of the peer.  This is only set if the peer
+authenticates itself.
+.TP
+.B SPEED
+The baud rate of the tty device.
+.TP
+.B ORIG_UID
+The real user-id of the user who invoked pppd.
+.TP
+.B PPPLOGNAME
+The username of the real user-id that invoked pppd. This is always set.
+.P
+For the ip-down and auth-down scripts, pppd also sets the following
+variables giving statistics for the connection:
+.TP
+.B CONNECT_TIME
+The number of seconds from when the PPP negotiation started until the
+connection was terminated.
+.TP
+.B BYTES_SENT
+The number of bytes sent (at the level of the serial port) during the
+connection.
+.TP
+.B BYTES_RCVD
+The number of bytes received (at the level of the serial port) during
+the connection.
+.TP
+.B LINKNAME
+The logical name of the link, set with the \fIlinkname\fR option.
+.P
+Pppd invokes the following scripts, if they exist.  It is not an error
+if they don't exist.
+.TP
+.B /etc/ppp/auth-up
+A program or script which is executed after the remote system
+successfully authenticates itself.  It is executed with the parameters
+.IP
+\fIinterface-name peer-name user-name tty-device speed\fR
+.IP
+Note that this script is not executed if the peer doesn't authenticate
+itself, for example when the \fInoauth\fR option is used.
+.TP
+.B /etc/ppp/auth-down
+A program or script which is executed when the link goes down, if
+/etc/ppp/auth-up was previously executed.  It is executed in the same
+manner with the same parameters as /etc/ppp/auth-up.
+.TP
+.B /etc/ppp/ip-up
+A program or script which is executed when the link is available for
+sending and receiving IP packets (that is, IPCP has come up).  It is
+executed with the parameters
+.IP
+\fIinterface-name tty-device speed local-IP-address
+remote-IP-address ipparam\fR
+.TP
+.B /etc/ppp/ip-down
+A program or script which is executed when the link is no longer
+available for sending and receiving IP packets.  This script can be
+used for undoing the effects of the /etc/ppp/ip-up script.  It is
+invoked in the same manner and with the same parameters as the ip-up
+script.
+.TP
+.B /etc/ppp/ipv6-up
+Like /etc/ppp/ip-up, except that it is executed when the link is available 
+for sending and receiving IPv6 packets. It is executed with the parameters
+.IP
+\fIinterface-name tty-device speed local-link-local-address
+remote-link-local-address ipparam\fR
+.TP
+.B /etc/ppp/ipv6-down
+Similar to /etc/ppp/ip-down, but it is executed when IPv6 packets can no
+longer be transmitted on the link. It is executed with the same parameters 
+as the ipv6-up script.
+.TP
+.B /etc/ppp/ipx-up
+A program or script which is executed when the link is available for
+sending and receiving IPX packets (that is, IPXCP has come up).  It is
+executed with the parameters
+.IP
+\fIinterface-name tty-device speed network-number local-IPX-node-address
+remote-IPX-node-address local-IPX-routing-protocol remote-IPX-routing-protocol
+local-IPX-router-name remote-IPX-router-name ipparam pppd-pid\fR 
+.IP
+The local-IPX-routing-protocol and remote-IPX-routing-protocol field
+may be one of the following:
+.IP
+NONE      to indicate that there is no routing protocol
+.br
+RIP       to indicate that RIP/SAP should be used
+.br
+NLSP      to indicate that Novell NLSP should be used
+.br
+RIP NLSP  to indicate that both RIP/SAP and NLSP should be used
+.TP
+.B /etc/ppp/ipx-down
+A program or script which is executed when the link is no longer
+available for sending and receiving IPX packets.  This script can be
+used for undoing the effects of the /etc/ppp/ipx-up script.  It is
+invoked in the same manner and with the same parameters as the ipx-up
+script.
+.SH FILES
+.TP
+.B /var/run/ppp\fIn\fB.pid \fR(BSD or Linux), \fB/etc/ppp/ppp\fIn\fB.pid \fR(others)
+Process-ID for pppd process on ppp interface unit \fIn\fR.
+.TP
+.B /var/run/ppp-\fIname\fB.pid \fR(BSD or Linux), \fB/etc/ppp/ppp-\fIname\fB.pid \fR(others)
+Process-ID for pppd process for logical link \fIname\fR (see the
+\fIlinkname\fR option).
+.TP
+.B /etc/ppp/pap-secrets
+Usernames, passwords and IP addresses for PAP authentication.  This
+file should be owned by root and not readable or writable by any other
+user.  Pppd will log a warning if this is not the case.
+.TP
+.B /etc/ppp/chap-secrets
+Names, secrets and IP addresses for CHAP authentication.  As for
+/etc/ppp/pap-secrets, this file should be owned by root and not
+readable or writable by any other user.  Pppd will log a warning if
+this is not the case.
+.TP
+.B /etc/ppp/options
+System default options for pppd, read before user default options or
+command-line options.
+.TP
+.B ~/.ppprc
+User default options, read before /etc/ppp/options.\fIttyname\fR.
+.TP
+.B /etc/ppp/options.\fIttyname
+System default options for the serial port being used, read after
+~/.ppprc.  In forming the \fIttyname\fR part of this
+filename, an initial /dev/ is stripped from the port name (if
+present), and any slashes in the remaining part are converted to
+dots.
+.TP
+.B /etc/ppp/peers
+A directory containing options files which may contain privileged
+options, even if pppd was invoked by a user other than root.  The
+system administrator can create options files in this directory to
+permit non-privileged users to dial out without requiring the peer to
+authenticate, but only to certain trusted peers.
+.SH SEE ALSO
+.TP
+.B RFC1144
+Jacobson, V.
+\fICompressing TCP/IP headers for low-speed serial links.\fR
+February 1990.
+.TP
+.B RFC1321
+Rivest, R.
+.I The MD5 Message-Digest Algorithm.
+April 1992.
+.TP
+.B RFC1332
+McGregor, G.
+.I PPP Internet Protocol Control Protocol (IPCP).
+May 1992.
+.TP
+.B RFC1334
+Lloyd, B.; Simpson, W.A.
+.I PPP authentication protocols.
+October 1992.
+.TP
+.B RFC1661
+Simpson, W.A.
+.I The Point\-to\-Point Protocol (PPP).
+July 1994.
+.TP
+.B RFC1662
+Simpson, W.A.
+.I PPP in HDLC-like Framing.
+July 1994.
+.TP
+.B RFC2472
+Haskin, D.
+.I IP Version 6 over PPP
+December 1998.
+.SH NOTES
+The following signals have the specified effect when sent to pppd.
+.TP
+.B SIGINT, SIGTERM
+These signals cause pppd to terminate the link (by closing LCP),
+restore the serial device settings, and exit.
+.TP
+.B SIGHUP
+This signal causes pppd to terminate the link, restore the serial
+device settings, and close the serial device.  If the \fIpersist\fR or
+\fIdemand\fR option has been specified, pppd will try to reopen the
+serial device and start another connection (after the holdoff period).
+Otherwise pppd will exit.  If this signal is received during the
+holdoff period, it causes pppd to end the holdoff period immediately.
+.TP
+.B SIGUSR1
+This signal toggles the state of the \fIdebug\fR option.
+.TP
+.B SIGUSR2
+This signal causes pppd to renegotiate compression.  This can be
+useful to re-enable compression after it has been disabled as a result
+of a fatal decompression error.  (Fatal decompression errors generally
+indicate a bug in one or other implementation.)
+
+.SH AUTHORS
+Paul Mackerras (Paul.Mackerras at cs.anu.edu.au), based on earlier work by
+Drew Perkins,
+Brad Clements,
+Karl Fox,
+Greg Christy,
+and
+Brad Parker.
diff --git a/raw/man8/quotacheck.8 b/raw/man8/quotacheck.8
new file mode 100644
index 0000000..1fe707b
--- /dev/null
+++ b/raw/man8/quotacheck.8
@@ -0,0 +1,193 @@
+.TH quotacheck 8 "Fri Jul 20 2001"
+.SH NAME
+quotacheck \- scan a filesystem for disk usage, create, check and repair quota files
+.SH SYNOPSIS
+.B quotacheck
+[
+.B \-gubcfinvdMmR
+] [
+.B \-F
+.I quota-format
+]
+.B \-a
+|
+.I filesystem
+.br
+.SH DESCRIPTION
+.B quotacheck
+examines each filesystem, builds a table of current disk usage, and
+compares this table against that recorded in the disk quota file for the
+filesystem (this step is ommitted if option
+.B -c
+is specified). If any inconsistencies are detected, both the quota file
+and the current system copy of the incorrect quotas are updated (the
+latter only occurs if an active filesystem is checked which is not advised).
+By default, only user quotas are checked.
+.B quotacheck
+expects each filesystem to be checked to have quota files named
+.I [a]quota.user
+and
+.I [a]quota.group
+located at the root of the associated filesystem.  If a file is not
+present, 
+.B quotacheck
+will create it.
+.PP
+If the quota file is corrupted,
+.B quotacheck
+tries to save as much data as possible.  Rescuing data may need user
+intervention. With no additional options
+.B quotacheck
+will simply exit in such a situation. When in interactive mode (option
+.BR -i )
+, the user is asked for advice. Advice can also be provided from command
+line (see option
+.BR -n )
+, which is useful when
+.B quotacheck
+is run automatically (ie. from script) and failure is unacceptable.
+.PP
+.B quotacheck
+should be run each time the system boots and mounts non-valid filesystems.
+This is most likely to happen after a system crash.
+.PP
+It is strongly recommended to run
+.B quotacheck
+with quotas turned off on for the filesystem. Otherwise, possible damage
+or loss to data in the quota files can result.  It is also unwise to
+run
+.B quotacheck
+on a live filesystem as actual usage may change during the scan.  To
+prevent this,
+.B quotacheck
+tries to remount the filesystem read-only before starting the scan.  
+After the scan is done it remounts the filesystem read-write. You can
+disable this with option
+.BR \-m .
+You can also make
+.B quotacheck
+ignore the failure to remount the filesystem read-only with option
+.BR \-M .
+.SH OPTIONS
+.TP
+.B \-b
+Forces
+.B quotacheck
+to make backups of the quota file before writing the new data.
+.TP
+.B \-v
+.B quotacheck
+reports its operation as it progresses.  Normally it operates silently.
+.TP
+.B \-d
+Enable debugging mode.  It will result in a lot of information which can
+be used in debugging the program. The output is very verbose and the
+scan will be slow.
+.TP
+.B \-u
+Only user quotas listed in
+.I /etc/mtab
+or on the filesystems specified are to be checked.  This is the default action.
+.TP
+.B \-g
+Only group quotas listed in
+.I /etc/mtab
+or on the filesystems specified are to be checked.
+.TP
+.B \-c
+Don't read existing quota files. Just perform a new scan and save it to disk.
+.B quotacheck
+also skips scanning of old quota files when they are not found.
+.TP
+.B \-f
+Forces checking of filesystems with quotas enabled. This is not
+recommended as the created quota files may be out of sync.
+.TP
+.B \-M
+This flag forces checking of filesystem in read-write mode if a remount
+fails. Do this only when you are sure no process will write to a
+filesystem while scanning.
+.TP
+.B \-m
+Don't try to remount filesystem read-only. See comment with option
+.BR \-M .
+.TP
+.B \-i
+Interactive mode. By default
+.B quotacheck
+exits when it finds an error. In interactive mode user is asked for
+input instead.  See option
+.BR \-n .
+.TP
+.B \-n
+If the quota files become corrupted, it is possible for duplicate
+entries for a single user or group ID to exist.  Normally in this case,
+.B quotacheck
+exits or asks user for input. When this option is set, the first entry found
+is always used (this option works in interactive mode too).
+.TP
+.B \-F \f2format-name\f1
+Check quota for specified format (ie. don't perform format
+auto-detection). This is recommended as detection might not work well on
+corrupted quota files.  Possible format names are:
+.B vfsold
+(version 1 quota),
+.B vfsv0
+(version 2 quota),
+.B rpc
+(quota over NFS),
+.B xfs
+(quota on XFS filesystem)
+.TP
+.B \-a
+Check all mounted non-NFS filesystems in
+.B /etc/mtab
+.TP
+.B \-R
+When used together with the
+.B \-a
+option, all filesystems except for the root filesystem are checked for
+quotas.
+
+.SH NOTE
+.B quotacheck
+should only be run by super-user. Non-privileged users are presumably
+not allowed to read all the directories on the given filesystem.
+
+.SH "SEE ALSO"
+.BR quota (1),
+.BR quotactl (2),
+.BR fstab (5),
+.BR quotaon (8),
+.BR repquota (8),
+.BR convertquota (8),
+.BR setquota (8),
+.BR edquota (8),
+.BR fsck (8),
+.BR efsck (8),
+.BR e2fsck (8),
+.BR xfsck (8)
+
+.SH FILES
+.PD 0
+.TP 15
+.B aquota.user or aquota.group
+located at filesystem root with quotas (version 2 quota, non-XFS
+filesystems)
+.TP 15
+.B quota.user or quota.group
+located at filesystem root with quotas (version 1 quota, non-XFS
+filesystems)
+.TP
+.B /etc/mtab
+names and locations of mounted filesystems
+.SH AUTHOR
+Jan Kara \<jack at suse.cz\>
+.br
+Based on old
+.B quotacheck
+by:
+.br
+Edvard Tuinder \<ed at elm.net\>
+.br
+Marco van Wieringen \<mvw at planets.elm.net\>
diff --git a/raw/man8/quotaon.8 b/raw/man8/quotaon.8
new file mode 100644
index 0000000..973700c
--- /dev/null
+++ b/raw/man8/quotaon.8
@@ -0,0 +1,198 @@
+.TH QUOTAON 8
+.UC 4
+.SH NAME
+quotaon, quotaoff \- turn filesystem quotas on and off
+.SH SYNOPSIS
+.B /sbin/quotaon
+[
+.B \-vugfp
+] [
+.B \-F
+.I format-name
+]
+.IR filesystem .\|.\|.
+.br
+.B /sbin/quotaon
+[
+.B \-avugfp
+] [
+.B \-F
+.I format-name
+]
+.LP
+.B /sbin/quotaoff
+[
+.B \-vugp
+]
+[
+.B \-x
+.I state
+]
+.IR filesystem .\|.\|.
+.br
+.B /sbin/quotaoff
+[
+.B \-avugp
+]
+.SH DESCRIPTION
+.SS quotaon
+.IX  "quotaon command"  ""  "\fLquotaon\fP \(em turn filesystem quotas on"
+.IX  "user quotas"  "quotaon command"  ""  "\fLquotaon\fP \(em turn filesystem quotas on"
+.IX  "disk quotas"  "quotaon command"  ""  "\fLquotaon\fP \(em turn filesystem quotas on"
+.IX  "quotas"  "quotaon command"  ""  "\fLquotaon\fP \(em turn filesystem quotas on"
+.IX  "filesystem"  "quotaon command"  ""  "\fLquotaon\fP \(em turn filesystem quotas on"
+.LP
+.B quotaon
+announces to the system that disk quotas should be enabled on one or
+more filesystems. The filesystem quota files must be present in the root
+directory of the specified filesystem and be named either
+.IR aquota.user
+(for version 2 user quota),
+.IR quota.user
+(for version 1 user quota),
+.IR aquota.group
+(for version 2 group quota), or
+.IR quota.group
+(for version 1 group quota).
+.PP
+XFS filesystems are a special case - XFS considers quota
+information as filesystem metadata and uses journaling to provide
+a higher level guarantee of consistency.
+There are two components to the XFS disk quota system:
+accounting and limit enforcement.
+Except in the case of the root filesystem, XFS filesystems require
+that quota accounting be turned on at mount time.
+It is possible to enable and disable limit enforcement on any XFS
+filesystem after quota accounting is already turned on.
+The default is to turn on both accounting and enforcement.
+.PP
+The XFS quota implementation does not maintain quota information in
+user-visible files, but rather stores this information internally.
+.SS quotaoff
+.IX  "quotaoff command"  ""  "\fLquotaoff\fP \(em turn filesystem quotas off"
+.IX  "user quotas"  "quotaoff command"  ""  "\fLquotaoff\fP \(em turn filesystem quotas off"
+.IX  "disk quotas"  "quotaoff command"  ""  "\fLquotaoff\fP \(em turn filesystem quotas off"
+.IX  "quotas"  "quotaoff command"  ""  "\fLquotaoff\fP \(em turn filesystem quotas off"
+.IX  "filesystem"  "quotaoff command"  ""  "\fLquotaoff\fP \(em turn filesystem quotas off"
+.LP
+.B quotaoff
+announces to the system that the specified filesystems should
+have any disk quotas turned off.
+.SH OPTIONS
+.SS quotaon
+.TP
+.B \-a
+All automatically mounted (no
+.B noauto
+option) non-NFS filesystems in
+.B /etc/fstab
+with quotas will have their quotas turned on.
+This is normally used at boot time to enable quotas.
+.TP
+.B \-v
+Display a message for each filesystem where quotas are turned on.
+.TP
+.B \-u
+Manipulate user quotas. This is the default.
+.TP
+.B \-g
+Manipulate group quotas.
+.TP
+.B \-p
+Instead of turning quotas on just print state of quotas (ie. whether. quota is on or off)
+.TP
+.B \-f
+Make
+.B quotaon
+behave like being called as
+.BR quotaoff .
+.SS quotaoff
+.TP
+.B \-F \f2format-name\f1
+Report quota for specified format (ie. don't perform format autodetection).
+Possible format names are:
+.B vfsold
+(version 1 quota),
+.B vfsv0
+(version 2 quota),
+.B xfs
+(quota on XFS filesystem)
+.TP
+.B \-a
+Force all filesystems in
+.B /etc/fstab
+to have their quotas disabled.
+.TP
+.B \-v
+Display a message for each filesystem affected.
+.TP
+.B \-u
+Manipulate user quotas. This is the default.
+.TP
+.B \-g
+Manipulate group quotas.
+.TP
+.B \-p
+Instead of turning quotas off just print state of quotas (ie. whether. quota is on or off)
+.TP
+.B \-x delete
+Free up the space used to hold quota information (maintained
+internally) within XFS.
+This option is only applicable to XFS, and is silently
+ignored for other filesystem types.
+It can only be used on a filesystem with quota previously turned off.
+.TP
+.B \-x enforce
+Switch off limit enforcement for XFS filesystems (perform
+quota accounting only).
+This option is only applicable to XFS, and is silently
+ignored for other filesystem types.
+.LP
+.SH "XFS EXAMPLES"
+.TP 0
+.B "Turning on quotas on a non-root XFS filesystem"
+Use
+.IR mount (8)
+or
+.B /etc/fstab
+option quota to enable both accounting and limit enforcement.
+.B quotaon
+utility cannot be used for this purpose.
+.TP
+.B "Turning on quotas on an XFS root filesystem"
+Use
+.BR "quotaon -v /" ,
+and
+.IR reboot (8).
+This procedure will enable both accounting and limit enforcement.
+.TP
+.B "Turning off quota limit enforcement on any XFS filesystem"
+Make sure that quota accounting and enforcement are both turned on using
+.BR "repquota -s" .
+Use
+.B "quotaoff -vo"
+to disable limit enforcement.
+This may be done while the filesystem is mounted.
+.TP
+.BR "Turning on quota limit enforcement on any XFS filesystem"
+Make sure that quota accounting is turned on using
+.BR "repquota -s" .
+Use
+.BR "quotaon -v" .
+This may be done while the filesystem is mounted.
+.SH FILES
+.PD 0
+.TP 20
+.B aquota.user or aquota.group
+quota file at the filesystem root (version 2 quota, non-XFS filesystems)
+.TP
+.B quota.user or quota.group
+quota file at the filesystem root (version 1 quota, non-XFS filesystems)
+.TP
+.B /etc/fstab
+default filesystems
+.PD
+.SH "SEE ALSO"
+.BR quotactl (2),
+.BR fstab (5),
+.BR repquota (8).
diff --git a/raw/man8/ramsize.8 b/raw/man8/ramsize.8
new file mode 100644
index 0000000..901bd75
--- /dev/null
+++ b/raw/man8/ramsize.8
@@ -0,0 +1 @@
+.so man8/rdev.8
diff --git a/raw/man8/rdev.8 b/raw/man8/rdev.8
new file mode 100644
index 0000000..98dce2b
--- /dev/null
+++ b/raw/man8/rdev.8
@@ -0,0 +1,159 @@
+.\" Copyright 1992, 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.\" Changes from sct at dcs.ed.ac.uk added Sat Oct  9 09:54:00 1993.
+.TH RDEV 8 "20 November 1993" "Linux 0.99" "Linux Programmer's Manual"
+.SH NAME
+rdev \- query/set image root device, RAM disk size, or video mode
+.SH SYNOPSIS
+.nf
+.BR "rdev [ \-rvh ] [ \-o " offset " ] [ " image " [ " value " [ " offset " ] ] ]"
+.BR "rdev [ \-o " offset " ] [ " image " [ " root_device " [ " offset " ] ] ]"
+.BR "ramsize [ \-o " offset " ] [ " image " [ " size " [ " offset " ] ] ]"
+.BR "vidmode [ \-o " offset " ] [ " image " [ " mode " [ " offset " ] ] ]"
+.BR "rootflags [ \-o " offset " ] [ " image " [ " flags " [ " offset " ] ] ]"
+.fi
+.SH DESCRIPTION
+With no arguments,
+.B rdev
+outputs an
+.I /etc/mtab
+line for the current root file system.
+With no arguments,
+.BR ramsize ", " vidmode ", and " rootflags
+print usage information.
+
+In a bootable image for the Linux kernel on i386, there are several pairs
+of bytes which specify the root device, the video mode, and the size of
+the RAM disk.  These pairs of bytes, by default, begin
+at offset 504 (decimal) in the kernel image:
+
+.nf
+.RS
+ 498 Root flags
+(500 and 502 Reserved)
+ 504 RAM Disk Size
+ 506 VGA Mode
+ 508 Root Device
+(510 Boot Signature)
+.RE
+.fi
+
+.B rdev
+will change these values.
+
+Typical values for the
+.I image
+parameter, which is a bootable Linux kernel image, might be:
+
+.nf
+.RS
+/vmlinux
+/vmunix
+/boot/bzImage-2.4.0
+/dev/fd0
+/dev/fd1
+.RE
+.fi
+
+When using the
+.B rdev
+command, the
+.I root_device
+parameter might be something like:
+
+.nf
+.RS
+/dev/hda1
+/dev/hdf13
+/dev/sda2
+/dev/sdc4
+/dev/ida/c0d0p1
+.RE
+.fi
+
+One may also specify the device by a comma-separated pair
+of decimal integers
+.IR major , minor .
+
+For the
+.B ramsize
+command, the
+.B size
+parameter specifies the size of the RAM disk in kilobytes.
+
+For the
+.B rootflags
+command, the
+.B flags
+parameter contains extra information used when mounting root.
+Currently the only effect of these flags is to force the kernel to
+mount the root filesystem in readonly mode if 
+.B flags
+is non-zero.
+
+For the
+.B vidmode
+command, the
+.B mode
+parameter specifies the video mode:
+
+.nf
+.RS
+-3 = Prompt
+-2 = Extended VGA
+-1 = Normal VGA
+ 0 = as if "0" was pressed at the prompt
+ 1 = as if "1" was pressed at the prompt
+ 2 = as if "2" was pressed at the prompt
+ n = as if "n" was pressed at the prompt
+.RE
+.fi
+
+If the
+.I value
+is not specified, the
+.I image
+will be examined to determine the current settings.
+.SH OPTIONS
+.TP
+.B \-r
+Causes
+.B rdev
+to act like
+.BR ramsize .
+.TP
+.B \-R
+Causes
+.B rdev
+to act like
+.BR rootflags .
+.TP
+.B \-v
+Causes
+.B rdev
+to act like
+.BR vidmode .
+.TP
+.B \-h
+Provides help.
+.SH BUGS
+The
+.B rdev
+utility, when used other than to find a name for the current root device,
+is an ancient hack that works by patching a kernel image at a magic offset
+with magic numbers. It does not work on architectures other than i386.
+Its use is strongly discouraged. Use a boot loader like SysLinux or LILO
+instead.
+.SH HISTORY
+At offset 502 there used to be the device number of the swap device
+(in Linux 0.12), and "rdev -s" or "swapdev" would set this.
+However, since Linux 0.95 this constant is not used any longer,
+and the swap device is specified using the
+.IR swapon ()
+system call.
+.SH AUTHORS
+.nf
+Originally by Werner Almesberger (almesber at nessie.cs.id.ethz.ch)
+Modified by Peter MacDonald (pmacdona at sanjuan.UVic.CA)
+rootflags support added by Stephen Tweedie (sct at dcs.ed.ac.uk)
+.fi
diff --git a/raw/man8/repquota.8 b/raw/man8/repquota.8
new file mode 100644
index 0000000..b7af625
--- /dev/null
+++ b/raw/man8/repquota.8
@@ -0,0 +1,109 @@
+.TH REPQUOTA 8
+.UC 4
+.SH NAME
+repquota \- summarize quotas for a filesystem
+.SH SYNOPSIS
+.B /usr/sbin/repquota
+[
+.B \-vsug
+] [
+.B \-t
+|
+.B \-n
+] [
+.B \-F
+.I format-name
+]
+.IR filesystem .\|.\|.
+.LP
+.B /usr/sbin/repquota
+[
+.B \-avtsug
+] [
+.B \-t
+|
+.B \-n
+] [
+.B \-F
+.I format-name
+]
+.SH DESCRIPTION
+.IX  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "user quotas"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "disk quotas"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "quotas"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "filesystem"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "summarize filesystem quotas repquota"  ""  "summarize filesystem quotas \(em \fLrepquota\fP"
+.IX  "report filesystem quotas repquota"  ""  "report filesystem quotas \(em \fLrepquota\fP"
+.IX  display "filesystem quotas \(em \fLrepquota\fP"
+.LP
+.B repquota
+prints a summary of the disc usage and quotas for the specified file
+systems.  For each user the current number of files and amount of space
+(in kilobytes) is printed, along with any quotas created with
+.BR edquota (8).
+.SH OPTIONS
+.TP
+.B \-a
+Report on all filesystems indicated in
+.B /etc/mtab
+to be read-write with quotas.
+.TP
+.B \-v
+Report all quotas, even if there is no usage. Be also more verbose about quotafile
+information.
+.TP
+.B \-t
+Truncate user/group names longer than 9 characters. This results in nicer output when
+there are such names.
+.TP
+.B \-n
+Don't resolve UIDs/GIDs to names. This can speedup printing a lot.
+.TP
+.B \-s
+Try to report used space, number of used inodes and limits in more appropriate units
+than default ones.
+.TP
+.B \-F \f2format-name\f1
+Report quota for specified format (ie. don't perform format autodetection).
+Possible format names are:
+.B vfsold
+(version 1 quota),
+.B vfsv0
+(version 2 quota),
+.B rpc
+(quota over NFS),
+.B xfs
+(quota on XFS filesystem)
+.TP
+.B \-g
+Report quotas for groups.
+.TP
+.B \-u
+Report quotas for users. This is the default.
+.LP
+Only the super-user may view quotas which are not their own.
+.SH FILES
+.PD 0
+.TP 20
+.BR aquota.user " or " aquota.group
+quota file at the filesystem root (version 2 quota, non-XFS filesystems)
+.TP
+.BR quota.user " or " quota.group
+quota file at the filesystem root (version 1 quota, non-XFS filesystems)
+.TP
+.B /etc/mtab
+default filesystems
+.TP
+.B /etc/passwd
+default set of users
+.TP
+.B /etc/group
+default set of groups
+.PD
+.SH SEE ALSO
+.BR quota (1),
+.BR quotactl (2),
+.BR edquota (8),
+.BR quotacheck (8),
+.BR quotaon (8)
diff --git a/raw/man8/rootflags.8 b/raw/man8/rootflags.8
new file mode 100644
index 0000000..901bd75
--- /dev/null
+++ b/raw/man8/rootflags.8
@@ -0,0 +1 @@
+.so man8/rdev.8
diff --git a/raw/man8/route.8 b/raw/man8/route.8
new file mode 100644
index 0000000..f59c074
--- /dev/null
+++ b/raw/man8/route.8
@@ -0,0 +1,326 @@
+.TH ROUTE 8 "2 January 2000" "net-tools" "Linux Programmer's Manual"
+.SH NAME
+route \- show / manipulate the IP routing table
+.SH SYNOPSIS
+.B route
+.RB [ \-CFvnee ]
+.TP
+.B route 
+.RB [ \-v ]
+.RB [ \-A
+family] 
+.B add 
+.RB [ \-net | \-host ] 
+target 
+.RB [ netmask 
+Nm] 
+.RB [ gw 
+Gw] 
+.RB [ metric 
+N] 
+.RB [ mss 
+M] 
+.RB [ window 
+W] 
+.RB [ irtt 
+I]
+.RB [ reject ]
+.RB [ mod ]
+.RB [ dyn ] 
+.RB [ reinstate ] 
+.RB [[ dev ] 
+If]
+.TP
+.B route 
+.RB [ \-v ] 
+.RB [ \-A
+family]
+.B del 
+.RB [ \-net | \-host ] 
+target 
+.RB [ gw 
+Gw] 
+.RB [ netmask 
+Nm] 
+.RB [ metric 
+N] 
+.RB [[ dev ]
+If]
+.TP
+.B route 
+.RB [ \-V ] 
+.RB [ \-\-version ]
+.RB [ \-h ]
+.RB [ \--help ]
+.SH DESCRIPTION
+.B Route
+manipulates the kernel's IP routing tables.  Its primary use is to set
+up static routes to specific hosts or networks via an interface after
+it has been configured with the
+.BR ifconfig (8)
+program.
+
+When the
+.B add
+or
+.B del
+options are used,
+.B route
+modifies the routing tables.  Without these options,
+.B route
+displays the current contents of the routing tables.
+
+.SH OPTIONS
+.TP
+.B \-A family
+use the specified address family (eg `inet'; use `route --help' for a full 
+list).
+
+.TP 
+.B -F
+operate on the kernel's FIB (Forwarding Information Base) routing
+table. 
+This is the default.
+.TP 
+.B -C
+operate on the kernel's routing cache.
+
+.TP
+.B \-v
+select verbose operation.
+.TP
+.B \-n
+show numerical addresses instead of trying to determine symbolic host
+names. This is useful if you are trying to determine why the route to your
+nameserver has vanished.
+.TP
+.B \-e
+use
+.BR netstat (8)-format
+for displaying the routing table.
+.B \-ee 
+will generate a very long line with all parameters from the routing table.
+
+.TP
+.B del
+delete a route.
+.TP 
+.B add 
+add a new route.
+.TP
+.B target
+the destination network or host. You can provide IP addresses in dotted
+decimal or host/network names.
+.TP
+.B \-net
+the
+.B target
+is a network.
+.TP
+.B -host
+the
+.B target 
+is a host.
+.TP
+.B netmask NM
+when adding a network route, the netmask to be used.
+.TP
+.B gw GW
+route packets via a gateway.
+.B NOTE:
+The specified gateway must be reachable first. This usually means that
+you have to set up a static route to the gateway beforehand. If you specify
+the address of one of your local interfaces, it will be used to decide about
+the interface to which the packets should be routed to. This is a BSDism
+compatibility hack.
+.TP
+.B metric M
+set the metric field in the routing table (used by routing daemons) to M.
+.TP 
+.B mss M
+set the TCP Maximum Segment Size (MSS) for connections over this route
+to M bytes. 
+The default is the device MTU minus headers, or a lower MTU when path mtu 
+discovery occured. This setting can be used to force smaller TCP packets on the
+other end when path mtu discovery does not work (usually because of
+misconfigured firewalls that block ICMP Fragmentation Needed)
+.TP 
+.B window W 
+set the TCP window size for connections over this route to W
+bytes. This is typically only used on AX.25 networks and with drivers
+unable to handle back to back frames.
+.TP
+.B irtt I
+set the initial round trip time (irtt) for TCP connections over this
+route to I milliseconds (1-12000). This is typically only used on
+AX.25 networks. If omitted the RFC 1122 default of 300ms is used.
+.TP
+.B reject
+install a blocking route, which will force a route lookup to fail.
+This is for example used to mask out networks before using the default
+route.  This is NOT for firewalling.
+.TP
+.B mod, dyn, reinstate
+install a dynamic or modified route. These flags are for diagnostic
+purposes, and are generally only set by routing daemons.
+.TP
+.B dev If
+force the route to be associated with the specified device, as the
+kernel will otherwise try to determine the device on its own (by
+checking already existing routes and device specifications, and where
+the route is added to). In most normal networks you won't need this.
+
+If 
+.B dev If
+is the last option on the command line, the word 
+.B dev
+may be omitted, as it's the default. Otherwise the order of the route
+modifiers (metric - netmask - gw - dev) doesn't matter.
+
+.SH EXAMPLES
+.TP
+.B route add -net 127.0.0.0
+adds the normal loopback entry, using netmask 255.0.0.0 (class A net,
+determined from the destination address) and associated with the 
+"lo" device (assuming this device was prviously set up correctly with
+.BR ifconfig (8)). 
+
+.TP 
+.B route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
+adds a route to the network 192.56.76.x via 
+"eth0". The Class C netmask modifier is not really necessary here because
+192.* is a Class C IP address. The word "dev" can be omitted here. 
+
+.TP
+.B route add default gw mango-gw
+adds a default route (which will be used if no other route matches).
+All packets using this route will be gatewayed through "mango-gw". The
+device which will actually be used for that route depends on how we
+can reach "mango-gw" - the static route to "mango-gw" will have to be
+set up before. 
+
+.TP
+.B route add ipx4 sl0
+Adds the route to the "ipx4" host via the SLIP interface (assuming that
+"ipx4" is the SLIP host).
+
+.TP
+.B route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
+This command adds the net "192.57.66.x" to be gatewayed through the former
+route to the SLIP interface.
+
+.TP
+.B route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
+This is an obscure one documented so people know how to do it. This sets
+all of the class D (multicast) IP routes to go via "eth0". This is the
+correct normal configuration line with a multicasting kernel. 
+
+.TP
+.B route add -net 10.0.0.0 netmask 255.0.0.0 reject
+This installs a rejecting route for the private network "10.x.x.x."
+
+.LP
+.SH OUTPUT
+The output of the kernel routing table is organized in the following columns
+.TP
+.B Destination     
+The destination network or destination host.
+.TP
+.B Gateway
+The gateway address or '*' if none set.
+.TP
+.B Genmask         
+The netmask for the destination net; '255.255.255.255' for a host destination
+and '0.0.0.0' for the 
+.B default
+route.
+.TP
+.B Flags 
+Possible flags include
+.br
+.B U
+(route is
+.BR up )
+.br
+.B H
+(target is a
+.BR host )
+.br
+.B G
+(use
+.BR gateway )
+.br
+.B R
+.RB ( reinstate
+route for dynamic routing)
+.br
+.B D
+.RB ( dynamically
+installed by daemon or redirect)
+.br
+.B M
+.RB ( modified
+from routing daemon or redirect)
+.br
+.B A
+(installed by
+.BR addrconf )
+.br
+.B C
+.RB ( cache
+entry)
+.br
+.B !
+.RB ( reject
+route)
+.TP
+.B Metric 
+The 'distance' to the target (usually counted in hops). It is not used by
+recent kernels, but may be needed by routing daemons.
+.TP
+.B Ref    
+Number of references to this route. (Not used in the Linux kernel.)
+.TP
+.B Use
+Count of lookups for the route.  Depending on the use of -F and -C this will
+be either route cache misses (-F) or hits (-C).
+.TP
+.B Iface
+Interface to which packets for this route will be sent.
+.TP
+.B MSS 
+Default maximum segement size for TCP connections over this route.
+.TP
+.B Window  
+Default window size for TCP connections over this route.
+.TP
+.B irtt
+Initial RTT (Round Trip Time). The kernel uses this to guess about the best
+TCP protocol parameters without waiting on (possibly slow) answers.
+.TP
+.B HH (cached only)
+The number of ARP entries and cached routes that refer to the hardware
+header cache for the cached route. This will be \-1 if a hardware
+address is not needed for the interface of the cached route (e.g. lo).
+.TP
+.B Arp (cached only)
+Whether or not the hardware address for the cached route is up to date.
+.LP
+.SH FILES
+.I /proc/net/ipv6_route
+.br
+.I /proc/net/route
+.br
+.I /proc/net/rt_cache
+.LP
+.SH SEE ALSO
+.I ifconfig(8), netstat(8), arp(8), rarp(8)
+.LP
+.SH HISTORY
+.B Route
+for Linux was originally written by Fred N.  van Kempen,
+<waltje at uwalt.nl.mugnet.org> and then modified by Johannes Stille and
+Linus Torvalds for pl15. Alan Cox added the mss and window options for
+Linux 1.1.22. irtt support and merged with netstat from Bernd Eckenfels.
+.SH AUTHOR
+Currently maintained by Phil Blundell <Philip.Blundell at pobox.com>.
diff --git a/raw/man8/rpm.8 b/raw/man8/rpm.8
new file mode 100644
index 0000000..539ac4c
--- /dev/null
+++ b/raw/man8/rpm.8
@@ -0,0 +1,988 @@
+.\" This manpage has been automatically generated by docbook2man 
+.\" from a DocBook document.  This tool can be found at:
+.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
+.\" Please send any bug reports, improvements, comments, patches, 
+.\" etc. to Steve Cheng <steve at ggi-project.org>.
+.TH "RPM" "8" "09 June 2002" "Red Hat, Inc." "Red Hat Linux"
+.SH NAME
+rpm \- RPM Package Manager
+.SH SYNOPSIS
+.SS "QUERYING AND VERIFYING PACKAGES:"
+.PP
+
+
+\fBrpm\fR {\fB-q|--query\fR} [\fBselect-options\fR] [\fBquery-options\fR]
+
+
+
+\fBrpm\fR {\fB-V|--verify\fR} [\fBselect-options\fR] [\fBverify-options\fR]
+
+
+
+\fBrpm\fR \fB--import\fR \fB\fIPUBKEY\fB\fR\fI ...\fR
+
+
+
+\fBrpm\fR {\fB-K|--checksig\fR} [\fB--nosignature\fR] [\fB--nodigest\fR]
+    \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+.SS "INSTALLING, UPGRADING, AND REMOVING PACKAGES:"
+.PP
+
+
+\fBrpm\fR {\fB-i|--install\fR} [\fBinstall-options\fR] \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+
+
+\fBrpm\fR {\fB-U|--upgrade\fR} [\fBinstall-options\fR] \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+
+
+\fBrpm\fR {\fB-F|--freshen\fR} [\fBinstall-options\fR] \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+
+
+\fBrpm\fR {\fB-e|--erase\fR} [\fB--allmatches\fR] [\fB--nodeps\fR] [\fB--noscripts\fR]
+    [\fB--notriggers\fR] [\fB--repackage\fR] [\fB--test\fR] \fB\fIPACKAGE_NAME\fB\fR\fI\ ...\fR
+
+.SS "MISCELLANEOUS:"
+.PP
+
+
+\fBrpm\fR {\fB--initdb|--rebuilddb\fR}
+
+
+
+\fBrpm\fR {\fB--addsign|--resign\fR} \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+
+
+\fBrpm\fR {\fB--querytags|--showrc\fR}
+
+
+
+\fBrpm\fR {\fB--setperms|--setugids\fR} \fB\fIPACKAGE_NAME\fB\fR\fI ...\fR
+
+.SS "select-options"
+.PP
+
+
+ [\fB\fIPACKAGE_NAME\fB\fR] [\fB-a,--all\fR] [\fB-f,--file \fIFILE\fB\fR]
+ [\fB-g,--group \fIGROUP\fB\fR] {\fB-p,--package \fIPACKAGE_FILE\fB\fR]
+ [\fB--fileid \fIMD5\fB\fR] [\fB--hdrid \fISHA1\fB\fR] [\fB--pkgid \fIMD5\fB\fR] [\fB--tid \fITID\fB\fR]
+ [\fB--querybynumber \fIHDRNUM\fB\fR] [\fB--triggeredby \fIPACKAGE_NAME\fB\fR]
+ [\fB--whatprovides \fICAPABILITY\fB\fR] [\fB--whatrequires \fICAPABILITY\fB\fR]
+
+.SS "query-options"
+.PP
+
+
+ [\fB--changelog\fR] [\fB-c,--configfiles\fR] [\fB-d,--docfiles\fR] [\fB--dump\fR]
+ [\fB--filesbypkg\fR] [\fB-i,--info\fR] [\fB--last\fR] [\fB-l,--list\fR]
+ [\fB--provides\fR] [\fB--qf,--queryformat \fIQUERYFMT\fB\fR]
+ [\fB-R,--requires\fR] [\fB--scripts\fR] [\fB-s,--state\fR]
+ [\fB--triggers,--triggerscripts\fR]
+
+.SS "verify-options"
+.PP
+
+
+ [\fB--nodeps\fR] [\fB--nofiles\fR] [\fB--noscripts\fR]
+ [\fB--nodigest\fR] [\fB--nosignature\fR]
+ [\fB--nolinkto\fR] [\fB--nomd5\fR] [\fB--nosize\fR] [\fB--nouser\fR]
+ [\fB--nogroup\fR] [\fB--nomtime\fR] [\fB--nomode\fR] [\fB--nordev\fR]
+
+.SS "install-options"
+.PP
+
+
+ [\fB--aid\fR] [\fB--allfiles\fR] [\fB--badreloc\fR] [\fB--excludepath \fIOLDPATH\fB\fR]
+ [\fB--excludedocs\fR] [\fB--force\fR] [\fB-h,--hash\fR]
+ [\fB--ignoresize\fR] [\fB--ignorearch\fR] [\fB--ignoreos\fR]
+ [\fB--includedocs\fR] [\fB--justdb\fR] [\fB--nodeps\fR]
+ [\fB--nodigest\fR] [\fB--nosignature\fR] [\fB--nosuggest\fR]
+ [\fB--noorder\fR] [\fB--noscripts\fR] [\fB--notriggers\fR]
+ [\fB--oldpackage\fR] [\fB--percent\fR] [\fB--prefix \fINEWPATH\fB\fR]
+ [\fB--relocate \fIOLDPATH\fB=\fINEWPATH\fB\fR]
+ [\fB--repackage\fR] [\fB--replacefiles\fR] [\fB--replacepkgs\fR]
+ [\fB--test\fR]
+
+.SH "DESCRIPTION"
+.PP
+\fBrpm\fR is a powerful \fBPackage Manager\fR,
+which can be used to build, install, query, verify, update, and
+erase individual software packages.
+A \fBpackage\fR consists of an archive of files and
+meta-data used to install and erase the archive files. The meta-data
+includes helper scripts, file attributes, and descriptive information
+about the package.
+\fBPackages\fR come in two varieties: binary packages,
+used to encapsulate software to be installed, and source packages,
+containing the source code and recipe necessary to produce binary
+packages.
+.PP
+One of the following basic modes must be selected:
+\fBQuery\fR,
+\fBVerify\fR,
+\fBSignature Check\fR,
+\fBInstall/Upgrade/Freshen\fR,
+\fBUninstall\fR,
+\fBInitialize Database\fR,
+\fBRebuild Database\fR,
+\fBResign\fR,
+\fBAdd Signature\fR,
+\fBSet Owners/Groups\fR,
+\fBShow Querytags\fR, and
+\fBShow Configuration\fR.
+.SS "GENERAL OPTIONS"
+.PP
+These options can be used in all the different modes.
+.TP
+\fB-?, --help\fR
+Print a longer usage message then normal.
+.TP
+\fB--version\fR
+Print a single line containing the version number of \fBrpm\fR
+being used. 
+.TP
+\fB--quiet\fR
+Print as little as possible - normally only error messages will
+be displayed.
+.TP
+\fB-v\fR
+Print verbose information - normally routine progress messages will be
+displayed.
+.TP
+\fB-vv\fR
+Print lots of ugly debugging information.
+.TP
+\fB--rcfile \fIFILELIST\fB\fR
+Each of the files in the colon separated
+\fIFILELIST\fR
+is read sequentially by \fBrpm\fR for configuration
+information.
+Only the first file in the list must exist, and tildes will be
+expanded to the value of \fB$HOME\fR.
+The default \fIFILELIST\fR is
+\fI/usr/lib/rpm/rpmrc\fR:\fI/usr/lib/rpm/redhat/rpmrc\fR:\fI/etc/rpmrc\fR:\fI~/.rpmrc\fR.
+.TP
+\fB--pipe \fICMD\fB\fR
+Pipes the output of \fBrpm\fR to the command \fICMD\fR.
+.TP
+\fB--dbpath \fIDIRECTORY\fB\fR
+Use the database in \fIDIRECTORY\fR rathen
+than the default path \fI/var/lib/rpm\fR
+.TP
+\fB--root \fIDIRECTORY\fB\fR
+Use the file system tree rooted at \fIDIRECTORY\fR for all operations.
+Note that this means the database within
+\fIDIRECTORY\fR
+will be used for dependency checks and any scriptlet(s) (e.g.
+\fB%post\fR if installing, or
+\fB%prep\fR if building, a package)
+will be run after a chroot(2) to
+\fIDIRECTORY\fR.
+.SS "INSTALL AND UPGRADE OPTIONS"
+.PP
+The general form of an rpm install command is 
+.PP
+
+\fBrpm\fR {\fB-i|--install\fR} [\fBinstall-options\fR] \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+.PP
+This installs a new package.
+.PP
+The general form of an rpm upgrade command is 
+.PP
+
+\fBrpm\fR {\fB-U|--upgrade\fR} [\fBinstall-options\fR] \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+.PP
+This upgrades or installs the package currently installed
+to a newer version.  This is the same as install, except
+all other version(s) of the package are removed after the
+new package is installed.
+.PP
+
+\fBrpm\fR {\fB-F|--freshen\fR} [\fBinstall-options\fR] \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+.PP
+This will upgrade packages, but only if an earlier version
+currently exists. The \fIPACKAGE_FILE\fR
+may be specified as an
+\fBftp\fR or
+\fBhttp\fR URL,
+in which case the package will be downloaded before being
+installed. See \fBFTP/HTTP OPTIONS\fR
+for information on \fBrpm\fR's internal
+\fBftp\fR and
+\fBhttp\fR
+client support. 
+.PP
+.TP
+\fB--aid\fR
+Add suggested packages to the transaction set when needed.
+.TP
+\fB--allfiles\fR
+Installs or upgrades all the missingok files in the package,
+regardless if they exist.
+.TP
+\fB--badreloc\fR
+Used with \fB--relocate\fR, permit relocations on
+all file paths, not just those \fIOLDPATH\fR's
+included in the binary package relocation hint(s).
+.TP
+\fB--excludepath \fIOLDPATH\fB\fR
+Don't install files whose name begins with
+\fIOLDPATH\fR.
+.TP
+\fB--excludedocs\fR
+Don't install any files which are marked as documentation
+(which includes man pages and texinfo documents).
+.TP
+\fB--force\fR
+Same as using
+\fB--replacepkgs\fR,
+\fB--replacefiles\fR, and
+\fB--oldpackage\fR.
+.TP
+\fB-h, --hash\fR
+Print 50 hash marks as the package archive is unpacked.
+Use with \fB-v|--verbose\fR for a nicer display.
+.TP
+\fB--ignoresize\fR
+Don't check mount file systems for sufficient disk space before
+installing this package.
+.TP
+\fB--ignorearch\fR
+Allow installation or upgrading even if the architectures
+of the binary package and host don't match.
+.TP
+\fB--ignoreos\fR
+Allow installation or upgrading even if the operating
+systems of the binary package and host don't match.
+.TP
+\fB--includedocs\fR
+Install documentation files. This is the default behavior.
+.TP
+\fB--justdb\fR
+Update only the database, not the filesystem.
+.TP
+\fB--nodigest\fR
+Don't verify package or header digests when reading.
+.TP
+\fB--nosignature\fR
+Don't verify package or header signatures when reading.
+.TP
+\fB--nodeps\fR
+Don't do a dependency check before installing or upgrading
+a package.
+.TP
+\fB--nosuggest\fR
+Don't suggest package(s) that provide a missing dependency.
+.TP
+\fB--noorder\fR
+Don't reorder the packages for an install. The list of
+packages would normally be reordered to satisfy dependancies.
+.TP
+\fB--noscripts\fR
+.TP
+\fB--nopre\fR
+.TP
+\fB--nopost\fR
+.TP
+\fB--nopreun\fR
+.TP
+\fB--nopostun\fR
+Don't execute the scriptlet of the same name.
+The \fB--noscripts\fR option is equivalent to
+
+\fB--nopre\fR
+\fB--nopost\fR
+\fB--nopreun\fR
+\fB--nopostun\fR
+
+and turns off the execution of the corresponding
+\fB%pre\fR,
+\fB%post\fR,
+\fB%preun\fR, and
+\fB%postun\fR
+scriptlet(s).
+.TP
+\fB--notriggers\fR
+.TP
+\fB--notriggerin\fR
+.TP
+\fB--notriggerun\fR
+.TP
+\fB--notriggerpostun\fR
+Don't execute any trigger scriptlet of the named type.
+The \fB--notriggers\fR option is equivalent to
+
+\fB--notriggerin\fR
+\fB--notriggerun\fR
+\fB--notriggerpostun\fR
+
+and turns off execution of the corresponding
+\fB%triggerin\fR,
+\fB%triggerun\fR, and
+\fB%triggerpostun\fR
+scriptlet(s).
+.TP
+\fB--oldpackage\fR
+Allow an upgrade to replace a newer package with an older one.
+.TP
+\fB--percent\fR
+Print percentages as files are unpacked from the package archive.
+This is intended to make \fBrpm\fR easy to run from
+other tools.
+.TP
+\fB--prefix \fINEWPATH\fB\fR
+For relocateable binary packages, translate all file paths that
+start with the installation prefix in the package relocation hint(s)
+to \fINEWPATH\fR.
+.TP
+\fB--relocate \fIOLDPATH\fB=\fINEWPATH\fB\fR
+For relocatable binary packages, translate all file paths
+that start with \fIOLDPATH\fR in the
+package relocation hint(s) to \fINEWPATH\fR.
+This option can be used repeatedly if several
+\fIOLDPATH\fR's in the package are to
+be relocated.
+.TP
+\fB--repackage\fR
+Re-package the files before erasing. The previously installed
+package will be named according to the macro
+\fB%_repackage_name_fmt\fR
+and will be created in the directory named by
+the macro \fB%_repackage_dir\fR (default value
+is \fI/var/tmp\fR).
+.TP
+\fB--replacefiles\fR
+Install the packages even if they replace files from other,
+already installed, packages.
+.TP
+\fB--replacepkgs\fR
+Install the packages even if some of them are already installed
+on this system.
+.TP
+\fB--test\fR
+Do not install the package, simply check for and report
+potential conflicts.
+.SS "ERASE OPTIONS"
+.PP
+The general form of an rpm erase command is 
+.PP
+
+\fBrpm\fR {\fB-e|--erase\fR} [\fB--allmatches\fR] [\fB--nodeps\fR] [\fB--noscripts\fR] [\fB--notriggers\fR] [\fB--repackage\fR] [\fB--test\fR] \fB\fIPACKAGE_NAME\fB\fR\fI ...\fR
+
+.PP
+The following options may also be used:
+.TP
+\fB--allmatches\fR
+Remove all versions of the package which match
+\fIPACKAGE_NAME\fR. Normally an
+error is issued if \fIPACKAGE_NAME\fR
+matches multiple packages.
+.TP
+\fB--nodeps\fR
+Don't check dependencies before uninstalling the packages.
+.TP
+\fB--noscripts\fR
+.TP
+\fB--nopreun\fR
+.TP
+\fB--nopostun\fR
+Don't execute the scriptlet of the same name.
+The \fB--noscripts\fR option during package erase is
+equivalent to
+
+\fB--nopreun\fR
+\fB--nopostun\fR
+
+and turns off the execution of the corresponding
+\fB%preun\fR, and
+\fB%postun\fR
+scriptlet(s).
+.TP
+\fB--notriggers\fR
+.TP
+\fB--notriggerun\fR
+.TP
+\fB--notriggerpostun\fR
+Don't execute any trigger scriptlet of the named type.
+The \fB--notriggers\fR option is equivalent to
+
+\fB--notriggerun\fR
+\fB--notriggerpostun\fR
+
+and turns off execution of the corresponding
+\fB%triggerun\fR, and
+\fB%triggerpostun\fR
+scriptlet(s).
+.TP
+\fB--repackage\fR
+Re-package the files before erasing. The previously installed
+package will be named according to the macro
+\fB%_repackage_name_fmt\fR
+and will be created in the directory named by
+the macro \fB%_repackage_dir\fR (default value
+is \fI/var/tmp\fR).
+.TP
+\fB--test\fR
+Don't really uninstall anything, just go through the motions.
+Useful in conjunction with the \fB-vv\fR option
+for debugging.
+.SS "QUERY OPTIONS"
+.PP
+The general form of an rpm query command is 
+.PP
+
+\fBrpm\fR {\fB-q|--query\fR} [\fBselect-options\fR] [\fBquery-options\fR]
+
+.PP
+You may specify the format that package information should be
+printed in. To do this, you use the
+
+ \fB--qf|--queryformat\fR \fB\fIQUERYFMT\fB\fR
+
+option, followed by the \fIQUERYFMT\fR
+format string.  Query formats are modifed versions of the
+standard \fBprintf(3)\fR formatting. The format
+is made up of static strings (which may include standard C
+character escapes for newlines, tabs, and other special
+characters) and \fBprintf(3)\fR type formatters.
+As \fBrpm\fR already knows the type to print, the
+type specifier must be omitted however, and replaced by the name
+of the header tag to be printed, enclosed by \fB{}\fR
+characters. Tag names are case insesitive, and the leading
+\fBRPMTAG_\fR portion of the tag name may be omitted
+as well.
+.PP
+Alternate output formats may be requested by following
+the tag with \fB:\fItypetag\fB\fR.
+Currently, the following types are supported:
+.TP
+\fB:armor\fR
+   
+Wrap a public key in ASCII armor.
+.TP
+\fB:base64\fR
+Encode binary data using base64.
+.TP
+\fB:date\fR
+Use strftime(3) "%c" format.
+.TP
+\fB:day\fR
+Use strftime(3) "%a %b %d %Y" format.
+.TP
+\fB:depflags\fR
+Format dependency flags.
+.TP
+\fB:fflags\fR
+Format file flags.
+.TP
+\fB:hex\fR
+Format in hexadecimal.
+.TP
+\fB:octal\fR
+Format in octal.
+.TP
+\fB:perms\fR
+Format file permissions.
+.TP
+\fB:shescape\fR
+Escape single quotes for use in a script.
+.TP
+\fB:triggertype\fR
+Display trigger suffix.
+.PP
+For example, to print only the names of the packages queried,
+you could use \fB%{NAME}\fR as the format string.
+To print the packages name and distribution information in
+two columns, you could use \fB%-30{NAME}%{DISTRIBUTION}\fR.
+\fBrpm\fR will print a list of all of the tags it knows about when it
+is invoked with the \fB--querytags\fR argument.
+.PP
+There are two subsets of options for querying: package selection,
+and information selection.
+.SS "PACKAGE SELECTION OPTIONS:"
+.PP
+.TP
+\fB\fIPACKAGE_NAME\fB\fR
+Query installed package named \fIPACKAGE_NAME\fR.
+.TP
+\fB-a, --all\fR
+Query all installed packages.
+.TP
+\fB-f, --file \fIFILE\fB\fR
+Query package owning \fIFILE\fR.
+.TP
+\fB--fileid \fIMD5\fB\fR
+Query package that contains a given file identifier, i.e. the
+\fIMD5\fR digest of the file contents.
+.TP
+\fB-g, --group \fIGROUP\fB\fR
+Query packages with the group of \fIGROUP\fR.
+.TP
+\fB--hdrid \fISHA1\fB\fR
+Query package that contains a given header identifier, i.e. the
+\fISHA1\fR digest of the immutable header region.
+.TP
+\fB-p, --package \fIPACKAGE_FILE\fB\fR
+Query an (uninstalled) package \fIPACKAGE_FILE\fR.
+The \fIPACKAGE_FILE\fR may be specified
+as an \fBftp\fR or \fBhttp\fR style URL, in
+which case the package header will be downloaded and queried.
+See \fBFTP/HTTP OPTIONS\fR for information on
+\fBrpm\fR's internal
+\fBftp\fR and
+\fBhttp\fR
+client support. The \fIPACKAGE_FILE\fR argument(s),
+if not a binary package, will be interpreted as an ASCII package
+manifest.  Comments are permitted, starting with a '#', and each
+line of a package manifest file may include white space seperated
+glob expressions, including URL's with remote glob expressions,
+that will be expanded to paths that are substituted in place of
+the package manifest as additional \fIPACKAGE_FILE\fR
+arguments to the query.
+.TP
+\fB--pkgid \fIMD5\fB\fR
+Query package that contains a given package identifier, i.e. the
+\fIMD5\fR digest of the combined header and
+payload contents.
+.TP
+\fB--querybynumber \fIHDRNUM\fB\fR
+Query the \fIHDRNUM\fRth database entry
+directly; this is useful only for debugging.
+.TP
+\fB--specfile \fISPECFILE\fB\fR
+Parse and query \fISPECFILE\fR as if
+it were a package. Although not all the information (e.g. file lists)
+is available, this type of query permits rpm to be used to extract
+information from spec files without having to write a specfile
+parser.
+.TP
+\fB--tid \fITID\fB\fR
+Query package(s) that have a given \fITID\fR
+transaction identifier. A unix time stamp is currently used as a
+transaction identifier. All package(s) installed or erased within
+a single transaction have a common identifier.
+.TP
+\fB--triggeredby \fIPACKAGE_NAME\fB\fR
+Query packages that are triggered by package(s)
+\fIPACKAGE_NAME\fR.
+.TP
+\fB--whatprovides \fICAPABILITY\fB\fR
+Query all packages that provide the \fICAPABILITY\fR capability.
+.TP
+\fB--whatrequires \fICAPABILITY\fB\fR
+Query all packages that requires \fICAPABILITY\fR for proper functioning.
+.SS "PACKAGE QUERY OPTIONS:"
+.PP
+.TP
+\fB--changelog\fR
+Display change information for the package.
+.TP
+\fB-c, --configfiles\fR
+List only configuration files (implies \fB-l\fR).
+.TP
+\fB-d, --docfiles\fR
+List only documentation files (implies \fB-l\fR).
+.TP
+\fB--dump\fR
+Dump file information as follows:
+.sp
+.RS
+
+.nf
+path size mtime md5sum mode owner group isconfig isdoc rdev symlink
+	
+.fi
+.RE
+
+This option must be used with at least one of
+\fB-l\fR,
+\fB-c\fR,
+\fB-d\fR.
+.TP
+\fB--filesbypkg\fR
+List all the files in each selected package.
+.TP
+\fB-i, --info\fR
+Display package information, including name, version, and description.
+This uses the \fB--queryformat\fR if one was specified.
+.TP
+\fB--last\fR
+Orders the package listing by install time such that the latest
+packages are at the top.
+.TP
+\fB-l, --list\fR
+List files in package.
+.TP
+\fB--provides\fR
+List capabilities this package provides.
+.TP
+\fB-R, --requires\fR
+List packages on which this package depends.
+.TP
+\fB--scripts\fR
+List the package specific scriptlet(s) that are used as part
+of the installation and uninstallation processes.
+.TP
+\fB-s, --state\fR
+Display the \fIstates\fR of files in the package
+(implies \fB-l\fR).  The state of each file is one of
+\fInormal\fR,
+\fInot installed\fR, or
+\fIreplaced\fR.
+.TP
+\fB--triggers, --triggerscripts\fR
+Display the trigger scripts, if any, which are contained in
+the package.
+.SS "VERIFY OPTIONS"
+.PP
+The general form of an rpm verify command is 
+.PP
+
+\fBrpm\fR {\fB-V|--verify\fR} [\fBselect-options\fR] [\fBverify-options\fR]
+
+.PP
+Verifying a package compares information about the installed files in
+the package with information about the files taken from the package
+metadata stored in the rpm database.  Among other things, verifying
+compares the size, MD5 sum, permissions, type, owner and group of
+each file.  Any discrepencies are displayed.
+Files that were not installed from the package, for example,
+documentation files excluded on installation using the
+"\fB--excludedocs\fR" option,
+will be silently ignored.
+.PP
+The package selection options are the same as for package
+querying (including package manifest files as arguments).
+Other options unique to verify mode are:
+.TP
+\fB--nodeps\fR
+Don't verify dependencies of packages.
+.TP
+\fB--nodigest\fR
+Don't verify package or header digests when reading.
+.TP
+\fB--nofiles\fR
+Don't verify any attributes of package files.
+.TP
+\fB--noscripts\fR
+Don't execute the \fB%verifyscript\fR scriptlet (if any).
+.TP
+\fB--nosignature\fR
+Don't verify package or header signatures when reading.
+.TP
+\fB--nolinkto\fR
+.TP
+\fB--nomd5\fR
+.TP
+\fB--nosize\fR
+.TP
+\fB--nouser\fR
+.TP
+\fB--nogroup\fR
+.TP
+\fB--nomtime\fR
+.TP
+\fB--nomode\fR
+.TP
+\fB--nordev\fR
+Don't verify the corresponding file attribute.
+.PP
+The format of the output is a string of 8 characters, a possible
+attribute marker:
+
+.nf
+\fBc\fR \fB%config\fR configuration file.
+\fBd\fR \fB%doc\fR documentation file.
+\fBg\fR \fB%ghost\fR file (i.e. the file contents are not included in the package payload).
+\fBl\fR \fB%license\fR license file.
+\fBr\fR \fB%readme\fR readme file.
+.fi
+
+from the package header, followed by the file name.
+Each of the 8 characters denotes the result of a comparison of
+attribute(s) of the file to the value of those attribute(s) recorded
+in the database.  A single
+"\fB.\fR" (period)
+means the test passed, while a single
+"\fB?\fR" (question mark)
+indicates the test could not be performed (e.g. file permissions
+prevent reading). Otherwise, the (mnemonically
+em\fBB\fRoldened) character denotes failure of
+the corresponding \fB--verify\fR test:
+
+.nf
+\fBS\fR file \fBS\fRize differs
+\fBM\fR \fBM\fRode differs (includes permissions and file type)
+\fB5\fR MD\fB5\fR sum differs
+\fBD\fR \fBD\fRevice major/minor number mis-match
+\fBL\fR read\fBL\fRink(2) path mis-match
+\fBU\fR \fBU\fRser ownership differs
+\fBG\fR \fBG\fRroup ownership differs
+\fBT\fR m\fBT\fRime differs
+.fi
+
+.SS "DIGITAL SIGNATURE AND DIGEST VERIFICATION"
+.PP
+The general forms of rpm digital signature commands are
+.PP
+
+
+\fBrpm\fR \fB--import\fR \fB\fIPUBKEY\fB\fR\fI ...\fR
+
+
+\fBrpm\fR {\fB--checksig\fR} [\fB--nosignature\fR] [\fB--nodigest\fR]
+    \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+.PP
+The \fB--checksig\fR option checks all the digests and signatures contained in
+\fIPACKAGE_FILE\fR to ensure
+the integrity and origin of the package. Note that
+signatures are now verified whenever a package is read,
+and \fB--checksig\fR is useful to verify
+all of the digests and signatures associated with a package.
+.PP
+Digital signatures cannot be verified without a public key.
+An ascii armored public key can be added to the \fBrpm\fR database
+using \fB--import\fR. An imported public key is
+carried in a header, and key ring management is performed
+exactly like package management. For example, all currently imported
+public keys can be displayed by:
+.PP
+\fBrpm -qa gpg-pubkey*\fR
+.PP
+Details about a specific public key, when imported, can be displayed
+by querying.  Here's information about the Red Hat GPG/DSA key:
+.PP
+\fBrpm -qi gpg-pubkey-db42a60e\fR
+.PP
+Finally, public keys can be erased after importing just like
+packages. Here's how to remove the Red Hat GPG/DSA key
+.PP
+\fBrpm -e gpg-pubkey-db42a60e\fR
+.SS "SIGNING A PACKAGE"
+.PP
+
+\fBrpm\fR \fB--addsign|--resign\fR \fB\fIPACKAGE_FILE\fB\fR\fI ...\fR
+
+.PP
+Both of the \fB--addsign\fR and \fB--resign\fR
+options generate and insert new signatures for each package
+\fIPACKAGE_FILE\fR given, replacing any
+existing signatures. There are two options for historical reasons,
+there is no difference in behavior currently.
+.SS "USING GPG TO SIGN PACKAGES"
+.PP
+In order to sign packages using GPG, \fBrpm\fR
+must be configured to run GPG and be able to find a key
+ring with the appropriate keys. By default,
+\fBrpm\fR uses the same conventions as GPG
+to find key rings, namely the \fB$GNUPGHOME\fR environment
+variable.  If your key rings are not located where GPG expects
+them to be, you will need to configure the macro
+\fB%_gpg_path\fR
+to be the location of the GPG key rings to use.
+.PP
+For compatibility with older versions of GPG, PGP, and rpm,
+only V3 OpenPGP signature packets should be configured.
+Either DSA or RSA verification algorithms can be used, but DSA
+is preferred.
+.PP
+If you want to be able to sign packages you create yourself, you
+also need to create your own public and secret key pair (see the
+GPG manual). You will also need to configure the \fBrpm\fR macros
+.TP
+\fB%_signature\fR
+The signature type.  Right now only gpg and pgp are supported.
+.TP
+\fB%_gpg_name\fR
+The name of the "user" whose key you wish to use to sign your packages.
+.PP
+For example, to be able to use GPG to sign packages as the user
+\fI"John Doe <jdoe at foo.com>"\fR
+from the key rings located in \fI/etc/rpm/.gpg\fR
+using the executable \fI/usr/bin/gpg\fR you would include
+.PP
+.nf
+%_signature gpg
+%_gpg_path /etc/rpm/.gpg
+%_gpg_name John Doe <jdoe at foo.com>
+%_gpgbin /usr/bin/gpg
+.fi
+.PP
+in a macro configuration file. Use \fI/etc/rpm/macros\fR
+for per-system configuration and \fI~/.rpmmacros\fR
+for per-user configuration. 
+.SS "REBUILD DATABASE OPTIONS"
+.PP
+The general form of an rpm rebuild database command is 
+.PP
+
+\fBrpm\fR {\fB--initdb|--rebuilddb\fR} [\fB-v\fR] [\fB--dbpath \fIDIRECTORY\fB\fR] [\fB--root \fIDIRECTORY\fB\fR]
+
+.PP
+Use \fB--initdb\fR to create a new database, use
+\fB--rebuilddb\fR to rebuild the database indices from
+the installed package headers.
+.SS "SHOWRC"
+.PP
+The command
+.PP
+\fBrpm\fR \fB--showrc\fR
+.PP
+shows the values \fBrpm\fR will use for all of the
+options are currently set in
+\fIrpmrc\fR and
+\fImacros\fR
+configuration file(s).
+.SS "FTP/HTTP OPTIONS"
+.PP
+\fBrpm\fR can act as an FTP and/or HTTP client so
+that packages can be queried or installed from the internet.
+Package files for install, upgrade, and query operations may be
+specified as an
+\fBftp\fR or
+\fBhttp\fR
+style URL:  
+.PP
+ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm
+.PP
+If the \fB:PASSWORD\fR portion is omitted, the password will be
+prompted for (once per user/hostname pair). If both the user and
+password are omitted, anonymous \fBftp\fR is used.
+In all cases, passive (PASV) \fBftp\fR transfers are
+performed.
+.PP
+\fBrpm\fR allows the following options to be used with
+ftp URLs:
+.TP
+\fB--ftpproxy \fIHOST\fB\fR
+The host \fIHOST\fR will be used as a proxy server
+for all ftp transfers, which allows users to ftp through firewall
+machines which use proxy systems. This option may also be specified
+by configuring the macro \fB%_ftpproxy\fR.
+.TP
+\fB--ftpport \fIPORT\fB\fR
+The TCP \fIPORT\fR number to use for
+the ftp connection on the proxy ftp server instead of the default
+port. This option may also be specified by configuring the macro
+\fB%_ftpport\fR.
+.PP
+\fBrpm\fR allows the following options to be used with
+\fBhttp\fR URLs:
+.TP
+\fB--httpproxy \fIHOST\fB\fR
+The host \fIHOST\fR will be used as
+a proxy server for all \fBhttp\fR transfers. This
+option may also be specified by configuring the macro
+\fB%_httpproxy\fR.
+.TP
+\fB--httpport \fIPORT\fB\fR
+The TCP \fIPORT\fR number to use for the
+\fBhttp\fR connection on the proxy http server instead
+of the default port. This option may also be specified by configuring
+the macro \fB%_httpport\fR.
+.SH "LEGACY ISSUES"
+.SS "Executing rpmbuild"
+.PP
+The build modes of rpm are now resident in the
+\fI/usr/bin/rpmbuild\fR
+executable. Although legacy compatibility provided by the popt aliases
+below has been adequate, the compatibility is not perfect; hence build
+mode compatibility through popt aliases is being removed from rpm.
+Install the \fBrpmbuild\fR package, and see
+\fBrpmbuild\fR(8) for documentation of all the
+\fBrpm\fR build modes previously documented here in
+\fBrpm\fR(8).
+.PP
+Add the following lines to \fI/etc/popt\fR
+if you wish to continue invoking \fBrpmbuild\fR from
+the \fBrpm\fR command line:
+.PP
+.nf
+rpm     exec --bp               rpmb -bp
+rpm     exec --bc               rpmb -bc
+rpm     exec --bi               rpmb -bi
+rpm     exec --bl               rpmb -bl
+rpm     exec --ba               rpmb -ba
+rpm     exec --bb               rpmb -bb
+rpm     exec --bs               rpmb -bs 
+rpm     exec --tp               rpmb -tp 
+rpm     exec --tc               rpmb -tc 
+rpm     exec --ti               rpmb -ti 
+rpm     exec --tl               rpmb -tl 
+rpm     exec --ta               rpmb -ta
+rpm     exec --tb               rpmb -tb
+rpm     exec --ts               rpmb -ts 
+rpm     exec --rebuild          rpmb --rebuild
+rpm     exec --recompile        rpmb --recompile
+rpm     exec --clean            rpmb --clean
+rpm     exec --rmsource         rpmb --rmsource
+rpm     exec --rmspec           rpmb --rmspec
+rpm     exec --target           rpmb --target
+rpm     exec --short-circuit    rpmb --short-circuit
+.fi
+.SH "FILES"
+.SS "rpmrc Configuration"
+.PP
+.nf
+\fI/usr/lib/rpm/rpmrc\fR
+\fI/usr/lib/rpm/redhat/rpmrc\fR
+\fI/etc/rpmrc\fR
+\fI~/.rpmrc\fR
+.fi
+.SS "Macro Configuration"
+.PP
+.nf
+\fI/usr/lib/rpm/macros\fR
+\fI/usr/lib/rpm/redhat/macros\fR
+\fI/etc/rpm/macros\fR
+\fI~/.rpmmacros\fR
+.fi
+.SS "Database"
+.PP
+.nf
+\fI/var/lib/rpm/Basenames\fR
+\fI/var/lib/rpm/Conflictname\fR
+\fI/var/lib/rpm/Dirnames\fR
+\fI/var/lib/rpm/Filemd5s\fR
+\fI/var/lib/rpm/Group\fR
+\fI/var/lib/rpm/Installtid\fR
+\fI/var/lib/rpm/Name\fR
+\fI/var/lib/rpm/Packages\fR
+\fI/var/lib/rpm/Providename\fR
+\fI/var/lib/rpm/Provideversion\fR
+\fI/var/lib/rpm/Pubkeys\fR
+\fI/var/lib/rpm/Removed\fR
+\fI/var/lib/rpm/Requirename\fR
+\fI/var/lib/rpm/Requireversion\fR
+\fI/var/lib/rpm/Sha1header\fR
+\fI/var/lib/rpm/Sigmd5\fR
+\fI/var/lib/rpm/Triggername\fR
+.fi
+.SS "Temporary"
+.PP
+\fI/var/tmp/rpm*\fR
+.SH "SEE ALSO"
+
+.nf
+\fBpopt\fR(3),
+\fBrpm2cpio\fR(8),
+\fBrpmbuild\fR(8),
+.fi
+
+\fBhttp://www.rpm.org/ <URL:http://www.rpm.org/>
+\fR
+.SH "AUTHORS"
+
+.nf
+Marc Ewing <marc at redhat.com>
+Jeff Johnson <jbj at redhat.com>
+Erik Troan <ewt at redhat.com>
+.fi
diff --git a/raw/man8/setquota.8 b/raw/man8/setquota.8
new file mode 100644
index 0000000..5177da1
--- /dev/null
+++ b/raw/man8/setquota.8
@@ -0,0 +1,137 @@
+.TH SETQUOTA 8
+.SH NAME
+setquota \- set disk quotas
+.SH SYNOPSIS
+.B /usr/sbin/setquota
+[
+.B \-r
+]
+[
+.B \-u
+|
+.B \-g
+]
+[
+.B \-F
+.I quotaformat
+]
+.I name
+.I block-softlimit
+.I block-hardlimit
+.I inode-softlimit
+.I inode-hardlimit
+.B \-a
+|
+.I filesystem...
+.LP
+.B /usr/sbin/setquota
+[
+.B \-r
+]
+[
+.B \-u
+|
+.B \-g
+]
+[
+.B \-F
+.I quotaformat
+]
+[
+.B \-p
+.I protoname 
+]
+.I name
+.B \-a
+|
+.I filesystem...
+.LP
+.B /usr/sbin/setquota
+.B \-t
+[
+.B \-u
+|
+.B \-g
+]
+[
+.B \-F
+.I quotaformat
+]
+.I block-grace
+.I inode-grace
+.B \-a
+|
+.I filesystem...
+.SH DESCRIPTION
+.IX  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  set "disk quotas \(em \fLsetquota\fP"
+.IX  "disk quotas"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  "disk quotas"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  "quotas"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  "filesystem"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.B setquota
+is a command line quota editor.
+The filesystem, user/group name and new quotas for this
+filesystem can be specified on the command line.
+.TP
+.B -r
+Edit also remote quota use rpc.rquotad on remote server to set quota.
+.TP
+.B -F \f2quotaformat\f1
+Perform setting for specified format (ie. don't perform format autodetection).
+Possible format names are:
+.B vfsold
+(version 1 quota),
+.B vfsv0
+(version 2 quota),
+.B rpc
+(quota over NFS),
+.B xfs
+(quota on XFS filesystem)
+.TP
+.B -u
+Set user quotas for named user. This is the default.
+.TP
+.B -g
+Set group quotas for named group.
+.TP
+.B -p \f2protoname\f1
+Use quota settings of user or group
+.I protoname
+to set the quota for the named user or group.
+.TP
+.B -t
+Set grace times for users/groups. Times
+.B block-grace
+and
+.B inode-grace
+are specified in seconds.
+.TP
+.B -a
+Go through all filesystems with quota in
+.B /etc/mtab
+and perform setting.
+.PP
+To disable a quota, set the coresponding parameter to 0. To change quotas
+for several filesystems, invoke once for each filesystem.
+.PP
+Only the super-user may edit quotas.
+.SH FILES
+.PD 0
+.TP 20
+.B aquota.user or aquota.group
+quota file at the filesystem root (version 2 quota, non-XFS filesystems)
+.TP
+.B quota.user or quota.group
+quota file at the filesystem root (version 1 quota, non-XFS filesystems)
+.TP
+.B /etc/mtab
+mounted filesystem table
+.PD
+.SH SEE ALSO
+.BR edquota (8),
+.BR quota (1),
+.BR quotactl (2),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8)
diff --git a/raw/man8/setserial.8 b/raw/man8/setserial.8
new file mode 100644
index 0000000..57e4fa7
--- /dev/null
+++ b/raw/man8/setserial.8
@@ -0,0 +1,520 @@
+.\" Copyright 1992, 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.\" Portions of this text are from the README in setserial-2.01.tar.z,
+.\" but I can't figure out who wrote that document.  If anyone knows,
+.\" please tell me
+.\"
+.\" [tytso:19940519.2239EDT]  I did... - Ted Ts'o (tytso at mit.edu)
+.\"
+.TH SETSERIAL 8 "January 2000" "Setserial 2.17
+.SH NAME
+setserial \- get/set Linux serial port information
+.SH SYNOPSIS
+.B setserial
+.B "[ \-abqvVWz ]"
+device
+.BR "[ " parameter1 " [ " arg " ] ] ..."
+
+.B "setserial -g"
+.B "[ \-abGv ]"
+device1 ...
+.SH DESCRIPTION
+.B setserial
+is a program designed to set and/or report the configuration information
+associated with a serial port.  This information includes what I/O
+port and IRQ a particular serial port is using, and whether or not the
+break key should be interpreted as the Secure Attention Key, and so
+on.
+
+During the normal bootup process, only COM ports 1-4 are initialized,
+using the default I/O ports and IRQ values, as listed below.  In order
+to initialize any additional serial ports, or to change the COM 1-4
+ports to a nonstadard configuration, the
+.B setserial 
+program should be used.  Typically it is called from an
+.I rc.serial
+script, which is usually run out of 
+.IR /etc/rc.local .
+
+The
+.I device
+argument or arguments specifies the serial device which should be configured or
+interrogated.  It will usually have the following form:
+.BR /dev/cua[0-3] .
+
+If no parameters are specified,
+.B setserial
+will print out the port type (i.e., 8250, 16450, 16550, 16550A, etc.), the
+hardware I/O port, the hardware IRQ line, its "baud base," and some of
+its operational flags.
+
+If the
+.B \-g
+option is given, the arguments to setserial are interpreted as a list
+of devices for which the characteristics of those devices should be
+printed.  
+
+Without the 
+.B \-g
+option, the first argument to setserial is interpreted as the device
+to be modified or characteristics to be printed, and any additional
+arguments are interpreted as parameters which should be assigned
+to that serial device.
+
+For the most part, superuser privilege is required to set the
+configuration parameters of a serial port.  A few serial port parameters
+can be set by normal users, however, and these will be noted as
+exceptions in this manual page.
+
+.SH OPTIONS
+.B Setserial
+accepts the following options:
+
+.TP
+.B \-a
+When reporting the configuration of a serial device, print all
+available information.
+.TP
+.B \-b
+When reporting the configuration of a serial device, print a summary
+of the device's configuration, which might be suitable for printing
+during the bootup process, during the /etc/rc script.
+.TP
+.B \-G
+Print out the configuration information of the serial port in a form which
+can be fed back to setserial as command-line arguments.
+.TP
+.B \-q
+Be quiet.  
+.B Setserial
+will print fewer lines of output.
+.TP
+.B \-v
+Be verbose.
+.B Setserial
+will print additional status output.
+.TP
+.B \-V
+Display version and exit.
+.TP
+.B \-W
+Do wild interrupt initialization and exit.  This option is no longer 
+relevant in Linux kernels after version 2.1.
+.TP
+.B \-z
+Zero out the serial flags before starting to set flags.  This is related
+to the automatic saving of serial flags using the \-G flag.
+
+.SH PARAMETERS
+The following parameters can be assigned to a serial port.
+
+All argument values are assumed to be in decimal unless preceeded by "0x".
+
+.TP
+.BR port " port_number"
+The
+.B port
+option sets the I/O port, as described above.
+.TP
+.BR irq " irq_number"
+The
+.B irq
+option sets the hardware IRQ, as described above.
+.TP
+.BR uart " uart_type"
+This option is used to set the UART type.  The permitted types are
+.BR none ,
+8250, 16450, 16550, 16550A, 16650, 16650V2, 16654, 16750, 16850, 16950, and
+16954.
+Using UART type
+.B none
+will disable the port.
+
+Some internal modems are billed as having a "16550A UART with a 1k
+buffer".  This is a lie.  They do not have really have a 16550A
+compatible UART; instead what they have is a 16450 compatible UART
+with a 1k receive buffer to prevent receiver overruns.  This is
+important, because they do not have a transmit FIFO.  Hence, they are
+not compatible with a 16550A UART, and the autoconfiguration process
+will correctly identify them as 16450's.  If you attempt to override
+this using the 
+.B uart
+parameter, you will see dropped characters during file transmissions.
+These UART's usually have other problems: the
+.B skip_test
+parameter also often must be specified.
+.TP
+.B autoconfig
+When this parameter is given, 
+.B setserial
+will ask the kernel to attempt to automatically configure the serial
+port.  The I/O port must be correctly set; the kernel will attempt to
+determine the UART type, and if the
+.B auto_irq 
+parameter is set, Linux will attempt to automatically determine the
+IRQ.  The
+.B autoconfig
+parameter should be given after the
+.BR port , auto_irq ", and " skip_test
+parameters have been specified.
+.TP
+.B auto_irq
+During autoconfiguration, try to determine the IRQ.  This feature is
+not guaranteed to always produce the correct result; some hardware
+configurations will fool the Linux kernel.  It is generally safer not
+to use the 
+.B auto_irq
+feature, but rather to specify the IRQ to be used explicitly, using
+the
+.B irq 
+parameter.
+.TP
+.B ^auto_irq
+During autoconfiguration, do
+.I not
+try to determine the IRQ.
+.TP
+.B skip_test
+During autoconfiguration, skip the UART test.  Some internal modems do
+not have National Semiconductor compatible UART's, but have cheap
+imitations instead.  Some of these cheasy imitations UART's do not
+fully support the loopback detection mode, which is used by the kernel
+to make sure there really is a UART at a particular address before
+attempting to configure it.  So for certain internal modems you will
+need to specify this parameter so Linux can initialize the UART
+correctly.
+.TP
+.B ^skip_test
+During autoconfiguration, do
+.I not
+skip the UART test.
+.TP
+.BR baud_base " baud_base"
+This option sets the base baud rate, which is the clock frequency divided
+by 16.  Normally this value is 115200, which is also the fastest baud
+rate which the UART can support. 
+.TP
+.B
+spd_hi
+Use 57.6kb when the application requests 38.4kb.  
+This parameter may be specified by a non-privileged user.
+.TP
+.B spd_vhi
+Use 115kb when the application requests 38.4kb.
+This parameter may be specified by a non-privileged user.
+.TP
+.B spd_shi
+Use 230kb when the application requests 38.4kb.
+This parameter may be specified by a non-privileged user.
+.TP
+.B spd_warp
+Use 460kb when the application requests 38.4kb.
+This parameter may be specified by a non-privileged user.
+.TP
+.B spd_cust
+Use the custom divisor to set the speed when the application requests
+38.4kb.  In this case, the baud rate is the
+.B baud_base
+divided by the
+.BR divisor .
+This parameter may be specified by a non-privileged user.
+.TP
+.B spd_normal
+Use 38.4kb when the application requests 38.4kb.
+This parameter may be specified by a non-privileged user.
+.TP
+.BR divisor " divisor"
+This option sets the custom divison.  This divisor will be used then the
+.B spd_cust
+option is selected and the serial port is set to 38.4kb by the
+application.
+This parameter may be specified by a non-privileged user.
+.TP
+.B sak
+Set the break key at the Secure Attention Key.
+.TP
+.B ^sak
+disable the Secure Attention Key.
+.TP
+.B fourport
+Configure the port as an AST Fourport card.
+.TP
+.B ^fourport
+Disable AST Fourport configuration.
+.TP
+.BR close_delay " delay"
+Specify the amount of time, in hundredths of a second, that DTR should
+remain low on a serial line after the callout device is closed, before
+the blocked dialin device raises DTR again.  The default value of this
+option is 50, or a half-second delay.
+.TP
+.BR closing_wait " delay"
+Specify the amount of time, in hundredths of a second, that the kernel
+should wait for data to be transmitted from the serial port while
+closing the port.  If "none" is
+specified, no delay will occur. If "infinite" is specified the kernel 
+will wait indefinitely  for the buffered data to be transmitted.  
+The default setting is 3000 or 30 seconds of delay.  
+This default is generally appropriate for most devices.  If too long 
+a delay is selected, then
+the serial port may hang for a long time if when a serial port which
+is not connected, and has data pending, is closed.  If too short a
+delay is selected, then there is a risk that some of the transmitted
+data is output at all.  If the device is extremely slow, like a plotter, 
+the closing_wait may need to be larger.  
+.TP
+.B session_lockout
+Lock out callout port (/dev/cuaXX) accesses across different sessions.
+That is, once a process has opened a port, do not allow a process with
+a different session ID to open that port until the first process has
+closed it.
+.TP
+.B ^session_lockout
+Do not lock out callout port accesses across different sessions.
+.TP
+.B pgrp_lockout
+Lock out callout port (/dev/cuaXX) accesses across different process groups.
+That is, once a process has opened a port, do not allow a process in a
+different process group to open that port until the first process has
+closed it.
+.TP
+.B ^pgrp_lockout
+Do not lock out callout port accesses across different process groups.
+.TP
+.B hup_notify
+Notify a process blocked on opening a dial in line when a process has
+finished using a callout line (either by closing it or by the serial
+line being hung up) by returning EAGAIN to the open.  
+
+The application of this parameter is for getty's which are blocked on
+a serial port's dial in line.  This allows the getty to reset the
+modem (which may have had its configuration modified by the
+application using the callout device) before blocking on the open again.
+.TP
+.B ^hup_notify
+Do not notify a process blocked on opening a dial in line when the
+callout device is hung up.
+.TP
+.B split_termios
+Treat the termios settings used by the callout device and the termios
+settings used by the dialin devices as separate.  
+.TP
+.B ^split_termios
+Use the same termios structure to store both the dialin and callout
+ports.  This is the default option.
+.TP
+.B callout_nohup
+If this particular serial port is opened as a callout device, do not
+hangup the tty when carrier detect is dropped.
+.TP
+.B ^callout_nohup
+Do not skip hanging up the tty when a serial port is opened as a
+callout device.  Of course, the HUPCL termios flag must be enabled if
+the hangup is to occur.
+.TP
+.B low_latency
+Minimize the receive latency of the serial device at the cost of
+greater CPU utilization.  (Normally there is an average of 5-10ms
+latency before characters are handed off to the line discpline to
+minimize overhead.)  This is off by default, but certain real-time
+applications may find this useful.
+.TP
+.B ^low_latency
+Optimize for efficient CPU processing of serial characters at the cost of 
+paying an average of 5-10ms of latency before the characters are processed.
+This is the default.
+.SH CONSIDERATIONS OF CONFIGURING SERIAL PORTS
+It is important to note that setserial merely tells the Linux kernel
+where it should expect to find the I/O port and IRQ lines of a
+particular serial port.  It does *not* configure the hardware, the
+actual serial board, to use a particular I/O port.  In order to do
+that, you will need to physically program the serial board, usually by
+setting some jumpers or by switching some DIP switches.
+
+This section will provide some pointers in helping you decide how you
+would like to configure your serial ports.
+
+The "standard MS-DOS" port associations are given below:
+
+.nf
+.RS
+/dev/ttys0 (COM1), port 0x3f8, irq 4
+/dev/ttys1 (COM2), port 0x2f8, irq 3
+/dev/ttys2 (COM3), port 0x3e8, irq 4
+/dev/ttys3 (COM4), port 0x2e8, irq 3
+.RE
+.fi
+
+Due to the limitations in the design of the AT/ISA bus architecture,
+normally an IRQ line may not be shared between two or more serial
+ports.  If you attempt to do this, one or both serial ports will
+become unreliable if you try to use both simultaneously.  This
+limitation can be overcome by special multi-port serial port boards,
+which are designed to share multiple serial ports over a single IRQ
+line.  Multi-port serial cards supported by Linux include the AST
+FourPort, the Accent Async board, the Usenet Serial II board, the
+Bocaboard BB-1004, BB-1008, and BB-2016 boards, and the HUB-6 serial
+board.
+
+The selection of an alternative IRQ line
+is difficult, since most of them are already used.  The following table
+lists the "standard MS-DOS" assignments of available IRQ lines:
+
+.nf
+.RS
+IRQ 3: COM2
+IRQ 4: COM1
+IRQ 5: LPT2
+IRQ 7: LPT1
+.RE
+.fi
+
+Most people find that IRQ 5 is a good choice, assuming that there is
+only one parallel port active in the computer.  Another good choice is
+IRQ 2 (aka IRQ 9); although this IRQ is sometimes used by network
+cards, and very rarely VGA cards will be configured to use IRQ 2 as a
+vertical retrace interrupt.  If your VGA card is configured this way;
+try to disable it so you can reclaim that IRQ line for some other
+card.  It's not necessary for Linux and most other Operating systems.
+
+The only other available IRQ lines are 3, 4, and 7, and these are
+probably used by the other serial and parallel ports.  (If your serial
+card has a 16bit card edge connector, and supports higher interrupt
+numbers, then IRQ 10, 11, 12, and 15 are also available.)
+
+On AT class machines, IRQ 2 is seen as IRQ 9, and Linux will interpret it
+in this manner.
+
+IRQ's other than 2 (9), 3, 4, 5, 7, 10, 11, 12, and 15, should
+.I not
+be used, since they are assigned to other hardware and cannot, in general,
+be changed.  Here are the "standard" assignments:
+
+.nf
+.RS
+IRQ  0      Timer channel 0
+IRQ  1      Keyboard
+IRQ  2      Cascade for controller 2
+IRQ  3      Serial port 2
+IRQ  4      Serial port 1
+IRQ  5      Parallel port 2 (Reserved in PS/2)
+IRQ  6      Floppy diskette
+IRQ  7      Parallel port 1
+IRQ  8      Real-time clock
+IRQ  9      Redirected to IRQ2
+IRQ 10      Reserved
+IRQ 11      Reserved
+IRQ 12      Reserved (Auxillary device in PS/2)
+IRQ 13      Math coprocessor
+IRQ 14      Hard disk controller
+IRQ 15      Reserved
+.RE
+.fi
+
+.SH MULTIPORT CONFIGURATION
+
+Certain multiport serial boards which share multiple ports on a single
+IRQ use one or more ports to indicate whether or not there are any
+pending ports which need to be serviced.  If your multiport board
+supports these ports, you should make use of them to avoid potential
+lockups if the interrupt gets lost.
+
+In order to set these ports specify
+.B set_multiport
+as a parameter, and follow it with the multiport parameters.  The
+multiport parameters take the form of specifying the 
+.I port
+that should be checked, a 
+.I mask
+which indicate which bits in the register are significant, and finally, a
+.I match
+parameter which specifies what the significant bits in that register must 
+match when there is no more pending work to be done.
+
+Up to four such port/mask/match combinations may be specified.  The
+first such combinations should be specified by setting the parameters
+.BR port1 ,
+.BR mask1 ,
+and
+.BR match1 .
+The second such combination should be specified with
+.BR port2 ,
+.BR mask2 ,
+and
+.BR match2 ,
+and so on.  In order to disable this multiport checking, set 
+.B port1
+to be zero.
+
+In order to view the current multiport settings, specify the parameter
+.B get_multiport
+on the command line.
+
+Here are some multiport settings for some common serial boards:
+
+.nf
+.RS
+AST FourPort    port1 0x1BF mask1 0xf match1 0xf
+
+Boca BB-1004/8  port1 0x107 mask1 0xff match1 0
+
+Boca BB-2016    port1 0x107 mask1 0xff match1 0 
+                port2 0x147 mask2 0xff match2 0
+.RE
+.fi
+
+.SH Hayes ESP Configuration
+.B Setserial
+may also be used to configure ports on a Hayes ESP serial board.
+.PP
+The following parameters when configuring ESP ports:
+.TP
+.B rx_trigger
+This is the trigger level (in bytes) of the receive FIFO. Larger
+values may result in fewer interrupts and hence better performance;
+however, a value too high could result in data loss. Valid values
+are 1 through 1023.
+.TP
+.B tx_trigger
+This is the trigger level (in bytes) of the transmit FIFO. Larger
+values may result in fewer interrupts and hence better performance;
+however, a value too high could result in degraded transmit
+performance. Valid values are 1 through 1023.
+.TP
+.B flow_off
+This is the level (in bytes) at which the ESP port will "flow off"
+the remote transmitter (i.e. tell him to stop stop sending more
+bytes).  Valid values are 1 through 1023.  This value should be
+greater than the receive trigger level and the flow on level.
+.TP
+.B flow_on
+This is the level (in bytes) at which the ESP port will "flow on"
+the remote transmitter (i.e. tell him to resume sending bytes) after
+having flowed it off.  Valid values are 1 through 1023.  This value
+should be less than the flow off level, but greater than the receive
+trigger level.
+.TP 
+.B rx_timeout
+This is the amount of time that the ESP port will wait after
+receiving the final character before signaling an interrupt.  Valid
+values are 0 through 255.  A value too high will increase latency,
+and a value too low will cause unnecessary interrupts.
+
+.SH CAUTION
+CAUTION: Configuring a serial port to use an incorrect I/O port 
+can lock up your machine.
+.SH FILES
+.BR /etc/rc.local
+.BR /etc/rc.serial
+.SH "SEE ALSO"
+.BR tty (4),
+.BR ttys (4),
+kernel/chr_drv/serial.c
+.SH AUTHOR
+The original version of setserial was written by Rick Sladkey
+(jrs at world.std.com), and was modified by Michael K. Johnson
+(johnsonm at stolaf.edu).
+
+This version has since been rewritten from scratch by Theodore Ts'o
+(tytso at mit.edu) on 1/1/93.  Any bugs or problems are solely his
+responsibility.
diff --git a/raw/man8/showmount.8 b/raw/man8/showmount.8
new file mode 100644
index 0000000..63342c7
--- /dev/null
+++ b/raw/man8/showmount.8
@@ -0,0 +1,58 @@
+.\" Copyright 1993 Rick Sladkey <jrs at world.std.com>
+.\" May be distributed under the GNU General Public License
+.TH SHOWMOUNT 8 "6 October 1993"
+.SH NAME
+showmount \- show mount information for an NFS server
+.SH SYNOPSIS
+.B /usr/sbin/showmount
+.B "[\ \-adehv\ ]"
+.B "[\ \-\-all\ ]"
+.B "[\ \-\-directories\ ]"
+.B "[\ \-\-exports\ ]"
+.B "[\ \-\-help\ ]"
+.B "[\ \-\-version\ ]"
+.B "[\ host\ ]"
+.SH DESCRIPTION
+.B showmount
+queries the mount daemon on a remote host for information about
+the state of the NFS server on that machine.  With no options
+.B showmount
+lists the set of clients who are mounting from that host.
+The output from
+.B showmount
+is designed to
+appear as though it were processesed through ``sort -u''.
+.SH OPTIONS
+.TP
+.BR \-a " or " \-\-all
+List both the client hostname and mounted directory in
+host:dir format.
+.TP
+.BR \-d " or " \-\-directories
+List only the directories mounted by some client.
+.TP
+.BR \-e " or " \-\-exports
+Show the NFS server's export list.
+.TP
+.BR \-h " or " \-\-help
+Provide a short help summary.
+.TP
+.BR \-v " or " \-\-version
+Report the current version number of the program.
+.TP
+.B \-\-no\-headers
+Suppress the descriptive headings from the output.
+.SH "SEE ALSO"
+.BR rpc.mountd (8),
+.BR rpc.nfsd (8)
+.SH BUGS
+The completeness and accurary of the information that
+.B showmount
+displays varies according to the NFS server's implementation.
+.P
+Because
+.B showmount
+sorts and uniqs the output, it is impossible to determine from
+the output whether a client is mounting the same directory more than once.
+.SH AUTHOR
+Rick Sladkey <jrs at world.std.com>
diff --git a/raw/man8/shutdown.8 b/raw/man8/shutdown.8
new file mode 100644
index 0000000..a29326b
--- /dev/null
+++ b/raw/man8/shutdown.8
@@ -0,0 +1,179 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH SHUTDOWN 8 "Juli 31, 2001" "" "Linux System Administrator's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+shutdown \- bring the system down
+.\"}}}
+.\"{{{  Synopsis
+.SH SYNOPSIS
+.B /sbin/shutdown
+.RB [ \-t
+.IR sec ]
+.RB [ \-arkhncfF ]
+.I time
+.RI [ warning-message ]
+.\"}}}
+.\"{{{  Description
+.SH DESCRIPTION
+\fBshutdown\fP brings the system down in a secure way.  All logged-in users are
+notified that the system is going down, and \fBlogin\fP(1) is blocked.
+It is possible to shut the system down immediately or after a specified delay.
+All processes are first notified that the system is going down by the
+signal \s-2SIGTERM\s0.  This gives programs like \fBvi\fP(1)
+the time to save the file being edited, 
+mail and news processing programs a chance to exit cleanly, etc. 
+\fBshutdown\fP does its job by signalling the \fBinit\fP process, 
+asking it to change the runlevel.
+Runlevel \fB0\fP is used to halt the system, runlevel \fB6\fP is used
+to reboot the system, and runlevel \fB1\fP is used to put to system into
+a state where administrative tasks can be performed; this is the default
+if neither the \fI-h\fP or \fI-r\fP flag is given to \fBshutdown\fP.
+To see which actions are taken on halt or reboot see the appropriate
+entries for these runlevels in the file \fI/etc/inittab\fP.
+.\"}}}
+.\"{{{  Options
+.SH OPTIONS
+.\"{{{  -a
+.IP "\fB\-a\fP
+Use \fB/etc/shutdown.allow\fP.
+.\"}}}
+.\"{{{  -t sec
+.IP "\fB\-t\fP \fIsec\fP"
+Tell \fBinit\fP(8) to wait \fIsec\fP seconds between sending processes the 
+warning and the kill signal, before changing to another runlevel.
+.\"}}}
+.\"{{{  -k
+.IP \fB\-k\fP
+Don't really shutdown; only send the warning messages to everybody.
+.\"}}}
+.\"{{{  -r
+.IP \fB\-r\fP
+Reboot after shutdown.
+.\"}}}
+.\"{{{  -h
+.IP \fB\-h\fP
+Halt after shutdown.
+.\"}}}
+.\"{{{  -n
+.IP \fB\-n\fP
+[DEPRECATED] Don't call \fBinit\fP(8) to do the shutdown but do it ourself.
+The use of this option is discouraged, and its results are not always what
+you'd expect.
+.\"}}}
+.\"{{{  -f
+.IP \fB\-f\fP
+Skip fsck on reboot.
+.\"}}}
+.\"{{{  -F
+.IP \fB\-F\fP
+Force fsck on reboot.
+.\"}}}
+.\"{{{  -c
+.IP \fB\-c\fP
+Cancel an already running shutdown. With this option it is of course
+not possible to give the \fBtime\fP argument, but you can enter a
+explanatory message on the command line that will be sent to all users.
+.\"}}}
+.\"{{{  time
+.IP \fItime\fP
+When to shutdown.
+.\"}}}
+.\"{{{  warning-message
+.IP \fIwarning-message\fP
+Message to send to all users.
+.\"}}}
+.PP
+The \fItime\fP argument can have different formats.  First, it can be an
+absolute time in the format \fIhh:mm\fP, in which \fIhh\fP is the hour
+(1 or 2 digits) and \fImm\fP is the minute of the hour (in two digits).
+Second, it can be in the format \fB+\fP\fIm\fP, in which \fIm\fP is the
+number of minutes to wait.  The word \fBnow\fP is an alias for \fB+0\fP.
+.PP
+If shutdown is called with a delay, it creates the advisory file
+.I /etc/nologin
+which causes programs such as \fIlogin(1)\fP to not allow new user
+logins. Shutdown removes this file if it is stopped before it
+can signal init (i.e. it is cancelled or something goes wrong).
+It also removes it before calling init to change the runlevel.
+.PP
+The \fB\-f\fP flag means `reboot fast'.  This only creates an advisory
+file \fI/fastboot\fP which can be tested by the system when it comes
+up again.  The boot rc file can test if this file is present, and decide not 
+to run \fBfsck\fP(1) since the system has been shut down in the proper way.  
+After that, the boot process should remove \fI/fastboot\fP.
+.PP
+The \fB\-F\fP flag means `force fsck'.  This only creates an advisory
+file \fI/forcefsck\fP which can be tested by the system when it comes
+up again.  The boot rc file can test if this file is present, and decide
+to run \fBfsck\fP(1) with a special `force' flag so that even properly
+unmounted filesystems get checked.
+After that, the boot process should remove \fI/forcefsck\fP.
+.PP
+The \fB-n\fP flag causes \fBshutdown\fP not to call \fBinit\fP, 
+but to kill all running processes itself. 
+\fBshutdown\fP will then turn off quota, accounting, and swapping
+and unmount all filesystems.
+.\"}}}
+.\"{{{  Files
+.SH ACCESS CONTROL
+\fBshutdown\fP can be called from \fBinit\fP(8) when the magic keys
+\fBCTRL-ALT-DEL\fP are pressed, by creating an appropriate entry in
+\fI/etc/inittab\fP. This means that everyone who has physical access
+to the console keyboard can shut the system down. To prevent this,
+\fBshutdown\fP can check to see if an authorized user is logged in on
+one of the virtual consoles. If \fBshutdown\fP is called with the \fB-a\fP
+argument (add this to the invocation of shutdown in /etc/inittab),
+it checks to see if the file \fI/etc/shutdown.allow\fP is present.
+It then compares the login names in that file with the list of people
+that are logged in on a virtual console (from \fI/var/run/utmp\fP). Only
+if one of those authorized users \fBor root\fP is logged in, it will
+proceed. Otherwise it will write the message
+.sp 1
+.nf
+\fBshutdown: no authorized users logged in\fP
+.fi
+.sp 1
+to the (physical) system console. The format of \fI/etc/shutdown.allow\fP
+is one user name per line. Empty lines and comment lines (prefixed by a
+\fB#\fP) are allowed. Currently there is a limit of 32 users in this file.
+.sp 1
+Note that if \fI/etc/shutdown.allow\fP is not present, the \fB-a\fP
+argument is ignored.
+.SH FILES
+.nf
+/fastboot
+/etc/inittab
+/etc/init.d/halt
+/etc/init.d/reboot
+/etc/shutdown.allow
+.fi
+.\"}}}
+.SH NOTES
+A lot of users forget to give the \fItime\fP argument
+and are then puzzled by the error message \fBshutdown\fP produces. The
+\fItime\fP argument is mandatory; in 90 percent of all cases this argument
+will be the word \fBnow\fP.
+.PP
+Init can only capture CTRL-ALT-DEL and start shutdown in console mode.
+If the system is running the X window System, the X server processes
+all key strokes. Some X11 environments make it possible to capture
+CTRL-ALT-DEL, but what exactly is done with that event depends on
+that environment.
+.PP
+Shutdown wasn't designed to be run setuid. /etc/shutdown.allow is
+not used to find out who is executing shutdown, it ONLY checks who
+is currently logged in on (one of the) console(s).
+.\"{{{  Author
+.SH AUTHOR
+Miquel van Smoorenburg, miquels at cistron.nl
+.\"}}}
+.\"{{{  See also
+.SH "SEE ALSO"
+.BR fsck (8),
+.BR init (8),
+.BR halt (8),
+.BR poweroff (8),
+.BR reboot (8)
+.\"}}}
diff --git a/raw/man8/smbd.8 b/raw/man8/smbd.8
new file mode 100644
index 0000000..1c2c75b
--- /dev/null
+++ b/raw/man8/smbd.8
@@ -0,0 +1,230 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBD" 8 "" "" ""
+.SH NAME
+smbd \- server to provide SMB/CIFS services to clients
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbd\fR [-D] [-F] [-S] [-i] [-h] [-V] [-b] [-d <debug level>] [-l <log directory>]
+     [-p <port number>] [-O <socket option>] [-s <configuration file>]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This program is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+\fBsmbd\fR is the server daemon that provides filesharing and printing services to Windows clients\&. The server provides filespace and printer services to clients using the SMB (or CIFS) protocol\&. This is compatible with the LanManager protocol, and can service LanManager clients\&. These include MSCLIENT 3\&.0 for DOS, Windows for Workgroups, Windows 95/98/ME, Windows NT, Windows 2000, OS/2, DAVE for Macintosh, and smbfs for Linux\&.
+
+.PP
+An extensive description of the services that the server can provide is given in the man page for the configuration file controlling the attributes of those services (see \fBsmb.conf\fR(5)\&. This man page will not describe the services, but will concentrate on the administrative aspects of running the server\&.
+
+.PP
+Please note that there are significant security implications to running this server, and the \fBsmb.conf\fR(5) manual page should be regarded as mandatory reading before proceeding with installation\&.
+
+.PP
+A session is created whenever a client requests one\&. Each client gets a copy of the server for each session\&. This copy then services all connections made by the client during that session\&. When all connections from its client are closed, the copy of the server for that client terminates\&.
+
+.PP
+The configuration file, and any files that it includes, are automatically reloaded every minute, if they change\&. You can force a reload by sending a SIGHUP to the server\&. Reloading the configuration file will not affect connections to any service that is already established\&. Either the user will have to disconnect from the service, or \fBsmbd\fR killed and restarted\&.
+
+.SH "OPTIONS"
+
+.TP
+-D
+If specified, this parameter causes the server to operate as a daemon\&. That is, it detaches itself and runs in the background, fielding requests on the appropriate port\&. Operating the server as a daemon is the recommended way of running \fBsmbd\fR for servers that provide more than casual use file and print services\&. This switch is assumed if \fBsmbd \fR is executed on the command line of a shell\&.
+
+
+.TP
+-F
+If specified, this parameter causes the main \fBsmbd\fR process to not daemonize, i\&.e\&. double-fork and disassociate with the terminal\&. Child processes are still created as normal to service each connection request, but the main process does not exit\&. This operation mode is suitable for running \fBsmbd\fR under process supervisors such as \fBsupervise\fR and \fBsvscan\fR from Daniel J\&. Bernstein's \fBdaemontools\fR package, or the AIX process monitor\&.
+
+
+.TP
+-S
+If specified, this parameter causes \fBsmbd\fR to log to standard output rather than a file\&.
+
+
+.TP
+-i
+If this parameter is specified it causes the server to run "interactively", not as a daemon, even if the server is executed on the command line of a shell\&. Setting this parameter negates the implicit deamon mode when run from the command line\&. \fBsmbd\fR also logs to standard output, as if the \fB-S\fR parameter had been given\&.
+
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR is an integer from 0 to 10\&. The default value if this parameter is not specified is zero\&.
+
+
+The higher this value, the more detail will be logged to the log files about the activities of the server\&. At level 0, only critical errors and serious warnings will be logged\&. Level 1 is a reasonable level for day-to-day running - it generates a small amount of information about operations carried out\&.
+
+
+Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem\&. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic\&.
+
+
+Note that specifying this parameter here will override the \fIlog level\fR parameter in the \fIsmb\&.conf\fR file\&.
+
+
+.TP
+-l|--logfile=logbasename
+File name for log/debug files\&. The extension \fB"\&.client"\fR will be appended\&. The log file is never removed by the client\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-b
+Prints information about how Samba was built\&.
+
+
+.TP
+-l <log directory>
+If specified, \fIlog directory\fR specifies a log directory into which the "log\&.smbd" log file will be created for informational and debug messages from the running server\&. The log file generated is never removed by the server although its size may be controlled by the \fImax log size\fR option in the \fBsmb.conf\fR(5) file\&. \fBBeware:\fR If the directory specified does not exist, \fBsmbd\fR will log to the default debug log location defined at compile time\&.
+
+
+The default log directory is specified at compile time\&.
+
+
+.TP
+-p <port number>
+\fIport number\fR is a positive integer value\&. The default value if this parameter is not specified is 139\&.
+
+
+This number is the port number that will be used when making connections to the server from client software\&. The standard (well-known) port number for the SMB over TCP is 139, hence the default\&. If you wish to run the server as an ordinary user rather than as root, most systems will require you to use a port number greater than 1024 - ask your system administrator for help if you are in this situation\&.
+
+
+In order for the server to be useful by most clients, should you configure it on a port other than 139, you will require port redirection services on port 139, details of which are outlined in rfc1002\&.txt section 4\&.3\&.5\&.
+
+
+This parameter is not normally specified except in the above situation\&.
+
+
+.SH "FILES"
+
+.TP
+\fI/etc/inetd\&.conf\fR
+If the server is to be run by the \fBinetd\fR meta-daemon, this file must contain suitable startup information for the meta-daemon\&.
+
+
+.TP
+\fI/etc/rc\fR
+or whatever initialization script your system uses)\&.
+
+
+If running the server as a daemon at startup, this file will need to contain an appropriate startup sequence for the server\&.
+
+
+.TP
+\fI/etc/services\fR
+If running the server via the meta-daemon \fBinetd\fR, this file must contain a mapping of service name (e\&.g\&., netbios-ssn) to service port (e\&.g\&., 139) and protocol type (e\&.g\&., tcp)\&.
+
+
+.TP
+\fI/usr/local/samba/lib/smb\&.conf\fR
+This is the default location of the \fBsmb.conf\fR(5) server configuration file\&. Other common places that systems install this file are \fI/usr/samba/lib/smb\&.conf\fR and \fI/etc/samba/smb\&.conf\fR\&.
+
+
+This file describes all the services the server is to make available to clients\&. See \fBsmb.conf\fR(5) for more information\&.
+
+
+.SH "LIMITATIONS"
+
+.PP
+On some systems \fBsmbd\fR cannot change uid back to root after a setuid() call\&. Such systems are called trapdoor uid systems\&. If you have such a system, you will be unable to connect from a client (such as a PC) as two different users at once\&. Attempts to connect the second user will result in access denied or similar\&.
+
+.SH "ENVIRONMENT VARIABLES"
+
+.TP
+\fBPRINTER\fR
+If no printer name is specified to printable services, most systems will use the value of this variable (or \fBlp\fR if this variable is not defined) as the name of the printer to use\&. This is not specific to the server, however\&.
+
+
+.SH "PAM INTERACTION"
+
+.PP
+Samba uses PAM for authentication (when presented with a plaintext password), for account checking (is this account disabled?) and for session management\&. The degree too which samba supports PAM is restricted by the limitations of the SMB protocol and the \fIobey pam restrictions\fR  \fBsmb.conf\fR(5) paramater\&. When this is set, the following restrictions apply:
+
+.TP 3
+\(bu
+\fBAccount Validation\fR: All accesses to a samba server are checked against PAM to see if the account is vaild, not disabled and is permitted to login at this time\&. This also applies to encrypted logins\&.
+
+.TP
+\(bu
+\fBSession Management\fR: When not using share level secuirty, users must pass PAM's session checks before access is granted\&. Note however, that this is bypassed in share level secuirty\&. Note also that some older pam configuration files may need a line added for session support\&.
+
+.LP
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "DIAGNOSTICS"
+
+.PP
+Most diagnostics issued by the server are logged in a specified log file\&. The log file name is specified at compile time, but may be overridden on the command line\&.
+
+.PP
+The number and nature of diagnostics available depends on the debug level used by the server\&. If you have problems, set the debug level to 3 and peruse the log files\&.
+
+.PP
+Most messages are reasonably self-explanatory\&. Unfortunately, at the time this man page was created, there are too many diagnostics available in the source code to warrant describing each and every diagnostic\&. At this stage your best bet is still to grep the source code and inspect the conditions that gave rise to the diagnostics you are seeing\&.
+
+.SH "SIGNALS"
+
+.PP
+Sending the \fBsmbd\fR a SIGHUP will cause it to reload its \fIsmb\&.conf\fR configuration file within a short period of time\&.
+
+.PP
+To shut down a user's \fBsmbd\fR process it is recommended that \fBSIGKILL (-9)\fR  \fBNOT\fR be used, except as a last resort, as this may leave the shared memory area in an inconsistent state\&. The safe way to terminate an \fBsmbd\fR is to send it a SIGTERM (-15) signal and wait for it to die on its own\&.
+
+.PP
+The debug log level of \fBsmbd\fR may be raised or lowered using \fBsmbcontrol\fR(1) program (SIGUSR[1|2] signals are no longer used since Samba 2\&.2)\&. This is to allow transient problems to be diagnosed, whilst still running at a normally low log level\&.
+
+.PP
+Note that as the signal handlers send a debug write, they are not re-entrant in \fBsmbd\fR\&. This you should wait until\fBsmbd\fR is in a state of waiting for an incoming SMB before issuing them\&. It is possible to make the signal handlers safe by un-blocking the signals before the select call and re-blocking them after, however this would affect performance\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBhosts_access\fR(5), \fBinetd\fR(8), \fBnmbd\fR(8), \fBsmb.conf\fR(5), \fBsmbclient\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1), and the Internet RFC's\fIrfc1001\&.txt\fR, \fIrfc1002\&.txt\fR\&. In addition the CIFS (formerly SMB) specification is available as a link from the Web page http://samba\&.org/cifs/\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/smbmnt.8 b/raw/man8/smbmnt.8
new file mode 100644
index 0000000..45515c5
--- /dev/null
+++ b/raw/man8/smbmnt.8
@@ -0,0 +1,91 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBMNT" 8 "" "" ""
+.SH NAME
+smbmnt \- helper utility for mounting SMB filesystems
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbmnt\fR {mount-point} [-s <share>] [-r] [-u <uid>] [-g <gid>] [-f <mask>] [-d <mask>] [-o <options>] [-h]
+      
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+\fBsmbmnt\fR is a helper application used by the smbmount program to do the actual mounting of SMB shares\&.\fBsmbmnt\fR can be installed setuid root if you want normal users to be able to mount their SMB shares\&.
+
+.PP
+A setuid smbmnt will only allow mounts on directories owned by the user, and that the user has write permission on\&.
+
+.PP
+The \fBsmbmnt\fR program is normally invoked by \fBsmbmount\fR(8)\&. It should not be invoked directly by users\&.
+
+.PP
+smbmount searches the normal PATH for smbmnt\&. You must ensure that the smbmnt version in your path matches the smbmount used\&.
+
+.SH "OPTIONS"
+
+.TP
+-r
+mount the filesystem read-only
+
+
+.TP
+-u uid
+specify the uid that the files will be owned by
+
+
+.TP
+-g gid
+specify the gid that the files will be owned by
+
+
+.TP
+-f mask
+specify the octal file mask applied
+
+
+.TP
+-d mask
+specify the octal directory mask applied
+
+
+.TP
+-o options
+list of options that are passed as-is to smbfs, if this command is run on a 2\&.4 or higher Linux kernel\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.SH "AUTHOR"
+
+.PP
+Volker Lendecke, Andrew Tridgell, Michael H\&. Warfield and others\&.
+
+.PP
+The current maintainer of smbfs and the userspace tools \fBsmbmount\fR, \fBsmbumount\fR, and \fBsmbmnt\fR is Urban Widmark\&. The SAMBA Mailing list is the preferred place to ask questions regarding these programs\&.
+
+.PP
+The conversion of this manpage for Samba 2\&.2 was performed by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/smbmount.8 b/raw/man8/smbmount.8
new file mode 100644
index 0000000..fdf49c0
--- /dev/null
+++ b/raw/man8/smbmount.8
@@ -0,0 +1,219 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBMOUNT" 8 "" "" ""
+.SH NAME
+smbmount \- mount an smbfs filesystem
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbmount\fR {service} {mount-point} [-o options]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+\fBsmbmount\fR mounts a Linux SMB filesystem\&. It is usually invoked as \fBmount.smbfs\fR by the \fBmount\fR(8) command when using the "-t smbfs" option\&. This command only works in Linux, and the kernel must support the smbfs filesystem\&.
+
+.PP
+Options to \fBsmbmount\fR are specified as a comma-separated list of key=value pairs\&. It is possible to send options other than those listed here, assuming that smbfs supports them\&. If you get mount failures, check your kernel log for errors on unknown options\&.
+
+.PP
+\fBsmbmount\fR is a daemon\&. After mounting it keeps running until the mounted smbfs is umounted\&. It will log things that happen when in daemon mode using the "machine name" smbmount, so typically this output will end up in \fIlog\&.smbmount\fR\&. The \fB smbmount\fR process may also be called mount\&.smbfs\&.
+
+.RS
+.Sh "Note"
+
+.PP
+ \fBsmbmount\fR calls \fBsmbmnt\fR(8) to do the actual mount\&. You must make sure that \fBsmbmnt\fR is in the path so that it can be found\&.
+
+.RE
+
+.SH "OPTIONS"
+
+.TP
+username=<arg>
+specifies the username to connect as\&. If this is not given, then the environment variable \fB USER\fR is used\&. This option can also take the form "user%password" or "user/workgroup" or "user/workgroup%password" to allow the password and workgroup to be specified as part of the username\&.
+
+
+.TP
+password=<arg>
+specifies the SMB password\&. If this option is not given then the environment variable \fBPASSWD\fR is used\&. If it can find no password \fBsmbmount\fR will prompt for a passeword, unless the guest option is given\&.
+
+
+Note that passwords which contain the argument delimiter character (i\&.e\&. a comma ',') will failed to be parsed correctly on the command line\&. However, the same password defined in the PASSWD environment variable or a credentials file (see below) will be read correctly\&.
+
+
+.TP
+credentials=<filename>
+specifies a file that contains a username and/or password\&. 
+The format of the file is:
+.nf
+
+username = <value>
+password = <value>
+.fi
+
+
+This is preferred over having passwords in plaintext in a shared file, such as \fI/etc/fstab\fR\&. Be sure to protect any credentials file properly\&.
+
+
+.TP
+krb
+Use kerberos (Active Directory)\&.
+
+
+.TP
+netbiosname=<arg>
+sets the source NetBIOS name\&. It defaults to the local hostname\&.
+
+
+.TP
+uid=<arg>
+sets the uid that will own all files on the mounted filesystem\&. It may be specified as either a username or a numeric uid\&.
+
+
+.TP
+gid=<arg>
+sets the gid that will own all files on the mounted filesystem\&. It may be specified as either a groupname or a numeric gid\&.
+
+
+.TP
+port=<arg>
+sets the remote SMB port number\&. The default is 139\&.
+
+
+.TP
+fmask=<arg>
+sets the file mask\&. This determines the permissions that remote files have in the local filesystem\&. This is not a umask, but the actual permissions for the files\&. The default is based on the current umask\&.
+
+
+.TP
+dmask=<arg>
+Sets the directory mask\&. This determines the permissions that remote directories have in the local filesystem\&. This is not a umask, but the actual permissions for the directories\&. The default is based on the current umask\&.
+
+
+.TP
+debug=<arg>
+Sets the debug level\&. This is useful for tracking down SMB connection problems\&. A suggested value to start with is 4\&. If set too high there will be a lot of output, possibly hiding the useful output\&.
+
+
+.TP
+ip=<arg>
+Sets the destination host or IP address\&.
+
+
+.TP
+workgroup=<arg>
+Sets the workgroup on the destination
+
+
+.TP
+sockopt=<arg>
+Sets the TCP socket options\&. See the \fBsmb.conf\fR(5) \fIsocket options\fR option\&.
+
+
+.TP
+scope=<arg>
+Sets the NetBIOS scope
+
+
+.TP
+guest
+Don't prompt for a password
+
+
+.TP
+ro
+mount read-only
+
+
+.TP
+rw
+mount read-write
+
+
+.TP
+iocharset=<arg>
+sets the charset used by the Linux side for codepage to charset translations (NLS)\&. Argument should be the name of a charset, like iso8859-1\&. (Note: only kernel 2\&.4\&.0 or later)
+
+
+.TP
+codepage=<arg>
+sets the codepage the server uses\&. See the iocharset option\&. Example value cp850\&. (Note: only kernel 2\&.4\&.0 or later)
+
+
+.TP
+ttl=<arg>
+sets how long a directory listing is cached in milliseconds (also affects visibility of file size and date changes)\&. A higher value means that changes on the server take longer to be noticed but it can give better performance on large directories, especially over long distances\&. Default is 1000ms but something like 10000ms (10 seconds) is probably more reasonable in many cases\&. (Note: only kernel 2\&.4\&.2 or later)
+
+
+.SH "ENVIRONMENT VARIABLES"
+
+.PP
+The variable \fBUSER\fR may contain the username of the person using the client\&. This information is used only if the protocol level is high enough to support session-level passwords\&. The variable can be used to set both username and password by using the format username%password\&.
+
+.PP
+The variable \fBPASSWD\fR may contain the password of the person using the client\&. This information is used only if the protocol level is high enough to support session-level passwords\&.
+
+.PP
+The variable \fBPASSWD_FILE\fR may contain the pathname of a file to read the password from\&. A single line of input is read and used as the password\&.
+
+.SH "BUGS"
+
+.PP
+Passwords and other options containing , can not be handled\&. For passwords an alternative way of passing them is in a credentials file or in the PASSWD environment\&.
+
+.PP
+The credentials file does not handle usernames or passwords with leading space\&.
+
+.PP
+One smbfs bug is important enough to mention here, even if it is a bit misplaced:
+
+.TP 3
+\(bu
+Mounts sometimes stop working\&. This is usually caused by smbmount terminating\&. Since smbfs needs smbmount to reconnect when the server disconnects, the mount will eventually go dead\&. An umount/mount normally fixes this\&. At least 2 ways to trigger this bug are known\&.
+
+.LP
+
+.PP
+Note that the typical response to a bug report is suggestion to try the latest version first\&. So please try doing that first, and always include which versions you use of relevant software when reporting bugs (minimum: samba, kernel, distribution)
+
+.SH "SEE ALSO"
+
+.PP
+Documentation/filesystems/smbfs\&.txt in the linux kernel source tree may contain additional options and information\&.
+
+.PP
+FreeBSD also has a smbfs, but it is not related to smbmount
+
+.PP
+For Solaris, HP-UX and others you may want to look at \fBsmbsh\fR(1) or at other solutions, such as Sharity or perhaps replacing the SMB server with a NFS server\&.
+
+.SH "AUTHOR"
+
+.PP
+Volker Lendecke, Andrew Tridgell, Michael H\&. Warfield and others\&.
+
+.PP
+The current maintainer of smbfs and the userspace tools \fBsmbmount\fR, \fBsmbumount\fR, and \fBsmbmnt\fR is Urban Widmark\&. The SAMBA Mailing list is the preferred place to ask questions regarding these programs\&.
+
+.PP
+The conversion of this manpage for Samba 2\&.2 was performed by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/smbpasswd.8 b/raw/man8/smbpasswd.8
new file mode 100644
index 0000000..e0c8ca5
--- /dev/null
+++ b/raw/man8/smbpasswd.8
@@ -0,0 +1,219 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBPASSWD" 8 "" "" ""
+.SH NAME
+smbpasswd \- change a user's SMB password
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbpasswd\fR [-a] [-x] [-d] [-e] [-D debuglevel] [-n] [-r <remote machine>] [-R <name resolve order>] [-m] [-U username[%password]] [-h] [-s] [-w pass] [-i] [-L] [username]
+         
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+The smbpasswd program has several different functions, depending on whether it is run by the \fBroot\fR user or not\&. When run as a normal user it allows the user to change the password used for their SMB sessions on any machines that store SMB passwords\&.
+
+.PP
+By default (when run with no arguments) it will attempt to change the current user's SMB password on the local machine\&. This is similar to the way the \fBpasswd(1)\fR program works\&. \fB smbpasswd\fR differs from how the passwd program works however in that it is not \fBsetuid root\fR but works in a client-server mode and communicates with a locally running \fBsmbd\fR(8)\&. As a consequence in order for this to succeed the smbd daemon must be running on the local machine\&. On a UNIX  [...]
+
+.PP
+When run by an ordinary user with no options, smbpasswd will prompt them for their old SMB password and then ask them for their new password twice, to ensure that the new password was typed correctly\&. No passwords will be echoed on the screen whilst being typed\&. If you have a blank SMB password (specified by the string "NO PASSWORD" in the smbpasswd file) then just press the <Enter> key when asked for your old password\&.
+
+.PP
+smbpasswd can also be used by a normal user to change their SMB password on remote machines, such as Windows NT Primary Domain Controllers\&. See the (\fI-r\fR) and \fI-U\fR options below\&.
+
+.PP
+When run by root, smbpasswd allows new users to be added and deleted in the smbpasswd file, as well as allows changes to the attributes of the user in this file to be made\&. When run by root, \fB smbpasswd\fR accesses the local smbpasswd file directly, thus enabling changes to be made even if smbd is not running\&.
+
+.SH "OPTIONS"
+
+.TP
+-a
+This option specifies that the username following should be added to the local smbpasswd file, with the new password typed (type <Enter> for the old password)\&. This option is ignored if the username following already exists in the smbpasswd file and it is treated like a regular change password command\&. Note that the default passdb backends require the user to already exist in the system password file (usually \fI/etc/passwd\fR), else the request to add the user will fail\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-x
+This option specifies that the username following should be deleted from the local smbpasswd file\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-d
+This option specifies that the username following should be \fBdisabled\fR in the local smbpasswd file\&. This is done by writing a \fB'D'\fR flag into the account control space in the smbpasswd file\&. Once this is done all attempts to authenticate via SMB using this username will fail\&.
+
+
+If the smbpasswd file is in the 'old' format (pre-Samba 2\&.0 format) there is no space in the user's password entry to write this information and the command will FAIL\&. See \fBsmbpasswd\fR(5) for details on the 'old' and new password file formats\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-e
+This option specifies that the username following should be \fBenabled\fR in the local smbpasswd file, if the account was previously disabled\&. If the account was not disabled this option has no effect\&. Once the account is enabled then the user will be able to authenticate via SMB once again\&.
+
+
+If the smbpasswd file is in the 'old' format, then \fB smbpasswd\fR will FAIL to enable the account\&. See \fBsmbpasswd\fR(5) for details on the 'old' and new password file formats\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-D debuglevel
+\fIdebuglevel\fR is an integer from 0 to 10\&. The default value if this parameter is not specified is zero\&.
+
+
+The higher this value, the more detail will be logged to the log files about the activities of smbpasswd\&. At level 0, only critical errors and serious warnings will be logged\&.
+
+
+Levels above 1 will generate considerable amounts of log data, and should only be used when investigating a problem\&. Levels above 3 are designed for use only by developers and generate HUGE amounts of log data, most of which is extremely cryptic\&.
+
+
+.TP
+-n
+This option specifies that the username following should have their password set to null (i\&.e\&. a blank password) in the local smbpasswd file\&. This is done by writing the string "NO PASSWORD" as the first part of the first password stored in the smbpasswd file\&.
+
+
+Note that to allow users to logon to a Samba server once the password has been set to "NO PASSWORD" in the smbpasswd file the administrator must set the following parameter in the [global] section of the \fIsmb\&.conf\fR file :
+
+
+\fBnull passwords = yes\fR
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-r remote machine name
+This option allows a user to specify what machine they wish to change their password on\&. Without this parameter smbpasswd defaults to the local host\&. The \fIremote machine name\fR is the NetBIOS name of the SMB/CIFS server to contact to attempt the password change\&. This name is resolved into an IP address using the standard name resolution mechanism in all programs of the Samba suite\&. See the \fI-R name resolve order\fR parameter for details on changing this resolving mechanism\&.
+
+
+The username whose password is changed is that of the current UNIX logged on user\&. See the \fI-U username\fR parameter for details on changing the password for a different username\&.
+
+
+Note that if changing a Windows NT Domain password the remote machine specified must be the Primary Domain Controller for the domain (Backup Domain Controllers only have a read-only copy of the user account database and will not allow the password change)\&.
+
+
+\fBNote\fR that Windows 95/98 do not have a real password database so it is not possible to change passwords specifying a Win95/98 machine as remote machine target\&.
+
+
+.TP
+-R name resolve order
+This option allows the user of smbpasswd to determine what name resolution services to use when looking up the NetBIOS name of the host being connected to\&.
+
+
+The options are :"lmhosts", "host", "wins" and "bcast"\&. They cause names to be resolved as follows:
+
+
+\fBlmhosts\fR: Lookup an IP address in the Samba lmhosts file\&. If the line in lmhosts has no name type attached to the NetBIOS name (see the \fBlmhosts\fR(5) for details) then any name type matches for lookup\&.
+
+\fBhost\fR: Do a standard host name to IP address resolution, using the system \fI/etc/hosts \fR, NIS, or DNS lookups\&. This method of name resolution is operating system depended for instance on IRIX or Solaris this may be controlled by the \fI/etc/nsswitch\&.conf\fR file)\&. Note that this method is only used if the NetBIOS name type being queried is the 0x20 (server) name type, otherwise it is ignored\&.
+
+\fBwins\fR: Query a name with the IP address listed in the \fIwins server\fR parameter\&. If no WINS server has been specified this method will be ignored\&.
+
+\fBbcast\fR: Do a broadcast on each of the known local interfaces listed in the \fIinterfaces\fR parameter\&. This is the least reliable of the name resolution methods as it depends on the target host being on a locally connected subnet\&.
+
+The default order is \fBlmhosts, host, wins, bcast\fR and without this parameter or any entry in the \fBsmb.conf\fR(5) file the name resolution methods will be attempted in this order\&.
+
+
+.TP
+-m
+This option tells smbpasswd that the account being changed is a MACHINE account\&. Currently this is used when Samba is being used as an NT Primary Domain Controller\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-U username
+This option may only be used in conjunction with the \fI-r\fR option\&. When changing a password on a remote machine it allows the user to specify the user name on that machine whose password will be changed\&. It is present to allow users who have different user names on different systems to change these passwords\&.
+
+
+.TP
+-h
+This option prints the help string for \fB smbpasswd\fR, selecting the correct one for running as root or as an ordinary user\&.
+
+
+.TP
+-s
+This option causes smbpasswd to be silent (i\&.e\&. not issue prompts) and to read its old and new passwords from standard input, rather than from \fI/dev/tty\fR (like the \fBpasswd(1)\fR program does)\&. This option is to aid people writing scripts to drive smbpasswd
+
+
+.TP
+-w password
+This parameter is only available if Samba has been configured to use the experimental \fB--with-ldapsam\fR option\&. The \fI-w\fR switch is used to specify the password to be used with the \fIldap admin dn\fR\&. Note that the password is stored in the \fIsecrets\&.tdb\fR and is keyed off of the admin's DN\&. This means that if the value of \fIldap admin dn\fR ever changes, the password will need to be manually updated as well\&.
+
+
+.TP
+-i
+This option tells smbpasswd that the account being changed is an interdomain trust account\&. Currently this is used when Samba is being used as an NT Primary Domain Controller\&. The account contains the info about another trusted domain\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-L
+Run in local mode\&.
+
+
+.TP
+username
+This specifies the username for all of the \fBroot only\fR options to operate on\&. Only root can specify this parameter as only root has the permission needed to modify attributes directly in the local smbpasswd file\&.
+
+
+.SH "NOTES"
+
+.PP
+Since \fBsmbpasswd\fR works in client-server mode communicating with a local smbd for a non-root user then the smbd daemon must be running for this to work\&. A common problem is to add a restriction to the hosts that may access the \fB smbd\fR running on the local machine by specifying either \fIallow hosts\fR or \fIdeny hosts\fR entry in the \fBsmb.conf\fR(5) file and neglecting to allow "localhost" access to the smbd\&.
+
+.PP
+In addition, the smbpasswd command is only useful if Samba has been set up to use encrypted passwords\&.
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbpasswd\fR(5), \fBSamba\fR(7)\&.
+
+.SH "AUTHOR"
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/smbspool.8 b/raw/man8/smbspool.8
new file mode 100644
index 0000000..a641354
--- /dev/null
+++ b/raw/man8/smbspool.8
@@ -0,0 +1,115 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBSPOOL" 8 "" "" ""
+.SH NAME
+smbspool \- send a print file to an SMB printer
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbspool\fR {job} {user} {title} {copies} {options} [filename]
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+This tool is part of the \fBSamba\fR(7) suite\&.
+
+.PP
+smbspool is a very small print spooling program that sends a print file to an SMB printer\&. The command-line arguments are position-dependent for compatibility with the Common UNIX Printing System, but you can use smbspool with any printing system or from a program or script\&.
+
+.PP
+\fBDEVICE URI\fR
+
+.PP
+smbspool specifies the destination using a Uniform Resource Identifier ("URI") with a method of "smb"\&. This string can take a number of forms:
+
+.TP 3
+\(bu
+smb://server/printer
+
+.TP
+\(bu
+smb://workgroup/server/printer
+
+.TP
+\(bu
+smb://username:password@server/printer
+
+.TP
+\(bu
+smb://username:password@workgroup/server/printer
+
+.LP
+
+.PP
+smbspool tries to get the URI from argv[0]\&. If argv[0] contains the name of the program then it looks in the \fB DEVICE_URI\fR environment variable\&.
+
+.PP
+Programs using the \fBexec(2)\fR functions can pass the URI in argv[0], while shell scripts must set the\fBDEVICE_URI\fR environment variable prior to running smbspool\&.
+
+.SH "OPTIONS"
+
+.TP 3
+\(bu
+The job argument (argv[1]) contains the job ID number and is presently not used by smbspool\&.
+
+.TP
+\(bu
+The user argument (argv[2]) contains the print user's name and is presently not used by smbspool\&.
+
+.TP
+\(bu
+The title argument (argv[3]) contains the job title string and is passed as the remote file name when sending the print job\&.
+
+.TP
+\(bu
+The copies argument (argv[4]) contains the number of copies to be printed of the named file\&. If no filename is provided then this argument is not used by smbspool\&.
+
+.TP
+\(bu
+The options argument (argv[5]) contains the print options in a single string and is currently not used by smbspool\&.
+
+.TP
+\(bu
+The filename argument (argv[6]) contains the name of the file to print\&. If this argument is not specified then the print file is read from the standard input\&.
+
+.LP
+
+.SH "VERSION"
+
+.PP
+This man page is correct for version 3\&.0 of the Samba suite\&.
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbd\fR(8) and \fBSamba\fR(7)\&.
+
+.SH "AUTHOR"
+
+.PP
+\fBsmbspool\fR was written by Michael Sweet at Easy Software Products\&.
+
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.
+
+.PP
+The original Samba man pages were written by Karl Auer\&. The man page sources were converted to YODL format (another excellent piece of Open Source software, available at ftp://ftp\&.icce\&.rug\&.nl/pub/unix/) and updated for the Samba 2\&.0 release by Jeremy Allison\&. The conversion to DocBook for Samba 2\&.2 was done by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/smbumount.8 b/raw/man8/smbumount.8
new file mode 100644
index 0000000..922cf5d
--- /dev/null
+++ b/raw/man8/smbumount.8
@@ -0,0 +1,56 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBUMOUNT" 8 "" "" ""
+.SH NAME
+smbumount \- smbfs umount for normal users
+.SH "SYNOPSIS"
+
+.nf
+\fBsmbumount\fR {mount-point}
+.fi
+
+.SH "DESCRIPTION"
+
+.PP
+With this program, normal users can unmount smb-filesystems, provided that it is suid root\&. \fBsmbumount\fR has been written to give normal Linux users more control over their resources\&. It is safe to install this program suid root, because only the user who has mounted a filesystem is allowed to unmount it again\&. For root it is not necessary to use smbumount\&. The normal umount program works perfectly well, but it would certainly be problematic to make umount setuid root\&.
+
+.SH "OPTIONS"
+
+.TP
+mount-point
+The directory to unmount\&.
+
+
+.SH "SEE ALSO"
+
+.PP
+\fBsmbmount\fR(8)
+
+.SH "AUTHOR"
+
+.PP
+Volker Lendecke, Andrew Tridgell, Michael H\&. Warfield and others\&.
+
+.PP
+The current maintainer of smbfs and the userspace tools \fBsmbmount\fR, \fBsmbumount\fR, and \fBsmbmnt\fR is Urban Widmark\&. The SAMBA Mailing list is the preferred place to ask questions regarding these programs\&.
+
+.PP
+The conversion of this manpage for Samba 2\&.2 was performed by Gerald Carter\&. The conversion to DocBook XML 4\&.2 for Samba 3\&.0 was done by Alexander Bokovoy\&.
+
diff --git a/raw/man8/svnserve.8 b/raw/man8/svnserve.8
new file mode 100644
index 0000000..ae072b0
--- /dev/null
+++ b/raw/man8/svnserve.8
@@ -0,0 +1,77 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnserve 8
+.SH NAME
+svnserve \- Server for the 'svn' repository access method
+.SH SYNOPSIS
+.TP
+\fBsvnserve\fP [\fIoptions\fP]
+.SH DESCRIPTION
+\fBsvnserve\fP allows access to Subversion repositories using the svn
+network protocol.  It can both run as a standalone server process, or
+it can run out of inetd.  You must choose a mode of operation when you
+start \fBsvnserve\fP.  The following options are recognized:
+.PP
+.TP 5
+\fB\-d\fP, \fB\-\-daemon\fP
+Causes \fBsvnserve\fP to run in daemon mode.  \fBsvnserve\fP
+backgrounds itself and accepts and serves TCP/IP connections on the
+svn port (3690, by default).
+.PP
+.TP 5
+\fB\-\-listen-port\fP=\fIport\fP
+Causes \fBsvnserve\fP to listen on \fIport\fP when run in daemon mode.
+.PP
+.TP 5
+\fB\-\-listen-host\fP=\fIhost\fP
+Causes \fBsvnserve\fP to listen on the interface specified by \fIhost\fP,
+which may be either a hostname or an IP address.
+.PP
+.TP 5
+\fB\-\-foreground\fP
+When used together with \fB\-d\fP, this option causes \fBsvnserve\fP
+to stay in the foreground.  This option is mainly useful for
+debugging.
+.PP
+.TP 5
+\fB\-i\fP, \fB\-\-inetd\fP
+Causes \fBsvnserve\fP to use the stdin/stdout file descriptors, as is
+appropriate for a daemon running out of inetd.
+.PP
+.TP 5
+\fB\-h\fP, \fB\-\-help\fP
+Displays a usage summary and exits.
+.PP
+.TP 5
+\fB\-r\fP \fIroot\fP, \fB\-\-root\fP=\fIroot\fP
+Sets the virtual root for repositories served by \fBsvnserve\fP.  The
+pathname in URLs provided by the client will be interpreted relative
+to this root, and will not be allowed to escape this root.
+.PP
+.TP 5
+\fB\-t\fP, \fB\-\-tunnel\fP
+Causes \fBsvnserve\fP to run in tunnel mode, which is just like the
+inetd mode of operation (serve one connection over stdin/stdout)
+except that the connection is considered to be pre-authenticated with
+the username of the current uid.  This flag is selected by the client
+when running over a tunnel agent.
+.PP
+.TP 5
+\fB\-T\fP, \fB\-\-threads\fP
+When running in daemon mode, causes \fBsvnserve\fP to spawn a thread
+instead of a process for each connection.  The \fBsvnserve\fP process
+still backgrounds itself at startup time.
+.PP
+.TP 5
+\fB\-X\fP, \fB\-\-listen\-once\fP
+Causes \fBsvnserve\fP to accept one connection on the svn port, serve
+it, and exit.  This option is mainly useful for debugging.
+.PP
+Once the client has selected a repository by transmitting its URL,
+\fBsvnserve\fP reads a file named \fBconf/svnserve.conf\fP in the
+repository directory to determine repository-specific settings such as
+what authentication database to use and what authorization policies to
+apply.  See the \fBsvnserve.conf\fP(5) man page for details of that
+file format.
+
diff --git a/raw/man8/swapoff.8 b/raw/man8/swapoff.8
new file mode 100644
index 0000000..1a06b7e
--- /dev/null
+++ b/raw/man8/swapoff.8
@@ -0,0 +1 @@
+.so man8/swapon.8
diff --git a/raw/man8/swapon.8 b/raw/man8/swapon.8
new file mode 100644
index 0000000..6dca7eb
--- /dev/null
+++ b/raw/man8/swapon.8
@@ -0,0 +1,145 @@
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)swapon.8	6.3 (Berkeley) 3/16/91
+.\"
+.\" Sun Dec 27 12:31:30 1992: Modified by faith at cs.unc.edu
+.\" Sat Mar  6 20:46:02 1993: Modified by faith at cs.unc.edu
+.\" Sat Oct  9 09:35:30 1993: Converted to man format by faith at cs.unc.edu
+.\" Sat Nov 27 20:22:42 1993: Updated authorship information, faith at cs.unc.edu
+.\" Mon Sep 25 14:12:38 1995: Added -v and -p information
+.\" Tue Apr 30 03:32:07 1996: Added some text from A. Koppenhoefer
+.\"
+.TH SWAPON 8 "25 September 1995" "Linux 1.x" "Linux Programmer's Manual"
+.SH NAME
+swapon, swapoff \- enable/disable devices and files for paging and swapping
+.SH SYNOPSIS
+.B /sbin/swapon [\-h \-V]
+.br
+.B /sbin/swapon \-a [\-v] [\-e]
+.br
+.BI "/sbin/swapon [\-v] [\-p " "priority" "] " " specialfile " ...
+.br
+.B /sbin/swapon [\-s]
+.br
+.B /sbin/swapoff [\-h \-V]
+.br
+.B /sbin/swapoff \-a
+.br
+.BI /sbin/swapoff " specialfile " ...
+.SH DESCRIPTION
+.B Swapon
+is used to specify devices on which paging and swapping are to take place.
+Calls to
+.B swapon
+normally occur in the system multi-user initialization file
+.I /etc/rc
+making all swap devices available, so that the paging and swapping activity
+is interleaved across several devices and files.
+
+Normally, the first form is used:
+.TP
+.B \-h
+Provide help
+.TP
+.B \-V
+Display version
+.TP
+.B \-s
+Display swap usage summary by device. Equivalent to "cat /proc/swaps".
+Not available before Linux 2.1.25.
+.TP
+.B \-a
+All devices marked as ``swap'' swap devices in
+.I /etc/fstab
+are made available. Devices that are already running as swap are silently
+skipped.
+.TP 
+.B \-e
+When 
+.B \-a 
+is used with swapon, 
+.B
+\-e 
+makes swapon silently skip devices that
+do not exist.
+.TP
+.BI \-p " priority"
+Specify priority for
+.BR swapon .
+This option is only available if
+.B swapon
+was compiled under and is used under a 1.3.2 or later kernel.
+.I priority
+is a value between 0 and 32767. See
+.BR swapon (2)
+for a full description of swap priorities. Add
+.BI pri= value
+to the option field of
+.I /etc/fstab
+for use with
+.BR "swapon -a" .
+.PP
+.B Swapoff
+disables swapping on the specified devices and files.
+When the
+.B \-a
+flag is given, swapping is disabled on all known swap devices and files
+(as found in
+.I /proc/swaps
+or
+.IR /etc/fstab ).
+.SH NOTE
+You should not use
+.B swapon
+on a file with holes.
+Swap over NFS may not work.
+.SH SEE ALSO
+.BR swapon (2),
+.BR swapoff (2),
+.BR fstab (5),
+.BR init (8),
+.BR mkswap (8),
+.BR rc (8),
+.BR mount (8)
+.SH FILES
+.I /dev/hd??
+standard paging devices
+.br
+.I /dev/sd??
+standard (SCSI) paging devices
+.br
+.I /etc/fstab
+ascii filesystem description table
+.SH HISTORY
+The
+.B swapon
+command appeared in 4.0BSD.
diff --git a/raw/man8/sync.8 b/raw/man8/sync.8
new file mode 100644
index 0000000..75cef9d
--- /dev/null
+++ b/raw/man8/sync.8
@@ -0,0 +1,84 @@
+.\" Reboot/halt and Linux information extracted from Rick Faith's original
+.\" sync(8) manpage, dating back to the Linux 0.99 days.  The Linux-specific
+.\" information is attributed to Linus Torvalds
+.\" Copyright 1992, 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.TH SYNC 8 1998-11 "GNU fileutils 4.0"
+.SH NAME
+sync \- synchronize data on disk with memory
+.SH SYNOPSYS
+.B "sync [\-\-help] [\-\-version]"
+.SH DESCRIPTION
+.B sync
+writes any data buffered in memory out to disk.  This can
+include (but is not limited to) modified superblocks, modified inodes,
+and delayed reads and writes.  This must be implemented by the kernel;
+The
+.B sync
+program does nothing but exercise the
+.BR sync (2)
+system call.
+.PP
+The kernel keeps data in memory to avoid doing (relatively slow) disk
+reads and writes.  This improves performance, but if the computer
+crashes, data may be lost or the filesystem corrupted as a result.
+.B sync
+ensures that everything in memory is written to disk.
+.PP
+.B sync
+should be called before the processor is halted in an unusual manner
+(e.g., before causing a kernel panic when debugging new kernel code).
+In general, the processor should be halted using the
+.BR shutdown (8)
+or
+.BR reboot (8)
+or
+.BR halt (8)
+commands, which will attempt to put the system in a quiescent state
+before calling
+.BR sync (2).
+(Various implementations of these commands exist; consult your
+documentation; on some systems one should not call
+.BR reboot (8)
+and
+.BR halt (8)
+directly.)
+.SH "GNU STANDARD OPTIONS"
+.TP
+.B "\-\-help"
+Print a usage message on standard output and exit successfully.
+.TP
+.B "\-\-version"
+Print version information on standard output, then exit successfully.
+.TP
+.B "\-\-"
+Terminate option list.
+.SH ENVIRONMENT
+The variables LANG, LC_ALL, LC_CTYPE, and LC_MESSAGES have the
+usual meaning.
+.SH "CONFORMING TO"
+POSIX 1003.2
+.SH NOTES
+On Linux,
+.B sync
+is only guaranteed to schedule the dirty blocks for writing; it can
+actually take a short time before all the blocks are finally written.
+The
+.BR reboot (8)
+and
+.BR halt (8)
+commands take this into account by sleeping for a few seconds after
+calling
+.BR sync (2).
+.PP
+This page describes
+.B sync
+as found in the file\%utils-4.0 package;
+other versions may differ slightly.
+Mail corrections and additions to aeb at cwi.nl.
+Report bugs in the program to fileutils-bugs at gnu.ai.mit.edu.
+.SH "SEE ALSO"
+.BR sync (2),
+.BR halt (8),
+.BR reboot (8),
+.BR update (8)
diff --git a/raw/man8/tcpdump.8 b/raw/man8/tcpdump.8
new file mode 100644
index 0000000..5374374
--- /dev/null
+++ b/raw/man8/tcpdump.8
@@ -0,0 +1,1970 @@
+.\" @(#) $Header: /cvsroot/cmpp/man-pages-zh_CN/raw/man8/tcpdump.8,v 1.1 2003/12/20 03:31:54 bbbush Exp $ (LBL)
+.\"
+.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributions
+.\" retain the above copyright notice and this paragraph in its entirety, (2)
+.\" distributions including binary code include the above copyright notice and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials mentioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of California,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH TCPDUMP 8  "3 January 2001"
+.SH NAME
+tcpdump \- dump traffic on a network
+.SH SYNOPSIS
+.na
+.B tcpdump
+[
+.B \-adeflnNOpqRStuvxX
+] [
+.B \-c
+.I count
+]
+.br
+.ti +8
+[
+.B \-C
+.I file_size
+] [
+.B \-F
+.I file
+]
+.br
+.ti +8
+[
+.B \-i
+.I interface
+]
+[
+.B \-m
+.I module
+]
+[
+.B \-r
+.I file
+]
+.br
+.ti +8
+[
+.B \-s
+.I snaplen
+]
+[
+.B \-T
+.I type
+]
+[
+.B \-U
+.I user
+]
+[
+.B \-w
+.I file
+]
+.br
+.ti +8
+[
+.B \-E
+.I algo:secret
+]
+[
+.I expression
+]
+.br
+.ad
+.SH DESCRIPTION
+.LP
+\fITcpdump\fP prints out the headers of packets on a network interface
+that match the boolean \fIexpression\fP.  It can also be run with the
+.B \-w
+flag, which causes it to save the packet data to a file for later
+analysis, and/or with the
+.B \-r
+flag, which causes it to read from a saved packet file rather than to
+read packets from a network interface.  In all cases, only packets that
+match
+.I expression
+will be processed by
+.IR tcpdump .
+.LP
+.I Tcpdump
+will, if not run with the
+.B \-c
+flag, continue capturing packets until it is interrupted by a SIGINT
+signal (generated, for example, by typing your interrupt character,
+typically control-C) or a SIGTERM signal (typically generated with the
+.BR kill (1)
+command); if run with the
+.B \-c
+flag, it will capture packets until it is interrupted by a SIGINT or
+SIGTERM signal or the specified number of packets have been processed.
+.LP
+When
+.I tcpdump
+finishes capturing packets, it will report counts of:
+.IP
+packets ``received by filter'' (the meaning of this depends on the OS on
+which you're running
+.IR tcpdump ,
+and possibly on the way the OS was configured - if a filter was
+specified on the command line, on some OSes it counts packets regardless
+of whether they were matched by the filter expression, and on other OSes
+it counts only packets that were matched by the filter expression and
+were processed by
+.IR tcpdump );
+.IP
+packets ``dropped by kernel'' (this is the number of packets that were
+dropped, due to a lack of buffer space, by the packet capture mechanism
+in the OS on which
+.I tcpdump
+is running, if the OS reports that information to applications; if not,
+it will be reported as 0).
+.LP
+On platforms that support the SIGINFO signal, such as most BSDs, it will
+report those counts when it receives a SIGINFO signal (generated, for
+example, by typing your ``status'' character, typically control-T) and
+will continue capturing packets.
+.LP
+Reading packets from a network interface may require that you have
+special privileges:
+.TP
+.B Under SunOS 3.x or 4.x with NIT or BPF:
+You must have read access to
+.I /dev/nit
+or
+.IR /dev/bpf* .
+.TP
+.B Under Solaris with DLPI:
+You must have read/write access to the network pseudo device, e.g.
+.IR /dev/le .
+On at least some versions of Solaris, however, this is not sufficient to
+allow
+.I tcpdump
+to capture in promiscuous mode; on those versions of Solaris, you must
+be root, or
+.I tcpdump
+must be installed setuid to root, in order to capture in promiscuous
+mode.  Note that, on many (perhaps all) interfaces, if you don't capture
+in promiscuous mode, you will not see any outgoing packets, so a capture
+not done in promiscuous mode may not be very useful.
+.TP
+.B Under HP-UX with DLPI:
+You must be root or
+.I tcpdump
+must be installed setuid to root.
+.TP
+.B Under IRIX with snoop:
+You must be root or
+.I tcpdump
+must be installed setuid to root.
+.TP
+.B Under Linux:
+You must be root or
+.I tcpdump
+must be installed setuid to root.
+.TP
+.B Under Ultrix and Digital UNIX/Tru64 UNIX:
+Any user may capture network traffic with
+.IR tcpdump .
+However, no user (not even the super-user) can capture in promiscuous
+mode on an interface unless the super-user has enabled promiscuous-mode
+operation on that interface using
+.IR pfconfig (8),
+and no user (not even the super-user) can capture unicast traffic
+received by or sent by the machine on an interface unless the super-user
+has enabled copy-all-mode operation on that interface using
+.IR pfconfig ,
+so
+.I useful
+packet capture on an interface probably requires that either
+promiscuous-mode or copy-all-mode operation, or both modes of
+operation, be enabled on that interface.
+.TP
+.B Under BSD:
+You must have read access to
+.IR /dev/bpf* .
+.LP
+Reading a saved packet file doesn't require special privileges.
+.SH OPTIONS
+.TP
+.B \-a
+Attempt to convert network and broadcast addresses to names.
+.TP
+.B \-c
+Exit after receiving \fIcount\fP packets.
+.TP
+.B \-C
+Before writing a raw packet to a savefile, check whether the file is
+currently larger than \fIfile_size\fP and, if so, close the current
+savefile and open a new one.  Savefiles after the first savefile will
+have the name specified with the
+.B \-w
+flag, with a number after it, starting at 2 and continuing upward.
+The units of \fIfile_size\fP are millions of bytes (1,000,000 bytes,
+not 1,048,576 bytes).
+.TP
+.B \-d
+Dump the compiled packet-matching code in a human readable form to
+standard output and stop.
+.TP
+.B \-dd
+Dump packet-matching code as a
+.B C
+program fragment.
+.TP
+.B \-ddd
+Dump packet-matching code as decimal numbers (preceded with a count).
+.TP
+.B \-e
+Print the link-level header on each dump line.
+.TP
+.B \-E
+Use \fIalgo:secret\fP for decrypting IPsec ESP packets.
+Algorithms may be
+\fBdes-cbc\fP,
+\fB3des-cbc\fP,
+\fBblowfish-cbc\fP,
+\fBrc3-cbc\fP,
+\fBcast128-cbc\fP, or
+\fBnone\fP.
+The default is \fBdes-cbc\fP.
+The ability to decrypt packets is only present if \fItcpdump\fP was compiled
+with cryptography enabled.
+\fIsecret\fP the ascii text for ESP secret key.
+We cannot take arbitrary binary value at this moment.
+The option assumes RFC2406 ESP, not RFC1827 ESP.
+The option is only for debugging purposes, and
+the use of this option with truly `secret' key is discouraged.
+By presenting IPsec secret key onto command line
+you make it visible to others, via
+.IR ps (1)
+and other occasions.
+.TP
+.B \-f
+Print `foreign' internet addresses numerically rather than symbolically
+(this option is intended to get around serious brain damage in
+Sun's yp server \(em usually it hangs forever translating non-local
+internet numbers).
+.TP
+.B \-F
+Use \fIfile\fP as input for the filter expression.
+An additional expression given on the command line is ignored.
+.TP
+.B \-i
+Listen on \fIinterface\fP.
+If unspecified, \fItcpdump\fP searches the system interface list for the
+lowest numbered, configured up interface (excluding loopback).
+Ties are broken by choosing the earliest match.
+.IP
+On Linux systems with 2.2 or later kernels, an
+.I interface
+argument of ``any'' can be used to capture packets from all interfaces.
+Note that captures on the ``any'' device will not be done in promiscuous
+mode.
+.TP
+.B \-l
+Make stdout line buffered.
+Useful if you want to see the data
+while capturing it.
+E.g.,
+.br
+``tcpdump\ \ \-l\ \ |\ \ tee dat'' or
+``tcpdump\ \ \-l \ \ > dat\ \ &\ \ tail\ \ \-f\ \ dat''.
+.TP
+.B \-m
+Load SMI MIB module definitions from file \fImodule\fR.
+This option
+can be used several times to load several MIB modules into \fItcpdump\fP.
+.TP
+.B \-n
+Don't convert host addresses to names.  This can be used to avoid 
+DNS lookups.
+.TP
+.B \-nn
+Don't convert protocol and port numbers etc. to names either.  
+.TP
+.B \-N
+Don't print domain name qualification of host names.
+E.g.,
+if you give this flag then \fItcpdump\fP will print ``nic''
+instead of ``nic.ddn.mil''.
+.TP
+.B \-O
+Do not run the packet-matching code optimizer.
+This is useful only
+if you suspect a bug in the optimizer.
+.TP
+.B \-p
+\fIDon't\fP put the interface
+into promiscuous mode.
+Note that the interface might be in promiscuous
+mode for some other reason; hence, `-p' cannot be used as an abbreviation for
+`ether host {local-hw-addr} or ether broadcast'.
+.TP
+.B \-q
+Quick (quiet?) output.
+Print less protocol information so output
+lines are shorter.
+.TP
+.B \-R
+Assume ESP/AH packets to be based on old specification (RFC1825 to RFC1829).
+If specified, \fItcpdump\fP will not print replay prevention field.
+Since there is no protocol version field in ESP/AH specification,
+\fItcpdump\fP cannot deduce the version of ESP/AH protocol.
+.TP
+.B \-r
+Read packets from \fIfile\fR (which was created with the -w option).
+Standard input is used if \fIfile\fR is ``-''.
+.TP
+.B \-S
+Print absolute, rather than relative, TCP sequence numbers.
+.TP
+.B \-s
+Snarf \fIsnaplen\fP bytes of data from each packet rather than the
+default of 68 (with SunOS's NIT, the minimum is actually 96).
+68 bytes is adequate for IP, ICMP, TCP
+and UDP but may truncate protocol information from name server and NFS
+packets (see below).
+Packets truncated because of a limited snapshot
+are indicated in the output with ``[|\fIproto\fP]'', where \fIproto\fP
+is the name of the protocol level at which the truncation has occurred.
+Note that taking larger snapshots both increases
+the amount of time it takes to process packets and, effectively,
+decreases the amount of packet buffering.
+This may cause packets to be
+lost.
+You should limit \fIsnaplen\fP to the smallest number that will
+capture the protocol information you're interested in.
+Setting
+\fIsnaplen\fP to 0 means use the required length to catch whole packets.
+.TP
+.B \-T
+Force packets selected by "\fIexpression\fP" to be interpreted the
+specified \fItype\fR.
+Currently known types are
+\fBcnfp\fR (Cisco NetFlow protocol),
+\fBrpc\fR (Remote Procedure Call),
+\fBrtp\fR (Real-Time Applications protocol),
+\fBrtcp\fR (Real-Time Applications control protocol),
+\fBsnmp\fR (Simple Network Management Protocol),
+\fBvat\fR (Visual Audio Tool),
+and
+\fBwb\fR (distributed White Board).
+.TP
+.B \-t
+\fIDon't\fP print a timestamp on each dump line.
+.TP
+.B \-tt
+Print an unformatted timestamp on each dump line.
+.TP
+.B \-U
+Drops root privileges and changes user ID to
+.I user
+and group ID to the primary group of
+.IR user .
+
+.B Note! 
+Red Hat Linux automatically drops the privileges to user ``pcap''
+if nothing else is specified.
+.TP
+.B \-ttt
+Print a delta (in micro-seconds) between current and previous line
+on each dump line.
+.TP
+.B \-tttt
+Print a timestamp in default format proceeded by date on each dump line.
+.TP
+.B \-u
+Print undecoded NFS handles.
+.TP
+.B \-v
+(Slightly more) verbose output.
+For example, the time to live,
+identification, total length and options in an IP packet are printed.
+Also enables additional packet integrity checks such as verifying the
+IP and ICMP header checksum.
+.TP
+.B \-vv
+Even more verbose output.
+For example, additional fields are
+printed from NFS reply packets, and SMB packets are fully decoded.
+.TP
+.B \-vvv
+Even more verbose output.
+For example,
+telnet \fBSB\fP ... \fBSE\fP options
+are printed in full.
+With
+.B \-X
+telnet options are printed in hex as well.
+.TP
+.B \-w
+Write the raw packets to \fIfile\fR rather than parsing and printing
+them out.
+They can later be printed with the \-r option.
+Standard output is used if \fIfile\fR is ``-''.
+.TP
+.B \-x
+Print each packet (minus its link level header) in hex.
+The smaller of the entire packet or
+.I snaplen
+bytes will be printed.  Note that this is the entire link-layer
+packet, so for link layers that pad (e.g. Ethernet), the padding bytes
+will also be printed when the higher layer packet is shorter than the
+required padding.
+.TP
+.B \-X
+When printing hex, print ascii too.
+Thus if
+.B \-x
+is also set, the packet is printed in hex/ascii.
+This is very handy for analysing new protocols.
+Even if
+.B \-x
+is not also set, some parts of some packets may be printed
+in hex/ascii.
+.IP "\fI expression\fP"
+.RS
+selects which packets will be dumped.
+If no \fIexpression\fP
+is given, all packets on the net will be dumped.
+Otherwise,
+only packets for which \fIexpression\fP is `true' will be dumped.
+.LP
+The \fIexpression\fP consists of one or more
+.I primitives.
+Primitives usually consist of an
+.I id
+(name or number) preceded by one or more qualifiers.
+There are three
+different kinds of qualifier:
+.IP \fItype\fP
+qualifiers say what kind of thing the id name or number refers to.
+Possible types are
+.BR host ,
+.B net
+and
+.BR port .
+E.g., `host foo', `net 128.3', `port 20'.
+If there is no type
+qualifier,
+.B host
+is assumed.
+.IP \fIdir\fP
+qualifiers specify a particular transfer direction to and/or from
+.IR id .
+Possible directions are
+.BR src ,
+.BR dst ,
+.B "src or dst"
+and
+.B "src and"
+.BR dst .
+E.g., `src foo', `dst net 128.3', `src or dst port ftp-data'.
+If
+there is no dir qualifier,
+.B "src or dst"
+is assumed.
+For `null' link layers (i.e. point to point protocols such as slip) the
+.B inbound
+and
+.B outbound
+qualifiers can be used to specify a desired direction.
+.IP \fIproto\fP
+qualifiers restrict the match to a particular protocol.
+Possible
+protos are:
+.BR ether ,
+.BR fddi ,
+.BR tr ,
+.BR ip ,
+.BR ip6 ,
+.BR arp ,
+.BR rarp ,
+.BR decnet ,
+.B tcp
+and
+.BR udp .
+E.g., `ether src foo', `arp net 128.3', `tcp port 21'.
+If there is
+no proto qualifier, all protocols consistent with the type are
+assumed.
+E.g., `src foo' means `(ip or arp or rarp) src foo'
+(except the latter is not legal syntax), `net bar' means `(ip or
+arp or rarp) net bar' and `port 53' means `(tcp or udp) port 53'.
+.LP
+[`fddi' is actually an alias for `ether'; the parser treats them
+identically as meaning ``the data link level used on the specified
+network interface.''  FDDI headers contain Ethernet-like source
+and destination addresses, and often contain Ethernet-like packet
+types, so you can filter on these FDDI fields just as with the
+analogous Ethernet fields.
+FDDI headers also contain other fields,
+but you cannot name them explicitly in a filter expression.
+.LP
+Similarly, `tr' is an alias for `ether'; the previous paragraph's
+statements about FDDI headers also apply to Token Ring headers.]
+.LP
+In addition to the above, there are some special `primitive' keywords
+that don't follow the pattern:
+.BR gateway ,
+.BR broadcast ,
+.BR less ,
+.B greater
+and arithmetic expressions.
+All of these are described below.
+.LP
+More complex filter expressions are built up by using the words
+.BR and ,
+.B or
+and
+.B not
+to combine primitives.
+E.g., `host foo and not port ftp and not port ftp-data'.
+To save typing, identical qualifier lists can be omitted.
+E.g.,
+`tcp dst port ftp or ftp-data or domain' is exactly the same as
+`tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
+.LP
+Allowable primitives are:
+.IP "\fBdst host \fIhost\fR"
+True if the IPv4/v6 destination field of the packet is \fIhost\fP,
+which may be either an address or a name.
+.IP "\fBsrc host \fIhost\fR"
+True if the IPv4/v6 source field of the packet is \fIhost\fP.
+.IP "\fBhost \fIhost\fP
+True if either the IPv4/v6 source or destination of the packet is \fIhost\fP.
+Any of the above host expressions can be prepended with the keywords,
+\fBip\fP, \fBarp\fP, \fBrarp\fP, or \fBip6\fP as in:
+.in +.5i
+.nf
+\fBip host \fIhost\fR
+.fi
+.in -.5i
+which is equivalent to:
+.in +.5i
+.nf
+\fBether proto \fI\\ip\fB and host \fIhost\fR
+.fi
+.in -.5i
+If \fIhost\fR is a name with multiple IP addresses, each address will
+be checked for a match.
+.IP "\fBether dst \fIehost\fP
+True if the ethernet destination address is \fIehost\fP.
+\fIEhost\fP
+may be either a name from /etc/ethers or a number (see
+.IR ethers (3N)
+for numeric format).
+.IP "\fBether src \fIehost\fP
+True if the ethernet source address is \fIehost\fP.
+.IP "\fBether host \fIehost\fP
+True if either the ethernet source or destination address is \fIehost\fP.
+.IP "\fBgateway\fP \fIhost\fP
+True if the packet used \fIhost\fP as a gateway.
+I.e., the ethernet
+source or destination address was \fIhost\fP but neither the IP source
+nor the IP destination was \fIhost\fP.
+\fIHost\fP must be a name and
+must be found both by the machine's host-name-to-IP-address resolution
+mechanisms (host name file, DNS, NIS, etc.) and by the machine's
+host-name-to-Ethernet-address resolution mechanism (/etc/ethers, etc.).
+(An equivalent expression is
+.in +.5i
+.nf
+\fBether host \fIehost \fBand not host \fIhost\fR
+.fi
+.in -.5i
+which can be used with either names or numbers for \fIhost / ehost\fP.)
+This syntax does not work in IPv6-enabled configuration at this moment.
+.IP "\fBdst net \fInet\fR"
+True if the IPv4/v6 destination address of the packet has a network
+number of \fInet\fP.
+\fINet\fP may be either a name from /etc/networks
+or a network number (see \fInetworks(4)\fP for details).
+.IP "\fBsrc net \fInet\fR"
+True if the IPv4/v6 source address of the packet has a network
+number of \fInet\fP.
+.IP "\fBnet \fInet\fR"
+True if either the IPv4/v6 source or destination address of the packet has a network
+number of \fInet\fP.
+.IP "\fBnet \fInet\fR \fBmask \fInetmask\fR"
+True if the IP address matches \fInet\fR with the specific \fInetmask\fR.
+May be qualified with \fBsrc\fR or \fBdst\fR.
+Note that this syntax is not valid for IPv6 \fInet\fR.
+.IP "\fBnet \fInet\fR/\fIlen\fR"
+True if the IPv4/v6 address matches \fInet\fR with a netmask \fIlen\fR
+bits wide.
+May be qualified with \fBsrc\fR or \fBdst\fR.
+.IP "\fBdst port \fIport\fR"
+True if the packet is ip/tcp, ip/udp, ip6/tcp or ip6/udp and has a
+destination port value of \fIport\fP.
+The \fIport\fP can be a number or a name used in /etc/services (see
+.IR tcp (4P)
+and
+.IR udp (4P)).
+If a name is used, both the port
+number and protocol are checked.
+If a number or ambiguous name is used,
+only the port number is checked (e.g., \fBdst port 513\fR will print both
+tcp/login traffic and udp/who traffic, and \fBport domain\fR will print
+both tcp/domain and udp/domain traffic).
+.IP "\fBsrc port \fIport\fR"
+True if the packet has a source port value of \fIport\fP.
+.IP "\fBport \fIport\fR"
+True if either the source or destination port of the packet is \fIport\fP.
+Any of the above port expressions can be prepended with the keywords,
+\fBtcp\fP or \fBudp\fP, as in:
+.in +.5i
+.nf
+\fBtcp src port \fIport\fR
+.fi
+.in -.5i
+which matches only tcp packets whose source port is \fIport\fP.
+.IP "\fBless \fIlength\fR"
+True if the packet has a length less than or equal to \fIlength\fP.
+This is equivalent to:
+.in +.5i
+.nf
+\fBlen <= \fIlength\fP.
+.fi
+.in -.5i
+.IP "\fBgreater \fIlength\fR"
+True if the packet has a length greater than or equal to \fIlength\fP.
+This is equivalent to:
+.in +.5i
+.nf
+\fBlen >= \fIlength\fP.
+.fi
+.in -.5i
+.IP "\fBip proto \fIprotocol\fR"
+True if the packet is an IP packet (see
+.IR ip (4P))
+of protocol type \fIprotocol\fP.
+\fIProtocol\fP can be a number or one of the names
+\fIicmp\fP, \fIicmp6\fP, \fIigmp\fP, \fIigrp\fP, \fIpim\fP, \fIah\fP,
+\fIesp\fP, \fIvrrp\fP, \fIudp\fP, or \fItcp\fP.
+Note that the identifiers \fItcp\fP, \fIudp\fP, and \fIicmp\fP are also
+keywords and must be escaped via backslash (\\), which is \\\\ in the C-shell.
+Note that this primitive does not chase the protocol header chain.
+.IP "\fBip6 proto \fIprotocol\fR"
+True if the packet is an IPv6 packet of protocol type \fIprotocol\fP.
+Note that this primitive does not chase the protocol header chain.
+.IP "\fBip6 protochain \fIprotocol\fR"
+True if the packet is IPv6 packet,
+and contains protocol header with type \fIprotocol\fR
+in its protocol header chain.
+For example,
+.in +.5i
+.nf
+\fBip6 protochain 6\fR
+.fi
+.in -.5i
+matches any IPv6 packet with TCP protocol header in the protocol header chain.
+The packet may contain, for example,
+authentication header, routing header, or hop-by-hop option header,
+between IPv6 header and TCP header.
+The BPF code emitted by this primitive is complex and
+cannot be optimized by BPF optimizer code in \fItcpdump\fP,
+so this can be somewhat slow.
+.IP "\fBip protochain \fIprotocol\fR"
+Equivalent to \fBip6 protochain \fIprotocol\fR, but this is for IPv4.
+.IP "\fBether broadcast\fR"
+True if the packet is an ethernet broadcast packet.
+The \fIether\fP
+keyword is optional.
+.IP "\fBip broadcast\fR"
+True if the packet is an IP broadcast packet.
+It checks for both
+the all-zeroes and all-ones broadcast conventions, and looks up
+the local subnet mask.
+.IP "\fBether multicast\fR"
+True if the packet is an ethernet multicast packet.
+The \fIether\fP
+keyword is optional.
+This is shorthand for `\fBether[0] & 1 != 0\fP'.
+.IP "\fBip multicast\fR"
+True if the packet is an IP multicast packet.
+.IP "\fBip6 multicast\fR"
+True if the packet is an IPv6 multicast packet.
+.IP  "\fBether proto \fIprotocol\fR"
+True if the packet is of ether type \fIprotocol\fR.
+\fIProtocol\fP can be a number or one of the names
+\fIip\fP, \fIip6\fP, \fIarp\fP, \fIrarp\fP, \fIatalk\fP, \fIaarp\fP,
+\fIdecnet\fP, \fIsca\fP, \fIlat\fP, \fImopdl\fP, \fImoprc\fP,
+\fIiso\fP, \fIstp\fP, \fIipx\fP, or \fInetbeui\fP.
+Note these identifiers are also keywords
+and must be escaped via backslash (\\).
+.IP
+[In the case of FDDI (e.g., `\fBfddi protocol arp\fR') and Token Ring
+(e.g., `\fBtr protocol arp\fR'), for most of those protocols, the
+protocol identification comes from the 802.2 Logical Link Control (LLC)
+header, which is usually layered on top of the FDDI or Token Ring
+header.
+.IP
+When filtering for most protocol identifiers on FDDI or Token Ring,
+\fItcpdump\fR checks only the protocol ID field of an LLC header in
+so-called SNAP format with an Organizational Unit Identifier (OUI) of
+0x000000, for encapsulated Ethernet; it doesn't check whether the packet
+is in SNAP format with an OUI of 0x000000.
+.IP
+The exceptions are \fIiso\fP, for which it checks the DSAP (Destination
+Service Access Point) and SSAP (Source Service Access Point) fields of
+the LLC header, \fIstp\fP and \fInetbeui\fP, where it checks the DSAP of
+the LLC header, and \fIatalk\fP, where it checks for a SNAP-format
+packet with an OUI of 0x080007 and the Appletalk etype.
+.IP
+In the case of Ethernet, \fItcpdump\fR checks the Ethernet type field
+for most of those protocols; the exceptions are \fIiso\fP, \fIsap\fP,
+and \fInetbeui\fP, for which it checks for an 802.3 frame and then
+checks the LLC header as it does for FDDI and Token Ring, \fIatalk\fP,
+where it checks both for the Appletalk etype in an Ethernet frame and
+for a SNAP-format packet as it does for FDDI and Token Ring, \fIaarp\fP,
+where it checks for the Appletalk ARP etype in either an Ethernet frame
+or an 802.2 SNAP frame with an OUI of 0x000000, and \fIipx\fP, where it
+checks for the IPX etype in an Ethernet frame, the IPX DSAP in the LLC
+header, the 802.3 with no LLC header encapsulation of IPX, and the IPX
+etype in a SNAP frame.]
+.IP "\fBdecnet src \fIhost\fR"
+True if the DECNET source address is
+.IR host ,
+which may be an address of the form ``10.123'', or a DECNET host
+name.
+[DECNET host name support is only available on Ultrix systems
+that are configured to run DECNET.]
+.IP "\fBdecnet dst \fIhost\fR"
+True if the DECNET destination address is
+.IR host .
+.IP "\fBdecnet host \fIhost\fR"
+True if either the DECNET source or destination address is
+.IR host .
+.IP "\fBip\fR, \fBip6\fR, \fBarp\fR, \fBrarp\fR, \fBatalk\fR, \fBaarp\fR, \fBdecnet\fR, \fBiso\fR, \fBstp\fR, \fBipx\fR, \fInetbeui\fP"
+Abbreviations for:
+.in +.5i
+.nf
+\fBether proto \fIp\fR
+.fi
+.in -.5i
+where \fIp\fR is one of the above protocols.
+.IP "\fBlat\fR, \fBmoprc\fR, \fBmopdl\fR"
+Abbreviations for:
+.in +.5i
+.nf
+\fBether proto \fIp\fR
+.fi
+.in -.5i
+where \fIp\fR is one of the above protocols.
+Note that
+\fItcpdump\fP does not currently know how to parse these protocols.
+.IP "\fBvlan \fI[vlan_id]\fR"
+True if the packet is an IEEE 802.1Q VLAN packet.
+If \fI[vlan_id]\fR is specified, only true is the packet has the specified
+\fIvlan_id\fR.
+Note that the first \fBvlan\fR keyword encountered in \fIexpression\fR
+changes the decoding offsets for the remainder of \fIexpression\fR
+on the assumption that the packet is a VLAN packet.
+.IP  "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
+Abbreviations for:
+.in +.5i
+.nf
+\fBip proto \fIp\fR\fB or ip6 proto \fIp\fR
+.fi
+.in -.5i
+where \fIp\fR is one of the above protocols.
+.IP "\fBiso proto \fIprotocol\fR"
+True if the packet is an OSI packet of protocol type \fIprotocol\fP.
+\fIProtocol\fP can be a number or one of the names
+\fIclnp\fP, \fIesis\fP, or \fIisis\fP.
+.IP "\fBclnp\fR, \fBesis\fR, \fBisis\fR"
+Abbreviations for:
+.in +.5i
+.nf
+\fBiso proto \fIp\fR
+.fi
+.in -.5i
+where \fIp\fR is one of the above protocols.
+Note that \fItcpdump\fR does an incomplete job of parsing these protocols.
+.IP  "\fIexpr relop expr\fR"
+True if the relation holds, where \fIrelop\fR is one of >, <, >=, <=, =, !=,
+and \fIexpr\fR is an arithmetic expression composed of integer constants
+(expressed in standard C syntax), the normal binary operators
+[+, -, *, /, &, |], a length operator, and special packet data accessors.
+To access
+data inside the packet, use the following syntax:
+.in +.5i
+.nf
+\fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR
+.fi
+.in -.5i
+\fIProto\fR is one of \fBether, fddi, tr, ppp, slip, link,
+ip, arp, rarp, tcp, udp, icmp\fR or \fBip6\fR, and
+indicates the protocol layer for the index operation.
+(\fBether, fddi, tr, ppp, slip\fR and \fBlink\fR all refer to the link
+layer.)
+Note that \fItcp, udp\fR and other upper-layer protocol types only
+apply to IPv4, not IPv6 (this will be fixed in the future).
+The byte offset, relative to the indicated protocol layer, is
+given by \fIexpr\fR.
+\fISize\fR is optional and indicates the number of bytes in the
+field of interest; it can be either one, two, or four, and defaults to one.
+The length operator, indicated by the keyword \fBlen\fP, gives the
+length of the packet.
+
+For example, `\fBether[0] & 1 != 0\fP' catches all multicast traffic.
+The expression `\fBip[0] & 0xf != 5\fP'
+catches all IP packets with options.
+The expression
+`\fBip[6:2] & 0x1fff = 0\fP'
+catches only unfragmented datagrams and frag zero of fragmented datagrams.
+This check is implicitly applied to the \fBtcp\fP and \fBudp\fP
+index operations.
+For instance, \fBtcp[0]\fP always means the first
+byte of the TCP \fIheader\fP, and never means the first byte of an
+intervening fragment.
+
+Some offsets and field values may be expressed as names rather than
+as numeric values.
+The following protocol header field offsets are
+available: \fBicmptype\fP (ICMP type field), \fBicmpcode\fP (ICMP
+code field), and \fBtcpflags\fP (TCP flags field).
+
+The following ICMP type field values are available: \fBicmp-echoreply\fP,
+\fBicmp-unreach\fP, \fBicmp-sourcequench\fP, \fBicmp-redirect\fP,
+\fBicmp-echo\fP, \fBicmp-routeradvert\fP, \fBicmp-routersolicit\fP,
+\fBicmp-timxceed\fP, \fBicmp-paramprob\fP, \fBicmp-tstamp\fP,
+\fBicmp-tstampreply\fP, \fBicmp-ireq\fP, \fBicmp-ireqreply\fP,
+\fBicmp-maskreq\fP, \fBicmp-maskreply\fP.
+
+The following TCP flags field values are available: \fBtcp-fin\fP,
+\fBtcp-syn\fP, \fBtcp-rst\fP, \fBtcp-push\fP, \fBtcp-push\fP,
+\fBtcp-ack\fP, \fBtcp-urg\fP.
+.LP
+Primitives may be combined using:
+.IP
+A parenthesized group of primitives and operators
+(parentheses are special to the Shell and must be escaped).
+.IP
+Negation (`\fB!\fP' or `\fBnot\fP').
+.IP
+Concatenation (`\fB&&\fP' or `\fBand\fP').
+.IP
+Alternation (`\fB||\fP' or `\fBor\fP').
+.LP
+Negation has highest precedence.
+Alternation and concatenation have equal precedence and associate
+left to right.
+Note that explicit \fBand\fR tokens, not juxtaposition,
+are now required for concatenation.
+.LP
+If an identifier is given without a keyword, the most recent keyword
+is assumed.
+For example,
+.in +.5i
+.nf
+\fBnot host vs and ace\fR
+.fi
+.in -.5i
+is short for
+.in +.5i
+.nf
+\fBnot host vs and host ace\fR
+.fi
+.in -.5i
+which should not be confused with
+.in +.5i
+.nf
+\fBnot ( host vs or ace )\fR
+.fi
+.in -.5i
+.LP
+Expression arguments can be passed to \fItcpdump\fP as either a single
+argument or as multiple arguments, whichever is more convenient.
+Generally, if the expression contains Shell metacharacters, it is
+easier to pass it as a single, quoted argument.
+Multiple arguments are concatenated with spaces before being parsed.
+.SH EXAMPLES
+.LP
+To print all packets arriving at or departing from \fIsundown\fP:
+.RS
+.nf
+\fBtcpdump host sundown\fP
+.fi
+.RE
+.LP
+To print traffic between \fIhelios\fR and either \fIhot\fR or \fIace\fR:
+.RS
+.nf
+\fBtcpdump host helios and \\( hot or ace \\)\fP
+.fi
+.RE
+.LP
+To print all IP packets between \fIace\fR and any host except \fIhelios\fR:
+.RS
+.nf
+\fBtcpdump ip host ace and not helios\fP
+.fi
+.RE
+.LP
+To print all traffic between local hosts and hosts at Berkeley:
+.RS
+.nf
+.B
+tcpdump net ucb-ether
+.fi
+.RE
+.LP
+To print all ftp traffic through internet gateway \fIsnup\fP:
+(note that the expression is quoted to prevent the shell from
+(mis-)interpreting the parentheses):
+.RS
+.nf
+.B
+tcpdump 'gateway snup and (port ftp or ftp-data)'
+.fi
+.RE
+.LP
+To print traffic neither sourced from nor destined for local hosts
+(if you gateway to one other net, this stuff should never make it
+onto your local net).
+.RS
+.nf
+.B
+tcpdump ip and not net \fIlocalnet\fP
+.fi
+.RE
+.LP
+To print the start and end packets (the SYN and FIN packets) of each
+TCP conversation that involves a non-local host.
+.RS
+.nf
+.B
+tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net \fIlocalnet\fP'
+.fi
+.RE
+.LP
+To print IP packets longer than 576 bytes sent through gateway \fIsnup\fP:
+.RS
+.nf
+.B
+tcpdump 'gateway snup and ip[2:2] > 576'
+.fi
+.RE
+.LP
+To print IP broadcast or multicast packets that were
+.I not
+sent via ethernet broadcast or multicast:
+.RS
+.nf
+.B
+tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
+.fi
+.RE
+.LP
+To print all ICMP packets that are not echo requests/replies (i.e., not
+ping packets):
+.RS
+.nf
+.B
+tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
+.fi
+.RE
+.SH OUTPUT FORMAT
+.LP
+The output of \fItcpdump\fP is protocol dependent.
+The following
+gives a brief description and examples of most of the formats.
+.de HD
+.sp 1.5
+.B
+..
+.HD
+Link Level Headers
+.LP
+If the '-e' option is given, the link level header is printed out.
+On ethernets, the source and destination addresses, protocol,
+and packet length are printed.
+.LP
+On FDDI networks, the  '-e' option causes \fItcpdump\fP to print
+the `frame control' field,  the source and destination addresses,
+and the packet length.
+(The `frame control' field governs the
+interpretation of the rest of the packet.
+Normal packets (such
+as those containing IP datagrams) are `async' packets, with a priority
+value between 0 and 7; for example, `\fBasync4\fR'.
+Such packets
+are assumed to contain an 802.2 Logical Link Control (LLC) packet;
+the LLC header is printed if it is \fInot\fR an ISO datagram or a
+so-called SNAP packet.
+.LP
+On Token Ring networks, the '-e' option causes \fItcpdump\fP to print
+the `access control' and `frame control' fields, the source and
+destination addresses, and the packet length.
+As on FDDI networks,
+packets are assumed to contain an LLC packet.
+Regardless of whether
+the '-e' option is specified or not, the source routing information is
+printed for source-routed packets.
+.LP
+\fI(N.B.: The following description assumes familiarity with
+the SLIP compression algorithm described in RFC-1144.)\fP
+.LP
+On SLIP links, a direction indicator (``I'' for inbound, ``O'' for outbound),
+packet type, and compression information are printed out.
+The packet type is printed first.
+The three types are \fIip\fP, \fIutcp\fP, and \fIctcp\fP.
+No further link information is printed for \fIip\fR packets.
+For TCP packets, the connection identifier is printed following the type.
+If the packet is compressed, its encoded header is printed out.
+The special cases are printed out as
+\fB*S+\fIn\fR and \fB*SA+\fIn\fR, where \fIn\fR is the amount by which
+the sequence number (or sequence number and ack) has changed.
+If it is not a special case,
+zero or more changes are printed.
+A change is indicated by U (urgent pointer), W (window), A (ack),
+S (sequence number), and I (packet ID), followed by a delta (+n or -n),
+or a new value (=n).
+Finally, the amount of data in the packet and compressed header length
+are printed.
+.LP
+For example, the following line shows an outbound compressed TCP packet,
+with an implicit connection identifier; the ack has changed by 6,
+the sequence number by 49, and the packet ID by 6; there are 3 bytes of
+data and 6 bytes of compressed header:
+.RS
+.nf
+\fBO ctcp * A+6 S+49 I+6 3 (6)\fP
+.fi
+.RE
+.HD
+ARP/RARP Packets
+.LP
+Arp/rarp output shows the type of request and its arguments.
+The
+format is intended to be self explanatory.
+Here is a short sample taken from the start of an `rlogin' from
+host \fIrtsg\fP to host \fIcsam\fP:
+.RS
+.nf
+.sp .5
+\f(CWarp who-has csam tell rtsg
+arp reply csam is-at CSAM\fR
+.sp .5
+.fi
+.RE
+The first line says that rtsg sent an arp packet asking
+for the ethernet address of internet host csam.
+Csam
+replies with its ethernet address (in this example, ethernet addresses
+are in caps and internet addresses in lower case).
+.LP
+This would look less redundant if we had done \fItcpdump \-n\fP:
+.RS
+.nf
+.sp .5
+\f(CWarp who-has 128.3.254.6 tell 128.3.254.68
+arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP
+.fi
+.RE
+.LP
+If we had done \fItcpdump \-e\fP, the fact that the first packet is
+broadcast and the second is point-to-point would be visible:
+.RS
+.nf
+.sp .5
+\f(CWRTSG Broadcast 0806  64: arp who-has csam tell rtsg
+CSAM RTSG 0806  64: arp reply csam is-at CSAM\fR
+.sp .5
+.fi
+.RE
+For the first packet this says the ethernet source address is RTSG, the
+destination is the ethernet broadcast address, the type field
+contained hex 0806 (type ETHER_ARP) and the total length was 64 bytes.
+.HD
+TCP Packets
+.LP
+\fI(N.B.:The following description assumes familiarity with
+the TCP protocol described in RFC-793.
+If you are not familiar
+with the protocol, neither this description nor \fItcpdump\fP will
+be of much use to you.)\fP
+.LP
+The general format of a tcp protocol line is:
+.RS
+.nf
+.sp .5
+\fIsrc > dst: flags data-seqno ack window urgent options\fP
+.sp .5
+.fi
+.RE
+\fISrc\fP and \fIdst\fP are the source and destination IP
+addresses and ports.
+\fIFlags\fP are some combination of S (SYN),
+F (FIN), P (PUSH) or R (RST) or a single `.' (no flags).
+\fIData-seqno\fP describes the portion of sequence space covered
+by the data in this packet (see example below).
+\fIAck\fP is sequence number of the next data expected the other
+direction on this connection.
+\fIWindow\fP is the number of bytes of receive buffer space available
+the other direction on this connection.
+\fIUrg\fP indicates there is `urgent' data in the packet.
+\fIOptions\fP are tcp options enclosed in angle brackets (e.g., <mss 1024>).
+.LP
+\fISrc, dst\fP and \fIflags\fP are always present.
+The other fields
+depend on the contents of the packet's tcp protocol header and
+are output only if appropriate.
+.LP
+Here is the opening portion of an rlogin from host \fIrtsg\fP to
+host \fIcsam\fP.
+.RS
+.nf
+.sp .5
+\s-2\f(CWrtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
+csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
+rtsg.1023 > csam.login: . ack 1 win 4096
+rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
+csam.login > rtsg.1023: . ack 2 win 4096
+rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
+csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
+csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
+csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1\fR\s+2
+.sp .5
+.fi
+.RE
+The first line says that tcp port 1023 on rtsg sent a packet
+to port \fIlogin\fP
+on csam.
+The \fBS\fP indicates that the \fISYN\fP flag was set.
+The packet sequence number was 768512 and it contained no data.
+(The notation is `first:last(nbytes)' which means `sequence
+numbers \fIfirst\fP
+up to but not including \fIlast\fP which is \fInbytes\fP bytes of user data'.)
+There was no piggy-backed ack, the available receive window was 4096
+bytes and there was a max-segment-size option requesting an mss of
+1024 bytes.
+.LP
+Csam replies with a similar packet except it includes a piggy-backed
+ack for rtsg's SYN.
+Rtsg then acks csam's SYN.
+The `.' means no
+flags were set.
+The packet contained no data so there is no data sequence number.
+Note that the ack sequence
+number is a small integer (1).
+The first time \fItcpdump\fP sees a
+tcp `conversation', it prints the sequence number from the packet.
+On subsequent packets of the conversation, the difference between
+the current packet's sequence number and this initial sequence number
+is printed.
+This means that sequence numbers after the
+first can be interpreted
+as relative byte positions in the conversation's data stream (with the
+first data byte each direction being `1').
+`-S' will override this
+feature, causing the original sequence numbers to be output.
+.LP
+On the 6th line, rtsg sends csam 19 bytes of data (bytes 2 through 20
+in the rtsg \(-> csam side of the conversation).
+The PUSH flag is set in the packet.
+On the 7th line, csam says it's received data sent by rtsg up to
+but not including byte 21.
+Most of this data is apparently sitting in the
+socket buffer since csam's receive window has gotten 19 bytes smaller.
+Csam also sends one byte of data to rtsg in this packet.
+On the 8th and 9th lines,
+csam sends two bytes of urgent, pushed data to rtsg.
+.LP
+If the snapshot was small enough that \fItcpdump\fP didn't capture
+the full TCP header, it interprets as much of the header as it can
+and then reports ``[|\fItcp\fP]'' to indicate the remainder could not
+be interpreted.
+If the header contains a bogus option (one with a length
+that's either too small or beyond the end of the header), \fItcpdump\fP
+reports it as ``[\fIbad opt\fP]'' and does not interpret any further
+options (since it's impossible to tell where they start).
+If the header
+length indicates options are present but the IP datagram length is not
+long enough for the options to actually be there, \fItcpdump\fP reports
+it as ``[\fIbad hdr length\fP]''.
+.HD
+.B Capturing TCP packets with particular flag combinations (SYN-ACK, URG-ACK, etc.)
+.PP
+There are 8 bits in the control bits section of the TCP header:
+.IP
+.I CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
+.PP
+Let's assume that we want to watch packets used in establishing
+a TCP connection.
+Recall that TCP uses a 3-way handshake protocol
+when it initializes a new connection; the connection sequence with
+regard to the TCP control bits is
+.PP
+.RS
+1) Caller sends SYN
+.RE
+.RS
+2) Recipient responds with SYN, ACK
+.RE
+.RS
+3) Caller sends ACK
+.RE
+.PP
+Now we're interested in capturing packets that have only the
+SYN bit set (Step 1).
+Note that we don't want packets from step 2
+(SYN-ACK), just a plain initial SYN.
+What we need is a correct filter
+expression for \fItcpdump\fP.
+.PP
+Recall the structure of a TCP header without options:
+.PP
+.nf
+ 0                            15                              31
+-----------------------------------------------------------------
+|          source port          |       destination port        |
+-----------------------------------------------------------------
+|                        sequence number                        |
+-----------------------------------------------------------------
+|                     acknowledgment number                     |
+-----------------------------------------------------------------
+|  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size            |
+-----------------------------------------------------------------
+|         TCP checksum          |       urgent pointer          |
+-----------------------------------------------------------------
+.fi
+.PP
+A TCP header usually holds 20 octets of data, unless options are
+present.
+The first line of the graph contains octets 0 - 3, the
+second line shows octets 4 - 7 etc.
+.PP
+Starting to count with 0, the relevant TCP control bits are contained
+in octet 13:
+.PP
+.nf
+ 0             7|             15|             23|             31
+----------------|---------------|---------------|----------------
+|  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size            |
+----------------|---------------|---------------|----------------
+|               |  13th octet   |               |               |
+.fi
+.PP
+Let's have a closer look at octet no. 13:
+.PP
+.nf
+                |               |
+                |---------------|
+                |C|E|U|A|P|R|S|F|
+                |---------------|
+                |7   5   3     0|
+.fi
+.PP
+These are the TCP control bits we are interested
+in.
+We have numbered the bits in this octet from 0 to 7, right to
+left, so the PSH bit is bit number 3, while the URG bit is number 5.
+.PP
+Recall that we want to capture packets with only SYN set.
+Let's see what happens to octet 13 if a TCP datagram arrives
+with the SYN bit set in its header:
+.PP
+.nf
+                |C|E|U|A|P|R|S|F|
+                |---------------|
+                |0 0 0 0 0 0 1 0|
+                |---------------|
+                |7 6 5 4 3 2 1 0|
+.fi
+.PP
+Looking at the
+control bits section we see that only bit number 1 (SYN) is set.
+.PP
+Assuming that octet number 13 is an 8-bit unsigned integer in
+network byte order, the binary value of this octet is
+.IP
+00000010
+.PP
+and its decimal representation is
+.PP
+.nf
+   7     6     5     4     3     2     1     0
+0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2  =  2
+.fi
+.PP
+We're almost done, because now we know that if only SYN is set,
+the value of the 13th octet in the TCP header, when interpreted
+as a 8-bit unsigned integer in network byte order, must be exactly 2.
+.PP
+This relationship can be expressed as
+.RS
+.B
+tcp[13] == 2
+.RE
+.PP
+We can use this expression as the filter for \fItcpdump\fP in order
+to watch packets which have only SYN set:
+.RS
+.B
+tcpdump -i xl0 tcp[13] == 2
+.RE
+.PP
+The expression says "let the 13th octet of a TCP datagram have
+the decimal value 2", which is exactly what we want.
+.PP
+Now, let's assume that we need to capture SYN packets, but we
+don't care if ACK or any other TCP control bit is set at the
+same time.
+Let's see what happens to octet 13 when a TCP datagram
+with SYN-ACK set arrives:
+.PP
+.nf
+     |C|E|U|A|P|R|S|F|
+     |---------------|
+     |0 0 0 1 0 0 1 0|
+     |---------------|
+     |7 6 5 4 3 2 1 0|
+.fi
+.PP
+Now bits 1 and 4 are set in the 13th octet.
+The binary value of
+octet 13 is
+.IP
+     00010010
+.PP
+which translates to decimal
+.PP
+.nf
+   7     6     5     4     3     2     1     0
+0*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2   = 18
+.fi
+.PP
+Now we can't just use 'tcp[13] == 18' in the \fItcpdump\fP filter
+expression, because that would select only those packets that have
+SYN-ACK set, but not those with only SYN set.
+Remember that we don't care
+if ACK or any other control bit is set as long as SYN is set.
+.PP
+In order to achieve our goal, we need to logically AND the
+binary value of octet 13 with some other value to preserve
+the SYN bit.
+We know that we want SYN to be set in any case,
+so we'll logically AND the value in the 13th octet with
+the binary value of a SYN:
+.PP
+.nf
+
+          00010010 SYN-ACK              00000010 SYN
+     AND  00000010 (we want SYN)   AND  00000010 (we want SYN)
+          --------                      --------
+     =    00000010                 =    00000010
+.fi
+.PP
+We see that this AND operation delivers the same result
+regardless whether ACK or another TCP control bit is set.
+The decimal representation of the AND value as well as
+the result of this operation is 2 (binary 00000010),
+so we know that for packets with SYN set the following
+relation must hold true:
+.IP
+( ( value of octet 13 ) AND ( 2 ) ) == ( 2 )
+.PP
+This points us to the \fItcpdump\fP filter expression
+.RS
+.B
+     tcpdump -i xl0 'tcp[13] & 2 == 2'
+.RE
+.PP
+Note that you should use single quotes or a backslash
+in the expression to hide the AND ('&') special character
+from the shell.
+.HD
+.B
+UDP Packets
+.LP
+UDP format is illustrated by this rwho packet:
+.RS
+.nf
+.sp .5
+\f(CWactinide.who > broadcast.who: udp 84\fP
+.sp .5
+.fi
+.RE
+This says that port \fIwho\fP on host \fIactinide\fP sent a udp
+datagram to port \fIwho\fP on host \fIbroadcast\fP, the Internet
+broadcast address.
+The packet contained 84 bytes of user data.
+.LP
+Some UDP services are recognized (from the source or destination
+port number) and the higher level protocol information printed.
+In particular, Domain Name service requests (RFC-1034/1035) and Sun
+RPC calls (RFC-1050) to NFS.
+.HD
+UDP Name Server Requests
+.LP
+\fI(N.B.:The following description assumes familiarity with
+the Domain Service protocol described in RFC-1035.
+If you are not familiar
+with the protocol, the following description will appear to be written
+in greek.)\fP
+.LP
+Name server requests are formatted as
+.RS
+.nf
+.sp .5
+\fIsrc > dst: id op? flags qtype qclass name (len)\fP
+.sp .5
+\f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fR
+.sp .5
+.fi
+.RE
+Host \fIh2opolo\fP asked the domain server on \fIhelios\fP for an
+address record (qtype=A) associated with the name \fIucbvax.berkeley.edu.\fP
+The query id was `3'.
+The `+' indicates the \fIrecursion desired\fP flag
+was set.
+The query length was 37 bytes, not including the UDP and
+IP protocol headers.
+The query operation was the normal one, \fIQuery\fP,
+so the op field was omitted.
+If the op had been anything else, it would
+have been printed between the `3' and the `+'.
+Similarly, the qclass was the normal one,
+\fIC_IN\fP, and omitted.
+Any other qclass would have been printed
+immediately after the `A'.
+.LP
+A few anomalies are checked and may result in extra fields enclosed in
+square brackets:  If a query contains an answer, authority records or
+additional records section,
+.IR ancount ,
+.IR nscount ,
+or
+.I arcount
+are printed as `[\fIn\fPa]', `[\fIn\fPn]' or  `[\fIn\fPau]' where \fIn\fP
+is the appropriate count.
+If any of the response bits are set (AA, RA or rcode) or any of the
+`must be zero' bits are set in bytes two and three, `[b2&3=\fIx\fP]'
+is printed, where \fIx\fP is the hex value of header bytes two and three.
+.HD
+UDP Name Server Responses
+.LP
+Name server responses are formatted as
+.RS
+.nf
+.sp .5
+\fIsrc > dst:  id op rcode flags a/n/au type class data (len)\fP
+.sp .5
+\f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
+helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fR
+.sp .5
+.fi
+.RE
+In the first example, \fIhelios\fP responds to query id 3 from \fIh2opolo\fP
+with 3 answer records, 3 name server records and 7 additional records.
+The first answer record is type A (address) and its data is internet
+address 128.32.137.3.
+The total size of the response was 273 bytes,
+excluding UDP and IP headers.
+The op (Query) and response code
+(NoError) were omitted, as was the class (C_IN) of the A record.
+.LP
+In the second example, \fIhelios\fP responds to query 2 with a
+response code of non-existent domain (NXDomain) with no answers,
+one name server and no authority records.
+The `*' indicates that
+the \fIauthoritative answer\fP bit was set.
+Since there were no
+answers, no type, class or data were printed.
+.LP
+Other flag characters that might appear are `\-' (recursion available,
+RA, \fInot\fP set) and `|' (truncated message, TC, set).
+If the
+`question' section doesn't contain exactly one entry, `[\fIn\fPq]'
+is printed.
+.LP
+Note that name server requests and responses tend to be large and the
+default \fIsnaplen\fP of 68 bytes may not capture enough of the packet
+to print.
+Use the \fB\-s\fP flag to increase the snaplen if you
+need to seriously investigate name server traffic.
+`\fB\-s 128\fP'
+has worked well for me.
+
+.HD
+SMB/CIFS decoding
+.LP
+\fItcpdump\fP now includes fairly extensive SMB/CIFS/NBT decoding for data
+on UDP/137, UDP/138 and TCP/139.
+Some primitive decoding of IPX and
+NetBEUI SMB data is also done.
+
+By default a fairly minimal decode is done, with a much more detailed
+decode done if -v is used.
+Be warned that with -v a single SMB packet
+may take up a page or more, so only use -v if you really want all the
+gory details.
+
+If you are decoding SMB sessions containing unicode strings then you
+may wish to set the environment variable USE_UNICODE to 1.
+A patch to
+auto-detect unicode srings would be welcome.
+
+For information on SMB packet formats and what all te fields mean see
+www.cifs.org or the pub/samba/specs/ directory on your favourite
+samba.org mirror site.
+The SMB patches were written by Andrew Tridgell
+(tridge at samba.org).
+
+.HD
+NFS Requests and Replies
+.LP
+Sun NFS (Network File System) requests and replies are printed as:
+.RS
+.nf
+.sp .5
+\fIsrc.xid > dst.nfs: len op args\fP
+\fIsrc.nfs > dst.xid: reply stat len op results\fP
+.sp .5
+\f(CW
+sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
+wrl.nfs > sushi.6709: reply ok 40 readlink "../var"
+sushi.201b > wrl.nfs:
+	144 lookup fh 9,74/4096.6878 "xcolors"
+wrl.nfs > sushi.201b:
+	reply ok 128 lookup fh 9,74/4134.3150
+\fR
+.sp .5
+.fi
+.RE
+In the first line, host \fIsushi\fP sends a transaction with id \fI6709\fP
+to \fIwrl\fP (note that the number following the src host is a
+transaction id, \fInot\fP the source port).
+The request was 112 bytes,
+excluding the UDP and IP headers.
+The operation was a \fIreadlink\fP
+(read symbolic link) on file handle (\fIfh\fP) 21,24/10.731657119.
+(If one is lucky, as in this case, the file handle can be interpreted
+as a major,minor device number pair, followed by the inode number and
+generation number.)
+\fIWrl\fP replies `ok' with the contents of the link.
+.LP
+In the third line, \fIsushi\fP asks \fIwrl\fP to lookup the name
+`\fIxcolors\fP' in directory file 9,74/4096.6878.
+Note that the data printed
+depends on the operation type.
+The format is intended to be self
+explanatory if read in conjunction with
+an NFS protocol spec.
+.LP
+If the \-v (verbose) flag is given, additional information is printed.
+For example:
+.RS
+.nf
+.sp .5
+\f(CW
+sushi.1372a > wrl.nfs:
+	148 read fh 21,11/12.195 8192 bytes @ 24576
+wrl.nfs > sushi.1372a:
+	reply ok 1472 read REG 100664 ids 417/0 sz 29388
+\fP
+.sp .5
+.fi
+.RE
+(\-v also prints the IP header TTL, ID, length, and fragmentation fields,
+which have been omitted from this example.)  In the first line,
+\fIsushi\fP asks \fIwrl\fP to read 8192 bytes from file 21,11/12.195,
+at byte offset 24576.
+\fIWrl\fP replies `ok'; the packet shown on the
+second line is the first fragment of the reply, and hence is only 1472
+bytes long (the other bytes will follow in subsequent fragments, but
+these fragments do not have NFS or even UDP headers and so might not be
+printed, depending on the filter expression used).
+Because the \-v flag
+is given, some of the file attributes (which are returned in addition
+to the file data) are printed: the file type (``REG'', for regular file),
+the file mode (in octal), the uid and gid, and the file size.
+.LP
+If the \-v flag is given more than once, even more details are printed.
+.LP
+Note that NFS requests are very large and much of the detail won't be printed
+unless \fIsnaplen\fP is increased.
+Try using `\fB\-s 192\fP' to watch
+NFS traffic.
+.LP
+NFS reply packets do not explicitly identify the RPC operation.
+Instead,
+\fItcpdump\fP keeps track of ``recent'' requests, and matches them to the
+replies using the transaction ID.
+If a reply does not closely follow the
+corresponding request, it might not be parsable.
+.HD
+AFS Requests and Replies
+.LP
+Transarc AFS (Andrew File System) requests and replies are printed
+as:
+.HD
+.RS
+.nf
+.sp .5
+\fIsrc.sport > dst.dport: rx packet-type\fP
+\fIsrc.sport > dst.dport: rx packet-type service call call-name args\fP
+\fIsrc.sport > dst.dport: rx packet-type service reply call-name args\fP
+.sp .5
+\f(CW
+elvis.7001 > pike.afsfs:
+	rx data fs call rename old fid 536876964/1/1 ".newsrc.new"
+	new fid 536876964/1/1 ".newsrc"
+pike.afsfs > elvis.7001: rx data fs reply rename
+\fR
+.sp .5
+.fi
+.RE
+In the first line, host elvis sends a RX packet to pike.
+This was
+a RX data packet to the fs (fileserver) service, and is the start of
+an RPC call.
+The RPC call was a rename, with the old directory file id
+of 536876964/1/1 and an old filename of `.newsrc.new', and a new directory
+file id of 536876964/1/1 and a new filename of `.newsrc'.
+The host pike
+responds with a RPC reply to the rename call (which was successful, because
+it was a data packet and not an abort packet).
+.LP
+In general, all AFS RPCs are decoded at least by RPC call name.
+Most
+AFS RPCs have at least some of the arguments decoded (generally only
+the `interesting' arguments, for some definition of interesting).
+.LP
+The format is intended to be self-describing, but it will probably
+not be useful to people who are not familiar with the workings of
+AFS and RX.
+.LP
+If the -v (verbose) flag is given twice, acknowledgement packets and
+additional header information is printed, such as the the RX call ID,
+call number, sequence number, serial number, and the RX packet flags.
+.LP
+If the -v flag is given twice, additional information is printed,
+such as the the RX call ID, serial number, and the RX packet flags.
+The MTU negotiation information is also printed from RX ack packets.
+.LP
+If the -v flag is given three times, the security index and service id
+are printed.
+.LP
+Error codes are printed for abort packets, with the exception of Ubik
+beacon packets (because abort packets are used to signify a yes vote
+for the Ubik protocol).
+.LP
+Note that AFS requests are very large and many of the arguments won't
+be printed unless \fIsnaplen\fP is increased.
+Try using `\fB-s 256\fP'
+to watch AFS traffic.
+.LP
+AFS reply packets do not explicitly identify the RPC operation.
+Instead,
+\fItcpdump\fP keeps track of ``recent'' requests, and matches them to the
+replies using the call number and service ID.
+If a reply does not closely
+follow the
+corresponding request, it might not be parsable.
+
+.HD
+KIP Appletalk (DDP in UDP)
+.LP
+Appletalk DDP packets encapsulated in UDP datagrams are de-encapsulated
+and dumped as DDP packets (i.e., all the UDP header information is
+discarded).
+The file
+.I /etc/atalk.names
+is used to translate appletalk net and node numbers to names.
+Lines in this file have the form
+.RS
+.nf
+.sp .5
+\fInumber	name\fP
+
+\f(CW1.254		ether
+16.1		icsd-net
+1.254.110	ace\fR
+.sp .5
+.fi
+.RE
+The first two lines give the names of appletalk networks.
+The third
+line gives the name of a particular host (a host is distinguished
+from a net by the 3rd octet in the number \-
+a net number \fImust\fP have two octets and a host number \fImust\fP
+have three octets.)  The number and name should be separated by
+whitespace (blanks or tabs).
+The
+.I /etc/atalk.names
+file may contain blank lines or comment lines (lines starting with
+a `#').
+.LP
+Appletalk addresses are printed in the form
+.RS
+.nf
+.sp .5
+\fInet.host.port\fP
+
+\f(CW144.1.209.2 > icsd-net.112.220
+office.2 > icsd-net.112.220
+jssmag.149.235 > icsd-net.2\fR
+.sp .5
+.fi
+.RE
+(If the
+.I /etc/atalk.names
+doesn't exist or doesn't contain an entry for some appletalk
+host/net number, addresses are printed in numeric form.)
+In the first example, NBP (DDP port 2) on net 144.1 node 209
+is sending to whatever is listening on port 220 of net icsd node 112.
+The second line is the same except the full name of the source node
+is known (`office').
+The third line is a send from port 235 on
+net jssmag node 149 to broadcast on the icsd-net NBP port (note that
+the broadcast address (255) is indicated by a net name with no host
+number \- for this reason it's a good idea to keep node names and
+net names distinct in /etc/atalk.names).
+.LP
+NBP (name binding protocol) and ATP (Appletalk transaction protocol)
+packets have their contents interpreted.
+Other protocols just dump
+the protocol name (or number if no name is registered for the
+protocol) and packet size.
+
+\fBNBP packets\fP are formatted like the following examples:
+.RS
+.nf
+.sp .5
+\s-2\f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"
+jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250
+techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fR\s+2
+.sp .5
+.fi
+.RE
+The first line is a name lookup request for laserwriters sent by net icsd host
+112 and broadcast on net jssmag.
+The nbp id for the lookup is 190.
+The second line shows a reply for this request (note that it has the
+same id) from host jssmag.209 saying that it has a laserwriter
+resource named "RM1140" registered on port 250.
+The third line is
+another reply to the same request saying host techpit has laserwriter
+"techpit" registered on port 186.
+
+\fBATP packet\fP formatting is demonstrated by the following example:
+.RS
+.nf
+.sp .5
+\s-2\f(CWjssmag.209.165 > helios.132: atp-req  12266<0-7> 0xae030001
+helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
+jssmag.209.165 > helios.132: atp-req  12266<3,5> 0xae030001
+helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
+jssmag.209.165 > helios.132: atp-rel  12266<0-7> 0xae030001
+jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fR\s+2
+.sp .5
+.fi
+.RE
+Jssmag.209 initiates transaction id 12266 with host helios by requesting
+up to 8 packets (the `<0-7>').
+The hex number at the end of the line
+is the value of the `userdata' field in the request.
+.LP
+Helios responds with 8 512-byte packets.
+The `:digit' following the
+transaction id gives the packet sequence number in the transaction
+and the number in parens is the amount of data in the packet,
+excluding the atp header.
+The `*' on packet 7 indicates that the
+EOM bit was set.
+.LP
+Jssmag.209 then requests that packets 3 & 5 be retransmitted.
+Helios
+resends them then jssmag.209 releases the transaction.
+Finally,
+jssmag.209 initiates the next request.
+The `*' on the request
+indicates that XO (`exactly once') was \fInot\fP set.
+
+.HD
+IP Fragmentation
+.LP
+Fragmented Internet datagrams are printed as
+.RS
+.nf
+.sp .5
+\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB+)\fR
+\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB)\fR
+.sp .5
+.fi
+.RE
+(The first form indicates there are more fragments.
+The second
+indicates this is the last fragment.)
+.LP
+\fIId\fP is the fragment id.
+\fISize\fP is the fragment
+size (in bytes) excluding the IP header.
+\fIOffset\fP is this
+fragment's offset (in bytes) in the original datagram.
+.LP
+The fragment information is output for each fragment.
+The first
+fragment contains the higher level protocol header and the frag
+info is printed after the protocol info.
+Fragments
+after the first contain no higher level protocol header and the
+frag info is printed after the source and destination addresses.
+For example, here is part of an ftp from arizona.edu to lbl-rtsg.arpa
+over a CSNET connection that doesn't appear to handle 576 byte datagrams:
+.RS
+.nf
+.sp .5
+\s-2\f(CWarizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328 at 0+)
+arizona > rtsg: (frag 595a:204 at 328)
+rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560\fP\s+2
+.sp .5
+.fi
+.RE
+There are a couple of things to note here:  First, addresses in the
+2nd line don't include port numbers.
+This is because the TCP
+protocol information is all in the first fragment and we have no idea
+what the port or sequence numbers are when we print the later fragments.
+Second, the tcp sequence information in the first line is printed as if there
+were 308 bytes of user data when, in fact, there are 512 bytes (308 in
+the first frag and 204 in the second).
+If you are looking for holes
+in the sequence space or trying to match up acks
+with packets, this can fool you.
+.LP
+A packet with the IP \fIdon't fragment\fP flag is marked with a
+trailing \fB(DF)\fP.
+.HD
+Timestamps
+.LP
+By default, all output lines are preceded by a timestamp.
+The timestamp
+is the current clock time in the form
+.RS
+.nf
+\fIhh:mm:ss.frac\fP
+.fi
+.RE
+and is as accurate as the kernel's clock.
+The timestamp reflects the time the kernel first saw the packet.
+No attempt
+is made to account for the time lag between when the
+ethernet interface removed the packet from the wire and when the kernel
+serviced the `new packet' interrupt.
+.SH "SEE ALSO"
+traffic(1C), nit(4P), bpf(4), pcap(3)
+.SH AUTHORS
+The original authors are:
+.LP
+Van Jacobson,
+Craig Leres and
+Steven McCanne, all of the
+Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
+.LP
+It is currently being maintained by tcpdump.org.
+.LP
+The current version is available via http:
+.LP
+.RS
+.I http://www.tcpdump.org/
+.RE
+.LP
+The original distribution is available via anonymous ftp:
+.LP
+.RS
+.I ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
+.RE
+.LP
+IPv6/IPsec support is added by WIDE/KAME project.
+This program uses Eric Young's SSLeay library, under specific configuration.
+.SH BUGS
+Please send problems, bugs, questions, desirable enhancements, etc. to:
+.LP
+.RS
+tcpdump-workers at tcpdump.org
+.RE
+.LP
+Please send source code contributions, etc. to:
+.LP
+.RS
+patches at tcpdump.org
+.RE
+.LP
+NIT doesn't let you watch your own outbound traffic, BPF will.
+We recommend that you use the latter.
+.LP
+On Linux systems with 2.0[.x] kernels:
+.IP
+packets on the loopback device will be seen twice;
+.IP
+packet filtering cannot be done in the kernel, so that all packets must
+be copied from the kernel in order to be filtered in user mode;
+.IP
+all of a packet, not just the part that's within the snapshot length,
+will be copied from the kernel (the 2.0[.x] packet capture mechanism, if
+asked to copy only part of a packet to userland, will not report the
+true length of the packet; this would cause most IP packets to get an
+error from
+.BR tcpdump );
+.IP
+capturing on some PPP devices won't work correctly.
+.LP
+We recommend that you upgrade to a 2.2 or later kernel.
+.LP
+Some attempt should be made to reassemble IP fragments or, at least
+to compute the right length for the higher level protocol.
+.LP
+Name server inverse queries are not dumped correctly: the (empty)
+question section is printed rather than real query in the answer
+section.
+Some believe that inverse queries are themselves a bug and
+prefer to fix the program generating them rather than \fItcpdump\fP.
+.LP
+A packet trace that crosses a daylight savings time change will give
+skewed time stamps (the time change is ignored).
+.LP
+Filter expressions that manipulate FDDI or Token Ring headers assume
+that all FDDI and Token Ring packets are SNAP-encapsulated Ethernet
+packets.
+This is true for IP, ARP, and DECNET Phase IV, but is not true
+for protocols such as ISO CLNS.
+Therefore, the filter may inadvertently
+accept certain packets that do not properly match the filter expression.
+.LP
+Filter expressions on fields other than those that manipulate Token Ring
+headers will not correctly handle source-routed Token Ring packets.
+.LP
+.BR "ip6 proto"
+should chase header chain, but at this moment it does not.
+.BR "ip6 protochain"
+is supplied for this behavior.
+.LP
+Arithmetic expression against transport layer headers, like \fBtcp[0]\fP,
+does not work against IPv6 packets.
+It only looks at IPv4 packets.
diff --git a/raw/man8/tzselect.8 b/raw/man8/tzselect.8
new file mode 100644
index 0000000..0168314
--- /dev/null
+++ b/raw/man8/tzselect.8
@@ -0,0 +1,44 @@
+.TH TZSELECT 8
+.SH NAME
+tzselect \- select a time zone
+.SH SYNOPSIS
+.B tzselect
+.SH DESCRIPTION
+The
+.B tzselect
+program asks the user for information about the current location,
+and outputs the resulting time zone description to standard output.
+The output is suitable as a value for the TZ environment variable.
+.PP
+All interaction with the user is done via standard input and standard error.
+.SH "ENVIRONMENT VARIABLES"
+.TP
+\fBAWK\fP
+Name of a Posix-compliant
+.I awk
+program (default:
+.BR awk ).
+.TP
+\fBTZDIR\fP
+Name of the directory containing time zone data files (default:
+.IR /usr/local/etc/zoneinfo ).
+.SH FILES
+.TP
+\fBTZDIR\fP\fI/iso3166.tab\fP
+Table of ISO 3166 2-letter country codes and country names.
+.TP
+\fBTZDIR\fP\fI/zone.tab\fP
+Table of country codes, latitude and longitude, TZ values, and
+descriptive comments.
+.TP
+\fBTZDIR\fP\fI/\fP\fITZ\fP
+Time zone data file for time zone \fITZ\fP.
+.SH "EXIT STATUS"
+The exit status is zero if a time zone was successfully obtained from the user,
+nonzero otherwise.
+.SH "SEE ALSO"
+.BR newctime (3),
+.BR tzfile (5),
+.BR zdump (8),
+.BR zic (8)
+.\" @(#)tzselect.8	1.3
diff --git a/raw/man8/umount.8 b/raw/man8/umount.8
new file mode 100644
index 0000000..3449779
--- /dev/null
+++ b/raw/man8/umount.8
@@ -0,0 +1,134 @@
+.\" Copyright (c) 1996 Andries Brouwer
+.\" This page is somewhat derived from a page that was
+.\" (c) 1980, 1989, 1991 The Regents of the University of California
+.\" and had been heavily modified by Rik Faith and myself.
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.TH UMOUNT 8 "26 July 1997" "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+umount \- unmount file systems
+.SH SYNOPSIS
+.BI "umount [\-hV]"
+.LP
+.BI "umount -a [\-dflnrv] [\-t " vfstype "] [\-O " options ]
+.br
+.BI "umount [\-dflnrv] " "dir " | " device " [...]
+.SH DESCRIPTION
+The
+.B umount
+command detaches the file system(s) mentioned from the file hierarchy.
+A file system is specified by giving the directory where it
+has been mounted. Giving the special device on which the file system lives
+may also work, but is obsolete, mainly because it will fail
+in case this device was mounted on more than one directory.
+
+Note that a file system cannot be unmounted when it is `busy' -
+for example, when there are open files on it, or when some process
+has its working directory there, or when a swap file on it is in use.
+The offending process could even be
+.B umount
+itself - it opens libc, and libc in its turn may open for example
+locale files.
+A lazy unmount avoids this problem.
+
+Options for the
+.B umount
+command:
+.TP
+.B \-V
+Print version and exit.
+.TP
+.B \-h
+Print help message and exit.
+.TP
+.B \-v
+Verbose mode.
+.TP
+.B \-n
+Unmount without writing in
+.IR /etc/mtab .
+.TP
+.B \-r
+In case unmounting fails, try to remount read-only.
+.TP
+.B \-d
+In case the unmounted device was a loop device, also
+free this loop device.
+.TP
+.B \-a
+All of the file systems described in
+.I /etc/mtab
+are unmounted. (With
+.B umount
+version 2.7 and later: the
+.I proc
+filesystem is not unmounted.)
+.TP
+.BI \-t " vfstype"
+Indicate that the actions should only be taken on file systems of the
+specified type.  More than one type may be specified in a comma separated
+list.  The list of file system types can be prefixed with
+.B no
+to specify the file system types on which no action should be taken.
+.TP
+.BI \-O " options"
+Indicate that the actions should only be taken on file systems with
+the specified options in
+.IR /etc/fstab .
+More than one option type may be specified in a comma separated
+list.  Each option can be prefixed with
+.B no
+to specify options for which no action should be taken.
+.TP
+.B \-f
+Force unmount (in case of an unreachable NFS system).
+(Requires kernel 2.1.116 or later.)
+.TP
+.B \-l
+Lazy unmount. Detach the filesystem from the filesystem hierarchy now,
+and cleanup all references to the filesystem as soon as it is not busy
+anymore.
+(Requires kernel 2.4.11 or later.)
+
+.SH "THE LOOP DEVICE"
+The
+.B umount
+command will free the loop device (if any) associated
+with the mount, in case it finds the option `loop=...' in
+.IR /etc/mtab ,
+or when the \-d option was given.
+Any pending loop devices can be freed using `losetup -d', see
+.BR losetup (8).
+
+.SH FILES
+.I /etc/mtab
+table of mounted file systems
+
+.SH "SEE ALSO"
+.BR umount (2),
+.BR mount (8),
+.BR losetup (8).
+
+.SH HISTORY
+A
+.B umount
+command appeared in Version 6 AT&T UNIX.
diff --git a/raw/man8/useradd.8 b/raw/man8/useradd.8
new file mode 100644
index 0000000..98ccbd0
--- /dev/null
+++ b/raw/man8/useradd.8
@@ -0,0 +1,190 @@
+.\" Copyright 1991 - 1994, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH USERADD 8
+.SH NAME
+useradd \- Create a new user or update default new user information
+.SH SYNOPSIS
+.TP 8
+\fBuseradd\fR [\fB-c\fR \fIcomment\fR] [\fB-d\fR \fIhome_dir\fR]
+.br
+[\fB-e\fR \fIexpire_date\fR] [\fB-f\fR \fIinactive_time\fR]
+.br
+[\fB-g\fR \fIinitial_group\fR] [\fB-G\fR \fIgroup\fR[,...]]
+.br
+[\fB-m\fR [\fB-k\fR \fIskeleton_dir\fR] | \fB-M\fR] [\fB-n\fR] [\fB-o\fR] [\fB-p\fR \fIpasswd\fR] [\fB-r\fP]
+.br
+[\fB-s\fR \fIshell\fR] [\fB-u\fR \fIuid\fR] \fIlogin\fR
+.TP 8
+\fBuseradd\fR \fB-D\fR [\fB-g\fI default_group\fR] [\fB-b\fI default_home\fR]
+.br
+[\fB-e\fI default_expire_date\fR] [\fB-f\fI default_inactive\fR]
+.br
+[\fB-s\fI default_shell\fR]
+.SH DESCRIPTION
+.SS Creating New Users
+When invoked without the \fB-D\fR option, the \fBuseradd\fR command
+creates a new user account using the values specified on the
+command line and the default values from the system.
+The new user account will be entered into the system files as needed,
+the home directory will be created, and initial files copied, depending
+on the command line options.
+The version provided with Red Hat Linux will create a group for each
+user added to the system, unless the \fB-n\fR option is given.
+The options which apply to the \fBuseradd\fR command are:
+.IP "\fB-c \fIcomment\fR"
+The new user's password file comment field.
+.IP "\fB-d \fIhome_dir\fR"
+The new user will be created using \fIhome_dir\fR as the value for
+the user's login directory.
+The default is to append the \fIlogin\fR name to \fIdefault_home\fR
+and use that as the login directory name.
+.IP "\fB-e \fIexpire_date\fR"
+The date on which the user account will be disabled.
+The date is specified in the format \fIYYYY-MM-DD\fR.
+.IP "\fB-f \fIinactive_days\fR"
+The number of days after a password expires until the account
+is permanently disabled.
+A value of 0 disables the account as soon as the password has
+expired, and a value of -1 disables the feature.
+The default value is -1.
+.IP "\fB-g \fIinitial_group\fR"
+The group name or number of the user's initial login group.
+The group name must exist.  A group number must refer to an
+already existing group.
+The default group number is 1 or whatever is specified in
+\fI/etc/default/useradd\fR.
+.IP "\fB-G \fIgroup,[...]\fR"
+A list of supplementary groups which the user is also a member
+of.
+Each group is separated from the next by a comma, with no
+intervening whitespace.
+The groups are subject to the same restrictions as the group
+given with the \fB-g\fR option.
+The default is for the user to belong only to the initial group.
+.IP \fB-m\fR
+The user's home directory will be created if it does not exist.
+The files contained in \fIskeleton_dir\fR will be copied to the
+home directory if the \fB-k\fR option is used, otherwise the
+files contained in \fI/etc/skel\fR will be used instead.
+Any directories contained in \fIskeleton_dir\fR or \fI/etc/skel\fR
+will be created in the user's home directory as well.
+The \fB-k\fR option is only valid in conjunction with the \fB-m\fR
+option.
+The default is to not create the directory and to not copy any
+files.
+.IP \fB-M\fR
+The user home directory will not be created, even if the system
+wide settings from \fI/etc/login.defs\fR is to create home dirs.
+.IP \fB-n\fR
+A group having the same name as the user being added to the system
+will be created by default. This option will turn off this Red Hat
+Linux specific behavior.
+.IP "\fB-o\fR"
+Allow create user with duplicate (non-unique) UID.
+.IP "\fB-p \fIpasswd\fR"
+The encrypted password, as returned by \fBcrypt\fR(3).
+The default is to disable the account.
+.IP \fB-r\fR
+This flag is used to create a system account. That is, a user with a
+UID lower than the value of UID_MIN defined in \fI/etc/login.defs\fR and
+whose password does not expire. Note
+that \fBuseradd\fR will not create a home directory for such an user,
+regardless of the default setting in \fI/etc/login.defs\fR.
+You have to specify \fB-m\fR option if you want a home directory
+for a system account to be created.
+This is an option added by Red Hat.
+.IP "\fB-s \fIshell\fR"
+The name of the user's login shell.
+The default is to leave this field blank, which causes the system
+to select the default login shell.
+.IP "\fB-u \fIuid\fR"
+The numerical value of the user's ID.
+This value must be unique, unless the \fI-o\fR option is used.
+The value must be non-negative.
+The default is to use the smallest ID value greater than 99 and
+greater than every other user.
+Values between 0 and 99 are typically reserved for system accounts.
+.SS Changing the default values
+When invoked with the \fB-D\fR option, \fBuseradd\fR will either
+display the current default values, or update the default values
+from the command line.
+The valid options are
+.IP "\fB-b \fIdefault_home\fR"
+The initial path prefix for a new user's home directory.
+The user's name will be affixed to the end of \fIdefault_home\fR
+to create the new directory name if the \fB-d\fI option is not
+used when creating a new account.
+.IP "\fB-e \fIdefault_expire_date\fR"
+The date on which the user account is disabled.
+.IP "\fB-f \fIdefault_inactive\fR"
+The number of days after a password has expired before the
+account will be disabled.
+.IP "\fB-g \fIdefault_group\fR"
+The group name or ID for a new user's initial group.
+The named group must exist, and a numerical group ID must have
+an existing entry .
+.IP "\fB-s \fIdefault_shell\fR"
+The name of the new user's login shell.
+The named program will be used for all future new user accounts.
+.PP
+If no options are specified, \fBuseradd\fR displays the current
+default values.
+.SH NOTES
+The system administrator is responsible for placing the default
+user files in the \fI/etc/skel\fR directory.
+.br
+This version of useradd was modified by Red Hat to suit Red Hat 
+user/group conventions.
+.SH CAVEATS
+You may not add a user to an NIS group.
+This must be performed on the NIS server.
+.SH FILES
+\fB/etc/passwd\fR \- user account information
+.br
+\fB/etc/shadow\fR \- secure user account information
+.br
+\fB/etc/group\fR \- group information
+.br
+\fB/etc/gshadow\fR \- secure group information
+.br
+\fB/etc/default/useradd\fR \- default information
+.br
+\fB/etc/login.defs\fR \- system-wide settings
+.br
+\fB/etc/skel\fR \- directory containing default files
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR crypt (3),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/userdel.8 b/raw/man8/userdel.8
new file mode 100644
index 0000000..6c3b75f
--- /dev/null
+++ b/raw/man8/userdel.8
@@ -0,0 +1,67 @@
+.\" Copyright 1991 - 1994, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH USERDEL 8
+.SH NAME
+userdel \- Delete a user account and related files
+.SH SYNOPSIS
+.B userdel
+[\fB-r\fR]
+.I login
+.SH DESCRIPTION
+The \fBuserdel\fR command modifies the system account files, deleting
+all entries that refer to \fIlogin\fR.
+The named user must exist.
+The options which apply to the \fBuserdel\fR command are:
+.IP \fB-r\fR
+Files in the user's home directory will be removed along with the
+home directory itself and the user's mail spool.
+Files located in other file systems will have to be searched for
+and deleted manually.
+.SH FILES
+/etc/passwd \- user account information
+.br
+/etc/shadow \- secure user account information
+.br
+/etc/group \- group information
+.SH CAVEATS
+\fBuserdel\fR will not allow you to remove an account if the user
+is currently logged in.
+You must kill any running processes which belong to an account that
+you are deleting.
+You may not remove any NIS attributes on an NIS client.
+This must be performed on the NIS server.
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR usermod (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/usermod.8 b/raw/man8/usermod.8
new file mode 100644
index 0000000..16a9342
--- /dev/null
+++ b/raw/man8/usermod.8
@@ -0,0 +1,132 @@
+.\" Copyright 1991 - 1994, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH USERMOD 8
+.SH NAME
+usermod \- Modify a user account
+.SH SYNOPSIS
+.TP 8
+\fBusermod\fR [\fB-c\fR \fIcomment\fR] [\fB-d\fR \fIhome_dir\fR [\fB-m\fR]]
+.br
+[\fB-e\fR \fIexpire_date\fR] [\fB-f\fR \fIinactive_time\fR]
+.br
+[\fB-g\fR \fIinitial_group\fR] [\fB-G\fR \fIgroup\fR [,...]]
+.br
+[\fB-l\fR \fIlogin_name\fR] [\fB-p\fR \fIpasswd\fR]
+.br
+[\fB-s\fR \fIshell\fR] [\fB-u\fR \fIuid\fR [\fB-o\fR]] [\fB-L\fR|\fB-U\fR]
+\fIlogin\fR
+.SH DESCRIPTION
+The \fBusermod\fR command modifies the system account files to reflect
+the changes that are specified on the command line.
+The options which apply to the \fBusermod\fR command are:
+.IP "\fB-c \fIcomment\fR"
+The new value of the user's password file comment field.
+It is normally modified using the \fBchfn\fR(1) utility.
+.IP "\fB-d \fIhome_dir\fR"
+The user's new login directory.
+If the \fB-m\fR option is given the contents of the current home directory
+will be moved to the new home directory, which is created if it does not
+already exist.
+.IP "\fB-e \fIexpire_date\fR"
+The date on which the user account will be disabled.
+The date is specified in the format \fIYYYY-MM-DD\fR.
+.IP "\fB-f \fIinactive_days\fR"
+The number of days after a password expires until the account
+is permanently disabled.
+A value of 0 disables the account as soon as the password has
+expired, and a value of -1 disables the feature.
+The default value is -1.
+.IP "\fB-g \fIinitial_group\fR"
+The group name or number of the user's new initial login group.
+The group name must exist.  A group number must refer to an
+already existing group.
+The default group number is 1.
+.IP "\fB-G \fIgroup,[...]\fR"
+A list of supplementary groups which the user is also a member
+of.
+Each group is separated from the next by a comma, with no
+intervening whitespace.
+The groups are subject to the same restrictions as the group
+given with the \fB-g\fR option.
+If the user is currently a member of a group which is not listed,
+the user will be removed from the group
+.IP "\fB-l \fIlogin_name\fR"
+The name of the user will be changed from \fIlogin\fR to
+\fIlogin_name\fR.
+Nothing else is changed.
+In particular, the user's home directory name should probably
+be changed to reflect the new login name.
+.IP "\fB-p \fIpasswd\fR"                                                
+The encrypted password, as returned by \fBcrypt\fR(3).                      
+.IP "\fB-s \fIshell\fR"
+The name of the user's new login shell.
+Setting this field to blank causes the system
+to select the default login shell.
+.IP "\fB-u \fIuid\fR"
+The numerical value of the user's ID.
+This value must be unique, unless the \fI-o\fR option is used.
+The value must be non-negative.
+Values between 0 and 99 are typically reserved for system accounts.
+Any files which the user owns and which are located in the directory
+tree rooted at the user's home directory will have the file user ID
+changed automatically.
+Files outside of the user's home directory must be altered manually.
+.IP "\fB-L\fR"
+Lock a user's password.
+This puts a '!' in front of the encrypted password, effectively disabling
+the password.  You can't use this option with \fI-p\fR or \fI-U\fR.
+.IP "\fB-U\fR"
+Unlock a user's password.
+This removes the '!' in front of the encrypted password.
+You can't use this option with \fI-p\fR or \fI-L\fR.
+.SH CAVEATS
+\fBusermod\fR will not allow you to change the name of a user who is
+logged in.
+You must make certain that the named user is not executing any processes
+when this command is being executed if the user's numerical user ID is
+being changed.
+You must change the owner of any crontab files manually.
+You must change the owner of any at jobs manually.
+You must make any changes involving NIS on the NIS server.
+.SH FILES
+/etc/passwd \- user account information
+.br
+/etc/shadow \- secure user account information
+.br
+/etc/group \- group information
+.SH SEE ALSO
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR crypt (3),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR userdel (8)
+.SH AUTHOR
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
diff --git a/raw/man8/vidmode.8 b/raw/man8/vidmode.8
new file mode 100644
index 0000000..901bd75
--- /dev/null
+++ b/raw/man8/vidmode.8
@@ -0,0 +1 @@
+.so man8/rdev.8
diff --git a/raw/man8/vmstat.8 b/raw/man8/vmstat.8
new file mode 100644
index 0000000..4c3df5c
--- /dev/null
+++ b/raw/man8/vmstat.8
@@ -0,0 +1,169 @@
+.\" vmstat.8 - manpage for the vmstat(8) utility, part of procps
+.\"
+.\" Copyright (C) 2003 Robert Love
+.\" Licensed under the terms of the GNU General Public License, v2
+.TH VMSTAT 8 "02 Jun 2003" "Linux" "Linux User's Manual"
+.SH NAME
+vmstat \- display virtual memory statistics
+
+.SH SYNOPSIS
+.BI "vmstat [flags]
+.RI [ delay " [" count ]]
+
+.SH DESCRIPTION
+The
+.BR vmstat (8)
+utility reports statistical information about process status, memory
+consumption, paging activity, block I/O operations, interrupts, context
+switches, and processor usage.
+
+The
+.BR vmstat (8)
+utility is most commonly used to produce a continuous report every
+.IR delay
+seconds.  In this mode, the first report given is the average of the statistics
+since system boot. Each subsequent line pertains to that sampling period (that
+is, the last
+.IR delay
+seconds).  If no
+.IR delay
+value is given, only one report is given, which is the average since system
+boot.
+
+The optional
+.IR count
+value specifies a maximum number of reports to print before terminating. By
+default (that is, when no
+.IR count
+value is given)
+.BR vmstat (8)
+will continue to print reports every
+.IR delay
+seconds until interrupted.
+
+.SH OPTIONS
+Normal invocation of 
+.BR vmstat (8)
+does not require any options.  The output, however, can be fine-tuned by
+specifying one or more of the following flags:
+.TP
+.B \-\-active, \-a
+Display active and inactive memory statistics in lieu of the buffer and cache
+statistics.
+.TP
+.B \-\-noheaders, \-n
+Do not regularly update the header describing each column. Normally, the header
+is periodically reprinted to ensure it is always viewable.
+.TP
+.B \-\-bytes, \-b
+Display the statistics in bytes.
+.TP
+.B \-\-kb, \-kb
+Display the statistics in kilobytes.  This is the default.
+.TP
+.B \-\-mb, \-m
+Display the statistics in megabytes.
+.TP
+.B \-\-gb, -g
+Display the statistics in gigabytes.  Note that the translation silently rounds
+down any underflow and displays the result as an integer.  This means that the
+translation is efficient and simple, but that a large unit (i.e., MB or GB)
+with small statistics will display zero and not a decimal fraction.
+.TP
+.B \-\-version, \-V
+Display version information and then exit.
+.TP
+.B \--help
+Display usage information and then exit.
+
+.SH FIELDS
+.SS
+.B "procs"
+.nf
+r: The number of runnable processes (that is, processes running or
+   waiting to run).
+b: The number of processes in uninterruptible sleep.
+.fi
+.PP
+.SS
+.B "memory"
+.nf
+swpd  : the amount of memory paged to disk (in KB by default)
+free  : the amount of free physical memory (in KB by default)
+buff  : the amount of memory consumed by buffers (in KB by default)
+inact : the amount of memory on the inactive list (in KB by default)
+active: the amount of memory on the active list (in KB by default)
+.fi
+.PP
+.SS
+.B "swap"
+.nf
+si: the amount of memory paged in from disk (in KB/s by default)
+so: the amount of memory paged out to disk (in KB/s by default)
+.fi
+.PP
+.SS
+.B "io"
+.nf
+bi: blocks sent out to a block device (in blocks/s)
+bo: blocks received from a block device (in blocks/s)
+.fi
+.PP
+.SS
+.B "system"
+.nf
+in: the number of interrupts received (in interrupts/s)
+cs: the number of context switches (in switches/s)
+.fi
+.PP
+.SS
+.B "cpu"
+.nf
+us: percentage of total processor time consumed by user-space
+sy: percentage of total processor time consumed by the kernel
+wa: percentage of total processor time spent in I/O wait
+id: percentage of total processor time spent idle
+.fi
+
+.SH NOTES
+
+The current implementation of
+.BR vmstat (8)
+does not display the traditional "w" field under "procs".  This is because
+Linux is a demand paging operating system and does not support the notion of
+swapping out entire processes.  Thus this statistic is worthless.  Older
+versions of
+.BR vmstat (8)
+just displayed a hardcoded zero for this value.  Even older versions
+calculated the field based on the number of RSS pages the process owns.
+Although this is a close analogy to the concept of "swapped out", it is still a
+misleading statistic as the Linux kernel has not explicitly decided to swap to
+disk the entire process.
+
+This version of
+.BR vmstat(8)
+displays I/O wait statistics as "wa" under the "cpu" section.  This field is
+not part of traditional
+.BR vmstat (8)
+implementations, but Linux kernels since 2.5 have exported this (very useful)
+information.  Earlier kernels will simply display zero for this field.
+
+.SH FILES
+.IR /proc/meminfo " \-\- memory information"
+.TP
+.IR /proc/stat " \-\- system statistics"
+.TP
+.IR /proc/[1-9]*/stat " \-\- process statistics"
+
+.SH "SEE ALSO"
+.BR ps (1),
+.BR top (1),
+.BR free (1)
+
+.SH AUTHORS
+Written by Robert Love.
+
+The procps package is maintained by Robert Love and was created by Michael
+Johnson.
+
+Send bug reports to <procps-list at redhat.com>.
diff --git a/raw/man8/xinetd.8 b/raw/man8/xinetd.8
new file mode 100644
index 0000000..9c5eb9d
--- /dev/null
+++ b/raw/man8/xinetd.8
@@ -0,0 +1,193 @@
+.\"(c) Copyright 1992 by Panagiotis Tsirigotis
+.\"(c) Sections Copyright 1998-2001 by Rob Braun
+.\"All rights reserved.  The file named COPYRIGHT specifies the terms 
+.\"and conditions for redistribution.
+.\"
+.TH XINETD 8 "14 June 2001"
+.\" *************************** NAME *********************************
+.SH NAME
+xinetd \- the extended Internet services daemon
+.\" *************************** SYNOPSIS *********************************
+.SH SYNOPSIS
+.B xinetd
+[\fIoptions\fP]
+.\" *************************** DESCRIPTION *********************************
+.SH DESCRIPTION
+\fBxinetd\fP performs the same function as \fBinetd\fP: it starts
+programs that provide Internet services.  Instead of having such
+servers started at system initialization time, and be dormant until a
+connection request arrives, \fBxinetd\fP is the only daemon process
+started and it listens on all service ports for the services listed in
+its configuration file. When a request comes in, \fBxinetd\fP starts
+the appropriate server.  Because of the way it operates, \fBxinetd\fP
+(as well as \fBinetd\fP) is also referred to as a super-server.
+.LP
+The services listed in \fBxinetd\fP's configuration file can be
+separated into two groups.  Services in the first group are called
+.I "multi-threaded"
+and they require the forking of a new server process for each new
+connection request.  The new server then handles that connection.  For
+such services, \fBxinetd\fP keeps listening for new requests so that it
+can spawn new servers.  On the other hand, the second group includes
+services for which the service daemon is responsible for handling all
+new connection requests.  Such services are called
+.I "single-threaded"
+and \fBxinetd\fP will stop handling new requests for them until the
+server dies.  Services in this group are usually datagram-based.
+.LP
+So far, the only reason for the existence of a super-server was to
+conserve system resources by avoiding to fork a lot of processes which
+might be dormant for most of their lifetime.  While fulfilling this
+function, \fBxinetd\fP takes advantage of the idea of a super-server to
+provide features such as access control and logging.  Furthermore,
+\fBxinetd\fP is not limited to services listed in
+.I /etc/services.
+Therefore, anybody can use \fBxinetd\fP to start special-purpose
+servers.
+.\" *************************** OPTIONS *********************************
+.SH OPTIONS
+.TP
+.BR \-d
+Enables debug mode. This produces a lot of debugging output, and it
+makes it possible to use a debugger on \fBxinetd\fP.
+.TP
+.BI \-syslog " syslog_facility"
+This option enables syslog logging of \fBxinetd\fP-produced messages
+using the specified syslog facility.
+The following facility names are supported:
+.I daemon,
+.I auth,
+.I user,
+.I "local[0-7]"
+(check \fIsyslog.conf(5)\fP for their meanings).
+This option is ineffective in debug mode since all relevant messages are sent
+to the terminal.
+.TP
+.BI \-filelog " logfile"
+\fBxinetd\fP-produced messages will be placed in the specified file.
+Messages are always appended to the file.
+If the file does not exist, it will be created.
+This option is ineffective in debug mode since all relevant messages are sent
+to the terminal.
+.TP
+.BI \-f " config_file"
+Determines the file that \fBxinetd\fP uses for configuration. The
+default is \fI/etc/xinetd.conf\fP.
+.TP
+.BR \-pidfile " pid_file"
+.br
+The process ID is written to the file. This option is ineffective in debug mode. 
+.TP
+.BI \-dontfork 
+Tells xinetd to stay in the foreground rather than detaching itself, to
+support being run from init or daemontools. This option automatically sets 
+.B \-stayalive
+(see below).
+.TP
+.BI \-stayalive 
+Tells xinetd to stay running even if no services are specified.
+.TP
+.BI \-limit " proc_limit"
+This option places a limit on the number of concurrently running processes
+that can be started by
+.B xinetd.
+Its purpose is to prevent process table overflows.
+.TP
+.BI \-logprocs " limit"
+This option places a limit on the number of concurrently running servers
+for remote userid acquisition.
+.TP
+.BI \-version
+This option causes xinetd to print out its version information.
+.TP
+.BI \-inetd_compat
+This option causes xinetd to read /etc/inetd.conf in addition to the
+standard xinetd config files.  /etc/inetd.conf is read after the
+standard xinetd config files.
+.TP
+.BI \-cc " interval"
+This option instructs
+.B xinetd
+to perform periodic consistency checks on its internal state every
+.I interval
+seconds.
+.LP
+The \fIsyslog\fP and \fIfilelog\fP options are mutually exclusive.
+If none is specified, the default is syslog using the
+.I daemon
+facility.
+You should not confuse \fBxinetd\fP messages with messages related to
+service logging. The latter are logged only if this is specified
+via the configuration file.
+.\" *********************** CONTROLLING XINETD ****************************
+.SH "CONTROLLING XINETD"
+.LP
+\fBxinetd\fP performs certain actions when it receives certain signals.
+The actions associated with the specific signals can be redefined
+by editing \fIconfig.h\fP and recompiling.
+.TP 15
+.B SIGHUP
+causes a hard reconfiguration, which means that \fBxinetd\fP re-reads 
+the configuration file and terminates the servers for services that 
+are no longer available. Access control is performed again on 
+running servers by checking the remote location, access times and 
+server instances. If the number of server instances is lowered, some 
+arbitrarily picked servers will be killed to satisfy the limit; this 
+will happen \fIafter\fP any servers are terminated because of failing 
+the remote location or access time checks.
+Also, if the
+.B INTERCEPT
+flag was clear and is set, any running servers for that service will
+be terminated;
+\fIthe purpose of this is to ensure that after a hard reconfiguration
+there will be no running servers that can accept packets from addresses
+that do not meet the access control criteria\fP.
+.TP
+.B SIGQUIT
+causes program termination.
+.TP
+.B SIGTERM
+terminates all running servers before terminating \fBxinetd\fP.
+.TP
+.B SIGUSR1
+causes an internal state dump (the default dump file is
+\fI/var/run/xinetd.dump\fP;
+to change the filename, edit \fIconfig.h\fP and recompile).
+.TP
+.B SIGIOT
+causes an internal consistency check to verify that the data structures
+used by the program have not been corrupted.
+When the check is completed
+.B xinetd
+will generate a message that says if the check was successful or not.
+.LP
+On reconfiguration the log files are closed and reopened. This allows
+removal of old log files.
+.\" *********************** FILES ****************************
+.SH FILES
+.LP
+.PD .1v
+.TP 20
+.B /etc/xinetd.conf
+default configuration file
+.TP
+.B /var/run/xinetd.dump
+default dump file
+.PD
+.\" *********************** SEE ALSO ****************************
+.SH "SEE ALSO"
+.I "inetd(8),"
+.LP
+.I "xinetd.conf(5),"
+.LP
+.I "xinetd.log(5)"
+.LP
+.I "http://cr.yp.to/daemontools.html"
+.\" *********************** AUTHOR ****************************
+.SH AUTHOR
+Panos Tsirigotis, CS Dept, University of Colorado, Boulder
+Rob Braun
+.\" *********************** PRONUNCIATION ****************************
+.SH PRONUNCIATION
+zy-net-d
+
diff --git a/raw/man8/zdump.8 b/raw/man8/zdump.8
new file mode 100644
index 0000000..7cc30e2
--- /dev/null
+++ b/raw/man8/zdump.8
@@ -0,0 +1,39 @@
+.TH ZDUMP 8
+.SH NAME
+zdump \- time zone dumper
+.SH SYNOPSIS
+.B zdump
+[
+.B \-v
+] [
+.B \-c
+cutoffyear ] [ zonename ... ]
+.SH DESCRIPTION
+.I Zdump
+prints the current time in each
+.I zonename
+named on the command line.
+.PP
+These options are available:
+.TP
+.B \-v
+For each
+.I zonename
+on the command line,
+print the time at the lowest possible time value,
+the time one day after the lowest possible time value,
+the times both one second before and exactly at
+each detected time discontinuity,
+the time at one day less than the highest possible time value,
+and the time at the highest possible time value.
+Each line ends with
+.B isdst=1
+if the given time is Daylight Saving Time or
+.B isdst=0
+otherwise.
+.TP
+.BI "\-c " cutoffyear
+Cut off the verbose output near the start of the given year.
+.SH "SEE ALSO"
+newctime(3), tzfile(5), zic(8)
+.\" @(#)zdump.8	7.3
diff --git a/raw/man8/zic.8 b/raw/man8/zic.8
new file mode 100644
index 0000000..2da0eea
--- /dev/null
+++ b/raw/man8/zic.8
@@ -0,0 +1,414 @@
+.TH ZIC 8
+.SH NAME
+zic \- time zone compiler
+.SH SYNOPSIS
+.B zic
+[
+.B \-v
+] [
+.B \-d
+.I directory
+] [
+.B \-l
+.I localtime
+] [
+.B \-p
+.I posixrules
+] [
+.B \-L
+.I leapsecondfilename
+] [
+.B \-s
+] [
+.B \-y
+.I command
+] [
+.I filename
+\&... ]
+.SH DESCRIPTION
+.if t .ds lq ``
+.if t .ds rq ''
+.if n .ds lq \&"\"
+.if n .ds rq \&"\"
+.de q
+\\$3\*(lq\\$1\*(rq\\$2
+..
+.I Zic
+reads text from the file(s) named on the command line
+and creates the time conversion information files specified in this input.
+If a
+.I filename
+is
+.BR \- ,
+the standard input is read.
+.PP
+These options are available:
+.TP
+.BI "\-d " directory
+Create time conversion information files in the named directory rather than
+in the standard directory named below.
+.TP
+.BI "\-l " timezone
+Use the given time zone as local time.
+.I Zic
+will act as if the input contained a link line of the form
+.sp
+.ti +.5i
+Link	\fItimezone\fP		localtime
+.TP
+.BI "\-p " timezone
+Use the given time zone's rules when handling POSIX-format
+time zone environment variables.
+.I Zic
+will act as if the input contained a link line of the form
+.sp
+.ti +.5i
+Link	\fItimezone\fP		posixrules
+.TP
+.BI "\-L " leapsecondfilename
+Read leap second information from the file with the given name.
+If this option is not used,
+no leap second information appears in output files.
+.TP
+.B \-v
+Complain if a year that appears in a data file is outside the range
+of years representable by
+.IR time (2)
+values.
+.TP
+.B \-s
+Limit time values stored in output files to values that are the same
+whether they're taken to be signed or unsigned.
+You can use this option to generate SVVS-compatible files.
+.TP
+.BI "\-y " command
+Use the given
+.I command
+rather than
+.B yearistype
+when checking year types (see below).
+.PP
+Input lines are made up of fields.
+Fields are separated from one another by any number of white space characters.
+Leading and trailing white space on input lines is ignored.
+An unquoted sharp character (#) in the input introduces a comment which extends
+to the end of the line the sharp character appears on.
+White space characters and sharp characters may be enclosed in double quotes
+(") if they're to be used as part of a field.
+Any line that is blank (after comment stripping) is ignored.
+Non-blank lines are expected to be of one of three types:
+rule lines, zone lines, and link lines.
+.PP
+A rule line has the form
+.nf
+.ti +.5i
+.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
+.sp
+Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+.sp
+For example:
+.ti +.5i
+.sp
+Rule	US	1967	1973	\-	Apr	lastSun	2:00	1:00	D
+.sp
+.fi
+The fields that make up a rule line are:
+.TP "\w'LETTER/S'u"
+.B NAME
+Gives the (arbitrary) name of the set of rules this rule is part of.
+.TP
+.B FROM
+Gives the first year in which the rule applies.
+Any integer year can be supplied; the Gregorian calendar is assumed.
+The word
+.B minimum
+(or an abbreviation) means the minimum year representable as an integer.
+The word
+.B maximum
+(or an abbreviation) means the maximum year representable as an integer.
+Rules can describe times that are not representable as time values,
+with the unrepresentable times ignored; this allows rules to be portable
+among hosts with differing time value types.
+.TP
+.B TO
+Gives the final year in which the rule applies.
+In addition to
+.B minimum
+and
+.B maximum
+(as above),
+the word
+.B only
+(or an abbreviation)
+may be used to repeat the value of the
+.B FROM
+field.
+.TP
+.B TYPE
+Gives the type of year in which the rule applies.
+If
+.B TYPE
+is
+.B \-
+then the rule applies in all years between
+.B FROM
+and
+.B TO
+inclusive.
+If
+.B TYPE
+is something else, then
+.I zic
+executes the command
+.ti +.5i
+\fByearistype\fP \fIyear\fP \fItype\fP
+.br
+to check the type of a year:
+an exit status of zero is taken to mean that the year is of the given type;
+an exit status of one is taken to mean that the year is not of the given type.
+.TP
+.B IN
+Names the month in which the rule takes effect.
+Month names may be abbreviated.
+.TP
+.B ON
+Gives the day on which the rule takes effect.
+Recognized forms include:
+.nf
+.in +.5i
+.sp
+.ta \w'Sun<=25\0\0'u
+5	the fifth of the month
+lastSun	the last Sunday in the month
+lastMon	the last Monday in the month
+Sun>=8	first Sunday on or after the eighth
+Sun<=25	last Sunday on or before the 25th
+.fi
+.in -.5i
+.sp
+Names of days of the week may be abbreviated or spelled out in full.
+Note that there must be no spaces within the
+.B ON
+field.
+.TP
+.B AT
+Gives the time of day at which the rule takes effect.
+Recognized forms include:
+.nf
+.in +.5i
+.sp
+.ta \w'1:28:13\0\0'u
+2	time in hours
+2:00	time in hours and minutes
+15:00	24-hour format time (for times after noon)
+1:28:14	time in hours, minutes, and seconds
+\-	equivalent to 0
+.fi
+.in -.5i
+.sp
+where hour 0 is midnight at the start of the day,
+and hour 24 is midnight at the end of the day.
+Any of these forms may be followed by the letter
+.B w
+if the given time is local
+.q "wall clock"
+time,
+.B s
+if the given time is local
+.q standard
+time, or
+.B u
+(or
+.B g
+or
+.BR z )
+if the given time is universal time;
+in the absence of an indicator,
+wall clock time is assumed.
+.TP
+.B SAVE
+Gives the amount of time to be added to local standard time when the rule is in
+effect.
+This field has the same format as the
+.B AT
+field
+(although, of course, the
+.B w
+and
+.B s
+suffixes are not used).
+.TP
+.B LETTER/S
+Gives the
+.q "variable part"
+(for example, the
+.q S
+or
+.q D
+in
+.q EST
+or
+.q EDT )
+of time zone abbreviations to be used when this rule is in effect.
+If this field is
+.BR \- ,
+the variable part is null.
+.PP
+A zone line has the form
+.sp
+.nf
+.ti +.5i
+.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
+Zone	NAME	GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+.sp
+For example:
+.sp
+.ti +.5i
+Zone	Australia/Adelaide	9:30	Aus	CST	1971 Oct 31 2:00
+.sp
+.fi
+The fields that make up a zone line are:
+.TP "\w'GMTOFF'u"
+.B NAME
+The name of the time zone.
+This is the name used in creating the time conversion information file for the
+zone.
+.TP
+.B GMTOFF
+The amount of time to add to UTC to get standard time in this zone.
+This field has the same format as the
+.B AT
+and
+.B SAVE
+fields of rule lines;
+begin the field with a minus sign if time must be subtracted from UTC.
+.TP
+.B RULES/SAVE
+The name of the rule(s) that apply in the time zone or,
+alternately, an amount of time to add to local standard time.
+If this field is
+.B \-
+then standard time always applies in the time zone.
+.TP
+.B FORMAT
+The format for time zone abbreviations in this time zone.
+The pair of characters
+.B %s
+is used to show where the
+.q "variable part"
+of the time zone abbreviation goes.
+Alternately,
+a slash (/)
+separates standard and daylight abbreviations.
+.TP
+.B UNTIL
+The time at which the UTC offset or the rule(s) change for a location.
+It is specified as a year, a month, a day, and a time of day.
+If this is specified,
+the time zone information is generated from the given UTC offset
+and rule change until the time specified.
+The month, day, and time of day have the same format as the IN, ON, and AT
+columns of a rule; trailing columns can be omitted, and default to the
+earliest possible value for the missing columns.
+.IP
+The next line must be a
+.q continuation
+line; this has the same form as a zone line except that the
+string
+.q Zone
+and the name are omitted, as the continuation line will
+place information starting at the time specified as the
+.B UNTIL
+field in the previous line in the file used by the previous line.
+Continuation lines may contain an
+.B UNTIL
+field, just as zone lines do, indicating that the next line is a further
+continuation.
+.PP
+A link line has the form
+.sp
+.nf
+.ti +.5i
+.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
+Link	LINK-FROM	LINK-TO
+.sp
+For example:
+.sp
+.ti +.5i
+Link	Europe/Istanbul	Asia/Istanbul
+.sp
+.fi
+The
+.B LINK-FROM
+field should appear as the
+.B NAME
+field in some zone line;
+the
+.B LINK-TO
+field is used as an alternate name for that zone.
+.PP
+Except for continuation lines,
+lines may appear in any order in the input.
+.PP
+Lines in the file that describes leap seconds have the following form:
+.nf
+.ti +.5i
+.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
+.sp
+Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
+.sp
+For example:
+.ti +.5i
+.sp
+Leap	1974	Dec	31	23:59:60	+	S
+.sp
+.fi
+The
+.BR YEAR ,
+.BR MONTH ,
+.BR DAY ,
+and
+.B HH:MM:SS
+fields tell when the leap second happened.
+The
+.B CORR
+field
+should be
+.q +
+if a second was added
+or
+.q -
+if a second was skipped.
+.\" There's no need to document the following, since it's impossible for more
+.\" than one leap second to be inserted or deleted at a time.
+.\" The C Standard is in error in suggesting the possibility.
+.\" See Terry J Quinn, The BIPM and the accurate measure of time,
+.\" Proc IEEE 79, 7 (July 1991), 894-905.
+.\"	or
+.\"	.q ++
+.\"	if two seconds were added
+.\"	or
+.\"	.q --
+.\"	if two seconds were skipped.
+The
+.B R/S
+field
+should be (an abbreviation of)
+.q Stationary
+if the leap second time given by the other fields should be interpreted as UTC
+or
+(an abbreviation of)
+.q Rolling
+if the leap second time given by the other fields should be interpreted as
+local wall clock time.
+.SH NOTE
+For areas with more than two types of local time,
+you may need to use local standard time in the
+.B AT
+field of the earliest transition time's rule to ensure that
+the earliest transition time recorded in the compiled file is correct.
+.SH FILE
+/usr/local/etc/zoneinfo	standard directory used for created files
+.SH "SEE ALSO"
+newctime(3), tzfile(5), zdump(8)
+.\" @(#)zic.8	7.19
diff --git a/raw/manl/cbdsqr.l b/raw/manl/cbdsqr.l
new file mode 100644
index 0000000..f3705f1
--- /dev/null
+++ b/raw/manl/cbdsqr.l
@@ -0,0 +1,136 @@
+.TH CBDSQR l "15 June 2000" "LAPACK version 3.0" ")"
+.SH NAME
+CBDSQR - compute the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B
+.SH SYNOPSIS
+.TP 19
+SUBROUTINE CBDSQR(
+UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,
+LDU, C, LDC, RWORK, INFO )
+.TP 19
+.ti +4
+CHARACTER
+UPLO
+.TP 19
+.ti +4
+INTEGER
+INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
+.TP 19
+.ti +4
+REAL
+D( * ), E( * ), RWORK( * )
+.TP 19
+.ti +4
+COMPLEX
+C( LDC, * ), U( LDU, * ), VT( LDVT, * )
+.SH PURPOSE
+CBDSQR computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B: B = Q * S * P' (P' denotes the transpose of P), where S is a diagonal matrix with
+non-negative diagonal elements (the singular values of B), and Q
+and P are orthogonal matrices.
+.br
+
+The routine computes S, and optionally computes U * Q, P' * VT,
+or Q' * C, for given complex input matrices U, VT, and C.
+
+See "Computing  Small Singular Values of Bidiagonal Matrices With
+Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
+LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11,
+no. 5, pp. 873-912, Sept 1990) and
+.br
+"Accurate singular values and differential qd algorithms," by
+B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics
+Department, University of California at Berkeley, July 1992
+for a detailed description of the algorithm.
+.br
+
+.SH ARGUMENTS
+.TP 8
+UPLO    (input) CHARACTER*1
+= 'U':  B is upper bidiagonal;
+.br
+= 'L':  B is lower bidiagonal.
+.TP 8
+N       (input) INTEGER
+The order of the matrix B.  N >= 0.
+.TP 8
+NCVT    (input) INTEGER
+The number of columns of the matrix VT. NCVT >= 0.
+.TP 8
+NRU     (input) INTEGER
+The number of rows of the matrix U. NRU >= 0.
+.TP 8
+NCC     (input) INTEGER
+The number of columns of the matrix C. NCC >= 0.
+.TP 8
+D       (input/output) REAL array, dimension (N)
+On entry, the n diagonal elements of the bidiagonal matrix B.
+On exit, if INFO=0, the singular values of B in decreasing
+order.
+.TP 8
+E       (input/output) REAL array, dimension (N)
+On entry, the elements of E contain the
+offdiagonal elements of of the bidiagonal matrix whose SVD
+is desired. On normal exit (INFO = 0), E is destroyed.
+If the algorithm does not converge (INFO > 0), D and E
+will contain the diagonal and superdiagonal elements of a
+bidiagonal matrix orthogonally equivalent to the one given
+as input. E(N) is used for workspace.
+.TP 8
+VT      (input/output) COMPLEX array, dimension (LDVT, NCVT)
+On entry, an N-by-NCVT matrix VT.
+On exit, VT is overwritten by P' * VT.
+VT is not referenced if NCVT = 0.
+.TP 8
+LDVT    (input) INTEGER
+The leading dimension of the array VT.
+LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if NCVT = 0.
+.TP 8
+U       (input/output) COMPLEX array, dimension (LDU, N)
+On entry, an NRU-by-N matrix U.
+On exit, U is overwritten by U * Q.
+U is not referenced if NRU = 0.
+.TP 8
+LDU     (input) INTEGER
+The leading dimension of the array U.  LDU >= max(1,NRU).
+.TP 8
+C       (input/output) COMPLEX array, dimension (LDC, NCC)
+On entry, an N-by-NCC matrix C.
+On exit, C is overwritten by Q' * C.
+C is not referenced if NCC = 0.
+.TP 8
+LDC     (input) INTEGER
+The leading dimension of the array C.
+LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC = 0.
+.TP 8
+RWORK   (workspace) REAL array, dimension (4*N)
+.TP 8
+INFO    (output) INTEGER
+= 0:  successful exit
+.br
+< 0:  If INFO = -i, the i-th argument had an illegal value
+.br
+> 0:  the algorithm did not converge; D and E contain the
+elements of a bidiagonal matrix which is orthogonally
+similar to the input matrix B;  if INFO = i, i
+elements of E have not converged to zero.
+.SH PARAMETERS
+.TP 8
+TOLMUL  REAL, default = max(10,min(100,EPS**(-1/8)))
+TOLMUL controls the convergence criterion of the QR loop.
+If it is positive, TOLMUL*EPS is the desired relative
+precision in the computed singular values.
+If it is negative, abs(TOLMUL*EPS*sigma_max) is the
+desired absolute accuracy in the computed singular
+values (corresponds to relative accuracy
+abs(TOLMUL*EPS) in the largest singular value.
+abs(TOLMUL) should be between 1 and 1/EPS, and preferably
+between 10 (for fast convergence) and .1/EPS
+(for there to be some accuracy in the results).
+Default is to lose at either one eighth or 2 of the
+available decimal digits in each computed singular value
+(whichever is smaller).
+.TP 8
+MAXITR  INTEGER, default = 6
+MAXITR controls the maximum number of passes of the
+algorithm through its inner loop. The algorithms stops
+(and so fails to converge) if the number of passes
+through the inner loop exceeds MAXITR*N**2.
diff --git a/raw/manl/lapack.l b/raw/manl/lapack.l
new file mode 100644
index 0000000..d47eb57
--- /dev/null
+++ b/raw/manl/lapack.l
@@ -0,0 +1,150 @@
+.TH LAPACK l "2 April 1993" "LAPACK Version 1.1" "LAPACK FORTRAN LIBRARY ROUTINES"
+
+.SH WHAT IS LAPACK?
+.in -0.3i
+LAPACK is a transportable library of Fortran 77 subroutines for
+solving the most common problems in numerical linear algebra: systems
+of linear equations, linear least squares problems, eigenvalue problems,
+and singular value problems. It has been designed to be efficient
+on a wide range of modern high-performance computers.
+
+LAPACK is intended to be the successor to LINPACK and EISPACK.
+It extends the functionality of these packages by including
+equilibration, iterative refinement, error bounds, and driver routines
+for linear systems, routines for computing and re-ordering the Schur
+factorization, and condition estimation routines for eigenvalue
+problems.  LAPACK improves on the accuracy of the standard algorithms
+in EISPACK by including high accuracy algorithms for finding singular
+values and eigenvalues of bidiagonal and tridiagonal matrices
+respectively that arise in SVD and symmetric eigenvalue problems.
+The algorithms and software have been restructured to achieve high
+efficiency on vector processors, high-performance ``superscalar''
+workstations, and shared-memory multiprocessors. 
+A comprehensive testing and timing suite is provided along with the
+LAPACK software.
+ 
+.SH HOW TO GET LAPACK
+.in -0.3i
+The entire LAPACK package is available via xnetlib and NAG, or specific
+routines can be obtained via netlib.  To see a description of the
+contents of LAPACK, send email to netlib at ornl.gov and in the mail
+message type: send index from lapack.
+
+Xnetlib is an X-version of netlib recently developed at the University
+of Tennessee and Oak Ridge National Laboratory.  Unlike netlib, which
+uses electronic mail to process requests for software and other text,
+xnetlib uses an X Window graphical user interface and a socket-based
+connection between the user's machine and the xnetlib server machine to
+process software requests. The complete contents of LAPACK is available
+in tar/compress format from xnetlib.
+
+To receive a copy of xnetlib send the message "send xnetlib.shar from
+xnetlib" to netlib at ornl.gov.
+
+When you receive the shar file, remove the mail header, save it to a
+file, type 'sh filename' and follow the instructions in the README
+file.
+
+Alternatively, the complete LAPACK package can be
+obtained from NAG on magnetic media for a handling charge. 
+For further details contact NAG at one of the following addresses:
+ 
+.nf
+NAG Inc	                      NAG Ltd              NAG GmbH
+1400 Opus Place               Wilkinson House      Schleissheimerstrasse 5
+Suite 200                     Jordan Hill Road     W-8046 Garching bei Munchen
+Downers Grove, IL 60515-5702  Oxford OX2 8DR       Germany 
+USA                           England
+Tel: +1 708 971 2337          Tel: +44 865 511245  Tel: +49 89 3207395
+Fax: +1 708 971 2706          Fax: +44 865 310139  Fax: +49 89 3207396
+.fi
+ 
+LAPACK has been thoroughly tested, on many different
+types of computers.  The LAPACK project supports the package in the
+sense that reports of errors or poor performance will gain immediate
+attention from the developers. Such reports, descriptions
+of interesting applications, and other comments should be sent by
+electronic mail to lapack at cs.utk.edu.
+
+.SH LAPACK USERS' GUIDE
+.in -0.3i
+The LAPACK Users' Guide is published by SIAM and was made available
+May, 1992.  LAPACK Users' Guide gives an informal introduction to
+the design of the algorithms and software, summarizes the contents
+of the package, and describes the conventions used in the software
+and documentation, and includes complete specifications for calling
+the routines.  The LAPACK Users' Guide can be purchased from:
+SIAM; 3600 University City Science Center; Philadelphia, PA 19104-2688;
+215-382-9800, FAX 215-386-7999.  It will also be available from
+booksellers.  The Guide costs $15.60 for SIAM members, and $19.50
+for non-members.  Please specify order code OT31 when ordering.
+To order by email, send email to service at siam.org.
+
+A list of known problems, bugs, and compiler errors for LAPACK, as 
+well as errata for the LAPACK Users' Guide and the LAPACK code itself, is
+maintained on netlib.  For a copy of this report, send email to
+netlib at ornl.gov with a message of the form: send release_notes from
+lapack.
+
+.SH LAPACK WORKING NOTES
+.in -0.3i
+A number of working notes were written during the
+development of LAPACK and published as LAPACK Working Notes,
+initially by Argonne National Laboratory and later by the University
+of Tennessee.  Many of these reports have subsequently appeared as
+journal articles.  Most of these working notes are available in postscript
+form from netlib.  To receive a list of available reports, send email to
+netlib at ornl.gov with a message of the form: send index from lapack/lawns.
+Otherwise, requests for copies of these working notes can be sent to
+the following address.
+
+LAPACK Project
+c/o J.J. Dongarra
+Computer Science Department
+University of Tennessee
+Knoxville, Tennessee 37996-1301
+USA
+Email: lapack at cs.utk.edu
+ 
+.SH ACKNOWLEDGEMENTS
+.in -0.3i
+LAPACK has been funded in part by NSF, DOE, and DARPA, with
+developmental support from NAG Ltd., Cray Research, and many friends
+and colleagues around the world.
+ 
+
+Ed Anderson, Zhao-jun Bai, Chris Bischof, Jim Demmel, Jack Dongarra,
+Jeremy Du Croz, Anne Greenbaum, Sven Hammarling, Alan McKenney,
+Susan Ostrouchov, and Danny Sorensen
+ 
+             (           l    l    l    l )
+             (           a   -a    a   -a )
+       1/4 * ( p    p             -p   -p )
+             ( a   -a             -a    a )
+             ( c    c   -c   -c           )
+             ( k   -k   -k    k           )
+
+ 
+.SH NAMING SCHEME
+.in -0.3i
+The name of each LAPACK routine is a coded specification of
+its function (within the very tight limits of standard Fortran 77
+6-character names).
+ 
+All driver and computational routines have names of the form XYYZZZ,
+where for some driver routines the 6th character is blank.
+ 
+The first letter, X, indicates the data type as follows:
+ 
+      S  REAL
+      D  DOUBLE PRECISION
+      C  COMPLEX
+      Z  COMPLEX*16  or DOUBLE COMPLEX
+ 
+The next two letters, YY, indicate the type of matrix (or of the most
+significant matrix).  Most of these two-letter codes apply to both real
+and complex matrices; a few apply specifically to one or the other.
+ 
+The last three letters ZZZ indicate the computation performed.
+For example, SGEBRD is a single precision routine that performs a
+bidiagonal reduction (BRD) of a real general matrix.
diff --git a/raw/manl/zdrot.l b/raw/manl/zdrot.l
new file mode 100644
index 0000000..35a6882
--- /dev/null
+++ b/raw/manl/zdrot.l
@@ -0,0 +1,116 @@
+.SH NAME
+
+.SH SYNOPSIS
+.TP 18
+SUBROUTINE ZDROT(
+N, CX, INCX, CY, INCY, C, S )
+.TP 18
+.ti +4
+INTEGER
+INCX, INCY, N
+.TP 18
+.ti +4
+DOUBLE
+PRECISION C, S
+.TP 18
+.ti +4
+COMPLEX*16
+CX( * ), CY( * )
+.TP 18
+.ti +4
+INTEGER
+I, IX, IY
+.TP 18
+.ti +4
+COMPLEX*16
+CTEMP
+.TP 18
+.ti +4
+IF(
+N.LE.0 )
+RETURN
+.TP 18
+.ti +4
+IF(
+INCX.EQ.1 .AND. INCY.EQ.1 )
+GO TO 20
+.TP 18
+.ti +4
+IX
+= 1
+.TP 18
+.ti +4
+IY
+= 1
+.TP 18
+.ti +4
+IF(
+INCX.LT.0 )
+IX = ( -N+1 )*INCX + 1
+.TP 18
+.ti +4
+IF(
+INCY.LT.0 )
+IY = ( -N+1 )*INCY + 1
+.TP 18
+.ti +4
+DO
+10 I = 1, N
+.TP 18
+.ti +4
+CTEMP
+= C*CX( IX ) + S*CY( IY )
+.TP 18
+.ti +4
+CY(
+IY ) = C*CY( IY ) - S*CX( IX )
+.TP 18
+.ti +4
+CX(
+IX ) = CTEMP
+.TP 18
+.ti +4
+IX
+= IX + INCX
+.TP 18
+.ti +4
+IY
+= IY + INCY
+.TP 18
+.ti +4
+10
+CONTINUE
+.TP 18
+.ti +4
+RETURN
+.TP 18
+.ti +4
+20
+CONTINUE
+.TP 18
+.ti +4
+DO
+30 I = 1, N
+.TP 18
+.ti +4
+CTEMP
+= C*CX( I ) + S*CY( I )
+.TP 18
+.ti +4
+CY(
+I ) = C*CY( I ) - S*CX( I )
+.TP 18
+.ti +4
+CX(
+I ) = CTEMP
+.TP 18
+.ti +4
+30
+CONTINUE
+.TP 18
+.ti +4
+RETURN
+.TP 18
+.ti +4
+END
+.SH PURPOSE
diff --git a/raw/manl/zdrscl.l b/raw/manl/zdrscl.l
new file mode 100644
index 0000000..aa984c3
--- /dev/null
+++ b/raw/manl/zdrscl.l
@@ -0,0 +1,39 @@
+.TH ZDRSCL l "15 June 2000" "LAPACK version 3.0" ")"
+.SH NAME
+ZDRSCL - multiplie an n-element complex vector x by the real scalar 1/a
+.SH SYNOPSIS
+.TP 19
+SUBROUTINE ZDRSCL(
+N, SA, SX, INCX )
+.TP 19
+.ti +4
+INTEGER
+INCX, N
+.TP 19
+.ti +4
+DOUBLE
+PRECISION SA
+.TP 19
+.ti +4
+COMPLEX*16
+SX( * )
+.SH PURPOSE
+ZDRSCL multiplies an n-element complex vector x by the real scalar 1/a. This is done without overflow or underflow as long as the final result x/a does not overflow or underflow.
+.br
+
+.SH ARGUMENTS
+.TP 8
+N       (input) INTEGER
+The number of components of the vector x.
+.TP 8
+SA      (input) DOUBLE PRECISION
+The scalar a which is used to divide each component of x.
+SA must be >= 0, or the subroutine will divide by zero.
+.TP 8
+SX      (input/output) COMPLEX*16 array, dimension
+(1+(N-1)*abs(INCX))
+The n-element vector x.
+.TP 8
+INCX    (input) INTEGER
+The increment between successive values of the vector SX.
+> 0:  SX(1) = X(1) and SX(1+(i-1)*INCX) = x(i),     1< i<= n
diff --git a/raw/mann/Http.n b/raw/mann/Http.n
new file mode 100644
index 0000000..6178e06
--- /dev/null
+++ b/raw/mann/Http.n
@@ -0,0 +1,758 @@
+'\"
+'\" Copyright (c) 1995-1997 Sun Microsystems, Inc.
+'\" Copyright (c) 1998-2000 by Ajuba Solutions.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "Http" n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+Http \- Client-side implementation of the HTTP/1.0 protocol.
+.SH SYNOPSIS
+\fBpackage require http ?2.4?\fR
+.sp
+\fB::http::config \fI?options?\fR
+.sp
+\fB::http::geturl \fIurl ?options?\fR
+.sp
+\fB::http::formatQuery \fIlist\fR
+.sp
+\fB::http::reset \fItoken\fR
+.sp
+\fB::http::wait \fItoken\fR
+.sp
+\fB::http::status \fItoken\fR
+.sp
+\fB::http::size \fItoken\fR
+.sp
+\fB::http::code \fItoken\fR
+.sp
+\fB::http::ncode \fItoken\fR
+.sp
+\fB::http::data \fItoken\fR
+.sp
+\fB::http::error \fItoken\fR
+.sp
+\fB::http::cleanup \fItoken\fR
+.sp
+\fB::http::register \fIproto port command\fR
+.sp
+\fB::http::unregister \fIproto\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBhttp\fR package provides the client side of the HTTP/1.0
+protocol.  The package implements the GET, POST, and HEAD operations
+of HTTP/1.0.  It allows configuration of a proxy host to get through
+firewalls.  The package is compatible with the \fBSafesock\fR security
+policy, so it can be used by untrusted applets to do URL fetching from
+a restricted set of hosts. This package can be extened to support
+additional HTTP transport protocols, such as HTTPS, by providing
+a custom \fBsocket\fR command, via \fBhttp::register\fR.
+.PP
+The \fB::http::geturl\fR procedure does a HTTP transaction.
+Its \fIoptions \fR determine whether a GET, POST, or HEAD transaction
+is performed.  
+The return value of \fB::http::geturl\fR is a token for the transaction.
+The value is also the name of an array in the ::http namespace
+that contains state information about the transaction.  The elements
+of this array are described in the STATE ARRAY section.
+.PP
+If the \fB-command\fP option is specified, then
+the HTTP operation is done in the background.
+\fB::http::geturl\fR returns immediately after generating the
+HTTP request and the callback is invoked
+when the transaction completes.  For this to work, the Tcl event loop
+must be active.  In Tk applications this is always true.  For pure-Tcl
+applications, the caller can use \fB::http::wait\fR after calling
+\fB::http::geturl\fR to start the event loop.
+.SH COMMANDS
+.TP
+\fB::http::config\fP ?\fIoptions\fR?
+The \fB::http::config\fR command is used to set and query the name of the
+proxy server and port, and the User-Agent name used in the HTTP
+requests.  If no options are specified, then the current configuration
+is returned.  If a single argument is specified, then it should be one
+of the flags described below.  In this case the current value of
+that setting is returned.  Otherwise, the options should be a set of
+flags and values that define the configuration:
+.RS
+.TP
+\fB\-accept\fP \fImimetypes\fP
+The Accept header of the request.  The default is */*, which means that
+all types of documents are accepted.  Otherwise you can supply a 
+comma separated list of mime type patterns that you are
+willing to receive.  For example, "image/gif, image/jpeg, text/*".
+.TP
+\fB\-proxyhost\fP \fIhostname\fP
+The name of the proxy host, if any.  If this value is the
+empty string, the URL host is contacted directly.
+.TP
+\fB\-proxyport\fP \fInumber\fP
+The proxy port number.
+.TP
+\fB\-proxyfilter\fP \fIcommand\fP
+The command is a callback that is made during
+\fB::http::geturl\fR
+to determine if a proxy is required for a given host.  One argument, a
+host name, is added to \fIcommand\fR when it is invoked.  If a proxy
+is required, the callback should return a two element list containing
+the proxy server and proxy port.  Otherwise the filter should return
+an empty list.  The default filter returns the values of the
+\fB\-proxyhost\fR and \fB\-proxyport\fR settings if they are
+non-empty.
+.TP
+\fB\-useragent\fP \fIstring\fP
+The value of the User-Agent header in the HTTP request.  The default
+is \fB"Tcl http client package 2.2."\fR
+.RE
+.TP
+\fB::http::geturl\fP \fIurl\fP ?\fIoptions\fP? 
+The \fB::http::geturl\fR command is the main procedure in the package.
+The \fB\-query\fR option causes a POST operation and
+the \fB\-validate\fR option causes a HEAD operation;
+otherwise, a GET operation is performed.  The \fB::http::geturl\fR command
+returns a \fItoken\fR value that can be used to get
+information about the transaction.  See the STATE ARRAY and ERRORS section for
+details.  The \fB::http::geturl\fR command blocks until the operation
+completes, unless the \fB\-command\fR option specifies a callback
+that is invoked when the HTTP transaction completes.
+\fB::http::geturl\fR takes several options:
+.RS
+.TP
+\fB\-binary\fP \fIboolean\fP
+Specifies whether to force interpreting the url data as binary.  Normally
+this is auto-detected (anything not beginning with a \fBtext\fR content
+type or whose content encoding is \fBgzip\fR or \fBcompress\fR is
+considered binary data).
+.TP
+\fB\-blocksize\fP \fIsize\fP
+The blocksize used when reading the URL.
+At most \fIsize\fR bytes are read at once.  After each block, a call to the
+\fB\-progress\fR callback is made (if that option is specified).
+.TP
+\fB\-channel\fP \fIname\fP
+Copy the URL contents to channel \fIname\fR instead of saving it in
+\fBstate(body)\fR.
+.TP
+\fB\-command\fP \fIcallback\fP
+Invoke \fIcallback\fP after the HTTP transaction completes.
+This option causes \fB::http::geturl\fP to return immediately.
+The \fIcallback\fP gets an additional argument that is the \fItoken\fR returned
+from \fB::http::geturl\fR. This token is the name of an array that is
+described in the STATE ARRAY section.  Here is a template for the
+callback:
+.RS
+.CS
+proc httpCallback {token} {
+    upvar #0 $token state
+    # Access state as a Tcl array
+}
+.CE
+.RE
+.TP
+\fB\-handler\fP \fIcallback\fP
+Invoke \fIcallback\fP whenever HTTP data is available; if present, nothing
+else will be done with the HTTP data.  This procedure gets two additional
+arguments: the socket for the HTTP data and the \fItoken\fR returned from
+\fB::http::geturl\fR.  The token is the name of a global array that is described
+in the STATE ARRAY section.  The procedure is expected to return the number
+of bytes read from the socket.  Here is a template for the callback:
+.RS
+.CS
+proc httpHandlerCallback {socket token} {
+    upvar #0 $token state
+    # Access socket, and state as a Tcl array
+    ...
+    (example: set data [read $socket 1000];set nbytes [string length $data])
+    ...
+    return nbytes
+}
+.CE
+.RE
+.TP
+\fB\-headers\fP \fIkeyvaluelist\fP
+This option is used to add extra headers to the HTTP request.  The
+\fIkeyvaluelist\fR argument must be a list with an even number of
+elements that alternate between keys and values.  The keys become
+header field names.  Newlines are stripped from the values so the
+header cannot be corrupted.  For example, if \fIkeyvaluelist\fR is
+\fBPragma no-cache\fR then the following header is included in the
+HTTP request:
+.CS
+Pragma: no-cache
+.CE
+.TP
+\fB\-progress\fP \fIcallback\fP
+The \fIcallback\fR is made after each transfer of data from the URL.
+The callback gets three additional arguments: the \fItoken\fR from
+\fB::http::geturl\fR, the expected total size of the contents from the
+\fBContent-Length\fR meta-data, and the current number of bytes
+transferred so far.  The expected total size may be unknown, in which
+case zero is passed to the callback.  Here is a template for the
+progress callback:
+.RS
+.CS
+proc httpProgress {token total current} {
+    upvar #0 $token state
+}
+.CE
+.RE
+.TP
+\fB\-query\fP \fIquery\fP
+This flag causes \fB::http::geturl\fR to do a POST request that passes the
+\fIquery\fR to the server. The \fIquery\fR must be a x-url-encoding
+formatted query.  The \fB::http::formatQuery\fR procedure can be used to
+do the formatting.
+.TP
+\fB\-queryblocksize\fP \fIsize\fP
+The blocksize used when posting query data to the URL.
+At most 
+\fIsize\fR
+bytes are written at once.  After each block, a call to the
+\fB\-queryprogress\fR
+callback is made (if that option is specified).
+.TP
+\fB\-querychannel\fP \fIchannelID\fP
+This flag causes \fB::http::geturl\fR to do a POST request that passes the
+data contained in \fIchannelID\fR to the server. The data contained in \fIchannelID\fR must be a x-url-encoding
+formatted query unless the \fB\-type\fP option below is used.
+If a Content-Length header is not specified via the \fB\-headers\fR options,
+\fB::http::geturl\fR attempts to determine the size of the post data
+in order to create that header.  If it is
+unable to determine the size, it returns an error.
+.TP
+\fB\-queryprogress\fP \fIcallback\fP
+The \fIcallback\fR is made after each transfer of data to the URL
+(i.e. POST) and acts exactly like the \fB\-progress\fR option (the
+callback format is the same).
+.TP
+\fB\-timeout\fP \fImilliseconds\fP
+If \fImilliseconds\fR is non-zero, then \fB::http::geturl\fR sets up a timeout
+to occur after the specified number of milliseconds.
+A timeout results in a call to \fB::http::reset\fP and to
+the \fB-command\fP callback, if specified.
+The return value of \fB::http::status\fP is \fBtimeout\fP
+after a timeout has occurred.
+.TP
+\fB\-type\fP \fImime-type\fP
+Use \fImime-type\fR as the \fBContent-Type\fR value, instead of the
+default value (\fBapplication/x-www-form-urlencoded\fR) during a
+POST operation.
+.TP
+\fB\-validate\fP \fIboolean\fP
+If \fIboolean\fR is non-zero, then \fB::http::geturl\fR does an HTTP HEAD
+request.  This request returns meta information about the URL, but the
+contents are not returned.  The meta information is available in the
+\fBstate(meta) \fR variable after the transaction.  See the STATE
+ARRAY section for details.
+.RE
+.TP
+\fB::http::formatQuery\fP \fIkey value\fP ?\fIkey value\fP ...?
+This procedure does x-url-encoding of query data.  It takes an even
+number of arguments that are the keys and values of the query.  It
+encodes the keys and values, and generates one string that has the
+proper & and = separators.  The result is suitable for the
+\fB\-query\fR value passed to \fB::http::geturl\fR.
+.TP
+\fB::http::reset\fP \fItoken\fP ?\fIwhy\fP?
+This command resets the HTTP transaction identified by \fItoken\fR, if
+any.  This sets the \fBstate(status)\fP value to \fIwhy\fP, which defaults to \fBreset\fR, and then calls the registered \fB\-command\fR callback.
+.TP
+\fB::http::wait\fP \fItoken\fP
+This is a convenience procedure that blocks and waits for the
+transaction to complete.  This only works in trusted code because it
+uses \fBvwait\fR.  Also, it's not useful for the case where
+\fB::http::geturl\fP is called \fIwithout\fP the \fB-command\fP option
+because in this case the \fB::http::geturl\fP call doesn't return
+until the HTTP transaction is complete, and thus there's nothing to
+wait for.
+.TP
+\fB::http::data\fP \fItoken\fP
+This is a convenience procedure that returns the \fBbody\fP element
+(i.e., the URL data) of the state array.
+.TP
+\fB::http::error\fP \fItoken\fP
+This is a convenience procedure that returns the \fBerror\fP element
+of the state array.
+.TP
+\fB::http::status\fP \fItoken\fP
+This is a convenience procedure that returns the \fBstatus\fP element of
+the state array.
+.TP
+\fB::http::code\fP \fItoken\fP
+This is a convenience procedure that returns the \fBhttp\fP element of the
+state array.
+.TP
+\fB::http::ncode\fP \fItoken\fP
+This is a convenience procedure that returns just the numeric return
+code (200, 404, etc.) from the \fBhttp\fP element of the state array.
+.TP
+\fB::http::size\fP \fItoken\fP
+This is a convenience procedure that returns the \fBcurrentsize\fP
+element of the state array, which represents the number of bytes
+received from the URL in the \fB::http::geturl\fP call.
+.TP
+\fB::http::cleanup\fP \fItoken\fP
+This procedure cleans up the state associated with the connection
+identified by \fItoken\fP.  After this call, the procedures
+like \fB::http::data\fP cannot be used to get information
+about the operation.  It is \fIstrongly\fP recommended that you call
+this function after you're done with a given HTTP request.  Not doing
+so will result in memory not being freed, and if your app calls
+\fB::http::geturl\fP enough times, the memory leak could cause a
+performance hit...or worse.
+.TP
+\fB::http::register\fP \fIproto port command\fP
+This procedure allows one to provide custom HTTP transport types
+such as HTTPS, by registering a prefix, the default port, and the
+command to execute to create the Tcl \fBchannel\fR. E.g.:
+.RS
+.CS
+package require http
+package require tls
+
+http::register https 443 ::tls::socket
+
+set token [http::geturl https://my.secure.site/]
+.CE
+.RE
+.TP
+\fB::http::unregister\fP \fIproto\fP
+This procedure unregisters a protocol handler that was previously
+registered via \fBhttp::register\fR.
+
+.SH "ERRORS"
+The \fBhttp::geturl\fP procedure will raise errors in the following cases:
+invalid command line options,
+an invalid URL,
+a URL on a non-existent host,
+or a URL at a bad port on an existing host.
+These errors mean that it
+cannot even start the network transaction.
+It will also raise an error if it gets an I/O error while
+writing out the HTTP request header.
+For synchronous \fB::http::geturl\fP calls (where \fB-command\fP is
+not specified), it will raise an error if it gets an I/O error while
+reading the HTTP reply headers or data.  Because \fB::http::geturl\fP
+doesn't return a token in these cases, it does all the required
+cleanup and there's no issue of your app having to call
+\fB::http::cleanup\fP.
+.PP
+For asynchronous \fB::http::geturl\fP calls, all of the above error
+situations apply, except that if there's any error while 
+reading the
+HTTP reply headers or data, no exception is thrown.  This is because
+after writing the HTTP headers, \fB::http::geturl\fP returns, and the
+rest of the HTTP transaction occurs in the background.  The command
+callback can check if any error occurred during the read by calling
+\fB::http::status\fP to check the status and if it's \fIerror\fP,
+calling \fB::http::error\fP to get the error message.
+.PP
+Alternatively, if the main program flow reaches a point where it needs
+to know the result of the asynchronous HTTP request, it can call
+\fB::http::wait\fP and then check status and error, just as the
+callback does.
+.PP
+In any case, you must still call
+\fBhttp::cleanup\fP to delete the state array when you're done.
+.PP
+There are other possible results of the HTTP transaction
+determined by examining the status from \fBhttp::status\fP.
+These are described below.
+.TP
+ok
+If the HTTP transaction completes entirely, then status will be \fBok\fP.
+However, you should still check the \fBhttp::code\fP value to get
+the HTTP status.  The \fBhttp::ncode\fP procedure provides just
+the numeric error (e.g., 200, 404 or 500) while the \fBhttp::code\fP
+procedure returns a value like "HTTP 404 File not found".
+.TP
+eof
+If the server closes the socket without replying, then no error
+is raised, but the status of the transaction will be \fBeof\fP.
+.TP
+error
+The error message will also be stored in the \fBerror\fP status
+array element, accessible via \fB::http::error\fP.
+.PP
+Another error possibility is that \fBhttp::geturl\fP is unable to
+write all the post query data to the server before the server
+responds and closes the socket.
+The error message is saved in the \fBposterror\fP status array
+element and then  \fBhttp::geturl\fP attempts to complete the
+transaction.
+If it can read the server's response
+it will end up with an \fBok\fP status, otherwise it will have
+an \fBeof\fP status.
+
+.SH "STATE ARRAY"
+The \fB::http::geturl\fR procedure returns a \fItoken\fR that can be used to
+get to the state of the HTTP transaction in the form of a Tcl array.
+Use this construct to create an easy-to-use array variable:
+.CS
+upvar #0 $token state
+.CE
+Once the data associated with the url is no longer needed, the state
+array should be unset to free up storage.
+The \fBhttp::cleanup\fP procedure is provided for that purpose.
+The following elements of
+the array are supported:
+.RS
+.TP
+\fBbody\fR
+The contents of the URL.  This will be empty if the \fB\-channel\fR
+option has been specified.  This value is returned by the \fB::http::data\fP command.
+.TP
+\fBcharset\fR
+The value of the charset attribute from the \fBContent-Type\fR meta-data
+value.  If none was specified, this defaults to the RFC standard
+\fBiso8859-1\fR, or the value of \fB$::http::defaultCharset\fR.  Incoming
+text data will be automatically converted from this charset to utf-8.
+.TP
+\fBcoding\fR
+A copy of the \fBContent-Encoding\fR meta-data value.
+.TP
+\fBcurrentsize\fR
+The current number of bytes fetched from the URL.
+This value is returned by the \fB::http::size\fP command.
+.TP
+\fBerror\fR
+If defined, this is the error string seen when the HTTP transaction
+was aborted.
+.TP
+\fBhttp\fR
+The HTTP status reply from the server.  This value
+is returned by the \fB::http::code\fP command.  The format of this value is:
+.RS
+.CS
+\fIHTTP/1.0 code string\fP
+.CE
+The \fIcode\fR is a three-digit number defined in the HTTP standard.
+A code of 200 is OK.  Codes beginning with 4 or 5 indicate errors.
+Codes beginning with 3 are redirection errors.  In this case the
+\fBLocation\fR meta-data specifies a new URL that contains the
+requested information.
+.RE
+.TP
+\fBmeta\fR
+The HTTP protocol returns meta-data that describes the URL contents.
+The \fBmeta\fR element of the state array is a list of the keys and
+values of the meta-data.  This is in a format useful for initializing
+an array that just contains the meta-data:
+.RS
+.CS
+array set meta $state(meta)
+.CE
+Some of the meta-data keys are listed below, but the HTTP standard defines
+more, and servers are free to add their own.
+.TP
+\fBContent-Type\fR
+The type of the URL contents.  Examples include \fBtext/html\fR,
+\fBimage/gif,\fR \fBapplication/postscript\fR and
+\fBapplication/x-tcl\fR.
+.TP
+\fBContent-Length\fR
+The advertised size of the contents.  The actual size obtained by
+\fB::http::geturl\fR is available as \fBstate(size)\fR.
+.TP
+\fBLocation\fR
+An alternate URL that contains the requested data.
+.RE
+.TP
+\fBposterror\fR
+The error, if any, that occurred while writing
+the post query data to the server.
+.TP
+\fBstatus\fR
+Either \fBok\fR, for successful completion, \fBreset\fR for
+user-reset, \fBtimeout\fP if a timeout occurred before the transaction
+could complete, or \fBerror\fR for an error condition.  During the
+transaction this value is the empty string.
+.TP
+\fBtotalsize\fR
+A copy of the \fBContent-Length\fR meta-data value.
+.TP
+\fBtype\fR
+A copy of the \fBContent-Type\fR meta-data value.
+.TP
+\fBurl\fR
+The requested URL.
+.RE
+.SH EXAMPLE
+.DS
+# Copy a URL to a file and print meta-data
+proc ::http::copy { url file {chunk 4096} } {
+    set out [open $file w]
+    set token [geturl $url -channel $out -progress ::http::Progress \\
+	-blocksize $chunk]
+    close $out
+    # This ends the line started by http::Progress
+    puts stderr ""
+    upvar #0 $token state
+    set max 0
+    foreach {name value} $state(meta) {
+	if {[string length $name] > $max} {
+	    set max [string length $name]
+	}
+	if {[regexp -nocase ^location$ $name]} {
+	    # Handle URL redirects
+	    puts stderr "Location:$value"
+	    return [copy [string trim $value] $file $chunk]
+	}
+    }
+    incr max
+    foreach {name value} $state(meta) {
+	puts [format "%-*s %s" $max $name: $value]
+    }
+
+    return $token
+}
+proc ::http::Progress {args} {
+    puts -nonewline stderr . ; flush stderr
+}
+.DE
+
+.SH "SEE ALSO"
+safe(n), socket(n), safesock(n)
+
+.SH KEYWORDS
+security policy, socket
diff --git a/raw/mann/Tcl.n b/raw/mann/Tcl.n
new file mode 100644
index 0000000..68daa97
--- /dev/null
+++ b/raw/mann/Tcl.n
@@ -0,0 +1,428 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH Tcl n "8.1" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+Tcl \- Summary of Tcl language syntax.
+.BE
+
+.SH DESCRIPTION
+.PP
+The following rules define the syntax and semantics of the Tcl language:
+.IP [1]
+A Tcl script is a string containing one or more commands.
+Semi-colons and newlines are command separators unless quoted as
+described below.
+Close brackets are command terminators during command substitution
+(see below) unless quoted.
+.IP [2]
+A command is evaluated in two steps.
+First, the Tcl interpreter breaks the command into \fIwords\fR
+and performs substitutions as described below.
+These substitutions are performed in the same way for all
+commands.
+The first word is used to locate a command procedure to
+carry out the command, then all of the words of the command are
+passed to the command procedure.
+The command procedure is free to interpret each of its words
+in any way it likes, such as an integer, variable name, list,
+or Tcl script.
+Different commands interpret their words differently.
+.IP [3]
+Words of a command are separated by white space (except for
+newlines, which are command separators).
+.IP [4]
+If the first character of a word is double-quote (``"'') then
+the word is terminated by the next double-quote character.
+If semi-colons, close brackets, or white space characters
+(including newlines) appear between the quotes then they are treated
+as ordinary characters and included in the word.
+Command substitution, variable substitution, and backslash substitution
+are performed on the characters between the quotes as described below.
+The double-quotes are not retained as part of the word.
+.IP [5]
+If the first character of a word is an open brace (``{'') then
+the word is terminated by the matching close brace (``}'').
+Braces nest within the word: for each additional open
+brace there must be an additional close brace (however,
+if an open brace or close brace within the word is
+quoted with a backslash then it is not counted in locating the
+matching close brace).
+No substitutions are performed on the characters between the
+braces except for backslash-newline substitutions described
+below, nor do semi-colons, newlines, close brackets,
+or white space receive any special interpretation.
+The word will consist of exactly the characters between the
+outer braces, not including the braces themselves.
+.IP [6]
+If a word contains an open bracket (``['') then Tcl performs
+\fIcommand substitution\fR.
+To do this it invokes the Tcl interpreter recursively to process
+the characters following the open bracket as a Tcl script.
+The script may contain any number of commands and must be terminated
+by a close bracket (``]'').
+The result of the script (i.e. the result of its last command) is
+substituted into the word in place of the brackets and all of the
+characters between them.
+There may be any number of command substitutions in a single word.
+Command substitution is not performed on words enclosed in braces.
+.IP [7]
+If a word contains a dollar-sign (``$'') then Tcl performs \fIvariable
+substitution\fR:  the dollar-sign and the following characters are
+replaced in the word by the value of a variable.
+Variable substitution may take any of the following forms:
+.RS
+.TP 15
+\fB$\fIname\fR
+\fIName\fR is the name of a scalar variable;  the name is terminated
+by any character that isn't a letter, digit, or underscore.
+.TP 15
+\fB$\fIname\fB(\fIindex\fB)\fR
+\fIName\fR gives the name of an array variable and \fIindex\fR gives
+the name of an element within that array.
+\fIName\fR must contain only letters, digits, and underscores.
+Command substitutions, variable substitutions, and backslash
+substitutions are performed on the characters of \fIindex\fR.
+.TP 15
+\fB${\fIname\fB}\fR
+\fIName\fR is the name of a scalar variable.  It may contain any
+characters whatsoever except for close braces.
+.LP
+There may be any number of variable substitutions in a single word.
+Variable substitution is not performed on words enclosed in braces.
+.RE
+.IP [8]
+If a backslash (``\e'') appears within a word then
+\fIbackslash substitution\fR occurs.
+In all cases but those described below the backslash is dropped and
+the following character is treated as an ordinary
+character and included in the word.
+This allows characters such as double quotes, close brackets,
+and dollar signs to be included in words without triggering
+special processing.
+The following table lists the backslash sequences that are
+handled specially, along with the value that replaces each sequence.
+.RS
+.TP 7
+\e\fBa\fR
+Audible alert (bell) (0x7).
+.TP 7
+\e\fBb\fR
+Backspace (0x8).
+.TP 7
+\e\fBf\fR
+Form feed (0xc).
+.TP 7
+\e\fBn\fR
+Newline (0xa).
+.TP 7
+\e\fBr\fR
+Carriage-return (0xd).
+.TP 7
+\e\fBt\fR
+Tab (0x9).
+.TP 7
+\e\fBv\fR
+Vertical tab (0xb).
+.TP 7
+\e\fB<newline>\fIwhiteSpace\fR
+.
+A single space character replaces the backslash, newline, and all spaces
+and tabs after the newline.  This backslash sequence is unique in that it
+is replaced in a separate pre-pass before the command is actually parsed.
+This means that it will be replaced even when it occurs between braces,
+and the resulting space will be treated as a word separator if it isn't
+in braces or quotes.
+.TP 7
+\e\e
+Backslash (``\e'').
+.VS 8.1 br
+.TP 7
+\e\fIooo\fR 
+.
+The digits \fIooo\fR (one, two, or three of them) give an eight-bit octal 
+value for the Unicode character that will be inserted.  The upper bits of the
+Unicode character will be 0.
+.TP 7
+\e\fBx\fIhh\fR 
+.
+The hexadecimal digits \fIhh\fR give an eight-bit hexadecimal value for the
+Unicode character that will be inserted.  Any number of hexadecimal digits
+may be present; however, all but the last two are ignored (the result is
+always a one-byte quantity).  The upper bits of the Unicode character will
+be 0.
+.TP 7
+\e\fBu\fIhhhh\fR 
+.
+The hexadecimal digits \fIhhhh\fR (one, two, three, or four of them) give a
+sixteen-bit hexadecimal value for the Unicode character that will be
+inserted.
+.VE
+.LP
+Backslash substitution is not performed on words enclosed in braces,
+except for backslash-newline as described above.
+.RE
+.IP [9]
+If a hash character (``#'') appears at a point where Tcl is
+expecting the first character of the first word of a command,
+then the hash character and the characters that follow it, up
+through the next newline, are treated as a comment and ignored.
+The comment character only has significance when it appears
+at the beginning of a command.
+.IP [10]
+Each character is processed exactly once by the Tcl interpreter
+as part of creating the words of a command.
+For example, if variable substitution occurs then no further
+substitutions are performed on the value of the variable;  the
+value is inserted into the word verbatim.
+If command substitution occurs then the nested command is
+processed entirely by the recursive call to the Tcl interpreter;
+no substitutions are performed before making the recursive
+call and no additional substitutions are performed on the result
+of the nested script.
+.IP [11]
+Substitutions do not affect the word boundaries of a command.
+For example, during variable substitution the entire value of
+the variable becomes part of a single word, even if the variable's
+value contains spaces.
diff --git a/raw/mann/after.n b/raw/mann/after.n
new file mode 100644
index 0000000..89dc14f
--- /dev/null
+++ b/raw/mann/after.n
@@ -0,0 +1,342 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH after n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+after \- Execute a command after a time delay
+.SH SYNOPSIS
+\fBafter \fIms\fR
+.sp
+\fBafter \fIms \fR?\fIscript script script ...\fR?
+.sp
+\fBafter cancel \fIid\fR
+.sp
+\fBafter cancel \fIscript script script ...\fR
+.sp
+\fBafter idle \fR?\fIscript script script ...\fR?
+.sp
+\fBafter info \fR?\fIid\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is used to delay execution of the program or to execute
+a command in background sometime in the future.  It has several forms,
+depending on the first argument to the command:
+.TP
+\fBafter \fIms\fR
+\fIMs\fR must be an integer giving a time in milliseconds.
+The command sleeps for \fIms\fR milliseconds and then returns.
+While the command is sleeping the application does not respond to
+events.
+.TP
+\fBafter \fIms \fR?\fIscript script script ...\fR?
+In this form the command returns immediately, but it arranges
+for a Tcl command to be executed \fIms\fR milliseconds later as an
+event handler.
+The command will be executed exactly once, at the given time.
+The delayed command is formed by concatenating all the \fIscript\fR
+arguments in the same fashion as the \fBconcat\fR command.
+The command will be executed at global level (outside the context
+of any Tcl procedure).
+If an error occurs while executing the delayed command then the
+\fBbgerror\fR mechanism is used to report the error.
+The \fBafter\fR command returns an identifier that can be used
+to cancel the delayed command using \fBafter cancel\fR.
+.TP
+\fBafter cancel \fIid\fR
+Cancels the execution of a delayed command that
+was previously scheduled.
+\fIId\fR indicates which command should be canceled;  it must have
+been the return value from a previous \fBafter\fR command.
+If the command given by \fIid\fR has already been executed then
+the \fBafter cancel\fR command has no effect.
+.TP
+\fBafter cancel \fIscript script ...\fR
+This command also cancels the execution of a delayed command.
+The \fIscript\fR arguments are concatenated together with space
+separators (just as in the \fBconcat\fR command).
+If there is a pending command that matches the string, it is
+cancelled and will never be executed;  if no such command is
+currently pending then the \fBafter cancel\fR command has no effect.
+.TP
+\fBafter idle \fIscript \fR?\fIscript script ...\fR?
+Concatenates the \fIscript\fR arguments together with space
+separators (just as in the \fBconcat\fR command), and arranges
+for the resulting script to be evaluated later as an idle callback.
+The script will be run exactly once, the next time the event
+loop is entered and there are no events to process.
+The command returns an identifier that can be used
+to cancel the delayed command using \fBafter cancel\fR.
+If an error occurs while executing the script then the
+\fBbgerror\fR mechanism is used to report the error.
+.TP
+\fBafter info \fR?\fIid\fR?
+This command returns information about existing event handlers.
+If no \fIid\fR argument is supplied, the command returns
+a list of the identifiers for all existing
+event handlers created by the \fBafter\fR command for this
+interpreter.
+If \fIid\fR is supplied, it specifies an existing handler;
+\fIid\fR must have been the return value from some previous call
+to \fBafter\fR and it must not have triggered yet or been cancelled.
+In this case the command returns a list with two elements.
+The first element of the list is the script associated
+with \fIid\fR, and the second element is either
+\fBidle\fR or \fBtimer\fR to indicate what kind of event
+handler it is.
+.LP
+The \fBafter \fIms\fR and \fBafter idle\fR forms of the command
+assume that the application is event driven:  the delayed commands
+will not be executed unless the application enters the event loop.
+In applications that are not normally event-driven, such as
+\fBtclsh\fR, the event loop can be entered with the \fBvwait\fR
+and \fBupdate\fR commands.
+
+.SH "SEE ALSO"
+bgerror(n), concat(n), update(n), vwait(n)
+
+.SH KEYWORDS
+cancel, delay, idle callback, sleep, time
diff --git a/raw/mann/append.n b/raw/mann/append.n
new file mode 100644
index 0000000..8581fe7
--- /dev/null
+++ b/raw/mann/append.n
@@ -0,0 +1,267 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH append n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+append \- Append to variable
+.SH SYNOPSIS
+\fBappend \fIvarName \fR?\fIvalue value value ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Append all of the \fIvalue\fR arguments to the current value
+of variable \fIvarName\fR.  If \fIvarName\fR doesn't exist,
+it is given a value equal to the concatenation of all the
+\fIvalue\fR arguments.
+This command provides an efficient way to build up long
+variables incrementally.
+For example, ``\fBappend a $b\fR'' is much more efficient than
+``\fBset a $a$b\fR'' if \fB$a\fR is long.
+
+.SH "SEE ALSO"
+concat(n), lappend(n)
+
+.SH KEYWORDS
+append, variable
diff --git a/raw/mann/array.n b/raw/mann/array.n
new file mode 100644
index 0000000..d5e9100
--- /dev/null
+++ b/raw/mann/array.n
@@ -0,0 +1,358 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH array n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+array \- Manipulate array variables
+.SH SYNOPSIS
+\fBarray \fIoption arrayName\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command performs one of several operations on the
+variable given by \fIarrayName\fR.
+Unless otherwise specified for individual commands below,
+\fIarrayName\fR must be the name of an existing array variable.
+The \fIoption\fR argument determines what action is carried
+out by the command.
+The legal \fIoptions\fR (which may be abbreviated) are:
+.TP
+\fBarray anymore \fIarrayName searchId\fR
+Returns 1 if there are any more elements left to be processed
+in an array search, 0 if all elements have already been
+returned.
+\fISearchId\fR indicates which search on \fIarrayName\fR to
+check, and must have been the return value from a previous
+invocation of \fBarray startsearch\fR.
+This option is particularly useful if an array has an element
+with an empty name, since the return value from
+\fBarray nextelement\fR won't indicate whether the search
+has been completed.
+.TP
+\fBarray donesearch \fIarrayName searchId\fR
+This command terminates an array search and destroys all the
+state associated with that search.  \fISearchId\fR indicates
+which search on \fIarrayName\fR to destroy, and must have
+been the return value from a previous invocation of
+\fBarray startsearch\fR.  Returns an empty string.
+.TP
+\fBarray exists \fIarrayName\fR
+Returns 1 if \fIarrayName\fR is an array variable, 0 if there
+is no variable by that name or if it is a scalar variable.
+.TP
+\fBarray get \fIarrayName\fR ?\fIpattern\fR?
+Returns a list containing pairs of elements.  The first
+element in each pair is the name of an element in \fIarrayName\fR
+and the second element of each pair is the value of the
+array element.  The order of the pairs is undefined.
+If \fIpattern\fR is not specified, then all of the elements of the
+array are included in the result.
+If \fIpattern\fR is specified, then only those elements whose names
+match \fIpattern\fR (using the matching rules of
+\fBstring match\fR) are included.
+If \fIarrayName\fR isn't the name of an array variable, or if
+the array contains no elements, then an empty list is returned.
+.TP
+\fBarray names \fIarrayName\fR ?\fIpattern\fR?
+Returns a list containing the names of all of the elements in
+the array that match \fIpattern\fR (using the matching
+rules of \fBstring match\fR).
+If \fIpattern\fR is omitted then the command returns all of
+the element names in the array.
+If there are no (matching) elements in the array, or if \fIarrayName\fR
+isn't the name of an array variable, then an empty string is
+returned.
+.TP
+\fBarray nextelement \fIarrayName searchId\fR
+Returns the name of the next element in \fIarrayName\fR, or
+an empty string if all elements of \fIarrayName\fR have
+already been returned in this search.  The \fIsearchId\fR
+argument identifies the search, and must have
+been the return value of an \fBarray startsearch\fR command.
+Warning:  if elements are added to or deleted from the array,
+then all searches are automatically terminated just as if
+\fBarray donesearch\fR had been invoked; this will cause
+\fBarray nextelement\fR operations to fail for those searches.
+.TP
+\fBarray set \fIarrayName list\fR
+Sets the values of one or more elements in \fIarrayName\fR.
+\fIlist\fR must have a form like that returned by \fBarray get\fR,
+consisting of an even number of elements.
+Each odd-numbered element in \fIlist\fR is treated as an element
+name within \fIarrayName\fR, and the following element in \fIlist\fR
+is used as a new value for that array element.
+If the variable \fIarrayName\fR does not already exist
+and \fIlist\fR is empty,
+\fIarrayName\fR is created with an empty array value.
+.TP
+\fBarray size \fIarrayName\fR
+Returns a decimal string giving the number of elements in the
+array.
+If \fIarrayName\fR isn't the name of an array then 0 is returned.
+.TP
+\fBarray startsearch \fIarrayName\fR
+This command initializes an element-by-element search through the
+array given by \fIarrayName\fR, such that invocations of the
+\fBarray nextelement\fR command will return the names of the
+individual elements in the array.
+When the search has been completed, the \fBarray donesearch\fR
+command should be invoked.
+The return value is a
+search identifier that must be used in \fBarray nextelement\fR
+and \fBarray donesearch\fR commands; it allows multiple
+searches to be underway simultaneously for the same array.
+.VS 8.3
+.TP
+\fBarray unset \fIarrayName\fR ?\fIpattern\fR?
+Unsets all of the elements in the array that match \fIpattern\fR (using the
+matching rules of \fBstring match\fR).  If \fIarrayName\fR isn't the name
+of an array variable or there are no matching elements in the array, then
+an empty string is returned.  If \fIpattern\fR is omitted and is it an
+array variable, then the command unsets the entire array.
+.VE 8.3
+
+.SH KEYWORDS
+array, element names, search
diff --git a/raw/mann/bell.n b/raw/mann/bell.n
new file mode 100644
index 0000000..ef88471
--- /dev/null
+++ b/raw/mann/bell.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: bell.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: bell.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH bell n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+bell \- Ring a display's bell
+.SH SYNOPSIS
+\fBbell \fR?\fB\-displayof \fIwindow\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command rings the bell on the display for \fIwindow\fR and
+returns an empty string.
+If the \fB\-displayof\fR option is omitted, the display of the
+application's main window is used by default.
+The command uses the current bell-related settings for the display, which
+may be modified with programs such as \fBxset\fR.
+.PP
+This command also resets the screen saver for the screen.  Some
+screen savers will ignore this, but others will reset so that the
+screen becomes visible again.
+
+.SH KEYWORDS
+beep, bell, ring
diff --git a/raw/mann/bgerror.n b/raw/mann/bgerror.n
new file mode 100644
index 0000000..e9842ec
--- /dev/null
+++ b/raw/mann/bgerror.n
@@ -0,0 +1,314 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: bgerror.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: bgerror.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH bgerror n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+bgerror \- Command invoked to process background errors
+.SH SYNOPSIS
+\fBbgerror \fImessage\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBbgerror\fR command doesn't exist as built-in part of Tcl.  Instead,
+individual applications or users can define a \fBbgerror\fR
+command (e.g. as a Tcl procedure) if they wish to handle background
+errors.
+.PP
+A background error is one that occurs in an event handler or some
+other command that didn't originate with the application.
+For example, if an error occurs while executing a command specified
+with the \fBafter\fR command, then it is a background error.
+For a non-background error, the error can simply be returned up
+through nested Tcl command evaluations until it reaches the top-level
+code in the application; then the application can report the error
+in whatever way it wishes.  When a background error occurs, the
+unwinding ends in the Tcl library and there is no obvious way for Tcl
+to report the error.
+.PP
+When Tcl detects a background error, it saves information about the
+error and invokes the \fBbgerror\fR command later as an idle event
+handler. Before invoking \fBbgerror\fR, Tcl restores the
+\fBerrorInfo\fR and \fBerrorCode\fR variables to their values at the
+time the error occurred, then it invokes \fBbgerror\fR with the error
+message as its only argument.  Tcl assumes that the application has
+implemented the \fBbgerror\fR command, and that the command will
+report the error in a way that makes sense for the application.  Tcl
+will ignore any result returned by the \fBbgerror\fR command as long
+as no error is generated.
+.PP
+If another Tcl error occurs within the \fBbgerror\fR command (for
+example, because no \fBbgerror\fR command has been defined) then Tcl
+reports the error itself by writing a message to stderr.
+.PP
+If several background errors accumulate before \fBbgerror\fR is
+invoked to process them, \fBbgerror\fR will be invoked once for each
+error, in the order they occurred.  However, if \fBbgerror\fR returns
+with a break exception, then any remaining errors are skipped without
+calling \fBbgerror\fR.
+.PP
+Tcl has no default implementation for \fBbgerror\fR. However, in
+applications using Tk there is a default \fBbgerror\fR procedure which
+posts a dialog box containing the error message and offers the user a
+chance to see a stack trace showing where the error occurred.  In
+addition to allowing the user to view the stack trace, the dialog
+provides an additional application configurable button which may be
+used, for example, to save the stack trace to a file.  By default,
+this is the behavior associated with that button.  This behavior can
+be redefined by setting the option database values
+\fB*ErrorDialog.function.text\fR, to specify the caption for the
+function button, and \fB*ErrorDialog.function.command\fR, to specify
+the command to be run.  The text of the stack trace is appended to the
+command when it is evaluated.  If either of these options is set to
+the empty string, then the additional button will not be displayed in
+the dialog.
+
+.SH "SEE ALSO"
+after(n), tclvars(n)
+
+.SH KEYWORDS
+background error, reporting
diff --git a/raw/mann/binary.n b/raw/mann/binary.n
new file mode 100644
index 0000000..d186a5d
--- /dev/null
+++ b/raw/mann/binary.n
@@ -0,0 +1,783 @@
+'\"
+'\" Copyright (c) 1997 by Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: binary.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: binary.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH binary n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+binary \- Insert and extract fields from binary strings
+.SH SYNOPSIS
+\fBbinary format \fIformatString \fR?\fIarg arg ...\fR?
+.br
+\fBbinary scan \fIstring formatString \fR?\fIvarName varName ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command provides facilities for manipulating binary data.  The
+first form, \fBbinary format\fR, creates a binary string from normal
+Tcl values.  For example, given the values 16 and 22, on a 32 bit
+architecture, it might produce an 8-byte binary string consisting of
+two 4-byte integers, one for each of the numbers.  The second form of
+the command, \fBbinary scan\fR, does the opposite: it extracts data
+from a binary string and returns it as ordinary Tcl string values.
+
+.SH "BINARY FORMAT"
+.PP
+The \fBbinary format\fR command generates a binary string whose layout
+is specified by the \fIformatString\fR and whose contents come from
+the additional arguments.  The resulting binary value is returned.
+.PP
+The \fIformatString\fR consists of a sequence of zero or more field
+specifiers separated by zero or more spaces.  Each field specifier is
+a single type character followed by an optional numeric \fIcount\fR.
+Most field specifiers consume one argument to obtain the value to be
+formatted.  The type character specifies how the value is to be
+formatted.  The \fIcount\fR typically indicates how many items of the
+specified type are taken from the value.  If present, the \fIcount\fR
+is a non-negative decimal integer or \fB*\fR, which normally indicates
+that all of the items in the value are to be used.  If the number of
+arguments does not match the number of fields in the format string
+that consume arguments, then an error is generated.
+.PP
+Each type-count pair moves an imaginary cursor through the binary
+data, storing bytes at the current position and advancing the cursor
+to just after the last byte stored.  The cursor is initially at
+position 0 at the beginning of the data.  The type may be any one of
+the following characters:
+.IP \fBa\fR 5
+Stores a character string of length \fIcount\fR in the output string.
+If \fIarg\fR has fewer than \fIcount\fR bytes, then additional zero
+bytes are used to pad out the field.  If \fIarg\fR is longer than the
+specified length, the extra characters will be ignored.  If
+\fIcount\fR is \fB*\fR, then all of the bytes in \fIarg\fR will be
+formatted.  If \fIcount\fR is omitted, then one character will be
+formatted.  For example,
+.RS
+.CS
+\fBbinary format a7a*a alpha bravo charlie\fR
+.CE
+will return a string equivalent to \fBalpha\\000\\000bravoc\fR.
+.RE
+.IP \fBA\fR 5
+This form is the same as \fBa\fR except that spaces are used for
+padding instead of nulls.  For example,
+.RS
+.CS
+\fBbinary format A6A*A alpha bravo charlie\fR
+.CE
+will return \fBalpha bravoc\fR.
+.RE
+.IP \fBb\fR 5
+Stores a string of \fIcount\fR binary digits in low-to-high order
+within each byte in the output string.  \fIArg\fR must contain a
+sequence of \fB1\fR and \fB0\fR characters.  The resulting bytes are
+emitted in first to last order with the bits being formatted in
+low-to-high order within each byte.  If \fIarg\fR has fewer than
+\fIcount\fR digits, then zeros will be used for the remaining bits.
+If \fIarg\fR has more than the specified number of digits, the extra
+digits will be ignored.  If \fIcount\fR is \fB*\fR, then all of the
+digits in \fIarg\fR will be formatted.  If \fIcount\fR is omitted,
+then one digit will be formatted.  If the number of bits formatted
+does not end at a byte boundary, the remaining bits of the last byte
+will be zeros.  For example,
+.RS
+.CS
+\fBbinary format b5b* 11100 111000011010\fR
+.CE
+will return a string equivalent to \fB\\x07\\x87\\x05\fR.
+.RE
+.IP \fBB\fR 5
+This form is the same as \fBb\fR except that the bits are stored in
+high-to-low order within each byte.  For example,
+.RS
+.CS
+\fBbinary format B5B* 11100 111000011010\fR
+.CE
+will return a string equivalent to \fB\\xe0\\xe1\\xa0\fR.
+.RE
+.IP \fBh\fR 5
+Stores a string of \fIcount\fR hexadecimal digits in low-to-high
+within each byte in the output string.  \fIArg\fR must contain a
+sequence of characters in the set ``0123456789abcdefABCDEF''.  The
+resulting bytes are emitted in first to last order with the hex digits
+being formatted in low-to-high order within each byte.  If \fIarg\fR
+has fewer than \fIcount\fR digits, then zeros will be used for the
+remaining digits.  If \fIarg\fR has more than the specified number of
+digits, the extra digits will be ignored.  If \fIcount\fR is
+\fB*\fR, then all of the digits in \fIarg\fR will be formatted.  If
+\fIcount\fR is omitted, then one digit will be formatted.  If the
+number of digits formatted does not end at a byte boundary, the
+remaining bits of the last byte will be zeros.  For example,
+.RS
+.CS
+\fBbinary format h3h* AB def\fR
+.CE
+will return a string equivalent to \fB\\xba\\x00\\xed\\x0f\fR.
+.RE
+.IP \fBH\fR 5
+This form is the same as \fBh\fR except that the digits are stored in
+high-to-low order within each byte.  For example,
+.RS
+.CS
+\fBbinary format H3H* ab DEF\fR
+.CE
+will return a string equivalent to \fB\\xab\\x00\\xde\\xf0\fR.
+.RE
+.IP \fBc\fR 5
+Stores one or more 8-bit integer values in the output string.  If no
+\fIcount\fR is specified, then \fIarg\fR must consist of an integer
+value; otherwise \fIarg\fR must consist of a list containing at least
+\fIcount\fR integer elements.  The low-order 8 bits of each integer
+are stored as a one-byte value at the cursor position.  If \fIcount\fR
+is \fB*\fR, then all of the integers in the list are formatted.  If
+the number of elements in the list is fewer than \fIcount\fR, then an
+error is generated.  If the number of elements in the list is greater
+than \fIcount\fR, then the extra elements are ignored.  For example,
+.RS
+.CS
+\fBbinary format c3cc* {3 -3 128 1} 260 {2 5}\fR
+.CE
+will return a string equivalent to
+\fB\\x03\\xfd\\x80\\x04\\x02\\x05\fR, whereas
+.CS
+\fBbinary format c {2 5}\fR
+.CE
+will generate an error.
+.RE
+.IP \fBs\fR 5
+This form is the same as \fBc\fR except that it stores one or more
+16-bit integers in little-endian byte order in the output string.  The
+low-order 16-bits of each integer are stored as a two-byte value at
+the cursor position with the least significant byte stored first.  For
+example,
+.RS
+.CS
+\fBbinary format s3 {3 -3 258 1}\fR
+.CE
+will return a string equivalent to 
+\fB\\x03\\x00\\xfd\\xff\\x02\\x01\fR.
+.RE
+.IP \fBS\fR 5
+This form is the same as \fBs\fR except that it stores one or more
+16-bit integers in big-endian byte order in the output string.  For
+example,
+.RS
+.CS
+\fBbinary format S3 {3 -3 258 1}\fR
+.CE
+will return a string equivalent to 
+\fB\\x00\\x03\\xff\\xfd\\x01\\x02\fR.
+.RE
+.IP \fBi\fR 5
+This form is the same as \fBc\fR except that it stores one or more
+32-bit integers in little-endian byte order in the output string.  The
+low-order 32-bits of each integer are stored as a four-byte value at
+the cursor position with the least significant byte stored first.  For
+example,
+.RS
+.CS
+\fBbinary format i3 {3 -3 65536 1}\fR
+.CE
+will return a string equivalent to 
+\fB\\x03\\x00\\x00\\x00\\xfd\\xff\\xff\\xff\\x00\\x00\\x01\\x00\fR
+.RE
+.IP \fBI\fR 5
+This form is the same as \fBi\fR except that it stores one or more one
+or more 32-bit integers in big-endian byte order in the output string.
+For example,
+.RS
+.CS
+\fBbinary format I3 {3 -3 65536 1}\fR
+.CE
+will return a string equivalent to 
+\fB\\x00\\x00\\x00\\x03\\xff\\xff\\xff\\xfd\\x00\\x01\\x00\\x00\fR
+.RE
+.IP \fBf\fR 5
+This form is the same as \fBc\fR except that it stores one or more one
+or more single-precision floating in the machine's native
+representation in the output string.  This representation is not
+portable across architectures, so it should not be used to communicate
+floating point numbers across the network.  The size of a floating
+point number may vary across architectures, so the number of bytes
+that are generated may vary.  If the value overflows the
+machine's native representation, then the value of FLT_MAX
+as defined by the system will be used instead.  Because Tcl uses
+double-precision floating-point numbers internally, there may be some
+loss of precision in the conversion to single-precision.  For example,
+on a Windows system running on an Intel Pentium processor,
+.RS
+.CS
+\fBbinary format f2 {1.6 3.4}\fR
+.CE
+will return a string equivalent to 
+\fB\\xcd\\xcc\\xcc\\x3f\\x9a\\x99\\x59\\x40\fR.
+.RE
+.IP \fBd\fR 5
+This form is the same as \fBf\fR except that it stores one or more one
+or more double-precision floating in the machine's native
+representation in the output string.  For example, on a
+Windows system running on an Intel Pentium processor,
+.RS
+.CS
+\fBbinary format d1 {1.6}\fR
+.CE
+will return a string equivalent to 
+\fB\\x9a\\x99\\x99\\x99\\x99\\x99\\xf9\\x3f\fR.
+.RE
+.IP \fBx\fR 5
+Stores \fIcount\fR null bytes in the output string.  If \fIcount\fR is
+not specified, stores one null byte.  If \fIcount\fR is \fB*\fR,
+generates an error.  This type does not consume an argument.  For
+example,
+.RS
+.CS
+\fBbinary format a3xa3x2a3 abc def ghi\fR
+.CE
+will return a string equivalent to \fBabc\\000def\\000\\000ghi\fR.
+.RE
+.IP \fBX\fR 5
+Moves the cursor back \fIcount\fR bytes in the output string.  If
+\fIcount\fR is \fB*\fR or is larger than the current cursor position,
+then the cursor is positioned at location 0 so that the next byte
+stored will be the first byte in the result string.  If \fIcount\fR is
+omitted then the cursor is moved back one byte.  This type does not
+consume an argument.  For example,
+.RS
+.CS
+\fBbinary format a3X*a3X2a3 abc def ghi\fR
+.CE
+will return \fBdghi\fR.
+.RE
+.IP \fB@\fR 5
+Moves the cursor to the absolute location in the output string
+specified by \fIcount\fR.  Position 0 refers to the first byte in the
+output string.  If \fIcount\fR refers to a position beyond the last
+byte stored so far, then null bytes will be placed in the unitialized
+locations and the cursor will be placed at the specified location.  If
+\fIcount\fR is \fB*\fR, then the cursor is moved to the current end of
+the output string.  If \fIcount\fR is omitted, then an error will be
+generated.  This type does not consume an argument. For example,
+.RS
+.CS
+\fBbinary format a5 at 2a1@*a3 at 10a1 abcde f ghi j\fR
+.CE
+will return \fBabfdeghi\\000\\000j\fR.
+.RE
+
+.SH "BINARY SCAN"
+.PP
+The \fBbinary scan\fR command parses fields from a binary string,
+returning the number of conversions performed.  \fIString\fR gives the
+input to be parsed and \fIformatString\fR indicates how to parse it.
+Each \fIvarName\fR gives the name of a variable; when a field is
+scanned from \fIstring\fR the result is assigned to the corresponding
+variable.
+.PP
+As with \fBbinary format\fR, the \fIformatString\fR consists of a
+sequence of zero or more field specifiers separated by zero or more
+spaces.  Each field specifier is a single type character followed by
+an optional numeric \fIcount\fR.  Most field specifiers consume one
+argument to obtain the variable into which the scanned values should
+be placed.  The type character specifies how the binary data is to be
+interpreted.  The \fIcount\fR typically indicates how many items of
+the specified type are taken from the data.  If present, the
+\fIcount\fR is a non-negative decimal integer or \fB*\fR, which
+normally indicates that all of the remaining items in the data are to
+be used.  If there are not enough bytes left after the current cursor
+position to satisfy the current field specifier, then the
+corresponding variable is left untouched and \fBbinary scan\fR returns
+immediately with the number of variables that were set.  If there are
+not enough arguments for all of the fields in the format string that
+consume arguments, then an error is generated.
+.PP
+It is \fBimportant\fR to note that the \fBc\fR, \fBs\fR, and \fBS\fR
+(and \fBi\fR and \fBI\fR on 64bit systems) will be scanned into
+long data size values.  In doing this, values that have their high
+bit set (0x80 for chars, 0x8000 for shorts, 0x80000000 for ints),
+will be sign extended.  Thus the following will occur:
+.CS
+\fBset signShort [binary format s1 0x8000]\fR
+\fBbinary scan $signShort s1 val; \fI# val == 0xFFFF8000\fR
+.CE
+If you want to produce an unsigned value, then you can mask the return 
+value to the desired size.  For example, to produce an unsigned short 
+value:
+.CS
+\fBset val [expr {$val & 0xFFFF}]; \fI# val == 0x8000\fR
+.CE
+.PP
+Each type-count pair moves an imaginary cursor through the binary data,
+reading bytes from the current position.  The cursor is initially
+at position 0 at the beginning of the data.  The type may be any one of
+the following characters:
+.IP \fBa\fR 5
+The data is a character string of length \fIcount\fR.  If \fIcount\fR
+is \fB*\fR, then all of the remaining bytes in \fIstring\fR will be
+scanned into the variable.  If \fIcount\fR is omitted, then one
+character will be scanned.  For example,
+.RS
+.CS
+\fBbinary scan abcde\\000fghi a6a10 var1 var2\fR
+.CE
+will return \fB1\fR with the string equivalent to \fBabcde\\000\fR
+stored in \fBvar1\fR and \fBvar2\fR left unmodified.
+.RE
+.IP \fBA\fR 5
+This form is the same as \fBa\fR, except trailing blanks and nulls are stripped from
+the scanned value before it is stored in the variable.  For example,
+.RS
+.CS
+\fBbinary scan "abc efghi  \\000" A* var1\fR
+.CE
+will return \fB1\fR with \fBabc efghi\fR stored in \fBvar1\fR.
+.RE
+.IP \fBb\fR 5
+The data is turned into a string of \fIcount\fR binary digits in
+low-to-high order represented as a sequence of ``1'' and ``0''
+characters.  The data bytes are scanned in first to last order with
+the bits being taken in low-to-high order within each byte.  Any extra
+bits in the last byte are ignored.  If \fIcount\fR is \fB*\fR, then
+all of the remaining bits in \fBstring\fR will be scanned.  If
+\fIcount\fR is omitted, then one bit will be scanned.  For example,
+.RS
+.CS
+\fBbinary scan \\x07\\x87\\x05 b5b* var1 var2\fR
+.CE
+will return \fB2\fR with \fB11100\fR stored in \fBvar1\fR and
+\fB1110000110100000\fR stored in \fBvar2\fR.
+.RE
+.IP \fBB\fR 5
+This form is the same as \fBb\fR, except the bits are taken in
+high-to-low order within each byte.  For example,
+.RS
+.CS
+\fBbinary scan \\x70\\x87\\x05 B5B* var1 var2\fR
+.CE
+will return \fB2\fR with \fB01110\fR stored in \fBvar1\fR and
+\fB1000011100000101\fR stored in \fBvar2\fR.
+.RE
+.IP \fBh\fR 5
+The data is turned into a string of \fIcount\fR hexadecimal digits in
+low-to-high order represented as a sequence of characters in the set
+``0123456789abcdef''.  The data bytes are scanned in first to last
+order with the hex digits being taken in low-to-high order within each
+byte.  Any extra bits in the last byte are ignored.  If \fIcount\fR
+is \fB*\fR, then all of the remaining hex digits in \fBstring\fR will be
+scanned.  If \fIcount\fR is omitted, then one hex digit will be
+scanned.  For example,
+.RS
+.CS
+\fBbinary scan \\x07\\x86\\x05 h3h* var1 var2\fR
+.CE
+will return \fB2\fR with \fB706\fR stored in \fBvar1\fR and
+\fB50\fR stored in \fBvar2\fR.
+.RE
+.IP \fBH\fR 5
+This form is the same as \fBh\fR, except the digits are taken in
+high-to-low order within each byte.  For example,
+.RS
+.CS
+\fBbinary scan \\x07\\x86\\x05 H3H* var1 var2\fR
+.CE
+will return \fB2\fR with \fB078\fR stored in \fBvar1\fR and
+\fB05\fR stored in \fBvar2\fR.
+.RE
+.IP \fBc\fR 5
+The data is turned into \fIcount\fR 8-bit signed integers and stored
+in the corresponding variable as a list. If \fIcount\fR is \fB*\fR,
+then all of the remaining bytes in \fBstring\fR will be scanned.  If
+\fIcount\fR is omitted, then one 8-bit integer will be scanned.  For
+example,
+.RS
+.CS
+\fBbinary scan \\x07\\x86\\x05 c2c* var1 var2\fR
+.CE
+will return \fB2\fR with \fB7 -122\fR stored in \fBvar1\fR and \fB5\fR
+stored in \fBvar2\fR.  Note that the integers returned are signed, but
+they can be converted to unsigned 8-bit quantities using an expression
+like:
+.CS
+\fBexpr ( $num + 0x100 ) % 0x100\fR
+.CE
+.RE
+.IP \fBs\fR 5
+The data is interpreted as \fIcount\fR 16-bit signed integers
+represented in little-endian byte order.  The integers are stored in
+the corresponding variable as a list.  If \fIcount\fR is \fB*\fR, then
+all of the remaining bytes in \fBstring\fR will be scanned.  If
+\fIcount\fR is omitted, then one 16-bit integer will be scanned.  For
+example,
+.RS
+.CS
+\fBbinary scan \\x05\\x00\\x07\\x00\\xf0\\xff s2s* var1 var2\fR
+.CE
+will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR
+stored in \fBvar2\fR.  Note that the integers returned are signed, but
+they can be converted to unsigned 16-bit quantities using an expression
+like:
+.CS
+\fBexpr ( $num + 0x10000 ) % 0x10000\fR
+.CE
+.RE
+.IP \fBS\fR 5
+This form is the same as \fBs\fR except that the data is interpreted
+as \fIcount\fR 16-bit signed integers represented in big-endian byte
+order.  For example,
+.RS
+.CS
+\fBbinary scan \\x00\\x05\\x00\\x07\\xff\\xf0 S2S* var1 var2\fR
+.CE
+will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR
+stored in \fBvar2\fR. 
+.RE
+.IP \fBi\fR 5
+The data is interpreted as \fIcount\fR 32-bit signed integers
+represented in little-endian byte order.  The integers are stored in
+the corresponding variable as a list.  If \fIcount\fR is \fB*\fR, then
+all of the remaining bytes in \fBstring\fR will be scanned.  If
+\fIcount\fR is omitted, then one 32-bit integer will be scanned.  For
+example,
+.RS
+.CS
+\fBbinary scan \\x05\\x00\\x00\\x00\\x07\\x00\\x00\\x00\\xf0\\xff\\xff\\xff i2i* var1 var2\fR
+.CE
+will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR
+stored in \fBvar2\fR.  Note that the integers returned are signed and
+cannot be represented by Tcl as unsigned values.
+.RE
+.IP \fBI\fR 5
+This form is the same as \fBI\fR except that the data is interpreted
+as \fIcount\fR 32-bit signed integers represented in big-endian byte
+order.  For example,
+.RS
+.CS
+\fBbinary \\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x07\\xff\\xff\\xff\\xf0 I2I* var1 var2\fR
+.CE
+will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR
+stored in \fBvar2\fR.
+.RE
+.IP \fBf\fR 5
+The data is interpreted as \fIcount\fR single-precision floating point
+numbers in the machine's native representation.  The floating point
+numbers are stored in the corresponding variable as a list.  If
+\fIcount\fR is \fB*\fR, then all of the remaining bytes in
+\fBstring\fR will be scanned.  If \fIcount\fR is omitted, then one
+single-precision floating point number will be scanned.  The size of a
+floating point number may vary across architectures, so the number of
+bytes that are scanned may vary.  If the data does not represent a
+valid floating point number, the resulting value is undefined and
+compiler dependent.  For example, on a Windows system running on an
+Intel Pentium processor,
+.RS
+.CS
+\fBbinary scan \\x3f\\xcc\\xcc\\xcd f var1\fR
+.CE
+will return \fB1\fR with \fB1.6000000238418579\fR stored in
+\fBvar1\fR.
+.RE
+.IP \fBd\fR 5
+This form is the same as \fBf\fR except that the data is interpreted
+as \fIcount\fR double-precision floating point numbers in the
+machine's native representation. For example, on a Windows system
+running on an Intel Pentium processor,
+.RS
+.CS
+\fBbinary scan \\x9a\\x99\\x99\\x99\\x99\\x99\\xf9\\x3f d var1\fR
+.CE
+will return \fB1\fR with \fB1.6000000000000001\fR
+stored in \fBvar1\fR.
+.RE
+.IP \fBx\fR 5
+Moves the cursor forward \fIcount\fR bytes in \fIstring\fR.  If
+\fIcount\fR is \fB*\fR or is larger than the number of bytes after the
+current cursor cursor position, then the cursor is positioned after
+the last byte in \fIstring\fR.  If \fIcount\fR is omitted, then the
+cursor is moved forward one byte.  Note that this type does not
+consume an argument.  For example,
+.RS
+.CS
+\fBbinary scan \\x01\\x02\\x03\\x04 x2H* var1\fR
+.CE
+will return \fB1\fR with \fB0304\fR stored in \fBvar1\fR.
+.RE
+.IP \fBX\fR 5
+Moves the cursor back \fIcount\fR bytes in \fIstring\fR.  If
+\fIcount\fR is \fB*\fR or is larger than the current cursor position,
+then the cursor is positioned at location 0 so that the next byte
+scanned will be the first byte in \fIstring\fR.  If \fIcount\fR
+is omitted then the cursor is moved back one byte.  Note that this
+type does not consume an argument.  For example,
+.RS
+.CS
+\fBbinary scan \\x01\\x02\\x03\\x04 c2XH* var1 var2\fR
+.CE
+will return \fB2\fR with \fB1 2\fR stored in \fBvar1\fR and \fB020304\fR
+stored in \fBvar2\fR.
+.RE
+.IP \fB@\fR 5
+Moves the cursor to the absolute location in the data string specified
+by \fIcount\fR.  Note that position 0 refers to the first byte in
+\fIstring\fR.  If \fIcount\fR refers to a position beyond the end of
+\fIstring\fR, then the cursor is positioned after the last byte.  If
+\fIcount\fR is omitted, then an error will be generated.  For example,
+.RS
+.CS
+\fBbinary scan \\x01\\x02\\x03\\x04 c2 at 1H* var1 var2\fR
+.CE
+will return \fB2\fR with \fB1 2\fR stored in \fBvar1\fR and \fB020304\fR
+stored in \fBvar2\fR.
+.RE
+
+.SH "PLATFORM ISSUES"
+Sometimes it is desirable to format or scan integer values in the
+native byte order for the machine.  Refer to the \fBbyteOrder\fR
+element of the \fBtcl_platform\fR array to decide which type character
+to use when formatting or scanning integers.
+
+.SH "SEE ALSO"
+format(n), scan(n), tclvars(n)
+
+.SH KEYWORDS
+binary, format, scan
diff --git a/raw/mann/bindtags.n b/raw/mann/bindtags.n
new file mode 100644
index 0000000..3b606da
--- /dev/null
+++ b/raw/mann/bindtags.n
@@ -0,0 +1,316 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: bindtags.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: bindtags.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH bindtags n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+bindtags \- Determine which bindings apply to a window, and order of evaluation
+.SH SYNOPSIS
+\fBbindtags \fIwindow \fR?\fItagList\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+When a binding is created with the \fBbind\fR command, it is
+associated either with a particular window such as \fB.a.b.c\fR,
+a class name such as \fBButton\fR, the keyword \fBall\fR, or any
+other string.
+All of these forms are called \fIbinding tags\fR.
+Each window contains a list of binding tags that determine how
+events are processed for the window.
+When an event occurs in a window, it is applied to each of the
+window's tags in order:  for each tag, the most specific binding
+that matches the given tag and event is executed.
+See the \fBbind\fR command for more information on the matching
+process.
+.PP
+By default, each window has four binding tags consisting of the
+name of the window, the window's class name, the name of the window's
+nearest toplevel ancestor, and \fBall\fR, in that order.
+Toplevel windows have only three tags by default, since the toplevel
+name is the same as that of the window.
+The \fBbindtags\fR command allows the binding tags for a window to be
+read and modified.
+.PP
+If \fBbindtags\fR is invoked with only one argument, then the
+current set of binding tags for \fIwindow\fR is returned as a list.
+If the \fItagList\fR argument is specified to \fBbindtags\fR,
+then it must be a proper list; the tags for \fIwindow\fR are changed
+to the elements of the list.
+The elements of \fItagList\fR may be arbitrary strings;  however,
+any tag starting with a dot is treated as the name of a window;  if
+no window by that name exists at the time an event is processed,
+then the tag is ignored for that event.
+The order of the elements in \fItagList\fR determines the order in
+which binding scripts are executed in response to events.
+For example, the command
+.CS
+\fBbindtags .b {all . Button .b}\fR
+.CE
+reverses the order in which binding scripts will be evaluated for
+a button named \fB.b\fR so that \fBall\fR bindings are invoked
+first, following by bindings for \fB.b\fR's toplevel (``.''), followed by
+class bindings, followed by bindings for \fB.b\fR.
+If \fItagList\fR is an empty list then the binding tags for \fIwindow\fR
+are returned to the default state described above.
+.PP
+The \fBbindtags\fR command may be used to introduce arbitrary
+additional binding tags for a window, or to remove standard tags.
+For example, the command
+.CS
+\fBbindtags .b {.b TrickyButton . all}\fR
+.CE
+replaces the \fBButton\fR tag for \fB.b\fR with \fBTrickyButton\fR.
+This means that the default widget bindings for buttons, which are
+associated with the \fBButton\fR tag, will no longer apply to \fB.b\fR,
+but any bindings associated with \fBTrickyButton\fR (perhaps some
+new button behavior) will apply.
+
+.SH "SEE ALSO"
+bind
+
+.SH KEYWORDS
+binding, event, tag
diff --git a/raw/mann/break.n b/raw/mann/break.n
new file mode 100644
index 0000000..8d7d5da
--- /dev/null
+++ b/raw/mann/break.n
@@ -0,0 +1,272 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: break.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: break.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH break n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+break \- Abort looping command
+.SH SYNOPSIS
+\fBbreak\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is typically invoked inside the body of a looping command
+such as \fBfor\fR or \fBforeach\fR or \fBwhile\fR.
+It returns a TCL_BREAK code, which causes a break exception
+to occur.
+The exception causes the current script to be aborted
+out to the innermost containing loop command, which then
+aborts its execution and returns normally.
+Break exceptions are also handled in a few other situations, such
+as the \fBcatch\fR command, Tk event bindings, and the outermost
+scripts of procedure bodies.
+
+.SH "SEE ALSO"
+catch(n), continue(n), for(n), foreach(n), while(n)
+
+.SH KEYWORDS
+abort, break, loop
diff --git a/raw/mann/catch.n b/raw/mann/catch.n
new file mode 100644
index 0000000..5ce7907
--- /dev/null
+++ b/raw/mann/catch.n
@@ -0,0 +1,301 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: catch.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: catch.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH catch n "8.0" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+catch \- Evaluate script and trap exceptional returns
+.SH SYNOPSIS
+\fBcatch\fI script \fR?\fIvarName\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBcatch\fR command may be used to prevent errors from aborting command
+interpretation.  \fBCatch\fR calls the Tcl interpreter recursively to
+execute \fIscript\fR, and always returns without raising an error,
+regardless of any errors that might occur while executing \fIscript\fR.
+.PP
+If \fIscript\fR raises an error, \fBcatch\fR will return a non-zero integer
+value corresponding to one of the exceptional return codes (see tcl.h
+for the definitions of code values).  If the \fIvarName\fR argument is
+given, then the variable it names is set to the error message from
+interpreting \fIscript\fR.
+.PP
+If \fIscript\fR does not raise an error, \fBcatch\fR will return 0
+(TCL_OK) and set the variable to the value returned from \fIscript\fR.
+.PP
+Note that \fBcatch\fR catches all exceptions, including those
+generated by \fBbreak\fR and \fBcontinue\fR as well as errors.  The
+only errors that are not caught are syntax errors found when the
+script is compiled.  This is because the catch command only catches
+errors during runtime.  When the catch statement is compiled, the
+script is compiled as well and any syntax errors will generate a Tcl
+error. 
+
+.SH EXAMPLES
+
+The \fBcatch\fR command may be used in an \fBif\fR to branch based on
+the success of a script.
+
+.CS
+if { [catch {open $someFile w} fid] } {
+    puts stderr "Could not open $someFile for writing\\n$fid"
+    exit 1
+}
+.CE
+The \fBcatch\fR command will not catch compiled syntax errors.  The
+first time proc \fBfoo\fR is called, the body will be compiled and a
+Tcl error will be generated. 
+
+.CS
+proc foo {} {
+    catch {expr {1 +- }}
+}
+.CE
+
+.SH KEYWORDS
+catch, error
diff --git a/raw/mann/cd.n b/raw/mann/cd.n
new file mode 100644
index 0000000..7798609
--- /dev/null
+++ b/raw/mann/cd.n
@@ -0,0 +1,266 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: cd.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: cd.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH cd n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+cd \- Change working directory
+.SH SYNOPSIS
+\fBcd \fR?\fIdirName\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Change the current working directory to \fIdirName\fR, or to the
+home directory (as specified in the HOME environment variable) if
+\fIdirName\fR is not given.
+Returns an empty string.
+
+.SH "SEE ALSO"
+filename(n), glob(n), pwd(n)
+
+.SH KEYWORDS
+working directory
diff --git a/raw/mann/chooseColor.n b/raw/mann/chooseColor.n
new file mode 100644
index 0000000..148e8e0
--- /dev/null
+++ b/raw/mann/chooseColor.n
@@ -0,0 +1,284 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: chooseColor.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: chooseColor.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_chooseColor n 4.2 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_chooseColor \- pops up a dialog box for the user to select a color.
+.PP
+.SH SYNOPSIS
+\fBtk_chooseColor \fR?\fIoption value ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The procedure \fBtk_chooseColor\fR pops up a dialog box for the
+user to select a color. The following \fIoption\-value\fR pairs are
+possible as command line arguments:
+.TP
+\fB\-initialcolor\fR \fIcolor\fR
+Specifies the color to display in the color dialog when it pops
+up. \fIcolor\fR must be in a form acceptable to the \fBTk_GetColor\fR
+function.
+.TP
+\fB\-parent\fR \fIwindow\fR
+Makes \fIwindow\fR the logical parent of the color dialog. The color
+dialog is displayed on top of its parent window.
+.TP
+\fB\-title\fR \fItitleString\fR
+Specifies a string to display as the title of the dialog box. If this
+option is not specified, then a default title will be displayed.
+.LP
+If the user selects a color, \fBtk_chooseColor\fR will return the
+name of the color in a form acceptable to \fBTk_GetColor\fR.  If the
+user cancels the operation, both commands will return the empty
+string.
+.SH EXAMPLE
+.CS
+button .b \-fg [tk_chooseColor \-initialcolor gray \-title "Choose color"]
+.CE
+
+.SH KEYWORDS
+color selection dialog
diff --git a/raw/mann/chooseDirectory.n b/raw/mann/chooseDirectory.n
new file mode 100644
index 0000000..d257e9e
--- /dev/null
+++ b/raw/mann/chooseDirectory.n
@@ -0,0 +1,287 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: chooseDirectory.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: chooseDirectory.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_chooseDirectory n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_chooseDirectory \- pops up a dialog box for the user to select a directory.
+.PP
+.SH SYNOPSIS
+\fBtk_chooseDirectory \fR?\fIoption value ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The procedure \fBtk_chooseDirectory\fR pops up a dialog box for the
+user to select a directory. The following \fIoption\-value\fR pairs are
+possible as command line arguments:
+.TP
+\fB\-initialdir\fR \fIdirname\fR
+Specifies that the directories in \fIdirectory\fR should be displayed
+when the dialog pops up. If this parameter is not specified, then
+the directories in the current working directory are displayed. If the
+parameter specifies a relative path, the return value will convert the
+relative path to an absolute path.  This option may not always work on
+the Macintosh.  This is not a bug. Rather, the \fIGeneral Controls\fR
+control panel on the Mac allows the end user to override the
+application default directory.
+.TP
+\fB\-parent\fR \fIwindow\fR
+Makes \fIwindow\fR the logical parent of the dialog. The dialog
+is displayed on top of its parent window.
+.TP
+\fB\-title\fR \fItitleString\fR
+Specifies a string to display as the title of the dialog box. If this
+option is not specified, then a default title will be displayed.
+.TP
+\fB\-mustexist\fR \fIboolean\fR
+Specifies whether the user may specify non-existant directories.  If
+this parameter is true, then the user may only select directories that
+already exist.  The default value is \fIfalse\fR.
+.LP
+
+.SH "SEE ALSO"
+tk_getOpenFile, tk_getSaveFile
+
+.SH KEYWORDS
+directory selection dialog
diff --git a/raw/mann/ckalloc.n b/raw/mann/ckalloc.n
new file mode 100644
index 0000000..af18db5
--- /dev/null
+++ b/raw/mann/ckalloc.n
@@ -0,0 +1,281 @@
+.\"
+.\" Memory.man
+.\"
+.\" Extended Tcl memory leak locator.
+.\"----------------------------------------------------------------------------
+.\" Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans.
+.\"
+.\" Permission to use, copy, modify, and distribute this software and its
+.\" documentation for any purpose and without fee is hereby granted, provided
+.\" that the above copyright notice appear in all copies.  Karl Lehenbauer and
+.\" Mark Diekhans make no representations about the suitability of this
+.\" software for any purpose.  It is provided "as is" without express or
+.\" implied warranty.
+.\"----------------------------------------------------------------------------
+.\" $Id: ckalloc.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.\"----------------------------------------------------------------------------
+.\"
+.TH "Memory" TCL "" "Tcl"
+.BS
+.SH NAME
+ckalloc, memory, ckfree, Tcl_DisplayMemory, Tcl_InitMemory, Tcl_ValidateAllMemory - Validated memory allocation interface.
+.SH SYNOPSIS
+.nf
+.B memory \fBinfo\fR
+
+.B memory \fBtrace\fR [\fBon|off\fR]
+
+.B memory \fBvalidate\fR [\fBon|off\fR]
+
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+
+.B memory \fBdisplay\fR \fIfile\fR
+
+.sp 2
+.ft CW
+#include <tcl.h>
+.sp
+char *
+ckalloc (unsigned size)
+.sp
+void
+ckfree (char *ptr)
+.sp
+int
+Tcl_DumpActiveMemory (char *fileName);
+.sp
+void
+Tcl_ValidateAllMemory (char *file,
+                       int   line)
+
+void
+Tcl_InitMemory (interp)
+.ft R
+'
+.SH ARGUMENTS
+.AS Tcl_Interp *fileName
+.AP uint size in
+
+.AP char *ptr in
+.AP Tcl_Interp *interp in
+A pointer to the Tcl interpreter.
+.AP char *file in
+The filename of the caller of Tcl_ValidateAllMemory.
+.AP int line in
+The line number of the caller of Tcl_ValidateAllMemory.
+.AP char *fileName in
+File to display list of active memory.
+.BE
+
+.SH DESCRIPTION
+.SS ckalloc
+.PP
+Thi macro allocates memory, in the same manner as \fBmalloc\fR, with the
+following differences: One, \fBckalloc\fR checks the value returned from
+\fBmalloc\fR (it calls \fBmalloc\fR for you) and panics if the allocation
+request fails.  Two, if enabled at compile time, a version of \fBckalloc\fR
+with special memory debugging capabilities replaces the normal version of
+\fBckalloc\fR, which aids in detecting memory overwrites and leaks (repeated
+allocations not matched by corresponding frees).
+.PP
+Parameters:
+.RS 2
+\fBo \fIsize\fR - The size of the memory block to be allocated.
+.RE
+.PP
+Returns:
+.RS 2
+A pointer to the allocated memory block.
+.RE
+'
+.SS ckfree
+.PP
+This macro frees memory allocated by \fBckalloc\fR.  Like \fBckalloc\fR,
+when memory debugging is enabled, \fBckfree\fR has enhanced capabilities
+for detecting memory overwrites and leaks.
+.PP
+It is very important that you use \fBckalloc\fR when you need to allocate
+memory, and that you use \fBckfree\fR to free it.  Should you use \fBmalloc\fR
+to allocate and \fBckfree\fR to free, spurious memory validation errors will
+occur when memory debugging is enabled.  Should you use \fBfree\fR to free
+memory allocated by \fBckalloc\fR, memory corruption will occur when memory
+debugging is enabled.  Any memory that is to be become the property of the Tcl
+interpreter, such as result space, must be allocated with \fBckalloc\fR.  If
+it is absolutely necessary for an application to pass back \fBmalloc\fRed
+memory to Tcl, it will work only if Tcl is complied with the
+\fBTCL_MEM_DEBUG\fR flag turned off.  If you convert your application to use
+this facility, it will help you find memory over runs and lost memory.  Note
+that memory allocated by a C library routine requiring freeing should still be
+freed with \fBfree\fR, since it calls \fBmalloc\fR rather than \fBckalloc\fR
+to do the allocation.
+.PP
+Parmeters:
+.RS 2
+\fBo \fIptr\fR - The address of a block to free, as returned by ckalloc.
+.RE
+.sp
+'
+.SS Tcl_DumpActiveMemory
+.PP 
+This function will output a list of all currently allocated memory to the
+specified file.  The following information is outputted for each allocated
+block of memory: starting and ending addresses (excluding guard zone), size,
+source file where \fBckalloc\fR was called to allocate the block and line
+number in that file.  It is especially useful to call
+\fBTcl_DumpActiveMemory\fR after the Tcl interpreter has been deleted.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfileName\fR - The name of the file to output the memory list to.
+.RE
+'
+.SS Tcl_ValidateAllMemory
+.PP
+Forces a validation of the guard zones of all currently allocated blocks
+of memory.  Normally validation of a block occurs when its freed, unless
+full validation is enabled, in which case validation of all blocks
+occurs when \fBckalloc\fR and \fBckfree\fR are called.  This function forces
+the validation to occur at any point.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfile\fR - The file that this routine is being called from, normally
+\fB__FILE__\fR.
+.br
+\fBo \fIline\fR - The line that this routine is being called from, normally
+\fB__LINE__\fR.
+.RE
+'
+.SH ENABLING MEMORY DEBUGGING
+.PP
+To enable memory debugging, Tcl should be recompiled from scratch with
+\fBTCL_MEM_DEBUG\fR defined.  This will also compile in
+a non-stub version of \fBTcl_InitMemory\fR
+to add the \fBmemory\fR command to Tcl.
+.PP
+\fBTCL_MEM_DEBUG\fR must be either left defined for all modules or undefined
+for all modules that are going to be linked together.  If they are not, link
+errors will occur, with either \fBTclDbCkfree\fR and \fBTcl_DbCkalloc\fR or
+\fBTcl_Ckalloc\fR and \fBTcl_Ckfree\fR being undefined.
+'
+.SH GUARD ZONES
+.PP
+When memory debugging is enabled, whenever a call to \fBckalloc\fR is
+made, slightly more memory than requested is allocated so the memory debugging
+code can keep track
+of the allocated memory, and also 
+eight-byte ``guard zones'' are placed in front of and behind the space that 
+will be returned to the caller.  (The size of the guard zone is defined
+by the C #define \fBGUARD_SIZE\fR in \fIbaseline/src/ckalloc.c\fR -- it
+can be extended if you suspect large overwrite problems, at some cost in
+performance.)  A known pattern is written into the guard zones and,
+on a call to \fBckfree\fR, the guard zones of the space being freed
+are checked to see if either zone has been modified in any way.
+If one has been, the guard bytes and their new contents are identified,
+and a ``low guard failed'' or ``high guard failed'' message is issued.
+The ``guard failed'' message includes the address of the memory packet 
+and the file name and line number of the code that called \fBckfree\fR.
+This allows you to detect the common sorts of one-off problems, where
+not enough space was allocated to contain the data written, for example.
+'
+.SH THE MEMORY COMMAND
+'@help: debug/memory
+'@brief: display and debug memory problems
+'
+.TP
+.B memory \fIoptions\fR
+.br
+The Tcl \fBmemory\fR command gives the Tcl developer control of Tcl's memory
+debugging capabilities.  The memory command has several suboptions, which are
+described below.  It is only available when Tcl has been compiled with memory
+debugging enabled.
+'
+.TP
+.B memory \fBinfo\fR
+.br
+Produces a report containing the total allocations and frees since 
+Tcl began, the current packets allocated (the current
+number of calls to \fBckalloc\fR not met by a corresponding call 
+to \fBckfree\fR), the current bytes allocated, and the maximum number
+of packets and bytes allocated.
+'
+.TP
+.B memory \fBtrace\fR [\fBon|off\fR]
+.br
+Turns memory tracing on or off.
+When memory tracing is on, every call to \fBckalloc\fR causes a line of
+trace information to be written to \fIstderr\fR, consisting of the
+word \fIckalloc\fR, followed by the address returned, the amount of
+memory allocated, and the C filename and line number of the code performing
+the allocation, for example...
+.sp
+   \fBckalloc 40e478 98 tclProc.c 1406\fR
+.sp
+Calls to \fBckfree\fR are traced in the same manner, except that the
+word \fIckalloc\fR is replaced by the word \fIckfree\fR.
+'
+.TP
+.B memory \fBvalidate\fR [\fBon|off\fR]
+.br
+Turns memory validation on or off.
+When memory validation is enabled, on every call to
+\fBckalloc\fR or \fBckfree\fR, the guard zones are checked for every
+piece of memory currently in existence that was allocated by \fBckalloc\fR.
+This has a large performance impact and should only be used when
+overwrite problems are strongly suspected.  The advantage of enabling
+memory validation is that a guard zone overwrite can be detected on
+the first call to \fBckalloc\fR or \fBckfree\fR after the overwrite
+occurred, rather than when the specific memory with the overwritten
+guard zone(s) is freed, which may occur long after the overwrite occurred.
+'
+.TP
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+.br
+Enable memory tracing after \fInnn\fR \fBckallocs\fR have been performed.
+For example, if you enter \fBmemory trace_on_at_malloc 100\fR,
+after the 100th call to \fBckalloc\fR, memory trace information will begin
+being displayed for all allocations and frees.  Since there can be a lot
+of memory activity before a problem occurs, judicious use of this option
+can reduce the slowdown caused by tracing (and the amount of trace information
+produced), if you can identify a number of allocations that occur before
+the problem sets in.  The current number of memory allocations that have 
+occurred since Tcl started is printed on a guard zone failure.
+.TP
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+.br
+After the \fBnnn\fR allocations have been performed, \fBckallocs\fR
+output a message to this effect and that it is now attempting to enter
+the C debugger.  Tcl will then issue a \fISIGINT\fR signal against itself.
+If you are running Tcl under a C debugger, it should then enter the debugger
+command mode.
+'
+.TP
+.B memory \fBdisplay\fR \fIfile\fR
+.br
+Write a list of all currently allocated memory to the specified file.
+'@endhelp
+'
+.SH DEBUGGING DIFFICULT MEMORY CORRUPTION PROBLEMS
+.PP
+Normally, Tcl compiled with memory debugging enabled will make it easy to isolate
+a corruption problem.  Turning on memory validation with the memory command
+can help isolate difficult problems.
+If you suspect (or know) that corruption is 
+occurring before the Tcl interpreter comes up far enough for you to
+issue commands, you can set \fBMEM_VALIDATE\fR define, recompile 
+tclCkalloc.c and rebuild Tcl.  This will enable memory validation
+from the first call to \fBckalloc\fR, again, at a large performance impact.
+.PP
+If you are desperate and validating memory on every call to \fBckalloc\fR
+and \fBckfree\fR isn't enough, you can explicitly call
+\fBTcl_ValidateAllMemory\fR directly at any point.  It takes a \fIchar *\fR
+and an \fIint\fR which are normally the filename and line number of the
+caller, but they can actually be anything you want.  Remember to remove
+the calls after you find the problem.
+'
+.SH KEYWORDS
+ckalloc, ckfree, free, memory, malloc
+
+
diff --git a/raw/mann/ckfree.n b/raw/mann/ckfree.n
new file mode 100644
index 0000000..fdffbcc
--- /dev/null
+++ b/raw/mann/ckfree.n
@@ -0,0 +1,281 @@
+.\"
+.\" Memory.man
+.\"
+.\" Extended Tcl memory leak locator.
+.\"----------------------------------------------------------------------------
+.\" Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans.
+.\"
+.\" Permission to use, copy, modify, and distribute this software and its
+.\" documentation for any purpose and without fee is hereby granted, provided
+.\" that the above copyright notice appear in all copies.  Karl Lehenbauer and
+.\" Mark Diekhans make no representations about the suitability of this
+.\" software for any purpose.  It is provided "as is" without express or
+.\" implied warranty.
+.\"----------------------------------------------------------------------------
+.\" $Id: ckfree.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.\"----------------------------------------------------------------------------
+.\"
+.TH "Memory" TCL "" "Tcl"
+.BS
+.SH NAME
+ckalloc, memory, ckfree, Tcl_DisplayMemory, Tcl_InitMemory, Tcl_ValidateAllMemory - Validated memory allocation interface.
+.SH SYNOPSIS
+.nf
+.B memory \fBinfo\fR
+
+.B memory \fBtrace\fR [\fBon|off\fR]
+
+.B memory \fBvalidate\fR [\fBon|off\fR]
+
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+
+.B memory \fBdisplay\fR \fIfile\fR
+
+.sp 2
+.ft CW
+#include <tcl.h>
+.sp
+char *
+ckalloc (unsigned size)
+.sp
+void
+ckfree (char *ptr)
+.sp
+int
+Tcl_DumpActiveMemory (char *fileName);
+.sp
+void
+Tcl_ValidateAllMemory (char *file,
+                       int   line)
+
+void
+Tcl_InitMemory (interp)
+.ft R
+'
+.SH ARGUMENTS
+.AS Tcl_Interp *fileName
+.AP uint size in
+
+.AP char *ptr in
+.AP Tcl_Interp *interp in
+A pointer to the Tcl interpreter.
+.AP char *file in
+The filename of the caller of Tcl_ValidateAllMemory.
+.AP int line in
+The line number of the caller of Tcl_ValidateAllMemory.
+.AP char *fileName in
+File to display list of active memory.
+.BE
+
+.SH DESCRIPTION
+.SS ckalloc
+.PP
+Thi macro allocates memory, in the same manner as \fBmalloc\fR, with the
+following differences: One, \fBckalloc\fR checks the value returned from
+\fBmalloc\fR (it calls \fBmalloc\fR for you) and panics if the allocation
+request fails.  Two, if enabled at compile time, a version of \fBckalloc\fR
+with special memory debugging capabilities replaces the normal version of
+\fBckalloc\fR, which aids in detecting memory overwrites and leaks (repeated
+allocations not matched by corresponding frees).
+.PP
+Parameters:
+.RS 2
+\fBo \fIsize\fR - The size of the memory block to be allocated.
+.RE
+.PP
+Returns:
+.RS 2
+A pointer to the allocated memory block.
+.RE
+'
+.SS ckfree
+.PP
+This macro frees memory allocated by \fBckalloc\fR.  Like \fBckalloc\fR,
+when memory debugging is enabled, \fBckfree\fR has enhanced capabilities
+for detecting memory overwrites and leaks.
+.PP
+It is very important that you use \fBckalloc\fR when you need to allocate
+memory, and that you use \fBckfree\fR to free it.  Should you use \fBmalloc\fR
+to allocate and \fBckfree\fR to free, spurious memory validation errors will
+occur when memory debugging is enabled.  Should you use \fBfree\fR to free
+memory allocated by \fBckalloc\fR, memory corruption will occur when memory
+debugging is enabled.  Any memory that is to be become the property of the Tcl
+interpreter, such as result space, must be allocated with \fBckalloc\fR.  If
+it is absolutely necessary for an application to pass back \fBmalloc\fRed
+memory to Tcl, it will work only if Tcl is complied with the
+\fBTCL_MEM_DEBUG\fR flag turned off.  If you convert your application to use
+this facility, it will help you find memory over runs and lost memory.  Note
+that memory allocated by a C library routine requiring freeing should still be
+freed with \fBfree\fR, since it calls \fBmalloc\fR rather than \fBckalloc\fR
+to do the allocation.
+.PP
+Parmeters:
+.RS 2
+\fBo \fIptr\fR - The address of a block to free, as returned by ckalloc.
+.RE
+.sp
+'
+.SS Tcl_DumpActiveMemory
+.PP 
+This function will output a list of all currently allocated memory to the
+specified file.  The following information is outputted for each allocated
+block of memory: starting and ending addresses (excluding guard zone), size,
+source file where \fBckalloc\fR was called to allocate the block and line
+number in that file.  It is especially useful to call
+\fBTcl_DumpActiveMemory\fR after the Tcl interpreter has been deleted.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfileName\fR - The name of the file to output the memory list to.
+.RE
+'
+.SS Tcl_ValidateAllMemory
+.PP
+Forces a validation of the guard zones of all currently allocated blocks
+of memory.  Normally validation of a block occurs when its freed, unless
+full validation is enabled, in which case validation of all blocks
+occurs when \fBckalloc\fR and \fBckfree\fR are called.  This function forces
+the validation to occur at any point.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfile\fR - The file that this routine is being called from, normally
+\fB__FILE__\fR.
+.br
+\fBo \fIline\fR - The line that this routine is being called from, normally
+\fB__LINE__\fR.
+.RE
+'
+.SH ENABLING MEMORY DEBUGGING
+.PP
+To enable memory debugging, Tcl should be recompiled from scratch with
+\fBTCL_MEM_DEBUG\fR defined.  This will also compile in
+a non-stub version of \fBTcl_InitMemory\fR
+to add the \fBmemory\fR command to Tcl.
+.PP
+\fBTCL_MEM_DEBUG\fR must be either left defined for all modules or undefined
+for all modules that are going to be linked together.  If they are not, link
+errors will occur, with either \fBTclDbCkfree\fR and \fBTcl_DbCkalloc\fR or
+\fBTcl_Ckalloc\fR and \fBTcl_Ckfree\fR being undefined.
+'
+.SH GUARD ZONES
+.PP
+When memory debugging is enabled, whenever a call to \fBckalloc\fR is
+made, slightly more memory than requested is allocated so the memory debugging
+code can keep track
+of the allocated memory, and also 
+eight-byte ``guard zones'' are placed in front of and behind the space that 
+will be returned to the caller.  (The size of the guard zone is defined
+by the C #define \fBGUARD_SIZE\fR in \fIbaseline/src/ckalloc.c\fR -- it
+can be extended if you suspect large overwrite problems, at some cost in
+performance.)  A known pattern is written into the guard zones and,
+on a call to \fBckfree\fR, the guard zones of the space being freed
+are checked to see if either zone has been modified in any way.
+If one has been, the guard bytes and their new contents are identified,
+and a ``low guard failed'' or ``high guard failed'' message is issued.
+The ``guard failed'' message includes the address of the memory packet 
+and the file name and line number of the code that called \fBckfree\fR.
+This allows you to detect the common sorts of one-off problems, where
+not enough space was allocated to contain the data written, for example.
+'
+.SH THE MEMORY COMMAND
+'@help: debug/memory
+'@brief: display and debug memory problems
+'
+.TP
+.B memory \fIoptions\fR
+.br
+The Tcl \fBmemory\fR command gives the Tcl developer control of Tcl's memory
+debugging capabilities.  The memory command has several suboptions, which are
+described below.  It is only available when Tcl has been compiled with memory
+debugging enabled.
+'
+.TP
+.B memory \fBinfo\fR
+.br
+Produces a report containing the total allocations and frees since 
+Tcl began, the current packets allocated (the current
+number of calls to \fBckalloc\fR not met by a corresponding call 
+to \fBckfree\fR), the current bytes allocated, and the maximum number
+of packets and bytes allocated.
+'
+.TP
+.B memory \fBtrace\fR [\fBon|off\fR]
+.br
+Turns memory tracing on or off.
+When memory tracing is on, every call to \fBckalloc\fR causes a line of
+trace information to be written to \fIstderr\fR, consisting of the
+word \fIckalloc\fR, followed by the address returned, the amount of
+memory allocated, and the C filename and line number of the code performing
+the allocation, for example...
+.sp
+   \fBckalloc 40e478 98 tclProc.c 1406\fR
+.sp
+Calls to \fBckfree\fR are traced in the same manner, except that the
+word \fIckalloc\fR is replaced by the word \fIckfree\fR.
+'
+.TP
+.B memory \fBvalidate\fR [\fBon|off\fR]
+.br
+Turns memory validation on or off.
+When memory validation is enabled, on every call to
+\fBckalloc\fR or \fBckfree\fR, the guard zones are checked for every
+piece of memory currently in existence that was allocated by \fBckalloc\fR.
+This has a large performance impact and should only be used when
+overwrite problems are strongly suspected.  The advantage of enabling
+memory validation is that a guard zone overwrite can be detected on
+the first call to \fBckalloc\fR or \fBckfree\fR after the overwrite
+occurred, rather than when the specific memory with the overwritten
+guard zone(s) is freed, which may occur long after the overwrite occurred.
+'
+.TP
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+.br
+Enable memory tracing after \fInnn\fR \fBckallocs\fR have been performed.
+For example, if you enter \fBmemory trace_on_at_malloc 100\fR,
+after the 100th call to \fBckalloc\fR, memory trace information will begin
+being displayed for all allocations and frees.  Since there can be a lot
+of memory activity before a problem occurs, judicious use of this option
+can reduce the slowdown caused by tracing (and the amount of trace information
+produced), if you can identify a number of allocations that occur before
+the problem sets in.  The current number of memory allocations that have 
+occurred since Tcl started is printed on a guard zone failure.
+.TP
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+.br
+After the \fBnnn\fR allocations have been performed, \fBckallocs\fR
+output a message to this effect and that it is now attempting to enter
+the C debugger.  Tcl will then issue a \fISIGINT\fR signal against itself.
+If you are running Tcl under a C debugger, it should then enter the debugger
+command mode.
+'
+.TP
+.B memory \fBdisplay\fR \fIfile\fR
+.br
+Write a list of all currently allocated memory to the specified file.
+'@endhelp
+'
+.SH DEBUGGING DIFFICULT MEMORY CORRUPTION PROBLEMS
+.PP
+Normally, Tcl compiled with memory debugging enabled will make it easy to isolate
+a corruption problem.  Turning on memory validation with the memory command
+can help isolate difficult problems.
+If you suspect (or know) that corruption is 
+occurring before the Tcl interpreter comes up far enough for you to
+issue commands, you can set \fBMEM_VALIDATE\fR define, recompile 
+tclCkalloc.c and rebuild Tcl.  This will enable memory validation
+from the first call to \fBckalloc\fR, again, at a large performance impact.
+.PP
+If you are desperate and validating memory on every call to \fBckalloc\fR
+and \fBckfree\fR isn't enough, you can explicitly call
+\fBTcl_ValidateAllMemory\fR directly at any point.  It takes a \fIchar *\fR
+and an \fIint\fR which are normally the filename and line number of the
+caller, but they can actually be anything you want.  Remember to remove
+the calls after you find the problem.
+'
+.SH KEYWORDS
+ckalloc, ckfree, free, memory, malloc
+
+
diff --git a/raw/mann/clipboard.n b/raw/mann/clipboard.n
new file mode 100644
index 0000000..d042162
--- /dev/null
+++ b/raw/mann/clipboard.n
@@ -0,0 +1,316 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: clipboard.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: clipboard.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH clipboard n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+clipboard \- Manipulate Tk clipboard
+.SH SYNOPSIS
+\fBclipboard \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command provides a Tcl interface to the Tk clipboard,
+which stores data for later retrieval using the selection mechanism.
+In order to copy data into the clipboard, \fBclipboard clear\fR must
+be called, followed by a sequence of one or more calls to \fBclipboard
+append\fR.  To ensure that the clipboard is updated atomically, all
+appends should be completed before returning to the event loop.
+.PP
+The first argument to \fBclipboard\fR determines the format of the
+rest of the arguments and the behavior of the command.  The following
+forms are currently supported:
+.PP
+.TP
+\fBclipboard clear\fR ?\fB\-displayof\fR \fIwindow\fR?
+Claims ownership of the clipboard on \fIwindow\fR's display and removes
+any previous contents.  \fIWindow\fR defaults to ``.''.  Returns an
+empty string.
+.TP
+\fBclipboard append\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-format\fR \fIformat\fR? ?\fB\-type\fR \fItype\fR? ?\fB\-\|\-\fR? \fIdata\fR
+Appends \fIdata\fR to the clipboard on \fIwindow\fR's
+display in the form given by \fItype\fR with the representation given
+by \fIformat\fR and claims ownership of the clipboard on \fIwindow\fR's
+display.
+.RS
+.PP
+\fIType\fR specifies the form in which the selection is to be returned
+(the desired ``target'' for conversion, in ICCCM terminology), and
+should be an atom name such as STRING or FILE_NAME; see the
+Inter-Client Communication Conventions Manual for complete details.
+\fIType\fR defaults to STRING.
+.PP
+The \fIformat\fR argument specifies the representation that should be
+used to transmit the selection to the requester (the second column of
+Table 2 of the ICCCM), and defaults to STRING.  If \fIformat\fR is
+STRING, the selection is transmitted as 8-bit ASCII characters.  If
+\fIformat\fR is ATOM, then the \fIdata\fR is
+divided into fields separated by white space; each field is converted
+to its atom value, and the 32-bit atom value is transmitted instead of
+the atom name.  For any other \fIformat\fR,  \fIdata\fR is divided
+into fields separated by white space and each 
+field is converted to a 32-bit integer; an array of integers is
+transmitted to the selection requester.  Note that strings passed to
+\fBclipboard append\fR are concatenated before conversion, so the
+caller must take care to ensure appropriate spacing across string
+boundaries.  All items appended to the clipboard with the same
+\fItype\fR must have the same \fIformat\fR.
+.PP
+The \fIformat\fR argument is needed only for compatibility with
+clipboard requesters that don't use Tk.  If the Tk toolkit is being
+used to retrieve the CLIPBOARD selection then the value is converted back to
+a string at the requesting end, so \fIformat\fR is
+irrelevant.
+.PP
+A \fB\-\|\-\fR argument may be specified to mark the end of options:  the
+next argument will always be used as \fIdata\fR.
+This feature may be convenient if, for example, \fIdata\fR starts
+with a \fB\-\fR.
+.RE
+
+.SH KEYWORDS
+clear, format, clipboard, append, selection, type
diff --git a/raw/mann/clock.n b/raw/mann/clock.n
new file mode 100644
index 0000000..7f7f40d
--- /dev/null
+++ b/raw/mann/clock.n
@@ -0,0 +1,449 @@
+'\"
+'\" Copyright (c) 1992-1995 Karl Lehenbauer and Mark Diekhans.
+'\" Copyright (c) 1995-1997 Sun Microsystems, Inc.
+'\" Copyright (c) 1998-1999 Scriptics Corporation
+'\"
+'\" This documentation is derived from the time and date facilities of
+'\" TclX, by Mark Diekhans and Karl Lehenbauer.
+'\" 
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: clock.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: clock.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH clock n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+clock \- Obtain and manipulate time
+.SH SYNOPSIS
+\fBclock \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command performs one of several operations that may obtain
+or manipulate strings or values that represent some notion of
+time.  The \fIoption\fR argument determines what action is carried
+out by the command.  The legal \fIoptions\fR (which may be
+abbreviated) are:
+.TP
+.VS 8.3
+\fBclock clicks\fR ?\fB\-milliseconds\fR?
+Return a high-resolution time value as a system-dependent integer
+value.  The unit of the value is system-dependent but should be the
+highest resolution clock available on the system such as a CPU cycle
+counter. If \fB\-milliseconds\fR is specified, then the value is
+guaranteed to be of millisecond granularity.
+This value should only be used for the relative measurement
+of elapsed time.
+.VE 8.3
+.TP
+\fBclock format \fIclockValue\fR ?\fB\-format \fIstring\fR? ?\fB\-gmt \fIboolean\fR?
+Converts an integer time value, typically returned by
+\fBclock seconds\fR, \fBclock scan\fR, or the \fBatime\fR, \fBmtime\fR,
+or \fBctime\fR options of the \fBfile\fR command, to human-readable
+form.  If the \fB\-format\fR argument is present the next argument is a
+string that describes how the date and time are to be formatted.
+Field descriptors consist of a \fB%\fR followed by a field
+descriptor character.  All other characters are copied into the result.
+Valid field descriptors are:
+.RS
+.IP \fB%%\fR
+Insert a %.
+.IP \fB%a\fR
+Abbreviated weekday name (Mon, Tue, etc.).
+.IP \fB%A\fR
+Full weekday name (Monday, Tuesday, etc.).
+.IP \fB%b\fR
+Abbreviated month name (Jan, Feb, etc.).
+.IP \fB%B\fR
+Full month name.
+.IP \fB%c\fR
+Locale specific date and time.
+.IP \fB%d\fR
+Day of month (01 - 31).
+.IP \fB%H\fR
+Hour in 24-hour format (00 - 23).
+.IP \fB%I\fR
+Hour in 12-hour format (00 - 12).
+.IP \fB%j\fR
+Day of year (001 - 366).
+.IP \fB%m\fR
+Month number (01 - 12).
+.IP \fB%M\fR
+Minute (00 - 59).
+.IP \fB%p\fR
+AM/PM indicator.
+.IP \fB%S\fR
+Seconds (00 - 59).
+.IP \fB%U\fR
+Week of year (00 - 52), Sunday is the first day of the week.
+.IP \fB%w\fR
+Weekday number (Sunday = 0).
+.IP \fB%W\fR
+Week of year (00 - 52), Monday is the first day of the week.
+.IP \fB%x\fR
+Locale specific date format.
+.IP \fB%X\fR
+Locale specific time format.
+.IP \fB%y\fR
+Year without century (00 - 99).
+.IP \fB%Y\fR
+Year with century (e.g. 1990)
+.IP \fB%Z\fR
+Time zone name.
+.RE
+.sp
+.RS
+In addition, the following field descriptors may be supported on some
+systems (e.g. Unix but not Windows):
+.IP \fB%D\fR
+Date as %m/%d/%y.
+.IP \fB%e\fR
+Day of month (1 - 31), no leading zeros.
+.IP \fB%h\fR
+Abbreviated month name.
+.IP \fB%n\fR
+Insert a newline.
+.IP \fB%r\fR
+Time as %I:%M:%S %p.
+.IP \fB%R\fR
+Time as %H:%M.
+.IP \fB%t\fR
+Insert a tab.
+.IP \fB%T\fR
+Time as %H:%M:%S.
+.RE
+.sp
+.RS
+If the \fB\-format\fR argument is not specified, the format string 
+"\fB%a %b %d %H:%M:%S %Z %Y\fR" is used.  If the \fB\-gmt\fR argument
+is present the next argument must be a boolean which if true specifies
+that the time will be formatted as Greenwich Mean Time. If false
+then the local timezone will be used as defined by the operating
+environment.
+.RE
+.TP
+\fBclock scan \fIdateString\fR ?\fB\-base \fIclockVal\fR? ?\fB\-gmt \fIboolean\fR?
+Convert \fIdateString\fR to an integer clock value (see \fBclock seconds\fR).
+This command can parse and convert virtually any standard date and/or time
+string, which can include standard time zone mnemonics.  If only a time is
+specified, the current date is assumed.  If the string does not contain a
+time zone mnemonic, the local time zone is assumed, unless the \fB\-gmt\fR 
+argument is true, in which case the clock value is calculated assuming
+that the specified time is relative to Greenwich Mean Time.
+\fB-gmt\fR, if specified, affects only the computed time value; it does not
+impact the interpretation of \fB-base\fR.
+.sp
+If the \fB\-base\fR flag is specified, the next argument should contain
+an integer clock value.  Only the date in this value is used, not the
+time.  This is useful for determining the time on a specific day or
+doing other date-relative conversions.
+.sp
+The \fIdateString\fR consists of zero or more specifications of the
+following form:
+.RS
+.TP
+\fItime\fR
+A time of day, which is of the form: \fIhh\fR?\fI:mm\fR?\fI:ss\fR?? 
+?\fImeridian\fR? ?\fIzone\fR? or \fIhhmm \fR?\fImeridian\fR? 
+?\fIzone\fR?. If no meridian is specified, \fIhh\fR is interpreted on
+a 24-hour clock.
+.TP
+\fIdate\fR
+A specific month and day with optional year.  The
+acceptable formats are \fImm/dd\fR?\fI/yy\fR?, \fImonthname dd\fR
+?, \fIyy\fR?, \fIdd monthname \fR?\fIyy\fR?, \fIday, dd monthname
+yy\fR, \fI?CC?yymmdd\fR, \fI?CC?yy-mm-dd\fR, \fIdd-monthname-?CC?yy\fR.
+The default year is the current year.  If the year is less
+.VS
+than 100, we treat the years 00-68 as 2000-2068 and the years 69-99
+as 1969-1999.  Not all platforms can represent the years 38-70, so
+an error may result if these years are used.
+.VE
+.TP
+\fIISO 8601 point-in-time\fR
+An ISO 8601 point-in-time specification, such as \fICCyymmddThhmmss\fR, where
+T is the literal T, \fICCyymmdd hhmmss\fR, or 
+\fICCyymmddThh:mm:ss\fR.
+.TP
+\fIrelative time\fR
+A specification relative to the current time.  The format is \fInumber
+unit\fR acceptable units are \fByear\fR, \fBfortnight\fR, \fBmonth\fR, \fBweek\fR, \fBday\fR,
+\fBhour\fR, \fBminute\fR (or \fBmin\fR), and \fBsecond\fR (or \fBsec\fR).  The
+unit can be specified as a singular or plural, as in \fB3 weeks\fR.
+These modifiers may also be specified:
+\fBtomorrow\fR, \fByesterday\fR, \fBtoday\fR, \fBnow\fR,
+\fBlast\fR, \fBthis\fR, \fBnext\fR, \fBago\fR.
+.RE
+.sp
+.RS
+The actual date is calculated according to the following steps.
+First, any absolute date and/or time is processed and converted.
+Using that time as the base, day-of-week specifications are added.
+Next, relative specifications are used.  If a date or day is
+specified, and no absolute or relative time is given, midnight is
+used.  Finally, a correction is applied so that the correct hour of
+the day is produced after allowing for daylight savings time
+differences and the correct date is given when going from the end
+of a long month to a short month.
+.sp
+Daylight savings time correction is applied only when the relative time
+is specified in units of days or more, ie, days, weeks, fortnights, months or
+years.  This means that when crossing the daylight savings time boundary,
+different results will be given for \fBclock scan "1 day"\fR and
+\fBclock scan "24 hours"\fR:
+.CS
+.ta 6c
+\fB% clock scan "1 day" -base [clock scan 1999-10-31]
+941443200
+% clock scan "24 hours" -base [clock scan 1999-10-31]
+941439600\fR
+.CE
+.RE
+.TP
+\fBclock seconds\fR
+Return the current date and time as a system-dependent integer value.  The
+unit of the value is seconds, allowing it to be used for relative time
+calculations.  The value is usually defined as total elapsed time from
+an ``epoch''.  You shouldn't assume the value of the epoch.
+
+.SH KEYWORDS
+clock, date, time
diff --git a/raw/mann/close.n b/raw/mann/close.n
new file mode 100644
index 0000000..5d584f8
--- /dev/null
+++ b/raw/mann/close.n
@@ -0,0 +1,297 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: close.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: close.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH close n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+close \- Close an open channel.
+.SH SYNOPSIS
+\fBclose \fIchannelId\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Closes the channel given by \fIchannelId\fR.  \fIChannelId\fR must be a
+channel identifier such as the return value from a previous \fBopen\fR
+or \fBsocket\fR command.
+All buffered output is flushed to the channel's output device,
+any buffered input is discarded, the underlying file or device is closed,
+and \fIchannelId\fR becomes unavailable for use.
+.VS "" br
+.PP
+If the channel is blocking, the command does not return until all output
+is flushed.
+If the channel is nonblocking and there is unflushed output, the
+channel remains open and the command
+returns immediately; output will be flushed in the background and the
+channel will be closed when all the flushing is complete.
+.VE
+.PP
+If \fIchannelId\fR is a blocking channel for a command pipeline then
+\fBclose\fR waits for the child processes to complete.
+.VS "" br
+.PP
+If the channel is shared between interpreters, then \fBclose\fR
+makes \fIchannelId\fR unavailable in the invoking interpreter but has no
+other effect until all of the sharing interpreters have closed the
+channel.
+When the last interpreter in which the channel is registered invokes
+\fBclose\fR, the cleanup actions described above occur. See the
+\fBinterp\fR command for a description of channel sharing.
+.PP
+Channels are automatically closed when an interpreter is destroyed and
+when the process exits.  Channels are switched to blocking mode, to ensure
+that all output is correctly flushed before the process exits.
+.VE
+.PP
+The command returns an empty string, and may generate an error if
+an error occurs while flushing output.
+
+.SH "SEE ALSO"
+file(n), open(n), socket(n), eof(n)
+
+.SH KEYWORDS
+blocking, channel, close, nonblocking
diff --git a/raw/mann/concat.n b/raw/mann/concat.n
new file mode 100644
index 0000000..52614ab
--- /dev/null
+++ b/raw/mann/concat.n
@@ -0,0 +1,278 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: concat.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: concat.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH concat n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+concat \- Join lists together
+.SH SYNOPSIS
+\fBconcat\fI \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command treats each argument as a list and concatenates them
+into a single list.
+It also eliminates leading and trailing spaces in the \fIarg\fR's
+and adds a single separator space between \fIarg\fR's.
+It permits any number of arguments.  For example,
+the command
+.CS
+\fBconcat a b {c d e} {f {g h}}\fR
+.CE
+will return
+.CS
+\fBa b c d e f {g h}\fR
+.CE
+as its result.
+.PP
+If no \fIarg\fRs are supplied, the result is an empty string.
+
+.SH "SEE ALSO"
+append(n), eval(n)
+
+.SH KEYWORDS
+concatenate, join, lists
diff --git a/raw/mann/continue.n b/raw/mann/continue.n
new file mode 100644
index 0000000..22a64c6
--- /dev/null
+++ b/raw/mann/continue.n
@@ -0,0 +1,272 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: continue.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: continue.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH continue n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+continue \- Skip to the next iteration of a loop
+.SH SYNOPSIS
+\fBcontinue\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is typically invoked inside the body of a looping command
+such as \fBfor\fR or \fBforeach\fR or \fBwhile\fR.
+It returns a TCL_CONTINUE code, which causes a continue exception
+to occur.
+The exception causes the current script to be aborted
+out to the innermost containing loop command, which then
+continues with the next iteration of the loop.
+Catch exceptions are also handled in a few other situations, such
+as the \fBcatch\fR command and the outermost scripts of procedure
+bodies.
+
+.SH "SEE ALSO"
+break(n), for(n), foreach(n), while(n)
+
+.SH KEYWORDS
+continue, iteration, loop
diff --git a/raw/mann/cursors.n b/raw/mann/cursors.n
new file mode 100644
index 0000000..9c3db8f
--- /dev/null
+++ b/raw/mann/cursors.n
@@ -0,0 +1,389 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: cursors.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: cursors.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH cursors n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+cursors \- mouse cursors available in Tk
+
+.SH DESCRIPTION
+.PP
+The \fB-cursor\fR widget option allows a Tk programmer to change the
+mouse cursor for a particular widget.  The cursor names recognized by
+Tk on all platforms are:
+.CS
+X_cursor
+arrow
+based_arrow_down
+based_arrow_up
+boat
+bogosity
+bottom_left_corner
+bottom_right_corner
+bottom_side
+bottom_tee
+box_spiral
+center_ptr
+circle
+clock
+coffee_mug
+cross
+cross_reverse
+crosshair
+diamond_cross
+dot
+dotbox
+double_arrow
+draft_large
+draft_small
+draped_box
+exchange
+fleur
+gobbler
+gumby
+hand1
+hand2
+heart
+icon
+iron_cross
+left_ptr
+left_side
+left_tee
+leftbutton
+ll_angle
+lr_angle
+man
+middlebutton
+mouse
+pencil
+pirate
+plus
+question_arrow
+right_ptr
+right_side
+right_tee
+rightbutton
+rtl_logo
+sailboat
+sb_down_arrow
+sb_h_double_arrow
+sb_left_arrow
+sb_right_arrow
+sb_up_arrow
+sb_v_double_arrow
+shuttle
+sizing
+spider
+spraycan
+star
+target
+tcross
+top_left_arrow
+top_left_corner
+top_right_corner
+top_side
+top_tee
+trek
+ul_angle
+umbrella
+ur_angle
+watch
+xterm
+.CE
+
+.SH "PORTABILITY ISSUES"
+
+.TP
+\fBWindows\fR
+On Windows systems, the following cursors are mapped to native cursors:
+.RS
+.CS
+arrow
+center_ptr
+crosshair
+fleur
+ibeam
+icon
+sb_h_double_arrow
+sb_v_double_arrow
+watch
+xterm
+.CE
+And the following additional cursors are available:
+.CS
+no
+starting
+size
+size_ne_sw
+size_ns
+size_nw_se
+size_we
+uparrow
+wait
+.CE
+The \fBno\fR cursor can be specified to eliminate the cursor.
+.RE
+
+.TP
+\fBMacintosh\fR
+On Macintosh systems, the following cursors are mapped to native cursors:
+.RS
+.CS
+arrow
+cross
+crosshair
+ibeam
+plus
+watch
+xterm
+.CE
+And the following additional cursors are available:
+.CS
+text
+cross-hair
+.CE
+.RE
+
+.SH KEYWORDS
+cursor, option
diff --git a/raw/mann/dde.n b/raw/mann/dde.n
new file mode 100644
index 0000000..4dddd17
--- /dev/null
+++ b/raw/mann/dde.n
@@ -0,0 +1,371 @@
+'\"
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: dde.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: dde.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH dde n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+dde \- Execute a Dynamic Data Exchange command
+.SH SYNOPSIS
+.sp
+\fBpackage require dde 1.1\fR
+.sp
+\fBdde \fIservername \fR?\fItopic\fR?
+.sp
+\fBdde ?\-async?\fR \fIcommand service topic \fR?\fIdata\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command allows an application to send Dynamic Data Exchange (DDE)
+command when running under Microsoft Windows. Dynamic Data Exchange is
+a mechanism where applications can exchange raw data. Each DDE
+transaction needs a \fIservice name\fR and a \fItopic\fR. Both the
+\fIservice name\fR and \fItopic\fR are application defined; Tcl uses
+the service name \fBTclEval\fR, while the topic name is the name of the
+interpreter given by \fBdde servername\fR. Other applications have their
+own \fIservice names\fR and \fItopics\fR. For instance, Microsoft Excel
+has the service name \fBExcel\fR.
+.PP
+The only option to the \fBdde\fR command is:
+.TP
+\fB\-async\fR
+Requests asynchronous invocation.  This is valid only for the
+\fBexecute\fR subcommand. Normally, the \fBdde execute\fR subcommand
+waits until the command completes, returning appropriate error
+messages. When the \fB\-async\fR option is used, the command returns
+immediately, and no error information is available.
+.SH "DDE COMMANDS"
+.PP
+The following commands are a subset of the full Dynamic Data Exchange
+set of commands.
+.TP
+\fBdde servername \fR?\fItopic\fR?
+\fBdde servername\fR registers the interpreter as a DDE server with
+the service name \fBTclEval\fR and the topic name specified by \fItopic\fR.
+If no \fItopic\fR is given, \fBdde servername\fR returns the name
+of the current topic or the empty string if it is not registered as a service.
+.TP
+\fBdde execute \fIservice topic data\fR
+\fBdde execute\fR takes the \fIdata\fR and sends it to the server
+indicated by \fIservice\fR with the topic indicated by
+\fItopic\fR. Typically, \fIservice\fR is the name of an application,
+and \fItopic\fR is a file to work on.  The \fIdata\fR field is given
+to the remote application. Typically, the application treats the
+\fIdata\fR field as a script, and the script is run in the
+application. The command returns an error if the script did not
+run. If the \fB\-async\fR flag was used, the command
+returns immediately with no error.
+.TP
+\fBdde poke \fIservice topic item data\fR
+\fBdde poke\fR passes the \fIdata\fR to the server indicated by
+\fIservice\fR using the \fItopic\fR and \fIitem\fR specified.  Typically,
+\fIservice\fR is the name of an application.  \fItopic\fR is application
+specific but can be a command to the server or the name of a file to work
+on.  The \fIitem\fR is also application specific and is often not used, but
+it must always be non-null.  The \fIdata\fR field is given to the remote
+application.
+.TP
+\fBdde request \fIservice topic item\fR
+\fBdde request\fR is typically used to get the value of something; the
+value of a cell in Microsoft Excel or the text of a selection in
+Microsoft Word. \fIservice\fR is typically the name of an application,
+\fItopic\fR is typically the name of the file, and \fIitem\fR is
+application-specific. The command returns the value of \fIitem\fR as
+defined in the application.
+.TP
+\fBdde services \fIservice topic\fR
+\fBdde services\fR returns a list of service-topic pairs that
+currently exist on the machine. If \fIservice\fR and \fItopic\fR are
+both null strings ({}), then all service-topic pairs currently
+available on the system are returned. If \fIservice\fR is null and
+\fItopic\fR is not, then all services with the specified topic are
+returned. If \fIservice\fR is not null and \fItopic\fR is, all topics
+for a given service are returned. If both are not null, if that
+service-topic pair currently exists, it is returned; otherwise, null
+is returned.
+.TP
+\fBdde eval \fItopic cmd \fR?\fIarg arg ...\fR?
+\fBdde eval\fR evaluates a command and its arguments using the
+interpreter specified by \fItopic\fR. The DDE service must be the
+\fBTclEval\fR service.  This command can be used to replace send on
+Windows.
+.SH "DDE AND TCL"
+A Tcl interpreter always has a service name of \fBTclEval\fR.  Each
+different interpreter of all running Tcl applications must be
+given a unique
+name specified by \fBdde servername\fR. Each interp is available as a
+DDE topic only if the \fBdde servername\fR command was used to set the
+name of the topic for each interp. So a \fBdde services TclEval {}\fR
+command will return a list of service-topic pairs, where each of the
+currently running interps will be a topic.
+.PP
+When Tcl processes a \fBdde execute\fR command, the data for the
+execute is run as a script in the interp named by the topic of the
+\fBdde execute\fR command.
+.PP
+When Tcl processes a \fBdde request\fR command, it returns the value of the
+variable given in the dde command in the context of the interp named by the
+dde topic. Tcl reserves the variable \fB$TCLEVAL$EXECUTE$RESULT\fR for
+internal use, and \fBdde request\fR commands for that variable will give
+unpredictable results.
+.PP
+An external application which wishes to run a script in Tcl should have
+that script store its result in a variable, run the \fBdde execute\fR
+command, and the run \fBdde request\fR to get the value of the
+variable.
+.PP
+When using DDE, be careful to ensure that the event queue is flushed
+using either \fBupdate\fR or \fBvwait\fR.  This happens by default
+when using \fBwish\fR unless a blocking command is called (such as \fBexec\fR
+without adding the \fB&\fR to place the process in the background).
+If for any reason the event queue is not flushed, DDE commands may
+hang until the event queue is flushed.  This can create a deadlock
+situation.
+
+.SH "SEE ALSO"
+tk(n), winfo(n), send(n)
+
+.SH KEYWORDS
+application, dde, name, remote execution
diff --git a/raw/mann/destroy.n b/raw/mann/destroy.n
new file mode 100644
index 0000000..a0b6805
--- /dev/null
+++ b/raw/mann/destroy.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: destroy.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: destroy.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH destroy n "" Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+destroy \- Destroy one or more windows
+.SH SYNOPSIS
+\fBdestroy \fR?\fIwindow window ...\fR?
+.BE
+
+.SH DESCRIPTION
+.VS
+.PP
+This command deletes the windows given by the
+\fIwindow\fR arguments, plus all of their descendants.
+If a \fIwindow\fR ``.'' is deleted then the entire application
+will be destroyed.
+The \fIwindow\fRs are destroyed in order, and if an error occurs
+in destroying a window the command aborts without destroying the
+remaining windows.
+No error is returned if \fIwindow\fR does not exist.
+.VE
+
+.SH KEYWORDS
+application, destroy, window
diff --git a/raw/mann/encoding.n b/raw/mann/encoding.n
new file mode 100644
index 0000000..d3cac8f
--- /dev/null
+++ b/raw/mann/encoding.n
@@ -0,0 +1,314 @@
+'\"
+'\" Copyright (c) 1998 by Scriptics Corporation.
+'\" 
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: encoding.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: encoding.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH encoding n "8.1" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+encoding \- Manipulate encodings
+.SH SYNOPSIS
+\fBencoding \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH INTRODUCTION
+.PP
+Strings in Tcl are encoded using 16-bit Unicode characters.  Different
+operating system interfaces or applications may generate strings in
+other encodings such as Shift-JIS.  The \fBencoding\fR command helps
+to bridge the gap between Unicode and these other formats.
+
+.SH DESCRIPTION
+.PP
+Performs one of several encoding related operations, depending on
+\fIoption\fR.  The legal \fIoption\fRs are:
+.TP
+\fBencoding convertfrom ?\fIencoding\fR? \fIdata\fR
+Convert \fIdata\fR to Unicode from the specified \fIencoding\fR.  The
+characters in \fIdata\fR are treated as binary data where the lower
+8-bits of each character is taken as a single byte.  The resulting
+sequence of bytes is treated as a string in the specified
+\fIencoding\fR.  If \fIencoding\fR is not specified, the current
+system encoding is used.
+.TP
+\fBencoding convertto ?\fIencoding\fR? \fIstring\fR
+Convert \fIstring\fR from Unicode to the specified \fIencoding\fR.
+The result is a sequence of bytes that represents the converted
+string.  Each byte is stored in the lower 8-bits of a Unicode
+character.  If \fIencoding\fR is not specified, the current
+system encoding is used.
+.TP
+\fBencoding names\fR
+Returns a list containing the names of all of the encodings that are
+currently available. 
+.TP
+\fBencoding system\fR ?\fIencoding\fR?
+Set the system encoding to \fIencoding\fR. If \fIencoding\fR is
+omitted then the command returns the current system encoding.  The
+system encoding is used whenever Tcl passes strings to system calls.
+
+.SH EXAMPLE
+.PP
+It is common practice to write script files using a text editor that
+produces output in the euc-jp encoding, which represents the ASCII
+characters as singe bytes and Japanese characters as two bytes.  This
+makes it easy to embed literal strings that correspond to non-ASCII
+characters by simply typing the strings in place in the script.
+However, because the \fBsource\fR command always reads files using the
+ISO8859-1 encoding, Tcl will treat each byte in the file as a separate
+character that maps to the 00 page in Unicode.  The
+resulting Tcl strings will not contain the expected Japanese
+characters.  Instead, they will contain a sequence of Latin-1
+characters that correspond to the bytes of the original string.  The
+\fBencoding\fR command can be used to convert this string to the
+expected Japanese Unicode characters.  For example,
+.CS
+	set s [encoding convertfrom euc-jp "\\xA4\\xCF"]
+.CE
+would return the Unicode string "\\u306F", which is the Hiragana
+letter HA.
+
+.SH "SEE ALSO"
+Tcl_GetEncoding(3)
+
+.SH KEYWORDS
+encoding
diff --git a/raw/mann/eof.n b/raw/mann/eof.n
new file mode 100644
index 0000000..3c01ed1
--- /dev/null
+++ b/raw/mann/eof.n
@@ -0,0 +1,265 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: eof.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: eof.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH eof n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+eof \- Check for end of file condition on channel
+.SH SYNOPSIS
+\fBeof \fIchannelId\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Returns 1 if an end of file condition occurred during the most
+recent input operation on \fIchannelId\fR (such as \fBgets\fR),
+0 otherwise.
+
+.SH "SEE ALSO"
+file(n), open(n), close(n), fblocked(n)
+
+.SH KEYWORDS
+channel, end of file
diff --git a/raw/mann/error.n b/raw/mann/error.n
new file mode 100644
index 0000000..7e69df4
--- /dev/null
+++ b/raw/mann/error.n
@@ -0,0 +1,296 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: error.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: error.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH error n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+error \- Generate an error
+.SH SYNOPSIS
+\fBerror \fImessage\fR ?\fIinfo\fR? ?\fIcode\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Returns a TCL_ERROR code, which causes command interpretation to be
+unwound.  \fIMessage\fR is a string that is returned to the application
+to indicate what went wrong.
+.PP
+If the \fIinfo\fR argument is provided and is non-empty,
+it is used to initialize the global variable \fBerrorInfo\fR.
+\fBerrorInfo\fR is used to accumulate a stack trace of what
+was in progress when an error occurred; as nested commands unwind,
+the Tcl interpreter adds information to \fBerrorInfo\fR.  If the
+\fIinfo\fR argument is present, it is used to initialize
+\fBerrorInfo\fR and the first increment of unwind information
+will not be added by the Tcl interpreter.  In other
+words, the command containing the \fBerror\fR command will not appear
+in \fBerrorInfo\fR; in its place will be \fIinfo\fR.
+This feature is most useful in conjunction with the \fBcatch\fR command:
+if a caught error cannot be handled successfully, \fIinfo\fR can be used
+to return a stack trace reflecting the original point of occurrence
+of the error:
+.CS
+\fBcatch {...} errMsg
+set savedInfo $errorInfo
+\&...
+error $errMsg $savedInfo\fR
+.CE
+.PP
+If the \fIcode\fR argument is present, then its value is stored
+in the \fBerrorCode\fR global variable.  This variable is intended
+to hold a machine-readable description of the error in cases where
+such information is available; see the \fBtclvars\fR manual
+page for information on the proper format for the variable.
+If the \fIcode\fR argument is not
+present, then \fBerrorCode\fR is automatically reset to
+``NONE'' by the Tcl interpreter as part of processing the
+error generated by the command.
+
+.SH "SEE ALSO"
+catch(n), tclvars(n)
+
+.SH KEYWORDS
+error, errorCode, errorInfo
diff --git a/raw/mann/eval.n b/raw/mann/eval.n
new file mode 100644
index 0000000..9046758
--- /dev/null
+++ b/raw/mann/eval.n
@@ -0,0 +1,268 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: eval.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: eval.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH eval n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+eval \- Evaluate a Tcl script
+.SH SYNOPSIS
+\fBeval \fIarg \fR?\fIarg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBEval\fR takes one or more arguments, which together comprise a Tcl
+script containing one or more commands.
+\fBEval\fR concatenates all its arguments in the same
+fashion as the \fBconcat\fR command, passes the concatenated string to the
+Tcl interpreter recursively, and returns the result of that
+evaluation (or any error generated by it).
+
+.SH KEYWORDS
+concatenate, evaluate, script
+
+.SH "SEE ALSO"
+catch(n), concat(n), error(n), subs(n), tclvars(n)
diff --git a/raw/mann/exec.n b/raw/mann/exec.n
new file mode 100644
index 0000000..1e1a2d0
--- /dev/null
+++ b/raw/mann/exec.n
@@ -0,0 +1,542 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: exec.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: exec.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH exec n 7.6 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+exec \- Invoke subprocess(es)
+.SH SYNOPSIS
+\fBexec \fR?\fIswitches\fR? \fIarg \fR?\fIarg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command treats its arguments as the specification
+of one or more subprocesses to execute.
+The arguments take the form of a standard shell pipeline
+where each \fIarg\fR becomes one word of a command, and
+each distinct command becomes a subprocess.
+.PP
+If the initial arguments to \fBexec\fR start with \fB\-\fR then
+they are treated as command-line switches and are not part
+of the pipeline specification.  The following switches are
+currently supported:
+.TP 13
+\fB\-keepnewline\fR
+Retains a trailing newline in the pipeline's output.
+Normally a trailing newline will be deleted.
+.TP 13
+\fB\-\|\-\fR
+Marks the end of switches.  The argument following this one will
+be treated as the first \fIarg\fR even if it starts with a \fB\-\fR.
+.PP
+If an \fIarg\fR (or pair of \fIarg\fR's) has one of the forms
+described below then it is used by \fBexec\fR to control the
+flow of input and output among the subprocess(es).
+Such arguments will not be passed to the subprocess(es).  In forms
+such as ``< \fIfileName\fR'' \fIfileName\fR may either be in a
+separate argument from ``<'' or in the same argument with no
+intervening space (i.e. ``<\fIfileName\fR'').
+.TP 15
+|
+Separates distinct commands in the pipeline.  The standard output
+of the preceding command will be piped into the standard input
+of the next command.
+.TP 15
+|&
+Separates distinct commands in the pipeline.  Both standard output
+and standard error of the preceding command will be piped into
+the standard input of the next command.
+This form of redirection overrides forms such as 2> and >&.
+.TP 15
+<\0\fIfileName\fR
+The file named by \fIfileName\fR is opened and used as the standard
+input for the first command in the pipeline.
+.TP 15
+<@\0\fIfileId\fR
+\fIFileId\fR must be the identifier for an open file, such as the return
+value from a previous call to \fBopen\fR.
+It is used as the standard input for the first command in the pipeline.
+\fIFileId\fR must have been opened for reading.
+.TP 15
+<<\0\fIvalue\fR
+\fIValue\fR is passed to the first command as its standard input.
+.TP 15
+>\0\fIfileName\fR
+Standard output from the last command is redirected to the file named
+\fIfileName\fR, overwriting its previous contents.
+.TP 15
+2>\0\fIfileName\fR
+Standard error from all commands in the pipeline is redirected to the
+file named \fIfileName\fR, overwriting its previous contents.
+.TP 15
+>&\0\fIfileName\fR
+Both standard output from the last command and standard error from all
+commands are redirected to the file named \fIfileName\fR, overwriting
+its previous contents.
+.TP 15
+>>\0\fIfileName\fR
+Standard output from the last command is
+redirected to the file named \fIfileName\fR, appending to it rather
+than overwriting it.
+.TP 15
+2>>\0\fIfileName\fR
+Standard error from all commands in the pipeline is
+redirected to the file named \fIfileName\fR, appending to it rather
+than overwriting it.
+.TP 15
+>>&\0\fIfileName\fR
+Both standard output from the last command and standard error from
+all commands are redirected to the file named \fIfileName\fR,
+appending to it rather than overwriting it.
+.TP 15
+>@\0\fIfileId\fR
+\fIFileId\fR must be the identifier for an open file, such as the return
+value from a previous call to \fBopen\fR.
+Standard output from the last command is redirected to \fIfileId\fR's
+file, which must have been opened for writing.
+.TP 15
+2>@\0\fIfileId\fR
+\fIFileId\fR must be the identifier for an open file, such as the return
+value from a previous call to \fBopen\fR.
+Standard error from all commands in the pipeline is
+redirected to \fIfileId\fR's file.
+The file must have been opened for writing.
+.TP 15
+>&@\0\fIfileId\fR
+\fIFileId\fR must be the identifier for an open file, such as the return
+value from a previous call to \fBopen\fR.
+Both standard output from the last command and standard error from
+all commands are redirected to \fIfileId\fR's file.
+The file must have been opened for writing.
+.PP
+If standard output has not been redirected then the \fBexec\fR
+command returns the standard output from the last command
+in the pipeline.
+If any of the commands in the pipeline exit abnormally or
+are killed or suspended, then \fBexec\fR will return an error
+and the error message will include the pipeline's output followed by
+error messages describing the abnormal terminations; the
+\fBerrorCode\fR variable will contain additional information
+about the last abnormal termination encountered.
+If any of the commands writes to its standard error file and that
+standard error isn't redirected,
+then \fBexec\fR will return an error;  the error message
+will include the pipeline's standard output, followed by messages
+about abnormal terminations (if any), followed by the standard error
+output.
+.PP
+If the last character of the result or error message
+is a newline then that character is normally deleted
+from the result or error message.
+This is consistent with other Tcl return values, which don't
+normally end with newlines.
+However, if \fB\-keepnewline\fR is specified then the trailing
+newline is retained.
+.PP
+If standard input isn't redirected with ``<'' or ``<<''
+or ``<@'' then the standard input for the first command in the
+pipeline is taken from the application's current standard input.
+.PP
+If the last \fIarg\fR is ``&'' then the pipeline will be
+executed in background.
+In this case the \fBexec\fR command will return a list whose
+elements are the process identifiers for all of the subprocesses
+in the pipeline.
+The standard output from the last command in the pipeline will
+go to the application's standard output if it hasn't been
+redirected, and error output from all of
+the commands in the pipeline will go to the application's
+standard error file unless redirected.
+.PP
+The first word in each command is taken as the command name;
+tilde-substitution is performed on it, and if the result contains
+no slashes then the directories
+in the PATH environment variable are searched for
+an executable by the given name.
+If the name contains a slash then it must refer to an executable
+reachable from the current directory.
+No ``glob'' expansion or other shell-like substitutions
+are performed on the arguments to commands.
+
+.VS
+.SH "PORTABILITY ISSUES"
+.TP
+\fBWindows\fR (all versions)
+.
+Reading from or writing to a socket, using the ``\fB@\0\fIfileId\fR''
+notation, does not work.  When reading from a socket, a 16-bit DOS
+application will hang and a 32-bit application will return immediately with
+end-of-file.  When either type of application writes to a socket, the
+information is instead sent to the console, if one is present, or is
+discarded.
+.sp
+The Tk console text widget does not provide real standard IO capabilities.
+Under Tk, when redirecting from standard input, all applications will see an
+immediate end-of-file; information redirected to standard output or standard
+error will be discarded.  
+.sp
+Either forward or backward slashes are accepted as path separators for
+arguments to Tcl commands.  When executing an application, the path name
+specified for the application may also contain forward or backward slashes
+as path separators.  Bear in mind, however, that most Windows applications
+accept arguments with forward slashes only as option delimiters and
+backslashes only in paths.  Any arguments to an application that specify a
+path name with forward slashes will not automatically be converted to use
+the backslash character.  If an argument contains forward slashes as the
+path separator, it may or may not be recognized as a path name, depending on
+the program.  
+.sp
+Additionally, when calling a 16-bit DOS or Windows 3.X application, all path
+names must use the short, cryptic, path format (e.g., using ``applba~1.def''
+instead of ``applbakery.default'').
+.sp
+Two or more forward or backward slashes in a row in a path refer to a
+network path.  For example, a simple concatenation of the root directory
+\fBc:/\fR with a subdirectory \fB/windows/system\fR will yield
+\fBc://windows/system\fR (two slashes together), which refers to the mount
+point called \fBsystem\fR on the machine called \fBwindows\fR (and the
+\fBc:/\fR is ignored), and is not equivalent to \fBc:/windows/system\fR,
+which describes a directory on the current computer.  The \fBfile join\fR
+command should be used to concatenate path components.
+.TP
+\fBWindows NT\fR
+.
+When attempting to execute an application, \fBexec\fR first searches for the
+name as it was specified.  Then, in order, \fB.com\fR, \fB.exe\fR, and \fB.bat\fR 
+are appended to the end of the specified name and it searches for
+the longer name.  If a directory name was not specified as part of the
+application name, the following directories are automatically searched in
+order when attempting to locate the application:
+.sp
+.RS
+.RS
+The directory from which the Tcl executable was loaded.
+.br
+The current directory.
+.br
+The Windows NT 32-bit system directory.
+.br
+The Windows NT 16-bit system directory.
+.br
+The Windows NT home directory.
+.br
+The directories listed in the path.
+.RE
+.sp
+In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR,
+the caller must prepend ``\fBcmd.exe /c\0\fR'' to the desired command.  
+.sp
+.RE
+.TP
+\fBWindows 95\fR
+.
+When attempting to execute an application, \fBexec\fR first searches for the
+name as it was specified.  Then, in order, \fB.com\fR, \fB.exe\fR, and \fB.bat\fR
+are appended to the end of the specified name and it searches for
+the longer name.  If a directory name was not specified as part of the
+application name, the following directories are automatically searched in
+order when attempting to locate the application:
+.sp
+.RS
+.RS
+The directory from which the Tcl executable was loaded.
+.br
+The current directory.
+.br
+The Windows 95 system directory.
+.br
+The Windows 95 home directory.
+.br
+The directories listed in the path.
+.RE
+.sp
+In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR,
+the caller must prepend ``\fBcommand.com /c\0\fR'' to the desired command.
+.sp
+Once a 16-bit DOS application has read standard input from a console and 
+then quit, all subsequently run 16-bit DOS applications will see the 
+standard input as already closed.  32-bit applications do not have this
+problem and will run correctly, even after a 16-bit DOS application thinks 
+that standard input is closed.  There is no known workaround for this bug
+at this time.
+.sp
+Redirection between the \fBNUL:\fR device and a 16-bit application does not
+always work.  When redirecting from \fBNUL:\fR, some applications may hang,
+others will get an infinite stream of ``0x01'' bytes, and some will actually
+correctly get an immediate end-of-file; the behavior seems to depend upon 
+something compiled into the application itself.  When redirecting greater than
+4K or so to \fBNUL:\fR, some applications will hang.  The above problems do not
+happen with 32-bit applications.  
+.sp
+All DOS 16-bit applications are run synchronously.  All standard input from
+a pipe to a 16-bit DOS application is collected into a temporary file; the
+other end of the pipe must be closed before the 16-bit DOS application
+begins executing.  All standard output or error from a 16-bit DOS
+application to a pipe is collected into temporary files; the application
+must terminate before the temporary files are redirected to the next stage
+of the pipeline.  This is due to a workaround for a Windows 95 bug in the
+implementation of pipes, and is how the standard Windows 95 DOS shell
+handles pipes itself.
+.sp
+Certain applications, such as \fBcommand.com\fR, should not be executed
+interactively.  Applications which directly access the console window,
+rather than reading from their standard input and writing to their standard
+output may fail, hang Tcl, or even hang the system if their own private
+console window is not available to them.
+.RE
+.TP
+\fBMacintosh\fR
+The \fBexec\fR command is not implemented and does not exist under Macintosh.
+.TP
+\fBUnix\fR\0\0\0\0\0\0\0
+The \fBexec\fR command is fully functional and works as described.
+
+.SH "SEE ALSO"
+error(n), open(n)
+
+.SH KEYWORDS
+execute, pipeline, redirection, subprocess
diff --git a/raw/mann/exit.n b/raw/mann/exit.n
new file mode 100644
index 0000000..2b3df64
--- /dev/null
+++ b/raw/mann/exit.n
@@ -0,0 +1,266 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: exit.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: exit.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH exit n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+exit \- End the application
+.SH SYNOPSIS
+\fBexit \fR?\fIreturnCode\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Terminate the process, returning \fIreturnCode\fR to the
+system as the exit status.
+If \fIreturnCode\fR isn't specified then it defaults
+to 0.
+
+.SH "SEE ALSO"
+exec(n), tclvars(n)
+
+.SH KEYWORDS
+exit, process
diff --git a/raw/mann/expr.n b/raw/mann/expr.n
new file mode 100644
index 0000000..a78b1e0
--- /dev/null
+++ b/raw/mann/expr.n
@@ -0,0 +1,622 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-2000 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: expr.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: expr.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH expr n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+expr \- Evaluate an expression
+.SH SYNOPSIS
+\fBexpr \fIarg \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Concatenates \fIarg\fR's (adding separator spaces between them),
+evaluates the result as a Tcl expression, and returns the value.
+The operators permitted in Tcl expressions are a subset of
+the operators permitted in C expressions, and they have the
+same meaning and precedence as the corresponding C operators.
+Expressions almost always yield numeric results
+(integer or floating-point values).
+For example, the expression
+.CS
+\fBexpr 8.2 + 6\fR
+.CE
+evaluates to 14.2.
+Tcl expressions differ from C expressions in the way that
+operands are specified.  Also, Tcl expressions support
+non-numeric operands and string comparisons.
+.SH OPERANDS
+.PP
+A Tcl expression consists of a combination of operands, operators,
+and parentheses.
+White space may be used between the operands and operators and
+parentheses; it is ignored by the expression's instructions.
+Where possible, operands are interpreted as integer values.
+Integer values may be specified in decimal (the normal case), in octal (if the
+first character of the operand is \fB0\fR), or in hexadecimal (if the first
+two characters of the operand are \fB0x\fR).
+If an operand does not have one of the integer formats given
+above, then it is treated as a floating-point number if that is
+possible.  Floating-point numbers may be specified in any of the
+ways accepted by an ANSI-compliant C compiler (except that the
+\fBf\fR, \fBF\fR, \fBl\fR, and \fBL\fR suffixes will not be permitted in
+most installations).  For example, all of the
+following are valid floating-point numbers:  2.1, 3., 6e4, 7.91e+16.
+If no numeric interpretation is possible, then an operand is left
+as a string (and only a limited set of operators may be applied to
+it).
+.PP
+Operands may be specified in any of the following ways:
+.IP [1]
+As an numeric value, either integer or floating-point.
+.IP [2]
+As a Tcl variable, using standard \fB$\fR notation.
+The variable's value will be used as the operand.
+.IP [3]
+As a string enclosed in double-quotes.
+The expression parser will perform backslash, variable, and
+command substitutions on the information between the quotes,
+and use the resulting value as the operand
+.IP [4]
+As a string enclosed in braces.
+The characters between the open brace and matching close brace
+will be used as the operand without any substitutions.
+.IP [5]
+As a Tcl command enclosed in brackets.
+The command will be executed and its result will be used as
+the operand.
+.IP [6]
+As a mathematical function whose arguments have any of the above
+forms for operands, such as \fBsin($x)\fR.  See below for a list of defined
+functions.
+.LP
+Where substitutions occur above (e.g. inside quoted strings), they
+are performed by the expression's instructions.
+However, an additional layer of substitution may already have
+been performed by the command parser before the expression
+processor was called.
+As discussed below, it is usually best to enclose expressions
+in braces to prevent the command parser from performing substitutions
+on the contents.
+.PP
+For some examples of simple expressions, suppose the variable
+\fBa\fR has the value 3 and
+the variable \fBb\fR has the value 6.
+Then the command on the left side of each of the lines below
+will produce the value on the right side of the line:
+.CS
+.ta 6c
+\fBexpr 3.1 + $a	6.1
+expr 2 + "$a.$b"	5.6
+expr 4*[llength "6 2"]	8
+expr {{word one} < "word $a"}	0\fR
+.CE
+.SH OPERATORS
+.PP
+The valid operators are listed below, grouped in decreasing order
+of precedence:
+.TP 20
+\fB\-\0\0+\0\0~\0\0!\fR
+Unary minus, unary plus, bit-wise NOT, logical NOT.  None of these operands
+may be applied to string operands, and bit-wise NOT may be
+applied only to integers.
+.TP 20
+\fB*\0\0/\0\0%\fR
+Multiply, divide, remainder.  None of these operands may be
+applied to string operands, and remainder may be applied only
+to integers.
+The remainder will always have the same sign as the divisor and
+an absolute value smaller than the divisor.
+.TP 20
+\fB+\0\0\-\fR
+Add and subtract.  Valid for any numeric operands.
+.TP 20
+\fB<<\0\0>>\fR
+Left and right shift.  Valid for integer operands only.
+A right shift always propagates the sign bit.
+.TP 20
+\fB<\0\0>\0\0<=\0\0>=\fR
+Boolean less, greater, less than or equal, and greater than or equal.
+Each operator produces 1 if the condition is true, 0 otherwise.
+These operators may be applied to strings as well as numeric operands,
+in which case string comparison is used.
+.TP 20
+\fB==\0\0!=\fR
+Boolean equal and not equal.  Each operator produces a zero/one result.
+Valid for all operand types.
+.TP 20
+\fB&\fR
+Bit-wise AND.  Valid for integer operands only.
+.TP 20
+\fB^\fR
+Bit-wise exclusive OR.  Valid for integer operands only.
+.TP 20
+\fB|\fR
+Bit-wise OR.  Valid for integer operands only.
+.TP 20
+\fB&&\fR
+Logical AND.  Produces a 1 result if both operands are non-zero,
+0 otherwise.
+Valid for boolean and numeric (integers or floating-point) operands only.
+.TP 20
+\fB||\fR
+Logical OR.  Produces a 0 result if both operands are zero, 1 otherwise.
+Valid for boolean and numeric (integers or floating-point) operands only.
+.TP 20
+\fIx\fB?\fIy\fB:\fIz\fR
+If-then-else, as in C.  If \fIx\fR
+evaluates to non-zero, then the result is the value of \fIy\fR.
+Otherwise the result is the value of \fIz\fR.
+The \fIx\fR operand must have a numeric value.
+.LP
+See the C manual for more details on the results
+produced by each operator.
+All of the binary operators group left-to-right within the same
+precedence level.  For example, the command
+.CS
+\fBexpr 4*2 < 7\fR
+.CE
+returns 0.
+.PP
+The \fB&&\fR, \fB||\fR, and \fB?:\fR operators have ``lazy
+evaluation'', just as in C, 
+which means that operands are not evaluated if they are
+not needed to determine the outcome.  For example, in the command
+.CS
+\fBexpr {$v ? [a] : [b]}\fR
+.CE
+only one of \fB[a]\fR or \fB[b]\fR will actually be evaluated,
+depending on the value of \fB$v\fR.  Note, however, that this is
+only true if the entire expression is enclosed in braces;  otherwise
+the Tcl parser will evaluate both \fB[a]\fR and \fB[b]\fR before
+invoking the \fBexpr\fR command.
+.SH "MATH FUNCTIONS"
+.PP
+Tcl supports the following mathematical functions in expressions:
+.DS
+.ta 3c 6c 9c
+\fBabs\fR	\fBcosh\fR	\fBlog\fR	\fBsqrt\fR
+\fBacos\fR	\fBdouble\fR	\fBlog10\fR	\fBsrand\fR
+\fBasin\fR	\fBexp\fR	\fBpow\fR	\fBtan\fR
+\fBatan\fR	\fBfloor\fR	\fBrand\fR	\fBtanh\fR
+\fBatan2\fR	\fBfmod\fR	\fBround\fR
+\fBceil\fR	\fBhypot\fR	\fBsin\fR
+\fBcos\fR	\fBint\fR	\fBsinh\fR
+.DE
+.PP
+.TP
+\fBabs(\fIarg\fB)\fR
+Returns the absolute value of \fIarg\fR.  \fIArg\fR may be either
+integer or floating-point, and the result is returned in the same form.
+.TP
+\fBacos(\fIarg\fB)\fR
+Returns the arc cosine of \fIarg\fR, in the range [0,pi]
+radians. \fIArg\fR should be in the range [-1,1].
+.TP
+\fBasin(\fIarg\fB)\fR
+Returns the arc sine of \fIarg\fR, in the range [-pi/2,pi/2] radians.
+\fIArg\fR should be in the range [-1,1].
+.TP
+\fBatan(\fIarg\fB)\fR
+Returns the arc tangent of \fIarg\fR, in the range [-pi/2,pi/2] radians.
+.TP
+\fBatan2(\fIx, y\fB)\fR
+Returns the arc tangent of \fIy\fR/\fIx\fR, in the range [-pi,pi]
+radians.  \fIx\fR and \fIy\fR cannot both be 0.
+.TP
+\fBceil(\fIarg\fB)\fR
+Returns the smallest integer value not less than \fIarg\fR.
+.TP
+\fBcos(\fIarg\fB)\fR
+Returns the cosine of \fIarg\fR, measured in radians.
+.TP
+\fBcosh(\fIarg\fB)\fR
+Returns the hyperbolic cosine of \fIarg\fR.  If the result would cause
+an overflow, an error is returned.
+.TP
+\fBdouble(\fIarg\fB)\fR
+If \fIarg\fR is a floating value, returns \fIarg\fR, otherwise converts
+\fIarg\fR to floating and returns the converted value.
+.TP
+\fBexp(\fIarg\fB)\fR
+Returns the exponential of \fIarg\fR, defined as e**\fIarg\fR.  If the
+result would cause an overflow, an error is returned.
+.TP
+\fBfloor(\fIarg\fB)\fR
+Returns the largest integral value not greater than \fIarg\fR.
+.TP
+\fBfmod(\fIx, y\fB)\fR
+Returns the floating-point remainder of the division of \fIx\fR by
+\fIy\fR.  If \fIy\fR is 0, an error is returned.
+.TP
+\fBhypot(\fIx, y\fB)\fR
+Computes the length of the hypotenuse of a right-angled triangle
+(\fIx\fR*\fIx\fR+\fIy\fR*\fIy\fR).
+.TP
+\fBint(\fIarg\fB)\fR
+If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise converts
+\fIarg\fR to integer by truncation and returns the converted value.
+.TP
+\fBlog(\fIarg\fB)\fR
+Returns the natural logarithm of \fIarg\fR.  \fIArg\fR must be a
+positive value.
+.TP
+\fBlog10(\fIarg\fB)\fR
+Returns the base 10 logarithm of \fIarg\fR.  \fIArg\fR must be a
+positive value.
+.TP
+\fBpow(\fIx, y\fB)\fR
+Computes the value of \fIx\fR raised to the power \fIy\fR.  If \fIx\fR
+is negative, \fIy\fR must be an integer value.
+.TP
+\fBrand()\fR
+Returns a floating point number from zero to just less than one or,
+in mathematical terms, the range [0,1).  The seed comes from the
+internal clock of the machine or may be set manual with the srand
+function.
+.TP
+\fBround(\fIarg\fB)\fR
+If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise converts
+\fIarg\fR to integer by rounding and returns the converted value.
+.TP
+\fBsin(\fIarg\fB)\fR
+Returns the sine of \fIarg\fR, measured in radians.
+.TP
+\fBsinh(\fIarg\fB)\fR
+Returns the hyperbolic sine of \fIarg\fR.  If the result would cause
+an overflow, an error is returned.
+.TP
+\fBsqrt(\fIarg\fB)\fR
+Returns the square root of \fIarg\fR.  \fIArg\fR must be non-negative.
+.TP
+\fBsrand(\fIarg\fB)\fR
+The \fIarg\fR, which must be an integer, is used to reset the seed for
+the random number generator.  Returns the first random number from
+that seed.  Each interpreter has it's own seed.
+.TP
+\fBtan(\fIarg\fB)\fR
+Returns the tangent of \fIarg\fR, measured in radians.
+.TP
+\fBtanh(\fIarg\fB)\fR
+Returns the hyperbolic tangent of \fIarg\fR.
+.PP
+In addition to these predefined functions, applications may
+define additional functions using \fBTcl_CreateMathFunc\fR().
+.SH "TYPES, OVERFLOW, AND PRECISION"
+.PP
+All internal computations involving integers are done with the C type
+\fIlong\fR, and all internal computations involving floating-point are
+done with the C type \fIdouble\fR.
+When converting a string to floating-point, exponent overflow is
+detected and results in a Tcl error.
+For conversion to integer from string, detection of overflow depends
+on the behavior of some routines in the local C library, so it should
+be regarded as unreliable.
+In any case, integer overflow and underflow are generally not detected
+reliably for intermediate results.  Floating-point overflow and underflow
+are detected to the degree supported by the hardware, which is generally
+pretty reliable.
+.PP
+Conversion among internal representations for integer, floating-point,
+and string operands is done automatically as needed.
+For arithmetic computations, integers are used until some
+floating-point number is introduced, after which floating-point is used.
+For example,
+.CS
+\fBexpr 5 / 4\fR
+.CE
+returns 1, while
+.CS
+\fBexpr 5 / 4.0\fR
+\fBexpr 5 / ( [string length "abcd"] + 0.0 )\fR
+.CE
+both return 1.25.
+Floating-point values are always returned with a ``\fB.\fR''
+or an \fBe\fR so that they will not look like integer values.  For
+example,
+.CS
+\fBexpr 20.0/5.0\fR
+.CE
+returns \fB4.0\fR, not \fB4\fR.
+
+.SH "STRING OPERATIONS"
+.PP
+String values may be used as operands of the comparison operators,
+although the expression evaluator tries to do comparisons as integer
+or floating-point when it can.
+If one of the operands of a comparison is a string and the other
+has a numeric value, the numeric operand is converted back to
+a string using the C \fIsprintf\fR format specifier
+\fB%d\fR for integers and \fB%g\fR for floating-point values.
+For example, the commands
+.CS
+\fBexpr {"0x03" > "2"}\fR
+\fBexpr {"0y" < "0x12"}\fR
+.CE
+both return 1.  The first comparison is done using integer
+comparison, and the second is done using string comparison after
+the second operand is converted to the string \fB18\fR.
+Because of Tcl's tendency to treat values as numbers whenever
+possible, it isn't generally a good idea to use operators like \fB==\fR
+when you really want string comparison and the values of the
+operands could be arbitrary;  it's better in these cases to use
+the \fBstring\fR command instead.
+
+.SH "PERFORMANCE CONSIDERATIONS"
+.PP
+Enclose expressions in braces for the best speed and the smallest
+storage requirements.
+This allows the Tcl bytecode compiler to generate the best code.
+.PP
+As mentioned above, expressions are substituted twice:
+once by the Tcl parser and once by the \fBexpr\fR command.
+For example, the commands
+.CS
+\fBset a 3\fR
+\fBset b {$a + 2}\fR
+\fBexpr $b*4\fR
+.CE
+return 11, not a multiple of 4.
+This is because the Tcl parser will first substitute \fB$a + 2\fR for
+the variable \fBb\fR,
+then the \fBexpr\fR command will evaluate the expression \fB$a + 2*4\fR.
+.PP
+Most expressions do not require a second round of substitutions.
+Either they are enclosed in braces or, if not,
+their variable and command substitutions yield numbers or strings
+that don't themselves require substitutions.
+However, because a few unbraced expressions 
+need two rounds of substitutions,
+the bytecode compiler must emit
+additional instructions to handle this situation.
+The most expensive code is required for
+unbraced expressions that contain command substitutions.
+These expressions must be implemented by generating new code
+each time the expression is executed.
+
+.SH KEYWORDS
+arithmetic, boolean, compare, expression, fuzzy comparison
diff --git a/raw/mann/fblocked.n b/raw/mann/fblocked.n
new file mode 100644
index 0000000..d58f40a
--- /dev/null
+++ b/raw/mann/fblocked.n
@@ -0,0 +1,268 @@
+'\" 
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: fblocked.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fblocked.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fblocked n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fblocked \- Test whether the last input operation exhausted all available input
+.SH SYNOPSIS
+\fBfblocked \fIchannelId\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBfblocked\fR command returns 1 if the most recent input operation
+on \fIchannelId\fR returned less information than requested because all
+available input was exhausted.
+For example, if \fBgets\fR is invoked when there are only three
+characters available for input and no end-of-line sequence, \fBgets\fR
+returns an empty string and a subsequent call to \fBfblocked\fR will
+return 1.
+.PP
+
+.SH "SEE ALSO"
+gets(n), open(n), read(n)
+
+.SH KEYWORDS
+blocking, nonblocking
diff --git a/raw/mann/fconfigure.n b/raw/mann/fconfigure.n
new file mode 100644
index 0000000..fdaf1b9
--- /dev/null
+++ b/raw/mann/fconfigure.n
@@ -0,0 +1,436 @@
+'\" 
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: fconfigure.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fconfigure.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fconfigure n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fconfigure \- Set and get options on a channel
+.SH SYNOPSIS
+.nf
+\fBfconfigure \fIchannelId\fR
+\fBfconfigure \fIchannelId\fR \fIname\fR
+\fBfconfigure \fIchannelId\fR \fIname value \fR?\fIname value ...\fR?
+.fi
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBfconfigure\fR command sets and retrieves options for channels.
+\fIChannelId\fR identifies the channel for which to set or query an option.
+If no \fIname\fR or \fIvalue\fR arguments are supplied, the command
+returns a list containing alternating option names and values for the channel.
+If \fIname\fR is supplied but no \fIvalue\fR then the command returns
+the current value of the given option.
+If one or more pairs of \fIname\fR and \fIvalue\fR are supplied, the
+command sets each of the named options to the corresponding \fIvalue\fR;
+in this case the return value is an empty string.
+.PP
+The options described below are supported for all channels. In addition,
+each channel type may add options that only it supports. See the manual
+entry for the command that creates each type of channels for the options
+that that specific type of channel supports. For example, see the manual
+entry for the \fBsocket\fR command for its additional options.
+.TP
+\fB\-blocking\fR \fIboolean\fR
+The \fB\-blocking\fR option determines whether I/O operations on the
+channel can cause the process to block indefinitely.
+The value of the option must be a proper boolean value.
+Channels are normally in blocking mode;  if a channel is placed into
+nonblocking mode it will affect the operation of the \fBgets\fR,
+\fBread\fR, \fBputs\fR, \fBflush\fR, and \fBclose\fR commands;
+see the documentation for those commands for details.
+For nonblocking mode to work correctly, the application must be
+using the Tcl event loop (e.g. by calling \fBTcl_DoOneEvent\fR or
+invoking the \fBvwait\fR command).
+.TP
+\fB\-buffering\fR \fInewValue\fR
+.
+If \fInewValue\fR is \fBfull\fR then the I/O system will buffer output
+until its internal buffer is full or until the \fBflush\fR command is
+invoked. If \fInewValue\fR is \fBline\fR, then the I/O system will
+automatically flush output for the channel whenever a newline character
+is output. If \fInewValue\fR is \fBnone\fR, the I/O system will flush
+automatically after every output operation.  The default is for
+\fB\-buffering\fR to be set to \fBfull\fR except for channels that
+connect to terminal-like devices; for these channels the initial setting
+is \fBline\fR.  Additionally, \fBstdin\fR and \fBstdout\fR are
+intially set to \fBline\fR, and \fBstderr\fR is set to \fBnone\fR.
+.TP
+\fB\-buffersize\fR \fInewSize\fR
+.
+\fINewvalue\fR must be an integer; its value is used to set the size of
+buffers, in bytes, subsequently allocated for this channel to store input
+or output. \fINewvalue\fR must be between ten and one million, allowing
+buffers of ten to one million bytes in size.
+.VS 8.1 br
+.TP
+\fB\-encoding\fR \fIname\fR
+.
+This option is used to specify the encoding of the channel, so that the data
+can be converted to and from Unicode for use in Tcl.  For instance, in
+order for Tcl to read characters from a Japanese file in \fBshiftjis\fR
+and properly process and display the contents, the encoding would be set
+to \fBshiftjis\fR.  Thereafter, when reading from the channel, the bytes in
+the Japanese file would be converted to Unicode as they are read.
+Writing is also supported \- as Tcl strings are written to the channel they
+will automatically be converted to the specified encoding on output.
+.RS
+.PP
+If a file contains pure binary data (for instance, a JPEG image), the
+encoding for the channel should be configured to be \fBbinary\fR.  Tcl
+will then assign no interpretation to the data in the file and simply read or
+write raw bytes.  The Tcl \fBbinary\fR command can be used to manipulate this
+byte-oriented data.
+.PP
+The default encoding for newly opened channels is the same platform- and
+locale-dependent system encoding used for interfacing with the operating
+system.  
+.RE
+.VE
+.TP
+\fB\-eofchar\fR \fIchar\fR
+.TP
+\fB\-eofchar\fR \fB{\fIinChar outChar\fB}\fR
+.
+This option supports DOS file systems that use Control-z (\ex1a) as an
+end of file marker.  If \fIchar\fR is not an empty string, then this
+character signals end-of-file when it is encountered during input.  For
+output, the end-of-file character is output when the channel is closed.
+If \fIchar\fR is the empty string, then there is no special end of file
+character marker.  For read-write channels, a two-element list specifies
+the end of file marker for input and output, respectively.  As a
+convenience, when setting the end-of-file character for a read-write
+channel you can specify a single value that will apply to both reading
+and writing.  When querying the end-of-file character of a read-write
+channel, a two-element list will always be returned.  The default value
+for \fB\-eofchar\fR is the empty string in all cases except for files
+under Windows.  In that case the \fB\-eofchar\fR is Control-z (\ex1a) for
+reading and the empty string for writing.
+.TP
+\fB\-translation\fR \fImode\fR
+.TP
+\fB\-translation\fR \fB{\fIinMode outMode\fB}\fR 
+.
+In Tcl scripts the end of a line is always represented using a single
+newline character (\en).  However, in actual files and devices the end of
+a line may be represented differently on different platforms, or even for
+different devices on the same platform.  For example, under UNIX newlines
+are used in files, whereas carriage-return-linefeed sequences are
+normally used in network connections.  On input (i.e., with \fBgets\fP
+and \fBread\fP) the Tcl I/O system automatically translates the external
+end-of-line representation into newline characters.  Upon output (i.e.,
+with \fBputs\fP), the I/O system translates newlines to the external
+end-of-line representation.  The default translation mode, \fBauto\fP,
+handles all the common cases automatically, but the \fB\-translation\fR
+option provides explicit control over the end of line translations.
+.RS
+.PP
+The value associated with \fB\-translation\fR is a single item for
+read-only and write-only channels.  The value is a two-element list for
+read-write channels; the read translation mode is the first element of
+the list, and the write translation mode is the second element.  As a
+convenience, when setting the translation mode for a read-write channel
+you can specify a single value that will apply to both reading and
+writing.  When querying the translation mode of a read-write channel, a
+two-element list will always be returned.  The following values are
+currently supported:
+.TP
+\fBauto\fR
+.
+As the input translation mode, \fBauto\fR treats any of newline
+(\fBlf\fP), carriage return (\fBcr\fP), or carriage return followed by a
+newline (\fBcrlf\fP) as the end of line representation.  The end of line
+representation can even change from line-to-line, and all cases are
+translated to a newline.  As the output translation mode, \fBauto\fR
+chooses a platform specific representation; for sockets on all platforms
+Tcl chooses \fBcrlf\fR, for all Unix flavors, it chooses \fBlf\fR, for the
+Macintosh platform it chooses \fBcr\fR and for the various flavors of
+Windows it chooses \fBcrlf\fR.  The default setting for
+\fB\-translation\fR is \fBauto\fR for both input and output.
+.VS 8.1 br
+.TP
+\fBbinary\fR 
+.
+No end-of-line translations are performed.  This is nearly identical to
+\fBlf\fP mode, except that in addition \fBbinary\fP mode also sets the
+end-of-file character to the empty string (which disables it) and sets the
+encoding to \fBbinary\fR (which disables encoding filtering).  See the
+description of \fB\-eofchar\fR and \fB\-encoding\fR for more information.
+.VE
+.TP
+\fBcr\fR
+.
+The end of a line in the underlying file or device is represented by a
+single carriage return character.  As the input translation mode,
+\fBcr\fP mode converts carriage returns to newline characters.  As the
+output translation mode, \fBcr\fP mode translates newline characters to
+carriage returns.  This mode is typically used on Macintosh platforms.
+.TP
+\fBcrlf\fR
+.
+The end of a line in the underlying file or device is represented by a
+carriage return character followed by a linefeed character.  As the input
+translation mode, \fBcrlf\fP mode converts carriage-return-linefeed
+sequences to newline characters.  As the output translation mode,
+\fBcrlf\fP mode translates newline characters to carriage-return-linefeed
+sequences.  This mode is typically used on Windows platforms and for
+network connections.
+.TP
+\fBlf\fR
+.
+The end of a line in the underlying file or device is represented by a
+single newline (linefeed) character.  In this mode no translations occur
+during either input or output.  This mode is typically used on UNIX
+platforms.
+.RE
+.PP
+
+.SH "SEE ALSO"
+close(n), flush(n), gets(n), puts(n), read(n), socket(n)
+
+.SH KEYWORDS
+blocking, buffering, carriage return, end of line, flushing, linemode,
+newline, nonblocking, platform, translation, encoding, filter, byte array,
+binary
diff --git a/raw/mann/fcopy.n b/raw/mann/fcopy.n
new file mode 100644
index 0000000..0ac265e
--- /dev/null
+++ b/raw/mann/fcopy.n
@@ -0,0 +1,362 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: fcopy.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fcopy.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fcopy n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fcopy \- Copy data from one channel to another.
+.SH SYNOPSIS
+\fBfcopy \fIinchan\fR \fIoutchan\fR ?\fB\-size \fIsize\fR? ?\fB\-command \fIcallback\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBfcopy\fP command copies data from one I/O channel, \fIinchan\fR to another I/O channel, \fIoutchan\fR.
+The \fBfcopy\fP command leverages the buffering in the Tcl I/O system to
+avoid extra copies and to avoid buffering too much data in
+main memory when copying large files to slow destinations like
+network sockets.
+.PP
+The \fBfcopy\fP 
+command transfers data from \fIinchan\fR until end of file
+or \fIsize\fP bytes have been 
+transferred. If no \fB\-size\fP argument is given,
+then the copy goes until end of file.
+All the data read from \fIinchan\fR is copied to \fIoutchan\fR.
+Without the \fB\-command\fP option, \fBfcopy\fP blocks until the copy is complete
+and returns the number of bytes written to \fIoutchan\fR.
+.PP
+The \fB\-command\fP argument makes \fBfcopy\fP work in the background.
+In this case it returns immediately and the \fIcallback\fP is invoked
+later when the copy completes.
+The \fIcallback\fP is called with
+one or two additional 
+arguments that indicates how many bytes were written to \fIoutchan\fR.
+If an error occurred during the background copy, the second argument is the
+error string associated with the error.
+With a background copy,
+it is not necessary to put \fIinchan\fR or \fIoutchan\fR into
+non-blocking mode; the \fBfcopy\fP command takes care of that automatically.
+However, it is necessary to enter the event loop by using
+the \fBvwait\fP command or by using Tk.
+.PP
+You are not allowed to do other I/O operations with
+\fIinchan\fR or \fIoutchan\fR during a background fcopy.
+If either \fIinchan\fR or \fIoutchan\fR get closed
+while the copy is in progress, the current copy is stopped
+and the command callback is \fInot\fP made.
+If \fIinchan\fR is closed,
+then all data already queued for \fIoutchan\fR is written out.
+.PP
+Note that \fIinchan\fR can become readable during a background copy.
+You should turn off any \fBfileevent\fP handlers during a background
+copy so those handlers do not interfere with the copy.
+Any I/O attempted by a \fBfileevent\fP handler will get a "channel busy" error.
+.PP
+\fBFcopy\fR translates end-of-line sequences in \fIinchan\fR and \fIoutchan\fR
+according to the \fB\-translation\fR option
+for these channels.
+See the manual entry for \fBfconfigure\fR for details on the
+\fB\-translation\fR option.
+The translations mean that the number of bytes read from \fIinchan\fR
+can be different than the number of bytes written to \fIoutchan\fR.
+Only the number of bytes written to \fIoutchan\fR is reported,
+either as the return value of a synchronous \fBfcopy\fP or
+as the argument to the callback for an asynchronous \fBfcopy\fP.
+
+.SH EXAMPLE
+.PP
+This first example shows how the callback gets
+passed the number of bytes transferred.
+It also uses vwait to put the application into the event loop.
+Of course, this simplified example could be done without the command 
+callback.
+.DS
+proc Cleanup {in out bytes {error {}}} {
+    global total
+    set total $bytes
+    close $in
+    close $out
+    if {[string length $error] != 0} {
+	# error occurred during the copy
+    }
+}
+set in [open $file1]
+set out [socket $server $port]
+fcopy $in $out -command [list Cleanup $in $out]
+vwait total
+
+.DE
+.PP
+The second example copies in chunks and tests for end of file
+in the command callback
+.DS
+proc CopyMore {in out chunk bytes {error {}}} {
+    global total done
+    incr total $bytes
+    if {([string length $error] != 0) || [eof $in] {
+	set done $total
+	close $in
+	close $out
+    } else {
+	fcopy $in $out -command [list CopyMore $in $out $chunk] \\
+	    -size $chunk
+    }
+}
+set in [open $file1]
+set out [socket $server $port]
+set chunk 1024
+set total 0
+fcopy $in $out -command [list CopyMore $in $out $chunk] -size $chunk
+vwait done
+
+.DE
+
+.SH "SEE ALSO"
+eof(n), fblocked(n), fconfigure(n)
+
+.SH KEYWORDS
+blocking, channel, end of line, end of file, nonblocking, read, translation
diff --git a/raw/mann/file.n b/raw/mann/file.n
new file mode 100644
index 0000000..67bf110
--- /dev/null
+++ b/raw/mann/file.n
@@ -0,0 +1,579 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: file.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: file.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH file n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+file \- Manipulate file names and attributes
+.SH SYNOPSIS
+\fBfile \fIoption\fR \fIname\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command provides several operations on a file's name or attributes.
+\fIName\fR is the name of a file; if it starts with a tilde, then tilde
+substitution is done before executing the command (see the manual entry for
+\fBfilename\fR for details).  \fIOption\fR indicates what to do with the
+file name.  Any unique abbreviation for \fIoption\fR is acceptable.  The
+valid options are:
+.TP
+\fBfile atime \fIname\fR ?\fBtime\fR?
+.
+Returns a decimal string giving the time at which file \fIname\fR was last
+accessed.  If \fItime\fR is specified, it is an access time to set
+for the file.  The time is measured in the standard POSIX fashion as
+seconds from a fixed starting time (often January 1, 1970).  If the file
+doesn't exist or its access time cannot be queried or set then an error is
+generated.  On Windows, FAT file systems do not support access time.
+.TP
+\fBfile attributes \fIname\fR
+.br
+\fBfile attributes \fIname\fR ?\fBoption\fR?
+.br
+\fBfile attributes \fIname\fR ?\fBoption value option value...\fR?
+.RS
+This subcommand returns or sets platform specific values associated
+with a file. The first form returns a list of the platform specific
+flags and their values. The second form returns the value for the
+specific option. The third form sets one or more of the values. The
+values are as follows:
+.PP
+On Unix, \fB-group\fR gets or sets the group name for the file. A group id
+can be given to the command, but it returns a group name. \fB-owner\fR gets
+or sets the user name of the owner of the file. The command returns the
+owner name, but the numerical id can be passed when setting the
+owner. \fB-permissions\fR sets or retrieves the octal code that chmod(1)
+uses.  This command does also has limited support for setting using the
+symbolic attributes for chmod(1), of the form [ugo]?[[+\-=][rwxst],[...]],
+where multiple symbolic attributes can be separated by commas (example:
+\fBu+s,go\-rw\fR add sticky bit for user, remove read and write
+permissions for group and other).  A simplified \fBls\fR style string,
+of the form rwxrwxrwx (must be 9 characters), is also supported
+(example: \fBrwxr\-xr\-t\fR is equivalent to 01755).
+.PP
+On Windows, \fB-archive\fR gives the value or sets or clears the
+archive attribute of the file. \fB-hidden\fR gives the value or sets
+or clears the hidden attribute of the file. \fB-longname\fR will
+expand each path element to its long version. This attribute cannot be
+set. \fB-readonly\fR gives the value or sets or clears the readonly
+attribute of the file. \fB-shortname\fR gives a string where every
+path element is replaced with its short (8.3) version of the
+name. This attribute cannot be set. \fB-system\fR gives or sets or
+clears the value of the system attribute of the file.
+.PP
+On Macintosh, \fB-creator\fR gives or sets the Finder creator type of
+the file. \fB-hidden\fR gives or sets or clears the hidden attribute
+of the file. \fB-readonly\fR gives or sets or clears the readonly
+attribute of the file. Note that directories can only be locked if
+File Sharing is turned on. \fB-type\fR gives or sets the Finder file
+type for the file.
+.RE
+.VS
+.TP
+\fBfile channels ?\fIpattern\fR?
+.
+If \fIpattern\fR isn't specified, returns a list of names of all
+registered open channels in this interpreter.  If \fIpattern\fR is
+specified, only those names matching \fIpattern\fR are returned.  Matching
+is determined using the same rules as for \fBstring match\fR.
+.VE
+.TP
+\fBfile copy \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR \fItarget\fR
+.br
+\fBfile copy \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR ?\fIsource\fR ...? \fItargetDir\fR
+.RS
+The first form makes a copy of the file or directory \fIsource\fR under
+the pathname \fItarget\fR.  If \fItarget\fR is an existing directory,
+then the second form is used.  The second form makes a copy inside
+\fItargetDir\fR of each \fIsource\fR file listed.  If a directory is
+specified as a \fIsource\fR, then the contents of the directory will be
+recursively copied into \fItargetDir\fR.  Existing files will not be
+overwritten unless the \fB\-force\fR option is specified.  Trying to
+overwrite a non-empty directory, overwrite a directory with a file, or a
+file with a directory will all result in errors even if \fI\-force\fR was
+specified.  Arguments are processed in the order specified, halting at the
+first error, if any.  A \fB\-\|\-\fR marks the end of switches; the argument
+following the \fB\-\|\-\fR will be treated as a \fIsource\fR even if it
+starts with a \fB\-\fR.
+.RE
+.TP
+\fBfile delete \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIpathname\fR ?\fIpathname\fR ... ?
+.
+Removes the file or directory specified by each \fIpathname\fR argument.
+Non-empty directories will be removed only if the \fB\-force\fR option is
+specified.  Trying to delete a non-existant file is not considered an
+error.  Trying to delete a read-only file will cause the file to be deleted,
+even if the \fB\-force\fR flags is not specified.  Arguments are processed
+in the order specified, halting at the first error, if any.  A \fB\-\|\-\fR
+marks the end of switches; the argument following the \fB\-\|\-\fR will be
+treated as a \fIpathname\fR even if it starts with a \fB\-\fR.
+.TP
+\fBfile dirname \fIname\fR
+Returns a name comprised of all of the path components in \fIname\fR
+excluding the last element.  If \fIname\fR is a relative file name and
+only contains one path element, then returns ``\fB.\fR'' (or ``\fB:\fR''
+on the Macintosh).  If \fIname\fR refers to a root directory, then the
+root directory is returned.  For example,
+.RS
+.CS
+\fBfile dirname c:/\fR
+.CE
+returns \fBc:/\fR. 
+.PP
+Note that tilde substitution will only be
+performed if it is necessary to complete the command. For example,
+.CS
+\fBfile dirname ~/src/foo.c\fR
+.CE
+returns \fB~/src\fR, whereas
+.CS
+\fBfile dirname ~\fR
+.CE
+returns \fB/home\fR (or something similar).
+.RE
+.TP
+\fBfile executable \fIname\fR
+.
+Returns \fB1\fR if file \fIname\fR is executable by the current user,
+\fB0\fR otherwise.  
+.TP
+\fBfile exists \fIname\fR
+.
+Returns \fB1\fR if file \fIname\fR exists and the current user has
+search privileges for the directories leading to it, \fB0\fR otherwise.
+.TP
+\fBfile extension \fIname\fR
+.
+Returns all of the characters in \fIname\fR after and including the last
+dot in the last element of \fIname\fR.  If there is no dot in the last
+element of \fIname\fR then returns the empty string.
+.TP
+\fBfile isdirectory \fIname\fR
+.
+Returns \fB1\fR if file \fIname\fR is a directory, \fB0\fR otherwise.
+.TP
+\fBfile isfile \fIname\fR
+.
+Returns \fB1\fR if file \fIname\fR is a regular file, \fB0\fR otherwise.
+.TP
+\fBfile join \fIname\fR ?\fIname ...\fR?
+.
+Takes one or more file names and combines them, using the correct path
+separator for the current platform.  If a particular \fIname\fR is
+relative, then it will be joined to the previous file name argument.
+Otherwise, any earlier arguments will be discarded, and joining will
+proceed from the current argument.  For example,
+.RS
+.CS
+\fBfile join a b /foo bar\fR
+.CE
+returns \fB/foo/bar\fR.
+.PP
+Note that any of the names can contain separators, and that the result
+is always canonical for the current platform: \fB/\fR for Unix and
+Windows, and \fB:\fR for Macintosh.
+.RE
+.TP
+\fBfile lstat \fIname varName\fR
+.
+Same as \fBstat\fR option (see below) except uses the \fIlstat\fR
+kernel call instead of \fIstat\fR.  This means that if \fIname\fR
+refers to a symbolic link the information returned in \fIvarName\fR
+is for the link rather than the file it refers to.  On systems that
+don't support symbolic links this option behaves exactly the same
+as the \fBstat\fR option.
+.TP
+\fBfile mkdir \fIdir\fR ?\fIdir\fR ...?
+.
+Creates each directory specified.  For each pathname \fIdir\fR specified,
+this command will create all non-existing parent directories as
+well as \fIdir\fR itself.  If an existing directory is specified, then
+no action is taken and no error is returned.  Trying to overwrite an existing
+file with a directory will result in an error.  Arguments are processed in
+the order specified, halting at the first error, if any.
+.TP
+\fBfile mtime \fIname\fR ?\fItime\fR?
+.
+Returns a decimal string giving the time at which file \fIname\fR was last
+modified.  If \fItime\fR is specified, it is a modification time to set for
+the file (equivalent to Unix \fBtouch\fR).  The time is measured in the
+standard POSIX fashion as seconds from a fixed starting time (often January
+1, 1970).  If the file doesn't exist or its modified time cannot be queried
+or set then an error is generated.
+.TP
+\fBfile nativename \fIname\fR
+.
+Returns the platform-specific name of the file. This is useful if the
+filename is needed to pass to a platform-specific call, such as exec
+under Windows or AppleScript on the Macintosh.
+.TP
+\fBfile owned \fIname\fR 
+.
+Returns \fB1\fR if file \fIname\fR is owned by the current user, \fB0\fR
+otherwise.
+.TP
+\fBfile pathtype \fIname\fR
+.
+Returns one of \fBabsolute\fR, \fBrelative\fR, \fBvolumerelative\fR.  If
+\fIname\fR refers to a specific file on a specific volume, the path type
+will be \fBabsolute\fR.  If \fIname\fR refers to a file relative to the
+current working directory, then the path type will be \fBrelative\fR.  If
+\fIname\fR refers to a file relative to the current working directory on
+a specified volume, or to a specific file on the current working volume, then
+the file type is \fBvolumerelative\fR.
+.TP
+\fBfile readable \fIname\fR
+.
+Returns \fB1\fR if file \fIname\fR is readable by the current user,
+\fB0\fR otherwise. 
+.TP
+\fBfile readlink \fIname\fR
+.
+Returns the value of the symbolic link given by \fIname\fR (i.e. the name
+of the file it points to).  If \fIname\fR isn't a symbolic link or its
+value cannot be read, then an error is returned.  On systems that don't
+support symbolic links this option is undefined.
+.TP
+\fBfile rename \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR \fItarget\fR
+.TP
+\fBfile rename \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR ?\fIsource\fR ...? \fItargetDir\fR
+.RS
+The first form takes the file or directory specified by pathname
+\fIsource\fR and renames it to \fItarget\fR, moving the file if the
+pathname \fItarget\fR specifies a name in a different directory.  If
+\fItarget\fR is an existing directory, then the second form is used.  The
+second form moves each \fIsource\fR file or directory into the directory
+\fItargetDir\fR.  Existing files will not be overwritten unless the
+\fB\-force\fR option is specified.  Trying to overwrite a non-empty
+directory, overwrite a directory with a file, or a file with a directory
+will all result in errors.  Arguments are processed in the order specified,
+halting at the first error, if any.  A \fB\-\|\-\fR marks the end of
+switches; the argument following the \fB\-\|\-\fR will be treated as a
+\fIsource\fR even if it starts with a \fB\-\fR.
+.RE
+.TP
+\fBfile rootname \fIname\fR
+.
+Returns all of the characters in \fIname\fR up to but not including the
+last ``.'' character in the last component of name.  If the last
+component of \fIname\fR doesn't contain a dot, then returns \fIname\fR.
+.TP
+\fBfile size \fIname\fR
+.
+Returns a decimal string giving the size of file \fIname\fR in bytes.  If
+the file doesn't exist or its size cannot be queried then an error is
+generated.
+.TP
+\fBfile split \fIname\fR
+.
+Returns a list whose elements are the path components in \fIname\fR.  The
+first element of the list will have the same path type as \fIname\fR.
+All other elements will be relative.  Path separators will be discarded
+unless they are needed ensure that an element is unambiguously relative.
+For example, under Unix
+.RS
+.CS
+\fBfile split /foo/~bar/baz\fR
+.CE
+returns \fB/\0\0foo\0\0./~bar\0\0baz\fR to ensure that later commands
+that use the third component do not attempt to perform tilde
+substitution.
+.RE
+.TP
+\fBfile stat  \fIname varName\fR
+.
+Invokes the \fBstat\fR kernel call on \fIname\fR, and uses the variable
+given by \fIvarName\fR to hold information returned from the kernel call.
+\fIVarName\fR is treated as an array variable, and the following elements
+of that variable are set: \fBatime\fR, \fBctime\fR, \fBdev\fR, \fBgid\fR,
+\fBino\fR, \fBmode\fR, \fBmtime\fR, \fBnlink\fR, \fBsize\fR, \fBtype\fR,
+\fBuid\fR.  Each element except \fBtype\fR is a decimal string with the
+value of the corresponding field from the \fBstat\fR return structure;
+see the manual entry for \fBstat\fR for details on the meanings of the
+values.  The \fBtype\fR element gives the type of the file in the same
+form returned by the command \fBfile type\fR.  This command returns an
+empty string.
+.TP
+\fBfile tail \fIname\fR
+.
+Returns all of the characters in \fIname\fR after the last directory
+separator.  If \fIname\fR contains no separators then returns
+\fIname\fR.
+.TP
+\fBfile type \fIname\fR
+.
+Returns a string giving the type of file \fIname\fR, which will be one of
+\fBfile\fR, \fBdirectory\fR, \fBcharacterSpecial\fR, \fBblockSpecial\fR,
+\fBfifo\fR, \fBlink\fR, or \fBsocket\fR.
+.TP
+\fBfile volume\fR
+. 
+Returns the absolute paths to the volumes mounted on the system, as a
+proper Tcl list.  On the Macintosh, this will be a list of the mounted
+drives, both local and network.  N.B. if two drives have the same name,
+they will both appear on the volume list, but there is currently no way,
+from Tcl, to access any but the first of these drives.  On UNIX, the
+command will always return "/", since all filesystems are locally mounted.
+On Windows, it will return a list of the available local drives
+(e.g. {a:/ c:/}).
+.TP
+\fBfile writable \fIname\fR
+.
+Returns \fB1\fR if file \fIname\fR is writable by the current user,
+\fB0\fR otherwise.
+.SH "PORTABILITY ISSUES"
+.TP
+\fBUnix\fR\0\0\0\0\0\0\0
+.
+These commands always operate using the real user and group identifiers,
+not the effective ones. 
+
+.SH "SEE ALSO"
+filename
+
+.SH KEYWORDS
+attributes, copy files, delete files, directory, file, move files, name, rename files, stat
diff --git a/raw/mann/fileevent.n b/raw/mann/fileevent.n
new file mode 100644
index 0000000..ecdb551
--- /dev/null
+++ b/raw/mann/fileevent.n
@@ -0,0 +1,344 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: fileevent.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fileevent.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fileevent n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fileevent \- Execute a script when a channel becomes readable or writable
+.SH SYNOPSIS
+\fBfileevent \fIchannelId \fBreadable \fR?\fIscript\fR?
+.sp
+\fBfileevent \fIchannelId \fBwritable \fR?\fIscript\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is used to create \fIfile event handlers\fR.  A file event
+handler is a binding between a channel and a script, such that the script
+is evaluated whenever the channel becomes readable or writable.  File event
+handlers are most commonly used to allow data to be received from another
+process on an event-driven basis, so that the receiver can continue to
+interact with the user while waiting for the data to arrive.  If an
+application invokes \fBgets\fR or \fBread\fR on a blocking channel when
+there is no input data available, the process will block; until the input
+data arrives, it will not be able to service other events, so it will
+appear to the user to ``freeze up''.  With \fBfileevent\fR, the process can
+tell when data is present and only invoke \fBgets\fR or \fBread\fR when
+they won't block.
+.PP
+The \fIchannelId\fR argument to \fBfileevent\fR refers to an open channel,
+such as the return value from a previous \fBopen\fR or \fBsocket\fR
+command.
+If the \fIscript\fR argument is specified, then \fBfileevent\fR
+creates a new event handler:  \fIscript\fR will be evaluated
+whenever the channel becomes readable or writable (depending on the
+second argument to \fBfileevent\fR).
+In this case \fBfileevent\fR returns an empty string.
+The \fBreadable\fR and \fBwritable\fR event handlers for a file
+are independent, and may be created and deleted separately.
+However, there may be at most one \fBreadable\fR and one \fBwritable\fR
+handler for a file at a given time in a given interpreter.
+If \fBfileevent\fR is called when the specified handler already
+exists in the invoking interpreter, the new script replaces the old one.
+.PP
+If the \fIscript\fR argument is not specified, \fBfileevent\fR
+returns the current script for \fIchannelId\fR, or an empty string
+if there is none.
+If the \fIscript\fR argument is specified as an empty string
+then the event handler is deleted, so that no script will be invoked.
+A file event handler is also deleted automatically whenever
+its channel is closed or its interpreter is deleted.
+.PP
+A channel is considered to be readable if there is unread data
+available on the underlying device.
+A channel is also considered to be readable if there is unread
+data in an input buffer, except in the special case where the
+most recent attempt to read from the channel was a \fBgets\fR
+call that could not find a complete line in the input buffer.
+This feature allows a file to be read a line at a time in nonblocking mode
+using events.
+A channel is also considered to be readable if an end of file or
+error condition is present on the underlying file or device.
+It is important for \fIscript\fR to check for these conditions
+and handle them appropriately;  for example, if there is no special
+check for end of file, an infinite loop may occur where \fIscript\fR
+reads no data, returns, and is immediately invoked again.
+.PP
+A channel is considered to be writable if at least one byte of data
+can be written to the underlying file or device without blocking,
+or if an error condition is present on the underlying file or device.
+.PP
+Event-driven I/O works best for channels that have been
+placed into nonblocking mode with the \fBfconfigure\fR command.
+In blocking mode, a \fBputs\fR command may block if you give it
+more data than the underlying file or device can accept, and a
+\fBgets\fR or \fBread\fR command will block if you attempt to read
+more data than is ready;  no events will be processed while the
+commands block.
+In nonblocking mode \fBputs\fR, \fBread\fR, and \fBgets\fR never block.
+See the documentation for the individual commands for information
+on how they handle blocking and nonblocking channels.
+.PP
+The script for a file event is executed at global level (outside the
+context of any Tcl procedure) in the interpreter in which the
+\fBfileevent\fR command was invoked.
+If an error occurs while executing the script then the
+\fBbgerror\fR mechanism is used to report the error.
+In addition, the file event handler is deleted if it ever returns
+an error;  this is done in order to prevent infinite loops due to
+buggy handlers.
+
+.SH CREDITS
+.PP
+\fBfileevent\fR is based on the \fBaddinput\fR command created
+by Mark Diekhans.
+
+.SH "SEE ALSO"
+bgerror(n), fconfigure(n), gets(n), puts(n), read(n)
+
+.SH KEYWORDS
+asynchronous I/O, blocking, channel, event handler, nonblocking, readable,
+script, writable.
diff --git a/raw/mann/filename.n b/raw/mann/filename.n
new file mode 100644
index 0000000..e7436cd
--- /dev/null
+++ b/raw/mann/filename.n
@@ -0,0 +1,435 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: filename.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: filename.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH filename n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+filename \- File name conventions supported by Tcl commands
+.BE
+.SH INTRODUCTION
+.PP
+All Tcl commands and C procedures that take file names as arguments
+expect the file names to be in one of three forms, depending on the
+current platform.  On each platform, Tcl supports file names in the
+standard forms(s) for that platform.  In addition, on all platforms,
+Tcl supports a Unix-like syntax intended to provide a convenient way
+of constructing simple file names.  However, scripts that are intended
+to be portable should not assume a particular form for file names.
+Instead, portable scripts must use the \fBfile split\fR and \fBfile
+join\fR commands to manipulate file names (see the \fBfile\fR manual
+entry for more details).
+
+.SH "PATH TYPES"
+.PP
+File names are grouped into three general types based on the starting point
+for the path used to specify the file: absolute, relative, and
+volume-relative.  Absolute names are completely qualified, giving a path to
+the file relative to a particular volume and the root directory on that
+volume.  Relative names are unqualified, giving a path to the file relative 
+to the current working directory.  Volume-relative names are partially
+qualified, either giving the path relative to the root directory on the
+current volume, or relative to the current directory of the specified
+volume.  The \fBfile pathtype\fR command can be used to determine the
+type of a given path.
+
+.SH "PATH SYNTAX"
+.PP
+The rules for native names depend on the value reported in the Tcl
+array element \fBtcl_platform(platform)\fR:
+.TP 10
+\fBmac\fR
+On Apple Macintosh systems, Tcl supports two forms of path names.  The
+normal Mac style names use colons as path separators.  Paths may be
+relative or absolute, and file names may contain any character other
+than colon.  A leading colon causes the rest of the path to be
+interpreted relative to the current directory.  If a path contains a
+colon that is not at the beginning, then the path is interpreted as an
+absolute path.  Sequences of two or more colons anywhere in the path
+are used to construct relative paths where \fB::\fR refers to the
+parent of the current directory, \fB:::\fR refers to the parent of the
+parent, and so forth.
+.RS
+.PP
+In addition to Macintosh style names, Tcl also supports a subset of
+Unix-like names.  If a path contains no colons, then it is interpreted
+like a Unix path.  Slash is used as the path separator.  The file name
+\fB\&.\fR refers to the current directory, and \fB\&..\fR refers to the
+parent of the current directory.  However, some names like \fB/\fR or
+\fB/..\fR have no mapping, and are interpreted as Macintosh names.  In
+general, commands that generate file names will return Macintosh style
+names, but commands that accept file names will take both Macintosh
+and Unix-style names.
+.PP
+The following examples illustrate various forms of path names:
+.TP 15
+\fB:\fR
+Relative path to the current folder.
+.TP 15
+\fBMyFile\fR
+Relative path to a file named \fBMyFile\fR in the current folder.
+.TP 15
+\fBMyDisk:MyFile\fR
+Absolute path to a file named \fBMyFile\fR on the device named \fBMyDisk\fR.
+.TP 15
+\fB:MyDir:MyFile\fR
+Relative path to a file name \fBMyFile\fR in a folder named
+\fBMyDir\fR in the current folder.
+.TP 15
+\fB::MyFile\fR
+Relative path to a file named \fBMyFile\fR in the folder above the
+current folder.
+.TP 15
+\fB:::MyFile\fR
+Relative path to a file named \fBMyFile\fR in the folder two levels above the
+current folder. 
+.TP 15
+\fB/MyDisk/MyFile\fR
+Absolute path to a file named \fBMyFile\fR on the device named
+\fBMyDisk\fR.
+.TP 15
+\fB\&../MyFile\fR
+Relative path to a file named \fBMyFile\fR in the folder above the
+current folder.
+.RE
+.TP
+\fBunix\fR
+On Unix platforms, Tcl uses path names where the components are
+separated by slashes.  Path names may be relative or absolute, and
+file names may contain any character other than slash.  The file names
+\fB\&.\fR and \fB\&..\fR are special and refer to the current directory
+and the parent of the current directory respectively.  Multiple
+adjacent slash characters are interpreted as a single separator.
+The following examples illustrate various forms of path names:
+.RS
+.TP 15
+\fB/\fR
+Absolute path to the root directory.
+.TP 15
+\fB/etc/passwd\fR
+Absolute path to the file named \fBpasswd\fR in the directory
+\fBetc\fR in the root directory.
+.TP 15
+\fB\&.\fR
+Relative path to the current directory.
+.TP 15
+\fBfoo\fR
+Relative path to the file \fBfoo\fR in the current directory.
+.TP 15
+\fBfoo/bar\fR
+Relative path to the file \fBbar\fR in the directory \fBfoo\fR in the
+current directory.
+.TP 15
+\fB\&../foo\fR
+Relative path to the file \fBfoo\fR in the directory above the current
+directory. 
+.RE
+.TP
+\fBwindows\fR
+On Microsoft Windows platforms, Tcl supports both drive-relative and UNC
+style names.  Both \fB/\fR and \fB\e\fR may be used as directory separators
+in either type of name.  Drive-relative names consist of an optional drive
+specifier followed by an absolute or relative path.  UNC paths follow the
+general form \fB\e\eservername\esharename\epath\efile\fR.  In both forms,
+the file names \fB.\fR and \fB..\fR are special and refer to the current
+directory and the parent of the current directory respectively.  The
+following examples illustrate various forms of path names:
+.RS
+.TP 15
+\fB\&\e\eHost\eshare/file\fR
+Absolute UNC path to a file called \fBfile\fR in the root directory of
+the export point \fBshare\fR on the host \fBHost\fR.
+.TP 15
+\fBc:foo\fR
+Volume-relative path to a file \fBfoo\fR in the current directory on drive
+\fBc\fR.
+.TP 15
+\fBc:/foo\fR
+Absolute path to a file \fBfoo\fR in the root directory of drive
+\fBc\fR.
+.TP 15
+\fBfoo\ebar\fR
+Relative path to a file \fBbar\fR in the \fBfoo\fR directory in the current
+directory on the current volume.
+.TP 15
+\fB\&\efoo\fR
+Volume-relative path to a file \fBfoo\fR in the root directory of the current
+volume.
+.RE
+
+.SH "TILDE SUBSTITUTION"
+.PP
+In addition to the file name rules described above, Tcl also supports
+\fIcsh\fR-style tilde substitution.  If a file name starts with a
+tilde, then the file name will be interpreted as if the first element
+is replaced with the location of the home directory for the given
+user.  If the tilde is followed immediately by a separator, then the
+\fB$HOME\fR environment variable is substituted.  Otherwise the
+characters between the tilde and the next separator are taken as a
+user name, which is used to retrieve the user's home directory for
+substitution.
+.PP
+The Macintosh and Windows platforms do not support tilde substitution
+when a user name follows the tilde.  On these platforms, attempts to
+use a tilde followed by a user name will generate an error.  File
+names that have a tilde without a user name will be substituted using
+the \fB$HOME\fR environment variable, just like for Unix.
+
+.SH "PORTABILITY ISSUES"
+.PP
+Not all file systems are case sensitive, so scripts should avoid code
+that depends on the case of characters in a file name.  In addition,
+the character sets allowed on different devices may differ, so scripts
+should choose file names that do not contain special characters like:
+\fB<>:"/\e|\fR.  The safest approach is to use names consisting of
+alphanumeric characters only.  Also Windows 3.1 only supports file
+names with a root of no more than 8 characters and an extension of no
+more than 3 characters.
+
+.SH KEYWORDS
+current directory, absolute file name, relative file name,
+volume-relative file name, portability
+
+.SH "SEE ALSO"
+file(n), glob(n)
diff --git a/raw/mann/flush.n b/raw/mann/flush.n
new file mode 100644
index 0000000..b52e0d3
--- /dev/null
+++ b/raw/mann/flush.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: flush.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: flush.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH flush n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+flush \- Flush buffered output for a channel
+.SH SYNOPSIS
+\fBflush \fIchannelId\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Flushes any output that has been buffered for \fIchannelId\fR.
+\fIChannelId\fR must be a channel identifier such as returned by a previous
+\fBopen\fR or \fBsocket\fR command, and it must have been opened for writing.
+If the channel is in blocking mode the command does not return until all the
+buffered output has been flushed to the channel. If the channel is in
+nonblocking mode, the command may return before all buffered output has been
+flushed; the remainder will be flushed in the background as fast as the
+underlying file or device is able to absorb it.
+
+.SH "SEE ALSO"
+file(n), open(n), socket(n)
+
+.SH KEYWORDS
+blocking, buffer, channel, flush, nonblocking, output
diff --git a/raw/mann/focusNext.n b/raw/mann/focusNext.n
new file mode 100644
index 0000000..cc9b641
--- /dev/null
+++ b/raw/mann/focusNext.n
@@ -0,0 +1,295 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: focusNext.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: focusNext.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_focusNext n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_focusNext, tk_focusPrev, tk_focusFollowsMouse \- Utility procedures for managing the input focus.
+.SH SYNOPSIS
+\fBtk_focusNext \fIwindow\fR
+.sp
+\fBtk_focusPrev \fIwindow\fR
+.sp
+\fBtk_focusFollowsMouse\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBtk_focusNext\fR is a utility procedure used for keyboard traversal.
+It returns the ``next'' window after \fIwindow\fR in focus order.
+The focus order is determined by
+the stacking order of windows and the structure of the window hierarchy.
+Among siblings, the focus order is the same as the stacking order, with the
+lowest window being first.
+If a window has children, the window is visited first, followed by
+its children (recursively), followed by its next sibling.
+Top-level windows other than \fIwindow\fR are skipped, so that
+\fBtk_focusNext\fR never returns a window in a different top-level
+from \fIwindow\fR.
+.PP
+After computing the next window, \fBtk_focusNext\fR examines the
+window's \fB\-takefocus\fR option to see whether it should be skipped.
+If so, \fBtk_focusNext\fR continues on to the next window in the focus
+order, until it eventually finds a window that will accept the focus
+or returns back to \fIwindow\fR.
+.PP
+\fBtk_focusPrev\fR is similar to \fBtk_focusNext\fR except that it
+returns the window just before \fIwindow\fR in the focus order.
+.PP
+\fBtk_focusFollowsMouse\fR changes the focus model for the application
+to an implicit one where the window under the mouse gets the focus.
+After this procedure is called, whenever the mouse enters a window
+Tk will automatically give it the input focus.
+The \fBfocus\fR command may be used to move the focus to a window
+other than the one under the mouse, but as soon as the mouse moves
+into a new window the focus will jump to that window.
+Note: at present there is no built-in support for returning the
+application to an explicit focus model;  to do this you'll have
+to write a script that deletes the bindings created by
+\fBtk_focusFollowsMouse\fR.
+
+.SH KEYWORDS
+focus, keyboard traversal, top-level
diff --git a/raw/mann/for.n b/raw/mann/for.n
new file mode 100644
index 0000000..d7b61ba
--- /dev/null
+++ b/raw/mann/for.n
@@ -0,0 +1,298 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: for.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: for.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH for n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+for \- ``For'' loop
+.SH SYNOPSIS
+\fBfor \fIstart test next body\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBFor\fR is a looping command, similar in structure to the C
+\fBfor\fR statement.  The \fIstart\fR, \fInext\fR, and
+\fIbody\fR arguments must be Tcl command strings, and \fItest\fR
+is an expression string.
+The \fBfor\fR command first invokes the Tcl interpreter to
+execute \fIstart\fR.  Then it repeatedly evaluates \fItest\fR as
+an expression; if the result is non-zero it invokes the Tcl
+interpreter on \fIbody\fR, then invokes the Tcl interpreter on \fInext\fR,
+then repeats the loop.  The command terminates when \fItest\fR evaluates
+to 0.  If a \fBcontinue\fR command is invoked within \fIbody\fR then
+any remaining commands in the current execution of \fIbody\fR are skipped;
+processing continues by invoking the Tcl interpreter on \fInext\fR, then
+evaluating \fItest\fR, and so on.  If a \fBbreak\fR command is invoked
+within \fIbody\fR
+or \fInext\fR,
+then the \fBfor\fR command will
+return immediately.
+The operation of \fBbreak\fR and \fBcontinue\fR are similar to the
+corresponding statements in C.
+\fBFor\fR returns an empty string.
+.PP
+Note: \fItest\fR should almost always be enclosed in braces.  If not,
+variable substitutions will be made before the \fBfor\fR
+command starts executing, which means that variable changes
+made by the loop body will not be considered in the expression.
+This is likely to result in an infinite loop.  If \fItest\fR is
+enclosed in braces, variable substitutions are delayed until the
+expression is evaluated (before
+each loop iteration), so changes in the variables will be visible.
+For an example, try the following script with and without the braces
+around \fB$x<10\fR:
+.CS
+for {set x 0} {$x<10} {incr x} {
+	puts "x is $x"
+}
+.CE
+
+.SH "SEE ALSO"
+break, continue, foreach, while
+
+.SH KEYWORDS
+for, iteration, looping
diff --git a/raw/mann/foreach.n b/raw/mann/foreach.n
new file mode 100644
index 0000000..df6e2e6
--- /dev/null
+++ b/raw/mann/foreach.n
@@ -0,0 +1,325 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: foreach.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: foreach.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH foreach n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+foreach \- Iterate over all elements in one or more lists
+.SH SYNOPSIS
+\fBforeach \fIvarname list body\fR
+.br
+\fBforeach \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBforeach\fR command implements a loop where the loop
+variable(s) take on values from one or more lists.
+In the simplest case there is one loop variable, \fIvarname\fR,
+and one list, \fIlist\fR, that is a list of values to assign to \fIvarname\fR.
+The \fIbody\fR argument is a Tcl script.
+For each element of \fIlist\fR (in order
+from first to last), \fBforeach\fR assigns the contents of the
+element to \fIvarname\fR as if the \fBlindex\fR command had been used
+to extract the element, then calls the Tcl interpreter to execute
+\fIbody\fR.
+.PP
+In the general case there can be more than one value list
+(e.g., \fIlist1\fR and \fIlist2\fR),
+and each value list can be associated with a list of loop variables
+(e.g., \fIvarlist1\fR and \fIvarlist2\fR).
+During each iteration of the loop
+the variables of each \fIvarlist\fP are assigned
+consecutive values from the corresponding \fIlist\fP.
+Values in each \fIlist\fP are used in order from first to last,
+and each value is used exactly once.
+The total number of loop iterations is large enough to use
+up all the values from all the value lists.
+If a value list does not contain enough
+elements for each of its loop variables in each iteration,
+empty values are used for the missing elements.
+.PP
+The \fBbreak\fR and \fBcontinue\fR statements may be
+invoked inside \fIbody\fR, with the same effect as in the \fBfor\fR
+command.  \fBForeach\fR returns an empty string.
+.SH EXAMPLES
+.PP
+The following loop uses i and j as loop variables to iterate over
+pairs of elements of a single list.
+.DS
+set x {}
+foreach {i j} {a b c d e f} {
+    lappend x $j $i
+}
+# The value of x is "b a d c f e"
+# There are 3 iterations of the loop.
+.DE
+.PP
+The next loop uses i and j to iterate over two lists in parallel.
+.DS
+set x {}
+foreach i {a b c} j {d e f g} {
+    lappend x $i $j
+}
+# The value of x is "a d b e c f {} g"
+# There are 4 iterations of the loop.
+.DE
+.PP
+The two forms are combined in the following example.
+.DS
+set x {}
+foreach i {a b c} {j k} {d e f g} {
+    lappend x $i $j $k
+}
+# The value of x is "a d e b f g c {} {}"
+# There are 3 iterations of the loop.
+.DE
+
+.SH "SEE ALSO"
+for(n), while(n), break(n), continue(n)
+
+.SH KEYWORDS
+foreach, iteration, list, looping
diff --git a/raw/mann/format.n b/raw/mann/format.n
new file mode 100644
index 0000000..4f90dba
--- /dev/null
+++ b/raw/mann/format.n
@@ -0,0 +1,452 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: format.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: format.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH format n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+format \- Format a string in the style of sprintf
+.SH SYNOPSIS
+\fBformat \fIformatString \fR?\fIarg arg ...\fR?
+.BE
+
+.SH INTRODUCTION
+.PP
+This command generates a formatted string in the same way as the
+ANSI C \fBsprintf\fR procedure (it uses \fBsprintf\fR in its
+implementation).
+\fIFormatString\fR indicates how to format the result, using
+\fB%\fR conversion specifiers as in \fBsprintf\fR, and the additional
+arguments, if any, provide values to be substituted into the result.
+The return value from \fBformat\fR is the formatted string.
+
+.SH "DETAILS ON FORMATTING"
+.PP
+The command operates by scanning \fIformatString\fR from left to right. 
+Each character from the format string is appended to the result
+string unless it is a percent sign.
+If the character is a \fB%\fR then it is not copied to the result string.
+Instead, the characters following the \fB%\fR character are treated as
+a conversion specifier.
+The conversion specifier controls the conversion of the next successive
+\fIarg\fR to a particular format and the result is appended to 
+the result string in place of the conversion specifier.
+If there are multiple conversion specifiers in the format string,
+then each one controls the conversion of one additional \fIarg\fR.
+The \fBformat\fR command must be given enough \fIarg\fRs to meet the needs
+of all of the conversion specifiers in \fIformatString\fR.
+.PP
+Each conversion specifier may contain up to six different parts:
+an XPG3 position specifier,
+a set of flags, a minimum field width, a precision, a length modifier,
+and a conversion character.
+Any of these fields may be omitted except for the conversion character.
+The fields that are present must appear in the order given above.
+The paragraphs below discuss each of these fields in turn.
+.PP
+If the \fB%\fR is followed by a decimal number and a \fB$\fR, as in
+``\fB%2$d\fR'', then the value to convert is not taken from the
+next sequential argument.
+Instead, it is taken from the argument indicated by the number,
+where 1 corresponds to the first \fIarg\fR.
+If the conversion specifier requires multiple arguments because
+of \fB*\fR characters in the specifier then
+successive arguments are used, starting with the argument
+given by the number.
+This follows the XPG3 conventions for positional specifiers.
+If there are any positional specifiers in \fIformatString\fR
+then all of the specifiers must be positional.
+.PP
+The second portion of a conversion specifier may contain any of the
+following flag characters, in any order:
+.TP 10
+\fB\-\fR
+Specifies that the converted argument should be left-justified 
+in its field (numbers are normally right-justified with leading 
+spaces if needed).
+.TP 10
+\fB+\fR
+Specifies that a number should always be printed with a sign, 
+even if positive.
+.TP 10
+\fIspace\fR
+Specifies that a space should be added to the beginning of the 
+number if the first character isn't a sign.
+.TP 10
+\fB0\fR
+Specifies that the number should be padded on the left with 
+zeroes instead of spaces.
+.TP 10
+\fB#\fR
+Requests an alternate output form. For \fBo\fR and \fBO\fR
+conversions it guarantees that the first digit is always \fB0\fR.
+For \fBx\fR or \fBX\fR conversions, \fB0x\fR or \fB0X\fR (respectively)
+will be added to the beginning of the result unless it is zero.
+For all floating-point conversions (\fBe\fR, \fBE\fR, \fBf\fR,
+\fBg\fR, and \fBG\fR) it guarantees that the result always 
+has a decimal point.
+For \fBg\fR and \fBG\fR conversions it specifies that 
+trailing zeroes should not be removed.
+.PP
+The third portion of a conversion specifier is a number giving a
+minimum field width for this conversion.
+It is typically used to make columns line up in tabular printouts.
+If the converted argument contains fewer characters than the
+minimum field width then it will be padded so that it is as wide
+as the minimum field width.
+Padding normally occurs by adding extra spaces on the left of the
+converted argument, but the \fB0\fR and \fB\-\fR flags 
+may be used to specify padding with zeroes on the left or with
+spaces on the right, respectively.
+If the minimum field width is specified as \fB*\fR rather than
+a number, then the next argument to the \fBformat\fR command
+determines the minimum field width; it must be a numeric string.
+.PP
+The fourth portion of a conversion specifier is a precision,
+which consists of a period followed by a number.
+The number is used in different ways for different conversions.
+For \fBe\fR, \fBE\fR, and \fBf\fR conversions it specifies the number
+of digits to appear to the right of the decimal point.
+For \fBg\fR and \fBG\fR conversions it specifies the total number
+of digits to appear, including those on both sides of the decimal
+point (however, trailing zeroes after the decimal point will still
+be omitted unless the \fB#\fR flag has been specified).
+For integer conversions, it specifies a minimum number of digits
+to print (leading zeroes will be added if necessary).
+For \fBs\fR conversions it specifies the maximum number of characters to be 
+printed; if the string is longer than this then the trailing characters will be dropped.
+If the precision is specified with \fB*\fR rather than a number
+then the next argument to the \fBformat\fR command determines the precision;
+it must be a numeric string.
+.PP
+The fifth part of a conversion specifier is a length modifier,
+which must be \fBh\fR or \fBl\fR.
+If it is \fBh\fR it specifies that the numeric value should be
+truncated to a 16-bit value before converting.
+This option is rarely useful.
+The \fBl\fR modifier is ignored.
+.PP
+The last thing in a conversion specifier is an alphabetic character
+that determines what kind of conversion to perform.
+The following conversion characters are currently supported:
+.TP 10
+\fBd\fR
+Convert integer to signed decimal string.
+.TP 10
+\fBu\fR
+Convert integer to unsigned decimal string.
+.TP 10
+\fBi\fR
+Convert integer to signed decimal string;  the integer may either be
+in decimal, in octal (with a leading \fB0\fR) or in hexadecimal
+(with a leading \fB0x\fR).
+.TP 10
+\fBo\fR
+Convert integer to unsigned octal string.
+.TP 10
+\fBx\fR or \fBX\fR
+Convert integer to unsigned hexadecimal string, using digits
+``0123456789abcdef'' for \fBx\fR and ``0123456789ABCDEF'' for \fBX\fR).
+.VS
+.TP 10
+\fBc\fR
+Convert integer to the Unicode character it represents.
+.VE
+.TP 10
+\fBs\fR
+No conversion; just insert string.
+.TP 10
+\fBf\fR
+Convert floating-point number to signed decimal string of 
+the form \fIxx.yyy\fR, where the number of \fIy\fR's is determined by 
+the precision (default: 6).
+If the precision is 0 then no decimal point is output.
+.TP 10
+\fBe\fR or \fBe\fR
+Convert floating-point number to scientific notation in the 
+form \fIx.yyy\fBe\(+-\fIzz\fR, where the number of \fIy\fR's is determined 
+by the precision (default: 6).
+If the precision is 0 then no decimal point is output.
+If the \fBE\fR form is used then \fBE\fR is 
+printed instead of \fBe\fR.
+.TP 10
+\fBg\fR or \fBG\fR
+If the exponent is less than \-4 or greater than or equal to the 
+precision, then convert floating-point number as for \fB%e\fR or 
+\fB%E\fR.
+Otherwise convert as for \fB%f\fR.
+Trailing zeroes and a trailing decimal point are omitted.
+.TP 10
+\fB%\fR
+No conversion: just insert \fB%\fR.
+.LP
+For the numerical conversions the argument being converted must
+be an integer or floating-point string; format converts the argument
+to binary and then converts it back to a string according to 
+the conversion specifier.
+
+.SH "DIFFERENCES FROM ANSI SPRINTF"
+.PP
+The behavior of the format command is the same as the
+ANSI C \fBsprintf\fR procedure except for the following
+differences:
+.IP [1]
+\fB%p\fR and \fB%n\fR specifiers are not currently supported.
+.IP [2]
+For \fB%c\fR conversions the argument must be a decimal string,
+which will then be converted to the corresponding character value.
+.IP [3]
+The \fBl\fR modifier is ignored;  integer values are always converted
+as if there were no modifier present and real values are always
+converted as if the \fBl\fR modifier were present (i.e. type
+\fBdouble\fR is used for the internal representation).
+If the \fBh\fR modifier is specified then integer values are truncated
+to \fBshort\fR before conversion.
+
+.SH "SEE ALSO"
+sprintf(3), string(n)
+
+.SH KEYWORDS
+conversion specifier, format, sprintf, string, substitution
diff --git a/raw/mann/gets.n b/raw/mann/gets.n
new file mode 100644
index 0000000..f5cb809
--- /dev/null
+++ b/raw/mann/gets.n
@@ -0,0 +1,285 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: gets.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: gets.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH gets n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+gets \- Read a line from a channel
+.SH SYNOPSIS
+\fBgets \fIchannelId\fR ?\fIvarName\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command reads the next line from \fIchannelId\fR, returns everything
+in the line up to (but not including) the end-of-line character(s), and
+discards the end-of-line character(s).
+If \fIvarName\fR is omitted the line is returned as the result of the
+command.
+If \fIvarName\fR is specified then the line is placed in the variable by
+that name and the return value is a count of the number of characters
+returned.
+.PP
+If end of file occurs while scanning for an end of
+line, the command returns whatever input is available up to the end of file.
+If \fIchannelId\fR is in nonblocking mode and there is not a full
+line of input available, the command returns an empty string and
+does not consume any input.
+If \fIvarName\fR is specified and an empty string is returned in
+\fIvarName\fR because of end-of-file or because of insufficient
+data in nonblocking mode, then the return count is -1.
+Note that if \fIvarName\fR is not specified then the end-of-file
+and no-full-line-available cases can
+produce the same results as if there were an input line consisting
+only of the end-of-line character(s).
+The \fBeof\fR and \fBfblocked\fR commands can be used to distinguish
+these three cases.
+
+.SH "SEE ALSO"
+file(n), eof(n), fblocked(n)
+
+.SH KEYWORDS
+blocking, channel, end of file, end of line, line, nonblocking, read
diff --git a/raw/mann/glob.n b/raw/mann/glob.n
new file mode 100644
index 0000000..6538972
--- /dev/null
+++ b/raw/mann/glob.n
@@ -0,0 +1,396 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: glob.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: glob.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH glob n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+glob \- Return names of files that match patterns
+.SH SYNOPSIS
+\fBglob \fR?\fIswitches\fR? \fIpattern \fR?\fIpattern ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command performs file name ``globbing'' in a fashion similar to
+the csh shell.  It returns a list of the files whose names match any
+of the \fIpattern\fR arguments.
+.LP
+If the initial arguments to \fBglob\fR start with \fB\-\fR then
+they are treated as switches.  The following switches are
+currently supported:
+.VS 8.3
+.TP
+\fB\-directory\fR \fIdirectory\fR
+Search for files which match the given patterns starting in the given
+\fIdirectory\fR.  This allows searching of directories whose name
+contains glob-sensitive characters without the need to quote such
+characters explicitly.  This option may not be used in conjunction with
+\fB\-path\fR.
+.TP
+\fB\-join\fR
+The remaining pattern arguments are treated as a single pattern
+obtained by joining the arguments with directory separators.
+.VE 8.3
+.TP
+\fB\-nocomplain\fR
+Allows an empty list to be returned without error;  without this
+switch an error is returned if the result list would be empty.
+.VS 8.3
+.TP
+\fB\-path\fR \fIpathPrefix\fR
+Search for files with the given \fIpathPrefix\fR where the rest of the name
+matches the given patterns.  This allows searching for files with names
+similar to a given file even when the names contain glob-sensitive
+characters.  This option may not be used in conjunction with
+\fB\-directory\fR.
+.TP
+\fB\-types\fR \fItypeList\fR
+Only list files or directories which match \fItypeList\fR, where the items
+in the list have two forms.  The first form is like the \-type option of
+the Unix find command:
+\fIb\fR (block special file),
+\fIc\fR (character special file),
+\fId\fR (directory),
+\fIf\fR (plain file),
+\fIl\fR (symbolic link),
+\fIp\fR (named pipe),
+or \fIs\fR (socket), where multiple types may be specified in the list.
+\fBGlob\fR will return all files which match at least one of the types given.
+.RS
+.PP
+The second form specifies types where all the types given must match.
+These are \fIr\fR, \fIw\fR, \fIx\fR as file permissions, and
+\fIreadonly\fR, \fIhidden\fR as special permission cases.  On the
+Macintosh, MacOS types and creators are also supported, where any item
+which is four characters long is assumed to be a MacOS type
+(e.g. \fBTEXT\fR).  Items which are of the form \fI{macintosh type XXXX}\fR
+or \fI{macintosh creator XXXX}\fR will match types or creators
+respectively.  Unrecognised types, or specifications of multiple MacOS
+types/creators will signal an error.
+.PP
+The two forms may be mixed, so \fB\-types {d f r w}\fR will find all
+regular files OR directories that have both read AND write permissions.
+The following are equivalent:
+.RS
+.CS
+\fBglob \-type d *\fR
+\fBglob */\fR
+.CE
+.RE
+except that the first case doesn't return the trailing ``/'' and
+is more platform independent.
+.RE
+.VE 8.3
+.TP
+\fB\-\|\-\fR
+Marks the end of switches.  The argument following this one will
+be treated as a \fIpattern\fR even if it starts with a \fB\-\fR.
+.PP
+The \fIpattern\fR arguments may contain any of the following
+special characters:
+.TP 10
+\fB?\fR
+Matches any single character.
+.TP 10
+\fB*\fR
+Matches any sequence of zero or more characters.
+.TP 10
+\fB[\fIchars\fB]\fR
+Matches any single character in \fIchars\fR.  If \fIchars\fR
+contains a sequence of the form \fIa\fB\-\fIb\fR then any
+character between \fIa\fR and \fIb\fR (inclusive) will match.
+.TP 10
+\fB\e\fIx\fR
+Matches the character \fIx\fR.
+.TP 10
+\fB{\fIa\fB,\fIb\fB,\fI...\fR}
+Matches any of the strings \fIa\fR, \fIb\fR, etc.
+.LP
+As with csh, a  ``.'' at the beginning of a file's name or just
+after a ``/'' must be matched explicitly or with a {} construct.
+In addition, all ``/'' characters must be matched explicitly.
+.LP
+If the first character in a \fIpattern\fR is ``~'' then it refers
+to the home directory for the user whose name follows the ``~''.
+If the ``~'' is followed immediately by ``/'' then the value of
+the HOME environment variable is used.
+.LP
+The \fBglob\fR command differs from csh globbing in two ways.
+First, it does not sort its result list (use the \fBlsort\fR
+command if you want the list sorted).
+Second, \fBglob\fR only returns the names of files that actually
+exist;  in csh no check for existence is made unless a pattern
+contains a ?, *, or [] construct.
+
+.SH "PORTABILITY ISSUES"
+.PP
+Unlike other Tcl commands that will accept both network and native
+style names (see the \fBfilename\fR manual entry for details on how
+native and network names are specified), the \fBglob\fR command only
+accepts native names.  
+.TP
+\fBWindows\fR
+.
+For Windows UNC names, the servername and sharename components of the path
+may not contain ?, *, or [] constructs.  On Windows NT, if \fIpattern\fR is
+of the form ``\fB~\fIusername\fB@\fIdomain\fR'' it refers to the home
+directory of the user whose account information resides on the specified NT
+domain server.  Otherwise, user account information is obtained from
+the local computer.  On Windows 95 and 98, \fBglob\fR accepts patterns
+like ``.../'' and ``..../'' for successively higher up parent directories.
+.TP 
+\fBMacintosh\fR 
+. 
+When using the options, \fB\-dir\fR, \fB\-join\fR or \fB\-path\fR, glob
+assumes the directory separator for the entire pattern is the standard
+``:''.  When not using these options, glob examines each pattern argument
+and uses ``/'' unless the pattern contains a ``:''.
+
+.SH "SEE ALSO"
+file(n)
+
+.SH KEYWORDS
+exist, file, glob, pattern
diff --git a/raw/mann/global.n b/raw/mann/global.n
new file mode 100644
index 0000000..0fc3937
--- /dev/null
+++ b/raw/mann/global.n
@@ -0,0 +1,274 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: global.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: global.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH global n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+global \- Access global variables
+.SH SYNOPSIS
+\fBglobal \fIvarname \fR?\fIvarname ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is ignored unless a Tcl procedure is being interpreted.
+If so then it declares the given \fIvarname\fR's to be global variables
+rather than local ones.
+Global variables are variables in the global namespace.
+For the duration of the current procedure
+(and only while executing in the current procedure),
+any reference to any of the \fIvarname\fRs
+will refer to the global variable by the same name.
+.PP
+Please note that this is done by creating local variables that are
+linked to the global variables, and therefore that these variables
+will be listed by \fBinfo locals\fR like all other local variables.
+
+.SH "SEE ALSO"
+namespace(n), upvar(n), variable(n)
+
+.SH KEYWORDS
+global, namespace, procedure, variable
diff --git a/raw/mann/history.n b/raw/mann/history.n
new file mode 100644
index 0000000..4c44141
--- /dev/null
+++ b/raw/mann/history.n
@@ -0,0 +1,339 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: history.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: history.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH history n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+history \- Manipulate the history list
+.SH SYNOPSIS
+\fBhistory \fR?\fIoption\fR? ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBhistory\fR command performs one of several operations related to
+recently-executed commands recorded in a history list.  Each of
+these recorded commands is referred to as an ``event''.  When
+specifying an event to the \fBhistory\fR command, the following
+forms may be used:
+.IP [1]
+A number:  if positive, it refers to the event with
+that number (all events are numbered starting at 1).  If the number
+is negative, it selects an event relative to the current event
+(\fB\-1\fR refers to the previous event, \fB\-2\fR to the one before that, and
+so on).  Event \fB0\fP refers to the current event.
+.IP [2]
+A string:  selects the most recent event that matches the string.
+An event is considered to match the string either if the string is
+the same as the first characters of the event, or if the string
+matches the event in the sense of the \fBstring match\fR command.
+.PP
+The \fBhistory\fR command can take any of the following forms:
+.TP
+\fBhistory\fR
+Same
+as \fBhistory info\fR, described below.
+.TP
+\fBhistory add\fI command \fR?\fBexec\fR?
+Adds the \fIcommand\fR argument to the history list as a new event.  If
+\fBexec\fR is specified (or abbreviated) then the command is also
+executed and its result is returned.  If \fBexec\fR isn't specified
+then an empty string is returned as result.
+.TP
+\fBhistory change\fI newValue\fR ?\fIevent\fR?
+Replaces the value recorded for an event with \fInewValue\fR.  \fIEvent\fR
+specifies the event to replace, and
+defaults to the \fIcurrent\fR event (not event \fB\-1\fR).  This command
+is intended for use in commands that implement new forms of history
+substitution and wish to replace the current event (which invokes the
+substitution) with the command created through substitution.  The return
+value is an empty string.
+.TP
+\fBhistory clear\fR
+Erase the history list.  The current keep limit is retained.
+The history event numbers are reset.
+.TP
+\fBhistory event\fR ?\fIevent\fR?
+Returns the value of the event given by \fIevent\fR.  \fIEvent\fR
+defaults to \fB\-1\fR.
+.TP
+\fBhistory info \fR?\fIcount\fR?
+Returns a formatted string (intended for humans to read) giving
+the event number and contents for each of the events in the history
+list except the current event.  If \fIcount\fR is specified
+then only the most recent \fIcount\fR events are returned.
+.TP
+\fBhistory keep \fR?\fIcount\fR?
+This command may be used to change the size of the history list to
+\fIcount\fR events.  Initially, 20 events are retained in the history
+list.  If \fIcount\fR is not specified, the current keep limit is returned.
+.TP
+\fBhistory nextid\fR
+Returns the number of the next event to be recorded
+in the history list.  It is useful for things like printing the
+event number in command-line prompts.
+.TP
+\fBhistory redo \fR?\fIevent\fR?
+Re-executes the command indicated by \fIevent\fR and return its result.
+\fIEvent\fR defaults to \fB\-1\fR.  This command results in history
+revision:  see below for details.
+.SH "HISTORY REVISION"
+.PP
+Pre-8.0 Tcl had a complex history revision mechanism.
+The current mechanism is more limited, and the old
+history operations \fBsubstitute\fP and \fBwords\fP have been removed.
+(As a consolation, the \fBclear\fP operation was added.)
+.PP
+The history option \fBredo\fR results in much simpler ``history revision''.
+When this option is invoked then the most recent event
+is modified to eliminate the history command and replace it with
+the result of the history command.
+If you want to redo an event without modifying history, then use
+the \fBevent\fP operation to retrieve some event,
+and the \fBadd\fP operation to add it to history and execute it.
+
+.SH KEYWORDS
+event, history, record
diff --git a/raw/mann/html.n b/raw/mann/html.n
new file mode 100644
index 0000000..fa78233
--- /dev/null
+++ b/raw/mann/html.n
@@ -0,0 +1,425 @@
+'\" -*- tcl -*- doctools manpage
+'\"
+'\" Generated from ./modules/html/html.man by mpexpand with fmt.nroff
+'\"
+.so man.macros
+.TH "html" n 1.2.1 html "HTML Generation"
+.BS
+.SH NAME
+html \- Procedures to generate HTML structures
+.SH "SYNOPSIS"
+package require \fBTcl 8.2\fR
+.sp
+package require \fBhtml ?1.2.1?\fR
+.sp
+\fB::html::author\fR \fIauthor\fR\fR
+.sp
+\fB::html::bodyTag\fR \fIargs\fR\fR
+.sp
+\fB::html::cell\fR \fIparam value\fR ?\fItag\fR?\fR
+.sp
+\fB::html::checkbox\fR \fIname value\fR\fR
+.sp
+\fB::html::checkSet\fR \fIkey sep list\fR\fR
+.sp
+\fB::html::checkValue\fR \fIname\fR ?\fIvalue\fR?\fR
+.sp
+\fB::html::closeTag\fR \fR
+.sp
+\fB::html::default\fR \fIkey\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::description\fR \fIdescription\fR\fR
+.sp
+\fB::html::end\fR \fR
+.sp
+\fB::html::eval\fR \fIarg\fR ?\fIargs\fR?\fR
+.sp
+\fB::html::extractParam\fR \fIparam key\fR ?\fIvarName\fR?\fR
+.sp
+\fB::html::font\fR \fIargs\fR\fR
+.sp
+\fB::html::for\fR \fIstart test next body\fR\fR
+.sp
+\fB::html::foreach\fR \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR\fR
+.sp
+\fB::html::formValue\fR \fIname\fR ?\fIdefvalue\fR?\fR
+.sp
+\fB::html::getFormInfo\fR \fIargs\fR\fR
+.sp
+\fB::html::getTitle\fR \fR
+.sp
+\fB::html::h\fR \fIlevel string\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h1\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h2\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h3\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h4\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h5\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h6\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::hdrRow\fR \fIargs\fR\fR
+.sp
+\fB::html::head\fR \fItitle\fR\fR
+.sp
+\fB::html::headTag\fR \fIstring\fR\fR
+.sp
+\fB::html::if\fR \fIexpr1 body1\fR ?\fBelseif\fR \fIexpr2 body2 ...\fR? ?\fBelse\fR \fIbodyN\fR?\fR
+.sp
+\fB::html::keywords\fR \fIargs\fR\fR
+.sp
+\fB::html::mailto\fR \fIemail\fR ?\fIsubject\fR?\fR
+.sp
+\fB::html::meta\fR \fIargs\fR\fR
+.sp
+\fB::html::minorMenu\fR \fIlist\fR ?\fIsep\fR?\fR
+.sp
+\fB::html::minorList\fR \fIlist\fR ?\fIordered\fR?\fR
+.sp
+\fB::html::openTag\fR \fItag args\fR\fR
+.sp
+\fB::html::passwordInput\fR ?\fIname\fR?\fR
+.sp
+\fB::html::passwordInputRow\fR \fIlabel\fR ?\fIname\fR?\fR
+.sp
+\fB::html::quoteFormValue\fR \fIvalue\fR\fR
+.sp
+\fB::html::radioSet\fR \fIkey sep list\fR\fR
+.sp
+\fB::html::radioValue\fR \fIname value\fR\fR
+.sp
+\fB::html::refresh\fR \fIseconds url\fR\fR
+.sp
+\fB::html::init\fR ?\fIlist\fR?\fR
+.sp
+\fB::html::row\fR \fIargs\fR\fR
+.sp
+\fB::html::paramRow\fR \fIlist\fR ?\fIrparam\fR? ?\fIcparam\fR?\fR
+.sp
+\fB::html::select\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+.sp
+\fB::html::selectPlain\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+.sp
+\fB::html::submit\fR \fIlabel\fR ?\fIname\fR?\fR
+.sp
+\fB::html::set\fR \fIvar val\fR\fR
+.sp
+\fB::html::tableFromArray\fR \fIarrname\fR ?\fIparam\fR? ?\fIpat\fR?\fR
+.sp
+\fB::html::tableFromList\fR \fIquerylist\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::textarea\fR \fIname\fR ?\fIparam\fR? ?\fIcurrent\fR?\fR
+.sp
+\fB::html::textInput\fR \fIname args\fR\fR
+.sp
+\fB::html::textInputRow\fR \fIlabel name args\fR\fR
+.sp
+\fB::html::title\fR \fItitle\fR\fR
+.sp
+\fB::html::varEmpty\fR \fIname\fR\fR
+.sp
+\fB::html::while\fR \fItest body\fR\fR
+.sp
+.BE
+.SH "DESCRIPTION"
+.PP
+The package \fBhtml\fR provides commands that generate HTML.
+These commands typically return an HTML string as their result. In
+particular, they do not output their result to \fBstdout\fR.
+.PP
+The command \fB::html::init\fR should be called early to initialize
+the module.  You can also use this procedure to define default values
+for HTML tag parameters.
+.TP
+\fB::html::author\fR \fIauthor\fR\fR
+\fBSide effect only\fR.  Call this before \fB::html::head\fR to
+define an author for the page.  The author is noted in a comment in
+the HEAD section.
+.TP
+\fB::html::bodyTag\fR \fIargs\fR\fR
+Generate a BODY tag.  The tag parameters are taken from \fIargs\fR or
+from the body.* attributes define with \fB::html::init\fR.
+.TP
+\fB::html::cell\fR \fIparam value\fR ?\fItag\fR?\fR
+Generate a TD (or TH) tag, a value, and a closing TD (or TH) tag. The
+tag parameters come from \fIparam\fR or TD.* attributes defined with
+\fB::html::init\fR.  This uses \fB::html::font\fR to insert a standard
+FONT tag into the table cell. The \fItag\fR argument defaults to "td".
+.TP
+\fB::html::checkbox\fR \fIname value\fR\fR
+Generate a CHECKBOX form element with the specified name and value.
+This uses \fB::html::checkValue\fR.
+.TP
+\fB::html::checkSet\fR \fIkey sep list\fR\fR
+Generate a set of CHECKBOX form elements and associated labels.  The
+\fIlist\fR should contain an alternating list of labels and values.
+This uses \fB::html::checkbox\fR.
+.TP
+\fB::html::checkValue\fR \fIname\fR ?\fIvalue\fR?\fR
+Generate the "name=\fIname\fR value=\fIvalue\fR for a CHECKBOX form
+element.  If the CGI variable \fIname\fR has the value \fIvalue\fR,
+then SELECTED is added to the return value. \fIvalue\fR defaults to
+"1".
+.TP
+\fB::html::closeTag\fR \fR
+Pop a tag off the stack created by \fB::html::openTag\fR and generate
+the corresponding close tag (e.g., /BODY).
+.TP
+\fB::html::default\fR \fIkey\fR ?\fIparam\fR?\fR
+This procedure is used by \fB::html::tagParam\fR to generate the name,
+value list of parameters for a tag.  The \fB::html::default\fR
+procedure is used to generate default values for those items not
+already in \fIparam\fR.  If the value identified by \fIkey\fR matches
+a value in \fIparam\fR then this procedure returns the empty string.
+Otherwise, it returns a "parameter=value" string for a form element
+identified by \fIkey\fR.  The \fIkey\fR has the form "tag.parameter"
+(e.g., body.bgcolor).  Use \fB::html::init\fR to register default
+values. \fIparam\fR defaults to the empty string.
+.TP
+\fB::html::description\fR \fIdescription\fR\fR
+\fBSide effect only\fR.  Call this before \fB::html::head\fR to
+define a description META tag for the page.  This tag is generated
+later in the call to \fB::html::head\fR.
+.TP
+\fB::html::end\fR \fR
+Pop all open tags from the stack and generate the corresponding close
+HTML tags, (e.g., </body></html>).
+.TP
+\fB::html::eval\fR \fIarg\fR ?\fIargs\fR?\fR
+This procedure is similar to the built-in Tcl \fBeval\fR command.  The
+only difference is that it returns "" so it can be called from an HTML
+template file without appending unwanted results.
+.TP
+\fB::html::extractParam\fR \fIparam key\fR ?\fIvarName\fR?\fR
+This is a parsing procedure that extracts the value of \fIkey\fR from
+\fIparam\fR, which is a HTML-style "name=quotedvalue" list.
+\fIvarName\fR is used as the name of a Tcl variable that is changed to
+have the value found in the parameters.  The function returns 1 if the
+parameter was found in \fIparam\fR, otherwise it returns 0.  If the
+\fIvarName\fR is not specified, then \fIkey\fR is used as the variable
+name.
+.TP
+\fB::html::font\fR \fIargs\fR\fR
+Generate a standard FONT tag.  The parameters to the tag are taken
+from \fIargs\fR and the HTML defaults defined with \fB::html::init\fR.
+.TP
+\fB::html::for\fR \fIstart test next body\fR\fR
+This procedure is similar to the built-in Tcl \fBfor\fR control
+structure.  Rather than evaluating the body, it returns the subst'ed
+\fIbody\fR. Each iteration of the loop causes another string to be
+concatenated to the result value.
+.TP
+\fB::html::foreach\fR \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR\fR
+This procedure is similar to the built-in Tcl \fBforeach\fR control
+structure.  Rather than evaluating the body, it returns the subst'ed
+\fIbody\fR.  Each iteration of the loop causes another string to be
+concatenated to the result value.
+.TP
+\fB::html::formValue\fR \fIname\fR ?\fIdefvalue\fR?\fR
+Return a name and value pair, where the value is initialized from
+existing CGI data, if any.  The result has this form:
+.sp
+.nf
+  name="fred" value="freds value"
+.fi
+.TP
+\fB::html::getFormInfo\fR \fIargs\fR\fR
+Generate hidden fields to capture form values.  If \fIargs\fR is
+empty, then hidden fields are generated for all CGI values.  Otherwise
+args is a list of string match patterns for form element names.
+.TP
+\fB::html::getTitle\fR \fR
+Return the title string, with out the surrounding TITLE tag, set with
+a previous call to \fB::html::title\fR.
+.TP
+\fB::html::h\fR \fIlevel string\fR ?\fIparam\fR?\fR
+Generate a heading (e.g., H1) tag.  The \fIstring\fR is nested in the
+heading, and \fIparam\fR is used for the tag parameters.
+.TP
+\fB::html::h1\fR \fIstring\fR ?\fIparam\fR?\fR
+Generate an H1 tag.  See \fB::html::h\fR.
+.TP
+\fB::html::h2\fR \fIstring\fR ?\fIparam\fR?\fR
+Generate an H2 tag.  See \fB::html::h\fR.
+.TP
+\fB::html::h3\fR \fIstring\fR ?\fIparam\fR?\fR
+Generate an H3 tag.  See \fB::html::h\fR.
+.TP
+\fB::html::h4\fR \fIstring\fR ?\fIparam\fR?\fR
+Generate an H4 tag.  See \fB::html::h\fR.
+.TP
+\fB::html::h5\fR \fIstring\fR ?\fIparam\fR?\fR
+Generate an H5 tag.  See \fB::html::h\fR.
+.TP
+\fB::html::h6\fR \fIstring\fR ?\fIparam\fR?\fR
+Generate an H6 tag.  See \fB::html::h\fR.
+.TP
+\fB::html::hdrRow\fR \fIargs\fR\fR
+Generate a table row, including TR and TH tags.
+Each value in \fIargs\fR is place into its own table cell.
+This uses \fB::html::cell\fR.
+.TP
+\fB::html::head\fR \fItitle\fR\fR
+Generate the HEAD section that includes the page TITLE.
+If previous calls have been made to
+\fB::html::author\fR,
+\fB::html::keywords\fR,
+\fB::html::description\fR,
+or
+\fB::html::meta\fR
+then additional tags are inserted into the HEAD section.
+This leaves an open HTML tag pushed on the stack with
+\fB::html::openTag\fR.
+.TP
+\fB::html::headTag\fR \fIstring\fR\fR
+Save a tag for inclusion in the HEAD section generated by
+\fB::html::head\fR.  The \fIstring\fR is everything in the tag except
+the enclosing angle brackets, < >.
+.TP
+\fB::html::if\fR \fIexpr1 body1\fR ?\fBelseif\fR \fIexpr2 body2 ...\fR? ?\fBelse\fR \fIbodyN\fR?\fR
+This procedure is similar to the built-in Tcl \fBif\fR control
+structure.  Rather than evaluating the body of the branch that is
+taken, it returns the subst'ed \fIbody\fR.  Note that the syntax is
+slightly more restrictive than that of the built-in Tcl \fBif\fR
+control structure.
+.TP
+\fB::html::keywords\fR \fIargs\fR\fR
+\fBSide effect only\fR.  Call this before \fB::html::head\fR to
+define a keyword META tag for the page.  The META tag is included in
+the result of \fB::html::head\fR.
+.TP
+\fB::html::mailto\fR \fIemail\fR ?\fIsubject\fR?\fR
+Generate a hypertext link to a mailto: URL.
+.TP
+\fB::html::meta\fR \fIargs\fR\fR
+\fBSide effect only\fR.  Call this before \fB::html::head\fR to
+define a META tag for the page.  The \fIargs\fR is a Tcl-style name,
+value list that is used for the name= and value= parameters for the
+META tag.  The META tag is included in the result of
+\fB::html::head\fR.
+.TP
+\fB::html::minorMenu\fR \fIlist\fR ?\fIsep\fR?\fR
+Generate a series of hypertext links.  The \fIlist\fR is a Tcl-style
+name, value list of labels and urls for the links.  The \fIsep\fR is
+the text to put between each link. It defaults to " | ".
+.TP
+\fB::html::minorList\fR \fIlist\fR ?\fIordered\fR?\fR
+Generate an ordered or unordered list of links.  The \fIlist\fR is a
+Tcl-style name, value list of labels and urls for the links.
+\fIordered\fR is a boolean used to choose between an ordered or
+unordered list. It defaults to \fBfalse\fR.
+.TP
+\fB::html::openTag\fR \fItag args\fR\fR
+Push \fItag\fR onto a stack and generate the opening tag for
+\fItag\fR.  Use \fB::html::closeTag\fR to pop the tag from the stack.
+.TP
+\fB::html::passwordInput\fR ?\fIname\fR?\fR
+Generate an INPUT tag of type PASSWORD. The \fIname\fR defaults to
+"password".
+.TP
+\fB::html::passwordInputRow\fR \fIlabel\fR ?\fIname\fR?\fR
+Format a table row containing a label and an INPUT tag of type
+PASSWORD. The \fIname\fR defaults to "password".
+.TP
+\fB::html::quoteFormValue\fR \fIvalue\fR\fR
+Quote special characters in \fIvalue\fR by replacing them with HTML
+entities for quotes, ampersand, and angle brackets.
+.TP
+\fB::html::radioSet\fR \fIkey sep list\fR\fR
+Generate a set of INPUT tags of type RADIO and an associated text
+label.  All the radio buttons share the same \fIkey\fR for their name.
+The \fIsep\fR is text used to separate the elements.  The \fIlist\fR
+is a Tcl-style label, value list.
+.TP
+\fB::html::radioValue\fR \fIname value\fR\fR
+Generate the "name=\fIname\fR value=\fIvalue\fR for a RADIO form
+element.  If the CGI variable \fIname\fR has the value \fIvalue\fR,
+then SELECTED is added to the return value.
+.TP
+\fB::html::refresh\fR \fIseconds url\fR\fR
+Set up a refresh META tag. Call this before \fB::html::head\fR and the
+HEAD section will contain a META tag that causes the document to
+refresh in \fIseconds\fR seconds.  The \fIurl\fR is optional.  If
+specified, it specifies a new page to load after the refresh interval.
+.TP
+\fB::html::init\fR ?\fIlist\fR?\fR
+\fB::html::init\fR accepts a Tcl-style name-value list that defines
+values for items with a name of the form "tag.parameter".  For
+example, a default with key "body.bgcolor" defines the background
+color for the BODY tag.
+.TP
+\fB::html::row\fR \fIargs\fR\fR
+Generate a table row, including TR and TD tags.  Each value in
+\fIargs\fR is place into its own table cell. This uses
+\fB::html::cell\fR.
+.TP
+\fB::html::paramRow\fR \fIlist\fR ?\fIrparam\fR? ?\fIcparam\fR?\fR
+Generate a table row, including TR and TD tags. Each value in
+\fIlist\fR is placed into its own table cell. This uses
+\fB::html::cell\fR. The value of \fIrparam\fR is used as parameter for
+the TR tag. The value of \fIcparam\fR is passed to \fB::html::cell\fR
+as parameter for the TD tags.
+.TP
+\fB::html::select\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+Generate a SELECT form element and nested OPTION tags. The \fIname\fR
+and \fIparam\fR are used to generate the SELECT tag. The \fIchoices\fR
+list is a Tcl-style name, value list.
+.TP
+\fB::html::selectPlain\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+Like \fB::html::select\fR except that \fIchoices\fR is a Tcl list of
+values used for the OPTION tags.  The label and the value for each
+OPTION are the same.
+.TP
+\fB::html::submit\fR \fIlabel\fR ?\fIname\fR?\fR
+Generate an INPUT tag of type SUBMIT. \fIname\fR defaults to "submit".
+.TP
+\fB::html::set\fR \fIvar val\fR\fR
+This procedure is similar to the built-in Tcl \fBset\fR command.  The
+main difference is that it returns "" so it can be called from an HTML
+template file without appending unwanted results.  The other
+difference is that it must take two arguments.
+.TP
+\fB::html::tableFromArray\fR \fIarrname\fR ?\fIparam\fR? ?\fIpat\fR?\fR
+Generate a TABLE and nested rows to display a Tcl array. The
+\fIparam\fR are for the TABLE tag. The \fIpat\fR is a
+\fBstring match\fR pattern used to select array elements. It
+defaults to "*".
+.TP
+\fB::html::tableFromList\fR \fIquerylist\fR ?\fIparam\fR?\fR
+Generate a TABLE and nested rows to display \fIquerylist\fR, which is
+a Tcl-style name, value list.  The \fIparam\fR are for the TABLE tag.
+.TP
+\fB::html::textarea\fR \fIname\fR ?\fIparam\fR? ?\fIcurrent\fR?\fR
+Generate a TEXTAREA tag wrapped around its current values.
+.TP
+\fB::html::textInput\fR \fIname args\fR\fR
+Generate an INPUT form tag with type TEXT.  This uses
+\fB::html::formValue\fR.  The args is any additional tag attributes
+you want to put into the INPUT tag.
+.TP
+\fB::html::textInputRow\fR \fIlabel name args\fR\fR
+Generate an INPUT form tag with type TEXT formatted into a table row
+with an associated label.  The args is any additional tag attributes
+you want to put into the INPUT tag.
+.TP
+\fB::html::title\fR \fItitle\fR\fR
+\fBSide effect only\fR.  Call this before \fB::html::head\fR to
+define the TITLE for a page.
+.TP
+\fB::html::varEmpty\fR \fIname\fR\fR
+This returns 1 if the named variable either does not exist or has the
+empty string for its value.
+.TP
+\fB::html::while\fR \fItest body\fR\fR
+This procedure is similar to the built-in Tcl \fBwhile\fR control
+structure.  Rather than evaluating the body, it returns the subst'ed
+\fIbody\fR.  Each iteration of the loop causes another string to be
+concatenated to the result value.
+.SH "SEE ALSO"
+ncgi, htmlparse
+.SH "KEYWORDS"
+html, form, table, checkbox, radiobutton, checkbutton
diff --git a/raw/mann/if.n b/raw/mann/if.n
new file mode 100644
index 0000000..f433524
--- /dev/null
+++ b/raw/mann/if.n
@@ -0,0 +1,281 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: if.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: if.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH if n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+if \- Execute scripts conditionally
+.SH SYNOPSIS
+\fBif \fIexpr1 \fR?\fBthen\fR? \fIbody1 \fBelseif \fIexpr2 \fR?\fBthen\fR? \fIbody2\fR \fBelseif\fR ... ?\fBelse\fR? ?\fIbodyN\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fIif\fR command evaluates \fIexpr1\fR as an expression (in the
+same way that \fBexpr\fR evaluates its argument).  The value of the
+expression must be a boolean
+(a numeric value, where 0 is false and
+anything is true, or a string value such as \fBtrue\fR or \fByes\fR
+for true and \fBfalse\fR or \fBno\fR for false);
+if it is true then \fIbody1\fR is executed by passing it to the
+Tcl interpreter.
+Otherwise \fIexpr2\fR is evaluated as an expression and if it is true
+then \fBbody2\fR is executed, and so on.
+If none of the expressions evaluates to true then \fIbodyN\fR is
+executed.
+The \fBthen\fR and \fBelse\fR arguments are optional
+``noise words'' to make the command easier to read.
+There may be any number of \fBelseif\fR clauses, including zero.
+\fIBodyN\fR may also be omitted as long as \fBelse\fR is omitted too.
+The return value from the command is the result of the body script
+that was executed, or an empty string
+if none of the expressions was non-zero and there was no \fIbodyN\fR.
+
+.SH "SEE ALSO"
+expr(n), for(n), foreach(n)
+
+.SH KEYWORDS
+boolean, conditional, else, false, if, true
diff --git a/raw/mann/incr.n b/raw/mann/incr.n
new file mode 100644
index 0000000..811b055
--- /dev/null
+++ b/raw/mann/incr.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: incr.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: incr.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH incr n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+incr \- Increment the value of a variable
+.SH SYNOPSIS
+\fBincr \fIvarName \fR?\fIincrement\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Increments the value stored in the variable whose name is \fIvarName\fR.
+The value of the variable must be an integer.
+If \fIincrement\fR is supplied then its value (which must be an
+integer) is added to the value of variable \fIvarName\fR;  otherwise
+1 is added to \fIvarName\fR.
+The new value is stored as a decimal string in variable \fIvarName\fR
+and also returned as result.
+
+.SH "SEE ALSO"
+expr(n)
+
+.SH KEYWORDS
+add, increment, variable, value
diff --git a/raw/mann/info.n b/raw/mann/info.n
new file mode 100644
index 0000000..72346e9
--- /dev/null
+++ b/raw/mann/info.n
@@ -0,0 +1,420 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: info.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: info.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH info n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+info \- Return information about the state of the Tcl interpreter
+.SH SYNOPSIS
+\fBinfo \fIoption \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command provides information about various internals of the Tcl
+interpreter.
+The legal \fIoption\fR's (which may be abbreviated) are:
+.TP
+\fBinfo args \fIprocname\fR
+Returns a list containing the names of the arguments to procedure
+\fIprocname\fR, in order.  \fIProcname\fR must be the name of a
+Tcl command procedure.
+.TP
+\fBinfo body \fIprocname\fR
+Returns the body of procedure \fIprocname\fR.  \fIProcname\fR must be
+the name of a Tcl command procedure.
+.TP
+\fBinfo cmdcount\fR
+Returns a count of the total number of commands that have been invoked
+in this interpreter.
+.TP
+\fBinfo commands \fR?\fIpattern\fR?
+If \fIpattern\fR isn't specified,
+returns a list of names of all the Tcl commands in the current namespace,
+including both the built-in commands written in C and
+the command procedures defined using the \fBproc\fR command.
+If \fIpattern\fR is specified,
+only those names matching \fIpattern\fR are returned.
+Matching is determined using the same rules as for \fBstring match\fR.
+\fIpattern\fR can be a qualified name like \fBFoo::print*\fR.
+That is, it may specify a particular namespace
+using a sequence of namespace names separated by \fB::\fRs,
+and may have pattern matching special characters
+at the end to specify a set of commands in that namespace.
+If \fIpattern\fR is a qualified name,
+the resulting list of command names has each one qualified with the name
+of the specified namespace.
+.TP
+\fBinfo complete \fIcommand\fR
+Returns 1 if \fIcommand\fR is a complete Tcl command in the sense of
+having no unclosed quotes, braces, brackets or array element names,
+If the command doesn't appear to be complete then 0 is returned.
+This command is typically used in line-oriented input environments
+to allow users to type in commands that span multiple lines;  if the
+command isn't complete, the script can delay evaluating it until additional
+lines have been typed to complete the command.
+.TP
+\fBinfo default \fIprocname arg varname\fR
+\fIProcname\fR must be the name of a Tcl command procedure and \fIarg\fR
+must be the name of an argument to that procedure.  If \fIarg\fR
+doesn't have a default value then the command returns \fB0\fR.
+Otherwise it returns \fB1\fR and places the default value of \fIarg\fR
+into variable \fIvarname\fR.
+.TP
+\fBinfo exists \fIvarName\fR
+Returns \fB1\fR if the variable named \fIvarName\fR exists in the
+current context (either as a global or local variable) and has been
+defined by being given a value, returns \fB0\fR otherwise.
+.TP
+\fBinfo globals \fR?\fIpattern\fR?
+If \fIpattern\fR isn't specified, returns a list of all the names
+of currently-defined global variables.
+Global variables are variables in the global namespace.
+If \fIpattern\fR is specified, only those names matching \fIpattern\fR
+are returned.  Matching is determined using the same rules as for
+\fBstring match\fR.
+.TP
+\fBinfo hostname\fR
+Returns the name of the computer on which this invocation is being
+executed.
+.TP
+\fBinfo level\fR ?\fInumber\fR?
+If \fInumber\fR is not specified, this command returns a number
+giving the stack level of the invoking procedure, or 0 if the
+command is invoked at top-level.  If \fInumber\fR is specified,
+then the result is a list consisting of the name and arguments for the
+procedure call at level \fInumber\fR on the stack.  If \fInumber\fR
+is positive then it selects a particular stack level (1 refers
+to the top-most active procedure, 2 to the procedure it called, and
+so on); otherwise it gives a level relative to the current level
+(0 refers to the current procedure, -1 to its caller, and so on).
+See the \fBuplevel\fR command for more information on what stack
+levels mean.
+.TP
+\fBinfo library\fR
+Returns the name of the library directory in which standard Tcl
+scripts are stored.
+This is actually the value of the \fBtcl_library\fR
+variable and may be changed by setting \fBtcl_library\fR.
+See the \fBtclvars\fR manual entry for more information.
+.TP
+\fBinfo loaded \fR?\fIinterp\fR?
+Returns a list describing all of the packages that have been loaded into
+\fIinterp\fR with the \fBload\fR command.
+Each list element is a sub-list with two elements consisting of the
+name of the file from which the package was loaded and the name of
+the package.
+For statically-loaded packages the file name will be an empty string.
+If \fIinterp\fR is omitted then information is returned for all packages
+loaded in any interpreter in the process.
+To get a list of just the packages in the current interpreter, specify
+an empty string for the \fIinterp\fR argument.
+.TP
+\fBinfo locals \fR?\fIpattern\fR?
+If \fIpattern\fR isn't specified, returns a list of all the names
+of currently-defined local variables, including arguments to the
+current procedure, if any.
+Variables defined with the \fBglobal\fR and \fBupvar\fR commands
+will not be returned.
+If \fIpattern\fR is specified, only those names matching \fIpattern\fR
+are returned.  Matching is determined using the same rules as for
+\fBstring match\fR.
+.TP
+\fBinfo nameofexecutable\fR
+Returns the full path name of the binary file from which the application
+was invoked.  If Tcl was unable to identify the file, then an empty
+string is returned.
+.TP
+\fBinfo patchlevel\fR
+Returns the value of the global variable \fBtcl_patchLevel\fR; see
+the \fBtclvars\fR manual entry for more information.
+.TP
+\fBinfo procs \fR?\fIpattern\fR?
+If \fIpattern\fR isn't specified, returns a list of all the
+names of Tcl command procedures in the current namespace.
+If \fIpattern\fR is specified,
+only those procedure names in the current namespace
+matching \fIpattern\fR are returned.
+Matching is determined using the same rules as for
+\fBstring match\fR.
+.TP
+\fBinfo script\fR
+If a Tcl script file is currently being evaluated (i.e. there is a
+call to \fBTcl_EvalFile\fR active or there is an active invocation
+of the \fBsource\fR command), then this command returns the name
+of the innermost file being processed.  Otherwise the command returns an
+empty string.
+.TP
+\fBinfo sharedlibextension\fR
+Returns the extension used on this platform for the names of files
+containing shared libraries (for example, \fB.so\fR under Solaris).
+If shared libraries aren't supported on this platform then an empty
+string is returned.
+.TP
+\fBinfo tclversion\fR
+Returns the value of the global variable \fBtcl_version\fR; see
+the \fBtclvars\fR manual entry for more information.
+.TP
+\fBinfo vars\fR ?\fIpattern\fR?
+If \fIpattern\fR isn't specified,
+returns a list of all the names of currently-visible variables.
+This includes locals and currently-visible globals.
+If \fIpattern\fR is specified, only those names matching \fIpattern\fR
+are returned.  Matching is determined using the same rules as for
+\fBstring match\fR.
+\fIpattern\fR can be a qualified name like \fBFoo::option*\fR.
+That is, it may specify a particular namespace
+using a sequence of namespace names separated by \fB::\fRs,
+and may have pattern matching special characters
+at the end to specify a set of variables in that namespace.
+If \fIpattern\fR is a qualified name,
+the resulting list of variable names
+has each matching namespace variable qualified with the name
+of its namespace.
+
+.SH KEYWORDS
+command, information, interpreter, level, namespace, procedure, variable
diff --git a/raw/mann/interp.n b/raw/mann/interp.n
new file mode 100644
index 0000000..8706e56
--- /dev/null
+++ b/raw/mann/interp.n
@@ -0,0 +1,777 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: interp.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: interp.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH interp n 7.6 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+interp \- Create and manipulate Tcl interpreters
+.SH SYNOPSIS
+\fBinterp \fIoption \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command makes it possible to create one or more new Tcl 
+interpreters that co-exist with the creating interpreter in the
+same application.  The creating interpreter is called the \fImaster\fR
+and the new interpreter is called a \fIslave\fR. 
+A master can create any number of slaves, and each slave can
+itself create additional slaves for which it is master, resulting
+in a hierarchy of interpreters.
+.PP
+Each interpreter is independent from the others: it has its own name
+space for commands, procedures, and global variables.
+A master interpreter may create connections between its slaves and
+itself using a mechanism called an \fIalias\fR.  An \fIalias\fR is
+a command in a slave interpreter which, when invoked, causes a
+command to be invoked in its master interpreter or in another slave
+interpreter.  The only other connections between interpreters are
+through environment variables (the \fBenv\fR variable), which are
+normally shared among all interpreters in the application. Note that the
+name space for files (such as the names returned by the \fBopen\fR command)
+is no longer shared between interpreters. Explicit commands are provided to
+share files and to transfer references to open files from one interpreter
+to another.
+.PP
+The \fBinterp\fR command also provides support for \fIsafe\fR
+interpreters.  A safe interpreter is a slave whose functions have
+been greatly restricted, so that it is safe to execute untrusted
+scripts without fear of them damaging other interpreters or the
+application's environment. For example, all IO channel creation
+commands and subprocess creation commands are made inaccessible to safe
+interpreters.
+.VS
+See SAFE INTERPRETERS below for more information on
+what features are present in a safe interpreter.
+The dangerous functionality is not removed from the safe interpreter;
+instead, it is \fIhidden\fR, so that only trusted interpreters can obtain
+access to it. For a detailed explanation of hidden commands, see
+HIDDEN COMMANDS, below.
+The alias mechanism can be used for protected communication (analogous to a
+kernel call) between a slave interpreter and its master. See ALIAS
+INVOCATION, below, for more details on how the alias mechanism works.
+.VE
+.PP
+A qualified interpreter name is a proper Tcl lists containing a subset of its
+ancestors in the interpreter hierarchy, terminated by the string naming the
+interpreter in its immediate master. Interpreter names are relative to the
+interpreter in which they are used. For example, if \fBa\fR is a slave of
+the current interpreter and it has a slave \fBa1\fR, which in turn has a
+slave \fBa11\fR, the qualified name of \fBa11\fR in \fBa\fR is the list
+\fBa1 a11\fR.
+.PP
+The \fBinterp\fR command, described below, accepts qualified interpreter
+names as arguments; the interpreter in which the command is being evaluated
+can always be referred to as \fB{}\fR (the empty list or string). Note that
+it is impossible to refer to a master (ancestor) interpreter by name in a
+slave interpreter except through aliases. Also, there is no global name by
+which one can refer to the first interpreter created in an application.
+Both restrictions are motivated by safety concerns.
+
+.VS
+.SH "THE INTERP COMMAND"
+.PP
+.VE
+The \fBinterp\fR command is used to create, delete, and manipulate
+slave interpreters, and to share or transfer
+channels between interpreters.  It can have any of several forms, depending
+on the \fIoption\fR argument:
+.TP
+\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR
+Returns a Tcl list whose elements are the \fItargetCmd\fR and
+\fIarg\fRs associated with the alias named \fIsrcCmd\fR
+(all of these are the values specified when the alias was
+created; it is possible that the actual source command in the
+slave is different from \fIsrcCmd\fR if it was renamed).
+.TP
+\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR \fB{}\fR
+Deletes the alias for \fIsrcCmd\fR in the slave interpreter identified by
+\fIsrcPath\fR.
+\fIsrcCmd\fR refers to the name under which the alias
+was created;  if the source command has been renamed, the renamed
+command will be deleted.
+.TP
+\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR \fItargetPath\fR \fItargetCmd \fR?\fIarg arg ...\fR?
+This command creates an alias between one slave and another (see the
+\fBalias\fR slave command below for creating aliases between a slave
+and its master).  In this command, either of the slave interpreters
+may be anywhere in the hierarchy of interpreters under the interpreter
+invoking the command.
+\fISrcPath\fR and \fIsrcCmd\fR identify the source of the alias.
+\fISrcPath\fR is a Tcl list whose elements select a particular
+interpreter.  For example, ``\fBa b\fR'' identifies an interpreter
+\fBb\fR, which is a slave of interpreter \fBa\fR, which is a slave
+of the invoking interpreter.  An empty list specifies the interpreter
+invoking the command.  \fIsrcCmd\fR gives the name of a new
+command, which will be created in the source interpreter.
+\fITargetPath\fR and \fItargetCmd\fR specify a target interpreter
+and command, and the \fIarg\fR arguments, if any, specify additional
+arguments to \fItargetCmd\fR which are prepended to any arguments specified
+in the invocation of \fIsrcCmd\fR.
+\fITargetCmd\fR may be undefined at the time of this call, or it may
+already exist; it is not created by this command.
+The alias arranges for the given target command to be invoked
+in the target interpreter whenever the given source command is
+invoked in the source interpreter.  See ALIAS INVOCATION below for
+more details.
+.TP
+\fBinterp\fR \fBaliases \fR?\fIpath\fR?
+This command returns a Tcl list of the names of all the source commands for
+aliases defined in the interpreter identified by \fIpath\fR.
+.TP
+\fBinterp\fR \fBcreate \fR?\fB\-safe\fR? ?\fB\-\|\-\fR? ?\fIpath\fR?
+Creates a slave interpreter identified by \fIpath\fR and a new command,
+called a \fIslave command\fR. The name of the slave command is the last
+component of \fIpath\fR. The new slave interpreter and the slave command
+are created in the interpreter identified by the path obtained by removing
+the last component from \fIpath\fR. For example, if \fIpath is \fBa b
+c\fR then a new slave interpreter and slave command named \fBc\fR are
+created in the interpreter identified by the path \fBa b\fR.
+The slave command may be used to manipulate the new interpreter as
+described below. If \fIpath\fR is omitted, Tcl creates a unique name of the
+form \fBinterp\fIx\fR, where \fIx\fR is an integer, and uses it for the
+interpreter and the slave command. If the \fB\-safe\fR switch is specified
+(or if the master interpreter is a safe interpreter), the new slave
+interpreter will be created as a safe interpreter with limited
+functionality; otherwise the slave will include the full set of Tcl
+built-in commands and variables. The \fB\-\|\-\fR switch can be used to
+mark the end of switches;  it may be needed if \fIpath\fR is an unusual
+value such as \fB\-safe\fR. The result of the command is the name of the
+new interpreter. The name of a slave interpreter must be unique among all
+the slaves for its master;  an error occurs if a slave interpreter by the
+given name already exists in this master.
+.TP
+\fBinterp\fR \fBdelete \fR?\fIpath ...?\fR
+Deletes zero or more interpreters given by the optional \fIpath\fR
+arguments, and for each interpreter, it also deletes its slaves. The
+command also deletes the slave command for each interpreter deleted.
+For each \fIpath\fR argument, if no interpreter by that name
+exists, the command raises an error.
+.TP
+\fBinterp\fR \fBeval\fR \fIpath arg \fR?\fIarg ...\fR?
+This command concatenates all of the \fIarg\fR arguments in the same
+fashion as the \fBconcat\fR command, then evaluates the resulting string as
+a Tcl script in the slave interpreter identified by \fIpath\fR. The result
+of this evaluation (including error information such as the \fBerrorInfo\fR
+and \fBerrorCode\fR variables, if an error occurs) is returned to the
+invoking interpreter.
+.TP
+\fBinterp exists \fIpath\fR
+Returns  \fB1\fR if a slave interpreter by the specified \fIpath\fR
+exists in this master, \fB0\fR otherwise. If \fIpath\fR is omitted, the
+invoking interpreter is used.
+.VS "" BR
+.TP
+\fBinterp expose \fIpath\fR \fIhiddenName\fR ?\fIexposedCmdName\fR?
+Makes the hidden command \fIhiddenName\fR exposed, eventually bringing
+it back under a new \fIexposedCmdName\fR name (this name is currently
+accepted only if it is a valid global name space name without any ::),
+in the interpreter
+denoted by \fIpath\fR.
+If an exposed command with the targetted name already exists, this command
+fails.
+Hidden commands are explained in more detail in HIDDEN COMMANDS, below.
+.TP
+\fBinterp\fR \fBhide\fR \fIpath\fR \fIexposedCmdName\fR ?\fIhiddenCmdName\fR?
+Makes the exposed command \fIexposedCmdName\fR hidden, renaming
+it to the hidden command \fIhiddenCmdName\fR, or keeping the same name if
+\fIhiddenCmdName\fR is not given, in the interpreter denoted 
+by \fIpath\fR.
+If a hidden command with the targetted name already exists, this command
+fails.
+Currently both \fIexposedCmdName\fR and \fIhiddenCmdName\fR can 
+not contain namespace qualifiers, or an error is raised.
+Commands to be hidden by \fBinterp hide\fR are looked up in the global
+namespace even if the current namespace is not the global one. This
+prevents slaves from fooling a master interpreter into hiding the wrong
+command, by making the current namespace be different from the global one.
+Hidden commands are explained in more detail in HIDDEN COMMANDS, below.
+.TP
+\fBinterp\fR \fBhidden\fR \fIpath\fR
+Returns a list of the names of all hidden commands in the interpreter
+identified by \fIpath\fR.
+.TP
+\fBinterp\fR \fBinvokehidden\fR \fIpath\fR ?\fB-global\fR? \fIhiddenCmdName\fR ?\fIarg ...\fR?
+Invokes the hidden command \fIhiddenCmdName\fR with the arguments supplied
+in the interpreter denoted by \fIpath\fR. No substitutions or evaluation
+are applied to the arguments.
+If the \fB-global\fR flag is present, the hidden command is invoked at the
+global level in the target interpreter; otherwise it is invoked at the
+current call frame and can access local variables in that and outer call
+frames.
+Hidden commands are explained in more detail in HIDDEN COMMANDS, below.
+.VE
+.TP
+\fBinterp issafe\fR ?\fIpath\fR?
+Returns \fB1\fR if the interpreter identified by the specified \fIpath\fR
+is safe, \fB0\fR otherwise.
+.VS "" BR
+.TP
+\fBinterp marktrusted\fR \fIpath\fR
+Marks the interpreter identified by \fIpath\fR as trusted. Does
+not expose the hidden commands. This command can only be invoked from a
+trusted interpreter.
+The command has no effect if the interpreter identified by \fIpath\fR is
+already trusted.
+.VE
+.TP
+\fBinterp\fR \fBshare\fR \fIsrcPath channelId destPath\fR
+Causes the IO channel identified by \fIchannelId\fR to become shared
+between the interpreter identified by \fIsrcPath\fR and the interpreter
+identified by \fIdestPath\fR. Both interpreters have the same permissions
+on the IO channel.
+Both interpreters must close it to close the underlying IO channel; IO
+channels accessible in an interpreter are automatically closed when an
+interpreter is destroyed.
+.TP
+\fBinterp\fR \fBslaves\fR ?\fIpath\fR?
+Returns a Tcl list of the names of all the slave interpreters associated
+with the interpreter identified by \fIpath\fR. If \fIpath\fR is omitted,
+the invoking interpreter is used.
+.TP
+\fBinterp\fR \fBtarget\fR \fIpath alias\fR
+Returns a Tcl list describing the target interpreter for an alias. The
+alias is specified with an interpreter path and source command name, just
+as in \fBinterp alias\fR above. The name of the target interpreter is
+returned as an interpreter path, relative to the invoking interpreter.
+If the target interpreter for the alias is the invoking interpreter then an
+empty list is returned. If the target interpreter for the alias is not the
+invoking interpreter or one of its descendants then an error is generated.
+The target command does not have to be defined at the time of this invocation.
+.TP
+\fBinterp\fR \fBtransfer\fR \fIsrcPath channelId destPath\fR
+Causes the IO channel identified by \fIchannelId\fR to become available in
+the interpreter identified by \fIdestPath\fR and unavailable in the
+interpreter identified by \fIsrcPath\fR.
+
+.SH "SLAVE COMMAND"
+.PP
+For each slave interpreter created with the \fBinterp\fR command, a
+new Tcl command is created in the master interpreter with the same
+name as the new interpreter. This command may be used to invoke
+various operations on the interpreter.  It has the following
+general form:
+.CS
+\fIslave command \fR?\fIarg arg ...\fR?
+.CE
+\fISlave\fR is the name of the interpreter, and \fIcommand\fR
+and the \fIarg\fRs determine the exact behavior of the command.
+The valid forms of this command are:
+.TP
+\fIslave \fBaliases\fR
+Returns a Tcl list whose elements are the names of all the
+aliases in \fIslave\fR.  The names returned are the \fIsrcCmd\fR
+values used when the aliases were created (which may not be the same
+as the current names of the commands, if they have been
+renamed).
+.TP
+\fIslave \fBalias \fIsrcCmd\fR
+Returns a Tcl list whose elements are the \fItargetCmd\fR and
+\fIarg\fRs associated with the alias named \fIsrcCmd\fR
+(all of these are the values specified when the alias was
+created; it is possible that the actual source command in the
+slave is different from \fIsrcCmd\fR if it was renamed).
+.TP
+\fIslave \fBalias \fIsrcCmd \fB{}\fR
+Deletes the alias for \fIsrcCmd\fR in the slave interpreter.
+\fIsrcCmd\fR refers to the name under which the alias
+was created;  if the source command has been renamed, the renamed
+command will be deleted.
+.TP
+\fIslave \fBalias \fIsrcCmd targetCmd \fR?\fIarg ..\fR?
+Creates an alias such that whenever \fIsrcCmd\fR is invoked
+in \fIslave\fR, \fItargetCmd\fR is invoked in the master.
+The \fIarg\fR arguments will be passed to \fItargetCmd\fR as additional
+arguments, prepended before any arguments passed in the invocation of
+\fIsrcCmd\fR.
+See ALIAS INVOCATION below for details.
+.TP
+\fIslave \fBeval \fIarg \fR?\fIarg ..\fR?
+This command concatenates all of the \fIarg\fR arguments in
+the same fashion as the \fBconcat\fR command, then evaluates
+the resulting string as a Tcl script in \fIslave\fR.
+The result of this evaluation (including error information
+such as the \fBerrorInfo\fR and \fBerrorCode\fR variables, if an
+error occurs) is returned to the invoking interpreter.
+.VS "" BR
+.TP
+\fIslave \fBexpose \fIhiddenName \fR?\fIexposedCmdName\fR?
+This command exposes the hidden command \fIhiddenName\fR, eventually bringing
+it back under a new \fIexposedCmdName\fR name (this name is currently
+accepted only if it is a valid global name space name without any ::),
+in \fIslave\fR.
+If an exposed command with the targetted name already exists, this command
+fails.
+For more details on hidden commands, see HIDDEN COMMANDS, below.
+.TP
+\fIslave \fBhide \fIexposedCmdName\fR ?\fIhiddenCmdName\fR?
+This command hides the exposed command \fIexposedCmdName\fR, renaming it to 
+the hidden command \fIhiddenCmdName\fR, or keeping the same name if the
+the argument is not given, in the \fIslave\fR interpreter.
+If a hidden command with the targetted name already exists, this command
+fails.
+Currently both \fIexposedCmdName\fR and \fIhiddenCmdName\fR can 
+not contain namespace qualifiers, or an error is raised.
+Commands to be hidden are looked up in the global
+namespace even if the current namespace is not the global one. This
+prevents slaves from fooling a master interpreter into hiding the wrong
+command, by making the current namespace be different from the global one.
+For more details on hidden commands, see HIDDEN COMMANDS, below.
+.TP
+\fIslave \fBhidden\fR
+Returns a list of the names of all hidden commands in \fIslave\fR.
+.TP
+\fIslave \fBinvokehidden\fR ?\fB-global\fR \fIhiddenName \fR?\fIarg ..\fR?
+This command invokes the hidden command \fIhiddenName\fR with the
+supplied arguments, in \fIslave\fR. No substitutions or evaluations are
+applied to the arguments.
+If the \fB-global\fR flag is given, the command is invoked at the global
+level in the slave; otherwise it is invoked at the current call frame and
+can access local variables in that or outer call frames.
+For more details on hidden commands, see HIDDEN
+COMMANDS, below.
+.VE
+.TP
+\fIslave \fBissafe\fR
+Returns  \fB1\fR if the slave interpreter is safe, \fB0\fR otherwise.
+.VS "" BR
+.TP
+\fIslave \fBmarktrusted\fR
+Marks the slave interpreter as trusted. Can only be invoked by a
+trusted interpreter. This command does not expose any hidden
+commands in the slave interpreter. The command has no effect if the slave
+is already trusted.
+.VE
+
+.SH "SAFE INTERPRETERS"
+.PP
+A safe interpreter is one with restricted functionality, so that
+is safe to execute an arbitrary script from your worst enemy without
+fear of that script damaging the enclosing application or the rest
+of your computing environment.  In order to make an interpreter
+safe, certain commands and variables are removed from the interpreter.
+For example, commands to create files on disk are removed, and the
+\fBexec\fR command is removed, since it could be used to cause damage
+through subprocesses.
+Limited access to these facilities can be provided, by creating
+aliases to the master interpreter which check their arguments carefully
+and provide restricted access to a safe subset of facilities.
+For example, file creation might be allowed in a particular subdirectory
+and subprocess invocation might be allowed for a carefully selected and
+fixed set of programs.
+.PP
+A safe interpreter is created by specifying the \fB\-safe\fR switch
+to the \fBinterp create\fR command.  Furthermore, any slave created
+by a safe interpreter will also be safe.
+.PP
+A safe interpreter is created with exactly the following set of
+built-in commands:
+.DS
+.ta 1.2i 2.4i 3.6i
+\fBafter	append	array	binary
+break	case	catch	clock
+close	concat	continue	eof
+error	eval	expr	fblocked
+fcopy	fileevent	flush	for
+foreach	format	gets	global
+history	if	incr	info
+interp	join	lappend	lindex
+linsert	list	llength	lrange
+lreplace	lsearch	lsort	namespace
+package	pid	proc	puts
+read	regexp	regsub	rename
+return	scan	seek	set
+split	string	subst	switch
+tell	trace	unset	update
+uplevel	upvar	variable	vwait
+while\fR
+.DE
+.VS ""  BR
+The following commands are hidden by \fBinterp create\fR when it
+creates a safe interpreter:
+.DS
+.ta 1.2i 2.4i 3.6i
+\fBcd	exec	exit	fconfigure
+file	glob	load	open
+pwd	socket	source	vwait\fR
+.DE
+These commands can be recreated later as Tcl procedures or aliases, or
+re-exposed by \fBinterp expose\fR.
+.VE
+.PP
+In addition, the \fBenv\fR variable is not present in a safe interpreter,
+so it cannot share environment variables with other interpreters. The
+\fBenv\fR variable poses a security risk, because users can store
+sensitive information in an environment variable. For example, the PGP
+manual recommends storing the PGP private key protection password in
+the environment variable \fIPGPPASS\fR. Making this variable available
+to untrusted code executing in a safe interpreter would incur a
+security risk.
+.PP
+If extensions are loaded into a safe interpreter, they may also restrict
+their own functionality to eliminate unsafe commands. For a discussion of
+management of extensions for safety see the manual entries for
+\fBSafe\-Tcl\fR and the \fBload\fR Tcl command.
+
+.SH "ALIAS INVOCATION"
+.PP
+The alias mechanism has been carefully designed so that it can
+be used safely when an untrusted script is executing
+in a safe slave and the target of the alias is a trusted
+master.  The most important thing in guaranteeing safety is to
+ensure that information passed from the slave to the master is
+never evaluated or substituted in the master;  if this were to
+occur, it would enable an evil script in the slave to invoke
+arbitrary functions in the master, which would compromise security.
+.PP
+When the source for an alias is invoked in the slave interpreter, the
+usual Tcl substitutions are performed when parsing that command.
+These substitutions are carried out in the source interpreter just
+as they would be for any other command invoked in that interpreter.
+The command procedure for the source command takes its arguments
+and merges them with the \fItargetCmd\fR and \fIarg\fRs for the
+alias to create a new array of arguments.  If the words
+of \fIsrcCmd\fR were ``\fIsrcCmd arg1 arg2 ... argN\fR'',
+the new set of words will be
+``\fItargetCmd arg arg ... arg arg1 arg2 ... argN\fR'',
+where \fItargetCmd\fR and \fIarg\fRs are the values supplied when the
+alias was created.  \fITargetCmd\fR is then used to locate a command
+procedure in the target interpreter, and that command procedure
+is invoked with the new set of arguments.  An error occurs if
+there is no command named \fItargetCmd\fR in the target interpreter.
+No additional substitutions are performed on the words:  the
+target command procedure is invoked directly, without
+going through the normal Tcl evaluation mechanism.
+Substitutions are thus performed on each word exactly once:
+\fItargetCmd\fR and \fIargs\fR were substituted when parsing the command
+that created the alias, and \fIarg1 - argN\fR are substituted when
+the alias's source command is parsed in the source interpreter.
+.PP
+When writing the \fItargetCmd\fRs for aliases in safe interpreters,
+it is very important that the arguments to that command never be
+evaluated or substituted, since this would provide an escape
+mechanism whereby the slave interpreter could execute arbitrary
+code in the master.  This in turn would compromise the security
+of the system.
+
+.VS
+.SH "HIDDEN COMMANDS"
+.PP
+Safe interpreters greatly restrict the functionality available to Tcl
+programs executing within them.
+Allowing the untrusted Tcl program to have direct access to this
+functionality is unsafe, because it can be used for a variety of
+attacks on the environment.
+However, there are times when there is a legitimate need to use the
+dangerous functionality in the context of the safe interpreter. For
+example, sometimes a program must be \fBsource\fRd into the interpreter.
+Another example is Tk, where windows are bound to the hierarchy of windows
+for a specific interpreter; some potentially dangerous functions, e.g.
+window management, must be performed on these windows within the
+interpreter context.
+.PP
+The \fBinterp\fR command provides a solution to this problem in the form of
+\fIhidden commands\fR. Instead of removing the dangerous commands entirely
+from a safe interpreter, these commands are hidden so they become
+unavailable to Tcl scripts executing in the interpreter. However, such
+hidden commands can be invoked by any trusted ancestor of the safe
+interpreter, in the context of the safe interpreter, using \fBinterp
+invoke\fR. Hidden commands and exposed commands reside in separate name
+spaces. It is possible to define a hidden command and an exposed command by
+the same name within one interpreter.
+.PP
+Hidden commands in a slave interpreter can be invoked in the body of
+procedures called in the master during alias invocation. For example, an
+alias for \fBsource\fR could be created in a slave interpreter. When it is
+invoked in the slave interpreter, a procedure is called in the master
+interpreter to check that the operation is allowable (e.g. it asks to
+source a file that the slave interpreter is allowed to access). The
+procedure then it invokes the hidden \fBsource\fR command in the slave
+interpreter to actually source in the contents of the file. Note that two
+commands named \fBsource\fR exist in the slave interpreter: the alias, and
+the hidden command.
+.PP
+Because a master interpreter may invoke a hidden command as part of
+handling an alias invocation, great care must be taken to avoid evaluating
+any arguments passed in through the alias invocation.
+Otherwise, malicious slave interpreters could cause a trusted master
+interpreter to execute dangerous commands on their behalf. See the section
+on ALIAS INVOCATION for a more complete discussion of this topic.
+To help avoid this problem, no substitutions or evaluations are
+applied to arguments of \fBinterp invokehidden\fR.
+.PP
+Safe interpreters are not allowed to invoke hidden commands in themselves
+or in their descendants. This prevents safe slaves from gaining access to
+hidden functionality in themselves or their descendants.
+.PP
+The set of hidden commands in an interpreter can be manipulated by a trusted
+interpreter using \fBinterp expose\fR and \fBinterp hide\fR. The \fBinterp
+expose\fR command moves a hidden command to the
+set of exposed commands in the interpreter identified by \fIpath\fR,
+potentially renaming the command in the process. If an exposed command by
+the targetted name already exists, the operation fails. Similarly,
+\fBinterp hide\fR moves an exposed command to the set of hidden commands in
+that interpreter. Safe interpreters are not allowed to move commands
+between the set of hidden and exposed commands, in either themselves or
+their descendants.
+.PP
+Currently, the names of hidden commands cannot contain namespace
+qualifiers, and you must first rename a command in a namespace to the
+global namespace before you can hide it.
+Commands to be hidden by \fBinterp hide\fR are looked up in the global
+namespace even if the current namespace is not the global one. This
+prevents slaves from fooling a master interpreter into hiding the wrong
+command, by making the current namespace be different from the global one.
+.VE
+.SH CREDITS
+.PP
+This mechanism is based on the Safe-Tcl prototype implemented
+by Nathaniel Borenstein and Marshall Rose.
+
+.SH "SEE ALSO"
+load(n), safe(n), Tcl_CreateSlave(3)
+
+.SH KEYWORDS
+alias, master interpreter, safe interpreter, slave interpreter
diff --git a/raw/mann/join.n b/raw/mann/join.n
new file mode 100644
index 0000000..af7a47e
--- /dev/null
+++ b/raw/mann/join.n
@@ -0,0 +1,267 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: join.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: join.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH join n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+join \- Create a string by joining together list elements
+.SH SYNOPSIS
+\fBjoin \fIlist \fR?\fIjoinString\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fIlist\fR argument must be a valid Tcl list.
+This command returns the string
+formed by joining all of the elements of \fIlist\fR together with
+\fIjoinString\fR separating each adjacent pair of elements.
+The \fIjoinString\fR argument defaults to a space character.
+
+.SH "SEE ALSO"
+list(n), lappend(n)
+
+.SH KEYWORDS
+element, join, list, separator
diff --git a/raw/mann/keysyms.n b/raw/mann/keysyms.n
new file mode 100644
index 0000000..59211ac
--- /dev/null
+++ b/raw/mann/keysyms.n
@@ -0,0 +1,1165 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: keysyms.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: keysyms.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH keysyms n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+keysyms \- keysyms recognized by Tk
+.BE
+
+.SH DESCRIPTION
+.PP
+Tk recognizes many keysyms when specifying key bindings (eg, 
+\fBbind . <Key-\fR\fIkeysym\fR\fB>\fR).  The following list enumerates the
+keysyms that will be recognized by Tk.  Note that not all keysyms will
+be valid on all platforms.  For example, on Unix systems, the presence
+of a particular keysym is dependant on the configuration of the
+keyboard modifier map.  This list shows keysyms along with their
+decimal and hexidecimal values.
+.PP
+.CS
+space                               32     0x0020
+exclam                              33     0x0021
+quotedbl                            34     0x0022
+numbersign                          35     0x0023
+dollar                              36     0x0024
+percent                             37     0x0025
+ampersand                           38     0x0026
+quoteright                          39     0x0027
+parenleft                           40     0x0028
+parenright                          41     0x0029
+asterisk                            42     0x002a
+plus                                43     0x002b
+comma                               44     0x002c
+minus                               45     0x002d
+period                              46     0x002e
+slash                               47     0x002f
+0                                   48     0x0030
+1                                   49     0x0031
+2                                   50     0x0032
+3                                   51     0x0033
+4                                   52     0x0034
+5                                   53     0x0035
+6                                   54     0x0036
+7                                   55     0x0037
+8                                   56     0x0038
+9                                   57     0x0039
+colon                               58     0x003a
+semicolon                           59     0x003b
+less                                60     0x003c
+equal                               61     0x003d
+greater                             62     0x003e
+question                            63     0x003f
+at                                  64     0x0040
+A                                   65     0x0041
+B                                   66     0x0042
+C                                   67     0x0043
+D                                   68     0x0044
+E                                   69     0x0045
+F                                   70     0x0046
+G                                   71     0x0047
+H                                   72     0x0048
+I                                   73     0x0049
+J                                   74     0x004a
+K                                   75     0x004b
+L                                   76     0x004c
+M                                   77     0x004d
+N                                   78     0x004e
+O                                   79     0x004f
+P                                   80     0x0050
+Q                                   81     0x0051
+R                                   82     0x0052
+S                                   83     0x0053
+T                                   84     0x0054
+U                                   85     0x0055
+V                                   86     0x0056
+W                                   87     0x0057
+X                                   88     0x0058
+Y                                   89     0x0059
+Z                                   90     0x005a
+bracketleft                         91     0x005b
+backslash                           92     0x005c
+bracketright                        93     0x005d
+asciicircum                         94     0x005e
+underscore                          95     0x005f
+quoteleft                           96     0x0060
+a                                   97     0x0061
+b                                   98     0x0062
+c                                   99     0x0063
+d                                  100     0x0064
+e                                  101     0x0065
+f                                  102     0x0066
+g                                  103     0x0067
+h                                  104     0x0068
+i                                  105     0x0069
+j                                  106     0x006a
+k                                  107     0x006b
+l                                  108     0x006c
+m                                  109     0x006d
+n                                  110     0x006e
+o                                  111     0x006f
+p                                  112     0x0070
+q                                  113     0x0071
+r                                  114     0x0072
+s                                  115     0x0073
+t                                  116     0x0074
+u                                  117     0x0075
+v                                  118     0x0076
+w                                  119     0x0077
+x                                  120     0x0078
+y                                  121     0x0079
+z                                  122     0x007a
+braceleft                          123     0x007b
+bar                                124     0x007c
+braceright                         125     0x007d
+asciitilde                         126     0x007e
+nobreakspace                       160     0x00a0
+exclamdown                         161     0x00a1
+cent                               162     0x00a2
+sterling                           163     0x00a3
+currency                           164     0x00a4
+yen                                165     0x00a5
+brokenbar                          166     0x00a6
+section                            167     0x00a7
+diaeresis                          168     0x00a8
+copyright                          169     0x00a9
+ordfeminine                        170     0x00aa
+guillemotleft                      171     0x00ab
+notsign                            172     0x00ac
+hyphen                             173     0x00ad
+registered                         174     0x00ae
+macron                             175     0x00af
+degree                             176     0x00b0
+plusminus                          177     0x00b1
+twosuperior                        178     0x00b2
+threesuperior                      179     0x00b3
+acute                              180     0x00b4
+mu                                 181     0x00b5
+paragraph                          182     0x00b6
+periodcentered                     183     0x00b7
+cedilla                            184     0x00b8
+onesuperior                        185     0x00b9
+masculine                          186     0x00ba
+guillemotright                     187     0x00bb
+onequarter                         188     0x00bc
+onehalf                            189     0x00bd
+threequarters                      190     0x00be
+questiondown                       191     0x00bf
+Agrave                             192     0x00c0
+Aacute                             193     0x00c1
+Acircumflex                        194     0x00c2
+Atilde                             195     0x00c3
+Adiaeresis                         196     0x00c4
+Aring                              197     0x00c5
+AE                                 198     0x00c6
+Ccedilla                           199     0x00c7
+Egrave                             200     0x00c8
+Eacute                             201     0x00c9
+Ecircumflex                        202     0x00ca
+Ediaeresis                         203     0x00cb
+Igrave                             204     0x00cc
+Iacute                             205     0x00cd
+Icircumflex                        206     0x00ce
+Idiaeresis                         207     0x00cf
+Eth                                208     0x00d0
+Ntilde                             209     0x00d1
+Ograve                             210     0x00d2
+Oacute                             211     0x00d3
+Ocircumflex                        212     0x00d4
+Otilde                             213     0x00d5
+Odiaeresis                         214     0x00d6
+multiply                           215     0x00d7
+Ooblique                           216     0x00d8
+Ugrave                             217     0x00d9
+Uacute                             218     0x00da
+Ucircumflex                        219     0x00db
+Udiaeresis                         220     0x00dc
+Yacute                             221     0x00dd
+Thorn                              222     0x00de
+ssharp                             223     0x00df
+agrave                             224     0x00e0
+aacute                             225     0x00e1
+acircumflex                        226     0x00e2
+atilde                             227     0x00e3
+adiaeresis                         228     0x00e4
+aring                              229     0x00e5
+ae                                 230     0x00e6
+ccedilla                           231     0x00e7
+egrave                             232     0x00e8
+eacute                             233     0x00e9
+ecircumflex                        234     0x00ea
+ediaeresis                         235     0x00eb
+igrave                             236     0x00ec
+iacute                             237     0x00ed
+icircumflex                        238     0x00ee
+idiaeresis                         239     0x00ef
+eth                                240     0x00f0
+ntilde                             241     0x00f1
+ograve                             242     0x00f2
+oacute                             243     0x00f3
+ocircumflex                        244     0x00f4
+otilde                             245     0x00f5
+odiaeresis                         246     0x00f6
+division                           247     0x00f7
+oslash                             248     0x00f8
+ugrave                             249     0x00f9
+uacute                             250     0x00fa
+ucircumflex                        251     0x00fb
+udiaeresis                         252     0x00fc
+yacute                             253     0x00fd
+thorn                              254     0x00fe
+ydiaeresis                         255     0x00ff
+Aogonek                            417     0x01a1
+breve                              418     0x01a2
+Lstroke                            419     0x01a3
+Lcaron                             421     0x01a5
+Sacute                             422     0x01a6
+Scaron                             425     0x01a9
+Scedilla                           426     0x01aa
+Tcaron                             427     0x01ab
+Zacute                             428     0x01ac
+.CE
+.CS
+Zcaron                             430     0x01ae
+Zabovedot                          431     0x01af
+aogonek                            433     0x01b1
+ogonek                             434     0x01b2
+lstroke                            435     0x01b3
+lcaron                             437     0x01b5
+sacute                             438     0x01b6
+caron                              439     0x01b7
+scaron                             441     0x01b9
+scedilla                           442     0x01ba
+tcaron                             443     0x01bb
+zacute                             444     0x01bc
+doubleacute                        445     0x01bd
+zcaron                             446     0x01be
+zabovedot                          447     0x01bf
+Racute                             448     0x01c0
+Abreve                             451     0x01c3
+Cacute                             454     0x01c6
+Ccaron                             456     0x01c8
+Eogonek                            458     0x01ca
+Ecaron                             460     0x01cc
+Dcaron                             463     0x01cf
+Nacute                             465     0x01d1
+Ncaron                             466     0x01d2
+Odoubleacute                       469     0x01d5
+Rcaron                             472     0x01d8
+Uring                              473     0x01d9
+Udoubleacute                       475     0x01db
+Tcedilla                           478     0x01de
+racute                             480     0x01e0
+abreve                             483     0x01e3
+cacute                             486     0x01e6
+ccaron                             488     0x01e8
+eogonek                            490     0x01ea
+ecaron                             492     0x01ec
+dcaron                             495     0x01ef
+nacute                             497     0x01f1
+ncaron                             498     0x01f2
+odoubleacute                       501     0x01f5
+rcaron                             504     0x01f8
+uring                              505     0x01f9
+udoubleacute                       507     0x01fb
+tcedilla                           510     0x01fe
+abovedot                           511     0x01ff
+Hstroke                            673     0x02a1
+Hcircumflex                        678     0x02a6
+Iabovedot                          681     0x02a9
+Gbreve                             683     0x02ab
+Jcircumflex                        684     0x02ac
+hstroke                            689     0x02b1
+hcircumflex                        694     0x02b6
+idotless                           697     0x02b9
+gbreve                             699     0x02bb
+jcircumflex                        700     0x02bc
+Cabovedot                          709     0x02c5
+Ccircumflex                        710     0x02c6
+Gabovedot                          725     0x02d5
+Gcircumflex                        728     0x02d8
+Ubreve                             733     0x02dd
+Scircumflex                        734     0x02de
+cabovedot                          741     0x02e5
+ccircumflex                        742     0x02e6
+gabovedot                          757     0x02f5
+gcircumflex                        760     0x02f8
+ubreve                             765     0x02fd
+scircumflex                        766     0x02fe
+kappa                              930     0x03a2
+Rcedilla                           931     0x03a3
+Itilde                             933     0x03a5
+Lcedilla                           934     0x03a6
+Emacron                            938     0x03aa
+Gcedilla                           939     0x03ab
+Tslash                             940     0x03ac
+rcedilla                           947     0x03b3
+itilde                             949     0x03b5
+lcedilla                           950     0x03b6
+emacron                            954     0x03ba
+gacute                             955     0x03bb
+tslash                             956     0x03bc
+ENG                                957     0x03bd
+eng                                959     0x03bf
+Amacron                            960     0x03c0
+Iogonek                            967     0x03c7
+Eabovedot                          972     0x03cc
+Imacron                            975     0x03cf
+Ncedilla                           977     0x03d1
+Omacron                            978     0x03d2
+Kcedilla                           979     0x03d3
+Uogonek                            985     0x03d9
+Utilde                             989     0x03dd
+Umacron                            990     0x03de
+amacron                            992     0x03e0
+iogonek                            999     0x03e7
+eabovedot                         1004     0x03ec
+imacron                           1007     0x03ef
+ncedilla                          1009     0x03f1
+omacron                           1010     0x03f2
+kcedilla                          1011     0x03f3
+uogonek                           1017     0x03f9
+utilde                            1021     0x03fd
+umacron                           1022     0x03fe
+overline                          1150     0x047e
+kana_fullstop                     1185     0x04a1
+kana_openingbracket               1186     0x04a2
+kana_closingbracket               1187     0x04a3
+kana_comma                        1188     0x04a4
+kana_middledot                    1189     0x04a5
+kana_WO                           1190     0x04a6
+kana_a                            1191     0x04a7
+kana_i                            1192     0x04a8
+kana_u                            1193     0x04a9
+kana_e                            1194     0x04aa
+kana_o                            1195     0x04ab
+kana_ya                           1196     0x04ac
+kana_yu                           1197     0x04ad
+kana_yo                           1198     0x04ae
+kana_tu                           1199     0x04af
+prolongedsound                    1200     0x04b0
+kana_A                            1201     0x04b1
+kana_I                            1202     0x04b2
+kana_U                            1203     0x04b3
+kana_E                            1204     0x04b4
+kana_O                            1205     0x04b5
+kana_KA                           1206     0x04b6
+kana_KI                           1207     0x04b7
+kana_KU                           1208     0x04b8
+kana_KE                           1209     0x04b9
+kana_KO                           1210     0x04ba
+kana_SA                           1211     0x04bb
+kana_SHI                          1212     0x04bc
+kana_SU                           1213     0x04bd
+kana_SE                           1214     0x04be
+kana_SO                           1215     0x04bf
+kana_TA                           1216     0x04c0
+kana_TI                           1217     0x04c1
+kana_TU                           1218     0x04c2
+kana_TE                           1219     0x04c3
+kana_TO                           1220     0x04c4
+kana_NA                           1221     0x04c5
+kana_NI                           1222     0x04c6
+kana_NU                           1223     0x04c7
+kana_NE                           1224     0x04c8
+kana_NO                           1225     0x04c9
+kana_HA                           1226     0x04ca
+kana_HI                           1227     0x04cb
+kana_HU                           1228     0x04cc
+kana_HE                           1229     0x04cd
+kana_HO                           1230     0x04ce
+kana_MA                           1231     0x04cf
+kana_MI                           1232     0x04d0
+kana_MU                           1233     0x04d1
+kana_ME                           1234     0x04d2
+kana_MO                           1235     0x04d3
+kana_YA                           1236     0x04d4
+kana_YU                           1237     0x04d5
+kana_YO                           1238     0x04d6
+kana_RA                           1239     0x04d7
+kana_RI                           1240     0x04d8
+kana_RU                           1241     0x04d9
+kana_RE                           1242     0x04da
+kana_RO                           1243     0x04db
+kana_WA                           1244     0x04dc
+kana_N                            1245     0x04dd
+voicedsound                       1246     0x04de
+semivoicedsound                   1247     0x04df
+Arabic_comma                      1452     0x05ac
+Arabic_semicolon                  1467     0x05bb
+Arabic_question_mark              1471     0x05bf
+Arabic_hamza                      1473     0x05c1
+Arabic_maddaonalef                1474     0x05c2
+Arabic_hamzaonalef                1475     0x05c3
+Arabic_hamzaonwaw                 1476     0x05c4
+Arabic_hamzaunderalef             1477     0x05c5
+Arabic_hamzaonyeh                 1478     0x05c6
+Arabic_alef                       1479     0x05c7
+Arabic_beh                        1480     0x05c8
+Arabic_tehmarbuta                 1481     0x05c9
+Arabic_teh                        1482     0x05ca
+Arabic_theh                       1483     0x05cb
+Arabic_jeem                       1484     0x05cc
+Arabic_hah                        1485     0x05cd
+Arabic_khah                       1486     0x05ce
+Arabic_dal                        1487     0x05cf
+Arabic_thal                       1488     0x05d0
+Arabic_ra                         1489     0x05d1
+Arabic_zain                       1490     0x05d2
+Arabic_seen                       1491     0x05d3
+Arabic_sheen                      1492     0x05d4
+Arabic_sad                        1493     0x05d5
+Arabic_dad                        1494     0x05d6
+Arabic_tah                        1495     0x05d7
+Arabic_zah                        1496     0x05d8
+Arabic_ain                        1497     0x05d9
+Arabic_ghain                      1498     0x05da
+Arabic_tatweel                    1504     0x05e0
+Arabic_feh                        1505     0x05e1
+Arabic_qaf                        1506     0x05e2
+Arabic_kaf                        1507     0x05e3
+Arabic_lam                        1508     0x05e4
+Arabic_meem                       1509     0x05e5
+.CE
+.CS
+Arabic_noon                       1510     0x05e6
+Arabic_heh                        1511     0x05e7
+Arabic_waw                        1512     0x05e8
+Arabic_alefmaksura                1513     0x05e9
+Arabic_yeh                        1514     0x05ea
+Arabic_fathatan                   1515     0x05eb
+Arabic_dammatan                   1516     0x05ec
+Arabic_kasratan                   1517     0x05ed
+Arabic_fatha                      1518     0x05ee
+Arabic_damma                      1519     0x05ef
+Arabic_kasra                      1520     0x05f0
+Arabic_shadda                     1521     0x05f1
+Arabic_sukun                      1522     0x05f2
+Serbian_dje                       1697     0x06a1
+Macedonia_gje                     1698     0x06a2
+Cyrillic_io                       1699     0x06a3
+Ukranian_je                       1700     0x06a4
+Macedonia_dse                     1701     0x06a5
+Ukranian_i                        1702     0x06a6
+Ukranian_yi                       1703     0x06a7
+Serbian_je                        1704     0x06a8
+Serbian_lje                       1705     0x06a9
+Serbian_nje                       1706     0x06aa
+Serbian_tshe                      1707     0x06ab
+Macedonia_kje                     1708     0x06ac
+Byelorussian_shortu               1710     0x06ae
+Serbian_dze                       1711     0x06af
+numerosign                        1712     0x06b0
+Serbian_DJE                       1713     0x06b1
+Macedonia_GJE                     1714     0x06b2
+Cyrillic_IO                       1715     0x06b3
+Ukranian_JE                       1716     0x06b4
+Macedonia_DSE                     1717     0x06b5
+Ukranian_I                        1718     0x06b6
+Ukranian_YI                       1719     0x06b7
+Serbian_JE                        1720     0x06b8
+Serbian_LJE                       1721     0x06b9
+Serbian_NJE                       1722     0x06ba
+Serbian_TSHE                      1723     0x06bb
+Macedonia_KJE                     1724     0x06bc
+Byelorussian_SHORTU               1726     0x06be
+Serbian_DZE                       1727     0x06bf
+Cyrillic_yu                       1728     0x06c0
+Cyrillic_a                        1729     0x06c1
+Cyrillic_be                       1730     0x06c2
+Cyrillic_tse                      1731     0x06c3
+Cyrillic_de                       1732     0x06c4
+Cyrillic_ie                       1733     0x06c5
+Cyrillic_ef                       1734     0x06c6
+Cyrillic_ghe                      1735     0x06c7
+Cyrillic_ha                       1736     0x06c8
+Cyrillic_i                        1737     0x06c9
+Cyrillic_shorti                   1738     0x06ca
+Cyrillic_ka                       1739     0x06cb
+Cyrillic_el                       1740     0x06cc
+Cyrillic_em                       1741     0x06cd
+Cyrillic_en                       1742     0x06ce
+Cyrillic_o                        1743     0x06cf
+Cyrillic_pe                       1744     0x06d0
+Cyrillic_ya                       1745     0x06d1
+Cyrillic_er                       1746     0x06d2
+Cyrillic_es                       1747     0x06d3
+Cyrillic_te                       1748     0x06d4
+Cyrillic_u                        1749     0x06d5
+Cyrillic_zhe                      1750     0x06d6
+Cyrillic_ve                       1751     0x06d7
+Cyrillic_softsign                 1752     0x06d8
+Cyrillic_yeru                     1753     0x06d9
+Cyrillic_ze                       1754     0x06da
+Cyrillic_sha                      1755     0x06db
+Cyrillic_e                        1756     0x06dc
+Cyrillic_shcha                    1757     0x06dd
+Cyrillic_che                      1758     0x06de
+Cyrillic_hardsign                 1759     0x06df
+Cyrillic_YU                       1760     0x06e0
+Cyrillic_A                        1761     0x06e1
+Cyrillic_BE                       1762     0x06e2
+Cyrillic_TSE                      1763     0x06e3
+Cyrillic_DE                       1764     0x06e4
+Cyrillic_IE                       1765     0x06e5
+Cyrillic_EF                       1766     0x06e6
+Cyrillic_GHE                      1767     0x06e7
+Cyrillic_HA                       1768     0x06e8
+Cyrillic_I                        1769     0x06e9
+Cyrillic_SHORTI                   1770     0x06ea
+Cyrillic_KA                       1771     0x06eb
+Cyrillic_EL                       1772     0x06ec
+Cyrillic_EM                       1773     0x06ed
+Cyrillic_EN                       1774     0x06ee
+Cyrillic_O                        1775     0x06ef
+Cyrillic_PE                       1776     0x06f0
+Cyrillic_YA                       1777     0x06f1
+Cyrillic_ER                       1778     0x06f2
+Cyrillic_ES                       1779     0x06f3
+Cyrillic_TE                       1780     0x06f4
+Cyrillic_U                        1781     0x06f5
+Cyrillic_ZHE                      1782     0x06f6
+Cyrillic_VE                       1783     0x06f7
+Cyrillic_SOFTSIGN                 1784     0x06f8
+Cyrillic_YERU                     1785     0x06f9
+Cyrillic_ZE                       1786     0x06fa
+Cyrillic_SHA                      1787     0x06fb
+Cyrillic_E                        1788     0x06fc
+Cyrillic_SHCHA                    1789     0x06fd
+Cyrillic_CHE                      1790     0x06fe
+Cyrillic_HARDSIGN                 1791     0x06ff
+Greek_ALPHAaccent                 1953     0x07a1
+Greek_EPSILONaccent               1954     0x07a2
+Greek_ETAaccent                   1955     0x07a3
+Greek_IOTAaccent                  1956     0x07a4
+Greek_IOTAdiaeresis               1957     0x07a5
+Greek_IOTAaccentdiaeresis         1958     0x07a6
+Greek_OMICRONaccent               1959     0x07a7
+Greek_UPSILONaccent               1960     0x07a8
+Greek_UPSILONdieresis             1961     0x07a9
+Greek_UPSILONaccentdieresis       1962     0x07aa
+Greek_OMEGAaccent                 1963     0x07ab
+Greek_alphaaccent                 1969     0x07b1
+Greek_epsilonaccent               1970     0x07b2
+Greek_etaaccent                   1971     0x07b3
+Greek_iotaaccent                  1972     0x07b4
+Greek_iotadieresis                1973     0x07b5
+Greek_iotaaccentdieresis          1974     0x07b6
+Greek_omicronaccent               1975     0x07b7
+Greek_upsilonaccent               1976     0x07b8
+Greek_upsilondieresis             1977     0x07b9
+Greek_upsilonaccentdieresis       1978     0x07ba
+Greek_omegaaccent                 1979     0x07bb
+Greek_ALPHA                       1985     0x07c1
+Greek_BETA                        1986     0x07c2
+Greek_GAMMA                       1987     0x07c3
+Greek_DELTA                       1988     0x07c4
+Greek_EPSILON                     1989     0x07c5
+Greek_ZETA                        1990     0x07c6
+Greek_ETA                         1991     0x07c7
+Greek_THETA                       1992     0x07c8
+Greek_IOTA                        1993     0x07c9
+Greek_KAPPA                       1994     0x07ca
+Greek_LAMBDA                      1995     0x07cb
+Greek_MU                          1996     0x07cc
+Greek_NU                          1997     0x07cd
+Greek_XI                          1998     0x07ce
+Greek_OMICRON                     1999     0x07cf
+Greek_PI                          2000     0x07d0
+Greek_RHO                         2001     0x07d1
+Greek_SIGMA                       2002     0x07d2
+Greek_TAU                         2004     0x07d4
+Greek_UPSILON                     2005     0x07d5
+Greek_PHI                         2006     0x07d6
+Greek_CHI                         2007     0x07d7
+Greek_PSI                         2008     0x07d8
+Greek_OMEGA                       2009     0x07d9
+Greek_alpha                       2017     0x07e1
+Greek_beta                        2018     0x07e2
+Greek_gamma                       2019     0x07e3
+Greek_delta                       2020     0x07e4
+Greek_epsilon                     2021     0x07e5
+Greek_zeta                        2022     0x07e6
+Greek_eta                         2023     0x07e7
+Greek_theta                       2024     0x07e8
+Greek_iota                        2025     0x07e9
+Greek_kappa                       2026     0x07ea
+Greek_lambda                      2027     0x07eb
+Greek_mu                          2028     0x07ec
+Greek_nu                          2029     0x07ed
+Greek_xi                          2030     0x07ee
+Greek_omicron                     2031     0x07ef
+Greek_pi                          2032     0x07f0
+Greek_rho                         2033     0x07f1
+Greek_sigma                       2034     0x07f2
+Greek_finalsmallsigma             2035     0x07f3
+Greek_tau                         2036     0x07f4
+Greek_upsilon                     2037     0x07f5
+Greek_phi                         2038     0x07f6
+Greek_chi                         2039     0x07f7
+Greek_psi                         2040     0x07f8
+Greek_omega                       2041     0x07f9
+leftradical                       2209     0x08a1
+topleftradical                    2210     0x08a2
+horizconnector                    2211     0x08a3
+topintegral                       2212     0x08a4
+botintegral                       2213     0x08a5
+vertconnector                     2214     0x08a6
+topleftsqbracket                  2215     0x08a7
+botleftsqbracket                  2216     0x08a8
+toprightsqbracket                 2217     0x08a9
+botrightsqbracket                 2218     0x08aa
+topleftparens                     2219     0x08ab
+botleftparens                     2220     0x08ac
+toprightparens                    2221     0x08ad
+botrightparens                    2222     0x08ae
+leftmiddlecurlybrace              2223     0x08af
+rightmiddlecurlybrace             2224     0x08b0
+topleftsummation                  2225     0x08b1
+botleftsummation                  2226     0x08b2
+topvertsummationconnector         2227     0x08b3
+botvertsummationconnector         2228     0x08b4
+toprightsummation                 2229     0x08b5
+botrightsummation                 2230     0x08b6
+rightmiddlesummation              2231     0x08b7
+.CE
+.CS
+lessthanequal                     2236     0x08bc
+notequal                          2237     0x08bd
+greaterthanequal                  2238     0x08be
+integral                          2239     0x08bf
+therefore                         2240     0x08c0
+variation                         2241     0x08c1
+infinity                          2242     0x08c2
+nabla                             2245     0x08c5
+approximate                       2248     0x08c8
+similarequal                      2249     0x08c9
+ifonlyif                          2253     0x08cd
+implies                           2254     0x08ce
+identical                         2255     0x08cf
+radical                           2262     0x08d6
+includedin                        2266     0x08da
+includes                          2267     0x08db
+intersection                      2268     0x08dc
+union                             2269     0x08dd
+logicaland                        2270     0x08de
+logicalor                         2271     0x08df
+partialderivative                 2287     0x08ef
+function                          2294     0x08f6
+leftarrow                         2299     0x08fb
+uparrow                           2300     0x08fc
+rightarrow                        2301     0x08fd
+downarrow                         2302     0x08fe
+blank                             2527     0x09df
+soliddiamond                      2528     0x09e0
+checkerboard                      2529     0x09e1
+ht                                2530     0x09e2
+ff                                2531     0x09e3
+cr                                2532     0x09e4
+lf                                2533     0x09e5
+nl                                2536     0x09e8
+vt                                2537     0x09e9
+lowrightcorner                    2538     0x09ea
+uprightcorner                     2539     0x09eb
+upleftcorner                      2540     0x09ec
+lowleftcorner                     2541     0x09ed
+crossinglines                     2542     0x09ee
+horizlinescan1                    2543     0x09ef
+horizlinescan3                    2544     0x09f0
+horizlinescan5                    2545     0x09f1
+horizlinescan7                    2546     0x09f2
+horizlinescan9                    2547     0x09f3
+leftt                             2548     0x09f4
+rightt                            2549     0x09f5
+bott                              2550     0x09f6
+topt                              2551     0x09f7
+vertbar                           2552     0x09f8
+emspace                           2721     0x0aa1
+enspace                           2722     0x0aa2
+em3space                          2723     0x0aa3
+em4space                          2724     0x0aa4
+digitspace                        2725     0x0aa5
+punctspace                        2726     0x0aa6
+thinspace                         2727     0x0aa7
+hairspace                         2728     0x0aa8
+emdash                            2729     0x0aa9
+endash                            2730     0x0aaa
+signifblank                       2732     0x0aac
+ellipsis                          2734     0x0aae
+doubbaselinedot                   2735     0x0aaf
+onethird                          2736     0x0ab0
+twothirds                         2737     0x0ab1
+onefifth                          2738     0x0ab2
+twofifths                         2739     0x0ab3
+threefifths                       2740     0x0ab4
+fourfifths                        2741     0x0ab5
+onesixth                          2742     0x0ab6
+fivesixths                        2743     0x0ab7
+careof                            2744     0x0ab8
+figdash                           2747     0x0abb
+leftanglebracket                  2748     0x0abc
+decimalpoint                      2749     0x0abd
+rightanglebracket                 2750     0x0abe
+marker                            2751     0x0abf
+oneeighth                         2755     0x0ac3
+threeeighths                      2756     0x0ac4
+fiveeighths                       2757     0x0ac5
+seveneighths                      2758     0x0ac6
+trademark                         2761     0x0ac9
+signaturemark                     2762     0x0aca
+trademarkincircle                 2763     0x0acb
+leftopentriangle                  2764     0x0acc
+rightopentriangle                 2765     0x0acd
+emopencircle                      2766     0x0ace
+emopenrectangle                   2767     0x0acf
+leftsinglequotemark               2768     0x0ad0
+rightsinglequotemark              2769     0x0ad1
+leftdoublequotemark               2770     0x0ad2
+rightdoublequotemark              2771     0x0ad3
+prescription                      2772     0x0ad4
+minutes                           2774     0x0ad6
+seconds                           2775     0x0ad7
+latincross                        2777     0x0ad9
+hexagram                          2778     0x0ada
+filledrectbullet                  2779     0x0adb
+filledlefttribullet               2780     0x0adc
+filledrighttribullet              2781     0x0add
+emfilledcircle                    2782     0x0ade
+emfilledrect                      2783     0x0adf
+enopencircbullet                  2784     0x0ae0
+enopensquarebullet                2785     0x0ae1
+openrectbullet                    2786     0x0ae2
+opentribulletup                   2787     0x0ae3
+opentribulletdown                 2788     0x0ae4
+openstar                          2789     0x0ae5
+enfilledcircbullet                2790     0x0ae6
+enfilledsqbullet                  2791     0x0ae7
+filledtribulletup                 2792     0x0ae8
+filledtribulletdown               2793     0x0ae9
+leftpointer                       2794     0x0aea
+rightpointer                      2795     0x0aeb
+club                              2796     0x0aec
+diamond                           2797     0x0aed
+heart                             2798     0x0aee
+maltesecross                      2800     0x0af0
+dagger                            2801     0x0af1
+doubledagger                      2802     0x0af2
+checkmark                         2803     0x0af3
+ballotcross                       2804     0x0af4
+musicalsharp                      2805     0x0af5
+musicalflat                       2806     0x0af6
+malesymbol                        2807     0x0af7
+femalesymbol                      2808     0x0af8
+telephone                         2809     0x0af9
+telephonerecorder                 2810     0x0afa
+phonographcopyright               2811     0x0afb
+caret                             2812     0x0afc
+singlelowquotemark                2813     0x0afd
+doublelowquotemark                2814     0x0afe
+cursor                            2815     0x0aff
+leftcaret                         2979     0x0ba3
+rightcaret                        2982     0x0ba6
+downcaret                         2984     0x0ba8
+upcaret                           2985     0x0ba9
+overbar                           3008     0x0bc0
+downtack                          3010     0x0bc2
+upshoe                            3011     0x0bc3
+downstile                         3012     0x0bc4
+underbar                          3014     0x0bc6
+jot                               3018     0x0bca
+quad                              3020     0x0bcc
+uptack                            3022     0x0bce
+circle                            3023     0x0bcf
+upstile                           3027     0x0bd3
+downshoe                          3030     0x0bd6
+rightshoe                         3032     0x0bd8
+leftshoe                          3034     0x0bda
+lefttack                          3036     0x0bdc
+righttack                         3068     0x0bfc
+hebrew_aleph                      3296     0x0ce0
+hebrew_beth                       3297     0x0ce1
+hebrew_gimmel                     3298     0x0ce2
+hebrew_daleth                     3299     0x0ce3
+hebrew_he                         3300     0x0ce4
+hebrew_waw                        3301     0x0ce5
+hebrew_zayin                      3302     0x0ce6
+hebrew_het                        3303     0x0ce7
+hebrew_teth                       3304     0x0ce8
+hebrew_yod                        3305     0x0ce9
+hebrew_finalkaph                  3306     0x0cea
+hebrew_kaph                       3307     0x0ceb
+hebrew_lamed                      3308     0x0cec
+hebrew_finalmem                   3309     0x0ced
+hebrew_mem                        3310     0x0cee
+hebrew_finalnun                   3311     0x0cef
+hebrew_nun                        3312     0x0cf0
+hebrew_samekh                     3313     0x0cf1
+hebrew_ayin                       3314     0x0cf2
+hebrew_finalpe                    3315     0x0cf3
+hebrew_pe                         3316     0x0cf4
+hebrew_finalzadi                  3317     0x0cf5
+hebrew_zadi                       3318     0x0cf6
+hebrew_kuf                        3319     0x0cf7
+hebrew_resh                       3320     0x0cf8
+hebrew_shin                       3321     0x0cf9
+hebrew_taf                        3322     0x0cfa
+BackSpace                        65288     0xff08
+Tab                              65289     0xff09
+Linefeed                         65290     0xff0a
+Clear                            65291     0xff0b
+Return                           65293     0xff0d
+Pause                            65299     0xff13
+Scroll_Lock                      65300     0xff14
+Sys_Req                          65301     0xff15
+Escape                           65307     0xff1b
+Multi_key                        65312     0xff20
+Kanji                            65313     0xff21
+Home                             65360     0xff50
+Left                             65361     0xff51
+Up                               65362     0xff52
+Right                            65363     0xff53
+Down                             65364     0xff54
+Prior                            65365     0xff55
+Next                             65366     0xff56
+End                              65367     0xff57
+Begin                            65368     0xff58
+Win_L                            65371     0xff5b
+Win_R                            65372     0xff5c
+.CE
+.CS
+App                              65373     0xff5d
+Select                           65376     0xff60
+Print                            65377     0xff61
+Execute                          65378     0xff62
+Insert                           65379     0xff63
+Undo                             65381     0xff65
+Redo                             65382     0xff66
+Menu                             65383     0xff67
+Find                             65384     0xff68
+Cancel                           65385     0xff69
+Help                             65386     0xff6a
+Break                            65387     0xff6b
+Hebrew_switch                    65406     0xff7e
+Num_Lock                         65407     0xff7f
+KP_Space                         65408     0xff80
+KP_Tab                           65417     0xff89
+KP_Enter                         65421     0xff8d
+KP_F1                            65425     0xff91
+KP_F2                            65426     0xff92
+KP_F3                            65427     0xff93
+KP_F4                            65428     0xff94
+KP_Multiply                      65450     0xffaa
+KP_Add                           65451     0xffab
+KP_Separator                     65452     0xffac
+KP_Subtract                      65453     0xffad
+KP_Decimal                       65454     0xffae
+KP_Divide                        65455     0xffaf
+KP_0                             65456     0xffb0
+KP_1                             65457     0xffb1
+KP_2                             65458     0xffb2
+KP_3                             65459     0xffb3
+KP_4                             65460     0xffb4
+KP_5                             65461     0xffb5
+KP_6                             65462     0xffb6
+KP_7                             65463     0xffb7
+KP_8                             65464     0xffb8
+KP_9                             65465     0xffb9
+KP_Equal                         65469     0xffbd
+F1                               65470     0xffbe
+F2                               65471     0xffbf
+F3                               65472     0xffc0
+F4                               65473     0xffc1
+F5                               65474     0xffc2
+F6                               65475     0xffc3
+F7                               65476     0xffc4
+F8                               65477     0xffc5
+F9                               65478     0xffc6
+F10                              65479     0xffc7
+L1                               65480     0xffc8
+L2                               65481     0xffc9
+L3                               65482     0xffca
+L4                               65483     0xffcb
+L5                               65484     0xffcc
+L6                               65485     0xffcd
+L7                               65486     0xffce
+L8                               65487     0xffcf
+L9                               65488     0xffd0
+L10                              65489     0xffd1
+R1                               65490     0xffd2
+R2                               65491     0xffd3
+R3                               65492     0xffd4
+R4                               65493     0xffd5
+R5                               65494     0xffd6
+R6                               65495     0xffd7
+R7                               65496     0xffd8
+R8                               65497     0xffd9
+R9                               65498     0xffda
+R10                              65499     0xffdb
+R11                              65500     0xffdc
+R12                              65501     0xffdd
+F33                              65502     0xffde
+R14                              65503     0xffdf
+R15                              65504     0xffe0
+Shift_L                          65505     0xffe1
+Shift_R                          65506     0xffe2
+Control_L                        65507     0xffe3
+Control_R                        65508     0xffe4
+Caps_Lock                        65509     0xffe5
+Shift_Lock                       65510     0xffe6
+Meta_L                           65511     0xffe7
+Meta_R                           65512     0xffe8
+Alt_L                            65513     0xffe9
+Alt_R                            65514     0xffea
+Super_L                          65515     0xffeb
+Super_R                          65516     0xffec
+Hyper_L                          65517     0xffed
+Hyper_R                          65518     0xffee
+Delete                           65535     0xffff
+.CE
+
+.SH "SEE ALSO"
+bind
+
+.SH KEYWORDS
+keysym, bind, binding
diff --git a/raw/mann/lappend.n b/raw/mann/lappend.n
new file mode 100644
index 0000000..c62964a
--- /dev/null
+++ b/raw/mann/lappend.n
@@ -0,0 +1,273 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lappend.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lappend.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lappend n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lappend \- Append list elements onto a variable
+.SH SYNOPSIS
+\fBlappend \fIvarName \fR?\fIvalue value value ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command treats the variable given by \fIvarName\fR as a list
+and appends each of the \fIvalue\fR arguments to that list as a separate
+element, with spaces between elements.
+If \fIvarName\fR doesn't exist, it is created as a list with elements
+given by the \fIvalue\fR arguments.
+\fBLappend\fR is similar to \fBappend\fR except that the \fIvalue\fRs
+are appended as list elements rather than raw text.
+This command provides a relatively efficient way to build up
+large lists.  For example, ``\fBlappend a $b\fR'' is much
+more efficient than ``\fBset a [concat $a [list $b]]\fR'' when
+\fB$a\fR is long.
+
+.SH "SEE ALSO"
+list(n), lindex(n), linsert(n), llength(n), lsort(n), lrange(n)
+
+.SH KEYWORDS
+append, element, list, variable
diff --git a/raw/mann/library.n b/raw/mann/library.n
new file mode 100644
index 0000000..02ad65a
--- /dev/null
+++ b/raw/mann/library.n
@@ -0,0 +1,546 @@
+'\"
+'\" Copyright (c) 1991-1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: library.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: library.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH library n "8.0" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+auto_execok, auto_import, auto_load, auto_mkindex, auto_mkindex_old, auto_qualify, auto_reset, tcl_findLibrary, parray, tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter, tcl_wordBreakBefore \- standard library of Tcl procedures
+.SH SYNOPSIS
+.nf
+\fBauto_execok \fIcmd\fR
+\fBauto_import \fIpattern\fR
+\fBauto_load \fIcmd\fR
+\fBauto_mkindex \fIdir pattern pattern ...\fR
+\fBauto_mkindex_old \fIdir pattern pattern ...\fR
+\fBauto_qualify \fIcommand namespace\fR
+\fBauto_reset\fR
+\fBtcl_findLibrary \fIbasename version patch initScript enVarName varName\fR
+\fBparray \fIarrayName\fR
+.VS
+\fBtcl_endOfWord \fIstr start\fR
+\fBtcl_startOfNextWord \fIstr start\fR
+\fBtcl_startOfPreviousWord \fIstr start\fR
+\fBtcl_wordBreakAfter \fIstr start\fR
+\fBtcl_wordBreakBefore \fIstr start\fR
+.VE
+.BE
+
+.SH INTRODUCTION
+.PP
+Tcl includes a library of Tcl procedures for commonly-needed functions.
+The procedures defined in the Tcl library are generic ones suitable
+for use by many different applications.
+The location of the Tcl library is returned by the \fBinfo library\fR
+command.
+In addition to the Tcl library, each application will normally have
+its own library of support procedures as well;  the location of this
+library is normally given by the value of the \fB$\fIapp\fB_library\fR
+global variable, where \fIapp\fR is the name of the application.
+For example, the location of the Tk library is kept in the variable
+\fB$tk_library\fR.
+.PP
+To access the procedures in the Tcl library, an application should
+source the file \fBinit.tcl\fR in the library, for example with
+the Tcl command
+.CS
+\fBsource [file join [info library] init.tcl]\fR
+.CE
+If the library procedure \fBTcl_Init\fR is invoked from an application's
+\fBTcl_AppInit\fR procedure, this happens automatically.
+The code in \fBinit.tcl\fR will define the \fBunknown\fR procedure
+and arrange for the other procedures to be loaded on-demand using
+the auto-load mechanism defined below.
+
+.SH "COMMAND PROCEDURES"
+.PP
+The following procedures are provided in the Tcl library:
+.TP
+\fBauto_execok \fIcmd\fR
+Determines whether there is an executable file or shell builtin
+by the name \fIcmd\fR.  If so, it returns a list of arguments to be
+passed to \fBexec\fR to execute the executable file or shell builtin
+named by \fIcmd\fR.  If not, it returns an empty string.  This command
+examines the directories in the current search path (given by the PATH
+environment variable) in its search for an executable file named
+\fIcmd\fR.  On Windows platforms, the search is expanded with the same
+directories and file extensions as used by \fBexec\fR. \fBAuto_exec\fR
+remembers information about previous searches in an array named
+\fBauto_execs\fR;  this avoids the path search in future calls for the
+same \fIcmd\fR.  The command \fBauto_reset\fR may be used to force
+\fBauto_execok\fR to forget its cached information.
+.TP
+\fBauto_import \fIpattern\fR
+\fBAuto_import\fR is invoked during \fBnamespace import\fR to see if
+the imported commands specified by \fIpattern\fR reside in an
+autoloaded library.  If so, the commands are loaded so that they will
+be available to the interpreter for creating the import links.  If the
+commands do not reside in an autoloaded library, \fBauto_import\fR
+does nothing.  The pattern matching is performed according to the
+matching rules of \fBnamespace import\fR.
+.TP
+\fBauto_load \fIcmd\fR
+This command attempts to load the definition for a Tcl command named
+\fIcmd\fR.  To do this, it searches an \fIauto-load path\fR, which is
+a list of one or more directories.  The auto-load path is given by the
+global variable \fB$auto_path\fR if it exists.  If there is no
+\fB$auto_path\fR variable, then the TCLLIBPATH environment variable is
+used, if it exists.  Otherwise the auto-load path consists of just the
+Tcl library directory.  Within each directory in the auto-load path
+there must be a file \fBtclIndex\fR that describes one or more
+commands defined in that directory and a script to evaluate to load
+each of the commands.  The \fBtclIndex\fR file should be generated
+with the \fBauto_mkindex\fR command.  If \fIcmd\fR is found in an
+index file, then the appropriate script is evaluated to create the
+command.  The \fBauto_load\fR command returns 1 if \fIcmd\fR was
+successfully created.  The command returns 0 if there was no index
+entry for \fIcmd\fR or if the script didn't actually define \fIcmd\fR
+(e.g. because index information is out of date).  If an error occurs
+while processing the script, then that error is returned.
+\fBAuto_load\fR only reads the index information once and saves it in
+the array \fBauto_index\fR;  future calls to \fBauto_load\fR check for
+\fIcmd\fR in the array rather than re-reading the index files.  The
+cached index information may be deleted with the command
+\fBauto_reset\fR.  This will force the next \fBauto_load\fR command to
+reload the index database from disk.
+.TP
+\fBauto_mkindex \fIdir pattern pattern ...\fR
+Generates an index suitable for use by \fBauto_load\fR.  The command
+searches \fIdir\fR for all files whose names match any of the
+\fIpattern\fR arguments (matching is done with the \fBglob\fR
+command), generates an index of all the Tcl command procedures defined
+in all the matching files, and stores the index information in a file
+named \fBtclIndex\fR in \fIdir\fR. If no pattern is given a pattern of
+\fB*.tcl\fR will be assumed.  For example, the command
+.RS
+.CS
+\fBauto_mkindex foo *.tcl\fR
+.CE
+.LP
+will read all the \fB.tcl\fR files in subdirectory \fBfoo\fR and
+generate a new index file \fBfoo/tclIndex\fR.
+.PP
+\fBAuto_mkindex\fR parses the Tcl scripts by sourcing them into a
+slave interpreter and monitoring the proc and namespace commands that
+are executed.  Extensions can use the (undocumented)
+auto_mkindex_parser package to register other commands that can
+contribute to the auto_load index. You will have to read through
+auto.tcl to see how this works.
+.PP
+\fBAuto_mkindex_old\fR parses the Tcl scripts in a relatively
+unsophisticated way:  if any line contains the word \fBproc\fR
+as its first characters then it is assumed to be a procedure
+definition and the next word of the line is taken as the
+procedure's name.
+Procedure definitions that don't appear in this way (e.g. they
+have spaces before the \fBproc\fR) will not be indexed.  If your 
+script contains "dangerous" code, such as global initialization
+code or procedure names with special characters like \fB$\fR,
+\fB*\fR, \fB[\fR or \fB]\fR, you are safer using auto_mkindex_old.
+.RE
+.TP
+\fBauto_reset\fR
+Destroys all the information cached by \fBauto_execok\fR and
+\fBauto_load\fR.  This information will be re-read from disk the next
+time it is needed.  \fBAuto_reset\fR also deletes any procedures
+listed in the auto-load index, so that fresh copies of them will be
+loaded the next time that they're used.
+.TP
+\fBauto_qualify \fIcommand namespace\fR
+Computes a list of fully qualified names for \fIcommand\fR.  This list
+mirrors the path a standard Tcl interpreter follows for command
+lookups:  first it looks for the command in the current namespace, and
+then in the global namespace.  Accordingly, if \fIcommand\fR is
+relative and \fInamespace\fR is not \fB::\fR, the list returned has
+two elements:  \fIcommand\fR scoped by \fInamespace\fR, as if it were
+a command in the \fInamespace\fR namespace; and \fIcommand\fR as if it
+were a command in the global namespace.  Otherwise, if either
+\fIcommand\fR is absolute (it begins with \fB::\fR), or
+\fInamespace\fR is \fB::\fR, the list contains only \fIcommand\fR as
+if it were a command in the global namespace.
+.RS
+.PP
+\fBAuto_qualify\fR is used by the auto-loading facilities in Tcl, both
+for producing auto-loading indexes such as \fIpkgIndex.tcl\fR, and for
+performing the actual auto-loading of functions at runtime.
+.RE
+.TP
+\fBtcl_findLibrary \fIbasename version patch initScript enVarName varName\fR
+This is a standard search procedure for use by extensions during
+their initialization.  They call this procedure to look for their
+script library in several standard directories.
+The last component of the name of the library directory is 
+normally \fIbasenameversion\fP
+(e.g., tk8.0), but it might be "library" when in the build hierarchies.
+The \fIinitScript\fR file will be sourced into the interpreter
+once it is found.  The directory in which this file is found is
+stored into the global variable \fIvarName\fP.
+If this variable is already defined (e.g., by C code during
+application initialization) then no searching is done.
+Otherwise the search looks in these directories:
+the directory named by the environment variable \fIenVarName\fP;
+relative to the Tcl library directory;
+relative to the executable file in the standard installation
+bin or bin/\fIarch\fP directory;
+relative to the executable file in the current build tree;
+relative to the executable file in a parallel build tree.
+.TP
+\fBparray \fIarrayName\fR
+Prints on standard output the names and values of all the elements
+in the array \fIarrayName\fR.
+\fBArrayName\fR must be an array accessible to the caller of \fBparray\fR.
+It may be either local or global.
+.TP
+\fBtcl_endOfWord \fIstr start\fR
+.VS
+Returns the index of the first end-of-word location that occurs after
+a starting index \fIstart\fR in the string \fIstr\fR.  An end-of-word
+location is defined to be the first non-word character following the
+first word character after the starting point.  Returns -1 if there
+are no more end-of-word locations after the starting point.  See the
+description of \fBtcl_wordchars\fR and \fBtcl_nonwordchars\fR below
+for more details on how Tcl determines which characters are word
+characters.
+.TP
+\fBtcl_startOfNextWord \fIstr start\fR
+Returns the index of the first start-of-word location that occurs
+after a starting index \fIstart\fR in the string \fIstr\fR.  A
+start-of-word location is defined to be the first word character
+following a non-word character.  Returns \-1 if there are no more
+start-of-word locations after the starting point.
+.TP
+\fBtcl_startOfPreviousWord \fIstr start\fR
+Returns the index of the first start-of-word location that occurs
+before a starting index \fIstart\fR in the string \fIstr\fR.  Returns
+\-1 if there are no more start-of-word locations before the starting
+point.
+.TP
+\fBtcl_wordBreakAfter \fIstr start\fR
+Returns the index of the first word boundary after the starting index
+\fIstart\fR in the string \fIstr\fR.  Returns \-1 if there are no more
+boundaries after the starting point in the given string.  The index
+returned refers to the second character of the pair that comprises a
+boundary.
+.TP
+\fBtcl_wordBreakBefore \fIstr start\fR
+Returns the index of the first word boundary before the starting index
+\fIstart\fR in the string \fIstr\fR.  Returns \-1 if there are no more
+boundaries before the starting point in the given string.  The index
+returned refers to the second character of the pair that comprises a
+boundary.
+.VE
+
+.SH "VARIABLES"
+.PP
+The following global variables are defined or used by the procedures in
+the Tcl library:
+.TP
+\fBauto_execs\fR
+Used by \fBauto_execok\fR to record information about whether
+particular commands exist as executable files.
+.TP
+\fBauto_index\fR
+Used by \fBauto_load\fR to save the index information read from
+disk.
+.TP
+\fBauto_noexec\fR
+If set to any value, then \fBunknown\fR will not attempt to auto-exec
+any commands.
+.TP
+\fBauto_noload\fR
+If set to any value, then \fBunknown\fR will not attempt to auto-load
+any commands.
+.TP
+\fBauto_path\fR
+If set, then it must contain a valid Tcl list giving directories to
+search during auto-load operations.
+This variable is initialized during startup to contain, in order:
+the directories listed in the TCLLIBPATH environment variable,
+the directory named by the $tcl_library variable,
+the parent directory of $tcl_library,
+the directories listed in the $tcl_pkgPath variable.
+.TP
+\fBenv(TCL_LIBRARY)\fR
+If set, then it specifies the location of the directory containing
+library scripts (the value of this variable will be
+assigned to the \fBtcl_library\fR variable and therefore returned by
+the command \fBinfo library\fR).  If this variable isn't set then
+a default value is used.
+.TP
+\fBenv(TCLLIBPATH)\fR
+If set, then it must contain a valid Tcl list giving directories to
+search during auto-load operations.  Directories must be specified in 
+Tcl format, using "/" as the path separator, regardless of platform.
+This variable is only used when initializing the \fBauto_path\fR variable.
+.TP
+\fBtcl_nonwordchars\fR
+.VS
+This variable contains a regular expression that is used by routines
+like \fBtcl_endOfWord\fR to identify whether a character is part of a
+word or not.  If the pattern matches a character, the character is
+considered to be a non-word character.  On Windows platforms, spaces,
+tabs, and newlines are considered non-word characters.  Under Unix,
+everything but numbers, letters and underscores are considered
+non-word characters.
+.TP
+\fBtcl_wordchars\fR
+This variable contains a regular expression that is used by routines
+like \fBtcl_endOfWord\fR to identify whether a character is part of a
+word or not.  If the pattern matches a character, the character is
+considered to be a word character.  On Windows platforms, words are
+comprised of any character that is not a space, tab, or newline.  Under
+Unix, words are comprised of numbers, letters or underscores.
+.VE
+.TP
+\fBunknown_pending\fR
+Used by \fBunknown\fR to record the command(s) for which it is
+searching.
+It is used to detect errors where \fBunknown\fR recurses on itself
+infinitely.
+The variable is unset before \fBunknown\fR returns.
+
+.SH "SEE ALSO"
+info(n), re_syntax(n)
+
+.SH KEYWORDS
+auto-exec, auto-load, library, unknown, word, whitespace 
diff --git a/raw/mann/lindex.n b/raw/mann/lindex.n
new file mode 100644
index 0000000..957a4c7
--- /dev/null
+++ b/raw/mann/lindex.n
@@ -0,0 +1,275 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lindex.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lindex.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lindex n 8.2 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lindex \- Retrieve an element from a list
+.SH SYNOPSIS
+\fBlindex \fIlist index\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command treats \fIlist\fR as a Tcl list and returns the
+\fIindex\fR'th element from it (0 refers to the first element of the list).
+In extracting the element, \fIlindex\fR observes the same rules
+concerning braces and quotes and backslashes as the Tcl command
+interpreter; however, variable
+substitution and command substitution do not occur.
+If \fIindex\fR is negative or greater than or equal to the number
+of elements in \fIvalue\fR, then an empty
+string is returned.
+If \fIindex\fR has the value \fBend\fR, it refers to the last element
+in the list, and \fBend\-\fIinteger\fR refers to the last element in
+the list minus the specified integer offset.
+
+.SH "SEE ALSO"
+list(n), lappend(n), linsert(n), llength(n), lsearch(n), lsort(n),
+lrange(n), lreplace(n)
+
+.SH KEYWORDS
+element, index, list
diff --git a/raw/mann/linsert.n b/raw/mann/linsert.n
new file mode 100644
index 0000000..165417e
--- /dev/null
+++ b/raw/mann/linsert.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: linsert.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: linsert.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH linsert n 8.2 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+linsert \- Insert elements into a list
+.SH SYNOPSIS
+\fBlinsert \fIlist index element \fR?\fIelement element ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command produces a new list from \fIlist\fR by inserting all of the
+\fIelement\fR arguments just before the \fIindex\fRth element of
+\fIlist\fR.  Each \fIelement\fR argument will become a separate element of
+the new list.  If \fIindex\fR is less than or equal to zero, then the new
+elements are inserted at the beginning of the list.  If \fIindex\fR has the
+value \fBend\fR, or if it is greater than or equal to the number of
+elements in the list, then the new elements are appended to the list.
+\fBend\-\fIinteger\fR refers to the last element in the list minus the
+specified integer offset.
+
+.SH "SEE ALSO"
+list(n), lappend(n), llength(n)
+
+.SH KEYWORDS
+element, insert, list
diff --git a/raw/mann/list.n b/raw/mann/list.n
new file mode 100644
index 0000000..b6d2801
--- /dev/null
+++ b/raw/mann/list.n
@@ -0,0 +1,284 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: list.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: list.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH list n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+list \- Create a list
+.SH SYNOPSIS
+\fBlist \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command returns a list comprised of all the \fIarg\fRs,
+or an empty string if no \fIarg\fRs are specified.
+Braces and backslashes get added as necessary, so that the \fBlindex\fR command
+may be used on the result to re-extract the original arguments, and also
+so that \fBeval\fR may be used to execute the resulting list, with
+\fIarg1\fR comprising the command's name and the other \fIarg\fRs comprising
+its arguments.  \fBList\fR produces slightly different results than
+\fBconcat\fR:  \fBconcat\fR removes one level of grouping before forming
+the list, while \fBlist\fR works directly from the original arguments.
+For example, the command
+.CS
+\fBlist a b {c d e} {f {g h}}\fR
+.CE
+will return
+.CS
+\fBa b {c d e} {f {g h}}\fR
+.CE
+while \fBconcat\fR with the same arguments will return
+.CS
+\fBa b c d e f {g h}\fR
+.CE
+
+.SH "SEE ALSO"
+lappend(n), lindex(n), linsert(n), llength(n), lsearch(n), lsort(n),
+lrange(n), lreplace(n)
+
+.SH KEYWORDS
+element, list
diff --git a/raw/mann/llength.n b/raw/mann/llength.n
new file mode 100644
index 0000000..25d2a91
--- /dev/null
+++ b/raw/mann/llength.n
@@ -0,0 +1,264 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: llength.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: llength.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH llength n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+llength \- Count the number of elements in a list
+.SH SYNOPSIS
+\fBllength \fIlist\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Treats \fIlist\fR as a list and returns a decimal string giving
+the number of elements in it.
+
+.SH "SEE ALSO"
+list(n), lindex(n), lrange(n)
+
+.SH KEYWORDS
+element, list, length
diff --git a/raw/mann/load.n b/raw/mann/load.n
new file mode 100644
index 0000000..aff61dd
--- /dev/null
+++ b/raw/mann/load.n
@@ -0,0 +1,370 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: load.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: load.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH load n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+load \- Load machine code and initialize new commands.
+.SH SYNOPSIS
+\fBload \fIfileName\fR
+.br
+\fBload \fIfileName packageName\fR
+.br
+\fBload \fIfileName packageName interp\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command loads binary code from a file into the
+application's address space and calls an initialization procedure
+in the package to incorporate it into an interpreter.  \fIfileName\fR
+is the name of the file containing the code;  its exact form varies
+from system to system but on most systems it is a shared library,
+such as a \fB.so\fR file under Solaris or a DLL under Windows.
+\fIpackageName\fR is the name of the package, and is used to
+compute the name of an initialization procedure.
+\fIinterp\fR is the path name of the interpreter into which to load
+the package (see the \fBinterp\fR manual entry for details);
+if \fIinterp\fR is omitted, it defaults to the
+interpreter in which the \fBload\fR command was invoked.
+.PP
+Once the file has been loaded into the application's address space,
+one of two initialization procedures will be invoked in the new code.
+Typically the initialization procedure will add new commands to a
+Tcl interpreter.
+The name of the initialization procedure is determined by
+\fIpackageName\fR and whether or not the target interpreter
+is a safe one.  For normal interpreters the name of the initialization
+procedure will have the form \fIpkg\fB_Init\fR, where \fIpkg\fR
+is the same as \fIpackageName\fR except that the first letter is
+converted to upper case and all other letters
+are converted to lower case.  For example, if \fIpackageName\fR is
+\fBfoo\fR or \fBFOo\fR, the initialization procedure's name will
+be \fBFoo_Init\fR.
+.PP
+If the target interpreter is a safe interpreter, then the name
+of the initialization procedure will be \fIpkg\fB_SafeInit\fR
+instead of \fIpkg\fB_Init\fR.
+The \fIpkg\fB_SafeInit\fR function should be written carefully, so that it
+initializes the safe interpreter only with partial functionality provided
+by the package that is safe for use by untrusted code. For more information
+on Safe\-Tcl, see the \fBsafe\fR manual entry.
+.PP
+The initialization procedure must match the following prototype:
+.CS
+typedef int Tcl_PackageInitProc(Tcl_Interp *\fIinterp\fR);
+.CE
+The \fIinterp\fR argument identifies the interpreter in which the
+package is to be loaded.  The initialization procedure must return
+\fBTCL_OK\fR or \fBTCL_ERROR\fR to indicate whether or not it completed
+successfully;  in the event of an error it should set the interpreter's result
+to point to an error message.  The result of the \fBload\fR command
+will be the result returned by the initialization procedure.
+.PP
+The actual loading of a file will only be done once for each \fIfileName\fR
+in an application.  If a given \fIfileName\fR is loaded into multiple
+interpreters, then the first \fBload\fR will load the code and
+call the initialization procedure;  subsequent \fBload\fRs will
+call the initialization procedure without loading the code again.
+It is not possible to unload or reload a package.
+.PP
+The \fBload\fR command also supports packages that are statically
+linked with the application, if those packages have been registered
+by calling the \fBTcl_StaticPackage\fR procedure.
+If \fIfileName\fR is an empty string, then \fIpackageName\fR must
+be specified.
+.PP
+If \fIpackageName\fR is omitted or specified as an empty string,
+Tcl tries to guess the name of the package.
+This may be done differently on different platforms.
+The default guess, which is used on most UNIX platforms, is to
+take the last element of \fIfileName\fR, strip off the first
+three characters if they are \fBlib\fR, and use any following
+.VS
+alphabetic and underline characters as the module name.
+.VE
+For example, the command \fBload libxyz4.2.so\fR uses the module
+name \fBxyz\fR and the command \fBload bin/last.so {}\fR uses the
+module name \fBlast\fR.
+.VS "" br
+.PP
+If \fIfileName\fR is an empty string, then \fIpackageName\fR must
+be specified.
+The \fBload\fR command first searches for a statically loaded package
+(one that has been registered by calling the \fBTcl_StaticPackage\fR
+procedure) by that name; if one is found, it is used.
+Otherwise, the \fBload\fR command searches for a dynamically loaded
+package by that name, and uses it if it is found.  If several
+different files have been \fBload\fRed with different versions of
+the package, Tcl picks the file that was loaded first.
+.VE
+
+.SH "PORTABILITY ISSUES"
+.TP
+\fBWindows\fR\0\0\0\0\0
+.
+When a load fails with "library not found" error, it is also possible
+that a dependent library was not found.  To see the dependent libraries,
+type ``dumpbin -imports <dllname>'' in a DOS console to see what the
+library must import.
+When loading a DLL in the current directory, Windows will ignore ``./'' as
+a path specifier and use a search heuristic to find the DLL instead.
+To avoid this, load the DLL with
+.CS
+    load [file join [pwd] mylib.DLL]
+.CE
+
+.SH BUGS
+.PP
+If the same file is \fBload\fRed by different \fIfileName\fRs, it will
+be loaded into the process's address space multiple times.  The
+behavior of this varies from system to system (some systems may
+detect the redundant loads, others may not).
+
+.SH "SEE ALSO"
+\fBinfo sharedlibextension\fR, Tcl_StaticPackage(3), safe(n)
+
+.SH KEYWORDS
+binary code, loading, safe interpreter, shared library
diff --git a/raw/mann/loadTk.n b/raw/mann/loadTk.n
new file mode 100644
index 0000000..6a3e38b
--- /dev/null
+++ b/raw/mann/loadTk.n
@@ -0,0 +1,311 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: loadTk.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: loadTk.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "Safe Tk" n 8.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+loadTk \- Load Tk into a safe interpreter.
+.SH SYNOPSIS
+\fB::safe::loadTk \fIslave\fR ?\fB\-use\fR \fIwindowId\fR? ?\fB\-display\fR \fIdisplayName\fR? 
+.BE
+
+Safe Tk is based on Safe Tcl, which provides a mechanism 
+that allows restricted and mediated
+access to auto-loading and packages for safe interpreters.
+Safe Tk adds the ability to configure the interpreter
+for safe Tk operations and load Tk into safe 
+interpreters.
+
+.SH DESCRIPTION
+.PP
+The \fB::safe::loadTk\fR command initializes the required data structures
+in the named safe interpreter and then loads Tk into it.
+The command returns the name of the safe interpreter.
+If \fB\-use\fR is specified, the window identified by the specified system
+dependent identifier \fIwindowId\fR is used to contain the ``.''
+window of the safe interpreter; it can be any valid id, eventually 
+referencing a window belonging to another application. As a convenience,
+if the window you plan to use is a Tk Window of the application you
+can use the window name (eg: \fB.x.y\fR) instead of its window Id 
+(\fB[winfo id .x.y]\fR).
+When \fB\-use\fR is not specified,
+a new toplevel window is created for the ``.'' window of
+the safe interpreter. On X11 if you want the embedded window
+to use another display than the default one, specify it with
+\fB\-display\fR.
+See the \fBSECURITY ISSUES\fR section below for implementation details.
+
+.SH "SECURITY ISSUES"
+.PP
+Please read the \fBsafe\fR manual page for Tcl to learn about the basic
+security considerations for Safe Tcl.
+.PP
+\fB::safe::loadTk\fR adds the value of \fBtk_library\fR taken from the master
+interpreter to the virtual access path of the safe interpreter so that
+auto-loading will work in the safe interpreter.
+.PP
+.PP
+Tk initialization is now safe with respect to not trusting
+the slave's state for startup. \fB::safe::loadTk\fR
+registers the slave's name so
+when the Tk initialization (\fBTk_SafeInit\fR) is called
+and in turn calls the master's \fB::safe::InitTk\fR it will
+return the desired \fBargv\fR equivalent (\fB\-use\fR 
+\fIwindowId\fR, correct \fB\-display\fR, etc...).
+.PP
+When \fB\-use\fR is not used, the new toplevel created is specially
+decorated so the user is always aware that the user interface presented comes
+from a potentially unsafe code and can easily delete the corresponding
+interpreter.
+.PP
+On X11, conflicting \fB\-use\fR and \fB\-display\fR are likely
+to generate a fatal X error.
+
+.SH "SEE ALSO"
+safe(n), interp(n), library(n), load(n), package(n), source(n), unknown(n)
+ 
+.SH KEYWORDS
+alias, auto\-loading, auto_mkindex, load, master interpreter, safe
+interpreter, slave interpreter, source
diff --git a/raw/mann/lower.n b/raw/mann/lower.n
new file mode 100644
index 0000000..6daa0f7
--- /dev/null
+++ b/raw/mann/lower.n
@@ -0,0 +1,273 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lower.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lower.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lower n 3.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lower \- Change a window's position in the stacking order
+.SH SYNOPSIS
+\fBlower \fIwindow \fR?\fIbelowThis\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+If the \fIbelowThis\fR argument is omitted then the command lowers
+\fIwindow\fR so that it is below all of its siblings in the stacking
+order (it will be obscured by any siblings that overlap it and
+will not obscure any siblings).
+If \fIbelowThis\fR is specified then it must be the path name of
+a window that is either a sibling of \fIwindow\fR or the descendant
+of a sibling of \fIwindow\fR.
+In this case the \fBlower\fR command will insert
+\fIwindow\fR into the stacking order just below \fIbelowThis\fR
+(or the ancestor of \fIbelowThis\fR that is a sibling of \fIwindow\fR);
+this could end up either raising or lowering \fIwindow\fR.
+
+.SH "SEE ALSO"
+raise
+
+.SH KEYWORDS
+lower, obscure, stacking order
diff --git a/raw/mann/lrange.n b/raw/mann/lrange.n
new file mode 100644
index 0000000..c9e23b5
--- /dev/null
+++ b/raw/mann/lrange.n
@@ -0,0 +1,277 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lrange.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lrange.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lrange n 7.4 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lrange \- Return one or more adjacent elements from a list
+.SH SYNOPSIS
+\fBlrange \fIlist first last\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+\fIList\fR must be a valid Tcl list.  This command will
+return a new list consisting of elements
+\fIfirst\fR through \fIlast\fR, inclusive.
+\fIFirst\fR or \fIlast\fR
+may be \fBend\fR (or any abbreviation of it) to refer to the last
+element of the list.
+If \fIfirst\fR is less than zero, it is treated as if it were zero.
+If \fIlast\fR is greater than or equal to the number of elements
+in the list, then it is treated as if it were \fBend\fR.
+If \fIfirst\fR is greater than \fIlast\fR then an empty string
+is returned.
+Note: ``\fBlrange \fIlist first first\fR'' does not always produce the
+same result as ``\fBlindex \fIlist first\fR'' (although it often does
+for simple fields that aren't enclosed in braces); it does, however,
+produce exactly the same results as ``\fBlist [lindex \fIlist first\fB]\fR''
+
+.SH "SEE ALSO"
+lappend(n), lindex(n), linsert(n), list(n), llength(n), lreplace(n)
+
+.SH KEYWORDS
+element, list, range, sublist
diff --git a/raw/mann/lreplace.n b/raw/mann/lreplace.n
new file mode 100644
index 0000000..bf40fb2
--- /dev/null
+++ b/raw/mann/lreplace.n
@@ -0,0 +1,286 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lreplace.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lreplace.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lreplace n 7.4 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lreplace \- Replace elements in a list with new elements
+.SH SYNOPSIS
+\fBlreplace \fIlist first last \fR?\fIelement element ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBlreplace\fR returns a new list formed by replacing one or more elements of
+\fIlist\fR with the \fIelement\fR arguments.
+\fIfirst\fR and \fIlast\fR specify the first and last index of the
+range of elements to replace.  0 refers to the first element of the
+list, and \fBend\fR (or any abbreviation of it) may be used to refer
+to the last element of the list.  If \fIlist\fR is empty, then
+\fIfirst\fR and \fIlast\fR are ignored.
+
+If \fIfirst\fR is less than zero, it is considered to refer to the
+first element of the list.  For non-empty lists, the element indicated
+by \fIfirst\fR must exist.
+
+If \fIlast\fR is less than zero but greater than \fIfirst\fR, then any
+specified elements will be prepended to the list.  If \fIlast\fR is
+less than \fIfirst\fR then no elements are deleted; the new elements
+are simply inserted before \fIfirst\fR.
+
+The \fIelement\fR arguments specify zero or more new arguments to
+be added to the list in place of those that were deleted.
+Each \fIelement\fR argument will become a separate element of
+the list.  If no \fIelement\fR arguments are specified, then the elements
+between \fIfirst\fR and \fIlast\fR are simply deleted.  If \fIlist\fR
+is empty, any \fIelement\fR arguments are added to the end of the list.
+
+.SH "SEE ALSO"
+lappend(n), lindex(n), linsert(n), list(n), llength(n), lrange(n),
+lsearch(n), lsort(n)
+
+.SH KEYWORDS
+element, list, replace
diff --git a/raw/mann/lsearch.n b/raw/mann/lsearch.n
new file mode 100644
index 0000000..3dd915d
--- /dev/null
+++ b/raw/mann/lsearch.n
@@ -0,0 +1,281 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lsearch.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lsearch.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lsearch n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lsearch \- See if a list contains a particular element
+.SH SYNOPSIS
+\fBlsearch \fR?\fImode\fR? \fIlist pattern\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command searches the elements of \fIlist\fR to see if one
+of them matches \fIpattern\fR.
+If so, the command returns the index of the first matching
+element.
+If not, the command returns \fB\-1\fR.
+The \fImode\fR argument indicates how the elements of the list are to
+be matched against \fIpattern\fR and it must have one of the following
+values:
+.TP
+\fB\-exact\fR
+The list element must contain exactly the same string as \fIpattern\fR.
+.TP
+\fB\-glob\fR
+\fIPattern\fR is a glob-style pattern which is matched against each list
+element using the same rules as the \fBstring match\fR command.
+.TP
+\fB\-regexp\fR
+\fIPattern\fR is treated as a regular expression and matched against
+each list element using the rules described in the \fBre_syntax\fR
+reference page.
+.PP
+If \fImode\fR is omitted then it defaults to \fB\-glob\fR.
+
+.SH KEYWORDS
+list, match, pattern, regular expression, search, string
diff --git a/raw/mann/lsort.n b/raw/mann/lsort.n
new file mode 100644
index 0000000..548b88b
--- /dev/null
+++ b/raw/mann/lsort.n
@@ -0,0 +1,426 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\" Copyright (c) 1999 Scriptics Corporation
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lsort.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lsort.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lsort n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lsort \- Sort the elements of a list
+.SH SYNOPSIS
+\fBlsort \fR?\fIoptions\fR? \fIlist\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command sorts the elements of \fIlist\fR, returning a new
+list in sorted order.  The implementation of the \fBlsort\fR command
+uses the merge\-sort algorithm which is a stable sort that has O(n log
+n) performance characteristics.
+.PP
+By default ASCII sorting is used with the result returned in
+increasing order.  However, any of the following options may be
+specified before \fIlist\fR to control the sorting process (unique
+abbreviations are accepted):
+.TP 20
+\fB\-ascii\fR
+Use string comparison with ASCII collation order.  This is the default.
+.TP 20
+\fB\-dictionary\fR
+Use dictionary-style comparison.  This is the same as \fB\-ascii\fR
+except (a) case is ignored except as a tie-breaker and (b) if two
+strings contain embedded numbers, the numbers compare as integers,
+not characters.  For example, in \fB\-dictionary\fR mode, \fBbigBoy\fR
+sorts between \fBbigbang\fR and \fBbigboy\fR, and \fBx10y\fR
+sorts between \fBx9y\fR and \fBx11y\fR.
+.TP 20
+\fB\-integer\fR
+Convert list elements to integers and use integer comparison.
+.TP 20
+\fB\-real\fR
+Convert list elements to floating-point values and use floating comparison.
+.TP 20
+\fB\-command\0\fIcommand\fR
+Use \fIcommand\fR as a comparison command.
+To compare two elements, evaluate a Tcl script consisting of
+\fIcommand\fR with the two elements appended as additional
+arguments.  The script should return an integer less than,
+equal to, or greater than zero if the first element is to
+be considered less than, equal to, or greater than the second,
+respectively.
+.TP 20
+\fB\-increasing\fR
+Sort the list in increasing order (``smallest'' items first).
+This is the default.
+.TP 20
+\fB\-decreasing\fR
+Sort the list in decreasing order (``largest'' items first).
+.TP 20
+\fB\-index\0\fIindex\fR
+If this option is specified, each of the elements of \fIlist\fR must
+itself be a proper Tcl sublist.  Instead of sorting based on whole
+sublists, \fBlsort\fR will extract the \fIindex\fR'th element from
+each sublist and sort based on the given element.  The keyword
+\fBend\fP is allowed for the \fIindex\fP to sort on the last sublist
+element,
+.VS 8.3.4
+and \fBend-\fIindex\fR sorts on a sublist element offset from
+the end.
+.VE
+For example,
+.RS
+.CS
+lsort -integer -index 1 {{First 24} {Second 18} {Third 30}}
+.CE
+returns \fB{Second 18} {First 24} {Third 30}\fR, and
+.VS 8.3.4
+'\"
+'\" This example is from the test suite!
+'\"
+.CS
+lsort -index end-1 {{a 1 e i} {b 2 3 f g} {c 4 5 6 d h}}
+.CE
+returns \fB{c 4 5 6 d h} {a 1 e i} {b 2 3 f g}\fR.
+.VE
+This option is much more efficient than using \fB\-command\fR
+to achieve the same effect.
+.RE
+.TP 20
+\fB\-unique\fR
+If this option is specified, then only the last set of duplicate
+elements found in the list will be retained.  Note that duplicates are
+determined relative to the comparison used in the sort.  Thus if 
+\fI-index 0\fR is used, \fB{1 a}\fR and \fB{1 b}\fR would be
+considered duplicates and only the second element, \fB{1 b}\fR, would
+be retained.
+
+.SH "NOTES"
+.PP
+The options to \fBlsort\fR only control what sort of comparison is
+used, and do not necessarily constrain what the values themselves
+actually are.  This distinction is only noticeable when the list to be
+sorted has fewer than two elements.
+.PP
+The \fBlsort\fR command is reentrant, meaning it is safe to use as
+part of the implementation of a command used in the \fB\-command\fR
+option.
+
+.SH "EXAMPLES"
+
+.PP
+Sorting a list using ASCII sorting:
+.CS
+% lsort {a10 B2 b1 a1 a2}
+B2 a1 a10 a2 b1
+.CE
+
+.PP
+Sorting a list using Dictionary sorting:
+.CS
+% lsort -dictionary {a10 B2 b1 a1 a2}
+a1 a2 a10 b1 B2
+.CE
+
+.PP
+Sorting lists of integers:
+.CS
+% lsort -integer {5 3 1 2 11 4}
+1 2 3 4 5 11
+% lsort -integer {1 2 0x5 7 0 4 -1}
+-1 0 1 2 4 0x5 7
+.CE
+
+.PP
+Sorting lists of floating-point numbers:
+.CS
+% lsort -real {5 3 1 2 11 4}
+1 2 3 4 5 11
+% lsort -real {.5 0.07e1 0.4 6e-1}
+0.4 .5 6e-1 0.07e1
+.CE
+
+.PP
+Sorting using indices:
+.CS
+% # Note the space character before the c
+% lsort {{a 5} { c 3} {b 4} {e 1} {d 2}}
+{ c 3} {a 5} {b 4} {d 2} {e 1}
+% lsort -index 0 {{a 5} { c 3} {b 4} {e 1} {d 2}}
+{a 5} {b 4} { c 3} {d 2} {e 1}
+% lsort -index 1 {{a 5} { c 3} {b 4} {e 1} {d 2}}
+{e 1} {d 2} { c 3} {b 4} {a 5}
+.CE
+
+.PP
+Stripping duplicate values using sorting:
+.CS
+% lsort -unique {a b c a b c a b c}
+a b c
+.CE
+
+.PP
+More complex sorting using a comparison function:
+.CS
+% proc compare {a b} {
+    set a0 [lindex $a 0]
+    set b0 [lindex $b 0]
+    if {$a0 < $b0} {
+        return -1
+    } elseif {$a0 > $b0} {
+        return 1
+    }
+    return [string compare [lindex $a 1] [lindex $b 1]]
+}
+% lsort -command compare \\
+        {{3 apple} {0x2 carrot} {1 dingo} {2 banana}}
+{1 dingo} {2 banana} {0x2 carrot} {3 apple}
+.CE
+
+.SH "SEE ALSO"
+lappend(n), lindex(n), linsert(n), list(n), llength(n), lrange(n),
+lreplace(n), lsearch(n)
+
+.SH KEYWORDS
+element, list, order, sort
diff --git a/raw/mann/memory.n b/raw/mann/memory.n
new file mode 100644
index 0000000..e2d3e84
--- /dev/null
+++ b/raw/mann/memory.n
@@ -0,0 +1,281 @@
+.\"
+.\" Memory.man
+.\"
+.\" Extended Tcl memory leak locator.
+.\"----------------------------------------------------------------------------
+.\" Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans.
+.\"
+.\" Permission to use, copy, modify, and distribute this software and its
+.\" documentation for any purpose and without fee is hereby granted, provided
+.\" that the above copyright notice appear in all copies.  Karl Lehenbauer and
+.\" Mark Diekhans make no representations about the suitability of this
+.\" software for any purpose.  It is provided "as is" without express or
+.\" implied warranty.
+.\"----------------------------------------------------------------------------
+.\" $Id: memory.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+.\"----------------------------------------------------------------------------
+.\"
+.TH "Memory" TCL "" "Tcl"
+.BS
+.SH NAME
+ckalloc, memory, ckfree, Tcl_DisplayMemory, Tcl_InitMemory, Tcl_ValidateAllMemory - Validated memory allocation interface.
+.SH SYNOPSIS
+.nf
+.B memory \fBinfo\fR
+
+.B memory \fBtrace\fR [\fBon|off\fR]
+
+.B memory \fBvalidate\fR [\fBon|off\fR]
+
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+
+.B memory \fBdisplay\fR \fIfile\fR
+
+.sp 2
+.ft CW
+#include <tcl.h>
+.sp
+char *
+ckalloc (unsigned size)
+.sp
+void
+ckfree (char *ptr)
+.sp
+int
+Tcl_DumpActiveMemory (char *fileName);
+.sp
+void
+Tcl_ValidateAllMemory (char *file,
+                       int   line)
+
+void
+Tcl_InitMemory (interp)
+.ft R
+'
+.SH ARGUMENTS
+.AS Tcl_Interp *fileName
+.AP uint size in
+
+.AP char *ptr in
+.AP Tcl_Interp *interp in
+A pointer to the Tcl interpreter.
+.AP char *file in
+The filename of the caller of Tcl_ValidateAllMemory.
+.AP int line in
+The line number of the caller of Tcl_ValidateAllMemory.
+.AP char *fileName in
+File to display list of active memory.
+.BE
+
+.SH DESCRIPTION
+.SS ckalloc
+.PP
+Thi macro allocates memory, in the same manner as \fBmalloc\fR, with the
+following differences: One, \fBckalloc\fR checks the value returned from
+\fBmalloc\fR (it calls \fBmalloc\fR for you) and panics if the allocation
+request fails.  Two, if enabled at compile time, a version of \fBckalloc\fR
+with special memory debugging capabilities replaces the normal version of
+\fBckalloc\fR, which aids in detecting memory overwrites and leaks (repeated
+allocations not matched by corresponding frees).
+.PP
+Parameters:
+.RS 2
+\fBo \fIsize\fR - The size of the memory block to be allocated.
+.RE
+.PP
+Returns:
+.RS 2
+A pointer to the allocated memory block.
+.RE
+'
+.SS ckfree
+.PP
+This macro frees memory allocated by \fBckalloc\fR.  Like \fBckalloc\fR,
+when memory debugging is enabled, \fBckfree\fR has enhanced capabilities
+for detecting memory overwrites and leaks.
+.PP
+It is very important that you use \fBckalloc\fR when you need to allocate
+memory, and that you use \fBckfree\fR to free it.  Should you use \fBmalloc\fR
+to allocate and \fBckfree\fR to free, spurious memory validation errors will
+occur when memory debugging is enabled.  Should you use \fBfree\fR to free
+memory allocated by \fBckalloc\fR, memory corruption will occur when memory
+debugging is enabled.  Any memory that is to be become the property of the Tcl
+interpreter, such as result space, must be allocated with \fBckalloc\fR.  If
+it is absolutely necessary for an application to pass back \fBmalloc\fRed
+memory to Tcl, it will work only if Tcl is complied with the
+\fBTCL_MEM_DEBUG\fR flag turned off.  If you convert your application to use
+this facility, it will help you find memory over runs and lost memory.  Note
+that memory allocated by a C library routine requiring freeing should still be
+freed with \fBfree\fR, since it calls \fBmalloc\fR rather than \fBckalloc\fR
+to do the allocation.
+.PP
+Parmeters:
+.RS 2
+\fBo \fIptr\fR - The address of a block to free, as returned by ckalloc.
+.RE
+.sp
+'
+.SS Tcl_DumpActiveMemory
+.PP 
+This function will output a list of all currently allocated memory to the
+specified file.  The following information is outputted for each allocated
+block of memory: starting and ending addresses (excluding guard zone), size,
+source file where \fBckalloc\fR was called to allocate the block and line
+number in that file.  It is especially useful to call
+\fBTcl_DumpActiveMemory\fR after the Tcl interpreter has been deleted.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfileName\fR - The name of the file to output the memory list to.
+.RE
+'
+.SS Tcl_ValidateAllMemory
+.PP
+Forces a validation of the guard zones of all currently allocated blocks
+of memory.  Normally validation of a block occurs when its freed, unless
+full validation is enabled, in which case validation of all blocks
+occurs when \fBckalloc\fR and \fBckfree\fR are called.  This function forces
+the validation to occur at any point.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfile\fR - The file that this routine is being called from, normally
+\fB__FILE__\fR.
+.br
+\fBo \fIline\fR - The line that this routine is being called from, normally
+\fB__LINE__\fR.
+.RE
+'
+.SH ENABLING MEMORY DEBUGGING
+.PP
+To enable memory debugging, Tcl should be recompiled from scratch with
+\fBTCL_MEM_DEBUG\fR defined.  This will also compile in
+a non-stub version of \fBTcl_InitMemory\fR
+to add the \fBmemory\fR command to Tcl.
+.PP
+\fBTCL_MEM_DEBUG\fR must be either left defined for all modules or undefined
+for all modules that are going to be linked together.  If they are not, link
+errors will occur, with either \fBTclDbCkfree\fR and \fBTcl_DbCkalloc\fR or
+\fBTcl_Ckalloc\fR and \fBTcl_Ckfree\fR being undefined.
+'
+.SH GUARD ZONES
+.PP
+When memory debugging is enabled, whenever a call to \fBckalloc\fR is
+made, slightly more memory than requested is allocated so the memory debugging
+code can keep track
+of the allocated memory, and also 
+eight-byte ``guard zones'' are placed in front of and behind the space that 
+will be returned to the caller.  (The size of the guard zone is defined
+by the C #define \fBGUARD_SIZE\fR in \fIbaseline/src/ckalloc.c\fR -- it
+can be extended if you suspect large overwrite problems, at some cost in
+performance.)  A known pattern is written into the guard zones and,
+on a call to \fBckfree\fR, the guard zones of the space being freed
+are checked to see if either zone has been modified in any way.
+If one has been, the guard bytes and their new contents are identified,
+and a ``low guard failed'' or ``high guard failed'' message is issued.
+The ``guard failed'' message includes the address of the memory packet 
+and the file name and line number of the code that called \fBckfree\fR.
+This allows you to detect the common sorts of one-off problems, where
+not enough space was allocated to contain the data written, for example.
+'
+.SH THE MEMORY COMMAND
+'@help: debug/memory
+'@brief: display and debug memory problems
+'
+.TP
+.B memory \fIoptions\fR
+.br
+The Tcl \fBmemory\fR command gives the Tcl developer control of Tcl's memory
+debugging capabilities.  The memory command has several suboptions, which are
+described below.  It is only available when Tcl has been compiled with memory
+debugging enabled.
+'
+.TP
+.B memory \fBinfo\fR
+.br
+Produces a report containing the total allocations and frees since 
+Tcl began, the current packets allocated (the current
+number of calls to \fBckalloc\fR not met by a corresponding call 
+to \fBckfree\fR), the current bytes allocated, and the maximum number
+of packets and bytes allocated.
+'
+.TP
+.B memory \fBtrace\fR [\fBon|off\fR]
+.br
+Turns memory tracing on or off.
+When memory tracing is on, every call to \fBckalloc\fR causes a line of
+trace information to be written to \fIstderr\fR, consisting of the
+word \fIckalloc\fR, followed by the address returned, the amount of
+memory allocated, and the C filename and line number of the code performing
+the allocation, for example...
+.sp
+   \fBckalloc 40e478 98 tclProc.c 1406\fR
+.sp
+Calls to \fBckfree\fR are traced in the same manner, except that the
+word \fIckalloc\fR is replaced by the word \fIckfree\fR.
+'
+.TP
+.B memory \fBvalidate\fR [\fBon|off\fR]
+.br
+Turns memory validation on or off.
+When memory validation is enabled, on every call to
+\fBckalloc\fR or \fBckfree\fR, the guard zones are checked for every
+piece of memory currently in existence that was allocated by \fBckalloc\fR.
+This has a large performance impact and should only be used when
+overwrite problems are strongly suspected.  The advantage of enabling
+memory validation is that a guard zone overwrite can be detected on
+the first call to \fBckalloc\fR or \fBckfree\fR after the overwrite
+occurred, rather than when the specific memory with the overwritten
+guard zone(s) is freed, which may occur long after the overwrite occurred.
+'
+.TP
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+.br
+Enable memory tracing after \fInnn\fR \fBckallocs\fR have been performed.
+For example, if you enter \fBmemory trace_on_at_malloc 100\fR,
+after the 100th call to \fBckalloc\fR, memory trace information will begin
+being displayed for all allocations and frees.  Since there can be a lot
+of memory activity before a problem occurs, judicious use of this option
+can reduce the slowdown caused by tracing (and the amount of trace information
+produced), if you can identify a number of allocations that occur before
+the problem sets in.  The current number of memory allocations that have 
+occurred since Tcl started is printed on a guard zone failure.
+.TP
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+.br
+After the \fBnnn\fR allocations have been performed, \fBckallocs\fR
+output a message to this effect and that it is now attempting to enter
+the C debugger.  Tcl will then issue a \fISIGINT\fR signal against itself.
+If you are running Tcl under a C debugger, it should then enter the debugger
+command mode.
+'
+.TP
+.B memory \fBdisplay\fR \fIfile\fR
+.br
+Write a list of all currently allocated memory to the specified file.
+'@endhelp
+'
+.SH DEBUGGING DIFFICULT MEMORY CORRUPTION PROBLEMS
+.PP
+Normally, Tcl compiled with memory debugging enabled will make it easy to isolate
+a corruption problem.  Turning on memory validation with the memory command
+can help isolate difficult problems.
+If you suspect (or know) that corruption is 
+occurring before the Tcl interpreter comes up far enough for you to
+issue commands, you can set \fBMEM_VALIDATE\fR define, recompile 
+tclCkalloc.c and rebuild Tcl.  This will enable memory validation
+from the first call to \fBckalloc\fR, again, at a large performance impact.
+.PP
+If you are desperate and validating memory on every call to \fBckalloc\fR
+and \fBckfree\fR isn't enough, you can explicitly call
+\fBTcl_ValidateAllMemory\fR directly at any point.  It takes a \fIchar *\fR
+and an \fIint\fR which are normally the filename and line number of the
+caller, but they can actually be anything you want.  Remember to remove
+the calls after you find the problem.
+'
+.SH KEYWORDS
+ckalloc, ckfree, free, memory, malloc
+
+
diff --git a/raw/mann/messageBox.n b/raw/mann/messageBox.n
new file mode 100644
index 0000000..1a8118d
--- /dev/null
+++ b/raw/mann/messageBox.n
@@ -0,0 +1,324 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: messageBox.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: messageBox.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_messageBox n 4.2 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_messageBox \- pops up a message window and waits for user response.
+.SH SYNOPSIS
+\fBtk_messageBox \fR?\fIoption value ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This procedure creates and displays a message window with an
+application-specified message, an icon and a set of buttons.  Each of
+the buttons in the message window is identified by a unique symbolic
+name (see the \fB\-type\fR options).  After the message window is
+popped up, \fBtk_messageBox\fR waits for the user to select one of the
+buttons. Then it returns the symbolic name of the selected button.
+
+The following option-value pairs are supported:
+.TP
+\fB\-default\fR \fIname\fR
+\fIName\fR gives the symbolic name of the default button for
+this message window ('ok', 'cancel', and so on). See \fB\-type\fR 
+for a list of the symbolic names.  If this option is not specified,
+the first button in the dialog will be made the default.
+.TP
+\fB\-icon\fR \fIiconImage\fR
+Specifies an icon to display. \fIIconImage\fR must be one of the
+following: \fBerror\fR, \fBinfo\fR, \fBquestion\fR or
+\fBwarning\fR. If this option is not specified, then the info icon will be
+displayed.
+.TP
+\fB\-message\fR \fIstring\fR
+Specifies the message to display in this message box.
+.TP
+\fB\-parent\fR \fIwindow\fR
+Makes \fIwindow\fR the logical parent of the message box. The message
+box is displayed on top of its parent window.
+.TP
+\fB\-title\fR \fItitleString\fR
+Specifies a string to display as the title of the message box. The
+default value is an empty string.
+.TP
+\fB\-type\fR \fIpredefinedType\fR
+Arranges for a predefined set of buttons to be displayed. The
+following values are possible for \fIpredefinedType\fR:
+.RS
+.TP 18
+\fBabortretryignore\fR
+Displays three buttons whose symbolic names are \fBabort\fR,
+\fBretry\fR and \fBignore\fR.
+.TP 18
+\fBok\fR
+Displays one button whose symbolic name is \fBok\fR.
+.TP 18
+\fBokcancel\fR
+Displays two buttons whose symbolic names are \fBok\fR and \fBcancel\fR.
+.TP 18
+\fBretrycancel\fR
+Displays two buttons whose symbolic names are \fBretry\fR and \fBcancel\fR.
+.TP 18
+\fByesno\fR
+Displays two buttons whose symbolic names are \fByes\fR and \fBno\fR.
+.TP 18
+\fByesnocancel\fR
+Displays three buttons whose symbolic names are \fByes\fR, \fBno\fR
+and \fBcancel\fR.
+.RE
+.PP
+.SH EXAMPLE
+.CS
+set answer [tk_messageBox \-message "Really quit?" \-type yesno \-icon question]
+switch -- $answer {
+    yes exit
+    no {tk_messageBox \-message "I know you like this application!" \-type ok}
+}
+.CE
+
+.SH KEYWORDS
+message box
diff --git a/raw/mann/msgcat.n b/raw/mann/msgcat.n
new file mode 100644
index 0000000..083aa4a
--- /dev/null
+++ b/raw/mann/msgcat.n
@@ -0,0 +1,483 @@
+'\"
+'\" Copyright (c) 1998 Mark Harrison.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" SCCS: @(#) msgcat.n
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: msgcat.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "msgcat" n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+msgcat \- Tcl message catalog
+.SH SYNOPSIS
+\fBpackage require Tcl 8.2\fR
+.sp
+\fBpackage require msgcat 1.1\fR
+.sp
+\fB::msgcat::mc \fIsrc-string\fR
+.sp
+\fB::msgcat::mclocale \fR?\fInewLocale\fR?
+.sp
+\fB::msgcat::mcpreferences\fR
+.sp
+\fB::msgcat::mcload \fIdirname\fR
+.sp
+\fB::msgcat::mcset \fIlocale src-string \fR?\fItranslate-string\fR?
+.sp
+\fB::msgcat::mcunknown \fIlocale src-string\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBmsgcat\fR package provides a set of functions
+that can be used to manage multi-lingual user interfaces.
+Text strings are defined in a ``message catalog'' which
+is independent from the application, and
+which can be edited or localized without modifying
+the application source code.  New languages
+or locales are provided by adding a new file to
+the message catalog.
+.PP
+Use of the message catalog is optional by any application
+or package, but is encouraged if the application or package
+wishes to be enabled for multi-lingual applications.
+
+.SH COMMANDS
+.TP
+\fB::msgcat::mc \fIsrc-string\fR ?\fIarg arg ...\fR?
+Returns a translation of \fIsrc-string\fR according to the
+user's current locale.  If additional arguments past \fIsrc-string\fR
+are given, the \fBformat\fR command is used to substitute the
+additional arguments in the translation of \fIsrc-string\fR.
+
+\fB::msgcat::mc\fR will search the messages defined
+in the current namespace for a translation of \fIsrc-string\fR; if
+none is found, it will search in the parent of the current namespace,
+and so on until it reaches the global namespace.  If no translation
+string exists, \fB::msgcat::mcunknown\fR is called and the string
+returned from \fB::msgcat::mcunknown\fR is returned.
+.PP
+\fB::msgcat::mc\fR is the main function used to localize an
+application.  Instead of using an English string directly, an
+applicaton can pass the English string through \fB::msgcat::mc\fR and
+use the result.  If an application is written for a single language in
+this fashion, then it is easy to add support for additional languages
+later simply by defining new message catalog entries.
+.TP
+\fB::msgcat::mclocale \fR?\fInewLocale\fR?  
+This function sets the locale to \fInewLocale\fR.  If \fInewLocale\fR
+is omitted, the current locale is returned, otherwise the current locale
+is set to \fInewLocale\fR.
+The initial locale defaults to the locale specified in
+the user's environment.  See \fBLOCALE AND SUBLOCALE SPECIFICATION\fR
+below for a description of the locale string format.
+.TP
+\fB::msgcat::mcpreferences\fR
+Returns an ordered list of the locales preferred by
+the user, based on the user's language specification.
+The list is ordered from most specific to least
+preference.  If the user has specified LANG=en_US_funky,
+this procedure would return {en_US_funky en_US en}.
+.TP
+\fB::msgcat::mcload \fIdirname\fR
+Searches the specified directory for files that match
+the language specifications returned by \fB::msgcat::mcpreferences\fR.
+Each file located is sourced.  The file extension is ``.msg''.
+The number of message files which matched the specification
+and were loaded is returned.
+.TP
+\fB::msgcat::mcset \fIlocale src-string \fR?\fItranslate-string\fR?
+Sets the translation for \fIsrc-string\fR to \fItranslate-string\fR
+in the specified \fIlocale\fR.  If \fItranslate-string\fR is not
+specified, \fIsrc-string\fR is used for both.  The function
+returns \fItranslate-string\fR.
+.TP
+\fB::msgcat::mcunknown \fIlocale src-string\fR
+This routine is called by \fB::msgcat::mc\fR in the case when
+a translation for \fIsrc-string\fR is not defined in the
+current locale.  The default action is to return
+\fIsrc-string\fR.  This procedure can be redefined by the
+application, for example to log error messages for each unknown
+string.  The \fB::msgcat::mcunknown\fR procedure is invoked at the
+same stack context as the call to \fB::msgcat::mc\fR.  The return vaue
+of \fB::msgcat::mcunknown\fR is used as the return vaue for the call
+to \fB::msgcat::mc\fR.  
+
+.SH "LOCALE AND SUBLOCALE SPECIFICATION"
+.PP
+The locale is specified by a locale string.
+The locale string consists of
+a language code, an optional country code, and an optional
+system-specific code, each separated by ``_''.  The country and language
+codes are specified in standards ISO-639 and ISO-3166.
+For example, the locale ``en'' specifies English and
+ ``en_US'' specifes  U.S. English.
+.PP
+The locale defaults to the value in \fBenv(LANG)\fR at the time the
+\fBmsgcat\fR package is loaded.  If \fBenv(LANG)\fR is not defined, then the
+locale defaults to ``C''.
+.PP
+When a locale is specified by the user, a ``best match'' search is
+performed during string translation.  For example, if a user specifies
+en_UK_Funky, the locales ``en_UK_Funky'', ``en_UK'', and ``en'' are
+searched in order until a matching translation string is found.  If no
+translation string is available, then \fB::msgcat::unknown\fR is
+called.
+
+.SH "NAMESPACES AND MESSAGE CATALOGS"
+.PP
+Strings stored in the message catalog are stored relative
+to the namespace from which they were added.  This allows
+multiple packages to use the same strings without fear
+of collisions with other packages.  It also allows the
+source string to be shorter and less prone to typographical
+error.
+.PP
+For example, executing the code
+.CS
+mcset en hello "hello from ::"
+namespace eval foo {mcset en hello "hello from ::foo"}
+puts [mc hello]
+namespace eval foo {puts [mc hello]}
+.CE
+will print
+.CS
+hello from ::
+hello from ::foo
+.CE
+.PP
+When searching for a translation of a message, the
+message catalog will search first the current namespace,
+then the parent of the current namespace, and so on until
+the global namespace is reached.  This allows child namespaces
+to "inherit" messages from their parent namespace.
+.PP
+For example, executing the code
+.CS
+mcset en m1 ":: message1"
+mcset en m2 ":: message2"
+mcset en m3 ":: message3"
+namespace eval ::foo {
+    mcset en m2 "::foo message2"
+    mcset en m3 "::foo message3"
+}
+namespace eval ::foo::bar {
+    mcset en m3 "::foo::bar message3"
+}
+puts "[mc m1]; [mc m2]; [mc m3]"
+namespace eval ::foo {puts "[mc m1]; [mc m2]; [mc m3]"}
+namespace eval ::foo::bar {puts "[mc m1]; [mc m2]; [mc m3]"}
+.CE
+will print
+.CS
+:: message1; :: message2; :: message3
+:: message1; ::foo message2; ::foo message3
+:: message1; ::foo message2; ::foo::bar message3
+.CE
+
+.SH "LOCATION AND FORMAT OF MESSAGE FILES"
+.PP
+Message files can be located in any directory, subject
+to the following conditions:
+.IP [1]
+All message files for a package are in the same directory.
+.IP [2]
+The message file name is a locale specifier followed
+by ``.msg''.  For example:
+.CS
+es.msg    -- spanish
+en_UK.msg -- UK English
+.CE
+.IP [3]
+The file contains a series of calls to mcset, setting the
+necessary translation strings for the language. For example:
+.CS
+::msgcat::mcset es "Free Beer!" "Cerveza Gracias!"
+.CE
+
+.SH "RECOMMENDED MESSAGE SETUP FOR PACKAGES"
+.PP
+If a package is installed into a subdirectory of the
+\fBtcl_pkgPath\fR and loaded via \fBpackage require\fR, the
+following procedure is recommended.
+.IP [1]
+During package installation, create a subdirectory
+\fBmsgs\fR under your package directory.
+.IP [2]
+Copy your *.msg files into that directory.
+.IP [3]
+ Add the following command to your package
+initialization script:
+.CS
+# load language files, stored in msgs subdirectory
+::msgcat::mcload [file join [file dirname [info script]] msgs]
+.CE
+
+.SH "POSTITIONAL CODES FOR FORMAT AND SCAN COMMANDS"
+.PP
+It is possible that a message string used as an argument
+to \fBformat\fR might have positionally dependent parameters that
+might need to be repositioned.  For example, it might be
+syntactically desirable to rearrange the sentence structure
+while translating.
+.CS
+format "We produced %d units in location %s" $num $city
+format "In location %s we produced %d units" $city $num
+.CE
+.PP
+This can be handled by using the positional
+parameters:
+.CS
+format "We produced %1\\$d units in location %2\\$s" $num $city
+format "In location %2\\$s we produced %1\\$d units" $num $city
+.CE
+.PP
+Similarly, positional parameters can be used with \fBscan\fR to
+extract values from internationalized strings.
+
+.SH CREDITS
+.PP
+The message catalog code was developed by Mark Harrison.
+
+.SH "SEE ALSO"
+format(n), scan(n), namespace(n), package(n)
+.SH KEYWORDS
+internationalization, i18n, localization, l10n, message, text, translation
diff --git a/raw/mann/namespace.n b/raw/mann/namespace.n
new file mode 100644
index 0000000..9f33946
--- /dev/null
+++ b/raw/mann/namespace.n
@@ -0,0 +1,801 @@
+'\"
+'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: namespace.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: namespace.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH namespace n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+namespace \- create and manipulate contexts for commands and variables
+.SH SYNOPSIS
+\fBnamespace \fR?\fIoption\fR? ?\fIarg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBnamespace\fR command lets you create, access, and destroy
+separate contexts for commands and variables.
+See the section \fBWHAT IS A NAMESPACE?\fR below
+for a brief overview of namespaces.
+The legal \fIoption\fR's are listed below.
+Note that you can abbreviate the \fIoption\fR's.
+.TP
+\fBnamespace children \fR?\fInamespace\fR? ?\fIpattern\fR?
+Returns a list of all child namespaces that belong to the
+namespace \fInamespace\fR.
+If \fInamespace\fR is not specified,
+then the children are returned for the current namespace.
+This command returns fully-qualified names,
+which start with \fB::\fR.
+If the optional \fIpattern\fR is given,
+then this command returns only the names that match the glob-style pattern.
+The actual pattern used is determined as follows:
+a pattern that starts with \fB::\fR is used directly,
+otherwise the namespace \fInamespace\fR
+(or the fully-qualified name of the current namespace)
+is prepended onto the the pattern.
+.TP
+\fBnamespace code \fIscript\fR
+Captures the current namespace context for later execution
+of the script \fIscript\fR.
+It returns a new script in which \fIscript\fR has been wrapped
+in a \fBnamespace code\fR command.
+The new script has two important properties.
+First, it can be evaluated in any namespace and will cause
+\fIscript\fR to be evaluated in the current namespace
+(the one where the \fBnamespace code\fR command was invoked).
+Second, additional arguments can be appended to the resulting script
+and they will be passed to \fIscript\fR as additional arguments.
+For example, suppose the command
+\fBset script [namespace code {foo bar}]\fR
+is invoked in namespace \fB::a::b\fR.
+Then \fBeval "$script x y"\fR
+can be executed in any namespace (assuming the value of
+\fBscript\fR has been passed in properly)
+and will have the same effect as the command
+\fBnamespace eval ::a::b {foo bar x y}\fR.
+This command is needed because
+extensions like Tk normally execute callback scripts
+in the global namespace.
+A scoped command captures a command together with its namespace context
+in a way that allows it to be executed properly later.
+See the section \fBSCOPED VALUES\fR for some examples
+of how this is used to create callback scripts.
+.TP
+\fBnamespace current\fR
+Returns the fully-qualified name for the current namespace.
+The actual name of the global namespace is ``''
+(i.e., an empty string),
+but this command returns \fB::\fR for the global namespace
+as a convenience to programmers.
+.TP
+\fBnamespace delete \fR?\fInamespace namespace ...\fR?
+Each namespace \fInamespace\fR is deleted
+and all variables, procedures, and child namespaces
+contained in the namespace are deleted.
+If a procedure is currently executing inside the namespace,
+the namespace will be kept alive until the procedure returns;
+however, the namespace is marked to prevent other code from
+looking it up by name.
+If a namespace doesn't exist, this command returns an error.
+If no namespace names are given, this command does nothing.
+.TP
+\fBnamespace eval\fR \fInamespace arg\fR ?\fIarg ...\fR?
+Activates a namespace called \fInamespace\fR and evaluates some code
+in that context.
+If the namespace does not already exist, it is created.
+If more than one \fIarg\fR argument is specified,
+the arguments are concatenated together with a space between each one
+in the same fashion as the \fBeval\fR command,
+and the result is evaluated.
+.br
+.sp
+If \fInamespace\fR has leading namespace qualifiers
+and any leading namespaces do not exist,
+they are automatically created.
+.TP
+\fBnamespace export \fR?\-\fBclear\fR? ?\fIpattern pattern ...\fR?
+Specifies which commands are exported from a namespace.
+The exported commands are those that can be later imported
+into another namespace using a \fBnamespace import\fR command.
+Both commands defined in a namespace and
+commands the namespace has previously imported
+can be exported by a namespace.
+The commands do not have to be defined
+at the time the \fBnamespace export\fR command is executed.
+Each \fIpattern\fR may contain glob-style special characters,
+but it may not include any namespace qualifiers.
+That is, the pattern can only specify commands
+in the current (exporting) namespace.
+Each \fIpattern\fR is appended onto the namespace's list of export patterns.
+If the \-\fBclear\fR flag is given,
+the namespace's export pattern list is reset to empty before any
+\fIpattern\fR arguments are appended.
+If no \fIpattern\fRs are given and the \-\fBclear\fR flag isn't given,
+this command returns the namespace's current export list.
+.TP
+\fBnamespace forget \fR?\fIpattern pattern ...\fR?
+Removes previously imported commands from a namespace.
+Each \fIpattern\fR is a qualified name such as
+\fBfoo::x\fR or \fBa::b::p*\fR.
+Qualified names contain \fB::\fRs and qualify a name
+with the name of one or more namespaces.
+Each \fIpattern\fR is qualified with the name of an exporting namespace
+and may have glob-style special characters in the command name
+at the end of the qualified name.
+Glob characters may not appear in a namespace name.
+This command first finds the matching exported commands.
+It then checks whether any of those those commands
+were previously imported by the current namespace.
+If so, this command deletes the corresponding imported commands. 
+In effect, this un-does the action of a \fBnamespace import\fR command.
+.TP
+\fBnamespace import \fR?\fB\-force\fR? ?\fIpattern\fR \fIpattern ...\fR?
+Imports commands into a namespace.
+Each \fIpattern\fR is a qualified name like
+\fBfoo::x\fR or \fBa::p*\fR.
+That is, it includes the name of an exporting namespace
+and may have glob-style special characters in the command name
+at the end of the qualified name.
+Glob characters may not appear in a namespace name.
+All the commands that match a \fIpattern\fR string
+and which are currently exported from their namespace
+are added to the current namespace.
+This is done by creating a new command in the current namespace
+that points to the exported command in its original namespace;
+when the new imported command is called, it invokes the exported command.
+This command normally returns an error
+if an imported command conflicts with an existing command.
+However, if the \-\fBforce\fR option is given,
+imported commands will silently replace existing commands.
+The \fBnamespace import\fR command has snapshot semantics:
+that is, only requested commands that are currently defined
+in the exporting namespace are imported.
+In other words, you can import only the commands that are in a namespace
+at the time when the \fBnamespace import\fR command is executed.
+If another command is defined and exported in this namespace later on,
+it will not be imported.
+.TP
+\fBnamespace inscope\fR \fInamespace arg\fR ?\fIarg ...\fR?
+Executes a script in the context of a particular namespace.
+This command is not expected to be used directly by programmers;
+calls to it are generated implicitly when applications
+use \fBnamespace code\fR commands to create callback scripts
+that the applications then register with, e.g., Tk widgets.
+The \fBnamespace inscope\fR command is much like the \fBnamespace eval\fR
+command except that it has \fBlappend\fR semantics
+and the namespace must already exist.
+It treats the first argument as a list,
+and appends any arguments after the first
+onto the end as proper list elements.
+\fBnamespace inscope ::foo a x y z\fR
+is equivalent to
+\fBnamespace eval ::foo [concat a [list x y z]]\fR
+This \fBlappend\fR semantics is important because many callback scripts
+are actually prefixes.
+.TP
+\fBnamespace origin \fIcommand\fR
+Returns the fully-qualified name of the original command
+to which the imported command \fIcommand\fR refers.
+When a command is imported into a namespace,
+a new command is created in that namespace
+that points to the actual command in the exporting namespace.
+If a command is imported into a sequence of namespaces
+\fIa, b,...,n\fR where each successive namespace
+just imports the command from the previous namespace,
+this command returns the fully-qualified name of the original command
+in the first namespace, \fIa\fR.
+If \fIcommand\fR does not refer to an imported command,
+the command's own fully-qualified name is returned.
+.TP
+\fBnamespace parent\fR ?\fInamespace\fR?
+Returns the fully-qualified name of the parent namespace
+for namespace \fInamespace\fR.
+If \fInamespace\fR is not specified,
+the fully-qualified name of the current namespace's parent is returned.
+.TP
+\fBnamespace qualifiers\fR \fIstring\fR
+Returns any leading namespace qualifiers for \fIstring\fR.
+Qualifiers are namespace names separated by \fB::\fRs.
+For the \fIstring\fR \fB::foo::bar::x\fR,
+this command returns \fB::foo::bar\fR,
+and for \fB::\fR it returns an empty string.
+This command is the complement of the \fBnamespace tail\fR command.
+Note that it does not check whether the
+namespace names are, in fact,
+the names of currently defined namespaces.
+.TP
+\fBnamespace tail\fR \fIstring\fR
+Returns the simple name at the end of a qualified string.
+Qualifiers are namespace names separated by \fB::\fRs.
+For the \fIstring\fR \fB::foo::bar::x\fR,
+this command returns \fBx\fR,
+and for \fB::\fR it returns an empty string.
+This command is the complement of the \fBnamespace qualifiers\fR command.
+It does not check whether the namespace names are, in fact,
+the names of currently defined namespaces.
+.TP
+\fBnamespace which\fR ?\-\fBcommand\fR? ?\-\fBvariable\fR? \fIname\fR
+Looks up \fIname\fR as either a command or variable
+and returns its fully-qualified name.
+For example, if \fIname\fR does not exist in the current namespace
+but does exist in the global namespace,
+this command returns a fully-qualified name in the global namespace.
+If the command or variable does not exist,
+this command returns an empty string.  If the variable has been
+created but not defined, such as with the \fBvariable\fR command
+or through a \fBtrace\fR on the variable, this command will return the 
+fully-qualified name of the variable.
+If no flag is given, \fIname\fR is treated as a command name.
+See the section \fBNAME RESOLUTION\fR below for an explanation of
+the rules regarding name resolution.
+
+.SH "WHAT IS A NAMESPACE?"
+.PP
+A namespace is a collection of commands and variables.
+It encapsulates the commands and variables to ensure that they
+won't interfere with the commands and variables of other namespaces.
+Tcl has always had one such collection,
+which we refer to as the \fIglobal namespace\fR.
+The global namespace holds all global variables and commands.
+The \fBnamespace eval\fR command lets you create new namespaces.
+For example,
+.CS
+\fBnamespace eval Counter {
+    namespace export bump
+    variable num 0
+
+    proc bump {} {
+        variable num
+        incr num
+    }
+}\fR
+.CE
+creates a new namespace containing the variable \fBnum\fR and
+the procedure \fBbump\fR.
+The commands and variables in this namespace are separate from
+other commands and variables in the same program.
+If there is a command named \fBbump\fR in the global namespace,
+for example, it will be different from the command \fBbump\fR
+in the \fBCounter\fR namespace.
+.PP
+Namespace variables resemble global variables in Tcl.
+They exist outside of the procedures in a namespace
+but can be accessed in a procedure via the \fBvariable\fR command,
+as shown in the example above.
+.PP
+Namespaces are dynamic.
+You can add and delete commands and variables at any time,
+so you can build up the contents of a
+namespace over time using a series of \fBnamespace eval\fR commands.
+For example, the following series of commands has the same effect
+as the namespace definition shown above:
+.CS
+\fBnamespace eval Counter {
+    variable num 0
+    proc bump {} {
+        variable num
+        return [incr num]
+    }
+}
+namespace eval Counter {
+    proc test {args} {
+        return $args
+    }
+}
+namespace eval Counter {
+    rename test ""
+}\fR
+.CE
+Note that the \fBtest\fR procedure is added to the \fBCounter\fR namespace,
+and later removed via the \fBrename\fR command.
+.PP
+Namespaces can have other namespaces within them,
+so they nest hierarchically.
+A nested namespace is encapsulated inside its parent namespace
+and can not interfere with other namespaces.
+
+.SH "QUALIFIED NAMES"
+.PP
+Each namespace has a textual name such as
+\fBhistory\fR or \fB::safe::interp\fR.
+Since namespaces may nest,
+qualified names are used to refer to
+commands, variables, and child namespaces contained inside namespaces.
+Qualified names are similar to the hierarchical path names for
+Unix files or Tk widgets,
+except that \fB::\fR is used as the separator
+instead of \fB/\fR or \fB.\fR.
+The topmost or global namespace has the name ``'' (i.e., an empty string),
+although \fB::\fR is a synonym.
+As an example, the name \fB::safe::interp::create\fR
+refers to the command \fBcreate\fR in the namespace \fBinterp\fR
+that is a child of of namespace \fB::safe\fR,
+which in turn is a child of the global namespace \fB::\fR.
+.PP
+If you want to access commands and variables from another namespace,
+you must use some extra syntax.
+Names must be qualified by the namespace that contains them.
+From the global namespace,
+we might access the \fBCounter\fR procedures like this:
+.CS
+\fBCounter::bump 5
+Counter::Reset\fR
+.CE
+We could access the current count like this:
+.CS
+\fBputs "count = $Counter::num"\fR
+.CE
+When one namespace contains another, you may need more than one
+qualifier to reach its elements.
+If we had a namespace \fBFoo\fR that contained the namespace \fBCounter\fR,
+you could invoke its \fBbump\fR procedure
+from the global namespace like this:
+.CS
+\fBFoo::Counter::bump 3\fR
+.CE
+.PP
+You can also use qualified names when you create and rename commands.
+For example, you could add a procedure to the \fBFoo\fR
+namespace like this:
+.CS
+\fBproc Foo::Test {args} {return $args}\fR
+.CE
+And you could move the same procedure to another namespace like this:
+.CS
+\fBrename Foo::Test Bar::Test\fR
+.CE
+.PP
+There are a few remaining points about qualified names
+that we should cover.
+Namespaces have nonempty names except for the global namespace.
+\fB::\fR is disallowed in simple command, variable, and namespace names
+except as a namespace separator.
+Extra \fB:\fRs in a qualified name are ignored;
+that is, two or more \fB:\fRs are treated as a namespace separator.
+A trailing \fB::\fR in a qualified variable or command name
+refers to the variable or command named {}.
+However, a trailing \fB::\fR in a qualified namespace name is ignored.
+
+.SH "NAME RESOLUTION"
+.PP
+In general, all Tcl commands that take variable and command names
+support qualified names.
+This means you can give qualified names to such commands as
+\fBset\fR, \fBproc\fR, \fBrename\fR, and \fBinterp alias\fR.
+If you provide a fully-qualified name that starts with a \fB::\fR,
+there is no question about what command, variable, or namespace
+you mean.
+However, if the name does not start with a \fB::\fR
+(i.e., is \fIrelative\fR), 
+Tcl follows a fixed rule for looking it up:
+Command and variable names are always resolved
+by looking first in the current namespace,
+and then in the global namespace.
+Namespace names, on the other hand, are always resolved
+by looking in only the current namespace.
+.PP
+In the following example,
+.CS
+\fBset traceLevel 0
+namespace eval Debug {
+    printTrace $traceLevel
+}\fR
+.CE
+Tcl looks for \fBtraceLevel\fR in the namespace \fBDebug\fR
+and then in the global namespace.
+It looks up the command \fBprintTrace\fR in the same way.
+If a variable or command name is not found in either context,
+the name is undefined.
+To make this point absolutely clear, consider the following example:
+.CS
+\fBset traceLevel 0
+namespace eval Foo {
+    variable traceLevel 3
+
+    namespace eval Debug {
+        printTrace $traceLevel
+    }
+}\fR
+.CE
+Here Tcl looks for \fBtraceLevel\fR first in the namespace \fBFoo::Debug\fR.
+Since it is not found there, Tcl then looks for it 
+in the global namespace.
+The variable \fBFoo::traceLevel\fR is completely ignored
+during the name resolution process.
+.PP
+You can use the \fBnamespace which\fR command to clear up any question
+about name resolution.
+For example, the command:
+.CS
+\fBnamespace eval Foo::Debug {namespace which \-variable traceLevel}\fR
+.CE
+returns \fB::traceLevel\fR.
+On the other hand, the command,
+.CS
+\fBnamespace eval Foo {namespace which \-variable traceLevel}\fR
+.CE
+returns \fB::Foo::traceLevel\fR.
+.PP
+As mentioned above,
+namespace names are looked up differently
+than the names of variables and commands.
+Namespace names are always resolved in the current namespace.
+This means, for example,
+that a \fBnamespace eval\fR command that creates a new namespace
+always creates a child of the current namespace
+unless the new namespace name begins with a \fB::\fR.
+.PP
+Tcl has no access control to limit what variables, commands,
+or namespaces you can reference.
+If you provide a qualified name that resolves to an element
+by the name resolution rule above,
+you can access the element.
+.PP
+You can access a namespace variable
+from a procedure in the same namespace
+by using the \fBvariable\fR command.
+Much like the \fBglobal\fR command,
+this creates a local link to the namespace variable.
+If necessary, it also creates the variable in the current namespace
+and initializes it.
+Note that the \fBglobal\fR command only creates links
+to variables in the global namespace.
+It is not necessary to use a \fBvariable\fR command
+if you always refer to the namespace variable using an
+appropriate qualified name.
+
+.SH "IMPORTING COMMANDS"
+.PP
+Namespaces are often used to represent libraries.
+Some library commands are used so frequently
+that it is a nuisance to type their qualified names.
+For example, suppose that all of the commands in a package
+like BLT are contained in a namespace called \fBBlt\fR.
+Then you might access these commands like this:
+.CS
+\fBBlt::graph .g \-background red
+Blt::table . .g 0,0\fR
+.CE
+If you use the \fBgraph\fR and \fBtable\fR commands frequently,
+you may want to access them without the \fBBlt::\fR prefix.
+You can do this by importing the commands into the current namespace,
+like this:
+.CS
+\fBnamespace import Blt::*\fR
+.CE
+This adds all exported commands from the \fBBlt\fR namespace
+into the current namespace context, so you can write code like this:
+.CS
+\fBgraph .g \-background red
+table . .g 0,0\fR
+.CE
+The \fBnamespace import\fR command only imports commands
+from a namespace that that namespace exported
+with a \fBnamespace export\fR command.
+.PP
+Importing \fIevery\fR command from a namespace is generally
+a bad idea since you don't know what you will get.
+It is better to import just the specific commands you need.
+For example, the command
+.CS
+\fBnamespace import Blt::graph Blt::table\fR
+.CE
+imports only the \fBgraph\fR and \fBtable\fR commands into the
+current context.
+.PP
+If you try to import a command that already exists, you will get an
+error.  This prevents you from importing the same command from two
+different packages.  But from time to time (perhaps when debugging),
+you may want to get around this restriction.  You may want to
+reissue the \fBnamespace import\fR command to pick up new commands
+that have appeared in a namespace.  In that case, you can use the
+\fB\-force\fR option, and existing commands will be silently overwritten:
+.CS
+\fBnamespace import \-force Blt::graph Blt::table\fR
+.CE
+If for some reason, you want to stop using the imported commands,
+you can remove them with an \fBnamespace forget\fR command, like this:
+.CS
+\fBnamespace forget Blt::*\fR
+.CE
+This searches the current namespace for any commands imported from \fBBlt\fR.
+If it finds any, it removes them.  Otherwise, it does nothing.
+After this, the \fBBlt\fR commands must be accessed with the \fBBlt::\fR
+prefix.
+.PP
+When you delete a command from the exporting namespace like this:
+.CS
+\fBrename Blt::graph ""\fR
+.CE
+the command is automatically removed from all namespaces that import it.
+
+.SH "EXPORTING COMMANDS"
+You can export commands from a namespace like this:
+.CS
+\fBnamespace eval Counter {
+    namespace export bump reset
+    variable Num 0
+    variable Max 100
+
+    proc bump {{by 1}} {
+        variable Num
+        incr Num $by
+        Check
+        return $Num
+    }
+    proc reset {} {
+        variable Num
+        set Num 0
+    }
+    proc Check {} {
+        variable Num
+        variable Max
+        if {$Num > $Max} {
+            error "too high!"
+        }
+    }
+}\fR
+.CE
+The procedures \fBbump\fR and \fBreset\fR are exported,
+so they are included when you import from the \fBCounter\fR namespace,
+like this:
+.CS
+\fBnamespace import Counter::*\fR
+.CE
+However, the \fBCheck\fR procedure is not exported,
+so it is ignored by the import operation.
+.PP
+The \fBnamespace import\fR command only imports commands
+that were declared as exported by their namespace.
+The \fBnamespace export\fR command specifies what commands
+may be imported by other namespaces.
+If a \fBnamespace import\fR command specifies a command
+that is not exported, the command is not imported.
+
+.SH "SEE ALSO"
+variable(n)
+
+.SH KEYWORDS
+exported, internal, variable
diff --git a/raw/mann/open.n b/raw/mann/open.n
new file mode 100644
index 0000000..193d3d7
--- /dev/null
+++ b/raw/mann/open.n
@@ -0,0 +1,508 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: open.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: open.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH open n 7.6 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+open \- Open a file-based or command pipeline channel
+.SH SYNOPSIS
+.sp
+\fBopen \fIfileName\fR
+.br
+\fBopen \fIfileName access\fR
+.br
+\fBopen \fIfileName access permissions\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+.VS
+This command opens a file, serial port, or command pipeline and returns a
+.VE
+channel identifier that may be used in future invocations of commands like
+\fBread\fR, \fBputs\fR, and \fBclose\fR.
+If the first character of \fIfileName\fR is not \fB|\fR then
+the command opens a file:
+\fIfileName\fR gives the name of the file to open, and it must conform to the
+conventions described in the \fBfilename\fR manual entry.
+.PP
+The \fIaccess\fR argument, if present, indicates the way in which the file
+(or command pipeline) is to be accessed.
+In the first form \fIaccess\fR may have any of the following values:
+.TP 15
+\fBr\fR
+Open the file for reading only; the file must already exist. This is the
+default value if \fIaccess\fR is not specified.
+.TP 15
+\fBr+\fR
+Open the file for both reading and writing; the file must
+already exist.
+.TP 15
+\fBw\fR
+Open the file for writing only.  Truncate it if it exists.  If it doesn't
+exist, create a new file.
+.TP 15
+\fBw+\fR
+Open the file for reading and writing.  Truncate it if it exists.
+If it doesn't exist, create a new file.
+.TP 15
+\fBa\fR
+Open the file for writing only.  If the file doesn't exist,
+create a new empty file.
+Set the initial access position  to the end of the file.
+.TP 15
+\fBa+\fR
+Open the file for reading and writing.  If the file doesn't exist,
+create a new empty file.
+Set the initial access position  to the end of the file.
+.PP
+In the second form, \fIaccess\fR consists of a list of any of the
+following flags, all of which have the standard POSIX meanings.
+One of the flags must be either \fBRDONLY\fR, \fBWRONLY\fR or \fBRDWR\fR.
+.TP 15
+\fBRDONLY\fR
+Open the file for reading only.
+.TP 15
+\fBWRONLY\fR
+Open the file for writing only.
+.TP 15
+\fBRDWR\fR
+Open the file for both reading and writing.
+.TP 15
+\fBAPPEND\fR
+Set the file pointer to the end of the file prior to each write.
+.TP 15
+\fBCREAT\fR
+Create the file if it doesn't already exist (without this flag it
+is an error for the file not to exist).
+.TP 15
+\fBEXCL\fR
+If \fBCREAT\fR is also specified, an error is returned if the
+file already exists.
+.TP 15
+\fBNOCTTY\fR
+If the file is a terminal device, this flag prevents the file from
+becoming the controlling terminal of the process.
+.TP 15
+\fBNONBLOCK\fR
+Prevents the process from blocking while opening the file, and
+possibly in subsequent I/O operations.  The exact behavior of
+this flag is system- and device-dependent;  its use is discouraged
+(it is better to use the \fBfconfigure\fR command to put a file
+in nonblocking mode).
+For details refer to your system documentation on the \fBopen\fR system
+call's \fBO_NONBLOCK\fR flag.
+.TP 15
+\fBTRUNC\fR
+If the file exists it is truncated to zero length.
+.PP
+If a new file is created as part of opening it, \fIpermissions\fR
+(an integer) is used to set the permissions for the new file in
+conjunction with the process's file mode creation mask.
+\fIPermissions\fR defaults to 0666.
+.PP
+'\" Not versioned as advice applies to all recent versions of Tcl.
+'\" Prior to that, Tcl didn't really support binary files anyway...
+.VS
+Note that if you are going to be reading or writing binary data from
+the channel created by this command, you should use the
+\fBfconfigure\fR command to change the \fB-translation\fR option of
+the channel to \fBbinary\fR before transferring any binary data.  This
+is in contrast to the ``b'' character passed as part of the equivalent
+of the \fIaccess\fR parameter to some versions of the C library
+\fIfopen()\fR function.
+.VE
+.SH "COMMAND PIPELINES"
+.PP
+If the first character of \fIfileName\fR is ``|'' then the
+remaining characters of \fIfileName\fR are treated as a list of arguments
+that describe a command pipeline to invoke, in the same style as the
+arguments for \fBexec\fR.
+In this case, the channel identifier returned by \fBopen\fR may be used
+to write to the command's input pipe or read from its output pipe,
+depending on the value of \fIaccess\fR.
+If write-only access is used (e.g. \fIaccess\fR is \fBw\fR), then
+standard output for the pipeline is directed to the current standard
+output unless overridden by the command.
+If read-only access is used (e.g. \fIaccess\fR is \fBr\fR),
+standard input for the pipeline is taken from the current standard
+input unless overridden by the command.
+.SH "SERIAL COMMUNICATIONS"
+.VS
+.PP
+If \fIfileName\fR refers to a serial port, then the specified serial port
+is opened and initialized in a platform-dependent manner.  Acceptable
+values for the \fIfileName\fR to use to open a serial port are described in
+the PORTABILITY ISSUES section.
+
+.SH "CONFIGURATION OPTIONS"
+The \fBfconfigure\fR command can be used to query and set the following
+configuration option for open serial ports:
+.TP
+\fB\-mode \fIbaud\fB,\fIparity\fB,\fIdata\fB,\fIstop\fR
+.
+This option is a set of 4 comma-separated values: the baud rate, parity,
+number of data bits, and number of stop bits for this serial port.  The
+\fIbaud\fR rate is a simple integer that specifies the connection speed.
+\fIParity\fR is one of the following letters: \fBn\fR, \fBo\fR, \fBe\fR,
+\fBm\fR, \fBs\fR; respectively signifying the parity options of ``none'',
+``odd'', ``even'', ``mark'', or ``space''.  \fIData\fR is the number of
+data bits and should be an integer from 5 to 8, while \fIstop\fR is the
+number of stop bits and should be the integer 1 or 2.
+.TP
+\fB\-pollinterval \fImsec\fR
+.
+This option, available only on Windows for serial ports, is used to
+set the maximum time between polling for fileevents.  This affects the
+time interval between checking for events throughout the Tcl
+interpreter (the smallest value always wins).  Use this option only if
+you want to poll the serial port more often than 10 msec (the default).
+.TP
+\fB\-lasterror\fR
+.
+This option is available only on Windows for serial ports, and is
+query only (will only be reported when directly requested).
+In case of a serial communication error, \fBread\fR or \fBputs\fR
+returns a general Tcl file I/O error.
+\fBfconfigure -lasterror\fR can be called to get a list 
+of error details (e.g. FRAME RXOVER).
+.VE
+
+.VS
+.SH "PORTABILITY ISSUES"
+.sp
+.TP
+\fBWindows \fR(all versions)
+.
+Valid values for \fIfileName\fR to open a serial port are of the form
+\fBcom\fIX\fB:\fR, where \fIX\fR is a number, generally from 1 to 4.
+This notation only works for serial ports from 1 to 9, if the system
+happens to have more than four.  An attempt to open a serial port that
+does not exist or has a number greater than 9 will fail.  An alternate
+form of opening serial ports is to use the filename \fB\e\e.\ecomX\fR,
+where X is any number that corresponds to a serial port; please note
+that this method is considerably slower on Windows 95 and Windows 98.
+.TP
+\fBWindows NT\fR
+.
+When running Tcl interactively, there may be some strange interactions
+between the real console, if one is present, and a command pipeline that uses
+standard input or output.  If a command pipeline is opened for reading, some
+of the lines entered at the console will be sent to the command pipeline and
+some will be sent to the Tcl evaluator.  If a command pipeline is opened for
+writing, keystrokes entered into the console are not visible until the the
+pipe is closed.  This behavior occurs whether the command pipeline is
+executing 16-bit or 32-bit applications.  These problems only occur because
+both Tcl and the child application are competing for the console at
+the same time.  If the command pipeline is started from a script, so that Tcl
+is not accessing the console, or if the command pipeline does not use
+standard input or output, but is redirected from or to a file, then the
+above problems do not occur.  
+.TP
+\fBWindows 95\fR 
+.
+A command pipeline that executes a 16-bit DOS application cannot be opened
+for both reading and writing, since 16-bit DOS applications that receive
+standard input from a pipe and send standard output to a pipe run
+synchronously.  Command pipelines that do not execute 16-bit DOS
+applications run asynchronously and can be opened for both reading and
+writing.  
+.sp
+When running Tcl interactively, there may be some strange interactions
+between the real console, if one is present, and a command pipeline that uses
+standard input or output.  If a command pipeline is opened for reading from
+a 32-bit application, some of the keystrokes entered at the console will be
+sent to the command pipeline and some will be sent to the Tcl evaluator.  If
+a command pipeline is opened for writing to a 32-bit application, no output
+is visible on the console until the the pipe is closed.  These problems only
+occur because both Tcl and the child application are competing for the
+console at the same time.  If the command pipeline is started from a script,
+so that Tcl is not accessing the console, or if the command pipeline does
+not use standard input or output, but is redirected from or to a file, then
+the above problems do not occur.  
+.sp
+Whether or not Tcl is running interactively, if a command pipeline is opened
+for reading from a 16-bit DOS application, the call to \fBopen\fR will not
+return until end-of-file has been received from the command pipeline's
+standard output.  If a command pipeline is opened for writing to a 16-bit DOS
+application, no data will be sent to the command pipeline's standard output
+until the pipe is actually closed.  This problem occurs because 16-bit DOS
+applications are run synchronously, as described above.  
+.TP
+\fBMacintosh\fR
+.
+Opening a serial port is not currently implemented under Macintosh.
+.sp
+Opening a command pipeline is not supported under Macintosh, since 
+applications do not support the concept of standard input or output.
+.TP
+\fBUnix\fR\0\0\0\0\0\0\0
+.
+Valid values for \fIfileName\fR to open a serial port are generally of the
+form \fB/dev/tty\fIX\fR, where \fIX\fR is \fBa\fR or \fBb\fR, but the name
+of any pseudo-file that maps to a serial port may be used.
+.sp
+When running Tcl interactively, there may be some strange interactions
+between the console, if one is present, and a command pipeline that uses
+standard input.  If a command pipeline is opened for reading, some
+of the lines entered at the console will be sent to the command pipeline and
+some will be sent to the Tcl evaluator.  This problem only occurs because
+both Tcl and the child application are competing for the console at the
+same time.  If the command pipeline is started from a script, so that Tcl is
+not accessing the console, or if the command pipeline does not use standard
+input, but is redirected from a file, then the above problem does not occur.  
+.LP
+See the PORTABILITY ISSUES section of the \fBexec\fR command for additional
+information not specific to command pipelines about executing
+applications on the various platforms
+
+.SH "SEE ALSO"
+file(n), close(n), filename(n), fconfigure(n), gets(n), read(n),
+puts(n), exec(n), fopen(1)
+
+.SH KEYWORDS
+access mode, append, create, file, non-blocking, open, permissions,
+pipeline, process, serial
diff --git a/raw/mann/option.n b/raw/mann/option.n
new file mode 100644
index 0000000..bfb21f4
--- /dev/null
+++ b/raw/mann/option.n
@@ -0,0 +1,326 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: option.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: option.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH option n "" Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+option \- Add/retrieve window options to/from the option database
+.SH SYNOPSIS
+\fBoption add \fIpattern value \fR?\fIpriority\fR?
+.sp
+\fBoption clear\fR
+.sp
+\fBoption get \fIwindow name class\fR
+.sp
+\fBoption readfile \fIfileName \fR?\fIpriority\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBoption\fR command allows you to add entries to the Tk option
+database or to retrieve options from the database.  The \fBadd\fR
+form of the command adds a new option to the database.
+\fIPattern\fR contains
+the option being specified, and consists of names and/or classes
+separated by asterisks or dots, in the usual X format.  \fIValue\fR
+contains a text string to associate with \fIpattern\fR;  this is the
+value that will be returned in calls to \fBTk_GetOption\fR or by
+invocations of the \fBoption get\fR command.  If \fIpriority\fR
+is specified, it indicates the priority level for this option (see
+below for legal values);  it defaults to \fBinteractive\fR.
+This command always returns an empty string.
+.PP
+The \fBoption clear\fR command clears the option database.  Default
+options (from the
+\fBRESOURCE_MANAGER\fR property or the \fB.Xdefaults\fR
+file) will be reloaded automatically the next time an
+option is added to the database or removed from it.  This command
+always returns an empty string.
+.PP
+The \fBoption get\fR command returns the value of the option
+specified for \fIwindow\fR
+under \fIname\fR and \fIclass\fR.  If several entries in the option
+database match \fIwindow\fR, \fIname\fR, and \fIclass\fR, then
+the command returns whichever was created with highest
+\fIpriority\fR level.  If there are several matching
+entries at the same priority level, then it returns whichever entry
+was most recently entered into the option database.  If there are
+no matching entries, then the empty string is returned.
+.PP
+The \fBreadfile\fR form of the command reads \fIfileName\fR,
+which should have the standard format for an
+X resource database such as \fB.Xdefaults\fR, and adds all the
+options specified in that file to the option database.  If \fIpriority\fR
+is specified, it indicates the priority level at which to enter the
+options;  \fIpriority\fR defaults to \fBinteractive\fR.
+.PP
+The \fIpriority\fR arguments to the \fBoption\fR command are
+normally specified symbolically using one of the following values:
+.TP
+\fBwidgetDefault\fR
+Level 20.  Used for default values hard-coded into widgets.
+.TP
+\fBstartupFile\fR
+Level 40.  Used for options specified in application-specific
+startup files.
+.TP
+\fBuserDefault\fR
+Level 60.  Used for options specified in user-specific defaults
+files, such as \fB.Xdefaults\fR, resource databases loaded into
+the X server, or user-specific startup files.
+.TP
+\fBinteractive\fR
+Level 80.  Used for options specified interactively after the application
+starts running.  If \fIpriority\fR isn't specified, it defaults to
+this level.
+.LP
+Any of the above keywords may be abbreviated.  In addition, priorities
+may be specified numerically using integers between 0 and 100,
+inclusive.  The numeric form is probably a bad idea except for new priority
+levels other than the ones given above.
+
+.SH KEYWORDS
+database, option, priority, retrieve
diff --git a/raw/mann/optionMenu.n b/raw/mann/optionMenu.n
new file mode 100644
index 0000000..9318fad
--- /dev/null
+++ b/raw/mann/optionMenu.n
@@ -0,0 +1,275 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: optionMenu.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: optionMenu.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_optionMenu n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_optionMenu \- Create an option menubutton and its menu
+.SH SYNOPSIS
+\fBtk_optionMenu \fIw varName value \fR?\fIvalue value ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This procedure creates an option menubutton whose name is \fIw\fR,
+plus an associated menu.
+Together they allow the user to select one of the values
+given by the \fIvalue\fR arguments.
+The current value will be stored in the global variable whose
+name is given by \fIvarName\fR and it will also be displayed as the label
+in the option menubutton.
+The user can click on the menubutton to display a menu containing
+all of the \fIvalue\fRs and thereby select a new value.
+Once a new value is selected, it will be stored in the variable
+and appear in the option menubutton.
+The current value can also be changed by setting the variable.
+.PP
+The return value from \fBtk_optionMenu\fR is the name of the menu
+associated with \fIw\fR, so that the caller can change its configuration
+options or manipulate it in other ways.
+
+.SH KEYWORDS
+option menu
diff --git a/raw/mann/package.n b/raw/mann/package.n
new file mode 100644
index 0000000..5feb1f4
--- /dev/null
+++ b/raw/mann/package.n
@@ -0,0 +1,431 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: package.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: package.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH package n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+package \- Facilities for package loading and version control
+.SH SYNOPSIS
+.nf
+\fBpackage forget ?\fIpackage package ...\fR?
+\fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
+\fBpackage names\fR
+\fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+\fBpackage provide \fIpackage \fR?\fIversion\fR?
+\fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+\fBpackage unknown \fR?\fIcommand\fR?
+\fBpackage vcompare \fIversion1 version2\fR
+\fBpackage versions \fIpackage\fR
+\fBpackage vsatisfies \fIversion1 version2\fR
+.fi
+.BE
+
+.SH DESCRIPTION
+.PP
+This command keeps a simple database of the packages available for
+use by the current interpreter and how to load them into the
+interpreter.
+It supports multiple versions of each package and arranges
+for the correct version of a package to be loaded based on what
+is needed by the application.
+This command also detects and reports version clashes.
+Typically, only the \fBpackage require\fR and \fBpackage provide\fR
+commands are invoked in normal Tcl scripts;  the other commands are used
+primarily by system scripts that maintain the package database.
+.PP
+The behavior of the \fBpackage\fR command is determined by its first argument.
+The following forms are permitted:
+.TP
+\fBpackage forget ?\fIpackage package ...\fR?
+Removes all information about each specified package from this interpreter,
+including information provided by both \fBpackage ifneeded\fR and
+\fBpackage provide\fR.
+.TP
+\fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
+This command typically appears only in system configuration
+scripts to set up the package database.
+It indicates that a particular version of
+a particular package is available if needed, and that the package
+can be added to the interpreter by executing \fIscript\fR.
+The script is saved in a database for use by subsequent
+\fBpackage require\fR commands;  typically, \fIscript\fR
+sets up auto-loading for the commands in the package (or calls
+\fBload\fR and/or \fBsource\fR directly), then invokes
+\fBpackage provide\fR to indicate that the package is present.
+There may be information in the database for several different
+versions of a single package.
+If the database already contains information for \fIpackage\fR
+and \fIversion\fR, the new \fIscript\fR replaces the existing
+one.
+If the \fIscript\fR argument is omitted, the current script for
+version \fIversion\fR of package \fIpackage\fR is returned,
+or an empty string if no \fBpackage ifneeded\fR command has
+been invoked for this \fIpackage\fR and \fIversion\fR.
+.TP
+\fBpackage names\fR
+Returns a list of the names of all packages in the
+interpreter for which a version has been provided (via
+\fBpackage provide\fR) or for which a \fBpackage ifneeded\fR
+script is available.
+The order of elements in the list is arbitrary.
+.TP
+\fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+This command is equivalent to \fBpackage require\fR except that it
+does not try and load the package if it is not already loaded.
+.TP
+\fBpackage provide \fIpackage \fR?\fIversion\fR?
+This command is invoked to indicate that version \fIversion\fR
+of package \fIpackage\fR is now present in the interpreter.
+It is typically invoked once as part of an \fBifneeded\fR script,
+and again by the package itself when it is finally loaded.
+An error occurs if a different version of \fIpackage\fR has been
+provided by a previous \fBpackage provide\fR command.
+If the \fIversion\fR argument is omitted, then the command
+returns the version number that is currently provided, or an
+empty string if no \fBpackage provide\fR command has been
+invoked for \fIpackage\fR in this interpreter.
+.TP
+\fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+This command is typically invoked by Tcl code that wishes to use
+a particular version of a particular package.  The arguments
+indicate which package is wanted, and the command ensures that
+a suitable version of the package is loaded into the interpreter.
+If the command succeeds, it returns the version number that is
+loaded;  otherwise it generates an error.
+If both the \fB\-exact\fR
+switch and the \fIversion\fR argument are specified then only the
+given version is acceptable.  If \fB\-exact\fR is omitted but
+\fIversion\fR is specified, then versions later than \fIversion\fR
+are also acceptable as long as they have the same major version
+number as \fIversion\fR.
+If both \fB\-exact\fR and \fIversion\fR are omitted then any
+version whatsoever is acceptable.
+If a version of \fIpackage\fR has already been provided (by invoking
+the \fBpackage provide\fR command), then its version number must
+satisfy the criteria given by \fB\-exact\fR and \fIversion\fR and
+the command returns immediately.
+Otherwise, the command searches the database of information provided by
+previous \fBpackage ifneeded\fR commands to see if an acceptable
+version of the package is available.
+If so, the script for the highest acceptable version number is invoked;
+it must do whatever is necessary to load the package,
+including calling \fBpackage provide\fR for the package.
+If the \fBpackage ifneeded\fR database does not contain an acceptable
+version of the package and a \fBpackage unknown\fR command has been
+specified for the interpreter then that command is invoked;  when
+it completes, Tcl checks again to see if the package is now provided
+or if there is a \fBpackage ifneeded\fR script for it.
+If all of these steps fail to provide an acceptable version of the
+package, then the command returns an error.
+.TP
+\fBpackage unknown \fR?\fIcommand\fR?
+This command supplies a ``last resort'' command to invoke during
+\fBpackage require\fR if no suitable version of a package can be found
+in the \fBpackage ifneeded\fR database.
+If the \fIcommand\fR argument is supplied, it contains the first part
+of a command;  when the command is invoked during a \fBpackage require\fR
+command, Tcl appends two additional arguments giving the desired package
+name and version.
+For example, if \fIcommand\fR is \fBfoo bar\fR and later the command
+\fBpackage require test 2.4\fR is invoked, then Tcl will execute
+the command \fBfoo bar test 2.4\fR to load the package.
+If no version number is supplied to the \fBpackage require\fR command,
+then the version argument for the invoked command will be an empty string.
+If the \fBpackage unknown\fR command is invoked without a \fIcommand\fR
+argument, then the current \fBpackage unknown\fR script is returned,
+or an empty string if there is none.
+If \fIcommand\fR is specified as an empty string, then the current
+\fBpackage unknown\fR script is removed, if there is one.
+.TP
+\fBpackage vcompare \fIversion1 version2\fR
+Compares the two version numbers given by \fIversion1\fR and \fIversion2\fR.
+Returns -1 if \fIversion1\fR is an earlier version than \fIversion2\fR,
+0 if they are equal, and 1 if \fIversion1\fR is later than \fBversion2\fR.
+.TP
+\fBpackage versions \fIpackage\fR
+Returns a list of all the version numbers of \fIpackage\fR
+for which information has been provided by \fBpackage ifneeded\fR
+commands.
+.TP
+\fBpackage vsatisfies \fIversion1 version2\fR
+Returns 1 if scripts written for \fIversion2\fR will work unchanged
+with \fIversion1\fR (i.e. \fIversion1\fR is equal to or greater
+than \fIversion2\fR and they both have the same major version
+number), 0 otherwise.
+
+.SH "VERSION NUMBERS"
+.PP
+Version numbers consist of one or more decimal numbers separated
+by dots, such as 2 or 1.162 or 3.1.13.1.
+The first number is called the major version number.
+Larger numbers correspond to later versions of a package, with
+leftmost numbers having greater significance.
+For example, version 2.1 is later than 1.3 and version
+3.4.6 is later than 3.3.5.
+Missing fields are equivalent to zeroes:  version 1.3 is the
+same as version 1.3.0 and 1.3.0.0, so it is earlier than 1.3.1 or 1.3.0.2.
+A later version number is assumed to be upwards compatible with
+an earlier version number as long as both versions have the same
+major version number.
+For example, Tcl scripts written for version 2.3 of a package should
+work unchanged under versions 2.3.2, 2.4, and 2.5.1.
+Changes in the major version number signify incompatible changes:
+if code is written to use version 2.1 of a package, it is not guaranteed
+to work unmodified with either version 1.7.3 or version 3.1.
+
+.SH "PACKAGE INDICES"
+.PP
+The recommended way to use packages in Tcl is to invoke \fBpackage require\fR
+and \fBpackage provide\fR commands in scripts, and use the procedure
+\fBpkg_mkIndex\fR to create package index files.
+Once you've done this, packages will be loaded automatically
+in response to \fBpackage require\fR commands.
+See the documentation for \fBpkg_mkIndex\fR for details.
+
+.SH "SEE ALSO"
+msgcat(n), packagens(n), pkgMkIndex(n)
+
+.SH KEYWORDS
+package, version
diff --git a/raw/mann/packagens.n b/raw/mann/packagens.n
new file mode 100644
index 0000000..94404d0
--- /dev/null
+++ b/raw/mann/packagens.n
@@ -0,0 +1,290 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: packagens.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: packagens.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pkg::create n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pkg::create \- Construct an appropriate \fBpackage ifneeded\fR
+command for a given package specification
+.SH SYNOPSIS
+\fB::pkg::create \fI\-name packageName\fR \fI\-version packageVersion\fR ?\fI\-load filespec\fR? ... ?\fI\-source filespec\fR? ...
+.BE
+
+.SH DESCRIPTION
+.PP
+\fB::pkg::create\fR is a utility procedure that is part of the standard Tcl
+library.  It is used to create an appropriate \fBpackage ifneeded\fR
+command for a given package specification.  It can be used to construct a
+\fBpkgIndex.tcl\fR file for use with the \fBpackage\fR mechanism.
+
+.SH OPTIONS
+The parameters supported are:
+.TP
+\fB\-name\fR\0\fIpackageName\fR
+This parameter specifies the name of the package.  It is required.
+.TP
+\fB\-version\fR\0\fIpackageVersion\fR
+This parameter specifies the version of the package.  It is required.
+.TP
+\fB\-load\fR\0\fIfilespec\fR
+This parameter specifies a binary library that must be loaded with the
+\fBload\fR command.  \fIfilespec\fR is a list with two elements.  The
+first element is the name of the file to load.  The second, optional
+element is a list of commands supplied by loading that file.  If the
+list of procedures is empty or omitted, \fB::pkg::create\fR will
+set up the library for direct loading (see \fBpkg_mkIndex\fR).  Any
+number of \fB\-load\fR parameters may be specified.
+.TP
+\fB\-source\fR\0\fIfilespec\fR
+This parameter is similar to the \fB\-load\fR parameter, except that it
+specifies a Tcl library that must be loaded with the
+\fBsource\fR command.  Any number of \fB\-source\fR parameters may be
+specified.
+.PP
+At least one \fB\-load\fR or \fB\-source\fR paramter must be given.
+
+.SH "SEE ALSO"
+package(n)
+
+.SH KEYWORDS
+auto-load, index, package, version
diff --git a/raw/mann/palette.n b/raw/mann/palette.n
new file mode 100644
index 0000000..3869deb
--- /dev/null
+++ b/raw/mann/palette.n
@@ -0,0 +1,308 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: palette.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: palette.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_setPalette n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_setPalette, tk_bisque \- Modify the Tk color palette
+.SH SYNOPSIS
+\fBtk_setPalette \fIbackground\fR
+.sp
+\fBtk_setPalette \fIname value \fR?\fIname value ...\fR?
+.sp
+\fBtk_bisque\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBtk_setPalette\fR procedure changes the color scheme for Tk.
+It does this by modifying the colors of existing widgets and by changing
+the option database so that future widgets will use the new color scheme.
+If \fBtk_setPalette\fR is invoked with a single argument, the
+argument is the name of a color to use as the normal background
+color;  \fBtk_setPalette\fR will compute a complete color palette
+from this background color.
+Alternatively, the arguments to \fBtk_setPalette\fR may consist of any number
+of \fIname\fR\-\fIvalue\fR pairs, where the first argument of the pair
+is the name of an option in the Tk option database and the second
+argument is the new value to use for that option.  The following
+database names are currently supported:
+.DS L
+.ta 4c 8c
+\fBactiveBackground	foreground	selectColor
+activeForeground	highlightBackground	selectBackground
+background	highlightColor	selectForeground
+disabledForeground	insertBackground	troughColor\fR
+.DE
+\fBtk_setPalette\fR tries to compute reasonable defaults for any
+options that you don't specify.  You can specify options other
+than the above ones and Tk will change those options on widgets as
+well.  This feature may be useful if you are using custom widgets with
+additional color options.
+.PP
+Once it has computed the new value to use for each of the color options,
+\fBtk_setPalette\fR scans the widget hierarchy to modify the options
+of all existing widgets.  For each widget, it checks to see if any
+of the above options is defined for the widget.  If so, and if the
+option's current value is the default, then the value is changed;  if
+the option has a value other than the default, \fBtk_setPalette\fR
+will not change it.  The default for an option is the one provided by
+the widget (\fB[lindex [$w configure $option] 3]\fR) unless
+\fBtk_setPalette\fR has been run previously, in which case it is the
+value specified in the previous invocation of \fBtk_setPalette\fR.
+.PP
+After modifying all the widgets in the application, \fBtk_setPalette\fR
+adds options to the option database to change the defaults for
+widgets created in the future.  The new options are added at
+priority \fBwidgetDefault\fR, so they will be overridden by options
+from the .Xdefaults file or options specified on the command-line
+that creates a widget.
+.PP
+The procedure \fBtk_bisque\fR is provided for backward compatibility:
+it restores the application's colors to the light brown (``bisque'')
+color scheme used in Tk 3.6 and earlier versions.
+
+.SH KEYWORDS
+bisque, color, palette
diff --git a/raw/mann/pid.n b/raw/mann/pid.n
new file mode 100644
index 0000000..8691c9b
--- /dev/null
+++ b/raw/mann/pid.n
@@ -0,0 +1,272 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: pid.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: pid.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pid n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pid \- Retrieve process id(s)
+.SH SYNOPSIS
+\fBpid \fR?\fIfileId\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+If the \fIfileId\fR argument is given then it should normally
+refer to a process pipeline created with the \fBopen\fR command.
+In this case the \fBpid\fR command will return a list whose elements
+are the process identifiers of all the processes in the pipeline,
+in order.
+The list will be empty if \fIfileId\fR refers to an open file
+that isn't a process pipeline.
+If no \fIfileId\fR argument is given then \fBpid\fR returns the process
+identifier of the current process.
+All process identifiers are returned as decimal strings.
+
+.SH "SEE ALSO"
+exec(n), open(n)
+
+.SH KEYWORDS
+file, pipeline, process identifier
diff --git a/raw/mann/pkgMkIndex.n b/raw/mann/pkgMkIndex.n
new file mode 100644
index 0000000..284d994
--- /dev/null
+++ b/raw/mann/pkgMkIndex.n
@@ -0,0 +1,478 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: pkgMkIndex.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: pkgMkIndex.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pkg_mkIndex n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pkg_mkIndex \- Build an index for automatic loading of packages
+.SH SYNOPSIS
+.nf
+.VS 8.3.0
+\fBpkg_mkIndex ?\fI\-direct\fR?  ?\fI\-lazy\fR?  ?\fI\-load pkgPat\fR? ?\fI\-verbose\fR? \fIdir\fR ?\fIpattern pattern ...\fR?
+.VE
+.fi
+.BE
+
+.SH DESCRIPTION
+.PP
+\fBPkg_mkIndex\fR is a utility procedure that is part of the standard
+Tcl library.
+It is used to create index files that allow packages to be loaded
+automatically when \fBpackage require\fR commands are executed.
+To use \fBpkg_mkIndex\fR, follow these steps:
+.IP [1]
+Create the package(s).
+Each package may consist of one or more Tcl script files or binary files.
+Binary files must be suitable for loading with the \fBload\fR command
+with a single argument;  for example, if the file is \fBtest.so\fR it must
+be possible to load this file with the command \fBload test.so\fR.
+Each script file must contain a \fBpackage provide\fR command to declare
+the package and version number, and each binary file must contain
+a call to \fBTcl_PkgProvide\fR.
+.IP [2]
+Create the index by invoking \fBpkg_mkIndex\fR.
+The \fIdir\fR argument gives the name of a directory and each
+\fIpattern\fR argument is a \fBglob\fR-style pattern that selects
+script or binary files in \fIdir\fR.
+.VS 8.0.3
+The default pattern is \fB*.tcl\fR and \fB*.[info sharedlibextension]\fR.
+.VE
+.br
+\fBPkg_mkIndex\fR will create a file \fBpkgIndex.tcl\fR in \fIdir\fR
+with package information about all the files given by the \fIpattern\fR
+arguments.
+It does this by loading each file into a slave
+interpreter and seeing what packages
+and new commands appear (this is why it is essential to have
+\fBpackage provide\fR commands or \fBTcl_PkgProvide\fR calls
+in the files, as described above).
+If you have a package split among scripts and binary files, 
+or if you have dependencies among files,
+you may have to use the \fB\-load\fP option
+or adjust the order in which \fBpkg_mkIndex\fR processes
+the files.  See COMPLEX CASES below.
+
+.IP [3]
+Install the package as a subdirectory of one of the directories given by
+the \fBtcl_pkgPath\fR variable.  If \fB$tcl_pkgPath\fR contains more
+than one directory, machine-dependent packages (e.g., those that
+contain binary shared libraries) should normally be installed
+under the first directory and machine-independent packages (e.g.,
+those that contain only Tcl scripts) should be installed under the
+second directory.
+The subdirectory should include
+the package's script and/or binary files as well as the \fBpkgIndex.tcl\fR
+file.  As long as the package is installed as a subdirectory of a
+directory in \fB$tcl_pkgPath\fR it will automatically be found during
+\fBpackage require\fR commands.
+.br
+If you install the package anywhere else, then you must ensure that
+the directory containing the package is in the \fBauto_path\fR global variable
+or an immediate subdirectory of one of the directories in \fBauto_path\fR.
+\fBAuto_path\fR contains a list of directories that are searched
+by both the auto-loader and the package loader; by default it
+includes \fB$tcl_pkgPath\fR.
+The package loader also checks all of the subdirectories of the
+directories in \fBauto_path\fR.
+You can add a directory to \fBauto_path\fR explicitly in your
+application, or you can add the directory to your \fBTCLLIBPATH\fR
+environment variable:  if this environment variable is present,
+Tcl initializes \fBauto_path\fR from it during application startup.
+.IP [4]
+Once the above steps have been taken, all you need to do to use a
+package is to invoke \fBpackage require\fR.
+For example, if versions 2.1, 2.3, and 3.1 of package \fBTest\fR
+have been indexed by \fBpkg_mkIndex\fR, the command
+\fBpackage require Test\fR will make version 3.1 available
+and the command \fBpackage require \-exact Test 2.1\fR will
+make version 2.1 available.
+There may be many versions of a package in the various index files
+in \fBauto_path\fR, but only one will actually be loaded in a given
+interpreter, based on the first call to \fBpackage require\fR.
+Different versions of a package may be loaded in different
+interpreters.
+
+.SH OPTIONS
+The optional switches are:
+.TP 15
+\fB\-direct\fR
+The generated index will implement direct loading of the package
+upon \fBpackage require\fR.  This is the default.
+.TP 15
+\fB\-lazy\fR
+The generated index will manage to delay loading the package until the
+use of one of the commands provided by the package, instead of loading
+it immediately upon \fBpackage require\fR.
+.TP 15
+\fB\-load \fIpkgPat\fR
+The index process will pre-load any packages that exist in the
+current interpreter and match \fIpkgPat\fP into the slave interpreter used to
+generate the index.  The pattern match uses string match rules.
+See COMPLEX CASES below.
+.TP 15
+\fB\-verbose\fR
+Generate output during the indexing process.  Output is via
+the \fBtclLog\fP procedure, which by default prints to stderr.
+.TP 15
+\fB\-\-\fR
+End of the flags, in case \fIdir\fP begins with a dash.
+
+.SH "PACKAGES AND THE AUTO-LOADER"
+.PP
+The package management facilities overlap somewhat with the auto-loader,
+in that both arrange for files to be loaded on-demand.
+However, package management is a higher-level mechanism that uses
+the auto-loader for the last step in the loading process.
+It is generally better to index a package with \fBpkg_mkIndex\fR
+rather than \fBauto_mkindex\fR because the package mechanism provides
+version control:  several versions of a package can be made available
+in the index files, with different applications using different
+versions based on \fBpackage require\fR commands.
+In contrast, \fBauto_mkindex\fR does not understand versions so
+it can only handle a single version of each package. 
+It is probably not a good idea to index a given package with both
+\fBpkg_mkIndex\fR and \fBauto_mkindex\fR.
+If you use \fBpkg_mkIndex\fR to index a package, its commands cannot
+be invoked until \fBpackage require\fR has been used to select a
+version;  in contrast, packages indexed with \fBauto_mkindex\fR
+can be used immediately since there is no version control.
+
+.SH "HOW IT WORKS"
+.PP
+\fBPkg_mkIndex\fR depends on the \fBpackage unknown\fR command,
+the \fBpackage ifneeded\fR command, and the auto-loader.
+The first time a \fBpackage require\fR command is invoked,
+the \fBpackage unknown\fR script is invoked.
+This is set by Tcl initialization to a script that
+evaluates all of the \fBpkgIndex.tcl\fR files in the
+\fBauto_path\fR.
+The \fBpkgIndex.tcl\fR files contain \fBpackage ifneeded\fR
+commands for each version of each available package;  these commands
+invoke \fBpackage provide\fR commands to announce the
+availability of the package, and they setup auto-loader
+information to load the files of the package.
+.VS 8.3
+If the \fI\-lazy\fR flag was provided when the \fBpkgIndex.tcl\fR
+was generated,
+.VE
+a given file of a given version of a given package isn't
+actually loaded until the first time one of its commands
+is invoked.
+Thus, after invoking \fBpackage require\fR you may
+not see the package's commands in the interpreter, but you will be able
+to invoke the commands and they will be auto-loaded.
+
+.VS 8.3
+.SH "DIRECT LOADING"
+.PP
+Some packages, for instance packages which use namespaces and export
+commands or those which require special initialization, might select
+that their package files be loaded immediately upon \fBpackage require\fR
+instead of delaying the actual loading to the first use of one of the
+package's command. This is the default mode when generating the package
+index.  It can be overridden by specifying the \fI\-lazy\fR argument.
+.VE
+
+.SH "COMPLEX CASES"
+Most complex cases of dependencies among scripts
+and binary files, and packages being split among scripts and
+binary files are handled OK.  However, you may have to adjust
+the order in which files are processed by \fBpkg_mkIndex\fR.
+These issues are described in detail below.
+.PP
+If each script or file contains one package, and packages
+are only contained in one file, then things are easy.
+You simply specify all files to be indexed in any order
+with some glob patterns.
+.PP
+In general, it is OK for scripts to have dependencies on other
+packages.
+If scripts contain \fBpackage require\fP commands, these are
+stubbed out in the interpreter used to process the scripts,
+so these do not cause problems.
+If scripts call into other packages in global code,
+these calls are handled by a stub \fBunknown\fP command.
+However, if scripts make variable references to other package's
+variables in global code, these will cause errors.  That is
+also bad coding style.
+.PP
+If binary files have dependencies on other packages, things
+can become tricky because it is not possible to stub out
+C-level API's such as \fBTcl_PkgRequire\fP API
+when loading a binary file.
+For example, suppose the BLT package requires Tk, and expresses
+this with a call to \fBTcl_PkgRequire\fP in its \fBBlt_Init\fP routine.
+To support this, you must run \fBpkg_mkIndex\fR in an interpreter that
+has Tk loaded.  You can achieve this with the
+\fB\-load \fIpkgPat\fR option.  If you specify this option,
+\fBpkg_mkIndex\fR will load any packages listed by
+\fBinfo loaded\fP and that match \fIpkgPat\fP
+into the interpreter used to process files.
+In most cases this will satisfy the \fBTcl_PkgRequire\fP calls
+made by binary files.
+.PP
+If you are indexing two binary files and one depends on the other,
+you should specify the one that has dependencies last.
+This way the one without dependencies will get loaded and indexed,
+and then the package it provides
+will be available when the second file is processed.
+You may also need to load the first package into the
+temporary interpreter used to create the index by using
+the \fB\-load\fP flag;
+it won't hurt to specify package patterns that are not yet loaded.
+.PP
+If you have a package that is split across scripts and a binary file,
+then you should avoid the \fB\-load\fP flag. The problem is that
+if you load a package before computing the index it masks any
+other files that provide part of the same package.
+If you must use \fB\-load\fP,
+then you must specify the scripts first; otherwise the package loaded from
+the binary file may mask the package defined by the scripts.
+
+.SH "SEE ALSO"
+package(n)
+
+.SH KEYWORDS
+auto-load, index, package, version
diff --git a/raw/mann/popup.n b/raw/mann/popup.n
new file mode 100644
index 0000000..cd749ed
--- /dev/null
+++ b/raw/mann/popup.n
@@ -0,0 +1,268 @@
+'\"
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: popup.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: popup.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_popup n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_popup \- Post a popup menu
+.SH SYNOPSIS
+\fBtk_popup \fImenu x y \fR?\fIentry\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This procedure posts a menu at a given position on the screen and
+configures Tk so that the menu and its cascaded children can be
+traversed with the mouse or the keyboard.
+\fIMenu\fR is the name of a menu widget and \fIx\fR and \fIy\fR
+are the root coordinates at which to display the menu.
+If \fIentry\fR is omitted or an empty string, the
+menu's upper left corner is positioned at the given point.
+Otherwise \fIentry\fR gives the index of an entry in \fImenu\fR and
+the menu will be positioned so that the entry is positioned over
+the given point.
+
+.SH KEYWORDS
+menu, popup
diff --git a/raw/mann/proc.n b/raw/mann/proc.n
new file mode 100644
index 0000000..e63bc75
--- /dev/null
+++ b/raw/mann/proc.n
@@ -0,0 +1,312 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: proc.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: proc.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH proc n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+proc \- Create a Tcl procedure
+.SH SYNOPSIS
+\fBproc \fIname args body\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBproc\fR command creates a new Tcl procedure named
+\fIname\fR, replacing
+any existing command or procedure there may have been by that name.
+Whenever the new command is invoked, the contents of \fIbody\fR will
+be executed by the Tcl interpreter.
+Normally, \fIname\fR is unqualified
+(does not include the names of any containing namespaces),
+and the new procedure is created in the current namespace.
+If \fIname\fR includes any namespace qualifiers,
+the procedure is created in the specified namespace.
+\fIArgs\fR specifies the formal arguments to the
+procedure.  It consists of a list, possibly empty, each of whose
+elements specifies
+one argument.  Each argument specifier is also a list with either
+one or two fields.  If there is only a single field in the specifier
+then it is the name of the argument; if there are two fields, then
+the first is the argument name and the second is its default value.
+.PP
+When \fIname\fR is invoked a local variable
+will be created for each of the formal arguments to the procedure; its
+value will be the value of corresponding argument in the invoking command
+or the argument's default value.
+Arguments with default values need not be
+specified in a procedure invocation.  However, there must be enough
+actual arguments for all the
+formal arguments that don't have defaults, and there must not be any extra
+actual arguments.  There is one special case to permit procedures with
+variable numbers of arguments.  If the last formal argument has the name
+\fBargs\fR, then a call to the procedure may contain more actual arguments
+than the procedure has formals.  In this case, all of the actual arguments
+starting at the one that would be assigned to \fBargs\fR are combined into
+a list (as if the \fBlist\fR command had been used); this combined value
+is assigned to the local variable \fBargs\fR.
+.PP
+When \fIbody\fR is being executed, variable names normally refer to
+local variables, which are created automatically when referenced and
+deleted when the procedure returns.  One local variable is automatically
+created for each of the procedure's arguments.
+Global variables can only be accessed by invoking
+the \fBglobal\fR command or the \fBupvar\fR command.
+Namespace variables can only be accessed by invoking
+the \fBvariable\fR command or the \fBupvar\fR command.
+.PP
+The \fBproc\fR command returns an empty string.  When a procedure is
+invoked, the procedure's return value is the value specified in a
+\fBreturn\fR command.  If the procedure doesn't execute an explicit
+\fBreturn\fR, then its return value is the value of the last command
+executed in the procedure's body.
+If an error occurs while executing the procedure
+body, then the procedure-as-a-whole will return that same error.
+
+.SH "SEE ALSO"
+info(n), unknown(n)
+
+.SH KEYWORDS
+argument, procedure
diff --git a/raw/mann/puts.n b/raw/mann/puts.n
new file mode 100644
index 0000000..0ed5241
--- /dev/null
+++ b/raw/mann/puts.n
@@ -0,0 +1,304 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: puts.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: puts.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH puts n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+puts \- Write to a channel
+.SH SYNOPSIS
+\fBputs \fR?\fB\-nonewline\fR? ?\fIchannelId\fR? \fIstring\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Writes the characters given by \fIstring\fR to the channel given
+by \fIchannelId\fR.
+\fIChannelId\fR must be a channel identifier such as returned from a
+previous invocation of \fBopen\fR or \fBsocket\fR. It must have been opened
+for output. If no \fIchannelId\fR is specified then it defaults to
+\fBstdout\fR. \fBPuts\fR normally outputs a newline character after
+\fIstring\fR, but this feature may be suppressed by specifying the
+\fB\-nonewline\fR switch.
+.PP
+Newline characters in the output are translated by \fBputs\fR to
+platform-specific end-of-line sequences according to the current
+value of the \fB\-translation\fR option for the channel (for example,
+on PCs newlines are normally replaced with carriage-return-linefeed
+sequences;  on Macintoshes newlines are normally replaced with
+carriage-returns).
+See the \fBfconfigure\fR manual entry for a discussion on ways in
+which \fBfconfigure\fR will alter output.
+.PP
+Tcl buffers output internally, so characters written with \fBputs\fR
+may not appear immediately on the output file or device;  Tcl will
+normally delay output until the buffer is full or the channel is
+closed.
+You can force output to appear immediately with the \fBflush\fR
+command.
+.PP
+When the output buffer fills up, the \fBputs\fR command will normally
+block until all the buffered data has been accepted for output by the
+operating system.
+If \fIchannelId\fR is in nonblocking mode then the \fBputs\fR command
+will not block even if the operating system cannot accept the data.
+Instead, Tcl continues to buffer the data and writes it in the
+background as fast as the underlying file or device can accept it.
+The application must use the Tcl event loop for nonblocking output
+to work;  otherwise Tcl never finds out that the file or device is
+ready for more output data.
+It is possible for an arbitrarily large amount of data to be
+buffered for a channel in nonblocking mode, which could consume a
+large amount of memory.
+To avoid wasting memory, nonblocking I/O should normally
+be used in an event-driven fashion with the \fBfileevent\fR command
+(don't invoke \fBputs\fR unless you have recently been notified
+via a file event that the channel is ready for more output data).
+
+.SH "SEE ALSO"
+file(n), fileevent(n)
+
+.SH KEYWORDS
+channel, newline, output, write
diff --git a/raw/mann/pwd.n b/raw/mann/pwd.n
new file mode 100644
index 0000000..c9aadcc
--- /dev/null
+++ b/raw/mann/pwd.n
@@ -0,0 +1,263 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: pwd.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: pwd.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pwd n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pwd \- Return the current working directory
+.SH SYNOPSIS
+\fBpwd\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Returns the path name of the current working directory.
+
+.SH "SEE ALSO"
+file(n), cd(n), glob(n), filename(n)
+
+.SH KEYWORDS
+working directory
diff --git a/raw/mann/raise.n b/raw/mann/raise.n
new file mode 100644
index 0000000..2e3903c
--- /dev/null
+++ b/raw/mann/raise.n
@@ -0,0 +1,273 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: raise.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: raise.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH raise n 3.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+raise \- Change a window's position in the stacking order
+.SH SYNOPSIS
+\fBraise \fIwindow \fR?\fIaboveThis\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+If the \fIaboveThis\fR argument is omitted then the command raises
+\fIwindow\fR so that it is above all of its siblings in the stacking
+order (it will not be obscured by any siblings and will obscure
+any siblings that overlap it).
+If \fIaboveThis\fR is specified then it must be the path name of
+a window that is either a sibling of \fIwindow\fR or the descendant
+of a sibling of \fIwindow\fR.
+In this case the \fBraise\fR command will insert
+\fIwindow\fR into the stacking order just above \fIaboveThis\fR
+(or the ancestor of \fIaboveThis\fR that is a sibling of \fIwindow\fR);
+this could end up either raising or lowering \fIwindow\fR.
+
+.SH "SEE ALSO"
+lower
+
+.SH KEYWORDS
+obscure, raise, stacking order
diff --git a/raw/mann/re_syntax.n b/raw/mann/re_syntax.n
new file mode 100644
index 0000000..907a744
--- /dev/null
+++ b/raw/mann/re_syntax.n
@@ -0,0 +1,1167 @@
+'\"
+'\" Copyright (c) 1998 Sun Microsystems, Inc.
+'\" Copyright (c) 1999 Scriptics Corporation
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: re_syntax.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: re_syntax.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH re_syntax n "8.1" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+re_syntax \- Syntax of Tcl regular expressions.
+.BE
+
+.SH DESCRIPTION
+.PP
+A \fIregular expression\fR describes strings of characters.
+It's a pattern that matches certain strings and doesn't match others.
+
+.SH "DIFFERENT FLAVORS OF REs"
+Regular expressions (``RE''s), as defined by POSIX, come in two
+flavors: \fIextended\fR REs (``EREs'') and \fIbasic\fR REs (``BREs'').
+EREs are roughly those of the traditional \fIegrep\fR, while BREs are
+roughly those of the traditional \fIed\fR.  This implementation adds
+a third flavor, \fIadvanced\fR REs (``AREs''), basically EREs with
+some significant extensions.
+.PP
+This manual page primarily describes AREs.  BREs mostly exist for
+backward compatibility in some old programs; they will be discussed at
+the end.  POSIX EREs are almost an exact subset of AREs.  Features of
+AREs that are not present in EREs will be indicated.
+
+.SH "REGULAR EXPRESSION SYNTAX"
+.PP
+Tcl regular expressions are implemented using the package written by
+Henry Spencer, based on the 1003.2 spec and some (not quite all) of
+the Perl5 extensions (thanks, Henry!).  Much of the description of
+regular expressions below is copied verbatim from his manual entry.
+.PP
+An ARE is one or more \fIbranches\fR,
+separated by `\fB|\fR',
+matching anything that matches any of the branches.
+.PP
+A branch is zero or more \fIconstraints\fR or \fIquantified atoms\fR,
+concatenated.
+It matches a match for the first, followed by a match for the second, etc;
+an empty branch matches the empty string.
+.PP
+A quantified atom is an \fIatom\fR possibly followed
+by a single \fIquantifier\fR.
+Without a quantifier, it matches a match for the atom.
+The quantifiers,
+and what a so-quantified atom matches, are:
+.RS 2
+.TP 6
+\fB*\fR
+a sequence of 0 or more matches of the atom
+.TP
+\fB+\fR
+a sequence of 1 or more matches of the atom
+.TP
+\fB?\fR
+a sequence of 0 or 1 matches of the atom
+.TP
+\fB{\fIm\fB}\fR
+a sequence of exactly \fIm\fR matches of the atom
+.TP
+\fB{\fIm\fB,}\fR
+a sequence of \fIm\fR or more matches of the atom
+.TP
+\fB{\fIm\fB,\fIn\fB}\fR
+a sequence of \fIm\fR through \fIn\fR (inclusive) matches of the atom;
+\fIm\fR may not exceed \fIn\fR
+.TP
+\fB*?  +?  ??  {\fIm\fB}?  {\fIm\fB,}?  {\fIm\fB,\fIn\fB}?\fR
+\fInon-greedy\fR quantifiers,
+which match the same possibilities,
+but prefer the smallest number rather than the largest number
+of matches (see MATCHING)
+.RE
+.PP
+The forms using
+\fB{\fR and \fB}\fR
+are known as \fIbound\fRs.
+The numbers
+\fIm\fR and \fIn\fR are unsigned decimal integers
+with permissible values from 0 to 255 inclusive.
+.PP
+An atom is one of:
+.RS 2
+.TP 6
+\fB(\fIre\fB)\fR
+(where \fIre\fR is any regular expression)
+matches a match for
+\fIre\fR, with the match noted for possible reporting
+.TP
+\fB(?:\fIre\fB)\fR
+as previous,
+but does no reporting
+(a ``non-capturing'' set of parentheses)
+.TP
+\fB()\fR
+matches an empty string,
+noted for possible reporting
+.TP
+\fB(?:)\fR
+matches an empty string,
+without reporting
+.TP
+\fB[\fIchars\fB]\fR
+a \fIbracket expression\fR,
+matching any one of the \fIchars\fR (see BRACKET EXPRESSIONS for more detail)
+.TP
+ \fB.\fR
+matches any single character
+.TP
+\fB\e\fIk\fR
+(where \fIk\fR is a non-alphanumeric character)
+matches that character taken as an ordinary character,
+e.g. \e\e matches a backslash character
+.TP
+\fB\e\fIc\fR
+where \fIc\fR is alphanumeric
+(possibly followed by other characters),
+an \fIescape\fR (AREs only),
+see ESCAPES below
+.TP
+\fB{\fR
+when followed by a character other than a digit,
+matches the left-brace character `\fB{\fR';
+when followed by a digit, it is the beginning of a
+\fIbound\fR (see above)
+.TP
+\fIx\fR
+where \fIx\fR is
+a single character with no other significance, matches that character.
+.RE
+.PP
+A \fIconstraint\fR matches an empty string when specific conditions
+are met.
+A constraint may not be followed by a quantifier.
+The simple constraints are as follows; some more constraints are
+described later, under ESCAPES.
+.RS 2
+.TP 8
+\fB^\fR
+matches at the beginning of a line
+.TP
+\fB$\fR
+matches at the end of a line
+.TP
+\fB(?=\fIre\fB)\fR
+\fIpositive lookahead\fR (AREs only), matches at any point
+where a substring matching \fIre\fR begins
+.TP
+\fB(?!\fIre\fB)\fR
+\fInegative lookahead\fR (AREs only), matches at any point
+where no substring matching \fIre\fR begins
+.RE
+.PP
+The lookahead constraints may not contain back references (see later),
+and all parentheses within them are considered non-capturing.
+.PP
+An RE may not end with `\fB\e\fR'.
+
+.SH "BRACKET EXPRESSIONS"
+A \fIbracket expression\fR is a list of characters enclosed in `\fB[\|]\fR'.
+It normally matches any single character from the list (but see below).
+If the list begins with `\fB^\fR',
+it matches any single character
+(but see below) \fInot\fR from the rest of the list.
+.PP
+If two characters in the list are separated by `\fB\-\fR',
+this is shorthand
+for the full \fIrange\fR of characters between those two (inclusive) in the
+collating sequence,
+e.g.
+\fB[0\-9]\fR
+in ASCII matches any decimal digit.
+Two ranges may not share an
+endpoint, so e.g.
+\fBa\-c\-e\fR
+is illegal.
+Ranges are very collating-sequence-dependent,
+and portable programs should avoid relying on them.
+.PP
+To include a literal
+\fB]\fR
+or
+\fB\-\fR
+in the list,
+the simplest method is to
+enclose it in
+\fB[.\fR and \fB.]\fR
+to make it a collating element (see below).
+Alternatively,
+make it the first character
+(following a possible `\fB^\fR'),
+or (AREs only) precede it with `\fB\e\fR'.
+Alternatively, for `\fB\-\fR',
+make it the last character,
+or the second endpoint of a range.
+To use a literal
+\fB\-\fR
+as the first endpoint of a range,
+make it a collating element
+or (AREs only) precede it with `\fB\e\fR'.
+With the exception of these, some combinations using
+\fB[\fR
+(see next
+paragraphs), and escapes,
+all other special characters lose their
+special significance within a bracket expression.
+.PP
+Within a bracket expression, a collating element (a character,
+a multi-character sequence that collates as if it were a single character,
+or a collating-sequence name for either)
+enclosed in
+\fB[.\fR and \fB.]\fR
+stands for the
+sequence of characters of that collating element.
+The sequence is a single element of the bracket expression's list.
+A bracket expression in a locale that has
+multi-character collating elements
+can thus match more than one character.
+.VS 8.2
+So (insidiously), a bracket expression that starts with \fB^\fR
+can match multi-character collating elements even if none of them
+appear in the bracket expression!
+(\fINote:\fR Tcl currently has no multi-character collating elements.
+This information is only for illustration.)
+.PP
+For example, assume the collating sequence includes a \fBch\fR
+multi-character collating element.
+Then the RE \fB[[.ch.]]*c\fR (zero or more \fBch\fP's followed by \fBc\fP)
+matches the first five characters of `\fBchchcc\fR'.
+Also, the RE \fB[^c]b\fR matches all of `\fBchb\fR'
+(because \fB[^c]\fR matches the multi-character \fBch\fR).
+.VE 8.2
+.PP
+Within a bracket expression, a collating element enclosed in
+\fB[=\fR
+and
+\fB=]\fR
+is an equivalence class, standing for the sequences of characters
+of all collating elements equivalent to that one, including itself.
+(If there are no other equivalent collating elements,
+the treatment is as if the enclosing delimiters were `\fB[.\fR'\&
+and `\fB.]\fR'.)
+For example, if
+\fBo\fR
+and
+\fB\o'o^'\fR
+are the members of an equivalence class,
+then `\fB[[=o=]]\fR', `\fB[[=\o'o^'=]]\fR',
+and `\fB[o\o'o^']\fR'\&
+are all synonymous.
+An equivalence class may not be an endpoint
+of a range.
+.VS 8.2
+(\fINote:\fR 
+Tcl currently implements only the Unicode locale.
+It doesn't define any equivalence classes.
+The examples above are just illustrations.)
+.VE 8.2
+.PP
+Within a bracket expression, the name of a \fIcharacter class\fR enclosed
+in
+\fB[:\fR
+and
+\fB:]\fR
+stands for the list of all characters
+(not all collating elements!)
+belonging to that
+class.
+Standard character classes are:
+.PP
+.RS
+.ne 5
+.nf
+.ta 3c
+\fBalpha\fR	A letter. 
+\fBupper\fR	An upper-case letter. 
+\fBlower\fR	A lower-case letter. 
+\fBdigit\fR	A decimal digit. 
+\fBxdigit\fR	A hexadecimal digit. 
+\fBalnum\fR	An alphanumeric (letter or digit). 
+\fBprint\fR	An alphanumeric (same as alnum).
+\fBblank\fR	A space or tab character.
+\fBspace\fR	A character producing white space in displayed text. 
+\fBpunct\fR	A punctuation character. 
+\fBgraph\fR	A character with a visible representation. 
+\fBcntrl\fR	A control character. 
+.fi
+.RE
+.PP
+A locale may provide others.
+.VS 8.2
+(Note that the current Tcl implementation has only one locale:
+the Unicode locale.)
+.VE 8.2
+A character class may not be used as an endpoint of a range.
+.PP
+There are two special cases of bracket expressions:
+the bracket expressions
+\fB[[:<:]]\fR
+and
+\fB[[:>:]]\fR
+are constraints, matching empty strings at
+the beginning and end of a word respectively.
+'\" note, discussion of escapes below references this definition of word
+A word is defined as a sequence of
+word characters
+that is neither preceded nor followed by
+word characters.
+A word character is an
+\fIalnum\fR
+character
+or an underscore
+(\fB_\fR).
+These special bracket expressions are deprecated;
+users of AREs should use constraint escapes instead (see below).
+.SH ESCAPES
+Escapes (AREs only), which begin with a
+\fB\e\fR
+followed by an alphanumeric character,
+come in several varieties:
+character entry, class shorthands, constraint escapes, and back references.
+A
+\fB\e\fR
+followed by an alphanumeric character but not constituting
+a valid escape is illegal in AREs.
+In EREs, there are no escapes:
+outside a bracket expression,
+a
+\fB\e\fR
+followed by an alphanumeric character merely stands for that
+character as an ordinary character,
+and inside a bracket expression,
+\fB\e\fR
+is an ordinary character.
+(The latter is the one actual incompatibility between EREs and AREs.)
+.PP
+Character-entry escapes (AREs only) exist to make it easier to specify
+non-printing and otherwise inconvenient characters in REs:
+.RS 2
+.TP 5
+\fB\ea\fR
+alert (bell) character, as in C
+.TP
+\fB\eb\fR
+backspace, as in C
+.TP
+\fB\eB\fR
+synonym for
+\fB\e\fR
+to help reduce backslash doubling in some
+applications where there are multiple levels of backslash processing
+.TP
+\fB\ec\fIX\fR
+(where X is any character) the character whose
+low-order 5 bits are the same as those of
+\fIX\fR,
+and whose other bits are all zero
+.TP
+\fB\ee\fR
+the character whose collating-sequence name
+is `\fBESC\fR',
+or failing that, the character with octal value 033
+.TP
+\fB\ef\fR
+formfeed, as in C
+.TP
+\fB\en\fR
+newline, as in C
+.TP
+\fB\er\fR
+carriage return, as in C
+.TP
+\fB\et\fR
+horizontal tab, as in C
+.TP
+\fB\eu\fIwxyz\fR
+(where
+\fIwxyz\fR
+is exactly four hexadecimal digits)
+the Unicode character
+\fBU+\fIwxyz\fR
+in the local byte ordering
+.TP
+\fB\eU\fIstuvwxyz\fR
+(where
+\fIstuvwxyz\fR
+is exactly eight hexadecimal digits)
+reserved for a somewhat-hypothetical Unicode extension to 32 bits
+.TP
+\fB\ev\fR
+vertical tab, as in C
+are all available.
+.TP
+\fB\ex\fIhhh\fR
+(where
+\fIhhh\fR
+is any sequence of hexadecimal digits)
+the character whose hexadecimal value is
+\fB0x\fIhhh\fR
+(a single character no matter how many hexadecimal digits are used).
+.TP
+\fB\e0\fR
+the character whose value is
+\fB0\fR
+.TP
+\fB\e\fIxy\fR
+(where
+\fIxy\fR
+is exactly two octal digits,
+and is not a
+\fIback reference\fR (see below))
+the character whose octal value is
+\fB0\fIxy\fR
+.TP
+\fB\e\fIxyz\fR
+(where
+\fIxyz\fR
+is exactly three octal digits,
+and is not a
+back reference (see below))
+the character whose octal value is
+\fB0\fIxyz\fR
+.RE
+.PP
+Hexadecimal digits are `\fB0\fR'-`\fB9\fR', `\fBa\fR'-`\fBf\fR',
+and `\fBA\fR'-`\fBF\fR'.
+Octal digits are `\fB0\fR'-`\fB7\fR'.
+.PP
+The character-entry escapes are always taken as ordinary characters.
+For example,
+\fB\e135\fR
+is
+\fB]\fR
+in ASCII,
+but
+\fB\e135\fR
+does not terminate a bracket expression.
+Beware, however, that some applications (e.g., C compilers) interpret 
+such sequences themselves before the regular-expression package
+gets to see them, which may require doubling (quadrupling, etc.) the `\fB\e\fR'.
+.PP
+Class-shorthand escapes (AREs only) provide shorthands for certain commonly-used
+character classes:
+.RS 2
+.TP 10
+\fB\ed\fR
+\fB[[:digit:]]\fR
+.TP
+\fB\es\fR
+\fB[[:space:]]\fR
+.TP
+\fB\ew\fR
+\fB[[:alnum:]_]\fR
+(note underscore)
+.TP
+\fB\eD\fR
+\fB[^[:digit:]]\fR
+.TP
+\fB\eS\fR
+\fB[^[:space:]]\fR
+.TP
+\fB\eW\fR
+\fB[^[:alnum:]_]\fR
+(note underscore)
+.RE
+.PP
+Within bracket expressions, `\fB\ed\fR', `\fB\es\fR',
+and `\fB\ew\fR'\&
+lose their outer brackets,
+and `\fB\eD\fR', `\fB\eS\fR',
+and `\fB\eW\fR'\&
+are illegal.
+.VS 8.2
+(So, for example, \fB[a-c\ed]\fR is equivalent to \fB[a-c[:digit:]]\fR.
+Also, \fB[a-c\eD]\fR, which is equivalent to \fB[a-c^[:digit:]]\fR, is illegal.)
+.VE 8.2
+.PP
+A constraint escape (AREs only) is a constraint,
+matching the empty string if specific conditions are met,
+written as an escape:
+.RS 2
+.TP 6
+\fB\eA\fR
+matches only at the beginning of the string
+(see MATCHING, below, for how this differs from `\fB^\fR')
+.TP
+\fB\em\fR
+matches only at the beginning of a word
+.TP
+\fB\eM\fR
+matches only at the end of a word
+.TP
+\fB\ey\fR
+matches only at the beginning or end of a word
+.TP
+\fB\eY\fR
+matches only at a point that is not the beginning or end of a word
+.TP
+\fB\eZ\fR
+matches only at the end of the string
+(see MATCHING, below, for how this differs from `\fB$\fR')
+.TP
+\fB\e\fIm\fR
+(where
+\fIm\fR
+is a nonzero digit) a \fIback reference\fR, see below
+.TP
+\fB\e\fImnn\fR
+(where
+\fIm\fR
+is a nonzero digit, and
+\fInn\fR
+is some more digits,
+and the decimal value
+\fImnn\fR
+is not greater than the number of closing capturing parentheses seen so far)
+a \fIback reference\fR, see below
+.RE
+.PP
+A word is defined as in the specification of
+\fB[[:<:]]\fR
+and
+\fB[[:>:]]\fR
+above.
+Constraint escapes are illegal within bracket expressions.
+.PP
+A back reference (AREs only) matches the same string matched by the parenthesized
+subexpression specified by the number,
+so that (e.g.)
+\fB([bc])\e1\fR
+matches
+\fBbb\fR
+or
+\fBcc\fR
+but not `\fBbc\fR'.
+The subexpression must entirely precede the back reference in the RE.
+Subexpressions are numbered in the order of their leading parentheses.
+Non-capturing parentheses do not define subexpressions.
+.PP
+There is an inherent historical ambiguity between octal character-entry 
+escapes and back references, which is resolved by heuristics,
+as hinted at above.
+A leading zero always indicates an octal escape.
+A single non-zero digit, not followed by another digit,
+is always taken as a back reference.
+A multi-digit sequence not starting with a zero is taken as a back 
+reference if it comes after a suitable subexpression
+(i.e. the number is in the legal range for a back reference),
+and otherwise is taken as octal.
+.SH "METASYNTAX"
+In addition to the main syntax described above, there are some special
+forms and miscellaneous syntactic facilities available.
+.PP
+Normally the flavor of RE being used is specified by
+application-dependent means.
+However, this can be overridden by a \fIdirector\fR.
+If an RE of any flavor begins with `\fB***:\fR',
+the rest of the RE is an ARE.
+If an RE of any flavor begins with `\fB***=\fR',
+the rest of the RE is taken to be a literal string,
+with all characters considered ordinary characters.
+.PP
+An ARE may begin with \fIembedded options\fR:
+a sequence
+\fB(?\fIxyz\fB)\fR
+(where
+\fIxyz\fR
+is one or more alphabetic characters)
+specifies options affecting the rest of the RE.
+These supplement, and can override,
+any options specified by the application.
+The available option letters are:
+.RS 2
+.TP 3
+\fBb\fR
+rest of RE is a BRE
+.TP 3
+\fBc\fR
+case-sensitive matching (usual default)
+.TP 3
+\fBe\fR
+rest of RE is an ERE
+.TP 3
+\fBi\fR
+case-insensitive matching (see MATCHING, below)
+.TP 3
+\fBm\fR
+historical synonym for
+\fBn\fR
+.TP 3
+\fBn\fR
+newline-sensitive matching (see MATCHING, below)
+.TP 3
+\fBp\fR
+partial newline-sensitive matching (see MATCHING, below)
+.TP 3
+\fBq\fR
+rest of RE is a literal (``quoted'') string, all ordinary characters
+.TP 3
+\fBs\fR
+non-newline-sensitive matching (usual default)
+.TP 3
+\fBt\fR
+tight syntax (usual default; see below)
+.TP 3
+\fBw\fR
+inverse partial newline-sensitive (``weird'') matching (see MATCHING, below)
+.TP 3
+\fBx\fR
+expanded syntax (see below)
+.RE
+.PP
+Embedded options take effect at the
+\fB)\fR
+terminating the sequence.
+They are available only at the start of an ARE,
+and may not be used later within it.
+.PP
+In addition to the usual (\fItight\fR) RE syntax, in which all characters are
+significant, there is an \fIexpanded\fR syntax,
+available in all flavors of RE
+with the \fB-expanded\fR switch, or in AREs with the embedded x option.
+In the expanded syntax,
+white-space characters are ignored
+and all characters between a
+\fB#\fR
+and the following newline (or the end of the RE) are ignored,
+permitting paragraphing and commenting a complex RE.
+There are three exceptions to that basic rule:
+.RS 2
+.PP
+a white-space character or `\fB#\fR' preceded by `\fB\e\fR' is retained
+.PP
+white space or `\fB#\fR' within a bracket expression is retained
+.PP
+white space and comments are illegal within multi-character symbols
+like the ARE `\fB(?:\fR' or the BRE `\fB\e(\fR'
+.RE
+.PP
+Expanded-syntax white-space characters are blank, tab, newline, and
+.VS 8.2
+any character that belongs to the \fIspace\fR character class.
+.VE 8.2
+.PP
+Finally, in an ARE,
+outside bracket expressions, the sequence `\fB(?#\fIttt\fB)\fR'
+(where
+\fIttt\fR
+is any text not containing a `\fB)\fR')
+is a comment,
+completely ignored.
+Again, this is not allowed between the characters of
+multi-character symbols like `\fB(?:\fR'.
+Such comments are more a historical artifact than a useful facility,
+and their use is deprecated;
+use the expanded syntax instead.
+.PP
+\fINone\fR of these metasyntax extensions is available if the application
+(or an initial
+\fB***=\fR
+director)
+has specified that the user's input be treated as a literal string
+rather than as an RE.
+.SH MATCHING
+In the event that an RE could match more than one substring of a given
+string,
+the RE matches the one starting earliest in the string.
+If the RE could match more than one substring starting at that point,
+its choice is determined by its \fIpreference\fR:
+either the longest substring, or the shortest.
+.PP
+Most atoms, and all constraints, have no preference.
+A parenthesized RE has the same preference (possibly none) as the RE.
+A quantified atom with quantifier
+\fB{\fIm\fB}\fR
+or
+\fB{\fIm\fB}?\fR
+has the same preference (possibly none) as the atom itself.
+A quantified atom with other normal quantifiers (including
+\fB{\fIm\fB,\fIn\fB}\fR
+with
+\fIm\fR
+equal to
+\fIn\fR)
+prefers longest match.
+A quantified atom with other non-greedy quantifiers (including
+\fB{\fIm\fB,\fIn\fB}?\fR
+with
+\fIm\fR
+equal to
+\fIn\fR)
+prefers shortest match.
+A branch has the same preference as the first quantified atom in it
+which has a preference.
+An RE consisting of two or more branches connected by the
+\fB|\fR
+operator prefers longest match.
+.PP
+Subject to the constraints imposed by the rules for matching the whole RE,
+subexpressions also match the longest or shortest possible substrings,
+based on their preferences,
+with subexpressions starting earlier in the RE taking priority over
+ones starting later.
+Note that outer subexpressions thus take priority over
+their component subexpressions.
+.PP
+Note that the quantifiers
+\fB{1,1}\fR
+and
+\fB{1,1}?\fR
+can be used to force longest and shortest preference, respectively,
+on a subexpression or a whole RE.
+.PP
+Match lengths are measured in characters, not collating elements.
+An empty string is considered longer than no match at all.
+For example,
+\fBbb*\fR
+matches the three middle characters of `\fBabbbc\fR',
+\fB(week|wee)(night|knights)\fR
+matches all ten characters of `\fBweeknights\fR',
+when
+\fB(.*).*\fR
+is matched against
+\fBabc\fR
+the parenthesized subexpression
+matches all three characters, and
+when
+\fB(a*)*\fR
+is matched against
+\fBbc\fR
+both the whole RE and the parenthesized
+subexpression match an empty string.
+.PP
+If case-independent matching is specified,
+the effect is much as if all case distinctions had vanished from the
+alphabet.
+When an alphabetic that exists in multiple cases appears as an
+ordinary character outside a bracket expression, it is effectively
+transformed into a bracket expression containing both cases,
+so that
+\fBx\fR
+becomes `\fB[xX]\fR'.
+When it appears inside a bracket expression, all case counterparts
+of it are added to the bracket expression, so that
+\fB[x]\fR
+becomes
+\fB[xX]\fR
+and
+\fB[^x]\fR
+becomes `\fB[^xX]\fR'.
+.PP
+If newline-sensitive matching is specified, \fB.\fR
+and bracket expressions using
+\fB^\fR
+will never match the newline character
+(so that matches will never cross newlines unless the RE
+explicitly arranges it)
+and
+\fB^\fR
+and
+\fB$\fR
+will match the empty string after and before a newline
+respectively, in addition to matching at beginning and end of string
+respectively.
+ARE
+\fB\eA\fR
+and
+\fB\eZ\fR
+continue to match beginning or end of string \fIonly\fR.
+.PP
+If partial newline-sensitive matching is specified,
+this affects \fB.\fR
+and bracket expressions
+as with newline-sensitive matching, but not
+\fB^\fR
+and `\fB$\fR'.
+.PP
+If inverse partial newline-sensitive matching is specified,
+this affects
+\fB^\fR
+and
+\fB$\fR
+as with
+newline-sensitive matching,
+but not \fB.\fR
+and bracket expressions.
+This isn't very useful but is provided for symmetry.
+.SH "LIMITS AND COMPATIBILITY"
+No particular limit is imposed on the length of REs.
+Programs intended to be highly portable should not employ REs longer
+than 256 bytes,
+as a POSIX-compliant implementation can refuse to accept such REs.
+.PP
+The only feature of AREs that is actually incompatible with
+POSIX EREs is that
+\fB\e\fR
+does not lose its special
+significance inside bracket expressions.
+All other ARE features use syntax which is illegal or has
+undefined or unspecified effects in POSIX EREs;
+the
+\fB***\fR
+syntax of directors likewise is outside the POSIX
+syntax for both BREs and EREs.
+.PP
+Many of the ARE extensions are borrowed from Perl, but some have
+been changed to clean them up, and a few Perl extensions are not present.
+Incompatibilities of note include `\fB\eb\fR', `\fB\eB\fR',
+the lack of special treatment for a trailing newline,
+the addition of complemented bracket expressions to the things
+affected by newline-sensitive matching,
+the restrictions on parentheses and back references in lookahead constraints,
+and the longest/shortest-match (rather than first-match) matching semantics.
+.PP
+The matching rules for REs containing both normal and non-greedy quantifiers
+have changed since early beta-test versions of this package.
+(The new rules are much simpler and cleaner,
+but don't work as hard at guessing the user's real intentions.)
+.PP
+Henry Spencer's original 1986 \fIregexp\fR package,
+still in widespread use (e.g., in pre-8.1 releases of Tcl),
+implemented an early version of today's EREs.
+There are four incompatibilities between \fIregexp\fR's near-EREs
+(`RREs' for short) and AREs.
+In roughly increasing order of significance:
+.PP
+.RS
+In AREs,
+\fB\e\fR
+followed by an alphanumeric character is either an
+escape or an error,
+while in RREs, it was just another way of writing the 
+alphanumeric.
+This should not be a problem because there was no reason to write
+such a sequence in RREs.
+.PP
+\fB{\fR
+followed by a digit in an ARE is the beginning of a bound,
+while in RREs,
+\fB{\fR
+was always an ordinary character.
+Such sequences should be rare,
+and will often result in an error because following characters
+will not look like a valid bound.
+.PP
+In AREs,
+\fB\e\fR
+remains a special character within `\fB[\|]\fR',
+so a literal
+\fB\e\fR
+within
+\fB[\|]\fR
+must be written `\fB\e\e\fR'.
+\fB\e\e\fR
+also gives a literal
+\fB\e\fR
+within
+\fB[\|]\fR
+in RREs,
+but only truly paranoid programmers routinely doubled the backslash.
+.PP
+AREs report the longest/shortest match for the RE,
+rather than the first found in a specified search order.
+This may affect some RREs which were written in the expectation that
+the first match would be reported.
+(The careful crafting of RREs to optimize the search order for fast
+matching is obsolete (AREs examine all possible matches
+in parallel, and their performance is largely insensitive to their
+complexity) but cases where the search order was exploited to deliberately 
+find a match which was \fInot\fR the longest/shortest will need rewriting.)
+.RE
+
+.SH "BASIC REGULAR EXPRESSIONS"
+BREs differ from EREs in several respects.  `\fB|\fR', `\fB+\fR',
+and
+\fB?\fR
+are ordinary characters and there is no equivalent
+for their functionality.
+The delimiters for bounds are
+\fB\e{\fR
+and `\fB\e}\fR',
+with
+\fB{\fR
+and
+\fB}\fR
+by themselves ordinary characters.
+The parentheses for nested subexpressions are
+\fB\e(\fR
+and `\fB\e)\fR',
+with
+\fB(\fR
+and
+\fB)\fR
+by themselves ordinary characters.
+\fB^\fR
+is an ordinary character except at the beginning of the
+RE or the beginning of a parenthesized subexpression,
+\fB$\fR
+is an ordinary character except at the end of the
+RE or the end of a parenthesized subexpression,
+and
+\fB*\fR
+is an ordinary character if it appears at the beginning of the
+RE or the beginning of a parenthesized subexpression
+(after a possible leading `\fB^\fR').
+Finally,
+single-digit back references are available,
+and
+\fB\e<\fR
+and
+\fB\e>\fR
+are synonyms for
+\fB[[:<:]]\fR
+and
+\fB[[:>:]]\fR
+respectively;
+no other escapes are available.
+
+.SH "SEE ALSO"
+RegExp(3), regexp(n), regsub(n), lsearch(n), switch(n), text(n)
+
+.SH KEYWORDS
+match, regular expression, string
diff --git a/raw/mann/read.n b/raw/mann/read.n
new file mode 100644
index 0000000..972d7ae
--- /dev/null
+++ b/raw/mann/read.n
@@ -0,0 +1,293 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: read.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: read.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH read n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+read \- Read from a channel
+.SH SYNOPSIS
+\fBread \fR?\fB\-nonewline\fR? \fIchannelId\fR
+.sp
+\fBread \fIchannelId numChars\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+In the first form, the \fBread\fR command reads all of the data from
+\fIchannelId\fR up to the end of the file.
+If the \fB\-nonewline\fR switch is specified then the last character
+of the file is discarded if it is a newline.
+.VS 8.1
+In the second form, the extra argument specifies how many characters to
+read.  Exactly that many characters will be read and returned, unless
+there are fewer than \fInumChars\fR left in the file;  in this case
+all the remaining characters are returned.  If the channel is
+configured to use a multi-byte encoding, then the number of characters
+read may not be the same as the number of bytes read.
+.PP
+If \fIchannelId\fR is in nonblocking mode, the command may not read as
+many characters as requested: once all available input has been read,
+the command will return the data that is available rather than
+blocking for more input.  If the channel is configured to use a
+multi-byte encoding, then there may actually be some bytes remaining
+in the internal buffers that do not form a complete character.  These
+bytes will not be returned until a complete character is available or
+end-of-file is reached.  
+.VE 8.1
+The \fB\-nonewline\fR switch is ignored if the command returns
+before reaching the end of the file.
+.PP
+\fBRead\fR translates end-of-line sequences in the input into
+newline characters according to the \fB\-translation\fR option
+for the channel.
+See the \fBfconfigure\fR manual entry for a discussion on ways in
+which \fBfconfigure\fR will alter input.
+
+.SH "SEE ALSO"
+file(n), eof(n), fblocked(n), fconfigure(n)
+
+.SH KEYWORDS
+blocking, channel, end of line, end of file, nonblocking, read, translation, encoding
diff --git a/raw/mann/regexp.n b/raw/mann/regexp.n
new file mode 100644
index 0000000..1d845a2
--- /dev/null
+++ b/raw/mann/regexp.n
@@ -0,0 +1,368 @@
+'\"
+'\" Copyright (c) 1998 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: regexp.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: regexp.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH regexp n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+regexp \- Match a regular expression against a string
+
+.SH SYNOPSIS
+\fBregexp \fR?\fIswitches\fR? \fIexp string \fR?\fImatchVar\fR? ?\fIsubMatchVar subMatchVar ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Determines whether the regular expression \fIexp\fR matches part or
+all of \fIstring\fR and returns 1 if it does, 0 if it doesn't, unless
+\fB-inline\fR is specified (see below).
+(Regular expression matching is described in the \fBre_syntax\fR
+reference page.)
+.LP
+If additional arguments are specified after \fIstring\fR then they
+are treated as the names of variables in which to return
+information about which part(s) of \fIstring\fR matched \fIexp\fR.
+\fIMatchVar\fR will be set to the range of \fIstring\fR that
+matched all of \fIexp\fR.  The first \fIsubMatchVar\fR will contain
+the characters in \fIstring\fR that matched the leftmost parenthesized
+subexpression within \fIexp\fR, the next \fIsubMatchVar\fR will
+contain the characters that matched the next parenthesized
+subexpression to the right in \fIexp\fR, and so on.
+.PP
+If the initial arguments to \fBregexp\fR start with \fB\-\fR then
+they are treated as switches.  The following switches are
+currently supported:
+.TP 15
+\fB\-about\fR
+Instead of attempting to match the regular expression, returns a list
+containing information about the regular expression.  The first
+element of the list is a subexpression count.  The second element is a
+list of property names that describe various attributes of the regular
+expression. This switch is primarily intended for debugging purposes.
+.TP 15
+\fB\-expanded\fR
+Enables use of the expanded regular expression syntax where
+whitespace and comments are ignored.  This is the same as specifying
+the \fB(?x)\fR embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-indices\fR
+Changes what is stored in the \fIsubMatchVar\fRs. 
+Instead of storing the matching characters from \fIstring\fR,
+each variable
+will contain a list of two decimal strings giving the indices
+in \fIstring\fR of the first and last characters in the matching
+range of characters.
+.TP 15
+\fB\-line\fR
+Enables newline-sensitive matching.  By default, newline is a
+completely ordinary character with no special meaning.  With this
+flag, `[^' bracket expressions and `.' never match newline, `^'
+matches an empty string after any newline in addition to its normal
+function, and `$' matches an empty string before any newline in
+addition to its normal function.  This flag is equivalent to
+specifying both \fB\-linestop\fR and \fB\-lineanchor\fR, or the
+\fB(?n)\fR embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-linestop\fR
+Changes the behavior of `[^' bracket expressions and `.' so that they
+stop at newlines.  This is the same as specifying the \fB(?p)\fR
+embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-lineanchor\fR
+Changes the behavior of `^' and `$' (the ``anchors'') so they match the
+beginning and end of a line respectively.  This is the same as
+specifying the \fB(?w)\fR embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-nocase\fR
+Causes upper-case characters in \fIstring\fR to be treated as
+lower case during the matching process.
+.VS 8.3
+.TP 15
+\fB\-all\fR
+Causes the regular expression to be matched as many times as possible
+in the string, returning the total number of matches found.  If this
+is specified with match variables, they will continue information for
+the last match only.
+.TP 15
+\fB\-inline\fR
+Causes the command to return, as a list, the data that would otherwise
+be placed in match variables.  When using \fB-inline\fR,
+match variables may not be specified.  If used with \fB-all\fR, the
+list will be concatenated at each iteration, such that a flat list is
+always returned.  For each match iteration, the command will append the
+overall match data, plus one element for each subexpression in the
+regular expression.  Examples are:
+.CS
+    regexp -inline -- {\\w(\\w)} " inlined "
+ => {in n}
+    regexp -all -inline -- {\\w(\\w)} " inlined "
+ => {in n li i ne e}
+.CE
+.TP 15
+\fB\-start\fR \fIindex\fR
+Specifies a character index offset into the string to start
+matching the regular expression at.  When using this switch, `^'
+will not match the beginning of the line, and \\A will still
+match the start of the string at \fIindex\fR.  If \fB\-indices\fR
+is specified, the indices will be indexed starting from the
+absolute beginning of the input string.
+\fIindex\fR will be constrained to the bounds of the input string.
+.VE 8.3
+.TP 15
+\fB\-\|\-\fR
+Marks the end of switches.  The argument following this one will
+be treated as \fIexp\fR even if it starts with a \fB\-\fR.
+.PP
+If there are more \fIsubMatchVar\fR's than parenthesized
+subexpressions within \fIexp\fR, or if a particular subexpression
+in \fIexp\fR doesn't match the string (e.g. because it was in a
+portion of the expression that wasn't matched), then the corresponding
+\fIsubMatchVar\fR will be set to ``\fB\-1 \-1\fR'' if \fB\-indices\fR
+has been specified or to an empty string otherwise.
+
+.SH "SEE ALSO"
+re_syntax(n), regsub(n)
+
+.SH KEYWORDS
+match, regular expression, string
diff --git a/raw/mann/registry.n b/raw/mann/registry.n
new file mode 100644
index 0000000..a6a3d78
--- /dev/null
+++ b/raw/mann/registry.n
@@ -0,0 +1,403 @@
+'\"
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: registry.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: registry.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH registry n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+registry \- Manipulate the Windows registry
+.SH SYNOPSIS
+.sp
+\fBpackage require registry 1.0\fR
+.sp
+\fBregistry \fIoption\fR \fIkeyName\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBregistry\fR package provides a general set of operations for
+manipulating the Windows registry.  The package implements the
+\fBregistry\fR Tcl command.  This command is only supported on the
+Windows platform.  Warning: this command should be used with caution
+as a corrupted registry can leave your system in an unusable state.
+.PP
+\fIKeyName\fR is the name of a registry key.  Registry keys must be
+one of the following forms:
+.IP
+\fB\e\e\fIhostname\fB\e\fIrootname\fB\e\fIkeypath\fR
+.IP
+\fIrootname\fB\e\fIkeypath\fR
+.IP
+\fIrootname\fR
+.PP
+\fIHostname\fR specifies the name of any valid Windows
+host that exports its registry.  The \fIrootname\fR component must be
+one of \fBHKEY_LOCAL_MACHINE\fR, \fBHKEY_USERS\fR,
+.VS
+\fBHKEY_CLASSES_ROOT\fR, \fBHKEY_CURRENT_USER\fR,
+\fBHKEY_CURRENT_CONFIG\fR, \fBHKEY_PERFORMANCE_DATA\fR, or
+\fBHKEY_DYN_DATA\fR.  The \fIkeypath\fR can be one or more
+.VE
+registry key names separated by backslash (\fB\e\fR) characters.
+.PP
+\fIOption\fR indicates what to do with the registry key name.  Any
+unique abbreviation for \fIoption\fR is acceptable.  The valid options
+are:
+.TP
+\fBregistry delete \fIkeyName\fR ?\fIvalueName\fR?
+.
+If the optional \fIvalueName\fR argument is present, the specified
+value under \fIkeyName\fR will be deleted from the registry.  If the
+optional \fIvalueName\fR is omitted, the specified key and any subkeys
+or values beneath it in the registry hierarchy will be deleted.  If
+the key could not be deleted then an error is generated.  If the key
+did not exist, the command has no effect.
+.TP
+\fBregistry get \fIkeyName valueName\fR
+.
+Returns the data associated with the value \fIvalueName\fR under the key
+\fIkeyName\fR.  If either the key or the value does not exist, then an
+error is generated.  For more details on the format of the returned
+data, see SUPPORTED TYPES, below.
+.TP
+\fBregistry keys \fIkeyName\fR ?\fIpattern\fR?
+.
+If \fIpattern\fR isn't specified, returns a list of names of all the
+subkeys of \fIkeyName\fR.  If \fIpattern\fR is specified, only those
+names matching \fIpattern\fR are returned.  Matching is determined
+using the same rules as for \fBstring\fR \fBmatch\fR.  If the
+specified \fIkeyName\fR does not exist, then an error is generated.
+.TP
+\fBregistry set \fIkeyName\fR ?\fIvalueName data \fR?\fItype\fR??
+.
+If \fIvalueName\fR isn't specified, creates the key \fIkeyName\fR if
+it doesn't already exist.  If \fIvalueName\fR is specified, creates
+the key \fIkeyName\fR and value \fIvalueName\fR if necessary.  The
+contents of \fIvalueName\fR are set to \fIdata\fR with the type
+indicated by \fItype\fR.  If \fItype\fR isn't specified, the type
+\fBsz\fR is assumed.  For more details on the data and type arguments,
+see SUPPORTED TYPES below.
+.TP
+\fBregistry type \fIkeyName valueName\fR
+.
+Returns the type of the value \fIvalueName\fR in the key
+\fIkeyName\fR.  For more information on the possible types, see
+SUPPORTED TYPES, below.
+.TP
+\fBregistry values \fIkeyName\fR ?\fIpattern\fR?
+.
+If \fIpattern\fR isn't specified, returns a list of names of all the
+values of \fIkeyName\fR.  If \fIpattern\fR is specified, only those
+names matching \fIpattern\fR are returned.  Matching is determined
+using the same rules as for \fBstring\fR \fBmatch\fR.
+
+.SH "SUPPORTED TYPES"
+Each value under a key in the registry contains some data of a
+particular type in a type-specific representation.  The \fBregistry\fR
+command converts between this internal representation and one that can
+be manipulated by Tcl scripts.  In most cases, the data is simply
+returned as a Tcl string.  The type indicates the intended use for the
+data, but does not actually change the representation.  For some
+types, the \fBregistry\fR command returns the data in a different form to
+make it easier to manipulate.  The following types are recognized by the
+registry command:
+.TP 17
+\fBbinary\fR
+.
+The registry value contains arbitrary binary data.  The data is represented
+exactly in Tcl, including any embedded nulls.
+.TP
+\fBnone\fR
+.
+The registry value contains arbitrary binary data with no defined
+type.  The data is represented exactly in Tcl, including any embedded
+nulls.
+.TP
+\fBsz\fR
+.
+The registry value contains a null-terminated string.  The data is 
+represented in Tcl as a string.
+.TP
+\fBexpand_sz\fR
+.
+The registry value contains a null-terminated string that contains
+unexpanded references to environment variables in the normal Windows
+style (for example, "%PATH%").  The data is represented in Tcl as a
+string.
+.TP
+\fBdword\fR
+.
+The registry value contains a little-endian 32-bit number.  The data is
+represented in Tcl as a decimal string.
+.TP
+\fBdword_big_endian\fR
+.
+The registry value contains a big-endian 32-bit number.  The data is
+represented in Tcl as a decimal string.
+.TP
+\fBlink\fR
+.
+The registry value contains a symbolic link.  The data is represented
+exactly in Tcl, including any embedded nulls.
+.TP
+\fBmulti_sz\fR
+.
+The registry value contains an array of null-terminated strings.  The
+data is represented in Tcl as a list of strings.
+.TP
+\fBresource_list\fR
+.
+The registry value contains a device-driver resource list.  The data
+is represented exactly in Tcl, including any embedded nulls.
+.PP
+In addition to the symbolically named types listed above, unknown
+types are identified using a 32-bit integer that corresponds to the
+type code returned by the system interfaces.  In this case, the data
+is represented exactly in Tcl, including any embedded nulls.
+
+.SH "PORTABILITY ISSUES"
+The registry command is only available on Windows.
+
+.SH KEYWORDS
+registry
diff --git a/raw/mann/regsub.n b/raw/mann/regsub.n
new file mode 100644
index 0000000..b1ce495
--- /dev/null
+++ b/raw/mann/regsub.n
@@ -0,0 +1,347 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\" Copyright (c) 2000 Scriptics Corporation.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: regsub.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: regsub.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH regsub n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+regsub \- Perform substitutions based on regular expression pattern matching
+.SH SYNOPSIS
+\fBregsub \fR?\fIswitches\fR? \fIexp string subSpec varName\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command matches the regular expression \fIexp\fR against
+\fIstring\fR,
+and it copies \fIstring\fR to the variable whose name is
+given by \fIvarName\fR.
+(Regular expression matching is described in the \fBre_syntax\fR
+reference page.)
+If there is a match, then while copying \fIstring\fR to \fIvarName\fR
+the portion of \fIstring\fR that
+matched \fIexp\fR is replaced with \fIsubSpec\fR.
+If \fIsubSpec\fR contains a ``&'' or ``\e0'', then it is replaced
+in the substitution with the portion of \fIstring\fR that
+matched \fIexp\fR.
+If \fIsubSpec\fR contains a ``\e\fIn\fR'', where \fIn\fR is a digit
+between 1 and 9, then it is replaced in the substitution with
+the portion of \fIstring\fR that matched the \fIn\fR-th
+parenthesized subexpression of \fIexp\fR.
+Additional backslashes may be used in \fIsubSpec\fR to prevent special
+interpretation of ``&'' or ``\e0'' or ``\e\fIn\fR'' or
+backslash.
+The use of backslashes in \fIsubSpec\fR tends to interact badly
+with the Tcl parser's use of backslashes, so it's generally
+safest to enclose \fIsubSpec\fR in braces if it includes
+backslashes.
+.LP
+If the initial arguments to \fBregexp\fR start with \fB\-\fR then
+they are treated as switches.  The following switches are
+currently supported:
+.TP 10
+\fB\-all\fR
+All ranges in \fIstring\fR that match \fIexp\fR are found and
+substitution is performed for each of these ranges.
+Without this switch only the first
+matching range is found and substituted.
+If \fB\-all\fR is specified, then ``&'' and ``\e\fIn\fR''
+sequences are handled for each substitution using the information
+from the corresponding match.
+.TP 15
+\fB\-expanded\fR
+Enables use of the expanded regular expression syntax where
+whitespace and comments are ignored.  This is the same as specifying
+the \fB(?x)\fR embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-line\fR
+Enables newline-sensitive matching.  By default, newline is a
+completely ordinary character with no special meaning.  With this
+flag, `[^' bracket expressions and `.' never match newline, `^'
+matches an empty string after any newline in addition to its normal
+function, and `$' matches an empty string before any newline in
+addition to its normal function.  This flag is equivalent to
+specifying both \fB\-linestop\fR and \fB\-lineanchor\fR, or the
+\fB(?n)\fR embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-linestop\fR
+Changes the behavior of `[^' bracket expressions and `.' so that they
+stop at newlines.  This is the same as specifying the \fB(?p)\fR
+embedded option (see METASYNTAX, below).
+.TP 15
+\fB\-lineanchor\fR
+Changes the behavior of `^' and `$' (the ``anchors'') so they match the
+beginning and end of a line respectively.  This is the same as
+specifying the \fB(?w)\fR embedded option (see METASYNTAX, below).
+.TP 10
+\fB\-nocase\fR
+Upper-case characters in \fIstring\fR will be converted to lower-case
+before matching against \fIexp\fR;  however, substitutions specified
+by \fIsubSpec\fR use the original unconverted form of \fIstring\fR.
+.VS 8.3
+.TP 10
+\fB\-start\fR \fIindex\fR
+Specifies a character index offset into the string to start
+matching the regular expression at.  When using this switch, `^'
+will not match the beginning of the line, and \\A will still
+match the start of the string at \fIindex\fR.
+\fIindex\fR will be constrained to the bounds of the input string.
+.VE 8.3
+.TP 10
+\fB\-\|\-\fR
+Marks the end of switches.  The argument following this one will
+be treated as \fIexp\fR even if it starts with a \fB\-\fR.
+.PP
+The command returns a count of the number of matching ranges that
+were found and replaced.
+See the manual entry for \fBregexp\fR for details on the interpretation
+of regular expressions.
+
+.SH "SEE ALSO"
+regexp(n), re_syntax(n)
+
+.SH KEYWORDS
+match, pattern, regular expression, substitute
diff --git a/raw/mann/rename.n b/raw/mann/rename.n
new file mode 100644
index 0000000..92c7796
--- /dev/null
+++ b/raw/mann/rename.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: rename.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: rename.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH rename n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+rename \- Rename or delete a command
+.SH SYNOPSIS
+\fBrename \fIoldName newName\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Rename the command that used to be called \fIoldName\fR so that it
+is now called \fInewName\fR.
+If \fInewName\fR is an empty string then \fIoldName\fR is deleted.
+\fIoldName\fR and \fInewName\fR may include namespace qualifiers
+(names of containing namespaces).
+If a command is renamed into a different namespace,
+future invocations of it will execute in the new namespace.
+The \fBrename\fR command returns an empty string as result.
+
+.SH "SEE ALSO"
+namespace(n), proc(n)
+
+.SH KEYWORDS
+command, delete, namespace, rename
diff --git a/raw/mann/resource.n b/raw/mann/resource.n
new file mode 100644
index 0000000..c6f407c
--- /dev/null
+++ b/raw/mann/resource.n
@@ -0,0 +1,390 @@
+'\"
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" RCS: @(#) $Id: resource.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: resource.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH resource n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+resource \- Manipulate Macintosh resources
+.SH SYNOPSIS
+\fBresource \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBresource\fR command provides some generic operations for
+dealing with Macintosh resources.  This command is only supported on
+the Macintosh platform.  Each Macintosh file consists of two
+\fIforks\fR: a \fIdata\fR fork and a \fIresource\fR fork.  You use the
+normal open, puts, close, etc. commands to manipulate the data fork.
+You must use this command, however, to interact with the resource
+fork.  \fIOption\fR indicates what resource command to perform.  Any
+unique abbreviation for \fIoption\fR is acceptable.  The valid options
+are:
+.TP
+\fBresource close \fIrsrcRef\fR
+Closes the given resource reference (obtained from \fBresource
+open\fR).  Resources from that resource file will no longer be
+available.
+.TP
+\fBresource delete\fR ?\fIoptions\fR? \fIresourceType\fR
+This command will delete the resource specified by \fIoptions\fR and
+type \fIresourceType\fR (see RESOURCE TYPES below).  The options
+give you several ways to specify the resource to be deleted.
+.RS
+.TP
+\fB\-id\fR \fIresourceId\fR
+If the \fB-id\fR option is given the id \fIresourceId\fR (see RESOURCE
+IDS below) is used to specify the resource to be deleted.  The id must 
+be a number - to specify a name use the \fB\-name\fR option.
+.TP
+\fB\-name\fR \fIresourceName\fR
+If \fB-name\fR is specified, the resource named
+\fIresourceName\fR will be deleted.  If the \fB-id\fR is also
+provided, then there must be a resource with BOTH this name and
+this id.  If no name is provided, then the id will be used regardless
+of the name of the actual resource.
+.TP
+\fB\-file\fR \fIresourceRef\fR
+If the \fB-file\fR option is specified then the resource will be
+deleted from the file pointed to by \fIresourceRef\fR.  Otherwise the
+first resource with the given \fIresourceName\fR and or
+\fIresourceId\fR which is found on the resource file path will be 
+deleted.  To inspect the file path, use the \fIresource files\fR command.
+.RE
+.TP
+\fBresource files ?\fIresourceRef\fR?
+If \fIresourceRef\fRis not provided, this command returns a Tcl list
+of the resource references for all the currently open resource files.
+The list is in the normal Macintosh search order for resources.  If 
+\fIresourceRef\fR is specified, the command will
+return the path to the file whose resource fork is represented by that
+token.
+.TP
+\fBresource list \fIresourceType\fR ?\fIresourceRef\fR?
+List all of the resources ids of type \fIresourceType\fR (see RESOURCE
+TYPES below).  If \fIresourceRef\fR is specified then the command will
+limit the search to that particular resource file.  Otherwise, all
+resource files currently opened by the application will be searched.
+A Tcl list of either the resource name's or resource id's of the found
+resources will be returned.  See the RESOURCE IDS section below for
+more details about what a resource id is.
+.TP
+\fBresource open \fIfileName\fR ?\fIaccess\fR?
+Open the resource for the file \fIfileName\fR.  Standard file access
+permissions may also be specified (see the manual entry for \fBopen\fR
+for details).  A resource reference (\fIresourceRef\fR) is returned
+that can be used by the other resource commands.  An error can occur
+if the file doesn't exist or the file does not have a resource fork.
+However, if you open the file with write permissions the file and/or
+resource fork will be created instead of generating an error.
+.TP
+\fBresource read \fIresourceType\fR \fIresourceId\fR ?\fIresourceRef\fR?
+Read the entire resource of type \fIresourceType\fR (see RESOURCE
+TYPES below) and the name or id of \fIresourceId\fR (see RESOURCE IDS
+below) into memory and return the result.  If \fIresourceRef\fR is
+specified we limit our search to that resource file, otherwise we
+search all open resource forks in the application.  It is important to
+note that most Macintosh resource use a binary format and the data
+returned from this command may have embedded NULLs or other non-ASCII
+data.
+.TP
+\fBresource types ?\fIresourceRef\fR?
+This command returns a Tcl list of all resource types (see RESOURCE
+TYPES below) found in the resource file pointed to by
+\fIresourceRef\fR.  If \fIresourceRef\fR is not specified it will
+return all the resource types found in every resource file currently
+opened by the application.
+.TP
+\fBresource write\fR ?\fIoptions\fR? \fIresourceType\fR \fIdata\fR
+This command will write the passed in \fIdata\fR as a new resource of
+type \fIresourceType\fR (see RESOURCE TYPES below).  Several options
+are available that describe where and how the resource is stored.
+.RS
+.TP
+\fB\-id\fR \fIresourceId\fR
+If the \fB-id\fR option is given the id \fIresourceId\fR (see RESOURCE
+IDS below) is used for the new resource, otherwise a unique id will be
+generated that will not conflict with any existing resource.  However,
+the id must be a number - to specify a name use the \fB\-name\fR option.
+.TP
+\fB\-name\fR \fIresourceName\fR
+If \fB-name\fR is specified the resource will be named
+\fIresourceName\fR, otherwise it will have the empty string as the
+name.
+.TP
+\fB\-file\fR \fIresourceRef\fR
+If the \fB-file\fR option is specified then the resource will be
+written in the file pointed to by \fIresourceRef\fR, otherwise the
+most resently open resource will be used.
+.TP
+\fB\-force\fR
+If the target resource already exists, then by default Tcl will not
+overwrite it, but raise an error instead.  Use the -force flag to
+force overwriting the extant resource.
+.RE
+
+.SH "RESOURCE TYPES"
+Resource types are defined as a four character string that is then
+mapped to an underlying id.  For example, \fBTEXT\fR refers to the
+Macintosh resource type for text.  The type \fBSTR#\fR is a list of
+counted strings.  All Macintosh resources must be of some type.  See
+Macintosh documentation for a more complete list of resource types
+that are commonly used.
+
+.SH "RESOURCE IDS"
+For this command the notion of a resource id actually refers to two
+ideas in Macintosh resources.  Every place you can use a resource Id
+you can use either the resource name or a resource number.  Names are
+always searched or returned in preference to numbers.  For example,
+the \fBresource list\fR command will return names if they exist or
+numbers if the name is NULL.
+
+.SH "PORTABILITY ISSUES"
+The resource command is only available on Macintosh.
+
+.SH "SEE ALSO"
+open(n)
+
+.SH KEYWORDS
+open, resource
diff --git a/raw/mann/return.n b/raw/mann/return.n
new file mode 100644
index 0000000..bb7e5ae
--- /dev/null
+++ b/raw/mann/return.n
@@ -0,0 +1,327 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: return.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: return.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH return n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+return \- Return from a procedure
+.SH SYNOPSIS
+\fBreturn \fR?\fB\-code \fIcode\fR? ?\fB\-errorinfo \fIinfo\fR? ?\fB\-errorcode\fI code\fR? ?\fIstring\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Return immediately from the current procedure
+(or top-level command or \fBsource\fR command),
+with \fIstring\fR as the return value.  If \fIstring\fR is not specified then
+an empty string will be returned as result.
+
+.SH "EXCEPTIONAL RETURNS"
+.PP
+In the usual case where the \fB\-code\fR option isn't
+specified the procedure will return normally (its completion
+code will be TCL_OK).
+However, the \fB\-code\fR option may be used to generate an
+exceptional return from the procedure.
+\fICode\fR may have any of the following values:
+.TP 10
+\fBok\fR
+Normal return:  same as if the option is omitted.
+.TP 10
+\fBerror\fR
+Error return: same as if the \fBerror\fR command were used to
+terminate the procedure, except for handling of \fBerrorInfo\fR
+and \fBerrorCode\fR variables (see below).
+.TP 10
+\fBreturn\fR
+The current procedure will return with a completion code of
+TCL_RETURN, so that the procedure that invoked it will return
+also.
+.TP 10
+\fBbreak\fR
+The current procedure will return with a completion code of
+TCL_BREAK, which will terminate the innermost nested loop in
+the code that invoked the current procedure.
+.TP 10
+\fBcontinue\fR
+The current procedure will return with a completion code of
+TCL_CONTINUE, which will terminate the current iteration of
+the innermost nested loop in the code that invoked the current
+procedure.
+.TP 10
+\fIvalue\fR
+\fIValue\fR must be an integer;  it will be returned as the
+completion code for the current procedure.
+.LP
+The \fB\-code\fR option is rarely used.
+It is provided so that procedures that implement
+new control structures can reflect exceptional conditions back to
+their callers.
+.PP
+Two additional options, \fB\-errorinfo\fR and \fB\-errorcode\fR,
+may be used to provide additional information during error
+returns.
+These options are ignored unless \fIcode\fR is \fBerror\fR.
+.PP
+The \fB\-errorinfo\fR option specifies an initial stack
+trace for the \fBerrorInfo\fR variable;  if it is not specified then
+the stack trace left in \fBerrorInfo\fR will include the call to
+the procedure and higher levels on the stack but it will not include
+any information about the context of the error within the procedure.
+Typically the \fIinfo\fR value is supplied from the value left
+in \fBerrorInfo\fR after a \fBcatch\fR command trapped an error within
+the procedure.
+.PP
+If the \fB\-errorcode\fR option is specified then \fIcode\fR provides
+a value for the \fBerrorCode\fR variable.
+If the option is not specified then \fBerrorCode\fR will
+default to \fBNONE\fR.
+
+.SH "SEE ALSO"
+break(n), continue(n), error(n), proc(n)
+
+.SH KEYWORDS
+break, continue, error, procedure, return
diff --git a/raw/mann/safe.n b/raw/mann/safe.n
new file mode 100644
index 0000000..f839657
--- /dev/null
+++ b/raw/mann/safe.n
@@ -0,0 +1,585 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: safe.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: safe.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "Safe Tcl" n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+Safe\ Base \- A mechanism for creating and manipulating safe interpreters.
+.SH SYNOPSIS
+\fB::safe::interpCreate\fR ?\fIslave\fR? ?\fIoptions...\fR?
+.sp
+\fB::safe::interpInit\fR \fIslave\fR ?\fIoptions...\fR?
+.sp
+\fB::safe::interpConfigure\fR \fIslave\fR ?\fIoptions...\fR?
+.sp
+\fB::safe::interpDelete\fR \fIslave\fR
+.sp
+\fB::safe::interpAddToAccessPath\fR \fIslave\fR \fIdirectory\fR
+.sp
+\fB::safe::interpFindInAccessPath\fR \fIslave\fR \fIdirectory\fR
+.sp
+\fB::safe::setLogCmd\fR ?\fIcmd arg...\fR?
+.SH OPTIONS
+.PP
+?\fB\-accessPath\fR \fIpathList\fR?
+?\fB\-statics\fR \fIboolean\fR? ?\fB\-noStatics\fR?
+?\fB\-nested\fR \fIboolean\fR? ?\fB\-nestedLoadOk\fR?
+?\fB\-deleteHook\fR \fIscript\fR?
+.BE
+
+.SH DESCRIPTION
+Safe Tcl is a mechanism for executing untrusted Tcl scripts
+safely and for providing mediated access by such scripts to
+potentially dangerous functionality.
+.PP
+The Safe Base ensures that untrusted Tcl scripts cannot harm the
+hosting application.
+The Safe Base prevents integrity and privacy attacks. Untrusted Tcl
+scripts are prevented from corrupting the state of the hosting
+application or computer. Untrusted scripts are also prevented from
+disclosing information stored on the hosting computer or in the
+hosting application to any party.
+.PP
+The Safe Base allows a master interpreter to create safe, restricted
+interpreters that contain a set of predefined aliases for the \fBsource\fR,
+\fBload\fR, \fBfile\fR, \fBencoding\fR, and \fBexit\fR commands and
+are able to use the auto-loading and package mechanisms.
+.PP
+No knowledge of the file system structure is leaked to the
+safe interpreter, because it has access only to a virtualized path
+containing tokens. When the safe interpreter requests to source a file, it
+uses the token in the virtual path as part of the file name to source; the
+master interpreter transparently 
+translates the token into a real directory name and executes the 
+requested operation (see the section \fBSECURITY\fR below for details).
+Different levels of security can be selected by using the optional flags
+of the commands described below.
+.PP
+All commands provided in the master interpreter by the Safe Base reside in
+the \fBsafe\fR namespace:
+
+.SH COMMANDS
+The following commands are provided in the master interpreter:
+.TP
+\fB::safe::interpCreate\fR ?\fIslave\fR? ?\fIoptions...\fR?
+Creates a safe interpreter, installs the aliases described in the section
+\fBALIASES\fR and initializes the auto-loading and package mechanism as
+specified by the supplied \fBoptions\fR.
+See the \fBOPTIONS\fR section below for a description of the
+optional arguments.
+If the \fIslave\fR argument is omitted, a name will be generated.
+\fB::safe::interpCreate\fR always returns the interpreter name.
+.TP
+\fB::safe::interpInit\fR \fIslave\fR ?\fIoptions...\fR?
+This command is similar to \fBinterpCreate\fR except it that does not
+create the safe interpreter. \fIslave\fR must have been created by some
+other means, like \fBinterp create \-safe\fR.
+.TP
+\fB::safe::interpConfigure\fR \fIslave\fR ?\fIoptions...\fR?
+If no \fIoptions\fR are given, returns the settings for all options for the
+named safe interpreter as a list of options and their current values
+for that \fIslave\fR. 
+If a single additional argument is provided,
+it will return a list of 2 elements \fIname\fR and \fIvalue\fR where
+\fIname\fR is the full name of that option and \fIvalue\fR the current value
+for that option and the \fIslave\fR.
+If more than two additional arguments are provided, it will reconfigure the
+safe interpreter and change each and only the provided options.
+See the section on \fBOPTIONS\fR below for options description.
+Example of use:
+.RS
+.CS
+# Create a new interp with the same configuration as "$i0" :
+set i1 [eval safe::interpCreate [safe::interpConfigure $i0]]
+# Get the current deleteHook
+set dh [safe::interpConfigure $i0  \-del]
+# Change (only) the statics loading ok attribute of an interp
+# and its deleteHook (leaving the rest unchanged) :
+safe::interpConfigure $i0  \-delete {foo bar} \-statics 0 ;
+.CE
+.RE
+.TP
+\fB::safe::interpDelete\fR \fIslave\fR
+Deletes the safe interpreter and cleans up the corresponding  
+master interpreter data structures.
+If a \fIdeleteHook\fR script was specified for this interpreter it is
+evaluated before the interpreter is deleted, with the name of the
+interpreter as an additional argument.
+.TP
+\fB::safe::interpFindInAccessPath\fR \fIslave\fR \fIdirectory\fR
+This command finds and returns the token for the real directory
+\fIdirectory\fR in the safe interpreter's current virtual access path.
+It generates an error if the directory is not found.
+Example of use:
+.RS
+.CS
+$slave eval [list set tk_library [::safe::interpFindInAccessPath $name $tk_library]]
+.CE
+.RE
+.TP
+\fB::safe::interpAddToAccessPath\fR \fIslave\fR \fIdirectory\fR
+This command adds \fIdirectory\fR to the virtual path maintained for the
+safe interpreter in the master, and returns the token that can be used in
+the safe interpreter to obtain access to files in that directory.
+If the directory is already in the virtual path, it only returns the token
+without adding the directory to the virtual path again.
+Example of use:
+.RS
+.CS
+$slave eval [list set tk_library [::safe::interpAddToAccessPath $name $tk_library]]
+.CE
+.RE
+.TP
+\fB::safe::setLogCmd\fR ?\fIcmd arg...\fR?
+This command installs a script that will be called when interesting
+life cycle events occur for a safe interpreter.
+When called with no arguments, it returns the currently installed script.
+When called with one argument, an empty string, the currently installed
+script is removed and logging is turned off.
+The script will be invoked with one additional argument, a string
+describing the event of interest.
+The main purpose is to help in debugging safe interpreters.
+Using this facility you can get complete error messages while the safe
+interpreter gets only generic error messages.
+This prevents a safe interpreter from seeing messages about failures
+and other events that might contain sensitive information such as real
+directory names.
+.RS
+Example of use:
+.CS
+::safe::setLogCmd puts stderr
+.CE
+Below is the output of a sample session in which a safe interpreter
+attempted to source a file not found in its virtual access path.
+Note that the safe interpreter only received an error message saying that
+the file was not found:
+.CS
+NOTICE for slave interp10 : Created
+NOTICE for slave interp10 : Setting accessPath=(/foo/bar) staticsok=1 nestedok=0 deletehook=()
+NOTICE for slave interp10 : auto_path in interp10 has been set to {$p(:0:)}
+ERROR for slave interp10 : /foo/bar/init.tcl: no such file or directory
+.CE
+.RE
+
+.SH OPTIONS
+The following options are common to 
+\fB::safe::interpCreate\fR, \fB::safe::interpInit\fR, 
+and \fB::safe::interpConfigure\fR.
+Any option name can be abbreviated to its minimal 
+non-ambiguous name.
+Option names are not case sensitive.
+.TP 
+\fB\-accessPath\fR \fIdirectoryList\fR
+This option sets the list of directories from which the safe interpreter
+can \fBsource\fR and \fBload\fR files.
+If this option is not specified, or if it is given as the
+empty list, the safe interpreter will use the same directories as its
+master for auto-loading.
+See the section \fBSECURITY\fR below for more detail about virtual paths, 
+tokens and access control.
+.TP
+\fB\-statics\fR \fIboolean\fR
+This option specifies if the safe interpreter will be allowed
+to load statically linked packages (like \fBload {} Tk\fR).
+The default value is \fBtrue\fR : 
+safe interpreters are allowed to load statically linked packages.
+.TP
+\fB\-noStatics\fR
+This option is a convenience shortcut for \fB-statics false\fR and
+thus specifies that the safe interpreter will not be allowed
+to load statically linked packages.
+.TP
+\fB\-nested\fR \fIboolean\fR
+This option specifies if the safe interpreter will be allowed
+to load packages into its own sub-interpreters.
+The default value is \fBfalse\fR : 
+safe interpreters are not allowed to load packages into
+their own sub-interpreters.
+.TP
+\fB\-nestedLoadOk\fR
+This option is a convenience shortcut for \fB-nested true\fR and
+thus specifies the safe interpreter will be allowed
+to load packages into its own sub-interpreters.
+.TP 
+\fB\-deleteHook\fR \fIscript\fR
+When this option is given an non empty \fIscript\fR, it will be
+evaluated in the master with the name of
+the safe interpreter as an additional argument
+just before actually deleting the safe interpreter.
+Giving an empty value removes any currently installed deletion hook
+script for that safe interpreter.
+The default value (\fB{}\fR) is not to have any deletion call back.
+.SH ALIASES
+The following aliases are provided in a safe interpreter:
+.TP
+\fBsource\fR \fIfileName\fR
+The requested file, a Tcl source file, is sourced into the safe interpreter
+if it is found.
+The \fBsource\fR alias can only source files from directories in
+the virtual path for the safe interpreter. The \fBsource\fR alias requires
+the safe interpreter to
+use one of the token names in its virtual path to denote the directory in
+which the file to be sourced can be found.
+See the section on \fBSECURITY\fR for more discussion of restrictions on
+valid filenames.
+.TP
+\fBload\fR \fIfileName\fR
+The requested file, a shared object file, is dynamically loaded into the
+safe interpreter if it is found.
+The filename must contain a token name mentioned in the virtual path for
+the safe interpreter for it to be found successfully.
+Additionally, the shared object file must contain a safe entry point; see
+the manual page for the \fBload\fR command for more details.
+.TP
+\fBfile\fR ?\fIsubCmd args...\fR?
+The \fBfile\fR alias provides access to a safe subset of the subcommands of
+the \fBfile\fR command; it allows only \fBdirname\fR, \fBjoin\fR,
+\fBextension\fR, \fBroot\fR, \fBtail\fR, \fBpathname\fR and \fBsplit\fR
+subcommands. For more details on what these subcommands do see the manual
+page for the \fBfile\fR command.
+.TP
+\fBencoding\fR ?\fIsubCmd args...\fR?
+The \fBenconding\fR alias provides access to a safe subset of the
+subcommands of the \fBencoding\fR command;  it disallows setting of
+the system encoding, but allows all other subcommands including
+\fBsystem\fR to check the current encoding.
+.TP
+\fBexit\fR
+The calling interpreter is deleted and its computation is stopped, but the
+Tcl process in which this interpreter exists is not terminated.
+
+.SH SECURITY
+The Safe Base does not attempt to completely prevent annoyance and
+denial of service attacks. These forms of attack prevent the
+application or user from temporarily using the computer to perform
+useful work, for example by consuming all available CPU time or
+all available screen real estate.
+These attacks, while aggravating, are deemed to be of lesser importance
+in general than integrity and privacy attacks that the Safe Base
+is to prevent.
+.PP
+The commands available in a safe interpreter, in addition to
+the safe set as defined in \fBinterp\fR manual page, are mediated aliases
+for \fBsource\fR, \fBload\fR, \fBexit\fR, and safe subsets of
+\fBfile\fR and \fBencoding\fR. The safe interpreter can also auto-load
+code and it can request that packages be loaded.
+.PP
+Because some of these commands access the local file system, there is a
+potential for information leakage about its directory structure.
+To prevent this, commands that take file names as arguments in a safe
+interpreter use tokens instead of the real directory names.
+These tokens are translated to the real directory name while a request to,
+e.g., source a file is mediated by the master interpreter.
+This virtual path system is maintained in the master interpreter for each safe
+interpreter created by \fB::safe::interpCreate\fR or initialized by
+\fB::safe::interpInit\fR and
+the path maps tokens accessible in the safe interpreter into real path
+names on the local file system thus preventing safe interpreters 
+from gaining knowledge about the
+structure of the file system of the host on which the interpreter is
+executing.
+The only valid file names arguments
+for the \fBsource\fR and \fBload\fR aliases provided to the slave
+are path in the form of 
+\fB[file join \fR\fItoken filename\fR\fB]\fR (ie, when using the
+native file path formats: \fItoken\fR\fB/\fR\fIfilename\fR
+on Unix, \fItoken\fR\fB\\\fIfilename\fR on Windows, 
+and \fItoken\fR\fB:\fR\fIfilename\fR on the Mac),
+where \fItoken\fR is representing one of the directories 
+of the \fIaccessPath\fR list and \fIfilename\fR is
+one file in that directory (no sub directories access are allowed).
+.PP
+When a token is used in a safe interpreter in a request to source or
+load a file, the token is checked and
+translated to a real path name and the file to be
+sourced or loaded is located on the file system.
+The safe interpreter never gains knowledge of the actual path name under
+which the file is stored on the file system.
+.PP
+To further prevent potential information leakage from sensitive files that
+are accidentally included in the set of files that can be sourced by a safe
+interpreter, the \fBsource\fR alias restricts access to files
+meeting the following constraints: the file name must
+fourteen characters or shorter, must not contain more than one dot ("\fB.\fR"),
+must end up with the extension \fB.tcl\fR or be called \fBtclIndex\fR.
+.PP
+Each element of the initial access path
+list will be assigned a token that will be set in
+the slave \fBauto_path\fR and the first element of that list will be set as
+the \fBtcl_library\fR for that slave.
+.PP
+If the access path argument is not given or is the empty list, 
+the default behavior is to let the slave access the same packages
+as the master has access to (Or to be more precise: 
+only packages written in Tcl (which by definition can't be dangerous
+as they run in the slave interpreter) and C extensions that
+provides a Safe_Init entry point). For that purpose, the master's 
+\fBauto_path\fR will be used to construct the slave access path. 
+In order that the slave successfully loads the Tcl library files
+(which includes the auto-loading mechanism itself) the \fBtcl_library\fR will be
+added or moved to the first position if necessary, in the 
+slave access path, so the slave
+\fBtcl_library\fR will be the same as the master's (its real
+path will still be invisible to the slave though). 
+In order that auto-loading works the same for the slave and
+the master in this by default case, the first-level
+sub directories of each directory in the master \fBauto_path\fR will
+also be added (if not already included) to the slave access path.
+You can always specify a more
+restrictive path for which sub directories will never be searched by 
+explicitly specifying your directory list with the \fB\-accessPath\fR flag
+instead of relying on this default mechanism.
+.PP
+When the \fIaccessPath\fR is changed after the first creation or
+initialization (ie through \fBinterpConfigure -accessPath \fR\fIlist\fR),
+an \fBauto_reset\fR is automatically evaluated in the safe interpreter
+to synchronize its \fBauto_index\fR with the new token list.
+
+.SH "SEE ALSO"
+interp(n), library(n), load(n), package(n), source(n), unknown(n)
+ 
+.SH KEYWORDS
+alias, auto\-loading, auto_mkindex, load, master interpreter, safe
+interpreter, slave interpreter, source
diff --git a/raw/mann/scan.n b/raw/mann/scan.n
new file mode 100644
index 0000000..92e4db8
--- /dev/null
+++ b/raw/mann/scan.n
@@ -0,0 +1,430 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\" Copyright (c) 2000 Scriptics Corporation.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: scan.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: scan.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH scan n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+scan \- Parse string using conversion specifiers in the style of sscanf
+.SH SYNOPSIS
+\fBscan \fIstring format \fR?\fIvarName varName ...\fR?
+.BE
+
+.SH INTRODUCTION
+.PP
+This command parses fields from an input string in the same fashion as the
+ANSI C \fBsscanf\fR procedure and returns a count of the number of
+conversions performed, or -1 if the end of the input string is reached
+before any conversions have been performed.  \fIString\fR gives the input
+to be parsed and \fIformat\fR indicates how to parse it, using \fB%\fR
+conversion specifiers as in \fBsscanf\fR.  Each \fIvarName\fR gives the
+name of a variable; when a field is scanned from \fIstring\fR the result is
+converted back into a string and assigned to the corresponding variable.
+.VS 8.3
+If no \fIvarName\fR variables are specified, then \fBscan\fR works in an
+inline manner, returning the data that would otherwise be stored in the
+variables as a list.  In the inline case, an empty string is returned when
+the end of the input string is reached before any conversions have been
+performed.
+.VE 8.3
+
+.SH "DETAILS ON SCANNING"
+.PP
+\fBScan\fR operates by scanning \fIstring\fR and \fIformat\fR together.
+If the next character in \fIformat\fR is a blank or tab then it
+matches any number of white space characters in \fIstring\fR (including
+zero).
+Otherwise, if it isn't a \fB%\fR character then it 
+must match the next character of \fIstring\fR.
+When a \fB%\fR is encountered in \fIformat\fR, it indicates
+the start of a conversion specifier.
+A conversion specifier contains up to four fields after the \fB%\fR:
+a \fB*\fR, which indicates that the converted value is to be discarded 
+instead of assigned to a variable; a XPG3 position specifier; a number
+indicating a maximum field width; and a conversion character.
+All of these fields are optional except for the conversion character.
+The fields that are present must appear in the order given above.
+.PP
+When \fBscan\fR finds a conversion specifier in \fIformat\fR, it
+first skips any white-space characters in \fIstring\fR (unless the
+specifier is \fB[\fR or \fBc\fR).
+Then it converts the next input characters according to the 
+conversion specifier and stores the result in the variable given
+by the next argument to \fBscan\fR.
+.PP
+If the \fB%\fR is followed by a decimal number and a \fB$\fR, as in
+``\fB%2$d\fR'', then the variable to use is not taken from the next
+sequential argument.  Instead, it is taken from the argument indicated
+by the number, where 1 corresponds to the first \fIvarName\fR.  If
+there are any positional specifiers in \fIformat\fR then all of the
+specifiers must be positional.  Every \fIvarName\fR on the argument
+list must correspond to exactly one conversion specifier or an error
+is generated, or in the inline case, any position can be specified
+at most once and the empty positions will be filled in with empty strings.
+.PP
+The following conversion characters are supported:
+.TP 10
+\fBd\fR
+The input field must be a decimal integer.
+It is read in and the value is stored in the variable as a decimal string.
+.TP 10
+\fBo\fR
+The input field must be an octal integer. It is read in and the 
+value is stored in the variable as a decimal string.
+.VS 8.4
+If the value exceeds MAX_INT (017777777777 on platforms using 32-bit
+integers), it will be truncated to a signed integer.  Hence, 037777777777
+will appear as -1 on a 32-bit machine.
+.VE 8.4
+.TP 10
+\fBx\fR
+The input field must be a hexadecimal integer. It is read in 
+and the value is stored in the variable as a decimal string.
+.VS 8.4
+If the value exceeds MAX_INT (0x7FFFFFFF on platforms using 32-bit
+integers), it will be truncated to a signed integer.  Hence, 0xFFFFFFFF
+will appear as -1 on a 32-bit machine.
+.VE 8.4
+.TP 10
+\fBu\fR
+The input field must be a decimal integer.  The value is stored in the
+variable as an unsigned decimal integer string.
+.TP 10
+\fBi\fR 
+The input field must be an integer.  The base (i.e. decimal, octal, or
+hexadecimal) is determined in the same fashion as described in
+\fBexpr\fR.  The value is stored in the variable as a decimal string.
+.TP 10
+\fBc\fR
+A single character is read in and its binary value is stored in 
+the variable as a decimal string.
+Initial white space is not skipped in this case, so the input
+field may be a white-space character.
+This conversion is different from the ANSI standard in that the
+input field always consists of a single character and no field
+width may be specified.
+.TP 10
+\fBs\fR
+The input field consists of all the characters up to the next 
+white-space character; the characters are copied to the variable.
+.TP 10
+\fBe\fR or \fBf\fR or \fBg\fR
+The input field must be a floating-point number consisting 
+of an optional sign, a string of decimal digits possibly
+containing a decimal point, and an optional exponent consisting 
+of an \fBe\fR or \fBE\fR followed by an optional sign and a string of 
+decimal digits.
+It is read in and stored in the variable as a floating-point string.
+.TP 10
+\fB[\fIchars\fB]\fR
+The input field consists of any number of characters in 
+\fIchars\fR.
+The matching string is stored in the variable.
+If the first character between the brackets is a \fB]\fR then
+it is treated as part of \fIchars\fR rather than the closing
+bracket for the set.
+If \fIchars\fR
+contains a sequence of the form \fIa\fB\-\fIb\fR then any
+character between \fIa\fR and \fIb\fR (inclusive) will match.
+If the first or last character between the brackets is a \fB\-\fR, then
+it is treated as part of \fIchars\fR rather than indicating a range.
+.TP 10
+\fB[^\fIchars\fB]\fR
+The input field consists of any number of characters not in 
+\fIchars\fR.
+The matching string is stored in the variable.
+If the character immediately following the \fB^\fR is a \fB]\fR then it is 
+treated as part of the set rather than the closing bracket for 
+the set.
+If \fIchars\fR
+contains a sequence of the form \fIa\fB\-\fIb\fR then any
+character between \fIa\fR and \fIb\fR (inclusive) will be excluded
+from the set.
+If the first or last character between the brackets is a \fB\-\fR, then
+it is treated as part of \fIchars\fR rather than indicating a range.
+.TP 10
+\fBn\fR
+No input is consumed from the input string.  Instead, the total number
+of chacters scanned from the input string so far is stored in the variable.
+.LP
+The number of characters read from the input for a conversion is the
+largest number that makes sense for that particular conversion (e.g.
+as many decimal digits as possible for \fB%d\fR, as 
+many octal digits as possible for \fB%o\fR, and so on).
+The input field for a given conversion terminates either when a
+white-space character is encountered or when the maximum field 
+width has been reached, whichever comes first.
+If a \fB*\fR is present in the conversion specifier 
+then no variable is assigned and the next scan argument is not consumed.
+
+.SH "DIFFERENCES FROM ANSI SSCANF"
+.PP
+The behavior of the \fBscan\fR command is the same as the behavior of
+the ANSI C \fBsscanf\fR procedure except for the following differences:
+.IP [1]
+\fB%p\fR conversion specifier is not currently supported.
+.IP [2]
+For \fB%c\fR conversions a single character value is
+converted to a decimal string, which is then assigned to the
+corresponding \fIvarName\fR;
+no field width may be specified for this conversion.
+.IP [3]
+The \fBl\fR, \fBh\fR, and \fBL\fR modifiers are ignored;  integer
+values are always converted as if there were no modifier present
+and real values are always converted as if the \fBl\fR modifier
+were present (i.e. type \fBdouble\fR is used for the internal
+representation).
+.IP [4]
+.VS 8.3
+If the end of the input string is reached before any conversions have been
+performed and no variables are given, and empty string is returned.
+.VE 8.3
+
+.SH "SEE ALSO"
+format(n), sscanf(3)
+
+.SH KEYWORDS
+conversion specifier, parse, scan
diff --git a/raw/mann/seek.n b/raw/mann/seek.n
new file mode 100644
index 0000000..9da5017
--- /dev/null
+++ b/raw/mann/seek.n
@@ -0,0 +1,299 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: seek.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: seek.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH seek n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+seek \- Change the access position for an open channel
+.SH SYNOPSIS
+\fBseek \fIchannelId offset \fR?\fIorigin\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Changes the current access position for \fIchannelId\fR.
+\fIChannelId\fR must be a channel identifier such as returned from a
+previous invocation of \fBopen\fR or \fBsocket\fR.
+The \fIoffset\fR and \fIorigin\fR
+arguments specify the position at which the next read or write will occur
+for \fIchannelId\fR. \fIOffset\fR must be an integer (which may be
+negative) and \fIorigin\fR must be one of the following:
+.TP 10
+\fBstart\fR
+The new access position will be \fIoffset\fR bytes from the start
+of the underlying file or device.
+.TP 10
+\fBcurrent\fR
+The new access position will be \fIoffset\fR bytes from the current
+access position; a negative \fIoffset\fR moves the access position
+backwards in the underlying file or device.
+.TP 10
+\fBend\fR
+The new access position will be \fIoffset\fR bytes from the end of
+the file or device.  A negative \fIoffset\fR places the access position
+before the end of file, and a positive \fIoffset\fR places the access
+position after the end of file.
+.LP
+The \fIorigin\fR argument defaults to \fBstart\fR.
+.PP
+The command flushes all buffered output for the channel before the command
+returns, even if the channel is in nonblocking mode.
+It also discards any buffered and unread input.
+This command returns an empty string.
+An error occurs if this command is applied to channels whose underlying
+file or device does not support seeking.
+.PP
+.VS 8.1
+Note that \fIoffset\fR values are byte offsets, not character
+offsets.  Both \fBseek\fR and \fBtell\fR operate in terms of bytes,
+not characters, unlike \fBread\fR.
+.VE 8.1
+
+.SH "SEE ALSO"
+file(n), open(n), close(n), gets(n), tell(n)
+ 
+.SH KEYWORDS
+access position, file, seek
diff --git a/raw/mann/selection.n b/raw/mann/selection.n
new file mode 100644
index 0000000..2f1075f
--- /dev/null
+++ b/raw/mann/selection.n
@@ -0,0 +1,365 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: selection.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: selection.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH selection n 8.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+selection \- Manipulate the X selection
+.SH SYNOPSIS
+\fBselection \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command provides a Tcl interface to the X selection mechanism and
+implements the full selection functionality described in the
+X Inter-Client Communication Conventions Manual (ICCCM).
+.PP
+The first argument to \fBselection\fR determines the format of the
+rest of the arguments and the behavior of the command.  The following
+forms are currently supported:
+.PP
+.TP
+\fBselection clear\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR?
+If \fIselection\fR exists anywhere on \fIwindow\fR's display, clear it
+so that no window owns the selection anymore.  \fISelection\fR
+specifies the X selection that should be cleared, and should be an
+atom name such as PRIMARY or CLIPBOARD; see the Inter-Client
+Communication Conventions Manual for complete details.
+\fISelection\fR defaults to PRIMARY and \fIwindow\fR defaults to ``.''.
+Returns an empty string. 
+.TP
+\fBselection get\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR? ?\fB\-type\fR \fItype\fR?
+Retrieves the value of \fIselection\fR from \fIwindow\fR's display and
+returns it as a result.  \fISelection\fR defaults to PRIMARY and
+\fIwindow\fR defaults to ``.''. 
+\fIType\fR specifies the form in which the selection is to be returned
+(the desired ``target'' for conversion, in ICCCM terminology), and
+should be an atom name such as STRING or FILE_NAME; see the
+Inter-Client Communication Conventions Manual for complete details.
+\fIType\fR defaults to STRING.  The selection owner may choose to
+return the selection in any of several different representation
+formats, such as STRING, ATOM, INTEGER, etc. (this format is different
+than the selection type; see the ICCCM for all the confusing details).
+If the selection is returned in a non-string format, such as INTEGER
+or ATOM, the \fBselection\fR command converts it to string format as a
+collection of fields separated by spaces: atoms are converted to their
+textual names, and anything else is converted to hexadecimal integers.
+.TP
+\fBselection handle\fR ?\fB\-selection\fR \fIselection\fR? ?\fB\-type\fR \fItype\fR? ?\fB\-format\fR \fIformat\fR? \fIwindow command\fR
+Creates a handler for selection requests, such that \fIcommand\fR will
+be executed whenever \fIselection\fR is owned by \fIwindow\fR and
+someone attempts to retrieve it in the form given by \fItype\fR
+(e.g. \fItype\fR is specified in the \fBselection get\fR command).
+\fISelection\fR defaults to PRIMARY, \fItype\fR defaults to STRING, and
+\fIformat\fR defaults to STRING.  If \fIcommand\fR is an empty string
+then any existing handler for \fIwindow\fR, \fItype\fR, and
+\fIselection\fR is removed.
+.RS
+.PP
+When \fIselection\fR is requested, \fIwindow\fR is the selection owner,
+and \fItype\fR is the requested type, \fIcommand\fR will be executed
+as a Tcl command with two additional numbers appended to it
+(with space separators).  
+The two additional numbers
+.VS
+are \fIoffset\fR and \fImaxChars\fR:  \fIoffset\fR specifies a starting
+character position in the selection and \fImaxChars\fR gives the maximum
+number of characters to retrieve.  The command should return a value consisting
+of at most \fImaxChars\fR of the selection, starting at position
+\fIoffset\fR.  For very large selections (larger than \fImaxChars\fR)
+the selection will be retrieved using several invocations of \fIcommand\fR
+with increasing \fIoffset\fR values.  If \fIcommand\fR returns a string
+whose length is less than \fImaxChars\fR, the return value is assumed to
+include all of the remainder of the selection;  if the length of
+\fIcommand\fR's result is equal to \fImaxChars\fR then
+\fIcommand\fR will be invoked again, until it eventually
+returns a result shorter than \fImaxChars\fR.  The value of \fImaxChars\fR
+will always be relatively large (thousands of characters).
+.VE
+.PP
+If \fIcommand\fR returns an error then the selection retrieval is rejected
+just as if the selection didn't exist at all.
+.PP
+The \fIformat\fR argument specifies the representation that should be
+used to transmit the selection to the requester (the second column of
+Table 2 of the ICCCM), and defaults to STRING.  If \fIformat\fR is
+STRING, the selection is transmitted as 8-bit ASCII characters (i.e.
+just in the form returned by \fIcommand\fR).  If \fIformat\fR is
+ATOM, then the return value from \fIcommand\fR is divided into fields
+separated by white space;  each field is converted to its atom value,
+and the 32-bit atom value is transmitted instead of the atom name.
+For any other \fIformat\fR, the return value from \fIcommand\fR is
+divided into fields separated by white space and each field is
+converted to a 32-bit integer;  an array of integers is transmitted
+to the selection requester.
+.PP
+The \fIformat\fR argument is needed only for compatibility with
+selection requesters that don't use Tk.  If Tk is being
+used to retrieve the selection then the value is converted back to
+a string at the requesting end, so \fIformat\fR is
+irrelevant.
+.RE
+.TP
+\fBselection own\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR?
+.TP
+\fBselection own\fR ?\fB\-command\fR \fIcommand\fR? ?\fB\-selection\fR \fIselection\fR? \fIwindow\fR
+The first form of \fBselection own\fR returns the path name of the
+window in this application that owns \fIselection\fR on the display
+containing \fIwindow\fR, or an empty string if no window in this
+application owns the selection.  \fISelection\fR defaults to PRIMARY and
+\fIwindow\fR defaults to ``.''.
+.PP
+The second form of \fBselection own\fR causes \fIwindow\fR to become
+the new owner of \fIselection\fR on \fIwindow\fR's display, returning
+an empty string as result. The existing owner, if any, is notified
+that it has lost the selection.
+If \fIcommand\fR is specified, it is a Tcl script to execute when
+some other window claims ownership of the selection away from
+\fIwindow\fR.  \fISelection\fR defaults to PRIMARY.
+
+.SH KEYWORDS
+clear, format, handler, ICCCM, own, selection, target, type
diff --git a/raw/mann/send.n b/raw/mann/send.n
new file mode 100644
index 0000000..2ad766c
--- /dev/null
+++ b/raw/mann/send.n
@@ -0,0 +1,332 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: send.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: send.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH send n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+send \- Execute a command in a different application
+.SH SYNOPSIS
+\fBsend ?\fIoptions\fR? \fIapp cmd \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command arranges for \fIcmd\fR (and \fIarg\fRs) to be executed in the
+application named by \fIapp\fR.  It returns the result or
+error from that command execution.
+\fIApp\fR may be the name of any application whose main window is
+on the display containing the sender's main window;  it need not
+be within the same process.
+If no \fIarg\fR arguments are present, then the command to be executed is
+contained entirely within the \fIcmd\fR argument.  If one or
+more \fIarg\fRs are present, they are concatenated to form the
+command to be executed, just as for the \fBeval\fR command.
+.PP
+If the initial arguments of the command begin with ``\-''
+they are treated as options.  The following options are
+currently defined:
+.TP
+\fB\-async\fR
+Requests asynchronous invocation.  In this case the \fBsend\fR
+command will complete immediately without waiting for \fIcmd\fR
+to complete in the target application;  no result will be available
+and errors in the sent command will be ignored.
+If the target application is in the same process as the sending
+application then the \fB\-async\fR option is ignored.
+.TP
+\fB\-displayof\fR \fIpathName\fR
+Specifies that the target application's main window is on the display
+of the window given by \fIpathName\fR, instead of the display containing
+the application's main window.
+.TP
+\fB\-\|\-\fR
+Serves no purpose except to terminate the list of options.  This
+option is needed only if \fIapp\fR could contain a leading ``\-''
+character.
+
+.SH "APPLICATION NAMES"
+.PP
+The name of an application is set initially from the name of the
+program or script that created the application.
+You can query and change the name of an application with the
+\fBtk appname\fR command.
+
+.SH "DISABLING SENDS"
+.PP
+If the \fBsend\fR command is removed from an application (e.g.
+with the command \fBrename send {}\fR) then the application
+will not respond to incoming send requests anymore,  nor will it
+be able to issue outgoing requests.
+Communication can be reenabled by invoking the \fBtk appname\fR
+command.
+
+.SH SECURITY
+.PP
+The \fBsend\fR command is potentially a serious security loophole. On Unix,
+any application that can connect to your X server can send
+scripts to your applications.
+These incoming scripts can use Tcl to read and
+write your files and invoke subprocesses under your name.
+Host-based access control such as that provided by \fBxhost\fR
+is particularly insecure, since it allows anyone with an account
+on particular hosts to connect to your server, and if disabled it
+allows anyone anywhere to connect to your server.
+In order to provide at least a small amount of
+security, Tk checks the access control being used by the server
+and rejects incoming sends unless (a) \fBxhost\fR-style access control
+is enabled (i.e. only certain hosts can establish connections) and (b) the
+list of enabled hosts is empty.
+This means that applications cannot connect to your server unless
+they use some other form of authorization
+such as that provide by \fBxauth\fR.
+.VS
+Under Windows, \fBsend\fR is currently disabled.  Most of the
+functionality is provided by the \fBdde\fR command instead.
+.VE
+.SH KEYWORDS
+.VS
+application, dde, name, remote execution, security, send
+.VE
diff --git a/raw/mann/set.n b/raw/mann/set.n
new file mode 100644
index 0000000..87053c9
--- /dev/null
+++ b/raw/mann/set.n
@@ -0,0 +1,286 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: set.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: set.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH set n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+set \- Read and write variables
+.SH SYNOPSIS
+\fBset \fIvarName \fR?\fIvalue\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Returns the value of variable \fIvarName\fR.
+If \fIvalue\fR is specified, then set
+the value of \fIvarName\fR to \fIvalue\fR, creating a new variable
+if one doesn't already exist, and return its value.
+If \fIvarName\fR contains an open parenthesis and ends with a
+close parenthesis, then it refers to an array element:  the characters
+before the first open parenthesis are the name of the array,
+and the characters between the parentheses are the index within the array.
+Otherwise \fIvarName\fR refers to a scalar variable.
+Normally, \fIvarName\fR is unqualified
+(does not include the names of any containing namespaces),
+and the variable of that name in the current namespace is read or written.
+If \fIvarName\fR includes namespace qualifiers
+(in the array name if it refers to an array element),
+the variable in the specified namespace is read or written.
+.PP
+If no procedure is active,
+then \fIvarName\fR refers to a namespace variable
+(global variable if the current namespace is the global namespace).
+If a procedure is active, then \fIvarName\fR refers to a parameter
+or local variable of the procedure unless the \fBglobal\fR command
+was invoked to declare \fIvarName\fR to be global,
+or unless a \fBvariable\fR command
+was invoked to declare \fIvarName\fR to be a namespace variable.
+
+.SH "SEE ALSO"
+expr(n), proc(n), trace(n), unset(n)
+
+.SH KEYWORDS
+read, write, variable
diff --git a/raw/mann/socket.n b/raw/mann/socket.n
new file mode 100644
index 0000000..b0422bb
--- /dev/null
+++ b/raw/mann/socket.n
@@ -0,0 +1,369 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\" Copyright (c) 1998-1999 by Scriptics Corporation.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: socket.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: socket.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH socket n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+socket \- Open a TCP network connection
+.SH SYNOPSIS
+.sp
+\fBsocket \fR?\fIoptions\fR? \fIhost port\fR
+.sp
+\fBsocket\fR \fB\-server \fIcommand\fR ?\fIoptions\fR? \fIport\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command opens a network socket and returns a channel
+identifier that may be used in future invocations of commands like
+\fBread\fR, \fBputs\fR and \fBflush\fR.
+At present only the TCP network protocol is supported;  future
+releases may include support for additional protocols.
+The \fBsocket\fR command may be used to open either the client or
+server side of a connection, depending on whether the \fB\-server\fR
+switch is specified.
+
+.SH "CLIENT SOCKETS"
+.PP
+If the \fB\-server\fR option is not specified, then the client side of a
+connection is opened and the command returns a channel identifier
+that can be used for both reading and writing.
+\fIPort\fR and \fIhost\fR specify a port
+to connect to;  there must be a server accepting connections on
+this port.  \fIPort\fR is an integer port number and \fIhost\fR
+is either a domain-style name such as \fBwww.sunlabs.com\fR or
+a numerical IP address such as \fB127.0.0.1\fR.
+Use \fIlocalhost\fR to refer to the host on which the command is invoked.
+.PP
+The following options may also be present before \fIhost\fR
+to specify additional information about the connection:
+.TP
+\fB\-myaddr\fI addr\fR
+\fIAddr\fR gives the domain-style name or numerical IP address of
+the client-side network interface to use for the connection.
+This option may be useful if the client machine has multiple network
+interfaces.  If the option is omitted then the client-side interface
+will be chosen by the system software.
+.TP
+\fB\-myport\fI port\fR
+\fIPort\fR specifies an integer port number to use for the client's
+side of the connection.  If this option is omitted, the client's
+port number will be chosen at random by the system software.
+.TP
+\fB\-async\fR
+The \fB\-async\fR option will cause the client socket to be connected
+asynchronously. This means that the socket will be created immediately but
+may not yet be connected to the server, when the call to \fBsocket\fR
+returns. When a \fBgets\fR or \fBflush\fR is done on the socket before the
+connection attempt succeeds or fails, if the socket is in blocking mode, the
+operation will wait until the connection is completed or fails. If the
+socket is in nonblocking mode and a \fBgets\fR or \fBflush\fR is done on
+the socket before the connection attempt succeeds or fails, the operation
+returns immediately and \fBfblocked\fR on the socket returns 1.
+
+.SH "SERVER SOCKETS"
+.PP
+If the \fB\-server\fR option is specified then the new socket
+will be a server for the port given by \fIport\fR.
+Tcl will automatically accept connections to the given port.
+For each connection Tcl will create a new channel that may be used to
+communicate with the client.  Tcl then invokes \fIcommand\fR
+with three additional arguments: the name of the new channel, the
+address, in network address notation, of the client's host, and
+the client's port number.
+.PP
+The following additional option may also be specified before \fIhost\fR:
+.TP
+\fB\-myaddr\fI addr\fR
+\fIAddr\fR gives the domain-style name or numerical IP address of
+the server-side network interface to use for the connection.
+This option may be useful if the server machine has multiple network
+interfaces.  If the option is omitted then the server socket is bound
+to the special address INADDR_ANY so that it can accept connections from
+any interface.
+.PP
+Server channels cannot be used for input or output; their sole use is to
+accept new client connections. The channels created for each incoming
+client connection are opened for input and output. Closing the server
+channel shuts down the server so that no new connections will be
+accepted;  however, existing connections will be unaffected.
+.PP
+Server sockets depend on the Tcl event mechanism to find out when
+new connections are opened.  If the application doesn't enter the
+event loop, for example by invoking the \fBvwait\fR command or
+calling the C procedure \fBTcl_DoOneEvent\fR, then no connections
+will be accepted.
+
+.SH "CONFIGURATION OPTIONS"
+The \fBfconfigure\fR command can be used to query several readonly
+configuration options for socket channels:
+.VS 8.0.5
+.TP
+\fB\-error\fR
+This option gets the current error status of the given socket.  This
+is useful when you need to determine if an asynchronous connect
+operation succeeded.  If there was an error, the error message is
+returned.  If there was no error, an empty string is returned.
+.VE 8.0.5
+.TP
+\fB\-sockname\fR
+This option returns a list of three elements, the address, the host name
+and the port number for the socket. If the host name cannot be computed,
+the second element is identical to the address, the first element of the
+list.
+.TP
+\fB\-peername\fR
+This option is not supported by server sockets. For client and accepted
+sockets, this option returns a list of three elements; these are the
+address, the host name and the port to which the peer socket is connected
+or bound. If the host name cannot be computed, the second element of the
+list is identical to the address, its first element.
+.PP
+
+.SH "SEE ALSO"
+flush(n), open(n), read(n)
+
+.SH KEYWORDS
+bind, channel, connection, domain name, host, network address, socket, tcp
diff --git a/raw/mann/source.n b/raw/mann/source.n
new file mode 100644
index 0000000..ca26bad
--- /dev/null
+++ b/raw/mann/source.n
@@ -0,0 +1,279 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: source.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: source.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH source n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+source \- Evaluate a file or resource as a Tcl script
+.SH SYNOPSIS
+\fBsource \fIfileName\fR
+.sp
+\fBsource\fR \fB\-rsrc \fIresourceName \fR?\fIfileName\fR?
+.sp
+\fBsource\fR \fB\-rsrcid \fIresourceId \fR?\fIfileName\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command takes the contents of the specified file or resource
+and passes it to the Tcl interpreter as a text script.  The return
+value from \fBsource\fR is the return value of the last command
+executed in the script.  If an error occurs in evaluating the contents
+of the script then the \fBsource\fR command will return that error.
+If a \fBreturn\fR command is invoked from within the script then the
+remainder of the file will be skipped and the \fBsource\fR command
+will return normally with the result from the \fBreturn\fR command.
+
+The \fI\-rsrc\fR and \fI\-rsrcid\fR forms of this command are only
+available on Macintosh computers.  These versions of the command
+allow you to source a script from a \fBTEXT\fR resource.  You may specify
+what \fBTEXT\fR resource to source by either name or id.  By default Tcl
+searches all open resource files, which include the current
+application and any loaded C extensions.  Alternatively, you may
+specify the \fIfileName\fR where the \fBTEXT\fR resource can be found.
+
+.SH KEYWORDS
+file, script
diff --git a/raw/mann/split.n b/raw/mann/split.n
new file mode 100644
index 0000000..af73898
--- /dev/null
+++ b/raw/mann/split.n
@@ -0,0 +1,282 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: split.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: split.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH split n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+split \- Split a string into a proper Tcl list
+.SH SYNOPSIS
+\fBsplit \fIstring \fR?\fIsplitChars\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+Returns a list created by splitting \fIstring\fR at each character
+that is in the \fIsplitChars\fR argument.
+Each element of the result list will consist of the
+characters from \fIstring\fR that lie between instances of the
+characters in \fIsplitChars\fR.
+Empty list elements will be generated if \fIstring\fR contains
+adjacent characters in \fIsplitChars\fR, or if the first or last
+character of \fIstring\fR is in \fIsplitChars\fR.
+If \fIsplitChars\fR is an empty string then each character of
+\fIstring\fR becomes a separate element of the result list.
+\fISplitChars\fR defaults to the standard white-space characters.
+For example,
+.CS
+\fBsplit "comp.unix.misc" .\fR
+.CE
+returns \fB"comp unix misc"\fR and
+.CS
+\fBsplit "Hello world" {}\fR
+.CE
+returns \fB"H e l l o { } w o r l d"\fR.
+
+.SH "SEE ALSO"
+join(n), list(n), string(n)
+
+.SH KEYWORDS
+list, split, string
diff --git a/raw/mann/string.n b/raw/mann/string.n
new file mode 100644
index 0000000..3ff435a
--- /dev/null
+++ b/raw/mann/string.n
@@ -0,0 +1,576 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: string.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: string.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH string n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+string \- Manipulate strings
+.SH SYNOPSIS
+\fBstring \fIoption arg \fR?\fIarg ...?\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Performs one of several string operations, depending on \fIoption\fR.
+The legal \fIoption\fRs (which may be abbreviated) are:
+.VS 8.1
+.TP
+\fBstring bytelength \fIstring\fR
+Returns a decimal string giving the number of bytes used to represent
+\fIstring\fR in memory.  Because UTF\-8 uses one to three bytes to
+represent Unicode characters, the byte length will not be the same as
+the character length in general.  The cases where a script cares about
+the byte length are rare.  In almost all cases, you should use the
+\fBstring length\fR operation.  Refer to the \fBTcl_NumUtfChars\fR
+manual entry for more details on the UTF\-8 representation.
+.TP
+\fBstring compare\fR ?\fB\-nocase\fR? ?\fB\-length int\fR? \fIstring1 string2\fR
+.VE 8.1
+Perform a character-by-character comparison of strings \fIstring1\fR and
+\fIstring2\fR.  Returns
+\-1, 0, or 1, depending on whether \fIstring1\fR is lexicographically
+less than, equal to, or greater than \fIstring2\fR.
+.VS 8.1
+If \fB\-length\fR is specified, then only the first \fIlength\fR characters
+are used in the comparison.  If \fB\-length\fR is negative, it is
+ignored.  If \fB\-nocase\fR is specified, then the strings are
+compared in a case-insensitive manner.
+.TP
+\fBstring equal\fR ?\fB\-nocase\fR? ?\fB-length int\fR? \fIstring1 string2\fR
+Perform a character-by-character comparison of strings
+\fIstring1\fR and \fIstring2\fR.  Returns 1 if \fIstring1\fR and
+\fIstring2\fR are identical, or 0 when not.  If \fB\-length\fR is
+specified, then only the first \fIlength\fR characters are used in the
+comparison.  If \fB\-length\fR is negative, it is ignored.  If
+\fB\-nocase\fR is specified, then the strings are compared in a
+case-insensitive manner.
+.TP
+\fBstring first \fIstring1 string2\fR ?\fIstartIndex\fR?
+.VE 8.1
+Search \fIstring2\fR for a sequence of characters that exactly match
+the characters in \fIstring1\fR.  If found, return the index of the
+first character in the first such match within \fIstring2\fR.  If not
+found, return \-1.
+.VS 8.1
+If \fIstartIndex\fR is specified (in any of the forms accepted by the
+\fBindex\fR method), then the search is constrained to start with the
+character in \fIstring2\fR specified by the index.  For example,
+.RS
+.CS
+\fBstring first a 0a23456789abcdef 5\fR
+.CE
+will return \fB10\fR, but
+.CS
+\fBstring first a 0123456789abcdef 11\fR
+.CE
+will return \fB\-1\fR.
+.RE
+.VE 8.1
+.TP
+\fBstring index \fIstring charIndex\fR
+Returns the \fIcharIndex\fR'th character of the \fIstring\fR
+argument.  A \fIcharIndex\fR of 0 corresponds to the first
+character of the string.  
+.VS 8.1
+\fIcharIndex\fR may be specified as
+follows:
+.RS
+.IP \fIinteger\fR 10
+The char specified at this integral index
+.IP \fBend\fR 10
+The last char of the string.
+.IP \fBend\-\fIinteger\fR 10
+The last char of the string minus the specified integer
+offset (e.g. \fBend\-1\fR would refer to the "c" in "abcd").
+.PP
+.VE 8.1
+If \fIcharIndex\fR is less than 0 or greater than
+or equal to the length of the string then an empty string is
+returned.
+.VS 8.1
+.RE
+.TP
+\fBstring is \fIclass\fR ?\fB\-strict\fR? ?\fB\-failindex \fIvarname\fR? \fIstring\fR
+Returns 1 if \fIstring\fR is a valid member of the specified character
+class, otherwise returns 0.  If \fB\-strict\fR is specified, then an
+empty string returns 0, otherwise and empty string will return 1 on
+any class.  If \fB\-failindex\fR is specified, then if the function
+returns 0, the index in the string where the class was no longer valid
+will be stored in the variable named \fIvarname\fR.  The \fIvarname\fR
+will not be set if the function returns 1.  The following character classes
+are recognized (the class name can be abbreviated):
+.RS
+.IP \fBalnum\fR 10
+Any Unicode alphabet or digit character.
+.IP \fBalpha\fR 10
+Any Unicode alphabet character.
+.IP \fBascii\fR 10
+Any character with a value less than \\u0080 (those that
+are in the 7\-bit ascii range).
+.IP \fBboolean\fR 10
+Any of the forms allowed to \fBTcl_GetBoolean\fR.
+.IP \fBcontrol\fR 10
+Any Unicode control character.
+.IP \fBdigit\fR 10
+Any Unicode digit character.  Note that this includes characters
+outside of the [0\-9] range.
+.IP \fBdouble\fR 10
+Any of the valid forms for a double in Tcl, with optional surrounding
+whitespace.  In case of under/overflow in the value, 0 is returned
+and the \fIvarname\fR will contain \-1.
+.IP \fBfalse\fR 10
+Any of the forms allowed to \fBTcl_GetBoolean\fR where the value is false.
+.IP \fBgraph\fR 10
+Any Unicode printing character, except space.
+.IP \fBinteger\fR 10
+Any of the valid forms for an integer in Tcl, with optional surrounding
+whitespace.  In case of under/overflow in the value, 0 is returned
+and the \fIvarname\fR will contain \-1.
+.IP \fBlower\fR 10
+Any Unicode lower case alphabet character.
+.IP \fBprint\fR 10
+Any Unicode printing character, including space.
+.IP \fBpunct\fR 10
+Any Unicode punctuation character.
+.IP \fBspace\fR 10
+Any Unicode space character.
+.IP \fBtrue\fR 10
+Any of the forms allowed to \fBTcl_GetBoolean\fR where the value is true.
+.IP \fBupper\fR 10
+Any upper case alphabet character in the Unicode character set.
+.IP \fBwordchar\fR 10
+Any Unicode word character.  That is any alphanumeric character,
+and any Unicode connector punctuation characters (e.g. underscore).
+.IP \fBxdigit\fR 10
+Any hexadecimal digit character ([0\-9A\-Fa\-f]).
+.PP
+In the case of \fBboolean\fR, \fBtrue\fR and \fBfalse\fR, if the
+function will return 0, then the \fIvarname\fR will always be set to 0,
+due to the varied nature of a valid boolean value.
+.RE
+.TP
+\fBstring last \fIstring1 string2\fR ?\fIstartIndex\fR?
+.VE 8.1
+Search \fIstring2\fR for a sequence of characters that exactly match
+the characters in \fIstring1\fR.  If found, return the index of the
+first character in the last such match within \fIstring2\fR.  If there
+is no match, then return \-1.
+.VS 8.1
+If \fIstartIndex\fR is specified (in any of the forms accepted by the
+\fBindex\fR method), then only the characters in \fIstring2\fR at or before the
+specified \fIstartIndex\fR will be considered by the search.  For example,
+.RS
+.CS
+\fBstring last a 0a23456789abcdef 15\fR
+.CE
+will return \fB10\fR, but
+.CS
+\fBstring last a 0a23456789abcdef 9\fR
+.CE
+will return \fB1\fR.
+.RE
+.VE 8.1
+.TP
+\fBstring length \fIstring\fR
+Returns a decimal string giving the number of characters in
+\fIstring\fR.  Note that this is not necessarily the same as the
+number of bytes used to store the string.
+.VS 8.1
+.TP
+\fBstring map\fR ?\fB\-nocase\fR? \fIcharMap string\fR
+Replaces characters in \fIstring\fR based on the key-value pairs in
+\fIcharMap\fR.  \fIcharMap\fR is a list of \fIkey value key value\fR ...
+as in the form returned by \fBarray get\fR.  Each instance of a
+key in the string will be replaced with its corresponding value.  If
+\fB\-nocase\fR is specified, then matching is done without regard to
+case differences. Both \fIkey\fR and \fIvalue\fR may be multiple
+characters.  Replacement is done in an ordered manner, so the key appearing
+first in the list will be checked first, and so on.  \fIstring\fR is
+only iterated over once, so earlier key replacements will have no
+affect for later key matches.  For example,
+.RS
+.CS
+\fBstring map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc\fR
+.CE
+will return the string \fB01321221\fR.
+.RE
+.TP
+\fBstring match\fR ?\fB\-nocase\fR? \fIpattern\fR \fIstring\fR
+.VE 8.1
+See if \fIpattern\fR matches \fIstring\fR; return 1 if it does, 0
+if it doesn't.  
+.VS 8.1
+If \fB\-nocase\fR is specified, then the pattern attempts to match
+against the string in a case insensitive manner.
+.VE 8.1
+For the two strings to match, their contents
+must be identical except that the following special sequences
+may appear in \fIpattern\fR:
+.RS
+.IP \fB*\fR 10
+Matches any sequence of characters in \fIstring\fR,
+including a null string.
+.IP \fB?\fR 10
+Matches any single character in \fIstring\fR.
+.IP \fB[\fIchars\fB]\fR 10
+Matches any character in the set given by \fIchars\fR.  If a sequence
+of the form
+\fIx\fB\-\fIy\fR appears in \fIchars\fR, then any character
+between \fIx\fR and \fIy\fR, inclusive, will match.
+.VS 8.1
+When used with \fB\-nocase\fR, the end points of the range are converted
+to lower case first.  Whereas {[A\-z]} matches '_' when matching
+case-sensitively ('_' falls between the 'Z' and 'a'), with \fB\-nocase\fR
+this is considered like {[A\-Za\-z]} (and probably what was meant in the
+first place).
+.VE 8.1
+.IP \fB\e\fIx\fR 10
+Matches the single character \fIx\fR.  This provides a way of
+avoiding the special interpretation of the characters
+\fB*?[]\e\fR in \fIpattern\fR.
+.RE
+.TP
+\fBstring range \fIstring first last\fR
+Returns a range of consecutive characters from \fIstring\fR, starting
+with the character whose index is \fIfirst\fR and ending with the
+character whose index is \fIlast\fR. An index of 0 refers to the
+.VS 8.1
+first character of the string.  \fIfirst\fR and \fIlast\fR may be
+specified as for the \fBindex\fR method.
+.VE 8.1
+If \fIfirst\fR is less than zero then it is treated as if it were zero, and
+if \fIlast\fR is greater than or equal to the length of the string then
+it is treated as if it were \fBend\fR.  If \fIfirst\fR is greater than
+\fIlast\fR then an empty string is returned.
+.VS 8.1
+.TP
+\fBstring repeat \fIstring count\fR
+Returns \fIstring\fR repeated \fIcount\fR number of times.
+.TP
+\fBstring replace \fIstring first last\fR ?\fInewstring\fR?
+Removes a range of consecutive characters from \fIstring\fR, starting
+with the character whose index is \fIfirst\fR and ending with the
+character whose index is \fIlast\fR.  An index of 0 refers to the
+first character of the string.  \fIFirst\fR and \fIlast\fR may be
+specified as for the \fBindex\fR method.  If \fInewstring\fR is
+specified, then it is placed in the removed character range.
+If \fIfirst\fR is less than zero then it is treated as if it were zero, and
+if \fIlast\fR is greater than or equal to the length of the string then
+it is treated as if it were \fBend\fR.  If \fIfirst\fR is greater than
+\fIlast\fR or the length of the initial string, or \fIlast\fR is less
+than 0, then the initial string is returned untouched.
+.TP
+\fBstring tolower \fIstring\fR ?\fIfirst\fR? ?\fIlast\fR?
+Returns a value equal to \fIstring\fR except that all upper (or title) case
+letters have been converted to lower case.  If \fIfirst\fR is specified, it
+refers to the first char index in the string to start modifying.  If
+\fIlast\fR is specified, it refers to the char index in the string to stop
+at (inclusive).  \fIfirst\fR and \fIlast\fR may be
+specified as for the \fBindex\fR method.
+.TP
+\fBstring totitle \fIstring\fR ?\fIfirst\fR? ?\fIlast\fR?
+Returns a value equal to \fIstring\fR except that the first character
+in \fIstring\fR is converted to its Unicode title case variant (or upper
+case if there is no title case variant) and the rest of the string is
+converted to lower case.  If \fIfirst\fR is specified, it
+refers to the first char index in the string to start modifying.  If
+\fIlast\fR is specified, it refers to the char index in the string to stop
+at (inclusive).  \fIfirst\fR and \fIlast\fR may be
+specified as for the \fBindex\fR method.
+.TP
+\fBstring toupper \fIstring\fR ?\fIfirst\fR? ?\fIlast\fR?
+Returns a value equal to \fIstring\fR except that all lower (or title) case
+letters have been converted to upper case.  If \fIfirst\fR is specified, it
+refers to the first char index in the string to start modifying.  If
+\fIlast\fR is specified, it refers to the char index in the string to stop
+at (inclusive).  \fIfirst\fR and \fIlast\fR may be specified as for the
+\fBindex\fR method.
+.VE 8.1
+.TP
+\fBstring trim \fIstring\fR ?\fIchars\fR?
+Returns a value equal to \fIstring\fR except that any leading
+or trailing characters from the set given by \fIchars\fR are
+removed.
+If \fIchars\fR is not specified then white space is removed
+(spaces, tabs, newlines, and carriage returns).
+.TP
+\fBstring trimleft \fIstring\fR ?\fIchars\fR?
+Returns a value equal to \fIstring\fR except that any
+leading characters from the set given by \fIchars\fR are
+removed.
+If \fIchars\fR is not specified then white space is removed
+(spaces, tabs, newlines, and carriage returns).
+.TP
+\fBstring trimright \fIstring\fR ?\fIchars\fR?
+Returns a value equal to \fIstring\fR except that any
+trailing characters from the set given by \fIchars\fR are
+removed.
+If \fIchars\fR is not specified then white space is removed
+(spaces, tabs, newlines, and carriage returns).
+.VS 8.1
+.TP
+\fBstring wordend \fIstring charIndex\fR
+Returns the index of the character just after the last one in the word
+containing character \fIcharIndex\fR of \fIstring\fR.  \fIcharIndex\fR
+may be specified as for the \fBindex\fR method.  A word is
+considered to be any contiguous range of alphanumeric (Unicode letters
+or decimal digits) or underscore (Unicode connector punctuation)
+characters, or any single character other than these.
+.TP
+\fBstring wordstart \fIstring charIndex\fR
+Returns the index of the first character in the word containing
+character \fIcharIndex\fR of \fIstring\fR.  \fIcharIndex\fR may be
+specified as for the \fBindex\fR method.  A word is considered to be any
+contiguous range of alphanumeric (Unicode letters or decimal digits)
+or underscore (Unicode connector punctuation) characters, or any
+single character other than these.
+.VE 8.1
+
+.SH "SEE ALSO"
+expr(n), list(n)
+
+.SH KEYWORDS
+case conversion, compare, index, match, pattern, string, word, equal, ctype
diff --git a/raw/mann/subst.n b/raw/mann/subst.n
new file mode 100644
index 0000000..d9b8d56
--- /dev/null
+++ b/raw/mann/subst.n
@@ -0,0 +1,286 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: subst.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: subst.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH subst n 7.4 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+subst \- Perform backslash, command, and variable substitutions
+.SH SYNOPSIS
+\fBsubst \fR?\fB\-nobackslashes\fR? ?\fB\-nocommands\fR? ?\fB\-novariables\fR? \fIstring\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command performs variable substitutions, command substitutions,
+and backslash substitutions on its \fIstring\fR argument and
+returns the fully-substituted result.
+The substitutions are performed in exactly the same way as for
+Tcl commands.
+As a result, the \fIstring\fR argument is actually substituted twice,
+once by the Tcl parser in the usual fashion for Tcl commands, and
+again by the \fIsubst\fR command.
+.PP
+If any of the \fB\-nobackslashes\fR, \fB\-nocommands\fR, or
+\fB\-novariables\fR are specified, then the corresponding substitutions
+are not performed.
+For example, if \fB\-nocommands\fR is specified, no command substitution
+is performed:  open and close brackets are treated as ordinary characters
+with no special interpretation.
+.PP
+Note: when it performs its substitutions, \fIsubst\fR does not
+give any special treatment to double quotes or curly braces.  For
+example, the script
+.CS
+\fBset a 44
+subst {xyz {$a}}\fR
+.CE
+returns ``\fBxyz {44}\fR'', not ``\fBxyz {$a}\fR''.
+
+.SH "SEE ALSO"
+eval(n)
+
+.SH KEYWORDS
+backslash substitution, command substitution, variable substitution
diff --git a/raw/mann/switch.n b/raw/mann/switch.n
new file mode 100644
index 0000000..3790d61
--- /dev/null
+++ b/raw/mann/switch.n
@@ -0,0 +1,352 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: switch.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: switch.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH switch n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+switch \- Evaluate one of several scripts, depending on a given value
+.SH SYNOPSIS
+\fBswitch \fR?\fIoptions\fR?\fI string pattern body \fR?\fIpattern body \fR...?
+.sp
+\fBswitch \fR?\fIoptions\fR?\fI string \fR{\fIpattern body \fR?\fIpattern body \fR...?}
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBswitch\fR command matches its \fIstring\fR argument against each of
+the \fIpattern\fR arguments in order.
+As soon as it finds a \fIpattern\fR that matches \fIstring\fR it
+evaluates the following \fIbody\fR argument by passing it recursively
+to the Tcl interpreter and returns the result of that evaluation.
+If the last \fIpattern\fR argument is \fBdefault\fR then it matches
+anything.
+If no \fIpattern\fR argument
+matches \fIstring\fR and no default is given, then the \fBswitch\fR
+command returns an empty string.
+.PP
+If the initial arguments to \fBswitch\fR start with \fB\-\fR then
+they are treated as options.  The following options are
+currently supported:
+.TP 10
+\fB\-exact\fR
+Use exact matching when comparing \fIstring\fR to a pattern.  This
+is the default.
+.TP 10
+\fB\-glob\fR
+When matching \fIstring\fR to the patterns, use glob-style matching
+(i.e. the same as implemented by the \fBstring match\fR command).
+.TP 10
+\fB\-regexp\fR
+When matching \fIstring\fR to the patterns, use regular
+expression matching
+(as described in the \fBre_syntax\fR reference page).
+.TP 10
+\fB\-\|\-\fR
+Marks the end of options.  The argument following this one will
+be treated as \fIstring\fR even if it starts with a \fB\-\fR.
+.PP
+Two syntaxes are provided for the \fIpattern\fR and \fIbody\fR arguments.
+The first uses a separate argument for each of the patterns and commands;
+this form is convenient if substitutions are desired on some of the
+patterns or commands.
+The second form places all of the patterns and commands together into
+a single argument; the argument must have proper list structure, with
+the elements of the list being the patterns and commands.
+The second form makes it easy to construct multi-line switch commands,
+since the braces around the whole list make it unnecessary to include a
+backslash at the end of each line.
+Since the \fIpattern\fR arguments are in braces in the second form,
+no command or variable substitutions are performed on them;  this makes
+the behavior of the second form different than the first form in some
+cases.
+.PP
+If a \fIbody\fR is specified as ``\fB\-\fR'' it means that the \fIbody\fR
+for the next pattern should also be used as the body for this
+pattern (if the next pattern also has a body of ``\fB\-\fR''
+then the body after that is used, and so on).
+This feature makes it possible to share a single \fIbody\fR among
+several patterns.
+.PP
+Beware of how you place comments in \fBswitch\fR commands.  Comments
+should only be placed \fBinside\fR the execution body of one of the
+patterns, and not intermingled with the patterns.
+.PP
+Below are some examples of \fBswitch\fR commands:
+.CS
+\fBswitch\0abc\0a\0\-\0b\0{format 1}\0abc\0{format 2}\0default\0{format 3}\fR
+.CE
+will return \fB2\fR, 
+.CS
+\fBswitch\0\-regexp\0aaab {
+	^a.*b$\0\-
+	b\0{format 1}
+	a*\0{format 2}
+	default\0{format 3}
+}\fR
+.CE
+will return \fB1\fR, and
+.CS
+\fBswitch\0xyz {
+	a
+		\-
+	b
+		{
+		# Correct Comment Placement
+		format 1
+	}
+	a*
+		{format 2}
+	default
+		{format 3}
+}\fR
+.CE
+will return \fB3\fR.
+
+.SH "SEE ALSO"
+for(n), if(n), regexp(n)
+
+.SH KEYWORDS
+switch, match, regular expression
diff --git a/raw/mann/tclvars.n b/raw/mann/tclvars.n
new file mode 100644
index 0000000..e660e2b
--- /dev/null
+++ b/raw/mann/tclvars.n
@@ -0,0 +1,636 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tclvars.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tclvars.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tclvars n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tclvars \- Variables used by Tcl
+.BE
+
+.SH DESCRIPTION
+.PP
+The following global variables are created and managed automatically
+by the Tcl library.  Except where noted below, these variables should
+normally be treated as read-only by application-specific code and by users.
+.TP
+\fBenv\fR
+This variable is maintained by Tcl as an array
+whose elements are the environment variables for the process.
+Reading an element will return the value of the corresponding
+environment variable.
+Setting an element of the array will modify the corresponding
+environment variable or create a new one if it doesn't already
+exist.
+Unsetting an element of \fBenv\fR will remove the corresponding
+environment variable.
+Changes to the \fBenv\fR array will affect the environment
+passed to children by commands like \fBexec\fR.
+If the entire \fBenv\fR array is unset then Tcl will stop
+monitoring \fBenv\fR accesses and will not update environment
+variables.
+.RS
+.VS 8.0 
+Under Windows, the environment variables PATH and COMSPEC in any
+capitalization are converted automatically to upper case.  For instance, the
+PATH variable could be exported by the operating system as ``path'',
+``Path'', ``PaTh'', etc., causing otherwise simple Tcl code to have to
+support many special cases.  All other environment variables inherited by
+Tcl are left unmodified.
+.VE
+.RE
+.RS
+On the Macintosh, the environment variable is constructed by Tcl as no
+global environment variable exists.  The environment variables that
+are created for Tcl include:
+.TP
+\fBLOGIN\fR
+This holds the Chooser name of the Macintosh.
+.TP
+\fBUSER\fR
+This also holds the Chooser name of the Macintosh.
+.TP
+\fBSYS_FOLDER\fR
+The path to the system directory.
+.TP
+\fBAPPLE_M_FOLDER\fR
+The path to the Apple Menu directory.
+.TP
+\fBCP_FOLDER\fR
+The path to the control panels directory.
+.TP
+\fBDESK_FOLDER\fR
+The path to the desk top directory.
+.TP
+\fBEXT_FOLDER\fR
+The path to the system extensions directory.
+.TP
+\fBPREF_FOLDER\fR
+The path to the preferences directory.
+.TP
+\fBPRINT_MON_FOLDER\fR
+The path to the print monitor directory.
+.TP
+\fBSHARED_TRASH_FOLDER\fR
+The path to the network trash directory.
+.TP
+\fBTRASH_FOLDER\fR
+The path to the trash directory.
+.TP
+\fBSTART_UP_FOLDER\fR
+The path to the start up directory.
+.TP
+\fBHOME\fR
+The path to the application's default directory.
+.PP
+You can also create your own environment variables for the Macintosh.
+A file named  \fITcl Environment Variables\fR may be placed in the
+preferences folder in the Mac system folder.  Each line of this file
+should be of the form \fIVAR_NAME=var_data\fR.
+.PP
+The last alternative is to place environment variables in a 'STR#' 
+resource named \fITcl Environment Variables\fR of the application.  This
+is considered a little more ``Mac like'' than a Unix style Environment
+Variable file.  Each entry in the 'STR#' resource has the same format
+as above.  The source code file \fItclMacEnv.c\fR contains the
+implementation of the env mechanisms.  This file contains many
+#define's that allow customization of the env mechanisms to fit your
+applications needs.
+.RE
+.TP
+\fBerrorCode\fR
+After an error has occurred, this variable will be set to hold
+additional information about the error in a form that is easy
+to process with programs.
+\fBerrorCode\fR consists of a Tcl list with one or more elements.
+The first element of the list identifies a general class of
+errors, and determines the format of the rest of the list.
+The following formats for \fBerrorCode\fR are used by the
+Tcl core; individual applications may define additional formats.
+.RS
+.TP
+\fBARITH\fI code msg\fR
+This format is used when an arithmetic error occurs (e.g. an attempt
+to divide by zero in the \fBexpr\fR command).
+\fICode\fR identifies the precise error and \fImsg\fR provides a
+human-readable description of the error.  \fICode\fR will be either
+DIVZERO (for an attempt to divide by zero),
+DOMAIN (if an argument is outside the domain of a function, such as acos(\-3)),
+IOVERFLOW (for integer overflow),
+OVERFLOW (for a floating-point overflow),
+or UNKNOWN (if the cause of the error cannot be determined).
+.TP
+\fBCHILDKILLED\fI pid sigName msg\fR
+This format is used when a child process has been killed because of
+a signal.  The second element of \fBerrorCode\fR will be the
+process's identifier (in decimal).
+The third element will be the symbolic name of the signal that caused
+the process to terminate; it will be one of the names from the
+include file signal.h, such as \fBSIGPIPE\fR.
+The fourth element will be a short human-readable message
+describing the signal, such as ``write on pipe with no readers''
+for \fBSIGPIPE\fR.
+.TP
+\fBCHILDSTATUS\fI pid code\fR
+This format is used when a child process has exited with a non-zero
+exit status.  The second element of \fBerrorCode\fR will be the
+process's identifier (in decimal) and the third element will be the exit
+code returned by the process (also in decimal).
+.TP
+\fBCHILDSUSP\fI pid sigName msg\fR
+This format is used when a child process has been suspended because
+of a signal.
+The second element of \fBerrorCode\fR will be the process's identifier,
+in decimal.
+The third element will be the symbolic name of the signal that caused
+the process to suspend; this will be one of the names from the
+include file signal.h, such as \fBSIGTTIN\fR.
+The fourth element will be a short human-readable message
+describing the signal, such as ``background tty read''
+for \fBSIGTTIN\fR.
+.TP
+\fBNONE\fR
+This format is used for errors where no additional information is
+available for an error besides the message returned with the
+error.  In these cases \fBerrorCode\fR will consist of a list
+containing a single element whose contents are \fBNONE\fR.
+.TP
+\fBPOSIX \fIerrName msg\fR
+If the first element of \fBerrorCode\fR is \fBPOSIX\fR, then
+the error occurred during a POSIX kernel call.
+The second element of the list will contain the symbolic name
+of the error that occurred, such as \fBENOENT\fR; this will
+be one of the values defined in the include file errno.h.
+The third element of the list will be a human-readable
+message corresponding to \fIerrName\fR, such as
+``no such file or directory'' for the \fBENOENT\fR case.
+.PP
+To set \fBerrorCode\fR, applications should use library
+procedures such as \fBTcl_SetErrorCode\fR and \fBTcl_PosixError\fR,
+or they may invoke the \fBerror\fR command.
+If one of these methods hasn't been used, then the Tcl
+interpreter will reset the variable to \fBNONE\fR after
+the next error.
+.RE
+.TP
+\fBerrorInfo\fR
+After an error has occurred, this string will contain one or more lines
+identifying the Tcl commands and procedures that were being executed
+when the most recent error occurred.
+Its contents take the form of a stack trace showing the various
+nested Tcl commands that had been invoked at the time of the error.
+.TP
+\fBtcl_library\fR
+This variable holds the name of a directory containing the
+system library of Tcl scripts, such as those used for auto-loading.
+The value of this variable is returned by the \fBinfo library\fR command.
+See the \fBlibrary\fR manual entry for details of the facilities 
+provided by the Tcl script library.
+Normally each application or package will have its own application-specific
+script library in addition to the Tcl script library;
+each application should set a global variable with a name like
+\fB$\fIapp\fB_library\fR (where \fIapp\fR is the application's name)
+to hold the network file name for that application's library directory.
+The initial value of \fBtcl_library\fR is set when an interpreter
+is created by searching several different directories until one is
+found that contains an appropriate Tcl startup script.
+If the \fBTCL_LIBRARY\fR environment variable exists, then
+the directory it names is checked first.
+If \fBTCL_LIBRARY\fR isn't set or doesn't refer to an appropriate
+directory, then Tcl checks several other directories based on a
+compiled-in default location, the location of the binary containing
+the application, and the current working directory.
+.TP
+\fBtcl_patchLevel\fR
+When an interpreter is created Tcl initializes this variable to
+hold a string giving the current patch level for Tcl, such as
+\fB7.3p2\fR for Tcl 7.3 with the first two official patches, or
+\fB7.4b4\fR for the fourth beta release of Tcl 7.4.
+The value of this variable is returned by the \fBinfo patchlevel\fR
+command.
+.VS 8.0 br
+.TP
+\fBtcl_pkgPath\fR
+This variable holds a list of directories indicating where packages are
+normally installed.  It is not used on Windows.  It typically contains
+either one or two entries; if it contains two entries, the first is
+normally a directory for platform-dependent packages (e.g., shared library
+binaries) and the second is normally a directory for platform-independent
+packages (e.g., script files). Typically a package is installed as a
+subdirectory of one of the entries in \fB$tcl_pkgPath\fR. The directories
+in \fB$tcl_pkgPath\fR are included by default in the \fBauto_path\fR
+variable, so they and their immediate subdirectories are automatically
+searched for packages during \fBpackage require\fR commands.  Note:
+\fBtcl_pkgPath\fR it not intended to be modified by the application.  Its
+value is added to \fBauto_path\fR at startup; changes to \fBtcl_pkgPath\fR
+are not reflected in \fBauto_path\fR.  If you want Tcl to search additional
+directories for packages you should add the names of those directories to
+\fBauto_path\fR, not \fBtcl_pkgPath\fR.
+.VE
+.TP
+\fBtcl_platform\fR
+This is an associative array whose elements contain information about
+the platform on which the application is running, such as the name of
+the operating system, its current release number, and the machine's
+instruction set.  The elements listed below will always
+be defined, but they may have empty strings as values if Tcl couldn't
+retrieve any relevant information.  In addition, extensions
+and applications may add additional values to the array.  The
+predefined elements are:
+
+
+
+
+
+.RS
+.VS
+.TP
+\fBbyteOrder\fR
+The native byte order of this machine: either \fBlittleEndian\fR or
+\fBbigEndian\fR. 
+.VE
+.TP
+\fBdebug\fR
+If this variable exists, then the interpreter
+was compiled with debugging symbols enabled.  This varible will only
+exist on Windows so extension writers can specify which package to load
+depending on the C run-time library that is loaded.
+.TP
+\fBmachine\fR
+The instruction set executed by this machine, such as
+\fBintel\fR, \fBPPC\fR, \fB68k\fR, or \fBsun4m\fR.  On UNIX machines, this
+is the value returned by \fBuname -m\fR.
+.TP
+\fBos\fR 
+The name of the operating system running on this machine,
+such as \fBWindows 95\fR, \fBWindows NT\fR, \fBMacOS\fR, or \fBSunOS\fR.
+On UNIX machines, this is the value returned by \fBuname -s\fR.
+On Windows 95 and Windows 98, the value returned will be \fBWindows
+95\fR to provide better backwards compatibility to Windows 95; to
+distinguish between the two, check the \fBosVersion\fR.
+.TP
+\fBosVersion\fR
+The version number for the operating system running on this machine.
+On UNIX machines, this is the value returned by \fBuname -r\fR.  On
+Windows 95, the version will be 4.0; on Windows 98, the version will
+be 4.10.
+.TP
+\fBplatform\fR
+Either \fBwindows\fR, \fBmacintosh\fR, or \fBunix\fR.  This identifies the
+general operating environment of the machine.
+.TP
+\fBthreaded\fR
+If this variable exists, then the interpreter
+was compiled with threads enabled.
+.TP
+\fBuser\fR
+This identifies the
+current user based on the login information available on the platform.
+This comes from the USER or LOGNAME environment variable on Unix,
+and the value from GetUserName on Windows and Macintosh.
+.RE
+.TP
+\fBtcl_precision\fR
+.VS
+This variable controls the number of digits to generate
+when converting floating-point values to strings.  It defaults
+to 12.
+17 digits is ``perfect'' for IEEE floating-point in that it allows
+double-precision values to be converted to strings and back to
+binary with no loss of information.  However, using 17 digits prevents
+any rounding, which produces longer, less intuitive results.  For example,
+\fBexpr 1.4\fR returns 1.3999999999999999 with \fBtcl_precision\fR
+set to 17, vs. 1.4 if \fBtcl_precision\fR is 12.
+.RS
+All interpreters in a process share a single \fBtcl_precision\fR value:
+changing it in one interpreter will affect all other interpreters as
+well.  However, safe interpreters are not allowed to modify the
+variable.
+.RE
+.VE
+.TP
+\fBtcl_rcFileName\fR
+This variable is used during initialization to indicate the name of a
+user-specific startup file.  If it is set by application-specific
+initialization, then the Tcl startup code will check for the existence
+of this file and \fBsource\fR it if it exists.  For example, for \fBwish\fR
+the variable is set to \fB~/.wishrc\fR for Unix and \fB~/wishrc.tcl\fR
+for Windows.
+.TP
+\fBtcl_rcRsrcName\fR
+This variable is only used on Macintosh systems.  The variable is used
+during initialization to indicate the name of a user-specific
+\fBTEXT\fR resource located in the application or extension resource
+forks.  If it is set by application-specific initialization, then the
+Tcl startup code will check for the existence of this resource and
+\fBsource\fR it if it exists.  For example, the Macintosh \fBwish\fR
+application has the variable is set to \fBtclshrc\fR.
+.TP
+\fBtcl_traceCompile\fR
+The value of this variable can be set to control
+how much tracing information
+is displayed during bytecode compilation.
+By default, tcl_traceCompile is zero and no information is displayed.
+Setting tcl_traceCompile to 1 generates a one line summary in stdout
+whenever a procedure or top level command is compiled.
+Setting it to 2 generates a detailed listing in stdout of the
+bytecode instructions emitted during every compilation.
+This variable is useful in
+tracking down suspected problems with the Tcl compiler.
+It is also occasionally useful when converting
+existing code to use Tcl8.0.
+.TP
+\fBtcl_traceExec\fR
+The value of this variable can be set to control
+how much tracing information
+is displayed during bytecode execution.
+By default, tcl_traceExec is zero and no information is displayed.
+Setting tcl_traceExec to 1 generates a one line trace in stdout
+on each call to a Tcl procedure.
+Setting it to 2 generates a line of output
+whenever any Tcl command is invoked
+that contains the name of the command and its arguments.
+Setting it to 3 produces a detailed trace showing the result of
+executing each bytecode instruction.
+Note that when tcl_traceExec is 2 or 3,
+commands such as set and incr
+that have been entirely replaced by a sequence
+of bytecode instructions are not shown.
+Setting this variable is useful in
+tracking down suspected problems with the bytecode compiler
+and interpreter.
+It is also occasionally useful when converting
+code to use Tcl8.0.
+.TP
+\fBtcl_wordchars\fR
+The value of this variable is a regular expression that can be set to
+control what are considered ``word'' characters, for instances like
+selecting a word by double-clicking in text in Tk.  It is platform
+dependent.  On Windows, it defaults to \fB\\S\fR, meaning anything
+but a Unicode space character.  Otherwise it defaults to \fB\\w\fR,
+which is any Unicode word character (number, letter, or underscore).
+.TP
+\fBtcl_nonwordchars\fR
+The value of this variable is a regular expression that can be set to
+control what are considered ``non-word'' characters, for instances like
+selecting a word by double-clicking in text in Tk.  It is platform
+dependent.  On Windows, it defaults to \fB\\s\fR, meaning any Unicode space
+character.  Otherwise it defaults to \fB\\W\fR, which is anything but a
+Unicode word character (number, letter, or underscore).
+.TP
+\fBtcl_version\fR
+When an interpreter is created Tcl initializes this variable to
+hold the version number for this version of Tcl in the form \fIx.y\fR.
+Changes to \fIx\fR represent major changes with probable
+incompatibilities and changes to \fIy\fR represent small enhancements and
+bug fixes that retain backward compatibility.
+The value of this variable is returned by the \fBinfo tclversion\fR
+command.
+
+.SH "SEE ALSO"
+eval(n)
+
+.SH KEYWORDS
+arithmetic, bytecode, compiler, error, environment, POSIX, precision, subprocess, variables
diff --git a/raw/mann/tell.n b/raw/mann/tell.n
new file mode 100644
index 0000000..ee7862b
--- /dev/null
+++ b/raw/mann/tell.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tell.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tell.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tell n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tell \- Return current access position for an open channel
+.SH SYNOPSIS
+\fBtell \fIchannelId\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+.VS 8.1
+Returns an integer string giving the current access position in
+\fIchannelId\fR.  This value returned is a byte offset that can be passed to
+\fBseek\fR in order to set the channel to a particular position.  Note
+that this value is in terms of bytes, not characters like \fBread\fR.
+.VE 8.1
+The value returned is -1 for channels that do not support
+seeking.
+
+.SH "SEE ALSO"
+file(n), open(n), close(n), gets(n), seek(n)
+
+.SH KEYWORDS
+access position, channel, seeking
diff --git a/raw/mann/time.n b/raw/mann/time.n
new file mode 100644
index 0000000..35fb1bd
--- /dev/null
+++ b/raw/mann/time.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: time.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: time.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH time n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+time \- Time the execution of a script
+.SH SYNOPSIS
+\fBtime \fIscript\fR ?\fIcount\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command will call the Tcl interpreter \fIcount\fR
+times to evaluate \fIscript\fR (or once if \fIcount\fR isn't
+specified).  It will then return a string of the form
+.CS
+\fB503 microseconds per iteration\fR
+.CE
+which indicates the average amount of time required per iteration,
+in microseconds.
+Time is measured in elapsed time, not CPU time.
+
+.SH "SEE ALSO"
+clock(n)
+
+.SH KEYWORDS
+script, time
diff --git a/raw/mann/tk.n b/raw/mann/tk.n
new file mode 100644
index 0000000..5bf4c98
--- /dev/null
+++ b/raw/mann/tk.n
@@ -0,0 +1,317 @@
+'\"
+'\" Copyright (c) 1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tk.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tk.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk \- Manipulate Tk internal state
+.SH SYNOPSIS
+\fBtk\fR \fIoption \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBtk\fR command provides access to miscellaneous
+elements of Tk's internal state.
+Most of the information manipulated by this command pertains to the
+application as a whole, or to a screen or display, rather than to a
+particular window.
+The command can take any of a number of different forms
+depending on the \fIoption\fR argument.  The legal forms are:
+.TP
+\fBtk appname \fR?\fInewName\fR?
+If \fInewName\fR isn't specified, this command returns the name
+of the application (the name that may be used in \fBsend\fR
+commands to communicate with the application).
+If \fInewName\fR is specified, then the name of the application
+is changed to \fInewName\fR.
+If the given name is already in use, then a suffix of the form
+``\fB #2\fR'' or ``\fB #3\fR'' is appended in order to make the name unique.
+The command's result is the name actually chosen.
+\fInewName\fR should not start with a capital letter.
+This will interfere with option processing, since names starting with
+capitals are assumed to be classes;  as a result, Tk may not
+be able to find some options for the application.
+If sends have been disabled by deleting the \fBsend\fR command,
+this command will reenable them and recreate the \fBsend\fR
+command.
+.TP
+\fBtk scaling \fR?\fB\-displayof \fIwindow\fR? ?\fInumber\fR?
+.
+Sets and queries the current scaling factor used by Tk to convert between
+physical units (for example, points, inches, or millimeters) and pixels.  The
+\fInumber\fR argument is a floating point number that specifies the number of
+pixels per point on \fIwindow\fR's display.  If the \fIwindow\fR argument is
+omitted, it defaults to the main window.  If the \fInumber\fR argument is 
+omitted, the current value of the scaling factor is returned.
+.RS
+.PP
+A ``point'' is a unit of measurement equal to 1/72 inch.  A scaling factor
+of 1.0 corresponds to 1 pixel per point, which is equivalent to a standard
+72 dpi monitor.  A scaling factor of 1.25 would mean 1.25 pixels per point,
+which is the setting for a 90 dpi monitor; setting the scaling factor to
+1.25 on a 72 dpi monitor would cause everything in the application to be
+displayed 1.25 times as large as normal.  The initial value for the scaling
+factor is set when the application starts, based on properties of the
+installed monitor, but it can be changed at any time.  Measurements made
+after the scaling factor is changed will use the new scaling factor, but it
+is undefined whether existing widgets will resize themselves dynamically to
+accomodate the new scaling factor.
+.RE
+.VS 8.3
+.TP
+\fBtk useinputmethods \fR?\fB\-displayof \fIwindow\fR? ?\fIboolean\fR?
+.
+Sets and queries the state of whether Tk should use XIM (X Input Methods)
+for filtering events.  The resulting state is returned.  XIM is used in
+some locales (ie: Japanese, Korean), to handle special input devices.  This
+feature is only significant on X.  If XIM support is not available, this
+will always return 0.  If the \fIwindow\fR argument is omitted, it defaults
+to the main window.  If the \fIboolean\fR argument is omitted, the current
+state is returned.  This is turned on by default for the main display.
+.VE
+.SH KEYWORDS
+application name, send
diff --git a/raw/mann/tk_dialog.n b/raw/mann/tk_dialog.n
new file mode 100644
index 0000000..852524a
--- /dev/null
+++ b/raw/mann/tk_dialog.n
@@ -0,0 +1,300 @@
+'\"
+'\" Copyright (c) 1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tk_dialog.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tk_dialog.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_dialog n 4.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_dialog \- Create modal dialog and wait for response
+.SH SYNOPSIS
+\fBtk_dialog \fIwindow title text bitmap default string string ...\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This procedure is part of the Tk script library.
+Its arguments describe a dialog box:
+.TP
+\fIwindow\fR
+Name of top-level window to use for dialog.  Any existing window
+by this name is destroyed.
+.TP
+\fItitle\fR
+Text to appear in the window manager's title bar for the dialog.
+.TP
+\fItext\fR
+Message to appear in the top portion of the dialog box.
+.TP
+\fIbitmap\fR
+If non-empty, specifies a bitmap to display in the top portion of
+the dialog, to the left of the text.
+If this is an empty string then no bitmap is displayed in the dialog.
+.TP
+\fIdefault\fR
+If this is an integer greater than or equal to zero, then it gives
+the index of the button that is to be the default button for the dialog
+(0 for the leftmost button, and so on).
+If less than zero or an empty string then there won't be any default
+button.
+.TP
+\fIstring\fR
+There will be one button for each of these arguments.
+Each \fIstring\fR specifies text to display in a button,
+in order from left to right.
+.PP
+After creating a dialog box, \fBtk_dialog\fR waits for the user to
+select one of the buttons either by clicking on the button with the
+mouse or by typing return to invoke the default button (if any).
+Then it returns the index of the selected button:  0 for the leftmost
+button, 1 for the button next to it, and so on.
+If the dialog's window is destroyed before the user selects one
+of the buttons, then -1 is returned.
+.PP
+While waiting for the user to respond, \fBtk_dialog\fR sets a local
+grab.  This prevents the user from interacting with the application
+in any way except to invoke the dialog box.
+
+.SH KEYWORDS
+bitmap, dialog, modal
diff --git a/raw/mann/tkerror.n b/raw/mann/tkerror.n
new file mode 100644
index 0000000..3e1e534
--- /dev/null
+++ b/raw/mann/tkerror.n
@@ -0,0 +1,273 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tkerror.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tkerror.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tkerror n 4.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tkerror \- Command invoked to process background errors
+.SH SYNOPSIS
+\fBtkerror \fImessage\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+Note: as of Tk 4.1 the \fBtkerror\fR command has been renamed to
+\fBbgerror\fR because the event loop (which is what usually invokes
+it) is now part of Tcl.  For backward compatibility
+the \fBbgerror\fR provided by the current Tk version still
+tries to call \fBtkerror\fR if there is one (or an auto loadable one), 
+so old script defining that error handler should still work, but you
+should anyhow modify your scripts to use \fBbgerror\fR instead 
+of \fBtkerror\fR because that support for the old name might vanish
+in the near future. If that call fails, \fBbgerror\fR 
+posts a dialog showing the error and offering to see the stack trace
+to the user. If you want your own error management you should
+directly override \fBbgerror\fR instead of \fBtkerror\fR.
+Documentation for \fBbgerror\fR is available as part of Tcl's
+documentation.
+
+.SH KEYWORDS
+background error, reporting
diff --git a/raw/mann/tkvars.n b/raw/mann/tkvars.n
new file mode 100644
index 0000000..f14efcf
--- /dev/null
+++ b/raw/mann/tkvars.n
@@ -0,0 +1,307 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tkvars.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tkvars.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tkvars n 4.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tkvars \- Variables used or set by Tk
+.BE
+
+.SH DESCRIPTION
+.PP
+The following Tcl variables are either set or used by Tk at various times
+in its execution:
+.TP 15
+\fBtk_library\fR
+This variable holds the file name for a directory containing a library
+of Tcl scripts related to Tk.  These scripts include an initialization
+file that is normally processed whenever a Tk application starts up,
+plus other files containing procedures that implement default behaviors
+for widgets.
+The initial value of \fBtcl_library\fR is set when Tk is added to
+an interpreter;  this is done by searching several different directories
+until one is found that contains an appropriate Tk startup script.
+If the \fBTK_LIBRARY\fR environment variable exists, then
+the directory it names is checked first.
+If \fBTK_LIBRARY\fR isn't set or doesn't refer to an appropriate
+directory, then Tk checks several other directories based on a
+compiled-in default location, the location of the Tcl library directory,
+the location of the binary containing the application, and the current
+working directory.
+The variable can be modified by an application to switch to a different
+library.
+.TP
+\fBtk_patchLevel\fR
+Contains a decimal integer giving the current patch level for Tk.
+The patch level is incremented for each new release or patch, and
+it uniquely identifies an official version of Tk.
+.TP
+\fBtkPriv\fR
+This variable is an array containing several pieces of information
+that are private to Tk.  The elements of \fBtkPriv\fR are used by
+Tk library procedures and default bindings.
+They should not be accessed by any code outside Tk.
+.TP
+\fBtk_strictMotif\fR
+This variable is set to zero by default.
+If an application sets it to one, then Tk attempts to adhere as
+closely as possible to Motif look-and-feel standards.
+For example, active elements such as buttons and scrollbar
+sliders will not change color when the pointer passes over them.
+.TP 15
+\fBtk_version\fR
+Tk sets this variable in the interpreter for each application.
+The variable holds the current version number of the Tk
+library in the form \fImajor\fR.\fIminor\fR.  \fIMajor\fR and
+\fIminor\fR are integers.  The major version number increases in
+any Tk release that includes changes that are not backward compatible
+(i.e. whenever existing Tk applications and scripts may have to change to
+work with the new release).  The minor version number increases with
+each new release of Tk, except that it resets to zero whenever the
+major version number changes.
+
+.SH KEYWORDS
+variables, version
diff --git a/raw/mann/tkwait.n b/raw/mann/tkwait.n
new file mode 100644
index 0000000..252b4d7
--- /dev/null
+++ b/raw/mann/tkwait.n
@@ -0,0 +1,286 @@
+'\"
+'\" Copyright (c) 1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tkwait.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tkwait.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tkwait n "" Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tkwait \- Wait for variable to change or window to be destroyed
+.SH SYNOPSIS
+\fBtkwait variable \fIname\fR
+.sp
+\fBtkwait visibility \fIname\fR
+.sp
+\fBtkwait window \fIname\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBtkwait\fR command waits for one of several things to happen,
+then it returns without taking any other actions.
+The return value is always an empty string.
+If the first argument is \fBvariable\fR (or any abbreviation of
+it) then the second argument is the name of a global variable and the
+command waits for that variable to be modified.
+If the first argument is \fBvisibility\fR (or any abbreviation
+of it) then the second argument is the name of a window and the
+\fBtkwait\fR command waits for a change in its
+visibility state (as indicated by the arrival of a VisibilityNotify
+event).  This form is typically used to wait for a newly-created
+window to appear on the screen before taking some action.
+If the first argument is \fBwindow\fR (or any abbreviation
+of it) then the second argument is the name of a window and the
+\fBtkwait\fR command waits for that window to be destroyed.
+This form is typically used to wait for a user to finish interacting
+with a dialog box before using the result of that interaction.
+.PP
+While the \fBtkwait\fR command is waiting it processes events in
+the normal fashion, so the application will continue to respond
+to user interactions.
+If an event handler invokes \fBtkwait\fR again, the nested call
+to \fBtkwait\fR must complete before the outer call can complete.
+
+.SH KEYWORDS
+variable, visibility, wait, window
diff --git a/raw/mann/trace.n b/raw/mann/trace.n
new file mode 100644
index 0000000..ea010a4
--- /dev/null
+++ b/raw/mann/trace.n
@@ -0,0 +1,395 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: trace.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: trace.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH trace n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+trace \- Monitor variable accesses
+.SH SYNOPSIS
+\fBtrace \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command causes Tcl commands to be executed whenever certain operations are
+invoked.  At present, only variable tracing is implemented. The
+legal \fIoption\fR's (which may be abbreviated) are:
+.TP
+\fBtrace variable \fIname ops command\fR
+Arrange for \fIcommand\fR to be executed whenever variable \fIname\fR
+is accessed in one of the ways given by \fIops\fR.  \fIName\fR may
+refer to a normal variable, an element of an array, or to an array
+as a whole (i.e. \fIname\fR may be just the name of an array, with no
+parenthesized index).  If \fIname\fR refers to a whole array, then
+\fIcommand\fR is invoked whenever any element of the array is
+manipulated.  If the variable does not exist, it will be created but
+will not be given a value, so it will be visible to \fBnamespace which\fR
+queries, but not to \fBinfo exists\fR queries.
+.RS
+.PP
+\fIOps\fR indicates which operations are of interest, and consists of
+one or more of the following letters:
+.TP
+\fBr\fR
+Invoke \fIcommand\fR whenever the variable is read.
+.TP
+\fBw\fR
+Invoke \fIcommand\fR whenever the variable is written.
+.TP
+\fBu\fR
+Invoke \fIcommand\fR whenever the variable is unset.  Variables
+can be unset explicitly with the \fBunset\fR command, or
+implicitly when procedures return (all of their local variables
+are unset).  Variables are also unset when interpreters are
+deleted, but traces will not be invoked because there is no
+interpreter in which to execute them.
+.PP
+When the trace triggers, three arguments are appended to
+\fIcommand\fR so that the actual command is as follows:
+.CS
+\fIcommand name1 name2 op\fR
+.CE
+\fIName1\fR and \fIname2\fR give the name(s) for the variable
+being accessed:  if the variable is a scalar then \fIname1\fR
+gives the variable's name and \fIname2\fR is an empty string;
+if the variable is an array element then \fIname1\fR gives the
+name of the array and name2 gives the index into the array;
+if an entire array is being deleted and the trace was registered
+on the overall array, rather than a single element, then \fIname1\fR
+gives the array name and \fIname2\fR is an empty string.
+\fIName1\fR and \fIname2\fR are not necessarily the same as the
+name used in the \fBtrace variable\fR command:  the \fBupvar\fR
+command allows a procedure to reference a variable under a
+different name.
+\fIOp\fR indicates what operation is being performed on the
+variable, and is one of \fBr\fR, \fBw\fR, or \fBu\fR as
+defined above.
+.PP
+\fICommand\fR executes in the same context as the code that invoked
+the traced operation:  if the variable was accessed as part of a
+Tcl procedure, then \fIcommand\fR will have access to the same
+local variables as code in the procedure.  This context may be
+different than the context in which the trace was created.
+If \fIcommand\fR invokes a procedure (which it normally does) then
+the procedure will have to use \fBupvar\fR or \fBuplevel\fR if it
+wishes to access the traced variable.
+Note also that \fIname1\fR may not necessarily be the same as the name
+used to set the trace on the variable;  differences can occur if
+the access is made through a variable defined with the \fBupvar\fR
+command.
+.PP
+For read and write traces, \fIcommand\fR can modify
+the variable to affect the result of the traced operation.
+If \fIcommand\fR modifies the value of a variable during a
+read or write trace, then the new value will be returned as the
+result of the traced operation.
+The return value from  \fIcommand\fR is ignored except that
+if it returns an error of any sort then the traced operation
+also returns an error with
+the same error message returned by the trace command
+(this mechanism can be used to implement read-only variables, for
+example).
+For write traces, \fIcommand\fR is invoked after the variable's
+value has been changed; it can write a new value into the variable
+to override the original value specified in the write operation.
+To implement read-only variables, \fIcommand\fR will have to restore
+the old value of the variable.
+.PP
+While \fIcommand\fR is executing during a read or write trace, traces
+on the variable are temporarily disabled.
+This means that reads and writes invoked by
+\fIcommand\fR will occur directly, without invoking \fIcommand\fR
+(or any other traces) again.
+However, if \fIcommand\fR unsets the variable then unset traces
+will be invoked.
+.PP
+When an unset trace is invoked, the variable has already been
+deleted:  it will appear to be undefined with no traces.
+If an unset occurs because of a procedure return, then the
+trace will be invoked in the variable context of the procedure
+being returned to:  the stack frame of the returning procedure
+will no longer exist.
+Traces are not disabled during unset traces, so if an unset trace
+command creates a new trace and accesses the variable, the
+trace will be invoked.
+Any errors in unset traces are ignored.
+.PP
+If there are multiple traces on a variable they are invoked
+in order of creation, most-recent first.
+If one trace returns an error, then no further traces are
+invoked for the variable.
+If an array element has a trace set, and there is also a trace
+set on the array as a whole, the trace on the overall array
+is invoked before the one on the element.
+.PP
+Once created, the trace remains in effect either until the
+trace is removed with the \fBtrace vdelete\fR command described
+below, until the variable is unset, or until the interpreter
+is deleted.
+Unsetting an element of array will remove any traces on that
+element, but will not remove traces on the overall array.
+.PP
+This command returns an empty string.
+.RE
+.TP
+\fBtrace vdelete \fIname ops command\fR
+If there is a trace set on variable \fIname\fR with the
+operations and command given by \fIops\fR and \fIcommand\fR,
+then the trace is removed, so that \fIcommand\fR will never
+again be invoked.
+Returns an empty string.
+.TP
+\fBtrace vinfo \fIname\fR
+Returns a list containing one element for each trace
+currently set on variable \fIname\fR.
+Each element of the list is itself a list containing two
+elements, which are the \fIops\fR and \fIcommand\fR associated
+with the trace.
+If \fIname\fR doesn't exist or doesn't have any traces set, then
+the result of the command will be an empty string.
+
+.SH KEYWORDS
+read, variable, write, trace, unset
diff --git a/raw/mann/unknown.n b/raw/mann/unknown.n
new file mode 100644
index 0000000..c52b6d4
--- /dev/null
+++ b/raw/mann/unknown.n
@@ -0,0 +1,313 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: unknown.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: unknown.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH unknown n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+unknown \- Handle attempts to use non-existent commands
+.SH SYNOPSIS
+\fBunknown \fIcmdName \fR?\fIarg arg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is invoked by the Tcl interpreter whenever a script
+tries to invoke a command that doesn't exist.  The implementation
+of \fBunknown\fR isn't part of the Tcl core;  instead, it is a
+library procedure defined by default when Tcl starts up.  You
+can override the default \fBunknown\fR to change its functionality.
+.PP
+If the Tcl interpreter encounters a command name for which there
+is not a defined command, then Tcl checks for the existence of
+a command named \fBunknown\fR.
+If there is no such command, then the interpreter returns an
+error.
+If the \fBunknown\fR command exists, then it is invoked with
+arguments consisting of the fully-substituted name and arguments
+for the original non-existent command.
+The \fBunknown\fR command typically does things like searching
+through library directories for a command procedure with the name
+\fIcmdName\fR, or expanding abbreviated command names to full-length,
+or automatically executing unknown commands as sub-processes.
+In some cases (such as expanding abbreviations) \fBunknown\fR will
+change the original command slightly and then (re-)execute it.
+The result of the \fBunknown\fR command is used as the result for
+the original non-existent command.
+.PP
+The default implementation of \fBunknown\fR behaves as follows.
+It first calls the \fBauto_load\fR library procedure to load the command.
+If this succeeds, then it executes the original command with its
+original arguments.
+If the auto-load fails then \fBunknown\fR calls \fBauto_execok\fR
+to see if there is an executable file by the name \fIcmd\fR.
+If so, it invokes the Tcl \fBexec\fR command
+with \fIcmd\fR and all the \fIargs\fR as arguments.
+If \fIcmd\fR can't be auto-executed, \fBunknown\fR checks to
+see if the command was invoked at top-level and outside of any
+script.  If so, then \fBunknown\fR takes two additional steps.
+First, it sees if \fIcmd\fR has one of the following three forms:
+\fB!!\fR, \fB!\fIevent\fR, or \fB^\fIold\fB^\fInew\fR?\fB^\fR?.
+If so, then \fBunknown\fR carries out history substitution
+in the same way that \fBcsh\fR would for these constructs.
+Finally, \fBunknown\fR checks to see if \fIcmd\fR is
+a unique abbreviation for an existing Tcl command.
+If so, it expands the command name and executes the command with
+the original arguments.
+If none of the above efforts has been able to execute
+the command, \fBunknown\fR generates an error return.
+If the global variable \fBauto_noload\fR is defined, then the auto-load
+step is skipped.
+If the global variable \fBauto_noexec\fR is defined then the
+auto-exec step is skipped.
+Under normal circumstances the return value from \fBunknown\fR
+is the return value from the command that was eventually
+executed.
+
+.SH "SEE ALSO"
+info(n), proc(n)
+
+.SH KEYWORDS
+error, non-existent command
diff --git a/raw/mann/unset.n b/raw/mann/unset.n
new file mode 100644
index 0000000..26f65f3
--- /dev/null
+++ b/raw/mann/unset.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: unset.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: unset.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH unset n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+unset \- Delete variables
+.SH SYNOPSIS
+\fBunset \fIname \fR?\fIname name ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command removes one or more variables.
+Each \fIname\fR is a variable name, specified in any of the
+ways acceptable to the \fBset\fR command.
+If a \fIname\fR refers to an element of an array then that
+element is removed without affecting the rest of the array.
+If a \fIname\fR consists of an array name with no parenthesized
+index, then the entire array is deleted.
+The \fBunset\fR command returns an empty string as result.
+An error occurs if any of the variables doesn't exist, and any variables
+after the non-existent one are not deleted.
+
+.SH KEYWORDS
+remove, variable
diff --git a/raw/mann/update.n b/raw/mann/update.n
new file mode 100644
index 0000000..d7e4fe3
--- /dev/null
+++ b/raw/mann/update.n
@@ -0,0 +1,286 @@
+'\"
+'\" Copyright (c) 1990-1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: update.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: update.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH update n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+update \- Process pending events and idle callbacks
+.SH SYNOPSIS
+\fBupdate\fR ?\fBidletasks\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is used to bring the application ``up to date''
+by entering the event loop repeatedly until all pending events
+(including idle callbacks) have been processed.
+.PP
+If the \fBidletasks\fR keyword is specified as an argument to the
+command, then no new events or errors are processed;  only idle
+callbacks are invoked.
+This causes operations that are normally deferred, such as display
+updates and window layout calculations, to be performed immediately.
+.PP
+The \fBupdate idletasks\fR command is useful in scripts where
+changes have been made to the application's state and you want those
+changes to appear on the display immediately, rather than waiting
+for the script to complete.  Most display updates are performed as
+idle callbacks, so \fBupdate idletasks\fR will cause them to run.
+However, there are some kinds of updates that only happen in
+response to events, such as those triggered by window size changes;
+these updates will not occur in \fBupdate idletasks\fR.
+.PP
+The \fBupdate\fR command with no options is useful in scripts where
+you are performing a long-running computation but you still want
+the application to respond to events such as user interactions;  if
+you occasionally call \fBupdate\fR then user input will be processed
+during the next call to \fBupdate\fR.
+
+.SH "SEE ALSO"
+after(n), bgerror(n)
+
+.SH KEYWORDS
+event, flush, handler, idle, update
diff --git a/raw/mann/uplevel.n b/raw/mann/uplevel.n
new file mode 100644
index 0000000..21258f5
--- /dev/null
+++ b/raw/mann/uplevel.n
@@ -0,0 +1,315 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: uplevel.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: uplevel.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH uplevel n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+uplevel \- Execute a script in a different stack frame
+.SH SYNOPSIS
+\fBuplevel \fR?\fIlevel\fR?\fI arg \fR?\fIarg ...\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+All of the \fIarg\fR arguments are concatenated as if they had
+been passed to \fBconcat\fR; the result is then evaluated in the
+variable context indicated by \fIlevel\fR.  \fBUplevel\fR returns
+the result of that evaluation.
+.PP
+If \fIlevel\fR is an integer then
+it gives a distance (up the procedure calling stack) to move before
+executing the command.  If \fIlevel\fR consists of \fB#\fR followed by
+a number then the number gives an absolute level number.  If \fIlevel\fR
+is omitted then it defaults to \fB1\fR.  \fILevel\fR cannot be
+defaulted if the first \fIcommand\fR argument starts with a digit or \fB#\fR.
+.PP
+For example, suppose that procedure \fBa\fR was invoked
+from top-level, and that it called \fBb\fR, and that \fBb\fR called \fBc\fR.
+Suppose that \fBc\fR invokes the \fBuplevel\fR command.  If \fIlevel\fR
+is \fB1\fR or \fB#2\fR  or omitted, then the command will be executed
+in the variable context of \fBb\fR.  If \fIlevel\fR is \fB2\fR or \fB#1\fR
+then the command will be executed in the variable context of \fBa\fR.
+If \fIlevel\fR is \fB3\fR or \fB#0\fR then the command will be executed
+at top-level (only global variables will be visible).
+.PP
+The \fBuplevel\fR command causes the invoking procedure to disappear
+from the procedure calling stack while the command is being executed.
+In the above example, suppose \fBc\fR invokes the command
+.CS
+\fBuplevel 1 {set x 43; d}\fR
+.CE
+where \fBd\fR is another Tcl procedure.  The \fBset\fR command will
+modify the variable \fBx\fR in \fBb\fR's context, and \fBd\fR will execute
+at level 3, as if called from \fBb\fR.  If it in turn executes
+the command
+.CS
+\fBuplevel {set x 42}\fR
+.CE
+then the \fBset\fR command will modify the same variable \fBx\fR in \fBb\fR's
+context:  the procedure \fBc\fR does not appear to be on the call stack
+when \fBd\fR is executing.  The command ``\fBinfo level\fR'' may
+be used to obtain the level of the current procedure.
+.PP
+\fBUplevel\fR makes it possible to implement new control
+constructs as Tcl procedures (for example, \fBuplevel\fR could
+be used to implement the \fBwhile\fR construct as a Tcl procedure).
+.PP
+\fBnamespace eval\fR is another way (besides procedure calls)
+that the Tcl naming context can change.
+It adds a call frame to the stack to represent the namespace context.
+This means each \fBnamespace eval\fR command
+counts as another call level for \fBuplevel\fR and \fBupvar\fR commands.
+For example, \fBinfo level 1\fR will return a list
+describing a command that is either
+the outermost procedure call or the outermost \fBnamespace eval\fR command.
+Also, \fBuplevel #0\fR evaluates a script
+at top-level in the outermost namespace (the global namespace).
+
+.SH "SEE ALSO"
+namespace(n), upvar(n)
+
+.SH KEYWORDS
+context, level, namespace, stack frame, variables
diff --git a/raw/mann/upvar.n b/raw/mann/upvar.n
new file mode 100644
index 0000000..e60d86e
--- /dev/null
+++ b/raw/mann/upvar.n
@@ -0,0 +1,347 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: upvar.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: upvar.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH upvar n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+upvar \- Create link to variable in a different stack frame
+.SH SYNOPSIS
+\fBupvar \fR?\fIlevel\fR? \fIotherVar myVar \fR?\fIotherVar myVar \fR...?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command arranges for one or more local variables in the current
+procedure to refer to variables in an enclosing procedure call or
+to global variables.
+\fILevel\fR may have any of the forms permitted for the \fBuplevel\fR
+command, and may be omitted if the first letter of the first \fIotherVar\fR
+isn't \fB#\fR or a digit (it defaults to \fB1\fR).
+For each \fIotherVar\fR argument, \fBupvar\fR makes the variable
+by that name in the procedure frame given by \fIlevel\fR (or at
+global level, if \fIlevel\fR is \fB#0\fR) accessible
+in the current procedure by the name given in the corresponding
+\fImyVar\fR argument.
+The variable named by \fIotherVar\fR need not exist at the time of the
+call;  it will be created the first time \fImyVar\fR is referenced, just like
+an ordinary variable.  There must not exist a variable by the
+name \fImyVar\fR at the time \fBupvar\fR is invoked.
+\fIMyVar\fR is always treated as the name of a variable, not an
+array element.  Even if the name looks like an array element,
+such as \fBa(b)\fR, a regular variable is created.
+\fIOtherVar\fR may refer to a scalar variable, an array,
+or an array element.
+\fBUpvar\fR returns an empty string.
+.PP
+The \fBupvar\fR command simplifies the implementation of call-by-name
+procedure calling and also makes it easier to build new control constructs
+as Tcl procedures.
+For example, consider the following procedure:
+.CS
+\fBproc add2 name {
+	upvar $name x
+	set x [expr $x+2]
+}\fR
+.CE
+\fBAdd2\fR is invoked with an argument giving the name of a variable,
+and it adds two to the value of that variable.
+Although \fBadd2\fR could have been implemented using \fBuplevel\fR
+instead of \fBupvar\fR, \fBupvar\fR makes it simpler for \fBadd2\fR
+to access the variable in the caller's procedure frame.
+.PP
+\fBnamespace eval\fR is another way (besides procedure calls)
+that the Tcl naming context can change.
+It adds a call frame to the stack to represent the namespace context.
+This means each \fBnamespace eval\fR command
+counts as another call level for \fBuplevel\fR and \fBupvar\fR commands.
+For example, \fBinfo level 1\fR will return a list
+describing a command that is either
+the outermost procedure call or the outermost \fBnamespace eval\fR command.
+Also, \fBuplevel #0\fR evaluates a script
+at top-level in the outermost namespace (the global namespace).
+.PP
+.VS
+If an upvar variable is unset (e.g. \fBx\fR in \fBadd2\fR above), the
+\fBunset\fR operation affects the variable it is linked to, not the
+upvar variable.  There is no way to unset an upvar variable except
+by exiting the procedure in which it is defined.  However, it is
+possible to retarget an upvar variable by executing another \fBupvar\fR
+command.
+
+.SH Traces and upvar
+.PP
+Upvar interacts with traces in a straightforward but possibly
+unexpected manner.  If a variable trace is defined on \fIotherVar\fR, that
+trace will be triggered by actions involving \fImyVar\fR.  However,
+the trace procedure will be passed the name of \fImyVar\fR, rather
+than the name of \fIotherVar\fR.  Thus, the output of the following code
+will be \fBlocalVar\fR rather than \fBoriginalVar\fR:
+.CS
+\fBproc traceproc { name index op } {
+	puts $name
+}
+proc setByUpvar { name value } {
+	upvar $name localVar
+	set localVar $value
+}
+set originalVar 1
+trace variable originalVar w traceproc
+setByUpvar originalVar 2
+}\fR
+.CE
+
+If \fIotherVar\fR refers to an element of an array, then variable
+traces set for the entire array will not be invoked when \fImyVar\fR
+is accessed (but traces on the particular element will still be
+invoked).  In particular, if the array is \fBenv\fR, then changes
+made to \fImyVar\fR will not be passed to subprocesses correctly.
+.VE
+
+.SH "SEE ALSO"
+global(n), namespace(n), uplevel(n), variable(n)
+
+.SH KEYWORDS
+context, frame, global, level, namespace, procedure, variable
diff --git a/raw/mann/variable.n b/raw/mann/variable.n
new file mode 100644
index 0000000..3e9974f
--- /dev/null
+++ b/raw/mann/variable.n
@@ -0,0 +1,301 @@
+'\"
+'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: variable.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: variable.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH variable n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+variable \- create and initialize a namespace variable
+.SH SYNOPSIS
+\fBvariable \fR?\fIname value...\fR? \fIname \fR?\fIvalue\fR?
+.BE
+
+.SH DESCRIPTION
+.PP
+This command is normally used within a
+\fBnamespace eval\fR command to create one or more variables
+within a namespace.
+Each variable \fIname\fR is initialized with \fIvalue\fR.
+The \fIvalue\fR for the last variable is optional.
+.PP
+If a variable \fIname\fR does not exist, it is created.
+In this case, if \fIvalue\fR is specified,
+it is assigned to the newly created variable.
+If no \fIvalue\fR is specified, the new variable is left undefined.
+If the variable already exists,
+it is set to \fIvalue\fR if \fIvalue\fR is specified
+or left unchanged if no \fIvalue\fR is given.
+Normally, \fIname\fR is unqualified
+(does not include the names of any containing namespaces),
+and the variable is created in the current namespace.
+If \fIname\fR includes any namespace qualifiers,
+the variable is created in the specified namespace.  If the variable
+is not defined, it will be visible to the \fBnamespace which\fR
+command, but not to the \fBinfo exists\fR command.
+.PP
+If the \fBvariable\fR command is executed inside a Tcl procedure,
+it creates local variables
+linked to the corresponding namespace variables (and therefore these
+variables are listed by \fBinfo locals\fR.)
+In this way the \fBvariable\fR command resembles the \fBglobal\fR command,
+although the \fBglobal\fR command
+only links to variables in the global namespace.
+If any \fIvalue\fRs are given,
+they are used to modify the values of the associated namespace variables.
+If a namespace variable does not exist,
+it is created and optionally initialized.
+.PP
+A \fIname\fR argument cannot reference an element within an array.
+Instead, \fIname\fR should reference the entire array,
+and the initialization \fIvalue\fR should be left off.
+After the variable has been declared,
+elements within the array can be set using ordinary
+\fBset\fR or \fBarray\fR commands.
+
+.SH "SEE ALSO"
+global(n), namespace(n), upvar(n)
+
+.SH KEYWORDS
+global, namespace, procedure, variable
diff --git a/raw/mann/vwait.n b/raw/mann/vwait.n
new file mode 100644
index 0000000..7d55c29
--- /dev/null
+++ b/raw/mann/vwait.n
@@ -0,0 +1,278 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: vwait.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: vwait.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH vwait n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+vwait \- Process events until a variable is written
+.SH SYNOPSIS
+\fBvwait\fR \fIvarName\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+This command enters the Tcl event loop to process events, blocking
+the application if no events are ready.  It continues processing
+events until some event handler sets the value of variable
+\fIvarName\fR.  Once \fIvarName\fR has been set, the \fBvwait\fR
+command will return as soon as the event handler that modified
+\fIvarName\fR completes.  \fIvarName\fR must globally scoped
+(either with a call to \fBglobal\fR for the \fIvarName\fR, or with
+the full namespace path specification).
+.PP
+In some cases the \fBvwait\fR command may not return immediately
+after \fIvarName\fR is set.  This can happen if the event handler
+that sets \fIvarName\fR does not complete immediately.  For example,
+if an event handler sets \fIvarName\fR and then itself calls
+\fBvwait\fR to wait for a different variable, then it may not return
+for a long time.  During this time the top-level \fBvwait\fR is
+blocked waiting for the event handler to complete, so it cannot
+return either.
+
+.SH "SEE ALSO"
+global(n)
+
+.SH KEYWORDS
+event, variable, wait
diff --git a/raw/mann/while.n b/raw/mann/while.n
new file mode 100644
index 0000000..018636c
--- /dev/null
+++ b/raw/mann/while.n
@@ -0,0 +1,293 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: while.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: while.n,v 1.1 2003/12/20 03:31:54 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH while n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+while \- Execute script repeatedly as long as a condition is met
+.SH SYNOPSIS
+\fBwhile \fItest body\fR
+.BE
+
+.SH DESCRIPTION
+.PP
+The \fBwhile\fR command evaluates \fItest\fR as an expression
+(in the same way that \fBexpr\fR evaluates its argument).
+The value of the expression must a proper boolean
+value; if it is a true value
+then \fIbody\fR is executed by passing it to the Tcl interpreter.
+Once \fIbody\fR has been executed then \fItest\fR is evaluated
+again, and the process repeats until eventually \fItest\fR
+evaluates to a false boolean value.  \fBContinue\fR
+commands may be executed inside \fIbody\fR to terminate the current
+iteration of the loop, and \fBbreak\fR
+commands may be executed inside \fIbody\fR to cause immediate
+termination of the \fBwhile\fR command.  The \fBwhile\fR command
+always returns an empty string.
+.PP
+Note: \fItest\fR should almost always be enclosed in braces.  If not,
+variable substitutions will be made before the \fBwhile\fR
+command starts executing, which means that variable changes
+made by the loop body will not be considered in the expression.
+This is likely to result in an infinite loop.  If \fItest\fR is
+enclosed in braces, variable substitutions are delayed until the
+expression is evaluated (before
+each loop iteration), so changes in the variables will be visible.
+For an example, try the following script with and without the braces
+around \fB$x<10\fR:
+.CS
+set x 0
+while {$x<10} {
+	puts "x is $x"
+	incr x
+}
+.CE
+
+.SH "SEE ALSO"
+break(n), continue(n), for(n), foreach(n)
+
+.SH KEYWORDS
+boolean value, loop, test, while
diff --git a/src/cman/cman.conf b/src/cman/cman.conf
new file mode 100644
index 0000000..e9e7364
--- /dev/null
+++ b/src/cman/cman.conf
@@ -0,0 +1,114 @@
+#
+# Generated automatically from man.conf.in by the
+# configure script.
+#
+# man.conf from man-1.5h
+#
+# This file is read by man to configure the default manpath (also used
+# when MANPATH contains an empty substring), to find out where the cat
+# pages corresponding to given man pages should be stored,
+# and to map each PATH element to a manpath element.
+# It may also record the pathname of the man binary. [This is unused.]
+# The format is:
+#
+# MANBIN		pathname
+# MANPATH		manpath_element	[corresponding_catdir]
+# MANPATH_MAP		path_element	manpath_element
+#
+# If no catdir is given, it is assumed to be equal to the mandir
+# (so that this dir has both man1 etc. and cat1 etc. subdirs).
+# This is the traditional Unix setup.
+# Certain versions of the FSSTND recommend putting formatted versions
+# of /usr/.../man/manx/page.x into /var/catman/.../catx/page.x.
+# The keyword FSSTND will cause this behaviour.
+# Certain versions of the FHS recommend putting formatted versions of
+# /usr/.../share/man/[locale/]manx/page.x into
+# /var/cache/man/.../[locale/]catx/page.x.
+# The keyword FHS will cause this behaviour (and overrides FSSTND).
+# Explicitly given catdirs override.
+#
+# FSSTND
+FHS
+#
+# This file is also read by man in order to find how to call nroff, less, etc.,
+# and to determine the correspondence between extensions and decompressors.
+#
+# MANBIN		/usr/local/bin/man
+#
+# Every automatically generated MANPATH includes these fields
+#
+
+MANPATH /usr/share/man
+MANPATH /usr/local/share/man
+MANPATH	/usr/X11R6/man
+MANPATH /usr/lib/perl5/man
+MANPATH	/usr/man
+MANPATH	/usr/local/man
+#
+# Set up PATH to MANPATH mapping
+#
+# (these mappings are superfluous when the right hand side is
+# in the mandatory manpath already, but will keep man from statting
+# lots of other nearby files and directories)
+#
+MANPATH_MAP	/bin			/usr/share/man
+MANPATH_MAP	/sbin			/usr/share/man
+MANPATH_MAP	/usr/bin		/usr/share/man
+MANPATH_MAP	/usr/sbin		/usr/share/man
+MANPATH_MAP	/usr/local/bin		/usr/local/share/man
+MANPATH_MAP	/usr/local/sbin		/usr/local/share/man
+MANPATH_MAP	/usr/X11R6/bin		/usr/X11R6/man
+MANPATH_MAP	/usr/bin/X11		/usr/X11R6/man
+MANPATH_MAP	/usr/bin/mh		/usr/share/man
+#
+# Useful paths - note that COL should not be defined when
+# NROFF is defined as "groff -Tascii" or "groff -Tlatin1";
+# not only is it superfluous, but it actually damages the output.
+#
+TROFF		/usr/bin/groff -S -Tlatin1 -mandoc
+NROFF		/usr/bin/groff -Tnippon -mandoc
+JNROFF		/usr/bin/groff -Tnippon -mandocj
+KNROFF		/usr/bin/groff -Tkorean -mandoc
+EQN		/usr/bin/geqn -Tlatin1
+NEQN		/usr/bin/geqn -Tlatin1
+KNEQN		/usr/bin/geqn -Tkorean
+TBL		/usr/bin/gtbl
+COL		/usr/bin/col
+REFER		/usr/bin/grefer
+PIC		/usr/bin/gpic
+VGRIND		
+GRAP		
+PAGER		/usr/bin/less -isr
+CAT		/bin/cat
+#
+# The command "man -a xyzzy" will show all man pages for xyzzy.
+# When CMP is defined man will try to avoid showing the same
+# text twice. (But compressed pages compare unequal.)
+#
+CMP		/usr/bin/cmp -s
+#
+# Compress cat pages
+#
+COMPRESS	/bin/gzip
+COMPRESS_EXT	.gz
+#
+# Default manual sections (and order) to search if -S is not specified
+# and the MANSECT environment variable is not set.
+#
+MANSECT		1:8:2:3:4:5:6:7:9:tcl:n:l:p:o
+#
+# Default options to use when man is invoked without options
+# This is mainly for the benefit of those that think -a should be the default
+# Note that some systems have /usr/man/allman, causing pages to be shown twice.
+#
+# @noall at MANDEFOPTIONS	-a
+#
+# Decompress with given decompressor when input file has given extension
+# The command given must act as a filter.
+#
+.gz		/bin/gunzip -c
+.bz2		/usr/bin/bzip2 -c -d
+.z		
+.Z		/bin/zcat
+.F		
+.Y		
diff --git a/src/cman/cman.csh b/src/cman/cman.csh
new file mode 100755
index 0000000..f41c51c
--- /dev/null
+++ b/src/cman/cman.csh
@@ -0,0 +1,2 @@
+alias cman 'man -C /etc/cman.conf '
+export LESSCHARSET=latin1
diff --git a/src/cman/cman.sh b/src/cman/cman.sh
new file mode 100755
index 0000000..d9fb70b
--- /dev/null
+++ b/src/cman/cman.sh
@@ -0,0 +1,2 @@
+alias cman='man -C /etc/cman.conf '
+#export LESSCHARSET=latin1
diff --git a/src/man.macros b/src/man.macros
new file mode 100644
index 0000000..1a0a08b
--- /dev/null
+++ b/src/man.macros
@@ -0,0 +1,236 @@
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: man.macros,v 1.1 2003/11/10 06:31:10 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 4c 8c 12c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
diff --git a/src/man1/..1 b/src/man1/..1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/..1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/:.1 b/src/man1/:.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/:.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/[.1 b/src/man1/[.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/[.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/a2p.1 b/src/man1/a2p.1
new file mode 100644
index 0000000..82a4edb
--- /dev/null
+++ b/src/man1/a2p.1
@@ -0,0 +1,337 @@
+.rn '' }`
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+'''     Set up \*(-- to give an unbreakable dash;
+'''     string Tr holds user defined translation string.
+'''     Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+'''   \*(L" and \*(R", except that they are used on ".xx" lines,
+'''   such as .IP and .SH, which do another additional levels of
+'''   double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\"	If the F register is turned on, we'll generate
+.\"	index entries out stderr for the following things:
+.\"		TH	Title 
+.\"		SH	Header
+.\"		Sh	Subsection 
+.\"		Ip	Item
+.\"		X<>	Xref  (embedded
+.\"	Of course, you have to process the output yourself
+.\"	in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH A2P 1 "perl 5.005, patch 03" "29/Jul/1998" "Perl Programmers Reference Guide"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ          \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+.	\" AM - accent mark definitions
+.bd B 3
+.	\" fudge factors for nroff and troff
+.if n \{\
+.	ds #H 0
+.	ds #V .8m
+.	ds #F .3m
+.	ds #[ \f1
+.	ds #] \fP
+.\}
+.if t \{\
+.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.	ds #V .6m
+.	ds #F 0
+.	ds #[ \&
+.	ds #] \&
+.\}
+.	\" simple accents for nroff and troff
+.if n \{\
+.	ds ' \&
+.	ds ` \&
+.	ds ^ \&
+.	ds , \&
+.	ds ~ ~
+.	ds ? ?
+.	ds ! !
+.	ds /
+.	ds q
+.\}
+.if t \{\
+.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+.	\" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+.	\" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.	\" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.	ds : e
+.	ds 8 ss
+.	ds v \h'-1'\o'\(aa\(ga'
+.	ds _ \h'-1'^
+.	ds . \h'-1'.
+.	ds 3 3
+.	ds o a
+.	ds d- d\h'-1'\(ga
+.	ds D- D\h'-1'\(hy
+.	ds th \o'bp'
+.	ds Th \o'LP'
+.	ds ae ae
+.	ds Ae AE
+.	ds oe oe
+.	ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH NAME
+a2p \- Awk 到 Perl 翻译器
+.SH "总览 (SYNOPSIS)"
+\fBa2p [options] filename\fR
+.SH "描述 (DESCRIPTION)"
+\fIA2p\fR 从命令行或标准输入取得一个awk脚本文件,
+并且向标准输出产生一个相同功能的 \fIperl\fR 脚本文件。
+.Sh "选项 (OPTIONS)"
+可选选项有:
+.Ip "\fB\-D<number>\fR" 5
+设置调试标记。
+.Ip "\fB\-F<character>\fR" 5
+告诉a2p,awk脚本总是带 \fB\-F\fR 选项执行。
+.Ip "\fB\-n<fieldlist>\fR" 5
+如果输入不分解为一个数组,你需要指定输入的各字段的名称。
+假如要翻译一个用于处理密码文件的awk脚本,你应当这样:
+.Sp
+.Vb 1
+\&        a2p -7 -nlogin.password.uid.gid.gcos.shell.home
+.Ve
+任何定界符都可以用来分隔字段名。
+.Ip "\fB\-<number>\fR" 5
+使得a2p总是假设输入包含那么多字段。
+.Ip "\fB\-o\fR" 5
+告诉a2p使用旧的awk行为。当前,唯一的区别是旧的awk总是有一个
+每行的循环,即使没有对每行的操作;新的awk不是这样。
+.Sh "\*(M"Considerations\*(S""
+a2p 不能翻译得像人一样好,但是通常都做得很好。
+在生成的perl脚本中,你应当检查和修改一些东西。这里是
+其中的一些,没有顺序。
+.PP
+awk 中有一个习惯,就是将一个字符串表达式放在 \fIint()\fR 函数中
+来使它强制解释为数字,即使参数已经是一个数字。
+这在perl 中是不必要的,但是a2p不知道参数是不是一个数字,所以它
+将它直译了。你也许想删掉它。
+.PP
+perl 中数字比较和字符比较是不一样的。对这两种情况,awk只有一个操作符,
+但是会在运行时判断是哪一种。在这一点上a2p不对awk进行彻底的模拟。
+它会猜测哪一种是你想要的。大多数时候它是对的,但是不能保证。
+这样的猜测都以 \*(L"\f(CW#???\fR\*(R" 注释来标记。你应当
+仔细检查它们,至少用perl的 \fB\-w\fR 选项来运行它们一次,这样
+perl会警告你在应当使用eq 的地方使用了==。
+.PP
+perl 不会像awk一样将不存在的数组元素创建为引用。如果你想用这种办法
+来在一个for...in 循环中创建空元素,在perl中将不可能实现。
+.PP
+如果a2p产生了一个分段的行,用来将一列变量赋值,看上去就
+像这样 (Fld1, Fld2, Fld3...) ,你应当重新用上面提到的 \fB\-n\fR 选项
+运行a2p。这样可以让你命名字段。
+如果它又将行分解为一个数组,那么这个脚本中其他地方可能引用了字段的数量。
+.PP
+awk中的exit语句不会退出。如果有 \s-1END\s0 段,它会转到那里。
+在 \s-1END\s0 段中执行跳过其他程序,转向退出的awk脚本段落在perl 
+中没有必要。你只要删掉 \s-1END\s0 块中的条件变量,直接退出就可以了。
+.PP
+perl 中有两种数组,数字下标的和关联数组。perl中的关联数组叫做
+散列 \*(L"hashes\*(R"。awk中的数组总是翻译为散列,但是如果你知道
+索引总是数字,你就可以将 {...} 转为 [...]。对散列的遍历用到了
+\fIkeys()\fR 函数,但是对数组的散列不会。你需要修改对这样的数组进行遍历
+的循环。
+.PP
+awk 默认 \s-1OFMT\s0 的值是 %.6g,perl默认作用相同的成分
+$# 的值是 %.20g。如果你想使用 \s-1OFMT\s0 的默认值,你需要
+显式地定义$#。
+.PP
+在循环顶部总是会出现分支操作,这是awk脚本中暗含的。很多时候
+你可以将对整个记录的判断移到循环下面,这样可以减少很多分支判断。
+.PP
+出于美学原因,你也许想将数组的起始值 $[ 从1转为perl默认的0
+但是要记住将所有数组的下标 \s-1AND\s0 和 \fIsubstr()\fR 还有 \fIindex()\fR
+函数都进行更改,保证正确。
+.PP
+a2p会聪明地在在未处理的脚本中添加注释
+\*(L"# Here is a workaround because awk is dumb\*(R"
+.PP
+awk脚本经常使用在shell脚本中,通过管道接受和输出文本。
+大部分时候这种shell脚本“wrapper” 可以和perl合并,
+因为perl可以建立输入输出管道,做其他awk不能做的事情。
+.PP
+对\s-1RSTART\s0 和 \s-1RLENGTH\s0 变量进行引用的脚本可以简单地
+修改为对变量$`, $& 和 $\*(R' 的引用,只要他们是在模式匹配的范围之内。
+.PP
+产生的perl脚本可能含有子程序来处理awk的getline和print函数。由于
+a2p通常将正确性放在首位而不是效率,一般可以将子程序重写得更有效率。
+.PP
+为了提高效率,你可以将子程序中的return去掉,只要返回值是子程序中的
+最后一个语句。a2p可以处理最简单的情况,但是不能分析嵌入程序块的情况。
+.PP
+\s-1ARGV\s0[0] 翻译为 \f(CW$ARGV0\fR,
+但是 \s-1ARGV\s0[n] 会翻译为 \f(CW$ARGV\fR[$n]。
+遍历 \s-1ARGV\s0[0] 的循环将找不到它。
+.SH "环境 (ENVIRONMENT)"
+a2p不使用环境变量
+.SH "作者 (AUTHORS)"
+Larry Wall <\fIlarry at wall.org\fR>
+.SH "文件 (FILE)"
+.SH "另见 (SEE ALSO)"
+.PP
+.Vb 3
+\& perl   perl 编译器和解释器
+\& 
+\& s2p    sed 到 perl的翻译工具
+.Ve
+.SH "诊断 (DIAGNOSTICS)"
+.SH "BUGS"
+可以在运行时根据操作数来选择字符还是数字操作,从而模拟awk。
+但是这样非常粗野并且无效率。另外,a2p通常都能猜对。
+.PP
+当前,awk语法树是静态存储的,空间可能会耗尽。
+.SH "[中文版维护人]"
+袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.BR 2003/10/25
+.SH "《中国Linux论坛man手册页翻译计划》" 
+http://cmpp.linuxforum.net
+
+.rn }` ''
+.IX Title "A2P 1"
+.IX Name "a2p - Awk to Perl translator"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Subsection "Options"
+
+.IX Item "\fB\-D<number>\fR"
+
+.IX Item "\fB\-F<character>\fR"
+
+.IX Item "\fB\-n<fieldlist>\fR"
+
+.IX Item "\fB\-<number>\fR"
+
+.IX Item "\fB\-o\fR"
+
+.IX Subsection "\*(M"Considerations\*(S""
+
+.IX Header "ENVIRONMENT"
+
+.IX Header "AUTHOR"
+
+.IX Header "FILES"
+
+.IX Header "SEE ALSO"
+
+.IX Header "DIAGNOSTICS"
+
+.IX Header "BUGS"
+
diff --git a/src/man1/ab.1 b/src/man1/ab.1
new file mode 100644
index 0000000..c40d0fc
--- /dev/null
+++ b/src/man1/ab.1
@@ -0,0 +1,151 @@
+.\" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+.\" DO NOT EDIT! Generated from XML source.
+.\" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "AB" 1 "2003-04-29" "Apache HTTP Server" "ab"
+
+.SH NAME
+ab \- Apache HTTP 服务器性能测试工具
+
+.SH "总览 SYNOPSIS"
+ 
+.PP
+\fBab\fR [ -\fBA\fR \fIauth-username\fR:\fIpassword\fR ] [ -\fBc\fR \fIconcurrency\fR ] [ -\fBC\fR \fIcookie-name\fR=\fIvalue\fR ] [ -\fBd\fR ] [ -\fBe\fR \fIcsv-file\fR ] [ -\fBg\fR \fIgnuplot-file\fR ] [ -\fBh\fR ] [ -\fBH\fR \fIcustom-header\fR ] [ -\fBi\fR ] [ -\fBk\fR ] [ -\fBn\fR \fIrequests\fR ] [ -\fBp\fR \fIPOST-file\fR ] [ -\fBP\fR \fIproxy-auth-username\fR:\fIpassword\fR ] [ -\fBq\fR ] [ -\fBs\fR ] [ -\fBS\fR ] [ -\fBt\fR \fItimelimit\fR ] [ -\fBT\fR \fIcontent-type\fR ] [ -\f [...]
+ 
+
+.SH "描述 SUMMARY"
+ 
+.PP
+.B ab
+是一个测试你Apache http服务器的工具,你可以通过这个工具
+指定一个单位时间内向apache发出的请求数量来看看你的Apache和机
+器配合的性能如何 
+
+.SH "选项 OPTIONS"
+ 
+.TP
+-A \fIauth-username\fR:\fIpassword\fR
+ 支持基本的验证证书,用户名和密码之间使用"冒号" :
+分隔开,ab将以明文方式传送过去.不管服务器是不是需要
+,也就是说你的服务器需要支持401认证. 
+.TP
+-c \fIconcurrency\fR
+ 同时向服务器端发送的请求数目,默认状态下是一次
+只执行一个http请求.
+.TP
+-C \fIcookie-name\fR=\fIvalue\fR
+Add a Cookie: line to the request\&. The argument is typically in the form of a \fIname\fR=\fIvalue\fR pair\&. This field is repeatable\&.  
+.TP
+-d
+Do not display the "percentage served within XX [ms] table"\&. (legacy support)\&.  
+.TP
+-e \fIcsv-file\fR
+Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milli seconds) it took to serve that percentage of the requests\&. This is usually more useful than the 'gnuplot' file; as the results are already 'binned'\&.  
+.TP
+-g \fIgnuplot-file\fR
+Write all measured values out as a 'gnuplot' or TSV (Tab separate values) file\&. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excell\&. The labels are on the first line of the file\&.  
+.TP
+-h
+显示使用说明 
+.TP
+-H \fIcustom-header\fR
+向请求包追加附加的标题字串.此参数应该是有效的标题
+行(header line)形式,通常使用冒号":"来分隔有效配对
+(valid pair)例如 'Accept-Encoding: zip/zop;8 bit';
+.TP
+-i
+使用一个 http 头(HEAD) 来替换 GET方法.不可以掺入POST 方法 
+.TP
+-k
+允许http KeepAlive ;也就是说执行多个请求在一个
+http 会话当中,默认是不允许的也就是no KeepAlive啦;) 
+.TP
+-n \fIrequests\fR
+执行一次测试会话的时候所发出的请求数目,默认是执行一个单一的请求
+当然了这样的测试结果也就没什么意义了
+.TP
+-p \fIPOST-file\fR
+测试程序也就是ab,将向Apache server发送带有HTTP POST
+的请求. 
+.TP
+-P \fIproxy-auth-username\fR:\fIpassword\fR
+当需要通过代理测试一台HTTP 服务器的时候而你的代理
+又需要用户名密码验证,这时你可以使用这个选项,同样
+用户名与密码之间使用冒号":"分隔开,ab将之以明文的方式
+发送出去,当然,前提是你的代理是处于407认证状态的
+.TP
+-q
+When processing more than 150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so\&. The -q flag will suppress these messages\&.  
+.TP
+-s
+When compiled in (ab -h will show you) use the SSL protected https rather than the http protocol\&. This feature is experimental and \fIvery\fR rudimentary\&. You probably do not want to use it\&.  
+.TP
+-S
+Do not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart\&. And default to the min/avg/max values\&. (legacy support)\&.  
+.TP
+-t \fItimelimit\fR
+ 设置测试的时间的长短,使用这个选项ab将自动设置
+测试请求会话数目为50000,然后以你设置的时间为
+固定周期.默认状态下是没有时限的,也就是直到完成
+你所设置的请求数目为止. 
+.TP
+-T \fIcontent-type\fR
+内容类型标头,使用在POST数据的时候. 
+.TP
+-v \fIverbosity\fR
+设置冗余级别,4级打印出每个请求标头的详细信息,
+3级打印出回应代码(例如,404,200),2级打印出警告
+信息和指示消息 
+.TP
+-V
+显示版本号并且退出 
+.TP
+-w
+打印输出结果到HTML表中. 默认的表是两列n行白底黑框
+.TP
+-x \fI<table>-attributes\fR
+使用字串来描述表的属性,该属性字串应该插入到<table \fI这里\fR >
+.TP
+-X \fIproxy\fR[:\fIport\fR]
+Use a proxy server for the requests\&.  
+.TP
+-y \fI<tr>-attributes\fR
+用于生成html表格每行的属性名 (<tr>)
+.TP
+-z \fI<td>-attributes\fR
+用于生成html表格每列的属性名 (<td>)
+ 
+.SH "BUGS"
+ 
+.PP
+There are various statically declared buffers of fixed length\&. Combined with the lazy parsing of the command line arguments, the response headers from the server and other external inputs, this might bite you\&.
+ 
+.PP
+It does not implement HTTP/1\&.x fully; only accepts some 'expected' forms of responses\&. The rather heavy use of strstr(3) shows up top in profile, which might indicate a performance problem; \fIi\&.e\&.\fR, you would measure the ab performance rather than the server's\&.
+
+.SH "参见 SEE ALSO"
+httpd(8) 
+
+.SH "[中文版维护人]"
+.B trcbilg <email>
+.SH "[中文版最新更新]"
+.BR 2003.11.22
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/ac.1 b/src/man1/ac.1
new file mode 100644
index 0000000..c4cb8e0
--- /dev/null
+++ b/src/man1/ac.1
@@ -0,0 +1,243 @@
+.TH AC 1 "1995 October 31"
+.SH NAME
+ac \ - 输出用户连接时间
+.SH 总览
+.hy 0
+.na
+.TP
+.B ac
+[
+.B \-d
+|
+.B \-\-daily-totals
+]
+[
+.B \-y
+|
+.B \-\-print-year
+]
+.br
+[
+.B \-p
+|
+.B \-\-individual-totals
+]
+[
+.I people
+]
+.br
+[
+.B \-f
+|
+.B \-\-file
+.I filename
+]
+[
+.B \-a
+|
+.B \-\-all-days
+]
+.br
+[ 
+.B \-\-complain 
+]
+[
+.B \-\-reboots 
+]
+[
+.B \-\-supplants
+]
+.br
+[
+.B \-\-timewarps 
+]
+[
+.B \-\-compatibility
+]
+.br
+[
+.B \-\-tw-leniency
+.I num
+]
+[
+.B \-\-tw-suspicious
+.I num
+]
+.br
+[
+.B \-z
+|
+.B \-\-print-zeros
+]
+[
+.B \-\-debug
+]
+.br
+[
+.B \-V
+|
+.B \-\-version 
+]
+[
+.B \-h
+|
+.B \-\-help 
+]
+.ad b
+.hy 1
+.SH   描述
+.LP 
+.nf
+.B ac
+ 基于当前的 /var/log/wtmp 文件中的登录和退出时间输出一个
+关于连接时间(以小时为单位)的报告。并且还输出一个总计时间。
+.LP
+记帐文件  /var/log/wtmp 由 init(8)  和  login(1)  维护。ac  和 
+login  均不生成 /var/log/wtmp 文件,如果记帐文件不存在,则不
+做记帐工作。如果要开始记帐,应生成一个长度为零的记帐文件。
+.LP
+注意:文件 /var/log/wtmp 可能很快就变得非常大。你可能隔一段
+时间就要裁减一下这个文件。
+.LP
+GNU ac 工作起来与 u*x ac 基本一样,但也在几个方面有小的改进。
+你可能希望看到 GNU ac 和其他系统上的 ac 在输出上的不同。想得
+到额外的信息,请使用命令 info accounting。
+.fi
+.SH 选项
+\..PD 0
+.TP
+.B \-d, \-\-daily-totals
+为每天输出输出一个总计时间,而不是在结尾输出一大的总计。输出
+可能象下面这样:
+   Jul 3 total 1.17
+   Jul 4 total 2.10
+   Jul 5 total 8.23
+   Jul 6 total 2.10
+   Jul 7 total 0.30
+.TP
+.B \-p, \-\-individual-totals
+为每个用户输出总计时间,并在最后追加一个所有用户的总计时间的
+累计值。输出可能象下面这样:
+   bob 8.06
+   goff 0.60
+   maley 7.37
+   root 0.12
+   total 16.15
+.TP
+.I   [用户列表]
+输出的是在用户列表中包括的所有用户的连接时间的总计和值。
+用户列表由空格分隔,其中不允许有通配符。
+.TP
+.BI "\-f, \-\-file " filename
+从指定文件而不是系统的 /var/log/wtmp 文件中读取记帐信息。
+.TP
+.B \-\-complain
+.nf
+当 /var/log/wtmp 存在着问题(时间扭曲,丢失记录,
+或其他任何问题),输出一个适当的错误信息。
+.fi
+.TP
+.B \-\-reboots
+.nf
+重新引导(reboot)记录不是在系统重新引导时写的,而是
+在系统重新启动(restart)时写的。所以不可能知道重新引导
+的精确的发生时间。用户在系统重新引导时可能已经在系统
+上登录了,许多 ac 依据用户(的要求)自动的统计在登录与重
+新引导记录之间的时间(尽管所有的这些时间不应是问题,但
+系统关机很长的时间时可能就是了)。如果你打算统计这个时
+间,就应包括此选项。
+ *要求对 vanilla ac 的兼容性,就要包含此选项*
+.fi
+.TP
+.B \-\-supplants
+.nf
+有时,注销记录没有写出明确的终端,因而
+最近的用户的自然增长的时间就不能被计算。如果你打算
+包括在一个终端上的从用户登录到下一次登录的时间(尽管
+可能是不正确的),就应包括此选项。
+ *要求对 vanilla ac 的兼容性,就要包含此选项*
+.fi
+.TP
+.B \-\-timewarps
+.nf
+一些时候,在 @WTMP_FILE_LOC 文件中的记录可能突然跳回
+到了以前的时间而却没有时钟更改记录出现。在这种情况
+发生时,不可能知道用户登录了多长时间。如果你打算依据
+用户(的要求)统计从登录到时间扭曲之间的时间,就应包括
+此选项。
+*要求对 vanilla ac 的兼容性,就要包含此选项*
+.fi
+.TP
+.B \-\-compatibility
+这是上面三种选项的速写,就不用敲三次键盘了。
+.TP
+.B \-a, \-\-all-days
+.nf
+如果我们在输出日总计时使用了此参数,则输出每天的记录,
+而不是忽略掉没有登录活动的间隔日。没有此选项时,在这
+些间隔日期间自然增长的时间被列在下一天即有登录活动的
+那一天的底下。
+.fi
+.TP
+.BI \-\-tw-leniency " num"
+.nf
+设置时间扭曲的宽限为 num 秒。在 /var/log/wtmp 文件中
+的记录可能轻微的乱了次序(最显著的是当两个登录发生在
+ 一前一后的时期,第二个可能先写了记录)。缺省的值被设置
+为60。如果程序注意到了这个问题,除非使用了--timewarps
+选项,否则不把时间赋给用户。
+.fi
+.TP
+
+.BI \-\-tw-suspicious " num"
+.nf
+设置时间扭曲的不信任值为 num 秒. 结果 /var/log/wtmp 文
+件中的两个记录超出了这个秒间隔数, 那么在 @WTMP_FILE_LOC
+文件中一定存在问题 (或者你的机器已经一年没有使用了). 
+如果程序注意到了这个问题,除非使用了--timewarps选项,
+否则不把时间赋给用户。
+.fi
+
+.TP
+.B \-y, \-\-print-year
+ 在显示日期的时候输出年份。
+.TP
+.B \-z, \-\-print-zeros
+.nf
+一个任何类别的总计(除了全部总计)是零,还是输出此总计。
+缺省时禁止输出是零的总计。
+.fi
+.TP
+.B \-\-debug
+输出冗余的内部(调试)信息。
+.TP
+.B \-V, \-\-version
+在标准输出上输出版本号并退出。
+.TP
+.B \-h, \-\-help
+在标准输出上输出使用方法并退出。
+
+.SH 相关文件
+.I  /var/log/wtmp
+系\^统\^范\^围的\^登\^录记录文件。进一步的细节参见 wtmp(5)。
+
+.SH 著作者
+.nf
+GNU 的\^记\^帐\^工\^具\^是\^由\^ Noel Cragg 写\^的\^。\^
+手\^册\^页\^是\^从\^ Susan Kleinmann 写\^的\^关\^于\^记\^帐\^的\^ texinfo 页\^转\^换\^
+而\^来\^的\^。\^
+.fi
+.SH  参见
+.BR login (1),
+.BR wtmp (5),
+.BR init (8),
+.BR sa (8)
+
+.SH [中文版维护人]
+.nf
+.B   mhss
+.SH [中文版最新更新]
+2000/10/31 
+.SH 《中国Linux论坛man手册页翻译计划》
+http://cmpp.linuxforum.net
+.fi
diff --git a/src/man1/access.1 b/src/man1/access.1
new file mode 100644
index 0000000..7bbbf36
--- /dev/null
+++ b/src/man1/access.1
@@ -0,0 +1,74 @@
+.TH ACCESS 1 "4 January 1998" "Kpathsea 3.3.1"
+.\"=====================================================================
+.if n .ds MP MetaPost
+.if t .ds MP MetaPost
+.if n .ds MF Metafont
+.if t .ds MF M\s-2ETAFONT\s0
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP\" for troff
+.el .ds OX TeX\" for nroff
+.\" the same but obliqued
+.\" BX definition must follow TX so BX can use TX
+.if t .ds BX \fRB\s-2IB\s0\fP\*(TX
+.if n .ds BX BibTeX
+.\" LX definition must follow TX so LX can use TX
+.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX
+.if n .ds LX LaTeX
+.\"=====================================================================
+.SH NAME(名称)
+access \- 确定文件是否可以存取访问
+
+.SH SYNOPSIS(总览)
+.B access
+.I -mode
+.I file
+
+.\"=====================================================================
+.SH DESCRIPTION (描述)
+如果
+.I file
+可以在特定模式下存取访问,那么成功退出.
+.I mode
+为
+.IR rwx
+中的一个或多个字符,
+这里的
+.I r
+表示可读,
+.I w
+表示可写,而
+.I x
+表示可执行.
+.PP
+.B access
+和
+.B test
+之间的区别在于
+后者查看权限位,而前者使用
+.BR access (2)
+系统调用进行检查.当文件系统以只读方式被挂载时,两者就有区别了.
+
+.\"=====================================================================
+.SH OPTIONS(选项)
+.B access
+接受以下附加的选项:
+.TP
+.B --help
+.rb
+打印帮助信息并退出.
+.TP
+.B --version
+.rb
+打印版本信息并退出.
+
+.\"=====================================================================
+.SH "SEE ALSO"(另见)
+.BR access (2)
+
+.SH "[中文版维护人]"
+.B riser <email>
+.SH "[中文版最新更新]"
+.BR 2003.11.22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ali.1 b/src/man1/ali.1
new file mode 100644
index 0000000..a15e698
--- /dev/null
+++ b/src/man1/ali.1
@@ -0,0 +1,74 @@
+.\"
+.\" THIS FILE HAS BEEN AUTOMATICALLY GENERATED.  DO NOT EDIT.
+.\"
+.\" 包含mh宏文件
+.\"
+.TH ALI 1 MH.6.8 [nmh-1.0.3]
+.SH NAME
+ali \- list mail aliases
+.SH 总览
+.in +.5i
+.ti -.5i
+ali
+\%[\-alias\ aliasfile]
+\%[\-list] \%[\-nolist]
+\%[\-normalize]
+.br
+\%[\-nonormalize]
+\%[\-user] \%[\-nouser]
+\%[aliases\ ...]
+.br
+\%[\-version]
+\%[\-help] 
+.in -.5i
+.SH 描述
+\fIAli\fR对每个给出的\fIaliases\fR查找已命名的邮件别名文件。
+为那些\fIaliases\fR建立一份地址列表,并把列表写到标准输出上。
+如未给出参数,fIali\fR会输出所有别名项目。
+
+缺省情况下,当一个别名对应到多个地址时,这些地址是用逗号分
+隔并尽可能少占行数。如果指定`\-list'选项的话,那么当一个地
+址对应到多个地址时,每个地址将单独占用一行。
+
+`\-user'开关说明让\fIali\fR反向执行处理:不列出每个给定别
+名所对应的地址,相反,\fIali\fR将列出每个给定地址所对应的
+别名来。如果给出`\-normalize'开关的话,\fIali\fR将追踪地
+址的正式主机名。
+
+程序会读取由配置项\*(lqAliasfile:\*(rq指定的文件以及任何由
+`\-alias aliasfile'开关给出的附加别名。每个\fIalias\fR都会按
+\fImh\-alias\fR\0(5)所描述的那样进行处理。
+
+.Fi
+^$HOME/\&.mh\(ruprofile~^用户配置
+^/etc/passwd~^用户列表
+^/etc/group~^组列表
+.Pr
+^Path:~^用来决定用户的nmh目录
+.Ps
+^Aliasfile:~^一个缺省别名文件
+.Sa
+mh\-alias(5)
+.De
+`\-alias /etc/nmh/MailAliases'
+.Ds
+`\-nolist'
+.Ds
+`\-nonormalize'
+.Ds
+`\-nouser'
+.Co
+None
+.Bu
+
+带有`\-nonormalize'的`\-user'选项并不是完全准确的,因为它
+无法用站点的正式名称来替换那些本地昵称。
+.En
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.BR 2001/03/26
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/alias.1 b/src/man1/alias.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/alias.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/apm.1 b/src/man1/apm.1
new file mode 100644
index 0000000..d4c6e42
--- /dev/null
+++ b/src/man1/apm.1
@@ -0,0 +1,117 @@
+.\" apm.1 -- 
+.\" Created: Wed Jan 10 14:54:03 1996 by r.faith at ieee.org
+.\" Revised: Sun Apr 21 16:37:43 1996 by r.faith at ieee.org
+.\" Copyright 1996 Rickard E. Faith (r.faith at ieee.org)
+.\" 
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\" 
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" 
+.TH APM 1 "10 Jan 1996" "" "Linux Programmer's Manual"
+.SH NAME
+apm \- 查询高级电源管理(APM) BIOS
+.SH 总览
+.B apm
+[ \-
+.I vVmsS
+]
+.SH 描述
+.B apm
+读取
+.B  /proc/apm
+并用人能看懂的格式输出。因为提供了首要的
+电池状态,这个命令在有兼容的
+.B  APM BIOS
+的笔记本电脑上非常有用。
+.B apm
+允许使机器进入等待或挂起模式。
+.SH  选项
+.TP
+.B -V, --version
+输出
+.B  apm
+程序的版本并立即退出。
+.TP
+.B  -v, --verbose
+输出关于
+.B  APM BIOS
+的版本和
+.B  Linux APM
+驱动程序的版本的信息。
+.TP
+.B -m, --minutes
+输出剩余的总共的分钟数而不是
+.I  hh:mm
+格式。
+.TP
+.B -s, --suspend
+如果可能使机器进入挂起模式。
+.TP
+.B -S, --standby
+如果可能使机器进入等待模式。
+.TP
+.B  -i, --ignore
+告诉系统在使用
+.B  AC (交流)
+电源时忽略系统生成的
+.B  APM
+挂起或等待事件。
+对这样的用户有用:拥有膝上型电脑,在用电池为电源
+时希望
+.B  APM 
+事件发生,在使用
+.B  AC (交流)
+电源时不希望
+.B APM
+事件发生。
+.TP
+.B -n, --noignore
+告诉系统在使用
+.B  AC
+电源时不忽略系统生成的
+.B  APM
+挂起或等待事件。
+这是缺省的模式;提供这个选项作为取消的前
+面的 "
+.I apm -i
+" 调用的方法。
+.SH  缺陷
+本程序要求内核在 
+.BI 1.3.57
+以上。除非在老的内核上增加
+.B  APM
+补丁否则不能运行。原因是
+.B  /proc/apm
+的格式被更改得非常迅速。
+.SH 相关文件
+.I /proc/apm
+.br
+.I  linux/drivers/char/apm_bios.c
+.SH  著作者
+本程序是由 Rik Faith (faith at cs.unc.edu)写的,在 GPL 条款下
+可以自由发布。对这个程序绝对没有任何担保。当前的维护者是
+Avery Pennarun (apenwarr at worldvisions.ca)。
+.SH  参见
+xapm(1), apmd(8)
+.SH [中文版维护人]
+mhss
+.SH [中文版最新更新]
+2000/10/31 
+.SH 《中国 Linux 论坛 man 手册页翻译计划》:
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/apropos.1 b/src/man1/apropos.1
new file mode 100644
index 0000000..3495c99
--- /dev/null
+++ b/src/man1/apropos.1
@@ -0,0 +1,36 @@
+.\"
+.\" Generated automatically from apropos.1.in by the
+.\" configure script.
+.\"
+.\" Man page for apropos
+.\"
+.\" Copyright (c) 1990, 1991, John W. Eaton.
+.\"
+.\" You may distribute under the terms of the GNU General Public
+.\" License as specified in the README file that comes with the man 1.0
+.\" distribution.  
+.\"
+.\" John W. Eaton
+.\" jwe at che.utexas.edu
+.\" Department of Chemical Engineering
+.\" The University of Texas at Austin
+.\" Austin, Texas  78712
+.\"
+.TH apropos 1 "Jan 15, 1991"
+.LO 1
+.SH NAME
+apropos \- 在 whatis 数据库中查找字符串
+.SH "总览 (SYNOPSIS)"
+.BI apropos
+keyword ...
+.SH "描述 (DESCRIPTION)"
+apropos 命令在一些特定的包含系统命令的简短描述的数据库文件里查找关键字, 然后把
+结果送到标准输出。 
+.SH "参见 (SEE ALSO)"
+whatis(1), man(1).
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ar.1 b/src/man1/ar.1
new file mode 100644
index 0000000..9a61196
--- /dev/null
+++ b/src/man1/ar.1
@@ -0,0 +1,863 @@
+.\" Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation
+.\" See section COPYING for conditions for redistribution
+.TH ar 1 "1999" "Free Software Foundation" "GNU 开发工具"
+.de BP
+.sp
+.ti \-.2i
+\(**
+..
+
+.SH NAME
+ar \- 建立, 修改档案或从档案中抽取成员.
+
+.SH 总览
+.hy 0
+.na
+.BR ar " [\|" "-" "\|]"\c
+.I {dmpqrtx}[abcfilNoPsSuvV] \c
+[\|\c
+.I membername\c
+\&\|] \c
+[\|\c
+.I count\c
+\&\|] \c
+.I archive\c
+\& \c
+.I files\c
+\&.\|.\|.
+
+.ad b
+.hy 1
+.SH 描述
+GNU 组织的\c
+.B ar\c
+\& 程序 用于建立, 修改档案 或从档案中 抽取成员.
+一个 \c
+.I 档案\c
+\& 是一个 包含了 很多 其它 文件的 单独的 文件,
+它采用的 结构 使得 可以 很容易 恢复 原来 独立的 文件
+(称为 档案的 \c
+.I 成员\c
+\& ).
+
+原始文件 (成员)的 内容, 权限, 时间属性, 属主和组都
+在档案中 得到 保留, 在抽取时 可以 得到 恢复.
+
+\c
+.B ar\c
+\& 程序 维护的 档案成员 可以 拥有 一定 长度的 名字; 具体情况,
+与你系统上的\c
+.B ar\c
+\& 是怎样 配置的 有关.
+为了 与其它 工具 维护的 档案格式 兼容,
+有可能 对成员 名字的 长度 有严格的 限制,
+如果 确实是 这样, 通常 要求 采用 15 个字符
+(典型的 格式是 a.out), 或者 16 个字符(典型的 格式是 coff).
+
+\c
+.B ar\c
+\& 是一个二进制格式的 工具, 因为 这一类 档案 多数 都作为
+保存 公共 例程的\c
+.I 库文件\c
+\& 使用.
+
+通过 指定 修饰符`\|\c
+.B s\c
+\|', \c
+.B ar\c
+\& 
+可以 建立 指向 档案中 可重定位 目标 模块
+定义的 符号表的 索引,
+一旦建立, 在\c
+.B ar\c
+\& 更新 其内容时 (通过`\|\c
+.B q\c
+\|' 执行 更新 操作) ,
+此索引 也会 得到 更新.
+有这种 索引的 档案 可以 加速到 库文件的 连接过程,
+并且 允许 库中的 例程 相互调用 而无须 考虑
+它们 在档案中的 位置.
+
+可以 使用`\|\c
+.B nm \-s\c
+\|' 或 `\|\c
+.B nm \-\-print\-armap\c
+\|' 列出 这种索引, 如果 档案 没有这类 索引,
+可以 使用 另外 一个 称为\c
+.B ranlib\c
+\& 的\c
+.B ar\c
+\& 程序 增加 这种 索引.
+
+\c
+.B ar\c
+\& 至少 需要 两个 参数 才能 运行:
+一个 指明 执行的\c
+.I 操作\c
+\& (可能 伴随有 其它的\c
+.I 修饰符\c
+\&), 作用的 档案 名字.
+多数 操作 可以 接受 更多的\c
+.I 文件\c
+\& 参数,  指明 操作的 详细 文件.
+
+.SH 选项
+\c
+.B ar\c
+\& 允许你 在第一个 命令行 参数中
+以任意 顺序 混合 指定 操作码\c
+.I p\c
+\& 和修饰符\c
+.I mod\c
+\& .
+
+只要你 愿意, 也可以 用破折号 作为 命令行 第一个 参数的 开始.
+
+\c
+.I p\c
+\& 关键字 指明 要执行的 操作, 只能 指明为 如下 之一:
+
+.TP
+.B d
+从档案中\c
+.I 删除\c
+\& 模块. 通过\c
+.I files\c
+\& 指明 要删除的 模块的 名称; 如果 没有 指出 要删除的
+文件 名称, 档案不会 改变 任何 内容.
+
+如果 给出了\c
+.B 'v\c
+\|' 修饰符,\c
+.B ar\c
+\& 会例出 它删除的 每一个 模块.
+
+.TP
+.B m
+用此 操作 在档案中\c
+.I 移动\c
+\& 成员.
+
+如果 某个 符号名 在档案的 多个 成员中 有定义,
+那么 程序 怎样 连接 档案 文件
+得到的 结果 可能是 不同的.
+
+如果 没有为\c
+.B m\c
+\& 指定 修饰符, 由\c
+.I files\c
+\& 指出的 成员 将移动到 档案的\c
+.I 末尾\c
+\& ;
+可以 通过 `\|\c
+.B a\c
+\|', `\|\c
+.B b\c
+\|' 或 `\|\c
+.B i\c
+\|' 等修饰符, 指定 成员 移动的 具体 位置.
+
+.TP
+.B p
+在标准 输出上
+\c
+.I 打印\c
+\& 档案中 指定的 成员.
+如果 给出了`\|\c
+.B v\c
+\|' 修饰符, 在 打印 成员 内容 之前,
+先打印 成员的 名字.
+
+如果没有 指明\c
+.I files\c
+\& 参数, 档案中 所有的 成员 都会被 打印 出来.
+
+.TP
+.B q
+\c
+.I 快速 追加\c
+\&; 增加 \c
+.I files\c
+\& 到 \c
+.I archive\c
+\& 的末尾, 不进行 替换 检查.
+
+修饰符 `\|\c
+.B a\c
+\|' `\|\c
+.B b\c
+\|' 和 `\|\c
+.B i\c
+\|'\c
+.I 不\c
+\& 影响此 操作, 新成员 始终 追加到 档案的 末尾处.
+
+修饰符 `\|\c
+.B v\c
+\|' 可以使 \c
+.B ar\c
+\& 列出 它追加的 所有文件.
+
+由于 本功能 是用于 快速操作, 即使 档案中
+有 符号表 索引 也不 进行 更新; 可以 使用 `\|\c
+.B ar s\c
+\|' 或
+\c
+.B ranlib\c
+\& 明确 要求 更新 这些索引.
+
+在为快速 追加 重建 索引时,由于 有 太多 不同的 系统,
+所以 GNU
+.B ar
+采用 `\|\c
+.B q\c
+\|' 作为 `\|\c
+.B r\c
+\|'的一个 同义字.
+
+.TP
+.B r
+把文件 \c
+.I files\c
+\& 插入 \c
+.I archive\c
+\& ( \c
+.I 替换 \c
+\&). 本操作与 `\|\c
+.B q\c
+\|' 是不同的, 如果 档案中 已有的 某个 成员与
+插入 文件的 名称 相同, 此成员 将被删除. 
+
+如果 不存在 名称为 \c
+.I files\c
+\& 的文件, \c
+.B ar\c
+\&
+显示 一个 错误 消息, 
+并且 保留 档案中 已有的 同名 成员.
+
+缺省情况下, 新成员 增加到 挡案的 末尾;
+可以 通过 使用 `\|\c
+.B a\c
+\|' `\|\c
+.B b\c
+\|' 或 `\|\c
+.B i\c
+\|' 等修饰符 指定 相对于 已有 成员的 位置.
+
+通过 使用 `\|\c
+.B v\c
+\|' 修饰符 会为每个 插入的 文件 产生 一行 输出,
+根据 输出中的 字符 `\|\c
+.B a\c
+\|' 或
+`\|\c
+.B r\c
+\|' 可以 表明 该文件 是追加的 (没有 删除 以前的成员)
+还是 替换的.
+
+.TP
+.B t
+显示 一个 \c
+.I archive\c
+\& 
+档案 所包含 内容的 \c
+.I 列表 \c
+\&, 或 档案中的 由 \c
+.I files\c
+\& 指出的 文件 列表.
+通常 只显示 成员的 名称, 如果 使用 `\|\c
+.B v\c
+\|' 修饰符, 可以 得到 成员的 权限,
+时间属性, 属主, 组和 大小.
+
+如果 没有 指出 \c
+.I files\c
+\&, 档案中的 所有 文件 都会 列出.
+
+如果 档案中
+(称为 `\|\c
+.B b.a\c
+\|') 有多个 同名 成员 (称为 `\|\c
+.B fie\c
+\|'), `\|\c
+.B ar t b.a fie\c
+\|' 仅仅 列出 第一个; 要看到 它们的 全部,
+必须 要求 完整的 列表
+\(em\&在本例中是 `\|\c
+.B ar t b.a\c
+\|'.
+
+.TP
+.B x
+从档案中
+\c
+.I 抽取 \c
+\& 成员 (名称为 \c
+.I files\c
+\&) .  如果 使用 `\|\c
+.B v\c
+\|' 修饰符, \c
+.B ar\c
+\& 会列出 它抽取的 每一个 文件的 名字.
+
+如果没有给出 \c
+.I files\c
+\&, 抽取 档案中 所有的 文件.
+
+.PP
+
+可以在 操作符 \c
+.I p\c
+\& 后紧随 一定数量的 修饰符 \c
+.I mod \c
+以指明 操作的 各种 行为.
+
+.TP
+.B a
+增加 文件到 档案中 已有 成员 \c
+.I 之后 \c
+\& , 如果 使用了 修饰符 \c
+.B a\c
+\&, 必须在 档案 名称 \c
+.I archive\c
+\& 之前 以 \c
+.I membername\c
+\& 参数的 形式 给出 档案中 已有 成员的 名字.
+
+.TP
+.B b
+增加 文件到 档案中 已有 成员 \c
+.I 之前 \c
+\& , 如果 使用了 修饰符 \c
+.B b\c
+\&, 必须在 档案 名称 \c
+.I archive\c
+\& 之前 以 \c
+.I membername\c
+\& 参数的 形式 给出 档案中 已有 成员的 名字.
+(和修饰符 `\|\c
+.B i\c
+\|' 相同).
+
+.TP
+.B c
+\c
+.I 建立 \c
+\& 档案.  指定的 档案 \c
+.I archive\c
+\& 始终 会被建立, 如果 你要求 执行的是 更新,
+通过 此修饰符 建立 档案时 会给出 一个 警告.
+
+.TP
+.B f
+截短 档案成员的 名字.
+.B ar
+通常 允许 任意 长度的 文件名, 但这会 导致 与某些 系统上的
+.B ar
+出现 兼容性 问题, 使用
+.B f
+修饰符 可以 在往档案中 追加 文件时 把名字 截短.
+
+.TP
+.B i
+插入 文件到 档案中 已有 成员 \c
+.I 之前 \c
+\& , 如果 使用了 修饰符 \c
+.B i\c
+\&, 必须在 档案 名称 \c
+.I archive\c
+\& 之前 以 \c
+.I membername\c
+\& 参数的 形式 给出 档案中 已有 成员的 名字.
+(与修饰符 `\|\c
+.B b\c
+\|' 相同).
+
+.TP
+.B l
+接受此修饰符, 但不起作用.
+
+.TP
+.B N
+使用
+.I count
+参数. 本修饰符 用于 在档案中 有多个
+同名 成员的 情况.
+删除 或抽取 档案中 给定 名字的第
+.I count
+个实例.
+
+.TP
+.B o
+抽取 成员时 保留 他们 \c
+.I 原始的 \c
+\& 时间属性. 如果 没有 此修饰符, 文件以抽取
+的时间 作为 它的时间 属性.
+
+.TP
+.B P
+匹配 档案中的 名字时 使用 完整的 路径名.
+.B ar
+不能 建立 使用 完整 路径名的 档案
+(这不符合 POSIX 标准), 但其它的 档案 工具 能够建立,
+本选项 会使
+.B ar
+在抽取 由其它 工具 建立的 档案 文件时,
+使用完整的 路径名 去匹配 档案中 成员的 名字.
+
+.TP
+.B s
+即使 没有对 档案 进行 改变, 用本 修饰符 也可以
+往档案中 写一个 目标 文件的 索引 或更新 已经 存在的 索引.
+可以与 其它 操作 一起 使用 本修饰符, 也可以 单独使用.
+对一个 档案 执行 `\|\c
+.B ar s\c
+\|' 与执行 `\|\c
+.B ranlib\c
+\|' 等价. 
+
+.TP
+.B S
+不生成 档案的 符号表. 这可以 加速 建立 大的档案
+文件的 过程,但这样 建立的 档案 不能被 连接器 使用,
+为建立 符号表, 在最后 执行 `\|\c
+.B ar\c
+\|' 时应该 不用 `\|\c
+.B S\c
+\|' 修饰符, 或者 对档案 执行 一次 `\|\c
+.B ranlib\c
+\|' .
+
+.TP
+.B u
+通常\c
+.B ar r\c
+\&.\|.\|. 把所有 列出的 文件 插入到 档案中,
+如果 希望 \c
+.I 仅仅 \c 
+插入比 档案中 已有 成员 更新的 文件时,
+就应该 使用 此修饰符.  `\|\c
+.B u\c
+\|' 修饰符 仅允许 与 `\|\c
+.B r\c
+\|' (替换) 操作 一起 使用.  某些 情况下,
+由于 用 `\|\c
+.B q\c
+\|' 操作 比较 文件的 时间属性 会失去
+速度上的 优势, 所以 不允许 执行
+`\|\c
+.B qu\c
+\|' 组合操作.
+
+.TP
+.B v
+使用 本修饰符  可以 进行 \c
+.I 冗余的\c
+\& 操作. 附加了此 修饰符时, 很多 操作 会显示
+更多的 消息, 如处理的 文件名等.
+
+.TP
+.B V
+显示
+.BR ar
+的版本号 .
+
+.PP
+
+.SH "参考"
+.B
+info\c
+\& 中的
+.RB "`\|" binutils "\|'"
+条目;
+.I
+The GNU Binary Utilities\c
+, Roland H. Pesch (1991年10月).
+.BR nm ( 1 )\c
+\&,
+.BR ranlib ( 1 )\c
+\&.
+
+.SH 版权
+Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
+.PP
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1.  That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise.  Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\"  .SH GNU Free Documentation License
+\"    Version 1.1, March 2000
+
+\"    Copyright (C) 2000  Free Software Foundation, Inc.
+\"    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+     
+\"    Everyone is permitted to copy and distribute verbatim
+\"    copies of this license document, but changing it is
+\"    not allowed.
+\"  .PP
+\"  0. PREAMBLE
+\"  .PP
+\"  The purpose of this License is to make a manual, textbook, or other
+\"  written document "free" in the sense of freedom: to assure everyone
+\"  the effective freedom to copy and redistribute it, with or without
+\"  modifying it, either commercially or noncommercially.  Secondarily,
+\"  this License preserves for the author and publisher a way to get
+\"  credit for their work, while not being considered responsible for
+\"  modifications made by others.
+\"  .PP
+\"  This License is a kind of "copyleft", which means that derivative
+\"  works of the document must themselves be free in the same sense.  It
+\"  complements the GNU General Public License, which is a copyleft
+\"  license designed for free software.
+\"  .PP
+\"  We have designed this License in order to use it for manuals for free
+\"  software, because free software needs free documentation: a free
+\"  program should come with manuals providing the same freedoms that the
+\"  software does.  But this License is not limited to software manuals;
+\"  it can be used for any textual work, regardless of subject matter or
+\"  whether it is published as a printed book.  We recommend this License
+\"  principally for works whose purpose is instruction or reference.
+\"  .PP
+\"  1. APPLICABILITY AND DEFINITIONS
+\"  .PP
+\"  This License applies to any manual or other work that contains a
+\"  notice placed by the copyright holder saying it can be distributed
+\"  under the terms of this License.  The "Document", below, refers to any
+\"  such manual or work.  Any member of the public is a licensee, and is
+\"  addressed as "you".
+\"  .PP
+\"  A "Modified Version" of the Document means any work containing the
+\"  Document or a portion of it, either copied verbatim, or with
+\"  modifications and/or translated into another language.
+\"  .PP
+\"  A "Secondary Section" is a named appendix or a front-matter section of
+\"  the Document that deals exclusively with the relationship of the
+\"  publishers or authors of the Document to the Document's overall subject
+\"  (or to related matters) and contains nothing that could fall directly
+\"  within that overall subject.  (For example, if the Document is in part a
+\"  textbook of mathematics, a Secondary Section may not explain any
+\"  mathematics.)  The relationship could be a matter of historical
+\"  connection with the subject or with related matters, or of legal,
+\"  commercial, philosophical, ethical or political position regarding
+\"  them.
+\"  .PP
+\"  The "Invariant Sections" are certain Secondary Sections whose titles
+\"  are designated, as being those of Invariant Sections, in the notice
+\"  that says that the Document is released under this License.
+\"  .PP
+\"  The "Cover Texts" are certain short passages of text that are listed,
+\"  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+\"  the Document is released under this License.
+\"  .PP
+\"  A "Transparent" copy of the Document means a machine-readable copy,
+\"  represented in a format whose specification is available to the
+\"  general public, whose contents can be viewed and edited directly and
+\"  straightforwardly with generic text editors or (for images composed of
+\"  pixels) generic paint programs or (for drawings) some widely available
+\"  drawing editor, and that is suitable for input to text formatters or
+\"  for automatic translation to a variety of formats suitable for input
+\"  to text formatters.  A copy made in an otherwise Transparent file
+\"  format whose markup has been designed to thwart or discourage
+\"  subsequent modification by readers is not Transparent.  A copy that is
+\"  not "Transparent" is called "Opaque".
+\"  .PP
+\"  Examples of suitable formats for Transparent copies include plain
+\"  ASCII without markup, Texinfo input format, LaTeX input format, SGML
+\"  or XML using a publicly available DTD, and standard-conforming simple
+\"  HTML designed for human modification.  Opaque formats include
+\"  PostScript, PDF, proprietary formats that can be read and edited only
+\"  by proprietary word processors, SGML or XML for which the DTD and/or
+\"  processing tools are not generally available, and the
+\"  machine-generated HTML produced by some word processors for output
+\"  purposes only.
+\"  .PP
+\"  The "Title Page" means, for a printed book, the title page itself,
+\"  plus such following pages as are needed to hold, legibly, the material
+\"  this License requires to appear in the title page.  For works in
+\"  formats which do not have any title page as such, "Title Page" means
+\"  the text near the most prominent appearance of the work's title,
+\"  preceding the beginning of the body of the text.
+\"  .PP
+\"  2. VERBATIM COPYING
+\"  .PP
+\"  You may copy and distribute the Document in any medium, either
+\"  commercially or noncommercially, provided that this License, the
+\"  copyright notices, and the license notice saying this License applies
+\"  to the Document are reproduced in all copies, and that you add no other
+\"  conditions whatsoever to those of this License.  You may not use
+\"  technical measures to obstruct or control the reading or further
+\"  copying of the copies you make or distribute.  However, you may accept
+\"  compensation in exchange for copies.  If you distribute a large enough
+\"  number of copies you must also follow the conditions in section 3.
+\"  .PP
+\"  You may also lend copies, under the same conditions stated above, and
+\"  you may publicly display copies.
+\"  .PP
+\"  3. COPYING IN QUANTITY
+\"  .PP
+\"  If you publish printed copies of the Document numbering more than 100,
+\"  and the Document's license notice requires Cover Texts, you must enclose
+\"  the copies in covers that carry, clearly and legibly, all these Cover
+\"  Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+\"  the back cover.  Both covers must also clearly and legibly identify
+\"  you as the publisher of these copies.  The front cover must present
+\"  the full title with all words of the title equally prominent and
+\"  visible.  You may add other material on the covers in addition.
+\"  Copying with changes limited to the covers, as long as they preserve
+\"  the title of the Document and satisfy these conditions, can be treated
+\"  as verbatim copying in other respects.
+\"  .PP
+\"  If the required texts for either cover are too voluminous to fit
+\"  legibly, you should put the first ones listed (as many as fit
+\"  reasonably) on the actual cover, and continue the rest onto adjacent
+\"  pages.
+\"  .PP
+\"  If you publish or distribute Opaque copies of the Document numbering
+\"  more than 100, you must either include a machine-readable Transparent
+\"  copy along with each Opaque copy, or state in or with each Opaque copy
+\"  a publicly-accessible computer-network location containing a complete
+\"  Transparent copy of the Document, free of added material, which the
+\"  general network-using public has access to download anonymously at no
+\"  charge using public-standard network protocols.  If you use the latter
+\"  option, you must take reasonably prudent steps, when you begin
+\"  distribution of Opaque copies in quantity, to ensure that this
+\"  Transparent copy will remain thus accessible at the stated location
+\"  until at least one year after the last time you distribute an Opaque
+\"  copy (directly or through your agents or retailers) of that edition to
+\"  the public.
+\"  .PP
+\"  It is requested, but not required, that you contact the authors of the
+\"  Document well before redistributing any large number of copies, to give
+\"  them a chance to provide you with an updated version of the Document.
+\"  .PP
+\"  4. MODIFICATIONS
+\"  .PP
+\"  You may copy and distribute a Modified Version of the Document under
+\"  the conditions of sections 2 and 3 above, provided that you release
+\"  the Modified Version under precisely this License, with the Modified
+\"  Version filling the role of the Document, thus licensing distribution
+\"  and modification of the Modified Version to whoever possesses a copy
+\"  of it.  In addition, you must do these things in the Modified Version:
+\"  .PP
+\"  A. Use in the Title Page (and on the covers, if any) a title distinct
+\"  from that of the Document, and from those of previous versions
+\"  (which should, if there were any, be listed in the History section
+\"  of the Document).  You may use the same title as a previous version
+\"  if the original publisher of that version gives permission.
+\"  .PP
+\"  B. List on the Title Page, as authors, one or more persons or entities
+\"  responsible for authorship of the modifications in the Modified
+\"  Version, together with at least five of the principal authors of the
+\"  Document (all of its principal authors, if it has less than five).
+\"  .PP
+\"  C. State on the Title page the name of the publisher of the
+\"  Modified Version, as the publisher.
+\"  .PP
+\"  D. Preserve all the copyright notices of the Document.
+\"  .PP
+\"  E. Add an appropriate copyright notice for your modifications
+\"  adjacent to the other copyright notices.
+\"  .PP
+\"  F. Include, immediately after the copyright notices, a license notice
+\"  giving the public permission to use the Modified Version under the
+\"  terms of this License, in the form shown in the Addendum below.
+\"  Preserve in that license notice the full lists of Invariant Sections
+\"  and required Cover Texts given in the Document's license notice.
+\"  .PP
+\"  H. Include an unaltered copy of this License.
+\"  .PP
+\"  I. Preserve the section entitled "History", and its title, and add to
+\"  it an item stating at least the title, year, new authors, and
+\"  publisher of the Modified Version as given on the Title Page.  If
+\"  there is no section entitled "History" in the Document, create one
+\"  stating the title, year, authors, and publisher of the Document as
+\"  given on its Title Page, then add an item describing the Modified
+\"  Version as stated in the previous sentence.
+\"  .PP
+\"  J. Preserve the network location, if any, given in the Document for
+\"  public access to a Transparent copy of the Document, and likewise
+\"  the network locations given in the Document for previous versions
+\"  it was based on.  These may be placed in the "History" section.
+\"  You may omit a network location for a work that was published at
+\"  least four years before the Document itself, or if the original
+\"  publisher of the version it refers to gives permission.
+\"  .PP
+\"  K. In any section entitled "Acknowledgements" or "Dedications",
+\"  preserve the section's title, and preserve in the section all the
+\"  substance and tone of each of the contributor acknowledgements
+\"  and/or dedications given therein.
+\"  .PP
+\"  L. Preserve all the Invariant Sections of the Document,
+\"  unaltered in their text and in their titles.  Section numbers
+\"  or the equivalent are not considered part of the section titles.
+\"  .PP
+\"  M. Delete any section entitled "Endorsements".  Such a section
+\"  may not be included in the Modified Version.
+\"  .PP
+\"  N. Do not retitle any existing section as "Endorsements"
+\"  or to conflict in title with any Invariant Section.
+\"  .PP
+\"  If the Modified Version includes new front-matter sections or
+\"  appendices that qualify as Secondary Sections and contain no material
+\"  copied from the Document, you may at your option designate some or all
+\"  of these sections as invariant.  To do this, add their titles to the
+\"  list of Invariant Sections in the Modified Version's license notice.
+\"  These titles must be distinct from any other section titles.
+\"  .PP
+\"  You may add a section entitled "Endorsements", provided it contains
+\"  nothing but endorsements of your Modified Version by various
+\"  parties--for example, statements of peer review or that the text has
+\"  been approved by an organization as the authoritative definition of a
+\"  standard.
+\"  .PP
+\"  You may add a passage of up to five words as a Front-Cover Text, and a
+\"  passage of up to 25 words as a Back-Cover Text, to the end of the list
+\"  of Cover Texts in the Modified Version.  Only one passage of
+\"  Front-Cover Text and one of Back-Cover Text may be added by (or
+\"  through arrangements made by) any one entity.  If the Document already
+\"  includes a cover text for the same cover, previously added by you or
+\"  by arrangement made by the same entity you are acting on behalf of,
+\"  you may not add another; but you may replace the old one, on explicit
+\"  permission from the previous publisher that added the old one.
+\"  .PP
+\"  The author(s) and publisher(s) of the Document do not by this License
+\"  give permission to use their names for publicity for or to assert or
+\"  imply endorsement of any Modified Version.
+\"  .PP
+
+\"  5. COMBINING DOCUMENTS
+\"  .PP
+\"  You may combine the Document with other documents released under this
+\"  License, under the terms defined in section 4 above for modified
+\"  versions, provided that you include in the combination all of the
+\"  Invariant Sections of all of the original documents, unmodified, and
+\"  list them all as Invariant Sections of your combined work in its
+\"  license notice.
+\"  .PP
+\"  The combined work need only contain one copy of this License, and
+\"  multiple identical Invariant Sections may be replaced with a single
+\"  copy.  If there are multiple Invariant Sections with the same name but
+\"  different contents, make the title of each such section unique by
+\"  adding at the end of it, in parentheses, the name of the original
+\"  author or publisher of that section if known, or else a unique number.
+\"  Make the same adjustment to the section titles in the list of
+\"  Invariant Sections in the license notice of the combined work.
+\"  .PP
+\"  In the combination, you must combine any sections entitled "History"
+\"  in the various original documents, forming one section entitled
+\"  "History"; likewise combine any sections entitled "Acknowledgements",
+\"  and any sections entitled "Dedications".  You must delete all sections
+\"  entitled "Endorsements."
+\"  .PP
+
+\"  6. COLLECTIONS OF DOCUMENTS
+\"  .PP
+\"  You may make a collection consisting of the Document and other documents
+\"  released under this License, and replace the individual copies of this
+\"  License in the various documents with a single copy that is included in
+\"  the collection, provided that you follow the rules of this License for
+\"  verbatim copying of each of the documents in all other respects.
+\"  .PP
+\"  You may extract a single document from such a collection, and distribute
+\"  it individually under this License, provided you insert a copy of this
+\"  License into the extracted document, and follow this License in all
+\"  other respects regarding verbatim copying of that document.
+\"  .PP
+
+\"  7. AGGREGATION WITH INDEPENDENT WORKS
+\"  .PP
+\"  A compilation of the Document or its derivatives with other separate
+\"  and independent documents or works, in or on a volume of a storage or
+\"  distribution medium, does not as a whole count as a Modified Version
+\"  of the Document, provided no compilation copyright is claimed for the
+\"  compilation.  Such a compilation is called an "aggregate", and this
+\"  License does not apply to the other self-contained works thus compiled
+\"  with the Document, on account of their being thus compiled, if they
+\"  are not themselves derivative works of the Document.
+\"  .PP
+\"  If the Cover Text requirement of section 3 is applicable to these
+\"  copies of the Document, then if the Document is less than one quarter
+\"  of the entire aggregate, the Document's Cover Texts may be placed on
+\"  covers that surround only the Document within the aggregate.
+\"  Otherwise they must appear on covers around the whole aggregate.
+\"  .PP
+
+\"  8. TRANSLATION
+\"  .PP
+\"  Translation is considered a kind of modification, so you may
+\"  distribute translations of the Document under the terms of section 4.
+\"  Replacing Invariant Sections with translations requires special
+\"  permission from their copyright holders, but you may include
+\"  translations of some or all Invariant Sections in addition to the
+\"  original versions of these Invariant Sections.  You may include a
+\"  translation of this License provided that you also include the
+\"  original English version of this License.  In case of a disagreement
+\"  between the translation and the original English version of this
+\"  License, the original English version will prevail.
+\"  .PP
+
+\"  9. TERMINATION
+\"  .PP
+\"  You may not copy, modify, sublicense, or distribute the Document except
+\"  as expressly provided for under this License.  Any other attempt to
+\"  copy, modify, sublicense or distribute the Document is void, and will
+\"  automatically terminate your rights under this License.  However,
+\"  parties who have received copies, or rights, from you under this
+\"  License will not have their licenses terminated so long as such
+\"  parties remain in full compliance.
+\"  .PP
+
+\"  10. FUTURE REVISIONS OF THIS LICENSE
+\"  .PP
+\"  The Free Software Foundation may publish new, revised versions
+\"  of the GNU Free Documentation License from time to time.  Such new
+\"  versions will be similar in spirit to the present version, but may
+\"  differ in detail to address new problems or concerns.  See
+\"  http://www.gnu.org/copyleft/.
+\"  .PP
+\"  Each version of the License is given a distinguishing version number.
+\"  If the Document specifies that a particular numbered version of this
+\"  License "or any later version" applies to it, you have the option of
+\"  following the terms and conditions either of that specified version or
+\"  of any later version that has been published (not as a draft) by the
+\"  Free Software Foundation.  If the Document does not specify a version
+\"  number of this License, you may choose any version ever published (not
+\"  as a draft) by the Free Software Foundation.
+\"  .PP
+
+\"  ADDENDUM: How to use this License for your documents
+\"  .PP
+\"  To use this License in a document you have written, include a copy of
+\"  the License in the document and put the following copyright and
+\"  license notices just after the title page:
+\"  .PP
+\"      Copyright (c)  YEAR  YOUR NAME.
+\"      Permission is granted to copy, distribute and/or
+\"      modify this document under the terms of the GNU
+\"      Free Documentation License, Version 1.1 or any later
+\"      version published by the Free Software Foundation;
+\"      with the Invariant Sections being LIST THEIR TITLES,
+\"      with the Front-Cover Texts being LIST, and with the
+\"      Back-Cover Texts being LIST.  A copy of the license
+\"      is included in the section entitled "GNU Free
+\"      Documentation License".
+\"  .PP
+\"  If you have no Invariant Sections, write "with no Invariant Sections"
+\"  instead of saying which ones are invariant.  If you have no
+\"  Front-Cover Texts, write "no Front-Cover Texts" instead of
+\"  "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\"  .PP
+\"  If your document contains nontrivial examples of program code, we
+\"  recommend releasing these examples in parallel under your choice of
+\"  free software license, such as the GNU General Public License,
+\"  to permit their use in free software.
+
+.SH 中文版维护人
+.B Yin Huaming <yhmact at pzh-public.sc.cninfo.net>
+.SH 中文版最新更新 
+.BR 2002/06/23
+.SH "中国 Linux 论坛 man 手册页翻译计划"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/arch.1 b/src/man1/arch.1
new file mode 100644
index 0000000..06edd4b
--- /dev/null
+++ b/src/man1/arch.1
@@ -0,0 +1,41 @@
+.\" Copyright 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" Public domain: may be freely distributed.
+.TH ARCH 1 "4 July 1997" "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+arch \- 显示机器的体系结构
+.SH "总览 (SYNOPSIS)"
+.B arch
+.SH "描述 (DESCRIPTION)"
+.B arch
+等同于
+.BR "uname -m" .
+
+目前的 Linux 系统上,
+.B arch
+显示 的 数据 有 "i386", "i486", "i586", "alpha", "sparc",
+"arm", "m68k", "mips", "ppc".
+.SH "另见 (SEE ALSO)"
+.BR uname (1),
+.BR uname (2)
+.\"
+.\" Details:
+.\" arch prints the machine part of the system_utsname struct
+.\" This struct is defined in version.c, and this field is
+.\" initialized with UTS_MACHINE, which is defined as $ARCH
+.\" in the main Makefile.
+.\" That gives the possibilities 
+.\" alpha    arm      i386     m68k     mips     ppc      sparc    sparc64
+.\"
+.\" If Makefile is not edited, ARCH is guessed by
+.\" ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/)
+.\" Then how come we get these i586 values?
+.\" Well, the routine check_bugs() does system_utsname.machine[1] = '0' + x86;
+.\" (called in init/main.c, defined in ./include/asm-i386/bugs.h)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/10
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/at.1 b/src/man1/at.1
new file mode 100644
index 0000000..178baec
--- /dev/null
+++ b/src/man1/at.1
@@ -0,0 +1,281 @@
+.TH AT 1 "Nov 1996" local "Linux Programmer's Manual"  
+.SH NAME
+at, batch, atq, atrm \- 排队、检查或删除以后要执行的作业。
+.SH 总览
+.B at
+.RB [-V]
+.RB [-q 
+.IR 队列]
+.RB [-f
+.IR 文件]
+.RB [-mldbv]
+.B 时间
+.B "at -c"
+.I 作业
+.RI [作业...]
+.B atq
+.RB [-V]
+.RB [-q
+.IR 队列]
+.RB [-v]
+.br
+.B atrm
+.RB [-V]
+.I 作业
+.RI [作业...]
+.br
+.B batch
+.RB [-V]
+.RB [-q
+.IR 队列]
+.RB [-f
+.IR 文件]
+.RB [-mv]
+.RB [时间]
+.SH 描述
+.B at
+和
+.B batch
+从标准输入或一个指定的文件读取命令,这些命令在以后
+某个时间用
+.BR /bin/sh
+执行。
+.TP 8
+.BR at
+在指定的时间执行命令。 
+.TP 8
+.BR atq
+列出用户的等待执行的作业;在用户是超级用户的情况下,列出所
+有人的作业。 
+.TP 8
+.BR atrm
+删除作业。
+.TP 8
+.BR batch
+在系统负载水平允许的时候执行命令;换句话说,当平均负
+载降到低于0.8,或降到了在 atrun 文件中指定的期望值时运行。
+译注:atrun 文件参见 atd 手册页。
+.PP
+.B At
+允许相当复杂的时间指定,它扩展了 POSIX.2 标准。它接受
+.B HH:MM
+的时间式样,用来指定在一天的某个时间运行一个作业。
+(如果时间已经过了则假定为第二天。)你可以指定
+.B midnight
+(午夜)、
+.B noon
+(中午) 或 
+.B teatime
+(下午4点),你可以用
+.B AM
+或
+.B PM
+后缀指定一天的上午或下午。你可以给出
+.B month-name day
+加上可选
+的年份的式样用来指定运行 at 的日期,或者给出
+.B MMDDYY
+、
+.B MM/DD/YY
+或
+.B DD.MM.YY
+式样用来指定运行 at 的日期。日期的指定
+必须跟在时间指定的后面。你也可以给出象
+.B now \+
+.I 计数 时间单位
+的式样,这里的时间单位可以是
+.B minutes
+、
+.B hours
+、
+.B days
+或
+.B weeks,
+你可以给时间加一个
+.B today
+后缀来指定
+.B at
+今天运行作业,可以
+给时间加一个
+.B tomorrow
+后缀来指定
+.B at
+明天运行作业。
+.PP
+例如,要在三天以后的下午 4 点运行一个作业,at 时间参数可以
+指定为
+.B 4pm \+ 3 days。
+要在7月31日上午10:00运行一个作业,
+at 时间参数可以指定为
+.B 10am Jul 31,
+要在明天上午1点运行一个
+作业,at 时间参数可以指定为
+.B 1am tomorrow。
+.PP
+时间指定的精确的定义可以在
+.IR /usr/doc/at-3.1.7/timespec
+找到。
+.PP
+对于
+.BR at
+和
+.BR batch
+两者,从标准输入或以
+.B -f
+选项指定的文件中
+读取命令并执行之。工作路径、环境变量(除了
+.BR TERM、
+.BR DISPLAY
+和
+.BR _ )、
+umask 从所期望的时间起保持不变。从一个从执行
+.B su(1)
+命令得到的 
+shell 中调用的
+.B "at "\-
+或
+.B "batch "\-
+命令将保持当前的 userid。
+用户的命令的标准错误输出和标准输出将用邮件发给用户。发送邮件
+使用命令
+.BR /usr/sbin/sendmail。
+从一个从执行
+.B su(1)命令得到的 
+shell 中执行了
+.B at
+,登录 shell 的所有者将接到邮件。 
+译注:userid 是用户标识的意思。umask 是与每个进程相关联的文件
+方式创建屏蔽字。
+.PP
+超级用户可以在任何情况下使用这些命令。对于其他用户,使用 at
+的权限由文件
+.I /etc/at.allow
+和
+.I /etc/at.deny
+确定。
+.PP
+如果文件
+.I /etc/at.allow
+存在,在其中提及的用户名被允许使用
+.BR at
+命令。
+.PP
+如果
+.I /etc/at.allow
+不存在,而
+.I /etc/at.deny
+存在,所有在
+.I /etc/at.deny
+中未提及的用户被允许使用
+.BR at
+命令。
+.PP
+如果两者均不存在,只用超级用户可以使用
+.BR at
+命令。
+.PP
+一个空的
+.I /etc/at.deny
+意味着所有用户均被允许使用这些命令,
+这是缺省的配置。
+
+.SH 选项
+.TP 8
+.B -V 
+在标准错误上输出版本号。
+.TP 8
+.B -q queue
+使用指定的队列。一个队列用一个字母标定,有效的的队列标定的
+范围是从a到z和从A到Z。at 的缺省队列是 a,batch 的缺省队列是
+b。队列的字母顺序越高,则队列运行时越谦让(运行级别越低)。
+指定的队列 "=" 保留给当前运行的作业所在的队列。
+.P
+如果一个作业被提交到一个以大写字母标定的队列,则与提交到
+batch 同样对待。如果给
+.BR atq
+指定一个队列,则只显示在此指定
+队列中的作业。
+.TP 8
+.B -m
+当作业完成时即使没有输出也给用户发邮件。
+.TP 8
+.B -f file 
+从文件而不是标准输入中读取作业信息。
+.TP 8
+.B -l
+是
+.B atq
+的别名。
+.TP 8
+.B -d
+是
+.B atrm
+的别名。
+.TP 8
+.B -v
+对于
+.B atq,
+显示完整的在队列中未被删除的作业,对于其他
+命令,显示作业将要执行的时间。
+.P
+显示的时间的格式类似于"1997-02-20 14:50",但如果设置了
+.B POSIXLY_CORRECT
+环境变量之后,格式类似于"Thu Feb 20 
+14:50:00 1996"。
+.TP 8
+.B -c
+连接命令行中列出的作业并输出到标准输出。
+
+.SH 相关文件
+.I /var/spool/at
+.br
+.I   /var/spool/at/spool
+.br
+.I   /proc/loadavg
+.br
+.I   /var/run/utmp
+.br
+.I   /etc/at.allow
+.br
+.I   /etc/at.deny
+.SH 参见
+cron(1), nice(1), sh(1), umask(2), atd(8)
+
+.SH 缺陷
+在 Linux 下正确的批处理操作依赖于挂装在/proc 上的一个
+.IR proc -
+类型的目录的存在。
+.PP
+如果文件
+.I /var/run/utmp
+不可获得或已经损坏,或者在
+.B at
+所期
+待的时间用户没有登录,向在环境变量
+.BR LOGNAME
+中找到的 userid
+发送邮件。如果
+.BR  LOGNAME 未定义或是空的,假定为当前的 userid。
+.PP
+当前实现的
+.B at
+和
+.B batch
+在用户竞争资源的时候是不适合的。
+如果你的站点是这种情况,你可以考虑其他的批处理系统,
+例如
+.BR nqs。
+.SH 著作者
+AT 大部分是由Thomas Koenig写的。ig25 at rz.uni-karlsruhe.de.
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.br
+主要参照了:
+.BR Linux 实用大全
+/ 陈向阳,方汉 编著. -北京:
+科学出版社,1998.8 
+.SH "[中文版最新更新]"
+.BR 2000/10/27 
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/autorun.1 b/src/man1/autorun.1
new file mode 100644
index 0000000..dd50054
--- /dev/null
+++ b/src/man1/autorun.1
@@ -0,0 +1,163 @@
+.if n .ds Q \&"
+.if t .ds Q ``
+.if n .ds U \&"
+.if t .ds U ''
+.TH "autorun" 1 
+.tr \&
+.nr bi 0
+.nr ll 0
+.nr el 0
+.de DS
+..
+.de DE
+..
+.de Pp
+.ie \\n(ll>0 \{\
+.ie \\n(bi=1 \{\
+.nr bi 0
+.if \\n(t\\n(ll=0 \{.IP \\(bu\}
+.if \\n(t\\n(ll=1 \{.IP \\n+(e\\n(el.\}
+.\}
+.el .sp 
+.\}
+.el \{\
+.ie \\nh=1 \{\
+.LP
+.nr h 0
+.\}
+.el .PP 
+.\}
+..
+.SH NAME
+
+.Pp
+autorun - 自动装载/卸载CDROMs并在装载后执行/path/to/cdrom/autorun
+.SH 总览
+
+.Pp
+\fBautorun\fP 
+[-lmqv?V] [-a EXEC] [-c CDPLAYER] [-e STRING] [-i MILLISEC] 
+[-n STRING] [-t STRING]
+[--autorun=EXEC] [--cdplayer=CDPLAYER] [--interval=MILLISEC] [--lock]
+[--mountonly] [--notify=STRING] [--notify-insert=STRING] [--notify-eject=STRING] 
+[--quiet] [--verbose] [--help] [--usage]
+[--version] [cdromdevices...]
+.SH 描述
+
+.Pp
+autorun自动识别系统上所有可获得的CDROMs,在插入CD时载装它
+们,并执行CD上可能包含的'autorun'可执行文件。要让普通用户
+使用这样的功能,你必须在/etc/fstab中想要使用的CDROMs条目
+上加入选项user,exec。
+
+.Pp
+你也可以在KDE中使用Autorun.kdelnk。只要把它放到你的
+Autostart文件夹中即可。
+
+.Pp
+程序分析命令字串并用装载点路径来替换%P%参数。用设备路径来
+替换%D%。然后就用/bin/sh -c "command string"来执行命令字
+串;
+
+.SH 选项
+
+.Pp
+.nr ll +1
+.nr t\n(ll 2
+.if \n(ll>1 .RS
+.IP "\fI-a, --autorun=EXEC\fP"
+.nr bi 1
+.Pp
+如果换CD盘的话执行EXEC。该可执行文件必须位于CD盘上。例如,
+如果你指定"--autorun=myprogram",而你的CD盘装载到了
+/mnt/cdrom下的话,在换盘后,autorun会尝试运行
+"/mnt/cdrom/myprogram"。
+(缺省为"/autorun")
+.IP "\fI-c, --cdplayer=CDPLAYER\fP"
+.nr bi 1
+.Pp
+如果插入的是唱片的话,运行CDPLAYER
+(缺省为"/usr/bin/kscd")
+.IP "\fI-i, --interval=MILLISEC\fP"
+.nr bi 1
+.Pp
+每次检查之间间隔MILLISEC
+(缺省为1000000)
+.IP "\fI-l, --lock\fP"
+.nr bi 1
+.Pp
+锁定装载好的介质(手工卸载)
+.IP "\fI-m, --mountonly\fP"
+.nr bi 1
+.Pp
+只进行装载/卸载(不执行任何内容)
+.IP "\fI-n, --notify=STRING\fP"
+.nr bi 1
+.Pp
+如果换盘则执行命令STRING
+(缺省为"/usr/bin/kfmclient refreshDesktop")
+.IP "\fI-t, --notify-insert=STRING\fP"
+.nr bi 1
+.Pp
+如果插入盘片则执行命令STRING,就不执行"/autorun"以及用
+--autorun指定了的内容
+(缺省为"/usr/bin/kfmclient openURL %P%")
+.IP "\fI-e, --notify-eject=STRING\fP"
+.nr bi 1
+.Pp
+Command STRING that will executed if a CD was ejected 
+如果取出盘片则执行命令STRING
+(缺省为"")
+.IP "\fI-q, --quiet\fP"
+.nr bi 1
+.Pp
+不产生任何输出
+.IP "\fI-v, --verbose\fP"
+.nr bi 1
+.Pp
+产生详细的输出
+.IP "\fI-?, --help,\fP"
+.nr bi 1
+.Pp
+列出此帮助信息
+.IP "\fI--usage\fP"
+.nr bi 1
+.Pp
+列出一份简要用法信息
+.IP "\fI-V, --version\fP"
+.nr bi 1
+.Pp
+列出程序版本
+.if \n(ll>1 .RE
+.nr ll -1
+.Pp
+长选项所有的强制或可选参数也适合任何相应的短选项。
+.SH 作者
+
+.Pp
+.DS
+.sp 
+.ft RR
+.nf
+主要作者:
+===============
+
+Harald Hoyer    E-Mail:
+                        Harald.Hoyer at redhat.de
+                        autorun at parzelle.de
+                HTTP:
+                        http://parzelle.de/
+ 
+.DE
+.fi 
+.ec
+.ft P
+.sp
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.BR 2001/03/26
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/basename.1 b/src/man1/basename.1
new file mode 100644
index 0000000..060feb3
--- /dev/null
+++ b/src/man1/basename.1
@@ -0,0 +1,48 @@
+.TH BASENAME "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+basename \- 从文件名中剥离目录和后缀
+.SH "总览 (SYNOPSIS)"
+.B basename
+\fINAME \fR[\fISUFFIX\fR]
+.br
+.B basename
+\fIOPTION\fR
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+显示 去掉 目录成分 后的 NAME. 如果 指定了 SUFFIX, 就 同时 去掉
+拖尾的 SUFFIX.
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B basename
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B basename
+程序, 使用 命令
+.IP
+.B info basename
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/10
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/bash.1 b/src/man1/bash.1
new file mode 100644
index 0000000..552600d
--- /dev/null
+++ b/src/man1/bash.1
@@ -0,0 +1,6961 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\"	Chet Ramey
+.\"	Information Network Services
+.\"	Case Western Reserve University
+.\"	chet at ins.CWRU.Edu
+.\"
+.\"	Last Change: Mon Jul 15 15:20:56 EDT 2002
+.\"
+.\" bash_builtins, strip all but Built-Ins section
+.if \n(zZ=1 .ig zZ
+.if \n(zY=1 .ig zY
+.TH BASH 1 "2002 July 15" "GNU Bash-2.05b"
+.\"
+.\" There's some problem with having a `@'
+.\" in a tagged paragraph with the BSD man macros.
+.\" It has to do with `@' appearing in the }1 macro.
+.\" This is a problem on 4.3 BSD and Ultrix, but Sun
+.\" appears to have fixed it.
+.\" If you're seeing the characters
+.\" `@u-3p' appearing before the lines reading
+.\" `possible-hostname-completions
+.\" and `complete-hostname' down in READLINE,
+.\" then uncomment this redefinition.
+.\"
+.de }1
+.ds ]X \&\\*(]B\\
+.nr )E 0
+.if !"\\$1"" .nr )I \\$1n
+.}f
+.ll \\n(LLu
+.in \\n()Ru+\\n(INu+\\n()Iu
+.ti \\n(INu
+.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X
+.br\}
+.el \\*(]X\h|\\n()Iu+\\n()Ru\c
+.}f
+..
+.\"
+.\" File Name macro.  This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+bash \- GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”)
+.SH "概述(SYNOPSIS)"
+.B bash
+[options]
+[file]
+.SH "版权所有(COPYRIGHT)"
+.if n Bash is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
+.SH "描述(DESCRIPTION)"
+.B Bash
+是一个与 \fIsh\fP 兼容的命令解释程序,可以执行从标准输入或者文件中读取的命令。
+.B Bash
+也整合了 \fIKorn\fP 和 \fIC\fP \fIShell\fP (\fBksh\fP 和 \fBcsh\fP) 中的优秀特性。
+.PP
+.B Bash
+的目标是成为遵循 IEEE POSIX Shell and Tools specification (IEEE Working Group 1003\.2,可移植操作系统规约: shell 和工具) 的实现。
+.SH "选项(OPTIONS)"
+除了在 \fBset\fR 内建命令的文档中讲述的单字符选项 (option) 之外,\fBbash\fR 在启动时还解释下列选项。
+.PP
+.PD 0
+.TP 10
+.BI \-c "\| string\^"
+如果有
+.B \-c
+选项,那么命令将从
+.IR string 
+中读取。如果
+.IR string 
+后面有参数 (argument),它们将用于给位置参数 (positional parameter,以
+.BR $0 
+起始) 赋值。
+.TP
+.B \-i
+如果有
+.B \-i
+选项,shell 将交互地执行 (
+.IR interactive 
+)。
+.TP
+.B \-l
+选项使得
+.B bash
+以类似登录 shell (login shell) 的方式启动 (参见下面的
+.SM
+.B "启动(INVOCATION)"
+章节)。
+.TP
+.B \-r
+如果有
+.B \-r
+选项,shell 成为受限的 (
+.I restricted
+) (参见下面的
+.SM
+.B "受限的shell(RESTRICTED SHELL)"
+章节)。
+.TP
+.B \-s
+如果有
+.B \-s
+选项,或者如果选项处理完以后,没有参数剩余,那么命令将从标准输入读取。
+这个选项允许在启动一个交互 shell 时可以设置位置参数。
+.TP
+.B \-D
+向标准输出打印一个以 \fB$\fP 为前导的,以双引号引用的字符串列表。
+这是在当前语言环境不是 \fBC\fP 或 \fBPOSIX\fP 时,脚本中需要翻译的字符串。
+这个选项隐含了 \fB\-n\fP 选项;不会执行命令。
+.TP
+.B [\-+]O [\fIshopt_option\fP]
+\fIshopt_option\fP 是一个
+\fBshopt\fP 内建命令可接受的选项 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+如果有 \fIshopt_option\fP,\fB\-O\fP 将设置那个选项的取值;
+\fB+O\fP 取消它。
+如果没有给出 \fIshopt_option\fP,\fBshopt\fP 将在标准输出上打印设为允许的选项的名称和值。
+如果启动选项是 \fB+O\fP,输出将以一种可以重用为输入的格式显示。
+.TP
+.B \-\-
+.B \-\-
+标志选项的结束,禁止其余的选项处理。任何
+.B \-\-
+之后的参数将作为文件名和参数对待。参数
+.B \-
+与此等价。
+.PD
+.PP
+.B Bash
+也解释一些多字节的选项。在命令行中,这些选项必须置于需要被识别的单字符参数之前。
+.PP
+.PD 0
+.TP
+.B \-\-dump\-po\-strings
+等价于 \fB\-D\fP,但是输出是 GNU \fIgettext\fP
+\fBpo\fP (可移植对象) 文件格式
+.TP
+.B \-\-dump\-strings
+等价于 \fB\-D\fP
+.TP
+.B \-\-help
+在标准输出显示用法信息并成功退出
+.TP
+\fB\-\-init\-file\fP \fIfile\fP
+.PD 0
+.TP
+\fB\-\-rcfile\fP \fIfile\fP
+.PD
+如果 shell 是交互的,执行
+.I file
+中的命令,而不是标准的个人初始化文件
+.I ~/.bashrc
+(参见下面的
+.SM
+.B "启动(INVOCATION)"
+章节)
+.TP
+.B \-\-login
+等价于 \fB\-l\fP
+.TP
+.B \-\-noediting
+如果 shell 是交互的,不使用 GNU
+.B readline
+库来读命令行
+.TP
+.B \-\-noprofile
+不读取系统范围的启动文件
+.FN /etc/profile
+或者任何个人初始化文件
+.IR ~/.bash_profile ,
+.IR ~/.bash_login ,
+或
+.IR ~/.profile
+。默认情况下,
+.B bash
+在作为登录 shell 启动时读取这些文件 (参见下面的
+.SM
+.B "启动(INVOCATION)"
+章节)
+.TP
+.B \-\-norc
+如果 shell 是交互的,不读取/执行个人初始化文件
+.I ~/.bashrc
+这个选项在 shell 以
+.BR sh 
+命令启动时是默认启用的
+.TP
+.B \-\-posix
+如果默认操作与 POSIX 1003.2 标准不同的话,改变 \fBbash\fP 的行为来符合标准 (\fIposix mode\fP)
+.TP
+.B \-\-restricted
+shell 成为受限的 (参见下面的
+.SM
+.B "受限的shell(RESTRICTED SHELL)"
+章节)
+.TP
+.B \-\-rpm-requires
+产生一个为使脚本运行,需要的文件的列表。
+这个选项包含了 \fB\-n\fP 选项。
+它是为了避免进行编译期错误检测时的限制--
+Backticks, [] tests,  还有 evals 不会被解释,一些依赖关系可能丢失
+.TP
+.B \-\-verbose
+等价于 \fB\-v\fP
+.TP
+.B \-\-version
+在标准输出显示此
+.B bash
+的版本信息并成功退出。
+.PD
+.SH 参数(ARGUMENTS)
+如果选项处理之后仍有参数剩余,并且没有指定
+.B \-c
+或
+.B \-s
+选项,第一个参数将假定为一个包含 shell 命令的文件的名字。
+如果
+.B bash
+是以这种方式启动的,
+.B $0
+将设置为这个文件的名字,位置参数将设置为剩余的其他参数。
+.B Bash
+从这个文件中读取并执行命令,然后退出。
+\fBBash\fP 的退出状态是脚本中执行的最后一个命令的退出状态。
+如果没有执行命令,退出状态是0。
+尝试的步骤是先试图打开在当前目录中的这个文件,接下来,
+如果没有找到,shell 将搜索脚本的
+.SM
+.B PATH
+环境变量中的路径。
+.SH "启动(INVOCATION)"
+\fIlogin shell\fP 登录 shell,参数零的第一个字符是
+.BR \-
+,或者启动时指定了
+.B \-\-login
+选项的 shell。
+.PP
+\fIinteractive\fP 交互的 shell,是一个启动时没有指定非选项的参数,并且没有指定
+.B \-c
+选项,标准输出和标准输入都连接到了终端 (在
+.IR isatty (3)
+中判定) 的shell,或者启动时指定了
+.B \-i
+选项的 shell。如果
+.B bash
+是交互的,
+.SM
+.B PS1
+环境变量将被设置,并且
+.B $\-
+包含
+.B i
+,允许一个 shell 脚本或者一个启动文件来检测这一状态。
+.PP
+下列段落描述了
+.B bash
+如何执行它的启动文件。如果这些启动文件中的任一个存在但是不可读取,
+.B bash
+将报告一个错误。文件名中的波浪号 (~,tilde) 将像
+.SM
+.B EXPANSION
+章节中
+.B "Tilde Expansion"
+段描述的那样展开。
+.PP
+当
+.B bash
+是作为交互的登录 shell 启动的,或者是一个非交互的 shell 但是指定了 \fB\-\-login\fP 选项,
+它首先读取并执行 \fI/etc/profile\fP 中的命令,只要那个文件存在。
+读取那个文件之后,它以如下的顺序查找 \fI~/.bash_profile\fP,
+\fI~/.bash_login\fP, 和 \fI~/.profile\fP, 从存在并且可读的第一个文件中读取并执行其中的命令。
+.B \-\-noprofile
+选项可以用来在 shell 启动时阻止它这样做。
+.PP
+当一个登录 shell 退出时,
+.B bash
+读取并执行文件 \fI~/.bash_logout\fP 中的命令,只要它存在。
+.PP
+当一个交互的 shell 但不是登录 shell 启动时,
+.B bash
+从文件 \fI~/.bashrc\fP 中读取并执行命令,只要它存在。可以用
+.B \-\-norc
+选项来阻止它这样做。
+\fB\-\-rcfile\fP \fIfile\fP 选项将强制
+.B bash
+读取并执行文件 \fIfile\fP 中的命令,而不是 \fI~/.bashrc\fP 中的。
+.PP
+当
+.B bash
+以非交互的方式启动时,例如在运行一个 shell 脚本时,它在环境中查找变量
+.SM
+.B BASH_ENV
+,如果它存在则将它的值展开,使用展开的值作为一个文件的名称,读取并执行。
+.B Bash
+运作的过程就如同执行了下列命令:
+.sp .5
+.RS
+.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP
+.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
+.RE
+.sp .5
+但是没有使用
+.SM
+.B PATH
+变量的值来搜索那个文件名。
+.PP
+如果
+.B bash
+以名称
+.BR sh
+启动,它试图模仿 (mimic)
+.B sh
+历史版本的启动过程,尽可能地相似,同时也遵循 POSIX 标准。
+.
+当作为交互式登录 shell 启动时,或者是非交互但使用了 \fB\-\-login\fP 选项
+启动的时候,它首先尝试读取并执行文件
+.I /etc/profile
+和
+.IR ~/.profile ,
+中的命令.
+选项
+.B \-\-noprofile
+用于避免这种行为.当使用命令
+.BR sh 
+来启动一个交互式的 shell 时,
+.B bash
+查找环境变量
+.SM
+.BR ENV ,
+如果有定义的话就扩展它的值,然后使用扩展后的值作为要读取和执行的文件
+的名称.由于使用
+.B sh
+启动的 shell 不会读取和执行任何其他的启动文件,选项
+.B \-\-rcfile
+没有意义.使用名称
+.B sh
+启动的非交互的 shell 不会读取任何其他启动文件.当以
+.BR sh 
+启动时,
+.B bash
+在读取启动文件之后进入
+.I posix
+模式.
+.PP
+当
+.B bash
+以
+.I posix
+模式启动时,(和使用
+.B \-\-posix
+命令行参数效果相同),它遵循 POSIX 标准.
+这种模式下,交互式 shell 扩展
+.SM
+.B ENV
+环境变量的值,读取并执行以扩展后值为文件名的配置文件.
+不会读取其他文件.
+.PP
+.B Bash
+试着检测它是不是由远程 shell 守护程序,通常为 \fIrshd\fP 启动的.如果
+.B bash
+发现它是由 \fIrshd\fP 启动的,它将读取并执行 \fI~/.bashrc\fP 文件中的命令,
+只要这个文件存在并且可读.如果以 \fBsh\fP 命令启动,它不会这样做.
+选项
+.B \-\-norc
+可以用来阻止这种行为,选项
+.B \-\-rcfile
+用来强制读取另一个文件,但是通常 \fIrshd\fP 不会允许它们,
+或者用它们来启动 shell.
+.PP
+如果 shell 是以与真实用户(组) id 不同的有效用户(组) id 来启动的,
+并且没有 \fB\-\fP 选项,那么它不会读取启动文件, 
+也不会从环境中继承 shell 函数. 环境变量中如果出现
+.SM
+.B SHELLOPTS,
+它将被忽略.有效用户 id 将设置为真实用户 id.
+如果启动时给出了 \fB\-\p\fP 选项,那么启动时的行为是类似的,
+但是不会重置有效用户 id.
+.SH "定义(DEFINITIONS)"
+.PP
+下列定义在文档余下部分中通用.
+.PD 0
+.TP
+.B blank 空白
+一个空格或是 tab .
+.TP
+.B word 词
+一个字符序列, shell 将它们视为一个结构单元. 也称为一个 
+.BR token 片段。
+.TP
+.B name 名称
+一个只由字母,数字和下划线构成的词,并且以字符或下划线起始. 也称为一个
+.I word 
+.BR identifier 标识符.
+.TP
+.B metacharacter 元字符
+一个字符, 如果不是引用的话, 将成为词的分隔符. 它是如下字符之一:
+.br
+.RS
+.PP
+.if t \fB|  &  ;  (  )  <  >  space  tab\fP
+.if n \fB|  & ; ( ) < > space tab\fP
+.RE
+.PP
+.TP
+.B control operator 控制操作符
+一个 \fItoken\fP(标识), 拥有控制功能. 它是如下符号之一:
+.RS
+.PP
+.if t \fB\(bv\(bv  &  &&  ;  ;;  (  )  |  <newline>\fP
+.if n \fB|| & && ; ;; ( ) | <newline>\fP
+.RE
+.PD
+.SH 保留字("RESERVED WORDS")
+\fIReserved words\fP(保留字) 是对 shell 有特殊意义的词.
+下列词被识别为保留的, 如果不是引用, 并且不是一个简单命令的起始词 (参见下面的
+.SM
+.B shell语法("SHELL GRAMMAR")
+), 也不是
+.B case 
+或者
+.B for
+命令的第三个词:
+.if t .RS
+.PP
+.B
+.if n ! case  do done elif else esac fi for function if in select then until while { } time [[ ]]
+.if t !    case    do    done    elif    else    esac    fi    for    function    if    in    select    then    until    while    {    }    time    [[    ]]
+.if t .RE
+.RE
+.SH shell语法("SHELL GRAMMAR")
+.SS Simple Commands 简单命令
+.PP
+\fIsimple command\fP(简单命令) 是(可选的)一系列变量赋值, 紧接着是
+\fBblank\fP(空格) 分隔的词和重定向, 然后以一个 \fIcontrol operator\fP 结束.
+第一个词指明了要执行的命令, 它被作为第 0 个参数. 其余词被作为这个命令的参数.
+.PP
+\fIsimple command\fP 简单命令的返回值是它的退出状态, 或是 128+\fIn\^\fP, 如果命令被 signal(信号) 
+.IR n
+结束的话.
+.SS Pipelines 管道
+.PP
+\fIpipeline\fP(管道) 是一个或多个命令的序列,用字符
+.BR | 
+分隔。管道的格式是这样:
+.RS
+.PP
+[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ \fB|\fP \fIcommand2\fP ... ]
+.RE
+.PP
+命令
+.I command
+的标准输出通过管道连接到命令
+.IR command2
+的标准输入。连接是在命令指定的任何重定向之前进行的(参见下面的
+.SM
+.B REDIRECTION 重定向)。
+.PP
+如果保留字
+.B !
+作为管道前缀,管道的退出状态将是最后一个命令的退出状态的逻辑非值。
+否则,管道的退出状态就是最后一个命令的。
+shell 在返回退出状态值之前,等待管道中的所有命令返回。
+.PP
+如果保留字
+.B time
+作为管道前缀,管道中止后将给出执行管道耗费的用户和系统时间。
+选项 \fB\-p\fP 将使输出符合 POSIX 指定的格式。
+环境变量
+.SM
+.B TIMEFORMAT
+可以设置为一个格式字符串,指定时间信息应当如何显示;参见下面的
+.B "Shell Variables" 环境变量
+中
+.SM
+.B TIMEFORMAT
+的讲述。
+.PP
+管道中的每个命令都作为单独的进程来执行(即,在一个子 shell 中启动)。
+.SS Lists 序列
+.PP
+\fIlist\fP(序列)是一个或多个管道,用操作符
+.BR ; ,
+.BR & ,
+.BR && ,
+或
+.BR \(bv\(bv 
+分隔的序列, 并且可以选择用
+.BR ; ,
+.BR & ,
+或
+.BR <newline> 新行符结束.
+.PP
+这些序列操作符中,
+.B &&
+和
+.B \(bv\(bv
+优先级相同,其次是
+.B ;
+和
+.BR &,
+它们的优先级是相同的。
+.PP
+序列中可以有一个或多个新行符来分隔命令,而不是使用分号分隔。
+.PP
+如果一个命令是由控制操作符
+.BR & 
+结束的, shell 将在后台的子 shell 中执行这个命令。
+shell 不会等待命令执行结束,返回状态总是 0。以分号
+.B ;
+分隔的命令会被顺序执行;shell 会等待每个命令依次结束。返回状态是最后执行的命令的返回状态。
+.PP
+控制操作符
+.B &&
+和
+.B \(bv\(bv
+分别代表 AND 和 OR 序列。一个 AND 序列的形式是
+.RS
+.PP
+\fIcommand1\fP \fB&&\fP \fIcommand2\fP
+.RE
+.PP
+.I command2
+只有在
+.I command1
+返回 0 时才被执行。
+.PP
+一个 OR 序列的形式是
+.RS
+.PP
+\fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP
+.PP
+.RE
+.PP
+.I command2
+只有在
+.I command1
+返回非 0 状态时才被执行。AND 和 OR 序列的返回状态是序列中最后执行的命令的返回状态。
+.SS Compound Commands 复合命令
+.PP
+\fIcompound command\fP(复合命令) 是如下情况之一:
+.TP
+(\fIlist\fP)
+\fIlist\fP 序列将在一个子 shell 中执行。变量赋值和影响 shell 环境变量的内建命令在命令结束后不会再起作用。
+返回值是序列的返回值。
+.TP
+{ \fIlist\fP; }
+\fIlist\fP 序列将在当前 shell 环境中执行。序列必须以一个新行符或分号结束。
+这种做法也称为 \fIgroup command\fP(命令组)。返回值是序列的返回值。注意与元字符 \fB(\fP 和 \fB\)\fP 不同,
+\fB{\fP 和 \fB}\fP 是 \fIreserved words\fP(保留字),必须出现在能够识别保留字的场合。
+由于它们不会产生断词(cause a word break),它们和序列之间必须用空格分开。
+.TP
+((\fIexpression\fP))
+表达式 \fIexpression\fP 将被求值。求值规则在下面的
+.SM
+.BR "算术求值 (ARITHMETIC EVALUATION)" 
+章节中描述。如果表达式的值非零,返回值就是 0;否则返回值是 1。这种做法和
+\fBlet "\fIexpression\fP"\fR
+等价。
+.TP
+\fB[[\fP \fIexpression\fP \fB]]\fP
+返回 0 或 1,取决于条件表达式 \fIexpression\fP 求值的情况。
+表达式是由下面
+.SM
+.BR "CONDITIONAL EXPRESSIONS 条件表达式"
+章节中描述的原语(primaries) 组成。
+\fB[[\fP 和 \fB]]\fP 中的词不会进行词的拆分和路径的扩展处理;
+而tilde 扩展,参数和变量扩展,算术扩展,命令替换,函数替换和引用的去除则都将进行。
+.if t .sp 0.5
+.if n .sp 1
+当使用 \fB==\fP 和 \fB!=\fP 操作符时,操作符右边的字符串被认为是一个模式,根据下面
+\fBPattern Matching\fP(模式匹配) 章节中的规则进行匹配。
+如果匹配则返回值是 0,否则返回 1。模式的任何部分可以被引用,强制使它作为一个字符串而被匹配。
+.if t .sp 0.5
+.if n .sp 1
+表达式可以用下列操作符结合起来。根据优先级的降序列出如下:
+.if t .sp 0.5
+.if n .sp 1
+.RS
+.PD 0
+.TP
+.B ( \fIexpression\fP )
+返回表达式 \fIexpression\fP 的值。括号可以用来提升操作符的优先级。
+.TP
+.B ! \fIexpression\fP
+返回真,如果表达式
+.I expression
+返回假。
+.TP
+\fIexpression1\fP \fB&&\fP \fIexpression2\fP
+返回真,如果表达式
+.I expression1
+和
+.I expression2
+都返回真。
+.TP
+.if t \fIexpression1\fP \fB\(bv\(bv\fP \fIexpression2\fP
+.if n \fIexpression1\fP \fB||\fP \fIexpression2\fP
+返回真,如果表达式
+.I expression1
+或者
+.I expression2
+二者之一返回真。
+.PD
+.LP
+\fB&&\fP(与) 和
+.if t \fB\(bv\(bv\fP
+.if n \fB||\fP
+操作符不会对表达式 \fIexpression2\fP 求值,如果 \fIexpression1\fP 可以决定整个条件表达式的返回值的话。
+.RE
+.TP
+\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+\fBin\fP 之后的一系列词会被扩展,产生一个项目列表。变量 \fIname\fP 被依次赋以这个列表中的每个元素,
+序列 \fIlist\fP 每次都被执行。如果 \fBin\fP \fIword\fP 被忽略,那么 \fBfor\fP 命令遍历
+已设置的位置参数(positional parameter,参见下面的
+.SM
+.B PARAMETERS 参数),
+为每一个执行一次序列 \fIlist\fP。
+返回值是最后一个命令的返回值。如果 \fBin\fP 之后的词扩展的结果是空列表,就不会执行任何命令,返回值是 0。
+.TP
+\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+首先,算术表达式 \fIexpr1\fP 被根据下面
+.SM
+.BR "算术求值 (ARITHMETIC EVALUATION)“
+中的规则进行求值。
+然后算术表达式 \fIexpr2\fP 被循环求值,直到它等于 0。每次 \fIexpr2\fP 结果非零时,序列 \fIlist\fP 都被执行,
+算术表达式 \fIexpr3\fP 被求值。如果任何表达式被忽略,将被视为执行结果是 1。
+返回值是序列 \fIlist\fP 中被执行的最后一个命令的返回值;或者是 false,如果任何表达式非法的话。
+.TP
+\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+\fBin\fP 之后的一系列词会被扩展,产生一个项目列表。这个扩展后的词集合被输出到标准错误上,每个前面
+加上一个数字。如果 \fBin\fP \fIword\fP 被忽略,将输出位置参数 (参见下面的
+.SM
+.B PARAMETERS 参数
+章节)。
+.B PS3
+提示符将被显示出来,等待从标准输入得到一行输入。如果
+输入是一个数字且显示中有对应的词,那么变量
+.I name
+的值将设置为这个词。如果输入一个空行,那么词和提示符将再次显示出来。如果读入了一个 EOF,命令就结束。
+任何其他值将设置变量
+.I name
+为空。读入的行保存为变量
+.BR REPLY .
+序列
+.I list
+在每次选择之后都会执行,直到执行了一个
+.B break
+命令。
+.B select
+的退出状态是序列
+.IR list 
+中执行的最后一个命令的退出状态,如果没有执行命令就是 0。
+.TP
+\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] ... ) \fIlist\fP ;; ] ... \fBesac\fP
+\fBcase\fP 命令首先扩展 \fIword\fP, 然后依次试着用每个 \fIpattern\fP 来匹配它,
+使用与路径扩展相同的匹配规则(参见下面的
+.B Pathname Expansion 路径扩展
+章节)。如果找到一个匹配,相应的序列将被执行。找到一个匹配之后,不会再尝试其后的匹配。
+如果没有模式可以匹配,返回值是 0。否则,返回序列中最后执行的命令的返回值。
+.TP
+\fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP \
+[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \
+[ \fBelse\fP \fIlist\fP; ] \fBfi\fP
+序列
+.B if 
+.I list
+被执行。如果退出状态是 0,\fBthen\fP \fIlist\fP 将被执行。否则,每个 \fBelif\fP
+将被一次执行,如果退出状态是 0,相应的 \fBthen\fP \fIlist\fP 将被执行,命令结束。
+否则,\fBelse\fP \fIlist\fP 将被执行,如果存在的话。
+退出状态是最后执行的命令的退出状态,或者是 0,如果所有条件都不满足。
+.TP
+\fBwhile\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD 0
+.TP
+\fBuntil\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD
+\fBwhile\fP 命令不断地执行序列 \fBdo\fP \fIlist\fP,直到序列中最后一个命令返回 0。
+\fBuntil\fP 命令和 \fBwhile\fP 命令等价,除了对条件的测试恰好相反;序列
+.B do
+.I list
+执行直到序列中最后一个命令返回非零状态值。
+\fBwhile\fP 和 \fBuntil\fP 命令的退出状态是序列 \fBdo\fP \fIlist\fP 中最后一个命令的退出状态,
+或者是 0,如果没有执行任何命令。
+.TP
+[ \fBfunction\fP ] \fIname\fP () { \fIlist\fP; }
+这样可以定义一个名为 \fIname\fP 的函数。函数体 \fIbody\fP 是包含在 { 和 } 之间的命令序列 \fIlist\fP。
+在指定将 \fIname\fP 作为一个命令运行的场合,这个序列将被执行。
+函数的退出状态是函数体最后执行的命令的退出状态(参见下面的
+.SM
+.B "FUNCTIONS 函数"
+章节)。
+.SH 注释(COMMENTS)
+在非交互的 shell 中或者使用内建命令
+.B shopt
+启用了
+.B interactive_comments
+选项的交互的 shell 中,以
+.B #
+起始的词使得这个词和所有同一行上所有剩余的字符都被忽略。没有启用
+.B interactive_comments
+选项的交互式 shell 不允许出现注释。这个选项在交互式 shell 中是默认启用的
+(参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.SH 引用(QUOTING)
+引用 \fIQuoting\fP 用来去掉特定字符或词的特殊意义。引用可以用来禁止对特殊字符的处理,
+阻止保留字被识别,还用来阻止参数的扩展。
+.PP
+上面在
+.SM
+.B DEFINITIONS 定义
+中列出的每个元字符 \fImetacharacters\fP 对于 shell 都有特殊意义。如果要表达它的本义,必须引用它。
+.PP
+在使用命令行历史扩展功能时,\fIhistory expansion\fP 字符,通常是 \fB!\fP,必须被引用,才不会进行历史扩展。
+.PP
+有三种引用机制:转义字符
+.IR "(escape character)" ,
+单引号和双引号。
+.PP
+一个未被引用的反斜杠 (\fB\e\fP) 是转义字符
+.IR "escape character" 。
+它保留其后下一个字符的字面意义,除非那是一个新行符。
+如果 \fB\e\fP 和新行符成对出现,并且反斜杠自身没有被引用,那么 \fB\e\fP<newline>
+被视为续行标志 (意思是,它被从输入流中删除并忽略了)。
+.PP
+将字符放在单引号之中,将保留引用中所有字符的字面意义。单引号不能包含在单引号引用之中,即使前面加上了反斜杠。
+.PP
+将字符放在双引号中,同样保留所有字符的字面意义,例外的情况是
+.BR $ ,
+.BR ` ,
+和
+.BR \e 。
+字符
+.B $
+和
+.B `
+在双引号中仍然具有特殊意义。反斜杠只有后面是下列字符时才有特殊意义:
+.BR $ ,
+.BR ` ,
+\^\fB"\fP\^,
+.BR \e ,
+或
+.BR <newline> .
+双引号可以包含在双引号引用中,但要在前面加上一个反斜杠。
+.PP
+特殊的参数
+.B *
+和
+.B @
+在双引号中有特殊意义(参见下面的
+.SM
+.B PARAMETERS 参数
+章节)。
+.PP
+形式为 \fB$\fP'\fIstring\fP' 的词会被特殊处理。它被扩展为 \fIstring\fP,其中的反斜杠转义字符
+被替换为 ANSI C 标准中规定的字符。反斜杠转义序列,如果存在的话,将做如下转换:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell) 响铃
+.TP
+.B \eb
+backspace 回退
+.TP
+.B \ee
+an escape character 字符 Esc
+.TP   
+.B \ef
+form feed 进纸
+.TP  
+.B \en
+new line 新行符
+.TP     
+.B \er
+carriage return 回车
+.TP
+.B \et
+horizontal tab 水平跳格
+.TP   
+.B \ev
+vertical tab 竖直跳格
+.TP
+.B \e\e
+backslash 反斜杠
+.TP
+.B \e'
+single quote 单引号
+.TP   
+.B \e\fInnn\fP
+一个八比特字符,它的值是八进制值 \fInnn\fP (一到三个数字)。
+.TP
+.B \ex\fIHH\fP
+一个八比特字符,它的值是十六进制值 \fIHH\fP (一到两个十六进制数字)。
+.TP
+.B \ec\fIx\fP
+一个 ctrl-\fIx\fP 字符
+.PD
+.RE
+.LP
+扩展结果是单引号引用的,就好像 $ 符号不存在一样。
+.PP
+双引号引用字符串前面加上一个 \fB$\fP 符号将使得这个字符串被根据当前语言环境 (locale) 来翻译。
+如果当前语言环境是 \fBC\fP 或者 \fBPOSIX\fP,这个符号将被忽略。
+如果这个字符串被翻译并替换了,那么替换结果是双引号引用的。
+.SH 参数(PARAMETERS)
+一个参数
+.I parameter
+是一个储存值的实体。它可以是一个名称
+.IR name ,
+一个数字或者是下面
+.BR "Special Parameters 特殊参数"
+章节中列出的特殊字符之一。从 shell 的角度来看,一个变量
+.I variable
+是一个由名称
+.IR name 
+代表的参数。一个变量有一个值 \fIvalue\fP 以及零个或多个属性 \fIattibutes\fP。属性可以使用内建命令
+.B declare
+来设置(参见下面
+.SM
+.BR "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节中对
+.B declare
+的描述)。
+.PP
+如果给一个参数赋值,那么它就被定义了。空字符串是有效的值。一旦一个变量被定义了,它只能用内建命令
+.B unset
+来取消(参见下面
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节).
+.PP
+一个变量
+.I variable
+可以用这样的语句形式来赋值:
+.RS
+.PP
+\fIname\fP=[\fIvalue\fP]
+.RE
+.PP
+如果没有给出值
+.I value,
+变量就被赋为空字符串。所有值
+.I values
+都经过了波浪线扩展,参数和变量扩展,命令替换,算术扩展和引用的删除(参见下面的
+.SM
+.B EXPANSION 扩展
+章节)。如果变量设置了
+.B integer 整数
+属性,那么值
+.I value
+将进行算术扩展,即使没有应用 $((...)) 扩展 (参见下面的
+.SM
+.B "Arithmetic Expansion 算术扩展"
+章节)。
+不会进行词的拆分,除非是下面
+.BR "Special Parameters 特殊参数"
+中提到的 \fB"$@"\fP。
+不会进行路径的扩展。赋值语句也出现在下列内建命令中,作为它们的参数:
+.BR declare ,
+.BR typeset ,
+.BR export ,
+.BR readonly ,
+和
+.B local
+。
+.SS Positional Parameters 位置参数
+.PP
+位置参数
+.I positional parameter
+是以一或多个数字代表的参数,除了 0。位置参数是在 shell 启动时,根据它的参数来赋值的,
+也可以用内建命令
+.B set
+来重新赋值。位置参数不能用赋值语句来赋值。在一个 shell 函数被执行的时候,位置参数会被暂时地替换掉
+(参见下面的
+.SM
+.B FUNCTIONS 函数
+章节)。
+.PP
+当位置参数由两个以上的数字构成时,它必须放在括号内 (参见下面的
+.SM
+.B EXPANSION 扩展
+章节)。
+.SS Special Parameters 特殊参数
+.PP
+shell 对一些参数做特殊处理。这些参数只能被引用而不能被赋值。
+.PD 0
+.TP
+.B *
+扩展为位置参数,从 1 开始。如果扩展发生在双引号中,它扩展为一个词,值是各个参数,以特殊变量
+.SM
+.B IFS
+的第一个字符分隔。也就是说,"\fB$*\fP" 等价于
+"\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP",这里
+.I c
+是变量
+.SM
+.B IFS
+的第一个字符。如果没有设置
+.SM
+.B IFS,
+那么参数将用空格分隔。
+.SM
+.B IFS
+.TP
+.B @
+扩展为位置参数,从 1 开始。如果扩展发生在双引号中,每个参数都将扩展为一个词。也就是说,
+"\fB$@\fP" 等价于
+"\fB$1\fP" "\fB$2\fP" ...
+如果位置参数不存在,"\fB$@\fP" 和
+.B $@
+扩展为空 (即,它们被删除了)。
+.TP
+.B #
+扩展为位置参数的个数,以十进制表示。
+.TP
+.B ?
+扩展为最近执行的前台管道的状态。
+.TP
+.B \-
+扩展为当前选项标志。标志是在启动时或以内建命令
+.B set
+指定的,或者是 shell 自身设置的 (例如选项
+.B \-i
+)。
+.TP
+.B $
+扩展为 shell 的进程 ID。在一个 () 子 shell 中,它扩展为当前 shell 的
+进程 ID 而不是子 shell 的。
+.TP
+.B !
+扩展为最近一次执行的后台 (异步) 命令的进程号。
+.TP
+.B 0
+扩展为 shell 或者 shell 脚本的名称。这个变量是在 shell 初始化时设置的。如果
+.B bash
+是执行脚本文件时启动的,
+.B $0
+将设置为那个文件的名称。如果
+.B bash
+启动时的参数包含
+.B \-c,
+那么
+.B $0
+被设置为启动命令行被执行后的第一个参数,如果有的话。否则,它被设置为用来启动
+.BR bash 
+的文件名,就是参数 0。
+.TP
+.B _
+shell 启动时,设置为 shell 或参数中被执行的 shell 脚本的绝对路径名。
+然后,在扩展时扩展为上一个命令的最后一个参数。它也被设置为被执行的每个命令的文件全名并且
+被设置到这个命令执行的环境当中。当检查邮件时,这个参数保存着正在检查的邮件文件的名称。
+.PD
+.SS Shell Variables 变量
+.PP
+shell 定义了下列变量:
+.PP
+.PD 0
+.TP
+.B BASH
+扩展为用来启动当前
+.BR bash 
+实例的文件全名。
+.TP
+.B BASH_VERSINFO
+一个只读数组变量,成员保存着当前 
+.BR bash 
+实例的版本信息。赋予数组元素的值是如下这些:
+.sp .5
+.RS
+.PD 0
+.TP 24
+.B BASH_VERSINFO[\fR0\fP]
+主版本号 (\fIrelease\fP).
+.TP
+.B BASH_VERSINFO[\fR1\fP]
+次版本号 (\fIversion\fP).
+.TP
+.B BASH_VERSINFO[\fR2\fP]
+补丁版本
+.TP
+.B BASH_VERSINFO[\fR3\fP]
+编译信息
+.TP
+.B BASH_VERSINFO[\fR4\fP]
+发布时的状态 (例如, \fIbeta1\fP).
+.TP
+.B BASH_VERSINFO[\fR5\fP]
+\fBMACHTYPE\fP 平台类型
+.PD
+.RE
+.TP
+.B BASH_VERSION
+扩展为一个字符串,描述了这个
+.BR bash .
+实例的版本。
+.TP
+.B COMP_CWORD
+\fB${COMP_WORDS}\fP 的索引,指向当前光标位置所在的词。
+这个变量只有在被可编程补全功能 (参见下面的 \fBProgrammable Completion\fP 章节) 调用的 shell 函数中才可用。
+.TP
+.B COMP_LINE
+当前命令行。这个变量只有在被命令补全功能调用的 shell 函数和外部命令中才可用。
+.TP
+.B COMP_POINT
+相对于当前命令起始处的当前光标位置。如果当前光标位置是当前命令的末端,
+它的值就和 \fB${#COMP_LINE}\fP 相等。
+这个变量只有在被命令补全功能调用的 shell 函数和外部命令中才可用。
+.TP
+.B COMP_WORDS
+一个数组变量 (参见下面的 \fBArrays\fP(数组)一节),由当前命令行的各个单词构成。
+这个变量只有在被命令补全功能调用的 shell 函数中才可用。
+.TP
+.B DIRSTACK
+一个数组变量,包含当前目录栈的内容。栈中的目录排列的顺序就是用内建命令
+.B dirs
+显示时的顺序。对这个数组变量的成员赋值可以用来修改栈中已有的目录,但是要添加和删除目录就必须使用
+内建命令
+.B pushd
+和
+.B popd。
+对它赋值不会改变当前目录。如果取消了
+.SM
+.B DIRSTACK
+的定义,它就失去了它的特殊意义,即使后来重新定义它。
+.TP
+.B EUID
+扩展为当前用户的有效用户 ID。它在 shell 启动时设置。它是只读的。
+.TP
+.B FUNCNAME
+当前执行的 shell 函数名。这个变量只有在执行一个 shell 函数时存在。向
+.SM
+.B FUNCNAME
+赋值没有效果并且返回一个错误。如果取消了
+.SM
+.B FUNCNAME
+的定义,它就失去了特殊的意义,即使后来重新定义它。
+.TP
+.B GROUPS
+一个数组变量,包含当前用户所属的组的列表。向
+.SM
+.B GROUPS
+赋值没有效果并且返回一个错误。如果取消了
+.SM
+.B GROUPS
+的定义,它就失去了特殊的意义,即使后来重新定义它。
+.TP
+.B HISTCMD
+当前命令的历史编号,或者历史列表中的索引。如果取消了
+.SM
+.B HISTCMD
+的定义,它就失去了特殊的意义,即使后来重新定义它。
+.TP
+.B HOSTNAME
+自动设置为当前的主机名。
+.TP
+.B HOSTTYPE
+自动设置为一个字符串,唯一地标识着正在运行
+.B bash
+的机器类型。默认值是系统相关的。
+.TP
+.B LINENO
+每次引用这个参数时,shell 将它替换为一个指示在脚本或函数中当前行号的十进制数字(从 1 开始)。
+如果不是在脚本或函数中,替换得到的值不一定有意义。如果取消了
+.SM
+.B LINENO
+的定义,它就失去了特殊的意义,即使后来重新定义它。
+.TP
+.B MACHTYPE
+自动设置为一个字符串,完整的描述了正在运行
+.B bash
+的系统类型,格式是标准的 GNU \fIcpu-company-system\fP 格式。默认值是系统相关的。
+.TP
+.B OLDPWD
+上一次命令
+.B cd
+设置的工作目录。
+.TP
+.B OPTARG
+内建命令
+.B getopts
+处理的最后一个选项参数值 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.TP
+.B OPTIND
+内建命令
+.B getopts
+将处理的下一个参数的索引 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.TP
+.B OSTYPE
+自动设置的一个字符串,描述了正在运行
+.B bash
+的操作系统。默认值是系统相关的。
+.TP
+.B PIPESTATUS
+一个数组变量 (参见下面的
+.B Arrays 数组
+章节),包含最近执行的前台管道中的进程(可能只包含一个命令)的退出状态。
+.TP
+.B PPID
+shell 的父进程的进程号。这个变量是只读的。
+.TP
+.B PWD
+由
+.B cd
+命令设置的当前工作目录。
+.TP
+.B RANDOM
+每次引用这个参数时,都会产生一个 0 到 32767 之间的随机整数。可以通过向
+.SM
+.BR RANDOM 
+赋值来初始化随机数序列。如果取消了
+.SM
+.B RANDOM
+的定义,它就失去了特殊的意义,即使后来重新定义它。
+.TP
+.B REPLY
+变量的值将作为内建命令
+.B read
+的输入,如果命令没有参数的话。
+.TP
+.B SECONDS
+每次引用这个参数时,返回 shell 自运行以来的秒数。如果向
+.SM
+.BR SECONDS 
+赋值,此后对它的引用将返回自赋值时起的秒数加上所赋予的值。如果取消
+.SM
+.B SECONDS
+的定义,它就失去了特殊的意义,即使后来重新定义它。
+.TP
+.B SHELLOPTS
+一个冒号分隔的被允许的 shell 选项列表。列表中每个词都是内置命令
+.B set
+的
+.B \-o
+选项的有效参数。
+.SM
+.B SHELLOPTS
+中出现的选项也是 \fBset \-o\fP 显示为
+.I on
+的选项。如果
+.B bash
+启动时从环境中找到这个变量,那么在读取任何配置文件之前,列表中的每个选项都将被设置。这个变量是只读的。
+.TP
+.B SHLVL
+每次启动一个
+.B bash
+的实例时都会增加。
+.TP
+.B UID
+扩展为当前用户的 ID,在启动时初始化。这个变量是只读的。
+.PD
+.PP
+下列变量被 shell 使用。有时
+.B bash
+会为变量赋默认值;这些情况在下面会标出。
+.PP
+.PD 0
+.TP
+.B BASH_ENV
+如果 \fBbash\fP 在执行一个 shell 脚本时设定了这个变量,它的值将被解释为一个文件名,
+包含着初始化 shell 用到的命令,就像
+.IR ~/.bashrc 
+中一样。
+.SM
+.B BASH_ENV
+的值在被解释为一个文件名之前要经过参数扩展,命令替换和算术扩展。不会使用
+.SM
+.B PATH
+来查找结果文件名。
+.TP
+.B CDPATH
+命令
+.B cd
+的搜索路径。这是一个冒号分隔的目录列表,shell 从中查找
+.B cd
+命令的目标目录。可以是这样:
+.if t \f(CW".:~:/usr"\fP.
+.if n ".:~:/usr".
+.TP
+.B COLUMNS
+用在内建命令 \fBselect\fP 当中,用来判断输出选择列表时的终端宽度。
+自动根据 SIGWINCH 信号来设置。
+.TP
+.B COMPREPLY
+一个数组变量,\fBbash\fP 从中读取可能的命令补全。
+它是由命令补全功能调用的 shell 函数产生的。
+.TP
+.B FCEDIT
+内建命令
+.B fc
+默认的编辑器。
+.TP
+.B FIGNORE
+一个冒号分隔的后缀名列表,在进行文件名补全时被忽略 (参见下面的
+.SM
+.B READLINE
+章节)。一个后缀满足其中之一的文件名被排除在匹配的文件名之外。可以是这样:
+.if t \f(CW".o:~"\fP.
+.if n ".o:~".
+.TP
+.B GLOBIGNORE
+一个冒号分隔的模式列表,定义了路径名扩展时要忽略的文件名集合。
+如果一个文件名与路径扩展模式匹配,同时匹配
+.SM
+.BR GLOBIGNORE 
+中的一个模式时,它被从匹配列表中删除。
+.TP
+.B HISTCONTROL
+如果设置为
+.IR ignorespace ,
+以
+.B space
+开头的行将不会插入到历史列表中。如果设置为
+.IR ignoredups ,
+匹配上一次历史记录的行将不会插入。设置为
+.I ignoreboth
+会结合这两种选项。如果没有定义,或者设置为其他值,所有解释器读取的行都将存入历史列表,
+但还要经过
+.BR HISTIGNORE
+处理。这个变量的作用可以被
+.BR HISTIGNORE 
+替代。多行的组合命令的第二和其余行都不会被检测,不管
+.BR HISTCONTROL 
+是什么,都会加入到历史中。
+.TP
+.B HISTFILE
+保存命令历史的文件名 (参见下面的
+.SM
+.B HISTORY 历史
+章节)。默认值是 \fI~/.bash_history\fP。如果取消定义,在交互式 shell 退出时
+命令历史将不会保存。
+.TP
+.B HISTFILESIZE
+历史文件中包含的最大行数。当为这个变量赋值时,如果需要的话,历史文件将被截断
+来容纳不超过这个值的行。默认值是 500。历史文件在交互式 shell 退出时
+也会被截断到这个值。
+.TP
+.B HISTIGNORE
+一个冒号分隔的模式列表,用来判断那个命令行应当保存在历史列表中。每个模式
+都定位于行首,必须匹配整行 (没有假定添加 `\fB*\fP')。在
+.B HISTCONTROL
+指定的测试结束后,这里的每个模式都要被测试。除了平常的 shell 模式匹配字符,
+`\fB&\fP' 匹配上一个历史行。`\fB&\fP' 可以使用反斜杠来转义;反斜杠在
+尝试匹配之前将被删除。多行的组合命令的第二行以及后续行都不会被测试,不管
+.BR HISTIGNORE
+是什么,都将加入到历史中。
+.TP
+.B HISTSIZE
+命令历史中保存的历史数量 (参见下面的
+.SM
+.B HISTORY 历史
+章节)。默认值是 500。
+.TP
+.B HOME
+当前用户的个人目录;内建命令 \fBcd\fP 的默认参数。在执行波浪线扩展时也用到这个变量。
+.TP
+.B HOSTFILE
+包含一个格式和
+.FN /etc/hosts
+相同的文件名,当 shell 需要补全主机名时要读取它。shell 运行过程中
+可以改变可能的主机名补全列表;改变之后下一次需要主机名补全时
+.B bash
+会将新文件的内容添加到旧列表中。如果定义了
+.SM
+.B HOSTFILE
+但是没有赋值,\fBbash\fP 将尝试读取
+.FN /etc/hosts
+文件来获得可能的主机名补全列表。当取消
+.SM
+.B HOSTFILE
+的定义时,主机名列表将清空。
+.TP
+.B IFS
+内部字段分隔符
+.I Internal Field Separator
+用来在扩展之后进行分词,使用内部命令
+.B read
+将行划分成词。默认值是 
+``<space><tab><newline>''。
+.TP
+.B IGNOREEOF
+控制交互式 shell 接受到唯一一个
+.SM
+.B EOF
+字符时的行为。如果有定义,值是需要在一行的开始连续输入
+.SM
+.B EOF
+字符,直到可以使
+.B bash
+退出的字符个数。如果这个变量存在,但是值不是一个数字或者没有赋值,默认值是 10。
+如果变量没有定义,
+.SM
+.B EOF
+标志着输入的结束。
+.TP
+.B INPUTRC
+.B readline
+的启动配置文件,而不是默认的
+.FN ~/.inputrc
+(参见下面的
+.SM
+.B READLINE
+章节)。
+.TP
+.B LANG
+用来决定没有特地用 \fBLC_\fP 变量指定的语言环境项。
+.TP
+.B LC_ALL
+这个变量超越了 \fBLANG\fP 和所有其他指定语言环境项的 \fBLC_\fP 变量。
+.TP
+.B LC_COLLATE
+这个变量决定了为路径扩展的结果排序时的字母顺序,决定了范围表达式的行为,
+等价类,和路径扩展中的归并顺序以及模式匹配。 
+.TP
+.B LC_CTYPE
+这个变量决定了字符的解释和路径扩展以及模式匹配中字符类的行为。
+.TP
+.B LC_MESSAGES
+这个变量决定了翻译以 \fB$\fP 前导的双引号字符串时的语言环境。
+.TP
+.B LC_NUMERIC
+这个变量决定了格式化数字时的语言环境分类。
+.TP
+.B LINES
+内建命令 \fBselect\fP 用它来判断输出选择列表时的列宽度。在收到 SIGWINCH 信号时自动设置。
+.TP
+.B MAIL
+如果这个参数设置为一个文件名,并且没有设置环境变量
+.SM
+.B MAILPATH
+的话,
+.B bash
+将在这个文件中通知用户有邮件到达。
+.TP
+.B MAILCHECK
+指定
+.B bash
+检查邮件的频率是多少,以秒为单位。默认值是 60 秒。需要检查邮件的时候,shell 在显示提示符之前将进行检查。
+如果取消它的定义,或者设置为并非大于等于零的数值,shell 将禁止邮件检查。
+.TP
+.B MAILPATH
+一个冒号分隔的文件名列表,从中检查邮件。当邮件到达某个特殊文件中时,输出的特定消息可以
+通过将文件名与消息以 `?' 分隔来指定。
+在消息的文本中,\fB$_\fP 扩展为当前邮件文件的文件名。例如:
+.RS
+.PP
+\fBMAILPATH\fP='/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"'
+.PP
+.B Bash
+为这个变量提供默认值,但是它使用的用户邮件文件的位置是系统相关的 (例如,/var/mail/\fB$USER\fP)。
+.RE
+.TP
+.B OPTERR
+如果设置为 1,
+.B bash
+显示内建命令
+.B getopts
+产生的错误消息 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。每次 shell 启动时或者一个 shell 脚本被执行时
+.SM
+.B OPTERR
+被初始化为 1。
+.TP
+.B PATH
+搜索命令的路径。它是一个冒号分割的目录列表,shell 从中搜索命令 (参见下面的
+.SM
+.B "命令执行(COMMAND EXECUTION)"
+段落)。默认的路径是系统相关的,是由安装
+.BR bash 
+的系统管理员设置的。通常它的值是
+.if t \f(CW/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.\fP。
+.if n ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''。
+.TP
+.B POSIXLY_CORRECT
+如果 \fBbash\fP 启动环境中有这个变量,它将在读取启动配置文件之前进入 \fIposix mode\fP,就好像提供了
+.B \-\-posix
+启动参数一样。如果 shell 运行过程中设置了它,\fBbash\fP 就启用 \fIposix mode\fP,就好像执行了
+.if t \f(CWset -o posix\fP
+.if n \fIset -o posix\fP
+命令一样。
+.TP
+.B PROMPT_COMMAND
+如果有定义,它的值将作为一个命令,每次显示主提示符之前都会执行。
+.TP
+.B PS1
+这个参数的值被扩展 (参见下面的
+.SM
+.B PROMPTING 提示符
+段落),用作主提示符字符串。默认值是
+``\fB\es\-\ev\e$ \fP''。
+.TP
+.B PS2
+这个参数的值同
+.B PS1
+一起被扩展,用作次提示符字符串。默认值是
+``\fB> \fP''。
+.TP
+.B PS3
+这个参数的值被用作内建命令
+.B select
+的提示符 (参见上面的
+.SM
+.B SHELL GRAMMAR 语法
+章节)。
+.TP
+.B PS4
+这个参数的值同
+.B PS1
+一起被扩展,在执行跟踪中在
+.B bash
+显示每个命令之前显示。需要的话,
+.SM
+.B PS4
+的第一个字符会被复制多次,来指示 indirection 的层数。默认值是 ``\fB+ \fP''。
+.TP
+.B TIMEFORMAT
+在前缀 time 保留字的管道中,这个参数的值用作格式字符串,
+指定计时信息如何显示。字符 \fB%\fP 引入的转义序列,被扩展为时间值
+或其他信息。转义序列和它们的含义如下所示;括号中是可选的成分。
+.sp .5
+.RS
+.PD 0
+.TP 10
+.B %%
+一个字面上的 \fB%\fP。
+.TP
+.B %[\fIp\fP][l]R
+经历的时间,以秒计算。
+.TP
+.B %[\fIp\fP][l]U
+CPU 在用户模式下执行的秒数。
+.TP
+.B %[\fIp\fP][l]S
+CPU 在系统模式下执行的秒数。
+.TP
+.B %P
+CPU 使用率,算法是 (%U + %S) / %R。
+.PD
+.RE
+.IP
+可选的 \fIp\fP 是指定精度 (小数点后数字位数) 的数值。
+如果是 0 就不输出小数点或小数值。最多指定到小数点后三位;
+如果 \fIp\fP 大于 3 就会被改为 3。如果没有指定 \fIp\fP,默认使用 3。
+.IP
+可选的 \fBl\fP 指定了长格式,包含分钟,格式是 \fIMM\fPm\fISS\fP.\fIFF\fPs。
+\fIp\fP 的值决定了是不是包含小数位。
+.IP
+如果没有设置这个值,\fBbash\fP 假定它的值是
+\fB$'\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS'\fP。
+如果它是空值,就不会显示计时信息。显示格式字符串的时候,会加上
+一个前导的新行符。
+.TP
+.B TMOUT
+如果设置为大于 0 的值,\fBTMOUT\fP 被当作内建命令 \fBread\fP 的默认超时
+等待时间。如果等待终端输入时, \fBTMOUT\fP 秒之后仍然没有输入,
+\fBselect\fP 命令将终止。在交互的 shell 中,它的值被解释为显示了
+主提示符之后等待输入的秒数。如果经过这个秒数之后仍然没有输入,
+.B Bash
+将退出。
+.TP
+.B auto_resume
+这个变量控制了 shell 如何与用户和作业控制交互。如果设置了这个变量,
+一个不包含重定向的单个词的简单命令,将作为恢复被中断的作业的指示。
+不允许出现模棱两可的情况;如果有多个作业都以这个词起始,将恢复最近运行
+的作业。在这种情形下,被中断的作业的
+.I name
+是用于启动它的命令行。如果值设置为
+.IR exact,
+给出的字符串必须精确匹配被中断的作业名;如果设置为
+.IR substring ,
+给出的字符串需要匹配被中断的作业名的子串。值
+.I substring
+的功能与作业标识符
+.B %?
+功能类似 (参见下面的
+.SM
+.B JOB CONTROL 作业控制
+章节)。如果设置为任何其他值,给出的字符串必须是被中断的作业的前缀;
+这样做与作业标识符
+.B %
+功能类似。
+.TP
+.B histchars
+两到三个字符,控制着历史扩展和分段 (tokenization,参见下面的
+.SM
+.B HISTORY EXPANSION 历史扩展
+章节)。第一个字符是 \fIhistory expansion\fP(历史扩展) 字符,
+这个字符表明了历史扩展的开始,通常是 `\fB!\fP'。
+第二个字符是 \fIquick substitution\fP(快速替换) 字符,
+它是重新运行上次输入的命令,但将命令中的字符串替换为另一个的简写,
+默认是 `\fB^\fP'。可选的第三个字符是指示如果作为一个词的开始,那么
+一行中剩余字符是注释。通常这个字符是 `\fB#\fP'。历史注释字符使得
+对一行中剩余字符在历史替换中被跳过。它不一定使 shell 解释器将
+这一行的剩余部分当作注释。
+.PD
+.SS Arrays
+.B Bash
+提供了一维数组变量。任何变量都可以作为一个数组;内建命令
+.B declare
+可以显式地定义数组。数组的大小没有上限,也没有限制在连续对成员引用和
+赋值时有什么要求。数组以整数为下标,从 0 开始。
+.PP
+如果变量赋值时使用语法 \fIname\fP[\fIsubscript\fP]=\fIvalue\fP,
+那么就会自动创建数组。
+.I subscript
+被当作一个算术表达式,结果必须是大于等于 0 的值。要显式地定义一个数组,使用
+.B declare \-a \fIname\fP
+(参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。也可以用
+.B declare \-a \fIname\fP[\fIsubscript\fP]
+这时 \fI subscript\fP 被忽略。数组变量的属性可以用内建命令
+.B declare
+和
+.B readonly
+来指定。每个属性对于所有数组元素都有效。
+.PP
+数组赋值可以使用复合赋值的方式,形式是
+\fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP,这里每个
+\fIvalue\fP 的形式都是 [\fIsubscript\fP]=\fIstring\fP。\fIstring\fP 
+必须出现。如果出现了可选的括号和下标,将为这个下标赋值,否则
+被赋值的元素的下标是语句中上一次赋值的下标加一。下标从 0 开始。
+这个语法也被内建命令
+.B declare
+所接受。单独的数组元素可以用上面介绍的语法
+\fIname\fP[\fIsubscript\fP]=\fIvalue\fP 来赋值。
+.PP
+数组的任何元素都可以用 ${\fIname\fP[\fIsubscript\fP]} 来引用。
+花括号是必须的,以避免和路径扩展冲突。如果
+\fIsubscript\fP 是 \fB@\fP 或是 \fB*\fP,它扩展为 \fIname\fP 的所有成员。
+这两种下标只有在双引号中才不同。在双引号中,${\fIname\fP[*]} 扩展为一个词,
+由所有数组成员的值组成,用特殊变量
+.SM
+.B IFS
+的第一个字符分隔;${\fIname\fP[@]} 将 \fIname\fP 的每个成员扩展为一个词。
+如果数组没有成员,${\fIname\fP[@]} 扩展为空串。这种不同类似于特殊参数
+\fB*\fP 和 \fB@\fP 的扩展 (参见上面的
+.B Special Parameters
+段落)。${#\fIname\fP[\fIsubscript\fP]} 扩展为 
+${\fIname\fP[\fIsubscript\fP]} 的长度。如果 \fIsubscript\fP 是 \fB*\fP
+或者是 \fB@\fP,扩展结果是数组中元素的个数。引用没有下标数组变量等价于
+引用元素 0。
+.PP
+内建命令
+.B unset
+用于销毁数组。\fBunset\fP \fIname\fP[\fIsubscript\fP]
+将销毁下标是 \fIsubscript\fP 的元素。
+\fBunset\fP \fIname\fP, 这里 \fIname\fP 是一个数组,或者
+\fBunset\fP \fIname\fP[\fIsubscript\fP], 这里
+\fIsubscript\fP 是 \fB*\fP 或者是 \fB@\fP,将销毁整个数组。
+.PP
+内建命令
+.BR declare ,
+.BR local ,
+和
+.B readonly
+都能接受
+.B \-a
+选项,从而指定一个数组。内建命令
+.B read
+可以接受
+.B \-a
+选项,从标准输入读入一列词来为数组赋值。内建命令
+.B set
+和
+.B declare
+使用一种可以重用为输入的格式来显示数组元素。
+.SH 扩展(EXPANSION)
+命令行的扩展是在拆分成词之后进行的。有七种类型的扩展:
+.IR "brace expansion" (花括号扩展),
+.IR "tilde expansion" (波浪线扩展),
+.IR "parameter and variable expansion" (参数和变量扩展),
+.IR "command substitution" (命令替换),
+.IR "arithmetic expansion" (算术扩展),
+.IR "word splitting" (词的拆分),
+和
+.IR "pathname expansion" (路径扩展).
+.PP
+扩展的顺序是:brace expansion, tilde expansion,
+parameter, variable 和 arithmetic expansion 还有
+command substitution
+(按照从左到右的顺序), word splitting, 最后是 pathname
+expansion.
+.PP
+还有一种附加的扩展:\fIprocess subtitution\fP (进程替换) 只有在支持它
+的系统中有效。
+.PP
+只有 brace expansion, word splitting, 和 pathname expansion
+在扩展前后的词数会发生改变;其他扩展总是将一个词扩展为一个词。
+唯一的例外是上面提到的
+"\fB$@\fP" 和 "\fB${\fP\fIname\fP\fB[@]}\fP" (参见
+.SM
+.BR PARAMETERS 参数)。
+.SS Brace Expansion
+.PP
+.I "Brace expansion"
+是一种可能产生任意字符串的机制。这种机制类似于
+\fIpathname expansion\fP, 但是并不需要存在相应的文件。
+花括号扩展的模式是一个可选的
+.IR preamble (前导字符),
+后面跟着一系列逗号分隔的字符串,包含在一对花括号中,
+再后面是一个可选的
+.IR postscript (附言)。
+前导被添加到花括号中的每个字符串前面,附言被附加到每个结果字符串之后,
+从左到右进行扩展。
+.PP
+花括号扩展可以嵌套。扩展字符串的结果没有排序;而是保留了从左到右的顺序。
+例如, a\fB{\fPd,c,b\fB}\fPe 扩展为 `ade ace abe'。
+.PP
+花括号扩展是在任何其他扩展之前进行的,任何对其他扩展有特殊意义的字符
+都保留在结果中。它是严格字面上的。
+.B Bash
+不会对扩展的上下文或花括号中的文本做任何语义上的解释。
+.PP
+正确的花括号扩展必须包含没有引用的左括号和右括号,以及至少一个没有
+引用的逗号。任何不正确的表达式都不会被改变。可以用反斜杠来引用
+\fB{\fP 或 \fB,\fP 来阻止将它们识别为花括号表达式的一部分。
+为了避免与参数扩展冲突,字符串 \fB${\fP 不被认为有效的组合。
+.PP
+这种结构通常用来简写字符串的公共前缀远比上例中为长的情况,例如:
+.RS
+.PP
+mkdir /usr/local/src/bash/{old,new,dist,bugs}
+.RE
+或者:
+.RS
+chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+.RE
+.PP
+花括号扩展导致了与历史版本的
+.BR sh 
+的一点不兼容。在左括号或右括号作为词的一部分出现时,
+.B sh
+不会对它们进行特殊处理,会在输出中保留它们。
+.B Bash
+将括号从花括号扩展结果的词中删除。例如,向
+.B sh
+输入 \fIfile{1,2}\fP 会导致不变的输出。同样的输入在
+.BR bash
+进行扩展之后,会输出
+.I file1 file2 .
+如果需要同
+.B sh
+严格地保持兼容,需要在启动
+.B bash
+的时候使用
+.B +B 
+选项,或者使用
+.B set
+命令加上
+.B +B
+选项来禁用花括号扩展 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.SS Tilde Expansion
+.PP
+如果一个词以没有引用的波浪线字符 (`\fB~\fP') 开始,所有
+在第一个没有引用的斜线 (`/') 之前的字符 (或者是这个词的所有字符,
+如果没有没引用的斜线的话) 都被认为是 \fItilde-prefix\fP(波浪线前缀)。
+如果 tilde-prefix 中没有被引用的字符,那么波浪线之后的字符串
+被认为是 \fIlogin name\fP(登录名)。如果登录名是空字符串,波浪线将
+被替换为 shell 参数
+.SM
+.BR HOME 
+的值。如果没有定义
+.SM
+.B HOME,
+将替换为执行此 shell 的用户的个人目录。否则,tilde-prefix 被替换为
+与指定登录名相联系的个人目录。
+.PP
+如果 tilde-prefix 是 `~+',将使用 shell 变量
+.SM
+.B PWD
+的值来替换。如果 tilde-prefix 是 `~\-',并且设置了 shell 变量
+.SM
+.BR OLDPWD ,
+将使用这个变量值来替换。如果在 tilde-prefix 中,波浪线之后的字符串
+由一个数字 \fIN\fP 组成,前缀可选的 `+' 或者 `\-',那么 tilde-prefix
+将被替换为目录栈中相应的元素,就是将 tilde-prefix 作为参数执行内建命令
+.B dirs
+显示的结果。如果 tilde-prefix 中波浪线之后的字符是一个数字,没有前缀,
+那么就假定有一个 `+'。
+.PP
+如果登录名不合法,或者波浪线扩展失败,这个词将不会变化。
+.PP
+在变量赋值中,对于
+.B :
+或
+.BR =
+之后的字符串会立即检查未引用的 tilde-prefix。
+这种情况下,仍然会进行波浪线扩展。因此,可以使用带波浪线的文件名来为
+.SM
+.BR PATH ,
+.SM
+.BR MAILPATH ,
+和
+.SM
+.BR CDPATH 
+赋值,shell 将赋予扩展之后的值。
+.SS Parameter Expansion
+.PP
+字符 `\fB$\fP' 引入了参数扩展,命令替换和算术扩展。要扩展的参数名或符号
+可能包含在花括号中,花括号可选的,但是可以使得要扩展的变量不会与紧随其后
+的字符合并,成为新的名称。
+.PP
+使用花括号的时候,匹配的右括号是第一个 `\fB}\fP',并且它没有被反斜杠引用
+或包含在一个引用的字符串中,也没有包含在一个嵌入的算术扩展,命令替换
+或是参数扩展中。
+.PP
+.PD 0
+.TP
+${\fIparameter\fP}
+被替换为 \fIparameter\fP 的值。如果
+.I parameter
+是一个位置参数,并且数字多于一位时;或者当紧随
+.I parameter
+之后有不属于名称一部分的字符时,都必须加上花括号。
+.PD
+.PP
+如果 \fIparameter\fP 的第一个字符是一个感叹号,将引进一层间接变量。
+\fBbash\fP 使用以 \fIparameter\fP 的其余部分为名的变量的值作为变量的名称;
+接下来新的变量被扩展,它的值用在随后的替换当中,而不是使用 
+\fIparameter\fP 自身的值。这也称为 \fIindirect expansion\fP(间接扩展).
+例外情况是下面讲到的 ${!\fIprefix\fP*}。
+.PP
+下面的每种情况中,\fIword\fP 都要经过波浪线扩展,参数扩展,命令替换和
+算术扩展。如果不进行子字符串扩展,\fBbash\fP 测试一个没有定义或值为空的
+参数;忽略冒号的结果是只测试未定义的参数。
+.PP
+.PD 0
+.TP
+${\fIparameter\fP\fB:\-\fP\fIword\fP}
+\fBUse Default Values\fP(使用默认值)。如果
+.I parameter
+未定义或值为空,将替换为
+.I word
+的扩展。否则,将替换为
+.I parameter
+的值。
+.TP
+${\fIparameter\fP\fB:=\fP\fIword\fP}
+\fBAssign Default Values\fP(赋默认值)。如果
+.I parameter
+未定义或值为空,
+.I word
+的扩展将赋予
+.IR parameter .
+.I parameter
+的值将被替换。位置参数和特殊参数不能用这种方式赋值。
+.TP
+${\fIparameter\fP\fB:?\fP\fIword\fP}
+\fBDisplay Error if Null or Unset\fP(显示错误,如果未定义或值为空)。如果
+.I parameter
+未定义或值为空,\fIword\fP (或一条信息,如果
+.I word
+不存在) 的扩展将写入到标准错误;shell 如果不是交互的,则将退出。否则,
+\fIparameter\fP 的值将被替换。
+.TP
+${\fIparameter\fP\fB:+\fP\fIword\fP}
+\fBUse Alternate Value\fP(使用可选值)。如果
+.I parameter
+未定义或非空,不会进行替换;否则将替换为
+.I word
+扩展后的值。
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
+.PD
+\fBSubstring Expansion\fP(子字符串扩展)。
+扩展为\fIparameter\fP 的最多 \fIlength\fP 个字符,从 \fIoffset\fP 
+指定的字符开始。如果忽略了 \fIlength\fP,扩展为 \fIparameter\fP 的子字符串,
+从 \fIoffset\fP 指定的字符串开始。\fIlength\fP 和 \fIoffset\fP 是算术表达式
+(参见下面的
+.SM
+.B ARITHMETIC EVALUATION 算术求值
+段落)。
+\fIlength\fP 必须是一个大于等于 0 的数值。如果 \fIoffset\fP 求值结果小于 0,
+值将当作从 \fIparameter\fP 的值的末尾算起的偏移量。如果 \fIparameter\fP
+是 \fB@\fP,结果是 \fIlength\fP 个位置参数,从 \fIoffset\fP 开始。
+如果 \fIparameter\fP 是一个数组名,以 @ 或 * 索引,结果是数组的
+\fIlength\fP 个成员,从 ${\fIparameter\fP[\fIoffset\fP]} 开始。
+子字符串的下标是从 0 开始的,除非使用位置参数时,下标从 1 开始。
+.TP
+${\fB!\fP\fIprefix\fP\fB*\fP}
+扩展为名称以 \fIprefix\fP 开始的变量名,以特殊变量
+.SM
+.B IFS
+的第一个字符分隔。
+.TP
+${\fB#\fP\fIparameter\fP}
+替换为 \fIparameter\fP 的值的长度 (字符数目)。如果
+.I parameter
+是
+.B *
+或者是 
+.BR @ ,
+替换的值是位置参数的个数。如果
+.I parameter
+是一个数组名,下标是
+.B *
+或者是
+.BR @ ,
+替换的值是数组中元素的个数。
+.TP
+${\fIparameter\fP\fB#\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB##\fP\fIword\fP}
+.PD
+.I word
+被扩展为一个模式,就像路径扩展中一样。如果这个模式匹配
+.IR parameter
+的值的起始,那么扩展的结果是将
+.I parameter
+扩展后的值中,最短的匹配 (``\fB#\fP'' 的情况) 或者最长的匹配
+(``\fB##\fP''的情况) 删除的结果。如果
+.I parameter
+是
+.B @
+或者是
+.BR * ,
+则模式删除操作将依次施用于每个位置参数,最后扩展为结果的列表。如果
+.I parameter
+是一个数组变量,下标是
+.B @
+或者是
+.BR * ,
+模式删除将依次施用于数组中的每个成员,最后扩展为结果的列表。
+.TP
+${\fIparameter\fP\fB%\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB%%\fP\fIword\fP}
+.PD
+\fIword\fP 被扩展为一个模式,就像路径扩展中一样。如果这个模式匹配
+.IR parameter 
+扩展后的值的尾部,那么扩展的结果是将
+.I parameter
+扩展后的值中,最短的匹配 (``\fB%\fP'' 的情况) 或者最长的匹配
+(``\fB%%\fP''的情况) 删除的结果。如果
+.I parameter
+是
+.B @
+或者是
+.BR * ,
+则模式删除操作将依次施用于每个位置参数,最后扩展为结果的列表。如果
+.I parameter
+是一个数组变量,下标是
+.B @
+或者是
+.BR * ,
+模式删除将依次施用于数组中的每个成员,最后扩展为结果的列表。
+.TP
+${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD
+\fIpatterm\fP 被扩展为一个模式,就像路径扩展中一样。\fIparameter\fP
+被扩展,其值中最长的匹配 \fIpattern\fP 的内容被替换为 \fIstring\fP。
+在第一种形式中,只有第一个匹配被替换。第二种形式使得 \fIpattern\fP
+中所有匹配都被替换为 \fIstring\fP。
+如果 \fIpattern\fP 以 \fB#\fP 开始,它必须匹配 \fIparameter\fP 扩展后
+值的首部。如果 \fIpattern\fP 以 \fB%\fP 开始,它必须匹配 \fIparameter\fP
+扩展后值的尾部。如果 \fIstring\fP 是空值,\fIpattern\fP 的匹配都将被删除,
+\fIpattern\fP 之后的 \fB/\fP 将被忽略。如果
+.I parameter
+是
+.B @
+或者是
+.BR * ,
+则替换操作将依次施用于每个位置参数,最后扩展为结果的列表。如果
+.I parameter
+是一个数组变量,下标是
+.B @
+或者是
+.BR * ,
+模式删除将依次施用于数组中的每个成员,最后扩展为结果的列表。
+.SS Command Substitution
+.PP
+命令替换 (\fICommand substitution\fP) 允许以命令的输出替换命令名。有
+两种形式:
+.PP
+.RS
+.PP
+\fB$(\fP\fIcommand\fP\|\fB)\fP
+.RE
+还有
+.RS
+\fB`\fP\fIcommand\fP\fB`\fP
+.RE
+.PP
+.B Bash
+进行扩展的步骤是执行 \fIcommand\fP,以它的标准输出替换它,并且将所有后续的
+新行符删除。内嵌的新行符不会删除,但是它们可能会在词的拆分中被删除。
+命令替换 \fB$(cat \fIfile\fP)\fR 可以用等价但是更快的方法
+\fB$(< \fIfile\fP)\fR 代替。
+.PP
+当使用旧式的反引号 ("``") 替换形式时,反斜杠只有其字面意义,除非
+后面是
+.BR $ ,
+.BR ` ,
+或者是
+.BR \e .
+第一个前面没有反斜杠的反引号将结束命令替换。当使用 $(\^\fIcommand\fP\|) 
+形式时,括号中所有字符组成了整个命令;没有被特殊处理的字符。
+.PP
+命令替换可以嵌套。要在使用反引号形式时嵌套,可以用反斜杠来转义内层的
+反引号。
+.PP
+如果替换发生在双引号之中,结果将不进行词的拆分和路径扩展。
+.SS Arithmetic Expansion
+.PP
+算术扩展允许算术表达式的求值和结果的替换。算术扩展的格式是:
+.RS
+.PP
+\fB$((\fP\fIexpression\fP\fB))\fP
+.RE
+.PP
+表达式
+.I expression
+被视为如同在双引号之中一样,但是括号中的双引号不会被特殊处理。
+表达式中所有词都经过了参数扩展,字符串扩展,命令替换和引用的删除。
+算术替换可以嵌套。
+.PP
+求值根据下面
+.SM
+.BR "算术求值 (ARITHMETIC EVALUATION)"
+章节中列出的规则进行。如果表达式
+.I expression
+非法,
+.B bash
+输出错误提示消息,不会进行替换。
+.SS Process Substitution
+.PP
+\fIProcess substitution\fP (进程替换) 只有在支持命名管道 (\fIFIFOs\fP),
+或者支持使用 \fB/dev/fd\fP 方式为打开的文件命名的系统中才可用。
+它的形式是
+\fB<(\fP\fIlist\^\fP\fB)\fP
+或者是
+\fB>(\fP\fIlist\^\fP\fB)\fP。
+进程 \fIlist\fP 运行时的输入或输出被连接到一个 \fIFIFO\fP 或者 \fB/dev/fd\fP
+中的文件。文件的名称作为一个参数被传递到当前命令,作为扩展的结果。
+如果使用 \fB>(\fP\fIlist\^\fP\fB)\fP 形式,向文件写入相当于为 \fIlist\fP
+提供输入。如果使用 \fB<(\fP\fIlist\^\fP\fB)\fP 形式,可以读作为参数传递
+的文件来获得 \fIlist\fP 的输出。
+.PP
+如果可能的话,进程替换是与参数和变量扩展,命令替换和算术扩展同时发生的。
+.SS Word Splitting
+.PP
+shell 检测不在双引号引用中发生的参数扩展,命令替换和算术扩展的结果,
+进行
+.IR "word splitting" (词的拆分)。
+.PP
+shell 将
+.SM
+.B IFS
+的每个字符都作为定界符,根据这些字符来将其他扩展的结果分成词。如果
+.SM
+.B IFS
+没有定义,或者它的值是默认的
+.BR <space><tab><newline> ,
+那么
+.SM
+.B IFS
+字符的任何序列都将作为分界之用。如果
+.SM
+.B IFS
+的值是默认之外的值,那么词开头和结尾的空白字符
+.B space
+和
+.B tab
+都将被忽略,只要空白字符在
+.SM
+.BR IFS
+的值之内 (即,
+.SM
+.B IFS
+包含空白字符)。
+任何在
+.SM
+.B IFS
+之中但是不是
+.SM
+.B IFS
+空白的字符,以及任何相邻的
+.SM
+.B IFS
+空白字符,将字段分隔开来。
+.SM
+.B IFS
+空白字符的序列也被作为分界符。如果
+.SM
+.B IFS
+的值是空,不会发生词的拆分。
+.PP
+显式给出的空值参数 (\^\f3"\^"\fP 或 \^\f3'\^'\fP\^) 将被保留。
+隐含的空值参数,来自于空值的参数扩展,如果没有引用则将被删除。
+如果空值的参数在双引号引用中扩展,结果是空值的参数,将被保留。
+.PP
+注意如果没有发生扩展,不会进行词的拆分。
+.SS Pathname Expansion
+.PP
+词的拆分之后,除非设置过
+.B \-f
+选项,
+.B bash
+搜索每个词,寻找字符
+.BR * ,
+.BR ? ,
+和
+.BR [ .
+如果找到了其中之一,那么这个词被当作一个
+.IR pattern (模式),
+被替换为匹配这个模式的文件名以字母顺序排列的列表。如果没有找到匹配的文件名,
+并且 shell 禁用了
+.B nullglob
+选项,这个词将不发生变化。如果设置了
+.B nullglob
+选项并且没有找到匹配,这个词将被删除。如果启用了
+.B nocaseglob
+选项,匹配时将不考虑字母的大小写。当模式用作路径名扩展时,字符
+.B ``.''
+如果在一个名称的开始或者紧随一个斜杠之后,那么它必须被显式地匹配,除非设置了
+.B dotglob
+shell 选项。当匹配一个路径名时,斜杠符必须被显式地匹配。其他情况下,字符
+.B ``.''
+不会被特殊对待。参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+中对
+.B shopt
+的介绍,其中有 shell 选项
+.BR nocaseglob ,
+.BR nullglob ,
+和
+.B dotglob
+的描述。
+.PP
+环境变量
+.SM
+.B GLOBIGNORE
+可以用来限制匹配
+.IR pattern 
+的文件名集合。如果设置了
+.SM
+.B GLOBIGNORE,
+每个匹配的文件名如果匹配
+.SM
+.B GLOBIGNORE
+中任何一个模式的话将从匹配的列表中删除。文件名
+.B ``.''
+和
+.B ``..''
+总是被忽略,即使设置了
+.SM
+.B GLOBIGNORE。
+但是,设置
+.SM
+.B GLOBIGNORE
+和启用 shell 选项
+.B dotglob
+效果是相同的,因此所有其他以
+.B ``.''
+开头的文件名将被匹配。要得到原来的行为 (忽略所有以
+.BR ``.'' 
+开头的文件名),可以将
+.B ``.*''
+添加为
+.SM
+.BR GLOBIGNORE 
+的模式之一。选项
+.B dotglob
+被禁用,如果
+.SM
+.B GLOBIGNORE
+没有定义时。
+.PP
+\fBPattern Matching\fP
+.PP
+任何模式中出现的字符,除了下面描述的特殊模式字符外,都匹配它本身。
+模式中不能出现 NUL 字符。如果要匹配字面上的特殊模式字符,它必须被引用。
+.PP
+特殊模式字符有下述意义:
+.PP
+.PD 0
+.TP
+.B *
+匹配任何字符串包含空串。
+.TP
+.B ?
+匹配任何单个字符。
+.TP
+.B [...]
+匹配所包含的任何字符之一。用一个连字符 (`-') 分隔的一对字符意思是一个
+\fIrange expression\fP (范围表达式);
+任何排在它们之间的字符,包含它们,都被匹配。
+排序使用当前语言环境的字符顺序和字符集。如果
+.B [
+之后的第一个字符是一个
+.B !
+或是一个
+.B ^
+那么任何不包含在内的字符将被匹配。范围表达式中字符的顺序是由当前语言环境
+和环境变量 \fBLC_COLLATE\fP 的值 (如果设置了的话) 决定的。一个
+.B \-
+只有作为集合中第一个或最后一个字符时才能被匹配。一个
+.B ]
+只有是集合中第一个字符时才能被匹配。
+.br
+.if t .sp 0.5
+.if n .sp 1
+在
+.B [
+和
+.BR ]
+中,\fIcharacter classes\fP (字符类) 可以用 \fB[:\fP\fIclass\fP\fB:]\fP
+这样的语法来指定,这里 \fIclass\fP 是在 POSIX.2 标准中定义的下列类名之一:
+.PP
+.RS
+.B
+.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
+.if t alnum   alpha   ascii   blank   cntrl   digit   graph   lower   print   punct   space   upper   word   xdigit
+.br
+一个字符类匹配任何属于这一类的字符。\fBword\fP 字符类匹配字母,数字和字符 _。
+.br
+.if t .sp 0.5
+.if n .sp 1
+在
+.B [
+和
+.BR ]
+中,可以用 \fB[=\fP\fIc\fP\fB=]\fP 这样的语法来指定 \fIequivalence class\fP 
+(等价类)。它匹配与字符 \fIc\fP 有相同归并权值 (collation weight,由当前
+语言环境定义) 的字符。
+.br
+.if t .sp 0.5
+.if n .sp 1
+在
+.B [
+和
+.BR ]
+中,语法 \fB[.\fP\fIsymbol\fP\fB.]\fP 匹配归并符号 (collating symbol)
+\fIsymbol\fP。
+.RE
+.PD
+.PP
+如果使用内建命令 \fBshopt\fP 启用了 shell 选项 \fBextglob\fP,
+将识别另外几种模式匹配操作符。下面的描述中,\fIpattern-list\fP 是一个
+或多个模式以 \fB|\fP 分隔的列表。复合的模式可以使用一个或多个下列的
+子模式构造出来:
+.sp 1
+.PD 0
+.RS
+.TP
+\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP
+匹配所给模式零次或一次出现
+.TP
+\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP
+匹配所给模式零次或多次出现
+.TP
+\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP
+匹配所给模式一次或多次出现
+.TP
+\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
+准确匹配所给模式之一
+.TP
+\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
+任何除了匹配所给模式之一的字串
+.RE
+.PD
+.SS Quote Removal
+.PP
+经过前面的扩展之后,所有未引用的字符
+.BR \e ,
+.BR ' ,
+以及并非上述扩展结果的字符 \^\fB"\fP\^ 都被删除。
+.SH 重定向(REDIRECTION)
+在命令执行前,它的输入和输出可能被
+.I redirected (重定向),
+使用一种 shell 可以解释的特殊记法。重定向也可以用于为当前 shell
+执行环境 打开和关闭文件。下列重定向操作符可以前置或者放在
+.I simple command (简单命令)
+之中的任何位置,或者放在
+.IR command 
+之后。重定向是以出现的顺序进行处理的,从左到右。
+.PP
+下列描述中,如果文件描述符被忽略,并且第一个重定向操作符是
+.BR < ,
+那么重定向指的是标准输入 (文件描述符是 0)。如果重定向操作符的第一个字符是
+.BR > ,
+那么重定向指的是标准输出 (文件描述符是 1)。
+.PP
+下列描述中,重定向操作符之后的词如果没有特殊说明,都要经过
+brace expansion, tilde expansion, parameter expansion, 
+command substitution, arithmetic expansion, quote removal, 
+pathname expansion, 还有 word splitting。如果扩展为多于一个词,
+.B bash
+将报错。
+.PP
+注意重定向的顺序非常重要。例如,命令
+.RS
+.PP
+ls \fB>\fP dirlist 2\fB>&\fP1
+.RE
+.PP
+将标准输出和标准错误重定向到文件
+.IR dirlist ,
+而命令
+.RS
+.PP
+ls 2\fB>&\fP1 \fB>\fP dirlist
+.RE
+.PP
+只会将标准输出重定向到文件
+.IR dirlist ,
+因为在标准输出被重定向到文件
+.IR dirlist 
+中之前,标准错误被复制为标准输出。
+.PP
+一些文件名在重定向中被 \fBbash\fP 特殊处理,如下表所示:
+.RS
+.PP
+.PD 0
+.TP
+.B /dev/fd/\fIfd\fP
+如果 \fIfd\fP 是一个合法的整数,文件描述符 \fIfd\fP 将被复制。
+.TP
+.B /dev/stdin
+文件描述符 0 被复制。
+.TP
+.B /dev/stdout
+文件描述符 1 被复制。
+.TP
+.B /dev/stderr
+文件描述符 2 被复制。
+.TP
+.B /dev/tcp/\fIhost\fP/\fIport\fP
+如果 \fIhost\fP 是一个合法的主机名或 Internet 地址,并且 \fIport\fP 是
+一个整数端口号或服务名,\fBbash\fP 试图建立与相应的 socket (套接字) 的
+TCP 连接。
+.TP
+.B /dev/udp/\fIhost\fP/\fIport\fP
+如果 \fIhost\fP 是一个合法的主机名或 Internet 地址,并且 \fIport\fP 是
+一个整数端口号或服务名,\fBbash\fP 试图建立与相应的 socket (套接字) 的
+UDP 连接。
+.PD
+.RE
+.PP
+打开或创建文件错误将导致重定向出错。
+.SS Redirecting Input
+.PP
+重定向输入使得以
+.I word
+扩展结果为名的文件被打开并通过文件描述符
+.IR n 
+读取,如果没有指定
+.I n
+那么就作为标准输入 (文件描述符为 0) 读取。
+.PP
+重定向输入的一般形式是:
+.RS
+.PP
+[\fIn\fP]\fB<\fP\fIword\fP
+.RE
+.SS Redirecting Output
+.PP
+重定向输出使得以
+.I word
+扩展结果为名的文件被打开并通过文件描述符
+.IR n 
+写入,如果没有指定
+.I n
+那么就作为标准输出 (文件描述符为 1) 写入。
+.PP
+重定向的一般形式是:
+.RS
+.PP
+[\fIn\fP]\fB>\fP\fIword\fP
+.RE
+.PP
+如果重定向操作符是
+.BR > ,
+并且启用了内建命令
+.B set
+的
+.B noclobber
+选项,那么如果 \fIword\fP 扩展后得到的文件名存在并且是一个普通的文件,
+重定向将失败。如果重定向操作符是
+.BR >| ,
+或者重定向操作符是
+.B >
+并且没有启用内建命令
+.B set
+的
+.B noclobber
+选项,那么即使 \fIword\fP 得出的文件名存在,也会尝试进行重定向。
+.SS Appending Redirected Output (添加到重定向后的输出尾部)
+.PP
+这种方式的输出重定向使得以
+.I word
+扩展结果为名的文件被打开并通过文件描述符
+.IR n 
+从尾部添加。如果没有指定
+.I n
+就使用标准输出 (文件描述符 1)。如果文件不存在,它将被创建。
+.PP
+重定向的一般形式是:
+.RS
+.PP
+[\fIn\fP]\fB>>\fP\fIword\fP
+.RE
+.PP
+.SS Redirecting Standard Output and Standard Error
+.PP
+.B Bash
+允许使用这种结构将标准输出和标准错误 (文件描述符 1 和 2) 重定向到以
+.I word
+扩展结果为名的文件中。
+.PP
+有两种重定向标准输出/标准错误的形式:
+.RS
+.PP
+\fB&>\fP\fIword\fP
+.RE
+还有
+.RS
+\fB>&\fP\fIword\fP
+.RE
+.PP
+两种形式中,推荐使用第一种。它与
+.RS
+.PP
+\fB>\fP\fIword\fP 2\fB>&\fP1
+.RE
+在语义上等价。
+.SS Here Documents
+.PP
+这种重定向使得 shell 从当前源文件读取输入,直到遇到仅包含
+.I word
+的一行 (并且没有尾部空白,trailing blanks) 为止。直到这一点的所有行被用作
+命令的标准输入。
+.PP
+here-document 的格式是:
+.RS
+.PP
+.nf
+\fB<<\fP[\fB\-\fP]\fIword\fP
+        \fIhere-document\fP
+\fIdelimiter\fP
+.fi
+.RE
+.PP
+不会对
+.IR word
+进行 parameter expansion, command substitution, arithmetic expansion,
+或者 pathname expansion。如果
+.I word
+中任何字符是引用的,
+.I delimiter
+将是对
+.IR word
+进行引用删除的结果,here-document 中的行不会被扩展。如果 \fIword\fP 
+没有被引用,here-documnet 中的所有行都要经过
+parameter expansion, command substitution, 和 arithmetic expansion。
+在后一种情况下,字符序列
+.B \e<newline>
+被忽略;必须用
+.B \e
+来引用字符
+.BR \e ,
+.BR $ ,
+和
+.BR ` .
+.PP
+如果重定向操作符是
+.BR <<\- ,
+那么所有前导的 tab 字符都被从输入行和包含
+.IR delimiter
+的行中删除。这样使得 shell 脚本中的 here-document 可以被更好地缩进。
+.SS "Here Strings"
+here-document 的变种,形式是
+.RS
+.PP
+.nf
+\fB<<<\fP\fIword\fP
+.fi
+.RE
+.PP
+\fIword\fP 被扩展,提供给命令作为标准输入。
+.SS "Duplicating File Descriptors" (复制文件描述符)
+.PP
+重定向操作符
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIword\fP
+.RE
+.PP
+用于复制文件描述符。如果
+.I word
+扩展为一个或多个数字,
+.I n
+代表的文件描述符将成为那个文件描述符的复制。如果
+.I word
+中的数字并未指定一个被用于读取的文件描述符,将产生一个重定向错误。如果
+.I word
+扩展为
+.BR \- ,
+文件描述符
+.I n
+将被关闭。如果没有指定
+.I n,
+将使用标准输入 (文件描述符 0)。
+.PP
+类似的,操作符
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIword\fP
+.RE
+.PP
+用于复制输出文件描述符。如果没有指定
+.I n,
+将使用标准输出 (文件描述符 1)。如果
+.I word
+中的数字并未指定一个被用于输出的文件描述符,将产生一个重定向错误。
+特殊情况下,如果忽略了 \fIn\fP,并且 \fIword\fP 并非扩展为一个或多个数字,
+标准输出和标准错误将被重定向,和前面描述的一样。
+.SS "Moving File Descriptors"
+.PP
+重定向操作符
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+将文件描述符 \fIdigit\fP 移动为文件描述符
+.IR n ,
+或标准输入 (文件描述符 0),如果没有指定 \fIn\fP 的话。
+\fIdigit\fP 复制为 \fIn\fP 之后就被关闭了。
+.PP
+类似的,重定向操作符
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+将文件描述符 \fIdigit\fP 移动为文件描述符
+.IR n ,
+或标准输出 (文件描述符 1),如果没有指定 \fIn\fP 的话。
+.SS "Opening File Descriptors for Reading and Writing"
+.PP
+重定向操作符
+.RS
+.PP
+[\fIn\fP]\fB<>\fP\fIword\fP
+.RE
+.PP
+使得以
+.I word
+扩展结果为名的文件被打开,通过文件描述符
+.IR n 
+进行读写。如果没有指定
+.I n
+那么就使用文件描述符 0。如果文件不存在,它将被创建。
+.SH 别名(ALIASES)
+\fIAliases\fP (别名机制) 允许将一个词来替换为一个字符串,如果它是
+一个简单命令的第一个词的话。shell 记录着一个别名列表,可以使用
+内建命令
+.B alias
+和
+.B unalias
+来定义和取消 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。每个命令的第一个词,如果没有引用,都将被检查是否是一个别名。
+如果是,这个词将被它所指代的文本替换。别名和替换的文本可以包含任何有效
+的 shell 输入,包含上面列出的
+.I metacharacters (元字符)
+,特殊情况是别名中不能包含 \fI=\fP。替换文本的第一个词也被检查是否
+是别名,但是如果它与被替换的别名相同,就不会再替换第二次。这意味着可以用
+.B ls
+作为
+.BR "ls \-F"
+的别名,
+.B bash
+不会递归地展开替换文本。如果别名的最后一个字符是
+.IR blank ,
+那么命令中别名之后的下一个词也将被检查是否能进行别名展开。
+.PP
+别名可以使用
+.B alias
+命令来创建或列举出来,使用
+.B unalias
+命令来删除。
+.PP
+在替换文本中没有参数机制。如果需要参数,应当使用 shell 函数 (参见下面的
+.SM
+.B FUNCTIONS (函数)
+段落)。
+.PP
+如果 shell 不是交互的,别名将不会展开,除非使用内建命令
+.B shopt
+设置了
+.B expand_aliases
+选项。
+.PP
+关于别名的定义和使用中的规则比较混乱。
+.B Bash
+在执行一行中的任何命令之前,总是读入至少完整一行的输入。
+别名在命令被读取时展开,而不是在执行的时候。因此,别名定义如果
+和另一个命令在同一行,那么不会起作用,除非读入了下一行。
+别名定义之后,同一行中的命令不会受新的别名影响。这种行为
+在函数执行时存在争议,因为别名替换是在函数定义被读取时发生的,
+而不是函数被执行的时候,因为函数定义本身是一个复合命令。结果,
+在函数中定义的别名只有当这个函数执行完才会生效。为了保险起见,
+应当总是将别名定义放在单独的一行,不在复合命令中使用
+.B alias。
+.PP
+不管什么情况下,别名都被 shell 函数超越 (be superseded)。
+.SH 函数(FUNCTIONS)
+一个 shell 函数,以上面
+.SM
+.BR "SHELL GRAMMAR" 
+中描述的方法定义,保存着一系列的命令,等待稍后执行。
+当 shell 函数名作为一个简单命令名使用时,这个函数名关联的命令的序列
+被执行。函数在当前 shell 的上下文环境中执行;不会创建新的进程来
+解释它们 (这与 shell 脚本的执行形成了对比)。当执行函数时,函数
+的参数成为执行过程中的位置参数 (positional parameters)。特殊参数
+.B #
+被更新以反映这个变化。位置参数 0 不会改变。函数执行时,
+.SM
+.B FUNCNAME
+变量被设置为函数的名称。函数和它的调用者在 shell 执行环境的所有
+其他方面都是一样的,特殊情况是
+.SM
+.B DEBUG
+陷阱 (参见下面对内建函数
+.B trap
+的描述,在
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节中) 不会被继承,除非函数设置了
+\fBtrace\fP 属性 (参见下面对内建函数
+.SM
+.B declare
+的描述)。
+.PP
+函数中的局部变量可以使用内建命令
+.B local
+来声明。通常情况下,变量和它们的值在函数和它的调用者之间是共享的。
+.PP
+如果函数中执行了内建命令
+.B return,
+那么函数结束,执行从函数调用之后的下一个命令开始。
+函数结束后,位置参数的值以及特殊参数
+.B #
+都将重置为它们在函数执行前的值。
+.PP
+函数名和定义可以使用内建命令
+.B declare
+或
+.B typeset
+加上
+.B \-f
+参数来列出。如果在
+.B declare
+或
+.B typeset
+命令中使用
+.B \-F
+选项将只列出函数名。函数可以使用内建命令
+.B export
+加上
+.B \-f
+参数导出,使得子 shell 中它们被自动定义。
+.PP
+函数可以是递归的。对于递归调用的次数没有硬性限制。
+.SH 算术求值("ARITHMETIC EVALUATION")
+在一定的环境下,shell 允许进行算术表达式的求值 (参见内建命令 \fBlet\fP
+和 \fBArithmetic Expansion\fP (算术表达式))。
+求值使用固定宽度的整数,不检查是否溢出,但是被零除会被捕获,标记为错误。
+操作数及其优先级和聚合程度与 C 语言中相同。下列操作数的列表按照相同
+优先级的操作数其级别来分组。列出的级别顺序是优先级递减的。
+.PP
+.PD 0
+.TP
+.B \fIid\fP++ \fIid\fP\-\-
+变量自增/自减 (在后)
+.TP
+.B ++\fIid\fP \-\-\fIid\fP
+变量自增/自减 (在前)
+.TP
+.B \- +
+(单目的) 取负/取正
+.TP
+.B ! ~
+逻辑和位取反
+.TP
+.B **
+乘幂
+.TP
+.B * / %
+乘,除,取余
+.TP
+.B + \-
+加,减
+.TP
+.B << >>
+左/右位移
+.TP
+.B <= >= < >
+比较
+.TP
+.B == !=
+相等/不等
+.TP
+.B &
+位与 (AND)
+.TP
+.B ^
+位异或 (exclusive OR)
+.TP
+.B |
+位或 (OR)
+.TP
+.B &&
+逻辑与 (AND)
+.TP
+.B ||
+逻辑或 (OR)
+.TP
+.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP
+条件求值
+.TP
+.B = *= /= %= += \-= <<= >>= &= ^= |=
+赋值
+.TP
+.B \fIexpr1\fP , \fIexpr2\fP
+逗号表达式
+.PD
+.PP
+shell 变量可以作为操作数;在表达式求值之前会进行参数扩展。
+在表达式中,可以用名称引用 shell 变量,不必使用参数扩展的语法。
+变量被引用时,其值被作为算术表达式来求值。
+shell 变量用于表达式中时,不必启用整数属性。
+.PP
+以 0 为前导的常量被当作八进制数,以 0x 或 0X 作为前导表明是十六进制。
+其他情况下,数字的形式是 [\fIbase#\fP]n,这里 \fIbase\fP 是一个 2 到 64
+的十进制数值,作为数字的基数,\fIn\fP 是在这个基数中数字的值。
+如果忽略了 \fIbase#\fP,将以 10 为基数。大于 10 的数字依次以小写字母,
+大写字母,@ 和 _ 表示。如果 \fIbase\fP 小于或等于 36,在表示 10 与 35 之间
+的数字时小写字母和大写字母可以互换。
+.PP
+操作符根据优先级顺序进行求值。圆括号中的子表达式被最先求值,可能会
+超越上面的优先级规则。
+.SH 条件表达式("CONDITIONAL EXPRESSIONS")
+条件表达式用于 \fB[[\fP 复合命令以及内建命令 \fBtest\fP 和 \fB[\fP 中,
+用来测试文件属性,进行字符串和算术比较。表达式使用下面的单目或二进制操作构造。
+如果某操作的任何 \fIfile\fP 参数的形式是 \fI/dev/fd/n\fP,那么将检查
+文件描述符 \fIn\fP。如果某操作的 \fIfile\fP 参数是 \fI/dev/stdin\fP,
+\fI/dev/stdout\fP 或者 \fI/dev/stderr\fP 之一,将分别检查文件描述符 0,1 和 2。
+.sp 1
+.PD 0
+.TP
+.B \-a \fIfile\fP
+如果 \fIfile\fP 存在则为真。
+.TP
+.B \-b \fIfile\fP
+如果 \fIfile\fP 存在且为块设备则为真。
+.TP
+.B \-c \fIfile\fP
+如果 \fIfile\fP 存在且为字符设备则为真。
+.TP
+.B \-d \fIfile\fP
+如果 \fIfile\fP 存在且是一个目录则为真。
+.TP
+.B \-e \fIfile\fP
+如果 \fIfile\fP 存在则为真。
+.TP
+.B \-f \fIfile\fP
+如果 \fIfile\fP 存在且为普通文件则为真。
+.TP
+.B \-g \fIfile\fP
+如果 \fIfile\fP 存在且是设置组ID的 (sgid) 则为真。
+.TP
+.B \-h \fIfile\fP
+如果 \fIfile\fP 存在且为符号链接则为真。
+.TP
+.B \-k \fIfile\fP
+如果 \fIfile\fP 存在且设置了 ``sticky'' 位 (粘滞位) 则为真。
+.TP
+.B \-p \fIfile\fP
+如果 \fIfile\fP 存在且是一个命名管道 (FIFO) 则为真。
+.TP
+.B \-r \fIfile\fP
+如果 \fIfile\fP 存在且可读则为真。
+.TP
+.B \-s \fIfile\fP
+如果 \fIfile\fP 存在且大小大于零则为真。
+.TP
+.B \-t \fIfd\fP
+如果文件描述符
+.I fd
+是打开的且对应一个终端则为真。
+.TP
+.B \-u \fIfile\fP
+如果 \fIfile\fP 存在且是设置用户ID的 (suid) 则为真。
+.TP
+.B \-w \fIfile\fP
+如果 \fIfile\fP 存在且可写则为真。
+.TP
+.B \-x \fIfile\fP
+如果 \fIfile\fP 存在且可执行则为真。
+.TP
+.B \-O \fIfile\fP
+如果 \fIfile\fP 存在且为有效用户ID所拥有则为真。
+.TP
+.B \-G \fIfile\fP
+如果 \fIfile\fP 存在且为有效组ID所拥有则为真。
+.TP
+.B \-L \fIfile\fP
+如果 \fIfile\fP 存在且为符号链接则为真。
+.TP
+.B \-S \fIfile\fP
+如果 \fIfile\fP 存在且为套接字则为真。
+.TP
+.B \-N \fIfile\fP
+如果 \fIfile\fP 存在且上次读取后被修改过则为真。
+.TP
+\fIfile1\fP \-\fBnt\fP \fIfile2\fP
+如果 \fIfile1\fP 比 \fIfile2\fP 要新 (根据修改日期),或者
+如果 \fIfile1\fP 存在而 \fIfile2\fP 不存在,则为真。
+.TP
+\fIfile1\fP \-\fBot\fP \fIfile2\fP
+如果 \fIfile1\fP 比 \fIfile2\fP 更旧,或者
+如果 \fIfile1\fP 不存在而 \fIfile2\fP 存在,则为真。
+.TP
+\fIfile1\fP \fB\-ef\fP \fIfile2\fP
+如果 \fIfile1\fP 和 \fIfile2\fP 指的是相同的设备和 inode 号则为真。
+.TP
+.B \-o \fIoptname\fP
+如果启用了 shell 选项
+.I optname
+则为真。参见下面对内建命令
+.B set
+的
+.B \-o
+选项的描述中的选项列表。
+.TP
+.B \-z \fIstring\fP
+如果 \fIstring\fP 的长度为 0 则为真。
+.TP
+.B \-n \fIstring\fP
+.TP
+\fIstring\fP
+如果 \fIstring\fP 的长度非 0 则为真。
+.TP
+\fIstring1\fP \fB==\fP \fIstring2\fP
+如果字符串相等则为真。\fB=\fP 可以用于使用 \fB==\fP 的场合来兼容 POSIX 规范。
+.TP
+\fIstring1\fP \fB!=\fP \fIstring2\fP
+如果字符串不相等则为真。
+.TP
+\fIstring1\fP \fB<\fP \fIstring2\fP
+如果 \fIstring1\fP 在当前语言环境的字典顺序中排在 \fIstring2\fP 之前则为真。 
+.TP
+\fIstring1\fP \fB>\fP \fIstring2\fP
+如果 \fIstring1\fP 在当前语言环境的字典顺序中排在 \fIstring2\fP 之后则为真。 
+.TP
+.I \fIarg1\fP \fBOP\fP \fIarg2\fP
+.SM
+.B OP
+是
+.BR \-eq ,
+.BR \-ne ,
+.BR \-lt ,
+.BR \-le ,
+.BR \-gt ,
+或
+.BR \-ge
+之一。这些算术二进制操作返回真,如果 \fIarg1\fP 与 \fIarg2\fP 分别是
+相等,不等,小于,小于或等于,大于,大于或等于关系。
+.I Arg1
+和
+.I arg2
+可以是正/负整数。
+.PD
+.SH 简单命令扩展("SIMPLE COMMAND EXPANSION")
+当执行一个简单命令时,shell 进行下列扩展,赋值和重定向,从左到右。
+.IP 1.
+解释器标记为与变量赋值 (在命令名之前的) 和重定向有关的词被保存等待随后处理。
+.IP 2.
+并非变量赋值或重定向的词被扩展。如果扩展后仍然有词保留下来,第一个词被
+作为命令名,其余词是参数。
+.IP 3.
+重定向按照上面
+.SM
+.BR REDIRECTION
+中讲到的规则进行。
+.IP 4.
+每个变量赋值中 \fB=\fP 之后的文本在赋予变量之前要经过波浪线扩展,
+参数扩展,命令替换,算术扩展和引用删除。
+.PP
+如果没有得到命令名,变量赋值影响当前 shell 环境。否则,变量被加入
+被执行的命令的环境中,不影响当前 shell 环境。如果任何赋值动作试图
+为只读变量赋值,将导致出错,命令以非零状态值退出。
+.PP
+如果没有得到命令名,重定向仍会进行,但是不影响当前 shell 环境。
+重定向出错将使命令以非零状态值退出。
+.PP
+如果扩展后有命令名保留下来,那么执行过程如下所示。否则,命令退出。
+如果在任何扩展中包含命令替换,那么整个命令的退出状态是最后一个命令
+替换的退出状态。如果没有进行命令替换,命令以状态零退出。
+.SH "命令执行(COMMAND EXECUTION)"
+命令被拆分为词之后,如果结果是一个简单命令和可选的参数列表,将执行
+下面的操作。
+.PP
+如果命令名中没有斜杠,shell 试图定位命令位置。如果存在同名的 shell
+函数,函数将被执行,像上面
+.SM
+.BR FUNCTIONS 
+中讲到的一样。如果名称不是一个函数,shell 从 内建命令中搜索它。如果找到
+对应命令,它将被执行。
+.PP
+如果名称既不是 shell 函数也不是一个内建命令,并且没有包含斜杠,
+.B bash
+搜索
+.SM
+.B PATH
+的每个成员,查找含有此文件名 (可执行文件) 的目录。
+.B Bash
+使用散列表来储存可执行文件的全路径 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+中的
+.B hash。
+只有在散列表中没有找到此命令,才对
+.SM
+.B PATH
+进行完整的搜索。如果搜索不成功,shell 输出错误消息,返回退出状态 127。
+.PP
+如果搜索成功,或者命令中包含一个或多个斜杠,shell 在单独的执行环境中
+执行这个程序。参数 0 被设置为所给名称;命令的其他参数被设置为所给的参数,
+如果有的话。
+.PP
+如果执行失败,因为文件不是可执行格式,并且此文件不是目录,就假定它是
+一个 \fIshell script\fP (脚本),一个包含 shell 命令的文件。此时将孵化 
+(spawn) 出一个子 shell 来执行它。子 shell 重新初始化自身,效果就好像是
+执行了一个新的 shell 来处理脚本一样,但是父 shell 保存的命令位置仍然被
+保留 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+中的
+.B hash)。
+.PP
+如果程序是以
+.BR #!
+开头的文件,那么第一行的其余部分指定了这个程序的解释器。
+shell 执行指定的解释器,如果操作系统不会自行处理这种可执行文件格式的话。
+解释器的参数由下面三部分组成:程序第一行中解释器名称之后的可选的一个参数,
+程序的名称,命令行参数,如果有的话。
+.SH "命令执行环境(COMMAND EXECUTION ENVIRONMENT)"
+shell 有 \fIexecution environment\fP (执行环境) 的概念,由下列内容组成:
+.sp 1
+.IP \(bu
+shell 启动时继承的打开的文件,例如在内建命令 \fBexec\fP 中使用重定向
+修改的结果
+.IP \(bu
+当前工作目录,使用 \fBcd\fP,\fBpushd\fP 或者 \fBpopd\fP 设置,或是由
+shell 在启动时继承得到
+.IP \(bu
+文件创建模式掩码,使用 \fBumask\fP 设置或是从 shell 的父进程中继承得到
+.IP \(bu
+当前陷阱,用 \fBtrap\fP 设置
+.IP \(bu
+shell 参数,使用变量赋值或者 \fBset\fP 设置,或者是从父进程的环境中继承得到
+.IP \(bu
+shell 函数,在执行中定义或者是从父进程的环境中继承得到
+.IP \(bu
+设为允许的选项,在执行时设置 (要么是默认允许的,要么是命令行给出的) 或者是
+用 \fBset\fP 设置
+.IP \(bu
+用 \fBshopt\fP 设为允许的选项
+.IP \(bu
+用 \fBalias\fP 定义的 shell 别名
+.IP \(bu
+各种进程号,包含后台作业的进程号,\fB$$\fP 的值,以及 \fB$PPID\fP 的值
+.PP
+当并非 shell 函数或内置命令的简单命令执行时,它在一个由下述内容组成的
+单独的执行环境中启动。除非另外说明,值都是从 shell 中继承的。
+.sp 1
+.IP \(bu
+shell 打开的文件,加上对命令使用重定向修改和添加的文件
+.IP \(bu
+当前工作目录
+.IP \(bu
+文件创建模式掩码
+.IP \(bu
+标记为导出 (export) 的 shell 变量,以及传递到环境中为这个命令导出的变量
+.IP \(bu
+shell 捕捉的陷阱被重置为从 shell 的父进程中继承的值,shell 忽略的陷阱
+也被忽略
+.PP
+在单独的环境中启动的命令不能影响 shell 的执行环境。
+.PP
+命令替换和异步命令都在子 shell 环境中执行。子 shell 环境是原有 shell 
+环境的赋值,但 shell 捕捉的陷阱被重置为 shell 启动时从父进程中继承的值。
+作为管道一部分来执行的内建命令也在一个子 shell 环境中执行。对子 shell
+环境所作修改不能影响到原有 shell 的执行环境。
+.PP
+如果命令后面是 \fB&\fP 并且没有启用作业控制,命令的默认标准输入将是空文件
+\fI/dev/null\fP。否则,被执行的命令从调用它的 shell 中继承被重定向修改的
+文件描述符。
+.SH 环境(ENVIRONMENT)
+当一个程序执行时,它被赋予一个字符串数组,成为环境
+.IR environment 。
+它是一个
+名称-值对 (\fIname\fP\-\fIvalue\fP) 的列表,形式是
+.IR "name\fR=\fPvalue" .
+.PP
+shell 提供了多种操作环境的方法。启动时,shell 扫描自身的环境,为每个找到
+的名字创建一个参数,自动地将它标记为
+.I export
+(向子进程导出的)。被执行的命令继承了这个环境。
+.B export
+和
+.B declare \-x
+命令允许参数和函数被加入到环境中或从环境中删除。如果环境中参数的值
+被修改,新值成为环境的一部分,替换了旧值。所有被执行的命令继承的环境
+包含 shell 的初始环境 (可能值被修改过),减去被
+.B unset
+命令删除的,加上通过
+.B export
+和
+.B declare \-x
+命令添加的部分。
+.PP
+可以在任何
+.I simple command
+或函数的环境中设定暂时有效的参数,只要将参数赋值放在命令前面就可以了,
+参见上面
+.SM
+.BR PARAMETERS
+的描述。这些赋值语句只在这个命令的环境中有效。
+.PP
+如果设置了内建命令
+.B set
+的
+.B \-k
+选项,
+.I 所有的
+变量赋值都将放到命令的环境中,不仅是在命令名前面的那些。
+.PP
+当
+.B bash
+执行一个外部命令时,变量
+.B _
+被设置为命令的文件全名,然后被传递到命令的环境之中。
+.SH 退出状态("EXIT STATUS")
+从 shell 的角度看,一个命令退出状态是 0 意味着成功退出。
+退出状态是 0 表明成功。非零状态值表明失败。当命令收到 fatal signal \fIN\fP
+退出时,bash 使用 128+\fIN\fP 作为它的退出状态。
+.PP
+如果没有找到命令,为执行它而创建的子进程返回 127。如果找到了命令但是
+文件不可执行,返回状态是 126。
+.PP
+如果命令由于扩展或重定向错误而失败,退出状态大于零。
+.PP
+shell 内建命令如果成功返回 0(\fItrue\fP),执行时出错则返回非零 (\fIfalse\fP)。
+所有内建命令返回 2 来指示不正确的用法。
+.PP
+\fBBash\fP 自身返回最后执行的命令的退出状态,除非发生了语法错误,
+这时它返回非零值。参见下面的内建命令 \fBexit\fP。
+.SH 信号(SIGNALS)
+如果 \fBbash\fP 是交互的,没有设定任何陷阱,它忽略
+.SM
+.B SIGTERM
+(这样 \fBkill 0\fP 不会杀掉交互的 shell)。
+.SM
+.B SIGINT
+被捕获并处理 (从而使内建命令 \fBwait\fP 可以中断)。在所有情况下,
+\fBbash\fP 忽略
+.SM
+.BR SIGQUIT 。
+如果正在使用作业控制,
+.B bash
+忽略
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+和
+.SM
+.BR SIGTSTP .
+.PP
+\fBbash\fP 开始的并行作业的信号处理句柄都设置为 shell 从父进程中继承
+的值。如果不是正在使用作业控制,异步命令还忽略
+.SM
+.B SIGINT
+和
+.SM
+.B SIGQUIT 。
+作为命令替换结果运行的命令忽略键盘产生的作业控制信号
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+和
+.SM
+.BR SIGTSTP .
+.PP
+如果收到信号
+.SM
+.BR SIGHUP,
+shell 默认退出。在退出前,交互的 shell 向所有作业,运行的或停止的,发送
+.SM
+.B SIGHUP
+信号。shell 向停止的作业发出
+.SM
+.B SIGCONT
+信号来保证它们会收到
+.SM
+.BR SIGHUP .
+要阻止 shell 向特定的作业发送信号,应当使用内建命令
+.B disown
+将作业从作业表中删除 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节) 或者使用
+.BR "disown \-h" 
+来标记为不接受
+.SM
+.B SIGHUP。
+.PP
+如果使用
+.BR shopt
+设置了 shell 选项
+.B huponexit,
+在交互的登录 shell 退出时
+.B bash
+向所有作业发出
+.SM
+.B SIGHUP
+信号。
+.PP
+当 \fBbash\fP 等待命令执行结束时,如果收到已设置了陷阱的信号,陷阱 
+(trap) 将不会执行,直到命令结束。
+当 \fBbash\fP 通过内建命令 \fBwait\fP 等待异步命令时,如果收到已设置
+了陷阱的信号,将使得内建命令 \fBwait\fP 立即以大于 128 的状态值返回。
+接着,陷阱将立即被执行。
+.SH 作业控制("JOB CONTROL")
+.I Job control
+(作业控制) 指的是可以选择停止 (\fIsuspend\fP,挂起) 进程执行,并且
+可以在之后继续 (\fIresume\fP,恢复) 执行的能力。用户一般在交互的人机界面
+中使用这种功能。界面是由系统的终端驱动和
+.BR bash 
+共同提供的。
+.PP
+shell 将每个管道分配给一个
+.I 作业(job)。
+它保存一个当前运行的作业表,可以用
+.B jobs
+命令来列出。当
+.B bash
+启动一个异步的作业时
+.IR (background,后台执行),
+它输出这样的一行:
+.RS
+.PP
+[1] 25647
+.RE
+.PP
+表明这个作业的作业号是 1,与作业相关连的管道中最后一个进程的
+进程ID是 15647。管道中所有进程都是同一个作业的成员。
+.B Bash
+使用
+.I 作业(job)
+概念作为作业控制的基础。
+.PP
+为简化作业控制的用户界面的实现,操作系统负责管理“当前终端的进程组” 
+(\fIcurrent terminal process group ID\fP) 的概念。这个进程组的成员
+(进程组 ID 是当前终端进程组 ID 的进程) 可以收到键盘产生的信号,例如
+.SM
+.BR SIGINT .
+这些进程被称为
+.IR foreground (前台的)。
+.I Background (后台的)
+进程是那些进程组 ID 与终端不同的进程;这些进程不会收到键盘产生的信号。
+只有前台进程可以从终端读或向终端写。后台进程试图读/写终端时,将收到终端驱动程序发送的
+.SM
+.B SIGTTIN (SIGTTOU)
+信号。这个信号如果没有加以捕捉,将挂起这个进程。
+.PP
+如果
+.B bash
+运行其上的操作系统支持作业控制,
+.B bash
+会包含使用它的设施。在一个进程正在运行的时候键入
+.I suspend 挂起
+字符 (通常是
+.BR ^Z ,
+Control-Z) 将使这个进程暂停,将控制权还给
+.BR bash .
+输入
+.I "delayed suspend", 延时挂起
+字符 (通常是
+.BR ^Y ,
+Control-Y) 将使这个进程在试图从终端读取输入时暂停,将控制权还给
+.BR bash .
+用户接下来可以控制此作业的状态,使用
+.B bg
+命令使它在后台继续运行,
+.B fg
+命令使它在前台继续运行,或
+.B kill
+命令将它杀死。\fB^Z\fP 会立即起作用,并且还有使等待中的 (pending) 输出和输入被忽略的附加副作用。
+.PP
+有很多方法来指代 shell 中的作业。字符
+.B %
+可以引入作业名。编号为
+.I n
+的作业可以用
+.BR %n
+的形式来指代。作业也可以用启动它的名称的前缀,或者命令行中的子字符串来指代。例如,
+.B %ce
+指代一个暂停的
+.B ce
+作业。如果前缀匹配多于一个作业,
+.B bash
+报错。另一方面,使用
+.BR %?ce ,
+可以指代任何命令行中包含字符串
+.B ce
+的作业。如果子字符串匹配多于一个作业,
+.B bash
+报错。符号
+.B %%
+和
+.B %+
+指代 shell 意义上的
+.IR "current job",当前作业,
+也就是前台被暂停的最后一个作业,或者是在后台启动的作业。
+.I "previous job",前一作业
+可以使用
+.BR %\- 
+来指代。在有关作业的输出信息中 (例如,命令
+.B jobs
+的输出),当前作业总是被标记为
+.BR + ,
+前一作业标记为
+.BR \- .
+.PP
+简单地给出作业名,可以用来把它放到前台:
+.B %1
+是
+\fB``fg %1''\fP
+的同义词,将作业 1 从后台放到前台。类似的,
+.B ``%1 &''
+在后台恢复作业 1,与
+\fB``bg %1''\fP
+等价。
+.PP
+当某个作业改变状态时,shell 立即可以得知。通常,
+.B bash
+等待直到要输出一个提示符时,才会报告作业的状态变化,从而不会打断其他输出。
+如果启用了内建命令
+.B set
+的
+.B \-b
+选项,
+.B bash
+将立即报告这些变化。对
+.SM
+.B SIGCHLD
+信号的陷阱将在每个子进程退出时执行。
+.PP
+如果在作业暂停时试图退出
+.B bash,
+shell 打印一条警告消息。命令
+.B jobs
+可能被用来检查作业的状态。如果再次试图退出,中间没有其他命令,shell 不会打印
+其他警告,暂停的作业将终止。
+.SH 提示符(PROMPTING)
+在交互执行时,
+.B bash
+在准备好读入一条命令时显示主提示符
+.SM
+.B PS1,
+在需要更多的输入来完成一条命令时显示
+.SM
+.B PS2。
+.B Bash
+允许通过插入一些反斜杠转义的特殊字符来定制这些提示字符串,这些字符被如下解释:
+.RS
+.PD 0
+.TP
+.B \ea
+一个 ASCII 响铃字符 (07)
+.TP
+.B \ed
+日期,格式是 "星期 月份 日" (例如,"Tue May 26")
+.TP
+.B \eD{\fIformat\fP}
+\fIformat\fP 被传递给 \fIstrftime\fP(3),结果被插入到提示字符串中;
+空的 \fIformat\fP 将使用语言环境特定的时间格式。花括号是必需的
+.TP
+.B \ee
+一个 ASCII 转义字符 (033)
+.TP
+.B \eh
+主机名,第一个 `.' 之前的部分
+.TP
+.B \eH
+主机名
+.TP
+.B \ej
+shell 当前管理的作业数量
+.TP
+.B \el
+shell 的终端设备名的基本部分
+.TP
+.B \en
+新行符
+.TP
+.B \er
+回车
+.TP
+.B \es
+shell 的名称,
+.B $0
+的基本部分 (最后一个斜杠后面的部分)
+.TP
+.B \et
+当前时间,采用 24小时制的 HH:MM:SS 格式
+.TP
+.B \eT
+当前时间,采用 12小时制的 HH:MM:SS 格式
+.TP
+.B \e@
+当前时间,采用 12小时制上午/下午 (am/pm) 格式
+.TP
+.B \eA
+当前时间,采用 24小时制上午/下午格式
+.TP
+.B \eu
+当前用户的用户名
+the username of the current user
+.TP
+.B \ev
+\fBbash\fP 的版本 (例如,2.00)
+.TP
+.B \eV
+\fBbash\fP 的发行编号,版本号加补丁级别 (例如,2.00.0)
+.TP
+.B \ew
+当前工作目录
+.TP
+.B \eW
+当前工作目录的基本部分
+.TP
+.B \e!
+此命令的历史编号
+.TP
+.B \e#
+此命令的命令编号
+.TP
+.B \e$
+如果有效 UID 是 0,就是
+.BR # ,
+其他情况下是
+.B $
+.TP
+.B \e\fInnn\fP
+对应八进制数 \fInnn\fP 的字符
+.TP
+.B \e\e
+一个反斜杠
+.TP
+.B \e[
+一个不可打印字符序列的开始,可以用于在提示符中嵌入终端控制序列
+.TP
+.B \e]
+一个不可打印字符序列的结束
+.PD
+.RE
+.PP
+命令编号和历史编号通常是不同的:历史编号是命令在历史列表中的位置,可能
+包含从历史文件中恢复的命令 (参见下面的
+.SM
+.B HISTORY 历史
+章节),而命令编号是当前 shell 会话中执行的命令序列中,命令的位置。
+字符串被解码之后,它将进行扩展,要经过
+parameter expansion, command substitution, arithmetic
+expansion 和 quote removal, 最后要经过 shell 选项
+.B promptvars
+处理 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节中,对命令
+.B shopt
+的描述)。
+.SH readline库(READLINE)
+这是在交互 shell 中处理读取输入的库,除非在 shell 启动时给出了
+.B \-\-noediting
+选项。默认情况下,行编辑命令类似于 emacs 中的那些。也可以使用 vi 样式的行编辑界面。
+要在 shell 运行之后关闭行编辑,使用内置命令
+.B set
+的
+.B +o emacs
+或
+.B +o vi
+选项 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.SS "Readline Notation"
+.PP
+在这个小节中,将使用 emacs 样式的记法来表述按键。Ctrl 键记为 C\-\fIkey\fR,
+例如,C\-n 意思是 Ctrl\-N。类似的,
+.I meta
+键记为 M\-\fIkey\fR,因此 M\-x 意味着 Meta\-x。(在没有
+.I meta
+键的键盘上,M\-\fIx\fP 意思是 ESC\-\fIx\fP,也就是说,按下 Esc 键,然后按
+.I x
+键。这使得 Esc 成为 \fImeta prefix\fP。M\-C\-\fIx\fP 的组合意思是 Esc\-Ctrl\-\fIx\fP,
+也就是按 Esc 键,然后按住 Ctrl 键,同时按
+.I x
+键。)
+.PP
+readline 命令可以有数字的
+.IR 参数 (arguments),
+一般作为重复的计数。有些时候,它是重要参数的标记。给向前方进行的命令 
+(例如,\fBkill\-line\fP) 传递负数参数,将使得命令向反方向进行。
+下面的命令如果接受参数时的行为与此不同,将另行说明。
+.PP
+当命令被描述为剪切 (\fIkilling\fP) 文本时,被删除的文本被保存,等待将来使用
+(粘贴,\fIyanking\fP)。被剪切的文本保存在 \fIkill ring\fP 中。连续的剪切使得
+文本被依次加入到一个单元中,可以一次被粘贴。不剪切文本的命令将 kill ring 中的文本分离。
+.SS "Readline Initialization 初始化"
+.PP
+readline 可以通过将命令放入初始化文件 (\fIinputrc\fP 文件) 来定制。
+文件名从变量
+.SM
+.B INPUTRC
+的值中获取。如果没有设置这个变量,默认是
+.IR ~/.inputrc .
+当使用 readline 库的程序启动时,将读取初始化文件,按键关联和变量将被设置。
+readline 初始化文件中只允许有很少的基本构造。
+空行被忽略。以 \fB#\fP 开始的行是注释。以 \fB$\fP 开始的行指示了有条件的构造。
+其他行表示按键关联和变量设置。
+.PP
+默认的按键关联可以使用
+.I inputrc 
+文件改变。其他使用这个库的程序可以添加它们自己的命令和关联。
+.PP
+例如,将
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+或
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+放入
+.I inputrc
+将使得 M\-C\-u 执行 readline 命令
+.IR universal\-argument .
+.PP
+可以识别下列字符的符号名称:
+.IR RUBOUT ,
+.IR DEL ,
+.IR ESC ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR SPC ,
+.IR SPACE ,
+和
+.IR TAB .
+.PP
+在命令名之外,readline 允许将按键与一个字符串关联,当按下这个键时,将插入这个字符串 (一个宏,\fImacro\fP)。
+.SS "Readline Key Bindings"
+.PP
+.I inputrc
+文件中的控制按键关联的语法非常简单。需要的内容是命令名或宏,以及它应当关联到的按键序列。
+名称可以以两种方式指定:一个按键的符号名称,可能带有 \fIMeta\-\fP 或 \fIControl\-\fP 前缀,或者是一个按键序列。
+.PP
+当使用 \fBkeyname\fP:\^\fIfunction\-name\fP 或 \fImacro\fP 形式时,
+.I keyname
+是按键以英文拼写的名称。例如:
+.sp
+.RS
+Control-u: universal\-argument
+.br
+Meta-Rubout: backward-kill-word
+.br
+Control-o: "> output"
+.RE
+.LP
+在上述例子中,
+.I C\-u
+被关联到函数
+.BR universal\-argument ,
+.I M\-DEL
+被关联到函数
+.BR backward\-kill\-word ,
+而
+.I C\-o
+被关联为运行右边给出的宏 (意思是,将向行中插入
+.if t \f(CW> output\fP
+.if n ``> output''
+)。
+.PP
+在第二种形式中,\fB"keyseq"\fP:\^\fIfunction\-name\fP 或 \fImacro\fP,
+.B keyseq
+不同于上面的
+.B keyname,
+表示整个按键序列的字符串可以通过将按键序列放在双引号引用中来指定。
+可以使用一些 GNU Emacs 样式的按键序列,如下例所示,但是不会识别按键的符号名称。
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+在上述例子中,
+.I C\-u
+被又一次关联到函数
+.BR universal\-argument .
+.I "C\-x C\-r"
+被关联到函数
+.BR re\-read\-init\-file ,
+而
+.I "ESC [ 1 1 ~"
+被关联为插入文本
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+GNU Emacs 样式的转义序列的全集为:
+.RS
+.PD 0
+.TP
+.B \eC\-
+Ctrl 前缀
+.TP
+.B \eM\-
+Meta 前缀
+.TP
+.B \ee
+一个 Esc 字符
+.TP
+.B \e\e
+反斜杠
+.TP
+.B \e"
+字面上的 "
+.TP
+.B \e'
+字面上的 '
+.RE
+.PD
+.PP
+除了 GNU Emacs 样式的转义序列,还有一系列反斜杠转义序列可用:
+.RS
+.PD 0
+.TP
+.B \ea
+响铃
+.TP
+.B \eb
+回退
+.TP
+.B \ed
+删除
+.TP
+.B \ef
+进纸
+.TP
+.B \en
+新行符
+.TP
+.B \er
+回车
+.TP
+.B \et
+水平跳格
+.TP
+.B \ev
+竖直跳格
+.TP
+.B \e\fInnn\fP
+一个八比特字符,它的值是八进制值 \fInnn\fP (一到三个八进制数字)。
+.TP
+.B \ex\fIHH\fP
+一个八比特字符,它的值是十六进制值 \fIHH\fP (一到两个十六进制数字)。
+.RE
+.PD
+.PP
+输入宏的文本时,必须使用单引号或双引号引用来表明是宏的定义。
+没有引用的文本被当作函数名。在宏的定义体中,上述反斜杠转义被扩展。
+反斜杠将引用宏文本中所有其他字符,包括 " 和 '。
+.PP
+.B Bash
+允许使用内建命令
+.B bind
+来显示和修改当前 readline 按键关联。在交互使用中可以用内建命令
+.B set
+的
+.B \-o 
+选项切换到编辑模式 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.SS "Readline Variables"
+.PP
+readline 包含额外的可用于定制它的行为的变量。可以在
+.I inputrc
+文件中设置变量,使用如下形式的语句:
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+除非另外说明,readline 变量的值总是
+.B On
+或
+.BR Off。
+变量和它们的默认值是:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+控制了当 readline 需要鸣终端响铃时的动作。如果设置为 \fBnone\fP,
+readline 不会鸣铃。如果设置为 \fBvisible\fP,readline 使用可视的响铃,如果可用的话。
+如果设置为 \fBaudible\fP,readline 试着鸣终端响铃。
+.TP
+.B comment\-begin (``#'')
+这个字符串在执行 readline 命令
+.B insert\-comment
+时被插入。这个命令在 emacs 模式下被关联为
+.B M\-#,
+在 vi 模式下是
+.B #。
+.TP
+.B completion\-ignore\-case (Off)
+如果设置为 \fBOn\fP,readline 进行大小写不敏感的文件名匹配和补全。
+.TP
+.B completion\-query\-items (100)
+这个变量决定着何时向用户询问,是否查看由命令 \fBpossible\-completions\fP 产生的可能的补全数量。
+它可以设为任何大于或等于 0 的值。如果可能的补全数量大于或等于这个变量的值,
+用户将被提示是否愿意查看它们;否则将直接在终端上列出它们。
+.TP
+.B convert\-meta (On)
+如果设置为 \fBOn\fP,readline 将把设置了最高位的字符转换为 ASCII 按键序列,方法是
+去掉第八位,前缀一个转义字符 (实际上,使用 Esc 作为转义符 \fImeta prefix\fP)。
+.TP
+.B disable\-completion (Off)
+如果设置为 \fBOn\fP,readline 将禁止词的补全。补全字符将被插入到行中,就好像它们被
+映射为 \fBself-insert\fP。
+.TP
+.B editing\-mode (emacs)
+控制 readline 的按键关联集合与 \fIemacs\fP 还是 \fIvi\fP 相似。
+.B editing\-mode
+可以设置为
+.B emacs
+或
+.BR vi。
+.TP
+.B enable\-keypad (Off)
+如果设置为 \fBOn\fP ,readline 在调用时将试图启用辅助键盘。
+一些系统需要设置这个来启用方向键。
+.TP
+.B expand\-tilde (Off)
+如果设置为 \fBOn\fP,readline 试图进行词的补全时会进行波浪线扩展。
+.TP
+.B history-preserve-point
+如果设置为 \fBOn\fP,历史代码试着在 \fBprevious-history\fP 或 \fBnext-history\fP
+取回的每个历史行的相同位置中加点。
+.TP
+.B horizontal\-scroll\-mode (Off)
+如果设置为 \fBOn\fP,将使得 readline 使用单行来显示,如果它比屏幕宽度要长,就在
+单一的屏幕行上水平滚动输入行,而不是自动回绕到新行。
+.TP
+.B input\-meta (Off)
+如果设置为 \fBOn\fP,readline 将允许八比特输入 (也就是说,它不会将它读入的字符中最高位删除),
+不管它能支持什么样的终端要求。名称
+.B meta\-flag
+与此变量同义。
+.TP
+.B isearch\-terminators (``C\-[C\-J'')
+用于终止增量的搜索,不再将字符当作命令执行的字符串。
+如果这个变量没有赋值,字符串 \fIEsc\fP 和 \fIC\-J\fP 将终止增量的搜索。
+.TP
+.B keymap (emacs)
+设置当前 readline 键盘映射。有效的键盘映射名称是 
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-command\fP,还有 
+.IR vi\-insert。
+\fIvi\fP 等价于 \fIvi\-command\fP; \fIemacs\fP 等价于
+\fIemacs\-standard\fP。默认值是
+.IR emacs ;
+.B editing\-mode
+的值也会影响默认的键盘映射。
+.TP
+.B mark\-directories (On)
+如果设置为 \fBOn\fP,补全的目录名会添加一个斜杠。
+.TP
+.B mark\-modified\-lines (Off)
+如果设置为 \fBOn\fP,已被修改的历史行将显示为前缀一个星号 (\fB*\fP)。
+.TP
+.B mark\-symlinked\-directories (Off)
+如果设置为 \fBOn\fP,补全的名称如果是到目录的符号链接,则将添加一个斜杠 (与
+\fBmark\-directories\fP 的值同样处理)。
+.TP
+.B match\-hidden\-files (On)
+这个变量,如果设置为 \fBOn\fP,将使得 readline 在进行文件名补全时,匹配以 `.' 开头的文件 (隐藏文件),
+除非用户在要补全的文件名中给出了前导的 `.'。
+.TP
+.B output\-meta (Off)
+如果设置为 \fBOn\fP,readline 将直接显示设置了第八位的字符,而不是转化为一个带 meta 前缀的转义序列。
+.TP
+.B page\-completions (On)
+如果设置为 \fBOn\fP,readline 将使用内建的类似 \fImore\fP 的分页程序,
+来每次显示一屏可能的补全。
+.TP
+.B print\-completions\-horizontally (Off)
+如果设置为 \fBOn\fP,readline 将匹配的补全按字母表顺序排序,然后水平排列显示出来,
+而不是在屏幕上竖直排列显示。
+.TP
+.B show\-all\-if\-ambiguous (Off)
+这将调整补全函数的默认行为。如果设置为
+.BR on ,
+拥有多于一个可能的补全的词将立即列出所有匹配,而不是鸣响铃。
+.TP
+.B visible\-stats (Off)
+如果设置为 \fBOn\fP,在列出可能的补全时,将在文件名后面添加一个表示文件类型的字符,
+文件类型由 \fIstat\fP(2) 报告。
+.PD
+.SS "Readline Conditional Constructs"
+.PP
+readline 实现了一种功能,本质上与 C 预处理器进行条件编译的功能类似,
+允许根据测试的结果进行键盘关联和变量设置。其中使用了四种解释器指令。
+.IP \fB$if\fP
+.B $if
+结构允许根据编辑模式,正在使用的终端,使用 readline 的应用程序来设定按键关联。
+测试的文本包括一行,直到行尾;不必用字符来隔离它。
+.RS
+.IP \fBmode\fP
+\fB$if\fP 结构的 \fBmode=\fP 形式用于测试 readline 处于 emacs 还是 vi 模式。
+这可以与命令 \fBset keymap\fP 结合使用,例如,设置 \fIemacs\-standard\fP 和 \fIemacs\-ctlx\fP 
+键盘映射,仅当 readline 以 emacs 模式启动。
+.IP \fBterm\fP
+\fBterm=\fP 形式用于包含与终端相关的按键关联,也许是将按键序列输出与终端的功能键相关联。
+等号
+.B =
+右边的词被同终端的全名和名称中第一个 \fB\-\fP 前面的一部分相比较。
+例如,允许
+.I sun
+同时匹配
+.I sun
+和
+.IR sun\-cmd。
+.IP \fBapplication\fP
+\fBapplication\fP 结构用于包含应用程序相关的设置。每个使用 readline 的程序都设置 \fIapplication name\fP,
+初始化文件可以测试它的值。它可用于将一个按键序列与对特定的程序有用的功能相关联。
+例如,下列命令添加了一个按键序列,用以引用 bash 中当前的词或前一个词
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC\-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.RE
+.IP \fB$endif\fP
+上例中的这个命令,结束了一个 \fB$if\fP 命令。
+.IP \fB$else\fP
+如果测试失败,\fB$if\fP 指令中这个分支的命令将被执行。
+.IP \fB$include\fP
+这个指令使用单个文件名作为参数,从文件中读取命令和按键关联。例如,下列指令
+将读取 \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SS Searching
+.PP
+readline 提供了从命令历史中搜索包含给定字符串的行的命令 (参见下面的
+.SM
+.B HISTORY 历史
+章节)。有两种搜索模式:
+.I incremental
+和
+.IR non-incremental .
+.PP
+增量的搜索在用户结束输入搜索字符串时开始。在搜索字符串的每个字符被输入的同时,
+readline 显示与已输入的字符串匹配的下一个历史条目。
+增量的搜索只要求输入能找到期望的历史条目所需的那么多字符。
+\fBisearch-terminators\fP 变量中的字符用来终止一次增量的搜索。如果
+这个变量没有被赋值,Esc 和 Ctrl-J 字符串将结束一次增量的搜索。
+Ctrl-G 将取消一次增量的搜索,恢复初始的行。当搜索终止时,包含搜索字符串
+的历史条目成为当前行。
+.PP
+要从历史列表中找到其他匹配的条目,适当地键入 Ctrl-S 或 Ctrl-R。
+这样将在历史中向前/向后搜索下一个匹配已输入的搜索字符串的条目。
+其他关联到某个 readline 命令的按键序列将终止搜索并执行关联的命令。
+例如,\fInewline\fP 将终止搜索,接受当前行,从而执行历史列表中的命令。
+.PP
+readline 可以记住上次增量搜索的字符串。如果键入两次 Ctrl-R,中间没有
+输入任何字符来定义一个新的搜索字符串,那么将使用已记住的搜索字符串。
+.PP
+非增量的搜索将整个搜索字符串读入,然后才开始搜索匹配的历史条目。
+搜索字符串可以由用户输入,或者是当前行的内容的一部分。
+.SS "Readline Command Names"
+.PP
+下面列出的是命令的名称以及默认情况下它们关联的按键序列。
+命令名称如果没有对应的按键序列,那么默认是没有关联的。在下列描述中,
+点 (\fIpoint\fP) 指当前光标位置,标记 (\fImark\fP) 指命令 \fBset\-mark\fP 
+保存的光标位置。point 和 mark 之间的文本被称为范围 (\fIregion\fP)。
+.SS Commands for Moving 移动
+.PP
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+移动到当前行的开始。
+.TP
+.B end\-of\-line (C\-e)
+移动到当前行的结尾。
+.TP
+.B forward\-char (C\-f)
+向前移动一字。
+.TP
+.B backward\-char (C\-b)
+向后移动一字。
+.TP
+.B forward\-word (M\-f)
+向前移动到下一词尾。词由字符 (字母和数字) 组成。
+.TP
+.B backward\-word (M\-b)
+向后移动到当前或上一词首。
+.TP
+.B clear\-screen (C\-l)
+清除屏幕,保留当前行在屏幕顶端。有参数时,刷新当前行,不清屏。
+.TP
+.B redraw\-current\-line
+刷新当前行。
+.PD
+.SS Commands for Manipulating the History 操纵历史行
+.PP
+.PD 0
+.TP
+.B accept\-line (Newline, Return)
+接受这一行,不管光标在什么位置。如果行非空,将根据变量
+.SM
+.B HISTCONTROL
+的状态加入到历史列表中。如果行是修改过的历史行,将恢复该历史行到初始状态。
+.TP
+.B previous\-history (C\-p)
+从历史列表中取得前一个命令,从列表中向后移动。
+.TP
+.B next\-history (C\-n)
+从历史列表中取得后一个命令,从列表中向前移动。
+.TP
+.B beginning\-of\-history (M\-<)
+移动到历史中的第一行。
+.TP
+.B end\-of\-history (M\->)
+移动到输入历史行的末尾,也就是当前输入的行的末尾。
+.TP
+.B reverse\-search\-history (C\-r)
+从当前行开始向后搜索,按照需要在历史中向“上”移动。这是一个增量的搜索。
+.TP
+.B forward\-search\-history (C\-s)
+从当前行开始向前搜索,按照需要在历史中向“下”移动。这是一个增量的搜索。
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+从当前行开始向后,使用非增量搜索来查找用户给出的字符串。
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+从当前行开始向前,使用非增量搜索来查找用户给出的字符串。
+.TP
+.B history\-search\-forward
+从当前行开始向前搜索历史,查找从当前行首到 point 之间的字符串。
+这是一个非增量的搜索。
+.TP
+.B history\-search\-backward
+从当前行开始向后搜索历史,查找从当前行首到 point 之间的字符串。
+这是一个非增量的搜索。
+.TP
+.B yank\-nth\-arg (M\-C\-y)
+将前一个命令的第一个参数 (通常是上一行的第二个词) 插入到 point 位置。有参数
+.IR n
+时,将前一个命令的第 \fIn\fP 个词 (前一个命令中的词从 0 开始计数) 
+插入到 point 位置。负数参数则插入前一个命令倒数第 \fIn\fP 个词。
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+插入前一个命令的最后一个参数 (上一历史条目的最后一个词)。有参数时,
+行为类似于 \fByank\-nth\-arg\fP。后继的 \fByank\-last\-arg\fP 调用将
+从历史列表中向后移动,依次将每行的最后一个参数插入。
+.TP
+.B shell\-expand\-line (M\-C\-e)
+扩展行,像 shell 做的那样。其中包含别名和历史扩展,还有所有的 shell 词的扩展。
+参见下面的
+.SM
+.B HISTORY EXPANSION
+中关于历史扩展的描述。
+.TP
+.B history\-expand\-line (M\-^)
+在当前行进行历史扩展。参见下面的
+.SM
+.B HISTORY EXPANSION
+中关于历史扩展的描述。
+.TP
+.B magic\-space
+在当前行进行历史扩展,并插入一个空格。参见下面的
+.SM
+.B HISTORY EXPANSION
+中关于历史扩展的描述。
+.TP
+.B alias\-expand\-line
+在当前行进行别名扩展,参见上面的
+.SM
+.B ALIASES
+中关于别名扩展的描述。
+.TP
+.B history\-and\-alias\-expand\-line
+在当前行进行历史和别名扩展。
+.TP
+.B insert\-last\-argument (M\-.\^, M\-_\^)
+与 \fByank\-last\-arg\fP 同义。
+.TP
+.B operate\-and\-get\-next (C\-o)
+接受当前行,加以执行,从历史中取出相对当前行的下一行进行编辑。
+任何参数都被忽略。
+.TP
+.B edit\-and\-execute\-command (C\-xC\-e)
+启动一个编辑器,编辑当前命令行,将结果作为 shell 命令运行。
+\fBBash\fP 将依次试着运行
+.SM
+.BR $FCEDIT ,
+.SM
+.BR $EDITOR ,
+和 \fIemacs\fP 作为编辑器。
+.PD
+.SS Commands for Changing Text 改变文本
+.PP
+.PD 0
+.TP
+.B delete\-char (C\-d)
+删除 point 处的字符。如果 point 在行首,行中没有字符,最后一次输入的字符
+没有被关联到 \fBdelete\-char\fP,将返回
+.SM
+.BR EOF .
+.TP
+.B backward\-delete\-char (Rubout)
+删除光标之后的字符。当给出一个数值的参数时,保存删除的文本到 kill ring 中。
+.TP
+.B forward\-backward\-delete\-char
+删除光标下的字符,除非光标在行尾,此时删除光标后的字符。
+.TP
+.B quoted\-insert (C\-q, C\-v)
+将输入的下一字符保持原样添加到行中。例如,可以用它来插入类似 \fBC\-q\fP 的字符。
+.TP
+.B tab\-insert (C\-v TAB)
+插入一个跳格符号。
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+插入键入的字符。
+.TP
+.B transpose\-chars (C\-t)
+将 point 之前的字符向前移动,越过 point 处的字符,同时也改变 point 的位置。
+如果 point 在行尾,将调换 point 之前的两个字符。负数参数没有作用。
+.TP
+.B transpose\-words (M\-t)
+将 point 之前的词向前移动,越过 point 处的词,同时也改变 point 的位置。
+如果 point 在行尾,将调换行中的最后两个词。
+.TP
+.B upcase\-word (M\-u)
+将当前 (或下一个) 词变成全大写。有负值的参数时,将前一个词变为大写,
+但是不移动 point。
+.TP
+.B downcase\-word (M\-l)
+将当前 (或下一个) 词变成全小写。有负值的参数时,将前一个词变为小写,
+但是不移动 point。
+.TP
+.B capitalize\-word (M\-c)
+将当前 (或下一个) 词变为首字大写。有负值的参数时,将前一个词变为首字大写,
+但是不移动 point。
+.TP
+.B overwrite\-mode
+控制插入/改写模式。给出一个正整数参数时,切换为改写模式。给出一个非正数
+参数时,切换为插入模式。这个命令只影响 \fBemacs\fP 模式;\fBvi\fP 模式
+的改写与此不同。每个对 \fIreadline()\fP 的调用都以插入模式开始。在改写模式下,
+关联到 \fBself\-insert\fP 的字符替换 point 处的字符,而不是将它推到右边。
+关联到 \fBbackward\-delete\-char\fP 的字符以空格替换 point 前的字符。
+默认情况下,这个命令没有关联。
+.PD
+.SS Killing and Yanking 剪切和粘贴
+.PP
+.PD 0
+.TP
+.B kill\-line (C\-k)
+剪切从 point 到行尾的文本。
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+反向剪切到行首。
+.TP
+.B unix\-line\-discard (C\-u)
+反向剪切到行首。与 \fIbackward\-kill\-line\fP 没有什么区别。
+剪切的文本被保存于 kill\-ring 中。
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+剪切当前行中所有字符,不管 point 在什么位置。
+.TP
+.B kill\-word  (M\-d)
+剪切从 point 到当前词尾,或者如果 point 在词之间,那么剪切到下一词尾。
+.TP
+.B backward\-kill\-word (M\-Rubout)
+剪切 point 之后的词。词的边界与 \fBbackward\-word\fP 使用的相同。
+.TP
+.B unix\-word\-rubout (C\-w)
+剪切 point 之后的词,使用空白作为词的边界。剪切的文本被保存于 kill\-ring 中。
+.TP
+.B delete\-horizontal\-space (M\-\e)
+删除 point 两边的所有空格和跳格。
+.TP
+.B kill\-region
+剪切当前 region 的文本。
+.TP
+.B copy\-region\-as\-kill
+将 region 的文本复制到剪切缓冲区中。
+.TP
+.B copy\-backward\-word
+将 point 前面的词复制到剪切缓冲区中。
+词的边界与 \fBbackward\-word\fP 使用的相同。
+.TP
+.B copy\-forward\-word
+将 point 之后的词复制到剪切缓冲区中。
+词的边界与 \fBbackward\-word\fP 使用的相同。
+.TP
+.B yank (C\-y)
+将 kill\-ring 顶部的内容粘贴到 point 处的缓冲区中
+.TP
+.B yank\-pop (M\-y)
+轮转 kill\-ring,粘贴新的顶部内容。只能在
+.B yank
+或
+.BR yank\-pop
+之后使用。
+.PD
+.SS Numeric Arguments 数值参数
+.PP
+.PD 0
+.TP
+.B digit\-argument (M\-0, M\-1, ..., M\-\-)
+将这个数字加入已有的 (already accumulating) 参数中,或者开始新的参数。
+M\-\- 开始一个否定的参数。
+.TP
+.B universal\-argument
+这是指定参数的另一种方法。如果这个命令后面跟着一个或多个数字,
+可能还包含前导的负号,这些数字定义了参数。如果命令之后跟随着数字,再次执行
+.B universal\-argument
+将结束数字参数,但是其他情况下被忽略。有一种特殊情况,如果命令之后紧接着
+一个并非数字或负号的字符,下一命令的参数计数将乘以 4。
+参数计数初始是 1,因此第一次执行这个函数,使得参数计数为 4,
+第二次执行使得参数计数为 16,以此类推。
+.PD
+.SS Completing 补全
+.PP
+.PD 0
+.TP
+.B complete (TAB)
+试着对 point 之前的文本进行补全。
+.B Bash
+依次试着将文本作为一个变量 (如果文本以 \fB$\fP 开始),一个用户名
+(如果文本以 \fB~\fP 开始),主机名 (如果文本以 \fB@\fP 开始),或者命令 
+(以及别名和函数) 来补全。如果这些都没有匹配,将尝试文件名补全。
+.TP
+.B possible\-completions (M\-?)
+列出 point 之前的文本可能的补全。
+.TP
+.B insert\-completions (M\-*)
+插入 \fBpossible\-completions\fP 已产生的 point 之前的文本所有的补全。
+.TP
+.B menu\-complete
+与 \fBcomplete\fP 相似,但是使用可能的补全列表中的某个匹配替换要补全的词。
+重复执行 \fBmenu\-complete\fP 将遍历可能的补全列表,插入每个匹配。
+到达补全列表的结尾时,鸣终端响铃 (按照 \fBbell\-style\fP 的设置来做) 并恢复初始的文本。
+参数 \fIn\fP 将在匹配列表中向前移动 \fIn\fP 步;负数参数可以用于在列表中向后移动。
+这个命令应当与 \fBTAB\fP 键关联,但是默认情况下是没有关联的。
+.TP
+.B delete\-char\-or\-list
+删除光标下的字符,如果不是在行首或行尾 (类似 \fBdelete\-char\fP)。
+如果在行尾,行为与 \fBpossible\-completions\fP 一致。
+这个命令默认没有关联。
+.TP
+.B complete\-filename (M\-/)
+尝试对 point 之前的文本进行文件名补全。
+.TP
+.B possible\-filename\-completions (C\-x /)
+列出 point 之前的文本可能的补全,将它视为文件名。
+.TP
+.B complete\-username (M\-~)
+尝试对 point 之前的文本进行补全,将它视为用户名。
+.TP
+.B possible\-username\-completions (C\-x ~)
+列出 point 之前的文本可能的补全,将它视为用户名。
+.TP
+.B complete\-variable (M\-$)
+尝试对 point 之前的文本进行补全,将它视为 shell 变量。
+.TP
+.B possible\-variable\-completions (C\-x $)
+列出 point 之前的文本可能的补全,将它视为 shell 变量。
+.TP
+.B complete\-hostname (M\-@)
+尝试对 point 之前的文本进行补全,将它视为主机名。
+.TP
+.B possible\-hostname\-completions (C\-x @)
+列出 point 之前的文本可能的补全,将它视为主机名。
+.TP
+.B complete\-command (M\-!)
+尝试对 point 之前的文本进行补全,将它视为命令名。命令补全尝试着将此文本
+依次与别名,保留字,shell 函数,shell 内建命令,最后是可执行文件名进行匹配。
+.TP
+.B possible\-command\-completions (C\-x !)
+列出 point 之前的文本可能的补全,将它视为命令名。
+.TP
+.B dynamic\-complete\-history (M\-TAB)
+尝试对 point 之前的文本进行补全,将此文本与历史列表中的行相比较来查找可能的补全匹配。
+.TP
+.B complete\-into\-braces (M\-{)
+进行文件名补全,将可能的补全列表放在花括号中插入,使得列表可以被 shell 使用 
+(参见上面的
+.B Brace Expansion
+花括号扩展)。
+.PD
+.SS Keyboard Macros 宏
+.PP
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+开始保存输入字符为当前键盘宏。
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+停止保存输入字符为当前键盘宏,保存宏定义。
+.TP
+.B call\-last\-kbd\-macro (C\-x e)
+重新执行上次定义的键盘宏,即显示出宏中的字符,好像它们是从键盘输入的一样。
+.PD
+.SS Miscellaneous
+.PP
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+读入 \fIinputrc\fP 文件的内容,合并其中的按键关联和变量赋值。
+.TP
+.B abort (C\-g)
+取消当前编辑命令,鸣终端响铃 (按照
+.BR bell\-style
+的设置来做)。
+.TP
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+如果有 Meta 前缀的字符 \fIx\fP 是小写的,那么与命令相关连的是对应的大写字符。
+.TP
+.B prefix\-meta (ESC)
+将输入的下一个字符加上 Meta 前缀。
+.SM
+.B ESC
+.B f
+等价于
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+增量的撤销,分别记住每一行。
+.TP
+.B revert\-line (M\-r)
+撤销这一行的所有修改。这与执行命令
+.B undo
+足够多次的效果相同,将这一行恢复到初始状态。
+.TP
+.B tilde\-expand (M\-&)
+对当前词进行波浪线扩展。
+.TP
+.B set\-mark (C\-@, M\-<space>)
+在 point 处设置 mark。如果给出了数值的参数,标记被设置到那个位置。
+.TP
+.B exchange\-point\-and\-mark (C\-x C\-x)
+交换 point 和 mark。当前光标位置被设置为保存的位置,旧光标位置被保存为 mark。
+.TP
+.B character\-search (C\-])
+读入一个字符,point 移动到这个字符下一次出现的地方。负数将搜索上一个出现。
+.TP
+.B character\-search\-backward (M\-C\-])
+读入一个字符,point 移动到这个字符上一次出现的地方。负数将搜索下面的出现。
+.TP
+.B insert\-comment (M\-#)
+没有数值的参数时,readline 变量
+.B comment\-begin
+的值将被插入到当前行首。如果给出一个数值的参数,命令的行为类似于一个开关:
+如果行首字符不匹配 \fBcomment\-begin\fP 的值,将插入这个值,否则
+匹配 \fBcomment\-begin\fP 的字符将被从行首删除。在两种情况下,这一行都被接受,
+好像输入了新行符一样。\fBcomment\-begin\fP 的默认值使得这个命令将当前行变成
+一条 shell 注释。如果数值参数使得注释字符被删除,这一行将被 shell 执行。
+.TP
+.B glob\-complete\-word (M\-g)
+point 之前的词被当作路径扩展的一个模式,尾部暗含了一个星号。这个模式被用来
+为可能的补全产生匹配的文件名列表。
+.TP
+.B glob\-expand\-word (C\-x *)
+point 之前的词被当作路径扩展的一个模式,匹配的文件名的列表被插入,替换这个词。
+如果给出一个数值参数,在路径扩展之前将添加一个星号。
+.TP
+.B glob\-list\-expansions (C\-x g)
+显示
+.B glob\-expand\-word
+可能产生的扩展的列表,重绘当前行。如果给出一个数值参数,在路径扩展之前将添加一个星号。
+.TP
+.B dump\-functions
+向 readline 输出流打印所有的函数和它们的按键关联。如果给出一个数值参数,
+输出将被格式化,可以用作 \fIinputrc\fP 文件一部分。
+.TP
+.B dump\-variables
+向 readline 输出流打印所有可设置的 readline 函数。如果给出一个数值参数,
+输出将被格式化,可以用作 \fIinputrc\fP 文件一部分。
+.TP
+.B dump\-macros
+向 readline 输出流打印所有关联到宏的 readline 按键序列以及它们输出的字符串。
+如果给出一个数值参数,输出将被格式化,可以用作 \fIinputrc\fP 文件一部分。
+.TP
+.B display\-shell\-version (C\-x C\-v)
+显示当前
+.BR bash
+实例的版本信息。
+.PD
+.SS Programmable Completion 可编程补全
+.PP
+当试图对一个命令的参数进行词的补全时,如果已经使用内建命令 \fBcomplete\fP
+定义了这个命令的补全规则 ( \fBcompspec\fP),将启动可编程补全功能 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。
+.PP
+首先,命令名被确认。如果针对这个命令有补全规则的定义,那么将使用
+规则来产生可能的词的补全的列表。如果命令词是一个路径全名,将首先搜索
+针对这个路径全名的规则。如果针对这个路径全名没有找到规则,将尝试查找
+针对最后一个斜杠后面的部分的规则。
+.PP
+一旦找到了一个规则,它将用作产生匹配的词。如果没有找到,将进行上面
+\fBCompleting\fP 中描述的 \fBbash\fP 默认的补全。
+.PP
+首先,将执行规则指定的动作。只有以被补全的词开始的匹配词才会被返回。
+当在文件或目录名补全中使用
+.B \-f
+或
+.B \-d
+选项时,shell 变量
+.SM
+.B FIGNORE
+将用于对匹配进行过滤。
+.PP
+接下来,将产生所有由\fB\-G\fP 选项给出的文件名扩展模式指定的补全。
+模式产生的词不必匹配要补全的词。shell 变量
+.SM
+.B GLOBIGNORE
+不会用于过滤匹配结果,但是变量
+.SM
+.B FIGNORE
+会被使用。
+.PP
+接下来,将考虑 \fB\-W\fP 选项的参数指定的字符串。这个字符串首先被
+划分,用特殊变量
+.SM
+.B IFS
+中的字符作为分隔符。shell 引用被当作一个词。
+接下来,每个词被扩展,使用上面
+.SM
+.BR EXPANSION 
+中描述的
+brace expansion, tilde expansion, parameter 和 variable expansion,
+command substitution, arithmetic expansion, 以及 pathname expansion
+规则处理。对于结果,再使用上面 \fBWord Splitting\fP 中描述的规则划分成词。
+扩展的结果与要补全的词进行前部一致的比较,匹配的词成为可能的补全。
+.PP
+在这些匹配被产生后,任何由 \fB\-F\fP 和 \fB\-C\fP 选项指定的
+shell 函数和命令将被执行。当命令或函数被执行时,变量
+.SM
+.B COMP_LINE
+和
+.SM
+.B COMP_POINT
+被赋值,使用上面 \fBShell Variables\fP 中的规则。
+如果要执行 shell 函数,还将设置变量
+.SM
+.B COMP_WORDS
+和
+.SM
+.B COMP_CWORD
+当函数或命令被执行时,第一个参数是等待参数被补全的命令的名称,
+第二个参数是要补全的词,第三个参数是当前命令行中,要补全的词前面的词。
+对要补全的词产生的补全不会进行任何过滤;函数或命令在产生匹配时有完全的自由。
+.PP
+任何 \fB\-F\fP 指定的函数将被首先执行。函数可以使用任何 shell 功能,
+包含内建命令 \fIcompgen\fP,来产生匹配。它必须将可能的补全放到数组变量
+.SM
+.B COMPREPLY
+中。
+.PP
+接下来,任何 \fB\-C\fP 选项指定的命令将被执行,其执行环境与命令替换
+的环境相同。它应当向标准输出打印一个补全的列表,每行一个。
+反斜杠可以用来转义一个新行符,如果需要的话。
+.PP
+所有可能的补全都产生之后,将对列表进行 \fB\-X\fP 选项指定的任何过滤。
+过滤器是一个模式,和路径名扩展中的一样;模式中的 \fB&\fP 替换为
+要补全的词。字面上的 \fB&\fP 可以用反斜杠转义;反斜杠在进行匹配时被删除。
+任何匹配这个模式的补全将从列表中删除。前导的 \fB!\fP 将使模式含义相反;
+这种情况下,任何不匹配这个模式的补全将被删除。
+.PP
+最后,\fPB\-P\fP 和 \fB\-S\fP 指定的任何前缀和后缀被添加到补全列表的每个
+成员后面,结果返回给 readline 补全代码,作为可能的补全列表。
+.PP
+如果先前执行的动作没有产生任何匹配,并且在定义 compspec 规则时,为
+\fBcomplete\fP 命令提供了 \fB\-o dirname\fP 选项,将尝试目录名补全。
+.PP
+默认情况下,如果找到了一个规则,它产生的任何东西都被返回给补全代码,
+作为可能的补全的全集。不再尝试默认的 \fBbash\fP 补全,readline 默认的
+文件名补全也会禁止。如果定义规则时,为 \fBcomplete\fP 命令提供了
+\fB\-o default\fP 选项,在规则没有产生匹配时将进行 readline 默认的补全处理。
+.PP
+当一个规则指出期望目录名补全时,可编程补全函数强制 readline 在补全的名称
+后面添加一个斜杠,如果它是一个到目录的符号连接。然后还要经过 readline 变量
+\fBmark\-directories\fP 的值处理,不管 readline 变量 
+\fBmark\-symlinked\-directories\fP 的值是什么。
+.SH 历史(HISTORY)
+当启用内建命令
+.B set
+的
+.B \-o history
+选项时,shell 允许访问 \fIcommand history\fP,以前输入的命令的列表。
+\fBHISTSIZE\fP 的值用作命令列表中保存的命令数量。
+过去
+.SM
+.B HISTSIZE
+个 (默认为500) 命令将被保存。shell 将每条命令在进行参数和变量扩展之前
+保存到历史列表中 (参见上面的
+.SM
+.B EXPANSION
+段落),但是是在历史扩展进行之后,并且要经过 shell 变量
+.SM
+.B HISTIGNORE
+和
+.SM
+.BR HISTCONTROL
+处理。
+.PP
+在启动时,历史根据以变量
+.SM
+.B HISTFILE
+的值为名的文件 (默认是 \fI~/.bash_history\fP) 进行初始化。
+如果需要的话,以
+.SM
+.B HISTFILE
+为名的文件将被截断,来包含不超过变量
+.SM
+.BR HISTFILESIZE
+的值指定的行数。当交互 shell 退出时,最后
+.SM
+.B $HISTSIZE
+行被从历史列表中复制到
+.SM
+.BR $HISTFILE
+文件中。如果启用了 shell 选项
+.B histappend
+(参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节中对内建命令
+.B shopt
+的描述),这些行被追加到历史文件中,否则历史文件被覆盖。如果
+.SM
+.B HISTFILE
+被取消定义,或者如果历史文件不可写,历史将不会保存。保存历史之后,
+历史文件被截断,以包含不超过
+.SM
+.B HISTFILESIZE
+行。如果
+.SM
+.B HISTFILESIZE
+被取消定义,不会进行截断操作。
+.PP
+内建命令
+.B fc
+(参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节) 可以用来列出或修改并重新执行历史列表中的一部分。内建命令
+.B history
+可以用来显示或修改历史列表,操作历史文件。当使用命令行编辑时,每种
+编辑模式都有搜索命令,提供对历史列表的访问。
+.PP
+shell 允许控制哪些命令被保存到历史列表中。可以设置
+.SM
+.B HISTCONTROL
+和
+.SM
+.B HISTIGNORE
+变量,来使得 shell 只保存输入命令的一个子集。shell 选项
+.B cmdhist
+如果被启用,将使得 shell 将多行的命令的每一行保存到同一个历史条目中,
+在需要的地方添加分号来保证语义的正确性。shell 选项
+.B lithist
+使得 shell 保存命令时,保留嵌入的新行而不是用分号代替。参见下面
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+中,内建命令
+.B shopt
+的描述,有关设置和取消 shell 选项的信息。
+.SH 历史扩展("HISTORY EXPANSION")
+.PP
+shell 支持历史扩展机制,类似于
+.BR csh
+中历史扩展。这一节描述了可用的语法特征。在交互的 shell 中这一机制被默认启用,
+可以使用内建命令
+.B set
+的
+.B \-H
+选项来禁用它 (参见下面的
+.SM
+.B "shell 内建命令(SHELL BUILTIN COMMANDS)"
+章节)。非交互的 shell 默认不进行历史扩展。
+.PP
+历史扩展将历史列表中的词引入输入流中,使得可以方便地重复已执行命令,
+在当前输入行中为前一个命令插入新的参数,
+或者快速修正前一个命令中的错误。
+.PP
+历史扩展在读入一整行后,在 shell 将它拆分成词之前立即进行。它
+由两部分组成。首先是判断替换中使用历史列表中哪一行。其次是选择那一行中要包含到当前行中的部分。
+从历史中选择的行称为 \fIevent\fP,从那一行中选择的部分是 \fIwords\fP。
+可以用多种多样的 \fImodifiers\fP 来操纵所选的词。在读入输入时,行被按照同样方式分解成词,
+因此多个以 \fImetacharacter\fP 分隔的词,如果被引号包含,就被当成一个词。
+历史扩展由历史扩展字符引入,默认是 \^\fB!\fP\^。只有反斜杠 (\^\fP\e\fP\^) 和单引号可以引用历史扩展字符。
+.PP
+内建命令
+.B shopt
+可以设定多个选项值,来调整历史扩展的行为。如果 shell 选项
+.B histverify
+被启用 (参见内建命令
+.B shopt
+的描述),并且正在使用
+.B readline,
+历史替换不会被立即传给 shell 解释器。与此相对,扩展后的行被重新载入
+.B readline
+编辑缓冲区,进行进一步的修改。如果正在使用
+.B readline,
+并且启用了 shell 选项
+.B histreedit,
+失败的历史替换将被重新载入到
+.B readline
+编辑缓冲区,进行改正。内建命令
+.B history
+的
+.B \-p
+选项可以用来在执行之前查看历史扩展将如何进行。内建命令
+.B history
+的
+.B \-s
+选项可以用来在历史列表末尾添加命令,而不真正执行它们,从而
+在接下来的调用中可以使用它们。
+.PP
+shell 允许控制历史扩展机制使用的多种字符 (参见上面的
+.BR "Shell Variables"
+中
+.B histchars
+的描述)。
+.SS Event Designators
+.PP
+事件指示器 (event designator) 是一个对历史列表中某个命令行条目的引用。
+.PP
+.PD 0
+.TP
+.B !
+开始一个命令替换,除非后面跟随的是
+.BR blank ,
+newline, = 或是 (.
+.TP
+.B !\fIn\fR
+引用命令行
+.IR n .
+.TP
+.B !\-\fIn\fR
+引用当前命令行减去
+.IR n .
+.TP
+.B !!
+引用上一条命令。这是 `!\-1' 的同义词。
+.TP
+.B !\fIstring\fR
+引用最近的以
+.IR string 
+开始的命令。
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+引用最近的包含
+.IR string
+的命令。尾部的 \fB?\fP 可以被忽略,如果
+.I string
+之后紧接着一个新行符。
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+快速替换。重复上一条命令,将
+.I string1
+替换为
+.IR string2 .
+与
+``!!:s/\fIstring1\fP/\fIstring2\fP/'' 等价
+(参见下面的 \fB修饰符 (Modifiers)\fP)。
+.TP
+.B !#
+到此为止输入的整个命令行。
+.PD
+.SS Word Designators
+.PP
+词指示器 (word designator) 用于从 event 中选择期望的词。
+.B :
+分隔 event 规则与 word 指示器。它可以忽略,如果词指示器以
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+或
+.BR %
+开始。词被从行首开始编号,第一个词被表示为 0。插入当前行中的词以单个空格分隔。
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+第 0 个词。对 shell 来将,这是命令名。
+.TP
+.I n
+第 \fIn\fR 个词。
+.TP
+.B ^
+第一个参数。也就是,第 1 个词。
+.TP
+.B $
+最后的参数。
+.TP
+.B %
+最近一次搜索 `?\fIstring\fR?' 匹配的词。
+.TP
+.I x\fB\-\fPy
+一组词;`\-\fIy\fR' 是 `0\-\fIy\fR' 的简写。
+.TP
+.B *
+所有词,除了第 0 个。这是 `\fI1\-$\fP' 的同义词。如果 event 中只有一个词,使用
+.B *
+也不是错误;这种情况下将返回空字符串。
+.TP
+.B x*
+\fIx\-$\fP 的简写。
+.TP
+.B x\-
+\fI\-$\fP 的简写,就像 \fBx*\fP 一样,但是忽略最后一个词。
+.PD
+.PP
+如果给出了一个 word 指示器,没有给出 event 规则,前一个命令将用作 event。
+.SS 修饰符 (Modifiers)
+.PP
+可选的 word 指示器之后,可以出现一个或多个下述 modifiers 的序列,每一个都前缀有 `:'。
+.PP
+.PD 0
+.PP
+.TP
+.B h
+删除文件名组成的尾部,只保留头部。
+.TP
+.B t
+删除文件名组成中前面的成分,保留尾部。
+.TP
+.B r
+删除 \fI.xxx\fP 形式中尾部的后缀成分,保留基本名称部分。
+.TP
+.B e
+删除所有内容,保留尾部的后缀。
+.TP
+.B p
+打印新的命令,但是不执行它。
+.TP
+.B q
+引用替换所得的词,使它不再进行替换。
+.TP
+.B x
+引用替换所得的词,类似与
+.BR q ,
+但是会根据
+.B blanks,空白
+和新行符分解为词。
+.TP
+.B s/\fIold\fP/\fInew\fP/
+将事件行中出现的第一个
+.I old
+替换为
+.I new。
+任何分隔符都可以用来代替 /,最后一个分隔符是可选的,如果它是事件行的最后一个字符。
+.I old
+和
+.I new
+中的分隔符可以用一个反斜杠来引用。如果 & 出现在
+.IR new 
+中,它将替换为
+.IR old。
+可以用单个反斜杠来引用 &。如果
+.I old
+为空,它将设置为最后替换的
+.I old,
+或者,如果前面没有发生过历史替换,就是
+.B !?\fIstring\fR\fB[?]\fR
+搜索中的最后一个
+.I string。
+.TP
+.B &
+重复上一次替换。
+.TP
+.B g
+使得改变被整个事件行所接受。用于与 `\fB:s\fP' 或 `\fB:&\fP' 结合 
+(例如,`\fB:gs/\fIold\fP/\fInew\fP/\fR')。
+如果与 `\fB:s\fP' 结合使用,任何分隔符都可以用来代替 /,
+最后一个分隔符是可选的,如果它是事件行的最后一个字符。
+.PD
+.SH "shell 内建命令(SHELL BUILTIN COMMANDS)"
+.\" start of bash_builtins
+.zZ
+.PP
+除非另外说明,这一章介绍的内建命令如果接受
+.B \-
+引导的选项,那么它也接受
+.B \-\-
+作为参数,来指示选项的结束
+.sp .5
+.PD 0
+.TP
+\fB:\fP [\fIarguments\fP]
+.PD
+没有效果;这个命令除了扩展
+.I arguments
+并且作任何指定的重定向之外,不做任何事。
+退出时返回0。
+.TP
+\fB .\| \fP \fIfilename\fP [\fIarguments\fP]
+.PD 0
+.TP
+\fBsource\fP \fIfilename\fP [\fIarguments\fP]
+.PD
+读取并在当前 shell 环境中执行
+.I filename
+中的命令,返回
+.IR filename
+中最后一个命令的返回状态。如果
+.I filename
+中不包含斜杠 (slash),系统将在
+.SM
+.B PATH
+中查找包含
+.IR filename 
+的目录。在
+.SM
+.B PATH
+中搜索的文件不必是可执行的。
+如果 \fBbash\fP 不是运行于 \fIposix mode\fP,当
+.SM
+.BR PATH
+中找不到文件时会在当前目录搜索。如果
+.B shopt
+内建命令的
+.B sourcepath
+选项被关闭,
+.SM
+.B PATH
+将不会被搜索。如果有任何 \fIarguments\fP ,它们成为
+\fIfilename\fP 的位置参数 (positional parameters),否则
+位置参数不发生变化。
+返回状态是脚本中最后一个命令退出时的状态。
+没有执行命令则返回0,没有找到或不能读取
+.I filename
+时返回false。
+.TP
+\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBAlias\fP 不带参数或者带
+.B \-p
+参数运行时将在标准输出以这样的格式
+\fBalias\fP \fIname\fP=\fIvalue\fP 给出别名列表。
+如果有参数,将创建提供了 \fIvalue\fP 的 \fIname\fP 的别名。
+\fIvalue\fP 中尾部的空格使得别名被扩展时,下一个词做别名替换。
+对于参数列表中的每一个 \fIname\fP,如果 \fIvalue\fP 没有
+给出,这个别名的名称和值会被打印出来。
+\fBAlias\fP 返回 true 除非 \fIname\fP 没有定义为别名。
+.TP
+\fBbg\fP [\fIjobspec\fP]
+使挂起的程序 \fIjobspec\fP 在后台继续执行,就好像它是用
+.BR &
+启动的一样。如果没有指定 \fIjobspec\fP,shell 意义上的
+\fIcurrent job 当前作业\fP 将被使用。
+.B bg
+.I jobspec
+返回0,除非当前禁止了作业控制,或者在允许作业控制,但
+是没有找到 \fIjobspec\fP ,或者它不是在作业控制下启动的时候。
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\fP]
+.PD 0
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP]
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
+.TP
+\fBbind\fP \fIreadline\-command\fP
+.PD
+显示当前
+.B readline
+键和功能的,将一个按键序列和一个
+.B readline
+功能或宏进行关联,或者设置一个
+.B readline
+变量。每一个在非选项的参数都是一个命令,好像它是在
+.IR .inputrc
+中出现的一样。但是每个关联或者命令必须作为单独的参数传递;
+也就是这样 '"\eC\-x\eC\-r": re\-read\-init\-file'。
+如果有参数,它们有如下的意义:
+.RS
+.PD 0
+.TP
+.B \-m \fIkeymap\fP
+使用
+.I keymap
+作为随后的关联的keymap。可选的
+.I keymap
+名称是
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-move, vi\-command\fP,还有
+.IR vi\-insert 。
+\fIvi\fP 和 \fIvi\-command\fP 等价; \fIemacs\fP 和 \fIemacs\-standard\fP 等价。
+.TP
+.B \-l
+列出所有的 \fBreadline\fP 功能。
+.TP
+.B \-p
+以程序可读的方式显示 \fBreadline\fP 功能名称和关联
+.TP
+.B \-P
+列出当前 \fBreadline\fP 功能名称和关联。
+.TP
+.B \-v
+以程序可读的方式显示 \fBreadline\fP 变量名称和值
+.TP
+.B \-V
+列出当前 \fBreadline\fP 变量和值。
+.TP
+.B \-s
+以程序可读的方式显示 \fBreadline\fP 键序列和对应的宏
+.TP
+.B \-S
+显示 \fBreadline\fP 宏对应的键序列和他们输出的字符串
+.TP
+.B \-f \fIfilename\fP
+从 \fIfilename\fP 中读取键序列
+.TP
+.B \-q \fIfunction\fP
+查询那些键将执行\fIfunction\fP。
+.TP
+.B \-u \fIfunction\fP
+取消所有关联到 \fIfunction\fP 的键。
+.TP
+.B \-r \fIkeyseq\fP
+取消当前任何 \fIkeyseq\fP 的关联。
+.TP
+.B \-x \fIkeyseq\fP:\fIshell\-command\fP
+使 \fIshell\-command\fP 在 \fIkeyseq\fP 按下时被执行。
+.PD
+.PP
+返回值是0,除非给出了一个不能识别的选项或是产生了一个错误。
+.RE
+.TP
+\fBbreak\fP [\fIn\fP]
+从一个
+.BR for ,
+.BR while ,
+.BR until ,
+或者
+.B select
+循环退出。
+如果指定了 \fIn\fP ,就跳出 \fIn\fP 层循环。
+.I n
+必须 \(>= 1。如果
+.I n
+比当前循环层数还要大,将跳出所有循环。
+返回值是0,除非执行
+.B break 
+的时候 shell 不是在执行一个循环。
+.TP
+\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
+执行指定的 shell 内建命令,传递
+.IR arguments
+,返回命令的返回值。
+这在定义了一个和 shell 内建命令同名的函数时很有用,
+在那个函数中使用它来执行相应的功能。\fBcd\fP 命令常以这种方式重新定义。
+返回状态是 false,如果指定的
+.I shell\-builtin
+并不是一个 shell 内建命令。
+.TP
+\fBcd\fP [\fB\-L|-P\fP] [\fIdir\fP]
+改变当前路径到 \fIdir\fP。这个变量的默认值是
+.SM
+.B HOME
+目录。环境变量
+.SM
+.B CDPATH
+定义了包含
+.IR dir 
+的搜索路径。在
+.SM
+.B CDPATH
+中可选的路径名以冒号(:) 分隔。
+.SM
+.B CDPATH
+中的空路径名与当前路径相同,就是 ``\fB.\fP''.  如果
+.I 目录名
+以斜杠 (/,slash) 起始,那么
+.SM
+.B CDPATH
+不会被使用。
+.B \-P
+选项是说使用物理路径结构而不是跟随符号链接,(参见
+.B set
+命令中的
+.B \-P
+选项);
+.B \-L
+选项强制跟随符号链接。另外,选项
+.B \-
+与
+.SM
+.BR $OLDPWD 
+是相同的。
+返回值是 true ,如果成功地改变了目录;否则是 false。
+.TP
+\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...]
+运行
+.I command
+,使用
+.I args
+作为参数,禁止通常的查找 shell 函数的过程。只有内建命令或者
+.SM
+.B PATH
+中包含的命令可以执行。如果给出
+.B \-p
+参数,
+.I command
+的查找是以
+.B PATH
+的默认值进行的。这样可以保证找到所有的标准工具。如果给出
+.B \-V
+或者
+.B \-v
+选项,关于
+.I command
+的说明将被打印出来。
+.B \-v
+选项使得表述这个命令的词,或者要执行
+.I command
+需要执行的文件显示出来;
+.B \-V
+选项给出更详细的描述。如果给出
+.B \-V
+或者
+.B \-v
+选项,退出状态在找到了
+.I command
+的情况下0,没找到就是1。
+如果没有提供选项,并且产生了错误或者
+.I command
+没有找到,退出状态就是127。否则,
+.B command
+内建命令的退出状态是
+.IR command
+的退出状态。
+.TP
+\fBcompgen\fP [\fIoption\fP] [\fIword\fP]
+根据 \fIoption\fP 为 \fIword\fP 产生可能的补全。\fIoption\fP 是
+内建命令
+.B complete
+接受的任何选项,除了 \fB\-p\fP 和 \fB\-r\fP,将匹配结果写到标准输出。
+当使用 \fB\-F\fP 或 \fB\-C\fP 选项时,可编程补全功能所设置的多数
+shell 变量如果存在,其值将不再有用。
+.sp 1
+产生的匹配与可编程补全代码根据补全规则加上相同的标志直接产生的结果相同。
+如果指定了 \fIword\fP,只有匹配 \fIword\fP 的补全结果将被显示出来。
+.sp 1
+返回值为真,除非提供了非法的选项,或者没有产生匹配。
+.TP
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP]
+.br
+[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP]
+.PD 0
+.TP
+\fBcomplete\fP \fB\-pr\fP [\fIname\fP ...]
+.PD
+指定每个 \fIname\fP 的参数应当如何被补全。如果给出了 \fB\-p\fP 选项,
+或者没有选项给出,现有的补全规则将被显示出来,以一种可以重用为输入
+的格式显示。\fB\-r\fP 选项将一个针对每个 \fIname\fP 的补全规则删除。
+或者,如果没有给出 \fIname\fP,将删除所有补全规则。
+.sp 1
+尝试词的补全时,应用这些补全规则的过程在上面
+\fBProgrammable Completion\fP(可编程补全) 中详述。
+.sp 1
+其他选项,如果给出的话,具有下列意义。\fB\-G\fP, \fB\-W\fP, 
+和 \fB\-X\fP 选项的参数 (如果需要的话,还包括 \fB\-P\fP 和 \fB\-S\fP 
+选项) 应当被引用,避免在执行内建命令
+.B complete
+之前被扩展。
+.RS
+.PD 0
+.TP 8
+\fB\-o\fP \fIcomp-option\fP
+\fIcomp-option\fP 控制着 compspec 除了简单地产生补全之外的多种行为。
+\fIcomp-option\fP 可以是如下之一:
+.RS
+.TP 8
+.B default
+使用 readline 的默认文件名补全,如果 compspec 没有得到匹配。
+.TP 8
+.B dirnames
+进行目录名补全,如果 compspec 没有得到匹配。
+.TP 8
+.B filenames
+告诉 readline,compspec 产生了文件名,使它可以进行任何文件名专用的处理
+(例如,给目录名加上斜杠或消除尾部空白)。主要用于 shell 函数。
+.TP 8
+.B nospace
+告诉 readline 不要向补全的词在行的最后添加一个空格 (这是默认行为)。
+.RE
+.TP 8
+\fB\-A\fP \fIaction\fP
+\fIaction\fP 可以是下列之一,来产生一系列可能的补全结果:
+.RS
+.TP 8
+.B alias
+起别名。也可以用 \fB\-a\fP 指定。
+.TP 8
+.B arrayvar
+数组变量名。
+.TP 8
+.B binding
+\fBReadline\fP 按键关联。
+.TP 8
+.B builtin
+shell 内建命令的名称。也可以用 \fB\-b\fP 指定。
+.TP 8
+.B command
+命令名。也可以用 \fB\-c\fP 指定。
+.TP 8
+.B directory
+目录名。也可以用 \fB\-d\fP 指定。
+.TP 8
+.B disabled
+被禁用的内建命令名称。
+.TP 8
+.B enabled
+启用的内建命令名称。
+.TP 8
+.B export
+被导出的 shell 变量名称。也可以用 \fB\-e\fP 指定。
+.TP 8
+.B file
+文件名。也可以用 \fB\-f\fP 指定。
+.TP 8
+.B function
+shell 函数的名称。
+.TP 8
+.B group
+组名。也可以用 \fB\-g\fP 指定。
+.TP 8
+.B helptopic
+内建命令 \fBhelp\fP 接受的帮助主题。
+.TP 8
+.B hostname
+主机名,从环境变量
+.SM
+.B HOSTFILE
+指定的文件中得到。
+.TP 8
+.B job
+作业名,如果作业控制被激活的话。也可以用 \fB\-j\fP 指定。
+.TP 8
+.B keyword
+shell 保留字。也可以用 \fB\-k\fP 指定。
+.TP 8
+.B running
+正在运行的作业名,如果作业控制被激活的话。
+.TP 8
+.B service
+服务名。也可以用 \fB\-s\fP 指定。
+.TP 8
+.B setopt
+内建命令 \fBset\fP 的 \fB\-o\fP 选项的有效参数。
+.TP 8
+.B shopt
+内建命令 \fBshopt\fP 接受的 shell 选项名。
+.TP 8
+.B signal
+信号名。
+.TP 8
+.B stopped
+停止的作业名,如果作业控制被激活的话。
+.TP 8
+.B user
+用户名。也可以用 \fB\-u\fP 指定。
+.TP 8
+.B variable
+shell 变量的名称。也可以用 \fB\-v\fP 指定。
+.RE
+.TP 8
+\fB\-G\fP \fIglobpat\fP
+文件名扩展模式 \fIglobpat\fP 被扩展,产生可能的补全。
+.TP 8
+\fB\-W\fP \fIwordlist\fP
+.SM
+\fIwordlist\fP 被使用
+.B IFS
+特殊变量中的字符作为定界符来拆分,每个结果的词被扩展。可能的补全是结果列表
+中匹配要补全的词的那一些。
+.TP 8
+\fB\-C\fP \fIcommand\fP
+\fIcommand\fP 将在一个子 shell 环境中执行,它的结果用作可能的补全。
+.TP 8
+\fB\-F\fP \fIfunction\fP
+shell 函数 \fIfunction\fP 将在当前 shell 环境中执行。当它结束时,可能
+的补全可以从数组元素
+.SM
+.B COMPREPLY
+中得到。
+.TP 8
+\fB\-X\fP \fIfilterpat\fP
+\fIfilterpat\fP 是一个模式,用于文件名扩展。所有前面的选项和参数产生
+的可能的补全都要经过这一步处理,每一个匹配 \fIfilterpat\fP 的补全都
+被从列表中删除。为 \fIfilterpat\fP 加上前导 \fB!\fP 使模式意义相反;
+这种情况下,所有不匹配 \fIfilterpat\fP 的模式被删除。
+.TP 8
+\fB\-P\fP \fIprefix\fP
+在所有其他选项都处理过之后,\fIprefix\fP 被加到每个可能的补全前面。
+.TP 8
+\fB\-S\fP \fIsuffix\fP
+在所有其他选项都处理过之后,\fIsuffix\fP 被加到每个可能的补全后面。
+.PD
+.PP
+返回值为真,除非给出了非法的选项,给出除 \fB\-p\fP 和 \fB\-r\fP 之外
+的某个选项时没有给出 \fIname\fP 参数,试图删除一条 \fIname\fP 的补全
+规则但是规则不存在,或者添加补全规则时出错。
+.RE
+.TP
+\fBcontinue\fP [\fIn\fP]
+复位到外层
+.BR for ,
+.BR while ,
+.BR until ,
+或
+.B select
+循环的下一次开始。如果指定了
+.I n,
+复位到向外第 \fIn\fP 层循环的开始。
+.I n
+必须 \(>= 1。如果
+.I n
+比外部循环的层数要多,将复位到最外层的循环 (``top-level'' loop,顶层循环)。
+返回值是 0,除非执行
+.B continue
+时,shell 不是在循环之中。
+.TP
+\fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP]]
+.PD 0
+.TP
+\fBtypeset\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP]]
+.PD
+声明变量且/或设置它们的属性。如果没有给出 \fIname\fP 则显示变量的值。
+选项
+.B \-p
+将显示每个名称
+.IR name 
+的属性和值。当使用
+.B \-p
+时,其他选项被忽略。选项
+.B \-F
+禁止显示函数定义;只有函数名和属性会被显示。
+.B \-F
+选项暗含
+.BR \-f .
+下列选项可用来限制只输出具有指定属性的变量,或者为变量设置属性:
+.RS
+.PD 0
+.TP
+.B \-a
+每个 \fIname\fP 都是数组变量 (参见上面的
+.B Arrays
+段落)。
+.TP
+.B \-f
+只使用函数名。
+.TP
+.B \-i
+变量被当作一个整数;当变量被赋值时将进行算术运算 (参见
+.SM
+.B "算术求值 (ARITHMETIC EVALUATION)"
+章节)。
+.TP
+.B \-r
+使得 \fIname\fP 只读。这些名称不能再被后续的赋值语句赋值或取消定义。
+.TP
+.B \-t
+设置每个 \fIname\fP 的 \fItrace\fP(跟踪) 属性。被跟踪的函数继承了
+调用者 shell 的 \fBDEBUG\fP 陷阱。trace 属性对变量没有特殊意义。
+.TP
+.B \-x
+标记 \fIname\fP 为可以通过环境导出给后续命令。
+.PD
+.PP
+使用 `+' 代替 `\-' 将关闭属性,特殊情况是 \fB+a\fP 不能用于销毁一个
+数组变量。当用于函数中时,它使得每个 \fIname\fP 成为局部的,就像
+使用了 
+.B local
+命令。返回值是 0,除非遇到了非法的选项,试图使用
+.if n ``\-f foo=bar''
+.if t \f(CW\-f foo=bar\fP
+定义函数,试图向只读变量赋值,试图向数组变量赋值但没有使用复合的赋值
+语法 (参见上面的
+.B Arrays
+段落),\fIname\fP 之一不是有效的 shell 变量名,试图将数组变量的数组
+状态关闭,或者是试图使用 \fB\-f\fP 显示一个不存在的函数。
+.RE
+.TP
+.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP]
+没有选项时显示当前保存的目录。默认输出为一行,目录名用空格分开。
+可以使用
+.B pushd
+命令将目录添加到列表,
+.B popd
+命令将列表中的条目删除。
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+显示
+.B dirs
+在不带选项执行时显示的列表的第 \fIn\fP 个条目,从 0 开始自左算起。
+.TP
+\fB\-\fP\fIn\fP
+显示
+.B dirs
+在不带选项执行时显示的列表的第 \fIn\fP 个条目,从 0 开始自右算起。
+.TP
+.B \-c
+删除所有条目,清空目录栈。
+.TP
+.B \-l
+产生长列表;默认列表格式使用波浪线来表示个人目录。
+.TP
+.B \-p
+输出目录栈,一行一个。
+.TP
+.B \-v
+输出目录栈,一行一个,每个条目前面加上它在栈中的位置索引。
+.PD
+.PP
+返回值是 0,除非给出了非法的参数,或者 \fIn\fP 索引超出了目录栈的范围。
+.RE
+.TP
+\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...]
+没有选项时,每个
+.I jobspec
+被从正在运行的作业表中删除。如果给出了 \fB\-\fP 选项,每个
+.I jobspec
+并不从表中删除,而是被标记,使得在 shell 接到
+.SM
+.BR SIGHUP 
+信号时,不会向作业发出
+.SM
+.B SIGHUP
+信号。如果没有给出
+.I jobspec,
+也没有给出
+.B \-a
+或者
+.B \-r
+选项,将使用当前作业 (\fIcurrent job\fP)。如果没有给出
+.I jobspec,
+选项
+.B \-a
+意味着删除或标记所有作业;选项
+.B \-r
+不带
+.I jobspec
+参数时限制操作只对正在运行的作业进行。返回值是 0,除非
+.I jobspec
+不指定有效的作业。
+.TP
+\fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
+输出 \fIarg\fP,以空格分开,最后加一个新行符。返回值总是 0。
+如果指定了 \fB\-n\fP,将不在尾部添加新行符。如果给出了 \fB\-e\fP 选项,
+将允许解释下列反斜杠转义的字符。
+.B \-E
+选项禁止这些转义字符的解释,即使在默认解释它们的系统中也是如此。
+shell 选项 \fBxpg_echo\fP 可以用来在运行时判断 \fBecho\fP 是否默认
+展开这些转义字符。
+.B echo
+不将
+.B \-\-
+作为选项的结束。
+.B echo
+解释下列转义序列:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell) 响铃
+.TP
+.B \eb
+backspace 回退
+.TP
+.B \ec
+suppress trailing newline 删除尾部新行符
+.TP
+.B \ee
+an escape character 字符 Esc
+.TP
+.B \ef
+form feed 进纸
+.TP
+.B \en
+new line 新行符
+.TP
+.B \er
+carriage return 回车
+.TP
+.B \et
+horizontal tab 水平跳格
+.TP
+.B \ev
+vertical tab 竖直跳格
+.TP
+.B \e\e
+backslash 反斜杠
+.TP
+.B \e0\fInnn\fP
+一个八比特字符,它的值是八进制值 \fInnn\fP (零到三个八进制数字)。
+.TP
+.B \e\fInnn\fP
+一个八比特字符,它的值是八进制值 \fInnn\fP (一到三个八进制数字)。
+.TP
+.B \ex\fIHH\fP
+一个八比特字符,它的值是十六进制值 \fIHH\fP (一到两个十六进制数字)。
+.PD
+.RE
+.TP
+\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...]
+允许或禁止 shell 内建命令。禁止一个内建命令使得磁盘上的与内建命令同名
+的文件得以运行,不必使用它的全路径,即使 shell 一般在搜索磁盘上的命令之前
+搜索内建命令。如果使用了 \fB\-n\fP 选项,每个 \fIname\fP 都被禁止;否则,
+\fIname\fP 被允许。例如,要使用
+.SM
+.B PATH
+中搜索到的
+.B test
+命令而不是 shell 内建的那一个,可以运行
+.if t \f(CWenable -n test\fP.
+.if n ``enable -n test''.
+选项
+.B \-f
+意味着从共享库
+.IR filename
+中加载新的内建命令
+.I name,
+如果系统支持动态加载的话。选项
+.B \-d
+将删除曾经用
+.BR \-f 
+加载的内建命令。如果没有给出 \fIname\fP 参数,或者给出了
+.B \-p
+选项,将显示 shell 内建命令的列表。如果没有其他选项参数,
+这个列表只包含所有被允许的 shell 内建命令;如果给出了
+\fB\-n\fP,将只显示被禁止的内建命令;如果给出了 
+\fB\-a\fP,显示的列表中包含所有内建命令,还有命令是否被允许的指示;
+如果给出了 \fB\-s\fP,输出被限制为 POSIX \fIspecial\fP 内建命令。
+返回值是 0,除非
+.I name
+不是 shell 内建命令,或者从共享库中加载新的内建命令时出错。
+.TP
+\fBeval\fP [\fIarg\fP ...]
+\fIarg\fP 被读取并连结为单一的命令。这个命令然后被 shell 读取并执行,
+它的退出状态被作为
+.BR eval
+的值返回。如果没有
+.IR args ,
+或仅仅包含空参数,
+.B eval
+返回 0。
+.TP
+\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]]
+如果指定了
+.I command,
+它将替换 shell。不会产生新的进程。
+.I arguments
+成为 \fIcommand\fP 的参数。如果给出了
+.B \-l
+选项,shell 将在传递给
+.IR command
+的第 0 个参数前面加上一个连字符 (dash,`-')。这样做和
+.IR login (1)
+相同。选项
+.B \-c
+使得命令
+.I command
+在一个空环境中执行。如果给出了
+.B \-a,
+shell 会将
+.I name
+作为第 0 个参数传递给要执行的命令。如果由于某种原因
+as the zeroth argument to the executed command.  If
+.I command
+不能被执行,非交互的 shell 将退出,除非 shell 选项
+.B execfail
+被设置为允许,这种情况下它返回失败。如果命令不能执行,交互的 shell 返回失败。
+如果没有指定
+.I command
+任何重定向对当前 shell 发生作用,返回值是 0。如果发生重定向错误,返回状态是 1。
+.TP
+\fBexit\fP [\fIn\fP]
+使得 shell 以状态值 \fIn\fP 退出。如果忽略了
+.I n,
+退出状态是最后执行的命令的退出状态。在 shell 终止前,对
+.SM
+.B EXIT
+的陷阱将被执行。
+.TP
+\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ...
+.PD 0
+.TP
+.B export \-p
+.PD
+给出的名称
+.I names
+被标记为自动地导出到后续执行的命令的环境中。如果给出了
+.B \-f
+选项,名称
+.I names
+指的是函数。如果没有给出
+.I names,
+或者如果给出了
+.B \-p
+选项,将打印在这个 shell 中被导出的所有名字的列表。选项
+.B \-n
+使得以此为名的变量的导出属性被删除。
+.B export
+返回 0,除非遇到了非法的选项,\fIname\fP 之一不是有效的 shell 变量名,
+或者给出了
+.B \-f
+选项,而
+.I name
+不是一个函数。
+.TP
+\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP]
+.PD 0
+.TP
+\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP]
+.PD
+命令修复。第一种形式中,历史列表中从
+.I first
+到
+.I last
+范围内的命令都被选取。
+.I First
+和
+.I last
+可以指定为字符串 (可以定位最后一个以此字符串开始的命令) 或者数字 (历史列表中
+的索引,负数被当作相对当前命令号的偏移)。如果没有指定
+.I last,
+它在列举时被设为当前命令 (因此
+.if n ``fc \-l \-10''
+.if t \f(CWfc \-l \-10\fP
+将输出最后 10 条命令),其他情况下被设为
+.I first。
+如果没有指定
+.I first,
+它在编辑时被设为前一个命令,列举是设为 \-16。
+.sp 1
+选项
+.B \-n
+使得列举时不显示命令号码。选项
+.B \-r
+将命令顺序进行掉换。如果给出了
+.B \-l
+选项,命令将列举在标准输出上。否则,将启动
+.I ename
+给出的编辑器,编辑包含这些命令的文件。如果没有给出
+.I ename,
+将使用变量
+.SM
+.B FCEDIT
+的值,如果
+.SM
+.B FCEDIT
+没有定义就使用
+.SM
+.B EDITOR
+的值。如果仍然没有定义,将使用
+.FN vi。
+编辑结束后,被编辑的命令将回显并执行。
+.sp 1
+第二种形式中,\fIcommand\fP 在每个 \fIpat\fP 的实例被 \fIrep\fP 替换后
+都被重新执行。使用这种特性时可以起一个有用的别名:
+.if n ``r=fc -s'',
+.if t \f(CWr='fc \-s'\fP,
+这样输入
+.if n ``r cc''
+.if t \f(CWr cc\fP
+将运行最后的以
+.if n ``cc''
+.if t \f(CWcc\fP
+开头的命令,输入
+.if n ``r''
+.if t \f(CWr\fP
+将重新执行上一个命令。
+.sp 1
+如果使用第一种形式,返回值是 0,除非遇到了非法的选项,或
+.I first
+或
+.I last
+指定的历史行数超出了范围。如果给出了
+.B \-e
+选项,返回值是最后执行的命令的返回值,或着是失败,如果临时文件中的命令
+执行出错。如果使用第二种形式,返回状态是重新执行的命令,除非
+.I cmd
+没有指定一个有效的历史行,这种情况下
+.B fc
+返回失败。
+.TP
+\fBfg\fP [\fIjobspec\fP]
+将
+.I jobspec
+恢复至前台,使它成为当前作业。如果
+.I jobspec
+不存在,将使用 shell 意义上的当前作业 \fIcurrent job\fP。返回值是
+被放到前台的命令的状态,或者是失败,如果在禁用作业控制时运行,或者
+在启用作业控制时运行,但
+.I jobspec
+没有指定有效的作业,或
+.I jobspec
+指定了没有使用作业控制的作业。
+.TP
+\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
+.B getopts
+由 shell 程序用来处理位置参数。
+.I optstring
+包含要识别的选项字符;如果某个字符跟随着冒号,那么这个选项需要一个参数,
+需要用空白和它隔离开。冒号和问号字符不能用作选项字符。每次它执行时,
+.B getopts
+将下一个选项放在 shell 变量
+.IR name 
+中,如果
+.I name
+不存在就初始化它;下一个要处理的参数的索引放在变量
+.SM
+.BR OPTIND
+中。每次 shell 或 shell 脚本被执行的时候
+.SM
+.B OPTIND
+被初始化为 1。当某个选项需要参数时,
+.B getopts
+将那个参数放到变量
+.SM
+.BR OPTARG 
+中。shell 不会自动重置
+.SM
+.B OPTIND;
+在相同的 shell 中,如果要使用新的参数集合而需要多次调用
+.B getopts
+时,必须手动重置它。
+.sp 1
+当遇到选项结束的时候,\fBgetopts\fP 以大于 0 的值退出。
+\fBOPTIND\fP 被设置为第一个非选项的参数的索引,\fIname\fP 被设置为 ?。
+.sp 1
+.B getopts
+通常解释位置参数,但是如果
+.IR args 
+中给出了更多参数,
+.B getopts
+将解释它们。
+.sp 1
+.B getopts
+能以两种方式报告错误。如果
+.I optstring
+的第一个字符是冒号,将使用
+.I silent
+安静的错误报告。通常的操作中,遇到非法选项或缺少选项的参数时将打印出
+诊断信息。如果变量
+.SM
+.B OPTERR
+被设置为 0,不会显示错误消息,即使
+.I optstring
+的第一个字符不是冒号。
+.sp 1
+如果发现了一个非法的选项,
+.B getopts
+向
+.I name
+中置入 ?,并且如果不是安静模式的话,打印错误消息并取消
+.SM
+.BR OPTARG
+的定义。如果
+.B getopts
+是安静模式,找到的选项字符将置入
+.SM
+.B OPTARG,
+不会打印诊断消息。
+.sp 1
+如果没有找到需要的参数,并且
+.B getopts
+不是安静模式,将向
+.IR name
+置入一个问号 (\^\fB?\fP\^),取消
+.SM
+.B OPTARG
+的定义,打印出诊断消息。如果
+.B getopts
+是安静模式,那么将向
+.I name
+置入一个冒号 (\^\fB:\fP\^) 并且
+.SM
+.B OPTARG
+将设置为找到的选项字符。
+.sp 1
+.B getopts
+返回真,如果找到了指定的/未被指定的选项。它返回假,如果遇到了选项结束
+或者发生了错误。
+.TP
+\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP]
+对于每个
+.IR name ,
+通过搜索
+.B $PATH
+中的目录,找到命令的全路径名并记录它。如果给出了 
+.B \-p
+选项,不会进行路径搜索,直接将
+.I filename
+作为命令的全路径名。选项
+.B \-r
+使得 shell 忘记所有已记录的位置。选项
+.B \-d
+使得 shell 忘记已记录的 \fIname\fP 的位置。如果给出了
+.B \-t
+选项,每个 \fIname\fP 对应的全路径名被打印出来。如果给出多个
+\fIname\fP 作为 \fB\-t\fP 的参数,\fIname\fP 将在已记录的全路径名
+之前被打印出来。选项
+.B \-l
+使得输出以一种可以重用为输入的格式显示。如果没有给出参数,
+或者只给出了 \fB\-l\fP 选项,已记录的命令的信息将被打印出来。
+返回真,除非
+.I name
+没有找到或给出了非法的选项。
+.TP
+\fBhelp\fP [\fB\-s\fP] [\fIpattern\fP]
+显示关于内建命令的有用的信息。如果指定了
+.I pattern (模式),
+.B help
+给出关于所有匹配
+.IR pattern
+的命令的详细帮助;否则所有内建命令的帮助和 shell 控制结构将被打印出来。
+选项 \fB\-s\fP 限制信息显示为简短的用法概要。
+返回 0,除非没有匹配
+.IR pattern
+的命令。
+.TP
+\fBhistory [\fIn\fP]
+.PD 0
+.TP
+\fBhistory\fP \fB\-c\fP
+.TP
+\fBhistory \-d\fP \fIoffset\fP
+.TP
+\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
+.TP
+\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
+.TP
+\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
+.PD
+不带选项的话,显示带行号的命令历史列表。列出的行中含有
+.B *
+的已经被修改过。参数
+.I n
+使得只显示最后
+.I n
+行。如果给出了 \fIfilename\fP,它被用做历史文件名;没有的话,将使用
+.SM
+.B HISTFILE
+的值作为历史文件名。选项如果给出,则具有下列意义:
+.RS
+.PD 0
+.TP
+.B \-c
+清空历史列表,删除所有条目。
+.TP
+\fB\-d\fP \fIoffset\fP
+删除 \fIoffset\fP 位置的历史条目。
+.TP
+.B \-a
+将 ``新'' 的历史条目 (自当前 \fBbash\fP 会话开始输入的历史命令)
+追加到历史文件中。
+.TP
+.B \-n
+将尚未从历史文件中读取的历史条目读入当前历史列表。这些行是当前
+\fBbash\fP 会话开始之后,才追加到历史文件中的行。
+.TP
+.B \-r
+读取历史文件的内容,使用它们作为当前历史。
+.TP
+.B \-w
+将当前历史列表写入历史文件,覆盖历史文件的原有内容。
+.TP
+.B \-p
+对后续的 \fIargs\fP 进行历史替换,在标准输出上显示结果。
+不会将结果存入历史列表。每个 \fIargs\fP 都必须被引用,来禁止
+普通的命令扩展。
+.TP
+.B \-s
+将
+.I args
+保存到历史列表中,作为单独的条目。历史列表中的最后一个命令在添加
+.I args
+之前被删除。
+.PD
+.PP
+返回 0,除非遇到了非法的选项,读/写历史文件发生错误,在 \fB\-d\fP 的
+参数中给出了无效的 \fIoffset\fP,或者对 \fB\-p\fP 的后续参数进行历史扩展失败。
+.RE
+.TP
+\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ]
+.PD 0
+.TP
+\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ]
+.PD
+第一种形式列出正在运行的作业。选项具有下列意义:
+.RS
+.PD 0
+.TP
+.B \-l
+普通信息之外,列出进程ID。
+.TP
+.B \-p
+只列出作业的进程组 leader 的进程ID。
+.TP
+.B \-n
+只显示从上次用户得知它们的状态之后,状态发生改变的作业的信息。
+.TP
+.B \-r
+限制只输出正在运行的作业。
+.TP
+.B \-s
+限制只输出停止的作业。
+.PD
+.PP
+如果给出了
+.I jobspec
+输出被限制为仅此作业的信息。
+返回 0,除非遇到了非法的选项或给出了非法的
+.I jobspec。
+.PP
+如果给出了
+.B \-x
+选项,作业
+.B jobs
+将
+.I command
+或
+.I args
+中的任何
+.I jobspec
+替换为相应的进程组ID,执行
+.I command,
+传递参数
+.IR args
+给它并返回它的退出状态。
+.RE
+.TP
+\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ...
+.PD 0
+.TP
+\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP]
+.PD
+向以
+.I pid
+或
+.IR jobspec
+为名的进程发送名为
+.I sigspec
+或
+.I signum
+的信号。
+.I sigspec
+可以是一个信号名称,类似
+.SM
+.B SIGKILL
+或信号编号;
+.I signum
+是一个信号编号。如果
+.I sigspec
+是一个信号名称,那么可以有,也可以没有
+.SM
+.B SIG
+前缀。如果没有给出
+.I sigspec,
+那么假设是
+.SM
+.B SIGTERM。
+参数
+.B \-l
+将列出所有信号的名称。如果给出
+.B \-l
+时还有任何参数,将列出参数对应的信号名称,返回状态 0。
+.B \-l
+的 \fIexit_status\fP 参数是一个数字,指定了一个信号编号或被信号
+终止的进程的退出状态值。
+.B kill
+返回真,如果至少成功发送了一个信号,或者返回假,如果发生了错误或遇到了
+非法的选项。
+.TP
+\fBlet\fP \fIarg\fP [\fIarg\fP ...]
+每个
+.I arg
+都是要求值的算术表达式 (参见
+.SM
+.BR "算术求值 (ARITHMETIC EVALUATION)"
+章节)。如果最后一个参数
+.I arg
+求值结果是 0,
+.B let
+返回 1;否则返回 0。
+.TP
+\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...]
+对每个参数将创建一个名为
+.I name 
+的局部变量并赋予值
+.IR value。
+\fIoption\fP 可以是任何 \fBdeclare\fP 接受的值。当
+.B local
+用于函数内部时,它使得变量
+.I name
+作用域局限于函数和它的子进程。没有操作数时,
+.B local
+将局部变量的列表写到标准输出。不在函数内部使用
+.B local
+会导致出错。返回 0,除非在函数之外使用了
+.B local,
+给出了非法的
+.I name,
+或者 \fIname\fP 是一个只读的变量。
+.TP
+.B logout
+退出登录 shell。
+.TP
+\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
+从目录栈中删除条目。没有参数的话,从栈中删除顶层目录,执行
+.B cd
+切换到新的顶层目录。如果给出了参数,有下列的含义:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+删除
+.BR dirs
+给出的列表中从左数第 \fIn\fP 个条目 (从 0 算起)。例如:
+.if n ``popd +0''
+.if t \f(CWpopd +0\fP
+删除第一个目录,
+.if n ``popd +1''
+.if t \f(CWpopd +1\fP
+第二个。
+.TP
+\fB\-\fP\fIn\fP
+删除
+.BR dirs
+给出的列表中从右数第 \fIn\fP 个条目 (从 0 算起)。例如:
+.if n ``popd -0''
+.if t \f(CWpopd -0\fP
+删除最后一个目录,
+.if n ``popd -1''
+.if t \f(CWpopd -1\fP
+删除倒数第二个。
+.TP
+.B \-n
+阻止从栈中删除目录之后改变目录,这时只对栈进行操作。
+.PD
+.PP
+如果命令
+.B popd
+成功,还要执行一个
+.B dirs,
+返回 0。
+.B popd
+返回假,如果遇到了非法的选项,目录栈为空,指定了目录栈中不存在的条目,
+或者改变目录失败。
+.RE
+.TP
+\fBprintf\fP \fIformat\fP [\fIarguments\fP]
+在 \fIformat\fP 控制下将格式化的 \fIarguments\fP 写到标准输出。
+\fIformat\fP 是一个字符串,包含三种类型的对象:普通字符,被简单地
+复制到标准输出,转义字符,被转换并复制到标准输出,格式说明,每一个
+都使得相邻的下一个 \fIargument\fP 被打印出来。
+在标准的 \fIprintf\fP(1) 格式之外,\fB%b\fP 使得 \fBprintf\fP 展开相应
+\fIarguments\fP 中的反斜杠转义序列,\fB%q\fP 使得 \fBprintf\fP 将
+相应的 \fIargument\fP 以一种可以重用为 shell 输入的格式输出。
+.sp 1
+\fIformat\fP 在需要时被重用,以处理所有的 \fIarguments\fP。
+如果 \fIformat\fP 需要比所提供的更多的 \fIarguments\fP,
+多出的格式说明视为已经提供了相应的 0 值或空字符串。
+成功的话返回值是 0,失败则是非 0 值。
+.TP
+\fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
+.PD 0
+.TP
+\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
+.PD
+将目录推入目录栈,或者轮换栈中的内容,使栈的顶部成为当前工作目录。
+没有参数时,交换顶部两个目录,返回 0,除非目录栈为空。如果给出了参数,
+它们有如下含义:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+轮换栈中内容,使得
+.BR dirs
+给出的列表中从左数第 \fIn\fP 个目录 (从 0 数起) 成为目录栈的顶部。
+.TP
+\fB\-\fP\fIn\fP
+轮换栈中内容,使得
+.BR dirs
+给出的列表中从右数第 \fIn\fP 个目录 (从 0 数起) 成为目录栈的顶部。
+.TP
+.B \-n
+阻止向栈中添加目录之后改变目录,这时只对栈进行操作。
+.TP
+.I dir
+添加
+.I dir
+到栈顶,使得它成为新的当前工作目录。
+.PD
+.PP
+如果命令
+.B pushd
+成功,还要执行一个
+.B dirs。
+如果使用第一种形式,
+.B pushd
+返回 0,除非 cd 切换到目录
+.I dir
+失败。使用第二中形式时,
+.B pushd
+返回 0,除非目录栈为空,指定了目录栈中不存在的元素,或者
+切换到指定的新的当前目录失败。
+.RE
+.TP
+\fBpwd\fP [\fB\-LP\fP]
+打印当前工作目录的绝对路径名。如果给出了
+.B \-P
+选项,或者设置了内建命令
+.B set
+的
+.B \-o physical
+选项,打印出的路径名中不会包含符号链接。如果使用了
+.B \-L
+选项,打印出的路径中可能包含符号链接。
+返回 0,除非在读取当前目录名时出错或给出了非法的选项。
+.TP
+\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...]
+从标准输入读入一行,或从 \fB\-u\fP 选项的参数中给出的文件描述符 \fIfd\fP 中
+读取,第一个词被赋予第一个
+.IR name ,
+第二个词被赋予第二个
+.IR name ,
+以此类推,多余的词和其间的分隔符被赋予最后一个
+.IR name .
+如果从输入流读入的词数比名称数少,剩余的名称被赋予空值。
+.SM
+.B IFS
+中的字符被用来将行拆分成词。
+反斜杠字符 (\fB\e\fP) 被用于删除读取的下一字符的特殊含义,以及续行。
+如果给出了选项,将包含下列含义:
+.RS
+.PD 0
+.TP
+.B \-a \fIaname\fP
+词被赋以数组变量
+.IR aname
+的连续的下标,从 0 开始。在赋新值之前,
+.I aname
+被取消定义。其他 \fIname\fP 参数被忽略。
+.TP
+.B \-d \fIdelim\fP
+\fIdelim\fP 的第一个字符被用于结束输入行,而不是新行符。
+.TP
+.B \-e
+如果标准输入来自终端,将使用
+.B readline
+(参见上面的
+.SM
+.B READLINE
+章节) 来获得输入行。
+.TP
+.B \-n \fInchars\fP
+\fBread\fP 读入 \fInchars\fP 个字符后返回,而不是等待一整行输入。
+.TP
+.B \-p \fIprompt\fP
+读取任何输入之前,在标准错误显示提示 \fIprompt\fP,末尾没有新行符。
+提示只有在输入来自终端时才会显示。
+.TP
+.B \-r
+反斜杠不作为转义字符。反斜杠被认为行的一部分。特殊地,一对反斜杠-新行符不作为续行。
+.TP
+.B \-s
+安静模式。如果输入来自终端,字符将不会回显。
+.TP
+.B \-t \fItimeout\fP
+使得 \fBread\fP 超时并返回失败,如果在 \fItimeout\fP 秒内没有读入完整的一行输入。
+如果 \fBread\fP 不是从终端或管道读取输入,那么这个选项无效。
+.TP
+.B \-u \fIfd\FP
+从文件描述符 \fIfd\fP 中读取输入。
+.PD
+.PP
+如果没有给出
+.I names,
+读取的一行将赋予变量
+.SM
+.BR REPLY 。
+返回值是 0,除非遇到了 EOF,\fBread\P 超时,或给出了非法的文件描述符作为 \fB\-u\fP 的参数。
+.RE
+.TP
+\fBreadonly\fP [\fB\-apf\fP] [\fIname\fP ...]
+.PD
+给出的 \fIname\fP 将被标记为只读的;
+.I names
+的值不能被后来的赋值语句改变。如果给出了
+.B \-f
+选项,\fInames\fP 对应的函数也被标记。选项
+.B \-a
+限制变量只能是数组类型。如果没有给出
+.I name
+参数,或者如果给出了
+.B \-p
+选项,将打印所有只读的名称。选项
+.B \-p
+使得输出以一种可以被重新用作输入的格式显示。
+返回值是 0,除非遇到了非法的选项,
+.I names
+之一不是有效的 shell 变量名,或选项
+.B \-f
+中给出的
+.I name
+不是一个函数。
+.TP
+\fBreturn\fP [\fIn\fP]
+使得一个函数以指定值
+.IR n
+退出。如果忽略了
+.I n,
+返回状态是函数体中执行的最后一个命令的退出状态。如果在函数外使用,但是是在一个以
+.B .
+(\fBsource\fP) 命令执行的脚本内,它使得 shell 中止执行脚本,返回
+.I n
+或脚本中执行的最后一个命令的退出状态。如果在函数外使用,并且不是在以 
+\fB.\fP\^ 执行的脚本内,返回状态是假。
+.TP
+\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...]
+不带选项时,shell 变量的名称和值将以一种可以重用为输入的格式显示。
+输出根据当前语言环境进行排序。指定了选项的时候,它们设置或取消了 shell 的属性。
+处理完选项之后剩余的任何参数都被作为位置参数的值被赋值,分别赋予
+.BR $1 ,
+.BR $2 ,
+.B ...
+.BR $\fIn\fP .
+如果给出了选项,那么具有以下含义:
+.RS
+.PD 0
+.TP 8
+.B \-a
+自动将被修改或创建的变量和函数标志为导出至后续命令的环境中。
+.TP 8
+.B \-b
+后台作业结束时立即报告状态,而不是在下次显示主提示符前报告。只有在启用作业控制时才有效。
+.TP 8
+.B \-e
+立即退出,如果 \fIsimple command\fP (简单命令,参见上面的
+.SM
+.B SHELL GRAMMAR 语法)
+以非零值退出。shell 不会退出,如果失败的命令是
+.I until
+或
+.I while
+循环的一部分,
+.I if
+语句的一部分,
+.B &&
+或
+.B \(bv\(bv
+序列的一部分,或者命令的返回值是由
+.BR ! 
+翻转得到。针对 \fBERR\fP 的陷阱,如果设置的话,将在 shell 退出前执行。
+.TP 8
+.B \-f
+禁止路径扩展。
+.TP 8 
+.B \-h
+在查找并执行命令时,记住它们的位置。这是默认启用的。
+.TP 8
+.B \-k
+所有以赋值语句形式出现的参数都被加入到命令执行的环境中,不仅是命令名前面那些。
+.TP 8
+.B \-m
+监视模式。作业控制被启用。在支持这个选项的系统中,它在交互 shell 中是默认启用的 (参见上面的
+.SM
+.B JOB CONTROL 作业控制)。
+后台进程在单独的进程组中运行,结束时将打印出包含它们退出状态的一行信息。
+.TP 8
+.B \-n
+读取命令,但不执行。这可以用在检查 shell 脚本中的语法错误。交互 shell 中它被忽略。
+.TP 8
+.B \-o \fIoption\-name\fP
+\fIoption\-name\fP 可以是如下之一:
+.RS
+.TP 8
+.B allexport
+与
+.BR \-a
+相同。
+.TP 8
+.B braceexpand
+与
+.BR \-B
+相同。
+.TP 8
+.B emacs
+使用 emacs 样式的命令行编辑界面。这个选项在交互 shell 中默认启用,除非 shell 以
+.B \-\-noediting
+选项启动。
+.TP 8
+.B errexit
+与
+.BR \-e
+相同。
+.TP 8
+.B hashall
+与
+.BR \-h
+相同。
+.TP 8
+.B histexpand
+与
+.BR \-H
+相同。
+.TP 8
+.B history
+允许记录命令历史,如上述
+.SM
+.BR HISTORY
+中的描述。这个选项在交互 shell 中默认启用。
+.TP 8
+.B ignoreeof
+它的效果是好像已经执行了 shell 命令
+.if t \f(CWIGNOREEOF=10\fP
+.if n ``IGNOREEOF=10''
+一样 (参见上面的
+.B Shell Variables 变量)。
+.TP 8
+.B keyword
+与
+.BR \-k
+相同。
+.TP 8
+.B monitor
+与
+.BR \-m
+相同。
+.TP 8
+.B noclobber
+与
+.BR \-C
+相同。
+.TP 8
+.B noexec
+与
+.BR \-n
+相同。
+.TP 8
+.B noglob
+与
+.BR \-f 
+相同。
+.B nolog
+当前被忽略。
+.TP 8
+.B notify
+与
+.BR \-b
+相同。
+.TP 8
+.B nounset
+与
+.BR \-u 
+相同。
+.TP 8
+.B onecmd
+与
+.BR \-t 
+相同。
+.TP 8
+.B physical
+与
+.BR \-P 
+相同。
+.TP 8
+.B posix
+如果默认操作与 POSIX 1003.2 不同的话,改变
+.B bash
+的行为,来满足标准 (\fIposix mode\fP)。
+.TP 8
+.B privileged
+与
+.BR \-p
+相同。
+.TP 8
+.B verbose
+与
+.BR \-v 
+相同。
+.TP 8
+.B vi
+使用 vi 样式的命令行编辑界面。
+.TP 8
+.B xtrace
+与
+.BR \-x 
+相同。
+.sp .5
+.PP
+如果给出了不带 \fIoption\-name\fP 的
+.B \-o
+选项,当前选项的值将被打印出来。如果给出了不带 \fIoption\-name\fP 的
+.B +o
+选项,将在标准输出显示一系列可以重建当前选项设定的
+.B set
+命令。
+.RE
+.TP 8
+.B \-p
+打开
+.I privileged mode (特权模式)。
+在这个模式中,不会处理
+.SM
+.B $ENV
+和
+.SM
+.B $BASH_ENV
+文件,shell 函数不会从环境中继承,环境中如果有变量
+.SM
+.B SHELLOPTS,
+也将被忽略。如果 shell 启动时的有效用户(组) ID 与真实用户(组) ID 不同,并且没有给出 \fB\-p\fP 选项,
+将执行这些操作,有效用户 ID 将设置为真实用户 ID。如果启动是给出了 \fB\-p\fP 选项,有效用户 ID 不会
+被重置。将这个选项关闭使得有效用户和组 ID 被设置为真实用户和组 ID。
+.TP 8
+.B \-t
+读取并执行一个命令之后退出。
+.TP 8
+.B \-u
+在进行参数扩展时,将未定义的变量作为错误。如果试图扩展未定义的变量,shell 将输出一条错误消息;
+如果是非交互的 shell,shell 将以非零值退出。
+.TP 8
+.B \-v
+在读取输入的同时打印出来。
+.TP 8
+.B \-x
+扩展每个简单命令之后,显示
+.SM
+.BR PS4
+的值,接着显示命令和它扩展后的参数。
+.TP 8
+.B \-B
+shell 执行花括号扩展 (参见上面的
+.B Brace Expansion)。
+这是默认允许的。
+.TP 8
+.B \-C
+如果设置的话,
+.B bash
+使用重定向操作符
+.BR > ,
+.BR >& ,
+和
+.B <>
+时,不会覆盖已存在的文件。可以使用重定向操作符
+.B >|
+代替
+.BR >
+来创建输出文件,从而绕过这个限制。
+.TP 8
+.B \-H
+允许
+Enable
+.B !
+样式的历史替换。在交互 shell 中这个选项是默认启用的。
+.TP 8
+.B \-P
+如果设置的话,shell 在执行类似
+.B cd
+的,改变当前工作目录的命令时,不会跟随符号连接。它将使用物理的目录结构来代替。默认情况下,
+.B bash
+在执行改变当前目录的命令时跟随路径的逻辑链。
+.TP 8
+.B \-\-
+如果这个选项没有参数,将取消位置参数的定义。否则,位置参数将设置为
+\fIarg\fP,即使它们以
+.BR \-
+开始。
+.TP 8
+.B \-
+通知信号的结束,使得所有剩余的 \fIarg\fP 被赋予位置参数。
+.B \-x
+和
+.B \-v
+选项被关闭。如果没有 \fIarg\fP,位置参数将不会改变。
+.PD
+.PP
+这个选项默认是关闭的,除非另外说明。使用 + 而不是 \- 使得这些选项被关闭。选项都可以作为参数,
+在 shell 启动时指定。当前的选项集合可以从
+.BR $\- 
+找到。返回值总是真,除非遇到了非法的选项。
+.RE
+.TP
+\fBshift\fP [\fIn\fP]
+从 \fIn\fP+1 ... 开始的选项被重命名为
+.B $1
+.B ....
+从 \fB$#\fP 向下直到 \fB$#\fP\-\fIn\fP+1 的选项被取消定义。
+.I n
+必须是非负整数,小于或等于 \fB$#\fP。如果
+.I n
+是 0,不会改变参数。如果没有给出
+.I n,
+就假定它是 1。如果
+.I n
+比 \fB$#\fP 大,位置参数不会改变。返回值大于 0,如果
+.I n
+比
+.B $#
+大或小于 0;否则返回 0。
+.TP
+\fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...]
+对于控制可选的 shell 行为的变量,改变它们的值。没有选项或者有
+.B \-p
+选项时,将显示所有可设置的选项列表,以及它们是否已经设置的指示。
+\fB\-p\fP 使得输出以一种可以被重用为输入的形式显示。
+其他选项有如下含义:
+.RS
+.PD 0
+.TP
+.B \-s
+允许(设置) 每个 \fIoptname\fP。
+.TP
+.B \-u
+禁止(取消) 每个 \fIoptname\fP。
+.TP
+.B \-q
+禁止通常的输出 (安静模式);返回状态指示了 \fIoptname\fP 是否被设置。
+如果对
+.BR \-q 
+给出了多个 \fIoptname\fP 参数,如果所有 \fIoptname\fP 都被允许,返回值就是 0;
+否则返回非零值。
+.TP
+.B \-o
+限制 \fIoptname\fP 的值为内建命令
+.B set
+的
+.B \-o
+选项定义的值。
+.PD
+.PP
+如果使用
+.B \-s
+或
+.B \-u
+时没有给出 \fIoptname\fP 参数,显示将分别限于被设置或被取消的选项。
+除非另外说明,\fBshopt\fP 选项默认被禁止(取消)。
+.PP
+返回值在列出选项时是 0,如果所有 \fIoptname\fP 都被允许的话,否则是非零值。
+当设置或取消选项时,返回值是 0,除非 \fIoptname\fP 是非法的 shell 选项。
+.PP
+\fBshopt\fP 选项的列表是:
+.if t .sp .5v
+.if n .sp 1v
+.PD 0
+.TP 8
+.B cdable_vars
+如果设置的话,内建命令
+.B cd
+的参数如果不是目录,就假定是一个变量,它的值是要切换到的目录名。
+.TP 8
+.B cdspell
+如果设置的话,
+.B cd
+命令中目录的细微拼写错误能够得以纠正。检查的错误包括字符错位,缺字符,
+重复输入同一字符。如果找到了正确的值,将打印正确的文件名,命令将继续。
+这个选项只能在交互 shell 中使用。
+.TP 8
+.B checkhash
+如果设置的话,\fBbash\fP 在执行命令前检测散列表中的命令是否存在。
+如果一个被散列的命令不再存在,将进行正常的路径搜索。
+.TP 8
+.B checkwinsize
+如果设置的话,\fBbash\fP 在每条命令执行后检测窗口大小,如果需要的话就更新
+.SM
+.B LINES
+和
+.SM
+.BR COLUMNS 
+的值。
+.TP 8
+.B cmdhist
+如果设置的话,
+.B bash
+试着将一个多行命令的所有行放到同一个历史条目中。这样使得
+多行命令可以容易地重新修改。
+.TP 8
+.B dotglob
+如果设置的话,
+.B bash
+会把以 `.' 开始的文件名包含在路径名扩展的结果中。
+.TP 8
+.B execfail
+如果设置的话,非交互的 shell 如果不能执行作为参数提供给内建命令
+.B exec
+的文件时将不会退出。交互的 shell 在
+.B exec
+失败时不会退出。
+.TP 8
+.B expand_aliases
+如果设置的话,别名被扩展,就像上面
+.SM
+.BR ALIASES
+中讲到的一样。这个选项在交互 shell 中是默认启用的。
+.TP 8
+.B extglob
+如果设置的话,将允许上面 \fBPathname Expansion\fP 中提到的扩展模式匹配特性。
+.TP 8
+.B histappend
+如果设置的话,在 shell 退出时,历史列表将追加到以
+.B HISTFILE
+的值为名的文件之后,而不是覆盖文件。
+.TP 8
+.B histreedit
+如果设置的话,并且正在使用
+.B readline,
+用户可以重新修改失败的历史替换。
+.TP 8
+.B histverify
+如果设置的话,并且正在使用
+.B readline,
+历史替换的结果不会立即传给 shell 解释器。结果行被加载到 
+\fBreadline\fP 编辑缓冲区,允许进行进一步的修改。
+.TP 8
+.B hostcomplete
+如果设置的话,并且正在使用
+.B readline,
+\fBbash\fP 将试着对正在进行补全的包含 \f@\fP 的词进行主机名补全
+(参见上面的
+.SM
+.B READLINE
+中的
+.B Completing
+段落)。这是默认允许的。
+.TP 8
+.B huponexit
+如果设置的话,在交互的登录 shell 退出时 \fBbash\fP 将向所有作业发出
+.SM
+.B SIGHUP
+信号。
+.TP 8
+.B interactive_comments
+如果设置的话,将允许在交互 shell 中遇到以
+.B #
+开头的词时忽略这个词和一行中所有剩余的字符 (参见上面的
+.SM
+.B COMMENTS 注释)。
+这个选项是默认允许的。
+.TP 8
+.B lithist
+如果设置的话,并且允许了
+.B cmdhist
+选项,多行的命令在保存到历史中时将包含新行符,而不是在可能的地方使用分号。
+.TP 8
+.B login_shell
+如果 shell 作为登录 shell 启动,将设置这个选项 (参见上面的
+.SM
+.B "启动(INVOCATION)")。
+这个值不可修改。
+.TP 8
+.B mailwarn
+如果设置的话,并且 \fBbash\fP 正在检测上次检测以来被存取过的邮件,
+将显示 ``The mail in \fImailfile\fP has been read''(\fImailfile\fP 中的邮件已被读取)。
+.TP 8
+.B no_empty_cmd_completion
+如果设置的话,并且正在使用
+.B readline,
+试图在空行上执行补全时,
+.B bash
+不会搜索 \fBPATH\fP 来查找可能的补全。
+.TP 8
+.B nocaseglob
+如果设置的话,
+.B bash
+进行路径扩展时使用大小写不敏感方式匹配文件名(参见上面的
+.B Pathname Expansion 路径扩展)。
+.TP 8
+.B nullglob
+如果设置的话,
+.B bash
+将允许不匹配任何文件的模式扩展为空字符串而不是它们自身(参见上面的
+.B Pathname Expansion 路径扩展)。
+.TP 8
+.B progcomp
+如果设置的话,将启用可编程补全功能 (参见上面的 \fBProgrammable Completion\fP)。
+这个选项是默认启用的。
+.TP 8
+.B promptvars
+如果设置的话,提示字符串要经过上面
+.SM
+.B PROMPTING
+中描述的扩展,然后还要经过变量和参数扩展。这个选项是默认启用的。
+.TP 8
+.B restricted_shell
+shell 设置这个选项,如果它是以受限模式启用的 (参见下面的
+.SM
+.B "受限的shell(RESTRICTED SHELL)"
+章节)。这个值不能修改。在执行启动文件时,它不会被重置,使得启动文件可以
+得知 shell 是否是受限的。
+.TP 8
+.B shift_verbose
+如果设置的话,内建命令
+.B shift
+在偏移量超过位置参数的个数时打印一条错误消息。
+.TP 8
+.B sourcepath
+如果设置的话,内建命令 \fBsource\fP (\fB.\fP) 使用
+.SM
+.B PATH
+中的值来查找包含作为参数给出的文件。这个选项默认是启用的。
+.TP 8
+.B xpg_echo
+如果设置的话,内建命令 \fBecho\fP 默认扩展反斜杠转义序列。
+.RE
+.TP
+\fBsuspend\fP [\fB\-f\fP]
+挂起 shell 的执行,直到收到一个
+.SM
+.B SIGCONT
+信号。选项
+.B \-f
+表示如果这是一个登录 shell,那么不要提示,直接挂起。返回值是 0,除非
+shell 是登录 shell 并且没有指定
+.B \-f,
+或者没有启用作业控制。
+.TP
+\fBtest\fP \fIexpr\fP
+.PD 0
+.TP
+\fB[\fP \fIexpr\fP \fB]\fP
+返回状态值 0 或 1,根据条件表达式
+.IR expr
+的求值而定。每个操作符和操作数都必须是一个单独的参数。表达式使用上面
+.SM
+.BR "条件表达式 (CONDITIONAL EXPRESSIONS)"
+中的操作构造。
+.if t .sp 0.5
+.if n .sp 1
+表达式可以用下列操作符结合,以优先级的降序列出。
+.RS
+.PD 0
+.TP
+.B ! \fIexpr\fP
+值为真,如果
+.I expr
+为假。
+.TP
+.B ( \fIexpr\fP )
+返回 \fIexpr\fP 的值。括号可以用来超越操作符的一般优先级。
+.TP
+\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
+值为真,如果
+.I expr1
+和
+.I expr2
+都为真。
+.TP
+\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
+值为真,如果
+.I expr1
+或
+.I expr2
+为真。
+.PD
+.PP
+\fBtest\fP 和 \fB[\fP 
+使用基于参数个数的一系列规则,对条件表达式进行求值。
+.if t .sp 0.5
+.if n .sp 1
+.PD 0
+.TP
+0 arguments
+表达式为假。
+.TP
+1 argument
+表达式为真,当且仅当参数非空。
+.TP
+2 arguments
+如果第一个参数是 \fB!\fP,表达式为真,当且仅当第二个参数为空。
+如果第一个参数是上面
+.SM
+.BR "条件表达式 (CONDITIONAL EXPRESSIONS)"
+中列出的单目条件运算符之一,表达式为真,当且仅当单目测试为真。
+如果第一个参数不是合法的单目条件运算符,表达式为假。
+.TP
+3 arguments
+如果第二个参数是上面
+.SM
+.BR "条件表达式 (CONDITIONAL EXPRESSIONS)"
+中列出的二进制条件操作符之一,表达式的结果是使用第一和第三个参数作为操作数的二进制测试的结果。
+如果第一个参数是 \fB!\fP,表达式值是使用第二和第三个参数进行双参数测试的结果取反。
+如果第一个参数是 \fB(\fP,第三个参数是 \fB)\fP,结果是对第二个参数进行单参数测试的结果。
+否则,表达式为假。这种情况下 \fB\-a\fP 和 \fB\-o\fP 操作符被认为二进制操作符。
+.TP
+4 arguments
+如果第一个参数是 \fB!\fP,结果是由剩余参数组成的三参数表达式结果取反。
+否则,表达式被根据上面列出的优先级规则解释并执行。
+.TP
+5 或更多 arguments
+表达式被根据上面列出的优先级规则解释并执行。
+.RE
+.PD
+.TP
+.B times
+对 shell 以及 shell 运行的进程,打印累计的用户和系统时间。
+返回状态是 0。
+.TP
+\fBtrap\fP [\fB\-lp\fP] [\fIarg\fP] [\fIsigspec\fP ...]
+当 shell 收到信号
+.IR sigspec
+时,命令
+.I arg
+将被读取并执行。如果没有给出
+.I arg
+或者给出的是
+.BR \- ,
+所有指定的信号被设置为它们的初始值 (进入 shell 时它们的值)。如果
+.I arg
+是空字符串,
+.I sigspec
+指定的信号被 shell 和它启动的命令忽略。如果
+.I arg
+不存在,并且给出了
+.B \-p
+那么与每个
+.I sigspec
+相关联的陷阱命令将被显示出来。如果没有给出任何参数,或只给出了
+.B \-p,
+.B trap
+将打印出与每个信号编号相关的命令列表。每个
+.I sigspec
+可以是 <\fIsignal.h\fP> 定义的信号名,或是一个信号编号。
+如果
+.I sigspec
+是
+.SM
+.B EXIT
+(0),命令 
+.I arg
+将在 shell 退出时执行。如果
+.I sigspec
+是
+.SM
+.BR DEBUG ,
+命令
+.I arg
+将在每个简单命令 (\fIsimple command\fP,参见上面的
+.SM
+.B SHELL GRAMMAR)
+之后执行。如果
+.I sigspec
+是
+.SM
+.BR ERR ,
+命令
+.I arg
+将在任何命令以非零值退出时执行。如果失败的命令是
+.I until
+或
+.I while
+循环的一部分,
+.I if
+语句的一部分,
+.B &&
+或
+.B \(bv\(bv
+序列的一部分,或者命令的返回值是通过
+.BR !
+转化而来,
+.SM
+.BR ERR
+陷阱将不会执行。选项
+.B \-l
+使得 shell 打印信号名和对应编号的列表。
+shell 忽略的信号不能被捕捉或重置。在子进程中,被捕捉的信号在进程创建时被重置为初始值。
+返回值为假,如果
+.I sigspec
+非法;否则
+.B trap
+返回真。
+.TP
+\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...]
+没有选项时,指示每个
+.I name
+将如何被解释,如果用作一个命令名。如果使用了
+.B \-t
+选项,
+.B type
+打印一个字符串,内容是如下之一:
+.IR alias ,
+.IR keyword ,
+.IR function ,
+.IR builtin ,
+或
+.I file ,
+如果
+.I name
+分别是一个别名,shell 保留字,函数,内建命令或磁盘文件。如果没有找到
+.I name,
+那么不会打印任何东西,返回退出状态假。如果使用了
+.B \-p
+选项,
+.B type
+返回如果
+.I name
+作为命令名,将被执行的磁盘文件名;或者返回空,如果
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+不会返回
+.IR file .
+选项
+.B \-P
+选项强制对每个 \fIname\fP 搜索
+.SM
+.B PATH,
+即使
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+不会返回
+.IR file .
+如果命令在散列中,
+.B \-p
+和
+.B \-P
+将打印散列的值,而不是
+.SM
+.BR PATH
+中首先出现的那一个文件。如果使用了
+.B \-a
+选项,
+.B type
+打印所有包含可执行的名称
+.IR name 
+的场合。结果包括别名和函数,当且仅当没有同时使用
+.B \-p
+选项。使用
+.BR \-a
+时不会查找散列中的命令表。选项
+.B \-f
+阻止 shell 进行查找,就像在内建命令 \fBcommand\fP 中一样。
+.B type
+返回真,如果找到了任何参数。什么都没找到则返回假。
+.TP
+\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
+在支持它的系统上,对 shell 和它启动的进程,提供对可用资源的控制。
+选项 \fB\-H\fP 和 \fB\-S\fP 指定为所给资源设定的硬性和柔性限额。
+硬性限额在设置后不能增加;柔性限额可以增加,直到与硬性限额相等。
+如果没有给出 \fB\-H\fP 或 \fB\-S\fP 选项,将同时设置硬性和柔性限额。
+.I limit
+的值可以是一个数字,单位是指定资源的单元值,或者是特殊值
+.BR hard ,
+.BR soft ,
+或
+.BR unlimited
+之一,意思分别是当前硬性限额,当前柔性限额和没有限额。如果忽略了
+.I limit,
+将打印出当前对资源的柔性限额值,除非给出了 \fB\-H\fP 选项。当指定多于一个
+资源时,限额名称和单位将在值之前打印出来。其他选项按照如下意义解释:
+.RS
+.PD 0
+.TP
+.B \-a
+报告所有当前限额
+.TP
+.B \-c
+core 文件的最大值
+.TP
+.B \-d
+进程数据段的最大值
+.TP
+.B \-f
+shell 创建的文件的最大值
+.TP
+.B \-l
+内存中可以锁定的最大值
+.TP
+.B \-m
+常驻内存的最大值
+.TP
+.B \-n
+打开的文件描述符最大个数 (大多数系统不允许设置这个值)
+.TP
+.B \-p
+管道大小,以 512 字节的块为单位 (这个值可能不能设置)
+.TP
+.B \-s
+栈的最大值
+.TP
+.B \-t
+cpu 时间总数的最大值,以秒计
+.TP
+.B \-u
+用户可以运行的最大进程数
+.TP
+.B \-v
+shell 可用的虚拟内存总量的最大值
+.PD
+.PP
+如果给出了
+.I limit,
+它将是指定资源的新限额 (选项
+.B \-a
+只显示它们)。如果没有给出选项,则假设有
+.B \-f。
+值的递增间隔是 1024 字节,除了
+.BR \-t 
+单位是 秒,
+.BR \-p
+单位是 512 字节的块个数,
+.B \-n
+和
+.BR \-u
+是不可调节的值。返回 0,除非给出了非法的选项或参数,或者在设置新的限额时发生了错误。
+.RE
+.TP
+\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+用户创建文件的掩码被设置为
+.IR mode .
+如果
+.I mode
+以数字开始,它被解释为一个八进制数;否则被解释为类似于
+.IR chmod (1)
+接受的符号形式的模式掩码。如果忽略了
+.I mode,
+将打印当前掩码值。选项
+.B \-S
+使得掩码以符号形式打印;默认输出是八进制数。如果给出了
+.B \-p
+选项,并且忽略了
+.I mode,
+输出将是一种可以重用为输入的形式。返回值是 0,如果成功改变了模式,或者没有给出 \fImode\fP。
+其他情况返回假。
+.TP
+\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...]
+从已定义的别名列表中删除 \fIname\fP。如果给出了
+.B \-a
+将删除所有别名定义。返回值是真,除非给出的
+.I name
+不是已定义的别名。
+.TP
+\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...]
+将每个
+.IR name
+对应的变量或函数删除。如果没有给出选项,或者给出了
+.B \-v
+选项,
+.I name
+仅包括 shell 变量。只读的变量不能被取消定义。如果给出了
+.B \-f
+选项,
+.I name
+仅包括 shell 函数,函数的定义将被删除。每个被取消定义的变量或函数都被从后续命令的环境中删除。
+如果
+.SM
+.BR RANDOM ,
+.SM
+.BR SECONDS ,
+.SM
+.BR LINENO ,
+.SM
+.BR HISTCMD ,
+.SM
+.BR FUNCNAME ,
+.SM
+.BR GROUPS ,
+或者
+.SM
+.B DIRSTACK
+中的任何一个被取消定义,它们将丧失特殊的属性,即使它们后来被重新定义。
+退出状态是真,除非
+.I name
+不存在或是只读的。
+.TP
+\fBwait\fP [\fIn\fP]
+等待指定的进程,返回它的终止状态。
+.I n
+可以是进程 ID 或一个作业号;如果给出的是作业号,将等待作业的管道中所有进程。如果没有给出
+.I n,
+将等待所有当前处于激活状态的子进程,返回状态是 0。如果
+.I n
+指定了不存在的进程或作业,返回状态是 127。否则,返回状态是所等待的最后一个进程或作业的退出状态。
+.\" bash_builtins
+.if \n(zZ=1 .ig zZ
+.SH "受限的shell(RESTRICTED SHELL)"
+.\" rbash.1
+.zY
+.PP
+如果
+.B bash
+以
+.BR rbash 
+名称启动,或者启动时使用了
+.B \-r
+选项,那么它成为受限的 shell。
+受限的 shell 一般用来建立一个比标准的 shell 受到更多控制的环境。
+它的行为与
+.B bash
+一致,除了下列行为是不允许的 (disallowed) 或不会运行的 (not performed)。
+.IP \(bu
+使用 \fBcd\fP 来改变路径;
+.IP \(bu
+设置或取消
+.BR SHELL ,
+.BR PATH ,
+.BR ENV ,
+或
+.B BASH_ENV
+变量的值;
+.IP \(bu
+指定的命令名中包含
+.B /
+;
+.IP \(bu
+指定包含
+.B /
+的文件名作为传递给内建命令
+.B .
+的参数;
+.IP \(bu
+指定包含斜杠 (slash) 的文件名作为
+.B \-p
+选项的参数,传递给
+.B hash
+内建命令;
+.IP \(bu
+启动时从 shell 环境中导入 (import) 函数定义;
+.IP \(bu
+启动时解释 shell 环境中 \fBSHELLOPTS\fP 的值;
+.IP \(bu
+使用 >, >|, <>, >&, &>, 和 >> 等重定向操作符重定向输出;
+.IP \(bu
+使用
+.B exec
+内建命令来以另一个命令替换 shell;
+.IP \(bu
+使用
+.B enable
+内建命令的
+.B \-f
+和
+.B \-d
+选项来增加和删除内建命令;
+.IP \(bu
+使用 \fBenable\fP 内建命令来允许和禁止 shell 内建命令;
+.IP \(bu
+指定
+.B command
+内建命令的
+.B \-p
+选项;
+.IP \(bu
+使用 \fBset +r\fP 或 \fBset +o restricted\fP 来关闭受限模式。
+.PP
+这些限制在所有启动文件读取之后才会生效。
+.PP
+当一个 shell 脚本作为一个命令执行时 (参见上面的
+.SM
+.B "命令执行(COMMAND EXECUTION)"
+章节),
+.B rbash
+关闭为执行脚本而孵化 (spawn) 的 shell 的所有限制。
+.\" end of rbash.1
+.if \n(zY=1 .ig zY
+.SH 参见("SEE ALSO")
+.PD 0
+.TP
+\fIBash Reference Manual\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE
+.TP
+\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1)
+.TP
+\fIemacs\fP(1), \fIvi\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH "文件(FILES)"
+.PD 0
+.TP
+.FN /bin/bash
+\fBbash\fP 可执行文件
+.TP
+.FN /etc/profile
+系统范围的初始化文件,登录 shell 会执行它
+.TP
+.FN ~/.bash_profile
+个人初始化文件,登录 shell 会执行它
+.TP
+.FN ~/.bashrc
+个人的每个交互式 shell 启动时执行的文件
+.TP
+.FN ~/.bash_logout
+个人的登录 shell 清理文件,当一个登录 shell 退出时会执行它
+.TP
+.FN ~/.inputrc
+个人的 \fIreadline\fP 初始化文件
+.PD
+.SH "作者(AUTHORS)"
+Brian Fox, Free Software Foundation
+.br
+bfox at gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet at ins.CWRU.Edu
+.SH "报告BUGS (BUG REPORTS)"
+如果你发现一个
+.B bash
+中的 bug,你应当报告它。但是首先,
+你应当确定它真的是一个 bug,并且它在你使用的最新版本的
+.B bash
+中存在。
+.PP
+一旦你认定存在那样一个 bug,使用
+.I bashbug
+命令来提交一个错误报告。
+如果你有固定住址,鼓励你用邮政的方式提交一份!
+建议和有关 \fBbash\fP “哲学” (`philosophical') 的 “错误报告” 可以寄给
+\fIbug-bash at gnu.org\fP 或者贴到 Usenet 新闻组
+.BR gnu.bash.bug
+之上。
+.PP
+所有错误报告应当包括:
+.PP
+.PD 0
+.TP 20
+\fBbash\fR 的版本号
+.TP
+硬件信息和操作系统
+.TP
+用来编译的编译器
+.TP
+对 bug 行为的描述
+.TP
+可以激活这个 bug 的一个短小的脚本或者什么 “秘诀” (recipe)
+.PD
+.PP
+.I bashbug
+会自动在它提供的错误报告模板中插入前三项。
+.PP
+关于这份手册页的评论和错误报告请直接提交到
+.IR chet at ins.CWRU.Edu .
+.SH BUGS
+.PP
+它太大了,并且有点慢。
+.PP
+.B bash
+和传统版本的
+.BR sh
+之间有一些细微的差别,大部分是因为
+.SM
+.B POSIX
+规约的要求。
+.PP
+别名机制在一些应用中会混淆。
+.PP
+Shell 内建命令和函数不可终止/重新开始。
+.PP
+组合的命令和使用 `a ; b ; c' 形式的命令序列在进程试图暂停时不能很好处理。
+当一个进程中止,shell 会立即执行序列中的下一条命令。
+也可以将命令的序列放在圆括号中,来强制启动子 shell,这样就可以将它们作为一个单元中止了。
+.PP
+在 \fB$(\fP...\fB)\fP 命令替换中的注释不会被解释,直到执行替换的时候。
+这将延迟报错,直到命令开始执行之后的一段时间。
+.PP
+数组变量还不能导出 (export)。
+.zZ
+.zY
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2004.03.05
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/bg.1 b/src/man1/bg.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/bg.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/biff.1 b/src/man1/biff.1
new file mode 100644
index 0000000..d4d52c3
--- /dev/null
+++ b/src/man1/biff.1
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1980, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     from: @(#)biff.1	6.5 (Berkeley) 3/14/91
+.\"
+.Dd July 31, 1999
+.Dt BIFF 1
+.Os "Linux NetKit (0.16)"
+.Sh "名称 (NAME)"
+.Nm biff
+.Nd "新到邮件提醒"
+.Sh "总览 (SYNOPSIS)"
+.Nm biff
+.Op Cm ny
+.Sh "描述 (DESCRIPTION)"
+.Nm Biff
+通知系统在当前终端会话期间有新邮件是否提醒你。
+.Pp
+支持的选项有
+.Nm biff :
+.Bl -tag -width 4n
+.It Cm n
+禁止新邮件提醒。
+.It Cm y
+开启新邮件提醒。
+.El
+.Pp
+当新邮件提醒开启后, 如果有邮件到达, 邮件头和邮件正文的头几行将在你的屏幕上打印出来。
+通常会在
+.Pa \&.login
+或者
+.Pa \&.profile
+文件中加上一个
+.Dq Li biff y
+命令, 好让每次登录时自动执行。 
+.Pp
+.Nm Biff
+通过
+.Xr comsat 8
+服务异步执行。 如果此服务没有开启,
+.Nm biff
+就不做任何事情。 在这种情况下, 或者需要同步提醒, 用
+.Xr sh 1
+的
+.Ar MAIL
+变量, 或者
+.Xr csh 1
+的
+.Ar mail
+变量。
+.Sh "参见 (SEE ALSO)"
+.Xr csh 1 ,
+.Xr mail 1 ,
+.Xr sh 1 ,
+.Xr comsat 8
+.Sh "历史 (HISTORY)"
+.Nm
+此命令出现于
+.Bx 4.0
+。
+.Sh "错误 (BUGS)"
+.Xr su 1
+,和 biff 看来并不能一起工作。 这个问题是由于 tty 任然是执行 su 命令的人所有, 这可能导致在改变你的会话的 biff 状态时出现
+.Dq Li 拒绝访问错误。
+.Pp
+请把错误报告给 netbug at ftp.uk.linux.org。 并且附上diffs/patches, 或者编译错误日志等,尽可能完整。
+.Sh "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.Sh "[中文版最新更新]"
+.B 2001/8/28
+.Sh "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/bind.1 b/src/man1/bind.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/bind.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/break.1 b/src/man1/break.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/break.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/builtin.1 b/src/man1/builtin.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/builtin.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/builtins.1 b/src/man1/builtins.1
new file mode 100644
index 0000000..80007d7
--- /dev/null
+++ b/src/man1/builtins.1
@@ -0,0 +1,15 @@
+.\" This is a hack to force bash builtins into the whatis database
+.\" and to get the list of builtins to come up with the man command.
+.TH BASH_BUILTINS 1 "2001 November 27" "GNU Bash-2.05a"
+.SH NAME
+bash, :, ., [, alias, bg, bind, break, builtin, cd, command, compgen, complete, 
+continue, declare, dirs, disown, echo, enable, eval, exec, exit,
+export, fc, fg, getopts, hash, help, history, jobs, kill,
+let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set,
+shift, shopt, source, suspend, test, times, trap, type, typeset,
+ulimit, umask, unalias, unset, wait \- bash 内建命令, 参见 \fBbash\fR(1)
+.SH "BASH BUILTIN COMMANDS 内建命令"
+.nr zZ 1
+.so man1/bash.1
+.SH "SEE ALSO 参见"
+bash(1), sh(1)
diff --git a/src/man1/bunzip2.1 b/src/man1/bunzip2.1
new file mode 100644
index 0000000..a26cfa1
--- /dev/null
+++ b/src/man1/bunzip2.1
@@ -0,0 +1 @@
+.so man1/bzip2.1
diff --git a/src/man1/bzcat.1 b/src/man1/bzcat.1
new file mode 100644
index 0000000..a26cfa1
--- /dev/null
+++ b/src/man1/bzcat.1
@@ -0,0 +1 @@
+.so man1/bzip2.1
diff --git a/src/man1/bzip2.1 b/src/man1/bzip2.1
new file mode 100644
index 0000000..269f289
--- /dev/null
+++ b/src/man1/bzip2.1
@@ -0,0 +1,364 @@
+\" 中文版版权所有 Liu JingSong, www.linuxforum.net 2000
+\" 本文档可在遵照LDP GENERAL PUBLIC LICENSE,Version 1, September 1998
+\" 中描述的条件下进行复制,且该文件发布时必须包含该文档.
+\"
+.PU
+.TH bzip2 1
+.SH NAME 命令名
+.br
+bzip2, bunzip2 \- 一种块排序文件压缩软件,v0.9.5
+.br
+bzcat \- 将文件解压缩至标准输出
+.br
+bzip2recover \- 恢复损坏的 bzip2 文件
+
+.SH 总览
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.br
+.ll -8
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH 描述
+.I bzip2
+采用 Burrows-Wheeler 块排序文本压缩算法和 Huffman 编码方式压缩文件。
+压缩率一般比基于 LZ77/LZ78 的压缩软件好得多,其性能接近 PPM 族统计类
+压缩软件。
+
+命令行参数有意设计为非常接近
+.I GNU gzip 
+的形式,但也不完全相同。
+
+.I bzip2
+从命令行读入文件名和参数。 每个文件被名为 "原始文件名.bz2" 的压缩文件替换。
+每个压缩文件具有与原文件相同的修改时间、 权限, 如果可能的话,
+还具有相同的属主, 因此在解压缩时这些特性将正确地恢复。
+在某些文件系统中, 没有权限、 属主或时间的概念,
+或者对文件名的长度有严格限制, 例如 MSDOS, 在这种情况下,bzip2
+没有保持原文件名、 属主、 权限以及时间的机制,
+从这个意义上说,bzip2 对文件名的处理是幼稚的。
+
+.I bzip2
+和
+.I bunzip2
+在缺省情况下不覆盖已有的文件。 如果想覆盖已有的文件,要指定 \-f 选项。
+
+如果未指定文件名,
+.I bzip2
+将压缩来自标准输入的数据并写往标准输出。在这种情况下,
+.I bzip2
+会拒绝将压缩结果写往终端,因为这完全无法理解并且是没有意义的。
+
+.I bunzip2
+(以及
+.I bzip2 \-d) 
+对所有指定的文件进行解压缩处理。不是由
+.I bzip2
+产生的文件将被忽略,同时发出一个警告信息。
+.I bzip2
+按下列方式由压缩文件名确定解压后的文件名:
+
+       filename.bz2    解压成   filename
+       filename.bz     解压成   filename
+       filename.tbz2   解压成   filename.tar
+       filename.tbz    解压成   filename.tar
+       anyothername    解压成   anyothername.out
+
+如果文件名的后缀不是下列之一:
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+或
+.I .tbz, 
+.I .bzip2 
+将抱怨无法确定原始文件名,并采用原文件名加
+.I .out
+作为解压缩文件名。
+
+在压缩时,如果不提供文件名,bzip2 将从标准输入读取数据,压缩结果写往标准输出。
+
+.I bunzip2 
+能够正确地解压由两个或更多个压缩文件连在一起的文件。
+解压的结果为相应的连在一起的未压缩文件。
+ bzip2 也支持对连在一起的压缩文件的完整性检查(\-t选项)。
+
+同样可采用 \-c 选项将文件压缩或解压缩至标准输出。
+多个文件可通过这种方式压缩或解压缩。
+输出结果被依次送往标准输出。 采用这种方式对多个文件的压缩将生成包含
+多个压缩文件的数据流。这样的数据流只能被 0.9.0 版或其后续版本的
+.I bzip2
+正确解压。较早版本的
+.I bzip2
+会在解压完第一个文件之后停止。
+
+.I bzcat
+(或
+.I bzip2 -dc) 
+将所有指定文件解压缩至标准输出。
+
+.I bzip2
+可从环境变量
+.I BZIP2
+和
+.I BZIP
+中依次读取参数, 并在命令行参数之前对其进行处理。 这是提供缺省选项的方便途径。
+
+即使压缩后的文件略大于原文件, 压缩也总是照样进行。
+小于大约 100 字节的文件压缩后倾向于变大,
+因为会有一个 50 字节的数据头。 对于随机数据 (包括大多数压缩软
+件的输出), 大约每字节压成 8.05 位, 放大率约为 0.5%。
+
+.I bzip2
+采用 32 位 CRC 校验码作自我检查,以确认解压后的文件与原始文件相同。
+这可用于检测压缩文件是否损坏,并防止
+.I bzip2
+中未知的缺陷(运气好的话这种可能性非常小)。 数据损坏而未检测到的几率非常之小,
+对于每个被处理的文件大约是四十亿分之一。
+检查是在解压缩时进行的, 因此它只能说明某个地方出问题了。
+它能帮助恢复原始未压缩的数据。可以用
+.I bzip2recover
+来尝试从损坏的文件中恢复数据。
+
+返回值:正常退出返回 0, 出现环境问题返回 1
+(文件未找到,非法的选项,I/O错误等),
+返回 2 表明压缩文件损坏,出现导致
+.I bzip2
+紧急退出的内部一致性错误(例如缺陷)时返回 3。
+
+.SH 选项
+.TP
+.B \-c --stdout
+将数据压缩或解压缩至标准输出。
+.TP
+.B \-d --decompress
+强制解压缩。
+.I bzip2, 
+.I bunzip2 
+以及
+.I bzcat 
+实际上是同一个程序,进行何种操作将根据程序名确定。
+指定该选项后将不考虑这一机制,强制
+.I bzip2
+进行解压缩。
+.TP
+.B \-z --compress
+\-d 选项的补充:强制进行压缩操作,而不管执行的是哪个程序。
+.TP
+.B \-t --test
+检查指定文件的完整性,但并不对其解压缩。
+实际上将对数据进行实验性的解压缩操作,而不输出结果。
+.TP
+.B \-f --force
+强制覆盖输出文件。通常
+.I bzip2 
+不会覆盖已经存在的文件。该选项还强制
+.I bzip2 
+打破文件的硬连接,缺省情况下 bzip2 不会这么做。
+.TP
+.B \-k --keep
+在压缩或解压缩时保留输入文件(不删除这些文件)。
+.TP
+.B \-s --small
+在压缩、 解压缩及检查时减少内存用量。 采用一种修正的算法进行压缩和测试,
+每个数据块仅需要 2.5 个字节。
+这意味着任何文件都可以在 2300k 的内存中进行解压缩,
+尽管速度只有通常情况下的一半。
+
+在压缩时,\-s将选定 200k 的块长度,内存用量也限制在 200k 左右,
+代价是压缩率会降低。
+总之,如果机器的内存较少(8兆字节或更少),
+可对所有操作都采用\-s选项。参见下面的内存管理。
+.TP
+.B \-q --quiet
+压制不重要的警告信息。属于 I/O 错误及其它严重事件的信息将不会被压制。
+.TP
+.B \-v --verbose
+详尽模式 -- 显示每个被处理文件的压缩率。
+命令行中更多的 \-v 选项将增加详细的程度,
+使 bzip2 显示出许多主要用于诊断目的信息。
+.TP
+.B \-L --license -V --version
+显示软件版本,许可证条款及条件。
+.TP
+.B \-1 to \-9
+在压缩时将块长度设为 100 k、200 k ..  900 k。
+对解压缩没有影响。参见下面的内存管理。
+.TP
+.B \--
+将所有后面的命令行变量看作文件名,即使这些变量以减号"-"打头。
+可用这一选项处理以减号"-"打头的文件名,
+例如:bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+这些选项在 0.9.5 及其以上版本中是多余的。
+在较早的版本中,这两个选项对排序算法
+的行为提供了一些粗糙的控制,有些情况下很有用。
+0.9.5 及其以上版本采用了改进的算法而与这些选项无关。
+
+.SH 内存管理
+.I bzip2 
+按照数据块压缩大文件。 数据块长度同时影响数据的压缩率和压缩及解压缩时需要
+的内存用量。 选项 \-1 至 \-9 将数据块长度分别指定为 100,000 字节至
+900,000(缺省)字节。
+在解压缩时, 压缩时使用的块长度从压缩文件的头中读取,
+同时
+.I bunzip2
+分配出刚好够用的内存对文件进行解压缩。
+由于数据块长度保存在压缩文件中, 所以在解压缩时不需要 \-1 至 \-9 这些选项,
+因而将被忽略。
+
+可以按下面的公式估计压缩和解压缩时的内存用量,单位为字节:
+
+       压缩:   400k + ( 8 x 数据块长度 )
+
+       解压缩: 100k + ( 4 x 数据块长度 ), 或
+                      100k + ( 2.5 x 数据块长度 )
+
+大数据块长度产生迅速缩小的临界返回 (give rapidly diminishing marginal returns)。
+在小机器上使用
+.I bzip2
+时, 一个值得记住的事实是, 大多数压缩来自数据块长度的前 200 或 300k。
+另外重要的一点是, 解压缩时内存的需要量是在压缩时用块长度选项设定的。
+
+对于缺省用 900k 的数据块长度压缩的文件,
+.I bunzip2
+大约需要 3700k 字节的内存进行解压缩。为支持一台 4MB 机器上任何文件的解压缩,
+.I bunzip2
+有一个选项大约只需一半容量的内存,约 2300k 字节。 解压缩速度同样也降低一半。
+因此应该只在需要时采用该选项。相应的选项标志为 \-s。
+
+一般来说,应尽量采用内存允许的最大数据块长度,
+因为这能达到最好的压缩率,
+压缩和解压缩速度实质上不受块长度的影响。
+
+另一个值得注意的问题是关于小于一个数据块长度的文件的, 也就是说, 所遇到的
+大多数文件使用一个大数据块。 由于文件长度小于一个数据块长度,
+实际使用到的内存与文件长度成正比。
+例如,采用 \-9 选项压缩一个 20,000 字节的文件时,
+将分配 7600k 的内存,
+但其中只用到了 400k+20000*8=560k 字节。同样地,在解压缩时将分配
+3700k 内存,但只用到 100k + 20000 * 4 = 180 k 字节。
+
+下表总结了不同数据块长度下的内存用量。同时列出的还有 Calgary 文本压缩语料
+库中的 14 个文件的压缩长度,这 14 个文件压缩前总长度为 3,141,622 字节。
+这些数据显示了压缩率是如何随数据块长度变化的。
+由于这一语料库主要由小文件组成, 所以这些数字并没有充分体现出大文件情况下,
+采用大数据块所能达到的较高压缩率的优势。
+
+           压缩时      解压缩     解压缩 -s     语料库文件
+    Flag   内存用量   内存用量   选项内存用量   压缩长度
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH 从损坏的文件中恢复数据
+.I bzip2
+按数据块对数据进行压缩,数据块长度通常为 900k 字节。每个数据块被独立地处理。
+如果由于介质或传输错误导致多数据块的 .bz2 文件损坏,有可能将文件中未损坏的
+数据块中的数据恢复。
+
+压缩后的数据块以一个 48 位的结构分界,因而有可能在合理的范围内找到块边界。
+每个数据块也带着自己的 32 位 CRC 校验码,因此可以区分损坏与未损坏的数据块。
+
+.I bzip2recover
+是一个简单的程序,它的功能是在 .bz2 文件中寻找数据块,并将每个数据块写到
+自己的 .bz2 文件中。然后可以用
+.I bzip2 
+\-t
+测试结果的完整性,将未损坏的部分解压缩。
+
+.I bzip2recover
+只有一个命令行变量,即损坏文件的名字。输出结果是一系列象 "rec0001file.bz2"、
+"rec0002file.bz2" 这样的文件,
+每个文件含有从损坏文件中找出的数据块。
+输出文件名设计为在接下来的处理中可方便地使用通配符,
+例如,"bzip2 -dc rec*file.bz2>recovered_data",可按正确的次序列出文件。
+
+.I bzip2recover
+在处理大文件时最有用, 因为大文件含有很多数据块。
+显然用它处理单个数据块的损坏文件不会有任何结果,
+因为一个损坏的数据块是无法恢复的。
+如果想尽量减少潜在的由于介质及传输错误导致的数据损坏,
+可以考虑采用较小的数据块长度进行压缩。
+
+.SH 有关性能的注解
+在压缩的排序阶段, 相似的字符串将被聚集在一起。 因此, 对于包含很长重复符号
+的文件, 例如象 "aabaabaabaab......" 这样的字符串(重复几百次), 压缩速度会
+比通常情况慢得多。 0.9.5 及其以上版本在处理这样的重复时, 速度比以前版本提高
+了很多。 最坏情况与平均情况下的压缩时间之比约为 10:1。 对于以前的版本,
+这一数字大约是 100:1 以上。你如果愿意,
+可采用 \-vvvv 选项来非常详细地监视这一过程。
+
+解压缩速度并不受这些现象的影响。
+
+.I bzip2
+通常分配出几兆字节的内存用于处理数据, 对这些内存的访问是以相当随机的方式
+进行的。 这意味着, 压缩及解压缩的性能在很大程度上取决于机器上处理高速缓存
+未命中的速度。 因此,
+已经观察到对程序作很小的减少失败率的改动会导致不成比例的很大的性能
+上的提升。 我设想
+.I bzip2
+在有大量高速缓存机器上的性能最佳。
+
+.SH 警告
+I/O 错误信息并不是很有用。
+.I bzip2
+会尽量探测 I/O 错误信息并干净地退出, 但问题的细节有时看上去很容易引起误解。
+
+本手册页适用于 0.9.5 版的
+.I bzip2。
+由这一版本的 bzip2 产生的压缩数据与以前的公开版本 0.1pl2、0.9.0 完全兼容,
+但有一个例外:0.9.0 及其以上版本能正确解压缩多个连在一起的压缩文件,0.1pl2
+则不能, 它将在解压缩完数据流中的第一个文件之后停止。
+
+.I bzip2recover
+采用 32 位的整型数表示压缩文件中位的位置,
+因此它无法处理大于 512 兆字节的文件。
+但这一问题很容易解决。
+
+.SH 作者
+Julian Seward, jseward at acm.org.
+
+http://www.muraroa.demon.co.uk
+
+.I bzip2
+包含的想法及概念至少归功于下列人员:
+Michael Burrows 和 David Wheeler(块排序变换),
+David Wheeler(Huffman 编码器),
+Peter Fenwick(原始 bzip 的结构编程模型及许多改进),Alistair Moffat、
+Ian Witten(原始 bzip 中的算法编码)。
+我非常感激他们的帮助、 支持以及建议。 参见源发布的手册中有关文档来源中的线索。
+Christian von Roques 曾鼓励我寻找更快的排序算法, 以提高压缩速度。 bela Lubkin
+曾鼓励我改进最坏情况下的压缩性能。 很多人给我发来修补程序, 帮助解决移植问题,
+租借机器,提出建议等。
+
+.SH "[中文版维护人]"
+.B Liu JingSong <js-liu at 263.net>
+.SH "[中文版最新更新]"
+2001/01/31
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/bzip2recover.1 b/src/man1/bzip2recover.1
new file mode 100644
index 0000000..a26cfa1
--- /dev/null
+++ b/src/man1/bzip2recover.1
@@ -0,0 +1 @@
+.so man1/bzip2.1
diff --git a/src/man1/cal.1 b/src/man1/cal.1
new file mode 100644
index 0000000..1343da5
--- /dev/null
+++ b/src/man1/cal.1
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1989, 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\" Chinese version Copyright (c) 苏勇  ysu at gnocis.org
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Kim Letkeman.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)cal.1	8.1 (Berkeley) 6/6/93
+.\"
+.Dd June 6, 1993
+.Dt CAL 1
+.Os
+.Sh NAME
+.Nm cal
+.Nd 显示一个日历
+.Sh 总览
+.Nm cal
+.Op Fl mjy
+.Op Ar 月份 Op Ar 年份
+.Sh 描述
+.Nm Cal
+显示一个简单的日历.. 
+如果没有指定参数, 则显示当前月份.
+选项如下所列: 
+.Bl -tag -width Ds
+.It Fl m
+显示星期一作为一周的第一天..
+(缺省为星期日.)
+.It Fl j
+显示儒略历的(Julian)日期 (以 1 为基的天数, 从 1 月 1 日开始计数) .
+.It Fl y
+显示当前年份的日历.. 
+.El
+.Pp
+一个单一的参数指定要显示的年份 (1 \- 9999) ;
+注意年份必须被完全地指定: 
+.Dq Li cal 89
+.Em 不会
+显示1989年的日历. 
+两个参数表示月份 (1 \- 12) 和年份. 
+如果没有指定参数, 则显示当前月份的日历. 
+.Pp
+一年从Jan 1 (1 月 1 日) 开始.
+.Pp
+格里高利历法改革(Gregorian Reformation)被认为发生于 1752 年 9 月 3 日.
+在此之前, 多数国家已经认可这项改革(尽管有一些直到 20 世纪初才认可它).
+那天之后的 10 天在这项改革被略去了, 所以那个月的日历有点不太寻常. 
+.Sh 历史
+一个
+.Nm
+命令出现于第6版 AT&T UNIX. 
+
+.SH "[中文版维护人]"
+.B 苏勇 <ysu at gnocis.org>
+.SH "[中文版最新更新]"
+.B 2001/07/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/cat.1 b/src/man1/cat.1
new file mode 100644
index 0000000..0c69dc0
--- /dev/null
+++ b/src/man1/cat.1
@@ -0,0 +1,75 @@
+.TH CAT  1   December 1999   GNU textutils 2.0a  FSF
+
+.SH NAME
+cat \- 连接文件并在标准输出上输出
+
+.SH SYNOPSIS 总览
+.B cat
+[\fI选项列表\fR] [\fI文件列表\fR]...
+
+.SH DESCRIPTION 描述
+.\"  Add any additional description here
+.PP
+将文件列表中的文件或标准输入连接到标准输出。
+.TP
+\fB\-A\fR, \fB\-\-show\-all\fR
+等价于 \fB\-vET\fR 。
+.TP
+\fB\-b\fR, \fB\-\-number\-nonblank\fR
+给非空输出行编号。
+.TP
+\fB\-e\fR
+等价于 \fB\-vE\fR 。
+.TP
+\fB\-E\fR, \fB\-\-show\-ends\fR
+在每行结束显示 $ 。
+.TP
+\fB\-n\fR, \fB\-\-number\fR
+给所有输出行编号。
+.TP
+\fB\-s\fR, \fB\-\-squeeze\-blank\fR
+将所有的连续的多个空行替换为一个空行。
+.TP
+\fB\-t\fR
+等价于 \fB\-vT\fR 。
+.TP
+\fB\-T\fR, \fB\-\-show\-tabs\fR
+把 TAB 字符显示为 ^I 。
+.TP
+\fB\-u\fR
+(被忽略的选项)
+.TP
+\fB\-v\fR, \fB\-\-show\-nonprinting\fR
+除了 LFD 和 TAB 之外所有控制符用 ^ 和 M- 记方式显示。
+.TP
+\fB\-\-help\fR
+显示帮助并退出。
+.TP
+\fB\-\-version\fR
+显示版本信息并退出。
+.PP
+没有指定文件或指定的文件是 -,则从标准输入读取。
+
+.SH AUTHOR 作者
+由 Torbjorn Granlund 和 Richard M. Stallman 完成。
+
+.SH  REPORTING BUGS 报告缺陷 
+向 <bug-textutils at gnu.org> 报告缺陷。
+
+.SH COPYRIGHT 版权
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH  SEE ALSO 又见 
+完整的 cat 文档是以 Texinfo 手册的形式维护的,如果 info 和 cat 在你的机器上
+被正确的安装了,使用命令 info cat 就访问完整的文档了。
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+.BR 2001/01/31
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man1/cce.1 b/src/man1/cce.1
new file mode 100644
index 0000000..d031a93
--- /dev/null
+++ b/src/man1/cce.1
@@ -0,0 +1,70 @@
+.TH cce 1 "cce v0.35" "Sep 1999"
+
+.SH NAME
+cce \- 控制台中文环境
+
+.SH 语法 (SYNTAX) 
+.B cce [-e program]
+
+.SH 描述 (DESCRIPTION)
+该程序是一个类似于 WZCE , yact 和 chdrv 的控制台中文平台。
+进入该环境后可以用“空格 + Ctrl”键来切换中文/英文的不同输
+入方式,“ Ctrl+Alt+0~9 ”可以用来改变不同的输入法。
+“ Ctrl+Alt+9 ”是内码输入法。“ Ctrl+Alt+0 ”是拼音输入法。
+默认情况下,CCE以全拼输入法作为输入法 1 (默认输入法),五笔
+输入法作为输入法 2 。你可以通过使用工具软件 cin2tab(安装在
+/usr/lib/cce 中)和 tab2cin 来创建自己的输入法。 cin2tab 会
+将输入法的源文件格式( *.cin )转换成二进制格式,而 tab2cin 
+完成的是相反的工作。
+.PP
+为了使用鼠标的剪切和粘贴功能,你必须在你的配置文件( cce.cfg )
+中设置你的鼠标类型。 Microsoft (串行鼠标)或 PS2 (默认)。
+
+.SH 选项 (OPTIONS)
+.B -e
+.PP
+定义 CCE 启动后自动运行的程序,默认的是 shell
+.PP
+例如:
+.PP
+cce -e vi
+
+
+.SH 配置 (CONFIGURATION)
+CCE 的配置文件是 /usr/lib/cce/cce.cfg 。你可以在这个文件中定义
+很多选项。
+
+.SH 使用方法 (USAGE)
+ Ctrl+Space              切换中文/英文输入法
+ Ctrl+Alt+0              拼音输入法
+ Ctrl+Alt+9              内码输入法
+ Ctrl+Alt+1              全拼输入法
+ Ctrl+Alt+2              五笔输入法
+ Ctrl+Alt+3-Ctrl+Alt+8   其它输入法
+
+.SH 
+作者(AUTHORS)
+yact:  Nicholas Pearl <Nicholas.bbs at bbs.csie.nctu.edu.tw>
+.PP
+bcs16: Server <cnoize.bbs at bbs.cis.nctu.edu.tw>
+.PP
+chdrv: Youzhong Wang <wycc at iis.sinica.edu.tw> 
+.PP
+kon: Takashi MANABE (manabe at papilio.tutics.tut.ac.jp)
+.PP
+pyinput: ZhenChun Li (zhchli at 163.net)
+.PP
+cce:  Rui He <herui at cs.duke.edu>
+
+.SH 程序错误 (BUGS)
+如果发现任何程序错误或对该程序有任何建议,请发信到以下地址:
+herui at cs.duke.edu
+
+.SH 声明(DISCLAIMER)
+本程序不提供任何形式的保证,无论是书面的还是暗示的。不保证
+本程序的任何适用性。本程序作者不对本程序承担任何担保。
+
+8月29日 1999		    cce v0.35
+翻译者:所罗门
+10月20日 2000
+
diff --git a/src/man1/cd.1 b/src/man1/cd.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/cd.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/charset.1 b/src/man1/charset.1
new file mode 100644
index 0000000..1ab2c3c
--- /dev/null
+++ b/src/man1/charset.1
@@ -0,0 +1,81 @@
+.TH CHARSET 1 "10 Aug 1998" "Console tools" "Linux User's Manual"
+
+.SH NAME
+charset \- 设置 G0/G1 字符集槽中的一个的 ACM
+
+.SH "总览 (SYNOPSIS)"
+.BI "charset [" -v "] " G0 | G1 " [" cp437 | iso01 | vt100 | user | <acm_name> ]
+
+.SH "描述 (DESCRIPTION)"
+linux 终端 有 两个 字符集 槽 (charset slot), 分别 用
+.I G0
+和
+.IR G1
+表示。
+.B charset
+把 当前 虚拟 终端 用的 槽 改为
+.I G0
+或者
+.IR G1
+并且 填入 3个 预定义的 ACM
+.RI ( cp437 ", " iso01 ", " vt100 )
+或者 是 用户 定义的 ACM 中 的 一个。 你 可以 指定
+.IR user
+来 查询 当前 用户 定义的 ACM, 或者 指定 一个 文件名, 把 文件 中 的 新的
+ACM 装进 一个 槽。
+
+注意 虽然 每个 虚拟 终端 都有 自己 的 槽 设置, 但是 对 所有 的 虚拟 终端
+只能 有 一个 用户 定义 的 ACM, 也就是 说 当你 的 tty1 设置 是
+.I G0=cp437
+和
+.IR G1=vt100
+tty2 设置 是
+.I G0=iso01
+和
+.I G1=iso02
+(用户 定义) 时, 你
+.B 不能
+同时 tty1 用
+.I iso02
+tty2 用
+.IR iso03 。
+这是 linux 内核 的 限制。
+
+注意 你可以 用
+.BR filterm (1)
+实用 程序 来 模拟 这样 的 设置。 在 终端 是 UTF8 模式 时, 告诉
+.B filterm
+在 运行 中 把 屏幕 的 输出 转换 为 UTF8.
+
+你 可以 在 Marcin Kowalczyk 写的
+.BR konwert (1)
+包中 找到
+.BR filterm (1) ,
+包 可以 从
+.IR http://qrczak.home.ml.org/
+获得。
+
+.SH "选项 (OPTIONS)"
+.TP
+.I -v
+详细 显示。
+.B charset
+会 显示 它 正在 做什么。
+
+.SH "错误 (BUGS)"
+.B charset
+在 指定 的 时间 并 不能 判断 2 个 槽 中 的 哪个 正在 被 使用, 所以 如果 你
+不 希望 改变 另外 一个, 你 必须 告诉 它 你 希望 的 是 哪一个。 这个 是 终端
+驱动 程序 的 限制。
+
+.SH "参见 (SEE ALSO)"
+.BR consolechars (8),
+.BR unicode_start (1),
+.BR filterm (1).
+
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chattr.1 b/src/man1/chattr.1
new file mode 100644
index 0000000..c470e5d
--- /dev/null
+++ b/src/man1/chattr.1
@@ -0,0 +1,99 @@
+.\" -*- nroff -*-
+.TH CHATTR 1 "1999年11月" "E2fsprogs version 1.18"
+.SH NAME(名称)
+chattr \- 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
+.SH SYNOPSIS(总览)
+.B chattr
+[
+.B \-RV
+]
+[
+.B \-v
+.I version
+]
+[
+.I mode
+]
+.I files...
+.SH DESCRIPTION(描述)
+.B chattr
+修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
+.PP
+符号模式有+-=[ASacdisu]几种格式.
+.PP
+操作符`+'用来在文件已有属性的基础上增加选定的属性;
+`-'用来去掉文件上的选定的属性;而`='用来指定该文件的唯一属性.
+.PP
+字符`ASacdisu'用作文件新属性的选项:
+不更新atime(A),同步更新(S),只能添加(a),
+压缩(c),不可变(i),不可转移(d),删除保护(s)以及不可删除(u).
+.SH OPTIONS(选项)
+.TP
+.B \-R
+递归地修改目录以及其下内容的属性.
+如果在递归目录时遇到了符号链接,遍历将跳过.
+.TP
+.B \-V
+详尽地给出chattr的输出信息并打印出程序的版本.
+.TP
+.BI \-v " version"
+设置文件系统的版本.
+.SH ATTRIBUTES(属性)
+当修改设置了'A'属性的文件时,它的atime记录不会改变.
+这可以在笔记本电脑系统中避免某些磁盘I/O处理.
+.PP
+设置了`a'属性的文件只能在添加模式下打开用于写入.
+只有超级用户可以设置或清除该属性.
+.PP
+设置了`c'属性的文件在磁盘上由内核自动进行压缩处理.
+从该文件读取时返回的是未压缩的数据.
+对该文件的一次写入会在保存它们到磁盘之前进行数据压缩.
+.PP
+设置了`d'属性的文件不能对其运行
+.BR dump (8)
+程序进行备份.
+.PP
+设置了`i'属性的文件不能进行修改:你既不能删除它,
+也不能给它重新命名,你不能对该文件创建链接,
+而且也不能对该文件写入任何数据.
+只有超级用户可以设置或清除该属性.
+.PP
+当删除设置了`s'属性的文件时,将对其数据块清零
+并写回到磁盘上.
+.PP
+当修改设置了`S'属性的文件时,
+修改会同步写入到磁盘上;这与应用
+到文件子系统上的`sync'挂载选项有相同的效果.
+.PP
+当删除设置了`u'属性的文件时,
+将会保存其内容.
+这使得用户可以请求恢复被删除的文件.
+.PP
+.SH AUTHOR(作者)
+.B chattr
+的作者为Remy Card <card at masi.ibp.fr>,
+他是ext2 fs的开发和维护者.
+.SH BUGS AND LIMITATIONS(BUGS和局限性)
+对于ext2 fs 0.5a来说,`c'和`u'属性是不被
+内核代码所承认的.
+对于Linux 2.0内核而言,'A'属性也是不被
+内核代码所支持的.
+(noatime代码仍在测试中.)
+.PP
+这些属性将在未来的ext2 fs版本中实现.
+.SH AVAILABILITY(怎样获取)
+.B chattr
+是e2fsprogs包的一部分,
+你可以通过
+对tsx-11.mit.edu的匿名ftp访问在
+/pub/linux/packages/ext2fs下找到它.
+.SH SEE ALSO(另见)
+.BR lsattr (1)
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chfn.1 b/src/man1/chfn.1
new file mode 100644
index 0000000..f0bf387
--- /dev/null
+++ b/src/man1/chfn.1
@@ -0,0 +1,66 @@
+.\"
+.\"  chfn.1 -- change your finger information
+.\"  (c) 1994 by salvatore valente <svalente at athena.mit.edu>
+.\"
+.\"  this program is free software.  you can redistribute it and
+.\"  modify it under the terms of the gnu general public license.
+.\"  there is no warranty.
+.\"
+.\"
+.TH CHFN 1 "October 13 1994" "chfn" "Linux Reference Manual"
+.SH NAME
+chfn \- 改 变 你 的 finger 讯 息
+.SH "总览 SYNOPSIS"
+.B chfn
+[\ \-f\ full-name\ ] [\ \-o\ office\ ] [\ \-p\ office-phone\ ]
+[\ \-h\ home-phone\ ] [\ \-u\ ] [\ \-v\ ] [\ username\ ]
+.SH "描述 DESCRIPTION"
+.B chfn
+是 用 来 改 变 你 的 finger 讯 息 。 讯 息 是 存 放 在 
+.I /etc/passwd 
+档 内 。 可 藉 由 
+.B finger 
+来 显 示 你 的 讯 息 。 Linux 
+.B finger 
+命 令 会 显 示 四 段 讯 息 , 这 些 讯 息 均 可 藉 由 
+.B chfn 
+改 变 : 真 实 姓 名 , 工 作 地 点 电 话 , 及 你 家 的 电 话 。
+.SS "命令行 COMMAND LINE"
+每 一 段 讯 息 均 可 在 命 令 列 上 指 定 。 如 没 有 给 定 讯 息 , 
+.B chfn 
+进 入 交 互 模 式.
+.SS "交互模式 INTERACTIVE MODE"
+交互模式中,
+.B chfn
+会 在 每 一 栏 前 提 示 。 在 提 示 状 态 下 , 你 就 可 输 入 新 的 讯 息 或 是 按 return 而 不 改 变 。 输 入       “none” 则 表 示 该 栏 空 白 。
+.SH "选项 OPTIONS"
+.TP
+.I "\-f, \-\-full-name"
+真 实 姓 名
+.TP
+.I "\-o, \-\-office"
+办 公 室 号 码
+.TP
+.I "\-p, \-\-office-phone"
+办 公 室 电 话
+.TP
+.I "\-h, \-\-home-phone"
+家 里 的 电 话
+.TP
+.I "\-u, \-\-help"
+秀 出 使 用 说 明 短 讯 。
+.TP
+.I "-v, \-\-version"
+秀 出 版 本 讯 息 。
+.SH "参见 SEE ALSO"
+.BR finger (1),
+.BR passwd (5)
+.SH "作者 AUTHOR"
+Salvatore Valente <svalente at mit.edu>
+
+.SH "[中文版维护人]"
+.B Best Linux
+.SH "[中文版最新更新]"
+.B 1999
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chgrp.1 b/src/man1/chgrp.1
new file mode 100644
index 0000000..9e054c8
--- /dev/null
+++ b/src/man1/chgrp.1
@@ -0,0 +1,125 @@
+.\" Copyright Andries Brouwer, 2000
+.\" Chinese Version Copyright Scorpio, www.linuxforum.net, 2000
+.\"
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH CHGRP 1 "August 2000" "GNU fileutils 4.0"
+.SH NAME
+chgrp \- 改变文件的组所有权
+.SH 总览
+.BI "chgrp [" 选项 "] " "组文件..."
+.sp
+POSIX 选项:
+.B "[\-R] [\-\-]"
+.sp
+Austin 草拟选项:
+.B [\-hHLPR]
+.sp
+GNU 团体指示:
+.BI [\-\-reference= rfile ]
+.sp
+GNU 选项 (简易格式):
+.B [\-cfvR]
+.B "[\-\-help] [\-\-version]"
+.SH  描述
+.B chgrp
+为给出的
+.B "file(文件)"
+改变它的组所有权.
+.IR group(组) ,
+可以是组名和组ID数字两者之一.
+.SH "POSIX 选项"
+.TP
+.B \-R
+递归的改变目录和它的内容的组所有权
+(即使遇到错误也继续.)
+.TP
+.B "\-\-"
+结束选项列表.
+.SH "AUSTIN 草拟选项"
+.TP
+.B \-h
+对于给出的文件是符号链接的, 就改变符号链接的本身,这
+比改变它指乡的对象更好.如果系统不支持符号链接的组所
+有权,那就对它不起作用.
+.TP
+.BR \-H " (half-logical[半逻辑?])"
+(当和
+.BR \-R
+一起给出)
+给出的文件操作数书指向目录的符号链接时,改变这个目录
+和目录中文件的组所有权
+.TP
+.BR \-L " (logical[(全)逻辑,想来是和上面的对应的])"
+(当和
+.BR \-R
+一起给出.)
+给出的文件,不论是命令行操作数还是遍历整个树,操作数书
+指向目录的符号链接时, 改变这个目录和目录中文件的组所
+有权.
+.TP
+.BR \-P " (physical)"
+(当和
+.BR \-R
+一起给出.)
+对于一个文件,不论是命令行操作数还是遍历整个树, 是符号
+链接的,只改变它本身, 优于(改变)指向的对象如果系统不支
+持符号链接的组所有权,那就对它不起作用.这是默认值.
+.TP
+.BR \-R
+递归的改变目录和它的内容的组所有权
+.SH "额外的 GNU 描述"
+一个 GNU 扩展(最新的在fileutils 4.0里)允许
+.BI "\-\-reference=" "rfile"
+作为组的描述:和
+.IR rfile
+一样的组.
+.SH "GNU 选项"
+.TP
+.B "\-c, \-\-changes"
+详细描述对每一个文件的动作:实际上改变了哪个组。
+.TP
+.B "\-f, \-\-silent, \-\-quiet"
+不列出错误信息.(那些组不能被改变).
+.TP
+.B "\-h, \-\-no\-dereference"
+作用于符号链接本身代替它所指向的.
+仅可用于
+.B lchown
+系统调用被提供时.
+.TP
+.B "\-v, \-\-verbose"
+详细描述作用或没作用的所有
+.IR 文件 .
+.TP
+.B "\-R, \-\-recursive"
+递归的改变目录和它的内容的组所有权
+.SH "GNU 标准选项"
+.TP
+.B "\-\-help"
+显示使用方法到标准输出并退出.
+.TP
+.B "\-\-version"
+显示版本信息到标准输出并退出.
+.SH 环境变量
+有以下变量是有通常的意义的 LANG, LC_ALL, LC_CTYPE 和 
+LC_MESSAGES.对于XSI-conforming系统:NLSPATH有通常的意
+义.
+.SH "符合到"
+POSIX 1003.2 仅要求 \-R 选项.使用其它选项不一定有效.
+.SH 注意
+这份
+.B chgrp
+描述同样可以在fileutils-4.0 包中找到;
+其它版本也许些微有些差别.
+把修正和更新邮到 aeb at cwi.nl.
+漏洞报告邮到 fileutils-bugs at gnu.ai.mit.edu.
+
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chmod.1 b/src/man1/chmod.1
new file mode 100644
index 0000000..544db4e
--- /dev/null
+++ b/src/man1/chmod.1
@@ -0,0 +1,121 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Chinese version Copyright 王炎,BitBIRD,Scorpio,www.linuxforum.net 2000.
+.\" Modifier: Scorpio,BitBIRD.
+.\"
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH CHMOD 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+chmod \- 改变文件的访问权限
+
+.SH 总揽
+.BI "chmod [" options "] " "mode file..."
+.sp
+.SH POSIX 选项:
+.B [-R]
+.sp
+GNU 选项 (最短方式): 
+.B [-cfvR] 
+.BI [--reference=rfile]
+.B "[--help] [--version] [--]"
+.SH 描述
+使用chmod命令改变指定文件访问权限有两种方式:一种是用符号
+标记所进行更改,另一种方式是采用8进制数指定新的访问权限。
+使用下面的语法格式来使用符号改变方式
+.br
+\&`[ugoa...][[+-=][rwxXstugo...]...][,...]'.
+.PP
+在这种格式下,所带参数是一个用逗号分隔的字符列表.每个符号方式的
+改变命令以零或者字'ugoa'开始;'ugoa'控制哪些用户对该文件访问权
+限将被改变:文件的所有者(u),与文件所有者同组的用户(g),其他组的
+用户(o),所有用户(a).因此,a在这里等同于ugo.如果没有带参数,则缺
+省设置为a,运行效果相同,但是在umask中设置的位将不会受影响.
+.PP
+操作符'+'使得用户选择的权限被追加到每个指定文件,(操作给
+指定文件添加所选权限);操作符'-'使得这些权限被撤消;'='使得
+指定文件只具有这些权限。
+.PP
+字符串'rwxXstugo' 给用户选择新的属性:(r)读权限、(w)写权限、
+(x)执行权(或对目录的访问权),(X)只有目标文件对某些用户是
+可执行的或该目标文件是目录时才追加x属性,(s)同时设定用户
+或组ID,(t)粘滞位(保存程序的文本到交换设备上),(u)目标文件
+属主,(g)目标文件属主所在的组,(o)其他用户。(因此,'chmod g-s file'
+撤消sgid位,'chmod ug+s file'同时设置了suid和sgid位,'chmod o+s file'
+则没有进行任何设置)
+.PP
+POSIX并没有粘滞位的描述。它最初是指在交换设备上保留程序文本。
+现在,如果设置了目录的粘滞位,
+那么只有文件和目录的所有者可以删除该目录下的文件。
+(一般使用于类似于/tmp这样有基本写权限的目录)
+.PP
+数字模式是一到4个八进制数,每个数由位权为4,2,1的3位叠加而得.
+被省略掉的数字缺省设置为零. 第一位为4时为suid,2时为sgid,1时
+为粘滞位,.第二位设置文件所有者的权限:可读(4),可写(2),可执行(1);
+第三位设置了文件所在组其他用户的权限,值如上;第四位设置了其
+他组的用户的权限,值同上.
+.PP .
+由于chmod的系统调用不支持,chomd命令不能改变符号链接的权限.
+由于符号链接的权限从不使用,所以这也不成问题.无论如何,由于
+每个符号连接都可在命令行中列出,chmod改变了所指文件的属性.
+相反,chmod在递归目录遍历时忽略所碰到的符号连接.
+
+.SH POSIX 选项
+.B "\-R"
+改变目录及目录下的内容的访问权限.
+
+.SH "GNU 选项"
+.TP
+.B "\-c, \-\-changes"
+只有在文件的权限确实改变时才进行详细的说明
+.TP
+.B "\-f, \-\-silent, \-\-quiet"
+不输出权限不能改变的文件的错误信息
+.TP
+.B "\-v, \-\-verbose"
+详细说明权限的变化
+.TP
+.B "\-R, \-\-recursive"
+改变目录及其所有子目录的文件的权限
+.TP
+.BI "\-\-reference=" "rfile"
+(更新在fileutils 4.0上) 改变文件的模式到rfile.
+
+.SH "GNU 标准选项"
+.TP
+.B "\-\-help"
+在标准输出上输出帮助信息并退出
+.TP
+.B "\-\-version"
+在标准输出上输出版本信息并退出
+.TP
+.B "\-\-"
+终端选项列表
+.SH 环境变量
+变量LANG, LC_ALL, LC_CTYPE ,LC_MESSAGES与一般情况相同.
+
+.SH 遵循
+POSIX 1003.2 只需要-R参数。使用其他选项可能无法移植。该标准没有描述
+'t'权限位。该标准没有特别要求chmod命令是否必须通过拒绝或清除suid,sgid位
+来保持一致性,也就是说,当所有的可执行位都被清除了以后,
+chomd 是否还完全保留`s'位.
+
+.SH 非标准模式
+在上面的内容中我们讨论了't'位在目录上的用法。不同的系统对这些
+位的组合有特殊的定义。特别是Linux,继System V之后(参考System V
+接口描述(SVID)第三卷),给一个文件设置 sgid 位但又不给它设置组执行权限,
+那么就标志该文件被强制锁住.详细内容,参照文件
+/usr/src/linux/Docu-mentation/mandatory.txt
+
+.SH 注意
+此页描述的chmod基于fileutils-4.0 package;其他版本可能会有细微
+的差别.请将修正和增加发送到aeb at cwi.nl.
+程序中的错误报告到fileutils-bugs at gnu.ai.mit.edu.
+
+.SH "[中文版维护人]"
+.B 王炎 <wyd at 263.net>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chown.1 b/src/man1/chown.1
new file mode 100644
index 0000000..17108c9
--- /dev/null
+++ b/src/man1/chown.1
@@ -0,0 +1,104 @@
+.\" 版权所有 Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" 中文版版权所有 riser,BitBIRD www.linuxforum.net 2000
+.\" 本文档可在遵照LDP GENERAL PUBLIC LICENSE,Version 1, September 1998
+.\" 中描述的条件下进行复制,且该文件发布时必须包含该文档.
+.\"
+.TH CHOWN 1 "1998年11月" "GNU fileutils 4.0"
+.SH NAME
+chown \- 修改文件所有者和组别
+.SH 总览
+.BI "chown [" options "] " user " [:" group "] " file...
+.sp
+POSIX 选项:
+.B [\-R]
+.sp
+GNU 选项(最短格式):
+.B "[\-cfhvR] [\-\-dereference]"
+.BI [\-\-reference= rfile ]
+.B "[\-\-help] [\-\-version] [\-\-]"
+.SH 描述
+.B chown
+修改每个由第一个非选项参数声明的给定
+.I file(文件)
+的用户和/或组的所有权.如下:
+如果只给出了用户名(或者数字用户标识),那么该用户即成为每个指定
+文件的所有者,而该文件的组别并不改变.如果用户名后面紧跟着冒号和
+组名(或者是数字组标识),并且它们之间没有空格,那么文件的组所有权
+也随之改变.
+.SH "GNU细节"
+GNU版本允许使用一个点来替代冒号(学BSD的).[因为点是有效的用户
+名中的字符,所以这不被POSIX所接纳.]如果有一个冒号或者点,却没有
+组名跟在用户名后,那么该用户即成为文件的所有者,而且文件的组改为
+该用户的登录组.如果给定了冒号或者点,以及组,但是省略了用户名,那
+么只有文件的组被修改;在这种情况下,
+.B chown
+执行的是与
+.BR chgrp 
+相同的功能.
+.SH "POSIX选项"
+.TP
+.B "\-R"
+递归地修改目录及其下面内容的所有权.
+.SH "GNU选项"
+.TP
+.B "\-c, \-\-changes"
+详尽地描述每个
+.I file
+实际改变了哪些所有权.
+.TP
+.B "\-f, \-\-silent, \-\-quiet"
+不打印文件所有权不能修改的报错信息.
+.TP
+.B "\-h, \-\-no\-dereference"
+只作用于其本身的符号链接,而不修改它们所指向的文件.
+这只在提供了
+.B lchown
+系统调用的情况下才可用.
+.TP
+.B "\-v, \-\-verbose"
+详尽地描述对每个
+.IR file
+所执行的操作(或者无操作).
+.TP
+.B "\-R, \-\-recursive"
+递归地修改目录及其下面内容的所有权.
+.TP
+.B \-\-dereference
+修改符号链接目标端的所有权,而非符号链接自身.
+(file\%utils 4.0中实现的新功能.)
+.TP
+.BI "\-\-reference=" "rfile"
+(file\%utils 4.0中实现的新功能.)
+修改
+.I file
+的所有权为
+.IR rfile
+的所有权.
+.SH "GNU标准选项"
+.TP
+.B "\-\-help"
+在标准输出上打印一条用法信息,并以成功状态退出.
+.TP
+.B "\-\-version"
+在标准输出上打印版本信息,然后以成功状态退出.
+.TP
+.B "\-\-"
+终止选项列表.
+.SH 环境变量
+变量LANG, LC_ALL, LC_CTYPE和LC_MESSAGES取其常用义.
+.SH "遵循"
+POSIX 1003.2不允许使用点作为用户名和组名的分隔符.
+.SH 备注
+本页描述了包括在fileutils-4.0包中的
+.B chown;
+其它版本会有细微差别.
+请将您的修正和增补建议发到aeb at cwi.nl.
+程序中的bugs请报告到
+fileutils-bugs at gnu.ai.mit.edu.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chroot.1 b/src/man1/chroot.1
new file mode 100644
index 0000000..a7439ee
--- /dev/null
+++ b/src/man1/chroot.1
@@ -0,0 +1,50 @@
+.TH CHROOT "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+chroot \- 以 特定 根 目录 运行 命令 或者 交互式 shell
+
+.SH "总览 (SYNOPSIS)"
+.B chroot
+[\fIOPTION\fR]\fI NEWROOT \fR[\fICOMMAND\fR...]
+.br
+.B chroot
+\fIOPTION\fR
+
+.SH "描述 (DESCRIPTION)"
+.PP
+以 NEWROOT 为 根 目录 运行 COMMAND.
+.TP
+\fB\-\-help\fR
+显示 帮助 并且 退出
+.TP
+\fB\-\-version\fR
+显示 版本 信息 并且 退出
+.PP
+如果 没有 指定 命令, 运行 ``${SHELL} \fB\-i\fR'' (默认: /bin/sh).
+
+.SH "报告错误 (REPORTING BUGS)"
+把 错误 报告 给 <bug-sh-utils at gnu.org>.
+
+.SH "参见 (SEE ALSO)"
+.B chroot
+的 完整 的 文档 是 以 Texinfo 手册页 维护 的. 如果
+.B info
+和
+.B chroot
+程序 被 正确 的 安装 在 你的 机子 上, 用
+.IP
+.B info chroot
+.PP
+命令 查看 完整 的 手册页.
+
+.SH "版权 (COPYRIGHT)"
+版权所有 \(co 1999 自由软件基金会
+.br
+这一程序是自由软件; 拷贝条件见源文件.
+没有任何担保; 甚至没有适合特定目的的隐含的担保.
+
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chsh.1 b/src/man1/chsh.1
new file mode 100644
index 0000000..a585277
--- /dev/null
+++ b/src/man1/chsh.1
@@ -0,0 +1,59 @@
+.\"
+.\"  chsh.1 -- change your login shell
+.\"  (c) 1994 by salvatore valente <svalente at athena.mit.edu>
+.\"
+.\"  this program is free software.  you can redistribute it and
+.\"  modify it under the terms of the gnu general public license.
+.\"  there is no warranty.
+.\"
+.TH CHSH 1 "7 October 1998" "chsh" "Linux Reference Manual"
+.SH NAME
+chsh \- 改变登录 shell
+
+.SH 总览 (SYNOPSIS)
+.B chsh
+[\ \-s\ shell\ ] [\ \-l\ ] [\ \-u\ ] [\ \-v\ ] [\ username\ ]
+
+.SH 描述 (DESCRIPTION)
+.B chsh
+用于 改变 用户的 登录 shell. 如果 没有在 命令行上 指定 shell,
+.B chsh
+能够 做出 提示.
+
+.SS 有效的 SHELL (VALID SHELLS)
+.B chsh
+接受 系统中 任何 可执行文件 的 全路径名称.
+然而, 如果 它们 没有 在
+.I /etc/shells
+中 列举, chsh 将 发出 警告. 另一方面, 可以 把 chsh 配置成 只接受 这个文件中
+列举的 shell, 除非 你是 超级用户.
+
+.SH 选项 (OPTIONS)
+.TP
+.I "\-s, \-\-shell"
+指定 用户的 登录 shell.
+.TP
+.I "\-l, \-\-list-shells"
+显示
+.I /etc/shells
+中的 shell 列表, 然后退出.
+.TP
+.I "\-u, \-\-help"
+显示 使用方法, 然后退出.
+.TP
+.I "-v, \-\-version"
+显示 版本信息, 然后退出.
+.SH "另见 (SEE ALSO)"
+.BR login (1),
+.BR passwd (5),
+.BR shells (5)
+.SH 作者 (AUTHOR)
+Salvatore Valente <svalente at mit.edu>
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/10/24
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/chvt.1 b/src/man1/chvt.1
new file mode 100644
index 0000000..d165563
--- /dev/null
+++ b/src/man1/chvt.1
@@ -0,0 +1,34 @@
+.TH CHVT 1 "1997年10月7日" "控制台工具" "Linux用户手册"
+
+.SH NAME(名称)
+chvt \- 修改虚拟终端的前台环境
+
+.SH SYNOPSIS(总览)
+.BI chvt N
+
+.SH DESCRIPTION(描述)
+.B chvt
+.I N
+命令用来生成
+.RI /dev/tty N
+的前台终端.如果它本来不存在,即创建相应的屏幕.为了删除掉
+不用的VT(虚拟终端),可使用
+.BR deallocvt (1).
+键映射操作
+.RI `Console_ N '
+(通常绑定为键组合
+.RI (Ctrl\-)LeftAlt\-F N ,
+.I N
+在1-12的范围里取值,
+而
+.RI RightAlt\-F N\-12
+中的
+.I N 
+则在13-24的范围里取值)也允许切换到其它的VT,不过实际的切换
+只能在它已经分配的前提下进行.这防止了分配给新的VT一个错位
+的键值.
+
+.SH "SEE ALSO"(另见)
+
+.BR deallocvt (1).
+
diff --git a/src/man1/cksum.1 b/src/man1/cksum.1
new file mode 100644
index 0000000..b587bbc
--- /dev/null
+++ b/src/man1/cksum.1
@@ -0,0 +1,42 @@
+.TH CKSUM 1 "1999年12月" "GNU textutils 2.0a" 
+.SH NAME(名称)
+cksum \- 一个文件的检查和以及字节数
+.SH SYNOPSIS(总览)
+.B ../src/cksum
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION(描述)
+.\" 在这儿添加任何附加的描述信息
+.PP
+输出CRC(循环冗余校验码)检查和以及每个FILE的字节数.
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+输出版本信息并退出
+.SH AUTHOR(作者)
+Q. Frank Xia.
+.SH "REPORTING BUGS"(报告BUGS)
+报告bugs,请发到<bug-textutils at gnu.org>.
+.SH COPYRIGHT(版权)
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+这是自由软件;参看复制条件的源文件.不承担任何责任;更不用说商业性或针对特定目的的适用性.
+.SH "SEE ALSO"(另见)
+.B cksum
+的完整文档是以Texinfo手册的方式维护的.如果你正确地安装了
+.B info
+和
+.B cksum
+程序,那么使用命令
+.IP
+.B info cksum
+.PP
+应该会让你访问到整个手册.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/clear.1 b/src/man1/clear.1
new file mode 100644
index 0000000..0a97c6f
--- /dev/null
+++ b/src/man1/clear.1
@@ -0,0 +1,55 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
+.\"                                                                          *
+.\" Permission is hereby granted, free of charge, to any person obtaining a  *
+.\" copy of this software and associated documentation files (the            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, sublicense, and/or sell       *
+.\" copies of the Software, and to permit persons to whom the Software is    *
+.\" furnished to do so, subject to the following conditions:                 *
+.\"                                                                          *
+.\" The above copyright notice and this permission notice shall be included  *
+.\" in all copies or substantial portions of the Software.                   *
+.\"                                                                          *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+.\"                                                                          *
+.\" Except as contained in this notice, the name(s) of the above copyright   *
+.\" holders shall not be used in advertising or otherwise to promote the     *
+.\" sale, use or other dealings in this Software without prior written       *
+.\" authorization.                                                           *
+.\"***************************************************************************
+.\"
+.TH clear 1 ""
+.ds n 5
+.SH NAME(名称)
+\fBclear\fR - 清除终端屏幕
+.SH SYNOPSIS(总览)
+\fBclear\fR
+.br
+.SH DESCRIPTION(描述)
+\fBclear\fR可以在允许的情况下清屏.
+它会在环境变量中查找终端的类型,
+然后到
+\fBterminfo\fR数据库中找出清屏的方法.
+.SH SEE ALSO(另见)
+\fBtput\fR(1), \fBterminfo\fR(\*n)
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/clusterdb.1 b/src/man1/clusterdb.1
new file mode 100644
index 0000000..67c9cf1
--- /dev/null
+++ b/src/man1/clusterdb.1
@@ -0,0 +1,101 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CLUSTERDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+clusterdb \- 对一个PostgreSQL数据库进行建簇
+
+.SH SYNOPSIS
+.sp
+\fBclusterdb\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB--table | -t \fItable\fB  \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBclusterdb\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR[\fR \fB--all\fR\fR | \fR\fB-a\fR\fR ]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBclusterdb\fR 是一个用于对某个 PostgreSQL  数据库中的表进行重新建簇的工具。它寻找以前建过簇的表,然后在上次用过的同一个索引上再次建簇。将不会动那些从未建簇的表。
+.PP
+\fBclusterdb\fR 是对 SQL 命令 CLUSTER[\fBcluster\fR(7)] 的封装。 使用这两种方法对数据库建簇实际上没有任何区别。
+.SH "OPTIONS 选项"
+.PP
+\fBclusterdb\fR 接受下列命令行参数:
+.TP
+\fB-a\fR
+.TP
+\fB--all\fR
+ 对所有数据库建簇。
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+ 声明要建簇的数据库名字。如果没有声明这个并且没有使用 -a(或者 --all), 那么数据库名从环境变量 PGDATABASE 中读取。 如果那个也没有设置,那么使用用于连接的用户名。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 回显 clusterdb 生成并发送给服务器的命令。
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 不要显示响应。
+.TP
+\fB-t \fItable\fB\fR
+.TP
+\fB--table \fItable\fB\fR
+ 只对表 table 建簇。
+.PP
+.PP
+\fBclusterdb\fR 还接受下列命令行参数获取连接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明服务器运行所在的机器的主机名。如果值以斜杠开头, 那么就用作 Unix 域套接字的目录。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器监听的网际网 TCP 端口或者本地 Unix 域套接字文件扩展。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 进行连接的用户名
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制提示口令。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 出现困难的时候,参阅 CLUSTER [\fBcluster\fR(7)] 和 \fBpsql\fR(1) 获取有关可能的错误和错误信息的讨论。 数据库服务器必须在目标主机上运行。同样,任何缺省连接设置和 libpq 前端库使用的环境变量都将得以应用。
+.SH "EXAMPLES 例子"
+.PP
+ 对数据库 test 建簇:
+.sp
+.nf
+$ \fBclusterdb test\fR
+.sp
+.fi
+.PP
+ 对一个叫做 xyzzy 的数据库里的表 foo 建簇:
+.sp
+.nf
+$ \fBclusterdb --table foo xyzzy\fR
+.sp
+.fi
+.SH "SEE ALSO 参见"
+CLUSTER [\fBcluster\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/col.1 b/src/man1/col.1
new file mode 100644
index 0000000..2c4119d
--- /dev/null
+++ b/src/man1/col.1
@@ -0,0 +1,126 @@
+.\" Copyright (c) 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Michael Rendell.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)col.1	6.8 (Berkeley) 6/17/91
+.\"
+.TH col 1
+.Dd 1991年6月17日
+.Dt COL 1
+.Os
+.Sh NAME(名称)
+.Nm col
+.Nd 过滤掉输入中的反向换行符
+.Sh SYNOPSIS(总览)
+.Nm col
+.Op Fl bfx
+.OP Fl l Ar num
+.Sh DESCRIPTION(描述)
+.Nm Col
+过滤掉反向(以及半反向)换行符(LF: line feed or NL: new line),
+这样输出按正常顺序,即只包括正向和半正向换行符,
+而且在可能的地方使用tab替换白空格.这对
+.Xr nroff 1
+和
+.Xr tbl  1
+的输出处理很有用处.
+.Pp
+.Nm col
+从标准输出读入,并写出到标准输出上.
+.Pp
+选项如下:
+.Bl -tag -width "-lnum"
+.It Fl b
+不输出任何退格符,在每列的位置上只打印最后写的那个字符.
+.It Fl f
+允许正向半换行符(``fine''模式).
+通常,处于半行分界线上的字符打印在下一行.
+.It Fl x
+输出多个空格以替换tab.
+.It Fl l Ns Ar num
+在内存中至少缓冲
+.Ar num
+行.
+默认情况下,缓冲128行.
+.El
+.Pp
+.Nm col
+所能理解的用于回车操作的控制序列以及它们的十进制值都列在下面的表中:
+.Pp
+.Bl -tag -width "carriage return" -compact
+.It ESC\-7
+反向换行符(escape后接7)
+.It ESC\-8
+反向半换行符(escape后接8)
+.It ESC\-9
+正向半换行符(escape后接9)
+.It backspace
+反向移动一列(8);在第一列则忽略.
+.It carriage return
+(13)
+.It newline
+正向换行符(10);同时执行回车(carriage return)操作
+.It shift in
+转到正常字符集(15)
+.It shift out
+转到备选的字符集(14)
+.It space
+正向移动一列(32)
+.It tab
+正向移动到下一个tab(9)
+.It vertical tab
+反向换行符(11)
+.El
+.Pp
+丢弃所有不被承认的控制字符和escape序列.
+.Pp
+当读取字符时,
+.Nm Col
+保持着与字符集的联系,而且在输出时确保字符集是正确的.
+.Pp
+如果输入设备试图回复到最近被刷新的行,
+.Nm col
+会显示一条警告消息.
+.Sh SEE ALSO(另见)
+.Xr expand 1 ,
+.Xr nroff 1 ,
+.Xr tbl 1
+.Sh HISTORY(历史)
+.Nm col
+命令出现于AT&T UNIX版本6.
+.Sh "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.Sh "[中文版最新更新]" 
+2000/12/6
+.Sh 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/comm.1 b/src/man1/comm.1
new file mode 100644
index 0000000..f554974
--- /dev/null
+++ b/src/man1/comm.1
@@ -0,0 +1,59 @@
+.TH COMM "1" "February 2000" "GNU textutils 2.0a" FSF
+.SH NAME
+comm \- 逐行比较两个已排序的文件
+.SH "总览 (SYNOPSIS)"
+.B ../src/comm
+[\fIOPTION\fR]... \fILEFT_FILE RIGHT_FILE\fR
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+逐行比较 已排序的 文件 LEFT_FILE 和 RIGHT_FILE.
+.TP
+\fB\-1\fR
+屏蔽 左边文件 (LEFT_FILE) 中 不同于 右边文件 的 行(或内容)
+.TP
+\fB\-2\fR
+屏蔽 右边文件 (RIGHT_FILE) 中 不同于 左边文件 的 行(或内容)
+.TP
+\fB\-3\fR
+屏蔽 两个文件 中 相同 的 行(或内容)
+
+(译注: 原文为 "不相同的行", 疑有误)
+.TP
+\fB\-l\fR
+认为 输入数据 根据 当前的 locale 排了序 (应该 给 \fBsort\fR 提供
+\fB\-l\fR 选项).
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.SH "作者 (AUTHOR)"
+Richard Stallman 和 David MacKenzie.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B comm
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B comm
+程序, 使用 命令
+.IP
+.B info comm
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/10/19
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/command.1 b/src/man1/command.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/command.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/compgen.1 b/src/man1/compgen.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/compgen.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/complete.1 b/src/man1/complete.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/complete.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/continue.1 b/src/man1/continue.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/continue.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/cp.1 b/src/man1/cp.1
new file mode 100644
index 0000000..868cf26
--- /dev/null
+++ b/src/man1/cp.1
@@ -0,0 +1,283 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Chinese version Copyright Surran, BitBIRD of www.linuxforum.net
+.\"
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH CP 1 "August 1998" "GNU fileutils 3.16"
+.SH NAME
+cp \- 复制文件和目录
+.SH 总览
+.BI "cp [" "选项" "] " "文件路径"
+.br
+.BI "cp [" "选项" "] " "文件...目录"
+.sp
+POSIX 选项:
+.B [\-fipRr]
+.sp
+GNU 参数(最短形式):
+.B [\-abdfilprsuvxPR]
+.BI "[\-S " SUFFIX ]
+.B "[\-V {numbered,existing,simple}]"
+.BI [\-\-sparse= WHEN ]
+.B "[\-\-help] [\-\-version] [\-\-]"
+.SH 描述
+.B cp
+复制文件(或者目录等).
+可以使用这个命令复制一个文件到一个指定的目的地,
+或者复制任意多个文件到一个目的目录目录.
+.Pp
+如果最后一个命令参数为一个已经存在的目录名,
+.B cp
+会将每一个源
+.I 文件
+复制到那个目录下(维持原文件名).
+如果所给的参数只有两个文件名.它把前一个文件复制到后一个文件上.
+如果最后一个参数不是文件名,目录名,和给出多于两个非选项参数,是
+错误的.
+
+.Pp
+(因而:如果/b已经存在,那么'cp -r /a /b'会复制/a到/b而成为/b/a.
+而复制/a/x到/b而成为/b/a/x.但如果/b事先不存在,它会把/a复制为/b
+而复制/a/x到/b而成为/b/a/x.但如果/b事先不存在,它会把/a复制为/b
+而把/a/x复制为/b/x.)
+.Pp
+所创建的文件和/或目录的模式和原始的文件的模式是一样的,
+然后用用户umask值修改(除非使用了\-p选项),(但在递归方式
+复制目录时,新建目录会临时地获得他们的最终模式Ored,连同
+S_IRWXU(0700),以便进程能够读、写、查找这些新建的目录.
+.Pp
+复制文件到其自身时它什么事情都不做(除了可能会生成一条错误信息以外).
+当复制到一个现存的不同文件时,系统调用函数
+`open(path,O_WRONLY|O_TRUNC)'打开目的文件.当复制到一个新文件时,系
+统调用函数`open(path,O_WRONLY|O_CREAT,mode)'创建该文件.如果这操
+作失败,该文件存在,和给出了\-f选项,
+.B cp
+试图先删除该现存文件,如果删除成功则把它当做一个新文件处理.
+.SH "POSIX 选项"
+POSIX 识别四个半选项:
+.TP
+.B \-f
+如果需要,删除已存在的目的文件.(如前所述.)
+.TP
+.B \-i
+提示是否覆盖现有普通目标文件。
+(在标准出错上显示问题,从标准输入读取答案.只有明确确认了才复制文件.)
+.TP
+.B \-p
+保留原文件的所有者、组、权限(包括 setuid 和 setgid 位),
+上次修改时间和上次访问时间。如果制作所有者或组信息的副本时出错,
+则 setuid 和 setgid 位被清空。
+(要不然源文件和副本的上次访问时间显然是不同的,
+因为复制操作就是对源文件的访问.)
+.TP
+.B \-R
+递归复制目录,如果对象不是普通文件或目录那么做相应正
+确处理,(因此,一个 FIFO或者特殊文件在复制后仍然是一
+个 FIFO型或者相应特殊文件。)
+.TP
+.B \-r
+递归复制目录,如果对象不是普通文件或目录那么做一些未
+声明处理.(因此,我们允许并鼓励用 \-r 选项做 \-R 的
+同义词.不过那些愚蠢的特征,象那些在 GNU 版本的
+.BR cp
+出
+现的(见下文)也可以用.)
+.SH "GNU 细节"
+.Pp
+通常,读写文件的方式都是一样的.例外情况见下面的
+.B "\-\-sparse"
+选项.
+.Pp
+缺省情况下,`cp'并不复制目录(参见下文
+.B "\-r"
+选项说明).
+.Pp
+.B cp
+通常不会复制文件到自身,但有以下例外:
+如果参数
+.B "\-\-force \-\-backup"
+与
+.I 源文件
+一起给出,并且与
+.I 目的文件
+并且指向一个普通文件,
+.B cp
+将生成一个备份文件,不是普通的就是编了号的,就象通
+常的方法那样声明.在你仅仅想对已有的文件进行备份,
+而又不想修改它的时候很有用.
+.SH "GNU 选项"
+.TP
+.B "\-a, \-\-archive"
+复制时,尽可能保持文件的结构和属性.(但不保持目录
+结构)等同于
+.BR "\-dpR" 。
+.TP
+.B "\-d, \-\-no\-dereference"
+复制符号链接作为符号链接而不是复制它指向的文件,
+并且保护在副本中原文件之间的硬链接.
+.TP
+.B "\-f, \-\-force"
+删除存在的目标文件。
+(较:原译文缺下面的部分)
+.TP
+.B "\-i, \-\-interactive"
+无论是否覆盖现存文件都作提示。
+.TP
+.B "\-l, \-\-link"
+制作硬链接代替非目录拷贝。
+.TP
+.B "\-p, \-\-preserve"
+保持原始文件的所有者,组,许可,和时间表属性。
+.TP
+.B "\-P, \-\-parents"
+一个斜杠和指定的源文件名构成目的文件。
+最后送给
+.B cp
+的参数必须是一个已存在的目录的名字。例如, 下面这个命令:
+.br
+.nf
+cp \-\-parents a/b/c existing_dir
+.br
+.fi
+复制文件 `a/b/c' 到 texisting_dir(现有的目录)/a/b/c',建立任
+何缺少的中间目录。
+.TP
+.B "\-r"
+递归地复制目录,复制任何非目录和非符号链接(那是,
+FIFOs和特别文件)好象他们是常规的文件一样看待.这
+意味着尝试读出每个源文件的数据,和把它写到目的地
+上.因而,用这个选项,cp'可能彻底地终止,当不确定地
+读一个FIFO或者/dev/tty时,(这是一个缺陷.它意味着
+如果你不知道在这棵树(目录)中有什么要复制的时候,
+你不得不避开\-r并使用\-R打开一个未知的设备文件,
+比如说一台扫描仪,会有未知的效果发生在硬件上)
+.TP
+.B "\-R, \-\-recursive"
+递归地复制目录,保留非目录(参见上面的
+.B "\-r"
+).
+.TP
+.BI "\-\-sparse=" "WHEN"
+一个稀疏file'包容`holes'-占用0字节,它不占用任何
+物理块;系统把他们作为0调用read'来读.由于许多二进
+制文件包容许多连续的0字节,这样能保存相当的磁盘空
+间并且加快速度.省缺情况下,
+.B cp
+通过自然的启发方式发现在源文件里holes并且使相关
+的输出文件稀疏.
+.RS
+.PP
+.I WHEN
+值能够是下面中的一个:
+.TP
+.B auto
+默认的行为:如果输入文件是稀疏的,输出文件也是稀疏的.
+.TP
+.B always
+总是使输出文件稀疏.当输入文件所在的文件系统不支
+持稀疏文件的时候,这是有用的,但是输出文件所在的
+文件系统需要(支持稀疏文件).
+.TP
+.B never
+从不使输出文件稀疏.如果你找到一个需要此选项的应
+用程序,让我们知道.
+.RE
+.TP
+.B "\-s, \-\-symbolic\-link"
+生成符号链接代替非目录拷贝.所有的源文件名必须是
+绝对的(由`/'开始),除非目的文件是在当前目录.这选
+项仅仅在系统不支持符号链接时引起一个错误消息.
+.TP
+.B "\-u, \-\-update"
+如果存在的目的地有相同的,或者更新的修改时间,不
+复制非目录(文件).
+.TP
+.B "\-v, \-\-verbose"
+在复制前印出文件名.
+.TP
+.B "\-x, \-\-one\-file\-system"
+跳过来自不同文件系统的子目录.
+.SH "GNU 备份选项"
+GNU 版本程序象
+.BR cp ,
+.BR mv ,
+.BR ln ,
+.B install
+和
+.B patch 
+会在覆盖,改变,或者破坏(文件)前生成一个备份文件.
+那个文件由\-b选项给出.他们的由\-V选项命名.一般
+情况下备份文件名是源文件名加上后缀,这个后缀由\-S
+指定.
+.TP
+.B "\-b, \-\-backup"
+生成关于覆盖和删除的备份.
+.TP
+.BI "\-S " SUFFIX ", \-\-suffix=" SUFFIX
+加入
+.I SUFFIX(后缀)
+到每个备份文件.
+如果不指定,使用
+.B SIMPLE_BACKUP_SUFFIX
+环境变量的值.如果连
+.B SIMPLE_BACKUP_SUFFIX
+都没有设置,省缺是`~'.
+.TP
+.BI "\-V " METHOD ", \-\-version\-control=" METHOD
+.RS
+指定如何命名备份文件.
+.I METHOD
+能够是 `numbered' (or `t'), `existing' (or `nil'), or `never' (or
+`simple').
+如果不指定,使用
+.B VERSION_CONTROL
+环境变量的值.如果
+.B VERSION_CONTROL
+也没有设置,省缺备份文件类型是 `existing'.
+.PP
+这选项相应Emacs 变量 `version-control'.
+有效的
+.IR METHOD s
+是(接受唯一的缩写):
+.TP
+.BR t ", " numbered
+总是产生编号的备份。
+.TP
+.BR nil ", " existing
+Make numbered backups of files that already have them, simple
+backups of the others.
+.TP
+.BR never ", " simple
+总作简单的备份.
+.RE
+.SH "GNU 标准选项"
+.TP
+.B "\-\-help"
+印出用法并退出.
+.TP
+.B "\-\-version"
+印出版本信息并退出.
+.TP
+.B "\-\-"
+结束选项列表.
+.SH 环境(参数)
+变量LANG,LC_ALL,LC_COLLATE,LC_CTYPE和LC_MESSAGES有通常意义.
+对于GNU版本,变量SIMPLE_BACKUP_SUFFIX和VERSION_CONTROL控制备份
+文件命名.与上面的描述一样.
+.SH "适用到"
+POSIX 1003.2
+.SH 注意
+这份
+.B cp
+的描述和FILEUTils-4.0中找到的是一样的;另外的版
+本也许有些微的差别.修正和新增邮到aeb at cwi.nl.
+报告缺陷到fileutils-bugs at gnu.ai.mit.edu.
+
+.SH "[中文版维护人]"
+.B Surran <email>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/cpio.1 b/src/man1/cpio.1
new file mode 100644
index 0000000..7d824c7
--- /dev/null
+++ b/src/man1/cpio.1
@@ -0,0 +1,326 @@
+.TH CPIO 1L \" -*- nroff -*-
+.SH NAME
+cpio \- 存取归档包中的文件
+.SH 总览 (SYNOPSIS)
+.B cpio
+{\-o|\-\-create} [\-0acvABLV] [\-C bytes] [\-H format] [\-M message]
+[\-O [[user@]host:]archive] [\-F [[user@]host:]archive]
+[\-\-file=[[user@]host:]archive] [\-\-format=format] [\-\-message=message]
+[\-\-null] [\-\-reset-access-time] [\-\-verbose] [\-\-dot] [\-\-append]
+[\-\-block-size=blocks] [\-\-dereference] [\-\-io-size=bytes] [\-\-quiet]
+[\-\-force\-local] [\-\-help] [\-\-version] < name-list [> archive]
+
+.B cpio
+{\-i|\-\-extract} [\-bcdfmnrtsuvBSV] [\-C bytes] [\-E file] [\-H format]
+[\-M message] [\-R [user][:.][group]] [\-I [[user@]host:]archive]
+[\-F [[user@]host:]archive] [\-\-file=[[user@]host:]archive]
+[\-\-make-directories] [\-\-nonmatching] [\-\-preserve-modification-time]
+[\-\-numeric-uid-gid] [\-\-rename] [\-\-list] [\-\-swap-bytes] [\-\-swap] [\-\-dot]
+[\-\-unconditional] [\-\-verbose] [\-\-block-size=blocks] [\-\-swap-halfwords]
+[\-\-io-size=bytes] [\-\-pattern-file=file] [\-\-format=format]
+[\-\-owner=[user][:.][group]] [\-\-no-preserve-owner] [\-\-message=message]
+[\-\-force\-local] [\-\-no\-absolute\-filenames] [\-\-sparse] [\-\-only\-verify\-crc]
+[\-\-quiet] [\-\-help] [\-\-version] [pattern...] [< archive]
+
+.B cpio
+{\-p|\-\-pass-through} [\-0adlmuvLV] [\-R [user][:.][group]]
+[\-\-null] [\-\-reset-access-time] [\-\-make-directories] [\-\-link] [\-\-quiet]
+[\-\-preserve-modification-time] [\-\-unconditional] [\-\-verbose] [\-\-dot]
+[\-\-dereference] [\-\-owner=[user][:.][group]] [\-\-no-preserve-owner]
+[\-\-sparse] [\-\-help] [\-\-version] destination-directory < name-list
+
+.SH 描述 (DESCRIPTION)
+本手册页 描述 GNU 版本 的
+.BR cpio .
+
+.B cpio
+可以 从 cpio 或 tar 格式 的 归档包(archive) 中 读写 文件, 归档包 是 
+一种文件, 它 由 归档文件 及其 相关信息 组成, 例如 文件名, 属主, 时标
+(timestamp), 和 访问权限. 归档包 可以 是 磁盘上的 文件, 也可以 是 
+磁带或管道.
+
+.B cpio
+有 三种 操作模式.
+.PP
+在 copy-out 模式中,
+.B cpio
+把 文件 复制到 归档包 中. 它 从 标准输入 读取 文件名列表, 每行一个文件名.
+生成的 归档包 写到 标准输出. 产生 文件名列表 的 典型方法 是 使用
+.B find
+命令; 你 可能 要在
+.B find
+后面 用上 \-depth 选项, 减少 因为 进入 没有 访问权限 的 目录 引起 的 麻烦.
+
+.PP
+在 copy-in 模式中,
+.B cpio
+从 归档包 读取 文件, 或者 列出 归档包 的 内容, 归档包 来自 标准输入.
+任何 非选项 命令行参数 被视为 shell 的 通配符模式串 (globbing pattern);
+在 归档包 中, 只 读取 文件名 匹配 这些 模式串 的 文件.
+和 shell 环境 不一样, 文件名 起始处 的 '.' 可以 匹配 模式串 
+起始处 的 通配符, 文件名中 的 '/' 也可以 匹配 通配符. 如果 没有 给出 
+模式串, 那么 读取 所有 文件.
+
+.PP
+在 copy-pass 模式中,
+.B cpio
+把 文件 从 一棵目录树 复制到 另一棵, 它 结合了 copy-in 和 copy-out 的 操作,
+但是 没有 使用 归档包. 
+.B cpio
+从 标准输入 读取 欲复制的 文件名列表; 目标目录 是 非选项命令行参数.
+
+.PP
+.B cpio
+支持 下列的 归档 格式:
+binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, 
+和 POSIX.1 tar.  
+
+"binary" 格式 是 过时 格式, 因为 它 保存 文件信息 的 方法 无法 应用在 
+不同体系 的 机器 上.
+"old ASCII" 格式 可以 跨平台 使用, 但是 不能 用于 超过 65536 个 i 节点 的
+文件系统 中.
+"new ASCII" 格式 可以 跨平台 使用, 也 适用于 任意大小 的 文件系统 上, 但
+不是 所有 版本 的 
+.BR cpio
+都 支持, 目前 只有 GNU 和 System VR4 的 cpio 能够 支持 "new ASCII" 格式.
+"crc" 格式 类似于 "new ASCII" 格式, 而且 对每个 文件 计算 校验和;
+.B cpio
+在 创建 归档包 时 计算 校验和, 解开 文件 时 进行 校验.
+"HPUX" 格式 用于 兼容 HP UNIX 的 cpio, 它 用了 独特的方法 保存 设备文件.
+
+.PP
+"tar" 格式 用以 兼容 
+.B tar
+程序. 它 不能 对 文件名 超过 100 个 字符 的 文件 归档, 也 不能 对 特殊文件
+(块设备 或 字符设备) 归档.
+"POSIX.1 tar" 格式 不能 对 文件名 超过 255 个 字符 的 文件 归档 (小于 255,
+除非 文件名 的 最右边 有一个 "/").
+
+.PP
+缺省情况下,
+.B cpio
+为了 兼容 老式的
+.B cpio
+程序, 创建 "binary" 格式 的 归档包.
+当展开 归档包 时,
+.B cpio
+能够 自动识别 归档包 的 格式, 而且 能够 读取 不同 字节顺序 的 机器 上
+创建 的 归档包.
+
+.PP
+.B cpio 
+的 某些 选项 只能 用在 相应的 操作模式 上; 参见 总览 小节, 里面 列出了
+什么模式 可以用 什么选项.
+
+.SS 选项 (OPTIONS)
+.TP
+.I "\-0, \-\-null"
+在 copy-out 和 copy-pass 模式中, 认为 输入的 文件名 以 null 字符 结尾, 
+而不是 换行符, 这样 即使 文件名 中 包含 换行符, 也 不影响 归档. GNU
+.B find
+是 生成 null 结尾 文件名 列表 的 方法 之一.
+
+.TP
+.I "\-a, \-\-reset-access-time"
+读取完 文件 后 重置 文件的访问时间, 这样 看上去 就象 没有 访问 过 这个 文件.
+
+.TP
+.I "\-A, \-\-append"
+添加到 现存的 归档包 中. 仅用于 copy-out 模式. 该 归档包 必须是 用
+.I \-O
+或
+.I "\-F (\-\-file)"
+选项 生成的 磁盘文件.
+
+.TP
+.I "\-b, \-\-swap"
+在 copy-in 模式中, 颠倒 数据中 字 的 字节 顺序. 相当于
+.IR "\-sS" .
+使用 这个 选项 可以 在 大端数 和 小端数 机器 之间 转换 32 位 整数.
+
+.TP
+.I "\-B"
+把 I/O 块 大小 设置成 5120 字节. 最初的 块大小 是 512 字节.
+
+.TP
+.I "\-\-block-size=BLOCK-SIZE"
+设置 I/O 块 大小 为 BLOCK-SIZE * 512 字节.
+
+.TP
+.I "\-c"
+使用 老式的 跨平台 (ASCII) 归档 格式.
+
+.TP
+.I "\-C IO-SIZE, \-\-io-size=IO-SIZE"
+设置 I/O 块 大小 为 IO-SIZE 字节.
+
+.TP
+.I "\-d, \-\-make-directories"
+在 需要的地方 创建 起始目录.
+
+.TP
+.I "\-E FILE, \-\-pattern-file=FILE"
+在 copy-in 模式中, 从 FILE 里 读取 用于 匹配 文件名 的 模式串. 
+FILE 的 内容 如同
+.BR cpio
+的 非选项 参数.
+
+.TP
+.I "\-f, \-\-nonmatching"
+只复制 那些 不匹配 给定的 模式串 的 文件.
+
+.TP
+.I "\-F, \-\-file=archive"
+使用 归档包文件, 而不是 标准输入或输出. 如果 把 其他 机器上 的 磁带机
+作成 归档包文件, 文件名 要用 "HOSTNAME:" 开始. 主机名 前面 可以 加上 用户名
+和 一个 '@', 作为 访问 远程 磁带机 的 用户 (如果 你有 这样的 权限, 一般
+在 用户的 ~/.rhosts 文件中 会有 这么 一项).
+
+.TP
+.I "\-\-force-local"
+和
+.IR \-F ,
+.IR \-I ,
+或
+.IR \-O ,
+一起用, 可以 把 归档包文件 看作 本地文件, 即使 文件名 中 含有 冒号,
+一般说来 冒号 指出 一个 远程主机 的 存在.
+
+.TP
+.I "\-H FORMAT, \-\-format=FORMAT"
+使用 归档格式 FORMAT. 有效 的 格式 列在 下面, 大小写 均可. "copy-in"
+模式 的 缺省动作 是 自动检测 归档格式, "copy-out" 的 缺省格式 是 "bin".
+
+.RS
+.IP bin
+老式的 binary 格式.
+.IP odc
+老式的 (POSIX.1) 跨平台 格式.
+.IP newc
+新型 (SVR4) 跨平台 格式, 支持 大于 65536 i节点 的 文件系统.
+.IP crc
+新型 (SVR4) 跨平台 格式, 并且 计算 校验和.
+.IP tar
+老式的 tar 格式.
+.IP ustar
+POSIX.1 tar 格式, 也能 识别 GNU 
+.B tar
+归档文件, 它们 相似 但不全相同.
+.IP hpbin
+HP UNIX 上的 cpio 使用的 老式的 binary 格式. (用 独特的方法 储存 设备文件)
+.IP hpodc
+HP UNIX 上的 cpio 使用的 跨平台 格式. (用 独特的方法 储存 设备文件)
+.RE
+.TP
+.I "\-i, \-\-extract"
+进入 copy-in 模式.
+
+.TP
+.I "\-I archive"
+使用 归档包文件, 而不是 标准输入. 如果 把 其他 机器上 的 磁带机
+作成 归档包文件, 文件名 要用 "HOSTNAME:" 开始. 主机名 前面 可以 加上 用户名
+和 一个 '@', 作为 访问 远程 磁带机 的 用户 (如果 你有 这样的 权限, 一般
+在 用户的 ~/.rhosts 文件中 会有 这么 一项).
+.TP
+.I \-k
+无效操作; 只是 用来 兼容 其他 版本 的
+.BR cpio .
+
+.TP
+.I "\-l, \-\-link"
+如果有可能, 连接 文件, 而不是 复制.
+.TP
+.I "\-L, \-\-dereference"
+解除 符号连接 的 关联 (复制 符号连接 指向的 文件, 而不是 连接 本身).
+.TP
+.I "\-m, \-\-preserve-modification-time"
+当 创建 文件 时, 保留 以前的 文件修改时间.
+.TP
+.I "\-M MESSAGE, \-\-message=MESSAGE"
+当 备份 媒体 (例如 磁带或软盘) 到达 卷尾时, 显示 一条 消息, 提醒 用户
+插入 下一卷. 如果 MESSAGE 包含 字符串 "%d", 它 替换成 当前 卷号
+(从 1 开始).
+.TP
+.I "\-n, \-\-numeric-uid-gid"
+以 繁琐模式 (verbose) 显示 内容 时, 用 数字 显示 UID 和 GID, 而 不是 名称.
+.TP
+.I " \-\-no-absolute-filenames"
+在 copy-in 模式中, 在 当前目录中 创建 所有 相关 文件, 即使 它们 在
+归档包中 有 绝对路径名.
+.TP
+.I " \-\-no-preserve-owner"
+在 copy-in 和 copy-pass 模式中, 不改变 文件 的 属主关系 (译注: 疑为不保留); 
+使 它们 属于 展开 它们 的 用户. 这是 普通用户 的 缺省行为, 因此 System V
+的 用户 不致于 无意中 把 文件 送人.
+.TP
+.I "\-o, \-\-create"
+进入 copy-out 模式.
+.TP
+.I "\-O archive"
+使用 归档包文件, 而不是 标准输出. 如果 把 其他 机器上 的 磁带机
+作成 归档包文件, 文件名 要用 "HOSTNAME:" 开始. 主机名 前面 可以 加上 用户名
+和 一个 '@', 作为 访问 远程 磁带机 的 用户 (如果 你有 这样的 权限, 一般
+在 用户的 ~/.rhosts 文件中 会有 这么 一项).
+
+.TP
+.I " \-\-only-verify-crc"
+当以 copy-in 模式 读入 CRC 格式 的 归档包 时, 不展开 里面的文件, 
+只是 测试 文件的 CRC 码.
+
+.TP
+.I "\-p, \-\-pass-through"
+进入 copy-pass 模式.
+.TP
+.I "\-\-quiet"
+不显示 复制的 块数.
+.TP
+.I "\-r, \-\-rename"
+交互式 文件 改名.
+.TP
+.I "\-R [user][:.][group], \-\-owner [user][:.][group]"
+在 copy-out 和 copy-pass 模式中, 把 所有文件 的 属主 设置为 指定的
+用户 和/或 用户组. 无论 用户 还是 用户组 都必须 存在. 如果 省略 用户组,
+但却 给出了 分隔符 ":" 或 ".', 则 使用 该 用户 的 登录用户组. 只有
+超级用户 能够 改变 文件的属主.
+
+.TP
+.I "\-\-sparse"
+在 copy-out 和 copy-pass 模式中, 把 大块 数据0 的 文件 写成 稀疏文件 
+(sparse file).
+.TP
+.I "\-s, \-\-swap-bytes"
+在 copy-in 模式中, 交换 文件中 每一个 半字(字节对) 中的 字节.
+.TP
+.I "\-S, \-\-swap-halfwords"
+在 copy-in 模式中, 交换 文件中 每一个 字(4字节) 中的 半字.
+.TP
+.I "\-t, \-\-list"
+显示 输入(归档包) 的 内容.
+.TP
+.I "\-u, \-\-unconditional"
+替换 所有 文件, 不再提问 是否 用 旧文件 替换 已经存在的 新文件.
+.TP
+.I "\-v, \-\-verbose"
+列出 处理的文件, 加上
+.IR \-t
+选项 可以 列出 一个 'ls \-l' 风格的列表. 在一个 归档包 的 内容 详细列表
+(verbose) 中, 如果 本地系统 不存在 归档文件的 用户和用户组 名称,
+就用 其数字 UID和GID 对应于 本地系统的 用户和用户组 名称 代替.
+
+.TP
+.I "\-V \-\-dot"
+每处理一个文件, 显示一个 ".".
+.TP
+.I "\-\-version"
+显示
+.B cpio
+程序 的 版本号, 然后退出.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/09/25
+.SH "《中国Linux论坛man手册页翻译计划》"
+.B http://cmpp.linuxforum.net
+
+
diff --git a/src/man1/createdb.1 b/src/man1/createdb.1
new file mode 100644
index 0000000..10ab0ab
--- /dev/null
+++ b/src/man1/createdb.1
@@ -0,0 +1,119 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATEDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+createdb \- 创建一个新的 PostgreSQL 数据库
+
+.SH SYNOPSIS
+.sp
+\fBcreatedb\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR\fR [ \fR\fB\fIdescription\fB \fR\fR]\fR
+.SH "DESCRIPTION  描述"
+.PP
+\fBcreatedb\fR 创建一个新的 PostgreSQL 数据库。
+.PP
+ 通常,执行这个命令的数据库用户成为新数据库的所有者。 不过,如果执行用户拥有合适的权限,那么他可以通过 \fB\-O\fP 指定合适的用户。
+.PP
+\fBcreatedb\fR 是一个 SQL 命令 CREATE DATABASE [\fBcreate_database\fR(7)] 的封装。 因此,用哪种方法创建数据库都没什么特别的。
+.SH "OPTIONS 选项"
+.PP
+\fBcreatedb\fR 接受下列命令行参数:
+.TP
+\fB\fIdbname\fB\fR
+ 声明要创建的数据库名。该名称应该在本节点的 PostgreSQL 所有数据库里面是唯一的。 缺省是与当前系统用户同名。
+.TP
+\fB\fIdescription\fB\fR
+ 这个选项声明一个与新创建的数据库相关的注解。
+.TP
+\fB-D \fIlocation\fB\fR
+.TP
+\fB--location \fIlocation\fB\fR
+ 声明变更了的数据库集群(节点)的位置。 又见 \fBinitlocation\fR(1).
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 回显 createdb 生成的命令并且把它发送到服务器。
+.TP
+\fB-E \fIencoding\fB\fR
+.TP
+\fB--encoding \fIencoding\fB\fR
+ 声明用于此数据库的字符编码方式。
+.TP
+\fB-O \fIowner\fB\fR
+.TP
+\fB--owner \fIowner\fB\fR
+ 指定将拥有新数据库的数据库用户。
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 不显示响应。
+.TP
+\fB-T \fItemplate\fB\fR
+.TP
+\fB--template \fItemplate\fB\fR
+ 声明创建此数据库的模板数据库。
+.PP
+.PP
+ 选项 -h,-p,-U, -W,-e 是以文本形式传递给 psql。 选项\fB-O\fR,\fB-D\fR,\fB-T\fR 和 \fB-E\fR 转换为下层的 SQL 命令 CREATE DATABASE [\fBcreate_database\fR(7)]  的选项;参考该条目获取更多相关信息。
+.PP
+\fBcreatedb\fR 还接受下列命令行参数作为连接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器 侦听的等待连接的互联网 TCP 端口或一个本地 Unix 域套接字文件扩展(描述符)。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 进行联接的用户名。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令提示符。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATABASE\fR
+ 如果设置了,那么就是要创建的数据库名字,除非在命令行上覆盖了。
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。PGUSER 还决定了要创建的数据库名字-- 如果我们没有在命令行上声明数据库名字,也没有用 \fBPGDATABASE\fR  声明的话。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 如果出现错误,将会显示后端错误信息。参阅 CREATE DATABASE [\fBcreate_database\fR(7)]  和 \fBpsql\fR(1) 获取可能信息描述。 数据库服务器必须在目标服务器上运行。同样,前端库 libpq  使用的缺省连接设置和环境变量都将适用。
+.SH "EXAMPLES 例子"
+.PP
+ 用缺省数据库服务器创建一个数据库 demo:
+.sp
+.nf
+$ \fBcreatedb demo\fR
+CREATE DATABASE
+.sp
+.fi
+ 响应信息与运行 CREATE DATABASE SQL 命令时一样。
+.PP
+ 用在主机eden上的服务器创建数据库 demo, 端口是 5000,使用 LATIN1 编码方式,并且显示执行的命令:
+.sp
+.nf
+$ \fBcreatedb -p 5000 -h eden -E LATIN1 -e demo\fR
+CREATE DATABASE "demo" WITH ENCODING = 'LATIN1'
+CREATE DATABASE
+.sp
+.fi
+.SH "SEE ALSO 参见"
+\fBdropdb\fR(1), CREATE DATABASE [\fBcreate_database\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/createlang.1 b/src/man1/createlang.1
new file mode 100644
index 0000000..3921305
--- /dev/null
+++ b/src/man1/createlang.1
@@ -0,0 +1,93 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATELANG" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+createlang \- 定义一种新的 PostgreSQL 过程语言
+
+.SH SYNOPSIS
+.sp
+\fBcreatelang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fB\fIlangname\fB\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBcreatelang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR\fR \fB--list\fR\fR | \fR\fB-l\fR\fR\fR \fB\fIdbname\fB\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBcreatelang\fR 是一个用于向 PostgreSQL 数据库增加新的编程语言的工具。 createlang 可以处理所有 PostgreSQL 版本缺省就提供的语言,但是不能处理其它方面提供的语言。
+.PP
+ 尽管可以用 SQL 命令直接增加后端编程语言,我们还是推荐使用 createlang, 因为它进行了一些检查而且更容易使用。参阅 CREATE LANGUAGE [\fBcreate_language\fR(7)] 获取更多信息。
+.SH "OPTIONS 选项"
+.PP
+\fBcreatelang\fR 接受下列命令行参数:
+.TP
+\fB\fIlangname\fB\fR
+ 声明要被定义的过程编程语言的名称。
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+ 声明要向哪个数据库增加该语言。 缺省是使用和当前系统用户同名地数据库。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 执行的时候显示所执行的 SQL 命令。
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+ 显示一个在目标数据库里已经安装的语言的列表。
+.TP
+\fB-L \fIdirectory\fB\fR
+ 声明该语言的解释器所在的目录。 这个目录通常是自动发现的。这个选项主要用于调试。
+.PP
+.PP
+\fBcreatelang\fR 还接受下列命令行参数作为联接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器侦听着等待连接的互联网 TCP 端口或一个本地 Unix 域套接字文件扩展(描述符)。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 进行联接的用户名。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令提示符。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 多数错误信息是自解释的。如果没有,带着 \fB--echo\fR 参数运行 \fBcreatelang\fR  然后在相应的SQL命令下面检查细节。
+.SH "NOTES 注意"
+.PP
+ 使用 \fBdroplang\fR(1) 删除一种语言。
+.SH "EXAMPLES 例子"
+.PP
+ 把 pltcl 语言安装到数据库 template1里:
+.sp
+.nf
+$ \fBcreatelang pltcl template1\fR
+.sp
+.fi
+.SH "SEE ALSO 参见"
+\fBdroplang\fR(1), CREATE LANGUAGE [\fBcreate_language\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/createuser.1 b/src/man1/createuser.1
new file mode 100644
index 0000000..a629b32
--- /dev/null
+++ b/src/man1/createuser.1
@@ -0,0 +1,134 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATEUSER" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+createuser \- 定义一个新的 PostgreSQL 用户帐户
+
+.SH SYNOPSIS
+.sp
+\fBcreateuser\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIusername\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBcreateuser\fR 创建一个新的 PostgreSQL 用户。只有超级用户(在 pg_shadow 表中设置了 usesuper 的用户)可以创建新的 PostgreSQL 用户。 因此,createuser 必须由某位可以以 PostgreSQL 超级用户连接的用户执行。
+.PP
+ 作为超级用户同时也意味着绕开数据库内访问检查的能力, 因此我们应该少赋予超级用户权限。
+.PP
+\fBcreateuser\fR 是 SQL 命令 CREATE USER [\fBcreate_user\fR(7)] 的封装。 因此,用那种方法创建新用户都没什么特别的。
+.SH "OPTIONS 选项"
+.PP
+\fBcreateuser\fR 接受下列命令行参数:
+.TP
+\fB\fIusername\fB\fR
+ 声明要创建的 PostgreSQL 用户名称。 该名称必须在所有 PostgreSQL 用户中唯一。
+.TP
+\fB-a\fR
+.TP
+\fB--adduser\fR
+ 允许该新建用户创建其他用户。 (注意∶实际上这样做相当于把这个新用户变成了 superuser,只不过这个选项命名得比较烂。)
+.TP
+\fB-A\fR
+.TP
+\fB--no-adduser\fR
+ 不允许该新建用户创建其他用户。 (也就是说,该用户是一个普通用户,不是超级用户)。
+.TP
+\fB-d\fR
+.TP
+\fB--createdb\fR
+ 允许该新建用户创建数据库。
+.TP
+\fB-D\fR
+.TP
+\fB--no-createdb\fR
+ 禁止该新建用户创建数据库。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 回显 createuser 生成的命令并发送给服务器。
+.TP
+\fB-E\fR
+.TP
+\fB--encrypted\fR
+ 对保存在数据库里的用户口令加密。如果没有声明, 则使用缺省值。
+.TP
+\fB-i \fInumber\fB\fR
+.TP
+\fB--sysid \fInumber\fB\fR
+ 允许你给新用户使用非缺省用户标识。这个也不是必须的,但是有些人喜欢这样。
+.TP
+\fB-N\fR
+.TP
+\fB--unencrypted\fR
+ 不对保存在数据库里的用户口令加密。如果没有声明, 则使用缺省值,
+.TP
+\fB-P\fR
+.TP
+\fB--pwprompt\fR
+ 如果给出,createuser 将发出一个提示符要求输入新用户的口令。 如果你不打算用口令认证,那么这是不必要的。
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 不显示响应。
+.PP
+.PP
+ 如果没有在命令行上声明名称和其他的一些缺少的信息,脚本会提示你输入。
+.PP
+\fBcreateuser\fR 还接受下列命令行参数用作连接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器 正在侦听的互联网 TCP 端口号或本地Unix域套接字的文件扩展(描述符)。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 连接的用户名(不是要创建的用户名)。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令提示(与服务器连接的口令,不是新用户的口令。)
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 如果出现错误,将会显示后端错误信息。参阅 CREATE USER [\fBcreate_user\fR(7)] 和 \fBpsql\fR(1)  获取可能信息描述。数据库服务器必须在目标主机上运行。 同样,任何 libpq 前端库使用的缺省连接设置和环境变量都将适用。
+.SH "EXAMPLES 例子"
+.PP
+ 在缺省数据库服务器上创建一个用户 joe:
+.sp
+.nf
+$ \fBcreateuser joe\fR
+Is the new user allowed to create databases? (y/n) \fBn\fR
+Shall the new user be allowed to create more new users? (y/n) \fBn\fR
+CREATE USER
+.sp
+.fi
+.PP
+ 用在主机eden上的服务器创建用户 joe,端口是 5000,避免提示并且显示执行的命令:
+.sp
+.nf
+$ \fBcreateuser -p 5000 -h eden -D -A -e joe\fR
+CREATE USER "joe" NOCREATEDB NOCREATEUSER
+CREATE USER
+.sp
+.fi
+.SH "SEE ALSO 参见"
+\fBdropuser\fR(1), CREATE USER [\fBcreate_user\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/cut.1 b/src/man1/cut.1
new file mode 100644
index 0000000..249b5e2
--- /dev/null
+++ b/src/man1/cut.1
@@ -0,0 +1,84 @@
+.TH CUT "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+cut \- 在文件的每一行中提取片断
+.SH "总览 (SYNOPSIS)"
+.B ../src/cut
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+在 每个文件 FILE 的 各行 中, 把 提取的 片断 显示在 标准输出.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR=\fILIST\fR
+输出 这些 字节
+.TP
+\fB\-c\fR, \fB\-\-characters\fR=\fILIST\fR
+输出 这些 字符
+.TP
+\fB\-d\fR, \fB\-\-delimiter\fR=\fIDELIM\fR
+使用 DELIM 取代 TAB 做 字段(field) 分隔符
+.TP
+\fB\-f\fR, \fB\-\-fields\fR=\fILIST\fR
+输出 这些 字段
+.TP
+\fB\-n\fR
+(忽略)
+.TP
+\fB\-s\fR, \fB\-\-only\-delimited\fR
+不显示 没有 分隔符 的 行
+.TP
+\fB\-\-output\-delimiter\fR=\fISTRING\fR
+使用 STRING 作为 输出分隔符, 缺省 (的 输出分隔符) 为 输入分隔符
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+使用 且 只使用 \fB\-b\fR, \fB\-c\fR 或 \fB\-f\fR 中的 一个 选项.
+LIST 由 一个 范围 (range) 或 逗号 隔开的 多个 范围 组成.
+范围 是 下列 形式 之一:
+.TP
+N
+第 N 个 字节, 字符 或 字段, 从 1 计数 起
+.TP
+N-
+从 第 N 个 字节, 字符 或 字段 直至 行尾
+.TP
+N-M
+从 第 N 到 第 M (并包括 第M) 个 字节, 字符 或 字段
+.TP
+\fB\-M\fR
+从 第 1 到 第 M (并包括 第M) 个 字节, 字符 或 字段
+.PP
+如果 没有 指定 文件 FILE, 或 FILE 是 -, 就从 标准输入 读取 数据.
+
+.SH "作者 (AUTHOR)"
+David Ihnat, David MacKenzie, 和 Jim Meyering.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B cut
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B cut
+程序, 使用 命令
+.IP
+.B info cut
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/11
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/date.1 b/src/man1/date.1
new file mode 100644
index 0000000..046cf38
--- /dev/null
+++ b/src/man1/date.1
@@ -0,0 +1,181 @@
+.TH DATE "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+date \- 打印或设置系统日期和时间
+.SH 总览
+.B date
+[\fI选项\fR]... [\fI+格式\fR]
+.br
+.B date
+[\fI选项\fR] [\fIMMDDhhmm\fR[[\fICC\fR]\fIYY\fR][\fI.ss\fR]]
+.SH 描述
+.PP
+.\" Add any additional description here
+.PP
+根据指定格式显示当前时间或设置系统时间.
+.TP
+\fB\-d\fR, \fB\-\-date\fR=\fISTRING\fR
+显示由 STRING 指定的时间, 而不是当前时间
+.TP
+\fB\-f\fR, \fB\-\-file\fR=\fIDATEFILE\fR
+显示 DATEFILE 中每一行指定的时间, 如同将 DATEFILE 中的每行作为
+\fB\-\-date\fR 的参数一样
+.IP
+\fB\-I\fR, \fB\-\-iso\-8601\fR[=\fITIMESPEC\fR] 按照 ISO-8601
+的日期/时间格式输出时间.
+.IP
+TIMESPEC=`date' (或者不指定时)仅输出日期,等于
+`hours', `minutes', 或`seconds' 时按照指定精度输出日期及时间.
+.TP
+\fB\-r\fR, \fB\-\-reference\fR=\fIFILE\fR
+显示 FILE 的最后修改时间
+.TP
+\fB\-R\fR, \fB\-\-rfc\-822\fR
+根据 RFC-822 指定格式输出日期
+.TP
+\fB\-s\fR, \fB\-\-set\fR=\fISTRING\fR
+根据 STRING 设置时间
+.TP
+\fB\-u\fR, \fB\-\-utc\fR, \fB\-\-universal\fR
+显示或设置全球时间(格林威治时间)
+.TP
+\fB\-\-help\fR
+显示本帮助文件并退出
+.TP
+\fB\-\-version\fR
+显示版本信息并退出
+.PP
+格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。
+分别解释如下:
+.TP
+%%
+文本的 %
+.TP
+%a
+当前区域的星期几的简写 (Sun..Sat)
+.TP
+%A
+当前区域的星期几的全称 (不同长度) (Sunday..Saturday)
+.TP
+%b
+当前区域的月份的简写 (Jan..Dec)
+.TP
+%B
+当前区域的月份的全称(变长) (January..December)
+.TP
+%c
+当前区域的日期和时间 (Sat Nov 04 12:02:33 EST 1989)
+.TP
+%d
+(月份中的)几号(用两位表示) (01..31)
+.TP
+%D
+日期(按照 月/日期/年 格式显示) (mm/dd/yy)
+.TP
+%e
+(月份中的)几号(去零表示) ( 1..31)
+.TP
+%h
+同 %b
+.TP
+%H
+小时(按 24 小时制显示,用两位表示) (00..23)
+.TP
+%I
+小时(按 12 小时制显示,用两位表示) (01..12)
+.TP
+%j
+(一年中的)第几天(用三位表示) (001..366)
+.TP
+%k
+小时(按 24 小时制显示,去零显示) ( 0..23)
+.TP
+%l
+小时(按 12 小时制显示,去零表示) ( 1..12)
+.TP
+%m
+月份(用两位表示) (01..12)
+.TP
+%M
+分钟数(用两位表示) (00..59)
+.TP
+%n
+换行
+.TP
+%p
+当前时间是上午 AM 还是下午 PM
+.TP
+%r
+时间,按 12 小时制显示 (hh:mm:ss [A/P]M)
+.TP
+%s
+从 1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充)
+.TP
+%S
+秒数(用两位表示)(00..60)
+.TP
+%t
+水平方向的 tab 制表符
+.TP
+%T
+时间,按 24 小时制显示(hh:mm:ss)
+.TP
+%U
+(一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53)
+.TP
+%V
+(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52)
+.TP
+%w
+用数字表示星期几 (0..6); 0 代表星期天
+.TP
+%W
+(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53)
+.TP
+%x
+按照 (mm/dd/yy) 格式显示当前日期 
+.TP
+%X
+按照 (%H:%M:%S) 格式显示当前时间
+.TP
+%y
+年的后两位数字 (00..99)
+.TP
+%Y
+年(用 4 位表示) (1970...)
+.TP
+%z
+按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充)
+.TP
+%Z
+时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空
+.PP
+默认情况下,用 0 填充数据的空缺部分.  
+GNU 的 date 命令能分辨在 `%'和数字指示之间的以下修改.
+.IP
+`-' (连接号) 不进行填充
+`_' (下划线) 用空格进行填充
+.SH "BUG报告"
+请向<bug-sh-utils at gnu.org>报告BUG.
+.SH "参考"
+关于
+.B date
+的详细说明是个 Texinfo 手册. 如果在你的计算机上已经成功安装了
+.B info
+和
+.B date
+程序,你可以使用
+.IP
+.B info date
+.PP
+命令访问完全手册.
+.SH 版权
+Copyright \(co 1999 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B liguoping <email>
+.SH "[中文版最新更新]"
+.B 2001/07/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/dd.1 b/src/man1/dd.1
new file mode 100644
index 0000000..43d4b4f
--- /dev/null
+++ b/src/man1/dd.1
@@ -0,0 +1,218 @@
+.\" 版权所有 Andries Brouwer, Ragnar Hojlond Espinosa和A Wik 1998.
+.\" 中文版版权所有 astonia,BitBIRD, www.linuxforum.net 2000
+.\" 本文件可以在LDP GENERAL licence 1998年第一版所述条件下拷贝,
+.\" 并且该许可可同本文件一起分发。
+.\"
+.TH DD 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+dd \- 转换和拷贝文件
+.SH 摘要
+.B dd
+.B [\-\-help] [\-\-version]
+.BI [if= file ]
+.BI [of= file ]
+.BI [ibs= bytes ]
+.BI [obs= bytes ]
+.BI [bs= bytes ]
+.BI [cbs= bytes ]
+.BI [skip= blocks ]
+.BI [seek= blocks ]
+.BI [count= blocks ]
+.B "[conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]"
+.SH 描述
+当进行非强制的转换的时候,使用指定的输入和输出块大小拷贝文件
+(默认是从标准输入到标准输出。)
+.PP
+它每次从输入读取指定大小的一个块(默认是512字节)。
+如果使用
+.BI bs= bytes
+选项,并且没有转换,除了指定
+.BR sync ", " noerror ", 或 " notrunc
+之外, 那么dd将把全部读到的数据(可以比请求读的少)
+写到独立的输出块去。 这个输出块的长度和读到的数据
+完全一样,除非指定使用
+.B sync(同步)
+转换,那样的话,数据结尾处将追加NUL字符(或空格,见下)。
+.PP
+其他情况下,输入的时候每次读一个块,然后处理,并将
+输出结果收集起来,最后写到指定大小的数据块中去。最
+终的输出块可能会比指定的大小短一些。
+.PP
+数字值选项(以字节或块为单位)后面可以跟一个乘数:
+k=1024,b=512,w=2,c=1(w和c是GNU扩展语法。最好别
+使用w,因为在system V中,它表示2,在4.2 BSD中,它
+表示4)。两个或更多的数值表达式可以通过“x”乘起来。
+GEU fileutils 4.0并且允许在数据块大小的叙述中使用
+下列乘法后缀(用bs=,cbs=,obs=):M=1048576,G=1073741824,
+同理可得T,P,E,Z,Y。D后缀表示数值是以
+十进制表示的:kD=1000 MD=1000000 GD=1000000000等等。
+(注意,在ls、df、du命令中,M等标记的大小是由环境
+变量确定的,而在DD中,它的值是固定的。)
+.SH 选项
+.TP
+.BI "if=" file
+从
+.I file
+中读而不是标准输入。
+.TP
+.BI "of=" file
+写到
+.I file
+里去而不是标准输出。除非指定
+.B conv=notrunc
+,否则,
+.B dd
+将把
+.I file
+截为O字节(或由
+.BR seek= 
+选项指定的大小)
+.TP
+.BI "ibs=" bytes
+一次读
+.I bytes
+字节。默认是512。
+.TP
+.BI "obs=" bytes
+一次写
+.I bytes
+字节。默认是512。
+.TP
+.BI "bs=" bytes
+一次读和写
+.I bytes
+字节。这将覆盖
+.B ibs
+和
+.BR obs 
+设定的值(并且,设定
+.B bs
+不等于同时将
+.B ibs
+和
+.B obs
+设为同一个值,至少在
+只使用
+.BR sync ,
+.B noerror
+或
+.B notrunc
+转换时是这样的。因为bs规定,每个输入块都应作为单独
+的数据块拷贝到输出,而不把较短的块组合到一起)。
+.TP
+.BI "cbs=" bytes
+为
+.B block
+转换和
+.BR unblock 
+转换指定转换块的大小。
+.TP
+.BI "skip=" blocks
+在拷贝之前,跳过输入文件的前
+.I blocks
+块,每块大小为
+.BR ibs \-byte
+字节。
+.TP
+.BI "seek=" blocks
+在拷贝之前,跳过输出文件的前
+.I blocks
+块,每块大小为
+.BR obs \-byte
+字节。
+.TP
+.BI "count=" blocks
+只拷贝输入文件的前
+.I blocks
+块(每块的大小为
+.BR ibs \-byte
+字节),而不是全部内容,直到文件末尾。
+.TP
+.BI "conv=" 转换"[," 转换"]..."
+将文件按
+.I 转换
+参数指定的方式转换(在“,”两边没有空格)。
+.RS
+.PP
+转换方式包括:
+.PP
+.TP
+.B ascii
+将EBCDIC转换成ascii。
+.TP
+.B ebcdic
+将ascii转换成ebcdic。
+.TP
+.B ibm
+将ascii转换成alternative ebcdic。
+.TP
+.B block
+每一行输入,无论长短,输出都是
+.B cbs
+字节,并且其中的“换行”(NEWLINE,即c中的'\n')用
+空格替换。如有必要,行尾会填充空格。
+.TP
+.B unblock
+用“换行”替换每个输入块(
+.BR cbs 
+字节大小)末尾的空格。
+.TP
+.B lcase
+将大写字母转换成小写。
+.TP
+.B ucase
+将小写字母转换成大写。
+.TP
+.B swab
+交换每对输入字节。如果读入的字节数是奇数,最后
+一个字节只是简单的复制到输出(因为没有能跟它交换的
+字节了)(POSIX 1003.26,PASC翻译1003.2 3号和4号)。
+.TP
+.B noerror
+发生读错误时,继续进行。
+.TP
+.B notrunc
+不截断输出文件。
+.TP
+.B sync
+用0填充到每个输入块的末尾,使其大小为
+.B ibs
+字节。
+.RE
+.SH "GNU标准选项"
+.TP
+.B "\-\-help"
+将用法信息打印到标准输出,并成功退出。
+.TP
+.B "\-\-version"
+将版本信息打印到标准输出,并成功退出。
+.TP
+.B "\-\-"
+结束选项列表。
+.SH 环境变量
+LANG, LC_ALL, LC_CTYPE和LC_MESSAGES具有其通常含义。
+.SH "遵循标准"
+POSIX 1003.2
+.SH 举例
+磁带机通常不能接受任意大小的数据块,当最后一个数据片
+段不能充满整个块时,
+.B dd
+将出现I/O错误。用'dd if=myfile of=/dev/mytape conv=sync'
+就可以使全部内容存到磁带上。当然,这样做,把文件从磁
+带上读回时回产生一个稍大些的文件,因为其尾部填充了一
+些NUL(空字符)。
+.SH 注
+本手册页描述了fileutils\-4.0软件包中的
+.B dd
+命令。其他版
+本的dd会与此稍有不同。有关更正和补充可以发帖到中国linux
+论坛\-man手册版。报告程序中的错误,请给
+fileutils\-bugs2gnu.ai.wit.edu
+发邮件。
+
+.SH "[中文版维护人]"
+.B astonia <email>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/deallocvt.1 b/src/man1/deallocvt.1
new file mode 100644
index 0000000..6514c57
--- /dev/null
+++ b/src/man1/deallocvt.1
@@ -0,0 +1,25 @@
+.TH DEALLOCVT 1 "1997年10月6日" "控制台工具" "Linux用户手册"
+
+.SH NAME(名称)
+deallocvt \- 释放未使用的虚拟终端
+
+.SH SYNOPSIS(总览)
+.BI "deallocvt [ " "N1 N2" " ... ]"
+
+.SH DESCRIPTION(描述)
+
+如果不指定参数,
+.B deallocvt
+程序会释放所有未使用的虚拟终端的核心内存和数据结构.
+如果给定了参数
+.I Ni
+那么就只释放TTY
+.RI /dev/tty Ni .
+
+如果一个虚拟终端不是前台控制台,而且没有在上面打开进程
+执行读或写操作,又没有在该屏幕上选择文本,那么认为该
+终端是未使用的.
+
+.SH "SEE ALSO"(另见)
+.BR chvt (1),
+.BR openvt (1).
diff --git a/src/man1/declare.1 b/src/man1/declare.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/declare.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/df.1 b/src/man1/df.1
new file mode 100644
index 0000000..5e2dd97
--- /dev/null
+++ b/src/man1/df.1
@@ -0,0 +1,104 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Copyright 王炎,BitBIRD,Scorpio,www.linuxforum.net 2000.
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH DF 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+df \- 报告文件系统磁盘空间的使用情况
+.SH 总览
+.BI "df [" OPTION "]... ["FILE]...
+.sp
+POSIX 选项:
+.B [\-kP]
+.sp
+GNU 选项 (最短方式):
+.B [\-ahHiklmPv]
+.BI "[\-t " fstype ]
+.BI "[\-x " fstype ]
+.BI "[\-\-block\-size=" size ]
+.B [\-\-print\-type]
+.B [\-\-no\-sync]
+.B [\-\-sync]
+.B "[\-\-help] [\-\-version] [\-\-]"
+.SH 描述
+此手册页文档是df的GNU版本.
+df命令列出指定的每一个文件名所在的文件系统上可用磁盘空间的数量。
+如果没有指定文件名,则显示当前所有使用中的文件系统.缺省设置时,
+磁盘空间以1K为一块显示,如果环境变量POSIXLY_CORRECT已设
+置,则采用512字节为一块显示.
+如果参数是一个包含已使用文件系统的磁盘设备名,
+df命令显示出的是该文件系统的可用空间,而非包含设备结点的文件系
+统(只能是根文件系统).此版本的df不能显示未使用文件系统的可用空
+间,这是由于大多数系统在响应这样的请求时必须很清楚该文件系统的
+结构.
+
+
+.SH GNU 参数说明
+
+.TP
+.B "\-a, \-\-all"
+列出包括BLOCK为0的文件系统
+.TP
+.B "\-\-block\-size=SIZE use SIZE\-byte blocks"
+指定块的大小
+.TP
+.B \-h,\--huma\-readable"
+用常见的格式显示出大小(例如:1K 234M 2G)
+.TP
+.B \-H,\--si"
+同上,但是这里的1k等于1000字节而不是1024字节
+.TP
+.B "\-i, \-\-inodes"
+用信息索引点代替块表示使用状况
+
+.TP
+.B "\-k, \-\-kilobytes"
+指定块大小等于1024字节来显示使用状况
+.TP
+.B "\-l, \-\-local"
+只显示本地文件系统使用状况
+.TP
+.B "\-m, \-\-megabytes"
+以指定块大小等于1048576字节(1M)来显示使用状况
+.TP
+.B "\-\-no\-sync"
+在取得使用信息前禁止调用同步
+(default)
+.TP
+.B "\-P, \-\-portability"
+使用POSIX格式输出
+.TP
+.B "\-\-sync"
+在取得使用信息前调用同步
+.TP
+.B "\-t, \-\-type=TYPE"
+只显示指定类型(TYPE)的文件系统
+.TP
+.B "\-T, \-\-print\-type"
+输出每个文件系统的类型
+.TP
+.B "\-x, \-\-exclude\-type=TYPE"
+只显示指定类型(TYPE)之外的文件系统.
+.TP
+.B "\-v" (忽略)
+.TP
+.B "\-\-"
+输出该命令的帮助信息并退出
+.TP
+.B "\-\-version"
+输出版本信息并退出
+
+.SH 作者
+由 Torbjorn Granlund, David MacKenzie, Larry
+McVoy, 和 Paul Eggert 写作.
+.SH 错误报告
+将错误发到<bu\-fileutils at gnu.org>
+
+.SH "[中文版维护人]"
+.B 王炎 <wyd at 263.net>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/diff.1 b/src/man1/diff.1
new file mode 100644
index 0000000..7961a4f
--- /dev/null
+++ b/src/man1/diff.1
@@ -0,0 +1,439 @@
+.\" Date: Fri, 11 Sep 1998 19:13:45 +0100
+.\" From: Edward Betts 
+.\" Chinese Version Copyrighted Scorpino, www.linuxforum.net 2000
+.\" Derived from the GNU diff info page.
+.\" May be distributed under the GPL.
+.TH DIFF 1 "22sep1993" "GNU Tools" "GNU Tools"
+.SH NAME
+diff \- 找出两个文件的不同点
+.SH 总览
+.B diff
+[选项] 源文件 目标文件
+.SH 描述
+在最简单的情况是, 
+.I diff
+比较两个文件的内容
+.I (源文件
+和
+.IR 目标文件) .
+文件名可以是
+.B \-
+由标准输入设备读入的文本.
+作为特别的情况是,
+.B "diff \- \-"
+比较一份标准输入的它自己的拷贝
+如果 
+.I 源文件
+是一个目录和
+.I 目标文件
+不是(目录),
+.I diff
+会比较在
+.I 源文件(目录)
+里的文件的中和
+.IR 目标文件同名的(文件),
+反过来也一样. 非目录文件不能是
+.BR \- .
+
+如果
+.I 源文件
+和
+.I 目标文件
+都是目录,
+.I diff
+比较两个目录中相应的文件,
+依照字母次序排序;这个比较是不会递归的,除非给出
+.B \-r
+或者
+.B \-\-recursive.
+.I diff
+不把一个目录的内容看为它是一个文件来比较。被指定的文件不
+能是标准的输入, 因为标准的输入是无名的并且"有一样的名字的文
+件"的观点不适用。
+.B diff
+的选项由
+.BR \- ,
+开始
+所以正常地
+.I 源文件(名)
+和
+.I 目标文件(名)
+不可以用
+.BR \- 
+开头.
+然而,
+.B \-\-
+可以被它视为保留的即使作为文件名的开头(
+they begin with
+.BR \- . )
+.SS 选项
+下面是 GNU所接受的
+.I diff
+的所有选项的概要.
+大多数的选项有两个相同的名字,一个是单个的
+跟在 
+.BR \- 
+后面字母,
+另一个是由
+.BR \-\- 
+引出的长名字.
+多个单字母选项(除非它们产生歧义)能够组合为单行的命令行语法
+.B \-ac
+是等同于
+.BR "\-a \-c" .
+长命名的选项能被缩短到他们的名字的任何唯一的前缀.
+用
+.RB ( [
+和
+.BR ] )
+括起来显示选项产生歧义的选项
+.TP
+.BI \- 行数(一个整数)
+显示上下文
+.I 行数
+(一个整数).
+这个选项自身没有指定输出格式,这是没有效果的,除非和
+.B \-c
+或者
+.BR \-u 
+组合使用.
+这是已废置的选项,对于正确的操作,
+上下文至少要有两行。
+.TP
+.B \-a
+所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件.
+.TP
+.B \-b
+忽略空格引起的变化.
+.TP
+.B \-B
+忽略插入删除空行引起的变化.
+.TP
+.B \-\-brief
+仅报告文件是否相异,在乎差别的细节.
+.TP
+.B \-c
+使用上下文输出格式.
+.TP
+.BI "\-C " 行数(一个整数)
+.br
+.ns
+.TP
+.BI \-\-context[= lines ]
+使用上下文输出格式,显示以指定
+.I 行数
+(一个整数), 或者是三行(当
+.I 行数
+没有给出时.
+对于正确的操作,
+上下文至少要有两行.
+.TP
+.BI \-\-changed\-group\-format= format
+使用
+.I format
+输出一组包含两个文件的不同处的行,其格式是 if\-then\-else .
+.TP
+.B \-d
+改变算法也许发现变化的一个更小的集合.这会使
+.I diff
+变慢 (有时更慢).
+.TP
+.BI "\-D " name
+合并 if\-then\-else 格式输出, 预处理宏(由name参数提供)条件.
+.TP
+.B \-e
+.br
+.ns
+.TP
+.B \-\-ed
+输出为一个有效的
+.I ed
+脚本.
+.TP
+.BI \-\-exclude= pattern
+比较目录的时候,忽略和目录中与
+.IR pattern (样式)
+相配的.
+.TP
+.BI \-\-exclude\-from= file
+比较目录的时候,忽略和目录中与任何包含在
+.IR file (文件)
+的样式相配的文件和目录.
+.TP
+.B \-\-expand\-tabs
+在输出时扩展tab为空格,保护输入文件的tab对齐方式
+.TP
+.B \-f
+产生一个很象
+.I ed
+脚本的输出,但是但是在他们在文件出现的顺序有改变
+.TP
+.BI "\-F " regexp
+在上下文和统一格式中,对于每一大块的不同,显示出匹配
+.IR regexp .
+的一些前面的行.
+.TP
+.B \-\-forward\-ed
+产生象
+.B ed
+脚本的输出,但是它们在文件出现的顺序有改变。
+.TP
+.B \-h
+这选项现在已没作用,它呈现Unix的兼容性.
+.TP
+.B \-H
+使用启发规则加速操作那些有许多离散的小差异的大文件.
+.TP
+.BI \-\-horizon\-lines= lines
+比较给定行数的有共同前缀的最后行,和有共同或缀的最前行.
+.TP
+.B \-i
+忽略大小写.
+.TP
+.BI "\-I " regexp
+忽略由插入,删除行(由regexp 参数提供参考)带来的改变.
+.TP
+.BI \-\-ifdef= name
+合并 if\-then\-else 格式输出, 预处理宏(由name参数提供)条件.
+.TP
+.B \-\-ignore\-all\-space
+在比较行的时候忽略空白.
+.TP
+.B \-\-ignore\-blank\-lines
+忽略插入和删除空行
+.TP
+.B \-\-ignore\-case
+忽略大小写.
+.TP
+.BI \-\-ignore\-matching\-lines= regexp
+忽略插入删除行(由regexp 参数提供参考).
+.TP
+.B \-\-ignore\-space\-change
+忽略空白的数量.
+.TP
+.B \-\-initial\-tab
+在文本行(无论是常规的或者格式化的前后文关系)前输出tab代替空格.
+引起的原因是tab对齐方式看上去象是常规的一样.
+.TP
+.B \-l
+产生通过
+.I pr
+编码的输出.
+.TP
+.BI "\-L " label
+.br
+.ns
+.TP
+.BI \-\-label= label
+使用
+.I label
+给出的字符在文件头代替文件名输出.
+.TP
+.B \-\-left\-column
+以并列方式印出两公共行的左边
+.TP
+.BI \-\-line\-format= format
+使用
+.I format
+输出所有的行,在
+if\-then\-else 格式中.
+.TP
+.B \-\-minimal
+改变算法也许发现变化的一个更小的集合.这会使
+.I diff
+变慢 (有时更慢).
+.TP
+.B \-n
+输出 RC\-格式 diffs; 
+除了每条指令指定的行数受影响外 象
+.B \-f
+一样。
+.TP
+.B \-N
+.br
+.ns
+.TP
+.B \-\-new\-file
+在目录比较中,如果那个文件只在其中的一个目录中找到,那么它被视为在
+另一个目录中是一个空文件.
+.TP
+.BI \-\-new\-group\-format= format
+使用
+.I format
+以if\-then\-else 格式输出只在第二个文件中取出的一个行组
+.TP
+.BI \-\-new\-line\-format= format
+使用
+.I format
+以if\-then\-else 格式输出只在第二个文件中取出的一行
+.TP
+.BI \-\-old\-group\-format= format
+使用
+.I format
+以if\-then\-else 格式输出只在第一个文件中取出的一个行组
+.TP
+.BI \-\-old\-line\-format= format
+使用
+.I format
+使用
+.I format
+以if\-then\-else 格式输出只在第一个文件中取出的一行
+.TP
+.B \-p
+显示带有c函数的改变.
+.TP
+.B \-P
+在目录比较中,如果那个文件只在其中的一个目录中找到,那么它被视为在
+另一个目录中是一个空文件.
+.TP
+.B \-\-paginate
+产生通过
+.I pr
+编码的输出.
+.TP
+.B \-q
+仅报告文件是否相异,不报告详细的差异.
+.TP
+.B \-r
+当比较目录时,递归比较任何找到的子目录.
+.TP
+.B \-\-rcs
+输出 RC\-格式 diffs; 
+除了每条指令指定的行数受影响外 象
+.B \-f
+一样。
+.TP
+.B \-\-recursive
+当比较目录时,递归比较任何找到的子目录.
+.TP
+.B \-\-report\-identical\-files
+.br
+.ns
+.TP
+.B \-s
+报告两个文件相同.
+.TP
+.BI "\-S " file
+当比较目录时,由
+.IR file 
+开始.
+这用于继续中断了的比较.
+.TP
+.B \-\-sdiff\-merge\-assist
+打印附加的信息去帮助
+.IR sdiff .
+.I sdiff
+在运行
+.IR diff 
+时使用这些选项.
+这些选项不是特意为使用者直接使用而准备的。
+.TP
+.B \-\-show\-c\-function
+显示带有c函数的改变.
+.TP
+.BI \-\-show\-function\-line= regexp
+在上下文和统一的格式,对于每一大块的差别,显示出匹配
+.IR regexp .
+的一些前面的行
+
+.TP
+.B \-\-side\-by\-side
+使用并列的输出格式.
+.TP
+.B \-\-speed\-large\-files
+使用启发规则加速操作那些有许多离散的小差异的大文件.
+.TP
+.BI \-\-starting\-file= file
+当比较目录时,由
+.IR file 
+开始.
+这用于继续中断了的比较.
+.TP
+.B \-\-suppress\-common\-lines
+在并列格式中不印出公共行。
+.TP
+.B \-t
+在输出时扩展tab为空格,保护输入文件的tab对齐方式
+.TP
+.B \-T
+在文本行(无论是常规的或者格式化的前后文关系)前输出tab代替空格.引起的原因
+是tab对齐方式看上去象是常规的一样.
+.TP
+.B \-\-text
+所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件.
+.TP
+.B \-u
+使用统一的输出格式.
+.TP
+.BI \-\-unchanged\-group\-format= format
+使用
+.I format
+输出两个文件的公共行组,其格式是if\-then\-else.
+.TP
+.BI \-\-unchanged\-line\-format= format
+使用
+.I format
+输出两个文件的公共行,其格式是if\-then\-else.
+.TP
+.B \-\-unidirectional\-new\-file
+在目录比较中,如果那个文件只在其中的一个目录中找到,那么它被视为在
+另一个目录中是一个空文件.
+.TP
+.BI "\-U " lines
+.br
+.ns
+.TP
+.BI \-\-unified[= lines ]
+使用前后关系格式输出,显示以指定
+.I 行数
+(一个整数), 或者是三行(当
+.I 行数
+没有给出时.
+对于正确的操作,
+上下文至少要有两行.
+.TP
+.B \-v
+.br
+.ns
+.TP
+.B \-\-version
+输出
+.IR diff 
+版本号.
+.TP
+.B \-w
+在比较行时忽略空格
+.TP
+.BI "\-W " columns
+.br
+.ns
+.TP
+.BI \-\-width= columns
+在并列格式输出时,使用指定的列宽.
+.TP
+.BI "\-x " pattern
+比较目录的时候,忽略和目录中与
+.IR pattern (样式)
+相配的.
+.TP
+.BI "\-X " file
+比较目录的时候,忽略和目录中与任何包含在
+.IR file (文件)
+的样式相配的文件和目录.
+.TP
+.B \-y
+使用并列格式输出
+.SH 参考
+cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).
+.SH DIAGNOSTICS
+退出状态为0意味着没有差别,
+1意味着有一些不同。
+2意味很有问题(许多差异)
+.br
+
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/dig.1 b/src/man1/dig.1
new file mode 100644
index 0000000..12520b6
--- /dev/null
+++ b/src/man1/dig.1
@@ -0,0 +1,681 @@
+.\" ++Copyright++ 1993
+.\" -
+.\" Copyright (c) 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\" 	This product includes software developed by the University of
+.\" 	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" -
+.\" Portions Copyright (c) 1993 by Digital Equipment Corporation.
+.\" 
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies, and that
+.\" the name of Digital Equipment Corporation not be used in advertising or
+.\" publicity pertaining to distribution of the document or software without
+.\" specific, written prior permission.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+.\" SOFTWARE.
+.\" -
+.\" --Copyright--
+.\"
+.\" Distributed with 'dig' version 2.0 from University of Southern
+.\" California Information Sciences Institute (USC-ISI).
+.\"
+.\"       dig.1   2.0 (USC-ISI) 8/30/90
+.\"
+.Dd 1990年8月30日
+.Dt DIG 1
+.Os BSD 4
+.Sh NAME(名称)
+.Nm dig
+.Nd 发送域名查询信息包到域名服务器
+.Sh SYNOPSIS(总览)
+.Nm dig
+.Op Ic @ Ns Ar server
+.Ar domain
+.Op Aq Ar query-type
+.Op Aq Ar query-class
+.Op Ic + Ns Aq Ar query-option
+.Op Fl Aq Ar dig-option
+.Op Ar %comment
+.Sh DESCRIPTION(描述)
+.Ic Dig
+(domain information groper 域名信息搜索)是一个灵活的
+命令行工具,
+它可以用来从域名系统服务器中收集信息.
+.Ic Dig
+有两种模式:简单交互模式
+用于简单的查询,而批处理模式则可以对
+包含多个查询条目的列表执行查询.
+所有查询选项都可以从命令行输入.
+.Pp
+通常简单的
+.Ic dig
+用法为下列格式:
+.Pp
+.Bd -ragged -offset indent-two
+.Ic dig @ Ns Ar server  domain   query-type  query-class
+.Ed
+.Pp
+这里:
+.Bl -tag -width Fl
+.It Ar server
+可为域名或者以点分隔的Internet地址.
+如果省略该可选字段,
+.Ic dig
+会尝试使用你机器的默认域名服务器.
+.sp 1
+.Em 注意:
+如果指定了一个域名,那么将使用域名系统解析程序
+(即BIND)来进行解析.
+如果你的系统不支持DNS,那么可能
+.Em 必须
+指定一个以点分隔的地址.另外一种选择是,
+如果在你配置的某个地方有一台这样的服务器,
+那么你所要做的就是建立
+.Pa /etc/resolv.conf
+并在其中指明默认域名服务器的位置,这样
+.Ar server
+自身就可以解析了.参看
+.Xr resolver 5
+以获得
+.Pa /etc/resolv.conf
+相关的信息.
+.Sy 警告:
+修改
+.Pa /etc/resolv.conf
+同样会对标准的解析程序库产生影响,而
+.Pq 潜在地
+某些程序会要用到它.
+作为一种选择,用户可设置环境变量
+.Ev LOCALRES
+为指定的文件,这将用来取代
+.Pa /etc/resolv.conf
+.Po Ns Ev LOCALRES
+是特定针对
+.Ic dig
+解析程序的,并不会牵涉到标准解析程序
+.Pc .
+如果
+.Ev LOCALRES
+变量未设置或者指定的文件不能读,那么就使用
+.Pa /etc/resolf.conf .
+.It Ar domain
+是指一个你请求信息的域名.
+参看
+.Fl x
+选项(在该部分的
+.Sx OTHER OPTIONS
+节中有介绍)以获知指定反向地址查询的便捷方法.
+.It Ar query-type
+是指你所请求的信息类型(DNS查询类型).
+如果省略,默认为
+.Dq Ar a
+.Pq Dv T_A = Ar address .
+以下类型是可识别的:
+.Pp
+.Bl -hang -width "hinfo  T_HINFO   " -compact
+.It Ar a\ \ \ \ \ \  Dv T_A
+网络地址
+.It Ar any\ \ \ \  Dv T_ANY
+所有/任何与指定域相关的信息
+.It Ar mx\ \ \ \ \  Dv T_MX
+该域的邮件网关
+.It Ar ns\ \ \ \ \  Dv T_NS
+域名服务器
+.It Ar soa\ \ \ \  Dv T_SOA
+区域的授权记录
+.It Ar hinfo\ \  Dv T_HINFO
+主机信息
+.It Ar axfr\ \ \  Dv T_AXFR
+区域传输记录(必须是询问一台授权的服务器)
+.It Ar txt\ \ \ \  Dv T_TXT
+任意的字符串信息
+.El
+.Pp
+(参看RFC 1035以获得完整的列表.)
+.It Ar query-class
+是指在查询中请求的网络等级.如果省略,默认为
+.Dq Ar in
+.Pq Dv C_IN = Ar Internet .
+以下的等级是可识别的:
+.Pp
+.Bl -tag -width "hinfo  T_HINFO   " -compact
+.It Ar in\ \ \ \ \  Dv C_IN
+Internet等级的域
+.It Ar any\ \ \ \  Dv C_ANY
+所有/任何等级的信息
+.El
+.Pp
+(参看RFC 1035以获得完整的列表.)
+.Pp
+.Em 注意:
+.Dq Ar Any
+可以用来指定一个
+.Em 等级
+和/或查询的一种
+.Em 类型 .
+.Ic Dig
+会将第一次出现的
+.Dq Ar any
+解释为
+.Ar query-type = Dv T_ANY .
+为了指明
+.Ar query-class = Dv C_ANY ,
+你必须或者指定
+.Dq any
+两次,或者使用
+.Fl c
+选项(见下面)设置
+.Ar query-class .
+.El
+.Ss OTHER OPTIONS(其它选项)
+.Bl -tag -width Fl
+.It % Ns Ar ignored-comment
+.Dq %
+用来引用一个不用作解释的参数.
+如果正以批处理的模式运行
+.Ic dig
+这可能很有用.
+因为不用对一组查询中的每个
+.Ar @server-domain-name
+进行解析,你就可以避免这样做的额外开销,
+并且仍然能够在命令行上以域名作为参数.
+例如:
+.Pp
+.Bd -ragged -offset indent-two
+.Ic dig  @128.9.0.32  %venera.isi.edu  mx  isi.edu
+.Ed
+.Pp
+.It Fl Aq Ar dig option
+.Dq Fl
+用来指定一个影响
+.Ic dig
+操作的选项.
+当前可用的选项有(尽管不能保证都有用):
+.Bl -tag -width Fl
+.It Fl x Ar dot-notation-address
+这是指定反向地址映射的便捷的方法.
+不用写
+.Dq Ic dig 32.0.9.128.in-addr.arpa , 
+你可以简单地写成
+.Dq Ic dig -x 128.9.0.32 .
+.It Fl f Ar file
+.Ic dig
+批处理模式的文件.该文件包含了一组查询清单
+(
+.Ns Ic dig
+命令行),它们将一个接一个地执行.以
+.Sq \&; ,
+.Sq #
+或
+.Sq \en
+开头的行将忽略.其它选项
+仍然可以在命令行上出现,而且对
+每个批处理查询都有效.
+.It Fl T Ar time
+当运行于批处理模式下时,两次接着的查询之间的
+时间间隔,以秒计.
+可以用来保持两个或多个批处理
+.Ic dig
+命令大致同步运行.默认为零.
+.It Fl p Ar port
+端口号.通过监听非标准端口号来查询
+域名服务器.默认为53.
+.It Fl P Ns Bq Ar ping-string
+在查询返回之后,执行一次
+.Xr ping 8
+命令以获得响应时间的对照关系.这在调用shell上
+显得不那么自然.
+该命令显示的最后三行统计信息为:
+.Pp
+.Bd -ragged -offset indent-two
+.Ic ping Fl s server_name 56 3
+.Ed 
+.Pp
+如果可选的
+.Dq Ar ping_string
+存在,那么
+会覆盖shell命令中的
+.Dq Ic ping Fl s .
+.It Fl t Ar query-type
+指定查询类型.可以指定为一个将包含在类型字段
+中的整数值,也可以使用
+上面讨论的缩写助记符(即
+.Ar mx  = Dv T_MX ) .
+.It Fl c Ar query-class
+指定查询等级.可以指定为一个将包含在等级字段
+中的整数值,也可以使用
+上面讨论的缩写助记符(即in = C_IN).
+.It Fl k Ar keydir:keyname
+用TSIG密钥指定的的密钥名来签署这次查询,
+该密钥名在目录keydir下.
+.It Fl envsav
+该标识指定
+.Ic dig
+的环境变量
+(默认的,显示选项,等等.),在所有参数都解释了之后,
+应保存它们到
+一个文件中以使之成为默认的环境变量.
+如果你不喜欢默认的标准设置而又不想在每次使用
+.Ic dig
+时带大量的选项,那么这很有用.
+环境变量包括解析程序状态变量标识,超时和重试次数
+以及详细控制
+.Ic dig
+输出的标识(见下面).
+如果shell环境变量
+.Ev LOCALDEF
+设置为一个文件的名字,那么此即为默认的
+.Ic dig
+环境变量所保存的地方.如果没有,那么会在当前
+工作目录下创建
+.Dq Pa DiG.env .
+.Pp
+.Em 注意:
+.Ev LOCALDEF
+是特定针对
+.Ic dig
+解析程序,
+而它不会影响标准解析程序库的操作.
+.Pp
+每当
+.Ic dig
+执行时,它会查找
+.Dq Pa ./DiG.env
+或者在shell环境变量
+.Ev LOCALDEF
+中指定的文件.
+如果这样的文件存在而且可读,那么在解释
+任何参数之前,
+先从
+该文件中
+恢复环境变量.
+.It Fl envset
+该标识只影响批处理查询的运行.当在
+.Ic dig
+的批处理文件一行上指定了
+.Dq Fl envset
+时,在参数之后的
+.Ic dig
+环境变量会被解释为批处理文件执行期间
+默认的环境变量,
+或者
+直到指定了
+.Dq Fl envset 
+的下一行为止.
+.It Xo
+.Fl Op Cm no
+.Ns cm stick
+.Xc
+该标识只影响批处理查询的运行.
+它指定
+.Ic dig
+环境变量(通过
+.Dq Fl envset
+开关变量初始化读入或设置)会在
+.Ic dig
+批处理文件每次查询(行)之前重建.
+默认的
+.Dq Fl nostick
+表示
+.Ic dig
+环境变量不是固定的,因而在
+.Ic dig
+批处理文件中单行上指定的选项将对剩余的行
+继续产生作用(也即,它们不会恢复成
+.Dq sticky(固定的)
+默认值).
+.El
+.It Ic + Ns Aq Ar query-option
+.Dq +
+用来指定一个在查询信息包中需修改的或者
+需用来修改
+.Ic dig
+输出细节的选项.这些选项中的许多与
+.Xr nslookup 8
+所承认的参数相同.
+如果一个选项需带参数,那么格式如下:
+.Pp
+.Bd -ragged -offset indent-two
+.Ic + 
+.Ns Ar keyword 
+.Ns Op = Ns Ar value
+.Ed
+.Pp
+绝大多数关键字可简写.
+.Dq +
+选项的解释是非常直白的 \(em 值与它的关键字之间
+千万不能用空格分隔.
+当前可用的关键字有:
+.Pp
+Keyword      Abbrev.  Meaning [default]
+.Pp
+(关键字)     (缩写)   (含义) [默认值]
+.Pp
+.Bl -tag -width "[no]primary  (ret)    " -compact
+.It Xo
+.Op Cm no 
+.Ns Cm debug\ \ \ \ 
+.Pq Cm deb
+.Xc
+打开/关闭调试模式
+.Bq Cm deb
+.It Xo
+.Op Cm no 
+.Ns Cm d2\ \ \ \ \ \ \ \ \ \ 
+.Xc
+打开/关闭特殊的调试模式
+.Bq Cm nod2
+.It Xo
+.Op Cm no 
+.Ns Cm recurse\ \ 
+.Pq Cm rec
+.Xc
+使用/不使用递归查询
+.Bq Cm rec
+.It Xo
+.Cm retry= Ns Ar #
+.Cm \ \ \ \ \ 
+.Pq Cm ret
+.Xc 
+设置重试次数为#
+.Bq 4
+.It Xo
+.Cm time= Ns Ar #
+.Cm \ \ \ \ \ \ 
+.Pq Cm ti
+.Xc
+设置超时长度为#秒
+.Bq 4
+.It Xo
+.Op Cm no 
+.Ns Cm ko
+.Xc
+保留公开的选项(keep open options)(隐含vc)
+.Bq Cm noko
+.It Xo
+.Op Cm no 
+.Ns Cm vc
+.Xc
+使用/不使用虚拟电路
+.Bq Cm novc
+.It Xo
+.Op Cm no 
+.Ns Cm defname\ \ 
+.Pq Cm def
+.Xc
+使用/不使用默认的域名
+.Bq Cm def
+.It Xo
+.Op Cm no 
+.Ns Cm search\ \ \ 
+.Pq Cm sea
+.Xc
+使用/不使用域搜索列表
+.Bq Cm sea
+.It Xo
+.Cm domain= Ns Ar NAME\ \ 
+.Pq Cm do
+.Xc
+设置默认的域名为
+.Ar NAME
+.It Xo
+.Op Cm no 
+.Ns Cm ignore\ \ \ 
+.Pq Cm i
+.Xc
+忽略/不忽略截断(trunc.)错误
+.Bq Cm noi
+.It Xo
+.Op Cm no 
+.Ns Cm primary\ \ 
+.Pq Cm pr
+.Xc
+使用/不使用主服务器
+.Bq Cm nopr
+.It Xo
+.Op Cm no 
+.Ns Cm aaonly\ \ \ 
+.Pq Cm aa
+.Xc
+表示只包含授权查询的标识
+.Bq Cm noaa
+.It Xo
+.Op Cm no 
+.Ns Cm cmd
+.Xc
+重复(echo)解释的参数
+.Bq Cm cmd
+.It Xo
+.Op Cm no 
+.Ns Cm stats\ \ \ \ 
+.Pq Cm st
+.Xc
+显示查询统计信息
+.Bq Cm st
+.It Xo
+.Op Cm no 
+.Ns Cm Header\ \ \ 
+.Pq Cm H
+.Xc
+显示基本的包头
+.Bq Cm H
+.It Xo
+.Op Cm no 
+.Ns Cm header\ \ \ 
+.Pq Cm he
+.Xc
+显示包头的标识
+.Bq Cm he
+.It Xo
+.Op Cm no 
+.Ns Cm ttlid\ \ \ \ 
+.Pq Cm tt
+.Xc
+显示TTLs(Time to Live)
+.Bq Cm tt
+.It Xo
+.Op Cm no 
+.Ns Cm cl
+.Xc
+显示等级信息
+.Bq Cm nocl
+.It Xo
+.Op Cm no 
+.Ns Cm qr
+.Xc
+显示向外的查询
+.Bq Cm noqr
+.It Xo
+.Op Cm no 
+.Ns Cm reply\ \ \ \ 
+.Pq Cm rep
+.Xc
+显示响应信息
+.Bq Cm rep
+.It Xo
+.Op Cm no 
+.Ns Cm ques\ \ \ \ \ 
+.Pq Cm qu
+.Xc
+显示询问部分
+.Bq Cm qu
+.It Xo
+.Op Cm no 
+.Ns Cm answer\ \ \ 
+.Pq Cm an
+.Xc
+显示应答部分
+.Bq Cm an
+.It Xo
+.Op Cm no 
+.Ns Cm author\ \ \ 
+.Pq Cm au
+.Xc
+显示授权的部分
+.Bq Cm au
+.It Xo
+.Op Cm no 
+.Ns Cm addit\ \ \ \ 
+.Pq Cm ad
+.Xc
+显示附加的部分
+.Bq Cm ad
+.It Cm pfdef 
+设置为默认显示位
+.It Cm pfmin
+设置为最小的默认显示位
+.It Cm pfset= Ns Ar # 
+设置显示位为#
+(#可以为十六进制/八进制/十进制)
+.It Cm pfand= Ns Ar #
+位和显示位设为#(bitwise and print flags with #)
+.It Cm pfor= Ns Ar #
+位或显示位设为#(bitwise or print flags with #)
+.El
+.Pp
+当发送数据报查询时,
+.Cm retry
+和
+.Cm time
+选项会影响解析程序库的重传策略.其算法如下:
+.Pp
+.Bd -literal -offset indent
+for i = 0 to retry - 1
+    for j = 1 to num_servers
+	send_query
+	wait((time * (2**i)) / num_servers)
+    end
+end
+.Ed
+.Pp
+(注意:
+.Ic dig
+通常取
+.Dq Li num_servers
+的值为1 . )
+.El
+.Ss DETAILS(细节)
+.Ic Dig
+以前要求BIND的
+.Xr resolver 3
+库的版本作一些细微的修改.
+从BIND 4.9起,BIND的解析程序已经修补好
+并可以正常地与
+.Ic dig
+一起工作.
+实质上,
+.Ic dig
+在解释参数和设置适合的参数时是
+直来直去的
+(虽然并不巧妙)
+.Ic Dig
+会用到
+.Xr resolver 3
+的例程
+.Fn res_init , 
+.Fn res_mkquery ,
+.Fn res_send 
+以及访问
+.Ft _res
+结构.
+.Sh ENVIRONMENT(环境变量)
+.Bl -tag -width "LOCALRES  " -compact
+.It Ev LOCALRES
+用来替换Pa /etc/resolv.conf的文件
+.It Ev LOCALDEF
+默认的环境变量文件
+.El
+.Pp
+另见上面对
+.Fl envsav ,
+.Fl envset ,
+和
+.Xo
+.Fl Op Cm no 
+.Ns Cm stick
+.Xc
+选项的说明.
+.Sh FILES(相关文件)
+.Bl -tag -width "/etc/resolv.conf  " -compact
+.It Pa /etc/resolv.conf	
+初始化的域名和域名服务器地址
+.It Pa \./DiG.env
+默认的保存默认选项的文件
+.El
+.Sh SEE ALSO(另见)
+.Xr named 8 , 
+.Xr resolver 3 , 
+.Xr resolver 5 ,  
+.Xr nslookup 8 . 
+.Sh STANDARDS(标准)
+RFC 1035.
+.Sh AUTHOR(作者)
+Steve Hotz 
+hotz at isi.edu
+.Sh ACKNOWLEDGMENTS(致谢)
+.Ic Dig
+使用了源自
+.Xr nslookup 8
+的函数,
+其作者为Andrew Cherenson.
+.Sh BUGS
+.Ic Dig
+是蠕变特色("creeping featurism")的一个
+典型实例 -- 这是因在其开发
+过程中就考虑到了一些潜在应用而导致的结果.
+它可能会从这种严格的限定中受益.同样,
+他们设立的显示位以及条目的间隔尺寸
+很明显地也是一种十分特别的创意.
+.Pp
+当问题出在解析程序身上时,
+.Ic Dig
+不会总是能够正常地退出(在适合的状况下)
+.Po Sy 注意:
+绝大多数一般的exit情况是能够处理的
+.Pc .
+当运行于批处理模式下时尤其恼火.
+如果不能正常退出(又无法俘获)的话,
+那么整个批处理将终止;如果俘获了这样的事件,
+.Ic dig
+就只是继续下一个查询罢了.
+.Sh [中文版维护人]
+riser <boomer at ccidnet.com>
+.Sh [中文版最新更新]
+2001/7/19
+.Sh "《中国Linux论坛man手册页翻译计划》"
+http://cmpp.linuxforum.net
diff --git a/src/man1/dircolor.1 b/src/man1/dircolor.1
new file mode 100644
index 0000000..6d86e70
--- /dev/null
+++ b/src/man1/dircolor.1
@@ -0,0 +1,126 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\"  Chinese Version Copyright Scorpio, BitBIRD, www.linuxforum.net, 2000
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.\" Modified, James Sneeringer <jvs at ocslink.com>, Wed Sep 22 23:21:19 1999
+.\"
+.TH DIRCOLORS 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME[名字]
+dircolors \- 设置‘ls'显示结果的颜色
+.SH SYNOPSIS[总览]
+.B dircolors
+.B [\-b] [\-\-sh] [\-\-bourne\-shell]
+.B [\-c] [\-\-csh] [\-\-c\-shell]
+.B [\-p] [\-\-print\-database]
+.B [\-\-help] [\-\-version]
+.BI [ FILE ]
+.SH 描述
+.B dircolors
+输出希望得到的输出颜色,是由
+.B ls
+(和
+.BR dir ,
+等.). 典型的用法:
+.br
+.RS
+eval `dircolors [OPTION]... [FILE]`
+.RE
+.PP
+如果指定了
+.I FILE
+,
+.B dircolors
+从该文件确定那些颜色用于什么文件类型和外延.
+否则使用一个预先编译好的数据库.
+关于这个文件的详细格式, 运行`dircolors \-\-print\-database'.
+.PP
+输出是一个shell命令去设置
+.B LS_COLORS
+环境变量.你能够指定shell语法来在命令行使用,或者
+.B dircolors
+将推测它是来自
+.B SHELL
+环境变量的值.
+.PP
+完成这个命令后, `ls \-\-color' (可能已经alias 为 ls)
+会以渴望的颜色列表文件.
+.PP
+.SH 选项
+.TP
+.B "\-b, \-\-sh, \-\-bourne\-shell"
+输出 Bourne shell 命令.如果设置了
+.B SHELL
+环境变量设置了和没有以
+.I csh
+或是
+.IR tcsh 
+结尾,这就是默认值.
+.TP
+.B "\-c, \-\-csh, \-\-c\-shell"
+输出C shell 命令. 如果
+.B SHELL
+以
+.I csh
+或
+.IR tcsh 
+结尾的时候是默认值.
+.TP
+.B "\-p, \-\-print\-database"
+显示(已编译)的默认颜色配置数据库.
+这个输出本身就是有效的配置文件
+并且相当清楚地描述了可能的情况.
+.SH "GNU 标准选项"
+.TP
+.B "\-\-help"
+显示使用信息在标准输出并退出.
+.TP
+.B "\-\-version"
+显示版本信息在标准输出并退出.
+.TP
+.B "\-\-"
+结束选项列表.
+.SH 环境(变量)
+变量 SHELL and TERM 通常能从shell命令中正确找到.
+变量LANG, LC_ALL, LC_CTYPE 和 LC_MESSAGES 有通常的意义.
+变量LS_COLORS 被用于信息到
+.BR ls .
+.SH "遵循"
+有色彩的
+.BR ls (1)
+输出是一项 GNU 扩展.
+这个实现和跟着最早的
+Slackware Linux 发布的
+.BR dircolors / color\-ls
+包不太兼容. 尤其是没有提供对 Z shell 和 Korn shell 的支持.
+使用这些shells 应该使用 Bourne shell (\-b) 模式.
+.SH "参考"
+.BR dir_colors (5),
+.BR ls (1)
+.SH 相关文件
+.TP
+.I /etc/dir_colors
+System\-wide configuration file for
+为
+.BR dircolors.
+提供的系统普用配置文件
+.TP
+.I ~/.dir_colors
+每个用户
+.BR dircolors 
+配置文件.
+.SH 注意
+这份
+.B dircolors
+的描述能够在 file\%utils\-4.0 包中找到;
+其它的版本也许有些微的不同.
+对于修改和新增的请邮到 aeb at cwi.nl.
+漏洞报告邮到 fileutils\-bugs at gnu.ai.mit.edu.
+.br
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/9
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/dircolors.1 b/src/man1/dircolors.1
new file mode 100644
index 0000000..84a44ce
--- /dev/null
+++ b/src/man1/dircolors.1
@@ -0,0 +1,58 @@
+.TH DIRCOLORS "1" "January 2000" "GNU fileutils 4.0p" FSF
+.SH NAME
+dircolors \- 设置 ls 的颜色
+.SH "总览 (SYNOPSIS)"
+.B dircolors
+[\fIOPTION\fR]... [\fIFILE\fR]
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+输出 用于 设置 LS_COLORS 环境变量 的 命令.
+.SS "确定输出格式:"
+.TP
+\fB\-b\fR, \fB\-\-sh\fR, \fB\-\-bourne\-shell\fR
+输出 用于 设置 LS_COLORS 的 Bourne shell 命令
+.TP
+\fB\-c\fR, \fB\-\-csh\fR, \fB\-\-c\-shell\fR
+输出 用于 设置 LS_COLORS 的 C shell 命令
+.TP
+\fB\-p\fR, \fB\-\-print\-database\fR
+输出 缺省命令
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+如果 指定了 文件 FILE, dircolors 读取 该文件 的 内容 以 决定 什么 颜色 对应
+什么 文件类型 和 文件扩展名, 否则 就 使用 预编译 的 数据. 欲知 格式 细节, 
+请 运行 命令 `dircolors \fB\-\-print\-database\fR'.
+.SH "作者 (AUTHOR)"
+H. Peter Anvin.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-fileutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B dircolors
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B dircolors
+程序, 使用 命令
+.IP
+.B info dircolors
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/10
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/dirname.1 b/src/man1/dirname.1
new file mode 100644
index 0000000..3902102
--- /dev/null
+++ b/src/man1/dirname.1
@@ -0,0 +1,46 @@
+.TH DIRNAME "1" "1999年8月" "GNU sh-utils 2.0" FSF
+.SH NAME(名称)
+dirname \- 从文件名剥离非目录的后缀
+.SH SYNOPSIS(总览)
+.B dirname
+\fINAME\fR
+.br
+.B dirname
+\fIOPTION\fR
+.SH DESCRIPTION(描述)
+.PP
+.\" 在这儿添加任何附加的描述
+.PP
+打印去除了/后面部分的NAME;如果NAME没有包含/,则输出`.'(表示当前目录).
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+输出版本信息并退出
+.SH "REPORTING BUGS"(报告BUGS)
+报告bugs请发到<bug-sh-utils at gnu.org>.
+.SH "SEE ALSO"(另见)
+.B dirname
+的完整文档是以Texinfo手册的形式维护的.如果
+你正确地安装了
+.B info
+和
+.B dirname
+程序,那么命令
+.IP
+.B info dirname
+.PP
+应该可以让你访问到整个手册.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/dirs.1 b/src/man1/dirs.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/dirs.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/disown.1 b/src/man1/disown.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/disown.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/dnskeygen.1 b/src/man1/dnskeygen.1
new file mode 100644
index 0000000..1037a5d
--- /dev/null
+++ b/src/man1/dnskeygen.1
@@ -0,0 +1,136 @@
+.\" Copyright (c) 1996,1999 by Internet Software Consortium
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+.\" ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+.\" CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+.\" SOFTWARE.
+.\"
+.Dd 1998 年 12 月 2 日
+.Dt DNSKEYGEN 1
+.Os BSD 4
+.Sh NAME
+.Nm dnskeygen
+.Nd 针对DNS安全性所生成的公共,私有和共享的密钥
+.Sh SYNOPSIS(总览)
+.Nm dnskeygen
+.Oo Fl
+.Op Cm DHR
+.Ar size
+.Oc
+.Op Fl F
+.Fl Op Cm zhu
+.Op Cm Fl a
+.Op Cm Fl c
+.Op Cm Fl p Ar num
+.Op Cm Fl s Ar num
+.Fl n Ar name
+.Sh DESCRIPTION(描述)
+.Ic Dnskeygen
+(DNS密钥生成器)是一个用来在DNS(Domain Name System)内部
+生成和维护针对DNS安全性的密钥的工具.
+.Nm Dnskeygen
+可以生成鉴别区域数据的公共和私有密钥,以及用于请求/事务处理签名的
+共享密钥.
+.Bl -tag -width Fl
+.It Fl D
+Dnskeygen会生成一个
+.Ic DSA/DSS
+密钥.
+.Dq size
+必为[512, 576, 640, 704, 768, 832, 896, 960, 1024]中的一个.
+.It Fl H
+Dnskeygen会生成一个
+.Ic HMAC-MD5
+密钥.
+.Dq size
+必定在128到504之间.
+.It Fl R
+Dnskeygen会生成一个
+.Ic RSA
+密钥.
+.Dq size
+必定在512到4096之间.
+.It Fl F
+.Ic (只用于RSA)
+在生成密钥中使用大指数.
+.It Fl z Fl h Fl u
+这些标识分别定义了所生成密钥的类型为区域(DNS有效性)密钥,
+主机(主机或服务)密钥还是用户(如email)密钥.
+.It Fl a
+指明该密钥
+.Ic 不能
+用作鉴别.
+.It Fl c
+指明该密钥
+.Ic 不能
+用作加密.
+.It Fl p Ar num
+设置密钥的协议字段为
+.Ar num
+;默认为
+.Ic 3
+(DNSSEC)如果指定了
+.Dq Fl z
+或
+.Dq Fl h
+那么则为
+.Ic 2
+(EMAIL).
+其它可接受的值还有
+.Ic 1
+(TLS),
+.Ic 4
+(IPSEC),和
+.Ic 255
+(ANY).
+.It Fl s Ar num
+设置密钥的强度字段为
+.Ar num;
+默认为
+.Sy 0.
+.It Fl n Ar name
+设置密钥的名字为
+.Ar name.
+.El
+.Ss DETAILS(细节)
+.Ic Dnskeygen
+存储每个密钥在两个文件中:
+.Pa K<name>+<alg>+<footprint>.private
+和
+.Pa K<name>+<alg>+<footprint>.key
+文件
+.Pa K<name>+<alg>+<footprint>.private
+包含了以可移植格式保存的私有密钥.文件
+.Pa K<name>+<alg>+<footprint>.key
+包含了以DNS区域文件格式保存的公共密钥:
+.Pp
+.D1 Ar <name> IN KEY <flags> <algorithm> <protocol> <exponent|modulus>
+.Pp
+.Sh ENVIRONMENT(环境变量)
+没有涉及到任何环境变量.
+.Sh SEE ALSO(另见)
+.Em RFC 2065
+关于维护DNS安全的文档以及
+.Em TSIG
+Internet草案.
+.Sh AUTHOR(作者)
+Olafur Gudmundsson (ogud at tis.com).
+.Sh ACKNOWLEDGMENTS(致谢)
+基本的加密数学是由DNSSAFE和/或Foundation Toolkit libraries完成的.
+.Sh BUGS
+目前尚无已知的bugs.
+
+.Sh "[中文版维护人]"
+riser <boomer at ccidnet.com>
+.Sh "[中文版最新更新]"
+2001/7/13
+.Sh "《中国Linux论坛man手册页翻译计划》"
+http://cmpp.linuxforum.net
diff --git a/src/man1/dnsquery.1 b/src/man1/dnsquery.1
new file mode 100644
index 0000000..194375e
--- /dev/null
+++ b/src/man1/dnsquery.1
@@ -0,0 +1,181 @@
+.\"Copyright (c) 1995,1996,1999 by Internet Software Consortium
+.\"
+.\"Permission to use, copy, modify, and distribute this software for any
+.\"purpose with or without fee is hereby granted, provided that the above
+.\"copyright notice and this permission notice appear in all copies.
+.\"
+.\"THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+.\"ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+.\"OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+.\"CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+.\"DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+.\"PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+.\"ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+.\"SOFTWARE.
+.\"
+.Dd 1990年3月10日
+.Dt DNSQUERY 1
+.Os BSD 4
+.Sh NAME(名称)
+.Nm dnsquery
+.Nd 使用解析程序查询域名服务器
+.Sh SYNOPSIS(总览)
+.Nm dnsquery
+.Op Fl n Ar nameserver
+.Op Fl t Ar type
+.Op Fl c Ar class
+.Op Fl r Ar retry
+.Op Fl p Ar period
+.Op Fl d
+.Op Fl s
+.Op Fl v
+.Ar host
+.Sh DESCRIPTION(描述)
+.Ic dnsquery
+程序是一个通过BIND解析程序库调用到域名服务器的通用接口.
+该程序支持使用一些查询操作码来查询域名服务器.
+该程序意在作为程序如nstest,nsquery和nslookup的替换或补充.
+所有参数,除了
+.Ar host
+和
+.Ar nameserver
+之外都是不区分大小写的.
+.Sh OPTIONS(选项)
+.Bl -tag -width Fl
+.It Fl n Ar nameserver
+查询中使用的域名服务器.域名服务器可以表示为
+Internet地址格式
+.Ar w.x.y.z 
+也可以表示为域名的形式.
+(默认情况:取
+.Pa /etc/resolv.conf
+中指定的.)
+.It Fl t Ar type
+所关心的资源记录的类型.类型包括:
+.Bl -tag -width "AFSDB  " -compact -offset indent
+.It Ar A
+地址
+.It Ar NS
+域名服务器
+.It Ar CNAME
+标准名
+.It Ar SOA
+起始授权记录
+.It Ar WKS
+众所周知的服务
+.It Ar HINFO
+主机信息
+.It Ar MINFO
+邮箱信息
+.It Ar MX
+邮件网关
+.It Ar RP
+负责人信息
+.It Ar MG
+邮件组成员信息
+.It Ar AFSDB
+DCE或AFS服务器
+.It Ar ANY
+所有的信息
+.El
+.Pp
+注意可以使用任意大小写形式.(默认情况:
+.Ar ANY . )
+.It Fl c Ar class
+所关心的资源纪录的等级.
+等级包括:
+.Bl -tag -width "CHAOS  " -compact -offset indent
+.It Ar IN
+Internet等级
+.It Ar HS
+Hesiod等级
+.It Ar CHAOS
+Chaos等级
+.It Ar ANY
+所有的等级
+.El
+.Pp
+注意可以使用任意大小写形式.(默认情况:
+.Ar IN . )
+.It Fl r Ar retry
+名字服务器无响应下的重试次数.(默认情况: 4.)
+.It Fl p Ar period
+超时等待的时间周期.(默认情况:
+.Dv RES_TIMEOUT . )
+.It Fl d
+打开调试环境.这会设置
+解析程序的
+.Ft options
+字段的
+.Dv RES_DEBUG
+位.(默认情况:不作调试.)
+.It Fl s
+使用
+.Em 信息流
+而不是信息包的形式.这将对名字服务器使用TCP流连接,而不是
+UDP数据报连接.
+它会设置
+解析程序的
+.Ft options
+字段的
+.Dv RES_USEVC
+位.(默认情况:UDP数据报.)
+.It Fl v
+与
+.Dq Fl s
+标识同义.
+.It Ar host
+所关心的主机(或域)的名字.
+.El
+.Sh FILES(相关文件)
+.Bl -tag -width "<arpa/nameser.h>  " -compact
+.It Pa /etc/resolv.conf 
+用来获取默认的域名服务器以及搜索列表
+.It Pa <arpa/nameser.h>
+可用的RR(资源纪录)的类型和等级的列表
+.It Pa <resolv.h>
+解析程序标识的列表
+.El
+.Sh DIAGNOSTICS(诊断)
+如果解析程序不能响应查询,并且调试环境又没有打开,那么
+.Ic dnsquery
+会简单地显示如下信息:
+.Dl Query failed (rc = 1) : Unknown host
+.Pp
+返回代码的值由
+.Ft h_errno
+提供.
+.Sh SEE ALSO(另见)
+.Xr nslookup 8 , 
+.Xr nstest 1 , 
+.Xr nsquery 1 , 
+.Xr named 8 , 
+.Xr resolver 5 .
+.Sh AUTHOR(作者)
+Bryan Beecher
+.Sh BUGS
+除了等级
+.Ar IN
+之外的查询会得到有趣的结果,
+因为通常名字服务器只会有针对等级为
+.Ar IN
+的资源记录的一组根域名服务器.
+.Pp
+.Ic Dnsquery
+通过调用
+.Fn inet_addr
+来确定针对
+.Dq Fl n
+选项的参数是否为有效的
+Internet地址.不幸的是,
+.Fn inet_addr
+可能会在判别一些(错误的)IP地址(如1.2.3.4.5)时引发segmentation(分段)
+错误.
+
+
+.Sh "[中文版维护人]"
+riser <boomer at ccidnet.com>
+.Sh "[中文版最新更新]"
+2001/7/13
+.Sh "《中国Linux论坛man手册页翻译计划》"
+http://cmpp.linuxforum.net
diff --git a/src/man1/dropdb.1 b/src/man1/dropdb.1
new file mode 100644
index 0000000..17d0931
--- /dev/null
+++ b/src/man1/dropdb.1
@@ -0,0 +1,95 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROPDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+dropdb \- 删除一个现有 PostgreSQL 数据库
+
+.SH SYNOPSIS
+.sp
+\fBdropdb\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR \fB\fIdbname\fB\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBdropdb\fR 删除一个现有 PostgreSQL 数据库。 执行这条命令的人必须是数据库超级用户,或者是数据库所有者。
+.PP
+\fBdropdb\fR 是对 SQL 命令 DROP DATABASE [\fBdrop_database\fR(7)]  的封装。因此,用两种方法删除数据库都没什么区别。
+.SH "OPTIONS 选项"
+.PP
+\fBdropdb\fR 接受下列命令行选项:
+.TP
+\fB\fIdbname\fB\fR
+ 声明要删除的数据库名。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 回显 dropdb 生成的命令并且把它发送到服务器。
+.TP
+\fB-i\fR
+.TP
+\fB--interactive\fR
+ 在做任何破坏性动作前提示。
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 不显示响应。
+.PP
+.PP
+\fBcreateuser\fR 还接受下列命令行参数用作连接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器 正在侦听的互联网 TCP 端口号或本地Unix域套接字的文件扩展(描述符)。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 连接的用户名(不是要创建的用户名)。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令提示(与服务器连接的口令,不是新用户的口令。)
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 如果出现错误,参阅 DROP DATABASE  [\fBdrop_database\fR(7)]  和 \fBpsql\fR(1) 获取可能的问题和错误信息描述。 数据库服务器必须在目标机器上运行。同样,任何前端库 libpq  使用的缺省连接设置和环境变量都将适用。
+.SH "EXAMPLES 例子"
+.PP
+ 删除缺省数据库服务器上的数据库 demo:
+.sp
+.nf
+$ \fBdropdb demo\fR
+DROP DATABASE
+.sp
+.fi
+.PP
+ 用在主机eden上的服务器删除数据库demo, 端口是 5000,需要确认和显示执行的命令:
+.sp
+.nf
+$ \fBdropdb -p 5000 -h eden -i -e demo\fR
+Database "demo" will be permanently deleted.
+Are you sure? (y/n) \fBy\fR
+DROP DATABASE "demo"
+DROP DATABASE
+.sp
+.fi
+.SH "SEE ALSO 参见"
+\fBcreatedb\fR(1), DROP DATABASE [\fBdrop_database\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/droplang.1 b/src/man1/droplang.1
new file mode 100644
index 0000000..505d9f1
--- /dev/null
+++ b/src/man1/droplang.1
@@ -0,0 +1,88 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROPLANG" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+droplang \- 删除一种 PostgreSQL 过程语言
+
+.SH SYNOPSIS
+.sp
+\fBdroplang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fB\fIlangname\fB\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBdroplang\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR\fR \fB--list\fR\fR | \fR\fB-l\fR\fR\fR \fB\fIdbname\fB\fR
+.SH "DESCRIPTION  描述"
+.PP
+\fBdroplang\fR 是一个从 PostgreSQL 数据库中删除一种现有编程语言的工具。 droplang 可以删除任何过程语言, 甚至是那些 PostgreSQL 版本没有自带的。
+.PP
+ 尽管可以用 SQL 命令直接删除后端编程语言,我们还是推荐使用 droplang, 因为它进行了一些检查而且更容易使用。参阅 DROP LANGUAGE [\fBdrop_language\fR(7)]  获取更多信息。
+.SH "OPTIONS 选项"
+.PP
+\fBdroplang\fR 接受下面命令行参数:
+.TP
+\fB\fIlangname\fB\fR
+ 声明将被删除的后端编程语言的名称。
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+ 声明从哪个数据库删除该语言。 缺省使用和当前系统用户同名的数据库。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 运行的时候显示执行的 SQL 命令。
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+ 显示一个在目标数据库里已经安装的语言的列表。
+.PP
+.PP
+\fBcreateuser\fR 还接受下列命令行参数用作连接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器 正在侦听的互联网 TCP 端口号或本地Unix域套接字的文件扩展(描述符)。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 连接的用户名(不是要创建的用户名)。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令提示(与服务器连接的口令,不是新用户的口令。)
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 大多数错误信息是自解释的。如果没有,带着--echo  参数运行 droplang  然后在相应的 SQL 命令下面检查细节。
+.SH "NOTES 注意"
+.PP
+ 使用 \fBcreatelang\fR(1) 增加一种语言。
+.SH "EXAMPLES 例子"
+.PP
+ 删除语言 pltcl:
+.sp
+.nf
+$ \fBdroplang pltcl dbname\fR
+.sp
+.fi
+.SH "SEE ALSO 参见"
+\fBcreatelang\fR(1), DROP LANGUAGE [\fBdrop_language\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/dropuser.1 b/src/man1/dropuser.1
new file mode 100644
index 0000000..83e6390
--- /dev/null
+++ b/src/man1/dropuser.1
@@ -0,0 +1,95 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROPUSER" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+dropuser \- 删除一个 PostgreSQL 用户帐户
+
+.SH SYNOPSIS
+.sp
+\fBdropuser\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIusername\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBdropuser\fR 删除一个现有 PostgreSQL 用户 和 该用户所有的数据库。 只有超级用户(在 pg_shadow 表中设置了 usesuper 的用户)可以创建新的 PostgreSQL 用户。
+.PP
+\fBdropuser\fR 是 SQL 命令 DROP USER [\fBdrop_user\fR(7)] 的封装。 因此,用哪种方法删除用户没什么区别。
+.SH "OPTIONS 选项"
+.PP
+\fBdropuser\fR 接受下列命令行参数:
+.TP
+\fB\fIusername\fB\fR
+ 声明要删除的 PostgreSQL 用户名。 如果你没有在命令行上声明,将会被提示输入一个。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 回显 dropuser 生成的命令并发送给服务器。
+.TP
+\fB-i\fR
+.TP
+\fB--interactive\fR
+ 在真正删除用户前前提示。
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 不显示响应。
+.PP
+.PP
+\fBcreateuser\fR 还接受下列命令行参数用作连接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器 正在侦听的互联网 TCP 端口号或本地Unix域套接字的文件扩展(描述符)。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 连接的用户名(不是要创建的用户名)。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令提示(与服务器连接的口令,不是新用户的口令。)
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 如果出现错误,将会显示后端错误信息。参阅 DROP USER [\fBdrop_user\fR(7)] 和 \fBpsql\fR(1) 获取可能信息描述。 数据库服务器必须在目标主机上运行。同样,任何 libpq  前端库可获得的缺省设置和环境变量都将生效。
+.SH "EXAMPLES 例子"
+.PP
+ 删除缺省数据库服务器上的用户 joe:
+.sp
+.nf
+$ \fBdropuser joe\fR
+DROP USER
+.sp
+.fi
+.PP
+ 用在主机eden上的服务器删除用户joe, 端口是 5000,执行命令前提示并且显示执行的命令:
+.sp
+.nf
+$ \fBdropuser -p 5000 -h eden -i -e joe\fR
+User "joe" and any owned databases will be permanently deleted.
+Are you sure? (y/n) \fBy\fR
+DROP USER "joe"
+DROP USER
+.sp
+.fi
+.SH "SEE ALSO 参见"
+\fBcreateuser\fR(1), DROP USER [\fBdrop_user\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/du.1 b/src/man1/du.1
new file mode 100644
index 0000000..d81f89b
--- /dev/null
+++ b/src/man1/du.1
@@ -0,0 +1,147 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\"  Chinese Version Copyright mhss, www.linuxforum.net, 2000
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH DU 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+du \- 报告磁盘空间使用情况
+.SH 总览
+.BI "du [" options "] [" file... ] 
+.sp
+POSIX 选项: 
+.B [\-askx]
+.SH GNU 选项 (最短格式):
+.B "[-abcDhHklLmsSxX]"
+.BI "[--block-size=size] [--exclude=pattern] [--max-depth=n]"
+.B "[--help] [--version] [--]"
+.SH 描述
+du 报告指定的文件已使用的磁盘空间的总量,包括在层次结构中以
+这些以指定文件为根的目录在内。这里的“已使用的磁盘空间”意思
+为指定的文件下的整个文件层次结构所使用的空间。
+.PP
+在没给定参数的情况下,du 报告当前目录所使用的磁盘空间。
+.SH POSIX 细节
+输出结果在缺省时以512字节为计数单位,若给以 -k 选项,则以
+1024字节为计数单位。
+.SH GNU 细节
+(在没有用选项指定计数单位的情况下)输出结果以1024字节为计数
+单位,但不包括由于设置了环境变量POSIXLY_CORRECT而跟从POSIX 
+标准的情况。
+.SH POSIX 选项
+.TP
+.B "\-a"
+显示对涉及到的所有文件的统计,而不只是包含子目录。
+.TP
+.B "\-k"
+用1024字节作为计数单位,替代缺省时512字节的计数单位。
+.TP
+.B "\-x"
+只输出指定参数的实际使用空间,而不包括其下的子目录。
+.TP
+.B "\-s"
+只统计指定参数的在同一设备上所使用的空间。
+
+.SH GNU 选项
+.TP
+.B "\-a, \-\-all"
+显示对所有文件的统计,而不只是包含子目录。
+.TP
+.B "\-b, \-\-bytes"
+输出以字节为单位的大小,替代缺省时1024字节的计数单位。
+.TP
+.BI "\-\-block\-size=" size
+输出以块为单位的大小,块的大小为 size 字节。( file-
+utils-4.0 的新选项)
+.TP
+.B "\-c, \-\-total"
+在处理完所有参数后给出所有这些参数的总计。这个选项被
+用给出指定的一组文件或目录使用的空间的总和。
+.TP
+.B "\-D, \-\-dereference\-args"
+引用命令行参数的符号连接。但不影响其他的符号连接。
+这对找出象 /usr/tmp 这样的目录的磁盘使用量有用,
+/usr/tmp 等通常是符号连接。 
+译住:例如在 /var/tmp 下建立一个目录test, 而/usr/tmp 
+是指向 /var/tmp 的符号连接。du /usr/tmp 返回一项
+/usr/tmp , 而 du - D /usr/tmp 返回两项 /usr/tmp,/usr/tmp/test。 
+.TP
+.BI "\-\-exclude=" pattern
+在递归时,忽略与指定模式相匹配的文件或子目录。模式
+可以是任何 Bourne shell 的文件 glob 模式。( file-
+utils-4.0 的新选项) 
+.TP
+.B "\-h, \-\-human\-readable"
+为每个数附加一个表示大小单位的字母,象用M表示二进制
+的兆字节。
+.TP
+.B "\-H, \-\-si"
+与 -h 参数起同样的作用,只是使用法定的 SI 单位( 用
+1000的幂而不是 1024 的幂,这样 M 代表的就是1000000
+而不是 1048576)。(fileutils-4.0 的新选项)
+.TP
+.B "\-k, \-\-kilobytes"
+输出以1024字节为计数单位的大小。
+.TP
+.B "\-l, \-\-count\-links"
+统计所有文件的大小,包括已经被统计过的(作为一个硬连接)。 
+.TP
+.B "\-L, \-\-dereference"
+引用符号连接(不是显示连接点本身而是连接指向的文件或
+目录所使用的磁盘空间)。
+.TP
+.B "\-m, \-\-megabytes"
+输出以兆字节的块为计数单位的大小(就是 1,048,576 字节)。
+.TP
+.BI "\-\-max\-depth=" n
+只输出命令行参数的小于等于第 n 层的目录的总计。
+--max-depth=0的作用同于-s选项。(fileutils-4.0的新选项)
+.TP
+.B "\-s, \-\-summarize"
+对每个参数只显示总和。
+.TP
+.B "\-S, \-\-separate\-dirs"
+单独报告每一个目录的大小,不包括子目录的大小。
+.TP
+.B "\-x, \-\-one\-file\-system"
+忽略与被处理的参数不在同一个文件系统的目录。
+.TP
+.BI "\-X " "file, " "\-\-exclude\-from=" "file"
+除了从指定的文件中得到模式之外与 --exclude 一样。
+模式以行的形式列出。如果指定的文件是'-',那么从标准输
+入中读出模式。(fileutils-4.0 的新选项)
+GNU 标准选项
+.TP
+.B "\-\-help"
+在标准输出上输出帮助信息后正常退出。
+.TP
+.B "\-\-version"
+在标准输出上输出版本信息后正常退出。
+.TP
+.B "\-\-"
+终结选项列表
+.SH 缺陷
+对于从 HP-UX 系统上以 NFS 方式挂装上的文件,在 BSD 系统上的
+du 报告的大小是正确数值的一半;而对于从 BSD 系统上以 NFS 方
+式挂装上的文件,HP-UX 系统上的 du 报告的大小是正确数值的翻
+倍。这是 HP-UX 的缺陷导致的,这个缺陷也影响HP-UX的 du 程序。
+.SH 变量
+变量 POSIXLY_CORRECT 确定计数单位的选择。如果没有设置此变
+量并且环境变量 BLOCKSIZE 的值以‘HUMAN’为前缀,那么,除了
+-k 或 -m 选项优先生效的情况,计数单位的行为同于 -h 选项。
+变量 LANG、LC_ALL、LC_CTYPE 和 LC_MESSAGES 的意义和字面上
+一样。 
+.SH 遵循的标准
+POSIX 1003.2
+.SH 注意事项
+本页面描述的 du 可在 fileutils-4.0 包中找到,其他版本可能有细
+微的不同。把更正和补充以邮件的形式发送到 aeb at cwi.nl。向 file
+utils-bugs at gnu.ai.mit.edu.报告程序存在的缺陷。
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/dumpkeys.1 b/src/man1/dumpkeys.1
new file mode 100644
index 0000000..fcd53bb
--- /dev/null
+++ b/src/man1/dumpkeys.1
@@ -0,0 +1,236 @@
+.TH DUMPKEYS 1 "09 Oct 1997" "Console tools" "Linux User's Manual"
+
+.SH NAME
+dumpkeys \- 转储显示键盘翻译表
+
+.SH "总览 (SYNOPSIS)"
+.B dumpkeys [
+.I \-hilfn1
+.IB \-S shape
+.IB \-c charset
+.I \-\-help \-\-short\-info \-\-long\-info \-\-numeric \-\-full\-table
+.I \-\-separate\-lines 
+.IB \-\-shape= shape
+.I \-\-funcs\-only \-\-keys\-only \-\-compose\-only
+.IB \-\-charset= charset
+.B ]
+
+.SH "描述 (DESCRIPTION)"
+.IX "dumpkeys command" "" "\fLdumpkeys\fR command"  
+
+.B dumpkeys
+以
+.BR keymaps (5)
+中 描述 的 格式, 在 标准输出 显示 键盘驱动程序 翻译表 的 当前内容.
+.PP
+下面 提供了 多种 选项, 可以 控制 输出格式, 也可以 显示 来自 内核 或
+.BR dumpkeys (1)
+和
+.BR loadkeys (1)
+的 其他信息.
+
+.SH "选项 (OPTION)"
+.TP
+.I \-h \-\-help
+在 标准错误 上 显示 版本号 和 简短 的 用法, 然后 结束.
+
+.TP
+.I \-i \-\-short-info
+显示 内核 键盘驱动程序 的 某些 特征:
+
+.RS
+内核 支持的 键值(keycode) 范围:
+.PP
+.RS
+这个特征指, 在 键盘映射文件 中, 
+.B keycode
+关键字 后面 可以 使用 什么值. 有关 这个文件 的 语法 和 其他信息 参看
+.BR keymaps (5).
+.RE
+
+单键 可编联(bind) 的 动作(action) 数:
+.PP
+.RS
+这个特征指, 通过 修饰键 的 组合, 一个键 能够 发生 多少个 不同的 动作.
+例如, 如果 该值是 16, 那么 一个键 结合 修饰键 可以 产生 多达 16 个 动作.
+此时, 内核 大约 知道 存在 四个 修饰键, 你可以 按下 不同的 修饰键 组合 获得 
+所有 定义的 动作.
+.RE
+
+内核 支持的 动作码(action code) 值域(range):
+.PP
+.RS
+这一项 包含 用 十六进制 表示的 动作码 值域. 这些值 能够 
+用在 按键定义 的 右边, 也就是 下面 这行 的 
+.IR vv 
+部分:
+
+.RS
+.B keycode
+.I xx
+=
+.I vv vv vv vv
+.RE
+
+(有关 按键定义行 的 细节 参见
+.BR keymaps (5)
+).
+.BR dumpkeys (1)
+和
+.BR loadkeys (1)
+支持 符号表示法, 它 比 数字表示法 更优越, 内核 和 内核 之间的 动作码 可能
+不一样, 而 符号名字 一般 不变.
+然而, 动作码值域 列表 可以 用来 判断 内核 是否 支持 
+.BR loadkeys (1)
+识别的 全部 符号, 或者 内核 支持的 动作 在
+.BR loadkeys (1)
+中 有没有 对应的 符号名. 你 可以 比较一下 值域列表 和 动作符号表, 参见 下述的
+.I --long-info
+选项.
+.RE
+
+内核 支持的 功能键(function key) 数目:
+.PP
+.RS
+这个特征 指 能够 用来 输出 字符串 的 动作码 数目. 
+这些 动作码 往往 编联 键盘上的 功能键 和 编辑键, 输出 标准 escape 序列.
+然而 你 可以 重定义 这些键, 让 它们 输出 命令行, 电子邮件地址 或者 其他什么.
+特别是 某些 编号 的 功能键 和 编辑键 在 键盘上 不存在, 这样 就有了 "空闲的"
+动作码, 例如, 把 它们 和 AltGr-字母组合 编联, 用来 输出 有用的 字符串.
+详情 参见
+.BR loadkeys (1).
+.RE
+
+功能串(function string):
+.PP
+.RS
+可以 用 下面的 命令 查看 当前 的 功能键 定义
+
+.RS
+.BI dumpkeys \ \-\-funcs\-only
+.RE
+.RE
+.RE
+
+.TP
+.I \-l \-\-long-info
+这个选项 要求
+.B dumpkeys
+显示 较多的 信息. 显示 的 信息 除了
+.I --short-info
+选项 的 内容 外, 增加了
+.BR loadkeys (1)
+和
+.BR dumpkeys (1)
+支持 的 动作 的 符号名 列表, 及 对应的 数值.
+
+.TP
+.I \-n \-\-numeric
+这个选项 阻止
+.B dumpkeys
+把 动作码 翻译成 符号名, 只 显示 十六进制数字.
+
+.TP
+.I \-f \-\-full-table
+这个选项 使
+.B dumpkeys
+跳过 所有 速记形式(short-hand) (参见
+.BR keymaps (5)),
+以 行排格式(canonical) 输出 键值编联. 首先是 keymaps 行, 描述 当前 定义的 
+修饰键 及其 组合. 然后 每个键 显示 一行, 其中 每个 修饰键 的 组合 占 一列.
+例如, 如果 键盘映射表 使用了 七个 修饰键组合, 那么 每行 将显示 七列
+动作码. 这种格式 用于 诸如 对
+.BR dumpkeys 
+输出 的 后处理 等.
+
+.TP
+.I \-1 \-\-separate\-lines
+这个选项 使
+.B dumpkeys
+把 每个 (修饰键,键值)对 用 一行 显示. 前缀 
+.I plain
+表示 没有 使用 修饰键.
+
+.TP
+.IB "\-S \-\-shape=" shape
+这个选项 告诉
+.B dumpkeys
+使用 指定的 表格格式. 允许的 表格格式 有
+.BI 0 :
+缺省格式 (就象 没使用
+.IR \-S 
+一样);
+.BR 1 :
+和 使用 选项
+.IR \-\-full\-table 
+一样;
+.BR 2 :
+和 使用 选项
+.IR \-\-separate\-lines 
+一样;
+.BR 3 :
+每个 键值 占用 一行 (就象 格式
+.BR 1 
+一样), 直到 遇到 第一个 空项(hole), 然后 每个 (修饰键,键值)对 一行
+(就象 格式
+.BR 2 
+一样).
+
+(译注: 空项 位置 可参考 dumpkeys 不带参数时 显示的 第一行, keymaps 行)
+
+.TP
+.I \-\-funcs-only
+这个选项 使
+.B dumpkeys
+只显示 功能键 定义的 字符串. 否则
+.B dumpkeys
+既显示 串定义, 也显示 键值编联.
+
+.TP
+.I \-\-keys-only
+这个选项 使
+.B dumpkeys
+只显示 键值编联. 否则
+.B dumpkeys
+既显示 串定义, 也显示 键值编联.
+
+.TP
+.I \-\-compose-only
+这个选项 使
+.B dumpkeys
+只显示 组合键(compose key) 定义. 它 只对 支持 组合键 的 内核 有效.
+
+.TP
+.IB \-c "charset " \-\-charset= charset
+这个选项 使
+.B dumpkeys
+根据 指定的 字符集 翻译 字符码值. 它 只影响 字符码值 对 符号名 的 翻译. 用
+.I \-\-help
+选项 可以 列出 
+.I charset
+的 有效值. 如果 没有 指定
+.I charset,
+缺省字符集 是
+.B iso-8859-1.
+这个选项 能够 输出 一个 `charset "iso-8859-X"' 行, 告诉 loadkeys 如何 翻译
+键盘映射表. (例如, "division" 在
+.B iso-8859-1
+中 是 0xf7, 但在
+.BR iso-8859-8 
+中 是 0xba).
+
+.SH "文件 (FILE)"
+.I /usr/lib/kbd/keymaps/
+推荐 存放 键盘映射 文件 的 目录.
+
+.SH "另见 (SEE ALSO)"
+.BR loadkeys (1),
+.BR keymaps (5).
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/10
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/echo.1 b/src/man1/echo.1
new file mode 100644
index 0000000..aa1db89
--- /dev/null
+++ b/src/man1/echo.1
@@ -0,0 +1,78 @@
+.TH ECHO 1 "1999年8月" "GNU sh-utils 2.0" 
+.SH NAME(名称)
+echo \- 显示一行文本
+.SH SYNOPSIS(总览)
+.B echo[\fIOPTION\fR]... [\fISTRING\fR]...
+.SH DESCRIPTION(描述)
+.PP
+.\" 在这儿添加任何附加的描述信息
+.PP
+允许在标准输出上显示STRING(s).
+.TP
+\fB\-n\fR 不输出行尾的换行符.
+.TP
+\fB\-e\fR 允许对下面列出的加反斜线转义的字符进行解释.
+.TP
+\fB\-E\fR 禁止对在STRINGs中的那些序列进行解释.
+.TP
+\fB\-\-help\fR 显示帮助并退出(须单独运行)
+.TP
+\fB\-\-version\fR 输出版本信息并退出(须单独运行)
+.PP
+在没有 \fB\-E\fR 的情况下,可承认并可以内置替换以下序列:
+.TP
+ \\NNN
+字符的ASCII代码为NNN(八进制)
+.TP
+ \e\e
+反斜线
+.TP
+ \ea
+报警符(BEL)
+.TP
+ \eb
+退格符
+.TP
+ \ec
+禁止尾随的换行符
+.TP
+ \ef
+换页符
+.TP
+ \en
+换行符
+.TP
+ \er
+回车符
+.TP
+ \et
+水平制表符
+.TP
+ \ev
+纵向制表符
+.SH "REPORTING BUGS"(报告BUGS)
+报告bugs,请发邮件到<bug-sh-utils at gnu.org>.
+.SH "SEE ALSO"(另见)
+以Texinfo手册形式维护的
+.B echo
+完全文档.如果你正确地安装了
+.B info
+和
+.B echo
+命令
+.IP
+.B info echo
+.PP
+应该可以使你访问到整个手册.
+.SH COPYRIGHT(版权)
+版权所有 \(co 1999 Free Software Foundation, 
+Inc.
+.br
+这是自由软件;参看复制条件的源文件.不作任何担保,
+更不用说商品性或者基于特殊目的的适用性.
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.B 2000/11/11
+.SH 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/ecpg.1 b/src/man1/ecpg.1
new file mode 100644
index 0000000..1bc021b
--- /dev/null
+++ b/src/man1/ecpg.1
@@ -0,0 +1,66 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ECPG" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+ecpg \- 嵌入的 SQL C 预处理器
+
+.SH SYNOPSIS
+.sp
+\fBecpg\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR \fIfile\fR...\fR\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBecpg\fR 是一个嵌入的用于C 语言的 SQL 预编译器。 它把嵌有 SQL 语句的 C 程序通过将 SQL 调用替换成特殊的函数调用的方法转换成普通的 C 代码。 然后输出的文件就可以用任何 C 编译工具进行处理。
+.PP
+\fBclusterdb\fR 将把命令行上给出的每个输入文件转换成对应的 C 输出文件。 输入文件最好有 .pgc 的扩展名, 这样,这个扩展将被替换成 .c 来决定输出文件名。 如果输入文件的扩展不是 .pgc,那么输出文件名将通过在全文件名后面附加 .c 来生成。 输出文件名也可以用 -o 选项覆盖。
+.PP
+ 本手册页并不描述嵌入的 SQL 语句,参阅 Chapter 29 获更多信息。
+.SH "OPTIONS 选项"
+.PP
+\fBclusterdb\fR 接受下列命令行参数:
+.TP
+\fB-c\fR
+ 为 SQL 代码自动生成某种 C 代码。目前,这个选项可以用于 EXEC SQL TYPE。
+.TP
+\fB-C \fR\fImode\fR
+ 设置一个兼容模式。mode 可以是 INFORMIX 或者 INFORMIX_SE。
+.TP
+\fB-D \fR\fIsymbol\fR
+ 定义一个 C 预编译器符号。
+.TP
+\fB-i\fR
+ 同时也分析系统包含文件。
+.TP
+\fB-I \fIinclude-path\fB\fR
+ 声明一个附加的包含路径。用于寻找通过 EXEC SQL INCLUDE 包含的文件。缺省是 .(当前目录), /usr/local/include, 在编译时定义的PostgreSQL 包含路径(缺省: /usr/local/pgsql/include)和 /usr/include。顺序如上。
+.TP
+\fB-o \fIfilename\fR
+ 声明ecpg应该把它的所有输出写到给出的 filename里。
+.TP
+\fB-t\fR
+ 打开自动提交模式。在这种模式象,每个查询都自动提交, 除非它是包围在一个明确的事务块中。在缺省模式下, 命令只是在发出 EXEC SQL COMMIT 的时候提交。
+.TP
+\fB-v\fR
+ 打印额外的信息,包括版本和包含路径。
+.TP
+\fB--help\fR
+ 显示一个命令用法的简单摘要,然后退出。
+.TP
+\fB--version\fR
+ 显示版本信息,然后退出。
+.SH "NOTES 注意"
+ 在编译预处理的 C 代码文件的时候,编译器需要能够找到 PostgreSQL 包含目录里面的 ECPG 头文件。因此,我们在调用编译器的时候可能需要使用 -I  (比如,-I/usr/local/pgsql/include)。
+ 使用了嵌入 SQL 的 C 代码必须和 libecpg 库链接,比如,使用这样的链接选项: -L/usr/local/pgsql/lib -lecpg
+ 这些目录的实际值可以通过 \fIpg_config\fP(1) 找到。
+.SH "EXAMPLES 例子"
+.PP
+ 如果你有一个叫 prog1.pgc 的嵌入 SQL 的 C 源代码,你可以用下面的命令序列创建一个可执行程序:
+.sp
+.nf
+ecpg prog1.pgc
+cc -I/usr/local/pgsql/include -c prog1.c
+cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg
+.sp
+.fi
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/egrep.1 b/src/man1/egrep.1
new file mode 100644
index 0000000..6a74c5d
--- /dev/null
+++ b/src/man1/egrep.1
@@ -0,0 +1 @@
+.so man1/grep.1
diff --git a/src/man1/eject.1 b/src/man1/eject.1
new file mode 100644
index 0000000..18046a4
--- /dev/null
+++ b/src/man1/eject.1
@@ -0,0 +1,183 @@
+.\" 本文件版权所有(C) 1994-1999 Jeff Tranter
+.\" (tranter at pobox.com)
+.\" 它可在GNU出版许可版本2或更高版本下发布.参见 GNU 出版许可的 COPYING 章节以
+.\" 获知该文件可以重新发布的条件.
+.TH EJECT 1  1999年1月21日  Linux  User Commands(用户命令)
+.SH NAME (名称)
+eject \- 弹出可移动介质
+.SH SYNOPSIS(总览)
+eject -h.breject [-vnrsfq] [<name>]
+.br 
+eject [-vn] -d.breject [-vn] -a on|off|1|0 [<name>]
+.br 
+eject [-vn] -c slot [<name>]
+.br 
+eject [-vn] -t [<name>]
+.SH DESCRIPTION(描述)
+.B Eject
+允许可移动介质(典型是 CD-ROM,软盘,磁带,或者 JAZ 以及 ZIP 磁盘)
+在软件控制下弹出.该命令也可以控制一些多盘片 CD-ROM 控制器,
+控制一些设备支持的自动弹出功能,以及控制一些 CD-ROM 驱动器磁盘托盘的关闭.
+与 name 相应的设备将被弹出.name 可以为设备文件或者其挂载点,
+也可以为完整路径或者省略前面的 /dev 或者 /mnt 设备文件名.
+如果没有指定 name,缺省使用 cdrom.有四种不同的弹出的方法,
+具体要看设备是 CD-ROM, SCSI设备, 可移动软盘, 还是磁带而定.
+默认的弹出会依次尝试所有四种方法, 直到成功为止. 
+如果设备当前是挂载上来的, 那么在弹出前要先卸载.
+.PP
+.SH COMMAND\-LINE OPTIONS (命令\-行选项)
+.TP 0.5i
+.B -h
+该选项使得
+.B eject
+显示关于命令选项的简要描述.
+.TP 0.5i
+.B -v
+令
+.B eject
+在冗长模式下运行; 显示更多的关于命令作什么用的信息.
+.TP 0.5i
+.B -d
+如果调用了这个选项,
+.B eject
+会显示默认的设备名.
+.TP 0.5i
+.B -a on|1|off|0
+该选项控制一些设备支持的自动弹出模式. 当激活时, 驱动器自动在设备关闭时弹出.
+.TP 0.5i.
+B -c <slot>
+有了这个选项, 可由 ATAPI/IDE CD-ROM 控制器选择一个 CD 槽.
+Linux 2.0 或者更高版本要求使用该功能.CD-ROM 驱动器不能在正使用时
+(已挂载数据 CD 或者在播放音乐 CD)响应工作改变请求.
+还要注意控制器的第一个槽设为 0,而不是 1.
+.TP 0.5i
+.B -t
+有了这个选项, 会发一个关闭 CD-ROM 托盘的命令给驱动器.
+不是所有的设备都支持该命令.
+.TP 0.5i
+.B -n
+有了这个选项, 显示选定的设备, 但是不执行任何动作.
+.TP 0.5i
+.B -r
+该选项指定了使用 CDROM 弹出命令应被弹出的驱动器.
+.TP 0.5i
+.B -s
+该选项指定了使用 SCSI 命令应被弹出的驱动器.
+.TP 0.5i
+.B -f
+该选项指定了使用可移动软盘弹出命令应被弹出的驱动器.
+.TP 0.5i.
+B -q
+该选项指定了使用磁带驱动器离线命令应被弹出的驱动器.
+.SH LONG OPTIONS(长选项)
+所有选项与以下列出的长名字相关. 只要长名字缩写唯一, 它就可以缩写.
+.br -h --help
+.br -v --verbose
+.br -d --default
+.br -a --auto
+.br -c --changerslot
+.br -t --trayclose
+.br -n --noop
+.br -r --cdrom
+.br -s --scsi
+.br -f --floppy
+.br -q --tape
+.br
+.SH EXAMPLES(示例)
+.PP 弹出默认设备:
+.IP
+eject
+.PP
+弹出名字为 cdrom 的设备或者挂载点:
+.IP
+eject cdrom
+.PP
+使用设备名来弹出:
+.IP
+eject /dev/cdrom
+.PP
+使用挂载点来弹出:
+.IP
+eject /mnt/cdrom/
+.PP 弹出第四个 IDE 设备:
+.IP
+eject hdd
+.PP
+弹出第一个 SCSI 设备:
+.IP
+eject sda
+.PP
+使用 SCSI 分区名(例如 ZIP 设备)来弹出
+:.IP
+eject sda4
+.PP
+在多盘片控制器上选择第五个磁盘:
+.IP
+eject -v -c5 /dev/cdrom
+.PP
+在 SoundBlaster CD-ROM 驱动器上开启自动弹出功能:
+.IP
+eject -a on /dev/sdpcd
+.SH EXIT STATUS(退出状态)
+.PP
+如果操作成功, 返回 0, 如果操作失败或者命令语法无效, 则返回 1.
+.SH NOTES(备注)
+.PP
+.B Eject
+只对支持四种弹出方式其中之一或更多的设备起作用.
+这些设备包括大多数的 CD-ROM 驱动器 (IDE, SCSI 和专有接口的),
+一些 SCSI 磁带驱动器, JAZ 驱动器, ZIP 驱动器(并口, SCSI 以及 IDE 版本接口的),
+以及 LS120 可移动软盘. 用户已经报告过在 Sun SPARC 和 Apple Macintosh 
+系统上的软盘驱动器也成功了. 如果
+.B eject
+不起作用, 最可能的原因是由于设备的内核驱动的限制, 而并非
+.B eject
+程序本身的问题. -r, -s, -f 和 -q 选项可以控制弹出的方式.
+可指定一种以上的方式. 如果没有指定任何这些选项, 
+它会尝试所有四种方式(这在多数情况下工作很好).
+.B Eject
+不一定总是能判断设备是否已经挂载(例如, 如果设备有多个名字).
+如果设备名是一个符号链接,
+.B eject
+会跟随该链接并使用其指向的设备.
+
+如果
+.B eject
+判断设备能有多个分区, 它会尝试在弹出前卸载所有该设备已挂载的分区.
+如果卸载失败, 程序不会尝试弹出该介质.
+
+你可以弹出音频 CD.
+如果驱动器为空, 一些 CD-ROM 驱动器会拒绝打开其托盘. 
+一些设备不支持托盘关闭的命令. 如果激活了自动弹出的功能.
+那么驱动器总会在运行该命令后弹出. 不是所有的 Linux 内核 CD-ROM
+驱动程序都支持自动弹出模式.
+
+你需要适当的特权以访问设备文件. 在弹出一些设备(例如, SCSI 设备)时,
+要求以 root 或者 setuid root 的身份运行.
+
+用来找到给定名字的设备的搜索方法如下. 如果名字以标记斜线结束,
+它将被移去(这是为了支持使用 shell 文件名补全所生成的文件名).
+如果名字以 '.' 或 '/' 开头, 它会试图以设备文件名或者挂载点打开它.
+如果那样失败了, 它会尝试在名字前面补加 '/dev/', '/mnt',
+'/dev/rdsk/', '/dev/dsk/' 以及 './', 
+直到找到的设备文件名或者能够打开挂载点为止.
+程序检查 /etc/mtab 以获知已挂载的设备. 如果那样也失败了,
+它还会检查 /etc/fstab 以获知当前未挂载设备的挂载点.
+推荐创建如 /dev/cdrom 或者 /dev/zip 之类的符号链接,这样
+.B eject
+可以使用易记的名字决定合适的设备. 为了节约输出,
+你可以创建一个适合于你的特定配置的针对 eject 选项的 shell 别名.
+.SH AUTHOR(作者)
+.B Eject
+由 Jeff Tranter (tranter at pobox.com) 写成, 并在 GNU 通用出版许可的条例下发布.
+参看源文件中的文件 COPYING 和注释以获知详情.
+.SH 又见
+mount(2), umount(2), mount(8), umount(8)
+.br /usr/src/linux/Documentation/cdrom/
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/emacs.1 b/src/man1/emacs.1
new file mode 100644
index 0000000..8e4c10e
--- /dev/null
+++ b/src/man1/emacs.1
@@ -0,0 +1,447 @@
+.TH EMACS 1 "1995 December 7"
+.UC 4
+
+.SH NAME
+emacs \- GNU Emacs
+
+.SH "总览 (SYNOPSIS)"
+.B emacs
+[
+.I command-line switches
+] [
+.I files ...
+]
+.br
+
+.SH "描述 (DESCRIPTION)"
+.I GNU Emacs
+是
+.I Emacs
+的 一个 版本, 是由 最早的 (PDP-10) 
+.I Emacs
+的 作者
+Richard Stallman 写的.
+.br
+GNU Emacs 的 主要 文档 都 在 GNU Emacs 手册 里, 可以 通过 Info (Emacs 的 一个
+子系统) 在线 浏览. 请 在那儿 寻找 完整的 最新的 文档. 自愿者们 不定时 的 更新 这个
+文档; 而 Emacs 的 维护者们 就可以 抽出 更多的 时间 来 用在 其它 更有用的 项目上.
+.br
+对 用户 来讲, 其它
+.I Emacs 
+提供的 功能 GNU Emacs 都有, 而且 因为 它的 命令 是 用 Lisp 写的, 所以 扩展性 很好.
+.PP
+.I Emacs
+拥有 一个 可扩展的 交互式的 帮助 功能, 但 这 要求 你 知道 怎么 操纵
+.I Emacs
+窗口 和 缓冲区.
+CTRL-h (backspace 或者 CTRL-h) 进入 帮助 系统. 帮助 教程 (CTRL-h t) 是 一个
+交互式的 教程, 可以 在 很短 的 时间内 教会 初学者
+.I Emacs 
+的 基本 操作. 帮助 Apropos (CTRL-h a) 帮助 你 根据 其 功能 找到 命令, 帮助 字符
+(CTRL-h c) 描述 一个 指定 的 字符 的 作用, 帮助 功能 (CTRL-h f) 描述 一个 由
+名称 指定 的 Lisp 函数.
+.PP
+.I Emacs
+的 能够 撤销 你的 缓冲区 的 很多 层 修改, 所以 它 很 容易 从 编辑 错误 中 恢复.
+.PP
+.I GNU Emacs
+的 很多 专门 的 包 能够 收发 邮件 (RMail/Mail), 大纲 编辑 (Outline), 编译
+(Compile), 在
+.I Emacs
+窗口 中 运行 子 shell (Shell), 执行 Lisp 读-估值-显示 (read-eval-print) 循环
+(Lisp-Interaction-Mode), 以及 自动 心理 疗法 (Doctor).
+.PP
+这有 一个 可扩展 的 参考 手册, 但是 就算 其它 Emacs 的 用户 没有 这个 手册,
+也能 很快 适应 的. 刚 开始 使用
+.I Emacs
+的 用户 也 能够 通过 它的 自包含 的 文档 功能 学习 教程, 很快 就能 使用 其
+基本 的 特性.
+.PP
+.SM Emacs Options
+.PP
+以下 是 常用 的 选项:
+.TP 8
+.I file
+编辑
+.I file.
+.TP
+.BI \+ number
+跳到
+.I number
+指定 的 行 (不要 在 "+" 和 number 间 加个 空格).
+.TP
+.B \-q
+不 装载 初始化 文件.
+.TP
+.BI \-u " user"
+装载
+.I user
+的 初始化 文件.
+.TP
+.BI \-t " file"
+把 指定 的
+.I file
+作为 终端, 而 不是 stdin/stdout.
+这 必须 是 命令行 的 第一个 参数.
+.PP
+下面 的 选项 是 面向 lisp 的(这些 选项 根据 先后 顺序 处理):
+.TP 8
+.BI \-f " function"
+执行 lisp 函数
+.I function.
+.TP
+.BI \-l " file"
+装载 文件
+.I file
+里面 的 lisp 代码.
+.PP
+下面 的 选项 在 把
+.I Emacs
+作为 批处理 编辑器 时 很有用:
+.TP 8
+.BI \-batch
+当 批处理 模式 编辑. 编辑器 会 把 消息 发送 至 stderr. 这个 选项 必须 是 参数
+列表 中 的 第一个. 你 必须 用 -l 和 -f 来 指定 执行 的 文件 和 调用 的 函数.
+.TP
+.B \-kill
+在 批处理 模式 时 退出
+.I Emacs.
+.\" 如果你没有用 X 从这里删除
+.PP
+.SM 在 X 下 用 Emacs
+.PP
+.I Emacs
+已经 被 修改 为 在 X 窗口 系统 下 能 很好的 运行.
+如果 你在 X 下 运行
+.I Emacs,
+它会 创建 它 自己 的 窗口 来 显示. 也许 你想 把 编辑器 作为 后台 进程 运行,
+这样 你 仍然 可以 用 你原来 的 窗口.
+.PP
+启动
+.I Emacs
+可以 用 下面 的 X 选项:
+.TP 8
+.BI \-name " name"
+指定 初始
+.I Emacs
+窗口 的 名字. 这个 选项 不仅 控制 窗口 标题 也 控制 X 资源 的 查找.
+.TP 8
+.BI \-title " name"
+指定 初始 X 窗口 的 标题.
+.TP 8
+.B \-r
+用 翻转 影像(reverse video) 显示
+.I Emacs
+窗口.
+.TP
+.B \-i
+当 图标化
+.I Emacs
+窗口 时 用 "kitchen sink" 位图 图标.
+.TP
+.BI \-font " font, " \-fn " font"
+把
+.I Emacs
+窗口 的 字体 设置 成
+.I font
+指定 的 字体.
+你会在
+.I /usr/lib/X11/fonts
+目录 下 找到 许多
+.I X
+字体. 注意
+.I Emacs
+只 接受 固定 宽度 字体.
+根据 X11R4 字体 命名 规定, 所有 字体名 第 7 字段 是 "m" 或者 "c" 的 字体 都是
+固定 宽度 字体. 还有, 字体名 是
+.IR width x height
+形式 的 字体 一般 也是 固定 宽度的, 就像
+.IR fixed
+字体 一样. 更多 的 信息 参见
+.IR xlsfonts (1).
+在 指定 字体 的 时候 请注意 在 选项 和 字体名 中间 加 一个 空格.
+.TP
+.BI \-b " pixels"
+Set the
+把
+.I Emacs
+窗口 边框 宽度 设置 成 
+.I pixels
+指定 的 像素. 默认的 是 窗口 每边 都是 一个 像素.
+.TP
+.BI \-ib " pixels"
+把 窗口 内边框 宽度 设置 成 
+.I pixels
+指定 的 像素. 默认的 是 窗口 每边 都 填充 一个 像素.
+.PP
+.TP 8
+.BI \-geometry " geometry"
+设置
+.I Emacs
+窗口 的 宽度, 高度, 以及 位置, 其 格式 是 标准 的 X 格式; 具体 参见
+.IR X (1) .
+宽度 和 高度 是 用 字符 指定的; 默认 的 是 80 乘以 24.
+.PP
+.TP 8
+.BI \-fg " color"
+如果 是 彩色 显示器, 设置 文本 的 颜色. 在
+.I /usr/lib/X11/rgb.txt
+文件 中 有 可用 的 颜色 名字 列表.
+.TP
+.BI \-bg " color"
+如果 是 彩色 显示器, 设置 窗口 背景 颜色.
+.TP
+.BI \-bd " color"
+如果 是 彩色 显示器, 设置 窗口 边框 颜色.
+.TP
+.BI \-cr " color"
+如果 是 彩色 显示器, 设置 窗口 文本 光标 的 颜色.
+.TP
+.BI \-ms " color"
+如果 是 彩色 显示器, 设置 窗口 鼠标 光标 的 颜色.
+.TP
+.BI \-d " displayname, " \-display " displayname"
+在
+.IR displayname
+指定 的 显示器 上 创建
+.I Emacs
+窗口. 它 必须 是 命令行 的 第一个 参数.
+.TP
+.B \-nw
+告诉
+.I Emacs
+不要 用 它的 X 界面. 如果 你 在 一个
+.IR xterm (1)
+窗口 中 调用
+.I Emacs
+并且 加上了 这个 选项, 会在 这个 窗口 中 显示, 而 不是 新建 一个 X 窗口.
+它 必须 是 命令行 的 第一个 参数.
+.PP
+你 可以 在 你的
+.I \.Xresources
+文件 里面 为 你的
+.I Emacs
+窗口 设置 其
+.I X
+的 默认 值(见
+.IR xrdb (1)).
+用 如下 的 格式:
+.IP
+emacs.keyword:value
+.PP
+.I value
+指定 了
+.I keyword
+的 默认值.
+.I Emacs
+允许 你 设置 如下 关键字 的 默认值:
+.TP 8
+.B font (\fPclass\fB Font)
+设置 窗口 文本 字体.
+.TP
+.B reverseVideo (\fPclass\fB ReverseVideo)
+如果
+.I reverseVideo
+的值 是
+.I on,
+窗口 就会 以 翻转 影像 显示.
+.TP
+.B bitmapIcon (\fPclass\fB BitmapIcon)
+如果
+.I bitmapIcon's
+的值 是
+.I on,
+窗口 就会 图标化 为 "kitchen sink."
+.TP
+.B borderWidth (\fPclass\fB BorderWidth)
+以 像素 为 单位 设置 窗口 的 边框 宽度.
+.TP
+.B internalBorder (\fPclass\fB BorderWidth)
+以 像素 为 单位 设置 窗口 的 内边框 宽度.
+.TP
+.B foreground (\fPclass\fB Foreground)
+只对 彩色 显示器 有用, 设置 窗口 的 文本 颜色.
+.TP
+.B background (\fPclass\fB Background)
+只对 彩色 显示器 有用, 设置 窗口 的 背景 颜色.
+.TP
+.B borderColor (\fPclass\fB BorderColor)
+只对 彩色 显示器 有用, 设置 窗口 的 边框 颜色.
+.TP
+.B cursorColor (\fPclass\fB Foreground)
+只对 彩色 显示器 有用, 设置 窗口 的 文本 光标 的 颜色.
+.TP
+.B pointerColor (\fPclass\fB Foreground)
+只对 彩色 显示器 有用, 设置 窗口 的 鼠标 光标 的 颜色.
+.TP
+.B geometry (\fPclass\fB Geometry)
+设置
+.I Emacs
+窗口 的 宽度, 高度, 以及 位置 (同 上面 描述 的 一样).
+.TP
+.B title (\fPclass\fB Title)
+设置
+.I Emacs
+窗口 的 标题.
+.TP
+.B iconName (\fPclass\fB Title)
+设置
+.I Emacs
+窗口 图标 的 图标名.
+.PP
+如果 你 用的 是 黑白 显示器, 窗口 特性 将会是 下面的 默认值:
+前景 颜色 为 黑色,
+背景 颜色 为 白色,
+边框 颜色 为 灰色,
+文本 和 鼠标 光标 颜色 为 黑色.
+.PP
+.SM Using the Mouse 
+.PP
+以下 是 X11 下
+.I Emacs
+的 鼠标键 绑定.
+
+.in +\w'CTRL-SHIFT-middle'u+4n
+.ta \w'CTRL-SHIFT-middle'u+4n
+.ti -\w'CTRL-SHIFT-middle'u+4n
+鼠标键	作用
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+左键	设置点.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+中键	粘贴 文本.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+右键	把 文本 剪切 到 X 剪切 缓冲区.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+SHIFT-中键	把 文本 剪切 到 X 剪切 缓冲区.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+SHIFT-右键	粘贴 文本.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-中键	把 文本 剪切 到 X 剪切 缓冲区 并且 删除.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-右键	选择 窗口, 然后 分拆 成 2 个 窗口. 同 键入 CTRL-x 2 一样.
+.\" 如果你没有用 X 从这里删除
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-SHIFT-左键	X buffer 菜单 -- 保持 按住 按键, 等 菜单 显示 出来, 选择 缓冲区,
+释放 按键. 要 取消, 把 鼠标 移出 菜单 然后 释放 按键.
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-SHIFT-中键	X help 菜单 -- 弹处 Emacs 帮助 的 索引 菜单.
+.\" 如果你没有用 X 从这里停止删除
+.br
+.ti -\w'CTRL-SHIFT-middle'u+4n
+CTRL-SHIFT-右键	用 鼠标 选择 窗口, 关闭 其它 所有 窗口. 同 键入 CTRL-x 1 一样.
+.\" 如果你没有用 X 从这里停止删除
+.PP
+
+.SH " 手册页 (MANUALS)"
+你 可以 向 自由 软件 基金会(GNU 软件 的 开发者) 定购 GNU Emacs 手册页 的
+印刷 拷贝. 定购 信息 参见 ORDERS 文件.
+.br
+你的 本地的 Emacs 维护者 可能 有 拷贝. 象 所有 FSF 的 软件 和 印刷品 一样
+, 所有的 人 都被 准许 制作 或 分发 Emacs 手册页, 同时 Emacs 源文件包 里面
+也 包含 手册页 的 Tex 源文件.
+.PP
+
+.SH "文件 (FILES)"
+/usr/local/info - 所有 Info 文档 浏览器(Emacs 的 一个 子系统) 文档 的 所在地.
+现在 不是 许多 Unix 系统 在 这里 都有 文档, 但是 所有 Emacs 手册页 文档 都 以
+一种 树 结构 保存 在 这里.
+
+/usr/local/share/emacs/$VERSION/src - C 源文件 以及 目标文件
+
+/usr/local/share/emacs/$VERSION/lisp - Lisp 源文件 和 一些 定义 常用的 编辑
+命令 的 已经 编译 了的 文件. 有一些 文件 是 预先 装载 了的; 另外 一些 则是
+要用 的 时候 自动 装载.
+  
+/usr/local/share/emacs/$VERSION/etc - GNU Emacs 用到 的 许多 程序, 还有
+一些 包含 常用 信息 的 文件.
+
+/usr/local/share/emacs/$VERSION/etc/DOC.* - 包含 GNU Emacs 的 Lisp primitive
+和 预先 装载 的 Lisp 函数 的 文档 描述 字符串. 这样 可以 减小 Emacs 本身 的
+大小.
+
+/usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES 讨论 GNU Emacs
+vs. 其它 版本 的 Emacs.
+.br
+/usr/local/share/emacs/$VERSION/etc/SERVICE 向 GNU Emacs 用户 提供 各种 服务
+的人 的 列表, 包括 教育, 疑难 排解, 移植 和 定制 等.
+.br
+这些 文件 包含 一些 对 那些 想用 Emacs Lisp 扩展 语言(现在 还 没有 这个 语言 的
+完整 的 文档) 写 程序 的人 有用 的 信息.
+
+/usr/local/com/emacs/lock - 为 Emacs 正在 编辑 的 所有 的 文件 的 上锁 文件
+都在 这里, 这些 文件 可以 防止 两个 用户 同时 编辑 同一个 文件.
+
+.\" 如果你没有用 X 从这里删除
+/usr/lib/X11/rgb.txt - 合法 X 颜色 名称 的 列表.
+.\" 如果你没有用 X 从这里停止删除
+.PP
+
+.SH "错误 (BUGS)"
+在 英特网 上 有一个 邮件 列表 bug-gnu-emacs at prep.ai.mit.edu (在 UUCPnet 上 是
+ucbvax!prep.ai.mit.edu!bug-gnu-emacs), 可以 通过 这个 邮件 列表 报告 Emacs 的
+错误 和 补丁. 但是 在 报告 一个 错误 之前 请 确认 它 的确 是个 错误, 不要 把
+一个 一些 特性 误认为 是 错误. 我们 建议 你 读读 手册页(或者 Info 系统) 末尾
+的 ``报告 Emacs 错误'' 一节, 那里 有 如何 以及 什么 时候 报告 错误 的 一些 描述.
+还有 不要 忘了 在 \fI所有\fR 错误 报告 里 包含 你 运行 的 Emacs 的 版本号.
+
+请 不要 指望 就 错误 报告 获得 个人 回答. 报告 错误 的 目的 是 在 下一个 发行版
+中 清除 错误, 如果 可能. 如果 要 寻求 个人 帮助, 在 SERVICE 文件 (见上) 里 有
+提供 服务 的人 的 名单.
+
+请 不要 发送 任何 与 错误 报告 无关 的 东西 到 这个 邮件 列表 中. 请把 加入 邮件
+列表 的 请求 发送 到 info-gnu-emacs-request at prep.ai.mit.edu (或者 相 对应 的
+UUCP 地址 里). 在 /usr/local/emacs/etc/MAILINGLISTS 文件 里 有 更多 关于 邮件
+列表 的 信息. 如果 我们 能 找到 导致 错误 的 代码, 那么 错误 多半 都能 被 清除,
+所以 你 应该 尽量 详细 的 报告 错误, 使得 我们 能够 使 错误 重新 发生.
+.PP
+我 知道 的 错误 有: 在 一些 版本 的 Unix 中, shell 不能 正常 运行 一些 在 原始
+模式 (Raw mode) 下 运行 的 程序.
+
+.SH "无限制 (UNRESTRICTIONS)"
+.PP
+.I Emacs 
+是 自由 软件; 每个人 都可以 在
+.I Emacs
+通用 公共 许可证 中 申明 的 条款 下 把
+.I Emacs
+发布 给 每个人, 每个
+.I Emacs
+中 都 附带 有 此 条款, 在 手册页 中 也 包含 有 此 条款.
+.PP
+.I Emacs
+的 拷贝 可能 被 打包 包含 在 一些 Unix 系统 中, 但是 它 并不在 那些 系统 所用
+的 许可证 的 保护 下. 这种 行为 违背 了 允许 分发 的 条款. 事实上, 通用 公共
+许可证 的 主要 目的 就是 禁止 任何人 在
+.I Emacs
+的 发布 上 加入 其它 任何 的 限制。
+.PP
+Richard Stallman 倡导 大家 来 改进 扩展
+.I Emacs, 
+并且 鼓励 大家 为 GNU 库 的 扩展 做出 贡献. 事实上 GNU (Gnu's Not Unix) 将会
+成为 Berkeley Unix 的 代替品. 每个人 都可以 自由 的 使用, 拷贝, 学习 以及 改变
+GNU 系统.
+
+.SH "参见 (SEE ALSO)"
+X(1), xlsfonts(1), xterm(1), xrdb(1)
+
+.SH "作者 (AUTHORS)"
+.PP
+.I Emacs
+是 Richard Stallman 和自由软件基金会写的。
+Joachim Martillo 和 Robert Krawitz 加入了 X 特性。
+
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/enable.1 b/src/man1/enable.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/enable.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/env.1 b/src/man1/env.1
new file mode 100644
index 0000000..719f4ea
--- /dev/null
+++ b/src/man1/env.1
@@ -0,0 +1,51 @@
+.TH ENV "1" "1999年8月" "GNU sh-utils 2.0" FSF
+.SH NAME(名称)
+env \- 在重建的环境中运行程序
+.SH SYNOPSIS(总览)
+.B env
+[\fIOPTION\fR]... [\fI-\fR] [\fINAME=VALUE\fR]... [\fICOMMAND \fR[\fIARG\fR]...]
+.SH DESCRIPTION(描述)
+.PP
+.\" 在这儿添加任何附加的描述
+.PP
+设置环境中的每个NAME为VALUE,并且运行COMMAND.
+.TP
+\fB\-i\fR, \fB\-\-ignore\-environment\fR
+不带环境变量启动
+.TP
+\fB\-u\fR, \fB\-\-unset\fR=\fINAME\fR
+从环境变量中删除一个变量
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+输出版本信息并退出
+.PP
+单独的-隐含\fB\-i\fR.如果没有COMMAND,那么打印结果环境变量.
+.SH "REPORTING BUGS"(报告BUGS)
+报告bugs,请发到<bug-sh-utils at gnu.org>.
+.SH "SEE ALSO"(另见)
+.B env
+的完整文档是以Texinfo手册形式维护的.如果
+你正确地安装了
+.B info
+和
+.B env
+程序,那么命令
+.IP
+.B info env
+.PP
+应该会让你访问到这个手册.
+.SH COPYRIGHT(版权)
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/eval.1 b/src/man1/eval.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/eval.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/ex.1 b/src/man1/ex.1
new file mode 100644
index 0000000..2ce750a
--- /dev/null
+++ b/src/man1/ex.1
@@ -0,0 +1,360 @@
+.TH VIM 1 "1998 December 28"
+
+.SH NAME
+vim \- Vi IMproved, 一个程序员的文本编辑器
+
+.SH "总览 (SYNOPSIS)"
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+
+.SH "描述 (DESCRIPTION)"
+.B Vim
+是 一个 同 Vi 向上兼容的 文本 编辑器, 可以 用来 编辑
+任何 ASCII 文本, 特别 适合 用来 编辑 程序.
+.PP
+它对 Vi 作了 许多 增强: 多层撤销, 多窗口, 多缓冲区(buffer),
+高亮度 语法显示, 命令行编辑, 文件名匹配, 在线帮助, 可视选定,
+等等. 用
+":help vi_diff.txt" 看
+.B Vim
+和 Vi 的差别 的 摘要.
+.PP
+在运行
+.B Vim
+的时候 可以用 ":help" 命令 获得 很多 帮助.
+参考 下面的 在线帮助 一节.
+.PP
+一般 可用
+.PP
+	vim file
+.PP
+命令 打开
+.B Vim
+来 编辑 一个 文件. 概括的说, 可以用
+.PP
+	vim [options] [filelist]
+.PP
+命令 来运行
+.B Vim .
+如果 没有 文件名, 编辑器 就会 打开 一个 空的 缓冲区.
+否则 就会用 下面 四个中的一个 来选择 要编辑的 文件.
+.TP 12
+file ..
+文件名列表. 第一个 会 作为 当前 文件 读入 缓冲区, 光标 会
+停在 缓冲区的 第一行. 你 可以用 ":next" 命令 转到 其它的 文件.
+如果 要编辑 一个以 "-" 开头的 文件. 在文件 列表 前面 加上 "--".
+.TP
+-
+从 标准输入 读取 被编辑的 文件. 从 标准 错误输出 (应该 是个
+终端) 读入 命令.
+.TP
+-t {tag}
+被 编辑的 文件 和 光标的 初始位置 由 标记 (tag) 决定, 标记
+有点像 一种 goto 标签 (goto label).
+在 标记文件中 找到 标记, 相应的 文件 成为 当前文件, 相应的 命令
+被执行. 这种方式 常用于 C 程序, 标记 就是 函数名, 当前文件 就是
+包含 那个函数的 文件, 光标 停留在 函数的 开始处.
+见 ":help tag-commands"。
+.TP
+-q [errorfile]
+运行时 进入 快速修复模式.
+读取 [errorfile] 文件 并显示 第一个 错误. 如果 没有 [errorfile] 文件,
+文件名 由 'errorfile' 选项 决定 (在 Amiga 为 "AztecC.Err", 在
+其他系统中 为 "errors.vim"). 可以 用 ":cn" 命令 跳到 其它错误处.
+见 ":help quickfix"。
+.PP
+.B Vim
+会 根据 不同命令 有 不同的 表现, 尽管 它们 可能 是 一个 可执行 文件.
+.TP 10
+vim
+正常 模式, 所有 都是 默认状态.
+.TP
+ex
+以 Ex 模式 运行. 用 ":vi" 命令 进入 正常模式. 也可以 加上 "-e" 选项
+进入 此模式.
+.TP
+view
+以 只读模式 运行. 你被禁止 写文件. 也可以 加上 "-R" 选项 进入 此模式.
+.TP
+gvim gview
+GUI 版本。
+开启 一个 新的窗口. 也可以 加上 "-g" 选项 进入 此模式.
+.TP
+rvim rview rgvim rgview
+同 上面的 相同, 只是 加上了 限制, 不能运行 shell 程序, 也 不能 暂停
+.B Vim .
+也 可以 加上 "-Z" 选项 进入 此模式.
+
+.SH "选项 (OPTIONS)"
+所有选项 都可以 以 任何顺序 出现, 可以 在文件名前, 也可以 在文件名后.
+没有 参数的 选项 可以 出现在 一个 "-" 后面.
+.TP 12
++[num]
+对于 第一个 文件, 光标 会停在 第 "num" 行. 如果 没有 "num" , 则 光标
+会停在 最后一行.
+.TP
++/{pat}
+对于 第一个文件, 光标 会停在 {pat} 第一次 出现的 地方. 搜寻 模式
+见 ":help search-pattern"。
+.TP
++{command}
+.TP
+-c {command}
+读入 第一个 文件后 会 执行 {command} 命令. {command} 应为 Ex 命令.
+如果 {command} 中 包含有 空格, 必须 用双引号 括住 (这个取决于所用的 shell).
+例: Vim "+set si" main.c
+.br
+注意: 你 最多 可以用 10 个 "+" 或者 "-c" 命令.
+.TP
+-b
+二进制模式. 设置 一些选项, 这样 就可以 用来 编辑 二进制 和 可执行 文件 了.
+.TP
+-C
+兼容. 设置 'compatible' 选项. 这样 就算 存在 .vimrc 文件
+.B Vim
+也会 基本上 象 Vi 一样了.
+.TP
+-d {device}
+打开 {device} 用作终端, 只在 Amiga 下。
+例:
+"\-d con:20/30/600/150".
+.TP
+-e
+以 Ex 模式 运行
+.B Vim ,
+就像 运行 "ex" 一样。
+.TP
+-f
+前台 运行。 对于 GUI 版本, 
+.B Vim
+不会 同运行它的 shell 分离。
+在 Amiga 中,
+.B Vim
+不会 重新启动 来 开启一个 新窗口. 这个选项 会用在当
+.B Vim
+被 另外一个 程序执行, 并且 这个程序 想等编辑动作 结束后 再运行
+的 时候 (如 mail). 在 Amiga 上 ":sh" 和 ":!" 不会起作用.
+.TP
+-F
+如果
+.B Vim
+编译时 加入了 对 从右到左 书写的 文件 FKMAP 以及 Farsi 键盘映射 的支持,
+.B Vim
+会 以 Farsi 模式 运行, 比如 设置 'fkmap' 和 'rightleft' 选项.不然
+.B Vim
+会 显示 一条 错误信息 并 终止.
+.TP
+-g
+如果
+.B Vim
+编译时 加入 GUI 支持, 会开启 GUI, 不然
+.B Vim
+会 显示 一条 错误信息 并 终止.
+.TP
+-h
+.B Vim
+显示 命令行 参数 和 选项的 帮助, 然后 终止.
+.TP
+-H
+如果
+.B Vim
+编译时 加入了 对 从右到左 书写的 文件 RIGHTLEFT 以及 Hebrew 键盘映射
+的支持, 
+.B Vim
+会以 Hebrew 模式 运行, 比如 设置 'hkmap' 和 'rightleft' 选项. 不然
+.B Vim
+会 显示 一条 错误信息 并 终止.
+.TP
+-i {viminfo}
+准许 使用 viminfo 文件, 这个 选项 设置 使用的 文件名, 默认的 是
+"~/.viminfo". 用 "NONE" 文件名 也可以 跳过 使用 .viminfo 文件.
+.TP
+-L
+同 -r 一样.
+.TP
+-l
+Lisp 模式.
+打开 'lisp' 和 'showmatch' 选项.
+.TP
+-m
+禁止 修改文件. 设置 'write' 选项, 这样 就不能 写文件了.
+.TP
+-N
+非兼容 模式. 设置 'compatible' 选项. 这样
+.B Vim
+会 表现得 更好, 就算 .vimrc 文件 不存在 也会 同 Vi 不兼容.
+.TP
+-n
+禁止 交换文件, 这样 在崩溃后 就 不能 恢复 文件了. 对于 编辑
+在很慢的 媒体中的 文件 很有好处 (比如软盘), 也可以 用 ":set uc=0"
+禁止交换, 用 ":set uc=200" 开启 交换.
+.TP
+-o[N]
+打开 N 个窗口. 如果没有 N, 为 每个文件 开一个 窗口.
+.TP
+-R
+只读 模式.  设置 'readonly' 选项. 你 仍然 可以 编辑 缓冲区, 但是 不能
+重写文件. 如果 你要 重写文件, 必须在 Ex 命令中 用惊叹号, 比如 ":w!".
+-R 选项 隐含了 -n 选项 (见下). 'readonly' 选项 可以 用 ":set noro" 设置.
+见 ":help 'readonly'".
+.TP
+-r
+列出 交换文件, 显示 关于 恢复文件的 信息.
+.TP
+-r {file}
+恢复 模式. 交换文件 是 用来 恢复 在 编辑过程中 崩溃了的 文件.
+交换 文件名 是 被编辑文件名 后面 加上 ".swp". 见 ":help recovery".
+.TP
+-s
+安静 模式. 只在 用 "Ex" 启动 或者 用了 "-e" 选项 才有用.
+.TP
+-s {scriptin}
+读入 脚本文件 {scriptin}. 文件里的 字符 就像 你 直接 输入 一样的, 也
+可以 用 ":source! {scriptin}" 命令 实现 这个功能. 如果 在 编辑器 结束前
+就 读到了 文件尾, 就 接着 从键盘 读入.
+.TP
+-T {terminal}
+告诉
+.B Vim
+你 用的 终端的 名字, 只有 当 不能 自动确定 的时候 才这样. 它 必须是
+.B Vim
+(builtin) 能辨认的 终端 或者是 在 termcap 或者 terminfo 文件中 定义了的.
+.TP
+-u {vimrc}
+用 {vimrc} 文件 里的 命令 来初始化, 跳过 所有 其它的 初始化, 用 这个
+来编辑 特殊类型的 文件. 也可以 用 "NONE" 来 跳过 所有初始化. 在 vim 中
+用 ":help initialization" 查看 更多信息.
+.TP
+-U {gvimrc}
+用 {gvimrc} 文件 里的 命令 来初始化 GUI, 跳过 所有 其它的 GUI 初始化, 也
+可以 用 "NONE" 来跳过 所有 GUI 初始化. 在 vim 中 用 ":help gui-init" 查看
+更多信息.
+.TP
+-V
+冗长 显示. 显示 执行 初始化代码 和 读入的 文件, 并且 写 viminfo 文件.
+.TP
+-v
+以 Vi 模式运行
+.B Vim ,
+就像 运行 "vi" 一样, 只有 运行 "ex" 时 才有用.
+.TP
+-w {scriptout}
+所有 在
+.B Vim
+退出前 你键入的 字符 都会被 存入 {scriptout} 文件. 这 用来 创建一个
+脚本文件, 你 可以用 "vim -s" 和 ":source!" 来使用. 如果 {scriptout} 存在, 会
+把 字符 追加到 后面.
+.TP
+-W {scriptout}
+同 -w 一样, 但是 是覆盖 原来的文件.
+.TP
+-x
+写文件时 加密. 会提示你 输入密码.
+.TP
+-Z
+受限 模式. 同运行 以 "r" 开头的 程序 同效.
+.TP
+--
+表明 选项结束. 在此之后的 参数 都会被认为 是 文件名, 可以 用这个
+来编辑 一个 以 '-' 开头 的文件.
+.SH "在线帮助 (ON-LINE HELP)"
+在
+.B Vim
+中键入 ":help" 来 获得 帮助. 用 ":help subject" 来 获得 关于 一个
+特定主题的 帮助. 例如 用 ":help ZZ" 来 获得 关于 "ZZ" 的帮助.
+用 <Tab> 和 CTRL-D 来 完成 帮助主题 (":help cmdline-completion").
+可以 用 标记 从 一个地方 跳到 另一个 地方 (有点像 超文本连接, 见 ":help").
+所有的 文档 都可以 这样 来浏览, 比如 ":help syntax.txt".
+.SH "文件 (FILES)"
+.TP 15
+/usr/share/vim/vim56/doc/*.txt
+.B Vim
+文档文件. 用 ":help doc-file-list" 获得 完整的 列表.
+.TP
+/usr/share/vim/vim56/doc/tags
+在 文档文件中 查找信息 用的 标签文件.
+.TP
+/usr/share/vim/vim56/syntax/syntax.vim
+系统 语法 初始化 文件.
+.TP
+/usr/share/vim/vim56/syntax/*.vim
+各种语言的 语法文件.
+.TP
+/usr/share/vim/vimrc
+系统
+.B Vim
+初始化文件.
+.TP
+/usr/share/vim/gvimrc
+系统 gvim 初始化文件.
+.TP
+/usr/share/vim/vim56/optwin.vim
+":options" 命令 所用的 脚本文件, 这是个 查看 和 设置选项的 很好的 办法.
+.TP
+/usr/share/vim/vim56/menu.vim
+gvim 的 系统菜单 初始化文件.
+.TP
+/usr/share/vim/vim56/bugreport.vim
+用来 生成 错误报告的 脚本文件, 见 ":help bugs".
+.TP
+/usr/share/vim/vim56/filetype.vim
+根据 文件名 来判定 文件类型 的 脚本文件, 见 ":help 'filetype'".
+.TP
+/usr/share/vim/vim56/scripts.vim
+根据 文件内容 来判定 文件类型 的 脚本文件, 见 ":help 'filetype'".
+.PP
+最新 信息 参见 VIM 主页:
+.br
+\<URL:http://www.vim.org/\>
+
+.SH "参见 (SEE ALSO)"
+vimtutor(1)
+
+.SH "作者 (AUTHOR)"
+Most of
+.B Vim
+的大部分 都是 Bram Moolenaar 在 很多人的 帮助下 完成的.
+见 ":help credits".
+.br
+虽然 不大会有 最早的 代码存在, 但是
+.B Vim
+基于 Stevie 写的代码, 之后被 Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter 修改, 然后 才形成的.
+
+.SH "错误 (BUGS)"
+多半都有. 用 ":help todo" 看 已知问题的 列表.
+.PP
+注意 有些 被 报告为 错误的 事实上 是 应为 太相信 所有的 行为
+都应该 同 Vi 一样, 如果 你因为 它 和 Vi 不一样 而 认为 它 是个
+错误, 你 应该 好好 看看 vi_diff.txt 文件 (或者 在 Vim 中
+键入 :help vi_diff.txt), 并且 看看 'compatible' 和 'cpoptions' 选项.
+
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/8/30
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/exec.1 b/src/man1/exec.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/exec.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/exit.1 b/src/man1/exit.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/exit.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/expand.1 b/src/man1/expand.1
new file mode 100644
index 0000000..62955a2
--- /dev/null
+++ b/src/man1/expand.1
@@ -0,0 +1,57 @@
+.TH EXPAND "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+expand \- 把 tab 符转换为空格符
+.SH "总览 (SYNOPSIS)"
+.B ../src/expand
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+把 各文件 FILE 中的 tab 符 转换为 空格符, 然后 写到 标准输出.
+如果 没有 指定 FILE, 或者 FILE 是 -, 就从 标准输入 读取 数据.
+.TP
+\fB\-i\fR, \fB\-\-initial\fR
+不要 转换 非空白符 后面 的 TAB 符
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fINUMBER\fR
+设置 tab 的 间隔 为 NUMBER 个 字符, 而 不再是 8
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fILIST\fR
+使用 明确的 tab 位置 列表, 每一项 用 逗号 隔开
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+可以 用 \fB\-NUMBER\fR 或 \fB\-LIST\fR 取代
+\fB\-t\fR NUMBER 或 \fB\-t\fR LIST.
+.SH "作者 (AUTHOR)"
+David MacKenzie.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B expand
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B expand
+程序, 使用 命令
+.IP
+.B info expand
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/14
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/export.1 b/src/man1/export.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/export.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/false.1 b/src/man1/false.1
new file mode 100644
index 0000000..a37f23f
--- /dev/null
+++ b/src/man1/false.1
@@ -0,0 +1,49 @@
+.TH FALSE "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+false \- (失败的)什么都不做
+.SH "总览 (SYNOPSIS)"
+.B false
+[\fI忽略命令行参数\fR]
+.br
+.B false
+\fIOPTION\fR
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+程序 结束 时, 产生 表示 失败 的 状态码.
+.PP
+下列的 选项 没有 简写 形式.
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 退出.
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 退出.
+.SH "报告 BUGS"
+发现 的 错误 送往 <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B false
+的 完整 文档 以 Texinfo 手册 形式 维护. 如果 正确 安装 了
+.B info
+和
+.B false
+程序, 用 命令
+.IP
+.B info false
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/17
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/fc.1 b/src/man1/fc.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/fc.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/fg.1 b/src/man1/fg.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/fg.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/fgrep.1 b/src/man1/fgrep.1
new file mode 100644
index 0000000..6a74c5d
--- /dev/null
+++ b/src/man1/fgrep.1
@@ -0,0 +1 @@
+.so man1/grep.1
diff --git a/src/man1/file.1 b/src/man1/file.1
new file mode 100644
index 0000000..b16e8ba
--- /dev/null
+++ b/src/man1/file.1
@@ -0,0 +1,364 @@
+.TH FILE 1 "Copyright but distributable"
+.SH NAME
+file
+\- 确定文件类型
+.SH 总览
+.B file
+[
+.B \-bcnsvzL
+]
+[
+.B \-f
+命名文件 ]
+[
+.B \-m 
+幻数文件 ]
+file ...
+.SH 描述
+本手册页说明了3.27版本
+.B file
+命令的使用.
+.B File
+命令试图检查每个参数以判定文件的类型.
+检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查.
+.I 文件系统
+检查成功则输出文件类型.
+.PP
+输出的类型一般会包含以下的词中的一个:
+.B text
+(文件中仅有
+.SM ASCII
+字符,可以用
+.SM ASCII
+终端读此文件,以保证内容的可靠性),
+.B executable
+(文件中保存的是程序编译后的结果,一些\s-1UNIX\s0 内核或其它内核能理解这类文件),
+或者
+.B data
+表示所有其它类型文件(data 一般为二进制文件或者不可打印的).
+但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,
+却不属于这一类
+如果要修改
+.I /usr/share/magic
+或者程序本身, 
+.B "preserve these keywords" .
+当文件为``text'' 类型时,认为此文件为可读文件.
+不要象在Berkeley环境中那样做 \- 要把``shell commands text''改为``shell script''.
+.PP
+文件系统检查是建立在对
+.BR stat (2)
+系统调用结果的分析上的.
+程序会分析文件是否为空,或者是否是某种特殊文件.
+对于所有可在现有系统上使用的文件类型 (比如套接
+口文件,动态链接文件,命名管道文件(FIFOs) 等),
+只要它在系统头文件
+.IR sys/stat.h 
+中已经定义过,就可以被检查到.
+.PP
+幻数检查用来检查文件中是否有特殊的固定格式的数据.
+规范的例子如二进制可执行文件(编译后的程序)
+.I a.out
+,该文件格式在标准include目录下的
+.I a.out.h
+文件中定义,也可能在
+.I exec.h
+中定义.
+这些文件在文件开始部分附近的一个特殊位置保存有一个'幻数' , 
+通过幻数告诉\s-1UNIX\s0 操作系统此文件是二进制可执行文件,
+和其中包含的其它类型.
+幻数的概念已经扩展到数据文件.任何在文件固定位置有与文件类型
+相关的不变标识符的文件都可以这样表示. 这些文件中的信息可以
+从幻数文件
+.I /usr/share/magic
+中读取.
+.PP
+如果文件为
+.SM ASCII 
+文件,
+.B file
+会试图检查它的语言.
+语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看
+.IR names.h )
+例如,关键字
+.B .br
+指出此文件很可能是
+.BR troff (1)
+输入文件, 而关键字 
+.B struct
+指出此文件是C程序.
+语言检查不如前两组检查可靠,所以放在最后执行.它也用来检查
+一些混合文件(例如 
+.BR tar (1)
+存档文件)并确定文件是`ascii text'类型还是`data'类型. 
+.SH 选项
+.TP 8
+.B \-b
+不输出文件名 (简要模式).
+.TP 8
+.B \-c
+检查时打印输出幻数文件的解析结果.常与
+.B \-m
+一起使用,用来在安装幻数文件之前调试它.
+.TP 8
+.B \-f 命名文件
+从在参数表前的
+.I 命名文件
+中读出将要检查的文件名(每行一个文件).要有
+.I 命名文件
+,或者至少有一个文件名参数;
+如果要检查标准输入, 使用``-''作为文件参数.
+.TP 8
+.B \-m list
+指定包含幻数的文件列表.可以是单个文件,也可以是
+用冒号分开的多个文件.
+.TP 8
+.B \-n
+每检查完一个文件就强制刷新标准输出. 仅在检查一组文件时才有效.
+一般在将文件类型输出到管道时才采用此选项.
+.TP 8
+.B \-v
+打印程序版本并退出.
+.TP 8
+.B \-z
+试图查看压缩文件内部信息.
+.TP 8
+.B \-L
+(在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像
+.BR ls (1)
+命令的like-named 选项.
+.TP 8
+.B \-s
+通常,
+.B file
+只是试图去检查在文件列表中那些
+.BR stat (2)
+报告为正常文件的文件的类型.由于读特殊文件将可能导致
+不可知后果,所以这样可以防止发生问题.使用
+.BR \-s
+选项时
+.B file
+命令也将去读文件列表中的块特殊文件和字符特殊文件.
+一般用于从原始磁盘分区中获得文件系统类型,此文件为块
+特殊文件. 这个选项也导致
+.B file
+命令忽略
+.BR stat (2)
+报告的文件大小,因为在有些系统中原始磁盘分区的大小报告为0.
+.SH 文件
+.I /usr/share/magic
+\- 默认的幻数列表
+.SH ENVIRONMENT
+环境变量
+.B MAGIC
+用于设置默认的幻数文件.
+.SH 参看
+.BR magic (4)
+\- 幻数文件的格式.
+.br
+.BR strings (1), " od" (1), " hexdump(1)"
+\- 检查非textfile的工具.
+.SH 标准的一致性
+本程序比System V 的FILE命令强大, 几乎能分辨出所有的模糊语言.
+与System V 的FILE命令大部分兼容.本版本能识别更多的magic, 
+但是,也将因此在有些情况下会产生不同输出(尽管更加精确). 
+.PP
+本版本与System V的显著区别就是本版本对空格是作为分隔符来
+处理的, 所以不能在格式字符串中包含空格. 例如,现有幻数文
+件中的
+.br
+>10	string	language impress\ 	(imPRESS data)
+.br
+要改为
+.br
+>10	string	language\e impress	(imPRESS data)
+.br
+另外, 格式字符串中的反斜线符号也要避免.例如,现有幻数文件中的
+.br
+0	string		\ebegindata	Andrew Toolkit document
+.br
+要改为
+.br
+0	string		\e\ebegindata	Andrew Toolkit document
+.br
+.PP
+SunOS releases 3.2及以后的版本包括从System V 发展来的
+.BR file (1)
+命令,但有所扩展.本版本与Sun的file命令差别不大.它包括对 `&' 
+操作符的扩展,例如,
+.br
+>16	long&0x7fffffff	>0		not stripped
+.SH MAGIC DIRECTORY
+幻数文件项主要是从USENET收集来的,许多人都为此作出了贡献.
+Christos Zoulas (下边将提到的)将收集附加项信息及修正幻数文件项.
+幻数文件项的合并表将会定时发布.
+.PP
+幻数文件项的顺序非常重要.不同的系统上的幻数项放的顺序可能不同.
+如果老的
+.B file
+命令使用幻数文件,请将旧的幻数文件改名保存,
+(如改为
+.IR /usr/share/magic.orig )
+以便日后做比较用.
+.SH 举例
+.nf
+$ file file.c file /dev/hda
+file.c:   C program text
+file:     ELF 32-bit LSB executable, Intel 80386, version 1,
+dynamically linked, not stripped
+/dev/hda: block special
+
+$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
+/dev/hda:   x86 boot sector
+/dev/hda1:  Linux/i386 ext2 filesystem
+/dev/hda2:  x86 boot sector
+/dev/hda3:  x86 boot sector, extended partition table
+/dev/hda4:  Linux/i386 ext2 filesystem
+/dev/hda5:  Linux/i386 swap file
+/dev/hda6:  Linux/i386 swap file
+/dev/hda7:  Linux/i386 swap file
+/dev/hda8:  Linux/i386 swap file
+/dev/hda9:  empty
+/dev/hda10: empty
+.fi
+.SH 历史
+There has been a 
+.B file
+命令至少是从研究版本6(手册页时间为1975年1月)开始加入\s-1UNIX\s0中的.
+System V 版本引入了一个重要变化:幻数类型的外部表.程序的运
+行时间有轻微下降, 但是复杂性大大增加了.
+.PP
+本程序是基于System V 版本的,由Ian Darwin独立设计和编写.
+.PP
+John Gilmore对源代码做了较大修改,在第一版基础上有较大提高.
+Geoff Collyer发现了一些不足之处,并提供了一些幻数文件项.
+本程序一直在完善中.
+.SH 作者
+由Ian F. Darwin写源码, UUCP 地址 {utzoo | ihnp4}!darwin!ian,
+电子邮件 ian at sq.com,
+邮寄地址: P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8.
+.PP
+由Rob McMahon修改, cudcv at warwick.ac.uk, 1989, 并对`&'操作符进行了扩充
+(不再仅仅是简单的 `x&y != 0',而是象`x&y op z'这样).
+.PP
+由Guy Harris修改, guy at netapp.com, 1993,完成:
+.RS
+.PP
+恢复``old-style'' `&'
+操作符为原来的功能,因为 1) Rob McMahon所做的修改打破了原来的使用方式, 
+2) 本版本的
+.B file
+命令支持的SunOS 的``new-style'' `&' 操作符也处理 `x&y op z',
+3) Rob的修改对某些情况没有考虑到;
+.PP
+引入多级`>';
+.PP
+引入``beshort'', ``leshort'', 等关键字使得程序能够按照一定的比特顺序
+查看文件中的比特数,而不是仅按运行
+.BR file
+时的本地比特顺序查看.
+.RE
+.PP
+由Ian Darwin和其他作者(包括Christos Zoulas(christos at astron.com))修改, 1990-1999.
+.SH 合法性通告
+版权所属 (c) Ian F. Darwin, Toronto, Canada,
+1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993.
+.PP
+本软件独立于美国电话电报公司,Sun微系统公司,Digital设备公司,
+Lotus发展公司 , California大学董事会,X联盟或者MIT,或者自由软件基金会.
+.PP
+本软件独立于美国商业部的任何出口规定,可以自由用于任何国家和行星.
+.PP
+任何人无需授权即可在任何计算机系统上使用此软件用于任何目的,
+可以自由修改和发布,但要遵守以下限制:
+.PP 
+1. 作者对使用此软件造成的任何后果不负任何责任,无论多么严重,
+即使这些后果是由于软件造成的.
+.PP
+2. 禁止不如实说明本软件的来源,无论是明确说错或是忽略. 由于很少有用户读源码,
+所以在文件中一定要说明软件来源.
+.PP
+3. 修改后的版本必须明白的标明,禁止将其作为原始软件.由于很少有用户读源码,
+所以在文件中一定要说明软件来源.
+.PP
+4. 禁止删除或修改本通告.
+.PP
+随同本包发布的几个支持文件(\fIgetopt\fP, \fIstrtok\fP)由
+Henry Spencer完成,同样适用以上条款.
+.PP
+随同本包发布的几个支持文件(\fIstrtol\fP, \fIstrchr\fP)属于公共域的;都做了标记.
+.PP
+文件
+.I tar.h
+和
+.I is_tar.c
+由
+.B tar
+程序组的John Gilmore完成,无需遵从以上条款.
+.SH 臭虫
+必定存在一种更好的方法来根据Magdir中的glop来自动创建Magic
+文件.是什么方法呢?要更好的实现,那么幻数文件应该编译成二进制
+(就是说,
+.BR ndbm (3)
+或者, 在异种网络环境中采用定长的
+.SM ASCII
+字符串)来加快启动速度.这样,程序就能达到Version 7 中的
+file命令那样的运行速度,同时又具有System V 版本的灵活性.
+.PP
+.B File
+使用的一些算法虽然提高了速度,但精确性降低了,因此
+在对
+.SM ASCII
+文件内容操作有时会出错.
+.PP
+对
+.SM ASCII
+文件的支持(基本上是对编程语言)过于简单,效率较低,需要重新编译并更新.
+.PP
+在一系列连续行后应该跟着有一个``else''从句.
+.PP
+幻数文件和关键词应该有正则表达式的支持.
+使用
+.SM "ASCII TAB"
+作为分隔符非常不足取,导致很难编辑文件, 但也因此受到保护.
+.PP
+在关键词中使用大写字母是可取的.
+例如,
+.BR troff (1)
+命令与查看手册页的宏.
+正则表达式支持将使这易于实现.
+.PP
+本程序没有实现对 \s-2FORTRAN\s0 的理解.
+应该能够通过在开始行中出现的关键字识别出\s-2FORTRAN\s0 .
+正则表达式支持将使这易于实现.
+.PP
+文件
+.I ascmagic
+中的关键词表可能应归入Magic文件.
+这能通过使用象`*'这样的关键词来实现偏移量.
+.PP
+另一个优化是要对幻数文件排序,这样,我们就可以
+在取得第一个比特,第一个词,第一个长整型,等等的时候完成
+对它们所有的检查.抱怨在幻数文件项中的冲突.制定一条规则,
+将幻数项在文件偏移量的基础上排序,胜过在幻数文件里指定位置吗?
+.PP
+本程序应提供一种方法来评价一种猜测有"多么好".
+我们去除了一些先前的设想(如,将 ``From '' 作为文件的最初5个字符)
+因为它们不如其它的设想好(如,``Newsgroups:'' 对"Return-Path:").
+如果没有其它的设想提出,就很可能会采纳第一种设想.  
+.PP
+本程序比某些file命令执行速度慢.
+.PP
+本手册,特别是本部分,比较长.
+.SH 可用性
+可以通过匿名FTP登陆到
+.B ftp.astron.com
+在目录下
+.I /pub/file/file-X.YY.tar.gz
+获得作者的命令的最新版本
+
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.B 2001/07/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/find.1 b/src/man1/find.1
new file mode 100644
index 0000000..b4ab53c
--- /dev/null
+++ b/src/man1/find.1
@@ -0,0 +1,368 @@
+.TH FIND 1L \" -*- nroff -*-
+.SH NAME
+find \- 递归地在层次目录中处理文件
+.SH 总览 SYNOPSIS
+.B find
+[path...] [expression]
+.SH 描述 DESCRIPTION
+这个文档是GNU版本
+.BR find
+命令的使用手册。
+.B find
+搜索目录树上的每一个文件名,它从左至右运算给定的表达式,按照优先规则(见运算符OPERATORS一节)进行匹配,直到得出结果(左边运算在 '与' 操作中得出假,在'或' 操作中得出真),然后
+.B find
+移向下一个文件名。
+.PP 
+第一个以 '\-' , '(' , ')' , ',' 或 '!' 这些字符起始的参数是表达式的开始; 在它之前的任何参数是要搜索的路径,在它之后的任何参数都是表达式的余下部分。如果没有路径参数,缺省用当前目录。如果没有表达式,缺省表达式用 '\-print'.
+.PP
+当所有文件都成功处理时
+.B find
+退出并返回状态值0。如果发生错误则返回一个大于0的值。
+.SH 表达式 EXPRESSIONS
+.P
+表达式是由\fB选项\fR(选项总是影响所有的操作, 而不仅仅是一个指定的文件的处理, 而且总是返回真值),\fB测试\fR(测试返回一个真值或一个假值),还有\fB动作\fR(动作有side effects, 返回一个真值或假值) 组成。它们都以运算符分开.忽略运算符的时候,默认使用 \-and 连接. 如果表达式没有包含 \-prune 以外的动作,当表达式为真时会执行 \-print 动作。
+.SS 选项 OPTIONS
+.P
+所有的选项都总是返回真值,它们总会被执行,除非放在表达式中执行不到的地方。因此,清楚起见,最好把它们放在表达式的开头部分。
+.IP \-daystart
+从当日起始时开始而不是从24小时之前,计算时间(for \-amin, \-atime, \-cmin, \-ctime, \-mmin, and \-mtime)。
+.IP \-depth
+先处理目录的内容再处理目录本身。
+.IP \-follow
+不检索符号链接。隐含了 \-noleaf。
+.IP "\-help, \-\-help"
+列出
+.B find
+的命令行用法的概要,然后退出。
+.IP "\-maxdepth \fIlevels\fR"
+进入命令行参数指定的目录下层目录时,最深不超过\fIlevels\fR(一个非负整数)层。`\-maxdepth 0' 意味着只在命令行参数指定的目录中执行测试和动作。
+.IP "\-mindepth \fIlevels\fR"
+不在\fIlevels\fR(一个非负整数)层之内执行任何测试和动作。`\-mindepth 1'意味着处理所有的文件,除了命令行参数指定的目录中的文件。
+.IP \-mount
+不进入处于其它文件系统之上的目录。可以用\-xdev代替,从而和一些其他版本的
+.BR find
+兼容。
+.IP "\-noleaf"
+不为“目录中子目录数量比硬连接数少2”这种假设做优化。这个选项在搜索那些不遵循UNIX文件系统链接约定的文件系统时用,比如CD-ROM,MS-DOS文件系统或AFS卷的加载点。在普通的UNIX文件系统中,每个目录至少有两个硬连接,它的名字和它的 '.' 条目。另外,它的子目录(假如有)还会各有一个 '..' 链接到它。在
+.B find
+检索一个目录时,发现子目录数比它的连接数少二时,它就知道目录中的其他条目并非目录(而是目录树中的叶(`leaf')节点)。除非需要检索的是这个叶节点,否则没必要去处理它。这样可以带来很大的搜索速度提升。
+.IP "\-version, \-\-version"
+打印\fBfind\fR的版本号然后退出。
+.IP \-xdev
+不进入处于其他文件系统之上的目录。
+.SS 测试 TESTS
+.P
+数字参数可以这样给出:
+.IP \fI+n\fP
+是比
+.IR n
+大,
+.IP \fI\-n\fP
+是比
+.IR n
+小,
+.IP \fIn\fP
+正好是
+.IR n
+。
+.IP "\-amin \fIn\fR"
+对文件的最近一次访问是在 \fIn\fR 分钟之前。
+.IP "\-anewer \fIfile\fR"
+对文件的最近一次访问比 \fIfile\fR 修改时间要晚。如果命令行中 \-follow 在 \-anewer 之前,(也只有在这种情况下) \-anewer 会受 \-follow 的影响。
+.IP "\-atime \fIn\fR"
+对文件的最近一次访问是在 \fIn\fR*24 小时之前。
+.IP "\-cmin \fIn\fR"
+对文件状态的最近一次修改是在 \fIn\fR 分钟之前。
+.IP "\-cnewer \fIfile\fR"
+对文件状态的最近一次修改比 \fIfile\fR 修改时间要晚。如果命令行中 \-follow 在 \-cnewer 之前,(也只有在这种情况下) \-cnewer 会受 \-follow 的影响。
+.IP "\-ctime \fIn\fR"
+对文件状态的最近一次修改是在 \fIn\fR*24 小时之前。
+.IP \-empty
+文件是空的普通文件或者空目录。
+.IP \-false
+总是false。
+.IP "\-fstype \fItype\fR"
+文件处于 \fItype\fR 类型的文件系统之上。有效的文件系统类型在不同版本的Unix中是不同的;一些Unix中的不完全的文件系统类型列表是这样:ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. 你可以用 \-printf 加上 %F 指令来查看你的文件系统的类型。
+.IP "\-gid \fIn\fR"
+文件的数字形式的组ID是 \fIn\fR。
+.IP "\-group \fIgname\fR"
+文件属于 \fIgname\fR (也允许使用数字形式的组ID).
+.IP "\-ilname \fIpattern\fR"
+和 \-lname 类似,但是匹配时是不区分大小写的。
+.IP "\-iname \fIpattern\fR"
+和 \-name 类似,但是匹配时是不区分大小写的。例如,`fo*' and `F??' 模式与文件名 `Foo', `FOO', `foo', `fOo' 等等相匹配。
+.IP "\-inum \fIn\fR"
+文件的 i 结点数是 \fIn\fR。
+.IP "\-ipath \fIpattern\fR"
+和 \-path 类似,但是匹配时是不区分大小写的。
+.IP "\-iregex \fIpattern\fR"
+和 \-regex 类似, 但是匹配时是不区分大小写的。
+.IP "\-links \fIn\fR"
+文件有 \fIn\fR 个链接。
+.IP "\-lname \fIpattern\fR"
+文件是一个与\fIpattern\fR 匹配的符号链接。元字符不会对`/' 或 `.' 做特殊处理。
+.IP "\-mmin \fIn\fR"
+对文件数据的最近一次修改是在 \fIn\fR 分钟之前。
+.IP "\-mtime \fIn\fR"
+对文件数据的最近一次修改是在 \fIn\fR*24 小时之前。
+.IP "\-name \fIpattern\fR"
+基本的文件名(将路径去掉了前面的目录)与shell模式\fIpattern\fR相匹配。元字符(`*', `?', 还有`[]' ) 不会匹配文件名开头的`.' 。使用 \-prune 来略过一个目录及其中的文件。查看 \-path 的描述中的范例。
+.IP "\-newer \fIfile\fR"
+对文件的最近一次修改比 \fIfile\fR 修改时间要晚。如果命令行中 \-follow 在 \-newer 之前,(也只有在这种情况下) \-newer 会受 \-follow 的影响。
+.IP \-nouser
+没有符合文件的数字形式的用户ID的用户。
+.IP \-nogroup
+没有符合文件的数字形式的组ID的组。
+.IP "\-path \fIpattern\fR"
+文件名与shell模式\fIpattern\fR相匹配。元字符不会对`/' 或 `.' 做特殊处理。因此,例如:
+.br
+.in +1i
+find . \-path './sr*sc'
+.br
+.in -1i
+如果存在 './src/misc' 的话,会将它打印出来。想要忽略一个完整的目录树,应当使用\-prune 而不是检查目录树中所有的文件。例如:要跳过 'src/emacs' 目录和其中所有的文件和子目录,把其他找到的文件打印出来,应当这样:
+.br
+.in +1i
+find . \-path './src/emacs' -prune -o -print
+.br
+.in -1i
+.IP "\-perm \fImode\fR"
+文件的权限位恰好是 \fImode\fR (八进制或符号)。
+Symbolic modes use mode 0 as a point of departure.
+.IP "\-perm \-\fImode\fR"
+所有的权限位 \fImode\fR 都被设置了的文件。
+.IP "\-perm +\fImode\fR"
+任何权限位 \fImode\fR 被设置了的文件。
+.IP "\-regex \fIpattern\fR"
+文件名与正则表达式 \fIpattern\fR 匹配。这是对整个路径的匹配,不是搜索文件。例如,要匹配名为`./fubar3' 的文件,可以使用正则表达式 `.*bar.' 或者 `.*b.*3',但是不能用`b.*r3'。
+.IP "\-size \fIn\fR[bckw]"
+文件使用了 \fIn\fP 单位个存储单元。默认的单位是512字节的块,也可以用\fIn\fP后面加上 `b' 来指定这个值。其他的单位是字节,如果在 \fIn\fP 后面加上 `c' ;千字节(kB),如果在 \fIn\fP 后面加上`k' ;两字节的字,如果在 \fIn\fP 后面加上 `w' 。大小不会计入 indirect blocks,但是会计入没有真正分配空间的疏松文件中的块。
+.IP \-true
+总是true。
+.IP "\-type \fIc\fR"
+文件是 \fIc\fR 类型的。类型可取值如下:
+.RS
+.IP b
+特殊块文件(缓冲的)
+.IP c
+特殊字符文件(不缓冲)
+.IP d
+目录
+.IP p
+命名管道 (FIFO)
+.IP f
+普通文件
+.IP l
+符号链接
+.IP s
+套接字
+.IP D
+门 (Solaris 特有)
+.RE
+.IP "\-uid \fIn\fR"
+文件的数字形式的用户ID是 \fIn\fR 。
+.IP "\-used \fIn\fR"
+文件最后一次存取是在最后一次修改它的状态的 \fIn\fR 天之后。
+.IP "\-user \fIuname\fR"
+文件的所有者是 \fIuname\fR (也可以使用数字形式的用户ID).
+.IP "\-xtype \fIc\fR"
+和 \-type 相同,除非文件是一个符号链接。对于符号链接:如果没有给出 \-follow ,如果文件是一个指向 \fIc\fR 类型文件的链接,那么返回true;如果给出了 \-follow ,如果 \fIc\fR 是 `l' 那么返回true。换句话说,对于符号链接,\-xtype 检查那些 \-type 不检查的文件。
+.SS 动作 ACTIONS
+.IP "\-exec \fIcommand\fR ;"
+执行 \fIcommand\fR;如果命令返回状态值0,那么 exec 返回true。所有
+.B find
+其余的命令行参数将作为提供给命令的参数,直到遇到一个由 `;' 组成的参数为止。命令的参数中,字符串 `{}' 将以正在处理的文件名替换。所有的 `{}' 都会被替换,不仅是在单独的一个参数中。有些版本的
+.BR find 
+不是这样做的。
+这些参数可能需要用 `\e' 来escape 或者用括号括住,防止它们被shell展开。命令是从起始目录执行的。
+.IP "\-fls \fIfile\fR"
+返回true;类似 \-ls 但是像 \-fprint 那样写入 \fIfile\fR。
+.IP "\-fprint \fIfile\fR"
+返回true;将文件全名打印到文件 \fIfile\fR 中。如果运行 \fBfind\fR 时 \fIfile\fR 不存在,那么它将被创建。如果它存在,它将被覆盖。文件名``/dev/stdout'' 和``/dev/stderr'' 会作特殊处理;它们分别指的是标准输出和标准错误输出。
+.IP "\-fprint0 \fIfile\fR"
+返回true;类似 \-print0 但是像 \-fprint 那样写入 \fIfile\fR。
+.IP "\-fprintf \fIfile\fR \fIformat\fR"
+返回true;类似 \-printf 但是像 \-fprint 那样写入 \fIfile\fR。
+.IP "\-ok \fIcommand\fR ;"
+类似 \-exec 但是会先向用户询问 (在标准输入); 如果回应不是以 `y' 或 `Y' 起始则不会运行 \fIcommand\fR 而是返回false。
+.IP \-print
+返回true;在标准输出打印文件全名,然后是一个换行符。
+.IP \-print0
+返回true;在标准输出打印文件全名,然后是一个null字符。这样可以使得处理 \fBfind\fR 的输出的程序可以正确地理解带有换行符的文件名。
+.IP "\-printf \fIformat\fR"
+返回true;在标准输出打印 \fIformat\fR , 解释 `\e' escape 还有 `%' 指令。字段宽度和精度可以像C函数 `printf' 那样来指定。与 \-print 不同的是, \-printf 在字符串末端不会添加一个新行。可用的escape 和指令如下:
+.RS
+.IP \ea
+警告铃声
+.IP \eb
+回退
+.IP \ec
+立即停止以当前格式输出,刷新输出设备。
+.IP \ef
+表格结束
+.IP \en
+新行
+.IP \er
+回车
+.IP \et
+水平tab
+.IP \ev
+竖直tab
+.IP \e\e
+输出自身`\e'
+.IP \eNNN
+ASCII编码是NNN(八进制)的字符
+.PP
+在一个 `\e' 字符后面使用任何其他字符会被作为普通的字符,因此它们都会被打印出来。
+.IP %%
+输出自身`%'
+.IP %a
+文件最后一次存取的时间。格式是C函数 `ctime' 返回值的格式。
+.IP %A\fIk\fP
+文件最后一次存取的时间。格式以 \fIk\fR 指定,可以是 `@' 或者是C函数 `strftime' 的指令格式。下面列出了 \fIk\fR 可用的值;有一些并不是在所有系统上都可用,因为不同系统中 `strftime' 也不同。
+.RS
+.IP @
+从 Jan. 1, 1970, 00:00 GMT 起的秒数
+.PP
+时间字段:
+.IP H
+小时 (00..23)
+.IP I
+小时 (01..12)
+.IP k
+小时 ( 0..23)
+.IP l
+小时 ( 1..12)
+.IP M
+分钟 (00..59)
+.IP p
+本地的 AM 或者 PM
+.IP r
+12小时格式的时间 (hh:mm:ss [AP]M)
+.IP S
+秒 (00..61)
+.IP T
+24小时格式的时间 (hh:mm:ss)
+.IP X
+本地的时间表示方法 (H:M:S)
+.IP Z
+时区(例如,EDT),如果不能决定时区就是空
+.PP
+日期字段:
+.IP a
+本地一星期中每天的名称的缩写(Sun..Sat)
+.IP A
+本地一星期中每天的全名,可变长度 (Sunday..Saturday)
+.IP b
+本地每月的名称的缩写 (Jan..Dec)
+.IP B
+本地每月的全名,可变长度 (January..December)
+.IP c
+本地的日期和时间表示 (Sat Nov 04 12:02:33 EST 1989)
+.IP d
+一个月当中的日子 (01..31)
+.IP D
+日期 (mm/dd/yy)
+.IP h
+与 b 相同
+.IP j
+一年当中的日子 (001..366)
+.IP m
+月份 (01..12)
+.IP U
+以星期日作为每周起始,一年当中的星期 (00..53)
+.IP w
+一星期当中的日子 (0..6)
+.IP W
+以星期一当作每周起始,一年当中的星期 (00..53)
+.IP x
+本地的日期表示 (mm/dd/yy)
+.IP y
+年份的最后两位 (00..99)
+.IP Y
+年份 (1970...)
+.RE
+.IP %b
+文件大小,以512字节的块为单位 (四舍五入)。
+.IP %c
+文件状态最后一次修改的时间。格式是C函数 `ctime' 返回值的格式。
+.IP %C\fIk\fP
+文件状态最后一次修改的时间。格式以 \fIk\fR 指定,类似于%A。
+.IP %d
+文件在目录树中的深度;0 意味着文件是一个命令行参数。
+.IP %f
+去掉了前面的目录的文件名 (只剩下最后的成分)。
+.IP %F
+文件所在文件系统的类型;这个值可以为 \-fstype 所用。
+.IP %g
+文件的组名,如果组没有名称就是数字形式的组ID。
+.IP %G
+文件的数字形式的组ID。
+.IP %h
+文件名的前面的目录部分 (仅除去最后的成分)。
+.IP %H
+据以找到了文件的命令行参数。
+.IP %i
+文件的 i 结点号(16进制)。
+.IP %k
+文件大小,以1kB 的块为单位 (四舍五入)。
+.IP %l
+符号链接的目标 (如果文件不是一个符号链接,那么结果是空字符串)。
+.IP %m
+文件的权限位 (8进制)。
+.IP %n
+文件的硬连接数。
+.IP %p
+文件名。
+.IP %P
+文件名,去掉了据以找到了文件的命令行参数的名称部分。
+.IP %s
+文件大小,以字节为单位。
+.IP %t
+文件最后一次修改的时间。格式是C函数 `ctime' 返回值的格式。
+.IP %T\fIk\fP
+文件最后一次修改的时间。格式以 \fIk\fR 指定,类似于%A。
+.IP %u
+文件的用户名,如果用户没有名称就是数字形式的用户ID。
+.IP %U
+文件的数字形式的用户ID。
+.PP
+在一个 `%' 字符后面使用任何其他字符,`%' 将被忽略 (但是其他字符会被打印出来)。
+.RE
+.IP \-prune
+如果没有给出 \-depth 则返回 true; 不进入当前目录。
+.br
+如果给出了 \-depth 则返回false; 没有效果。
+.IP \-ls
+返回true;以 `ls \-dils' 格式在标准输出列出文件。块以1kB 字节为单位计数,除非设置了环境变量POSIXLY_CORRECT,那样的话会使用 512字节的块。
+.SS 运算符 OPERATORS
+.P
+以优先级高低顺序排列:
+.IP "( \fIexpr\fR )"
+强制为优先
+.IP "! \fIexpr\fR"
+如果 \fIexpr\fR 是false则返回true
+.IP "\-not \fIexpr\fR"
+与 ! \fIexpr\fR 相同
+.IP "\fIexpr1 expr2\fR"
+与 (隐含的默认运算符);如果 \fIexpr1\fR 为false则不会执行 \fIexpr2\fR
+.IP "\fIexpr1\fR \-a \fIexpr2\fR"
+与 \fIexpr1 expr2\fR 相同
+.IP "\fIexpr1\fR \-and \fIexpr2\fR"
+与 \fIexpr1 expr2\fR 相同
+.IP "\fIexpr1\fR \-o \fIexpr2\fR"
+或;如果 \fIexpr1\fR 为true 则不会执行 \fIexpr2\fR
+.IP "\fIexpr1\fR \-or \fIexpr2\fR"
+与 \fIexpr1\fR \-o \fIexpr2\fR 相同
+.IP "\fIexpr1\fR , \fIexpr2\fR"
+列表;\fIexpr1\fR 和 \fIexpr2\fR 都会被执行。\fIexpr1\fR 的值被忽略,列表的值是 \fIexpr2\fR的值
+.SH "参见 SEE ALSO"
+\fBlocate\fP(1L), \fBlocatedb\fP(5L), \fBupdatedb\fP(1L), \fBxargs\fP(1L)
+\fBFinding Files\fP (Info 在线帮助, 或者是打印的版本)
+
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 11/01/2003
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/findsmb.1 b/src/man1/findsmb.1
new file mode 100644
index 0000000..25c44d9
--- /dev/null
+++ b/src/man1/findsmb.1
@@ -0,0 +1,73 @@
+.TH findsmb1 Samba2 May2000
+
+
+.SH NAME
+findsmb - 列出在子网上响应SMB名称查询的主机信息
+
+.SH SYNOPSIS 总览
+findsmb [子网广播地址]
+
+.SH 描述
+此perl脚本是Samba组件的一部分。
+
+findsmb是个用于打印出关于子网中响应SMB名字查询请求的主机信息的perl脚本。实际上它是通
+过使用nmblookup和smbclient来获得这些信息的。
+
+
+.SH 选项
+
+  如果不使用子网广播地址这个选项的话,findsmb将自行探测运行命令本身的主机所在的子网。
+  该值将会传递给nmblookup作为它的-B选项的一部分。
+
+.SH 示例
+
+findsmb的输出可以列出响应任何初始nmblookup名字查询的所有主机的以下信息:IP地址、NetBIOS
+名、工作组名、操作系统和SMB服务器版本。
+
+在列表中,如果某台主机为其所在工作组的本地主浏览器的话,该主机后跟的工作组名前会被
+标上“+”号。而如果某台主机为其所在工作组的主域浏览器的话,那么该主机后跟的工作组名
+前会被标上“*”号。那些运行Windows、Windows 95 或 Windows 98的主机将不显示任何操作
+系统或服务器版本的信息。
+
+该命令必须运行在没有nmbd正在运行的系统上。否则,你将只得到主机的IP地址和DNS名。要得
+到Windows 95 和 Windows 98主机的正确响应,必须以root身份运行该命令。
+
+例如运行:
+
+findsmb 
+在一台当前没有nmbd运行的主机上就会产生如下的信息:
+.nf
+IP ADDR         NETBIOS NAME   WORKGROUP/OS/VERSION 
+--------------------------------------------------------------------- 
+192.168.35.10   MINESET-TEST1  [DMVENGR]
+192.168.35.55   LINUXBOX      *[MYGROUP] [Unix] [Samba 2.0.6]
+192.168.35.56   HERBNT2        [HERB-NT]
+192.168.35.63   GANDALF        [MVENGR] [Unix] [Samba 2.0.5a for IRIX]
+192.168.35.65   SAUNA          [WORKGROUP] [Unix] [Samba 1.9.18p10]
+192.168.35.71   FROGSTAR       [ENGR] [Unix] [Samba 2.0.0 for IRIX]
+192.168.35.78   HERBDHCP1     +[HERB]
+192.168.35.88   SCNT2         +[MVENGR] [Windows NT 4.0] [NT LAN Manager 4.0]
+192.168.35.93   FROGSTAR-PC    [MVENGR] [Windows 5.0] [Windows 2000 LAN Manager]
+192.168.35.97   HERBNT1       *[HERB-NT] [Windows NT 4.0] [NT LAN Manager 4.0]
+.fi
+.SH 版本
+
+此手册页是针对samba套件版本2.0的。
+
+.SH 另见
+nmblookup (1), smbclient (1) 
+
+.SH 作者
+该perl脚本是由SGI的Herb Lewis所开发。
+
+samba软件和相关工具最初由Andrew Tridgell samba-bugs at samba.org创建。samba现在
+由开发组作为类似Linux内核开发采用的开放源代码计划方式来发展。
+
+请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。
+
+.SH [中文版维护人] 
+meaculpa <meaculpa at 21cn.com>
+.SH [中文版最新更新] 
+2001/02/24
+.SH 《中文MAN-PAGE计划》:
+http://cmpp.linuxforum.net
diff --git a/src/man1/finger.1 b/src/man1/finger.1
new file mode 100644
index 0000000..ffd46c4
--- /dev/null
+++ b/src/man1/finger.1
@@ -0,0 +1,164 @@
+.\" Copyright (c) 1989, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)finger.1	6.14 (Berkeley) 7/27/91
+.\"
+.Dd August 15, 1999
+.Dt FINGER 1
+.Os "Linux NetKit (0.16)"
+.Sh NAME
+.Nm finger
+.Nd 用户信息查找程序
+.Sh 总览
+.Nm finger
+.Op Fl lmsp
+.Op Ar user ...
+.Op Ar user at host ...
+.Sh 描述
+The
+.Nm finger
+显示关于系统用户的信息
+.Pp
+参数:
+.Bl -tag -width flag
+.It Fl s
+.Nm Finger
+显示用户的登录名, 真名, 终端名 以及写
+状态(如果写被禁止,在终端名后显示一个``*''),
+空闲时间,登录时间,办公地点和电话等。
+.Pp
+登录时间显示为月,天,小时和分钟,如果是超过6个月以前,则
+显示年份,而不是小时和分钟。
+.Pp
+不明设备以及不存在的空闲时间和登录时间显示为一个星号。
+.Pp
+.It Fl l
+产生一个多行显示来描述信息
+.Fl s
+关于用户家目录,家庭电话,登录脚本,邮件状态和文件的内容
+.Dq Pa .plan
+和
+.Dq Pa .project
+和
+.Dq Pa .forward
+从用户的家目录.
+.Pp
+11位数字电话号码显示为 ``+N-NNN-NNN-NNNN''.
+十位或七位数字可以显示为它的子集。
+五位数字电话号码显示为 ``xN-NNNN''.
+四位数字电话号码显示为 ``xNNNN''.
+.Pp
+如果对设备写被禁止, 短语 ``(messages off)''
+被附加在有此设备的行后边.
+每一个用户有一个条目,用
+.Fl l
+选项; 如果一个用户多次登录, 终端信息
+按每次登录重复显示。.
+.Pp
+如果什么邮件都没有,邮件信息显示为``No Mail.'', 如果当新邮件来后,
+已经查看过信箱,为``Mail last read DDD MMM ## HH:MM YYYY (TZ)'' 
+如果有新邮件,则为 ``New mail received ...'',``  Unread since ...''
+.Pp
+.It Fl p
+防止
+.Nm finger
+.Fl l
+选项
+显示
+.Dq Pa .plan
+ 和
+.Dq Pa .project
+文件的内容。
+.It Fl m
+防止
+.Ar user
+名字的匹配.
+.Ar User
+通常是一个登录名; 可是, 也会对用户的真实名字
+进行匹配, 除非提供
+.Fl m
+选项.
+所有由
+.Nm finger
+进行的名字匹配是区分大小写的
+.El
+.Pp
+不指定
+.Nm finger
+的选项
+如果提供操作者的话,
+缺省设为
+.Fl l
+输出风格,否则为
+.Fl s
+风格.
+注意在两种格式中,如果信息不足,
+都有一些域可能丢失,
+.Pp
+如果没有指定参数
+.Nm finger
+会为当前登录的每个用户打印一个条目.
+.Pp
+.Nm Finger
+可以用来查看远地机器上的用户信息
+格式是指定
+.Ar user
+为
+.Dq Li user at host ,
+或
+.Dq Li @host ,
+前者的缺省输出为
+.Fl l
+风格, 后者的缺省输出为
+.Fl s
+风格.
+.Fl l
+是唯一的向远地机器传递的选项.
+.Pp
+如果标准输出是一个socket 
+.Nm finger
+会在每个换行符前插入回车符。这是为了处理由以下调用的远程finger请求
+.Xr fingerd 8 .
+.Sh 参见 
+.Xr chfn 1 ,
+.Xr passwd 1 ,
+.Xr w 1 ,
+.Xr who 1
+.Sh 历史 
+.Nm finger
+命令出现在
+.Bx 3.0 
+.Sh "[中文版维护人]"
+hunter77 <tzb at kali.com.cn>
+.Sh "[中文版最新更新]"
+2001/04/01
+.Sh "《中国linux论坛man手册页翻译计划》:"
+http://cmpp.linuxforum.net
diff --git a/src/man1/fmt.1 b/src/man1/fmt.1
new file mode 100644
index 0000000..187c180
--- /dev/null
+++ b/src/man1/fmt.1
@@ -0,0 +1,69 @@
+.TH FMT "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+fmt \- 简易的文本格式优化工具
+simple optimal text formatter
+.SH "总览 (SYNOPSIS)"
+.B ../src/fmt
+[\fI-DIGITS\fR] [\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+重新 格式化 文件 FILE(s) 中的 每一个 段落, 结果 写到 标准输出.
+如果 文件 FILE 不存在, 或者 FILE 是 '-', 就从 标准输入 读取 数据.
+.PP
+长选项 后面的 参数 对于 短选项 形式 也是 必须的.
+.TP
+\fB\-c\fR, \fB\-\-crown\-margin\fR
+保持 前两行 的 缩排形式
+.TP
+\fB\-p\fR, \fB\-\-prefix\fR=\fISTRING\fR
+只处理 STRING 起始 的 行
+.TP
+\fB\-s\fR, \fB\-\-split\-only\fR
+断裂 长行, 而且 不再 合并 短行
+.TP
+\fB\-t\fR, \fB\-\-tagged\-paragraph\fR
+首行 的 缩排 和 第二行 不同
+.TP
+\fB\-u\fR, \fB\-\-uniform\-spacing\fR
+单词 之间 有 一个 空格, 句子 之间 两个 空格
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fINUMBER\fR
+最大行宽 (缺省为 75 列)
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 退出.
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 退出.
+.PP
+在 \fB\-wNUMBER\fR 选项 中, 字母 `w' 可以 省略.
+.SH "作者 (AUTHOR)"
+Ross Paterson.
+.SH "报告 BUGS"
+发现 的 错误 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B fmt
+的 完整 文档 以 Texinfo 手册 形式 维护. 如果 正确 安装 了
+.B info
+和
+.B fmt
+程序, 用 命令
+.IP
+.B info fmt
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/17
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man1/fold.1 b/src/man1/fold.1
new file mode 100644
index 0000000..90be233
--- /dev/null
+++ b/src/man1/fold.1
@@ -0,0 +1,54 @@
+.TH FOLD "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+fold \- 折叠输入行, 使其适合指定的宽度
+.SH "总览 (SYNOPSIS)"
+.B ../src/fold
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+折叠(wrap) 每个 文件 FILE 中 的 输入行 (缺省为 标准输入), 结果 写到 标准输出.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR
+计数 字节 而不是 列 (column)
+.TP
+\fB\-s\fR, \fB\-\-spaces\fR
+在 空格 处 断开
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fIWIDTH\fR
+使用 WIDTH 取代 80 列
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.SH "作者 (AUTHOR)"
+David MacKenzie.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B fold
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B fold
+程序, 使用 命令
+.IP
+.B info fold
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/17
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man1/free.1 b/src/man1/free.1
new file mode 100644
index 0000000..1e8317d
--- /dev/null
+++ b/src/man1/free.1
@@ -0,0 +1,58 @@
+.\"             -*-Nroff-*-
+.\"  This page Copyright (C) 1993 Matt Welsh, mdw at sunsite.unc.edu.
+.\"  Freely distributable under the terms of the GPL
+.TH FREE 1 "20 Mar 1993 " "Cohesive Systems" "Linux User's Manual"
+.SH NAME
+free \- 显示系统中已用和未用的内存空间总和.
+
+.SH 总览 (SYNOPSIS)
+.BR "free " [ "\-b" " | " "\-k" " | " "\-m" "] [" "\-o" "] [" "\-s"
+.I delay
+.RB "] [" "\-t" "] [" "\-V" ]
+
+.SH 描述 (DESCRIPTION)
+\fBfree\fP 显示 系统中 已用和未用的 物理内存和交换内存, 共享内存和
+内核使用的 缓冲区的 总和.
+
+.SH 选项 (Options)
+\fB-b\fP 选项 以字节为单位 显示 内存总和; \fB-k\fP 选项 (缺省的) 
+以 KB 为单位 显示; \fB-m\fP 选项 以 MB 为单位.
+
+.PP
+\fB-t\fP 选项 显示 一个 总计行.
+
+.PP
+\fB-o\fP 选项 禁止 "buffer adjusted" 行的显示. 除非 指定 \fBfree\fP 从
+(相应的) 已用/未用的 内存 减去/加上 缓冲区内存.
+
+.PP
+\fB-s\fP 使 \fBfree\fP 以 \fIdelay\fP 秒为间隔, 连续抽样显示. \fIdelay\fP 
+可以设置成浮点数, 它用
+.BR usleep (3)
+做 微秒级 延迟.
+
+.PP
+\fB\-V\fP 显示版本信息.
+
+.SH 文件 (FILES)
+.ta
+.IR /proc/meminfo "\-\- 内存信息"
+.fi
+
+.SH 另见
+.BR ps (1),
+.BR top(1)
+
+.SH 作者
+由 Brian Edmonds 编写
+
+Bug 报告寄给 <procps-bugs at redhat.com>
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/12/17
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man1/ftp.1 b/src/man1/ftp.1
new file mode 100644
index 0000000..0e2a4dd
--- /dev/null
+++ b/src/man1/ftp.1
@@ -0,0 +1,948 @@
+.\" Copyright (c) 1985, 1989, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)ftp.1	6.18 (Berkeley) 7/30/91
+.\"
+.\"
+.\"  参考了几个其它版本的 ftp man page, 开头的版权声明、日期都是一样的,
+.\"  只具体内容稍有不同. 为方便起见, 本文英文原稿使用 cmpp cvs 上的 ftp.1.
+.\"  本文的英文原稿写的非常简洁、准确. 本人水平有限, 许多地方看不明白;
+.\"  而且翻译时采用意译, 比起英文原稿来, 译文也显得不够严谨.
+.\"  错误、不足之处实在太多, 还望各位指正.
+.\"     译者 sliant at 21cn.com, 2001-11-11,
+.\"     while missing Xie-WenMin ,
+.\"     while missing Xie-WenMin .
+.Dd August 15, 1999
+.Dt FTP 1
+.Os "Linux NetKit  (0.16) "
+.Sh 名称 (NAME)
+.Nm ftp
+.Nd
+.Tn Internet
+文件传输程序 (file transfer program)
+.Sh 概述 (SYNOPSIS)
+.Nm ftp
+.Op Fl pinegvd
+.Op Ar host
+.Nm pftp
+.Op Fl inegvd
+.Op Ar host
+.Sh 说明 (DESCRIPTION)
+用户通过
+.Nm Ftp
+这个程序来使用
+.Tn Internet
+上的标准文件传输协议 (File Transfer  Protocol).
+本程序允许用户向远端网站发送文件, 或从远端网站接收文件.
+.Pp
+参数选项可以在命令行启动ftp时指定, 也可以在ftp命令解释模式下输入.
+.Bl -tag -width flag
+.It Fl p
+使用被动模式进行数据传输. 如果你本地网络有防火墙,
+外部主机不能连接到你这个客户端, 这个选项就派上用场了.
+本选项要求 ftp 服务器支持 PASV 命令.
+如果使用 pftp 从命令行启动 ftp, 本选项是默认打开的.
+.It Fl i
+进行多个文件传输时关掉交互式的确认提示.
+.It Fl n
+一般,在启动 ftp 时, ftp 会试着进行自动登录. 本选项可以关掉这个功能.
+如果 auto-login 功能被启用的话,  ftp 会在用户 home 目录下的 .netrc
+(参阅
+.Xr netrc 5)
+文件中查找远端主机上的用户帐号.
+如果 .netrc 文件中用户帐号这一项不存在,
+ftp 会提示用户输入远端主机上的登录名 (缺省为用户在本地机器上的帐号),
+如果需要, 还会提示你输入密码和用来登录的帐号. ??
+.Pp
+(译者注: 使用本选项, 可以实现所谓的 "非交互式登录".
+你可以试试下面这条命令:
+.Pp
+echo open ftp_server "\\n" user my_name my_password "\\n" dir "\\n" bye | ftp -n
+不能使用 rcp 的时候, 可以用这条 ftp 命令来代替.)
+.It Fl e
+如果被编译成了 ftp 可执行格式, 本选项会关掉命令编辑和历史命令功能;
+否则什么也不做. ??
+.It Fl g
+关掉文件名匹配功能.
+.It Fl v
+显示详细信息. 本选项使得 ftp 显示远端服务器的所有响应,
+并在数据传输完成后显示传输数据的统计信息.
+.It Fl d
+打开 debug 模式.
+.El
+.Pp
+从命令行启动
+.Nm ftp
+时, 可指定欲与之通讯的远端主机. 如果指定了,
+.Nm ftp
+会立即尝试与远端
+.Tn FTP
+服务器建立连接; 否则,
+.Nm ftp
+会进入其命令解释模式, 等待用户进一步的指令.
+.Nm ftp
+在等待用户指令时, 会显示提示符
+.Ql ftp>
+.Pp
+.Nm ftp
+能够识别以下的命令:
+.Bl -tag -width Fl
+.It Ic \&! Op Ar command Op Ar args
+在本地机器上启动一个交互的shell. 如果本命令带有参数,
+第一个参数作为 shell 命令直接执行, 其它的参数成为这个 shell 命令的参数.
+.It Ic \&$ Ar macro-name Op Ar args
+执行宏
+.Ar macro-name
+所指代的命令. 宏使用
+.Ic macdef
+命令来定义. 本命令中的参数不进行文件名匹配, 直接传给这个宏.
+.It Ic account Op Ar passwd
+在你成功登录以后, 本命令可以提供一个附加的密码,
+远端系统会用这个密码来访问某些资源.
+如果不指定参数, 则会提示用户输入密码;
+输入密码时, 回显会被禁止.
+.It Ic append Ar local-file Op Ar remote-file
+添加本地文件到远端机器上. 如果没有指定
+.Ar remote-file,
+则本地文件名在经过
+.Ic ntrans
+或
+.Ic nmap
+转换后, 作为远端文件名使用.
+在文件传输过程中还会使用
+.Ic type,
+.Ic forma,
+.Ic mode
+和
+.Ic structure
+的当前设置.
+.It Ic ascii
+将当前文件传输方式设置为网络
+.Tn ASCII
+方式, 即文本模式.
+这也是缺省的文件传送方式.
+.It Ic bell
+每个文件传送命令完成后响铃提示.
+.It Ic binary
+将当前文件传输方式设置为 binary image, 即二进制模式.
+.It Ic bye
+终止与当前
+.Tn FTP
+服务器的连接, 退出
+.Nm ftp.
+文件结束符 (译者注: ctrl-D) 有同样的功能.
+.It Ic case
+转换 case 状态, 即远端主机文件名大小写转换规则.
+.Ic mget
+命令会中用到本状态.
+.Ic case
+状态若为 on, 远端主机文件传输到本地时,
+文件名中的大写字母会被转换为小写. 缺省的 case 状态为 off.
+(译者注: toggle 这个词我翻译成转换. 意思是说,
+如果当前 case 状态为 on, 你执行 case 这个命令,
+case 状态就转成了 off; 如果当前为 off, 则会变成 on. 下同.)
+.It Ic \&cd Ar remote-directory
+改变远端机器上的当前目录到
+.Ar remote-directory.
+.It Ic cdup
+改变远端机器上的当前目录到其父目录, 即其上级目录.
+.It Ic chmod Ar mode file-name
+将远端系统上文件
+.Ar file-name
+的权限改为
+.Ar mode.
+.It Ic close
+终止与当前远端服务器的
+.Tn FTP
+连接, 回到命令解释模式. 所有定义的宏都会被清除.
+.It Ic \&cr
+转换 cr 状态, 即 ascii 方式下取文件时的回车换行转换规则.
+用 ascii 方式获取文件时, 文件内容被分割为一条条纪录, 以回车换行符为分隔符;
+如果
+.Ic \&cr
+状态为 on, 回车换行符会被转换为
+.Ux
+系统的单个换行符.
+非
+.Ux
+系统的文本文件中可能含有单个换行符; 在进行 ascii 方式的文件传输时,
+只有将
+.Ic \&cr
+状态设置为 off, 这些单个换行符才能与回车换行符区分开来.
+.Ic \&cr
+的缺省状态为 on.
+(译者注: 回车符的 ASCII 码为 0D, 对应的 C 语言转义字符为 \\r;
+换行符的 ASCII 码为 0A , 对应的 C 语言转义字符为 \\n;
+UNIX 下的文本文件, 换行的时候就一个换行符;
+DOS  下的文本文件, 换行的时候是两个字符: 回车 + 换行.
+服务器端 ftpd 在用 ascii 方式发送文件时,
+会先把单个换行转换为回车 + 换行, 再送到网络上传输;
+客户端 ftp 在用 ascii 方式接受文件时, 如果 cr 状态为 on,
+ftp 会把回车 + 换行转换为单个换行; 如果为 off,
+则不进行这种转换. 如果网上传输的数据中同时含有单个换行和回车 + 换行,
+你就一定要把 cr 状态设为 off, 才能把数据原样取回来;
+否则, 取回来的单个换行和回车 + 换行都转换成了单个换行,
+你就分不清这两种了. 还是使用 binary 最好.)
+.It Ic delete Ar remote-file
+删除远端机器上的文件
+.Ar remote-file.
+.It Ic debug Op Ar debug-value
+转换 debugging 状态, 即是否跟踪每条指令.
+.Ar debug-value
+是可选的, 其值用来设置跟踪的级别.
+当 debigging 状态为 on 时,
+.Nm ftp
+会显示每条送往远端机器的指令, 并在显示的指令前加上
+.Ql \-\->
+.It Xo
+.Ic dir
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+显示远端机器目录
+.Ar remote-director
+下的文件名.
+.Ar local-file
+这个参数是可选的.
+如果指定了这个参数, 本命令的显示结果会保存在
+.Ar local-file
+这个本地文件中.
+如果 prompt 状态为 on,
+.Nm ftp
+会提示用户确认最后这个参数是用来存放
+.Ic dir
+显示结果的本地文件. 如果不指定
+.Ar remote-director,
+则本命令显示远端机器当前目录下的文件名.
+如果不指定
+.Ar local-file,
+或
+.Ar local-file
+指定为
+.Fl ,
+则输出结果显示在你的终端上.
+.It Ic disconnect
+同
+.Ar close.
+.It Ic form Ar format
+将文件传输格式设置为
+.Ar format.
+缺省格式为 \*(Lqfile\*(Rq. ??
+.It Ic get Ar remote-file Op Ar local-file
+把远端机器上的文件
+.Ar remote-file
+取回到本地.
+如果不指定本地文件名, 则远端文件名在经过
+.Ic case,
+.Ic ntrans
+和
+.Ic nmap
+转换后, 作为本地文件名使用. 文件传输过程中会用到当前的
+.Ic type,
+.Ic form,
+.Ic mode,
+和
+.Ic structure
+状态.
+.It Ic glob
+转换 glob 状态, 即在执行
+.Ic mdelete,
+.Ic mget
+和
+.Ic mput
+命令时, 是否进行文件名匹配. 如果 glob 状态为 off,
+则不进行文件名匹配.
+对
+.Ic mput
+而言, 文件名匹配规则和本地的
+.Xr csh 1
+文件名匹配一样.
+对
+.Ic mdelete
+和
+.Ic mget
+而言, 每个远端机器文件名都分别在远端机器上进行匹配,
+匹配结果中的同名文件不会合并.
+目录名匹配规则和文件名匹配规则不尽相同,
+具体结果要取决于远端系统和 ftp 服务程序.
+你可以使用
+.Ql mls remote-files \-
+预先看看匹配结果是否如你所愿.
+注意:
+.Ic mget
+和
+.Ic mput
+可能不会传送子目录. 想连着子目录一起传送, 你可以使用 binary
+方式传送这个子目录的
+.Xr tar 1
+包.
+(译者注:
+1、
+文件匹配是说, *n 代表所有以 n 结尾的文件.
+例如, 在你本地 linux 机器当前目录下有三个文件 Xie Wen Min ,
+在 shell 下用 echo *n 这条命令, 结果为 Wen Min ,
+可见 *n 被 shell 匹配为 Wen Min.
+在 ftp 中, 如果 glob 为 on ,
+mput *n 这条指令会被匹配为 mput Wen Min ,
+本地的 Wen Min 两个文件被传送到远端.
+如果 glob 为 off ,
+mput *n 这条指令不会被匹配,
+于是 mput 会试图把文件名为 "*n" 的本地文件传到远端,
+如果本地没有这个名为 "*n" 的文件, ftp 就会报错.
+2、
+mput 是把本地文件送到远端机器, 故其匹配规则与本地 shell的文件名匹配一致.
+mget, mdelete 则是把远端机器上的文件送到本地,
+故其匹配规则和最终结果要取决于远端系统.
+3、
+考虑如下情况: 远端机器上有三个文件 Xie, Wen, Min
+如果执行 mget X* W* *n,
+显然, 匹配结果会是 Xie Wen Min Wen.
+虽然 Wen 这个文件出现了两次,
+但 ftp 不会把这两个文件名合为一个,
+所以 Wen 这个文件会被 mget 两次, 第二次覆盖第一次.
+如果 mdel X* W* *n, Wen 这个文件会被删两次, 第二次报错.)
+.It Ic hash
+转换 hash 状态, 即是否显示数据传输进度. 如果 hash 状态为 on,
+每传送完一个 1024 字节的数据块时显示一个 # 号.
+.It Ic help Op Ar command
+显示指定命令
+.Ar command
+的简要说明. 如果不指定参数, 本命令列出所有已知的
+.Nm ftp
+命令.
+.It Ic idle Op Ar seconds
+将远端服务器的最长空闲时间设为
+.Ar seconds
+秒.
+如果不指定参数
+.Ar seconds,
+则本命令显示当前的最长空闲时间值.
+(译者注:如果在最长空闲时间内没执行任何 ftp 命令,
+与远端机器的连接将自动终止. )
+.It Ic lcd Op Ar directory
+改变本地的当前工作目录. 如果不指定参数
+.Ar directory,
+则切换到用户的 home 目录.
+.It Xo
+.Ic \&ls
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+显示远端机器目录下的文件名列表. 具体如何显示与远端系统有关;
+例如, 大多数
+.Ux
+系统显示 shell 命令 ls -l 的输出 (参阅 nlist ).
+如果不指定
+.Ar remote-directory
+则显示远端机器当前目录的内容.
+如果 prompt 状态为 on ,
+.Nm ftp
+会提示用户确认最后一个参数是用来存放
+.Ic \&ls
+显示结果的本地文件. 如果不指定
+.Ar local-file
+, 或者
+.Ar local-file
+指定为
+.Sq Fl ,
+则结果显示到用户终端上. 可以在本命令中用引号指定附加参数.
+例如, 如果远端系统为
+.Ux ,
+则 ls "-rt /usr" 这条命令会显示远端机器 /usr 这个目录下的文件,
+显示结果按创建时间由远到近排序.
+.It Ic macdef Ar macro-name
+定义一个宏. 执行本命令后, 接下来输入的内容会存放到宏
+.Ar macro-name
+里. 空行 (文件中的连续换行, 或终端的回车换行) 表示宏定义结束.
+最多只能定义 16 条宏, 而且所有的宏内容加起来不能超过 4096 字节.
+执行
+.Ic close
+命令后所有的宏定义会被清除.
+在宏中, $ 和 \e 这两个字符为特殊字符.
+$ 字符后跟数字, 将在这个宏在执行时将替换为命令行中的参数.
+$ 字符后跟字符 i , 表示循环执行当前宏.
+在循环的第一次, $i 被替换为命令行中的第一个参数;
+第二次, 替换为第二个参数, 以此类推.
+\e 后面跟一个字符, 表示这个字符本身.
+例如, \e 可以去掉 $ 的特殊意义, 表示 $ 这个字符本身.
+.It Ic mdelete Op Ar remote-files
+删除远端机器文件
+.Ar remote-files.
+.It Ic mdir Ar remote-files local-file
+和
+.Ic dir
+命令相似, 但是允许你指定多个远端文件. 如果 prompt 状态为 on,
+.Nm ftp
+会提示用户确认最后一个参数是用来存放输出结果的本地文件.
+.It Ic mget Ar remote-files
+匹配参数
+.Ar remote-files
+中指定的远端文件名, 对匹配结果里的每个文件都执行一个
+.Ic get
+命令. 关于文件名匹配, 请参阅
+.Ic glob
+命令. 根据当前的
+.Ic case,
+.Ic ntrans,
+和
+.Ic nmap
+状态, 远端文件名在经过适当的转换后, 作为本地文件名使用.
+文件被传输到本地机器的当前目录. 你可以用
+.Ql lcd directory
+命令改变本地机器的当前目录, 也可以用
+.Ql "\&! mkdir directory"
+命令新建本地目录.
+.It Ic mkdir Ar directory-name
+在远端机器上创建目录.
+.It Ic mls Ar remote-files local-file
+和
+.Ic nlist
+命令相似, 但是允许你指定多个远端文件, 而且
+.Ar local-file
+这个参数必须指定. 如果 prompt 状态为 on,
+.Nm ftp
+会提示用户确认最后一个参数是用来存放输出结果的本地文件.
+.It Ic mode Op Ar mode-name
+将文件传输模式设置为
+.Ar mode-name
+所指定的模式. 缺省模式为 \*(Lqstream\*(Rq 模式. ??
+.It Ic modtime Ar file-name
+显示远端机器上文件的最后修改时间.
+.It Ic mput Ar local-files
+匹配参数中指定的本地文件名, 对匹配结果里的每个文件都执行一个
+.Ic put
+命令. 关于文件名匹配, 请参阅
+.Ic glob
+命令. 根据当前的
+.Ic ntrans
+和
+.Ic nmap
+状态, 本地文件名在经过适当的转换后, 作为远端文件名使用.
+.It Ic newer Ar file-name Op Ar local-file
+比较远端文件和本地文件的修改时间, 如果远端文件比本地文件新,
+或本地文件不存在, 则从远端机器上取此文件.
+.It Xo
+.Ic nlist
+.Op Ar remote-directory
+.Op Ar local-file
+.Xc
+显示远端机器上指定目录下的文件列表.
+如果不指定参数
+.Ar remote-directory,
+则显示远端机器当前目录的内容.
+如果 prompt 状态为 on,
+.Nm ftp
+会提示用户确认最后一个参数是用来存放显示结果的本地文件.
+如果不指定本地文件
+.Ar local-file,
+或者本地文件
+.Ar local-file
+指定为
+.Sq Fl,
+显示结果会在用户终端上显示出来.
+.It Ic nmap Op Ar inpattern outpattern
+设置或取消文件名映射机制. 如果不指定参数, 则本命令取消文件名映射机制.
+如果指定了参数, 则在执行
+.Ic mput
+或
+.Ic put
+命令, 且不指定远端文件名时, 远端文件名会被映射;
+在执行
+.Ic mget
+或
+.Ic get
+命令, 且不指定本地文件名时, 本地文件名会被映射.
+非 unix 的远端系统常使用不同于 unix 的文件命名规则,
+当用 ftp 连接到这样的远端系统时, 本命令会很有用处.
+转换规则由参数
+.Ar inpattern
+和
+.Ar outpattern
+决定.
+一个文件名会先经过
+.Ic ntrans
+和
+.Ic case
+的转换, 再按照
+.Ar inpattern
+进行
+.Ic nmap
+映射. 参数
+.Ar inpattern
+指定转换前的文件命名规则. 参数
+.Ar outpattern
+指定转换后的文件命名规则. 在
+.Ar inpattern
+和
+.Ar outpattern
+这两个参数中, 用 $1, $2, ..., $9 来替代变量; 用 \e$ 替代 $ 字符;
+其余的字符则没有特殊含义. 例如, 若
+.Ar inpattern
+为 $1.$2, 则对于文件名 mydata.data, $1 取值 mydata, $2取值 data.
+结果文件名由
+.Ar outpattern
+决定. 在
+.Ar outpattern
+中, $1, $2, ..., $9 被相应的取值代替, 作为最终结果.
+$0 被替换为整个原始文件名. 对方括号括起来的两个变量 [$x,$y] 而言,
+若 $x 非空, 则其相当于 $x; 否则相当于 $y (以上 x,y 为数字).
+举例如下:
+输入命令行 nmap $1.$2.$3 [$1,$2].[$2,file], 则
+原始文件名 myfile.data 会被映射为 myfile.data,
+原始文件名 myfile.data.old 会被映射为 myfile.data,
+原始文件名 myfile 会被映射为 myfile.file,
+原始文件名 .myfile 会被映射为 myfile.myfile,
+Spaces may be included in
+.Ar outpattern,
+as in the example: `nmap $1 sed "s/  *$//" > $1' . ??
+(译者注: 这一段我没看懂, 也没试出来.)
+`$', '[', ']', `,' 这四个字符有特殊含义, 所以若要使用这四个字符,
+需在前面加上 \\ 以去掉其特殊含义.
+.It Ic ntrans Op Ar inchars Op Ar outchars
+设置或取消文件名字符转换机制. 如果不指定参数,
+则本命令取消文件名字符转换机制. 如果指定了参数, 则在执行
+.Ic mput
+和
+.Ic put
+命令, 且不指定远端文件名时, 远端文件名中的字符会被转换;
+在执行
+.Ic mget
+和
+.Ic get
+命令, 且不指定本地文件名时, 本地文件名中的字符会被转换.
+非 unix 的远端系统常使用不同于 unix 的文件命名规则,
+用 ftp 连接到这样的远端系统时, 本命令会很有用处.
+原始文件名中的
+.Ar inchars
+会被替换为对应的
+.Ar outchars.
+如果 inchar 字符串比 outchar 长, 则多出的那一部分字符会从原始文件名中删掉.
+.It Ic open Ar host Op Ar port
+连接到指定的远端主机
+.Ar host
+.Tn FTP
+服务器. 端口号
+.Nm ftp
+是可选的; 如果指定了端口号,
+.Nm ftp
+会尝试使用这个指定的端口号连接远端
+.Tn FTP
+主机. 如果自动登陆选项
+.Ic auto-login
+是打开的话 (缺省为打开),
+.Nm ftp
+还会尝试自动登陆.  (详见下述)
+.It Ic prompt
+转换 prompt 状态, 即是否进行交互提示. 如果 prompt 状态为 on ,
+在传送多个文件时, ftp 会提示用户选择要上传或下载的文件;
+如果 prompt 状态为 off (缺省为 on),
+.Ic mget
+和
+.Ic mput
+这两个命令会不加提示地传送所有指定的文件,
+.Ic mdelete
+会不加提示地删掉所有指定的文件.
+.It Ic proxy Ar ftp-command
+在副连接上执行 ftp 命令. 本命令允许同时连接到两个远端 ftp 服务器,
+并在这两个远端服务器之间传送文件.
+(译者注: 原始的 ftp 所建立的连接为 primary control connection, 主连接;
+使用 proxy open 所建立的连接为 secondary control connection, 副连接.
+在副连接上运行 ftp 命令, 即在 ftp 命令前加上 proxy 前缀, 如
+proxy open, proxy put 等. 以下将这种 ``proxy ftp command'' 译为 "代理命令".)
+第一个执行的代理命令应该是
+.Ic open
+命令, 用来建立副连接.
+运行 "proxy ?" 命令, 可以看到所有能在副连接中运行的 ftp 命令.
+以下的 ftp 命令在副连接中运行时, 效果与在主连接中不同:
+在自动登录过程中,
+.Ic open
+不会定义新的宏;
+.Ic close
+不会清除已有的宏定义;
+.Ic get
+和
+.Ic mget
+将文件从主连接的远端主机传送到副连接的远端主机;
+.Ic put  ,
+.Ic mput ,
+和
+.Ic append
+将文件从副连接的远端主机传至主连接的远端主机.
+第三方文件传输取决于副连接的远端主机是否支持 ftp 协议中的
+.Dv PASV
+命令.
+.It Ic put Ar local-file Op Ar remote-file
+将本地文件传至远端主机. 如果不指定参数
+.Ar remote-file,
+则根据当前的
+.Ic ntrans
+和
+.Ic nmap
+状态, 本地文件名在经过适当的转换后, 作为远端文件名使用.
+在文件传输过程中会用到当前的
+.Ic type,
+.Ic format,
+.Ic mode
+和
+.Ic structure
+状态.
+.It Ic pwd
+显示远端机器的当前路径.
+.It Ic quit
+同
+.Ic bye
+命令.
+.It Ic quote Ar arg1 arg2 ...
+将你指定的参数原样送到远端
+.Tn FTP
+服务器.
+(译者注: 你输入的 ftp 命令, 经由本地 ftp 客户程序解释,
+转换成 ftp 协议命令, 再发送给远端 ftp 服务程序.
+这些转换后的 ftp 协议命令, 叫做 raw ftp command,
+也就是本命令所能使用的参数. 关于这些参数, 请参阅 remotehelp 命令.
+下文中出现的大写字母的命令都是 raw ftp command.)
+.It Ic recv Ar remote-file Op Ar local-file
+同 get 命令.
+.It Ic reget Ar remote-file Op Ar local-file
+和 get 命令相似, 略有差异如下: 如果本地文件
+.Ar local-file
+的长度比远端文件
+.Ar remote-file
+短, ftp 会认为这是由于上一次传送异常中断,
+导致本地文件只是远端文件的开头一部分,
+故 reget 会从本地文件的最后开始续传.
+在连接不稳、经常异常断掉的网络中传送大文件时, 本命令会很有用.
+.It Ic remotehelp Op Ar command-name
+显示远端
+.Tn FTP
+服务程序的帮助信息. 如果指定了参数
+.Ar command-name,
+则此参数也会一并传给远端服务器.
+.It Ic remotestatus Op Ar file-name
+如果不指定参数, 本命令显示远端机器的状态.
+如果指定了参数
+.Ar file-name,
+则显示远端文件
+.Ar file-name
+的状态.
+.It Xo
+.Ic rename
+.Op Ar from
+.Op Ar to
+.Xc
+将远端机器上的文件
+.Ar from
+重命名为
+.Ar to.
+.It Ic reset
+清除应答队列. 本命令使本地 ftp 客户和远端 ftp 服务程序
+重新同步命令/应答序列. 远端 ftp 服务程序可能出错,
+并导致 ftp 协议出现错误, 此时需要使用本命令.
+.It Ic restart Ar marker
+使用本命令后, 接下来应使用一个
+.Ic get
+或
+.Ic put
+命令; 此时的 get 或 put 命令会从参数
+.Ar marker
+指定的
+.Ux
+系统文件偏移处 (一般以字节计算) 重传文件.
+.It Ic rmdir Ar directory-name
+删除远端机器上的目录.
+.It Ic runique
+转换 runique 状态, 即本地同名文件是否自动覆盖.
+如果 runique 状态为 off, 则在使用
+.Ic get
+或
+.Ic mget
+命令取远端文件到本地时, 远端文件会自动覆盖本地的同名文件;
+如果 runique 状态为 on, 则在文件同名时, 会在取回的文件名后加一个 .1;
+如果加了一个 .1 还是与本地文件重名, 则在远端文件名后加 .2;
+若还是重名, 加 .3; 以此类推, 如果直到 .99 还重名, 则会报错.
+新文件名会显示给用户. 注意
+.Ic runique
+状态并不影响本地 shell 命令的文件覆盖.
+缺省的
+.Ic runique
+状态为 off.
+.It Ic send Ar local-file Op Ar remote-file
+同 put 命令.
+.It Ic sendport
+转换 sendport 状态, 即是否使用
+.Dv PORT
+命令. 缺省状态下,
+.Nm ftp
+每建立一个连接进行数据传送时, 都会使用一个
+.Dv PORT
+命令. 使用
+.Dv PORT
+命令可以免掉多文件传输时的延迟时间.
+如果
+.Dv PORT
+命令失败,
+.Nm ftp
+会使用缺省的数据端口. 如果禁止使用
+.Dv PORT
+命令, 则在每次进行数据传送时不会使用
+.Dv PORT
+命令. 有些版本的
+.Tn FTP
+在具体实现中忽略了
+.Dv PORT
+命令, 但却错误地应答说已经接受了
+.Dv PORT
+指令, 此时就需要使用本命令.
+.It Ic site Ar arg1 arg2 ...
+本命令将参数作为
+.Dv SITE
+命令原样传给远端
+.Tn FTP
+服务器.
+.It Ic size Ar file-name
+显示远端机器上文件
+.Ar file-name
+的大小.
+.It Ic status
+显示
+.Nm ftp
+当前的各种状态.
+.It Ic struct Op Ar struct-name
+将文件传输结构
+.Ar structure
+设置为参数
+.Ar struct-name.
+缺省取值为 stream. ??
+.It Ic sunique
+转换 sunique 状态, 即远端同名文件是否自动覆盖.
+要使用本命令, 远端的 ftp 服务程序必须支持 ftp 协议中的
+.Dv STOU
+命令. 新生成的不同的远端文件名会显示给用户.
+缺省的 sunique 状态为 off, 即自动覆盖远端同名文件.
+.It Ic system
+显示远端机器的操作系统类型.
+.It Ic tenex
+设置文件传输方式为与
+.Tn TENEX
+机器通讯所需要的方式. ??
+.It Ic trace
+转换 trace 状态, 即是否跟踪每个数据包.
+.It Ic type Op Ar type-name
+将文件传送类型
+.Ic type
+设置为
+.Ar type-name.
+如果不指定参数, 则本命令显示当前文件传送类型.
+缺省的文件传送类型是网络
+.Tn ASCII
+类型.
+.It Ic umask Op Ar newmask
+设置远端机器上的文件掩码为
+.Ar newmask.
+如果不指定参数
+.Ar newmask,
+则本命令显示当前的文件掩码.
+.It Xo
+.Ic user Ar user-name
+.Op Ar password
+.Op Ar account
+.Xc
+使用
+.Op Ar user-name
+作为用户名登录远端
+.Tn FTP
+服务器. 如果不指定参数
+.Ar password,
+而远端服务器需要提供密码, 则
+.Nm ftp
+会提示用户输入密码 (无回显); 如果不指定参数
+.Ar account,
+而远端
+.Tn FTP
+服务器需要提供账号,
+.Nm ftp
+会提示用户输入账号.
+如果指定了参数
+.Ar account,
+而在登录过程中远端 FTP 服务程序不需要账号,
+则在登录完成以后会使用一个 account 命令将账号发送给服务器.
+一般而言,
+.Nm ftp
+在启动时, 会与远端
+.Tn FTP
+服务器建立连接并自动完成以上的登录过程.
+也可以在启动
+.Nm ftp
+时使用 -n 选项禁止此自动登录功能.
+.It Ic verbose
+转换 verbose 状态, 即是否显示详细信息.
+如果 verbose 状态为 on , 则会显示远端
+.Tn FTP
+服务器的每一个响应,
+并在文件传送结束后显示关于传输效率的统计信息.
+缺省的 verbose 状态为 on .
+.It Ic ? Op Ar command
+同 help 命令.
+.El
+.Pp
+如果参数含有空格, 需用使用一对引号 "" 将其引起来.
+.Sh 放弃当前文件传送 (ABORTING A FILE TRANSFER)
+按中断键 (一般为 Ctrl-C ) 可放弃当前文件传送.
+对发送文件而言, 此时当前发送过程会立刻终止;
+对文件接收, 此时会发送一个 ftp 协议中的
+.Dv ABOR
+命令到远端服务器, 而剩下未接受的数据会被丢弃.
+这个过程有快有慢, 具体取决于远端服务器如何实现
+.Dv ABOR
+命令. 如果远端服务器不支持
+.Dv ABOR
+命令, 则服务器会继续当前文件传送, 直到传送完成, 才再显示出提示符
+.Ql ftp>.
+.Pp
+如果所有的本地操作已经完成,
+.Nm ftp
+在等待远端服务器应答时,
+不会对中断键做出响应. 如果这时候 ftp 协议出了问题,
+或如上所述远端服务器不支持 ABOR 命令而坚持把当前文件发送完,
+用户就会等待很长时间得不到响应. 如果确实是 ftp 协议出了问题,
+用户必需手工杀掉这个
+.Nm ftp
+进程.
+.Sh 文件名转换 (FILE NAMING CONVENTIONS)
+.Nm ftp
+命令中, 若指定文件名作为参数, 则此文件名会经过以下几步的处理:
+.Bl -enum
+.It
+如果指定的文件名为
+.Sq Fl ,
+则在输出时使用标准输出
+.Ar stdin,
+在输入时使用标准输入
+.Ar stdout.
+.It
+如果指定的文件名首字母是
+.Sq \&|,
+则此参数余下的部分被当作是一个 shell 命令.
+.Nm Ftp
+会使用
+.Xr popen 3
+和所提供的参数创建一个 shell 进程,
+并使用标准输入 stdin (标准输出 stdout) 来进行读 (写) 操作.
+如果 shell 命令中包含空格, 则必须用引号将其引起来; 例如: 
+"ls -lt". 一个有用的例子是: "dir | more".
+.It
+如果上述两步处理失败, 而 globbing 状态为 on , 本地文件名会进行匹配,
+匹配规则同
+.Xr csh  1
+(参阅
+.Ic glob
+命令). 如果
+.Nm ftp
+命令只需要单个的本地文件作参数 (如
+.Ic put),
+则仅使用匹配结果里的第一个文件名.
+.It
+对
+.Ic mget
+和
+.Ic get
+命令而言, 如果不指定本地文件名, 则远端文件名在经过
+.Ic case,
+.Ic ntrans,
+或
+.Ic nmap
+转换后, 作为本地文件名使用. 如果
+.Ic runique
+状态为 on,
+本地文件名还可能加上一个后缀以免覆盖.
+.It
+对
+.Ic mput
+和
+.Ic put
+命令而言, 如果不指定远端文件名, 则本地文件名在经过
+.Ic ntrans
+或
+.Ic nmap
+转换后, 作为远端文件名使用. 如果
+.Ic sunique
+状态为 on,
+远端服务器可能还会给远端文件名加上一个后缀以免覆盖.
+.El
+.Sh 文件转换参数 (FILE TRANSFER PARAMETERS)
+FTP 规格说明书中指定了许多可能影响文件传送的参数.
+.Ic type
+可设置为 ascii, image (binary), ebcdic, 或 local byte size (一般用于
+.Tn PDP Ns -10's
+和
+.Tn PDP Ns -20's
+机器).
+.Nm Ftp
+支持 ascii 和 image 类型的文件传输, 对于
+.Ic tenex
+机器, 还支持 local byte size 8 方式的文件传输.
+.Pp
+其它可能影响文件传输的参数有
+.Ic mode,
+.Ic form,
+和
+.Ic struct.
+.Nm Ftp
+只支持这些参数的缺省值.
+.Sh 环境 (ENVIRONMENT)
+.Nm Ftp
+使用了以下的环境变量:
+.Bl -tag -width Fl
+.It Ev HOME
+本环境变量指明了文件
+.Pa .netrc
+的缺省路径, 如果其存在的话.
+.It Ev SHELL
+本环境变量指明了缺省的 shell.
+.El
+.Sh 参阅 (SEE ALSO)
+.Xr ftpd 8,
+RFC 959
+.Sh 历史 (HISTORY)
+.Nm ftp
+命令最初见于
+.Bx 4.2.
+.Sh 错误 (BUGS)
+对许多 ftp 命令而言, 其能否正确执行, 取决于远端服务器如何响应.
+.Pp
+使用
+.Bx 4.2
+的 ascii 方式传送文件时, 对回车换行符的处理有错误.
+本版本中已经修正了此问题, 但同时带来了另一个问题:
+使用 ascii 方式, 与
+.Bx 4.2
+服务器互传二进制文件时可能出错.
+要避免此问题, 请使用 binary image 类型来传送文件.
diff --git a/src/man1/gcc.1 b/src/man1/gcc.1
new file mode 100644
index 0000000..88fa7b3
--- /dev/null
+++ b/src/man1/gcc.1
@@ -0,0 +1,3984 @@
+.\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation    -*-Text-*-
+.\" See section COPYING for conditions for redistribution
+.\"
+.\" project 工程
+.\" 
+.\" Set up \*(lq, \*(rq if -man hasn't already set it up.
+.if @@\*(lq@ \{\
+.	ds lq "
+.	if t .ds lq ``
+.	if !@@\(lq@ .ds lq "\(lq
+.\}
+.if @@\*(rq@ \{\
+.	ds rq "
+.	if t .ds rq ''
+.	if !@@\(rq@ .ds rq "\(rq
+.\}
+.de Id
+.ds Rv \\$3
+.ds Dt \\$4
+..
+.de Sp
+.if n .sp
+.if t .sp 0.4
+..
+.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
+.SH NAME
+gcc, g++ \- GNU 工程的 C 和 C++ 编译器 (egcs-1.1.2)
+.SH "总览 (SYNOPSIS)"
+.B gcc
+.RI "[ " option " | " filename " ].\|.\|."
+.br
+.B g++
+.RI "[ " option " | " filename " ].\|.\|."
+
+.SH "警告 (WARNING)"
+本手册页 内容 摘自 GNU C 编译器 的 完整文档, 仅限于 解释 选项 的 含义.
+.PP
+除非 有人 自愿 维护, 否则 本手册页 不再 更新. 如果 发现 手册页 和 软件
+之间 有所矛盾, 请 查对 Info 文件, Info 文件 是 权威 文档.
+.PP
+如果 我们 发觉 本手册页 的 内容 由于 过时 而 导致 明显 的 混乱 和 抱怨 时,
+我们 就 停止 发布 它. 不可能有 其他 选择, 象 更新 Info 文件 同时 更新
+man 手册, 因为 其他 维护 GNU CC 的 工作 没有 留给 我们 时间 做 这个.
+GNU 工程 认为 man 手册 是 过时产物, 应该 把 时间 用到 别的地方.
+.PP
+如果 需要 完整 和 最新 的 文档, 请 查阅 Info 文件 `\|\c
+.B gcc\c
+\&\|' 或 
+.I Using and Porting GNU CC (for version 2.0) (使用和移植 GNU CC 2.0) \c 
+\& 手册.  二者 均 来自 Texinfo 原文件
+.BR gcc.texinfo .
+
+.SH "描述 (DESCRIPTION)"
+C 和 C++ 编译器 是 集成的. 他们 都要 用 四个步骤 中的 一个 或 多个 处理
+输入文件: 预处理(preprocessing), 编译(compilation), 汇编(assembly) 和 
+连接(linking). 源文件后缀名 标识 源文件 的 语言, 但是 对 编译器 来说, 
+后缀名 控制着 缺省设定:
+.TP
+.B gcc
+认为 预处理后的 文件 (\c
+.B .i\c
+\&) 是 C 文件, 并且 设定 C 形式 的 连接.
+.TP
+.B g++
+认为 预处理后的 文件 (\c
+.B .i\c
+\&) 是 C++ 文件, 并且 设定 C++ 形式 的 连接.
+.PP
+源文件后缀名 指出 语言种类 以及 后期 的 操作:
+.Sp
+.nf
+.ta \w'\fB.cxx\fP  'u
+\&\fB.c\fP	C 源程序; 预处理, 编译, 汇编
+\&\fB.C\fP	C++ 源程序; 预处理, 编译, 汇编
+\&\fB.cc\fP	C++ 源程序; 预处理, 编译, 汇编
+\&\fB.cxx\fP	C++ 源程序; 预处理, 编译, 汇编
+\&\fB.m\fP	Objective-C 源程序; 预处理, 编译, 汇编
+\&\fB.i\fP	预处理后的 C 文件; 编译, 汇编
+\&\fB.ii\fP	预处理后的 C++ 文件; 编译, 汇编
+\&\fB.s\fP	汇编语言源程序; 汇编
+\&\fB.S\fP	汇编语言源程序; 预处理, 汇编
+\&\fB.h\fP	预处理器文件; 通常 不出现在 命令行 上
+.Sp
+.fi
+其他 后缀名 的 文件 被传递 给 连接器(linker). 通常 包括:
+.Sp
+.nf
+\&\fB.o\fP	目标文件 (Object file)
+\&\fB.a\fP	归档库文件 (Archive file)
+.br
+.fi
+.Sp
+除非 使用了 
+.BR \-c ,
+.BR \-S ,
+或
+.B \-E
+选项 (或者 编译错误 阻止了 完整 的 过程), 否则 连接 总是 最后的步骤.
+在 连接阶段 中, 所有 对应于 源程序 的
+.B .o
+文件, 
+.B \-l
+库文件, 无法 识别 的 文件名 (包括 指定的
+.B .o
+目标文件 和
+.B .a
+库文件) 按 命令行中 的 顺序 传递给 连接器.
+
+.SH "选项 (OPTIONS)"
+选项 必须 分立 给出: `\|\c
+.B \-dr\c
+\&\|' 完全 不同于 `\|\c
+.B \-d \-r
+\&\|'.
+.PP
+大多数 `\|\c
+.B \-f\c
+\&\|' 和 `\|\c
+.B \-W\c
+\&\|' 选项 有 两个 相反 的 格式:
+.BI \-f name
+和
+.BI \-fno\- name\c
+\& (或
+.BI \-W name
+和
+.BI \-Wno\- name\c
+\&).  这里 只列举 不是 默认选项 的 格式.
+.PP
+下面 是 所有 选项 的 摘要, 按 类型 分组, 解释 放在 后面 的 章节 中.
+.hy 0
+.na
+.TP
+.B 总体选项 (Overall Option)
+.br
+\-c
+\-S
+\-E
+.RI "\-o " file
+\-pipe
+\-v
+.RI "\-x " language
+.TP
+.B 语言选项 (Language Option)
+\-ansi
+\-fall\-virtual
+\-fcond\-mismatch
+\-fdollars\-in\-identifiers
+\-fenum\-int\-equiv
+\-fexternal\-templates
+\-fno\-asm
+\-fno\-builtin
+\-fhosted
+\-fno\-hosted
+\-ffreestanding
+\-fno\-freestanding
+\-fno\-strict\-prototype
+\-fsigned\-bitfields
+\-fsigned\-char
+\-fthis\-is\-variable
+\-funsigned\-bitfields
+\-funsigned\-char
+\-fwritable\-strings
+\-traditional
+\-traditional\-cpp
+\-trigraphs
+.TP
+.B 警告选项 (Warning Option)
+\-fsyntax\-only
+\-pedantic
+\-pedantic\-errors
+\-w
+\-W
+\-Wall
+\-Waggregate\-return
+\-Wcast\-align
+\-Wcast\-qual
+\-Wchar\-subscript
+\-Wcomment
+\-Wconversion
+\-Wenum\-clash
+\-Werror
+\-Wformat
+.RI \-Wid\-clash\- len
+\-Wimplicit
+\-Wimplicit\-int
+\-Wimplicit\-function\-declaration
+\-Winline
+\-Wlong\-long
+\-Wmain
+\-Wmissing\-prototypes
+\-Wmissing\-declarations
+\-Wnested\-externs
+\-Wno\-import
+\-Wparentheses
+\-Wpointer\-arith
+\-Wredundant\-decls
+\-Wreturn\-type
+\-Wshadow
+\-Wstrict\-prototypes
+\-Wswitch
+\-Wtemplate\-debugging
+\-Wtraditional
+\-Wtrigraphs
+\-Wuninitialized
+\-Wunused
+\-Wwrite\-strings
+.TP
+.B 调试选项 (Debugging Option)
+\-a
+.RI \-d letters
+\-fpretend\-float
+\-g
+.RI \-g level
+\-gcoff
+\-gxcoff
+\-gxcoff+
+\-gdwarf
+\-gdwarf+
+\-gstabs
+\-gstabs+
+\-ggdb
+\-p
+\-pg
+\-save\-temps
+.RI \-print\-file\-name= library
+\-print\-libgcc\-file\-name
+.RI \-print\-prog\-name= program
+.TP
+.B 优化选项 (Optimization Option)
+\-fcaller\-saves
+\-fcse\-follow\-jumps
+\-fcse\-skip\-blocks
+\-fdelayed\-branch
+\-felide\-constructors
+\-fexpensive\-optimizations
+\-ffast\-math
+\-ffloat\-store
+\-fforce\-addr
+\-fforce\-mem
+\-finline\-functions
+\-fkeep\-inline\-functions
+\-fmemoize\-lookups
+\-fno\-default\-inline
+\-fno\-defer\-pop
+\-fno\-function\-cse
+\-fno\-inline
+\-fno\-peephole
+\-fomit\-frame\-pointer
+\-frerun\-cse\-after\-loop
+\-fschedule\-insns
+\-fschedule\-insns2
+\-fstrength\-reduce
+\-fthread\-jumps
+\-funroll\-all\-loops
+\-funroll\-loops
+\-O
+\-O2
+\-O3
+.TP
+.B 预处理器选项 (Preprocessor Option)
+.RI \-A assertion
+\-C
+\-dD
+\-dM
+\-dN
+.RI \-D macro [\|= defn \|]
+\-E
+\-H
+.RI "\-idirafter " dir
+.RI "\-include " file
+.RI "\-imacros " file
+.RI "\-iprefix " file
+.RI "\-iwithprefix " dir
+\-M
+\-MD
+\-MM
+\-MMD
+\-nostdinc
+\-P
+.RI \-U macro
+\-undef
+.TP
+.B 汇编器选项 (Assembler Option)
+.RI \-Wa, option
+.TP
+.B 连接器选项 (Linker Option)
+.RI \-l library
+\-nostartfiles
+\-nostdlib
+\-static
+\-shared
+\-symbolic
+.RI "\-Xlinker\ " option
+.RI \-Wl, option
+.RI "\-u " symbol
+.TP
+.B 目录选项 (Directory Option)
+.RI \-B prefix
+.RI \-I dir
+\-I\-
+.RI \-L dir
+.TP
+.B 目标机选项 (Target Option)
+.RI "\-b  " machine
+.RI "\-V " version
+.TP
+.B 配置相关选项 (Configuration Dependent Option)
+.I M680x0\ 选项
+.br
+\-m68000
+\-m68020
+\-m68020\-40
+\-m68030
+\-m68040
+\-m68881
+\-mbitfield
+\-mc68000
+\-mc68020
+\-mfpa
+\-mnobitfield
+\-mrtd
+\-mshort
+\-msoft\-float
+.Sp
+.I VAX 选项
+.br
+\-mg
+\-mgnu
+\-munix
+.Sp
+.I SPARC 选项
+.br
+\-mepilogue
+\-mfpu
+\-mhard\-float
+\-mno\-fpu
+\-mno\-epilogue
+\-msoft\-float
+\-msparclite
+\-mv8
+\-msupersparc
+\-mcypress
+.Sp
+.I Convex 选项
+.br
+\-margcount
+\-mc1
+\-mc2
+\-mnoargcount
+.Sp
+.I AMD29K 选项
+.br
+\-m29000
+\-m29050
+\-mbw
+\-mdw
+\-mkernel\-registers
+\-mlarge
+\-mnbw
+\-mnodw
+\-msmall
+\-mstack\-check
+\-muser\-registers
+.Sp
+.I M88K 选项
+.br
+\-m88000
+\-m88100
+\-m88110
+\-mbig\-pic
+\-mcheck\-zero\-division
+\-mhandle\-large\-shift
+\-midentify\-revision
+\-mno\-check\-zero\-division
+\-mno\-ocs\-debug\-info
+\-mno\-ocs\-frame\-position
+\-mno\-optimize\-arg\-area
+\-mno\-serialize\-volatile
+\-mno\-underscores
+\-mocs\-debug\-info
+\-mocs\-frame\-position
+\-moptimize\-arg\-area
+\-mserialize\-volatile
+.RI \-mshort\-data\- num
+\-msvr3
+\-msvr4
+\-mtrap\-large\-shift
+\-muse\-div\-instruction
+\-mversion\-03.00
+\-mwarn\-passed\-structs
+.Sp
+.I RS6000 选项
+.br
+\-mfp\-in\-toc
+\-mno\-fop\-in\-toc
+.Sp
+.I RT 选项
+.br
+\-mcall\-lib\-mul
+\-mfp\-arg\-in\-fpregs
+\-mfp\-arg\-in\-gregs
+\-mfull\-fp\-blocks
+\-mhc\-struct\-return
+\-min\-line\-mul
+\-mminimum\-fp\-blocks
+\-mnohc\-struct\-return
+.Sp
+.I MIPS 选项
+.br
+\-mcpu=\fIcpu type\fP
+\-mips2
+\-mips3
+\-mint64
+\-mlong64
+\-mmips\-as
+\-mgas
+\-mrnames
+\-mno\-rnames
+\-mgpopt
+\-mno\-gpopt
+\-mstats
+\-mno\-stats
+\-mmemcpy
+\-mno\-memcpy
+\-mno\-mips\-tfile
+\-mmips\-tfile
+\-msoft\-float
+\-mhard\-float
+\-mabicalls
+\-mno\-abicalls
+\-mhalf\-pic
+\-mno\-half\-pic
+\-G \fInum\fP
+\-nocpp
+.Sp
+.I i386 选项
+.br
+\-m486
+\-mno\-486
+\-msoft\-float
+\-mno\-fp\-ret\-in\-387
+.Sp
+.I HPPA 选项
+.br
+\-mpa\-risc\-1\-0
+\-mpa\-risc\-1\-1
+\-mkernel
+\-mshared\-libs
+\-mno\-shared\-libs
+\-mlong\-calls
+\-mdisable\-fpregs
+\-mdisable\-indexing
+\-mtrailing\-colon
+.Sp
+.I i960 选项
+.br
+\-m\fIcpu-type\fP
+\-mnumerics
+\-msoft\-float
+\-mleaf\-procedures
+\-mno\-leaf\-procedures
+\-mtail\-call
+\-mno\-tail\-call
+\-mcomplex\-addr
+\-mno\-complex\-addr
+\-mcode\-align
+\-mno\-code\-align
+\-mic\-compat
+\-mic2.0\-compat
+\-mic3.0\-compat
+\-masm\-compat
+\-mintel\-asm
+\-mstrict\-align
+\-mno\-strict\-align
+\-mold\-align
+\-mno\-old\-align
+.Sp
+.I DEC Alpha 选项
+.br
+\-mfp\-regs
+\-mno\-fp\-regs
+\-mno\-soft\-float
+\-msoft\-float
+.Sp
+.I System V 选项
+.br
+\-G
+\-Qy
+\-Qn
+.RI \-YP, paths
+.RI \-Ym, dir
+.TP
+.B 代码生成选项 (Code Generation Option)
+.RI \-fcall\-saved\- reg
+.RI \-fcall\-used\- reg
+.RI \-ffixed\- reg
+\-finhibit\-size\-directive
+\-fnonnull\-objects
+\-fno\-common
+\-fno\-ident
+\-fno\-gnu\-linker
+\-fpcc\-struct\-return
+\-fpic
+\-fPIC
+\-freg\-struct\-return
+\-fshared\-data
+\-fshort\-enums
+\-fshort\-double
+\-fvolatile
+\-fvolatile\-global
+\-fverbose\-asm
+.ad b
+.hy 1
+
+.SH "总体选项 (Overall Option)"
+.TP
+.BI "\-x " "language"
+明确 指出 后面 输入文件 的 语言 为
+.I language\c
+\& (而不是 从 文件名后缀 得到的 默认选择). 这个选项 应用于 后面 所有的
+输入文件, 直到 遇着 下一个 `\|\c
+.B \-x\c
+\&\|' 选项. \c
+.I language\c
+\& 的 可选值 有
+`\|\c
+.B c\c
+\&\|', `\|\c
+.B objective\-c\c
+\&\|', `\|\c
+.B c\-header\c
+\&\|', `\|\c
+.B c++\c
+\&\|',
+`\|\c
+.B cpp\-output\c
+\&\|', `\|\c
+.B assembler\c
+\&\|', 和 `\|\c
+.B assembler\-with\-cpp\c
+\&\|'.
+.TP
+.B \-x none
+关闭 任何 对 语种 的 明确说明, 因此 依据 文件名后缀 处理 后面 的 文件
+(就象是 从未 使用过 `\|\c
+.B \-x\c
+\&\|'
+选项).
+.PP
+如果 只操作 四个阶段 (预处理, 编译, 汇编, 连接) 中的 一部分,
+可以 使用
+`\|\c
+.B \-x\c
+\&\|' 选项 (或 文件名后缀) 告诉 \c
+.B gcc\c
+\& 从 哪里 开始, 用 `\|\c
+.B \-c\c
+\&\|', `\|\c
+.B \-S\c
+\&\|', 或 `\|\c
+.B \-E\c
+\&\|' 选项 告诉
+.B gcc\c
+\& 到 哪里 结束. 注意, 某些 选项组合 (例如,
+`\|\c
+.B \-x cpp\-output \-E\c
+\&\|') 使 \c
+.B gcc\c
+\& 不作 任何事情.
+.TP
+.B \-c
+编译 或 汇编 源文件, 但是 不作 连接. 编译器 输出 对应于 源文件 的 目标文件.
+.Sp
+缺省情况下, GCC 通过 用 `\|\c
+.B .o\c
+\&\|' 替换 源文件名后缀 `\|\c
+.B .c\c
+\&\|', `\|\c
+.B .i\c
+\&\|', `\|\c
+.B .s\c
+\&\|', 等等, 产生 目标文件名. 可以 使用
+.B \-o\c
+\& 选项 选择 其他 名字.
+.Sp
+GCC 忽略
+.B \-c
+选项 后面 任何 无法 识别 的 输入文件 (他们 不需要 编译 或 汇编).
+.TP
+.B \-S
+编译 后 即停止, 不进行 汇编. 对于 每个 输入的 非汇编语言 文件, 
+输出文件 是 汇编语言 文件.
+.Sp
+缺省情况下, GCC 通过 用 `\|\c
+.B .o\c
+\&\|' 替换 源文件名后缀 `\|\c
+.B .c\c
+\&\|', `\|\c
+.B .i\c
+\&\|', 等等, 产生 目标文件名. 可以 使用
+.B \-o\c
+\& 选项 选择 其他 名字.
+.Sp
+GCC 忽略 任何 不需要 编译 的 输入文件.
+.TP
+.B \-E
+预处理 后 即停止, 不进行 编译. 预处理后的 代码 送往 标准输出.
+.Sp
+GCC 忽略 任何 不需要 预处理 的 输入文件.
+.TP
+.BI "\-o " file
+指定 输出文件 为 \c
+.I file\c
+\&.  该选项 不在乎 GCC 产生 什么 输出, 无论是 可执行文件, 目标文件,
+汇编文件 还是 预处理后的 C 代码.
+.Sp
+由于 只能 指定 一个 输出文件, 因此 编译 多个 输入文件 时, 使用 `\|\c
+.B \-o\c
+\&\|' 选项 没有 意义, 除非 输出 一个 可执行文件.
+.Sp
+如果 没有 使用 `\|\c
+.B \-o\c
+\&\|' 选项, 默认的 输出 结果 是: 可执行文件 为 `\|\c
+.B a.out\c
+\&\|',  `\|\c
+.I source\c
+.B \&.\c
+.I suffix\c
+\&\c 
+\&\|' 的 目标文件 是`\|\c
+.I source\c
+.B \&.o\c
+\&\|', 汇编文件 是 `\|\c
+.I source\c
+.B \&.s\c
+\&\|', 而 预处理后的 C 源代码 送往 标准输出.
+.TP
+.B \-v
+(在 标准错误) 显示 执行 编译 阶段 的 命令. 同时 显示 编译器 驱动程序,
+预处理器, 编译器 的 版本号.
+.TP
+.B \-pipe
+在 编译过程 的 不同 阶段 间 使用 管道 而非 临时文件 进行 通信.
+这个 选项 在 某些 系统 上 无法 工作, 因为 那些 系统 的 汇编器 不能 从 管道
+读取 数据. GNU 的 汇编器 没有 这个问题.
+.PP
+
+.SH "语言选项 (LANGUAGE OPTIONS)"
+下列 选项 控制 编译器 能够 接受 的 C "方言":
+.TP
+.B \-ansi
+支持 符合 ANSI 标准的 C 程序.
+.Sp
+这样 就会 关闭 GNU C 中 某些 不兼容 ANSI C 的 特性, 例如 \c
+.B asm\c
+\&, \c
+.B inline\c
+\& 和 \c
+.B typeof
+关键字, 以及 诸如 \c
+.B unix\c
+\& 和 \c
+.B vax
+这些 表明 当前系统 类型 的 预定义宏. 同时 开启 不受欢迎 和 极少使用的
+ANSI trigraph 特性, 以及 禁止 `\|\c
+.B $\c
+\&\|' 成为 标识符 的 一部分.
+
+.Sp
+尽管 使用了 `\|\c
+.B \-ansi\c
+\&\|' 选项, 下面 这些 可选的 关键字, \c
+.B _\|_asm_\|_\c
+\&, \c
+.B _\|_extension_\|_\c
+\&,
+.B _\|_inline_\|_\c
+\& 和 \c
+.B _\|_typeof_\|_\c
+\& 仍然 有效. 你 当然 不会 把 他们 用在 ANSI C 程序 中, 但可以 把 他们 放在
+头文件 里, 因为 编译 包含 这些 头文件 的 程序 时, 可能会 指定 `\|\c
+.B \-ansi\c
+\&\|' 选项.  另外一些 预定义宏, 如 \c
+.B _\|_unix_\|_\c
+\& 和 \c
+.B _\|_vax_\|_\c
+\&, 无论 有没有 使用 `\|\c
+.B \-ansi\c
+\&\|' 选项, 始终 有效.
+
+.Sp
+使用 `\|\c
+.B \-ansi\c
+\&\|' 选项 不会 自动 拒绝 编译  非ANSI程序, 除非 增加 `\|\c
+.B \-pedantic\c
+\&\|' 选项 作为 `\|\c
+.B \-ansi\c
+\&\|' 选项 的 补充.
+
+.Sp
+使用 `\|\c
+.B \-ansi\c
+\&\|' 选项 的 时候, 预处理器 会 预定义 一个 \c
+.B _\|_STRICT_ANSI_\|_\c
+\& 宏. 有些 头文件 关注 此宏, 以 避免 声明 某些函数, 或者 避免 定义 某些宏,
+这些 函数 和 宏 不被 ANSI 标准 调用; 这样 就不会 干扰 在 其他地方 使用 这些
+名字 的 程序 了.
+
+.TP
+.B \-fno\-asm
+不把 \c
+.B asm\c
+\&, \c
+.B inline\c
+\& 或 \c
+.B typeof\c
+\& 当作 关键字, 因此 这些 词 可以 用做 标识符. 用 \c
+.B _\|_asm_\|_\c
+\&, \c
+.B _\|_inline_\|_\c
+\& 和 \c
+.B _\|_typeof_\|_\c
+\& 能够 替代 他们.
+`\|\c
+.B \-ansi\c
+\&\|' 隐含声明了 `\|\c
+.B \-fno\-asm\c
+\&\|'.
+.TP
+.B \-fno\-builtin
+不接受 不是 两个 下划线 开头 的 内建函数 (built-in function). 
+目前 受影响 的 函数 有 \c
+.B _exit\c
+\&,
+.B abort\c
+\&, \c
+.B abs\c
+\&, \c
+.B alloca\c
+\&, \c
+.B cos\c
+\&, \c
+.B exit\c
+\&,
+.B fabs\c
+\&, \c
+.B labs\c
+\&, \c
+.B memcmp\c
+\&, \c
+.B memcpy\c
+\&, \c
+.B sin\c
+\&,
+.B sqrt\c
+\&, \c
+.B strcmp\c
+\&, \c
+.B strcpy\c
+\&, 和 \c
+.B strlen\c
+\&.
+.Sp
+`\|\c
+.B \-ansi\c
+\&\|' 选项 能够 阻止 \c
+.B alloca\c
+\& 和 \c
+.B _exit\c
+\& 成为 内建函数.
+
+.TP
+.B \-fhosted
+按 宿主环境 编译; 他 隐含 声明了 `\|\c
+.B \-fbuiltin\c
+\&\|' 选项, 而且 警告 不正确的
+.B main\c
+\& 函数 声明.
+.TP
+.B \-ffreestanding
+按 独立环境 编译; 他 隐含 声明了 `\|\c
+.B \-fno-builtin\c
+\&\|' 选项, 而且 对
+.B main\c
+\& 函数 没有 特别要求.
+
+(译注: 宿主环境 (hosted environment) 下 所有的 标准库 可用, main 函数 返回
+一个 int 值, 典型例子 是 除了 内核 以外 几乎 所有的 程序. 对应的 独立环境
+(freestanding environment) 不存在 标准库, 程序 入口 也 不一定是 main, 最明显
+的 例子 就是 操作系统内核. 详情 参考 gcc 网站 最近的 资料)
+
+.TP
+.B \-fno\-strict\-prototype
+对于 没有 参数 的 函数声明, 例如 `\|\c
+.B int foo
+();\c
+\&\|', 按 C 风格 处理\(em\&即 不说明 参数 个数 或 类型. (仅针对 C++).
+正常情况下, 这样的 函数 \c
+.B foo\c
+\& 在 C++ 中 意味着 参数 为 空.
+
+.TP
+.B \-trigraphs
+支持 ANSI C trigraphs. `\|\c
+.B \-ansi\c
+\&\|' 选项 隐含声明了 `\|\c
+.B \-trigraphs\c
+\&\|'.
+
+.TP
+.B \-traditional
+试图 支持 传统 C 编译器 的 某些方面. 详见 GNU C 手册, 我们 已经把 细节清单
+从这里 删除, 这样 当内容 过时后, 人们 也不会 埋怨 我们.
+.Sp
+除了 一件事: 对于 C++ 程序 (不是 C),  `\|\c
+.B \-traditional\c
+\&\|' 选项 带来 一个 附加效应, 允许 对
+.B this
+赋值.  他 和 `\|\c
+.B \-fthis\-is\-variable\c
+\&\|' 选项 的 效果 一样.
+
+.TP
+.B \-traditional\-cpp
+试图 支持 传统 C 预处理器 的 某些方面. 特别是 上面 提到 有关 预处理器 的
+内容, 但是 不包括 `\|\c
+.B \-traditional\c
+\&\|' 选项 的 其他 效应.
+
+.TP
+.B \-fdollars\-in\-identifiers
+允许 在 标识符(identifier) 中 使用 `\|\c
+.B $\c
+\&\|' 字符 (仅针对 C++). 你 可以 指定
+`\|\c
+.B \-fno\-dollars\-in\-identifiers\c
+\&\|' 选项 显明 禁止 使用 `\|\c
+.B $\c
+\&\|' 符.  (GNU C++ 在 某些 目标系统 缺省允许 `\|\c
+.B $\c
+\&\|' 符, 但不是 所有系统.)
+
+.TP
+.B \-fenum\-int\-equiv
+允许 \c
+.B int\c
+\& 类型 到 枚举类型 (enumeration) 的 隐式转换 (仅限于 C++). 正常情况下
+GNU C++ 允许 从 \c
+.B enum\c
+\& 到 \c
+.B int\c
+\& 的 转换, 反之则 不行.
+
+.TP
+.B \-fexternal\-templates
+为 模板声明 (template declaration) 产生 较小的 代码 (仅限于 C++),
+方法 是 对于 每个 模板函数 (template function), 只在 定义 他们 的 地方
+生成 一个 副本. 想要 成功 使用 这个选项, 你 必须 在 所有 使用 模板 的 
+文件 中, 标记 `\|\c
+.B #pragma implementation\c
+\&\|' (定义) 或 `\|\c
+.B #pragma interface\c
+\&\|' (声明).
+
+当 程序 用 `\|\c
+.B \-fexternal\-templates\c
+\&\|' 编译 时, 模板实例 (template instantiation) 全部是 外部类型.
+你 必须 让 需要的 实例 在 实现文件 中 出现. 可以 通过 \c
+.B typedef\c
+\& 实现 这一点, 他 引用 所需的 每个 实例.
+相对应的, 如果 编译时 使用 缺省选项 `\|\c
+.B \-fno\-external\-templates\c
+\&\|', 所有 模板实例 明确的 设为 内置.
+
+.TP
+.B \-fall\-virtual
+所有 可能的 成员函数 默认为 虚函数. 所有的 成员函数 (除了 构造子函数 和
+.B new
+或
+.B delete
+成员操作符) 视为 所在类 的 虚函数.
+.Sp
+这 不表明 每次 调用 成员函数 都将 通过 内部 虚函数表. 有些 情况 下,
+编译器 能够 判断出 可以 直接 调用 某个 虚函数; 这时 就 直接 调用.
+
+.TP
+.B \-fcond\-mismatch
+允许 条件表达式 的 第二 和 第三个 参数 的 类型 不匹配.
+这种 表达式 的 值 是 void.
+
+.TP
+.B \-fthis\-is\-variable
+允许 对 \c
+.B this\c
+\& 赋值 (仅对 C++). 合并 用户自定义 的 自由存储管理 机制 到 C++ 后,
+使 可赋值 的 `\|\c
+.B this\c
+\&\|' 显得 不合时宜. 因此, 默认 情况 下, 类成员函数 内部 对 \c
+.B this\c
+\& 赋值 是 无效操作. 然而 为了 向后兼容, 你 可以 通过 `\|\c
+.B \-fthis-is-variable\c
+\&\|' 选项 使 这种 操作 有效.
+
+.TP
+.B \-funsigned\-char
+把 \c
+.B char\c
+\& 定义为 无符号 类型, 如同 \c
+.B unsigned char\c
+\&.
+.Sp
+各种 机器 都有 自己 缺省的 \c
+.B char\c
+\& 类型.  既 可能 是 \c
+.B unsigned char\c
+\& 也 可能是
+.B signed char\c
+\& .
+.Sp
+理想情况下, 当 依赖于 数据的 符号性 时, 一个 可移植程序 总是 应该 使用 \c
+.B signed char\c
+\& 或
+.B unsigned char\c
+\&. 但是 许多 程序 已经 写成 只用 简单的 \c
+.B char\c
+\&, 并且 期待 这是 有符号数 (或者 无符号数, 具体情况 取决于 编写 程序
+的 目标机器). 这个选项, 和 它的 反义选项, 使 那样的 程序 工作在 对应的
+默认值 上.
+.Sp
+.B char
+的 类型 始终 应该 明确定义 为
+.B signed char\c
+\& 或 \c
+.B unsigned char\c
+\&, 即使 它 表现的 和 其中之一 完全一样.
+
+.TP
+.B \-fsigned\-char
+把 \c
+.B char\c
+\& 定义为 有符号 类型, 如同 \c
+.B signed char\c
+\&.
+.Sp
+这个 选项 等同于 `\|\c
+.B \-fno\-unsigned\-char\c
+\&\|', 他是
+the negative form of `\|\c
+.B \-funsigned\-char\c
+\&\|' 的 相反 选项.  同样, `\|\c
+.B \-fno\-signed\-char\c
+\&\|' 等价于 `\|\c
+.B \-funsigned\-char\c
+\&\|'.
+
+.TP
+.B \-fsigned\-bitfields
+.TP
+.B \-funsigned\-bitfields
+.TP
+.B \-fno\-signed\-bitfields
+.TP
+.B \-fno\-unsigned\-bitfields
+如果 没有 明确 声明 `\|\c
+.B signed\c
+\&\|' 或 `\|\c
+.B unsigned\c
+\&\|' 修饰符, 这些 选项 用来 定义 有符号位域 (bitfield) 或 无符号位域. 
+缺省情况下, 位域 是 有符号 的, 因为 他们 继承的 基本 整数类型, 如
+.B int\c
+\&, 是 有符号数.
+.Sp
+然而, 如果 指定了 `\|\c
+.B \-traditional\c
+\&\|' 选项, 位域 永远 是 无符号数.
+
+.TP
+.B \-fwritable\-strings
+把 字符串常量 存储到 可写数据段, 而且 不做 特别 对待.
+这是 为了 兼容 一些 老程序, 他们 假设 字符串常量 是 可写的. `\|\c
+.B \-traditional\c
+\&\|' 选项 也有 相同 效果.
+.Sp
+篡改 字符串常量 是一个 非常 糟糕的 想法; \*(lq常量\*(rq 就应该是 常量.
+
+.SH "预处理器选项 (Preprocessor Option)"
+下列 选项 针对 C 预处理器, 预处理器 用在 正式 编译 以前, 对 C 源文件
+进行 某种处理.
+.PP
+如果 指定了 `\|\c
+.B \-E\c
+\&\|' 选项, GCC 只进行 预处理 工作. 下面的 某些 选项 必须 和 `\|\c
+.B \-E\c
+\&\|' 选项 一起 才 有意义, 因为 他们的 输出结果 不能 用于 编译.
+
+.TP
+.BI "\-include " "file"
+在 处理 常规 输入文件 之前, 首先 处理 文件 \c
+.I file\c
+\&, 其结果是, 文件 \c
+.I file\c
+\& 的 内容 先得到 编译.  命令行上 任何 `\|\c
+.B \-D\c
+\&\|'
+和 `\|\c
+.B \-U\c
+\&\|' 选项 永远 在 `\|\c
+.B \-include \c
+.I file\c
+\&\c
+\&\|' 之前 处理, 无论 他们 在 命令行上 的 顺序 如何. 然而 `\|\c
+.B \-include\c
+\&\|' 和 `\|\c
+.B \-imacros\c
+\&\|' 选项 按 书写顺序 处理.
+
+.TP
+.BI "\-imacros " file
+在 处理 常规 输入文件 之前, 首先 处理 文件 \c
+.I file\c
+\&, 但是 忽略 输出结果. 由于 丢弃了 文件
+.I file\c
+\& 的 输出内容, `\|\c
+.B \-imacros \c
+.I file\c
+\&\c
+\&\|' 选项 的 唯一 效果 就是 使 文件 \c
+.I file\c
+\& 中 的 宏定义 生效, 可以 用于 其他 输入文件. 在 处理 `\|\c
+.B \-imacros\c
+.I file\c
+\&\|' 选项 之前, 预处理器 首先 处理 `\|\c
+.B \-D\c
+\&\|' 和 `\|\c
+.B \-U\c
+\&\|' 选项, 并不在乎 他们 在 命令行上 的 顺序. 然而 `\|\c
+.B \-include\c
+\&\|' 和 `\|\c
+.B \-imacros\c
+\&\|' 选项 按 书写顺序 处理.
+
+.TP
+.BI "\-idirafter " "dir"
+把 目录 \c
+.I dir\c
+\& 添加到 第二包含路径 中. 如果 某个 头文件 在 主包含路径 (用`\|\c
+.B \-I\c
+\&\|' 添加的 路径) 中 没有 找到, 预处理器 就搜索 第二包含路径.
+
+.TP
+.BI "\-iprefix " "prefix"
+指定 \c
+.I prefix\c
+\& 作为 后续 `\|\c
+.B \-iwithprefix\c
+\&\|'
+选项 的 前缀.
+
+.TP
+.BI "\-iwithprefix " "dir"
+把 目录 添加到 第二包含路径 中. 目录名 由 \c
+.I prefix\c
+\& 和 \c
+.I dir\c
+\& 合并 而成, 这里 \c
+.I prefix
+被 先前的 `\|\c
+.B \-iprefix\c
+\&\|' 选项 指定.
+
+.TP
+.B \-nostdinc
+不要 在 标准系统目录 中 寻找 头文件. 只 搜索 `\|\c
+.B \-I\c
+\&\|' 选项 指定的 目录 (以及 当前目录, 如果 合适).
+.Sp
+结合 使用 `\|\c
+.B \-nostdinc\c
+\&\|' 和 `\|\c
+.B \-I\-\c
+\&\|' 选项, 你 可以 把 包含文件 搜索 限制在 显式 指定的 目录.
+
+.TP
+.B \-nostdinc++
+不要 在 C++ 专用标准目录 中 寻找 头文件, 但是 仍然 搜索 其他 标准目录.
+(当 建立 `\|\c
+.B libg++\c
+\&\|' 时 使用 这个选项.)
+.TP
+.B \-undef
+不要 预定义 任何 非标准宏. (包括 系统结构 标志).
+
+.TP
+.B \-E
+仅运行 C 预处理器. 预处理 所有 指定的 C 源文件, 结果 送往 标准输出
+或 指定的 输出文件.
+
+.TP
+.B \-C
+告诉 预处理器 不要 丢弃 注释. 配合 `\|\c
+.B \-E\c
+\&\|' 选项 使用.
+
+.TP
+.B \-P
+告诉 预处理器 不要 产生 `\|\c
+.B #line\c
+\&\|' 命令. 配合 `\|\c
+.B \-E\c
+\&\|' 选项 使用.
+
+.TP
+.B \-M\  [ \-MG ]
+告诉 预处理器 输出 一个 适合 \c
+.B make
+的 规则, 用于 描述 各目标文件的 依赖 关系. 对于 每个 源文件,
+预处理器 输出 一个 \c
+.B make
+规则, 该规则 的 目标项 (target) 是 源文件 对应的 目标文件名, 依赖项
+(dependency) 是 源文件中 `\|\c
+.B #include\c
+\&\| 引用的 所有文件. 生成的 规则 可以是 单行, 但如果 太长, 就用 `\|\c
+.B \e\c
+\&\|'-换行符 续成 多行. 规则 显示在 标准输出, 不产生 预处理过的 C 程序.
+.Sp
+`\|\c
+.B \-M\c
+\&\|' 隐含了 `\|\c
+.B \-E\c
+\&\|' 选项.
+.Sp
+`\|\c
+.B \-MG\c
+\&\|' 要求 把 缺失的 头文件 按 存在 对待, 并且 假定 他们 和 源程序文件
+在 同一目录 下. 必须 和 `\|\c
+.B \-M\c
+\&\|' 选项 一起用.
+
+.TP
+.B \-MM\  [ \-MG ]
+和 `\|\c
+.B \-M\c
+\&\|' 选项 类似, 但是 输出结果 仅涉及 用户头文件, 象 这样 `\|\c
+.B #include \&"\c
+.I file\c
+\&"\c
+\&\|'.  忽略 系统头文件 如 `\|\c
+.B #include <\c
+.I file\c
+\&>\c
+\&\|'.
+
+.TP
+.B \-MD
+和 `\|\c
+.B \-M\c
+\&\|' 选项 类似, 但是 把 依赖 信息 输出在 文件中, 文件名 通过 把 输出文件名
+末尾的 `\|\c
+.B .o\c
+\&\|' 替换为 `\|\c
+.B .d\c
+\&\|' 产生. 同时 继续 指定的 编译工作 \(em\&`\|\c
+.B \-MD\c
+\&\|' 不象 `\|\c
+.B \-M\c
+\&\|' 那样 阻止 正常的 编译任务.
+.Sp
+Mach 的 实用工具 `\|\c
+.B md\c
+\&\|' 能够 合并 `\|\c
+.B .d\c
+\&\|' 文件, 产生 适用于 `\|\c
+.B make\c
+\&\|' 命令 的 单一的 依赖文件.
+
+.TP
+.B \-MMD
+和 `\|\c
+.B \-MD\c
+\&\|' 选项 类似, 但是 输出结果 仅涉及 用户头文件, 忽略 系统头文件.
+
+.TP
+.B \-H
+除了 其他 普通 的 操作, GCC 显示 引用过的 头文件 名.
+
+.TP
+.BI "\-A" "question" ( answer )
+如果 预处理器 做 条件测试, 如 `\|\c
+.BI "#if #" question ( answer )\c
+\&\|', 该选项 可以 断言 (Assert)
+.I question
+的 答案 是
+.I answer.
+.B \-A\-\c
+\&\|' 关闭 一般用于 描述 目标机 的 标准 断言.
+
+.TP
+.BI \-D macro
+定义 宏 \c
+.I macro\c
+\&, 宏 的 内容 定义为 字符串 `\|\c
+.B 1\c
+\&\|'.
+
+.TP
+.BI \-D macro = defn
+定义 宏 \c
+.I macro\c
+\& 的 内容 为 \c
+.I defn\c
+\&. 命令行 上 所有的 `\|\c
+.B \-D\c
+\&\|' 选项 在 `\|\c
+.B \-U\c
+\&\|' 选项 之前 处理.
+
+.TP
+.BI \-U macro
+取消 宏 \c
+.I macro\c
+\&.  `\|\c
+.B \-U\c
+\&\|' 选项 在 所有的 `\|\c
+.B \-D\c
+\&\|' 选项 之后 处理, 但是 优先于 任何 `\|\c
+.B \-include\c
+\&\|' 或 `\|\c
+.B \-imacros\c
+\&\|' 选项.
+
+.TP
+.B \-dM
+告诉 预处理器 输出 有效的 宏定义 列表 (预处理 结束时 仍然 有效的 宏定义).
+该选项 需 结合 `\|\c
+.B \-E\c
+\&\|'
+选项 使用.
+
+.TP
+.B \-dD
+告诉 预处理器 把 所有的 宏定义 传递到 输出端, 按照 出现的 顺序 显示.
+
+.TP
+.B \-dN
+和 `\|\c
+.B \-dD\c
+\&\|'选项 类似, 但是 忽略 宏的 参量 或 内容. 只在 输出端 显示 `\|\c
+.B #define \c
+.I name\c
+\&\c.
+
+.SH "汇编器选项 (ASSEMBLER OPTION)"
+.TP
+.BI "\-Wa," "option"
+把 选项 \c
+.I option\c
+\& 传递给 汇编器.  如果 \c
+.I option
+含有 逗号, 就在 逗号 处 分割成 多个 选项.
+
+.SH "连接器选项 (LINKER OPTION)"
+下面的 选项 用于 编译器 连接 目标文件, 输出 可执行文件 的 时候.
+如果 编译器 不进行 连接, 他们 就 毫无意义.
+
+.TP
+.I object-file-name
+如果 某些文件 没有 特别明确的 后缀 a special recognized suffix,
+GCC 就 认为 他们 是 目标文件 或 库文件. (根据 文件内容, 连接器 能够 区分
+目标文件 和 库文件). 如果 GCC 执行 连接 操作, 这些 目标文件 将 成为
+连接器 的 输入文件.
+
+.TP
+.BI \-l library
+连接 名为 \c
+.I library\c
+\& 的 库文件.
+.Sp
+连接器 在 标准搜索目录 中 寻找 这个 库文件, 库文件 的 真正 名字 是 `\|\c
+.B lib\c
+.I library\c
+\&.a\c
+\&\|'.  连接器 会 当做 文件名 得到 准确 说明 一样 引用 这个文件.
+.Sp
+搜索目录 除了 一些 系统标准目录 外, 还包括 用户 以 `\|\c
+.B \-L\c
+\&\|' 选项 指定 的 路径.
+.Sp
+一般说来 用 这个方法 找到的 文件 是 库文件\(em\&即由 目标文件 组成的 
+归档文件 (archive file).
+连接器 处理 归档文件 的 方法 是: 扫描 归档文件, 寻找 某些 成员,
+这些 成员 的 符号 目前 已 被引用, 不过 还没有 被定义.
+但是, 如果 连接器 找到 普通的 目标文件, 而不是 库文件, 就把 这个 目标文件
+按 平常方式 连接 进来. 指定 `\|\c
+.B \-l\c
+\&\|' 选项 和 指定 文件名 的 唯一 区别 是, `\|\c
+.B \-l\c
+选项 用 `\|\c
+.B lib\c
+\&\|' 和 `\|\c
+.B .a\c
+\&\|' 把 
+.I library
+包裹 起来, 而且 搜索 一些 目录.
+
+.TP
+.B \-lobjc
+这个
+.B \-l
+选项 的 特殊形式 用于 连接 Objective C 程序.
+
+.TP
+.B \-nostartfiles
+不连接 系统 标准启动文件, 而 标准库文件 仍然 正常 使用.
+
+.TP
+.B \-nostdlib
+不连接 系统 标准启动文件 和 标准库文件. 只把 指定的 文件 传递给 连接器.
+
+.TP
+.B \-static
+在 支持 动态连接 (dynamic linking) 的 系统 上, 阻止 连接 共享库.
+该选项 在 其他系统上 无效.
+
+.TP
+.B \-shared
+生成 一个 共享目标文件, 他 可以 和 其他 目标文件 连接 产生 可执行文件.
+只有 部分 系统 支持 该选项.
+
+.TP
+.B \-symbolic
+建立 共享目标文件 的 时候, 把 引用 绑定到 全局符号上.
+对 所有 无法解析的 引用 作出 警告 (除非 用 连接编辑选项 `\|\c
+.B
+\-Xlinker \-z \-Xlinker defs\c
+\&\|' 取代).  
+只有 部分 系统 支持 该选项.
+
+
+.TP
+.BI "\-Xlinker " "option"
+把 选项 \c
+.I option
+传递给 连接器. 可以 用 他 传递 系统 特定的 连接 选项, GNU CC 无法 识别 
+这些 选项.
+.Sp
+如果 需要 传递 携带 参数 的 选项, 你 必须 使用 两次 `\|\c
+.B \-Xlinker\c
+\&\|', 一次 传递 选项, 另一次 传递 他的 参数. 例如, 如果 传递 `\|\c
+.B
+\-assert definitions\c
+\&\|', 你 必须 写成 `\|\c
+.B
+\-Xlinker \-assert \-Xlinker definitions\c
+\&\|',  而不能 写成 `\|\c
+.B
+\-Xlinker "\-assert definitions"\c
+\&\|', 因为 这样 会把 整个 字符串 当做 一个 参数 传递, 显然 这 不是
+连接器 期待的.
+
+.TP
+.BI "\-Wl," "option"
+把 选项 \c
+.I option\c
+\& 传递给 连接器.  如果 \c
+.I option\c
+\& 中 含有 逗号, 就在 逗号 处 分割成 多个 选项. 
+
+.TP
+.BI "\-u " "symbol"
+使 连接器 认为 取消了
+.I symbol
+的 符号定义, 从而 连接 库模块 以 取得 定义. 你 可以 使用 多个 `\|\c
+.B \-u\c
+\&\|' 选项, 各自 跟上 不同的 符号, 使得 连接器 调入 附加的 库模块.
+
+.SH "目录选项 (DIRECTORY OPTION)
+下列 选项 指定 搜索路径, 用于 查找 头文件, 库文件, 或 编译器 的 某些成员:
+.TP
+.BI "\-I" "dir"
+在 头文件 的 搜索路径 列表 中 添加
+.I dir 
+目录.
+
+.TP
+.B \-I\-
+任何 在 `\|\c
+.B \-I\-\c
+\&\|' 前面 用 `\|\c
+.B \-I\c
+\&\|' 选项 指定 的 搜索路径 只适用于 `\|\c
+.B
+#include "\c
+.I file\c
+.B
+\&"\c
+\&\|' 这种 情况; 他们 不能 用来 搜索 `\|\c
+.B #include <\c
+.I file\c
+\&>\c
+\&\|' 包含 的 头文件.
+.Sp
+如果 用 `\|\c
+.B \-I\c
+\&\|' 选项 指定的 搜索路径 位于 `\|\c
+.B \-I\-\c
+\&\|' 选项 后面, 就可以 在 这些 路径 中 搜索 所有的 `\|\c
+.B #include\c
+\&\|'
+指令. (一般说来
+.B \-I
+选项 就是 这么 用的.)
+.Sp
+还有, `\|\c
+.B \-I\-\c
+\&\|' 选项 能够 阻止 当前目录 (存放 当前 输入文件 的 地方) 成为 搜索 `\|\c
+.B
+#include "\c
+.I file\c
+.B
+\&"\c
+\&\|' 的 第一选择. 没有 办法 克服 `\|\c
+.B \-I\-\c
+\&\|' 选项 的 这个效应.  你 可以 指定 `\|\c
+.B \-I.\c
+\&\|' 搜索 那个目录, 它 在 调用 编译器 时 是 当前目录. 
+这 和 预处理器 的 默认行为 不完全 一样, 但是 结果 通常 令人满意.
+.Sp
+`\|\c
+.B \-I\-\c
+\&\|' 不影响 使用 系统标准目录, 因此, `\|\c
+.B \-I\-\c
+\&\|' 和 `\|\c
+.B \-nostdinc\c
+\&\|' 是 不同的 选项.
+
+.TP
+.BI "\-L" "dir"
+在 `\|\c
+.B \-l\c
+\&\|' 选项 的 搜索路径 列表 中 添加 \c
+.I dir\c
+\& 目录.
+
+.TP
+.BI "\-B" "prefix"
+这个选项 指出 在何处 寻找 可执行文件, 库文件, 以及 编译器 自己 的 数据文件.
+.Sp
+编译器 驱动程序 需要 执行 某些 下面的 子程序: `\|\c
+.B cpp\c
+\&\|', `\|\c
+.B cc1\c
+\&\|' (或 C++ 的 `\|\c
+.B cc1plus\c
+\&\|'), `\|\c
+.B as\c
+\&\|' 和 `\|\c
+.B ld\c
+\&\|'.  他 把 
+.I prefix\c
+\& 当作 欲执行的 程序 的 前缀, 既可以 包括 也可以 不包括 `\|\c
+.I machine\c
+.B /\c
+.I version\c
+.B /\c
+\&\|'.
+.Sp
+对于 要运行的 子程序, 编译器 驱动程序 首先 试着 加上 `\|\c
+.B \-B\c
+\&\|' 前缀 (如果存在).  如果 没有 找到 文件, 或 没有 指定 `\|\c
+.B \-B\c
+\&\|' 选项, 编译器 接着 会 试验 两个 标准 前缀 `\|\c
+.B /usr/lib/gcc/\c
+\&\|' 和 `\|\c
+.B /usr/local/lib/gcc-lib/\c
+\&\|'.  如果 仍然 没能够 找到 所需文件, 编译器 就在 `\|\c
+.B PATH\c
+\&\|' 环境变量 指定的 路径 中 寻找 没加 任何 前缀 的 文件名.
+.Sp
+如果 有需要, 运行时 (run-time) 支持文件 `\|\c
+.B libgcc.a\c
+\&\|' 也在 `\|\c
+.B \-B\c
+\&\|' 前缀 的 搜索 范围 之内. 如果 这里 没有 找到, 就在 上面 提到的
+两个 标准 前缀 中 寻找, 仅此而已. 如果 上述 方法 没有 找到 这个 文件,
+就 不连接 他了. 多数 情况 的 多数 机器 上, `\|\c
+.B libgcc.a\c
+\&\|' 并非 必不可少.
+.Sp
+你 可以 通过 环境变量
+.B GCC_EXEC_PREFIX\c
+\& 获得 近似的 效果; 如果 定义了 这个 变量, 其值 就和 上面 说的 一样
+用做 前缀. 如果 同时 指定了 `\|\c
+.B \-B\c
+\&\|' 选项 和
+.B GCC_EXEC_PREFIX\c
+\& 变量, 编译器 首先 使用 `\|\c
+.B \-B\c
+\&\|' 选项, 然后 才尝试 环境变量值.
+
+.SH "警告选项 (WARNING OPTION)"
+警告 是 针对 程序结构 的 诊断信息, 程序 不一定 有错误, 而是 存在
+风险, 或者 可能 存在 错误.
+.Sp
+下列 选项 控制 GNU CC 产生 的 警告 的 数量 和 类型:
+
+.TP
+.B \-fsyntax\-only
+检查 程序 中 的 语法错误, 但是 不产生 输出信息.
+.TP
+.B \-w
+禁止 所有 警告信息.
+.TP
+.B \-Wno\-import
+禁止 所有 关于
+.BR #import 
+的 警告信息.
+.TP
+.B \-pedantic
+打开 完全服从 ANSI C 标准 所需的 全部 警告诊断; 拒绝接受 采用了
+被禁止的 语法扩展 的 程序.
+.Sp
+无论 有没有 这个 选项, 符合 ANSI C 标准 的 程序 应该 能够 被 正确 编译
+(虽然 极少数 程序 需要 `\|\c
+.B \-ansi\c
+\&\|' 选项).  然而, 如果 没有 这个 选项, 某些 GNU 扩展 和 传统 C 特性
+也 得到 支持. 使用 这个 选项 可以 拒绝 这些 程序. 没有 理由 使用 这个
+选项, 他 存在 只是 为了 满足 一些 书呆子 (pedant).
+.Sp
+对于 替选关键字 (他们 以 `\|\c
+.B _\|_\c
+\&\|' 开始 和 结束) `\|\c
+.B \-pedantic\c
+\&\|' 不会 产生 警告信息. Pedantic 也 不警告 跟在
+.B _\|_extension_\|_\c
+\& 后面 的 表达式. 不过 只应该 在 系统头文件 中 使用 这种 转义措施,
+应用程序 最好 避免.
+.TP
+.B \-pedantic\-errors
+该 选项 和 `\|\c
+.B \-pedantic\c
+\&\|' 类似, 但是 显示 错误 而不是 警告.
+.TP
+.B \-W
+对 下列 事件 显示 额外的 警告信息:
+.TP
+\ \ \ \(bu
+非易变自动变量 (nonvolatile automatic variable) 可能 在 调用
+.B longjmp\c
+\& 时 发生 改变. 这些 警告 仅在 优化编译 时 发生.
+.Sp
+编译器 只知道 对 \c
+.B setjmp\c
+\& 的 调用, 他 不可能 知道 会 在哪里 调用 \c
+.B longjmp\c
+\&, 事实上 一个 信号处理例程 可以 在 程序 的 任何 地点 调用 他.
+其结果是, 即使 程序 没有 问题, 你 也可能会 得到 警告, 因为 无法 在
+可能 出现 问题 的 地方 调用 \c
+.B longjmp\c
+\&.
+
+.TP
+\ \ \ \(bu
+既可以 返回 值, 也可以 不返回 值 的 函数. (缺少 结尾 的 函数体 被看作
+不返回 函数值) 例如, 下面的 函数 将 导致 这种 警告:
+.Sp
+.nf
+foo (a)
+{
+  if (a > 0)
+    return a;
+}
+.Sp
+.fi
+由于 GNU CC 不知道 某些 函数 永不返回 (含有 \c
+.B abort\c
+\& 和 \c
+.B longjmp\c
+\&), 因此 有可能 出现 虚假 警告.
+
+.TP
+\ \ \ \(bu
+表达式语句 或 逗号表达式 的 左侧 没有 产生 作用 (side effect).
+如果要 防止 这种 警告, 应该把 未使用的 表达式 强制转换 为 void 类型.
+例如, 这样的 表达式 `\|\c
+.B x[i,j]\c
+\&\|' 会 导致 警告, 而 `\|\c
+.B x[(void)i,j]\c
+\&\|' 就 不会.
+
+.TP
+\ \ \ \(bu
+无符号数 用 `\|\c
+.B >\c
+\&\|' 或 `\|\c
+.B <=\c
+\&\|' 和 零 做比较.
+.PP
+
+.TP
+.B \-Wimplicit-int
+警告 没有 指定 类型 的 声明.
+
+.TP
+.B \-Wimplicit-function-declaration
+警告 在 声明 之前 就 使用 的 函数.
+
+.TP
+.B \-Wimplicit
+同 -Wimplicit-int 和 -Wimplicit-function-declaration.
+
+.TP
+.B \-Wmain
+如果 把
+.B main
+函数 声明 或 定义 成 奇怪 的 类型, 编译器 就 发出 警告.
+典型情况下, 这个 函数 用于 外部连接, 返回 
+.B int\c
+\& 数值, 不需要 参数, 或 指定 两个 参数.
+
+.TP
+.B \-Wreturn\-type
+如果 函数 定义了 返回类型, 而 默认 类型 是 \c
+.B int\c
+\& 型, 编译器 就 发出 警告. 同时 警告 那些 不带 返回值 的 \c
+.B return\c
+\& 语句, 如果 他们 所属的 函数 并非 \c
+.B void\c
+\& 类型.
+
+.TP
+.B \-Wunused
+如果 某个 局部变量 除了 声明 就 没再 使用, 或者 声明了 静态函数 但是 没有
+定义, 或者 某条 语句 的 运算结果 显然 没有 使用, 编译器 就 发出 警告.
+
+.TP
+.B \-Wswitch
+如果 某条 \c
+.B switch\c
+\& 语句 的 参数 属于 枚举类型, 但是 没有 对应的 \c
+.B case\c
+\& 语句 使用 枚举元素, 编译器 就 发出 警告. ( \c
+.B default\c
+\& 语句 的 出现 能够 防止 这个 警告.) 超出 枚举 范围 的 \c
+.B case\c
+\& 语句 同样 会 导致 这个 警告.
+
+.TP
+.B \-Wcomment
+如果 注释起始序列 `\|\c
+.B /\(**\c
+\&\|' 出现在 注释 中, 编译器 就 发出 警告.
+
+.TP
+.B \-Wtrigraphs
+警告 任何 出现的 trigraph (假设 允许 使用 他们).
+
+.TP
+.B \-Wformat
+检查 对 \c
+.B printf\c
+\& 和 \c
+.B scanf\c
+\& 等 函数 的 调用, 确认 各个 参数 类型 和 格式串 中的 一致.
+
+.TP
+.B \-Wchar\-subscripts
+警告 类型 是
+.BR char 
+的 数组 下标. 这是 常见 错误, 程序员 经常 忘记 在 某些 机器 上 char 有 符号.
+
+.TP
+.B \-Wuninitialized
+在 初始化 之前 就 使用 自动变量.
+.Sp
+这些警告 只可能 做 优化编译 时 出现, 因为 他们 需要 数据流信息, 只有
+做 优化 的 时候 才 估算 数据流信息. 如果 不指定 `\|\c
+.B \-O\c
+\&\|' 选项, 就不会 出现 这些警告.
+.Sp
+这些警告 仅针对 等候 分配 寄存器 的 变量. 因此 不会 发生在 声明为 \c
+.B volatile\c
+\& 的 变量 上面, 不会 发生在 已经 取得 地址 的 变量, 或 长度 不等于 
+1, 2, 4, 8 字节 的 变量. 同样 也不会 发生在 结构, 联合 或 数组 上面, 
+即使 他们 在 寄存器 中.
+.Sp
+注意, 如果 某个变量 只 计算了 一个 从未使用过 的 值, 这里 可能 不会 警告.
+因为 在 显示 警告 之前, 这样 的 计算 已经 被 数据流分析 删除 了.
+.Sp
+这些警告 作为 可选项 是因为 GNU CC 还没有 智能到 判别 所有的 情况, 知道
+有些 看上去 错误 的 代码 其实 是 正确的. 下面 是 一个 这样的 例子:
+.Sp
+.nf
+{
+  int x;
+  switch (y)
+    {
+    case 1: x = 1;
+      break;
+    case 2: x = 4;
+      break;
+    case 3: x = 5;
+    }
+  foo (x);
+}
+.Sp
+.fi
+如果 \c
+.B y\c
+\& 始终是 1, 2 或 3, 那么 \c
+.B x\c
+\& 总会被 初始化, 但是 GNU CC 不知道 这一点. 下面 是 另一个 普遍案例:
+.Sp
+.nf
+{
+  int save_y;
+  if (change_y) save_y = y, y = new_y;
+  .\|.\|.
+  if (change_y) y = save_y;
+}
+.Sp
+.fi
+这里 没有 错误, 因为 只有 设置了 \c
+.B save_y\c
+\& 才 使用 他.
+.Sp
+把 所有 不返回 的 函数 定义为
+.B volatile\c
+\& 可以 避免 某些 似是而非的 警告.
+
+.TP
+.B \-Wparentheses
+在 某些 情况 下 如果 忽略了 括号, 编译器 就 发出 警告.
+
+.TP
+.B \-Wtemplate\-debugging
+当 在 C++ 程序 中 使用 template 的 时候, 如果 调试 (debugging) 没有 完全 生效,
+编译器 就 发出 警告. (仅用于 C++).
+
+.TP
+.B \-Wall
+结合 所有 上述 的 `\|\c
+.B \-W\c
+\&\|' 选项. 通常 我们 建议 避免 这些 被警告的 用法,我们 相信,
+恰当 结合 宏 的 使用 能够 轻易 避免 这些 用法。
+
+.PP
+剩下的 `\|\c
+.B \-W.\|.\|.\c
+\&\|' 选项 不包括 在 `\|\c
+.B \-Wall\c
+\&\|' 中, 因为 我们 认为 在 必要情况 下, 这些 被 编译器 警告 的 程序结构, 
+可以 合理的 用在 "干净的" 程序 中.
+
+.TP
+.B \-Wtraditional
+如果 某些 程序结构 在 传统 C 中 的 表现 和 ANSI C 不同, 编译器 就 发出 警告.
+
+.TP
+\ \ \ \(bu
+宏参 出现在 宏体 的 字符串常量 内部. 传统 C 会 替换 宏参, 而 ANSI C 
+则 视其为 常量 的 一部分.
+
+.TP
+\ \ \ \(bu
+某个函数 在 块(block) 中 声明为 外部, 但在 块 结束后 才 调用.
+
+.TP
+\ \ \ \(bu
+.B switch\c
+\& 语句 的 操作数 类型 是 \c
+.B long\c
+\&.
+
+.PP
+.TP
+.B \-Wshadow
+一旦 某个 局部变量 屏蔽了 另一个 局部变量, 编译器 就 发出 警告.
+
+.TP
+.BI "\-Wid\-clash\-" "len"
+一旦 两个 确定的 标识符 具有 相同的 前 \c
+.I len
+个 字符, 编译器 就 发出 警告. 他 可以 协助 你 开发 一些 将要在
+某些 过时的, 危害大脑的 编译器 上 编译 的 程序.
+
+.TP
+.B \-Wpointer\-arith
+任何 语句 如果 依赖于 函数类型 的 大小(size) 或者 \c
+.B void\c
+\& 类型 的 大小, 编译器 就 发出 警告.  GNU C 为了 便于 计算 \c
+.B void \(**\c
+\& 指针 和 函数指针, 就把 这些 类型 的 大小 定义 为 1.
+
+.TP
+.B \-Wcast\-qual
+一旦 某个 指针 强制类型转换 以便 移除 类型修饰符 时, 编译器 就 发出 警告.
+例如, 如果 把 \c
+.B const char \(**\c
+\& 强制转换 为 普通的 \c
+.B char \(**\c
+\& 时, 警告 就会 出现.
+
+.TP
+.B \-Wcast\-align
+一旦 某个 指针类型 强制转换 时, 导致 目标 所需的 地址对齐 (alignment)  
+增加, 编译器 就 发出 警告.
+例如, 某些 机器 上 只能 在 2 或 4 字节 边界 上 访问 整数, 如果 在 
+这种 机型 上 把 \c
+.B char \(**\c
+\& 强制转换 成 \c
+.B int \(**\c
+\& 类型, 编译器 就 发出 警告.
+
+.TP
+.B \-Wwrite\-strings
+规定 字符串常量 的 类型 是 \c
+.B const char[\c
+.I length\c
+.B ]\c
+\&, 因此, 把 这样的 地址 复制给 non-\c
+.B const\c
+\& \c
+.B char \(**
+指针 将 产生 警告.  
+这些 警告 能够 帮助 你 在 编译期间 发现 企图 写入 字符串常量 的 代码,
+但是 你 必须 非常 仔细 的 在 声明 和 原形 中 使用 \c
+.B const\c
+\&, 否则 他们 只能 带来 麻烦; 所以 我们 没有 让 `\|\c
+.B \-Wall\c
+\&\|' 提供 这些 警告.
+
+.TP
+.B \-Wconversion
+如果 某函数原形 导致 的 类型转换 和 无函数原形 时的 类型转换 不同,
+编译器 就 发出 警告.
+这里 包括 定点数 和 浮点数 的 互相转换, 改变 定点数 的 宽度 或 符号,
+除非 他们 和 缺省声明 (default promotion) 相同.
+
+.TP
+.B \-Waggregate\-return
+如果 定义 或 调用 了 返回 结构 或 联合 的 函数, 编译器 就 发出 警告.
+(从 语言角度 你 可以 返回 一个 数组, 然而 同样 会 导致 警告.)
+
+.TP
+.B \-Wstrict\-prototypes
+如果 函数 的 声明 或 定义 没有 指出 参数类型, 编译器 就 发出 警告.
+(如果 函数 的 前向引用说明 指出了 参数类型, 则 允许 后面 使用 旧式风格
+的 函数定义, 而 不会产生 警告.)
+
+.TP
+.B \-Wmissing\-prototypes
+如果 没有 预先 声明 函数原形 就 定义了 全局函数, 编译器 就 发出 警告.
+即使 函数定义 自身 提供了 函数原形 也会 产生 这个 警告. 他 的 目的
+是 检查 没有 在 头文件 中 声明 的 全局函数.
+
+.TP
+.B \-Wmissing\-declarations
+如果 没有 预先 声明 就 定义了 全局函数, 编译器 就 发出 警告.
+即使 函数定义 自身 提供了 函数原形 也会 产生 这个 警告. 这个选项 的 目的
+是 检查 没有 在 头文件 中 声明 的 全局函数.
+
+.TP
+.B \-Wredundant-decls
+如果 在 同一个 可见域 某定义 多次 声明, 编译器 就 发出 警告, 即使 这些
+重复声明 有效 并且 毫无差别.
+
+.TP
+.B \-Wnested-externs
+如果 某 \c
+.B extern\c
+\& 声明 出现在 函数 内部, 编译器 就 发出 警告.
+
+.TP
+.B \-Wenum\-clash
+对于 不同 枚举类型 之间 的 转换 发出 警告 (仅适用于 C++).
+
+.TP
+.B \-Wlong\-long
+如果 使用了
+.B long long \c
+类型 就 发出 警告. 该 警告 是 缺省项. 使用 `\|\c
+.B \-Wno\-long\-long\c
+\&\|' 选项 能够 防止 这个 警告.  `\|\c
+.B \-Wlong\-long\c
+\&\|' 和 `\|\c
+.B \-Wno\-long\-long\c
+\&\|' 仅 在 `\|\c
+.B \-pedantic\c
+\&\|' 之下 才起作用.
+
+.TP
+.B \-Woverloaded\-virtual
+(仅适用于 C++.) 在继承类中, 虚函数 的 定义 必须 匹配 虚函数 在 基类
+中 声明 的 类型特征 (type signature).
+当 继承类 声明了 某个函数, 它 可能 是个 错误的 尝试 企图 定义一个 虚函数,
+使用 这个 选项 能够 产生 警告:
+就是说, 当 某个函数 和 基类 中的 虚函数 同名, 但是 类型特征 不符合 基类
+的 任何 虚函数, 编译器 将发出 警告.
+
+.TP
+.B \-Winline
+如果 某函数 不能 内嵌(inline), 无论 是 声明为 inline 或者是 指定了
+.B \-finline\-functions
+选项, 编译器 都将 发出 警告.
+
+.TP
+.B \-Werror
+视 警告 为 错误; 出现 任何 警告 即 放弃 编译.
+
+.SH "调试选项 (DEBUGGING OPTION)"
+GNU CC 拥有 许多 特别选项, 既可以 调试 用户的 程序, 也可以 对 GCC 排错:
+.TP
+.B \-g
+以 操作系统 的 本地格式 (stabs, COFF, XCOFF, 或 DWARF).
+产生 调试信息. GDB 能够 使用 这些 调试信息.
+.Sp
+在 大多数 使用 stabs 格式 的 系统 上, `\|\c
+.B \-g\c
+\&\|' 选项 启动 只有 GDB 才使用 的 额外调试信息; 这些信息 使 GDB 调试
+效果 更好, 但是 有可能 导致 其他 调试器 崩溃, 或 拒绝 读入 程序.
+如果 你 确定 要 控制 是否 生成 额外的 信息, 使用`\|\c
+.B \-gstabs+\c
+\&\|', `\|\c
+.B \-gstabs\c
+\&\|',
+`\|\c
+.B \-gxcoff+\c
+\&\|', `\|\c
+.B \-gxcoff\c
+\&\|', `\|\c
+.B \-gdwarf+\c
+\&\|', 或 `\|\c
+.B \-gdwarf\c
+\&\|'
+(见下文).
+.Sp
+和 大多数 C 编译器 不同, GNU CC 允许 结合使用 `\|\c
+.B \-g\c
+\&\|' 和 `\|\c
+.B \-O\c
+\&\|' 选项. 优化的 代码 偶尔 制造 一些 惊异的 结果: 某些 声明过的 变量
+根本 不存在; 控制流程 直接 跑到 没有 预料到的 地方; 某些语句 因为 计算结果
+是 常量 或 已经确定 而 没有 执行; 某些语句 在 其他 地方 执行, 因为 他们
+被移到 循环 外面 了.
+.Sp
+然而 它 证明了 调试 优化的输出 是 可能的. 对 可能 含有 错误 的 程序
+使用 优化器 是 合理的.
+.PP
+如果 GNU CC 支持 输出 多种 调试信息, 下面的 选项 则 非常有用.
+
+.TP
+.B \-ggdb
+以 本地格式 (如果支持) 输出 调试信息, 尽可能 包括 GDB 扩展.
+
+.TP
+.B \-gstabs
+以 stabs 格式 (如果支持) 输出 调试信息, 不包括 GDB 扩展.
+这是 大多数 BSD 系统 上 DBX 使用 的 格式.
+
+.TP
+.B \-gstabs+
+以 stabs 格式 (如果支持) 输出 调试信息, 使用 只有 GNU 调试器 (GDB)
+理解的 GNU 扩展. 使用 这些扩展 有可能 导致 其他 调试器 崩溃 或 拒绝
+读入 程序.
+
+.TP
+.B \-gcoff
+以 COFF 格式 (如果支持) 输出 调试信息. 这是 在 System V 第四版 以前
+的 大多数 System V 系统 上 SDB 使用 的 格式.
+
+.TP
+.B \-gxcoff
+以 XCOFF 格式 (如果支持) 输出 调试信息. 这是 IBM RS/6000 系统
+上 DBX 调试器 使用 的 格式.
+
+.TP
+.B \-gxcoff+
+以 XCOFF 格式 (如果支持) 输出 调试信息, 使用 只有 GNU 调试器 (GDB)
+理解的 GNU 扩展. 使用 这些扩展 有可能 导致 其他 调试器 崩溃 或 拒绝
+读入 程序.
+
+.TP
+.B \-gdwarf
+以 DWARF 格式 (如果支持) 输出 调试信息. 这是 大多数 System V 第四版
+系统 上 SDB 使用 的 格式.
+
+.TP
+.B \-gdwarf+
+以 DWARF 格式 (如果支持) 输出 调试信息, 使用 只有 GNU 调试器 (GDB)
+理解的 GNU 扩展. 使用 这些扩展 有可能 导致 其他 调试器 崩溃 或 拒绝
+读入 程序.
+
+.PP
+.BI "\-g" "level"
+.br
+.BI "\-ggdb" "level"
+.br
+.BI "\-gstabs" "level"
+.br
+.BI "\-gcoff" "level"
+.BI "\-gxcoff" "level"
+.TP
+.BI "\-gdwarf" "level"
+请求 生成 调试信息, 同时 用 \c
+.I level\c
+\& 指出 需要 多少 信息. 默认的 level 值 是 2.
+.Sp
+Level 1 输出 最少量 的 信息, 仅够 在 不打算 调试 的 程序段 内 backtrace.
+包括 函数 和 外部变量 的 描述, 但是 没有 局部变量 和 行号 信息.
+.Sp
+Level 3 包含 更多的 信息, 如 程序中出现 的 所有 宏定义. 当 使用 `\|\c
+.B \-g3\c
+\&\|' 选项 的 时候, 某些 调试器 支持 宏扩展.
+
+.TP
+.B \-p
+产生 额外代码, 用于 输出 profile 信息, 供 分析程序 \c
+.B prof\c
+\& 使用.
+
+.TP
+.B \-pg
+产生 额外代码, 用于 输出 profile 信息, 供 分析程序 \c
+.B gprof\c
+\& 使用.
+
+.TP
+.B \-a
+产生 额外代码, 用于 输出 基本块 (basic block) 的 profile 信息,
+它 记录 各个 基本块 的 执行 次数, 供 诸如 \c
+.B tcov\c
+\& 此类 的 程序 分析.  但是 注意, 这个 数据格式 并非 \c
+.B tcov\c
+\& 期待的. 最终 GNU \c
+.B gprof\c
+\& 将 处理 这些数据.
+.TP
+.B \-ax
+产生 额外代码, 用于 从 'bb.in' 文件 读取 基本块 的 profile 参数, 
+把 profile 的 结果 写到 'bb.out' 文件.
+`bb.in' 包含 一张 函数 列表. 一旦 进入 列表 中的 某个 函数, profile 操作
+就 开始, 离开 最外层 的 函数 后, profile 操作 就 结束.
+以 `-' 为 前缀名 的 函数 排除在 profile 操作 之外. 
+如果 函数名 不是 唯一的, 它 可以 写成
+`/path/filename.d:functionname' 来 澄清. `bb.out' 将 列出 一些 有效的
+文件名. 这四个 函数名 具有 特殊含义:
+`__bb_jumps__' 导致 跳转 (jump) 频率 写进 `bb.out'.
+`__bb_trace__' 导致 基本块 序列 通过 管道 传到 `gzip', 输出 `bbtrace.gz' 文件.
+`__bb_hidecall__' 导致 从 跟踪 (trace) 中 排除 call 指令.
+`__bb_showret__' 导致 在 跟踪 中 包括 返回指令.
+
+.TP
+.BI "\-d" "letters"
+编译 的 时候, 在 \c
+.I letters\c
+\& 指定 的 时刻 做 调试转储 (dump). 用于 调试 编译器.
+大多数 转储 的 文件名 通过 源文件名 添加 字词 获得 (例如  `\|\c
+.B foo.c.rtl\c
+\&\|' 或 `\|\c
+.B foo.c.jump\c
+\&\|').
+
+.TP
+.B \-dM
+预处理 结束 的 时候 转储 所有的 宏定义, 不输出到 文件.
+
+.TP
+.B \-dN
+预处理 结束 的 时候 转储 所有的 宏名.
+
+.TP
+.B \-dD
+预处理 结束 的 时候 转储 所有的 宏定义, 同时 进行 正常 输出.
+
+.TP
+.B \-dy
+语法分析 (parse) 的 时候 在 标准错误 转储 调试信息.
+
+.TP
+.B \-dr
+RTL 阶段 后 转储到 `\|\c
+.I file\c
+.B \&.rtl\c
+\&\|'.
+
+.TP
+.B \-dx
+仅对 函数 生成 RTL, 而不是 编译. 通常 和 `\|\c
+.B r\c
+\&\|' 联用.
+
+.TP
+.B \-dj
+第一次 跳转优化 后 转储到 `\|\c
+.I file\c
+.B \&.jump\c
+\&\|'.
+
+.TP
+.B \-ds
+CSE (包括 有时候 跟在 CSE 后面的 跳转优化) 后 转储到 `\|\c
+.I file\c
+.B \&.cse\c
+\&\|'.
+
+.TP
+.B \-dL
+循环优化 后 转储到 `\|\c
+.I file\c
+.B \&.loop\c
+\&\|'.
+
+.TP
+.B \-dt
+第二次 CSE 处理 (包括 有时候 跟在 CSE 后面的 跳转优化) 后 转储到 `\|\c
+.I file\c
+.B \&.cse2\c
+\&\|'.
+
+.TP
+.B \-df
+流程分析 (flow analysis) 后 转储到 `\|\c
+.I file\c
+.B \&.flow\c
+\&\|'.
+
+.TP
+.B \-dc
+指令组合 (instruction combination) 后 转储到 `\|\c
+.I file\c
+.B \&.combine\c
+\&\|'.
+
+.TP
+.B \-dS
+第一次 指令安排 (instruction schedule) 后 转储到 `\|\c
+.I file\c
+.B \&.sched\c
+\&\|'.
+
+.TP
+.B \-dl
+局部寄存器分配 后 转储到 `\|\c
+.I file\c
+.B \&.lreg\c
+\&\|'.
+
+.TP
+.B \-dg
+全局寄存器分配 后 转储到 `\|\c
+.I file\c
+.B \&.greg\c
+\&\|'.
+
+.TP
+.B \-dR
+第二次 指令安排 (instruction schedule) 后 转储到 `\|\c
+.I file\c
+.B \&.sched2\c
+\&\|'.
+
+.TP
+.B \-dJ
+最后一次 跳转优化 后 转储到 `\|\c
+.I file\c
+.B \&.jump2\c
+\&\|'.
+
+.TP
+.B \-dd
+推迟分支调度 (delayed branch scheduling) 后 转储到 `\|\c
+.I file\c
+.B \&.dbr\c
+\&\|'.
+
+.TP
+.B \-dk
+寄存器\-堆栈转换 后 转储到 `\|\c
+.I file\c
+.B \&.stack\c
+\&\|'.
+
+.TP
+.B \-da
+产生 以上 所有的 转储.
+
+.TP
+.B \-dm
+运行结束后, 在 标准错误 显示 内存使用统计.
+
+.TP
+.B \-dp
+在 汇编输出 加注 指明 使用了 哪些 模式 (pattern) 及其 替代模式.
+
+.TP
+.B \-fpretend\-float
+交叉编译 的 时候, 假定 目标机 和 宿主机 使用 同样的 浮点格式. 
+它 导致 输出 错误的 浮点常数, 但是 在 目标机 上 运行 的 时候, 
+真实的 指令序列 有可能 和 GNU CC 希望 的 一样.
+
+.TP
+.B \-save\-temps
+保存 那些 通常 是 \*(lq临时\*(rq 的 中间文件; 置于 当前目录 下,
+并且 根据 源文件 命名. 因此, 用 `\|\c
+.B \-c \-save\-temps\c
+\&\|' 选项 编译 `\|\c
+.B foo.c \c
+\&\|' 会 生成 `\|\c 
+.B foo.cpp\c
+\&\|' 和 `\|\c
+.B foo.s\c
+\&\|' 以及 `\|\c
+.B foo.o\c
+\&\|' 文件.
+
+.TP
+.BI "\-print\-file\-name=" "library"
+显示 库文件 \|\c
+.nh
+.I library
+.hy
+\&\| 的 全路径名, 连接 时 会 使用 这个库 \(em\& 其他 什么事情 都不作.
+根据 这个选项, GNU CC 既不编译, 也不连接, 仅仅 显示 文件名.
+
+.TP
+.B \-print\-libgcc\-file\-name
+和 `\|\c
+.B \-print\-file\-name=libgcc.a\c
+\&\|' 一样.
+
+.TP
+.BI "\-print\-prog\-name=" "program"
+类似于 `\|\c
+.B \-print\-file\-name\c
+\&\|', 但是 查找 程序 program 如 `\|\c
+.B cpp\c
+\&\|'.
+
+.SH "优化选项 (OPTIMIZATION OPTION)"
+这些选项 控制 多种 优化措施:
+.TP
+.B \-O
+.TP
+.B \-O1
+优化. 对于 大函数, 优化编译 占用 稍微多 的 时间 和 相当大 的 内存.
+.Sp
+不使用 `\|\c
+.B \-O\c
+\&\|' 选项 时, 编译器 的 目标 是 减少 编译 的 开销, 使 编译结果 能够 调试.
+语句 是 独立的: 如果 在 两条语句 之间 用 断点 中止 程序, 你 可以 对
+任何 变量 重新 赋值, 或者 在 函数体 内 把 程序计数器 指到 其他语句,
+以及 从 源程序 中 精确地 获取 你 期待 的 结果.
+.Sp
+不使用 `\|\c
+.B \-O\c
+\&\|' 选项 时, 只有 声明了 \c
+.B register\c
+\& 的 变量 才 分配使用 寄存器.  编译结果 比 不用 `\|\c
+.B \-O\c
+\&\|' 选项 的 PCC 要 略逊一筹.
+.Sp
+使用了 `\|\c
+.B \-O\c
+\&\|' 选项, 编译器 会试图 减少 目标码 的 大小 和 执行时间.
+.Sp
+如果 指定了 `\|\c
+.B \-O\c
+\&\|' 选项, `\|\c
+.B \-fthread\-jumps\c
+\&\|' 和 `\|\c
+.B \-fdefer\-pop\c
+\&\|' 选项 将被 打开. 在 有 delay slot 的 机器 上, `\|\c
+.B \-fdelayed\-branch\c
+\&\|' 选项 将被 打开. 在 即使 没有 帧指针 (frame pointer) 也支持 调试 
+的 机器 上, `\|\c
+.B \-fomit\-frame\-pointer\c
+\&\|' 选项 将被 打开. 某些机器 上 还可能会 打开 其他选项.
+
+.TP
+.B \-O2
+多优化一些. 除了 涉及 空间 和 速度 交换 的 优化选项, 执行 几乎 所有的
+优化工作. 例如 不进行 循环展开 (loop unrolling) 和 函数内嵌 (inlining). 和 \c
+.B \-O\c
+\& 选项 比较, 这个选项 既增加了 编译时间, 也提高了 生成代码 的 运行效果.
+
+.TP
+.B \-O3
+优化的更多. 除了 打开
+.B \-O2
+所做的 一切, 它 还 打开 了
+.B \-finline\-functions
+选项.
+
+.TP
+.B \-O0
+不优化.
+.Sp
+如果 指定了 多个
+.B \-O
+选项, 不管 带不带 数字, 最后一个 选项 才是 生效 的 选项.
+
+.PP
+诸如 `\|\c
+.B \-f\c
+.I flag\c
+\&\c
+\&\|' 此类 的 选项 描述 一些 机器无关 的 开关. 大多数 开关 具有 肯定 和 
+否定 两种格式; `\|\c
+.B \-ffoo\c
+\&\|' 开关选项 的 否定格式 应该是 `\|\c
+.B \-fno\-foo\c
+\&\|'.  下面的 列表 只展示了 一种 格式 \(em\& 那个 不是 默认选项 的 格式.
+你 可以 通过 去掉 或 添加 `\|\c
+.B no\-\c
+\&\|' 构造出 另一种 格式.
+
+.TP
+.B \-ffloat\-store
+不要 在 寄存器 中 存放 浮点变量. 这样 可以 防止 某些 机器 上 不希望
+的 过高 精度, 如 68000 的 浮点寄存器 (来自 68881) 保存的 精度 超过了 \c
+.B double\c
+\& 应该 具有的 精度.
+.Sp
+对于 大多数 程序, 过高 精度 只有 好处. 但是 有些 程序 严格 依赖于 IEEE 浮点数
+的 定义. 对 这样的 程序 可以 使用 `\|\c
+.B \-ffloat\-store\c
+\&\|' 选项.
+
+.TP
+.B \-fmemoize\-lookups
+.TP
+.B \-fsave\-memoized
+使用 探索法 (heuristic) 进行 更快的 编译 (仅对 C++). 
+默认情况下 不使用 探索法. 由于 探索法 只对 某些 输入文件 有效, 
+其他程序 的 编译速度 会变得 更慢.
+.Sp
+第一次 编译器 必须 对 成员函数 (或对 成员数据 的 引用) 建立 一个 调用.
+它 必须 (1) 判断出 这个类 是否 实现了 那个 名字 的 成员函数; (2) 决定
+调用 哪个 成员函数 (涉及到 推测 需要 做 哪种 类型转换); (3) 检查 成员函数
+对 调用者 是否 可见. 所有 这些 构成 更慢的 编译.
+一般情形, 第二次 对 成员函数 (或对 成员数据 的 引用) 建立 的 调用, 必须
+再次 经过 相同 长度 的 处理. 这 意味着 象 这样的 代码
+.Sp
+\&  cout << "This " << p << " has " << n << " legs.\en";
+.Sp
+对 整个 三步骤 要做 六次 遍历. 通过 使用 软件缓存, \*(lq命中\*(rq 
+能够 显著地 减少 这种 代价. 然而 不幸的 是, 使用 这种 缓存 必须
+实现 其他 机制, 带来了 它 自己的 开销. `\|\c
+.B \-fmemoize\-lookups\c
+\&\|' 选项 打开 软件缓存.
+.Sp
+因为 函数 的 正文环境 不同, 函数 对 成员 和 成员函数 的 访问权 (可见性)
+也可能 不同,
+.B g++
+可能 需要 刷新 缓存. 使用 `\|\c
+.B \-fmemoize\-lookups\c
+\&\|' 选项, 每 编译完 一个 函数 就 刷新 缓存. 而 `\|\c
+\-fsave\-memoized\c
+\&\|' 选项 也 启用 同样的 缓存, 但是 当 编译器 发觉 最后 编译 的 函数
+的 正文环境 产生 的 访问权 和 下一个 待编译的 函数 相同, 编译器 就 保留
+缓存 内容.
+这对 某个类 定义 许多 成员函数 时 非常 有用: 除了 某些 其他类 的 友函数,
+每个 成员函数 拥有 和 其他 成员函数 完全一样 的 访问权, 因而 无需 刷新 缓存.
+
+.TP
+.B \-fno\-default\-inline
+默认为 不要 把 成员函数 内嵌, 因为 它们 定义在 类的 作用域 内 (仅C++).
+
+.TP
+.B \-fno\-defer\-pop
+一旦 函数 返回, 参数 就 立即 弹出. 对于 那些 调用 函数 后 必须 弹出 参数
+的 机器, 编译器 一般情况下 让 几次 函数调用 的 参数 堆积 在 栈 上,
+然后 一次 全部 弹出.
+
+.TP
+.B \-fforce\-mem
+做 数学运算 前 把 将要 使用的 内存操作数 送入 寄存器. 通过 把 内存访问
+转换成 潜在的 公共子表达式, 它 可能 产生 较好的 目标码. 如果 它们 不是
+公共子表达式, 指令组合 应该 消除 各自的 寄存器载荷. 我 乐意 倾听 不同意见.
+
+.TP
+.B \-fforce\-addr
+做 数学运算 前 把 将要 使用的 内存地址常数 送入 寄存器. 它 可能 和 `\|\c
+.B \-fforce\-mem\c
+\&\|' 一样 产生 较好的 目标码. 我 乐意 倾听 不同意见.
+
+.TP
+.B \-fomit\-frame\-pointer
+对于 不需要 帧指针 (frame pointer) 的 函数, 不要 在 寄存器 中 保存 帧指针.
+这样 能够 避免 保存, 设置 和 恢复 帧指针 的 指令; 同时 对 许多 函数 提供
+一个 额外的 寄存器. \c
+.I 但是 在 大多数 机器 上将 无法 调试\c
+\&.
+.Sp
+某些机器上, 如 Vax, 这个 选项 无效, 因为 标准调用序列 自动 处理 帧指针,
+通过 假装 不存在 而 不保存 任何 东西. 机器描述宏 \c
+.B FRAME_POINTER_REQUIRED\c
+\& 控制 目标机 是否 支持 这个选项.
+
+.TP
+.B \-finline\-functions
+把 所有 简单的 函数 集成进 调用者. 编译器 探索式地 决定 哪些 函数 足够
+简单, 值得 这种 集成.
+.Sp
+如果 集成了 所有 给定函数 的 调用, 而且 函数 声明为 \c
+.B static\c
+\&, 那么 一般说来 GCC 有权 不按 汇编代码 输出 函数.
+
+.TP
+.B \-fcaller\-saves
+允许 在 寄存器 里 分配 数值, 但是 这个方案 通常 受到 各个 函数调用 的 冲击,
+因此 GCC 生成 额外的 代码, 在 函数调用 的 前后 保存 和 复原 寄存器 内容.
+仅当 生成代码 看上去 优于 反之结果 时 才 实现 这样 的 分配.
+.Sp
+某些 机器 上 该选项 默认为 允许, 通常 这些 机器 没有 调用保护寄存器 
+代替 使用.
+
+.TP
+.B \-fkeep\-inline\-functions
+即使 集成了 某个 函数 的 所有 调用, 而且 该函数 声明为 \c
+.B static\c
+\&, 仍然 输出 这个函数 一个 独立的, 运行时 可调用 的 版本.
+
+.TP
+.B \-fno\-function\-cse
+不要 把 函数地址 存入 寄存器; 让 调用 固定函数 的 指令 显式 给出 函数地址.
+.Sp
+这个选项 产生 效率 较低 的 目标码, 但是 如果 不用 这个选项, 某些 不寻常
+的 hack, 改变 汇编器 的 输出, 可能 因 优化 而 带来 困惑.
+
+.TP
+.B \-fno\-peephole
+禁止 任何 机器相关的 peephole 优化.
+
+.TP
+.B \-ffast-math
+这个选项 出于 速度优化, 允许 GCC 违反 某些 ANSI 或 IEEE 规则/规格.
+例如, 它 允许 编译器 假设 \c
+.B sqrt\c
+\& 函数 的 参数 是 非负数.
+.Sp
+这个选项 不被 任何 `\|\c
+.B \-O\c
+\&\|' 选项 打开, 因为 对于 严格 依靠 IEEE 或 ANSI 规则/规格 实现
+的 数学函数, 程序 可能 会产生 错误的 结果.
+
+.PP
+下列 选项 控制 特定的 优化. `\|\c
+.B \-O2\c
+\&\|' 选项 打开 下面的 大多数 优化项, 除了 `\|\c
+.B \-funroll\-loops\c
+\&\|' 和 `\|\c
+.B \-funroll\-all\-loops\c
+\&\|' 项.
+.PP
+而 `\|\c
+.B \-O\c
+\&\|' 选项 通常 打开 `\|\c
+.B \-fthread\-jumps\c
+\&\|' 和 `\|\c
+.B \-fdelayed\-branch\c
+\&\|' 优化项, 但是 特定的 机器 上的 默认优化项 有可能 改变.
+.PP
+如果 特别情况 下 非常 需要 \*(lq微调\*(rq 优化, 你 可以 使用 下面的 选项.
+
+.TP
+.B \-fstrength\-reduce
+执行 循环强度缩小 (loop strength reduction) 优化, 并且 消除 重复变量.
+
+.TP
+.B \-fthread\-jumps
+执行 优化 的 地点 是, 如果 某个 跳转分支 的 目的地 存在 另一个 条件比较,
+而且 该 条件比较 包含在 前一个 比较语句 之内, 那么 执行 优化.
+根据 条件 是 true 或者 false, 前面 那条 分支 重定向 到 第二条 分支
+的 目的地 或者 紧跟在 第二条 分支 后面.
+
+.TP
+.B \-funroll\-loops
+执行 循环展开 (loop unrolling) 优化. 仅对 循环次数 能够 在 编译时 或
+运行时 确定 的 循环 实行.
+
+.TP
+.B \-funroll\-all\-loops
+执行 循环展开 (loop unrolling) 优化. 对 所有 循环 实行. 通常 使 
+程序 运行的 更慢.
+
+.TP
+.B \-fcse\-follow\-jumps
+在 公共子表达式消元 (common subexpression elimination) 的 时候,
+如果 没有 其他 路径 到达 某个 跳转 的 目的地, 就 扫过 这条 jump 指令.
+例如, 如果 CSE 遇到 带有 \c
+.B else\c
+从句 的 \c
+.B if\c
+\& 语句, 当 条件测试 为 false 时, CSE 就 跟在 jump 后面.
+
+.TP
+.B \-fcse\-skip\-blocks
+它 类似于 `\|\c
+.B \-fcse\-follow\-jumps\c
+\&\|' 选项, 但是 CSE 跟在 条件跳转 后面, 条件跳转 跳过了 语句块(block).
+如果 CSE 遇到 一条 简单的 \c
+.B if\c
+\& 语句, 不带 else 从句, `\|\c
+.B \-fcse\-skip\-blocks\c
+\&\|' 选项 将导致 CSE 跟在 \c
+.B if\c
+\& 产生 的 跳转 后面.
+
+.TP
+.B \-frerun\-cse\-after\-loop
+执行 循环优化 后, 重新 进行 公共子表达式消元.
+
+.TP
+.B \-felide\-constructors
+如果 看上去 合理 就 省略 构造子 (仅C++). 
+根据 这个选项, 对于 下面的 代码, GNU C++ 直接 从 调用 \c
+.B foo\c
+\& 初始化 \c
+.B y\c
+\&, 而无需 通过 临时变量: 
+.Sp
+A foo ();
+A y = foo ();
+.Sp
+如果 没有 这个选项, GNU C++ 首先 通过 调用 类型 \c
+.B A \c
+合适的  构造子 初始化 \c
+.B y\c
+\&; 然后 把 \c
+.B foo\c
+\& 的 结果 赋给 临时变量; 最后, 用 临时变量 替换 `\|\c
+.B y\c
+\&\|' 的 初始值.
+.Sp
+ANSI C++ 标准草案 规定了 默认行为 (`\|\c
+.B \-fno\-elide\-constructors\c
+\&\|'). 如果 程序的 构造子 存在 副效应, `\|\c
+.B \-felide-constructors\c
+\&\|' 选项 能够 使 程序 有 不同的 表现, 因为 可能 忽略 一些 构造子 的 调用.
+
+.TP
+.B \-fexpensive\-optimizations
+执行 一些 相对 开销 较大 的 次要 优化.
+
+.TP
+.B \-fdelayed\-branch
+如果 对 目标机 支持 这个 功能, 它 试图 重新 排列 指令, 以便 利用
+延迟分支 (delayed branch) 指令 后面的 指令 空隙.
+
+.TP
+.B \-fschedule\-insns
+如果 对 目标机 支持 这个 功能, 它 试图 重新 排列 指令, 以便 消除 因
+数据未绪 造成的 执行停顿. 这可以 帮助 浮点运算 或 内存访问 较慢 的 机器
+调取 指令, 允许 其他 指令 先执行, 直到 调取 指令 或 浮点运算 完成.
+
+.TP
+.B \-fschedule\-insns2
+类似于 `\|\c
+.B \-fschedule\-insns\c
+\&\|' 选项, 但是 在 寄存器分配 完成后, 需要 一个 额外的 指令调度 过程.
+对于 寄存器 数目 相对 较少, 而且 取内存指令 大于 一个周期 的 机器,
+这个选项 特别 有用.
+
+.SH "目标机选项 (TARGET OPTION)"
+缺省情况下, GNU CC 编译出 本机 类型 的 目标码. 然而 也可以 把他 安装成
+交叉编译器, 为 其他 机型 编译 程序. 事实上, 针对 不同的 目标机, 可以 
+同时 安装 GNU CC 相应 的 配置. 然后 用 `\|\c
+.B \-b\c
+\&\|' 选项 指定 目标机种.
+
+.PP
+顺便提一下, 新版本 和 旧版本 的 GNU CC 可以 共存. 其中一个 版本 (可能是
+最新的 那个) 为 缺省 版本, 但是 有时候 你 希望 使用 其他 版本.
+
+.TP
+.BI "\-b " "machine"
+参数 \c
+.I machine\c
+\& 指出 编译的 目标机种. 这个 选项 用于 安装为 交叉编译器 的 GNU CC.
+.Sp
+参数 \c
+.I machine\c
+\& 的 值 和 配置 GNU CC 交叉编译器 时 设置 的 机器类型 一样.
+例如, 如果 交叉编译器 配置有 `\|\c
+.B configure
+i386v\c
+\&\|', 意思是 编译 80386 上的 System V 目标码, 那么 你 可以 通过 `\|\c
+.B \-b i386v\c
+\&\|' 运行 交叉编译器.
+.Sp
+如果 没有 指定 `\|\c
+.B \-b\c
+\&\|' 选项, 通常 指 编译 本机 目标码.
+
+.TP
+.BI "\-V " "version"
+参数 \c
+.I version\c
+\& 指出 运行 哪个 版本 的 GNU CC. 这个 选项 用于 安装了 多个 版本 的 GCC.
+例如, 如果
+.I version\c
+\& 是 `\|\c
+.B 2.0\c
+\&\|', 意味着 运行 GNU CC 2.0 版.
+.Sp
+如果 没有 指定 `\|\c
+.B \-V\c
+\&\|' 选项, 缺省版本 取决于 GNU CC 的 安装方式, 一般说来 推荐 使用 通用版本.
+
+
+.SH "机器相关选项 (MACHINE DEPENDENT OPTION)"
+每一种 目标机型 都有 自己的 特别选项, 这些 选项 用 `\|\c
+.B \-m \c
+\&\|' 开关 引导, 选择 不同的 硬件 型号 或 配置 \(em\& 例如, 68010 还是 68020, 
+有没有 浮点协处理器. 通过 指定 选项, 安装 编译器 的 一个 版本 能够 为 所有的
+型号 或 配置 进行 编译.
+
+.PP
+此外, 编译器 的 某些 配置 支持 附加的 特殊选项, 通常 是 为了 在 命令行 上
+兼容 这个 平台 的 其他 编译器.
+
+.PP
+下面是 针对 68000 系列 定义 的 `\|\c
+.B \-m\c
+\&\|' 选项:
+.TP
+.B \-m68000
+.TP
+.B \-mc68000
+输出 68000 的 目标码. 
+如果 编译器 按 基于 68000 的 系统 配置, 这个 选项 就是 缺省选项.
+
+.TP
+.B \-m68020
+.TP
+.B \-mc68020
+输出 68020 的 目标码 (而不是 68000).  
+如果 编译器 按 基于 68020 的 系统 配置, 这个 选项 就是 缺省选项.
+
+.TP
+.B \-m68881
+输出 包含 68881 浮点指令 的 目标码.
+对于 大多数 基于 68020 的 系统 这是 缺省选项, 除非 设置 编译器 时 指定了
+.B \-nfp .
+
+.TP
+.B \-m68030
+输出 68030 的 目标码.  
+如果 编译器 按 基于 68030 的 系统 配置, 这个 选项 就是 缺省选项.
+
+.TP
+.B \-m68040
+输出 68040 的 目标码.  
+如果 编译器 按 基于 68040 的 系统 配置, 这个 选项 就是 缺省选项.
+
+.TP
+.B \-m68020\-40
+输出 68040 的 目标码, 但是 不使用 新指令. 生成 的 代码 可以 在 68020/68881 
+上, 也可以 在 68030 或 68040 上 较有效地 运行.
+
+.TP
+.B \-mfpa
+输出 包含 SUN FPA 浮点指令 的 目标码.
+
+.TP
+.B \-msoft\-float
+输出 包含 浮点库调用 的 目标码.
+.I 警告:
+所需的库 不是 GNU CC 的 组成部分. 一般说来 GCC 使用 该机型 本地 C 编译器 的
+相应部件, 但是 作 交叉编译 时 却不能 直接 使用. 你 必须 自己 管理 提供 合适的
+函数库 用于 交叉编译.
+
+.TP
+.B \-mshort
+认为 \c
+.B int\c
+\& 类型 是 16 位宽, 相当于 \c
+.B short int\c
+\&.
+
+.TP
+.B \-mnobitfield
+不使用 位域 (bit-field) 指令.  `\|\c
+.B \-m68000\c
+\&\|' 隐含指定了
+`\|\c
+.B \-mnobitfield\c
+\&\|'.
+
+.TP
+.B \-mbitfield
+使用 位域指令.  `\|\c
+.B \-m68020\c
+\&\|' 隐含指定了
+`\|\c
+.B \-mbitfield\c
+\&\|'.  如果 你 使用 未改装的 gcc, 这就是 默认选项.
+
+.TP
+.B \-mrtd
+采用 另一种 函数调用约定, 函数 接受 固定 数目的 参数, 用 \c
+.B rtd
+指令 返回, 该指令 返回时 弹出 栈内的 参数. 这个 方法 能够 使 调用者
+节省 一条 指令, 因为 他 这里 不需要 弹出 参数.
+.Sp
+这种 调用约定 不兼容 UNIX 的 正常 调用. 因此 如果 你 需要 调用 UNIX
+编译器 编译的 库函数, 你 就不能 使用 这个选项.
+.Sp
+此外, 所有 参数数量 可变地 函数 必须 提供 函数原型 (包括 \c
+.B printf\c
+\&); 否则 编译器 会生成 错误的 调用 代码.
+.Sp
+另外, 如果 调用 函数 时 携带了 过多的 参数, 编译器 将 生成 严重错误的
+代码. (正常情况下, 多余的 参数 被 安全无害的 忽略.)
+.Sp
+68010 和 68020 处理器 支持 \c
+.B rtd\c
+\& 指令, 但是 68000 不支持.
+
+.PP
+下面是 针对 VAX 定义 的 `\|\c
+.B \-m\c
+\&\|' 选项:
+
+.TP
+.B \-munix
+禁止 输出 某些 跳转指令 (\c
+.B aobleq\c
+\& 等等), VAX 的 UNIX 汇编器 无法 跨越 长范围 (long ranges) 进行 处理.
+
+.TP
+.B \-mgnu
+如果 使用 GNU 汇编器, 则 输出 那些 跳转指令, 
+
+.TP
+.B \-mg
+输出 g-format 浮点数, 取代 d-format.
+
+.PP
+下面是 SPARC 支持的 `\|\c
+.B \-m\c
+\&\|' 选项开关:
+
+.PP
+.B \-mfpu
+.TP
+.B \-mhard\-float
+输出 包含 浮点指令 的 目标码. 这是 缺省选项.
+
+.PP
+.B \-mno\-fpu
+.TP
+.B \-msoft\-float
+输出 包含 浮点库调用 的 目标码.
+.I 警告:
+没有 为 SPARC 提供 GNU 浮点库. 一般说来 使用 该机型 本地 C 编译器 的
+相应部件, 但是 不能 直接 用于 交叉编译. 你 必须 自己 安排, 提供 用于
+交叉编译 的 库函数.
+.Sp
+.B \-msoft\-float
+改变了 输出文件 中的 调用约定; 因此 只有 用 这个 选项 编译
+.I 整个
+程序 才有 意义.
+
+.PP
+.B \-mno\-epilogue
+.TP
+.B \-mepilogue
+使用
+.B \-mepilogue
+(缺省) 选项 时, 编译器 总是 把 函数 的 退出 代码 放在 函数 的 尾部.
+任何 在 函数 中间 的 退出 语句 (例如 C 中的 return 语句) 将 产生出 
+跳转指令 指向 函数 尾部.
+.Sp
+使用
+.BR \-mno\-epilogue 
+选项 时, 编译器 尽量 在 每个 函数 退出点 嵌入 退出 代码.
+
+.PP
+.B \-mno\-v8
+.TP
+.B \-mv8
+.TP
+.B \-msparclite
+这三个 选项 选择 不同种类 的 SPARC 系统.
+.Sp
+默认情况下 (除非 特别为 Fujitsu SPARClite 配置), GCC 生成 SPARC v7 目标码.
+.Sp
+.B \-mv8
+生成 SPARC v8 目标码. 他 和 v7 目标码 唯一的 区别 是, 编译器 生成 整数乘法
+和 整数除法 指令, SPARC v8 支持 该指令, 而 v7 体系 不支持.
+.Sp
+.B \-msparclite
+生成 SPARClite 目标码. 增加了 SPARClite 支持的 整数乘法, 整数除法单步扫描
+(integer divide step and scan (ffs)) 指令. v7 体系 不支持 这些 指令.
+
+.PP
+.B \-mcypress
+.TP
+.B \-msupersparc
+这两个 选项 选择 处理器 型号, 针对 处理器 进行 代码 优化.
+.Sp
+.B \-mcypress
+选项 (默认项) 使 编译器 对 Cypress CY7C602 芯片 优化 代码, 
+SparcStation/SparcServer 3xx 系列 使用 这种 芯片. 该选项 也 适用于 老式的
+SparcStation 1, 2, IPX 等 机型..
+.Sp
+.B \-msupersparc
+选项 使 编译器 对 SuperSparc 处理器 优化 代码, 
+SparcStation 10, 1000 和 2000 系列 使用 这种 芯片. 同时 该选项 启用
+完整的 SPARC v8 指令集.
+
+.PP
+下面是 针对 Convex 定义 的 `\|\c
+.B \-m\c
+\&\|' 选项:
+
+.TP
+.B \-mc1
+输出 C1 的 目标码. 当 编译器 对 C1 配置时, 这是 默认选项.
+.TP
+.B \-mc2
+输出 C2 的 目标码. 当 编译器 对 C2 配置时, 这是 默认选项.
+.TP
+.B \-margcount
+在 每个 参数列表 的 前面 放置 一个 参数计数字 (argument count word). 
+某些 不可移植 的 Convex 和 Vax 程序 需要 这个 参数计数字.
+(调试器 不需要 他, 除非 函数 带有 变长参数 列表; 这个 信息 存放在 符号表 中.)
+
+.TP
+.B \-mnoargcount
+忽略 参数计数字. 如果 你 使用 未改装 的 gcc, 这是 默认 选项.
+
+.PP
+下面是 针对 AMD Am29000 定义 的 `\|\c
+.B \-m\c
+\&\|' 选项:
+.TP
+.B \-mdw
+生成的 目标码 认为 DW 置位, 就是说, 字节 和 半字 操作 由 硬件 直接 支持.
+该选项 是 默认选项.
+.TP
+.B \-mnodw
+生成的 目标码 认为 DW 没有 置位.
+.TP
+.B \-mbw
+生成的 目标码 认为 系统 支持 字节 和 半字 写操作. 该选项 是 默认选项.
+.TP
+.B \-mnbw
+生成的 目标码 认为 系统 不支持 字节 和 半字 写操作. 该选项 隐含 开启 了 `\|\c
+.B \-mnodw\c
+\&\|' 选项.
+.TP
+.B \-msmall
+使用 小内存模式, 小内存模式 假设 所有 函数 的 地址 位于 某个 256 KB 段内,
+或者 所有 函数 的 绝对地址 小于 256K. 这样 就可以 用 \c
+.B call\c
+\& 指令 代替 \c
+.B const\c
+\&, \c
+.B consth\c
+\&, \c
+.B calli\c
+\& 指令 序列.
+.TP
+.B \-mlarge
+假设 不能 使用 \c
+.B call\c
+\& 指令; 这是 默认选项.
+.TP
+.B \-m29050
+输出 Am29050 的 目标码.
+.TP
+.B \-m29000
+输出 Am29000 的 目标码. 这是 默认选项.
+.TP
+.B \-mkernel\-registers
+生成的 目标码 引用 \c
+.B gr64-gr95\c
+\& 寄存器 而不是
+.B gr96-gr127\c
+\& 寄存器. 该选项 可以 用于 编译 内核代码, 内核 需要 一组 全局寄存器,
+这些 全局寄存器 和 用户模式 使用的 寄存器 完全无关.
+.Sp
+注意, 使用 这个 选项 时, `\|\c
+.B \-f\c
+\&\|' 选项 中的 寄存器名字 必须是 normal, user-mode, names.
+
+.TP
+.B \-muser\-registers
+使用 普通 全局寄存器集 \c
+.B gr96-gr127\c
+\&.  这是 默认选项.
+.TP
+.B \-mstack\-check
+在 每次 堆栈 调整 后 插入 一条 \c
+.B _\|_msp_check\c
+\& 调用. 这个选项 常用于 内核代码.
+
+.PP
+下面是 针对 Motorola 88K 体系 定义 的 `\|\c
+.B \-m\c
+\&\|' 选项:
+.TP
+.B \-m88000
+生成的 目标码 可以 在 m88100 和 m88110 上 正常工作.
+.TP
+.B \-m88100
+生成的 目标码 在 m88100 上 工作的 最好, 但也可以 在 m88110 上 运行.
+.TP
+.B \-m88110
+生成的 目标码 在 m88110 上 工作的 最好, 可能 不能 在 m88100 上 运行.
+.TP
+.B \-midentify\-revision
+在 汇编器 的 输出端 包含 一条 \c
+.B ident\c
+\& 指令, 记录 源文件名, 编译器名字 和 版本, 时标, 以及 使用的 编译选项,
+.TP
+.B \-mno\-underscores
+在 汇编器 的 输出端, 符号名字 前面 不添加 下划线. 默认情况 是 在 每个
+名字 前面 增加 下划线 前缀.
+.TP
+.B \-mno\-check\-zero\-division
+.TP
+.B \-mcheck\-zero\-division
+早期 型号 的 88K 系统 在 除零操作 上 存在 问题, 特定情况下 许多 机器
+无法 自陷. 使用 这些 选项 可以 避免包含 (或 可以 显明包含) 附加的 代码, 
+这些代码 能够 检查 除零错, 发送 例外信号. GCC 所有 88K 的 配置 默认 使用 `\|\c
+.B \-mcheck\-zero\-division\c
+\&\|' 选项.
+.TP
+.B \-mocs\-debug\-info
+.TP
+.B \-mno\-ocs\-debug\-info
+包含 (或忽略) 附加的 调试信息 (关于 每个 栈架结构 中 寄存器 的 使用),
+88Open Object Compatibility Standard, \*(lqOCS\*(rq, 对 此信息 做了 说明.
+GDB 不需要 这些 额外信息.
+DG/UX, SVr4, 和 Delta 88 SVr3.2 的 默认配置 是 包含 调试信息, 其他
+88k 机型 的 默认配置 是 忽略 这个信息.
+.TP
+.B \-mocs\-frame\-position
+.TP
+.B \-mno\-ocs\-frame\-position
+强制 (或 不要求) 把 寄存器值 存储到 栈架结构 中的 指定位置 (按 OCS 的说明).
+DG/UX, Delta88 SVr3.2 和 BCS 的 默认配置 使用 `\|\c
+.B \-mocs\-frame\-position\c
+\&\|' 选项; 其他 88k 机型 的 默认配置 是 `\|\c
+.B \-mno\-ocs\-frame\-position\c
+\&\|'.
+.TP
+.B \-moptimize\-arg\-area
+.TP
+.B \-mno\-optimize\-arg\-area
+控制 如何 在 堆栈结构 中 存储 函数参数. `\|\c
+.B \-moptimize\-arg\-area\c
+\&\|' 节省 空间, 但是 有可能 宕掉 某些 调试器 (不是 GDB). `\|\c
+.B \-mno\-optimize\-arg\-area\c
+\&\|' 证实 比 标准选项 好. 默认情况下 GCC 不优化 参数域.
+
+.TP
+.B \-mshort\-data\-\c
+.I num
+通过 和 \c
+.B r0\c
+\& 关联, 产生 较小的 数据引用 (data reference), 这样 就可以 用 单指令
+调入 一个 数值 (而不是 平常的 双指令). 用户 通过 选项中的 \c
+.I num\c
+\& 控制 改变 哪种 数据引用. 例如, 如果 你 指定了 `\|\c
+.B \-mshort\-data\-512\c
+\&\|', 那么 受影响的 数据引用 是 小于 512 字节 的 数据移动. \c
+.B \-mshort\-data\-\c
+.I num\c
+选项 对 大于 64K 的 \c
+.I num \c
+无效.
+
+.PP
+.B \-mserialize-volatile
+.TP
+.B \-mno-serialize-volatile
+产生, 或 不产生 代码 来保证 对 易变内存访问 的 结果一致.
+.Sp
+对于 常用的 处理器 子型号, GNU CC 始终 默认 保证 这种 一致性.
+如何实现 结果一致 取决于 处理器 子型号.
+.Sp
+m88100 处理器 不对 内存引用 重新安排, 因此 访问结果 始终一致.
+如果 使用了 `\|\c
+.B \-m88100\c
+\&\|' 选项, GNU CC 不产生 任何 针对 结果一致 的 特别指令.
+.Sp
+m88110 处理器 的 内存引用顺序 并不始终 符合 指令 请求的 引用顺序.
+特别是 某条 读取指令 可能 在 先前的 存储指令 之前 执行.
+多处理器 环境下, 乱序访问 扰乱了 易变内存访问 的 结果一致.
+因此 当使用 `\|\c
+.B \-m88000\c
+\&\|' 或 `\|\c
+.B \-m88110\c
+\&\|' 选项时, GNU CC 在 适当的时候 产生 特别的指令 迫使 执行顺序 正确.
+.Sp
+这些 用于 保证 一致性 的 额外代码 有可能 影响 程序 的 性能. 如果 你 确认
+能够 安全地 放弃 这种 保证, 你 可以 使用 `\|\c
+.B \-mno-serialize-volatile\c
+\&\|' 选项.
+.Sp
+如果 你 使用 `\|\c
+.B \-m88100\c
+\&\|' 选项, 但是 需要 在 m88110 处理器 上 运行时 的 结果一致, 
+你 应该 加上 `\|\c
+.B \-mserialize-volatile\c
+\&\|' 选项.
+
+
+.PP
+.B \-msvr4
+.TP
+.B \-msvr3
+打开 (`\|\c
+.B \-msvr4\c
+\&\|') 或 关闭 (`\|\c
+.B \-msvr3\c
+\&\|') 和 System V 第四版 (SVr4) 相关的 编译器扩展. 效果 如下:
+.TP
+\ \ \ \(bu
+输出 哪种 汇编语法 (你 可以 使用 `\|\c
+.B \-mversion\-03.00\c
+\&\|' 选项 单独 选择).
+.TP
+\ \ \ \(bu
+`\|\c
+.B \-msvr4\c
+\&\|' 使 C 预处理器 识别 `\|\c
+.B #pragma weak\c
+\&\|' 指令
+.TP
+\ \ \ \(bu
+`\|\c
+.B \-msvr4\c
+\&\|' 使 GCC 输出 额外的 声明指令(declaration directive), 用于 SVr4.
+.PP
+除了 SVr4 配置, `\|\c
+.B \-msvr3\c
+\&\|' 是 所有 m88K 配置 的 默认选项.
+
+.TP
+.B \-mtrap\-large\-shift
+.TP
+.B \-mhandle\-large\-shift
+包含 一些 指令, 用于 检测 大于 31 位 的 位移 (bit-shift); 
+根据 相应的 选项, 对 这样 的 位移 发出 自陷 (trap) 或 执行 适当 的 处理代码.
+默认情况下, GCC 对 大位移 不做 特别处理.
+
+.TP
+.B \-muse\-div\-instruction
+很早以前 的 88K 型号 没有 (div) 除法指令, 因此 默认情况下 GCC 避免 产生
+这条 指令. 而 这个 选项 告诉 GCC 该指令 是 安全的.
+
+.TP
+.B \-mversion\-03.00
+在 DG/UX 配置 中 存在 两种 风格 的 SVr4. 这个选项 修改
+.B \-msvr4 ,
+选择 hybrid-COFF 或 real-ELF 风格. 其他 配置 均 忽略 该选项.
+
+.TP
+.B \-mwarn\-passed\-structs
+如果 某个函数 把 结构 当做 参数 或 结果 传递, GCC 发出 警告.
+随着 C 语言 的 发展, 人们 已经 改变了 传递 结构 的 约定, 它 往往 导致
+移植问题. 默认情况下, GCC 不会 发出 警告.
+
+.PP
+下面的选项 用于 IBM RS6000:
+.PP
+.B \-mfp\-in\-toc
+.TP
+.B \-mno\-fp\-in\-toc
+控制 是否 把 浮点常量 放到 内容表 (TOC) 中, 内容表 存放 所有的 全局变量
+和 函数地址. 默认情况下, GCC 把 浮点常量 放到 这里; 如果 TOC 溢出, `\|\c
+.B \-mno\-fp\-in\-toc\c
+\&\|' 选项 能够 减少 TOC 的 大小, 这样 就可以 避免 溢出.
+
+.PP
+下面的 `\|\c
+.B \-m\c
+\&\|' 选项 用于 IBM RT PC:
+.TP
+.B \-min\-line\-mul
+对于 整数乘法 使用 嵌入代码. 这是 默认选项.
+.TP
+.B \-mcall\-lib\-mul
+对于 整数乘法 使用 \c
+.B lmul$$\c
+\& .
+.TP
+.B \-mfull\-fp\-blocks
+生成 全尺寸 浮点数据块, 包括 IBM 建议 的 最少数量 的 活动空间 (scratch space).
+这是 默认选项.
+.TP
+.B \-mminimum\-fp\-blocks
+不要 在 浮点数据块 中 包括 额外的 活动空间. 这样 就 产生 较小 但是 略慢
+的 可执行程序, 因为 活动空间 必须 动态分配.
+.TP
+.B \-mfp\-arg\-in\-fpregs
+采用 不兼容 IBM 调用约定 的 调用序列, 通过 浮点寄存器 传送 浮点参数.
+注意, 如果 指定了 这个选项, \c
+.B varargs.h\c
+\& 和 \c
+.B stdargs.h\c
+\& 将 无法 支持 浮点单元.
+
+.TP
+.B \-mfp\-arg\-in\-gregs
+使用 正常的 调用约定 处理 浮点参数. 这是 默认选项.
+
+.TP
+.B \-mhc\-struct\-return
+通过 内存 返回 大于 一个字 的 结构, 而不是 通过 寄存器.
+用于 兼容 MetaWare HighC (hc) 编译器. 使用 `\|\c
+.B \-fpcc\-struct\-return\c
+\&\|' 选项 可以 兼容 Portable C 编译器 (pcc).
+
+.TP
+.B \-mnohc\-struct\-return
+如果可以, 通过 寄存器 返回 某些 大于 一个字 的 结构. 这是 默认选项.
+如果 打算 兼容 IBM 提供 的 编译器, 请使用 `\|\c
+.B \-fpcc\-struct\-return\c
+\&\|' 或
+`\|\c
+.B \-mhc\-struct\-return\c
+\&\|' 选项.
+
+.PP
+下面的  `\|\c
+.B \-m\c
+\&\|' 选项 用于 MIPS 家族 的 计算机:
+.TP
+.BI "\-mcpu=" "cpu-type"
+生成 指令 的 时候, 假设 默认的 机器类型 是
+.I cpu-type .
+默认情况下 的
+.I cpu-type
+是
+.BR default ,
+GCC 将选取 任何机型 上 都是 最长周期时间 的 指令, 这样 才能使 代码
+在 所有的 MIPS 处理器 上 以 合理 的 速度 运行. 
+.I cpu-type
+的 其他 选择 是
+.BR r2000 ,
+.BR r3000 ,
+.BR r4000 ,
+和
+.BR r6000 .
+虽然 选定 某个 
+.I cpu-type
+后, GCC 将 针对 选定的 芯片 安排 对应的 工作, 但是 如果 不指定�
+.B \-mips2
+或
+.B \-mips3
+选项, 编译器 不会 输出 任何 不符合 MIPS ISA (instruction set architecture)
+一级 的 代码.
+
+.TP
+.B \-mips2
+输出 MIPS ISA 二级指令 (可能的扩展, 如平方根指令).
+.B \-mcpu=r4000
+或
+.B \-mcpu=r6000
+选项 必须 和
+.BR \-mips2 
+联用.
+
+.TP
+.B \-mips3
+输出 MIPS ISA 三级指令 (64位指令).
+.B \-mcpu=r4000
+选项 必须 和
+.BR \-mips2 
+联用. (译注: 疑为 \-mips3)
+
+.TP
+.B \-mint64
+.TP
+.B \-mlong64
+.TP
+.B \-mlonglong128
+这些 选项 目前 不起作用.
+
+.TP
+.B \-mmips\-as
+产生 用于 MIPS 汇编器 的 代码, 同时 使用
+.B mips\-tfile
+添加 普通的 调试信息. 对于 大多数 平台 这是 默认选项, 除了
+OSF/1 参考平台, 它 使用 OSF/rose 目标 格式. 如果 打开了 任一个
+.BR \-ggdb ,
+.BR \-gstabs ,
+或
+.B \-gstabs+
+选项开关,
+.B mips\-tfile
+程序 就把 stab 封装在 MIPS ECOFF 里面.
+
+.TP
+.B \-mgas
+产生 用于 GNU 汇编器 的 代码.  在 OSF/1 参考平台 上 这是 默认选项,
+它 使用 OSF/rose 目标 格式.
+
+.TP
+.B \-mrnames
+.TP
+.B \-mno\-rnames
+.B \-mrnames
+开关选项 告诉 输出代码 使用 MIPS 软件名称 说明 寄存器, 而不是 硬件名称
+(就是说, 用
+.B a0
+代替
+.BR $4 ).
+GNU 汇编器 不支持
+.B \-mrnames
+选项, 而 MIPS 汇编器 则 运行 MIPS C 预处理器 处理 源文件.
+.B \-mno\-rnames
+是 默认选项.
+
+.TP
+.B \-mgpopt
+.TP
+.B \-mno\-gpopt
+.B \-mgpopt
+开关选项 要求 在 正文段 中 把 所有的 数据声明 写到 指令 前面, 使 各种 MIPS 
+汇编器 对 短类型 全局 或 静态 数据项 (short global or static data items)
+输出 单字内存访问 而不是 双字内存访问.
+当 打开 编译优化 时, 这是 默认功能.
+
+
+.TP
+.B \-mstats
+.TP
+.B \-mno\-stats
+每次 处理完 非嵌入函数 (non-inline function) 后,
+.B \-mstats
+开关选项 使 编译器 向 标准错误文件 输出 一行 关于 程序 的 统计资料
+(保存的 寄存器 数目, 堆栈 大小, 等等).
+
+.TP
+.B \-mmemcpy
+.TP
+.B \-mno\-memcpy
+.B \-mmemcpy
+开关选项 使 所有 的 块移动 操作 调用 适当的 string 函数
+.RB ( memcpy
+或
+.BR bcopy ),
+而不是 生成 嵌入代码.
+
+.TP
+.B \-mmips\-tfile
+.TP
+.B \-mno\-mips\-tfile
+当 MIPS 汇编器 生成
+.B mips\-tfile
+文件 (用于 帮助 调试) 后, 
+.B \-mno\-mips\-tfile
+开关选项 阻止 编译器 使用 
+.B mips\-tfile
+后期处理 (postprocess) 目标文件. 不运行
+.B mips\-tfile
+就 没有 调试器 关注的 局部变量. 另外, 
+.B stage2
+和
+.B stage3
+目标文件 将把 临时文件名 传递给 汇编器, 嵌在 目标文件 中, 这 意味着
+不比较 目标文件 是否 相同.
+
+.TP
+.B \-msoft\-float
+输出 包含 浮点库调用.
+.I 警告: 
+所需库 不是 GNU CC 的 一部分. 一般说来 使用 该机型 本地 C 编译器 的
+相应部件, 但是 不能 直接 用于 交叉编译, 你 必须 自己 安排, 提供
+交叉编译 适用的 库函数.
+
+.TP
+.B \-mhard\-float
+输出 包含 浮点指令. 如果 编译器 没有 被改动, 这就是 默认选项.
+
+.TP
+.B \-mfp64
+编译器 认为 状态字 的
+.B FR
+置位(on), 也就是说 存在 32 64-bit 浮点寄存器, 而不是 32 32-bit 浮点寄存器.
+同时 必须 打开
+.B \-mcpu=r4000
+和
+.B \-mips3
+开关.
+
+.TP
+.B \-mfp32
+认为 存在 32 32-bit 浮点寄存器. 这是 默认选项.
+
+.PP
+.B \-mabicalls
+.TP
+.B \-mno\-abicalls
+输出 (或 不输出)
+.BR \&.abicalls ,
+.BR \&.cpload ,
+和
+.B \&.cprestore
+伪指令, 某些 System V.4 版本 用于 位置无关代码.
+
+.TP
+.B \-mhalf\-pic
+.TP
+.B \-mno\-half\-pic
+.B \-mhalf\-pic
+开关选项 要求 把 外部引用 的 指针 放到 数据段, 并且 载入 内存, 而不放到
+正文段. 该选项 目前 不起作用.
+
+.TP
+.B \-G num
+把 小于等于
+.I num
+字节 的 全局 或 静态 数据 放到 小的 数据段 或 bss 段, 而不是
+普通的 数据段 或 bss 段. 这样 汇编器 可以 输出 基于 全局指针
+.RB ( gp
+或
+.BR $28 ),
+的 单字内存访问指令 而非 普通的 双字指令.
+默认情况下, 用 MIPS 汇编器 时
+.I num
+是 8, 而 GNU 汇编器 则为 0. 另外,
+.BI \-G num
+选项 也被 传递 给 汇编器 和 连接器. 所有 的 模块 必须在 相同的
+.BI \-G num
+值下 编译.
+
+.TP
+.B \-nocpp
+汇编 用户汇编文件
+(带有 `\|\c
+.B .s\c
+\&\|' 后缀) 时, 告诉 MIPS 汇编器 不要 运行 预处理器.
+
+.PP
+下面的 `\|\c
+.B \-m\c
+\&\|' 选项 用于 Intel 80386 族 计算机:
+.B \-m486
+.TP
+.B \-mno\-486
+控制 是否 生成 对 486 优化 的 代码.
+
+.TP
+.B \-msoft\-float
+输出 包含 浮点库调用.
+.I 警告: 
+所需库 不是 GNU CC 的 一部分. 一般说来 使用 该机型 本地 C 编译器 的
+相应部件, 但是 不能 直接 用于 交叉编译, 你 必须 自己 安排, 提供 
+交叉编译 适用的 库函数.
+.Sp
+在 函数 把 浮点返回值 放在 80387 寄存器栈 的 机器 上, 即使 设置了 `\|\c
+.B \-msoft-float\c
+\&\|' 选项, 也可能会 发出 一些 浮点操作码. 
+
+.TP
+.B \-mno-fp-ret-in-387
+不用 FPU 寄存器 返回 函数值.
+.Sp
+通常 函数调用约定 把
+.B float\c
+\& 和 \c
+.B double\c
+\& 的 返回值 放在 FPU 寄存器 中, 即使 不存在 FPU. 这种作法 的 理念
+是 操作系统 应该 仿真出 FPU.
+.Sp
+而 `\|\c
+.B \-mno-fp-ret-in-387\c
+\&\|' 选项 使 浮点值 通过 普通的 CPU 寄存器 返回.
+
+.PP
+下面的 `\|\c
+.B \-m\c
+\&\|' 选项 用于 HPPA 族 计算机:
+.TP
+.B \-mpa-risc-1-0
+生成 PA 1.0 处理器 的 目标码.
+.TP
+.B \-mpa-risc-1-1
+生成 PA 1.1 处理器 的 目标码.
+
+.TP
+.B \-mkernel
+生成 适用于 内核 的 目标码. 特别要 避免 \c
+.B add\c
+\& 指令, 它 有 一个 参数 是 DP 寄存器; 用 \c
+.B addil\c
+\& 代替 \c
+.B add\c
+指令. 这样 可以 避免 HP-UX 连接器 的 某个 严重 bug.
+
+.TP
+.B \-mshared-libs
+生成 能够 连接 HP-UX 共享库 的 目标码. 该选项 还没有 实现 全部功能, 对
+PA 目标 默认为 关闭. 使用 这个选项 会 导致 编译器 生成 错误的 目标码.
+
+.TP
+.B \-mno-shared-libs
+不生成 连接 HP-UX 共享库 的 目标码. 这是 PA 目标 的 默认选项.
+
+.TP
+.B \-mlong-calls
+生成的 目标码 允许 同一个 源文件 中的 函数调用, 调用点 和 被调函数
+的 距离 可以 超过 256K 之远. 不需要 打开 这个 开关选项, 除非 连接器
+给出 \*(lqbranch out of range errors\*(lq 这样的 错误.
+
+.TP
+.B \-mdisable-fpregs
+防止 任何情况下 使用 浮点寄存器. 编译 内核 需要 这个选项, 内核 切换
+浮点寄存器 的 执行环境 速度 非常缓慢. 如果 打开了 这个 开关选项 同时
+试图 浮点操作, 编译 将 失败.
+
+.TP
+.B \-mdisable-indexing
+防止 编译器 使用 索引地址模式 (indexing address mode).
+这样 在 MACH 上 编译 MIG 生成的 代码 时, 可以 避免 一些 非常 晦涩的 问题.
+
+.TP
+.B \-mtrailing-colon
+在 标记定义 (label definition) 的 末尾 添加 一个 冒号 (用于 ELF 汇编器).
+
+.PP
+下面的 `\|\c
+.B \-m\c
+\&\|' 选项 用于 Intel 80960 族 计算机:
+.TP
+.BI "\-m" "cpu-type"
+默认 机器 类型 为
+.I cpu-type ,
+使 编译器 产生 对应的 指令, 地址模式 和 内存对齐. 默认的
+.I cpu-type
+是
+.BR kb ;
+其他 选择 有
+.BR ka ,
+.BR mc ,
+.BR ca ,
+.BR cf ,
+.BR sa ,
+和
+.BR sb .
+
+.TP
+.B \-mnumerics
+.TP
+.B \-msoft\-float
+.B \-mnumerics
+开关选项 指出 处理器 不支持 浮点指令.
+.B \-msoft\-float
+开关选项 指出 不应该 认为 机器 支持 浮点操作.
+
+.TP
+.B \-mleaf\-procedures
+.TP
+.B \-mno\-leaf\-procedures
+企图 (或防止) 改变 叶过程 (leaf procedure), 使其 可被
+.I bal
+指令 以及
+.IR call 
+指令 调用. 对于 直接函数调用, 如果
+.I bal
+指令 能够 被 汇编器 或 连接器 替换, 这 可以 产生 更有效 的 代码,
+但是 其他 情况下 产生 较低效 的 代码, 例如 通过 函数指针 调用 函数,
+或 使用了 不支持 这种 优化 的 连接器.
+
+.TP
+.B \-mtail\-call
+.TP
+.B \-mno\-tail\-call
+执行 (或不执行) 更多的 尝试 (除过 编译器 那些 机器无关 部分), 优化
+进入 分支 的 尾递归 (tail-recursive) 调用. 你 可能 不需要 这个,
+因为 检测 什么 地方 无效 没有 全部 完成. 默认 开关 是
+.BR \-mno\-tail\-call .
+
+.TP
+.B \-mcomplex\-addr
+.TP
+.B \-mno\-complex\-addr
+认为 (或 不认为) 在 当前的 i960 设备 上, 值得 使用 复合地址模式
+(complex addressing mode). 复合地址模式 可能 不值得 用到 K 系列, 但是
+一定 值得 用在 C 系列. 目前 除了 CB 和 CC 处理器, 其他 处理器 上
+.B \-mcomplex\-addr
+是 默认选项.
+
+.TP
+.B \-mcode\-align
+.TP
+.B \-mno\-code\-align
+把 目标码 对齐到 8 字节 边界 上 (或者 不必), 这样 读取 会 快一些.
+目前 只对 C 系列 默认 打开.
+
+.TP
+.B \-mic\-compat
+.TP
+.B \-mic2.0\-compat
+.TP
+.B \-mic3.0\-compat
+兼容 iC960 v2.0 或 v3.0.
+
+.TP
+.B \-masm\-compat
+.TP
+.B \-mintel\-asm
+兼容 iC960 汇编器.
+
+.TP
+.B \-mstrict\-align
+.TP
+.B \-mno\-strict\-align
+不允许 (或允许) 边界不对齐 的 访问.
+
+.TP
+.B \-mold\-align
+使 结构对齐 (structure-alignment) 兼容 Intel 的 gcc 发行版本 1.3 
+(基于 gcc 1.37). 目前 这个选项 有点问题, 因为
+.B #pragma align 1
+总是 作 同样的 设定, 而且 无法 关掉.
+
+.PP
+下面的 `\|\c
+.B \-m\c
+\&\|' 选项 用于 DEC Alpha 设备:
+.TP
+.B \-mno-soft-float
+.TP
+.B \-msoft-float
+使用 (或 不使用) 硬件浮点指令 进行 浮点运算. 打开 \c
+.B \-msoft-float\c
+\& 时, 将 使用 `\|\c
+.B libgcc1.c\c
+\&\|' 中的 函数 执行 浮点运算. 除非 它们 被 仿真 浮点操作 的 例程 替换,
+或者 类似, 它们 被 编译为 调用 仿真例程, 这些 例程 将发出 浮点操作.
+如果 你 为 不带 浮点操作 的 Alpha 编译 程序, 你 必须 确保 建立了 这个 库,
+以便 不调用 仿真例程.
+.Sp
+注意, 不带 浮点操作 的 Alpha 也要求 拥有 浮点寄存器.
+
+.TP
+.B \-mfp-reg
+.TP
+.B \-mno-fp-regs
+生成 使用 (或 不使用) 浮点寄存器群 的 目标代码.
+.B \-mno-fp-regs\c
+\& 包含有 \c
+.B \-msoft-float\c
+\& 开关选项.  如果 不使用 浮点寄存器, 浮点操作数 就象 整数 一样 通过
+整数寄存器 传送, 浮点运算结果 放到 $0 而不是 $f0. 这是 非标准 调用,
+因此 任何 带有 浮点 参数或返回值 的 函数, 如果 被 \c
+.B \-mno-fp-regs\c
+\& 开关 编译过的 目标码 调用, 它 也必须 用这个 选项 编译.
+.Sp
+这个选项 的 典型用法 是 建立 内核, 内核 不使用 任何 浮点寄存器,
+因此 没必要 保存 和 恢复 这些 寄存器.
+
+.PP
+下面 附加的 选项 出现在 System V 第四版 中, 用于 兼容 这些 系统 中的
+其他 编译器:
+.TP
+.B \-G
+在 SVr4 系统 中, \c
+.B gcc\c
+\& 出于 兼容 接受了 `\|\c
+.B \-G\c
+\&\|' 选项 (然后 传递给 连接器). 可是 我们 建议 使用 `\|\c
+.B \-symbolic\c
+\&\|' 或 `\|\c
+.B \-shared\c
+\&\|'选项, 而不在 \c
+.B gcc
+命令行 上 出现 连接选项.
+
+.TP
+.B \-Qy
+验证 编译器 用的 工具 的 版本, 输出到 \c
+.B .ident\c
+\& 汇编指令.
+
+.TP
+.B \-Qn
+制止 输出端 的 \c
+.B .ident\c
+\& 指令 (默认选项).
+
+.TP
+.BI "\-YP," "dirs"
+对于 `\|\c
+.B \-l\c
+\&\|' 指定的 库文件, 只搜索 \c
+.I dirs\c
+\&. 你 可以 在
+.I dirs\c
+\& 中 用 冒号 隔开 各个 目录项.
+
+.TP
+.BI "\-Ym," "dir"
+在 \c
+.I dir\c
+\& 目录 中 寻找 M4 预处理器. 汇编器 使用 这个 选项.
+
+.SH "代码生成选项 (CODE GENERATION OPTION)"
+下面的 选项 和 平台 无关, 用于 控制 目标码生成 的 接口约定.
+.PP
+大部分 选项 以 `\|\c
+\-f\c
+\&\|' 开始. 这些选项 拥有 确定 和 否定 两种 格式; `\|\c
+.B \-ffoo\c
+\&\|' 的 否定格式 是 `\|\c
+.B \-fno\-foo\c
+\&\|'. 后面的 描述 将 只列举 其中 的 一个 格式 \(em\& 非默认 的 格式.
+你 可以 通过 添加或去掉 `\|\c
+.B no\-\c
+\&\|' 推测出 另一个 格式.
+
+.TP
+.B \-fnonnull\-objects
+假设 通过 引用 (reference) 取得的 对象 不为 null (仅 C++).
+.Sp
+一般说来, GNU C++ 对 通过 引用 取得的 对象 作 保守 假设.
+例如, 编译器 一定会 检查 下似 代码 中的 \c
+.B a
+不为 null:
+.Sp
+obj &a = g ();
+a.f (2);
+.Sp
+检查 类似 的 引用 需要 额外的 代码, 然而 对于 很多 程序 是 不必要的.
+如果 你的 程序 不要求 这种检查, 你 可以 用 `\|\c
+.B \-fnonnull-objects\c
+\&\|' 选项 忽略它.
+
+.TP
+.B \-fpcc\-struct\-return
+函数 返回 \c
+.B struct\c
+\& 和 \c
+.B union
+值时, 采用 和 本地编译器 相同的 参数约定. 对于 较小的结构, 这种约定
+的 效率 偏低, 而且 很多 机器 上 不能 重入; 它的 优点 是 允许 GCC 编译
+的 目标码 和 PCC 编译 的 目标码 互相调用.
+
+.TP
+.B \-freg\-struct\-return
+一有可能 就 通过 寄存器 返回
+.B struct
+和
+.B union
+函数值. 对于 较小的结构, 它 比
+.BR \-fpcc\-struct\-return 
+更有效率.
+.Sp
+如果 既没有 指定
+.B \-fpcc\-struct\-return ,
+也没有 指定
+.BR \-freg\-struct\-return ,
+GNU CC 默认使用 目标机 的 标准约定. 如果 没有 标准约定, GNU CC 默认采用
+.BR \-fpcc\-struct\-return .
+
+.TP
+.B \-fshort\-enums
+给 \c
+.B enum\c
+\& 类型 只分配 它 声明的 值域范围 的 字节数. 就是说, \c
+.B enum\c
+\& 类型 等于 大小足够 的 最小整数类型.
+
+.TP
+.B \-fshort\-double
+使
+.B double
+类型 的 大小 和
+.B float
+\& 一样.
+
+.TP
+.B \-fshared\-data
+要求 编译结果 的 数据 和 非 \c
+.B const\c
+\& 变量 是 共享数据, 而不是 私有数据.
+这种差别 仅在 某些 操作系统 上面 有意义, 那里的 共享数据 在 同一个
+程序 的 若干 进程 间 共享, 而 私有数据 在 每个 进程 内 都有 副件.
+
+.TP
+.B \-fno\-common
+即使 未初始化 的 全局变量 也 分配在 目标文件 的 bss 段, 而不是 把 它们
+当做 普通块 (common block) 建立. 这样的 结果 是, 如果 在 两个 不同 的 
+编译结果 中 声明了 同一个 变量 (没使用 \c
+.B extern \c
+\&), 连接 它们 时 会 产生 错误. 这个选项 可能 有用 的 唯一情况 是,
+你 希望 确认 程序 能 在 其他系统 上 运行, 而 其他系统 总是 这么 做.
+
+.TP
+.B \-fno\-ident
+忽略 `\|\c
+.B #ident\c
+\&\|' 指令.
+
+.TP
+.B \-fno\-gnu\-linker
+不要 把 全局初始化部件 (如 C++ 的 构造子 和 解构子) 输出为 GNU 连接器
+使用 的 格式 (在 GNU 连接器 是 标准方法 的 系统 上).
+当你 打算 使用 非 GNU 连接器 的 时候 可以用 这个选项, 非GNU连接器 也需要
+.B collect2\c
+\& 程序 确保 系统连接器 放入 构造子 (constructor) 和 解构子 (destructor).
+(GNU CC 的 发布包 中 包含有 \c
+.B collect2\c
+\& 程序.) 对于 \c
+.I 必须 \c
+\& 使用 \c
+.B collect2\c
+\& 的 系统, 编译器驱动程序 \c
+.B gcc\c
+\& 自动 配置为 这么做.
+
+.TP
+.B \-finhibit-size-directive
+不要 输出 \c
+.B .size\c
+\& 汇编指令, 或其他 类似指令, 当 某个函数 一分为二, 两部分 在 内存 中
+距离 很远 时 会 引起 问题. 当 编译 `\|\c
+.B crtstuff.c\c
+\&\|' 时 需要 这个选项; 其他情况下 都不应该 使用.
+
+.TP
+.B \-fverbose-asm
+输出 汇编代码 时 放些 额外的 注释信息. 这个选项 仅用于 确实 需要
+阅读 汇编输出 的 时候 (可能 调试 编译器 自己 的 时候).
+
+.TP
+.B \-fvolatile
+使 编译器 认为 所有 通过 指针 访问 的 内存 是 易变内存 (volatile).
+
+.TP
+.B \-fvolatile\-global
+使 编译器 认为 所有的 外部和全局变量 是 易变内存.
+
+.TP
+.B \-fpic
+如果 支持 这种 目标机, 编译器 就生成 位置无关目标码.
+适用于 共享库 (shared library).
+
+.TP
+.B \-fPIC
+如果 支持 这种 目标机, 编译器 就输出 位置无关目标码.
+适用于 动态连接 (dynamic linking), 即使 分支 需要 大范围 转移.
+
+.TP
+.BI "\-ffixed\-" "reg"
+把 名为 \c
+.I reg\c
+\& 的 寄存器 按 固定寄存器 看待 (fixed register); 生成的 目标码
+不应该 引用 它 (除了 或许 用作 栈指针, 帧指针, 或其他 固定的角色).
+.Sp
+.I reg\c
+\& 必须是 寄存器 的 名字. 寄存器 名字 取决于 机器, 用 机器描述宏文件 的 \c
+.B REGISTER_NAMES
+宏 定义.
+.Sp
+这个选项 没有 否定格式, 因为 它 列出 三路选择.
+
+.TP
+.BI "\-fcall\-used\-" "reg"
+把 名为 \c
+.I reg\c
+\& 的 寄存器 按 可分配寄存器 看待, 不能 在 函数调用 间 使用.
+可以 临时使用 或 当做 变量 使用, 生存期 不超过 一个 函数.
+这样编译的 函数 无需 保存 和 恢复 \c
+.I reg\c
+\& 寄存器.
+.Sp
+如果 在 可执行模块 中, 把 这个选项 说明的 寄存器 用作 固定角色 将会
+产生 灾难性结果, 如 栈指针 或 帧指针.
+.Sp
+这个选项 没有 否定格式, 因为 它 列出 三路选择.
+
+.TP
+.BI "\-fcall\-saved\-" "reg"
+把 名为 \c
+.I reg\c
+\& 的 寄存器 按 函数 保护 的 可分配寄存器 看待. 可以 临时使用 或 当做 变量
+使用, 它 甚至能 在 函数 间 生存. 这样编译的 函数 会 保存 和 恢复 使用中 的 \c
+.I reg\c
+\& 寄存器.
+.Sp
+如果 在 可执行模块 中, 把 这个选项 说明的 寄存器 用作 固定角色 将会
+产生 灾难性结果, 如 栈指针 或 帧指针.
+.Sp
+另一种 灾难 是 用 这个选项 说明的 寄存器 返回 函数值.
+.Sp
+这个选项 没有 否定格式, 因为 它 列出 三路选择.
+
+.SH PRAGMAS
+GNU C++ 支持 两条 `\|\c
+.B #pragma\c
+\&\|' 指令 使 同一个 头文件 有 两个用途: 对象类 的 接口定义, 对象类 完整的
+内容定义.
+
+.TP
+.B #pragma interface
+(仅对 C++) 在 定义 对象类 的 头文件 中, 使用 这个指令 可以 节省 大部分
+采用 该类 的 目标文件 的 大小. 
+一般说来, 某些信息 (内嵌成员函数 的 备份副件, 调试信息, 实现 虚函数 的 
+内部表格等) 的 本地副件 必须 保存在 包含 类定义 的 各个 目标文件 中.
+使用 这个 pragma 指令 能够 避免 这样的 复制.
+当 编译 中 引用 包含 `\|\c
+.B #pragma interface\c
+\&\|' 指令 的 头文件 时, 就 不会 产生 这些 辅助信息
+(除非 输入的 主文件 使用了 `\|\c
+.B #pragma implementation\c
+\&\|'指令). 作为替代, 目标文件 将包含 可被 连接时 解析的 引用 (reference).
+
+.TP
+.B #pragma implementation
+.TP
+\fB#pragma implementation "\fP\fIobjects\fP\fB.h"\fP
+(仅对 C++) 如果 要求 从 头文件 产生 完整的 输出 (并且 全局可见),
+你 应该 在 主输入文件 中 使用 这条 pragma. 头文件 中 应该 依次 使用 `\|\c
+.B #pragma interface\c
+\&\|' 指令. 在 implementation 文件 中 将 产生 全部 内嵌成员函数 的 备份,
+调试信息, 实现 虚函数 的 内部表格等.
+.Sp
+如果 `\|\c
+.B #pragma implementation\c
+\&\|' 不带 参数, 它 指的是 和 源文件 有 相同基本名 的 包含文件; 例如, `\|\c
+.B allclass.cc\c
+\&\|' 中, `\|\c
+.B #pragma implementation\c
+\&\|' 等于 `\|\c
+.B #pragma implementation "allclass.h"\c
+\&\|'. 如果 某个 implementation 文件 需要 从 多个 头文件 引入 代码,
+就应该 使用 这个 字符串参数.
+.Sp
+不可能 把 一个头文件 里面 的 内容 分割到 多个 implementation 文件 中.
+
+.SH "文件 (FILE)"
+.nf
+.ta \w'LIBDIR/g++\-include 'u
+file.c	C 源文件
+file.h	C 头文件 (预处理文件)
+file.i	预处理后 的 C 源文件
+file.C	C++ 源文件
+file.cc	C++ 源文件
+file.cxx	C++ 源文件
+file.m	Objective-C 源文件
+file.s	汇编语言文件
+file.o	目标文件
+a.out	连接的输出文件
+\fITMPDIR\fR/cc\(**	临时文件
+\fILIBDIR\fR/cpp	预处理器
+\fILIBDIR\fR/cc1	C 编译器
+\fILIBDIR\fR/cc1plus	C++ 编译器
+\fILIBDIR\fR/collect	某些机器需要的连接器前端(front end)程序
+\fILIBDIR\fR/libgcc.a	GCC 子例程 (subroutine) 库
+/lib/crt[01n].o	启动例程 (start-up)
+\fILIBDIR\fR/ccrt0	C++ 的附加启动例程
+/lib/libc.a	标准 C 库, 另见 intro (3)
+/usr/include	\fB#include\fP 文件的标准目录
+\fILIBDIR\fR/include	\fB#include\fP 文件的标准 gcc 目录
+\fILIBDIR\fR/g++\-include	\fB#include\fP 文件的附加 g++ 目录
+.Sp
+.fi
+.I LIBDIR
+通常为
+.B /usr/local/lib/\c
+.IR machine / version .
+.br
+.I TMPDIR
+来自 环境变量
+.B TMPDIR
+(如果 存在, 缺省为
+.B /usr/tmp ,
+否则为
+.B /tmp\c
+\&).
+
+.SH "另见 (SEE ALSO)"
+cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
+.br
+.B info\c
+\&中
+.RB "`\|" gcc "\|', `\|" cpp \|',
+.RB "`\|" as "\|', `\|" ld \|',
+和
+.RB `\| gdb \|'
+的 条目.
+.br
+.I
+Using and Porting GNU CC (for version 2.0)\c
+, Richard M. Stallman;
+.I
+The C Preprocessor\c
+, Richard M. Stallman;
+.I
+Debugging with GDB: the GNU Source-Level Debugger\c
+, Richard M. Stallman 和 Roland H. Pesch;
+.I
+Using as: the GNU Assembler\c
+, Dean Elsner, Jay Fenlason & friends;
+.I
+ld: the GNU linker\c
+, Steve Chamberlain 和 Roland Pesch.
+
+.SH BUGS
+关于 报告 差错 的 指导 请 查阅 GCC 手册.
+
+.SH "版权 (COPYING)"
+Copyright
+.if t \(co
+1991, 1992, 1993 Free Software Foundation, Inc.
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+
+.SH "作者 (AUTHORS)"
+关于 GNU CC 的 奉献者 请 查阅 GUN CC 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
+.\".SH "字典"
+.\"archive file: 归档库文件, 库文件
+.\".br
+.\"assemble: 汇编
+.\".br
+.\"assembler: 汇编器
+.\".br
+.\"assembly language: 汇编语言
+.\".br
+.\"compile: 编译
+.\".br
+.\"compiler: 编译器
+.\".br
+.\"context: 执行环境
+.\".br
+.\"data flow information: 数据流信息 (-Wuninitialized)
+.\".br
+.\"extern reference: 外部引用 (-mhalf-pic)
+.\".br
+.\"in-line code sequence: 嵌入代码 (-min-line-mul)
+.\".br
+.\"link: 连接
+.\".br
+.\"linker: 连接器
+.\".br
+.\"memory reference: 内存访问 (-mserialize-volatile)
+.\".br
+.\"object file: 目标文件
+.\".br
+.\"operand: 操作数
+.\".br
+.\"preprocessing: 预处理
+.\".br
+.\"preprocessor: 预处理器
+.\".br
+.\"scratch space: 活动空间 (-mfull-fp-blocks)
+.\".br
+.\"sequential consistency: 结果一致 (-mserialize-volatile)
+.\".br
+.\"
diff --git a/src/man1/gedit.1 b/src/man1/gedit.1
new file mode 100644
index 0000000..f1236c7
--- /dev/null
+++ b/src/man1/gedit.1
@@ -0,0 +1,47 @@
+.TH GEDIT l "1998年5月13日"
+.SH NAME
+\fBgEdit\fP \- GTK+ 基础文本编辑器
+.SH 语法
+.B gedit
+.RI [ --help ]
+.RI [ --version ]
+.RI [ 文件名 ]
+.RI [ 文件名 ]
+.RI [ 文件名 ]
+.RI 等等...
+.SH 描述
+.B gEdit
+是一个 X窗口系统下的基础文本编辑器由 GTK+ 写成。它现在
+支持建立,打开,关闭和保存多个文件,查找和替换,
+一个选项接口可以在命令行打开文件。 
+.LP
+.SH 选项
+它是漂亮且简单的。
+.TP
+.B \-\-help
+.PD
+输出命令行选项。
+.TP
+.B \-\-version
+.PD
+输出你使用的 gEdit 的版本。
+.TP
+.B 文件名
+.PD
+当 gEdit 启动时指定文件打开 - 如果没有指定,gEdit 将
+打开一个空白的文件在无标题标签。
+.SH 错误
+看知道的错误列表文件如果你发现那没有你发现的错误请 
+email 给我们。
+
+.SH 作者
+Alex Roberts (bse at dial.pipex.com)
+.TP
+Evan Lawrence (evan at worldpath.net)
+
+.SH "[中文版维护人]"
+.B wide288 <email>
+.SH "[中文版最新更新]"
+.B 2003/11/22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/getopts.1 b/src/man1/getopts.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/getopts.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/git.1 b/src/man1/git.1
new file mode 100644
index 0000000..612e2bb
--- /dev/null
+++ b/src/man1/git.1
@@ -0,0 +1,127 @@
+.\" +----------
+.\" |
+.\" |			  GIT/GITPS/GITVIEW man page
+.\" |
+.\" |	      Copyright 1993-1999 Free Software Foundation, Inc.
+.\" |
+.\" |	This file is part of GIT (GNU Interactive Tools)
+.\" |
+.\" |	GIT 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, or (at your option) any later
+.\" | version.
+.\" |
+.\" | GIT is distributed in the hope that it will be useful, but WITHOUT ANY
+.\" | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+.\" | FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+.\" | details.
+.\" |
+.\" | You should have received a copy of the GNU General Public License along
+.\" | with GIT; see the file COPYING. If not, write to the Free Software
+.\" | Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+.\" |
+.TH git 1
+.SH NAME
+git \- GNU 交互工具
+.SH 语法
+.I git
+[options] [path1] [path2]
+.br
+.I gitps
+[options]
+.br
+.I gitview
+[options] filename
+
+.SH 注意
+.I GIT
+包 的 主要 配置文件 是
+.B ".gitrc.TERM" ,
+这里的
+.B TERM
+是 环境变量
+.BR "" ' TERM '
+的 值. 例如, 对于 Linux 控制台, 你的 环境 中 有 类似
+.BR "" ' "TERM=console" '
+的 内容, 因此 配置文件名 是
+.BR ".gitrc.console" "."
+你 能够 (也应该) 为 使用的 每个 终端类型 设置 一个 配置文件.
+
+.SH 描述
+.I git
+是 具有 某些 shell 功能的
+.B 文件系统浏览器 ,
+使 工作 更容易 也更有效.
+
+.I gitps
+是一个 交互性 的 进程 观察/管理器. 它 内部调用
+.IR ps (1) ,
+所以
+.I gitps
+的 参数 实际上 就是
+.IR ps (1)
+的 参数. 
+.I gitps
+运行时 能够 自我解释. 使用
+箭头键, PageUp, PageDown, Home, End, ^N, ^P, ^V, ESC v 在 进程列表 中
+移动, ^L 刷新显示, F10 或 ^G 退出. 这些键 可以 改变, 请在 配置文件
+.BR ".gitrc.TERM" 
+中 读一下
+.B [GITPS-Setup], [GITPS-Color], [GITPS-Monochrome] 和 [GITPS-Keys]
+小节. 另见
+.BR "CONFIGURATION FILES" .
+
+.I gitview
+是一个 十六进制/ASCII 文件 阅读器. 使用 箭头键,  PageUp, PageDown, Home,
+End, ^N, ^P, ^V, ESC v 在 文件中 移动. ^L 刷新显示, F10 或 ^G 退出.
+这些键 可以 改变, 请在 配置文件
+.BR ".gitrc.TERM"
+中 读一下
+.B [GITVIEW-Setup], [GITVIEW-Color], [GITVIEW-Monochrome] 和 [GITVIEW-Keys]
+小节. 另见
+.BR "CONFIGURATION FILES" .
+
+.SH 文件系统浏览器
+.I git
+由 两个 面板 组成, 一个在左边, 一个在右边. 每一个 面板 含有 一个
+文件系统目录. 你 可以 用 方向键 浏览 目录树, 敲
+.B ENTER
+键 进入或离开 某个目录. 按
+.BR TAB 
+键 切换 面板. 另见
+.BR "BUILT-IN COMMANDS" .
+
+.SH 输入行
+两个面板 下面 是 类似 shell 的 输入行, 你 可以 在这儿 输入 普通的 shell 命令.
+输入行 不限 字数, 并且 维护 一个 输入命令的 历史记录, GIT 使用了 GNU 的 
+历史库(history library). 另见
+.BR "BUILT-IN COMMANDS" .
+
+.SH 警告和错误报告
+输入行 下面 是 状态条. 你 可以 看见 当前执行命令 的 状态, 以及 相应情况
+下 提示的 警告和错误.
+
+.SH BUGS
+这些 手册页 还 没有 完成. 只更新了 GIT 的 info 文档.
+
+请把 bug 报告寄往:
+.br
+.I Tudor Hulubei <tudor at cs.unh.edu>
+
+.SH 另见
+termcap(5) terminfo(5) sh(1) ps(1) mount(8) umount(8) gitaction(1) gitmount(1)
+gitkeys(1) gitrgrep(1) gitunpack(1)
+
+.SH 作者
+.I Tudor Hulubei <tudor at cs.unh.edu>
+.br
+.I Andrei Pitis <pink at pub.ro>
+
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/gnroff.1 b/src/man1/gnroff.1
new file mode 100644
index 0000000..c7fdda9
--- /dev/null
+++ b/src/man1/gnroff.1
@@ -0,0 +1,97 @@
+.ig \"-*- nroff -*-
+Copyright (C) 1989-1999 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.TH NROFF 1 "28 December 1999" "Groff Version 1.15"
+.SH NAME
+nroff \- 用 groff 模拟 nroff 命令
+.SH "总览 (SYNOPSIS)"
+.B nroff
+[
+.B \-h
+]
+[
+.B \-i
+]
+[
+.BI \-m name
+]
+[
+.BI \-n num
+]
+[
+.BI \-o list
+]
+[
+.BI \-r cn
+]
+[
+.BI \-T name
+]
+[
+.I file\|.\|.\|.
+]
+.SH "描述 (DESCRIPTION)"
+.B nroff
+脚本用 groff 模拟
+.B nroff
+命令。
+.B \-T
+选项的参数除了
+.B ascii
+和
+.B latin1
+以外都将被忽略。
+.B \-h
+选项同
+.B grotty
+.B \-h
+选项等价。
+.BR \-i ,
+.BR \-n ,
+.BR \-m ,
+.B \-o
+和
+.B \-r
+选项同在
+.BR troff (1)
+中描述的作用是一样的。 另外
+.B nroff
+忽略
+.BR \-e ,
+.B \-q
+或者
+.BR \-s 
+选项。
+.B \-S
+(安全) 和
+.B \-U
+(不安全) 选项被传给 groff。 
+默认情况下
+.B \-S
+被传给 groff。
+.SH "参见 (SEE ALSO)"
+.BR groff (1),
+.BR troff (1),
+.BR grotty (1)
+
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/8/28
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/grep.1 b/src/man1/grep.1
new file mode 100644
index 0000000..6599f41
--- /dev/null
+++ b/src/man1/grep.1
@@ -0,0 +1,681 @@
+.\" grep man page
+.if !\n(.g \{\
+.	if !\w|\*(lq| \{\
+.		ds lq ``
+.		if \w'\(lq' .ds lq "\(lq
+.	\}
+.	if !\w|\*(rq| \{\
+.		ds rq ''
+.		if \w'\(rq' .ds rq "\(rq
+.	\}
+.\}
+.de Id
+.ds Dt \\$4
+..
+.TH GREP 1 \*(Dt "GNU Project"
+.SH NAME
+grep, egrep, fgrep \- 打印匹配给定模式的行
+.SH 总览 SYNOPSIS
+.B grep
+.RI [ options ]
+.I PATTERN
+.RI [ FILE .\|.\|.]
+.br
+.B grep
+.RI [ options ]
+.RB [ \-e
+.I PATTERN
+|
+.B \-f
+.IR FILE ]
+.RI [ FILE .\|.\|.]
+.SH 描述 DESCRIPTION
+.PP
+.B Grep
+搜索以
+.IR FILE
+命名的文件输入 (或者是标准输入,如果没有指定文件名,或者给出的文件名是
+.B \-
+的话),寻找含有与给定的模式
+.IR PATTERN 
+相匹配的内容的行。
+默认情况下,
+.B grep
+将把含有匹配内容的行打印出来。
+.PP
+另外,也可以使用两个变种程序
+.B egrep
+和
+.B fgrep
+。
+.B Egrep
+与
+.BR "grep\ \-E"
+相同。
+.B Fgrep
+与
+.BR "grep\ \-F"
+相同。
+.SH 选项 OPTIONS
+.TP
+.BI \-A " NUM" "\fR,\fP \-\^\-after-context=" NUM
+打印出紧随匹配的行之后的下文
+.I NUM
+行。在相邻的匹配组之间将会打印内容是
+.B \-\^\-
+的一行。
+.TP
+.BR \-a ", " \-\^\-text
+将一个二进制文件视为一个文本文件来处理;它与
+.B \-\^\-binary-files=text
+选项等价。
+.TP
+.BI \-B " NUM" "\fR,\fP \-\^\-before-context=" NUM
+打印出匹配的行之前的上文
+.I NUM
+行。在相邻的匹配组之间将会打印内容是
+.B \-\^\-
+的一行。
+.TP
+.BI \-C " NUM" "\fR,\fP \-\^\-context=" NUM
+打印出匹配的行的上下文前后各
+.I NUM
+行。在相邻的匹配组之间将会打印内容是
+.B \-\^\-
+的一行。
+.TP
+.BR \-b ", " \-\^\-byte-offset
+在输出的每行前面同时打印出当前行在输入文件中的字节偏移量。
+.TP
+.BI \-\^\-binary-files= TYPE
+如果一个文件的起始几个字节表明文件包含二进制数据,那么假定文件是
+.IR TYPE
+类型的。默认情况下,
+.I TYPE
+是
+.BR binary
+,并且
+.B grep
+一般会输出一个一行的消息说一个二进制文件匹配,或者如果没有匹配的话就没有消息输出。如果类型
+.I TYPE
+是
+.BR without-match
+,那么
+.B grep
+假定二进制文件不会匹配;这样做与
+.B \-I
+选项等价。如果类型
+.I TYPE
+是
+.BR text
+,那么
+.B grep
+将一个二进制文件视为文本文件来处理;它与
+.B \-a
+选项等价。
+.I 警告:
+.B "grep \-\^\-binary-files=text"
+可能会输出二进制的无用内容。如果输出设备是一个终端,并且终端的驱动将这些输出中的一些当作命令,可能会带来恶劣的副作用。
+.TP
+.BI \-\^\-colour[=\fIWHEN\fR] ", " \-\^\-color[=\fIWHEN\fR]
+在匹配的行周围以
+.B GREP_COLOR
+环境变量中指定的记号来标记。WHEN 可以是 `never', `always', 或是 `auto'。
+.TP
+.BR \-c ", " \-\^\-count
+禁止通常的输出;作为替代,为每一个输入文件打印一个匹配的行的总数。如果使用
+.BR \-v ", " \-\^\-invert-match
+选项 (参见下面),将是不匹配的行的总数。
+.TP
+.BI \-D " ACTION" "\fR,\fP \-\^\-devices=" ACTION
+如果输入文件是一个设备,FIFO 或是套接字 (socket) ,使用动作
+.I ACTION
+来处理它。默认情况下,动作
+.I ACTION
+是
+.BR read
+,意味着设备将视为普通文件那样来读。如果动作
+.I ACTION
+是
+.BR skip
+,将不处理而直接跳过设备。
+.TP
+.BI \-d " ACTION" "\fR,\fP \-\^\-directories=" ACTION
+如果输入文件是一个目录,使用动作
+.I ACTION
+来处理它。默认情况下,动作
+.I ACTION
+是
+.BR read
+,意味着目录将视为普通文件那样来读。如果动作
+.I ACTION
+是
+.BR skip
+,将不处理而直接跳过目录。如果动作
+.I ACTION
+是
+.BR recurse
+,
+.B grep
+将递归地读每一目录下的所有文件。这样做和
+.B \-r
+选项等价。
+.TP
+.BR \-E ", " \-\^\-extended-regexp
+将模式
+.I PATTERN
+作为一个扩展的正则表达式来解释 (参见下面)。
+.TP
+.BI \-e " PATTERN" "\fR,\fP \-\^\-regexp=" PATTERN
+使用模式
+.I PATTERN
+作为模式;在保护以
+.BR \-
+为起始的模式时有用。
+.TP
+.BR \-F ", " \-\^\-fixed-strings
+将模式
+.I PATTERN
+视为一个固定的字符串的列表,用新行 (newlines) 分隔,只要匹配其中之一即可。
+.TP
+.BR \-P ", " \-\^\-perl-regexp
+将模式
+.I PATTERN
+作为一个 Perl 正则表达式来解释。
+.TP
+.BI \-f " FILE" "\fR,\fP \-\^\-file=" FILE
+从文件
+.IR FILE
+中获取模式,每行一个。空文件含有0个模式,因此不匹配任何东西。
+.TP
+.BR \-G ", " \-\^\-basic-regexp
+将模式
+.I PATTERN
+作为一个基本的正则表达式 (参见下面) 来解释。这是默认值。
+.TP
+.BR \-H ", " \-\^\-with-filename
+为每个匹配打印文件名。
+.TP
+.BR \-h ", " \-\^\-no-filename
+当搜索多个文件时,禁止在输出的前面加上文件名前缀。
+.TP
+.B \-\^\-help
+输出一个简短的帮助信息。
+.TP
+.BR \-I
+处理一个二进制文件,但是认为它不包含匹配的内容。这和
+.B \-\^\-binary-files=without-match
+选项等价。
+.TP
+.BR \-i ", " \-\^\-ignore-case
+忽略模式
+.I PATTERN
+和输入文件中的大小写的分别。
+.TP
+.BR \-L ", " \-\^\-files-without-match
+禁止通常的输出;作为替代,打印出每个在通常情况下不会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹配的时候就会停止。
+.TP
+.BR \-l ", " \-\^\-files-with-matches
+禁止通常的输出;作为替代,打印出每个在通常情况下会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹配的时候就会停止。
+.TP
+.BI \-m " NUM" "\fR,\fP \-\^\-max-count=" NUM
+在找到
+.I NUM
+个匹配的行之后,不再读这个文件。如果输入是来自一个普通文件的标准输入,并且已经输出了
+.I NUM
+个匹配的行,
+.B grep
+保证标准输入被定位于退出时的最后一次匹配的行之后,不管是否指定了要输出紧随的下文的行。这样可以使一个调用程序恢复搜索。当
+.B grep
+在
+.I NUM
+个匹配的行之后停止,它会输出任何紧随的下文的行。当使用了
+.B \-c
+或
+.B \-\^\-count
+选项的时候,
+.B grep
+不会输出比
+.IR NUM
+更多的行。当指定了
+.B \-v
+或
+.B \-\^\-invert-match
+选项的时候,
+.B grep
+会在输出
+.I NUM
+个不匹配的行之后停止。
+.TP
+.B \-\^\-mmap
+如果可能的话,使用
+.BR mmap (2)
+系统调用来读取输入,而不是默认的
+.BR read (2)
+系统调用。在一些情况下,
+.B \-\^\-mmap
+提供较好的性能。但是,如果一个输入文件在
+.B grep
+正在操作时大小发生变化,或者如果发生了一个 I/O 错误,
+.B \-\^\-mmap
+可能导致不可知的行为 (包括core dumps)。
+.TP
+.BR \-n ", " \-\^\-line-number
+在输出的每行前面加上它所在的文件中它的行号。
+.TP
+.BR \-o ", " \-\^\-only-matching
+只显示匹配的行中与
+.I PATTERN
+相匹配的部分。
+.TP
+.BI \-\^\-label= LABEL
+将实际上来自标准输入的输入视为来自输入文件
+.I LABEL
+。这对于 zgrep 这样的工具非常有用,例如:
+.B "gzip -cd foo.gz |grep --label=foo something"
+.TP
+.BR \-\^\-line-buffering
+使用行缓冲,it can be a performance penality.
+.TP
+.BR \-q ", " \-\^\-quiet ", " \-\^\-silent
+安静。不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值 0 退出,即使检测到了错误。
+参见
+.B \-s
+或
+.B \-\^\-no-messages
+选项。
+.TP
+.BR \-R ", " \-r ", " \-\^\-recursive
+递归地读每一目录下的所有文件。这样做和
+.B "\-d recurse"
+选项等价。
+.TP
+.BR "\fR \fP \-\^\-include=" PATTERN
+仅仅在搜索匹配
+.I PATTERN
+的文件时在目录中递归搜索。
+.TP
+.BR "\fR \fP \-\^\-exclude=" PATTERN
+在目录中递归搜索,但是跳过匹配
+.I PATTERN
+的文件。
+.TP
+.BR \-s ", " \-\^\-no-messages
+禁止输出关于文件不存在或不可读的错误信息。
+对于可移植性需要注意:与 \s-1GNU\s0
+.BR grep
+不同,传统的
+.B grep
+不遵守 \s-1POSIX.2\s0 规范,因为传统的
+.B grep
+缺少一个
+.B \-q
+选项,而它的
+.B \-s
+选项与 \s-1GNU\s0
+.BR grep
+的
+.B \-q
+选项行为相似。需要可移植到传统
+.B grep
+的 shell 脚本应当避免使用
+.B \-q
+和
+.B \-s
+选项,而应当将输出重定向到 /dev/null 。
+.TP
+.BR \-U ", " \-\^\-binary
+将文件视为二进制。默认情况下,在 MS-DOS 和 MS-Windows 系统中,
+.BR grep
+通过从文件中读取头部的 32kB 内容来判断它的文件类型。如果
+.BR grep
+判断文件是一个文本文件,它将原始文件内容中的 CR 字符去除 (使得含有
+.B ^
+和
+.B $
+的正则表达式可以正常工作)。指定
+.B \-U
+将不进行这些工作,而使所有文件保持不变地读取并传递给匹配机制。如果文件是一个以 CR/LF 换行的文本文件,这样作将导致一些正则表达式失败。这个选项在 MS-DOS 和 MS-Windows 之外的系统中无效。
+.TP
+.BR \-u ", " \-\^\-unix-byte-offsets
+报告 Unix 风格的字节偏移量。这个开关使得
+.B grep
+报告字节偏移量时,将文件作为 Unix 风格的文本文件看待,也就是说将 CR 字符去掉。这将产生与在一台 Unix 主机上运行
+.B grep
+完全相同的结果。除非同时使用
+.B \-b
+选项,否则这个选项无效。这个选项在 MS-DOS 和 MS-Windows 之外的系统中无效。
+.TP
+.BR \-V ", " \-\^\-version
+向标准错误输出打印
+.B grep
+的版本号。版本号应当包含在所有的 bug 报告中 (参见下面)。
+.TP
+.BR \-v ", " \-\^\-invert-match
+改变匹配的意义,只选择不匹配的行。
+.TP
+.BR \-w ", " \-\^\-word-regexp
+只选择含有能组成完整的词的匹配的行。判断方法是匹配的子字符串必须是一行的开始,或者是在一个不可能是词的组成的字符之后。与此相似,它必须是一行的结束,或者是在一个不可能是词的组成的字符之前。词的组成字符是字母,数字,还有下划线。
+.TP
+.BR \-x ", " \-\^\-line-regexp
+只选择能匹配完整一行的匹配。
+.TP
+.B \-y
+.BR \-i
+的同义词,废弃不用。
+.TP
+.BR \-Z ", " \-\^\-null
+输出一个全零字节 (\s-1ASCII\s0 码中的
+.B NUL
+字符) 而不是一般情况下输出在文件名之后的字符。例如,
+.B "grep \-lZ"
+在每个文件名之后输出一个全零字节而不是普通的新行符。这个选项使得输出清楚明白,即使文件名的表示中包含特殊字符比如新行符。这个选项可以与命令
+.BR "find \-print0" ,
+.BR "perl \-0" ,
+.BR "sort \-z" ,
+和
+.B "xargs \-0"
+一起使用,来处理任意的文件名,即使是那些含有新行符的文件名。
+.SH "正则表达式 REGULAR EXPRESSIONS"
+.PP
+一个正则表达式是一个描述了一个字符串集合的模式。正则表达式的构造类似于算术表达式,使用各种各样的操作符来将更小的表达式连在一起。
+.PP
+.B Grep
+能理解两种不同版本的正则表达式语法:\*(lqbasic\*(rq 和 \*(lqextended\*(rq。在
+.RB "\s-1GNU\s0\ " grep
+中,两种语法可以实现的功能是没有区别的。在其他实现中,基本 (basic) 正则表达式表达能力要弱一点。下面的描述适用于扩展的 (extended) 正则表达式,它与基本正则表达式的区别会在最后做一个总结。
+.PP
+基本的构造块是匹配单个字符的正则表达式。大部分字符,包括所有字母和数字,是匹配它们自身的正则表达式。任何具有特殊含义的元字符可以通过前置一个反斜杠来引用。(may be quoted by preceding it with a backslash.)
+.PP
+.I "方括号表达式 (bracket)"
+是一个字符序列,放在
+.B [
+和
+.BR ]
+当中。它匹配序列中的任何一个字符;如果序列中的第一个字符是脱字符 (caret)
+.B ^
+那么它匹配
+.I 不在
+序列中的任何一个字符。例如,正则表达式
+.B [0123456789]
+匹配任何一个数字。
+.PP
+在方括号表达式之中,一个
+.I "范围表达式 (range)"
+由两个字符组成,中间用一个连字符 (hyphen) 分隔。它匹配在这两个字符之间的任何一个字符,使用本地化的序列顺序和字符集。(that sorts between the two characters,inclusive, using the locale's collating sequence and character set.) 例如,在默认的 C locale中,
+.B [a\-d]
+与
+.BR [abcd]
+等价。典型的,许多 locale 将字符以字典顺序排序,在这些 locale 中,
+.B [a\-d]
+不与
+.BR [abcd]
+等价;例如它可能与
+.BR [aBbCcDd]
+等价。要获得传统的对方括号表达式的解释,可以设定环境变量
+.B LC_ALL
+值为
+.BR C
+来使用 locale C 。
+.PP
+最后,在方括号表达式中有一些预定义的字符类,如下所示。它们的名字是自说明的,它们是
+.BR [:alnum:] (字母和数字),
+.BR [:alpha:] (字母),
+.BR [:cntrl:] (),
+.BR [:digit:] (数字),
+.BR [:graph:] (),
+.BR [:lower:] (小写字母),
+.BR [:print:] (可打印字符),
+.BR [:punct:] (),
+.BR [:space:] (空格),
+.BR [:upper:] (大写字母),
+和
+.BR [:xdigit:]
+。例如,
+.B [[:alnum:]]
+意思是
+.BR [0\-9A\-Za\-z]
+,但是后一种表示方法依赖于 locale C 和\s-1ASCII\s0 字符编码,而前一种是与 locale 和字符集无关的。(注意这些字符类名中的方括号也是符号名称的一部分,必须包含在用来为序列定界的方括号之中。)
+.PP
+大多数元字符处于序列中时会失去它们的特殊意义。为了包含一个字面意义 (literal) 的
+.B ]
+,需要将它放在序列的最前。与此相似,为了包含一个字面意义 (literal) 的
+.B ^
+,需要将它放在除了序列最前之外的其他位置。最后,为了包含一个字面意义 (literal) 的
+.B \-
+,需要将它放在序列最后。
+.PP
+句点符 (period)
+.B .
+匹配任何一个字符。符号
+.B \ew
+是
+.B [[:alnum:]]
+的同义词,
+.B \eW
+是
+.BR [^[:alnum]]
+的同义词。
+.PP
+脱字符 (caret)
+.B ^
+和美元标记 (dollar)
+.B $
+分别是匹配一行的首部和尾部的空字串的元字符。符号
+.B \e<
+和
+.B \e>
+分别是匹配一个词的首部和尾部的空字串的元字符。符号
+.B \eb
+匹配一个词边缘 (edge) 的空字串,符号
+.B \eB
+匹配
+.I 不
+处于一个词的边缘的空字串。
+.PP
+一个正则表达式后面可以跟随多种重复操作符之一。
+.PD 0
+.TP
+.B ?
+先前的项是可选的,最多匹配一次。
+.TP
+.B *
+先前的项可以匹配零次或多次。
+.TP
+.B +
+先前的项可以匹配一次或多次。
+.TP
+.BI { n }
+先前的项将匹配恰好
+.I n
+次。
+.TP
+.BI { n ,}
+先前的项可以匹配
+.I n
+或更多次。
+.TP
+.BI { n , m }
+先前的项将匹配至少
+.I n
+词,但是不会超过
+.I m
+次。
+.PD
+.PP
+两个正则表达式可以连接到一起;得出的正则表达式可以匹配任何由两个分别匹配连接前的子表达式的子字符串连接而成的字符串。
+.PP
+两个正则表达式可以用中缀操作符
+.BR |
+联合到一起,得出的正则表达式可以匹配任何匹配联合前的任何一个子表达式的字符串。
+.PP
+重复操作符的优先级比连接高,接下来又比选择的优先级高。一个完整的子表达式可以用圆括号 (parentheses) 括住来超越这些优先级规则。(to override these precedence rules.)
+.PP
+反向引用
+.BI \e n\c
+\& 中,
+.I n
+是一个数字,匹配正则表达式中,以第
+.IR n
+个圆括号括住的子表达式已匹配的子字符串。
+.PP
+在基本正则表达式中,元字符
+.BR ? ,
+.BR + ,
+.BR { ,
+.BR | ,
+.BR ( ,
+和
+.BR )
+丧失了它们的特殊意义;作为替代,使用加反斜杠的 (backslash) 版本
+.BR \e? ,
+.BR \e+ ,
+.BR \e{ ,
+.BR \e| ,
+.BR \e( ,
+和
+.BR \e)
+。
+.PP
+传统的
+.B egrep
+不支持元字符
+.B {
+,并且一些
+.B egrep
+的实现通过支持
+.B \e{
+来代替它,因此可移植的脚本应当避免
+在
+.B egrep
+中使用
+.B {
+模式,应当使用
+.B [{]
+来匹配一个字面意义 (literal) 的
+.BR {
+。
+.PP
+\s-1GNU\s0
+.B egrep
+通过假设如果
+.B {
+处于 an invalid interval specification 的起始,就不是一个特殊字符,来支持传统的用法。例如,shell 命令
+.B "egrep '{1'"
+将会搜索这个两字符的字符串
+.B {1
+而不是报告在正则表达式中发生了语法错误。\s-1POSIX.2\s0 允许这个行为,将其视为一个扩展,但是可移植的脚本应当避免使用它。
+.SH "环境变量 ENVIRONMENT VARIABLES"
+.B Grep
+的行为受下列环境变量影响。
+.PP
+一个 locale
+.BI LC_ foo
+是通过按下面的顺序,
+.BR LC_ALL ,
+.BR LC_\fIfoo\fP ,
+.BR LANG ,
+检查这三个环境变量的取值而确定的。设置了的第一个变量指定了 locale。例如,如果
+.B LC_ALL
+没有设置,但是
+.B LC_MESSAGES
+设置为
+.BR pt_BR
+,那么巴西的葡萄牙语 (Brazilian Portuguese) 将用作
+.B LC_MESSAGES
+locale 的值。如果没有设置这其中任何一个环境变量,或者没有安装所设置的 locale 目录,或者如果
+.B grep
+没有将国家和语言支持 (national language support (\s-1NLS\s0)) 编译在内,将默认使用 locale C。
+.TP
+.B GREP_OPTIONS
+这个变量指定了将放在所有显式指定的选项之前的默认选项。例如,如果
+.B GREP_OPTIONS
+是
+.BR "'\-\^\-binary-files=without-match \-\^\-directories=skip'"
+的话,
+.B grep
+将像已经在任何显式指定的选项之前指定了
+.B \-\^\-binary-files=without-match
+和
+.B \-\^\-directories=skip
+选项那样来运作。选项以空白 (whitespace) 分隔。一个反斜杠 (backslash) 使得下一个字符转义 (escape),因此可以用来指定一个含有空白或者反斜杠的选项。
+.TP
+.B GREP_COLOR
+指定用来高亮显示的标记。
+.TP
+\fBLC_ALL\fP, \fBLC_COLLATE\fP, \fBLANG\fP
+这些变量指定了 locale
+.B LC_COLLATE
+,决定了解释类似
+.BR [a\-z]
+的范围表达式时的序列顺序 (collating sequence) 。
+.TP
+\fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLANG\fP
+这些选项指定了 locale
+.B LC_CTYPE
+,决定了字符的类型,例如,哪些字符是空白 (whitespace) 。
+.TP
+\fBLC_ALL\fP, \fBLC_MESSAGES\fP, \fBLANG\fP
+这些选项指定了 locale
+.B LC_MESSAGES
+,决定了
+.B grep
+的消息使用的语言。默认的 locale C 使用美国英语的消息。
+.TP
+.B POSIXLY_CORRECT
+如果设置了的话,
+.B grep
+将像 \s-1POSIX.2\s0 要求的那样来运作;否则,
+.B grep
+将像其他 \s-1GNU\s0 程序一样来运作。\s-1POSIX.2\s0 要求文件名之后的选项必须视为文件名;默认情况下,这些选项被交换到操作数列表的前面,被当作选项来处理。同时, \s-1POSIX.2\s0 要求不可识别的选项在诊断消息中表示为 \*(lqillegal\*(rq,但是既然它们没有真正触犯法律,因此默认情况下它们在诊断 (diagnose) 消息中表示为 \*(lqinvalid\*(rq。
+.B POSIXLY_CORRECT
+同时禁止了下面描述的 \fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP。
+.TP
+\fB_\fP\fIN\fP\fB_GNU_nonoption_argv_flags_\fP
+(这里
+.I N
+是
+.BR grep 's
+数字形式的进程ID。) 如果这个环境变量的值的第
+.IR i
+个字符是
+.BR 1
+,那么不将
+.B grep
+的第
+.IR i
+个操作数视为一个选项,即使它看上去像。shell 可以将这个变量设置在它运行的每个命令的环境中,指定哪个操作数是文件名通配符扩展的结果,因此不应当被视为选项。这个行为只有在使用 \s-1GNU\s0 C 库时有效,并且只有在
+.B POSIXLY_CORRECT
+没有设置的时候。
+.SH 诊断 DIAGNOSTICS
+.PP
+一般地,如果找到了选择的行,退出时状态值为0,否则为1。但是如果发生错误,退出时状态值是2,除非指定了
+.B \-q
+或
+.B \-\^\-quiet
+或
+.B \-\^\-silent
+选项,并且找到了选择的行。
+.SH BUGS
+.PP
+bug 报告的电子邮件地址是
+.BR bug-gnu-utils at gnu.org 。
+一定要在\*(lqSubject:\*(rq中带有 \*(lqgrep\*(rq 这个词。
+.PP
+在
+.BI { n , m }
+结构中重复次数过多会导致
+.B grep
+使用大量内存。另外,一些过分晦涩的正则表达式需要指数级的时间和空间,可能会导致
+.B grep
+耗尽所有内存。
+.PP
+向后引用 (backreferences) 非常慢,可能需要指数级的时间。
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.11.03
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+.\" Work around problems with some troff -man implementations.
+.br
diff --git a/src/man1/groff.1 b/src/man1/groff.1
new file mode 100644
index 0000000..ad68f0a
--- /dev/null
+++ b/src/man1/groff.1
@@ -0,0 +1,409 @@
+.ig \"-*- nroff -*-
+Copyright (C) 1999 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.de TQ
+.br
+.ns
+.TP \\$1
+..
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.TH GROFF 1 "21 December 1999" "Groff Version 1.15"
+.SH NAME
+groff \- groff 文档排版系统前端
+.SH "总览 (SYNOPSIS)"
+.B groff
+[
+.B \-abehilpstvzCENRSUVXZ
+]
+[
+.BI \-w name
+]
+[
+.BI \-W name
+]
+[
+.BI \-m name
+]
+[
+.BI \-F dir
+]
+[
+.BI \-I dir
+]
+[
+.BI \-T dev
+]
+[
+.BI \-f fam
+]
+[
+.BI \-M dir
+]
+[
+.BI \-d cs
+]
+[
+.BI \-r cn
+]
+[
+.BI \-n num
+]
+[
+.BI \-o list
+]
+[
+.BI \-P arg
+]
+[
+.BI \-L arg
+]
+[
+.IR files \|.\|.\|.\|
+]
+.SH "描述 (DESCRIPTION)"
+.B groff
+是 groff 文档排版系统的前端。 一般来说, 它运行
+.B troff
+程序和一个同选择的设备相对应的后处理器。 可选的设备有
+.TP
+.B ps
+PostScript 打印机和查看器。
+.TP
+.B dvi
+TeX dvi 格式。
+.TP
+.B X75
+一个 75 点每英寸的 X11 查看器。
+.TP
+.B X100
+一个 100 点每英寸的 X11 查看器。
+.TP
+.B ascii
+打字机一类的设备。
+.TP
+.B latin1
+用 ISO Latin-1 字符集的打字机设备。
+.TP 
+.B lj4
+一个兼容 HP LaserJet4 的(或者其它兼容 PCL5 的) 打印机。
+.TP
+.B html
+输出 HTML 格式。
+.LP
+在设备描述文件里, 设备的后处理器是通过
+.B postpro
+命令指定的。 这个可以被
+.B \-X
+选项改写。
+.LP
+默认的设备是
+.BR ps 。
+它可以选择用
+.BR pic ,
+.BR eqn ,
+.BR tbl ,
+.BR refer ,
+或者
+.B soelim
+等预处理器。
+.LP
+如果没有任何选项, 可以用一个单独的
+.BR \- 
+来代替。 文件名
+.B \-
+代表标准输入。
+.LP
+.B grog
+命令可以根据文件格式猜测相应的 groff 命令。
+.SH "选项 (OPTIONS)"
+.TP
+.B \-h
+打印帮助信息。
+.TP
+.B \-e
+用 eqn 预处理。
+.TP
+.B \-t
+用 tbl 预处理。
+.TP
+.B \-p
+用 pic 预处理。
+.TP
+.B \-s
+用 soelim 预处理。
+.TP
+.BI \-I dir
+此选项在
+.BR soelim (1) 
+中描述。 此选项包含
+.B \-s
+选项。
+.TP
+.B \-R
+用 refer 预处理。 没有传输参数给
+.B refer
+的机制, 因为很多 refer 选项在文件里有相应的命令。 细节请参照
+.BR refer (1) 。
+.TP
+.B \-v
+使
+.B groff
+运行的程序打印出版本号。
+.TP
+.B \-V
+在标准输出打印管道线, 而不执行它。
+.TP
+.B \-z
+禁止
+.BR troff
+输出。 只有出错信息显示出来。
+.TP
+.B \-Z
+不后处理
+.BR troff
+的输出。 一般
+.B groff
+会自动运行相应的后处理器。
+.TP
+.BI \-P arg
+把
+.I arg
+传给后处理器。 每个参数都要用单独的
+.B \-P
+选项分开。 注意
+.B groff
+在传
+.I arg
+给后处理器时不会在前加上
+.B \- 。
+.TP
+.B \-l
+把输出送到打印机, 所用的命令在设备描述文件中用
+.B print
+命令分开。
+.TP
+.BI \-L arg
+把
+.I arg
+传给打印机。 每个参数都要用单独的
+.B \-L
+选项分开。 注意
+.B groff
+在传
+.I arg
+给后处理器时不会在前加上
+.B \- 。
+.TP
+.BI \-T dev
+生成针对
+.IR dev
+设备的输出。 默认的设备是
+.BR ps 。
+.TP
+.B \-X
+用
+.B gxditview
+预览, 而不是用一般的后处理器。
+.B Groff
+会传给
+.B gxditview
+一个
+.B -printCommand
+选项, 这样如果有
+.B -l
+选项
+.B Print
+就会做
+.B groff
+会做的事。 除非有
+.BR \-Tps
+选项, 否则这并不能产生好的输出。
+.TP
+.B \-N
+在 eqn 分割符出不产生新行符(newline)。 这个同
+.BR eqn
+中的
+.B \-N
+选项有一样的作用。
+.TP
+.B \-S
+安全模式。 把
+.B \-S
+选项传给
+.B pic
+并且对
+.BR troff
+用
+.B \%\-msafer
+宏。 (默认开启)
+.TP
+.B \-U
+不安全模式。 用以前的不安全的特性。
+.TP
+.B \-a
+.TQ
+.B \-b
+.TQ
+.B \-i
+.TQ
+.B \-C
+.TQ
+.B \-E
+.TQ
+.BI \-w name
+.TQ
+.BI \-W name
+.TQ
+.BI \-m name
+.TQ
+.BI \-o list
+.TQ
+.BI \-d cs
+.TQ
+.BI \-r cn
+.TQ
+.BI \-F dir
+.TQ
+.BI \-M dir
+.TQ
+.BI \-f fam
+.TQ
+.BI \-n num
+这些都在
+.BR troff (1)
+中描述。
+.SH "环境 (ENVIRONMENT)"
+.TP
+.SM
+.B GROFF_COMMAND_PREFIX
+如果这个变量设为
+.IR X ,
+.B groff
+会运行
+.IB X troff ,
+而不是
+.BR troff 。
+这也适用于
+.BR tbl ,
+.BR pic ,
+.BR eqn ,
+.BR refer ,
+和
+.BR soelim。 但并不适用于
+.BR grops ,
+.BR grodvi ,
+.BR grotty ,
+.BR grolj4 ,
+.BR grohtml ,
+和
+.BR gxditview 。
+.TP
+.SM
+.B GROFF_TMAC_PATH
+一个冒号分开的列表, 包含寻找宏文件的路径。
+.TP
+.SM
+.B GROFF_TYPESETTER
+缺省设备。
+.TP
+.SM
+.B GROFF_FONT_PATH
+一个冒号分开的列表, 包含寻找
+.BI dev name
+的路径。
+.TP
+.SM
+.B PATH
+.BR groff
+执行命令的搜寻路径。
+.TP
+.SM
+.B GROFF_TMPDIR
+临时文件目录。 如果没有设置此变量但是设置了
+.B
+.SM TMPDIR
+临时文件就会在那个目录中创建。 否则临时文件就会在
+.BR /tmp
+中创建。 
+.BR grops (1)
+和
+.BR refer (1)
+命令都会创建临时文件。
+.SH "文件 (FILES)"
+.Tp \w'\fB/usr/lib/groff/font/dev\fIname\fB/DESC'u+3n
+.BI /usr/lib/groff/font/dev name /DESC
+.IR name
+设备的设备描述文件。
+.TP
+.BI /usr/lib/groff/font/dev name / F
+.IR name
+设备的
+.I F
+字体的字体文件。
+.SH "作者 (AUTHOR)"
+James Clark <jjc at jclark.com>
+.SH "错误 (BUGS)"
+报错误报告给 bug-groff at gnu.org。 请包含一个完整的报告, 还有一个能使错误再次出现的例子,
+并注明用的是 groff 的哪个版本。
+.SH "版权 (COPYRIGHT)"
+版权所有 \(co 1989, 1990, 1991, 1992, 1999 自由软件基金会
+.LP
+这一程序是自由软件, 你可以遵照自由软件基金会出版的 GNU 通用公共许可
+证条款来修改和重新发布这一程序。 或者用许可证的第二版, 或者(根据你的选
+择)用任何更新的版本。
+.LP
+发布 groff 程序的目的是希望它有用, 但没有任何担保。 甚至没有适合特定目
+的的隐含的担保。 更详细的情况请参阅 GNU 通用公共许可证。
+.LP
+你应该已经和程序一起收到一份 GNU 通用公共许可证的副本。 如果还没有, 写信给:
+The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA02139, USA
+.SH "获取 (AVAILABILITY)"
+groff 的最新版本可以通过匿名 ftp 从 ftp.gnu.org/gnu/groff 得到。
+.SH "参见 (SEE ALSO)"
+.BR grog (1),
+.BR troff (1),
+.BR tbl (1),
+.BR pic (1),
+.BR eqn (1),
+.BR soelim (1) ,
+.BR refer (1),
+.BR grops (1),
+.BR grodvi (1),
+.BR grotty (1),
+.BR grohtml (1),
+.BR gxditview (1),
+.BR groff_font (5),
+.BR groff_out (5),
+.BR groff_man (7),
+.BR groff_ms (7),
+.BR groff_me (7),
+.BR groff_char (7),
+.BR groff_msafer (7)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/8/29
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/groups.1 b/src/man1/groups.1
new file mode 100644
index 0000000..6b3b5c8
--- /dev/null
+++ b/src/man1/groups.1
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
+.TH GROUPS "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+groups \- 显示用户所在的组
+
+.SH "总览 (SYNOPSIS)"
+.B groups
+[\fIOPTION\fR]... [\fIUSERNAME\fR]...
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.TP
+\fB\-\-help\fR
+显示此帮助, 然后退出
+.TP
+\fB\-\-version\fR
+显示版本信息, 然后退出
+.PP
+此命令的效果和 id \fB\-Gn\fR 一样. 如果没有指明 USERNAME, 就使用当前进程的.
+
+.SH "报告错误 (REPORTING BUGS)"
+发现错误请联系 <sh-utils-bugs at gnu.org>.
+
+.SH "另见 (SEE ALSO)"
+.B groups
+的完整文档以 Texinfo 手册的形式维护. 如果正确安装了
+.B info
+和
+.B groups
+程序, 使用命令
+.IP
+.B info groups
+.PP
+应该能够显示完整的手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2004/02/8
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man1/gunzip.1 b/src/man1/gunzip.1
new file mode 100644
index 0000000..c2a5145
--- /dev/null
+++ b/src/man1/gunzip.1
@@ -0,0 +1 @@
+.so man1/gzip.1
diff --git a/src/man1/gview.1 b/src/man1/gview.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/gview.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/gvim.1 b/src/man1/gvim.1
new file mode 100644
index 0000000..c104922
--- /dev/null
+++ b/src/man1/gvim.1
@@ -0,0 +1,360 @@
+.TH VIM 1 "1998 December 28"
+
+.SH NAME
+vim \- Vi IMproved, 一个程序员的文本编辑器
+
+.SH "总览 (SYNOPSIS)"
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+
+.SH "描述 (DESCRIPTION)"
+.B Vim
+是 一个 同 Vi 向上兼容的 文本 编辑器, 可以 用来 编辑
+任何 ASCII 文本, 特别 适合 用来 编辑 程序.
+.PP
+它对 Vi 作了 许多 增强: 多层撤销, 多窗口, 多缓冲区(buffer),
+高亮度 语法显示, 命令行编辑, 文件名匹配, 在线帮助, 可视选定,
+等等. 用
+":help vi_diff.txt" 看
+.B Vim
+和 Vi 的差别 的 摘要.
+.PP
+在运行
+.B Vim
+的时候 可以用 ":help" 命令 获得 很多 帮助.
+参考 下面的 在线帮助 一节.
+.PP
+一般 可用
+.PP
+	vim file
+.PP
+命令 打开
+.B Vim
+来 编辑 一个 文件. 概括的说, 可以用
+.PP
+	vim [options] [filelist]
+.PP
+命令 来运行
+.B Vim .
+如果 没有 文件名, 编辑器 就会 打开 一个 空的 缓冲区.
+否则 就会用 下面 四个中的一个 来选择 要编辑的 文件.
+.TP 12
+file ..
+文件名列表. 第一个 会 作为 当前 文件 读入 缓冲区, 光标 会
+停在 缓冲区的 第一行. 你 可以用 ":next" 命令 转到 其它的 文件.
+如果 要编辑 一个以 "-" 开头的 文件. 在文件 列表 前面 加上 "--".
+.TP
+-
+从 标准输入 读取 被编辑的 文件. 从 标准 错误输出 (应该 是个
+终端) 读入 命令.
+.TP
+-t {tag}
+被 编辑的 文件 和 光标的 初始位置 由 标记 (tag) 决定, 标记
+有点像 一种 goto 标签 (goto label).
+在 标记文件中 找到 标记, 相应的 文件 成为 当前文件, 相应的 命令
+被执行. 这种方式 常用于 C 程序, 标记 就是 函数名, 当前文件 就是
+包含 那个函数的 文件, 光标 停留在 函数的 开始处.
+见 ":help tag-commands"。
+.TP
+-q [errorfile]
+运行时 进入 快速修复模式.
+读取 [errorfile] 文件 并显示 第一个 错误. 如果 没有 [errorfile] 文件,
+文件名 由 'errorfile' 选项 决定 (在 Amiga 为 "AztecC.Err", 在
+其他系统中 为 "errors.vim"). 可以 用 ":cn" 命令 跳到 其它错误处.
+见 ":help quickfix"。
+.PP
+.B Vim
+会 根据 不同命令 有 不同的 表现, 尽管 它们 可能 是 一个 可执行 文件.
+.TP 10
+vim
+正常 模式, 所有 都是 默认状态.
+.TP
+ex
+以 Ex 模式 运行. 用 ":vi" 命令 进入 正常模式. 也可以 加上 "-e" 选项
+进入 此模式.
+.TP
+view
+以 只读模式 运行. 你被禁止 写文件. 也可以 加上 "-R" 选项 进入 此模式.
+.TP
+gvim gview
+GUI 版本。
+开启 一个 新的窗口. 也可以 加上 "-g" 选项 进入 此模式.
+.TP
+rvim rview rgvim rgview
+同 上面的 相同, 只是 加上了 限制, 不能运行 shell 程序, 也 不能 暂停
+.B Vim .
+也 可以 加上 "-Z" 选项 进入 此模式.
+
+.SH "选项 (OPTIONS)"
+所有选项 都可以 以 任何顺序 出现, 可以 在文件名前, 也可以 在文件名后.
+没有 参数的 选项 可以 出现在 一个 "-" 后面.
+.TP 12
++[num]
+对于 第一个 文件, 光标 会停在 第 "num" 行. 如果 没有 "num" , 则 光标
+会停在 最后一行.
+.TP
++/{pat}
+对于 第一个文件, 光标 会停在 {pat} 第一次 出现的 地方. 搜寻 模式
+见 ":help search-pattern"。
+.TP
++{command}
+.TP
+-c {command}
+读入 第一个 文件后 会 执行 {command} 命令. {command} 应为 Ex 命令.
+如果 {command} 中 包含有 空格, 必须 用双引号 括住 (这个取决于所用的 shell).
+例: Vim "+set si" main.c
+.br
+注意: 你 最多 可以用 10 个 "+" 或者 "-c" 命令.
+.TP
+-b
+二进制模式. 设置 一些选项, 这样 就可以 用来 编辑 二进制 和 可执行 文件 了.
+.TP
+-C
+兼容. 设置 'compatible' 选项. 这样 就算 存在 .vimrc 文件
+.B Vim
+也会 基本上 象 Vi 一样了.
+.TP
+-d {device}
+打开 {device} 用作终端, 只在 Amiga 下。
+例:
+"\-d con:20/30/600/150".
+.TP
+-e
+以 Ex 模式 运行
+.B Vim ,
+就像 运行 "ex" 一样。
+.TP
+-f
+前台 运行。 对于 GUI 版本, 
+.B Vim
+不会 同运行它的 shell 分离。
+在 Amiga 中,
+.B Vim
+不会 重新启动 来 开启一个 新窗口. 这个选项 会用在当
+.B Vim
+被 另外一个 程序执行, 并且 这个程序 想等编辑动作 结束后 再运行
+的 时候 (如 mail). 在 Amiga 上 ":sh" 和 ":!" 不会起作用.
+.TP
+-F
+如果
+.B Vim
+编译时 加入了 对 从右到左 书写的 文件 FKMAP 以及 Farsi 键盘映射 的支持,
+.B Vim
+会 以 Farsi 模式 运行, 比如 设置 'fkmap' 和 'rightleft' 选项.不然
+.B Vim
+会 显示 一条 错误信息 并 终止.
+.TP
+-g
+如果
+.B Vim
+编译时 加入 GUI 支持, 会开启 GUI, 不然
+.B Vim
+会 显示 一条 错误信息 并 终止.
+.TP
+-h
+.B Vim
+显示 命令行 参数 和 选项的 帮助, 然后 终止.
+.TP
+-H
+如果
+.B Vim
+编译时 加入了 对 从右到左 书写的 文件 RIGHTLEFT 以及 Hebrew 键盘映射
+的支持, 
+.B Vim
+会以 Hebrew 模式 运行, 比如 设置 'hkmap' 和 'rightleft' 选项. 不然
+.B Vim
+会 显示 一条 错误信息 并 终止.
+.TP
+-i {viminfo}
+准许 使用 viminfo 文件, 这个 选项 设置 使用的 文件名, 默认的 是
+"~/.viminfo". 用 "NONE" 文件名 也可以 跳过 使用 .viminfo 文件.
+.TP
+-L
+同 -r 一样.
+.TP
+-l
+Lisp 模式.
+打开 'lisp' 和 'showmatch' 选项.
+.TP
+-m
+禁止 修改文件. 设置 'write' 选项, 这样 就不能 写文件了.
+.TP
+-N
+非兼容 模式. 设置 'compatible' 选项. 这样
+.B Vim
+会 表现得 更好, 就算 .vimrc 文件 不存在 也会 同 Vi 不兼容.
+.TP
+-n
+禁止 交换文件, 这样 在崩溃后 就 不能 恢复 文件了. 对于 编辑
+在很慢的 媒体中的 文件 很有好处 (比如软盘), 也可以 用 ":set uc=0"
+禁止交换, 用 ":set uc=200" 开启 交换.
+.TP
+-o[N]
+打开 N 个窗口. 如果没有 N, 为 每个文件 开一个 窗口.
+.TP
+-R
+只读 模式.  设置 'readonly' 选项. 你 仍然 可以 编辑 缓冲区, 但是 不能
+重写文件. 如果 你要 重写文件, 必须在 Ex 命令中 用惊叹号, 比如 ":w!".
+-R 选项 隐含了 -n 选项 (见下). 'readonly' 选项 可以 用 ":set noro" 设置.
+见 ":help 'readonly'".
+.TP
+-r
+列出 交换文件, 显示 关于 恢复文件的 信息.
+.TP
+-r {file}
+恢复 模式. 交换文件 是 用来 恢复 在 编辑过程中 崩溃了的 文件.
+交换 文件名 是 被编辑文件名 后面 加上 ".swp". 见 ":help recovery".
+.TP
+-s
+安静 模式. 只在 用 "Ex" 启动 或者 用了 "-e" 选项 才有用.
+.TP
+-s {scriptin}
+读入 脚本文件 {scriptin}. 文件里的 字符 就像 你 直接 输入 一样的, 也
+可以 用 ":source! {scriptin}" 命令 实现 这个功能. 如果 在 编辑器 结束前
+就 读到了 文件尾, 就 接着 从键盘 读入.
+.TP
+-T {terminal}
+告诉
+.B Vim
+你 用的 终端的 名字, 只有 当 不能 自动确定 的时候 才这样. 它 必须是
+.B Vim
+(builtin) 能辨认的 终端 或者是 在 termcap 或者 terminfo 文件中 定义了的.
+.TP
+-u {vimrc}
+用 {vimrc} 文件 里的 命令 来初始化, 跳过 所有 其它的 初始化, 用 这个
+来编辑 特殊类型的 文件. 也可以 用 "NONE" 来 跳过 所有初始化. 在 vim 中
+用 ":help initialization" 查看 更多信息.
+.TP
+-U {gvimrc}
+用 {gvimrc} 文件 里的 命令 来初始化 GUI, 跳过 所有 其它的 GUI 初始化, 也
+可以 用 "NONE" 来跳过 所有 GUI 初始化. 在 vim 中 用 ":help gui-init" 查看
+更多信息.
+.TP
+-V
+冗长 显示. 显示 执行 初始化代码 和 读入的 文件, 并且 写 viminfo 文件.
+.TP
+-v
+以 Vi 模式运行
+.B Vim ,
+就像 运行 "vi" 一样, 只有 运行 "ex" 时 才有用.
+.TP
+-w {scriptout}
+所有 在
+.B Vim
+退出前 你键入的 字符 都会被 存入 {scriptout} 文件. 这 用来 创建一个
+脚本文件, 你 可以用 "vim -s" 和 ":source!" 来使用. 如果 {scriptout} 存在, 会
+把 字符 追加到 后面.
+.TP
+-W {scriptout}
+同 -w 一样, 但是 是覆盖 原来的文件.
+.TP
+-x
+写文件时 加密. 会提示你 输入密码.
+.TP
+-Z
+受限 模式. 同运行 以 "r" 开头的 程序 同效.
+.TP
+--
+表明 选项结束. 在此之后的 参数 都会被认为 是 文件名, 可以 用这个
+来编辑 一个 以 '-' 开头 的文件.
+.SH "在线帮助 (ON-LINE HELP)"
+在
+.B Vim
+中键入 ":help" 来 获得 帮助. 用 ":help subject" 来 获得 关于 一个
+特定主题的 帮助. 例如 用 ":help ZZ" 来 获得 关于 "ZZ" 的帮助.
+用 <Tab> 和 CTRL-D 来 完成 帮助主题 (":help cmdline-completion").
+可以 用 标记 从 一个地方 跳到 另一个 地方 (有点像 超文本连接, 见 ":help").
+所有的 文档 都可以 这样 来浏览, 比如 ":help syntax.txt".
+.SH "文件 (FILES)"
+.TP 15
+/usr/share/vim/vim56/doc/*.txt
+.B Vim
+文档文件. 用 ":help doc-file-list" 获得 完整的 列表.
+.TP
+/usr/share/vim/vim56/doc/tags
+在 文档文件中 查找信息 用的 标签文件.
+.TP
+/usr/share/vim/vim56/syntax/syntax.vim
+系统 语法 初始化 文件.
+.TP
+/usr/share/vim/vim56/syntax/*.vim
+各种语言的 语法文件.
+.TP
+/usr/share/vim/vimrc
+系统
+.B Vim
+初始化文件.
+.TP
+/usr/share/vim/gvimrc
+系统 gvim 初始化文件.
+.TP
+/usr/share/vim/vim56/optwin.vim
+":options" 命令 所用的 脚本文件, 这是个 查看 和 设置选项的 很好的 办法.
+.TP
+/usr/share/vim/vim56/menu.vim
+gvim 的 系统菜单 初始化文件.
+.TP
+/usr/share/vim/vim56/bugreport.vim
+用来 生成 错误报告的 脚本文件, 见 ":help bugs".
+.TP
+/usr/share/vim/vim56/filetype.vim
+根据 文件名 来判定 文件类型 的 脚本文件, 见 ":help 'filetype'".
+.TP
+/usr/share/vim/vim56/scripts.vim
+根据 文件内容 来判定 文件类型 的 脚本文件, 见 ":help 'filetype'".
+.PP
+最新 信息 参见 VIM 主页:
+.br
+\<URL:http://www.vim.org/\>
+
+.SH "参见 (SEE ALSO)"
+vimtutor(1)
+
+.SH "作者 (AUTHOR)"
+Most of
+.B Vim
+的大部分 都是 Bram Moolenaar 在 很多人的 帮助下 完成的.
+见 ":help credits".
+.br
+虽然 不大会有 最早的 代码存在, 但是
+.B Vim
+基于 Stevie 写的代码, 之后被 Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter 修改, 然后 才形成的.
+
+.SH "错误 (BUGS)"
+多半都有. 用 ":help todo" 看 已知问题的 列表.
+.PP
+注意 有些 被 报告为 错误的 事实上 是 应为 太相信 所有的 行为
+都应该 同 Vi 一样, 如果 你因为 它 和 Vi 不一样 而 认为 它 是个
+错误, 你 应该 好好 看看 vi_diff.txt 文件 (或者 在 Vim 中
+键入 :help vi_diff.txt), 并且 看看 'compatible' 和 'cpoptions' 选项.
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/8/30
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/gzip.1 b/src/man1/gzip.1
new file mode 100644
index 0000000..1bac31c
--- /dev/null
+++ b/src/man1/gzip.1
@@ -0,0 +1,437 @@
+.\" 中文版版权所有 Liu JingSong, www.linuxforum.net 2000
+.\" 本文档可在遵照LDP GENERAL PUBLIC LICENSE,Version 1, September 1998
+.\" 中描述的条件下进行复制,且该文件发布时必须包含该文档.
+.TH GZIP 1 local
+.SH NAME
+gzip, gunzip, zcat \-  压缩或展开文件
+.SH  总揽
+.ll +8
+.B gzip
+.RB [ " \-acdfhlLnNrtvV19 " ]
+.RB [ \-S\ 后缀 ]
+[
+.I "文件名 \&..."
+]
+.ll -8
+.br
+.B gunzip
+.RB [ " \-acfhlLnNrtvV " ]
+.RB [ \-S\ 后缀 ]
+[
+.I "文件名 \&..."
+]
+.br
+.B zcat
+.RB [ " \-fhLV " ]
+[
+.I "文件名 \&..."
+]
+.SH 描述
+.I Gzip
+采用Lempel-Ziv 编码算法(LZ77)压缩给定文件的大小。
+在可能的情况下, 每个文件被具有扩展名
+.B "\&.gz,"
+的文件所替换, 同时保留原属主状态,存取和修改时间
+(在VMS系统下缺省扩展名为
+.B "\-gz"
+在MSDOS、OS/2 FAT, Windows NT FAT 和Atari系统下,缺省扩展名为
+.B "z"
+)
+如果未指定文件名,或者指定了一个名为"-"的文件名,则从标准输入读取数据,压缩的
+结果输出到标准输出。
+.I Gzip
+只尝试压缩常规文件,特别地,它将忽略符号连接。
+.PP
+如果压缩后的文件名对于所在的文件系统来说太长,
+.I gzip
+会将其截断。
+.I Gzip
+只尝试截断文件名中大于3个字符的段(每个段由点分隔)。如果文件名只由较小的段
+组成,最长的段将被截断。例如,如果文件名的长度限制是14个字符,文件gzip.msdos.exe
+将被压缩为gzi.msd.exe.gz。在没有文件名长度限制的系统中,文件名将不会被截断。
+.PP
+缺省情况下,
+.I gzip
+将原始文件名和时间信息保存在压缩后的文件中。
+当采用
+.B \-N
+选项解压缩文件时,这些信息将被利用。在经过文件传输后文件名被截断及时间信息
+未被保留的情况下,这些信息将将用于恢复文件名及时间信息。
+.PP
+用
+.I gzip -d
+或者
+.I gunzip
+以及
+.I zcat.
+可以将压缩后的文件恢复到原始的形式。如果保留在压缩文件中的原始文件名不适合
+于当前的文件系统,将根据原文件名新建一个合法的文件名。
+.PP
+.I gunzip
+将命令行中以.gz, -gz, .z, -z, _z 或 .Z结尾并具有正确标志头的文件
+解压缩,并以去掉扩展名的解压缩文件替换原文件。
+.I gunzip
+也能识别扩展名为
+.B "\&.tgz"
+和
+.B "\&.taz"
+的文件,并将其分别当作
+.B "\&.tar.gz"
+和
+.B "\&.tar.Z"
+的缩写。
+在压缩时,如果采用
+.B "\&.tar"
+扩展名则需要对文件名进行截断处理时,
+.I gzip
+将采用
+.B "\&.tgz"
+作为扩展名。
+.PP
+.I gunzip
+目前能够解压由
+.I gzip, zip, compress, compress -H
+以及
+.I pack
+产生的文件。
+对输入格式的检测是自动的。当采用前两种格式时,
+.I gunzip
+检查一个32位的CRC校验码。对于
+.I pack, gunzip
+则检查压缩前的数据长度。标准的
+.I compress
+格式的设计无法实现一致性检查。但有时
+.I gunzip
+仍然能检测到坏的.Z文件。如果你在解压一个.Z文件时出现错误,不要简单地因为标准的
+.I uncompress
+没有报错就认定.Z文件是正确的。
+这通常意味着标准的
+.I uncompress
+没有检查它的输入数据,而盲目地产生了错误的输出。SCO的compress -H格式(lzh压缩方
+法)不包含CRC校验码,但也允许一些一致性检查。
+.PP
+由
+.I zip
+生成的文件, 如果其内容只有一个文件并且是以'deflation'方式压缩的,则可
+由gzip解压。这一特性只是为了方便将tar.zip 格式的文件转换为tar.gz格式而加入的。
+要解压含有多个文件的zip文件,请用
+.I unzip.
+.PP
+.I zcat
+的功能与
+.I gunzip
+.B \-c.
+相同。
+(在一些系统中,
+.I zcat
+可能被安装成
+.I gzcat
+以保留
+.I compress
+与zcat的原有连接。)
+.I zcat
+将命令行中列出的文件或由标准输入输入的数据解压,解压后的数据写到标准输出。
+.I zcat
+解压具有正确标志头的文件,而不管其是否带有
+.B "\&.gz"
+后缀。
+.PP
+.I Gzip
+采用
+.I zip
+和 PKZIP 中所采用的Lempel-Ziv算法。得到的压缩比依赖于输入数据的大小以及公用
+子串的分布。例如源程序和英文文档能够压缩60\-70%。
+压缩比通常比LZW(
+.IR compress
+采用的算法)、Huffman编码(
+.IR pack
+所采用的算法)、以及自适应Huffman编码(
+.RI compact )
+等方法要好得多。
+.PP
+即使压缩后的文件略大于原文件,压缩也照样进行。最坏的情况下,多出的数据包括
+gzip文件头中的若干个字节,加上每块32K的5个字节,或者,对于大文件来说0.015%
+的放大率。注意实际占用的硬盘块数目几乎从不增加。
+.I gzip
+在压缩和解压缩时保留原文件的属主和时间信息。
+
+.SH 选项
+.TP
+.B \-a --ascii
+Ascii文本模式:按本地习惯转换行结束符。该选项仅在一些非Unix 系统上有效。
+对于MSDOS,在压缩时CR LF(译注:即回车和换行符)被转换为LF,在解压时LF被
+转换为CR LF。
+.TP
+.B \-c --stdout --to-stdout
+将结果写到标准输出;原文件保持不变。如果有多个输入文件,输出将由一系列
+独立的压缩文件组成。如果想得到较好的压缩率,在压缩前应将多个文件连在一起。
+.TP
+.B \-d --decompress --uncompress
+解压缩。
+.TP
+.B \-f --force
+强制压缩和解压缩,即使指定文件具有多重连接,或相应文件已经存在,或压缩数据
+来自或写往一个终端。
+如果输入数据是
+.I gzip
+无法识别的格式,同时在命令行中也给出了--stdout选项,gzip将把输入数据拷贝至标准
+输出而不做任何改动,就象cat所做的一样。
+如果未给出
+.B \-f
+选项,并且未在后台运行,
+.I gzip
+会提示用户以确认是否覆盖一个已存在的文件。
+.TP
+.B \-h --help
+显示帮助信息然后退出。
+.TP
+.B \-l --list
+列出每个压缩文件的如下项目:
+
+    compressed size:  压缩文件的长度
+    uncompressed size:  压缩前文件的长度
+    ratio: 压缩率(如果未知则为0.0%)
+    uncompressed_name: 压缩前的文件名
+
+对于非gzip格式的文件,压缩前文件长度显示为-1,例如由compress压缩的.Z文件。
+可用下列命令得到这种文件压缩前的长度:
+
+    zcat file.Z | wc -c
+
+如果同时指定了--verbose选项,下列项目也被列出:
+
+    method: 压缩方式
+    crc: 未压缩数据的32位CRC校验码
+    date & time: 压缩前文件的时间信息
+
+目前支持的压缩方式有deflate、compress、lzh(SCO下的compress -H)以及pack等方式。
+对于非gzip格式的文件,crc校验码显示为ffffffff。
+
+若指定了--name选项,如果有的话,压缩前文件名,日期以及时间是保存在压缩文件中
+的内容。
+
+若指定了--verbose选项,还将列出所有文件的长度总和,除非某些文件的长度未知。
+若指定--quiet选项,将不显示标题和合计两行内容。
+.TP
+.B \-L --license
+显示
+.I gzip
+的许可证信息然后退出。
+.TP
+.B \-n --no-name
+在压缩时,缺省不保留原始文件名和时间信息。(如果必须对文件名作截断处理,
+则原始文件名总是被保存。) 在解压缩时,即使有也不恢复原始文件名(仅将压
+缩文件名中的
+.I gzip
+后缀去掉)和时间信息(拷贝压缩文件中相应信息)。该选项是压缩时的缺省选项。
+.TP
+.B \-N --name
+在压缩时总是保存原始文件名和时间信息;该选项为缺省选项。在解压缩时,如果
+存在原始文件名和时间信息则恢复之。该选项可用于对文件名长度有限制的系统,
+以及经过文件传输后丢失时间信息的情况。
+.TP
+.B \-q --quiet
+压制所有警告信息。
+.TP
+.B \-r --recursive
+递归地访问目录结构。如果命令行中有目录名,
+.I gzip
+将进入目录并压缩所有找到的文件(如果执行的命令是
+.I gunzip
+则对其解压缩)。
+.TP
+.B \-S .suf   --suffix .suf
+采用.suf后缀取代.gz后缀。可以指定任何后缀,但应避免使用除了.z和.gz以外
+的其它后缀,以免文件传输到其它系统时发生混淆。一个空后缀将迫使gunzip
+解压缩所有文件而不管它具有什么样的后缀,例如:
+
+    gunzip -S "" *       (在MSDOS下用*.*替换*)
+
+以前版本的gzip采用.z后缀。为了避免与
+.IR pack "(1)".
+冲突,后来作了改动。
+.TP
+.B \-t --test
+测试。检查压缩文件的完整性。
+.TP
+.B \-v --verbose
+详尽模式。显示每个压缩或解压缩文件的名字和压缩率。
+.TP
+.B \-V --version
+版本。显示版本号和编译选项后退出。
+Version. Display the version number and compilation options then quit.
+.TP
+.B \-# --fast --best
+用指定的数字
+.IR #
+调整压缩速度,
+其中
+.B \-1
+及
+.B \-\-fast
+对应最快压缩方式(压缩率较低),
+.B \-9
+及
+.B \-\-best
+对应最慢压缩方式(压缩率最佳)。缺省的压缩级别为
+.BR \-6
+(也就是说,以速度为代价偏向于高压缩率)。
+.SH "高级用法"
+多个被压缩的文件可以连在一起。在这种情况下,
+.I gunzip
+能一次解压所有文件。例如:
+
+      gzip -c file1  > foo.gz
+      gzip -c file2 >> foo.gz
+
+然后
+      gunzip -c foo
+
+上面的命令等价于
+
+      cat file1 file2
+
+如果.gz文件中的某一个文件损坏,其他文件仍可以恢复(如果损坏的文件被删除的话)。
+而且一次压缩所有文件能得到较好的压缩率:
+
+      cat file1 file2 | gzip > foo.gz
+
+上面用法的压缩率比下面用法的高:
+
+      gzip -c file1 file2 > foo.gz
+
+如果想重新压缩连接起来的文件以得到较高的压缩率,可以用下面的命令:
+
+      gzip -cd old.gz | gzip > new.gz
+
+如果一个压缩文件由多个文件组成,--list选项只能列出最后一个成员的
+解压后文件长度和CRC校验码。如果需要所有成员的解压后文件长度,可用如下命令:
+
+      gzip -cd file.gz | wc -c
+
+如果想要产生一个具有多个成员的存档文件,以便将来能够独立地取出其中的成员,
+可以用tar或zip这样的归档软件。GNU tar支持-z选项,可直接调用gzip。gzip设计为
+tar的补充,而非它的取代物。
+.SH "环境变量"
+环境变量
+.B GZIP
+能够控制一系列
+.I gzip
+的缺省选项。
+这些选项被首先解释,并且能被命令行参数中的直接定义覆盖。例如:
+      在sh下:    GZIP="-8v --name"; export GZIP
+      在csh下:   setenv GZIP "-8v --name"
+      在MSDOS下: set GZIP=-8v --name
+
+在Vax/VMS系统中,为了避免与调用该程序的符号设置冲突,该环境变量名为GZIP_OPT。
+.SH "另见"
+znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1),
+pack(1), compact(1)
+.SH "诊断"
+正常的退出状态为0;如果出现错误,退出状态为1。如果出现警告信息,退出状态为2。
+.PP
+Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
+.in +8
+在命令行中出现非法的选项。
+.in -8
+.IR file :
+not in gzip format
+.in +8
+指定给
+.I gunzip
+的文件没有被压缩。
+.in -8
+.IR file:
+Corrupt input. Use zcat to recover some data.
+.in +8
+压缩文件已损坏。在损坏点以前的数据可以用下列命令恢复。
+.in +8
+zcat file > recover
+.in -16
+.IR file :
+compressed with 
+.I xx
+bits, can only handle 
+.I yy
+bits
+.in +8
+文件
+.I File
+是由一个比在当前机器上能处理更多
+.I 位
+的程序压缩的(采用LZW算法)。用gzip重新压缩该文件,将得到较好的压缩率,并且
+占用的内存较少。
+.in -8
+.IR file :
+already has .gz suffix -- no change
+.in +8
+gzip认为该程序已经压缩。改变文件名再试。
+.in -8
+.I file
+already exists; do you wish to overwrite (y or n)?
+.in +8
+如果你想覆盖该文件回答"y",如果不是回答"n"。
+
+.in -8
+gunzip: corrupt input
+.in +8
+探测到一个SIGSEGV非法操作,这通常意味着输入文件已经损坏。
+.in -8
+.I "xx.x%"
+.in +8
+由于压缩而减少的数据量相对于输入数据的百分比。(仅对应于
+.BR \-v
+和
+.BR \-l
+选项。)
+.in -8
+-- not a regular file or directory: ignored
+.in +8
+如果输入文件不是常规文件或目录,(例如符号连接,socket文件,FIFO文件,
+设备文件),该文件将保持不变。
+.in -8
+-- has 
+.I xx 
+other links: unchanged
+.in +8
+该文件有连接,将保持不变。更多信息参见
+.IR ln "(1)".
+采用
+.B \-f
+强制压缩多重连接文件。
+.in -8
+.SH 警告
+在向磁带写压缩数据时,通常需要在数据尾部充零以使数据总长度为磁带数据块
+长度的整数倍。当用
+.I gunzip
+对这样的数据解压缩时,
+.I gunzip
+能检测到尾部的无用数据,在缺省情况下将发出一个警告信息。必须采用--quiet
+选项才能压制这一警告信息。该选项可以设在
+.B GZIP
+环境变量中,例如:
+  在sh下:  GZIP="-q"  tar -xfz --block-compress /dev/rst0
+  在csh下: (setenv GZIP -q; tar -xfz --block-compr /dev/rst0
+
+在上面的例子中,gzip被采用了-z选项的GNU tar调用。在磁带上读写压缩数据时,
+应确保采用同样的数据块长度(tar的
+.B -b
+选项)。(本例假定使用的是GNU版本的tar。)
+.SH 缺陷
+如果数据长度超过2GB, 采用--list选项时报告的文件长度不正确。
+如果压缩文件位于不能定位的存储介质上,采用--list选项时报告的文件长度为-1,crc
+校验码为ffffffff。
+
+在极少数情况下,--best选项得到的压缩率比缺省情况(-6)还差。对于一些高度冗余
+的文件,
+.I compress
+比
+.I gzip
+压缩得更好。
+
+.SH "[中文版维护人]"
+.B Liu JingSong <js-liu at 263.net>
+.SH "[中文版最新更新]"
+2000/12/28
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/hash.1 b/src/man1/hash.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/hash.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/head.1 b/src/man1/head.1
new file mode 100644
index 0000000..aad418b
--- /dev/null
+++ b/src/man1/head.1
@@ -0,0 +1,67 @@
+.TH HEAD "1" "1999年12月" "GNU textutils 2.0a" FSF
+.SH NAME(名称)
+head \- 输出文件的开始部分
+.SH SYNOPSIS(总览)
+.B ../src/head
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION(描述)
+.\" Add any additional description here
+.PP
+在标准输出上显示每个FILE的起始10行.
+如果多于一个FILE,则一个接一个地显示,
+并且在每个文件显示的首部给出文件名.
+如果没有FILE,或者FILE为-,
+那么就从标准输入上读取.
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR=\fISIZE\fR
+打印起始的SIZE字节
+.TP
+\fB\-n\fR, \fB\-\-lines\fR=\fINUMBER\fR
+显示起始的NUMBER行,而非默认的起始10行
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+从不显示给出文件名的首部
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+总是显示给出文件名的首部
+.TP
+\fB\-\-help\fR
+显示帮助后退出
+.TP
+\fB\-\-version\fR
+输出版本信息后退出
+.PP
+SIZE可以有一个倍数后缀:
+b表示512,k表示1K,m表示1M.
+如果第一个OPTION(选项)为\fB\-VALUE\fR,
+当后面连接着倍数bkm之一时,则读为\fB\-c\fR VALUE,
+否则读为\fB\-n\fR VALUE.
+.SH AUTHOR(作者)
+David MacKenzie.
+.SH "REPORTING BUGS"(报告bugs)
+请报告bugs到<bug-textutils at gnu.org>.
+.SH COPYRIGHT(版权)
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"(另见)
+.B head
+的完整文档是以Texinfo手册形式维护的.
+如果
+.B info
+和
+.B head
+程序在你那儿都已经安装好了,那么命令
+.IP
+.B info head
+.PP
+应该会让你访问到整篇手册.
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2000/12/14
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/help.1 b/src/man1/help.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/help.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/history.1 b/src/man1/history.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/history.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/host.1 b/src/man1/host.1
new file mode 100644
index 0000000..b0cdb3e
--- /dev/null
+++ b/src/man1/host.1
@@ -0,0 +1,271 @@
+.\" ++Copyright++ 1993
+.\" -
+.\" Copyright (c) 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\" 	This product includes software developed by the University of
+.\" 	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" -
+.\" Portions Copyright (c) 1993 by Digital Equipment Corporation.
+.\" 
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies, and that
+.\" the name of Digital Equipment Corporation not be used in advertising or
+.\" publicity pertaining to distribution of the document or software without
+.\" specific, written prior permission.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+.\" SOFTWARE.
+.\" -
+.\" --Copyright--
+.Dd December 15, 1994
+.Dt HOST 1
+.Os BSD 4
+.Sh NAME (名字)
+.Nm host 
+.Nd 使用域名服务器查询主机名字
+.Sh SYNOPSIS (总览)
+.Nm host 
+.Op Fl l
+.Op Fl v
+.Op Fl w
+.Op Fl r
+.Op Fl d
+.Op Fl t Ar querytype
+.Op Fl a 
+.Ar host 
+.Op Ar server 
+.Sh DESCRIPTION (描述)
+.Ic Host
+查询 Internet 主机 的 信息. 它 通过 一组 分布在 国家间的 互连服务器 获取
+这些 信息. 缺省情况下, host 只是 简单的 做 主机名字 和 Internet 地址 的 转换. 
+然而 通过
+.Dq Fl t 
+或
+.Dq Fl a 
+选项, 它 可以 用来 查找 由 域名服务器 维护的 某个主机 的 全部信息.
+.Pp
+参数 可以是 主机名称, 也可以是 数字地址. 此程序 首先 把它 当做 主机的 
+数字地址, 如果 尝试 失败, 再把它 当做 主机名称. 主机的 数字地址 由 句点隔开的
+四个 十进位制数 组成, 例如 128.6.4.194. 主机名称 由 句点隔开的 名字 组成, 
+例如 topaz.rutgers.edu. 除非 名字 以句点 结尾, 否则 本地域名 将 自动 添加在
+后面. 因此, Rutgers 的 用户 可以 输入
+.Pp
+.D1 Ic host topaz 
+.Pp
+它 实际上 查找  "topaz.rutgers.edu". 
+如果 尝试 失败, 就用 原来输入的 名字 再试一次 (这里就是 "topaz").
+邮件 和 其他 网络工具 用了 同样的 策略.
+添加在 名字 后面 的 后缀 来自 调用
+.Xr hostname 1
+的 结果, 使用了 第一个点 后面的 全部 数据.
+(另见 下面
+.Sx 定制查询主机名字 
+的 描述. )
+.Pp
+第一个参数 是 你 打算查询的 主机名称.
+如果 是 数字地址, 就 执行
+.Dq 反向查询 (inverse query)
+也就是说, 域名系统 查看 一系列 独立的 数据库, 把 数字地址 转换成 名字.
+.Pp
+第二个 参数 是 可选的. 它 允许你 指定查询 某个 特定的 服务器. 如果 没有 使用
+这个参数, 就用 缺省 服务器 (一般是本地机).
+.Pp
+如果 指定了 名字, 你 可以见到 三个 不同种类的 输出. 这里是 它们的 例子:
+.Pp
+.D1 Ic % host sun4
+.Dl sun4.rutgers.edu is a nickname for ATHOS.RUTGERS.EDU
+.Dl ATHOS.RUTGERS.EDU has address 128.6.5.46
+.Dl ATHOS.RUTGERS.EDU has address 128.6.4.4
+.Dl ATHOS.RUTGERS.EDU mail is handled by ARAMIS.RUTGERS.EDU
+.Pp
+用户 键入的命令 是
+.Dq Ic host sun4 .  
+第一行 表明
+.Dq Li sun4.rutgers.edu 
+实际上 是 别名. 正式名字 是
+.Dq Li ATHOS.RUTGERS.EDU .  
+接下来 两行 显示 地址. 如果 系统 有 多个 网络接口, host 就 分别 显示 每个
+接口 的 地址. 最后一行 表明
+.Li ATHOS.RUTGERS.EDU 
+不接收 属于它的 邮件, 邮件 由 
+.Li ARAMIS.RUTGERS.EDU 
+处理. 由于 某些系统 拥有 多个 处理邮件的 系统, 可能 会有 多行 这样的显示.
+从 技术角度 看, 我们 认为 每个 能够 接收邮件 的 系统 应该有 这样的项. 如果 
+系统 接收 它自己的 邮件, 应该 有一项 提及 该系统 自身; 例如:
+.Pp
+.D1 Li XXX mail is handled by XXX 
+.Pp
+然而, 很多 能够 接收 自己邮件 的 系统 不愿意 提及 这个事实. 如果 系统 有一项
+.Dq Li mail is handled by ,
+但是 没有 地址, 这 表明 它 不是 Internet 的 一部分, 而是 在 网络上 转发
+邮件 的 系统. Usenet, Bitnet 和 许多 其他网络 都有 类似项.
+.Sh 选项
+在 主机名字 前面 能够 使用 很多 选项. 大多数 选项 只对 维护 域名数据库 有意义.
+.Bl -tag -width Fl
+.It Fl w 
+这一项 导致
+.Ic host 
+永久 等待 应答. 正常情况下, 大约 一分钟后 产生 超时.
+.It Fl v
+以 "繁琐" 格式 输出, 它是 正式的 主域文件格式, 在 手册页
+.Xr named 8 
+中 有描述. 没有 这个选项 时, 基本术语 的 输出 仍然 遵循 这个 格式, 
+但是 试图 对 普通用户 显示的 更智能些. 如果 不使用
+.Dq Fl v ,
+所有的 "a", "mx", 和 "cname" 项目 显示成 相应的 "has address",  
+"mail is handled by" 和 "is a nickname for", 而且 不显示 TTL 和类型.
+.It Fl r
+查询时 关闭 递归. 这 意味着 名字服务器 只返回 它 自身 数据库 的 数据.
+不向 其他服务器 询问 更多 信息.
+.It Fl d
+打开 调试功能. 显示 网络应答细节.
+.It Fl t Ar querytype
+允许 指定
+.Ar querytype 
+来 查询 某个信息. 手册页
+.Xr named 8 
+中 定义了 这些 参数. 目前支持的 类型有:
+.Dq Cm a , 
+.Dq Cm ns , 
+.Dq Cm md , 
+.Dq Cm mf , 
+.Dq Cm cname ,
+.Dq Cm soa , 
+.Dq Cm mb , 
+.Dq Cm mg , 
+.Dq Cm mr , 
+.Dq Cm null , 
+.Dq Cm wks , 
+.Dq Cm ptr , 
+.Dq Cm hinfo , 
+.Dq Cm minfo , 
+.Dq Cm mx , 
+.Dq Cm uinfo ,
+.Dq Cm uid , 
+.Dq Cm gid , 
+.Dq Cm unspec .  
+另外, 通配符 (可以 写成
+.Dq Cm any 
+或
+.Dq Cm * 
+) 可以 指定 上面的 任意(全部) 类型. 类型 必须是 小写字符.
+注意 缺省 搜索顺序 首先是
+.Dq Cm a , 
+然后是
+.Dq Cm mx , 
+除非 打开了 -v 选项, 使 缺省值 只是
+.Dq Cm a .
+.Dq Fl t
+选项 在过滤
+.Ic host 
+返回的信息 时 非常有用. 更多的 内容 参见 下面
+.Dq Fl l
+选项 的 说明.
+.It Fl a 
+.Dq 全部 ;
+等同于
+.Dq Fl v Fl t Cm any .
+.It Fl l
+列出 全部域项; 例如:
+.Pp
+.D1 Ic host -l rutgers.edu
+.Pp
+将 列出  rutgers.edu 域 中 所有的 主机.
+.Dq Fl t
+选项 可以 按需 过滤 收到的信息. 缺省值 是 地址信息, 包括 PTR 和 NS
+记录. 
+.Pp
+.D1 Ic host -l -v -t any rutgers.edu
+.Pp
+命令 以 正式主域文件格式 下载 rutgers.edu 的 全部 区域(zone) 数据.
+(然而 由于 某些 复杂原因, SOA 记录 显示了 两次.)
+.Pp
+.Sy 注意: 
+.Dq Fl l 
+执行 全部的 区域 传输, 然后 过滤出 要求的 信息. 所以 万不得已
+才用 这个 命令.
+.Sh 定制查询主机名字
+一般说来, 如果 用户 给出的 名字 中 不含 任何 句点, host 就把 缺省域名
+添加在 它的末尾. 缺省域名 能够 定义 在
+.Pa /etc/resolv.conf 
+中, 但是 通常 从 本机名字 的 第一个 句点 后面 提取. 
+用户 可以 通过 环境变量
+.Ev LOCALDOMAIN 
+指定 不同的 缺省域名.
+另外, 用户 可以 自定义 主机名字 的 缩写. 缩写 存放在 某个文件 中, 
+一行 一项, 格式是 一个 缩写名字, 一个 空格, 然后是 完整的 主机名. 
+这个 名字文件 必须 用
+.Ev HOSTALIASES 
+环境变量 指出.
+.Sh 环境变量
+.Bl -tag -width "/etc/resolv.conf  " -compress
+.It Ev HOSTALIASES
+名字文件, 含有
+.Pq Ar 主机别名 , 主机全名
+对.
+.El
+.Sh 文件
+.Bl -tag -width "/etc/resolv.conf  " -compress
+.It Pa /etc/resolv.conf 
+另见
+.Xr resolver 5 .
+.Sh 另见
+.Xr named  8 , 
+.Xr resolver 5 .
+.Sh BUGS
+当你 输入的 名字 不属于 本地域 时, 将会 出现 不希望 的 现象. 
+请记住 除非 输入的名字 以 点 结尾, 否则 本地域名 总会 附加在 它 后面,
+失败后 才使用 原来的 名字.
+.Pp
+.Dq Fl l 
+选项 只 联系 指定域 中 的 第一个 名字服务器. 如果 这个 服务器 宕机,
+你 应该 手工 指定 一个 服务器. 例如, 要 获取 foo.edu 的清单, 可以 用
+.Pp
+.D1 Ic host -t ns foo.edu 
+.Pp
+获得 foo.edu 的 全部 名字服务器, 然后 用
+.Pp
+.D1 Ic host -l foo.edu xxx
+.Pp
+试验 每一个
+.Dq Ic xxx 
+名字服务器, 直到 碰上 能用的.
+.Sh "[中文版维护人]"
+徐明 <xuming at users.sourceforge.net>
+.Sh "[中文版最新更新]"
+2003/05/13
+.Sh "《中国Linux论坛man手册页翻译计划》"
+http://cmpp.linuxforum.net
diff --git a/src/man1/hostid.1 b/src/man1/hostid.1
new file mode 100644
index 0000000..ea0deb5
--- /dev/null
+++ b/src/man1/hostid.1
@@ -0,0 +1,114 @@
+
+.TH HOSTID "1" "1999年8月" "GNU sh-utils 2.0" FSF
+
+
+.SH NAME(名称)
+
+
+hostid \- 显示当前主机的数字化标识
+
+
+.SH SYNOPSIS(总览)
+
+
+.B hostid
+
+
+[\fI-v\fR]
+
+
+.SH DESCRIPTION(描述)
+
+
+.PP
+
+
+.\" Add any additional description here
+
+
+.PP
+
+
+显示当前主机的数字化标识(以十六进制的形式表示).
+
+
+.TP
+
+
+\fB\-\-help\fR
+
+
+显示帮助信息后退出
+
+
+.TP
+
+
+\fB\-\-version\fR
+
+
+输出版本信息后退出
+
+
+.SH "REPORTING BUGS"(报告BUGS)
+
+
+报告bugs,请发送到<bug-sh-utils at gnu.org>.
+
+
+.SH "SEE ALSO"(另见)
+
+
+完整的
+
+
+.B hostid
+
+
+文档是以Texinfo手册形式维护的.如果在你那儿安装好了
+
+
+.B info
+
+
+和
+
+
+.B hostid
+
+
+程序,那么命令
+
+
+.IP
+
+
+.B info hostid
+
+
+.PP
+
+
+会让你访问到整个手册.
+
+
+.SH COPYRIGHT(版权)
+
+
+Copyright \(co 1999 Free Software Foundation, Inc.
+
+
+.br
+
+
+This is free software; see the source for copying conditions.  There is NO
+
+
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/07/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/hostname.1 b/src/man1/hostname.1
new file mode 100644
index 0000000..dc31a22
--- /dev/null
+++ b/src/man1/hostname.1
@@ -0,0 +1,215 @@
+.TH HOSTNAME "1" "1996年1月28日" "net-tools(网络工具)" "Linux Programmer's Manual(Linux程序员手册)"
+
+.SH NAME(名称)
+hostname \- 显示或设置系统的主机名
+.br
+domainname \- 显示或设置系统的NIS/YP域名
+.br
+dnsdomainname \- 显示系统的DNS域名
+.br
+nisdomainname \- 显示或设置系统的NIS/YP域名
+.br
+ypdomainname \- 显示或设置系统的NIS/YP域名
+.br
+nodename \- 显示或设置系统的DECnet节点名
+
+.SH SYNOPSIS(总览)
+.B hostname
+.RB [ \-v ]
+.RB [ \-a ]
+.RB [ \-\-alias ]
+.RB [ \-d ]
+.RB [ \-\-domain ]
+.RB [ \-f ]
+.RB [ \-\-fqdn ]
+.RB [ \-i ]
+.RB [ \-\-ip-address ]
+.RB [ \-\-long ]
+.RB [ \-s ]
+.RB [ \-\-short ]
+.RB [ \-y ]
+.RB [ \-\-yp ]
+.RB [ \-\-nis ]
+.RB [ \-n ]
+.RB [ \-\-node ]
+
+.PP
+.B hostname
+.RB [ \-v ]
+.RB [ \-F\ filename ]
+.RB [ \-\-file\ filename ]
+.RB [ hostname ]
+
+.PP
+.B domainname
+.RB [ \-v ]
+.RB [ \-F\ filename ]
+.RB [ \-\-file\ filename ]
+.RB [ name ]
+
+.PP 
+.B nodename
+.RB [ \-v ]
+.RB [ \-F\ filename ]
+.RB [ \-\-file\ filename ]
+.RB [ name ]
+
+.PP
+.B hostname
+.RB [ \-v ]
+.RB [ \-h ]
+.RB [ \-\-help ]
+.RB [ \-V ]
+.RB [ \-\-version ]
+
+.PP
+.B dnsdomainname
+.RB [ \-v ]
+.br
+.B nisdomainname
+.RB [ \-v ]
+.br
+.B ypdomainname
+.RB [ \-v ]
+
+.SH DESCRIPTION(描述)
+.B Hostname
+是一个用来设置或显示当前主机,域或者系统的节点名的程序.许多联网程序使用这些名字来
+标识机器.NIS/YP同样也使用域名.
+
+.SS "GET NAME"(获取名字)
+如果不调用任何参数,程序即显示当前的名字:
+
+.LP
+.B hostname
+会打印系统的名字为通过
+.BR gethostname (2)
+函数返回的值.
+
+.LP
+.B "domainname,nisdomainname,ypdomainname"
+会打印系统的名字为通过
+.BR getdomainname (2)
+函数返回的值.这同时也被看作系统的YP/NIS域名.
+
+.LP
+.B nodename
+会打印系统的DECnet节点名为通过
+.BR getnodename (2)
+函数返回的值.
+
+.LP
+.B dnsdomainname
+会打印FQDN(完全资格域名)的域部分.系统的完整的FQDN可使用
+.BR "hostname \-\-fqdn"
+返回.
+
+.SS "SET NAME"(设置名字)
+如果带一个参数或者带
+.B \-\-file
+选项调用的话,命令即设置主机名,NIS/YP域名或者节点名.
+
+.LP
+注意,只有超级用户才可以修改这些名字.
+
+.LP
+不可能使用
+.B dnsdomainname
+命令(参看下面的
+.B "THE FQDN" )
+来设置FQDN或者DNS域名.
+
+.LP
+每次系统启动时,主机名通常在
+.I /etc/rc.d/rc.inet1
+或
+.I /etc/init.d/boot
+(一般通过读取文件的内容,其中包括了主机名,例如,
+.IR /etc/hostname
+)中设置.
+
+.SS THE FQDN
+你不能使用该命令修改FQDN(通过
+.BR "hostname \-\-fqdn"
+返回)
+或者DNS域名(通过
+.BR "dnsdomainname"
+返回).系统的FQDN是一个由
+.BR resolver (3)
+返回的主机名.
+
+.LP
+从技术上说:FQDN指的是使用
+.BR gethostbyname (2)
+以返回
+gethostname (2)
+所返回主机名的名字.
+DNS域名是第一个圆点之后的部分.
+.LP
+因此它依赖于你修改方式的配置(通常在
+.IR /etc/host.conf
+中).通常(如果hosts文件在DNS或NIS之前解析)你可以在
+.IR /etc/hosts
+中修改.
+
+
+.SH OPTIONS(选项)
+.TP
+.I "\-a,\-\-alias"
+显示主机的别名(如果使用了的话).
+.TP
+.I "\-d,\-\-domain"
+显示DNS域名.不要使用命令
+.B domainname
+来获得DNS域名,因为这会显示NIS域名而非DNS域名.可使用
+.B dnsdomainname
+替换之.
+.TP
+.I "\-F,\-\-file filename"
+从指定文件中读取主机名.注释(以一个`#'开头的行)可忽略.
+.TP
+.I "\-f,\-\-fqdn,\-\-long"
+显示FQDN(完全资格域名).一个FQDN包括一个短格式主机名和DNS域名.除非你正在使用bind或
+者NIS来作主机查询,否则你可以在\fI/etc/hosts\fR文件中修改FQDN和DNS域名(这是FQDN的一
+部分).
+.TP
+.I "\-h,\-\-help"
+打印用法信息并退出.
+.TP
+.I "\-i,\-\-ip-address"
+显示主机的IP地址(组).
+.TP
+.I "\-n,\-\-node"
+显示DECnet节点名.如果指定了参数(或者指定了
+.B \-\-file name
+),那么root也可以设置一个新的节点名.
+.TP
+.I "\-s,\-\-short"
+显示短格式主机名.这是一个去掉第一个圆点后面部分的主机名.
+.TP
+.I "\-V,\-\-version"
+在标准输出上打印版本信息并以成功的状态退出.
+.TP
+.I "\-v,\-\-verbose"
+详尽说明并告知所正在执行的.
+.TP
+.I "\-y,\-\-yp,\-\-nis"
+显示NIS域名.如果指定了参数(或者指定了
+.B \-\-file name
+),那么root也可以设置一个新的NIS域.
+.SH FILES(相关文件)
+.B /etc/hosts
+.SH AUTHOR(作者)
+Peter Tobias, <tobias at et-inf.fho-emden.de>
+.br
+ernd Eckenfels, <net-tools at lina.inka.de> (NIS and manpage).
+.br
+Steve Whitehouse, <SteveW at ACM.org> (DECnet support and manpage).
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2000/12/14
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/iconv.1 b/src/man1/iconv.1
new file mode 100644
index 0000000..2e857b8
--- /dev/null
+++ b/src/man1/iconv.1
@@ -0,0 +1,36 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
+.\"
+.TH ICONV 1  "February 20, 2001" "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+iconv \- 字符集转换
+
+.SH "总览 (SYNOPSIS)"
+iconv [\fB-f\fP \fIencoding\fP] [\fB-t\fP \fIencoding\fP] [\fIinputfile\fP ...]
+
+.SH "描述 (DESCRIPTION)"
+\fBiconv\fP 程序 把 文本 从 一种 编码 转换 为 另一种 编码.
+更准确一点, 他是 把 \fB-f\fP 指定的 编码 转换为 \fB-t\fP 指定的 编码.
+这两种 编码 默认 都是 当前 locale 的编码, 所有 \fIinputfile\fP 都依次
+进行转换. 如果没有指定 \fIinputfile\fP 则使用 标准输入. 转换后的 内容 会
+输出到 标准输出.
+.PP
+允许的 编码 与 具体系统 有关. 具体 实现 可以 查看 iconv_open(3) 手册页.
+
+.SH "参见 (SEE ALSO)"
+.BR iconv_open "(3), " locale (7)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/3/21
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/id.1 b/src/man1/id.1
new file mode 100644
index 0000000..9f890fc
--- /dev/null
+++ b/src/man1/id.1
@@ -0,0 +1,65 @@
+.TH ID "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+id \- 显示真实和有效的 UID 和 GID
+
+.SH "总览 (SYNOPSIS)"
+.B id
+[\fIOPTION\fR]... [\fIUSERNAME\fR]
+
+.SH "描述 (DESCRIPTION)"
+.PP
+显示 USERNAME 或者 当前 用户 的 信息.
+.TP
+\fB\-a\fR
+忽略, 同 其它 版本 兼容
+.TP
+\fB\-g\fR, \fB\-\-group\fR
+只 显示 组 ID
+.TP
+\fB\-G\fR, \fB\-\-groups\fR
+只 显示 附加组
+.TP
+\fB\-n\fR, \fB\-\-name\fR
+对于 \fB\-ugG\fR 显示 名字 而 不是 数值
+.TP
+\fB\-r\fR, \fB\-\-real\fR
+对于 \fB\-ugG\fR 显示 真实 ID 而 不是 有效 ID
+.TP
+\fB\-u\fR, \fB\-\-user\fR
+只 显示 用户 ID
+.TP
+\fB\-\-help\fR
+显示 帮助 并且 退出
+.TP
+\fB\-\-version\fR
+显示 版本 信息 并且 退出
+.PP
+如果 没有 OPTION, 显示 指定 指定 的 有用 信息.
+
+.SH "报告错误 (REPORTING BUGS)"
+把 错误 报告 给 <bug-sh-utils at gnu.org>.
+
+.SH "参见 (SEE ALSO)"
+.B id
+的 完整 的 文档 是 以 Texinfo 手册页 维护 的. 如果
+.B info
+和
+.B id
+程序 被 正确 的 安装 在 你的 机子 上, 用
+.IP
+.B info id
+.PP
+命令 查看 完整 的 手册页.
+
+.SH "版权 (COPYRIGHT)"
+版权所有 \(co 1999 自由软件基金会
+.br
+这一程序是自由软件; 拷贝条件见源文件.
+没有任何担保; 甚至没有适合特定目的的隐含的担保.
+
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/info.1 b/src/man1/info.1
new file mode 100644
index 0000000..514ae84
--- /dev/null
+++ b/src/man1/info.1
@@ -0,0 +1,78 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH INFO "1" "June 2003" "info 4.6" "User Commands"
+.SH NAME
+info \- 阅读 info 文档
+.SH "SYNOPSIS 总览"
+.B info
+[\fIOPTION\fR]... [\fIMENU-ITEM\fR...]
+.SH "DESCRIPTION 描述"
+阅读 info 格式的文档。
+.SH "OPTIONS 选项"
+.TP
+\fB\-\-apropos\fR=\fISTRING\fR
+在所有手册的索引中查找 STRING。
+.TP
+\fB\-d\fR, \fB\-\-directory\fR=\fIDIR\fR
+将 DIR 添加到 INFOPATH。
+.TP
+\fB\-\-dribble\fR=\fIFILENAME\fR
+记录用户在查看 FILENAME 时的击键情况。
+.TP
+\fB\-f\fR, \fB\-\-file\fR=\fIFILENAME\fR
+指定要阅读的 info 文件。
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+显示这份帮助,然后退出。
+.TP
+\fB\-\-index\-search\fR=\fISTRING\fR
+转到索引项 STRING 指向的节点。
+.TP
+\fB\-n\fR, \fB\-\-node\fR=\fINODENAME\fR
+指定第一个阅读的 info 文件中的节点。
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILENAME\fR
+将所选的节点输出到 FILENAME。
+.TP
+\fB\-R\fR, \fB\-\-raw\-escapes\fR
+不要从 man 手册页中移除 ANSI 控制序列。
+.TP
+\fB\-\-restore\fR=\fIFILENAME\fR
+从 FILENAME 中读取初始的击键。
+.TP
+\fB\-O\fR, \fB\-\-show\-options\fR, \fB\-\-usage\fR
+转到命令行选项节点。
+.TP
+\fB\-\-subnodes\fR
+递归地输出菜单项目。
+.TP
+\fB\-\-vi\-keys\fR
+使用 vi 和 less 中的按键关联。
+.TP
+\fB\-\-version\fR
+显示版本信息,然后退出。
+.PP
+如果存在并非选项的参数,那么其中的第一个将成为目录项的起始点;它被从 INFOPATH 的所有 “目录文件” 中搜索。如果它不存在,info 将合并所有的 “目录文件”,并且显示结果。任何剩余的参数都被视为相对于阅读的初始节点的目录项的名称。
+.SH "EXAMPLES 范例"
+.TP
+info
+显示顶层目录菜单
+.TP
+info emacs
+从 emacs 节点的顶层菜单开始
+.TP
+info emacs buffers
+从 emacs 手册中的 buffers 节点开始
+.TP
+info \fB\-\-show\-options\fR emacs
+从 emacs 的 “命令行选项” 节点开始
+.TP
+info \fB\-f\fR ./foo.info
+显示文件 ./foo.info,不搜索目录
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+Texinfo 主页:http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/src/man1/initdb.1 b/src/man1/initdb.1
new file mode 100644
index 0000000..3777a7c
--- /dev/null
+++ b/src/man1/initdb.1
@@ -0,0 +1,84 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "INITDB" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+initdb \- 创建一个新的 PostgreSQL数据库集群
+
+.SH SYNOPSIS
+.sp
+\fBinitdb\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR \fR\fR \fB--pgdata \fR\fR | \fR\fB-D \fR\fIdirectory\fR\fR\fR
+.SH "DESCRIPTION  描述"
+.PP
+\fBinitdb\fR 创建一个新的 PostgreSQL 数据库集群。 一个数据库集群是由单个服务器实例管理的数据库集合。
+.PP
+ 创建数据库系统包括创建数据库数据的宿主目录, 生成共享的系统表(不属于任何特定数据库的表)和创建 template1  数据库。当你以后再创建一个新数据库时, template1 数据库里所有内容都会拷贝过来。 它包括填充了象内建类型这样的系统表。
+.PP
+\fBinitdb\fR 初始化该数据库集群的缺省区域和字符集编码。 有些区域范畴对该集群而言是全生命期固定的,因此在运行 initdb 的时候选取正确的是非常重要的。 其它区域范畴可以在服务器启动之后的时间里改变。 initdb 将把那些区域设置写到 postgresql.conf 配置文件,这样它们就是缺省的, 但是我们可以通过编辑那些文件来修改它们。 要设置 initdb 使用的区域,参阅 --locale 选项的描述。字符集编码可以在数据库创建的时候独立设置。 initdb 决定 template1 数据库的编码,而该编码将成为所有其它数据库的缺省。 要修改缺省编码,我们可以使用 \fB--encoding\fR 选项。
+.PP
+\fBinitdb\fR 必须以运行数据库服务器进程的用户身份运行它。 因为服务器需要能够访问 initdb  创建的文件和目录。 因为服务器不能以 root 身份运行,所以你也不能以 root 身份运行 initdb。(实际上它拒绝以 root 身份运行。)
+.PP
+ 尽管initdb会尝试创建相应的数据目录, 但经常会发生它没有权限做这些事情的情况。因为所需要的目录的父目录通常是 root 所有的目录。 要为此安排做一个设置,用 root 创建一个空数据目录, 然后用 chown 把该目录的所有权交给数据库用户帐号, 然后 su 成数据库用户,最后以数据库用户身份运行 initdb。
+.SH "OPTIONS 选项"
+.PP
+.TP
+\fB-D \fIdirectory\fB\fR
+.TP
+\fB--pgdata=\fIdirectory\fB\fR
+ 这个选项声明数据库集群应该存放在哪个目录。 这是initdb需要的唯一信息,但是你可以通过设置 PGDATA 环境变量来避免键入, 这样做可能方便一些,因为稍后数据库服务器(postmaster)可以通过同一个变量找到数据库目录。
+.TP
+\fB-E \fIencoding\fB\fR
+.TP
+\fB--encoding=\fIencoding\fB\fR
+ 选择模板数据库的编码方式。这将是你以后创建的数据库的缺省编码方式, 除非你创建数据库时覆盖了它。 缺省是 SQL_ASCII。
+.TP
+\fB--locale=\fIlocale\fB\fR
+ 为数据库集群设置缺省的区域。如果没有声明这个选项,那么区域 是从 initdb 运行的环境中继承过来的。
+.TP
+\fB--lc-collate=\fIlocale\fB\fR
+.TP
+\fB--lc-ctype=\fIlocale\fB\fR
+.TP
+\fB--lc-messages=\fIlocale\fB\fR
+.TP
+\fB--lc-monetary=\fIlocale\fB\fR
+.TP
+\fB--lc-numeric=\fIlocale\fB\fR
+.TP
+\fB--lc-time=\fIlocale\fB\fR
+ 类似 --locale,但是只设置特殊范畴的区域。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username=\fIusername\fB\fR
+ 选择数据库超级用户的用户名。 缺省是运行 initdb 的用户的有效用户。 超级用户的名字是什么并不重要, 但是我们可以选择习惯的名字 postgres,即使操作系统的用户名字不一样也无所谓。
+.TP
+\fB-W\fR
+.TP
+\fB--pwprompt\fR
+ 令 initdb 提示输入数据库超级用户的口令。 如果你不准备使用口令认证,这个东西并不重要。 否则你将不能使用口令认证直到你设置了口令。
+.PP
+.PP
+ 其他不常用的参数还有:
+.TP
+\fB-d\fR
+.TP
+\fB--debug\fR
+ 从初始化后端打印调试输出以及一些其它的一些普通用户不太感兴趣的信息。 初始化后端是 initdb 用于创建系统表的程序。 这个选项生成大量非常烦人的输出。
+.TP
+\fB-L \fIdirectory\fB\fR
+ 告诉 initdb  到哪里找初始化数据库所需要的输入文件。 通常是不必要的。如果需要你明确声明的话,程序会提示你输入。
+.TP
+\fB-n\fR
+.TP
+\fB--noclean\fR
+ 缺省时,当initdb  发现一些错误妨碍它完成创建数据库集群的工作时, 它将在检测到不能结束工作之前将其创建的所有文件删除。 这个选项禁止任何清理动作,因而对调试很有用。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATA\fR
+ 声明数据库集群存储的目录;可以用 \fB-D\fR 选项覆盖。 
+.SH "SEE ALSO 参见"
+\fBpostgres\fR(1), \fBpostmaster\fR(1)
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/initex.1 b/src/man1/initex.1
new file mode 100644
index 0000000..b6cf832
--- /dev/null
+++ b/src/man1/initex.1
@@ -0,0 +1 @@
+.so man1/tex.1
diff --git a/src/man1/initlocation.1 b/src/man1/initlocation.1
new file mode 100644
index 0000000..578569d
--- /dev/null
+++ b/src/man1/initlocation.1
@@ -0,0 +1,40 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "INITLOCATION" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+initlocation \- 创建一个从属的 PostgreSQL数据库存储区
+
+.SH SYNOPSIS
+.sp
+\fBinitlocation\fR \fB\fIdirectory\fB\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBinitlocation\fR 
+创建一个新的PostgreSQL从属数据库存储区。参阅 CREATE DATABASE [\fBcreate_database\fR(7)]  里关于如何管理和使用从属存储区的讨论。 如果参数不包含一个斜杠而且也不是一个有效的路径, 它会被认为是一个环境变量而引用。参考下面的例子。
+.PP
+ 为使用这条命令,你必须以数据库超级用户登录(例如,使用 su)
+.SH "EXAMPLES 例子"
+.PP
+ 用环境变量在一个可选位置创建一个数据库:
+.sp
+.nf
+$ \fBexport PGDATA2=/opt/postgres/data\fR
+.sp
+.fi
+ 启动并停止postmaster这样它就能看到PGDATA2环境变量。 系统必须配置为postmaster每次启动都能看到PGDATA2。 最后∶
+.sp
+.nf
+$ \fBinitlocation PGDATA2\fR
+$ \fBcreatedb -D PGDATA2 testdb\fR
+.sp
+.fi
+.PP
+ 或者,如果允许你使用绝对路径,你可以这样:
+.sp
+.nf
+$ \fBinitlocation /opt/postgres/data\fR
+$ \fBcreatedb -D /opt/postgres/data/testdb testdb\fR
+.sp
+.fi
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/install-info.1 b/src/man1/install-info.1
new file mode 100644
index 0000000..5969b29
--- /dev/null
+++ b/src/man1/install-info.1
@@ -0,0 +1,62 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH INSTALL-INFO "1" "June 2003" "install-info 4.6" "User Commands"
+.SH NAME
+install-info \- 更新 info/dir 项
+.SH "SYNOPSIS 总览"
+.B install-info
+[\fIOPTION\fR]... [\fIINFO-FILE \fR[\fIDIR-FILE\fR]]
+.SH "DESCRIPTION 描述"
+从 Info 目录文件 DIR-FILE 中的文件 INFO-FILE 中安装或删除 dir 目录项。
+.SH "OPTIONS 选项"
+.TP
+\fB\-\-delete\fR
+删除 DIR-FILE 中的 INFO-FILE 里已有的项;不插入任何新项。
+.TP
+\fB\-\-dir\-file\fR=\fINAME\fR
+指定 Info 目录文件的文件名。这等价于使用 DIR-FILE 参数。
+.TP
+\fB\-\-entry\fR=\fITEXT\fR
+插入 TEXT,作为一个 Info 目录项。TEXT 的形式应当是一个 Info 目录项的一行,加上 0 个或多个以空白开始的行。如果指定了超过一项,它们都将被添加。如果不指定任何项,就根据它们的 Info 文件中的信息来判断。
+.TP
+\fB\-\-help\fR
+显示此帮助,然后退出。
+.TP
+\fB\-\-info\-file\fR=\fIFILE\fR
+指定要安装到目录中的 Info 文件。这等价于使用 INFO-FILE 参数。
+.TP
+\fB\-\-info\-dir\fR=\fIDIR\fR
+与 \fB\-\-dir\-file\fR=\fIDIR\fR/dir 相同。
+.TP
+\fB\-\-item\fR=\fITEXT\fR
+与 \fB\-\-entry\fR TEXT 相同。一个 Info 目录项实际是一个菜单项。
+.TP
+\fB\-\-quiet\fR
+阻止发出警告。
+.TP
+\fB\-\-remove\fR
+与 \fB\-\-delete\fR 相同。
+.TP
+\fB\-\-section\fR=\fISEC\fR
+将文件中所有项添加到目录的 SEC 段。如果指定了超过一个段,所有项都被添加到每一个段当中。如果不指定任何段,就根据它们的 Info 文件中的信息来判断。
+.TP
+\fB\-\-version\fR
+显示版本信息,然后退出。
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+Texinfo 主页: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO 参见"
+.B install-info
+的全部文档以 Texinfo 手册页形式保存。如果你的主机上正确安装了
+.B info
+和
+.B install-info
+程序,命令
+.IP
+.B info install-info
+.PP
+将使你可以读取完整的手册。
diff --git a/src/man1/install.1 b/src/man1/install.1
new file mode 100644
index 0000000..9bdd125
--- /dev/null
+++ b/src/man1/install.1
@@ -0,0 +1,187 @@
+.\" 版权所有 Andries Brouwer, Ragnar Hojland Espinosa and A.Wik,1998.
+.\" 中文版版权所有 riser,BitBIRD www.linuxforum.net 2000
+.\" 本文档可在遵照LDP GENERAL PUBLIC LICENSE,Version 1, September 1998
+.\" 中描述的条件下进行复制,且该许可可同本文件一起分发。
+.\"
+.TH INSTALL 1 "1998年11月" "GNU fileutils 4.0"
+.SH NAME[名称]
+install \- 复制文件并设置属性
+.SH SYNOPSIS[总览]
+.B install
+.BI [ options ]
+.B [\-s] [\-\-strip]
+.I source dest
+.br
+.B install
+.BI [ options ]
+.B [\-s] [\-\-strip]
+.I source... directory
+.br
+.B install
+.BI [ options ]
+.B [\-d,\-\-directory]
+.I directory...
+.sp
+选项(最短格式):
+.br
+.B [\-b]
+.B [\-c]
+.B [\-D]
+.BI "[\-g " group ]
+.BI "[\-m " mode ]
+.BI "[\-o " owner ]
+.BI "[\-S " SUFFIX ]
+.B [\-V {numbered,existing,simple}]
+.B [\-\-help] [\-\-version] [\-\-]
+.SH DESCRIPTION(描述)
+.B install
+复制文件并设置它们的权限模式,如果可能,还将设置其所有者和组别.
+.PP
+在第一种调用格式中,
+.I source
+文件被复制为
+.I dest
+目标文件. 在第二种格式中,每个
+.I source
+文件都被复制到目的端
+.IR directory
+中. 在最后一种格式中,将创建每个
+.I directory
+(以及任何缺失的父目录).
+.PP
+.B install
+类似于
+.BR cp,
+不过它允许你控制目的文件的属性.
+它的典型应用是 Makefile 文件中复制程序到它们的目标目录中.
+它拒绝复制文件为其自身.
+.PP
+.SH OPTIONS(选项)
+.TP
+.B "\-c"
+可忽略;这是为了与老Unix版本的
+.BR install
+相兼容.
+.TP
+.B "\-d, \-\-directory"
+创建每个给定的目录以及任何缺失的父目录,
+按照命令行要求来设置所有者,组别和模式,或者设为默认值.
+它也授予任何它创建的父目录以这些属性. (这有别于SunOS 4.x的
+.BR install ,
+该
+.BR install
+授予其创建目录以默认的属性.)
+.TP
+.B "\-D"
+创建
+.I dest
+的所有前面部分,只有最后一个除外,然后复制
+.I source
+到
+.IR dest .
+该选项在如上总览中列出的第一种格式中有用.
+(file\%utils-4.0中的新功能.)
+.TP
+.BI "\-g " "group" ", \-\-group=" "group"
+设置安装的文件或目录的组所有权为
+.IR group
+这可能是组名,或者是数字化组标识.
+.TP
+.BI "\-m " "mode" ", \-\-mode=" "mode"
+设置安装的文件或目录的权限为
+.IR mode ,
+这可以为八进制数,也可以为
+.BR chmod
+中的符号化的模式,且都以0开头.默认的模式是0755 \- 
+对所有者可读,可写并且可执行,对于组用户和其它用户可读和可执行.
+.TP
+.BI "\-o " "owner" ", \-\-owner=" "owner"
+如果
+.B install
+有合适的特权(运行为root),则设置安装的文件或目录的所有权为
+.IR owner .
+默认为'root'.
+.I owner
+可以为用户名,也可以为数字化用户标识.
+.TP
+.B "\-s, \-\-strip"
+从安装的二进制可执行程序剥离符号表.
+.SH "GNU BACKUP OPTIONS(GNU备份选项)"
+GNU版本的程序如
+.BR cp ,
+.BR mv ,
+.BR ln ,
+.B install
+和
+.B patch
+会按需求对将要被覆盖,修改或者毁坏的文件进行备份.
+所需要的备份文件由\-b选项指定.
+它们怎样命名则由\-V选项确定.
+在备份文件名通过后缀扩展方式给定的情况下,该后缀由-S选项确定.
+.TP
+.B "\-b, \-\-backup"
+备份那些将要被覆盖或者移除的文件.
+.TP
+.BI "\-S " SUFFIX ", \-\-suffix=" SUFFIX
+添加
+.I SUFFIX
+到每个生成的备份文件后.
+如果该选项未被确定,那么将使用
+.B SIMPLE_BACKUP_SUFFIX
+环境变量.又如果
+.B SIMPLE_BACKUP_SUFFIX
+未设置,那么默认为'~'.
+.TP
+.BI "\-V " METHOD ", \-\-version\-control=" METHOD
+.RS
+确定备份文件怎样命名.
+.I METHOD
+参数可以为'numbered'(或者't'),'existing'(或者'nil'),或'never'(或者'simple').
+如果未指定该选项,将使用
+.B VERSION_CONTROL
+环境变量.又如果
+.B VERSION_CONTROL
+未设置,那么默认的备份类型为'existing'.
+.PP
+该选项相当于Emacs变量'version-control'.有效的
+.IR METHOD s
+有(只接受唯一的缩写方式):
+.TP
+.BR t ", " numbered
+总作数码标识的备份.
+.TP
+.BR nil ", " existing
+对已有文件作数码标识的备份,而对其它文件作简单备份.
+.TP
+.BR never ", " simple
+总作简单备份.
+.RE
+.SH "GNU STANDARD OPTIONS(GNU标准选项)"
+.TP
+.B "\-\-help"
+在标准输出上打印一条用法信息,并以成功状态退出.
+.TP
+.B "\-\-version"
+在标准输出上打印版本信息,然后以成功状态退出.
+.TP
+.B "\-\-"
+终止选项列表.
+.SH ENVIRONMENT(环境变量)
+变量LANG, LC_ALL, LC_CTYPE和LC_MESSAGES取其常用义.对于GNU的版本,如上所述,变量
+SIMPLE_BACKUP_SUFFIX和VERSION_CONTROL控制着备份文件的命名.
+.SH "CONFORMING TO(遵循规则)"
+BSD 4.2 (它带有\-c, \-m, \-o, \-g\和\-s选项).
+.SH NOTES(备注)
+本页介绍了包含在fileutils-4.0包中的
+.B install ;
+其他版本可能会有细微差别.
+请把您的修正和增补建议发邮件到aeb at cwi.nl.
+报告程序中的bug请发到
+fileutils-bugs at gnu.ai.mit.edu.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/intro.1 b/src/man1/intro.1
new file mode 100644
index 0000000..af77a18
--- /dev/null
+++ b/src/man1/intro.1
@@ -0,0 +1,31 @@
+.\"
+.\"版权所有:Michael Haardt (michael at moria.de), Fri Apr 2 11:32:09 MET DST 1993
+.\"中文版版权所有 Alian Yao, www.linuxforum.net 2000
+.\"
+.\"这是免费文献,可以在Free Software Foundation颁布的GNU General Public License的V2
+.\"或更后版本的许可下,重新整理、添加或者修改它们。
+.\"
+.\" GNU General Public License目标代码和可执行文件的参考文献,以排字系统任何文档输
+.\"出形式来解释,包括临时(intermediate)和打印输出。
+.\"
+.\"发布这个文献,是希望不经授权(甚至是MERCHANTABILITY or FITNESS FOR A 
+.\"PARTICULAR PURPOSE的公开授权),就可使用,详见GNU General Public License
+.\"
+.\"你应该有一份这个手册的GNU General Public License;如果没有,请致函Free Software 
+.\"Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+.\" 
+.\"修改时间:Sat Jul 24 16:53:03 1993 by Rik Faith (faith at cs.unc.edu)
+.TH INTRO 1 "24 July 1993" "Linux" "Linux Programmer's Manual"
+.SH NAME
+intro \-介绍用户命令
+.SH 描述
+这章描述用户命令
+.SH 作者
+见man页首的作者和版权,不同的页,作者是不同的。
+
+.SH "[中文版维护人]"
+.B Alan Yao <Alan_Yao at 163.net>
+.SH "[中文版最新更新]"
+.BR 2000/10/10
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ipcclean.1 b/src/man1/ipcclean.1
new file mode 100644
index 0000000..e2bb26a
--- /dev/null
+++ b/src/man1/ipcclean.1
@@ -0,0 +1,21 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "IPCCLEAN" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+ipcclean \- 从退出的PostgreSQL服务器中删除共享内存和信号灯
+
+.SH SYNOPSIS
+.sp
+\fBipcclean\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBipcclean\fR 删除当前用户拥有的所有共享内存段和信号灯集。 它的目地是在 PostgreSQL  服务器 (\fBpostmaster\fR(1))崩溃之后进行清理。 请注意的是立即重起服务器也会清理共享内存和信号灯,所以这条命令实际上用处不大。
+.PP
+ 应该只有数据库管理员可以运行这条命令,因为如果在多用户的环境中执行, 它会导致怪异的行为(也就是说,崩溃)。 如果在服务器运行时执行这条命令, 服务器分配的共享内存和信号灯将被删除。 这通常会导致该服务器启动的后端服务器的普遍失败。
+.SH "NOTES 注意"
+.PP
+ 这个脚本是个“hack”,但是从写成它的这些年来, 没有人提出等效的可移植的解决方法。因为 \fBpostmaster\fR 现在可以清理自己,所以以后很可能不会继续改进 ipcclean。
+.PP
+ 这个脚本对 \fBipcs\fR 工具的输出做了一些假设, 而这些假设可能在不同的操作系统间是不同的。因此,它可能不能在你的系统上运行。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/jobs.1 b/src/man1/jobs.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/jobs.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/kbd_mode.1 b/src/man1/kbd_mode.1
new file mode 100644
index 0000000..f11a59e
--- /dev/null
+++ b/src/man1/kbd_mode.1
@@ -0,0 +1,63 @@
+.TH KBD_MODE 1 "28 Oct 1997" "Console tools" "Linux User's Manual"
+.SH NAME
+kbd_mode \- 显示或者设置键盘模式
+.SH "总览 (SYNOPSIS)"
+.BI "kbd_mode [ " -auks " ]"
+.IX "kbd_mode 命令" "" "\fLkbd_mode\fR 命令"  
+.SH "描述 (DESCRIPTION)"
+.PP
+如果 没有 参数
+.B kbd_mode
+会 显示 当前 键盘 的 模式, 如果 有 参数, 它会把 键盘 设置成 相应的 模式。
+.RS
+.IR \-s :
+键盘 扫描码 模式 (原始),
+.PP
+.IR \-k :
+键值 (keycode) 模式 (半原始),
+.PP
+.IR \-a :
+ASCII 模式 (XLATE),
+.PP
+.IR \-u :
+UTF-8 模式 (UNICODE)。
+.RE
+
+.I XLATE
+模式 是 传统 模式, 所用的 代码 可以 是 任何
+.B 8\-bit (8位)
+的 字符集. 一般 这个 字符集 同 后面 用到 的 字符集 是 匹配 的, 在 它们 被
+传给 屏幕 后, 它们 会 根据
+.B consolechars
+.IR -m
+选择的 字符集 在 内部 转换 为 Unicode, 
+
+在
+.I UNICODE
+模式, 键盘 会 产生
+.B 16位
+的 字符, 这些 字符 会 以1, 2 或者 3 字节 的 形式 (UTF\-8 编码) 传给 内核。
+.B UTF\-8
+在这 后两种 模式中 要 用到
+.BR loadkeys (1)
+定义的 键盘 映射 表。
+.B 警告:
+如果 不是 把 键盘 模式 改为 ASCII 或者 Unicode, 很可能 会使 键盘 不可用。
+这个 命令 也 可以 在 有些 程序 使你的 键盘 处于 错误 状态时 用来 把 键盘 改回
+.I XLATE
+或者
+.I UNICODE
+模式 (比如 通过 远程 登录)。 在 有些 过时的 版本的 程序 中
+.I \-u
+和
+.IR \-s
+是 一样的。
+.SH "参见 (SEE ALSO)"
+.BR loadkeys (1),
+.BR consolechars (8).
+.SH "[中文版维护人]"
+.B 唐友 <tony_ty at 263.net>
+.SH "[中文版最新更新]"
+.BR 2001/9/13
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/kill.1 b/src/man1/kill.1
new file mode 100644
index 0000000..f9b8013
--- /dev/null
+++ b/src/man1/kill.1
@@ -0,0 +1,76 @@
+.\"  版权所有 1992 Rickard E. Faith (faith at cs.unc.edu)
+.\" 中文版版权所有 riser,BitBIRD www.linuxforum.net 2000
+.\"  可以在GNU通用出版许可下发布
+.TH KILL 1  1994 年 10 月 14 日   Linux 工具   Linux 程序员手册
+.SH NAME (名称)
+kill \- 终止进程
+.SH SYNOPSIS(总览)
+.BR kill [ \-s signal | \-p ][ -a ]pid ... 
+.br
+.B  kill -l [ signal ] 
+.SH DESCRIPTION (描述)
+.B kill
+给指定进程发送指定信号. 如果没有指定信号, 则发送 TERM 信号.
+TERM 信号会杀死不能俘获该信号的进程.
+对于其他进程, 可能需要使用 KILL (9) 信号, 因为该信号不能够被俘获.
+
+大多数现代的 shell 有一个内嵌的 kill 函数.
+.SH OPTIONS (选项)
+.TP
+.BR  "pid ..."
+给
+.B kill
+指定一个该发信号的进程列表. 每个
+.I pid
+可为下面四种之一.
+.I  "进程名"
+在这种情况下,发信号给所命名的进程.
+.I n
+这里的
+.I n
+大于 0. 将发信号给 pid 为
+.I n
+的进程.
+.I -1
+在这种情况下, 只要发信号的用户能够控制那些进行,
+将发信号给所有从 MAX_INT 到 2 的进程.
+.I -n
+这里的
+.I n
+大于 1, 在这种情况下, 发信号给属于进程组
+.I n
+的进程. 如果给定一个负的参数, 那么信号
+.I 必须
+首先声明, 否则它会被当作信号发送出去.
+.TP
+.BR \-s
+指定发送的信号.
+信号可以以信号名或数字的方式给定.
+.TP
+.BR \-p
+指定
+.B kill
+只打印命名进程的进程标识
+.I (pid) ,
+而不应发送给它信号.
+.TP
+.BR \-l
+打印信号名的列表.这可以在
+.I /usr/include/linux/signal.h
+中找到.
+.SH  SEE ALSO (又见)
+.BR bash (1),
+.BR tcsh (1),
+.BR kill (2),
+.BR sigvec (2)
+.SH AUTHOR (作者)
+引自 BSD 4.4. 翻译进程名为进程标识的功能由
+Salvatore Valente <svalente at mit.edu>
+加入.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/killall.1 b/src/man1/killall.1
new file mode 100644
index 0000000..9bf3344
--- /dev/null
+++ b/src/man1/killall.1
@@ -0,0 +1,90 @@
+.TH KILLALL 1  1999年9月7日   Linux   User Commands(用户命令) 
+.SH NAME (名称)
+killall \- 以名字方式来杀死进程
+.SH SYNOPSIS (总览)
+.ad l
+.B killall
+.RB [ \-egiqvw ]
+.RB [ \-\fIsignal\fB ]
+.I name ...
+.br
+.B killall
+.RB \-l
+.br
+.B killall
+.RB \-V
+.ad b
+.SH DESCRIPTION (描述)
+.B killall
+发送一条信号给所有运行任意指定命令的进程.
+如果没有指定信号名, 则发送 SIGTERM.
+.PP
+信号可以以名字 (如 \fB\-HUP\fP ) 或者数字 (如 \fB\-1\fP ) 的方式指定.
+信号 0 (检查进程是否存在)只能以数字方式指定.
+.PP
+如果命令名包括斜杠 (\fB/\fP), 那么执行该特定文件的进程将被杀掉,
+这与进程名无关.
+.PP
+如果对于所列命令无进程可杀,
+那么 \fBkillall\fP 会返回非零值.
+如果对于每条命令至少杀死了一个进程,
+\fBkillall\fP 返回 0.
+.PP
+\fBkillall\fP 进程决不会杀死自己
+(但是可以杀死其它 \fBkillall\fP 进程).
+.SH OPTIONS (选项)
+.IP \fB\-e\fP
+对于很长的名字, 要求准确匹配.
+如果一个命令名长于 15 个字符,
+则可能不能用整个名字 (溢出了).
+在这种情况下,
+\fBkillall\fP 会杀死所有匹配名字前 15 个字符的所有进程.
+有了
+\fB\-e\fP 选项,这样的记录将忽略.
+如果同时指定了 \fB\-v\fP 选项,
+\fBkillall\fP 会针对每个忽略的记录打印一条消息.
+.IP \fB\-g\fP
+杀死属于该进程组的进程.
+kill 信号给每个组只发送一次, 即使同一进程组中包含多个进程.
+.IP \fB\-i\fP
+交互方式,在杀死进程之前征求确认信息.
+.IP \fB\-l\fP
+列出所有已知的信号名.
+.IP \fB\-q\fP
+如果没有进程杀死, 不会提出抱怨.
+.IP \fB\-v\fP
+报告信号是否成功发送.
+.IP \fB\-V\fP
+显示版本信息.
+.IP \fB\-w\fP
+等待所有杀的进程死去.
+\fBkillall\fP 会每秒检查一次是否任何被杀的进程仍然存在,
+仅当都死光后才返回.
+注意: 如果信号被忽略或没有起作用,
+或者进程停留在僵尸状态, \fBkillall\fP 可能会永久等待.
+.SH FILES(相关文件)
+.nf
+/proc   proc文件系统的存在位置
+.fi
+.SH  "KNOWN BUGS (已知 BUGS)"
+以文件方式杀死只对那些在执行时一直打开的可执行文件起作用,
+也即, 混杂的可执行文件不能够通过这种方式杀死.
+.PP
+要警告的是输入 \fBkillall\fP \fIname\fP
+可能不会在非 Linux 系统上产生预期的效果,
+特别是特权用户执行时要小心.
+.PP
+在两次扫描的间隙, 如果进程消失了而被代之以一个有同样 PID 的新进程,
+\fBkillall \-w\fP 侦测不到.
+.SH AUTHOR (作者)
+Werner Almesberger <Werner.Almesberger at epfl.ch>
+.SH  SEE ALSO (又见)
+kill(1), fuser(1), pidof(1), ps(1), kill(2)
+.\ {{{}}}
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/last.1 b/src/man1/last.1
new file mode 100644
index 0000000..d62a1f7
--- /dev/null
+++ b/src/man1/last.1
@@ -0,0 +1,78 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH LAST,LASTB 1 "Jul 29, 1999" "" "Linux 系统管理员手册"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+last, lastb \- 显示最近登录的用户列表
+.\"}}}
+.\"{{{  Synopsis
+.SH 总览
+.B last
+.RB [ \-R ]
+.RB [ \-\fInum\fP ]
+.RB "[ \-\fBn\fP \fInum\fP ]"
+.RB [ \-adiox ]
+.RB "[ \-\fBf\fP \fIfile\fP ]"
+.RI [ name... ]
+.RI [ tty... ]
+.br
+.B lastb
+.RB [ \-R ]
+.RB [ \-\fInum\fP ]
+.RB "[ \-\fBn\fP \fInum\fP ]"
+.RB "[ \-\fBf\fP \fIfile\fP ]"
+.RB [ \-adiox ]
+.RI [ name... ]
+.RI [ tty... ]
+.\"}}}
+.\"{{{  Description
+.SH 描述
+.B Last
+向后检索 \fB/var/log/wtmp\fP 文件(也可以用 \fB\-f\fP 选项指定被检索的文件),并显示自这个文件创建以来所有登录(退出)系统的用户列表。在指定了用户名和终端名的情况下,\fBlast\fP 只显示符合这些参数的记录。终端的名字可以简写,因此 \fBlast 0\fP 等同于 \fBlast tty0\fP.  
+.PP
+当 \fBlast\fP 捕捉到了\s-2SIGINT\s0 信号 (产生于中断键,通常是 control-C)或 \s-2SIGQUIT\s0 信号(产生于退出键,通常是 control-\e)时, \fBlast\fP 会显示它对文件已经检索了多少;在 \s-2SIGINT\s0 信号的情况下 \fBlast\fP 将终止运行。
+.PP
+每次系统重新启动时,虚用户 \fBreboot\fP 都会被记录到日志中。所以\fBlast reboot\fP 会列出自日志文件创建以来的所有重新启动的日志记录。.PP
+\fBLastb\fP 缺省上列出 \fB/var/log/btmp\fP 文件中的日志记录,这个文件包含有所有不良的登录企图。除此之外,等同于 \fBlast\fP。
+.\"}}}
+.\"{{{  Options
+.SH 选项
+.IP 
+\fB\-\fP\fInum\fP指定 \fBlast\fP 要显示多少行。
+.IP
+ "\fB\-n\fP \fInum\fP"等同 \fB\-\fP\fInum\fP.
+.IP
+\fB\-R\fP不显示主机名列。
+.IP 
+\fB\-a\fP在最后一列显示主机名. 和下一个选项合用时很有用
+.IP 
+\fB\-d\fP对于非本地的登录,Linux 不仅保存远程主机名而且保存IP地址(IP number)。这个选项可以将IP地址(IP number)转换为主机名。
+.IP 
+\fB\-i\fP这个选项类似于显示远程主机 IP 地址(IP number)的 \fB-d\fP 选项,只不过它用数字和点符号显示IP数
+.IP
+\fB\-o\fP读取一个旧格式的 wtmp 文件 (用linux-libc5应用程序写入的).
+.IP 
+\fB\-x\fP显示系统关机记录和运行级别改变的日志。
+.\"}}}
+.SH 注意
+\fIwtmp\fP 和 \fIbtmp\fP 等文件也许找不到。只有这些文件存在时,系统才记录日志信息。这是一个本地配置的问题。 要想这些文件起作用,你可以用一条简单的命令  \fBtouch\fP(1) 创建它们(如, \fItouch /var/log/wtmp\fP).
+.\"{{{  Files
+.SH 相关文件
+/var/log/wtmp.br/var/log/btmp
+.\"}}}
+.\"{{{  Author
+.SH 作者
+Miquel van Smoorenburg, miquels at cistron.nl.\
+"}}}
+.\"{{{  See also
+.SH "另见"
+.BR shutdown (8),.BR login (1),.BR init (8)
+.\"}}}
+
+.SH "[中文版维护人]"
+.B Mirnshi <Mirnshi at 263.net>
+.SH "[中文版最新更新]"
+.B 2001/07/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ld.1 b/src/man1/ld.1
new file mode 100644
index 0000000..0aa2207
--- /dev/null
+++ b/src/man1/ld.1
@@ -0,0 +1,989 @@
+.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation
+.\" See section COPYING for conditions for redistribution
+.TH ld 1 "17 August 1992" "cygnus support" "GNU Development Tools"
+.de BP
+.sp
+.ti \-.2i
+\(**
+..
+
+.SH NAME
+ld \- GNU linker (连接器)
+
+.SH "总览 (SYNOPSIS)"
+.hy 0
+.na
+.TP
+.B ld 
+.RB "[\|" \-o "
+.I output\c
+\&\|] \c
+.I objfile\c
+\&.\|.\|.
+.br
+.RB "[\|" \-A\c
+.I architecture\c
+\&\|] 
+.RB "[\|" "\-b\ "\c
+.I input-format\c
+\&\|] 
+.RB "[\|" \-Bstatic "\|]"  
+.RB "[\|" \-Bdynamic "\|]"  
+.RB "[\|" \-Bsymbolic "\|]"  
+.RB "[\|" "\-c\ "\c
+.I commandfile\c
+\&\|] 
+.RB "[\|" \-\-cref "\|]"
+.RB "[\|" \-d | \-dc | \-dp\c
+\|]
+.br
+.RB "[\|" "\-defsym\ "\c
+.I symbol\c
+\& = \c
+.I expression\c
+\&\|]
+.RB "[\|" \-\-demangle "\|]"
+.RB "[\|" \-\-no\-demangle "\|]"
+.RB "[\|" "\-e\ "\c
+.I entry\c
+\&\|] 
+.RB "[\|" \-embedded\-relocs "\|]"
+.RB "[\|" \-E "\|]" 
+.RB "[\|" \-export\-dynamic "\|]"
+.RB "[\|" "\-f\ "\c
+.I name\c
+\&\|]
+.RB "[\|" "\-\-auxiliary\ "\c
+.I name\c
+\&\|]
+.RB "[\|" "\-F\ "\c
+.I name\c
+\&\|]
+.RB "[\|" "\-\-filter\ "\c
+.I name\c
+\&\|]
+.RB "[\|" "\-format\ "\c
+.I input-format\c
+\&\|] 
+.RB "[\|" \-g "\|]" 
+.RB "[\|" \-G
+.I size\c
+\&\|]
+.RB "[\|" "\-h\ "\c
+.I name\c
+\&\|]
+.RB "[\|" "\-soname\ "\c
+.I name\c
+\&\|]
+.RB "[\|" \-\-help "\|]"
+.RB "[\|" \-i "\|]"
+.RB "[\|" \-l\c
+.I ar\c
+\&\|] 
+.RB "[\|" \-L\c
+.I searchdir\c
+\&\|] 
+.RB "[\|" \-M "\|]" 
+.RB "[\|" \-Map
+.I mapfile\c
+\&\|] 
+.RB "[\|" \-m
+.I emulation\c
+\&\|] 
+.RB "[\|" \-n | \-N "\|]" 
+.RB "[\|" \-noinhibit-exec "\|]" 
+.RB "[\|" \-no\-keep\-memory "\|]" 
+.RB "[\|" \-no\-warn\-mismatch "\|]" 
+.RB "[\|" \-O\c
+.I level\c
+\&\|]
+.RB "[\|" "\-oformat\ "\c
+.I output-format\c
+\&\|] 
+.RB "[\|" "\-R\ "\c
+.I filename\c
+\&\|]
+.RB "[\|" \-relax "\|]"
+.RB "[\|" \-r | \-Ur "\|]" 
+.RB "[\|" "\-rpath\ "\c
+.I directory\c
+\&\|]
+.RB "[\|" "\-rpath\-link\ "\c
+.I directory\c
+\&\|]
+.RB "[\|" \-S "\|]" 
+.RB "[\|" \-s "\|]" 
+.RB "[\|" \-shared "\|]" 
+.RB "[\|" \-sort\-common "\|]" 
+.RB "[\|" "\-split\-by\-reloc\ "\c
+.I count\c
+\&\|]
+.RB "[\|" \-split\-by\-file "\|]" 
+.RB "[\|" "\-T\ "\c
+.I commandfile\c
+\&\|]  
+.RB "[\|" "\-Ttext\ "\c
+.I textorg\c
+\&\|] 
+.RB "[\|" "\-Tdata\ "\c
+.I dataorg\c
+\&\|] 
+.RB "[\|" "\-Tbss\ "\c
+.I bssorg\c
+\&\|]
+.RB "[\|" \-t "\|]" 
+.RB "[\|" "\-u\ "\c
+.I sym\c
+\&]
+.RB "[\|" \-V "\|]"
+.RB "[\|" \-v "\|]"
+.RB "[\|" \-\-verbose "\|]"
+.RB "[\|" \-\-version "\|]"
+.RB "[\|" \-warn\-common "\|]" 
+.RB "[\|" \-warn\-constructors "\|]" 
+.RB "[\|" \-warn\-multiple\-gp "\|]" 
+.RB "[\|" \-warn\-once "\|]" 
+.RB "[\|" \-warn\-section\-align "\|]" 
+.RB "[\|" \-\-whole\-archive "\|]" 
+.RB "[\|" \-\-no\-whole\-archive "\|]" 
+.RB "[\|" "\-\-wrap\ "\c
+.I symbol\c
+\&\|]
+.RB "[\|" \-X "\|]" 
+.RB "[\|" \-x "\|]" 
+.ad b
+.hy 1
+.SH "描述 (DESCRIPTION)"
+\c
+.B ld\c
+\& 合并 一组 目标文件(object) 和 库文件(archive), 重定位 数据部分,
+构建 符号引用(symbol reference). 一般说来, 编译 生成 可执行文件 的 
+最后步骤 就是 调用 \c
+.B ld\c
+\&.
+
+\c
+.B ld\c
+\& 可以读取 用 连接器命令语言(Linker Command Language) 编写的 脚本文件, 
+它 能够 对 连接过程 提供 精确 和 全面 的 控制.
+本 手册页 不讨论 命令语言; 可参看 `\|\c
+.B info\c
+\|' 的 `\|\c
+.B ld\c
+\|' 项, 或者 手册
+.I
+ld: the GNU linker
+\&, 里面有 命令语言 的 细节 和 其他 GNU linker 的 内容.
+
+这个版本 的 \c
+.B ld\c
+\& 使用 通用BFD库 操作 目标文件, \c
+.B ld\c
+\& 能够 以 多种格式 读入, 连接 和 输出 目标文件 \(em\&例如 COFF 或 \c
+.B a.out\c
+\&, 能够 把 不同的格式 连接 在一起, 产生 各种 有效 的 目标文件.
+用 `\|\c
+.B objdump \-i\c
+\|' 可以 列出 各种 体系结构 支持 的 格式 列表; 另见
+.BR objdump ( 1 ).
+
+GNU linker 不仅 灵活 强大, 还能够 比 其他 linker 提供 更多 的 诊断信息.
+很多 linker 只要 碰上 一个错误 就 立刻停止 执行; 而
+\c
+.B ld\c
+\& 一有可能 仍然 继续执行, 这样 容易 定位出 其他错误
+(某些情况下, 尽管出了错, 仍然 生成 输出文件).
+
+GNU linker \c
+.B ld\c
+\& 期望 实现 更广泛 的 适用范围, 尽可能 兼容 其他 linker.
+通过 命令行 和 环境变量, 用户 可以 用 ld 执行 多种 操作.
+
+.SH "选项 (OPTIONS)"
+过于丰富的 命令行选项 使人 感到 压抑, 好在 实际使用 中, 多数情况下
+只需要 掌握 其中 一小部分. 例如, 在 一个 标准的, 提供 相应支持 的 Unix 
+系统 中, 常常 用 \c
+.B ld\c
+\& 连接 标准的 Unix 目标文件. 如果要 连接 \c
+.B hello.o\c
+\&:
+.sp
+.br
+$\ ld\ \-o\ output\ /lib/crt0.o\ hello.o\ \-lc
+.br
+.sp
+它 告诉 \c
+.B ld\c
+\& 生成 一个 叫做 \c
+.B output\c
+\& 的 文件 , 其中 连接了 文件 \c
+.B /lib/crt0.o\c
+\& 和 \c
+.B hello.o\c
+\& 以及
+库文件 \c
+.B libc.a\c
+\& (在 标准搜索目录下).
+
+\c
+.B ld\c
+\& 的 命令行选项 可以 任意顺序 出现, 甚至 重复出现. 多数 情况 下, 
+如果 用 不同的 参数 重复 同一种 选项, ld 不会 出现 更多的变化, 也不会 
+覆盖 以前的 参数. (指 命令行 中 左边的参数)
+
+例外情况 \(em\& 某些选项 有 反复使用 的 需要 \(em\& 如
+\c
+.B \-A\c
+\&, \c
+.B \-b\c
+\& (或等同的 \c
+.B \-format\c
+\&), \c
+.B \-defsym\c
+\&,
+\c
+.B \-L\c
+\&, \c
+.B \-l\c
+\&, \c
+.B \-R\c
+\&, 和 \c
+.B \-u\c
+\&.
+
+待连接的 目标文件 列表, 即 总览中的 \c
+.I objfile\c
+\&,
+可以 放在 命令行选项 的 前面, 后面, 或者 混杂其中; 但是 不能 把 \c
+.I objfile\c
+\& 放置于 某个 选项开关 和 它的参数 中间.
+
+一般说来 linker 要求 至少 输入 一个 目标文件, 但是 可以 用 \c
+.B \-l\c
+\&,
+\c
+.B \-R\c
+\& 输入 其他格式 的 二进制文件, 或者 用 命令语言 编写的 脚本文件. 如果 \c
+.I 没有\c
+\& 指定 二进制格式 的 输入文件, linker 就不能 产生 输出文件, 而是 显示
+`\|\c
+.B No input files\c
+\|'.
+
+选项的参数 必须 出现在 代表 选项 的 字母 后面, 可以有 空白符, 也可以 没有.
+
+.TP
+.BI "-A" "architecture"
+在 目前版本 的 \c
+.B ld\c
+\& 中, 这个 选项 仅适用于 Intel 960 体系系列. 在 \c
+.B ld\c
+\& 的 设置 中, \c
+.I architecture\c
+\& 参数 是 960 系列 的 成员 识别名称 之一, 由 两个字母 组成;
+这个选项 指出 期望的 输出目标, 对 输入文件 的 不兼容指令 作出 警告.
+它 能够 改变 linker 对 库文件 的 搜索策略, 以便于 支持 体系相关库, 方法是
+把 体系识别名称 添加在 待搜索 的 文件名 尾部.
+
+例如, 如果 \c
+.B ld\c
+\& 命令行 有 `\|\c
+.B \-ACA\c
+\|' 和 `\|\c
+.B \-ltry\c
+\|', linker 将 搜索 (根据 内置的路径 和 \c
+.B \-L\c
+\& 指定的路径) 以下 名称 的 库文件
+.sp
+.br
+try
+.br
+libtry.a
+.br
+tryca
+.br
+libtryca.a
+.br
+.sp
+
+前两项 是 常规做法; 后两项 源于 `\|\c
+.B \-ACA\c
+\|'.
+
+将来发布的 \c
+.B ld\c
+\& 可能 对 其他 体系结构 提供 类似功能.
+
+可以 在 命令行上 使用 多个 \c
+.B \-A\c
+\& 选项, 只要 该 体系 允许 和 目标体系 相连, 其选项 使 ld 在 搜索 \c
+.B \-l
+指定的库 中, 增加 和 体系结构名称 对应的库.
+
+.TP
+.BI "\-b " "input-format"
+指定 输入目标文件 的 二进制格式, 目标文件 在 命令行 上 给出, 放在
+这个选项 的 后面. 一般 不需要 指定 这个选项, \c
+.B ld\c
+\& 的 缺省输入格式 配置为 各个机器 上 最常用 的 格式. \c
+.I input-format\c
+\& 是 字符串, BFD 库 支持的 格式 名称. 选项 \c
+.B \-format \c
+.I input-format\c
+\&\c
+\& 起 相同的 作用, 脚本命令
+.BR TARGET 
+也是 一样.
+
+连接 某些 不寻常的 二进制文件 时 需要 这个选项. 或者 使用 \c
+.B \-b\c
+\& 选项 强调 格式切换 (连接 不同格式 的 目标文件),
+比如说, 在 每组 特定格式 的 目标文件 前面 使用 \c
+.B \-b \c
+.I input-format\c
+\&\c
+\& 选项.
+
+环境变量
+.B GNUTARGET\c
+\& 用于 指定 缺省格式. 也可以 在 脚本文件 中 用 \c
+.B TARGET\c
+\& 命令 定义 输入格式.
+
+.TP
+.B \-Bstatic 
+禁止 连接 共享库. 这个选项 只在 支持 共享库 的 平台 上 有意义.
+
+.TP
+.B \-Bdynamic
+连接 动态库. 这个选项 只在 支持 共享库 的 平台 上 有意义, 一般说来 它
+是 缺省选项.
+
+.TP
+.B \-Bsymbolic
+当 创建 共享库 的 时候, 只要 有可能, 在 共享库 内 编联(bind reference) 
+全局符号 和 定义(definition). 一般说来, 允许 连接了 某个 共享库 的 程序
+覆盖 共享库内 的 定义. 这个选项 只在 支持 共享库 的 ELF 平台 上 有意义.
+
+.TP
+.BI "\-c " "commandfile"
+告诉 \c
+.B ld\c
+\& 从 文件
+\c
+.I commandfile\c
+\& 中 读取 连接 命令. 这些 命令 彻底的 覆盖 \c
+.B ld\c
+\& 的 缺省 连接 格式 (而不是 添加); \c
+.I commandfile\c
+\& 必须 详尽的 描述 目标格式 的 所有细节.
+
+你 也可以 在 命令行 上 直接嵌入 连接命令, 把 脚本 嵌在 大括弧 `\|\c
+.B {\c
+\|' 和 `\|\c
+.B }\c
+\|' 中间.
+
+.TP
+.B \-\-cref
+输出 交叉引用表(cross reference).  如果 创建了 连接映像(linker map) 文件,
+交叉引用表 就 输出到 映像文件 中, 否则 送往 标准输出.
+
+.TP
+.B \-d 
+.TP
+.B \-dc
+.TP
+.B \-dp
+这 三个选项 是 一回事, 为了 兼容 其他 linker 而 同时提供. 
+即使 已经 指定 \c
+.B ld
+生成 可重定位文件 (\c
+.B \-r\c
+\&), 它们 能为 公共符号(common symbol) 分配 空间.  脚本命令
+\c
+.B FORCE_COMMON_ALLOCATION\c
+\& 起 同样作用.
+
+.TP
+.BI "-defsym " "symbol" "\fR = \fP" expression
+在 输出文件 中 创建 一个 全局符号, 它 含有 \c
+.I expression\c
+\& 给出的 绝对地址. 可以 在 命令行 使用 多个 这样的 选项. 这个 \c
+.I expression\c
+\& 只能 使用 有限的 数学形式: 十六进制常数, 已经存在 的 符号名字.
+或者 使用 \c
+.B +\c
+\& 和 \c
+.B \-\c
+\& 加减 十六进制常数 或 符号. 如果 需要 更复杂的 表达式, 考虑 使用
+命令语言脚本.
+
+.TP
+.B \-\-demangle
+.TP
+.B \-\-no\-demangle
+这些选项 控制 是否在 出错信息 和 其他信息 中, 输出 可读的(demangle) 
+符号名称. 如果 使用了 demangle 选项, linker 尽量使 符号名称 容易理解: 
+去掉 领头的 下划线 (如果 被 目标文件格式 采用); 把 C++ 难懂的 符号名称
+(symbol name) 转换成 可读的 名称. 缺省情况下 linker 输出 可读的 符号名称, 
+除非 设置了 环境变量
+.B COLLECT_NO_DEMANGLE .
+这些选项 能够 覆盖 缺省行为.
+
+.TP
+.BI "-e " "entry"
+使用 \c
+.I entry (入口)\c
+\& 标识符 作为 程序 执行 的 开始端, 而不是 缺省入口. 关于 缺省入口 和 其他
+设置 入口 的 方法 参见 `\|\c
+.B info\c
+\|' 的
+.B ld\c
+\|' 项.
+
+.TP
+.B \-embedded\-relocs
+这个选项 仅用于 连接 MIPS上 嵌入的 PIC 代码, GNU 的 编译器 和 汇编器 用
+.B \-membedded\-pic
+选项 能够 生成 这种代码. 它使 linker 创建 一张 表格, 用于 在 运行的时候,
+重定位 任何 被 静态初始化 为 指针值 的 数据. 详见 testsuite/ld-empic 的 代码.
+
+.TP
+.B \-E
+.TP
+.B \-export\-dynamic
+当 创建 ELF 文件 时, 把 所有 符号 加入 动态符号表.
+一般说来, 动态符号表 只包含 动态目标库(dynamic object) 需要的 符号. 用
+.I dlopen
+的 时候 需要 这个 选项.
+
+.TP
+.BI "-f " "name"
+.TP
+.BI "--auxiliary " "name"
+创建 ELF 共享目标库 时, 把 内部的 DT_AUXILIARY 字段 设置为 
+.I name.
+它 告诉 动态linker, 把 该 共享目标库 的 符号表 用做 共享目标 
+.I name 
+的 符号表 的 辅助过滤器.
+
+.TP
+.BI "-F " "name"
+.TP
+.BI "--filter " "name"
+创建 ELF 共享目标库 时, 把 内部的 DT_FILTER 字段 设置为 
+.I name.
+它 告诉 动态linker, 把 该 共享目标库 的 符号表 用做 共享目标 
+.I name 
+的 符号表 的 辅助过滤器.
+
+.TP
+.BI "\-format " "input\-format"
+等同于 \c
+.B \-b\c
+\& \c
+.I input\-format\c
+\&.
+
+.TP
+.B \-g
+虚设项; 用于 兼容 其他 工具.
+
+.TP
+.BI "\-G " "size"\c
+把 使用 GP 寄存器 优化的 目标(文件) 大小 限制为
+.I size .
+用于 MIPS ECOFF, 对 其他 目标文件格式 无效.
+
+.TP
+.BI "-h " "name"
+.TP
+.BI "-soname " "name"
+创建 ELF 共享目标库 时, 把 内部的 DT_SONAME 字段 设置为 name. 
+如果 某个 可执行文件 连接了 含有 DT_SONAME 字段 的 共享目标库, 
+当 该程序 运行 时, 动态 linker 试图 根据 DT_SONAME 字段 调入 共享的 
+目标库, 而 不使用 提供给 linker 的 文件名.
+
+.TP
+.B \-\-help
+在 标准输出 显示 命令行选项 的 摘要, 然后 结束. 这个选项 和
+.B \-\-version
+选项 使用了 两个 短横线, 不是 一个, 目的是 兼容 其他 GNU 程序.
+只用 一个 短横线 的 选项 是为了 兼容 其他 linker.
+
+.TP
+.B \-i
+执行 增量连接(incremental link), 等同于 \c
+.B \-r\c
+\& 选项.
+
+.TP
+.BI "\-l" "ar"
+在 连接文件 列表 中 增加 归档库文件 \c
+.I ar\c
+\&.  可以 多次 使用 这个选项. 凡指定 一项 \c
+.I ar
+\&, \c
+.B ld\c
+\& 就会 在 路径列表 中 增加 一项 对 \c
+.B lib\c
+.I ar\c
+\&.a\c
+\& 的 搜索.
+
+.TP
+.BI "\-L" "searchdir"
+这个选项 将 路径 \c
+.I searchdir\c
+\& 添加 到 路径列表 中去, \c
+.B ld\c
+\& 在 这个 列表 中 搜索 归档库. 可以 多次 使用 这个选项.
+
+缺省的 搜索路径集 (不使用 \c
+.B \-L\c
+\& 时) 取决于 \c
+.B ld\c
+\& 使用的 模拟模式(emulation) 及其 配置.
+在 连接脚本 中, 可以 用 \c
+.B SEARCH_DIR
+命令 指定 路径.
+
+.TP
+.B \-M 
+在 标准输出 显示  连接映像 \(em\& 有关 \c
+.B ld\c
+\& 把 符号 映射到 何处 的 诊断信息, 以及 全局公共存储器 的 分配 信息.
+
+.TP
+.BI "\-Map " "mapfile"\c
+把 连接映像 输出到 
+.I mapfile
+文件 中 \(em\& 有关 \c
+.B ld\c
+\& 把 符号 映射到 何处 的 诊断信息, 以及 全局公共存储器 的 分配 信息.
+
+.TP
+.BI "\-m " "emulation"\c
+模仿
+.I emulation
+连接器.  可以 用
+.I \-\-verbose
+或
+.I \-V
+选项 列出 有效的 模拟项.  这个选项 覆盖 编译 进去 的 缺省项.
+
+.TP
+.B \-N 
+指定 可读写 的 \c
+.B 正文\c
+\& 和 \c
+.B 数据\c
+\& 节(section). 如果 输出格式 支持 Unix 风格的 幻数(magic number), 
+则 输出文件 标记为 \c
+.B OMAGIC\c
+\&.
+
+当 使用 `\|\c
+.B \-N\c
+\&\|' 选项 时, linker 不做 数据段 的 页对齐(page-align).
+
+.TP
+.B \-n 
+设置 正文段 为 只读, 如果 有可能, \c
+.B NMAGIC\c
+\& 为 可写.
+
+.TP
+.B \-noinhibit\-exec
+一般说来, 如果 连接的 时候 发生 错误, linker 不会 产生 输出文件.
+使用了 这个 标志选项, 只要 不出 致命差错, 仍能够 产生 输出文件.
+
+.TP
+.B \-no\-keep\-memory
+linker 通常 牺牲 内存, 优化 速度, 它 把 输入文件 的 符号表 缓冲在 内存中.
+这个选项 使 linker 必要时 重复读取 符号表, 以便 优化 内存使用. 连接 大型 
+可执行文件 的 时候, linker 有可能 内存 不够, 此时 可以 试试 这个选项.
+
+.TP
+.B \-no\-warn\-mismatch
+一般情况下, 如果 试图 连接 某些 不匹配 的 输入文件, 比如说, 按 不同
+处理器 编译 的, 或者 具有 不同的 字节顺序(endianness), linker 就会 报错.
+这个选项 告诉 linker 默许 这种 错误. 要 小心使用 这个选项, 除非 你
+正在做 某些 特殊 操作, 而且 能够 确定 不需要 linker 报错.
+
+.TP
+.BI "\-o " "output"
+.I output\c
+\& 用来 指定 \c
+.B ld\c
+\& 生成的 程序名; 如果 没有 使用 这个选项, 缺省名字 是 `\|\c
+.B a.out\c
+\|'.  脚本命令 \c
+.B OUTPUT\c
+\& 起 同样 作用.
+
+.TP
+.BI "\-O" "level"
+生成 优化的 输出文件. 这个选项 占用 比较多 的 时间, 因此 仅 常用于
+最终文件 的 生成.
+\c
+.I level\c
+\& 是 数值参数. 任何 大于零 的 参数 意味着 要求 优化.
+
+.TP
+.BI "\-oformat " "output\-format"
+指定 输出目标文件 的 二进制格式. 一般 不需要 指定 这个选项, \c
+.B ld\c
+\& 的 缺省 输出格式 配置为 各个机器 上 最常用 的 格式. \c
+.I output-format\c
+\& 是 一个 字符串, BFD 库 支持的 格式 名称. 脚本命令
+.B OUTPUT_FORMAT
+也可以 指定 输出格式, 但是 这个选项 能够 覆盖 掉 它.
+
+.TP
+.BI "\-R " "filename"
+从 文件 \c
+.I filename\c
+\& 中 读取 符号名称 及其 地址, 但是 不做 重定位, 不传送到 输出端.
+它 可以 使 输出文件 符号引用 其他程序中 定义的 绝对地址.
+
+.TP
+.B \-relax
+这个选项 的 效果 取决于 机器, 目前 只支持 H8/300.
+
+在 某些 平台 上 可以 使用 这个选项 做 全局优化, 它 让 linker 解决 程序中
+的 地址处理, 例如 在 输出目标文件 中 缓和(relax) 地址模式 以及 合成
+(synthesize) 新指令.
+
+其他平台 也接受 `\|\c
+.B \-relax\c
+\&\|' 选项, 但是 不起作用.
+
+.TP
+.B \-r 
+生成 可重定位 输出 \(em\& 就是说, 生成的 输出文件 能够 依次 成为 \c
+.B ld\c
+\& 的 输入, 一般 称之为 \c
+.I 不完全(partial)
+连接\c
+\&. 它 有 一个 副效应, 在 支持 标准 Unix 幻数(magic number) 的 环境 中,
+这个选项 把 输出文件 的 幻数 设置成 \c
+.B OMAGIC\c
+\&. 如果 没有 指定 这个选项, linker 生成 绝对定位 的 文件.
+连接 C++ 程序时, 这个选项 \c
+.I 不会 \c
+\& 解析 出 对 构造子(constructor) 的 引用(reference); 不妨 改用 \c
+.B \-Ur\c
+\& 选项. 
+
+这个选项 的 效果 和 \c
+.B \-i\c
+\& 一样.
+
+.TP
+.B \-rpath\ \fIdirectory
+增加 一条 对 运行时(runtime)库 的 搜索路径. 这个选项 用于 连接 ELF 可执行
+文件 和 共享目标库. 所有
+.B \-rpath
+选项 的 参数 被 合并, 然后 一起 传递 给 运行时 linker, 运行时 linker 在
+运行 的 时候 使用 这些 路径 寻找 共享目标库.
+.B \-rpath
+也可以 用来 定位 共享目标库 引用的 共享目标库; 参见 对
+.B \-rpath\-link
+选项 的 叙述.  如果 连接 ELF 可执行文件 时 没有 指定
+.B \-rpath
+选项, linker 就使用 环境变量
+.B LD_RUN_PATH
+的 内容 \(em\& 只要 这个 环境变量 存在.
+
+.B \-rpath
+选项 能够 用在 SunOS 上, 缺省状况下, linker 可以 根据 给出的
+.B \-L
+选项 形成 运行时 搜索路径.  如果 使用了
+.B \-rpath
+选项, 运行时 搜索路径 从
+.B \-rpath
+中 产生, 而 忽略
+.B \-L
+选项.  这一点 有利于 使用 gcc, 在 NFS 文件系统 上, gcc 可能 产生 许多
+.B \-L
+选项.
+
+.TP
+.B \-rpath\-link\ \fIdirectory
+使用 ELF 或 SunOS 的 时候, 某些 共享库 可能 需要 其他 共享库. 
+这种情况 一般 发生在 某个
+.B ld\ \-shared
+连接 中, 输入文件 包含了 共享库.
+
+如果 linker 遇到 这样的 依赖情况, 当 它 执行 非共享, 不可重定位 的 连接
+时, linker 将 自动 寻找 所需的 共享库, 如果 它们 没有 被 显明 包含, 就
+把 它们 包含到 连接 中. 在 这种情况下,
+.B \-rpath\-link
+选项 指定了 最先 搜索 的 目录集.
+.B \-rpath\-link
+能够 指定 一批 目录, 目录 用 冒号 隔开. 也可以 用 这些 目录名 作为 参数,
+重复 使用 这个 选项.
+
+如果 没有 找到 需要的 共享库, linker 产生 一个 警告, 但是 继续 连接.
+
+.TP
+.B \-S 
+去掉 输出文件 中的 调试符号信息 (但不是 所有符号).
+
+.TP
+.B \-s 
+去掉 输出文件 中的 全部 符号信息.
+
+.TP
+.B \-shared
+创建 一个 共享库. 目前 只支持 ELF 和 SunOS 平台 (在 SunOS 上, 这个选项 不是
+必须的, 如果 没有 使用
+.B \-e
+选项, 而且 存在 不确定 的 符号, linker 将 自动 创建 共享库).
+
+.TP
+.B \-sort\-common
+.B ld
+通常 把 全局公共符号 放到 适当的 输出节, 按照 大小 排序.
+首先是 单字节符号, 然后是 双字节, 接下来是 四字节, 随后是 其他的.
+它的 目的是 防止 符号间 因为 排布限制 出现 间隙. 
+使用 这个选项 可以 禁止 排序.
+
+.TP
+.B \-split\-by\-reloc\ \fIcount
+在 输出文件 中 创建 附加节(extra section), 使得 输出文件 中, 
+没有 某一个 输出节 包含 大于
+.I count
+个 重定位项. 它 用于 产生 大型 可重定位 COFF 目标文件, 可以 插入到
+某些 实时内核 中; 因为 COFF 不能 在 单一节内 存放 65535 以上的 重定位项.
+注意, 有些 目标文件格式 不支持 任意 分节, 此时 这个选项 将会 操作 失败.
+此外, linker 不能够 分割 输入节, 然后 重新分配, 因此 如果 某个 输入节 包含
+.I count
+以上的 重定位项, 相应的 输出节 将 包含 同样多的 重定位项.
+
+.TP
+.B \-split\-by\-file
+类似于
+.B \-split\-by\-reloc ,
+但是 它为 每个 输入文件 建立一个 新的 输出节.
+
+.TP
+.BI "\-Tbss " "org"\c
+.TP
+.BI "\-Tdata " "org"\c
+.TP
+.BI "\-Ttext " "org"\c
+把 \c
+.I org\c
+\& 作为 输出文件 的 段 起始地址 \(em\& 特别是 \(em\& \c
+.B bss\c
+\&, \c
+.B data\c
+\&, 或 \c
+.B text\c
+\& 段.
+\c
+.I org\c
+\& 必须是 十六进制整数.
+
+.TP
+.BI "\-T " "commandfile"
+等同于 \c
+.B \-c \c
+.I commandfile\c
+\&\c
+\&; 用于 兼容 其他工具.  
+
+.TP
+.B \-t 
+在 \c
+.B ld\c
+\& 处理 输入文件 的 时候 显示 文件名.
+
+.TP
+.BI "\-u " "sym"
+把 \c
+.I sym\c
+\& 作为 未定义(undefined) 的 符号 送入 输出文件.
+这样做 可以, 例如, 促使 linker 从 标准库 连接 某个 附加的模块. 
+允许 使用 多个 \c
+.B \-u\c
+\& 选项 输入 多个 未定义 符号.
+
+.TP
+.B \-Ur 
+对于 除 C++ 以外的 任何 程序, 这个选项 等同于
+\c
+.B \-r\c
+\&: 生成 可重定位 的 输出 \(em\& 就是说, 能够 依次 输入 \c
+.B ld\c
+\& 的 输出文件. 连接 C++ 程序 的 时候, \c
+.B \-Ur
+.I 将\c
+\& 解析 对 构造子(constructor) 的 引用(reference), 这一点 和 \c
+.B \-r\c
+\& 不同.
+
+.TP
+.B \-\-verbose
+显示 \c
+.B ld
+的 版本号, 列出 支持的 模拟项(emulation). 显示 哪些 输入文件 能够 打开, 
+哪些 不能,
+
+.TP
+.B \-v, \-V
+显示 \c
+.B ld\c
+\& 的 版本号.
+此外
+.B \-V
+选项 能够 列出 支持的 模拟项.
+
+.TP
+.B \-\-version
+显示 \c
+.B ld
+的 版本号 然后 结束.
+
+.TP
+.B \-warn\-common
+当 公共符号 和 其他 公共符号 合并 时, 或者 和 某个 符号定义 合并 时,
+linker 就发出 警告. Unix 系统的 linker 允许 这种 有些 草率 的 做法, 其他
+操作系统 则 不行. 这个选项 帮助你 在 合并 全局符号 的 时候 发现 潜在问题.
+
+.TP
+.B \-warn\-constructors
+如果 使用了 全局构造子(global constructor), linker 就发出 警告.
+它 只对 某些 目标文件结构 有用, 对于 如 COFF 或 ELF, 此 linker 不能够
+检测 全局构造子 的 使用情况.
+
+.TP
+.B \-warn\-multiple\-gp
+如果 输出文件 需要 多个 全局指针值, linker 就发出 警告. 这个选项 只能
+用于 某些 处理器, 如 Alpha.
+
+.TP
+.B \-warn\-once
+对 每个 未定义符号 只 警告 一次, 而不是 每次 引用 这个符号 都 警告.
+
+.TP
+.B \-warn\-section\-align
+如果 某个 输出节(section) 的 地址 因为 边界对齐 而 发生 改变,
+linker 就发出 警告. 典型情况下 由 输入节 设置 边界, 只有 不做 明确指定
+的 时候 地址 才会 改变; 就是说, SECTIONS 命令 没有 指出 该节 的 开始地址.
+
+.TP
+.B \-\-whole\-archive
+对于 命令行 上
+.B \-\-whole\-archive
+选项 提到的 每个 归档库, 连接时 连入 归档库 的 全部 目标文件, 而不是
+在 归档库 中 搜索 所需的 目标文件. 一般用于 把 归档库文件 转变成 共享库文件,
+迫使 全部 目标文件 进入 共享库.
+
+.TP
+.B \-\-no\-whole\-archive
+关闭
+.B \-\-whole\-archive
+选项 对 归档库 的 影响.
+
+.TP
+.BI "--wrap " "symbol"
+对
+.I symbol
+使用 包装函数(wrapper function). 任何 对
+.I symbol
+未定义 的 引用 (undefined reference) 将 解析为
+.BI "__wrap_" "symbol".
+任何 对
+.BI "__real_" "symbol"
+未定义 的 引用 将 解析为
+.I symbol.
+
+.TP
+.B \-X 
+删除 全部 临时的 局部符号. 大多数 目的文件 中, 这些 局部符号 的 名字 用 `\|\c
+.B L\c
+\|' 做 开头.
+
+.TP
+.B \-x
+删除 全部 局部符号.
+
+.PP
+
+.SH "环境 (ENVIRONMENT)"
+\c
+通过 环境变量 \c
+.B GNUTARGET\c
+\& 可以 改变 
+.B ld\c
+\& 的 行为.
+
+\c
+如果 没有 使用 \c
+.B \-b\c
+\& 选项 (或 相同的 \c
+.B \-format\c
+\&),
+.B GNUTARGET\c
+\& 决定了 输入文件 的 目标格式, 其值 应为 BFD的 名称之一.  如果 没有 \c
+.B GNUTARGET \c
+\& 环境变量, \c
+.B ld\c
+\& 就使用 主机的 本地格式. 如果 \c
+.B GNUTARGET\c
+\& 设置为 \c
+.B default\c
+\&, BFD 通过 检查 输入文件 的 二进制格式 判断 输入格式;
+这个方法 通常 有效, 但 隐含 歧义, 这是因为 没有 办法 保证 标志 目标文件格式
+的 幻数 是 唯一的.
+不过, 各个系统 配置 BFD 的 时候, 会把 系统 约定的格式 放在 搜索列表 的
+前面, 因此 能够 按照 约定 消除 歧义.
+
+.PP
+
+.SH "另见 (SEE ALSO)"
+
+.BR objdump ( 1 )
+.br
+.RB "`\|" ld "\|' 和 `\|" binutils "\|'"
+项 (
+.B info\c
+)
+.br
+.I 
+ld: the GNU linker\c
+, Steve Chamberlain and Roland Pesch;
+.I
+The GNU Binary Utilities\c
+, Roland H. Pesch.
+
+.SH COPYING
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ldd.1 b/src/man1/ldd.1
new file mode 100644
index 0000000..0b4a149
--- /dev/null
+++ b/src/man1/ldd.1
@@ -0,0 +1,75 @@
+.\" Copyright 1995-1996 David Engel (david at ods.com)
+.\" Copyright 1995 Rickard E. Faith (faith at cs.unc.edu)
+.\" Most of this was copied from the README file.  Do not restrict distribution.
+.\" May be distributed under the GNU General Public License
+.TH LDD 1 "30 March 1995"
+.SH NAME
+ldd \- 显示共享库的依赖情况
+.SH "总览 (SYNOPSIS)"
+.B ldd
+.RB [ \-vVdr ]
+program ...
+.SH "描述 (DESCRIPTION)"
+.B ldd
+显示 每个 程序 需要 的 共享库 (shared library), 程序名 在 命令行 上 给出.
+.PP
+对于 a.out 程序,
+.B ldd
+简单的 进行 fork 和 exec 各个 程序, 执行 程序 时 argc 参数 等于零,
+a.out 的 动态连接器 (dynamic linker)
+.BR ld.so ,
+正常情况下 能够 调入 共享库, 注意到 这个 特殊情况, 从而 显示出 依赖关系.
+.PP
+对于 ELF 程序,
+.B ldd
+设置 适当的 环境变量集, 然后 fork 和 exec 各个 程序.
+ELF 的 动态连接器,
+.BR ld-linux.so ,
+正常情况下 能够 调入 共享库, 注意到 这个 特殊情况, 从而 显示出 依赖关系.
+
+.SH "选项 (OPTIONS)"
+.TP
+.B \-v
+显示
+.BR ldd 
+的 版本号.
+.TP
+.B \-V
+显示 动态连接器
+.BR ld.so 
+的 版本号.
+.TP
+.B \-d
+进行 重定位(relocation), 而且 报告 缺少的 函数 (仅限于 ELF).
+.TP
+.B \-r
+对 数据目标 (data object) 和 函数 进行 重定位, 而且 报告 缺少的 
+数据目标 (仅限于 ELF).
+
+.SH BUGS
+对于 非常 陈旧 的 程序,
+.B ldd
+可能
+.I 无法
+工作, 这些 程序 在 
+.B ldd
+加入 编译器工具 之前 就 连接 好了. 如果 对 这样的 某个 程序 执行
+.B ldd ,
+该 程序 的 argc = 0, 其 运行结果 无法 预测. 
+
+.SH "作者 (AUTHOR)"
+David Engel.
+
+.SH "另见 (SEE ALSO)"
+.BR ldconfig (8),
+.BR ld.so (8),
+.BR ld.so.info .
+
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/let.1 b/src/man1/let.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/let.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/listalias.1 b/src/man1/listalias.1
new file mode 100644
index 0000000..54a54e9
--- /dev/null
+++ b/src/man1/listalias.1
@@ -0,0 +1,48 @@
+.\" 版权所有 The USENET Community Trust, 1988-1995.
+.\" 中文版版权所有 Liu JingSong, www.linuxforum.net 2000
+.\" 本文档可在遵照LDP GENERAL PUBLIC LICENSE,Version 1, September 1998
+.\" 中描述的条件下进行复制,且该文件发布时必须包含该文档.
+.TH LISTALIAS 1L "Elm Version 2.5" "USENET Community Trust"
+.SH NAME
+listalias \- 列出用户和系统别名
+.SH 总揽
+.B listalias
+[ -s | -u ] [ 正则表达式]
+.SH 描述
+.I Listalias
+按用户及系统别名每个输出一行。每行具有下列格式:
+.nf
+   
+   <别名>     <地址>  (<注解>)
+
+.fi
+如果采用了正则表达式选项,则只有与指定表达式匹配的别名才被列出,
+如果未采用正则表达式,所有别名将被列出。
+.sp
+在两种方式下,命令的输出都被排序。
+.SH 选项
+.TP
+.B \-s
+只输出系统别名。  
+.BR \ \-s \ 和 \ \-u
+两个选项为互斥关系,即两个选项只能选一个。
+.TP
+.B \-u
+只输出用户别名  
+.BR \ \-s \ 和 \ \-u
+两个选项为互斥关系。
+.SH 作者
+Elm 开发小组
+.SH 参见
+checkalias(1L), elm(1L), elmalias(1L), newalias(1L)
+.SH 缺陷
+由于该程序通过管道调用了另一个程序egrep, 因此表达式的检查结果由egrep决定,而非这个程序自己决定!
+.SH 程序错误报告至
+Bill Pemberton  flash at virginia.edu
+
+.SH "[中文版维护人]"
+.B Liu JingSong <js-liu at 263.net>
+.SH "[中文版最新更新]"
+.B 2001/05/02
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ln.1 b/src/man1/ln.1
new file mode 100644
index 0000000..fc75bcc
--- /dev/null
+++ b/src/man1/ln.1
@@ -0,0 +1,157 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Chinese version Copyright Surran, BitBIRD of www.linuxforum.net
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH LN 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+ln \-在文件之间建立连接
+.SH 总览
+.BI "ln [options] source [dest]"
+.br
+.BI "ln [options] source...directory"
+.SH POSIX 选项:
+.B "[\-f]"
+.SH GNU 选项(缩写):
+.B [\-bdfinsvF] 
+.B [\-S backup\-suffix]
+.B [\-V {numbered, existing, simple}]
+.B [\-\-help] [\-\-version] [\-\-]
+.SH 描述
+在Unix世界里有两个'link'(连接)概念,一般称之为硬连接和软连接。
+.BR 一个硬连接仅仅是一个文件名。(一个文件可以有好几个文件名,只有将
+.BR 最后一个文件名从磁盘上删除,才能把这个文件删掉。文件名的个数是由
+.BR ls(1)来确定的。所有的文件名都处于同一个状态,也就没有什么“源名字”
+.BR 之说。通常文件系统里的一个文件的所有名字包含着一样的数据信息,不
+.BR 过这样也不是必需的。)一个软连接(或符号连接)是完全不同的:它是
+.BR 一个包含了路径信息的小小的指定文件。因此,软连接可以指向不同文件
+.BR 系统里的文件(比如由NFS装载的不同机器文件系统上的文件),甚至可以
+.BR 指向一个不一定确实存在的文件。在软连接文件被访问(系统调用open(2)
+.BR 或stat(2))的时候,操作系统用该文件所包含的路径替换该文件的访问介
+.BR 入点,从而实现对所指文件的访问。(用命令rm(1)和unlink(2)可以删除
+.BR 连接,但不是删除该文件所指向的文件。系统指定调用lstat(2)和readlink(2)
+.BR 来读取连接文件与其所指文件的状态。到底是对软连接文件操作,还是对被
+.BR 指向文件操作,由于不同操作系统件存在不同的系统调用,而存在着差异。)
+
+ln 在文件间产生连接。缺省时,产生硬连接,有\-s选项,则产生符号(软)连接。
+
+如果仅仅只给出一个文件名,那么ln将在当前目录里产生这个文件的连接,
+也就是说,以该文件(的最后一个)名称等同的名字在当前目录里产生一个连接
+(GNU范围内);
+如果最后一个参数是一个已存在的目录名,
+ln 将在那个目录里给每一个源文件用以与源文件相同的文件名产生连接,
+(不同情况见以下\-\-no\-dereference的描述);
+如果只给出两个文件名,ln将产生源文件的连接;
+如果最后一个参数不是一个目录名或多于两个文件名,则报错。
+
+缺省时,ln不删除已存在的文件或符号连接。
+(因此,它可以被用来锁定目标文件,即当dest已经不存在时)
+但选项\-f可以强制执行。
+
+在已存在的实现中,只有超级用户才能建立目录的硬连接。
+POSIX 禁止系统调用link(2)和ln建立目录的硬连接
+(但是允许在不同的文件系统间建立硬连接)。
+
+.SH POSIX 选项
+.TP
+.B "\-f "
+删除已存在的目的文件。
+.SH GNU 选项
+.TP
+.B "\-d, \-F, \-\-directory"
+允许超级用户建立目录硬连接。
+.TP
+.B "\-f, \-\-force"
+删除已存在的目的文件。
+.TP
+.B "\-i, \-\-interactive"
+提示是否删除已存在的目的文件。
+.TP
+.B "\-n, \-\-no\-dereference"
+当所给出的目的文件名是一个目录的符号连接时,将其视为一般文件处理。
+
+当目的目录名是一个确实存在的目录(不是一个符号连接)时,
+不进行模糊处理,而在那个目录里建立连接。
+但是当所指定的目的目录名是一个符号连接时,
+有两种方式来对待用户的要求。
+ln 会视目的为一个普通目录,并且在里面建立连接。
+或者如同符号连接本身一样地视其为一个非目录。
+这种情况下,ln 将在建立新连接之前删除或备份这个符号连接。
+缺省地,把符号连接视为普通目录来对待。
+.TP
+.B "\-s, \-\-symbolic"
+建立符号连接以替代硬连接。
+在不支持符号连接的系统上,这个选项仅仅会产生一个错误提示而已。
+.TP
+.B "\-v, \-\-verbose"
+在建立连接前显示所操作的文件名。
+.SH GNU 备份选项
+对于想备份那些有可能被覆盖、改写或者被破坏的文件,
+GNU提供了比如:cp, mv, ln, install和patch等命令。
+可以使用\-b参数生成备份文件。备份文件的名称由\-V参数指定。
+假如备份文件的名称是通过原文件名加后缀而得到,
+那么要用\-S参数来指定这个后缀。
+.TP
+.B "\-b, \-\-backup"
+备份文件。
+.TP
+.B "\-S SUFFIX,\-suffix=SUFFIX"
+在备份文件后添加"SUFFIX"(你的后缀)。如果不使用该参数,则使用环境变量
+SIM_PLE_BACHUP_SUFFIX,如果该环境变量没有设置,则缺省地使用'~'。
+.TP
+.B "\-V METHOD,\-version\-control=METHOD"
+指定备份文件如何命名。
+参数"METHOD"可以是'numbered'(或't'),
+'existing'(或'nil'),或'never'(或'simple')。
+如果不使用该参数,则使用环境变量VERSION_CONTROL,
+如果该环境变量没有设置,则缺省地使用
+'existing'。
+
+正确有效的METHOD参数对应于Emacs变量'version\-control'。(唯一被承认的缩写):
+
+t, numbered
+产生数字标记形式的备份文件。
+
+nil, existiong
+对已有数字标记备份的文件进行数字备份,而简单备份其他类型文件。
+
+never, simple
+总是进行简单备份。
+
+
+.SH GNU 标准参数
+.TP
+.B "\-help"
+在标准输出上显示使用信息并顺利退出。
+.TP
+.B "\-version"
+在标准输出上显示版本信息并顺利退出
+.TP
+.B "\-\-"
+终端参数列表。
+
+
+.SH 环境变量
+变量LANG, LC_ALL, LC_COLLATE, LC_CTYPE和LC_MESSAGES具有通常意义。
+在GNU版本里,变量
+SIMPLE_BACKUP_SUFFIX和VERSION_CONTROL控制备份文件的命名。
+
+.SH 遵循
+POSIX 1003.2,尽管POSIX 1003.2(1996)没有讨论软连接。
+软连接在BSD中有介绍,在System V release3(或更老版本)系统中不出现。
+
+.SH 另见
+ls(1), rm(1), link(2), lstat(2), open(2), readlink(2), stat(2), unlink(2)
+
+.SH 注意
+本文出自应用文档-4.0,其他版本肯定会有微小差别。
+任何添加或纠错意见请寄:aeb at cwi.nl。
+程序Bugs请告知:fileutils\-bugs at gnu.ai.mit.edu
+
+.SH "[中文版维护人]"
+.B Surran <email>
+.SH "[中文版最新更新]"
+2000/10/19
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/loadkeys.1 b/src/man1/loadkeys.1
new file mode 100644
index 0000000..d5f8343
--- /dev/null
+++ b/src/man1/loadkeys.1
@@ -0,0 +1,189 @@
+.TH LOADKEYS 1 "09 Oct 1997" "Console tools" "Linux User's Manual"
+
+.SH NAME
+loadkeys \- 调入键盘翻译表
+
+.SH "总览 (SYNOPSIS)"
+.B loadkeys [
+.I \-d \-\-default
+.B ] [
+.I \-h \-\-help
+.B ] [
+.I \-q \-\-quiet
+.B ] [
+.I \-v \-\-verbose
+.B [
+.I \-v \-\-verbose
+.B ]...] [
+.I \-m \-\-mktable
+.B ] [
+.I \-c \-\-clearcompose
+.B ] [
+.I \-s \-\-clearstrings
+.B ] [ filename... ]
+
+.SH "描述 (DESCRIPTION)"
+.IX "loadkeys command" "" "\fLloadkeys\fR command"  
+
+.B Loadkeys
+读取 由
+.I filename...
+指定的 文件 内容.
+它的 主要目的 是 为 控制台 调入 内核键盘映射表(kernel keymap).
+
+.SH "设为缺省 (RESET TO DEFAULT)"
+如果 指定了
+.I -d
+(或
+.I --default
+) 选项,
+.B loadkeys
+调入 缺省的 键盘映射 文件 
+.I defkeymap.map,
+可能 在
+.I /usr/share/keymaps
+或
+.IR /usr/src/linux/drivers/char 
+目录 下. (前者 可能是 用户定义的, 而 后者 是 针对 PC 机 qwerty 键盘 的 映射 
+\- 也许 你 不需要.) 某些情况下, 如果 遇上 奇怪的 键盘映射 (把 减号 '\-' 
+弄成了 某种 陌生的 修饰组合), 你 只要 轻松的 键入 `loadkeys defkeymap' 就
+可以了.
+
+(译注: qwerty 是一种常用的 PC 键盘布局, 由 键盘 字母区 左上角 的 连续
+横向 六个 字母键 得名)
+
+.SH "调入内核键盘映射 (KERNEL KEYMAP)"
+.B loadkeys
+的 主要作用 是 调入 或 修改 键盘驱动程序 的 翻译表.
+当 指出了 文件名 的 时候, 标准输入 用 短横线(\-) 表示. 如果 没有
+指出 文件名, loadkeys 就 从 标准输入 读取 数据.
+.LP
+对于 许多 国家 和 各种 键盘类型, 系统 已经 提供了 对应的 键盘映射表,
+只需 用一条 诸如 `loadkeys uk' 的 命令 就可以 满足 需要. 而且 很容易
+设计 自己的 键盘映射表. 用户 必须 识别 哪些 符号 属于 哪些 键.
+可以 用
+.BR showkey (1)
+命令 查出 键值(keycode), 手册页
+.BR keymaps (5)
+对 键盘映射表 格式 做了 说明, 也可以 参考
+.BR dumpkeys (1)
+命令 输出 的 内容.
+
+.SH "调入内核 ACCENT 表"
+如果 输入文件 没有 定义 任何 组合键(compose key), 内核 accent 表 就 
+保持 不变, 除非 使用了
+.I -c
+(或
+.I --clearcompose
+) 选项, 此时 内核 accent 表 被 清空. 如果 输入文件 定义了 组合键,
+那么 清除 原有 定义, 换成 新的 定义. 内核 accent 表 是 一组 表项
+(缺省为 68 项), 用来 描述 区分符(dead diacritical sign) 和 组合键 怎么 工作.
+例如, 这行
+.LP
+.RS
+compose ',' 'c' to ccedilla
+.RE
+.LP
+表示 <ComposeKey><,><c> 组合 产生 <ccedilla>.
+使用 命令 `dumpkeys \-\-compose\-only' 能够 查看 当前 accent 表.
+
+(译注: Compose 键 可以 用 dumpkeys 命令 查出, 我的 系统上 是 ctrl+句号,
+因此 相继 按下 'ctrl-.', ',', 'c' 就可以 产生 上述的 'ccedilla'.)
+
+.SH "调入内核字符串表 (KERNEL STRING TABLE)"
+选项
+.I -s
+(或
+.I --clearstrings
+) 用于 清除 内核字符串表. 如果 不使用 这个 选项,
+.B loadkeys
+只会 添加 或 调换 字符串, 而不是 清除 它们.
+(因而 需要 选项 \-s 实现 友好定义 状态.)
+内核字符串表 是 一组 命名 字符串, 就象 F31. 例如, 你 可以 使 功能键 F5
+(普通 PC 键盘上 有) 产生 字符串 `Hello!', 使 Shift+F5 产生 `Goodbye!':
+.LP
+.RS
+keycode 63 = F70 F71
+.br
+string F70 = "Hello!"
+.br
+string F71 = "Goodbye!"
+.RE
+.LP
+把 这三行 加进 键盘映射表 即可. 缺省的 功能键 定义 大多是
+来自 VT100 终端 的 转码序列 (escape sequence).
+
+.SH "创建内核源文件表 (KERNEL SOURCE TABLE)"
+如果 给出了
+.I -m
+(或
+.I --mktable
+) 选项, 
+.B loadkeys
+在 标准输出 产生 一个文件, 可以 用做
+.I /usr/src/linux\%/drivers\%/char\%/defkeymap.c,
+它 定义了 内核的 缺省 键盘编联 (但 不影响 当前 键盘映射).
+
+.SH "选项 (OPTION)"
+.TP
+.I \-h \-\-help
+在 标准错误 上 显示 版本号 和 简短 的 用法, 然后 结束.
+
+.TP
+.I \-v \-\-verbose
+显示 更新 细节, 用的越多, 细节越细.
+
+.TP
+.I \-q \-\-quiet
+不要 显示 一般信息.
+
+.TP
+.I \-c \-\-clearcompose
+清除 内核的 组合键表 (就是 accent 表). 如果 没有 使用 这个选项, 而且
+输入文件 没有 定义 组合键, 内核组合键表 保持 不变.
+
+.TP
+.I \-s  \-\-clearstrings
+清除 内核的 字符串表. 如果 没有 使用 这个选项,
+.B loadkeys
+将 添加 或 调换 字符串, 而不是 删除 它们.
+
+.SH "文件 (FILE)"
+.I /usr/lib/kbd/keymaps/
+键盘映射文件 的 缺省目录.
+
+.I /usr/lib/kbd/keymaps/defkeymap.kmap
+用
+.I \-d
+选项 调入的 缺省 键盘映射文件.
+(译注: 对于 比较 新的 系统 请查看 /usr/lib/kbd/keymaps/i386/qwerty/, 注意 
+这里 最后面的 两个 目录, 前者 是 系统平台, 后者 是 键盘类型)
+
+.SH BUGS
+任何人 只要有 对
+.I /dev/console
+的 读访问权 就能够 运行
+.B loadkeys ,
+从而 改变 键盘布局, 使 它 可能 无法使用. 键盘翻译表 由 所有 虚拟控制台
+共用, 所以 任何 对 键盘编联 的 改变 会 同时 影响 所有的 虚拟控制台.
+
+注意, 由于 改变 能够 影响 所有的 虚拟控制台, 因此 它 比 用户的 会话期 更长.
+这意味着 即使 在 登录 提示 阶段, 键值编联 也会 影响 用户 的 使用.
+
+缺省的 键盘映射 应该 编译在 内核中. (
+.IR /usr/src/linux/drivers/char/defkeymap.c
+).
+
+.SH "另见 (SEE ALSO)"
+.BR dumpkeys (1),
+.BR kbd_mode (1),
+.BR keymaps (5).
+
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/local.1 b/src/man1/local.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/local.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/lockfile.1 b/src/man1/lockfile.1
new file mode 100644
index 0000000..e95e764
--- /dev/null
+++ b/src/man1/lockfile.1
@@ -0,0 +1,196 @@
+.TH LOCKFILE 1 \*(Dt BuGless
+.SH NAME(名称)
+lockfile \- 条件标志文件创建命令
+.SH SYNOPSIS(总览)
+.B lockfile
+.I "\fB\-\fPsleeptime"
+|
+.I "\fB\-r \fPretries"
+|
+.if n .ti +0.5i
+.I "\fB\-l \fPlocktimeout"
+|
+.I "\fB\-s \fPsuspend"
+|
+.B "\-!"
+|
+.B "\-ml"
+|
+.B "\-mu"
+|
+.I filename
+\&.\|.\|.
+.SH DESCRIPTION(描述)
+
+.B lockfile可以用来创建一个或多个
+.I 信号量(semaphore)
+.IR 文件.如果lockfile不能创建所有指定的文件(按照指定的顺序),那么它会等待一段
+.I 休眠期(sleeptime) 
+(默认为8秒)并从不成功的最后一个文件开始重试.你可以指定失败返回之前
+.I 重试(retries)
+的次数.
+如果
+.I retries
+的次数设为\-1(默认地,也即
+.BR \-r\-1 )
+lockfile会永远重试下去.
+.PP
+如果在所有文件创建之前
+.I retries
+的次数已经满了,lockfile会返回失败的信息并删除所有已经创建的文件.
+.PP
+在shell脚本中使用lockfile作为循环的条件可以很容易地通过使用
+.B \-!
+标识反向退出的状态来实现.为了防止无限循环,除了lockfile已经存在以外的任何原因的失败都不会反向为成功状态,而是仍然以失败状态返回.
+.PP
+所有标识可以在命令行中的任何地方指定,碰到它们就进行处理.命令行简单地由左至右进行解析.
+.PP
+所有通过lockfile创建的文件都是只读的,因此必须使用
+.B rm
+.BR \-f
+来删除.
+.PP
+如果你指定了一个
+.I locktimeout
+那么lockfile会在lockfile最后一次修改/创建之后locktimeout秒过后强制性地删除(很可能是一些其它程序意外死掉很长一段时间后造成不能清除残余的lockfiles).Lockfile不受时钟偏差的影响.在lockfile强制被清除之后,延迟的
+.I suspend
+秒(默认为16)开始计数,这是为了防止无意的直接删除了任何由另一程序新创建的lockfile(与
+.BR procmail (1))
+中的
+.BR SUSPEND
+比较).
+.SS "Mailbox locks"(邮箱锁定)
+如果系统邮件spool目录有权限允许它,或者如果lockfile正好被setgid了,那么它可以通过
+使用相应的选项
+.B "\-ml"
+和
+.B "\-mu"
+lock和unlock你的系统邮箱.
+.SH EXAMPLES(示例)
+假设你想确定访问文件"important"是串行的,也即,没有其它程序或shell脚本允许访问它.为了简省起见,让我们假定它是一个shell脚本.在这个例子中,你应该像这样解决:
+.RS
+\&.\|.\|.
+lockfile important.lock
+\&.\|.\|.
+access_"important"_to_your_hearts_content
+\&.\|.\|.
+rm \-f important.lock
+\&.\|.\|.
+.RE
+现在如果所有访问"important"的脚本按照这条规则,你就可以确保在`lockfile'和`rm'命令之间至多只有一个脚本在执行.
+.SH ENVIRONMENT(环境变量)
+.TP 2.3i
+.B LOGNAME
+用作隐含变量以确定调用者的登录名
+.SH FILES(相关文件)
+.TP 2.3i
+.B /etc/passwd
+为了验证和/或纠正调用者的登录名(如果需要的话,同时也是为了找出HOME目录)
+.TP
+.B /var/spool/mail/$LOGNAME.lock
+系统邮箱的lockfile,出现在其中的环境变量不由系统的环境变量决定,而是会通过在/etc/passwd中查找确定.
+.SH "SEE ALSO"(另见)
+.na
+.nh
+.BR rm (1),
+.BR mail (1),
+.BR binmail (1),
+.BR sendmail (8),
+.BR procmail (1)
+.hy
+.ad
+.SH DIAGNOSTICS(诊断)
+.TP 2.3i
+Filename too long,.\|.\|.
+使用更短的文件名.
+.TP
+Forced unlock denied on "x"
+没有对lockfile "x"所存放的目录的写的权限,或者超过一个lockfile几乎同时正在试图强制lock.
+.TP
+Forcing lock on "x"
+lockfile "x"因为超时的缘故将要强制删除
+(与
+.BR procmail (1))
+中的
+.BR LOCKTIMEOUT
+作比较).
+.TP
+Out of memory,.\|.\|.
+系统交换空间溢出.
+.TP
+Signal received,.\|.\|.
+Lockfile将删除到此为止创建的所有文件并终止.
+.TP
+Sorry,.\|.\|.
+.I retries
+限制已经到达.
+.TP
+Truncating "x" and retrying lock
+"x"看上去不是有效的文件名.
+.TP
+Try praying,.\|.\|.
+缺失子目录或者权限不够.
+.SH BUGS
+确实少于一个.
+.SH WARNINGS(警告)
+.B \-!
+标识的操作行为,尽管有用,但是并不很直接或一致.当测试lockfile的返回值时,shell脚本编写者应该仔细考虑是使用
+.B \-!
+标识简单地作反向测试,还是对原来的退出代码执行一次转换.
+通常,
+.B \-!
+标识应该只用在lockfile是循环的条件之时.
+.SH MISCELLANEOUS(杂项)
+Lockfile不兼容NFS,而且八位还原.
+.SH NOTES(备注)
+使用\-h或\-?选项调用lockfile会使得它显示命令行方式的帮助页.使用\-v选项调用会使得它显示版本信息.
+.PP
+多个
+.B \-!
+标识会切换返回状态.
+.PP
+因为标识可以出现在命令行的任何位置,所以任何一个以'-'开头的文件名必须加'./"在前面.
+.PP
+当任何接在后面的文件正在创建(也即,它们正在使用)时,
+.I retries
+的次数不能重新设置.不过,它可以通过在命令行上指定
+.RI \-r newretries
+于每个文件之后来重新设置.
+.PP
+尽管任何名字的文件都可用作lockfiles,通常习惯还是使用扩展名为'.lock'的文件来lock邮件文件夹(它添加于邮件夹名之后).如果不想担心文件名太长了,也不必遵从任何其它的lockfilename的习惯,那么一个最好的方法就是通过添加前缀`lock.'来生成一个与已经存在的文件相应的lockfilename,并且在其后添加锁定文件的i-node数.
+.Sh SOURCE(源自)
+该程序为 http://www.procmail.org/或者
+ftp.procmail.org的
+.BR pub/procmail/
+中
+.I procmail mail-processing-package
+(v3.14)的一部分.
+.Sh MAILINGLIST(邮件列表)
+有一个针对procmail包中任何程序相关问题的邮件列表:
+.RS
+<procmail-users at procmail.org>
+.RS
+用来提交问题/答案.
+.RE
+<procmail-users-request at procmail.org>
+.RS
+用来请求订阅.
+.RE
+.PP
+.RE
+如果你想即时获得新版本和公开补丁的通告,请发订阅请求到
+.RS
+procmail-announce-request at procmail.org
+.RE
+(这是一个只读列表).
+.SH AUTHOR
+Stephen R. van den Berg
+.RS
+<srb at cuci.nl>
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/logname.1 b/src/man1/logname.1
new file mode 100644
index 0000000..fdc18fb
--- /dev/null
+++ b/src/man1/logname.1
@@ -0,0 +1,48 @@
+.TH LOGNAME "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+logname \- 显示用户登录名
+
+.SH "总览 (SYNOPSIS)"
+.B logname
+[\fIOPTION\fR]...
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+显示 当前用户 的 名字.
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束.
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束.
+
+.SH "报告 BUGS"
+发现 的 错误 送往 <bug-sh-utils at gnu.org>.
+
+.SH "另见 (SEE ALSO)"
+.B logname
+的 完整 文档 以 Texinfo 手册 的 形式 维护. 如果 正确 安装 了
+.B info
+和
+.B logname
+程序, 使用 命令
+.IP
+.B info logname
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/logout.1 b/src/man1/logout.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/logout.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/ls.1 b/src/man1/ls.1
new file mode 100644
index 0000000..2ace03e
--- /dev/null
+++ b/src/man1/ls.1
@@ -0,0 +1,327 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\"
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH LS 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+ls, dir, vdir \- 列目录内容
+
+.SH 提要
+ls [选项] [文件名...]
+.sp
+POSIX 标准选项:
+.B "[-CFRacdilqrtu1]"
+.SH GNU 选项 (短格式):
+.B [-1abcdfgiklmnopqrstuxABCDFGLNQRSUX"] 
+.B [-w cols] [-T cols] [-I pattern] 
+.B [--full-time]
+.B [--format={long,verbose,commas,across,vertical,single-column}] 
+.B [--sort={none,time,size,extension}]
+.B [--time={atime,access,use,ctime,status}]
+.B [--color[={none,auto,always}]] 
+.B [--help] 
+.B [--version] 
+.B [--]
+.SH 描述( DESCRIPTION )
+.br
+程序ls先列出非目录的文件项,然后是每一个目录中的
+.br
+“可显示”文件。如果没有选项之外的参数【译注:即
+.br
+文件名部分为空】出现,缺省为 "." (当前目录)。选
+.br
+项“ -d ”使得目录与非目录项同样对待。除非“ -a ”
+.br
+选项出现,文件名以“.”开始的文件不属“可显示”文
+.br
+件。
+
+.br
+以当前目录为准,每一组文件(包括非目录文件项,以及
+.br
+每一内含文件的目录)分别按文件名比较顺序排序。如果
+.br
+“ -l ”选项存在,每组文件前显示一摘要行——给出该
+.br
+组文件长度之和(以 512 字节为单位)。
+
+.br
+输出是到标准输出( stdout )。除非以“ -C ”选项要
+.br 
+求按多列输出,输出将是一行一个。然而,输出到终端时,
+.br
+单列输出或多列输出是不确定的。可以分别用选项“ -1 ”
+.br
+或“ -C ”来强制按单列或多列输出。
+.sp POSIX 选项
+.TP
+.B "\-C"
+多列输出,纵向排序。
+.TP
+.B "\-F"
+每个目录名加“ / ”后缀,每个 FIFO 名加“ | ”后缀,
+每个可运行名加“ * ”后缀。
+.TP
+.B "\-R"
+递归列出遇到的子目录。
+.TP
+.B "\-a"
+列出所有文件,包括以 "." 开头的隐含文件。
+.TP
+.B "\-c"
+使用“状态改变时间”代替“文件修改时间”为依据来排序
+(使用“ -t ”选项时)或列出(使用“ -l ”选项时)。
+.TP
+.B "\-d"
+将目录名象其它文件一样列出,而不是列出它们的内容。
+.TP
+.B "\-i"
+输出文件前先输出文件系列号(即 i 节点号— i-node number)。
+-l 列出(以单列格式)文件模式( file mode ),文件的链
+接数,所有者名,组名,文件大小(以字节为单位),时间信
+息,及文件名。缺省时,时间信息显示最近修改时间;可以以
+选项“ -c ”和“ -u ”选择显示其它两种时间信息。对于设
+备文件,原先显示文件大小的区域通常显示的是主要和次要的
+号(majorand minor device numbers)。
+.TP
+.B "\-q"
+将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)
+.TP
+.B "\-r"
+逆序排列。
+.TP
+.B "\-t"
+按时间信息排序。
+.TP
+.B "\-u"
+使用最近访问时间代替最近修改时间为依据来排序(使用
+“ -t ”选项时)或列出(使用“ -l ”选项时)。
+.TP
+.B "\-1" 单列输出。
+.SH GNU 细节
+如果标准输出是终端,将多列输出(纵向排序)。
+.TP
+dir ( 也被安装为命令 d ) 等同于“ ls -C ”;即,文件
+缺省是多列输出,纵向排序。vdir ( 也被安装为命令 v )
+等同于“ ls -l ”; 即,文件缺省是按长格式输出。
+.SH GNU 选项
+.B "-1, --format=single-column"
+一行输出一个文件(单列输出)。如标准输出不是到终端,
+此选项就是缺省选项。
+.TP
+.B "-a, --all"
+列出目录中所有文件,包括以“.”开头的文件。
+.TP
+.B "-b, --escape"
+把文件名中不可输出的字符用反斜杠加字符编号(就象在 C
+语言里一样)的形式列出。
+.TP
+.B "-c, --time=ctime, --time=status"
+按文件状态改变时间(i节点中的ctime)排序并输出目录内
+容。如采用长格式输出(选项“-l”),使用文件的状态改
+变时间取代文件修改时间。【译注:所谓文件状态改变(i节
+点中以ctime标志),既包括文件被修改,又包括文件属性(
+如所有者、组、链接数等等)的变化】
+.TP
+.B "-d, --directory"
+将目录名象其它文件一样列出,而不是列出它们的内容。
+.TP
+.B "-f"
+不排序目录内容;按它们在磁盘上存储的顺序列出。同时启
+动“ -a ”选项,如果在“ -f ”之前存在“ -l ”、“ -
+-color ”或“ -s ”,则禁止它们。
+.TP
+.B "-g" 忽略,为兼容UNIX用。
+.TP
+.B "-i, --inode"
+在每个文件左边打印 i 节点号(也叫文件序列号和索引号—
+— file serial number and index number)。i节点号在每
+个特定的文件系统中是唯一的。
+.TP
+.B "-k, --kilobytes"
+如列出文件大小,则以千字节KB为单位。
+.TP
+.B "-l, --format=long, --format=verbose"
+除每个文件名外,增加显示文件类型、权限、硬链接数、所
+有者名、组名、大小( byte )、及时间信息(如未指明是
+其它时间即指修改时间)。对于6个月以上的文件或超出未来
+1 小时的文件,时间信息中的时分将被年代取代。
+
+每个目录列出前,有一行“总块数”显示目录下全部文件所
+占的磁盘空间。块默认是 1024 字节;如果设置了 POSIXLY_CORRECT
+的环境变量,除非用“ -k ”选项,则默认块大小是 512 字
+节。每一个硬链接都计入总块数(因此可能重复计数),这无
+疑是个缺点。
+.TP
+列出的权限类似于以符号表示(文件)模式的规范。但是 ls
+在每套权限的第三个字符中结合了多位( multiple bits )
+的信息,如下:
+s 如果设置了 setuid 位或 setgid 位,而且也设置了相应的可执行位。
+S 如果设置了 setuid 位或 setgid 位,但是没有设置相应的可执行位。
+t 如果设置了 sticky 位,而且也设置了相应的可执行位。
+T 如果设置了 sticky 位,但是没有设置相应的可执行位。
+x 如果仅仅设置了可执行位而非以上四种情况。
+- 其它情况(即可执行位未设置)。
+.TP
+.B "-m, --format=commas"
+水平列出文件,每行尽可能多,相互用逗号和一个空格分隔。
+.TP
+.B "-n, --numeric-uid-gid"
+列出数字化的 UID 和 GID 而不是用户名和组名。
+.TP
+.B "-o"
+以长格式列出目录内容,但是不显示组信息。等于使用“ --format=long 
+--no-group ”选项。提供此选项是为了与其它版本的 ls 兼容。
+.TP
+.B "-p"
+在每个文件名后附上一个字符以说明该文件的类型。类似“ -F ”选项但是不
+标示可执行文件。
+.TP
+.B "-q, --hide-control-chars"
+用问号代替文件名中非打印的字符。这是缺省选项。
+.TP
+.B "-r, --reverse"
+逆序排列目录内容。
+.TP
+.B "-s, --size"
+在每个文件名左侧输出该文件的大小,以 1024 字节的块为单位。如果设置了
+POSIXLY_CORRECT 的环境变量,除非用“ -k ”选项,块大小是 512 字节。
+.TP
+.B "-t, --sort=time"
+按文件最近修改时间( i 节点中的 mtime )而不是按文件名字典序排序,新文件
+靠前。
+.TP
+.B "-u, --time=atime, --time=access, --time=use"
+类似选项“ -t ”,但是用文件最近访问时间( i 节点中的 atime )取代文件修
+改时间。如果使用长格式列出,打印的时间是最近访问时间。
+.TP
+.B "-w, --width cols"
+假定屏幕宽度是 cols ( cols 以实际数字取代)列。如未用此选项,缺省值是这
+样获得的:如可能先尝试取自终端驱动,否则尝试取自环境变量 COLUMNS (如果设
+置了的话),都不行则取 80 。
+.TP
+.B "-x, --format=across, --format=horizontal"
+多列输出,横向排序。
+.TP
+.B "-A, --almost-all"
+显示除 "." 和 ".." 外的所有文件。
+.TP
+.B "-B, --ignore-backups"
+不输出以“ ~ ”结尾的备份文件,除非已经在命令行中给出。
+.TP
+.B "-C, --format=vertical"
+多列输出,纵向排序。当标准输出是终端时这是缺省项。使用命令名 dir 和 d 时,
+则总是缺省的。
+.TP
+.B "-D, --dired"
+当采用长格式(“ -l ”选项)输出时,在主要输出后,额外打印一行:
+//DIRED// BEG1 END1 BEG2 END2 ...
+.TP
+BEGn 和 ENDn 是无符号整数,记录每个文件名的起始、结束位置在输出中的位置(
+字节偏移量)。这使得 Emacs 易于找到文件名,即使文件名包含空格或换行等非正
+常字符也无需特异的搜索。
+.TP
+如果目录是递归列出的(“ -R ”选项),每个子目录后列出类似一行:
+//SUBDIRED// BEG1 END1 ...
+【译注:我测试了 TurboLinux4.0 和 RedHat6.1 ,发现它们都是在
+“ //DIRED// BEG1... ”之后列出“ //SUBDIRED// BEG1 ... ”,也即只有一个
+而不是在每个子目录后都有。而且“ //SUBDIRED// BEG1 ... ”列出的是各个子目
+录名的偏移。】
+.TP
+.B "-F, --classify, --file-type"
+在每个文件名后附上一个字符以说明该文件的类型。“ * ”表示普通的可执行文件;
+“ / ”表示目录;“ @ ”表示符号链接;“ | ”表示FIFOs;“ = ”表示套接字
+(sockets) ;什么也没有则表示普通文件。
+.TP
+.B "-G, --no-group"
+以长格式列目录时不显示组信息。
+.TP
+.B "-I, --ignorepattern"
+除非在命令行中给定,不要列出匹配 shell 文件名匹配式( pattern ,不是指一般
+表达式)的文件。在 shell 中,文件名以 "." 起始的不与在文件名匹配式 (pattern)
+开头的通配符匹配。
+.TP
+.B "-L, --dereference"
+列出符号链接指向的文件的信息,而不是符号链接本身。
+.TP
+.B "-N, --literal"
+不要用引号引起文件名。
+.TP
+.B "-Q, --quote-name"
+用双引号引起文件名,非打印字符以 C 语言的方法表示。
+.TP
+.B "-R, --recursive"
+递归列出全部目录的内容。
+.TP
+.B "-S, --sort=size"
+按文件大小而不是字典序排序目录内容,大文件靠前。
+.TP
+.B "-T, --tabsize cols"
+假定每个制表符宽度是 cols 。缺省为 8。为求效率, ls 可能在输出中使用制表符。
+若 cols 为 0,则不使用制表符。
+.TP
+.B "-U, --sort=none"
+不排序目录内容;按它们在磁盘上存储的顺序列出。(选项“ -U ”和“ -f ”的不
+同是前者不启动或禁止相关的选项。)这在列很大的目录时特别有用,因为不加排序
+能显著的加快速度。
+.TP
+.B "-X, --sort=extension"
+按文件扩展名(由最后的 "." 之后的字符组成)的字典序排序。没有扩展名的先列
+出。
+.TP
+.B "--color[=when]"
+指定是否使用颜色区别文件类别。环境变量 LS_COLORS 指定使用的颜色。如何设置
+这个变量见 dircolors(1) 。 when 可以被省略,或是以下几项之一:
+.TP
+none 不使用颜色,这是缺省项。
+auto 仅当标准输出是终端时使用。
+always 总是使用颜色。指定 --color 而且省略 when 时就等同于 --color=always 。
+.TP
+.B "--full-time"
+列出完整的时间,而不是使用标准的缩写。格式如同 date(1) 的缺省格式;此格式
+是不能改变的,但是你可以用 cut(1) 取出其中的日期字串并将结果送至命令
+“ date -d ”。
+.TP
+输出的时间包括秒是非常有用的。( Unix 文件系统储存文件的时间信息精确到秒,
+因此这个选项已经给出了系统所知的全部信息。)例如,当你有一个 Makefile 文件
+不能恰当的生成文件时,这个选项会提供帮助。
+.SH GNU 标准选项
+.TP
+.B "--help"
+打印用法信息到标准输出并顺利退出。
+.TP
+.B "--version"
+打印版本信息到标准输出并顺利退出。
+.TP
+.B "--"
+结束选项表。
+.SH 环境
+变量 POSIXLY_CORRECT 可以决定一组选择。如果没有设置此变量,每个制表符的字
+符数由变量 TABSIZE 决定。变量 COLUMNS (当它由一个十进制整数表示时)决定输
+出的列宽度(同“ -C ”选项一起用时)。文件名不得为适应多列输出而被截断。变
+量 LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES 及 LC_TIME 仍保持原义。
+变量 TZ 给出时区供 ls 输出相应的时间字串。变量 LS_COLORS 用以决定是否使用
+颜色。 
+.SH 已知错误
+在 BSD 系统上,对于从 HP-UX 系统上通过 NFS mount 而来的文件,“ -s ”选项报
+告的大小只有正确值的一半;在 HP-UX 系统上,对于从 BSD 系统上通过 NFS mount 
+而来的文件, ls 报告的大小则有正确值的两倍。这是 HP-UX 的一个缺陷造成的,它
+也影响 HP-UX 上的 ls 程序。
+.SH 适合到
+POSIX 1003.2
+.SH 参见
+dircolors(1)
+.SH 注意
+本页描述的是 fileutils-3.16 文件包中的 ls ,其它版本的可能略有不同。纠错或添
+加(功能)请 mailto: aeb at cwi.nlaw at mail1.bet1.puv.fi+ragnar at lightside.ddns.org 。本程序的错误报告请 mailto:
+fileutils-bugs at gnu.ai.mit.edu 。 
+
+.SH "[中文版维护人]"
+.B wangdong <wangdong at 163.net>
+.SH "[中文版最新更新]"
+.B 2003.11.22
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/lsattr.1 b/src/man1/lsattr.1
new file mode 100644
index 0000000..385e269
--- /dev/null
+++ b/src/man1/lsattr.1
@@ -0,0 +1,52 @@
+.\" -*- nroff -*-
+.TH LSATTR 1 "1999年11月" "E2fsprogs version 1.18"
+.SH NAME(名称)
+lsattr \- 显示文件在Linux第二扩展文件系统上的特有属性
+.SH SYNOPSIS(总览)
+.B lsattr
+[
+.B \-RVadv
+]
+[
+.I files...
+]
+.SH DESCRIPTION(描述)
+.B lsattr
+显示文件在Linux第二扩展文件系统上的特有属性
+.SH OPTIONS(选项)
+.TP
+.B \-R
+递归地列出目录以及其下内容的属性.
+.TP
+.B \-V
+显示程序版本.
+.TP
+.B \-a
+列出目录中的所有文件,包括以`.'开头的文件的属性.
+.TP
+.B \-d
+以列出其它文件的方式那样列出目录的属性,
+而不列出其下的内容.
+.TP
+.B \-v
+显示文件版本.
+.SH AUTHOR(作者)
+.B lsattr
+的作者是Remy Card <card at masi.ibp.fr>,
+他是ext2 fs的开发和维护者.
+.SH BUGS
+没有:-).
+.SH AVAILABILITY(怎样获取)
+.B lsattr
+是e2fsprogs包的一部分,你可以通过
+对tsx-11.mit.edu的匿名ftp访问在
+/pub/linux/packages/ext2fs下找到它.
+.SH SEE ALSO(另见)
+.BR chattr (1)
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mail.1 b/src/man1/mail.1
new file mode 100644
index 0000000..e0a782c
--- /dev/null
+++ b/src/man1/mail.1
@@ -0,0 +1,924 @@
+.\"     $OpenBSD: mail.1,v 1.5 1994/06/29 05:09:32 deraadt Exp $
+.\" Copyright (c) 1980, 1990, 1993
+.\"     The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"     This product includes software developed by the University of
+.\"     California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     from: @(#)mail.1        8.2 (Berkeley) 12/30/93
+.\"
+.Dd 1993年12月30日
+.Dt MAIL 1
+.Os BSD 4
+.Sh NAME(名称)
+.Nm mail
+.Nd 发送和接收邮件
+.Sh SYNOPSIS(总览)
+.Nm mail
+.Op Fl iInv
+.Op Fl s Ar subject
+.Op Fl c Ar cc-addr
+.Op Fl b Ar bcc-addr
+.Ar to-addr...
+.Nm mail
+.Op Fl iInNv
+.Fl f
+.Op Ar name
+.Nm mail
+.Op Fl iInNv
+.Op Fl u Ar user
+.Sh INTRODUCTION(介绍)
+.Nm Mail
+是一个智能化的邮件处理系统,它具有
+.Xr \&ed 1
+的命令语法回忆功能,只是用消息替换了行罢了.
+.Pp
+.Bl -tag -width flag
+.It Fl v
+详尽模式.
+传输邮件的细节都呈现在用户的终端上.
+.It Fl i
+忽略tty中断信号.
+这对于在嘈杂的电话线路上使用
+.Nm mail
+特别有用.
+.It Fl I
+强迫mail以交互模式运行,即使其不是通过终端输入的.
+特别地,正在发送邮件时,
+.Sq Ic \&~
+特殊字符只在交互模式下才起作用.
+.It Fl n
+禁止在启动时读取
+.Pa /etc/mail.rc
+.It Fl N
+当阅读邮件或编辑邮件夹时禁止消息头的初始化显示.
+.It Fl s
+在命令行上指定主题(仅把
+.Fl s
+标识后的第一个参数用作主题;注意对包含空格的主题加上引号.)
+.It Fl c
+发送复件(carbon copy)给用户
+.Ar list
+.It Fl b
+发送隐藏的复写副本(blind carbon copy)给用户
+.Ar list .
+list应为以逗号分隔的名字列表.
+.It Fl f
+读入你的
+.Ar mbox
+(或指定文件)
+中的内容进行处理;当你
+.Ar quit
+时,
+.Nm mail
+会把未删除的消息写回该文件.
+.It Fl u
+相当于:
+.Pp
+.Dl mail -f /var/spool/mail/user
+.El
+.Ss Sending mail(发送邮件)
+要发送一条消息给一个或更多的人,
+.Nm mail
+可以以邮件将要发送的人名作为参数进行调用.
+然后要求你输入你的消息,并在每行的开头跟着
+一个
+.Sq Li control\-D
+下面的部分
+.Ar Replying to or originating mail ,
+描述了一些
+.Nm mail
+用于帮助你操作信件的功能.
+.Pp
+.Ss Reading mail(阅读邮件)
+在一般的用法中
+.Nm mail
+不带任何参数,并通过邮局(post office)检查你的邮件,然后对于每条找到的消息打印出一个
+行头.当前的消息初始为第一条消息(序号1),而且可以使用
+.Ic print
+命令(可简省为
+.Ql Ic p )
+打印.
+你可以使用命令
+.Ql Ic \&+
+和
+.Ql Ic \&\-
+如在
+.Xr \&ed 1
+的各行间移动一样前后移动消息,或者移动到一个简单的序号.
+.Pp
+.Ss Disposing of mail(丢弃邮件).
+在检查了消息之后,你可以
+.Ic delete
+.Ql Ic d )
+这条消息或者
+.Ic reply
+.Ql Ic r )
+它.
+删除会导致
+.Nm mail
+程序遗忘该条消息.
+这并非不能撤销;可以通过给定其序号来
+.Ic undeleted
+.Ql Ic u )
+该条消息,或者
+通过指定
+.Ic exit
+.Ql Ic x )
+命令来终止
+.Nm mail
+的会话.
+不过,删除了的消息就会永远消失不再出现.
+.Pp
+.Ss Specifying messages(指定消息)
+命令如
+.Ic print
+和
+.Ic delete
+可以给定一组消息的序号作为参数来一次性对这组消息进行操作.
+所以,
+.Dq Li delete 1 2
+会删除消息1和2,而
+.Dq Li delete 1\-5
+会删除消息1到5.
+特殊名字
+.Ql Li \&*
+表示所有消息,而
+.Ql Li \&$
+表示最后一条消息;因此用来打印一条消息的首几行的命令
+.Ic top
+可用在
+.Dq Li top \&*
+中以打印所有消息的首几行.
+.Pp
+.Ss Replying to or originating mail(回复或发送邮件).
+你可以使用
+.Ic reply
+命令来回复一条消息,将它发送回消息的发送者.
+你输入的一直到文末的文本定义了该条消息的内容.
+当你正在操作一条消息时,
+.Nm mail
+处理以字符
+.Ql Ic \&~
+开头的行会有些特殊.
+例如,输入
+.Ql Ic \&~m
+(这一行就这么一句)会放置一个当前消息的拷贝到回复中,其可以通过tabstop右移位(参见下
+面的
+.Em indentprefix
+变量).
+其它扩展符可用来设置主题字段,添加和删除消息的收件人,并且允许你返回编辑器来修改消
+息,或者用shell执行某些命令.
+(这些选项都在下面的summary中给定.)
+.Pp
+.Ss Ending a mail processing session(终止邮件处理会话).
+你可以使用
+.Ic quit
+.Ql Ic q )
+命令来终止
+.Nm mail
+会话.
+检查了的邮件会转到你的
+.Ar mbox
+文件,除非它们因为删除而被丢弃了.
+未检查的邮件则返回到邮局.
+(参见上面的
+.Fl f
+选项).
+.Pp
+.Ss Personal and systemwide distribution lists(个人和系统的发送列表).
+可以创建个人的发送列表,这样,例如你发送邮件到
+.Dq Li cohorts
+时,即可发送它给一组人.
+这样的列表可以通过在你home目录下的文件
+.Pa \&.mailrc
+中放置如下一行:
+.Pp
+.Dl alias cohorts bill ozalp jkf mark kridle at ucbcory
+.Pp
+来实现.
+这类别名的当前列表可以使用
+.Nm mail
+中的
+.Ic alias
+命令来显示.
+系统级的发送列表可以通过编辑
+.Pa /etc/aliases
+来创建,参看
+.Xr aliases  5
+和
+.Xr sendmail  8  ;
+这些具有不同的语法.
+在你发送的邮件中,私有别名会在发送给其他人的邮件中展开,这样他们就能够
+.Ic reply
+给收件人.
+系统级的
+.Ic aliases
+在邮件发送时不会展开,但是当所有邮件通过
+.Xr sendmail
+时,任何返回机器的回复信都会展开系统级别名.
+.Pp
+.Ss Network mail(网络邮件)(ARPA,UUCP,Berknet)
+参见
+.Xr mailaddr 7
+以获知关于网络地址的描述.
+.Pp
+.Nm Mail
+可以在
+.Pa .mailrc
+文件中设置一些选项以改变其操作;因而
+.Dq Li set askcc
+会激活
+.Ar askcc
+功能.
+(这些选项都总结在下面.)
+.Sh SUMMARY(总结)
+(改编自`Mail Reference Manual')
+.Pp
+每条命令单独占一行,而且可能带有参数跟在命令字后.
+命令不需要完全输入 \- 使用第一个匹配输入前缀的命令.
+对于那些以消息列表作为参数的命令,如果没有给定消息列表,那么使用满足命令要求的下一
+条消息.
+如果当前消息之后没有任何消息,那么搜索继续向前进行.如果根本没有合适的消息,
+.Nm mail
+输出
+.Dq Li No applicable messages
+并且
+终止该命令.
+.Bl -tag -width delete
+.It Ic \&\-
+打印出接下来的消息.
+如果给定一个序号
+.Ar n
+作为参数,那么会转到
+.Ar n Ns 'th
+前面的消息并打印它.
+.It Ic \&?
+打印命令概要.
+.It Ic \&!
+执行后面跟着的shell命令
+(参看
+.Xr sh 1
+和
+.Xr csh 1 )
+.It Ic Print
+.Pq Ic P
+如同
+.Ic print
+一样,不过它还会打印出忽略的消息头字段.
+另见
+.Ic print ,
+.Ic ignore
+以及
+.Ic retain .
+.It Ic Reply
+.Pq Ic R
+回复信件给发送者.
+不回复给发送来的邮件中的其它收件人.
+.It Ic Type
+.Pq Ic T
+与
+.Ic Print
+命令一致.
+.It Ic alias
+.Pq Ic a
+不带参数,打印出所有当前定义的别名..
+带一个参数,打印该别名.
+带多于一个的参数,则创建一个新的别名或对老的进行修改,
+.It Ic alternates
+.Pq Ic alt
+如果你在数台机器上有账号.
+.Ic alternates
+命令很有用.它可以用来通知
+.Nm mail
+列出的地址实际都是你的.
+当你
+.Ic 回复
+消息时,
+.Nm mail
+就不会发送消息的拷贝到任何列在
+.Ic alternates
+列表中的地址.
+如果
+.Ic alternates
+命令未给定参数,那么显示当前alternate的名字.
+.It Ic chdir
+.Pq Ic c
+如果指定了的话,修改用户的工作目录为指定的目录.
+如果没有指定目录,那么修改为用户的登录目录.
+.It Ic copy
+.Pq Ic co
+.Ic copy
+命令与
+.Ic save
+一样,唯一的例外是当你退出时,它不会标明删除了的消息.
+.It Ic delete
+.Pq Ic d
+以消息列表作为参数,并且标明它们全部被删除.
+删除了的消息不会保存在
+.Ar mbox 
+中,
+也不会对大多数其它命令可用.
+.It Ic dp
+(也作
+.Ic dt )
+删除当前消息并打印下一条消息.
+如果没有下一条消息,
+.Nm mail
+输出
+.Dq Li "at EOF" .
+.It Ic edit
+.Pq Ic e
+读取一组消息,并把文本编辑器按序指向每条消息.
+在从编辑器返回时,消息会再读回.
+.It Ic exit
+.Pf ( Ic ex
+或者
+.Ic x )
+不修改用户的系统邮箱,他的
+.Ar mbox
+文件,或者在
+.Fl f  
+中的编辑文件而立即返回到shell.
+.It Ic file
+.Pq Ic fi
+与
+.Ic folder
+相同.
+.It Ic folders
+列出在你的邮件夹目录中的邮件夹名.
+.It Ic folder
+.Pq Ic fo
+.Ic folder
+命令用来转到一个新的邮件文件或文件夹.
+不带参数时,它会告知你当前在阅读的文件.
+如果你给定了一个参数,它会在当前文件中写完你刚作的修改(例如删除)并读入新的文件.
+对名字有一些特别的约定.
+#表示前一个文件, %表示你的系统邮箱, %user表示user的系统邮箱, &表示你的
+.Ar mbox
+文件,而
+\&+\&folder表示在你的folder目录中的一个文件.
+.It Ic from
+.Pq Ic f
+读取一组消息并打印出其消息头.
+.It Ic headers
+.Pq Ic h
+显示消息头的当前范围,这是一个18\-消息组.
+如果
+给定了一个
+.Ql \&+
+参数,那么会打印下一个18\-消息组,而如果给定了一个
+.Ql \&\-
+参数,那么会打印前一个18\-消息组.
+.It Ic help
+与
+.Ic \&?
+同义.
+.It Ic hold
+.Pf ( Ic ho ,
+也作
+.Ic preserve )
+读取一个消息列表,并标记其中的每条消息保存到用户的系统邮箱中,而非
+.Ar mbox
+中.
+这不会覆盖
+.Ic delete
+命令.
+.It Ic ignore
+添加一列消息头字段到
+.Ar ignored list
+中.
+当你打印一条消息时,在ignore list中的消息头字段不会在你的终端上打印出来.
+这条命令对于抑制特定的机器生成的消息头字段很方便.
+.Ic Type
+和
+.Ic Print
+命令可以用来完整地打印一条消息,包括忽略的字段.
+如果
+.Ic ignore
+不带任何参数执行,它会列出当前设置的忽略的字段.
+.It Ic mail
+.Pq Ic m
+以登录名和发送组名作为参数并发送邮件给这些人.
+.It Ic mbox
+标明当你退出时,消息列表会发送到你的home目录下的
+.Ic mbox
+中.
+如果你
+.Em 没有
+设置
+.Ic hold
+选项,这就是消息默认的操作行为.
+.It Ic next
+.Pq Ic n
+类似
+.Ic \&+
+或
+.Tn CR )
+转到按序的下一条消息并输出它.
+如果带了参数列表,则输出下一个匹配的消息.
+.It Ic preserve
+.Pq Ic pre
+与
+.Ic hold
+同义.
+.It Ic print
+.Pq Ic p
+读取消息列表,并在用户终端上输出每条消息.
+.It Ic quit
+.Pq Ic q
+终止会话,保存所有未删除而且未保存的消息到用户的登录目录下的
+.Ar mbox
+文件中,并保留所有使用
+.Ic hold
+或者
+.Ic preserve
+标记或者从未关联的消息到他的系统邮箱中,另外从他的系统邮箱中删除所有其它消息.
+如果新的邮件在这次会话中到达,会给出
+.Dq Li "You have new mail"
+消息.
+如果在编辑邮箱文件时指定了
+.Fl f
+标识,那么编辑的文件会重写.
+返回到Shell会受影响,除非编辑文件的重写失败,在这种情况下,用户可以使用
+.Ic exit
+命令退出.
+.It Ic reply
+.Pq Ic r
+读取消息列表并发送邮件给发送者和指定消息的所有收件人.
+默认消息不能够删除.
+.It Ic respond
+与
+.Ic reply
+同义.
+.It Ic retain
+添加消息头字段列表到
+.Ar retained list
+中.
+只有在retain list中的消息头字段才会在你打印一条消息时显示在你的终端上.
+所有其它消息头字段都抑制了.
+.Ic Type
+和
+.Ic Print
+命令可以用来完整地打印一条消息.
+如果
+.Ic retain
+不带任何参数执行,它会列出保留字段(retained field)的当前设置.
+.It Ic save
+.Pq Ic s
+读取一个消息列表和一个文件名,并按序添加每条消息到该文件末尾.
+文件名应以加引号,后面跟着回应到用户终端上的行数和字符数.
+.It Ic set
+.Pq Ic se
+如果不带任何参数,打印所有变量值.
+否则,设置选项.
+参数为以下格式:
+.Ar option=value
+(在=前后都没有空格)或者
+.Ar option .
+引号标记可能需要放到赋值语句的任何部分以括起空格或者退格符,也即
+.Dq Li "set indentprefix=\*q->\*q"
+.It Ic saveignore
+.Ic Saveignore
+用来
+.Ic save
+.Ic ignore
+的内容并
+.Ic print
+和
+.Ic type .
+这样标记的消息头字段当通过
+.Ic save
+保存消息或者当自动保存到
+.Ar mbox
+中时会过滤掉.
+.It Ic saveretain
+.Ic Saveretain
+用来
+.Ic save
+.Ic retain
+中的内容,并
+.Ic print
+和
+.Ic type .
+这样标记的消息头字段当通过
+.Ic save
+保存消息或者当自动保存到
+.Ar mbox
+中时会过滤掉.
+.Ic Saveretain
+覆盖
+.Ic saveignore .
+.It Ic shell
+.Pq Ic sh
+调用shell的交互式版本.
+.It Ic size
+读取一组消息并打印出每条消息按字符的大小.
+.It Ic source
+.Ic source
+命令从一个文件读取命令.
+.It Ic top
+读取一组消息并打印每条消息的头几行.
+打印的行数通过变量
+.Ic toplines
+控制,默认为5行.
+.It Ic type
+.Pq Ic t
+与
+.Ic print
+同义.
+.It Ic unalias
+读取一列由
+.Ic alias
+命令定义的名字并丢弃已有的用户组.
+组名将不再有任何作用.
+.It Ic undelete
+.Pq Ic u
+读取一列消息并标记每条消息为
+.Ic 未
+删除.
+.It Ic unread
+.Pq Ic U
+读取一列消息并标记每条消息为
+.Ic 尚未
+阅读.
+.It Ic unset
+读取一列选项名并丢弃他们已有的值;
+这是
+.Ic set
+的反向操作.
+.It Ic visual
+.Pq Ic v
+读取一列消息并对每条消息调用显示的编辑器.
+.It Ic write
+.Pq Ic w
+与
+.Ic save
+相似,不同之处在于
+.Ic 只保存
+消息体而
+.Pq Ar 不保存
+消息头).
+这对于通过消息系统发送和接收源程序文本的情况有很大的用处.
+.It Ic xit
+.Pq Ic x
+与
+.Ic exit
+同义.
+.It Ic z
+.Nm Mail
+表示当消息头的窗口满了时,如在
+.Ic headers
+命令中描述的那样显示.
+你可以使用
+.Ic \&z
+命令移动
+.Nm mail Ns 's
+通告到下一个窗口.
+同样,你也可以通过使用
+.Ic \&z\&\-
+移动到前一个窗口.
+.El
+.Ss Tilde/Escapes(代字符/扩展符)
+.Pp
+以下是对tilde escapes的归纳,这用于操作消息以执行特殊的功能.
+Tilde escapes只在行首被承认.
+名字
+.Dq Em tilde\ escape
+可能有些用词不当,因为实际的escape字符可通过选项
+.Ic escape
+设置.
+.Bl -tag -width Ds
+.It Ic \&~! Ns Ar command
+执行指定的shell命令,然后返回消息.
+.It Ic \&~b Ns Ar name ...
+添加给定名字到复制(carbon copy)的收件人列表中,但是不在Cc:行中显示出来("blind" ca
+rbon copy).
+.It Ic \&~c Ns Ar name ...
+添加给定名字到复制(carbon copy)的收件人列表中.
+.It Ic \&~d
+从你的home目录中读取文件
+.Dq Pa dead.letter
+到消息中.
+.It Ic \&~e
+对当前收集的消息调用文本编辑器.
+在编辑完成之后,你可以继续在消息中添加文本.
+.It Ic \&~f Ns Ar messages
+读取命名的messages到将要发送的消息中.
+如果没有指定messages,那么就读取当前消息.
+当前被忽略(通过
+.Ic ignore
+或者
+.Ic retain
+命令)的消息头不包括在内.
+.It Ic \&~F Ns Ar messages
+类似于
+.Ic \&~f,
+不过这包括了所有的消息头.
+.It Ic \&~h
+通过逐一输入的方式编辑消息头字段,并且允许用户添加文本到消息的末尾或者通过使用当前
+终端的消除和抹掉字符来修改字段.
+.It Ic \&~m Ns Ar messages
+读取命名的messages到将要发送的消息中,以tab或者
+.Ar indentprefix
+的值交错.
+如果没有指定messages,则读取当前消息.
+当前被忽略(通过
+.Ic ignore
+或者
+.Ic retain
+命令)的消息头不包括在内.
+.It Ic \&~M Ns Ar messages
+类似于
+.Ic \&~m,
+不过这包括了所有的消息头.
+.It Ic \&~p
+打印出当前收集的消息,以消息头字段开始.
+.It Ic \&~q
+放弃发送消息,如果设置了
+.Ic save ,
+则复制消息到你home目录下的
+.Dq Pa dead.letter
+中.
+.It Ic \&~r Ns Ar filename
+读取指定的file到消息中.
+.It Ic \&~s Ns Ar string
+使得指定的string成为当前的主题字段.
+.It Ic \&~\&t Ns Ar name ...
+添加给定的name到直接的收件人列表中.
+.It Ic \&~\&v
+对当前收集的消息调用后备的编辑器(由
+.Ev VISUAL
+选项定义).
+通常,备用的编辑器是屏幕编辑器.
+你退出编辑器后,你可以继续在消息的末尾添加文本.
+.It Ic \&~w Ns Ar command
+使消息通过command的过滤.
+如果command没有输出或者反常地终止,则会保留消息的原始文本.
+命令
+.Xr fmt 1
+经常用作
+.Ic command
+来重新验证消息.
+.It \&~: Ns Ar mail-command
+执行给定的mail command.
+但是,不是所有命令都允许的.
+.It Ic \&~ Ns Ar string
+插入文本string到消息中,前面以单个的~开头.
+如果你已经修改了escape字符,那么你应该重复这个字符以发送它.
+.El
+.Ss Mail Options(邮件选项)
+选项通过
+.Ic set
+和
+.Ic unset
+命令控制.
+选项可以是二进制的,在这种情况下,只对它们是否设置了有意义;或者是字符串,这种情况下
+的实际值才有意义.
+二进制选项包括以下一些:
+.Bl -tag -width append
+.It Ar append
+使得保存在
+.Ar mbox
+中的消息添加到末尾而不是加到前面.
+这通常是应该设置的(也许在
+.Pa /etc/mail.rc
+中)
+.It Ar ask, asksub
+使得
+.Nm mail
+提示你输入发送的每条消息的主题.
+如果你用一个简单的换行符应答,则发送无主题的字段.
+.It Ar askcc
+提示你输入附加的复写(carbon copy)的收件人在每条消息之后.
+以换行符回应表示你满意当前的列表.
+.It Ar askbcc
+提示你输入附加的隐藏的复写(blind carbon copy)的收件人在每条消息之后.
+以换行符回应表示你满意当前的列表.
+.It Ar autoprint
+使得
+.Ic delete
+命令如
+.Ic dp
+一样.
+\- 这样,在删除一条消息之后,下一条消息会自动输出.
+.It Ar debug
+设置二进制选项
+.Ar debug
+与命令行上指定
+.Fl d
+一样,这会使得
+.Nm mail
+输出各种有用的信息来调试
+.Nm mail .
+.It Ar dot
+二进制选项
+.Ar dot
+使得
+.Nm mail
+解释一行只有单一的句点为你发送消息的结束.
+.It Ar hold
+该选项用来保存消息在默认的系统邮箱中.
+.It Ar ignore
+使得忽略来自终端的中断信号,并且以@'s响应.
+.It Ar ignoreeof
+一个与
+.Ar dot
+相关的选项就是
+.Ar ignoreeof ,
+它使得
+.Nm mail
+拒绝接受control-d为消息的结束.
+.Ar Ignoreeof
+同样也适用于
+.Nm mail
+命令模式.
+.It Ar metoo
+通常,当包括发送者的一组展开时,发送者会在展开中删除.
+设置该选项会使得发送者包括在组中.
+.It Ar noheader
+设置选项
+.Ar noheader
+与在命令行中指定
+.Fl N
+标识一样.
+.It Ar nosave
+正常情况下,当你使用
+.Tn RUBOUT
+(erase或者delete)
+中止一条消息时,
+.Nm mail
+会复制部分信件到你home目录下的文件
+.Dq Pa dead.letter
+中.
+设置二进制选项
+.Ar nosave
+可以阻止这么做.
+.It Ar Replyall
+颠倒
+.Ic reply
+和
+.Ic Reply
+命令的含义.
+.It Ar quiet
+当第一次调用时,禁止打印版本.
+.It Ar searchheaders
+如果设置了这个选项,那么在格式``/x:y''中的消息列表区分标志会对所有在头字段``x''中
+包含子字符串``y''的消息展开.字符串查找是区分大小写的.
+.It Ar verbose
+设置选项
+.Ar verbose
+与在字符行下使用
+.Fl v
+标识一样.
+当邮件运行在verbose模式时,
+实际传递的消息会显示在用户的终端上.
+.El
+.Ss Option String Values(选项字符串值)
+.Bl -tag -width Va
+.It Ev EDITOR
+在
+.Ic edit
+命令和
+.Ic \&~e
+扩展符中使用的文本编辑器的路径名.
+如果没有定义,那么使用默认的编辑器.
+.It Ev LISTER
+在
+.Ic folders
+命令中使用的目录浏览器的路径名.
+默认为
+.Pa /bin/ls .
+.It Ev PAGER
+在
+.Ic more
+命令或者当设置了
+.Ic crt
+变量时使用的程序的路径名.
+如果该选项没有定义,默认使用
+.Xr more 1 .
+.It Ev SHELL
+在
+.Ic \&!
+命令和
+.Ic \&~!
+扩展符中使用的shell的路径名.
+如果未定义该选项,则使用默认的shell.
+.It Ev VISUAL
+在
+.Ic visual
+命令和
+.Ic \&~v
+扩展符中使用的文本编辑器的路径名.
+.It Va crt
+赋值的选项
+.Va crt
+用作限额以决定一条消息在使用
+.Ev PAGER
+阅读它之前有多长.
+如果
+.Va crt
+没有赋值,那么保存在系统中的终端显示高度用来确定限额(参见
+.Xr stty 1 ) .
+.It Ar escape
+如果定义了,那么该选项的第一个字符给出扩展符中替换~的字符.
+.It Ar folder
+存储消息的文件夹的目录名.
+如果该名字以`/'开头,
+.Nm mail
+会把它当作绝对路径名;否则,文件目录相对于你的home目录查找.
+.It Ev MBOX
+.Ar mbox
+文件的名字.
+它可以为一个文件夹名.
+默认为在用户home目录下的
+.Dq Li mbox .
+.It Ar record
+如果定义了,指定用来存档所有外发邮件的文件的路径名.
+如果没有定义,那么外发邮件将不被保存.
+.It Ar indentprefix
+在``~m'' tilde escape中用作交错消息的字符串,替换一般情况下的tab字符(^I).
+如果其中包含了空格或者tab,确信对值加了引号.
+.It Ar toplines
+如果定义了,指定使用
+.Ic top
+命令打印的消息的行数;一般情况下,打印前5行.
+.El
+.Sh ENVIRONMENT(环境变量)
+.Nm Mail
+使用了
+.Ev HOME
+和
+.Ev USER
+环境变量.
+.Sh FILES(相关文件)
+.Bl -tag -width /usr/lib/mail.*help -compact
+.It Pa /var/spool/mail/*
+邮局.
+.It ~/mbox
+用户的老邮件.
+.It ~/.mailrc
+给定初始邮件命令的文件.
+.It Pa /tmp/R*
+临时文件.
+.It Pa /usr/lib/mail.*help
+帮助文件.
+.It Pa /etc/mail.rc
+系统初始化文件.
+.El
+.Sh SEE ALSO(另见)
+.Xr fmt 1 ,
+.Xr newaliases 1 ,
+.Xr vacation 1 ,
+.Xr aliases 5 ,
+.Xr mailaddr 7 ,
+.Xr sendmail 8
+和
+.Rs
+.%T "The Mail Reference Manual" .
+.Re
+.Sh HISTORY(历史)
+.Nm mail
+命令出现在
+.At v6 
+中.
+该man页源自
+.%T "The Mail Reference Manual"
+原作者为Kurt Shoens.
+.Sh BUGS
+有一些标识没有列在文档中.
+大多数对一般用户都是没有用处的.
+.\" 并非这个特定发布版本才有这种bug的情况.
+.\" 通常, .Nm mail只不过是到.Nm Mail的一个链接,这可能会引起混乱.
+.Sh "[中文版维护人]"
+riser <boomer at ccidnet.com>
+.Sh "[中文版最新更新]"
+2001/08/08
+.Sh "《中国linux论坛man手册页翻译计划》:"
+http://cmpp.linuxforum.net
+.Pp
diff --git a/src/man1/mailto.1 b/src/man1/mailto.1
new file mode 100644
index 0000000..31156ce
--- /dev/null
+++ b/src/man1/mailto.1
@@ -0,0 +1,507 @@
+.TH MAILTO 1 "Release 1" "Bellcore Prototype"
+.SH NAME
+mailto - 简单多媒体邮件发送程序
+.SH SYNOPSIS
+.ta 8n
+\fBmailto\fP	[-a] [-c] [-s] [recipient name(s)]
+.br
+.SH DESCRIPTION
+.I mailto
+程序是一个用于发送MIME格式的多媒体邮件(MIME格式是Internet
+上多媒体邮件格式的推荐标准)的非常简单的用户接口. 该程序
+基本上按照Berkeley的"mail"程序构建, 但没有使用Berkeley 
+mail的任何代码, 而是完全重新实现. 
+
+如其名字所示, 
+.I 
+mailto
+仅用于
+.I 
+发送
+邮件, 而不能用来读取邮件. 
+在
+.I 
+mailto
+中并没有实现任何Berkeley mail的邮件阅读功能. 
+
+熟悉Berkeley mail 程序邮件发送命令的用户可以跳过下一小节, 
+其内容早已为你所熟悉. 更后面的部分的内容着重于mailto的
+增强的功能, 特别是包含复杂文本, 多媒体对象, 以及象希伯来语, 
+俄罗斯语这样的非ASCII 码文本, 正是这些特色使mailto区别于
+Berkeley mail程序.
+
+.SH BASIC USE基本用法
+[对于已经熟悉Berkeley mail程序的读者, 本部分可以略过]
+
+mailto的基本操作非常简单. 如果你只键入"mailto", 你会被要求
+给出一个收件人列表("To:"),一个邮件主题("Subject:"), 以及可
+能的复件接收者列表("CC:").你也可以在命令行里给出这些参数, 
+"-s"选项用于指定主题, "-c"选项指明复件接受地址. 其它的命令
+行参数都被加入到列表中. 下面的命令发送邮件给nsb和jxr, 邮件
+主题是"Test message", 附件发送给kraut: 
+
+mailto nsb jxr -s "Test message" -c kraut
+
+某些用户习惯以逗号分隔地址的邮件阅读器, 为方便这些用户, 也
+可以在每个地址后面跟一个逗号, 但这并不是必须的.
+
+完成这些预备工作后, 你可以开始键入你的信件内容. 你键入的任
+何东西都被包括在你的信件里, 除了以"~"(tilde)字符开头的行. 
+这样的行被看作TILDE ESCAPE, 用于向邮件程序发送特殊命令, 我
+们将马上讨论这种情况.
+
+当你完成了信件, 你只要简单地键入文尾字符 (通常是CONTRAL-D)
+就可以发送邮件给你指定的接收者. 依据选项设置的不同, 你也可
+以在单独一行键入"."或者"~."来发送邮件.
+
+这就是你用mailto发送邮件所需要知道的. 但是, 要想完全发挥它
+的功能, 还需学习一些关于tilde escape的东西. 在这一部分里, 
+我们将描述tilde escape最基本的内容, 这些内容是mailto程序与
+Berkeley mail 程序所共有的. 在更后面部分我们将描述最有趣, 
+同时也是
+.I mailto
+所独有的tilde escape.
+
+如果觉得这部分的内容费解的话, 参考mail(1) 程序的手册页将有
+助于理解, 实际上两者的用户接口是非常相似的.
+
+任何以tilde 开头的行都是tilde escape. 该行的第二个字符, 也
+就是紧跟在tilde 后面的, 就被解释作对mailto程序的一个特殊命
+令. mailto和mail所共有的简单tilde escape命令如下: 
+
+    ~? 显示tilde escape的帮助信息
+    ~! Shell escape (例如"~! ls")
+    ~~ 输入以tilde开头的文本行. tilde "引领"自身, 这样就可
+       以输入一个以tilde开头的文本行
+    ~. 发送邮件并退出
+    ~c 将其后内容加入到CC列表中(例如"~c nsb")
+    ~d 读入"~/dead.letter" 的内容(或者一个指定的文件, 例如
+       "~d filename")
+    ~e 用EDITOR环境变量所指定的编辑器编辑正在撰写的消息
+    ~h 编辑To, Subject, 以及CC信头
+    ~p 打印出到目前为止的消息所有内容
+    ~q 退出, 并将草稿存入~/dead.letter文件
+    ~r 将指定文件内容读入信件
+    ~s 重新设定subject信头
+    ~t 将其后内容加入到To列表
+    ~v 用VISUAL环境变量所指定的编辑器编辑正在撰写的消息
+    ~w 将正在撰写的消息写到指定文件(例如"~w filename")
+
+还可以在你的home目录下的".mailrc" 文件里加入命令, 以此在一
+定程度上控制mailto程序的行为. 这些命令包括为常用的邮件地址
+定义别名等. 详细内容可以参看本手册页后面以"MAILRC功能简介"
+命名的部分.
+
+.SH BERKELEY MAIL中缺少的增强功能
+
+mail与mailto的主要差别是后者可以生成MIME格式的增强邮件, 该
+格式是Internet下多媒体邮件格式的建议标准. 然而, mailto的意
+图是做成一个
+.I 非常简单
+的多媒体邮件生成器, 因而, 也就有很多
+事情是它所做不到的. 但是, 极度简单也正是它的优点, mailto还
+极其类似于众所周知的mail程序, 具有高度的可配置性. 我们将在
+下面描述mailto使用"mailcap" 文件进行配置的机制.
+
+mailto主要可以在邮件中包含下列内容: 
+
+1.  使用MIME的"text/richtext" 类型的简单格式化文本. 这使你
+可以在你的信件中用下划线, 粗体字, 斜体字(反相显示), 置中等
+诸如此类的手段来突出你的消息. 
+
+2.  非文本数据. Metamail可在任何邮件中包括图片, 声音, 以及
+其他非文本数据. mailcap配置机制甚至可使得该过程相当友好, 
+而一个很了解mailto的用户在没有设置适当的mailcap条目的情况
+下也可以将非文本数据包含在邮件里.
+
+3.  含有非ASCII 字符的文本, 如希伯来语或俄罗斯语等. 到目前
+mailto直接支持的只有ISO-8859-*系列的字符集, 这意味着它不能
+满足亚洲用户的要求. 但是, 不能用ISO-8859系列表达的语言仍然
+可以用非文本数据的方式包括在邮件里.
+
+下面将分三个小节讨论各自讨论这三个机制.
+
+.SH 复杂文本
+
+Mailto使你可以用一些简单而有效的方法修改你的文本格式. 就象
+处理其他事情一样, 这也可以用一些简单的tilde escape办到, 列
+表如下: 
+
+    ~b 开关粗体模式(开或关粗体模式)
+    ~i 开关斜体模式(开或关 斜体/反相显示 模式)
+    ~j 改变对齐模式, 特别有:
+        ~jc 将后面的文本置中
+        ~jl 左对齐随后的文本
+        ~jr 右对齐随后的文本
+    ~k 决定是否保留信件的"盲"复件.
+    ~n 强制换行(硬断行)
+    ~u 开关下划线模式(开或关下划线模式)
+    ~> 左边缘缩进
+    ~< 取消左边缘缩进
+    ~<R 右边缘缩进
+    ~>R 取消左边缘缩进
+    ~Q 开关引用模式
+    ~z 将~/.signature的内容加为文本签名
+
+部分内容或许需要解释一下. 粗体, 斜体以及下划线方式可以分别
+使用~b, ~i及~u来交替开关. 另外, 对齐可以简单地在居中, 左对
+齐以及右对齐三种方式中切换. 
+
+要理解"~n"命令, 首先要注意到复杂文本是自动对齐的, 这意味着
+你键入的换行符号只不过是空格符. 这使得文本可以在不同宽度的
+窗口都很好的展示.(例外的情况是当你键入了多个空行, 这时换行
+符就起作用了.)"~n"命令就可以强制换行. 要记住你可以在任何时
+候用"~p"命令来看看你的邮件象什么样子.  
+
+通过"~Q"来切换的引用模式用于格式化引用. 比如, 你打开引用模
+式, 插入了一个文件, 然后退出引用模式, 插入文件的内容就作为
+一个引用. 大多数的浏览器都以缩排方式和(或)"> "居先引领的方
+式显示引用, 以此和正文的其它部分区别开来
+
+最后要说的是, "~z"命令可将你的签名文件简单地包括进邮件, 但在
+格式上显示出它是签名. 大多数复杂文本浏览器都会以较小的字体
+显示签名, 或者将它和你信件的其他部分分开些距离. 
+
+.SH 包含多媒体对象
+
+在mailto邮件里插入多媒体对象的基本命令是"~*". 当你键入该命
+令时, 你会得到一个选项列表, 该列表依赖于你配置的不同而不同
+(至于怎么配置该列表稍候将有描述). 下面是一个例子:
+
+ Please choose which kind of data you wish to insert:
+
+ 0: A raw file, possibly binary, of no particular data type.
+ 1: Raw data from a file, with you specifying the content-type by hand.
+ 1: An audio clip
+ 2: Data in 'application/andrew-inset' format
+ 3: An X11 window image dump
+ 4: An interactive mail-based survey
+
+这些选项中只有头两个(即选项0和1)在所有站点的配置中都出现.
+
+如果你选择了选项0或1, 你会被要求给出含有你想要包括的数据的
+文件. (如果你输入一些以"|"开头的命令, 那么你所要包括的就是
+命令的输出而不是文件的内容.) 如果你选择选项1, 你将被要求给
+出正确的"content-type"名字以说明数据类型. "content-type"的
+值是按MIME标准定义的, 典型地都是类型/子类型对的格式, 分别
+描述粗略的数据类型及其详细格式. 例如, 一个GIF 格式的图片其
+content-type是"image/gif", 而一个简单 u-law 格式的音频夹其
+content-type是"audio/basic". 对于选项0, 通常所使用的类型是
+"application/octet-stream".要得到content-type域的完全文档,
+请查阅推荐标准MIME, RFC1341.
+
+更常见的情形是你所在的是一个配置得很好的站点, 这样你就无需
+了解任何有关content-type的东西----你选择的将是一个非零项. 
+在这些情况下, 会运行一个程序使你可以处理给定类型的数据. 该
+进程的用户接口这里不描述, 因为这些接口通常都是与站点相关的, 
+但这样的程序通常都设计得即使是新手也能很容易就搞定.
+
+mailto中另外一个用于包括多媒体对象的命令是"~z"命令. 该命令
+可以用于包括多媒体签名文件, 这些签名文件应该是完全MIME格式
+的文件, 其顶部有一个content-type头域. 
+
+.SH 用MAILCAP文件作配置
+  
+注意: 本部分是写给那些想要扩展mailto的能力, 使其能轻易包括
+新文件类型的用户. 在一个管理得很好的站点上用户是不太可能需
+要经常做这些的, 管理员应该已经替你做好了.
+
+要得到更完全的mailcap 机制的说明, 可以参考metamail(1) 的手
+册页. 这里只是简略给出mailcap 文件中与mailto程序配置相关的
+方面. 
+
+首先, mailto依靠一个搜索路径去寻找mailcap 文件(组), 以其内
+容为参考. 不象大多数的路径搜索, mailto总是读完它搜索路径中
+.I 所有的
+mailcap 文件. 这就是说, 它将一直遍历完所有mailcap 
+文件, 搜集所有的mailcap 条目. 缺省的搜索路径是
+
+$HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
+
+可以通过设置MAILCAPS环境变量来覆盖该设置. 要注意的是mailto
+实际上并不解释搜索路径中象$HOME这样的环境变量, 也不对"~"语
+法作解释. 
+
+mailcap 文件的语法非常简单, 至少与termcap 文件相比是这样. 
+以"#" 开头的行都被看作注释, 空的行被忽略. 此外, 每行单独对
+一个content type定义一个mailcap 条目. 当有很长的行的时候, 
+就放一个反斜杠字符\\ 在行末以续行. 
+
+每个mailcap 条目都包含有一个content-type说明, 以及一个在邮
+件被读取时执行的命令(典型是由metamail(1) 程序执行), 可能的
+话还有一个任选的"flag"集. mailto程序仅仅处理mailcap条目中
+"compose", "composetyped", "edit"这三个任选的flag及其组合.
+compose 标志为mailto指明处理给定格式数据的程序, 而edit标志
+通知mailto如何以给定格式编辑数据. 下面的mailcap 条目给出了
+处理和编辑音频数据的一个例子: 
+
+audio/basic; showaudio %s; compose=audiocompose %s; edit=audiocompose %s; description="An audio clip"
+
+"composetyped"标志很象compose,除了其输出假定是MIME格式, 还
+包括至少一个content-type, 如果必要的话, 还有一个content-
+transfer-encoding头域. 如果各种信息需要通过content-type中
+的参数转达的话, composetyped就是必不可少的了. 
+
+可选的"description"域用于组成mailto响应"~*"命令而打印出来
+的提示符, 排字程序使用该格式排组数据, 而编辑程序则使用该格
+式编辑数据. 在这两种情况的中的任一种, 任何"%s"的出现都会以
+要排组或要编辑的文件名替代. 如果在排字命令中没有"%s", 这实
+际上就等价于在排字命令的末尾附加"> %s". 
+
+请注意mailcap 文件中各项出现的顺序是极其严格的. metamail程
+序用第一个匹配的mailcap条目来
+.I 展示
+数据. 另一方面, 对
+.I 每个
+带有"compose" 命令的mailcap条目, mailto也给用户提供了一个
+替代方案. 但要注意到mailto使用了mailcap 条目的content-type
+来组成其content-type头. 因而, 排字和编辑命令在mailcap的通
+配条目中是无需指明的. 如果你有一个可以展示许多不同子类型的
+程序, 你可能要对基本类型的展示和排组分开做条目. 
+
+ image/*; showpicture %s
+ image/gif; showpicture %s; compose="xwd -frame | xwdtoppm | ppmtogif"; description="An X11 window image dump in GIF format"
+ image/x-xwd; showpicture %s; compose="xwd -frame"; description="An X11 window image dump in XWD format"
+
+要得到更多mailcap 文件的格式和语法信息, 请参考 metamail(1)
+手册页里的条目.
+
+.SH 非ASCII语言的文本
+Mailto为在邮件中使用非ASCII 字符集提供了初步的支持. 目前, 
+mailto支持ISO-8859系列的字符集, 这些字符集具有一个很好的特
+性, 就是它们都是ASCII的完全超集. 这就是说, 所有ISO-8859字
+符集的ASCII 字符都是一致的. 在其中任何一个字符集你都可以象
+通常一样使用所有ASCII字符. 
+
+但是mailto缺省认为你使用的是US-ASCII字符集, 而不允许包含非
+ASCII字符. 要想通知mailto你正在使用的终端或终端窗口可以支
+持ISO-8859字符集, 你可以使用-a开关或者MM-CHARSET环境变量. 
+例如, 键入 "mailto -a ISO-8859-8" 就可以通知mailto你的终端
+支持ISO-8859-8, ASCII+Hebrew字符集. 如果你是在一个确实支持
+该字符集的终端上,这就是你所要使用的方法. 如果你是在一个诸
+如X11之类的窗口系统上, 而你也需要确保你的终端模拟器使用的
+是正确的字体, 这样如果你有一个名为"heb6x13" 的字体, 就可以
+通过命令"xterm -fn heb6x13 -e mailto -a iso-8859-8" 打开一
+个兼容的xterm 和mailto来发送英语与希伯来语混杂的邮件. 通常
+应该使得所安装的字体具有和字符集一样的名字, 特别是在你使用
+shownonascii(1) 的时候.
+
+一旦你使mailto以正确的字符集开始, 有两个办法可以使其进入到
+非ASCII 字符集里. 第一个也是到目前为止最容易的一个, 就是使
+用标记了的键, 这要求你所在物理终端使用那些字符集中的一个. 
+然而, 如果你象大多数X11用户那样使用标准的ASCII键盘, 就需
+要一些别的办法来进入到非ASCII 字符里. mialto有一种八位模式
+来达成该任务.在八位模式里, 你键入的所有可打印字符都带有第八
+位, 这样就可以将它们转化成非ASCII 字符. 可以用tilde escape
+"~+"来进入八位模式, 而用"~-"离开. 要查看从你的键盘到八位模
+式字符的映射, 只要使用命令"~?+". 
+
+最后, ISO-8859系列支持的某些语言, 如希伯来语和阿拉伯语, 它
+们是从右到左而不是从左到右的顺序. 为了使文本编辑变得容易, 
+mailto设定了一种"从右到左"模式, 该模式可以用"~^"命令开关. 
+要更方便, 还可以用单独一个命令"~S"(Semitic模式)来同时开关
+从右到左和八位两个模式. 
+
+.SH TILDE ESCAPES总表
+
+为便于查阅, 这里列出了mailto程序中tilde escape的全部摘要: 
+
+    ~? 显示tilde escape的帮助信息
+    ~! Shell escape
+    ~~ 输入以一个tilde字符开头的文本行
+    ~. 发送邮件并退出
+    ~/ 设定最大报文, 超过该值报文就被分成多个部分
+    ~?+ 显示扩展(八位)字符的帮助信息
+    ~> 左边缘缩进
+    ~< 取消左边缘缩进
+    ~<R 右边缘缩进
+    ~>R 取消右边缘缩进
+    ~+ 为使用非ASCII字符而进入八位模式
+    ~- 退出八位模式(返回到ASCII)
+    ~^ 开关\"Upside-down\"(从右到左)模式.
+    ~* 将非文本数据(图片, 声音等.)加入为一个新的MIME部件
+       (try it!)
+    ~b 切换粗体模式
+    ~c 添加到CC列表中
+    ~d 从dead.letter(或指定的文件, ~d filename)中读取数据
+    ~e 编辑所撰写的消息
+    ~h 编辑邮件头部
+    ~i 开关斜体模式
+    ~j 变更对齐(~jc = 置中, ~jl = 左对齐, ~jr = 右对齐.)
+    ~n 强制换行(硬断行)
+    ~p 打印出到目前为止的信件所有内容
+    ~q 退出, 并将内容保存到dead.letter文件
+    ~Q 开关引用模式
+    ~r 将指定文件的内容读入信件
+    ~s 重新设定主题
+    ~S 开关Semitic模式(从右到左以及八位模式)
+    ~t 加入到To列表中
+    ~u 开关下划线模式
+    ~v 以可视化编辑器编辑
+    ~w 将消息写到指定的文件
+    ~z 将~/.signature的内容加做文本签名.
+    ~Z 将~/.signature的内容加做非文本(MIME格式)签名.
+
+.SH MAILRC功能简介
+
+Home目录下的.mailrc文件用于定制Berkeley mail程序. mailto
+程序也对其中部分定制信息敏感, 虽然不是全部. 特别地, 你可以
+使用.mailrc文件设置如下变量, 以影响mailto的行为 (通过"set
+变量名"或者"unset 变量名"): 
+
+   askcc      -- 控制是否征询CC列表
+   dot        -- 控制是否将单独一行的句号解释为邮件结束
+   ignore     -- 控制是否忽略断行
+   verbose    -- 控制/usr/lib/sendmail输出的冗余
+   quiet      -- 控制mailto程序输出的冗余
+   keepblind  -- 控制是否保留邮件的"盲"复件
+   commasonly -- 决定是否将空格符解释为邮件地址分隔符号. 
+                 为与BSD mail兼容, 缺省是这么解释空格的, 
+                 但commasonly选项使mailto可以更像一个现代
+                 的Inertnet mailer. 
+
+该文件还实现了的一个功能就是个人邮件别名. 比如, 你有一个朋
+友, 而他(她)有一个长得可怕的邮件地址, 你可以在你的.mailrc 
+文件里添加一行, 用一个比较简短友好的别名指向该地址: 
+
+   alias boygeorge  George.Herbert.Walker.Bush%white-house.uucp at nsf-relay.com
+
+mailto以与Berkeley mail 相兼容的方式来实现别名特色. 此外, 
+mailto还知道如何读取CMU's Andrew系统所使用的".AMS_aliases"
+别名文件. 这样Andrew的用户就不必为要同时使用Andrew和mailto
+而不得不维护两个不同的别名文件. 
+
+.SH 与BERKELEY MAIL的其他差异
+
+虽然mailto程序是以Berkeley mail为蓝本构建的, 它们的用户接
+口却不是毫无差别. 下面是除多媒体增强之外的其它主要差异, 习
+惯于Berkeley mail 程序的用户常常被这些差异弄糊涂. 
+
+.I 地址分隔: 
+Berkeley mail里的地址是以空格分隔的, 这被邮件
+用户们深恶痛绝. 为保持向后兼容性, mailto也保持了这一格式, 
+但是只要是正常的人就会用逗号来代替空格. 
+
+.I 换行语法:
+不像Berkeley mail, mailto里单个断行通常被看作
+是"软"的. 这意味着当接收者看到你的邮件的时候, 信件因为自动
+对齐看起来将是满满当当的. 直接的断行可以用"~n"命令添加, 而
+多个连续的断行符也可以得到理想的效果. 倒过来, 任何以空格或
+tab 字符开始的行都被看作以一个断行领先. 
+
+.I 包含dead.letter文件的内容:
+~d命令用于将"dead.letter"文件
+内容包含在当前邮件中. Mailto对该功能的实现与mail相比有两点
+不同: 首先, 信息是以封装形式而不是纯文本形式包含在邮件里. 
+虽然这有时有些不方便, 但它允许将多媒体dead.letter 文件完整
+地取回. 其次, mailto中的"~d"命令可以带一个参数, 就是用于取
+代缺省的"~/dead.letter" 文件的文件名. 
+
+.I 与Sun的版本不一致的地方:
+Sun Microsystems(毫无疑问许多
+别的厂商的版本是作者有所不熟识的)在几个地方增强了Berkeley 
+mail的命令, 而其中一些是与mailto不兼容的. 特别地, 至少Sun
+版本中的"~b", "~i", 及"~<"命令是与mailto中的命令不一致. 
+
+.I ~p失败的潜在可能: 
+在标准的Berkeley mail程序里, 难以想象
+"~p"命令竟然会失败. 在mailto里面, ~p依靠调用metamail(1)程
+序工作, 如果metamail没有列入用户搜索路径里, ~p将会失败. 
+
+.I 扩展别名搜索:
+mailto程序既象Berkeley mail一样读取.mailrc 
+文件中的别名, 也象CMU's Andrew消息报文系统一样读取
+.AMS_aliases文件中的别名. 
+
+.I 编辑行为的变化:
+~e和~v命令, 虽然都用于编辑消息, 但如果邮
+件中含有非文本部分的话, 它们在mailto中的行为是不一样的. 在
+这样的情形下, 各部分是按顺序分开编辑的, 这使得用户不可能在
+偶然的情况下弄乱各部分的界限. 此外, 如果一个对于给定数据类
+型的mailcap 条目包含有"edit"域, 用户会面临选择是以这里给定
+的程序编辑还是以通常的文本编辑器编辑. 大多数情况都是要选择
+使用一个结构化的编辑器或者选择编辑原始数据流.
+
+.I 大邮件行为的变化:
+Mailto用splitmail(1)程序来发送你的邮件. 
+当邮件较大的时候, 就被分成一系列遵循MIME的小文件, 这样MIME
+的读取器在收到邮件时就可以自动重组. 缺省是所有超过100K字节
+的邮件都被分裂, 但可以通过设置SPLITSIZE环境变量来控制.要了
+解更多信息, 可以参看splitmail(1)的手册页.
+
+.I 新的-r命令行选项:
+在标准Berkeley mail中是没有-r命令行选
+项的. 
+
+.SH SUMMARY OF OPTIONS选项总览
+-a <charset> -- 指明要使用的替代字符集. 最好是你的终端实际
+在用的. 目前必须是属于iso-8859字符集系列. 
+
+-c name -- 指明CC域的名字. 如果你想要包括多个名字, 就必须
+用引号把名字括起来, 比如 -c "name1, name2, name3".
+
+-r message-id -- 指明构造In-Reply-To头域所用message-id. 
+
+-s subject -- 指明邮件主题. 如果主题中包括空格, 必须用双引
+号括起来. 
+
+.SH 环境变量
+
+.TP 8
+.B MAILCAPS
+该变量用于覆盖mailcap 文件的缺省搜索路径. 
+.TP 8
+.B PAGER
+如果设置了该变量, 就取代"more"作为你的解释器的翻页
+程序名
+.TP 8
+.B MM_CHARSET
+该变量可以取代-a开关, 将你的终端或模拟终端上实现的
+非US-ASCII字符集通知mailto. 
+.TP 8
+.B TERM
+该变量将你的终端类型通知mailto. 再配合termcap(5)工
+具, 就可以确定如何在你的终端上实现粗体字符, 反相显
+示, 下划线等格式元素
+.TP 8
+.B EDITOR
+如果你以~e命令请求编辑你正在撰写的邮件, 该变量就指
+定mailto所使用的编辑工具. 
+.TP 8
+.B VISUAL
+如果你以~v命令请求编辑你正在撰写的邮件, 该变量就指
+定mailto所使用的可视化编辑工具
+.SH SEE ALSO
+metamail(1), mmencode(1), richtext(1), audiocompose(1), getfilename(1), mailto-hebrew(1), splitmail(1), shownonasci(1)
+.SH BUGS
+目前是用fgets取得所输入的每行内容, 一个较好的替代方案是让
+从右到左模式, 八位模式, 以及加边和对齐相关命令的效果能够即
+时体现. 如果能实现, 这将是一个巨大的改进. 
+
+虽然mailto程序是以Berkeley mail为蓝本构建的, 其用户接口却
+与之不尽相同. 上面以"与BERKELEY MAIL的其他差异"命名的部分
+有时也被人们视为这个"BUGS"部分的扩展. 
+
+.SH COPYRIGHT
+Copyright (c) 1992 Bell Communications Research, Inc. (Bellcore)
+
+Permission to use, copy, modify, and distribute this material 
+for any purpose and without fee is hereby granted, provided 
+that the above copyright notice and this permission notice 
+appear in all copies, and that the name of Bellcore not be 
+used in advertising or publicity pertaining to this 
+material without the specific, prior written permission 
+of an authorized representative of Bellcore.  BELLCORE 
+MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY 
+OF THIS MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS", 
+WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
+.SH AUTHOR
+Nathaniel S. Borenstein
+
+.SH "[中文版维护人]"
+.B mapping <mapping at 263.net>
+./" 中文版维护请mailto: mapping at 263.net
+.SH "[中文版最新更新]"
+.B 2003/11/22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/make_smbcodepage.1 b/src/man1/make_smbcodepage.1
new file mode 100644
index 0000000..90afd10
--- /dev/null
+++ b/src/man1/make_smbcodepage.1
@@ -0,0 +1,117 @@
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
+.\" Please send any bug reports, improvements, comments, patches, 
+.\" etc. to Steve Cheng <steve at ggi-project.org>.
+.TH MAKE_SMBCODEPAGE 1 "17 Apr 2001" "make_smbcodepage 2.2.0"
+.SH NAME
+make_smbcodepage \- 为Samba创建代码页文件
+.SH 总览
+.sp
+\fBmake_smbcodepage\fR \fBc|d\fR \fB代码页\fR \fB输入文件\fR \fB输出文件\fR
+.SH 描述
+.PP
+这个工具是是Samba组件的一部分。
+.PP
+针对Samba 2.2的国际化功能,使用\fBmake_smbcodepage\fR可以
+编译或反编译代码页文件。
+.SH 选项
+.TP
+\fBc|d\fR
+使用\fIc\fR把一个文本格式的代码页文件编译成二进制格式;
+使用\fId\fR把一个二进制格式的代码页反编译成文本格式。
+.TP
+\fB代码页\fR
+选用的代码页(一个数字,如850)。
+.TP
+\fB输入文件\fR
+待处理的输入文件。在使用\fIc\fR选项时,它是文本格式的代码
+页预定义文件,这些文件可以在Samba包的\fIsource/codepages\fR
+目录中找到;在使用\fId\fR选项时,它是二进制格式的代码页文件,
+通常,这些文件保存在Samba安装路径的\fIlib/codepages\fR目录的。
+.TP
+\fB输出文件\fR
+程序产生的输出文件。
+.SH Samba的代码页文件
+.PP
+文本格式的代码页定义文件描述了在指定DOS代码页大于127的字符中
+是如何把大写转换为小写的。要注意的是,在某些DOS代码页中
+(如437),大小写之间的映射并不一定对称。例如,在代码页437中,
+当进行小写到大写的映射时,把带有撇形(')重音符号的a转换为不
+带重间符号的明文大写字母A,而当进行大写到小写映射时,则把字
+母A直接转换为字母a而不带重间符号。
+.PP
+而二进制代码页定义文件则是相同信息的二进制表示,同时包含一个
+值,用来说明所描述的代码页。
+.PP
+因为Samba还没有使用UNICODE码,所以如果你希望在特殊的语言环境
+中不区分大小写的话,就要为DOS和Windows客户端指定所用的代码页。
+Samba所用的缺省代码页是850(西欧语)。同时,Samba发布还提供了
+文本格式的样本代码页文件,包含437(美语)、737(希腊语)、850(西
+欧语)、852(MS-DOS 拉丁2)、861(冰岛语), 866 (斯拉夫语)、932
+(日语)、936(简体中文)、949(韩文)和950(繁体中文)。我们鼓励用户
+为自己的代码页编写文本格式的定义文件,并把它捐款给samba at samba.org。
+当你执行\fB'make install'\fR命令时,\fIsource/codepages\fR目
+录中的所有代码页文件都会被编译并安装到系统上。
+.PP
+在\fBsmb.conf\fR文件中配置了\fBclient code page\fR选项之后,
+\fBsmbd\fR服务器就可以使用客户代码页了。
+.SH 相关文件
+.PP
+\fBcodepage_def.<codepage>\fR
+.PP
+这是Samba源代码包提供的用于输入的文本代码页文件,它们保存在
+\fIsource/codepages\fR目录中。
+.PP
+在这些文本格式的代码页定义文件中,每一行都包含了四个字段:
+.TP 0.2i
+\(bu
+\fBlower\fR:小写字符的十六进制值。
+.TP 0.2i
+\(bu
+\fBupper\fR:上述小写字符所对应的大写字符十六进制值。
+.TP 0.2i
+\(bu
+\fBmap upper to lower\fR:这是个布尔量(True或False二者选一)。
+用来说明在对一个文件名进行小写处理时,是否让Samba将其中的大写
+字符映射成小写字符。
+.TP 0.2i
+\(bu
+\fBmap lower to upper\fR:这是个布尔量(True或False二者选一)。
+用来说明在对一个文件名进行大写处理时,是否让Samba将其中的小写
+字符映射成大写字符。
+.PP
+\fBcodepage.<codepage>\fR
+这是Samba产生的输出二进制代码页文件,它们保存在Samba安装目录的
+\fIlib/codepage\fR中。
+.PP
+.SH 安装
+.PP
+服务器及相关支持文件的保存位置决定于系统管理员,以下只是建议:
+.PP
+我们推荐把\fBmake_smbcodepage\fR程序安装到\fI/usr/local/samba\fR
+路径下的一个目录中,这个目录应该具有只有root可写,所有人都可读的
+权限。这个程序本身应该让所有用户都可执行,而不应该执行suid或sgid
+操作。
+.SH 版本
+.PP
+本手册页是针对samba 2.2版的。 
+.SH 另见
+.PP
+\fBsmbd(8)\fR、smb.conf(5)
+.SH 作者
+.PP
+Samba软件和相关工具最初由Andrew Tridgell编写。现在,它是按开源
+软件的形式进行开发的。
+.PP
+Samba手册页的原作者是Karl Auer。这些文档已被转换成YODL(一种极好的
+开放源代码软件,可以在ftp://ftp.icce.rug.nl/pub/unix/处获得)格式,
+并已由Jeremy Allison更新到samba2.0版本。Gerald Carter完成了Samba
+2.2的DocBook转化工作。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+2001/05/20
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/makeinfo.1 b/src/man1/makeinfo.1
new file mode 100644
index 0000000..9d5de82
--- /dev/null
+++ b/src/man1/makeinfo.1
@@ -0,0 +1,179 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH MAKEINFO "1" "June 2003" "makeinfo 4.6" "User Commands"
+.SH NAME
+makeinfo \- 翻译 Texinfo 文档
+.SH "SYNOPSIS 总览"
+.B makeinfo
+[\fIOPTION\fR]... \fITEXINFO-FILE\fR...
+.SH "DESCRIPTION 描述"
+将 Texinfo 源文档翻译为各种其他格式,默认是可以用 Emacs 或者独立的 GNU Info 查看的,适于在线阅读的 Info 文件。
+.SS "通用选项:"
+.TP
+\fB\-\-error\-limit\fR=\fINUM\fR
+在遇到 NUM 个错误后退出。默认是 100。
+.TP
+\fB\-\-force\fR
+即使发生错误也保留输出内容。
+.TP
+\fB\-\-help\fR
+显示这份帮助,然后退出。
+.TP
+\fB\-\-no\-validate\fR
+不进行节点交叉引用的验证。
+.TP
+\fB\-\-no\-warn\fR
+阻止提示警告 (但是不阻止提示错误)。
+.TP
+\fB\-\-reference\-limit\fR=\fINUM\fR
+警告达到了引用的最大数量 NUM (默认是 1000)。
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+解释正在做什么。
+.TP
+\fB\-\-version\fR
+显示版本信息,然后退出。
+.SS "输出格式选择 (默认产生 Info):"
+.TP
+\fB\-\-docbook\fR
+输出 DocBook XML 而不是 Info。
+.TP
+\fB\-\-html\fR
+输出 HTML 而不是 Info。
+.TP
+\fB\-\-xml\fR
+输出 Texinfo XML 而不是 Info。
+.SS "通用输出选项:"
+.TP
+\fB\-E\fR, \fB\-\-macro\-expand\fR FILE
+输出扩展了宏的源文件,保存到 FILE。忽略任何 @setfilename。
+.TP
+\fB\-\-no\-headers\fR
+从 Info 输出中去除节点分隔符,Node:lines 和菜单 (以产生普通文本),或者从 HTML 输出中去除它们 (以产生短一些的文本);同时,默认输出到标准输出。
+.TP
+\fB\-\-no\-split\fR
+阻止拆分 Info 或 HTML 输出,只产生单一的输出文件。
+.TP
+\fB\-\-number\-sections\fR
+输出章节和段落号。
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
+输出到文件 FILE (如果拆分 HTML 的话,就表示目录 FILE)。
+.SS "用于 Info 和普通文本的选项:"
+.TP
+\fB\-\-enable\-encoding\fR
+根据 @documentencoding,在 Info 输出中输出着重符号和特殊字符。
+.TP
+\fB\-\-fill\-column\fR=\fINUM\fR
+输出 NUM 个字符之后分行。默认是 72。
+.TP
+\fB\-\-footnote\-style\fR=\fISTYLE\fR
+根据 STYLE,在 Info 中输出脚注:
+`separate' 将把它们放在它们自己的节点中;
+`end' 将把它们放在定义它们的节点
+.IP
+的末尾。
+.TP
+\fB\-\-paragraph\-indent\fR=\fIVAL\fR
+缩进 Info 段落 VAL 个空格,默认是 3。如果 VAL 是 `none',不进行缩进;如果 VAL 是 `asis',将维持已有的缩进。
+.TP
+\fB\-\-split\-size\fR=\fINUM\fR
+输出 NUM 个字符后拆分新的文件。默认是 300000。
+.SS "用于 HTML 的选项:"
+.TP
+\fB\-\-css\-include\fR=\fIFILE\fR
+在输出的 HTML <style> 标签中包含 FILE 的内容;如果 FILE 是 `\-' 就从标准输入读取。
+.SS "输入文件选项:"
+.TP
+\fB\-\-commands\-in\-node\-names\fR
+允许在节点名称中出现 @ 命令。
+.TP
+\fB\-D\fR VAR
+定义变量 VAR,如同使用了 @set。
+.TP
+\fB\-I\fR DIR
+将 DIR 添加到 @include 搜索路径中。
+.TP
+\fB\-P\fR DIR
+将 DIR 添加到 @include 搜索路径之前。
+.TP
+\fB\-U\fR VAR
+取消变量 VAR 的定义,如同使用了 @clear。
+.SS "在输入中使用条件处理:"
+.TP
+\fB\-\-ifhtml\fR
+处理 @ifhtml 和 @html,即使不是在生成 HTML。
+.TP
+\fB\-\-ifinfo\fR
+处理 @ifinfo,即使不是在生成 Info。
+.TP
+\fB\-\-ifplaintext\fR
+处理 @ifplaintext,即使不是在生成普通文本。
+.TP
+\fB\-\-iftex\fR
+处理 @iftex 和 @tex;隐含了 \fB\-\-no\-split\fR。
+.TP
+\fB\-\-ifxml\fR
+处理 @ifxml 和 @xml。
+.TP
+\fB\-\-no\-ifhtml\fR
+不处理 @ifhtml 和 @html 文本。
+.TP
+\fB\-\-no\-ifinfo\fR
+不处理 @ifinfo 文本。
+.TP
+\fB\-\-no\-ifplaintext\fR
+不处理 @ifplaintext 文本。
+.TP
+\fB\-\-no\-iftex\fR
+不处理 @iftex 和 @tex 文本。
+.TP
+\fB\-\-no\-ifxml\fR
+不处理 @ifxml 和 @xml 文本。
+.IP
+ at if... 条件语句的默认处理方法取决于输出格式:
+如果在生成 HTML,\fB\-\-ifhtml\fR 就是打开的,其他的是关闭的;
+如果在生成 Info,\fB\-\-ifinfo\fR 就是打开的,其他的是关闭的;
+如果在生成普通文本,\fB\-\-ifplaintext\fR 就是打开的,其他的是关闭的;
+如果在生成 XML,\fB\-\-ifxml\fR 就是打开的,其他的是关闭的。
+.SH "EXAMPLES 范例"
+.TP
+makeinfo foo.texi
+输出 Info,保存为 foo 的 @setfilename 指定的文件
+.TP
+makeinfo \fB\-\-html\fR foo.texi
+输出 HTML,保存为 @setfilename
+.TP
+makeinfo \fB\-\-xml\fR foo.texi
+输出 XML,保存为 @setfilename
+.TP
+makeinfo \fB\-\-docbook\fR foo.texi
+输出 DocBook XML,保存为 @setfilename
+.TP
+makeinfo \fB\-\-no\-headers\fR foo.texi
+输出普通文本,显示在标准输出上。
+.IP
+makeinfo \fB\-\-html\fR \fB\-\-no\-headers\fR foo.texi 
+输出没有 node lines 和菜单的 html
+makeinfo \fB\-\-number\-sections\fR foo.texi
+输出 Info 并且为段落编号
+makeinfo \fB\-\-no\-split\fR foo.texi
+输出单一的 Info 文件,不管它多大
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+Texinfo 主页:http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO 参见"
+.B install-info
+的全部文档以 Texinfo 手册页形式保存。如果你的主机上正确安装了
+.B info
+和
+.B install-info
+程序,命令
+.IP
+.B info install-info
+.PP
+将使你可以读取完整的手册。
diff --git a/src/man1/man.1 b/src/man1/man.1
new file mode 100644
index 0000000..82411f7
--- /dev/null
+++ b/src/man1/man.1
@@ -0,0 +1,268 @@
+.\"
+.\" Generated automatically from man.1.in by the
+.\" configure script.
+.\"
+.\" Man page for man (and the former manpath)
+.\"
+.\" Copyright (c) 1990, 1991, John W. Eaton.
+.\"
+.\" You may distribute under the terms of the GNU General Public
+.\" License as specified in the README file that comes with the man 1.0
+.\" distribution.  
+.\"
+.\" John W. Eaton
+.\" jwe at che.utexas.edu
+.\" Department of Chemical Engineering
+.\" The University of Texas at Austin
+.\" Austin, Texas  78712
+.\"
+.\" Many changes - aeb
+.\"
+.TH man 1 "September 2, 1995"
+.LO 1
+.SH NAME
+man \- 格式化并显示在线帮助手册页
+.br
+manpath \- 定义用户查找man手册页的路径
+.SH 总览
+man  [-acdfFhkKtwW] [-m 系统名] [-p <前处理程序>]
+[-C <配置文件>] [-M <路径>] [-P <浏览方式>] [-S <区段清单>] 
+[区段名称] 帮助主题 ...
+.SH 描述
+.B man
+格式化并显示在线帮助手册页面。此版本支持
+.B MANPATH
+和
+.B (MAN)PAGER
+环境变量,因此,你可以拥有你自己的一系列
+.B man
+手册页并决定使用哪个程序来显示此格式的页面。如果定义了区段,
+.B man
+将只查找在指定区段内的文档。你也可以通过命令行或环境变量来指定查找区段
+的顺序和预定义将要执行的程序。如果主题中有“/”符号,则将其作为文件名的一部分处理
+,也就是说你可以用
+.B "man ./foo.5"
+也可以用
+.B "man /cd/foo/bar.1.gz"来查看各man 文档。
+.SH 选项
+.TP
+.B -C "配置文件"
+定义man.conf供使用;默认使用的是
+.BR /etc/man.config
+。(参见
+.BR man.conf(5))。
+.TP
+.B -M "路径"
+定义一组查找man手册页的目录。如果没有指定此参数,系统环境变量
+.B MANPATH将被使用。
+如果查无到此环境变量,则按默认
+.BR /etc/man.config
+文件中指定的查找。一个空的
+.B MANPATH
+子字
+符串表示使用默认清单。
+.TP
+.B -P "浏览方式"
+定义浏览的方式。此选项将覆盖
+.B MANPAGER
+环境变量(此变量将覆盖
+.B PAGER
+变量)。若不指定
+此参数,则使用
+.B MANPAGER
+或
+.B PAGER
+环境变量中的设置。此选项的预设的显示方式为
+.BR /usr/bin/less-is。
+.TP
+.B -S "区段清单"
+该清单是一组用冒号分隔的欲查找的手册清单。此选项将覆盖
+.B MANSECT
+环境变量。
+有些指令或程序可能有一个以上的主题,它们位于不同的区段中。因此,要查看较后的区
+段,你可以在此指定
+.B man
+查找区段的顺序。具体区段划分如下所示:
+.RS
+区段1:用户指令
+.br
+区段2:系统调用
+.br
+区段3:程序库调用
+.br
+区段4:设备
+.br
+区段5:文件格式
+.br
+区段6:游戏
+.br
+区段7:杂项
+.br
+区段8:系统指令
+.br
+区段9:内核内部指令
+.br
+区段n:Tcl或Tk指令
+.RE
+.TP
+.B -a
+默认情况下,man在显示完每一个所查到的man手册页时会自动退出程序。而使用此选项
+,则可使man显示所有与此主题相匹配的手册页内容,而不仅仅是第一项。
+.TP
+.B -c
+即使已存在最近已排版过的帮助文件(即以前曾查询过该主题的帮助文档),使用该参
+数后仍会再次执行一次排版操作。此参数适用于已排版过的帮助文件已损坏或屏幕的行列数有
+改变时。
+.TP
+.B -d
+不显示帮助文档的具体内容,只显示调试排错信息。
+.TP
+.B -D
+既显示帮助文档内容,同时又显示调试排错信息。
+.TP
+.B -f
+相当于运行whatis 的操作。即:显示工具指令与工具程序的简单说明。
+.TP
+.B -F" 或 "--preformat
+只进行格式化操作,而不真正的显示出来。
+.TP
+.B -h
+显示man的语法和参数说明,执行完成后退出程序。
+.TP
+.B -k
+查当于使用
+.B apropos
+命令。
+.TP
+.B -K
+在所有的帮助文件中查找包含有指定关键字的帮助文档。此操作可能很慢,所以在使用
+此参数时最好配合-s 的参数来查找指定区段。(这只是一个粗略的概念,在作者本人的机器
+上每分钟可查500个man文档。)
+.TP
+.B -m
+系统名
+定义所要查找的man文档所属的系统名。
+.TP
+.B -p
+字串
+定义在排版帮助文件这前所要执行的预处理程序的次序。不是所有的安装都有完整预处理
+程序组。一般有6个预处理程序,它们是:eqn(e)、grap(g)、pic(p)、tbl(t)、vgrind(v)和
+reger(r)。此参数将覆盖环境变量MANROFFSEQ。
+.TP
+.B -t
+使用
+.B /usr/bin/groff - Tps - mandoc
+来排版man手册页,并输出到标准输出。从
+.B /usr/bin/groff - Tpa - madoc
+输出的内容可能需要某些其它过滤才能真正输出到标准输出打印。
+.TP
+.B -w" 或 "--path
+不显示帮助文档的具体内容而只显示相应帮助主题文件的位置。如果没有给定参数,则将
+在标准输出显示一组由man所查到的相匹配的man 文档所在目录。如果命令manpath是一个到m
+an的链接,那么执行“manpath”就相当于执行“man --path”。
+.TP
+.B -W
+相当于-w参数,但所显示的内容以分行方式显示。此参数方便其它指定或程序对其输出
+做进一步处理,如:
+.ft CW
+.B "man -aW man | xargs ls -l "
+.ft
+.SH CAT页
+Man 会试着对所查的文档进行保存,为的是便于下次使用此帮助页时可节约格式化时间。传
+统上,被格式化的DIR/manX文档会被存储在DIR/catX中,但你可以在
+.BR /etc/man.config
+配置文
+件中指定其它的目录。如果所需的cat目录不存在时,系统就不对格式化后的man文档进行保存
+。
+.PP
+对于使用man命令的人,man命令可能对其进行setuid的操作。因此,如果一个cat目录属于
+man并且其模式是0755(只有man对其有写的权限),而且,cat文件也属于man和其模式是064
+4或0444(只有man对其有写权限或根本就没有写权限),则普通用就不能更改cat文档页,也
+不能在此目录中存放其它文件。而如果man没有执行setuid的操作,那么,为了能使所有用户
+都能存放cat页到cat目录,则必须将这个cat目录设置成0777模式。
+.PP
+参数
+.B -c
+可以强制生成一个新的man页,既使已经有一个cat页存在。
+.SH 环境变量
+.TP
+.B MANPATH
+如果
+.B MANPATH
+有定义,那么它的值将在查找man文档页时做为搜索路径来使用。
+.TP
+.B MANROFFSEQ
+如果
+.B MANROFFSEQ
+有定义,则此变量的值将用来决定在nroff或troff执行前将要执行的预处
+理程序的次序。默认情况下,手册页会在nroff处理前选取进行表格处理。
+.TP
+.B MANSECT
+如果
+.B MANSECT
+有定义,它的值将决定man有搜索时的查找区段。
+.TP
+.B MANWIDTH
+如果MANWIDTH有定义,它的值将决定显示man手册页时的宽度。否则,将是以全屏的方式来
+显示。
+.TP
+.B MANPAGER
+如果
+.B MANPAGER
+有定义,它的值将指定用来显示man文档的程序。如果没有在此指定,那么将
+使用由PAGER变量指定的程序。如果还是没有指定,那么会默认使用/usr/bin/less -is 。
+.TP
+.B LANG
+如果
+.B LANG
+有定义,它的值将指定man在查找文档时首先查找的子目录。因此,命令“LAN
+G=dk man 1 foo”会使man在查找man页时首先查找../dk/man1/foo.1,如果在其中没有找到相
+关文档,则查找../man/foo.1,此目录是由查找路径指定的。
+.TP
+.B "NLAPATH,LC_MESSAGES,LANG"
+环境变量
+.B NLAPATH
+和
+.B LC_MESSAGES
+(或当后一个不存在时使用
+.B LANG
+)充当了定位文档目录的
+角色。(但英文信息是编译进命令的,所以针对英文而言,就没有目录存在)。注意,象col
+(1)这样被man调用的程序也使用象
+.B LC_CTYPE
+这样的变量。
+.TP
+.B PATH
+变量
+.B PATH
+是在解释查找man手册页路径时使用的。
+.TP
+.B SYSTEM
+变量
+.B SYSTEM
+是用来得到默认的系统名(用-m参数可以得到同样的效果)。
+.SH 另见
+apropos(1),whatis(1),less(1),groff(1).
+
+.SH BUGS
+选项
+.B -t
+只能使用在装有类troff程序的环境中。
+如果在你的显示中出现高亮度的\255或<AD>这样的字符而不是连字符,请在你的配置文件中
+写入“LESSCHARSET=latin1”这样的环境变量。
+.SH 技巧
+如果你在你的
+.IR .emacs
+文件中加入(global-set-key[(f1)](lambda()(interactive)(manuale
+ntry(current-word))))这一行,则当你按F1键时会自动跳出当前鼠标指向的相应程序的man手册页。
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.TP 
+译者:
+所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+第一版
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/md5sum.1 b/src/man1/md5sum.1
new file mode 100644
index 0000000..73787ee
--- /dev/null
+++ b/src/man1/md5sum.1
@@ -0,0 +1,74 @@
+.TH MD5SUM "1" "December 1999" "GNU textutils 2.0a" FSF
+
+.SH NAME
+md5sum \- 计算检验MD5效验码
+
+.SH "总览 (SYNOPSIS)"
+.B ../src/md5sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.br
+.B ../src/md5sum
+[\fIOPTION\fR] \fI--check \fR[\fIFILE\fR]
+
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+显示 或 检验 MD5 效验码. 如果 没有 FILE 或者 FILE 是 - 时, 就从 标准 输入 读入.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+以 二进制 模式 读入 文件 (DOS/Windows 下 默认)
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+对 给定 的 文件 检验 MD5 效验码
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+以 文本 模式 读入 文件 (默认)
+.SS "下面 的 两个 选项 只在 检验 效验码 时用:"
+.TP
+\fB\-\-status\fR
+不显示 任何 输出, 用 返回码 表示 成功 与否
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+对于 错误 的 MD5 效验码 行 的 格式 发出 警告
+.TP
+\fB\-\-help\fR
+显示 这个 帮助 然后 退出
+.TP
+\fB\-\-version\fR
+显示 版本 信息 然后 退出
+.PP
+效验码 用 RFC 1321 中 描述 的 算法 生成. 当 检验 的 时候, 输入 必需 是 这个
+程序 以前 的 输出. 默认 的 模式 是 显示 一行 数据, 包括 效验码, 一个 指示 类型
+的 字符 (`*' 表示 二进制, ` ' 表示 文本), 和 每个 文件 的 名字.
+
+.SH "作者 (AUTHOR)"
+Ulrich Drepper
+
+.SH "错误报告 (REPORTING BUGS)"
+把 错误 报告 给 <bug-textutils at gnu.org>.
+
+.SH "版权 (COPYRIGHT)"
+版权所有 \(co 1999 自由软件基金会
+.br
+这一程序是自由软件; 拷贝条件见源文件。
+没有任何担保; 甚至没有适合特定目的的隐含的担保。 
+
+.SH "参见 (SEE ALSO)"
+完整的 
+.B md5sum
+文档 用 Texinfo 手册页 的 形式 写成. 如果
+.B info
+和
+.B md5sum
+程序 都 正确 的 安装 在 你的 机子 上, 用
+.IP
+.B info md5sum
+.PP
+命令 能够 查看 完整 的 手册页.
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/10/31
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mencoder.1 b/src/man1/mencoder.1
new file mode 100644
index 0000000..05c1be5
--- /dev/null
+++ b/src/man1/mencoder.1
@@ -0,0 +1 @@
+.so man1/mplayer.1
diff --git a/src/man1/mesg.1 b/src/man1/mesg.1
new file mode 100644
index 0000000..cc544c9
--- /dev/null
+++ b/src/man1/mesg.1
@@ -0,0 +1,45 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH MESG 1 "May 27, 1997" "" "Linux User's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+mesg \- 调节用户终端的写访问权
+.\"}}}
+.\"{{{  Synopsis
+.SH "总览 (SYNOPSIS)"
+.B mesg
+.RB [ y | n ]
+.\"}}}
+.\"{{{  Description
+.SH "描述 (DESCRIPTION)"
+.B Mesg
+控制 其他用户 对 你的终端 的 访问能力. 典型用途 是 允许 或 禁止 其他用户
+向 你的终端 输出 数据. (另见 \fBwrite\fP(1)).
+.\"}}}
+.\"{{{  Options
+.SH "选项 (OPTIONS)"
+.IP \fBy\fP
+允许 对 用户终端 作 写访问.
+.IP \fBn\fP
+禁止 对 用户终端 作 写访问.
+.PP
+如果 没有 指定 选项, \fBmesg\fP 就 显示 目前 用户终端 的 访问状态.
+.\"}}}
+.\"{{{  Author
+.SH "作者 (AUTHOR)"
+Miquel van Smoorenburg (miquels at cistron.nl)
+.\"}}}
+.\"{{{  See also
+.SH "另见 (SEE ALSO)"
+.BR talk (1),
+.BR write (1),
+.BR wall (1)
+.\"}}}
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/minicom.1 b/src/man1/minicom.1
new file mode 100644
index 0000000..7dcd9a2
--- /dev/null
+++ b/src/man1/minicom.1
@@ -0,0 +1,540 @@
+.\" This file Copyright 1992,93 Michael K. Johnson (johnsonm at stolaf.edu)
+.\" Copyright 1995,1996 Miquel van Smoorenburg <miquels at cistron.nl>
+.\" Copyright 1997-2000 Jukka Lahtinen <walker at clinet.fi>
+.\" It may be distributed under the GNU Public License, version 2, or
+.\" any higher version.  See section COPYING of the GNU Public license
+.\" for conditions under which this file may be redistributed.
+.TH MINICOM 1 "2003/11/24 05:09:58" "User's Manual"
+.SH NAME
+minicom \- 友好易用的串口通信程序
+.SH "总览 SYNOPSIS"
+.B minicom
+.RI "[-somMlwz8] [-c on|off] [-S script] [-d entry]"
+.br
+.in 15
+.RI "[-a on|off] [-t term] [-p pty] [-C capturefile] [" configuration ]
+.SH "描述"
+.B minicom
+是个通信程序,有点象共享软件 TELIX,但其源码可以自由获得,并能够运行于多数Unix系统。 它包括以下特性:自动重拨号的拨号目录, 对串行设备UUCP格式的lock文件的支持,独立的脚本语言解释器,文件捕获,多用户单独配置,等等。
+.SH "命令行参数 COMMAND-LINE"
+.TP 0.5i
+.B -s
+.BR 设置。
+root 使用此选项在/etc/minirc.dfl中编辑系统范围的缺省值。
+使用此参数后,minicom 将
+.I 不
+进行初始化, 而是直接进入配置菜单。如果因为你的系统被改变,或者第一次运行minicom时,minicom不能启动,这个参数就会很有用。对于多数系统,已经内定了比较合适的缺省值。
+.TP 0.5i
+.B -o
+不进行初始化。minicom 将跳过初始化代码。如果你未复位(reset)就退出了minicom,又想重启一次会话(session), 那么用这个选项就比较爽(不会再有错误提示:modem is locked ---- 注)。但是也有潜在的危险:由于未对lock文件等进行检查,因此一般用户可能会与uucp之类的东东发生冲突......也许以后这个参数会被去掉。现在姑且假定,使用modem的用户对自己的行为足够负责。
+.TP 0.5i
+.B -m
+用Meta或Alt键重载命令键。在1.80版中这是缺省值,也可以在minicom 菜单中配置这个选项。不过若你一直使用不同的终端,其中有些没有Meta或Alt键,那么方便的做法还是把缺省的命令键设置为Ctrl-A,当你有了支持Meta或Alt键的键盘时再使用此选项。Minicom假定你的Meta键发送ESC前缀,而不是设置字符最高位的那一种(见下)。
+.TP 0.5i
+.B -M
+跟“-m”一样,但是假定你的Meta键设置字符高端的第八位(发送128+字符代码)。
+.TP 0.5i
+.B -z
+使用终端状态行。仅当终端支持,并且在其termcap或terminfo数据库入口中有相关信息时才可用。
+.TP 0.5i
+.B -l
+.BR 逐字翻译
+高位被置位的字符。使用此标志, minicom将不再尝试将IBM行字符翻译为ASCII码,而是将其直接传送。许多PC-Unix克隆不经翻译也能正确显示它们(Linux使用专门的模式:Coherent和Sco)。
+.TP 0.5i
+.B -w
+Turns linewrap on at startup by default.
+.TP 0.5i
+.B -a
+.BR 特性使用。
+有些终端,特别是televideo终端, 有个很讨厌的特性处理(串行而非并行)。minicom缺省使用‘-a on’,但若你在用这样的
+
+终端,你就可以(必须!)加上选项‘-a off’。尾字‘on’或‘off’需要加上。
+.TP 0.5i
+.B -t
+.BR 终端类型。 
+使用此标志, 你可以重载环境变量TERM, 这在环境变量MINICOM 中使用很方便; 你可以创建一个专门的 termcap 入口以备minicom 在控制台上使用,它将屏幕初始化为raw模式, 这样, 连同‘-f’标志一起,就可以不经翻译而显示IBM行字符。
+.TP 0.5i
+.B -c
+.BR 颜色
+使用。有些终端(如Linux控制台)支持标准ANSI转义序列色彩。由于termcap显然没有对于色彩的支持,因而minicom硬性内置了这些转义序列的代码。所以此选项缺省为off。使用‘-c on’可以打开此项。把这个标志,还有‘-m’放入MINICOM环境变量中是个不错的选择。
+.TP 0.5i
+.B -S 
+.BR 脚本。
+启动时执行给定名字的脚本。到目前为止,还不支持将用户名和口令传送给启动脚本。如果你还使用了‘-d’选项,以在启动时开始拨号,此脚本将在拨号之前运行,拨号项目入口由‘-d’指明。
+.TP 0.5i
+.B -d
+.BR D ial
+an entry from the dialing directory on startup. You can specify an
+index number, but also a substring of the name of the entry. If you 
+specify a name that has multiple entries in the directory, they are all
+tagged for dialing. You can also specify multiple names or index numbers
+by separating them with commas. The dialing will start from the first 
+entry specified after all other program initialization procedures are 
+completed.
+.TP 0.5i
+.B -p
+.BR 要使用的伪终端。
+它超载配置文件中定义的终端端口,但仅当其为伪tty设备。提供的文件名必须采用这样的形式:(/dev/)tty[p-z][0-f]
+.TP 0.5i
+.B -C
+.BR 文件名。
+启动时打开捕获文件。
+.TP 0.5i
+.B -8
+不经修改地传送8位字符。“连续”意指未对地点/特性进行真正改变,就不插入地点/特性控制序列。此模式用于显示8位多字节字符,比如日本字(TMD!应该是中国字!!)。不是8位字符的语言都需要(例如显示芬兰文字就不需要这个)。
+.PP
+.RS 0.5i
+.B minicom
+启动时,它首先搜索用于命令行参数的MINICOM环境变量----这些参数可在命令行上超载。例如:若你进行了如下设置:
+.PP
+.RS 0.5i
+.PD 0
+MINICOM='-m -c on'
+.PP
+export MINICOM
+.PP
+.PD 1
+.PP
+.RE
+或者其它等效的设置,然后启动minicom,minicom 会假定你的终端有Meat键或Alt键,并且支持彩色。如果你从一个不支持彩色的终端登录,并在你的启动文件(.profile或等效文件)中设置了MINICOM,而且你又不想重置你的环境变量,那么你就可以键入‘minicom -c off’,来运行这次没有色彩支持的会话。
+.RE
+.TP 0.5i
+.B 配置
+The
+.I 配置
+参数更有趣。通常,minicom从文件“minirc.dfl”中获取其缺省值。不过,若你给minicom一个参数,它将尝试从文件“minirc.configuration”中获取缺省值。因此,为不同端口、不同用户等创建多个配置文件是可能的。最好使用设备名,如:tty1,tty64,sio2等。如果用户创建了自己的配置文件,那么该文件将以“.minirc.dfl”为名出现在他的home目录中。
+.SH "使用 USE"
+Minicom是基于窗口的。要弹出所需功能的窗口,可按下Ctrl-A (以下使用C-A来表示Ctrl-A),然后再按各功能键(a-z或A-Z)。先按C-A,再按'z',将出现一个帮助窗口,提供了所有命令的简述。配置minicom(-s 选项,或者C-A、O)时,可以改变这个转义键,不过现在我们还是用Ctrl-A吧。
+.PP
+.PD 0
+以下键在所有菜单中都可用:
+.TP 0.75i
+.B UP
+arrow-up 或 'k'
+.TP 0.75i
+.B DOWN
+arrow-down 或 'j'
+.TP 0.75i
+.B LEFT
+arrow-left 或 'h'
+.TP 0.75i
+.B RIGHT
+arrow-right 或 'l'
+.TP 0.75i
+.B CHOOSE
+Enter
+.TP 0.75i
+.B CANCEL
+ESCape.
+.PD 1
+.PP
+屏幕分为两部分:上部24行为终端模拟器的屏幕。 ANSI或VT100转义序列在此窗口中被解释。若底部还剩有一行,那么状态行就放在这儿;否则,每次按C-A时状态行出现。 在那些有专门状态行的终端上将会使用这一行,如果termcap信息完整且加了-k标志的话。
+.PP
+.PD 0
+下面按字母顺序列出可用的命令:
+.TP 0.5i
+.B C-A
+两次按下C-A将发送一个C-A命令到远程系统。如果你把“转义字符”换成了C-A以外的什么字符,则对该字符的工作方式也类似。
+.TP 0.5i
+.B A
+切换“Add Linefeed”为on/off。若为on,则每上回车键在屏幕上显示之前,都要加上一个linefeed。
+.TP 0.5i
+.B B
+为你提供一个回卷(scroll back)的缓冲区。可以按u上卷,按d下卷,按b上翻一页,按f下翻一页。也可用箭头键和翻页键。可用s或S键(大小写敏感)在缓冲区中查找文字串,按N键查找该串的下一次出现。按c进入引用模式,出现文字光标,你就可以按Enter键指定起始行。然后回卷模式将会结束,带有前缀'>'的内容将被发送。
+.TP 0.5i
+.B C
+清屏。
+.TP 0.5i
+.B D
+拨一个号,或转向拨号目录。
+.TP 0.5i
+.B E
+切换本地回显为on/off (若你的minicom版本支持)。
+.TP 0.5i
+.B F
+将break信号送modem。
+.TP 0.5i
+.B G
+运行脚本(Go)。运行一个登录脚本。
+.TP 0.5i
+.B H
+挂断。
+.TP 0.5i
+.B I
+切换光标键在普通和应用模式间发送的转义序列的类型(另参下面 关于状态行的注释)。
+.TP 0.5i
+.B J
+跳至shell。返回时,整个屏幕将被刷新(redrawn)。
+.TP 0.5i
+.B K
+清屏,运行kermit,返回时刷新屏幕。
+.TP 0.5i
+.B L
+文件捕获开关。打开时,所有到屏幕的输出也将被捕获到文件中。
+.TP 0.5i
+.B M
+发送modem初始化串。若你online,且DCD线设为on,则modem被初始化前将要求你进行确认。
+.TP 0.5i
+.B O
+配置minicom。转到配置菜单。
+.TP 0.5i
+.B P
+通信参数。允许你改变bps速率,奇偶校验和位数。 
+.TP 0.5i
+.B Q
+不复位modem就退出minicom。如果改变了macros,而且未存盘,会提供你一个save的机会。
+.TP 0.5i
+.B R
+接收文件。从各种协议(外部)中进行选择。若filename选择窗口和下载目录提示可用,会出现一个要求选择下载目录的窗口。否则将使用Filenames and Paths菜单中定义的下载目录。
+.TP 0.5i
+.B S
+发送文件。选择你在接收命令中使用的协议。如果你未使文件名选择窗口可用(在File Transfer Protocols菜单中设置),你将只能在一个对话框窗口中写文件名。若将其设为可用,将弹出一个窗口,显示你的上传目录中的文件名。可用空格键为文件名加上或取消标记,用光标键或j/k键上下移动光标。被选的文件名将高亮显示。 目录名在方括号中显示,两次按下空格键可以在目录树中上下移动。最后,按Enter发送文件,或按ESC键退出。
+.TP 0.5i
+.B T
+选择终端模拟:ANSI(彩色)或VT100。此处还可改变退格键,打开或关闭状态行。
+.TP 0.5i
+.B W
+切换linewrap为on/off。
+.TP 0.5i
+.B X
+退出minicom,复位modem。如果改变了macros,而且未存盘,会提供 你一个save的机会。
+.TP 0.5i
+.B Z
+弹出help屏幕。
+.PD 1
+.SH "拨号目录 DIALING DIRECTORY"
+按下Ctrl-A、D,会进入拨号目录。可以增减、删除或修改各个项目。选择“dial”,则会拨打标记项目的电话号码,或者当未作任何标记时高亮显示的项目号码。modem拨号时,可按ESC取消;任何其它按键将关闭拨号窗口,但并不取消拨号。拨号目录将保存在你的home目录下的“.dialdir” 文件中。 可用箭头键可以上下卷动, 但也可用PageUp或PageDown键卷动整页。若没有这些键,可用Ctrl-B(向后),以及Ctrl-F(向前)。可用空格键标记多个项目,若minicom不能建立一个连接,它将在此列表中循环进行拨号。目录中标记项目的名字前将显示一个‘>’符号。
+.PP
+"edit" 菜单不言自明,但这里还是简要介绍一下。
+.PD 0
+.TP 1.0i
+.B A - Name 
+项目名
+.TP 1.0i
+.B B - Number
+电话号码
+.TP 1.0i
+.B C - Dial string #
+指出用于连接的拨号串。在Modem and dialing菜单中有三种不同的拨号串(前缀和后缀)可以进行设置。
+.TP 1.0i
+.B D - Local echo
+可为on或off(若你的minicom版本支持)
+.TP 1.0i
+.B E - Script 
+成功建立连接后必须执行的脚本(参runscript手册)
+.TP 1.0i
+.B F - Username
+传给runscript程序的用户名。在环境串"$LOGIN"中传送。
+.TP 1.0i
+.B G - Password
+传送为"$PASS"的口令。
+.TP 1.0i
+.B H - Terminal Emulation
+使用ANSI或VT100模拟。
+.TP 1.0i
+.B I - Backspace key sends
+退格键发送的代码(Backspace或Delete)。
+.TP 1.0i
+.B J - Linewrap
+可为on或off。
+.TP 1.0i
+.B K - Line settings
+本次连接的bps速率,位数和奇偶设置。速率可选当前值,这样就能用当时正在使用的任何速率值(当你有多个modem时,这玩儿很有用)。
+.TP 1.0i
+.B L - Conversion table
+可以指定运行login脚本前,此拨号项目应答的任何时候要装入的字符转换表。若此域为空,则转换表保持不变。
+.PP 
+.PD 1
+edit 菜单还显示了你最近一次呼叫此项的日期和时间,及呼叫该项的总次数。但并不允许你改变这些值。当你进行连接时,它们会自动更新。
+.PD 1
+.PP
+The moVe command lets you move the highlighted entry up or down in the
+dialing directory with the up/down arrow keys or the k and j keys. Press
+Enter or ESC to end moving the entry. 
+.PP
+.SH "配置 CONFIGURATION"
+按Ctrl-A、O,进入setup菜单。人人都可以改变其中的多数设置,但有些仅限于root。在此,那些特权设置用星号(*)标记。
+.PP
+.PD 0
+.B "Filenames and paths"
+.PP
+.RS 0.25i
+此菜单定义你的缺省目录。
+.TP 0.5i
+.B A - Download directory
+下载的文件的存放位置
+.TP 0.5i
+.B B - Upload directory
+从此处读取上传的文件
+.TP 0.5i
+.B C - Script directory
+存放login脚本的位置
+.TP 0.5i
+.B D - Script program
+作为脚本解释器的程序。缺省是“runscript”,也可用其它的东东(如: /bin/sh 或 "expect")。Stdin和Stdout连接到modem,Stderr连接到屏幕。
+.RS 0.5i
+若用相对路径(即不以'/'开头),则是相对于你的home目录,除了脚本解释器以外。
+.RE
+.TP 0.5i
+.B E - Kermit program
+为kermit寻找可执行程序和参数的位置。命令行上可用一些简单的宏:‘%1’扩展为拨出设备的完整文件名,‘%b’扩展为当前波特率。
+.TP 0.5i
+.B F - Logging options
+Options to configure the logfile writing.
+.RS 0.5i
+.PD 1
+.TP 0.5i
+.B A - File name
+Here you can enter the name of the logfile. The file will be written in
+your home directory, and the default value is "minicom.log". 
+If you blank the name, all logging is turned off.
+.TP 0.5i
+.B B - Log connects and hangups
+This option defines whether or not the logfile is written when the remote
+end answers the call or hangs up. Or when you give the hangup command
+yourself or leave minicom without hangup while online.
+.TP 0.5i
+.B C - Log file transfers
+Do you want log entries of receiving and sending files.
+.RE
+The 'log' command in the scripts is not affected by logging options B and C.
+It is always executed, if you just have the name of the log file defined.
+.RE
+.PD 1
+.PP
+.B "File Transfer Protocols"
+.PD 0
+.PP
+.RS 0.25i
+此处规定的协议将在按下Ctrl-A、s/r时显示。行首的“Name”为将要显示在菜单中的名字。“Program”为协议路径,其后的“Name”则确定了程序是否需要参数,如要传送的文件。“U/D”确定了该项要否在“upload/download”菜单中出现。“Fullscr”确定要否全屏运行,否则mincom将仅在一个窗口中显示其标准输出。 “IO-Red” 确定minicom要否将程序的标准io连接到modem端口。“Multi”告诉文件名选择窗口协议能否用一个命令发送多上文件。它对于下载协议无效;如果你不用文件名选择窗口,那么上传协议也会忽略它。老版本的sz和rz非全屏,并且设置了IO-Red。但是,有些基于curses的版本,至少是rz,不希望其stdin和stdout被改向, 以及全屏运行。 所有文件传输协议都以用户的UID运行,但并不是总有UID=root。对于kermit,命令行上可用'%l' 和 '%b'。在此菜单内,你还能规定当提示文件要上传时,要否文件选择窗口,以及每次自动下载开始时要否提示下载目录。如果禁止下载目录提示,将使用file and dire [...]
+.RE
+.PD 1
+.PP
+.B "串口设置 erial port setup"
+.RS 0.25i
+.PD 0
+.TP 0.5i
+.B *A - 串行设备
+多数人用 /dev/tty1 或 /dev/ttfS1。Linux 下仍然可以使用/dev/cua<n>,但是不推荐这样作,因为这些借口都过时了,使用2.2.x 或 更新的内核的系统中没有它们,可以使用 /dev/ttyS<n> 来代替。你也可以使 /dev/modem 成为一个指向实际设备的链接。
+.br
+如果你有多个modem连接到两个或以上的串口,可以在这儿列表指定,用空格、逗号或者分号作为分隔符。minicom启动时,检查此列表直至发现有可用的modem,并使用之。(不过,你不能为它们指定不同的初始化串....至少现在不能)
+.TP 0.5i
+.B *B - Lock 文件位置
+多数系统上,这应该是 /usr/spool/uucp。Linux系统则使用var/lock。若此目录不存在,minicom将不会试图使用lock 文件。
+.TP 0.5i
+.B *C - Callin program
+若你的串口上有uugetty设备或别的什么,可能你就需要运行某个程序以把modem的cq端口切换到dialin/dialout模式。这就是进入dialin模式所需的程序。
+.TP 0.5i
+.B *D - Callout program
+这是进入dialout模式所用的程序。
+.TP 0.5i
+.B E - Bps/Par/Bits
+启动时的缺省参数。
+.PD 1
+.PP  
+如果其中某一项为空,它就不会被使用。因此若你并不在意locking,你的modemline上也没有getty在运行,项目 B - D 就应该空着。注意!有效用户ID "root"(也就是 0 )才能运行callin和callout。
+.RE
+.PP
+.B "Modem and Dialing"
+.PD 0
+.PP
+.RS 0.25i
+modem的参数在此处定义。我不再进一步解释了,因为缺省是用于genericHayes modems,这应该总能正常工作的。这个文件可不是Hayes的学习指导:-)唯一值得注意的是,控制字符可以用加前缀‘^’的方式发送,其中‘^^’指‘^’本身,‘\’字符必须双写为‘\\’,因为反斜线在宏定义中有特殊意义。不过有些选项,跟modem没多大关系,倒是与minicom自己的行为关系不少:
+.PP
+.TP 0.5i
+.B M - Dial time
+当未建立连接,minicom超时前的秒数。
+.TP 0.5i
+.B N - Delay before redial
+若未建立连接,minicom将重新拨号,不过先要等待一段时间。
+.TP 0.5i
+.B O - Number of tries
+minicom试图拨号的最大次数。
+.TP 0.5i
+.B P - Drop DTR time
+此项设为0时,minicom通过发送一个Hayes类型的hanup序列进行挂断。若设为非0值,则通过放弃DTR line来挂断。该值指定了结束DTR要经历的秒数。
+.TP 0.5i
+.B Q - Auto bps detect
+设为on时,minicom尝试匹配被呼叫方的速度。但多数现代的modem并不需要这个选项,因为modem对数据进行了缓冲,转换了速度。
+.TP 0.5i
+.B R - Modem has DCD line
+如果你的modem和操作系统灰支持DCD line(建立连接后它就升“高”了),那么minicom就会使用它。 When you have this option on, minicom will also NOT start dialing while you are already online.
+.TP 0.5i
+.B S - Status line shows DTE speed / line speed
+你可以切换状态行或者显示DTE速度(minicom与你的modem通信的速度)或者显示线速度(你的modem与其它modem在线上通信的速度),注意连接期间线速度可能会变化,但你将仍然只能看到modem启动连接时的初始速度。这是因为modem并不告诉程序速度有否改变。而且,要看到线速度,你需要在连接字串中进行设置,以使modem显示它。否则,你将只能看到一个值为0的线速度。
+.TP 0.5i
+.B T - Multi-line untag
+You can toggle the feature to untag entries from the dialing directory when
+a connection is established to a multi-line BBS. All the tagged entries that
+have the same name are untagged.
+.PD 1
+.PP
+.RE
+.RS 0.5i
+.B 注意此菜单还是个特例:每个用户都可在此改变参数,但它们不会被保存。
+.RE
+.PP
+.B "Screen and keyboard"
+.RS 0.25i
+.PD 0
+.TP 0.5i
+.B A - Command key is
+进入命令模式的热键。若将其设为‘Alt’或‘Meta’键,你就可以直接用Alt-key调用命令,而不是用HotKey-key。
+.TP 0.5i
+.B B - Backspace key sends
+仍然有些系统需要VT100来发送DEL而非BS。使用此选项,你就能干那件蠢事了。(我倒!甚至缺省值就是on!)
+.TP 0.5i
+.B C - Status line is
+打开或关闭。一些慢的终端(如X-terminals)在卷动的时候,会使状态行“上蹿下跳”,所以需要时可以将状态行关闭。命令模式下仍会被显示。
+.TP 0.5i
+.B D - Alarm sound
+若打开,minicom会在成功连接,以及上传/下载完成后发出报警声。
+.TP 0.5i
+.B E - Foreground Color (menu)
+指定所有的minicom配置窗口使用的前景色。
+.TP 0.5i
+.B F - Background Color (menu)
+指定所有的minicom配置窗口使用的背景色。注意:minicom不允许你将前/背景色设为相同值。
+.TP 0.5i
+.B G - Foreground Color (term)
+指定在终端窗口中使用的前景色。
+.TP 0.5i
+.B H - Background Color (term)
+指定在终端窗口中使用的背景色。注意:minicom不允许你将前/背景色设为相同值。
+.TP 0.5i
+.B I - Foreground Color (stat)
+指定在状态行中使用的前景色。
+.TP 0.5i
+.B J - Background Color (stat)
+指定在状态行中使用的背景色。注意:minicom允许你将状态行的前/背景色设为相同值。这实际上会隐藏状态行,不过如果你有意这样是做,可以参考这个选项。
+.TP 0.5i
+.B K - History buffer size
+历史缓冲区中保存的行数(用于回卷)。
+.TP 0.5i
+.B L - Macros file
+保存有macros的文件的完整路径。macros允许你定义当按下某一个键时被发送的字符串。minicom中,可定义F1到F10,发送多达256个字符。(这在编译时被确定了)。 一按下Enter,就会检验你指定的文件名。 若你无权建立指定的文件,会有个错误信息为你指出,然后将你不得不重新编辑文件名。若可以建立该文件,minicom会去检查它是否已经存在, 若存在,就假定它是个macro文件并读入;否则,哈,那是你的问题了:-) 如果此文件不存在,就接受此文件名。
+.TP 0.5i
+.B M - Edit Macros
+打开一个新窗口,允许你在此编辑F1到F10的宏。
+.TP 0.5i
+.B N - Macros enabled
+是/否。若允许macro,则F1-F10键将发送VT100/VT200的功能键转义序列。
+.TP 0.5i
+.B O - Character conversion
+在此显示激活的转换表文件名,若看不到,则表明尚未有活动的转换表。按下0,可以看到转换表编辑菜单。
+.RS 0.5i
+.PD 1
+.TP 0.25i
+.B "Edit Macros"
+F1到F10的宏在此定义。窗口底部以图例显示有特殊意义的字符组合。允许以‘^’为前缀加普通文本的方式输入控制字符,其中‘^^’表示‘^’自身。可用‘^~’代码发送1秒的延迟。当你ftp或telnet某地址后,试图login时,它很有用。还可以从拨号目录中加上你的当前用户名和口令,分别用‘\u’和‘\p’表示。若需要在macro中用反斜线字符,应双写为‘\\’。要编辑一个macro,按下相应数字(或字母如F10),则光标移到macro的末尾。编辑该行时,可用左右箭头,Home和End键,Del和BackSpace键,以及ESC和回车键。ESC取消所做的任何修改,回车则接受之。
+.PD 1
+.TP 0.25i
+.B "Character conversion"
+此处可编辑字符转换表。如果你不是美国人,你该知道,许多语言中的字符并不包括在ASCII字符集中,过去也许是用它们替换了ASCII表中不太重要的字符,现在则常常用大于127的字符代码表示。其实有许多表示这些字符的方法。这儿正是为那些使用不同于你的计算机字符集的系统编辑转换表的地方,
+.TP 0.5i
+.B A - Load table
+你可能已经猜出来了。此命令从磁盘中装入转换表。将询问你表的文件名。预定义的表.mciso,.mcpc8及.mcsf7应包含在程序中。表.mciso 并不进行转换, .mcpc8用于连接使用8位pc字符集的系统,.mcsf7 则用于兼容很老式的7位编码的系统, 这种7位码用芬兰语和瑞典语的区分字符置换了字符{|}[]\。
+.TP 0.5i
+.B B - Save table
+以指定文件名保存活动的转换表。
+.TP 0.5i
+.B C - edit char
+这里可对现存的表自行修改。首先将询问你要修改的转换的字符值(十进制);接着你要指出从外部接收的字符在屏幕上显示为何者。然后询问你当按下键盘上的那个键时,你要发送什么。
+.TP 0.5i
+.B D - 下一屏
+.TP 0.5i
+.B E - 前一屏
+不错,可能你注意到了这一屏显示了活动转换的种类。屏幕(通常)太小了,没法用一种简单易懂的格式来一次显示整个表。你可以用此来做右卷动转换表。
+.TP 0.5i
+.B F - convert capture
+切换当写入捕获文件时是否使用转换表。
+.RE
+.RE
+.PD 1
+.TP 0.25i
+.B "Save setup as dfl"
+保存参数,作为下一次启动程序时的缺省值。除了dfl,其它参数名都会出现,这取决于下次启动程序时会用哪一个。
+.TP 0.25i
+.B "Save setup as.."
+以指定名字保存参数。只要以此名为参项启动minicom,它就会用这些参数。当然只有root有使用这个选项的特权。
+.TP 0.25i
+.B "Exit"
+不保存退出此菜单。也可按ESC键。
+.TP 0.25i
+.B "Exit from minicom"
+只有root才会看到这个菜单项 ---- 如果启动 minicom 时用了选项‘-s’的话。这样,就可以在实际上并未运行minicom的情况下,修改其配置。
+.PD 1
+.SH "状态行 STATUS LINE"
+状态行上有好几个指示器,其意义不言自明。可能需要解释一下奇怪的APP和NOR指示器。VT100的光标键可有两种模式:应用模式和光标模式。这由一个转义序列来控制。当你用minicom登录后,如果发现光标键不能工作,比如在vi中,这时你就可以用此指示器来查看光标键是在应用模式中,还是在光标模式中。可以用Ctrl-A、I来切换。如果那这时光标键能工作,可能是远程系统的termcap初始化串发生了错误。
+.PD 1
+.SH "本地化 LOCALES"
+现在minicom已经支持本地语言。这就是说,你可以通过设置环境变量LANG,把多数的英文消息及其它字串转变为其它语言。到1998年7月,已经支持巴西葡萄牙语、芬兰语和日本语。对土耳其语的支持在建。
+.PD 1
+.SH "安全问题 SECURITY ISSUES"
+由于minicom在一些计算机上以root运行,可能你要限制对它的使用。可以通过在缺省文件目录中使用一个叫“minicom.users”的配置文件来实现。该文件的句法如下:
+.PP
+.RS 0.5i
+<username> <configuration> [configuration...]
+.RE
+.PP
+为了允许用户‘miquels’使用缺省配置,可在“minicom.users”中输入下行:
+.PP
+.RS 0.5i
+miquels dfl
+.RE
+.PP
+如果你想让用户使用比缺省值更多的配置,那么在用户名下面加上那些配置的名字即可。若用户名后未给出配置,则minicom假定该用户可以使用所有配置。
+.PD 1
+.SH "杂项 MISC"
+若 minicom 被挂起,则可用 SIGTERM 来 kill之(即kill -15,或者,既然sigterm为缺省值,干脆“kill 在复位等动作后安全退出 minicom 。 还可以不挂断线路, 用带命令“! killall -9 minicom”的脚本来kill minicom。若没有使用参数-9,则minicom会先挂断,再退出。
+.PP
+因为许多转义序列以ESC开头(上箭头为ESC[A),所以minicom无法知道它获得的ESC字符是你按下的ESC键,还是某一转义序列的一部分。
+.PP
+minicom的一个老版本,V1.2,以一种相当拙劣的方式解决此问题:要获得ESC键,你得把它按
+.IR 两次。
+.PP
+这在1.3版中就好一点儿了:现在内置了1秒超时,象在vi中的一样。在有select()系统调用的系统中,超时为0.5秒。而且....奇怪吧:还加了一个Linux相关的专用hack :-) 现在,minicom可以区分ESC键和转义序列了。要知其中猫腻,请参wkeys.c。不过它干得确实不错!
+.SH "文件 FILES"
+minicom将其配置文件保存在一个目录中,通常是:/var/lib/minicom, /usr/local/etc或者/etc。要想知道minicom编译时内定的缺省目录,可用命令“minicom -h”,在那儿你可能还会找到runscript(1)的demo文件, and the examples of character conversion tables either there or in the subdirectories of /usr/doc/minicom*. The conversion tables are named something like mc.* in that directory, but you probably want to copy the ones you need in your home directory as something beginning with a dot.
+.sp 1
+.nf
+minicom.users
+minirc.*
+$HOME/.minirc.*
+$HOME/.dialdir
+$HOME/minicom.log
+/usr/share/locale/*/LC_MESSAGES/minicom.mo
+.fi
+.SH "版本 VERSION"
+Minicom is now up to version 2.00.0.
+.SH "作者 AUTHOR"S
+minicom 原创作者为 Miquel van Smoorenburg (miquels at cistron.nl).
+He wrote versions up to 1.75.
+.br
+Jukka Lahtinen (walker at clinet.fi, walker at megabaud.fi)
+负责1.78以上的新版本,由以下人士协助:
+.br
+filipg at paranoia.com 为V1.79编写历史缓冲区搜索程序。
+.br
+Arnaldo Carvalho de Melo (acme at conectiva.com.br) 完成国际化和巴西葡萄牙语的翻译。
+.br
+Jim Seymour (jseymour at jimsun.LinxNet.com) 编写多modem支持,以及V1.80版以来使用的文件名选择窗口。
+.br
+Tomohiro Kubota (kubota at debian.or.jp) 编写日文翻译及引用程序,并进行了一些更正。
+.br
+Gael Queri (gqueri at mail.dotcom.fr) 编写法语翻译。
+.br
+Arkadiusz Miskiewicz (misiek at pld.org.pl) wrote the Polish translations.
+.br
+Kim Soyoung (nexti at chollian.net) wrote the Korean translations.
+.PP
+本man page中的内容多拷贝自minicom的原始README,作了几处更正。其中有些内容及更正由Michael K.Johnson (johnsonm at stolaf.edu) 完成。
+.PP
+Jukka Lahtinen (walker at clinet.fi) 加上了1.75版以后的一些变动信息。
+
+.SH "[中文版维护人]"
+.B 范逊
+.SH "[中文版最新更新]"
+.B 2000.2.28
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/mirror.1l b/src/man1/mirror.1l
new file mode 100644
index 0000000..5cf1643
--- /dev/null
+++ b/src/man1/mirror.1l
@@ -0,0 +1,859 @@
+.\"
+.\" 软件教程 之 man mirror 系统篇 软件篇 技巧篇 Linux man篇
+.\" 
+.\" 原始文件:mirror-2.3 - mirror.man
+.\" 档案叙述:映射远端档案的软体
+.\" 文件编号:LRG.LDTP.MANUAL.006
+.\" 翻译日期:1996/03/03
+.\" 翻译维护:asdchen at ms1.hinet.net O
+.\" ---------------------------------------------------------------X---
+.\" O
+.\" MIRROR(1L) MIRROR(1L)
+.\" 
+.TH mirror 1l
+.SH NAME
+mirror - 映射在远端节点上的档案
+
+.SH "总览 SYNOPSIS"
+mirror [flags] -gsite:pathname
+mirror [flags] [package-files]
+
+.SH "描述 DESCRIPTION"
+Mirror 是以 Perl 所写成的一套在执行它的机器与一台远端主机
+之间使用 ftp 协定复制整个目录架构及其内容的软体。它藉由在
+传输之前比较档案时间(time-stamps) 以及大小来避免拷贝不必要
+的档案。除此之外,它还可以选择性地压缩(compress, gzip)以及
+分割(split)档案。
+.PP
+它是写给档案维护人员使用的但也可以让任何想要经由 ftp 传输
+大量档案的人使用。
+.PP
+无论如何叫用它, mirror 总是执行相同的几个基本步骤。它连线
+到远端节点,在内部建立本地目标目录(target direction)的目录
+列表,为远端目录建立一份目录列表,比较它们,建立任何必须的
+子目录,传输适当的档案(设定它们的档案时间以符合远端节点上
+的档案时间),建立任何符号链结,然後移除任何已不必要的物件
+(objects) 最後并结束连线。
+.PP
+Mirror 可以处理符号链结但并非原本的链结。它不会复制拥有者
+(owner)或是群组(group)的资讯。如果你需要这些选项其中的任何
+一个,使用 rdist(1) 来取代它。
+.PP
+Mirror 系以上面所列语法概述其中的一种方法呼叫执行。
+.PP
+第一种方式是用来将一个远端目录撷取回现行目录。如果你要映射
+的是一个目录,最好是以斜线('/') 来结束路径名称这样一来远端
+递回列表(包含往下子目录的列表)会比较小或者是使用 -r 旗标
+来禁止递回(参阅下面所述的 -g 旗标)。这个方式将不会使用到
+mirror.defaults 档案。
+.PP
+在上面所列语法概述的第二种方式里,至少需要有一份最少数目的
+参数而且 mirror 是由从配置档案(或标准输入)里读取的设定所
+控制。如果可以在 mirror 执行档所在目录或是 PERLLIB 路径里
+找到一个名为 mirror.defaults 档案,那麽它会首先被载入。这
+用来为所有的配置档提供一般化的预设值。
+.PP
+Mirror 本来是为映射远端 Un*x 系统的档案而写,但是它已逐渐
+成长(like topsy)。
+.PP
+.SH "标记 FLAGS"
+.TP
+-d 
+启动侦错。如果下达这个参数超过一次,则侦错层级将会
+递增。目前有用的最大层级是四。
+.TP
+-ppackage
+只映射所给定的档案包裹(package)。 此选项可下达多次
+在这种情形下所有给定的档案包裹都将会映射。没有这个
+选项的话,将映射所有的档案包裹。档案包裹 (package)
+是一个符合相对於 package 变数的正规表示式(regexp)
+.TP
+-R 
+类似 -p 但是跳过所有的档案包裹直到它找到给定的档案
+包裹为止。这对於从 mirror 执行失败而离开的地方重新
+开始执行会有用。
+.TP
+-n 
+除了比较本地以及远端的目录之外不做任何事,不会执行
+任何档案传输。将侦错层级设为二,所以你可以看到对於
+将要执行之动作的追踪。
+.TP
+-F 
+使用暂存的 dbm 档案以储放关於档案的资讯。如果你要
+映射一个非常大的目录这会有用。参阅 use_files 这个
+变数。
+.TP
+-g
+节点:路径
+.PP
+取得给定节点上的所有档案。如果路径符合 .*/.+ 那麽
+它是目录的名称而後面的部份则是所要取得之档案名称的
+样板(pattern)。 如果路径符合 .*/ 则它是目录的名称
+而且其所有的内容都将会被撷取。另一方面路径还是用在
+'/' 的样板。如果你使用 host:/fred 的话,那麽将作出
+一份远端主机上之 / 的完整目录列表。如果所有你想要
+的是目录 /fred 的内容,则指定 host:/fred/ 才是。
+.TP
+-r 
+等於 -krecursive=false
+.TP
+-v 
+印出 mirror 版本资讯细节并结束。
+.TP
+-T 
+强制将任何本地档案的时间重置成与远端档案相同。一般
+仅用於以已存在档案内容之处初始一个映射区域的时候。
+.TP
+-U [档案名称]
+把所有上传的档案记录到所给的档案名称。记得 mirror
+切换到 local_dir 以执行其作业,所以它应该得是完整
+(full)的路径名称。如果没有给任何参数,其预设值为
+`pwd`/upload_log.day.month.year.
+.TP
+-kkey=value
+盖过任何预设关键字的值(key/value) 。
+.TP
+-m 
+等於 -kmode_copy=true
+.TP
+-t 
+等於 -ktext_mode=true
+.TP
+-f 
+等於 -kforce=true
+.TP
+-ssite 
+等於 -ksite=site
+.TP
+-uuser 
+等於 -kremote_user=user 接著会提示你要求密码,并且
+还会关闭本地回应(echo)以兹配合。这个密码是用来设定
+remote_password 用的。
+.TP
+-L 
+只是产生一份输入的美观列表版本。
+.TP
+-G 
+从远端机器取得档案。本地以及远端目录必须在命令列上
+给定。(这个选项已经不再支援。)
+.TP
+-P 
+把档案放上远端机器。本地以及远端目录必须在命令列上
+给定。(这个选项已经不再支援。)
+.TP
+-C filename
+指定配置文件。配合 -P 以及 -G 选项之配置文件之需。
+(这个选项已经不再支援。)
+
+.SH "文件 Package Files"
+.PP
+配置档会被剖析成一系列的叙述。空白行及以杂凑(hash)符号起始
+的行会被忽略。每个叙述的形式都是
+.CS
+关键字=值
+.CE
+或是
+.CS
+关键字+值
+.CE
+.PP
+你可以在关键字以及等号/加号的前面加上空白字元。所有紧跟在
+等号/加号之後的每样事物都是一个值,这包含任何开头或结尾的
+空白字元。等号的版本会将关键字设定为该值,而加号的版本会将
+该值连结到预设值的结尾上。
+.PP
+一个叙述可以在除最後一行以外使用 ampersand('&') 字元作结束
+以连续超过多行。尾随在 ampersand 之後的行,都会以移除所有
+开头空白字元的方式附加到目前所在行的後面。
+.PP
+这里是一份关键字的列表而且它们预设的值放在 square brackets
+里面列出。以星号标出的选项目前还没有实作出来。
+.PP
+虽然有很多关键字可以设定,内建的预设值将可处理大部分的情况
+。一般只需要设定 package, site, remote_dir 以及 local_dir
+即可。
+.SS
+.TP
+package 
+对所要映射的档案包裹而言应该得要是个唯一的
+名称。['']
+.TP
+comment 
+用在报告里。['']
+.TP
+skip 
+设定这个项目会使得该档案包裹被跳过。此值会
+被报告为跳过的原因。(这比 commenting the
+entry out 来得容易。)['']
+.TP
+site 
+远端节点的节点名称或是 IP 位址。['']
+.TP
+remote_dir 
+所要映射的远端目录。参阅 recursed_hard。
+['']
+.TP
+local_dir 
+本地目录。['']
+.TP
+remote_user 
+用在远端节点的使用者名称。[anonymous]
+.TP
+remote_password 
+用在远端节点的密码。[user at localhostname]
+.TP
+get_patt 
+所要撷取之远端路径名称的正规表示式。[.]
+.TP
+exclude_patt 
+所要忽略之远端目录名称的正规表示式。['']
+.TP
+update_local 
+把 get_patt 设为 local_dir/*。这在如果你只
+想要映射远端档案服务处中所选定的子目录时会
+有用。[false]
+.TP
+local_ignore 
+所要忽略之本地路径名称的正规表示式。对用来
+跳过受限(restricted)的本地目录有用。['']
+.TP
+do_deletes 
+如果目的(destination) 档案不存在於来源树中
+(source tree)中则删除之。[false]
+.TP
+delete_patt 
+检查所要删除之本地路径名称的正规表示式。不
+符合的名称不会被检查。所有以此样板所选出的
+档案都会被检查是否符合 delete_excl 选项。
+[.]
+.TP
+delete_get_patt 
+把 delete_patt 设为 get_patt。[false]
+.TP
+delete_excl 
+永不删除之本地路径名称的正规表示式。['']
+.TP
+save_deletes 
+把本地档案储存到 save_dir 里取代将其删除。
+[false]
+.TP
+save_dir 
+当本地档案不存在於远端节点的时候会被转移到
+此处。[Old]
+.TP
+max_delete_files
+如果有超过此数的档案会被删除,则不进行删除
+动作,只发出警告。若此值系以百分比字元作为
+结束的话则此值为取消删除前之档案的百分比。
+[10%]
+.TP
+max_delete_dirs
+如果有超过此数的目录会被删除,则不进行删除
+动作,只发出警告。若此值系以百分比字元作为
+结束的话则此值为取消删除前之档案的百分比。
+[10%]
+.TP
+max_days 
+如果 >0 的话,忽略比此日数更久以前的档案。
+任何被忽略的档案将不会被传输或删除。[0]
+.TP
+split_max 
+如果 >0 而且档案的大小比此值大,该档案会被
+切割以便本地储存(档案名称同时也必须要符合
+split_patt 选项)。[0]
+.TP
+spilt_patt 
+要储存在本地前需先分割之远端路径名称的正规
+表示式。['']
+.TP
+split_chunk 
+档案所要切割成的大小。[102400]
+.TP
+ls_lR_file 
+包含 ls-lR 的远端档案,否则执行远端 ls 以
+取得目录列表。['']
+.TP
+local_ls_lR_file
+包含 ls-lR 的本地档案,否则使用远端节点的
+ls_lR_file 取代。这在第一次映射一个很大的
+档案包裹时有用。['']
+.TP
+recursive 
+执行范围包括子目录。[true]
+.TP
+recuese_hard 
+必须对每一个子目录执行 cwd 以及 ls 以产生
+远端 ls 结果。在这种情形下 remote_dir 必须
+是绝对的(从 / 开始)而非相对的。使用 ftp
+里的 pwd 指令以找出远端档案区域之路径开始
+处。(如果 remote_fs 是 vms 则不可使用。)
+[false]
+.TP
+flags_recursive 
+传送给远端 ls 用以执行递回列出的旗标。
+['-lRat']
+.TP
+flags_nonrecursive
+传送给远端 ls 用以执行非递回列出的旗标。
+['-lat']
+.TP
+remote_fs 
+远端档案储存型态。处理 unix, dls, netware
+vms, dosftp, macos, lsparse 以及 infomac。
+细节参阅下面 FILESTORES 段落。[unix]
+.TP
+vms_keep_version
+映射 vms 档案时,保留版本编号。若为 false
+,会抽离版本而只保留基本的档案名称。[true]
+.TP
+vms_xfer_text 
+要以文字模式(TEXT mode) 传输之 vms 档案的
+样板(忽略大小写)。
+['readme$|info$|listing$|.c$']
+.TP
+name_mappings 
+远端到本地的路径名称对映(一个 perl s 指令
+eg. s:old:new:)。['']
+.TP
+external_mapping
+执行名称对映的外部函式。['']
+.TP
+get_newer 
+如果远端档案的日期比本地的新则取回。[true]
+.TP
+get_size_change 
+如果档案的大小与本地的不同则取回。如果档案
+是在撷取时压缩的,则其大小会自动地忽略掉。
+[true]
+.TP
+compress_patt 
+储存在本地之前要先压缩之档案的正规表示式。
+参阅 get_size_change 选项。['']
+.TP
+compress_excl 
+不压缩之档案的正规表示式(忽略大小写)。
+[\.(z|gz)$]
+.TP
+compress_prog 
+用来压缩档案的程式。如果设为 compress 或是
+gzip 这两个字的话,则将会自动地设定完整的
+路径名称以及正确的 compress_suffix(副档名)
+。使用 gzip 的时候,会使用第九级 (gzip -9)
+压缩。注意到可以在 compress_prog 之後设定
+compress_suffix 将其重设为非标准值。
+[compress]
+.TP
+compress_suffix 
+压缩程式附加到档案後的字元。若压缩程式选项
+compress_prog 为 compress 的话,则此预设值
+为 .Z 。若 compress_prog 为 gzip 的话,则
+此预设值为 .gz。['']
+.TP
+compress_conv_patt
+如果 compress_prog 是 gzip 的话,符合这个
+样板的档案会被解压缩并在本地储存前以 gzip
+重新压缩。压缩转换只对 compress 到 gzip 此
+转换有意义。[(\.Z|\.taz)$]
+.TP
+compress_conv_expr
+把副档名从 compress 转为 gzip 形式的 perl
+表示式。[s/\.Z$/\.gz/;s/\.taz$/\.tgz/]
+.TP
+compress_size_floor
+只压缩比此数值小的档案。[0]
+.TP
+force_times 
+强制要求本地时间符合远端时间。[yes]
+.TP
+retry_call 
+如果初始连线失败,一分钟之後重试一次。这是
+用来处理一些反向找寻(lookup)进入(incoming)
+主机但有时会在第一次尝试时超过时间的节点。
+[yes]
+.TP
+update_log 
+档案名称,系相对於 local_dir 选项之设定值
+,此处会保留一份更新报告。['']
+.TP
+mail_to 
+将一份系统执行工作记录寄给这个以逗点隔开之
+列表上的人。['']
+.TP
+user 
+给予本地路径名称之使用者名称或使用者号码。
+['']
+.TP
+group 
+给予本地路径名称之群组名称或群组号码。['']
+.TP
+file_mode 
+给予本地建立之档案的权限。[0444]
+.TP
+dir_mode 
+给予本地建立之目录的权限。[0755]
+.TP
+timeout 
+在此秒数後结束 ftp 要求。[40]
+.TP
+ftp_port 
+远端 ftp 伺服程式的埠号。[21]
+.TP
+proxy 
+设为 1 以使用代理转接(proxy)式的 ftp 服务
+。[0]
+.TP
+proxy_ftp_port 
+代理服务之 ftp 伺服程式的埠号。[4514]
+.TP
+proxy_gateway 
+代理服务之名称,也可用 INTERNET_HOST 变数
+来提供。[internet-gateway]
+.TP
+mode_copy 
+指出是否需要拷贝模式位元(mode bits) 的旗标
+。[false]
+.TP
+interactive 
+非批次(non-batch) 传输。系以 -g 旗标实作。
+[false]
+.TP
+text_mode 
+如果为 true 的话,档案以文字模式传输。Un*x
+较喜欢以二进位传输所以这是预设值。[false]
+.TP
+force 
+如果为 true 的话,所有档案都将被传输而不去
+理会档案的大小或时间。[false]
+.TP
+get_file 
+以执行 get 而非 put 作为预设。[true]
+.TP
+verbose 
+冗馀讯息。[false]
+.TP
+delete_source 
+一旦传输完成後删除来源档案。(此选项已不再
+支援。)[false]
+.TP
+disconnect 
+档案包裹结束後从远端节点结束连线。[false]
+.TP
+mail_prog 
+呼叫执行以将信件寄送给 mail_to 列表的程式
+。可以传递 mail_subject 参数。预设为 mailx
+Mail, mail 或任何在你的系统上可用的东西。
+['']
+.TP
+mail_subject 
+mirror update ['-s]
+.TP
+hostname Mirror 
+自动地跳过节点名称符合此主机的档案
+包裹。预设为本地主机名称。['']
+.TP
+use_files 
+将 mirroe 所使用的 associative arrays 放到
+暂存档里。[false]
+.TP
+umask 
+预设不允许任何 setuid 的东西通过。[07000]
+.TP
+remote_group 
+如果存在则设定远端 'site group' 。['']
+.TP
+remote_gpass 
+如果存在则设定远端 'site gpass' 。['']
+.TP
+remote_idle 
+如果非空(not null),则尝试并将远端闲置计时
+(idle timer)设为此值。['']
+.TP
+make_bad_symlinks
+如果为 true 的话,将会把符号链结连到不允许
+(不存在)的路径名称。旧版预设值为 true 。
+[false]
+.TP
+follow_local_symlinks
+应该要跟从档案或是目录所指向处之路径名称的
+正规表示式。这使得 mirror 不能够见到本地的
+符号链结。['']
+.TP
+get_missing 
+确实取回档案。当设为 false 的时候,只执行
+删除以及建立符号链结。用来删除比 max_days
+更旧的过时档案而不必撷取这些旧档案。[true]
+.SE
+.PP
+每一组关键字定义如何映射一份特定的档案包裹而且应该要以一行
+唯一的 package 开始。档案包裹的名称用在产生报告及 -p 参数
+上,所以应使用较具记忆性的名称。定义每个档案包裹所需的最小
+需求是 package, site, remote_dir 以及 local_dir 。一旦找到
+一行 package 叙述,所有的预设值都会重设。
+.PP
+如果 package 的名称是 defaults 的话,则不会连线到任何节点
+去,但是所给任何关键字的预设值都会改变。一般而言所有的预设
+值都在 mirror.defaults 这个将会在任何 package 细节前自动
+载入的档案里。
+.PP
+.CS
+
+# Sample mirror.defaults
+package=defaults
+# The LOCAL hostname - if not the same as `hostname` returns
+# (I advertise the name src.doc.ic.ac.uk but the machine is
+# really puffin.doc.ic.ac.uk.)
+hostname=src.doc.ic.ac.uk
+# Keep all local_dirs relative to here
+local_dir=/public/
+remote_password=ukuug-soft at doc.ic.ac.uk
+
+.CE
+.PP
+如果档案包裹不是 defaults 的话,则 mirror 将会执行下列步骤
+。除非侦测出一个内部错误,任何错误都将会使得目前的档案包裹
+被跳过并且尝试下一个。
+.PP
+如果 mirror 并非已经连上该节点,它将会从任何已经连上的节点
+离线并尝试连线到远端节点的 ftp 伺服程式去。它接著将会使用
+所给的远端使用者名称及密码签入。一旦连上, mirror 开启二进
+位传输模式。接下来它切换到所给的本地目录并扫描之以取得已经
+存在的本地档案的细节。如果必要,将会建立本地目录。一旦这项
+作业完成,会以类似的方式扫描远端目录。 Mirror 系切换到远端
+目录并执行 ftp LIST 指令,然後依据 recursive 选项的值传递
+flags_recursive 选项或 flags_nonrecursive 选项来完成。此外
+也可以撷取一个包含有目录列表的档案。每一个远端路径名称都将
+会执行任何指定的对映(mapping) 以建立本地路径名称。然後任何
+由 exclude_patt, max_days, get_newer 以及 get_size_change
+关键字指定的检验都会施行在档案或符号链结上。只有 exclude-
+patt 检验会施行在子目录上。
+.PP
+上述过程建立一份所有需要的远端档案以及要储存它们之本地路径
+名称的列表。
+.PP
+一旦目录列表完成,所有需要的档案都会从远端节点撷取到它们的
+本地路径名称。作法是把档案撷取到目标目录里的暂存档。如果有
+需要,暂存档会被压缩(compressed, gzip'ed) 或是切割(或者是
+压缩後再切割)。当传输成功後再把暂存档改名。
+
+.SH "档案储放 FILESTORES"
+.PP
+Mirror 使用远端目录列表以找出可以取得哪些档案。 Mirror 本
+来的目标是连线到 unix 的 ftp 伺服程式使用标准的 ls 指令。
+要使用於非标准 ls 的 unix 主机或非 unix 的主机上它必须要设
+remote_fs 变数以符合将会传回(return)的目录列表类型。此变数
+(remote_fs) 与其它变数特别是 flags_recursive, recurse_hard
+以及 get_size_change 之间有些交互作用。下列的节次将会秀些
+在不同档案服务处执行 ftp 的 dir 指令所产生的结果以及相关
+变数的建议。在配合某些设定与众不同的档案服务处的时候你可能
+必须变更此处所建议的变数设定。
+.PP
+.CS
+remote_fs=unix
+total 65
+-rw-r--r-- 1 ukuug ukuug 2245 Jun 28 20:06 README
+-rw-r--r-- 1 ukuug ukuug 61949 Jun 29 19:13 mirror-2.1.tar.gz
+.CE
+.PP
+这是预设值而且你应该不必重设任何其它变数。
+.PP
+.CS
+remote_fs=dls
+00index.txt 189916
+0readme 5793
+1_x/ = OS/2 1.x-specific files
+.CE
+.PP
+这是某些 unix 档案服务处所使用的 ls 变化型。它在列表中提供
+其所知项目的描述。把 flags_recursive 设为 -dtR 即可。
+.PP
+.CS
+remote_fs=netware
+- [R----F--] jrd 1646 May 07 21:43 index
+d [R----F--] jrd 512 Sep 09 10:52 netwire
+d [R----F--] jrd 512 Sep 02 01:31 pktdrvr
+d [RWCE-F--] jrd 512 Sep 04 10:55 incoming
+.CE
+.PP
+这是 Novell 档案服务处所使用的。把 recurse_hard 设为 true
+并且把 flags_recursive 设为空(nothing)的。参阅 remote_dir
+.PP
+.CS
+dosftp
+00-index.txt 6,471 13:54 7/20/93 alabama.txt 1,246 23:29 5/08/92
+alaska.txt 873 23:29 5/08/92 alberta.txt 2,162 23:29 5/08/92
+.CE
+.PP
+dosftp 是在 dos 上执行的一套 ftp 伺服程式。recurse_hard
+设为 true 并且把 flags_recursive 设为空(nothing)的。
+.PP
+.CS
+remote_fs=macos
+-------r-- 0 127 127 Aug 27 13:53 !Gopher Links
+drwxrwxr-x folder 32 Sep 9 16:30 FAQ
+drwxrwx-wx folder 0 Sep 9 09:59 incoming
+.CE
+.PP
+macos 是麦金塔(Macintosh) ftp 伺服程式的一个变化型。虽然此
+输出类似於 unix 但是 unix 这个 remote_fs 型态无法应付它是
+因为每个档案有三个大小。把 recurse_hard 设为 true, flags_
+recursive 设为空(nothing)的,get_size_change 设为 false 并
+将 compress_patt 设为空(最後这个设定是因为此不平常的档案
+名称会扰乱执行压缩的 shell 界面)。参阅 remote_dir 设定。
+.PP
+.CS
+remote_fs=vms
+USERS:[ANONYMOUS.PUBLIC]
+
+1-README.FIRST;13 9 14-JUN-1993 13:09 [ANONYMOUS] (RWE,RWE,RE,RE)
+PALTER.DIR;1 1 18-JAN-1993 11:56 [ANONYMOUS] (RWE,RWE,RE,RE)
+PRESS-RELEASES.DIR;1
+1 11-AUG-1992 20:05 [ANONYMOUS] (RWE,RWE,,)
+.CE
+.PP
+alternatively:
+.PP
+.CS
+[VMSSERV.FILES]ALARM.DIR;1 1/3 5-MAR-1993 18:09
+[VMSSERV.FILES]ALARM.TXT;1 1/3 4-FEB-1993 12:20
+.CE
+.PP
+把 flags_recursive 设为 '[...]' 并将 get_size_change 设为
+false。recurse_hard 在 vms 上不能使用。除此之外还可以参阅
+vms_keep_version 以及 vms_xfer_text 变数。
+.PP
+.SS
+.TP
+remote_fs=infomac
+这个特殊型态仅在处理 sumexaim.stanford.edu info-mac 目录之
+help/all-files 有意义。recurse_hard 应该设为 true。
+.TP
+remote_fs=lsparse
+允许开启高阶除错方式重新剖析由 mirror 产生的列表。这只对於
+mirror wizards 有用。
+.SE
+.SH "范例 EXAMPLES"
+这里是从 src.doc.ic.ac.uk 上来的 mirror.defaults 档案:
+.PP
+.CS
+# This is the default mirror settings used by my site:
+# src.doc.ic.ac.uk (146.169.2.1)
+# This is home of the UKUUG Software Distribution Service
+
+package=defaults
+# The LOCAL hostname - if not the same as `hostname`
+# (I advertise the name src.doc.ic.ac.uk but the machine is
+# really puffin.doc.ic.ac.uk)
+hostname=src.doc.ic.ac.uk
+# Keep all local_dirs relative to here
+local_dir=/public/
+remote_password=ukuug-soft at doc.ic.ac.uk
+mail_to=
+# Don't mirror file modes. Set all dirs/files to these
+dir_mode=0755
+file_mode=0444
+# By default, files are owned by root.zero
+user=0
+group=0
+# # Keep a log file in each updated directory
+# update_log=.mirror
+update_log=
+# Don't overwrite my mirror log with the remote one.
+# Don't retrieve any of their mirror temporary files.
+# Don't touch anything whose name begins with a space!
+# nor any FSP or gopher files...
+exclude_patt=(^|/)(.mirror$|.in..*.$|MIRROR.LOG|#.*#|.FSP|.c
+ache|.zipped|lost+found/| )
+# Try to compress everything
+compress_patt=.
+compress_prog=compress
+# Don't compress information files, files that don't benefit
+from
+# being compressed, files that tell ftpd, gopher, wais... to
+do things,
+# the sources for compression programs...
+# (Note this is the only regexp that is case insensitive.)
+compress_excl+|^.notar$|-z|.taz$|.tar.Z|.arc$|.zip$|.lzh$|.z
+oo$|.exe$|.lha$|.zom$|.gif$|.jpeg$|.jpg$|.mpeg$|.au$|read.*me|index|.message|in
+fo|faq|gzip|compress
+# Don't delete own mirror log or any .notar files (incl in s
+ubdirs)
+delete_excl=(^|/).(mirror|notar)$
+# Ignore any local readme files
+local_ignore=README.doc.ic
+# Automatically delete local copies of files that the
+# remote site has zapped
+do_deletes=true
+.CE
+Here are some sample package descriptions:
+.CS
+package=gnu
+comment=Powerful and free Un*x utilities
+site=prep.ai.mit.edu
+remote_dir=/pub/gnu
+# Local_dir+ causes gnu to be appended to the default local_
+dir
+# so making /public/gnu
+local_dir+gnu
+exclude_patt+|^ListArchives/|^lost+found/|^scheme-7.0/|^.his
+tory
+# I tend to only keep the latest couple of versions of thing
+s
+# this stops mirror from retrieving the older versions I've
+removed
+max_days=30
+do_deletes=false
+
+package=X11R5
+comment=X Windows (windowing graphics system for Un*x)
+site=export.lcs.mit.edu
+remote_dir=/pub/R5
+local_dir+computing/graphics/systems/X11/pub/R5
+# This is a local symlink to the free-for-all contrib area
+# and is mirrored elsewhere
+local_ignore=^contrib$
+# Don't compress a thing. It is already compressed
+# but doesn't look it.
+compress_patt=
+
+package=cnews
+comment=The C News system
+site=ftp.cs.toronto.edu
+remote_dir=/pub/c-news
+local_dir+computing/usenet/software/transport/c
+compress_excl+|patches/PATCHDATES|WhereFrom
+
+# THIS IS JUST A TEST
+package=test vms site
+site=vmsbox.somewhere.ac.uk
+local_dir=/tmp/copy4
+remote_dir=vmsserv/files
+remote_fs=vms
+# Must do these settings for VMS
+flags_recursive=[...]
+get_size_change=false
+
+# and on, and on ...
+.CE
+.SH 提示
+要增加一个新的档案包裹,首先打开 -n 选项检查它。
+.PP
+如果你要增加到一个已经存在档案的地方,那麽通常最好是 force
+本地已经存在的档案时间符合远端的这样将会执行与远端档案之间
+的时间比较。
+.PP
+尝试并将所有从相同节点撷取的档案包裹放在一起。使用这种方式
+的话 mirror 将仅需签入一次。
+.PP
+记得所有的正规表示式都是 Perl 正规表示式。
+.PP
+如果远端节点包含你想展开("flatten out") 到相对应档案的符号
+链结,那麽以改变传送给远端 ls 旗标的方式执行之。
+.CS
+flags_recursive+L
+.CE
+或是
+.CS
+flags_nonrecursive+L
+.CE
+首先以在远端节点的 ftp 指令下尝试 ls -lRatL 的方式来测试
+远端档案服务处是否有任何符号链结回圈。
+.PP
+如果你正要映射一个非常大而不常改变的节点,等它初次映射後在
+设定中加上 max_days=7 选项。以此方式 mirror 在更新的时候仅
+需要注意最近的档案。然後每个礼拜一次,或者是有必要的时候,
+以 -kmax_days=-0 呼叫 mirror 强制执行一次完整的更新。
+.PP
+如果你不想压缩从远端节点取得的任何东西则最简单的方法就是将
+compress_patt 设为空(nothing) 的。
+.PP
+如果你想在映射一份档案包裹後执行某个指令那麽有个有用的技巧
+是将 mail_prog 变数重设为程式的名称并将 mail_to 重设为其
+参数。
+.PP
+对於 netware, dosftp, macos 以及 vms 而言一般你应该得要把
+remote_dir 设为远端 ftp 伺服程式的 home 目录。手动连线并
+在切换到子目录之前使用 pwd 指令找出 home 在哪里。如果你仅
+想要映射整个档案树的一部份那麽应该在开头处给定包含此 home
+目录的完整路径名称。
+.PP
+macos 的名称有时候会包含一些很难让它们通过 un*x shells 的
+字元。因为档案压缩是经由 shell 执行最好设 compress_patt=
+以便关闭压缩。
+.PP
+macos 档案在传输时似乎无论如何其大小都会改变,不管是以二进
+位或是文字模式。所以最好是设 get_size_change=false 较佳。
+.SH "网路观念(NETIQUETTE)"
+如果你要映射一个远端节点,请遵守该节点管理者对於存取开节点
+所设的限制。你通常可以使用标准的 ftp 指令连到该档案服务处
+。任何限制一般会作为签入时的标题或是放在一个(希望是)明显
+的档案里。
+.PP
+这里是,我希望是,一些好的一般原则:
+.PP
+只在本地以及远端节点的工作时间以外映射节点。
+.PP
+尝试每天映射一个远端节点超过一次可能是不友善的。
+.PP
+在映射一个远端节点之前,尝试先从当地的档案服务处寻找该档案
+包裹,因为没有人会高兴你没有必要地占用许多网路频宽。
+.PP
+如果你有一个当地的档案服务处,那麽请告诉别人它的存在让他们
+不必量费频宽以及 CPU 在远端节点上。
+.PP
+要记得在远端节点改变其存取限制时检查你的配置档。
+.PP
+定期检查远端节点是否有新的限制。
+.SH "参阅 SEE ALSO"
+perl(l), ftp(1), mm(1)
+
+.SH "虫虫 BUGS"
+某些网路观念指引应该要强调。
+.PP
+应该要能够如同符号链结一般地应付链结。
+.PP
+Suffers from creeping featurism.
+
+.SH "注意 NOTES"
+在 mirror 里的物件比你所想的还要近!
+
+.SH "作者 AUTHOR"
+Written by Lee McLoughlin . It uses an
+extended version of the ftp.pl package originally by: Alan
+R. Martello which uses the chat2.pl pack-
+age by: Randal L. Schwartz
+
+Special thanks to the following people for patches, com-
+ments and other suggestions that have helped to improve
+mirror. If I have omitted anyone, please contact me.
+
+James Revell
+Chris Myers
+Amos Shapira
+Paul A Vixie
+Jonathan Kamens
+Christian Andretzky
+Kean Stump
+Anita Eijs
+Simon E Sperro
+Aaron Wohl
+Michael Meissner
+Michael Graff
+Bradley Rhoades
+Edwards Reed
+Joachim Schrod
+David Woodgate
+Pieter Immelman
+Jost Krieger
+
+Copyright © 1999 《Best Linux》. All rights reserved. Revised: 99-11-28.
+	
+.SH "[中文版维护人]"
+.B 软件教程
+.PP
+最新的版本是mirror-2.9.7(20031118) 因此您手上这份1996年的原始文档+1999年的翻译也许不能满足您的要求了。请登录
+.BI http://sunsite.org.uk/packages/mirror/mirror.html
+来参看原文。
+.SH "[中文版最新更新]"
+.B 2001/01/01
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mkdir.1 b/src/man1/mkdir.1
new file mode 100644
index 0000000..17e499c
--- /dev/null
+++ b/src/man1/mkdir.1
@@ -0,0 +1,59 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Chinese version Copyright Surran of www.linuxforum.net
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH MKDIR 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+mkdir \-建立目录
+.SH 总览
+.BI "mkdir [" 选项 "] " 目录...
+.sp
+POSIX 选项:
+.B "[-p] [-m mode]"
+.SH GNU 选项(缩写):
+.B "[-p] [-m mode] [--verbose] [--help] [--version] [--]"
+.sh 描述
+mkdir 用指定的名字建立目录。
+缺省时,新建立的目录模式为0777,即不加保护地对所有人
+都可读、可写、可执行。
+.SH 选项
+.TP
+.BI "-m mode, --mode=mode"
+为新建立的目录设定模式,就象应用命令chmod一样,以后仍
+然使用缺省模式建立新目录。
+.TP
+.BI "-p, --parents"
+为所给出的目录建立丢失了的父目录。所建立的父目录的模式
+相当于用命令 umask 进行了 'u+wx' 的设置。忽略参数对已存
+在的目录的覆盖。(例如:已存在目录/a,当用到命令
+'mkdir /a'时报错,而'mkdir -p /a'则不会。)
+.TP
+.BI "--verbose"
+打印出新建立的每一个目录名。与--parents联合使用最有效。
+.SH GNU 标准选项
+.TP
+.BI "-help"
+在标准输出上显示使用信息并顺利退出。
+.TP
+.BI "-version"
+在标准输出上显示版本信息并顺利退出
+.TP
+.BI "--"
+终端选项列表.
+.SH 环境变量
+变量LANG,LC_ALL,LC_CTYPE,LC_MESSAGES按常规定义。
+.SH 遵循 
+POSIX 1003.2
+.SH 注意
+本文出自 fileutils-4.0,其他版本肯会有微小差别。任
+何添加或纠错意见请寄:aeb at cwi.nl,程序Bugs请告知:
+fileutils-bugs at gnu.ai.mit.edu
+
+.SH "[中文版维护人]"
+.B Surran  <email>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mkfifo.1 b/src/man1/mkfifo.1
new file mode 100644
index 0000000..98dbe4d
--- /dev/null
+++ b/src/man1/mkfifo.1
@@ -0,0 +1,60 @@
+.\" 版权所有 Andries Brouwer, Ragnar Hojland Espinosa和A. Wik, 1998.
+.\" 中文版版权所有 riser,www.linuxforum.net 2000
+.\" 本文档可在遵照LDP GENERAL PUBLIC LICENSE,Version 1, September 1998
+.\" 中描述的条件下进行复制,且该文件发布时必须包含该文档.
+.\"
+.TH MKFIFO 1 "1998年11月" "GNU fileutils 4.0"
+.SH NAME(名称)
+mkfifo \- 创建FIFO(命名管道)
+.SH SYNOPSIS(总览)
+.BI "mkfifo [" options "] " file...
+.sp
+POSIX options(选项):
+.BI "[\-m " mode ]
+.sp
+GNU options(选项)(最短格式):
+.BI "[\-m " mode "] [\-\-help] [\-\-version] [\-\-]"
+.SH DESCRIPTION(描述)
+.B mkfifo
+使用指定的文件名创建FIFO(也称为"命名管道").
+.PP
+"FIFO"是一种特殊的文件类型,它允许独立的进程通讯.
+一个进程打开FIFO文件进行写操作,而另一个进程对之进行读操作,
+然后数据便可以如同在shell或者其它地方常见的的匿名管道一样流线执行.
+.PP
+默认情况下,创建的FIFO的模式为0666('a+rw')减去umask中设置的位.
+.SH OPTIONS(选项)
+.TP
+.BI "\-m " mode ", \-\-mode=" mode
+设置创建的FIFO的模式为
+.IR mode ,
+这可以是
+.BR chmod(1)
+中的符号模式,并使用默认模式作为起始点.
+.SH "GNU STANDARD OPTIONS(GNU标准选项)"
+.TP
+.B "\-\-help"
+在标准输出上打印一条用法信息,并以成功状态退出.
+.TP
+.B "\-\-version"
+在标准输出上打印版本信息,然后以成功状态退出.
+.TP
+.B "\-\-"
+终止选项列表.
+.SH ENVIRONMENT(环境变量)
+变量LANG, LC_ALL, LC_CTYPE和LC_MESSAGES取其常用义.
+.SH "CONFORMING TO(遵循规则)"
+POSIX 1003.2
+.SH NOTES(备注)
+本页介绍了包含在fileutils-4.0包中的
+.B mkfifo ;
+其他版本可能会有细微差别.
+请把您的修正和增补建议发邮件到aeb at cwi.nl.报告程序中的bug请发到
+fileutils-bugs at gnu.ai.mit.edu.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mknod.1 b/src/man1/mknod.1
new file mode 100644
index 0000000..24c5e51
--- /dev/null
+++ b/src/man1/mknod.1
@@ -0,0 +1,91 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" 中文版版权所有 Alian Yao, www.linuxforum.net 2000
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH MKNOD 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+mknod \- 建立块专用或字符专用文件
+
+.SH 总览
+.BI "mknod [" options "] " name " {bc} " "major minor"
+.br
+.BI "mknod [" options "] " name " p"
+.SH GNU 选项(缩写):
+.BI "[\-m " mode "] [\-\-help] [\-\-version] [\-\-]"
+.SH 描述
+mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。
+.PP
+文件系统中的一个专用文件存贮着三种信息(布朗型、整型、整型)。
+布朗型在字符文件与块文件之间作出选择,两个整型是主、次设备号。
+.PP
+通常,一个专用文件并不在磁盘上占用空间,仅仅是为操作系统提供
+交流,而不是为数据存贮服务。一般地,专用文件会指向一个硬件设
+备(如:磁盘、磁带、打印机、虚拟控制台)或者操作系统提供的服
+务(如:/dev/null, /dev/random)。
+.PP
+块文件通常类似于磁盘设备(在数据可以被访问的地方赋予一个块号,
+意味着同时设定了一个块缓存)。所有其他设备都是字符文件。(以
+前,两种文件类型间是有差别的。比如:字符文件I/O没有缓存,而块
+文件则有。)
+.PP
+mknod命令就是用来产生这种类型文件的。
+.PP
+以下参数指定了所产生文件的类型:
+.RS
+.TP
+.B p
+FIFO型
+.TP
+.B b
+块文件
+.TP
+.B c
+字符文件
+.RE
+.PP
+GNU版本还允许使用u('unbufferd'非缓冲化),
+以保持与C语言的一致。
+.PP
+当创建一个块文件或字符文件时,主、次设备号必须在
+文件类型参数后给出。(十进制或八进制以0开头;GNU
+版本还允许使用以0x开头的十六进制)缺省地,所产生
+的文件模式为0666('a+rw')。
+.SH 选项
+.TP
+.BI "\-m " mode ", \-\-mode=" mode
+为新建立的文件设定模式,就象应用命令chmod一样,以后仍然使
+用缺省模式建立新目录。
+
+.SH GNU 标准选项
+.TP
+.B "\-\-help"
+在标准输出上显示使用信息并顺利退出。
+.TP
+.B "\-\-version"
+在标准输出上显示版本信息并顺利退出
+.TP
+.B "\-\-"
+终端选项列表。
+
+.SH 遵循
+POSIX 认为该命令不能移植而不支持这个命令,它推荐使用
+mkfifo(1)来建立FIFO文件。SVID有一个命令/etc/mknod有以上
+语法,但没有模式选项。 
+.SH 注意
+在某些linux系统上(1.3.22或之后的版本)
+/usr/src/linux/Documentation/devices.tex文件包含了一个
+设备列表,包括设备名、类型及主、次设备号。本页对mknod的
+描述可以在fileutils-4.0中找到;其他版本会略有差别。任何
+添加或纠错意见请寄aeb at cwi.nl,程序Bugs请告知:
+fileutils-bugs at gnu.ai.mit.edu
+.SH 另见
+chmod(1), mkfifo(1),mknod(2)
+
+.SH "[中文版维护人]"
+.B Alan Yao  <Alan_Yao at 163.net>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mkpasswd.1 b/src/man1/mkpasswd.1
new file mode 100644
index 0000000..cfbd57a
--- /dev/null
+++ b/src/man1/mkpasswd.1
@@ -0,0 +1,84 @@
+.TH MKPASSWD 1 "22 August 1994"
+.SH NAME
+mkpasswd \- 为用户产生新口令
+.SH 总览 SYNOPSIS
+.B mkpasswd
+.I
+[
+.I args
+]
+[
+.I user
+]
+.SH 介绍 INTRODUCTION
+.B mkpasswd
+为用户产生口令并自动应用。它是基于O'Reilly的书\fI《Exploring Expect》\fR第23章中的代码的。
+.SH 用法 USAGE
+不带参数的话,
+.B mkpasswd
+返回一个新口令。带上用户名的话,
+.B mkpasswd
+为该用户分配一个新口令。
+.PP
+根据以下的标志可以随机性的产生口令。
+.SH 标志 FLAGS
+.B \-l
+标志定义口令长度。缺省值为9。以下示例建立一个20位的口令。
+
+	mkpasswd -l 20
+
+
+.B \-d
+标志定义口令必须包含的最少数字位数。缺省值为2。以下示例建立一个含3位数字的口令。
+
+	mkpasswd -d 3
+
+.B \-c
+标志定义口令必须包含的最少小写字母个数。缺省值为2。
+
+
+.B \-C
+标志定义口令必须包含的最少大写字母个数。缺省值也是2。
+
+The
+.B \-s
+flag defines the minimum number of special characters that must be in the password.
+The default is 1.
+
+
+.B \-p
+标志标明设立口令的程序。如果/etc/yppasswd存在的话则它为缺省值,否则就用/bin/passwd。
+
+
+.B \-2
+标志交换键盘上左右手的字母(我想就是左手输入g则为h吧),以使别人更难监视输入的口令。这也使口令猜测程序更容易成功。(这句不懂,请高手指教!)
+
+
+.B \-v
+使设定口令的交互可见,但缺省是不可见的。
+
+.SH 示例 EXAMPLE
+以下示例建立一个15位包含至少3位数字和5位大写字符的口令。
+
+	mkpasswd -l 15 -d 3 -C 5
+
+.SH 另见 SEE ALSO
+.I
+Don Libes所写的由O'Reilly and Associates于1995年一月出版的
+《Exploring Expect:  A  Tcl-Based	 Toolkit  for  Automating Interactive  Programs》
+一书。
+
+
+.SH 作者 AUTHOR
+Don Libes,国家标准与技术学会(NIST)
+
+.B mkpasswd
+是公共域软件。如果本程序或者它的部分有用的话,将是NIST和我的荣誉。
+
+
+.SH [中文版维护人] 
+.B meaculpa <meaculpa at 21cn.com>
+.SH [中文版最新更新] 
+.B 2001/02/24
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mktemp.1 b/src/man1/mktemp.1
new file mode 100644
index 0000000..b5d5653
--- /dev/null
+++ b/src/man1/mktemp.1
@@ -0,0 +1,123 @@
+.\"	$OpenBSD: mktemp.1,v 1.10 1998/09/26 19:55:09 aaron Exp $
+.\"
+.\" Copyright (c) 1989, 1991, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd November 20, 1996
+.Dt MKTEMP 1
+.Os
+.Sh "名称 (NAME)"
+.Nm mktemp
+.Nd 产生唯一的临时文件名
+.Sh "总览 (SYNOPSIS)"
+.Nm mktemp
+.Op Fl q
+.Op Fl u
+.Ar template
+.Sh "描述 (DESCRIPTION)"
+.Nm mktemp
+根据 给定的 文件名模板, 改变 其中的 一部分, 从而 生成 临时文件名.
+该文件名 是 唯一的, 可以 让 其他程序 使用. 模板 为 任意 文件名,
+后接 六个
+.Ql X
+例如
+.Pa /tmp/temp.XXXXXX .
+这些
+.Ql X
+将被 当前进程号 以及/或者 某个 唯一的 字母组合 替代.
+.Pp
+如果
+.Nm
+成功 产生了 唯一文件名, 就 以
+访问模式 0600 (除非 使用了
+.Fl u
+选项) 创建 文件, 并且 在 标准输出 显示 这个 文件名.
+.Pp
+.Nm mktemp
+用于 让 shell 脚本程序 使用 可靠的 临时文件.
+多数 shell 程序 的 传统做法 是 程序名 加上 PID 做 后缀, 产生的
+文件名 就是 临时文件名.
+这种 命名策略 容易 预测, 产生的 竞争条件 易于 遭到 攻击.
+使用 相同 命名策略 的 另一个 方法 是 建立 临时目录, 这种 做法 相对 安全 一些.
+它 可以 保证 临时文件 不被 破坏, 但是 容易 遭到 简单的 拒绝服务 攻击.
+所以 建议 改用
+.Nm mktemp .
+
+.Sh "选项 (OPTIONS)"
+.Bl -tag -width indent
+有效选项有:
+.It Fl q
+出错时 不显示 信息. 用于 禁止 错误信息 输出到 标准错误.
+.It Fl u
+以
+.Dq 不安全
+模式 运行. 
+.Nm
+在 退出前 会 删除 临时文件.  它 比 
+.Fn mktemp 3
+稍微 好些, 但 仍然 会 引入 竞争条件. 不鼓励 使用 这个 选项.
+.El
+.Sh "返回值 (RETURN VALUES)"
+.Nm
+成功时 返回 0, 否则 返回 1.
+.Sh "例子 (EXAMPLES)"
+下列的
+.Xr sh 1
+片断 展示了
+.Nm
+的 简单用法, 如果 无法 获得 可靠的 临时文件, 程序 就 退出.
+.Bd -literal -offset indent
+TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
+echo "program output" >> $TMPFILE
+.Ed
+.Pp
+照上例, 我们 打算 让 脚本程序 自己 捕获 这个 错误.
+.Bd -literal -offset indent
+TMPFILE=`mktemp -q /tmp/$0.XXXXXX`
+if [ $? -ne 0 ]; then
+	echo "$0: Can't create temp file, exiting..."
+	exit 1
+fi
+.Ed
+.Sh "另见 (SEE ALSO)"
+.Xr mkstemp 3 ,
+.Xr mktemp 3
+.Sh "历史 (HISTORY)"
+.Nm
+源于
+.Bx Open .
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mode.1 b/src/man1/mode.1
new file mode 100644
index 0000000..f65a729
--- /dev/null
+++ b/src/man1/mode.1
@@ -0,0 +1,64 @@
+.TH KBD_MODE 1 "28 Oct 1997" "Console tools" "Linux User's Manual"
+.SH NAME
+kbd_mode \- 显示或者设置键盘模式
+.SH "总览 (SYNOPSIS)"
+.BI "kbd_mode [ " -auks " ]"
+.IX "kbd_mode 命令" "" "\fLkbd_mode\fR 命令"  
+.SH "描述 (DESCRIPTION)"
+.PP
+如果 没有 参数
+.B kbd_mode
+会 显示 当前 键盘 的 模式, 如果 有 参数, 它会把 键盘 设置成 相应的 模式。
+.RS
+.IR \-s :
+键盘 扫描码 模式 (原始),
+.PP
+.IR \-k :
+键值 (keycode) 模式 (半原始),
+.PP
+.IR \-a :
+ASCII 模式 (XLATE),
+.PP
+.IR \-u :
+UTF-8 模式 (UNICODE)。
+.RE
+
+.I XLATE
+模式 是 传统 模式, 所用的 代码 可以 是 任何
+.B 8\-bit (8位)
+的 字符集. 一般 这个 字符集 同 后面 用到 的 字符集 是 匹配 的, 在 它们 被
+传给 屏幕 后, 它们 会 根据
+.B consolechars
+.IR -m
+选择的 字符集 在 内部 转换 为 Unicode, 
+
+在
+.I UNICODE
+模式, 键盘 会 产生
+.B 16位
+的 字符, 这些 字符 会 以1, 2 或者 3 字节 的 形式 (UTF\-8 编码) 传给 内核。
+.B UTF\-8
+在这 后两种 模式中 要 用到
+.BR loadkeys (1)
+定义的 键盘 映射 表。
+.B 警告:
+如果 不是 把 键盘 模式 改为 ASCII 或者 Unicode, 很可能 会使 键盘 不可用。
+这个 命令 也 可以 在 有些 程序 使你的 键盘 处于 错误 状态时 用来 把 键盘 改回
+.I XLATE
+或者
+.I UNICODE
+模式 (比如 通过 远程 登录)。 在 有些 过时的 版本的 程序 中
+.I \-u
+和
+.IR \-s
+是 一样的。
+.SH "参见 (SEE ALSO)"
+.BR loadkeys (1),
+.BR consolechars (8).
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/9/13
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/more.1 b/src/man1/more.1
new file mode 100644
index 0000000..1dc30c4
--- /dev/null
+++ b/src/man1/more.1
@@ -0,0 +1,193 @@
+.\" Copyright (c) 1988, 1990 The Regents of the University of California.
+.\" Copyright (c) 1988 Mark Nudleman
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	@(#)more.1	5.15 (Berkeley) 7/29/91
+.\"
+.\" Revised: Fri Dec 25 15:27:27 1992 by root
+.\" 25Dec92: Extensive changes made by Rik Faith (faith at cs.unc.edu) to
+.\" conform with the more 5.19 currently in use by the Linux community.
+.\"
+.Dd July 29, 1991 (Modified December 25, 1992)
+.Dt MORE 1
+.Os "Linux 0.98"
+.Sh NAME
+.Nm more
+.Nd 在显示器上阅读文件的过滤器
+.Sh "总览 (SYNOPSIS)"
+.Nm more
+.Op Fl dlfpcsu
+.Op Fl num
+.Op +/ pattern
+.Op + linenum
+.Op Ar
+.Sh "描述 (DESCRIPTION)"
+.Nm More
+是 一个 过滤器, 用于 分页 显示 (一次一屏) 文本. 这个 版本 非常 基本.
+用户 应该 知道
+.Xr less 1
+提供了
+.Xr more 1
+的 模拟, 并且 做了 增强.
+.Sh "选项 (OPTION)"
+下面 介绍 命令行选项. 选项 可以 从 环境变量
+.Ev MORE
+中获取 (要 确保 它们 以 短横线 开头 (``-'')), 但是 命令行选项 能够 覆盖 它们.
+.Bl -tag -width flag
+.It Fl num
+这个选项指定屏幕的行数 (以整数表示).
+.It Fl d
+让
+.Nm more
+给 用户 显示 提示信息 "[Press space to continue, 'q' to quit.]", 
+当 用户 按下 其他键 时, 显示 "[Press 'h' for instructions.]",
+而不是 扬声器 鸣笛.
+.It Fl l
+.Nm More
+在 通常情况下 把
+.Ic \&^L
+(form feed) 当做 特殊字符, 遇到 这个字符 就会 暂停.
+.Fl l
+选项 可以 阻止 这种特性.
+.It Fl f
+使
+.Nm more
+计数 逻辑行, 而不是 屏幕行 (就是说, 长行 不会 断到 下一行).
+.It Fl p
+不卷屏, 而是 清除 整个屏幕, 然后 显示 文本.
+.It Fl c
+不卷屏, 而是 从 每一屏的 顶部 开始 显示 文本, 每 显示完 一行, 
+就 清除 这一行的 剩余部分.
+.It Fl s
+把 重复的空行 压缩成 一个 空行.
+.It Fl u
+防止下划线.
+.It Ic +/
+在 显示 每个文件 前, 搜索
+.Ic +/
+选项 指定的 文本串.
+.It Ic +num
+从行号
+.Ic num 
+开始显示.
+.Sh "命令 (COMMAND)"
+.Nm more
+的交互命令基于
+.Xr vi  1  .
+有些命令 以 一个 十进制数字 开始, 在 下面的描述 里 称之为 k. 后面的 描述中,
+^X 指 control-X.
+.Pp
+.Bl -tag -width Ic
+.It Ic h No or Ic ?
+帮助: 显示 这些 命令 的 摘要. 你 如果 忘掉 所有 其他的命令, 请记住这个.
+.It Ic SPACE
+显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小.
+.It Ic z
+显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小. 参数 成为 新的缺省值.
+.It Ic RETURN
+显示 接下来的 k 行文本. 缺省值 是 1. 参数 成为 新的缺省值.
+.It Ic d No or Ic \&^D
+卷屏 k 行. 缺省值 是 当前的 卷屏大小, 初始化为 11. 参数 成为 新的缺省值.
+.It Xo
+.Ic q
+.No 或
+.Ic Q
+.No 或
+.Ic INTERRUPT
+.Xc
+退出.
+.It Ic s
+向前跳过 k 行文本. 缺省值 是 1.
+.It Ic f
+向前跳过 k 屏文本. 缺省值 是 1.
+.It Ic b No or Ic \&^B
+向后跳回 k 屏文本. 缺省值 是 1.
+.It Ic '
+跳到 上一次 搜索 开始 的 地方.
+.It Ic =
+显示当前行号.
+.It Ic \&/ Ns Ar pattern
+搜索 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
+.It Ic n
+搜索 最后 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
+.It Ic !<cmd> No or Ic :!<cmd>
+在子 shell 中执行 <cmd>.
+.It Ic v
+启动 /usr/bin/vi, 指向 当前行.
+.It Ic \&^L
+刷新屏幕.
+.It Ic :n
+跳到 后面 第 k 个 文件.  缺省值 是 1.
+.It Ic :p
+跳到 前面 第 k 个 文件.  缺省值 是 1.
+.It Ic :f
+显示 当前文件名 和 行号.
+.It Ic \&.
+重复上次命令.
+.El
+.Sh "环境 (ENVIRONMENT)"
+.Nm More
+利用 下面的 环境变量 (如果 它们 存在):
+.Bl -tag -width Fl
+.It Ev MORE
+这个变量 设置 你 喜欢的
+.Nm more 
+选项.
+.It Ev SHELL
+当前使用的 shell (一般说来 就是 登录 shell).
+.It Ev TERM
+指定 终端类型, more 用它来 获取 操作屏幕 所需的 终端特性.
+.El
+.Sh "另见 (SEE ALSO)"
+.Xr vi 1
+.Xr less 1
+.Sh "作者 (AUTHOR)"
+Eric Shienbrood, UC Berkeley
+.br
+Modified by Geoff Peck, UCB to add underlining, single spacing
+.br
+Modified by John Foderaro, UCB to add -c and MORE environment variable
+.Sh "历史 (HISTORY)"
+.Nm more
+命令 出现在
+.Bx 3.0 .
+本手册页 描述了
+.Nm more
+version 5.19 (Berkeley 6/29/88), 目前 它 用在 Linux 社团. 
+制作文档时 使用了 其他几个版本 的 手册页, 
+并且 根据 源程序 作了 扩充.
+.Sh "[中文版维护人]"
+徐明 <xuming at users.sourceforge.net>
+.Sh "[中文版最新更新]"
+2003/05/13
+.Sh "《中国Linux论坛man手册页翻译计划》"
+http://cmpp.linuxforum.net
+.br
diff --git a/src/man1/mpg123.1 b/src/man1/mpg123.1
new file mode 100644
index 0000000..009a35c
--- /dev/null
+++ b/src/man1/mpg123.1
@@ -0,0 +1,352 @@
+.\" @(#)mpg123.1 0.01 21-Apr-1997 OF; from mpg123 archive
+.\" Chinese version copyright (c)linuxipy <groove at ustc.edu> , href=http://www.linuxforum.net>www.linuxforum.net 2003.
+.\" Chinese version last update on 29-Dec-2003
+.\"
+.\"
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH mpg123 1 "21 Apr 1997"
+.SH 命令名
+mpg123 \- 播放 MPEG 1.0/2.0 Layer-1, -2, -3 音频文件
+.SH 语法
+.B mpg123
+[
+.B \-tscvqy01m24
+][
+.BI \-b " size"
+][
+.BI \-k " num"
+][
+.BI \-n " num"
+][
+.BI \-f " factor"
+][
+.BI \-r " rate"
+][
+.BI \-g " gain"
+][
+.BI \-a " dev"
+][
+.BR "\-o s" " | " "\-o h" " | " "\-o l"
+][
+.BI \-d " n"
+][
+.BI \-h " n"
+][
+.BI \-p " proxy"
+][
+.BI \-@ " file"
+]
+.IR file " ... | " URL " ... | "
+.B \-
+.SH 描述
+.B mpg123
+从一个或多个
+.I 文件
+或者
+.I URL
+读取MPEG-1/2音频比特流 (如果指定 `\-' 选项, 则从标准输入读取),
+然后使用音频设备进行播放(默认), 或将解码结果送 到标准输出上.
+.SH 选项
+.B mpg123
+接收传统的POSIX风格的单字母选项, 也接收GNU风格的长单词选项. 这两 种选项分别以 `\-' 和
+"\-\^\-" 开头.
+.TP
+.BR \-t ", " \-\-test
+测试模式. 对音频流进行解码, 但不输出.
+.TP
+.BR \-s ", " \-\^\-stdout
+将解码结果送到标准输出上, 而不使用音频设备进行播放. 如果
+.B mpg123
+不支持你的音频硬件, 你就可以试试这一选项, 这时, 
+.B mpg123
+以本机 字节顺序(host byte order)输出16比特的立体声线性PCM(脉冲编码调制)
+音频裸数据(没有数据头).
+.TP
+.BR \-c ", " \-\^\-check
+对每一帧进行滤波器越界检查, 如发生则报告之.
+.TP
+.BR \-v ", " \-\^\-verbose
+播放时显示更多信息, 比如显示当前正在解码的帧号. 
+.TP
+.BR \-q ", " \-\^\-quiet
+安静模式. 不显示诊断信息.
+.TP
+.BR \-y ", " \-\^\-resync
+如果输入文件发生错误, 则重新进行同步并继续解码. 另外, 对那些文件 头损坏的MPEG文件,
+通常
+.B mpg123
+会拒绝播放并显示 ' Illegal header', 但如果指定本选项, 
+.B mpg123
+会试图从损坏的文件头中恢复并进行播放. 小心:
+损坏的MPEG文件在播放到损坏处时可能出现尖利刺耳的噪声, 如果 音量过大, 可能损坏扬声器.
+.TP
+.BR \-0 ", " \-\^\-single0 "; " \-1 ", " \-\^\-single1
+只对0(左) 声道或者1(右) 声道进行解码. 这两个选项只对立体声的MPEG 音频流有效.
+.TP
+.BR \-m ", " \-\^\-singlemix
+将两个声道混音. 此选项只对MPEG Layer-3的立体声音频流有效, 并可比
+完全立体声解码节省一些
+CPU时间.
+.TP
+.BR \-2 ", " \-\^\-2to1 "; " \-4 ", " \-\^\-4to1
+将输出流的采样率将低至标准的1/2 (22kHz) 或者1/4 (11kHz). 使用这
+两个选项可以减少一些CPU的负荷, 但是声音质量会下降(至少使用11kHz 采样率时会很难听).
+.TP
+\fB\-b \fIsize\fR, \fB\-\^\-buffer \fIsize
+用
+.I size
+指定输出缓冲区的大小, 单位为千字节. 使用此选项通常可以避 免由频繁的系统操作造成的
+声音输出时断时续的现象. 
+.I size
+的值小于 300时就没什么意义了, 建议至少取1024(即使用1Mb的缓冲区, 可以缓冲
+相当于6秒钟的音频数据).
+.I size
+的默认值为0, 即不进行输出缓冲.
+.TP
+\fB\-k \fInum\fR, \fB\-\^\-skip \fInum
+跳过前
+.I num
+帧. 不指定此选项时, 默认从第1帧开始解码. 
+.TP
+\fB\-n \fInum\fR, \fB\-\^\-frames \fInum
+只对前
+.I num
+帧进行解码. 不指定此选项时, 默认对整个音频流进行解码.
+.TP
+\fB\-f \fIfactor\fR, \fB\-\^\-scale \fIfactor
+改变缩放因子
+.I factor
+的值(默认值为32768).
+.TP
+\fB\-r \fIrate\fR, \fB\-\^\-rate \fIrate
+设置采样率
+.I rate
+(默认为自动设置). 使用这一选项后,
+.B mpg123
+会自动 将速率转换成不依赖于MPEG流速率的一个恒定比特率.
+此选项应该和 \-\-stereo 或 \-\-mono 联合起来使用.
+.TP
+\fB\-g \fIgain\fR, \fB\-\^\-gain \fIgain
+设置音频硬件输出增益
+.I gain
+(默认为保持不变).
+.TP
+\fB\-a \fIdev\fR, \fB\-\^\-audiodevice \fIdev
+指定音频设备. 默认的音频设备与系统配置有关(通常是 /dev/audio 或 /dev/dsp ),
+如果系统中有多个音频设备而默认的又不是你想用的那个, 就可使用本选项.
+.TP
+.BR "\-o s" ", " \-\^\-speaker
+将声音导出到主板上的扬声器上.
+.TP
+.BR "\-o h" ", " \-\^\-headphones
+将声音导出到耳机连接器上.
+.TP
+.BR "\-o l" ", " \-\^\-lineout
+将声音导出到Line-Out连接器上.
+.TP
+\fB\-d \fIn\fR, \fB\-\^\-doublespeed \fIn
+每
+.IR n
+帧播放一帧. 这会使MPEG流的播放速度提高为正常速度的
+.I n
+倍, 从而可以产生特殊的声音效果. 此选项可以和
+.B \-\^\-halfspeed
+选项组合使 用, 实现类似每4帧播放3帧(译者注: 指定-d 4 -h 3)的效果.
+如果使用 此选项, 不要指望声音质量会很好.
+.TP
+\fB\-h \fIn\fR, \fB\-\^\-halfspeed \fIn
+将每帧都播放
+.I n
+遍. 这会使MPEG流的播放速度降低为正常速度的
+.IR 1 / n ,
+从而可以产生特殊的声音效果. 此选项可以和
+.B \-\^\-doublespeed
+选项组合 使用, 实现类似每3帧播放2帧(译者注: 指定-h 2 -d 3)的效果.
+如果使 用此选项, 不要指望声音质量会很好.
+.TP
+\fB\-p \fIURL \fR| \fBnone\fR, \fB\-\^\-proxy \fIURL \fR| \fBnone
+指定
+.I proxy
+作为HTTP请求的代理. 指定的格式应是一个完整的URL (如"http://host.domain:port/"),
+但是可以省略前缀"http://", 端口 号port(默认的端口为80)和末尾的'/'. 
+如果指定为
+.B none
+,则不使用代 理, 直接向服务器请求文件. 更多细节请看 "HTTP 支持" 小节.
+.TP
+\fB\-u \fIauth\fR, \fB\-\^\-auth \fIauth
+如果通过HTTP下载文件时服务器要求提供认证信息, 则由
+.I auth
+指定, 其 格式为 "用户名:密码" (不包括引号).
+.TP
+\fB\-@ \fIfile\fR, \fB\-\^\-list \fIfile
+从
+.I file
+指定的文件中读取将要播放的MPEG音频流所在的文件和(或)URL, 如果
+命令行中还指定了其它的文件和(或)URL, 也将其包含进播放清单.
+如果指定
+.I file
+为 `\-'而非一个普通的文件名, 
+.B mpg123
+将从标准输入读 取文件名和(或)URL, 或者读取一个指向播放清单文件的URL.
+注意:
+.B \-@
+选项只能使用一次(如果多处指定, 则只有最后一个有效).
+.TP
+.BR \-z ", " \-\^\-shuffle
+随机播放. 按随机的顺序播放命令行和清单文件中指定的音频文件.
+.TP
+.BR \-\-stereo
+强制立体声输出.
+.TP
+.BR \-\-reopen
+强制在播放完一个文件后重新打开音频设备.
+.TP
+.BR \-\-8bit
+强制8比特输出.
+.TP
+.BR \-Z ", " \-\-random
+完全随机播放. (译者注: 与 --shuffle 选项的区别是, 指定本选项有可
+能重复多次播放同一文件)
+.SH 操作数
+.B mpg123
+支持下面的操作数:
+.TP
+.IR file 
+指定输入文件的路径. 这些文件必须包含合法的MPEG-1/2音频 Layer-1,
+Layer-2或Layer-3的比特流.
+如果指定为'-', 将从标准输入读取MPEG数 据. 进一步, 如果以"http://"开头, 则认为指定
+了一个
+.I URL
+(请看下一 节).
+.SH HTTP 支持
+除了能从普通文件和标准输入读取MPEG音频流,  
+.B mpg123
+还支持通过HTTP协 议从万 维网(WWW)上获取由URL(统一资源定位符)指定的文件.
+一个URL是一个以 "http://" 为前缀的字符串, 当
+.B mpg123
+识别到这个前缀, 它会尝试开启一个 到相应服务器的连接, 
+接着获取相应的文件并进行解码播放.
+.P
+很多时候, 从WWW缓存, 或所谓的网络代理比直接从服务器更容易获取文件. 为利 用这种便利,
+.B mpg123
+会依次检查
+.BR MP3_HTTP_PROXY ", "http_proxy "和" HTTP_PROXY,
+这三个环境变量是否被设置, 并将第一个被设置的变量的值作为指定的代理.
+如 果你需要自己指定另外的代理, 可以使用
+.B \-p
+命令行选项 (请看"选项"小节).  使用
+.B "\-p none"
+选项将不使用任何代理而直接连接服务器, 即使前面所述的三个 变量被设置.
+.P
+值得注意的是, 为了能从一个WWW服务器获取并流畅地播放MPEG音频文件, 
+必须有 足够快的网络连接. 例如, 为了能播放速率为128kbit/s的MPEG文件, 所需的
+网络带宽至少应该是128kbit/s加上网络协 议本身的传输开销.
+如果网络常发生 短时中断, 可以试试用
+.B \-b
+选项指定一个缓冲区. 如果你所在的网络根本无 法达到实时传输MPEG音频文件所需的带宽,
+就只好使用
+.BR lynx (1)
+之类的软件先将 文件下载到本地硬盘上再进行播放了.
+.P
+如果服务器要求认证, 可以使用
+.BR "\-u auth"
+选项(请看"选项"小节)指定用户名和密 码.
+.SH 中断
+任何时候按Ctrl-C键都能中断
+.B mpg123
+的运行. 如果有多个文件在播放, Ctrl-C 会终止当前文件的播放并
+开始播放下一个文件, 这种情况下, 如果你想终止整 个程序的运行, 必须连按两次Ctrl-C
+(在约一秒钟之内).
+.P
+注意, 按了Ctrl-C之后声音也许不会马上消失, 这是因为系统的音频设备缓冲了 
+一部分数据. 这种延迟随系统不同而不同, 但通常都不超过1到2秒.
+.SH 相关说明
+.BR lynx (1),
+.BR sox (1),
+.BR intro (1)
+.SH 注意
+MPEG音频解码, 特别是Layer-3的解码, 需要CPU进行大量的运算. 为能达到实时
+解码, 你的计算机至少应该配备Pentium, Alpha, SuperSparc或性能相当的处 理器.
+同时你可以使用
+.B -singlemix
+选项进行单声道解码, 对Layer-3, 这多少 能减少一点CPU负荷. 此外你也可以考虑使用
+.BR \-2 " 和 " \-4
+选项.
+.P
+如果这些方法都不奏效, 试试用
+.B \-s
+选项将解码结果送到标准输出上并将其定向 到一个文件中, 然后再用适当的工具播放这个文件.
+你也许会用到
+.BR sox (1)
+这个 工具, 它能将文件转换成你的音频播放器所用的格式.
+.P
+还有一点就是
+.B mpg123
+总是输出16比特的立体声数据(如果指定
+.BR \-0 "或" \-1
+选项中 的一个, 立体声两个声道的数据是相同的). 如果系统硬件要求其它格式, 比如8
+比特的单声道的数据, 同样可以使用
+.BR sox (1)
+进行转化.
+.P
+如果你的系统本身足够快, 能够进行实时解码, 只是在系统负荷较重时(如定时任
+务, 用户远程登录或启动`大'程序等)出现停顿, 你应该用
+.B \-b
+选项指定一个不小 于1000K字节的缓冲区.
+.SH BUGS
+.TP
+已知的BUG和局限性:
+.br
+MPEG-2, Layer-1和-2未经 测试. 可能不能工作.(Layer-3应该能工作.)
+.br
+不提供对自由格式的音频流的支持.
+.br
+对Layer-1的支持未经 严格测试. 
+.br
+未进行CRC错误校验.
+.br
+没有对DEC Digital Unix, Ultrix 和 IBM AIX平台上的音频硬件提供支 持,
+因此在这些平台上必须使用
+.B \-s
+选项.
+.SH 作者
+.TP
+主要作者:
+.br
+Michael Hipp <hippm at informatik.uni-tuebingen.de>
+.TP
+使用了下面的代码或借鉴了其中的思想:
+.br
+MPEG Software Simulation Group (Base package)
+.br
+Philipp Knirsch <phil at mpik-tueb.mpg.de> (DCT36/manual unroll)
+.br
+Tobias Bading <bading at cs.tu-berlin.de> (subband synthesis)
+.br
+Jeff Tsay <ctsay at pasteur.eecs.berkeley.edu> (DCT36)
+.br
+Thomas Woerner (SGI Audio)
+.br
+Damien Clermonte <clermond at esiee.fr> (HP-UX audio fixes)
+.br
+Oliver Fromme <oliver.fromme at heim3.tu-clausthal.de>
+.P
+网络参考资料:
+http://www.sfs.nphil.uni-tuebingen.de/~hipp/mpg123.html
+.br
+http://www.heim3.tu-clausthal.de/~olli/mpg123/
+.br
+(包含关于mpg123邮件组的信息)
+.P
+在此获取最新版本:
+.br
+http://ftp.tu-clausthal.de/pub/unix/audio/mpg123
+.SH "[中文版维护人]"
+linuxipy <groove at ustc.edu>
+.SH "[中文版最新更新]"
+2004/2/29
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/mplayer.1 b/src/man1/mplayer.1
new file mode 100644
index 0000000..da87135
--- /dev/null
+++ b/src/man1/mplayer.1
@@ -0,0 +1,3523 @@
+.\" MPlayer (C) 2000-2003 Arpad Gereoffy
+.\" 本man page由Gabucino, Diego Biurrun, Jonas Jermann制作
+.\"
+.\" 运行下列命令可以获得HTML格式的man page:
+.\"   cat mplayer.1 | sed s/SS\ 20/SS\ 4/ | groff -man -Thtml - > manpage.html
+.\" 运行下列命令可以获得文本格式的man page:
+.\"   groff -m man -Tascii mplayer.1 | col -bx > manpage.txt
+.\"
+.
+.\" --------------------------------------------------------------------------
+.\" Macro definitions
+.\" --------------------------------------------------------------------------
+.
+.\" default indentation is 7, don't change!
+.nr IN 7
+.\" define indentation for suboptions
+.nr SS 20
+.\" add new suboption
+.de IPs
+.IP "\\$1" \n(SS
+..
+.\" begin of first level suboptions, end with .RE
+.de RSs
+.RS \n(IN+3
+..
+.\" begin of 2nd level suboptions
+.de RSss
+.PD 0
+.RS \n(SS+3
+..
+.\" end of 2nd level suboptions
+.de REss
+.RE
+.PD 1
+..
+.
+.\" --------------------------------------------------------------------------
+.\" Title
+.\" --------------------------------------------------------------------------
+.
+.TH MPlayer 1 "2003-01-11"
+.
+.SH 名称
+mplayer  \- Linux下的电影播放器
+.br
+mencoder \- Linux下的电影编码器
+
+.\" --------------------------------------------------------------------------
+.\" Synopsis
+.\" --------------------------------------------------------------------------
+.
+.SH 概要
+.na
+.nh
+.B mplayer
+.RI [选项]\ [ \ 文件\  | \ URL\  | \ 播放列表\  | \ -\  ]
+.br
+.B mplayer
+'in +\n[.k]u
+[全局选项]
+.I 文件1
+[特定选项] [文件2] [特定选项]
+.br
+.in
+.B mplayer
+'in +\n[.k]u
+[全局选项]
+.RI { "一组文件和选项" }
+[针对该组的特定选项]
+.br
+.in
+.B mplayer
+'in +\n[.k]u
+.RI [ dvd | vcd | cdda | cddb | tv ] ://title
+[选项]
+.br
+.in
+.B mplayer
+'in +\n[.k]u
+.RI [ mms[t] | http | http_proxy | rt[s]p ] ://
+[用户名:密码@]\fIURL\fP[:端口] [选项]
+.br
+.in
+.B mencoder
+[选项]
+.RI [ \ 文件\  | \ URL\  | \ -\  ]
+[\-o\ 输出文件]
+.br
+.B gmplayer
+[选项]
+[\-skin\ skin]
+.ad
+.hy
+
+.\" --------------------------------------------------------------------------
+.\" Description
+.\" --------------------------------------------------------------------------
+.
+.SH 说明
+.B mplayer
+是一个LINUX下的电影播放器, (也能运行在许多其它的Unices和非x86的CPU上,
+参看文档). 它能使用本地的, XAnim, Win32 DLL的编解码器播放绝大部分的MPEG/\:VOB,
+AVI, ASF/\:WMA/\:WMV, RM, QT/\:MOV/\:MP4, OGG/\:OGM, VIVO, FLI, NuppelVideo,
+yuv4mpeg, FILM和RoQ文件. 你还能观看VideoCD,SVCD, DVD, 3ivx,
+DivX\ 3/\:4/\:5甚至WMV电影(不需要使用avifile库).
+.PP
+MPlayer的另一个优越的特性是对输出设备的广泛的支持. 它可以使用X11, XV, DGA, OpenGL,
+SVGAlib, fbdev, AAlib, DirectFB, 但你也可以使用GGI,
+SDL(由此可以使用他们的所有驱动), VESA(所有VESA兼容的显卡,甚至可以没有X11),
+某些低级的显卡相关的驱动(Matrox, 3Dfx和ATI)和一些硬件MPEG解码器卡, 比如Siemens DVB,
+ DXR2和DXR3/\:Hollywood+. 它们中绝大多数支持软件或硬件缩放, 所以你可以享受全屏电影.
+.PP
+MPlayer具有onscreen display(OSD)功能, 用来显示状态信息,
+清晰放大反锯齿带阴影的字幕和键盘控制的视觉反馈. 支持的字体包括欧洲语种/\:ISO 8859-1,2
+(匈牙利语, 英语, 捷克语等等), 西里尔语和韩语, 可以播放10种格式的字幕文件(MicroDVD,
+SubRip, SubViewer, Sami, VPlayer, RT, SSA, AQTitle, JACOsub和我们自己的:
+MPsub)和DVD字幕(SPU流, VobSub和隐藏字幕数据表(Closed Captions)).
+.PP
+.B mencoder
+(MPlayer的电影编码器)是一个简单的电影编码器,
+设计用来把MPlayer可以播放的电影(见上面)编码成另一些MPlayer可以播放的格式(见下面).
+它可以通过1, 2或者3 pass的方式编码DivX4, XviD,
+libavcodec的编解码器支持的视频格式和PCM/\:MP3/\:VBRMP3的音频.
+进一步的它还拥有流复制的能力, 一个强大的插件系统(crop, expand, flip, postprocess,
+rotate, scale, noise, rgb/\:yuv转换)和更多.
+.PP
+.B gmplayer
+是使用图形用户界面的MPlayer. 它使用跟MPlayer相同的参数.
+
+
+.\" --------------------------------------------------------------------------
+.\" Options
+.\" --------------------------------------------------------------------------
+.
+.SH "一般注记"
+.B 参见HTML文档!
+.PP
+每个'flag'选项都有一个对应的'noflag'选项, 比如\&\-fs选项的对应选项是\-nofs.
+.PP
+你可以把所有选项放在配置文件中, mplayer每次运行时都会读取它们.
+系统范围的配置文件'mplayer.conf'在你的配置目录中,
+(比如\&/etc/\:mplayer或者/usr/\:local/\:etc/\:mplayer),
+用户特定的配置文件是'~/\:.mplayer/\:config'.
+用户特定的选项优先于系统范围的选项, 而命令行选项优先于这两者.
+配置文件的语法是'选项=<参数>', '#'后面的都认为是注释.
+启用没有参数的选项可以把参数设为'yes'或者'1', 而如果要禁用就把它们设置为'no'或者'0'.
+甚至子选项也可以通过这种方式设定.
+
+.I 示例:
+.br
+# 默认使用Matrox驱动.
+.br
+vo=xmga
+.br
+# 我喜欢在看片子的时候练习倒立.
+.br
+flip=yes
+.br
+# 从多个png文件解码/\:编码, 以-mf启动
+.br
+mf= type=png:fps=25
+
+你也可以制作针对特定文件的配置文件. 如果你希望'movie.avi'这个文件有自己的配置文件,
+创建一个叫'movie.avi.conf'的文件, 写上针对该文件的选项,
+把它放在~/.mplayer中或者该文件同一目录下.
+
+.SH "播放选项(仅用于MPLAYER)"
+.TP
+.B \-, \-use-stdin
+从标准输入读取数据. \-idx选项无法与这个选项同时工作.
+.TP
+.B \-autoq <质量> (与\-vf pp一起使用)
+根据可用的CPU空闲时间动态调整后期处理的级别. 你设定的数字是允许使用的最高级别.
+一般来说你可以使用一些比较大的数字. 你必须使用不带参数的\-vf pp才能使用它.
+.TP
+.B \-autosync <因子>
+基于音频延迟的检测逐步调整A/\:V同步. 设定\-autosync\ 0, 也就是默认值,
+将导致帧记时完全基于音频延迟的检测. 设定\-autosync\ 1也是一样,
+但将会微妙的改变所使用的A/\:V修正算法. 设置大于1的值对那些视频帧速率不均匀,
+但用\-nosound可以正常播放的电影一般会有帮助. 这个值越大, 记时方法越接近于\-nosound.
+对于没有好的音频延迟检测功能的声卡驱动试试用\-autosync\ 30来平滑这个问题.
+使用这个值时, 如果出现大的A/\:V同步偏移, 只需要1或2秒就可以摆平.
+对于任何声卡驱动, 打开这个选项的唯一缺点就是对于突然的A/\:V偏移的反应延迟时间.
+.TP
+.B \-benchmark
+在终端显示一些CPU使用率和丢帧数的统计信息.
+与\-nosound和\-vo null联合使用可以用来评测视频解码器.
+.TP
+.B \-edl <文件名>
+在播放时启用编辑决定列表(EDL)的动作. 根据所给文件的内容,
+可以跳过视频, 静音和取消静音. 具体内容和使用方法参见DOCS/documentation.html#edl.
+.TP
+.B \-edlout <文件名>
+建立一个新文件并写入编辑决定列表(EDL)的记录. 在播放时, 当用户按下'i',
+一个跳过下面两秒的记录将写入文件. 用户以后可以以此作为调整EDL记录的出发点.
+具体内容参见DOCS/documentation.html#edl.
+.TP
+.B \-enqueue (仅用于GUI)
+将命令行中的文件加入播放序列而不是立刻播放它们.
+.TP
+.B \-fixed-vo (BETA代码!)
+对多个文件使用一个固定的视频系统(对所有文件初始化/\:释放一次).
+所以对所有文件只使用一个窗口, 目前fixed-vo兼容的驱动有: x11, xv, xvidix, xmga,
+gl2, and svga.
+.TP
+.B \-framedrop (参见\-hardframedrop)
+跳过一些帧从而在慢的机器上实现A/\:V同步.视频滤镜不会应用到这些帧上.
+对于B帧解码也会完全跳过.
+.TP
+.B \-h, \-help, \-\-help
+显示简短的选项摘要.
+.TP
+.B \-hardframedrop
+丢掉更多的帧(破坏解码). 导致图像破损!
+.TP
+.B \-identify
+用容易分析的格式显示文件参数.
+调用的TOOLS/midentify脚本将滤除mplayer的其它输出而(但愿能)留下文件名.
+.TP
+.B \-input <命令>
+这个选项可以用来配置输入系统的特定部分. 路径相对于~/\:.mplayer/.
+
+.I 注意:
+.br
+自动重复功能目前只有游戏操纵杆支持.
+.br
+可用的命令有:
+
+.PD 0
+.RSs
+.IPs conf=<文件>
+读取另外的input.conf.
+如果没有给出路径名, 将假设是~/\:.mplayer.
+.IPs ar\-delay
+在开始自动重复一个键之前等待多少毫秒(0代表禁用).
+.IPs ar\-rate
+当自动重复是每秒重复多少次.
+.IPs keylist
+列出所有可以被绑定的键.
+.IPs cmdlist
+列出所有可以被绑定的命令.
+.IPs js\-dev
+指定可用的游戏操纵杆设备(默认为/dev/\:input/\:js0).
+.IPs file
+从指定文件读取命令, 用于命名管道很有效.
+.RE
+.PD 1
+.
+.TP
+.B \-lircconf <文件>
+指定LIRC(Linux Infrared Remote Control, 参见http://www.lirc.org)的配置文件,
+如果你不喜欢默认的~/\:.lircrc的话.
+.TP
+.B \-loop <数字>
+重复播放电影<数字>遍. 0表示不断重复.
+.TP
+.B \-menu (BETA代码)
+打开OSD菜单支持.
+.TP
+.B \-menu-root <参数> (BETA代码)
+指定主菜单.
+.TP
+.B \-menu-cfg <文件> (BETA代码)
+使用另外的menu.conf.
+.TP
+.B \-nojoystick
+关闭游戏操纵杆的支持. 默认是只要编译了就会打开.
+.TP
+.B \-nolirc
+关闭LIRC支持.
+.TP
+.B \-nortc
+关闭使用Linux的RTC(real-time clock \- /dev/\:rtc)作为计时器的功能.
+.TP
+.B \-playlist <文件>
+根据播放列表播放文件(每行一个文件或者Winamp或ASX格式).
+.TP
+.B \-quiet
+显示较少的输出和状态信息.
+.TP
+.B \-really\-quiet
+显示更少的输出和状态信息.
+.TP
+.B \-sdp
+指定输入文件为描述一个RTP会话的SDP('Session Description Protocol')文件,
+(参见http://www.live.com/mplayer/).
+.TP
+.B \-shuffle
+以随机顺序播放文件.
+.TP
+.B \-skin <skin目录> (BETA代码)
+从指定目录中装载skin(没有路径名).
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-skin fittyfene"
+尝试Skin/fittyfene.
+将会首先察看/usr/local/share/mplayer/,
+然后是~/.mplayer/.
+.RE
+.PD 1
+.
+.TP
+.B \-slave
+这个选项打开slave模式.
+这用来将MPlayer作为其它程序的后端. MPlayer将从他的标准输入读取简单命令行,
+而不再截获键盘事件.
+.B SLAVE模式协议
+部分将解释其语法.
+.TP
+.B \-softsleep
+使用高质量的软件计时器. 跟RTC同样精确且不需要特别权限. 代价是更高的CPU消耗.
+.TP
+.B \-speed <0.01\-100>
+设置播放速率.
+.TP
+.B \-sstep <秒>
+设定各帧显示之间的时间间隔. 用于幻灯片播放.
+
+
+.SH "分路器/媒体流选项"
+.TP
+.B \-aid <标识> (参见 \-alang选项)
+选择音频频道 [MPEG: 0\-31 AVI/\:OGM: 1\-99 ASF/\:RM: 0\-127
+VOB(AC3): 128\-159 VOB(LPCM): 160\-191]
+MPlayer在冗长(-v)模式下会显示可用的标识.
+.TP
+.B \-alang <两个字母的国家代码> (参见\-aid选项)
+仅用于DVD播放. 它选择DVD的音频语言并总是尝试播放与所给代码符合的语言.
+加上\-v参数观察输出可以获得可用语言的列表.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-alang hu,en"
+播放匈牙利语, 英语在没有匈牙利语时备用.
+.RE
+.PD 1
+.
+.TP
+.B \-audio\-demuxer <数字> (仅用于\-audiofile)
+指定用于\-audiofile的分路器. 分路器的标识在demuxers.h中.
+使用\-audio\-demuxer 17将指定.mp3检测.
+.TP
+.B \-audiofile <文件名>
+在看电影时播放外部文件(WAV, MP3或Ogg Vorbis)的音频.
+.TP
+.B -audiofile-cache <kBytes>
+对-audiofile的文件流启用缓存, 使用指定大小的内存.
+.TP
+.B \-bandwidth <参数>
+设定网络流的最大带宽(用于服务器可以以不同带宽传送内容的情况).
+当你以慢速连接观看流媒体实况时有用.
+.TP
+.B \-cdrom\-device <设备路径>
+替代默认的CDROM设备名/dev/\:cdrom.
+.TP
+.B \-cache <kBytes>
+这个选项设定用多少内存(以kBytes为单位)作为播放文件/\:URL的预缓冲.
+对速度慢的媒体特别有用(默认为\-nocache).
+.TP
+.B \-cdda <选项1:选项2>
+这个选项用来调整MPlayer的CD音频读取特性.
+.br
+可用选项有:
+.
+.RSs
+.IPs speed=<参数>
+设定CD转速
+.IPs paranoia=<0\-2>
+设定谨慎级别
+.RSss
+0: 关闭检测
+.br
+1: 只进行重叠检测(默认)
+.br
+2: 完全数据修正和校检
+.REss
+.IPs generic-dev=<参数>
+使用指定的通用SCSI设备
+.IPs sector-size=<参数>
+单位读取量
+.IPs overlap=<参数>
+将校检时的最小重叠搜索设置为<参数>个扇区.
+.IPs toc-bias
+假定TOC中报告的第1音轨的起始偏移量将按照LBA\ 0定位.
+有些东芝光驱需要这个来获得正确的音轨边界.
+.IPs toc-offset=<参数>
+给定位音轨时在报告的扇区数上再加上<参数>个扇区. 可以是负数.
+.IPs (no)skip
+(不)接受不完整的数据重建.
+.RE
+.
+.TP
+.B \-channels <数字>
+改变播放的声道数, 如果没有设定默认值为'2'. 如果输出声道数比输入声道数多时,
+将插入空声道(但在将单声道混合为立体声时, 会把单声道复制到两个输出声道).
+如果输出声道比输入声道少, 结果取决与所用的音频解码器(\-afm).
+MPlayer会要求解码器把音频解码到跟指定数量的声道. 由解码器来实现这个要求.
+如果解码器的输出比要求的多, 多余的声道会被去掉.
+这个选项通常只有在播放AC3音频(比如DVD)的视频时才显得重要.
+在那时默认使用liba52解码并把音频适当的混合到需要的输出声道.
+
+.I 注意:
+.br
+这个选项可以被解码器(仅用于AC3)滤镜(surround)和音频输出驱动(至少OSS可以)接受.
+.br
+可用选项有:
+
+.PD 0
+.RSs
+.IPs 2
+Stereo
+.IPs 4
+Surround
+.IPs 6
+Full 5.1
+.RE
+.PD 1
+.
+.TP
+.B \-chapter <场景标识>[-<结束的场景标识>]
+设定从哪个场景开始播放. 也可以设定在哪个场景结束播放(默认值: 1).
+示例可以在下面找到.
+.TP
+.B \-csslib <文件名>
+(老式DVD选项)这个选项用来替代libcss.so的默认位置.
+.TP
+.B \-cuefile <文件名> (参见\-vcd)
+从指定的文件中描述的, CDRwin的(bin/cue文件格式)光盘镜像中播放(S)VCD.
+.TP
+.B \-demuxer <参数>
+指定分路器类型. 分路器的标识定义在demuxers.h中.
+使用\-demuxer 17将指定.mp3检测.
+.TP
+.B \-dumpaudio (仅用于MPLAYER)
+将原始的音频压缩流复制到./\:stream.dump(用于mpeg/\:ac3).
+.TP
+.B \-dumpfile <文件名> (仅用于MPLAYER)
+指定MPlayer复制的输出文件.
+应该与\-dumpaudio / \-dumpvideo / \-dumpstream一起使用.
+.TP
+.B \-dumpstream (仅用于MPLAYER)
+将原始流复制到./\:stream.dump. 当从DVD或网络上rip时候有用.
+.TP
+.B \-dumpvideo (仅用于MPLAYER)
+将原始的视频压缩流复制到./\:stream.dump(不是十分好用).
+.TP
+.B \dvd://<节目标识>
+告诉MPlayer播放哪个电影(通过节目标识指定). 比如有时'1'是一部预告片,
+而'2'才是真正的电影.
+
+.I 注意:
+.br
+有时DVD播放时需要进行交错/\:逐行扫描转换, 参见\-vf pp=0x20000选项.
+.TP
+.B \-dvd\-device <设备路径>
+替代默认的DVD设备名/dev/\:dvd.
+.TP
+.B \-dvdangle <视角标识>
+有些DVD碟片中的场景可以从多个视角观看.
+通过这个选项你可以告诉MPlayer使用那个视角(默认值: 1).
+示例可以在下面找到.
+.TP
+.B \-dvdauth <DVD设备>
+(老式DVD选项)打开指定设备的DVD认证.
+.TP
+.B \-dvdkey <CSS密钥>
+(老式DVD选项)当解码一个由DVD上复制的未解密的VOB文件时,
+用这个选项提供解码VOB需要的CSS密钥(密钥在\-dvdauth通过DVD设备认证时会显示出来).
+.TP
+.B \-dvdnav (BETA代码!)
+强行使用libdvdnav.
+.TP
+.B \-forceidx
+指定重新生成索引. 对索引损坏的文件(不同步等等)有用. 可以进行收缩.
+你能使用MEncoder永久性的修复索引(参见文档).
+.TP
+.B \-fps <参数>
+替代帧速率(如果文件头中没有该参数/\:参数是错误的)(浮点数).
+.TP
+.B \-frames <参数>
+只播放/\:转换前<参数>帧, 然后退出.
+.TP
+.B \-hr\-mp3\-seek (仅用于MP3)
+高精度mp3搜索. 默认为: 在播放外部MP3文件时启用,
+因为我们需要搜索到非常精确的位置来保持A/\:V同步. 这种方法在后退搜索时特别慢
+\- 它需要绕回开头来找到准确的帧.
+.TP
+.B \-idx (参见\-forceidx)
+在没有找到索引的情况下重建AVI文件的索引, 从而允许搜索.
+对于损坏的/\:不完整的下载, 或制作低劣的AVI.
+.TP
+.B \-mc <每帧秒数>
+每帧的最大A-V同步修正(以秒为单位).
+.TP
+.B \-mf <选项1:选项2:...>
+用来从多个PNG或JPEG文件解码.
+.br
+可用选项有:
+
+.PD 0
+.RSs
+.IPs on
+打开多文件支持
+.IPs w=<参数>
+输出的宽度(自动检测)
+.IPs h=<参数>
+输出的高度(自动检测)
+.IPs fps=<参数>
+输出的帧速率(默认值: 25)
+.IPs type=<参数>
+输入文件的类型(可用类型: jpeg, png, tga, sgi)
+.RE
+.PD 1
+.
+.TP
+.B \-ni (仅用于AVI)
+指定使用非交错的AVI分析器(用来处理某些质量差的AVI文件的播放).
+.TP
+.B \-nobps (仅用于AVI)
+不使用平均比特率值来维持A\-V同步(AVI). 对某些文件头损坏的AVI文件有帮助.
+.TP
+.B \-noextbased
+禁用基于后缀名的分路器选择机制. 默认情况下, 当文件类型(分路器)无法可靠检测时,
+(文件没有头部或者不够可靠), 将使用后缀名来选择分路器.
+后备的基于内容的分路器总是可用的.
+.TP
+.B \-passwd <密码> (参见\-user选项)
+设置http认证的密码.
+.TP
+.B \-rawaudio <选项1:选项2:...>
+用这个选项你可以播放原始音频文件.
+也可以用来播放不是44KHz 16Bit立体声的音频CD.
+.br
+可用选项有:
+
+.PD 0
+.RSs
+.IPs on
+使用原始音频分路器
+.IPs channels=<参数>
+声道数
+.IPs rate=<参数>
+每秒采样率
+.IPs samplesize=<参数>
+以字节为单位的样本大小
+.IPs format=<参数>
+16进制的fourcc
+.RE
+.PD 1
+.
+.TP
+.B \-rawvideo <选项1:选项2:...>
+用这个选项你可以播放原始视频文件.
+.br
+可用选项有:
+
+.PD 0
+.RSs
+.IPs on
+使用原始视频分路器
+.IPs fps=<参数>
+每秒帧速率, 默认值为25.0
+.IPs sqcif|qcif|cif|4cif|pal|ntsc
+设置默认的图像大小
+.IPs w=<参数>
+以像素为单位的图像宽
+.IPs h=<参数>
+以像素为单位的图像高
+.IPs y420|yv12|yuy2|y8
+设置色彩空间
+.IPs format=<参数>
+16进制的色彩空间(fourcc)
+.IPs size=<参数>
+以字节为单位的帧大小
+.RE
+.PD 1
+.
+.TP
+.B \-rtsp-stream-over-tcp
+与'rtsp://'URL一起用来指定最后结果输入的RTP和RTCP的包通过TCP流,
+(跟RTSP使用同一个TCP连接 ).
+这个选项可以用于当你的Internet连接不允许UDP包进入的情况.
+(参见http://www.live.com/mplayer/).
+.TP
+.B \-skipopening
+提过DVD打开(仅用于dvdnav).
+.TP
+.B \-sb <比特位置> (参见\-ss选项)
+搜索到比特位置.
+用于播放开始部分是垃圾的CDROM镜像/\:.VOB文件.
+.TP
+.B \-srate <Hz>
+指定音频播放速, 视频播放速度也会改变以保持a-v同步.
+MEncoder会把这个值传给lame用于重新采样.
+.TP
+.B \-ss <时间> (参见\-sb选项)
+搜索到指定的时间位置.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-ss 56"
+搜索到56秒处
+.IPs "\-ss 01:10:00"
+搜索到1小时10分钟处
+.RE
+.PD 1
+.
+.TP
+.B \-tv <选项1:选项2:...>
+这个选项会启用MPlayer的电视截取功能.
+
+.I 注意:
+.br
+MPlayer不接受冒号所以在设备标识中用逗号代替. (例如.\&用hw.0,0代替hw:0,0).
+.br
+虽然使用ALSA是你可以选择任何采样率, 但LAME音频编码器只能对'标准'的采样率进行编码.
+如果你选择一个奇怪的采样率使用这个编码器得到的.avi文件会没有声音.
+.br
+可用选项有:
+.
+.RSs
+.IPs on
+使用电视输入
+.IPs noaudio
+没有声音
+.IPs driver=<参数>
+可用参数: dummy, v4l, bsdbt848
+.IPs device=<参数>
+设定默认的/dev/\:video0之外的设备
+.IPs input=<参数>
+设定默认的0(电视)之外的输入(参见输出的列表)
+.IPs freq=<参数>
+设定电视调谐器的频率(例如\& 511.250).
+与频道参数不兼容.
+.IPs outfmt=<参数>
+电视调谐器的输出格式(yv12, rgb32, rgb24, rgb16, rgb15, uyvy, yuy2,
+i420)
+.IPs width=<参数>
+输出窗口的宽度
+.IPs height=<参数>
+输出窗口的高度
+.IPs fps=<参数>
+捕捉视频的帧速率(帧每秒)
+.IPs buffersize=<参数>
+设定以兆为单位的捕捉缓冲区的大小(默认值: 动态)
+.IPs norm=<参数>
+可用参数: PAL, SECAM, NTSC
+.IPs channel=<参数>
+把电视调谐器设定到<参数>频道.
+.IPs chanlist=<参数>
+可用参数: europe-east, europe-west, us-bcast, us-cable, 等等
+.IPs channels=<频道>\-<名称>,<频道>\-<名称>,...
+设定频道的名称. 在名称中用_代替空格(或者玩引号游戏;-).
+频道名称会用OSD显示, tv_step_channel,
+tv_set_channel和tv_last_channel等命令将可以被遥控器(参见lirc)使用.
+与频率参数不兼容.
+警告: 频道编号将出现在'频道'列表上, 从1开始.
+示例: 使用tv://1, tv://2, tv_set_channel 1, tv_set_channel 2等等.
+.IPs [brightness|contrast|hue|saturation]=<\-100\-100>
+设置显卡的色彩均衡器.
+.IPs audiorate=<参数>
+设定音频捕捉比特率
+.IPs forceaudio
+即使v4l报告没有音频源也捕捉音频
+.IPs alsa
+从ALSA捕捉
+.IPs amode=<0\-3>
+选择音频模式:
+.RSss
+0: mono
+.br
+1: stereo
+.br
+2: language 1
+.br
+3: language 2
+.REss
+.IPs forcechan=<1\-2>
+默认情况下, 记录音频声道数由电视卡检察音频模式自动决定.
+这个选项允许指定立体声/\:单声道记录而不管amode选项和v4l返回的参数.
+在电视卡不能报告正确的音频模式的时候可以用这个选项解决麻烦.
+.IPs adevice=<参数>
+设置音频设备
+.RSss
+/dev/\:...\&用于OSS
+.br
+硬件标识用于ALSA
+.REss
+.IPs audioid=<参数>
+选择捕捉卡的音频输出, 如果它有不止一个的话
+.IPs "[volume|bass|treble|balance]=<0\-65535>"
+这些选项用来设定视频捕捉卡上的混音器参数.
+如果你的卡没有混音器, 它们将没有效果.
+.IPs immediatemode=<布尔值>
+参数值为0表示同时捕捉和缓冲音频和视频(mencoder的默认值).
+参数值为1(mplayer的默认值)表示只捕捉视频而让音频通过通过环路电缆由电视卡输入声卡.
+.IPs mjpeg
+使用硬件mjpeg压缩(如果芯片支持的话). 当使用这个选项的时候,
+你不需要设置输出窗口的宽和高, mplayer会根据抽样参数(见下面)自动确定.
+.IPs decimation=<1,2,4>
+选择硬件mjpeg压缩的图像的尺寸:
+.RSss
+1: 全尺寸
+    704x576    PAL
+    704x480    NTSC
+.br
+2: 中等尺寸
+    352x288    PAL
+    352x240    NTSC
+.br
+4: 小尺寸
+    176x144    PAL
+    176x120    NTSC
+.REss
+.IPs quality=<0-100>
+选择jpeg压缩的质量
+.br
+(全尺寸推荐使用quality < 60)
+.RE
+.
+.TP
+.B \-user <用户名> (参见\-passwd选项)
+设定http认证的用户名.
+.TP
+.B \-vcd://<音轨>
+从设备或镜像文件中播放video CD音轨(参见\-cuefile).
+.TP
+.B \-vid <标识>
+选择视频频道[MPG: 0\-15 ASF: 0\-255].
+.TP
+.B \-vivo <子选项> (调试代码)
+指定.vivo分路器的音频参数(用于调试).
+
+
+.SH "OSD/字幕选项"
+.I 注意:
+.br
+参见\-vf expand.
+.TP
+.B \-dumpmicrodvdsub (仅用于MPLAYER)
+把给定的字幕文件(由\-sub选项设置)转换为MicroDVD字幕格式.
+在当前目录中创建一个dumpsub.sub文件.
+.TP
+.B \-dumpmpsub (仅用于MPLAYER)
+把给定的字幕文件(由\-sub选项设置)转换为MPlayer的字幕格式, MPsub.
+在当前目录中创建一个dump.mpsub文件.
+.TP
+.B \-dumpsrtsub (仅用于MPLAYER)
+把给定的字幕文件(由\-sub选项设置)转换为基于时间的SubViewer(SRT)字幕格式.
+在当前目录中创建一个dumpsub.srt文件.
+.TP
+.B \-dumpjacosub (仅用于MPLAYER)
+把给定的字幕文件(由\-sub选项设置)转换为基于时间的JACOsub字幕格式.
+在当前目录中创建一个dumpsub.js文件.
+.TP
+.B \-dumpsami (仅用于MPLAYER)
+把给定的字幕文件(由\-sub选项设置)转换为基于时间的SAMI字幕格式.
+在当前目录中创建一个dumpsub.smi文件.
+.TP
+.B \-dumpsub (仅用于MPLAYER) (BETA代码)
+从VOB流中复制子字幕流. 参见-dump*sub和-vobsubout*选项.
+.TP
+.B \-ifo <vobsub的ifo文件>
+设置用于读取的包含VOBSUB字幕的调色板和帧尺寸的文件.
+.TP
+.B \-ffactor <数字>
+对字体的alpha映射图重新采样.
+可设为:
+
+.PD 0
+.RSs
+.IPs 0
+普通白色字体
+.IPs 0.75
+非常细的黑色边框(默认值)
+.IPs 1
+细的黑色边框
+.IPs 10
+粗的黑色边框
+.RE
+.PD 1
+.
+.TP
+.B \-font <font.desc文件的路径>
+在另外目录你寻找OSD/\:SUB字体(默认的普通字体为:
+~/\:.mplayer/\:font/\:font.desc, 默认的FreeType字体为:
+~/.mplayer/\:subfont.ttf).
+
+.I 注意:
+.br
+对于FreeType, 这个选项指定文本字体文件的路径.
+.br
+\-subfont-*选项只有当编译了FreeType支持才可用.
+
+.I 示例:
+.PD 0
+.RSs
+\-font ~/\:.mplayer/\:arial\-14/\:font.desc
+.br
+\-font ~/\:.mplayer/\:arialuni.ttf
+.RE
+.PD 1
+.
+.TP
+.B \-noautosub
+关闭字幕文件的自动载入功能.
+.TP
+.B \-overlapsub
+对所有字幕格式启用重叠字幕支持.
+.TP
+.B \-nooverlapsub
+对所有字幕格式禁用重叠字幕支持(默认行为是只对特定格式启用支持).
+.TP
+.B \-osdlevel <0\-3> (仅用于MPLAYER)
+设定开始的OSD模式.
+
+.PD 0
+.RSs
+.IPs 0
+只有字幕
+.IPs 1
+音量 + 搜索(默认)
+.IPs 2
+音量 + 搜索 + 计时器 + 百分比
+.IPs 3
+音量 + 搜索 + 计时器 + 百分比 + 总时间
+.RE
+.PD 1
+.
+.TP
+.B \-sid <标识> (参见\-slang选项)
+打开DVD字幕显示. 同时, 你必须设置一个对应于一种DVD字幕语言的数字(0\-31).
+至于可用字幕的列表, 可以加上\-v选项并察看输出.
+.TP
+.B \-slang <两个字母的国家代码> (参见\-sid选项)
+仅用于DVD播放. 打开/\:选择DVD字幕语言.
+至于可用字幕的列表, 可以加上\-v选项并察看输出.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-slang hu,en"
+选择匈牙利语, 英语在没有匈牙利语时备用.
+.RE
+.PD 1
+.
+.TP
+.B \-sub <字幕文件>
+使用/\:显示指定的字幕文件.
+.TP
+.B \-sub-bg-alpha <0\-255>
+设置字幕和OSD背景的alpha通道值. 值越大代表越透明. 0是一个例外代表完全透明.
+.TP
+.B \-sub-bg-color <0\-255>
+设置字幕和OSD背景的颜色值. 目前字幕是灰度图像所以这个值相当于颜色的亮度.
+255代表白色0代表黑色.
+.TP
+.B \-subcc \
+显示DVD的隐藏字幕数据表(CC)字幕.
+它们不是VOB字幕, 它们是为听力障碍的人准备的特殊的ASCII字幕,
+编码在大多数区码为1的VOB的用户数据流中.
+CC字幕到目前为止还没有在别的区码的DVD中发现.
+.TP
+.B \-subcp <编码页>
+如果你的系统支持iconv(3), 你可以用这个选项来设置字幕文件的编码页.
+
+.I 示例:
+.PD 0
+.RSs
+\-subcp latin2
+.br
+\-subcp cp1250
+.RE
+.PD 1
+.
+.TP
+.B \-sub\-demuxer <数值> (BETA代码)
+指定\-subfile的字幕分路器的类型.
+.TP
+.B \-subdelay <参数>
+字幕延迟<参数>秒. 可以是负数.
+.TP
+.B \-subfont-autoscale <0\-3>
+设置自动缩放模式.
+
+.I 注意:
+.br
+0表示text-scale和osd-scale的参数为以点为尺寸的字体高度.
+.br
+可用模式有:
+
+.PD 0
+.RSs
+.IPs 0
+不自动缩放
+.IPs 1
+按电影高度缩放
+.IPs 2
+按电影宽度缩放
+.IPs 3
+按电影对角线缩放(默认值)
+.RE
+.PD 1
+.
+.TP
+.B \-subfont-blur <0\-8>
+设置字体模糊半径(默认值: 2).
+.TP
+.B \-subfont-encoding <参数>
+设置字幕编码. 当设为'unicode'时,
+字体文件中的所有字模都会被渲染并使用unicode编码(默认值: unicode).
+.TP
+.B \-subfont-osd-scale <0\-100>
+设置osd元素的自动缩放系数(默认值: 6).
+.TP
+.B \-subfont-outline <0\-8>
+设置字体边框的宽度(默认值: 2).
+.TP
+.B \-subfont-text-scale <0\-100>
+设置字幕文本的自动缩放系数(屏幕尺寸的百分比) (默认值: 5).
+.TP
+.B \-subfps <速率>
+设置字幕文件的帧/\:秒速率(浮点数), 默认值: 与电影同样的fps.
+
+.I 注意:
+.br
+仅用于基于帧的SUB文件, 比如不能用于MicroDVD格式.
+.TP
+.B \-subfile <文件名> (BETA代码)
+目前没有用.
+与\-audiofile一样, 但用于字幕流(OggDS?).
+.TP
+.B \-subpos <0\-100> (用于\-vf expand)
+设置字幕在屏幕上显示的位置. 参数表示字幕的垂直位置位于屏幕的百分之多少.
+.TP
+.B \-subalign <0\-2>
+设置字幕相对于subpos如何对齐.
+0表示顶部对齐(最初的/默认的行为), 1表示中央对齐,
+而2标识底部对齐.
+.TP
+.B \-subwidth <10\-100>
+设置字幕在屏幕上显示的最大宽度. 对于电视输出有用.
+参数表示字幕宽度占屏幕宽度的百分之多少.
+.TP
+.B \-unicode
+告诉MPlayer以UNICODE格式处理字幕.
+.TP
+.B \-utf8
+告诉MPlayer以UTF8格式处理字幕.
+.TP
+.B \-sub-no-text-pp
+禁用载入字幕后的任何形式的文字后期处理. 用于调试.
+.TP
+.B \-vobsub <无后缀名的vobsub文件名>
+设置用于字幕显示的VobSub文件. 这是无后缀名的完整路径名, 例如\&没有'.idx',
+\'.ifo'或者'.sub'.
+.TP
+.B \-vobsubid <0-31>
+设置VobSub字幕标识.
+.TP
+.B \-spualign <-1\-2>
+设置spu(DVD/VobSub)字幕如何对齐. 参数值与-subpos相同,
+特别的, -1表示在初始位置显示.
+.TP
+.B \-spuaa <模式>
+设置DVD/VobSub的反锯齿/\:缩放模式.
+加上16可以在原始和缩放帧尺寸完全相同时强制进行缩放, 比如使用高斯模糊来平滑字幕.
+可用模式有:
+.PD 0
+.RSs
+.IPs 0
+不缩放(最快, 很丑)
+.IPs 1
+近似缩放(好像坏了?)
+.IPs 2
+完全缩放(慢)
+.IPs 3
+二次线性缩放(默认值, 快速而且效果不坏)
+.IPs 4
+使用软件缩放的高斯模糊(看起来很好)
+.RE
+.PD 1
+.
+.TP
+.B \-spugauss <0.0\-3.0>
+-spuaa 4使用的高斯模糊的可变参数. 越高表示越模糊. 默认值为1.0.
+
+
+.SH "音频输出选项(仅用于MPLAYER)"
+.TP
+.B \-abs <参数> (已被放弃)
+替代音频驱动/\:声卡的缓冲区大小检测, 仅用于\-ao oss
+.TP
+.B \-af <滤镜1[=选项],滤镜2,...>
+激活一个逗号分隔的带参数的音频滤镜列表.
+.br
+可用滤镜有:
+.
+.RSs
+.IPs resample[=srate[:sloppy][:type]]
+将音频流的采样率变为整数值srate(Hz). 它只支持16 bit低位在前格式.
+.IPs channels[=nch]
+将声道变为nch个输出声道. 如果输出声道数比输入声道数多时,
+将插入空声道(但在将单声道混合为立体声时, 会把单声道复制到两个输出声道).
+如果输出声道数比输入声道数少, 多余的声道会被去掉.
+.IPs format[=bps,f]
+选择插件层输出格式为f, 样本比特率为bps.
+选项bps是一个整数表示每个样本的字节数. 格式f是下面几个字符串的连接:
+.br
+alaw, mulaw或imaadpcm
+.br
+float或int
+.br
+unsigned或signed
+.br
+le或be(低位或高位在前)
+.br
+.IPs "volume[=v:sc]"
+选择输出音量级别.这个选项是不可重入的, 所以对每个音频流只能使用一次.
+.RSss
+v: 对流中所有声道的增益, 以dB为单位.
+增益可以从-200dB到+40dB(-200dB完全静音completely而+40dB等于放大1000倍).
+.br
+sc: 启用软修饰.
+.REss
+.IPs "pan[=n:l01:l02:..l10:l11:l12:...ln0:ln1:ln2:...]"
+任意混合声道, 细节参见DOCS/sound.html.
+.RSss
+n: 输出声道数(1 - 6).
+.br
+lij: 输出声道i中混合多少输入声道j的成分.
+.REss
+.IPs "sub[=fc:ch]"
+增加副低音声道.
+.RSss
+fc: 低通滤波器的剪除频率(20Hz to 300Hz)默认值为60Hz.
+.br
+ch: 副声道的声道号.
+.REss
+.IPs "surround[=d]"
+矩阵编码的环绕音效解码器, 能用于许多2声道文件.
+.RSss
+d: 以毫秒为单位的后部扬声器的延迟时间(0ms到1000ms), 默认值为15ms.
+.REss
+.IPs delay[=ch1:ch2:...]
+延迟声音的输出. 以百万分之一秒为单位设置每个声道的延迟(0到1000之间的浮点数).
+.RE
+.
+.TP
+.B \-af-adv <force=(0\-3):list=(filters)> (参见\-af选项)
+设置高级音频滤镜选项:
+.
+.RSs
+.IPs force=<0-3>
+将插入音频滤镜的方式指定为下面之一:
+.RSss
+0: 完全自动插入滤镜(默认)
+.br
+1: 速度优化
+.br
+2: 精度优化
+.br
+3: 关闭自动插入
+.REss
+.IPs list=<滤镜>
+与\-af相同(参见\-af选项).
+.RE
+.
+.TP
+.B \-ao <驱动1[:设备],驱动2,...[,]>
+设置可用的音频输出驱动的优先级列表(可以加上设备).
+\'设备'也用于SDL, 那里它表示子驱动.
+
+.I 注意:
+.br
+要获得完整的可用驱动列表, 参考\-ao help.
+.br
+如果列表结尾有一个',' 它将可以使用没有列出的驱动作为后备.
+
+.I 示例
+.PD 0
+.RSs
+.IPs "\-ao oss:/\:dev/\:dsp2,oss:/\:dev/\:dsp1,"
+尝试使用指定声音设备的OSS而把其它设置作为后备
+.IPs "\-ao sdl:esd"
+设置SDL的子驱动
+.RE
+.PD 1
+.
+.TP
+.B \-aofile <文件名>
+用于\-ao pcm的文件.
+.TP
+.B \-aop <list=插件1,插件2...:选项1=参数1:选项2=参数2...>
+设置音频插件和他们的选项(参见文档).
+.br
+可用选项有:
+.
+.RSs
+.IPs list=[插件]
+逗号分隔的插件列表(resample, surround, format, volume,
+extrastereo, volnorm)
+.IPs delay=<秒>
+插件例子, 没有用
+.IPs format=<格式>
+输出格式(仅用于format插件)
+.IPs fout=<Hz>
+输出频率(仅用于resample插件)
+.IPs volume=<0\-255>
+音量(仅用于volume插件)
+.IPs mul=<参数>
+立体声系数(默认值: 2.5)(仅用于extrastereo插件)
+.IPs softclip
+使用'软修饰'压缩功能(仅用于volume插件)
+.RE
+.
+.TP
+.B \-delay <秒>
+以秒为单位延迟音频(可以是+/\:\-浮点值).
+.TP
+.B \-format <0\-8192>
+选择滤镜层使用的输出格式
+(依据libao2/afmt.h中的定义):
+
+.PD 0
+.RSs
+.IPs 1
+Mu-Law
+.IPs 2
+A-Law
+.IPs 4
+Ima-ADPCM
+.IPs 8
+Signed 8-bit
+.IPs 16
+Unsigned 8-bit
+.IPs 32
+Unsigned 16-bit (低位优先)
+.IPs 64
+Unsigned 16-bit (高位优先)
+.IPs 128
+Signed  16-bit (低位优先)
+.IPs 256
+Signed 16-bit (高位优先)
+.IPs 512
+MPEG (2)音频
+.IPs 1024
+AC3
+.IPs 4096
+Signed 32-bit (低位优先)
+.IPs 8192
+Signed 32-bit (高位优先)
+.RE
+.PD 1
+.
+.TP
+.B \-mixer <设备>
+这个选项让MPlayer使用/dev/\:mixer之外的设备进行混音.
+.TP
+.B \-nowaveheader (仅用于-ao pcm)
+不包括wave文件头. 用于原始RAW PCM.
+
+
+.SH "视频输出选项(仅用于MPLAYER)"
+.TP
+.B \-aa* (仅用于\-vo aa)
+你可以运行
+.I mplayer \-aahelp
+来获得一份可用选项的解释的列表.
+.TP
+.B \-bpp <深度>
+使用与自动检测结果不同的颜色深度. 不是所有\-vo驱动都支持它(fbdev, dga2, svga, vesa).
+.TP
+.B \-brightness <\-100\-100>
+调整视频输出的亮度(默认值为0). 它改变视频信号中RGB组份的亮度, 从黑到白.
+.TP
+.B \-contrast <\-100\-100>
+调整视频输出的对比度(默认值为0).
+工作方式与brightness差不多.
+.TP
+.B \-dfbopts <参数> (仅用于\-vo directfb2)
+设置directfb驱动的参数列表.
+.TP
+.B \-display <name>
+设置你希望使用的X server的hostname和display number.
+
+.I 示例:
+.PD 0
+.RSs
+\-display xtest.localdomain:0
+.RE
+.PD 1
+.
+.TP
+.B \-double
+启用双缓冲. 通过在内存里储存两帧来解决闪烁问题, 在显示一帧的同时解码另一帧.
+会影响OSD. 需要单一缓冲方式两倍的内存. 所以不能用于显存很少的显卡.
+.TP
+.B \-dr
+打开直接渲染功能(不是所有的编解码器和视频输出都支持)(默认为关闭).
+警告: 可能导致OSD/\:字幕损坏!
+.TP
+.B \-dxr2 <选项1:选项2:...>
+这个选项用来控制dxr2驱动. 注意: 现在当你播放非MPEG1/2格式时lavc滤镜会自动插入,
+所以现在所有MPlayer支持的格式都可以播放(如果你有实时编码所需要的CPU速度).
+dxr2的叠加芯片的质量相当差不过默认设置应该可以用于每一个人.
+OSD可能可以通过使用colorkey的绘制方法在叠加(不能用于TV)输出中实现.
+使用默认的colorkey设定你可能获得各种效果,
+一般情况下你可能看到colorkey环绕在字符周围或者其它可笑的效果.
+但只要你适当的调节colorkey的设定你应该可以获得可接受的效果.
+.
+.RSs
+.IPs ar-mode=<参数>
+长宽比模式(0 = 普通, 1 = pan scan模式, 2 = letterbox模式(默认))
+.IPs iec958\-encoded/\:decoded
+iec958输出模式
+.IPs mute
+声音输出静音
+.IPs ucode=<参数>
+microcode的路径
+.RE
+.RS
+
+.I TV Out
+.RE
+.RSs
+.IPs 75ire
+启用7.5IRE
+.IPs bw
+黑白电视输出
+.IPs color
+彩色电视输出
+.IPs interlaced
+交错电视输出
+.IPs macrovision=<参数>
+macrovision模式(0 = 关闭(默认值), 1 = agc, 2 = agc 2 colorstripe,
+3 = agc 4 colorstripe)
+.IPs norm=<参数>
+电视制式(ntsc(默认), pal,pal60,palm,paln,palnc)
+.IPs square/\:ccir601\-pixel
+电视像素模式
+.RE
+.RS
+
+.I 叠加
+.RE
+.RSs
+.IPs cr-[left|right|top|bot]=<\-20\-20>
+调整叠加裁减
+.IPs ck-[rgb]min=<0\-255>
+color key参数最小值
+.IPs ck-[rgb]max=<0\-255>
+color key参数最大值
+.IPs ck-[rgb]=<0\-255>
+color key参数
+.IPs ignore\-cache
+不使用VGA缓存
+.IPs ol-osd
+启用叠加模式的osd hack
+.IPs ol[hwxy]\-cor=<参数>
+调整叠加尺寸和位置, 如果它跟窗口匹配不够完美
+.IPs overlay
+启用叠加
+.IPs overlay-ratio=<1\-2500>
+调整叠加模式(默认值为1000)
+.IPs update\-cache
+重建VGA缓存
+.RE
+.
+.TP
+.B \-fb <设备> (仅用于fbdev或者DirectFB)
+设置使用的帧缓冲设备. 默认为/dev/\:fb0.
+.TP
+.B \-fbmode <模式名> (仅用于fbdev)
+把视频模式设为/etc/\:fb.modes中标记为<模式名>的模式
+.
+
+.I 注意:
+.br
+VESA帧缓冲不支持改变显示模式.
+.TP
+.B \-fbmodeconfig <文件名> (仅用于fbdev)
+使用这个配置文件取代默认的/etc/\:fb.modes. 只对fbdev驱动有效.
+.TP
+.B \-forcexv (仅用于SDL)
+指定使用XVideo.
+.TP
+.B \-fs
+全屏播放(电影显示在中央, 四周填充黑色条边).
+用'f'键触发(不是所有的视频输出都支持它).
+参见\-zoom.
+.TP
+.B \-fsmode-dontuse <0-31> (已放弃) (使用\-fs选项)
+如果你还有全屏问题试试这个选项.
+.TP
+.B \-fstype <type1,type2,...>
+设置可用的全屏层设置模式的优先级列表.
+
+默认的次序是"layer,stays_on_top,above,fullscreen".
+如果设置的模式不正确或不支持会使用后备项.
+.br
+如果你遇到全屏窗口被别的窗口覆盖的问题试试设置不同的顺序.
+
+.I 注意:
+.br
+参考\-fstype help列出的全部可用模式的列表.
+.TP
+.B \-geometry x[%][:y[%]] or [WxH][+x+y]
+调整屏幕输出的初始位置.
+x和y代表从屏幕右上角到显示图像右上角的距离, 以像素为单位.
+不过如果在参数后有百分号记号它将把参数理解为该方向上的屏幕尺寸比例.
+它也支持标准的X \-geometry的标准选项格式. 参数必须为整数.
+
+注意: 这个选项只有一个vo支持: xv.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs 50:40
+把窗口放在x=50, y=40处
+.IPs 50%:50%
+把窗口放在屏幕中央
+.IPs 100%
+把窗口放在屏幕左上角
+.IPs 100%:100%
+把窗口放在屏幕左下角
+.RE
+.PD 1
+.
+.TP
+.B \-guiwid <窗口标识>
+这告诉GUI也使用一个X11窗口并把自己粘到视频窗口的下方,
+在将一个mini-GUI嵌入到浏览器时(比如mplayer插件)有用.
+.TP
+.B \-hue <\-100\-100>
+调整视频信号的色相(默认: 0).
+你可以通过这个选项得到负片效果的图像.
+.TP
+.B \-icelayer <0\-15> (仅用于icewm)
+设置icewm下mplayer的全屏窗口层.
+
+.PD 0
+.RSs
+.IPs 0
+Desktop
+.IPs 2
+Below
+.IPs 4
+Normal
+.IPs 6
+OnTop
+.IPs 8
+Dock
+.IPs 10
+AboveDock
+.IPs 12
+Menu (默认)
+.RE
+.PD 1
+.
+.TP
+.B \-jpeg <选项1:选项2:...> (仅用于\-vo jpeg)
+设置JPEG输出的选项.
+.br
+可用选项有:
+
+.PD 0
+.RSs
+.IPs [no]progressive
+设置标准的或渐进的JPEG.
+.IPs [no]baseline
+设置是否使用基线.
+.IPs optimize=<参数>
+优化因子[0-100]
+.IPs smooth=<参数>
+平滑因子[0-100]
+.IPs quality=<参数>
+质量因子[0-100]
+.IPs outdir=<参数>
+保存JPEG文件的目录
+.RE
+.PD 1
+.
+.TP
+.B \-monitor-dotclock <dotclock\ (or\ pixelclock) range> (仅用于fbdev和vesa)
+察看etc/\:example.conf和DOCS/\:video.html来进一步了解信息.
+.TP
+.B \-monitor-hfreq <水平频率范围> (仅用于fbdev和vesa)
+.TP
+.B \-monitor-vfreq <垂直频率范围> (仅用于fbdev和vesa)
+.TP
+.B \-monitoraspect <长宽比>
+设置你的显示器或电视屏幕的长宽比, 参见用于电影长宽比的\-aspect选项.
+
+.I 示例:
+.PD 0
+.RSs
+\-monitoraspect 4:3或者1.3333
+.br
+\-monitoraspect 16:9或者1.7777
+.RE
+.PD 1
+.
+.TP
+.B \-nograbpointer
+VidMode改变(\-vm)后不截获鼠标焦点, 用于多输出头设置.
+
+.TP
+.B \-nokeepaspect
+缩放X11窗口时不保持窗口的长宽比(只工作于\-vo x11, xv,
+xmga和xvidix而且你的窗口管理器必须理解window aspect hints.).
+
+.TP
+.B \-noslices
+禁用把视频分隔成16像素高的条/\:带绘制的方式, 而是一次绘制整个帧.
+可能更快或更慢, 取决于显卡/\:缓存.
+它只对libmpeg2和libavcodec编解码器有效.
+.TP
+.B \-panscan <0.0\-1.0>
+启用Pan & Scan功能, 也就是为了在4:3的显示器上显示16:9,
+把电影的边缘切掉来获得4:3的, 与屏幕匹配的图像的方法.
+这个功能只能用于xv, xmga, mga和xvidix视频输出驱动.
+.br
+参数用来控制切掉多少图像.
+.TP
+.B \-rootwin
+在根窗口(桌面背景)中播放电影而不是重新打开一个新窗口.
+只能用于x11, xv, xmga和xvidix驱动.
+.TP
+.B \-saturation <\-100\-100>
+调整视频输出的饱和度(默认值: 0).
+你可以通过这个选项获得灰度输出.
+.TP
+.B \-screenw <像素> \-screenh <像素>
+如果你使用的输出驱动无法获得屏幕分辨率(fbdev/\:x11和/\:或者 TVout),
+你可以在这里设置水平和垂直分辨率.
+.TP
+.B \-stop-xscreensaver
+在启动是关闭xscreensaver在退出时再打开它.
+.TP
+.B \-vm
+尝试改变到更合适的视频模式. dga, x11/\:xv (XF86VidMode)和sdl输出驱动支持.
+.TP
+.B \-vo <驱动1[:设备],驱动2,...[,]>
+设置可用的视频输出驱动的优先级列表(可以加上设备).
+\'设备'也用于SDL和GGI, 那里它表示子驱动.
+
+.I 注意:
+.br
+要获得完整的可用驱动列表, 参考\-vo help.
+.br
+如果列表结尾有一个',' 它将可以使用没有列出的驱动作为后备.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-vo xmga,xv,"
+先尝试Matrox内核驱动, 然后Xv驱动, 然后其它
+.br
+.IPs "\-vo sdl:aalib"
+设置SDL子驱动
+.RE
+.PD 1
+.
+.TP
+.B \-vsync
+启用vesa的VBI支持.
+.TP
+.B \-wid <窗口标识>
+告诉MPlayer使用一个X11窗口, 在把MPlayer嵌入浏览器是有用(比如plugger扩展).
+.TP
+.B \-xineramascreen <0\-...>
+在Xinerama配置时,(就是一个单一桌面展开在多个显示器上),
+这个选项告诉MPlayer把电影显示在哪个屏幕上.
+.TP
+.B \-z <0\-9>
+设置PNG输出的压缩级别(仅用于\-vo png)
+
+.PD 0
+.RSs
+.IPs 0
+不压缩
+.IPs 9
+最大压缩
+.RE
+.PD 1
+.
+.TP
+.B \-zrbw (仅用于\-vo zr)
+黑白显示(用于优化性能,
+这个选项可以跟属于FFmpeg家族的编解码器的'黑白解码'的选项联合使用).
+.TP
+.B \-zrcrop <[宽]x[高]+[x偏移]+[y偏移]> (仅用于\-vo zr)
+选择显示输入图像的一部分, 使用多个这样的选项就启动了cinerama模式.
+在cinerama模式下电影分布在多个电视(或投影仪)来创造一个更大的屏幕.
+在第n个\-zrcrop后面的选项应用于第n个MJPEG解码卡,
+每一个编码卡至少需要有一个\-zrcrop选项加上一个\-zrdev选项.
+察看\-zrhelp的输出和文档的Zr部分可以找到示例.
+.TP
+.B \-zrdev <设备> (仅用于\-vo zr)
+设置你的MJPEG编码卡使用的设备文件名, 默认情况下这个驱动将使用它找到的第一个v4l设备.
+.TP
+.B \-zrfd (仅用于\-vo zr)
+指定使用简化取样: 简化取样由\-zrhdec和\-zrvdec设置,
+一般只有在硬件缩放能把图像延展到原始尺寸时才使用. 使用这个选项指定使用简化取样.
+.TP
+.B \-zrhelp (仅用于\-vo zr)
+显示所有\-zr*选项列表, 他们的默认值和使用cinerama模式的例子.
+.TP
+.B \-zrnorm <制式> (仅用于\-vo zr)
+设置制式为PAL/\:NTSC, 默认值为'不改变'
+.TP
+.B \-zrquality <1\-20> (仅用于\-vo zr)
+从1到20的数值代表jpeg编码质量. 1的质量最好而20的质量非常差.
+.TP
+.B \-zrvdec <1,2,4> \-zrhdec <1,2,4> (仅用于\-vo zr)
+垂直/\:水平简化取样:
+驱动只会把输入图像的每2或4行/\:点发送到MJPEG编码卡,
+而使用MJPEG卡的缩放器把图像回复到原有尺寸.
+.TP
+.B \-zrxdoff <x显示位移>, \-zrydoff <y显示位移> (仅用于\-vo zr)
+如果电影比电视屏幕小, 这些选项控制电影相对于屏幕左上角的显示位置.
+默认情况下电影放在中央位置.
+
+
+.SH "解码/滤镜选项"
+.TP
+.B \-ac <[-]编解码器1,[-]编解码器2,...[,]>
+设置可用编解码器的优先级列表, 按照它们在codecs.conf中的编解码器名称.
+在名称前加'-'表示忽略该编解码器.
+
+.I 注意:
+.br
+全部可用编解码器的完整列表参见\-ac help的输出.
+.br
+如果列表结尾有一个',' 将可以使用没有列出的编解码器作为后备.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-ac mp3acm"
+指定使用l3codeca.acm MP3编解码器
+.IPs "\-ac mad,"
+先尝试libmad, 其它作为后备
+.IPs "\-ac hwac3,a52,"
+先尝试硬件AC3输出, 然后是软件AC3编解码器, 最后是其它
+.IPs "\-ac -ffmp3,"
+尝试除了FFmpeg的MP3解码器之外的所有解码器
+.RE
+.PD 1
+.
+.TP
+.B \-afm <驱动1,驱动2,...>
+设置可用的音频驱动优先级列表, 按照它们在codecs.conf中的驱动名称.
+当都不可用是使用默认后备驱动.
+
+.I 注意:
+.br
+全部可用编解码器的完整列表参见\-afm help的输出.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-afm ffmpeg"
+先尝试FFmpeg的libavcodec(mp1/\:2/\:3)编解码器
+.IPs "\-afm acm,dshow"
+先尝试Win32编解码器
+.RE
+.PD 1
+.
+.TP
+.B \-aspect <比率>
+设置电影的长宽比. MPEG文件会自动检测, 但大多数AVI文件不会.
+
+.I 示例:
+.PD 0
+.RSs
+\-aspect 4:3或\-aspect 1.3333
+.br
+\-aspect 16:9或\-aspect 1.7777
+.RE
+.PD 1
+.
+.TP
+.B \-flip
+上下翻转图像.
+.TP
+.B \-lavdopts <选项1:选项2:...> (调试代码)
+如果使用libavcodec解码, 你可以在这里设置参数.
+
+.I 示例:
+.PD 0
+.RSs
+\-lavdopts bug=1
+.RE
+.PD 1
+
+.RS
+.I 注意:
+.br
+只要加上你想要启用的项目的参数即可.
+.br
+可用选项有:
+.RE
+.
+.RSs
+.IPs ec
+错误隐藏:
+.RSss
+1: 对损坏的MB使用强柔化马赛克滤镜
+.br
+2: MV重复搜索(很慢)
+.br
+3: 所有(默认)
+.REss
+.IPs er=<参数>
+错误恢复:
+.RSss
+.br
+0: 禁用
+.br
+1: 小心 (用于损坏的编码器)
+.br
+2: 正常 (默认) (用于正常的编码器)
+.br
+3: 扩张性的 (更多检查但可能即使对有效比特流也导致问题)
+.br
+4: 非常扩张性的
+.REss
+.IPs bug=<参数>
+手工绕过编码器bug:
+.RSss
+0: 无
+.br
+1: 自动检测bugs (默认)
+.br
+2 (msmpeg4v3): 由老式lavc生成的msmpeg4v3文件(不自动检测)
+.br
+4 (mpeg4): xvid交错bug(如果fourcc==XVIX会自动检测)
+.br
+8 (mpeg4): UMP4(如果fourcc==UMP4会自动检测)
+.br
+16 (mpeg4): padding bug(自动检测)
+.br
+32 (mpeg4): 非法vlc bug(每个fourcc都自动检测)
+.br
+64 (mpeg4): XVID和DIVX qpel的bug(每个fourcc/版本都自动检测)
+.br
+128 (mpeg4): 老的标准的qpel(每个fourcc/版本都自动检测)
+.br
+256 (mpeg4): 另一个qpel的bug(每个fourcc/版本都自动检测)
+.br
+512 (mpeg4): direct-qpel-blocksize的bug(每个fourcc/版本都自动检测)
+.br
+1024 (mpeg4): edge padding的bug(每个fourcc/版本都自动检测)
+.REss
+.IPs idct=<0\-99>
+(参见lavcopts)
+想要最好的解码质量应该在编码和解码时使用相同的idct算法.
+不过这可能会牺牲一些精确性.
+.IPs gray
+只解码灰度图像(比彩色解码快一点)
+.RE
+.
+.TP
+.B \-noaspect
+禁用电影长宽比自动尝试.
+.TP
+.B \-nosound
+不播放/\:编码声音.
+.TP
+.B \-pp <质量> (参见\-vf pp选项!)
+设置DLL的后期处理级别.
+这个选项不能用于MPlayer的后期处理滤镜,
+但可以用于有内部后期处理例程的Win32 DirectShow DLL.
+
+\-pp的参数范围依编解码器不同, 大部分为0\-6,
+0=禁用 6=最慢/\:最好.
+.TP
+.B \-pphelp (参见\-vf pp选项)
+列出可用后期处理滤镜和他们的使用方法简介.
+.TP
+.B \-ssf <mode>
+设置SwScaler参数.
+
+.I 示例
+.PD 0
+.RSs
+\-vf scale \-ssf lgb=3.0
+.RE
+.PD 1
+
+.PD 0
+.RSs
+.IPs lgb=<0\-100>
+高斯模糊滤镜(亮度)
+.IPs cgb=<0\-100>
+高斯模糊滤镜(色度)
+.IPs ls=<0\-100>
+锐化滤镜(亮度)
+.IPs cs=<0\-100>
+锐化滤镜(色度)
+.IPs chs=<h>
+水平色度偏移
+.IPs cvs=<v>
+垂直色度偏移
+.RE
+.PD 1
+.
+.TP
+.B \-stereo <模式>
+选择MP2/\:MP3立体声输出模式.
+
+.PD 0
+.RSs
+.IPs 0
+立体声
+.IPs 1
+左声道
+.IPs 2
+右声道
+.RE
+.PD 1
+.
+.TP
+.B \-sws <软件缩放类型> (参见\-vf scale选项)
+这个选项用来设置\-zoom选项使用的软件缩放的质量(还有速度, 相对的).
+用于x11或其它没有硬件加速的视频输出.
+可用选项有:
+
+.I 注意:
+.br
+对于\-sws\ 2和7, 可以用\-vf scale的缩放参数(p)来设置锐化(0(柔化) \- 100(锐化)),
+对于\-sws 9, 这个参数设置滤镜长度参数(1 \- 10).
+
+.PD 0
+.RSs
+.IPs 0
+快速二次线性(默认)
+.IPs 1
+二次线性
+.IPs 2
+二次立方(质量很好)
+.IPs 3
+实验中
+.IPs 4
+最短距离 (bad quality)
+.IPs 5
+区域
+.IPs 6
+亮度二次立方/\:色度二次线性
+.IPs 7
+高斯
+.IPs 8
+sincR
+.IPs 9
+lanczos
+.IPs 10
+双三次样条曲线
+.RE
+.PD 1
+.
+.TP
+.B \-vc <[-]编解码器1,[-]编解码器2,...[,]>
+设置可用编解码器的优先级列表, 按照它们在codecs.conf中的编解码器名称.
+在名称前加'-'表示忽略该编解码器.
+
+.I 注意:
+.br
+全部可用编解码器的完整列表参见\-vc help的输出.
+.br
+如果列表结尾有一个',' 将可以使用没有列出的编解码器作为后备.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-vc divx"
+指定使用Win32/\:VFW DivX编解码器, 没有后备
+.IPs "\-vc divx4,"
+先尝试divx4linux编解码器, 然后使用后备
+.IPs "\-vc -divxds,-divx,"
+尝试除了Win32 DivX编解码器之外的编解码器
+.IPs "\-vc ffmpeg12,mpeg12,"
+尝试libavcodec的MPEG1/\:2编解码器, 然后尝试libmpeg2, 然后其它
+.RE
+.PD 1
+.
+.TP
+.B \-vf <...,滤镜3[=选项],滤镜2,滤镜1>
+激活一个反序排列的逗号分隔的视频插件和它们的参数的列表.
+
+.I 注意:
+.br
+参数是可选的, 当被省略时, 有些会设为默认值.
+使用'-1'保持默认值.
+参数w:h标识宽度x高度, 以点为单位, x:y表示相当图像左上角x;y的位置.
+.br
+全部可用插件的完整列表参见\-vf help的输出.
+.br
+可用插件有:
+.
+.RSs
+.IPs crop[=w:h:x:y]
+切割图像的指定部分其余丢弃. 用于去掉宽银幕电影的黑边.
+.RSss
+w,h: 切割部分的宽和高, 默认值为原始的宽度和高度.
+.br
+x,y: 切割部分的位置, 默认值是中央.
+.REss
+.IPs cropdetect[=0\-255]
+计算必要的切割参数并把推荐值显示在标准输出上.
+极限值的设置可以从无(0)到所有(255).(默认值: 24)
+.IPs rectangle[=w:h:x:y]
+在图像的指定坐标出绘制一个指定宽度和高度的矩形(用来实验crop的参数).
+.RSss
+w,h: 宽度和高度(默认值: -1, 保证边界仍然可见的最大可能宽度).
+.br
+x,y: 左上角坐标(默认值: -1, 最左最上)
+.REss
+.IPs
+这个插件会响应input.conf中的'change_rectangle'指令, 需要两个参数.
+第一个参数可以是0表示w, 1表示h, 2表示x或者3表示y.
+第二个参数标识每次改变目标矩形边界的点数.
+.IPs expand[=w:h:x:y:o]
+把电影的分辨率扩展(不缩放)到指定的值并把原始图像放在坐标x, y处.
+可以用获得的黑带显示字幕/\:OSD.
+.RSss
+w,h: 扩展后的宽度, 高度(默认值: 原始的宽度, 高度)
+.br
+x,y: 扩展后的图像中原始图像的位置(默认值: 中央)
+.br
+o:   OSD/字幕渲染
+    0: 禁用(默认值)
+    1: 启用
+.REss
+.IPs
+w和h的负参数视为相对原始尺寸的偏移,
+例如expand=0:-50:0:0在图像底部增加50个像素的边界.
+.IPs flip
+上下翻转图像.
+参见\-flip选项.
+.IPs mirror
+沿Y轴镜像图像.
+.IPs rotate[=<0-7>]
++/\:\- 90度的旋转并翻转(可选)图像.
+参数为4-7之间的旋转只有当电影的形状是纵向而不是横向时.
+.IPs scale[=w:h[:c[:p]]]
+使用软件缩放(很慢)来缩放图像并进行YUV<\->RGB色彩空间转换(参见\-sws参数).
+.RSss
+w,h: 缩放后的新宽度/\:高度(默认值: 原始的宽度, 高度)
+    注意: 如果使用了\-zoom, 而后继的滤镜(包括libvo)不支持缩放,
+    那么它的默认值为d_width/\:d_height!
+    -1: 原始的width/\:height
+    0:  缩放后的d_width/\:d_height
+    -2: 用另外尺度和预放大的长宽比计算w/\:h.
+    -3: 用另外尺度和原始的长宽比计算w/\:h.
+.br
+c:   色度抽样
+    0: 使用所有可用的输入行的色度
+    1: 使用每2个输入行的色度
+    2: 使用每4个输入行的色度
+    3: 使用每8个输入行的色度
+.br
+p:  缩放参数(取决于所用的缩放模式)
+    对于-sws 2(二次立方)这表示锐化(0 (柔化) - 100 (锐化))
+    对于-sws 7(线性)这表示锐化(0(柔化) - 100(锐化))
+    对于-sws 9(lanczos)这表示滤镜长度(1 - 10)
+0表示(按长宽比)缩放的目标w/\:h. (默认值: 原始w/\:h, 与\-zoom同时使用表示目标w/\:h),
+可选用色度采样(c从0到3)和设置缩放参数. (细节参见\-sws选项)
+.REss
+.IPs yuy2
+指定使用YV12/\:I420或422P到YUY2的软件转换.
+用于当显卡/\:驱动显示YV12速度慢而YUY2速度快的情况.
+.IPs yvu9
+指定使用YVU9到YV12的软件转换.
+不管软件缩放的设置.
+.IPs rgb2bgr[=swap]
+RGB 24/\:32 <\-> BGR 24/\:32色彩空间转换.
+.RSss
+swap: 同时进行R <\-> B互换.
+.REss
+.IPs palette
+使用调色板进行RGB/\:BGR 8 \-> 15/\:16/\:24/\:32bpp色彩空间转换.
+.IPs format[=fourcc]
+限制下一个插件使用的色彩空间而不进行任何转换.
+与scale插件一起用于一次真实转换.
+.RSss
+fourcc: 类似rgb15, bgr24, yv12等等的格式(默认值: yuy2)
+.REss
+.IPs pp[=滤镜1[:选项1[:选项2...]]/[-]滤镜...] (参见\-pphelp)
+这个选项开启MPlayer的内部后期处理滤镜的使用,
+同时提供一个你可以向有名字的滤镜传送选项的接口.
+可用滤镜的列表参见\-pphelp的输出.
+.br
+注意每一个子滤镜都必须用一个/\:记号分隔.
+.br
+所有滤镜默认作用于'c'(色度).
+.br
+,'\-'前缀表示禁用该选项.
+.br
+在选项后面可以加上一个':'和一个字母表示它的作用范围:
+.RSss
+a: 如果CPU太慢则自动关闭滤镜.
+.br
+c: 同时进行色度处理.
+.br
+y: 不进行色度处理(只进行亮度处理).
+.REss
+
+.RS
+.I 示例:
+.RE
+.RSss
+.br
+\-vf pp=hb/vb/dr/al/lb
+.br
+\-vf pp=hb/vb/dr/al
+.br
+使用除了亮度/\:对比度修正之外的默认滤镜:
+.br
+\-vf pp=de/\-al
+.br
+使用默认滤镜和时间噪音消除:
+.br
+\-vf pp=de/tn:1:2:3
+.br
+仅对亮度柔化马赛克并根据CPU可用时间打开或关闭垂直柔化马赛克:
+.br
+\-vf pp=hb:y/vb:a \-autoq 6
+.REss
+.IPs test
+产生各种设置样式.
+.IPs lavc[=quality:fps]
+用于DVB/\:DXR3的通过libavcodec进行YV12到MPEG1的快速转换.
+比\-vf=fame速度更快质量更好.
+.RSss
+quality:
+    1 \- 31 固定qscale
+    32 \-   固定比特率, 以kBits为单位
+.br
+fps: 指定输出帧速率(浮点数) (默认值: 0, 基于高度的自动检测)
+.REss
+.IPs fame
+用于DVB/\:DXR3的YV12到MPEG1的快速转换.
+.IPs dvbscale[=aspect]
+使用DVB卡的最佳缩放, X轴以硬件缩放而Y轴用软件缩放以保持长宽比.
+.RSss
+aspect: 控制长宽比, 按DVB_HEIGHT*ASPECTRATIO计算(默认值:
+576*4/3=768), 对于16:9的电视把它设置为576*(16/9)=1024.
+.REss
+.IPs
+只应该与expand+scale一起使用:
+\-vf lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale
+.IPs "noise[=亮度[u][t|a][h][p]:色度[u][t|a][h][p]]"
+增加噪音.
+.RSss
+<0\-100>: 亮度噪音
+.br
+<0\-100>: 色度噪音
+.br
+u: 均衡噪音 (否则使用高斯算法)
+.br
+t: 时间噪音 (噪音样式随帧改变)
+.br
+a: 平均随机噪音 (更平滑, 有点慢)
+.br
+h: 高质量 (看起来稍为好些, 有点慢)
+.br
+p: 在一个(半)规则样式中混入随机噪音
+.REss
+.IPs "denoise3d[=亮度:色度:时间]"
+这个滤镜的目标是降低图像噪音生成平滑图像并让静止图像真正静止,
+(这有利于压缩).
+它可以加0到3个参数. 如果你省略一个参数, 将猜测一个合理的值.
+.RSss
+亮度:	空间亮度浓度 (默认值 = 4)
+.br
+chroma:	空间色度浓度 (默认值 = 3)
+.br
+time:	时间强度 (默认值 = 6)
+.REss
+.IPs "hqdn3d[=luma:chroma:time]"
+高精度/\:质量的denoise3d滤镜. 参数和使用方法相同.
+.IPs eq[=亮度:对比度]
+像硬件均衡器一样可以交互控制的软件均衡器,
+用于不支持硬件亮度对比度控制的显卡/\:驱动.
+也可以用于MEncoder, 修复捕捉质量差的电影,
+或者略微降低对比度来掩盖加工痕迹或获得较低的比特率.
+初始值可以由命令行给出, 范围在-100 \- 100之间.
+.IPs eq2[=gamma:对比度:亮度:色相:rg:gg:bg]
+另一个使用查表的软件均衡器(非常慢), 在简单的亮度,
+对比度和色相调整之外还支持gamma修正.
+注意当所有gamma值都为1.0时, 它使用与\-vf eq一样的MMX优化代码.
+参数以浮点值给定.
+参数rg, gg, bg是红, 绿, 兰组份的独立gamma值.
+默认值为1.0, 亮度=0.0.
+gamma的取值范围是0.1\-10, 对比度是-2\-2(负数产生负片效果),
+亮度是-1\-1而色度为0\-3.
+.IPs halfpack[=f]
+把4:2:0的planar YUV转换为4:2:2高度减半的packed格式,
+降低亮度采样率但保持所有色度样本.
+用于输出到硬件缩放质量差或不可用的低分辨率显示设备.
+也可以作为一个cpu消耗很低的简单的仅用于亮度的交错/\:逐行扫描转换器.
+默认情况下, halfpack在降低采样率的时候去两行的平均值.
+可选的参数f可以是0表示只使用偶数行, 或者1表示只使用奇数行.
+.IPs dint[=sense:level]
+检测并丢弃视频流中的隔行扫描的帧.
+参数取值范围从0.0到1.0 - 第一个(默认值 0.1)表示相邻点的相对差别,
+第二个(默认值 0.15)表示检测图像的哪一部分来决定是否把帧作为隔行扫描丢弃.
+.IPs lavcdeint
+使用libavcodec的隔行/\:逐行扫描转换滤镜.
+.IPs "unsharp=l|cWxH:amount[:l|cWxH:amount]"
+反锐化掩饰/\:高斯模糊.
+.RSss
+l: 应用到亮度组份.
+.br
+c: 应用到色度组份.
+.br
+WxH: 矩阵的宽度和高度, 两个方向都必须是奇数
+(最小 = 3x3, 最大 = 13x11或者11x13, 一般在3x3到7x7之间)
+.br
+amount: 加到图像上的锐化/\:模糊的相对量
+(正常范围应该是-1.5 \- 1.5).
+    <0: 模糊
+    >0: 锐化
+.REss
+.IPs swapuv
+交换U & V平面.
+.IPs "il=[d|i][s][:[d|i][s]]"
+交错/\:逐行转换.
+这个滤镜的目标是分区处理交错图像而不进行逐行转换.
+你可以用它处理你的交错图像的DVD, 不必交错图像就可以在电视上播放它.
+当逐行处理(用后期处理滤镜)会永久破坏交错图像(用平滑, 平均等等),
+逐行处理会把帧分成两块(成为半图像),
+所以你需要分别进行(处理)他们然后把它们重新交错.
+.RSss
+d: 逐行
+.br
+i: 隔行
+.br
+s: 交换域(交换偶数&奇数行)
+.REss
+.IPs "field[=n]"
+使用步进算法解压交错图像中的单独域从而避免浪费CPU时间.
+可选参数n设置解压偶数域还是奇数域(取决于n是偶数还是奇数).
+.IPs "detc[=变量1=参数1:变量2=参数2:...]"
+尝试反转"telecine"过程生成一个电影帧速率的干净的非交错的视频流.
+这个滤镜还在试验阶段但似乎可用.
+你必须明白如果你看电影的时候没有交错现象, 这个滤镜绝对没有用.
+下面的参数(参考上面的语法)可以用来控制它的行为:
+.RSss
+dr: 设置掉帧模式. 0(默认)表示不掉帧以保持固定的输出帧速率.
+1表示总是如果前5帧没有掉帧或telecine合并就掉1帧.
+2表示总是保持准确的5:4的输入输出帧比率. (注意: MEncoder使用1!)
+.br
+am: 分析模式. 可用参数有0(使用fr=#设置的初始帧数的固定样式),
+和1(扩张性搜索telecine样式).默认值为1.
+.br
+fr: 设置初始帧数序列. 0-2是三个干净的渐进帧;
+3和4是两个交错帧. 默认值, -1, 表示"不在telecine序列中".
+这里设置的数字是假想的电影开始前的帧数.
+.br
+tr0, tr1, tr2, tr3: 特定模式的初始值.
+.REss
+.IPs "telecine[=开始]"
+使用3:2的"telecine"过程增加帧速率20%.
+mplayer的这个功能应该不能正常工作,
+不过它可以用于'mencoder -fps 29.97 -ofps 29.97 -vf telecine'.
+两个fps选项都是必需的!
+(如果错误将导致A/V不同步). 可选的开始参数告诉滤镜telecine格式从哪里开始(0-3).
+.IPs "tfields[=模式]"
+临时域分离 -- 把域分成帧, 输出帧速率加倍.
+0模式时, 滤镜保持域不变, 输出结果高度减半.
+1模式时, 图像的交错部分将被改写重新构成完整高度的帧.
+跟telecine滤镜一样, "tfields"只有用mencoder,
+并且只有-fps和-ofps都设置成需要的(加倍)的帧速率时才能正常工作!
+.IPs "boxblur=半径:强度[:半径:强度]"
+盒子模糊
+.RSss
+半径: 滤镜大小
+.br
+强度: 滤镜应用的强度
+.REss
+.IPs "sab=半径:强度:色差[:半径:强度:色差]"
+外形识别模糊
+.RSss
+半径: 模糊滤镜强度(~0.1\-4.0)(越大越慢)
+.br
+强度: 预过滤强度(~0.1\-2.0)
+.br
+色差: 可以容忍的像素差别.(~0.1-100.0)
+.REss
+.IPs "smartblur=半径:强度:阀值[:半径:强度:阀值]"
+只能模糊
+.RSss
+半径: 模糊滤镜强度(~0.1\-5.0)(越大越慢)
+.br
+强度: 模糊(0.0\-1.0)或锐化(-1.0\-0.0)
+.br
+阀值: 过滤全部(0), 过滤单调区域(0\-30)或过滤边界(-30\-0)
+.REss
+.IPs "perspective=x0:y0:x1:y1:x2:y2:x3:y3:t"
+形状修正
+.RSss
+x0,y0,...: 左上, 右上, 左下, 右下坐标
+.br
+t: 线性(0)或立方(1)重新采样
+.REss
+.IPs 2xsai
+使用双倍放大插入算符放大并平滑图像.
+.IPs 1bpp
+1bpp位图到YUV/BGR 8/15/16/32转换
+.IPs down3dright[=行数]
+重新配置缩放立体图像.
+解压两个立体域并把它们放在一起, 重新缩放以维持原始电影长宽比.
+.RSss
+行数: 从图像中部选择的行数(默认值: 12)
+.REss
+.IPs "bmovl=隐藏:不透明:<命名管道>"
+从一个命名管道读取位图并把它们显示在窗口中.
+.
+.RSss
+隐藏: 设置'隐藏'标记的默认值(布尔值)
+.br
+不透明: 切换alphablended(透明)和不透明(快速)模式标记
+.br
+命名管道: 命名管道的路径/文件名(连接mplayer -vf bmovl和控制程序的命名管道)
+.REss
+
+.RS
+命名管道命令有:
+.RE
+.RSss
+RGBA32 width height xpos ypos alpha clear
+.br
+接受width*height*4字节的原始RGBA32数据
+
+ABGR32 width height xpos ypos alpha clear
+.br
+接受width*height*4字节的原始ABGR32 data.
+
+RGB24 width height xpos ypos alpha clear
+.br
+接受width*height*3字节的原始RGB32 data.
+
+BGR24 width height xpos ypos alpha clear
+.br
+接受width*height*3字节的原始BGR32 data.
+
+ALPHA width height xpos ypos alpha
+.br
+改变区域的alpha值
+
+CLEAR width height xpos ypos
+.br
+清除数据
+
+OPAQUE
+.br
+禁用所有alpha透明
+发送"ALPHA 0 0 0 0 0"可以重新打开它.
+
+HIDE
+.br
+隐藏位图
+
+SHOW
+.br
+显示位图
+.REss
+
+.RS
+参数有:
+.RE
+.RSss
+width, height: 图像/\:区域尺寸
+.br
+xpos, ypos: 位图传送的X/Y位置
+.br
+alpha: 设置alpha差别.
+0标识原始值, 255使所有都不透明, -255使所有都透明.
+如果你把它设为-255, 你可以随后发送一个ALPHA命令序列吧区域设置为-225,
+-200, -175等等来获得一个漂亮的淡入效果! ;)
+.br
+clear: 传送前清楚帧缓冲.
+1表示清除, 如果是0, 图像会被传送到老图像上,
+所以你不需要每次为屏幕小部分的变化都发送1,8MB的RGBA32数据.
+.REss
+.RE
+.
+.TP
+.B \-vfm <驱动1,驱动2,...>
+设置可用的视频驱动优先级列表, 按照它们在codecs.conf中的驱动名称.
+当都不可用是使用默认后备驱动.
+
+.I 注意:
+.br
+如果编译了libdivxdecore支持,则odivx和divx4会包含同一个DivX4编解码器,
+但用不同的API调用它. 他们的区别和什么情况下应该使用哪一个,
+参考文档的DivX4部分.
+.br
+全部可用编解码器的完整列表参见\-vfm help的输出.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-vfm ffmpeg,dshow,vfw"
+先尝试libavcodec, 然后是Directshow, 然后是VFW,
+如果都不行就使用其它后备编解码器.
+.IPs "\-vfm xanim"
+先尝试XAnim编解码器
+.RE
+.PD 1
+.
+.TP
+.B \-x <x> (仅用于MPLAYER)
+把图像缩放到宽度x(如果软件/\:硬件缩放可用).
+禁用长宽比计算.
+.TP
+.B \-xvidopts <选项1:选项2:...>
+设置使用XviD解码时的附加参数.
+
+.PD 0
+.RSs
+.IPs dr2
+激活直接渲染模式2.
+.IPs nodr2
+关闭直接渲染模式2.
+.RE
+.PD 1
+.
+.TP
+.B \-xy <x>
+.PD 0
+.RSs
+.IPs "x<=8"
+按因子<x>缩放图像.
+.IPs "x>8\ "
+把图像宽度设为<x>并计算图像高度以保持长宽比.
+.RE
+.PD 1
+.
+.TP
+.B \-y <y> (仅用于MPLAYER)
+把图像缩放到高度y(如果软件/\:硬件缩放可用).
+禁用长宽比计算..TP
+.B \-zoom
+在可能的情况下使用软件缩放.
+可以用来指定\-vf scale进行缩放.
+
+.I 注意:
+.br
+如果没有\-zoom选项\-vf scale将忽略\-x / \-y / \-xy / \-fs / \-aspect等选项.
+
+
+.SH "编码选项 (仅用于MENCODER)"
+.TP
+.B \-audio-density <1\-50>
+每秒的音频块数(默认是两个0.5秒的长音频块).
+
+.I 注意:
+.br
+仅用于CBR, VBR将忽略它因为它把每个包放在一个新块中.
+.TP
+.B \-audio-delay <0.0\-...>
+设置文件头中的音频延迟域. 默认值为0.0, 负数不能正常工作.
+这不是在编码的时候延迟音频, 而是播放器会把它作为默认的音频延迟,
+你可以不必用\-delay选项.
+.TP
+.B \-audio-preload <0.0\-2.0>
+设置音频缓冲间隔(默认值: 0.5秒).
+.TP
+.B \-divx4opts <选项1:选项2:...>
+当用DivX4编码时, 你可以由此设置参数.
+.br
+可用选项有:
+.
+.RSs
+.IPs help
+获得帮助
+.IPs br=<参数>
+设置比特率以
+.RSss
+kbit<4\-16000>或者
+.br
+bit<16001\-24000000>为单位
+.REss
+.IPs key=<参数>
+最大关键帧间隔(以帧为单位)
+.IPs deinterlace
+启用逐行扫描(别用它, DivX4很buggy)
+.IPs q=<1\-5>
+质量(1\-最快, 5\-最好)
+.IPs min_quant=<1\-31>
+最小量化值
+.IPs max_quant=<1\-31>
+最大量化值
+.IPs rc_period=<参数>
+速率控制周期
+.IPs rc_reaction_period=<参数>
+速率控制反应周期
+.IPs rc_reaction_ratio=<参数>
+速率控制反应率
+.IPs crispness=<0\-100>
+设置生硬/\:平滑
+.IPs pass=<1\-2>
+用这个选项你可以编码2 pass的DivX4文件.
+先用pass=1编码, 然后以同样的参数, 用pass=2编码.
+.IPs vbrpass=<0\-2>
+代替pass参数并使用XviD VBR代替DivX4 VBR.
+可用选项有:
+.
+.RSss
+0: 1 pass编码编码(相当于命令行中间没有pass的情况)
+.br
+1: 分析2 pass编码的(第一次)pass. 产生的AVI文件可以导入到/dev/null.
+.br
+2: 2 pass编码的最终(第二次)pass.
+.REss
+.RE
+.
+.TP
+.B \-endpos <[[时:]分:]秒[.毫秒]|大小[b|kb|mb]> (参见\-ss和\-sb选项)
+在给定时间或者字节位置结束编码.
+可以用很多方式设置:
+
+.I NOTE:
+.br
+字节位置是不精确的, 因为它只能停在一个帧上.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-endpos 56"
+在56秒时结束
+.IPs "\-endpos 01:10:00"
+只编码1小时10分钟
+.IPs "\-endpos 100mb"
+只编码100MBytes
+.RE
+.PD 1
+.
+.TP
+.B \-ffourcc <fourcc>
+可以用来替代输出文件的视频fourcc.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "-ffourcc div3"
+将输出文件的视频fourcc设置为'div3'.
+.RE
+.PD 1
+.
+.TP
+.B \-include <配置文件>
+设置默认配置文件之外的附加设置文件.
+.TP
+.B \-info <选项1:选项2:...> (仅用于AVI)
+设置输出AVI文件的文件信息头.
+.br
+可用选项有:
+.
+.RSs
+.IPs help
+显示以下信息
+.IPs name=<参数>
+设置文件内容的标题
+.IPs artist=<参数>
+文件原始内容的作者或艺术家
+.IPs genre=<参数>
+原始作品分类
+.IPs subject=<参数>
+文件内容
+.IPs copyright=<参数>
+文件版权信息
+.IPs srcform=<参数>
+被数字化的素材的原始形式
+.IPs comment=<参数>
+对于文件或文件内容的评论
+.RE
+.
+.TP
+.B \-lameopts <选项1:选项2:...>
+如果使用libmp3lame编码为MP3, 你可以由此设置它的参数.
+.br
+可用选项有:
+.
+.RSs
+.IPs help
+获得帮助
+.IPs vbr=<0\-4>
+可变比特率方式
+.RSss
+0: cbr
+.br
+1: mt
+.br
+2: rh (默认)
+.br
+3: abr
+.br
+4: mtrh
+.REss
+.IPs abr
+平均比特率
+.IPs cbr
+常比特率.
+.br
+也会在后继ABR预置模式中强制使用CBR模式
+.IPs br=<0\-1024>
+以kBit为单位设置比特率(仅用于CBR和ABR)
+.IPs q=<0\-9>
+质量(0-最高, 9-最低) (仅用于VBR)
+.IPs aq=<0\-9>
+算法质量(0\-最好/\:最慢, 9\-最差/\:最快)
+.IPs ratio=<1\-100>
+压缩率
+.IPs vol=<0\-10>
+设置音频输入增益
+.IPs mode=<0\-3>
+(默认值: 自动)
+.RSss
+0: 立体声
+.br
+1: 联合立体声
+.br
+2: 双声道
+.br
+3: 单声道
+.REss
+.IPs padding=<0\-2>
+.RSss
+0: 无
+.br
+1: 所有
+.br
+2: 调整
+.REss
+.IPs fast
+启用更快的后继VBR预置编码模式, 质量稍低而比特率提高.
+.IPs preset=<参数>
+预设参数
+.RSss
+medium: VBR编码, 质量好, 150\-180 kbps的比特率范围.
+.br
+standard: VBR编码, 质量高, 170\-210 kbps的比特率范围.
+.br
+extreme: VBR编码, 质量非常高, 200\-240 kbps的比特率范围.
+.br
+insane: CBR编码, 质量最高, 320 的比特率范围.
+.br
+<8-320>: 将所给参数作为平均比特率的ABR编码.
+.br
+.REss
+.RE
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-lameopts fast:preset=standard"
+用于大多数人和大多数音乐, 质量已经相当高了.
+.IPs "\-lameopts  cbr:preset=192"
+用指定的192 kbps常比特率的ABR预置模式编码.
+.IPs "\-lameopts      preset=172"
+用172 kbps平均比特率的ABR预置模式编码.
+.IPs "\-lameopts      preset=extreme"
+用于有绝好听力和同样好的配置的人.
+.IPs "\-lameopts preset=help"
+显示预置设置的附加选项等信息.
+.RE
+.PD 1
+.
+.TP
+.B \-lavcopts <选项1:选项2:...>
+如果使用libavcodec编码, 你可以由此设置它的参数.
+
+.I 示例:
+.PD 0
+.RSs
+\-lavcopts vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250
+.RE
+.PD 1
+
+.RS
+可用选项有:
+.RE
+.
+.RSs
+.IPs vcodec=<参数>
+设置使用的编解码器(没有默认值, 你必须设置它):
+.RSss
+mjpeg: Motion JPEG
+.br
+h263: H263
+.br
+h263p: H263 Plus
+.br
+mpeg4: DivX 4/\:5
+.br
+msmpeg4: DivX 3
+.br
+msmpeg4v2: MS MPEG4v2
+.br
+wmv1: Windows Media Video 7
+.br
+wmv2: Windows Media Video 8
+.br
+rv10: 一个老的RealVideo编解码器
+.br
+mpeg1video: MPEG1视频:)
+.br
+huffyuv: HuffYUV
+.REss
+.IPs vqmin=<1\-31>
+最小量化值(pass\ 1/\:2)
+.RSss
+1: 不推荐(文件大很多, 质量没什么区别而且奇怪的副作用: msmpeg4,
+h263质量很低, 拒绝速率控制结果质量更低而且有些解码器不能解码).
+.br
+2: 推荐用于一般的mpeg4/mpeg1视频编码(默认值).
+.br
+3: 推荐用于h263(p)/msmpeg4. 选择3而不是2的理由是2会导致溢出,
+(对于h263(p)将来可以通过改变每MB的量化值来修正,
+msmpeg4没法修正因为它不支持这个)
+.REss
+.IPs vqscale=<1\-31>
+常量化值/\:常质量编码(选择固定量化值模式).
+较低值表示更好的质量但更大的文件(默认值: 0(禁用)).
+不推荐使用1(细节参见\-vqmin).
+.IPs vqmax=<1\-31>
+最大量化值(pass\ 1/\:2), 10\-31的范围比较合理(默认值: 31)
+.IPs mbqmin=<1\-31>
+最小宏块量化值(pass\ 1/\:2)(默认值: 2)
+.IPs mbqmax=<1\-31>
+最大宏块量化值(pass\ 1/\:2)(默认值: 31)
+.IPs vqdiff=<1\-31>
+I或P帧的最大量化差值(pass\ 1/\:2)(默认值: 3)
+.IPs vmax_b_frames=<0\-4>
+非B帧之间的最大B帧数:
+.RSss
+0: 无B帧(默认值)
+.br
+0\-2: MPEG4的合理范围
+.REss
+.IPs vme=<0\-5>
+运动判断模式:
+.RSss
+0: none(非常低的质量)
+.br
+1: full(很慢)
+.br
+2: log(低质量)
+.br
+3: phods(低质量)
+.br
+4: EPZS(默认)
+.br
+5: X1(试验)
+注意: 0\-3忽略Bits消耗量, 所以质量可能降低.
+.REss
+.IPs vhq
+高质量模式, 把每个宏块用所有模式编码并选择其中最好的.
+这很慢但得到的文件质量和文件大小都更好.(默认值: 禁用)
+.IPs v4mv
+允许没有宏块4个运动矢量(质量略有提高).(默认值: 禁用)
+.IPs keyint=<0\-300>
+关键帧的最大间距, 以帧为单位. 搜索需要关键帧因为只有关键帧可以被搜索,
+但是关键帧比其它帧需要更多空间. 所以较大的参数产生较少的文件,
+但搜索不够精确, 0表示没有关键帧.
+不推荐大于300的参数因为效果可能不好, 取决于解码器, 编码器和运气.
+如果要严格遵循的MPEG1/\:2/\:4这个值应该小于等于132.
+(默认值: 250或在25fps的电影中每10秒一个关键帧)
+.IPs vb_strategy=<0\-1>
+选择I/\:P/\:B帧的策略(pass\ 2):
+.RSss
+0: 总使用最大数量的B帧(默认值)
+.br
+1: 在高速运动的场景中避免B帧(将导致比特率误测)
+.REss
+.IPs vpass=<1\-2>
+激活内部2 pass模式, 只有当你希望使用2 pass编码时使用(默认值: 禁用).
+.RSss
+1: 第一次pass
+.br
+2: 第二次pass
+.REss
+.IPs
+技巧: 对1 pass尝试使用常量化值模式(vqscale=<量化值>).
+.br
+huffyuv:
+.RSss
+pass 1保存统计信息
+.br
+pass 2使用基于pass 1统计的优化霍夫曼表编码.
+.REss
+.IPs aspect=<x/y>
+内部保存电影长宽比, 像MPEG文件一样.
+比重新缩放效果好的多, 因为质量没有损失.
+只有MPlayer可以正确播放这些文件, 其它播放器会显示错误的长宽比.
+aspect的参数可以以分数或浮点数形式给出.
+示例:
+.RSss
+aspect=16/9, aspect=1.78
+.REss
+.IPs vbitrate=<参数>
+设置比特率(pass\ 1/\:2)以
+.RSss
+kBit<4\-16000>或者
+.br
+Bit<16001\-24000000>
+.br
+(警告: 1kBit = 1000 Bits)
+.br
+(默认值: 800)
+.REss
+.IPs vratetol=<参数>
+以kBit为单位的可容忍的近似文件大小. 1000\-100000是比较合理的范围.
+(警告: 1kBit = 1000 Bits)
+(默认值: 8000)
+.IPs vrc_maxrate=<参数>
+最大比特率, 以kbit/\:sec为单位(pass\ 1/\:2)
+.IPs vrc_minrate=<参数>
+最小比特率, 以kbit/\:sec为单位(pass\ 1/\:2)
+.IPs vrc_buf_size=<参数>
+缓冲大小, 以kbit为单位(pass\ 1/\:2).
+注意: vratetol在第二次pass的时候不能太大否则使用vrc_(min|max)rate会有问题.
+.IPs vb_qfactor=<-31.0\-31.0>
+B帧和非B帧之间的量化因子(pass\ 1/\:2)(默认值: 1.25)
+.IPs vi_qfactor=<-31.0\-31.0>
+(pass\ 1/\:2)(默认值: 0.8)
+.IPs vb_qoffset=<-31.0\-31.0>
+B帧和非B帧之间的量化偏移(pass\ 1/\:2)(默认值: 1.25)
+.IPs vi_qoffset=<-31.0\-31.0>
+(pass\ 1/\:2)(默认值: 0.0)
+.br
+如果v{b|i}_qfactor > 0
+.br
+I/\:B帧量化值 = P帧量化值 * v{b|i}_qfactor + v{b|i}_qoffset
+.br
+否则
+.br
+进行正常的流控制(不固定于下一个P帧的量化值),
+设置q= -q * v{b|i}_qfactor + v{b|i}_qoffset
+.IPs
+技巧: 对I/P和B帧使用不同的量化值的常量化编码可以使用:
+vqmin=<ip_quant>:vqmax=<ip_quant>:vb_qfactor=<b_quant/ip_quant>
+.IPs vqblur=<0.0\-1.0>
+量化模糊(pass\ 1), 值越大量化对时间平均越大(变化缓慢).
+.RSss
+0.0: 禁用qblur
+.br
+0.5 (默认值)
+.br
+1.0: 对所有以前帧量化值平均
+.REss
+.IPs vqblur=<0.0\-99.0>
+量化高斯模糊(pass\ 2), 值越大量化对时间平均越大(变化缓慢)(默认值: 0.5)
+.IPs vqcomp=<参数>
+量化压缩, 取决于vrc_eq(pass\ 1/\:2)(默认值: 0.5)
+.IPs vrc_eq=<方程>
+速率控制主方程(pass\ 1/\:2):
+
+1: 常比特率
+.br
+tex: 常质量
+.br
+1+(tex/\:avgTex-1)*qComp: 老速率控制的近似方程
+code
+.br
+tex^qComp: 使用qcomp 0.5或类似的东西(默认值)
+
+插入算符: +,-,*,/,^
+
+变量:
+.br
+tex:             材质复杂度
+.br
+iTex,pTex:       内部, 非内部的材质复杂度
+.br
+avgTex:          平均材质复杂度
+.br
+avgIITex:        I帧的平均内部复制度
+.br
+avgPITex:        P帧的平均内部复制度
+.br
+avgPPTex:        P帧的平均非内部复制度
+.br
+avgBPTex:        B帧的平均非内部复制度
+.br
+mv:              用于运动矢量的比特值
+.br
+fCode:           以log2为标度运动矢量的最大长度
+.br
+iCount:          内部宏块数/\:宏块数
+.br
+var:             空间复杂度
+.br
+mcVar:           时间复杂度
+.br
+qComp:           从命令行读取的qcomp
+.br
+isI, isP, isB:   如果帧是I/\:P/\:B帧为1, 否则为0
+.br
+Pi,E:            看你最喜欢的数学书
+
+functions:
+.br
+max(a,b),min(a,b): 最大值/\:最小值
+.br
+gt(a,b): 如果a>b为1, 否则为0
+.br
+lt(a,b): 如果a<b为1, 否则为0
+.br
+eq(a,b): 如果a==b为1, 否则为0
+.br
+sin, cos, tan, sinh, cosh, tanh, exp, log, abs
+.
+.IPs vrc_override=<选项>
+设置特定部分的质量(结尾, 致谢, ..)(pass\ 1/\:2).
+选项格式为<开始帧>, <结束帧>, <质量>[/\:<开始帧>,
+<结束帧>, <质量>[/...]]:
+.RSss
+quality 2\-31: 量化值
+.br
+quality \-500\-0: 质量修正百分比
+.REss
+.IPs vrc_init_cplx=<0\-1000>
+初始复杂度(pass\ 1)
+.IPs vqsquish=<0,1>
+设置如何在qmin和qmax之间保持量化值(pass\ 1/\:2):
+.RSss
+0: 使用削波
+.br
+1: 使用精细的可微函数(默认值)
+.REss
+.IPs vlelim=<-1000\-1000>
+亮度的单参数剪除阀值. 负值将同时考虑dc参数(quant=1编码时至少为-4或更低):
+.RSss
+0: 禁用(默认值)
+.br
+-4 (JVT推荐)
+.REss
+.IPs vcelim=<-1000\-1000>
+色度的单参数剪除阀值. 负值将同时考虑dc参数(quant=1编码时至少为-4或更低):
+.RSss
+0 禁用(默认值)
+.br
+7 (JVT推荐)
+.REss
+.IPs vstrict=<-1,0,1>
+严格遵循标准
+.RSss
+0: 禁用(默认值)
+.br
+1: 当你想把输出用于mpeg4推荐的解码器时推荐
+.br
+-1: 运行非标准的YV12 huffyuv编码(文件减小20%,
+但不能被官方的huffyuv编解码器播放)
+.REss
+.IPs vdpart
+数据分区.
+每个视频包增加2字节, 改进当通过不可信赖的通道传输时的错误抵御能力,
+(比如通过internet的流媒体)
+每个视频包将分成3个独立区域编码:
+.RSss
+1. MVs             (=运动)
+.br
+2. DC coefficients (=低分辨率图像)
+.br
+3. AC coefficients (=细节)
+.REss
+.IPs
+MV和DC是最重要的, 放宽他们看起来远比放宽AC效果差,
+而1&2分区(MV&DC)远比3分区(AC)小,
+所以错误破坏AC分区的机会比破坏MV&DC分区的机会大很多. 因此,
+分区的图像比没有分区的图像看起来好的多,
+因为不分区时一个错误会把AC/DC/MV都毁掉.
+.IPs vpsize=<0\-10000>
+视频包大小, 提高错误抵御能力(参考\-vdpart选项):
+.RSss
+0: 禁用(默认值)
+.br
+100-1000: 不错的选择
+.REss
+.IPs gray
+只编码灰度图像(更快)(默认值: 禁用)
+.IPs vfdct=<0\-10>
+dct算法:
+.RSss
+0: 自动选择最好的(默认值)
+.br
+1: 快速整数
+.br
+2: 精确整数
+.br
+3: mmx
+.br
+4: mlib
+.REss
+.IPs idct=<0\-99>
+idct算法:
+注意: 据我们所了解的最新消息这些IDCT确实通过了IEEE1180
+tests.
+.RSss
+0: 自动选择最好的(默认值)
+.br
+1: jpeg参考整数
+.br
+2: 简单
+.br
+3: 简单mmx
+.br
+4: libmpeg2mmx (不精确, 不要用于keyint >100的编码)
+.br
+5: ps2
+.br
+6: mlib
+.br
+7: arm
+.REss
+.IPs lumi_mask=<0.0\-1.0>
+亮度掩饰.
+警告: 小心, 过大的值会导致破坏图像.
+警告2: 较大的值可能在有些显示器上看起来不错但在别的显示器上看着很恐怖:
+.RSss
+0.0: 禁用(默认值)
+.br
+0.0\-0.3: 合理范围
+.REss
+.IPs dark_mask=<0.0\-1.0>
+黑暗掩饰.
+警告: 小心, 过大的值会导致破坏图像.
+警告2: 较大的值可能在有些显示器上看起来不错但在别的显示器/\:电视/\:液晶上看着很恐怖:
+.RSss
+0.0: 禁用(默认值)
+.br
+0.0\-0.3: 合理范围
+.REss
+.IPs tcplx_mask=<0.0\-1.0>
+时间复杂度掩饰(默认值: 0.0(禁用))
+.IPs scplx_mask=<0.0\-1.0>
+空间复杂度掩饰.
+如果解码时没有去马赛克滤镜, 较大的值会有帮助.
+技巧: 完全切掉所有黑边因为他们降低宏块的质量, (不用scplx_mask也应该这么做).
+.RSss
+0.0: 禁用(默认值)
+.br
+0.0\-0.5: 合理范围
+.REss
+.IPs naq
+适应量化正则话(试验).
+当使用适应量化(*_mask)时, 平均每MB的量化值跟要求的帧水平的量化值不一致..
+Naq尝试调整每MB的量化值来保持适当的平均.
+.IPs ildct
+使用交错dct
+.IPs format=<参数>
+.RSss
+YV12: 默认值
+.br
+422P: 用于huffyuv
+.REss
+.IPs pred
+(用于huffyuv)
+.RSss
+0: 左预测
+.br
+1: 平面/\:梯度预测
+.br
+2: 中值预测
+.REss
+.IPs qpel
+使用四分之一像素运动补偿
+技巧: 这只有高比特率编码时有用.
+.IPs precmp=<0\-2000>
+用于每个pass的运动估计比较函数
+.IPs cmp=<0\-2000>
+全点运动估计的比较函数
+.IPs subcmp=<0\-2000>
+副点运动估计的比较函数
+.RSss
+0 (SAD): 绝对差值求和, 很快(默认值)
+.br
+1 (SSE): 方差和
+.br
+2 (SATD): hadamard位移绝对值求和
+.br
+3 (DCT): dct位移绝对值求和
+.br
+4 (PSNR): 量化方差求和(别用, 低质量)
+.br
+5 (BIT): 块需要的比特数
+.br
+6 (RD): 最佳变形率, 很慢
+.br
+7 (ZERO): 0
+.br
++256: 也应用到色度, 目前不能(正确)用于B帧
+.REss
+.IPs predia=<\-99\-6>
+每个pass用于运动估计的菱形的类型和尺寸
+.IPs dia=<\-99\-6>
+用于运动估计的菱形的类型和尺寸.
+注意: 普通菱形和外形检测菱形的大小的意义是不同的
+.RSss
+\-3: 大小为3的外形检测(快速)菱形
+.br
+\-2: 大小为2的外形检测(快速)菱形
+.br
+\-1: 试验
+.br
+ 1: 大小为1的普通菱形(默认值) =EPZS类菱形
+.nf
+.ne
+      0
+     000
+      0
+.fi
+.br
+ 2: 大小为2的普通菱形
+.nf
+.ne
+      0
+     000
+    00000
+     000
+      0
+.fi
+.REss
+.IPs trell
+Trellis量化.
+这种方法对每个8x8的块寻找合适的编码方法.
+Trellis量化在PSNR vs 比特率方面是一个相当简单的优化量化方法,
+(假设IDCT没有引入舍入错误, 但显然不是这样),
+他简单的对每个块寻找最小的error和lambda*bits.
+.RSss
+lambda: qp倚赖常数
+.br
+bits: 每个块需要的比特数
+.br
+error: 量化的方差和
+.REss
+.IPs last_pred=<0\-99>
+基于上一帧的运动预报数
+.RSss
+0: (默认值)
+.br
+a: 将使用2a+1 x 2a+1的宏块进行基于上一帧的运动矢量预报
+.REss
+.IPs preme=<0\-2>
+每pass的运动估计
+.RSss
+0: 禁用
+.br
+1: 仅在I帧之后(默认值)
+.br
+2: 始终
+.REss
+.IPs subq=<1\-8>
+副点质量精细化(用于qpel)(默认值: 8).
+注意: 这对速度有显著影响.
+.IPs psnr
+编码后显示整个视频的psnr(信号峰值与噪音的比率),
+并把每帧的psnr储存在一个类似'psnr_012345.log'的文件里.
+返回值以dB(分贝)为单位, 越高越好.
+.IPs mpeg_quant
+使用MPEG量化而不是H.263.
+(默认值: 禁用)(就是使用H.263量化)
+.IPs aic
+高级内部预报(仅用于H.263+)
+注意: vqmin必须为8或者更大.
+.IPs umv
+无限MV(仅用于H.263+)
+允许编码任意长度的MV.
+.IPs ibias=<\-256\-256>
+内部量化乖离率 (256 == 1.0)
+.br
+mpeg量化默认值: 96
+.br
+h263量化默认值: 0
+.br
+注意: h263 MMX量化不能处理正的乖离率(设置vfdct=1或2)
+      mpeg MMX量化不能处理负的乖离率(设置vfdct=1或2)
+.IPs pbias=<\-256\-256>
+相互量化乖离率 (256 == 1.0)
+.br
+mpeg量化默认值: 0
+.br
+h263量化默认值: -64
+.br
+注意: h263 MMX量化不能处理正的乖离率(设置vfdct=1或2)
+      mpeg MMX量化不能处理负的乖离率(设置vfdct=1或2)
+.RE
+.
+.TP
+.B \-noskip
+不跳帧.
+.TP
+.B \-o <文件名>
+输出为给定文件名, 而不是默认的'test.avi'.
+.TP
+.B \-oac <编解码器名>
+使用给定的音频编解码器编码.
+可用编解码器的列表参见\-oac help的输出.
+(没有默认设置)
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "-oac copy"
+不编码, 只进行流复制
+.IPs "-oac pcm"
+编码为未压缩的PCM
+.IPs "-oac mp3lame"
+编码为MP3(使用Lame)
+.RE
+.PD 1
+.
+.TP
+.B \-of <格式> (BETA代码!)
+编码到设置的格式. 可用格式的列表参见\-of help的输出.
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "-of avi"
+编码为avi(默认值)
+.IPs "-of mpeg"
+编码为mpeg
+.RE
+.PD 1
+.
+.TP
+.B \-ofps <帧速率>
+输出文件将使用跟源不同的帧速率. 对于可变帧速率(asf,
+有些mov)或渐进(29.97fps的telecined mpeg)的文件必须设置帧速率.
+.TP
+.B \-ovc <编解码器>
+使用给定的视频编解码器编码.
+可用编解码器的列表参见\-ovc help的输出.
+(没有默认设置)
+
+.I 示例:
+.PD 0
+.RSs
+.IPs "\-ovc copy"
+不编码, 只进行流复制
+.IPs "\-ovc divx4"
+编码为DivX4/\:DivX5
+.IPs "\-ovc rawrgb"
+编码为未压缩的RGB24
+.IPs "\-ovc lavc"
+使用一个libavcodec编解码器编码
+.RE
+.PD 1
+.
+.TP
+.B \-passlogfile <文件名>
+用2 pass模式编码时,
+MEncoder把第一次pass的信息复制到指定文件中而不是默认的divx2pass.log.
+.TP
+.B \-skiplimit <参数>
+在一个帧后可跳的最大帧数(用\-noskiplimit设置不限数).
+.TP
+.B \-v, \-\-verbose
+增加冗余级别(\-v越多标识冗余越多).
+
+.PD 0
+.RSs
+.IPs 0
+只有一些信息输出(默认值)
+.IPs 1
+一些基本的调试信息, avi文件头, 函数值(初始化调试)
+.IPs 2
+显示avi索引, 块输入, 更多调试信息(播放器调试)
+.IPs 3
+显示输入分析器的所有信息(分析器调试)
+.RE
+.PD 1
+.
+.TP
+.B \-vobsubout <基本名>
+设置输出的.idx和.sub文件的基本名.
+这会关闭编码电影的字幕渲染而把它导入到Vobsub字幕文件中.
+.TP
+.B \-vobsuboutindex <索引>
+设置输出文件中字幕的索引号. (默认值: 0)
+.TP
+.B \-vobsuboutid <语言标识>
+设置字幕的两字母语言标识. 这可以替代DVD或.ifo文件中读取的值.
+.TP
+.B \-xvidencopts <选项1:选项2:...>
+如果使用XviD编码, 你可以由此设置它的参数.
+.br
+有三种可用模式: 常比特率(CBR), 固定量化和2 pass.
+.br
+可用选项有:
+.
+.RSs
+.IPs pass=<1|2>
+设置2 pass模式中的pass
+.IPs bitrate=<参数>
+如果<16000以kbits/\:second为单位设置比特率,
+或者以bits/\:second为单位如果>16000
+(CBR或者2 pass模式, 默认值=687 kbits/s)
+.IPs fixed_quant=<1\-31>
+切换到固定量化模式并设置使用的量化值
+.IPs me_quality=<0\-6>
+设置运动检测质量(默认值=6)
+IPs interlacing
+启用交错内容支持(默认值=off)
+.IPs 4mv
+每个宏块使用4运动矢量, 可能有更好的压缩率, 代价是更慢的编码速度(默认值=off)
+.IPs rc_reaction_delay_factor=<参数>
+设置速率反应多快, 参数值越小更快
+.IPs rc_averaging_period=<参数>
+达到要求平均值的周期
+.IPs rc_buffer=<参数>
+速率控制缓冲区的大小
+.IPs quant_range=<1\-31>\-<1\-31>[/<1\-31>\-<1\-31>]
+所有帧的最小和最大的量化值(默认值=2\-31, CBR模式)
+.br
+I/P帧的最小和最大的量化值(默认值=2\-31/2\-31, 2 pass模式)
+.IPs min_key_interval=<参数>
+关键帧之间的最小间距(默认值=0, 仅用于2 pass模式)
+.IPs max_key_interval=<参数>
+关键帧之间的最大间距(默认值=10*帧速率)
+.IPs mpeg_quant
+使用MPEG量化而不是H.263(默认值=off)
+.IPs mod_quant
+一帧一帧的决定使用MPEG还是H.263量化.
+(默认值=off, 仅用于2 pass模式)
+.IPs greyscale
+黑白编码(默认值=off)
+.IPs debug
+在xvid.dbg中保存每一帧的统计值(默认值=off)
+.br
+这不是2 pass的控制文件
+.IPs keyframe_boost=<0\-1000>
+(默认值=0, 仅用于2 pass模式)
+.IPs kfthreshold=<参数>
+(默认值=10, 仅用于2 pass模式)
+.IPs kfreduction=<0\-100>
+(默认值=30, 仅用于2 pass模式)
+.RE
+
+.RSs
+下面的选项仅能用于不稳定(cvs -HEAD)版本的XviD.
+这些选项是试验性的并且不一定会想料想的那样工作.
+.IPs packed
+创建可以即时解码的比特流(默认值=off)
+.br
+.I 警告:
+这会产生一个非法的比特流,
+而且不能被除了divx/libavcodec/xvid之外的ISO-MPEG4解码器解码.
+.br
+.I 警告:
+这还会在文件中储存一个假的divx版本号, 所以有些解码器的bug自动检测功能可能会混乱.
+.IPs divx5bvop
+产生DivX5兼容的B帧 (默认值=on)
+.IPs qpel
+启用四分之一像素运动估计(默认值=off)
+.IPs gmc
+启用全角运动补偿, 可以节省一些摇晃场景的大小(默认值=off)
+.IPs chroma_me
+使用色度信息来估计运动(默认值=off)
+.IPs chroma_opt
+启用色度优化预滤镜(默认值=off)
+.IPs reduced
+启用降低帧分辨率的编码方式(默认值=off)
+.IPs max_bframes=<0\-4>
+I/P帧之间的最大B帧数(默认值=0)
+.IPs bquant_ratio=<0\-1000>
+B帧和非B帧之间的量化值比, 150=1.50 (默认值=150)
+.IPs bquant_offset=<-1000\-1000>
+B帧和非B帧之间的量化偏移, 100=1.00 (默认值=100)
+.IPs hq_ac
+启用更好的AC部分预测, 能减小尺寸但会稍稍降低编码速度(默认值=off)
+.IPs vhq=<0\-4>
+启用基于DCT的更高质量的ME搜索, 由快到慢:
+
+.br
+0 = 关闭(默认值)
+.br
+1 = 模式决定(相互/内部MB)
+.br
+2 = 限制搜索
+.br
+3 = 中度搜索
+.br
+4 = 大范围搜索
+.IPs psnr
+编码后显示整个视频的psnr(信号峰值与噪音的比率),
+并把每帧的psnr储存在一个类似'psnr_hhmmss.log'的文件里.
+返回值以dB(分贝)为单位, 越高越好.
+.RE
+
+
+.\" --------------------------------------------------------------------------
+.\" Keyboard control
+.\" --------------------------------------------------------------------------
+.
+.SH "键盘控制"
+.I 注意:
+.br
+MPlayer有一个完全可配置的,命令驱动的控制层使你可以键盘,
+鼠标,游戏杆或遥控器(使用LIRC)控制MPlayer.
+.br
+输入系统的默认配置文件是~/.mplayer/\:input.conf,
+但可以用\-input conf选项来替代.
+.br
+这些键可能(不)工作, 取决于你的视频输出驱动.
+.TP
+.B 一般控制
+.PD 0
+.RSs
+.IPs "<\- 和 \->"
+后退/\:前进10秒
+.IPs "up 和 down"
+后退/\:前进1分钟
+.IPs "pgup和pgdown"
+后退/\:前进10分钟
+.IPs "< 和 >"
+在播放列表中前进/\:后退
+.IPs "HOME 和 END"
+跳转到上级播放列表中的下一个/\:上一个播放项
+.IPs "INS 和 DEL"
+跳转到下一个/\:上一个供选择的源(仅用于asx播放列表)
+.IPs "p / SPACE"
+暂停电影(按任意键继续)
+.IPs "q / ESC"
+停止播放并退出
+.IPs "+ 和 \-"
+调整音频延迟+/\:\- 0.1秒
+.IPs "/ 和 *"
+降低/\:升高音量
+.IPs "9 and 0"
+降低/\:升高音量
+.IPs m
+静音
+.IPs f
+触发全屏
+.IPs "w 和 e"
+降低/\:升高panscan范围
+.IPs o
+触发不同OSD状态: 无/\:搜索/\:搜索+计时器
+.IPs d
+触发掉帧
+.IPs v
+触发字幕是否可见
+.IPs j
+切换字幕语言
+.IPs a
+切换字幕对齐: 上/中/下
+.IPs "z 和 x"
+调整字幕延迟+/\:\- 0.1秒
+.IPs "r 和 t"
+调整字幕位置
+.IPs "i"
+设置EDL标记
+
+.PP
+(下列键只对\-vo xv或者\-vo [vesa|fbdev]:vidix或者\-vo xvidix
+(下列键只能用于使用硬件加速的视频输出(xv, (x)vidix, (x)mga等等),
+或者软件均衡滤镜(-vf eq或者-vf eq2)).
+.IPs "1 and 2"
+调整对比度
+.IPs "3 and 4"
+调整亮度
+.IPs "5 and 6"
+调整色相
+.IPs "7 and 8"
+调整饱和度
+.RE
+.PD 1
+.
+.TP
+.B GUI键盘控制
+.PD 0
+.RSs
+.IPs "ENTER"
+开始播放
+.IPs s
+停止播放
+.IPs l
+加载文件
+.IPs c
+skin浏览器
+.IPs p
+触发播放列表
+.RE
+.PD 1
+.
+.TP
+.B 电视输入控制
+.PD 0
+.RSs
+.IPs "h 和 k"
+选择上一个/\:下一个频道
+.IPs n
+改变制式
+.IPs u
+改变频道列表
+.RE
+.PD 1
+.
+.TP
+.B DVDNAV输入控制
+.PD 0
+.RSs
+.IPs "K,J,H,L"
+上/\:下/\:左/\:右
+.IPs M
+跳转到主菜单
+.IPs S
+选择
+.RE
+.PD 1
+
+
+.\" --------------------------------------------------------------------------
+.\" Slave mode protocol
+.\" --------------------------------------------------------------------------
+.
+.SH "SLAVE模式协议"
+如果有\-slave选项, 播放由一个基于行输入的协议控制.
+每一行都必须包含一个命令或者下列符号之一:
+.TP
+.B 命令
+.RSs
+.IPs "seek <参数> [type=<0/\:1/\:2>]"
+搜索到电影的某个位置.
+Type 0表示相对搜索+/\:-<参数>秒.
+Type 1表示搜索到电影的<参数>%处.
+Type 2表示搜索到<参数>秒的绝对位置.
+.IPs "audio_delay <参数>"
+调整音频延迟<参数>秒
+.IPs quit
+退出MPlayer
+.IPs pause
+暂停/\:继续播放
+.IPs grap_frames
+有人知道吗?
+.IPs "pt_step <参数> [force=<参数>]"
+跳转到播放列表的下一个/\:上一个输入.
+.IPs "pt_up_step <参数> [force=<参数>]"
+类似pt_step但它跳转到上一级列表的下一个/上一个输入.
+.IPs "alt_src_step <参数>"
+当有多个源可用是选择下一个/\:上一个(只支持asx播放列表).
+.IPs "sub_delay <参数> [abs=<参数>]"
+调整字幕字幕延迟+/\:-<参数>秒或者当abs不等于0时设置为<参数>秒.
+.IPs "osd [level=<参数>]"
+触发osd模式或者当level > 0时设置把它设为level.
+.IPs "volume <dir>"
+升高/\:降低音量.
+.IPs "[contrast|brightness|hue|saturation] <\-100\-100> [abs=<参数>]"
+设置/\:调整视频参数.
+.IPs "frame_drop [type=<参数>]"
+触发/\:设置掉帧模式.
+.IPs "sub_visibility"
+触发字幕是否可见.
+.IPs "sub_pos <参数>"
+调整字幕位置.
+.IPs vo_fullscreen
+切换到全屏模式.
+.IPs "tv_step_channel <dir>"
+选择下一个/\:上一个电视频道.
+.IPs "tv_step_norm"
+改变电视制式.
+.IPs "tv_step_chanlist"
+改变频道列表.
+.IPs "gui_[loadsubtitle|about|play|stop]"
+GUI动作.
+.RE
+
+
+.\" --------------------------------------------------------------------------
+.\" Files
+.\" --------------------------------------------------------------------------
+.
+.SH 文件
+.TP
+/etc/\:mplayer/\:mplayer.conf
+系统范围的设置
+.TP
+~/.mplayer/\:config
+用户设置
+.TP
+~/.mplayer/\:input.conf
+输入绑定(完整按键列表参见'\-input keylist'的输出)
+.TP
+~/.mplayer/\:gui.conf
+GUI配置文件
+.TP
+~/.mplayer/\:gui.pl
+GUI播放列表
+.TP
+~/.mplayer/\:font/
+字体目录(里面必须有一个font.desc文件和.RAW后缀的文件)
+.TP
+~/.mplayer/\:DVDkeys/
+破解的CSS密钥
+.PD 0
+.TP
+字幕文件按以下顺序搜索(比如播放/mnt/\:movie/\:movie.avi文件):
+.RSs
+/mnt/\:cdrom/\:movie.sub
+.br
+~/.mplayer/\:sub/\:movie.sub
+.br
+~/.mplayer/\:default.sub
+.RE
+.PD 1
+
+
+.\" --------------------------------------------------------------------------
+.\" Examples
+.\" --------------------------------------------------------------------------
+.
+.SH 示例
+.TP
+.B 快速DVD播放
+mplayer \dvd://1
+.TP
+.B 播放日文对话和英文字幕
+mplayer \dvd://1 \-alang ja \-slang en
+.TP
+.B 只播放5, 6, 7场景
+mplayer \dvd://1 \-chapter 5\-7
+.TP
+.B 多视角DVD播放
+mplayer \dvd://1 \-dvdangle 2
+.TP
+.B 从其它DVD设备播放
+mplayer \dvd://1 \-dvd\-device /dev/\:dvd2
+.TP
+.B 老师DVD(VOB)播放
+mplayer \-dvdauth /dev/\:dvd /mnt/\:dvd/\:VIDEO_TS/\:VTS_02_4.VOB
+.TP
+.B HTTP流
+mplayer http://mplayer.hq/\:example.avi
+.TP
+.B RTSP流
+mplayer rtsp://server.example.com/\:streamName
+.TP
+.B 把字幕转换为MPsub(转换到./\:dump.mpsub)
+mplayer dummy.avi \-sub source.sub \-dumpmpsub
+.TP
+.B 从标准的V4L输入
+mplayer \-tv on:driver=v4l:width=640:height=480:outfmt=i420 \-vc rawi420
+\-vo xv
+.TP
+.B 编码DVD节目#2中选择的场景
+mencoder \dvd://2 \-chapter 10-15 \-o title2.avi \-oac copy \-ovc divx4
+.TP
+.B 编码DVD节目#2, 缩放到640x480
+mencoder \dvd://2 \-vf scale=640:480 \-o title2.avi \-oac copy \-ovc divx4
+.TP
+.B 编码DVD节目#2, 缩放到512xHHH(保持长宽比)
+mencoder \dvd://2 \-vf scale \-zoom \-xy 512 \-o title2.avi \-oac copy
+\-ovc divx4
+.TP
+.B 同上, 但使用libavcodec族, MPEG4(Divx5)压缩
+mencoder \dvd://2 \-o title2.avi \-ovc lavc
+\-lavcopts vcodec=mpeg4:vhq:vbitrate=1800 \-oac copy
+.TP
+.B 同上, 但使用libavcodec族, MJPEG压缩
+mencoder \dvd://2 \-o titel2.avi \-ovc lavc
+\-lavcopts vcodec=mjpeg:vhq:vbitrate=1800 \-oac copy
+.TP
+.B 编码当前目录下的所有*.jpg文件
+mencoder \\*.jpg \-mf on:fps=25 \-o output.avi \-ovc divx4
+.TP
+.B 从电视调谐器编码
+mencoder \-tv on:driver=v4l:width=640:height=480 \-o tv.avi \-ovc rawrgb
+.TP
+.B 从管道编码
+rar p test-SVCD.rar | mencoder \-ovc divx4 \-divx4opts br=800 \-ofps 24
+\-\- \-
+.TP
+.B 编码多个*.vob文件
+cat *.vob | mencoder <选项> \-
+
+
+.\" --------------------------------------------------------------------------
+.\" Bugs, authors, standard disclaimer
+.\" --------------------------------------------------------------------------
+.
+.SH BUGS
+可能有.
+请, 多看几遍文档(特别是bugreports.html), FAQ和以前的邮件文档!
+.br
+把你的完整的bug报告发送到MPlayer-users邮件列表<mplayer-users at mplayerhq.hu>.
+我们喜欢完整的bug报告:)
+
+
+.SH 作者
+查看文档.
+.TP
+MPlayer is (C) 2000\-2003
+.B Arpad Gereoffy
+.TP
+这个man page由
+.B Gabucino
+.br
+.B Diego Biurrun
+.br
+.B Jonas Jermann
+.br
+编写并维护
+.PP
+请把相关的邮件发送到MPlayer-users邮件列表.
+
+
+.SH "标准声明"
+你必须自己承担使用风险!
+可能会有错误和不精确的地方损坏你的系统或你的眼睛.
+小心使用, 尽管可能性很低, 作者对此不负任何责任!
+.\" end of file
diff --git a/src/man1/mv.1 b/src/man1/mv.1
new file mode 100644
index 0000000..dc71358
--- /dev/null
+++ b/src/man1/mv.1
@@ -0,0 +1,94 @@
+.TH MV "1" "March 2002" "mv (fileutils) 4.1" 自由软件基金会
+.SH NAME
+mv \- 移动 (改名) 文件
+.SH 摘要
+.B mv
+[\fI选项\fR]... \fI源文件 目标文件\fR
+.br
+.B mv
+[\fI选项\fR]... \fI源文件\fR... \fI目录\fR
+.br
+.B mv
+[\fI选项\fR]... \fI--target-directory=DIRECTORY SOURCE\fR...
+.SH 描述
+.\" Add any additional description here
+.PP
+改“源文件”名到“目标文件”名, 或移动“源文件”(可以不只一个)到一个“目录”。
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+为现有的每一个目标文件作一个备份
+.TP
+\fB\-b\fR
+和\fB\-\-backup\fR一样但是不接受参数
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+覆盖前永不提示
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+覆盖前提示
+.TP
+\fB\-\-strip\-trailing\-slashes\fR
+删除任何“源文件”参数后面跟随的斜杠
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+省略一般的备份后缀
+.TP
+\fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+移动全部“源文件”参数到“目录”中
+.TP
+\fB\-u\fR, \fB\-\-update\fR
+只移动更老的或者标记新的非目录
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+说明完成了什么
+.TP
+\fB\-\-help\fR
+显示帮助且退出程序
+.TP
+\fB\-\-version\fR
+输出版本信息且退出程序
+.PP
+这是备份后缀 `~', 除非设定 \fB\-\-suffix\fR 或 SIMPLE_BACKUP_SUFFIX。
+这个版本管理方法可以选择通过 \fB\-\-backup\fR 选项或通过
+ VERSION_CONTROL 环境变量。这些值是:
+.TP
+none, off
+永不做备份 (即使用 \fB\-\-backup\fR)
+.TP
+numbered, t
+做备份编号
+.TP
+existing, nil
+编号,如果编号备份存在,用其它的简单方法
+.TP
+simple, never
+总是做简单备份
+.SH 作者
+写作 by Mike Parker,David MacKenzie和Jim Meyering.
+.SH "报告错误"
+回复错误到<bug-fileutils at gnu.org>。
+.SH 版权
+版权 \(co 2001 自由软件基金会
+.br
+这是自由软件; 可以复制原代码。 这没有保证;
+甚至不能适应一个特别的任务。
+.SH "相关"
+关于
+.B mv
+的全部文档维护是 Texinfo 指南。如果
+.B info
+和
+.B mv
+程序都已经装在你的机器上,可以用命令
+.IP
+.B info mv
+.PP
+启动并读这个指南。
+
+
+.SH "[中文版维护人]"
+.B wide288 <email>
+.SH "[中文版最新更新]"
+.B 2003/11/22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/newgrp.1 b/src/man1/newgrp.1
new file mode 100644
index 0000000..3d12998
--- /dev/null
+++ b/src/man1/newgrp.1
@@ -0,0 +1,38 @@
+.\" Original author unknown.  This man page is in the public domain.
+.\" Modified Sat Oct  9 17:46:48 1993 by faith at cs.unc.edu
+.TH NEWGRP 1 "9 October 1993" "Linux 1.2" "Linux Programmer's Manual"
+
+.SH NAME
+newgrp \- 登录到新的用户组中
+
+.SH "总览 (SYNOPSIS)"
+.BI "newgrp [ " group " ]"
+
+.SH "描述 (DESCRIPTION)"
+.B Newgrp
+改变 调用者 的 用户组标识, 类似于
+.BR login (1).
+调用者 仍旧 登录 在 系统 中, 当前目录 也不变, 但是 文件的访问权限 将 根据
+新的 用户组 ID 计算.
+.LP
+如果 没有 指定 用户组, GID 将 变成 登录 的 GID.
+.LP
+
+.SH "文件 (FILES)"
+.I /etc/group
+.br
+.I /etc/passwd
+
+.SH "另见 (SEE ALSO)"
+.BR login "(1), " group (5)
+
+.SH "作者 (AUTHOR)"
+Originally by Michael Haardt. Currently maintained by 
+Peter Orbaek (poe at daimi.aau.dk).
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/nice.1 b/src/man1/nice.1
new file mode 100644
index 0000000..9768365
--- /dev/null
+++ b/src/man1/nice.1
@@ -0,0 +1,49 @@
+.TH NICE "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+nice \- 改变执行程序的优先级
+.SH "总览 (SYNOPSIS)"
+.B nice
+[\fIOPTION\fR]... [\fICOMMAND \fR[\fIARG\fR]...]
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+以 调整过的 调度优先级 运行 COMMAND. 如果 没给出 COMMAND, 就 显示 当前的
+优先级. ADJUST 缺省为 10, 范围 从 \fB\-20\fR (最高级) 到 19 (最低级).
+.TP
+\fB\-ADJUST\fR
+优先级 调整到 ADJUST
+.TP
+\fB\-n\fR, \fB\-\-adjustment\fR=\fIADJUST\fR
+和 \fB\-ADJUST\fR 一样
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 退出
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 退出
+.SH "REPORTING BUGS"
+发现的 bug 寄往 <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B Nice
+的 完整文档 以 Texinfo 手册 形式 维护.  如果 正确 安装了
+.B info
+和
+.B nice
+文件, 用 命令
+.IP
+.B info nice
+.PP
+可以 访问 完整 的 手册.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/nmblookup.1 b/src/man1/nmblookup.1
new file mode 100644
index 0000000..99ea5d4
--- /dev/null
+++ b/src/man1/nmblookup.1
@@ -0,0 +1,180 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "NMBLOOKUP" 1 "" "" ""
+.SH NAME
+nmblookup \- 基于TCP/IP上的NetBIOS客户用于查询NetBIOS名字的程序
+.SH "总览 SYNOPSIS"
+
+
+\fBnmblookup\fR [-M] [-R] [-S] [-r] [-A] [-h] [-B <broadcast address>] [-U <unicast address>] [-d <debug level>] [-s <smb config file>] [-i <NetBIOS scope>][-T] [-f] {name}
+
+
+.SH "描述 DESCRIPTION"
+
+.PP
+.B nmblookup
+是 \fBSamba\fR(7)套件的一部分。
+
+.PP
+\fBnmblookup\fR 用于在网络中查询NetBIOS名字并映射对应的IP地址。使用它可以在一个特殊的IP广播区域或者机器中直接查询名字。所有的查询操作都在UDP上实现。
+
+.SH "选项 OPTIONS"
+
+.TP
+-M
+通过查找类型为\fB0x1d\fR的NetBIOS名字 \fIname\fR来搜索一个主浏览器。如果 \fI name\fR 是 "-",那么它搜索特殊的名字 \fB__MSBROWSE__\fR。 Please note that in order to use the name "-", you need to make sure "-" isn't parsed as an argument, e.g. use : \fBnmblookup -M -- -\fR。
+
+
+.TP
+-R
+用这个选项在包中指定一个希望得到的二进制位来进行递归查找。 当向WINS服务器发送名字查询及用户希望在WINS服务器上进行名字查询时可以用这种方法。如果不设定这样的二进制递归位,则主机上的普通NetBIOS处理代码(以广播方式)将替代它。详细资料请参见rfc1001和rfc1002。
+
+.TP
+-S
+通过这个选项可以使名字查询操作返回一个IP地址时,再跟着作节点状态的查询操作。节点状态查询会返回主机注册的NetBIOS名字。
+
+
+.TP
+-r
+用这个选项来试图并绑定UDP端口137用于发送和接收UDP数据包。使用这个选项的理由是Windows 95在这方面有一个错误:它会忽略请求数据包的原始端口而只回复到UDP端口137(系统发送和接收包可能并不用137端口)。不幸的情况是在UNIX系统上绑定这个端口需要root权限。另外,运行\fBnmbd\fR守护程序也应该绑定到这个端口。 
+
+
+.TP
+-A
+用这个选项把\fIname\fR参数解释成一个IP地址并使用这个地址来作节点状态查询。 
+
+.TP
+-n <primary NetBIOS name>
+This option allows you to override the NetBIOS name that Samba uses for itself\&. This is identical to setting the \fInetbios name\fR parameter in the \fIsmb\&.conf\fR file\&. However, a command line setting will take precedence over settings in \fIsmb\&.conf\fR\&.
+
+
+.TP
+-i <scope>
+This specifies a NetBIOS scope that \fBnmblookup\fR will use to communicate with when generating NetBIOS names\&. For details on the use of NetBIOS scopes, see rfc1001\&.txt and rfc1002\&.txt\&. NetBIOS scopes are \fBvery\fR rarely used, only set this parameter if you are the system administrator in charge of all the NetBIOS systems you communicate with\&.
+
+
+.TP
+-W|--workgroup=domain
+Set the SMB domain of the username\&. This overrides the default domain which is the domain defined in smb\&.conf\&. If the domain specified is the same as the servers NetBIOS name, it causes the client to log on using the servers local SAM (as opposed to the Domain SAM)\&.
+
+
+.TP
+-O socket options
+TCP socket options to set on the client socket\&. See the socket options parameter in the \fIsmb\&.conf\fR manual page for the list of valid options\&.
+
+
+.TP
+-h|--help
+打印帮助(使用方法)信息。 
+
+
+.TP
+-B <broadcast address>
+用给出的广播地址发送查询。如果没有使用这个选项的话,nmblookup将会把查询发送到通过自动检测或者在\fBsmb.conf\fR (5)文件的\fIinterfaces\fR参数定义好的网络接口的广播地址上。
+
+.TP
+-U <unicast address>
+用这个选项对指定地址或者\fIunicast address\fR主机进行单独的查询。查找一个WINS服务器需要这样的参数(还有\fI-R\fR选项)。
+
+.TP
+-V
+输出程序版本号。
+
+
+.TP
+-s <configuration file>
+指定的文件包含服务器需要的配置细节。文件信息包括服务器特定的信息,比如使用哪个 printcap文件;也包括服务器提供的服务的描述。查看\fIsmb.conf\fR 来获得更详细的信息。默认的配置文件名是在编译时指定的。
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR 是个从0到10的整数。参数未指定时默认值为0。
+
+这个值越高,将记录越多关于nmblookup活动的资料。在把调试级设为0时,只记录紧急错误和严重警告。级别一是日常运行时合适的级别 - 它产生小量的执行操作的信息。
+
+1以上的调试级将产生相当多的记录数据,并且只在研究问题时才有用。3以上的调试级只被设计为让开发者使用并会产生极大数量的记录数据,而且其中很多部分非常难以理解。 
+
+注意在此使用这个参数将越过在\fIsmb.conf\fR (5)文件中的\fIlog level\fR参数。 
+
+.TP
+-l|--logfile=logbasename
+File name for log/debug files\&. The extension \fB"\&.client"\fR will be appended\&. The log file is never removed by the client\&.
+
+
+.TP
+-T
+使用这个选项使得查找到的ip地址通过DNS反向查询查出所有的DNS名称,并将结果输出到通常的的
+
+\fBIP address \&.\&.\&.\&. NetBIOS name\fR
+
+对应关系前面。
+
+.TP
+-f
+Show which flags apply to the name that has been looked up\&. Possible answers are zero or more of: Response, Authoritative, Truncated, Recursion_Desired, Recursion_Available, Broadcast\&.
+
+
+.TP
+name
+这个选项用来指定要查的NetBIOS名字。根据前面已经使用的选项这里可能出现的形式是一个NetBIOS名或者是IP地址。如果用的是NetBIOS名则可以在名字中加入'#<type>'来指定不同的名字类型。当然也可以用*来代替输入项,这样的话会通过广播区域返回所有已注册的名字。 
+
+.SH "范例 EXAMPLES"
+
+.PP
+\fBnmblookup\fR 可被用于查询WINS服务器(同样\fBnslookup\fR用于查询DNS服务器)。要查询WINS服务器,必须这样调用 \fBnmblookup\fR:
+
+.PP
+\fBnmblookup -U server -R 'name'\fR
+
+.PP
+例如,运行:
+
+.PP
+\fBnmblookup -U samba.org -R 'IRIX#1B'\fR
+
+.PP
+通过这个命令将向WINS服务器samba.org查询IRIX工作组中的域主浏览器(名字类型为1B)。
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。 
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBnmbd\fR(8), \fBsamba\fR(7), and \fBsmb.conf\fR(5)\&.
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在\fIftp://ftp.ice.rug.nl/pub/unix\fR找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/nohup.1 b/src/man1/nohup.1
new file mode 100644
index 0000000..a0891be
--- /dev/null
+++ b/src/man1/nohup.1
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
+.TH NOHUP "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+nohup \- 使程序运行时不挂起, 不向 tty 输出信息
+
+.SH "总览 (SYNOPSIS)"
+.B nohup
+\fICOMMAND \fR[\fIARG\fR]...
+.br
+.B nohup
+\fIOPTION\fR
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+执行 COMMAND 命令, 忽略 hangup (挂起) 信号.
+.TP
+\fB\-\-help\fR
+显示此帮助, 然后退出
+.TP
+\fB\-\-version\fR
+显示版本信息, 然后退出
+
+.SH "报告错误 (REPORTING BUGS)"
+发现错误请联系 <sh-utils-bugs at gnu.org>.
+
+.SH "另见 (SEE ALSO)"
+.B nohup
+的完整文档以 Texinfo 手册的形式维护. 如果正确安装了
+.B info
+和
+.B nohup
+程序, 使用命令
+.IP
+.B info nohup
+.PP
+应该能够显示完整的手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2004/02/8
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
+
+
diff --git a/src/man1/nroff.1 b/src/man1/nroff.1
new file mode 100644
index 0000000..078f549
--- /dev/null
+++ b/src/man1/nroff.1
@@ -0,0 +1,145 @@
+.ig
+Copyright (C) 1989-2001 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.TH NROFF 1 "23 September 2003" "Groff Version 1.18.1"
+.SH NAME
+nroff \- 用 groff 模拟 nroff 命令
+.SH "总览 SYNOPSIS"
+.nr a \n(.j
+.ad l
+.nr i \n(.i
+.in +\w'\fBnroff 'u
+.ti \niu
+.B nroff
+.de OP
+.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
+.el .RB "[\ " "\\$1" "\ ]"
+..
+.OP \-h
+.OP \-i
+.OP \-m name
+.OP \-n num
+.OP \-o list
+.OP \-p
+.OP \-r cn
+.OP \-S
+.OP \-t
+.OP \-T name
+.OP \-U
+.OP \-v
+.RI "[\ " "file" "\ .\|.\|.\ ]"
+.br
+.ad \na
+.SH "描述 DESCRIPTION"
+.B nroff
+shell 脚本用 groff 来模拟
+.B nroff
+命令。
+.B -T
+选项允许的有效参数是
+.BR ascii ,
+.BR ascii8 ,
+.BR latin1 ,
+.BR utf8 ,
+.BR nippon ,
+以及
+.B cp1047
+。如果参数无效,或者没有给出
+.BR \-T
+选项,
+.B nroff
+检测当前语言环境来选择一个默认的输出设备。它首先使用
+.B locale
+程序,然后检测环境变量
+.BR LC_ALL ,
+.BR LC_CTYPE ,
+和
+.BR LANG ,
+最后是
+.B LESSCHARSET
+环境变量。
+.PP
+.B \-h
+和
+.B \-c
+选项与
+.BR grotty 
+的
+.B \-h
+(在输出中使用tab) 和
+.B \-c
+(使用老式的输出方案而不是 SGR 转义序列) 选项等价。
+.BR \-C ,
+.BR \-i ,
+.BR \-n ,
+.BR \-m ,
+.BR \-o ,
+和
+.B \-r
+选项的效果在
+.BR troff (1)
+中详述。另外,
+.B nroff
+忽略
+.BR \-e ,
+.BR \-q ,
+和
+.BR \-s
+(在
+.BR troff 
+中没有实现) 选项,没有任何提示。
+.B \-p
+(pic),
+.B \-t
+(tbl),
+.B \-S
+(safer), 和
+.B \-U
+(unsafe) 选项被传给
+.BR groff . 
+.B \-v
+显示版本号。
+.SH "环境 ENVIRONMENT"
+.TP
+.SM
+.B GROFF_BIN_PATH
+一个冒号分隔的路径列表,在搜索 PATH 之前从中搜索
+.B groff
+可执行文件。如果没有设置,将使用 `/usr/bin'.
+.SH "注意 NOTES"
+这个 shell 脚本一般用于配合
+.BR man (1)
+使用,所以不输出警告信息。nroff 样式的字符定义 (在文件 tty-char.tmac 中) 会被读取,来模拟不可显示的符号。
+.SH "参见 SEE ALSO"
+.BR groff (1),
+.BR troff (1),
+.BR grotty (1)
+.SH "[中文版维护人]"
+.\" 译者
+.\" 唐友 <tony_ty at 263.net>
+.\" 翻译日期
+.\" 2001.08.28
+.B bbbush <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.11.22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/src/man1/octave-bug.1 b/src/man1/octave-bug.1
new file mode 100644
index 0000000..2dac892
--- /dev/null
+++ b/src/man1/octave-bug.1
@@ -0,0 +1,66 @@
+.\" Man page for octave-bug
+.\"
+.\" Copyright (C) 1996 - 2000 John W. Eaton
+.\"
+.\" This file is part of Octave.
+.\"
+.\" Octave 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, or (at your option) any
+.\" later version.
+.\"
+.\" Octave is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with Octave; see the file COPYING.  If not, write to the Free
+.\" Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+.\" 02111-1307, USA.
+.\"
+.\" This page was contributed by Dirk Eddelbuettel <edd at debian.org>
+.\" 
+.TH octave-bug 1 "6 March 2000" GNU
+.LO 1
+.SH NAME
+octave-bug \- 报告 GNU Octave 中的 bug
+.SH "SYNOPSIS 总览"
+.B octave-bug
+.RB [\| \-s
+.IR subject \|]
+.SH "DESCRIPTION 描述"
+.B octave-bug
+是一个 shell 脚本,用于以一种标准的格式撰写有关 Octave 的 bug 报告并发送。
+.B octave-bug
+通常由 Octave 命令
+.B bug_report
+启动,这个命令只能在 Octave 内部,以交互方式调用。这种方式是提交 Octave 错误报告的最佳放方式。它创建一个错误报告的空模板文件,并用一个编辑器打开它。编辑完成后,错误报告将被发送到 bug-octave 邮件列表 (这样做的前提是你的系统可以发送邮件)。但是,用户也可以在 Octave 之外使用 \fBoctave-bug\fR 命令。
+.PP
+请阅读 Octave 手册页中的 `Bugs' 章节,学习如何提交错误报告来使 Octave 的维护者修正问题。如果不能使用 bug_report 命令,就直接将邮件发送到 bug-octave 邮件列表,就是 bug-octave at bevo.che.wisc.edu 。
+.SH "OPTIONS 选项"
+.TP
+.BI -s\  subject
+指定错误报告的主题行。主题中的空格必须被引用。
+.SH "ENVIRONMENT VARIABLES 环境变量"
+.B 
+octave-bug 
+使用环境变量
+.BR USER, 
+.BR EDITOR, 
+和
+.B PAGER 
+从而定制工具
+.SH "VERSION 版本"
+本文档最后一次校订与 Octave 2.0.16 同时发布。
+.SH "SEE ALSO 参见"
+.BR octave (1),
+.BR bashbug (1)     
+.SH AUTHOR
+.nf
+John W. Eaton
+Department of Chemical Engineering
+University of Wisconsin-Madison
+Madison, WI 53706
+USA
+<jwe at bevo.che.wisc.edu>       
diff --git a/src/man1/octave-config.1 b/src/man1/octave-config.1
new file mode 100644
index 0000000..feb4a23
--- /dev/null
+++ b/src/man1/octave-config.1
@@ -0,0 +1,40 @@
+.\" Man page contributed by Dirk Eddelbuettel <edd at debian.org>
+.\" and released under the GNU GPL
+.TH OCTAVE-CONFIG 1 "19 February 2003" "GNU Octave"
+.SH NAME
+octave-config - 检索 GNU Octave 组件和库信息
+.SH "SYNOPSIS 总览"
+.BR octave-config\  [--m-site-dir]\ [--oct-site-dir]\ [-v|--version]\ 
+[-h|-?|--help]
+.SH "DESCRIPTION 描述"
+.PP
+\fIoctave-config\fP 是用于为
+.BR octave (1)
+获取
+.f .oct
+和
+.f .m
+文件的目录信息的工具。
+.SH "OPTIONS 选项"
+.l
+\fIoctave-config\fP 接受下列选项:
+.TP 8
+.B \--m-site-dir
+显示本地的或 site-specific 的,.m 脚本文件所在的主目录。
+.TP 8
+.B \--oct-site-dir
+显示本地的或 site-specific 的,.oct 动态链接库所在的主目录。
+.B \-v|\-\-version
+显示
+.BR octave (1)
+的版本信息。
+.TP 8
+.B \-h|-?|--help
+显示
+\fIoctave-config\fP
+的帮助页面。
+.SH AUTHOR
+John W. Eaton <jwe at bevo.che.wisc.edu>
+
+This manual page was contributed by Dirk Eddelbuettel <edd at debian.org> 
+for the Debian GNU/Linux distribution but may be used by others.
diff --git a/src/man1/octave.1 b/src/man1/octave.1
new file mode 100644
index 0000000..3b09b02
--- /dev/null
+++ b/src/man1/octave.1
@@ -0,0 +1,70 @@
+.\" Man page for Octave
+.\"
+.\" Copyright (C) 1996, 1997 John W. Eaton
+.\"
+.\" This file is part of Octave.
+.\"
+.\" Octave 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, or (at your option) any
+.\" later version.
+.\"
+.\" Octave is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with Octave; see the file COPYING.  If not, write to the Free
+.\" Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+.\" 02111-1307, USA. 
+.\"
+.TH Octave 1 "Jan 8 1996"
+.LO 1
+.SH NAME
+octave \- 用于数值计算的高级交互式语言
+.SH "SYNOPSIS 总览"
+.nf
+octave [options]
+.fi
+.SH "OPTIONS 选项"
+octave 全部命令行选项可以通过运行命令
+.nf
+
+    octave --help
+
+.fi
+来查看。
+.SH "DESCRIPTION 描述"
+Octave 是一种高级语言,主要用于数值计算。它提供了极为方便的命令行界面,用数值的方式解决线性和非线性问题。
+.SH "DOCUMENTATION 文档"
+Octave 主要的文档以 Texinfo (GNU 文档系统) 写成,可以用同样的文件产生手册的在线版本和打印版本。
+.PP
+你可以在交互运行 Octave 时执行命令
+.nf
+
+    octave:13> help -i
+
+.fi
+来阅读 Octave 文档的在线版本,它将用到 GNU Emacs 的 info 模式;或者也可以直接运行单独的程序,例如 info 或者 xinfo。
+.SH BUGS
+提交 Octave 错误报告的最佳方法是在交互运行 Octave 时执行命令
+.nf
+
+     octave:13> bug_report
+
+.fi
+。这将创建一个错误报告的模板文件,并打开一个编辑器。编辑完毕后,邮件将发送到 bug-octave 邮件列表。
+.PP
+如果不能使用 bug_report 命令,可以用其他方法将邮件发送到
+.B bug-octave at bevo.che.wisc.edu
+邮件列表。请阅读 Octave 手册页中的 `Bugs' 章节,学习如何提交错误报告来使 Octave 的维护者修正问题。
+.SH AUTHOR
+.nf
+John W. Eaton
+Department of Chemical Engineering
+University of Wisconsin-Madison
+Madison, WI 53706
+USA
+<jwe at bevo.che.wisc.edu>
+.fi
diff --git a/src/man1/paste.1 b/src/man1/paste.1
new file mode 100644
index 0000000..1df1f5f
--- /dev/null
+++ b/src/man1/paste.1
@@ -0,0 +1,51 @@
+.TH PASTE "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+paste \- 合并文件各行
+.SH "总览 (SYNOPSIS)"
+.B ../src/paste
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+连续 依次 从 各个 文件 FILE 中 读取 一行 然后 合并成 新行,
+中间 用 TAB 隔开, 新行 写到 标准输出.
+如果 文件 FILE 不存在, 或者 FILE 是 '-', 就从 标准输入 读取 数据.
+.TP
+\fB\-d\fR, \fB\-\-delimiters\fR=\fILIST\fR
+循环使用 LIST 中 的 字符 取代 TAB
+.TP
+\fB\-s\fR, \fB\-\-serial\fR
+一次 粘贴 一个 文件, 而不是 并行 粘贴
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.SH "作者 (AUTHOR)"
+David M. Ihnat.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B paste
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B paste
+程序, 使用 命令
+.IP
+.B info paste
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/perl.1 b/src/man1/perl.1
new file mode 100644
index 0000000..aee25f3
--- /dev/null
+++ b/src/man1/perl.1
@@ -0,0 +1,575 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERL 1"
+.TH PERL 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH NAME
+perl \- Practical Extraction and Report Language (实用摘录和汇报语言)
+.SH "总览 SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBperl\fR	[\ \fB\-sTuU\fR\ ] [\ \fB\-hv\fR\ ]\ [\ \fB\-V\fR[:\fIconfigvar\fR]\ ]
+    [\ \fB\-cw\fR\ ]\ [\ \fB\-d\fR[:\fIdebugger\fR]\ ]\ [\ \fB\-D\fR[\fInumber/list\fR]\ ]
+    [\ \fB\-pna\fR\ ]\ [\ \fB\-F\fR\fIpattern\fR\ ]\ [\ \fB\-l\fR[\fIoctal\fR]\ ]\ [\ \fB\-0\fR[\fIoctal\fR]\ ]
+    [\ \fB\-I\fR\fIdir\fR\ ]\ [\ \fB\-m\fR[\fB\-\fR]\fImodule\fR\ ]\ [\ \fB\-M\fR[\fB\-\fR]\fI'module...'\fR\ ]
+    [\ \fB\-P\fR\ ] [\ \fB\-S\fR\ ] [\ \fB\-x\fR[\fIdir\fR]\ ]
+    [\ \fB\-i\fR[\fIextension\fR]\ ] [\ \fB\-e\fR\ \fI'command'\fR\ ]\ [\ \fB\-\-\fR\ ]\ [\ \fIprogramfile\fR\ ]\ [\ \fIargument\fR\ ]...
+.PP
+如果你是 Perl 新手,还是从 perlintro 看起吧,那是为初学者准备的简单介绍,提供了一些背景知识,帮助你浏览 Perl 其余的大量文档
+.PP
+为方便阅读,Perl 手册分成了很多章
+.Sh "概述 Overview"
+.IX Subsection "Overview"
+.Vb 3
+\&    perl                Perl 概述 (本小节) 
+\&    perlintro           Perl 介绍 (为新手准备) 
+\&    perltoc             Perl 目录 (所有内容列表) 
+.Ve
+.Sh "教程 Tutorials"
+.IX Subsection "Tutorials"
+.Vb 3
+\&    perlreftut          Perl 引用 
+\&    perldsc             Perl 数据结构 
+\&    perllol             Perl 高级数据结构 
+.Ve
+.PP
+.Vb 2
+\&    perlrequick         Perl 正则表达式快速入门 
+\&    perlretut           Perl 正则表达式 
+.Ve
+.PP
+.Vb 4
+\&    perlboot            Perl OO 面向对象 入门 
+\&    perltoot            Perl OO 面向对象 教程 (第一部分) 
+\&    perltooc            Perl OO 面向对象 教程 (第二部分) 
+\&    perlbot             Perl OO 面向对象 窍门和例子 
+.Ve
+.PP
+.Vb 1
+\&    perlstyle           Perl 程序风格 
+.Ve
+.PP
+.Vb 3
+\&    perlcheat           Perl 投机取巧 
+\&    perltrap            Perl 大意者的陷阱 
+\&    perldebtut          Perl 调试 
+.Ve
+.PP
+.Vb 10
+\&    perlfaq             Perl 常见问题 
+\&      perlfaq1          有关 Perl 的一般问题
+\&      perlfaq2          获取/学习 Perl 
+\&      perlfaq3          编程工具
+\&      perlfaq4          数据操纵
+\&      perlfaq5          文件与文件格式
+\&      perlfaq6          正则表达式
+\&      perlfaq7          Perl 语言本身的问题
+\&      perlfaq8          与操作系统交互
+\&      perlfaq9          网络
+.Ve
+.Sh "参考手册 Reference Manual"
+.IX Subsection "Reference Manual"
+.Vb 21
+\&    perlsyn             Perl 语法
+\&    perldata            Perl 数据结构
+\&    perlop              Perl 操作符及优先级
+\&    perlsub             Perl 定义函数
+\&    perlfunc            Perl 内置函数
+\&      perlopentut       Perl open() 教程
+\&      perlpacktut       Perl pack() 和 unpack() 教程
+\&    perlpod             Perl POD 文档
+\&    perlpodspec         Perl POD 文档格式规约
+\&    perlrun             Perl 执行选项
+\&    perldiag            Perl 诊断信息
+\&    perllexwarn         Perl 警告 控制警告
+\&    perldebug           Perl 调试
+\&    perlvar             Perl 预定义变量
+\&    perlre              Perl 正则表达式 其余的部分
+\&    perlreref           Perl 正则表达式快速索引
+\&    perlref             Perl 参考 其余的部分 
+\&    perlform            Perl 格式
+\&    perlobj             Perl 对象
+\&    perltie             Perl 用简单变量隐藏对象
+\&      perldbmfilter     Perl DBM 层
+.Ve
+.PP
+.Vb 3
+\&    perlipc             Perl 进程间通信
+\&    perlfork            Perl fork() 相关信息
+\&    perlnumber          Perl 数字的语义
+.Ve
+.PP
+.Vb 2
+\&    perlthrtut          Perl 线程
+\&      perlothrtut       旧版 Perl 线程
+.Ve
+.PP
+.Vb 5
+\&    perlport            Perl 移植向导
+\&    perllocale          Perl 语言环境支持
+\&    perluniintro        Perl Unicode 介绍
+\&    perlunicode         Perl Unicode 支持
+\&    perlebcdic          在 EBCDIC 平台上运行 Perl
+.Ve
+.PP
+.Vb 1
+\&    perlsec             Perl 安全性
+.Ve
+.PP
+.Vb 5
+\&    perlmod             Perl modules: 它如何工作
+\&    perlmodlib          Perl modules: 如何写和用它们
+\&    perlmodstyle        Perl modules: 如何写好它
+\&    perlmodinstall      Perl modules: 如何从 CPAN 安装它们
+\&    perlnewmod          Perl modules: 准备释放出新模块
+.Ve
+.PP
+.Vb 1
+\&    perlutil            Perl 附带的工具
+.Ve
+.PP
+.Vb 1
+\&    perlcompile         Perl 编译套件介绍
+.Ve
+.PP
+.Vb 1
+\&    perlfilter          Perl 源码过滤
+.Ve
+.Sh "内部以及 C 接口 Internals and C Language Interface"
+.IX Subsection "Internals and C Language Interface"
+.Vb 7
+\&    perlembed           在 C/C++ 应用中内置 Perl 的独特方法
+\&    perldebguts         Perl 调试要点和技巧
+\&    perlxstut           Perl XS 
+\&    perlxs              Perl XS 应用程序编程接口
+\&    perlclib            标准 C 库的内部实现
+\&    perlguts            为高级开发者准备的 Perl 内部函数
+\&    perlcall            从 C 转换为 Perl 调用
+.Ve
+.PP
+.Vb 4
+\&    perlapi             Perl API 列表 (自动生成)
+\&    perlintern          Perl 内部函数 (自动生成)
+\&    perliol             Perl 以“层”方式实现 IO 用到的 C API 
+\&    perlapio            Perl 内部 IO 抽象接口
+.Ve
+.PP
+.Vb 1
+\&    perlhack            修改 Perl 
+.Ve
+.Sh "杂项 Miscellaneous"
+.IX Subsection "Miscellaneous"
+.Vb 2
+\&    perlbook            Perl 书籍信息 
+\&    perltodo            Perl 的未来
+.Ve
+.PP
+.Vb 1
+\&    perldoc             查看 Pod 格式的 Perl 文档
+.Ve
+.PP
+.Vb 11
+\&    perlhist            Perl 历史记录
+\&    perldelta           Perl 上一版本以来的变动
+\&    perl58delta         Perl 5.8.0 带来的变化
+\&    perl573delta        Perl changes in version 5.7.3
+\&    perl572delta        Perl changes in version 5.7.2
+\&    perl571delta        Perl changes in version 5.7.1
+\&    perl570delta        Perl changes in version 5.7.0
+\&    perl561delta        Perl changes in version 5.6.1
+\&    perl56delta         Perl changes in version 5.6
+\&    perl5005delta       Perl changes in version 5.005
+\&    perl5004delta       Perl changes in version 5.004
+.Ve
+.PP
+.Vb 2
+\&    perlartistic        Perl Artistic License
+\&    perlgpl             GNU General Public License
+.Ve
+.Sh "语言相关 Language-Specific"
+.IX Subsection "Language-Specific"
+.Vb 4
+\&    perlcn              Perl 简体中文支持 (原文是 EUC-CN 编码)
+\&    perljp              Perl 日本语支持 (原文是 EUC-JP 编码)
+\&    perlko              Perl 朝鲜语支持 (原文是 EUC-KR 编码)
+\&    perltw              Perl 繁体中文支持 (原文是 Big5 编码)
+.Ve
+.Sh "平台相关 Platform-Specific"
+.IX Subsection "Platform-Specific"
+.Vb 32
+\&    perlaix             Perl notes for AIX
+\&    perlamiga           Perl notes for AmigaOS
+\&    perlapollo          Perl notes for Apollo DomainOS
+\&    perlbeos            Perl notes for BeOS
+\&    perlbs2000          Perl notes for POSIX-BC BS2000
+\&    perlce              Perl notes for WinCE
+\&    perlcygwin          Perl notes for Cygwin
+\&    perldgux            Perl notes for DG/UX
+\&    perldos             Perl notes for DOS
+\&    perlepoc            Perl notes for EPOC
+\&    perlfreebsd         Perl notes for FreeBSD
+\&    perlhpux            Perl notes for HP-UX
+\&    perlhurd            Perl notes for Hurd
+\&    perlirix            Perl notes for Irix
+\&    perlmachten         Perl notes for Power MachTen
+\&    perlmacos           Perl notes for Mac OS (Classic)
+\&    perlmacosx          Perl notes for Mac OS X
+\&    perlmint            Perl notes for MiNT
+\&    perlmpeix           Perl notes for MPE/iX
+\&    perlnetware         Perl notes for NetWare
+\&    perlos2             Perl notes for OS/2
+\&    perlos390           Perl notes for OS/390
+\&    perlos400           Perl notes for OS/400
+\&    perlplan9           Perl notes for Plan 9
+\&    perlqnx             Perl notes for QNX
+\&    perlsolaris         Perl notes for Solaris
+\&    perltru64           Perl notes for Tru64
+\&    perluts             Perl notes for UTS
+\&    perlvmesa           Perl notes for VM/ESA
+\&    perlvms             Perl notes for VMS
+\&    perlvos             Perl notes for Stratus VOS
+\&    perlwin32           Perl notes for Windows
+.Ve
+.PP
+默认情况下,上面列出的手册页安装在
+\&\fI/usr/local/man/\fR 目录
+.PP
+还有大量有关 Perl 模块的文档。默认的 perl 配置会将它们安装到
+\fI/usr/local/lib/perl5/man\fR 目录,(或者 Perl 库目录中的
+\fIman\fR 子目录). 它们中的一部分是随 Perl 发布的标准文档,
+另外你还可以从中找到第三方的文档
+.PP
+你可以用
+\fIman\fR\|(1) 程序来查看 Perl 的文档,只要在配置文件中加入合适的路径,
+或者将路径设置在
+\s-1MANPATH\s0 环境变量中。要找出 perl 所有手册页的路径,只要运行
+.PP
+.Vb 1
+\&    perl -V:man.dir
+.Ve
+.PP
+如果路径有共同点,例如
+\fI/usr/local/man/man1\fR
+和 \fI/usr/local/man/man3\fR, 
+你只要将共同点
+(\fI/usr/local/man\fR) 
+加入到 \fIman\fR\|(1) 的配置文件中,或是
+\s-1MANPATH\s0 环境变量中。如果它们没有共同点,就必须全部添加
+.PP
+如果这样做没有效果,你也可以用附带的
+\fIperldoc\fR 脚本来查看模块信息。也可以找一个 man 的替代程序
+.PP
+如果你的程序出了问题,又不知道该到哪里去找帮助,就先试一试
+\fB\-w\fR 选项。它会精确地报告错误发生在哪一行
+.SH "描述 DESCRIPTION"
+.IX Header "DESCRIPTION"
+Perl 是一种特别为扫描复杂文本文件优化过的语言,
+从中提取有用的信息,然后据此生成结果。
+它也是系统管理任务中很好用的语言。它的目标是实用 (易用,高效,完整) 而不是
+精致 (小,优雅,功能有限)
+.PP
+Perl 结合了 (在作者看来) 
+C, \fBsed\fR, \fBawk\fR, 还有 \fBsh\fR 的优点,熟悉它们的人学起 Perl 毫无困难。
+(语言学家还会从中发现一些
+\fBcsh\fR, Pascal, 甚至 \&\s-1BASIC\-PLUS\s0 中的元素。)
+表达式语法与 C 表达式语法紧密对应。与大多数 Unix 工具不同,Perl 不限制
+你的数据的大小
+\*(-- 只要你有足够的内存,Perl 可以把你的整个文件当作单一的字符串来享受。
+递归的深度是无限的。
+散列 (有时又叫做“关联数组”
+\&\*(L"associative arrays\*(R"
+) 会按需生长,以避免性能下降。
+Perl 使用精致的模式匹配技术来保证快速扫描大量数据。
+尽管为扫描文本而优化,Perl 仍然可以处理二进制数据,也可以像使用散列一样使用 dbm 文件。
+设置了 UID 的 Perl 脚本要比 C 程序安全,因为数据流跟踪机制可以堵上很多愚蠢的安全漏洞
+.PP
+如果你遇到了一般适于
+\fBsed\fR 或 \fBawk\fR 或 \&\fBsh\fR 处理的问题,但是问题超出了工具的能力,
+或者需要更快的处理,你又不想用 C 来写一大堆倒塌的程序,那么使用 Perl 吧。
+另外,还有很多将
+\fBsed\fR 和 \fBawk\fR
+脚本转换为 Perl 脚本的翻译器
+.PP
+但是稍等,还有更多...
+.PP
+自 1993 年开始 (参见 perlhist),Perl 5 进行了几乎完全的重写,
+提供了以下的功能:
+.IP "\(bu" 4
+模块性和可复用性
+.Sp
+详述在
+perlmod, perlmodlib, 和 perlmodinstall 中
+.IP "\(bu" 4
+可内置可扩展
+.Sp
+详述在
+perlembed, perlxstut, perlxs, perlcall, perlguts, 和 xsubpp 中
+.IP "\(bu" 4
+创建功能强大的数据类型 (同时包括多种
+\s-1DBM\s0 实现)
+.Sp
+详述在
+perltie 和 AnyDBM_File 中
+.IP "\(bu" 4
+函数可重载,自动加载,原型化
+.Sp
+详述在
+perlsub 中
+.IP "\(bu" 4
+复杂的数据结构嵌套还有匿名函数
+.Sp
+详述在
+perlreftut, perlref, perldsc, 和 perllol 中
+.IP "\(bu" 4
+面向对象编程
+.Sp
+详述在
+perlobj, perlboot, perltoot, perltooc, 和 perlbot 中
+.IP "\(bu" 4
+支持轻量级进程 (线程)
+.Sp
+详述在
+perlthrtut 和 threads 中
+.IP "\(bu" 4
+支持 Unicode,国际化和本地化
+.Sp
+详述在
+perluniintro, perllocale 和 Locale::Maketext 中
+.IP "\(bu" 4
+变量作用域
+.Sp
+详述在
+perlsub 中
+.IP "\(bu" 4
+正则表达式强化
+.Sp
+详述在
+perlre 中,perlop 中有更多例子
+.IP "\(bu" 4
+强化的调试工具和交互的 Perl 环境,支持集成的编辑器
+.Sp
+详述在
+perldebtut, perldebug 和 perldebguts 中
+.IP "\(bu" 4
+\&\s-1POSIX\s0 1003.1 兼容的库
+.Sp
+详述在
+\s-1POSIX\s0 中
+.PP
+Okay, 这些已经是绝对的绝对够用了
+.SH "可用性 AVAILABILITY"
+.IX Header "AVAILABILITY"
+Perl 在大部分操作系统上都可用,包含几乎所有类 Unix 的平台。参见 perlport 中的
+\*(L"Supported Platforms\*(R" 段来查看平台列表
+.SH "环境 ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+参见 perlrun
+.SH "作者 AUTHOR"
+.IX Header "AUTHOR"
+Larry Wall <larry at wall.org>, with the help of oodles of other folks.
+.PP
+如果你使用 Perl 的成功案例对想在项目中应用 Perl 的人有用,
+或者如果你只是想想表达你对 Larry 和 Perl 开发者的感激之情,请写信到
+<perl\-thanks at perl.org>
+.SH "文件 FILES"
+.IX Header "FILES"
+.Vb 1
+\& "@INC"                 locations of perl libraries
+.Ve
+.SH "参见 SEE ALSO"
+.IX Header "SEE ALSO"
+.Vb 2
+\& a2p    awk 到 perl 翻译器
+\& s2p    sed 到 perl 翻译器
+.Ve
+.PP
+.Vb 3
+\& http://www.perl.com/       Perl 官方主页
+\& http://www.cpan.org/       the Comprehensive Perl Archive (Perl 文件中心)
+\& http://www.perl.org/       Perl Mongers (Perl 用户组)
+.Ve
+.SH "诊断 DIAGNOSTICS"
+.IX Header "DIAGNOSTICS"
+\f(CW\*(C`use warnings\*(C'\fR 编译指示 (pragma) (还有 \fB\-w\fR 选项) 会产生
+一些有用的诊断信息
+.PP
+参见 perldiag 来查看所有 Perl 诊断信息的含义。
+\f(CW\*(C`use diagnostics\*(C'\fR 编译指示会自动将 Perl 简短的警告和错误消息
+转换为长格式
+.PP
+编译错误将给出行号,还有要执行的下一个词或词的类型。
+(在用
+\fB\-e\fR 选项传给 Perl 的脚本中,每个
+\&\fB\-e\fR 
+视为一行。)
+.PP
+设置了 UID 的脚本有额外的约束,会产生格式化的错误信息,类似
+\*(L"Insecure dependency\*(R"。参见 perlsec
+.PP
+我们说过你一定要用
+\fB\-w\fR 选项了吗?
+.SH "BUGS"
+.IX Header "BUGS"
+\fB\-w\fR 选项不是必要的
+.PP
+Perl 依赖于你的机器中操作的定义,类似于类型转换,
+\fIatof()\fR, 还有使用 \fIsprintf()\fR 来做浮点输出等操作
+.PP
+如果你的 stdio 在读写一个特殊流时需要一个 seek 或是 eof,Perl 也会需要它们。
+(这种情况不会在
+\fIsysread()\fR 和 \fIsyswrite()\fR 中发生。)
+.PP
+所有内置数据类型都没有大小限制 (除了内存大小之外),但是还是有一些限制:
+变量名不得长于 251 个字符。
+诊断信息显示的行号以短整型数保存,因此行号最大值是 65535 
+(更大的行号一般会从头开始)
+.PP
+可以将错误报告 (一定要包含完整的配置信息,使用 perl 源码树中的 myconfig 程序,或者用
+\f(CW\*(C`perl \-V\*(C'\fR 命令得到) 寄给 perlbug at perl.org 。
+如果你已经成功编译 perl,
+\fIutils/\fR 目录中的 \fBperlbug\fR 脚本可以用来邮寄错误报告
+.PP
+Perl 真正意义是
+Pathologically Eclectic Rubbish Lister, 但是
+不要告诉任何人我说过它
+.SH "注意 NOTES"
+.IX Header "NOTES"
+Perl 的信条是
+\*(L"There's more than one way to do it.\*(R"
+至于探索有多少种办法,就是读者自己的事了
+.PP
+程序员应有的三种美德是
+Laziness, Impatience, 还有 Hubris.  
+原因呢,请参见骆驼书
+.SH "[中文版维护人]"
+.B bbbush <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.BR 2003.11.29
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/perlbook.1 b/src/man1/perlbook.1
new file mode 100644
index 0000000..04f6b87
--- /dev/null
+++ b/src/man1/perlbook.1
@@ -0,0 +1,143 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLBOOK 1"
+.TH PERLBOOK 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlbook \- Perl 书籍信息
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+《骆驼书》,官方称为 《Programming Perl,第三版》,作者正是 Larry Wall(PERL的创作者)本人,ISBN编号是0-596-00027-8。本书是几乎覆 盖所有有关PERL的指定参考著作。你可以从O'Reilly & Associates处订购这本 书和其他有关PERL的书,电话:1\-800\-998\-9938。美国本土和加拿大是 +1 707 829 0515,其他国家在前面加1。如果你能有一个O'Reilly 订单,你也可以 发传真到:+1 707 829 0104(其他国家前加1)。如果你连接了WEB,你甚至可以在 http://www.oreilly.com/进行在线订单。
+.PP
+来自各出版社和作者的其他 Perl 书籍可以在 perlfaq2 中找到列表
+.SH "中文版维护人"
+.B perl <mzs013 at 263.net>
+.SH "中文版最新更新"
+.B 2001年12月17日星期一
diff --git a/src/man1/perlboot.1 b/src/man1/perlboot.1
new file mode 100644
index 0000000..c32ec52
--- /dev/null
+++ b/src/man1/perlboot.1
@@ -0,0 +1,850 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLBOOT 1"
+.TH PERLBOOT 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlboot \- 初学者的面向对象教程
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+如果你对其他语言中的对象并不熟悉的话, 那么其他有关perl对象的文件可能使你感到恐惧, 比如 perlobj , 这是基础性的参考文件, 和 perltoot, 这是介绍perl对象的特性的教程.
+.PP
+所以, 让我们走另一条路,假定你没有任何关于对象的概念. 你需要了解子程序 (perlsub), 引用 (perlref et. seq.), 和 包(或模块) (perlmod), 如果还不清楚的话,先把他们搞清楚.
+.Sh "If we could talk to the animals...如果我们能和动物交谈"
+.IX Subsection "If we could talk to the animals..."
+让我们让动物讲会儿话:
+.PP
+.Vb 9
+\&    sub Cow::speak {
+\&      print "a Cow goes moooo!\en";
+\&    }
+\&    sub Horse::speak {
+\&      print "a Horse goes neigh!\en";
+\&    }
+\&    sub Sheep::speak {
+\&      print "a Sheep goes baaaah!\en"
+\&    }
+.Ve
+.PP
+.Vb 3
+\&    Cow::speak;
+\&    Horse::speak;
+\&    Sheep::speak;
+.Ve
+.PP
+结果是:
+.PP
+.Vb 3
+\&    a Cow goes moooo!
+\&    a Horse goes neigh!
+\&    a Sheep goes baaaah!
+.Ve
+.PP
+没什么特别的. 只是简单的子程序, 虽然来自不同的包, 并用完整的包名来调用. 那么让我们建立一个完整的牧场吧:
+.PP
+.Vb 5
+\&    # Cow::speak, Horse::speak, Sheep::speak 与上同
+\&    @pasture = qw(Cow Cow Horse Sheep Sheep);
+\&    foreach $animal (@pasture) {
+\&      &{$animal."::speak"};
+\&    }
+.Ve
+.PP
+结果是:
+.PP
+.Vb 5
+\&    a Cow goes moooo!
+\&    a Cow goes moooo!
+\&    a Horse goes neigh!
+\&    a Sheep goes baaaah!
+\&    a Sheep goes baaaah!
+.Ve
+.PP
+嗯. 这里的符号代码引用有些不太好. 我们正依赖于 \f(CW\*(C`no strict subs\*(C'\fR 模式, 在稍大些的程序中应尽量避免. 那为什么要这样呢? 因为我们要调用的子程序和它所在的包似乎是不可分的.
+.PP
+真的是这样吗?
+.Sh "Introducing the method invocation arrow 调用方法时的箭头符号"
+.IX Subsection "Introducing the method invocation arrow"
+现在,我们说 \f(CW\*(C`Class\->method\*(C'\fR 是调用了包(或模块)\f(CW\*(C`Class\*(C'\fR中的 \&\f(CW\*(C`method\*(C'\fR 方法。(Here, \*(L"Class\*(R" is used in its \*(L"category\*(R" meaning, not its \*(L"scholastic\*(R" meaning.) 不是很准确,不过我们会一步一步的来做. 现在,可以这样做:
+.PP
+.Vb 4
+\&    # Cow::speak, Horse::speak, Sheep::speak as before
+\&    Cow->speak;
+\&    Horse->speak;
+\&    Sheep->speak;
+.Ve
+.PP
+输出为:
+.PP
+.Vb 3
+\&    a Cow goes moooo!
+\&    a Horse goes neigh!
+\&    a Sheep goes baaaah!
+.Ve
+.PP
+还不是很有趣. 一样的字符,常量,没有变量. 但是, 不同部分可以分开了. 请看:
+.PP
+.Vb 2
+\&    $a = "Cow";
+\&    $a->speak; # invokes Cow->speak
+.Ve
+.PP
+哇! 现在包名与子程序名可以分开了, 我们可以用变量来表示包名. 这样,在使用 \f(CW\*(C`use strict refs\*(C'\fR 预编译指令时也可以正常工作了.
+.Sh "Invoking a barnyard 创建一个牲口棚"
+.IX Subsection "Invoking a barnyard"
+现在让我们把箭头用到牲口棚的例子中,范例:
+.PP
+.Vb 9
+\&    sub Cow::speak {
+\&      print "a Cow goes moooo!\en";
+\&    }
+\&    sub Horse::speak {
+\&      print "a Horse goes neigh!\en";
+\&    }
+\&    sub Sheep::speak {
+\&      print "a Sheep goes baaaah!\en"
+\&    }
+.Ve
+.PP
+.Vb 4
+\&    @pasture = qw(Cow Cow Horse Sheep Sheep);
+\&    foreach $animal (@pasture) {
+\&      $animal->speak;
+\&    }
+.Ve
+.PP
+现在我们所有的动物都能说话了, 而且不用使用代码引用.
+.PP
+不过注意到那些相同的代码. 每个 \f(CW\*(C`speak\*(C'\fR 子程序的结构是相同的: 一个 \f(CW\*(C`print\*(C'\fR 操作符和一个基本相同的字符串,只有两个词不同. 如果我们可以析出相同的部分就更好了,如果将来要把 \f(CW\*(C`goes\*(C'\fR 替换为 \f(CW\*(C`says\*(C'\fR 时就简单得多了
+.PP
+实际上这并不困难, 不过在这之前我们应该对箭头符号了解的更多一些.
+.Sh "The extra parameter of method invocation 方法调用时的额外参数"
+.IX Subsection "The extra parameter of method invocation"
+语句:
+.PP
+.Vb 1
+\&    Class->method(@args)
+.Ve
+.PP
+这样调用函数 \f(CW\*(C`Class::method\*(C'\fR:
+.PP
+.Vb 1
+\&    Class::method("Class", @args);
+.Ve
+.PP
+(如果子程序找不到,\*(L"继承,inheritance\*(R" 开始起作用,这在后面会讲到). 这意味着我们得到的第一个参数是类名(如果没有给出其他参数,它就是调用时的唯一参数).所以我们可以象这样重写 \f(CW\*(C`Sheep\*(C'\fR speaking 子程序:
+.PP
+.Vb 4
+\&    sub Sheep::speak {
+\&      my $class = shift;
+\&      print "a $class goes baaaah!\en";
+\&    }
+.Ve
+.PP
+另外的动物与此类似:
+.PP
+.Vb 8
+\&    sub Cow::speak {
+\&      my $class = shift;
+\&      print "a $class goes moooo!\en";
+\&    }
+\&    sub Horse::speak {
+\&      my $class = shift;
+\&      print "a $class goes neigh!\en";
+\&    }
+.Ve
+.PP
+每次 \f(CW$class\fR  都会得到与子程序相关的正确的值. 但是,还是有很多相似的结构. 可以再简单些吗? 是的. 可以通过在一个类中调用其它的方法来实现.
+.Sh "Calling a second method to simplify things 调用另一个方法以简化操作"
+.IX Subsection "Calling a second method to simplify things"
+我们在 \f(CW\*(C`speak\*(C'\fR 中调用 \f(CW\*(C`sound\*(C'\fR. 这个方法提供声音的内容.
+.PP
+.Vb 7
+\&    { package Cow;
+\&      sub sound { "moooo" }
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en"
+\&      }
+\&    }
+.Ve
+.PP
+现在, 当我们调用 \f(CW\*(C`Cow\->speak\*(C'\fR 时, 我们在 \f(CW\*(C`speak\*(C'\fR 中得到 \f(CW\*(C`Cow\*(C'\fR 的类 \f(CW$class\fR. 他会选择 \f(CW\*(C`Cow\->sound\*(C'\fR 方法, 然后返回 \f(CW\*(C`moooo\*(C'\fR. 那如果是 \f(CW\*(C`Horse\*(C'\fR 呢?
+.PP
+.Vb 7
+\&    { package Horse;
+\&      sub sound { "neigh" }
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en"
+\&      }
+\&    }
+.Ve
+.PP
+仅仅包名和声音有变化. 因此我们可以在Cow和Horse中共用 \f(CW\*(C`speak\*(C'\fR 吗? 是的,通过继承实现!
+.Sh "Inheriting the windpipes 继承气管"
+.IX Subsection "Inheriting the windpipes"
+我们创建一个公共函数包,命名为 \f(CW\*(C`Animal\*(C'\fR,在其中定义 \f(CW\*(C`speak\*(C'\fR:
+.PP
+.Vb 6
+\&    { package Animal;
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en"
+\&      }
+\&    }
+.Ve
+.PP
+然后,在每个动物那里 \*(L"继承,inherits\*(R" \f(CW\*(C`Animal\*(C'\fR 类, 同时赋予每个动物各自的声音:
+.PP
+.Vb 4
+\&    { package Cow;
+\&      @ISA = qw(Animal);
+\&      sub sound { "moooo" }
+\&    }
+.Ve
+.PP
+注意增加的数组 \f(CW at ISA\fR  . 我们马上讲到它.
+.PP
+现在当我们调用 \f(CW\*(C`Cow\->speak\*(C'\fR 时会发生什麽?
+.PP
+首先, Perl构造参数列表. 在这种情况下, 只有 \f(CW\*(C`Cow\*(C'\fR. 然后Perl 查找 \f(CW\*(C`Cow::speak\*(C'\fR. 但是找不到, 所以Perl检查继承数组 \f(CW at Cow::ISA\fR. 找到了, 那里只有一个 \f(CW\*(C`Animal\*(C'\fR
+.PP
+Perl 然后在 \f(CW\*(C`Animal\*(C'\fR 中查找 \f(CW\*(C`speak\*(C'\fR, \f(CW\*(C`Animal::speak\*(C'\fR. 找到了, 然后调用该子程序, 参数在一开始就被固定了.
+.PP
+在子程序 \f(CW\*(C`Animal::speak\*(C'\fR 中, \f(CW$class\fR 是 \f(CW\*(C`Cow\*(C'\fR (第一个参数). 在我们调用 \f(CW\*(C`$class\->sound\*(C'\fR 时, 首先寻找 \f(CW\*(C`Cow\->sound\*(C'\fR , 找到了, 因此不用查看 \f(CW at ISA\fR. 成功!
+.ie n .Sh "关于@ISA应该注意的几点问题"
+.el .Sh "关于\f(CW at ISA\fP应该注意的几点问题"
+.IX Subsection "A few notes about @ISA"
+神奇的 \f(CW at ISA\fR 变量 (读作 \*(L"is a\*(R" 而不是 \*(L"ice\-uh\*(R"), 声明了 \f(CW\*(C`Cow\*(C'\fR 是一个(\*(L"is a\*(R") \f(CW\*(C`Animal\*(C'\fR。 注意它是一个数组,而不是一个单值, 因为在个别情况下, 需要在几个父类中寻找方法.
+.PP
+如果 \f(CW\*(C`Animal\*(C'\fR 也有一个 \f(CW at ISA\fR, 我们也要查看它. 寻找是递归的,深度优先,在每个 \f(CW at ISA\fR 中从左到右寻找. 一般地,每个 \f(CW at ISA\fR 只有一个元素(多元素意味着多继承和多重的头痛), 这样我们可以得到一个漂亮的继承树.
+.PP
+如果使用 \f(CW\*(C`use strict\*(C'\fR, @ISA会引起抱怨, 因为它不是含有显式包名的变量, 也不是字典变量 (\*(L"my\*(R"). 我们不能把它用做\*(L"my\*(R"变量(它必须属于所继承的包),但是也还是有几种解决的办法.
+.PP
+最简单的办法是加上包名:
+.PP
+.Vb 1
+\&    @Cow::ISA = qw(Animal);
+.Ve
+.PP
+或者使用包声明:
+.PP
+.Vb 3
+\&    package Cow;
+\&    use vars qw(@ISA);
+\&    @ISA = qw(Animal);
+.Ve
+.PP
+如果你希望把包放到程序内, 可以把:
+.PP
+.Vb 4
+\&    package Cow;
+\&    use Animal;
+\&    use vars qw(@ISA);
+\&    @ISA = qw(Animal);
+.Ve
+.PP
+简写为:
+.PP
+.Vb 2
+\&    package Cow;
+\&    use base qw(Animal);
+.Ve
+.PP
+这就精简多了.
+.Sh "Overriding the methods 方法重载"
+.IX Subsection "Overriding the methods"
+让我们添上一只老鼠, 它的声音差不多听不到:
+.PP
+.Vb 10
+\&    # Animal package from before
+\&    { package Mouse;
+\&      @ISA = qw(Animal);
+\&      sub sound { "squeak" }
+\&      sub speak {
+\&        my $class = shift;
+\&        print "a $class goes ", $class->sound, "!\en";
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    Mouse->speak;
+.Ve
+.PP
+输出为:
+.PP
+.Vb 2
+\&    a Mouse goes squeak!
+\&    [but you can barely hear it!]
+.Ve
+.PP
+在这里, \f(CW\*(C`Mouse\*(C'\fR 有它自己的speak 函数, 所以 \f(CW\*(C`Mouse\->speak\*(C'\fR 不会调用\f(CW\*(C`Animal\->speak\*(C'\fR. 这叫做重载 \*(L"overriding\*(R". 实际上, 我们甚至不用说\f(CW\*(C`Mouse\*(C'\fR 是 \f(CW\*(C`Animal\*(C'\fR, 因为 \f(CW\*(C`speak\*(C'\fR 所用到的所有方法在 \f(CW\*(C`Mouse\*(C'\fR 中都有定义.
+.PP
+但是有些代码与 \f(CW\*(C`Animal\->speak\*(C'\fR 的相同 , 这在程序维护时是个问题. 我们能不能让 \f(CW\*(C`Mouse\*(C'\fR 与其它 \f(CW\*(C`Animal\*(C'\fR 作相同的事,但是给它加上特殊的部分呢? 可以!
+.PP
+首先,我们可以直接调用 \f(CW\*(C`Animal::speak\*(C'\fR 方法:
+.PP
+.Vb 10
+\&    # Animal package from before
+\&    { package Mouse;
+\&      @ISA = qw(Animal);
+\&      sub sound { "squeak" }
+\&      sub speak {
+\&        my $class = shift;
+\&        Animal::speak($class);
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+注意我们必须使用 \f(CW$class\fR (几乎肯定是\f(CW"Mouse"\fR) 作为 \f(CW\*(C`Animal::speak\*(C'\fR 的第一个参数, 因为我们没有用箭头符号. 那为什么不用呢? 嗯, 如果我们在那儿调用 \f(CW\*(C`Animal\->speak\*(C'\fR, 则第一个参数是 \f(CW"Animal"\fR 而不是 \f(CW"Mouse"\fR , 这样当调用 \f(CW\*(C`sound\*(C'\fR 时, 就找不到正确的函数了.
+.PP
+虽然如此,直接调用 \f(CW\*(C`Animal::speak\*(C'\fR 确实不怎么好. 万一 \f(CW\*(C`Animal::speak\*(C'\fR 不存在, 而是继承自 \f(CW at Animal::ISA\fR 中的某个类呢? 因为没有使用箭头符号, 我们只有一次机会去调用正确的函数.
+.PP
+还要注意到,现在类名 \f(CW\*(C`Animal\*(C'\fR 直接在子程序中使用. 如果维护代码的人没有注意到这一点, 改变了 <Mouse> 的 \f(CW at ISA\fR,没有注意到 \f(CW\*(C`speak\*(C'\fR 用到了 \f(CW\*(C`Animal\*(C'\fR 那就会出问题. 因此, 这可能不是一个好方法.
+.Sh "Starting the search from a different place 从其它地方开始寻找"
+.IX Subsection "Starting the search from a different place"
+较好的解决办法是让Perl从继承链的上一级开始寻找:
+.PP
+.Vb 9
+\&    # same Animal as before
+\&    { package Mouse;
+\&      # same @ISA, &sound as before
+\&      sub speak {
+\&        my $class = shift;
+\&        $class->Animal::speak;
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+这就对了. 使用这一语法, 我们从 \f(CW\*(C`Animal\*(C'\fR 寻找 \f(CW\*(C`speak\*(C'\fR, 在找不到时寻找 \f(CW\*(C`Animal\*(C'\fR 的继承链.且第一个参数是 \f(CW$class\fR, 所以 \f(CW\*(C`speak\*(C'\fR 和\f(CW\*(C`Mouse::sound\*(C'\fR 都会被正确地调用.
+.PP
+但这还不是最好的方法.我们还必须调整 \f(CW at ISA\fR 的元素顺序. 更糟糕的是, 如果 \f(CW\*(C`Mouse\*(C'\fR 有多个父类在 \f(CW at ISA\fR, 我们还要知道哪个类定义了 \f(CW\*(C`speak\*(C'\fR. 那么,有没有更好的办法呢?
+.Sh "The \s-1SUPER\s0 way of doing things 使用SUPER方法"
+.IX Subsection "The SUPER way of doing things"
+通过把 \f(CW\*(C`Animal\*(C'\fR 改成 \f(CW\*(C`SUPER\*(C'\fR 类, 程序可以自动在所有父类中(\f(CW at ISA\fR):
+.PP
+.Vb 9
+\&    # same Animal as before
+\&    { package Mouse;
+\&      # same @ISA, &sound as before
+\&      sub speak {
+\&        my $class = shift;
+\&        $class->SUPER::speak;
+\&        print "[but you can barely hear it!]\en";
+\&      }
+\&    }
+.Ve
+.PP
+\f(CW\*(C`SUPER::speak\*(C'\fR 意味着在当前包的 \f(CW at ISA\fR 中寻找 \f(CW\*(C`speak\*(C'\fR, 调用第一个找到的函数。注意它不会查找 \f(CW$class\fR 的 \f(CW at ISA\fR
+.Sh "Where we're at so far...到现在为止我们学了些什麽"
+.IX Subsection "Where we're at so far..."
+我们已经看到了箭头符号语法:
+.PP
+.Vb 1
+\&  Class->method(@args);
+.Ve
+.PP
+和它的等价形式:
+.PP
+.Vb 2
+\&  $a = "Class";
+\&  $a->method(@args);
+.Ve
+.PP
+它们构造这样一个参数列表:
+.PP
+.Vb 1
+\&  ("Class", @args)
+.Ve
+.PP
+并调用
+.PP
+.Vb 1
+\&  Class::method("Class", @Args);
+.Ve
+.PP
+但是,如果找不到 \f(CW\*(C`Class::method\*(C'\fR, 程序会查看 \f(CW at Class::ISA\fR (递归的) 找到一个包含 \f(CW\*(C`method\*(C'\fR 的包,然后执行它.
+.PP
+使用这种简单的语法, 我们可以有类方法,(多)继承,重载,以及其它扩展. 使用我们已经学到的东西, 我们可以析出公共的代码,以各种不同的形式重用同一工具. 这是对象能够提供的核心内容, 但是对象还能够提供实例数据, 这一点我们还没有涉及.
+.Sh "A horse is a horse, of course of course \*(-- or is it? 马就是马——真的是这样吗?"
+.IX Subsection "A horse is a horse, of course of course  or is it?"
+我们从 \f(CW\*(C`Animal\*(C'\fR 和 \f(CW\*(C`Horse\*(C'\fR 类的代码开始:
+.PP
+.Vb 10
+\&  { package Animal;
+\&    sub speak {
+\&      my $class = shift;
+\&      print "a $class goes ", $class->sound, "!\en"
+\&    }
+\&  }
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&  }
+.Ve
+.PP
+这样使得我们调用 \f(CW\*(C`Horse\->speak\*(C'\fR,从而向上调用 \f(CW\*(C`Animal::speak\*(C'\fR,然后调用 \f(CW\*(C`Horse::sound\*(C'\fR 来获得指定的声音,输出为:
+.PP
+.Vb 1
+\&  a Horse goes neigh!
+.Ve
+.PP
+但是我们所有的马都是相同的. 如果我增加一个子程序, 所有的马都会共享它. 这在创建相同的马时确实不错, 但是我们如何能够区分不同的马呢? 比如, 假设我想给我的第一匹马起个名字. 应该有办法使得它的名字和别的马的名字不同.
+.PP
+这可以通过创建一个 \*(L"实例,instance\*(R" 来实现. 实例是由类创建的. 在Perl中, 任何引用都可以是实例, 就让我们从最简单的引用开始吧,一个标量引用:
+.PP
+.Vb 2
+\&  my $name = "Mr. Ed";
+\&  my $talking = \e$name;
+.Ve
+.PP
+现在 \f(CW$talking\fR 是指向实例特有数据( \f(CW$name\fR )的引用。把这个引用变成真正的实例的是一个特殊的操作符,叫做 \f(CW\*(C`bless\*(C'\fR:
+.PP
+.Vb 1
+\&  bless $talking, Horse;
+.Ve
+.PP
+这个操作符把包名 \f(CW\*(C`Horse\*(C'\fR 中的所有信息存放到引用所指向的东西中. 这时,我们说 \f(CW$talking\fR 是 \f(CW\*(C`Horse\*(C'\fR 的一个实例 . 也就是说, 它是一匹独特的马. 引用并没有改变, 还可以用于间接引用操作符.
+.Sh "Invoking an instance method 调用实例方法"
+.IX Subsection "Invoking an instance method"
+箭头符号可以用于实例. 那么, 听听 \f(CW$talking\fR 的声音吧:
+.PP
+.Vb 1
+\&  my $noise = $talking->sound;
+.Ve
+.PP
+要调用 \f(CW\*(C`sound\*(C'\fR, Perl 首先注意到 \f(CW$talking\fR 是一个 blessed 引用 (因此是一个实例). 它会构造一个参数列表, 现在只有 \f(CW$talking\fR. (在后面我们会看到参数们在实例变量之后, 与使用类时相似.)
+.PP
+然后,是真正有意思的部分: Perl 查找实例所属的类, 这里是 \f(CW\*(C`Horse\*(C'\fR, 在其中寻找对应的方法. 这里, \f(CW\*(C`Horse::sound\*(C'\fR 直接可以找到(不用使用继承), 最后这样调用:
+.PP
+.Vb 1
+\&  Horse::sound($talking)
+.Ve
+.PP
+注意这里的第一个参数还是实例本身, 而不像前面我们学到的是类名. 最后返回值是 \f(CW\*(C`neigh\*(C'\fR, 它被赋值给 \f(CW$noise\fR 变量.
+.PP
+如果找不到 Horse::sound, 会在 \f(CW at Horse::ISA\fR 列表中查找. 类方法与实例方法的唯一区别是调用时的第一个参数是实例(一个blessed引用)还是一个类名(一个字符串).
+.Sh "Accessing the instance data 访问实例数据"
+.IX Subsection "Accessing the instance data"
+因为我们得到的第一个参数是实例,我们可以访问实例特有的数据. 我们可以取得马的名字:
+.PP
+.Vb 8
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&    sub name {
+\&      my $self = shift;
+\&      $$self;
+\&    }
+\&  }
+.Ve
+.PP
+现在,我们调用名字:
+.PP
+.Vb 1
+\&  print $talking->name, " says ", $talking->sound, "\en";
+.Ve
+.PP
+在 \f(CW\*(C`Horse::name\*(C'\fR 中, \f(CW at _\fR 数组仅含有 \f(CW$talking\fR, shift 将 \f(CW$talking\fR 赋给了 \f(CW$self\fR. (传统上我们在处理实例方法时总是把第一个元素赋给 \f(CW$self\fR, 所以你也应该这么做, 除非你有不这样做的充分理由.) 然后, \f(CW$self\fR 被标量化,成为 \f(CW\*(C`Mr. Ed\*(C'\fR, 这就行了. 输出是:
+.PP
+.Vb 1
+\&  Mr. Ed says neigh.
+.Ve
+.Sh "How to build a horse 如何创建一匹马"
+.IX Subsection "How to build a horse"
+当然啦,如果我们手工创建所有的马, 我们会出很多错误. 不仅如此,我们还亵渎了面向对象编程的特性,因为在那种情况下马的"内脏"也可见了. 如果你是兽医的话,这倒正好, 可是如果你仅仅是个爱马者呢? 所以,我们让 Horse 类来创建一匹新马:
+.PP
+.Vb 13
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&    sub name {
+\&      my $self = shift;
+\&      $$self;
+\&    }
+\&    sub named {
+\&      my $class = shift;
+\&      my $name = shift;
+\&      bless \e$name, $class;
+\&    }
+\&  }
+.Ve
+.PP
+现在,我们可以用 \f(CW\*(C`named\*(C'\fR 方法创建一匹马:
+.PP
+.Vb 1
+\&  my $talking = Horse->named("Mr. Ed");
+.Ve
+.PP
+注意到我们有回到了类方法, 所以传递给 \f(CW\*(C`Horse::named\*(C'\fR 的两个参数是 \f(CW\*(C`Horse\*(C'\fR 和 \f(CW\*(C`Mr. Ed\*(C'\fR. \*(C`bless\*(C'\fR 操作符不仅将 \f(CW$name\fR 实例化, 且将指向 \f(CW$name\fR 的引用作为返回值返回. 这样, 我们就创建了一匹马.
+.PP
+这里,我们调用了构造器 \f(CW\*(C`named\*(C'\fR, 它的参数就是特定的 \f(CW\*(C`Horse\*(C'\fR 的名字. 你可以使用不同的构造器用不同的名字建立不同的对象(比如记录它的谱系或生日). 但是, 你会发现多数使用Perl的人更喜欢把构造器命名为 \f(CW\*(C`new\*(C'\fR, 并使用不同的方法解释 \f(CW\*(C`new\*(C'\fR 的参数. 两种都挺好,只要你能创建对象就行. (你会自己创建一个,对吗?)
+.Sh "Inheriting the constructor 继承构造器"
+.IX Subsection "Inheriting the constructor"
+但是那个方法中有没有什麽对于 \f(CW\*(C`Horse\*(C'\fR 来说比较特殊的东西呢? 没有. 因此, 从 \f(CW\*(C`Animal\*(C'\fR 创建其它任何东西也可以使用相同的方法,我们来试试::
+.PP
+.Vb 19
+\&  { package Animal;
+\&    sub speak {
+\&      my $class = shift;
+\&      print "a $class goes ", $class->sound, "!\en"
+\&    }
+\&    sub name {
+\&      my $self = shift;
+\&      $$self;
+\&    }
+\&    sub named {
+\&      my $class = shift;
+\&      my $name = shift;
+\&      bless \e$name, $class;
+\&    }
+\&  }
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&  }
+.Ve
+.PP
+好了, 但是以实例调用 \f(CW\*(C`speak\*(C'\fR 会产生什麽结果呢?
+.PP
+.Vb 2
+\&  my $talking = Horse->named("Mr. Ed");
+\&  $talking->speak;
+.Ve
+.PP
+我们得到的是:
+.PP
+.Vb 1
+\&  a Horse=SCALAR(0xaca42ac) goes neigh!
+.Ve
+.PP
+为什麽?因为 \f(CW\*(C`Animal::speak\*(C'\fR 希望它的第一个参数是类名, 而不是实例. 当实例被传入时,我们希望使用的是字符串而不是实例本身,显示的结果不是我们所希望的.
+.Sh "Making a method work with either classes or instances 使方法同时支持类和实例"
+.IX Subsection "Making a method work with either classes or instances"
+我们需要做的是让方法检测它是被实例调用的还是被类调用的. 最直接的方法是使用 \f(CW\*(C`ref\*(C'\fR 操作符. 它在参数是实例时返回字符串,在参数是类名时返回 \f(CW\*(C`undef\*(C'\fR. 我们首先改写 \f(CW\*(C`name\*(C'\fR 方法:
+.PP
+.Vb 6
+\&  sub name {
+\&    my $either = shift;
+\&    ref $either
+\&      ? $$either # it's an instance, return name
+\&      : "an unnamed $either"; # it's a class, return generic
+\&  }
+.Ve
+.PP
+在这儿, \f(CW\*(C`?:\*(C'\fR 操作符决定是选择间接引用(dereference)还是派生字符串. 现在我们可以同时使用类或实例了. 注意我修改了第一个参数为 \f(CW$either\fR 来表示期望的变化:
+.PP
+.Vb 3
+\&  my $talking = Horse->named("Mr. Ed");
+\&  print Horse->name, "\en"; # prints "an unnamed Horse\en"
+\&  print $talking->name, "\en"; # prints "Mr Ed.\en"
+.Ve
+.PP
+我们可以改写 \f(CW\*(C`speak\*(C'\fR :
+.PP
+.Vb 4
+\&  sub speak {
+\&    my $either = shift;
+\&    print $either->name, " goes ", $either->sound, "\en";
+\&  }
+.Ve
+.PP
+而 \f(CW\*(C`sound\*(C'\fR 本来就可以工作. 那么现在就一切完成了!
+.Sh "Adding parameters to a method 给方法加参数"
+.IX Subsection "Adding parameters to a method"
+让我们训练动物们吃饭:
+.PP
+.Vb 30
+\&  { package Animal;
+\&    sub named {
+\&      my $class = shift;
+\&      my $name = shift;
+\&      bless \e$name, $class;
+\&    }
+\&    sub name {
+\&      my $either = shift;
+\&      ref $either
+\&        ? $$either # it's an instance, return name
+\&        : "an unnamed $either"; # it's a class, return generic
+\&    }
+\&    sub speak {
+\&      my $either = shift;
+\&      print $either->name, " goes ", $either->sound, "\en";
+\&    }
+\&    sub eat {
+\&      my $either = shift;
+\&      my $food = shift;
+\&      print $either->name, " eats $food.\en";
+\&    }
+\&  }
+\&  { package Horse;
+\&    @ISA = qw(Animal);
+\&    sub sound { "neigh" }
+\&  }
+\&  { package Sheep;
+\&    @ISA = qw(Animal);
+\&    sub sound { "baaaah" }
+\&  }
+.Ve
+.PP
+试试吧:
+.PP
+.Vb 3
+\&  my $talking = Horse->named("Mr. Ed");
+\&  $talking->eat("hay");
+\&  Sheep->eat("grass");
+.Ve
+.PP
+输出为:
+.PP
+.Vb 2
+\&  Mr. Ed eats hay.
+\&  an unnamed Sheep eats grass.
+.Ve
+.PP
+有参数的实例方法调用时首先得到实例的引用,然后得到参数的列表。因此第一个调用实际上是这样的:
+.PP
+.Vb 1
+\&  Animal::eat($talking, "hay");
+.Ve
+.Sh "More interesting instances 更多有趣的实例"
+.IX Subsection "More interesting instances"
+如果实例需要更多的数据该怎么办呢? 更多的项目产生更有趣的实例, 每个项目可以是一个引用或者甚至是一个对象. 最简单的方法是把它们存放到哈希中. 哈希中的关键词叫做'实例变量"(instance variables)或者"成员变量"(member variables),相应的值也就是变量的值。
+.PP
+但是我们怎么把马放到哈希中呢? 回忆到对象是被实例化(blessed)的引用. 我们可以简单地创建一个祝福了的哈希引用,同时相关的的内容也作些修改就可以了.
+.PP
+让我们创建一只有名字有颜色的绵羊:
+.PP
+.Vb 1
+\&  my $bad = bless { Name => "Evil", Color => "black" }, Sheep;
+.Ve
+.PP
+那么 \f(CW\*(C`$bad\->{Name}\*(C'\fR 是 \f(CW\*(C`Evil\*(C'\fR, \f(CW\*(C`$bad\->{Color}\*(C'\fR 是 \f(CW\*(C`black\*(C'\fR. 但是我们想通过 \f(CW\*(C`$bad\->name\*(C'\fR 存取绵羊的名字name, 这有点的问题,因为现在它期望一个标量引用. 别担心,因为修正它很简单:
+.PP
+.Vb 7
+\&  ## in Animal
+\&  sub name {
+\&    my $either = shift;
+\&    ref $either ?
+\&      $either->{Name} :
+\&      "an unnamed $either";
+\&  }
+.Ve
+.PP
+\f(CW\*(C`named\*(C'\fR 当然还是创建标量的绵羊, 如下修正就好了:
+.PP
+.Vb 7
+\&  ## in Animal
+\&  sub named {
+\&    my $class = shift;
+\&    my $name = shift;
+\&    my $self = { Name => $name, Color => $class->default_color };
+\&    bless $self, $class;
+\&  }
+.Ve
+.PP
+默认颜色 \f(CW\*(C`default_color\*(C'\fR 是什麽? 嗯, 如果 \f(CW\*(C`named\*(C'\fR 只有一个参数name, 我们还是希望有个颜色, 所以我们设定一个类初始化颜色. 对绵羊来说, 白色比较好:
+.PP
+.Vb 2
+\&  ## in Sheep
+\&  sub default_color { "white" }
+.Ve
+.PP
+为了避免为每个类定义颜色, 我们可以在 \f(CW\*(C`Animal\*(C'\fR 中定义一个 \*(L"缺省的缺省,backstop\*(R" 的颜色:
+.PP
+.Vb 2
+\&  ## in Animal
+\&  sub default_color { "brown" }
+.Ve
+.PP
+现在, 因为只有 \f(CW\*(C`name\*(C'\fR 和 \f(CW\*(C`named\*(C'\fR 与对象的 \*(L"结构,structure\*(R" 相关, 其余的部分可以保持不变, 所以 \f(CW\*(C`speak\*(C'\fR 工作正常.
+.Sh "A horse of a different color 一匹不同颜色的马"
+.IX Subsection "A horse of a different color"
+但是如果所有的马都是棕色的,也挺烦人的. 所以我们可以写个方法来改变马的颜色.
+.PP
+.Vb 7
+\&  ## in Animal
+\&  sub color {
+\&    $_[0]->{Color}
+\&  }
+\&  sub set_color {
+\&    $_[0]->{Color} = $_[1];
+\&  }
+.Ve
+.PP
+注意到存取参数的不同方法了吗: \f(CW$_[0]\fR 直接使用, 而没有用 \f(CW\*(C`shift\*(C'\fR. (这在我们频繁存取时可以节省一些时间.) 现在我们可以把Mr. Ed的颜色变过来:
+.PP
+.Vb 3
+\&  my $talking = Horse->named("Mr. Ed");
+\&  $talking->set_color("black-and-white");
+\&  print $talking->name, " is colored ", $talking->color, "\en";
+.Ve
+.PP
+结果是:
+.PP
+.Vb 1
+\&  Mr. Ed is colored black-and-white
+.Ve
+.Sh "Summary 总结"
+.IX Subsection "Summary"
+现在我们讲了类方法,构造器,实例方法,实例数据,甚至还有存取器(accessor). 但是这些还仅仅是开始. 我们还没有讲到以两个函数 getters,setters 形式出现的存取器,析构器(destructor),间接对象(indirect object notation),子类(subclasses that add instance data),per-class data,重载(overloading),\*(L"isa\*(R" 和 \*(L"can\*(R" 测试,公共类(\f(CW\*(C`UNIVERSAL\*(C'\fR class),等等. 这有待其它文档去讲解了. 无论如何,希望本文使你对对象有所了解.
+.SH "SEE ALSO 参见"
+.IX Header "SEE ALSO"
+更多信息可参见 perlobj (这里有更多的Perl对象的细节,而本文的是基础), perltoot (面向对象的中级教程),  perlbot  (更多的技巧), 以及书籍,比如Damian Conway的不错的书叫做《面向对象的Perl (\fIObject Oriented Perl\fR)》。
+.PP
+某些模块可能对你有用,它们是 Class::Accessor,
+Class::Class, Class::Contract, Class::Data::Inheritable,
+Class::MethodMaker 还有 Tie::SecureHash
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1999, 2000 by Randal L. Schwartz and Stonehenge
+Consulting Services, Inc.  Permission is hereby granted to distribute
+this document intact with the Perl distribution, and in accordance
+with the licenses of the Perl distribution; derived documents must
+include this copyright notice intact.
+.PP
+Portions of this text have been derived from Perl Training materials
+originally appearing in the \fIPackages, References, Objects, and
+Modules\fR course taught by instructors for Stonehenge Consulting
+Services, Inc. and used with permission.
+.PP
+Portions of this text have been derived from materials originally
+appearing in \fILinux Magazine\fR and used with permission.
+.SH "中文版维护人"
+.B redcandle <redcandle51 at chinaren.com>
+.SH "中文版最新更新"
+.B 2001年12月9日星期日
+.SH "中文手册页翻译计划"
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/perlcn.1 b/src/man1/perlcn.1
new file mode 100644
index 0000000..a6806cf
--- /dev/null
+++ b/src/man1/perlcn.1
@@ -0,0 +1,253 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLCN 1"
+.TH PERLCN 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlcn \- 简体中文 Perl 指南
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+欢迎来到 Perl 的天地!
+.PP
+从 5.8.0 版开始, Perl 具备了完善的 Unicode (统一码) 支援,
+也连带支援了许多拉丁语系以外的编码方式; \s-1CJK\s0 (中日韩) 便是其中的一部份.
+Unicode 是国际性的标准, 试图涵盖世界上所有的字符: 西方世界, 东方世界,
+以及两者间的一切 (希腊文, 叙利亚文, 亚拉伯文, 希伯来文, 印度文,
+印地安文, 等等). 它也容纳了多种作业系统与平台 (如 \s-1PC\s0 及麦金塔).
+.PP
+Perl 本身以 Unicode 进行操作. 这表示 Perl 内部的字符串数据可用 Unicode
+表示; Perl 的函式与算符 (例如正规表示式比对) 也能对 Unicode 进行操作.
+在输入及输出时, 为了处理以 Unicode 之前的编码方式存放的数据, Perl
+提供了 Encode 这个模块, 可以让你轻易地读取及写入旧有的编码数据.
+.PP
+Encode 延伸模块支援下列简体中文的编码方式 ('gb2312' 表示 'euc\-cn'):
+.PP
+.Vb 6
+\&    euc-cn      Unix 延伸字符集, 也就是俗称的国标码
+\&    gb2312-raw  未经处理的 (低比特) GB2312 字符表
+\&    gb12345     未经处理的中国用繁体中文编码
+\&    iso-ir-165  GB2312 + GB6345 + GB8565 + 新增字符
+\&    cp936       字码页 936, 也可以用 'GBK' (扩充国标码) 指明
+\&    hz          7 比特逸出式 GB2312 编码
+.Ve
+.PP
+举例来说, 将 EUC-CN 编码的档案转成 Unicode, 祗需键入下列指令:
+.PP
+.Vb 1
+\&    perl -Mencoding=euc-cn,STDOUT,utf8 -pe1 < file.euc-cn > file.utf8
+.Ve
+.PP
+Perl 也内附了 \*(L"piconv\*(R", 一支完全以 Perl 写成的字符转换工具程序, 用法如下:
+.PP
+.Vb 2
+\&    piconv -f euc-cn -t utf8 < file.euc-cn > file.utf8
+\&    piconv -f utf8 -t euc-cn < file.utf8 > file.euc-cn
+.Ve
+.PP
+另外, 利用 encoding 模块, 你可以轻易写出以字符为单位的程序码, 如下所示:
+.PP
+.Vb 7
+\&    #!/usr/bin/env perl
+\&    # 启动 euc-cn 字串解析; 标准输出入及标准错误都设为 euc-cn 编码
+\&    use encoding 'euc-cn', STDIN => 'euc-cn', STDOUT => 'euc-cn';
+\&    print length("骆驼");            #  2 (双引号表示字符)
+\&    print length('骆驼');            #  4 (单引号表示字节)
+\&    print index("谆谆教诲", "蛔唤"); # -1 (不包含此子字符串)
+\&    print index('谆谆教诲', '蛔唤'); #  1 (从第二个字节开始)
+.Ve
+.PP
+在最后一列例子里, \*(L"谆\*(R" 的第二个字节与 \*(L"谆\*(R" 的第一个字节结合成 EUC-CN
+码的 \*(L"蛔\*(R"; \*(L"谆\*(R" 的第二个字节则与 \*(L"教\*(R" 的第一个字节结合成 \*(L"唤\*(R".
+这解决了以前 EUC-CN 码比对处理上常见的问题.
+.Sh "额外的中文编码"
+.IX Subsection "额外的中文编码"
+如果需要更多的中文编码, 可以从 \s-1CPAN\s0 (<http://www.cpan.org/>) 下载
+Encode::HanExtra 模块. 它目前提供下列编码方式:
+.PP
+.Vb 1
+\&    gb18030     扩充过的国标码, 包含繁体中文
+.Ve
+.PP
+另外, Encode::HanConvert 模块则提供了简繁转换用的两种编码:
+.PP
+.Vb 2
+\&    big5-simp   Big5 繁体中文与 Unicode 简体中文互转
+\&    gbk-trad    GBK 简体中文与 Unicode 繁体中文互转
+.Ve
+.PP
+若想在 \s-1GBK\s0 与 Big5 之间互转, 请参考该模块内附的 b2g.pl 与 g2b.pl 两支程序,
+或在程序内使用下列写法:
+.PP
+.Vb 3
+\&    use Encode::HanConvert;
+\&    $euc_cn = big5_to_gb($big5); # 从 Big5 转为 GBK
+\&    $big5 = gb_to_big5($euc_cn); # 从 GBK 转为 Big5
+.Ve
+.Sh "进一步的信息"
+.IX Subsection "进一步的信息"
+请参考 Perl 内附的大量说明文件 (不幸全是用英文写的), 来学习更多关于
+Perl 的知识, 以及 Unicode 的使用方式. 不过, 外部的资源相当丰富:
+.Sh "提供 Perl 资源的网址"
+.IX Subsection "提供 Perl 资源的网址"
+.IP "<http://www.perl.com/>" 4
+.IX Item "<http://www.perl.com/>"
+Perl 的首页 (由欧莱礼公司维护)
+.IP "<http://www.cpan.org/>" 4
+.IX Item "<http://www.cpan.org/>"
+Perl 综合典藏网 (Comprehensive Perl Archive Network)
+.IP "<http://lists.perl.org/>" 4
+.IX Item "<http://lists.perl.org/>"
+Perl 邮递论坛一览
+.Sh "学习 Perl 的网址"
+.IX Subsection "学习 Perl 的网址"
+.IP "<http://www.oreilly.com.cn/html/perl.html>" 4
+.IX Item "<http://www.oreilly.com.cn/html/perl.html>"
+简体中文版的欧莱礼 Perl 书藉
+.Sh "Perl 使用者集会"
+.IX Subsection "Perl 使用者集会"
+.IP "<http://www.pm.org/groups/asia.shtml#China>" 4
+.IX Item "<http://www.pm.org/groups/asia.shtml#China>"
+中国 Perl 推广组一览
+.Sh "Unicode 相关网址"
+.IX Subsection "Unicode 相关网址"
+.IP "<http://www.unicode.org/>" 4
+.IX Item "<http://www.unicode.org/>"
+Unicode 学术学会 (Unicode 标准的制定者)
+.IP "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>" 4
+.IX Item "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>"
+Unix/Linux 上的 \s-1UTF\-8\s0 及 Unicode 答客问
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Encode, Encode::CN, encoding, perluniintro, perlunicode
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Jarkko Hietaniemi <jhi at iki.fi>
+.PP
+Autrijus Tang (唐宗汉) <autrijus at autrijus.org>
diff --git a/src/man1/perlcompile.1 b/src/man1/perlcompile.1
new file mode 100644
index 0000000..a18c67c
--- /dev/null
+++ b/src/man1/perlcompile.1
@@ -0,0 +1,402 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLCOMPILE 1"
+.TH PERLCOMPILE 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlcompile \- 关于 Perl 编译器和翻译器的介绍
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+Perl 一直是有一个编译器的:你的源文件会被编译成一种内部格式(一种语法分析树),并且在运行前还会被优化。从5.005版本起,Perl 在发行时就带有一个模块可以检查优化过的语法分析树(该模块称作B模块(\f(CW\*(C`B\*(C'\fR)),它被用来编写许多有用的功能,包括一个可以将你的Perl转成C源代码的模块,这样再编译后就可以得到一个可执行的文件了。
+.PP
+\f(CW\*(C`B\*(C'\fR 模块提供了访问语法分析树的方法, 其它的一些模块(“后端”)则对这个树进行操作。一些把它(语法树)以字节码的形式输出,还有以C源代码形式的输出的,后者以半可读的文本形式输出的。另一些遍历整棵语法树以建立一个关于所使用的子程序,格式及变量的交叉引用表。还有另外一些检查你的代码,看看有没有模棱两可的构造。另一些则重新将语法树导出成Perl代码,可以起代码美化或是消除混乱的代码的作用。
+.PP
+因为 \&\f(CW\*(C`B\*(C'\fR 模块的最初目的是提供一种能将Perl程序转为对应C代码的方法,接着就能把它变成可执行文件了,所以 \&\f(CW\*(C`B\*(C'\fR 模块和它的那些后端模块就被认为是“编译器”了,即使它们实际上没有做任何编译方面的事。这个编译器的各个部分精确的说应该是个“翻译器”,或者一个“检视器”,但是用Perl的人们想要一个“编译选项”而不是一个叫做“检视器”的小玩艺。你能怎么办呢?
+.PP
+这篇文章的主要内容是讲Perl编译器的用法:它包含的模块,怎样使用那些最重要的后端模块,它们有什么问题,如何让它们工作。
+.Sh "Layout 布局"
+.IX Subsection "Layout"
+编译器的后端放在 \f(CW\*(C`B::\*(C'\fR 里面,而前端(就是你,编译器的使用者,有时候要与之交互的)是 O 模块。一些后端(如 \f(CW\*(C`B::C\*(C'\fR))提供了一些程序(如\fIperlcc\fR)来隐藏模块的复杂性。
+.PP
+这里是一些值得知道的重要后端,并附有它们目前的状态,用0到10的整数表示。(状态0表示目前该部分功能只是有一个框架,还没有实现;状态10则表示如果还有Bug的话,我们会感到很奇怪的):
+.IP "B::Bytecode" 4
+.IX Item "B::Bytecode"
+将语法树存成机器相关的格式,可供BtyeLoader模块可以在以后重新装入。状态:5(一些部分可以工作,一些不可以,还有一些还没有测试)
+.IP "B::C" 4
+.IX Item "B::C"
+创建C代码文件,其中包括了重建语法树和恢复解释器的代码。状态:6(许多情况下可以正常工作,包括使用了Tk的程序)。
+.IP "B::CC" 4
+.IX Item "B::CC"
+按照语法树中运行期代码的路径创建C代码文件。这是最像 Perl - C 翻译器的一个,但是它生成的代码几乎是不能看懂的,因为它把语法树翻译成了一个巨大的switch结构来操作Perl中的结构。最终的目的是在perl程序中给出足够的类型信息后,可以将 perl 数据结构的操作转换为 c 级别的数据结构,对 int 和 float 的操作。状态:5 (有些可以工作,包括不复杂的 Tk 示例).
+.IP "B::Lint" 4
+.IX Item "B::Lint"
+当发现你的代码中有模棱两可的构造时会发出警告。状态:6(许多情况下可以正常工作,仅仅在很少数的领域内它会停止工作)。
+.IP "B::Deparse" 4
+.IX Item "B::Deparse"
+重新生成Perl代码,试着把代码用一致的格式写出来。状态:8(它工作得很好,只是会略去一些晦涩难懂的部分)。
+.IP "B::Xref" 4
+.IX Item "B::Xref"
+生成关于申明和关于变量以及子程序的使用情况的报告。状态:8(它工作得很好,只是仍有一点延迟方面的bugs)。
+.SH "Using The Back Ends 使用后端"
+.IX Header "Using The Back Ends"
+接下来的部分介绍怎样使用各种各样的编译器后端。介绍的顺序按照后端的成熟程度排列,所以最为稳定的,经过了验证的后端会最先介绍,还在试验中和没有完成的后端就放到后面描述了。
+.PP
+O模块默认让 \fB\-c\fR 开关有效,这防止Perl在编译完代码后运行程序。这也是为什么所有的后端在产生任何输出前都会打印一句:
+.PP
+.Vb 1
+\&  myperlprogram syntax OK
+.Ve
+.PP
+.Sh "The Cross Referencing Back End 交叉引用后端"
+.IX Subsection "The Cross Referencing Back End"
+交叉引用后端(B::Xref)生成一个关于你的程序的报表,把各个申明以及子程序,变量(包括格式)的使用情况存入文件中去。举例来说,这有一段摘自对pod2man程序分析后生成的报表(该程序是Perl自带的一个例程):
+.PP
+.Vb 12
+\&  Subroutine clear_noremap
+\&    Package (lexical)
+\&      $ready_to_print   i1069, 1079
+\&    Package main
+\&      $&                1086
+\&      $.                1086
+\&      $0                1086
+\&      $1                1087
+\&      $2                1085, 1085
+\&      $3                1085, 1085
+\&      $ARGV             1086
+\&      %HTML_Escapes     1085, 1085
+.Ve
+.PP
+这里展示了\f(CW\*(C`clear_noremap\*(C'\fR 子程序中变量的使用情况。就像变量 \f(CW$ready_to_print\fR 是 \fImy()\fR (词法) 的一个变量,在第1069行被引入( 原文用的词是introduced,也就是在 \fImy()\fR 中第一次被定义的意思 ),然后在第1079行该变量被使用了。从主包(main package)中来的变量 \f(CW$&\fR  又在第1086行被使用, 等等。
+.PP
+行号前面可能会有一个字母作为前缀,它们的意思是:
+.IP "i" 4
+.IX Item "i"
+变量首次被引入 (在my()中申明) 。
+.IP "&" 4
+子程序或者方法的引用。
+.IP "s" 4
+.IX Item "s"
+定义的子程序。
+.IP "r" 4
+.IX Item "r"
+定义的格式。
+.PP
+交叉引用中最为有用的选项就是把报表存入不同的文件,例如要把关于 \&\fImyperlprogram\fR 的报表存入文件 \fIreport\fR 中:
+.PP
+.Vb 1
+\&  $ perl -MO=Xref,-oreport myperlprogram
+.Ve
+.Sh "The Decompiling Back End 反编译后端"
+.IX Subsection "The Decompiling Back End"
+反编译后端将把你的Perl语法树重新变成源代码。生成的源代码会按照某种格式组织,所以这个后端可以用来消除代码中的混乱部分。此后端的基本使用方法如下:
+.PP
+.Vb 1
+\&  $ perl -MO=Deparse myperlprogram
+.Ve
+.PP
+你也许马上会发现Perl并不知道如何给你的代码分段。你要自己手动添入新行来把这大断的代码分开。然而现在,让我们看看代码只有一行时情况怎样,这个后端会做些什么:
+.PP
+.Vb 12
+\&  $ perl -MO=Deparse -e '$op=shift||die "usage: $0
+\&  code [...]";chomp(@ARGV=<>)unless at ARGV; for(@ARGV){$was=$_;eval$op;
+\&  die$@ if$@; rename$was,$_ unless$was eq $_}'
+\&  -e syntax OK
+\&  $op = shift @ARGV || die("usage: $0 code [...]");
+\&  chomp(@ARGV = <ARGV>) unless @ARGV;
+\&  foreach $_ (@ARGV) {
+\&      $was = $_;
+\&      eval $op;
+\&      die $@ if $@;
+\&      rename $was, $_ unless $was eq $_;
+\&  }
+.Ve
+.PP
+这个后端也有几条选项控制生成的代码,举例说,你可以把缩进的尺寸设在4(最大)到2之间:
+.PP
+.Vb 1
+\&  $ perl -MO=Deparse,-si2 myperlprogram
+.Ve
+.PP
+\fB\-p\fR 开关控制在常常可以不加圆括号的地方加上它们:
+.PP
+.Vb 6
+\&  $ perl -MO=Deparse -e 'print "Hello, world\en"'
+\&  -e syntax OK
+\&  print "Hello, world\en";
+\&  $ perl -MO=Deparse,-p -e 'print "Hello, world\en"'
+\&  -e syntax OK
+\&  print("Hello, world\en");
+.Ve
+.PP
+要知道更多,请参考 B::Deparse 
+.Sh "Lint 后端"
+.IX Subsection "The Lint Back End"
+lint 后端 (B::Lint) 检察程序中不好的程序风格。一个程序认为的不好风格可能对另外一个程序员来说是用起来很有效的工具,所以有选项让你设定哪些东东将会受到检查。
+.PP
+要运行一个风格检查器检察你的代码:
+.PP
+.Vb 1
+\&  $ perl -MO=Lint myperlprogram
+.Ve
+.PP
+要取消对上下文和没有定义的子程序的检查:
+.PP
+.Vb 1
+\&  $ perl -MO=Lint,-context,-undefined-subs myperlprogram
+.Ve
+.PP
+要知道更多的选项信息,请看 B::Lint 
+.Sh "The Simple C Back End 简化的C后端"
+.IX Subsection "The Simple C Back End"
+这个模块用来把你的Perl程序的内部编译状态存储到一个C代码文件中去,而生成的C代码就可以被特定平台上的C编译器转换成一个可执行文件了。最后的程序还会和Perl解释器的库文件静态链接起来,所以它不会节省你的磁盘空间(除非你的Perl是用共享的库文件创建的)或是程序大小,然而,另一方面,程序启动起来会快一些。
+.PP
+\f(CW\*(C`perlcc\*(C'\fR 工具缺省是生成以下的可执行文件。
+.PP
+.Vb 1
+\&  perlcc myperlprogram.pl
+.Ve
+.Sh "The Bytecode Back End 字节码后端"
+.IX Subsection "The Bytecode Back End"
+这个模块只有在你能够找到一种方法来装入并运行它生成的字节码时才会显得有用。ByteLoader模块提供了这项功能。
+.PP
+要把Perl转换成可执行的字节码,你可以使用 \f(CW\*(C`perlcc\*(C'\fR 的 \f(CW\*(C`\-B\*(C'\fR 开关:
+.PP
+.Vb 1
+\&  perlcc -B myperlprogram.pl
+.Ve
+.PP
+字节码是和机器类型无关的,所以一旦你编译了一个模块或是程序,它就可以像Perl源代码一样具有可移植性。(假设那个模块或者程序的使用者有一个足够新的Perl解释器来对字节码进行解码)
+.PP
+有一些选项用来控制要生成的字节码的性质和关于优化方面的参数,要知道这些选项的详细情况,请参考 \fBB::Bytecode\fR
+.Sh "The Optimized C Back End 优化的C后端"
+.IX Subsection "The Optimized C Back End"
+优化的C后端按照语法树中运行期代码的路径将你的Perl程序转换成等效的(但是被优化了的)C代码文件。这个C程序会直接对Perl的数据结构进行操作,而且也会链接Perl的解释器的库文件,以支持 \fIeval()\fR, \f(CW\*(C`s///e\*(C'\fR, \&\f(CW\*(C`require\*(C'\fR  等等。
+.PP
+\f(CW\*(C`perlcc\*(C'\fR 工具使用 \-O 开关生成这种可执行文件。要编译一个Perl程序(以\f(CW\*(C`.pl\*(C'\fR 或者\f(CW\*(C`.p\*(C'\fR 结尾):
+.PP
+.Vb 1
+\&  perlcc -O myperlprogram.pl
+.Ve
+.PP
+从Perl模块创建一个共享库文件(以 \f(CW\*(C`.pm\*(C'\fR 结尾):
+.PP
+.Vb 1
+\&  perlcc -O Myperlmodule.pm
+.Ve
+.PP
+知道更多,请参考 perlcc 和 B::CC.
+.SH "Module List for the Compiler Suite 编译套件的模块列表"
+.IX Header "Module List for the Compiler Suite"
+.IP "B" 4
+.IX Item "B"
+这个模块是一个自省的(introspective,用Java的术语说就是“reflective”)模块,允许Perl程序审视自己的内部。后端模块都是通过这个模块来访问语法分析树的。而你,后端模块的用户,就不用和B模块打交道了。
+.IP "O" 4
+.IX Item "O"
+这个模块是编译器的那些后端的前端,一般像这样进行调用:
+.Sp
+.Vb 1
+\&  $ perl -MO=Deparse myperlprogram
+.Ve
+.Sp
+这与在这个Perl程序中使用 \f(CW\*(C`use O 'Deparse'\*(C'\fR 相同。
+.IP "B::Asmdata" 4
+.IX Item "B::Asmdata"
+这个模块被 B::Assembler 模块使用,而 B::Assembler 又接着被 B::Bytecode 模块使用,B::Bytecode中有一个字节码形式存放的语法分析树以便以后装入。B::Asmdata自己并不算是一个后端,也许说它是后端的一个组件比较好。
+.IP "B::Assembler" 4
+.IX Item "B::Assembler"
+这个模块可以将语法树转为适合存储和恢复的数据形式。它本身不是一个后端,但是算是某个后端的一个组件。 assemble  程序用它来生成字节码。
+.IP "B::Bblock" 4
+.IX Item "B::Bblock"
+这个模块被 B::CC 后端使用。它被用来运行“基本块”。一个基本块就是一段从头到尾的操作,中间是不可能停下来或出现分支的。
+.IP "B::Bytecode" 4
+.IX Item "B::Bytecode"
+这个模块可以由程序的语法树生成字节码。生成的字节码会被写入到文件中,以后还能被重新恢复成语法树。总的目标就是为了只进行一次费时的程序编译工作,然后把解释器的状态存入文件中,运行程序时再把状态从文件中恢复。 具体的用法请参考 \*(L"The Bytecode Back End\*(R" 。
+.IP "B::C" 4
+.IX Item "B::C"
+这个模块按照语法树和其他一些解释器的内部数据结构生成C代码。然后你再编译生成的C代码,就可以得到一个可执行文件了。运行时这个可执行文件会恢复解释器和内部的数据结构来转动程序。要知道细节请参考 \*(L"The Simple C Back End\*(R"。
+.IP "B::CC" 4
+.IX Item "B::CC"
+这个模块按照你程序中的操作生成C代码。不像 B::C 模块只是把解释和它的状态存入C程序中, B::CC 模块生成的是不包含解释器的C 程序,所以用 B::CC 翻译的C 程序运行速度比一般的解释执行的程序速度要快,具体用法请参考 \*(L"The Optimized C Back End\*(R" 。
+.IP "B::Concise" 4
+.IX Item "B::Concise"
+这个模块输出一个简洁的 (但是完整的) Perl 分析树。它的输出比 B::Terse 或者 B::Debug 的结果更容易定制 (并且也可以模仿它们)。这个模块对书写自己的后端,或者学习 Perl 实现的人有用。它对一般的程序员没有用处。
+.IP "B::Debug" 4
+.IX Item "B::Debug"
+这个模块把Perl语法分析树非常详细地输出到标准输出上去。这对正在编写自己的后端程序,或正在深入Perl内部机制的人们来说是非常有用的。对普通程序员来说则没什么用。
+.IP "B::Deparse" 4
+.IX Item "B::Deparse"
+这个模块将编译了的语法树反向分析得出Perl源代码,这在调试或是反编译他人代码的时候会是非常有用的。另外让它为你自己的代码做一些美化工作也是可以的。要知道细节请参考 \&\*(L"The Decompiling Back End\*(R"。
+.IP "B::Disassembler" 4
+.IX Item "B::Disassembler"
+这个模块把字节码恢复成语法树,它本身不是一个后端,而是某个后端的一个组件。它会被和字节码在一起的 disassemble 程序使用。
+.IP "B::Lint" 4
+.IX Item "B::Lint"
+这个模块审视你的代码编译后的格式,并且找到那些容易让人皱眉,却又不至于引起警告的地方。举例来说,使用一个标量内容(scalar context)的数组,而不显式地申明成 \f(CW\*(C`scalar(@array)\*(C'\fR 。这种情况是会被 Lint 标示出来的。要知道细节请参考  \*(L"The Lint Back End\*(R"。
+.IP "B::Showlex" 4
+.IX Item "B::Showlex"
+这个模块打印出 \fImy()\fR 中的变量在函数或是文件中的使用情况,以得到一份关于 \fImy()\fR 中的变量在定义于文件 myperlprogram 中的子程序 \fImysub()\fR 中的使用情况的列表:
+.Sp
+.Vb 1
+\&  $ perl -MO=Showlex,mysub myperlprogram
+.Ve
+.Sp
+要得到一份关于 my() 中的变量在文件myperlprogram中的使用情况的列表:
+.Sp
+.Vb 1
+\&  $ perl -MO=Showlex myperlprogram
+.Ve
+.Sp
+[\s-1BROKEN\s0]
+.IP "B::Stackobj" 4
+.IX Item "B::Stackobj"
+这个模块被 B::CC 模块调用。它本身不是后端,但是是某个后端的一个组件。
+.IP "B::Stash" 4
+.IX Item "B::Stash"
+这个模块被 perlcc  程序调用,而perlcc可以把一个模块编译成可执行文件。B::Stash 把程序使用的符号表打印出来,并被用来阻止 B::CC 为 B::* 或是 O 模块生成C 代码。它本身不是后端,但是是某个后端的一个组件。
+.IP "B::Terse" 4
+.IX Item "B::Terse"
+这个模块用来打印语法树的内容,但是信息不会有B::Debug打印的那么多。对比来说,\f(CW\*(C`print "Hello, world."\*(C'\fR 会让 B::Debug 产生96行输出, 但是 B::Terse只会有6行。
+.Sp
+这个模块对正在编写自己的后端程序,或正在深入Perl内部机制的人们来说是非常有用的。对普通程序员来说则没什么用。
+.IP "B::Xref" 4
+.IX Item "B::Xref"
+这个模块打印一个报表列出在程序中哪里定义和使用了哪些变量,子程序或格式,报表还会列出程序装入的模块。要知道详细的使用方法,请参考 \*(L"The Cross Referencing Back End\*(R" 。
+.SH "KNOWN PROBLEMS 已知的问题"
+.IX Header "KNOWN PROBLEMS"
+简单 C 后端目前只保存以字符和数字命名的类型说明
+.PP
+优化的 C 后端会为一些不该为之输出的模块(比如说 DirHandle)输出代码。而且它不太可能正确地处理正在执行的子程序外部的goto语句(goto &sub is OK)。目前 \f(CW\*(C`goto LABEL\*(C'\fR 语句在这个后端中完全不会工作。他还会生成让C 编译器头痛无比的巨大的初始化函数。如果把这个初始化函数分割开是能得到比目前更好的效果的。另外的问题包括:处理无符号的数学问题时不能正确工作;一些操作码如果按照默认的操作码机制处理也会有非正常的结果。
+.PP
+BEGIN{} 块会在编译你的代码的时候被执行。所有的在BEGIN{} 中初始化的外部状态,如打开的文件,初始的数据库连结等等,会有不正确的表现。为了解决这个问题,Perl中又提供了一个 INIT{} 块来对应程序编译之后,正式运行之前要执行的那段代码。执行的顺序是:BEGIN{}, (后端编译程序可能这时会保存状态), INIT{}, 程序运行, END{}。
+.SH "AUTHOR 作者"
+.IX Header "AUTHOR"
+这篇文章最初是由 Nathan Torkington 编写,现在由邮件列表(perl5\-porters at perl.org.)维护
+.SH "译者"
+.B 郭锐(sunny65535) <sunny65535 at 263.net>
diff --git a/src/man1/perldata.1 b/src/man1/perldata.1
new file mode 100644
index 0000000..5b06849
--- /dev/null
+++ b/src/man1/perldata.1
@@ -0,0 +1,719 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLDATA 1"
+.TH PERLDATA 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perldata \- Perl 数据类型
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+.Sh "Variable names 变量名"
+.IX Subsection "Variable names"
+Perl 有三种内建的数据类型:标量,数组和关联数组(即 \*(L"哈希表,hash\*(R")。数组以数字为索引,通常以0开始,升序排列。哈希表以与值相关联的字符串为索引,内部排列是无序的。
+.PP
+值通常通过一个变量名(或变量名的引用)来引用。变量名的前缀字符显示了值的数据类型。其余部分指明了引用的是哪一个特定的值。通常变量名是一个唯一的标识符,以字母或下划线开始,包括字母、下划线和数字。某些情况下,也可以是以 \f(CW\*(C`::\*(C'\fR 分隔的一串标识符(或者是过时的 \f(CW\*(C`'\*(C'\fR);除了最后一个,其它都是包名,用来定位最后一个标识符所在的位置(详情参见 perlmod 中的 Packages)。可以用一个简单的标识符来替代它,利用引用就可以。下文有详述,也可参见 perlref .
+.PP
+Perl 也有内建的变量,其名称不遵循这一规则。它们名称古怪,这样可以避免与你的变量名冲突。模式匹配中被匹配到的字符串是以 \f(CW\*(C`$\*(C'\fR 加一个数字的变量名来存放的(参见 the perlop manpage 和 the perlre manpage)。 另外,还有几个使你可以介入perl 内部工作的特殊变量,其名称中包含标点和控制字符(参见 perlvar )
+.PP
+标量以 '$'开始, 即使它是数组或哈希的元素也是如此。可以把 '$' 理解为‘s' ,表示scalar(标量)。(译者注:此处根据有关文档,做了改动,下面的@处也是这样)
+.PP
+.Vb 4
+\&    $days               # 简单标量 "days"
+\&    $days[28]           # 数组 @days的第29个元素
+\&    $days{'Feb'}        # 哈希 %days的 ‘Feb‘ 所对应的值
+\&    $#days              # 数组 @days的最后一个元素的索引值
+.Ve
+.PP
+整个数组(或数组和哈希的局部)以 '@'开始, 它类似英文中的 \*(L"these\*(R" 或 \*(L"those\*(R" (这些……那些……),表示期望有多个值。
+.PP
+.Vb 3
+\&    @days               # ($days[0], $days[1],... $days[n])
+\&    @days[3,4,5]        # 即 ($days[3],$days[4],$days[5])
+\&    @days{'a','c'}      # 即 ($days{'a'},$days{'c'})
+.Ve
+.PP
+整个哈希以 '%' 开始:
+.PP
+.Vb 1
+\&    %days               # (key1, val1, key2, val2 ...)
+.Ve
+.PP
+另外,子程序以'&'来表示, 但有时在不引起误解的情况下也可以不用, 就象 \*(L"do\*(R" 在英语中常常省略一样。 符号表项以 '*' 作为开始字符, 不过你现在还不用关心这个 (if ever ;-)
+.PP
+每一种数据类型都有它自己的名字空间,常量标识符也一样。这意味着你可以使用同一个名字来命名标量、数组、哈希、文件句柄、目录句柄、子程序、格式或标签。即 \f(CW$foo\fR 和 \f(CW at foo\fR 是不同的变量。也即意味着 \f(CW$foo[1]\fR 是 \f(CW at foo\fR 的一部分, 而不是 \f(CW$foo\f 的一部分. 这看来有些怪异,不过很正常,因为它本来就怪异。
+.PP
+因为变量名以 '$', '@', 或 '%'开始, 保留词对变量没有什麽影响。保留词影响的是标签和文件句柄,因为它们不是以特殊字符前缀开始的。你不能用 \*(L"log\*(R" 来命名文件句柄,因为它是保留词(提示:你可以用 \f(CW\*(C`open(LOG,'logfile')\*(C'\fR 而不是 \f(CW\*(C`open(log,'logfile')\*(C'\fR). 使用大写的文件句柄既增加了可读性,又减少了冲突的发生。大小写是有意义的\-\-\*(L"\s-1FOO\s0\*(R", \*(L"Foo\*(R", 和 \*(L"foo\*(R" 是不同的名称。以字母或下划线开始的名称可以包含数字和下划线。
+.PP
+可以用一个返回相关引用的表达式来替换这样的变量名。参见 perlref
+.PP
+以数字开始的变量名只能包含数字。不是以字母、下划线或数字开始的变量名只能含有一个字符,如: \f(CW$%\fR 或 \f(CW$$\fR. (大部分这样的变量都有特殊的意义。例如,\f(CW$$\fR 是当前进程的id。)
+.Sh "Context 上下文"
+.IX Subsection "Context"
+在 Perl 中有时操作或值的意义取决于该操作或值所处的上下文。有两个主要的上下文:列表和标量上下文。相当一部分操作在需要列表的上下文中返回列表,在需要标量的上下文中返回标量。这在有关该操作的文档中会提到。换句话讲,Perl会重载这些操作符。英语中的某些词,如‘fish’和‘sheep’与此类似。
+.PP
+操作可以根据不同的上下文返回不同的值。例如,如果这样写:
+.PP
+.Vb 1
+\&    int( <STDIN> )
+.Ve
+.PP
+integer 操作提供标量上下文给 <> 操作符, <> 会从STDIN 读入一行返回给 integer 操作,然后它返回其中的整型量。但如果你这样写:
+.PP
+.Vb 1
+\&    sort( <STDIN> )
+.Ve
+.PP
+sort操作提供列表上下文给<>, <>会读入STDIN中的每一行直到结束,然后将其传递给sort,sort然后将其排序输出。
+.PP
+赋值比较特殊,左侧的参数决定了右侧的参数的上下文。赋值给标量,则右侧参数的上下文是标量上下文;赋值给数组或哈希,则右侧参数的上下文是列表上下文。赋值给列表(或片段,其实也是列表),右侧的上下文也是列表上下文。
+.PP
+当你使用 \f(CW\*(C`use warnings\*(C'\fR 编译指示或 Perl 的 \fB\-w\fR 参数时,你可能会看到这样的警告:在 \*(L"无效的上下文,void context\*(R" 中使用了常量或函数。无效上下文的意思是值被丢弃不用,比如只包含有 \f(CW\*(C`"fred";\*(C'\fR 的语句; 或是 \f(CW\*(C`getpwuid(0);\*(C'\fR;. 在要求列表上下文的函数被标量上下文环境调用时,也会出现这个警告.
+.PP
+用户定义的子程序可能会需要查看上下文是无效,标量,还是列表。不过,大多数并不需要这么做。因为标量和列表会自动插入到一个列表中。参见 perlfunc 中的 \*(L"wantarray\*(R" 以了解如何辨明你的函数调用时的上下文。
+.Sh "Scalar values 标量"
+.IX Subsection "Scalar values"
+Perl 中的所有数据都是标量, 标量的数组,标量的哈希. 标量可以是三种不同的值: 数字, 字符(串), 引用. 通常, 不同值之间的转换是透明的. 虽然一个标量不可能有多个值, 但是它可以是一个包含多个值的数组或哈希的引用.
+.PP
+标量不一定非此即彼. 不需要声明变量的类型是"字符串","数字","引用"或其它什麽. 因为标量会自动转换, 所以其类型不用关心. Perl 是上下文多形语言,它的标量可以是字符串,数字或引用(包括对象). 其中字符串和数字在大多数情况下并没有什麽不同, 引用是强化的,不可变的带有内建引用计数和析构器的指针.
+.PP
+标量在不是空字符串和数字0的时候被解释为真 TRUE. 布尔上下文是这样一种上下文, 这时不会发生数字或字符串的自动转换.
+.PP
+有两种空字符串(有时以"empty"表示), 定义了的和未定义的. 定义了的空字符串就是长度为零的字符串,如"". 未定义的空字符串是一个值,这个值表示某事物并没有真实值与它对应, 比如出错, 或到达文件尾, 或者你引用一个未定义的数组或哈希的元素时,都会返回一个未定义的空字符串. 虽然在早期Perl 中,在要求已定义变量的上下文中使用未定义的变量可以使得该变量得到定义, 现在却只有在特殊的情况下才会出现这种结果,参见the perlref manpage. 可以用defined() 函数来检测标量是否已经定义(对数组和哈希无效),也可以用undef() 去除对变量的定义.
+.PP
+要弄清楚一个字符串是否是有效的非0数字,只要看它是不是数字0和字母 \*(L"0\*(R" 就足够了(不过这在使用-w参数时,会显示警告). 因为非数字的字符串被看作0, 与awk中相似:
+.PP
+.Vb 3
+\&    if ($str == 0 && $str ne "0")  {
+\&        warn "That doesn't look like a number";
+\&    }
+.Ve
+.PP
+这种方法可能是最好的,因为如若不然你不会正确对待 \s-1IEEE\s0 的注释,比如 \f(CW\*(C`NaN\*(C'\fR 和无穷大. 别的时候, 你可能更愿意用 \fIPOSIX::strtod()\fR 函数或是正则表达式来检测字符串是否能用做数字(参见perlre).
+.PP
+.Vb 8
+\&    warn "has nondigits"        if     /\eD/;
+\&    warn "not a natural number" unless /^\ed+$/;             # rejects -3
+\&    warn "not an integer"       unless /^-?\ed+$/;           # rejects +3
+\&    warn "not an integer"       unless /^[+-]?\ed+$/;
+\&    warn "not a decimal number" unless /^-?\ed+\e.?\ed*$/;     # rejects .2
+\&    warn "not a decimal number" unless /^-?(?:\ed+(?:\e.\ed*)?|\e.\ed+)$/;
+\&    warn "not a C float"
+\&        unless /^([+-]?)(?=\ed|\e.\ed)\ed*(\e.\ed*)?([Ee]([+-]?\ed+))?$/;
+.Ve
+.PP
+数组的长度是标量. 通过$#days你可以知道@days的长度. 技术上讲,这不是数组的长度; 而是最后一个元素的下标,因为第一个元素的下标是0. 对$#days 赋值会改变数组的长度. 以这种方式减少数组的话, 会破坏其中的值, 再增加其长度也不能恢复. (Perl 4中是可以的, 我们改变了它以确保析构器被及时调用.)
+.PP
+你可以使用一些小技巧来预扩展一个数组(如果你知道它将会变得很大的话). 可以用给超出数组范围的元素赋值的方法扩展数组. 可以给数组赋值一个空列表以清空数组. 下面语句等价:
+.PP
+.Vb 2
+\&    @whatever = ();
+\&    $#whatever = -1;
+.Ve
+.PP
+数组处于标量上下文中时, 返回值是数组的长度. (列表在标量上下文中,返回值是列表的最后一个元素,像是C中的逗号操作符, 而内建函数的返回值由它们自己决定.) 以下语句为真:
+.PP
+.Vb 1
+\&    scalar(@whatever) == $#whatever - $[ + 1;
+.Ve
+.PP
+Perl 5 改变了 \f(CW$[\fR 的意义: 不必担心别的程序改变了 \f(CW$[\fR 的值. (换言之,不推荐使用 \f(CW$[\fR ) 所以,可以写成这样:
+.PP
+.Vb 1
+\&    scalar(@whatever) == $#whatever + 1;
+.Ve
+.PP
+有些程序员为了明确起见, 会使用显式的转换:
+.PP
+.Vb 1
+\&    $element_count = scalar(@whatever);
+.Ve
+.PP
+当哈希处于标量上下文中时, 如果哈希为空, 返回值为假, 如果非空, 返回值为真; 说得更精确些, 返回值是个字符串, 由已经使用的存储段和分配的全部存储段组成,二者之间以斜杠分隔. 这可以用来反映Perl的哈希算法的好坏. 例如, 你的哈希中有10,000个元素,但是 \f(CW%HASH\fR 的标量值为 \f(CW"1/16"\fR, 则说明仅用到了16个存储段中的一个, 也许10,000个元素都在这一个存储段中. 最好不要发生这种情况.
+.PP
+你可以预先为哈希分配空间, 这要使用给 \fIkeys()\fR 函数赋值的方法来实现. 实际分配的空间是大于所给值的二的幂:
+.PP
+.Vb 1
+\&    keys(%users) = 1000;                # 分配 1024 空间
+.Ve
+.Sh "Scalar value constructors 标量数据构造"
+.IX Subsection "Scalar value constructors"
+数值常量有以下浮点和整数格式:
+.PP
+.Vb 9
+\&    12345
+\&    12345.67
+\&    .23E-10             # a very small number
+\&    3.14_15_92          # a very important number
+\&    4_294_967_296       # underscore for legibility
+\&    0xff                # hex
+\&    0xdead_beef         # more hex   
+\&    0377                # octal
+\&    0b011011            # binary
+.Ve
+.PP
+在数字常量中可以在数字间插入下划线来增加可读性。例如,可以三位一组 (Unix 样式的分组,例如 0b110_110_100),或者四位一组 (来表示 nibbles,例如 0b1010_0110),或者其他分组。
+.PP
+字符串通常以单引号或双引号括起. 与标准Unix shells中的引号相似: 双引号可以接收转义和变量; 单引号不可以 (除了 \f(CW\*(C`\e'\*(C'\fR 和 \f(CW\*(C`\e\e\*(C'\fR)). C 样式的转义字符可以用来输入新行,跳格等字符,转义字符的列表可以参见 perlop 中的 \*(L"Quote and Quote-like Operators\*(R"
+.PP
+十六进制,八进制,或二进制以字符串形式表示(如:'0xff'),不能自动转换为十进制形式. hex() 和 oct() 函数可以实现转换. 参见 perlfunc 中的 hex 和 oct 了解详情.
+.PP
+可以在字符串中直接加入新行. 字符串中的变量只能是标量,数组和数组或哈希的片段 (换言之, 以$或@开始, 后跟下标.).
+以下语句打印``The price is $\&100.''
+.PP
+.Vb 2
+\&    $Price = '$100';    # not interpolated
+\&    print "The price is $Price.\en";     # interpolated
+.Ve
+.PP
+perl 中没有 double interpolation,因此 \f(CW$100\fR 保持不变。
+.PP
+正如在有些shell中一样, 你可以用花括号括起变量名, 以便区分变量名和其后的字母及下划线. 如果要将一个变量改写为字符串时,必须这样做,以避免与后面的双冒号或单引号连接起来,否则会被当作包名:
+.PP
+.Vb 3
+\&    $who = "Larry";
+\&    print PASSWD "${who}::0:0:Superuser:/:/bin/perl\en";
+\&    print "We use ${who}speak when ${who}'s here.\en";
+.Ve
+.PP
+如果没有花括号, Perl会寻找 $whospeak, $who::0, 和 $who's 变量. 后两个是不存在的 who 包中的$0 和 $s.
+.PP
+实际上, 花括号中的标识符必须是字符串, 哈希的下标也必须是字符串. 都不需要引号, 前面的例子$days{'Feb'} 可以写作 $days{Feb} 引号会自动加上. 但是下标中的其它复杂内容被解释为表达式.
+.PP
+\fIVersion Strings\fR
+.IX Subsection "Version Strings"
+.PP
+\fB注意:\fR Version Strings (v\-strings) have been deprecated.  They will
+not be available after Perl 5.8.  The marginal benefits of v\-strings
+were greatly outweighed by the potential for Surprise and Confusion.
+.PP
+类似 \f(CW\*(C`v1.20.300.4000\*(C'\fR 这样的形式被解释为一个字符串. 这种形式称为 v\-strings,提供了更易读的方法来构造字符串,比起 \f(CW"\ex{1}\ex{14}\ex{12c}\ex{fa0}"\fR 更加易读. 这在表示 Unicode 字符串时很有用, 在使用字符串比较命令(\f(CW\*(C`cmp\*(C'\fR, \f(CW\*(C`gt\*(C'\fR, \f(CW\*(C`lt\*(C'\fR 等)比较版本号时也非常有用. 如果其中的点号多于两个, 则开始的 \f(CW\*(C`v\*(C'\fR 可以省略.
+.PP
+.Vb 3
+\&    print v9786;              # prints UTF-8 encoded SMILEY, "\ex{263a}"
+\&    print v102.111.111;       # prints "foo"
+\&    print 102.111.111;        # same
+.Ve
+.PP
+这种形式可以用于require 和 use 中作版本检查.\*(L"$^V\*(R" 特殊变量中的Perl版本号就是以这种形式保存的. 参见 perlvar 中的 \*(L"$^V\*(R"
+注意使用 v\-strings 来保存 IPv4 地址是不可移植的,除非同时使用 Socket 包的 \fIinet_aton()\fR/\fIinet_ntoa()\fR 函数。
+.PP
+注意从 Perl 5.8.1 开始单个数字的 v\-strings (类似 \f(CW\*(C`v65\*(C'\fR) 如果在 \f(CW\*(C`=>\*(C'\fR 操作符(通常用来从 hash 值中区分开 hash 键) 之前,不是一个 v\-strings,而是解释为字符串 ('v65')。在 Perl 5.6.0 到 Perl 5.8.0 它一直是 v\-strings,但是这样带来了更多混淆和错误而不是优点。多个数字的 v\-strings,类似 \f(CW\*(C`v65.66\*(C'\fR 和 \f(CW65.66.67\fR,继续总是被当作 v\-strings
+.PP
+\fI特殊常量\fR
+.IX Subsection "Special Literals"
+.PP
+特殊变量 _\|_FILE_\|_, _\|_LINE_\|_, 和 _\|_PACKAGE_\|_ 代表当前文件名,行号,和包名. 它们只能作为单独的符号来使用; 不能用于字符串中内插. 如果没有当前包(用 \f(CW\*(C`package;\*(C'\fR 指令来实现), 则_\|_PACKAGE_\|_ 是一个未定义的值.
+.PP
+控制字符 ^D 和 ^Z, 以及 _\|_END_\|_ 和 _\|_DATA_\|_ 变量可以表示文件的逻辑结束. 其后的文本被忽略.
+.PP
+_\|_DATA_\|_ 之后的文本可以通过文件句柄 \f(CW\*(C`PACKNAME::DATA\*(C'\fR 读取, \f(CW\*(C`PACKNAME\*(C'\fR 是 _\|_DATA_\|_ 所在的包的名称. 句柄指向_\|_DATA_\|_ 后面的文本. 读取结束程序会自动关闭该句柄 \f(CW\*(C`close DATA\*(C'\fR. 为了与 _\|_DATA_\|_ 还没有出现以前已经存在的程序兼容, _\|_END_\|_ 在顶级脚本中与 _\|_DATA_\|_ 性质相同(在用 \f(CW\*(C`require\*(C'\fR 或 \f(CW\*(C`do\*(C'\fR 调用时是不同的) 不过可以通过 \f(CW\*(C`main::DATA\*(C'\fR 来调用其中的内容.
+.PP
+参见 SelfLoader 详细了解 _\|_DATA_\|_, 其中还有例子. 要注意在BEGIN 块中无法读取DATA句柄: 因为BEGIN 块在编译时即被执行, 而此时 _\|_DATA_\|_ (或 _\|_END_\|_) 还未被程序看到.
+.PP
+\fI裸词\fR
+.IX Subsection "Barewords"
+.PP
+在文法上没有特殊意义的词语都被看作字符串. 称之为 "裸词". 和文件句柄以及标签一样, 仅包含小写字母的裸词有可能在将来与程序中的保留词发生冲突, 实际上,当你使用 \f(CW\*(C`use warnings\*(C'\fR 语句,或是 \fB\-w\fR 选项时, Perl会对此提出警告. 一些人可能希望完全禁止这样的词. 如果有如下语句:
+.PP
+.Vb 1
+\&    use strict 'subs';
+.Ve
+.PP
+那么不能被解释为子程序的裸词会引起编译时错误. 这种限制到块结束时终止. 而内部的块可以撤消这一限制, 用\f(CW\*(C`no strict 'subs'\*(C'\fR
+.PP
+\fI数组合并分隔符\fR
+.IX Subsection "Array Joining Delimiter"
+.PP
+数组和序列被合并为双引号引用的字符串时,以变量 \f(CW$"\fR 指定的值 (如果指定了 \*(L"use English;\*(R" 那么是 \f(CW$LIST_SEPARATOR\fR 的值) 作为分隔符,默认是空格。下列语句等价:
+.PP
+.Vb 2
+\&    $temp = join($", @ARGV);
+\&    system "echo $temp";
+.Ve
+.PP
+.Vb 1
+\&    system "echo @ARGV";
+.Ve
+.PP
+在搜索模式中(在双引号字符串中也是)有一个易混淆之处: \f(CW\*(C`/$foo[bar]/\*(C'\fR 应该是 \f(CW\*(C`/${foo}[bar]/\*(C'\fR (\f(CW\*(C`[bar]\*(C'\fR 是正则表达式的字符类) 还是 \f(CW\*(C`/${foo[bar]}/\*(C'\fR/ (\f(CW\*(C`[bar]\*(C'\fR 是数组 \f(CW at foo\fR 的下标) 呢? 如果 \f(CW at foo\fR 不存在, 那很明显它应该是字符类. 如果 \f(CW at foo\fR 存在, Perl 会尽力猜测 \f(CW\*(C`[bar]\*(C'\fR 的含义, 且它几乎总是对的. 如果它猜错了, 或者你比较偏执, 你可以使用花括号.
+.PP
+here\-document 的语法已经被移动到 perlop 中的 \*(L"Quote and Quote-like Operators\*(R"
+.Sh "List value constructors 列表值构造"
+.IX Subsection "List value constructors"
+列表是用逗号分开的各个值组成的(如果优先级需要的话,外面还要用圆括号包围):
+.PP
+.Vb 1
+\&    (LIST)
+.Ve
+.PP
+在不需要列表的上下文中, 列表的值是最后一个元素的值, 这与C中的逗号操作符类似. 例如:
+.PP
+.Vb 1
+\&    @foo = ('cc', '-E', $bar);
+.Ve
+.PP
+将列表赋给数组@foo, 但是
+.PP
+.Vb 1
+\&    $foo = ('cc', '-E', $bar);
+.Ve
+.PP
+将$bar 的值赋给$foo. 注意, 数组在标量上下文中的值是数组的长度; 下例将3赋给$foo:
+.PP
+.Vb 2
+\&    @foo = ('cc', '-E', $bar);
+\&    $foo = @foo;                # $foo gets 3
+.Ve
+.PP
+列表的最后可以输入逗号, 所以这样也是正确的:
+.PP
+.Vb 5
+\&    @foo = (
+\&        1,
+\&        2,
+\&        3,
+\&    );
+.Ve
+.PP
+要将here-document 赋给数组, 一行作为一个元素, 可以这样作:
+.PP
+.Vb 7
+\&    @sauces = <<End_Lines =~ m/(\eS.*\eS)/g;
+\&        normal tomato
+\&        spicy tomato
+\&        green chile
+\&        pesto
+\&        white wine
+\&    End_Lines
+.Ve
+.PP
+列表会自动插入子列表. 也即, 下例将展开数组,哈希等, 并将其中的每一个元素作为该新列表的一个元素. 数组或哈希失去其原来的身份.列表
+.PP
+.Vb 1
+\&    (@foo, at bar,&SomeSub,%glarch)
+.Ve
+.PP
+包括@foo, at bar的每一个元素,包括函数 SomeSub 返回值列表的每一个元素, 包括 %glarch 的每一个字值对. 要想使用不内插的列表, 可以参见 perlref
+.PP
+空列表可以表示为(). 在列表中插入空列表没有意义. ((),(),()) 与()相同. 同样, 内插一个空数组也没有意义.
+.PP
+合并的语法表示开和闭括号都是可选的 (除非为表示优先级需要);而列表可以以可选的逗号结束表示列表中的多个逗号是合法的语法。列表 \f(CW\*(C`1,,3\*(C'\fR 是两个列表的并置,\f(CW\*(C`1,\*(C'\fR 还有 \f(CW3\fR, 第一个以可选的逗号结束。\f(CW\*(C`1,,3\*(C'\fR 是 \f(CW\*(C`(1,),(3)\*(C'\fR 也是 \f(CW\*(C`1,3\*(C'\fR (类似的,\f(CW\*(C`1,,,3\*(C'\fR 是 \f(CW\*(C`(1,),(,),3\*(C'\fR 也是 \f(CW\*(C`1,3\*(C'\fR 等等) 不过我们不建议你使用这么混乱的写法
+.PP
+列表也可以象数组一样使用下标. 为了避免歧义需要在列表外使用括号. 例如:
+.PP
+.Vb 2
+\&    # Stat returns list value.
+\&    $time = (stat($file))[8];
+.Ve
+.PP
+.Vb 2
+\&    # SYNTAX ERROR HERE.
+\&    $time = stat($file)[8];  # OOPS, FORGOT PARENTHESES
+.Ve
+.PP
+.Vb 2
+\&    # Find a hex digit.
+\&    $hexdigit = ('a','b','c','d','e','f')[$digit-10];
+.Ve
+.PP
+.Vb 2
+\&    # A "reverse comma operator".
+\&    return (pop(@foo),pop(@foo))[0];
+.Ve
+.PP
+可以给列表赋值, 当然列表中的每个元素必须合法才行:
+.PP
+.Vb 1
+\&    ($a, $b, $c) = (1, 2, 3);
+.Ve
+.PP
+.Vb 1
+\&    ($map{'red'}, $map{'blue'}, $map{'green'}) = (0x00f, 0x0f0, 0xf00);
+.Ve
+.PP
+特例是可以赋值为 \f(CW\*(C`undef\*(C'\fR。当忽略程序的某些返回值时这很有用:
+.PP
+.Vb 1
+\&    ($dev, $ino, undef, undef, $uid, $gid) = stat($file);
+.Ve
+.PP
+列表赋值处于标量上下文中时, 返回值是等号右侧的表达式的元素个数:
+.PP
+.Vb 2
+\&    $x = (($foo,$bar) = (3,2,1));       # set $x to 3, not 2
+\&    $x = (($foo,$bar) = f());           # set $x to f()'s return count
+.Ve
+.PP
+这在布尔上下文中很方便, 因为多数列表函数在结束时返回空列表, 这时列表赋值会返回0, 被解释为FALSE.
+.PP
+它也是一个有用的习惯的来源,就是在列表上下文中执行一个函数或操作,然后记录返回值的个数,方法是为一个空列表赋值,然后在标量上下文中使用这个值。例如,如下代码:
+.PP
+.Vb 1
+\&    $count = () = $string =~ /\ed+/g;
+.Ve
+.PP
+将置 \f(CW$count\fR 为 \f(CW$string\fR 中找到的数字组数量。这样能行的原因是模式匹配是列表上下文 (因为它被赋予一个空列表),因此返回所有匹配部分的列表。在标量上下文中的列表赋值将它转换为元素的个数 (这里是模式被匹配的数量),然后赋值给 \f(CW$count\fR。注意简单地使用
+.PP
+.Vb 1
+\&    $count = $string =~ /\ed+/g;
+.Ve
+.PP
+没有作用,因为在标量上下文中的模式匹配只会返回 true 或 false,而不是所有的匹配。
+.PP
+最后一个元素可以是数组或哈希:
+.PP
+.Vb 2
+\&    ($a, $b, @rest) = split;
+\&    my($a, $b, %rest) = @_;
+.Ve
+.PP
+当然可以在任何位置使用数组或哈希, 不过第一个数组或哈希会将所有的值都据为己有, 其它的元素都会变为undefined.这在my() 或 local()中或许有用.
+.PP
+哈希可以用含有字值对的列表来初始化:
+.PP
+.Vb 2
+\&    # same as map assignment above
+\&    %map = ('red',0x00f,'blue',0x0f0,'green',0xf00);
+.Ve
+.PP
+列表和数组交互性很强, 哈希则不然. 你可以象使用数组时一样对列表使用下标并不意味着可以象使用哈希一样使用列表. 同样,处于列表中的哈希总是以字值对的形式展开. 因此有时使用引用要更好一些.
+.PP
+通常在字值对中使用 \f(CW\*(C`=>\*(C'\fR 操作符会更易读. \f(CW\*(C`=>\*(C'\fR 与逗号作用相同, 不过它还有一个作用, 那就是可以使它左侧的对象被解释为字符串 \*(-- 如果该对象是裸字的话,将是合法的标识符 (\f(CW\*(C`=>\*(C'\fR 不引用包含双冒号的复合标识符). 这在初始化哈希时棒极了:
+.PP
+.Vb 5
+\&    %map = (
+\&                 red   => 0x00f,
+\&                 blue  => 0x0f0,
+\&                 green => 0xf00,
+\&   );
+.Ve
+.PP
+或者初始化哈希的引用:
+.PP
+.Vb 5
+\&    $rec = {
+\&                witch => 'Mable the Merciless',
+\&                cat   => 'Fluffy the Ferocious',
+\&                date  => '10/31/1776',
+\&    };
+.Ve
+.PP
+or for using call-by-named-parameter to complicated functions:
+.PP
+.Vb 7
+\&   $field = $query->radio_group(
+\&               name      => 'group_name',
+\&               values    => ['eenie','meenie','minie'],
+\&               default   => 'meenie',
+\&               linebreak => 'true',
+\&               labels    => \e%labels
+\&   );
+.Ve
+.PP
+注意哈希初始化时的顺序和输出时的顺序并不一定相同. 要得到顺序的输出可以参见 perlfunc 中的 \*(L"sort\*(R"
+.Sh "Subscripts 下标"
+.IX Subsection "Subscripts"
+数组可以用一个美元符号,加上它的名字(不包括前导的\f(CW\*(C`@\*(C'\fR),加上方括号和其中包含的下标来取得值。例如:
+.PP
+.Vb 2
+\&    @myarray = (5, 50, 500, 5000);
+\&    print "Element Number 2 is", $myarray[2], "\en";
+.Ve
+.PP
+数组下标从 0 开始。负值下标返回从尾部开始数的值。在我们的例子中,\f(CW$myarray[\-1]\fR 将是 5000, \f(CW$myarray[\-2]\fR 是 500。
+.PP
+Hash 下标与此类似,但是不使用方括号而是花括号。例如:
+.PP
+.Vb 7
+\&    %scientists = 
+\&    (
+\&        "Newton" => "Isaac",
+\&        "Einstein" => "Albert",
+\&        "Darwin" => "Charles",
+\&        "Feynman" => "Richard",
+\&    );
+.Ve
+.PP
+.Vb 1
+\&    print "Darwin's First Name is ", $scientists{"Darwin"}, "\en";
+.Ve
+.Sh "Slices 片段"
+.IX Subsection "Slices"
+通常对哈希或数组一次访问一个元素. 也可以使用下标对列表元素进行访问.
+.PP
+.Vb 3
+\&    $whoami = $ENV{"USER"};             # one element from the hash
+\&    $parent = $ISA[0];                  # one element from the array
+\&    $dir    = (getpwnam("daemon"))[7];  # likewise, but with list
+.Ve
+.PP
+片段可以一次访问列表,数组或哈希中的几个元素, 这是通过列表下标来实现的. 这比分别写出每个值要方便一些.
+.PP
+.Vb 4
+\&    ($him, $her)   = @folks[0,-1];              # array slice
+\&    @them          = @folks[0 .. 3];            # array slice
+\&    ($who, $home)  = @ENV{"USER", "HOME"};      # hash slice
+\&    ($uid, $dir)   = (getpwnam("daemon"))[2,7]; # list slice
+.Ve
+.PP
+既然可以给列表赋值, 当然也可以哈希或数组的片段赋值.
+.PP
+.Vb 4
+\&    @days[3..5]    = qw/Wed Thu Fri/;
+\&    @colors{'red','blue','green'} 
+\&                   = (0xff0000, 0x0000ff, 0x00ff00);
+\&    @folks[0, -1]  = @folks[-1, 0];
+.Ve
+.PP
+上面的操作与下列语句等价:
+.PP
+.Vb 4
+\&    ($days[3], $days[4], $days[5]) = qw/Wed Thu Fri/;
+\&    ($colors{'red'}, $colors{'blue'}, $colors{'green'})
+\&                   = (0xff0000, 0x0000ff, 0x00ff00);
+\&    ($folks[0], $folks[-1]) = ($folks[-1], $folks[0]);
+.Ve
+.PP
+既然改变片段就会改变数组或哈希的原始值, 那么 \f(CW\*(C`foreach\*(C'\fR 结构可以部分或全部地改变数组或哈希的值.
+.PP
+.Vb 1
+\&    foreach (@array[ 4 .. 10 ]) { s/peter/paul/ }
+.Ve
+.PP
+.Vb 5
+\&    foreach (@hash{qw[key1 key2]}) {
+\&        s/^\es+//;           # trim leading whitespace
+\&        s/\es+$//;           # trim trailing whitespace
+\&        s/(\ew+)/\eu\eL$1/g;   # "titlecase" words
+\&    }
+.Ve
+.PP
+空列表的片段还是空列表, 因此:
+.PP
+.Vb 3
+\&    @a = ()[1,0];           # @a has no elements
+\&    @b = (@a)[0,1];         # @b has no elements
+\&    @c = (0,1)[2,3];        # @c has no elements
+.Ve
+.PP
+但是:
+.PP
+.Vb 2
+\&    @a = (1)[1,0];          # @a has two elements
+\&    @b = (1,undef)[1,0,2];  # @b has three elements
+.Ve
+.PP
+下例利用了这一特性,当返回空列表时循环终止:
+.PP
+.Vb 3
+\&    while ( ($home, $user) = (getpwent)[7,0]) {
+\&        printf "%-8s %s\en", $user, $home;
+\&    }
+.Ve
+.PP
+我们在前面说过, 标量上下文中的列表赋值返回值是右侧的元素个数. 空列表没有元素, 所以当口令文件读完后, 返回值是0而不是2.
+.PP
+为什么对哈希的片段使用'@'而不是'%'呢. 因为括号的类型(方括号或花括号)决定了它是数组还是哈希. 而数组或哈希的开始字符('$'或'@')表示返回值是单个值还是多个值(列表).
+.Sh "Typeglobs and Filehandles 全局类型和文件句柄"
+.IX Subsection "Typeglobs and Filehandles"
+Perl 使用叫做 全局类型 的类型来支持整个符号表项. 全局类型的前缀是*, 因为它表示所有的类型. 这在过去通常用来给函数传递数组或哈希的引用, 但是现在有了真正的引用, 这就几乎不需要了.
+.PP
+现在,全局类型的主要用途是创建符号表别名. 如下赋值:
+.PP
+.Vb 1
+\&    *this = *that;
+.Ve
+.PP
+使得$this 成为 $that的别名, @this 成为 @that的别名,%this 成为 %that的别名, &this 成为 &that的别名, 等等. 使用引用会更安全. 这样:
+.PP
+.Vb 1
+\&    local *Here::blue = \e$There::green;
+.Ve
+.PP
+暂时使 $Here::blue 成为 $There::green的别名, 但不会使 @Here::blue 成为 @There::green的别名, 也不会使 %Here::blue 成为 %There::green的别名, 等等. 参见 perlmod 中的 Symbol Tables 有多个例子. 看起来可能有些怪异, 不过这却是整个import/export系统的基础.
+.PP
+全局类型的其它用途还有, 给函数传输文件句柄或是创建新的文件句柄. 如果你要使用全局类型代替文件句柄, 可以这样做:
+.PP
+.Vb 1
+\&    $fh = *STDOUT;
+.Ve
+.PP
+或者使用真正的引用, 象这样:
+.PP
+.Vb 1
+\&    $fh = \e*STDOUT;
+.Ve
+.PP
+参见 perlsub 有关于间接句柄的多个例子.
+.PP
+全局类型也是使用local() 创建局部文件句柄的一种方法. 作用范围在当前块之内, 但是可以被传回.例如:
+.PP
+.Vb 7
+\&    sub newopen {
+\&        my $path = shift;
+\&        local  *FH;  # not my!
+\&        open   (FH, $path)          or  return undef;
+\&        return *FH;
+\&    }
+\&    $fh = newopen('/etc/passwd');
+.Ve
+.PP
+既然我们有*foo{THING} 这样的记法, 全局类型不再多用于文件句柄,但在从函数传出或向函数传入新的文件句柄时它还是必需的.因为*HANDLE{IO} 只有在HANDLE 已经是文件句柄时才起作用. 换言之, 在建立新符号表项时必须使用 *FH; *foo{THING} 是不行的. 不知道该用谁时, 使用 *FH
+.PP
+所有能创建文件句柄的函数 (open(), opendir(), pipe(), socketpair(), sysopen(), socket(), 和 accept()) ,在传递给它们的句柄是标量时,会自动创建一个匿名句柄. 这使得象open(my $fh, ...) 和 open(local $fh,...) 这样的结构可以创建一个在超出范围时可以自动关闭的句柄,如果没有另外的对它们的引用的话. 这大大减少了全局类型的使用,当需要打开一个可以到处使用的句柄时, 可以这样做:
+.PP
+.Vb 5
+\&    sub myopen {
+\&        open my $fh, "@_"
+\&             or die "Can't open '@_': $!";
+\&        return $fh;
+\&    }
+.Ve
+.PP
+.Vb 5
+\&    {
+\&        my $f = myopen("</etc/motd");
+\&        print <$f>;
+\&        # $f implicitly closed here
+\&    }
+.Ve
+.PP
+注意如果使用了初始化的标量,那么结果会有不同:\f(CW\*(C`my $fh='zzz'; open($fh, ...)\*(C'\fR 与 \f(CW\*(C`open( *{'zzz'}, ...)\*(C'\fR 等价。\f(CW\*(C`use strict 'refs'\*(C'\fR 禁止了这样做。
+.PP
+另一个创建匿名句柄的方法是用Symbol 模块或IO::Handle 模块或诸如此类的东西. These modules have the advantage of not hiding different types of the same name during the local(). 在 open() in the perlfunc manpage 的文末有个例子.(译者注:说实话,对匿名句柄我现在也是一头雾水,翻译的不当之处,请高手指出.)
+.SH "SEE ALSO 参见"
+.IX Header "SEE ALSO"
+参见 the perlvar manpage 了解 Perl的内建变量和合法变量。参见the perlref manpage, the perlsub manpage, 和 Symbol Tables in the perlmod manpage 了解全局类型和 *foo{THING} 语法。
+.SH "中文版维护人"
+.B redcandle <redcandle51 at nospam.chinaren.com>
+.SH "中文版最新更新"
+.B 2001年12月4日星期二
+.SH "中文手册页翻译计划"
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/perlfaq.1 b/src/man1/perlfaq.1
new file mode 100644
index 0000000..fd599ca
--- /dev/null
+++ b/src/man1/perlfaq.1
@@ -0,0 +1,841 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ 1"
+.TH PERLFAQ 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq \- Perl 常问问题集 (2003/01/31 17:37:17)
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+perlfaq 按照主题划分为多个文档,在本文档的末尾有一个目录。
+.Sh "Where to get the perlfaq 如何取得这份文件?"
+.IX Subsection "Where to get the perlfaq"
+这份文件会定期投到 comp.lang.perl.misc。也可以在许多网站上找到它,例如
+http://www.perldoc.com/ 还有 http://faq.perl.org/
+译者注:两只老虎工作室的位置是 http://2Ti.com/cgi-bin/2T/perl/ 还有
+ftp://www.math.ncu.edu.tw/pub/staff/chenym/FAQ/Perl/
+还有 <pailing at 2Ti.com>
+.Sh "How to contribute to the perlfaq  如何为 perlfaq 做贡献?"
+.IX Subsection "How to contribute to the perlfaq"
+你可以将更正,扩充以及建议以邮件方式发送到
+perlfaq\-workers at perl.org .  这个地址不能用来提问题,它只用来修正当前的 \s-1FAQ\s0。如果有问题那么投递到新闻组 comp.lang.perl.misc。可以在 http://cvs.perl.org/cvsweb/perlfaq/ 查看源码树 (它是在主源码树之外)。\s-1CVS\s0 仓库记录了对 \s-1FAQ\s0 的所有改变。
+.Sh "What will happen if you mail your Perl programming problems to the authors 如果把编程问题寄给作者怎么样?"
+.IX Subsection "What will happen if you mail your Perl programming problems to the authors"
+作者大概不会理会您所提的问题,除非您是在建议把一些新问题加进 FAQ去,但如果是这样的话这些问题当初就该寄到 perlfaq\-workers at perl.com 处才对。
+.PP
+您应该已经阅读了这份 FAQ 的第二部分,您应该知道 comp.lang.perl.misc 才是寻求免费建议的适当地方。如果您的问题真的很重要而且您急着要得到正确解答,那麽您该请一个顾问。
+.SH "Credits 致谢"
+.IX Header "Credits"
+最初的 perlfaq 由 Tom Christiansen 完成,接着在 Tom 和 Nathan Torkington 的合作下得以扩展。当前的文档由 perlfaq-workers (perlfaq\-workers at perl.org) 进行维护,很多人贡献了解答,更正和评注。
+.SH "Author and Copyright Information"
+.IX Header "Author and Copyright Information"
+Copyright (c) 1997\-2003 Tom Christiansen, Nathan Torkington, and 
+other contributors noted in the answers.
+.PP
+All rights reserved.
+.Sh "Bundled Distributions"
+.IX Subsection "Bundled Distributions"
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in these files
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
+.Sh "Disclaimer"
+.IX Subsection "Disclaimer"
+This information is offered in good faith and in the hope that it may
+be of use, but is not guaranteed to be correct, up to date, or suitable
+for any particular purpose whatsoever.  The authors accept no liability
+in respect of this information or its use.
+.SH "Table of Contents 目录"
+.IX Header "Table of Contents"
+.IP "perlfaq  \- 本文档" 4
+.IX Item "perlfaq  - this document"
+.PD 0
+.IP "perlfaq1 \- 有关 Perl 的一般问题" 4
+.IX Item "perlfaq1 - General Questions About Perl"
+.IP "perlfaq2 \- 获取和学习 Perl" 4
+.IX Item "perlfaq2 - Obtaining and Learning about Perl"
+.IP "perlfaq3 \- 编程工具" 4
+.IX Item "perlfaq3 - Programming Tools"
+.IP "perlfaq4 \- 数据操作" 4
+.IX Item "perlfaq4 - Data Manipulation"
+.IP "perlfaq5 \- 文件和格式" 4
+.IX Item "perlfaq5 - Files and Formats"
+.IP "perlfaq6 \- 正则表达式" 4
+.IX Item "perlfaq6 - Regular Expressions"
+.IP "perlfaq7 \- 综合的问题" 4
+.IX Item "perlfaq7 - General Perl Language Issues"
+.IP "perlfaq8 \- 系统交互" 4
+.IX Item "perlfaq8 - System Interaction"
+.IP "perlfaq9 \- 网络" 4
+.IX Item "perlfaq9 - Networking"
+.PD
+.SH "The Questions 问题"
+.IX Header "The Questions"
+.Sh "perlfaq1: 有关 Perl 的一般问题"
+.IX Subsection "perlfaq1: General Questions About Perl"
+有关 Perl 的一般的,非技术层次的问题
+.IP "\(bu" 4
+什么是 Perl?
+.IP "\(bu" 4
+谁对 Perl 提供支持?谁开发了它?为什么它是自由的?
+.IP "\(bu" 4
+我该用哪一个版本的 Perl?
+.IP "\(bu" 4
+perl4 和 perl5 各代表什麽?
+.IP "\(bu" 4
+perl6 是什么?
+.IP "\(bu" 4
+Perl的发展已稳定了吗?
+.IP "\(bu" 4
+Perl难学吗?
+.IP "\(bu" 4
+Perl和其他的程设语言比起来如何?例如 Java, Python, \s-1REXX\s0, Scheme,或 Tcl?
+.IP "\(bu" 4
+我可以用 Perl来做【某种差事】吗?
+.IP "\(bu" 4
+哪些场合下不适合用 Perl?
+.IP "\(bu" 4
+「perl」和「Perl」有什麽不同?
+.IP "\(bu" 4
+Perl程式应算是 program还是 script?
+.IP "\(bu" 4
+JAPH 是什麽?
+.IP "\(bu" 4
+到哪儿可拿到 Larry Wall 的智慧讽语 (witticisms)?
+.IP "\(bu" 4
+我要如何取信、说服我的系统管理者/上司/属下使用第 5/5.8.3 版的 Perl,而不去用其他的语言?
+.Sh "perlfaq2: 获取和学习 Perl"
+.IX Subsection "perlfaq2: Obtaining and Learning about Perl"
+从哪里寻找 Perl 的源程序和文档,支持以及相关事项
+.IP "\(bu" 4
+哪些平台上有 Perl?要到哪里去找?
+.IP "\(bu" 4
+要如何取得以二进制形式发行的 Perl?
+.IP "\(bu" 4
+我的系统里没有 C编译器。要如何编译 perl?
+.IP "\(bu" 4
+我直接将 Perl的执行档从一台机器上复制到另一台机器上,但是程式跑不起来。
+.IP "\(bu" 4
+我抓回了原始码,试着编译 perl,但是 gdbm/dynamic loading/malloc/linking/...部分失败。要如何将它搞定?
+.IP "\(bu" 4
+Perl有哪些模组和延伸? CPAN是什麽? CPAN/src/...又代表什麽?
+.IP "\(bu" 4
+是不是有一个经 ISO【国际标准局】或 ANSI【美国国家标准局】认可的 Perl版本?
+.IP "\(bu" 4
+Perl的相关资料要上哪儿找?
+.IP "\(bu" 4
+USENET上有哪些专门讨论 Perl的新闻讨论群?问题该投到哪里?
+.IP "\(bu" 4
+如果我想投程式原始码,该投到哪个板子上?
+.IP "\(bu" 4
+Perl 书籍
+.IP "\(bu" 4
+和 Perl 有关的杂志
+.IP "\(bu" 4
+网路上的 Perl:接触 FTP 和 WWW
+.IP "\(bu" 4
+有哪些讨论 Perl 的邮件列表?
+.IP "\(bu" 4
+comp.lang.perl.misc 的档案库
+.IP "\(bu" 4
+如何购买商业版本的 Perl?
+.IP "\(bu" 4
+如果发现 bugs要向何处报告?
+.IP "\(bu" 4
+什麽是 perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
+.Sh "perlfaq3: 编程工具"
+.IX Subsection "perlfaq3: Programming Tools"
+编程工具和编程支持
+.IP "\(bu" 4
+我如何作 (任何事)?
+.IP "\(bu" 4
+如何以交互的方式使用 Perl?
+.IP "\(bu" 4
+有 Perl shell吗?
+.IP "\(bu" 4
+怎样查找我的系统中安装了哪些模块
+.IP "\(bu" 4
+如何替我的 Perl 程式除虫?
+.IP "\(bu" 4
+如何检测 (profile) 我的 perl 程式?
+.IP "\(bu" 4
+如何替我的 Perl程式作交叉参考 (cross-reference)?
+.IP "\(bu" 4
+有 Perl专用的美化列印程式 (pretty-printer)吗?
+.IP "\(bu" 4
+有 Perl的 ctags 吗?
+.IP "\(bu" 4
+有没有一个 \s-1IDE\s0 或图形界面的 Perl 编辑器?
+.IP "\(bu" 4
+哪儿有 vi 用的 Perl 宏?
+.IP "\(bu" 4
+给 emacs用的 perl模式又要去哪抓呢?
+.IP "\(bu" 4
+如何在 Perl里使用 curses?
+.IP "\(bu" 4
+X或 Tk如何与 Perl配合呢?
+.IP "\(bu" 4
+如何不靠 CGI或 Tk 帮助作出简单的目录(选单)?
+.IP "\(bu" 4
+如何让我的 Perl程式跑得更快些?
+.IP "\(bu" 4
+如何让我的 Perl 程序少用一些内存?
+.IP "\(bu" 4
+把局部变量的引用返回是不安全的做法吗?
+.IP "\(bu" 4
+我如何释放一个数组或散列以缩小我的程式尺寸?
+.IP "\(bu" 4
+如何让我的 CGI脚本 (script)执行起来更有效率?
+.IP "\(bu" 4
+如何隐藏 Perl程式的原始码?
+.IP "\(bu" 4
+如何把我的 Perl程式码编译成 byte code或 C?
+.IP "\(bu" 4
+怎样把 Perl 编译成 Java?
+.IP "\(bu" 4
+如何才能让 \f(CW\*(C`#!perl\*(C'\fR 在 [\s-1MS\-DOS\s0,NT,...] 下起作用?
+.IP "\(bu" 4
+我能利用命令行写出有用的程式吗?
+.IP "\(bu" 4
+为何一行的 perl 程式无法在我的 DOS/Mac/VMS系统上运作?
+.IP "\(bu" 4
+我得去哪里学 Perl的 CGI或是 Web程式设计呢?
+.IP "\(bu" 4
+从哪里可以学习面向对象的 Perl 编程?
+.IP "\(bu" 4
+从哪里可以学习将 Perl 与 C 连接?[h2xs, xsubpp]
+.IP "\(bu" 4
+我已经阅读了 perlembed,perlguts 等等,但是还是不能在我的 C 程序中嵌入 perl;我作错了什么?
+.IP "\(bu" 4
+我试着运行我的脚本时,看到了这样的消息。它是什么意思?
+.IP "\(bu" 4
+什么是 MakeMaker?
+.Sh "perlfaq4: 数据操作"
+.IX Subsection "perlfaq4: Data Manipulation"
+操纵数字,日期,字符串,数组,散列以及各种其他数据类型。
+.IP "\(bu" 4
+Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
+.IP "\(bu" 4
+Why isn't my octal data interpreted correctly?
+.IP "\(bu" 4
+Does Perl have a \fIround()\fR function?  What about \fIceil()\fR and \fIfloor()\fR?  Trig functions?
+.IP "\(bu" 4
+How do I convert between numeric representations?
+.IP "\(bu" 4
+Why doesn't & work the way I want it to?
+.IP "\(bu" 4
+How do I multiply matrices?
+.IP "\(bu" 4
+How do I perform an operation on a series of integers?
+.IP "\(bu" 4
+How can I output Roman numerals?
+.IP "\(bu" 4
+Why aren't my random numbers random?
+.IP "\(bu" 4
+How do I get a random number between X and Y?
+.IP "\(bu" 4
+How do I find the day or week of the year?
+.IP "\(bu" 4
+How do I find the current century or millennium?
+.IP "\(bu" 4
+How can I compare two dates and find the difference?
+.IP "\(bu" 4
+How can I take a string and turn it into epoch seconds?
+.IP "\(bu" 4
+How can I find the Julian Day?
+.IP "\(bu" 4
+How do I find yesterday's date?
+.IP "\(bu" 4
+Does Perl have a Year 2000 problem?  Is Perl Y2K compliant?
+.IP "\(bu" 4
+How do I validate input?
+.IP "\(bu" 4
+How do I unescape a string?
+.IP "\(bu" 4
+How do I remove consecutive pairs of characters?
+.IP "\(bu" 4
+How do I expand function calls in a string?
+.IP "\(bu" 4
+How do I find matching/nesting anything?
+.IP "\(bu" 4
+How do I reverse a string?
+.IP "\(bu" 4
+How do I expand tabs in a string?
+.IP "\(bu" 4
+How do I reformat a paragraph?
+.IP "\(bu" 4
+How can I access or change N characters of a string?
+.IP "\(bu" 4
+How do I change the Nth occurrence of something?
+.IP "\(bu" 4
+How can I count the number of occurrences of a substring within a string?
+.IP "\(bu" 4
+How do I capitalize all the words on one line?
+.IP "\(bu" 4
+How can I split a [character] delimited string except when inside [character]?
+.IP "\(bu" 4
+How do I strip blank space from the beginning/end of a string?
+.IP "\(bu" 4
+How do I pad a string with blanks or pad a number with zeroes?
+.IP "\(bu" 4
+How do I extract selected columns from a string?
+.IP "\(bu" 4
+How do I find the soundex value of a string?
+.IP "\(bu" 4
+How can I expand variables in text strings?
+.IP "\(bu" 4
+What's wrong with always quoting \*(L"$vars\*(R"?
+.IP "\(bu" 4
+Why don't my <<\s-1HERE\s0 documents work?
+.IP "\(bu" 4
+What is the difference between a list and an array?
+.IP "\(bu" 4
+What is the difference between \f(CW$array\fR[1] and \f(CW at array\fR[1]?
+.IP "\(bu" 4
+How can I remove duplicate elements from a list or array?
+.IP "\(bu" 4
+How can I tell whether a certain element is contained in a list or array?
+.IP "\(bu" 4
+How do I compute the difference of two arrays?  How do I compute the intersection of two arrays?
+.IP "\(bu" 4
+How do I test whether two arrays or hashes are equal?
+.IP "\(bu" 4
+How do I find the first array element for which a condition is true?
+.IP "\(bu" 4
+How do I handle linked lists?
+.IP "\(bu" 4
+How do I handle circular lists?
+.IP "\(bu" 4
+How do I shuffle an array randomly?
+.IP "\(bu" 4
+How do I process/modify each element of an array?
+.IP "\(bu" 4
+How do I select a random element from an array?
+.IP "\(bu" 4
+How do I permute N elements of a list?
+.IP "\(bu" 4
+How do I sort an array by (anything)?
+.IP "\(bu" 4
+How do I manipulate arrays of bits?
+.IP "\(bu" 4
+Why does \fIdefined()\fR return true on empty arrays and hashes?
+.IP "\(bu" 4
+How do I process an entire hash?
+.IP "\(bu" 4
+What happens if I add or remove keys from a hash while iterating over it?
+.IP "\(bu" 4
+How do I look up a hash element by value?
+.IP "\(bu" 4
+How can I know how many entries are in a hash?
+.IP "\(bu" 4
+How do I sort a hash (optionally by value instead of key)?
+.IP "\(bu" 4
+How can I always keep my hash sorted?
+.IP "\(bu" 4
+What's the difference between \*(L"delete\*(R" and \*(L"undef\*(R" with hashes?
+.IP "\(bu" 4
+Why don't my tied hashes make the defined/exists distinction?
+.IP "\(bu" 4
+How do I reset an \fIeach()\fR operation part-way through?
+.IP "\(bu" 4
+How can I get the unique keys from two hashes?
+.IP "\(bu" 4
+How can I store a multidimensional array in a \s-1DBM\s0 file?
+.IP "\(bu" 4
+How can I make my hash remember the order I put elements into it?
+.IP "\(bu" 4
+Why does passing a subroutine an undefined element in a hash create it?
+.IP "\(bu" 4
+How can I make the Perl equivalent of a C structure/\*(C+ class/hash or array of hashes or arrays?
+.IP "\(bu" 4
+How can I use a reference as a hash key?
+.IP "\(bu" 4
+How do I handle binary data correctly?
+.IP "\(bu" 4
+How do I determine whether a scalar is a number/whole/integer/float?
+.IP "\(bu" 4
+How do I keep persistent data across program calls?
+.IP "\(bu" 4
+How do I print out or copy a recursive data structure?
+.IP "\(bu" 4
+How do I define methods for every class/object?
+.IP "\(bu" 4
+How do I verify a credit card checksum?
+.IP "\(bu" 4
+How do I pack arrays of doubles or floats for \s-1XS\s0 code?
+.Sh "perlfaq5: 文件和格式"
+.IX Subsection "perlfaq5: Files and Formats"
+I/O and the \*(L"f\*(R" issues: filehandles, flushing, formats, and footers.
+.IP "\(bu" 4
+How do I flush/unbuffer an output filehandle?  Why must I do this?
+.IP "\(bu" 4
+How do I change one line in a file/delete a line in a file/insert a line in the middle of a file/append to the beginning of a file?
+.IP "\(bu" 4
+How do I count the number of lines in a file?
+.IP "\(bu" 4
+How can I use Perl's \f(CW\*(C`\-i\*(C'\fR option from within a program?
+.IP "\(bu" 4
+How do I make a temporary file name?
+.IP "\(bu" 4
+How can I manipulate fixed-record-length files?
+.IP "\(bu" 4
+How can I make a filehandle local to a subroutine?  How do I pass filehandles between subroutines?  How do I make an array of filehandles?
+.IP "\(bu" 4
+How can I use a filehandle indirectly?
+.IP "\(bu" 4
+How can I set up a footer format to be used with \fIwrite()\fR?
+.IP "\(bu" 4
+How can I \fIwrite()\fR into a string?
+.IP "\(bu" 4
+How can I output my numbers with commas added?
+.IP "\(bu" 4
+How can I translate tildes (~) in a filename?
+.IP "\(bu" 4
+How come when I open a file read-write it wipes it out?
+.IP "\(bu" 4
+Why do I sometimes get an \*(L"Argument list too long\*(R" when I use <*>?
+.IP "\(bu" 4
+Is there a leak/bug in \fIglob()\fR?
+.IP "\(bu" 4
+How can I open a file with a leading \*(L">\*(R" or trailing blanks?
+.IP "\(bu" 4
+How can I reliably rename a file?
+.IP "\(bu" 4
+How can I lock a file?
+.IP "\(bu" 4
+Why can't I just open(\s-1FH\s0, ">file.lock")?
+.IP "\(bu" 4
+I still don't get locking.  I just want to increment the number in the file.  How can I do this?
+.IP "\(bu" 4
+All I want to do is append a small amount of text to the end of a file.  Do I still have to use locking?
+.IP "\(bu" 4
+How do I randomly update a binary file?
+.IP "\(bu" 4
+How do I get a file's timestamp in perl?
+.IP "\(bu" 4
+How do I set a file's timestamp in perl?
+.IP "\(bu" 4
+How do I print to more than one file at once?
+.IP "\(bu" 4
+How can I read in an entire file all at once?
+.IP "\(bu" 4
+How can I read in a file by paragraphs?
+.IP "\(bu" 4
+How can I read a single character from a file?  From the keyboard?
+.IP "\(bu" 4
+How can I tell whether there's a character waiting on a filehandle?
+.IP "\(bu" 4
+How do I do a \f(CW\*(C`tail \-f\*(C'\fR in perl?
+.IP "\(bu" 4
+How do I \fIdup()\fR a filehandle in Perl?
+.IP "\(bu" 4
+How do I close a file descriptor by number?
+.IP "\(bu" 4
+Why can't I use \*(L"C:\etemp\efoo\*(R" in \s-1DOS\s0 paths?  What doesn't `C:\etemp\efoo.exe` work?
+.IP "\(bu" 4
+Why doesn't glob(\*(L"*.*\*(R") get all the files?
+.IP "\(bu" 4
+Why does Perl let me delete read-only files?  Why does \f(CW\*(C`\-i\*(C'\fR clobber protected files?  Isn't this a bug in Perl?
+.IP "\(bu" 4
+How do I select a random line from a file?
+.IP "\(bu" 4
+Why do I get weird spaces when I print an array of lines?
+.Sh "perlfaq6: 正则表达式"
+.IX Subsection "perlfaq6: Regular Expressions"
+模式匹配和正则表达式。
+.IP "\(bu" 4
+我该如何使用正规表示式才不至於写出不合语法且难以维护的程式码?
+.IP "\(bu" 4
+我无法匹配超过一行的内容,哪里出了问题?
+.IP "\(bu" 4
+我如何取出位於不同行的两个模式间之内容?
+.IP "\(bu" 4
+我把一个正规表示式放入 $/但却没有用。错在哪里?
+.IP "\(bu" 4
+如何在 LHS端【译注:式子中运算元左端部份】作不区别大小写式的替换,但在 RHS端【右端】保留大小写区别?
+.IP "\(bu" 4
+如何使 \f(CW\*(C`\ew\*(C'\fR 对应到附重音记号 (accented)的字元?
+.IP "\(bu" 4
+如何作一个适合不同 locale【译注:语言环境,国家地区在文字编码上各自的惯例】的 \f(CW\*(C`/[a\-zA\-Z]/\*(C'\fR 对应?
+.IP "\(bu" 4
+在一个正规表示式里如何引入 (quote) 变量?
+.IP "\(bu" 4
+\f(CW\*(C`/o\*(C'\fR 到底是干麽用的?
+.IP "\(bu" 4
+如何使用正规表示式将档案中 C语言样式的注解删掉?
+.IP "\(bu" 4
+我能用 Perl的正规表示式去对应成对的符号吗?
+.IP "\(bu" 4
+有人说正规表示式很贪婪,那是什麽意思?该如何避免它所带来的问题?
+.IP "\(bu" 4
+如何处理每一行的每个字?
+.IP "\(bu" 4
+我如何印出文字出现频率或行出现频率的纲要?
+.IP "\(bu" 4
+如何能作近似对应?
+.IP "\(bu" 4
+我如何有效率地一次对应多个正规表示式?
+.IP "\(bu" 4
+为何我用 \f(CW\*(C`\eb\*(C'\fR 作字界搜寻时会失败呢?
+.IP "\(bu" 4
+为什麽每当我用 $&, $`,或 $'时程式的速度就慢下来了呢?
+.IP "\(bu" 4
+正规表示式中的 \f(CW\*(C`\eG\*(C'\fR 能给我什麽好处?
+.IP "\(bu" 4
+Perl正规表示引擎是 DFA 或 NFA?它们是 POSIX 相容的吗?
+.IP "\(bu" 4
+在无返回值上下文中用 grep或 map有什麽不对?
+.IP "\(bu" 4
+如何对应多位元组字母所构成的字串?
+.IP "\(bu" 4
+如何匹配用户提供的模式?
+.Sh "perlfaq7: 综合的问题"
+.IX Subsection "perlfaq7: General Perl Language Issues"
+综合的 Perl 语言问题,不适于在其他所有段落中讨论的问题
+.IP "\(bu" 4
+我能拿到 Perl的 BNF/yacc/RE吗?
+.IP "\(bu" 4
+$@%*这些符号是什麽意思?我怎麽知道何时该使用他们呢?
+.IP "\(bu" 4
+字串加引号或使用分号及逗号是否绝对必要/还是完全没必要?
+.IP "\(bu" 4
+我如何跳过一些传回值?
+.IP "\(bu" 4
+我如何暂时滤掉警告讯息?
+.IP "\(bu" 4
+什麽是一个扩充 (extension)?
+.IP "\(bu" 4
+为何 Perl运算子的优先顺序和 C的不一样?
+.IP "\(bu" 4
+我如何声明/创建一个数据结构?
+.IP "\(bu" 4
+如何创建一个模块?
+.IP "\(bu" 4
+如何创建一个类?
+.IP "\(bu" 4
+如何知道一个变量是否是污染的?
+.IP "\(bu" 4
+什么是闭包?
+.IP "\(bu" 4
+什么是变量自杀,我应该怎样防止它?
+.IP "\(bu" 4
+如何传递/返回一个{函数 Function, 文件句柄 FileHandle, 数组 Array, 散列 Hash, 方法 Method, 正则表达式 Regex}?
+.IP "\(bu" 4
+如何创建一个静态变量?
+.IP "\(bu" 4
+动态和静态作用域有什么区别?\fIlocal()\fR 和 \fImy()\fR 呢?
+.IP "\(bu" 4
+在存在同名内部变量的作用域中,如何存取一个动态变量?
+.IP "\(bu" 4
+深连接和浅连接有什么不同?
+.IP "\(bu" 4
+为什么 "my($foo) = <\s-1FILE\s0>;" 不工作?
+.IP "\(bu" 4
+如何重定义一个内建函数,操作符 或者方法?
+.IP "\(bu" 4
+调用函数时 &foo 和 \fIfoo()\fR 的形式有什么不同?
+.IP "\(bu" 4
+如何创建一个分支语句?
+.IP "\(bu" 4
+如何捕获对未定义变量,函数或方法的访问?
+.IP "\(bu" 4
+为什么找不到包含在同一个文件中的方法?
+.IP "\(bu" 4
+如何找到当前的包?
+.IP "\(bu" 4
+如何注释掉大块的 perl 代码?
+.IP "\(bu" 4
+如何清空一个包?
+.IP "\(bu" 4
+如何使用变量值作为一个变量名?
+.IP "\(bu" 4
+\*(L"bad interpreter\*(R" 是什么意思?
+.Sh "perlfaq8: 系统交互"
+.IX Subsection "perlfaq8: System Interaction"
+进程间通信 (\s-1IPC\s0), 用户界面控制 (键盘,屏幕和指点设备)。
+.IP "\(bu" 4
+如何找出正在运行的操作系统?
+.IP "\(bu" 4
+为什么 \fIexec()\fR 不返回?
+.IP "\(bu" 4
+如何对键盘/萤幕/滑鼠做些花样?
+.IP "\(bu" 4
+如何打印有颜色的内容?
+.IP "\(bu" 4
+如何只读取一个键而不等待按下回车?
+.IP "\(bu" 4
+如何检测键盘上已有输入?
+.IP "\(bu" 4
+如何清屏?
+.IP "\(bu" 4
+如何获取屏幕大小?
+.IP "\(bu" 4
+如何向使用者询问密码?
+.IP "\(bu" 4
+如何读写串口?
+.IP "\(bu" 4
+如何解码加密的口令文件?
+.IP "\(bu" 4
+如何在后台开启进程?
+.IP "\(bu" 4
+如何截获控制字符/信号?
+.IP "\(bu" 4
+在 Unix 系统中如何修改 shadow 文件?
+.IP "\(bu" 4
+如何设置时间和日期?
+.IP "\(bu" 4
+如何 \fIsleep()\fR 或 \fIalarm()\fR 少于一秒的时间?
+.IP "\(bu" 4
+如何测度少于一秒的时间?
+.IP "\(bu" 4
+如何做 atexit()或 setjmp()/longjmp()的动作?(异常处理)
+.IP "\(bu" 4
+为何我的 sockets程式在 System V (Solaris)系统下不能用?「不支持的协议」这个错误讯息又是什麽意思?
+.IP "\(bu" 4
+如何从 Perl里呼叫系统中独特的 C函数?
+.IP "\(bu" 4
+在哪里可以找引入档来做 ioctl()或 syscall()?
+.IP "\(bu" 4
+为何 setuid perl程式会抱怨关於系统核心的问题?
+.IP "\(bu" 4
+如何打开对某程式既输入又输出的管道 (pipe)?
+.IP "\(bu" 4
+为何用 system()却得不到一个指令的输出呢?
+.IP "\(bu" 4
+如何补捉外部指令的 STDERR?
+.IP "\(bu" 4
+为何当管道开启失败时 open()不会传回错误讯息?
+.IP "\(bu" 4
+在输出值是空的情境里使用反向引号有何不对?
+.IP "\(bu" 4
+如何不经过 shell处理来呼叫反向引号?
+.IP "\(bu" 4
+为何给了 EOF(Unix上是 ^D,MS-DOS上是 ^Z)後我的程式就不能从 STDIN读取东西了呢?
+.IP "\(bu" 4
+如何把 shell程式转成 perl?
+.IP "\(bu" 4
+perl能处理 telnet或 ftp 会话吗?
+.IP "\(bu" 4
+如何在 Perl里达到 Expect的功能?
+.IP "\(bu" 4
+有没有可能将 perl的指令列隐藏起来,以躲避像 "ps"之类的程式?
+.IP "\(bu" 4
+我在 perl script里 {更动目录,更改我的使用环境}。为何这些改变在程式执行完後就消失了呢?如何让我做的修改显露出来?
+.IP "\(bu" 4
+如何关闭一个程序的文件句柄而不用等它完成呢?
+.IP "\(bu" 4
+如何 fork 一个守护进程?
+.IP "\(bu" 4
+如何知道自己是否在交互地运行?
+.IP "\(bu" 4
+如何为缓慢的事件设置超时?
+.IP "\(bu" 4
+如何设置 \s-1CPU\s0 限额?
+.IP "\(bu" 4
+如何避免在 Unix 系统中产生僵尸进程?
+.IP "\(bu" 4
+如何使用 \s-1SQL\s0 数据库?
+.IP "\(bu" 4
+如何使 \fIsystem()\fR 在收到 control\-C 时退出?
+.IP "\(bu" 4
+如何无阻塞地打开一个文件?
+.IP "\(bu" 4
+如何从 \s-1CPAN\s0 安装模块?
+.IP "\(bu" 4
+require 和 use 的区别是什么?
+.IP "\(bu" 4
+如何设置我自己的模块/库路径?
+.IP "\(bu" 4
+如何将我自己的程序的路径加入到模块/库搜索路径中?
+.IP "\(bu" 4
+如何在运行时将一个目录加入到我的 include 路径中?
+.IP "\(bu" 4
+什么是 socket.ph,从哪儿可以得到它?
+.Sh "perlfaq9: 网络"
+.IX Subsection "perlfaq9: Networking"
+网络通信,互联网以及少量有关 web 的内容
+.IP "\(bu" 4
+一个 \s-1CGI\s0 脚本的回应的正确格式是什么?
+.IP "\(bu" 4
+我的 \s-1CGI\s0 脚本从命令行执行正常,但是在浏览器中不行 (500 Server Error)。
+.IP "\(bu" 4
+如何从 \s-1CGI\s0 程序中得到好一点的错误提示?
+.IP "\(bu" 4
+如何将字符串中的 \s-1HTML\s0 删除?
+.IP "\(bu" 4
+如何展开 URL?
+.IP "\(bu" 4
+如何从用户的机器上下载文件?如何打开其他机器上的文件?
+.IP "\(bu" 4
+如何在 \s-1HTML\s0 添加一个弹出菜单?
+.IP "\(bu" 4
+如何获取 \s-1HTML\s0 文件?
+.IP "\(bu" 4
+如何根据提交的内容自动生成一个 \s-1HTML\s0 ?
+.IP "\(bu" 4
+如何解码或创建 web 中的 %\-encoding?
+.IP "\(bu" 4
+如何重定向到其他页面?
+.IP "\(bu" 4
+如何为我的网页加上密码?
+.IP "\(bu" 4
+如何用 Perl 修改我的 .htpasswd 和 .htgroup 文件?
+.IP "\(bu" 4
+如何确保用户不会在表单中输入使我的 CGI 脚本作坏事的值?
+.IP "\(bu" 4
+如何解释一个邮件头?
+.IP "\(bu" 4
+如何解码一个 CGI 表单?
+.IP "\(bu" 4
+如何检测一个有效的邮件地址?
+.IP "\(bu" 4
+如何解码一个 \s-1MIME/BASE64\s0 字符串?
+.IP "\(bu" 4
+如何返回用户的邮件地址?
+.IP "\(bu" 4
+如何发邮件?
+.IP "\(bu" 4
+如何使用 \s-1MIME\s0 来为邮件消息增加附件?
+.IP "\(bu" 4
+如何读邮件?
+.IP "\(bu" 4
+如何找到我的主机名/域名/IP 地址?
+.IP "\(bu" 4
+如何获取一篇新闻文章或活动的新闻组?
+.IP "\(bu" 4
+如何获取/上传一个 \s-1FTP\s0 文件?
+.IP "\(bu" 4
+如何进行远程过程调用 \s-1RPC\s0 ?
+.SH "译者"
+.B 萧百龄,两只老虎工作室,bbbush
diff --git a/src/man1/perlfaq1.1 b/src/man1/perlfaq1.1
new file mode 100644
index 0000000..a086a44
--- /dev/null
+++ b/src/man1/perlfaq1.1
@@ -0,0 +1,286 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ1 1"
+.TH PERLFAQ1 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq1 \- 有关 Perl 的一般问题 (2003/11/23 08:02:29)
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+有关 Perl 的一般的,非技术层次的问题
+.Sh "What is Perl? 什么是 Perl"
+.IX Subsection "What is Perl?"
+Perl是一个高阶程式语言,由 Larry Wall和其他许多人所写,融合了许多语言的特性。它主要是由无所不在的 C语言,其次由 sed、awk,UNIX shell 和至少十数种其他的工具和语言所演化而来。Perl对 process、档案,和文字有很强的处理、变换能力,因此举凡有关快速原型设计、系统工具、软体工具、系统管理、资料库连结、图像程式设计、网路连结,和 WWW程式设计等之类的任务,都特别 适合用 Perl来做。这些特长不但使 Perl成为系统维护管理者和 CGI作者的宠儿,就连数学家、遗传学家、新闻从业者,甚至企业管理者也都用 Perl,所以或许您也该用。
+.Sh "谁对 Perl 提供支持?谁开发了它?为什么它是自由的?"
+.IX Subsection "Who supports Perl?  Who develops it?  Why is it free?"
+Perl自由开放的发行方式要归功於发烧前的 Internet的传统文化及其作者 Larry Wall。Perl是由使用者提供支援。现在 Perl的核心、标准程式库、选择性安装的模组,以及您现在正在阅读的使用说明都出自於义务者之手。详情请见 perl原始码发行版中所附的 README档案底部的私人注记。
+.PP
+值得一提的是,核心发展小组(称为 Perl Porters)的成员是一群高度热情奉献的人仕,全心投入发展出比您所能想像、用钱能买得到还要更好的免费软体。您可经由 http://www.xray.mpe.mpg.de/mailing\-lists/perl5\-porters/http://archive.develooper.com/perl5\-porters@perl.org/ 或者新闻服务器 nntp://nntp.perl.org/perl.perl5.porters 或它的 web 界面 http://nntp.perl.org/group/perl.perl5.porters , 也可以订阅邮件列表 perl5\-porters\-request at perl.org (没有主题的空消息也是可以的) 取得关於新近发展计画 的信息。
+.PP
+尽管 GNU计画将 Perl囊括在它的发行中,但是没有叫「GNU Perl」这样的东西。 Perl既非自由软体基金会所创,亦非由其负责维护。Perl的发行条款同时也较 GNU软体更来得开放。
+.PP
+如果您愿意,您可以购买商业性的 Perl支援。但对大多数使用者来说,非正式性的支援通常已相当足够。详情请见「到哪里可买到商业性的 Perl支援」一问的回 答。
+.Sh "Which version of Perl should I use? 我该用哪一个版本的 Perl?"
+.IX Subsection "Which version of Perl should I use?"
+您绝对该用第五版。第四版不但老旧、功能较局限,而且已经不再维护了。它最後一次的修正 (4.036)是在 1992年。Perl最新的量产发行版本是5.8.2 (但是 5.005_03 和 5.6.2 也被支持)。等到您读这篇文章时,我们可能已经又发行了几个正式的除错版本,同时大概又会有些替下一版 路的实验版出来。本文由此开始凡提及 Perl语言,皆以目前的量产发行为准,除非另外特别注明。所有 5.004 之前的版本都有 buffer 溢出漏洞,是非常严重的问题。
+.Sh "perl4 和 perl5 各代表什麽?"
+.IX Subsection "What are perl4 and perl5?"
+perl4 和 perl5 是对 Perl程式语言的两个不同版本的非正式称呼,因为说「perl5」要比说「第 5(.004)版的 Perl」要来得简单。但是有些人误将其会意为:perl5是一个单独的语言;这是不正确的。perl5只不过是对第五个主要发行版本(1994年 10 月)常用的称呼罢了。就像 perl4是指第四个主要发行(1991年 3 月),还有 perl1(1988年 1月)、perl2(1988年 6 月),以及 perl3(1989年 10 月)。
+.PP
+5.0的发行基本上是从零开始,所有程式码完全重新写过的版本。它已经被模组化、物件导向化、微调、精简化,及效率化,以致程式码几乎已变得和原来的不相同了。尽管如此,使用介面大致上仍然相同,而且和先前的版本之间保持了很高的 一致性。参见 perltrap 中的 \*(L"Perl4 to Perl5 Traps\*(R" .
+.PP
+为了避免「perl5是什麽语言?」这类的混淆,有些人索性完全避免「perl5」,而单用「perl」来指称最近的 perl版本。其实用不着这麽累就是了。
+.PP
+参见 perlhist 中 Perl 版本的历史
+.Sh "What is Ponie? 什么是 Ponie"
+.IX Subsection "What is Ponie?"
+At The O'Reilly Open Source Software Convention in 2003, Artur
+Bergman, Fotango, and The Perl Foundation announced a project to
+run perl5 on the Parrot virtual machine named Ponie. Ponie stands for
+Perl On New Internal Engine.  The Perl 5.10 language implementation
+will be used for Ponie, and there will be no language level
+differences between perl5 and ponie.  Ponie is not a complete rewrite
+of perl5.
+.PP
+For more details, see http://www.poniecode.org/
+.Sh "What is perl6?"
+.IX Subsection "What is perl6?"
+At The Second O'Reilly Open Source Software Convention, Larry Wall
+announced Perl6 development would begin in earnest. Perl6 was an oft
+used term for Chip Salzenberg's project to rewrite Perl in \*(C+ named
+Topaz. However, Topaz provided valuable insights to the next version
+of Perl and its implementation, but was ultimately abandoned.
+.PP
+If you want to learn more about Perl6, or have a desire to help in
+the crusade to make Perl a better place then peruse the Perl6 developers
+page at http://dev.perl.org/perl6/ and get involved.
+.PP
+Perl6 is not scheduled for release yet, and Perl5 will still be supported
+for quite awhile after its release. Do not wait for Perl6 to do whatever
+you need to do.
+.PP
+\&\*(L"We're really serious about reinventing everything that needs reinventing.\*(R"
+\&\-\-Larry Wall
+.Sh "Perl的发展已稳定了吗?"
+.IX Subsection "How stable is Perl?"
+融合了除错和新功能的量产发行在推出前皆经过广泛的测试。自 5.000发行以来,我们平均一年才出版一次量产发行。
+.PP
+Larry 和 Perl发展小组有时候会修改语言的核心部分,但总是尽一切力量让新版 和旧版保持一致。因此,尽管不是所有的 perl4 scripts都能在 perl5 之下跑得天衣无缝,因升级而导致按照先前版本的 perl所写的程式无法使用的情形几乎不曾发生(除非该程式倚赖已经被去除的 bugs,或使用了极少数新加入的指令来 命名)。
+.Sh "Perl难学吗?"
+.IX Subsection "Is Perl difficult to learn?"
+Perl不但容易上手,也容易继续学下去。它看起来和大多数您可能已接触过的语言一样。所以如果您只写过 C 程式、或 awk script、shell script,或甚至只是 Excel的 macro 宏,您已经在半路了。
+.PP
+大多数的任务只需要 Perl语言的一小部分即可完成。发展 Perl程式的座右铭即是「不只一种方法可以达到」(TMTOWTDI; There's More Than One Way To Do It, 有时读作「time today」)。因此,Perl的学习曲线是既平(易学)且长的(如果您要的话,有一大堆够您学的)
+.PP
+最後,Perl(通常)算是解释执行的语言。也就是说您写了程式後不需经由一道中间的编码过程即可测试;这让您可以很快、很容易地测试及除错。这个方便试验的特性又让学习曲线变得更加平坦。
+.PP
+有助於修习 Perl 的一些事:UNIX经验、对几乎是任何一种程式语言的经验、了解 regular expressions(正规表示法),以及看得懂旁人写的程式的能力。如果您有什麽想用 Perl来做的事,那麽可能已经有前人做过了,而且实例通常可免费取得。还有别忘了新的 Perl模组。模组在这份 FAQ 的第叁部分有详细的讨论,还有【别忘了您的好朋友】 CPAN,这会在第二部分谈到。
+.Sh "How does Perl compare with other languages like Java, Python, \s-1REXX\s0, Scheme, or Tcl?"
+.IX Subsection "Perl和其他的程设语言比起来如何?例如 Java, Python, REXX, Scheme,或Tcl?"
+Perl在某些地方比较好,某些地方较差。精确地说到底哪些方面好或坏通常视个人偏好而定,所以在新闻讨论群中问这种问题很可能会掀起一场毫无建设性的圣战。
+.PP
+要比较各语言的异同最好的方法是试着用不同的语言写功能相同的程式。各程式语言都各有属於它们各自的新闻讨论群,您可从中学习(但希望您不是去和人辨论吵 架的)。
+.PP
+如果还是不听劝告的话,可以去看 http://language.perl.com/versus/ 的语言比较
+.Sh "我可以用 Perl来做【某种差事】吗?"
+.IX Subsection "Can I do [task] in Perl?"
+Perl有足够的弹性和扩充性,从只需要写短短一行的档案处理工作到复杂的系统,几乎没有什麽做不到的。对有些人来说,Perl的是拿来做写 shell程式的理想替代品。其他人则用高阶的 Perl来替代处理许多原先需要用 C或 C++ 一类的低阶语言来达到的程式。哪些差事决定要用 Perl来处理,这一切都得看您(或许还有您的经理...)。
+.PP
+如果您有一个提供 API的程式库的话,您可用 C或 C++来写一个 Perl 延伸,然後便可透过它将程式库中的任何一部分动态载入您的 Perl主程式中。您也可以 反过来,用 C或 C++来写主程式,然後以即时动态载入的方式插入一些Perl程式码,产生一个威力强大的应用程式。参见 perlembed.
+.PP
+话虽如此,对解决某些特定的问题,使用小型、专精,专为特殊用途设计的语言总 是比较方便的。 Perl的设计是尽力地满足各种不同人的需要,因而不特别偏颇任何人。至於特殊功能语言的例子,随便举两个,譬如 prolog 和 matlab 便是。
+.Sh "哪些场合下不适合用 Perl?"
+.IX Subsection "When shouldn't I program in Perl?"
+当您的主管禁止的时候 -- 不过请务必考虑把他们换掉 :\-)。
+.PP
+说真的,如果您已经有用另一个语言写成的应用程式(而且写得很好)的时候,或者是已经有替某些特定的工作设计的语言(例如:prolog, make),这个时候就不需要用 Perl。
+.PP
+由於种种因素,Perl大概不太适合拿来做即时内嵌式系统、属於低层级的作业系统发展工作,例如周边设备的 drivers或环境转换码、复杂的多线共用记忆体应用程式,或非常大的应用程式。您会发现 Perl 本身便不是以 Perl写成的。
+.PP
+刚出炉的 Perl纯码编译器或许可帮忙去除一些上述的限制,但您要了解:Perl在本质上仍是一活性变数语言 (dynamically typed language),而非固性变数 (statically typed)。只要您不将核电厂或脑科手术监视器所用的程式放心地用 Perl来写,您自然就不会闯祸遭殃。这样 Larry晚上也可以睡得安稳些了 :\-)。
+.ie n .Sh "「perl」和「Perl」有什麽不同?"
+.el .Sh "What's the difference between ``perl'' and ``Perl''?"
+.IX Subsection "What's the difference between perl and Perl?"
+二者差一个位元。喔,您不是说在 ASCII上的差别啊? :-) Larry现在用「Perl」来代表语言本身,而以「perl」来表示该语言的体现,即目前的解译器。因此,作者有句幽默小语说:「只有 perl可以解译 Perl」。要不要遵照这个用法是您的自由。举一反叁的话,我们可依样画葫芦地说「awk 和 perl」还有「Python 和 Perl」,但却不可将「awk 和 Perl」或是「Python 和 perl」摆在一起。
+.Sh "Perl程式应算是 program还是 script?"
+.IX Subsection "Is it a Perl program or a Perl script?"
+都无所谓。他半开玩笑地说,\*(L"脚本 script 是你让演员来演的。程序 program 是你给观众的。\*(R"
+.PP
+最初,脚本是打包的普通的交互的命令序列,\*(-- 也就是说,一个对话脚本,类似 \s-1UUCP\s0 或 \s-1PPP\s0 对话脚本或者一个 expect 脚本,可以很好地处理一些小事,类似在应用程序启动之前进行一些俄设置等等,类似 \fI.cshrc\fR 或 \fI.ircrc\fR。对话脚本仅仅是驱动已有的程序,并不是独立的程序。
+.PP
+计算机专家会解释说,所有程序都是解释执行的,但是问题是从哪个层次去考虑。如果你问一个不是计算机专家的人,他们可能告诉你,一个 program 是已被编译为机器码,一次编译多次运行的东西,而一个 script 在每次使用时都必须首先翻译为 program
+.PP
+Perl 程序通常不是严格的编译或解释执行的。它们可以被编译为字节码形式 (可以在 Perl 虚拟机中运行) 或者完全不同的其他语言,例如 C 或汇编。你不能仅仅从源程序推断它是否应当被一个纯解释器,一个分析树解释器,一个字节码解释器或者一个本地代码编译器来运行,因此在这里很难给出一个确定的答案
+.PP
+现在 script 和 scripting 已成为被不慎重的人和无知的商人为了自己恶毒的目的而用到的两个词,它们开始拥有奇怪的,贬义的含义,类似 \*(L"不严谨 non serious\*(R" 或 \*(L"不是真正的编程\*(R".  因此,一些 Perl 程序员选择不把它们同时比较。
+.Sh "\s-1JAPH\s0 是什麽?"
+.IX Subsection "What is a JAPH?"
+这是过去一些在讨论群中自称 ``just another perl hacker'' 的人的签名档,Randal Schwartz 开了这样的先河。约有一百个比较早期的版本,可在 http://www.cpan.org/misc/japh 获得。
+.Sh "到哪儿可拿到 Larry Wall 的智慧讽语 (witticisms)?"
+.IX Subsection "Where can I get a list of Larry Wall witticisms?"
+一百多条 Larry的讽语,源自他【在讨论群】的 posts或原始码,可在 http://www.cpan.org/misc/lwall\-quotes.txt.gz 获得
+.Sh "我要如何取信、说服我的系统管理者/上司/属下使用第 5/5.8.3 版的 Perl,而不去用其他的语言?"
+.IX Subsection "How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?"
+如果您的管理阶层或属下对没有支援的软体,或是未正式包含在所购买的作业系统中的软体存有戒心的话,您可以试着从有助他们自身利益这方面下手。因为如果程式设计师能由善加利用 Perl的结构、功能性、简单性,和威力而获得更大的生产力的话,那麽典型的管理者/上司/员工或许便可因而加以说服。此外,使用 Perl,总的来讲,和其他语言相较,或许也有助於减少交件的时间。强调这个论 点或许对说服他们会有帮助。
+.PP
+如果您的专题碰到瓶颈,特别是有关转译或测试方面的问题,那麽 Perl可以说绝对会是一个既可行且快的解决之道。您在当说客的时候,千万别忘了要提:Perl已被世界上许多大型的软硬体公司广泛、大量地使用,极为可靠、有效。事实上,现 Perl已成为许多 Unix业者所售的作业系统的标准配备了。而且如果您无法在 详尽的使用说明,包括这份 FAQ之中为您的问题找到解答的话,送封 post 到新闻讨论群即可。
+.PP
+参见 http://www.perl.org/advocacy/
+.PP
+如果您面对反对 perl升级的声音,那麽告诉他们 Perl发展小组已经完全不再维护或支援第四版的 perl了。perl5的另一个大卖点是它有大量的模组和延伸,可大大减少计画的发展时间。还有,告诉他们第四和第五版 Perl之间的差异就如 awk 和 C++的差别一样(嗯,或许没有差得那麽明显,但您知道我的意思就好)。如果您想得到支援而且想确保您现在所发展的软体在未来能继续工作的话,那麽您得跑有支援的版本。在 2003 年 12 月,这大概也就是说要跑 5.8.2 版的,或者稍微旧一些的版本如5.6.2 (November 2003 发布; 一个修正发行,使得 perl 5.6 在新系统中可以编译,因为 5.6.1发行早在 April 2001) 或 5.005_03 (March 1999 发行), 如果你一定要一个旧版本来保持兼容性,使用 5.004_05 也不坏。比 5.004_05 更旧的版本坚决不能再用
+.PP
+Of particular note is the massive bug hunt for buffer overflow
+problems that went into the 5.004 release.  All releases prior to
+that, including perl4, are considered insecure and should be upgraded
+as soon as possible.
+.PP
+In August 2000 in all Linux distributions a new security problem was
+found in the optional 'suidperl' (not built or installed by default)
+in all the Perl branches 5.6, 5.005, and 5.004, see
+http://www.cpan.org/src/5.0/sperl\-2000\-08\-05/
+Perl maintenance releases 5.6.1 and 5.8.0 have this security hole closed.
+Most, if not all, Linux distribution have patches for this
+vulnerability available, see http://www.linuxsecurity.com/advisories/ ,
+but the most recommendable way is to upgrade to at least Perl 5.6.1.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen and Nathan
+Torkington.  All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples here are in the public
+domain.  You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit.  A simple comment in the code giving credit to the \s-1FAQ\s0 would
+be courteous but is not required.
+.SH 译者
+.B 萧百龄,两只老虎工作室
diff --git a/src/man1/perlfaq2.1 b/src/man1/perlfaq2.1
new file mode 100644
index 0000000..150b7e9
--- /dev/null
+++ b/src/man1/perlfaq2.1
@@ -0,0 +1,626 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ2 1"
+.TH PERLFAQ2 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq2 \- 获取和学习 Perl (2003/10/16 04:57:38)
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+从哪里寻找 Perl 的源程序和文档,支持以及相关事项
+.Sh "哪些平台上有 Perl?要到哪里去找?"
+.IX Subsection "What machines support Perl?  Where do I get it?"
+Perl的标准发行版(由 perl发展小组负责维护)仅以原始码形式发行。您可在 http://www.perl.com/CPAN/src/latest.tar.gz处取得。这个档案的格式是 POSIX tar档案柜,再以 gzip格式压缩。
+.PP
+Perl 可以在难以记数的平台上运行。几乎所有已知的 Unix 衍生版本都被支持 (Perl 的本地平台),还有其他操作系统平台,类似 \s-1VMS\s0, \s-1DOS\s0, \s-1OS/2\s0, Windows,
+\&\s-1QNX\s0, BeOS, \s-1OS\s0 X, MPE/iX 和 Amiga.
+.PP
+为专有平台准备的二进制发行版,包括 Apple,可以从 http://www.cpan.org/ports/ 找到。因为它们不是标准发行的一部分,它们可能(事实上的确)和基本的 Perl有多方面的不同。要确切知道到底哪些地方不同,您得自行查阅它们各自的发行说明。这些差异可能是正面的(譬如它们可能附有一些原始码发行的 perl所没有的延伸,提供专属某一平台的特殊功能),亦或负面的(例如它们可能是植基於比较老旧的 Perl原始码发行 版)。
+.Sh "要如何取得以二进制形式发行的 Perl?"
+.IX Subsection "How can I get a binary version of Perl?"
+不管为什麽您的作业系统业者没有将 C编译器附在所卖的作业系统中,最好的方法是到网路上去抓一份 gcc的执行档,然後用它来编译 perl 。 CPAN 上所放的 gcc执行档仅专门提供几个特别难拿到免费编译器的平台,而不是给任何 Unix系 统的。
+.PP
+一些 URLs 可能有用:
+.PP
+.Vb 2
+\&    http://www.cpan.org/ports/
+\&    http://www.perl.com/pub/language/info/software.html
+.Ve
+.PP
+Someone looking for a Perl for Win16 might look to Laszlo Molnar's djgpp
+port in http://www.cpan.org/ports/#msdos , which comes with clear
+installation instructions.  A simple installation guide for MS-DOS using
+Ilya Zakharevich's \s-1OS/2\s0 port is available at
+http://www.cs.ruu.nl/%7Epiet/perl5dos.html
+and similarly for Windows 3.1 at http://www.cs.ruu.nl/%7Epiet/perlwin3.html .
+.Sh "我的系统里没有 C编译器。要如何编译 perl?"
+.IX Subsection "I don't have a C compiler on my system.  How can I compile perl?"
+因为您没有 C 编译器,您是没指望了,而您的经销商则该拿去当作祭拜 Sun god 的供品。不过说这些风凉话无济於事。
+.PP
+您首先需要做的是替您的系统找一个 gcc的执行档。参阅和您的作业系统相关的 各 Usenet FAQs,看到哪里可以找到这种作业系统的 gcc执行档 。
+.Sh "我直接将 Perl的执行档从一台机器上复制到另一台机器上,但是程式跑不起来。"
+.IX Subsection "I copied the Perl binary from one machine to another, but scripts don't work."
+那大概是您忘了复制程式库,或者是程式库的路径不同的关系。您真的应该在那台要安装 perl的机器上将整套发行从头编译,然後打 make install来安装。其他的方法大多注定要失败。
+.PP
+有一个简单的方法可用来检查和确定东西有没有装对地方 --把编入 perl的 @INC阵列(perl用它来寻找程式库的路径)印出:
+.PP
+.Vb 1
+\&    % perl -le 'print for @INC'
+.Ve
+.PP
+如果这个指令列出了任何在您系统上不存在的路径,那麽您或许得将适当的程式库移到这些地方,或者制做适当的 symlinks、aliases 或捷径。\f(CW at INC\fR 也作为命令
+.PP
+.Vb 1
+\&    % perl -V
+.Ve
+.PP
+的输出。你也许会想看看
+\&\*(L"How do I keep my own module/library directory?\*(R" in perlfaq8.
+.Sh "我抓回了原始码,试着编译 perl,但是 gdbm/dynamic  loading/malloc/linking/...部分失败。要如何将它搞定?"
+.IX Subsection "I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed.  How do I make it work?"
+细读 INSTALL这个档案,这是原始码发行版里面的一个档案。有时候自动设定程式 (Configure) 对某些较不寻常的系统、平台特质、或变异会不知所措。该档案对该如何处这类的问题,大都有详细的说明。
+.Sh "Perl有哪些模组和延伸? CPAN是什麽? CPAN/src/...又代表什麽?"
+.IX Subsection "What modules and extensions are available for Perl?  What is CPAN?  What does CPAN/src/... mean?"
+CPAN代表的是「大 Perl档案库网络」(Comprehensive Perl Archive Network),一个在全世界近200台机器之间相互映射的巨大档案库。CPAN包含了原始码、对各非原生系统的移植、使用说明、程式,以及许多由第叁类团体所写的模组和延伸,从各商业品牌的资料库介面、到键盘/萤幕控制,乃至全球资讯网漫游及 CGI程式皆一应具全。CPAN的总主机是http://www.cpan.org/ ,但您也可以透过这个位址: http://www.cpan.org/CPAN.html 来自动连接一个在地理位置上最接近您的站。至於这个设计的运作原理,请看 http://www.perl.com/CPAN(最後头没有斜线)的说明。同时,http://mirror.cpan.org/ 也提供了 http://www.cpan.org/MIRRORED 的方便的界面
+.PP
+参见 \s-1CPAN\s0 \s-1FAQ\s0 位于 http://www.cpan.org/misc/cpan\-faq.html 来获得有关  \s-1CPAN\s0 的 FAQ,包括如何成为一个镜像站
+.PP
+CPAN/path/... 是 CPAN站台上头的档案的命名规范。CPAN 代表一个 CPAN映射的基准目录,然後其馀的路径是由该目录到一个档案的路径。例如,如果您使用 ftp://ftp.funet.fi/pub/languages/perl/CPAN 来做您的 CPAN 站,那麽 CPAN/misc/japh这个档案便可以从 ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh 下载到
+.PP
+由於目前 CPAN档案库中已经有近两千个模组,因此几乎任何您所能想到的用途,大概都已经有现成的模组可以办到。目前在 CPAN/modules/by-category/ 底下的类 别包括了 perl核心模组、协助发展模组、作业系统介面、网路、周边设备、不同 processes间之沟通、资料型态工具、资料库介面、使用者介面、与其他语言介面、档名、档案系统、档案锁定、软体国际化及地方化、全球资讯网支援、伺服软体工具、档案库和档案压缩、图形变换处理、电子邮件及新闻讨论群、程式流程控制工具、filehandles和输入/输出、微软视窗模组,以及杂项模组 等。
+.PP
+参见 http://www.cpan.org/modules/00modlist.long.htmlhttp://search.cpan.org/ 来阅读分类的模块完整列表。
+.PP
+\&\s-1CPAN\s0 不是 O'Reilly and Associates 的附属品.
+.Sh "是不是有一个经 ISO【国际标准局】或 ANSI【美国国家标准局】认可的 Perl版本?"
+.IX Subsection "Is there an ISO or ANSI certified version of Perl?"
+当然没有。Larry认为他得先被认可後然後才会轮到 Perl 。
+.Sh "Perl的相关资料要上哪儿找?"
+.IX Subsection "Where can I get information on Perl?"
+perl的发行版中都附有完整的使用说明中。如果 perl已安装在您的机器上,那麽使用说明应该也已经装在上头了:如果您用的是一个像 Unix的系统,您可以打 man perl。这同时会带领您到其他重要的使用说明页。如果您用的不是 Unix 式的系统,那麽查阅使用说明的方法会有所不同;譬如说,使用说明可能会以HTML 格式来存放。不管怎麽样,只要 perl正确地安装,查阅使用说明应该不成问题。
+.PP
+如果您的系统没有 man这个指令,或者是该指令安装不当,那麽您可以试试 perldoc perl。如果还不成,您可以在 /usr/local/lib/perl5/pod这个目录 下找使用说明。
+.PP
+如果以上的方法全失败,那麽您可求助於 http://perldoc.cpan.org/http://www.perldoc.com/ 都提供了完整的 html 格式的帮助
+.PP
+面上有许多本和 Perl有关的好书,详情请见下面一节的介绍。
+.PP
+Tutorial documents are included in current or upcoming Perl releases
+include perltoot for objects or perlboot for a beginner's
+approach to objects, perlopentut for file opening semantics,
+perlreftut for managing references, perlretut for regular
+expressions, perlthrtut for threads, perldebtut for debugging,
+and perlxstut for linking C and Perl together.  There may be more
+by the time you read this.  The following URLs might also be of
+assistance:
+.PP
+.Vb 3
+\&    http://perldoc.cpan.org/
+\&    http://www.perldoc.com/
+\&    http://bookmarks.cpan.org/search.cgi?cat=Training%2FTutorials
+.Ve
+.Sh "USENET上有哪些专门讨论 Perl的新闻讨论群?问题该投到哪里?"
+.IX Subsection "What are the Perl newsgroups on Usenet?  Where do I post questions?"
+Usenet 中有多个新闻组与 Perl 语言相关:
+.PP
+.Vb 5
+\&    comp.lang.perl.announce             Moderated announcement group
+\&    comp.lang.perl.misc                 High traffic general Perl discussion
+\&    comp.lang.perl.moderated        Moderated discussion group
+\&    comp.lang.perl.modules              Use and development of Perl modules
+\&    comp.lang.perl.tk                   Using Tk (and X) from Perl
+.Ve
+.PP
+.Vb 1
+\&    comp.infosystems.www.authoring.cgi  Writing CGI scripts for the Web.
+.Ve
+.PP
+Some years ago, comp.lang.perl was divided into those groups, and
+comp.lang.perl itself officially removed.  While that group may still
+be found on some news servers, it is unwise to use it, because
+postings there will not appear on news servers which honour the
+official list of group names.  Use comp.lang.perl.misc for topics
+which do not have a more-appropriate specific group.
+.PP
+There is also a Usenet gateway to Perl mailing lists sponsored by
+perl.org at nntp://nntp.perl.org , a web interface to the same lists
+at http://nntp.perl.org/group/ and these lists are also available
+under the \f(CW\*(C`perl.*\*(C'\fR hierarchy at http://groups.google.com . Other
+groups are listed at http://lists.perl.org/ ( also known as
+http://lists.cpan.org/ ).
+.PP
+A nice place to ask questions is the PerlMonks site, 
+http://www.perlmonks.org/ , or the Perl Beginners mailing list
+http://lists.perl.org/showlist.cgi?name=beginners .
+.PP
+Note that none of the above are supposed to write your code for you:
+asking questions about particular problems or general advice is fine,
+but asking someone to write your code for free is not very cool.
+.Sh "如果我想投程式原始码,该投到哪个板子上?"
+.IX Subsection "Where should I post source code?"
+您应看程式的性质来决定该丢到哪个板子上,但也欢迎您交叉投递一份到 comp.lang.perl.misc上头去。如果您打算交叉投递到 alt.sources 的话,请务必遵照该板所规定的标准,包括标头的 Followup-To 栏不可将 alt.sources 列入; 详见该板的 FAQ 。
+.PP
+If you're just looking for software, first use Google
+( http://www.google.com ), Google's usenet search interface
+( http://groups.google.com ),  and \s-1CPAN\s0 Search ( http://search.cpan.org ).
+This is faster and more productive than just posting a request.
+.Sh "Perl 书籍"
+.IX Subsection "Perl Books"
+市面上有许多有关 Perl 和/或 CGI程式设计的书。其中有些很好,有些还过得去,但也有不少根本不值得买。大部分的 Perl书都列在 Tom Christiansen 所维护的列表中,其中一些有详细的评论,位于 http://www.perl.com/perl/critiques/index.html .
+.PP
+毫无争议地,最权威的 Perl参考书要数以下这本,由 Perl的创始者著作,现在是第三版 (July 2000):
+.PP
+.Vb 5
+\&    Programming Perl (the "Camel Book"):
+\&        by Larry Wall, Tom Christiansen, and Jon Orwant
+\&        0-596-00027-8  [3rd edition July 2000]
+\&        http://www.oreilly.com/catalog/pperl3/
+\&    (English, translations to several languages are also available)
+.Ve
+.PP
+The companion volume to the Camel containing thousands
+of real-world examples, mini\-tutorials, and complete programs is:
+.PP
+.Vb 5
+\&    The Perl Cookbook (the "Ram Book"):
+\&        by Tom Christiansen and Nathan Torkington,
+\&            with Foreword by Larry Wall
+\&        ISBN 1-56592-243-3 [1st Edition August 1998]
+\&        http://perl.oreilly.com/catalog/cookbook/
+.Ve
+.PP
+If you're already a seasoned programmer, then the Camel Book might
+suffice for you to learn Perl from.  If you're not, check out the
+Llama book:
+.PP
+.Vb 4
+\&    Learning Perl (the "Llama Book")
+\&        by Randal L. Schwartz and Tom Phoenix
+\&        ISBN 0-596-00132-0 [3rd edition July 2001]
+\&        http://www.oreilly.com/catalog/lperl3/
+.Ve
+.PP
+And for more advanced information on writing larger programs,
+presented in the same style as the Llama book, continue your education
+with the Alpaca book:
+.PP
+.Vb 4
+\&    Learning Perl Objects, References, and Modules (the "Alpaca Book")
+\&       by Randal L. Schwartz, with Tom Phoenix (foreword by Damian Conway)
+\&       ISBN 0-596-00478-8 [1st edition June 2003]
+\&       http://www.oreilly.com/catalog/lrnperlorm/
+.Ve
+.PP
+If you're not an accidental programmer, but a more serious and
+possibly even degreed computer scientist who doesn't need as much
+hand-holding as we try to provide in the Llama, please check out the
+delightful book
+.PP
+.Vb 5
+\&    Perl: The Programmer's Companion
+\&        by Nigel Chapman
+\&        ISBN 0-471-97563-X [1997, 3rd printing Spring 1998]
+\&        http://www.wiley.com/compbooks/catalog/97563-X.htm
+\&        http://www.wiley.com/compbooks/chapman/perl/perltpc.html (errata etc)
+.Ve
+.PP
+If you are more at home in Windows the following is available
+(though unfortunately rather dated).
+.PP
+.Vb 5
+\&    Learning Perl on Win32 Systems (the "Gecko Book")
+\&        by Randal L. Schwartz, Erik Olson, and Tom Christiansen,
+\&            with foreword by Larry Wall
+\&        ISBN 1-56592-324-3 [1st edition August 1997]
+\&        http://www.oreilly.com/catalog/lperlwin/
+.Ve
+.PP
+Addison-Wesley ( http://www.awlonline.com/ ) and Manning
+( http://www.manning.com/ ) are also publishers of some fine Perl books
+such as \fIObject Oriented Programming with Perl\fR by Damian Conway and
+\&\fINetwork Programming with Perl\fR by Lincoln Stein.
+.PP
+An excellent technical book discounter is Bookpool at
+http://www.bookpool.com/ where a 30% discount or more is not unusual.
+.PP
+What follows is a list of the books that the \s-1FAQ\s0 authors found personally
+useful.  Your mileage may (but, we hope, probably won't) vary.
+.PP
+Recommended books on (or mostly on) Perl follow.
+.IP "References" 4
+.IX Item "References"
+.Vb 4
+\&    Programming Perl
+\&        by Larry Wall, Tom Christiansen, and Jon Orwant
+\&        ISBN 0-596-00027-8 [3rd edition July 2000]
+\&        http://www.oreilly.com/catalog/pperl3/
+.Ve
+.Sp
+.Vb 4
+\&    Perl 5 Pocket Reference
+\&    by Johan Vromans
+\&        ISBN 0-596-00032-4 [3rd edition May 2000]
+\&        http://www.oreilly.com/catalog/perlpr3/
+.Ve
+.Sp
+.Vb 4
+\&    Perl in a Nutshell
+\&    by Ellen Siever, Stephan Spainhour, and Nathan Patwardhan
+\&        ISBN 1-56592-286-7 [1st edition December 1998]
+\&        http://www.oreilly.com/catalog/perlnut/
+.Ve
+.IP "Tutorials" 4
+.IX Item "Tutorials"
+.Vb 4
+\&    Elements of Programming with Perl
+\&        by Andrew L. Johnson
+\&        ISBN 1-884777-80-5 [1st edition October 1999]
+\&        http://www.manning.com/Johnson/
+.Ve
+.Sp
+.Vb 4
+\&    Learning Perl
+\&        by Randal L. Schwartz and Tom Phoenix
+\&        ISBN 0-596-00132-0 [3rd edition July 2001]
+\&        http://www.oreilly.com/catalog/lperl3/
+.Ve
+.Sp
+.Vb 4
+\&    Learning Perl Objects, References, and Modules
+\&       by Randal L. Schwartz, with Tom Phoenix (foreword by Damian Conway)
+\&       ISBN 0-596-00478-8 [1st edition June 2003]
+\&       http://www.oreilly.com/catalog/lrnperlorm/
+.Ve
+.Sp
+.Vb 5
+\&    Learning Perl on Win32 Systems
+\&        by Randal L. Schwartz, Erik Olson, and Tom Christiansen,
+\&            with foreword by Larry Wall
+\&        ISBN 1-56592-324-3 [1st edition August 1997]
+\&        http://www.oreilly.com/catalog/lperlwin/
+.Ve
+.Sp
+.Vb 5
+\&    Perl: The Programmer's Companion
+\&        by Nigel Chapman
+\&        ISBN 0-471-97563-X [1997, 3rd printing Spring 1998]
+\&    http://www.wiley.com/compbooks/catalog/97563-X.htm
+\&    http://www.wiley.com/compbooks/chapman/perl/perltpc.html (errata etc)
+.Ve
+.Sp
+.Vb 4
+\&    Cross-Platform Perl
+\&        by Eric Foster-Johnson
+\&        ISBN 1-55851-483-X [2nd edition September 2000]
+\&        http://www.pconline.com/~erc/perlbook.htm
+.Ve
+.Sp
+.Vb 5
+\&    MacPerl: Power and Ease
+\&        by Vicki Brown and Chris Nandor,
+\&            with foreword by Matthias Neeracher
+\&        ISBN 1-881957-32-2 [1st edition May 1998]
+\&        http://www.macperl.com/ptf_book/
+.Ve
+.IP "Task-Oriented" 4
+.IX Item "Task-Oriented"
+.Vb 5
+\&    The Perl Cookbook
+\&        by Tom Christiansen and Nathan Torkington
+\&            with foreword by Larry Wall
+\&        ISBN 1-56592-243-3 [1st edition August 1998]
+\&        http://www.oreilly.com/catalog/cookbook/
+.Ve
+.Sp
+.Vb 4
+\&    Effective Perl Programming
+\&        by Joseph Hall
+\&        ISBN 0-201-41975-0 [1st edition 1998]
+\&        http://www.awl.com/
+.Ve
+.IP "Special Topics" 4
+.IX Item "Special Topics"
+.Vb 4
+\&    Mastering Regular Expressions
+\&        by Jeffrey E. F. Friedl
+\&        ISBN 0-596-00289-0 [2nd edition July 2002]
+\&        http://www.oreilly.com/catalog/regex2/
+.Ve
+.Sp
+.Vb 4
+\&    Network Programming with Perl
+\&        by Lincoln Stein
+\&        ISBN 0-201-61571-1 [1st edition 2001]
+\&        http://www.awlonline.com/
+.Ve
+.Sp
+.Vb 5
+\&    Object Oriented Perl
+\&        Damian Conway
+\&            with foreword by Randal L. Schwartz
+\&        ISBN 1-884777-79-1 [1st edition August 1999]
+\&        http://www.manning.com/Conway/
+.Ve
+.Sp
+.Vb 4
+\&    Data Munging with Perl
+\&        Dave Cross
+\&        ISBN 1-930110-00-6 [1st edition 2001]
+\&        http://www.manning.com/cross
+.Ve
+.Sp
+.Vb 4
+\&    Mastering Perl/Tk
+\&        by Steve Lidie and Nancy Walsh
+\&        ISBN 1-56592-716-8 [1st edition January 2002]
+\&        http://www.oreilly.com/catalog/mastperltk/
+.Ve
+.Sp
+.Vb 4
+\&    Extending and Embedding Perl
+\&       by Tim Jenness and Simon Cozens
+\&       ISBN 1-930110-82-0 [1st edition August 2002]
+\&       http://www.manning.com/jenness
+.Ve
+.Sh "和 Perl 有关的杂志"
+.IX Subsection "Perl in Magazines"
+The first (and for a long time, only) periodical devoted to All Things Perl,
+\&\fIThe Perl Journal\fR contains tutorials, demonstrations, case studies,
+announcements, contests, and much more.  \fI\s-1TPJ\s0\fR has columns on web
+development, databases, Win32 Perl, graphical programming, regular
+expressions, and networking, and sponsors the Obfuscated Perl Contest
+and the Perl Poetry Contests.  Beginning in November 2002, \s-1TPJ\s0 moved to a 
+reader-supported monthly e\-zine format in which subscribers can download 
+issues as \s-1PDF\s0 documents. For more details on \s-1TPJ\s0, see http://www.tpj.com/
+.PP
+Beyond this, magazines that frequently carry quality articles on
+Perl are \fIThe Perl Review\fR ( http://www.theperlreview.com ),
+\&\fIUnix Review\fR ( http://www.unixreview.com/ ),
+\&\fILinux Magazine\fR ( http://www.linuxmagazine.com/ ),
+and Usenix's newsletter/magazine to its members, \fIlogin:\fR
+( http://www.usenix.org/ )
+.PP
+The Perl columns of Randal L. Schwartz are available on the web at
+http://www.stonehenge.com/merlyn/WebTechniques/ ,
+http://www.stonehenge.com/merlyn/UnixReview/ , and
+http://www.stonehenge.com/merlyn/LinuxMag/ .
+.Sh "网路上的 Perl:接触 FTP 和 WWW"
+.IX Subsection "Perl on the Net: FTP and WWW Access"
+如果您想达到最好(还有最省钱)的传输效果,那麽从 http://www.cpan.org/SITES.html 所列的站台中任选其一,从上头把完整的映射站名单抓下来。然後您可以从中挑选一个对您来说传输最快的站台。.PP
+也可以使用 xx.cpan.org ,其中 \*(L"xx\*(R" 是双字符的国家代码,例如澳大利亚可以使用 au.cpan.org. [注意:这只对至少包含了一个主机镜像的国家有效。]
+.Sh "有哪些讨论 Perl 的邮件列表?"
+.IX Subsection "What mailing lists are there for Perl?"
+大部分的重要模组(如 Tk、CGI 和 libwww-perl)有专属各自的 mailing lists。有关资料请参考这些模组的使用说明。
+.PP
+完整的与 Perl 有关的邮件列表可以从这里找到:
+.PP
+.Vb 1
+\&        http://lists.perl.org/
+.Ve
+.Sh "comp.lang.perl.misc 的档案库"
+.IX Subsection "Archives of comp.lang.perl.misc"
+The Google search engine now carries archived and searchable newsgroup
+content.
+.PP
+http://groups.google.com/groups?group=comp.lang.perl.misc
+.PP
+If you have a question, you can be sure someone has already asked the
+same question at some point on c.l.p.m. It requires some time and patience
+to sift through all the content but often you will find the answer you
+seek.
+.Sh "如何购买商业版本的 Perl?"
+.IX Subsection "Where can I buy a commercial version of Perl?"
+在某种程度上来说,Perl 已经算是商业软体了:您可以把 Perl的发行约定拿来细读给您的经理听。各发行版都附有这份条例清楚、明确的公约。Perl有广大的使用者及广泛的文献。comp.lang.perl.*等新闻讨论群组和各电子邮递论坛更是对各种疑难杂症提供迅速的解答。Perl 传统上一直是由 Larry、许多软体设计工程师,以及成千上万的程式写作者提供支援,大伙协力让人人过更美好的日子。
+.PP
+尽管如此,有些主管坚持只向附售後保证的公司下订单,这样子出了问题才可以告他们,故以上的回答可能无法令这类的经理满意。或许是这类的主管觉得亦步亦趋的扶持支援及很强的合约义务有其必要。市面上有卖用玻璃纸密封包装的 Perl 光碟,您可以试试看,或许对您的经理有效。
+.PP
+Alternatively, you can purchase commercial incidence based support
+through the Perl Clinic.  The following is a commercial from them:
+.PP
+"The Perl Clinic is a commercial Perl support service operated by
+ActiveState Tool Corp. and The Ingram Group.  The operators have many
+years of in-depth experience with Perl applications and Perl internals
+on a wide range of platforms.
+.PP
+\&\*(L"Through our group of highly experienced and well-trained support engineers,
+we will put our best effort into understanding your problem, providing an
+explanation of the situation, and a recommendation on how to proceed.\*(R"
+.PP
+Contact The Perl Clinic at
+.PP
+.Vb 1
+\&    www.PerlClinic.com
+.Ve
+.PP
+.Vb 3
+\&    North America Pacific Standard Time (GMT-8)
+\&    Tel:    1 604 606-4611 hours 8am-6pm
+\&    Fax:    1 604 606-4640
+.Ve
+.PP
+.Vb 3
+\&    Europe (GMT)
+\&    Tel:    00 44 1483 862814
+\&    Fax:    00 44 1483 862801
+.Ve
+.PP
+See also www.perl.com for updates on tutorials, training, and support.
+.Sh "如果发现 bugs要向何处报告?"
+.IX Subsection "Where do I send bug reports?"
+如果您发现 perl解译器或标准发行中的模组有 bugs ,想报知 perl 发布小组的 话,请使用 perl发行中所附的 perlbug 程式,或将您的报告 email 到 perlbug at perl.org .
+.PP
+如果您想报告的 bug是有关某个非标准发行的 perl(详见「哪些平台上有 Perl ?」一题的答案)、某可执行档形式的发行,或是某非标准的模组(譬如 Tk、CGI 等),那麽请参考它所附的使用说明,以确定最合适报告 bugs的地方。
+.PP
+详情请见 \fIperlbug\fR\|(1) 手册页 (perl5.004 或更新版本)。
+.Sh "什麽是 perl.com? Perl Mongers? pm.org? perl.org? cpan.org?"
+.IX Subsection "What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?"
+The Perl Home Page at http://www.perl.com/ is currently hosted by
+The O'Reilly Network, a subsidiary of O'Reilly and Associates.
+.PP
+Perl Mongers is an advocacy organization for the Perl language which
+maintains the web site http://www.perl.org/ as a general advocacy
+site for the Perl language.
+.PP
+Perl Mongers uses the pm.org domain for services related to Perl user
+groups, including the hosting of mailing lists and web sites.  See the
+Perl user group web site at http://www.pm.org/ for more information about
+joining, starting, or requesting services for a Perl user group.
+.PP
+Perl Mongers also maintain the perl.org domain to provide general
+support services to the Perl community, including the hosting of mailing
+lists, web sites, and other services.  The web site
+http://www.perl.org/ is a general advocacy site for the Perl language,
+and there are many other sub-domains for special topics, such as
+.PP
+.Vb 4
+\&    http://bugs.perl.org/
+\&    http://history.perl.org/
+\&    http://lists.perl.org/
+\&    http://use.perl.org/
+.Ve
+.PP
+http://www.cpan.org/ is the Comprehensive Perl Archive Network,
+a replicated worlwide repository of Perl software, see
+the \fIWhat is \s-1CPAN\s0?\fR question earlier in this document.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2001 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples here are in the public
+domain.  You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit.  A simple comment in the code giving credit to the \s-1FAQ\s0 would
+be courteous but is not required.
+.SH "译者"
+.B 萧百龄,两只老虎工作室
diff --git a/src/man1/perlfaq3.1 b/src/man1/perlfaq3.1
new file mode 100644
index 0000000..f2a4508
--- /dev/null
+++ b/src/man1/perlfaq3.1
@@ -0,0 +1,933 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ3 1"
+.TH PERLFAQ3 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq3 \- 编程工具 (2003/11/24 19:55:50)
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+编程工具和编程支持
+.Sh "我如何作 (任何事)?"
+.IX Subsection "How do I do (anything)?"
+你到 CPAN(见 perlfaq2)找过了吗?也许别人已经写了某个模组可以解决你的问题。你查过相关的说明文件了吗 (man pages)?以下是一份概要的索引:
+.PP
+.Vb 12
+\&        基础Basics          perldata, perlvar, perlsyn, perlop, perlsub
+\&        执行Execution       perlrun, perldebug
+\&        函数Functions       perlfunc
+\&        对象Objects         perlref, perlmod, perlobj, perltie
+\&        数据结构Data Structures perlref, perllol, perldsc
+\&        模块Modules         perlmod, perlmodlib, perlsub
+\&        正则表达式Regexes         perlre, perlfunc, perlop, perllocale
+\&        移植Moving to perl5 perltrap, perl
+\&        连接Linking w/C     perlxstut, perlxs, perlcall, perlguts, perlembed
+\&        其他Various         http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz
+\&                        (这不是一个手册页,但是仍然很有用
+\&                         是有关 Perl 技术的大量技巧)
+.Ve
+.PP
+perltoc里有一份粗略的 perl 说明文件组的目录
+.Sh "如何以交互的方式使用 Perl?"
+.IX Subsection "How can I use Perl interactively?"
+典型的作法是使用 perldebug(1)说明文件里提到的 Perl 除虫器,在一个「空的」(译者:即不存在的)程式上执行,像这样:
+.PP
+.Vb 1
+\&    perl -de 42
+.Ve
+.PP
+接下来所打入的任意合法 Perl程式码皆会立刻被计算。同时,你可以检查符号表 (symbol table)、取得堆叠的记录 (stack backtraces)、检视变数值、设定阻断点 (set breakpoints) 以及其他符号式除虫器 (symbolic debuggers) 所能作的动作。
+.Sh "有 Perl shell吗?"
+.IX Subsection "Is there a Perl shell?"
+The psh (Perl sh) is currently at version 1.8. The Perl Shell is a
+shell that combines the interactive nature of a Unix shell with the
+power of Perl. The goal is a full featured shell that behaves as
+expected for normal shell activity and uses Perl syntax and
+functionality for control-flow statements and other things.
+You can get psh at http://www.focusresearch.com/gregor/psh/ .
+.PP
+Zoidberg is a similar project and provides a shell written in perl,
+configured in perl and operated in perl. It is intended as a login shell
+and development environment. It can be found at http://zoidberg.sf.net/
+or your local \s-1CPAN\s0 mirror.
+.PP
+The Shell.pm module (distributed with Perl) makes Perl try commands
+which aren't part of the Perl language as shell commands.  perlsh
+from the source distribution is simplistic and uninteresting, but
+may still be what you want.
+.Sh "怎样查找我的系统中安装了哪些模块?"
+.IX Subsection "How do I find which modules are installed on my system?"
+You can use the ExtUtils::Installed module to show all
+installed distributions, although it can take awhile to do
+its magic.  The standard library which comes with Perl just
+shows up as \*(L"Perl\*(R" (although you can get those with
+Module::CoreList).
+.PP
+.Vb 1
+\&        use ExtUtils::Installed;
+.Ve
+.PP
+.Vb 2
+\&        my $inst    = ExtUtils::Installed->new();
+\&        my @modules = $inst->modules();
+.Ve
+.PP
+If you want a list of all of the Perl module filenames, you
+can use File::Find::Rule.
+.PP
+.Vb 1
+\&        use File::Find::Rule;
+.Ve
+.PP
+.Vb 1
+\&        my @files = File::Find::Rule->file()->name( '*.pm' )->in( @INC );
+.Ve
+.PP
+If you do not have that module, you can do the same thing
+with File::Find which is part of the standard library.
+.PP
+.Vb 2
+\&    use File::Find;
+\&    my @files;
+.Ve
+.PP
+.Vb 2
+\&    find sub { push @files, $File::Find::name if -f _ && /\e.pm$/ },
+\&         @INC;
+.Ve
+.PP
+.Vb 1
+\&        print join "\en", @files;
+.Ve
+.PP
+If you simply need to quickly check to see if a module is
+available, you can check for its documentation.  If you can
+read the documentation the module is most likely installed.
+If you cannot read the documentation, the module might not
+have any (in rare cases).
+.PP
+.Vb 1
+\&        prompt% perldoc Module::Name
+.Ve
+.PP
+You can also try to include the module in a one-liner to see if
+perl finds it.
+.PP
+.Vb 1
+\&        perl -MModule::Name -e1
+.Ve
+.Sh "如何替我的 Perl 程式除虫?"
+.IX Subsection "How do I debug my Perl programs?"
+你用过 \f(CW\*(C`use warnings\*(C'\fR 或 \f(CW\*(C`\-w\*(C'\fR 吗?它们启用警告模式,来检测不确定的代码。
+.PP
+你用过 \f(CW\*(C`use strict\*(C'\fR 吗?It prevents you from using symbolic
+references, makes you predeclare any subroutines that you call as bare
+words, and (probably most importantly) forces you to predeclare your
+variables with \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, or \f(CW\*(C`use vars\*(C'\fR.
+.PP
+Did you check the return values of each and every system call?  The operating
+system (and thus Perl) tells you whether they worked, and if not
+why.
+.PP
+.Vb 2
+\&  open(FH, "> /etc/cantwrite")
+\&    or die "Couldn't write to /etc/cantwrite: $!\en";
+.Ve
+.PP
+Did you read perltrap?  It's full of gotchas for old and new Perl
+programmers and even has sections for those of you who are upgrading
+from languages like \fIawk\fR and \fIC\fR.
+.PP
+Have you tried the Perl debugger, described in perldebug?  You can
+step through your program and see what it's doing and thus work out
+why what it's doing isn't what it should be doing.
+.Sh "如何检测 (profile) 我的 perl 程式?"
+.IX Subsection "How do I profile my Perl programs?"
+你该自 CPAN抓取 Devel::DProf 模组,并且使用 perl 标准套件所附的 Benchmark.pm。 Benchmark.pm让你测量程式码的某部份在执行上所花的时间,而 Devel::DProf则详细地替你分析哪一部份的程式用掉多少时间。
+.PP
+Here's a sample use of Benchmark:
+.PP
+.Vb 1
+\&  use Benchmark;
+.Ve
+.PP
+.Vb 2
+\&  @junk = `cat /etc/motd`;
+\&  $count = 10_000;
+.Ve
+.PP
+.Vb 8
+\&  timethese($count, {
+\&            'map' => sub { my @a = @junk;
+\&                           map { s/a/b/ } @a;
+\&                           return @a },
+\&            'for' => sub { my @a = @junk;
+\&                           for (@a) { s/a/b/ };
+\&                           return @a },
+\&           });
+.Ve
+.PP
+This is what it prints (on one machine\*(--your results will be dependent
+on your hardware, operating system, and the load on your machine):
+.PP
+.Vb 3
+\&  Benchmark: timing 10000 iterations of for, map...
+\&         for:  4 secs ( 3.97 usr  0.01 sys =  3.98 cpu)
+\&         map:  6 secs ( 4.97 usr  0.00 sys =  4.97 cpu)
+.Ve
+.PP
+Be aware that a good benchmark is very hard to write.  It only tests the
+data you give it and proves little about the differing complexities
+of contrasting algorithms.
+.Sh "如何替我的 Perl程式作交叉参考?"
+.IX Subsection "How do I cross-reference my Perl programs?"
+B::Xref模组可 以替你的 Perl程式制作 cross-reference报告。用法是:
+.PP
+.Vb 1
+\&    perl -MO=Xref[,OPTIONS] scriptname.plx
+.Ve
+.Sh "有 Perl专用的美化列印程式吗?"
+.IX Subsection "Is there a pretty-printer (formatter) for Perl?"
+Perltidy is a Perl script which indents and reformats Perl scripts
+to make them easier to read by trying to follow the rules of the
+perlstyle. If you write Perl scripts, or spend much time reading
+them, you will probably find it useful.  It is available at
+http://perltidy.sourceforge.net
+.PP
+Of course, if you simply follow the guidelines in perlstyle,
+you shouldn't need to reformat.  The habit of formatting your code
+as you write it will help prevent bugs.  Your editor can and should
+help you with this.  The perl-mode or newer cperl-mode for emacs
+can provide remarkable amounts of help with most (but not all)
+code, and even less programmable editors can provide significant
+assistance.  Tom Christiansen and many other \s-1VI\s0 users  swear by
+the following settings in vi and its clones:
+.PP
+.Vb 2
+\&    set ai sw=4
+\&    map! ^O {^M}^[O^T
+.Ve
+.PP
+Put that in your \fI.exrc\fR file (replacing the caret characters
+with control characters) and away you go.  In insert mode, ^T is
+for indenting, ^D is for undenting, and ^O is for blockdenting\*(--
+as it were.  A more complete example, with comments, can be found at
+http://www.cpan.org/authors/id/TOMC/scripts/toms.exrc.gz
+.PP
+The a2ps http://www\-inf.enst.fr/%7Edemaille/a2ps/black+white.ps.gz does
+lots of things related to generating nicely printed output of
+documents, as does enscript at http://people.ssh.fi/mtr/genscript/ .
+.Sh "有 Perl的 ctags 吗?"
+.IX Subsection "Is there a ctags for Perl?"
+Recent versions of ctags do much more than older versions did.
+\&\s-1EXUBERANT\s0 \s-1CTAGS\s0 is available from http://ctags.sourceforge.net/
+and does a good job of making tags files for perl code.
+.PP
+There is also a simple one at
+http://www.cpan.org/authors/id/TOMC/scripts/ptags.gz which may do
+the trick.  It can be easy to hack this into what you want.
+.Sh "Is there an \s-1IDE\s0 or Windows Perl Editor?"
+.IX Subsection "Is there an IDE or Windows Perl Editor?"
+Perl programs are just plain text, so any editor will do.
+.PP
+If you're on Unix, you already have an IDE\*(--Unix itself.  The \s-1UNIX\s0
+philosophy is the philosophy of several small tools that each do one
+thing and do it well.  It's like a carpenter's toolbox.
+.PP
+If you want an \s-1IDE\s0, check the following:
+.IP "Komodo" 4
+.IX Item "Komodo"
+ActiveState's cross-platform (as of April 2001 Windows and Linux),
+multi-language \s-1IDE\s0 has Perl support, including a regular expression
+debugger and remote debugging
+( http://www.ActiveState.com/Products/Komodo/index.html ).  (Visual
+Perl, a Visual Studio.NET plug-in is currently (early 2001) in beta
+( http://www.ActiveState.com/Products/VisualPerl/index.html )).
+.IP "The Object System" 4
+.IX Item "The Object System"
+( http://www.castlelink.co.uk/object_system/ ) is a Perl web
+applications development \s-1IDE\s0, apparently for any platform
+that runs Perl.
+.IP "Open Perl \s-1IDE\s0" 4
+.IX Item "Open Perl IDE"
+( http://open\-perl\-ide.sourceforge.net/ )
+Open Perl \s-1IDE\s0 is an integrated development environment for writing
+and debugging Perl scripts with ActiveState's ActivePerl distribution
+under Windows 95/98/NT/2000.
+.IP "PerlBuilder" 4
+.IX Item "PerlBuilder"
+( http://www.solutionsoft.com/perl.htm ) is an integrated development
+environment for Windows that supports Perl development.
+.IP "visiPerl+" 4
+.IX Item "visiPerl+"
+( http://helpconsulting.net/visiperl/ )
+From Help Consulting, for Windows.
+.IP "OptiPerl" 4
+.IX Item "OptiPerl"
+( http://www.optiperl.com/ ) is a Windows \s-1IDE\s0 with simulated \s-1CGI\s0
+environment, including debugger and syntax highlighting editor.
+.PP
+For editors: if you're on Unix you probably have vi or a vi clone already,
+and possibly an emacs too, so you may not need to download anything.
+In any emacs the cperl-mode (M\-x cperl\-mode) gives you perhaps the
+best available Perl editing mode in any editor.
+.PP
+If you are using Windows, you can use any editor that lets
+you work with plain text, such as NotePad or WordPad.  Word
+processors, such as Microsoft Word or WordPerfect, typically
+do not work since they insert all sorts of behind-the-scenes
+information, although some allow you to save files as \*(L"Text
+Only\*(R". You can also download text editors designed
+specifically for programming, such as Textpad
+( http://www.textpad.com/ ) and UltraEdit
+( http://www.ultraedit.com/ ), among others.
+.PP
+If you are using MacOS, the same concerns apply.  MacPerl
+(for Classic environments) comes with a simple editor.
+Popular external editors are BBEdit ( http://www.bbedit.com/ )
+or Alpha ( http://www.kelehers.org/alpha/ ). MacOS X users can
+use Unix editors as well.
+.IP "\s-1GNU\s0 Emacs" 4
+.IX Item "GNU Emacs"
+http://www.gnu.org/software/emacs/windows/ntemacs.html
+.IP "MicroEMACS" 4
+.IX Item "MicroEMACS"
+http://www.microemacs.de/
+.IP "XEmacs" 4
+.IX Item "XEmacs"
+http://www.xemacs.org/Download/index.html
+.IP "Jed" 4
+.IX Item "Jed"
+http://space.mit.edu/~davis/jed/
+.PP
+or a vi clone such as
+.IP "Elvis" 4
+.IX Item "Elvis"
+ftp://ftp.cs.pdx.edu/pub/elvis/ http://www.fh\-wedel.de/elvis/
+.IP "Vile" 4
+.IX Item "Vile"
+http://dickey.his.com/vile/vile.html
+.IP "Vim" 4
+.IX Item "Vim"
+http://www.vim.org/
+.PP
+For vi lovers in general, Windows or elsewhere:
+.PP
+.Vb 1
+\&        http://www.thomer.com/thomer/vi/vi.html
+.Ve
+.PP
+nvi ( http://www.bostic.com/vi/ , available from \s-1CPAN\s0 in src/misc/) is
+yet another vi clone, unfortunately not available for Windows, but in
+\&\s-1UNIX\s0 platforms you might be interested in trying it out, firstly because
+strictly speaking it is not a vi clone, it is the real vi, or the new
+incarnation of it, and secondly because you can embed Perl inside it
+to use Perl as the scripting language.  nvi is not alone in this,
+though: at least also vim and vile offer an embedded Perl.
+.PP
+The following are Win32 multilanguage editor/IDESs that support Perl:
+.IP "Codewright" 4
+.IX Item "Codewright"
+http://www.starbase.com/
+.IP "MultiEdit" 4
+.IX Item "MultiEdit"
+http://www.MultiEdit.com/
+.IP "SlickEdit" 4
+.IX Item "SlickEdit"
+http://www.slickedit.com/
+.PP
+There is also a toyedit Text widget based editor written in Perl
+that is distributed with the Tk module on \s-1CPAN\s0.  The ptkdb
+( http://world.std.com/~aep/ptkdb/ ) is a Perl/tk based debugger that
+acts as a development environment of sorts.  Perl Composer
+( http://perlcomposer.sourceforge.net/ ) is an \s-1IDE\s0 for Perl/Tk
+\&\s-1GUI\s0 creation.
+.PP
+In addition to an editor/IDE you might be interested in a more
+powerful shell environment for Win32.  Your options include
+.IP "Bash" 4
+.IX Item "Bash"
+from the Cygwin package ( http://sources.redhat.com/cygwin/ )
+.IP "Ksh" 4
+.IX Item "Ksh"
+from the \s-1MKS\s0 Toolkit ( http://www.mks.com/ ), or the Bourne shell of
+the U/WIN environment ( http://www.research.att.com/sw/tools/uwin/ )
+.IP "Tcsh" 4
+.IX Item "Tcsh"
+ftp://ftp.astron.com/pub/tcsh/ , see also
+http://www.primate.wisc.edu/software/csh\-tcsh\-book/
+.IP "Zsh" 4
+.IX Item "Zsh"
+ftp://ftp.blarg.net/users/amol/zsh/ , see also http://www.zsh.org/
+.PP
+\&\s-1MKS\s0 and U/WIN are commercial (U/WIN is free for educational and
+research purposes), Cygwin is covered by the \s-1GNU\s0 Public License (but
+that shouldn't matter for Perl use).  The Cygwin, \s-1MKS\s0, and U/WIN all
+contain (in addition to the shells) a comprehensive set of standard
+\&\s-1UNIX\s0 toolkit utilities.
+.PP
+If you're transferring text files between Unix and Windows using \s-1FTP\s0
+be sure to transfer them in \s-1ASCII\s0 mode so the ends of lines are
+appropriately converted.
+.PP
+On Mac \s-1OS\s0 the MacPerl Application comes with a simple 32k text editor
+that behaves like a rudimentary \s-1IDE\s0.  In contrast to the MacPerl Application
+the \s-1MPW\s0 Perl tool can make use of the \s-1MPW\s0 Shell itself as an editor (with
+no 32k limit).
+.IP "BBEdit and BBEdit Lite" 4
+.IX Item "BBEdit and BBEdit Lite"
+are text editors for Mac \s-1OS\s0 that have a Perl sensitivity mode
+( http://web.barebones.com/ ).
+.IP "Alpha" 4
+.IX Item "Alpha"
+is an editor, written and extensible in Tcl, that nonetheless has
+built in support for several popular markup and programming languages
+including Perl and \s-1HTML\s0 ( http://alpha.olm.net/ ).
+.PP
+Pepper and Pe are programming language sensitive text editors for Mac
+\&\s-1OS\s0 X and BeOS respectively ( http://www.hekkelman.com/ ).
+.Sh "哪儿有 vi 用的 Perl 宏?"
+.IX Subsection "Where can I get Perl macros for vi?"
+For a complete version of Tom Christiansen's vi configuration file,
+see http://www.cpan.org/authors/Tom_Christiansen/scripts/toms.exrc.gz ,
+the standard benchmark file for vi emulators.  The file runs best with nvi,
+the current version of vi out of Berkeley, which incidentally can be built
+with an embedded Perl interpreter\*(--see http://www.cpan.org/src/misc/ .
+.Sh "给 emacs用的 perl模式又要去哪抓呢?"
+.IX Subsection "Where can I get perl-mode for emacs?"
+从大约 Emacs 19.22版 (version 19 patchlevel 22)起,已内含了 perl-mode.el及 perl 除虫器的支援。它们应该会和标准的 Emacs 19版一起出货。
+.PP
+在 perl原始码的目录下,你会找到一个叫作 ``emacs'' 的目录,里面包括一个 cperl-mode 可以把程式中的关键字上色、提供内文相关的协助以及其它方便的功能。
+.PP
+注意:``main'foo''(其中的单引号)会让 emacs的 perl-mode 出问题,并且会弄乱内 缩 (indentation) 与高亮 (hilighting)。不过你本来就该用 ``main::foo''的 (译者按: main'foo 是表示模组或 package的旧式写法;新式的 [perl5的]写法是 main::foo)。
+.Sh "如何在 Perl里使用 curses?"
+.IX Subsection "How can I use curses with Perl?"
+The Curses module from \s-1CPAN\s0 provides a dynamically loadable object
+module interface to a curses library.  A small demo can be found at the
+directory http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz ;
+this program repeats a command and updates the screen as needed, rendering
+\&\fBrep ps axu\fR similar to \fBtop\fR.
+.Sh "X或 Tk如何与 Perl配合呢?"
+.IX Subsection "How can I use X or Tk with Perl?"
+Tk 模块是一个完全以 Perl 为基础,面向对象的接口,让你不用学 Tcl也可以使用 Tk工具组。Sx则是 Athena Widget set专用的介面。两者都可在 CPAN取得。参见分类 http://www.cpan.org/modules/by\-category/08_User_Interfaces/
+.PP
+Invaluable for Perl/Tk programming are the Perl/Tk \s-1FAQ\s0 at
+http://w4.lns.cornell.edu/%7Epvhp/ptk/ptkTOC.html , the Perl/Tk Reference
+Guide available at
+http://www.cpan.org/authors/Stephen_O_Lidie/ , and the
+online manpages at
+http://www\-users.cs.umn.edu/%7Eamundson/perl/perltk/toc.html .
+.Sh "如何不靠 CGI或 Tk 帮助作出简单的目录(选单)?"
+.IX Subsection "How can I generate simple menus without using CGI or Tk?"
+http://www.cpan.org/authors/id/SKUNZ/perlmenu.v4.0.tar.gz
+是个以 curses为基础的模组,可以达成你的要求。
+.Sh "如何让我的 Perl程式跑得更快些?"
+.IX Subsection "How can I make my Perl program run faster?"
+最好是能设计一个较好的演算法 (algorithm),这通常会让程式有大不相同的表现。Jon Bentley's book \fIProgramming Pearls\fR (没有拼写错误!) 中有些你或许想知道的增进效率小技巧。
+Advice on benchmarking boils down to: benchmark
+and profile to make sure you're optimizing the right part, look for
+better algorithms instead of microtuning your code, and when all else
+fails consider just buying faster hardware.  You will probably want to
+read the answer to the earlier question ``How do I profile my Perl
+programs?'' if you haven't done so already.
+.PP
+其它方法包括自动载入较少使用的 Perl 程式码。请参看标准 perl 套件中的 AutoSplit及 AutoLoader模组的用法。或当你能断定程式执行效率的瓶颈在何处时,用 C来写那个部份,就像用组合语言来撰写 C程式的瓶颈部份一样。与此法相近的是使用以 C撰写瓶 颈部份的模组 (例如 CPAN中的 PDL 模组)。
+.PP
+如果你目前是将你的 perl直译器动态连结到 libc.so的话,重新作一份静态连结到 libc.a的 perl直译器可以提高 10-25%的执行效能。虽然这会使你的 perl直译器变得更胖,但你的 Perl程式 (及程式设计者) 或许会因此而感谢你。详情请参考 perl标准套件原始码版本中的 INSTALL 档案。
+.PP
+使用 undump程式把编译後的档案格式存到硬碟里以加快执行的速度已经是老掉牙的手法了。它已不再是个可行的方法,因为这方法只有几种平台能用,况且它终究不是个治本之 道。
+.Sh "如何让我的 Perl 程序少用一些内存?"
+.IX Subsection "How can I make my Perl program take less memory?"
+当问题变成时间与空间的交易时, Perl 几乎总是用记忆体来帮忙解决问题。 Perl中的纯量 (Scalar) 耗掉的记忆体比 C中的字串形态还多,阵列又更多, 更别谈杂凑阵列了 (Hashes)。关於这一点,我们当然还有很多工作得作,近来发布的版本,已开始针对这些问题做改进了。例如, 5.004 版中, 重复的散列键 (duplicate hash keys) 由使用它的杂凑阵列共用,这样就不用再重新定份位置给它了。
+.PP
+在某些情况下,使用 substr()或 vec()来模拟数组有很大的好处。例如,一个有上千 个布林代数值的阵列将占用至少 20,000位元组的空间,但是它可以被转变为一个 125位元组的位元向量 (bit vector)以节省相当可观的记忆体。标准套件中的 Tie::SubstrHash模组也能够帮助特定形态的资料结构节省些记忆体。若你正在和一些特殊的资料结构奋战 (例如,矩阵),用 C写的模组所耗掉的记忆体可能低於同功能并用 Perl写的模组。
+.PP
+另一件值得一试的是,查一下你的 Perl是以系统内的 malloc 还是 Perl内含的 malloc 编译起来的。不论是哪个,试着换成另一个,再看看这是否造成任何差别。关於 malloc的资讯可在 perl标准套件原始码版中的 INSTALL 档案找到。键入 \f(CW\*(C`perl \-V:usemymalloc\*(C'\fR. 就可以知道你是否在使用 perl的 malloc。
+.PP
+Of course, the best way to save memory is to not do anything to waste
+it in the first place. Good programming practices can go a long way
+toward this:
+.IP "* Don't slurp!" 4
+.IX Item "Don't slurp!"
+Don't read an entire file into memory if you can process it line
+by line. Or more concretely, use a loop like this:
+.Sp
+.Vb 6
+\&        #
+\&        # Good Idea
+\&        #
+\&        while (<FILE>) {
+\&           # ...
+\&        }
+.Ve
+.Sp
+instead of this:
+.Sp
+.Vb 7
+\&        #
+\&        # Bad Idea
+\&        #
+\&        @data = <FILE>;
+\&        foreach (@data) {
+\&            # ...
+\&        }
+.Ve
+.Sp
+When the files you're processing are small, it doesn't much matter which
+way you do it, but it makes a huge difference when they start getting
+larger.
+.IP "* Use map and grep selectively" 4
+.IX Item "Use map and grep selectively"
+Remember that both map and grep expect a \s-1LIST\s0 argument, so doing this:
+.Sp
+.Vb 1
+\&        @wanted = grep {/pattern/} <FILE>;
+.Ve
+.Sp
+will cause the entire file to be slurped. For large files, it's better
+to loop:
+.Sp
+.Vb 3
+\&        while (<FILE>) {
+\&                push(@wanted, $_) if /pattern/;
+\&        }
+.Ve
+.IP "* Avoid unnecessary quotes and stringification" 4
+.IX Item "Avoid unnecessary quotes and stringification"
+Don't quote large strings unless absolutely necessary:
+.Sp
+.Vb 1
+\&        my $copy = "$large_string";
+.Ve
+.Sp
+makes 2 copies of \f(CW$large_string\fR (one for \f(CW$copy\fR and another for the
+quotes), whereas
+.Sp
+.Vb 1
+\&        my $copy = $large_string;
+.Ve
+.Sp
+only makes one copy.
+.Sp
+Ditto for stringifying large arrays:
+.Sp
+.Vb 4
+\&        {
+\&                local $, = "\en";
+\&                print @big_array;
+\&        }
+.Ve
+.Sp
+is much more memory-efficient than either
+.Sp
+.Vb 1
+\&        print join "\en", @big_array;
+.Ve
+.Sp
+or
+.Sp
+.Vb 4
+\&        {
+\&                local $" = "\en";
+\&                print "@big_array";
+\&        }
+.Ve
+.IP "* Pass by reference" 4
+.IX Item "Pass by reference"
+Pass arrays and hashes by reference, not by value. For one thing, it's
+the only way to pass multiple lists or hashes (or both) in a single
+call/return. It also avoids creating a copy of all the contents. This
+requires some judgment, however, because any changes will be propagated
+back to the original data. If you really want to mangle (er, modify) a
+copy, you'll have to sacrifice the memory needed to make one.
+.IP "* Tie large variables to disk." 4
+.IX Item "Tie large variables to disk."
+For \*(L"big\*(R" data stores (i.e. ones that exceed available memory) consider
+using one of the \s-1DB\s0 modules to store it on disk instead of in \s-1RAM\s0. This
+will incur a penalty in access time, but that's probably better than
+causing your hard disk to thrash due to massive swapping.
+.Sh "把局部变量的引用返回是不安全的做法吗?"
+.IX Subsection "Is it safe to return a reference to local or lexical data?"
+这样是安全的,Perl的资源回收 (garbage collection)系统会解决此问题。
+.PP
+.Vb 4
+\&    sub makeone {
+\&        my @a = ( 1 .. 10 );
+\&        return \e at a;
+\&    }
+.Ve
+.PP
+.Vb 3
+\&    for ( 1 .. 10 ) {
+\&        push @many, makeone();
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    print $many[4][5], "\en";
+.Ve
+.PP
+.Vb 1
+\&    print "@many\en";
+.Ve
+.Sh "我如何释放一个数组或散列以缩小我的程式尺寸?"
+.IX Subsection "How can I free an array or hash so my program shrinks?"
+你无法这麽作。系统配置给程式的记忆体是覆水难收。这也是为何执行很长一段时间的程式有时会重新执行 (re-exec)它们自己的原因。
+Some operating systems (notably, systems that
+use \fImmap\fR\|(2) for allocating large chunks of memory) can
+reclaim memory that is no longer used, but on such systems,
+perl must be configured and compiled to use the \s-1OS\s0's malloc,
+not perl's.
+.PP
+然而,在使用你的变数时,明智地用 my()来定义执行范围,可让 Perl在脱离该范围後 将它们所占的空间释放给其它部份的程式。 (注:my()的变数也比全域变数执行起来快 10%。)当然,一个全域变数永远没有超出范围的时候,所以你无法将它占用的空间自动重新分配,不过,把它 undef() 或/和 delete()会有相同的效果。总之,在 Perl里,你并不能/应该去担心太多有关记忆体定址与解除这件事,而我们连添加这项功能(资料形态的预先定址),目前都已在进行中。
+.Sh "如何让我的 CGI脚本 (script)执行起来更有效率?"
+.IX Subsection "How can I make my CGI script more efficient?"
+除了使一般 Perl程式加快或缩小的平常手段外,一个 CGI 程式还有其他的顾虑。也许它每秒会被执行好几次。每次它执行时,重新编译所花的时间、加上定址所需的 1 MB以上的系统记忆体,就是一个大杀手。光是编译成 C 是没啥帮助的 ,因为瓶颈在於整个程序开始时所负担的包袱 (start-up overhead) 。
+.PP
+最起码有两种较流行的方法可以避免这些包袱。一种解法是将 mod_perl 或是 mod_fastcgi其中一个模组加在你所执行的 Apache HTTP server。
+.PP
+有了 mod_perl 和 Apache::*模组 (从 CPAN取得),httpd执行时会带起一个内 嵌的 Perl直译器,而它会预先编译你的程式,并在不产生其它子程序的情况下用同一个定址空间来执行。Apache 扩充模组亦给 Perl一个连通 server API 的管道,所以用 Perl写的模组可以做到任何 C写的模组所具备的功能。详情请参阅 http://perl.apache.org/
+.PP
+而有了 FCGI模组 (自 CPAN取得) 和 mod_fastcgi 模块(从 http://www.fastcgi.com/取得),每个 Perl 程序将成为一个永久的 CGI 守护进程。
+.PP
+这些方法对你的系统与你撰写 CGI程式的方法都有超乎想像之外的影响,所以请小心地使用它们。
+.PP
+参见 http://www.cpan.org/modules/by\-category/15_World_Wide_Web_HTML_HTTP_CGI/ .
+.PP
+A non\-free, commercial product, ``The Velocity Engine for Perl'',
+(http://www.binevolve.com/ or http://www.binevolve.com/velocigen/ )
+might also be worth looking at.  It will allow you to increase the
+performance of your Perl programs, running programs up to 25 times
+faster than normal \s-1CGI\s0 Perl when running in persistent Perl mode or 4
+to 5 times faster without any modification to your existing \s-1CGI\s0
+programs. Fully functional evaluation copies are available from the
+web site.
+.Sh "如何隐藏 Perl程式的原始码?"
+.IX Subsection "How can I hide the source for my Perl program?"
+删除它。 :-) 说真的,有一些具有不同“安全”等级的方法(大部分都不能令人满意)。
+.PP
+首先,你 不能拿走读取权,不然你的程式怎麽被解译或是编译呢? (不过那也并不表示一个 CGI程式的原始码可以被使用者读取。)所以你得让档案权限停留在 0755这个友善的阶段。
+.PP
+有些人认为这是个安全上的漏洞。不过若你的程式作的是不安全的事情,光仰赖别人看不见这些漏洞、不知从何下手,那麽它依然是不安全的。其实对有些人来说他们并不需要看见程式原始码便可能判定并揭露这些不安全的部份。透过隐瞒达到的安全,就是不修正臭虫反而隐藏它们,实际上是没有安全性可言的。
+.PP
+你可以试着透过原始码过滤模组 (CPAN中的 Filter::*)来替原始码加密。但高手也许有办法将其解密还原。你也可以用下面提到的 byte code 编译器与直译器,但高手也有可能反解译它。你可以试试後面提到的原生码编译器 (native-code compiler),但高手也有可能反组译它。这些手段都需要不同难度的技巧才能让别人拿到你的原始码,但没有一种能够很确定地隐藏它。(这对每种语言来说都为真,不是只有 Perl)
+.PP
+很容易从 Perl 程序中恢复出源码。只要将程序作为 perl 解释器的参数,并且使用 B:: 中的模块就可以了。B::Deparse 模块足以恢复大多数隐藏的代码。再次的,这不是 Perl 特有的东西。
+.PP
+如果你所担心的是别人自你的程式码中获利,那麽一纸权限执照是能提供你法律上安全的唯一途径。注册你的软体并且写份权限说明,再加上一些具威胁性的句子像“这是 XYZ公司未出版的专有软体。你能撷取它并不代表你具有使用的权限...”之类云云。当然,我们不是律师,所以若你想要你的执照中每一句话在法庭上都站得住脚,就去见个律师吧。
+.Sh "如何把我的 Perl程式码编译成 byte code或 C?"
+.IX Subsection "How can I compile my Perl program into byte code or C?"
+Malcolm Beattie已经写了一个多功能的後端编译器,可以从 CPAN取得,它就能做到这两项功能。它包含在 perl5.005 发布中,但是仍然是测试版。这代表着若你是个程式设计 员而非寻找万灵解药的人,那麽参与其测试就会充满趣味。
+.PP
+请了解光是编译成 C 其本身或在本质上并不能保证它就会跑得快更多。那是因为除了在运气好的状况中有一堆可以衍生成出来的原生形态外,平时的 Perl 执行系统环境依然存在因此依然会花差不多长的执行时间与占用差不多大小的记忆空间。大多数程式能省下来的不过是编译时间,这使执行速度顶多快 10-30%。有些罕见的程式能真正从中受利 (例如增快好几倍),但这还得配合原始码的微调。
+.PP
+你或许会惊讶地发现,现行版本的编译器做出来的执行档大小跟你的 Perl直译器一样大,有时更大些。那是因为依照现在的写法,所有的程式皆转成一个被 eval()的大叙述。只要建造一个动态连结的 libperl.so程式库,并将之连结起来,你就可以戏剧性地减少这 种浪费。参看 perl原始码套件中的 INSTALL pod档案以获得更详尽的讯息。如果你用这方法连结你主要的 perl执行档,就能使它变得很渺小。举例来说,在作者之一的系 统里, /usr/bin/perl只有 11k“小”而已!
+.PP
+In general, the compiler will do nothing to make a Perl program smaller,
+faster, more portable, or more secure.  In fact, it can make your
+situation worse.  The executable will be bigger, your \s-1VM\s0 system may take
+longer to load the whole thing, the binary is fragile and hard to fix,
+and compilation never stopped software piracy in the form of crackers,
+viruses, or bootleggers.  The real advantage of the compiler is merely
+packaging, and once you see the size of what it makes (well, unless
+you use a shared \fIlibperl.so\fR), you'll probably want a complete
+Perl install anyway.
+.Sh "How can I compile Perl into Java?"
+.IX Subsection "How can I compile Perl into Java?"
+You can also integrate Java and Perl with the
+Perl Resource Kit from O'Reilly and Associates.  See
+http://www.oreilly.com/catalog/prkunix/ .
+.PP
+Perl 5.6 comes with Java Perl Lingo, or \s-1JPL\s0.  \s-1JPL\s0, still in
+development, allows Perl code to be called from Java.  See jpl/README
+in the Perl source tree.
+.ie n .Sh "如何才能让 "#!perl" 在 [MS-DOS,NT,...] 下起作用?"
+.el .Sh "如何才能让 "#!perl" 在 [MS-DOS,NT,...] 下起作用?"
+.IX Subsection "How can I get #!perl to work on [MS-DOS,NT,...]?"
+OS/2下只要用:
+.PP
+.Vb 1
+\&    extproc perl -S -your_switches
+.Ve
+.PP
+当作 \f(CW\*(C`*.cmd\*(C'\fR 档案的第一行 (\f(CW\*(C`\-S\*(C'\fR 是因 cmd.exe中其 `extproc'处理的臭虫才要的)。DOS使用者应先制作一个相对的 batch 档案然後将它以 ALTERNATIVE_SHEBANG 的方式写成程式。(更多讯息在原始码版本的 INSTALL档案里)
+.PP
+The Win95/NT installation, when using the ActiveState port of Perl,
+will modify the Registry to associate the \f(CW\*(C`.pl\*(C'\fR extension with the
+perl interpreter.  If you install another port, perhaps even building
+your own Win95/NT Perl from the standard sources by using a Windows port
+of gcc (e.g., with cygwin or mingw32), then you'll have to modify
+the Registry yourself.  In addition to associating \f(CW\*(C`.pl\*(C'\fR with the
+interpreter, \s-1NT\s0 people can use: \f(CW\*(C`SET PATHEXT=%PATHEXT%;.PL\*(C'\fR to let them
+run the program \f(CW\*(C`install\-linux.pl\*(C'\fR merely by typing \f(CW\*(C`install\-linux\*(C'\fR.
+.PP
+麦金塔的 perl程式将会有适当的创造者与形态 (Creator and Type),所以双击它们就会执行这些 perl 应用程式。
+.PP
+重要:不论你做什麽,请千万不要因为觉得沮丧,就把 perl 直译器丢到你的 cgi-bin目录下,好让你的 web 伺服器能执行你的程式。这是一个非常大的安全漏洞。花点时间想想怎样才是正确的做法吧。
+.Sh "我能利用命令行写出有用的程式吗?"
+.IX Subsection "Can I write useful Perl programs on the command line?"
+可以。详情请看 perlrun。以下有些范例 (假设用的是标准的 Unix shell引言规则)。
+.PP
+.Vb 2
+\&    # 把第一栏和最後一栏相加
+\&    perl -lane 'print $F[0] + $F[-1]' *
+.Ve
+.PP
+.Vb 2
+\&    # 辨别是否为文字档
+\&    perl -le 'for(@ARGV) {print if -f && -T _}' *
+.Ve
+.PP
+.Vb 2
+\&    # 移除 C程式中的说明
+\&    perl -0777 -pe 's{/\e*.*?\e*/}{}gs' foo.c
+.Ve
+.PP
+.Vb 2
+\&    # 让档案年轻一个月,躲避 reaper daemons
+\&    perl -e '$X=24*60*60; utime(time(),time() + 30 * $X, at ARGV)' *
+.Ve
+.PP
+.Vb 2
+\&    # 找出第一个未用的 uid
+\&    perl -le '$i++ while getpwuid($i); print $i'
+.Ve
+.PP
+.Vb 3
+\&    # 显示合理的使用说明路径 (manpath)
+\&    echo $PATH | perl -nl -072 -e '
+\&        s![^/+]*$!man!&&-d&&!$s{$_}++&&push at m,$_;END{print"@m"}'
+.Ve
+.PP
+好吧,最後一个例子事实上是「perl程式困惑化」竞赛 (Obfuscated Perl)的 参赛作品。 :-)
+.Sh "为何一行的 perl 程式无法在我的 DOS/Mac/VMS系统上运作?"
+.IX Subsection "Why don't Perl one-liners work on my DOS/Mac/VMS system?"
+问题通常出在那些系统的命令解译器对於参数的引用与 Unix shells 所作的解释不同,而後者很不幸的是这些一行 perl 的生父。在某些系统,也许你得把单引号改成双引号,但这却是你万万 不可在 Unix或 Plan9系统上作的事。你也许还得把一个 %改成 %%。
+.PP
+例如:
+.PP
+.Vb 2
+\&    # Unix
+\&    perl -e 'print "Hello world\en"'
+.Ve
+.PP
+.Vb 2
+\&    # DOS 和其他机器
+\&    perl -e "print \e"Hello world\en\e""
+.Ve
+.PP
+.Vb 3
+\&    # Mac
+\&    print "Hello world\en"
+\&     (然后运行 "Myscript" 或按 Shift-Command-R)
+.Ve
+.PP
+.Vb 2
+\&    # MPW
+\&    perl -e 'print "Hello world\en"'
+.Ve
+.PP
+.Vb 2
+\&    # VMS
+\&    perl -e "print ""Hello world\en"""
+.Ve
+.PP
+问题是,这些方法没有一个是完全可靠的:它都得看命令解译器的脸色。在 Unix中,前两者通常可以用。在 DOS下,两者可能都没有用。若 4DOS是命令解译器,下面此法可能比 较有希望:
+.PP
+.Vb 1
+\&  perl -e "print <Ctrl-x>"Hello world\en<Ctrl-x>""
+.Ve
+.PP
+在 Mac 下,端视你所用的环境为何。 MacPerl所附的 shell,或是 MPW, 其所支援的参数格式有不少都蛮像 Unix shells的,除了它自在地使用 Mac 的非 ASCII字元当成控制字元。
+.PP
+Using \fIqq()\fR, q(), and \fIqx()\fR, instead of \*(L"double quotes\*(R", 'single
+quotes', and `backticks`, may make one-liners easier to write.
+.PP
+恐怕我得说这问题并没有一般解。白话一点说,它真是一团乱。
+.PP
+[部份答案是由 Kenneth Albanowski 所提供的。]
+.Sh "我得去哪里学 Perl的 CGI或是 Web程式设计呢?"
+.IX Subsection "Where can I learn about CGI or Web programming in Perl?"
+就模组来说,去 CPAN抓 CGI 和 LWP 两个模组。就书本来看,参考关於书那部份里特别和 web 相关的问题。若有与 web相关的疑难杂症,像“为何我收到 500错误”或“它在命令列模式下跑得好好的,怎麽不能在浏览器下正常执行”时,请参看:
+.PP
+.Vb 1
+\&        http://www.perl.org/CGI_MetaFAQ.html
+.Ve
+.Sh "从哪里可以学习面向对象的 Perl 编程?"
+.IX Subsection "Where can I learn about object-oriented Perl programming?"
+perltoot是个好开始,然後你可以再参考 perlobj 和 perlboot,Perltoot,perltooc 以及 perlbot (如果你使用老版本的 Perl,你可能没有这些。去 http://www.perldoc.com/ 下载吧,但是首先考虑一下升级你的 perl)
+.PP
+有本好书关于 Perl 中的 \s-1OO\s0 是 \*(L"Object\-Oriented Perl\*(R"
+作者是 Damian Conway ,出版社为 Manning Publications,
+http://www.manning.com/Conway/index.html
+.Sh "从哪里可以学习将 Perl 与 C 连接?[h2xs, xsubpp]"
+.IX Subsection "Where can I learn about linking C with Perl? [h2xs, xsubpp]"
+若你要从 Perl程式呼叫 C,就自 perlxstut开始向 perlxs ,xsubpp ,及 perlguts前进。反之,则读 perlembed ,perlcall ,及 perlguts 。别忘了你可以从各模组的作者如何写他们的模组及解决他们的问题中学到很多。
+.Sh "我已经阅读了 perlembed,perlguts 等等,但是还是不能在我的 C 程序中嵌入 perl;我作错了什么?"
+.IX Subsection "I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?"
+自 CPAN 下载 ExtUtils::Embed 套件,然後执行 `make test'。如果测试成功,就一遍又一遍地读那些 pod 说明档案。若它失败了,参看 perlbug并送一份内有 \f(CW\*(C`make test TEST_VERBOSE=1\*(C'\fR 与 \f(CW\*(C`perl \-V\*(C'\fR 输出的报告。
+.Sh "我试着运行我的脚本时,看到了这样的消息。它是什么意思?"
+.IX Subsection "When I tried to run my script, I got this message. What does it mean?"
+perldiag有一份完整的 perl错误与警告讯息列表,并附有说明文字。你也可以用 splain程式 (伴随 perl而来)去解释这些错误讯息:
+.PP
+.Vb 2
+\&    perl program 2>diag.out
+\&    splain [-v] [-p] diag.out
+.Ve
+.PP
+更改你的程式让它替你解释这些讯息也可以:
+.PP
+.Vb 1
+\&    use diagnostics;
+.Ve
+.PP
+或
+.PP
+.Vb 1
+\&    use diagnostics -verbose;
+.Ve
+.Sh "什麽是 What's MakeMaker?"
+.IX Subsection "What's MakeMaker?"
+此模组 (亦为标准 perl 套件之一部份)设计的目的是要替一个模组从一个 Makefile.PL 中自动撰写出一个 Makefile。详情请看 ExtUtils::MakeMaker。
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2002 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples here are in the public
+domain.  You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit.  A simple comment in the code giving credit to the \s-1FAQ\s0 would
+be courteous but is not required.
+.SH "译者"
+陈彦铭,萧百龄,两只老虎工作室
diff --git a/src/man1/perlfaq7.1 b/src/man1/perlfaq7.1
new file mode 100644
index 0000000..434cf8d
--- /dev/null
+++ b/src/man1/perlfaq7.1
@@ -0,0 +1,1001 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ7 1"
+.TH PERLFAQ7 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq7 \- 综合的问题 (2003/07/24 02:17:21)
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+本节讨论综合的 Perl 语言问题,不适于在其他所有段落中讨论的问题
+.Sh "我能拿到 Perl的 BNF/yacc/RE吗?"
+.IX Subsection "Can I get a BNF/yacc/RE for the Perl language?"
+没有 \s-1BNF\s0, 但是你可以从源代码的 perly.y 文件的 yacc 语法中自行归纳,如果你足够勇敢的话。语法依赖于非常智能的词法分析,因此也要准备好阅读 toke.c。
+.PP
+用 Chaim Frenkel的话:\*(L"Perl的语法无法被简化到可以用 BNF 表示。解析Perl的工作是分散於 yacc、lexer、烟雾和镜子之间。\*(R"
+.Sh "$@%*这些符号是什麽意思?我怎麽知道何时该使用他们呢?"
+.IX Subsection "What are all these $@%&* punctuation signs, and how do I know when to use them?"
+它们都是类型限定符号,在 perldata 中详述:
+.PP
+.Vb 6
+\&    $ 标量值,数字,字符串或引用
+\&    @ 数组
+\&    % 散列,关联数组
+\&    & 子程序,也就是函数,过程,方法
+\&    * 代表这个符号的所有类型。在版本4中,可以用作指针,但是在新的 perl 中可以只用引用就可以了
+.Ve
+.PP
+有些其他的符号你可能会碰到但却不是指定形态用的有:
+.PP
+.Vb 2
+\&    <> 这是用来从一个文件句柄里输入一份记录
+\&    \e 取某样东西的引用
+.Ve
+.PP
+注意 <\s-1FILE\s0> 不是用来指定文件类型,亦非此句柄的名字。它只是 将<>这个运算符作用在 FILE这个句柄上。在标量上下文 (scalar context) 中,它自 FILE 把手一次读入一行 (嗯,该说一笔记录,参看 $/),在序列情境 (list context)下,则一次将 全部的内容读 入。当对档案使用开、关或其它 <>之外的动作、或甚至只是提到把 手时,切记不要使用 <>。下面的用法是正确的:\f(CW\*(C`eof(FH)\*(C'\fR, \f(CW\*(C`seek(FH, 0,
+2)\*(C'\fR 以及 \*(L"copying from \s-1STDIN\s0 to \s-1FILE\s0\*(R".
+.Sh "字串加引号或使用分号及逗号是否绝对必要/还是完全没必要?"
+.IX Subsection "Do I always/never have to quote my strings or use semicolons and commas?"
+通常一个没有冠上形态符号的字 (bareword)是不需被纳入引号里的,但在大多数的情况下或许该这麽做 (在 \f(CW\*(C`use strict\*(C'\fR 下则是必须的)。但由一个简单的字(不能是一个已定义的副函数之名称)所构成的索引值,和 \f(CW\*(C`=>\*(C'\fR 左端的运算子,都会被视为已纳入引号了:
+.PP
+.Vb 4
+\&    这些                     和这些一样
+\&    ------------            ---------------
+\&    $foo{line}              $foo{"line"}
+\&    bar => stuff            "bar" => stuff
+.Ve
+.PP
+一个区块末端的分号可有可无,一个序列的最後一个逗号亦同。良好的写作风格 (参看perlstyle)中建议除了在单行程式 (one-liners)的情况外都将他们加上去:
+.PP
+.Vb 2
+\&    if ($whoops) { exit 1 }
+\&    @nums = (1, 2, 3);
+.Ve
+.PP
+.Vb 7
+\&    if ($whoops) {
+\&        exit 1;
+\&    }
+\&    @lines = (
+\&        "There Beren came from mountains cold",
+\&        "And lost he wandered under leaves",
+\&    );
+.Ve
+.Sh "我如何跳过一些传回值?"
+.IX Subsection "How do I skip some return values?"
+一种方法是将传回值当作序列来对待,然後用索引来指名其中的某个位置:
+.PP
+.Vb 1
+\&        $dir = (getpwnam($user))[7];
+.Ve
+.PP
+另一种方法就是在等号左端用 undef 作元素:
+.PP
+.Vb 1
+\&    ($dev, $ino, undef, undef, $uid, $gid) = stat($file);
+.Ve
+.PP
+也可以用一个列表片段来仅选择你需要的元素:
+.PP
+.Vb 1
+\&        ($dev, $ino, $uid, $gid) = ( stat($file) )[0,1,4,5];
+.Ve
+.Sh "我如何暂时滤掉警告讯息?"
+.IX Subsection "How do I temporarily block warnings?"
+如果正在运行 Perl 5.6.0 或更高版本, \f(CW\*(C`use warnings\*(C'\fR 编用可以对警告如何产生进行很好的控制。参见 perllexwarn 中的细节
+.PP
+.Vb 4
+\&    {
+\&        no warnings;          # 暂时关掉警告讯息
+\&        $a = $b + $c;         # 我知道这些变数可能未定义
+\&    }
+.Ve
+.PP
+如果运行旧版本的 Perl,变量 \f(CW$^W\fR (在 perlvar 中有记载) 控制了这个块的运行时警告:
+.PP
+.Vb 4
+\&    {
+\&        local $^W = 0;        # 暂时关掉警告讯息
+\&        $a = $b + $c;         # 我知道这些变数可能未定义
+\&    }
+.Ve
+.PP
+注意,像所有的标点符号变数一样,目前不能对 \f(CW$^W\fR 用 my(),只能用 local()。
+.Sh "什麽是一个扩充?"
+.IX Subsection "What's an extension?"
+一种从 Perl呼叫编译好的 C程式码的方法。阅读 perlxstut是个多了解扩充(extensions)的好方法。
+.Sh "为何 Perl运算子的优先顺序和 C的不一样?"
+.IX Subsection "Why do Perl operators have different precedence than C operators?"
+事实上它们是相同的。所有 Perl自 C借过来的运算子都具备与原来在 C 中相同的优先顺序。问题出在那些 C没有的运算子,特别是那些将其右方一律当成序列情境对待的函数,例如 print, chmod, exec等等。这类的函数被称作序列运算子(\*(L"list operators\*(R"),在 perlop的优先顺序表中就是这麽称呼。
+.PP
+一个常犯的错误像是:
+.PP
+.Vb 1
+\&    unlink $file || die "snafu";
+.Ve
+.PP
+这会被解译器看成是:
+.PP
+.Vb 1
+\&    unlink ($file || die "snafu");
+.Ve
+.PP
+要避免此问题,须加上括号或是用超低优先的 \f(CW\*(C`or\*(C'\fR 运算子:
+.PP
+.Vb 2
+\&    (unlink $file) || die "snafu";
+\&    unlink $file or die "snafu";
+.Ve
+.PP
+这些“英文的”运算子 (and, or, xor,及 not)是刻意设计成较一般序列运算子低的优先顺序,这就是为了解决前述的状况。
+.PP
+另一个拥有出人意料的优先顺序者为指数。它甚至高於负号,这使得 \f(CW\*(C`\-2**2\*(C'\fR变成负四而非正四。他同时也会“向右靠”(right-associate),意思是说 \f(CW\*(C`2**3**2\*(C'\fR 代表二的九次方,而不是八的平方。
+.PP
+Although it has the same precedence as in C, Perl's \f(CW\*(C`?:\*(C'\fR operator
+produces an lvalue.  This assigns \f(CW$x\fR to either \f(CW$a\fR or \f(CW$b\fR, depending
+on the trueness of \f(CW$maybe:\fR
+.PP
+.Vb 1
+\&    ($maybe ? $a : $b) = $x;
+.Ve
+.Sh "我如何声明/创建一个数据结构?"
+.IX Subsection "How do I declare/create a structure?"
+一般来说,我们不 ``声明'' 一个结构。用一个 (通常是匿名的) 散列的引用 (hash reference)即可。参看 perlref 以及 perldsc,里面有更多资料。以下是一个范例:
+.PP
+.Vb 3
+\&    $person = {};                   # new anonymous hash
+\&    $person->{AGE}  = 24;           # set field AGE to 24
+\&    $person->{NAME} = "Nat";        # set field NAME to "Nat"
+.Ve
+.PP
+如果你要的是更严谨的写法,看看 perltoot 。
+.Sh "如何创建一个模块?"
+.IX Subsection "How do I create a module?"
+一个模组就是一个放在同名档案里的包裹(package)。例如,Hello::There模组会放在Hello/There.pm。perlmod 里有详尽说明。Exporter 也会很有帮助。如果你正在写一个 C 或是混合了 C及 Perl 的模组,那麽你就该读 perlxstut 。
+.PP
+The \f(CW\*(C`h2xs\*(C'\fR program will create stubs for all the important stuff for you:
+.PP
+.Vb 1
+\&  % h2xs -XA -n My::Module
+.Ve
+.PP
+The \f(CW\*(C`\-X\*(C'\fR switch tells \f(CW\*(C`h2xs\*(C'\fR that you are not using \f(CW\*(C`XS\*(C'\fR extension
+code.  The \f(CW\*(C`\-A\*(C'\fR switch tells \f(CW\*(C`h2xs\*(C'\fR that you are not using the
+AutoLoader, and the \f(CW\*(C`\-n\*(C'\fR switch specifies the name of the module.
+See h2xs for more details.
+.Sh "如何创建一个类?"
+.IX Subsection "How do I create a class?"
+perltoot 里面有对於类和对象的介绍, perlobj 和 perlbot 也有。
+.Sh "如何知道一个变量是否是污染的?"
+.IX Subsection "How can I tell if a variable is tainted?"
+可以使用 Scalar::Util 模块中的 \fItainted()\fR 函数 (可从 CPAN 获取,也包含在 Perl 5.8.0 中)。参见 perlsec 中的 \*(L"Laundering and Detecting Tainted Data\*(R" 。
+.Sh "什么是闭包?"
+.IX Subsection "What's a closure?"
+关於闭包的说明,请看 perlref 。
+.PP
+闭包 (closure)是个精确但又很难解释的计算机科学名词。在 Perl 里面,闭包是以匿名函数的形式来实现,具有持续参照位於该函数范围之外的文字式变数值的能力。这些外部的文字变数会神奇地保留它们在闭包函数最初定义时的值 (深连结)。
+.PP
+如果一个程式语言容许函数递回另一个函数的话 (像 Perl 就是),闭包便具有意义。要注意的是,有些语言虽提供匿名函数的功能,但却无法正确处理闭包; Python 这个语言便是一例。如果要想多了解闭包的话,建议你去找本功能性程式设计的教科书来看。Scheme这个语言不仅支援闭包,更鼓励多加使用。
+.PP
+以下是个典型的产生函数的函数:
+.PP
+.Vb 3
+\&    sub add_function_generator {
+\&      return sub { shift + shift };
+\&    }
+.Ve
+.PP
+.Vb 2
+\&    $add_sub = add_function_generator();
+\&    $sum = $add_sub->(4,5);                # $sum is 9 now.
+.Ve
+.PP
+闭包用起来就像是个 函数样板,其中保留了一些可以在稍後再填入的空格。 add_function_generator() 所递回的匿名函数在技术上来讲并不能算是一个闭包,因为它没有用到任何位在这个函数范围之外的文字变数。
+.PP
+把上面这个例子和下面这个 make_adder()函数对照一下,下面这个函数所递回的匿名函数中使用了一个外部的文字变数。这种指名外部函数的作法需要由 Perl递回一个适当的闭包,因此那个文字变数在匿名函数产生之时的值便永久地被锁进闭 包里。
+.PP
+.Vb 4
+\&    sub make_adder {
+\&        my $addpiece = shift;
+\&        return sub { shift + $addpiece };
+\&    }
+.Ve
+.PP
+.Vb 2
+\&    $f1 = make_adder(20);
+\&    $f2 = make_adder(555);
+.Ve
+.PP
+这样一来 \f(CW\*(C`&$f1($n)\*(C'\fR 永远会是 20加上你传进去的值 \f(CW$n\fR ,而 \&\f(CW\*(C`&$f2($n)\*(C'\fR 将 永远会是 555加上你传进去的值 $n。\f(CW$addpiece\fR 的值会在闭包中保留下来。
+.PP
+闭包在比较实际的场合中也常用得到,譬如当你想把一些程式码传入一个函数时:
+.PP
+.Vb 2
+\&    my $line;
+\&    timeout( 30, sub { $line = <STDIN> } );
+.Ve
+.PP
+如果要执行的程式码当初是以字串的形式传入的话,即 \f(CW'$line = <STDIN>'\fR ,那麽 timeout() 这个假想的函数在回到该函数被呼叫时所在的范围後便无法再撷取 \f(CW$line\fR 这个文字变数的值了。
+.Sh "什么是变量自杀,我应该怎样防止它?"
+.IX Subsection "What is variable suicide and how can I prevent it?"
+变数自杀指的是 (暂时或是永久)地失去一个变数的值。造成这个现象的原因是做范围界定的 my() 和 local()和闭包或 foreach()回圈变数及函数参数相互影响 所致。过去很容易偶尔丢失变量,现在就困难多了,可以试试这段代码:
+.PP
+.Vb 6
+\&    my $f = "foo";
+\&    sub T {
+\&      while ($i++ < 3) { my $f = $f; $f .= "bar"; print $f, "\en" }
+\&    }
+\&    T;
+\&    print "Finally $f\en";
+.Ve
+.PP
+有叁个 \*(L"bar\*(R" 加进去的 \f(CW$f\fR 变数应该是一个新的 \f(CW$f\fR (因为 \f(CW\*(C`my $f\*(C'\fR 在每个循环都应该创造一个新的区域变数)。然而,实际上并非如此。这个臭虫最新的 Perl 版本中已被修正 (在 5.004_05, 5.005_03 和 5.005_56 上测试过)。
+.Sh "如何传递/返回一个{函数 Function, 文件句柄 FileHandle, 数组 Array,散列 Hash, 方法 Method, 正则表达式 Regex}?"
+.IX Subsection "How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?"
+除了正规表现式这个特例外,你需要以传参考值的方式传资料给这些物件。参看 perlsub 中的 \*(L"Pass by Reference\*(R",里面有针对此问题的讨论,以及 perlref 里面有引用的资讯。
+.PP
+参见下面的 ``Passing Regexes'',学习如何传递正则表达式。
+.IP "传递变量和函数" 4
+.IX Item "Passing Variables and Functions"
+一般的变数和函数是相当简单的:只要传一个指向现存的匿名变数或函数的参考值即可:
+.Sp
+.Vb 1
+\&    func( \e$some_scalar );
+.Ve
+.Sp
+.Vb 2
+\&    func( \e at some_array  );
+\&    func( [ 1 .. 10 ]   );
+.Ve
+.Sp
+.Vb 2
+\&    func( \e%some_hash   );
+\&    func( { this => 10, that => 20 }   );
+.Ve
+.Sp
+.Vb 2
+\&    func( \e&some_func   );
+\&    func( sub { $_[0] ** $_[1] }   );
+.Ve
+.IP "传递文件句柄" 4
+.IX Item "Passing Filehandles"
+在 Perl5.6 中,你可以用标量变量表示文件句柄,并将它与其他标量同样处理
+.Sp
+.Vb 2
+\&        open my $fh, $filename or die "Cannot open $filename! $!";
+\&        func( $fh );
+.Ve
+.Sp
+.Vb 2
+\&        sub func {
+\&                my $passed_fh = shift;
+.Ve
+.Sp
+.Vb 2
+\&                my $line = <$fh>;
+\&                }
+.Ve
+.Sp
+在 Perl5.6 之前,必须用 \f(CW*FH\fR 或 \f(CW\*(C`\e*FH\*(C'\fR 语法。这叫做 \*(L"typeglobs\*(R"\-\-参见 perldata 中的 \*(L"Typeglobs and Filehandles\*(R" 和 perlsub 中的 \*(L"Pass by Reference\*(R"。
+.IP "传递正则表达式" 4
+.IX Item "Passing Regexes"
+要传递正则表达式,你需要使用足够新的 Perl 发行,足以支持 \f(CW\*(C`qr//\*(C'\fR 构造方式的版本,传递字符串,使用一个捕获异常的 eval,或者其他更聪明的办法。
+.Sp
+这里有一个如何传递正则表达式字符串的例子,使用 \f(CW\*(C`qr//\*(C'\fR:
+.Sp
+.Vb 6
+\&    sub compare($$) {
+\&        my ($val1, $regex) = @_;
+\&        my $retval = $val1 =~ /$regex/;
+\&        return $retval;
+\&    }
+\&    $match = compare("old McDonald", qr/d.*D/i);
+.Ve
+.Sp
+注意 \f(CW\*(C`qr//\*(C'\fR 如何允许在后面加上标志。这个模式在编译期被编译,尽管它后来才执行。 \f(CW\*(C`qr//\*(C'\fR
+表示法虽然好用,但是直到 5.005 发行中才引入。在那之前,你必须用不直观的办法。例如,如果没有 \f(CW\*(C`qr//\*(C'\fR 的话:
+.Sp
+.Vb 6
+\&    sub compare($$) {
+\&        my ($val1, $regex) = @_;
+\&        my $retval = eval { $val1 =~ /$regex/ };
+\&        die if $@;
+\&        return $retval;
+\&    }
+.Ve
+.Sp
+.Vb 1
+\&    $match = compare("old McDonald", q/($?i)d.*D/);
+.Ve
+.Sp
+确保你没有任何这样的东西:
+.Sp
+.Vb 1
+\&    return eval "\e$val =~ /$regex/";   # WRONG
+.Ve
+.Sp
+否则别人会靠双引号括起来的字串以及 eval 双重解译的本质而偷偷插入 shell指令来作坏事。例如:
+.Sp
+.Vb 1
+\&    $pattern_of_evil = 'danger ${ system("rm -rf * &") } danger';
+.Ve
+.Sp
+.Vb 1
+\&    eval "\e$string =~ /$pattern_of_evil/";
+.Ve
+.Sp
+想学非常非常聪明的方法的读者可以参考 O'Reilly 出的 Mastering Regular Expressions这本书,作者是 Jeffrey Friedl。其中第 273页的 Build_MatchMany_Function()特别的有趣。在 perlfaq2中可以找到有关本书 的资料。
+.IP "传递方法" 4
+.IX Item "Passing Methods"
+要传递一个对象方法给一个函数,可以这样做:
+.Sp
+.Vb 7
+\&    call_a_lot(10, $some_obj, "methname")
+\&    sub call_a_lot {
+\&        my ($count, $widget, $trick) = @_;
+\&        for (my $i = 0; $i < $count; $i++) {
+\&            $widget->$trick();
+\&        }
+\&    }
+.Ve
+.Sp
+或者,使用一个闭包来包含这个对象,它的方法调用及参数:
+.Sp
+.Vb 6
+\&    my $whatnot =  sub { $some_obj->obfuscate(@args) };
+\&    func($whatnot);
+\&    sub func {
+\&        my $code = shift;
+\&        &$code();
+\&    }
+.Ve
+.Sp
+也可以研究 UNIVERSAL 类别中的 can()方法 (附於标准 Perl 版本中)。
+.Sh "How do I create a static variable?"
+.IX Subsection "如何创建一个静态变量?"
+就像与 Perl相关的其他事情一样,``条条大路通罗马'' (TMTOWTDI)。对其他语言来说叫做 ``静态变数'' (static variable)的东西,在 Perl里面可能是一个函数私有的变数(只有该函数自己看得到,且在不同的呼叫间保持定值),或是一个档案私有(file-private)变数(只有同一个档案中的函数才看得到)。
+.PP
+以下就是实作函数私有变数的程式:
+.PP
+.Vb 5
+\&    BEGIN {
+\&        my $counter = 42;
+\&        sub prev_counter { return --$counter }
+\&        sub next_counter { return $counter++ }
+\&    }
+.Ve
+.PP
+prev_counter() 和 next_counter() 将会共用一个於编译时初始化的私有变数 $counter。
+.PP
+要声明一个档案私有(file-private)变数,你仍然得使用 my(),将它放在档案开头处最外围。假设现在是在 Pax.pm 这个档案里:
+.PP
+.Vb 2
+\&    package Pax;
+\&    my $started = scalar(localtime(time()));
+.Ve
+.PP
+.Vb 1
+\&    sub begun { return $started }
+.Ve
+.PP
+当用 \f(CW\*(C`use Pax\*(C'\fR 或 \f(CW\*(C`require Pax\*(C'\fR 载入此模组时,这个变数就会被初始化。不过它不会被资源回收,像其他出了有效范围的变数那样,因为 begun()函数要用到它,但是没有其他函数能撷取它。这个变数不能以 \f(CW$Pax::started\fR 的形式来撷取,因为它所存在的范围与此包裹无关。它存在的范围是这个档案。可想见地,一个档案里可以放好几个包裹,而所有的包裹都撷取同一个私有变数,但从另一个档案中,即使是属於同一个包裹(package),也不能取得它的值。
+.PP
+参见 perlsub 中的 \*(L"Persistent Private Variables\*(R" 的细节.
+.Sh "What's the difference between dynamic and lexical (static) scoping?  Between \fIlocal()\fP and \fImy()\fP?"
+.IX Subsection "动态和静态作用域有什么区别?local() 和 my() 呢?"
+local($x) 将全域变数 $x的原值存起来,并在此函数执行期间赋予一个新 值,此值可以从此函数所呼叫的其他函数里看见。这整个步骤是在执行期间完成的,所以才叫做动态范围选取 (dynamic scoping)。local()影响的是全域变数,或者称作包裹变数或动态变数。
+.PP
+\&\f(CW\*(C`my($x)\*(C'\fR 会创造一个只能在目前这个函数里看得见的新变数。这个步骤是在编译期完成(compile-time),所以称作文字式或是静态范围选取。my()总是作用在私有变数,也称作文字式变数或(不当地)称作静态(范围选取)变数。
+.PP
+例如:
+.PP
+.Vb 3
+\&    sub visible {
+\&        print "var has value $var\en";
+\&    }
+.Ve
+.PP
+.Vb 4
+\&    sub dynamic {
+\&        local $var = 'local';   # 为全局变量暂时赋值
+\&        visible();              # 调用 $var 变量
+\&    }
+.Ve
+.PP
+.Vb 4
+\&    sub lexical {
+\&        my $var = 'private';    # 新的私有变量 $var
+\&        visible();              # (在 sub 作用域之外不可见)
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    $var = 'global';
+.Ve
+.PP
+.Vb 3
+\&    visible();                  # prints global
+\&    dynamic();                  # prints local
+\&    lexical();                  # prints global
+.Ve
+.PP
+你可以发现在整个过程中 ``private''这个值都印不出来。那是因为 $var的值只存在於lexical() 函数的区块里面,对它所呼叫的函数来说是看不到的。
+.PP
+总结来说,local()不会产生你想像中的私有、区域变数。它只是将一个暂时的值授予一个全域变数。如果你要的是私有的变数,那麽 my() 才是你要找的。
+.PP
+参见 perlsub 中的 \*(L"Private Variables via \fImy()\fR\*(R" 以及
+\&\*(L"Temporary Values via \fIlocal()\fR\*(R" 来获取详情
+.Sh "在存在同名内部变量的作用域中,如何存取一个动态变量?"
+.IX Subsection "How can I access a dynamic variable while a similarly named lexical is in scope?"
+如果你知道你所在的是哪一个包裹(package)的话,你可以直接指名,就像写 \f(CW$Some_Pack::var\fR 这样。注意 \f(CW$::var\fR 这个写法 并非表示目前此包裹 (package) 内的动态变数 $var,而是指在 main包裹(package) 里的那个,就等价於 \f(CW$main::var\fR 。
+.PP
+.Vb 3
+\&        use vars '$var';
+\&        local $var = "global";
+\&        my    $var = "lexical";
+.Ve
+.PP
+.Vb 2
+\&        print "lexical is $var\en";
+\&        print "global  is $main::var\en";
+.Ve
+.PP
+可选的,可以使用编译器指令 \fIour()\fR 来在当前静态作用域中引入动态变量
+.PP
+.Vb 2
+\&        require 5.006; # our() did not exist before 5.6
+\&        use vars '$var';
+.Ve
+.PP
+.Vb 2
+\&        local $var = "global";
+\&        my $var    = "lexical";
+.Ve
+.PP
+.Vb 1
+\&        print "lexical is $var\en";
+.Ve
+.PP
+.Vb 4
+\&        {
+\&          our $var;
+\&          print "global  is $var\en";
+\&        }
+.Ve
+.Sh "深连接和浅连接有什么不同?"
+.IX Subsection "What's the difference between deep and shallow binding?"
+在深连结中,匿名函数中所用到的文字式变数值是以该函数产生时所在的范围为准。在浅连结中,这些变数值是以函数被呼叫时所在的范围为准,如果在这个范围中恰巧有同名的变数,便使用这些当地变数的值。Perl总是使用文字式变数(就是以 my()创造的)式的深连结。然而,动态变数(也称作全域(global),区域(local),或包裹(package)变数)在功效上是浅连结。就把这当作是少用它们的另一个理由好 了。请参考 "什么是闭包" 一节。
+.ie n .Sh "为什么 "my($foo) = <FILE>;" 不工作?"
+.el .Sh "为什么 ``my($foo) = <FILE>;''不工作?"
+.IX Subsection "Why doesn't ""my($foo) = <FILE>;"" work right?"
+local()会把 =号右边以序列情境来对待。而 <FH> 这个阅读的 动作,就像 Perl里许多的函数以及运算子一样,会自动分辨出自己被呼叫时所在的情境并且采取适当的作法。一般来说,scalar()函数可以帮点忙。这个函数实际上对资料本身不会有任何作用(与一般所认为的相反),但是会告诉它所作用的函数要以对待纯量值的方法来运算。如果那个函数没有预先定义好碰到纯量情境的行为,那麽它当然也帮不了你(例如 sort() 函数)。
+.PP
+然而,在以上这个例子 (local...)中,只要省略括号便可强制使用标量情境:
+.PP
+.Vb 3
+\&    local($foo) = <FILE>;           # WRONG
+\&    local($foo) = scalar(<FILE>);   # ok
+\&    local $foo  = <FILE>;           # right
+.Ve
+.PP
+其实在这个例子中,或许你该改用文字式变数 (lexical variables),不过会碰到 的问题跟上面一样:
+.PP
+.Vb 2
+\&    my($foo) = <FILE>;  # WRONG
+\&    my $foo  = <FILE>;  # right
+.Ve
+.Sh "如何重定义一个内建函数,操作符 或者方法?"
+.IX Subsection "How do I redefine a builtin function, operator, or method?"
+为什麽要这麽做? :\-)
+.PP
+如果你要覆盖掉某个内建函数,例如说 open(),那你得将其定义从另一个模组载 入。参考 perlsub 中的 Overriding Builtin Functions。在 \*(L"Class::Template\*(R" 里面也有个范例。
+.PP
+如果你要覆盖掉一个 Perl运算子,像是 \f(CW\*(C`+\*(C'\fR 或 \f(CW\*(C`**\*(C'\fR, 那你该使用 \f(CW\*(C`use overload\*(C'\fR 这个编用,在 overload 中有记载。
+.PP
+如果你要覆盖父类别 (parent class)里的方法呼叫 (method calls),请看 perltoot 中的 Overridden Methods 。
+.Sh "调用函数时 &foo 和 foo() 的形式有什么不同?"
+.IX Subsection "What's the difference between calling a function as &foo and foo()?"
+当你用 &foo的方式呼叫一个函数时,你等於让这个函数撷取你目前 @_里面的值,同时也跳过原型定义 (prototypes)不用。这表式此函数抓到的是你当时的 @_, 而非一个空的 @_!虽然严格讲起来它也不能算是个 bug (但是在 perlsub里面是这麽说的)但在大部份情况下,这也算不上是个特别功能。
+.PP
+当你用 &foo()的方式呼叫你的函数时,你会得到一个新的 @_,但是原型定义 仍然会被避开不用。
+.PP
+在一般情况下,你该用 foo()的方式去呼叫函数。只有在编译器已事先知道这个函数的定义时,括号才能省略,譬如当这个函数所在的模组或包裹被 use (但如果是被 require则不行)时,或是透过先前提及或 use subs宣告等方法,让编译器先接触到这个函数的定义。用这种呼叫方式,即使是当括号省掉时,你都会得到一个乾净的 @_,不会有任何不该出现的旧值残留在上面。
+.Sh "如何创建一个分支语句?"
+.IX Subsection "How do I create a switch or case statement?"
+这个问题在 perlsyn 文件里有更详尽的解释。简单来说,因为 Perl本身已提供了多种不同的条件测试方法可供使用 (数值比较、字串比较、 glob比较、正规表示式 对应、覆盖比较,及其它),所以并没有正式的 case叙述语法。虽然自 perl1起这就一直是许多人期盼的一个项目,但因 Larry无法决定怎样才是呈现这功能的最好方法,因此还是将它略掉。
+.PP
+从 Perl 5.8 开始,要使用 swtich 和 case,可以使用 Switch 扩展,就是这样:
+.PP
+.Vb 1
+\&        use Switch;
+.Ve
+.PP
+此后就可以用 switch 和 case 了.  It is not as fast as it could be
+because it's not really part of the language (it's done using source
+filters) but it is available, and it's very flexible.
+.PP
+But if one wants to use pure Perl, the general answer is to write a
+construct like this:
+.PP
+.Vb 6
+\&    for ($variable_to_test) {
+\&        if    (/pat1/)  { }     # do something
+\&        elsif (/pat2/)  { }     # do something else
+\&        elsif (/pat3/)  { }     # do something else
+\&        else            { }     # default
+\&    }
+.Ve
+.PP
+下面这个简单的 switch范例以模式对应为基础。我们将要做的是对储存在 $whatchamacallit里面的参考值 (reference)的类型进行多重条件的判断。【译注:$whatchamacallit 函意为 $what_you_might_call_it】
+.PP
+.Vb 1
+\&    SWITCH: for (ref $whatchamacallit) {
+.Ve
+.PP
+.Vb 1
+\&        /^$/            && die "not a reference";
+.Ve
+.PP
+.Vb 4
+\&        /SCALAR/        && do {
+\&                                print_scalar($$ref);
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 4
+\&        /ARRAY/         && do {
+\&                                print_array(@$ref);
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 4
+\&        /HASH/          && do {
+\&                                print_hash(%$ref);
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 4
+\&        /CODE/          && do {
+\&                                warn "can't print function ref";
+\&                                last SWITCH;
+\&                        };
+.Ve
+.PP
+.Vb 1
+\&        # DEFAULT
+.Ve
+.PP
+.Vb 1
+\&        warn "User defined type skipped";
+.Ve
+.PP
+.Vb 1
+\&    }
+.Ve
+.PP
+See \f(CW\*(C`perlsyn/"Basic BLOCKs and Switch Statements"\*(C'\fR for many other
+examples in this style.
+.PP
+Sometimes you should change the positions of the constant and the variable.
+For example, let's say you wanted to test which of many answers you were
+given, but in a case-insensitive way that also allows abbreviations.
+You can use the following technique if the strings all start with
+different characters or if you want to arrange the matches so that
+one takes precedence over another, as \f(CW"SEND"\fR has precedence over
+\&\f(CW"STOP"\fR here:
+.PP
+.Vb 6
+\&    chomp($answer = <>);
+\&    if    ("SEND"  =~ /^\eQ$answer/i) { print "Action is send\en"  }
+\&    elsif ("STOP"  =~ /^\eQ$answer/i) { print "Action is stop\en"  }
+\&    elsif ("ABORT" =~ /^\eQ$answer/i) { print "Action is abort\en" }
+\&    elsif ("LIST"  =~ /^\eQ$answer/i) { print "Action is list\en"  }
+\&    elsif ("EDIT"  =~ /^\eQ$answer/i) { print "Action is edit\en"  }
+.Ve
+.PP
+A totally different approach is to create a hash of function references.
+.PP
+.Vb 6
+\&    my %commands = (
+\&        "happy" => \e&joy,
+\&        "sad",  => \e&sullen,
+\&        "done"  => sub { die "See ya!" },
+\&        "mad"   => \e&angry,
+\&    );
+.Ve
+.PP
+.Vb 7
+\&    print "How are you? ";
+\&    chomp($string = <STDIN>);
+\&    if ($commands{$string}) {
+\&        $commands{$string}->();
+\&    } else {
+\&        print "No such command: $string\en";
+\&    }
+.Ve
+.Sh "如何捕获对未定义变量,函数或方法的访问?"
+.IX Subsection "How can I catch accesses to undefined variables, functions, or methods?"
+在 perlsub 中的 \*(L"Autoloading\*(R" 和 perltoot 中的 \*(L"\s-1AUTOLOAD:\s0 Proxy Methods\*(R" 里 提到的 AUTOLOAD 方法让你能捕捉对於未定义函数与方法的呼叫。
+.PP
+When it comes to undefined variables that would trigger a warning
+under \f(CW\*(C`use warnings\*(C'\fR, you can promote the warning to an error.
+.PP
+.Vb 1
+\&        use warnings FATAL => qw(uninitialized);
+.Ve
+.Sh "为什么找不到包含在同一个文件中的方法?"
+.IX Subsection "Why can't a method included in this same file be found?"
+一些可能的原因:你用的继承给搞混了、你拼错了该方法的名字,或是物件的类别错误。这些事在 perltoot里都有更详尽的说明。同时你也可以用 \f(CW\*(C`print ref($object)\*(C'\fR 来找出 \f(CW$object\fR 这个物件是被归到哪个类别底下。
+.PP
+另一个可能的原因是你在 Perl还不知道这个包裹 (package)存在之前便将某个类别名称在间接式物件语法中使用 (例如 \f(CW\*(C`find Guru "Samy"\*(C'\fR)。最好是在开始使用你的包裹前,先确定都已经先把它们定义好了,如果你用的是 use 而非 require的话,这件事便会自动处理好。不然的话,确定你使用箭头式语法 (例如,\f(CW\*(C`Guru\->find("Samy")\*(C'\fR))。在perlobj 里面对於物件的记号有详尽解释。
+.PP
+Make sure to read about creating modules in perlmod and
+the perils of indirect objects in \*(L"Method Invocation\*(R" in perlobj.
+.Sh "如何找到当前的包?"
+.IX Subsection "How can I find out my current package?"
+如果只是一个随意的程式的话,你可以用下面的方法找出目前正被编译的包裹为何:
+.PP
+.Vb 1
+\&    my $packname = __PACKAGE__;
+.Ve
+.PP
+但如果是一个方法的话,而且印出的错误讯息中要包含呼叫此方法的物件 (不见得就是把这个方法编译进去的那个物件)则:
+.PP
+.Vb 5
+\&    sub amethod {
+\&        my $self  = shift;
+\&        my $class = ref($self) || $self;
+\&        warn "called me from a $class object";
+\&    }
+.Ve
+.Sh "如何注释掉大块的 perl 代码?"
+.IX Subsection "How can I comment out a large block of perl code?"
+用内嵌 POD格式的方法把程式码变注解。将要注释掉的块包含在 \s-1POD\s0 标记内, 例如 \f(CW\*(C`=for nobody\*(C'\fR 和 \f(CW\*(C`=cut\*(C'\fR
+(标志着 \s-1POD\s0 块的结束).
+.PP
+.Vb 1
+\&    # 这是程式
+.Ve
+.PP
+.Vb 1
+\&    =for nobody
+.Ve
+.PP
+.Vb 1
+\&    all of this stuff
+.Ve
+.PP
+.Vb 2
+\&    接下来此处所有的文字都会被忽略
+.Ve
+.PP
+.Vb 1
+\&    =cut
+.Ve
+.PP
+.Vb 1
+\&    # program continues
+.Ve
+.PP
+The pod directives cannot go just anywhere.  You must put a
+pod directive where the parser is expecting a new statement,
+not just in the middle of an expression or some other
+arbitrary grammar production.
+.PP
+See perlpod for more details.
+.Sh "How do I clear a package?"
+.IX Subsection "How do I clear a package?"
+Use this code, provided by Mark-Jason Dominus:
+.PP
+.Vb 17
+\&    sub scrub_package {
+\&        no strict 'refs';
+\&        my $pack = shift;
+\&        die "Shouldn't delete main package"
+\&            if $pack eq "" || $pack eq "main";
+\&        my $stash = *{$pack . '::'}{HASH};
+\&        my $name;
+\&        foreach $name (keys %$stash) {
+\&            my $fullname = $pack . '::' . $name;
+\&            # Get rid of everything with that name.
+\&            undef $$fullname;
+\&            undef @$fullname;
+\&            undef %$fullname;
+\&            undef &$fullname;
+\&            undef *$fullname;
+\&        }
+\&    }
+.Ve
+.PP
+Or, if you're using a recent release of Perl, you can
+just use the \fISymbol::delete_package()\fR function instead.
+.Sh "How can I use a variable as a variable name?"
+.IX Subsection "How can I use a variable as a variable name?"
+Beginners often think they want to have a variable contain the name
+of a variable.
+.PP
+.Vb 3
+\&    $fred    = 23;
+\&    $varname = "fred";
+\&    ++$$varname;         # $fred now 24
+.Ve
+.PP
+This works \fIsometimes\fR, but it is a very bad idea for two reasons.
+.PP
+The first reason is that this technique \fIonly works on global
+variables\fR.  That means that if \f(CW$fred\fR is a lexical variable created
+with \fImy()\fR in the above example, the code wouldn't work at all: you'd
+accidentally access the global and skip right over the private lexical
+altogether.  Global variables are bad because they can easily collide
+accidentally and in general make for non-scalable and confusing code.
+.PP
+Symbolic references are forbidden under the \f(CW\*(C`use strict\*(C'\fR pragma.
+They are not true references and consequently are not reference counted
+or garbage collected.
+.PP
+The other reason why using a variable to hold the name of another
+variable is a bad idea is that the question often stems from a lack of
+understanding of Perl data structures, particularly hashes.  By using
+symbolic references, you are just using the package's symbol-table hash
+(like \f(CW%main::\fR) instead of a user-defined hash.  The solution is to
+use your own hash or a real reference instead.
+.PP
+.Vb 3
+\&    $USER_VARS{"fred"} = 23;
+\&    $varname = "fred";
+\&    $USER_VARS{$varname}++;  # not $$varname++
+.Ve
+.PP
+There we're using the \f(CW%USER_VARS\fR hash instead of symbolic references.
+Sometimes this comes up in reading strings from the user with variable
+references and wanting to expand them to the values of your perl
+program's variables.  This is also a bad idea because it conflates the
+program-addressable namespace and the user-addressable one.  Instead of
+reading a string and expanding it to the actual contents of your program's
+own variables:
+.PP
+.Vb 2
+\&    $str = 'this has a $fred and $barney in it';
+\&    $str =~ s/(\e$\ew+)/$1/eeg;             # need double eval
+.Ve
+.PP
+it would be better to keep a hash around like \f(CW%USER_VARS\fR and have
+variable references actually refer to entries in that hash:
+.PP
+.Vb 1
+\&    $str =~ s/\e$(\ew+)/$USER_VARS{$1}/g;   # no /e here at all
+.Ve
+.PP
+That's faster, cleaner, and safer than the previous approach.  Of course,
+you don't need to use a dollar sign.  You could use your own scheme to
+make it less confusing, like bracketed percent symbols, etc.
+.PP
+.Vb 2
+\&    $str = 'this has a %fred% and %barney% in it';
+\&    $str =~ s/%(\ew+)%/$USER_VARS{$1}/g;   # no /e here at all
+.Ve
+.PP
+Another reason that folks sometimes think they want a variable to
+contain the name of a variable is because they don't know how to build
+proper data structures using hashes.  For example, let's say they
+wanted two hashes in their program: \f(CW%fred\fR and \f(CW%barney\fR, and that they
+wanted to use another scalar variable to refer to those by name.
+.PP
+.Vb 2
+\&    $name = "fred";
+\&    $$name{WIFE} = "wilma";     # set %fred
+.Ve
+.PP
+.Vb 2
+\&    $name = "barney";
+\&    $$name{WIFE} = "betty";     # set %barney
+.Ve
+.PP
+This is still a symbolic reference, and is still saddled with the
+problems enumerated above.  It would be far better to write:
+.PP
+.Vb 2
+\&    $folks{"fred"}{WIFE}   = "wilma";
+\&    $folks{"barney"}{WIFE} = "betty";
+.Ve
+.PP
+And just use a multilevel hash to start with.
+.PP
+The only times that you absolutely \fImust\fR use symbolic references are
+when you really must refer to the symbol table.  This may be because it's
+something that can't take a real reference to, such as a format name.
+Doing so may also be important for method calls, since these always go
+through the symbol table for resolution.
+.PP
+In those cases, you would turn off \f(CW\*(C`strict 'refs'\*(C'\fR temporarily so you
+can play around with the symbol table.  For example:
+.PP
+.Vb 5
+\&    @colors = qw(red blue green yellow orange purple violet);
+\&    for my $name (@colors) {
+\&        no strict 'refs';  # renege for the block
+\&        *$name = sub { "<FONT COLOR='$name'>@_</FONT>" };
+\&    }
+.Ve
+.PP
+All those functions (\fIred()\fR, \fIblue()\fR, \fIgreen()\fR, etc.) appear to be separate,
+but the real code in the closure actually was compiled only once.
+.PP
+So, sometimes you might want to use symbolic references to directly
+manipulate the symbol table.  This doesn't matter for formats, handles, and
+subroutines, because they are always global\*(--you can't use \fImy()\fR on them.
+For scalars, arrays, and hashes, though\*(--and usually for subroutines\*(--
+you probably only want to use hard references.
+.ie n .Sh "What does ""bad interpreter"" mean?"
+.el .Sh "What does ``bad interpreter'' mean?"
+.IX Subsection "What does bad interpreter mean?"
+The \*(L"bad interpreter\*(R" message comes from the shell, not perl.  The
+actual message may vary depending on your platform, shell, and locale
+settings.
+.PP
+If you see \*(L"bad interpreter \- no such file or directory\*(R", the first
+line in your perl script (the \*(L"shebang\*(R" line) does not contain the
+right path to perl (or any other program capable of running scripts). 
+Sometimes this happens when you move the script from one machine to
+another and each machine has a different path to perl\-\-\-/usr/bin/perl
+versus /usr/local/bin/perl for instance.
+.PP
+If you see \*(L"bad interpreter: Permission denied\*(R", you need to make your
+script executable.
+.PP
+In either case, you should still be able to run the scripts with perl
+explicitly:
+.PP
+.Vb 1
+\&        % perl script.pl
+.Ve
+.PP
+If you get a message like \*(L"perl: command not found\*(R", perl is not in
+your \s-1PATH\s0, which might also mean that the location of perl is not
+where you expect it so you need to adjust your shebang line.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2002 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
+.SH "译者"
+.B 陈彦铭,萧百龄,两只老虎工作室
\ No newline at end of file
diff --git a/src/man1/perlfaq8.1 b/src/man1/perlfaq8.1
new file mode 100644
index 0000000..2d923f6
--- /dev/null
+++ b/src/man1/perlfaq8.1
@@ -0,0 +1,1193 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ8 1"
+.TH PERLFAQ8 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq8 \- 系统交互 (2003/01/26 17:44:04 )
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+Perl FAQ 的这一节覆盖了与系统交互有关的问题。主题包括进程间通信 (IPC),用户界面控制 (键盘,屏幕和指点设备),以及其他与数据操作不相关的事项
+.PP
+阅读你系统中的 perl 自带的 FAQ 和文档 (例如,perlvms,perlplan9...)。它们会包含有关你的 perl 版本的更详细的信息。
+.Sh "如何找出正在运行的操作系统?"
+.IX Subsection "How do I find out which operating system I'm running under?"$^O 这个变数(若使用 English 模组就是 $OSTYPE)会指出你的 perl 解译器执 行档是替哪个作业系统、平台所建的。
+.Sh "为什么 exec() 不返回?"
+.IX Subsection "How come exec() doesn't return?"
+因为这正是它所做的:它用另一个不同的程式来取代你当时所执行的。如果你的程 式需要继续跑下去(这可能正是你问此问题的原因吧?),改用 system() 。
+.Sh "如何对键盘/萤幕/滑鼠做些花样?"
+.IX Subsection "How do I do fancy stuff with the keyboard/screen/mouse?"
+连接/控制 键盘、萤幕和指标装置(「滑鼠」)的方法因作业系统的不同而有不 同;不妨试试下列模组:
+.IP "Keyboard" 4
+.IX Item "Keyboard"
+.Vb 5
+\&    Term::Cap                   标准内建模组
+\&    Term::ReadKey               CPAN
+\&    Term::ReadLine::Gnu         CPAN
+\&    Term::ReadLine::Perl        CPAN
+\&    Term::Screen                CPAN
+.Ve
+.IP "Screen" 4
+.IX Item "Screen"
+.Vb 3
+\&    Term::Cap                   标准内建模组
+\&    Curses                      CPAN
+\&    Term::ANSIColor             CPAN
+.Ve
+.IP "Mouse" 4
+.IX Item "Mouse"
+.Vb 1
+\&    Tk                          CPAN
+.Ve
+.PP
+Some of these specific cases are shown below.
+.Sh "How do I print something out in color?"
+.IX Subsection "How do I print something out in color?"
+In general, you don't, because you don't know whether
+the recipient has a color-aware display device.  If you
+know that they have an \s-1ANSI\s0 terminal that understands
+color, you can use the Term::ANSIColor module from \s-1CPAN:\s0
+.PP
+.Vb 3
+\&    use Term::ANSIColor;
+\&    print color("red"), "Stop!\en", color("reset");
+\&    print color("green"), "Go!\en", color("reset");
+.Ve
+.PP
+Or like this:
+.PP
+.Vb 3
+\&    use Term::ANSIColor qw(:constants);
+\&    print RED, "Stop!\en", RESET;
+\&    print GREEN, "Go!\en", RESET;
+.Ve
+.Sh "How do I read just one key without waiting for a return key?"
+.IX Subsection "How do I read just one key without waiting for a return key?"
+Controlling input buffering is a remarkably system-dependent matter.
+On many systems, you can just use the \fBstty\fR command as shown in
+\&\*(L"getc\*(R" in perlfunc, but as you see, that's already getting you into
+portability snags.
+.PP
+.Vb 6
+\&    open(TTY, "+</dev/tty") or die "no tty: $!";
+\&    system "stty  cbreak </dev/tty >/dev/tty 2>&1";
+\&    $key = getc(TTY);           # perhaps this works
+\&    # OR ELSE
+\&    sysread(TTY, $key, 1);      # probably this does
+\&    system "stty -cbreak </dev/tty >/dev/tty 2>&1";
+.Ve
+.PP
+The Term::ReadKey module from \s-1CPAN\s0 offers an easy-to-use interface that
+should be more efficient than shelling out to \fBstty\fR for each key.
+It even includes limited support for Windows.
+.PP
+.Vb 4
+\&    use Term::ReadKey;
+\&    ReadMode('cbreak');
+\&    $key = ReadKey(0);
+\&    ReadMode('normal');
+.Ve
+.PP
+However, using the code requires that you have a working C compiler
+and can use it to build and install a \s-1CPAN\s0 module.  Here's a solution
+using the standard \s-1POSIX\s0 module, which is already on your systems
+(assuming your system supports \s-1POSIX\s0).
+.PP
+.Vb 2
+\&    use HotKey;
+\&    $key = readkey();
+.Ve
+.PP
+And here's the HotKey module, which hides the somewhat mystifying calls
+to manipulate the \s-1POSIX\s0 termios structures.
+.PP
+.Vb 2
+\&    # HotKey.pm
+\&    package HotKey;
+.Ve
+.PP
+.Vb 2
+\&    @ISA = qw(Exporter);
+\&    @EXPORT = qw(cbreak cooked readkey);
+.Ve
+.PP
+.Vb 3
+\&    use strict;
+\&    use POSIX qw(:termios_h);
+\&    my ($term, $oterm, $echo, $noecho, $fd_stdin);
+.Ve
+.PP
+.Vb 4
+\&    $fd_stdin = fileno(STDIN);
+\&    $term     = POSIX::Termios->new();
+\&    $term->getattr($fd_stdin);
+\&    $oterm     = $term->getlflag();
+.Ve
+.PP
+.Vb 2
+\&    $echo     = ECHO | ECHOK | ICANON;
+\&    $noecho   = $oterm & ~$echo;
+.Ve
+.PP
+.Vb 5
+\&    sub cbreak {
+\&        $term->setlflag($noecho);  # ok, so i don't want echo either
+\&        $term->setcc(VTIME, 1);
+\&        $term->setattr($fd_stdin, TCSANOW);
+\&    }
+.Ve
+.PP
+.Vb 5
+\&    sub cooked {
+\&        $term->setlflag($oterm);
+\&        $term->setcc(VTIME, 0);
+\&        $term->setattr($fd_stdin, TCSANOW);
+\&    }
+.Ve
+.PP
+.Vb 7
+\&    sub readkey {
+\&        my $key = '';
+\&        cbreak();
+\&        sysread(STDIN, $key, 1);
+\&        cooked();
+\&        return $key;
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    END { cooked() }
+.Ve
+.PP
+.Vb 1
+\&    1;
+.Ve
+.Sh "How do I check whether input is ready on the keyboard?"
+.IX Subsection "How do I check whether input is ready on the keyboard?"
+The easiest way to do this is to read a key in nonblocking mode with the
+Term::ReadKey module from \s-1CPAN\s0, passing it an argument of \-1 to indicate
+not to block:
+.PP
+.Vb 1
+\&    use Term::ReadKey;
+.Ve
+.PP
+.Vb 1
+\&    ReadMode('cbreak');
+.Ve
+.PP
+.Vb 5
+\&    if (defined ($char = ReadKey(-1)) ) {
+\&        # input was waiting and it was $char
+\&    } else {
+\&        # no input was waiting
+\&    }
+.Ve
+.PP
+.Vb 1
+\&    ReadMode('normal');                  # restore normal tty settings
+.Ve
+.Sh "How do I clear the screen?"
+.IX Subsection "How do I clear the screen?"
+If you only have do so infrequently, use \f(CW\*(C`system\*(C'\fR:
+.PP
+.Vb 1
+\&    system("clear");
+.Ve
+.PP
+If you have to do this a lot, save the clear string
+so you can print it 100 times without calling a program
+100 times:
+.PP
+.Vb 2
+\&    $clear_string = `clear`;
+\&    print $clear_string;
+.Ve
+.PP
+If you're planning on doing other screen manipulations, like cursor
+positions, etc, you might wish to use Term::Cap module:
+.PP
+.Vb 3
+\&    use Term::Cap;
+\&    $terminal = Term::Cap->Tgetent( {OSPEED => 9600} );
+\&    $clear_string = $terminal->Tputs('cl');
+.Ve
+.Sh "How do I get the screen size?"
+.IX Subsection "How do I get the screen size?"
+If you have Term::ReadKey module installed from \s-1CPAN\s0,
+you can use it to fetch the width and height in characters
+and in pixels:
+.PP
+.Vb 2
+\&    use Term::ReadKey;
+\&    ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
+.Ve
+.PP
+This is more portable than the raw \f(CW\*(C`ioctl\*(C'\fR, but not as
+illustrative:
+.PP
+.Vb 10
+\&    require 'sys/ioctl.ph';
+\&    die "no TIOCGWINSZ " unless defined &TIOCGWINSZ;
+\&    open(TTY, "+</dev/tty")                     or die "No tty: $!";
+\&    unless (ioctl(TTY, &TIOCGWINSZ, $winsize='')) {
+\&        die sprintf "$0: ioctl TIOCGWINSZ (%08x: $!)\en", &TIOCGWINSZ;
+\&    }
+\&    ($row, $col, $xpixel, $ypixel) = unpack('S4', $winsize);
+\&    print "(row,col) = ($row,$col)";
+\&    print "  (xpixel,ypixel) = ($xpixel,$ypixel)" if $xpixel || $ypixel;
+\&    print "\en";
+.Ve
+.Sh "如何向使用者询问密码?"
+.IX Subsection "How do I ask the user for a password?"
+(这个问题跟全球资讯网一点关系也没有。如果你要找的是跟 WWW 有关的,那就 看另一份常见问题集吧。)
+.PP
+在 perlfunc 中的 \*(L"crypt\*(R" 里面有个范例。首先,将你的终端机设为「无回应」\*(L"no echo\*(R" 模式,然後就用平常的方法将密码读入。你可以用老式的 ioctl() 函数、 POSIX 终端机控制函数(参看 POSIX ,和骆驼书第七章),或是呼叫 stty 程式,这些方法的可携性/移植性程度都不一样。
+.PP
+你也可以在大部份系统上使用 CPAN 里的 Term::ReadKey 模组,这个模组较易使用而且理论上也较据可携性/移植性。
+.PP
+.Vb 1
+\&    use Term::ReadKey;
+.Ve
+.PP
+.Vb 2
+\&    ReadMode('noecho');
+\&    $password = ReadLine(0);
+.Ve
+.Sh "如何读写串口?"
+.IX Subsection "How do I read and write the serial port?"
+这端看你在什麽作业系统上执行你的程式。以 Unix 来说,序列埠可以透过 /dev 目录下的档案来撷取; 而在其他系统上,设备的名称无疑地会不一样。以下是一些在设备互动时可能遭遇的共同问题:
+.IP "lockfiles" 4
+.IX Item "lockfiles"
+你的系统可能会使用锁档来控制多重读写的情况。确定你用的是正确的协定。因为当多个程序同时对一个装置做读取时可能会发生意想不到的情况。
+.IP "open mode" 4
+.IX Item "open mode"
+如果你打算对一个装置同时做读与写的动作,你得将它开到更新的模式( 在 perlfunc 中的 open 里有更详细的解说)。如果你不希望冒着阻挡其他程序读取 这个装置的风险,那就得用 sysopen() 和 Fcntl 模组(标准 perl 的一部分)内 的 \f(CW\*(C`O_RDWR|O_NDELAY|O_NOCTTY\*(C'\fR。在 perlfunc 中的 sysopen 里有对此方法更 详尽的解说。
+.IP "end of line" 4
+.IX Item "end of line"
+有些装置会等着在每行结尾处看到一个 \*(L"\er\*(R",而非 \*(L"\en\*(R"。在某些平台上的 perl, \*(L"\er\*(R"和 \*(L"\en\*(R" 与它们平常(在 Unix 上)所指的 ASCII 值 \*(L"\e015\*(R" 和 \*(L"\e012\*(R" 有 所不同。你也许得直接给定数值,例如用八进位 (\*(L"\e015\*(R")、十六进位 (\*(L"0x0D\*(R"), 或指定控制字元 (\*(L"\ecM\*(R")。
+.Sp
+.Vb 2
+\&    print DEV "atv1\e012";       # wrong, for some devices
+\&    print DEV "atv1\e015";       # right, for some devices
+.Ve
+.Sp
+尽管对普通的文字档案,一个 \*(L"\en\*(R" 便可解决断行的问题,但目前在不同作业系统 间(Unix、DOS/Win 和 Macintosh),对於断行记号仍无统一标准,而只有用 \*(L"\e015\e012\*(R" 来当成 每行的结尾,然後再视需要去掉输出中不想要的部份。这 个做法尤其常用於 socket输出/输入 与自动刷新 (autoflushing),也是接下来 要讨论的主题。
+.IP "flushing output" 4
+.IX Item "flushing output"
+如果你希望 print() 的时候每个字元都要送到你指定的装置去,那你应自动刷新文件句柄。可以使用 \fIselect()\fR 和 \f(CW$|\fR 变量控制自动刷新,参见 perlvar 中的 "$|" 和 perlfunc 中的 \*(L"select\*(R",或 perlfaq5, ``How do I flush/unbuffer an
+output filehandle?  Why must I do this?''):
+.Sp
+.Vb 3
+\&    $oldh = select(DEV);
+\&    $| = 1;
+\&    select($oldh);
+.Ve
+.Sp
+你也可能看到不使用额外的暂存变数的写法,例如:
+.Sp
+.Vb 1
+\&    select((select(DEV), $| = 1)[0]);
+.Ve
+.Sp
+Or if you don't mind pulling in a few thousand lines
+of code just because you're afraid of a little $| variable:
+.Sp
+.Vb 2
+\&    use IO::Handle;
+\&    DEV->autoflush(1);
+.Ve
+.Sp
+As mentioned in the previous item, this still doesn't work when using
+socket I/O between Unix and Macintosh.  You'll need to hard code your
+line terminators, in that case.
+.IP "non-blocking input" 4
+.IX Item "non-blocking input"
+如果你正在做一个阻塞的 read() 或 sysread() 动作,则你需要安排一个闹 铃把手或提供一个逾时设定(参看 alarm)。如果你是用非阻挡式的 开档,那麽就要配合非阻挡性的读取,也就是说得用到4 个参数的 select() 来确 定此装置的 输出/入 是否已准备好了(参考 perlfunc 中的 select )。
+.PP
+While trying to read from his caller-id box, the notorious Jamie Zawinski
+<jwz at netscape.com>, after much gnashing of teeth and fighting with sysread,
+sysopen, \s-1POSIX\s0's tcgetattr business, and various other functions that
+go bump in the night, finally came up with this:
+.PP
+.Vb 13
+\&    sub open_modem {
+\&        use IPC::Open2;
+\&        my $stty = `/bin/stty -g`;
+\&        open2( \e*MODEM_IN, \e*MODEM_OUT, "cu -l$modem_device -s2400 2>&1");
+\&        # starting cu hoses /dev/tty's stty settings, even when it has
+\&        # been opened on a pipe...
+\&        system("/bin/stty $stty");
+\&        $_ = <MODEM_IN>;
+\&        chomp;
+\&        if ( !m/^Connected/ ) {
+\&            print STDERR "$0: cu printed `$_' instead of `Connected'\en";
+\&        }
+\&    }
+.Ve
+.Sh "如何解码加密的口令文件?"
+.IX Subsection "How do I decode encrypted password files?"
+花大把大把的钱去买破解专用的硬体,这会让你成为焦点话题。
+.PP
+说正经的,如果是碰到 Unix 密码档的话就不行 - Unix 密码系统用的是单向的加 密函数。像 Crack 之类的程式可以暴力地(并聪明地)试着猜出密码,但无法 (也不能)保证速战速决。
+.PP
+如果你耽心的是使用者选取不良的密码,你应该在使用者换密码时主动审核(例如说修改 \fIpasswd\fR\|(1) 程式加入这个功能)。
+.Sh "如何在后台开启进程?"
+.IX Subsection "How do I start a process in the background?"
+Several modules can start other processes that do not block
+your Perl program.  You can use IPC::Open3, Parallel::Jobs,
+IPC::Run, and some of the \s-1POE\s0 modules.  See \s-1CPAN\s0 for more
+details.
+.PP
+你可以使用:
+.PP
+.Vb 1
+\&    system("cmd &")
+.Ve
+.PP
+或是用 fork,像 perlfunc 中的 fork 里写的(在 perlipc 里有更进一步的 范例)。如果你在 Unix 类的系统上的话,请注意以下几件事情:
+.IP "\s-1STDIN\s0, \s-1STDOUT\s0, and \s-1STDERR\s0 are shared" 4
+.IX Item "STDIN, STDOUT, 和 STDERR 是共享的"
+主程序和背景程序(即「子」程序)共用同一个 STDIN、STDOUT 和 STDERR 档案 把手。如果两个程序想同时去读、写同一个档案把手,就可能有怪事会发生。你也 许应该替子程序关闭或重新开启这些把手。你可以用开启一个管道 (pipe) 的方法 避免这些问题(参看 open)但是在某些系统上这样做会强迫子程序 必须比父程序早死。
+.IP "信号" 4
+.IX Item "Signals"
+SIGCHLD、可能还有 SIGPIPE 这两个讯号要抓到。当背景程序执行完成後就会送出 SIGCHLD 讯号。而当你写入一个子程序已经关闭的档案把手时就会收到 SIGPIPE 讯号(一个未抓住的 SIGPIPE 可能导致你的程式无声无息地死去)。用 system("cmd&") 的话不会有这样的问题。
+.IP "僵尸进程" 4
+.IX Item "Zombies"
+你得做准备,在子程序结束时「收成」它:
+.Sp
+.Vb 1
+\&    $SIG{CHLD} = sub { wait };
+.Ve
+.Sp
+.Vb 1
+\&    $SIG{CHLD} = 'IGNORE';
+.Ve
+.Sp
+You can also use a double fork. You immediately \fIwait()\fR for your
+first child, and the init daemon will \fIwait()\fR for your grandchild once
+it exits.
+.Sp
+.Vb 8
+\&        unless ($pid = fork) {
+\&                unless (fork) {
+\&            exec "what you really wanna do";
+\&            die "exec failed!";
+\&                }
+\&        exit 0;
+\&        }
+\&    waitpid($pid,0);
+.Ve
+.Sp
+在 Signals 有范例程式教你怎麽做。用 system("prog &") 的 话不会有僵 程序的问题。
+.Sh "如何截获控制字符/信号?"
+.IX Subsection "How do I trap control characters/signals?"
+你并不能真的 ``捕捉'' 一个控制字元。而是控制字元产生一个讯号让你捕捉。关於讯号的资料可以在 Signals 以及骆驼书第六章里找到。
+.PP
+要小心的是,大多 C 程式库无法重新进入 [re-entrant]。因此当你要尝试着在一 个处理器里做 print() 动作,而这个处理器是由另一个stdio 的动作所叫出来的 话,你的内部结构可能会处於失调状态,而程式可能会丢出记忆核心 (dump core)。 有的时候你可以用 syswrite() 取代 print() 以避免这个状况。
+.PP
+除非你极为小心,否则在一个讯号处理器中,唯一安全可做的是:设定一个变数後离开。而在第一个情况下,你在设定变数的时候应确定 malloc() 不会被叫出来 (譬如,设定一个已经有值的变数)。
+.PP
+例如:
+.PP
+.Vb 5
+\&    $Interrupted = 0;   # 确定它有个值
+\&    $SIG{INT} = sub {
+\&        $Interrupted++;
+\&        syswrite(STDERR, "ouch\en", 5);
+\&    }
+.Ve
+.PP
+然而,因为系统呼叫会自己重新启动,你将会发现如果你用的是「慢的」呼叫,像 < FH>、read()、connect() 或 wait(),那麽将它们停下的唯一办法是使 用「跳远」的方式跳出来;也就是产生一个例外讯号。参看在 Signals 里对阻挡性 flock() 的逾时处理器的说明,或骆驼书第六 章。
+.Sh "在 Unix 系统中如何修改 shadow 文件?"
+.IX Subsection "How do I modify the shadow password file on a Unix system?"
+如果你的 perl 安装正确的话,在 perlfunc 里描述的 getpw*() 函数应该就能够读取隐式密码档了(只有读取权)。要更动该档案内容,做一个新的密码档(这个档案的格式因系统而异,请看 passwd(5) )然後用 pwd_mkdb(8)(参考 pwd_mkdb(5))来安装新的密码档。
+.Sh "如何设置时间和日期?"
+.IX Subsection "How do I set the time and date?"
+假设你有足够的权限,你应该可以用 date(1) 程式来设定系统的时间与日期。 (但没有针对个别程序修改时间日期的方法)这机制在 Unix、MS-DOS、Windows 和 NT 下都能用;VMS 下则要用 set time 。
+.PP
+然而,如果你只是要更动你的时区,只消设定一个环境变数即可:
+.PP
+.Vb 3
+\&    $ENV{TZ} = "MST7MDT";                  # unixish
+\&    $ENV{'SYS$TIMEZONE_DIFFERENTIAL'}="-5" # vms
+\&    system "trn comp.lang.perl.misc";
+.Ve
+.Sh "如何 sleep() 或 alarm() 少于一秒的时间?"
+.IX Subsection "How can I sleep() or alarm() for under a second?"
+如果你要比 sleep() 所提供的最小单位一秒更精细的话,最简单的方法就是用 select 里面写的 select() 函数。试一试 Time::HiRes 和 BSD::Itimer 模块 (可以从 CPAN 下载,从 Perl 5.8 开始 Time::HiRes 成为标准发行的一部分).
+.Sh "如何测度少于一秒的时间?"
+.IX Subsection "How can I measure time under a second?"
+一般来说,你可能做不到。 Time::HiRes 模组(CPAN 有,从 Perl 5.8 开始成为标准发行的一部分)在某些系统上能达到此 功能。
+.PP
+总之,你可能做不到。但是如果你的 Perl 支援 syscall() 函数并支援类似 gettimeofday(2) 的系统呼叫,你也许可以这麽做:
+.PP
+.Vb 1
+\&    require 'sys/syscall.ph';
+.Ve
+.PP
+.Vb 1
+\&    $TIMEVAL_T = "LL";
+.Ve
+.PP
+.Vb 1
+\&    $done = $start = pack($TIMEVAL_T, ());
+.Ve
+.PP
+.Vb 2
+\&    syscall(&SYS_gettimeofday, $start, 0) != -1
+\&               or die "gettimeofday: $!";
+.Ve
+.PP
+.Vb 3
+\&       ##########################
+\&       # DO YOUR OPERATION HERE #
+\&       ##########################
+.Ve
+.PP
+.Vb 2
+\&    syscall( &SYS_gettimeofday, $done, 0) != -1
+\&           or die "gettimeofday: $!";
+.Ve
+.PP
+.Vb 2
+\&    @start = unpack($TIMEVAL_T, $start);
+\&    @done  = unpack($TIMEVAL_T, $done);
+.Ve
+.PP
+.Vb 2
+\&    # fix microseconds
+\&    for ($done[1], $start[1]) { $_ /= 1_000_000 }
+.Ve
+.PP
+.Vb 3
+\&    $delta_time = sprintf "%.4f", ($done[0]  + $done[1]  )
+\&                                            -
+\&                                 ($start[0] + $start[1] );
+.Ve
+.Sh "如何做 atexit()或 setjmp()/longjmp()的动作?(异常处理)"
+.IX Subsection "How can I do an atexit() or setjmp()/longjmp()? (Exception handling)"
+第五版的 Perl 增加了 END 区块,可以用来模拟 atexit()的效果。当程式或执行 绪(thread) 终了时就会去呼叫该包装的 END 区块(参考 perlmod 文件)。
+.PP
+For example, you can use this to make sure your filter program
+managed to finish its output without filling up the disk:
+.PP
+.Vb 3
+\&    END {
+\&        close(STDOUT) || die "stdout close failed: $!";
+\&    }
+.Ve
+.PP
+如果当程式被没有抓到的讯号终结了,END 区块就不会被呼叫到,所以当你用 END 时应再加上
+.PP
+.Vb 1
+\&        use sigtrap qw(die normal-signals);
+.Ve
+.PP
+Perl 的例外处理机制就是它的 eval() 运算子。你可以把 eval() 当做 setjmp 而die()当做 longjmp 来使用。更详细的说明请参考 Signals 和 Camel书第六章里关於讯号的那段,尤其是描述有关 flock() 的逾时处理器那段。
+.PP
+如果你只对例外处理的部分有兴趣,试试 exceptions.pl 程式库(包含在标准 perl里)。
+.PP
+如果你要的是 atexit() 语法(以及 rmexit()),试试 CPAN 里的 AtExit 模组。
+.ie n .Sh "为何我的 sockets程式在 System V (Solaris)系统下不能用?「不支持的协议」这个错误讯息又是什麽意思?"
+.el .Sh "为何我的 sockets程式在 System V (Solaris)系统下不能用?「不支持的协议」这个错误讯息又是什麽意思?"
+.IX Subsection "Why doesn't my sockets program work under System V (Solaris)?  What does the error message Protocol not supported mean?"
+有些 Sys-V 根底的系统,特别像 Solaris 2.X,已重新将一些标准的 socket常数 定义过了。由於这些常数在各种架构下都是定值,所以在 perl程式码中常被人写 死在里面。处理此问题的适当方式 是用 ``use Socket'' 来取得正确的值。
+.PP
+须注意尽管 SunOS 和 Solaris 在二进位执行档上相容,这些值是相异的。自己去 想为什麽吧。
+.Sh "如何从 Perl里呼叫系统中独特的 C函数?"
+.IX Subsection "How can I call my system's unique C functions from Perl?"
+通常是写个外部的模组来处理 - 参看「我要如何学到将 C 与 Perl 连结在一起? [h2xs, xsubpp]」 这问题的答案。然而,如果此函数是个系统呼叫,而你的系统 有支援 syscall(),那麽可以用 syscall 函数(说明在 perlfunc 里)。
+.PP
+切记先查查看你的 perl 版本中所附的模组以及 CPAN 里的模组,因为也许某人已 经写了个这样的模组。
+On Windows, try Win32::API.  On Macs, try Mac::Carbon.  If no module
+has an interface to the C function, you can inline a bit of C in your
+Perl source with Inline::C.
+.Sh "在哪里可以找引入档来做 ioctl()或 syscall()?"
+.IX Subsection "Where do I get the include files to do ioctl() or syscall()?"
+以前这些档案会由标准 perl 发行中所附的 h2ph 工具来产生。这个程式将 C 标 头档案里的 cpp(1)指令转换成内含副程式定义的档案,像 &SYS_getitimer,你可 以把它当做函数的参数。这样做并不怎麽完美,但通常可达成任务。简单的像 errno.h 、syscall.h 和socket.h 这些档案都没问题,但像 ioctl.h 这种较难的档案总是需要人工编辑。以下是安装 *.ph 档案的步骤:
+.PP
+.Vb 3
+\&    1.  成为超级用户
+\&    2.  cd /usr/include
+\&    3.  h2ph *.h */*.h
+.Ve
+.PP
+如果你的系统支援动态载入,那麽为了可移植性、而且合理的做法是使用 h2xs(也 是 perl的标准配备)。这个工具将 C 标头档案转换成 Perl 的衍伸档案 (extensions)。 h2xs 的入门要看 perlxstut 。
+.PP
+如果你的系统不支援动态载入,你可能仍应使用 h2xs。参看 perlxstut 和 MakeMaker (简单来说,就是用 make perl 、而非 make 来重 建一份使用新的静态连结的 perl)。
+.Sh "为何 setuid perl程式会抱怨关於系统核心的问题?"
+.IX Subsection "Why do setuid perl scripts complain about kernel problems?"
+有些作业系统的核心有臭虫使得 setuid 程式在先天上就不安全。Perl提供你一些方法(在 perlsec 里有写)可跳过这些系统的缺陷。
+.Sh "如何打开对某程式既输入又输出的管道 (pipe)?"
+.IX Subsection "How can I open a pipe both to and from a command?"
+IPC::Open2 模组(perl 的标准配件)是个好用的方法,它在内部是藉着pipe()、 fork() 和 exec() 来完成此工作。不过切记要读它文件里关於锁死的警告 ( 参见 IPC::Open2 )。参见 perlipc 中的 \*(L"Bidirectional Communication with Another Process\*(R" 和
+\&\*(L"Bidirectional Communication with Yourself\*(R"
+.PP
+You may also use the IPC::Open3 module (part of the standard perl
+distribution), but be warned that it has a different order of
+arguments from IPC::Open2 (see IPC::Open3).
+.Sh "为何用 system()却得不到一个指令的输出呢?"
+.IX Subsection "Why can't I get the output of a command with system()?"
+你把 system() 和反向引号 (``) 的用法搞混了。 system() 会执行一个指令然後 传回指令结束时的状况资讯(以一个 16 进位值表示:低位元是程序中止所收到的 讯号,高位元才是真正离开时的传回值)。反向引号 (``) 执行一个指令并且把它 所送出的东西送到 STDOUT。
+.PP
+.Vb 2
+\&    $exit_status   = system("mail-users");
+\&    $output_string = `ls`;
+.Ve
+.Sh "如何捕捉外部指令的 STDERR?"
+.IX Subsection "How can I capture STDERR from an external command?"
+有叁种基本方式执行外部指令:
+.PP
+.Vb 3
+\&    system $cmd;                # 使用 system()
+\&    $output = `$cmd`;           # 使用 backticks (``)
+\&    open (PIPE, "cmd |");       # 使用 open()
+.Ve
+.PP
+在 system() 下,STDOUT 和 STDERR 都会输出到和 script 本身的 STDOUT, STDERR相同的出处,除非指令本身将它们导向它处。反向引号和 open() 则 只 读取指令的 STDOUT 部份。
+.PP
+你也可以使用 IPC::Open3 模组.  Benjamin
+Goldberg provides some sample code:
+.PP
+To capture a program's \s-1STDOUT\s0, but discard its \s-1STDERR:\s0
+.PP
+.Vb 7
+\&    use IPC::Open3;
+\&    use File::Spec;
+\&    use Symbol qw(gensym);
+\&    open(NULL, ">", File::Spec->devnull);
+\&    my $pid = open3(gensym, \e*PH, ">&NULL", "cmd");
+\&    while( <PH> ) { }
+\&    waitpid($pid, 0);
+.Ve
+.PP
+To capture a program's \s-1STDERR\s0, but discard its \s-1STDOUT:\s0
+.PP
+.Vb 7
+\&    use IPC::Open3;
+\&    use File::Spec;
+\&    use Symbol qw(gensym);
+\&    open(NULL, ">", File::Spec->devnull);
+\&    my $pid = open3(gensym, ">&NULL", \e*PH, "cmd");
+\&    while( <PH> ) { }
+\&    waitpid($pid, 0);
+.Ve
+.PP
+To capture a program's \s-1STDERR\s0, and let its \s-1STDOUT\s0 go to our own \s-1STDERR:\s0
+.PP
+.Vb 5
+\&    use IPC::Open3;
+\&    use Symbol qw(gensym);
+\&    my $pid = open3(gensym, ">&STDERR", \e*PH, "cmd");
+\&    while( <PH> ) { }
+\&    waitpid($pid, 0);
+.Ve
+.PP
+To read both a command's \s-1STDOUT\s0 and its \s-1STDERR\s0 separately, you can
+redirect them to temp files, let the command run, then read the temp
+files:
+.PP
+.Vb 10
+\&    use IPC::Open3;
+\&    use Symbol qw(gensym);
+\&    use IO::File;
+\&    local *CATCHOUT = IO::File->new_tempfile;
+\&    local *CATCHERR = IO::File->new_tempfile;
+\&    my $pid = open3(gensym, ">&CATCHOUT", ">&CATCHERR", "cmd");
+\&    waitpid($pid, 0);
+\&    seek $_, 0, 0 for \e*CATCHOUT, \e*CATCHERR;
+\&    while( <CATCHOUT> ) {}
+\&    while( <CATCHERR> ) {}
+.Ve
+.PP
+But there's no real need for *both* to be tempfiles... the following
+should work just as well, without deadlocking:
+.PP
+.Vb 9
+\&    use IPC::Open3;
+\&    use Symbol qw(gensym);
+\&    use IO::File;
+\&    local *CATCHERR = IO::File->new_tempfile;
+\&    my $pid = open3(gensym, \e*CATCHOUT, ">&CATCHERR", "cmd");
+\&    while( <CATCHOUT> ) {}
+\&    waitpid($pid, 0);
+\&    seek CATCHERR, 0, 0;
+\&    while( <CATCHERR> ) {}
+.Ve
+.PP
+And it'll be faster, too, since we can begin processing the program's
+stdout immediately, rather than waiting for the program to finish.
+.PP
+在上述方法中,你可以在呼叫前更改文件描述符 (file descriptor) 名称:
+.PP
+.Vb 2
+\&    open(STDOUT, ">logfile");
+\&    system("ls");
+.Ve
+.PP
+或者使用 Bourne shell 的文件描述符重导功能:
+.PP
+.Vb 2
+\&    $output = `$cmd 2>some_file`;
+\&    open (PIPE, "cmd 2>some_file |");
+.Ve
+.PP
+也可以用档案描述元重导功能将 STDERR 复制为 STDOUT:
+.PP
+.Vb 2
+\&    $output = `$cmd 2>&1`;
+\&    open (PIPE, "cmd 2>&1 |");
+.Ve
+.PP
+注意你 不能 光是将 STDERR 开成 STDOUT 的复制,而不呼叫 shell来做这个 重导的工作。这样是不行的:
+.PP
+.Vb 2
+\&    open(STDERR, ">&STDOUT");
+\&    $alloutput = `cmd args`;  # stderr still escapes
+.Ve
+.PP
+失败的原因是,open() 让 STDERR 在呼叫 open() 时往 STDOUT的方向走。然後反 向引号让 STDOUT的内容跑到一个字串变数里,但是没有改变 STDERR 的去向(它 仍然往旧的 STDOUT那里跑)。
+.PP
+注意,在反向引号里你 必须 使用 Bourne shell (sh(1)) 重导的语法而非 csh(1)的!至於为何 Perl 的 system()、反向引号和开管道都用 Bourne shell语法的原因,可在下址找到:\*(L"Far More Than You Ever Wanted To Know\*(R", http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz .  要同时捕捉一个命令的 \s-1STDERR\s0 和 \s-1STDOUT\s0:
+.PP
+.Vb 3
+\&    $output = `cmd 2>&1`;                       # either with backticks
+\&    $pid = open(PH, "cmd 2>&1 |");              # or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To capture a command's \s-1STDOUT\s0 but discard its \s-1STDERR:\s0
+.PP
+.Vb 3
+\&    $output = `cmd 2>/dev/null`;                # either with backticks
+\&    $pid = open(PH, "cmd 2>/dev/null |");       # or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To capture a command's \s-1STDERR\s0 but discard its \s-1STDOUT:\s0
+.PP
+.Vb 3
+\&    $output = `cmd 2>&1 1>/dev/null`;           # either with backticks
+\&    $pid = open(PH, "cmd 2>&1 1>/dev/null |");  # or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To exchange a command's \s-1STDOUT\s0 and \s-1STDERR\s0 in order to capture the \s-1STDERR\s0
+but leave its \s-1STDOUT\s0 to come out our old \s-1STDERR:\s0
+.PP
+.Vb 3
+\&    $output = `cmd 3>&1 1>&2 2>&3 3>&-`;        # either with backticks
+\&    $pid = open(PH, "cmd 3>&1 1>&2 2>&3 3>&-|");# or with an open pipe
+\&    while (<PH>) { }                            #    plus a read
+.Ve
+.PP
+To read both a command's \s-1STDOUT\s0 and its \s-1STDERR\s0 separately, it's easiest
+and safest to redirect them separately to files, and then read from those
+files when the program is done:
+.PP
+.Vb 1
+\&    system("program args 1>/tmp/program.stdout 2>/tmp/program.stderr");
+.Ve
+.PP
+Ordering is important in all these examples.  That's because the shell
+processes file descriptor redirections in strictly left to right order.
+.PP
+.Vb 2
+\&    system("prog args 1>tmpfile 2>&1");
+\&    system("prog args 2>&1 1>tmpfile");
+.Ve
+.PP
+The first command sends both standard out and standard error to the
+temporary file.  The second command sends only the old standard output
+there, and the old standard error shows up on the old standard out.
+.Sh "为何当管道开启失败时 open()不会传回错误讯息?"
+.IX Subsection "Why doesn't open() return an error when a pipe open fails?"
+If the second argument to a piped \fIopen()\fR contains shell
+metacharacters, perl \fIfork()\fRs, then \fIexec()\fRs a shell to decode the
+metacharacters and eventually run the desired program.  If the program
+couldn't be run, it's the shell that gets the message, not Perl. All
+your Perl program can find out is whether the shell itself could be
+successfully started.  You can still capture the shell's \s-1STDERR\s0 and
+check it for error messages.  See \*(L"How can I capture \s-1STDERR\s0 from an external command?\*(R" elsewhere in this document, or use the
+IPC::Open3 module.
+.PP
+If there are no shell metacharacters in the argument of \fIopen()\fR, Perl
+runs the command directly, without using the shell, and can correctly
+report whether the command started.
+.Sh "在忽略返回值的上下文里使用反向引号有何不对?"
+.IX Subsection "What's wrong with using backticks in a void context?"
+严格说起来,没啥不对。但从程式写作严谨与否来说,这样无法写出较易维护的程式码。Perl 有多种方法可以运行外部命令。反引号只是其中一个;它收集命令的输出,在程序中加以应用。 \f(CW\*(C`system\*(C'\fR 函数是另一个,它不这样做
+.PP
+Writing backticks in your program sends a clear message to the readers
+of your code that you wanted to collect the output of the command.
+Why send a clear message that isn't true?
+.PP
+再看看下列这一行:
+.PP
+.Vb 1
+\&    `cat /etc/termcap`;
+.Ve
+.PP
+你还没有指定输出,所以它会浪费记忆体(就那麽一下子)。另外你也忘了检查 \f(CW$?\fR 看看程式是否正确的执行。即使你写成
+.PP
+.Vb 1
+\&    print `cat /etc/termcap`;
+.Ve
+.PP
+但在大部份情况下,这本来可以、而且也应该写成
+.PP
+.Vb 2
+\&    system("cat /etc/termcap") == 0
+\&        or die "cat program failed!";
+.Ve
+.PP
+这样可快速地得到输出(一产生出来就会得到,不用等到最後),并且检查传回值。
+.PP
+\&\fIsystem()\fR 同时具有直接决定是否先做 shell 万用字元 (wildcard)处理的功能, 反向引号就不行。
+.Sh "如何不经过 shell处理来呼叫反向引号?"
+.IX Subsection "How can I call backticks without shell processing?"
+这需要些技巧。不能写成这样:
+.PP
+.Vb 1
+\&    @ok = `grep @opts '$search_string' @filenames`;
+.Ve
+.PP
+在 Perl 5.8.0 中,你可以使用有多个参数的 \fIopen()\fR。类似 \fIsystem()\fR 和 \fIexec()\fR 的列表形式,不会进行 shell 转义。
+.PP
+.Vb 3
+\&   open( GREP, "-|", 'grep', @opts, $search_string, @filenames );
+\&   chomp(@ok = <GREP>);
+\&   close GREP;
+.Ve
+.PP
+也可以这样:
+.PP
+.Vb 10
+\&    my @ok = ();
+\&    if (open(GREP, "-|")) {
+\&        while (<GREP>) {
+\&            chomp;
+\&            push(@ok, $_);
+\&        }
+\&        close GREP;
+\&    } else {
+\&        exec 'grep', @opts, $search_string, @filenames;
+\&    }
+.Ve
+.PP
+一如 system(),当你 exec() 一个序列时不会有 shell 解译的情况发生。更多示例可以从 perlipc 的 \*(L"Safe Pipe Opens\*(R" 中找到。
+.PP
+Note that if you're use Microsoft, no solution to this vexing issue
+is even possible.  Even if Perl were to emulate \fIfork()\fR, you'd still
+be stuck, because Microsoft does not have a argc/argv\-style \s-1API\s0.
+.Sh "为何给了 EOF(Unix上是 ^D,MS-DOS上是 ^Z)後我的程式就不能从 STDIN 读取东西了呢?"
+.IX Subsection "Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?"
+因为某些 stdio 的 set error 和 eof 旗标需要清除。你可以用 POSIX 模组里定 义的clearerr()。这是在技术上正确的解决之道。还有一些较不保险的方法:
+.IP "1" 4
+.IX Item "1"
+试着保存搜寻指标然後去找它,例如:
+.Sp
+.Vb 2
+\&    $where = tell(LOG);
+\&    seek(LOG, $where, 0);
+.Ve
+.IP "2" 4
+.IX Item "2"
+如果那样行不通,试着去 seek() 档案的另一部份然後再找回来。
+.IP "3" 4
+.IX Item "3"
+如果还是行不通,试着 seek() 档案另一个相异的的部份,读点东西,再回去找。
+.IP "4" 4
+.IX Item "4"
+如果依然不行,放弃使用 stdio 改用 sysread。
+.Sh "如何把 shell程式转成 perl?"
+.IX Subsection "How can I convert my shell script to perl?"
+学习 Perl 然後重写。说真的,没有简单的转换方式。用 shell 做起来很笨的工 作可以用 Perl 很轻松的做到,而就是这些麻烦之处使得 shell->perl 转换程式 非常不可能写得出来。在重新撰写程式的过程里,你会认清自己真正要做的工作为 何,也希望能够跳脱 shell 的管线资料流机制 [pipeline datastream paradigm], 这东西虽对某些事情很方便,但也常造成低效率。
+.Sh "perl能处理 telnet或 ftp 会话吗?"
+.IX Subsection "Can I use perl to run a telnet or ftp session?"
+试试 Net::FTP、TCP::Client 和 NET::Telnet 模组(CPAN 有)。 http://www.perl.com/CPAN/scripts/netstuff/telnet.emul.shar 也有助於模拟 telnet 协定,但是 Net::Telnet 可能较容易使用。
+.PP
+如果你所要做的只是假装 telnet 但又不要起始 telnet 时的沟通程序,那麽以下这个标准的双程序方式就可以满足你的需要了:
+.PP
+.Vb 12
+\&    use IO::Socket;             # new in 5.004
+\&    $handle = IO::Socket::INET->new('www.perl.com:80')
+\&            || die "can't connect to port 80 on www.perl.com: $!";
+\&    $handle->autoflush(1);
+\&    if (fork()) {               # XXX: undef means failure
+\&        select($handle);
+\&        print while <STDIN>;    # everything from stdin to socket
+\&    } else {
+\&        print while <$handle>;  # everything from socket to stdout
+\&    }
+\&    close $handle;
+\&    exit;
+.Ve
+.Sh "如何在 Perl里达到 Expect的功能?"
+.IX Subsection "How can I write expect in Perl?"
+很久很久以前,有个叫做 chat2.pl 的程式库(perl 标准配备之一),但一直没 真正完工。如果遇到它的话,不要去用它。现在,你的最佳选择就是从 CPAN 来的 Expect 模块,同时它需要 CPAN 的另两个模块, IO::Pty 和 IO::Stty.
+.ie n .Sh "有没有可能将 perl的指令列隐藏起来,以躲避像 "ps"之类的程式?"
+.el .Sh "有没有可能将 perl的指令列隐藏起来,以躲避像 ``ps''之类的程式?"
+.IX Subsection "Is there a way to hide perl's command line from programs such as ps?"
+首先要注意的是,如果你的目的是为了安全(例如避免人们偷看到密码),那你应该重写你的程式,把重要的资讯从参数中剔除。光是隐藏起来不会让你的程式变得完全安全。
+.PP
+如要真的把看得见的指令列改掉,你可以设定 $0 这个变数值,如同 perlvar 里写的。但这方法并非各种作业系统都适用。像 sendmail之类的背景程式 (daemons) 就将它们的状态放在那儿:
+.PP
+.Vb 1
+\&    $0 = "orcus [accepting connections]";
+.Ve
+.Sh "我在 perl script里 {更动目录,更改我的使用环境}。为何这些改变在程式执行完後就消失了呢?如何让我做的修改显露出来?"
+.IX Subsection "I {changed directory, modified my environment} in a perl script.  How come the change disappeared when I exited the script?  How do I get my changes to be visible?"
+.IP "Unix" 4
+.IX Item "Unix"
+严格的说起来,这是做不到的-一个 script 的执行是从启动它的 shell 生出一 个不同的程序来执行。这个程序的任何变动不会反映到它的父程序,只会反映到更 改之後它自己创造出来的子程序。有个 shell 魔术可以让你藉着在 shell 里 eval()你 script 的输出来装出这种效果,在 comp.unix.questions FAQ 里有详 细内容。
+.Sh "如何关闭一个程序的文件句柄而不用等它完成呢?"
+.IX Subsection "How do I close a process's filehandle without waiting for it to complete?"
+假设你的系统支援这种功能,那就只要送个适当的讯号给此程序(参看 kill)。通常是先送一个 TERM 讯号,等一下下,然後再送个 KILL 讯号去终结它。
+.Sh "如何 fork 一个守护进程?"
+.IX Subsection "How do I fork a daemon process?"
+如果你所指的是离线的程序(未与 tty 连线者),那下列的程序据说在大部份的 Unix系统都能用。非 Unix 系统的使用者应该检查 Your_OS::Process 模组看看有 没有其他的解决方案。
+.IP "\(bu" 4
+打开 /dev/tty 然後对它用 TIOCNOTTY ioctl。请参考 tty(4) 。更好的办法,你可以只用 \fIPOSIX::setsid()\fR 函数,从而不必担心进程组。
+.IP "\(bu" 4
+把目录换到 /
+.IP "\(bu" 4
+重开 STDIN、STDOUT 和 STDERR 使它们不会与旧的 tty 连接。
+.IP "\(bu" 4
+用下列方法把程式丢到后台:
+.Sp
+.Vb 1
+\&    fork && exit;
+.Ve
+.PP
+The Proc::Daemon module, available from \s-1CPAN\s0, provides a function to
+perform these actions for you.
+.Sh "如何知道自己是否在交互地运行?"
+.IX Subsection "How do I find out if I'm running interactively or not?"
+问得好。有的时候 \f(CW\*(C`\-t STDIN\*(C'\fRN 和 \f(CW\*(C`\-t STDOUT\*(C'\fR 可以提供线索,有时不行。
+.PP
+.Vb 3
+\&    if (-t STDIN && -t STDOUT) {
+\&        print "Now what? ";
+\&    }
+.Ve
+.PP
+在 POSIX 系统中,你可以用以下方法测试你自己的程序群组与现在控制你终端机 的是否相同:
+.PP
+.Vb 9
+\&    use POSIX qw/getpgrp tcgetpgrp/;
+\&    open(TTY, "/dev/tty") or die $!;
+\&    $tpgrp = tcgetpgrp(fileno(*TTY));
+\&    $pgrp = getpgrp();
+\&    if ($tpgrp == $pgrp) {
+\&        print "foreground\en";
+\&    } else {
+\&        print "background\en";
+\&    }
+.Ve
+.Sh "如何为缓慢的事件设置超时?"
+.IX Subsection "How do I timeout a slow event?"
+如同 Signals 和 Camel 书第六章里所描述的,用 alarm() 函数, 或许再配合上一个讯号处理器。你也可以改用 CPAN 里更具弹性的 Sys::AlarmCall 模组来做。
+.PP
+The \fIalarm()\fR function is not implemented on all versions of Windows.
+Check the documentation for your specific version of Perl.
+.Sh "如何设置 CPU 限额?"
+.IX Subsection "How do I set CPU limits?"
+使用 CPAN 里的 BSD::Resource 模组。
+.Sh "如何避免在 Unix 系统中产生僵尸进程?"
+.IX Subsection "How do I avoid zombies on a Unix system?"
+使用 Signals 里面叫 reaper 的程式码,在接到 SIGCHLD 时会呼 叫wait(),或是用 perlfaq8 中的 \*(L"How do I start a process in the background?\*(R" 里面写的双 fork 技巧。
+.Sh "如何使用 SQL 数据库?"
+.IX Subsection "How do I use an SQL database?"
+The \s-1DBI\s0 module provides an abstract interface to most database
+servers and types, including Oracle, \s-1DB2\s0, Sybase, mysql, Postgresql,
+\&\s-1ODBC\s0, and flat files.  The \s-1DBI\s0 module accesses each database type
+through a database driver, or \s-1DBD\s0.  You can see a complete list of
+available drivers on \s-1CPAN:\s0 http://www.cpan.org/modules/by\-module/DBD/ .
+You can read more about \s-1DBI\s0 on http://dbi.perl.org .
+.PP
+Other modules provide more specific access: Win32::ODBC, Alzabo, iodbc,
+and others found on \s-1CPAN\s0 Search: http://search.cpan.org .
+.Sh "如何使 system() 在收到 control-C 时退出?"
+.IX Subsection "How do I make a system() exit on control-C?"
+做不到。你需要摹仿 system() 呼叫(参看 perlipc 里的范例程式),然後设计一个讯号处理器,让它把 INT 讯号传给子程序。或者可以检测它:
+.PP
+.Vb 2
+\&    $rc = system($cmd);
+\&    if ($rc & 127) { die "signal death" }
+.Ve
+.Sh "如何无阻塞地打开一个文件?"
+.IX Subsection "How do I open a file without blocking?"
+如果你有幸使用到支援无阻塞读的系统(大部份 Unix 般的系统都有支援), 你只需要用 Fcntl 模组里的 O_NDELAY 或 O_NONBLOCK 旗标,配合 sysopen():
+.PP
+.Vb 3
+\&    use Fcntl;
+\&    sysopen(FH, "/tmp/somefile", O_WRONLY|O_NDELAY|O_CREAT, 0644)
+\&        or die "can't open /tmp/somefile: $!":
+.Ve
+.Sh "How do I install a module from \s-1CPAN\s0?"
+.IX Subsection "如何从 CPAN 安装模块?"
+最简单的方法就是让 CPAN 这个模组替你代劳。这个模组包含在 5.004及以後的版 本中。
+.PP
+.Vb 1
+\&    $ perl -MCPAN -e shell
+.Ve
+.PP
+.Vb 2
+\&    cpan shell -- CPAN exploration and modules installation (v1.59_54)
+\&    ReadLine support enabled
+.Ve
+.PP
+.Vb 1
+\&    cpan> install Some::Module
+.Ve
+.PP
+如要手动安装 CPAN 模组,或是任何按规矩发展的 CPAN模组,遵循以下步 骤:
+.IP "1" 4
+.IX Item "1"
+把源代码解压到临时目录
+.IP "2" 4
+.IX Item "2"
+.Vb 1
+\&    perl Makefile.PL
+.Ve
+.IP "3" 4
+.IX Item "3"
+.Vb 1
+\&    make
+.Ve
+.IP "4" 4
+.IX Item "4"
+.Vb 1
+\&    make test
+.Ve
+.IP "5" 4
+.IX Item "5"
+.Vb 1
+\&    make install
+.Ve
+.PP
+如果你用的 perl 版本在编译时没有建入动态连结的功能,那你只消把第叁步 (make)换成 make perl 然後你就会得到一个新的 perl 执行档,里头连 有你新加入的延伸。
+.PP
+在 ExtUtils::MakeMaker 里面有更多关於建构模组的细节,并参考下一个问题,require 和 use 的区别是什么?。
+.Sh "require 和 use 的区别是什么?"
+.IX Subsection "What's the difference between require and use?"
+Perl offers several different ways to include code from one file into
+another.  Here are the deltas between the various inclusion constructs:
+.PP
+.Vb 3
+\&    1)  do $file is like eval `cat $file`, except the former
+\&        1.1: searches @INC and updates %INC.
+\&        1.2: bequeaths an *unrelated* lexical scope on the eval'ed code.
+.Ve
+.PP
+.Vb 3
+\&    2)  require $file is like do $file, except the former
+\&        2.1: checks for redundant loading, skipping already loaded files.
+\&        2.2: raises an exception on failure to find, compile, or execute $file.
+.Ve
+.PP
+.Vb 3
+\&    3)  require Module is like require "Module.pm", except the former
+\&        3.1: translates each "::" into your system's directory separator.
+\&        3.2: primes the parser to disambiguate class Module as an indirect object.
+.Ve
+.PP
+.Vb 3
+\&    4)  use Module is like require Module, except the former
+\&        4.1: loads the module at compile time, not run-time.
+\&        4.2: imports symbols and semantics from that package to the current one.
+.Ve
+.PP
+In general, you usually want \f(CW\*(C`use\*(C'\fR and a proper Perl module.
+.Sh "如何设置我自己的模块/库路径?"
+.IX Subsection "How do I keep my own module/library directory?"
+当你建构模组时,在产生 Makefiles 时使用 PREFIX 选项:
+.PP
+.Vb 1
+\&    perl Makefile.PL PREFIX=/mydir/perl LIB=/mydir/perl/lib
+.Ve
+.PP
+然後在执行用到此 模组/程式库 的程式前先设好 PERL5LIB 环境变数(参考 perlrun ),或是用
+.PP
+.Vb 1
+\&    use lib '/mydir/perl/lib';
+.Ve
+.PP
+这样与下面几乎相同
+.PP
+.Vb 3
+\&    BEGIN {
+\&        unshift(@INC, '/mydir/perl/lib');
+\&    }
+.Ve
+.PP
+但 lib 模块检测独立于机器的子目录。参见 Perl 的 lib 模块来获取详细信息。
+.Sh "如何将我自己的程序的路径加入到模块/库搜索路径中?"
+.IX Subsection "How do I add the directory my program lives in to the module/library search path?"
+.Vb 3
+\&    use FindBin;
+\&    use lib "$FindBin::Bin";
+\&    use your_own_modules;
+.Ve
+.Sh "如何在运行时将一个目录加入到我的 include 路径 (@INC) 中?"
+.IX Subsection "How do I add a directory to my include path (@INC) at runtime?"
+以下是我们建议更动引入路径的方法:
+.PP
+.Vb 5
+\&    环境变量 PERLLIB 
+\&    环境变量 PERL5LIB
+\&    perl -Idir 命令行标志
+\&    use lib 编用,类似
+\&        use lib "$ENV{HOME}/myown_perllib";
+.Ve
+.PP
+後者特别有用,因为它知道与机器相关的架构。lib.pm 机制模组是从 5.002 版开 始包含在 Perl 里面的。
+.Sh "什么是 socket.ph,从哪儿可以得到它?"
+.IX Subsection "What is socket.ph and where do I get it?"
+It's a perl4\-style file defining values for system networking
+constants.  Sometimes it is built using h2ph when Perl is installed,
+but other times it is not.  Modern programs \f(CW\*(C`use Socket;\*(C'\fR instead.
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2003 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
+.SH "译者"
+.B 陈彦铭,萧百龄,两只老虎工作室
\ No newline at end of file
diff --git a/src/man1/perlfaq9.1 b/src/man1/perlfaq9.1
new file mode 100644
index 0000000..a9b6953
--- /dev/null
+++ b/src/man1/perlfaq9.1
@@ -0,0 +1,770 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFAQ9 1"
+.TH PERLFAQ9 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlfaq9 \- 网络 (2003/01/31 17:36:57 )
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+网络通信,互联网以及少量有关 web 的内容
+.Sh "What is the correct form of response from a \s-1CGI\s0 script?"
+.IX Subsection "一个 CGI 脚本的回应的正确格式是什么?"
+(Alan Flavell <flavell+www at a5.ph.gla.ac.uk> answers...)
+.PP
+The Common Gateway Interface (\s-1CGI\s0) specifies a software interface between
+a program (\*(L"\s-1CGI\s0 script\*(R") and a web server (\s-1HTTPD\s0). It is not specific
+to Perl, and has its own FAQs and tutorials, and usenet group,
+comp.infosystems.www.authoring.cgi
+.PP
+The original \s-1CGI\s0 specification is at: http://hoohoo.ncsa.uiuc.edu/cgi/
+.PP
+Current best-practice \s-1RFC\s0 draft at: http://CGI\-Spec.Golux.Com/
+.PP
+Other relevant documentation listed in: http://www.perl.org/CGI_MetaFAQ.html
+.PP
+These Perl FAQs very selectively cover some \s-1CGI\s0 issues. However, Perl
+programmers are strongly advised to use the \s-1CGI\s0.pm module, to take care
+of the details for them.
+.PP
+The similarity between \s-1CGI\s0 response headers (defined in the \s-1CGI\s0
+specification) and \s-1HTTP\s0 response headers (defined in the \s-1HTTP\s0
+specification, \s-1RFC2616\s0) is intentional, but can sometimes be confusing.
+.PP
+The \s-1CGI\s0 specification defines two kinds of script: the \*(L"Parsed Header\*(R"
+script, and the \*(L"Non Parsed Header\*(R" (\s-1NPH\s0) script. Check your server
+documentation to see what it supports. \*(L"Parsed Header\*(R" scripts are
+simpler in various respects. The \s-1CGI\s0 specification allows any of the
+usual newline representations in the \s-1CGI\s0 response (it's the server's
+job to create an accurate \s-1HTTP\s0 response based on it). So \*(L"\en\*(R" written in
+text mode is technically correct, and recommended. \s-1NPH\s0 scripts are more
+tricky: they must put out a complete and accurate set of \s-1HTTP\s0
+transaction response headers; the \s-1HTTP\s0 specification calls for records
+to be terminated with carriage-return and line\-feed, i.e \s-1ASCII\s0 \e015\e012
+written in binary mode.
+.PP
+Using \s-1CGI\s0.pm gives excellent platform independence, including \s-1EBCDIC\s0
+systems. \s-1CGI\s0.pm selects an appropriate newline representation
+($CGI::CRLF) and sets binmode as appropriate.
+.Sh "我的 CGI 脚本从命令行执行正常,但是在浏览器中不行 (500 Server Error)。"
+.IX Subsection "My CGI script runs from the command line but not the browser.  (500 Server Error)"
+可能有很多事错了。可以仔细阅读 \*(L"Troubleshooting
+Perl \s-1CGI\s0 scripts\*(R" guide, 位置是
+.PP
+.Vb 1
+\&        http://www.perl.org/troubleshooting_CGI.html
+.Ve
+.PP
+如果接下来,你能证明你已阅读了 FAQ 并且你的问题不是那么简单,非叁言两语即可回答的话,那麽您 post到 comp.infosystems.www.authoring.cgi上(如果是有关 HTTP 、 HTML ,或 CGI通信协定)的问题可能也会得到口气和缓而有用的答覆。表面上看似 Perl,但骨子里是 CGI之类的问题,如果 post到 comp.lang.perl.misc人家可能就不会这麽乐意地接受了。
+.PP
+几个实用的 FAQ,相关文档和查错向导列在 \s-1CGI\s0 Meta \s-1FAQ\s0 中:
+.PP
+.Vb 1
+\&        http://www.perl.org/CGI_MetaFAQ.html
+.Ve
+.Sh "如何从 CGI 程序中得到好一点的错误提示?"
+.IX Subsection "How can I get better error messages from a CGI program?"
+Use the CGI::Carp module.  It replaces \f(CW\*(C`warn\*(C'\fR and \f(CW\*(C`die\*(C'\fR, plus the
+normal Carp modules \f(CW\*(C`carp\*(C'\fR, \f(CW\*(C`croak\*(C'\fR, and \f(CW\*(C`confess\*(C'\fR functions with
+more verbose and safer versions.  It still sends them to the normal
+server error log.
+.PP
+.Vb 3
+\&    use CGI::Carp;
+\&    warn "This is a complaint";
+\&    die "But this one is serious";
+.Ve
+.PP
+The following use of CGI::Carp also redirects errors to a file of your choice,
+placed in a \s-1BEGIN\s0 block to catch compile-time warnings as well:
+.PP
+.Vb 6
+\&    BEGIN {
+\&        use CGI::Carp qw(carpout);
+\&        open(LOG, ">>/var/local/cgi-logs/mycgi-log")
+\&            or die "Unable to append to mycgi-log: $!\en";
+\&        carpout(*LOG);
+\&    }
+.Ve
+.PP
+You can even arrange for fatal errors to go back to the client browser,
+which is nice for your own debugging, but might confuse the end user.
+.PP
+.Vb 2
+\&    use CGI::Carp qw(fatalsToBrowser);
+\&    die "Bad error here";
+.Ve
+.PP
+Even if the error happens before you get the \s-1HTTP\s0 header out, the module
+will try to take care of this to avoid the dreaded server 500 errors.
+Normal warnings still go out to the server error log (or wherever
+you've sent them with \f(CW\*(C`carpout\*(C'\fR) with the application name and date
+stamp prepended.
+.Sh "如何将字符串中的 HTML 删除?"
+.IX Subsection "How do I remove HTML from a string?"
+最正确(尽管不是最快)的方法是使用 HTML::Parse模组(可由 CPAN取得,是所有写 Web程式者必备的 libwww-perl 套件的一部分)。另一中最正确的办法是使用 HTML::FormatText,它不仅删除了 \s-1HTML\s0,同时也试图对结果文本进行简单的格式化。
+.PP
+许多人尝试用简陋的正规表示式来解决这个问题,譬如说像 \f(CW\*(C`s/<.*?>//g\*(C'\fR,但这个式子在很多情况下会失败,因为要处理的字串可能会跨越断行字元,也可能含有被 quote【跳脱】的箭头号,或有 HTML comment出现;再加上一些疏忽,譬如,人们常忘了转换如 < 的 entities(跳脱字 元\f(CW\*(C`<\*(C'\fR)。
+.PP
+以下这个「简陋」的方法对大多数的档案都有效:
+.PP
+.Vb 2
+\&    #!/usr/bin/perl -p0777
+\&    s/<(?:[^>'"]*|(['"]).*?\e1)*>//gs
+.Ve
+.PP
+如果您想要更完整的解法,请看叁部曲的 striphtml 程式,
+http://www.cpan.org/authors/Tom_Christiansen/scripts/striphtml.gz
+\&.
+.PP
+Here are some tricky cases that you should think about when picking
+a solution:
+.PP
+.Vb 1
+\&    <IMG SRC = "foo.gif" ALT = "A > B">
+.Ve
+.PP
+.Vb 2
+\&    <IMG SRC = "foo.gif"
+\&         ALT = "A > B">
+.Ve
+.PP
+.Vb 1
+\&    <!-- <A comment> -->
+.Ve
+.PP
+.Vb 1
+\&    <script>if (a<b && a>c)</script>
+.Ve
+.PP
+.Vb 1
+\&    <# Just data #>
+.Ve
+.PP
+.Vb 1
+\&    <![INCLUDE CDATA [ >>>>>>>>>>>> ]]>
+.Ve
+.PP
+If \s-1HTML\s0 comments include other tags, those solutions would also break
+on text like this:
+.PP
+.Vb 3
+\&    <!-- This section commented out.
+\&        <B>You can't see me!</B>
+\&    -->
+.Ve
+.Sh "如何萃取 URL?"
+.IX Subsection "How do I extract URLs?"
+可以简单地从 HTML 中得到所有种类的 URL,只要使用 \f(CW\*(C`HTML::SimpleLinkExtor\*(C'\fR 模块,它可以处理锚,图像,对象,桢,其他包含 URL 的标签。如果需要更复杂的东西,可以创建 \f(CW\*(C`HTML::LinkExtor\*(C'\fR 的子类或使用 \f(CW\*(C`HTML::Parser\*(C'\fR. 你甚至可以用
+\&\f(CW\*(C`HTML::SimpleLinkExtor\*(C'\fR 作为范例,来书写适合你特殊需要的程序。
+.PP
+You can use URI::Find to extract URLs from an arbitrary text document.
+.PP
+Less complete solutions involving regular expressions can save
+you a lot of processing time if you know that the input is simple.  One
+solution from Tom Christiansen runs 100 times faster than most
+module based approaches but only extracts URLs from anchors where the first
+attribute is \s-1HREF\s0 and there are no other attributes.
+.PP
+.Vb 7
+\&        #!/usr/bin/perl -n00
+\&        # qxurl - tchrist at perl.com
+\&        print "$2\en" while m{
+\&            < \es*
+\&              A \es+ HREF \es* = \es* (["']) (.*?) \e1
+\&            \es* >
+\&        }gsix;
+.Ve
+.Sh "如何从用户的机器上下载文件?如何打开其他机器上的文件?"
+.IX Subsection "How do I download a file from the user's machine?  How do I open a file on another machine?"
+In this case, download means to use the file upload feature of \s-1HTML\s0
+forms.  You allow the web surfer to specify a file to send to your web
+server.  To you it looks like a download, and to the user it looks
+like an upload.  No matter what you call it, you do it with what's
+known as \fBmultipart/form\-data\fR encoding.  The \s-1CGI\s0.pm module (which
+comes with Perl as part of the Standard Library) supports this in the
+\&\fIstart_multipart_form()\fR method, which isn't the same as the \fIstartform()\fR
+method.
+.PP
+See the section in the \s-1CGI\s0.pm documentation on file uploads for code
+examples and details.
+.Sh "如何在 HTML 添加一个弹出菜单?"
+.IX Subsection "How do I make a pop-up menu in HTML?"
+用 <SELECT> 和 <OPTION>这两个标签。 CGI.pm模组(可由 CPAN取得)对这个 widget【此指跳出式选单这个介面成分】还有许多其他的介面成分都有支援【即有制作动态标签的函式】,其中有些是以巧妙模拟的方 式达成。
+.Sh "如何获取 HTML 文件?"
+.IX Subsection "How do I fetch an HTML file?"
+有一个方法是,如果您的系统上装有 lynx一类的文字模式的 HTML浏览器的话,那麽可以这麽做:
+.PP
+.Vb 2
+\&    $html_code = `lynx -source $url`;
+\&    $text_data = `lynx -dump $url`;
+.Ve
+.PP
+收录在 CPAN里的 libwww-perl (LWP)模组则提供了更强的方法来做这件事。它不但可钻过 proxies,而且也不需要 lynx:
+.PP
+.Vb 3
+\&    # simplest version
+\&    use LWP::Simple;
+\&    $content = get($URL);
+.Ve
+.PP
+.Vb 3
+\&    # or print HTML from a URL
+\&    use LWP::Simple;
+\&    getprint "http://www.linpro.no/lwp/";
+.Ve
+.PP
+.Vb 11
+\&    # or print ASCII from HTML from a URL
+\&    # also need HTML-Tree package from CPAN
+\&    use LWP::Simple;
+\&    use HTML::Parser;
+\&    use HTML::FormatText;
+\&    my ($html, $ascii);
+\&    $html = get("http://www.perl.com/");
+\&    defined $html
+\&        or die "Can't fetch HTML from http://www.perl.com/";
+\&    $ascii = HTML::FormatText->new->format(parse_html($html));
+\&    print $ascii;
+.Ve
+.Sh "如何根据提交的内容自动生成一个 HTML ?"
+.IX Subsection "How do I automate an HTML form submission?"
+If you're submitting values using the \s-1GET\s0 method, create a \s-1URL\s0 and encode
+the form using the \f(CW\*(C`query_form\*(C'\fR method:
+.PP
+.Vb 2
+\&    use LWP::Simple;
+\&    use URI::URL;
+.Ve
+.PP
+.Vb 3
+\&    my $url = url('http://www.perl.com/cgi-bin/cpan_mod');
+\&    $url->query_form(module => 'DB_File', readme => 1);
+\&    $content = get($url);
+.Ve
+.PP
+If you're using the \s-1POST\s0 method, create your own user agent and encode
+the content appropriately.
+.PP
+.Vb 2
+\&    use HTTP::Request::Common qw(POST);
+\&    use LWP::UserAgent;
+.Ve
+.PP
+.Vb 4
+\&    $ua = LWP::UserAgent->new();
+\&    my $req = POST 'http://www.perl.com/cgi-bin/cpan_mod',
+\&                   [ module => 'DB_File', readme => 1 ];
+\&    $content = $ua->request($req)->as_string;
+.Ve
+.Sh "如何解码或创建 web 中的 %-encoding?"
+.IX Subsection "How do I decode or create those %-encodings on the web?"
+If you are writing a \s-1CGI\s0 script, you should be using the \s-1CGI\s0.pm module
+that comes with perl, or some other equivalent module.  The \s-1CGI\s0 module
+automatically decodes queries for you, and provides an \fIescape()\fR
+function to handle encoding.
+.PP
+The best source of detailed information on \s-1URI\s0 encoding is \s-1RFC\s0 2396.
+Basically, the following substitutions do it:
+.PP
+.Vb 1
+\&    s/([^\ew()'*~!.-])/sprintf '%%%02x', ord $1/eg;   # encode
+.Ve
+.PP
+.Vb 1
+\&    s/%([A-Fa-f\ed]{2})/chr hex $1/eg;            # decode
+.Ve
+.PP
+However, you should only apply them to individual \s-1URI\s0 components, not
+the entire \s-1URI\s0, otherwise you'll lose information and generally mess
+things up.  If that didn't explain it, don't worry.  Just go read
+section 2 of the \s-1RFC\s0, it's probably the best explanation there is.
+.PP
+\&\s-1RFC\s0 2396 also contains a lot of other useful information, including a
+regexp for breaking any arbitrary \s-1URI\s0 into components (Appendix B).
+.Sh "如何重定向到其他页面?"
+.IX Subsection "How do I redirect to another page?"
+Specify the complete \s-1URL\s0 of the destination (even if it is on the same
+server). This is one of the two different kinds of \s-1CGI\s0 \*(L"Location:\*(R"
+responses which are defined in the \s-1CGI\s0 specification for a Parsed Headers
+script. The other kind (an absolute URLpath) is resolved internally to
+the server without any \s-1HTTP\s0 redirection. The \s-1CGI\s0 specifications do not
+allow relative URLs in either case.
+.PP
+Use of \s-1CGI\s0.pm is strongly recommended.  This example shows redirection
+with a complete \s-1URL\s0. This redirection is handled by the web browser.
+.PP
+.Vb 1
+\&      use CGI qw/:standard/;
+.Ve
+.PP
+.Vb 2
+\&      my $url = 'http://www.cpan.org/';
+\&      print redirect($url);
+.Ve
+.PP
+This example shows a redirection with an absolute URLpath.  This
+redirection is handled by the local web server.
+.PP
+.Vb 2
+\&      my $url = '/CPAN/index.html';
+\&      print redirect($url);
+.Ve
+.PP
+But if coded directly, it could be as follows (the final \*(L"\en\*(R" is
+shown separately, for clarity), using either a complete \s-1URL\s0 or
+an absolute URLpath.
+.PP
+.Vb 2
+\&      print "Location: $url\en";   # CGI response header
+\&      print "\en";                 # end of headers
+.Ve
+.Sh "如何为我的网页加上密码?"
+.IX Subsection "How do I put a password on my web pages?"
+要启用 web 服务器的验证,你需要配置你的 web 服务器,不同的服务器有不同的方法\-\-\-apache 与 iPlanet 不同,后者又与 \s-1IIS\s0 不同。从你的 web 服务器的文档中查找特定服务器的配置细节。
+.Sh "如何用 Perl 修改我的 .htpasswd 和 .htgroup 文件?"
+.IX Subsection "How do I edit my .htpasswd and .htgroup files with Perl?"
+HTTPD::UserAdmin 和 HTTPD::GroupAdmin 等模组为这些档案提供了统一的物件导向介面,尽管这些档案可能以各种不同的格式储存。这些资料库可能是纯文字格式、 dbm、Berkeley DB或任何 DBI相容的资料库驱动程式 (drivers)。 HTTPD::UserAdmin支援`Basic' 和 `Digest'这两个认证模式所用的档案。以下是 一例:
+.PP
+.Vb 4
+\&    use HTTPD::UserAdmin ();
+\&    HTTPD::UserAdmin
+\&          ->new(DB => "/foo/.htpasswd")
+\&          ->add($username => $password);
+.Ve
+.Sh "如何确保用户不会在表单中输入使我的 CGI 脚本作坏事的值?"
+.IX Subsection "How do I make sure users can't enter values into a form that cause my CGI script to do bad things?"
+阅读 \s-1CGI\s0 Meta \s-1FAQ\s0 列出的安全索引
+.PP
+.Vb 1
+\&        http://www.perl.org/CGI_MetaFAQ.html
+.Ve
+.Sh "如何解释一个邮件头?"
+.IX Subsection "How do I parse a mail header?"
+要使用一个快速的方法,可以这样使用 perlfunc 中的 \*(L"split\*(R" 函数:
+.PP
+.Vb 4
+\&    $/ = '';
+\&    $header = <MSG>;
+\&    $header =~ s/\en\es+/ /g;      # 将延续行合并成单行
+\&    %head = ( UNIX_FROM_LINE, split /^([-\ew]+):\es*/m, $header );
+.Ve
+.PP
+但是,如果您若想保留所有 Received栏位资料的话【因 Received 栏位通常不止一个】,这个解法便不太行了。一个完整的解法是使用收录在 CPAN的 Mail::Header 模组( MailTools 套件的一部分)。
+.Sh "如何解码一个 CGI 表单?"
+.IX Subsection "How do I decode a CGI form?"
+使用标准模块,应该是 \s-1CGI\s0.pm。没有理由去尝试手动去做!
+.PP
+你大概都看过一大堆从 STDIN 读取与 $ENV{CONTENT_LENGTH} 长度相同的字节,或者获取 $ENV{QUERY_STRING} 来解码 GET。这些程序都非常糟糕。他们仅在某些时候工作。他们通常不检查 read() 的返回值,这是主要的错误。他们不处理 \s-1HEAD\s0 请求。他们不处理文件上载时的多成分表单。They don't deal
+with \s-1GET/POST\s0 combinations where query fields are in more than one place.
+They don't deal with keywords in the query string.
+.PP
+In short, they're bad hacks.  Resist them at all costs.  Please do not be
+tempted to reinvent the wheel.  Instead, use the \s-1CGI\s0.pm or CGI_Lite.pm
+(available from \s-1CPAN\s0), or if you're trapped in the module-free land
+of perl1 .. perl4, you might look into cgi\-lib.pl (available from
+http://cgi\-lib.stanford.edu/cgi\-lib/ ).
+.PP
+Make sure you know whether to use a \s-1GET\s0 or a \s-1POST\s0 in your form.
+GETs should only be used for something that doesn't update the server.
+Otherwise you can get mangled databases and repeated feedback mail
+messages.  The fancy word for this is ``idempotency''.  This simply
+means that there should be no difference between making a \s-1GET\s0 request
+for a particular \s-1URL\s0 once or multiple times.  This is because the
+\&\s-1HTTP\s0 protocol definition says that a \s-1GET\s0 request may be cached by the
+browser, or server, or an intervening proxy.  \s-1POST\s0 requests cannot be
+cached, because each request is independent and matters.  Typically,
+\&\s-1POST\s0 requests change or depend on state on the server (query or update
+a database, send mail, or purchase a computer).
+.Sh "如何检测一个有效的邮件地址?"
+.IX Subsection "How do I check a valid mail address?"
+没有办法。至少,没有可行的办法。
+.PP
+如果没有寄封信到一个位址去试试看它会不会弹回来(即使是这麽做您还得面对停顿的问题),您是无法确定一个位址是否真的存在的。即使您套用 email 标头的标准规格来做检查的依据,您还是有可能会遇到问题,因为有些送得到的位址并不 符合 RFC-822(电子邮件标头的标准)的规定,但有些符合标准的位址却无法投 递。
+.PP
+You can use the Email::Valid or RFC::RFC822::Address which check
+the format of the address, although they cannot actually tell you
+if it is a deliverable address (i.e. that mail to the address
+will not bounce).  Modules like Mail::CheckUser and Mail::EXPN
+try to interact with the domain name system or particular
+mail servers to learn even more, but their methods do not
+work everywhere\-\-\-especially for security conscious administrators.
+.PP
+许多人试图用一个简单的正规表示式,例如 \f(CW\*(C`/^[\ew.\-]+\e@(?:[\ew\-]+\e.)+\ew+$/\*(C'\fR 来消除一些通常是无效的 email 位址。不过,这样做也把很多合格的位址给一起滤掉了,而且对测试一个位址有没有希望投递成功完全没有帮助,所以在此建议大家不要这麽做;不过您可以看看:
+http://www.cpan.org/authors/Tom_Christiansen/scripts/ckaddr.gz ,
+这个 script真的彻底地依据所有的 RFC规定来做检验(除了内嵌式 comments外),同时会排除一些您可能不会想送信去的位址(如 Bill Clinton【美国总统】或您的 postmaster),然後它会确定位址中的主机名称可在 DNS中找得到。这个 script 跑起来不是很快,但至少有效。
+.PP
+Our best advice for verifying a person's mail address is to have them
+enter their address twice, just as you normally do to change a password.
+This usually weeds out typos.  If both versions match, send
+mail to that address with a personal message that looks somewhat like:
+.PP
+.Vb 1
+\&    Dear someuser at host.com,
+.Ve
+.PP
+.Vb 5
+\&    Please confirm the mail address you gave us Wed May  6 09:38:41
+\&    MDT 1998 by replying to this message.  Include the string
+\&    "Rumpelstiltskin" in that reply, but spelled in reverse; that is,
+\&    start with "Nik...".  Once this is done, your confirmed address will
+\&    be entered into our records.
+.Ve
+.PP
+If you get the message back and they've followed your directions,
+you can be reasonably assured that it's real.
+.PP
+A related strategy that's less open to forgery is to give them a \s-1PIN\s0
+(personal \s-1ID\s0 number).  Record the address and \s-1PIN\s0 (best that it be a
+random one) for later processing.  In the mail you send, ask them to
+include the \s-1PIN\s0 in their reply.  But if it bounces, or the message is
+included via a ``vacation'' script, it'll be there anyway.  So it's
+best to ask them to mail back a slight alteration of the \s-1PIN\s0, such as
+with the characters reversed, one added or subtracted to each digit, etc.
+.Sh "如何解码一个 MIME/BASE64 字符串?"
+.IX Subsection "How do I decode a MIME/BASE64 string?"
+MIME-tools套件(可自 CPAN取得)不但可处理这个问题而且有许多其他的功能。有了这个套件,解 BASE64码就变得像这麽容易:
+.PP
+.Vb 2
+\&    use MIME::Base64;
+\&    $decoded = decode_base64($encoded);
+.Ve
+.PP
+The MIME-Tools package (available from \s-1CPAN\s0) supports extraction with
+decoding of \s-1BASE64\s0 encoded attachments and content directly from email
+messages.
+.PP
+一个比较直接的解法是先做一点简单的转译,然後使用 unpack()这个函数的 ``u'' 格式:
+.PP
+.Vb 4
+\&    tr#A-Za-z0-9+/##cd;                   # remove non-base64 chars
+\&    tr#A-Za-z0-9+/# -_#;                  # convert to uuencoded format
+\&    $len = pack("c", 32 + 0.75*length);   # compute length byte
+\&    print unpack("u", $len . $_);         # uudecode and print
+.Ve
+.Sh "如何返回用户的邮件地址?"
+.IX Subsection "How do I return the user's mail address?"
+On systems that support getpwuid, the $< variable, and the
+Sys::Hostname module (which is part of the standard perl distribution),
+you can probably try using something like this:
+.PP
+.Vb 2
+\&    use Sys::Hostname;
+\&    $address = sprintf('%s@%s', scalar getpwuid($<), hostname);
+.Ve
+.PP
+Company policies on mail address can mean that this generates addresses
+that the company's mail system will not accept, so you should ask for
+users' mail addresses when this matters.  Furthermore, not all systems
+on which Perl runs are so forthcoming with this information as is Unix.
+.PP
+The Mail::Util module from \s-1CPAN\s0 (part of the MailTools package) provides a
+\&\fImailaddress()\fR function that tries to guess the mail address of the user.
+It makes a more intelligent guess than the code above, using information
+given when the module was installed, but it could still be incorrect.
+Again, the best way is often just to ask the user.
+.Sh "如何发邮件?"
+.IX Subsection "How do I send mail?"
+Use the \f(CW\*(C`sendmail\*(C'\fR program directly:
+.PP
+.Vb 6
+\&    open(SENDMAIL, "|/usr/lib/sendmail -oi -t -odq")
+\&                        or die "Can't fork for sendmail: $!\en";
+\&    print SENDMAIL <<"EOF";
+\&    From: User Originating Mail <me\e at host>
+\&    To: Final Destination <you\e at otherhost>
+\&    Subject: A relevant subject line
+.Ve
+.PP
+.Vb 4
+\&    Body of the message goes here after the blank line
+\&    in as many lines as you like.
+\&    EOF
+\&    close(SENDMAIL)     or warn "sendmail didn't close nicely";
+.Ve
+.PP
+The \fB\-oi\fR option prevents sendmail from interpreting a line consisting
+of a single dot as \*(L"end of message\*(R".  The \fB\-t\fR option says to use the
+headers to decide who to send the message to, and \fB\-odq\fR says to put
+the message into the queue.  This last option means your message won't
+be immediately delivered, so leave it out if you want immediate
+delivery.
+.PP
+Alternate, less convenient approaches include calling mail (sometimes
+called mailx) directly or simply opening up port 25 have having an
+intimate conversation between just you and the remote \s-1SMTP\s0 daemon,
+probably sendmail.
+.PP
+Or you might be able use the \s-1CPAN\s0 module Mail::Mailer:
+.PP
+.Vb 1
+\&    use Mail::Mailer;
+.Ve
+.PP
+.Vb 8
+\&    $mailer = Mail::Mailer->new();
+\&    $mailer->open({ From    => $from_address,
+\&                    To      => $to_address,
+\&                    Subject => $subject,
+\&                  })
+\&        or die "Can't open: $!\en";
+\&    print $mailer $body;
+\&    $mailer->close();
+.Ve
+.PP
+The Mail::Internet module uses Net::SMTP which is less Unix-centric than
+Mail::Mailer, but less reliable.  Avoid raw \s-1SMTP\s0 commands.  There
+are many reasons to use a mail transport agent like sendmail.  These
+include queuing, \s-1MX\s0 records, and security.
+.Sh "如何使用 MIME 来为邮件消息增加附件?"
+.IX Subsection "How do I use MIME to make an attachment to a mail message?"
+This answer is extracted directly from the MIME::Lite documentation.
+Create a multipart message (i.e., one with attachments).
+.PP
+.Vb 1
+\&    use MIME::Lite;
+.Ve
+.PP
+.Vb 8
+\&    ### Create a new multipart message:
+\&    $msg = MIME::Lite->new(
+\&                 From    =>'me at myhost.com',
+\&                 To      =>'you at yourhost.com',
+\&                 Cc      =>'some at other.com, some at more.com',
+\&                 Subject =>'A message with 2 parts...',
+\&                 Type    =>'multipart/mixed'
+\&                 );
+.Ve
+.PP
+.Vb 8
+\&    ### Add parts (each "attach" has same arguments as "new"):
+\&    $msg->attach(Type     =>'TEXT',
+\&                 Data     =>"Here's the GIF file you wanted"
+\&                 );
+\&    $msg->attach(Type     =>'image/gif',
+\&                 Path     =>'aaa000123.gif',
+\&                 Filename =>'logo.gif'
+\&                 );
+.Ve
+.PP
+.Vb 1
+\&    $text = $msg->as_string;
+.Ve
+.PP
+MIME::Lite also includes a method for sending these things.
+.PP
+.Vb 1
+\&    $msg->send;
+.Ve
+.PP
+This defaults to using sendmail but can be customized to use
+\&\s-1SMTP\s0 via Net::SMTP.
+.Sh "如何读邮件?"
+.IX Subsection "How do I read mail?"
+While you could use the Mail::Folder module from \s-1CPAN\s0 (part of the
+MailFolder package) or the Mail::Internet module from \s-1CPAN\s0 (part
+of the MailTools package), often a module is overkill.  Here's a
+mail sorter.
+.PP
+.Vb 1
+\&    #!/usr/bin/perl
+.Ve
+.PP
+.Vb 13
+\&    my(@msgs, @sub);
+\&    my $msgno = -1;
+\&    $/ = '';                    # paragraph reads
+\&    while (<>) {
+\&        if (/^From /m) {
+\&            /^Subject:\es*(?:Re:\es*)*(.*)/mi;
+\&            $sub[++$msgno] = lc($1) || '';
+\&        }
+\&        $msgs[$msgno] .= $_;
+\&    }
+\&    for my $i (sort { $sub[$a] cmp $sub[$b] || $a <=> $b } (0 .. $#msgs)) {
+\&        print $msgs[$i];
+\&    }
+.Ve
+.PP
+Or more succinctly,
+.PP
+.Vb 6
+\&    #!/usr/bin/perl -n00
+\&    # bysub2 - awkish sort-by-subject
+\&    BEGIN { $msgno = -1 }
+\&    $sub[++$msgno] = (/^Subject:\es*(?:Re:\es*)*(.*)/mi)[0] if /^From/m;
+\&    $msg[$msgno] .= $_;
+\&    END { print @msg[ sort { $sub[$a] cmp $sub[$b] || $a <=> $b } (0 .. $#msg) ] }
+.Ve
+.Sh "如何找到我的主机名/域名/IP 地址?"
+.IX Subsection "How do I find out my hostname/domainname/IP address?"
+长久以来许多 code都很草率地直接呼叫 `hostname` 这个程式来取得主机名。虽然这麽做很方便,但也同时增加了移植到其他平台上的困难。这是一个很典型的例子,在方便和可移植性之间作抉择,不论选哪一边,必须付出一些牺牲和代价。
+.PP
+Sys::Hostname这个模组(标准 perl发行的一部分)可用来取得机器的名字,然後您便可利用 gethostbyname()这个系统呼叫来找出该机的 IP位址了(假定您的 DNS 运作正常)。
+.PP
+.Vb 4
+\&    use Socket;
+\&    use Sys::Hostname;
+\&    my $host = hostname();
+\&    my $addr = inet_ntoa(scalar gethostbyname($host || 'localhost'));
+.Ve
+.PP
+至少在 Unix 底下,取得 DNS网域名最简单的方法大概要算是直接从 /etc/resolv.conf 这个档案里面找。当然,这麽做的前提是 resolv.conf 这个档案的设定必须照惯例的格式,还有就是这个档案必先存在才行。
+.PP
+(Perl在非 Unix系统下尚需要一有效的方法来测出机器和网域名)
+.Sh "如何获取一篇新闻文章或活动的新闻组?"
+.IX Subsection "How do I fetch a news article or the active newsgroups?"
+使用 Net::NNTP或 News::NNTPClient模组,两者皆可自 CPAN下载。这些模组让抓群组名录这类的差事变得这麽容易:
+.PP
+.Vb 2
+\&    perl -MNews::NNTPClient
+\&      -e 'print News::NNTPClient->new->list("newsgroups")'
+.Ve
+.Sh "如何获取/上传一个 FTP 文件?"
+.IX Subsection "How do I fetch/put an FTP file?"
+LWP::Simple模组(可自 CPAN下载)可以抓,但不能上传档案。 Net::FTP模组(也可自 CPAN下载)虽比较复杂,但可用来上传、也能抓档案。
+.Sh "如何进行远程过程调用 RPC ?"
+.IX Subsection "How can I do RPC in Perl?"
+模块 \s-1DCE::RPC\s0 正在开发中 (但是还不可用),将成为 DCE-Perl 包 (可以从 CPAN 下载) 的一部分。rpcgen 套件,可以从 CPAN/authors/id/JAKE/ 找到,是一个 \s-1RPC\s0 存根生成器,包含一个 \s-1RPC::ONC\s0 模块。
+.SH "AUTHOR AND COPYRIGHT"
+.IX Header "AUTHOR AND COPYRIGHT"
+Copyright (c) 1997\-2002 Tom Christiansen and Nathan Torkington.
+All rights reserved.
+.PP
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+.PP
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain.  You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit.  A simple comment in the code giving
+credit would be courteous but is not required.
+.SH "译者"
+.B 萧百龄,两只老虎工作室
\ No newline at end of file
diff --git a/src/man1/perlform.1 b/src/man1/perlform.1
new file mode 100644
index 0000000..a40413c
--- /dev/null
+++ b/src/man1/perlform.1
@@ -0,0 +1,392 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFORM 1"
+.TH PERLFORM 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlform \- Perl 格式
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+Perl的一些内部机制、可以帮助我们产生一份简单的格式化图表。经过perl的处理,你列印的格式可以接近於你所见的外貌。它可以记录如你现在正处在哪个页面,每个页面的行数与何时列印出页面的标题。关键字,format() 格式函数与write()执行函数是直接引自FORTRAN语法。详情可参阅 perlfunc。幸运的是列印的格式可读性又有所提高。几乎类似BASIC 的PRINT USING。可以把它想象为简单的 \fInroff\fR\|(1).
+.PP
+有如子程序与包一样,格式只是语句的声明,而不是执行调用。故它可以放在程式的任何位置(一般最好是把它们集中在一块)。与perl的其它变量名字类型不同, 格式命名有别於一般的独自的定义。也就是说,你有一个名为Foo的函数,它与另一个格式名称为Foo的东西是完全不同。但是缺省的格式名称与有关连的文件句柄可用相同的名字。所以缺省的输出格式名称STDOUT,它的文件句柄名称就是STDOUT。而对缺省格式名称TEMP,它的文件句柄名称也可以是TEMP。虽然名称一样但两者并不相同。
+.PP
+输出格式的语法如下:
+.PP
+.Vb 3
+\&    format NAME =
+\&    FORMLIST
+\&    .
+.Ve
+.PP
+如省略格式名称,格式名称将以标准输出STDOUT命名。而格式项目将包括了好几个连续横行。每一行属於下列叁种型态之一:
+.IP "1." 4
+注释(comment), 以符号“#”置於每行的开头。
+.IP "2." 4
+图案行(picture line),规定了单一行的格式化外观。
+.IP "3." 4
+参数行, 提供一些数值以对应前面的图案行。
+.PP
+图案行的输出效果就与我们看到的一样,除了某些值域栏位会给相对应数值取代外,每个输入栏位都以一个@或 ^ 控制符开头。这些单行内的控制符不能做任何窜改取代(勿与数组变量@混淆)。@栏位是属於正常形态的栏位,而^栏位则用来表示可以输入多行文字。至於该栏位则由<  > 或 | 符号跟随其後指定向左、右、或居中对齐。并同时跟据该符号的数目,输入指定资料的长度。如变量内容超过限定长度、格式列印时会自动删除多馀的部份。
+.PP
+另一种指定向右对齐方式,是使用#符号来指定一个数字栏位。如此可方便小数点定位。如果输入值里还包含一个换行字元(\n),则仅列印出该换行字元前的资料。最後图案行出现的@*这个特别符号标记,可以用来列印多行并且不被截掉的数值。
+.PP
+接下来的一行、是跟据图案行里的值域栏位输入相应的数值。如果是利用运算式提供数值的话、必须以逗号分隔。因为所有的表示法都会被当成一个串连内容再行处理。所以一个单一的串列表示法也可产生多个串列资料。如果表示法是利用括号围起,可能会展开好几行。若想如是安排,第一行的第一个单字必须是以左括号开始。如果运算式内有小数点的数字类型须要处理、同时图案行的相关符号也指出小数位须列印出来(除了图案行内的包含小数点"."的数字控制符号#外)。小数点列印出的外貌, 以当地的运行版本决定(LC_NUMERIC locale)。也就是说、在德文地区使用小数格示输出时、小数点的显示将是","而非"."。相关资料请参考 perllocale 与 "警告"  
+.PP
+图案行里的栏位如果以^控制符开头、格式将会作特殊化处理。如果该栏位是注解栏位又没定义其值、栏位将以空白取代。若是其它型态、则视为一种填补资料的状态。 在此、我们不能随便填入任意表示法进去。相反、必须以相关的变量输入字串内容。perl会尽量将文字放入该栏位、然後把字串的前面部份删去。当你下次使用该字串变量时、可以使用後面的字串部份(换句话说、在执行write函数时、字串变量的内容是会改变的)。正常情况下、你必须使用一类似垂直状的堆块来放置要输入的文字、以便整齐列印出一柱状文字。如你列印的文字太长、想以"..."取代过长的文字时、你可以藉由更改 $: 变量值来取代分隔字元。也就是当你使用ENGLISH模块时的 $FORMAT_LINE_BREAK_CHARACTERS的意思。
+.PP
+使用^符号栏位可产生不定长度的记录栏位。如果要列印的文字很短、你想压缩掉文字後的空白、请在想压缩掉的空白地方加上一个"~"控制符号。如果重复使用两个"~"符号、则该行会被重复列印、直到该栏位的所有文字列印完毕为止 (如你同时使用"@"值域栏位的话、切记每次要输入不同的数值)。
+.PP
+列印格示标题的缺省处理方法、是将正使用的格式名称後加上_TOP字样既可。其内容将会列印至每页的开头部份。请参考 perlfunc/write 函数
+.PP
+例如:
+.PP
+.Vb 10
+\& # a report on the /etc/passwd file
+\& format STDOUT_TOP =
+\&                         Passwd File
+\& Name                Login    Office   Uid   Gid Home
+\& ------------------------------------------------------------------
+\& .
+\& format STDOUT =
+\& @<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<<
+\& $name,              $login,  $office,$uid,$gid, $home
+\& .
+.Ve
+.PP
+.Vb 29
+\& # a report from a bug report form
+\& format STDOUT_TOP =
+\&                         Bug Reports
+\& @<<<<<<<<<<<<<<<<<<<<<<<     @|||         @>>>>>>>>>>>>>>>>>>>>>>>
+\& $system,                      $%,         $date
+\& ------------------------------------------------------------------
+\& .
+\& format STDOUT =
+\& Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&          $subject
+\& Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&        $index,                       $description
+\& Priority: @<<<<<<<<<< Date: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&           $priority,        $date,   $description
+\& From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&       $from,                         $description
+\& Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&              $programmer,            $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\&                                      $description
+\& ~                                    ^<<<<<<<<<<<<<<<<<<<<<<<...
+\&                                      $description
+\& .
+.Ve
+.PP
+我们也有可能在同一个输出管道同时使用print 与 write函数。但使用时、必须修改$-的特殊内置变量值(使用English模块的话、则是使用$FORMAT_LINES-LEFT变量)。
+.Sh "Format Variables 格式变量"
+.IX Subsection "Format Variables"
+当前的格式名称一向都是存放於$~这个特殊变量内($FORMAT_NAME),而每页的开头格式则存放在$^($FORMAT-TOP_NAME),输出页为$%($FORMAT_PAGE_NUMBER),每页行数是$= ($FORMAT_LINE_PER_PAGE),自动输出格式是放在$|($OUTPUT_AUTOFLUSH)、要输出到每页开头部份的字串存放在$^L ($FORMAT-FORMFEED)。这些变量的有效范围,都是以某一个文件句柄为单元。因此、你必须调用select()函数来调用适当的文件句柄来改变变量内容。
+.PP
+.Vb 4
+\&    select((select(OUTF),
+\&            $~ = "My_Other_Format",
+\&            $^ = "My_Top_Format"
+\&           )[0]);
+.Ve
+.PP
+难看吧!这就是一般用法。如此一来、你至少可用临是变量来存放前一个文件句柄。事实上、这已是较好的作法,除了可读性提高外、也提供你一个位置暂停程式的执行,方变你一次到位除错。
+.PP
+.Vb 4
+\&    $ofh = select(OUTF);
+\&    $~ = "My_Other_Format";
+\&    $^ = "My_Top_Format";
+\&    select($ofh);
+.Ve
+.PP
+如果你使用English模块,你甚至可以输入英文变量名称
+.PP
+.Vb 5
+\&    use English '-no_match_vars';
+\&    $ofh = select(OUTF);
+\&    $FORMAT_NAME     = "My_Other_Format";
+\&    $FORMAT_TOP_NAME = "My_Top_Format";
+\&    select($ofh);
+.Ve
+.PP
+但你还是要调用select()函数。因此我们建议你用FileHandle模块。现在你可用小写英文字母的格式名称来处理这些特殊变量。
+.PP
+.Vb 3
+\&    use FileHandle;
+\&    format_name     OUTF "My_Other_Format";
+\&    format_top_name OUTF "My_Top_Format";
+.Ve
+.PP
+好多了吧!
+.SH "NOTES"
+.IX Header "NOTES 附注"
+因为数值行的内容可能保括任何的表示法 (我们指的是 @ 栏位而非 ^ 栏位)。因此你可使用其它函数、建立更加复杂的处理方法。好像使用 printf 函数、或自己定义的函数。列如:
+.PP
+.Vb 4
+\&    format Ident =
+\&        @<<<<<<<<<<<<<<<
+\&        &commify($n)
+\&    .
+.Ve
+.PP
+在栏位输入真正的@ 或^符号:
+.PP
+.Vb 4
+\&    format Ident =
+\&    I have an @ here.
+\&            "@"
+\&    .
+.Ve
+.PP
+将整行字置中对齐:
+.PP
+.Vb 4
+\&    format Ident =
+\&    @|||||||||||||||||||||||||||||||||||||||||||||||
+\&            "Some text line"
+\&    .
+.Ve
+.PP
+我们并无任何内建的方法让你指定如、某个栏位要对齐该页面最右等诸如此类事项。但你仍然能列印出你想要的格式。跟据目前页面直行数目,调用eval()函数来处理它:
+.PP
+.Vb 9
+\&    $format  = "format STDOUT = \en"
+\&             . '^' . '<' x $cols . "\en"
+\&             . '$entry' . "\en"
+\&             . "\et^" . "<" x ($cols-8) . "~~\en"
+\&             . '$entry' . "\en"
+\&             . ".\en";
+\&    print $format if $Debugging;
+\&    eval $format;
+\&    die $@ if $@;
+.Ve
+.PP
+它可能列印出下列格式外貌:
+.PP
+.Vb 6
+\& format STDOUT =
+\& ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\& $entry
+\&         ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+\& $entry
+\& .
+.Ve
+.PP
+下面是一个有点类似fmt(1)的小程式:
+.PP
+.Vb 3
+\& format =
+\& ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
+\& $_
+.Ve
+.PP
+.Vb 1
+\& .
+.Ve
+.PP
+.Vb 5
+\& $/ = '';
+\& while (<>) {
+\&     s/\es*\en\es*/ /g;
+\&     write;
+\& }
+.Ve
+.Sh "Footers 页脚"
+.IX Subsection "Footers"
+虽然我们有$FORMAT_TOP_NAME来记录每页开头部份的格式,却没有一个相对应的方法来自动指定每页的底部格式。问题是、我们并不知到某个格式资料可能会多大,除非你真的去执行它。这是我们将来要处理的重点之一。
+.PP
+这是一个暂时的应用方案 如果你有一个固定大小的页脚、你可在每次调用write函数前检查变量$FORMAT_LINES_LEFT,然後自行印出该资料。
+.PP
+还有一个方法,就是开启一个管道。调用open(MYSELF,”|-”) (参考 perlfunc/open() 函数)。并调用write函数把资料输往MYSELF、而不是标准输出STDOUT。然後利用子串列的标准输入、来重新处理每页开头或结尾所要附加的资料部份。这虽不方便,但还是可办到的。
+.Sh "Accessing Formatting Internals 格式处理的核心"
+.IX Subsection "Accessing Formatting Internals"
+至於低阶格式的机制,你可调用formlin()函数直接处理$^A变量($ACCUMUNATOR)。
+.PP
+例如:
+.PP
+.Vb 3
+\&    $str = formline <<'END', 1,2,3;
+\&    @<<<  @|||  @>>>
+\&    END
+.Ve
+.PP
+.Vb 1
+\&    print "Wow, I just stored `$^A' in the accumulator!\en";
+.Ve
+.PP
+或是设计一个子程式swrite()。它对于 write 的脚色相当于sprint 对于 print。
+.PP
+.Vb 8
+\&    use Carp;
+\&    sub swrite {
+\&        croak "usage: swrite PICTURE ARGS" unless @_;
+\&        my $format = shift;
+\&        $^A = "";
+\&        formline($format, at _);
+\&        return $^A;
+\&    }
+.Ve
+.PP
+.Vb 5
+\&    $string = swrite(<<'END', 1, 2, 3);
+\& Check me out
+\& @<<<  @|||  @>>>
+\& END
+\&    print $string;
+.Ve
+.SH "WARNINGS 警告"
+.IX Header "WARNINGS"
+不当处理显示结束格示内容的点操作符号、有时也会同时影响你的网络的电邮功能(跟据过往经验、错误是必然而不能避免)。如果使用电邮输出格式内容、你应先处理好结束格式点操作符位置。切勿放置於左边界、以免被SMTP截去。
+.PP
+局部变量(引用”my”定义变量)、在调用格式化输出时不会被察觉。除非在使用局部变量的串程内另行定义(5.001版本前并没有局部变量一词)。
+.PP
+格式输出是 perl 语言里维一受制於编程使用地区的部分。如果当前的使用地区使用LC_NUMERIC,那小数点符号的格式化输出必以当地方式显示。perl 不会理会当地的所须格式,除非你调用了 use locale。但格式列印又不受控於use locale。因为locale 它只在使用的块内有效。同时跟据历史原因、格式的作用域不仅包括在块内。进一步详情参阅 perllocale 本地化文档。
+.PP
+格式输出时、程式串内的空白符号\n,\t,\t相当於一个空白单元。所以你可以想像格式列印相当於先处理变量:
+.PP
+.Vb 1
+\& $value =~ tr/\en\et\ef/ /;
+.Ve
+.PP
+除非图案行已定义、馀下的空白符号\r 将强制性另印新行。
+.SH "中文版维护人"
+.B 小高 <you at email.com>
+.SH "中文版最新更新"
+.B 2001年12月9日星期日
+.SH 中文手册页翻译计划
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/perlfunc.1 b/src/man1/perlfunc.1
new file mode 100644
index 0000000..d919b78
--- /dev/null
+++ b/src/man1/perlfunc.1
@@ -0,0 +1,7435 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLFUNC 1"
+.TH PERLFUNC 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH NAME
+perlfunc \- Perl 内部函数
+.SH "描述 DESCRIPTION"
+.IX Header "DESCRIPTION"
+这一章里的函数可以作为表达式来使用。
+Perl 中的函数主要分为两类:数组运算符和命名的一元运算符。
+不同之处在于他们的优先级关系。(参阅 perlop 中的优先级表 ) 
+数组运算符需要一个以上的参数,而一元运算符不能超过一个参数。
+因此,一个逗号将结束一个一元运算符,  但对于数组运算符,只是起到分隔的作用。
+一元运算符一般只提供一个标量作为参数,而数组运算符可能会提供标量或者数组作为参数。
+如果二者都有,标量参数一般在前面,数组参数跟在后面。 (注意,可以只有一个数组变量) 
+例如, splice() 有三个标量变量,后面加上一个数组, 相反 gethostbyname() 有四个标量变量。
+.PP
+在语法描述中,数组运算符需要一个用LIST标识的数组作为参数。
+这些 数组可能由标量参数和数组值混合组成;
+数组值将包含在数组中,每个元素被插入数组中,
+形成一个更长一维的数组值。 数组的元素应该用逗号分开。
+.PP
+下面列出的任何函数可以在参数两边有括号,也可以没有。(语法描述中省略括号)
+如果你使用括号,一个简单的规则是 (偶尔会令人吃惊): 
+如果是函数,没有优先级的问题;如果它是一个数组运算符或者一元运算符
+那么就要考虑优先级。并且,函数两边的空白和 "(" 是不计算的--因此,
+有时候需要小心行事。看看下面的几个例子:
+.PP
+.Vb 5
+\&    print 1+2+4;        # Prints 7.
+\&    print(1+2) + 4;     # Prints 3.
+\&    print (1+2)+4;      # Also prints 3!
+\&    print +(1+2)+4;     # Prints 7.
+\&    print ((1+2)+4);    # Prints 7.
+.Ve
+.PP
+前面说得似乎有点抽象,那么你在运行PERL时带上-w开关你将得到一些
+警告信息,您可以根据这些信息再体会一下。例如,上面的例子会产生如下信息:
+.PP
+.Vb 2
+\&    print (...) interpreted as function at - line 1.
+\&    Useless use of integer addition in void context at - line 1.
+.Ve
+.PP
+有些函数根本不需要参数,因此工作方式和一元运算符和数组运算符都不同, 
+\f(CW\*(C`time\*(C'\fR 和 \f(CW\*(C`endpwent\*(C'\fR 算是两个典型吧.  
+如, \f(CW\*(C`time+86_400\*(C'\fR 实际上是 \&\f(CW\*(C`time() + 86_400\*(C'\fR.
+.PP
+对于可以用在标量或者数组的上下文中的函数,非失败性的错误在标量环境下
+通常暗示返回了未定义的值或在数组环境下返回一个空的数组。
+.PP
+记住下面的重要原则:
+没有规则和数组环境下的表达式的行为和他的标量环境的行为有关系,反之亦然。 这可能产生两种完全不同的情况。在标量环境下,每个运算符和函数决定怎样以最恰当的次序返回值。 有些运算符在数组环境下返回数组的长度.,有些运算符返回的一个元素,有些返回数组中的最后一个元素,有些返回成功执行的操作的语句数。通常,他们返回一些你需要的值,除非你需要连续性。
+.PP
+在标量环境下的命名数组在第一眼看上去时和在标量环境下的列表有很大的不同。 在标量环境下,你不能得到一个像 \f(CW\*(C`(1,2,3)\*(C'\fR 的列表,因为在编译时,编译器是知道当前环境的,它将在那里产生标量的逗号运算符, 而不是用于分隔数组元素的逗号. 也就是说,它永远不会以一个数组开始。
+.PP
+一般说来, PERL中的函数对应相应的系统调用 (如\fIchown\fR\|(2), \fIfork\fR\|(2), \fIclosedir\fR\|(2), 等等.) 成功调用后返回真值,否则返回 \f(CW\*(C`undef\*(C'\fR , 下面将会提到。这一点和C的接口不一样,C中出错时将返回\f(CW\*(C`\-1\*(C'\fR .但是也有几个例外,他们是  \f(CW\*(C`wait\*(C'\fR,
+\&\f(CW\*(C`waitpid\*(C'\fR, 和 \f(CW\*(C`syscall\*(C'\fR 。
+系统调用出错时出错信息将通过特殊变量$!返回。其他的函数则不会,除非发生意外。
+.Sh "函数分类 Perl Functions by Category"
+.IX Subsection "Perl Functions by Category"
+下面是Perl中的函数(包括看起来像函数的,如某些关键词,命名运算符)的分类. 有些函数在多处出现了。
+.IP "标量和字符串函数 Functions for SCALARs or strings" 4
+.IX Item "Functions for SCALARs or strings"
+\&\f(CW\*(C`chomp\*(C'\fR, \f(CW\*(C`chop\*(C'\fR, \f(CW\*(C`chr\*(C'\fR, \f(CW\*(C`crypt\*(C'\fR, \f(CW\*(C`hex\*(C'\fR, \f(CW\*(C`index\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`lcfirst\*(C'\fR,
+\&\f(CW\*(C`length\*(C'\fR, \f(CW\*(C`oct\*(C'\fR, \f(CW\*(C`ord\*(C'\fR, \f(CW\*(C`pack\*(C'\fR, \f(CW\*(C`q/STRING/\*(C'\fR, \f(CW\*(C`qq/STRING/\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR,
+\&\f(CW\*(C`rindex\*(C'\fR, \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`substr\*(C'\fR, \f(CW\*(C`tr///\*(C'\fR, \f(CW\*(C`uc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, \f(CW\*(C`y///\*(C'\fR
+.IP "正则表达式和模式匹配 Regular expressions and pattern matching" 4
+.IX Item "Regular expressions and pattern matching"
+\&\f(CW\*(C`m//\*(C'\fR, \f(CW\*(C`pos\*(C'\fR, \f(CW\*(C`quotemeta\*(C'\fR, \f(CW\*(C`s///\*(C'\fR, \f(CW\*(C`split\*(C'\fR, \f(CW\*(C`study\*(C'\fR, \f(CW\*(C`qr//\*(C'\fR
+.IP "数字运算 Numeric functions" 4
+.IX Item "Numeric functions"
+\&\f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`atan2\*(C'\fR, \f(CW\*(C`cos\*(C'\fR, \f(CW\*(C`exp\*(C'\fR, \f(CW\*(C`hex\*(C'\fR, \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`log\*(C'\fR, \f(CW\*(C`oct\*(C'\fR, \f(CW\*(C`rand\*(C'\fR,
+\&\f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`sqrt\*(C'\fR, \f(CW\*(C`srand\*(C'\fR
+.ie n .IP "真实数组函数 Functions for real @ARRAYs" 4
+.el .IP "Functions for real \f(CW at ARRAYs\fR" 4
+.IX Item "Functions for real @ARRAYs"
+\&\f(CW\*(C`pop\*(C'\fR, \f(CW\*(C`push\*(C'\fR, \f(CW\*(C`shift\*(C'\fR, \f(CW\*(C`splice\*(C'\fR, \f(CW\*(C`unshift\*(C'\fR
+.IP "列表数据函数 Functions for list data" 4
+.IX Item "Functions for list data"
+\&\f(CW\*(C`grep\*(C'\fR, \f(CW\*(C`join\*(C'\fR, \f(CW\*(C`map\*(C'\fR, \f(CW\*(C`qw/STRING/\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR, \f(CW\*(C`sort\*(C'\fR, \f(CW\*(C`unpack\*(C'\fR
+.ie n .IP "真实哈希函数 Functions for real %HASHes" 4
+.el .IP "Functions for real \f(CW%HASHes\fR" 4
+.IX Item "Functions for real %HASHes"
+\&\f(CW\*(C`delete\*(C'\fR, \f(CW\*(C`each\*(C'\fR, \f(CW\*(C`exists\*(C'\fR, \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`values\*(C'\fR
+.IP "输入输出 Input and output functions" 4
+.IX Item "Input and output functions"
+\&\f(CW\*(C`binmode\*(C'\fR, \f(CW\*(C`close\*(C'\fR, \f(CW\*(C`closedir\*(C'\fR, \f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`eof\*(C'\fR,
+\&\f(CW\*(C`fileno\*(C'\fR, \f(CW\*(C`flock\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`getc\*(C'\fR, \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`printf\*(C'\fR, \f(CW\*(C`read\*(C'\fR,
+\&\f(CW\*(C`readdir\*(C'\fR, \f(CW\*(C`rewinddir\*(C'\fR, \f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`seekdir\*(C'\fR, \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR,
+\&\f(CW\*(C`sysread\*(C'\fR, \f(CW\*(C`sysseek\*(C'\fR, \f(CW\*(C`syswrite\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, \f(CW\*(C`telldir\*(C'\fR, \f(CW\*(C`truncate\*(C'\fR,
+\&\f(CW\*(C`warn\*(C'\fR, \f(CW\*(C`write\*(C'\fR
+.IP "定长的数据或记录 Functions for fixed length data or records" 4
+.IX Item "Functions for fixed length data or records"
+\&\f(CW\*(C`pack\*(C'\fR, \f(CW\*(C`read\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR, \f(CW\*(C`sysread\*(C'\fR, \f(CW\*(C`syswrite\*(C'\fR, \f(CW\*(C`unpack\*(C'\fR, \f(CW\*(C`vec\*(C'\fR
+.IP "文件目录控制 Functions for filehandles, files, or directories" 4
+.IX Item "Functions for filehandles, files, or directories"
+\&\f(CW\*(C`\-\f(CIX\f(CW\*(C'\fR, \f(CW\*(C`chdir\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR, \f(CW\*(C`chown\*(C'\fR, \f(CW\*(C`chroot\*(C'\fR, \f(CW\*(C`fcntl\*(C'\fR, \f(CW\*(C`glob\*(C'\fR,
+\&\f(CW\*(C`ioctl\*(C'\fR, \f(CW\*(C`link\*(C'\fR, \f(CW\*(C`lstat\*(C'\fR, \f(CW\*(C`mkdir\*(C'\fR, \f(CW\*(C`open\*(C'\fR, \f(CW\*(C`opendir\*(C'\fR,
+\&\f(CW\*(C`readlink\*(C'\fR, \f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`rmdir\*(C'\fR, \f(CW\*(C`stat\*(C'\fR, \f(CW\*(C`symlink\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR,
+\&\f(CW\*(C`umask\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR, \f(CW\*(C`utime\*(C'\fR
+.IP "流控制关键词 Keywords related to the control flow of your perl program" 4
+.IX Item "Keywords related to the control flow of your perl program"
+\&\f(CW\*(C`caller\*(C'\fR, \f(CW\*(C`continue\*(C'\fR, \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`do\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`eval\*(C'\fR, \f(CW\*(C`exit\*(C'\fR,
+\&\f(CW\*(C`goto\*(C'\fR, \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, \f(CW\*(C`redo\*(C'\fR, \f(CW\*(C`return\*(C'\fR, \f(CW\*(C`sub\*(C'\fR, \f(CW\*(C`wantarray\*(C'\fR
+.IP "作用域关键词 Keywords related to scoping" 4
+.IX Item "Keywords related to scoping"
+\&\f(CW\*(C`caller\*(C'\fR, \f(CW\*(C`import\*(C'\fR, \f(CW\*(C`local\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "杂项 Miscellaneous functions" 4
+.IX Item "Miscellaneous functions"
+\&\f(CW\*(C`defined\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`eval\*(C'\fR, \f(CW\*(C`formline\*(C'\fR, \f(CW\*(C`local\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`reset\*(C'\fR,
+\&\f(CW\*(C`scalar\*(C'\fR, \f(CW\*(C`undef\*(C'\fR, \f(CW\*(C`wantarray\*(C'\fR
+.IP "进程和进程组 Functions for processes and process groups" 4
+.IX Item "Functions for processes and process groups"
+\&\f(CW\*(C`alarm\*(C'\fR, \f(CW\*(C`exec\*(C'\fR, \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`getpgrp\*(C'\fR, \f(CW\*(C`getppid\*(C'\fR, \f(CW\*(C`getpriority\*(C'\fR, \f(CW\*(C`kill\*(C'\fR,
+\&\f(CW\*(C`pipe\*(C'\fR, \f(CW\*(C`qx/STRING/\*(C'\fR, \f(CW\*(C`setpgrp\*(C'\fR, \f(CW\*(C`setpriority\*(C'\fR, \f(CW\*(C`sleep\*(C'\fR, \f(CW\*(C`system\*(C'\fR,
+\&\f(CW\*(C`times\*(C'\fR, \f(CW\*(C`wait\*(C'\fR, \f(CW\*(C`waitpid\*(C'\fR
+.IP "模块关键词 Keywords related to perl modules" 4
+.IX Item "Keywords related to perl modules"
+\&\f(CW\*(C`do\*(C'\fR, \f(CW\*(C`import\*(C'\fR, \f(CW\*(C`no\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`require\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "类和面向对象关键词 Keywords related to classes and object-orientedness" 4
+.IX Item "Keywords related to classes and object-orientedness"
+\&\f(CW\*(C`bless\*(C'\fR, \f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`package\*(C'\fR, \f(CW\*(C`ref\*(C'\fR, \f(CW\*(C`tie\*(C'\fR, \f(CW\*(C`tied\*(C'\fR,
+\&\f(CW\*(C`untie\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.IP "底层 socket 函数 Low-level socket functions" 4
+.IX Item "Low-level socket functions"
+\&\f(CW\*(C`accept\*(C'\fR, \f(CW\*(C`bind\*(C'\fR, \f(CW\*(C`connect\*(C'\fR, \f(CW\*(C`getpeername\*(C'\fR, \f(CW\*(C`getsockname\*(C'\fR,
+\&\f(CW\*(C`getsockopt\*(C'\fR, \f(CW\*(C`listen\*(C'\fR, \f(CW\*(C`recv\*(C'\fR, \f(CW\*(C`send\*(C'\fR, \f(CW\*(C`setsockopt\*(C'\fR, \f(CW\*(C`shutdown\*(C'\fR,
+\&\f(CW\*(C`socket\*(C'\fR, \f(CW\*(C`socketpair\*(C'\fR
+.IP "SysV 进程间通讯 System V interprocess communication functions" 4
+.IX Item "System V interprocess communication functions"
+\&\f(CW\*(C`msgctl\*(C'\fR, \f(CW\*(C`msgget\*(C'\fR, \f(CW\*(C`msgrcv\*(C'\fR, \f(CW\*(C`msgsnd\*(C'\fR, \f(CW\*(C`semctl\*(C'\fR, \f(CW\*(C`semget\*(C'\fR, \f(CW\*(C`semop\*(C'\fR,
+\&\f(CW\*(C`shmctl\*(C'\fR, \f(CW\*(C`shmget\*(C'\fR, \f(CW\*(C`shmread\*(C'\fR, \f(CW\*(C`shmwrite\*(C'\fR
+.IP "获取用户信息 Fetching user and group info" 4
+.IX Item "Fetching user and group info"
+\&\f(CW\*(C`endgrent\*(C'\fR, \f(CW\*(C`endhostent\*(C'\fR, \f(CW\*(C`endnetent\*(C'\fR, \f(CW\*(C`endpwent\*(C'\fR, \f(CW\*(C`getgrent\*(C'\fR,
+\&\f(CW\*(C`getgrgid\*(C'\fR, \f(CW\*(C`getgrnam\*(C'\fR, \f(CW\*(C`getlogin\*(C'\fR, \f(CW\*(C`getpwent\*(C'\fR, \f(CW\*(C`getpwnam\*(C'\fR,
+\&\f(CW\*(C`getpwuid\*(C'\fR, \f(CW\*(C`setgrent\*(C'\fR, \f(CW\*(C`setpwent\*(C'\fR
+.IP "获取网络信息 Fetching network info" 4
+.IX Item "Fetching network info"
+\&\f(CW\*(C`endprotoent\*(C'\fR, \f(CW\*(C`endservent\*(C'\fR, \f(CW\*(C`gethostbyaddr\*(C'\fR, \f(CW\*(C`gethostbyname\*(C'\fR,
+\&\f(CW\*(C`gethostent\*(C'\fR, \f(CW\*(C`getnetbyaddr\*(C'\fR, \f(CW\*(C`getnetbyname\*(C'\fR, \f(CW\*(C`getnetent\*(C'\fR,
+\&\f(CW\*(C`getprotobyname\*(C'\fR, \f(CW\*(C`getprotobynumber\*(C'\fR, \f(CW\*(C`getprotoent\*(C'\fR,
+\&\f(CW\*(C`getservbyname\*(C'\fR, \f(CW\*(C`getservbyport\*(C'\fR, \f(CW\*(C`getservent\*(C'\fR, \f(CW\*(C`sethostent\*(C'\fR,
+\&\f(CW\*(C`setnetent\*(C'\fR, \f(CW\*(C`setprotoent\*(C'\fR, \f(CW\*(C`setservent\*(C'\fR
+.IP "时间函数 Time-related functions" 4
+.IX Item "Time-related functions"
+\&\f(CW\*(C`gmtime\*(C'\fR, \f(CW\*(C`localtime\*(C'\fR, \f(CW\*(C`time\*(C'\fR, \f(CW\*(C`times\*(C'\fR
+.IP "PERL5中的新函数 Functions new in perl5" 4
+.IX Item "Functions new in perl5"
+\&\f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`bless\*(C'\fR, \f(CW\*(C`chomp\*(C'\fR, \f(CW\*(C`chr\*(C'\fR, \f(CW\*(C`exists\*(C'\fR, \f(CW\*(C`formline\*(C'\fR, \f(CW\*(C`glob\*(C'\fR,
+\&\f(CW\*(C`import\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`lcfirst\*(C'\fR, \f(CW\*(C`map\*(C'\fR, \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`no\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`prototype\*(C'\fR,
+\&\f(CW\*(C`qx\*(C'\fR, \f(CW\*(C`qw\*(C'\fR, \f(CW\*(C`readline\*(C'\fR, \f(CW\*(C`readpipe\*(C'\fR, \f(CW\*(C`ref\*(C'\fR, \f(CW\*(C`sub*\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR, \f(CW\*(C`tie\*(C'\fR,
+\&\f(CW\*(C`tied\*(C'\fR, \f(CW\*(C`uc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, \f(CW\*(C`untie\*(C'\fR, \f(CW\*(C`use\*(C'\fR
+.Sp
+* \- \f(CW\*(C`sub\*(C'\fR was a keyword in perl4, but in perl5 it is an
+operator, which can be used in expressions.
+.IP "过时的函数 Functions obsoleted in perl5" 4
+.IX Item "Functions obsoleted in perl5"
+\&\f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR
+.Sh "可移植性 Portability"
+.IX Subsection "Portability"
+Perl 诞生于UNIX,因此可以访问所有的一般系统调用。
+在非UNIX环境中,某些UNIX下有的调用是没有实现的,或者有轻微的区别。受到影响的有:
+.PP
+\&\f(CW\*(C`\-X\*(C'\fR, \f(CW\*(C`binmode\*(C'\fR, \f(CW\*(C`chmod\*(C'\fR, \f(CW\*(C`chown\*(C'\fR, \f(CW\*(C`chroot\*(C'\fR, \f(CW\*(C`crypt\*(C'\fR,
+\&\f(CW\*(C`dbmclose\*(C'\fR, \f(CW\*(C`dbmopen\*(C'\fR, \f(CW\*(C`dump\*(C'\fR, \f(CW\*(C`endgrent\*(C'\fR, \f(CW\*(C`endhostent\*(C'\fR,
+\&\f(CW\*(C`endnetent\*(C'\fR, \f(CW\*(C`endprotoent\*(C'\fR, \f(CW\*(C`endpwent\*(C'\fR, \f(CW\*(C`endservent\*(C'\fR, \f(CW\*(C`exec\*(C'\fR,
+\&\f(CW\*(C`fcntl\*(C'\fR, \f(CW\*(C`flock\*(C'\fR, \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`getgrent\*(C'\fR, \f(CW\*(C`getgrgid\*(C'\fR, \f(CW\*(C`gethostbyname\*(C'\fR,
+\&\f(CW\*(C`gethostent\*(C'\fR, \f(CW\*(C`getlogin\*(C'\fR, \f(CW\*(C`getnetbyaddr\*(C'\fR, \f(CW\*(C`getnetbyname\*(C'\fR, \f(CW\*(C`getnetent\*(C'\fR,
+\&\f(CW\*(C`getppid\*(C'\fR, \f(CW\*(C`getprgp\*(C'\fR, \f(CW\*(C`getpriority\*(C'\fR, \f(CW\*(C`getprotobynumber\*(C'\fR,
+\&\f(CW\*(C`getprotoent\*(C'\fR, \f(CW\*(C`getpwent\*(C'\fR, \f(CW\*(C`getpwnam\*(C'\fR, \f(CW\*(C`getpwuid\*(C'\fR,
+\&\f(CW\*(C`getservbyport\*(C'\fR, \f(CW\*(C`getservent\*(C'\fR, \f(CW\*(C`getsockopt\*(C'\fR, \f(CW\*(C`glob\*(C'\fR, \f(CW\*(C`ioctl\*(C'\fR,
+\&\f(CW\*(C`kill\*(C'\fR, \f(CW\*(C`link\*(C'\fR, \f(CW\*(C`lstat\*(C'\fR, \f(CW\*(C`msgctl\*(C'\fR, \f(CW\*(C`msgget\*(C'\fR, \f(CW\*(C`msgrcv\*(C'\fR,
+\&\f(CW\*(C`msgsnd\*(C'\fR, \f(CW\*(C`open\*(C'\fR, \f(CW\*(C`pipe\*(C'\fR, \f(CW\*(C`readlink\*(C'\fR, \f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`semctl\*(C'\fR,
+\&\f(CW\*(C`semget\*(C'\fR, \f(CW\*(C`semop\*(C'\fR, \f(CW\*(C`setgrent\*(C'\fR, \f(CW\*(C`sethostent\*(C'\fR, \f(CW\*(C`setnetent\*(C'\fR,
+\&\f(CW\*(C`setpgrp\*(C'\fR, \f(CW\*(C`setpriority\*(C'\fR, \f(CW\*(C`setprotoent\*(C'\fR, \f(CW\*(C`setpwent\*(C'\fR,
+\&\f(CW\*(C`setservent\*(C'\fR, \f(CW\*(C`setsockopt\*(C'\fR, \f(CW\*(C`shmctl\*(C'\fR, \f(CW\*(C`shmget\*(C'\fR, \f(CW\*(C`shmread\*(C'\fR,
+\&\f(CW\*(C`shmwrite\*(C'\fR, \f(CW\*(C`socket\*(C'\fR, \f(CW\*(C`socketpair\*(C'\fR,
+\&\f(CW\*(C`stat\*(C'\fR, \f(CW\*(C`symlink\*(C'\fR, \f(CW\*(C`syscall\*(C'\fR, \f(CW\*(C`sysopen\*(C'\fR, \f(CW\*(C`system\*(C'\fR,
+\&\f(CW\*(C`times\*(C'\fR, \f(CW\*(C`truncate\*(C'\fR, \f(CW\*(C`umask\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR,
+\&\f(CW\*(C`utime\*(C'\fR, \f(CW\*(C`wait\*(C'\fR, \f(CW\*(C`waitpid\*(C'\fR
+.PP
+参见 perlport 和其他平台的说明文档以获得更多关于移植性的资料
+.Sh "按字母顺序排列的PERL函数 Alphabetical Listing of Perl Functions"
+.IX Subsection "Alphabetical Listing of Perl Functions"
+.IP "\-X \s-1FILEHANDLE\s0" 8
+.IX Item "-X FILEHANDLE"
+.PD 0
+.IP "\-X \s-1EXPR\s0" 8
+.IX Item "-X EXPR"
+.IP "\-X" 8
+.IX Item "-X"
+.PD
+A file test, where X is one of the letters listed below.  This unary
+operator takes one argument, either a filename or a filehandle, and
+tests the associated file to see if something is true about it.  If the
+argument is omitted, tests \f(CW$_\fR, except for \f(CW\*(C`\-t\*(C'\fR, which tests \s-1STDIN\s0.
+Unless otherwise documented, it returns \f(CW1\fR for true and \f(CW''\fR for false, or
+the undefined value if the file doesn't exist.  Despite the funny
+names, precedence is the same as any other named unary operator, and
+the argument may be parenthesized like any other unary operator.  The
+operator may be any of:
+.IX Xref "-r -w -x -o -R -W -X -O -e -z -s -f -d -l -p -S -b -c -t -u -g -k -T -B -M -A -C"
+.Sp
+.Vb 4
+\&    -r  File is readable by effective uid/gid.
+\&    -w  File is writable by effective uid/gid.
+\&    -x  File is executable by effective uid/gid.
+\&    -o  File is owned by effective uid.
+.Ve
+.Sp
+.Vb 4
+\&    -R  File is readable by real uid/gid.
+\&    -W  File is writable by real uid/gid.
+\&    -X  File is executable by real uid/gid.
+\&    -O  File is owned by real uid.
+.Ve
+.Sp
+.Vb 3
+\&    -e  File exists.
+\&    -z  File has zero size (is empty).
+\&    -s  File has nonzero size (returns size in bytes).
+.Ve
+.Sp
+.Vb 8
+\&    -f  File is a plain file.
+\&    -d  File is a directory.
+\&    -l  File is a symbolic link.
+\&    -p  File is a named pipe (FIFO), or Filehandle is a pipe.
+\&    -S  File is a socket.
+\&    -b  File is a block special file.
+\&    -c  File is a character special file.
+\&    -t  Filehandle is opened to a tty.
+.Ve
+.Sp
+.Vb 3
+\&    -u  File has setuid bit set.
+\&    -g  File has setgid bit set.
+\&    -k  File has sticky bit set.
+.Ve
+.Sp
+.Vb 2
+\&    -T  File is an ASCII text file (heuristic guess).
+\&    -B  File is a "binary" file (opposite of -T).
+.Ve
+.Sp
+.Vb 3
+\&    -M  Script start time minus file modification time, in days.
+\&    -A  Same for access time.
+\&    -C  Same for inode change time (Unix, may differ for other platforms)
+.Ve
+.Sp
+Example:
+.Sp
+.Vb 5
+\&    while (<>) {
+\&        chomp;
+\&        next unless -f $_;      # ignore specials
+\&        #...
+\&    }
+.Ve
+.Sp
+The interpretation of the file permission operators \f(CW\*(C`\-r\*(C'\fR, \f(CW\*(C`\-R\*(C'\fR,
+\&\f(CW\*(C`\-w\*(C'\fR, \f(CW\*(C`\-W\*(C'\fR, \f(CW\*(C`\-x\*(C'\fR, and \f(CW\*(C`\-X\*(C'\fR is by default based solely on the mode
+of the file and the uids and gids of the user.  There may be other
+reasons you can't actually read, write, or execute the file.  Such
+reasons may be for example network filesystem access controls, ACLs
+(access control lists), read-only filesystems, and unrecognized
+executable formats.
+.Sp
+Also note that, for the superuser on the local filesystems, the \f(CW\*(C`\-r\*(C'\fR,
+\&\f(CW\*(C`\-R\*(C'\fR, \f(CW\*(C`\-w\*(C'\fR, and \f(CW\*(C`\-W\*(C'\fR tests always return 1, and \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-X\*(C'\fR return 1
+if any execute bit is set in the mode.  Scripts run by the superuser
+may thus need to do a \fIstat()\fR to determine the actual mode of the file,
+or temporarily set their effective uid to something else.
+.Sp
+If you are using ACLs, there is a pragma called \f(CW\*(C`filetest\*(C'\fR that may
+produce more accurate results than the bare \fIstat()\fR mode bits.
+When under the \f(CW\*(C`use filetest 'access'\*(C'\fR the above-mentioned filetests
+will test whether the permission can (not) be granted using the
+\&\fIaccess()\fR family of system calls.  Also note that the \f(CW\*(C`\-x\*(C'\fR and \f(CW\*(C`\-X\*(C'\fR may
+under this pragma return true even if there are no execute permission
+bits set (nor any extra execute permission ACLs).  This strangeness is
+due to the underlying system calls' definitions.  Read the
+documentation for the \f(CW\*(C`filetest\*(C'\fR pragma for more information.
+.Sp
+Note that \f(CW\*(C`\-s/a/b/\*(C'\fR does not do a negated substitution.  Saying
+\&\f(CW\*(C`\-exp($foo)\*(C'\fR still works as expected, however\*(--only single letters
+following a minus are interpreted as file tests.
+.Sp
+The \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR switches work as follows.  The first block or so of the
+file is examined for odd characters such as strange control codes or
+characters with the high bit set.  If too many strange characters (>30%)
+are found, it's a \f(CW\*(C`\-B\*(C'\fR file, otherwise it's a \f(CW\*(C`\-T\*(C'\fR file.  Also, any file
+containing null in the first block is considered a binary file.  If \f(CW\*(C`\-T\*(C'\fR
+or \f(CW\*(C`\-B\*(C'\fR is used on a filehandle, the current \s-1IO\s0 buffer is examined
+rather than the first block.  Both \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR return true on a null
+file, or a file at \s-1EOF\s0 when testing a filehandle.  Because you have to
+read a file to do the \f(CW\*(C`\-T\*(C'\fR test, on most occasions you want to use a \f(CW\*(C`\-f\*(C'\fR
+against the file first, as in \f(CW\*(C`next unless \-f $file && \-T $file\*(C'\fR.
+.Sp
+If any of the file tests (or either the \f(CW\*(C`stat\*(C'\fR or \f(CW\*(C`lstat\*(C'\fR operators) are given
+the special filehandle consisting of a solitary underline, then the stat
+structure of the previous file test (or stat operator) is used, saving
+a system call.  (This doesn't work with \f(CW\*(C`\-t\*(C'\fR, and you need to remember
+that \fIlstat()\fR and \f(CW\*(C`\-l\*(C'\fR will leave values in the stat structure for the
+symbolic link, not the real file.)  (Also, if the stat buffer was filled by
+a \f(CW\*(C`lstat\*(C'\fR call, \f(CW\*(C`\-T\*(C'\fR and \f(CW\*(C`\-B\*(C'\fR will reset it with the results of \f(CW\*(C`stat _\*(C'\fR).
+Example:
+.Sp
+.Vb 1
+\&    print "Can do.\en" if -r $a || -w _ || -x _;
+.Ve
+.Sp
+.Vb 9
+\&    stat($filename);
+\&    print "Readable\en" if -r _;
+\&    print "Writable\en" if -w _;
+\&    print "Executable\en" if -x _;
+\&    print "Setuid\en" if -u _;
+\&    print "Setgid\en" if -g _;
+\&    print "Sticky\en" if -k _;
+\&    print "Text\en" if -T _;
+\&    print "Binary\en" if -B _;
+.Ve
+.IP "abs \s-1VALUE\s0" 8
+.IX Item "abs VALUE"
+.PD 0
+.IP "abs" 8
+.IX Item "abs"
+.PD
+Returns the absolute value of its argument.
+If \s-1VALUE\s0 is omitted, uses \f(CW$_\fR.
+.IP "accept \s-1NEWSOCKET\s0,GENERICSOCKET" 8
+.IX Item "accept NEWSOCKET,GENERICSOCKET"
+Accepts an incoming socket connect, just as the \fIaccept\fR\|(2) system call
+does.  Returns the packed address if it succeeded, false otherwise.
+See the example in \*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F.  See \*(L"$^F\*(R" in perlvar.
+.IP "alarm \s-1SECONDS\s0" 8
+.IX Item "alarm SECONDS"
+.PD 0
+.IP "alarm" 8
+.IX Item "alarm"
+.PD
+Arranges to have a \s-1SIGALRM\s0 delivered to this process after the
+specified number of wallclock seconds have elapsed.  If \s-1SECONDS\s0 is not
+specified, the value stored in \f(CW$_\fR is used. (On some machines,
+unfortunately, the elapsed time may be up to one second less or more
+than you specified because of how seconds are counted, and process
+scheduling may delay the delivery of the signal even further.)
+.Sp
+Only one timer may be counting at once.  Each call disables the
+previous timer, and an argument of \f(CW0\fR may be supplied to cancel the
+previous timer without starting a new one.  The returned value is the
+amount of time remaining on the previous timer.
+.Sp
+For delays of finer granularity than one second, you may use Perl's
+four-argument version of \fIselect()\fR leaving the first three arguments
+undefined, or you might be able to use the \f(CW\*(C`syscall\*(C'\fR interface to
+access \fIsetitimer\fR\|(2) if your system supports it.  The Time::HiRes
+module (from \s-1CPAN\s0, and starting from Perl 5.8 part of the standard
+distribution) may also prove useful.
+.Sp
+It is usually a mistake to intermix \f(CW\*(C`alarm\*(C'\fR and \f(CW\*(C`sleep\*(C'\fR calls.
+(\f(CW\*(C`sleep\*(C'\fR may be internally implemented in your system with \f(CW\*(C`alarm\*(C'\fR)
+.Sp
+If you want to use \f(CW\*(C`alarm\*(C'\fR to time out a system call you need to use an
+\&\f(CW\*(C`eval\*(C'\fR/\f(CW\*(C`die\*(C'\fR pair.  You can't rely on the alarm causing the system call to
+fail with \f(CW$!\fR set to \f(CW\*(C`EINTR\*(C'\fR because Perl sets up signal handlers to
+restart system calls on some systems.  Using \f(CW\*(C`eval\*(C'\fR/\f(CW\*(C`die\*(C'\fR always works,
+modulo the caveats given in \*(L"Signals\*(R" in perlipc.
+.Sp
+.Vb 13
+\&    eval {
+\&        local $SIG{ALRM} = sub { die "alarm\en" }; # NB: \en required
+\&        alarm $timeout;
+\&        $nread = sysread SOCKET, $buffer, $size;
+\&        alarm 0;
+\&    };
+\&    if ($@) {
+\&        die unless $@ eq "alarm\en";   # propagate unexpected errors
+\&        # timed out
+\&    }
+\&    else {
+\&        # didn't
+\&    }
+.Ve
+.Sp
+For more information see perlipc.
+.IP "atan2 Y,X" 8
+.IX Item "atan2 Y,X"
+Returns the arctangent of Y/X in the range \-PI to \s-1PI\s0.
+.Sp
+For the tangent operation, you may use the \f(CW\*(C`Math::Trig::tan\*(C'\fR
+function, or use the familiar relation:
+.Sp
+.Vb 1
+\&    sub tan { sin($_[0]) / cos($_[0])  }
+.Ve
+.IP "bind \s-1SOCKET\s0,NAME" 8
+.IX Item "bind SOCKET,NAME"
+Binds a network address to a socket, just as the bind system call
+does.  Returns true if it succeeded, false otherwise.  \s-1NAME\s0 should be a
+packed address of the appropriate type for the socket.  See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "binmode \s-1FILEHANDLE\s0, \s-1LAYER\s0" 8
+.IX Item "binmode FILEHANDLE, LAYER"
+.PD 0
+.IP "binmode \s-1FILEHANDLE\s0" 8
+.IX Item "binmode FILEHANDLE"
+.PD
+Arranges for \s-1FILEHANDLE\s0 to be read or written in \*(L"binary\*(R" or \*(L"text\*(R"
+mode on systems where the run-time libraries distinguish between
+binary and text files.  If \s-1FILEHANDLE\s0 is an expression, the value is
+taken as the name of the filehandle.  Returns true on success,
+otherwise it returns \f(CW\*(C`undef\*(C'\fR and sets \f(CW$!\fR (errno).
+.Sp
+On some systems (in general, \s-1DOS\s0 and Windows-based systems) \fIbinmode()\fR
+is necessary when you're not working with a text file.  For the sake
+of portability it is a good idea to always use it when appropriate,
+and to never use it when it isn't appropriate.  Also, people can
+set their I/O to be by default \s-1UTF\-8\s0 encoded Unicode, not bytes.
+.Sp
+In other words: regardless of platform, use \fIbinmode()\fR on binary data,
+like for example images.
+.Sp
+If \s-1LAYER\s0 is present it is a single string, but may contain multiple
+directives. The directives alter the behaviour of the file handle.
+When \s-1LAYER\s0 is present using binmode on text file makes sense.
+.Sp
+If \s-1LAYER\s0 is omitted or specified as \f(CW\*(C`:raw\*(C'\fR the filehandle is made
+suitable for passing binary data. This includes turning off possible \s-1CRLF\s0
+translation and marking it as bytes (as opposed to Unicode characters).
+Note that as despite what may be implied in \fI\*(L"Programming Perl\*(R"\fR
+(the Camel) or elsewhere \f(CW\*(C`:raw\*(C'\fR is \fInot\fR the simply inverse of \f(CW\*(C`:crlf\*(C'\fR
+\&\*(-- other layers which would affect binary nature of the stream are
+\&\fIalso\fR disabled. See PerlIO, perlrun and the discussion about the
+\&\s-1PERLIO\s0 environment variable.
+.Sp
+The \f(CW\*(C`:bytes\*(C'\fR, \f(CW\*(C`:crlf\*(C'\fR, and \f(CW\*(C`:utf8\*(C'\fR, and any other directives of the
+form \f(CW\*(C`:...\*(C'\fR, are called I/O \fIlayers\fR.  The \f(CW\*(C`open\*(C'\fR pragma can be used to
+establish default I/O layers.  See open.
+.Sp
+\&\fIThe \s-1LAYER\s0 parameter of the \fIbinmode()\fI function is described as \*(L"\s-1DISCIPLINE\s0\*(R"
+in \*(L"Programming Perl, 3rd Edition\*(R".  However, since the publishing of this
+book, by many known as \*(L"Camel \s-1III\s0\*(R", the consensus of the naming of this
+functionality has moved from \*(L"discipline\*(R" to \*(L"layer\*(R".  All documentation
+of this version of Perl therefore refers to \*(L"layers\*(R" rather than to
+\&\*(L"disciplines\*(R".  Now back to the regularly scheduled documentation...\fR
+.Sp
+To mark \s-1FILEHANDLE\s0 as \s-1UTF\-8\s0, use \f(CW\*(C`:utf8\*(C'\fR.
+.Sp
+In general, \fIbinmode()\fR should be called after \fIopen()\fR but before any I/O
+is done on the filehandle.  Calling \fIbinmode()\fR will normally flush any
+pending buffered output data (and perhaps pending input data) on the
+handle.  An exception to this is the \f(CW\*(C`:encoding\*(C'\fR layer that
+changes the default character encoding of the handle, see open.
+The \f(CW\*(C`:encoding\*(C'\fR layer sometimes needs to be called in
+mid\-stream, and it doesn't flush the stream.  The \f(CW\*(C`:encoding\*(C'\fR
+also implicitly pushes on top of itself the \f(CW\*(C`:utf8\*(C'\fR layer because
+internally Perl will operate on \s-1UTF\-8\s0 encoded Unicode characters.
+.Sp
+The operating system, device drivers, C libraries, and Perl run-time
+system all work together to let the programmer treat a single
+character (\f(CW\*(C`\en\*(C'\fR) as the line terminator, irrespective of the external
+representation.  On many operating systems, the native text file
+representation matches the internal representation, but on some
+platforms the external representation of \f(CW\*(C`\en\*(C'\fR is made up of more than
+one character.
+.Sp
+Mac \s-1OS\s0, all variants of Unix, and Stream_LF files on \s-1VMS\s0 use a single
+character to end each line in the external representation of text (even
+though that single character is \s-1CARRIAGE\s0 \s-1RETURN\s0 on Mac \s-1OS\s0 and \s-1LINE\s0 \s-1FEED\s0
+on Unix and most \s-1VMS\s0 files). In other systems like \s-1OS/2\s0, \s-1DOS\s0 and the
+various flavors of MS-Windows your program sees a \f(CW\*(C`\en\*(C'\fR as a simple \f(CW\*(C`\ecJ\*(C'\fR,
+but what's stored in text files are the two characters \f(CW\*(C`\ecM\ecJ\*(C'\fR.  That
+means that, if you don't use \fIbinmode()\fR on these systems, \f(CW\*(C`\ecM\ecJ\*(C'\fR
+sequences on disk will be converted to \f(CW\*(C`\en\*(C'\fR on input, and any \f(CW\*(C`\en\*(C'\fR in
+your program will be converted back to \f(CW\*(C`\ecM\ecJ\*(C'\fR on output.  This is what
+you want for text files, but it can be disastrous for binary files.
+.Sp
+Another consequence of using \fIbinmode()\fR (on some systems) is that
+special end-of-file markers will be seen as part of the data stream.
+For systems from the Microsoft family this means that if your binary
+data contains \f(CW\*(C`\ecZ\*(C'\fR, the I/O subsystem will regard it as the end of
+the file, unless you use \fIbinmode()\fR.
+.Sp
+\&\fIbinmode()\fR is not only important for \fIreadline()\fR and \fIprint()\fR operations,
+but also when using \fIread()\fR, \fIseek()\fR, \fIsysread()\fR, \fIsyswrite()\fR and \fItell()\fR
+(see perlport for more details).  See the \f(CW$/\fR and \f(CW\*(C`$\e\*(C'\fR variables
+in perlvar for how to manually set your input and output
+line-termination sequences.
+.IP "bless \s-1REF\s0,CLASSNAME" 8
+.IX Item "bless REF,CLASSNAME"
+.PD 0
+.IP "bless \s-1REF\s0" 8
+.IX Item "bless REF"
+.PD
+This function tells the thingy referenced by \s-1REF\s0 that it is now an object
+in the \s-1CLASSNAME\s0 package.  If \s-1CLASSNAME\s0 is omitted, the current package
+is used.  Because a \f(CW\*(C`bless\*(C'\fR is often the last thing in a constructor,
+it returns the reference for convenience.  Always use the two-argument
+version if the function doing the blessing might be inherited by a
+derived class.  See perltoot and perlobj for more about the blessing
+(and blessings) of objects.
+.Sp
+Consider always blessing objects in CLASSNAMEs that are mixed case.
+Namespaces with all lowercase names are considered reserved for
+Perl pragmata.  Builtin types have all uppercase names, so to prevent
+confusion, you may wish to avoid such package names as well.  Make sure
+that \s-1CLASSNAME\s0 is a true value.
+.Sp
+See \*(L"Perl Modules\*(R" in perlmod.
+.IP "caller \s-1EXPR\s0" 8
+.IX Item "caller EXPR"
+.PD 0
+.IP "caller" 8
+.IX Item "caller"
+.PD
+Returns the context of the current subroutine call.  In scalar context,
+returns the caller's package name if there is a caller, that is, if
+we're in a subroutine or \f(CW\*(C`eval\*(C'\fR or \f(CW\*(C`require\*(C'\fR, and the undefined value
+otherwise.  In list context, returns
+.Sp
+.Vb 1
+\&    ($package, $filename, $line) = caller;
+.Ve
+.Sp
+With \s-1EXPR\s0, it returns some extra information that the debugger uses to
+print a stack trace.  The value of \s-1EXPR\s0 indicates how many call frames
+to go back before the current one.
+.Sp
+.Vb 2
+\&    ($package, $filename, $line, $subroutine, $hasargs,
+\&    $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i);
+.Ve
+.Sp
+Here \f(CW$subroutine\fR may be \f(CW\*(C`(eval)\*(C'\fR if the frame is not a subroutine
+call, but an \f(CW\*(C`eval\*(C'\fR.  In such a case additional elements \f(CW$evaltext\fR and
+\&\f(CW$is_require\fR are set: \f(CW$is_require\fR is true if the frame is created by a
+\&\f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR statement, \f(CW$evaltext\fR contains the text of the
+\&\f(CW\*(C`eval EXPR\*(C'\fR statement.  In particular, for an \f(CW\*(C`eval BLOCK\*(C'\fR statement,
+\&\f(CW$filename\fR is \f(CW\*(C`(eval)\*(C'\fR, but \f(CW$evaltext\fR is undefined.  (Note also that
+each \f(CW\*(C`use\*(C'\fR statement creates a \f(CW\*(C`require\*(C'\fR frame inside an \f(CW\*(C`eval EXPR\*(C'\fR
+frame.)  \f(CW$subroutine\fR may also be \f(CW\*(C`(unknown)\*(C'\fR if this particular
+subroutine happens to have been deleted from the symbol table.
+\&\f(CW$hasargs\fR is true if a new instance of \f(CW at _\fR was set up for the frame.
+\&\f(CW$hints\fR and \f(CW$bitmask\fR contain pragmatic hints that the caller was
+compiled with.  The \f(CW$hints\fR and \f(CW$bitmask\fR values are subject to change
+between versions of Perl, and are not meant for external use.
+.Sp
+Furthermore, when called from within the \s-1DB\s0 package, caller returns more
+detailed information: it sets the list variable \f(CW at DB::args\fR to be the
+arguments with which the subroutine was invoked.
+.Sp
+Be aware that the optimizer might have optimized call frames away before
+\&\f(CW\*(C`caller\*(C'\fR had a chance to get the information.  That means that \f(CWcaller(N)\fR
+might not return information about the call frame you expect it do, for
+\&\f(CW\*(C`N > 1\*(C'\fR.  In particular, \f(CW at DB::args\fR might have information from the
+previous time \f(CW\*(C`caller\*(C'\fR was called.
+.IP "chdir \s-1EXPR\s0" 8
+.IX Item "chdir EXPR"
+Changes the working directory to \s-1EXPR\s0, if possible. If \s-1EXPR\s0 is omitted,
+changes to the directory specified by \f(CW$ENV{HOME}\fR, if set; if not,
+changes to the directory specified by \f(CW$ENV{LOGDIR}\fR. (Under \s-1VMS\s0, the
+variable \f(CW$ENV{SYS$LOGIN}\fR is also checked, and used if it is set.) If
+neither is set, \f(CW\*(C`chdir\*(C'\fR does nothing. It returns true upon success,
+false otherwise. See the example under \f(CW\*(C`die\*(C'\fR.
+.IP "chmod \s-1LIST\s0" 8
+.IX Item "chmod LIST"
+Changes the permissions of a list of files.  The first element of the
+list must be the numerical mode, which should probably be an octal
+number, and which definitely should \fInot\fR a string of octal digits:
+\&\f(CW0644\fR is okay, \f(CW'0644'\fR is not.  Returns the number of files
+successfully changed.  See also \*(L"oct\*(R", if all you have is a string.
+.Sp
+.Vb 6
+\&    $cnt = chmod 0755, 'foo', 'bar';
+\&    chmod 0755, @executables;
+\&    $mode = '0644'; chmod $mode, 'foo';      # !!! sets mode to
+\&                                             # --w----r-T
+\&    $mode = '0644'; chmod oct($mode), 'foo'; # this is better
+\&    $mode = 0644;   chmod $mode, 'foo';      # this is best
+.Ve
+.Sp
+You can also import the symbolic \f(CW\*(C`S_I*\*(C'\fR constants from the Fcntl
+module:
+.Sp
+.Vb 1
+\&    use Fcntl ':mode';
+.Ve
+.Sp
+.Vb 2
+\&    chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
+\&    # This is identical to the chmod 0755 of the above example.
+.Ve
+.IP "chomp \s-1VARIABLE\s0" 8
+.IX Item "chomp VARIABLE"
+.PD 0
+.IP "chomp( \s-1LIST\s0 )" 8
+.IX Item "chomp( LIST )"
+.IP "chomp" 8
+.IX Item "chomp"
+.PD
+This safer version of \*(L"chop\*(R" removes any trailing string
+that corresponds to the current value of \f(CW$/\fR (also known as
+\&\f(CW$INPUT_RECORD_SEPARATOR\fR in the \f(CW\*(C`English\*(C'\fR module).  It returns the total
+number of characters removed from all its arguments.  It's often used to
+remove the newline from the end of an input record when you're worried
+that the final record may be missing its newline.  When in paragraph
+mode (\f(CW\*(C`$/ = ""\*(C'\fR), it removes all trailing newlines from the string.
+When in slurp mode (\f(CW\*(C`$/ = undef\*(C'\fR) or fixed-length record mode (\f(CW$/\fR is
+a reference to an integer or the like, see perlvar) \fIchomp()\fR won't
+remove anything.
+If \s-1VARIABLE\s0 is omitted, it chomps \f(CW$_\fR.  Example:
+.Sp
+.Vb 5
+\&    while (<>) {
+\&        chomp;  # avoid \en on last field
+\&        @array = split(/:/);
+\&        # ...
+\&    }
+.Ve
+.Sp
+If \s-1VARIABLE\s0 is a hash, it chomps the hash's values, but not its keys.
+.Sp
+You can actually chomp anything that's an lvalue, including an assignment:
+.Sp
+.Vb 2
+\&    chomp($cwd = `pwd`);
+\&    chomp($answer = <STDIN>);
+.Ve
+.Sp
+If you chomp a list, each element is chomped, and the total number of
+characters removed is returned.
+.Sp
+Note that parentheses are necessary when you're chomping anything
+that is not a simple variable.  This is because \f(CW\*(C`chomp $cwd = `pwd`;\*(C'\fR
+is interpreted as \f(CW\*(C`(chomp $cwd) = `pwd`;\*(C'\fR, rather than as
+\&\f(CW\*(C`chomp( $cwd = `pwd` )\*(C'\fR which you might expect.  Similarly,
+\&\f(CW\*(C`chomp $a, $b\*(C'\fR is interpreted as \f(CW\*(C`chomp($a), $b\*(C'\fR rather than
+as \f(CW\*(C`chomp($a, $b)\*(C'\fR.
+.IP "chop \s-1VARIABLE\s0" 8
+.IX Item "chop VARIABLE"
+.PD 0
+.IP "chop( \s-1LIST\s0 )" 8
+.IX Item "chop( LIST )"
+.IP "chop" 8
+.IX Item "chop"
+.PD
+Chops off the last character of a string and returns the character
+chopped.  It is much more efficient than \f(CW\*(C`s/.$//s\*(C'\fR because it neither
+scans nor copies the string.  If \s-1VARIABLE\s0 is omitted, chops \f(CW$_\fR.
+If \s-1VARIABLE\s0 is a hash, it chops the hash's values, but not its keys.
+.Sp
+You can actually chop anything that's an lvalue, including an assignment.
+.Sp
+If you chop a list, each element is chopped.  Only the value of the
+last \f(CW\*(C`chop\*(C'\fR is returned.
+.Sp
+Note that \f(CW\*(C`chop\*(C'\fR returns the last character.  To return all but the last
+character, use \f(CW\*(C`substr($string, 0, \-1)\*(C'\fR.
+.Sp
+See also \*(L"chomp\*(R".
+.IP "chown \s-1LIST\s0" 8
+.IX Item "chown LIST"
+Changes the owner (and group) of a list of files.  The first two
+elements of the list must be the \fInumeric\fR uid and gid, in that
+order.  A value of \-1 in either position is interpreted by most
+systems to leave that value unchanged.  Returns the number of files
+successfully changed.
+.Sp
+.Vb 2
+\&    $cnt = chown $uid, $gid, 'foo', 'bar';
+\&    chown $uid, $gid, @filenames;
+.Ve
+.Sp
+Here's an example that looks up nonnumeric uids in the passwd file:
+.Sp
+.Vb 4
+\&    print "User: ";
+\&    chomp($user = <STDIN>);
+\&    print "Files: ";
+\&    chomp($pattern = <STDIN>);
+.Ve
+.Sp
+.Vb 2
+\&    ($login,$pass,$uid,$gid) = getpwnam($user)
+\&        or die "$user not in passwd file";
+.Ve
+.Sp
+.Vb 2
+\&    @ary = glob($pattern);      # expand filenames
+\&    chown $uid, $gid, @ary;
+.Ve
+.Sp
+On most systems, you are not allowed to change the ownership of the
+file unless you're the superuser, although you should be able to change
+the group to any of your secondary groups.  On insecure systems, these
+restrictions may be relaxed, but this is not a portable assumption.
+On \s-1POSIX\s0 systems, you can detect this condition this way:
+.Sp
+.Vb 2
+\&    use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
+\&    $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
+.Ve
+.IP "chr \s-1NUMBER\s0" 8
+.IX Item "chr NUMBER"
+.PD 0
+.IP "chr" 8
+.IX Item "chr"
+.PD
+Returns the character represented by that \s-1NUMBER\s0 in the character set.
+For example, \f(CW\*(C`chr(65)\*(C'\fR is \f(CW"A"\fR in either \s-1ASCII\s0 or Unicode, and
+chr(0x263a) is a Unicode smiley face.  Note that characters from 128
+to 255 (inclusive) are by default not encoded in \s-1UTF\-8\s0 Unicode for
+backward compatibility reasons (but see encoding).
+.Sp
+If \s-1NUMBER\s0 is omitted, uses \f(CW$_\fR.
+.Sp
+For the reverse, use \*(L"ord\*(R".
+.Sp
+Note that under the \f(CW\*(C`bytes\*(C'\fR pragma the \s-1NUMBER\s0 is masked to
+the low eight bits.
+.Sp
+See perlunicode and encoding for more about Unicode.
+.IP "chroot \s-1FILENAME\s0" 8
+.IX Item "chroot FILENAME"
+.PD 0
+.IP "chroot" 8
+.IX Item "chroot"
+.PD
+This function works like the system call by the same name: it makes the
+named directory the new root directory for all further pathnames that
+begin with a \f(CW\*(C`/\*(C'\fR by your process and all its children.  (It doesn't
+change your current working directory, which is unaffected.)  For security
+reasons, this call is restricted to the superuser.  If \s-1FILENAME\s0 is
+omitted, does a \f(CW\*(C`chroot\*(C'\fR to \f(CW$_\fR.
+.IP "close \s-1FILEHANDLE\s0" 8
+.IX Item "close FILEHANDLE"
+.PD 0
+.IP "close" 8
+.IX Item "close"
+.PD
+Closes the file or pipe associated with the file handle, returning
+true only if \s-1IO\s0 buffers are successfully flushed and closes the system
+file descriptor.  Closes the currently selected filehandle if the
+argument is omitted.
+.Sp
+You don't have to close \s-1FILEHANDLE\s0 if you are immediately going to do
+another \f(CW\*(C`open\*(C'\fR on it, because \f(CW\*(C`open\*(C'\fR will close it for you.  (See
+\&\f(CW\*(C`open\*(C'\fR.)  However, an explicit \f(CW\*(C`close\*(C'\fR on an input file resets the line
+counter (\f(CW$.\fR), while the implicit close done by \f(CW\*(C`open\*(C'\fR does not.
+.Sp
+If the file handle came from a piped open \f(CW\*(C`close\*(C'\fR will additionally
+return false if one of the other system calls involved fails or if the
+program exits with non-zero status.  (If the only problem was that the
+program exited non-zero \f(CW$!\fR will be set to \f(CW0\fR.)  Closing a pipe
+also waits for the process executing on the pipe to complete, in case you
+want to look at the output of the pipe afterwards, and
+implicitly puts the exit status value of that command into \f(CW$?\fR.
+.Sp
+Prematurely closing the read end of a pipe (i.e. before the process
+writing to it at the other end has closed it) will result in a
+\&\s-1SIGPIPE\s0 being delivered to the writer.  If the other end can't
+handle that, be sure to read all the data before closing the pipe.
+.Sp
+Example:
+.Sp
+.Vb 8
+\&    open(OUTPUT, '|sort >foo')  # pipe to sort
+\&        or die "Can't start sort: $!";
+\&    #...                        # print stuff to output
+\&    close OUTPUT                # wait for sort to finish
+\&        or warn $! ? "Error closing sort pipe: $!"
+\&                   : "Exit status $? from sort";
+\&    open(INPUT, 'foo')          # get sort's results
+\&        or die "Can't open 'foo' for input: $!";
+.Ve
+.Sp
+\&\s-1FILEHANDLE\s0 may be an expression whose value can be used as an indirect
+filehandle, usually the real filehandle name.
+.IP "closedir \s-1DIRHANDLE\s0" 8
+.IX Item "closedir DIRHANDLE"
+Closes a directory opened by \f(CW\*(C`opendir\*(C'\fR and returns the success of that
+system call.
+.IP "connect \s-1SOCKET\s0,NAME" 8
+.IX Item "connect SOCKET,NAME"
+Attempts to connect to a remote socket, just as the connect system call
+does.  Returns true if it succeeded, false otherwise.  \s-1NAME\s0 should be a
+packed address of the appropriate type for the socket.  See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "continue \s-1BLOCK\s0" 8
+.IX Item "continue BLOCK"
+Actually a flow control statement rather than a function.  If there is a
+\&\f(CW\*(C`continue\*(C'\fR \s-1BLOCK\s0 attached to a \s-1BLOCK\s0 (typically in a \f(CW\*(C`while\*(C'\fR or
+\&\f(CW\*(C`foreach\*(C'\fR), it is always executed just before the conditional is about to
+be evaluated again, just like the third part of a \f(CW\*(C`for\*(C'\fR loop in C.  Thus
+it can be used to increment a loop variable, even when the loop has been
+continued via the \f(CW\*(C`next\*(C'\fR statement (which is similar to the C \f(CW\*(C`continue\*(C'\fR
+statement).
+.Sp
+\&\f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, or \f(CW\*(C`redo\*(C'\fR may appear within a \f(CW\*(C`continue\*(C'\fR
+block.  \f(CW\*(C`last\*(C'\fR and \f(CW\*(C`redo\*(C'\fR will behave as if they had been executed within
+the main block.  So will \f(CW\*(C`next\*(C'\fR, but since it will execute a \f(CW\*(C`continue\*(C'\fR
+block, it may be more entertaining.
+.Sp
+.Vb 9
+\&    while (EXPR) {
+\&        ### redo always comes here
+\&        do_something;
+\&    } continue {
+\&        ### next always comes here
+\&        do_something_else;
+\&        # then back the top to re-check EXPR
+\&    }
+\&    ### last always comes here
+.Ve
+.Sp
+Omitting the \f(CW\*(C`continue\*(C'\fR section is semantically equivalent to using an
+empty one, logically enough.  In that case, \f(CW\*(C`next\*(C'\fR goes directly back
+to check the condition at the top of the loop.
+.IP "cos \s-1EXPR\s0" 8
+.IX Item "cos EXPR"
+.PD 0
+.IP "cos" 8
+.IX Item "cos"
+.PD
+Returns the cosine of \s-1EXPR\s0 (expressed in radians).  If \s-1EXPR\s0 is omitted,
+takes cosine of \f(CW$_\fR.
+.Sp
+For the inverse cosine operation, you may use the \f(CW\*(C`Math::Trig::acos()\*(C'\fR
+function, or use this relation:
+.Sp
+.Vb 1
+\&    sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
+.Ve
+.IP "crypt \s-1PLAINTEXT\s0,SALT" 8
+.IX Item "crypt PLAINTEXT,SALT"
+Encrypts a string exactly like the \fIcrypt\fR\|(3) function in the C library
+(assuming that you actually have a version there that has not been
+extirpated as a potential munition).  This can prove useful for checking
+the password file for lousy passwords, amongst other things.  Only the
+guys wearing white hats should do this.
+.Sp
+Note that crypt is intended to be a one-way function, much like
+breaking eggs to make an omelette.  There is no (known) corresponding
+decrypt function (in other words, the \fIcrypt()\fR is a one-way hash
+function).  As a result, this function isn't all that useful for
+cryptography.  (For that, see your nearby \s-1CPAN\s0 mirror.)
+.Sp
+When verifying an existing encrypted string you should use the
+encrypted text as the salt (like \f(CW\*(C`crypt($plain, $crypted) eq
+$crypted\*(C'\fR).  This allows your code to work with the standard crypt
+and with more exotic implementations.  In other words, do not assume
+anything about the returned string itself, or how many bytes in
+the encrypted string matter.
+.Sp
+Traditionally the result is a string of 13 bytes: two first bytes of
+the salt, followed by 11 bytes from the set \f(CW\*(C`[./0\-9A\-Za\-z]\*(C'\fR, and only
+the first eight bytes of the encrypted string mattered, but
+alternative hashing schemes (like \s-1MD5\s0), higher level security schemes
+(like C2), and implementations on non-UNIX platforms may produce
+different strings.
+.Sp
+When choosing a new salt create a random two character string whose
+characters come from the set \f(CW\*(C`[./0\-9A\-Za\-z]\*(C'\fR (like \f(CW\*(C`join '', ('.',
+\&'/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]\*(C'\fR).  This set of
+characters is just a recommendation; the characters allowed in
+the salt depend solely on your system's crypt library, and Perl can't
+restrict what salts \f(CW\*(C`crypt()\*(C'\fR accepts.
+.Sp
+Here's an example that makes sure that whoever runs this program knows
+their own password:
+.Sp
+.Vb 1
+\&    $pwd = (getpwuid($<))[1];
+.Ve
+.Sp
+.Vb 5
+\&    system "stty -echo";
+\&    print "Password: ";
+\&    chomp($word = <STDIN>);
+\&    print "\en";
+\&    system "stty echo";
+.Ve
+.Sp
+.Vb 5
+\&    if (crypt($word, $pwd) ne $pwd) {
+\&        die "Sorry...\en";
+\&    } else {
+\&        print "ok\en";
+\&    }
+.Ve
+.Sp
+Of course, typing in your own password to whoever asks you
+for it is unwise.
+.Sp
+The crypt function is unsuitable for encrypting large quantities
+of data, not least of all because you can't get the information
+back.  Look at the \fIby\-module/Crypt\fR and \fIby\-module/PGP\fR directories
+on your favorite \s-1CPAN\s0 mirror for a slew of potentially useful
+modules.
+.Sp
+If using \fIcrypt()\fR on a Unicode string (which \fIpotentially\fR has
+characters with codepoints above 255), Perl tries to make sense
+of the situation by trying to downgrade (a copy of the string)
+the string back to an eight-bit byte string before calling \fIcrypt()\fR
+(on that copy).  If that works, good.  If not, \fIcrypt()\fR dies with
+\&\f(CW\*(C`Wide character in crypt\*(C'\fR.
+.IP "dbmclose \s-1HASH\s0" 8
+.IX Item "dbmclose HASH"
+[This function has been largely superseded by the \f(CW\*(C`untie\*(C'\fR function.]
+.Sp
+Breaks the binding between a \s-1DBM\s0 file and a hash.
+.IP "dbmopen \s-1HASH\s0,DBNAME,MASK" 8
+.IX Item "dbmopen HASH,DBNAME,MASK"
+[This function has been largely superseded by the \f(CW\*(C`tie\*(C'\fR function.]
+.Sp
+This binds a \fIdbm\fR\|(3), \fIndbm\fR\|(3), \fIsdbm\fR\|(3), \fIgdbm\fR\|(3), or Berkeley \s-1DB\s0 file to a
+hash.  \s-1HASH\s0 is the name of the hash.  (Unlike normal \f(CW\*(C`open\*(C'\fR, the first
+argument is \fInot\fR a filehandle, even though it looks like one).  \s-1DBNAME\s0
+is the name of the database (without the \fI.dir\fR or \fI.pag\fR extension if
+any).  If the database does not exist, it is created with protection
+specified by \s-1MASK\s0 (as modified by the \f(CW\*(C`umask\*(C'\fR).  If your system supports
+only the older \s-1DBM\s0 functions, you may perform only one \f(CW\*(C`dbmopen\*(C'\fR in your
+program.  In older versions of Perl, if your system had neither \s-1DBM\s0 nor
+ndbm, calling \f(CW\*(C`dbmopen\*(C'\fR produced a fatal error; it now falls back to
+\&\fIsdbm\fR\|(3).
+.Sp
+If you don't have write access to the \s-1DBM\s0 file, you can only read hash
+variables, not set them.  If you want to test whether you can write,
+either use file tests or try setting a dummy hash entry inside an \f(CW\*(C`eval\*(C'\fR,
+which will trap the error.
+.Sp
+Note that functions such as \f(CW\*(C`keys\*(C'\fR and \f(CW\*(C`values\*(C'\fR may return huge lists
+when used on large \s-1DBM\s0 files.  You may prefer to use the \f(CW\*(C`each\*(C'\fR
+function to iterate over large \s-1DBM\s0 files.  Example:
+.Sp
+.Vb 6
+\&    # print out history file offsets
+\&    dbmopen(%HIST,'/usr/lib/news/history',0666);
+\&    while (($key,$val) = each %HIST) {
+\&        print $key, ' = ', unpack('L',$val), "\en";
+\&    }
+\&    dbmclose(%HIST);
+.Ve
+.Sp
+See also AnyDBM_File for a more general description of the pros and
+cons of the various dbm approaches, as well as DB_File for a particularly
+rich implementation.
+.Sp
+You can control which \s-1DBM\s0 library you use by loading that library
+before you call \fIdbmopen()\fR:
+.Sp
+.Vb 3
+\&    use DB_File;
+\&    dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
+\&        or die "Can't open netscape history file: $!";
+.Ve
+.IP "defined \s-1EXPR\s0" 8
+.IX Item "defined EXPR"
+.PD 0
+.IP "defined" 8
+.IX Item "defined"
+.PD
+Returns a Boolean value telling whether \s-1EXPR\s0 has a value other than
+the undefined value \f(CW\*(C`undef\*(C'\fR.  If \s-1EXPR\s0 is not present, \f(CW$_\fR will be
+checked.
+.Sp
+Many operations return \f(CW\*(C`undef\*(C'\fR to indicate failure, end of file,
+system error, uninitialized variable, and other exceptional
+conditions.  This function allows you to distinguish \f(CW\*(C`undef\*(C'\fR from
+other values.  (A simple Boolean test will not distinguish among
+\&\f(CW\*(C`undef\*(C'\fR, zero, the empty string, and \f(CW"0"\fR, which are all equally
+false.)  Note that since \f(CW\*(C`undef\*(C'\fR is a valid scalar, its presence
+doesn't \fInecessarily\fR indicate an exceptional condition: \f(CW\*(C`pop\*(C'\fR
+returns \f(CW\*(C`undef\*(C'\fR when its argument is an empty array, \fIor\fR when the
+element to return happens to be \f(CW\*(C`undef\*(C'\fR.
+.Sp
+You may also use \f(CW\*(C`defined(&func)\*(C'\fR to check whether subroutine \f(CW&func\fR
+has ever been defined.  The return value is unaffected by any forward
+declarations of \f(CW&func\fR.  Note that a subroutine which is not defined
+may still be callable: its package may have an \f(CW\*(C`AUTOLOAD\*(C'\fR method that
+makes it spring into existence the first time that it is called \*(-- see
+perlsub.
+.Sp
+Use of \f(CW\*(C`defined\*(C'\fR on aggregates (hashes and arrays) is deprecated.  It
+used to report whether memory for that aggregate has ever been
+allocated.  This behavior may disappear in future versions of Perl.
+You should instead use a simple test for size:
+.Sp
+.Vb 2
+\&    if (@an_array) { print "has array elements\en" }
+\&    if (%a_hash)   { print "has hash members\en"   }
+.Ve
+.Sp
+When used on a hash element, it tells you whether the value is defined,
+not whether the key exists in the hash.  Use \*(L"exists\*(R" for the latter
+purpose.
+.Sp
+Examples:
+.Sp
+.Vb 6
+\&    print if defined $switch{'D'};
+\&    print "$val\en" while defined($val = pop(@ary));
+\&    die "Can't readlink $sym: $!"
+\&        unless defined($value = readlink $sym);
+\&    sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
+\&    $debugging = 0 unless defined $debugging;
+.Ve
+.Sp
+Note:  Many folks tend to overuse \f(CW\*(C`defined\*(C'\fR, and then are surprised to
+discover that the number \f(CW0\fR and \f(CW""\fR (the zero-length string) are, in fact,
+defined values.  For example, if you say
+.Sp
+.Vb 1
+\&    "ab" =~ /a(.*)b/;
+.Ve
+.Sp
+The pattern match succeeds, and \f(CW$1\fR is defined, despite the fact that it
+matched \*(L"nothing\*(R".  But it didn't really match nothing\*(--rather, it
+matched something that happened to be zero characters long.  This is all
+very above-board and honest.  When a function returns an undefined value,
+it's an admission that it couldn't give you an honest answer.  So you
+should use \f(CW\*(C`defined\*(C'\fR only when you're questioning the integrity of what
+you're trying to do.  At other times, a simple comparison to \f(CW0\fR or \f(CW""\fR is
+what you want.
+.Sp
+See also \*(L"undef\*(R", \*(L"exists\*(R", \*(L"ref\*(R".
+.IP "delete \s-1EXPR\s0" 8
+.IX Item "delete EXPR"
+Given an expression that specifies a hash element, array element, hash slice,
+or array slice, deletes the specified element(s) from the hash or array.
+In the case of an array, if the array elements happen to be at the end,
+the size of the array will shrink to the highest element that tests
+true for \fIexists()\fR (or 0 if no such element exists).
+.Sp
+Returns each element so deleted or the undefined value if there was no such
+element.  Deleting from \f(CW$ENV{}\fR modifies the environment.  Deleting from
+a hash tied to a \s-1DBM\s0 file deletes the entry from the \s-1DBM\s0 file.  Deleting
+from a \f(CW\*(C`tie\*(C'\fRd hash or array may not necessarily return anything.
+.Sp
+Deleting an array element effectively returns that position of the array
+to its initial, uninitialized state.  Subsequently testing for the same
+element with \fIexists()\fR will return false.  Note that deleting array
+elements in the middle of an array will not shift the index of the ones
+after them down\*(--use \fIsplice()\fR for that.  See \*(L"exists\*(R".
+.Sp
+The following (inefficiently) deletes all the values of \f(CW%HASH\fR and \f(CW at ARRAY:\fR
+.Sp
+.Vb 3
+\&    foreach $key (keys %HASH) {
+\&        delete $HASH{$key};
+\&    }
+.Ve
+.Sp
+.Vb 3
+\&    foreach $index (0 .. $#ARRAY) {
+\&        delete $ARRAY[$index];
+\&    }
+.Ve
+.Sp
+And so do these:
+.Sp
+.Vb 1
+\&    delete @HASH{keys %HASH};
+.Ve
+.Sp
+.Vb 1
+\&    delete @ARRAY[0 .. $#ARRAY];
+.Ve
+.Sp
+But both of these are slower than just assigning the empty list
+or undefining \f(CW%HASH\fR or \f(CW at ARRAY:\fR
+.Sp
+.Vb 2
+\&    %HASH = ();         # completely empty %HASH
+\&    undef %HASH;        # forget %HASH ever existed
+.Ve
+.Sp
+.Vb 2
+\&    @ARRAY = ();        # completely empty @ARRAY
+\&    undef @ARRAY;       # forget @ARRAY ever existed
+.Ve
+.Sp
+Note that the \s-1EXPR\s0 can be arbitrarily complicated as long as the final
+operation is a hash element, array element,  hash slice, or array slice
+lookup:
+.Sp
+.Vb 2
+\&    delete $ref->[$x][$y]{$key};
+\&    delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
+.Ve
+.Sp
+.Vb 2
+\&    delete $ref->[$x][$y][$index];
+\&    delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices];
+.Ve
+.IP "die \s-1LIST\s0" 8
+.IX Item "die LIST"
+Outside an \f(CW\*(C`eval\*(C'\fR, prints the value of \s-1LIST\s0 to \f(CW\*(C`STDERR\*(C'\fR and
+exits with the current value of \f(CW$!\fR (errno).  If \f(CW$!\fR is \f(CW0\fR,
+exits with the value of \f(CW\*(C`($? >> 8)\*(C'\fR (backtick `command`
+status).  If \f(CW\*(C`($? >> 8)\*(C'\fR is \f(CW0\fR, exits with \f(CW255\fR.  Inside
+an \f(CW\*(C`eval(),\*(C'\fR the error message is stuffed into \f(CW$@\fR and the
+\&\f(CW\*(C`eval\*(C'\fR is terminated with the undefined value.  This makes
+\&\f(CW\*(C`die\*(C'\fR the way to raise an exception.
+.Sp
+Equivalent examples:
+.Sp
+.Vb 2
+\&    die "Can't cd to spool: $!\en" unless chdir '/usr/spool/news';
+\&    chdir '/usr/spool/news' or die "Can't cd to spool: $!\en"
+.Ve
+.Sp
+If the last element of \s-1LIST\s0 does not end in a newline, the current
+script line number and input line number (if any) are also printed,
+and a newline is supplied.  Note that the \*(L"input line number\*(R" (also
+known as \*(L"chunk\*(R") is subject to whatever notion of \*(L"line\*(R" happens to
+be currently in effect, and is also available as the special variable
+\&\f(CW$.\fR.  See \*(L"$/\*(R" in perlvar and \*(L"$.\*(R" in perlvar.
+.Sp
+Hint: sometimes appending \f(CW", stopped"\fR to your message will cause it
+to make better sense when the string \f(CW"at foo line 123"\fR is appended.
+Suppose you are running script \*(L"canasta\*(R".
+.Sp
+.Vb 2
+\&    die "/etc/games is no good";
+\&    die "/etc/games is no good, stopped";
+.Ve
+.Sp
+produce, respectively
+.Sp
+.Vb 2
+\&    /etc/games is no good at canasta line 123.
+\&    /etc/games is no good, stopped at canasta line 123.
+.Ve
+.Sp
+See also \fIexit()\fR, \fIwarn()\fR, and the Carp module.
+.Sp
+If \s-1LIST\s0 is empty and \f(CW$@\fR already contains a value (typically from a
+previous eval) that value is reused after appending \f(CW"\et...propagated"\fR.
+This is useful for propagating exceptions:
+.Sp
+.Vb 2
+\&    eval { ... };
+\&    die unless $@ =~ /Expected exception/;
+.Ve
+.Sp
+If \s-1LIST\s0 is empty and \f(CW$@\fR contains an object reference that has a
+\&\f(CW\*(C`PROPAGATE\*(C'\fR method, that method will be called with additional file
+and line number parameters.  The return value replaces the value in
+\&\f(CW$@\fR.  ie. as if \f(CW\*(C`$@ = eval { $@\->PROPAGATE(_\|_FILE_\|_, _\|_LINE_\|_) };\*(C'\fR
+were called.
+.Sp
+If \f(CW$@\fR is empty then the string \f(CW"Died"\fR is used.
+.Sp
+\&\fIdie()\fR can also be called with a reference argument.  If this happens to be
+trapped within an \fIeval()\fR, $@ contains the reference.  This behavior permits
+a more elaborate exception handling implementation using objects that
+maintain arbitrary state about the nature of the exception.  Such a scheme
+is sometimes preferable to matching particular string values of $@ using
+regular expressions.  Here's an example:
+.Sp
+.Vb 9
+\&    eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
+\&    if ($@) {
+\&        if (ref($@) && UNIVERSAL::isa($@,"Some::Module::Exception")) {
+\&            # handle Some::Module::Exception
+\&        }
+\&        else {
+\&            # handle all other possible exceptions
+\&        }
+\&    }
+.Ve
+.Sp
+Because perl will stringify uncaught exception messages before displaying
+them, you may want to overload stringification operations on such custom
+exception objects.  See overload for details about that.
+.Sp
+You can arrange for a callback to be run just before the \f(CW\*(C`die\*(C'\fR
+does its deed, by setting the \f(CW$SIG{_\|_DIE_\|_}\fR hook.  The associated
+handler will be called with the error text and can change the error
+message, if it sees fit, by calling \f(CW\*(C`die\*(C'\fR again.  See
+\&\*(L"$SIG{expr}\*(R" in perlvar for details on setting \f(CW%SIG\fR entries, and
+\&\*(L"eval \s-1BLOCK\s0\*(R" for some examples.  Although this feature was meant
+to be run only right before your program was to exit, this is not
+currently the case\*(--the \f(CW$SIG{_\|_DIE_\|_}\fR hook is currently called
+even inside \fIeval()\fRed blocks/strings!  If one wants the hook to do
+nothing in such situations, put
+.Sp
+.Vb 1
+\&        die @_ if $^S;
+.Ve
+.Sp
+as the first line of the handler (see \*(L"$^S\*(R" in perlvar).  Because
+this promotes strange action at a distance, this counterintuitive
+behavior may be fixed in a future release.
+.IP "do \s-1BLOCK\s0" 8
+.IX Item "do BLOCK"
+Not really a function.  Returns the value of the last command in the
+sequence of commands indicated by \s-1BLOCK\s0.  When modified by a loop
+modifier, executes the \s-1BLOCK\s0 once before testing the loop condition.
+(On other statements the loop modifiers test the conditional first.)
+.Sp
+\&\f(CW\*(C`do BLOCK\*(C'\fR does \fInot\fR count as a loop, so the loop control statements
+\&\f(CW\*(C`next\*(C'\fR, \f(CW\*(C`last\*(C'\fR, or \f(CW\*(C`redo\*(C'\fR cannot be used to leave or restart the block.
+See perlsyn for alternative strategies.
+.IP "do \s-1SUBROUTINE\s0(\s-1LIST\s0)" 8
+.IX Item "do SUBROUTINE(LIST)"
+A deprecated form of subroutine call.  See perlsub.
+.IP "do \s-1EXPR\s0" 8
+.IX Item "do EXPR"
+Uses the value of \s-1EXPR\s0 as a filename and executes the contents of the
+file as a Perl script.  Its primary use is to include subroutines
+from a Perl subroutine library.
+.Sp
+.Vb 1
+\&    do 'stat.pl';
+.Ve
+.Sp
+is just like
+.Sp
+.Vb 1
+\&    eval `cat stat.pl`;
+.Ve
+.Sp
+except that it's more efficient and concise, keeps track of the current
+filename for error messages, searches the \f(CW at INC\fR libraries, and updates
+\&\f(CW%INC\fR if the file is found.  See \*(L"Predefined Names\*(R" in perlvar for these
+variables.  It also differs in that code evaluated with \f(CW\*(C`do FILENAME\*(C'\fR
+cannot see lexicals in the enclosing scope; \f(CW\*(C`eval STRING\*(C'\fR does.  It's the
+same, however, in that it does reparse the file every time you call it,
+so you probably don't want to do this inside a loop.
+.Sp
+If \f(CW\*(C`do\*(C'\fR cannot read the file, it returns undef and sets \f(CW$!\fR to the
+error.  If \f(CW\*(C`do\*(C'\fR can read the file but cannot compile it, it
+returns undef and sets an error message in \f(CW$@\fR.   If the file is
+successfully compiled, \f(CW\*(C`do\*(C'\fR returns the value of the last expression
+evaluated.
+.Sp
+Note that inclusion of library modules is better done with the
+\&\f(CW\*(C`use\*(C'\fR and \f(CW\*(C`require\*(C'\fR operators, which also do automatic error checking
+and raise an exception if there's a problem.
+.Sp
+You might like to use \f(CW\*(C`do\*(C'\fR to read in a program configuration
+file.  Manual error checking can be done this way:
+.Sp
+.Vb 10
+\&    # read in config files: system first, then user
+\&    for $file ("/share/prog/defaults.rc",
+\&               "$ENV{HOME}/.someprogrc")
+\&   {
+\&        unless ($return = do $file) {
+\&            warn "couldn't parse $file: $@" if $@;
+\&            warn "couldn't do $file: $!"    unless defined $return;
+\&            warn "couldn't run $file"       unless $return;
+\&        }
+\&    }
+.Ve
+.IP "dump \s-1LABEL\s0" 8
+.IX Item "dump LABEL"
+.PD 0
+.IP "dump" 8
+.IX Item "dump"
+.PD
+This function causes an immediate core dump.  See also the \fB\-u\fR
+command-line switch in perlrun, which does the same thing.
+Primarily this is so that you can use the \fBundump\fR program (not
+supplied) to turn your core dump into an executable binary after
+having initialized all your variables at the beginning of the
+program.  When the new binary is executed it will begin by executing
+a \f(CW\*(C`goto LABEL\*(C'\fR (with all the restrictions that \f(CW\*(C`goto\*(C'\fR suffers).
+Think of it as a goto with an intervening core dump and reincarnation.
+If \f(CW\*(C`LABEL\*(C'\fR is omitted, restarts the program from the top.
+.Sp
+\&\fB\s-1WARNING\s0\fR: Any files opened at the time of the dump will \fInot\fR
+be open any more when the program is reincarnated, with possible
+resulting confusion on the part of Perl.
+.Sp
+This function is now largely obsolete, partly because it's very
+hard to convert a core file into an executable, and because the
+real compiler backends for generating portable bytecode and compilable
+C code have superseded it.  That's why you should now invoke it as
+\&\f(CW\*(C`CORE::dump()\*(C'\fR, if you don't want to be warned against a possible
+typo.
+.Sp
+If you're looking to use dump to speed up your program, consider
+generating bytecode or native C code as described in perlcc.  If
+you're just trying to accelerate a \s-1CGI\s0 script, consider using the
+\&\f(CW\*(C`mod_perl\*(C'\fR extension to \fBApache\fR, or the \s-1CPAN\s0 module, CGI::Fast.
+You might also consider autoloading or selfloading, which at least
+make your program \fIappear\fR to run faster.
+.IP "each \s-1HASH\s0" 8
+.IX Item "each HASH"
+When called in list context, returns a 2\-element list consisting of the
+key and value for the next element of a hash, so that you can iterate over
+it.  When called in scalar context, returns only the key for the next
+element in the hash.
+.Sp
+Entries are returned in an apparently random order.  The actual random
+order is subject to change in future versions of perl, but it is
+guaranteed to be in the same order as either the \f(CW\*(C`keys\*(C'\fR or \f(CW\*(C`values\*(C'\fR
+function would produce on the same (unmodified) hash.  Since Perl
+5.8.1 the ordering is different even between different runs of Perl
+for security reasons (see \*(L"Algorithmic Complexity Attacks\*(R" in perlsec).
+.Sp
+When the hash is entirely read, a null array is returned in list context
+(which when assigned produces a false (\f(CW0\fR) value), and \f(CW\*(C`undef\*(C'\fR in
+scalar context.  The next call to \f(CW\*(C`each\*(C'\fR after that will start iterating
+again.  There is a single iterator for each hash, shared by all \f(CW\*(C`each\*(C'\fR,
+\&\f(CW\*(C`keys\*(C'\fR, and \f(CW\*(C`values\*(C'\fR function calls in the program; it can be reset by
+reading all the elements from the hash, or by evaluating \f(CW\*(C`keys HASH\*(C'\fR or
+\&\f(CW\*(C`values HASH\*(C'\fR.  If you add or delete elements of a hash while you're
+iterating over it, you may get entries skipped or duplicated, so
+don't.  Exception: It is always safe to delete the item most recently
+returned by \f(CW\*(C`each()\*(C'\fR, which means that the following code will work:
+.Sp
+.Vb 4
+\&        while (($key, $value) = each %hash) {
+\&          print $key, "\en";
+\&          delete $hash{$key};   # This is safe
+\&        }
+.Ve
+.Sp
+The following prints out your environment like the \fIprintenv\fR\|(1) program,
+only in a different order:
+.Sp
+.Vb 3
+\&    while (($key,$value) = each %ENV) {
+\&        print "$key=$value\en";
+\&    }
+.Ve
+.Sp
+See also \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`values\*(C'\fR and \f(CW\*(C`sort\*(C'\fR.
+.IP "eof \s-1FILEHANDLE\s0" 8
+.IX Item "eof FILEHANDLE"
+.PD 0
+.IP "eof ()" 8
+.IX Item "eof ()"
+.IP "eof" 8
+.IX Item "eof"
+.PD
+Returns 1 if the next read on \s-1FILEHANDLE\s0 will return end of file, or if
+\&\s-1FILEHANDLE\s0 is not open.  \s-1FILEHANDLE\s0 may be an expression whose value
+gives the real filehandle.  (Note that this function actually
+reads a character and then \f(CW\*(C`ungetc\*(C'\fRs it, so isn't very useful in an
+interactive context.)  Do not read from a terminal file (or call
+\&\f(CW\*(C`eof(FILEHANDLE)\*(C'\fR on it) after end-of-file is reached.  File types such
+as terminals may lose the end-of-file condition if you do.
+.Sp
+An \f(CW\*(C`eof\*(C'\fR without an argument uses the last file read.  Using \f(CW\*(C`eof()\*(C'\fR
+with empty parentheses is very different.  It refers to the pseudo file
+formed from the files listed on the command line and accessed via the
+\&\f(CW\*(C`<>\*(C'\fR operator.  Since \f(CW\*(C`<>\*(C'\fR isn't explicitly opened,
+as a normal filehandle is, an \f(CW\*(C`eof()\*(C'\fR before \f(CW\*(C`<>\*(C'\fR has been
+used will cause \f(CW at ARGV\fR to be examined to determine if input is
+available.   Similarly, an \f(CW\*(C`eof()\*(C'\fR after \f(CW\*(C`<>\*(C'\fR has returned
+end-of-file will assume you are processing another \f(CW at ARGV\fR list,
+and if you haven't set \f(CW at ARGV\fR, will read input from \f(CW\*(C`STDIN\*(C'\fR;
+see \*(L"I/O Operators\*(R" in perlop.
+.Sp
+In a \f(CW\*(C`while (<>)\*(C'\fR loop, \f(CW\*(C`eof\*(C'\fR or \f(CW\*(C`eof(ARGV)\*(C'\fR can be used to
+detect the end of each file, \f(CW\*(C`eof()\*(C'\fR will only detect the end of the
+last file.  Examples:
+.Sp
+.Vb 7
+\&    # reset line numbering on each input file
+\&    while (<>) {
+\&        next if /^\es*#/;        # skip comments
+\&        print "$.\et$_";
+\&    } continue {
+\&        close ARGV  if eof;     # Not eof()!
+\&    }
+.Ve
+.Sp
+.Vb 8
+\&    # insert dashes just before last line of last file
+\&    while (<>) {
+\&        if (eof()) {            # check for end of last file
+\&            print "--------------\en";
+\&        }
+\&        print;
+\&        last if eof();          # needed if we're reading from a terminal
+\&    }
+.Ve
+.Sp
+Practical hint: you almost never need to use \f(CW\*(C`eof\*(C'\fR in Perl, because the
+input operators typically return \f(CW\*(C`undef\*(C'\fR when they run out of data, or if
+there was an error.
+.IP "eval \s-1EXPR\s0" 8
+.IX Item "eval EXPR"
+.PD 0
+.IP "eval \s-1BLOCK\s0" 8
+.IX Item "eval BLOCK"
+.PD
+In the first form, the return value of \s-1EXPR\s0 is parsed and executed as if it
+were a little Perl program.  The value of the expression (which is itself
+determined within scalar context) is first parsed, and if there weren't any
+errors, executed in the lexical context of the current Perl program, so
+that any variable settings or subroutine and format definitions remain
+afterwards.  Note that the value is parsed every time the eval executes.
+If \s-1EXPR\s0 is omitted, evaluates \f(CW$_\fR.  This form is typically used to
+delay parsing and subsequent execution of the text of \s-1EXPR\s0 until run time.
+.Sp
+In the second form, the code within the \s-1BLOCK\s0 is parsed only once\*(--at the
+same time the code surrounding the eval itself was parsed\*(--and executed
+within the context of the current Perl program.  This form is typically
+used to trap exceptions more efficiently than the first (see below), while
+also providing the benefit of checking the code within \s-1BLOCK\s0 at compile
+time.
+.Sp
+The final semicolon, if any, may be omitted from the value of \s-1EXPR\s0 or within
+the \s-1BLOCK\s0.
+.Sp
+In both forms, the value returned is the value of the last expression
+evaluated inside the mini\-program; a return statement may be also used, just
+as with subroutines.  The expression providing the return value is evaluated
+in void, scalar, or list context, depending on the context of the eval itself.
+See \*(L"wantarray\*(R" for more on how the evaluation context can be determined.
+.Sp
+If there is a syntax error or runtime error, or a \f(CW\*(C`die\*(C'\fR statement is
+executed, an undefined value is returned by \f(CW\*(C`eval\*(C'\fR, and \f(CW$@\fR is set to the
+error message.  If there was no error, \f(CW$@\fR is guaranteed to be a null
+string.  Beware that using \f(CW\*(C`eval\*(C'\fR neither silences perl from printing
+warnings to \s-1STDERR\s0, nor does it stuff the text of warning messages into \f(CW$@\fR.
+To do either of those, you have to use the \f(CW$SIG{_\|_WARN_\|_}\fR facility, or
+turn off warnings inside the \s-1BLOCK\s0 or \s-1EXPR\s0 using \f(CW\*(C`no\ warnings\ 'all'\*(C'\fR.
+See \*(L"warn\*(R", perlvar, warnings and perllexwarn.
+.Sp
+Note that, because \f(CW\*(C`eval\*(C'\fR traps otherwise-fatal errors, it is useful for
+determining whether a particular feature (such as \f(CW\*(C`socket\*(C'\fR or \f(CW\*(C`symlink\*(C'\fR)
+is implemented.  It is also Perl's exception trapping mechanism, where
+the die operator is used to raise exceptions.
+.Sp
+If the code to be executed doesn't vary, you may use the eval-BLOCK
+form to trap run-time errors without incurring the penalty of
+recompiling each time.  The error, if any, is still returned in \f(CW$@\fR.
+Examples:
+.Sp
+.Vb 2
+\&    # make divide-by-zero nonfatal
+\&    eval { $answer = $a / $b; }; warn $@ if $@;
+.Ve
+.Sp
+.Vb 2
+\&    # same thing, but less efficient
+\&    eval '$answer = $a / $b'; warn $@ if $@;
+.Ve
+.Sp
+.Vb 2
+\&    # a compile-time error
+\&    eval { $answer = };                 # WRONG
+.Ve
+.Sp
+.Vb 2
+\&    # a run-time error
+\&    eval '$answer =';   # sets $@
+.Ve
+.Sp
+Due to the current arguably broken state of \f(CW\*(C`_\|_DIE_\|_\*(C'\fR hooks, when using
+the \f(CW\*(C`eval{}\*(C'\fR form as an exception trap in libraries, you may wish not
+to trigger any \f(CW\*(C`_\|_DIE_\|_\*(C'\fR hooks that user code may have installed.
+You can use the \f(CW\*(C`local $SIG{_\|_DIE_\|_}\*(C'\fR construct for this purpose,
+as shown in this example:
+.Sp
+.Vb 3
+\&    # a very private exception trap for divide-by-zero
+\&    eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
+\&    warn $@ if $@;
+.Ve
+.Sp
+This is especially significant, given that \f(CW\*(C`_\|_DIE_\|_\*(C'\fR hooks can call
+\&\f(CW\*(C`die\*(C'\fR again, which has the effect of changing their error messages:
+.Sp
+.Vb 7
+\&    # __DIE__ hooks may modify error messages
+\&    {
+\&       local $SIG{'__DIE__'} =
+\&              sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
+\&       eval { die "foo lives here" };
+\&       print $@ if $@;                # prints "bar lives here"
+\&    }
+.Ve
+.Sp
+Because this promotes action at a distance, this counterintuitive behavior
+may be fixed in a future release.
+.Sp
+With an \f(CW\*(C`eval\*(C'\fR, you should be especially careful to remember what's
+being looked at when:
+.Sp
+.Vb 2
+\&    eval $x;            # CASE 1
+\&    eval "$x";          # CASE 2
+.Ve
+.Sp
+.Vb 2
+\&    eval '$x';          # CASE 3
+\&    eval { $x };        # CASE 4
+.Ve
+.Sp
+.Vb 2
+\&    eval "\e$$x++";      # CASE 5
+\&    $$x++;              # CASE 6
+.Ve
+.Sp
+Cases 1 and 2 above behave identically: they run the code contained in
+the variable \f(CW$x\fR.  (Although case 2 has misleading double quotes making
+the reader wonder what else might be happening (nothing is).)  Cases 3
+and 4 likewise behave in the same way: they run the code \f(CW'$x'\fR, which
+does nothing but return the value of \f(CW$x\fR.  (Case 4 is preferred for
+purely visual reasons, but it also has the advantage of compiling at
+compile-time instead of at run\-time.)  Case 5 is a place where
+normally you \fIwould\fR like to use double quotes, except that in this
+particular situation, you can just use symbolic references instead, as
+in case 6.
+.Sp
+\&\f(CW\*(C`eval BLOCK\*(C'\fR does \fInot\fR count as a loop, so the loop control statements
+\&\f(CW\*(C`next\*(C'\fR, \f(CW\*(C`last\*(C'\fR, or \f(CW\*(C`redo\*(C'\fR cannot be used to leave or restart the block.
+.Sp
+Note that as a very special case, an \f(CW\*(C`eval ''\*(C'\fR executed within the \f(CW\*(C`DB\*(C'\fR
+package doesn't see the usual surrounding lexical scope, but rather the
+scope of the first non-DB piece of code that called it. You don't normally
+need to worry about this unless you are writing a Perl debugger.
+.IP "exec \s-1LIST\s0" 8
+.IX Item "exec LIST"
+.PD 0
+.IP "exec \s-1PROGRAM\s0 \s-1LIST\s0" 8
+.IX Item "exec PROGRAM LIST"
+.PD
+The \f(CW\*(C`exec\*(C'\fR function executes a system command \fIand never returns\fR\-\-
+use \f(CW\*(C`system\*(C'\fR instead of \f(CW\*(C`exec\*(C'\fR if you want it to return.  It fails and
+returns false only if the command does not exist \fIand\fR it is executed
+directly instead of via your system's command shell (see below).
+.Sp
+Since it's a common mistake to use \f(CW\*(C`exec\*(C'\fR instead of \f(CW\*(C`system\*(C'\fR, Perl
+warns you if there is a following statement which isn't \f(CW\*(C`die\*(C'\fR, \f(CW\*(C`warn\*(C'\fR,
+or \f(CW\*(C`exit\*(C'\fR (if \f(CW\*(C`\-w\*(C'\fR is set  \-  but you always do that).   If you
+\&\fIreally\fR want to follow an \f(CW\*(C`exec\*(C'\fR with some other statement, you
+can use one of these styles to avoid the warning:
+.Sp
+.Vb 2
+\&    exec ('foo')   or print STDERR "couldn't exec foo: $!";
+\&    { exec ('foo') }; print STDERR "couldn't exec foo: $!";
+.Ve
+.Sp
+If there is more than one argument in \s-1LIST\s0, or if \s-1LIST\s0 is an array
+with more than one value, calls \fIexecvp\fR\|(3) with the arguments in \s-1LIST\s0.
+If there is only one scalar argument or an array with one element in it,
+the argument is checked for shell metacharacters, and if there are any,
+the entire argument is passed to the system's command shell for parsing
+(this is \f(CW\*(C`/bin/sh \-c\*(C'\fR on Unix platforms, but varies on other platforms).
+If there are no shell metacharacters in the argument, it is split into
+words and passed directly to \f(CW\*(C`execvp\*(C'\fR, which is more efficient.
+Examples:
+.Sp
+.Vb 2
+\&    exec '/bin/echo', 'Your arguments are: ', @ARGV;
+\&    exec "sort $outfile | uniq";
+.Ve
+.Sp
+If you don't really want to execute the first argument, but want to lie
+to the program you are executing about its own name, you can specify
+the program you actually want to run as an \*(L"indirect object\*(R" (without a
+comma) in front of the \s-1LIST\s0.  (This always forces interpretation of the
+\&\s-1LIST\s0 as a multivalued list, even if there is only a single scalar in
+the list.)  Example:
+.Sp
+.Vb 2
+\&    $shell = '/bin/csh';
+\&    exec $shell '-sh';          # pretend it's a login shell
+.Ve
+.Sp
+or, more directly,
+.Sp
+.Vb 1
+\&    exec {'/bin/csh'} '-sh';    # pretend it's a login shell
+.Ve
+.Sp
+When the arguments get executed via the system shell, results will
+be subject to its quirks and capabilities.  See \*(L"`STRING`\*(R" in perlop
+for details.
+.Sp
+Using an indirect object with \f(CW\*(C`exec\*(C'\fR or \f(CW\*(C`system\*(C'\fR is also more
+secure.  This usage (which also works fine with \fIsystem()\fR) forces
+interpretation of the arguments as a multivalued list, even if the
+list had just one argument.  That way you're safe from the shell
+expanding wildcards or splitting up words with whitespace in them.
+.Sp
+.Vb 1
+\&    @args = ( "echo surprise" );
+.Ve
+.Sp
+.Vb 3
+\&    exec @args;               # subject to shell escapes
+\&                                # if @args == 1
+\&    exec { $args[0] } @args;  # safe even with one-arg list
+.Ve
+.Sp
+The first version, the one without the indirect object, ran the \fIecho\fR
+program, passing it \f(CW"surprise"\fR an argument.  The second version
+didn't\*(--it tried to run a program literally called \fI\*(L"echo surprise\*(R"\fR,
+didn't find it, and set \f(CW$?\fR to a non-zero value indicating failure.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before the exec, but this may not be supported on some platforms
+(see perlport).  To be safe, you may need to set \f(CW$|\fR ($AUTOFLUSH
+in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method of \f(CW\*(C`IO::Handle\*(C'\fR on any
+open handles in order to avoid lost output.
+.Sp
+Note that \f(CW\*(C`exec\*(C'\fR will not call your \f(CW\*(C`END\*(C'\fR blocks, nor will it call
+any \f(CW\*(C`DESTROY\*(C'\fR methods in your objects.
+.IP "exists \s-1EXPR\s0" 8
+.IX Item "exists EXPR"
+Given an expression that specifies a hash element or array element,
+returns true if the specified element in the hash or array has ever
+been initialized, even if the corresponding value is undefined.  The
+element is not autovivified if it doesn't exist.
+.Sp
+.Vb 3
+\&    print "Exists\en"    if exists $hash{$key};
+\&    print "Defined\en"   if defined $hash{$key};
+\&    print "True\en"      if $hash{$key};
+.Ve
+.Sp
+.Vb 3
+\&    print "Exists\en"    if exists $array[$index];
+\&    print "Defined\en"   if defined $array[$index];
+\&    print "True\en"      if $array[$index];
+.Ve
+.Sp
+A hash or array element can be true only if it's defined, and defined if
+it exists, but the reverse doesn't necessarily hold true.
+.Sp
+Given an expression that specifies the name of a subroutine,
+returns true if the specified subroutine has ever been declared, even
+if it is undefined.  Mentioning a subroutine name for exists or defined
+does not count as declaring it.  Note that a subroutine which does not
+exist may still be callable: its package may have an \f(CW\*(C`AUTOLOAD\*(C'\fR
+method that makes it spring into existence the first time that it is
+called \*(-- see perlsub.
+.Sp
+.Vb 2
+\&    print "Exists\en"    if exists &subroutine;
+\&    print "Defined\en"   if defined &subroutine;
+.Ve
+.Sp
+Note that the \s-1EXPR\s0 can be arbitrarily complicated as long as the final
+operation is a hash or array key lookup or subroutine name:
+.Sp
+.Vb 2
+\&    if (exists $ref->{A}->{B}->{$key})  { }
+\&    if (exists $hash{A}{B}{$key})       { }
+.Ve
+.Sp
+.Vb 2
+\&    if (exists $ref->{A}->{B}->[$ix])   { }
+\&    if (exists $hash{A}{B}[$ix])        { }
+.Ve
+.Sp
+.Vb 1
+\&    if (exists &{$ref->{A}{B}{$key}})   { }
+.Ve
+.Sp
+Although the deepest nested array or hash will not spring into existence
+just because its existence was tested, any intervening ones will.
+Thus \f(CW\*(C`$ref\->{"A"}\*(C'\fR and \f(CW\*(C`$ref\->{"A"}\->{"B"}\*(C'\fR will spring
+into existence due to the existence test for the \f(CW$key\fR element above.
+This happens anywhere the arrow operator is used, including even:
+.Sp
+.Vb 3
+\&    undef $ref;
+\&    if (exists $ref->{"Some key"})      { }
+\&    print $ref;             # prints HASH(0x80d3d5c)
+.Ve
+.Sp
+This surprising autovivification in what does not at first\*(--or even
+second\*(--glance appear to be an lvalue context may be fixed in a future
+release.
+.Sp
+See \*(L"Pseudo\-hashes: Using an array as a hash\*(R" in perlref for specifics
+on how \fIexists()\fR acts when used on a pseudo\-hash.
+.Sp
+Use of a subroutine call, rather than a subroutine name, as an argument
+to \fIexists()\fR is an error.
+.Sp
+.Vb 2
+\&    exists ⊂        # OK
+\&    exists &sub();      # Error
+.Ve
+.IP "exit \s-1EXPR\s0" 8
+.IX Item "exit EXPR"
+Evaluates \s-1EXPR\s0 and exits immediately with that value.    Example:
+.Sp
+.Vb 2
+\&    $ans = <STDIN>;
+\&    exit 0 if $ans =~ /^[Xx]/;
+.Ve
+.Sp
+See also \f(CW\*(C`die\*(C'\fR.  If \s-1EXPR\s0 is omitted, exits with \f(CW0\fR status.  The only
+universally recognized values for \s-1EXPR\s0 are \f(CW0\fR for success and \f(CW1\fR
+for error; other values are subject to interpretation depending on the
+environment in which the Perl program is running.  For example, exiting
+69 (\s-1EX_UNAVAILABLE\s0) from a \fIsendmail\fR incoming-mail filter will cause
+the mailer to return the item undelivered, but that's not true everywhere.
+.Sp
+Don't use \f(CW\*(C`exit\*(C'\fR to abort a subroutine if there's any chance that
+someone might want to trap whatever error happened.  Use \f(CW\*(C`die\*(C'\fR instead,
+which can be trapped by an \f(CW\*(C`eval\*(C'\fR.
+.Sp
+The \fIexit()\fR function does not always exit immediately.  It calls any
+defined \f(CW\*(C`END\*(C'\fR routines first, but these \f(CW\*(C`END\*(C'\fR routines may not
+themselves abort the exit.  Likewise any object destructors that need to
+be called are called before the real exit.  If this is a problem, you
+can call \f(CW\*(C`POSIX:_exit($status)\*(C'\fR to avoid \s-1END\s0 and destructor processing.
+See perlmod for details.
+.IP "exp \s-1EXPR\s0" 8
+.IX Item "exp EXPR"
+.PD 0
+.IP "exp" 8
+.IX Item "exp"
+.PD
+Returns \fIe\fR (the natural logarithm base) to the power of \s-1EXPR\s0.
+If \s-1EXPR\s0 is omitted, gives \f(CW\*(C`exp($_)\*(C'\fR.
+.IP "fcntl \s-1FILEHANDLE\s0,FUNCTION,SCALAR" 8
+.IX Item "fcntl FILEHANDLE,FUNCTION,SCALAR"
+Implements the \fIfcntl\fR\|(2) function.  You'll probably have to say
+.Sp
+.Vb 1
+\&    use Fcntl;
+.Ve
+.Sp
+first to get the correct constant definitions.  Argument processing and
+value return works just like \f(CW\*(C`ioctl\*(C'\fR below.
+For example:
+.Sp
+.Vb 3
+\&    use Fcntl;
+\&    fcntl($filehandle, F_GETFL, $packed_return_buffer)
+\&        or die "can't fcntl F_GETFL: $!";
+.Ve
+.Sp
+You don't have to check for \f(CW\*(C`defined\*(C'\fR on the return from \f(CW\*(C`fcntl\*(C'\fR.
+Like \f(CW\*(C`ioctl\*(C'\fR, it maps a \f(CW0\fR return from the system call into
+\&\f(CW"0 but true"\fR in Perl.  This string is true in boolean context and \f(CW0\fR
+in numeric context.  It is also exempt from the normal \fB\-w\fR warnings
+on improper numeric conversions.
+.Sp
+Note that \f(CW\*(C`fcntl\*(C'\fR will produce a fatal error if used on a machine that
+doesn't implement \fIfcntl\fR\|(2).  See the Fcntl module or your \fIfcntl\fR\|(2)
+manpage to learn what functions are available on your system.
+.IP "fileno \s-1FILEHANDLE\s0" 8
+.IX Item "fileno FILEHANDLE"
+Returns the file descriptor for a filehandle, or undefined if the
+filehandle is not open.  This is mainly useful for constructing
+bitmaps for \f(CW\*(C`select\*(C'\fR and low-level \s-1POSIX\s0 tty-handling operations.
+If \s-1FILEHANDLE\s0 is an expression, the value is taken as an indirect
+filehandle, generally its name.
+.Sp
+You can use this to find out whether two handles refer to the
+same underlying descriptor:
+.Sp
+.Vb 3
+\&    if (fileno(THIS) == fileno(THAT)) {
+\&        print "THIS and THAT are dups\en";
+\&    }
+.Ve
+.Sp
+(Filehandles connected to memory objects via new features of \f(CW\*(C`open\*(C'\fR may
+return undefined even though they are open.)
+.IP "flock \s-1FILEHANDLE\s0,OPERATION" 8
+.IX Item "flock FILEHANDLE,OPERATION"
+Calls \fIflock\fR\|(2), or an emulation of it, on \s-1FILEHANDLE\s0.  Returns true
+for success, false on failure.  Produces a fatal error if used on a
+machine that doesn't implement \fIflock\fR\|(2), \fIfcntl\fR\|(2) locking, or \fIlockf\fR\|(3).
+\&\f(CW\*(C`flock\*(C'\fR is Perl's portable file locking interface, although it locks
+only entire files, not records.
+.Sp
+Two potentially non-obvious but traditional \f(CW\*(C`flock\*(C'\fR semantics are
+that it waits indefinitely until the lock is granted, and that its locks
+\&\fBmerely advisory\fR.  Such discretionary locks are more flexible, but offer
+fewer guarantees.  This means that files locked with \f(CW\*(C`flock\*(C'\fR may be
+modified by programs that do not also use \f(CW\*(C`flock\*(C'\fR.  See perlport,
+your port's specific documentation, or your system-specific local manpages
+for details.  It's best to assume traditional behavior if you're writing
+portable programs.  (But if you're not, you should as always feel perfectly
+free to write for your own system's idiosyncrasies (sometimes called
+\&\*(L"features\*(R").  Slavish adherence to portability concerns shouldn't get
+in the way of your getting your job done.)
+.Sp
+\&\s-1OPERATION\s0 is one of \s-1LOCK_SH\s0, \s-1LOCK_EX\s0, or \s-1LOCK_UN\s0, possibly combined with
+\&\s-1LOCK_NB\s0.  These constants are traditionally valued 1, 2, 8 and 4, but
+you can use the symbolic names if you import them from the Fcntl module,
+either individually, or as a group using the ':flock' tag.  \s-1LOCK_SH\s0
+requests a shared lock, \s-1LOCK_EX\s0 requests an exclusive lock, and \s-1LOCK_UN\s0
+releases a previously requested lock.  If \s-1LOCK_NB\s0 is bitwise\-or'ed with
+\&\s-1LOCK_SH\s0 or \s-1LOCK_EX\s0 then \f(CW\*(C`flock\*(C'\fR will return immediately rather than blocking
+waiting for the lock (check the return status to see if you got it).
+.Sp
+To avoid the possibility of miscoordination, Perl now flushes \s-1FILEHANDLE\s0
+before locking or unlocking it.
+.Sp
+Note that the emulation built with \fIlockf\fR\|(3) doesn't provide shared
+locks, and it requires that \s-1FILEHANDLE\s0 be open with write intent.  These
+are the semantics that \fIlockf\fR\|(3) implements.  Most if not all systems
+implement \fIlockf\fR\|(3) in terms of \fIfcntl\fR\|(2) locking, though, so the
+differing semantics shouldn't bite too many people.
+.Sp
+Note that the \fIfcntl\fR\|(2) emulation of \fIflock\fR\|(3) requires that \s-1FILEHANDLE\s0
+be open with read intent to use \s-1LOCK_SH\s0 and requires that it be open
+with write intent to use \s-1LOCK_EX\s0.
+.Sp
+Note also that some versions of \f(CW\*(C`flock\*(C'\fR cannot lock things over the
+network; you would need to use the more system-specific \f(CW\*(C`fcntl\*(C'\fR for
+that.  If you like you can force Perl to ignore your system's \fIflock\fR\|(2)
+function, and so provide its own \fIfcntl\fR\|(2)\-based emulation, by passing
+the switch \f(CW\*(C`\-Ud_flock\*(C'\fR to the \fIConfigure\fR program when you configure
+perl.
+.Sp
+Here's a mailbox appender for \s-1BSD\s0 systems.
+.Sp
+.Vb 1
+\&    use Fcntl ':flock'; # import LOCK_* constants
+.Ve
+.Sp
+.Vb 6
+\&    sub lock {
+\&        flock(MBOX,LOCK_EX);
+\&        # and, in case someone appended
+\&        # while we were waiting...
+\&        seek(MBOX, 0, 2);
+\&    }
+.Ve
+.Sp
+.Vb 3
+\&    sub unlock {
+\&        flock(MBOX,LOCK_UN);
+\&    }
+.Ve
+.Sp
+.Vb 2
+\&    open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
+\&            or die "Can't open mailbox: $!";
+.Ve
+.Sp
+.Vb 3
+\&    lock();
+\&    print MBOX $msg,"\en\en";
+\&    unlock();
+.Ve
+.Sp
+On systems that support a real \fIflock()\fR, locks are inherited across \fIfork()\fR
+calls, whereas those that must resort to the more capricious \fIfcntl()\fR
+function lose the locks, making it harder to write servers.
+.Sp
+See also DB_File for other \fIflock()\fR examples.
+.IP "fork" 8
+.IX Item "fork"
+Does a \fIfork\fR\|(2) system call to create a new process running the
+same program at the same point.  It returns the child pid to the
+parent process, \f(CW0\fR to the child process, or \f(CW\*(C`undef\*(C'\fR if the fork is
+unsuccessful.  File descriptors (and sometimes locks on those descriptors)
+are shared, while everything else is copied.  On most systems supporting
+\&\fIfork()\fR, great care has gone into making it extremely efficient (for
+example, using copy-on-write technology on data pages), making it the
+dominant paradigm for multitasking over the last few decades.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before forking the child process, but this may not be supported
+on some platforms (see perlport).  To be safe, you may need to set
+\&\f(CW$|\fR ($AUTOFLUSH in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method of
+\&\f(CW\*(C`IO::Handle\*(C'\fR on any open handles in order to avoid duplicate output.
+.Sp
+If you \f(CW\*(C`fork\*(C'\fR without ever waiting on your children, you will
+accumulate zombies.  On some systems, you can avoid this by setting
+\&\f(CW$SIG{CHLD}\fR to \f(CW"IGNORE"\fR.  See also perlipc for more examples of
+forking and reaping moribund children.
+.Sp
+Note that if your forked child inherits system file descriptors like
+\&\s-1STDIN\s0 and \s-1STDOUT\s0 that are actually connected by a pipe or socket, even
+if you exit, then the remote server (such as, say, a \s-1CGI\s0 script or a
+backgrounded job launched from a remote shell) won't think you're done.
+You should reopen those to \fI/dev/null\fR if it's any issue.
+.IP "format" 8
+.IX Item "format"
+Declare a picture format for use by the \f(CW\*(C`write\*(C'\fR function.  For
+example:
+.Sp
+.Vb 4
+\&    format Something =
+\&        Test: @<<<<<<<< @||||| @>>>>>
+\&              $str,     $%,    '$' . int($num)
+\&    .
+.Ve
+.Sp
+.Vb 4
+\&    $str = "widget";
+\&    $num = $cost/$quantity;
+\&    $~ = 'Something';
+\&    write;
+.Ve
+.Sp
+See perlform for many details and examples.
+.IP "formline \s-1PICTURE\s0,LIST" 8
+.IX Item "formline PICTURE,LIST"
+This is an internal function used by \f(CW\*(C`format\*(C'\fRs, though you may call it,
+too.  It formats (see perlform) a list of values according to the
+contents of \s-1PICTURE\s0, placing the output into the format output
+accumulator, \f(CW$^A\fR (or \f(CW$ACCUMULATOR\fR in English).
+Eventually, when a \f(CW\*(C`write\*(C'\fR is done, the contents of
+\&\f(CW$^A\fR are written to some filehandle, but you could also read \f(CW$^A\fR
+yourself and then set \f(CW$^A\fR back to \f(CW""\fR.  Note that a format typically
+does one \f(CW\*(C`formline\*(C'\fR per line of form, but the \f(CW\*(C`formline\*(C'\fR function itself
+doesn't care how many newlines are embedded in the \s-1PICTURE\s0.  This means
+that the \f(CW\*(C`~\*(C'\fR and \f(CW\*(C`~~\*(C'\fR tokens will treat the entire \s-1PICTURE\s0 as a single line.
+You may therefore need to use multiple formlines to implement a single
+record format, just like the format compiler.
+.Sp
+Be careful if you put double quotes around the picture, because an \f(CW\*(C`@\*(C'\fR
+character may be taken to mean the beginning of an array name.
+\&\f(CW\*(C`formline\*(C'\fR always returns true.  See perlform for other examples.
+.IP "getc \s-1FILEHANDLE\s0" 8
+.IX Item "getc FILEHANDLE"
+.PD 0
+.IP "getc" 8
+.IX Item "getc"
+.PD
+Returns the next character from the input file attached to \s-1FILEHANDLE\s0,
+or the undefined value at end of file, or if there was an error (in
+the latter case \f(CW$!\fR is set).  If \s-1FILEHANDLE\s0 is omitted, reads from
+\&\s-1STDIN\s0.  This is not particularly efficient.  However, it cannot be
+used by itself to fetch single characters without waiting for the user
+to hit enter.  For that, try something more like:
+.Sp
+.Vb 6
+\&    if ($BSD_STYLE) {
+\&        system "stty cbreak </dev/tty >/dev/tty 2>&1";
+\&    }
+\&    else {
+\&        system "stty", '-icanon', 'eol', "\e001";
+\&    }
+.Ve
+.Sp
+.Vb 1
+\&    $key = getc(STDIN);
+.Ve
+.Sp
+.Vb 7
+\&    if ($BSD_STYLE) {
+\&        system "stty -cbreak </dev/tty >/dev/tty 2>&1";
+\&    }
+\&    else {
+\&        system "stty", 'icanon', 'eol', '^@'; # ASCII null
+\&    }
+\&    print "\en";
+.Ve
+.Sp
+Determination of whether \f(CW$BSD_STYLE\fR should be set
+is left as an exercise to the reader.
+.Sp
+The \f(CW\*(C`POSIX::getattr\*(C'\fR function can do this more portably on
+systems purporting \s-1POSIX\s0 compliance.  See also the \f(CW\*(C`Term::ReadKey\*(C'\fR
+module from your nearest \s-1CPAN\s0 site; details on \s-1CPAN\s0 can be found on
+\&\*(L"\s-1CPAN\s0\*(R" in perlmodlib.
+.IP "getlogin" 8
+.IX Item "getlogin"
+Implements the C library function of the same name, which on most
+systems returns the current login from \fI/etc/utmp\fR, if any.  If null,
+use \f(CW\*(C`getpwuid\*(C'\fR.
+.Sp
+.Vb 1
+\&    $login = getlogin || getpwuid($<) || "Kilroy";
+.Ve
+.Sp
+Do not consider \f(CW\*(C`getlogin\*(C'\fR for authentication: it is not as
+secure as \f(CW\*(C`getpwuid\*(C'\fR.
+.IP "getpeername \s-1SOCKET\s0" 8
+.IX Item "getpeername SOCKET"
+Returns the packed sockaddr address of other end of the \s-1SOCKET\s0 connection.
+.Sp
+.Vb 5
+\&    use Socket;
+\&    $hersockaddr    = getpeername(SOCK);
+\&    ($port, $iaddr) = sockaddr_in($hersockaddr);
+\&    $herhostname    = gethostbyaddr($iaddr, AF_INET);
+\&    $herstraddr     = inet_ntoa($iaddr);
+.Ve
+.IP "getpgrp \s-1PID\s0" 8
+.IX Item "getpgrp PID"
+Returns the current process group for the specified \s-1PID\s0.  Use
+a \s-1PID\s0 of \f(CW0\fR to get the current process group for the
+current process.  Will raise an exception if used on a machine that
+doesn't implement \fIgetpgrp\fR\|(2).  If \s-1PID\s0 is omitted, returns process
+group of current process.  Note that the \s-1POSIX\s0 version of \f(CW\*(C`getpgrp\*(C'\fR
+does not accept a \s-1PID\s0 argument, so only \f(CW\*(C`PID==0\*(C'\fR is truly portable.
+.IP "getppid" 8
+.IX Item "getppid"
+Returns the process id of the parent process.
+.Sp
+Note for Linux users: on Linux, the C functions \f(CW\*(C`getpid()\*(C'\fR and
+\&\f(CW\*(C`getppid()\*(C'\fR return different values from different threads. In order to
+be portable, this behavior is not reflected by the perl-level function
+\&\f(CW\*(C`getppid()\*(C'\fR, that returns a consistent value across threads. If you want
+to call the underlying \f(CW\*(C`getppid()\*(C'\fR, you may use the \s-1CPAN\s0 module
+\&\f(CW\*(C`Linux::Pid\*(C'\fR.
+.IP "getpriority \s-1WHICH\s0,WHO" 8
+.IX Item "getpriority WHICH,WHO"
+Returns the current priority for a process, a process group, or a user.
+(See \fIgetpriority\fR\|(2).)  Will raise a fatal exception if used on a
+machine that doesn't implement \fIgetpriority\fR\|(2).
+.IP "getpwnam \s-1NAME\s0" 8
+.IX Item "getpwnam NAME"
+.PD 0
+.IP "getgrnam \s-1NAME\s0" 8
+.IX Item "getgrnam NAME"
+.IP "gethostbyname \s-1NAME\s0" 8
+.IX Item "gethostbyname NAME"
+.IP "getnetbyname \s-1NAME\s0" 8
+.IX Item "getnetbyname NAME"
+.IP "getprotobyname \s-1NAME\s0" 8
+.IX Item "getprotobyname NAME"
+.IP "getpwuid \s-1UID\s0" 8
+.IX Item "getpwuid UID"
+.IP "getgrgid \s-1GID\s0" 8
+.IX Item "getgrgid GID"
+.IP "getservbyname \s-1NAME\s0,PROTO" 8
+.IX Item "getservbyname NAME,PROTO"
+.IP "gethostbyaddr \s-1ADDR\s0,ADDRTYPE" 8
+.IX Item "gethostbyaddr ADDR,ADDRTYPE"
+.IP "getnetbyaddr \s-1ADDR\s0,ADDRTYPE" 8
+.IX Item "getnetbyaddr ADDR,ADDRTYPE"
+.IP "getprotobynumber \s-1NUMBER\s0" 8
+.IX Item "getprotobynumber NUMBER"
+.IP "getservbyport \s-1PORT\s0,PROTO" 8
+.IX Item "getservbyport PORT,PROTO"
+.IP "getpwent" 8
+.IX Item "getpwent"
+.IP "getgrent" 8
+.IX Item "getgrent"
+.IP "gethostent" 8
+.IX Item "gethostent"
+.IP "getnetent" 8
+.IX Item "getnetent"
+.IP "getprotoent" 8
+.IX Item "getprotoent"
+.IP "getservent" 8
+.IX Item "getservent"
+.IP "setpwent" 8
+.IX Item "setpwent"
+.IP "setgrent" 8
+.IX Item "setgrent"
+.IP "sethostent \s-1STAYOPEN\s0" 8
+.IX Item "sethostent STAYOPEN"
+.IP "setnetent \s-1STAYOPEN\s0" 8
+.IX Item "setnetent STAYOPEN"
+.IP "setprotoent \s-1STAYOPEN\s0" 8
+.IX Item "setprotoent STAYOPEN"
+.IP "setservent \s-1STAYOPEN\s0" 8
+.IX Item "setservent STAYOPEN"
+.IP "endpwent" 8
+.IX Item "endpwent"
+.IP "endgrent" 8
+.IX Item "endgrent"
+.IP "endhostent" 8
+.IX Item "endhostent"
+.IP "endnetent" 8
+.IX Item "endnetent"
+.IP "endprotoent" 8
+.IX Item "endprotoent"
+.IP "endservent" 8
+.IX Item "endservent"
+.PD
+These routines perform the same functions as their counterparts in the
+system library.  In list context, the return values from the
+various get routines are as follows:
+.Sp
+.Vb 7
+\&    ($name,$passwd,$uid,$gid,
+\&       $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
+\&    ($name,$passwd,$gid,$members) = getgr*
+\&    ($name,$aliases,$addrtype,$length, at addrs) = gethost*
+\&    ($name,$aliases,$addrtype,$net) = getnet*
+\&    ($name,$aliases,$proto) = getproto*
+\&    ($name,$aliases,$port,$proto) = getserv*
+.Ve
+.Sp
+(If the entry doesn't exist you get a null list.)
+.Sp
+The exact meaning of the \f(CW$gcos\fR field varies but it usually contains
+the real name of the user (as opposed to the login name) and other
+information pertaining to the user.  Beware, however, that in many
+system users are able to change this information and therefore it
+cannot be trusted and therefore the \f(CW$gcos\fR is tainted (see
+perlsec).  The \f(CW$passwd\fR and \f(CW$shell\fR, user's encrypted password and
+login shell, are also tainted, because of the same reason.
+.Sp
+In scalar context, you get the name, unless the function was a
+lookup by name, in which case you get the other thing, whatever it is.
+(If the entry doesn't exist you get the undefined value.)  For example:
+.Sp
+.Vb 7
+\&    $uid   = getpwnam($name);
+\&    $name  = getpwuid($num);
+\&    $name  = getpwent();
+\&    $gid   = getgrnam($name);
+\&    $name  = getgrgid($num);
+\&    $name  = getgrent();
+\&    #etc.
+.Ve
+.Sp
+In \fIgetpw*()\fR the fields \f(CW$quota\fR, \f(CW$comment\fR, and \f(CW$expire\fR are special
+cases in the sense that in many systems they are unsupported.  If the
+\&\f(CW$quota\fR is unsupported, it is an empty scalar.  If it is supported, it
+usually encodes the disk quota.  If the \f(CW$comment\fR field is unsupported,
+it is an empty scalar.  If it is supported it usually encodes some
+administrative comment about the user.  In some systems the \f(CW$quota\fR
+field may be \f(CW$change\fR or \f(CW$age\fR, fields that have to do with password
+aging.  In some systems the \f(CW$comment\fR field may be \f(CW$class\fR.  The \f(CW$expire\fR
+field, if present, encodes the expiration period of the account or the
+password.  For the availability and the exact meaning of these fields
+in your system, please consult your \fIgetpwnam\fR\|(3) documentation and your
+\&\fIpwd.h\fR file.  You can also find out from within Perl what your
+\&\f(CW$quota\fR and \f(CW$comment\fR fields mean and whether you have the \f(CW$expire\fR field
+by using the \f(CW\*(C`Config\*(C'\fR module and the values \f(CW\*(C`d_pwquota\*(C'\fR, \f(CW\*(C`d_pwage\*(C'\fR,
+\&\f(CW\*(C`d_pwchange\*(C'\fR, \f(CW\*(C`d_pwcomment\*(C'\fR, and \f(CW\*(C`d_pwexpire\*(C'\fR.  Shadow password
+files are only supported if your vendor has implemented them in the
+intuitive fashion that calling the regular C library routines gets the
+shadow versions if you're running under privilege or if there exists
+the \fIshadow\fR\|(3) functions as found in System V ( this includes Solaris
+and Linux.)  Those systems which implement a proprietary shadow password
+facility are unlikely to be supported.
+.Sp
+The \f(CW$members\fR value returned by \fIgetgr*()\fR is a space separated list of
+the login names of the members of the group.
+.Sp
+For the \fIgethost*()\fR functions, if the \f(CW\*(C`h_errno\*(C'\fR variable is supported in
+C, it will be returned to you via \f(CW$?\fR if the function call fails.  The
+\&\f(CW at addrs\fR value returned by a successful call is a list of the raw
+addresses returned by the corresponding system library call.  In the
+Internet domain, each address is four bytes long and you can unpack it
+by saying something like:
+.Sp
+.Vb 1
+\&    ($a,$b,$c,$d) = unpack('C4',$addr[0]);
+.Ve
+.Sp
+The Socket library makes this slightly easier:
+.Sp
+.Vb 3
+\&    use Socket;
+\&    $iaddr = inet_aton("127.1"); # or whatever address
+\&    $name  = gethostbyaddr($iaddr, AF_INET);
+.Ve
+.Sp
+.Vb 2
+\&    # or going the other way
+\&    $straddr = inet_ntoa($iaddr);
+.Ve
+.Sp
+If you get tired of remembering which element of the return list
+contains which return value, by-name interfaces are provided
+in standard modules: \f(CW\*(C`File::stat\*(C'\fR, \f(CW\*(C`Net::hostent\*(C'\fR, \f(CW\*(C`Net::netent\*(C'\fR,
+\&\f(CW\*(C`Net::protoent\*(C'\fR, \f(CW\*(C`Net::servent\*(C'\fR, \f(CW\*(C`Time::gmtime\*(C'\fR, \f(CW\*(C`Time::localtime\*(C'\fR,
+and \f(CW\*(C`User::grent\*(C'\fR.  These override the normal built\-ins, supplying
+versions that return objects with the appropriate names
+for each field.  For example:
+.Sp
+.Vb 3
+\&   use File::stat;
+\&   use User::pwent;
+\&   $is_his = (stat($filename)->uid == pwent($whoever)->uid);
+.Ve
+.Sp
+Even though it looks like they're the same method calls (uid),
+they aren't, because a \f(CW\*(C`File::stat\*(C'\fR object is different from
+a \f(CW\*(C`User::pwent\*(C'\fR object.
+.IP "getsockname \s-1SOCKET\s0" 8
+.IX Item "getsockname SOCKET"
+Returns the packed sockaddr address of this end of the \s-1SOCKET\s0 connection,
+in case you don't know the address because you have several different
+IPs that the connection might have come in on.
+.Sp
+.Vb 6
+\&    use Socket;
+\&    $mysockaddr = getsockname(SOCK);
+\&    ($port, $myaddr) = sockaddr_in($mysockaddr);
+\&    printf "Connect to %s [%s]\en",
+\&       scalar gethostbyaddr($myaddr, AF_INET),
+\&       inet_ntoa($myaddr);
+.Ve
+.IP "getsockopt \s-1SOCKET\s0,LEVEL,OPTNAME" 8
+.IX Item "getsockopt SOCKET,LEVEL,OPTNAME"
+Returns the socket option requested, or undef if there is an error.
+.IP "glob \s-1EXPR\s0" 8
+.IX Item "glob EXPR"
+.PD 0
+.IP "glob" 8
+.IX Item "glob"
+.PD
+In list context, returns a (possibly empty) list of filename expansions on
+the value of \s-1EXPR\s0 such as the standard Unix shell \fI/bin/csh\fR would do. In
+scalar context, glob iterates through such filename expansions, returning
+undef when the list is exhausted. This is the internal function
+implementing the \f(CW\*(C`<*.c>\*(C'\fR operator, but you can use it directly. If
+\&\s-1EXPR\s0 is omitted, \f(CW$_\fR is used.  The \f(CW\*(C`<*.c>\*(C'\fR operator is discussed in
+more detail in \*(L"I/O Operators\*(R" in perlop.
+.Sp
+Beginning with v5.6.0, this operator is implemented using the standard
+\&\f(CW\*(C`File::Glob\*(C'\fR extension.  See File::Glob for details.
+.IP "gmtime \s-1EXPR\s0" 8
+.IX Item "gmtime EXPR"
+Converts a time as returned by the time function to an 8\-element list
+with the time localized for the standard Greenwich time zone.
+Typically used as follows:
+.Sp
+.Vb 3
+\&    #  0    1    2     3     4    5     6     7
+\&    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) =
+\&                                            gmtime(time);
+.Ve
+.Sp
+All list elements are numeric, and come straight out of the C `struct
+tm'.  \f(CW$sec\fR, \f(CW$min\fR, and \f(CW$hour\fR are the seconds, minutes, and hours of the
+specified time.  \f(CW$mday\fR is the day of the month, and \f(CW$mon\fR is the month
+itself, in the range \f(CW0..11\fR with 0 indicating January and 11
+indicating December.  \f(CW$year\fR is the number of years since 1900.  That
+is, \f(CW$year\fR is \f(CW123\fR in year 2023.  \f(CW$wday\fR is the day of the week, with
+0 indicating Sunday and 3 indicating Wednesday.  \f(CW$yday\fR is the day of
+the year, in the range \f(CW0..364\fR (or \f(CW0..365\fR in leap years.)
+.Sp
+Note that the \f(CW$year\fR element is \fInot\fR simply the last two digits of
+the year.  If you assume it is, then you create non\-Y2K\-compliant
+programs\*(--and you wouldn't want to do that, would you?
+.Sp
+The proper way to get a complete 4\-digit year is simply:
+.Sp
+.Vb 1
+\&        $year += 1900;
+.Ve
+.Sp
+And to get the last two digits of the year (e.g., '01' in 2001) do:
+.Sp
+.Vb 1
+\&        $year = sprintf("%02d", $year % 100);
+.Ve
+.Sp
+If \s-1EXPR\s0 is omitted, \f(CW\*(C`gmtime()\*(C'\fR uses the current time (\f(CW\*(C`gmtime(time)\*(C'\fR).
+.Sp
+In scalar context, \f(CW\*(C`gmtime()\*(C'\fR returns the \fIctime\fR\|(3) value:
+.Sp
+.Vb 1
+\&    $now_string = gmtime;  # e.g., "Thu Oct 13 04:54:34 1994"
+.Ve
+.Sp
+Also see the \f(CW\*(C`timegm\*(C'\fR function provided by the \f(CW\*(C`Time::Local\*(C'\fR module,
+and the \fIstrftime\fR\|(3) function available via the \s-1POSIX\s0 module.
+.Sp
+This scalar value is \fBnot\fR locale dependent (see perllocale), but
+is instead a Perl builtin.  Also see the \f(CW\*(C`Time::Local\*(C'\fR module, and the
+\&\fIstrftime\fR\|(3) and \fImktime\fR\|(3) functions available via the \s-1POSIX\s0 module.  To
+get somewhat similar but locale dependent date strings, set up your
+locale environment variables appropriately (please see perllocale)
+and try for example:
+.Sp
+.Vb 2
+\&    use POSIX qw(strftime);
+\&    $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
+.Ve
+.Sp
+Note that the \f(CW%a\fR and \f(CW%b\fR escapes, which represent the short forms
+of the day of the week and the month of the year, may not necessarily
+be three characters wide in all locales.
+.IP "goto \s-1LABEL\s0" 8
+.IX Item "goto LABEL"
+.PD 0
+.IP "goto \s-1EXPR\s0" 8
+.IX Item "goto EXPR"
+.IP "goto &NAME" 8
+.IX Item "goto &NAME"
+.PD
+The \f(CW\*(C`goto\-LABEL\*(C'\fR form finds the statement labeled with \s-1LABEL\s0 and resumes
+execution there.  It may not be used to go into any construct that
+requires initialization, such as a subroutine or a \f(CW\*(C`foreach\*(C'\fR loop.  It
+also can't be used to go into a construct that is optimized away,
+or to get out of a block or subroutine given to \f(CW\*(C`sort\*(C'\fR.
+It can be used to go almost anywhere else within the dynamic scope,
+including out of subroutines, but it's usually better to use some other
+construct such as \f(CW\*(C`last\*(C'\fR or \f(CW\*(C`die\*(C'\fR.  The author of Perl has never felt the
+need to use this form of \f(CW\*(C`goto\*(C'\fR (in Perl, that is\*(--C is another matter).
+(The difference being that C does not offer named loops combined with
+loop control.  Perl does, and this replaces most structured uses of \f(CW\*(C`goto\*(C'\fR
+in other languages.)
+.Sp
+The \f(CW\*(C`goto\-EXPR\*(C'\fR form expects a label name, whose scope will be resolved
+dynamically.  This allows for computed \f(CW\*(C`goto\*(C'\fRs per \s-1FORTRAN\s0, but isn't
+necessarily recommended if you're optimizing for maintainability:
+.Sp
+.Vb 1
+\&    goto ("FOO", "BAR", "GLARCH")[$i];
+.Ve
+.Sp
+The \f(CW\*(C`goto\-&NAME\*(C'\fR form is quite different from the other forms of
+\&\f(CW\*(C`goto\*(C'\fR.  In fact, it isn't a goto in the normal sense at all, and
+doesn't have the stigma associated with other gotos.  Instead, it
+exits the current subroutine (losing any changes set by \fIlocal()\fR) and
+immediately calls in its place the named subroutine using the current
+value of \f(CW at _\fR.  This is used by \f(CW\*(C`AUTOLOAD\*(C'\fR subroutines that wish to
+load another subroutine and then pretend that the other subroutine had
+been called in the first place (except that any modifications to \f(CW at _\fR
+in the current subroutine are propagated to the other subroutine.)
+After the \f(CW\*(C`goto\*(C'\fR, not even \f(CW\*(C`caller\*(C'\fR will be able to tell that this
+routine was called first.
+.Sp
+\&\s-1NAME\s0 needn't be the name of a subroutine; it can be a scalar variable
+containing a code reference, or a block which evaluates to a code
+reference.
+.IP "grep \s-1BLOCK\s0 \s-1LIST\s0" 8
+.IX Item "grep BLOCK LIST"
+.PD 0
+.IP "grep \s-1EXPR\s0,LIST" 8
+.IX Item "grep EXPR,LIST"
+.PD
+This is similar in spirit to, but not the same as, \fIgrep\fR\|(1) and its
+relatives.  In particular, it is not limited to using regular expressions.
+.Sp
+Evaluates the \s-1BLOCK\s0 or \s-1EXPR\s0 for each element of \s-1LIST\s0 (locally setting
+\&\f(CW$_\fR to each element) and returns the list value consisting of those
+elements for which the expression evaluated to true.  In scalar
+context, returns the number of times the expression was true.
+.Sp
+.Vb 1
+\&    @foo = grep(!/^#/, @bar);    # weed out comments
+.Ve
+.Sp
+or equivalently,
+.Sp
+.Vb 1
+\&    @foo = grep {!/^#/} @bar;    # weed out comments
+.Ve
+.Sp
+Note that \f(CW$_\fR is an alias to the list value, so it can be used to
+modify the elements of the \s-1LIST\s0.  While this is useful and supported,
+it can cause bizarre results if the elements of \s-1LIST\s0 are not variables.
+Similarly, grep returns aliases into the original list, much as a for
+loop's index variable aliases the list elements.  That is, modifying an
+element of a list returned by grep (for example, in a \f(CW\*(C`foreach\*(C'\fR, \f(CW\*(C`map\*(C'\fR
+or another \f(CW\*(C`grep\*(C'\fR) actually modifies the element in the original list.
+This is usually something to be avoided when writing clear code.
+.Sp
+See also \*(L"map\*(R" for a list composed of the results of the \s-1BLOCK\s0 or \s-1EXPR\s0.
+.IP "hex \s-1EXPR\s0" 8
+.IX Item "hex EXPR"
+.PD 0
+.IP "hex" 8
+.IX Item "hex"
+.PD
+Interprets \s-1EXPR\s0 as a hex string and returns the corresponding value.
+(To convert strings that might start with either 0, 0x, or 0b, see
+\&\*(L"oct\*(R".)  If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.Sp
+.Vb 2
+\&    print hex '0xAf'; # prints '175'
+\&    print hex 'aF';   # same
+.Ve
+.Sp
+Hex strings may only represent integers.  Strings that would cause
+integer overflow trigger a warning.  Leading whitespace is not stripped,
+unlike \fIoct()\fR.
+.IP "import" 8
+.IX Item "import"
+There is no builtin \f(CW\*(C`import\*(C'\fR function.  It is just an ordinary
+method (subroutine) defined (or inherited) by modules that wish to export
+names to another module.  The \f(CW\*(C`use\*(C'\fR function calls the \f(CW\*(C`import\*(C'\fR method
+for the package used.  See also \*(L"use\*(R", perlmod, and Exporter.
+.IP "index \s-1STR\s0,SUBSTR,POSITION" 8
+.IX Item "index STR,SUBSTR,POSITION"
+.PD 0
+.IP "index \s-1STR\s0,SUBSTR" 8
+.IX Item "index STR,SUBSTR"
+.PD
+The index function searches for one string within another, but without
+the wildcard-like behavior of a full regular-expression pattern match.
+It returns the position of the first occurrence of \s-1SUBSTR\s0 in \s-1STR\s0 at
+or after \s-1POSITION\s0.  If \s-1POSITION\s0 is omitted, starts searching from the
+beginning of the string.  The return value is based at \f(CW0\fR (or whatever
+you've set the \f(CW$[\fR variable to\*(--but don't do that).  If the substring
+is not found, returns one less than the base, ordinarily \f(CW\*(C`\-1\*(C'\fR.
+.IP "int \s-1EXPR\s0" 8
+.IX Item "int EXPR"
+.PD 0
+.IP "int" 8
+.IX Item "int"
+.PD
+Returns the integer portion of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+You should not use this function for rounding: one because it truncates
+towards \f(CW0\fR, and two because machine representations of floating point
+numbers can sometimes produce counterintuitive results.  For example,
+\&\f(CW\*(C`int(\-6.725/0.025)\*(C'\fR produces \-268 rather than the correct \-269; that's
+because it's really more like \-268.99999999999994315658 instead.  Usually,
+the \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`printf\*(C'\fR, or the \f(CW\*(C`POSIX::floor\*(C'\fR and \f(CW\*(C`POSIX::ceil\*(C'\fR
+functions will serve you better than will \fIint()\fR.
+.IP "ioctl \s-1FILEHANDLE\s0,FUNCTION,SCALAR" 8
+.IX Item "ioctl FILEHANDLE,FUNCTION,SCALAR"
+Implements the \fIioctl\fR\|(2) function.  You'll probably first have to say
+.Sp
+.Vb 1
+\&    require "ioctl.ph"; # probably in /usr/local/lib/perl/ioctl.ph
+.Ve
+.Sp
+to get the correct function definitions.  If \fIioctl.ph\fR doesn't
+exist or doesn't have the correct definitions you'll have to roll your
+own, based on your C header files such as \fI<sys/ioctl.h>\fR.
+(There is a Perl script called \fBh2ph\fR that comes with the Perl kit that
+may help you in this, but it's nontrivial.)  \s-1SCALAR\s0 will be read and/or
+written depending on the FUNCTION\*(--a pointer to the string value of \s-1SCALAR\s0
+will be passed as the third argument of the actual \f(CW\*(C`ioctl\*(C'\fR call.  (If \s-1SCALAR\s0
+has no string value but does have a numeric value, that value will be
+passed rather than a pointer to the string value.  To guarantee this to be
+true, add a \f(CW0\fR to the scalar before using it.)  The \f(CW\*(C`pack\*(C'\fR and \f(CW\*(C`unpack\*(C'\fR
+functions may be needed to manipulate the values of structures used by
+\&\f(CW\*(C`ioctl\*(C'\fR.
+.Sp
+The return value of \f(CW\*(C`ioctl\*(C'\fR (and \f(CW\*(C`fcntl\*(C'\fR) is as follows:
+.Sp
+.Vb 4
+\&        if OS returns:          then Perl returns:
+\&            -1                    undefined value
+\&             0                  string "0 but true"
+\&        anything else               that number
+.Ve
+.Sp
+Thus Perl returns true on success and false on failure, yet you can
+still easily determine the actual value returned by the operating
+system:
+.Sp
+.Vb 2
+\&    $retval = ioctl(...) || -1;
+\&    printf "System returned %d\en", $retval;
+.Ve
+.Sp
+The special string "\f(CW0\fR but true" is exempt from \fB\-w\fR complaints
+about improper numeric conversions.
+.Sp
+Here's an example of setting a filehandle named \f(CW\*(C`REMOTE\*(C'\fR to be
+non-blocking at the system level.  You'll have to negotiate \f(CW$|\fR
+on your own, though.
+.Sp
+.Vb 1
+\&    use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
+.Ve
+.Sp
+.Vb 2
+\&    $flags = fcntl(REMOTE, F_GETFL, 0)
+\&                or die "Can't get flags for the socket: $!\en";
+.Ve
+.Sp
+.Vb 2
+\&    $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
+\&                or die "Can't set flags for the socket: $!\en";
+.Ve
+.IP "join \s-1EXPR\s0,LIST" 8
+.IX Item "join EXPR,LIST"
+Joins the separate strings of \s-1LIST\s0 into a single string with fields
+separated by the value of \s-1EXPR\s0, and returns that new string.  Example:
+.Sp
+.Vb 1
+\&    $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
+.Ve
+.Sp
+Beware that unlike \f(CW\*(C`split\*(C'\fR, \f(CW\*(C`join\*(C'\fR doesn't take a pattern as its
+first argument.  Compare \*(L"split\*(R".
+.IP "keys \s-1HASH\s0" 8
+.IX Item "keys HASH"
+Returns a list consisting of all the keys of the named hash.
+(In scalar context, returns the number of keys.)
+.Sp
+The keys are returned in an apparently random order.  The actual
+random order is subject to change in future versions of perl, but it
+is guaranteed to be the same order as either the \f(CW\*(C`values\*(C'\fR or \f(CW\*(C`each\*(C'\fR
+function produces (given that the hash has not been modified).  Since
+Perl 5.8.1 the ordering is different even between different runs of
+Perl for security reasons (see \*(L"Algorithmic Complexity Attacks\*(R" in perlsec).
+.Sp
+As a side effect, calling \fIkeys()\fR resets the \s-1HASH\s0's internal iterator,
+see \*(L"each\*(R".
+.Sp
+Here is yet another way to print your environment:
+.Sp
+.Vb 5
+\&    @keys = keys %ENV;
+\&    @values = values %ENV;
+\&    while (@keys) {
+\&        print pop(@keys), '=', pop(@values), "\en";
+\&    }
+.Ve
+.Sp
+or how about sorted by key:
+.Sp
+.Vb 3
+\&    foreach $key (sort(keys %ENV)) {
+\&        print $key, '=', $ENV{$key}, "\en";
+\&    }
+.Ve
+.Sp
+The returned values are copies of the original keys in the hash, so
+modifying them will not affect the original hash.  Compare \*(L"values\*(R".
+.Sp
+To sort a hash by value, you'll need to use a \f(CW\*(C`sort\*(C'\fR function.
+Here's a descending numeric sort of a hash by its values:
+.Sp
+.Vb 3
+\&    foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash) {
+\&        printf "%4d %s\en", $hash{$key}, $key;
+\&    }
+.Ve
+.Sp
+As an lvalue \f(CW\*(C`keys\*(C'\fR allows you to increase the number of hash buckets
+allocated for the given hash.  This can gain you a measure of efficiency if
+you know the hash is going to get big.  (This is similar to pre-extending
+an array by assigning a larger number to $#array.)  If you say
+.Sp
+.Vb 1
+\&    keys %hash = 200;
+.Ve
+.Sp
+then \f(CW%hash\fR will have at least 200 buckets allocated for it\-\-256 of them,
+in fact, since it rounds up to the next power of two.  These
+buckets will be retained even if you do \f(CW\*(C`%hash = ()\*(C'\fR, use \f(CW\*(C`undef
+%hash\*(C'\fR if you want to free the storage while \f(CW%hash\fR is still in scope.
+You can't shrink the number of buckets allocated for the hash using
+\&\f(CW\*(C`keys\*(C'\fR in this way (but you needn't worry about doing this by accident,
+as trying has no effect).
+.Sp
+See also \f(CW\*(C`each\*(C'\fR, \f(CW\*(C`values\*(C'\fR and \f(CW\*(C`sort\*(C'\fR.
+.IP "kill \s-1SIGNAL\s0, \s-1LIST\s0" 8
+.IX Item "kill SIGNAL, LIST"
+Sends a signal to a list of processes.  Returns the number of
+processes successfully signaled (which is not necessarily the
+same as the number actually killed).
+.Sp
+.Vb 2
+\&    $cnt = kill 1, $child1, $child2;
+\&    kill 9, @goners;
+.Ve
+.Sp
+If \s-1SIGNAL\s0 is zero, no signal is sent to the process.  This is a
+useful way to check that a child process is alive and hasn't changed
+its \s-1UID\s0.  See perlport for notes on the portability of this
+construct.
+.Sp
+Unlike in the shell, if \s-1SIGNAL\s0 is negative, it kills
+process groups instead of processes.  (On System V, a negative \fI\s-1PROCESS\s0\fR
+number will also kill process groups, but that's not portable.)  That
+means you usually want to use positive not negative signals.  You may also
+use a signal name in quotes.
+.Sp
+See \*(L"Signals\*(R" in perlipc for more details.
+.IP "last \s-1LABEL\s0" 8
+.IX Item "last LABEL"
+.PD 0
+.IP "last" 8
+.IX Item "last"
+.PD
+The \f(CW\*(C`last\*(C'\fR command is like the \f(CW\*(C`break\*(C'\fR statement in C (as used in
+loops); it immediately exits the loop in question.  If the \s-1LABEL\s0 is
+omitted, the command refers to the innermost enclosing loop.  The
+\&\f(CW\*(C`continue\*(C'\fR block, if any, is not executed:
+.Sp
+.Vb 4
+\&    LINE: while (<STDIN>) {
+\&        last LINE if /^$/;      # exit when done with header
+\&        #...
+\&    }
+.Ve
+.Sp
+\&\f(CW\*(C`last\*(C'\fR cannot be used to exit a block which returns a value such as
+\&\f(CW\*(C`eval {}\*(C'\fR, \f(CW\*(C`sub {}\*(C'\fR or \f(CW\*(C`do {}\*(C'\fR, and should not be used to exit
+a \fIgrep()\fR or \fImap()\fR operation.
+.Sp
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus \f(CW\*(C`last\*(C'\fR can be used to effect an early
+exit out of such a block.
+.Sp
+See also \*(L"continue\*(R" for an illustration of how \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, and
+\&\f(CW\*(C`redo\*(C'\fR work.
+.IP "lc \s-1EXPR\s0" 8
+.IX Item "lc EXPR"
+.PD 0
+.IP "lc" 8
+.IX Item "lc"
+.PD
+Returns a lowercased version of \s-1EXPR\s0.  This is the internal function
+implementing the \f(CW\*(C`\eL\*(C'\fR escape in double-quoted strings.  Respects
+current \s-1LC_CTYPE\s0 locale if \f(CW\*(C`use locale\*(C'\fR in force.  See perllocale
+and perlunicode for more details about locale and Unicode support.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "lcfirst \s-1EXPR\s0" 8
+.IX Item "lcfirst EXPR"
+.PD 0
+.IP "lcfirst" 8
+.IX Item "lcfirst"
+.PD
+Returns the value of \s-1EXPR\s0 with the first character lowercased.  This
+is the internal function implementing the \f(CW\*(C`\el\*(C'\fR escape in
+double-quoted strings.  Respects current \s-1LC_CTYPE\s0 locale if \f(CW\*(C`use
+locale\*(C'\fR in force.  See perllocale and perlunicode for more
+details about locale and Unicode support.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "length \s-1EXPR\s0" 8
+.IX Item "length EXPR"
+.PD 0
+.IP "length" 8
+.IX Item "length"
+.PD
+Returns the length in \fIcharacters\fR of the value of \s-1EXPR\s0.  If \s-1EXPR\s0 is
+omitted, returns length of \f(CW$_\fR.  Note that this cannot be used on
+an entire array or hash to find out how many elements these have.
+For that, use \f(CW\*(C`scalar @array\*(C'\fR and \f(CW\*(C`scalar keys %hash\*(C'\fR respectively.
+.Sp
+Note the \fIcharacters\fR: if the \s-1EXPR\s0 is in Unicode, you will get the
+number of characters, not the number of bytes.  To get the length
+in bytes, use \f(CW\*(C`do { use bytes; length(EXPR) }\*(C'\fR, see bytes.
+.IP "link \s-1OLDFILE\s0,NEWFILE" 8
+.IX Item "link OLDFILE,NEWFILE"
+Creates a new filename linked to the old filename.  Returns true for
+success, false otherwise.
+.IP "listen \s-1SOCKET\s0,QUEUESIZE" 8
+.IX Item "listen SOCKET,QUEUESIZE"
+Does the same thing that the listen system call does.  Returns true if
+it succeeded, false otherwise.  See the example in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.IP "local \s-1EXPR\s0" 8
+.IX Item "local EXPR"
+You really probably want to be using \f(CW\*(C`my\*(C'\fR instead, because \f(CW\*(C`local\*(C'\fR isn't
+what most people think of as \*(L"local\*(R".  See
+\&\*(L"Private Variables via \fImy()\fR\*(R" in perlsub for details.
+.Sp
+A local modifies the listed variables to be local to the enclosing
+block, file, or eval.  If more than one value is listed, the list must
+be placed in parentheses.  See \*(L"Temporary Values via \fIlocal()\fR\*(R" in perlsub
+for details, including issues with tied arrays and hashes.
+.IP "localtime \s-1EXPR\s0" 8
+.IX Item "localtime EXPR"
+Converts a time as returned by the time function to a 9\-element list
+with the time analyzed for the local time zone.  Typically used as
+follows:
+.Sp
+.Vb 3
+\&    #  0    1    2     3     4    5     6     7     8
+\&    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
+\&                                                localtime(time);
+.Ve
+.Sp
+All list elements are numeric, and come straight out of the C `struct
+tm'.  \f(CW$sec\fR, \f(CW$min\fR, and \f(CW$hour\fR are the seconds, minutes, and hours of the
+specified time.  \f(CW$mday\fR is the day of the month, and \f(CW$mon\fR is the month
+itself, in the range \f(CW0..11\fR with 0 indicating January and 11
+indicating December.  \f(CW$year\fR is the number of years since 1900.  That
+is, \f(CW$year\fR is \f(CW123\fR in year 2023.  \f(CW$wday\fR is the day of the week, with
+0 indicating Sunday and 3 indicating Wednesday.  \f(CW$yday\fR is the day of
+the year, in the range \f(CW0..364\fR (or \f(CW0..365\fR in leap years.)  \f(CW$isdst\fR
+is true if the specified time occurs during daylight savings time,
+false otherwise.
+.Sp
+Note that the \f(CW$year\fR element is \fInot\fR simply the last two digits of
+the year.  If you assume it is, then you create non\-Y2K\-compliant
+programs\*(--and you wouldn't want to do that, would you?
+.Sp
+The proper way to get a complete 4\-digit year is simply:
+.Sp
+.Vb 1
+\&        $year += 1900;
+.Ve
+.Sp
+And to get the last two digits of the year (e.g., '01' in 2001) do:
+.Sp
+.Vb 1
+\&        $year = sprintf("%02d", $year % 100);
+.Ve
+.Sp
+If \s-1EXPR\s0 is omitted, \f(CW\*(C`localtime()\*(C'\fR uses the current time (\f(CW\*(C`localtime(time)\*(C'\fR).
+.Sp
+In scalar context, \f(CW\*(C`localtime()\*(C'\fR returns the \fIctime\fR\|(3) value:
+.Sp
+.Vb 1
+\&    $now_string = localtime;  # e.g., "Thu Oct 13 04:54:34 1994"
+.Ve
+.Sp
+This scalar value is \fBnot\fR locale dependent, see perllocale, but
+instead a Perl builtin.  Also see the \f(CW\*(C`Time::Local\*(C'\fR module
+(to convert the second, minutes, hours, ... back to seconds since the
+stroke of midnight the 1st of January 1970, the value returned by
+\&\fItime()\fR), and the \fIstrftime\fR\|(3) and \fImktime\fR\|(3) functions available via the
+\&\s-1POSIX\s0 module.  To get somewhat similar but locale dependent date
+strings, set up your locale environment variables appropriately
+(please see perllocale) and try for example:
+.Sp
+.Vb 2
+\&    use POSIX qw(strftime);
+\&    $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
+.Ve
+.Sp
+Note that the \f(CW%a\fR and \f(CW%b\fR, the short forms of the day of the week
+and the month of the year, may not necessarily be three characters wide.
+.IP "lock \s-1THING\s0" 8
+.IX Item "lock THING"
+This function places an advisory lock on a shared variable, or referenced
+object contained in \fI\s-1THING\s0\fR until the lock goes out of scope.
+.Sp
+\&\fIlock()\fR is a \*(L"weak keyword\*(R" : this means that if you've defined a function
+by this name (before any calls to it), that function will be called
+instead. (However, if you've said \f(CW\*(C`use threads\*(C'\fR, \fIlock()\fR is always a
+keyword.) See threads.
+.IP "log \s-1EXPR\s0" 8
+.IX Item "log EXPR"
+.PD 0
+.IP "log" 8
+.IX Item "log"
+.PD
+Returns the natural logarithm (base \fIe\fR) of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted,
+returns log of \f(CW$_\fR.  To get the log of another base, use basic algebra:
+The base-N log of a number is equal to the natural log of that number
+divided by the natural log of N.  For example:
+.Sp
+.Vb 4
+\&    sub log10 {
+\&        my $n = shift;
+\&        return log($n)/log(10);
+\&    }
+.Ve
+.Sp
+See also \*(L"exp\*(R" for the inverse operation.
+.IP "lstat \s-1EXPR\s0" 8
+.IX Item "lstat EXPR"
+.PD 0
+.IP "lstat" 8
+.IX Item "lstat"
+.PD
+Does the same thing as the \f(CW\*(C`stat\*(C'\fR function (including setting the
+special \f(CW\*(C`_\*(C'\fR filehandle) but stats a symbolic link instead of the file
+the symbolic link points to.  If symbolic links are unimplemented on
+your system, a normal \f(CW\*(C`stat\*(C'\fR is done.  For much more detailed
+information, please see the documentation for \*(L"stat\*(R".
+.Sp
+If \s-1EXPR\s0 is omitted, stats \f(CW$_\fR.
+.IP "m//" 8
+.IX Item "m//"
+The match operator.  See perlop.
+.IP "map \s-1BLOCK\s0 \s-1LIST\s0" 8
+.IX Item "map BLOCK LIST"
+.PD 0
+.IP "map \s-1EXPR\s0,LIST" 8
+.IX Item "map EXPR,LIST"
+.PD
+Evaluates the \s-1BLOCK\s0 or \s-1EXPR\s0 for each element of \s-1LIST\s0 (locally setting
+\&\f(CW$_\fR to each element) and returns the list value composed of the
+results of each such evaluation.  In scalar context, returns the
+total number of elements so generated.  Evaluates \s-1BLOCK\s0 or \s-1EXPR\s0 in
+list context, so each element of \s-1LIST\s0 may produce zero, one, or
+more elements in the returned value.
+.Sp
+.Vb 1
+\&    @chars = map(chr, @nums);
+.Ve
+.Sp
+translates a list of numbers to the corresponding characters.  And
+.Sp
+.Vb 1
+\&    %hash = map { getkey($_) => $_ } @array;
+.Ve
+.Sp
+is just a funny way to write
+.Sp
+.Vb 4
+\&    %hash = ();
+\&    foreach $_ (@array) {
+\&        $hash{getkey($_)} = $_;
+\&    }
+.Ve
+.Sp
+Note that \f(CW$_\fR is an alias to the list value, so it can be used to
+modify the elements of the \s-1LIST\s0.  While this is useful and supported,
+it can cause bizarre results if the elements of \s-1LIST\s0 are not variables.
+Using a regular \f(CW\*(C`foreach\*(C'\fR loop for this purpose would be clearer in
+most cases.  See also \*(L"grep\*(R" for an array composed of those items of
+the original list for which the \s-1BLOCK\s0 or \s-1EXPR\s0 evaluates to true.
+.Sp
+\&\f(CW\*(C`{\*(C'\fR starts both hash references and blocks, so \f(CW\*(C`map { ...\*(C'\fR could be either
+the start of map \s-1BLOCK\s0 \s-1LIST\s0 or map \s-1EXPR\s0, \s-1LIST\s0. Because perl doesn't look
+ahead for the closing \f(CW\*(C`}\*(C'\fR it has to take a guess at which its dealing with
+based what it finds just after the \f(CW\*(C`{\*(C'\fR. Usually it gets it right, but if it
+doesn't it won't realize something is wrong until it gets to the \f(CW\*(C`}\*(C'\fR and
+encounters the missing (or unexpected) comma. The syntax error will be
+reported close to the \f(CW\*(C`}\*(C'\fR but you'll need to change something near the \f(CW\*(C`{\*(C'\fR
+such as using a unary \f(CW\*(C`+\*(C'\fR to give perl some help:
+.Sp
+.Vb 5
+\&    %hash = map {  "\eL$_", 1  } @array  # perl guesses EXPR.  wrong
+\&    %hash = map { +"\eL$_", 1  } @array  # perl guesses BLOCK. right
+\&    %hash = map { ("\eL$_", 1) } @array  # this also works
+\&    %hash = map {  lc($_), 1  } @array  # as does this.
+\&    %hash = map +( lc($_), 1 ), @array  # this is EXPR and works!
+.Ve
+.Sp
+.Vb 1
+\&    %hash = map  ( lc($_), 1 ), @array  # evaluates to (1, @array)
+.Ve
+.Sp
+or to force an anon hash constructor use \f(CW\*(C`+{\*(C'\fR
+.Sp
+.Vb 1
+\&   @hashes = map +{ lc($_), 1 }, @array # EXPR, so needs , at end
+.Ve
+.Sp
+and you get list of anonymous hashes each with only 1 entry.
+.IP "mkdir \s-1FILENAME\s0,MASK" 8
+.IX Item "mkdir FILENAME,MASK"
+.PD 0
+.IP "mkdir \s-1FILENAME\s0" 8
+.IX Item "mkdir FILENAME"
+.PD
+Creates the directory specified by \s-1FILENAME\s0, with permissions
+specified by \s-1MASK\s0 (as modified by \f(CW\*(C`umask\*(C'\fR).  If it succeeds it
+returns true, otherwise it returns false and sets \f(CW$!\fR (errno).
+If omitted, \s-1MASK\s0 defaults to 0777.
+.Sp
+In general, it is better to create directories with permissive \s-1MASK\s0,
+and let the user modify that with their \f(CW\*(C`umask\*(C'\fR, than it is to supply
+a restrictive \s-1MASK\s0 and give the user no way to be more permissive.
+The exceptions to this rule are when the file or directory should be
+kept private (mail files, for instance).  The \fIperlfunc\fR\|(1) entry on
+\&\f(CW\*(C`umask\*(C'\fR discusses the choice of \s-1MASK\s0 in more detail.
+.Sp
+Note that according to the \s-1POSIX\s0 1003.1\-1996 the \s-1FILENAME\s0 may have any
+number of trailing slashes.  Some operating and filesystems do not get
+this right, so Perl automatically removes all trailing slashes to keep
+everyone happy.
+.IP "msgctl \s-1ID\s0,CMD,ARG" 8
+.IX Item "msgctl ID,CMD,ARG"
+Calls the System V \s-1IPC\s0 function \fImsgctl\fR\|(2).  You'll probably have to say
+.Sp
+.Vb 1
+\&    use IPC::SysV;
+.Ve
+.Sp
+first to get the correct constant definitions.  If \s-1CMD\s0 is \f(CW\*(C`IPC_STAT\*(C'\fR,
+then \s-1ARG\s0 must be a variable which will hold the returned \f(CW\*(C`msqid_ds\*(C'\fR
+structure.  Returns like \f(CW\*(C`ioctl\*(C'\fR: the undefined value for error,
+\&\f(CW"0 but true"\fR for zero, or the actual return value otherwise.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, and \f(CW\*(C`IPC::Semaphore\*(C'\fR documentation.
+.IP "msgget \s-1KEY\s0,FLAGS" 8
+.IX Item "msgget KEY,FLAGS"
+Calls the System V \s-1IPC\s0 function \fImsgget\fR\|(2).  Returns the message queue
+id, or the undefined value if there is an error.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc and \f(CW\*(C`IPC::SysV\*(C'\fR and \f(CW\*(C`IPC::Msg\*(C'\fR documentation.
+.IP "msgrcv \s-1ID\s0,VAR,SIZE,TYPE,FLAGS" 8
+.IX Item "msgrcv ID,VAR,SIZE,TYPE,FLAGS"
+Calls the System V \s-1IPC\s0 function msgrcv to receive a message from
+message queue \s-1ID\s0 into variable \s-1VAR\s0 with a maximum message size of
+\&\s-1SIZE\s0.  Note that when a message is received, the message type as a
+native long integer will be the first thing in \s-1VAR\s0, followed by the
+actual message.  This packing may be opened with \f(CW\*(C`unpack("l! a*")\*(C'\fR.
+Taints the variable.  Returns true if successful, or false if there is
+an error.  See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, and
+\&\f(CW\*(C`IPC::SysV::Msg\*(C'\fR documentation.
+.IP "msgsnd \s-1ID\s0,MSG,FLAGS" 8
+.IX Item "msgsnd ID,MSG,FLAGS"
+Calls the System V \s-1IPC\s0 function msgsnd to send the message \s-1MSG\s0 to the
+message queue \s-1ID\s0.  \s-1MSG\s0 must begin with the native long integer message
+type, and be followed by the length of the actual message, and finally
+the message itself.  This kind of packing can be achieved with
+\&\f(CW\*(C`pack("l! a*", $type, $message)\*(C'\fR.  Returns true if successful,
+or false if there is an error.  See also \f(CW\*(C`IPC::SysV\*(C'\fR
+and \f(CW\*(C`IPC::SysV::Msg\*(C'\fR documentation.
+.IP "my \s-1EXPR\s0" 8
+.IX Item "my EXPR"
+.PD 0
+.IP "my \s-1TYPE\s0 \s-1EXPR\s0" 8
+.IX Item "my TYPE EXPR"
+.IP "my \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "my EXPR : ATTRS"
+.IP "my \s-1TYPE\s0 \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "my TYPE EXPR : ATTRS"
+.PD
+A \f(CW\*(C`my\*(C'\fR declares the listed variables to be local (lexically) to the
+enclosing block, file, or \f(CW\*(C`eval\*(C'\fR.  If more than one value is listed,
+the list must be placed in parentheses.
+.Sp
+The exact semantics and interface of \s-1TYPE\s0 and \s-1ATTRS\s0 are still
+evolving.  \s-1TYPE\s0 is currently bound to the use of \f(CW\*(C`fields\*(C'\fR pragma,
+and attributes are handled using the \f(CW\*(C`attributes\*(C'\fR pragma, or starting
+from Perl 5.8.0 also via the \f(CW\*(C`Attribute::Handlers\*(C'\fR module.  See
+\&\*(L"Private Variables via \fImy()\fR\*(R" in perlsub for details, and fields,
+attributes, and Attribute::Handlers.
+.IP "next \s-1LABEL\s0" 8
+.IX Item "next LABEL"
+.PD 0
+.IP "next" 8
+.IX Item "next"
+.PD
+The \f(CW\*(C`next\*(C'\fR command is like the \f(CW\*(C`continue\*(C'\fR statement in C; it starts
+the next iteration of the loop:
+.Sp
+.Vb 4
+\&    LINE: while (<STDIN>) {
+\&        next LINE if /^#/;      # discard comments
+\&        #...
+\&    }
+.Ve
+.Sp
+Note that if there were a \f(CW\*(C`continue\*(C'\fR block on the above, it would get
+executed even on discarded lines.  If the \s-1LABEL\s0 is omitted, the command
+refers to the innermost enclosing loop.
+.Sp
+\&\f(CW\*(C`next\*(C'\fR cannot be used to exit a block which returns a value such as
+\&\f(CW\*(C`eval {}\*(C'\fR, \f(CW\*(C`sub {}\*(C'\fR or \f(CW\*(C`do {}\*(C'\fR, and should not be used to exit
+a \fIgrep()\fR or \fImap()\fR operation.
+.Sp
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus \f(CW\*(C`next\*(C'\fR will exit such a block early.
+.Sp
+See also \*(L"continue\*(R" for an illustration of how \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, and
+\&\f(CW\*(C`redo\*(C'\fR work.
+.IP "no Module \s-1VERSION\s0 \s-1LIST\s0" 8
+.IX Item "no Module VERSION LIST"
+.PD 0
+.IP "no Module \s-1VERSION\s0" 8
+.IX Item "no Module VERSION"
+.IP "no Module \s-1LIST\s0" 8
+.IX Item "no Module LIST"
+.IP "no Module" 8
+.IX Item "no Module"
+.PD
+See the \f(CW\*(C`use\*(C'\fR function, which \f(CW\*(C`no\*(C'\fR is the opposite of.
+.IP "oct \s-1EXPR\s0" 8
+.IX Item "oct EXPR"
+.PD 0
+.IP "oct" 8
+.IX Item "oct"
+.PD
+Interprets \s-1EXPR\s0 as an octal string and returns the corresponding
+value.  (If \s-1EXPR\s0 happens to start off with \f(CW\*(C`0x\*(C'\fR, interprets it as a
+hex string.  If \s-1EXPR\s0 starts off with \f(CW\*(C`0b\*(C'\fR, it is interpreted as a
+binary string.  Leading whitespace is ignored in all three cases.)
+The following will handle decimal, binary, octal, and hex in the standard
+Perl or C notation:
+.Sp
+.Vb 1
+\&    $val = oct($val) if $val =~ /^0/;
+.Ve
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.   To go the other way (produce a number
+in octal), use \fIsprintf()\fR or \fIprintf()\fR:
+.Sp
+.Vb 2
+\&    $perms = (stat("filename"))[2] & 07777;
+\&    $oct_perms = sprintf "%lo", $perms;
+.Ve
+.Sp
+The \fIoct()\fR function is commonly used when a string such as \f(CW644\fR needs
+to be converted into a file mode, for example. (Although perl will
+automatically convert strings into numbers as needed, this automatic
+conversion assumes base 10.)
+.IP "open \s-1FILEHANDLE\s0,EXPR" 8
+.IX Item "open FILEHANDLE,EXPR"
+.PD 0
+.IP "open \s-1FILEHANDLE\s0,MODE,EXPR" 8
+.IX Item "open FILEHANDLE,MODE,EXPR"
+.IP "open \s-1FILEHANDLE\s0,MODE,EXPR,LIST" 8
+.IX Item "open FILEHANDLE,MODE,EXPR,LIST"
+.IP "open \s-1FILEHANDLE\s0,MODE,REFERENCE" 8
+.IX Item "open FILEHANDLE,MODE,REFERENCE"
+.IP "open \s-1FILEHANDLE\s0" 8
+.IX Item "open FILEHANDLE"
+.PD
+Opens the file whose filename is given by \s-1EXPR\s0, and associates it with
+\&\s-1FILEHANDLE\s0.
+.Sp
+(The following is a comprehensive reference to \fIopen()\fR: for a gentler
+introduction you may consider perlopentut.)
+.Sp
+If \s-1FILEHANDLE\s0 is an undefined scalar variable (or array or hash element)
+the variable is assigned a reference to a new anonymous filehandle,
+otherwise if \s-1FILEHANDLE\s0 is an expression, its value is used as the name of
+the real filehandle wanted.  (This is considered a symbolic reference, so
+\&\f(CW\*(C`use strict 'refs'\*(C'\fR should \fInot\fR be in effect.)
+.Sp
+If \s-1EXPR\s0 is omitted, the scalar variable of the same name as the
+\&\s-1FILEHANDLE\s0 contains the filename.  (Note that lexical variables\*(--those
+declared with \f(CW\*(C`my\*(C'\fR\-\-will not work for this purpose; so if you're
+using \f(CW\*(C`my\*(C'\fR, specify \s-1EXPR\s0 in your call to open.)
+.Sp
+If three or more arguments are specified then the mode of opening and
+the file name are separate. If \s-1MODE\s0 is \f(CW'<'\fR or nothing, the file
+is opened for input.  If \s-1MODE\s0 is \f(CW'>'\fR, the file is truncated and
+opened for output, being created if necessary.  If \s-1MODE\s0 is \f(CW'>>'\fR,
+the file is opened for appending, again being created if necessary.
+.Sp
+You can put a \f(CW'+'\fR in front of the \f(CW'>'\fR or \f(CW'<'\fR to
+indicate that you want both read and write access to the file; thus
+\&\f(CW'+<'\fR is almost always preferred for read/write updates\*(--the \f(CW'+>'\fR mode would clobber the file first.  You can't usually use
+either read-write mode for updating textfiles, since they have
+variable length records.  See the \fB\-i\fR switch in perlrun for a
+better approach.  The file is created with permissions of \f(CW0666\fR
+modified by the process' \f(CW\*(C`umask\*(C'\fR value.
+.Sp
+These various prefixes correspond to the \fIfopen\fR\|(3) modes of \f(CW'r'\fR,
+\&\f(CW'r+'\fR, \f(CW'w'\fR, \f(CW'w+'\fR, \f(CW'a'\fR, and \f(CW'a+'\fR.
+.Sp
+In the 2\-arguments (and 1\-argument) form of the call the mode and
+filename should be concatenated (in this order), possibly separated by
+spaces.  It is possible to omit the mode in these forms if the mode is
+\&\f(CW'<'\fR.
+.Sp
+If the filename begins with \f(CW'|'\fR, the filename is interpreted as a
+command to which output is to be piped, and if the filename ends with a
+\&\f(CW'|'\fR, the filename is interpreted as a command which pipes output to
+us.  See \*(L"Using \fIopen()\fR for \s-1IPC\s0\*(R" in perlipc
+for more examples of this.  (You are not allowed to \f(CW\*(C`open\*(C'\fR to a command
+that pipes both in \fIand\fR out, but see IPC::Open2, IPC::Open3,
+and \*(L"Bidirectional Communication with Another Process\*(R" in perlipc
+for alternatives.)
+.Sp
+For three or more arguments if \s-1MODE\s0 is \f(CW'|\-'\fR, the filename is
+interpreted as a command to which output is to be piped, and if \s-1MODE\s0
+is \f(CW'\-|'\fR, the filename is interpreted as a command which pipes
+output to us.  In the 2\-arguments (and 1\-argument) form one should
+replace dash (\f(CW'\-'\fR) with the command.
+See \*(L"Using \fIopen()\fR for \s-1IPC\s0\*(R" in perlipc for more examples of this.
+(You are not allowed to \f(CW\*(C`open\*(C'\fR to a command that pipes both in \fIand\fR
+out, but see IPC::Open2, IPC::Open3, and
+\&\*(L"Bidirectional Communication\*(R" in perlipc for alternatives.)
+.Sp
+In the three-or-more argument form of pipe opens, if \s-1LIST\s0 is specified
+(extra arguments after the command name) then \s-1LIST\s0 becomes arguments
+to the command invoked if the platform supports it.  The meaning of
+\&\f(CW\*(C`open\*(C'\fR with more than three arguments for non-pipe modes is not yet
+specified. Experimental \*(L"layers\*(R" may give extra \s-1LIST\s0 arguments
+meaning.
+.Sp
+In the 2\-arguments (and 1\-argument) form opening \f(CW'\-'\fR opens \s-1STDIN\s0
+and opening \f(CW'>\-'\fR opens \s-1STDOUT\s0.
+.Sp
+You may use the three-argument form of open to specify \s-1IO\s0 \*(L"layers\*(R"
+(sometimes also referred to as \*(L"disciplines\*(R") to be applied to the handle
+that affect how the input and output are processed (see open and
+PerlIO for more details). For example
+.Sp
+.Vb 1
+\&  open(FH, "<:utf8", "file")
+.Ve
+.Sp
+will open the \s-1UTF\-8\s0 encoded file containing Unicode characters,
+see perluniintro. (Note that if layers are specified in the
+three-arg form then default layers set by the \f(CW\*(C`open\*(C'\fR pragma are
+ignored.)
+.Sp
+Open returns nonzero upon success, the undefined value otherwise.  If
+the \f(CW\*(C`open\*(C'\fR involved a pipe, the return value happens to be the pid of
+the subprocess.
+.Sp
+If you're running Perl on a system that distinguishes between text
+files and binary files, then you should check out \*(L"binmode\*(R" for tips
+for dealing with this.  The key distinction between systems that need
+\&\f(CW\*(C`binmode\*(C'\fR and those that don't is their text file formats.  Systems
+like Unix, Mac \s-1OS\s0, and Plan 9, which delimit lines with a single
+character, and which encode that character in C as \f(CW"\en"\fR, do not
+need \f(CW\*(C`binmode\*(C'\fR.  The rest need it.
+.Sp
+When opening a file, it's usually a bad idea to continue normal execution
+if the request failed, so \f(CW\*(C`open\*(C'\fR is frequently used in connection with
+\&\f(CW\*(C`die\*(C'\fR.  Even if \f(CW\*(C`die\*(C'\fR won't do what you want (say, in a \s-1CGI\s0 script,
+where you want to make a nicely formatted error message (but there are
+modules that can help with that problem)) you should always check
+the return value from opening a file.  The infrequent exception is when
+working with an unopened filehandle is actually what you want to do.
+.Sp
+As a special case the 3 arg form with a read/write mode and the third
+argument being \f(CW\*(C`undef\*(C'\fR:
+.Sp
+.Vb 1
+\&    open(TMP, "+>", undef) or die ...
+.Ve
+.Sp
+opens a filehandle to an anonymous temporary file.  Also using \*(L"+<\*(R"
+works for symmetry, but you really should consider writing something
+to the temporary file first.  You will need to \fIseek()\fR to do the
+reading.
+.Sp
+File handles can be opened to \*(L"in memory\*(R" files held in Perl scalars via:
+.Sp
+.Vb 1
+\&    open($fh, '>', \e$variable) || ..
+.Ve
+.Sp
+Though if you try to re-open \f(CW\*(C`STDOUT\*(C'\fR or \f(CW\*(C`STDERR\*(C'\fR as an \*(L"in memory\*(R"
+file, you have to close it first:
+.Sp
+.Vb 2
+\&    close STDOUT;
+\&    open STDOUT, '>', \e$variable or die "Can't open STDOUT: $!";
+.Ve
+.Sp
+Examples:
+.Sp
+.Vb 3
+\&    $ARTICLE = 100;
+\&    open ARTICLE or die "Can't find article $ARTICLE: $!\en";
+\&    while (<ARTICLE>) {...
+.Ve
+.Sp
+.Vb 2
+\&    open(LOG, '>>/usr/spool/news/twitlog');     # (log is reserved)
+\&    # if the open fails, output is discarded
+.Ve
+.Sp
+.Vb 2
+\&    open(DBASE, '+<', 'dbase.mine')             # open for update
+\&        or die "Can't open 'dbase.mine' for update: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(DBASE, '+<dbase.mine')                 # ditto
+\&        or die "Can't open 'dbase.mine' for update: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(ARTICLE, '-|', "caesar <$article")     # decrypt article
+\&        or die "Can't start caesar: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(ARTICLE, "caesar <$article |")         # ditto
+\&        or die "Can't start caesar: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open(EXTRACT, "|sort >/tmp/Tmp$$")          # $$ is our process id
+\&        or die "Can't start sort: $!";
+.Ve
+.Sp
+.Vb 4
+\&    # in memory files
+\&    open(MEMORY,'>', \e$var)
+\&        or die "Can't open memory file: $!";
+\&    print MEMORY "foo!\en";                      # output will end up in $var
+.Ve
+.Sp
+.Vb 1
+\&    # process argument list of files along with any includes
+.Ve
+.Sp
+.Vb 3
+\&    foreach $file (@ARGV) {
+\&        process($file, 'fh00');
+\&    }
+.Ve
+.Sp
+.Vb 7
+\&    sub process {
+\&        my($filename, $input) = @_;
+\&        $input++;               # this is a string increment
+\&        unless (open($input, $filename)) {
+\&            print STDERR "Can't open $filename: $!\en";
+\&            return;
+\&        }
+.Ve
+.Sp
+.Vb 9
+\&        local $_;
+\&        while (<$input>) {              # note use of indirection
+\&            if (/^#include "(.*)"/) {
+\&                process($1, $input);
+\&                next;
+\&            }
+\&            #...                # whatever
+\&        }
+\&    }
+.Ve
+.Sp
+You may also, in the Bourne shell tradition, specify an \s-1EXPR\s0 beginning
+with \f(CW'>&'\fR, in which case the rest of the string is interpreted
+as the name of a filehandle (or file descriptor, if numeric) to be
+duped (as \fIdup\fR\|(2)) and opened.  You may use \f(CW\*(C`&\*(C'\fR after \f(CW\*(C`>\*(C'\fR,
+\&\f(CW\*(C`>>\*(C'\fR, \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`+>\*(C'\fR, \f(CW\*(C`+>>\*(C'\fR, and \f(CW\*(C`+<\*(C'\fR.
+The mode you specify should match the mode of the original filehandle.
+(Duping a filehandle does not take into account any existing contents
+of \s-1IO\s0 buffers.) If you use the 3 arg form then you can pass either a
+number, the name of a filehandle or the normal \*(L"reference to a glob\*(R".
+.Sp
+Here is a script that saves, redirects, and restores \f(CW\*(C`STDOUT\*(C'\fR and
+\&\f(CW\*(C`STDERR\*(C'\fR using various methods:
+.Sp
+.Vb 3
+\&    #!/usr/bin/perl
+\&    open my $oldout, ">&STDOUT"     or die "Can't dup STDOUT: $!";
+\&    open OLDERR,     ">&", \e*STDERR or die "Can't dup STDERR: $!";
+.Ve
+.Sp
+.Vb 2
+\&    open STDOUT, '>', "foo.out" or die "Can't redirect STDOUT: $!";
+\&    open STDERR, ">&STDOUT"     or die "Can't dup STDOUT: $!";
+.Ve
+.Sp
+.Vb 2
+\&    select STDERR; $| = 1;      # make unbuffered
+\&    select STDOUT; $| = 1;      # make unbuffered
+.Ve
+.Sp
+.Vb 2
+\&    print STDOUT "stdout 1\en";  # this works for
+\&    print STDERR "stderr 1\en";  # subprocesses too
+.Ve
+.Sp
+.Vb 2
+\&    close STDOUT;
+\&    close STDERR;
+.Ve
+.Sp
+.Vb 2
+\&    open STDOUT, ">&", $oldout or die "Can't dup \e$oldout: $!";
+\&    open STDERR, ">&OLDERR"    or die "Can't dup OLDERR: $!";
+.Ve
+.Sp
+.Vb 2
+\&    print STDOUT "stdout 2\en";
+\&    print STDERR "stderr 2\en";
+.Ve
+.Sp
+If you specify \f(CW'<&=X'\fR, where \f(CW\*(C`X\*(C'\fR is a file descriptor number
+or a filehandle, then Perl will do an equivalent of C's \f(CW\*(C`fdopen\*(C'\fR of
+that file descriptor (and not call \fIdup\fR\|(2)); this is more
+parsimonious of file descriptors.  For example:
+.Sp
+.Vb 2
+\&    # open for input, reusing the fileno of $fd
+\&    open(FILEHANDLE, "<&=$fd")
+.Ve
+.Sp
+or
+.Sp
+.Vb 1
+\&    open(FILEHANDLE, "<&=", $fd)
+.Ve
+.Sp
+or
+.Sp
+.Vb 2
+\&    # open for append, using the fileno of OLDFH
+\&    open(FH, ">>&=", OLDFH)
+.Ve
+.Sp
+or
+.Sp
+.Vb 1
+\&    open(FH, ">>&=OLDFH")
+.Ve
+.Sp
+Being parsimonious on filehandles is also useful (besides being
+parsimonious) for example when something is dependent on file
+descriptors, like for example locking using \fIflock()\fR.  If you do just
+\&\f(CW\*(C`open(A, '>>&B')\*(C'\fR, the filehandle A will not have the same file
+descriptor as B, and therefore flock(A) will not flock(B), and vice
+versa.  But with \f(CW\*(C`open(A, '>>&=B')\*(C'\fR the filehandles will share
+the same file descriptor.
+.Sp
+Note that if you are using Perls older than 5.8.0, Perl will be using
+the standard C libraries' \fIfdopen()\fR to implement the \*(L"=\*(R" functionality.
+On many \s-1UNIX\s0 systems \fIfdopen()\fR fails when file descriptors exceed a
+certain value, typically 255.  For Perls 5.8.0 and later, PerlIO is
+most often the default.
+.Sp
+You can see whether Perl has been compiled with PerlIO or not by
+running \f(CW\*(C`perl \-V\*(C'\fR and looking for \f(CW\*(C`useperlio=\*(C'\fR line.  If \f(CW\*(C`useperlio\*(C'\fR
+is \f(CW\*(C`define\*(C'\fR, you have PerlIO, otherwise you don't.
+.Sp
+If you open a pipe on the command \f(CW'\-'\fR, i.e., either \f(CW'|\-'\fR or \f(CW'\-|'\fR
+with 2\-arguments (or 1\-argument) form of \fIopen()\fR, then
+there is an implicit fork done, and the return value of open is the pid
+of the child within the parent process, and \f(CW0\fR within the child
+process.  (Use \f(CW\*(C`defined($pid)\*(C'\fR to determine whether the open was successful.)
+The filehandle behaves normally for the parent, but i/o to that
+filehandle is piped from/to the \s-1STDOUT/STDIN\s0 of the child process.
+In the child process the filehandle isn't opened\*(--i/o happens from/to
+the new \s-1STDOUT\s0 or \s-1STDIN\s0.  Typically this is used like the normal
+piped open when you want to exercise more control over just how the
+pipe command gets executed, such as when you are running setuid, and
+don't want to have to scan shell commands for metacharacters.
+The following triples are more or less equivalent:
+.Sp
+.Vb 4
+\&    open(FOO, "|tr '[a-z]' '[A-Z]'");
+\&    open(FOO, '|-', "tr '[a-z]' '[A-Z]'");
+\&    open(FOO, '|-') || exec 'tr', '[a-z]', '[A-Z]';
+\&    open(FOO, '|-', "tr", '[a-z]', '[A-Z]');
+.Ve
+.Sp
+.Vb 4
+\&    open(FOO, "cat -n '$file'|");
+\&    open(FOO, '-|', "cat -n '$file'");
+\&    open(FOO, '-|') || exec 'cat', '-n', $file;
+\&    open(FOO, '-|', "cat", '-n', $file);
+.Ve
+.Sp
+The last example in each block shows the pipe as \*(L"list form\*(R", which is
+not yet supported on all platforms.  A good rule of thumb is that if
+your platform has true \f(CW\*(C`fork()\*(C'\fR (in other words, if your platform is
+\&\s-1UNIX\s0) you can use the list form.
+.Sp
+See \*(L"Safe Pipe Opens\*(R" in perlipc for more examples of this.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before any operation that may do a fork, but this may not be
+supported on some platforms (see perlport).  To be safe, you may need
+to set \f(CW$|\fR ($AUTOFLUSH in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method
+of \f(CW\*(C`IO::Handle\*(C'\fR on any open handles.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor as determined by the value
+of $^F.  See \*(L"$^F\*(R" in perlvar.
+.Sp
+Closing any piped filehandle causes the parent process to wait for the
+child to finish, and returns the status value in \f(CW$?\fR.
+.Sp
+The filename passed to 2\-argument (or 1\-argument) form of \fIopen()\fR will
+have leading and trailing whitespace deleted, and the normal
+redirection characters honored.  This property, known as \*(L"magic open\*(R",
+can often be used to good effect.  A user could specify a filename of
+\&\fI\*(L"rsh cat file |\*(R"\fR, or you could change certain filenames as needed:
+.Sp
+.Vb 2
+\&    $filename =~ s/(.*\e.gz)\es*$/gzip -dc < $1|/;
+\&    open(FH, $filename) or die "Can't open $filename: $!";
+.Ve
+.Sp
+Use 3\-argument form to open a file with arbitrary weird characters in it,
+.Sp
+.Vb 1
+\&    open(FOO, '<', $file);
+.Ve
+.Sp
+otherwise it's necessary to protect any leading and trailing whitespace:
+.Sp
+.Vb 2
+\&    $file =~ s#^(\es)#./$1#;
+\&    open(FOO, "< $file\e0");
+.Ve
+.Sp
+(this may not work on some bizarre filesystems).  One should
+conscientiously choose between the \fImagic\fR and 3\-arguments form
+of \fIopen()\fR:
+.Sp
+.Vb 1
+\&    open IN, $ARGV[0];
+.Ve
+.Sp
+will allow the user to specify an argument of the form \f(CW"rsh cat file |"\fR,
+but will not work on a filename which happens to have a trailing space, while
+.Sp
+.Vb 1
+\&    open IN, '<', $ARGV[0];
+.Ve
+.Sp
+will have exactly the opposite restrictions.
+.Sp
+If you want a \*(L"real\*(R" C \f(CW\*(C`open\*(C'\fR (see \fIopen\fR\|(2) on your system), then you
+should use the \f(CW\*(C`sysopen\*(C'\fR function, which involves no such magic (but
+may use subtly different filemodes than Perl \fIopen()\fR, which is mapped
+to C \fIfopen()\fR).  This is
+another way to protect your filenames from interpretation.  For example:
+.Sp
+.Vb 7
+\&    use IO::Handle;
+\&    sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL)
+\&        or die "sysopen $path: $!";
+\&    $oldfh = select(HANDLE); $| = 1; select($oldfh);
+\&    print HANDLE "stuff $$\en";
+\&    seek(HANDLE, 0, 0);
+\&    print "File contains: ", <HANDLE>;
+.Ve
+.Sp
+Using the constructor from the \f(CW\*(C`IO::Handle\*(C'\fR package (or one of its
+subclasses, such as \f(CW\*(C`IO::File\*(C'\fR or \f(CW\*(C`IO::Socket\*(C'\fR), you can generate anonymous
+filehandles that have the scope of whatever variables hold references to
+them, and automatically close whenever and however you leave that scope:
+.Sp
+.Vb 12
+\&    use IO::File;
+\&    #...
+\&    sub read_myfile_munged {
+\&        my $ALL = shift;
+\&        my $handle = new IO::File;
+\&        open($handle, "myfile") or die "myfile: $!";
+\&        $first = <$handle>
+\&            or return ();     # Automatically closed here.
+\&        mung $first or die "mung failed";       # Or here.
+\&        return $first, <$handle> if $ALL;       # Or here.
+\&        $first;                                 # Or here.
+\&    }
+.Ve
+.Sp
+See \*(L"seek\*(R" for some details about mixing reading and writing.
+.IP "opendir \s-1DIRHANDLE\s0,EXPR" 8
+.IX Item "opendir DIRHANDLE,EXPR"
+Opens a directory named \s-1EXPR\s0 for processing by \f(CW\*(C`readdir\*(C'\fR, \f(CW\*(C`telldir\*(C'\fR,
+\&\f(CW\*(C`seekdir\*(C'\fR, \f(CW\*(C`rewinddir\*(C'\fR, and \f(CW\*(C`closedir\*(C'\fR.  Returns true if successful.
+\&\s-1DIRHANDLE\s0 may be an expression whose value can be used as an indirect
+dirhandle, usually the real dirhandle name.  If \s-1DIRHANDLE\s0 is an undefined
+scalar variable (or array or hash element), the variable is assigned a
+reference to a new anonymous dirhandle.
+DIRHANDLEs have their own namespace separate from FILEHANDLEs.
+.IP "ord \s-1EXPR\s0" 8
+.IX Item "ord EXPR"
+.PD 0
+.IP "ord" 8
+.IX Item "ord"
+.PD
+Returns the numeric (the native 8\-bit encoding, like \s-1ASCII\s0 or \s-1EBCDIC\s0,
+or Unicode) value of the first character of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted,
+uses \f(CW$_\fR.
+.Sp
+For the reverse, see \*(L"chr\*(R".
+See perlunicode and encoding for more about Unicode.
+.IP "our \s-1EXPR\s0" 8
+.IX Item "our EXPR"
+.PD 0
+.IP "our \s-1EXPR\s0 \s-1TYPE\s0" 8
+.IX Item "our EXPR TYPE"
+.IP "our \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "our EXPR : ATTRS"
+.IP "our \s-1TYPE\s0 \s-1EXPR\s0 : \s-1ATTRS\s0" 8
+.IX Item "our TYPE EXPR : ATTRS"
+.PD
+An \f(CW\*(C`our\*(C'\fR declares the listed variables to be valid globals within
+the enclosing block, file, or \f(CW\*(C`eval\*(C'\fR.  That is, it has the same
+scoping rules as a \*(L"my\*(R" declaration, but does not create a local
+variable.  If more than one value is listed, the list must be placed
+in parentheses.  The \f(CW\*(C`our\*(C'\fR declaration has no semantic effect unless
+\&\*(L"use strict vars\*(R" is in effect, in which case it lets you use the
+declared global variable without qualifying it with a package name.
+(But only within the lexical scope of the \f(CW\*(C`our\*(C'\fR declaration.  In this
+it differs from \*(L"use vars\*(R", which is package scoped.)
+.Sp
+An \f(CW\*(C`our\*(C'\fR declaration declares a global variable that will be visible
+across its entire lexical scope, even across package boundaries.  The
+package in which the variable is entered is determined at the point
+of the declaration, not at the point of use.  This means the following
+behavior holds:
+.Sp
+.Vb 3
+\&    package Foo;
+\&    our $bar;           # declares $Foo::bar for rest of lexical scope
+\&    $bar = 20;
+.Ve
+.Sp
+.Vb 2
+\&    package Bar;
+\&    print $bar;         # prints 20
+.Ve
+.Sp
+Multiple \f(CW\*(C`our\*(C'\fR declarations in the same lexical scope are allowed
+if they are in different packages.  If they happened to be in the same
+package, Perl will emit warnings if you have asked for them.
+.Sp
+.Vb 4
+\&    use warnings;
+\&    package Foo;
+\&    our $bar;           # declares $Foo::bar for rest of lexical scope
+\&    $bar = 20;
+.Ve
+.Sp
+.Vb 3
+\&    package Bar;
+\&    our $bar = 30;      # declares $Bar::bar for rest of lexical scope
+\&    print $bar;         # prints 30
+.Ve
+.Sp
+.Vb 1
+\&    our $bar;           # emits warning
+.Ve
+.Sp
+An \f(CW\*(C`our\*(C'\fR declaration may also have a list of attributes associated
+with it.
+.Sp
+The exact semantics and interface of \s-1TYPE\s0 and \s-1ATTRS\s0 are still
+evolving.  \s-1TYPE\s0 is currently bound to the use of \f(CW\*(C`fields\*(C'\fR pragma,
+and attributes are handled using the \f(CW\*(C`attributes\*(C'\fR pragma, or starting
+from Perl 5.8.0 also via the \f(CW\*(C`Attribute::Handlers\*(C'\fR module.  See
+\&\*(L"Private Variables via \fImy()\fR\*(R" in perlsub for details, and fields,
+attributes, and Attribute::Handlers.
+.Sp
+The only currently recognized \f(CW\*(C`our()\*(C'\fR attribute is \f(CW\*(C`unique\*(C'\fR which
+indicates that a single copy of the global is to be used by all
+interpreters should the program happen to be running in a
+multi-interpreter environment. (The default behaviour would be for
+each interpreter to have its own copy of the global.)  Examples:
+.Sp
+.Vb 3
+\&    our @EXPORT : unique = qw(foo);
+\&    our %EXPORT_TAGS : unique = (bar => [qw(aa bb cc)]);
+\&    our $VERSION : unique = "1.00";
+.Ve
+.Sp
+Note that this attribute also has the effect of making the global
+readonly when the first new interpreter is cloned (for example,
+when the first new thread is created).
+.Sp
+Multi-interpreter environments can come to being either through the
+\&\fIfork()\fR emulation on Windows platforms, or by embedding perl in a
+multi-threaded application.  The \f(CW\*(C`unique\*(C'\fR attribute does nothing in
+all other environments.
+.IP "pack \s-1TEMPLATE\s0,LIST" 8
+.IX Item "pack TEMPLATE,LIST"
+Takes a \s-1LIST\s0 of values and converts it into a string using the rules
+given by the \s-1TEMPLATE\s0.  The resulting string is the concatenation of
+the converted values.  Typically, each converted value looks
+like its machine-level representation.  For example, on 32\-bit machines
+a converted integer may be represented by a sequence of 4 bytes.
+.Sp
+The \s-1TEMPLATE\s0 is a sequence of characters that give the order and type
+of values, as follows:
+.Sp
+.Vb 3
+\&    a   A string with arbitrary binary data, will be null padded.
+\&    A   A text (ASCII) string, will be space padded.
+\&    Z   A null terminated (ASCIZ) string, will be null padded.
+.Ve
+.Sp
+.Vb 4
+\&    b   A bit string (ascending bit order inside each byte, like vec()).
+\&    B   A bit string (descending bit order inside each byte).
+\&    h   A hex string (low nybble first).
+\&    H   A hex string (high nybble first).
+.Ve
+.Sp
+.Vb 2
+\&    c   A signed char value.
+\&    C   An unsigned char value.  Only does bytes.  See U for Unicode.
+.Ve
+.Sp
+.Vb 5
+\&    s   A signed short value.
+\&    S   An unsigned short value.
+\&          (This 'short' is _exactly_ 16 bits, which may differ from
+\&           what a local C compiler calls 'short'.  If you want
+\&           native-length shorts, use the '!' suffix.)
+.Ve
+.Sp
+.Vb 6
+\&    i   A signed integer value.
+\&    I   An unsigned integer value.
+\&          (This 'integer' is _at_least_ 32 bits wide.  Its exact
+\&           size depends on what a local C compiler calls 'int',
+\&           and may even be larger than the 'long' described in
+\&           the next item.)
+.Ve
+.Sp
+.Vb 5
+\&    l   A signed long value.
+\&    L   An unsigned long value.
+\&          (This 'long' is _exactly_ 32 bits, which may differ from
+\&           what a local C compiler calls 'long'.  If you want
+\&           native-length longs, use the '!' suffix.)
+.Ve
+.Sp
+.Vb 6
+\&    n   An unsigned short in "network" (big-endian) order.
+\&    N   An unsigned long in "network" (big-endian) order.
+\&    v   An unsigned short in "VAX" (little-endian) order.
+\&    V   An unsigned long in "VAX" (little-endian) order.
+\&          (These 'shorts' and 'longs' are _exactly_ 16 bits and
+\&           _exactly_ 32 bits, respectively.)
+.Ve
+.Sp
+.Vb 5
+\&    q   A signed quad (64-bit) value.
+\&    Q   An unsigned quad value.
+\&          (Quads are available only if your system supports 64-bit
+\&           integer values _and_ if Perl has been compiled to support those.
+\&           Causes a fatal error otherwise.)
+.Ve
+.Sp
+.Vb 2
+\&    j   A signed integer value (a Perl internal integer, IV).
+\&    J   An unsigned integer value (a Perl internal unsigned integer, UV).
+.Ve
+.Sp
+.Vb 2
+\&    f   A single-precision float in the native format.
+\&    d   A double-precision float in the native format.
+.Ve
+.Sp
+.Vb 6
+\&    F   A floating point value in the native native format
+\&           (a Perl internal floating point value, NV).
+\&    D   A long double-precision float in the native format.
+\&          (Long doubles are available only if your system supports long
+\&           double values _and_ if Perl has been compiled to support those.
+\&           Causes a fatal error otherwise.)
+.Ve
+.Sp
+.Vb 2
+\&    p   A pointer to a null-terminated string.
+\&    P   A pointer to a structure (fixed-length string).
+.Ve
+.Sp
+.Vb 3
+\&    u   A uuencoded string.
+\&    U   A Unicode character number.  Encodes to UTF-8 internally
+\&        (or UTF-EBCDIC in EBCDIC platforms).
+.Ve
+.Sp
+.Vb 4
+\&    w   A BER compressed integer.  Its bytes represent an unsigned
+\&        integer in base 128, most significant digit first, with as
+\&        few digits as possible.  Bit eight (the high bit) is set
+\&        on each byte except the last.
+.Ve
+.Sp
+.Vb 5
+\&    x   A null byte.
+\&    X   Back up a byte.
+\&    @   Null fill to absolute position, counted from the start of
+\&        the innermost ()-group.
+\&    (   Start of a ()-group.
+.Ve
+.Sp
+The following rules apply:
+.RS 8
+.IP "*" 8
+Each letter may optionally be followed by a number giving a repeat
+count.  With all types except \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`A\*(C'\fR, \f(CW\*(C`Z\*(C'\fR, \f(CW\*(C`b\*(C'\fR, \f(CW\*(C`B\*(C'\fR, \f(CW\*(C`h\*(C'\fR,
+\&\f(CW\*(C`H\*(C'\fR, \f(CW\*(C`@\*(C'\fR, \f(CW\*(C`x\*(C'\fR, \f(CW\*(C`X\*(C'\fR and \f(CW\*(C`P\*(C'\fR the pack function will gobble up that
+many values from the \s-1LIST\s0.  A \f(CW\*(C`*\*(C'\fR for the repeat count means to use
+however many items are left, except for \f(CW\*(C`@\*(C'\fR, \f(CW\*(C`x\*(C'\fR, \f(CW\*(C`X\*(C'\fR, where it is
+equivalent to \f(CW0\fR, and \f(CW\*(C`u\*(C'\fR, where it is equivalent to 1 (or 45, what
+is the same).  A numeric repeat count may optionally be enclosed in
+brackets, as in \f(CW\*(C`pack 'C[80]', @arr\*(C'\fR.
+.Sp
+One can replace the numeric repeat count by a template enclosed in brackets;
+then the packed length of this template in bytes is used as a count.
+For example, \f(CW\*(C`x[L]\*(C'\fR skips a long (it skips the number of bytes in a long);
+the template \f(CW\*(C`$t X[$t] $t\*(C'\fR \fIunpack()\fRs twice what \f(CW$t\fR unpacks.
+If the template in brackets contains alignment commands (such as \f(CW\*(C`x![d]\*(C'\fR),
+its packed length is calculated as if the start of the template has the maximal
+possible alignment.
+.Sp
+When used with \f(CW\*(C`Z\*(C'\fR, \f(CW\*(C`*\*(C'\fR results in the addition of a trailing null
+byte (so the packed result will be one longer than the byte \f(CW\*(C`length\*(C'\fR
+of the item).
+.Sp
+The repeat count for \f(CW\*(C`u\*(C'\fR is interpreted as the maximal number of bytes
+to encode per line of output, with 0 and 1 replaced by 45.
+.IP "*" 8
+The \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`A\*(C'\fR, and \f(CW\*(C`Z\*(C'\fR types gobble just one value, but pack it as a
+string of length count, padding with nulls or spaces as necessary.  When
+unpacking, \f(CW\*(C`A\*(C'\fR strips trailing spaces and nulls, \f(CW\*(C`Z\*(C'\fR strips everything
+after the first null, and \f(CW\*(C`a\*(C'\fR returns data verbatim.  When packing,
+\&\f(CW\*(C`a\*(C'\fR, and \f(CW\*(C`Z\*(C'\fR are equivalent.
+.Sp
+If the value-to-pack is too long, it is truncated.  If too long and an
+explicit count is provided, \f(CW\*(C`Z\*(C'\fR packs only \f(CW\*(C`$count\-1\*(C'\fR bytes, followed
+by a null byte.  Thus \f(CW\*(C`Z\*(C'\fR always packs a trailing null byte under
+all circumstances.
+.IP "*" 8
+Likewise, the \f(CW\*(C`b\*(C'\fR and \f(CW\*(C`B\*(C'\fR fields pack a string that many bits long.
+Each byte of the input field of \fIpack()\fR generates 1 bit of the result.
+Each result bit is based on the least-significant bit of the corresponding
+input byte, i.e., on \f(CW\*(C`ord($byte)%2\*(C'\fR.  In particular, bytes \f(CW"0"\fR and
+\&\f(CW"1"\fR generate bits 0 and 1, as do bytes \f(CW"\e0"\fR and \f(CW"\e1"\fR.
+.Sp
+Starting from the beginning of the input string of \fIpack()\fR, each 8\-tuple
+of bytes is converted to 1 byte of output.  With format \f(CW\*(C`b\*(C'\fR
+the first byte of the 8\-tuple determines the least-significant bit of a
+byte, and with format \f(CW\*(C`B\*(C'\fR it determines the most-significant bit of
+a byte.
+.Sp
+If the length of the input string is not exactly divisible by 8, the
+remainder is packed as if the input string were padded by null bytes
+at the end.  Similarly, during \fIunpack()\fRing the \*(L"extra\*(R" bits are ignored.
+.Sp
+If the input string of \fIpack()\fR is longer than needed, extra bytes are ignored.
+A \f(CW\*(C`*\*(C'\fR for the repeat count of \fIpack()\fR means to use all the bytes of
+the input field.  On \fIunpack()\fRing the bits are converted to a string
+of \f(CW"0"\fRs and \f(CW"1"\fRs.
+.IP "*" 8
+The \f(CW\*(C`h\*(C'\fR and \f(CW\*(C`H\*(C'\fR fields pack a string that many nybbles (4\-bit groups,
+representable as hexadecimal digits, 0\-9a\-f) long.
+.Sp
+Each byte of the input field of \fIpack()\fR generates 4 bits of the result.
+For non-alphabetical bytes the result is based on the 4 least-significant
+bits of the input byte, i.e., on \f(CW\*(C`ord($byte)%16\*(C'\fR.  In particular,
+bytes \f(CW"0"\fR and \f(CW"1"\fR generate nybbles 0 and 1, as do bytes
+\&\f(CW"\e0"\fR and \f(CW"\e1"\fR.  For bytes \f(CW"a".."f"\fR and \f(CW"A".."F"\fR the result
+is compatible with the usual hexadecimal digits, so that \f(CW"a"\fR and
+\&\f(CW"A"\fR both generate the nybble \f(CW\*(C`0xa==10\*(C'\fR.  The result for bytes
+\&\f(CW"g".."z"\fR and \f(CW"G".."Z"\fR is not well\-defined.
+.Sp
+Starting from the beginning of the input string of \fIpack()\fR, each pair
+of bytes is converted to 1 byte of output.  With format \f(CW\*(C`h\*(C'\fR the
+first byte of the pair determines the least-significant nybble of the
+output byte, and with format \f(CW\*(C`H\*(C'\fR it determines the most-significant
+nybble.
+.Sp
+If the length of the input string is not even, it behaves as if padded
+by a null byte at the end.  Similarly, during \fIunpack()\fRing the \*(L"extra\*(R"
+nybbles are ignored.
+.Sp
+If the input string of \fIpack()\fR is longer than needed, extra bytes are ignored.
+A \f(CW\*(C`*\*(C'\fR for the repeat count of \fIpack()\fR means to use all the bytes of
+the input field.  On \fIunpack()\fRing the bits are converted to a string
+of hexadecimal digits.
+.IP "*" 8
+The \f(CW\*(C`p\*(C'\fR type packs a pointer to a null-terminated string.  You are
+responsible for ensuring the string is not a temporary value (which can
+potentially get deallocated before you get around to using the packed result).
+The \f(CW\*(C`P\*(C'\fR type packs a pointer to a structure of the size indicated by the
+length.  A \s-1NULL\s0 pointer is created if the corresponding value for \f(CW\*(C`p\*(C'\fR or
+\&\f(CW\*(C`P\*(C'\fR is \f(CW\*(C`undef\*(C'\fR, similarly for \fIunpack()\fR.
+.IP "*" 8
+The \f(CW\*(C`/\*(C'\fR template character allows packing and unpacking of strings where
+the packed structure contains a byte count followed by the string itself.
+You write \fIlength-item\fR\f(CW\*(C`/\*(C'\fR\fIstring-item\fR.
+.Sp
+The \fIlength-item\fR can be any \f(CW\*(C`pack\*(C'\fR template letter, and describes
+how the length value is packed.  The ones likely to be of most use are
+integer-packing ones like \f(CW\*(C`n\*(C'\fR (for Java strings), \f(CW\*(C`w\*(C'\fR (for \s-1ASN\s0.1 or
+\&\s-1SNMP\s0) and \f(CW\*(C`N\*(C'\fR (for Sun \s-1XDR\s0).
+.Sp
+For \f(CW\*(C`pack\*(C'\fR, the \fIstring-item\fR must, at present, be \f(CW"A*"\fR, \f(CW"a*"\fR or
+\&\f(CW"Z*"\fR. For \f(CW\*(C`unpack\*(C'\fR the length of the string is obtained from the
+\&\fIlength-item\fR, but if you put in the '*' it will be ignored. For all other
+codes, \f(CW\*(C`unpack\*(C'\fR applies the length value to the next item, which must not
+have a repeat count.
+.Sp
+.Vb 3
+\&    unpack 'C/a', "\e04Gurusamy";        gives 'Guru'
+\&    unpack 'a3/A* A*', '007 Bond  J ';  gives (' Bond','J')
+\&    pack 'n/a* w/a*','hello,','world';  gives "\e000\e006hello,\e005world"
+.Ve
+.Sp
+The \fIlength-item\fR is not returned explicitly from \f(CW\*(C`unpack\*(C'\fR.
+.Sp
+Adding a count to the \fIlength-item\fR letter is unlikely to do anything
+useful, unless that letter is \f(CW\*(C`A\*(C'\fR, \f(CW\*(C`a\*(C'\fR or \f(CW\*(C`Z\*(C'\fR.  Packing with a
+\&\fIlength-item\fR of \f(CW\*(C`a\*(C'\fR or \f(CW\*(C`Z\*(C'\fR may introduce \f(CW"\e000"\fR characters,
+which Perl does not regard as legal in numeric strings.
+.IP "*" 8
+The integer types \f(CW\*(C`s\*(C'\fR, \f(CW\*(C`S\*(C'\fR, \f(CW\*(C`l\*(C'\fR, and \f(CW\*(C`L\*(C'\fR may be
+immediately followed by a \f(CW\*(C`!\*(C'\fR suffix to signify native shorts or
+longs\*(--as you can see from above for example a bare \f(CW\*(C`l\*(C'\fR does mean
+exactly 32 bits, the native \f(CW\*(C`long\*(C'\fR (as seen by the local C compiler)
+may be larger.  This is an issue mainly in 64\-bit platforms.  You can
+see whether using \f(CW\*(C`!\*(C'\fR makes any difference by
+.Sp
+.Vb 2
+\&        print length(pack("s")), " ", length(pack("s!")), "\en";
+\&        print length(pack("l")), " ", length(pack("l!")), "\en";
+.Ve
+.Sp
+\&\f(CW\*(C`i!\*(C'\fR and \f(CW\*(C`I!\*(C'\fR also work but only because of completeness;
+they are identical to \f(CW\*(C`i\*(C'\fR and \f(CW\*(C`I\*(C'\fR.
+.Sp
+The actual sizes (in bytes) of native shorts, ints, longs, and long
+longs on the platform where Perl was built are also available via
+Config:
+.Sp
+.Vb 5
+\&       use Config;
+\&       print $Config{shortsize},    "\en";
+\&       print $Config{intsize},      "\en";
+\&       print $Config{longsize},     "\en";
+\&       print $Config{longlongsize}, "\en";
+.Ve
+.Sp
+(The \f(CW$Config{longlongsize}\fR will be undefined if your system does
+not support long longs.)
+.IP "*" 8
+The integer formats \f(CW\*(C`s\*(C'\fR, \f(CW\*(C`S\*(C'\fR, \f(CW\*(C`i\*(C'\fR, \f(CW\*(C`I\*(C'\fR, \f(CW\*(C`l\*(C'\fR, \f(CW\*(C`L\*(C'\fR, \f(CW\*(C`j\*(C'\fR, and \f(CW\*(C`J\*(C'\fR
+are inherently non-portable between processors and operating systems
+because they obey the native byteorder and endianness.  For example a
+4\-byte integer 0x12345678 (305419896 decimal) would be ordered natively
+(arranged in and handled by the \s-1CPU\s0 registers) into bytes as
+.Sp
+.Vb 2
+\&        0x12 0x34 0x56 0x78     # big-endian
+\&        0x78 0x56 0x34 0x12     # little-endian
+.Ve
+.Sp
+Basically, the Intel and \s-1VAX\s0 CPUs are little\-endian, while everybody
+else, for example Motorola m68k/88k, \s-1PPC\s0, Sparc, \s-1HP\s0 \s-1PA\s0, Power, and
+Cray are big\-endian.  Alpha and \s-1MIPS\s0 can be either: Digital/Compaq
+used/uses them in little-endian mode; SGI/Cray uses them in big-endian
+mode.
+.Sp
+The names `big\-endian' and `little\-endian' are comic references to
+the classic \*(L"Gulliver's Travels\*(R" (via the paper \*(L"On Holy Wars and a
+Plea for Peace\*(R" by Danny Cohen, \s-1USC/ISI\s0 \s-1IEN\s0 137, April 1, 1980) and
+the egg-eating habits of the Lilliputians.
+.Sp
+Some systems may have even weirder byte orders such as
+.Sp
+.Vb 2
+\&        0x56 0x78 0x12 0x34
+\&        0x34 0x12 0x78 0x56
+.Ve
+.Sp
+You can see your system's preference with
+.Sp
+.Vb 2
+\&        print join(" ", map { sprintf "%#02x", $_ }
+\&                            unpack("C*",pack("L",0x12345678))), "\en";
+.Ve
+.Sp
+The byteorder on the platform where Perl was built is also available
+via Config:
+.Sp
+.Vb 2
+\&        use Config;
+\&        print $Config{byteorder}, "\en";
+.Ve
+.Sp
+Byteorders \f(CW'1234'\fR and \f(CW'12345678'\fR are little\-endian, \f(CW'4321'\fR
+and \f(CW'87654321'\fR are big\-endian.
+.Sp
+If you want portable packed integers use the formats \f(CW\*(C`n\*(C'\fR, \f(CW\*(C`N\*(C'\fR,
+\&\f(CW\*(C`v\*(C'\fR, and \f(CW\*(C`V\*(C'\fR, their byte endianness and size are known.
+See also perlport.
+.IP "*" 8
+Real numbers (floats and doubles) are in the native machine format only;
+due to the multiplicity of floating formats around, and the lack of a
+standard \*(L"network\*(R" representation, no facility for interchange has been
+made.  This means that packed floating point data written on one machine
+may not be readable on another \- even if both use \s-1IEEE\s0 floating point
+arithmetic (as the endian-ness of the memory representation is not part
+of the \s-1IEEE\s0 spec).  See also perlport.
+.Sp
+Note that Perl uses doubles internally for all numeric calculation, and
+converting from double into float and thence back to double again will
+lose precision (i.e., \f(CW\*(C`unpack("f", pack("f", $foo)\*(C'\fR) will not in general
+equal \f(CW$foo\fR).
+.IP "*" 8
+If the pattern begins with a \f(CW\*(C`U\*(C'\fR, the resulting string will be
+treated as UTF\-8\-encoded Unicode. You can force \s-1UTF\-8\s0 encoding on in a
+string with an initial \f(CW\*(C`U0\*(C'\fR, and the bytes that follow will be
+interpreted as Unicode characters. If you don't want this to happen,
+you can begin your pattern with \f(CW\*(C`C0\*(C'\fR (or anything else) to force Perl
+not to \s-1UTF\-8\s0 encode your string, and then follow this with a \f(CW\*(C`U*\*(C'\fR
+somewhere in your pattern.
+.IP "*" 8
+You must yourself do any alignment or padding by inserting for example
+enough \f(CW'x'\fRes while packing.  There is no way to \fIpack()\fR and \fIunpack()\fR
+could know where the bytes are going to or coming from.  Therefore
+\&\f(CW\*(C`pack\*(C'\fR (and \f(CW\*(C`unpack\*(C'\fR) handle their output and input as flat
+sequences of bytes.
+.IP "*" 8
+A ()\-group is a sub-TEMPLATE enclosed in parentheses.  A group may
+take a repeat count, both as postfix, and for \fIunpack()\fR also via the \f(CW\*(C`/\*(C'\fR
+template character. Within each repetition of a group, positioning with
+\&\f(CW\*(C`@\*(C'\fR starts again at 0. Therefore, the result of
+.Sp
+.Vb 1
+\&    pack( '@1A((@2A)@3A)', 'a', 'b', 'c' )
+.Ve
+.Sp
+is the string \*(L"\e0a\e0\e0bc\*(R".
+.IP "*" 8
+\&\f(CW\*(C`x\*(C'\fR and \f(CW\*(C`X\*(C'\fR accept \f(CW\*(C`!\*(C'\fR modifier.  In this case they act as
+alignment commands: they jump forward/back to the closest position
+aligned at a multiple of \f(CW\*(C`count\*(C'\fR bytes.  For example, to \fIpack()\fR or
+\&\fIunpack()\fR C's \f(CW\*(C`struct {char c; double d; char cc[2]}\*(C'\fR one may need to
+use the template \f(CW\*(C`C x![d] d C[2]\*(C'\fR; this assumes that doubles must be
+aligned on the double's size.
+.Sp
+For alignment commands \f(CW\*(C`count\*(C'\fR of 0 is equivalent to \f(CW\*(C`count\*(C'\fR of 1;
+both result in no\-ops.
+.IP "*" 8
+A comment in a \s-1TEMPLATE\s0 starts with \f(CW\*(C`#\*(C'\fR and goes to the end of line.
+White space may be used to separate pack codes from each other, but
+a \f(CW\*(C`!\*(C'\fR modifier and a repeat count must follow immediately.
+.IP "*" 8
+If \s-1TEMPLATE\s0 requires more arguments to \fIpack()\fR than actually given, \fIpack()\fR
+assumes additional \f(CW""\fR arguments.  If \s-1TEMPLATE\s0 requires less arguments
+to \fIpack()\fR than actually given, extra arguments are ignored.
+.RE
+.RS 8
+.Sp
+Examples:
+.Sp
+.Vb 6
+\&    $foo = pack("CCCC",65,66,67,68);
+\&    # foo eq "ABCD"
+\&    $foo = pack("C4",65,66,67,68);
+\&    # same thing
+\&    $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9);
+\&    # same thing with Unicode circled letters
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("ccxxcc",65,66,67,68);
+\&    # foo eq "AB\e0\e0CD"
+.Ve
+.Sp
+.Vb 4
+\&    # note: the above examples featuring "C" and "c" are true
+\&    # only on ASCII and ASCII-derived systems such as ISO Latin 1
+\&    # and UTF-8.  In EBCDIC the first example would be
+\&    # $foo = pack("CCCC",193,194,195,196);
+.Ve
+.Sp
+.Vb 3
+\&    $foo = pack("s2",1,2);
+\&    # "\e1\e0\e2\e0" on little-endian
+\&    # "\e0\e1\e0\e2" on big-endian
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("a4","abcd","x","y","z");
+\&    # "abcd"
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("aaaa","abcd","x","y","z");
+\&    # "axyz"
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("a14","abcdefg");
+\&    # "abcdefg\e0\e0\e0\e0\e0\e0\e0"
+.Ve
+.Sp
+.Vb 2
+\&    $foo = pack("i9pl", gmtime);
+\&    # a real struct tm (on my system anyway)
+.Ve
+.Sp
+.Vb 3
+\&    $utmp_template = "Z8 Z8 Z16 L";
+\&    $utmp = pack($utmp_template, @utmp1);
+\&    # a struct utmp (BSDish)
+.Ve
+.Sp
+.Vb 2
+\&    @utmp2 = unpack($utmp_template, $utmp);
+\&    # "@utmp1" eq "@utmp2"
+.Ve
+.Sp
+.Vb 3
+\&    sub bintodec {
+\&        unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
+\&    }
+.Ve
+.Sp
+.Vb 5
+\&    $foo = pack('sx2l', 12, 34);
+\&    # short 12, two zero bytes padding, long 34
+\&    $bar = pack('s at 4l', 12, 34);
+\&    # short 12, zero fill to position 4, long 34
+\&    # $foo eq $bar
+.Ve
+.Sp
+The same template may generally also be used in \fIunpack()\fR.
+.RE
+.IP "package \s-1NAMESPACE\s0" 8
+.IX Item "package NAMESPACE"
+.PD 0
+.IP "package" 8
+.IX Item "package"
+.PD
+Declares the compilation unit as being in the given namespace.  The scope
+of the package declaration is from the declaration itself through the end
+of the enclosing block, file, or eval (the same as the \f(CW\*(C`my\*(C'\fR operator).
+All further unqualified dynamic identifiers will be in this namespace.
+A package statement affects only dynamic variables\*(--including those
+you've used \f(CW\*(C`local\*(C'\fR on\*(--but \fInot\fR lexical variables, which are created
+with \f(CW\*(C`my\*(C'\fR.  Typically it would be the first declaration in a file to
+be included by the \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR operator.  You can switch into a
+package in more than one place; it merely influences which symbol table
+is used by the compiler for the rest of that block.  You can refer to
+variables and filehandles in other packages by prefixing the identifier
+with the package name and a double colon:  \f(CW$Package::Variable\fR.
+If the package name is null, the \f(CW\*(C`main\*(C'\fR package as assumed.  That is,
+\&\f(CW$::sail\fR is equivalent to \f(CW$main::sail\fR (as well as to \f(CW$main'sail\fR,
+still seen in older code).
+.Sp
+If \s-1NAMESPACE\s0 is omitted, then there is no current package, and all
+identifiers must be fully qualified or lexicals.  However, you are
+strongly advised not to make use of this feature. Its use can cause
+unexpected behaviour, even crashing some versions of Perl. It is
+deprecated, and will be removed from a future release.
+.Sp
+See \*(L"Packages\*(R" in perlmod for more information about packages, modules,
+and classes.  See perlsub for other scoping issues.
+.IP "pipe \s-1READHANDLE\s0,WRITEHANDLE" 8
+.IX Item "pipe READHANDLE,WRITEHANDLE"
+Opens a pair of connected pipes like the corresponding system call.
+Note that if you set up a loop of piped processes, deadlock can occur
+unless you are very careful.  In addition, note that Perl's pipes use
+\&\s-1IO\s0 buffering, so you may need to set \f(CW$|\fR to flush your \s-1WRITEHANDLE\s0
+after each command, depending on the application.
+.Sp
+See IPC::Open2, IPC::Open3, and \*(L"Bidirectional Communication\*(R" in perlipc
+for examples of such things.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will be set
+for the newly opened file descriptors as determined by the value of $^F.
+See \*(L"$^F\*(R" in perlvar.
+.IP "pop \s-1ARRAY\s0" 8
+.IX Item "pop ARRAY"
+.PD 0
+.IP "pop" 8
+.IX Item "pop"
+.PD
+Pops and returns the last value of the array, shortening the array by
+one element.  Has an effect similar to
+.Sp
+.Vb 1
+\&    $ARRAY[$#ARRAY--]
+.Ve
+.Sp
+If there are no elements in the array, returns the undefined value
+(although this may happen at other times as well).  If \s-1ARRAY\s0 is
+omitted, pops the \f(CW at ARGV\fR array in the main program, and the \f(CW at _\fR
+array in subroutines, just like \f(CW\*(C`shift\*(C'\fR.
+.IP "pos \s-1SCALAR\s0" 8
+.IX Item "pos SCALAR"
+.PD 0
+.IP "pos" 8
+.IX Item "pos"
+.PD
+Returns the offset of where the last \f(CW\*(C`m//g\*(C'\fR search left off for the variable
+in question (\f(CW$_\fR is used when the variable is not specified).  May be
+modified to change that offset.  Such modification will also influence
+the \f(CW\*(C`\eG\*(C'\fR zero-width assertion in regular expressions.  See perlre and
+perlop.
+.IP "print \s-1FILEHANDLE\s0 \s-1LIST\s0" 8
+.IX Item "print FILEHANDLE LIST"
+.PD 0
+.IP "print \s-1LIST\s0" 8
+.IX Item "print LIST"
+.IP "print" 8
+.IX Item "print"
+.PD
+Prints a string or a list of strings.  Returns true if successful.
+\&\s-1FILEHANDLE\s0 may be a scalar variable name, in which case the variable
+contains the name of or a reference to the filehandle, thus introducing
+one level of indirection.  (\s-1NOTE:\s0 If \s-1FILEHANDLE\s0 is a variable and
+the next token is a term, it may be misinterpreted as an operator
+unless you interpose a \f(CW\*(C`+\*(C'\fR or put parentheses around the arguments.)
+If \s-1FILEHANDLE\s0 is omitted, prints by default to standard output (or
+to the last selected output channel\*(--see \*(L"select\*(R").  If \s-1LIST\s0 is
+also omitted, prints \f(CW$_\fR to the currently selected output channel.
+To set the default output channel to something other than \s-1STDOUT\s0
+use the select operation.  The current value of \f(CW$,\fR (if any) is
+printed between each \s-1LIST\s0 item.  The current value of \f(CW\*(C`$\e\*(C'\fR (if
+any) is printed after the entire \s-1LIST\s0 has been printed.  Because
+print takes a \s-1LIST\s0, anything in the \s-1LIST\s0 is evaluated in list
+context, and any subroutine that you call will have one or more of
+its expressions evaluated in list context.  Also be careful not to
+follow the print keyword with a left parenthesis unless you want
+the corresponding right parenthesis to terminate the arguments to
+the print\*(--interpose a \f(CW\*(C`+\*(C'\fR or put parentheses around all the
+arguments.
+.Sp
+Note that if you're storing \s-1FILEHANDLES\s0 in an array or other expression,
+you will have to use a block returning its value instead:
+.Sp
+.Vb 2
+\&    print { $files[$i] } "stuff\en";
+\&    print { $OK ? STDOUT : STDERR } "stuff\en";
+.Ve
+.IP "printf \s-1FILEHANDLE\s0 \s-1FORMAT\s0, \s-1LIST\s0" 8
+.IX Item "printf FILEHANDLE FORMAT, LIST"
+.PD 0
+.IP "printf \s-1FORMAT\s0, \s-1LIST\s0" 8
+.IX Item "printf FORMAT, LIST"
+.PD
+Equivalent to \f(CW\*(C`print FILEHANDLE sprintf(FORMAT, LIST)\*(C'\fR, except that \f(CW\*(C`$\e\*(C'\fR
+(the output record separator) is not appended.  The first argument
+of the list will be interpreted as the \f(CW\*(C`printf\*(C'\fR format. See \f(CW\*(C`sprintf\*(C'\fR
+for an explanation of the format argument. If \f(CW\*(C`use locale\*(C'\fR is in effect,
+the character used for the decimal point in formatted real numbers is
+affected by the \s-1LC_NUMERIC\s0 locale.  See perllocale.
+.Sp
+Don't fall into the trap of using a \f(CW\*(C`printf\*(C'\fR when a simple
+\&\f(CW\*(C`print\*(C'\fR would do.  The \f(CW\*(C`print\*(C'\fR is more efficient and less
+error prone.
+.IP "prototype \s-1FUNCTION\s0" 8
+.IX Item "prototype FUNCTION"
+Returns the prototype of a function as a string (or \f(CW\*(C`undef\*(C'\fR if the
+function has no prototype).  \s-1FUNCTION\s0 is a reference to, or the name of,
+the function whose prototype you want to retrieve.
+.Sp
+If \s-1FUNCTION\s0 is a string starting with \f(CW\*(C`CORE::\*(C'\fR, the rest is taken as a
+name for Perl builtin.  If the builtin is not \fIoverridable\fR (such as
+\&\f(CW\*(C`qw//\*(C'\fR) or its arguments cannot be expressed by a prototype (such as
+\&\f(CW\*(C`system\*(C'\fR) returns \f(CW\*(C`undef\*(C'\fR because the builtin does not really behave
+like a Perl function.  Otherwise, the string describing the equivalent
+prototype is returned.
+.IP "push \s-1ARRAY\s0,LIST" 8
+.IX Item "push ARRAY,LIST"
+Treats \s-1ARRAY\s0 as a stack, and pushes the values of \s-1LIST\s0
+onto the end of \s-1ARRAY\s0.  The length of \s-1ARRAY\s0 increases by the length of
+\&\s-1LIST\s0.  Has the same effect as
+.Sp
+.Vb 3
+\&    for $value (LIST) {
+\&        $ARRAY[++$#ARRAY] = $value;
+\&    }
+.Ve
+.Sp
+but is more efficient.  Returns the new number of elements in the array.
+.IP "q/STRING/" 8
+.IX Item "q/STRING/"
+.PD 0
+.IP "qq/STRING/" 8
+.IX Item "qq/STRING/"
+.IP "qr/STRING/" 8
+.IX Item "qr/STRING/"
+.IP "qx/STRING/" 8
+.IX Item "qx/STRING/"
+.IP "qw/STRING/" 8
+.IX Item "qw/STRING/"
+.PD
+Generalized quotes.  See \*(L"Regexp Quote-Like Operators\*(R" in perlop.
+.IP "quotemeta \s-1EXPR\s0" 8
+.IX Item "quotemeta EXPR"
+.PD 0
+.IP "quotemeta" 8
+.IX Item "quotemeta"
+.PD
+Returns the value of \s-1EXPR\s0 with all non\-\*(L"word\*(R"
+characters backslashed.  (That is, all characters not matching
+\&\f(CW\*(C`/[A\-Za\-z_0\-9]/\*(C'\fR will be preceded by a backslash in the
+returned string, regardless of any locale settings.)
+This is the internal function implementing
+the \f(CW\*(C`\eQ\*(C'\fR escape in double-quoted strings.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "rand \s-1EXPR\s0" 8
+.IX Item "rand EXPR"
+.PD 0
+.IP "rand" 8
+.IX Item "rand"
+.PD
+Returns a random fractional number greater than or equal to \f(CW0\fR and less
+than the value of \s-1EXPR\s0.  (\s-1EXPR\s0 should be positive.)  If \s-1EXPR\s0 is
+omitted, the value \f(CW1\fR is used.  Currently \s-1EXPR\s0 with the value \f(CW0\fR is
+also special-cased as \f(CW1\fR \- this has not been documented before perl 5.8.0
+and is subject to change in future versions of perl.  Automatically calls
+\&\f(CW\*(C`srand\*(C'\fR unless \f(CW\*(C`srand\*(C'\fR has already been called.  See also \f(CW\*(C`srand\*(C'\fR.
+.Sp
+Apply \f(CW\*(C`int()\*(C'\fR to the value returned by \f(CW\*(C`rand()\*(C'\fR if you want random
+integers instead of random fractional numbers.  For example,
+.Sp
+.Vb 1
+\&    int(rand(10))
+.Ve
+.Sp
+returns a random integer between \f(CW0\fR and \f(CW9\fR, inclusive.
+.Sp
+(Note: If your rand function consistently returns numbers that are too
+large or too small, then your version of Perl was probably compiled
+with the wrong number of \s-1RANDBITS\s0.)
+.IP "read \s-1FILEHANDLE\s0,SCALAR,LENGTH,OFFSET" 8
+.IX Item "read FILEHANDLE,SCALAR,LENGTH,OFFSET"
+.PD 0
+.IP "read \s-1FILEHANDLE\s0,SCALAR,LENGTH" 8
+.IX Item "read FILEHANDLE,SCALAR,LENGTH"
+.PD
+Attempts to read \s-1LENGTH\s0 \fIcharacters\fR of data into variable \s-1SCALAR\s0
+from the specified \s-1FILEHANDLE\s0.  Returns the number of characters
+actually read, \f(CW0\fR at end of file, or undef if there was an error (in
+the latter case \f(CW$!\fR is also set).  \s-1SCALAR\s0 will be grown or shrunk 
+so that the last character actually read is the last character of the
+scalar after the read.
+.Sp
+An \s-1OFFSET\s0 may be specified to place the read data at some place in the
+string other than the beginning.  A negative \s-1OFFSET\s0 specifies
+placement at that many characters counting backwards from the end of
+the string.  A positive \s-1OFFSET\s0 greater than the length of \s-1SCALAR\s0
+results in the string being padded to the required size with \f(CW"\e0"\fR
+bytes before the result of the read is appended.
+.Sp
+The call is actually implemented in terms of either Perl's or system's
+\&\fIfread()\fR call.  To get a true \fIread\fR\|(2) system call, see \f(CW\*(C`sysread\*(C'\fR.
+.Sp
+Note the \fIcharacters\fR: depending on the status of the filehandle,
+either (8\-bit) bytes or characters are read.  By default all
+filehandles operate on bytes, but for example if the filehandle has
+been opened with the \f(CW\*(C`:utf8\*(C'\fR I/O layer (see \*(L"open\*(R", and the \f(CW\*(C`open\*(C'\fR
+pragma, open), the I/O will operate on \s-1UTF\-8\s0 encoded Unicode
+characters, not bytes.  Similarly for the \f(CW\*(C`:encoding\*(C'\fR pragma:
+in that case pretty much any characters can be read.
+.IP "readdir \s-1DIRHANDLE\s0" 8
+.IX Item "readdir DIRHANDLE"
+Returns the next directory entry for a directory opened by \f(CW\*(C`opendir\*(C'\fR.
+If used in list context, returns all the rest of the entries in the
+directory.  If there are no more entries, returns an undefined value in
+scalar context or a null list in list context.
+.Sp
+If you're planning to filetest the return values out of a \f(CW\*(C`readdir\*(C'\fR, you'd
+better prepend the directory in question.  Otherwise, because we didn't
+\&\f(CW\*(C`chdir\*(C'\fR there, it would have been testing the wrong file.
+.Sp
+.Vb 3
+\&    opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
+\&    @dots = grep { /^\e./ && -f "$some_dir/$_" } readdir(DIR);
+\&    closedir DIR;
+.Ve
+.IP "readline \s-1EXPR\s0" 8
+.IX Item "readline EXPR"
+Reads from the filehandle whose typeglob is contained in \s-1EXPR\s0.  In scalar
+context, each call reads and returns the next line, until end-of-file is
+reached, whereupon the subsequent call returns undef.  In list context,
+reads until end-of-file is reached and returns a list of lines.  Note that
+the notion of \*(L"line\*(R" used here is however you may have defined it
+with \f(CW$/\fR or \f(CW$INPUT_RECORD_SEPARATOR\fR).  See \*(L"$/\*(R" in perlvar.
+.Sp
+When \f(CW$/\fR is set to \f(CW\*(C`undef\*(C'\fR, when \fIreadline()\fR is in scalar
+context (i.e. file slurp mode), and when an empty file is read, it
+returns \f(CW''\fR the first time, followed by \f(CW\*(C`undef\*(C'\fR subsequently.
+.Sp
+This is the internal function implementing the \f(CW\*(C`<EXPR>\*(C'\fR
+operator, but you can use it directly.  The \f(CW\*(C`<EXPR>\*(C'\fR
+operator is discussed in more detail in \*(L"I/O Operators\*(R" in perlop.
+.Sp
+.Vb 2
+\&    $line = <STDIN>;
+\&    $line = readline(*STDIN);           # same thing
+.Ve
+.Sp
+If readline encounters an operating system error, \f(CW$!\fR will be set with the
+corresponding error message.  It can be helpful to check \f(CW$!\fR when you are
+reading from filehandles you don't trust, such as a tty or a socket.  The
+following example uses the operator form of \f(CW\*(C`readline\*(C'\fR, and takes the necessary
+steps to ensure that \f(CW\*(C`readline\*(C'\fR was successful.
+.Sp
+.Vb 8
+\&    for (;;) {
+\&        undef $!;
+\&        unless (defined( $line = <> )) {
+\&            die $! if $!;
+\&            last; # reached EOF
+\&        }
+\&        # ...
+\&    }
+.Ve
+.IP "readlink \s-1EXPR\s0" 8
+.IX Item "readlink EXPR"
+.PD 0
+.IP "readlink" 8
+.IX Item "readlink"
+.PD
+Returns the value of a symbolic link, if symbolic links are
+implemented.  If not, gives a fatal error.  If there is some system
+error, returns the undefined value and sets \f(CW$!\fR (errno).  If \s-1EXPR\s0 is
+omitted, uses \f(CW$_\fR.
+.IP "readpipe \s-1EXPR\s0" 8
+.IX Item "readpipe EXPR"
+\&\s-1EXPR\s0 is executed as a system command.
+The collected standard output of the command is returned.
+In scalar context, it comes back as a single (potentially
+multi\-line) string.  In list context, returns a list of lines
+(however you've defined lines with \f(CW$/\fR or \f(CW$INPUT_RECORD_SEPARATOR\fR).
+This is the internal function implementing the \f(CW\*(C`qx/EXPR/\*(C'\fR
+operator, but you can use it directly.  The \f(CW\*(C`qx/EXPR/\*(C'\fR
+operator is discussed in more detail in \*(L"I/O Operators\*(R" in perlop.
+.IP "recv \s-1SOCKET\s0,SCALAR,LENGTH,FLAGS" 8
+.IX Item "recv SOCKET,SCALAR,LENGTH,FLAGS"
+Receives a message on a socket.  Attempts to receive \s-1LENGTH\s0 characters
+of data into variable \s-1SCALAR\s0 from the specified \s-1SOCKET\s0 filehandle.
+\&\s-1SCALAR\s0 will be grown or shrunk to the length actually read.  Takes the
+same flags as the system call of the same name.  Returns the address
+of the sender if \s-1SOCKET\s0's protocol supports this; returns an empty
+string otherwise.  If there's an error, returns the undefined value.
+This call is actually implemented in terms of \fIrecvfrom\fR\|(2) system call.
+See \*(L"\s-1UDP:\s0 Message Passing\*(R" in perlipc for examples.
+.Sp
+Note the \fIcharacters\fR: depending on the status of the socket, either
+(8\-bit) bytes or characters are received.  By default all sockets
+operate on bytes, but for example if the socket has been changed using
+\&\fIbinmode()\fR to operate with the \f(CW\*(C`:utf8\*(C'\fR I/O layer (see the \f(CW\*(C`open\*(C'\fR
+pragma, open), the I/O will operate on \s-1UTF\-8\s0 encoded Unicode
+characters, not bytes.  Similarly for the \f(CW\*(C`:encoding\*(C'\fR pragma:
+in that case pretty much any characters can be read.
+.IP "redo \s-1LABEL\s0" 8
+.IX Item "redo LABEL"
+.PD 0
+.IP "redo" 8
+.IX Item "redo"
+.PD
+The \f(CW\*(C`redo\*(C'\fR command restarts the loop block without evaluating the
+conditional again.  The \f(CW\*(C`continue\*(C'\fR block, if any, is not executed.  If
+the \s-1LABEL\s0 is omitted, the command refers to the innermost enclosing
+loop.  This command is normally used by programs that want to lie to
+themselves about what was just input:
+.Sp
+.Vb 16
+\&    # a simpleminded Pascal comment stripper
+\&    # (warning: assumes no { or } in strings)
+\&    LINE: while (<STDIN>) {
+\&        while (s|({.*}.*){.*}|$1 |) {}
+\&        s|{.*}| |;
+\&        if (s|{.*| |) {
+\&            $front = $_;
+\&            while (<STDIN>) {
+\&                if (/}/) {      # end of comment?
+\&                    s|^|$front\e{|;
+\&                    redo LINE;
+\&                }
+\&            }
+\&        }
+\&        print;
+\&    }
+.Ve
+.Sp
+\&\f(CW\*(C`redo\*(C'\fR cannot be used to retry a block which returns a value such as
+\&\f(CW\*(C`eval {}\*(C'\fR, \f(CW\*(C`sub {}\*(C'\fR or \f(CW\*(C`do {}\*(C'\fR, and should not be used to exit
+a \fIgrep()\fR or \fImap()\fR operation.
+.Sp
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus \f(CW\*(C`redo\*(C'\fR inside such a block will effectively
+turn it into a looping construct.
+.Sp
+See also \*(L"continue\*(R" for an illustration of how \f(CW\*(C`last\*(C'\fR, \f(CW\*(C`next\*(C'\fR, and
+\&\f(CW\*(C`redo\*(C'\fR work.
+.IP "ref \s-1EXPR\s0" 8
+.IX Item "ref EXPR"
+.PD 0
+.IP "ref" 8
+.IX Item "ref"
+.PD
+Returns a true value if \s-1EXPR\s0 is a reference, false otherwise.  If \s-1EXPR\s0
+is not specified, \f(CW$_\fR will be used.  The value returned depends on the
+type of thing the reference is a reference to.
+Builtin types include:
+.Sp
+.Vb 7
+\&    SCALAR
+\&    ARRAY
+\&    HASH
+\&    CODE
+\&    REF
+\&    GLOB
+\&    LVALUE
+.Ve
+.Sp
+If the referenced object has been blessed into a package, then that package
+name is returned instead.  You can think of \f(CW\*(C`ref\*(C'\fR as a \f(CW\*(C`typeof\*(C'\fR operator.
+.Sp
+.Vb 9
+\&    if (ref($r) eq "HASH") {
+\&        print "r is a reference to a hash.\en";
+\&    }
+\&    unless (ref($r)) {
+\&        print "r is not a reference at all.\en";
+\&    }
+\&    if (UNIVERSAL::isa($r, "HASH")) {  # for subclassing
+\&        print "r is a reference to something that isa hash.\en";
+\&    }
+.Ve
+.Sp
+See also perlref.
+.IP "rename \s-1OLDNAME\s0,NEWNAME" 8
+.IX Item "rename OLDNAME,NEWNAME"
+Changes the name of a file; an existing file \s-1NEWNAME\s0 will be
+clobbered.  Returns true for success, false otherwise.
+.Sp
+Behavior of this function varies wildly depending on your system
+implementation.  For example, it will usually not work across file system
+boundaries, even though the system \fImv\fR command sometimes compensates
+for this.  Other restrictions include whether it works on directories,
+open files, or pre-existing files.  Check perlport and either the
+\&\fIrename\fR\|(2) manpage or equivalent system documentation for details.
+.IP "require \s-1VERSION\s0" 8
+.IX Item "require VERSION"
+.PD 0
+.IP "require \s-1EXPR\s0" 8
+.IX Item "require EXPR"
+.IP "require" 8
+.IX Item "require"
+.PD
+Demands a version of Perl specified by \s-1VERSION\s0, or demands some semantics
+specified by \s-1EXPR\s0 or by \f(CW$_\fR if \s-1EXPR\s0 is not supplied.
+.Sp
+\&\s-1VERSION\s0 may be either a numeric argument such as 5.006, which will be
+compared to \f(CW$]\fR, or a literal of the form v5.6.1, which will be compared
+to \f(CW$^V\fR (aka \f(CW$PERL_VERSION\fR).  A fatal error is produced at run time if
+\&\s-1VERSION\s0 is greater than the version of the current Perl interpreter.
+Compare with \*(L"use\*(R", which can do a similar check at compile time.
+.Sp
+Specifying \s-1VERSION\s0 as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl which do not support this syntax.  The equivalent numeric
+version should be used instead.
+.Sp
+.Vb 3
+\&    require v5.6.1;     # run time version check
+\&    require 5.6.1;      # ditto
+\&    require 5.006_001;  # ditto; preferred for backwards compatibility
+.Ve
+.Sp
+Otherwise, demands that a library file be included if it hasn't already
+been included.  The file is included via the do-FILE mechanism, which is
+essentially just a variety of \f(CW\*(C`eval\*(C'\fR.  Has semantics similar to the following
+subroutine:
+.Sp
+.Vb 20
+\&    sub require {
+\&        my($filename) = @_;
+\&        return 1 if $INC{$filename};
+\&        my($realfilename,$result);
+\&        ITER: {
+\&            foreach $prefix (@INC) {
+\&                $realfilename = "$prefix/$filename";
+\&                if (-f $realfilename) {
+\&                    $INC{$filename} = $realfilename;
+\&                    $result = do $realfilename;
+\&                    last ITER;
+\&                }
+\&            }
+\&            die "Can't find $filename in \e at INC";
+\&        }
+\&        delete $INC{$filename} if $@ || !$result;
+\&        die $@ if $@;
+\&        die "$filename did not return true value" unless $result;
+\&        return $result;
+\&    }
+.Ve
+.Sp
+Note that the file will not be included twice under the same specified
+name.  The file must return true as the last statement to indicate
+successful execution of any initialization code, so it's customary to
+end such a file with \f(CW\*(C`1;\*(C'\fR unless you're sure it'll return true
+otherwise.  But it's better just to put the \f(CW\*(C`1;\*(C'\fR, in case you add more
+statements.
+.Sp
+If \s-1EXPR\s0 is a bareword, the require assumes a "\fI.pm\fR\*(L" extension and
+replaces \*(R"\fI::\fR\*(L" with \*(R"\fI/\fR" in the filename for you,
+to make it easy to load standard modules.  This form of loading of
+modules does not risk altering your namespace.
+.Sp
+In other words, if you try this:
+.Sp
+.Vb 1
+\&        require Foo::Bar;    # a splendid bareword
+.Ve
+.Sp
+The require function will actually look for the "\fIFoo/Bar.pm\fR" file in the
+directories specified in the \f(CW at INC\fR array.
+.Sp
+But if you try this:
+.Sp
+.Vb 4
+\&        $class = 'Foo::Bar';
+\&        require $class;      # $class is not a bareword
+\&    #or
+\&        require "Foo::Bar";  # not a bareword because of the ""
+.Ve
+.Sp
+The require function will look for the "\fIFoo::Bar\fR\*(L" file in the \f(CW at INC\fR array and
+will complain about not finding \*(R"\fIFoo::Bar\fR" there.  In this case you can do:
+.Sp
+.Vb 1
+\&        eval "require $class";
+.Ve
+.Sp
+Now that you understand how \f(CW\*(C`require\*(C'\fR looks for files in the case of
+a bareword argument, there is a little extra functionality going on
+behind the scenes.  Before \f(CW\*(C`require\*(C'\fR looks for a "\fI.pm\fR\*(L" extension,
+it will first look for a filename with a \*(R"\fI.pmc\fR" extension.  A file
+with this extension is assumed to be Perl bytecode generated by
+B::Bytecode.  If this file is found, and it's modification
+time is newer than a coinciding "\fI.pm\fR\*(L" non-compiled file, it will be
+loaded in place of that non-compiled file ending in a \*(R"\fI.pm\fR" extension.
+.Sp
+You can also insert hooks into the import facility, by putting directly
+Perl code into the \f(CW at INC\fR array.  There are three forms of hooks: subroutine
+references, array references and blessed objects.
+.Sp
+Subroutine references are the simplest case.  When the inclusion system
+walks through \f(CW at INC\fR and encounters a subroutine, this subroutine gets
+called with two parameters, the first being a reference to itself, and the
+second the name of the file to be included (e.g. "\fIFoo/Bar.pm\fR").  The
+subroutine should return \f(CW\*(C`undef\*(C'\fR or a filehandle, from which the file to
+include will be read.  If \f(CW\*(C`undef\*(C'\fR is returned, \f(CW\*(C`require\*(C'\fR will look at
+the remaining elements of \f(CW at INC\fR.
+.Sp
+If the hook is an array reference, its first element must be a subroutine
+reference.  This subroutine is called as above, but the first parameter is
+the array reference.  This enables to pass indirectly some arguments to
+the subroutine.
+.Sp
+In other words, you can write:
+.Sp
+.Vb 5
+\&    push @INC, \e&my_sub;
+\&    sub my_sub {
+\&        my ($coderef, $filename) = @_;  # $coderef is \e&my_sub
+\&        ...
+\&    }
+.Ve
+.Sp
+or:
+.Sp
+.Vb 7
+\&    push @INC, [ \e&my_sub, $x, $y, ... ];
+\&    sub my_sub {
+\&        my ($arrayref, $filename) = @_;
+\&        # Retrieve $x, $y, ...
+\&        my @parameters = @$arrayref[1..$#$arrayref];
+\&        ...
+\&    }
+.Ve
+.Sp
+If the hook is an object, it must provide an \s-1INC\s0 method, that will be
+called as above, the first parameter being the object itself.  (Note that
+you must fully qualify the sub's name, as it is always forced into package
+\&\f(CW\*(C`main\*(C'\fR.)  Here is a typical code layout:
+.Sp
+.Vb 7
+\&    # In Foo.pm
+\&    package Foo;
+\&    sub new { ... }
+\&    sub Foo::INC {
+\&        my ($self, $filename) = @_;
+\&        ...
+\&    }
+.Ve
+.Sp
+.Vb 2
+\&    # In the main program
+\&    push @INC, new Foo(...);
+.Ve
+.Sp
+Note that these hooks are also permitted to set the \f(CW%INC\fR entry
+corresponding to the files they have loaded. See \*(L"%INC\*(R" in perlvar.
+.Sp
+For a yet-more-powerful import facility, see \*(L"use\*(R" and perlmod.
+.IP "reset \s-1EXPR\s0" 8
+.IX Item "reset EXPR"
+.PD 0
+.IP "reset" 8
+.IX Item "reset"
+.PD
+Generally used in a \f(CW\*(C`continue\*(C'\fR block at the end of a loop to clear
+variables and reset \f(CW\*(C`??\*(C'\fR searches so that they work again.  The
+expression is interpreted as a list of single characters (hyphens
+allowed for ranges).  All variables and arrays beginning with one of
+those letters are reset to their pristine state.  If the expression is
+omitted, one-match searches (\f(CW\*(C`?pattern?\*(C'\fR) are reset to match again.  Resets
+only variables or searches in the current package.  Always returns
+1.  Examples:
+.Sp
+.Vb 3
+\&    reset 'X';          # reset all X variables
+\&    reset 'a-z';        # reset lower case variables
+\&    reset;              # just reset ?one-time? searches
+.Ve
+.Sp
+Resetting \f(CW"A\-Z"\fR is not recommended because you'll wipe out your
+\&\f(CW at ARGV\fR and \f(CW at INC\fR arrays and your \f(CW%ENV\fR hash.  Resets only package
+variables\*(--lexical variables are unaffected, but they clean themselves
+up on scope exit anyway, so you'll probably want to use them instead.
+See \*(L"my\*(R".
+.IP "return \s-1EXPR\s0" 8
+.IX Item "return EXPR"
+.PD 0
+.IP "return" 8
+.IX Item "return"
+.PD
+Returns from a subroutine, \f(CW\*(C`eval\*(C'\fR, or \f(CW\*(C`do FILE\*(C'\fR with the value
+given in \s-1EXPR\s0.  Evaluation of \s-1EXPR\s0 may be in list, scalar, or void
+context, depending on how the return value will be used, and the context
+may vary from one execution to the next (see \f(CW\*(C`wantarray\*(C'\fR).  If no \s-1EXPR\s0
+is given, returns an empty list in list context, the undefined value in
+scalar context, and (of course) nothing at all in a void context.
+.Sp
+(Note that in the absence of an explicit \f(CW\*(C`return\*(C'\fR, a subroutine, eval,
+or do \s-1FILE\s0 will automatically return the value of the last expression
+evaluated.)
+.IP "reverse \s-1LIST\s0" 8
+.IX Item "reverse LIST"
+In list context, returns a list value consisting of the elements
+of \s-1LIST\s0 in the opposite order.  In scalar context, concatenates the
+elements of \s-1LIST\s0 and returns a string value with all characters
+in the opposite order.
+.Sp
+.Vb 1
+\&    print reverse <>;           # line tac, last line first
+.Ve
+.Sp
+.Vb 2
+\&    undef $/;                   # for efficiency of <>
+\&    print scalar reverse <>;    # character tac, last line tsrif
+.Ve
+.Sp
+This operator is also handy for inverting a hash, although there are some
+caveats.  If a value is duplicated in the original hash, only one of those
+can be represented as a key in the inverted hash.  Also, this has to
+unwind one hash and build a whole new one, which may take some time
+on a large hash, such as from a \s-1DBM\s0 file.
+.Sp
+.Vb 1
+\&    %by_name = reverse %by_address;     # Invert the hash
+.Ve
+.IP "rewinddir \s-1DIRHANDLE\s0" 8
+.IX Item "rewinddir DIRHANDLE"
+Sets the current position to the beginning of the directory for the
+\&\f(CW\*(C`readdir\*(C'\fR routine on \s-1DIRHANDLE\s0.
+.IP "rindex \s-1STR\s0,SUBSTR,POSITION" 8
+.IX Item "rindex STR,SUBSTR,POSITION"
+.PD 0
+.IP "rindex \s-1STR\s0,SUBSTR" 8
+.IX Item "rindex STR,SUBSTR"
+.PD
+Works just like \fIindex()\fR except that it returns the position of the \s-1LAST\s0
+occurrence of \s-1SUBSTR\s0 in \s-1STR\s0.  If \s-1POSITION\s0 is specified, returns the
+last occurrence at or before that position.
+.IP "rmdir \s-1FILENAME\s0" 8
+.IX Item "rmdir FILENAME"
+.PD 0
+.IP "rmdir" 8
+.IX Item "rmdir"
+.PD
+Deletes the directory specified by \s-1FILENAME\s0 if that directory is
+empty.  If it succeeds it returns true, otherwise it returns false and
+sets \f(CW$!\fR (errno).  If \s-1FILENAME\s0 is omitted, uses \f(CW$_\fR.
+.IP "s///" 8
+.IX Item "s///"
+The substitution operator.  See perlop.
+.IP "scalar \s-1EXPR\s0" 8
+.IX Item "scalar EXPR"
+Forces \s-1EXPR\s0 to be interpreted in scalar context and returns the value
+of \s-1EXPR\s0.
+.Sp
+.Vb 1
+\&    @counts = ( scalar @a, scalar @b, scalar @c );
+.Ve
+.Sp
+There is no equivalent operator to force an expression to
+be interpolated in list context because in practice, this is never
+needed.  If you really wanted to do so, however, you could use
+the construction \f(CW\*(C`@{[ (some expression) ]}\*(C'\fR, but usually a simple
+\&\f(CW\*(C`(some expression)\*(C'\fR suffices.
+.Sp
+Because \f(CW\*(C`scalar\*(C'\fR is unary operator, if you accidentally use for \s-1EXPR\s0 a
+parenthesized list, this behaves as a scalar comma expression, evaluating
+all but the last element in void context and returning the final element
+evaluated in scalar context.  This is seldom what you want.
+.Sp
+The following single statement:
+.Sp
+.Vb 1
+\&        print uc(scalar(&foo,$bar)),$baz;
+.Ve
+.Sp
+is the moral equivalent of these two:
+.Sp
+.Vb 2
+\&        &foo;
+\&        print(uc($bar),$baz);
+.Ve
+.Sp
+See perlop for more details on unary operators and the comma operator.
+.IP "seek \s-1FILEHANDLE\s0,POSITION,WHENCE" 8
+.IX Item "seek FILEHANDLE,POSITION,WHENCE"
+Sets \s-1FILEHANDLE\s0's position, just like the \f(CW\*(C`fseek\*(C'\fR call of \f(CW\*(C`stdio\*(C'\fR.
+\&\s-1FILEHANDLE\s0 may be an expression whose value gives the name of the
+filehandle.  The values for \s-1WHENCE\s0 are \f(CW0\fR to set the new position
+\&\fIin bytes\fR to \s-1POSITION\s0, \f(CW1\fR to set it to the current position plus
+\&\s-1POSITION\s0, and \f(CW2\fR to set it to \s-1EOF\s0 plus \s-1POSITION\s0 (typically
+negative).  For \s-1WHENCE\s0 you may use the constants \f(CW\*(C`SEEK_SET\*(C'\fR,
+\&\f(CW\*(C`SEEK_CUR\*(C'\fR, and \f(CW\*(C`SEEK_END\*(C'\fR (start of the file, current position, end
+of the file) from the Fcntl module.  Returns \f(CW1\fR upon success, \f(CW0\fR
+otherwise.
+.Sp
+Note the \fIin bytes\fR: even if the filehandle has been set to
+operate on characters (for example by using the \f(CW\*(C`:utf8\*(C'\fR open
+layer), \fItell()\fR will return byte offsets, not character offsets
+(because implementing that would render \fIseek()\fR and \fItell()\fR rather slow).
+.Sp
+If you want to position file for \f(CW\*(C`sysread\*(C'\fR or \f(CW\*(C`syswrite\*(C'\fR, don't use
+\&\f(CW\*(C`seek\*(C'\fR\-\-buffering makes its effect on the file's system position
+unpredictable and non\-portable.  Use \f(CW\*(C`sysseek\*(C'\fR instead.
+.Sp
+Due to the rules and rigors of \s-1ANSI\s0 C, on some systems you have to do a
+seek whenever you switch between reading and writing.  Amongst other
+things, this may have the effect of calling stdio's \fIclearerr\fR\|(3).
+A \s-1WHENCE\s0 of \f(CW1\fR (\f(CW\*(C`SEEK_CUR\*(C'\fR) is useful for not moving the file position:
+.Sp
+.Vb 1
+\&    seek(TEST,0,1);
+.Ve
+.Sp
+This is also useful for applications emulating \f(CW\*(C`tail \-f\*(C'\fR.  Once you hit
+\&\s-1EOF\s0 on your read, and then sleep for a while, you might have to stick in a
+\&\fIseek()\fR to reset things.  The \f(CW\*(C`seek\*(C'\fR doesn't change the current position,
+but it \fIdoes\fR clear the end-of-file condition on the handle, so that the
+next \f(CW\*(C`<FILE>\*(C'\fR makes Perl try again to read something.  We hope.
+.Sp
+If that doesn't work (some \s-1IO\s0 implementations are particularly
+cantankerous), then you may need something more like this:
+.Sp
+.Vb 8
+\&    for (;;) {
+\&        for ($curpos = tell(FILE); $_ = <FILE>;
+\&             $curpos = tell(FILE)) {
+\&            # search for some stuff and put it into files
+\&        }
+\&        sleep($for_a_while);
+\&        seek(FILE, $curpos, 0);
+\&    }
+.Ve
+.IP "seekdir \s-1DIRHANDLE\s0,POS" 8
+.IX Item "seekdir DIRHANDLE,POS"
+Sets the current position for the \f(CW\*(C`readdir\*(C'\fR routine on \s-1DIRHANDLE\s0.  \s-1POS\s0
+must be a value returned by \f(CW\*(C`telldir\*(C'\fR.  Has the same caveats about
+possible directory compaction as the corresponding system library
+routine.
+.IP "select \s-1FILEHANDLE\s0" 8
+.IX Item "select FILEHANDLE"
+.PD 0
+.IP "select" 8
+.IX Item "select"
+.PD
+Returns the currently selected filehandle.  Sets the current default
+filehandle for output, if \s-1FILEHANDLE\s0 is supplied.  This has two
+effects: first, a \f(CW\*(C`write\*(C'\fR or a \f(CW\*(C`print\*(C'\fR without a filehandle will
+default to this \s-1FILEHANDLE\s0.  Second, references to variables related to
+output will refer to this output channel.  For example, if you have to
+set the top of form format for more than one output channel, you might
+do the following:
+.Sp
+.Vb 4
+\&    select(REPORT1);
+\&    $^ = 'report1_top';
+\&    select(REPORT2);
+\&    $^ = 'report2_top';
+.Ve
+.Sp
+\&\s-1FILEHANDLE\s0 may be an expression whose value gives the name of the
+actual filehandle.  Thus:
+.Sp
+.Vb 1
+\&    $oldfh = select(STDERR); $| = 1; select($oldfh);
+.Ve
+.Sp
+Some programmers may prefer to think of filehandles as objects with
+methods, preferring to write the last example as:
+.Sp
+.Vb 2
+\&    use IO::Handle;
+\&    STDERR->autoflush(1);
+.Ve
+.IP "select \s-1RBITS\s0,WBITS,EBITS,TIMEOUT" 8
+.IX Item "select RBITS,WBITS,EBITS,TIMEOUT"
+This calls the \fIselect\fR\|(2) system call with the bit masks specified, which
+can be constructed using \f(CW\*(C`fileno\*(C'\fR and \f(CW\*(C`vec\*(C'\fR, along these lines:
+.Sp
+.Vb 4
+\&    $rin = $win = $ein = '';
+\&    vec($rin,fileno(STDIN),1) = 1;
+\&    vec($win,fileno(STDOUT),1) = 1;
+\&    $ein = $rin | $win;
+.Ve
+.Sp
+If you want to select on many filehandles you might wish to write a
+subroutine:
+.Sp
+.Vb 9
+\&    sub fhbits {
+\&        my(@fhlist) = split(' ',$_[0]);
+\&        my($bits);
+\&        for (@fhlist) {
+\&            vec($bits,fileno($_),1) = 1;
+\&        }
+\&        $bits;
+\&    }
+\&    $rin = fhbits('STDIN TTY SOCK');
+.Ve
+.Sp
+The usual idiom is:
+.Sp
+.Vb 2
+\&    ($nfound,$timeleft) =
+\&      select($rout=$rin, $wout=$win, $eout=$ein, $timeout);
+.Ve
+.Sp
+or to block until something becomes ready just do this
+.Sp
+.Vb 1
+\&    $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
+.Ve
+.Sp
+Most systems do not bother to return anything useful in \f(CW$timeleft\fR, so
+calling \fIselect()\fR in scalar context just returns \f(CW$nfound\fR.
+.Sp
+Any of the bit masks can also be undef.  The timeout, if specified, is
+in seconds, which may be fractional.  Note: not all implementations are
+capable of returning the \f(CW$timeleft\fR.  If not, they always return
+\&\f(CW$timeleft\fR equal to the supplied \f(CW$timeout\fR.
+.Sp
+You can effect a sleep of 250 milliseconds this way:
+.Sp
+.Vb 1
+\&    select(undef, undef, undef, 0.25);
+.Ve
+.Sp
+Note that whether \f(CW\*(C`select\*(C'\fR gets restarted after signals (say, \s-1SIGALRM\s0)
+is implementation\-dependent.
+.Sp
+\&\fB\s-1WARNING\s0\fR: One should not attempt to mix buffered I/O (like \f(CW\*(C`read\*(C'\fR
+or <\s-1FH\s0>) with \f(CW\*(C`select\*(C'\fR, except as permitted by \s-1POSIX\s0, and even
+then only on \s-1POSIX\s0 systems.  You have to use \f(CW\*(C`sysread\*(C'\fR instead.
+.IP "semctl \s-1ID\s0,SEMNUM,CMD,ARG" 8
+.IX Item "semctl ID,SEMNUM,CMD,ARG"
+Calls the System V \s-1IPC\s0 function \f(CW\*(C`semctl\*(C'\fR.  You'll probably have to say
+.Sp
+.Vb 1
+\&    use IPC::SysV;
+.Ve
+.Sp
+first to get the correct constant definitions.  If \s-1CMD\s0 is \s-1IPC_STAT\s0 or
+\&\s-1GETALL\s0, then \s-1ARG\s0 must be a variable which will hold the returned
+semid_ds structure or semaphore value array.  Returns like \f(CW\*(C`ioctl\*(C'\fR:
+the undefined value for error, "\f(CW\*(C`0 but true\*(C'\fR" for zero, or the actual
+return value otherwise.  The \s-1ARG\s0 must consist of a vector of native
+short integers, which may be created with \f(CW\*(C`pack("s!",(0)x$nsem)\*(C'\fR.
+See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, \f(CW\*(C`IPC::Semaphore\*(C'\fR
+documentation.
+.IP "semget \s-1KEY\s0,NSEMS,FLAGS" 8
+.IX Item "semget KEY,NSEMS,FLAGS"
+Calls the System V \s-1IPC\s0 function semget.  Returns the semaphore id, or
+the undefined value if there is an error.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, \f(CW\*(C`IPC::SysV::Semaphore\*(C'\fR
+documentation.
+.IP "semop \s-1KEY\s0,OPSTRING" 8
+.IX Item "semop KEY,OPSTRING"
+Calls the System V \s-1IPC\s0 function semop to perform semaphore operations
+such as signalling and waiting.  \s-1OPSTRING\s0 must be a packed array of
+semop structures.  Each semop structure can be generated with
+\&\f(CW\*(C`pack("s!3", $semnum, $semop, $semflag)\*(C'\fR.  The number of semaphore
+operations is implied by the length of \s-1OPSTRING\s0.  Returns true if
+successful, or false if there is an error.  As an example, the
+following code waits on semaphore \f(CW$semnum\fR of semaphore id \f(CW$semid:\fR
+.Sp
+.Vb 2
+\&    $semop = pack("s!3", $semnum, -1, 0);
+\&    die "Semaphore trouble: $!\en" unless semop($semid, $semop);
+.Ve
+.Sp
+To signal the semaphore, replace \f(CW\*(C`\-1\*(C'\fR with \f(CW1\fR.  See also
+\&\*(L"SysV \s-1IPC\s0\*(R" in perlipc, \f(CW\*(C`IPC::SysV\*(C'\fR, and \f(CW\*(C`IPC::SysV::Semaphore\*(C'\fR
+documentation.
+.IP "send \s-1SOCKET\s0,MSG,FLAGS,TO" 8
+.IX Item "send SOCKET,MSG,FLAGS,TO"
+.PD 0
+.IP "send \s-1SOCKET\s0,MSG,FLAGS" 8
+.IX Item "send SOCKET,MSG,FLAGS"
+.PD
+Sends a message on a socket.  Attempts to send the scalar \s-1MSG\s0 to the
+\&\s-1SOCKET\s0 filehandle.  Takes the same flags as the system call of the
+same name.  On unconnected sockets you must specify a destination to
+send \s-1TO\s0, in which case it does a C \f(CW\*(C`sendto\*(C'\fR.  Returns the number of
+characters sent, or the undefined value if there is an error.  The C
+system call \fIsendmsg\fR\|(2) is currently unimplemented.  See
+\&\*(L"\s-1UDP:\s0 Message Passing\*(R" in perlipc for examples.
+.Sp
+Note the \fIcharacters\fR: depending on the status of the socket, either
+(8\-bit) bytes or characters are sent.  By default all sockets operate
+on bytes, but for example if the socket has been changed using
+\&\fIbinmode()\fR to operate with the \f(CW\*(C`:utf8\*(C'\fR I/O layer (see \*(L"open\*(R", or the
+\&\f(CW\*(C`open\*(C'\fR pragma, open), the I/O will operate on \s-1UTF\-8\s0 encoded
+Unicode characters, not bytes.  Similarly for the \f(CW\*(C`:encoding\*(C'\fR pragma:
+in that case pretty much any characters can be sent.
+.IP "setpgrp \s-1PID\s0,PGRP" 8
+.IX Item "setpgrp PID,PGRP"
+Sets the current process group for the specified \s-1PID\s0, \f(CW0\fR for the current
+process.  Will produce a fatal error if used on a machine that doesn't
+implement \s-1POSIX\s0 \fIsetpgid\fR\|(2) or \s-1BSD\s0 \fIsetpgrp\fR\|(2).  If the arguments are omitted,
+it defaults to \f(CW\*(C`0,0\*(C'\fR.  Note that the \s-1BSD\s0 4.2 version of \f(CW\*(C`setpgrp\*(C'\fR does not
+accept any arguments, so only \f(CW\*(C`setpgrp(0,0)\*(C'\fR is portable.  See also
+\&\f(CW\*(C`POSIX::setsid()\*(C'\fR.
+.IP "setpriority \s-1WHICH\s0,WHO,PRIORITY" 8
+.IX Item "setpriority WHICH,WHO,PRIORITY"
+Sets the current priority for a process, a process group, or a user.
+(See \fIsetpriority\fR\|(2).)  Will produce a fatal error if used on a machine
+that doesn't implement \fIsetpriority\fR\|(2).
+.IP "setsockopt \s-1SOCKET\s0,LEVEL,OPTNAME,OPTVAL" 8
+.IX Item "setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL"
+Sets the socket option requested.  Returns undefined if there is an
+error.  \s-1OPTVAL\s0 may be specified as \f(CW\*(C`undef\*(C'\fR if you don't want to pass an
+argument.
+.IP "shift \s-1ARRAY\s0" 8
+.IX Item "shift ARRAY"
+.PD 0
+.IP "shift" 8
+.IX Item "shift"
+.PD
+Shifts the first value of the array off and returns it, shortening the
+array by 1 and moving everything down.  If there are no elements in the
+array, returns the undefined value.  If \s-1ARRAY\s0 is omitted, shifts the
+\&\f(CW at _\fR array within the lexical scope of subroutines and formats, and the
+\&\f(CW at ARGV\fR array at file scopes or within the lexical scopes established by
+the \f(CW\*(C`eval ''\*(C'\fR, \f(CW\*(C`BEGIN {}\*(C'\fR, \f(CW\*(C`INIT {}\*(C'\fR, \f(CW\*(C`CHECK {}\*(C'\fR, and \f(CW\*(C`END {}\*(C'\fR
+constructs.
+.Sp
+See also \f(CW\*(C`unshift\*(C'\fR, \f(CW\*(C`push\*(C'\fR, and \f(CW\*(C`pop\*(C'\fR.  \f(CW\*(C`shift\*(C'\fR and \f(CW\*(C`unshift\*(C'\fR do the
+same thing to the left end of an array that \f(CW\*(C`pop\*(C'\fR and \f(CW\*(C`push\*(C'\fR do to the
+right end.
+.IP "shmctl \s-1ID\s0,CMD,ARG" 8
+.IX Item "shmctl ID,CMD,ARG"
+Calls the System V \s-1IPC\s0 function shmctl.  You'll probably have to say
+.Sp
+.Vb 1
+\&    use IPC::SysV;
+.Ve
+.Sp
+first to get the correct constant definitions.  If \s-1CMD\s0 is \f(CW\*(C`IPC_STAT\*(C'\fR,
+then \s-1ARG\s0 must be a variable which will hold the returned \f(CW\*(C`shmid_ds\*(C'\fR
+structure.  Returns like ioctl: the undefined value for error, "\f(CW0\fR but
+true" for zero, or the actual return value otherwise.
+See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc and \f(CW\*(C`IPC::SysV\*(C'\fR documentation.
+.IP "shmget \s-1KEY\s0,SIZE,FLAGS" 8
+.IX Item "shmget KEY,SIZE,FLAGS"
+Calls the System V \s-1IPC\s0 function shmget.  Returns the shared memory
+segment id, or the undefined value if there is an error.
+See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc and \f(CW\*(C`IPC::SysV\*(C'\fR documentation.
+.IP "shmread \s-1ID\s0,VAR,POS,SIZE" 8
+.IX Item "shmread ID,VAR,POS,SIZE"
+.PD 0
+.IP "shmwrite \s-1ID\s0,STRING,POS,SIZE" 8
+.IX Item "shmwrite ID,STRING,POS,SIZE"
+.PD
+Reads or writes the System V shared memory segment \s-1ID\s0 starting at
+position \s-1POS\s0 for size \s-1SIZE\s0 by attaching to it, copying in/out, and
+detaching from it.  When reading, \s-1VAR\s0 must be a variable that will
+hold the data read.  When writing, if \s-1STRING\s0 is too long, only \s-1SIZE\s0
+bytes are used; if \s-1STRING\s0 is too short, nulls are written to fill out
+\&\s-1SIZE\s0 bytes.  Return true if successful, or false if there is an error.
+\&\fIshmread()\fR taints the variable. See also \*(L"SysV \s-1IPC\s0\*(R" in perlipc,
+\&\f(CW\*(C`IPC::SysV\*(C'\fR documentation, and the \f(CW\*(C`IPC::Shareable\*(C'\fR module from \s-1CPAN\s0.
+.IP "shutdown \s-1SOCKET\s0,HOW" 8
+.IX Item "shutdown SOCKET,HOW"
+Shuts down a socket connection in the manner indicated by \s-1HOW\s0, which
+has the same interpretation as in the system call of the same name.
+.Sp
+.Vb 3
+\&    shutdown(SOCKET, 0);    # I/we have stopped reading data
+\&    shutdown(SOCKET, 1);    # I/we have stopped writing data
+\&    shutdown(SOCKET, 2);    # I/we have stopped using this socket
+.Ve
+.Sp
+This is useful with sockets when you want to tell the other
+side you're done writing but not done reading, or vice versa.
+It's also a more insistent form of close because it also
+disables the file descriptor in any forked copies in other
+processes.
+.IP "sin \s-1EXPR\s0" 8
+.IX Item "sin EXPR"
+.PD 0
+.IP "sin" 8
+.IX Item "sin"
+.PD
+Returns the sine of \s-1EXPR\s0 (expressed in radians).  If \s-1EXPR\s0 is omitted,
+returns sine of \f(CW$_\fR.
+.Sp
+For the inverse sine operation, you may use the \f(CW\*(C`Math::Trig::asin\*(C'\fR
+function, or use this relation:
+.Sp
+.Vb 1
+\&    sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
+.Ve
+.IP "sleep \s-1EXPR\s0" 8
+.IX Item "sleep EXPR"
+.PD 0
+.IP "sleep" 8
+.IX Item "sleep"
+.PD
+Causes the script to sleep for \s-1EXPR\s0 seconds, or forever if no \s-1EXPR\s0.
+May be interrupted if the process receives a signal such as \f(CW\*(C`SIGALRM\*(C'\fR.
+Returns the number of seconds actually slept.  You probably cannot
+mix \f(CW\*(C`alarm\*(C'\fR and \f(CW\*(C`sleep\*(C'\fR calls, because \f(CW\*(C`sleep\*(C'\fR is often implemented
+using \f(CW\*(C`alarm\*(C'\fR.
+.Sp
+On some older systems, it may sleep up to a full second less than what
+you requested, depending on how it counts seconds.  Most modern systems
+always sleep the full amount.  They may appear to sleep longer than that,
+however, because your process might not be scheduled right away in a
+busy multitasking system.
+.Sp
+For delays of finer granularity than one second, you may use Perl's
+\&\f(CW\*(C`syscall\*(C'\fR interface to access \fIsetitimer\fR\|(2) if your system supports
+it, or else see \*(L"select\*(R" above.  The Time::HiRes module (from \s-1CPAN\s0,
+and starting from Perl 5.8 part of the standard distribution) may also
+help.
+.Sp
+See also the \s-1POSIX\s0 module's \f(CW\*(C`pause\*(C'\fR function.
+.IP "socket \s-1SOCKET\s0,DOMAIN,TYPE,PROTOCOL" 8
+.IX Item "socket SOCKET,DOMAIN,TYPE,PROTOCOL"
+Opens a socket of the specified kind and attaches it to filehandle
+\&\s-1SOCKET\s0.  \s-1DOMAIN\s0, \s-1TYPE\s0, and \s-1PROTOCOL\s0 are specified the same as for
+the system call of the same name.  You should \f(CW\*(C`use Socket\*(C'\fR first
+to get the proper definitions imported.  See the examples in
+\&\*(L"Sockets: Client/Server Communication\*(R" in perlipc.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F.  See \*(L"$^F\*(R" in perlvar.
+.IP "socketpair \s-1SOCKET1\s0,SOCKET2,DOMAIN,TYPE,PROTOCOL" 8
+.IX Item "socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL"
+Creates an unnamed pair of sockets in the specified domain, of the
+specified type.  \s-1DOMAIN\s0, \s-1TYPE\s0, and \s-1PROTOCOL\s0 are specified the same as
+for the system call of the same name.  If unimplemented, yields a fatal
+error.  Returns true if successful.
+.Sp
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptors, as determined by the value
+of $^F.  See \*(L"$^F\*(R" in perlvar.
+.Sp
+Some systems defined \f(CW\*(C`pipe\*(C'\fR in terms of \f(CW\*(C`socketpair\*(C'\fR, in which a call
+to \f(CW\*(C`pipe(Rdr, Wtr)\*(C'\fR is essentially:
+.Sp
+.Vb 4
+\&    use Socket;
+\&    socketpair(Rdr, Wtr, AF_UNIX, SOCK_STREAM, PF_UNSPEC);
+\&    shutdown(Rdr, 1);        # no more writing for reader
+\&    shutdown(Wtr, 0);        # no more reading for writer
+.Ve
+.Sp
+See perlipc for an example of socketpair use.  Perl 5.8 and later will
+emulate socketpair using \s-1IP\s0 sockets to localhost if your system implements
+sockets but not socketpair.
+.IP "sort \s-1SUBNAME\s0 \s-1LIST\s0" 8
+.IX Item "sort SUBNAME LIST"
+.PD 0
+.IP "sort \s-1BLOCK\s0 \s-1LIST\s0" 8
+.IX Item "sort BLOCK LIST"
+.IP "sort \s-1LIST\s0" 8
+.IX Item "sort LIST"
+.PD
+In list context, this sorts the \s-1LIST\s0 and returns the sorted list value.
+In scalar context, the behaviour of \f(CW\*(C`sort()\*(C'\fR is undefined.
+.Sp
+If \s-1SUBNAME\s0 or \s-1BLOCK\s0 is omitted, \f(CW\*(C`sort\*(C'\fRs in standard string comparison
+order.  If \s-1SUBNAME\s0 is specified, it gives the name of a subroutine
+that returns an integer less than, equal to, or greater than \f(CW0\fR,
+depending on how the elements of the list are to be ordered.  (The \f(CW\*(C`<=>\*(C'\fR and \f(CW\*(C`cmp\*(C'\fR operators are extremely useful in such routines.)
+\&\s-1SUBNAME\s0 may be a scalar variable name (unsubscripted), in which case
+the value provides the name of (or a reference to) the actual
+subroutine to use.  In place of a \s-1SUBNAME\s0, you can provide a \s-1BLOCK\s0 as
+an anonymous, in-line sort subroutine.
+.Sp
+If the subroutine's prototype is \f(CW\*(C`($$)\*(C'\fR, the elements to be compared
+are passed by reference in \f(CW at _\fR, as for a normal subroutine.  This is
+slower than unprototyped subroutines, where the elements to be
+compared are passed into the subroutine
+as the package global variables \f(CW$a\fR and \f(CW$b\fR (see example below).  Note that
+in the latter case, it is usually counter-productive to declare \f(CW$a\fR and
+\&\f(CW$b\fR as lexicals.
+.Sp
+In either case, the subroutine may not be recursive.  The values to be
+compared are always passed by reference, so don't modify them.
+.Sp
+You also cannot exit out of the sort block or subroutine using any of the
+loop control operators described in perlsyn or with \f(CW\*(C`goto\*(C'\fR.
+.Sp
+When \f(CW\*(C`use locale\*(C'\fR is in effect, \f(CW\*(C`sort LIST\*(C'\fR sorts \s-1LIST\s0 according to the
+current collation locale.  See perllocale.
+.Sp
+Perl 5.6 and earlier used a quicksort algorithm to implement sort.
+That algorithm was not stable, and \fIcould\fR go quadratic.  (A \fIstable\fR sort
+preserves the input order of elements that compare equal.  Although
+quicksort's run time is O(NlogN) when averaged over all arrays of
+length N, the time can be O(N**2), \fIquadratic\fR behavior, for some
+inputs.)  In 5.7, the quicksort implementation was replaced with
+a stable mergesort algorithm whose worst case behavior is O(NlogN).
+But benchmarks indicated that for some inputs, on some platforms,
+the original quicksort was faster.  5.8 has a sort pragma for
+limited control of the sort.  Its rather blunt control of the
+underlying algorithm may not persist into future perls, but the
+ability to characterize the input or output in implementation
+independent ways quite probably will.  See sort.
+.Sp
+Examples:
+.Sp
+.Vb 2
+\&    # sort lexically
+\&    @articles = sort @files;
+.Ve
+.Sp
+.Vb 2
+\&    # same thing, but with explicit sort routine
+\&    @articles = sort {$a cmp $b} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # now case-insensitively
+\&    @articles = sort {uc($a) cmp uc($b)} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # same thing in reversed order
+\&    @articles = sort {$b cmp $a} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # sort numerically ascending
+\&    @articles = sort {$a <=> $b} @files;
+.Ve
+.Sp
+.Vb 2
+\&    # sort numerically descending
+\&    @articles = sort {$b <=> $a} @files;
+.Ve
+.Sp
+.Vb 3
+\&    # this sorts the %age hash by value instead of key
+\&    # using an in-line function
+\&    @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
+.Ve
+.Sp
+.Vb 5
+\&    # sort using explicit subroutine name
+\&    sub byage {
+\&        $age{$a} <=> $age{$b};  # presuming numeric
+\&    }
+\&    @sortedclass = sort byage @class;
+.Ve
+.Sp
+.Vb 9
+\&    sub backwards { $b cmp $a }
+\&    @harry  = qw(dog cat x Cain Abel);
+\&    @george = qw(gone chased yz Punished Axed);
+\&    print sort @harry;
+\&            # prints AbelCaincatdogx
+\&    print sort backwards @harry;
+\&            # prints xdogcatCainAbel
+\&    print sort @george, 'to', @harry;
+\&            # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
+.Ve
+.Sp
+.Vb 3
+\&    # inefficiently sort by descending numeric compare using
+\&    # the first integer after the first = sign, or the
+\&    # whole record case-insensitively otherwise
+.Ve
+.Sp
+.Vb 5
+\&    @new = sort {
+\&        ($b =~ /=(\ed+)/)[0] <=> ($a =~ /=(\ed+)/)[0]
+\&                            ||
+\&                    uc($a)  cmp  uc($b)
+\&    } @old;
+.Ve
+.Sp
+.Vb 8
+\&    # same thing, but much more efficiently;
+\&    # we'll build auxiliary indices instead
+\&    # for speed
+\&    @nums = @caps = ();
+\&    for (@old) {
+\&        push @nums, /=(\ed+)/;
+\&        push @caps, uc($_);
+\&    }
+.Ve
+.Sp
+.Vb 6
+\&    @new = @old[ sort {
+\&                        $nums[$b] <=> $nums[$a]
+\&                                 ||
+\&                        $caps[$a] cmp $caps[$b]
+\&                       } 0..$#old
+\&               ];
+.Ve
+.Sp
+.Vb 6
+\&    # same thing, but without any temps
+\&    @new = map { $_->[0] }
+\&           sort { $b->[1] <=> $a->[1]
+\&                           ||
+\&                  $a->[2] cmp $b->[2]
+\&           } map { [$_, /=(\ed+)/, uc($_)] } @old;
+.Ve
+.Sp
+.Vb 4
+\&    # using a prototype allows you to use any comparison subroutine
+\&    # as a sort subroutine (including other package's subroutines)
+\&    package other;
+\&    sub backwards ($$) { $_[1] cmp $_[0]; }     # $a and $b are not set here
+.Ve
+.Sp
+.Vb 2
+\&    package main;
+\&    @new = sort other::backwards @old;
+.Ve
+.Sp
+.Vb 3
+\&    # guarantee stability, regardless of algorithm
+\&    use sort 'stable';
+\&    @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
+.Ve
+.Sp
+.Vb 3
+\&    # force use of mergesort (not portable outside Perl 5.8)
+\&    use sort '_mergesort';  # note discouraging _
+\&    @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
+.Ve
+.Sp
+If you're using strict, you \fImust not\fR declare \f(CW$a\fR
+and \f(CW$b\fR as lexicals.  They are package globals.  That means
+if you're in the \f(CW\*(C`main\*(C'\fR package and type
+.Sp
+.Vb 1
+\&    @articles = sort {$b <=> $a} @files;
+.Ve
+.Sp
+then \f(CW$a\fR and \f(CW$b\fR are \f(CW$main::a\fR and \f(CW$main::b\fR (or \f(CW$::a\fR and \f(CW$::b\fR),
+but if you're in the \f(CW\*(C`FooPack\*(C'\fR package, it's the same as typing
+.Sp
+.Vb 1
+\&    @articles = sort {$FooPack::b <=> $FooPack::a} @files;
+.Ve
+.Sp
+The comparison function is required to behave.  If it returns
+inconsistent results (sometimes saying \f(CW$x[1]\fR is less than \f(CW$x[2]\fR and
+sometimes saying the opposite, for example) the results are not
+well\-defined.
+.Sp
+Because \f(CW\*(C`<=>\*(C'\fR returns \f(CW\*(C`undef\*(C'\fR when either operand is \f(CW\*(C`NaN\*(C'\fR
+(not\-a\-number), and because \f(CW\*(C`sort\*(C'\fR will trigger a fatal error unless the
+result of a comparison is defined, when sorting with a comparison function
+like \f(CW\*(C`$a <=> $b\*(C'\fR, be careful about lists that might contain a \f(CW\*(C`NaN\*(C'\fR.
+The following example takes advantage of the fact that \f(CW\*(C`NaN != NaN\*(C'\fR to
+eliminate any \f(CW\*(C`NaN\*(C'\fRs from the input.
+.Sp
+.Vb 1
+\&    @result = sort { $a <=> $b } grep { $_ == $_ } @input;
+.Ve
+.IP "splice \s-1ARRAY\s0,OFFSET,LENGTH,LIST" 8
+.IX Item "splice ARRAY,OFFSET,LENGTH,LIST"
+.PD 0
+.IP "splice \s-1ARRAY\s0,OFFSET,LENGTH" 8
+.IX Item "splice ARRAY,OFFSET,LENGTH"
+.IP "splice \s-1ARRAY\s0,OFFSET" 8
+.IX Item "splice ARRAY,OFFSET"
+.IP "splice \s-1ARRAY\s0" 8
+.IX Item "splice ARRAY"
+.PD
+Removes the elements designated by \s-1OFFSET\s0 and \s-1LENGTH\s0 from an array, and
+replaces them with the elements of \s-1LIST\s0, if any.  In list context,
+returns the elements removed from the array.  In scalar context,
+returns the last element removed, or \f(CW\*(C`undef\*(C'\fR if no elements are
+removed.  The array grows or shrinks as necessary.
+If \s-1OFFSET\s0 is negative then it starts that far from the end of the array.
+If \s-1LENGTH\s0 is omitted, removes everything from \s-1OFFSET\s0 onward.
+If \s-1LENGTH\s0 is negative, removes the elements from \s-1OFFSET\s0 onward
+except for \-LENGTH elements at the end of the array.
+If both \s-1OFFSET\s0 and \s-1LENGTH\s0 are omitted, removes everything. If \s-1OFFSET\s0 is
+past the end of the array, perl issues a warning, and splices at the
+end of the array.
+.Sp
+The following equivalences hold (assuming \f(CW\*(C`$[ == 0 and $#a >= $i\*(C'\fR )
+.Sp
+.Vb 5
+\&    push(@a,$x,$y)      splice(@a, at a,0,$x,$y)
+\&    pop(@a)             splice(@a,-1)
+\&    shift(@a)           splice(@a,0,1)
+\&    unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
+\&    $a[$i] = $y         splice(@a,$i,1,$y)
+.Ve
+.Sp
+Example, assuming array lengths are passed before arrays:
+.Sp
+.Vb 10
+\&    sub aeq {   # compare two list values
+\&        my(@a) = splice(@_,0,shift);
+\&        my(@b) = splice(@_,0,shift);
+\&        return 0 unless @a == @b;       # same len?
+\&        while (@a) {
+\&            return 0 if pop(@a) ne pop(@b);
+\&        }
+\&        return 1;
+\&    }
+\&    if (&aeq($len, at foo[1..$len],0+ at bar, at bar)) { ... }
+.Ve
+.IP "split /PATTERN/,EXPR,LIMIT" 8
+.IX Item "split /PATTERN/,EXPR,LIMIT"
+.PD 0
+.IP "split /PATTERN/,EXPR" 8
+.IX Item "split /PATTERN/,EXPR"
+.IP "split /PATTERN/" 8
+.IX Item "split /PATTERN/"
+.IP "split" 8
+.IX Item "split"
+.PD
+Splits a string into a list of strings and returns that list.  By default,
+empty leading fields are preserved, and empty trailing ones are deleted.
+.Sp
+In scalar context, returns the number of fields found and splits into
+the \f(CW at _\fR array.  Use of split in scalar context is deprecated, however,
+because it clobbers your subroutine arguments.
+.Sp
+If \s-1EXPR\s0 is omitted, splits the \f(CW$_\fR string.  If \s-1PATTERN\s0 is also omitted,
+splits on whitespace (after skipping any leading whitespace).  Anything
+matching \s-1PATTERN\s0 is taken to be a delimiter separating the fields.  (Note
+that the delimiter may be longer than one character.)
+.Sp
+If \s-1LIMIT\s0 is specified and positive, it represents the maximum number
+of fields the \s-1EXPR\s0 will be split into, though the actual number of
+fields returned depends on the number of times \s-1PATTERN\s0 matches within
+\&\s-1EXPR\s0.  If \s-1LIMIT\s0 is unspecified or zero, trailing null fields are
+stripped (which potential users of \f(CW\*(C`pop\*(C'\fR would do well to remember).
+If \s-1LIMIT\s0 is negative, it is treated as if an arbitrarily large \s-1LIMIT\s0
+had been specified.  Note that splitting an \s-1EXPR\s0 that evaluates to the
+empty string always returns the empty list, regardless of the \s-1LIMIT\s0
+specified.
+.Sp
+A pattern matching the null string (not to be confused with
+a null pattern \f(CW\*(C`//\*(C'\fR, which is just one member of the set of patterns
+matching a null string) will split the value of \s-1EXPR\s0 into separate
+characters at each point it matches that way.  For example:
+.Sp
+.Vb 1
+\&    print join(':', split(/ */, 'hi there'));
+.Ve
+.Sp
+produces the output 'h:i:t:h:e:r:e'.
+.Sp
+Using the empty pattern \f(CW\*(C`//\*(C'\fR specifically matches the null string, and is
+not be confused with the use of \f(CW\*(C`//\*(C'\fR to mean \*(L"the last successful pattern
+match\*(R".
+.Sp
+Empty leading (or trailing) fields are produced when there are positive width
+matches at the beginning (or end) of the string; a zero-width match at the
+beginning (or end) of the string does not produce an empty field.  For
+example:
+.Sp
+.Vb 1
+\&   print join(':', split(/(?=\ew)/, 'hi there!'));
+.Ve
+.Sp
+produces the output 'h:i :t:h:e:r:e!'.
+.Sp
+The \s-1LIMIT\s0 parameter can be used to split a line partially
+.Sp
+.Vb 1
+\&    ($login, $passwd, $remainder) = split(/:/, $_, 3);
+.Ve
+.Sp
+When assigning to a list, if \s-1LIMIT\s0 is omitted, or zero, Perl supplies
+a \s-1LIMIT\s0 one larger than the number of variables in the list, to avoid
+unnecessary work.  For the list above \s-1LIMIT\s0 would have been 4 by
+default.  In time critical applications it behooves you not to split
+into more fields than you really need.
+.Sp
+If the \s-1PATTERN\s0 contains parentheses, additional list elements are
+created from each matching substring in the delimiter.
+.Sp
+.Vb 1
+\&    split(/([,-])/, "1-10,20", 3);
+.Ve
+.Sp
+produces the list value
+.Sp
+.Vb 1
+\&    (1, '-', 10, ',', 20)
+.Ve
+.Sp
+If you had the entire header of a normal Unix email message in \f(CW$header\fR,
+you could split it up into fields and their values this way:
+.Sp
+.Vb 2
+\&    $header =~ s/\en\es+/ /g;  # fix continuation lines
+\&    %hdrs   =  (UNIX_FROM => split /^(\eS*?):\es*/m, $header);
+.Ve
+.Sp
+The pattern \f(CW\*(C`/PATTERN/\*(C'\fR may be replaced with an expression to specify
+patterns that vary at runtime.  (To do runtime compilation only once,
+use \f(CW\*(C`/$variable/o\*(C'\fR.)
+.Sp
+As a special case, specifying a \s-1PATTERN\s0 of space (\f(CW'\ '\fR) will split on
+white space just as \f(CW\*(C`split\*(C'\fR with no arguments does.  Thus, \f(CW\*(C`split('\ ')\*(C'\fR can
+be used to emulate \fBawk\fR's default behavior, whereas \f(CW\*(C`split(/\ /)\*(C'\fR
+will give you as many null initial fields as there are leading spaces.
+A \f(CW\*(C`split\*(C'\fR on \f(CW\*(C`/\es+/\*(C'\fR is like a \f(CW\*(C`split('\ ')\*(C'\fR except that any leading
+whitespace produces a null first field.  A \f(CW\*(C`split\*(C'\fR with no arguments
+really does a \f(CW\*(C`split('\ ',\ $_)\*(C'\fR internally.
+.Sp
+A \s-1PATTERN\s0 of \f(CW\*(C`/^/\*(C'\fR is treated as if it were \f(CW\*(C`/^/m\*(C'\fR, since it isn't
+much use otherwise.
+.Sp
+Example:
+.Sp
+.Vb 7
+\&    open(PASSWD, '/etc/passwd');
+\&    while (<PASSWD>) {
+\&        chomp;
+\&        ($login, $passwd, $uid, $gid,
+\&         $gcos, $home, $shell) = split(/:/);
+\&        #...
+\&    }
+.Ve
+.Sp
+As with regular pattern matching, any capturing parentheses that are not
+matched in a \f(CW\*(C`split()\*(C'\fR will be set to \f(CW\*(C`undef\*(C'\fR when returned:
+.Sp
+.Vb 2
+\&    @fields = split /(A)|B/, "1A2B3";
+\&    # @fields is (1, 'A', 2, undef, 3)
+.Ve
+.IP "sprintf \s-1FORMAT\s0, \s-1LIST\s0" 8
+.IX Item "sprintf FORMAT, LIST"
+Returns a string formatted by the usual \f(CW\*(C`printf\*(C'\fR conventions of the C
+library function \f(CW\*(C`sprintf\*(C'\fR.  See below for more details
+and see \fIsprintf\fR\|(3) or \fIprintf\fR\|(3) on your system for an explanation of
+the general principles.
+.Sp
+For example:
+.Sp
+.Vb 2
+\&        # Format number with up to 8 leading zeroes
+\&        $result = sprintf("%08d", $number);
+.Ve
+.Sp
+.Vb 2
+\&        # Round number to 3 digits after decimal point
+\&        $rounded = sprintf("%.3f", $number);
+.Ve
+.Sp
+Perl does its own \f(CW\*(C`sprintf\*(C'\fR formatting\*(--it emulates the C
+function \f(CW\*(C`sprintf\*(C'\fR, but it doesn't use it (except for floating-point
+numbers, and even then only the standard modifiers are allowed).  As a
+result, any non-standard extensions in your local \f(CW\*(C`sprintf\*(C'\fR are not
+available from Perl.
+.Sp
+Unlike \f(CW\*(C`printf\*(C'\fR, \f(CW\*(C`sprintf\*(C'\fR does not do what you probably mean when you
+pass it an array as your first argument. The array is given scalar context,
+and instead of using the 0th element of the array as the format, Perl will
+use the count of elements in the array as the format, which is almost never
+useful.
+.Sp
+Perl's \f(CW\*(C`sprintf\*(C'\fR permits the following universally-known conversions:
+.Sp
+.Vb 10
+\&   %%   a percent sign
+\&   %c   a character with the given number
+\&   %s   a string
+\&   %d   a signed integer, in decimal
+\&   %u   an unsigned integer, in decimal
+\&   %o   an unsigned integer, in octal
+\&   %x   an unsigned integer, in hexadecimal
+\&   %e   a floating-point number, in scientific notation
+\&   %f   a floating-point number, in fixed decimal notation
+\&   %g   a floating-point number, in %e or %f notation
+.Ve
+.Sp
+In addition, Perl permits the following widely-supported conversions:
+.Sp
+.Vb 7
+\&   %X   like %x, but using upper-case letters
+\&   %E   like %e, but using an upper-case "E"
+\&   %G   like %g, but with an upper-case "E" (if applicable)
+\&   %b   an unsigned integer, in binary
+\&   %p   a pointer (outputs the Perl value's address in hexadecimal)
+\&   %n   special: *stores* the number of characters output so far
+\&        into the next variable in the parameter list
+.Ve
+.Sp
+Finally, for backward (and we do mean \*(L"backward\*(R") compatibility, Perl
+permits these unnecessary but widely-supported conversions:
+.Sp
+.Vb 5
+\&   %i   a synonym for %d
+\&   %D   a synonym for %ld
+\&   %U   a synonym for %lu
+\&   %O   a synonym for %lo
+\&   %F   a synonym for %f
+.Ve
+.Sp
+Note that the number of exponent digits in the scientific notation produced
+by \f(CW%e\fR, \f(CW%E\fR, \f(CW%g\fR and \f(CW%G\fR for numbers with the modulus of the
+exponent less than 100 is system\-dependent: it may be three or less
+(zero\-padded as necessary).  In other words, 1.23 times ten to the
+99th may be either \*(L"1.23e99\*(R" or \*(L"1.23e099\*(R".
+.Sp
+Between the \f(CW\*(C`%\*(C'\fR and the format letter, you may specify a number of
+additional attributes controlling the interpretation of the format.
+In order, these are:
+.RS 8
+.IP "format parameter index" 4
+.IX Item "format parameter index"
+An explicit format parameter index, such as \f(CW\*(C`2$\*(C'\fR. By default sprintf
+will format the next unused argument in the list, but this allows you
+to take the arguments out of order. Eg:
+.Sp
+.Vb 2
+\&  printf '%2$d %1$d', 12, 34;      # prints "34 12"
+\&  printf '%3$d %d %1$d', 1, 2, 3;  # prints "3 1 1"
+.Ve
+.IP "flags" 4
+.IX Item "flags"
+one or more of:
+   space   prefix positive number with a space
+   +       prefix positive number with a plus sign
+   \-       left-justify within the field
+   0       use zeros, not spaces, to right-justify
+   #       prefix non-zero octal with \*(L"0\*(R", non-zero hex with \*(L"0x\*(R",
+           non-zero binary with \*(L"0b\*(R"
+.Sp
+For example:
+.Sp
+.Vb 6
+\&  printf '<% d>', 12;   # prints "< 12>"
+\&  printf '<%+d>', 12;   # prints "<+12>"
+\&  printf '<%6s>', 12;   # prints "<    12>"
+\&  printf '<%-6s>', 12;  # prints "<12    >"
+\&  printf '<%06s>', 12;  # prints "<000012>"
+\&  printf '<%#x>', 12;   # prints "<0xc>"
+.Ve
+.IP "vector flag" 4
+.IX Item "vector flag"
+The vector flag \f(CW\*(C`v\*(C'\fR, optionally specifying the join string to use.
+This flag tells perl to interpret the supplied string as a vector
+of integers, one for each character in the string, separated by
+a given string (a dot \f(CW\*(C`.\*(C'\fR by default). This can be useful for
+displaying ordinal values of characters in arbitrary strings:
+.Sp
+.Vb 1
+\&  printf "version is v%vd\en", $^V;     # Perl's version
+.Ve
+.Sp
+Put an asterisk \f(CW\*(C`*\*(C'\fR before the \f(CW\*(C`v\*(C'\fR to override the string to
+use to separate the numbers:
+.Sp
+.Vb 2
+\&  printf "address is %*vX\en", ":", $addr;   # IPv6 address
+\&  printf "bits are %0*v8b\en", " ", $bits;   # random bitstring
+.Ve
+.Sp
+You can also explicitly specify the argument number to use for
+the join string using eg \f(CW\*(C`*2$v\*(C'\fR:
+.Sp
+.Vb 1
+\&  printf '%*4$vX %*4$vX %*4$vX', @addr[1..3], ":";   # 3 IPv6 addresses
+.Ve
+.IP "(minimum) width" 4
+.IX Item "(minimum) width"
+Arguments are usually formatted to be only as wide as required to
+display the given value. You can override the width by putting
+a number here, or get the width from the next argument (with \f(CW\*(C`*\*(C'\fR)
+or from a specified argument (with eg \f(CW\*(C`*2$\*(C'\fR):
+.Sp
+.Vb 5
+\&  printf '<%s>', "a";       # prints "<a>"
+\&  printf '<%6s>', "a";      # prints "<     a>"
+\&  printf '<%*s>', 6, "a";   # prints "<     a>"
+\&  printf '<%*2$s>', "a", 6; # prints "<     a>"
+\&  printf '<%2s>', "long";   # prints "<long>" (does not truncate)
+.Ve
+.Sp
+If a field width obtained through \f(CW\*(C`*\*(C'\fR is negative, it has the same
+effect as the \f(CW\*(C`\-\*(C'\fR flag: left\-justification.
+.IP "precision, or maximum width" 4
+.IX Item "precision, or maximum width"
+You can specify a precision (for numeric conversions) or a maximum
+width (for string conversions) by specifying a \f(CW\*(C`.\*(C'\fR followed by a number.
+For floating point formats, with the exception of 'g' and 'G', this specifies
+the number of decimal places to show (the default being 6), eg:
+.Sp
+.Vb 6
+\&  # these examples are subject to system-specific variation
+\&  printf '<%f>', 1;    # prints "<1.000000>"
+\&  printf '<%.1f>', 1;  # prints "<1.0>"
+\&  printf '<%.0f>', 1;  # prints "<1>"
+\&  printf '<%e>', 10;   # prints "<1.000000e+01>"
+\&  printf '<%.1e>', 10; # prints "<1.0e+01>"
+.Ve
+.Sp
+For 'g' and 'G', this specifies the maximum number of digits to show,
+including prior to the decimal point as well as after it, eg:
+.Sp
+.Vb 8
+\&  # these examples are subject to system-specific variation
+\&  printf '<%g>', 1;        # prints "<1>"
+\&  printf '<%.10g>', 1;     # prints "<1>"
+\&  printf '<%g>', 100;      # prints "<100>"
+\&  printf '<%.1g>', 100;    # prints "<1e+02>"
+\&  printf '<%.2g>', 100.01; # prints "<1e+02>"
+\&  printf '<%.5g>', 100.01; # prints "<100.01>"
+\&  printf '<%.4g>', 100.01; # prints "<100>"
+.Ve
+.Sp
+For integer conversions, specifying a precision implies that the
+output of the number itself should be zero-padded to this width:
+.Sp
+.Vb 3
+\&  printf '<%.6x>', 1;      # prints "<000001>"
+\&  printf '<%#.6x>', 1;     # prints "<0x000001>"
+\&  printf '<%-10.6x>', 1;   # prints "<000001    >"
+.Ve
+.Sp
+For string conversions, specifying a precision truncates the string
+to fit in the specified width:
+.Sp
+.Vb 2
+\&  printf '<%.5s>', "truncated";   # prints "<trunc>"
+\&  printf '<%10.5s>', "truncated"; # prints "<     trunc>"
+.Ve
+.Sp
+You can also get the precision from the next argument using \f(CW\*(C`.*\*(C'\fR:
+.Sp
+.Vb 2
+\&  printf '<%.6x>', 1;       # prints "<000001>"
+\&  printf '<%.*x>', 6, 1;    # prints "<000001>"
+.Ve
+.Sp
+You cannot currently get the precision from a specified number,
+but it is intended that this will be possible in the future using
+eg \f(CW\*(C`.*2$\*(C'\fR:
+.Sp
+.Vb 1
+\&  printf '<%.*2$x>', 1, 6;   # INVALID, but in future will print "<000001>"
+.Ve
+.IP "size" 4
+.IX Item "size"
+For numeric conversions, you can specify the size to interpret the
+number as using \f(CW\*(C`l\*(C'\fR, \f(CW\*(C`h\*(C'\fR, \f(CW\*(C`V\*(C'\fR, \f(CW\*(C`q\*(C'\fR, \f(CW\*(C`L\*(C'\fR, or \f(CW\*(C`ll\*(C'\fR. For integer
+conversions (\f(CW\*(C`d u o x X b i D U O\*(C'\fR), numbers are usually assumed to be
+whatever the default integer size is on your platform (usually 32 or 64
+bits), but you can override this to use instead one of the standard C types,
+as supported by the compiler used to build Perl:
+.Sp
+.Vb 4
+\&   l           interpret integer as C type "long" or "unsigned long"
+\&   h           interpret integer as C type "short" or "unsigned short"
+\&   q, L or ll  interpret integer as C type "long long", "unsigned long long".
+\&               or "quads" (typically 64-bit integers)
+.Ve
+.Sp
+The last will produce errors if Perl does not understand \*(L"quads\*(R" in your
+installation. (This requires that either the platform natively supports quads
+or Perl was specifically compiled to support quads.) You can find out
+whether your Perl supports quads via Config:
+.Sp
+.Vb 3
+\&        use Config;
+\&        ($Config{use64bitint} eq 'define' || $Config{longsize} >= 8) &&
+\&                print "quads\en";
+.Ve
+.Sp
+For floating point conversions (\f(CW\*(C`e f g E F G\*(C'\fR), numbers are usually assumed
+to be the default floating point size on your platform (double or long double),
+but you can force 'long double' with \f(CW\*(C`q\*(C'\fR, \f(CW\*(C`L\*(C'\fR, or \f(CW\*(C`ll\*(C'\fR if your
+platform supports them. You can find out whether your Perl supports long
+doubles via Config:
+.Sp
+.Vb 2
+\&        use Config;
+\&        $Config{d_longdbl} eq 'define' && print "long doubles\en";
+.Ve
+.Sp
+You can find out whether Perl considers 'long double' to be the default
+floating point size to use on your platform via Config:
+.Sp
+.Vb 3
+\&        use Config;
+\&        ($Config{uselongdouble} eq 'define') &&
+\&                print "long doubles by default\en";
+.Ve
+.Sp
+It can also be the case that long doubles and doubles are the same thing:
+.Sp
+.Vb 3
+\&        use Config;
+\&        ($Config{doublesize} == $Config{longdblsize}) &&
+\&                print "doubles are long doubles\en";
+.Ve
+.Sp
+The size specifier \f(CW\*(C`V\*(C'\fR has no effect for Perl code, but it is supported
+for compatibility with \s-1XS\s0 code; it means 'use the standard size for
+a Perl integer (or floating-point number)', which is already the
+default for Perl code.
+.IP "order of arguments" 4
+.IX Item "order of arguments"
+Normally, sprintf takes the next unused argument as the value to
+format for each format specification. If the format specification
+uses \f(CW\*(C`*\*(C'\fR to require additional arguments, these are consumed from
+the argument list in the order in which they appear in the format
+specification \fIbefore\fR the value to format. Where an argument is
+specified using an explicit index, this does not affect the normal
+order for the arguments (even when the explicitly specified index
+would have been the next argument in any case).
+.Sp
+So:
+.Sp
+.Vb 1
+\&  printf '<%*.*s>', $a, $b, $c;
+.Ve
+.Sp
+would use \f(CW$a\fR for the width, \f(CW$b\fR for the precision and \f(CW$c\fR
+as the value to format, while:
+.Sp
+.Vb 1
+\&  print '<%*1$.*s>', $a, $b;
+.Ve
+.Sp
+would use \f(CW$a\fR for the width and the precision, and \f(CW$b\fR as the
+value to format.
+.Sp
+Here are some more examples \- beware that when using an explicit
+index, the \f(CW\*(C`$\*(C'\fR may need to be escaped:
+.Sp
+.Vb 4
+\&  printf "%2\e$d %d\en",    12, 34;               # will print "34 12\en"
+\&  printf "%2\e$d %d %d\en", 12, 34;               # will print "34 12 34\en"
+\&  printf "%3\e$d %d %d\en", 12, 34, 56;           # will print "56 12 34\en"
+\&  printf "%2\e$*3\e$d %d\en", 12, 34, 3;           # will print " 34 12\en"
+.Ve
+.RE
+.RS 8
+.Sp
+If \f(CW\*(C`use locale\*(C'\fR is in effect, the character used for the decimal
+point in formatted real numbers is affected by the \s-1LC_NUMERIC\s0 locale.
+See perllocale.
+.RE
+.IP "sqrt \s-1EXPR\s0" 8
+.IX Item "sqrt EXPR"
+.PD 0
+.IP "sqrt" 8
+.IX Item "sqrt"
+.PD
+Return the square root of \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted, returns square
+root of \f(CW$_\fR.  Only works on non-negative operands, unless you've
+loaded the standard Math::Complex module.
+.Sp
+.Vb 2
+\&    use Math::Complex;
+\&    print sqrt(-2);    # prints 1.4142135623731i
+.Ve
+.IP "srand \s-1EXPR\s0" 8
+.IX Item "srand EXPR"
+.PD 0
+.IP "srand" 8
+.IX Item "srand"
+.PD
+Sets the random number seed for the \f(CW\*(C`rand\*(C'\fR operator.
+.Sp
+The point of the function is to \*(L"seed\*(R" the \f(CW\*(C`rand\*(C'\fR function so that
+\&\f(CW\*(C`rand\*(C'\fR can produce a different sequence each time you run your
+program.
+.Sp
+If \fIsrand()\fR is not called explicitly, it is called implicitly at the
+first use of the \f(CW\*(C`rand\*(C'\fR operator.  However, this was not the case in
+versions of Perl before 5.004, so if your script will run under older
+Perl versions, it should call \f(CW\*(C`srand\*(C'\fR.
+.Sp
+Most programs won't even call \fIsrand()\fR at all, except those that
+need a cryptographically-strong starting point rather than the
+generally acceptable default, which is based on time of day,
+process \s-1ID\s0, and memory allocation, or the \fI/dev/urandom\fR device,
+if available.
+.Sp
+You can call srand($seed) with the same \f(CW$seed\fR to reproduce the
+\&\fIsame\fR sequence from \fIrand()\fR, but this is usually reserved for
+generating predictable results for testing or debugging.
+Otherwise, don't call \fIsrand()\fR more than once in your program.
+.Sp
+Do \fBnot\fR call \fIsrand()\fR (i.e. without an argument) more than once in
+a script.  The internal state of the random number generator should
+contain more entropy than can be provided by any seed, so calling
+\&\fIsrand()\fR again actually \fIloses\fR randomness.
+.Sp
+Most implementations of \f(CW\*(C`srand\*(C'\fR take an integer and will silently
+truncate decimal numbers.  This means \f(CW\*(C`srand(42)\*(C'\fR will usually
+produce the same results as \f(CW\*(C`srand(42.1)\*(C'\fR.  To be safe, always pass
+\&\f(CW\*(C`srand\*(C'\fR an integer.
+.Sp
+In versions of Perl prior to 5.004 the default seed was just the
+current \f(CW\*(C`time\*(C'\fR.  This isn't a particularly good seed, so many old
+programs supply their own seed value (often \f(CW\*(C`time ^ $$\*(C'\fR or \f(CW\*(C`time ^
+($$ + ($$ << 15))\*(C'\fR), but that isn't necessary any more.
+.Sp
+Note that you need something much more random than the default seed for
+cryptographic purposes.  Checksumming the compressed output of one or more
+rapidly changing operating system status programs is the usual method.  For
+example:
+.Sp
+.Vb 1
+\&    srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
+.Ve
+.Sp
+If you're particularly concerned with this, see the \f(CW\*(C`Math::TrulyRandom\*(C'\fR
+module in \s-1CPAN\s0.
+.Sp
+Frequently called programs (like \s-1CGI\s0 scripts) that simply use
+.Sp
+.Vb 1
+\&    time ^ $$
+.Ve
+.Sp
+for a seed can fall prey to the mathematical property that
+.Sp
+.Vb 1
+\&    a^b == (a+1)^(b+1)
+.Ve
+.Sp
+one-third of the time.  So don't do that.
+.IP "stat \s-1FILEHANDLE\s0" 8
+.IX Item "stat FILEHANDLE"
+.PD 0
+.IP "stat \s-1EXPR\s0" 8
+.IX Item "stat EXPR"
+.IP "stat" 8
+.IX Item "stat"
+.PD
+Returns a 13\-element list giving the status info for a file, either
+the file opened via \s-1FILEHANDLE\s0, or named by \s-1EXPR\s0.  If \s-1EXPR\s0 is omitted,
+it stats \f(CW$_\fR.  Returns a null list if the stat fails.  Typically used
+as follows:
+.Sp
+.Vb 3
+\&    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+\&       $atime,$mtime,$ctime,$blksize,$blocks)
+\&           = stat($filename);
+.Ve
+.Sp
+Not all fields are supported on all filesystem types.  Here are the
+meaning of the fields:
+.Sp
+.Vb 13
+\&  0 dev      device number of filesystem
+\&  1 ino      inode number
+\&  2 mode     file mode  (type and permissions)
+\&  3 nlink    number of (hard) links to the file
+\&  4 uid      numeric user ID of file's owner
+\&  5 gid      numeric group ID of file's owner
+\&  6 rdev     the device identifier (special files only)
+\&  7 size     total size of file, in bytes
+\&  8 atime    last access time in seconds since the epoch
+\&  9 mtime    last modify time in seconds since the epoch
+\& 10 ctime    inode change time in seconds since the epoch (*)
+\& 11 blksize  preferred block size for file system I/O
+\& 12 blocks   actual number of blocks allocated
+.Ve
+.Sp
+(The epoch was at 00:00 January 1, 1970 \s-1GMT\s0.)
+.Sp
+(*) The ctime field is non\-portable, in particular you cannot expect
+it to be a \*(L"creation time\*(R", see \*(L"Files and Filesystems\*(R" in perlport
+for details.
+.Sp
+If stat is passed the special filehandle consisting of an underline, no
+stat is done, but the current contents of the stat structure from the
+last stat or filetest are returned.  Example:
+.Sp
+.Vb 3
+\&    if (-x $file && (($d) = stat(_)) && $d < 0) {
+\&        print "$file is executable NFS file\en";
+\&    }
+.Ve
+.Sp
+(This works on machines only for which the device number is negative
+under \s-1NFS\s0.)
+.Sp
+Because the mode contains both the file type and its permissions, you
+should mask off the file type portion and (s)printf using a \f(CW"%o"\fR
+if you want to see the real permissions.
+.Sp
+.Vb 2
+\&    $mode = (stat($filename))[2];
+\&    printf "Permissions are %04o\en", $mode & 07777;
+.Ve
+.Sp
+In scalar context, \f(CW\*(C`stat\*(C'\fR returns a boolean value indicating success
+or failure, and, if successful, sets the information associated with
+the special filehandle \f(CW\*(C`_\*(C'\fR.
+.Sp
+The File::stat module provides a convenient, by-name access mechanism:
+.Sp
+.Vb 5
+\&    use File::stat;
+\&    $sb = stat($filename);
+\&    printf "File is %s, size is %s, perm %04o, mtime %s\en",
+\&        $filename, $sb->size, $sb->mode & 07777,
+\&        scalar localtime $sb->mtime;
+.Ve
+.Sp
+You can import symbolic mode constants (\f(CW\*(C`S_IF*\*(C'\fR) and functions
+(\f(CW\*(C`S_IS*\*(C'\fR) from the Fcntl module:
+.Sp
+.Vb 1
+\&    use Fcntl ':mode';
+.Ve
+.Sp
+.Vb 1
+\&    $mode = (stat($filename))[2];
+.Ve
+.Sp
+.Vb 3
+\&    $user_rwx      = ($mode & S_IRWXU) >> 6;
+\&    $group_read    = ($mode & S_IRGRP) >> 3;
+\&    $other_execute =  $mode & S_IXOTH;
+.Ve
+.Sp
+.Vb 1
+\&    printf "Permissions are %04o\en", S_IMODE($mode), "\en";
+.Ve
+.Sp
+.Vb 2
+\&    $is_setuid     =  $mode & S_ISUID;
+\&    $is_setgid     =  S_ISDIR($mode);
+.Ve
+.Sp
+You could write the last two using the \f(CW\*(C`\-u\*(C'\fR and \f(CW\*(C`\-d\*(C'\fR operators.
+The commonly available S_IF* constants are
+.Sp
+.Vb 1
+\&    # Permissions: read, write, execute, for user, group, others.
+.Ve
+.Sp
+.Vb 3
+\&    S_IRWXU S_IRUSR S_IWUSR S_IXUSR
+\&    S_IRWXG S_IRGRP S_IWGRP S_IXGRP
+\&    S_IRWXO S_IROTH S_IWOTH S_IXOTH
+.Ve
+.Sp
+.Vb 2
+\&    # Setuid/Setgid/Stickiness/SaveText.
+\&    # Note that the exact meaning of these is system dependent.
+.Ve
+.Sp
+.Vb 1
+\&    S_ISUID S_ISGID S_ISVTX S_ISTXT
+.Ve
+.Sp
+.Vb 1
+\&    # File types.  Not necessarily all are available on your system.
+.Ve
+.Sp
+.Vb 1
+\&    S_IFREG S_IFDIR S_IFLNK S_IFBLK S_ISCHR S_IFIFO S_IFSOCK S_IFWHT S_ENFMT
+.Ve
+.Sp
+.Vb 1
+\&    # The following are compatibility aliases for S_IRUSR, S_IWUSR, S_IXUSR.
+.Ve
+.Sp
+.Vb 1
+\&    S_IREAD S_IWRITE S_IEXEC
+.Ve
+.Sp
+and the S_IF* functions are
+.Sp
+.Vb 2
+\&    S_IMODE($mode)      the part of $mode containing the permission bits
+\&                        and the setuid/setgid/sticky bits
+.Ve
+.Sp
+.Vb 3
+\&    S_IFMT($mode)       the part of $mode containing the file type
+\&                        which can be bit-anded with e.g. S_IFREG
+\&                        or with the following functions
+.Ve
+.Sp
+.Vb 1
+\&    # The operators -f, -d, -l, -b, -c, -p, and -s.
+.Ve
+.Sp
+.Vb 2
+\&    S_ISREG($mode) S_ISDIR($mode) S_ISLNK($mode)
+\&    S_ISBLK($mode) S_ISCHR($mode) S_ISFIFO($mode) S_ISSOCK($mode)
+.Ve
+.Sp
+.Vb 3
+\&    # No direct -X operator counterpart, but for the first one
+\&    # the -g operator is often equivalent.  The ENFMT stands for
+\&    # record flocking enforcement, a platform-dependent feature.
+.Ve
+.Sp
+.Vb 1
+\&    S_ISENFMT($mode) S_ISWHT($mode)
+.Ve
+.Sp
+See your native \fIchmod\fR\|(2) and \fIstat\fR\|(2) documentation for more details
+about the S_* constants.
+.Sp
+To get status info for a symbolic link instead of the target file
+behind the link, use the \f(CW\*(C`lstat\*(C'\fR function, see \*(L"stat\*(R".
+.IP "study \s-1SCALAR\s0" 8
+.IX Item "study SCALAR"
+.PD 0
+.IP "study" 8
+.IX Item "study"
+.PD
+Takes extra time to study \s-1SCALAR\s0 (\f(CW$_\fR if unspecified) in anticipation of
+doing many pattern matches on the string before it is next modified.
+This may or may not save time, depending on the nature and number of
+patterns you are searching on, and on the distribution of character
+frequencies in the string to be searched\*(--you probably want to compare
+run times with and without it to see which runs faster.  Those loops
+which scan for many short constant strings (including the constant
+parts of more complex patterns) will benefit most.  You may have only
+one \f(CW\*(C`study\*(C'\fR active at a time\*(--if you study a different scalar the first
+is \*(L"unstudied\*(R".  (The way \f(CW\*(C`study\*(C'\fR works is this: a linked list of every
+character in the string to be searched is made, so we know, for
+example, where all the \f(CW'k'\fR characters are.  From each search string,
+the rarest character is selected, based on some static frequency tables
+constructed from some C programs and English text.  Only those places
+that contain this \*(L"rarest\*(R" character are examined.)
+.Sp
+For example, here is a loop that inserts index producing entries
+before any line containing a certain pattern:
+.Sp
+.Vb 8
+\&    while (<>) {
+\&        study;
+\&        print ".IX foo\en"       if /\ebfoo\eb/;
+\&        print ".IX bar\en"       if /\ebbar\eb/;
+\&        print ".IX blurfl\en"    if /\ebblurfl\eb/;
+\&        # ...
+\&        print;
+\&    }
+.Ve
+.Sp
+In searching for \f(CW\*(C`/\ebfoo\eb/\*(C'\fR, only those locations in \f(CW$_\fR that contain \f(CW\*(C`f\*(C'\fR
+will be looked at, because \f(CW\*(C`f\*(C'\fR is rarer than \f(CW\*(C`o\*(C'\fR.  In general, this is
+a big win except in pathological cases.  The only question is whether
+it saves you more time than it took to build the linked list in the
+first place.
+.Sp
+Note that if you have to look for strings that you don't know till
+runtime, you can build an entire loop as a string and \f(CW\*(C`eval\*(C'\fR that to
+avoid recompiling all your patterns all the time.  Together with
+undefining \f(CW$/\fR to input entire files as one record, this can be very
+fast, often faster than specialized programs like \fIfgrep\fR\|(1).  The following
+scans a list of files (\f(CW at files\fR) for a list of words (\f(CW at words\fR), and prints
+out the names of those files that contain a match:
+.Sp
+.Vb 12
+\&    $search = 'while (<>) { study;';
+\&    foreach $word (@words) {
+\&        $search .= "++\e$seen{\e$ARGV} if /\e\eb$word\e\eb/;\en";
+\&    }
+\&    $search .= "}";
+\&    @ARGV = @files;
+\&    undef $/;
+\&    eval $search;               # this screams
+\&    $/ = "\en";          # put back to normal input delimiter
+\&    foreach $file (sort keys(%seen)) {
+\&        print $file, "\en";
+\&    }
+.Ve
+.IP "sub \s-1NAME\s0 \s-1BLOCK\s0" 8
+.IX Item "sub NAME BLOCK"
+.PD 0
+.IP "sub \s-1NAME\s0 (\s-1PROTO\s0) \s-1BLOCK\s0" 8
+.IX Item "sub NAME (PROTO) BLOCK"
+.IP "sub \s-1NAME\s0 : \s-1ATTRS\s0 \s-1BLOCK\s0" 8
+.IX Item "sub NAME : ATTRS BLOCK"
+.IP "sub \s-1NAME\s0 (\s-1PROTO\s0) : \s-1ATTRS\s0 \s-1BLOCK\s0" 8
+.IX Item "sub NAME (PROTO) : ATTRS BLOCK"
+.PD
+This is subroutine definition, not a real function \fIper se\fR.
+Without a \s-1BLOCK\s0 it's just a forward declaration.  Without a \s-1NAME\s0,
+it's an anonymous function declaration, and does actually return
+a value: the \s-1CODE\s0 ref of the closure you just created.
+.Sp
+See perlsub and perlref for details about subroutines and
+references, and attributes and Attribute::Handlers for more
+information about attributes.
+.IP "substr \s-1EXPR\s0,OFFSET,LENGTH,REPLACEMENT" 8
+.IX Item "substr EXPR,OFFSET,LENGTH,REPLACEMENT"
+.PD 0
+.IP "substr \s-1EXPR\s0,OFFSET,LENGTH" 8
+.IX Item "substr EXPR,OFFSET,LENGTH"
+.IP "substr \s-1EXPR\s0,OFFSET" 8
+.IX Item "substr EXPR,OFFSET"
+.PD
+Extracts a substring out of \s-1EXPR\s0 and returns it.  First character is at
+offset \f(CW0\fR, or whatever you've set \f(CW$[\fR to (but don't do that).
+If \s-1OFFSET\s0 is negative (or more precisely, less than \f(CW$[\fR), starts
+that far from the end of the string.  If \s-1LENGTH\s0 is omitted, returns
+everything to the end of the string.  If \s-1LENGTH\s0 is negative, leaves that
+many characters off the end of the string.
+.Sp
+You can use the \fIsubstr()\fR function as an lvalue, in which case \s-1EXPR\s0
+must itself be an lvalue.  If you assign something shorter than \s-1LENGTH\s0,
+the string will shrink, and if you assign something longer than \s-1LENGTH\s0,
+the string will grow to accommodate it.  To keep the string the same
+length you may need to pad or chop your value using \f(CW\*(C`sprintf\*(C'\fR.
+.Sp
+If \s-1OFFSET\s0 and \s-1LENGTH\s0 specify a substring that is partly outside the
+string, only the part within the string is returned.  If the substring
+is beyond either end of the string, \fIsubstr()\fR returns the undefined
+value and produces a warning.  When used as an lvalue, specifying a
+substring that is entirely outside the string is a fatal error.
+Here's an example showing the behavior for boundary cases:
+.Sp
+.Vb 5
+\&    my $name = 'fred';
+\&    substr($name, 4) = 'dy';            # $name is now 'freddy'
+\&    my $null = substr $name, 6, 2;      # returns '' (no warning)
+\&    my $oops = substr $name, 7;         # returns undef, with warning
+\&    substr($name, 7) = 'gap';           # fatal error
+.Ve
+.Sp
+An alternative to using \fIsubstr()\fR as an lvalue is to specify the
+replacement string as the 4th argument.  This allows you to replace
+parts of the \s-1EXPR\s0 and return what was there before in one operation,
+just as you can with \fIsplice()\fR.
+.Sp
+If the lvalue returned by substr is used after the \s-1EXPR\s0 is changed in
+any way, the behaviour may not be as expected and is subject to change.
+This caveat includes code such as \f(CW\*(C`print(substr($foo,$a,$b)=$bar)\*(C'\fR or
+\&\f(CW\*(C`(substr($foo,$a,$b)=$bar)=$fud\*(C'\fR (where \f(CW$foo\fR is changed via the
+substring assignment, and then the substr is used again), or where a
+\&\fIsubstr()\fR is aliased via a \f(CW\*(C`foreach\*(C'\fR loop or passed as a parameter or
+a reference to it is taken and then the alias, parameter, or deref'd
+reference either is used after the original \s-1EXPR\s0 has been changed or
+is assigned to and then used a second time.
+.IP "symlink \s-1OLDFILE\s0,NEWFILE" 8
+.IX Item "symlink OLDFILE,NEWFILE"
+Creates a new filename symbolically linked to the old filename.
+Returns \f(CW1\fR for success, \f(CW0\fR otherwise.  On systems that don't support
+symbolic links, produces a fatal error at run time.  To check for that,
+use eval:
+.Sp
+.Vb 1
+\&    $symlink_exists = eval { symlink("",""); 1 };
+.Ve
+.IP "syscall \s-1NUMBER\s0, \s-1LIST\s0" 8
+.IX Item "syscall NUMBER, LIST"
+Calls the system call specified as the first element of the list,
+passing the remaining elements as arguments to the system call.  If
+unimplemented, produces a fatal error.  The arguments are interpreted
+as follows: if a given argument is numeric, the argument is passed as
+an int.  If not, the pointer to the string value is passed.  You are
+responsible to make sure a string is pre-extended long enough to
+receive any result that might be written into a string.  You can't use a
+string literal (or other read-only string) as an argument to \f(CW\*(C`syscall\*(C'\fR
+because Perl has to assume that any string pointer might be written
+through.  If your
+integer arguments are not literals and have never been interpreted in a
+numeric context, you may need to add \f(CW0\fR to them to force them to look
+like numbers.  This emulates the \f(CW\*(C`syswrite\*(C'\fR function (or vice versa):
+.Sp
+.Vb 3
+\&    require 'syscall.ph';               # may need to run h2ph
+\&    $s = "hi there\en";
+\&    syscall(&SYS_write, fileno(STDOUT), $s, length $s);
+.Ve
+.Sp
+Note that Perl supports passing of up to only 14 arguments to your system call,
+which in practice should usually suffice.
+.Sp
+Syscall returns whatever value returned by the system call it calls.
+If the system call fails, \f(CW\*(C`syscall\*(C'\fR returns \f(CW\*(C`\-1\*(C'\fR and sets \f(CW$!\fR (errno).
+Note that some system calls can legitimately return \f(CW\*(C`\-1\*(C'\fR.  The proper
+way to handle such calls is to assign \f(CW\*(C`$!=0;\*(C'\fR before the call and
+check the value of \f(CW$!\fR if syscall returns \f(CW\*(C`\-1\*(C'\fR.
+.Sp
+There's a problem with \f(CW\*(C`syscall(&SYS_pipe)\*(C'\fR: it returns the file
+number of the read end of the pipe it creates.  There is no way
+to retrieve the file number of the other end.  You can avoid this
+problem by using \f(CW\*(C`pipe\*(C'\fR instead.
+.IP "sysopen \s-1FILEHANDLE\s0,FILENAME,MODE" 8
+.IX Item "sysopen FILEHANDLE,FILENAME,MODE"
+.PD 0
+.IP "sysopen \s-1FILEHANDLE\s0,FILENAME,MODE,PERMS" 8
+.IX Item "sysopen FILEHANDLE,FILENAME,MODE,PERMS"
+.PD
+Opens the file whose filename is given by \s-1FILENAME\s0, and associates it
+with \s-1FILEHANDLE\s0.  If \s-1FILEHANDLE\s0 is an expression, its value is used as
+the name of the real filehandle wanted.  This function calls the
+underlying operating system's \f(CW\*(C`open\*(C'\fR function with the parameters
+\&\s-1FILENAME\s0, \s-1MODE\s0, \s-1PERMS\s0.
+.Sp
+The possible values and flag bits of the \s-1MODE\s0 parameter are
+system\-dependent; they are available via the standard module \f(CW\*(C`Fcntl\*(C'\fR.
+See the documentation of your operating system's \f(CW\*(C`open\*(C'\fR to see which
+values and flag bits are available.  You may combine several flags
+using the \f(CW\*(C`|\*(C'\fR\-operator.
+.Sp
+Some of the most common values are \f(CW\*(C`O_RDONLY\*(C'\fR for opening the file in
+read-only mode, \f(CW\*(C`O_WRONLY\*(C'\fR for opening the file in write-only mode,
+and \f(CW\*(C`O_RDWR\*(C'\fR for opening the file in read-write mode, and.
+.Sp
+For historical reasons, some values work on almost every system
+supported by perl: zero means read\-only, one means write\-only, and two
+means read/write.  We know that these values do \fInot\fR work under
+\&\s-1OS/390\s0 & \s-1VM/ESA\s0 Unix and on the Macintosh; you probably don't want to
+use them in new code.
+.Sp
+If the file named by \s-1FILENAME\s0 does not exist and the \f(CW\*(C`open\*(C'\fR call creates
+it (typically because \s-1MODE\s0 includes the \f(CW\*(C`O_CREAT\*(C'\fR flag), then the value of
+\&\s-1PERMS\s0 specifies the permissions of the newly created file.  If you omit
+the \s-1PERMS\s0 argument to \f(CW\*(C`sysopen\*(C'\fR, Perl uses the octal value \f(CW0666\fR.
+These permission values need to be in octal, and are modified by your
+process's current \f(CW\*(C`umask\*(C'\fR.
+.Sp
+In many systems the \f(CW\*(C`O_EXCL\*(C'\fR flag is available for opening files in
+exclusive mode.  This is \fBnot\fR locking: exclusiveness means here that
+if the file already exists, \fIsysopen()\fR fails.  The \f(CW\*(C`O_EXCL\*(C'\fR wins
+\&\f(CW\*(C`O_TRUNC\*(C'\fR.
+.Sp
+Sometimes you may want to truncate an already-existing file: \f(CW\*(C`O_TRUNC\*(C'\fR.
+.Sp
+You should seldom if ever use \f(CW0644\fR as argument to \f(CW\*(C`sysopen\*(C'\fR, because
+that takes away the user's option to have a more permissive umask.
+Better to omit it.  See the \fIperlfunc\fR\|(1) entry on \f(CW\*(C`umask\*(C'\fR for more
+on this.
+.Sp
+Note that \f(CW\*(C`sysopen\*(C'\fR depends on the \fIfdopen()\fR C library function.
+On many \s-1UNIX\s0 systems, \fIfdopen()\fR is known to fail when file descriptors
+exceed a certain value, typically 255. If you need more file
+descriptors than that, consider rebuilding Perl to use the \f(CW\*(C`sfio\*(C'\fR
+library, or perhaps using the \fIPOSIX::open()\fR function.
+.Sp
+See perlopentut for a kinder, gentler explanation of opening files.
+.IP "sysread \s-1FILEHANDLE\s0,SCALAR,LENGTH,OFFSET" 8
+.IX Item "sysread FILEHANDLE,SCALAR,LENGTH,OFFSET"
+.PD 0
+.IP "sysread \s-1FILEHANDLE\s0,SCALAR,LENGTH" 8
+.IX Item "sysread FILEHANDLE,SCALAR,LENGTH"
+.PD
+Attempts to read \s-1LENGTH\s0 bytes of data into variable \s-1SCALAR\s0 from the
+specified \s-1FILEHANDLE\s0, using the system call \fIread\fR\|(2).  It bypasses
+buffered \s-1IO\s0, so mixing this with other kinds of reads, \f(CW\*(C`print\*(C'\fR,
+\&\f(CW\*(C`write\*(C'\fR, \f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, or \f(CW\*(C`eof\*(C'\fR can cause confusion because the
+perlio or stdio layers usually buffers data.  Returns the number of
+bytes actually read, \f(CW0\fR at end of file, or undef if there was an
+error (in the latter case \f(CW$!\fR is also set).  \s-1SCALAR\s0 will be grown or
+shrunk so that the last byte actually read is the last byte of the
+scalar after the read.
+.Sp
+An \s-1OFFSET\s0 may be specified to place the read data at some place in the
+string other than the beginning.  A negative \s-1OFFSET\s0 specifies
+placement at that many characters counting backwards from the end of
+the string.  A positive \s-1OFFSET\s0 greater than the length of \s-1SCALAR\s0
+results in the string being padded to the required size with \f(CW"\e0"\fR
+bytes before the result of the read is appended.
+.Sp
+There is no \fIsyseof()\fR function, which is ok, since \fIeof()\fR doesn't work
+very well on device files (like ttys) anyway.  Use \fIsysread()\fR and check
+for a return value for 0 to decide whether you're done.
+.Sp
+Note that if the filehandle has been marked as \f(CW\*(C`:utf8\*(C'\fR Unicode
+characters are read instead of bytes (the \s-1LENGTH\s0, \s-1OFFSET\s0, and the
+return value of \fIsysread()\fR are in Unicode characters).
+The \f(CW\*(C`:encoding(...)\*(C'\fR layer implicitly introduces the \f(CW\*(C`:utf8\*(C'\fR layer.
+See \*(L"binmode\*(R", \*(L"open\*(R", and the \f(CW\*(C`open\*(C'\fR pragma, open.
+.IP "sysseek \s-1FILEHANDLE\s0,POSITION,WHENCE" 8
+.IX Item "sysseek FILEHANDLE,POSITION,WHENCE"
+Sets \s-1FILEHANDLE\s0's system position in bytes using the system call
+\&\fIlseek\fR\|(2).  \s-1FILEHANDLE\s0 may be an expression whose value gives the name
+of the filehandle.  The values for \s-1WHENCE\s0 are \f(CW0\fR to set the new
+position to \s-1POSITION\s0, \f(CW1\fR to set the it to the current position plus
+\&\s-1POSITION\s0, and \f(CW2\fR to set it to \s-1EOF\s0 plus \s-1POSITION\s0 (typically
+negative).
+.Sp
+Note the \fIin bytes\fR: even if the filehandle has been set to operate
+on characters (for example by using the \f(CW\*(C`:utf8\*(C'\fR I/O layer), \fItell()\fR
+will return byte offsets, not character offsets (because implementing
+that would render \fIsysseek()\fR very slow).
+.Sp
+\&\fIsysseek()\fR bypasses normal buffered \s-1IO\s0, so mixing this with reads (other
+than \f(CW\*(C`sysread\*(C'\fR, for example >&lt or \fIread()\fR) \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`write\*(C'\fR,
+\&\f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, or \f(CW\*(C`eof\*(C'\fR may cause confusion.
+.Sp
+For \s-1WHENCE\s0, you may also use the constants \f(CW\*(C`SEEK_SET\*(C'\fR, \f(CW\*(C`SEEK_CUR\*(C'\fR,
+and \f(CW\*(C`SEEK_END\*(C'\fR (start of the file, current position, end of the file)
+from the Fcntl module.  Use of the constants is also more portable
+than relying on 0, 1, and 2.  For example to define a \*(L"systell\*(R" function:
+.Sp
+.Vb 2
+\&        use Fcntl 'SEEK_CUR';
+\&        sub systell { sysseek($_[0], 0, SEEK_CUR) }
+.Ve
+.Sp
+Returns the new position, or the undefined value on failure.  A position
+of zero is returned as the string \f(CW"0 but true"\fR; thus \f(CW\*(C`sysseek\*(C'\fR returns
+true on success and false on failure, yet you can still easily determine
+the new position.
+.IP "system \s-1LIST\s0" 8
+.IX Item "system LIST"
+.PD 0
+.IP "system \s-1PROGRAM\s0 \s-1LIST\s0" 8
+.IX Item "system PROGRAM LIST"
+.PD
+Does exactly the same thing as \f(CW\*(C`exec LIST\*(C'\fR, except that a fork is
+done first, and the parent process waits for the child process to
+complete.  Note that argument processing varies depending on the
+number of arguments.  If there is more than one argument in \s-1LIST\s0,
+or if \s-1LIST\s0 is an array with more than one value, starts the program
+given by the first element of the list with arguments given by the
+rest of the list.  If there is only one scalar argument, the argument
+is checked for shell metacharacters, and if there are any, the
+entire argument is passed to the system's command shell for parsing
+(this is \f(CW\*(C`/bin/sh \-c\*(C'\fR on Unix platforms, but varies on other
+platforms).  If there are no shell metacharacters in the argument,
+it is split into words and passed directly to \f(CW\*(C`execvp\*(C'\fR, which is
+more efficient.
+.Sp
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before any operation that may do a fork, but this may not be
+supported on some platforms (see perlport).  To be safe, you may need
+to set \f(CW$|\fR ($AUTOFLUSH in English) or call the \f(CW\*(C`autoflush()\*(C'\fR method
+of \f(CW\*(C`IO::Handle\*(C'\fR on any open handles.
+.Sp
+The return value is the exit status of the program as returned by the
+\&\f(CW\*(C`wait\*(C'\fR call.  To get the actual exit value shift right by eight (see below).
+See also \*(L"exec\*(R".  This is \fInot\fR what you want to use to capture
+the output from a command, for that you should use merely backticks or
+\&\f(CW\*(C`qx//\*(C'\fR, as described in \*(L"`STRING`\*(R" in perlop.  Return value of \-1
+indicates a failure to start the program (inspect $! for the reason).
+.Sp
+Like \f(CW\*(C`exec\*(C'\fR, \f(CW\*(C`system\*(C'\fR allows you to lie to a program about its name if
+you use the \f(CW\*(C`system PROGRAM LIST\*(C'\fR syntax.  Again, see \*(L"exec\*(R".
+.Sp
+Because \f(CW\*(C`system\*(C'\fR and backticks block \f(CW\*(C`SIGINT\*(C'\fR and \f(CW\*(C`SIGQUIT\*(C'\fR,
+killing the program they're running doesn't actually interrupt
+your program.
+.Sp
+.Vb 3
+\&    @args = ("command", "arg1", "arg2");
+\&    system(@args) == 0
+\&         or die "system @args failed: $?"
+.Ve
+.Sp
+You can check all the failure possibilities by inspecting
+\&\f(CW$?\fR like this:
+.Sp
+.Vb 10
+\&    if ($? == -1) {
+\&        print "failed to execute: $!\en";
+\&    }
+\&    elsif ($? & 127) {
+\&        printf "child died with signal %d, %s coredump\en",
+\&            ($? & 127),  ($? & 128) ? 'with' : 'without';
+\&    }
+\&    else {
+\&        printf "child exited with value %d\en", $? >> 8;
+\&    }
+.Ve
+.Sp
+or more portably by using the W*() calls of the \s-1POSIX\s0 extension;
+see perlport for more information.
+.Sp
+When the arguments get executed via the system shell, results
+and return codes will be subject to its quirks and capabilities.
+See \*(L"`STRING`\*(R" in perlop and \*(L"exec\*(R" for details.
+.IP "syswrite \s-1FILEHANDLE\s0,SCALAR,LENGTH,OFFSET" 8
+.IX Item "syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET"
+.PD 0
+.IP "syswrite \s-1FILEHANDLE\s0,SCALAR,LENGTH" 8
+.IX Item "syswrite FILEHANDLE,SCALAR,LENGTH"
+.IP "syswrite \s-1FILEHANDLE\s0,SCALAR" 8
+.IX Item "syswrite FILEHANDLE,SCALAR"
+.PD
+Attempts to write \s-1LENGTH\s0 bytes of data from variable \s-1SCALAR\s0 to the
+specified \s-1FILEHANDLE\s0, using the system call \fIwrite\fR\|(2).  If \s-1LENGTH\s0 is
+not specified, writes whole \s-1SCALAR\s0.  It bypasses buffered \s-1IO\s0, so
+mixing this with reads (other than \f(CWsysread())\fR, \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`write\*(C'\fR,
+\&\f(CW\*(C`seek\*(C'\fR, \f(CW\*(C`tell\*(C'\fR, or \f(CW\*(C`eof\*(C'\fR may cause confusion because the perlio and
+stdio layers usually buffers data.  Returns the number of bytes
+actually written, or \f(CW\*(C`undef\*(C'\fR if there was an error (in this case the
+errno variable \f(CW$!\fR is also set).  If the \s-1LENGTH\s0 is greater than the
+available data in the \s-1SCALAR\s0 after the \s-1OFFSET\s0, only as much data as is
+available will be written.
+.Sp
+An \s-1OFFSET\s0 may be specified to write the data from some part of the
+string other than the beginning.  A negative \s-1OFFSET\s0 specifies writing
+that many characters counting backwards from the end of the string.
+In the case the \s-1SCALAR\s0 is empty you can use \s-1OFFSET\s0 but only zero offset.
+.Sp
+Note that if the filehandle has been marked as \f(CW\*(C`:utf8\*(C'\fR, Unicode
+characters are written instead of bytes (the \s-1LENGTH\s0, \s-1OFFSET\s0, and the
+return value of \fIsyswrite()\fR are in \s-1UTF\-8\s0 encoded Unicode characters).
+The \f(CW\*(C`:encoding(...)\*(C'\fR layer implicitly introduces the \f(CW\*(C`:utf8\*(C'\fR layer.
+See \*(L"binmode\*(R", \*(L"open\*(R", and the \f(CW\*(C`open\*(C'\fR pragma, open.
+.IP "tell \s-1FILEHANDLE\s0" 8
+.IX Item "tell FILEHANDLE"
+.PD 0
+.IP "tell" 8
+.IX Item "tell"
+.PD
+Returns the current position \fIin bytes\fR for \s-1FILEHANDLE\s0, or \-1 on
+error.  \s-1FILEHANDLE\s0 may be an expression whose value gives the name of
+the actual filehandle.  If \s-1FILEHANDLE\s0 is omitted, assumes the file
+last read.
+.Sp
+Note the \fIin bytes\fR: even if the filehandle has been set to
+operate on characters (for example by using the \f(CW\*(C`:utf8\*(C'\fR open
+layer), \fItell()\fR will return byte offsets, not character offsets
+(because that would render \fIseek()\fR and \fItell()\fR rather slow).
+.Sp
+The return value of \fItell()\fR for the standard streams like the \s-1STDIN\s0
+depends on the operating system: it may return \-1 or something else.
+\&\fItell()\fR on pipes, fifos, and sockets usually returns \-1.
+.Sp
+There is no \f(CW\*(C`systell\*(C'\fR function.  Use \f(CW\*(C`sysseek(FH, 0, 1)\*(C'\fR for that.
+.Sp
+Do not use \fItell()\fR on a filehandle that has been opened using
+\&\fIsysopen()\fR, use \fIsysseek()\fR for that as described above.  Why?  Because
+\&\fIsysopen()\fR creates unbuffered, \*(L"raw\*(R", filehandles, while \fIopen()\fR creates
+buffered filehandles.  \fIsysseek()\fR make sense only on the first kind,
+\&\fItell()\fR only makes sense on the second kind.
+.IP "telldir \s-1DIRHANDLE\s0" 8
+.IX Item "telldir DIRHANDLE"
+Returns the current position of the \f(CW\*(C`readdir\*(C'\fR routines on \s-1DIRHANDLE\s0.
+Value may be given to \f(CW\*(C`seekdir\*(C'\fR to access a particular location in a
+directory.  Has the same caveats about possible directory compaction as
+the corresponding system library routine.
+.IP "tie \s-1VARIABLE\s0,CLASSNAME,LIST" 8
+.IX Item "tie VARIABLE,CLASSNAME,LIST"
+This function binds a variable to a package class that will provide the
+implementation for the variable.  \s-1VARIABLE\s0 is the name of the variable
+to be enchanted.  \s-1CLASSNAME\s0 is the name of a class implementing objects
+of correct type.  Any additional arguments are passed to the \f(CW\*(C`new\*(C'\fR
+method of the class (meaning \f(CW\*(C`TIESCALAR\*(C'\fR, \f(CW\*(C`TIEHANDLE\*(C'\fR, \f(CW\*(C`TIEARRAY\*(C'\fR,
+or \f(CW\*(C`TIEHASH\*(C'\fR).  Typically these are arguments such as might be passed
+to the \f(CW\*(C`dbm_open()\*(C'\fR function of C.  The object returned by the \f(CW\*(C`new\*(C'\fR
+method is also returned by the \f(CW\*(C`tie\*(C'\fR function, which would be useful
+if you want to access other methods in \s-1CLASSNAME\s0.
+.Sp
+Note that functions such as \f(CW\*(C`keys\*(C'\fR and \f(CW\*(C`values\*(C'\fR may return huge lists
+when used on large objects, like \s-1DBM\s0 files.  You may prefer to use the
+\&\f(CW\*(C`each\*(C'\fR function to iterate over such.  Example:
+.Sp
+.Vb 7
+\&    # print out history file offsets
+\&    use NDBM_File;
+\&    tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
+\&    while (($key,$val) = each %HIST) {
+\&        print $key, ' = ', unpack('L',$val), "\en";
+\&    }
+\&    untie(%HIST);
+.Ve
+.Sp
+A class implementing a hash should have the following methods:
+.Sp
+.Vb 10
+\&    TIEHASH classname, LIST
+\&    FETCH this, key
+\&    STORE this, key, value
+\&    DELETE this, key
+\&    CLEAR this
+\&    EXISTS this, key
+\&    FIRSTKEY this
+\&    NEXTKEY this, lastkey
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+A class implementing an ordinary array should have the following methods:
+.Sp
+.Vb 14
+\&    TIEARRAY classname, LIST
+\&    FETCH this, key
+\&    STORE this, key, value
+\&    FETCHSIZE this
+\&    STORESIZE this, count
+\&    CLEAR this
+\&    PUSH this, LIST
+\&    POP this
+\&    SHIFT this
+\&    UNSHIFT this, LIST
+\&    SPLICE this, offset, length, LIST
+\&    EXTEND this, count
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+A class implementing a file handle should have the following methods:
+.Sp
+.Vb 16
+\&    TIEHANDLE classname, LIST
+\&    READ this, scalar, length, offset
+\&    READLINE this
+\&    GETC this
+\&    WRITE this, scalar, length, offset
+\&    PRINT this, LIST
+\&    PRINTF this, format, LIST
+\&    BINMODE this
+\&    EOF this
+\&    FILENO this
+\&    SEEK this, position, whence
+\&    TELL this
+\&    OPEN this, mode, LIST
+\&    CLOSE this
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+A class implementing a scalar should have the following methods:
+.Sp
+.Vb 5
+\&    TIESCALAR classname, LIST
+\&    FETCH this,
+\&    STORE this, value
+\&    DESTROY this
+\&    UNTIE this
+.Ve
+.Sp
+Not all methods indicated above need be implemented.  See perltie,
+Tie::Hash, Tie::Array, Tie::Scalar, and Tie::Handle.
+.Sp
+Unlike \f(CW\*(C`dbmopen\*(C'\fR, the \f(CW\*(C`tie\*(C'\fR function will not use or require a module
+for you\*(--you need to do that explicitly yourself.  See DB_File
+or the \fIConfig\fR module for interesting \f(CW\*(C`tie\*(C'\fR implementations.
+.Sp
+For further details see perltie, \*(L"tied \s-1VARIABLE\s0\*(R".
+.IP "tied \s-1VARIABLE\s0" 8
+.IX Item "tied VARIABLE"
+Returns a reference to the object underlying \s-1VARIABLE\s0 (the same value
+that was originally returned by the \f(CW\*(C`tie\*(C'\fR call that bound the variable
+to a package.)  Returns the undefined value if \s-1VARIABLE\s0 isn't tied to a
+package.
+.IP "time" 8
+.IX Item "time"
+Returns the number of non-leap seconds since whatever time the system
+considers to be the epoch (that's 00:00:00, January 1, 1904 for Mac \s-1OS\s0,
+and 00:00:00 \s-1UTC\s0, January 1, 1970 for most other systems).
+Suitable for feeding to \f(CW\*(C`gmtime\*(C'\fR and \f(CW\*(C`localtime\*(C'\fR.
+.Sp
+For measuring time in better granularity than one second,
+you may use either the Time::HiRes module (from \s-1CPAN\s0, and starting from
+Perl 5.8 part of the standard distribution), or if you have
+\&\fIgettimeofday\fR\|(2), you may be able to use the \f(CW\*(C`syscall\*(C'\fR interface of Perl.
+See perlfaq8 for details.
+.IP "times" 8
+.IX Item "times"
+Returns a four-element list giving the user and system times, in
+seconds, for this process and the children of this process.
+.Sp
+.Vb 1
+\&    ($user,$system,$cuser,$csystem) = times;
+.Ve
+.Sp
+In scalar context, \f(CW\*(C`times\*(C'\fR returns \f(CW$user\fR.
+.IP "tr///" 8
+.IX Item "tr///"
+The transliteration operator.  Same as \f(CW\*(C`y///\*(C'\fR.  See perlop.
+.IP "truncate \s-1FILEHANDLE\s0,LENGTH" 8
+.IX Item "truncate FILEHANDLE,LENGTH"
+.PD 0
+.IP "truncate \s-1EXPR\s0,LENGTH" 8
+.IX Item "truncate EXPR,LENGTH"
+.PD
+Truncates the file opened on \s-1FILEHANDLE\s0, or named by \s-1EXPR\s0, to the
+specified length.  Produces a fatal error if truncate isn't implemented
+on your system.  Returns true if successful, the undefined value
+otherwise.
+.Sp
+The behavior is undefined if \s-1LENGTH\s0 is greater than the length of the
+file.
+.IP "uc \s-1EXPR\s0" 8
+.IX Item "uc EXPR"
+.PD 0
+.IP "uc" 8
+.IX Item "uc"
+.PD
+Returns an uppercased version of \s-1EXPR\s0.  This is the internal function
+implementing the \f(CW\*(C`\eU\*(C'\fR escape in double-quoted strings.  Respects
+current \s-1LC_CTYPE\s0 locale if \f(CW\*(C`use locale\*(C'\fR in force.  See perllocale
+and perlunicode for more details about locale and Unicode support.
+It does not attempt to do titlecase mapping on initial letters.  See
+\&\f(CW\*(C`ucfirst\*(C'\fR for that.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "ucfirst \s-1EXPR\s0" 8
+.IX Item "ucfirst EXPR"
+.PD 0
+.IP "ucfirst" 8
+.IX Item "ucfirst"
+.PD
+Returns the value of \s-1EXPR\s0 with the first character in uppercase
+(titlecase in Unicode).  This is the internal function implementing
+the \f(CW\*(C`\eu\*(C'\fR escape in double-quoted strings.  Respects current \s-1LC_CTYPE\s0
+locale if \f(CW\*(C`use locale\*(C'\fR in force.  See perllocale and perlunicode
+for more details about locale and Unicode support.
+.Sp
+If \s-1EXPR\s0 is omitted, uses \f(CW$_\fR.
+.IP "umask \s-1EXPR\s0" 8
+.IX Item "umask EXPR"
+.PD 0
+.IP "umask" 8
+.IX Item "umask"
+.PD
+Sets the umask for the process to \s-1EXPR\s0 and returns the previous value.
+If \s-1EXPR\s0 is omitted, merely returns the current umask.
+.Sp
+The Unix permission \f(CW\*(C`rwxr\-x\-\-\-\*(C'\fR is represented as three sets of three
+bits, or three octal digits: \f(CW0750\fR (the leading 0 indicates octal
+and isn't one of the digits).  The \f(CW\*(C`umask\*(C'\fR value is such a number
+representing disabled permissions bits.  The permission (or \*(L"mode\*(R")
+values you pass \f(CW\*(C`mkdir\*(C'\fR or \f(CW\*(C`sysopen\*(C'\fR are modified by your umask, so
+even if you tell \f(CW\*(C`sysopen\*(C'\fR to create a file with permissions \f(CW0777\fR,
+if your umask is \f(CW0022\fR then the file will actually be created with
+permissions \f(CW0755\fR.  If your \f(CW\*(C`umask\*(C'\fR were \f(CW0027\fR (group can't
+write; others can't read, write, or execute), then passing
+\&\f(CW\*(C`sysopen\*(C'\fR \f(CW0666\fR would create a file with mode \f(CW0640\fR (\f(CW\*(C`0666 &~
+027\*(C'\fR is \f(CW0640\fR).
+.Sp
+Here's some advice: supply a creation mode of \f(CW0666\fR for regular
+files (in \f(CW\*(C`sysopen\*(C'\fR) and one of \f(CW0777\fR for directories (in
+\&\f(CW\*(C`mkdir\*(C'\fR) and executable files.  This gives users the freedom of
+choice: if they want protected files, they might choose process umasks
+of \f(CW022\fR, \f(CW027\fR, or even the particularly antisocial mask of \f(CW077\fR.
+Programs should rarely if ever make policy decisions better left to
+the user.  The exception to this is when writing files that should be
+kept private: mail files, web browser cookies, \fI.rhosts\fR files, and
+so on.
+.Sp
+If \fIumask\fR\|(2) is not implemented on your system and you are trying to
+restrict access for \fIyourself\fR (i.e., (\s-1EXPR\s0 & 0700) > 0), produces a
+fatal error at run time.  If \fIumask\fR\|(2) is not implemented and you are
+not trying to restrict access for yourself, returns \f(CW\*(C`undef\*(C'\fR.
+.Sp
+Remember that a umask is a number, usually given in octal; it is \fInot\fR a
+string of octal digits.  See also \*(L"oct\*(R", if all you have is a string.
+.IP "undef \s-1EXPR\s0" 8
+.IX Item "undef EXPR"
+.PD 0
+.IP "undef" 8
+.IX Item "undef"
+.PD
+Undefines the value of \s-1EXPR\s0, which must be an lvalue.  Use only on a
+scalar value, an array (using \f(CW\*(C`@\*(C'\fR), a hash (using \f(CW\*(C`%\*(C'\fR), a subroutine
+(using \f(CW\*(C`&\*(C'\fR), or a typeglob (using \f(CW\*(C`*\*(C'\fR).  (Saying \f(CW\*(C`undef $hash{$key}\*(C'\fR
+will probably not do what you expect on most predefined variables or
+\&\s-1DBM\s0 list values, so don't do that; see delete.)  Always returns the
+undefined value.  You can omit the \s-1EXPR\s0, in which case nothing is
+undefined, but you still get an undefined value that you could, for
+instance, return from a subroutine, assign to a variable or pass as a
+parameter.  Examples:
+.Sp
+.Vb 9
+\&    undef $foo;
+\&    undef $bar{'blurfl'};      # Compare to: delete $bar{'blurfl'};
+\&    undef @ary;
+\&    undef %hash;
+\&    undef &mysub;
+\&    undef *xyz;       # destroys $xyz, @xyz, %xyz, &xyz, etc.
+\&    return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
+\&    select undef, undef, undef, 0.25;
+\&    ($a, $b, undef, $c) = &foo;       # Ignore third value returned
+.Ve
+.Sp
+Note that this is a unary operator, not a list operator.
+.IP "unlink \s-1LIST\s0" 8
+.IX Item "unlink LIST"
+.PD 0
+.IP "unlink" 8
+.IX Item "unlink"
+.PD
+Deletes a list of files.  Returns the number of files successfully
+deleted.
+.Sp
+.Vb 3
+\&    $cnt = unlink 'a', 'b', 'c';
+\&    unlink @goners;
+\&    unlink <*.bak>;
+.Ve
+.Sp
+Note: \f(CW\*(C`unlink\*(C'\fR will not delete directories unless you are superuser and
+the \fB\-U\fR flag is supplied to Perl.  Even if these conditions are
+met, be warned that unlinking a directory can inflict damage on your
+filesystem.  Use \f(CW\*(C`rmdir\*(C'\fR instead.
+.Sp
+If \s-1LIST\s0 is omitted, uses \f(CW$_\fR.
+.IP "unpack \s-1TEMPLATE\s0,EXPR" 8
+.IX Item "unpack TEMPLATE,EXPR"
+\&\f(CW\*(C`unpack\*(C'\fR does the reverse of \f(CW\*(C`pack\*(C'\fR: it takes a string
+and expands it out into a list of values.
+(In scalar context, it returns merely the first value produced.)
+.Sp
+The string is broken into chunks described by the \s-1TEMPLATE\s0.  Each chunk
+is converted separately to a value.  Typically, either the string is a result
+of \f(CW\*(C`pack\*(C'\fR, or the bytes of the string represent a C structure of some
+kind.
+.Sp
+The \s-1TEMPLATE\s0 has the same format as in the \f(CW\*(C`pack\*(C'\fR function.
+Here's a subroutine that does substring:
+.Sp
+.Vb 4
+\&    sub substr {
+\&        my($what,$where,$howmuch) = @_;
+\&        unpack("x$where a$howmuch", $what);
+\&    }
+.Ve
+.Sp
+and then there's
+.Sp
+.Vb 1
+\&    sub ordinal { unpack("c",$_[0]); } # same as ord()
+.Ve
+.Sp
+In addition to fields allowed in \fIpack()\fR, you may prefix a field with
+a %<number> to indicate that
+you want a <number>\-bit checksum of the items instead of the items
+themselves.  Default is a 16\-bit checksum.  Checksum is calculated by
+summing numeric values of expanded values (for string fields the sum of
+\&\f(CW\*(C`ord($char)\*(C'\fR is taken, for bit fields the sum of zeroes and ones).
+.Sp
+For example, the following
+computes the same number as the System V sum program:
+.Sp
+.Vb 4
+\&    $checksum = do {
+\&        local $/;  # slurp!
+\&        unpack("%32C*",<>) % 65535;
+\&    };
+.Ve
+.Sp
+The following efficiently counts the number of set bits in a bit vector:
+.Sp
+.Vb 1
+\&    $setbits = unpack("%32b*", $selectmask);
+.Ve
+.Sp
+The \f(CW\*(C`p\*(C'\fR and \f(CW\*(C`P\*(C'\fR formats should be used with care.  Since Perl
+has no way of checking whether the value passed to \f(CW\*(C`unpack()\*(C'\fR
+corresponds to a valid memory location, passing a pointer value that's
+not known to be valid is likely to have disastrous consequences.
+.Sp
+If there are more pack codes or if the repeat count of a field or a group
+is larger than what the remainder of the input string allows, the result
+is not well defined: in some cases, the repeat count is decreased, or
+\&\f(CW\*(C`unpack()\*(C'\fR will produce null strings or zeroes, or terminate with an
+error. If the input string is longer than one described by the \s-1TEMPLATE\s0,
+the rest is ignored.
+.Sp
+See \*(L"pack\*(R" for more examples and notes.
+.IP "untie \s-1VARIABLE\s0" 8
+.IX Item "untie VARIABLE"
+Breaks the binding between a variable and a package.  (See \f(CW\*(C`tie\*(C'\fR.)
+Has no effect if the variable is not tied.
+.IP "unshift \s-1ARRAY\s0,LIST" 8
+.IX Item "unshift ARRAY,LIST"
+Does the opposite of a \f(CW\*(C`shift\*(C'\fR.  Or the opposite of a \f(CW\*(C`push\*(C'\fR,
+depending on how you look at it.  Prepends list to the front of the
+array, and returns the new number of elements in the array.
+.Sp
+.Vb 1
+\&    unshift(@ARGV, '-e') unless $ARGV[0] =~ /^-/;
+.Ve
+.Sp
+Note the \s-1LIST\s0 is prepended whole, not one element at a time, so the
+prepended elements stay in the same order.  Use \f(CW\*(C`reverse\*(C'\fR to do the
+reverse.
+.IP "use Module \s-1VERSION\s0 \s-1LIST\s0" 8
+.IX Item "use Module VERSION LIST"
+.PD 0
+.IP "use Module \s-1VERSION\s0" 8
+.IX Item "use Module VERSION"
+.IP "use Module \s-1LIST\s0" 8
+.IX Item "use Module LIST"
+.IP "use Module" 8
+.IX Item "use Module"
+.IP "use \s-1VERSION\s0" 8
+.IX Item "use VERSION"
+.PD
+Imports some semantics into the current package from the named module,
+generally by aliasing certain subroutine or variable names into your
+package.  It is exactly equivalent to
+.Sp
+.Vb 1
+\&    BEGIN { require Module; import Module LIST; }
+.Ve
+.Sp
+except that Module \fImust\fR be a bareword.
+.Sp
+\&\s-1VERSION\s0 may be either a numeric argument such as 5.006, which will be
+compared to \f(CW$]\fR, or a literal of the form v5.6.1, which will be compared
+to \f(CW$^V\fR (aka \f(CW$PERL_VERSION\fR.  A fatal error is produced if \s-1VERSION\s0 is
+greater than the version of the current Perl interpreter; Perl will not
+attempt to parse the rest of the file.  Compare with \*(L"require\*(R", which can
+do a similar check at run time.
+.Sp
+Specifying \s-1VERSION\s0 as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl which do not support this syntax.  The equivalent numeric
+version should be used instead.
+.Sp
+.Vb 3
+\&    use v5.6.1;         # compile time version check
+\&    use 5.6.1;          # ditto
+\&    use 5.006_001;      # ditto; preferred for backwards compatibility
+.Ve
+.Sp
+This is often useful if you need to check the current Perl version before
+\&\f(CW\*(C`use\*(C'\fRing library modules that have changed in incompatible ways from
+older versions of Perl.  (We try not to do this more than we have to.)
+.Sp
+The \f(CW\*(C`BEGIN\*(C'\fR forces the \f(CW\*(C`require\*(C'\fR and \f(CW\*(C`import\*(C'\fR to happen at compile time.  The
+\&\f(CW\*(C`require\*(C'\fR makes sure the module is loaded into memory if it hasn't been
+yet.  The \f(CW\*(C`import\*(C'\fR is not a builtin\*(--it's just an ordinary static method
+call into the \f(CW\*(C`Module\*(C'\fR package to tell the module to import the list of
+features back into the current package.  The module can implement its
+\&\f(CW\*(C`import\*(C'\fR method any way it likes, though most modules just choose to
+derive their \f(CW\*(C`import\*(C'\fR method via inheritance from the \f(CW\*(C`Exporter\*(C'\fR class that
+is defined in the \f(CW\*(C`Exporter\*(C'\fR module.  See Exporter.  If no \f(CW\*(C`import\*(C'\fR
+method can be found then the call is skipped.
+.Sp
+If you do not want to call the package's \f(CW\*(C`import\*(C'\fR method (for instance,
+to stop your namespace from being altered), explicitly supply the empty list:
+.Sp
+.Vb 1
+\&    use Module ();
+.Ve
+.Sp
+That is exactly equivalent to
+.Sp
+.Vb 1
+\&    BEGIN { require Module }
+.Ve
+.Sp
+If the \s-1VERSION\s0 argument is present between Module and \s-1LIST\s0, then the
+\&\f(CW\*(C`use\*(C'\fR will call the \s-1VERSION\s0 method in class Module with the given
+version as an argument.  The default \s-1VERSION\s0 method, inherited from
+the \s-1UNIVERSAL\s0 class, croaks if the given version is larger than the
+value of the variable \f(CW$Module::VERSION\fR.
+.Sp
+Again, there is a distinction between omitting \s-1LIST\s0 (\f(CW\*(C`import\*(C'\fR called
+with no arguments) and an explicit empty \s-1LIST\s0 \f(CW\*(C`()\*(C'\fR (\f(CW\*(C`import\*(C'\fR not
+called).  Note that there is no comma after \s-1VERSION\s0!
+.Sp
+Because this is a wide-open interface, pragmas (compiler directives)
+are also implemented this way.  Currently implemented pragmas are:
+.Sp
+.Vb 8
+\&    use constant;
+\&    use diagnostics;
+\&    use integer;
+\&    use sigtrap  qw(SEGV BUS);
+\&    use strict   qw(subs vars refs);
+\&    use subs     qw(afunc blurfl);
+\&    use warnings qw(all);
+\&    use sort     qw(stable _quicksort _mergesort);
+.Ve
+.Sp
+Some of these pseudo-modules import semantics into the current
+block scope (like \f(CW\*(C`strict\*(C'\fR or \f(CW\*(C`integer\*(C'\fR, unlike ordinary modules,
+which import symbols into the current package (which are effective
+through the end of the file).
+.Sp
+There's a corresponding \f(CW\*(C`no\*(C'\fR command that unimports meanings imported
+by \f(CW\*(C`use\*(C'\fR, i.e., it calls \f(CW\*(C`unimport Module LIST\*(C'\fR instead of \f(CW\*(C`import\*(C'\fR.
+.Sp
+.Vb 3
+\&    no integer;
+\&    no strict 'refs';
+\&    no warnings;
+.Ve
+.Sp
+See perlmodlib for a list of standard modules and pragmas.  See perlrun
+for the \f(CW\*(C`\-M\*(C'\fR and \f(CW\*(C`\-m\*(C'\fR command-line options to perl that give \f(CW\*(C`use\*(C'\fR
+functionality from the command\-line.
+.IP "utime \s-1LIST\s0" 8
+.IX Item "utime LIST"
+Changes the access and modification times on each file of a list of
+files.  The first two elements of the list must be the \s-1NUMERICAL\s0 access
+and modification times, in that order.  Returns the number of files
+successfully changed.  The inode change time of each file is set
+to the current time.  For example, this code has the same effect as the
+Unix \fItouch\fR\|(1) command when the files \fIalready exist\fR.
+.Sp
+.Vb 3
+\&    #!/usr/bin/perl
+\&    $now = time;
+\&    utime $now, $now, @ARGV;
+.Ve
+.Sp
+\&\fBNote:\fR  Under \s-1NFS\s0, \fItouch\fR\|(1) uses the time of the \s-1NFS\s0 server, not
+the time of the local machine.  If there is a time synchronization
+problem, the \s-1NFS\s0 server and local machine will have different times.
+.Sp
+Since perl 5.7.2, if the first two elements of the list are \f(CW\*(C`undef\*(C'\fR, then
+the \fIutime\fR\|(2) function in the C library will be called with a null second
+argument. On most systems, this will set the file's access and
+modification times to the current time (i.e. equivalent to the example
+above.)
+.Sp
+.Vb 1
+\&    utime undef, undef, @ARGV;
+.Ve
+.IP "values \s-1HASH\s0" 8
+.IX Item "values HASH"
+Returns a list consisting of all the values of the named hash.
+(In a scalar context, returns the number of values.)
+.Sp
+The values are returned in an apparently random order.  The actual
+random order is subject to change in future versions of perl, but it
+is guaranteed to be the same order as either the \f(CW\*(C`keys\*(C'\fR or \f(CW\*(C`each\*(C'\fR
+function would produce on the same (unmodified) hash.  Since Perl
+5.8.1 the ordering is different even between different runs of Perl
+for security reasons (see \*(L"Algorithmic Complexity Attacks\*(R" in perlsec).
+.Sp
+As a side effect, calling \fIvalues()\fR resets the \s-1HASH\s0's internal iterator,
+see \*(L"each\*(R".
+.Sp
+Note that the values are not copied, which means modifying them will
+modify the contents of the hash:
+.Sp
+.Vb 2
+\&    for (values %hash)      { s/foo/bar/g }   # modifies %hash values
+\&    for (@hash{keys %hash}) { s/foo/bar/g }   # same
+.Ve
+.Sp
+See also \f(CW\*(C`keys\*(C'\fR, \f(CW\*(C`each\*(C'\fR, and \f(CW\*(C`sort\*(C'\fR.
+.IP "vec \s-1EXPR\s0,OFFSET,BITS" 8
+.IX Item "vec EXPR,OFFSET,BITS"
+Treats the string in \s-1EXPR\s0 as a bit vector made up of elements of
+width \s-1BITS\s0, and returns the value of the element specified by \s-1OFFSET\s0
+as an unsigned integer.  \s-1BITS\s0 therefore specifies the number of bits
+that are reserved for each element in the bit vector.  This must
+be a power of two from 1 to 32 (or 64, if your platform supports
+that).
+.Sp
+If \s-1BITS\s0 is 8, \*(L"elements\*(R" coincide with bytes of the input string.
+.Sp
+If \s-1BITS\s0 is 16 or more, bytes of the input string are grouped into chunks
+of size \s-1BITS/8\s0, and each group is converted to a number as with
+\&\fIpack()\fR/\fIunpack()\fR with big-endian formats \f(CW\*(C`n\*(C'\fR/\f(CW\*(C`N\*(C'\fR (and analogously
+for BITS==64).  See \*(L"pack\*(R" for details.
+.Sp
+If bits is 4 or less, the string is broken into bytes, then the bits
+of each byte are broken into 8/BITS groups.  Bits of a byte are
+numbered in a little-endian-ish way, as in \f(CW0x01\fR, \f(CW0x02\fR,
+\&\f(CW0x04\fR, \f(CW0x08\fR, \f(CW0x10\fR, \f(CW0x20\fR, \f(CW0x40\fR, \f(CW0x80\fR.  For example,
+breaking the single input byte \f(CW\*(C`chr(0x36)\*(C'\fR into two groups gives a list
+\&\f(CW\*(C`(0x6, 0x3)\*(C'\fR; breaking it into 4 groups gives \f(CW\*(C`(0x2, 0x1, 0x3, 0x0)\*(C'\fR.
+.Sp
+\&\f(CW\*(C`vec\*(C'\fR may also be assigned to, in which case parentheses are needed
+to give the expression the correct precedence as in
+.Sp
+.Vb 1
+\&    vec($image, $max_x * $x + $y, 8) = 3;
+.Ve
+.Sp
+If the selected element is outside the string, the value 0 is returned.
+If an element off the end of the string is written to, Perl will first
+extend the string with sufficiently many zero bytes.   It is an error
+to try to write off the beginning of the string (i.e. negative \s-1OFFSET\s0).
+.Sp
+The string should not contain any character with the value > 255 (which
+can only happen if you're using \s-1UTF\-8\s0 encoding).  If it does, it will be
+treated as something which is not \s-1UTF\-8\s0 encoded.  When the \f(CW\*(C`vec\*(C'\fR was
+assigned to, other parts of your program will also no longer consider the
+string to be \s-1UTF\-8\s0 encoded.  In other words, if you do have such characters
+in your string, \fIvec()\fR will operate on the actual byte string, and not the
+conceptual character string.
+.Sp
+Strings created with \f(CW\*(C`vec\*(C'\fR can also be manipulated with the logical
+operators \f(CW\*(C`|\*(C'\fR, \f(CW\*(C`&\*(C'\fR, \f(CW\*(C`^\*(C'\fR, and \f(CW\*(C`~\*(C'\fR.  These operators will assume a bit
+vector operation is desired when both operands are strings.
+See \*(L"Bitwise String Operators\*(R" in perlop.
+.Sp
+The following code will build up an \s-1ASCII\s0 string saying \f(CW'PerlPerlPerl'\fR.
+The comments show the string after each step.  Note that this code works
+in the same way on big-endian or little-endian machines.
+.Sp
+.Vb 2
+\&    my $foo = '';
+\&    vec($foo,  0, 32) = 0x5065726C;     # 'Perl'
+.Ve
+.Sp
+.Vb 2
+\&    # $foo eq "Perl" eq "\ex50\ex65\ex72\ex6C", 32 bits
+\&    print vec($foo, 0, 8);              # prints 80 == 0x50 == ord('P')
+.Ve
+.Sp
+.Vb 11
+\&    vec($foo,  2, 16) = 0x5065;         # 'PerlPe'
+\&    vec($foo,  3, 16) = 0x726C;         # 'PerlPerl'
+\&    vec($foo,  8,  8) = 0x50;           # 'PerlPerlP'
+\&    vec($foo,  9,  8) = 0x65;           # 'PerlPerlPe'
+\&    vec($foo, 20,  4) = 2;              # 'PerlPerlPe'   . "\ex02"
+\&    vec($foo, 21,  4) = 7;              # 'PerlPerlPer'
+\&                                        # 'r' is "\ex72"
+\&    vec($foo, 45,  2) = 3;              # 'PerlPerlPer'  . "\ex0c"
+\&    vec($foo, 93,  1) = 1;              # 'PerlPerlPer'  . "\ex2c"
+\&    vec($foo, 94,  1) = 1;              # 'PerlPerlPerl'
+\&                                        # 'l' is "\ex6c"
+.Ve
+.Sp
+To transform a bit vector into a string or list of 0's and 1's, use these:
+.Sp
+.Vb 2
+\&    $bits = unpack("b*", $vector);
+\&    @bits = split(//, unpack("b*", $vector));
+.Ve
+.Sp
+If you know the exact length in bits, it can be used in place of the \f(CW\*(C`*\*(C'\fR.
+.Sp
+Here is an example to illustrate how the bits actually fall in place:
+.Sp
+.Vb 1
+\&    #!/usr/bin/perl -wl
+.Ve
+.Sp
+.Vb 5
+\&    print <<'EOT';
+\&                                      0         1         2         3
+\&                       unpack("V",$_) 01234567890123456789012345678901
+\&    ------------------------------------------------------------------
+\&    EOT
+.Ve
+.Sp
+.Vb 13
+\&    for $w (0..3) {
+\&        $width = 2**$w;
+\&        for ($shift=0; $shift < $width; ++$shift) {
+\&            for ($off=0; $off < 32/$width; ++$off) {
+\&                $str = pack("B*", "0"x32);
+\&                $bits = (1<<$shift);
+\&                vec($str, $off, $width) = $bits;
+\&                $res = unpack("b*",$str);
+\&                $val = unpack("V", $str);
+\&                write;
+\&            }
+\&        }
+\&    }
+.Ve
+.Sp
+.Vb 5
+\&    format STDOUT =
+\&    vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+\&    $off, $width, $bits, $val, $res
+\&    .
+\&    __END__
+.Ve
+.Sp
+Regardless of the machine architecture on which it is run, the above
+example should print the following table:
+.Sp
+.Vb 131
+\&                                      0         1         2         3
+\&                       unpack("V",$_) 01234567890123456789012345678901
+\&    ------------------------------------------------------------------
+\&    vec($_, 0, 1) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 1) = 1   ==          2 01000000000000000000000000000000
+\&    vec($_, 2, 1) = 1   ==          4 00100000000000000000000000000000
+\&    vec($_, 3, 1) = 1   ==          8 00010000000000000000000000000000
+\&    vec($_, 4, 1) = 1   ==         16 00001000000000000000000000000000
+\&    vec($_, 5, 1) = 1   ==         32 00000100000000000000000000000000
+\&    vec($_, 6, 1) = 1   ==         64 00000010000000000000000000000000
+\&    vec($_, 7, 1) = 1   ==        128 00000001000000000000000000000000
+\&    vec($_, 8, 1) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 9, 1) = 1   ==        512 00000000010000000000000000000000
+\&    vec($_,10, 1) = 1   ==       1024 00000000001000000000000000000000
+\&    vec($_,11, 1) = 1   ==       2048 00000000000100000000000000000000
+\&    vec($_,12, 1) = 1   ==       4096 00000000000010000000000000000000
+\&    vec($_,13, 1) = 1   ==       8192 00000000000001000000000000000000
+\&    vec($_,14, 1) = 1   ==      16384 00000000000000100000000000000000
+\&    vec($_,15, 1) = 1   ==      32768 00000000000000010000000000000000
+\&    vec($_,16, 1) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_,17, 1) = 1   ==     131072 00000000000000000100000000000000
+\&    vec($_,18, 1) = 1   ==     262144 00000000000000000010000000000000
+\&    vec($_,19, 1) = 1   ==     524288 00000000000000000001000000000000
+\&    vec($_,20, 1) = 1   ==    1048576 00000000000000000000100000000000
+\&    vec($_,21, 1) = 1   ==    2097152 00000000000000000000010000000000
+\&    vec($_,22, 1) = 1   ==    4194304 00000000000000000000001000000000
+\&    vec($_,23, 1) = 1   ==    8388608 00000000000000000000000100000000
+\&    vec($_,24, 1) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_,25, 1) = 1   ==   33554432 00000000000000000000000001000000
+\&    vec($_,26, 1) = 1   ==   67108864 00000000000000000000000000100000
+\&    vec($_,27, 1) = 1   ==  134217728 00000000000000000000000000010000
+\&    vec($_,28, 1) = 1   ==  268435456 00000000000000000000000000001000
+\&    vec($_,29, 1) = 1   ==  536870912 00000000000000000000000000000100
+\&    vec($_,30, 1) = 1   == 1073741824 00000000000000000000000000000010
+\&    vec($_,31, 1) = 1   == 2147483648 00000000000000000000000000000001
+\&    vec($_, 0, 2) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 2) = 1   ==          4 00100000000000000000000000000000
+\&    vec($_, 2, 2) = 1   ==         16 00001000000000000000000000000000
+\&    vec($_, 3, 2) = 1   ==         64 00000010000000000000000000000000
+\&    vec($_, 4, 2) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 5, 2) = 1   ==       1024 00000000001000000000000000000000
+\&    vec($_, 6, 2) = 1   ==       4096 00000000000010000000000000000000
+\&    vec($_, 7, 2) = 1   ==      16384 00000000000000100000000000000000
+\&    vec($_, 8, 2) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_, 9, 2) = 1   ==     262144 00000000000000000010000000000000
+\&    vec($_,10, 2) = 1   ==    1048576 00000000000000000000100000000000
+\&    vec($_,11, 2) = 1   ==    4194304 00000000000000000000001000000000
+\&    vec($_,12, 2) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_,13, 2) = 1   ==   67108864 00000000000000000000000000100000
+\&    vec($_,14, 2) = 1   ==  268435456 00000000000000000000000000001000
+\&    vec($_,15, 2) = 1   == 1073741824 00000000000000000000000000000010
+\&    vec($_, 0, 2) = 2   ==          2 01000000000000000000000000000000
+\&    vec($_, 1, 2) = 2   ==          8 00010000000000000000000000000000
+\&    vec($_, 2, 2) = 2   ==         32 00000100000000000000000000000000
+\&    vec($_, 3, 2) = 2   ==        128 00000001000000000000000000000000
+\&    vec($_, 4, 2) = 2   ==        512 00000000010000000000000000000000
+\&    vec($_, 5, 2) = 2   ==       2048 00000000000100000000000000000000
+\&    vec($_, 6, 2) = 2   ==       8192 00000000000001000000000000000000
+\&    vec($_, 7, 2) = 2   ==      32768 00000000000000010000000000000000
+\&    vec($_, 8, 2) = 2   ==     131072 00000000000000000100000000000000
+\&    vec($_, 9, 2) = 2   ==     524288 00000000000000000001000000000000
+\&    vec($_,10, 2) = 2   ==    2097152 00000000000000000000010000000000
+\&    vec($_,11, 2) = 2   ==    8388608 00000000000000000000000100000000
+\&    vec($_,12, 2) = 2   ==   33554432 00000000000000000000000001000000
+\&    vec($_,13, 2) = 2   ==  134217728 00000000000000000000000000010000
+\&    vec($_,14, 2) = 2   ==  536870912 00000000000000000000000000000100
+\&    vec($_,15, 2) = 2   == 2147483648 00000000000000000000000000000001
+\&    vec($_, 0, 4) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 4) = 1   ==         16 00001000000000000000000000000000
+\&    vec($_, 2, 4) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 3, 4) = 1   ==       4096 00000000000010000000000000000000
+\&    vec($_, 4, 4) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_, 5, 4) = 1   ==    1048576 00000000000000000000100000000000
+\&    vec($_, 6, 4) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_, 7, 4) = 1   ==  268435456 00000000000000000000000000001000
+\&    vec($_, 0, 4) = 2   ==          2 01000000000000000000000000000000
+\&    vec($_, 1, 4) = 2   ==         32 00000100000000000000000000000000
+\&    vec($_, 2, 4) = 2   ==        512 00000000010000000000000000000000
+\&    vec($_, 3, 4) = 2   ==       8192 00000000000001000000000000000000
+\&    vec($_, 4, 4) = 2   ==     131072 00000000000000000100000000000000
+\&    vec($_, 5, 4) = 2   ==    2097152 00000000000000000000010000000000
+\&    vec($_, 6, 4) = 2   ==   33554432 00000000000000000000000001000000
+\&    vec($_, 7, 4) = 2   ==  536870912 00000000000000000000000000000100
+\&    vec($_, 0, 4) = 4   ==          4 00100000000000000000000000000000
+\&    vec($_, 1, 4) = 4   ==         64 00000010000000000000000000000000
+\&    vec($_, 2, 4) = 4   ==       1024 00000000001000000000000000000000
+\&    vec($_, 3, 4) = 4   ==      16384 00000000000000100000000000000000
+\&    vec($_, 4, 4) = 4   ==     262144 00000000000000000010000000000000
+\&    vec($_, 5, 4) = 4   ==    4194304 00000000000000000000001000000000
+\&    vec($_, 6, 4) = 4   ==   67108864 00000000000000000000000000100000
+\&    vec($_, 7, 4) = 4   == 1073741824 00000000000000000000000000000010
+\&    vec($_, 0, 4) = 8   ==          8 00010000000000000000000000000000
+\&    vec($_, 1, 4) = 8   ==        128 00000001000000000000000000000000
+\&    vec($_, 2, 4) = 8   ==       2048 00000000000100000000000000000000
+\&    vec($_, 3, 4) = 8   ==      32768 00000000000000010000000000000000
+\&    vec($_, 4, 4) = 8   ==     524288 00000000000000000001000000000000
+\&    vec($_, 5, 4) = 8   ==    8388608 00000000000000000000000100000000
+\&    vec($_, 6, 4) = 8   ==  134217728 00000000000000000000000000010000
+\&    vec($_, 7, 4) = 8   == 2147483648 00000000000000000000000000000001
+\&    vec($_, 0, 8) = 1   ==          1 10000000000000000000000000000000
+\&    vec($_, 1, 8) = 1   ==        256 00000000100000000000000000000000
+\&    vec($_, 2, 8) = 1   ==      65536 00000000000000001000000000000000
+\&    vec($_, 3, 8) = 1   ==   16777216 00000000000000000000000010000000
+\&    vec($_, 0, 8) = 2   ==          2 01000000000000000000000000000000
+\&    vec($_, 1, 8) = 2   ==        512 00000000010000000000000000000000
+\&    vec($_, 2, 8) = 2   ==     131072 00000000000000000100000000000000
+\&    vec($_, 3, 8) = 2   ==   33554432 00000000000000000000000001000000
+\&    vec($_, 0, 8) = 4   ==          4 00100000000000000000000000000000
+\&    vec($_, 1, 8) = 4   ==       1024 00000000001000000000000000000000
+\&    vec($_, 2, 8) = 4   ==     262144 00000000000000000010000000000000
+\&    vec($_, 3, 8) = 4   ==   67108864 00000000000000000000000000100000
+\&    vec($_, 0, 8) = 8   ==          8 00010000000000000000000000000000
+\&    vec($_, 1, 8) = 8   ==       2048 00000000000100000000000000000000
+\&    vec($_, 2, 8) = 8   ==     524288 00000000000000000001000000000000
+\&    vec($_, 3, 8) = 8   ==  134217728 00000000000000000000000000010000
+\&    vec($_, 0, 8) = 16  ==         16 00001000000000000000000000000000
+\&    vec($_, 1, 8) = 16  ==       4096 00000000000010000000000000000000
+\&    vec($_, 2, 8) = 16  ==    1048576 00000000000000000000100000000000
+\&    vec($_, 3, 8) = 16  ==  268435456 00000000000000000000000000001000
+\&    vec($_, 0, 8) = 32  ==         32 00000100000000000000000000000000
+\&    vec($_, 1, 8) = 32  ==       8192 00000000000001000000000000000000
+\&    vec($_, 2, 8) = 32  ==    2097152 00000000000000000000010000000000
+\&    vec($_, 3, 8) = 32  ==  536870912 00000000000000000000000000000100
+\&    vec($_, 0, 8) = 64  ==         64 00000010000000000000000000000000
+\&    vec($_, 1, 8) = 64  ==      16384 00000000000000100000000000000000
+\&    vec($_, 2, 8) = 64  ==    4194304 00000000000000000000001000000000
+\&    vec($_, 3, 8) = 64  == 1073741824 00000000000000000000000000000010
+\&    vec($_, 0, 8) = 128 ==        128 00000001000000000000000000000000
+\&    vec($_, 1, 8) = 128 ==      32768 00000000000000010000000000000000
+\&    vec($_, 2, 8) = 128 ==    8388608 00000000000000000000000100000000
+\&    vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001
+.Ve
+.IP "wait" 8
+.IX Item "wait"
+Behaves like the \fIwait\fR\|(2) system call on your system: it waits for a child
+process to terminate and returns the pid of the deceased process, or
+\&\f(CW\*(C`\-1\*(C'\fR if there are no child processes.  The status is returned in \f(CW$?\fR.
+Note that a return value of \f(CW\*(C`\-1\*(C'\fR could mean that child processes are
+being automatically reaped, as described in perlipc.
+.IP "waitpid \s-1PID\s0,FLAGS" 8
+.IX Item "waitpid PID,FLAGS"
+Waits for a particular child process to terminate and returns the pid of
+the deceased process, or \f(CW\*(C`\-1\*(C'\fR if there is no such child process.  On some
+systems, a value of 0 indicates that there are processes still running.
+The status is returned in \f(CW$?\fR.  If you say
+.Sp
+.Vb 5
+\&    use POSIX ":sys_wait_h";
+\&    #...
+\&    do {
+\&        $kid = waitpid(-1, WNOHANG);
+\&    } until $kid > 0;
+.Ve
+.Sp
+then you can do a non-blocking wait for all pending zombie processes.
+Non-blocking wait is available on machines supporting either the
+\&\fIwaitpid\fR\|(2) or \fIwait4\fR\|(2) system calls.  However, waiting for a particular
+pid with \s-1FLAGS\s0 of \f(CW0\fR is implemented everywhere.  (Perl emulates the
+system call by remembering the status values of processes that have
+exited but have not been harvested by the Perl script yet.)
+.Sp
+Note that on some systems, a return value of \f(CW\*(C`\-1\*(C'\fR could mean that child
+processes are being automatically reaped.  See perlipc for details,
+and for other examples.
+.IP "wantarray" 8
+.IX Item "wantarray"
+Returns true if the context of the currently executing subroutine is
+looking for a list value.  Returns false if the context is looking
+for a scalar.  Returns the undefined value if the context is looking
+for no value (void context).
+.Sp
+.Vb 3
+\&    return unless defined wantarray;    # don't bother doing more
+\&    my @a = complex_calculation();
+\&    return wantarray ? @a : "@a";
+.Ve
+.Sp
+This function should have been named \fIwantlist()\fR instead.
+.IP "warn \s-1LIST\s0" 8
+.IX Item "warn LIST"
+Produces a message on \s-1STDERR\s0 just like \f(CW\*(C`die\*(C'\fR, but doesn't exit or throw
+an exception.
+.Sp
+If \s-1LIST\s0 is empty and \f(CW$@\fR already contains a value (typically from a
+previous eval) that value is used after appending \f(CW"\et...caught"\fR
+to \f(CW$@\fR.  This is useful for staying almost, but not entirely similar to
+\&\f(CW\*(C`die\*(C'\fR.
+.Sp
+If \f(CW$@\fR is empty then the string \f(CW"Warning: Something's wrong"\fR is used.
+.Sp
+No message is printed if there is a \f(CW$SIG{_\|_WARN_\|_}\fR handler
+installed.  It is the handler's responsibility to deal with the message
+as it sees fit (like, for instance, converting it into a \f(CW\*(C`die\*(C'\fR).  Most
+handlers must therefore make arrangements to actually display the
+warnings that they are not prepared to deal with, by calling \f(CW\*(C`warn\*(C'\fR
+again in the handler.  Note that this is quite safe and will not
+produce an endless loop, since \f(CW\*(C`_\|_WARN_\|_\*(C'\fR hooks are not called from
+inside one.
+.Sp
+You will find this behavior is slightly different from that of
+\&\f(CW$SIG{_\|_DIE_\|_}\fR handlers (which don't suppress the error text, but can
+instead call \f(CW\*(C`die\*(C'\fR again to change it).
+.Sp
+Using a \f(CW\*(C`_\|_WARN_\|_\*(C'\fR handler provides a powerful way to silence all
+warnings (even the so-called mandatory ones).  An example:
+.Sp
+.Vb 7
+\&    # wipe out *all* compile-time warnings
+\&    BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
+\&    my $foo = 10;
+\&    my $foo = 20;          # no warning about duplicate my $foo,
+\&                           # but hey, you asked for it!
+\&    # no compile-time or run-time warnings before here
+\&    $DOWARN = 1;
+.Ve
+.Sp
+.Vb 2
+\&    # run-time warnings enabled after here
+\&    warn "\e$foo is alive and $foo!";     # does show up
+.Ve
+.Sp
+See perlvar for details on setting \f(CW%SIG\fR entries, and for more
+examples.  See the Carp module for other kinds of warnings using its
+\&\fIcarp()\fR and \fIcluck()\fR functions.
+.IP "write \s-1FILEHANDLE\s0" 8
+.IX Item "write FILEHANDLE"
+.PD 0
+.IP "write \s-1EXPR\s0" 8
+.IX Item "write EXPR"
+.IP "write" 8
+.IX Item "write"
+.PD
+Writes a formatted record (possibly multi\-line) to the specified \s-1FILEHANDLE\s0,
+using the format associated with that file.  By default the format for
+a file is the one having the same name as the filehandle, but the
+format for the current output channel (see the \f(CW\*(C`select\*(C'\fR function) may be set
+explicitly by assigning the name of the format to the \f(CW$~\fR variable.
+.Sp
+Top of form processing is handled automatically:  if there is
+insufficient room on the current page for the formatted record, the
+page is advanced by writing a form feed, a special top-of-page format
+is used to format the new page header, and then the record is written.
+By default the top-of-page format is the name of the filehandle with
+\&\*(L"_TOP\*(R" appended, but it may be dynamically set to the format of your
+choice by assigning the name to the \f(CW$^\fR variable while the filehandle is
+selected.  The number of lines remaining on the current page is in
+variable \f(CW\*(C`$\-\*(C'\fR, which can be set to \f(CW0\fR to force a new page.
+.Sp
+If \s-1FILEHANDLE\s0 is unspecified, output goes to the current default output
+channel, which starts out as \s-1STDOUT\s0 but may be changed by the
+\&\f(CW\*(C`select\*(C'\fR operator.  If the \s-1FILEHANDLE\s0 is an \s-1EXPR\s0, then the expression
+is evaluated and the resulting string is used to look up the name of
+the \s-1FILEHANDLE\s0 at run time.  For more on formats, see perlform.
+.Sp
+Note that write is \fInot\fR the opposite of \f(CW\*(C`read\*(C'\fR.  Unfortunately.
+.IP "y///" 8
+.IX Item "y///"
+The transliteration operator.  Same as \f(CW\*(C`tr///\*(C'\fR.  See perlop.
diff --git a/src/man1/perlnumber.1 b/src/man1/perlnumber.1
new file mode 100644
index 0000000..0e6eb0f
--- /dev/null
+++ b/src/man1/perlnumber.1
@@ -0,0 +1,239 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLNUMBER 1"
+.TH PERLNUMBER 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlnumber \- Perl 中数字的语义以及算术操作
+.SH "SYNOPSIS 总览"
+.IX Header "SYNOPSIS"
+.Vb 7
+\&    $n = 1234;              # 十进制数
+\&    $n = 0b1110011;         # 二进制数
+\&    $n = 01234;             # 八进制数
+\&    $n = 0x1234;            # 十六进制数
+\&    $n = 12.34e-56;         # 指数形式
+\&    $n = "-12.34e56";       # 用字符串描述的数
+\&    $n = "1234";            # 用字符串描述的数
+.Ve
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+这篇文章描述了Perl内部是怎样处理数的数值的。
+.PP
+在这里不会提到Perl的运算符重载机制,运算符重载允许用户自定义对数的操作,例如对任意大的整型数或者任意精度的浮点数进行的操作,或者一些其它的算术类型如求模操作和p\-adic操作等等。要想知道运算符重载的细节,请看重载。
+.SH "Storing numbers 数值存储"
+.IX Header "Storing numbers"
+Per在内部能用三种方法表示数值:用“Native整型”,“Native浮点型”或是用十进制形式的字符串。其中十进制字符串可以带一个指数描述的部分,就像\f(CW"12.34e\-56"\fR。在这里术语\&\fINative\fR的含义是用于编译 perl 的 C 编译器所支持的类型。
+.PP
+在我们谈及整型时,\*(L"native\*(R"这个术语所包含的含义比我们谈论浮点数时要少一些。对\*(L"native\*(R"整型来说,这个术语所的含义仅仅是指整型数的可以有最大值和最小值会是2的某次方,而对\*(L"native\*(R"浮点数来说,有一条基本的限制就是它只能表示那些能用有限几位二进制小数所表示的实数。举例来说,0.9就不是\*(L"native\*(R"浮点数,因为0.9用二进制小数表示是有无穷多位的:
+.PP
+.Vb 1
+\&  二进制0.1110011001100...
+.Ve
+.PP
+序列 \f(CW1100\fR 将无休止的循环下去。除了这条限制以外,二进制浮点数在用指数型式表达时也存有限制。在特定的硬件条件下,浮点型的数可以存储最多53位二进制数再加上范围从\-1024到1024的指数值(译者:-1024到1024用11位二进制数,加上53等于64,就是说这里用用64位存一个浮点数)转换成十进制也就是说差不多能用16位有效数字和从\-304到304的指数值和起来表示一个浮点数。这种表示方法的一种结果就是我们不可能在不损失精度的情况下用浮点型存储像12345678901234567这样的数。
+.PP
+类似的,十进制字符串也只能表示有限位数的十进制数.光就字符串来言,它可以是任意长度的,没有什么关于指数或有效数字位数上的限制.(但是请意识到我们正在讨论的存放数值的那些规则.事实是你能用字符串存放很大的数值并不代表相应的数值操作能够把字符串中的所有的数位都用上.欲知详情,请看\*(L"数值运算符和数值转换\*(R"
+.PP
+事实上“Native整型数”存储的数值可以是带符号的,或者是不带符号的。所以很典型的,Perl中“Native整型数”可以表示的整数的范围是\-2**31..2**32\-1,这个范围对64位的整数来说是比较合适的。但这并不意味着Perl只能处理这个范围内的整数:浮点类型可以存下更大的整数。
+.PP
+总而言之,Perl中的数是有限位数的十进制数或者说是足够短的二进制数。
+.SH "Numeric operators and numeric conversions 数值运算符和数值转换"
+.IX Header "Numeric operators and numeric conversions"
+就像前面说的那样,Perl可以用三种格式中的任意一种存放一个数,但是大多数运算符只能理解这三种格式中的一种。当一个数值作为参数传给一个运算符时,它将会被转换成运算符可以理解的那种格式。
+.PP
+可能出现的转换有下面六种:
+.PP
+.Vb 6
+\&  native 整型        --> native 浮点型      (*)
+\&  native 整型        --> 十进制形式的字符串
+\&  native 浮点型 --> native 整型              (*)
+\&  native 浮点型 --> decimal string              (*)
+\&  十进制的字符串        --> native 整型
+\&  十进制的字符串        --> native 浮点型       (*)
+.Ve
+.PP
+这些转换按照下列的规则进行:
+.IP "\(bu" 4
+如果原来的数可以用要转换成的格式表述,则其值继续使用,不会改变。
+.IP "\(bu" 4
+如果原来的数超出了要转换成的格式所能表述的极限,则最接近极限的那个值会被用来做最后的值。(这会有信息上的损失)
+.IP "\(bu" 4
+如果原来的数在要转换成的格式所能表述的两个相邻的数之间,则这两个数中的一个会被用来做最后的值。(这会有信息上的损失)
+.IP "\(bu" 4
+在 \f(CW\*(C`native 浮点型 \-\-> native 整型\*(C'\fR 的转换中,结果的值小于等于原来的值。(因为是直接截取小数位取整的)(\fI\*(L"Rounding to zero\*(R".\fR)
+.IP "\(bu" 4
+如果 \f(CW\*(C`十进制的字符串 \-\-> native 整型\*(C'\fR  的转换不能在不损失信息的情况下完成,结果将会和下列的转换序列的结果一致:\f(CW\*(C`十进制的字符串 \-\-> native_浮点型 \-\-> native_整型\*(C'\fR. 特别要指出的是,尽管像 \&\f(CW"0.99999999999999999999"\fR 这样的数可能会取整成1,取整一般是倾向于0的。
+.PP
+\&\fB\s-1限制\s0\fR: 上面标有 \f(CW\*(C`(*)\*(C'\fR 的转换包含有C编译器的动作步骤。在特殊情况下,C编译器的一些特性或者Bugs可能会导致上述一些规则的不成立。
+.SH "Flavors of Perl numeric operations 数值操作的特色"
+.IX Header "Flavors of Perl numeric operations"
+Perl 中带有数值参数的操作将按照四种方法处理参数:它们可能会将参数强制转换为整型,浮点型或是字符串型中的一种,或者按照操作数的格式来处理参数。在把一个数的类型强制转换成另一种特定的类型的过程中,原来存储的值不会改变。
+.PP
+所有需要整型数作参数的运算符会对参数进行取模的操作。比如说用32位存放整型数时会把数对2的32次方取模 (\f(CW\*(C`mod 2**32\*(C'\fR),所以 \f(CW\*(C`sprintf "%u", \-1\*(C'\fR  的结果和 \&\f(CW\*(C`sprintf "%u", ~0\*(C'\fR 的结果是一样的。
+.IP "Arithmetic operators 算术运算符" 4
+.IX Item "Arithmetic operators"
+二进制运算符 \f(CW\*(C`+\*(C'\fR \f(CW\*(C`\-\*(C'\fR \f(CW\*(C`*\*(C'\fR \f(CW\*(C`/\*(C'\fR \f(CW\*(C`%\*(C'\fR \f(CW\*(C`==\*(C'\fR \f(CW\*(C`!=\*(C'\fR \f(CW\*(C`>\*(C'\fR \f(CW\*(C`<\*(C'\fR
+\&\f(CW\*(C`>=\*(C'\fR \f(CW\*(C`<=\*(C'\fR 以及一元运算符 \f(CW\*(C`\-\*(C'\fR \f(CW\*(C`abs\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR 
+总试图将参数转换为整形。如果转换都可以无损精度地进行,并且运算也无损于精度,那么返回整数的结果。否则,参数被转换为浮点数,返回浮点数结果。转换的缓冲过程保证了整数转换不会将浮点数的零头丢掉
+.IP "++" 4
+\&\f(CW\*(C`++\*(C'\fR 的行为与其他操作符类似,但是如果操作数是满足 \f(CW\*(C`/^[a\-zA\-Z]*[0\-9]*\ez/\*(C'\fR 格式的字符串,将进行 perlop 中描述的字符串递增运算。
+.ie n .IP "定义了 ""use integer"" 时的算术运算" 4
+.el .IP "定义了 \f(CWuse integer\fR 时的算术运算" 4
+.IX Item "Arithmetic operators during use integer"
+在 \f(CW\*(C`use integer;\*(C'\fR 的作用范围内,几乎上面列出的所有操作符都将它们的操作数转换为整数,返回整数的结果,例外情况是 \f(CW\*(C`abs\*(C'\fR, \f(CW\*(C`++\*(C'\fR 和 \f(CW\*(C`\-\-\*(C'\fR,在这种情况下不改变行为。
+.IP "Other mathematical operators 其他数学操作符" 4
+.IX Item "Other mathematical operators"
+类似 \f(CW\*(C`**\*(C'\fR, \f(CW\*(C`sin\*(C'\fR 和 \f(CW\*(C`exp\*(C'\fR 的操作符强制参数为浮点格式。
+.IP "Bitwise operators 位操作符" 4
+.IX Item "Bitwise operators"
+如果不是字符串,操作数被强制转换为整型
+.ie n .IP "定义了 ""use integer"" 时的位运算" 4
+.el .IP "定义了 \f(CWuse integer\fR 时的位运算" 4
+.IX Item "Bitwise operators during use integer"
+强制参数为整型。并且,移位操作在内部使用有符号整型而不是默认的无符号数
+.IP "需要整型操作数的操作符" 4
+.IX Item "Operators which expect an integer"
+强制操作数转换为整型。例如,在函数 \f(CW\*(C`sysread\*(C'\fR 的第三和第四个参数中,这样做是合适的。
+.IP "需要字符串的操作符" 4
+.IX Item "Operators which expect a string"
+强制操作数为字符串格式。例如,在 \f(CW\*(C`printf "%s", $value\*(C'\fR 中,这样做是合适的。
+.PP
+尽管强制转换参数为特定格式不会改变已存储的数字,Perl 会记录转换的结果。特别的,尽管第一次转换会耗费一定时间,重复进行的操作不会需要重新转换。
+.SH "AUTHOR 作者"
+.IX Header "AUTHOR"
+Ilya Zakharevich \f(CW\*(C`ilya at math.ohio\-state.edu\*(C'\fR
+.PP
+由 Gurusamy Sarathy <gsar at ActiveState.com> 编辑
+.PP
+由 Nicholas Clark <nick at ccl4.org> 更新为 5.8.0 版
+.SH "SEE ALSO 参见"
+.IX Header "SEE ALSO"
+overload, perlop
diff --git a/src/man1/perlsec.1 b/src/man1/perlsec.1
new file mode 100644
index 0000000..697e9f9
--- /dev/null
+++ b/src/man1/perlsec.1
@@ -0,0 +1,453 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLSEC 1"
+.TH PERLSEC 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlsec \- Perl 安全
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+Perl可以轻松写出安全的程序,即使运行时有特殊权限,比如setuid或setgid程序。许多脚本的命令行里有多项替换语句,Perl却不是这样,它使用更多传统方法而少有艰深。而且,由于perl语言有更多内在功能,它可以更少的依赖于其他(可能不可信的)程序来完成根本目的。
+.PP
+ 当Perl检测到程序中真实的用户或组ID与有效用户或组ID不同时,它自动地开启一种叫做“污染模式”特殊的安全性检测。setuid的unix的权限位是04000,setgid 的UNIX权限位是02000;它们都有可能被设置。你也可以用命令行标识 \fB\-T\fR 明确地开启“污染模式”。强烈建议服务器程序或者在以其他人身份运行的程序(比如CGI脚本)使用此标识符。一旦污染模式被打开,它在脚本的余下内容中一直开启。
+.PP
+在“污染模式”中,Perl使用叫做“污染检测”的特殊预防方法来防止明显的和不易被察觉的陷阱。一些检测相当简单,如检查路径目录以确定它们对其他人是不可写的;小心的程序员一向做此类检测。其他的检测已经得到Perl本身最好的支持,这些检测尤其使写一个set-id的Perl程序比相应的C程序更安全。
+.PP
+你不可以使用来自程序之外的数据来影响程序之外的事情——至少不是偶然的。所有命令行参数,环境变量,本地信息(参见perllocale),特定系统调用的结果(readdir(),readlink(),shmread()的变量,msgrcv()的返回信息,getpwxxx()调用返回的密码、gcos和shell域)和所有文件输入都被标记成“污染的”。“污染的”数据既不可以直接或间接在任何调用一个子shell命令中使用,也不能在任何修改文件、目录或进程的命令中使用,但有以下例外:
+.IP "\(bu" 4
+print和syswrite的参数不被检查是否被污染。
+.IP "\(bu" 4
+符号方法
+.Sp
+.Vb 1
+\&    $obj->$method(@args);
+.Ve
+.Sp
+以及符号的子引用
+.Sp
+.Vb 2
+\&    &{$foo}(@args);
+\&    $foo->(@args);
+.Ve
+.Sp
+不会被检查是否被污染。这要求额外的小心,除非你希望外部数据影响你的控制流。除非你小心地限制这些符号值是什么,人们可以从 Perl 代码外部调用函数,类似 POSIX::system,来运行任意外部代码。
+.PP
+为了效率原因,Perl 对数据是否已被污染持保守的看法。如果一个表达式包含污染的数据,任何子表达式都被认为污染的,即使自表达式的值与污染的数据无关
+.PP
+由于污染与每个标量值相关,一个数组或散列的元素可以只有一部分被污染。散列的键永远不会被污染。
+.PP
+例如:
+.PP
+.Vb 8
+\&    $arg = shift;               # $arg 是污染的
+\&    $hid = $arg, 'bar';         # $hid 也是污染的
+\&    $line = <>;                 # 污染的
+\&    $line = <STDIN>;            # 仍旧是污染的
+\&    open FOO, "/home/me/bar" or die $!;
+\&    $line = <FOO>;              # 还是污染的
+\&    $path = $ENV{'PATH'};       # 污染的, 但是请看下面
+\&    $data = 'abc';              # 非污染的
+.Ve
+.PP
+.Vb 5
+\&    system "echo $arg";         # 不安全的
+\&    system "/bin/echo", $arg;   # 认为不安全
+\&                                # (Perl 不知道 /bin/echo)
+\&    system "echo $hid";         # 不安全的
+\&    system "echo $data";        # 如果PATH被设定,那么才是安全的
+.Ve
+.PP
+.Vb 1
+\&    $path = $ENV{'PATH'};       # $path 现在是污染的
+.Ve
+.PP
+.Vb 2
+\&    $ENV{'PATH'} = '/bin:/usr/bin';
+\&    delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
+.Ve
+.PP
+.Vb 2
+\&    $path = $ENV{'PATH'};       # $path 现在不是污染的
+\&    system "echo $data";        # 现在是安全的!
+.Ve
+.PP
+.Vb 2
+\&    open(FOO, "< $arg");        # OK - 只读文件
+\&    open(FOO, "> $arg");        # Not OK - 试图去写
+.Ve
+.PP
+.Vb 3
+\&    open(FOO,"echo $arg|");     # Not OK
+\&    open(FOO,"-|")
+\&        or exec 'echo', $arg;   # 同样 not OK
+.Ve
+.PP
+.Vb 1
+\&    $shout = `echo $arg`;       # 不安全的, $shout 现在是污染的
+.Ve
+.PP
+.Vb 2
+\&    unlink $data, $arg;         # 不安全的
+\&    umask $arg;                 # 不安全的
+.Ve
+.PP
+.Vb 3
+\&    exec "echo $arg";           # 不安全的
+\&    exec "echo", $arg;          # 不安全的
+\&    exec "sh", '-c', $arg;      # 非常不安全!
+.Ve
+.PP
+.Vb 2
+\&    @files = <*.c>;             # 不安全的 (使用 readdir() 或其他)
+\&    @files = glob('*.c');       # 不安全的 (使用 readdir() 或其他)
+.Ve
+.PP
+.Vb 4
+\&    # In Perl releases older than 5.6.0 the <*.c> and glob('*.c') would
+\&    # have used an external program to do the filename expansion; but in
+\&    # either case the result is tainted since the list of filenames comes
+\&    # from outside of the program.
+.Ve
+.PP
+.Vb 2
+\&    $bad = ($arg, 23);          # $bad will be tainted
+\&    $arg, `true`;               # Insecure (although it isn't really)
+.Ve
+.PP
+如果你试图做一些不安全的事情,你会得到类似"Insecure dependency"或"Insecure $ENV{PATH}"的致命错误。
+.Sh "Laundering and Detecting Tainted Data 清洗和检测污染数据"
+.IX Subsection "Laundering and Detecting Tainted Data"
+测试一个变量是否含有污染的数据,谁的用法会引发一条"Insecure dependency"信息,在你附近的CPAN镜像查找Taint.pm模块,它应该在1997年左右就可以得到 。或者你可以用is_tainted()函数。
+.PP
+.Vb 3
+\&    sub is_tainted {
+\&        return ! eval { eval("#" . substr(join("", @_), 0, 0)); 1 };
+\&    }
+.Ve
+.PP
+此函数利用了“表达式中任何一部分存在的污染数据致使整个表达式都被污染”。操作员测试每个参数是否被污染会使效率低下。相反,稍稍高效且稳定的方法是,只要一个表达式中任何一部分存取一个被污染的值,那么这个表达式被认为是被污染的。
+.PP
+但是仅仅测试数据是否被污染还不够。有时你必须清除数据的污染。唯一的通过污染机制的方法是引用正则表达式中的一个子模式。Perl假定如果你用$1, $2等等引用一个子串,那么你就知道你在做什么。也就是说你必须思考而不是盲目的解除污染,或者违抗整个机制。校验变量是否只含有好的字符(已知的好的字符)比检查它是否含有坏的字符要好。是因为很可能就把意料之外的坏字符漏掉。
+.PP
+下面的例子是一个检查数据中是否只含有单词(字母、数字、下划线)、连字符、'@'符号或者是'.'。
+.PP
+.Vb 5
+\&    if ($data =~ /^([-\e@\ew.]+)$/) {
+\&        $data = $1;                     # $data now untainted
+\&    } else {
+\&        die "Bad data in '$data'";      # log this somewhere
+\&    }
+.Ve
+.PP
+这完全没有问题,因为/\w+/通常不匹配shell中的字符、'.'、破折号、亦或任何对于shell有特殊含义的字符。使用/.+/从理论上讲会不安全,因为它匹配任何字符,而Perl将不再检查它们。我们的经验是当你解除污染时,必须对匹配模式极其的小心。使用正则表达式清洗数据是解除污染的唯一机制,除非你使用下面才详细叙述的派生一个特权被降低的字进程的方法。
+.PP
+如果程序中使用了use locale,那么上面的例子将不会解除$data的污染,因为\w匹配的字符是由locale决定的。Perl认为locale的定义是不可信的,因为它们包含程序之外 的数据。如果你在写一个locale-aware的程序,并且想使用包含\w的正则表达式清洗数据,那么请在同一块内的表达式之前加上no locale。参见perllocale/SECURITY以获 得更多的信息。
+.ie n .Sh ""#!"行的开关"
+.el .Sh "``#!''行的开关"
+.IX Subsection "Switches On the #! Line"
+当你使脚本程序可执行,就是可以像命令一样让它们工作时,系统会把"#!"行的开关传递给Perl。Perl检查setuid(或setgid)程序的任何和"#!"行开关匹配的命令行开关。一些Unix或Unix-like系统环境强制在"#!"行使用一个开关,所以你也许必须用类似-wU的开关而不是-w -U。(这个问题只出现在支持#!、setuid、setgid脚本的Unix或Unix-like系统环境中)
+.ie n .Sh "Taint mode and @INC"
+.el .Sh "Taint mode and \f(CW at INC\fP"
+.IX Subsection "Taint mode and @INC"
+When the taint mode (\f(CW\*(C`\-T\*(C'\fR) is in effect, the \*(L".\*(R" directory is removed
+from \f(CW at INC\fR, and the environment variables \f(CW\*(C`PERL5LIB\*(C'\fR and \f(CW\*(C`PERLLIB\*(C'\fR
+are ignored by Perl. You can still adjust \f(CW at INC\fR from outside the
+program by using the \f(CW\*(C`\-I\*(C'\fR command line option as explained in
+perlrun. The two environment variables are ignored because
+they are obscured, and a user running a program could be unaware that
+they are set, whereas the \f(CW\*(C`\-I\*(C'\fR option is clearly visible and
+therefore permitted.
+.PP
+Another way to modify \f(CW at INC\fR without modifying the program, is to use
+the \f(CW\*(C`lib\*(C'\fR pragma, e.g.:
+.PP
+.Vb 1
+\&  perl -Mlib=/foo program
+.Ve
+.PP
+The benefit of using \f(CW\*(C`\-Mlib=/foo\*(C'\fR over \f(CW\*(C`\-I/foo\*(C'\fR, is that the former
+will automagically remove any duplicated directories, while the later
+will not.
+.Sh "Cleaning Up Your Path 清理路径"
+.IX Subsection "Cleaning Up Your Path"
+对于"Insecure $ENV{PATH}"这样的信息,你必须把$ENV{PATH}设置为已知的,并且路径中的任何目录都对于非本用户或非本组成员不可写。你也许会在即使路径名是完全合法的情况下收到那条信息表示非常惊讶。当你没有提供程序一个完整的路径时,它不会被引起;相反,若你从未设置PATH环境变量,或者你没有把它设置安全,它就会被引起。因为Perl不能保证可疑的可执行程序是不是它本身将执行其他的依赖于PATH的程序,它确定是你设定的PATH。
+.PP
+PATH不是唯一可能导致问题的变量。因为一些shell会使用IFS,CDPATH,ENV和BASH_ENV,Perl在开始子进程时检查它们是否也为空或者未污染。你也许会在你的set-id和污染检测模式下的脚本程序中加入这些东西:
+.PP
+.Vb 1
+\&    delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};   # 使 %ENV 更安全
+.Ve
+.PP
+当然,无论是否使用污染变量都有可能出现麻烦。在处理任何由用户提供的文件名的文件时,要做周密的测试。必须时,可以在去掉用户(或组!)的特权之后再进行类似open的操作。Perl不阻止你打开污染的文件名并读取内容,所以要小心对待打印出的内容。污染机制的目的是防止愚蠢的错误,不是使人懒惰不去思考。
+.PP
+当你传递给system和exec明确的参数列表而非含有通配符的字符串时,Perl不会调用shell去扩展通配符。不幸的是,open,glob,backtick(译注:backtick为反引号)函数并不提供这样的特性,所以当使用它们的时候必须非常仔细。
+.PP
+Perl为从一个setuid或setgid程序打开文件或管道提供了一个安全的方法:创建一个减少权限的子进程来为你完成那些“肮脏”的工作。首先,用特殊的OPEN语法创建一个子进程,使其和父进程通过一个管道相连。现在子进程把它的ID和其他诸如环境变量,umask,当前工作目录的性质重新设置回原始的或安全的变量。然后让该不具有任何特权的子进程来完成OPEN和其他的系统调用。最终,子进程把它成功存取的数据传递给父进程。因为文件或管道是由运行于比父进程权限低的子进程打开的,所以它不容易被欺骗去做它不该做的事情。
+.PP
+这里有一个安全使用backtick的方法。注意当shell可能扩展时,exec是如何不被调用的。这是目前来调用可能被shell转义的东西最好的方法:从不调用shell。
+.PP
+.Vb 25
+\&        use English '-no_match_vars';
+\&        die "Can't fork: $!" unless defined($pid = open(KID, "-|"));
+\&        if ($pid) {           # parent
+\&            while (<KID>) {
+\&                # do something
+\&            }
+\&            close KID;
+\&        } else {
+\&            my @temp     = ($EUID, $EGID);
+\&            my $orig_uid = $UID;
+\&            my $orig_gid = $GID;
+\&            $EUID = $UID;
+\&            $EGID = $GID;
+\&            # Drop privileges
+\&            $UID  = $orig_uid;
+\&            $GID  = $orig_gid;
+\&            # Make sure privs are really gone
+\&            ($EUID, $EGID) = @temp;
+\&            die "Can't drop privileges"
+\&                unless $UID == $EUID  && $GID eq $EGID;
+\&            $ENV{PATH} = "/bin:/usr/bin"; # Minimal PATH.
+\&            # Consider sanitizing the environment even more.
+\&            exec 'myprog', 'arg1', 'arg2'
+\&                or die "can't exec myprog: $!";
+\&        }
+.Ve
+.PP
+ 使用类似的策略可以让glob使用通配符扩展,虽然也可以用readdir。
+.PP
+当你虽然相信自己并没有写有问题的程序,但并不信任程序的最终使用者不会企图让它做坏事时,污染检测最为有用。此类安全检查对set-id和以其他用户身份运行的程序(如CGI)非常有用。
+.PP
+若连程序的作者都不可信的话,情况就不同了。当某人给你一段程序并和你说,“给,试试看。”对于此类安全问题,使用包含在Perl发行版中的Safe模块。这个模块允许程序员建立特殊的隔间,在其中所有的系统调用都被截获,并且名字空间入口被严格控制。
+.Sh "Security Bugs 安全问题"
+.IX Subsection "Security Bugs"
+除了源于赋予像脚本一样灵活的系统特权这类明显的问题,在许多Unix版本中,set-id脚本从一开始就是天生不安全的。问题出在内核的条件竞争。在内核打开文件来查看应该运行哪个解释器和当(现在已set-id)解释器回过头来重新打开文件并解释它的这两个事件之间,可疑的文件也许已经改变了,特别是当系统中有符号连接时。
+.PP
+幸运的是,这个内核的“特性”有时可以被关闭。不幸的是,有两个方法来关闭它。系统可以简单的宣布任何含有set-id位的脚本都是不合法的,这个显然用处不大。另一个是忽略脚本中的set-id位。如果后者被设置为真,那么当Perl注意到其它脚本中无效的setuid/gid位时,它可以模仿 setuid和setgid的机制。这是通过一个叫做suidperl的特殊程序来实现的,它在需要时自动被调用。
+.PP
+但是,如果内核的set-id脚本特性没有被关闭,Perl就会大声抱怨你的set-id程序是不安全的。你要么需要关闭内核的set-id脚本特性,要么为脚本制作一个C Wrapper。一个C Wrapper就是一个除了调用你的Perl程序其他什么都不干的已编译程序。已编译程序不受此内核问题的影响去找set-id脚本的麻烦。这里有一个简单的C Wrapper:
+.PP
+.Vb 6
+\&    #define REAL_PATH "/path/to/script"
+\&    main(ac, av)
+\&        char **av;
+\&    {
+\&        execv(REAL_PATH, av);
+\&    }
+.Ve
+.PP
+把此C Wrapper编译成可执行二进制文件,对它setuid或setgid而不是你的脚本。
+.PP
+近几年,软件商开始提供没有此安全问题的系统。在它们中,当内核把将要被打开的set-id脚本的名字传递给解释器时,它将不会传递可能出现问题的路径名而是传递/dev/fd/3。这是一个已经在脚本上打开的特殊文件,所以将不会出现条件竞争问题。在这些系统中,Perl需要在编译时带上-DSETUID_SCRIPTS_ARE_SECURE_NOW参数。Configure程序将自己完成这个任务,所以你永远不必要自己指出此点。现在SVR4和BSD4.4都采用此种方法来避免内核条件竞争。
+.PP
+在Perl 5.6.1 发行之前,suidperl的代码问题可能导致安全漏洞。
+.Sh "Protecting Your Programs 保护你的程序"
+.IX Subsection "Protecting Your Programs"
+有很多种方法可以隐藏你的Perl程序源代码,它们具有不同等级的“安全性”。
+.PP
+首先,你不能去掉“读”权限,因为源代码必须在被读取之后才能编译和解释。(这并不意味着CGI脚本的源代码在网上是可被读取的)所以你必须把权限设置为对外界友好的0755。这使在你本地系统上的人只能查看源代码。
+.PP
+一些人错误的认为这是一个安全问题。如果你的程序不安全,而你依赖人们不知道如何利用这些漏洞,这是不安全的。通常某些人在没有看源代码的情况下就可以利用这些漏洞。以隐藏来实现所谓的“安全”而不是修复漏洞,是非常不安全的。
+.PP
+你可以试着通过源代码过滤器(CPAN上的Filter::*)来实现加密。但是骇客有可能把它解密。你可以试着使用下面描述的字节码编译器和解释器,但是骇客有可能把它反编译。这些对想看你代码的人造成不同难度的困难。但是没有一种可以完全的避免(不光是Perl,所有语言都一样)。
+.PP
+如果你担心有人会通过你的程序得利,那么你可以在最低行写一个限制性的许可证来寻求法律保护。当然如果你用类似“这是某某公司的私人程序,你无权使用它”的声明来授权你的软件并发布它的话,那会是非常危险的。你应该找一个律师确定你的许可证的措辞可以在法庭上站得住脚。
+.Sh "Unicode"
+.IX Subsection "Unicode"
+Unicode is a new and complex technology and one may easily overlook
+certain security pitfalls.  See perluniintro for an overview and
+perlunicode for details, and \*(L"Security Implications of Unicode\*(R" in perlunicode for security implications in particular.
+.Sh "Algorithmic Complexity Attacks"
+.IX Subsection "Algorithmic Complexity Attacks"
+Certain internal algorithms used in the implementation of Perl can
+be attacked by choosing the input carefully to consume large amounts
+of either time or space or both.  This can lead into the so-called
+\&\fIDenial of Service\fR (DoS) attacks.
+.IP "\(bu" 4
+Hash Function \- the algorithm used to \*(L"order\*(R" hash elements has been
+changed several times during the development of Perl, mainly to be
+reasonably fast.  In Perl 5.8.1 also the security aspect was taken
+into account.
+.Sp
+In Perls before 5.8.1 one could rather easily generate data that as
+hash keys would cause Perl to consume large amounts of time because
+internal structure of hashes would badly degenerate.  In Perl 5.8.1
+the hash function is randomly perturbed by a pseudorandom seed which
+makes generating such naughty hash keys harder.
+See \*(L"\s-1PERL_HASH_SEED\s0\*(R" in perlrun for more information.
+.Sp
+The random perturbation is done by default but if one wants for some
+reason emulate the old behaviour one can set the environment variable
+\&\s-1PERL_HASH_SEED\s0 to zero (or any other integer).  One possible reason
+for wanting to emulate the old behaviour is that in the new behaviour
+consecutive runs of Perl will order hash keys differently, which may
+confuse some applications (like Data::Dumper: the outputs of two
+different runs are no more identical).
+.Sp
+\&\fBPerl has never guaranteed any ordering of the hash keys\fR, and the
+ordering has already changed several times during the lifetime of
+Perl 5.  Also, the ordering of hash keys has always been, and
+continues to be, affected by the insertion order.
+.Sp
+Also note that while the order of the hash elements might be
+randomised, this \*(L"pseudoordering\*(R" should \fBnot\fR be used for
+applications like shuffling a list randomly (use \fIList::Util::shuffle()\fR
+for that, see List::Util, a standard core module since Perl 5.8.0;
+or the \s-1CPAN\s0 module Algorithm::Numerical::Shuffle), or for generating
+permutations (use e.g. the \s-1CPAN\s0 modules Algorithm::Permute or
+Algorithm::FastPermute), or for any cryptographic applications.
+.IP "\(bu" 4
+Regular expressions \- Perl's regular expression engine is so called
+\&\s-1NFA\s0 (Non\-Finite Automaton), which among other things means that it can
+rather easily consume large amounts of both time and space if the
+regular expression may match in several ways.  Careful crafting of the
+regular expressions can help but quite often there really isn't much
+one can do (the book \*(L"Mastering Regular Expressions\*(R" is required
+reading, see perlfaq2).  Running out of space manifests itself by
+Perl running out of memory.
+.IP "\(bu" 4
+Sorting \- the quicksort algorithm used in Perls before 5.8.0 to
+implement the \fIsort()\fR function is very easy to trick into misbehaving
+so that it consumes a lot of time.  Nothing more is required than
+resorting a list already sorted.  Starting from Perl 5.8.0 a different
+sorting algorithm, mergesort, is used.  Mergesort is insensitive to
+its input data, so it cannot be similarly fooled.
+.PP
+See <http://www.cs.rice.edu/~scrosby/hash/> for more information,
+and any computer science text book on the algorithmic complexity.
+.SH "SEE ALSO 参见"
+.IX Header "SEE ALSO"
+perlrun中关于清理环境变量的描述
+.SH "中文版维护人"
+.B nan1nan1  <nan1nan1 at hotmail.com>
+.SH 中文版最新更新
+.B 2001年12月23日星期日
+.SH 中文手册页翻译计划
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/perlstyle.1 b/src/man1/perlstyle.1
new file mode 100644
index 0000000..7aa89d3
--- /dev/null
+++ b/src/man1/perlstyle.1
@@ -0,0 +1,297 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLSTYLE 1"
+.TH PERLSTYLE 1 "2003-11-25" "perl v5.8.3" "Perl Programmers Reference Guide"
+.SH "NAME"
+perlstyle \- Perl 风格指南
+.SH "DESCRIPTION 描述"
+.IX Header "DESCRIPTION"
+每个程序员当然都会有自己的编程风格,但是有一些一般性的原则可以使得我们的程序更易于阅读,理解,以及维护。
+.PP
+最重要的是使用 \fB\-w\fR 选项. 如果必须关闭该选项,可以用 \f(CW\*(C`no warnings\*(C'\fR 或变量 \f(CW$^W\fR 来在一定的代码段中关闭它. 你还应该使用 \f(CW\*(C`use strict\*(C'\fR 除非你清楚不使用它的理由.  \f(CW\*(C`use sigtrap\*(C'\fR 和 \f(CW\*(C`use diagnostics\*(C'\fR 也是非常有用的.
+.PP
+关于代码美学,  Larry 大概只强烈的关心一件事情:多行块的结束花括号应该与开始的关键字对齐. 除了这个, 还有一些不是那么重要的事情:
+.IP "\(bu" 4
+4\-列缩进.
+.IP "\(bu" 4
+如果可能的话,开始的花括号与关键词最好放在同一行,否则对齐.
+.IP "\(bu" 4
+多行的块的开始的花括号之前应当有空格
+.IP "\(bu" 4
+单行的块放在一行,包括花括号.
+.IP "\(bu" 4
+分号前不要空格.
+.IP "\(bu" 4
+在短的单行块中省略分号.
+.IP "\(bu" 4
+操作符周围打空格.
+.IP "\(bu" 4
+在“复合”下标周围打空格 (在括号中).
+.IP "\(bu" 4
+在不同功能的块之间打空行.
+.IP "\(bu" 4
+else另起一行写
+.IP "\(bu" 4
+函数与括号间不要空格
+.IP "\(bu" 4
+每个逗号后打空格.
+.IP "\(bu" 4
+长句子在操作符后截断 ( "and" 和 "or" 除外).
+.IP "\(bu" 4
+关闭括号后打空格.
+.IP "\(bu" 4
+相关项之间以列对齐.
+.IP "\(bu" 4
+在不影响清晰的情况下尽量减少标点符号.
+.PP
+Larry 这样做当然有他的原因, 不过他没有要求别人都和他一样.
+.PP
+以下意见供您参考:
+.IP "\(bu" 4
+可以那样做并不意味着应该那样做. Perl 设计为作每件事都可以用好几种方法, 你应该选择最可读的一种. 例如
+.Sp
+.Vb 1
+\&    open(FOO,$foo) || die "Can't open $foo: $!";
+.Ve
+.Sp
+好于
+.Sp
+.Vb 1
+\&    die "Can't open $foo: $!" unless open(FOO,$foo);
+.Ve
+.Sp
+因为第二种办法掩盖了句子中的主要内容。另一方面
+.Sp
+.Vb 1
+\&    print "Starting analysis\en" if $verbose;
+.Ve
+.Sp
+好于
+.Sp
+.Vb 1
+\&    $verbose && print "Starting analysis\en";
+.Ve
+.Sp
+因为主要关键不在于是否用户输入了 \fB\-v\fR。
+.Sp
+类似的,因为一个操作符允许使用默认参数,不意味着你必须使用默认值。默认值是为懒惰的系统程序员书写只运行一次的程序准备的。如果你需要你的程序尽量可读,考虑给出参数。
+.Sp
+根据相同的原则,在很多地方即使你可以忽略括号也不意味着你应当这样做:
+.Sp
+.Vb 2
+\&    return print reverse sort num values %array;
+\&    return print(reverse(sort num (values(%array))));
+.Ve
+.Sp
+如果有疑义,使用括号。至少它使得可怜的笨蛋能在 \fBvi\fR 中使用 % 键来跳转
+.Sp
+甚至你没有疑义的时候,为那个将来维护你的代码的家伙的精神健康考虑一下吧,并且他有可能把括号放错地方。
+.IP "\(bu" 4
+在程序中使用 last 跳出,而不要在开始和结束时用奇怪的跳转退出循环。把它 "缩出" 几格以利于察看:
+.Sp
+.Vb 7
+\&    LINE:
+\&        for (;;) {
+\&            statements;
+\&          last LINE if $foo;
+\&            next LINE if /^#/;
+\&            statements;
+\&        }
+.Ve
+.IP "\(bu" 4
+别害怕使用循环标记--它们用来增强可读性并且允许多层循环中断. 参见前例.
+.IP "\(bu" 4
+避免在空上下文中使用 grep() (或 map()) 或 `反引号` , 那样,你就丢弃了它们的返回值. 使用它们是为了得到返回值,否则,使用 foreach() 或是 system() 好了.
+.IP "\(bu" 4
+考虑移植的时候,某些特性可能不是在所有的机器上都能够得到支持, 这时可以用 eval来测试. 如果你知道提供特定功能的版本或是补丁, 你可以察看 \f(CW$]\fR (也就是 \f(CW\*(C`English\*(C'\fR 中的 \f(CW$PERL_VERSION\fR) 来确定当前的版本.  \f(CW\*(C`Config\*(C'\fR 模块也会提供perl在安装时 \fBConfigure\fR 程序测得的值.
+.IP "\(bu" 4
+使用明确的标识符,你要是想不起来标识符的意思,那就麻烦了。
+.IP "\(bu" 4
+短标识符如 \f(CW$gotit\fR 虽然没什么不好, 但是用下划线来分割单词可以增加可读性. 如 \f(CW$var_names_like_this\fR 好于 \f(CW$VarNamesLikeThis\fR,对不以英语为母语的人更是如此.同样,在使用 \s-1VAR_NAMES_LIKE_THIS\s0 时也要遵循这个规则。
+.Sp
+包名称有时不遵守这个约定. Perl 为 \*(L"pragma\*(R" 保留小写的包名称,比如 integer 和 strict. 其他模块名称应该用大写字母开始,但是一般不用下划线来分隔,因为当使用模块名来作文件名时,这在某些系统会出现错误.
+.IP "\(bu" 4
+使用大小写可以区分变量的作用域。例如:
+.Sp
+.Vb 3
+\&    $ALL_CAPS_HERE   常量 (小心!不要与 perl 变量冲突!)
+\&    $Some_Caps_Here  包作用域 global/static
+\&    $no_caps_here    函数作用域 my() 或 local() 变量
+.Ve
+.Sp
+函数和方法名多用小写. 如, \f(CW$obj\fR\->\fIas_string()\fR.
+.Sp
+用下划线开始的函数名或变量名,表示该函数或变量只能在定义它的包中使用.
+.IP "\(bu" 4
+如果你的正则表达式较复杂,用 \f(CW\*(C`/x\*(C'\fR 来增加注释行或空行以利于阅读. 当其中有很多斜杠或反斜杠时,不要用反斜杠来作正则表达式的定界符.
+.IP "\(bu" 4
+使用 "and" 和 "or" 操作符以减少使用括号, 尽量少用 && 和 ||. 调用子程序时尽量少用"&"和括号,可以把子程序当做函数或列表操作符来调用.
+.IP "\(bu" 4
+使用 here documents 代替大量的 print() 语句.
+.IP "\(bu" 4
+相关语句用列对齐方式来书写,特别是当一行放不下的时候.
+.Sp
+.Vb 4
+\&    $IDX = $ST_MTIME;
+\&    $IDX = $ST_ATIME       if $opt_u;
+\&    $IDX = $ST_CTIME       if $opt_c;
+\&    $IDX = $ST_SIZE        if $opt_s;
+.Ve
+.Sp
+.Vb 3
+\&    mkdir $tmpdir, 0700 or die "can't mkdir $tmpdir: $!";
+\&    chdir($tmpdir)      or die "can't chdir $tmpdir: $!";
+\&    mkdir 'tmp',   0777 or die "can't mkdir $tmpdir/tmp: $!";
+.Ve
+.IP "\(bu" 4
+总是检测返回值. 错误信息被送往 STDERR, 包括出错的程序、失败的系统调用及参数、并且(非常重要的)包括标准错误信息. 这里是一个简单而完整的例子:
+.Sp
+.Vb 1
+\&    opendir(D, $dir)     or die "can't opendir $dir: $!";
+.Ve
+.IP "\(bu" 4
+把翻译列表以列对齐方式排列:
+.Sp
+.Vb 2
+\&    tr [abc]
+\&       [xyz];
+.Ve
+.IP "\(bu" 4
+考虑可重用性. 请考虑使用模块或对象. 考虑使用 use strict 和 use warnings (或 -w) 使代码清晰明确. 考虑改变世界观。
+.IP "\(bu" 4
+要一致,要兼容。
+.IP "\(bu" 4
+要漂亮,要美观。
+.SH "译者"
+.B redcandle <redcandle51 at chinaren.com>
+.B 20010530
+.SH "中文手册页翻译计划"
+.B http://cmpp.linuxforum.net
diff --git a/src/man1/perltw.1 b/src/man1/perltw.1
new file mode 100644
index 0000000..25d7787
--- /dev/null
+++ b/src/man1/perltw.1
@@ -0,0 +1,271 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "PERLTW 1"
+.TH PERLTW 1 "2003-09-02" "perl v5.8.1" "Perl Programmers Reference Guide"
+.SH "NAME"
+perltw \- 正體中文 Perl 指南
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+歡迎來到 Perl 的天地!
+.PP
+從 5.8.0 版開始, Perl 具備了完善的 Unicode (萬國碼) 支援,
+也連帶支援了許e多拉丁語系以外的編碼方式; \s-1CJK\s0 (中日韓) 便是其中的一部份.
+Unicode 是國際性的標準, 試圖涵蓋e世界上所有的字符: 西方世界, 東方世界,
+以及兩者間的一切 (希臘文, 敘利亞文, 阿拉伯文, 希伯來文, 印度文,
+印地安文, 等等). 它也容納了多種作業系統與平臺 (如 \s-1PC\s0 及麥金塔).
+.PP
+Perl 本身以 Unicode 進行操作. 這表示 Perl 內部的字串資料可用 Unicode
+表示; Perl 的函式與算符 (例如正規表示式比對) 也能對 Unicode 進行操作.
+在輸入及輸出時, 為了處理以 Unicode 之前的編碼方式儲存的資料, Perl
+提供了 Encode 這個模組, 可以讓你輕易地讀取及寫入舊有的編碼資料.
+.PP
+Encode 延伸模組支援下列正體中文的編碼方式 ('big5' 表示 'big5\-eten'):
+.PP
+.Vb 3
+\&    big5-eten   Big5 編碼 (含倚天延伸字形)
+\&    big5-hkscs  Big5 + 香港外字集, 2001 年版
+\&    cp950       字碼頁 950 (Big5 + 微軟添加的字符)
+.Ve
+.PP
+舉例來說, 將 Big5 編碼的檔案轉成 Unicode, 祗需鍵入下列指令:
+.PP
+.Vb 1
+\&    perl -Mencoding=big5,STDOUT,utf8 -pe1 < file.big5 > file.utf8
+.Ve
+.PP
+Perl 也內附了 \*(L"piconv\*(R", 一支完全以 Perl 寫成的字符轉換工具程式, 用法如下:
+.PP
+.Vb 2
+\&    piconv -f big5 -t utf8 < file.big5 > file.utf8
+\&    piconv -f utf8 -t big5 < file.utf8 > file.big5
+.Ve
+.PP
+另外, 利用 encoding 模組, 你可以輕易寫出以字符為單位的程式碼, 如下所示:
+.PP
+.Vb 7
+\&    #!/usr/bin/env perl
+\&    # 啟動 big5 字串解析; 標準輸出入及標準錯誤都設為 big5 編碼
+\&    use encoding 'big5', STDIN => 'big5', STDOUT => 'big5';
+\&    print length("駱駝");            #  2 (雙引號表示字符)
+\&    print length('駱駝');            #  4 (單引號表示位元組)
+\&    print index("諄諄教誨", "彖帢"); # -1 (不包含此子字串)
+\&    print index('諄諄教誨', '彖帢'); #  1 (從第二個位元組開始)
+.Ve
+.PP
+在最後一列例子裡, \*(L"諄\*(R" 的第二個位元組與 \*(L"諄\*(R" 的第一個位元組結合成 Big5
+碼的 \*(L"彖\*(R"; \*(L"諄\*(R" 的第二個位元組則與 \*(L"教\*(R" 的第一個位元組結合成 \*(L"帢\*(R".
+這解決了以前 Big5 碼比對處理上常見的問題.
+.Sh "額外的中文編碼"
+.IX Subsection "額外的中文編碼"
+如果需要更多的中文編碼, 可以從 \s-1CPAN\s0 (<http://www.cpan.org/>) 下載
+Encode::HanExtra 模組. 它目前提供下列編碼方式:
+.PP
+.Vb 4
+\&    cccii       1980 年文建會的中文資訊交換碼
+\&    euc-tw      Unix 延伸字符集, 包含 CNS11643 平面 1-7
+\&    big5plus    中文數位化技術推廣基金會的 Big5+
+\&    big5ext     中文數位化技術推廣基金會的 Big5e
+.Ve
+.PP
+另外, Encode::HanConvert 模組則提供了簡繁轉換用的兩種編碼:
+.PP
+.Vb 2
+\&    big5-simp   Big5 正體中文與 Unicode 簡體中文互轉
+\&    gbk-trad    GBK 簡體中文與 Unicode 正體中文互轉
+.Ve
+.PP
+若想在 \s-1GBK\s0 與 Big5 之間互轉, 請參考該模組內附的 b2g.pl 與 g2b.pl 兩支程式,
+或在程式內使用下列寫法:
+.PP
+.Vb 3
+\&    use Encode::HanConvert;
+\&    $euc_cn = big5_to_gb($big5); # 從 Big5 轉為 GBK
+\&    $big5 = gb_to_big5($euc_cn); # 從 GBK 轉為 Big5
+.Ve
+.Sh "進一步的資訊"
+.IX Subsection "進一步的資訊"
+請參考 Perl 內附的大量說明文件 (不幸全是用英文寫的), 來學習更多關於
+Perl 的知識, 以及 Unicode 的使用方式. 不過, 外部的資源相當豐富:
+.Sh "提供 Perl 資源的網址"
+.IX Subsection "提供 Perl 資源的網址"
+.IP "<http://www.perl.com/>" 4
+.IX Item "<http://www.perl.com/>"
+Perl 的首頁 (由歐萊禮公司維護)
+.IP "<http://www.cpan.org/>" 4
+.IX Item "<http://www.cpan.org/>"
+Perl 綜合典藏網 (Comprehensive Perl Archive Network)
+.IP "<http://lists.perl.org/>" 4
+.IX Item "<http://lists.perl.org/>"
+Perl 郵遞論壇一覽
+.Sh "學習 Perl 的網址"
+.IX Subsection "學習 Perl 的網址"
+.IP "<http://www.oreilly.com.tw/chinese/perl/index.html>" 4
+.IX Item "<http://www.oreilly.com.tw/chinese/perl/index.html>"
+正體中文版的歐萊禮 Perl 書藉
+.IP "<http://groups.google.com/groups?q=tw.bbs.comp.lang.perl>" 4
+.IX Item "<http://groups.google.com/groups?q=tw.bbs.comp.lang.perl>"
+臺灣 Perl 連線討論區 (也就是各大 \s-1BBS\s0 的 Perl 連線版)
+.Sh "Perl 使用者集會"
+.IX Subsection "Perl 使用者集會"
+.IP "<http://www.pm.org/groups/asia.shtml#Taiwan>" 4
+.IX Item "<http://www.pm.org/groups/asia.shtml#Taiwan>"
+臺灣 Perl 推廣組一覽
+.IP "<http://irc.elixus.org/>" 4
+.IX Item "<http://irc.elixus.org/>"
+藝立協線上聊天室
+.Sh "Unicode 相關網址"
+.IX Subsection "Unicode 相關網址"
+.IP "<http://www.unicode.org/>" 4
+.IX Item "<http://www.unicode.org/>"
+Unicode 學術學會 (Unicode 標準的制定者)
+.IP "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>" 4
+.IX Item "<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>"
+Unix/Linux 上的 \s-1UTF\-8\s0 及 Unicode 答客問
+.Sh "中文化資訊"
+.IX Subsection "中文化資訊"
+.ie n .IP "為什麼叫 ""正體中文"" 不叫 ""繁體中文""?" 4
+.el .IP "為什麼叫 ``正體中文'' 不叫 ``繁體中文''?" 4
+.IX Item "為什麼叫 正體中文 不叫 繁體中文?"
+<http://www.csie.ntu.edu.tw/~b7506051/mozilla/faq.html#faqglossary>
+.IP "中文化軟體聯盟" 4
+.IX Item "中文化軟體聯盟"
+<http://www.cpatch.org/>
+.IP "Linux 軟體中文化計劃" 4
+.IX Item "Linux 軟體中文化計劃"
+<http://www.linux.org.tw/CLDP/>
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Encode, Encode::TW, encoding, perluniintro, perlunicode
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+Jarkko Hietaniemi <jhi at iki.fi>
+.PP
+Autrijus Tang (唐宗漢) <autrijus at autrijus.org>
diff --git a/src/man1/pg_config.1 b/src/man1/pg_config.1
new file mode 100644
index 0000000..6d39c7a
--- /dev/null
+++ b/src/man1/pg_config.1
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_CONFIG" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_config \- 检索已安装版本的 PostgreSQL 的信息
+
+.SH SYNOPSIS
+.sp
+pg_config {--bindir | --includedir | --includedir-server | --libdir | --pkglibdir | --configure | --version...}
+.SH "DESCRIPTION 描述"
+.PP
+\fBpg_config\fR 工具打印当前安装的 PostgreSQL版本配置参数。 它可以用于那些希望与 PostgreSQL  相联接的软件包,这样可以通过它找到相对应的头文件和库。
+.SH "OPTIONS 选项"
+.PP
+ 要使用 pg_config,使用下面的一个或者多个选项:
+.TP
+--bindir
+ 打印用户可执行文件的路径。比如,可以用这个找 psql 程序。 通常这也是 pg_config 程序存在的路径。
+.TP
+--includedir
+ 打印 C 头文件的路径。
+.TP
+--includedir-server
+ 打印那些做服务器编程时使用的 C 头文件的位置。
+.TP
+--libdir
+ 打印目标代码库的路径。
+.TP
+--pkglibdir
+ 打印动态装载的模块的位置,或者服务器在哪里寻找他们。 (其它体系相关的数据文件可能也放在这个目录里。)
+.TP
+--configure
+ 打印我们配置和制作 PostgreSQL  时给 configure 脚本用的选项, 或者找出二进制包是用哪些选项制作的。(不过请注意二进制包通常包含供应商提供的补丁。)
+.TP
+--version
+ 打印 PostgreSQL 的版本并退出。
+.PP
+.PP
+ 如果给出多于一个选项(除了 --version),那么信息以该顺序打印,每行一条。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pg_controldata.1 b/src/man1/pg_controldata.1
new file mode 100644
index 0000000..3d34e4e
--- /dev/null
+++ b/src/man1/pg_controldata.1
@@ -0,0 +1,20 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_CONTROLDATA" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_controldata \- 显示一个 PostgreSQL 集群的控制信息
+
+.SH SYNOPSIS
+.sp
+\fBpg_controldata\fR\fR [ \fR\fB\fIdatadir\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBpg_controldata\fR 打印那些在 initdb  过程中初始化的信息,比如表版本和服务器的区域等。它还显示有关预写日志和检查点处理相关的信息。 这些信息是集群范围内有效的,并不和某个数据库相关。
+.PP
+ 这个命令只应该有安装服务器的用户运行,因为它要求对数据目录的读访问权限。 你可以在命令行上声明数据目录,或者使用环境变量  \fBPGDATA\fR。
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATA\fR
+ 缺省数据目录位置
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pg_ctl.1 b/src/man1/pg_ctl.1
new file mode 100644
index 0000000..35fc6ba
--- /dev/null
+++ b/src/man1/pg_ctl.1
@@ -0,0 +1,156 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_CTL" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_ctl \- 启动,停止和重启 PostgreSQL 服务器
+
+.SH SYNOPSIS
+.sp
+\fBpg_ctl\fR \fBstart\fR\fR [ \fR\fB-w \fR\fR]\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-l \fIfilename\fB \fR\fR]\fR\fR [ \fR\fB-o \fIoptions\fB \fR\fR]\fR\fR [ \fR\fB-p \fIpath\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBstop\fR\fR [ \fR\fB-W \fR\fR]\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-m \fR\fB s[mart]\fR | \fBf[ast]\fR | \fBi[mmediate]\fR\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBrestart\fR\fR [ \fR\fB-w \fR\fR]\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-m \fR\fB s[mart]\fR | \fBf[ast]\fR | \fBi[mmediate]\fR\fB \fR\fR]\fR\fR [ \fR\fB-o \fIoptions\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBreload\fR\fR [ \fR\fB-s \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR
+
+\fBpg_ctl\fR \fBstatus\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBpg_ctl\fR 是一个用于启动,停止, 或者重起 PostgreSQL 后端服务器(postmaster), 或者显示一个运行着的服务器的状态的工具, 尽管我们可以手动启动服务器,但是 pg_ctl 封装了重新定向日志输出, 与终端和进程组合理分离,以及另外提供了一个选项用于有控制的关闭。
+.PP
+在 \fBstart\fR  模式里会启动一个新的服务器。 服务器是在后台启动的,标准输入被附着到了 /dev/null  上。如果使用了 -l,那么标准输出和标准错误被定向到一个日志文件, 要么就是重新定向到 pg_ctl 的标准输出(而不是标准错误)。 如果没有选定日志文件,pg_ctl 的标准输出应该重新定向到一个文件或者用管道输出到另外一个进程, 比如那些日志旋转程序,否则,postmaster 将把它的输出写到控制终端(在后台)并且将不会脱离 shell 的进程组。
+.PP
+在 \fBstop\fR 模式下,那个正在特定数据目录运行的服务器被关闭。 你可以用 -m 选项选择三种不同的关闭模式:"Smart" 模式等待所有客户端中断联接。 这个是缺省。"Fast" 模式并不等待客户端中断联接。 所有活跃事务都被回卷并且客户端都强制断开。 "Immediate" 模式将在没有干净关闭的情况下退出。这么做将导致在重新启动的时候的恢复。
+.PP
+\fBrestart\fR 实际上是先执行一个停止,然后紧跟一个启动。它允许变换 \fBpostmaster\fR 命令行的选项。
+.PP
+\fBreload\fR 模式简单地给 \fBpostmaster\fR 发送一个 SIGHUP 信号,导致它重新读取她的配置文件 (\fIpostgresql.conf\fR,
+\fIpg_hba.conf\fR 等等) 这样就允许修改配置文件选项而不用完全重启系统来使之生效。
+.PP
+\fBstatus\fR 模式监查一个服务器是否在指定的数据目录运行, 如果是,那么显示其 PID 和调用它的命令行选项。
+.SH "OPTIONS 选项"
+.PP
+.TP
+\fB-D \fIdatadir\fB\fR
+ 声明该数据库文件的文件系统位置。 如果忽略这个选项,使用环境变量 PGDATA。
+.TP
+\fB-l \fIfilename\fB\fR
+ 把服务器日志输出附加在 filename 文件上。 如果该文件不存在,那么创建它。umask设置为 077, 因此缺省时是不允许从其它用户向日志文件访问的。
+.TP
+\fB-m \fImode\fB\fR
+ 声明关闭模式。mode  可以是smart, fast, 或者 immediate,或者是这三个之一的第一个字母。
+.TP
+\fB-o \fIoptions\fB\fR
+ 声明要直接传递给 \fBpostmaster\fR  的选项。
+
+ 参数通常都用单或者双引号包围以保证它们作为一个整体传递。
+.TP
+\fB-p \fIpath\fB\fR
+ 声明 postmaster 可执行文件的位置。 缺省时 postmaster 是从和 pg_ctl 相同的目录取出,如果不是, 那么就是写死的安装目录。除非你想干点什么特别的事情,并且得到类似没有找到 postmaster这样的错误, 否则没有必要使用这个选项。
+.TP
+\fB-s\fR
+ 只打印错误,而不打印提示性信息。
+.TP
+\fB-w\fR
+ 等待启动或者关闭的完成。在 60 秒后超时。 这个参数是关闭时的缺省值。 成功的关闭是以删除 PID 文件为标志的。对于启动而言, 一次成功的 \fBpsql -l\fR  就标志着成功。 pg_ctl 将视图使用对 psql 合适的端口,如果存在环境变量 PGPORT,那么用它。 否则,它将查找看看在 postgresql.conf 文件里面是否设置了一个端口。 如果都没有,它将使用 PostgreSQL 编译时的缺省端口(缺省是 5432)。
+.TP
+\fB-W\fR
+ 不等待启动或者停止的完成。这是启动和重起的缺省。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATA\fR
+ 缺省数据目录位置
+.TP
+\fBPGPORT\fR
+\fBpsql\fR(1) 的缺省端口(由 -w 选项使用)。
+.PP
+ 其它的环境变量,参阅 \fBpostmaster\fR(1).
+.PP
+.SH "FILES 文件"
+.TP
+\fB\fIpostmaster.pid\fB\fR
+ 这个文件存在于数据目录中是为了帮助 pg_ctl  判断服务器当前是否在运行。
+.TP
+\fB\fIpostmaster.opts.default\fB\fR
+ 如果这个文件存在于数据目录,\fBpg_ctl\fR(在 \fBstart\fR 模式下)将把文件地内容当作传递给 \fBpostmaster\fR 命令的选项传递过去,除非被 \fB-o\fR 选项覆盖。
+.TP
+\fB\fIpostmaster.opts\fB\fR
+如果这个文件存在于数据目录,\fBpg_ctl\fR(在 \fBstart\fR 模式下)将把文件地内容当作传递给 \fBpostmaster\fR 命令的选项传递过去,除非被 \fB-o\fR 选项覆盖。这个文件的内容也会在 status  模式里显示出来。
+.TP
+\fB\fIpostgresql.conf\fB\fR
+ 这个文件在数据目录中,会分析它以查找和 psql 一起用的合适的端口(在 start 模式里给出 -w  的时候。)
+.SH "NOTES 注意"
+.PP
+ 等待完全启动还不是一个定义得很完整的操作, 如果访问控制设置为本地客户端在没有手工交互的情况下不能访问的话还可能会失效。(比如,口令认证)。
+.SH "EXAMPLES 例子"
+.SS "STARTING THE SERVER 启动服务器"
+.PP
+ 启动服务器:
+.sp
+.nf
+$ \fBpg_ctl start\fR
+.sp
+.fi
+.PP
+ 启动服务器的一个例子, 等到服务器 启动了才退出:
+.sp
+.nf
+$ \fBpg_ctl -w start\fR
+.sp
+.fi
+.PP
+ 用于一个 postmaster 使用端口 5433,而且不带 fsync 运行,使用:
+.sp
+.nf
+$ \fBpg_ctl -o "-F -p 5433" start\fR
+.sp
+.fi
+.SS "STOPPING THE SERVER 停止服务器"
+.PP
+.sp
+.nf
+$ \fBpg_ctl stop\fR
+.sp
+.fi
+ 停止服务器,使用 -m 开关允许我们控制如何把后端停下来。 -w等待服务器停止。-m 声明后端的停止模式。
+.SS "RESTARTING THE SERVER 重起服务器"
+.PP
+ 这个命令几乎等于先停止 postmaster  然后再启动她,只不过 \fBpg_ctl\fR 保存并重新使用上一次运行 postmaster 的命令行参数。重起服务器的最简单的方法是:
+.sp
+.nf
+$ \fBpg_ctl restart\fR
+.sp
+.fi
+.PP
+ 重起服务器,等待其停止和重起:
+.sp
+.nf
+$ \fBpg_ctl -w restart\fR
+.sp
+.fi
+.PP
+ 使用 5433 重起并且重起后关闭 fsync:
+.sp
+.nf
+$ \fBpg_ctl -o "-F -p 5433" restart\fR
+.sp
+.fi
+.SS "SHOWING THE SERVER STATUS 显示服务器状态"
+.PP
+ 下面是来自 \fBpg_ctl\fR 的状态输出的例子:
+.sp
+.nf
+$ \fBpg_ctl status\fR
+pg_ctl: postmaster is running (pid: 13718)
+Command line was:
+/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
+.sp
+.fi
+ 这是在重起模式里使用的命令行。
+.SH "SEE ALSO 参见"
+.PP
+\fBpostmaster\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pg_dump.1 b/src/man1/pg_dump.1
new file mode 100644
index 0000000..787124b
--- /dev/null
+++ b/src/man1/pg_dump.1
@@ -0,0 +1,272 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_DUMP" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pg_dump \- 将一个PostgreSQL数据库抽出到一个脚本文件或者其它归档文件中
+
+.SH SYNOPSIS
+.sp
+\fBpg_dump\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBpg_dump\fR 是一个用于备份 PostgreSQL  数据库的工具。它甚至可以在数据库正在并发使用的时候进行完整一致的备份。 pg_dump 并不阻塞其它用户对数据库的访问(读或者写)。
+.PP
+ 转储格式可以是一个脚本或者归档文件。 这个脚本文件的格式是纯文本,它包含许多 SQL 命令, 这些 SQL 命令可以用于重建该数据库并将之恢复到保存成脚本的时候的状态。 要恢复这些脚本,使用 \fBpsql\fR(1)。 它们甚至可以用于在其它机器甚至是其它硬件体系的机器上重建该数据库, 通过对脚本进行一些修改,甚至可以在其它 SQL 数据库产品上重建该数据库。
+.PP
+ 另外,还有候选的归档文件格式可以和 \fBpg_restore\fR(1) 一起使用重建数据库, 并且它们也允许 \fBpg_restore\fR(1) 对恢复什么东西进行选择, 或者甚至是在恢复之前对需要恢复的条目进行重新排序。 归档文件也是设计成可以跨平台移植的。
+.PP
+ 如果一种候选文件格式和 \fBpg_restore\fR(1)  结合,那么pg_dump就能提供一种灵活的归档和传输机制。 pg_dump 可以用于备份整个数据库, 然后就可以使用 pg_restore 检查这个归档和/或选择要恢复的数据库部分。 最灵活等输出文件格式是 ``custom(客户化)'' 格式(\fB-Fc\fR)。 它允许对归档元素进行选取和重新排列, 并且缺省时是压缩的。tar 格式(-Ft)不是压缩的并且我们在装载等时候不可能重排列, 不过它也很灵活;还有,它可以用其它工具,比如 tar 处理。
+.PP
+ 在运行 pg_dump 的时候,我们应该检查输出, 看看是否有任何警告存在(在标准错误上打印),特别是下面列出的限制。
+.SH "OPTIONS 选项"
+.PP
+ 下面的命令行参数用于控制输出格式。
+.TP
+\fB\fIdbname\fB\fR
+ 声明将要转储的数据库名。 如果没有声明这个参数,那么使用环境变量 PGDATABASE。 如果那个环境变量也没声明,那么用发起连接的用户名。
+.TP
+\fB-a\fR
+.TP
+\fB--data-only\fR
+ 只输出数据,不输出结构(表定义)。
+
+ 这个选项只是对纯文本格式有意义。对于其它格式,你可以在调用 pg_restore 的时候声明选项。
+.TP
+\fB-b\fR
+.TP
+\fB--blobs\fR
+ 在转储中包含大对象。
+.TP
+\fB-c\fR
+.TP
+\fB--clean\fR
+ 输出在创建数据库创建命令之前先清理(删除)该数据库对象的命令。
+
+ 这个选项只是对纯文本格式有意义。对于其它格式,你可以在调用 \fBpg_restore\fR 的时候声明选项。
+.TP
+\fB-C\fR
+.TP
+\fB--create\fR
+ 以一条创建该数据库本身并且与这个数据库联接等命令开头进行输出。 (如果是这种形式的脚本,那么你在运行脚本之前和哪个数据库联接就不重要了。)
+
+ 这个选项只对纯文本格式有意义。对于其它格式,你可以在调用 \fBpg_restore\fR 的时候声明该选项。
+.TP
+\fB-d\fR
+.TP
+\fB--inserts\fR
+ 将数据输出为的 \fBINSERT\fR 命令(而不是 \fBCOPY\fR)。 这样会导致恢复非常缓慢。但却令归档更容易移植到其它 SQL 数据库。
+.TP
+\fB-D\fR
+.TP
+\fB--column-inserts\fR
+.TP
+\fB--attribute-inserts\fR
+ 把数据转储为带有明确字段名的 \fBINSERT\fR 命令。 (INSERT INTO \fItable\fR(\fIcolumn\fR, ...) VALUES ...)。 这样会导致恢复非常缓慢,但是如果你想重新排列字段的顺序,那么它是必须的。
+.TP
+\fB-f \fIfile\fB\fR
+.TP
+\fB--file=\fIfile\fB\fR
+ 把输出发往指定的文件。如果忽略这些,则使用标准输出。
+.TP
+\fB-F \fIformat\fB\fR
+.TP
+\fB--format=\fIformat\fB\fR
+ 选择输出的格式。format可以是下列之一:
+.RS
+.TP
+\fBp\fR
+ 输出纯文本SQL脚本文件(缺省)
+.TP
+\fBt\fR
+ 输出适合输入到 \fBpg_restore\fR  里的tar归档文件。 使用这个归档允许在恢复数据库时重新排序和/或把表结构排除在外。 同时也可能可以在恢复的时候限制对哪些数据进行恢复。
+.TP
+\fBc\fR
+ 输出适于给 pg_restore 用的客户化归档。 这是最灵活的格式,它允许对装载的数据和纲要元素进行重新排列。 这个格式缺省的时候是压缩的。
+.RE
+.PP
+.TP
+\fB-i\fR
+.TP
+\fB--ignore-version\fR
+ 忽略在 pg_dump  和数据库服务器之间的版本差别。
+
+\fBpg_dump\fR 可以处理来自以前版本的PostgreSQL  的数据库,但是太老的版本则不被支持了(目前是支持到 7.0)。 如果你需要跨越版本检查时才使用这个选项( 而且如 pg_dump 失效,别说我没警告你)。
+.TP
+\fB-n \fInamespace\fB\fR
+.TP
+\fB--schema=\fIschema\fB\fR
+ 只转储 schema 的内容。 如果没有声明这个选项,所有目标数据库中的非系统模式都会被转储出来。
+.sp
+.RS
+.B "Note:"
+注意:  在这个模式里,pg_dump 并不试图转储任何其它选定模式可能依赖的数据库对象。 因此,系统不保证单一的一个模式的转储就可以成功地恢复到一个干净的数据库中去。
+.RE
+.sp
+.TP
+\fB-o\fR
+.TP
+\fB--oids\fR
+ 为每个表都输出对象标识(OID)。 如果你的应用在某种程度上引用了OID字段的话,(比如,在外键约束中用到)。 那么使用这个选项。否则,不应该使用这个选项。
+.TP
+\fB-O\fR
+.TP
+\fB--no-owner\fR
+ 不把对象的所有权设置为对应源数据库。 
+By default, \fBpg_dump\fR issues
+\fBSET SESSION AUTHORIZATION\fR
+statements to set ownership of created schema elements.
+These statements
+will fail when the script is run unless it is started by a superuser
+(or the same user that owns all of the objects in the script).
+To make a script that can be restored by any user, but will give
+that user ownership of all the objects, specify \fB-O\fR.
+
+ 这个选项只是对纯文本格式有意义。对于其它格式,在你调用 pg_restore 的时候你可以声明该选项。
+.TP
+\fB-R\fR
+.TP
+\fB--no-reconnect\fR
+ 这个选项已经过时,但是出于向下兼容的考虑,仍然接受这个选项。
+.TP
+\fB-s\fR
+.TP
+\fB--schema-only\fR
+ 只输出表纲要(定义),不输出数据。
+.TP
+\fB-S \fIusername\fB\fR
+.TP
+\fB--superuser=\fIusername\fB\fR
+ 声明关闭触发器时需要用到的超级用户名。 它只有使用了 \fB--disable-triggers\fR 的时候才有关系。 (通常,我们最好不要输入这个参数,而是用超级用户启动生成的脚本。)
+.TP
+\fB-t \fItable\fB\fR
+.TP
+\fB--table=\fItable\fB\fR
+ 只输出表 \fItable\fR 的数据。 很可能是在不同模式里面有多个同名表;如果这样,那么所有匹配的表都将被转储出来。 同时声明 \fB--schema\fR 和 \fB--table\fR 则只选择一个表。
+.sp
+.RS
+.B "Note:"
+ 注意:  在这个模式里,pg_dump 并不试图转储任何其它选定表可能依赖的数据库对象。 因此,系统不保证单一的一个表的转储就可以成功地恢复到一个干净的数据库中去。 
+.RE
+.sp
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+ 声明冗余模式。 这样将令 pg_dump 在标准错误上打印进度信息。
+.TP
+\fB-x\fR
+.TP
+\fB--no-privileges\fR
+.TP
+\fB--no-acl\fR
+ 避免输出 ACL(赋予/撤消 命令)和表的所有者关系信息。
+.TP
+\fB-X use-set-session-authorization\fR
+.TP
+\fB--use-set-session-authorization\fR
+ 这个选项废弃了,保留它是为了向下兼容。 pg_dump 现在表现得总是想正式选取了这个选项一样。
+.TP
+\fB-X disable-triggers\fR
+.TP
+\fB--disable-triggers\fR
+ 这个选项只是和创建仅有数据的转储相关。它告诉 pg_dump  包含在恢复数据时,临时关闭目标表上面的触发器的命令。 如果你在表上有参考完整性检查或者其它触发器,而恢复数据的时候你不想重载他们,那么你就应该使用这个选项。
+
+ 目前,为 \fB--disable-triggers\fR 发出的命令必须用超级用户来做。 因此,你应该同时用 -S 声明一个超级用户名,或者最好是用一个超级用户的身份来启动这个生成的脚本。
+
+ 这个选项只对纯文本格式有意义。对于其它格式,你可以在调用 pg_restore 的时候声明这个选项。
+.TP
+\fB-Z \fI0..9\fB\fR
+.TP
+\fB--compress=\fI0..9\fB\fR
+ 声明在那些支持压缩的格式中使用的压缩级别。 (目前只有客户化格式支持压缩)。
+.PP
+.PP
+ 下面的命令行参数控制数据库为联接参数。
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host=\fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果数值以斜扛开头,则它被用做到 Unix 域套接字的路径。 缺省是从 PGHOST 环境变量中取得的,如果设置了这个环境变量的话,否则,尝试一个 Unix 域套接字连接。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port=\fIport\fB\fR
+ 声明服务器正在侦听并等待联接的 TCP 端口或本地 Unix 主控套接字文件句柄。 缺省时使用环境变量 PGPORT 的值(如果存在),或者是编译时的缺省值。
+.TP
+\fB-U \fIusername\fB\fR
+ 以给出用户身分联接。
+.TP
+\fB-W\fR
+ 强制口令提示。如果服务器需要口令认证,那么这个动作应该自动发生。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数
+.SH "DIAGNOSTICS 诊断"
+.PP
+\fBpg_dump\fR 在内部使用 SELECT 语句。如果你运行 pg_dump 时碰到问题,确认你能够使用象  \fBpsql\fR(1) 这样的程序从数据库选取信息。
+.SH "NOTES 注意"
+.PP
+ 如果你的数据库给template1数据库增加了任何你自己的东西, 那么请注意把 pg_dump 的输出恢复到一个真正空的数据库中; 否则你可能会收到因为重复定义所追加的对象而造成的错误信息。要制作一个没有任何本地附属物的数据库, 可以从template0而不是template1拷贝,比如:
+.sp
+.nf
+CREATE DATABASE foo WITH TEMPLATE template0;
+.sp
+.fi
+.PP
+\fBpg_dump\fR 有几个限制:
+.TP 0.2i
+\(bu
+ 在转储一个表或者作为纯文本转储时,pg_dump 无法操作大对象。 大对象必须整数据库地使用非文本归档格式之一进行转储。
+.TP 0.2i
+\(bu
+ 在进行纯数据转储时,并且使用了选项 \fB--disable-triggers\fR  的时候,\fBpg_dump\fR 发出一些查询先关闭在用户表上面的触发器, 然后插入数据,数据插入完成后再发出查询打开触发器。 如果恢复动作在中间停止,那么系统表可能就会处于一种错误状态。
+.PP
+.PP
+ tar 归档的成员的大小限制于 8 GB。(这个限制是 tar 文件格式的固有限制。) 因此这个格式无法用于那些一个表的大小超过这个尺寸的原文表现。 tar 归档和任何其它输出格式的总大小是不受限制的,只是可能会又操作系统的限制。
+.PP
+ 恢复完之后,我们建议在每个已恢复的对象上运行 ANALYZE。 这样优化器就可以得到有用的统计。
+.SH "EXAMPLES 例子"
+.PP
+ 转储一个数据库:
+.sp
+.nf
+$ \fBpg_dump mydb > db.out\fR
+.sp
+.fi
+.PP
+ 重载这个数据库:
+.sp
+.nf
+$ \fBpsql -d database -f db.out\fR
+.sp
+.fi
+.PP
+ 输出一个叫 mydb 的包含BLOB  的数据库到一个 tar 文件:
+.sp
+.nf
+$ \fBpg_dump -Ft -b mydb > db.tar\fR
+.sp
+.fi
+.PP
+ 把这个数据库(连同BLOB)一起恢复到一个现有的叫 newdb 的数据库:
+.sp
+.nf
+$ \fBpg_restore -d newdb db.tar\fR
+.sp
+.fi
+.SH "HISTORY 历史"
+.PP
+\fBpg_dump\fR 工具最早出现在 Postgres95 版本 0.02。 非纯文本输出格式在 PostgreSQL 版本 7.1 时引入。
+.SH "SEE ALSO 参见"
+\fBpg_dumpall\fR(1), \fBpg_restore\fR(1), \fBpsql\fR(1)
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pg_dumpall.1 b/src/man1/pg_dumpall.1
new file mode 100644
index 0000000..e2326ca
--- /dev/null
+++ b/src/man1/pg_dumpall.1
@@ -0,0 +1,130 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_DUMPALL" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pg_dumpall \- 抽出一个 PostgreSQL 数据库集群到脚本文件中
+
+.SH SYNOPSIS
+.sp
+\fBpg_dumpall\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBpg_dumpall\fR 是一个用于写出("转储")一个数据库集群里的所有 PostgreSQL 数据库到一个脚本文件的工具。 该脚本文件包含可以用于作为 \fBpsql\fR(1) 的输入恢复数据库的SQL命令。 它通过对数据库集群里的每个数据库调用 \fBpg_dump\fR(1) 实现这个功能。 \fBpg_dumpall\fR 还转储出所有数据库公用的全局对象。 (\fBpg_dump\fR(1) 并不保存这些对象。) 这些信息目前包括数据库用户和组,以及适用于整个数据库的访问权限。
+.PP
+ 因此,\fBpg_dumpall\fR 是备份你的数据库的一体化解决方案。 但是请注意它的局限性:它无法转储"大对象",因为 \fBpg_dump\fR  无法把这样的对象转储到纯文本文件中。如果你的数据库里有大对象, 那么你应该使用 \fBpg_dump\fR 的非文本输出格式之一转储它们。
+.PP
+ 因为 pg_dumpall 从所有数据库中读取表, 所以你很可能需要以数据库超级用户的身份联接,这样才能生成完整的转储。 同样,你也需要超级用户的权限执行保存下来的脚本,这些才能增加用户和组, 以及创建数据库。
+.PP
+SQL脚本将写出到标准输出。你应该使用合适的 shell 操作符把它重定向到文件。
+.PP
+\fBpg_dumpall\fR 需要和 PostgreSQL  服务器连接多次,可能每次都问你口令。这种情况下写一个 \fI$HOME/.pgpass\fR 可能会比较方便。
+.SH "OPTIONS 选项"
+.PP
+ 下列命令行参数用于控制输出格式:
+.TP
+\fB-a\fR
+.TP
+\fB--data-only\fR
+ 只转储数据,不转储模式(数据定义)。
+.TP
+\fB-c\fR
+.TP
+\fB--clean\fR
+ 包括那些重建之前清理(删除)数据库对象的SQL命令。
+.TP
+\fB-d\fR
+.TP
+\fB--inserts\fR
+ 把数据当作 INSERT 命令输出(而不是 COPY)。这样将令恢复过程非常缓慢, 但是会令输出更容易移植到其他 SQL 数据库包中。
+.TP
+\fB-D\fR
+.TP
+\fB--column-inserts\fR
+.TP
+\fB--attribute-inserts\fR
+ 把数据以某种带着明确字段名(INSERT INTO \fItable\fR  (\fIcolumn\fR, ...) VALUES ...)的 \fBINSERT\fR 命令形式转储出来。 这样会令恢复非常慢,但是如果需要重排字段顺序就是必须的。
+.TP
+\fB-g\fR
+.TP
+\fB--globals-only\fR
+ 只转储全局对象(用户和组),而不转储数据库。
+.TP
+\fB-i\fR
+.TP
+\fB--ignore-version\fR
+ 忽略 pg_dumpall 和数据库服务器之间的版本差别。
+
+\fBpg_dumpall\fR 可以处理来自以前版本的 PostgreSQL 的数据库,但是太老的数据库就不再支持了(目前到 7.0)。 如果你需要覆盖版本检查,那么可以使用这个选项(如果 pg_dumpall  失败了,可别说我们没警告你。)
+.TP
+\fB-o\fR
+.TP
+\fB--oids\fR
+ 为每个表转储对象标识符(OID)。 如果你的应用在某种角度引用了 OID 字段,那么使用这个选项 (比如,在外键约束里)。否则,不应该使用这个选项。
+.TP
+\fB-s\fR
+.TP
+\fB--schema-only\fR
+ 只转储模式(数据定义),不转储数据。
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+ 声明冗余模式。这样将令 pg_dumpall  向标准错误打印进度信息。
+.TP
+\fB-x\fR
+.TP
+\fB--no-privileges\fR
+.TP
+\fB--no-acl\fR
+ 避免转储访问权限(授权/撤销命令)。
+.PP
+.PP
+ 下面的命令行参数控制数据库连接参数。
+.TP
+\fB-h \fIhost\fB\fR
+ 声明数据库服务器所运行的机器的主机名。 如果数值以斜扛开头,那么就把它用做 Unix 域套接字的目录。 缺省是从 PGHOST 环境变量里拿来的(如果设置了), 否则使用 Unix 域套接字。
+.TP
+\fB-p \fIport\fB\fR
+ 声明服务器监听的 TCP 端口号或者 Unix 域套接字文件扩展。 缺省是 PGPORT 环境变量(如果设置了), 或者是编译时的缺省。
+.TP
+\fB-U \fIusername\fB\fR
+ 以给定用户身分联接。
+.TP
+\fB-W\fR
+ 强制口令提示。如果服务器需要口令认证,那么这个动作应该自动发生。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "NOTES 注意"
+.PP
+ 因为 pg_dumpall 内部调用 pg_dump,所以,一些诊断信息 可以参考 pg_dump。
+.PP
+ 恢复完之后,我们建议在每个已恢复的对象上运行 \fBANALYZE\fR。 这样优化器就可以得到有用的统计。 你也可以用 \fBvacuumdb -a -z\fR 清理所有数据库。
+.SH "EXAMPLES 例子"
+.PP
+ 转储所有数据库:
+.sp
+.nf
+$ \fBpg_dumpall > db.out\fR
+.sp
+.fi
+.PP
+ 重新载入这个数据库:
+.sp
+.nf
+$ \fBpsql -f db.out template1\fR
+.sp
+.fi
+ (在这里你和哪个数据库联接并不重要,因为 pg_dumpall 创建的脚本文件将包含合适的命令用于创建和联接保存的数据库。)
+.SH "SEE ALSO 参见"
+.PP
+\fBpg_dump\fR(1). Check there for details on possible
+error conditions.
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pg_resetxlog.1 b/src/man1/pg_resetxlog.1
new file mode 100644
index 0000000..44c02eb
--- /dev/null
+++ b/src/man1/pg_resetxlog.1
@@ -0,0 +1,26 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_RESETXLOG" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+pg_resetxlog \- 重置一个 PostgreSQL 数据库集群的预写日志以及其它控制内容
+.SH SYNOPSIS
+.sp
+\fBpg_resetxlog\fR\fR [ \fR\fB -f  \fR\fR]\fR\fR [ \fR\fB -n  \fR\fR]\fR\fR [ \fR\fB -o \fIoid\fB  \fR\fR]\fR\fR [ \fR\fB -x \fIxid\fB  \fR\fR]\fR\fR [ \fR\fB -l \fIfileid\fB,\fIseg\fB  \fR\fR]\fR \fB\fIdatadir\fB\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBpg_resetxlog\fR 清理预写日志(WAL)并且可以选择地重置其它一些控制信息(存储在 pg_control 文件中)。 有时候,如果这些文件崩溃了,我们需要这个功能。 我们一定只把它用作最后的方法,就是说只有因为这样的崩溃导致服务器无法启动的时候才使用。
+.PP
+ 在运行这个命令之后,我们可能可以启动服务器了,但是,一定要记住数据库可能因为部分提交的事务而含有不完整的数据。 你应该马上转储你的数据,运行 initdb,然后重新装载。 在重新装载之后,检查不完整的部分然后根据需要进行修复。
+.PP
+ 这个命令只能由安装服务器的用户运行,因为它需要对数据目录的读写权限。 出于安全考虑,你必须在命令行上声明数据目录。 pg_resetxlog 不使用环境变量 \fBPGDATA\fR。
+.PP
+如果 \fBpg_resetxlog\fR 抱怨说它无法判断用于 pg_control 的有效数据,那么你可以强制它继续处理, 方法是声明 -f (强制)开关。在这种情况下,那些丢失了的数据的值将用模糊的近似数值代替。 大多数字段都可以匹配上,但是下一个 OID,下一个事务 ID,WAL 开始地址以及数据库区域字段可能需要手工帮助, 前面三个可以用下面讨论的开关设置。pg_resetxlog  自己的环境是猜测区域字段的来源;看看 LANG 等等东西,它们应该和 initdb 运行的环境相匹配。 如果你不能判断所有这些字段的正确数值,那么还是可以使用 -f, 但是这样恢复过来的数据库更要怀疑有问题:立即转储和重置是必须的。 在转储之前不要执行任何修改数据的操作,因为任何这样的动作都可能把事情搞得更糟糕。
+.PP
+ -o, -x, 和 -l 开关允许我们手工设置下一个 OID,下一个事务 ID,以及 WAL 起始位置的数值。 只有在 pg_resetxlog 无法通过读取 pg_control  判断合适的数值的时候才需要它。对于下一个事务 ID 而言,一个安全的数值是看看数据目录里的 /pg_clog 里数值最大的文件名, 然后加一,然后再乘上 1048576。请注意那些文件名是十六进制的。通常我们也以十六进制的形式声明开关值是最简单得。 比如,如果 \fI0011\fR 是 pg_clog 里 最大的记录,-x 0x1200000 就可以了(后面的五个零提供了合适的乘积)。 WAL 的起始位置应该比目前存在于数据目录里得 /pg_xlog  里面的任何文件号都大。它也是十六进制的,并且有两部分。比如,如果 000000FF0000003A 是 pg_xlog 里最大的条目, 那么-l 0xFF,0x3B 就可以了。我们没有很容易的办法来判断比数据库中最大的 OID 大一号的下一个 OID, 不过很走运的是获取正确的下一个 OID 并非非常关键。
+.PP
+ 开关 -n (无操作)指示 pg_resetxlog 打印从 pg_control 重新构造的数值然后不修改任何值就退出。 这主要是一个调试工具,但是在 pg_resetxlog 真正处理前进行的整洁性检查的时候可能会有用。
+.SH "NOTES 注意"
+.PP
+ 在 postmaster 服务器运行的时候一定不要运行这个命令。 如果发现在数据文件目录里有锁文件,那么 pg_resetxlog  将拒绝启动。如果 postmaster 崩溃,那么可能会剩下一个锁文件; 如果这样,你可以删除该锁文件以便允许 pg_resetxlog  运行。但是在你这么做之前,一定要确信没有任何postmaster或者后端服务器仍在运行。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pg_restore.1 b/src/man1/pg_restore.1
new file mode 100644
index 0000000..7ea07ec
--- /dev/null
+++ b/src/man1/pg_restore.1
@@ -0,0 +1,286 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PG_RESTORE" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pg_restore \- 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
+
+.SH SYNOPSIS
+.sp
+\fBpg_restore\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIfilename\fB \fR\fR]\fR
+.SH "DESCRIPTION  描述"
+.PP
+\fBpg_restore\fR 是一种用于恢复由 \fBpg_dump\fR(1)  创建的任何非纯文本输出格式中的 PostgreSQL 数据库的应用。 它将发出必要的命令来重新构造数据库,以便于把它恢复成保存它的时候的样子。 归档(备份)文件还允许pg_restore 有选择地进行恢复, 甚至在恢复前重新排列条目的顺序。归档的文件设计成可以在不同的硬件体系之间移植。
+.PP
+\fBpg_restore\fR 可以以两种模式操作:如果声明了数据库名字, 那么归档是直接恢复到数据库里。大对象只能用直接数据库联接进行恢复。 否则,先创建一个包含重建数据库所必须的 SQL 命令的脚本(并且写入到一个文件或者标准输出), 类似 pg_dump 输出纯文本格式的时候创建的那种脚本。 因此,一些控制脚本输出的选项就是摹拟 pg_dump 的操作。
+.PP
+显然,\fBpg_restore\fR 无法恢复那些不存在归档文件中的信息; 比如,如果归档是用"把数据转储为 INSERT命令"选项制作的, 那么 pg_restore 将不能使用 COPY 语句装载数据。
+.SH "OPTIONS 选项"
+.PP
+\fBpg_restore\fR 接受下列命令行参数。
+.TP
+\fB\fIfilename\fB\fR
+ 声明要恢复的备份文件的位置。如果没有声明,则使用标准输入。
+.TP
+\fB-a\fR
+.TP
+\fB--data-only\fR
+ 只恢复数据,而不恢复表模式(数据定义)。
+.TP
+\fB-c\fR
+.TP
+\fB--clean\fR
+ 创建数据库对象前先清理(删除)它们。
+.TP
+\fB-C\fR
+.TP
+\fB--create\fR
+ 在恢复数据库之前先创建它。(如果出现了这个选项,和 \fB-d\fR  在一起的数据库名只是用于发出最初的 CREATE DATABASE 命令。 所有数据都恢复到名字出现在归档中的数据库中去。)
+.TP
+\fB-d \fIdbname\fB\fR
+.TP
+\fB--dbname=\fIdbname\fB\fR
+ 与数据库 dbname 联接并且直接恢复到该数据库中。
+.TP
+\fB-f \fIfilename\fB\fR
+.TP
+\fB--file=\fIfilename\fB\fR
+ 声明生成的脚本的输出文件,或者出现 \fB-l\fR 选项时用于列表的文件,缺省是标准输出。
+.TP
+\fB-F \fIformat\fB\fR
+.TP
+\fB--format=\fIformat\fB\fR
+ 声明备份文件的格式。因为pg_restore 会自动判断格式,所以如果声明了,它可以是下面之一:
+.RS
+.TP
+\fBt\fR
+ 备份是一个 tar 归档。 使用这个格式允许在恢复数据库的时候重新排序和/或把表模式元素排除出去。 同时还可能在恢复的时候限制装载的数据。
+.TP
+\fBc\fR
+ 备份的格式是来自 pg_dump 的客户化格式。 这是最灵活的格式,因为它允许重新对数据排序,也允许重载表模式元素。 缺省时这个格式是压缩的。
+.RE
+.PP
+.TP
+\fB-i\fR
+.TP
+\fB--ignore-version\fR
+ 忽略数据库版本检查。
+.TP
+\fB-I \fIindex\fB\fR
+.TP
+\fB--index=\fIindex\fB\fR
+ 只恢复命名的索引。
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+ 列出备份的内容。这个操作的输出可以用 -L 选项限制和重排所恢复的项目。
+.TP
+\fB-L \fIlist-file\fB\fR
+.TP
+\fB--use-list=\fIlist-file\fB\fR
+ 只恢复在 list-file 里面的元素,以它们在文件中出现的顺序。 你可以移动各个行并且也可以通过在行开头放 ';' 的方式注释。(见下文获取例子。)
+.TP
+\fB-N\fR
+.TP
+\fB--orig-order\fR
+ 以最初在 pg_dump 里生成的转储顺序恢复项目。 这个选项没有什么实际的用途,因为 pg_dump 会以自己方便的顺序生成项, 这个顺序不可能是恢复这些数据的安全顺序。 (这个顺序不是项最后在归档的内容列表中列出的顺序。) 又见 -r。
+.TP
+\fB-o\fR
+.TP
+\fB--oid-order\fR
+ 以 OID 顺序恢复项目。这个选项用处很小, 因为 OID 只是最初创建顺序的一个近似指示。 如果还声明了 -N,那么这个选项还覆盖它。又见 -r。
+.TP
+\fB-O\fR
+.TP
+\fB--no-owner\fR
+ 不要输出设置对象的权限,以便与最初的数据库匹配的命令。 缺省时,pg_restore 发出 \fBSET SESSION AUTHORIZATION\fR 语句设置创建出来的模式元素的所有者权限。 如果最初的数据库连接不是由超级用户(或者是拥有所有创建出来的对象的同一个用户)发起的,那么这些语句将失败。 使用 -O,那么任何用户都可以用于初始的连接,并且这个用户将拥有所有创建出来的对象。
+.TP
+\fB-P \fIfunction-name(argtype [, ...])\fB\fR
+.TP
+\fB--function=\fIfunction-name(argtype [, ...])\fB\fR
+ 只恢复指定的命名函数。请注意仔细拼写函数名及其参数,应该和转储的内容列表中的完全一样。
+.TP
+\fB-r\fR
+.TP
+\fB--rearrange\fR
+ 以对象类型重排项目(这个发生在以 -N 或者 -o 排序之后)。 重排是为了给出最大可能的性能。
+
+如果没有 \fB-N\fR, \fB-o\fR, and
+\fB-r\fR,那么 pg_restore 以项目出现在归档的内容列表中的顺序恢复他们, 或者按照他们在 list-file 里面的顺序恢复他们——假如给出了 -L 的话。 -o 和 -r 的组合复制了 pg_dump 在创建归档的内容列表之前进行的排序, 因此,这个选项通常没必要声明。
+.TP
+\fB-R\fR
+.TP
+\fB--no-reconnect\fR
+ 这个选项已经废弃了,但是为了保持向下兼容仍然接受。
+.TP
+\fB-s\fR
+.TP
+\fB--schema-only\fR
+ 只恢复表结构(数据定义)。不恢复数据,序列值将重置。
+.TP
+\fB-S \fIusername\fB\fR
+.TP
+\fB--superuser=\fIusername\fB\fR
+ 设置关闭触发器时声明超级用户的用户名。 只有在设置了 \fB--disable-triggers\fR 的时候才有用。
+.TP
+\fB-t \fItable\fB\fR
+.TP
+\fB--table=\fItable\fB\fR
+ 只恢复表指定的表的定义和/或数据。
+.TP
+\fB-T \fItrigger\fB\fR
+.TP
+\fB--trigger=\fItrigger\fB\fR
+ 只恢复指定的触发器。
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+ 声明冗余模式。
+.TP
+\fB-x\fR
+.TP
+\fB--no-privileges\fR
+.TP
+\fB--no-acl\fR
+ 避免 ACL 的恢复(grant/revoke 命令)。
+.TP
+\fB-X use-set-session-authorization\fR
+.TP
+\fB--use-set-session-authorization\fR
+ 这个选项已经废弃了,但是出于向下兼容,仍然接受。 pg_restore 现在总是表现得像以前选中这个选项一样。
+.TP
+\fB-X disable-triggers\fR
+.TP
+\fB--disable-triggers\fR
+ 这个选项只有在执行仅恢复数据的时候才相关。它告诉 pg_restore  在装载数据的时候执行一些命令临时关闭在目标表上的触发器。 如果你在表上有完整性检查或者其它触发器, 而你又不希望在装载数据的时候激活它们,那么可以使用这个选项。
+
+ 目前,为 \fB--disable-triggers\fR 发出的命令必须以超级用户发出。 因此,你应该也要用 -S 声明一个超级用户名,或者更好是设置 \fB--use-set-session-authorization\fR 并且以 PostgreSQL  超级用户身份运行 pg_restore。
+.PP
+.PP
+\fBpg_restore\fR 还接受下面的命令行参数做为联接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host=\fIhost\fB\fR
+ 声明服务器运行的机器的主机名。 如果数值以斜扛开头,那么它被用做 Unix 域套接字的目录。 缺省是从 PGHOST 环境变量中获取的(如果设置了), 否则将尝试进行 Unix 域套接字。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port=\fIport\fB\fR
+ 声明服务器侦听的 TCP 端口或者本地的 Unix 域套接字文件扩展。 缺省是环境变量 PGPORT 的值(如果设置了的话), 否则就说编译的缺省。
+.TP
+\fB-U \fIusername\fB\fR
+ 以给出用户身分联接。
+.TP
+\fB-W\fR
+ 强制给出口令提示。如果服务器要求口令认证,那么这个应该自动发生。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 当使用-d选项声明了直接数据库联接时, pg_restore 在内部执行 SQL 语句。如果你运行 pg_restore 出了毛病, 请确保你能用类似 \fBpsql\fR(1) 这样的东西从数据库中选取信息。
+.SH "NOTES 注意"
+.PP
+ 如果你的安装给template1数据库增加了任何你自己的东西, 那么请注意把 pg_dump 的输出恢复到一个真正空的数据库中; 否则你可能会收到因为重复定义所追加的对象而造成的错误信息。要制作一个没有任何本地附属物的数据库, 可以从template0而不是template1拷贝,比如:
+.sp
+.nf
+CREATE DATABASE foo WITH TEMPLATE template0;
+.sp
+.fi
+.PP
+\fBpg_restore\fR 的局限在下面列出。
+.TP 0.2i
+\(bu
+ 当向一个已经存在的表恢复数据,并且还使用了 \fB--disable-triggers\fR 选项时, pg_restore  在插入数据前放出一些查询关闭用户表上的触发器, 在数据插入完成后重新打开它们。如果恢复的中途停止,那么系统表可能处于错误状态。
+.TP 0.2i
+\(bu
+\fBpg_restore\fR 将不会为单一的表恢复大对象。 如果一个归档包含大对象,那么所有大对象都将被恢复。
+.PP
+.PP
+ 又见参阅 \fBpg_dump\fR(1) 的文挡获取有关 pg_dump 的局限的细节。
+.PP
+ 一旦完成恢复,最好在每个恢复的对象上运行 \fBANALYZE\fR, 以便给优化器有用的统计。
+.SH "EXAMPLES 例子"
+.PP
+ 把一个包含大对象的叫 mydb 的数据库转储到一个tar文件:
+.sp
+.nf
+$ \fBpg_dump -Ft -b mydb > db.tar\fR
+.sp
+.fi
+.PP
+ 把这个数据库恢复到现有的叫 newdb 的数据库中(连同BLOB):
+.sp
+.nf
+$ \fBpg_restore -d newdb db.tar\fR
+.sp
+.fi
+.PP
+ 要对项目重新排序,首先必须转储归档的目录:
+.sp
+.nf
+$ \fBpg_restore -l archive.file > archive.list\fR
+.sp
+.fi
+ 这个文件由一行头和每个项目一行组成,比如。
+.sp
+.nf
+;
+; Archive created at Fri Jul 28 22:28:36 2000
+;     dbname: birds
+;     TOC Entries: 74
+;     Compression: 0
+;     Dump Version: 1.4-0
+;     Format: CUSTOM
+;
+;
+; Selected TOC Entries:
+;
+2; 145344 TABLE species postgres
+3; 145344 ACL species
+4; 145359 TABLE nt_header postgres
+5; 145359 ACL nt_header
+6; 145402 TABLE species_records postgres
+7; 145402 ACL species_records
+8; 145416 TABLE ss_old postgres
+9; 145416 ACL ss_old
+10; 145433 TABLE map_resolutions postgres
+11; 145433 ACL map_resolutions
+12; 145443 TABLE hs_old postgres
+13; 145443 ACL hs_old
+.sp
+.fi
+ 这里分号是注释分隔符,而行开头的数字代表赋给每个项目的内部归档 ID。
+.PP
+ 文件内的行可以注释掉,删除和/或重新排列。比如,
+.sp
+.nf
+10; 145433 TABLE map_resolutions postgres
+;2; 145344 TABLE species postgres
+;4; 145359 TABLE nt_header postgres
+6; 145402 TABLE species_records postgres
+;8; 145416 TABLE ss_old postgres
+.sp
+.fi
+ 可以用做 pg_restore 的输入并且只会恢复项目 10 和 6,(以这个顺序):
+.sp
+.nf
+$ \fBpg_restore -L archive.list archive.file\fR
+.sp
+.fi
+.SH "HISTORY 历史"
+.PP
+\fBpg_restore\fR 工具第一次出现在 PostgreSQL 7.1。
+.SH "SEE ALSO 参见"
+\fBpg_dump\fR(1), \fBpg_dumpall\fR(1), \fBpsql\fR(1)
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pgtclsh.1 b/src/man1/pgtclsh.1
new file mode 100644
index 0000000..148c105
--- /dev/null
+++ b/src/man1/pgtclsh.1
@@ -0,0 +1,19 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PGTCLSH" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pgtclsh \-\- PostgreSQL TCLshell 客户端
+
+.SH SYNOPSIS
+.sp
+pgtclsh [filename [argument...]]
+.SH "DESCRIPTION 描述"
+.PP
+\fBpgtclsh\fR 是一个 Tcl  shell 接口,用 PostgreSQL 数据库访问函数做了扩展。 (实际上,它是装载了 tclsh 和 libpgtcl。) 和普通的Tcl shell 一样,第一个命令行参数是一个脚本文件, 任何其余的参数都传递给脚本。如果没有命名脚本文件,那么该脚本就是交互的。
+.PP
+ 一个带Tk 和 PostgreSQL 函数的 Tcl 是 \fBpgtksh\fR(1)。
+.SH "SEE ALSO 参见"
+.PP
+\fBpgtksh\fR(1), (描述了 libpgtcl), \fBtclsh\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pgtksh.1 b/src/man1/pgtksh.1
new file mode 100644
index 0000000..66e888a
--- /dev/null
+++ b/src/man1/pgtksh.1
@@ -0,0 +1,19 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PGTKSH" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+pgtksh \-\- PostgreSQL Tcl/Tk shell 客户端
+
+.SH SYNOPSIS
+.sp
+pgtksh [filename [argument...]]
+.SH "DESCRIPTION 描述"
+.PP
+\fBpgtksh\fR 是一个带有 PostgreSQL  数据库访问函数扩展的 Tcl/Tk  shell 接口。(实际上,它是装载了 libpgtcl 的wish。) 和普通的 Tcl/Tk shell wish 类似,命令行的第一个参数是一个脚本文件, 任何剩余的参数都传递给该脚本。特殊的选项可以由 X Window 系统库来处理。 如果没有命名脚本的名字,那么该 shell 是交互的。
+.PP
+ 一个带有 PostgreSQL 函数的纯 Tcl shell 是 \fBpgtclsh\fR(1)。
+.SH "SEE ALSO 参见"
+.PP
+\fBpgtclsh\fR(1), (描述了 libpgtcl), \fBtclsh\fR(1), \fBwish\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/popd.1 b/src/man1/popd.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/popd.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/postgres.1 b/src/man1/postgres.1
new file mode 100644
index 0000000..1822d1a
--- /dev/null
+++ b/src/man1/postgres.1
@@ -0,0 +1,123 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "POSTGRES" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+postgres \- 以单用户模式运行一个 PostgreSQL服务器
+
+.SH SYNOPSIS
+.sp
+\fBpostgres\fR\fR [ \fR\fB-A  \fR\fB 0\fR | \fB1\fR\fB \fR\fR]\fR\fR [ \fR\fB-B \fInbuffers\fB \fR\fR]\fR\fR [ \fR\fB-c \fIname\fB=\fIvalue\fB \fR\fR]\fR\fR [ \fR\fB-d \fIdebug-level\fB \fR\fR]\fR\fR [ \fR\fB--describe-config \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-e \fR\fR]\fR\fR [ \fR\fB-E \fR\fR]\fR\fR [ \fR\fB-f \fR\fB s\fR | \fBi\fR | \fBt\fR | \fBn\fR | \fBm\fR | \fBh\fR\fB \fR\fR]\fR\fR [ \fR\fB-F \fR\fR]\fR\fR [ \fR\fB-N \fR\fR]\fR\fR [ \fR\fB-o \fIfilename\ [...]
+
+\fBpostgres\fR\fR [ \fR\fB-A  \fR\fB 0\fR | \fB1\fR\fB \fR\fR]\fR\fR [ \fR\fB-B \fInbuffers\fB \fR\fR]\fR\fR [ \fR\fB-c \fIname\fB=\fIvalue\fB \fR\fR]\fR\fR [ \fR\fB-d \fIdebug-level\fB \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-e \fR\fR]\fR\fR [ \fR\fB-f \fR\fB s\fR | \fBi\fR | \fBt\fR | \fBn\fR | \fBm\fR | \fBh\fR\fB \fR\fR]\fR\fR [ \fR\fB-F \fR\fR]\fR\fR [ \fR\fB-o \fIfilename\fB \fR\fR]\fR\fR [ \fR\fB-O \fR\fR]\fR\fR [ \fR\fB-p \fIdatabase\fB \fR\fR]\fR\fR [ \fR\fB [...]
+.SH "DESCRIPTION 描述"
+.PP
+可执行程序 \fBpostgres\fR  是真正处理查询的 PostgreSQL 服务器进程。 通常它是不会被直接调用的;而是启动一个 postmaster 多用户服务器。
+.PP
+ 上面的第二种形式就是 \fBpostmaster\fR(1) 调用 postgres  的方法(只是概念上的,因为 postmaster  和 postgres 实际上是一样的程序); 我们不能这样直接调用它。第一种形式以交互单用户模式直接调用该服务器。 这种用法的主要用途是在 initdb  做初始化时用。有时候它被用做调试灾难性恢复。
+.PP
+ 当从 shell 上以交互模式调用时,用户可以输入查询并且结果会打印在屏幕上, 不过格式对开发人员更有用,对用户却差好多。 不过请记住,运行一个单用户服务器并不适合于调试该服务器, 因为没有实际的进程间通讯和锁动作发生。
+.PP
+ 当运行一个单用户服务器时,将把会话用户设置为 ID 为 1 的用户。 该用户不必实际存在,因此一个独立运行的服务器可以用于对某些意外损坏的系统表中进行手工恢复。 在独立运行模式下,系统隐含地赋予 ID 为 1 的用户超级用户权限。
+.SH "OPTIONS 选项"
+.PP
+ 如果 \fBpostgres\fR 是由一个 \fBpostmaster\fR(1)  启动的,那么它继承后者的所有选项集。另外 \fBpostgres\fR 相关的选项可以用 -o 开关从 \fBpostmaster\fR(1) 传递。
+.PP
+ 你可以通过设置一个配置文件来避免键入这些选项。 参阅Section 16.4获取细节。 有些(安全的)选项还可以从联接过来的客户端设置, 这样就获得了一种应用无关的方法。 比如,如果设置了 \fBPGOPTIONS\fR 环境变量, 那么基于 libpq 的客户端就都把那个字串传递给服务器, 会解释成 postgres 命令行选项。
+.SS "GENERAL PURPOSE 通用用途"
+.PP
+选项 \fB-A\fR, \fB-B\fR,
+\fB-c\fR, \fB-d\fR, \fB-D\fR,
+\fB-F\fR, 和 \fB--\fIname\fB\fR 和 \fBpostmaster\fR(1)  里的有相同的含义。只是 -d 0 避免 \fBpostmaster\fR(1) 的调试级别传播到 postgres。
+.TP
+\fB-e\fR
+ 把缺省日期风格设置为 "European",也就是说用"DMY"规则解释日期输入, 并且在一些日期输出格式里日子在月份前面打印。 参阅 Section 8.5 ``Date/Time Types'' 获取更多细节。
+.TP
+\fB-o \fIfilename\fB\fR
+ 把所有服务器日志输出到 filename。 如果服务器是由 postmaster运行的, 则忽略这个选项,并且使用从 postmaster 继承过来的stderr。
+.TP
+\fB-P\fR
+ 扫描/更新系统记录时忽略系统表。对系统表/索引使用 REINDEX 时需要这个选项。
+.TP
+\fB-s\fR
+ 在每条命令结束时打印时间信息和其他统计信息。 这个开关对测试性能和调节缓冲区数量有好处。
+.TP
+\fB-S \fIsort-mem\fB\fR
+ 声明内部排序和散列在求助于临时磁盘文件之前可以使用的内存数量。 该值是以 KB (千字节)为单位的,缺省是 1024 KB。 注意对于复杂查询,可能有好几个并行的排序和/或散列, 而在它们把数据放到临时文件前,每个都会允许使用最多 \fIsort-mem\fR  KB的内存。
+.SS "OPTIONS FOR STAND-ALONE MODE 单用户模式的选项"
+.TP
+\fB\fIdatabase\fB\fR
+ 声明要访问的数据库的名字。如果忽略掉则缺省为用户名。
+.TP
+\fB-E\fR
+ 回显所有命令。
+.TP
+\fB-N\fR
+ 禁止把新行作为语句分隔符。
+.SS "SEMI-INTERNAL OPTIONS 半内部选项"
+.PP
+ 还有几个其他的选项可以声明,主要用于调试用途。 这些东西在这里列出只是给 PostgreSQL 系统开发人员使用的。 我们强烈反对使用这些选项。 另外这些选项的任何一项都可能在未来版本中消失而不加说明。
+.TP
+\fB-f { s | i | m | n | h }\fR
+ 禁止某种扫描和连接方法的使用: s 和 i  分别关闭顺序和索引扫描,而 n,m,和 h  分别关闭嵌套循环,融合(merge)和散列连接。
+.sp
+.RS
+.B "Note:"
+注意:  顺序扫描和嵌套循环都不可能完全被关闭。 -fs 和 -fn  选项仅仅是在存在其他方法时阻 碍优化器使用这些方法罢了。
+.RE
+.sp
+.TP
+\fB-O\fR
+ 允许修改系统表的结构。这个参数用于 \fBinitdb\fR。
+.TP
+\fB-p \fIdatabase\fB\fR
+ 告诉服务器服务器它是由一个 postmaster 启动的并声明要使用的数据库等。
+.TP
+\fB-t pa[rser] | pl[anner] | e[xecutor]\fR
+ 打印与每个主要系统模块相关的查询记时统计。 它不能和 -s选项一块使用。
+.TP
+\fB-v \fIprotocol\fB\fR
+ 声明这次会话使用的前/服务器协议的版本数。
+.TP
+\fB-W \fIseconds\fB\fR
+ 一旦看见这个选项,进程就睡眠标出的秒数。 这样就给开发者一些时间把调试器附着在该服务器进程上。
+.TP
+\fB--describe-config\fR
+ 这个选项以 tab 分隔的 COPY 格式,倒出服务器内部配置变量,描述和缺省之。 设计它主要是给管理工具使用。
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATA\fR
+ 缺省数据目录位置
+.PP
+ 对于其它的在单用户模式里有一点点影响的环境变量,请参阅 \fBpostmaster\fR(1).
+.PP
+.SH "NOTES 注意"
+.PP
+ 要停止运行一个查询,使用 SIGINT 给正在运行该命令的 postgres 进程发信号。
+.PP
+ 要告诉 postgres 重新读取配置文件, 使用一个 SIGHUP 信号。 通常我们最好给 postmaster 发送 SIGHUP; postmaster 将随后 SIGHUP 他的每个子进程。 但是有时候我们可能想只让一个 postgres 进程重装载配置文件。
+.PP
+\fBpostmaster\fR 使用 SIGTERM 告诉postgres进程正常退出, 而 SIGQUIT 是不经过正常清理的退出。 这些信号不应该由用户使用。 给一个 postgres 进程发送 SIGKILL 也是不明智的 —— postmaster 将把这个信号解释成一次在 postgres 里的崩溃, 并且会强制所有他的子 postgres 进程像在一个标准的崩溃-恢复过程里一样退出。
+.SH "USAGE 用法"
+.PP
+ 用下面这样的命令启动一个独立的服务器
+.sp
+.nf
+\fBpostgres -D /usr/local/pgsql/data \fIother-options\fB my_database\fR
+.sp
+.fi
+ 用 -D 给服务器提供正确的数据库目录的路径, 或者确保环境变量 PGDATA 已经正确设置。 同时还要声名你象用的特定数据库名字。
+.PP
+ 通常,独立运行的服务器把换行符当做命令输入完成字符; 它还不懂分号的作用,因为那些东西是在 \fBpsql\fR(1) 里的。 要想把一行分成多行写,你必需在除最后一个换行符以外的每个换行符前面敲一个反斜杠。
+.PP
+ 但是如果你使用 -N 命令行开关,那么换行符就不会中止命令输入。 服务器将从标准输入读取数据,直到碰到文件结尾(EOF), 然后把输入当做一个单个的命令字串处理。这个时候反斜杠-换行符就不再当做特殊情况处理。
+.PP
+ 要退出会话,键入EOF (通常是 \fBControl\fR+\fBD\fR)。 如果你已经使用了 -N,需要用两个连续的EOF来退出。
+.PP
+ 请注意独立运行的服务器不会提供复杂的行编辑功能(比如,没有命令行历史)。
+.SH "SEE ALSO 参见"
+.PP
+\fBinitdb\fR(1),
+\fBipcclean\fR(1),
+\fBpostmaster\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/postmaster.1 b/src/man1/postmaster.1
new file mode 100644
index 0000000..2dbfb3b
--- /dev/null
+++ b/src/man1/postmaster.1
@@ -0,0 +1,190 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "POSTMASTER" "1" "2003-11-02" "Application" "PostgreSQL Server Applications"
+.SH NAME
+postmaster \- PostgreSQL多用户数据库服务器
+
+.SH SYNOPSIS
+.sp
+\fBpostmaster\fR\fR [ \fR\fB-A  \fR\fB 0\fR | \fB1\fR\fB \fR\fR]\fR\fR [ \fR\fB-B \fInbuffers\fB \fR\fR]\fR\fR [ \fR\fB-c \fIname\fB=\fIvalue\fB \fR\fR]\fR\fR [ \fR\fB-d \fIdebug-level\fB \fR\fR]\fR\fR [ \fR\fB-D \fIdatadir\fB \fR\fR]\fR\fR [ \fR\fB-F \fR\fR]\fR\fR [ \fR\fB-h \fIhostname\fB \fR\fR]\fR\fR [ \fR\fB-i \fR\fR]\fR\fR [ \fR\fB-k \fIdirectory\fB \fR\fR]\fR\fR [ \fR\fB-l \fR\fR]\fR\fR [ \fR\fB-N \fImax-connections\fB \fR\fR]\fR\fR [ \fR\fB-o \fIextra-options\fB \fR\fR]\fR\fR [ \ [...]
+.SH "DESCRIPTION 描述"
+.PP
+\fBpostmaster\fR 是 PostgreSQL 多用户数据库服务器。 一个客户端为了访问一个数据库,它(通过网络或本地)联接到一个运行着的 postmaster。 然后该 postmaster 启动一个独立的服务器进程("postgres") 以操作联接。 postmaster 还控制服务器进程之间的通讯。
+.PP
+ 缺省时postmaster在前台启动并且向标准错误系统输出打印日志信息。 在实际应用里,postmaster应该作为后台进程启动,也许该在启动时。
+.PP
+ 一个postmaster总是管理来自同一个数据库集群的数据。 一个数据库集群是一套在同一个文件系统位置存放数据的数据库。 当 postmaster 启动时,它需要知道数据库集群文件("数据区")的位置。 这个参数是通过传递 -D 命令行选项或者 \fBPGDATA\fR 环境变量实现的,没有缺省值。 一个系统上同时可以运行几个 postmaster 进程, 只要他们使用不同的数据区和不同的端口号(见下文)。 一个数据区是用 \fBinitdb\fR(1) 创建的。
+.SH "OPTIONS 选项"
+.PP
+\fBpostmaster\fR 接受下列命令行参数。 关于这些选项的更详细的讨论请参考 Section 16.4 ``Run-time Configuration''。你也可以通过设置一个配置文件来减少敲击这些选项。
+.TP
+\fB-A 0|1\fR
+ 打开运行时断言检查,是检测编程错误的调试帮助。 只有在编译时打开了它,你才能使用它。如果编译时打开了,缺省是打开。
+.TP
+\fB-B \fInbuffers\fB\fR
+ 为服务器进程分配和管理的共享内存缓冲区数量。此值缺省为 64 个缓冲区,每个缓冲区是 8k 字节。
+.TP
+\fB-c \fIname\fB=\fIvalue\fB\fR
+ 设置一个命名的运行时参数。参考 Section 16.4 ``Run-time Configuration'' 获取列表和描述。 大多数其他命令行选项实际上都是这样的参数赋值的短形式。 -c 可以出现多次用以设置多个参数。
+.TP
+\fB-d \fIdebug-level\fB\fR
+ 设置调试级别。数值越高,写到服务器日志的调试输出越多。 数值范围是 1 到 5。
+.TP
+\fB-D \fIdatadir\fB\fR
+ 声明数据目录的文件系统路径。参阅上文的讨论。
+.TP
+\fB-F\fR
+ 关闭 fsync 调用,提高性能,但是要冒系统崩溃时数据毁坏的风险。 这个选项对应于在 postgresql.conf 中设置 fsync=false。在使用之前阅读详细文档!
+
+\fB--fsync=true\fR 有着这个选项的反面效果。
+.TP
+\fB-h \fIhostname\fB\fR
+ 声明 postmaster 侦听着等待来自前端应用联接的 TCP 主机名或地址。 它缺省侦听所有配置了的地址(包括 localhost)。
+.TP
+\fB-i\fR
+ 这个选项打开 TCP/IP (网际域套接字)通讯。 没有这个选项,只能进行本地 Unix 域套接字通讯。 这个选项等效于在 postgresql.conf 中设置 tcpip_socket=true。
+
+\fB--tcpip-socket=false\fR 是这个选项的相反的作用。
+.TP
+\fB-k \fIdirectory\fB\fR
+指定 \fBpostmaster\fR 侦听等待来自前端应用联接的 Unix 域套接字的位置。 缺省通常是 /tmp,但是可以在编译的时候修改。
+.TP
+\fB-l\fR
+ 这个选项打开用 SSL 进行的安全通讯。同样还需要 -i  选项。要使用这个选项,编译时你必须打开了 SSL 选项。
+.TP
+\fB-N \fImax-connections\fB\fR
+ 设置postmaster允许启动的服务器服务器的最大数目。缺省配置时,该值为 32, 如果你的系统能支持更多进程,该值最大可以设置为你的系统所能支持的极限。 时修改(参阅 src/include/config.h)。 (请注意 -B 选项要求至少是两倍 -N。参阅 Section 16.5 ``Managing Kernel Resources'' 获取有关大客户量的系统资源需求的信息。)
+.TP
+\fB-o \fIextra-options\fB\fR
+ 在 extra-options  里声明的 postgres  选项都传递给所有由这个 postmaster 启动的服务进程。 参阅 \fBpostgres\fR(1) 获取可能选项。 如果选项字串包含任何空白,整个字串必须引起来。
+.TP
+\fB-p \fIport\fB\fR
+指定 \fBpostmaster\fR 侦听着等待客户端应用连接的互联网 TCP/IP 端口或一个本地 Unix 域套接字文件扩展(描述符)。 缺省的端口号是环境变量 PGPORT 的值。如果没有设置 PGPORT 缺省是 PostgreSQL 编译时建立的值(通常是 5432)。 如果你声明了一个非缺省端口,那么所有前端应用(包括 psql)都必须用命令行选项或者 PGPORT 声明同一个端口。
+.TP
+\fB-S\fR
+ 指明 postmaster 进程将以安静模式启动。也就是说, 它将与用户的(控制)tty 脱离并且启动其自身的进程组。 并且它把标准输出和标准错误重定向到 \fI/dev/null\fR。
+
+ 使用这个开关会将日志输出都丢弃,可能不是你希望的, 因为这样令错误查找非常困难。参阅下文获取一个在后台启动 postmaster 的更好的方法。
+ 
+\fB--silent-mode=false\fR 的作用和这个选项的效果正好相反。
+.TP
+\fB--\fIname\fB=\fIvalue\fB\fR
+ 设置一个命名的运行时参数;其缩写形式是 \fB-c\fR。
+.PP
+.PP
+ 有两个额外的命令行选项可以用于调试导致服务器异常退出。 用于这种状况的一般策略是通知所有其它服务器必须退出, 然后重新初始化共享内存和信号灯。这是因为一个出错的服务器在退出前可能已经破坏了一些共享的状态。 这些选项控制这种环境下的 postmaster  的性质,而且没有哪个选项是为普通操作准备的。
+.PP
+.PP
+ 这些特殊选项是:
+.TP
+\fB-n\fR
+\fBpostmaster\fR
+将不会重新初始化共享数据结构。 一个有经验的系统程序员这时就可以使用调试器检查共享内存和信号灯状态。
+.TP
+\fB-s\fR
+\fBpostmaster\fR
+将通过发送信号SIGSTOP  停止所有其他服务器进程,但不会导致它们退出。 这样就允许系统程序员手工从所有服务器进程收集倾倒的核心(core dumps)。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGCLIENTENCODING\fR
+ 客户端使用的确缺省字符编码。(客户端可以独立地覆盖这个。)这个值也可以在配置文件里设置。
+.TP
+\fBPGDATA\fR
+ 缺省数据目录位置
+.TP
+\fBPGDATESTYLE\fR
+ 运行时参数datestyle的缺省值。(不再建议使用环境变量)
+.TP
+\fBPGPORT\fR
+ 缺省端口(最好在配置文件中设置)
+.TP
+\fBTZ\fR
+ 服务器时区
+.TP
+\fB其它\fR
+ 其它环境变量可以用于指定可选地数据存储位置。参阅 Section 18.5 ``Managing Databases'' 获取更多信息。
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 一个提到了 semget 或者 shmget 的错误信息可能意味着你需要配置你的内核, 提供足够的共享内存和信号灯。更多讨论,参阅 Section 16.5 ``Managing Kernel Resouces'' 。
+.sp
+.RS
+.B "Tip:"
+提示:  你也可以通过降低 shared_buffers 的参数以减少 PostgreSQL的共享内存的消耗, 或者降低max_connections的参数减少PostgreSQL的信号灯的消耗, 以此可以推迟重新配置内核。
+.RE
+.sp
+.PP
+ 如果是一个说另外一个 postmaster 正在运行的错误信息,那你应该确保没有其他的 postmaster 进程正在运行。判断这个情况的最简单的办法是使用命令
+.sp
+.nf
+$ \fBps ax | grep postmaster\fR
+.sp
+.fi
+或
+.sp
+.nf
+$ \fBps -ef | grep postmaster\fR
+.sp
+.fi
+ 具体使用哪种取决于你的系统。如果确信没有冲突的 postmaster 在运行,那么你可以删除消息里提到的锁文件然后再次运行。
+.PP
+ 一个说无法绑定端口的错误信息可能表明该端口已经背其它非 PostgreSQL 进程使用。 如果你终止postmaster后又马上用同一个端口运行它,你也有可能得到这个错误信息; 这时,你必须多等几秒,等操作系统关闭了该端口后再试。 最后,如果你使用了一个操作系统认为是保留的端口,也可能导致这个错误信息。 例如,我的 Unix 版本认为低于 1024 的端口号是"可信任的",因而只有 Unix 超级用户可以使用它们。
+.SH "NOTES 注意"
+.PP
+ 如果有可能,\fB不要\fR使用 SIGKILL杀死 postmaster。 这样会阻止 postmaster在退出前释放它持有的系统资源(例如共享内存和信号灯)。
+.PP
+ 要正常结束 postmaster,可以使用信号 SIGTERM,SIGINT, 或 SIGQUIT。 第一个信号将等待所有的客户端退出后才退出。 第二个将强制断开所有客户端,而第三个将不停止立刻退出, 导致在重起时的恢复运行。
+.PP
+ 工具命令 \fBpg_ctl\fR(1)  可以用于安全而有效地启停 postmaster。
+.PP
+选项 \fB--\fR 在FreeBSD或者 OpenBSD上无法运行。 应该用 -c。这在受影响的系统里是个臭虫; 如果这个毛病没有修补好,将来的 PostgreSQL 版本将提供一个绕开的办法。
+.SH "EXAMPLES 例子"
+.PP
+ 用缺省值在后台启动postmaster,键入:
+.sp
+.nf
+$ \fBnohup postmaster >logfile 2>&1 </dev/null &\fR
+.sp
+.fi
+.PP
+ 以指定的端口启动 postmaster:
+.sp
+.nf
+$ \fBpostmaster -p 1234\fR
+.sp
+.fi
+ 这条命令将在端口 1234 启动 postmaster。 为了用psql与这个 postmaster 联接, 你应该这么运行 psql
+run it as
+.sp
+.nf
+$ \fBpsql -p 1234\fR
+.sp
+.fi
+ 或者设置环境变量 PGPORT:
+.sp
+.nf
+$ \fBexport PGPORT=1234\fR
+$ \fBpsql\fR
+.sp
+.fi
+.PP
+ 命名的运行时参数可以用下列的风格之一设置:
+.sp
+.nf
+$ \fBpostmaster -c sort_mem=1234\fR
+$ \fBpostmaster --sort-mem=1234\fR
+.sp
+.fi
+ 两种形式都覆盖那些现有的在 postgresql.conf 里面的 sort_mem 的设置。 请注意在参数名里的下划线在命令行上可以写成下划线,也可以写成划线。
+.sp
+.RS
+.B "Tip:"
+提示:  除了用于短期的实验以外,更好的习惯是编辑放在 postgresql.conf 里面的设置, 而不是倚赖命令行开关设置参数。
+.RE
+.sp
+.SH "SEE ALSO 参见"
+.PP
+\fBinitdb\fR(1),
+\fBpg_ctl\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/printf.1 b/src/man1/printf.1
new file mode 100644
index 0000000..a2aca4f
--- /dev/null
+++ b/src/man1/printf.1
@@ -0,0 +1,91 @@
+.TH PRINTF "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+printf \- 格式化并显示数据
+.SH "总览 (SYNOPSIS)"
+.B printf
+\fIFORMAT \fR[\fIARGUMENT\fR]...
+.br
+.B printf
+\fIOPTION\fR
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+根据 FORMAT 显示 ARGUMENT(s) .
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+FORMAT 就象 C 的 printf 函数中 一样 控制 输出数据, 转译 序列 有:
+.TP
+双引号 (double quote)
+.TP
+"\\0NNN"
+八进制数字 NNN (0 到 3 个 数字) 表示的 字符
+.TP
+\\\\
+反斜杠 (backslash)
+.TP
+"\\a"
+报警 (BEL)
+.TP
+"\\b"
+退格 (backspace)
+.TP
+"\\c"
+不再产生输出
+.TP
+"\\f"
+走纸 (form feed)
+.TP
+"\\n"
+换行 (new line)
+.TP
+"\\r"
+回车 (carriage return)
+.TP
+"\\t"
+水平 tab
+.TP
+"\\v"
+垂直 tab
+.TP
+"\\xNNN"
+十六进制数字 NNN (1 到 3 个 数字) 表示的 字符
+.TP
+%%
+单个 %
+.TP
+%b
+把 ARGUMENT 视为 翻译了 `\\' escape 序列 的 字符串
+.PP
+而且 所有 C 的 格式命令, 如 diouxXfeEgGcs, 首先 结合 ARGUMENT
+转换为 正确 的 类型. printf 能够 处理 变量宽度.
+.SH "报告 BUGS"
+发现的 bug 送往  <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B printf
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B printf
+程序, 使用 命令
+.IP
+.B info printf
+.PP
+能够 访问到 完整 的 手册.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/psfaddtable.1 b/src/man1/psfaddtable.1
new file mode 100644
index 0000000..5938993
--- /dev/null
+++ b/src/man1/psfaddtable.1
@@ -0,0 +1,52 @@
+.TH PSFADDTABLE 1 "28 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+psfaddtable \- 添加一个Unicode字符表到控制台字体中
+
+.SH 总览
+.B psfaddtable
+.I 字体文件 表文件 [输出文件]
+
+.SH 描述
+.IX "psfaddtable command" "" "\fLpsfaddtable\fR command"  
+
+
+.B Psfaddtable
+命令融合了
+.I 字体文件
+提供的 .psf 格式的控制台字
+体和
+.I 表文件
+提供的Unicode字符表, 生成一个带有嵌入字符表的
+字体文件, 并将其写到
+.I 输出文件
+(如果该文件给出, 否则写到标
+准输出). 
+.I 字体文件
+或者
+.I 输出文件
+都可以用单个的破折号(\-)取
+代以从标准输入读入, 但不能两者同时都是. 如果
+.I 字体文件
+已经
+包含了一个嵌入字符表, 会被忽略. 
+
+.SH 表文件格式
+.I Tablefile
+文件中各行可以是空白行, 或者是注释行(以
+.IR # 
+领头), 也可以包含一串十进制数字(缺省情况), 或者包含一串八进制数字
+(以
+.IR 0  领头), 
+或包含一串十六进制数字(以
+.IR 0x 
+领头). 各行第一个
+数字指出所索引字体中的符号位置, 对于256\-字符的字体, 该数在
+0到0xff之间, 而对于512\-字符的字体, 该数则处在0到0x1ff之间. 
+同一行中随后的任何一个数字都是该特有符号位置的Unicode匹配. 
+另外对同一个符号允许有多个行.
+
+.SH "另见"
+.BR consolechars (8),
+.BR psfgettable (1),
+.BR psfstriptable (1).
diff --git a/src/man1/psfgettable.1 b/src/man1/psfgettable.1
new file mode 100644
index 0000000..c0526d3
--- /dev/null
+++ b/src/man1/psfgettable.1
@@ -0,0 +1,25 @@
+.TH PSFGETTABLE 1 "28 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+psfgettable \- 从控制台字体中提取出嵌入的Unicode字符表
+
+.SH 总览
+.B psfgettable
+.I 字体文件 [输出文件]
+
+.SH 描述
+.IX "psfgettable command" "" "\fLpsfgettable\fR command"  
+
+.B psfgettable
+命令从一个 .psf 格式的控制台字体中提取出嵌入的
+Unicode字符表, 以易读格式输入到一个ASCII文件, 该文件的格式
+如同
+.BR psfaddtable (1)
+所使用的. 若字体文件名是单个破折号(\-), 
+则字体从标准输入读取.
+
+.SH "另见"
+.BR consolechars (8),
+.BR psfaddtable (1),
+.BR psfstriptable (1).
+
diff --git a/src/man1/psfstriptable.1 b/src/man1/psfstriptable.1
new file mode 100644
index 0000000..13b03c4
--- /dev/null
+++ b/src/man1/psfstriptable.1
@@ -0,0 +1,26 @@
+.TH PSFSTRIPTABLE 1 "28 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+psfstriptable \- 从控制台字体中移走嵌入的Uniocde字符表
+
+.SH 总览
+.B psfstriptable
+.I 字体文件 [输出文件]
+
+.SH 描述
+.IX "psfstriptable command" "" "\fLpsfstriptable\fR command"  
+
+.B psfstriptable
+命令从
+.IR 字体文件
+或者标准输入(此时的
+.I 字体文件
+是单个破折号(\-))读取一个可能含有嵌入Unicode字体表的.psf格
+式的控制台字体, 并将没有Unicode嵌入字符表的.psf格式的控制
+台字体文件写回到标准输出或所指明的输出文件.
+
+.SH "另见"
+.BR consolechars (8),
+.BR psfaddtable (1),
+.BR psfgettable (1).
+
diff --git a/src/man1/psql.1 b/src/man1/psql.1
new file mode 100644
index 0000000..0c0591b
--- /dev/null
+++ b/src/man1/psql.1
@@ -0,0 +1,946 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
+.TH "PSQL" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+psql \- PostgreSQL 交互终端
+
+.SH SYNOPSIS
+.sp
+\fBpsql\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB\fR [ \fB\fIusername\fB \fR]\fB \fR\fR]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBpsql\fR 是一个以终端为基础的 PostgreSQL  前端。它允许你交互地键入查询,把它们发出给 PostgreSQL, 然后看看查询的结果。另外,输入可以来自一个文件。还有, 它提供了一些元命令和多种类 shell 地特性来实现书写脚本以及对大量任务的自动化。
+.SH "OPTIONS 选项"
+.TP
+\fB-a\fR
+.TP
+\fB--echo-all\fR
+ 在读取行时向屏幕打印所有内容。 这个选项在脚本处理时比交互模式时更有用。这个选项等效于设置变量 ECHO 为 all。
+.TP
+\fB-A\fR
+.TP
+\fB--no-align\fR
+ 切换为非对齐输出模式。(缺省输出模式是对齐的。)
+.TP
+\fB-c \fIcommand\fB\fR
+.TP
+\fB--command \fIcommand\fB\fR
+ 声明 psql 将执行一条查询字串, command,然后退出。这一点在 shell 脚本里很有用。
+
+\fIcommand\fR 必须是一条完全可以被服务器分析的查询字串(也就是说,它不包含 psql特有的特性), 或者是一个反斜杠命令。这样你就不会混合 SQL 和 psql  元命令。要想混合使用,你可以把字串定向到 \fBpsql\fR 里,象这样: echo "\x \\ select * from foo;" | psql。
+
+ 如果命令字串包含多个 SQL 命令,那么他们在一个事务里处理, 除非在字串里包含了明确的 BEGIN/COMMIT 命令把他们分成多个事务。 这个和从 psql 的标准输入里给它填充相同字串不同。
+.TP
+\fB-d \fIdbname\fB\fR
+.TP
+\fB--dbname \fIdbname\fB\fR
+ 声明想要联接的数据库名称。等效于在命令行行上把 dbname  声明为第一个非选项参数。
+.TP
+\fB-e\fR
+.TP
+\fB--echo-queries\fR
+ 显示所由发送给服务器的查询。 等效于把变量 ECHO 设置为 queries。
+.TP
+\fB-E\fR
+.TP
+\fB--echo-hidden\fR
+ 回显由 \fB\\d\fR 和其他反斜杠命令生成的实际查询。 如果你希望在你自己的程序里包含类似的功能, 你就可以使用这个选项。这等效于在psql里设置变量ECHO_HIDDEN。
+.TP
+\fB-f \fIfilename\fB\fR
+.TP
+\fB--file \fIfilename\fB\fR
+ 使用 filename作为命令的语句源而不是交互式读入查询。 在处理完文件后,psql 结束。这个选项在很多方面等效于内部命令 \fB\\i\fR。
+
+如果 \fIfilename\fR 是 \-
+(连字符),则从标准输入读取。
+
+ 使用这个选项与用 psql < filename  有微小的区别。通常,两者都回按照你预期那样运行,但是使用 -f打开了一些很好的特性, 比如带行号的错误信息。而且,使用这个选项还有可能有减小启动负荷的机会。 另一方面,如果你把所有内容手工输入, 使用 shell 输入定向的方式(理论上)能保证生成和你已经得到的完全一样的输出(译注:重复运行命令)。
+.TP
+\fB-F \fIseparator\fB\fR
+.TP
+\fB--field-separator \fIseparator\fB\fR
+ 使用 separator 作为域分隔符。等效于
+\fB\\pset
+fieldsep\fR 或 \fB\\f\fR。
+.TP
+\fB-h \fIhostname\fB\fR
+.TP
+\fB--host \fIhostname\fB\fR
+ 声明正在运行服务器的主机名。 如果主机名以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-H\fR
+.TP
+\fB--html\fR
+ 打开HTML格式输出。等效于 \\pset format html 或 \fB\\H\fR 命令。
+.TP
+\fB-l\fR
+.TP
+\fB--list\fR
+ 列出所有可用的数据库,然后退出。其他非联接选项将被忽略。类似于内部命令
+\fB\\list\fR。
+.TP
+\fB-o \fIfilename\fB\fR
+.TP
+\fB--output \fIfilename\fB\fR
+ 将所有查询输出定向到文件 filename。这个选项等效于命令 \fB\\o\fR。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明被服务器侦听的 TCP 端口或使用的缺省本地 Unix 主控套接字文件句柄。 缺省的是环境变量PGPORT的值,如果没有设置的话是编译是声明的端口,通常是 5432。
+.TP
+\fB-P \fIassignment\fB\fR
+.TP
+\fB--pset \fIassignment\fB\fR
+ 允许你在命令行上以 \fB\\pset\fR 的风格设置打印选项。 要注意的是你在这里用等号分割名称和值,而不能用空格。 因此要把输出格式设置为 LaTeX,你可以敲入 -P format=latex。
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 声明 psql 将安静地执行处理任务。 缺省时psql将打印欢迎和许多其他输出信息。 如果使用了此选项,这些都不出现。这在和 -c 选项一起使用时很有效。在 psql 里,你可以通过设置 QUIET 变量实现同样效果。
+.TP
+\fB-R \fIseparator\fB\fR
+.TP
+\fB--record-separator \fIseparator\fB\fR
+ 使用 separator 做为记录分隔符。 等效于 \fB\\pset recordsep\fR 命令。
+.TP
+\fB-s\fR
+.TP
+\fB--single-step\fR
+ 进入单步模式运行。意味着每个查询在发往服务器之前都要提示用户, 用这个选项也可以取消执行。此选项主要用于调试脚本。
+.TP
+\fB-S\fR
+.TP
+\fB--single-line\fR
+ 进入单行运行模式,这时每个命令都将由换行符结束,象分号那样。
+.sp
+.RS
+.B "Note:"
+注意:  注意这个模式是给那些坚持要这个特性的人的,我们不鼓励你这么用。 实际上,如果你在一行里混合使用 SQL 和元命令,执行的顺序对不熟练的用户而言不总是清晰的。
+.RE
+.sp
+.TP
+\fB-t\fR
+.TP
+\fB--tuples-only\fR
+ 关闭打印列名称和结果行计数脚注等信息。完全等效于元命令 \fB\\t\fR。
+.TP
+\fB-T \fItable_options\fB\fR
+.TP
+\fB--table-attr \fItable_options\fB\fR
+ 允许你声明放在 HTML table 标记里的选项。 参阅 \fB\\pset\fR 获取细节。
+.TP
+\fB-u\fR
+ 让 psql 在和数据库联接之提示输入用户的用户名和口令。
+
+ 这个选项已经废弃了,因为它在概念上有漏洞。 (提示输入非缺省用户名和提示输入服务器要求的口令是完全两码事。)我们鼓励你用 -U 和 -W 选项取代。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 以用户 username  代替缺省用户与数据库联接。(当然,你必须有这么做的权限。)
+.TP
+\fB-v \fIassignment\fB\fR
+.TP
+\fB--set \fIassignment\fB\fR
+.TP
+\fB--variable \fIassignment\fB\fR
+ 进行一次变量分配,象内部命令 \fB\\set\fR 那样。 注意,如果有变量名和值的话,你必须在命令行上用等号分隔它们。要重置一个变量, 去掉等号。这个分配是在启动的很早的阶段进行的,所以为内部使用保留的变量可能被再次覆盖。
+.TP
+\fB-V\fR
+.TP
+\fB--version\fR
+ 显示psql版本。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 要求 psql 在与一个数据库联接前提示输入口令。 这个选项将在整个会话过程中有效,即使你用元命令  \fB\\connect\fR 改变了所联接的数据库。
+
+ 在当前版本里,如果服务器要求口令认证,psql  自动提出一个口令提示符。因为目前这个特性是以一个“hack”为基础, 自动识别有可能奇怪地失效,因此用这个选项强制一个提示符。 如果没有声明口令提示符而服务器要求口令认证,那么联接企图将失败。
+.TP
+\fB-x\fR
+.TP
+\fB--expanded\fR
+ 打开扩展表格式模式。等效于 \fB\\x\fR。 
+.TP
+\fB-X,\fR
+.TP
+\fB--no-psqlrc\fR
+ 不读取启动文件  \fI~/.psqlrc\fR。
+.TP
+\fB-?\fR
+.TP
+\fB--help\fR
+ 显示关于psql命令行参数的帮助。
+.SH "EXIT STATUS 退出状态"
+.PP
+如果正常结束,那么 \fBpsql\fR  向 shell 返回 0,如果自身发生致命错误,则返回 1(内存用尽,未找到文件等), 如果和数据库的连接失效而且会话不再活跃则返回 2,如果脚本中发生错误并且设置了 ON_ERROR_STOP 则返回 3。
+.SH "USAGE 用法"
+.SS "CONNECTING TO A DATABASE 与一个数据库联接"
+.PP
+\fBpsql\fR 是一个普通的 PostgreSQL  客户端应用。为了与一个数据库联接,你需要知道你的目标数据库, 服务器的主机名和端口号以及你希望以哪个用户的身份进行联接等信息。 我们可以通过命令行参数告诉 psql 这些信息,分别是 -d, -h,-p,和 -U。 如果有个参数不属于任何选项开关,那么它会被解释成数据库名(或者是用户名-如果数据库名称也给出了。)。 不是所有这些选项都是必须的,缺省的也可以。如果你省略主机名, psql 将通过 Unix 域套接字与本地主机的服务器相联。 缺省的端口号是编译时确定的。因为数据库服务器使用同样的缺省值, 所以在大多数设置下,你可能不需要声明端口号。缺省的用户名是你的 Unix 用户名,与数据库同名。 要注意的是你不能用任意用户名与任何数据库相联。你的数据库管理员应该告诉你你的访问权限。 你可以通过设置几个环境变量 PGDATABASE, PGHOST,PGPORT 和 PGUSER  为对应的值的方法节约几次敲击。
+.PP
+ 如果因为任何原因而无法与数据库相联(例如,权限不够,服务器没有运行等), psql 将返回一个错误并退出。
+.SS "ENTERING SQL COMMANDS 输入 SQL 命令"
+.PP
+ 通常状况下,psql 提供一个带有 psql 正在与之联接的接数据库名的,后缀 =>的提示符。例如,
+.sp
+.nf
+$ \fBpsql testdb\fR
+Welcome to psql 7.4beta5, the PostgreSQL interactive terminal.
+
+Type:  \\copyright for distribution terms
+       \\h for help with SQL commands
+       \\? for help on internal slash commands
+       \\g or terminate with semicolon to execute query
+       \\q to quit
+
+testdb=>
+.sp
+.fi
+.PP
+ 用户可以在这个提示符下键入SQL 查询。 通常,输入的行将在命令终止分号出现时送到服务器。 一行的终止并不结束命令!因此命令可以因清晰起见跨越好几行。如果命令发送出去而且没有错误, 命令结果会显示在屏幕上。
+.PP
+ 当命令正在进行时,psql 同样还轮询由 LISTEN [\fBlisten\fR(7)] 和 NOTIFY [\fBnotify\fR(7)] 生成的异步通知信号。
+.SS "META-COMMANDS 元命令"
+.PP
+ 你在 psql 里输入的任何以不带引号的反斜杠('\\')开头的东西都是 psql 元命令,这些命令是由 psql 自己处理的。这些命令也是令 psql 可用于管理或书写脚本的原因。 元命令更常见的叫法是斜杠或反斜杠命令。
+.PP
+ 一个 psql 命令的格式是反斜杠后面紧跟一个命令动词,然后是任意参数。 参数与命令动词和其他参数以任意个空白字符间隔。
+.PP
+ 要在参数里面包含空白,你必须用单引号把它包围起来。 要在这样的参数里包含单引号,前面加一个反斜杠。 任何包含在单引号里的东西会被进一步进行类 C 的替换,把
+\\n (new line), \\t (tab),
+\\\fIdigits\fR,
+\\0\fIdigits\fR, 和
+\\0x\fIdigits\fR 
+(给出的十进制,八进制,或十六进制码的字符)替换掉。
+.PP
+ 如果一个不带引号的参数以冒号(:)开头, 它会被当作一个psql 变量,并且该变量的值会最终成为真正的参数值。 (译注:类似 ecpg 和 pl/pgsql 的变量用法。)
+.PP
+ 用反引号 ("backticks" `) 包围的内容被当作一个命令行传入 shell。 该命令的输出(删除了结尾的新行)被当作参数值。上面描述的逃逸(字符)序列在反引号里也生效。
+.PP
+ 有些命令以一个 SQL 标识的名称(如,一个表名)为参数。 这些参数遵循 SQL 语法关于双引号的规则: 不带双引号的标识强制成小写, 而双引号保护字母不受大小写转换,并且允许在标识符中使用空白。 在双引号中,成对的双引号在结果名字中分析成一个双引号。比如, FOO"BAR"BAZ 解析成 fooBARbaz,而 "A weird"" name" 变成 A weird" name。
+name.
+.PP
+ 对参数的分析在碰到另一个不带引号的反斜杠时停止。 这里会认为是一个新的元命令的开始。特殊序列  \\\\ (双反斜杠)标识参数的结尾并将继续分析后面的 SQL 命令(如果存在的话)。这样 SQL 和 psql命令可以自由的在一行里面混合。 但是在任何情况下,一条元命令的参数不能延续超过行尾。
+.PP
+ 下列元命令是已定义的:
+.TP
+\fB\\a\fR
+ 如果目前的表输出格式是不对齐的,切换成对齐的。 如果是对齐的,切换成不对齐。这条命令是为了向后兼容。参阅 \fB\\pset\fR 获取一个通用的解决方法。
+.TP
+\fB\\cd [\fIdirectory\fB]\fR
+ 把当前工作目录改变到 directory。 没有参数是则改变到当前用户的家目录。
+.sp
+.RS
+.B "Tip:"
+提示:  要打印出你的当前工作目录,使用 \\!pwd.
+.RE
+.sp
+.TP
+\fB\\C [ \fItitle\fB ]\fR
+ 把正在打印的表的标题设置为一个查询的结果或者取消这样的设置。 这条命令等效于
+\\pset title \fItitle\fR. (这条命令的名称源于 "caption",因为以前只是用于在一个 HTML 表里面设置标题。)
+.TP
+\fB\\connect (or \\c) [ \fIdbname\fB [ \fIusername\fB ] ]\fR
+ 与一个新的数据库建立一个联接,使用/不用一个用户名。 前面的联接将关闭。如果 dbname 是 -,那么就假设是当前数据库名称。
+
+ 如果省略 username,则假设是当前用户名。
+
+ 作为一条特殊规则,不带任何参数运行 \fB\\connect\fR  将以缺省用户身份与缺省数据库连接(正如你不带任何参数运行 psql 一样。)
+
+ 如果联接失败(用户名错,访问拒绝等),那么将保留前面的联接--当且仅当在 psql 处于交互模式下如此。 如果运行的是非交互的脚本,处理会马上停止,并返回一个错误。 选择这样的区别是一方面为用户使用方便考虑,另一方面为保证脚本不会碰巧操作了错误的数据库的安全机制考虑的。
+.TP
+\fB\\copy \fItable\fB\fR
+ 执行前端(客户端)拷贝。这是一个运行 SQL  COPY 命令的操作, 不同的是 SQL COPY 是服务器在读写指明的文件,而 psql 读写文件并作为本地的文件系统和服务器之间的路由取出或写入数据。 这意味着文件访问性和权限都是本地用户的,而不是服务器的,因此不需要 SQL 超级用户权限。
+
+ 这条命令的语法是模拟 SQL COPY 命令的。(参考它的描述获取细节。) 要注意的是由此而来,有一些特殊的分析规则应用于 \fB\\copy\fR 命令。 尤其是变量替换规则和反斜杠代换规则不起作用。
+.sp
+.RS
+.B "Tip:"
+提示:  此操作不象 SQL COPY 命令这样高效, 因为所有数据必须通过客户端/服务器联接。对于大数据量的操作,另一种方法更可行。
+.RE
+.sp
+.sp
+.RS
+.B "Note:"
+注意:  注意在客户端和服务器拷贝时对 stdin 和 stdout  的解释的区别:在前端拷贝时,这些总是指 psql的输入和输出流。在服务器拷贝时 stdin 来自 COPY 本身的标准输入(比如,一个带有 -f 选项的脚本), 而 stdout 指的是查询输出流(参阅下面的 \fB\\o\fR 元命令)。
+.RE
+.sp
+.TP
+\fB\\copyright\fR
+ 显示 PostgreSQL 的版权和版本信息。
+.TP
+\fB\\d [ \fIpattern\fB ]\fR
+ 对于每个匹配pattern的关系(表,视图,索引或者序列), 显示所有列,它们的类型,和任何特殊属性,象NOT NULL或缺省等--只要存在。 如果实际上这个关系是一个表,任何已定义的索引,主键,唯一约束相关的索引,规则,约束,和触发器也同样显示出来, 如果关系是一个视图,还显示视图的定义。 ("匹配模式"在下面定义。)
+
+从 \\d+ 来的命令也是一样的,只不过还显示与表的列关联的注解。
+.sp
+.RS
+.B "Note:"
+注意:  如果如果不带任何pattern调用 \fB\\d\fR , 等效于 \fB\\dtvs\fR,将显示一个所有表,视图和序列的列表。 这完全是出于方便的考虑。
+.RE
+.sp
+.TP
+\fB\\da [ \fIpattern\fB ]\fR
+ 列出所有可用聚集函数,以及它们操作的数据类型。如果声明了 pattern,那么只显示匹配(正则表达式)的聚集函数。
+.TP
+\fB\\dc [ \fIpattern\fB ]\fR
+ 列出所有字符集之间的可用转换。如果声明了 pattern, 则只列出那些匹配模式的转换。
+.TP
+\fB\\dC\fR
+ 列出所有类型转换。
+.TP
+\fB\\dd [ \fIpattern\fB ]\fR
+ 显示所有匹配 pattern  的描述,如果没有给出参数,显示所有可视对象。 但是不管怎样,只有那些有描述内容的对象才显示出来。 ("对象"包括聚集,函数,操作符,类型, 关系(表,视图,索引,序列,大对象),规则和触发器。)例如:
+.sp
+.nf
+=> \fB\\dd version\fR
+                     Object descriptions
+   Schema   |  Name   |  Object  |        Description
+------------+---------+----------+---------------------------
+ pg_catalog | version | function | PostgreSQL version string
+(1 row)
+.sp
+.fi
+
+ 可以用 \fBCOMMENT  SQL\fR 命令生成对对象的描述。
+.TP
+\fB\\dD [ \fIpattern\fB ]\fR
+ 列出所有可用域。如果声明了 pattern,那么只显示匹配的域。
+.TP
+\fB\\df [ \fIpattern\fB ]\fR
+ 列出所有可用函数,以及它们的参数和返回的数据类型。如果声明了 pattern,那么只显示匹配(正则表达式)的函数。如果使用了 \\df+ 的形式,每个函数的附加信息,包括语言和描述也会显示出来。
+.sp
+.RS
+.B "Note:"
+注意:  为了减少混乱,\\df 并不显示数据类型的 I/O 函数。 这样是通过忽略那些接受或者返回类型 cstring 的函数实现的。
+.RE
+.sp
+.TP
+\fB\\distvS [ \fIpattern\fB ]\fR
+ 这不是一个实际上的命令名称:字母 i,s,t,v,S 分别代表索引(index), 序列(sequence),表(table),视图(view)和系统表(system table)。 你可以以任意顺序声明任意或者所有这些字母获得这些对象的一个列表。 字幕 S 把列表限制于系统对象;如果没有 S,则只显示非系统对象。 如果在命令名上附加了 +,那么还会列出和每个对象相关联的描述,如果有的话。
+
+ 如果声明了 pattern,那么只列出匹配模式的对象。
+.TP
+\fB\\dl\fR
+这是 \fB\\lo_list\fR 的别名,显示一个大对象的列表。
+.TP
+\fB\\dn [ \fIpattern\fB ]\fR
+ 列出所有可用模式(名字空间)。如果声明了 pattern  (一个正则表达式),那么只列出匹配模式的模式名。
+.TP
+\fB\\do [ \fIpattern\fB ]\fR
+ 列出所有可用操作符,以及它们的操作数和返回的数据类型。 如果声明了 pattern,那么只显示匹配模式的操作符。
+.TP
+\fB\\dp [ \fIpattern\fB ]\fR
+ 生成一列可用的表和它们相关的权限。 如果声明了 pattern, 那么只列出名字可以匹配模式的表。
+
+ 命令 \fBgrant\fR(7) 和 \fBrevoke\fR(7) 用于设置访问权限。参阅 \fBgrant\fR(7) 获取更多信息。
+.TP
+\fB\\dT [ \fIpattern\fB ]\fR
+ 列出所有数据类型或只显示那些匹配 pattern的。这条命令的 \\dT+ 形式显示更多信息。
+.TP
+\fB\\du [ \fIpattern\fB ]\fR
+ 列出所有已配置用户或者只列出那些匹配 pattern 的用户。
+.TP
+\fB\\edit (or \\e) [ \fIfilename\fB ]\fR
+ 如果声明了 filename, 则编辑此文件并且在编辑器退出后将其内容拷贝回查询缓冲区。 如果没有给出参数,则把当前查询缓冲区内容拷贝到一个临时文件然后以相同方式编辑。
+
+ 然后根据一般的psql规则重新分析查询缓冲区, 这时整个缓冲区当作一个单行。(因此你无法用这个方法制作“脚本”,用 \fB\\i\fR 做脚本。) 这还意味着如果该查询以分号结尾(或者包含分号),它就会马上被执行。否则它只是在查询缓冲区里等待。
+.sp
+.RS
+.B "Tip:"
+提示:  psql 搜索环境变量 PSQL_EDITOR,EDITOR  和 VISUAL(以此顺序)查找要用到哪个编辑器。如果上面的都没有设置,使用 \fI/bin/vi\fR。
+.RE
+.sp
+.TP
+\fB\\echo \fItext\fB [ ... ]\fR
+ 向标准输出打印参数,用一个空格分隔并且最后跟着一个新行。 这个特性在显示脚本的输出时会有用。例如:
+.sp
+.nf
+=> \fB\\echo `date`\fR
+Tue Oct 26 21:40:57 CEST 1999
+.sp
+.fi
+ 果第一个参数是一个无引号的 -n,那么不会写出结尾的新行。
+.sp
+.RS
+.B "Tip:"
+提示:  如果你使用 \fB\\o\fR 命令重定向你的查询的输出,你可能会用 \fB\\qecho\fR 取代这条命令。
+.RE
+.sp
+.TP
+\fB\\encoding [ \fIencoding\fB ]\fR
+ 设置客户端字符编码方式。不带参数时,这条命令显示当前的编码方式。
+.TP
+\fB\\f [ \fIstring\fB ]\fR
+ 为不对齐的查询输出设置域分隔符。缺省时是竖条(|)。 参阅 \fB\\pset\fR 获取设置输出选项的通用方法。
+.TP
+\fB\\g [ { \fIfilename\fB | |\fIcommand\fB } ]\fR
+ 把当前的查询输入缓冲区的内容发送给服务器并且把输出输出到可选的 filename  或者把输出定向到一个独立的 Unix shell 执行 command。 单独一个 \\g 实际上等效于一个分号。一个带有参数的 \\g 是"一次性"的 \\o 命令的代用品。
+.TP
+\fB\\help (or \\h) [ \fIcommand\fB ]\fR
+ 给出指定 SQL 命令的语法帮助。如果没有给出 command ,那么 psql 将列出可获得语法帮助的所有命令。如果 command  是一个星号("*"),则显示所有 SQL 命令的语法帮助。
+.sp
+.RS
+.B "Note:"
+注意:  为简化敲击,包含多个单字的命令不需要引用。因此键入 \fI\\help alter table\fP 是正确的。
+.RE
+.sp
+.TP
+\fB\\H\fR
+ 打开 HTML 查询输出格式。如果 HTML  格式已经打开,则切换回缺省的对齐的文本格式。 这个命令是为了兼容和方便,参阅 \fB\\pset\fR 获取设置其他输出选项的内容。
+.TP
+\fB\\i \fIfilename\fB\fR
+ 从文件filename中读取并把其内容当作从键盘输入的那样执行查询。
+.sp
+.RS
+.B "Note:"
+注意:  如果你想在屏幕上看到读入的行,你必须对所有行设置变量 ECHO 为 all。
+.RE
+.sp
+.TP
+\fB\\l (or \\list)\fR
+ 列出服务器上所有数据库的名字和它们的所有者以及字符集编码。在命令名称后面加一个 "+" 还可以看到对数据库的描述。
+.TP
+\fB\\lo_export \fIloid\fB \fIfilename\fB\fR
+ 从数据库里读取 OID 为 loid  的大对象并把她写到 filename里。 注意这个功能与服务器函数 lo_export 有些微小的区别, lo_export 运行时带着运行数据库服务器的用户权限, 而且是在服务器的文件系统上。
+.sp
+.RS
+.B "Tip:"
+提示:  使用 \fB\\lo_list\fR 查看大对象的 OID。
+OID.
+.RE
+.sp
+.TP
+\fB\\lo_import \fIfilename\fB [ \fIcomment\fB ]\fR
+ 把文件存储为一个 PostgreSQL 大对象。可以带着一个该对象的注解选项。例如:
+.sp
+.nf
+foo=> \fB\\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'\fR
+lo_import 152801
+.sp
+.fi
+ 响应表明此大对象得到一个对象标识 152801,如果你还想访问该对象,就应该把这个对象标识记住。 因此,我们建议总是给每个对象关联一个人类可读的注解。那样就可以用 \fB\\lo_list\fR 命令看到这些注解。
+
+ 注意这条命令与服务器端的 lo_import 有一些区别,因为这条命令是本地用户在本地文件系统上操作, 而不是以服务器用户在服务器文件系统上操作。
+.TP
+\fB\\lo_list\fR
+ 显示一个目前存储在该数据库里的所有 PostgreSQL 大对象和它们的所有者的列表。
+.TP
+\fB\\lo_unlink \fIloid\fB\fR
+ 从数据库里删除OID为 \fIloid\fR 的大对象。
+.sp
+.RS
+.B "Tip:"
+提示:  使用 \fB\\lo_list\fR  查找大对象的 OID。
+OID.
+.RE
+.sp
+.TP
+\fB\\o [ {\fIfilename\fB | |\fIcommand\fB} ]\fR
+ 把后面的查询结果保存到文件 filename  里或者把后面的查询结果定向到一个独立的 Unix shell 执行 command。 如果没有声明参数,查询输出重置为标准输出。
+
+"查询结果"包括所有表,命令响应和从数据库服务器来的提示, 同样还有各种各样查询数据库的反斜杠命令的输出(如 \fB\\d\fR),但是没有错误信息。
+.sp
+.RS
+.B "Tip:"
+提示:  要用文本分散查询结果之间的输出,用 \fB\\qecho\fR。
+.RE
+.sp
+.TP
+\fB\\p\fR
+ 打印当前查询缓冲区到标准输出。
+.TP
+\fB\\pset \fIparameter\fB [ \fIvalue\fB ]\fR
+ 这条命令设置影响查询结果表输出的选项。parameter  描述要设置的选项是哪一个。value 的语意也取决于它。
+
+ 可调节的打印选项有:
+.RS
+.TP
+\fBformat\fR
+ 设置输出格式为 unaligned,aligned,html, 或 latex之一。允许使用唯一的缩写。(这也意味着一个字母就够了。)
+
+"Unaligned" (不对齐)把一条记录的所有字段都输出到一行, 用当前有效的域分隔符分隔。这主要用于生成那些要被其他程序读取的输出(tab分隔,逗号分隔)。 "Aligned" (对齐)模式是标准的,人类可读的,格式化好了的文本输出,也是缺省。 "HTML" 和 "LaTeX"  模式把表输出为可用于文档里的对应标记语言。它们还不是完整的文档! (可能对于 HTML 变化还不是太大,但是在 LaTeX 里,你必须有一个完整的文档包装器。)
+.TP
+\fBborder\fR
+ 第二个参数必须是一个数字。通常,数字越大,表就有越宽的边界和越多的线, 但是这个参数取决于实际的格式。在HTML模式里, 这个参数会直接翻译成border=...属性,在其他的模式里, 只有值 0 (无边界),1 (内部分隔线)和 2 (表框架)有意义。
+.TP
+\fBexpanded (or x)\fR
+ 在正常和扩展格式之间切换。当打开扩展格式时,所有的输出都是两列, 字段名称在左,数据在右。 这个模式在数据无法放进通常的"水平"模式的屏幕时很有用。
+
+ 所有四种输出模式都支持扩展格式。
+.TP
+\fBnull\fR
+ 第二个参数是一个字串,用以代表字段的值为 null 时的打印输出。 缺省是什么都不打,这样很容易和类似一个空字串混淆。 因此,我们可能选择 \\pset null '(null)'。
+.TP
+\fBfieldsep\fR
+ 声明在非对齐模式时的域分隔符。 这样我们就可以创建其他程序希望的tab或逗号分隔的输出。要设置 tab 域分隔符, 键入 \\pset fieldsep '\t'。缺省域分隔符是 '|' (一个竖条符号)。
+.TP
+\fBfooter\fR
+ 切换默认足标的显示 (x rows)。
+.TP
+\fBrecordsep\fR
+ 声明在非对齐模式时的记录分隔符。缺省是换行符。
+.TP
+\fBtuples_only (或 t)\fR
+ 在完全显示和只显示记录之间切换。 完全显示将显示象列头,标题和各种脚注等信息。 只显示记录模式将只显示实际的表数据。
+.TP
+\fBtitle [ \fItext\fB ]\fR
+ 为任何随后打印的表设置标题。 这个参数可以用于给你的输出一个描述性标记。 如果不带参数,重置标题。
+.TP
+\fBtableattr (or T) [ \fItext\fB ]\fR
+ 允许你声明放在 HTML table 标记里的任何属性。例如,可以是 cellpadding 或 bgcolor。注意你可能不需要在这里声明 border ,因为已经在 \\pset border 里用过了。
+.TP
+\fBpager\fR
+ 控制查询和psql帮助输出的分页器。如果设置了环境变量 PAGER, 输出被定向到指定程序,否则使用系统缺省(比如 more)。
+
+ 如果关闭了分页器,则不使用它,如果打开了,程序只在需要的时候使用分页器,也就是说, 输出是到终端,而且那个表很可能无法与屏幕匹配。 (psql 在决定何时分页时不是很完美。) \\pset pager 开关分页器。我们也可以把分页器设置为 always,导致我们在任何情况下都使用分页器。
+.RE
+.PP
+
+ 可以在 "Examples 例子" 节看到这些不同格式输出的示例。
+.sp
+.RS
+.B "Tip:"
+提示:  有很多用于 \fB\\pset\fR 的快速命令。参阅
+\fB\\a\fR, \fB\\C\fR, \fB\\H\fR,
+\fB\\t\fR, \fB\\T\fR, 和 \fB\\x\fR。
+.RE
+.sp
+.sp
+.RS
+.B "Note:"
+注意:  无参数运行 \fB\\pset\fR 是错误的。 以后这样调用将显示当前打印选项状态。
+.RE
+.sp
+.TP
+\fB\\q\fR
+ 退出 psql 程序。
+.TP
+\fB\\qecho \fItext\fB [ ... ]\fR
+ 这条命令等效于 \fB\\echo\fR ,区别是所有输出将写入由 \fB\\o\fR 设置的输出通道。
+.TP
+\fB\\r\fR
+ 重置(清空)查询缓冲区。
+.TP
+\fB\\s [ \fIfilename\fB ]\fR
+ 将命令行历史打印出或是存放到 filename。 如果省略 filename, 历史将输出到标准输出。这个选项只有在 psql 配置成使用 GNU 历史库后才生效。
+.sp
+.RS
+.B "Note:"
+注意:  在当前版本里,这个( GNU 历史库)不再是必须的了, 实际上,在程序结束时自动保存命令行历史。每次 psql 启动都会装载命令行历史。
+.RE
+.sp
+.TP
+\fB\\set [ \fIname\fB [ \fIvalue\fB [ ... ]]]\fR
+ 设置内部变量 name  为 value 或着如果给出了多于一个值, 设置为所有这些值的联接结果。如果没有给出第二个参数,只设变量不设值。要重置一个变量,使用 \fB\\unset\fR 命令。
+
+ 有效的变量名可以包含字符,数字和下划线。 参阅下面的 "Variables 变量" 获取细节。
+
+ 尽管你可以设置任何变量为任意值, psql对一些变量特殊对待。它们在关于变量的节里面有文档。
+.sp
+.RS
+.B "Note:"
+注意:  这条命令是完全和 SQL 命令 SET [\fBset\fR(7)] 不一样的。
+.RE
+.sp
+.TP
+\fB\\t\fR
+ 切换输出的列/字段名的信息头和行记数脚注。 这条命令等效于 \\pset tuples_only,提供主要为了方便。
+.TP
+\fB\\T \fItable_options\fB\fR
+ 允许你在使用HTML输出模式时声明放在 table 标记里的属性。 这条命令等效于 \\pset tableattr table_options。
+.TP
+\fB\\timing\fR
+切换每个 SQL 语句使用的时间,单位是毫秒。
+.TP
+\fB\\w {\fIfilename\fB | \fI|command\fB}\fR
+ 将当前查询缓冲区输出到文件 filename  或者定向到 Unix 命令 command。
+.TP
+\fB\\x\fR
+ 切换扩展行格式。等效于 \\pset expanded。
+.TP
+\fB\\z [ \fIpattern\fB ]\fR
+ 生成一个带有访问权限列表的数据库中所有表的列表。 如果给出任何pattern,则被当成一个规则表达式, 只显示匹配的表。
+
+ 命令 \fBgrant\fR(7) 和 \fBrevoke\fR(7) 用于设置访问权限。 参阅 \fBgrant\fR(7) 获取更多信息。
+
+ 这是 \fB\\dp\fR("显示权限")的别名。
+.TP
+\fB\\! [ \fIcommand\fB ]\fR
+ 返回到一个独立的 Unix shell 或者执行 Unix 命令 command。 参数不会被进一步解释,shell 将看到全部参数。
+.TP
+\fB\\?\fR
+ 获得关于反斜杠命令的帮助信息。
+.PP
+.PP
+ 各种 \\d 命令都接受一个 pattern  参数,声明要显示的对象名字。* 表示"任何字符序列", 而 ? 表示"任何单个字符"。(这个表示法和 Unix 的 shell 文件名模式兼容。) 高级用户也可以使用正则表达式表示法,比如字符表,[0-9] 这样的东西来匹配"任意数字"。 要让任何这些模式匹配字符可以安字面方式解析,那就应该用双引号包围它们。
+.PP
+ 一个包含(无引号的)句点的模式会被解析承一个模式名的模式后面跟着一个对象名的模式。 比如, \\dt foo*.bar* 显示所有以foo 开头的模式里的以 bar 开头的表名字。 如果没有出现句点,那么这个模式只匹配在当前模式搜索路径中可见的对象。
+.PP
+ 如果完全省略 pattern 参数, 那么 \\d 命令显示所有在当前模式搜索路径中可见的对象。 要查阅在数据库中的所有对象,使用模式 *.*。
+.SS "ADVANCED FEATURES 高级特性"
+.SS "VARIABLES 变量"
+.PP
+\fBpsql\fR 提供类似通常 Unix 命令 shell 那样的变量替换特性。 变量只是简单的名称/数值对, 这里的值可以是任何长度的任何值。要设置一个变量,使用 psql 元命令
+\fB\\set\fR:
+.sp
+.nf
+testdb=> \fB\\set foo bar\fR
+.sp
+.fi
+ 把变量"foo" 设置为值 "bar"。 要检索变量的内容,在变量名前面放上冒号然后把它用在任意斜杠命令里:
+.sp
+.nf
+testdb=> \fB\\echo :foo\fR
+bar
+.sp
+.fi
+.sp
+.RS
+.B "Note:"
+注意:  \fB\\set\fR 的参数服从和其他命令一样的替换规则。 因此你可以构造有趣的引用,象 \\set :foo 'something' 这样, 获得分别象Perl或 PHP那样有名的"软连接(soft links)"或"变量 变量"。 不幸的是(或者 万幸的?),用这些构造不能做任何有用的事情。另一方面, \\set bar :foo 是一个非常有效的拷贝变量的方法。
+.RE
+.sp
+.PP
+ 如果你不带第二个参数调用 \fB\\set\fR, 那么只是设置这个变量而没有值。 要重置(或删除)一个变量,使用命令 \fB\\unset\fR。
+.PP
+\fBpsql\fR 的内部变量可以包括任意顺序, 任意数量的字母,数字和下划线。 有一些常用变量被 psql 另眼相待。它们是一些选项设置, 这些选项在运行时可以通过改变变量的值或者改变一些应用的表现状态而改变。 尽管你可以把这些变量用于其他用途,但是我们不鼓励这么做,因为程序的特性可能会很快变得非常奇怪。 通常,所有特殊对待的变量都是由大写字母组成(可能还有数字和下划线)。 为了保证和未来的最大限度的兼容性,请避免使用这样的变量。 下面是一个所有特殊对待的变量列表。
+.TP
+\fBAUTOCOMMIT\fR
+ 如果是 on(缺省),那么每个 SQL 命令都在成功完成后自动提交。 要推迟这种模式下的提交,你必须输入一个 BEGIN 或者 START TRANSACTION SQL 命令。 如果是 off 或者未设置,SQL 命令不会提交,知道你明确地发出 COMMIT 或者 END。 关闭自动提交的模式是通过为你明确发出一个 BEGIN 实现的, 它是放在任何尚未在一个事务块中并且自己不是 BEGIN 或者其它事务控制命令的前面。
+.sp
+.RS
+.B "Note:"
+注意:  在关闭自动提交的模式下,你必须明确放弃任何失败的事务,方法是执行 ABORT 或者 ROLLBACK。 还要注意如果你不提交就退出会话,你的工作会丢失。
+.RE
+.sp
+.sp
+.RS
+.B "Note:"
+注意:  自动提交打开方式是 PostgreSQL 传统的行为, 但是关闭自动提交更接近 SQL 规范。如果你喜欢关闭自动提交,你应该在你的 \fI.psqlrc\fR 文件里设置它。
+.RE
+.sp
+.TP
+\fBDBNAME\fR
+ 你正在联接着的数据库名称。 每次你与一个数据库联结都会设置这个值(包括程序启动),但是可以删除。
+.TP
+\fBECHO\fR
+ 如果置为 all, 输入的或者来自一个脚本的所有行在分析或执行前都写到标准输出。 要在程序启动时声明这些,使用 -a如果设置为 queries, psql 只是在查询发送给服务器之前打印出来。 实现这个功能的命令行选项是 -e。
+.TP
+\fBECHO_HIDDEN\fR
+ 当设置了这个变量并且一个反斜杠命令查询数据库时,首先显示查询。 这样你可以学习 PostgreSQL  内部的东西并且在你自己的程序里提供类似功能。如果你设置该变量的值为 "noexec",查询只是显示出来但是实际上不发送到服务器和执行。
+.TP
+\fBENCODING\fR
+ 当前的客户端字符集编码。
+.TP
+\fBHISTCONTROL\fR
+ 如果这个变量设置为 ignorespace, 以空格开始的行将不会进入历史列表。 如果设置为变量 ignoredups, 与以前历史记录里匹配的行也不会进入历史记录。值 ignoreboth是上面两个的结合。 如果删除此变量或者其值为任何与上面的值不同的东西, 所有交互模式读入的行都被保存入历史列表。
+.sp
+.RS
+.B "Note:"
+注意:  这个特性是无耻地从 \fBbash\fR 里剽窃来的。
+.RE
+.sp
+.TP
+\fBHISTSIZE\fR
+ 存在命令历史里的命令的个数。缺省值是 500。
+.sp
+.RS
+.B "Note:"
+注意:  这个特性是无耻地从 \fBbash\fR 里剽窃来的。
+.RE
+.sp
+.TP
+\fBHOST\fR
+ 当前你正联接的数据库服务器主机。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除。
+.TP
+\fBIGNOREEOF\fR
+ 如果删除此变量,向一个交互的 psql会话发送一个 EOF (通常是 \fBControl\fR+\fBD\fR)将终止应用。如果设置为一个数字值,那么在应用终止前该数值的 EOF 字符将被忽略。 如果设置了此变量但是没有数字值,缺省是 10。
+.sp
+.RS
+.B "Note:"
+注意:  这个特性是无耻地从 \fBbash\fR 里剽窃来的。
+.RE
+.sp
+.TP
+\fBLASTOID\fR
+ 最后影响的oid值,即为从一条 INSERT 或 lo_insert 命令返回的值。 此变量只保证在下一条 SQL 命令的结果显示之前有效。
+.TP
+\fBON_ERROR_STOP\fR
+ 缺省时,如果非交互的脚本碰到一个错误,象一条错误的 SQL 命令或者内部元命令,处理会继续进行。 这是 psql 的传统特性, 但是有时候我们不太希望这样。如果设置了这个变量,脚本处理将马上停止。 如果该脚本是从另外一个脚本调用的,那个脚本也会按同样的方式停止。 如果最外层的脚本不是从一次交互的 psql  会话中调用的而是用 -f 选项调用的,psql  将返回错误代码 3,以示这个情况与致命错误条件的区别(错误代码 1)。
+.TP
+\fBPORT\fR
+ 当前你正在联接的数据库服务器的端口。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除。
+.TP
+\fBPROMPT1\fR
+.TP
+\fBPROMPT2\fR
+.TP
+\fBPROMPT3\fR
+ 这些指明psql 显示的提示符看上去象什么。 参阅下面的 "Prompting 提示符"。
+.TP
+\fBQUIET\fR
+ 这个变量等效于命令行选项 -q。 可能在交互模式下没有什么用。
+.TP
+\fBSINGLELINE\fR
+ 这个变量等效于设置命令行选项 -S。你可以在运行时删除或设置它。
+.TP
+\fBSINGLESTEP\fR
+ 这个变量等效于命令行选项 \fB-s\fR。
+.TP
+\fBUSER\fR
+ 当前你正用于联接的数据库用户。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除/重置。
+.TP
+\fBVERBOSITY\fR
+ 这个选项可以设置为值 default,verbose,或者 terse  以控制错误报告的冗余行。
+.SS "SQL INTERPOLATION 代换"
+.PP
+ 一个附加的 psql 变量的有用特性是你可以把它们替换("代换")成正规的 SQL 语句。这样做的语法同样还是变量名前面加一个冒号(:)。
+.sp
+.nf
+testdb=> \fB\\set foo 'my_table'\fR
+testdb=> \fBSELECT * FROM :foo;\fR
+.sp
+.fi
+ 将会查询表my_table。变量的值是逐字拷贝的, 所以它甚至可以包含不对称的引号或反斜杠命令。你必须保证你输入的东西是有意义的。 变量替换将不会在引号引起来的 SQL 语句里面发生。
+.PP
+ 利用这个功能的一个时髦的应用是通过使用一个随后的语句中最后插入的 OID 建立一个外键仿真场景。 另一个可能用到这个机制的地方是把一个文件的内容拷贝到一个字段里面去。 首先把文件装载到一个变量然后象上面那样处理。
+.sp
+.nf
+testdb=> \fB\\set content '\\'' `cat my_file.txt` '\\''\fR
+testdb=> \fBINSERT INTO my_table VALUES (:content);\fR
+.sp
+.fi
+ 这样处理的一个可能问题是 my_file.txt  可能包含单引号。这些需要被逃逸以免在处理第三行时不会导致语法错误。 可以使用程序 sed 来做这个处理:
+.sp
+.nf
+testdb=> \fB\\set content '\\'' `sed -e "s/'/\\\\\\\\\\\\'/g" < my_file.txt` '\\''\fR
+.sp
+.fi
+ 观察正确数量的反斜杠(6)!你可以这样解释它:在 psql 分析完这行后,它把 sed -e "s/'/\\\\\\'/g" < my_file.txt 传递给shell。 shell 将对双引号里的东西做其处理然后用参数 -e 和
+ s/'/\\\\'/g 执行 sed。当 sed分析这些时, 它将把双反斜杠替换为单个反斜杠然后进行替换。 可能有时候你认为所有 Unix 命令使用同一个逃逸字符是个好事。 但具有讽刺意味的事实是你可能不得不逃逸所有反斜杠,因为 SQL 文本常量同样也惨遭这种解释。 这种情况下你可能最好在外部准备文件。
+.PP
+ 因为冒号也可以合法的出现在 SQL 命令里,便有下面规则的应用: 如果没有设置变量,字符序列 "冒号+名称" 不会被改变。 在任何情况下你都可以用反斜杠逃逸冒号以保护它免于被解释。 (变量的冒号语法是 SQL 用于嵌入查询语言的标准,如 ECPG。用于数组片段和类型转换的冒号语法是 PostgreSQL 扩展,因此有冲突。)
+.SS "PROMPTING 提示符"
+.PP
+\fBpsql\fR 使用的提示符可以根据你的喜好客户化。三个变量 PROMPT1,PROMPT2,和 PROMPT3  包含描述提示符的外观的字串和特殊逃逸序列。Prompt 1 是 psql 请求一个新命令时的使用的正常提示符。 Prompt 2 是在一个命令输入期待更多输入时(因为查询没有用一个分号结束或者引号没有关闭)显示的提示符。 Prompt 3 在你运行一个 SQL COPY 命令和等待你在终端上键入记录时使用。
+.PP
+ 相应的提示符变量的值是按字面打印的,除非碰到一个百分号(%)。这时某些其他的文本被替换, 替换为何物取决于下一个字符。已定义的替换是:
+.TP
+\fB%M\fR
+ 数据库服务器主机名全名(带着域名),如果联接是通过 Unix 域套接字进行的就是 [local], 或者如果 Unix 域套接字不是编译的缺省位置,就是 [local:\fI/dir/name\fR]。
+.TP
+\fB%m\fR
+ 数据库服务器的主机名删去第一个点后面的部分剩下的东西。 或者如果联接是通过 Unix 域套接字,就是 [local]。
+.TP
+\fB%>\fR
+ 数据库服务器正在侦听的端口号。
+.TP
+\fB%n\fR
+ 数据库会话的用户名。 (这个值的扩展可能在一个数据库会话过程中因为 \fBSET SESSION AUTHORIZATION\fR 命令而改变。)
+.TP
+\fB%/\fR
+当前数据库名称。
+.TP
+\fB%~\fR
+类似 %/, 但如果数据库是你的缺省数据库输出是"~"  (波浪线(tilde))。
+.TP
+\fB%#\fR
+ 如果会话用户是数据库超级用户,使用 "#",否则用">"。 (这个值的扩展可能在一个数据库会话过程中因为 \fBSET SESSION AUTHORIZATION\fR 命令而改变。)
+.TP
+\fB%R\fR
+ 对于 prompt 1 通常是 =,但是如果是单行模式则是 ^,而如果会话与数据库断开(如果 \connect 失败可能发生)是 !。对于 prompt 2 该序列被 -,*,一个单引号或者一个双引号代替, 这取决于 psql是否等待更多的输入(因为查询没有终止,或着正在一个 /* ... */注释里面,或者因为你在引号里面)。对于 prompt 3 该序列不解释成任何东西。
+.TP
+\fB%x\fR
+ 事务状态:如果不在事务块里,是一个空字串,如果在事务块里,是 *, 如果在一个失败的事务块里是 !,或者无法判断事务状态时为 ?  (比如,因为没有连接)。
+.TP
+\fB%\fIdigits\fB\fR
+ 如果 digits 以 0x 开头, 那么其余字符被解释成一个十六进制数字并且替换为对应(十六进制码)的字符。 如果第一个数字是 0,该字符被解释成一个八进制数字并且替换为对应的(八进制码)的字符。 否则认为是一个十进制数字。
+.TP
+\fB%:\fIname\fB:\fR
+psql变量name的值。参阅 "Variables 变量" 节获取细节。
+.TP
+\fB%`\fIcommand\fB`\fR
+command的输出, 类似于通常的反引号(back-tick)替换。
+.PP
+ 要在提示符里插入百分号,键入%%。缺省提示符等效于 '%/%R%# ' 用于 prompts 1 和 2,以及'>> ' 用于 prompt 3。
+.sp
+.RS
+.B "Note:"
+注意:  这个特性是无耻地从tcsh 里剽窃来的。
+.RE
+.sp
+.SS "COMMAND-LINE EDITING 命令行编辑"
+.PP
+\fBpsql\fR 为了编辑和检索命令行的方便支持 readline 和历史库。 命令历史存放在你的家目录的一个叫 .psql_history 的文件里, 并且当 psql 启动的时候会装载进来。 还支持 Tab 补齐,尽管该补齐逻辑并不是一个 SQL 分析器必备的。 如果因某些原因你不喜欢 tab 补齐,你可以把下面几行放在你的家目录的一个叫 \fI.inputrc\fR 的文件里关闭这个特性:
+.sp
+.nf
+$if psql
+set disable-completion on
+$endif
+.sp
+.fi
+(这不是 psql 的特性, 是 \fBReadline\fR 的。参考它的文档获取更多细节。)
+.SH "ENVIRONMENT 环境"
+.TP
+\fBHOME\fR
+ 初始化文件(.psqlrc)和命令历史文件(\fI.psql_history\fR)的目录。
+.TP
+\fBPAGER\fR
+ 如果查询结果在一页里放不下,那么它们被定向到这个命令。 典型的值是 more 或者 less。 缺省的是平台相关的。我们可以用 \fB\\pset\fR 命令关闭分页器。
+.TP
+\fBPGDATABASE\fR
+ 缺省连接的数据库
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数
+.TP
+\fBPSQL_EDITOR\fR
+.TP
+\fBEDITOR\fR
+.TP
+\fBVISUAL\fR
+\fB\\e\fR 命令使用的编辑器。这些变量是按照上面的顺序检查的;设置最早的最先使用。
+.TP
+\fBSHELL\fR
+\fB\\!\fR 命令执行的命令。
+.TP
+\fBTMPDIR\fR
+ 存储临时文件的目录。缺省是 \fI/tmp\fR。
+.SH "FILES"
+.TP 0.2i
+\(bu
+ 在启动之前,psql 视图读取并 执行来自文件 \fI$HOME/.psqlrc\fR 的命令。 它将用于设置客户端或者服务器的风格(使用 \fB\\set\fR 和 \fBSET\fR 命令)。
+.TP 0.2i
+\(bu
+ 命令行历史存储在 \fI$HOME/.psql_history\fR。
+.SH "NOTES 注意"
+.TP 0.2i
+\(bu
+ 一些 psql的早期版本允许一个单字母的反斜杠命令(元命令)的第一个参数直接跟在命令后面, 而不用空白间隔。出于兼容性原因,这个特性仍然在某些程度上被支持,但是我不准备在这里详细解释,因为我不鼓励这样使用。 不过如果你收到莫名其妙的信息,想想这个用法。例如
+.sp
+.nf
+testdb=> \fB\\foo\fR
+Field separator is "oo".
+.sp
+.fi
+ 可能不是你想要的东西。
+.TP 0.2i
+\(bu
+\fBpsql\fR 只能与同版本的服务器平稳地工作。 这不意味着其他组合会完全失败,但是可能有微小的或者不那么微小的问题。 如果服务器的版本不同,反斜杠命令是特别容易失效的。
+.SH "EXAMPLES 例子"
+.PP
+ 第一个例子演示了如何把一个查询分成多个行进行输入。注意提示符的变化:
+.sp
+.nf
+testdb=> \fBCREATE TABLE my_table (\fR
+testdb(> \fB first integer not null default 0,\fR
+testdb(> \fB second text\fR
+testdb-> \fB);\fR
+CREATE TABLE
+.sp
+.fi
+ 现在再看看表定义:
+.sp
+.nf
+testdb=> \fB\\d my_table\fR
+             Table "my_table"
+ Attribute |  Type   |      Modifier
+-----------+---------+--------------------
+ first     | integer | not null default 0
+ second    | text    |
+.sp
+.fi
+ 把提示符变成更有趣的东西:
+.sp
+.nf
+testdb=> \fB\\set PROMPT1 '%n@%m %~%R%# '\fR
+peter at localhost testdb=>
+.sp
+.fi
+ 假设你用数据填充了表并且想看一眼:
+.sp
+.nf
+peter at localhost testdb=> SELECT * FROM my_table;
+ first | second
+-------+--------
+     1 | one
+     2 | two
+     3 | three
+     4 | four
+(4 rows)
+.sp
+.fi
+ 你可以用 \fB\\pset\fR 命令让这个查询看起来不一样:
+.sp
+.nf
+peter at localhost testdb=> \fB\\pset border 2\fR
+Border style is 2.
+peter at localhost testdb=> \fBSELECT * FROM my_table;\fR
++-------+--------+
+| first | second |
++-------+--------+
+|     1 | one    |
+|     2 | two    |
+|     3 | three  |
+|     4 | four   |
++-------+--------+
+(4 rows)
+
+peter at localhost testdb=> \fB\\pset border 0\fR
+Border style is 0.
+peter at localhost testdb=> \fBSELECT * FROM my_table;\fR
+first second
+----- ------
+    1 one
+    2 two
+    3 three
+    4 four
+(4 rows)
+
+peter at localhost testdb=> \fB\\pset border 1\fR
+Border style is 1.
+peter at localhost testdb=> \fB\\pset format unaligned\fR
+Output format is unaligned.
+peter at localhost testdb=> \fB\\pset fieldsep ","\fR
+Field separator is ",".
+peter at localhost testdb=> \fB\\pset tuples_only\fR
+Showing only tuples.
+peter at localhost testdb=> \fBSELECT second, first FROM my_table;\fR
+one,1
+two,2
+three,3
+four,4
+.sp
+.fi
+ 还可以用短(缩写)命令:
+.sp
+.nf
+peter at localhost testdb=> \fB\\a \\t \\x\fR
+Output format is aligned.
+Tuples only is off.
+Expanded display is on.
+peter at localhost testdb=> \fBSELECT * FROM my_table;\fR
+-[ RECORD 1 ]-
+first  | 1
+second | one
+-[ RECORD 2 ]-
+first  | 2
+second | two
+-[ RECORD 3 ]-
+first  | 3
+second | three
+-[ RECORD 4 ]-
+first  | 4
+second | four
+.sp
+.fi
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/pushd.1 b/src/man1/pushd.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/pushd.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/pwd.1 b/src/man1/pwd.1
new file mode 100644
index 0000000..29e3bce
--- /dev/null
+++ b/src/man1/pwd.1
@@ -0,0 +1,48 @@
+.TH PWD "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+pwd \- 显示出当前/活动目录的名称 
+
+.SH "总览 (SYNOPSIS)"
+.B pwd
+[\fIOPTION\fR]
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+显示出 完整的 当前 活动目录 名称.
+.TP
+\fB\-\-help\fR
+显示 帮助 信息, 然后 退出
+.TP
+\fB\-\-version\fR
+显示 版本 信息, 然后 退出
+
+.SH "报告 BUGS"
+发现的 bug 寄往 <bug-sh-utils at gnu.org>.
+
+.SH "另见 (SEE ALSO)"
+.B Pwd
+的 完整文档 以 Texinfo 手册 的 形式 维护. 如果
+正确 安装了
+.B info
+和
+.B pwd
+文件, 用 命令
+.IP
+.B info pwd
+.PP
+可以 访问 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/quota.1 b/src/man1/quota.1
new file mode 100644
index 0000000..58d564c
--- /dev/null
+++ b/src/man1/quota.1
@@ -0,0 +1,85 @@
+.TH quota 8 "Tue Jun 8 1993"
+.SH NAME
+quota \- 显示磁盘的使用和限额
+.SH "总览 (SYNOPSIS)"
+quota [
+.B -guv | q
+]
+.br
+quota [
+.B -uv | q
+] user
+.br
+quota [
+.B -gv | q
+] group
+.SH "描述 (DESCRIPTION)"
+.B Quota
+显示 用户的 磁盘 使用情况 和 限额. 缺省功能 只显示 用户限额.
+.LP
+.TP
+.B \-g
+显示 用户所在组 的 组限额. 可选项(optional).
+.TP
+.B \-u
+和 缺省情况 一样.
+.TP
+.B \-v
+显示 文件系统上 的 限额, 即使 没有 占用 空间.
+.TP
+.B -q
+简洁的 信息, 只 显示 超出 限额 的 文件系统.
+.LP
+同时指定
+.B \-g
+和
+.B \-u
+既显示 用户限额, 也显示 该用户 的 组限额.
+.LP
+只有 超级用户 可以 使用
+.B \-u
+选项 和 
+.B user
+参数 察看 其他用户 的 限额. 普通用户 可以 使用
+.B \-g
+选项 和
+.B group
+参数 察看 用户所在组 的 限额.
+.LP
+.B \-q
+选项 优先于
+.B \-v
+选项.
+.LP
+.B Quota
+报告 
+.B /etc/fstab
+中 列出的 全部 文件系统 上 的 限额. 如果 文件系统 是 挂载的 NFS, 
+Quota 调用 服务器 上的 rpc.rquotad, 以便 获取 相关信息.
+
+如果
+.B quota
+返回 非零值, 表明 在 某些 文件系统 上 超出了 限额.
+.SH "文件 (FILES)"
+.B quota.user
+位于 文件系统 根目录, 存放 用户限额
+.br
+.B quota.group
+位于 文件系统 根目录, 存放 组限额
+.br
+.B /etc/fstab
+用于 查找 文件系统 的 名称和位置
+.SH "另见 (SEE ALSO)"
+quotactl (2),
+fstab (5),
+edquota (8),
+quotacheck (8),
+quotaon (8),
+repquota (8)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/read.1 b/src/man1/read.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/read.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/readonly.1 b/src/man1/readonly.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/readonly.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/return.1 b/src/man1/return.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/return.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/rgview.1 b/src/man1/rgview.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/rgview.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/rgvim.1 b/src/man1/rgvim.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/rgvim.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/rlogin.1 b/src/man1/rlogin.1
new file mode 100644
index 0000000..d12c972
--- /dev/null
+++ b/src/man1/rlogin.1
@@ -0,0 +1,162 @@
+.\" Copyright (c) 1983, 1990 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"	from: @(#)rlogin.1	6.19 (Berkeley) 7/27/91
+.\"
+.Dd August 15, 1999
+.Dt RLOGIN 1
+.Os "Linux NetKit (0.17)"
+.Sh NAME
+.Nm rlogin
+.Nd 远程注册
+.Sh SYNOPSIS(总览)
+.Ar rlogin
+.Op Fl 8EKLdx
+.Op Fl e Ar char
+.Op Fl l Ar username
+.Ar host
+.Sh DESCRIPTION(描述)
+.Nm Rlogin
+在远程主机
+.Ar host  
+上开始 一个 终端会话.
+.Pp
+本程序 和文档 接受 标准的 伯克利
+.Pa rhosts
+授权.
+选项 如下:
+.Bl -tag -width flag
+.It Fl 8
+.Fl 8
+选项 允许 进行 8 位的 输入 数据 传送; 否则在 远程主机 未使用
+与 ^S/^Q 不同的 控制 字符 之前, 所有的 奇偶 校验位 都会 被清除.
+.It Fl E
+.Fl E
+选项 阻塞(stops) 一些 被识别 为转意 字符 的字符.
+当 使用了
+.Fl 8
+选项时, 这样 可以 提供 完全 透明的 连接.
+.It Fl K
+.Fl K
+选项 关闭 所有的 Kerberos 安全 鉴别.
+.It Fl L
+.Fl L
+选项 允许 rlogin 会话 以 ``litout'' 
+模式 运行(参见
+.Xr tty 4 )
+.It Fl d
+.Fl d
+选项 启动 套接字 调试(参见
+.Xr setsockopt 2 )
+, 在 TCP 类型 的连接中, 套接字 用于 提供 与远程 主机的 通讯.
+.It Fl e
+.Fl e
+选项 允许 用户 指定 转意 字符, 缺省是
+``~''.
+可以 直接 使用 字符, 也可以 使用 八进制值 进行 指定, 八进制 格式为:
+\ennn.
+.It Fl k
+.FL k
+选项 要求 rlogin 在从 远程 接受 许可证时, 使用
+.Ar realm
+中定义的 realm, 而不是 
+.Xr krb_realmofhost  3  
+中定义的 realm.
+.It Fl x
+.Fl x
+选项 使通过 rlogin 会话 进行的 数据
+传送 都要 采用
+.Tn DES
+加密.
+这可能 会影响 响应 时间和
+.Tn CPU
+的利用, 但 提高了 安全性.
+.El
+.Pp
+使用 格式为 ``<escape char>.'' 的一行 可以 断开 与远程 主机 的连接.
+类似的, ``<escape char>^Z'' 这样 的行 可以 延迟
+.Nm rlogin
+会话, ``<escape char><delayed-suspend char(延时字符)>'' 会延迟 rlogin 发送 
+部分, 但允许 远程 主机 输出.
+缺省 情况下, (``~'') 是 转意字符, control-Y (``^Y'') 是 延时字符.
+.Pp
+由于 所有的 回应 都在 远方 发生, 所以
+.Nm rlogin
+是 透明的 (除了延时外).
+通过 使用 ^S/^Q 进行 流量 控制, 即使 满负载的 输入/输出
+也可以 被 正确的 解释 处理.
+.Sh KERBEROS AUTHENTICATION(Kerberos鉴别)
+每个 用户 都应该 在他的 主目录 下的
+.Pa .klogin
+文件中 存放 私人的 授权 列表,
+文件中的 每一行 包含 一个 如下 格式的 Kerberos principal 负责人名:
+.Ar principal.instance at realm  .
+如果 用户 被鉴别 是
+.Pa .klogin 
+中的 principal 之一, 就允许 此帐号 进行 存取 访问.
+如果 没有
+.Pa .klogin
+文件, 就采用
+.Ar accountname. at localrealm
+进行 存取 控制.
+否则 就好像 远程的
+.Xr login  1 
+一样, 需要 用户 提供 用户名 和口令 进行 身份 识别.
+为避免 某些 安全 问题,
+.Pa .klogin
+文件 必须为 远程 用户 拥有.
+.Pp
+如果 Kerberos 鉴别 失败, 在给出 一个 警告 消息 之后, 
+就使用 标准的 Berkeley(伯克利)
+.Nm rlogin .
+.Sh ENVIRONMENT(环境)
+.Nm rlogin 
+使用 如下的 环境变量:
+.Bl -tag -width TERM
+.It Ev TERM
+: 定义 用户的 终端类型.
+.El
+.Sh SEE ALSO(参考)
+.Xr rsh 1 ,
+.Xr kerberos 3 ,
+.Xr krb_sendauth 3 ,
+.Xr krb_realmofhost 3
+.Sh HISTORY(历史)
+.Nm rlogin
+最先 出现在
+.Bx 4.2 中.
+.Sh BUGS(补丁)
+.Nm Rlogin
+在 不远的 将来 会被
+.Xr telnet  1
+代替, 这样 可以 使用 更多的 环境控制.
+.Pp
+
diff --git a/src/man1/rm.1 b/src/man1/rm.1
new file mode 100644
index 0000000..8c6da86
--- /dev/null
+++ b/src/man1/rm.1
@@ -0,0 +1,106 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Chinese version Copyright riser,SCORPIONS, www.linuxforum.net	2000
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+.TH RM 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+rm \- 移除文件或者目录
+
+.SH 总览
+.BI "rm [" options"] "file...
+
+.SH POSIX(Portable Operating System Interface 可移植的操作系统接口) 选项:
+.BI [-fiRr]
+
+.SH GNU 选项 (最短格式):
+.BI  [-dfirvR] [--help] [--version] [--]
+
+.SH 描述
+rm移除每个给定的文件。默认情况下,它不能移除目录。
+但是当给定了-r或者-R选项时,在指定目录之下的整个目录树都会被移除
+(而且对通过‘rm -r’能够移除的目录树深度是没有限制的)。
+当文件路径末端部分只有.和..时会出错
+(因此可用‘rm -r .*’之类来避免这些不愉快的诧异)。
+
+如果给定了-i选项,或者如果一个文件不可写,
+而且标准输入是终端,又没有给定-f选项,那么rm会提
+示用户是否要删除该文件,它写一个问题到stderr并且从stdin读入一个应答。
+如果应答是否定的,该文件将被跳过。
+
+.SH POSIX选项
+.TP
+.BI \-f 
+不作确认提示。不会写出诊断信息。
+如果错误只是文件不存在,那么不会生成一个状态返回的错误。
+.TP
+.BI -i 进行确认提示。(在同时给定了-f和-i选项时,列在最后的生效。)
+.TP
+.BI -r
+或者
+.BI -R
+递归地移除目录树。
+
+.SH SVID(System V Interface Definition)细节
+System V接口定义(SVID)禁止移除正在执行的可执行二进制文件的最后一个链接。
+
+.SHGNU细节
+GNU的实现(在fileutils-3.16中)会因为可移除的层次深度的上限而招致损坏。
+(如果确实必要,可使用‘deltree’工具来移除非常深的目录树。)
+
+.SH GNU选项
+.TP
+.BI "\-d,\-\-directory"
+用unlink(2)来替代rmdir(2)移除目录,而且不要求目录为空
+移除目录使用的方式是unlink(2),而非rmdir(2),
+且在试图unlink目录之前不要求其为空。
+这仅在你有合适权限时才能生效。
+因为unlink一个目录会导致在删除目录下的文件非关联化,
+因此聪明的方法是在执行此之后fsck(8)文件系统。
+.TP
+.BI "\-f,\-\-force"
+忽略不存在的文件,并且从不向用户提示。
+.TP
+.BI "\-i,\-\-interactive"
+提示是否移除每个文件。如果回答是否定的,文件将被跳过。
+.TP
+.BI "\-r,\-R,\-\-recursive"
+递归地移除目录中的内容。
+.TP
+.BI "\-v,\-\-verbose"
+在移除每个文件之前打印其名称。
+
+.SH GNU 标准选项
+.TP
+.BI "\-\-help"
+在标准输出上打印用法信息,并且以成功状态退出。
+.TP
+.BI "\-\-version"
+在标准输出上打印版本信息,然后以成功状态退出。
+.TP
+.BI "\-\-"
+终止选项列表
+
+.SH 环境变量
+变量LANG,LC_ALL,LC_COLLATE,LC_CTYPE和LC_MESSAGES取其通常的含义。
+
+.SH 适应规则
+POSIX 1003.2,关于文件层次深度的限制除外。
+
+.SH 备注
+本页介绍了包括在fileutils-3.16包中的rm;其他版本的可能会有细微的差别。
+请把您的修正和增补建议发邮件到aeb at cwi.nl+aw at mail1.bet1.puv.firagnar at lightside.ddns.org。
+报告程序中的bug请发到
+fileutils-bugs at gnu.ai.mit.edu。
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.TP 
+校对:
+Scorpions <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/rmdir.1 b/src/man1/rmdir.1
new file mode 100644
index 0000000..44cd81e
--- /dev/null
+++ b/src/man1/rmdir.1
@@ -0,0 +1,64 @@
+.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\" Chinese version Copyright Surran,  www.linuxforum.net
+.\" This file may be copied under the conditions described
+.\" in the LDP GENERAL PUBLIC LICENSE, Version 1, September 1998
+.\" that should have been distributed together with this file.
+.\"
+
+.TH RMDIR 1 "24 July 1993" "Linux" "Linux Programmer's Manual"
+.SH NAME
+rmdir \-删除空目录
+.SH 总览
+.BI rmdir [ options ]  directory...
+.sp 
+POSIX 选项:
+.B "[\-p]"
+.sp
+.SH "GNU 选项(缩写)":
+.B "[-p] [--ignore-fail-on-non-empty] [--help] [--version] [--]"
+.SH 描述
+.B rmdir
+删除空目录。如果所给出的目录不为空,则报错
+.SH POSIX 选项
+.TP
+.B "\-p"
+如果目录由多个路径名组成,从最后一个路径名开始依次删除,
+直到所有的路径名都被删完。例如:命令'rmdir -p a/b/c'按
+照'rmdir /a/b/c'; 'rmdir a/b'; 'rmdir a'的顺序删除目录。
+.SH GNU 选项
+.TP
+.B "\-\-ignore\-fail\-on\-non\-empty"
+通常,rmdir拒绝删除非空目录。
+这个选项将使命令忽略非空目录而进行删除操作。
+(更新见fileutils-4.0)
+.TP
+.B "\-p, \-\-parents"
+同上。
+.SH GNU 标准选项
+.TP
+.B "\-\-help"
+在标准输出上显示使用信息并顺利退出。
+.TP
+.B "\-\-version"
+在标准输出上显示版本信息并顺利退出
+.TP
+.B "\-\-"
+终端选项列表。
+.SH 环境变量
+变量LANG,LC_ALL,LC_CTYPE,LC_MESSAGES按常规定义。
+.SH 遵循
+POSIX 1003.2
+.SH 应用举例
+命令'rmdir foo'将删除空目录foo。要删除一个非空目录,
+并且包括其下属所有内容,可以使用命令'rm -rfoo'。
+.SH 注意
+本文出自 fileutils-4.0,其他版本肯会有微小差别。任
+何添加或纠错意见请寄:aeb at cwi.nl,程序Bugs
+请告知:fileutils-bugs at gnu.ai.mit.edu
+
+.SH "[中文版维护人]"
+.B Surran <email>
+.SH "[中文版最新更新]"
+2000/10/19
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/rvi.1 b/src/man1/rvi.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/rvi.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/rview.1 b/src/man1/rview.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/rview.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/rvim.1 b/src/man1/rvim.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/rvim.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/scp.1 b/src/man1/scp.1
new file mode 100644
index 0000000..f0439dc
--- /dev/null
+++ b/src/man1/scp.1
@@ -0,0 +1,165 @@
+.\"  -*- nroff -*-
+.\"
+.\" scp.1
+.\"
+.\" Author: Tatu Ylonen <ylo at cs.hut.fi>
+.\"
+.\" Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
+.\"                    All rights reserved
+.\"
+.\" Created: Sun May  7 00:14:37 1995 ylo
+.\"
+.\" $OpenBSD: scp.1,v 1.27 2003/03/28 10:11:43 jmc Exp $
+.\"
+.Dd September 25, 1999
+.Dt SCP 1
+.Os
+.Sh NAME
+.Nm scp
+.Nd 安全复制(远程文件复制程序)
+.Sh 总览 SYNOPSIS
+.Nm scp
+.Bk -words
+.Op Fl pqrvBC1246
+.Op Fl F Ar ssh_config
+.Op Fl S Ar program
+.Op Fl P Ar port
+.Op Fl c Ar cipher
+.Op Fl i Ar identity_file
+.Op Fl l Ar limit
+.Op Fl o Ar ssh_option
+.Sm off
+.Oo
+.Op Ar user@
+.Ar host1 No :
+.Oc Ns Ar file1
+.Sm on
+.Op Ar ...
+.Sm off
+.Oo
+.Op Ar user@
+.Ar host2 No :
+.Oc Ar file2
+.Sm on
+.Ek
+.Sh 描述 DESCRIPTION
+.Nm
+在网络中的主机间进行文件复制。
+它用
+.Xr ssh 1
+来传输及验证数据,提供与
+.Xr ssh 1 相同的安全保护。
+它不象
+.Xr rcp 1 ,
+.Nm
+会根据需要询问口令。
+.Pp
+在任何文件名中都可以包含主机名和用户名,用来指定从/向该主机复制此文件。
+Copies between two remote hosts are permitted.
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl c Ar cipher
+Selects the cipher to use for encrypting the data transfer.
+This option is directly passed to
+.Xr ssh 1 .
+.It Fl i Ar identity_file
+Selects the file from which the identity (private key) for RSA
+authentication is read.
+This option is directly passed to
+.Xr ssh 1 .
+.It Fl l Ar limit
+Limits the used bandwidth, specified in Kbit/s.
+.It Fl p
+Preserves modification times, access times, and modes from the
+original file.
+.It Fl r
+递归复制整个目录。
+.It Fl v
+详细模式。该选项使
+.Nm
+和
+.Xr ssh 1
+打印出关于运行情况的调试信息。在进行调试连接、验证和配置问题时,这会很有用的
+.It Fl B
+用批模式(避免重复询问口令)。
+.It Fl q
+Disables the progress meter.
+.It Fl C
+允许压缩。向
+.Xr ssh 1
+传递
+.Fl C
+标志以允许压缩。
+.It Fl F Ar ssh_config
+Specifies an alternative
+per-user configuration file for
+.Nm ssh .
+This option is directly passed to
+.Xr ssh 1 .
+.It Fl P Ar port
+Specifies the port to connect to on the remote host.
+Note that this option is written with a capital
+.Sq P ,
+because
+.Fl p
+is already reserved for preserving the times and modes of the file in
+.Xr rcp 1 .
+.It Fl S Ar program
+Name of
+.Ar program
+to use for the encrypted connection.
+The program must understand
+.Xr ssh 1
+options.
+.It Fl o Ar ssh_option
+Can be used to pass options to
+.Nm ssh
+in the format used in
+.Xr ssh_config 5 .
+This is useful for specifying options
+for which there is no separate
+.Nm scp
+command-line flag.
+.It Fl 1
+Forces
+.Nm
+to use protocol 1.
+.It Fl 2
+Forces
+.Nm
+to use protocol 2.
+.It Fl 4
+Forces
+.Nm
+to use IPv4 addresses only.
+.It Fl 6
+Forces
+.Nm
+to use IPv6 addresses only.
+.El
+.Sh DIAGNOSTICS
+.Nm
+exits with 0 on success or >0 if an error occurred.
+.Sh 作者 AUTHORS
+Timo Rinne <tri at iki.fi> 和 Tatu Ylonen <ylo at cs.hut.fi>
+.Sh 历史 HISTORY
+.Nm
+基于University of California BSD 的
+.Xr rcp 1
+源代码
+.Sh 参见 SEE ALSO
+.Xr rcp 1 ,
+.Xr sftp 1 ,
+.Xr ssh 1 ,
+.Xr ssh-add 1 ,
+.Xr ssh-agent 1 ,
+.Xr ssh-keygen 1 ,
+.Xr ssh_config 5 ,
+.Xr sshd 8
+.Sh "[中文版维护人]"
+meaculpa <meaculpa at 21cn.com>
+.Sh "[中文版最新更新]"
+2000/12/08
+.Sh "《中国linux论坛man手册页翻译计划》:"
+http://cmpp.linuxforum.net 
diff --git a/src/man1/set.1 b/src/man1/set.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/set.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/setleds.1 b/src/man1/setleds.1
new file mode 100644
index 0000000..212c526
--- /dev/null
+++ b/src/man1/setleds.1
@@ -0,0 +1,79 @@
+.TH SETLEDS 1 "09 Oct 1997" "Console tools" "Linux User's Manual"
+
+.SH NAME
+setleds \- 设置键盘 led 标志
+
+.SH "总览 (SYNOPSIS)"
+.B setleds
+.BI [ "-v" "] [" "-L" "] [" "-D" "] [" "-F" ]
+.BI [ {+|-}num "] [" {+|-}caps "] [" {+|-}scroll ]
+.IX "setleds 命令" "" "\fLsetleds\fR 命令"  
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.B setleds
+显示 改变 当前 虚拟终端 的 led 标志 (就是 NumLock, CapsLock 和
+ScrollLock)。 如果 没有 参数
+.B setleds
+显示 当前设置。 如果 有参数, 它 设置 或 清除 相应的 标志 (不改变
+其它的 标志)。 如果有
+.B \-v
+选项, 显示 修改前后 的 状态。
+
+.SH "选项 (OPTIONS)"
+.TP
+.I \-F
+这是 默认 选项。 它 只改变 虚拟 终端 的 标志 (它的 状态 可能 同 键盘的
+led 一样)。
+.TP
+.I \-D
+同时 改变 虚拟 终端 的 标志 和 默认 设置 (这样 之后 恢复 默认 设置 时
+不会 影响 现在的 更改)。 这对 那些 想 让 NumLock 总是 开着 的人 很有用。
+.TP
+.I \-L
+不改变 虚拟终端 的 状态, 只改变 键盘的 led。 这样 led 就和 虚拟终端的
+标志 不一样了 (它 只显示 它自己 的 状态)。
+.B "setleds \-L"
+命令(没有 更多的 参数了) 会 再次 改变 led 使它 能 反映 虚拟终端的 状态。
+.TP
+.I \-num \+num
+清除 或者 设置 NumLock。 (现在, NumLock 的 状态 只影响 小键盘,
+NumLock 设置 相当于 NumLock 键)
+.TP
+.I \-caps \+caps
+清除 或者 设置 CapsLock。
+(现在, 当 用于 字符 时 CapsLock 设置 相当于 Shift 键。
+CapsLock 设置 相当于 CapsLock 键)
+.TP
+.I \-scroll \+scroll
+清除 或者 设置 ScrollLock。
+(现在, 按 ScrollLock 键 (或者 ^S/^Q) 会停止/开始终端输出。)
+
+.SH "例子 (EXAMPLE)"
+.PP
+可以 在 /etc/rc 中用
+.B setleds
+来 设置 NumLock 的 初始 和 缺省 状态, 比如
+.PP
+.RS
+INITTY=/dev/tty[1\-8]
+.br
+for tty in $INITTY; do
+.RS
+setleds \-D \+num < $tty
+.RE
+done
+.RE
+
+.SH "错误 (BUGS)"
+在 键盘 应用 模式 NumLock 键 并不反映 NumLock 标志的 状态。
+
+.SH "参见 (SEE ALSO)"
+.BR loadkeys (1).
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/9/13
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/setmetamode.1 b/src/man1/setmetamode.1
new file mode 100644
index 0000000..94ae95c
--- /dev/null
+++ b/src/man1/setmetamode.1
@@ -0,0 +1,47 @@
+.TH SETMETAMODE 1 "09 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+setmetamode \- define the keyboard meta key handling
+
+.SH 总览
+.BI "setmetamode [ " meta | bit | metabit " | " esc | prefix | escprefix " ]"
+.IX "setmetamode command" "" "\fLsetmetamode\fR command"  
+
+.SH 描述
+.PP
+没有参数时, 
+.B setmetamode
+将打印当前 Meta 键模式; 有参数时, 设置所指出的 Meta 键模式.
+.LP
+The Meta key mode is specific for each VT (and the VT
+corresponding to stdin is used).
+
+.SH 选项
+.TP
+.I esc prefix escprefix
+The Meta key sends an Escape prefix.
+.TP
+.I meta bit metabit
+The Meta key sets the high order bit of the character.
+
+.SH 范例
+
+可以用
+.B setmetamode
+在 
+.I /etc/rc
+脚本中定义 Meta 键模式的初始状态. 例如, 可以如下设置: 
+.RS
+INITTY=/dev/tty[1\-8]
+.br
+for tty in $INITTY; do
+.RS
+setmetamode escprefix < $tty
+.RE
+done
+.RE
+
+.SH "另见"
+.BR loadkeys (1).
+
+
diff --git a/src/man1/sh.1 b/src/man1/sh.1
new file mode 100644
index 0000000..cc32406
--- /dev/null
+++ b/src/man1/sh.1
@@ -0,0 +1 @@
+.so man1/bash.1
diff --git a/src/man1/shift.1 b/src/man1/shift.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/shift.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/shopt.1 b/src/man1/shopt.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/shopt.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/showfont.1 b/src/man1/showfont.1
new file mode 100644
index 0000000..a36dfc9
--- /dev/null
+++ b/src/man1/showfont.1
@@ -0,0 +1,23 @@
+.TH SHOWFONT 1 "28 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+showfont \- 展示当前"显示屏-字体 映射"中的所有字符.
+
+.SH 总览
+.B showfont
+
+.SH 描述
+.B showfont
+利用8-bit控制台模式的
+.I Application Charset Map(应用字符集映射)
+中一些连续的开关, 以当前字体在屏幕上展示所有的256个或512个字符.
+
+.SH "另见"
+.BR consolechars (8).
+
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.B 2001/02/24
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/showkey.1 b/src/man1/showkey.1
new file mode 100644
index 0000000..1226618
--- /dev/null
+++ b/src/man1/showkey.1
@@ -0,0 +1,102 @@
+.TH SHOWKEY 1 "09 Oct 1997" "Console tools" "Linux User's Manual"
+
+.SH NAME
+showkey \- 检查来自键盘的扫描码和键盘码
+
+.SH "总览 (SYNOPSIS)"
+.BI "showkey [ -[" hVskm "] | " --help " | " --version " | " --scancodes
+.BI "| " --keycodes " | " --keymap " ] [ " -t " N | " --timeout= "N ]"
+.IX "showkey command" "" "\fLshowkey\fR command"  
+
+.SH "描述 (DESCRIPTION)"
+.PP
+按下/松开 任一个 键 时, 
+.B showkey
+在 标准输出 显示 对应的 扫描码(scan code), 键盘码(keycode), 或者 字符值. 
+如果 连续 10 秒钟 没发生 按下/松开 按键 事件 (该值 可用
+.I --timeout
+或 
+.I -t
+设置), 本程序 自动 结束. 来自 其他进程 的 某些 信号 也可以 结束 程序,
+例如 SIGTERM.
+
+.B showkey
+有 三种 操作模式, 显示 扫描码, 键盘码, 以及 测试 键盘映射(keymap),
+可以 通过 命令行选项 选择 操作模式.
+
+.SH "命令 (COMMAND)"
+.TP
+.I \-h, \-\-help
+.B showkey
+在 标准错误 上 显示 版本号, 简短 的 用法, 然后 结束.
+
+.TP
+.I \-V, \-\-version
+.B showkey
+在 标准错误 上 显示 版本号, 然后 结束.
+
+.TP
+.I \-s, \-\-scancodes
+显示 扫描码.
+
+在 这个模式 下,
+.B showkey
+以 十六进制数 形式 显示 来自 键盘 的 每个 字节. 如果 两个 字节 间隔
+达到 0.1 秒, 或者 接收缓冲 已满, showkey 就 输出 一个 换行符.
+可以 用它 大致 确定 某个键 按下 时, 键盘 输出 什么 字节序列.
+扫描码模式 主要 用来 调试 键盘驱动程序, 或者 其他 类似的 低层 接口.
+终端用户 对它 不太有 兴趣.
+
+.TP
+.I \-k, \-\-keycodes
+显示 键盘码. 这是 缺省模式.
+
+在 这个模式 下,
+.B showkey
+显示 每个键 按下 或 松开 时 对应的 键盘码.
+键盘码 是 内核 分配给 每个 物理 按键 的 数值. 无论 键盘 输出 单个 还是
+多个 扫描码, 每个 按键 只能 对应 一个 键盘码. 使用 这个模式, 当 用户 制作
+自己的 键盘映射文件 时,
+.B showkey
+能够 查出 所需的 数值.
+
+.TP
+.I \-m, \-\-keymap
+显示 键盘映射.
+
+在 这个模式 下,
+.B showkey
+显示 内核 根据 当前 键盘映射表 翻译 出来 的 字符.
+它 可能 对 安装程序 的 作者 有用, 允许 用户 在 确认 安装 前 测试 新的 键盘.
+
+.SH "选项 (OPTION)"
+.TP
+.I \-t N,  \-\-timeout=N
+这个选项 用于 修改 超时值 (单位为秒), 取代 预设的 10 秒.
+
+.SH "作者 (AUTHOR)"
+.B Showkey
+是 Risto Kankkunen 为 kbd-0.81 开发的.
+.PP
+后来 Yann Dirson <dirson at debian.org> 做了 扩展, 使它 能够 支持
+.I --keymap
+命令 和
+.I --timeout
+选项.
+
+.SH BUGS
+.I --keymap
+模式 应该 报告 动作键 (action key) 能够 执行 什么 动作, 而不是
+执行 这些 动作.
+
+.SH "另见 (SEE ALSO)"
+.BR loadkeys (1),
+.BR dumpkeys (1),
+.BR keymaps (5).
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/size.1 b/src/man1/size.1
new file mode 100644
index 0000000..7d08d40
--- /dev/null
+++ b/src/man1/size.1
@@ -0,0 +1,163 @@
+.\" Copyright (c) 1991 Free Software Foundation
+.\" See section COPYING for conditions for redistribution
+.TH size 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.de BP
+.sp
+.ti \-.2i
+\(**
+..
+
+.SH NAME
+size \- 列出段节大小和总共大小
+
+.SH "总览 (SYNOPSIS)"
+.hy 0
+.na
+.TP
+.B size
+.RB "[\|" \-A \||\| \-B \||\| \c
+.BI "\-\-format=" compatibility\c
+\&\|]
+.RB "[\|" \-\-help "\|]" 
+.RB "[\|" \-d \||\| \-o \||\| \-x\c
+\||\|\c
+.BI "\-\-radix=" number\c
+\&\|]
+.RB "[\|" \c
+.BI "\-\-target=" bfdname\c
+\&\|]
+.RB "[\|" \-V \||\| \-\-version "\|]"  
+.I objfile\c
+\&.\|.\|.
+.ad b
+.hy 1
+
+.SH "描述 (DESCRIPTION)"
+GNU 的 \c
+.B size\c
+\& 程序 列出 参数列表
+.I objfile
+中, 各 目标文件(object) 或 存档库文件(archive)
+的 段节(section)大小 \(em\& 以及 总共大小.
+默认情况下, 对 每个 目标文件 或 存档库中的 每个模块 产生 一行 输出.
+
+.SH "选项 (OPTIONS)"
+.TP
+.B \-A
+.TP
+.B \-B
+.TP
+.BI "\-\-format " "compatibility"
+使用 这几个 选项, 你 可以 让 GNU
+.B size
+的 输出效果 类似于
+\& System V
+.B size
+\& (使用 `\|\c
+.B \-A\c
+\|',
+或 `\|\c
+.B \-\-format=sysv\c
+\|'), 或 Berkeley 
+.B size\c
+\& (使用 `\|\c
+.B \-B\c
+\|', 或 `\|\c
+.B \-\-format=berkeley\c
+\|'). 默认情况下 是 类似于 Berkeley 的 单行格式.  
+
+.TP
+.B \-\-help
+简述 参数和选项.
+
+.TP
+.B \-d
+.TP
+.B \-o
+.TP
+.B \-x
+.TP
+.BI "\-\-radix " "number"
+使用 这几个 选项, 你 可以 让 各个 段节 的 大小 以 十进制 (`\|\c
+.B \-d\c
+\|', 或 `\|\c
+.B \-\-radix 10\c
+\|'); 八进制
+(`\|\c
+.B \-o\c
+\|', 或 `\|\c
+.B \-\-radix 8\c
+\|'); 或 十六进制 (`\|\c
+.B \-x\c
+\|', 或
+`\|\c
+.B \-\-radix 16\c
+\|') 数字 的 格式 显示. `\|\c
+.B \-\-radix \c
+.I number\c
+\&\c
+\|' 只支持 三个数值参数 (8, 10, 16). 总共大小 以 两种进制 给出; `\|\c
+.B \-d\c
+\|' 或 `\|\c
+.B \-x\c
+\|' 的 十进制 和 十六进制 输出, 或 `\|\c
+.B \-o\c
+\|' 的 八进制 和 十六进制 输出.
+
+.TP
+.BI "\-\-target " "bfdname"
+你 可以 通过 参数
+.I bfdname
+指定
+.I objfile
+的 目标格式. 这个选项 可能 不那么 必要; 因为
+.I size
+能够 自动 识别 许多 格式. 参见 
+.BR objdump(1) 
+列出 的 有效格式.
+
+.TP
+.B \-V
+.TP
+.B \-\-version
+显示 \c
+.B size\c
+\& 的 版本信息.
+
+.SH "另见 (SEE ALSO)"
+.BR info 
+的
+.RB "`\|" binutils "\|'" 
+项; 
+.IR "The GNU Binary Utilities" ,
+ Roland H. Pesch (October 1991); 
+.BR ar "(" 1 "),"
+.BR objdump ( 1 ).
+
+.SH "版权 (COPYING)"
+Copyright (c) 1991 Free Software Foundation, Inc.
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2004/02/22
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
+
+
diff --git a/src/man1/sleep.1 b/src/man1/sleep.1
new file mode 100644
index 0000000..21f467c
--- /dev/null
+++ b/src/man1/sleep.1
@@ -0,0 +1,43 @@
+.TH SLEEP "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+sleep \- 延迟指定数量的时间
+.SH "总览 (SYNOPSIS)"
+.B sleep
+[\fIOPTION\fR]...\fI NUMBER\fR[\fISUFFIX\fR]
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+暂停 NUMBER 秒. SUFFIX 如果 是 s, 指 暂停 的 秒数, m 指 分钟, h 指 小时,
+d 代表 天数.
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B sleep
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B sleep
+程序, 使用 命令
+.IP
+.B info sleep
+.PP
+能够 访问到 完整 的 手册.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/smbclient.1 b/src/man1/smbclient.1
new file mode 100644
index 0000000..87bfe4d
--- /dev/null
+++ b/src/man1/smbclient.1
@@ -0,0 +1,542 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBCLIENT" 1 "" "" ""
+.SH NAME
+smbclient \- 类似FTP操作方式的访问SMB/CIFS服务器资源的客户端
+.SH "总览 SYNOPSIS"
+
+
+\fBsmbclient\fR {servicename} [password] [-b <buffer size>] [-d debuglevel] [-D Directory] [-U username] [-W workgroup] [-M <netbios name>] [-m maxprotocol] [-A authfile] [-N] [-l logfile] [-L <netbios name>] [-I destinationIP] [-E] [-c <command string>] [-i scope] [-O <socket options>] [-p port] [-R <name resolve order>] [-s <smb config file>] [-T<c|x>IXFqgbNan] [-k]
+
+.SH "描述 DESCRIPTION"
+
+.PP
+此程序是\fBSamba\fR(7)套件的一部分。
+
+.PP
+\fBsmbclient\fR 是个可以和SMB/CIFS服务器“交谈”的客户端程序。它提供了类似FTP程序(参见\fBftp\fR (1))的用户界面。它可以完成的操作包括象从服务器下载文件到本地,上传本地文件到服务器及在服务器上查找目录信息等。
+
+.SH "选项 OPTIONS"
+
+.TP
+servicename
+
+servicename就是你要使用的服务名称。服务名使用\fI//server/service\fR这样的形式,其中\fIserver \fR 是提供服务的SMB/CIFS服务器的NetBIOS名字,而\fIservice\fR 是可获得服务资源的名称。所以如果要联接服务器"smbserver"上的"printer"服务的话,应该使用这样的服务名称:\fI//smbserver/printer \fR
+
+注意服务名不使用服务器的IP(或DNS)主机名,而应该用NetBIOS名,而它可能与服务器的IP主机名相同当然也可能不相同。
+
+服务器名是根据\fBsmbclient\fR使用的\fI-R\fR 参数或者\fBsmb.conf\fR(5)配置文件中的名称解析顺序参数来解析的。名称解析参数使管理员可以控制名称解析的顺序和方法。
+
+.TP
+password
+
+用password指定访问服务时所需的口令。如果使用了这个选项,就假定使用了\fI-N\fR(suppress password prompt)参数,在执行过程中不出现口令提示。
+
+口令没有默认值。如果在命令行上没有提供口令(或者使用这个参数,或者在\fI-U-fR参数中指定),并且也没有使用\fI-N\fR选项,那么即使需要的服务项不要求口令,程序也会提供要用户输入一个口令。(如果服务不需要口令,只要简单地打个回车就向服务器回应了一个空口令)
+
+ 注意:有些服务器(包括OS/2和Windows for Workgroups)会强调使用大写口令,它们会拒绝小写或者大小写混合的口令。
+
+在脚本中使用口令要小心。(可能有安全问题嘛!)
+
+.TP
+-R <name resolve order>
+通过指定这个选项让Samba套件中的程序决定使用怎样的名字解析服务及其次序来解决主机名和IP的对应。这个选项以一个以空格分隔的不同的名称解析方法为选项值。
+
+可选值是:“lmhosts”,“host”,“wins”和“bcast”。这些选项使名字解析按以下的方法来进行:
+
+\fBlmhosts\fR: 向Samba的lmhosts文件查询IP地址。If the line in lmhosts has no name type attached to the NetBIOS name (see the \fBlmhosts\fR(5) for details) then any name type matches for lookup.
+
+\fBhost\fR: 用标准的名字到IP地址解析方法:系统\fI/etc/hosts\fR文件,NIS或DNS查询。如何使用这个名字解析由系统决定。举例来说,在IRIX或者Solaris系统中,\fI/etc/nsswitch.conf\fR文件会处理这些问题。 Note that this method is only used if the NetBIOS name type being queried is the 0x20 (server) name type, otherwise it is ignored.
+
+\fBwins\fR: 用配置文件中\fIwins server\fR选项列出的地址来查询名字。如果没有指定WINS服务器的话	会略过这种方法。
+
+\fBbcast\fR: 向配置文件中\fIinterfaces\fR参数列出的每个已知本地接口进行广播来进行查询。这是最不可靠的名字解析方法,因为它要求目标主机在本地子网内。
+
+如果不使用这个参数的话,将按 \fBsmb.conf\fR(5)配置文件中(name resolve order)参数指定的次序来进行名字解析。
+
+默认的解析次序是lmhosts,host,wins,bcast,在不使用这个参数或者没有在\fBsmb.conf\fR(5)配置文件中设定\fIname resolve order \fR参数的情况下将使用这样的次序进行解析。
+
+.TP
+-M NetBIOS name
+使用这个选项可以让你以“WinPopup” 协议向其它计算机发送信息。一旦联接成功你就可以发送信息了,结束时可以按^D(Ctl-D).
+
+如果接受方计算机也正在运行WinPopup的话,用户会收到发送的信息并且系统可能会鸣叫一声。如果对方并没有运行WinPopup的话信息就被丢弃,而不会发出出错信息。
+
+如果发送的信息超过1600字节的话会自动被截断,因为这是此协议规定的极限。
+
+这里有个很有用的小技巧,通过\fBsmbclient\fR,用cat处理信息,例如:
+
+\fB cat mymessage.txt | smbclient -M FRED \fR 将会把 \fImymessage.txt\fR 中的信息发送给主机 FRED.
+
+你也许会发现\fI-U\fR和\fI-I\fR选项很有用,因为它们允许你控制信息的源地址和目的地址部分。
+
+参见\fBsmb.conf\fR(5)配置文件中的\fImessage command\fR参数获得如何在Samba中处理新进的WinPopup消息的详细描述。
+
+\fB注意\fR:如果你总是要用你的WfWg PC的WinPopup来接收消息的话可以在你的Windows机器中把它拷到“启动”中。
+
+.TP
+-p port
+联接服务器所用的TCP端口号。标准(众所周知)的SMB/CIFS服务器TCP端口是139,当然也是默认值。
+
+.TP
+-h|--help
+打印出命令行帮助信息。
+
+
+.TP
+-I IP-address
+指定要联接的服务器IP地址。当然格式应该是“a.b.c.d”。
+
+通常client会使用上面介绍过的\fIname resolve order\fR参数中描述的NetBIOS名字解析机制通过查询尝试查找一个已命名的SMB/CIFS服务器。使用这个参数会强制客户端程序采用指定的IP地址而忽略要联接的服务资源的NetBIOS名部分。
+
+这个参数并没有默认值。如果不指定的话程序会用上面说的方法来自动检测。
+
+.TP
+-E
+当使用了这个参数后,程序会把信息写到标准错误流(stderr)而不是标准输入流中。
+
+默认情况下,程序会把信息写入标准输入中 - 典型的例子是用户的tty。
+
+.TP
+-L
+此选项允许你查看服务器上可以获得的服务资源。使用\fBsmbclient -L host\fR 命令会显示一份列表。如果你的NetBIOS名与TCP/IP域名不匹配或者要在其它网络上查找主机时,\fI-I \fR  选项会非常有用。
+
+.TP
+-t terminal code
+用这个选项告诉\fBsmbclient\fR怎样解释从远程服务器上传来的文件名。通常,UNIX系统对亚洲多字节的语言的实现与SMB/CIFS服务器使用的字符集不同(例如用\fBEUC\fR代替\fB SJIS\fR)。设置这个参数可以让\fBsmbclient\fR 在UNIX文件名与SMB文件名之间进行正确的转换。不过,这个选项还没有经过严格的测试,所以可能会有些问题。
+
+终端编码包含CWsjis, CWeuc, CWjis7, CWjis8, CWjunet, CWhex, CWcap. 当然这个列表并不完整,要获取完整列表请查看samba 源码。
+
+.TP
+-b buffersize
+在对服务器进行上/下传文件时可以用这个选项来改变传输缓冲大小。默认值是65520个字节。当从一个Win9x的服务器上进行文件传输时,把这个值设为稍小一点的值(例如1200字节)可以得到一些速度提升。
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-s <configuration file>
+指定的这个文件包含服务器需要的配置详细信息。文件中的信息包含针对服务器的信息,比如使用什么printcap文件,还有所有服务器提供的服务的描述。参见\fIsmb.conf\fR来获得更多信息。默认的配置文件名是在编译时指定的。
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR 调试等级是个从0到10的整数。参数未指定时默认值为0。
+
+如果这个值越高,越多关于服务器的详细活动信息将被记录到文件中。在0调试级时,只记录紧急错误和严重警告。对于平日的运行服务,1调试级是个合理的等级,它只产生小量的关于执行操作的信息。
+
+1以上的调试级将产生相当多的记录数据,并且只在解决问题时才有用。3以上的调试级只被设计为让开发者使用并会产生极大数量的记录数据,而且其中很多部分非常难以理解。
+
+注意在此使用这个参数将越过在\fIsmb.conf\fR (5)文件中的\fIlog level\fR参数。
+
+.TP
+-l|--logfile=logbasename
+指定一个记录和调试的文件名。文件会被添加\fB.client\fR扩展名。记录文件无法被客户端删除。
+
+.TP
+-N
+如果指定了这个选项,就会省略通常的口令提示。当访问无需口令的服务资源时它很有用。
+
+除非在命令行上输入了口令或者使用了上述这个选项,否则用户将被提示要求输入一个口令。
+
+.TP
+-k
+Try to authenticate with kerberos\&. Only useful in an Active Directory environment\&.
+
+
+.TP
+-A|--authfile=filename
+This option allows you to specify a file from which to read the username and password used in the connection\&. The format of the file is
+
+
+.nf
+
+username = <value>
+password = <value>
+domain   = <value>
+.fi
+
+
+Make certain that the permissions on the file restrict access from unwanted users\&.
+
+
+.TP
+-U|--user=username[%password]
+这个参数指定程序联接时使用的用户名或者用户名和密码
+
+如果没指定%password,将提示用户输入。程序会使用环境变量USER或LOGNAME,如果任何一个存在就会被转换为大写。如果既没有用户名也不存在环境变量的话,将使用\fBGUEST\fR作为用户名。
+
+A third option is to use a credentials file which contains the plaintext of the username and password. This option is mainly provided for scripts where the admin does not wish to pass the credentials on the command line or via environment variables. If this method is used, make certain that the permissions on the file restrict access from unwanted users. See the \fI-A\fR for more details.
+
+在脚本中包含口令或者使用PASSWD环境变量时要小心。而且在很多系统中,运行的命令行可以通过\fBps\fR命令来查看,所以让\fBrpcclient\fR提示输入口令并直接键入会比较安全。
+
+.TP
+-n <primary NetBIOS name>
+使用这个选项让你越过机器的主机名而使用你要用的NetBIOS名。这样作和设置\fIsmb.conf\fR文件中的\fInetbios name\fR选项作用相同。但是,命令行设置比配置文件中的设置优先级高。
+
+.TP
+-i <scope>
+这个参数指定一个产生NetBIOS名字时\fBnmblookup\fR用来通信所需要的NetBIOS范围。对于NetBIOS范围这个概念,可以参见rfc1001.txt和rfc1002.txt这两个文件中的详细定义。实际上这个NetBIOS范围的概念\fB很少\fR被用到,仅当你作为负责整个NetBIOS通信的管理员时才要设置。
+
+.TP
+-W|--workgroup=domain
+设置用户名的SMB域。这个选项越过了smb.conf配置文件中的默认域。如果指定的域与服务器NetBIOS名相同,会使得用户使用服务器本地安全管理local SAM来登录(与域SAM相反).
+
+.TP
+-O socket options
+TCP套接字选项用来在客户端设定套接字方面的功能。参见\fIsmb.conf\fR(5)手册页中的socket options参数获得合法的选项列表。
+
+.TP
+-T tar options
+我们可以用smbclient来对位于SMB/CIFS共享资源上的所有文件建立兼容\fBtar(1) \fR 格式的备份。可使用的tar选项是以下这些: 
+
+\fIc\fR - 在unix系统上建立一个tar文件。当然了,卷文件名,目标设备都必须给出,或者用"-"代表标准输出。如果用	标准输出,你必须把记录等级调到它的最低值-d0以避免影响产生的tar文件。这个标志的功能正好与\fIx\fR标志相反。 
+
+\fIx\fR - 用这个标志可以把本地的一个tar备份文件释放(恢复)到共享资源上。除非使用了-D选项,tar备份文件将从共享资源的顶层开始恢复。当然了,使用这个参数时后面必须紧跟一个想要恢复的文件名,设备,或者用"-"代表标准输入。与上面一样,这个标志的功能正好与\fIc\fR标志的功能相反。恢复后文件的建立时间(mtime)会被tar文件中保存的日期来替换, 而目录无法做到这一点的。 
+
+\fII\fR - 用这个标志可以包含文件和目录。当在用-T参数时指定了一个文件名的话这就是默认的操作了。在释放或建立时tar文件都会包含这些内容(同时不会包含其他的内容)。参见下面的示例。文件名通配符有两种方式,参见下面\fIr\fR 。
+
+\fIX\fR - 排除文件和目录。在释放或者建立备份时使这些文件或目录不被包含在内。请看下面的示例文件名通配符有两种方式,参见下面\fIr\fR 。
+
+\fIb\fR - 块大小。在这个标志后必须用一个合法的块大小(大于0)。使建立备份时写入到块大小*TBLOCK(通常是512字节)这样	大小的块中。 
+
+\fIg\fR - 增量备份。只备份设置了归档位的文件。必须与\fIc\fR标志一起使用。 
+
+\fIq\fR - 静态工作。当操作进行时没有输出。它的意义与tar相应的静态工作模式一样。
+
+\fIr\fR - 用正则表达式来描述包含或排除操作。当用HAVE_REGEX_H编译的话,用通常的正则表达式可以描述排除操作及要排除的文件,但是这种模式工作非常慢。如果没有用HAVE_REGEX_H的话,仅仅可以用通配符'*'和'?'。 
+
+\fIN\fR - 时间更新(newer)的文件.在这个标志后面必须是一个用来与共享中的文件创建时间做比较的文件名。只有共享中的文件比指定的文件要新的时候才会被备份。必须	与\fIc\fR标志一起使用。
+
+\fIa\fR -设定归档位。使用这个标志在备份时对文件设置归档位。必须与\fIg\fR和fIc\fR标志一起用.
+
+\fBTar Long File Names\fR
+
+\fBsmbclient\fR的tar选项现在可以在备份与恢复操作时支持长文件名了。但是,文件的完整路径描述必须小于1024 个字节。而且,当建立了一个归档包时,\fBsmbclient\fR的tar选面会用文件相对路径写入归档包中,而不是绝对路径。
+
+\fBTar Filenames\fR
+
+所有的文件名都要以DOS路径名(以'\\\\'作分隔符)或UNIX路径名(以'/'作分隔符)给出。 
+
+
+\fB示例 \fR
+
+把备份文件\fIbackup.tar\fR恢复到位于mypc上的myshare中(无须口令)
+
+\fBsmbclient //mypc/yshare "" -N -Tx backup.tar \fR
+
+恢复除了\fIusers/docs\fR以外的所有内容
+
+\fBsmbclient //mypc/myshare "" -N -TXx backup.tar users/docs\fR
+
+在\fI users/docs\fR下建立一个备份文件
+
+\fBsmbclient //mypc/myshare "" -N -Tc backup.tar users/docs \fR
+
+与上面操作相同,不过用的是DOS路径名
+
+\fBsmbclient //mypc/myshare "" -N -tc backup.tar users\edocs \fR
+
+对共享资源上所有内容(文件和目录)作一完整的备份
+
+\fBsmbclient //mypc/myshare "" -N -Tc backup.tar * \fR
+
+
+.TP
+-D initial directory
+在开始前用这个参数来改变初始目录。可能只在用tar的-T选项才用。
+
+.TP
+-c command string
+命令字符串串是一个以单引号(“'”)分隔的用来替换标准输入提示的一系列命令列表,这个参数意味着\fI -N\fR。
+
+当使用脚本或者要打印标准输入信息到服务器时这个选项就非常有用了,例如:\fB-c 'print -'\fR
+
+.SH "操作 OPERATIONS"
+
+.PP
+一旦运行了这个命令,就会在用户的提示行出现以下信息:
+
+.PP
+smb:\\>
+
+.PP
+反斜杠符("\\\\")指出了在服务器上用户当前的工作路径,如果这个路径改变了的话,相同的提示也会改变。
+
+.PP
+提示符表示用户准备好并等待执行一个用户命令。每个命令都是一个单独的词,一般随后可以有选择地指定一些命令所需的参数。命令和参数之间用空格来分隔,除非有其它规定。当然所有命令都区分大小写,而参数可能不一定要区分大小写,不过这应该由命令来决定。
+
+.PP
+要在文件名中使用空格的话必须用双引号封闭,例如:"a long file name"。
+
+.PP
+以方括号("[]")封闭的参数是可选项,如果没有使用,命令还是以默认的情况执行;而以尖括号<>封闭的参数就是必须的了。
+
+.PP
+注意,所有对服务器的命令操作实际上是完成的是向服务器发送一个请求。因而,这种动作可能在服务器到服务器之间会作些改变,这由服务器的实现方式来决定。 
+
+.PP
+下面以字母次序给出可以使用的命令。 
+
+.TP
+? [command]
+如果指定了\fIcommand\fR ,那么?命令就显示该命令的一些简单介绍信息。如果单独使用?的话,它会 给出一份给用命令的列表。
+
+.TP
+! [shell command]
+如果指定了 \fIshell command\fR,那么!命令会执行一个本地的命令解释器并运行指定的shell命令。如果不指定 要运行哪个shell命令,那么就只执行一个本地命令解释器。
+
+.TP
+altname file
+The client will request that the server return the "alternate" name (the 8\&.3 name) for a file or directory\&.
+
+
+.TP
+cancel jobid0 [jobid1] \&.\&.\&. [jobidN]
+The client will request that the server cancel the printjobs identified by the given numeric print job ids\&.
+
+
+.TP
+chmod file mode in octal
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server change the UNIX permissions to the given octal mode, in standard UNIX format\&.
+
+
+.TP
+chown file uid gid
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server change the UNIX user and group ownership to the given decimal values\&. Note there is currently no way to remotely look up the UNIX uid and gid values for a given name\&. This may be addressed in future versions of the CIFS UNIX extensions\&.
+
+
+.TP
+cd [directory name]
+如果指定了"directory name",那么服务器的当前工作路径就改为用户指定的路径。如果指定了任何不可访问的目录的话,该操作就失败了。
+
+如果不指定目录名,就向用户给出服务器当前工作路径。
+
+.TP
+del <mask>
+删除所有当前工作路径中匹配\fImask\fR的文件。
+
+.TP
+dir <mask>
+列出所有当前工作路径中匹配\fImask\fR的文件。
+
+.TP
+exit
+终止联接并退出程序。
+
+.TP
+get <remote file name> [local file name]
+把服务器上名为\fIremote file name\fR的文件到拷贝到本地,名称为\fIlocal file name\fR。要注意的是,\fBsmbclient\fR所用的传送模式为二进制模式。同时参见lowercase命令。 
+
+.TP
+help [command]
+同以上的?命令相同。
+
+
+.TP
+lcd [directory name]
+把本机目录改为\fIdirectory name\fR指定的地点。如果要换的目录是不可访问的话,操作将会失败。
+
+如果不指定目录名,则显示当前本机的工作路径。
+
+.TP
+link source destination
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server create a hard link between the source and destination files\&. The source file must not exist\&.
+
+.TP
+lowercase
+在get和mget命令中选用小写字符作为文件名。
+
+当选择了小写状态时,用get和mget命令时会把本地文件名都转换为小写。从服务器上拷贝MSDOS 文件时这个选项非常有用,因为小写文件名是UNIX系统的标准。
+
+.TP
+ls <mask>
+同以上的dir命令。
+
+.TP
+mask <mask>
+此命令允许用户设置在mget和mput命令的递归形式操作中使用的一个掩码(通配符)。
+
+当选择了递归复制目录时,mget和mput命令指定这个掩码(通配符)作为目录过滤器。
+
+用mask命令指定的掩码可以用来过滤目录中的文件。例如,如果在mget命令中指定了掩码"source*",并且用mask命令指定了文件掩码"*.c",并且选择了递归复制目录的话,mget命令会下载所有在当前工作目录中匹配"source*"的目录以及其下所有匹配"*.c" 的文件。
+
+注意掩码(通配符)默认值是空(等价于"*"),除非使用mask命令来改变它。它会一直保持最近一次指定的值。为了避免出现意外的结果,在使用了mget和mput命令之后把值改回"*"是比较明智的。
+
+.TP
+md <directory name>
+同以上的mkdir命令。
+
+.TP
+mget <mask>
+复制服务器上所有匹配\fImask\fR 的文件到本机。
+
+注意\fImask\fR在命令的递归调用和非递归调用两种方法之间有不同的解释含义 - 请参考recurse和mask命令获得更多信息。其次就是\fBsmbclient\fR传送的方式是二进制的。另见lowercase命令。
+
+.TP
+mkdir <directory name>
+在服务器上建立指定名称的目录(当然用户要有相应的访问权限)。
+
+.TP
+mput <mask>
+复制本机上当前目录内所有匹配\fImask\fR 的文件到服务器当前工作目录。
+
+注意\fImask\fR在命令的递归调用和非递归调用两种方法之间有不同的解释含义 - 请参考recurse和mask命令获得更多信息。其次就是\fBsmbclient\fR 传送的方式是二进制的。
+
+.TP
+print <file name>
+打印本机上指定的文件到服务器的可打印资源上。
+
+参见printmode命令。
+
+.TP
+printmode <graphics or text>
+设定打印模式以适应二进制数据(例如图形信息)或文本,这样后续的打印命令皆使用当前设好的打印模式。
+
+.TP
+prompt
+在执行mget和mput命令时使用对文件名的提示。
+
+当用提示时,在执行命令期间会提示用户对每个要传送的文件进行确认。反之,所有传送操作都不会出现提示。
+
+.TP
+put <local file name> [remote file name]
+ 从本机拷贝名为\fIlocal file name\fR的文件到服务器上并取名为\fIremote file name\fR。与上面提到的一样,\fBsmbclient\fR 传送用的是二进制模式。参见lowercase命令。
+
+.TP
+queue
+用来显示打印队列、任务标识、名称、容量大小和当前状态。
+
+.TP
+quit
+参见exit命令。
+
+.TP
+rd <directory name>
+参见rmdir命令。
+
+.TP
+recurse
+以目录递归方式运行mget和mput命令。
+
+当使用了递归方式时,这些执行的命令会处理源目录下所有的子目录,进入匹配通配符的子目录。只有与mask命令指定的通配符相符的文件才会被处理。参见mask命令。
+
+当没有使用这种递归方式时,只有源主机当前工作目录中与匹配通配符的文件才会被复制。mask命令指定的通配符将被忽略。
+
+.TP
+rm <mask>
+删除所有服务器上当前工作目录中与\fImask\fR相符的文件。
+
+.TP
+rmdir <directory name>
+从服务器上删除指定的目录,当然了,需要一定的用户访问权限。
+
+.TP
+setmode <filename> <perm=[+|\\-]rsha>
+与DOS命令attrib类似的东东,用来设定文件权限,例如:
+
+\fBsetmode myfile +r \fR
+
+将把myfile设为只读。
+
+.TP
+symlink source destination
+This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not\&. The client requests that the server create a symbolic hard link between the source and destination files\&. The source file must not exist\&. Note that the server will not create a link to any path that lies outside the currently connected share\&. This is enforced by the Samba server\&.
+
+
+.TP
+tar <c|x>[IXbgNa]
+执行一个tar操作。参见上面的 \fI-T \fR 命令行选项。tarmode命令可能会影响具体的行为。还有就是g(增量方式)和N(新建方式)会改变tarmode设定。这里要注意的是 tar x参数前加"-"可能会导致命令不执行,应当使用命令行选项方式。
+
+.TP
+blocksize <blocksize>
+块大小。参数后必须跟一上合法的(就是比0大的数啦)块尺寸。因为在执行命令时,tar文件要被写到一个大小为\fIblocksize\fR*TBLOCK(一般是512字节)的块中。
+
+.TP
+tarmode <full|inc|reset|noreset>
+根据归档位来改变tar的行为。当用完全备份时,tar会备份所有的内容而不管归档位是如何设置的,这正好是默认的工作模式。当为增量模式时,它只备份置有归档位的文件。而用重组模式时,tar会对所有要备份文件的归档位进行复位(同时读/写共享)。
+
+.SH "注意 NOTES"
+
+.PP
+一些服务器对用户提供的用户名、口令、共享资源名(也就是服务名)和机器名的大小写形式非常挑剔。如果你联接失败,试一下全部用大写。
+
+.PP
+通常你在联接某种服务器时用-n选项会方便一点。例如OS/2 LanManager会强调要使用合法的NetBIOS名字,所以你需要提供让服务器可以理解的合法名字。
+
+.PP
+smbclient支持在服务器使用LANMAN2及更高的协议时使用长文件名。
+
+.SH "环境变量 ENVIRONMENT VARIABLES"
+
+.PP
+\fBUSER\fR变量包含使用客户端的用户的用户名。只有当连接的协议等级足够高,支持会话级别的口令时才使用此信息。
+
+.PP
+\fBPASSWD\fR变量包含使用客户端的用户的口令。只有当连接的协议等级足够高,支持会话级别的口令时才使用此信息。
+
+.PP
+The variable \fBLIBSMB_PROG\fR may contain the path, executed with system(), which the client should connect to instead of connecting to a server\&. This functionality is primarily intended as a development aid, and works best when using a LMHOSTS file
+
+.SH "安装 INSTALLATION"
+
+.PP
+存放这个程序的位置对于个人的系统管理员来说也是件麻烦事。下面仅仅是一些建议。
+
+.PP
+推荐你把smbclient软件包安装到\fI/usr/local/samba/bin/\fR或\fI /usr/samba/bin/\fR目录中,而这个目录对所有人来说应该是只读的,对root才是可写的。程序本身可以被所有人调用,但是它\fB不\fR是setuid或者setgid的。
+
+.PP
+而程序的记录文件应该放在一个用户可读写的目录中。
+
+.PP
+要测试这个程序,你要先知道运行SMB/CIFS的服务器名。这个服务器可能运行着\fBsmbd\fR(8) a守护进程并提供一个用户可以访问的端口(通常端口号大于1024),这样用户就可以用这些数据来测试了。
+
+.SH "诊断 DIAGNOSTICS"
+
+.PP
+通常情况下诊断信息都记录到指定好的记录文件中。这个文件的名称是在编译时指定的,但也可以用命令行来指定。
+
+.PP
+用户可以得到的诊断信息的数量和种类取决于用户执行客户端程序时所用的调试等级。如果你发现有问题的话,把调试级设到3并详细阅读记录文件里的内容。
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对Samba套件版本2.2的。
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/smbcontrol.1 b/src/man1/smbcontrol.1
new file mode 100644
index 0000000..03c70ee
--- /dev/null
+++ b/src/man1/smbcontrol.1
@@ -0,0 +1,87 @@
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
+.\" Please send any bug reports, improvements, comments, patches, 
+.\" etc. to Steve Cheng <steve at ggi-project.org>.
+.TH SMBCONTROL 1 "17 Apr 2001" "smbcontrol 2.2.0"
+.SH NAME
+smbcontrol \- 向smbd或nmbd进程发送消息
+.SH 总览
+.sp
+\fBsmbcontrol\fR [ \fB-i\fR ] 
+.sp
+\fBsmbcontrol\fR [ \fB目标\fR ]  [ \fB消息类型\fR ]  [ \fB参数\fR ] 
+.SH 描述
+.PP
+这个工具是是Samba组件的一部分。
+.PP
+\fBsmbcontrol\fR是个很小的程序,用它可以向系统上运行的smbd(8)
+或nmbd(8)进程发送消息。
+.SH 选项
+.TP
+\fB-i\fR
+以交互方式运行。在标准输入上可以输入单独的“目标 消息类型 参
+数”形式的命令,输入空行或“q”字符退出程序。
+.TP
+\fB目标\fR
+\fInmbd\fR或\fIsmbd\fR或进程ID。
+
+如果使用\fIsmbd\fR目标,则向所有smbd进程广播消息。
+
+如果使用\fInmbd\fR目标,则向\fInmbd.pid\fR指定的nmbd进程发送
+消息。
+
+如果使用一个进程ID,则只向该进程发送消息。
+.TP
+\fB消息类型\fR
+有这几种类型:debug、force-election、ping、profile、debuglevel、
+profilelevel、printer-notify。
+
+debug消息:可以把调试等级设为参数所指定的值。可以向所有目标发送
+这种类型的消息。
+
+force-election消息:只能向nmbd发送。这种消息使\fBnmbd\fR进程强
+制进行一次新的主浏览器选举。
+
+ping消息:发送指定数量的“ping”并等待相同数量的回复。可以向所
+有目标发送这种类型的消息。
+
+profile消息:使用参数通知smbd来修改profile的配置。参数为“on”
+则获取profile状态,“off”则反之,“count”为只获取计数状态(禁
+止时间状态),“flush”把当前profile的状态清零。
+
+debuglevel消息:发送“请求调试等级”消息,再由一个这种类型的消
+息返回当前设置的调试等级。可以向所有目标发送这种类型的消息。
+
+profilelevel消息:发送“请求profile等级”消息,再由一个这种类
+型的消息返回当前设置的profile等级可以向所有目标发送这种类型的
+消息。
+
+printer-notify消息:通知smbd进程向连接到打印机的NT客户机轮流
+发送打印机通告消息。使用这种消息要把打印机名作为参数。
+.TP
+\fB参数\fR
+使用消息类型所需的任何参数。
+.SH 版本
+.PP
+此手册页是针对samba2.2所写的。
+.SH 参见
+.PP
+\fBnmbd(8)\fR和\fBsmbd(8)\fR。
+.SH 作者
+.PP
+Samba软件和相关工具最初由Andrew Tridgell编写。现在,它是按开
+源软件的形式进行开发的。
+.PP
+
+Samba手册页的原作者是Karl Auer。这些文档已被转换成YODL(一种
+极好的开放源代码软件,可以在ftp://ftp.icce.rug.nl/pub/unix/
+处获得)格式,并已由Jeremy Allison更新到samba2.0版本。Gerald
+Carter完成了Samba 2.2的DocBook转化工作。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+2001/05/24
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/smbrun.1 b/src/man1/smbrun.1
new file mode 100644
index 0000000..2030819
--- /dev/null
+++ b/src/man1/smbrun.1
@@ -0,0 +1,51 @@
+
+.TH smbrun 1 Samba  "23 Oct 1998"
+
+.SH NAME
+smbrun - smbd和外部程序间的接口程序。 
+
+.SH 总览 SYNOPSIS
+smbrun shell-command
+
+.SH 描述 DESCRIPTION
+此程序是samba套件的一部分。 
+
+smbrun是个非常小的“粘合”程序,用于为smbd守护程序\fBsmbd\fR(8)运行一些shell命令。
+
+它首先把用户和组身份改成所能达到的最高级别,然后运行\fIsystem()\fR调用中的命令行。这个程序
+可以顺利地允许一些操作系统以非root身份运行外部程序。
+
+.SH 选项 OPTIONS
+\fIshell-command\fR
+要执行的shell命令。这个命令应该带有全路径。 
+
+.SH 环境变量 ENVIRONMENT VARIABLES
+如果没有给出完整的路径信息,smbrun所执行时的PATH 环境变量会影响可执行程序的查找位置及运行。
+
+.SH 诊断
+如果无法定位\fBsmbrun\fR或者不能通过\fBsmbd\fR执行命令,我们可以在\fBsmbd\fR记录文件中找到一些相应的信息。其它一些诊断信息取决于运行的shell命令。最好让你执行的shell命令来提供有用的诊断信息,用来除错。
+
+.SH 版本
+此手册页是针对samba套件版本2.0的。 
+
+.SH 另见
+.PP
+\fBsmb.conf\fR (5), \fBsmbd\fR (8) 
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/smbsh.1 b/src/man1/smbsh.1
new file mode 100644
index 0000000..bca2465
--- /dev/null
+++ b/src/man1/smbsh.1
@@ -0,0 +1,66 @@
+
+.TH smbsh 1 Samba "23 Oct 1998"
+
+
+.SH NAME
+.B smbsh - 允许用UNIX命令访问NT文件系统 
+
+.SH 总览
+.B smbsh 
+
+.SH 描述
+此程序是\fBSamba\fR套件的一部分。 
+
+\fBsmbsh\fR允许你用UNIX命令诸如\fBls\fR,\fBegrep\fR和\fBrcp\fR等来访问NT文件系统。必须用动态链接的shell以便使\fBsmbsh\fR工作正常。
+
+从命令提示上执行\fBsmbsh\fR命令,并输入用户账号和口令以便在NT操作系统中验证你的身份。 
+
+.nf
+system% smbsh
+Username: user
+Password:
+.fi
+
+从shell上执行任何动态链接的命令都会用smb协议来访问/smb目录。例如命令:
+
+.nf
+ls /smb 
+.fi
+
+会显示你工作组里的所有主机。而命令: 
+
+.nf
+ls /smb/<machine-name> 
+.fi
+
+会显示指定主机上的共享名。当然也可以用\fBcd\fR命令来改变目录,\fBvi\fR来编辑文件,\fBrcp\fR来拷贝文件。 
+
+.SH 版本
+此手册页是针对samba套件版本2.0的。 
+
+.SH 错误
+\fBsmbsh\fR通过动态装入的\fIsmbwrapper.o\fR截获标准libc调用来工作。但并不是所有的调用都可以被截获,所以有些程序可能在smbsh下工作得不太正常。
+
+非动态链接的程序并不能使用\fBsmbsh\fR的功能。很多版本的UNIX有一个\fBfile\fR命令会描述程序如何被链接。
+
+.SH 另见 SEE ALSO
+.PP
+\fBsmb.conf\fR (5), \fBsmbd\fR (8).
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/smbstatus.1 b/src/man1/smbstatus.1
new file mode 100644
index 0000000..40477a0
--- /dev/null
+++ b/src/man1/smbstatus.1
@@ -0,0 +1,66 @@
+.TH SMBSTATUS 1 "11 Nov 1999" "smbstatus 2.0.6"
+.PP 
+.SH NAME
+smbstatus  \- 报告当前 samba 的联接状态
+.PP
+.SH 总览
+.PP 
+\fBsmbstatus\fP [-b] [-d] [-L] [-p] [-S] [-s configuration file] [-u username]
+.PP 
+.SH 描述
+.PP
+此程序是 samba 套件的一部分。 
+.PP
+smbstatus 是个非常简单的程序,用于列示当前 samba 的联接状态。
+.PP
+.SH 选项 
+.PP 
+.IP 
+.IP "\fB-b\fP" 
+指定只输出简短的内容。 
+.IP 
+.IP "\fB-d\fP" 
+指定以详细方式输出内容。 
+.IP 
+.IP "\fB-L\fP" 
+让 smbstatus 只列出 /var 目录中的被锁定项。 
+.IP 
+.IP "\fB-p\fP" 
+用这个参数来列出 smbd 进程的列表然后退出。对脚本编程很有用。 
+.IP 
+.IP "\fB-S\fP" 
+让 smbstatus 只列出共享资源项。 
+.IP 
+.IP "\fB-s configuration file\fP" 
+用这个参数指定一个配置文件。 当然在编译时已做好了默认的配置文件。
+文件中包含了服务需要的详细配置信息。 参见 smb.conf(5) 获得更多信息。
+.IP 
+.IP "\fB-u username\fP" 
+用这个参数来查看只与 username 用户对应的信息。 
+.PP
+.SH 版本
+.PP
+此手册页是针对 samba 套件版本 2.0 的。
+.PP
+.SH 另见
+.PP 
+\fBsmb\&.conf (5)\fP, \fBsmbd (8)\fP
+.PP 
+.SH 作者
+.PP
+samba 软件和相关工具最初由 Andrew Tridgell samba-bugs at samba.org 创建。
+samba 现在由开发组以类似开发 Linux 内核采用的开放源代码项目方式来发展。
+.PP
+samba 手册页最初由 Karl Auer 撰写。它的源码已被转换成 YODL
+(另外一种极好的开放源代码软件,可以在 ftp://ftp.icce.rug.nl/pub/unix/ 
+处获得)格式并已由 Jeremy Allison 更新到 samba2.0 版本。
+.PP
+请参见 samba (7) 查找如何获得一份完整的维护者列表以及如何提交错误报告及
+注解等等。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2001/02/28
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/smbtar.1 b/src/man1/smbtar.1
new file mode 100644
index 0000000..a305871
--- /dev/null
+++ b/src/man1/smbtar.1
@@ -0,0 +1,100 @@
+.TH SMBTAR 1 "11 Nov 1999" "smbtar 2.0.6"
+.PP 
+.SH NAME
+smbtar \ - 直接备份SMB/CIFS共享资源到UNIX磁带设备的shell脚本
+.PP
+.SH 总览
+.PP 
+\fBsmbtar\fP -s server [-p password] [-x service] [-X] [-d directory] [-u user] [-t tape] [-b blocksize] [-N filename] [-i] [-r] [-l log level] [-v] filenames
+.PP 
+.SH 描述
+.PP
+此程序是samba套件的一部分。
+.PP
+smbtar是个在smbclient基础上建立的非常小的shell脚本,用于把SMB共享资源直接写到磁带上。
+.PP
+.SH 选项 
+.PP 
+.IP 
+.IP "\fB-s server\fP" 
+指定提供共享资源的SMB/CIFS服务器。 
+.IP 
+.IP "\fB-x service\fP" 
+指定要联接的共享资源。默认情况下就是备份。 
+.IP 
+.IP "\fB-X\fP" 
+排除模式,从建立或者恢复的备份项中排除文件名。 
+.IP 
+.IP "\fB-d directory\fP" 
+在恢复 / 备份文件前改变初始化目录directory。 
+.IP 
+.IP "\fB-v\fP" 
+指定用详细模式。 
+.IP 
+.IP "\fB-p password\fP" 
+指定要访问的共享资源的口令。默认是:none。 
+.IP 
+.IP "\fB-u user\fP" 
+指定联接时的用户账号。默认是:UNIX登录账号。 
+.IP 
+.IP "\fB-t tape\fP" 
+指定所用的磁带设备。这里可能是正常的文件或磁带设备。默认是:TAPE 环境变量;如
+果不指定的话,以tar.out作为文件名。 
+.IP 
+.IP "\fB-b blocksize\fP" 
+指定块比例。默认是20,请查看tar (1)中的完整解释。
+.IP 
+.IP "\fB-N filename\fP" 
+只备份比filename指定文件更新的文件。可以用在记录文件中以实现增量备份。 
+.IP 
+.IP "\fB-i\fP" 
+指定增量模式;tar文件只备份设定归档位的文件。在对每个文件进行读取时归档位可以重新设定。 
+.IP 
+.IP "\fB-r\fP" 
+指定做恢复操作。从tar备份文件中恢复文件到共享资源上。 
+.IP 
+.IP "\fB-l log level\fP" 
+记录(调试)等级。这与smbclient (1)的-d参数含义相当。 
+.IP 
+.PP 
+.SH 环境变量
+.PP
+TAPE变量指定了执行写操作的默认磁带设备。可以用-t选项来重设。
+.PP
+.SH 错误
+.PP
+从smbclient中调用tar命令及原始的tar命令与smbtar脚本有些不大相同的选项。
+.PP
+.SH 警告
+.PP
+基于安全性方面的站点不太喜欢用脚本来处理PC口令。在共享资源接口上备份和恢复会在文件
+列表上进行工作。smbtar和GNU的tar一起使用非常出色,但可能和其它的一些版本使用时并
+不太好。
+.PP
+.SH 版本
+.PP
+此手册页是针对samba套件版本2.0的。 
+.PP
+.SH 另见
+.PP 
+\fBsmbclient (1)\fP, \fBsmb\&.conf
+(5)\fP
+.PP 
+.SH 诊断
+参见smbclient命令中的DIAGNOSTICS部分。
+.SH 作者
+.PP
+samba软件和相关工具最初由Andrew Tridgell samba-bugs at samba.org创建。samba现在由
+开发组作为类似Linux内核开发采用的开放源代码计划方式来发展。
+.PP
+samba手册页最初由Karl Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可
+以在ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。
+.PP
+请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/sort.1 b/src/man1/sort.1
new file mode 100644
index 0000000..24bc668
--- /dev/null
+++ b/src/man1/sort.1
@@ -0,0 +1,108 @@
+.TH SORT "1" "1999年12月" "GNU textutils 2.0a" FSF
+.SH NAME(名称)
+sort \- 对文本文件的行排序
+.SH SYNOPSIS(总览)
+.B ../src/sort
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION(描述)
+.\在这儿添加任何附加的描述信息
+.PP
+将排序好的所有文件串写到标准输出上.
+.TP
++POS1 [-POS2]
+从关键字POS1开始,到POS2*之前*结束(快过时了)
+字段数和字符偏移量都从零开始计数(与\fB\-k\fR选项比较)
+.TP
+\fB\-b\fR
+忽略排序字段或关键字中开头的空格
+.TP
+\fB\-c\fR
+检查是否指定文件已经排序好了,不排序.
+.TP
+\fB\-d\fR
+在关键字中只考虑[a-zA-Z0-9]字符.
+.TP
+\fB\-f\fR
+将关键字中的小写字母折合成大写字母.
+.TP
+\fB\-g\fR
+按照通常的数字值顺序作比较,暗含\fB\-b\fR
+.TP
+\fB\-i\fR
+在关键字中只考虑[\e040-\e0176]字符.
+.TP
+\fB\-k\fR POS1[,POS2]
+从关键字POS1开始,*到*POS2结束.
+字段数和字符偏移量都从1开始计数(与基于零的+POS格式作比较)
+.TP
+\fB\-l\fR
+按照当前环境排序.
+.TP
+\fB\-m\fR
+合并已经排序好的文件,不排序.
+.TP
+\fB\-M\fR
+按(未知的)<`JAN'<...<`DEC'的顺序比较,暗含\fB\-b\fR
+.TP
+\fB\-n\fR
+按照字符串的数值顺序比较,暗含\fB\-b\fR
+.TP
+\fB\-o\fR FILE
+将结果写入FILE而不是标准输出.
+.TP
+\fB\-r\fR
+颠倒比较的结果.
+.TP
+\fB\-s\fR
+通过屏蔽最后的再分类比较来稳定排序.
+.TP
+\fB\-t\fR SEP
+使用SEP来替代空格的转换non-.
+.TP
+\fB\-T\fR DIRECTORY
+使用DIRECTORY作为临时文件,而不是$TMPDIR或者/tmp
+.TP
+\fB\-u\fR
+如果有\fB\-c\fR,则按严格的顺序进行检查;
+如果有\fB\-m\fR,则只输出相等顺序的第一个.
+.TP
+\fB\-z\fR
+以0字节结束行,而不是使用换行符,这是为了找到\fB\-print0\fR
+.TP
+\fB\-\-help\fR
+显示帮助并退出.
+.TP
+\fB\-\-version\fR
+输出版本信息并退出.
+.PP
+POS为F[.C][OPTS],这里的F指的是字段数,而C为字段中的字符位置,这在\fB\-k\fR中是从开
+始计数的,而在过时的格式中是从零开始的.OPTS可由一个或多个Mbdfinr组成;这有效地屏蔽了
+对于那个关键字的全局\fB\-Mbdfinr\fR设置.如果没有指定关键字,则使用整行作为关键字.如
+果没有FILE,或者FILE是-,则从标准输入读取.
+.SH AUTHOR(作者)
+Mike Haertel
+.SH REPORTING BUGS(报告BUGS)
+报告bugs,请发到<bug-textutils at gnu.org>.
+.SH COPYRIGHT(版权)
+版权所有\(co 1999 Free Software Foundation, Inc.
+.br
+这是自由软件;参见关于复制条件的源文件.不承担任何责任;更不用说商用性或特殊需求的适
+应性.
+.SH SEE ALSO (另见)
+.B sort
+的完整文档是以Texinfo手册的方式维护的.如果在你那儿正确地安装了
+.B info
+和
+.B sort
+程序,命令
+.IP
+.B info sort
+.PP
+应该可以让你访问整个手册.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/source.1 b/src/man1/source.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/source.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/split.1 b/src/man1/split.1
new file mode 100644
index 0000000..f226107
--- /dev/null
+++ b/src/man1/split.1
@@ -0,0 +1,62 @@
+.TH SPLIT "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+split \- 分割文件
+.SH "总览 (SYNOPSIS)"
+.B ../src/split
+[\fIOPTION\fR] [\fIINPUT \fR[\fIPREFIX\fR]]
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+把 输入文件 INPUT 按 固定大小 的 文件片 PREFIXaa, PREFIXab, ... 输出; 
+缺省的 PREFIX 是 `x'. 如果 没有 指定 INPUT, 或 INPUT 是 -, 就从 标准输入
+读取 数据.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR=\fISIZE\fR
+输出文件 大小 定为 SIZE 字节
+.TP
+\fB\-C\fR, \fB\-\-line\-bytes\fR=\fISIZE\fR
+输出文件 大小 定为 最多 SIZE 字节 的 行
+.TP
+\fB\-l\fR, \fB\-\-lines\fR=\fINUMBER\fR
+输出文件 大小 定为 NUMBER 行
+.TP
+\fB\-NUMBER\fR
+同 \fB\-l\fR NUMBER
+.TP
+\fB\-\-verbose\fR
+在 打开 每一个 输出文件 之前, 把 诊断信息 送往 标准错误
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+指定 SIZE 时 可以 使用 倍乘后缀: b 是 512, k 是 1K, m 是 1 Meg.
+.SH "作者 (AUTHOR)"
+Torbjorn Granlund 和 Richard M. Stallman.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B split
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B split
+程序, 使用 命令
+.IP
+.B info split
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/sq.1 b/src/man1/sq.1
new file mode 100644
index 0000000..2c7574a
--- /dev/null
+++ b/src/man1/sq.1
@@ -0,0 +1,85 @@
+.\"
+.\" Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All modifications to the source code must be clearly marked as
+.\"    such.  Binary redistributions based on modified source code
+.\"    must be clearly marked as modified versions in the documentation
+.\"    and/or other materials provided with the distribution.
+.\" 4. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgment:
+.\"      This product includes software developed by Geoff Kuenning and
+.\"      other unpaid contributors.
+.\" 5. The name of Geoff Kuenning may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.TH SQ 1 LOCAL
+.SH NAME
+sq \- 压缩一个排过序的单词列表
+unsq \- 解压一个排过序的单词列表
+
+.SH "总览 (SYNOPSIS)"
+.B sq
+< infile > outfile
+.PP
+.B unsq
+< infile > outfile
+
+.SH "描述 (DESCRIPTION)"
+.I sq
+压缩 一个 排过序的 单词 列表 (一个 字典). 比如:
+.RS
+sort /usr/dict/words | sq | compress > words.sq.Z
+.RE
+会 大概 以 4 为 因数 压缩 字典.
+.PP
+.I unsq
+解压
+.I sq
+的 输出. 比如:
+.RS
+compress -d < words.sq.Z | unsq | sort -f -o words
+.RE
+会 解压 
+.I sq
+压缩 的 字典.
+.P
+根据 文档 描述, 它 通过 省略 相同 的 词头 来 压缩, 用 一个 单独 的 字符 取代
+这个 词头, 这个 字符 对 与 前一个词 相同的 字符数 进行 编码.
+词头 的 大小 用 一个 编了码 的 可打印 的 字符 表示:
+0-9 代表 0-9, A-Z 代表 10-35, a-z 代表 36-61.
+
+.SH "作者 (AUTHOR)"
+Mike Wexler
+
+.SH "参见 (SEE ALSO)"
+compress(1), sort(1).
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ssh.1 b/src/man1/ssh.1
new file mode 100644
index 0000000..977c206
--- /dev/null
+++ b/src/man1/ssh.1
@@ -0,0 +1,787 @@
+.\"  -*- nroff -*-
+.\"
+.\" Author: Tatu Ylonen <ylo at cs.hut.fi>
+.\" Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
+.\"                    All rights reserved
+.\"
+.\" As far as I am concerned, the code I have written for this software
+.\" can be used freely for any purpose.  Any derived versions of this
+.\" software must be clearly marked as such, and if the derived work is
+.\" incompatible with the protocol description in the RFC file, it must be
+.\" called by a name other than "ssh" or "Secure Shell".
+.\"
+.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
+.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
+.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $OpenBSD: ssh.1,v 1.168 2003/03/28 10:11:43 jmc Exp $
+.Dd September 25, 1999
+.Dt SSH 1
+.Os
+.Sh NAME
+.Nm ssh
+.Nd OpenSSH SSH 客户端 (远程登录程序)
+.Sh "总览 (SYNOPSIS)"
+.Nm ssh
+.Op Fl l Ar login_name
+.Ar hostname | user at hostname
+.Op Ar command
+.Pp
+.Nm ssh
+.Bk -words
+.Op Fl afgknqstvxACNTX1246
+.Op Fl b Ar bind_address
+.Op Fl c Ar cipher_spec
+.Op Fl e Ar escape_char
+.Op Fl i Ar identity_file
+.Op Fl l Ar login_name
+.Op Fl m Ar mac_spec
+.Op Fl o Ar option
+.Op Fl p Ar port
+.Op Fl F Ar configfile
+.Oo Fl L Xo
+.Sm off
+.Ar port :
+.Ar host :
+.Ar hostport
+.Sm on
+.Xc
+.Oc
+.Ek
+.Bk -words
+.Oo Fl R Xo
+.Sm off
+.Ar port :
+.Ar host :
+.Ar hostport
+.Sm on
+.Xc
+.Oc
+.Op Fl D Ar port
+.Ar hostname | user at hostname
+.Op Ar command
+.Ek
+.Sh "描述 (DESCRIPTION)"
+.Nm
+(SSH 客户端) 用于登录远程主机, 并且在远程主机上执行命令.
+它的目的是替换 rlogin 和 rsh, 同时在不安全的网络之上, 两个互不
+信任的主机之间, 提供加密的, 安全的通信连接.
+X11 连接和任意 TCP/IP 端口均可以通过此安全通道转发(forward).
+.Pp
+当用户通过
+.Nm
+连接并登录主机
+.Ar hostname
+后, 根据所用的协议版本, 用户必须通过下述方法之一向远程主机证明他/她的身份:
+.Pp
+.Ss "SSH 协议第一版"
+.Pp
+第一, 如果发出登录命令的本地主机已经列在远程主机的
+.Pa /etc/hosts.equiv
+或
+.Pa /etc/ssh/shosts.equiv
+文件中, 并且两端的用户名相同, 则立即允许该用户登录.
+第二, 如果远程主机的用户根目录 (home 目录) 下存在
+.Pa \&.rhosts
+或
+.Pa \&.shosts ,
+并且其中有一行包含了客户机的名字和客户机上的用户名, 则允许该用户登录.
+一般来说, 服务器不允许单独使用这种认证方式, 因为它不安全.
+.Pp
+第二种认证方法是
+.Pa rhosts
+或
+.Pa hosts.equiv
+文件结合基于 RSA 的主机认证. 这意味着如果
+.Pa $HOME/.rhosts ,
+.Pa $HOME/.shosts ,
+.Pa /etc/hosts.equiv ,
+或
+.Pa /etc/ssh/shosts.equiv
+允许登录, 并且如果服务器能够验证客户的主机密钥(host key)
+(参见
+.Sx "文件(FILE)"
+节的
+.Pa /etc/ssh/ssh_known_hosts
+和
+.Pa $HOME/.ssh/known_hosts
+), 主机才允许客户登录.
+这个认证方法关闭了因 IP 欺骗, DNS 欺骗和路由欺骗造成的安全漏洞.
+[系统管理员注意: 一般说来
+.Pa /etc/hosts.equiv ,
+.Pa $HOME/.rhosts ,
+和 rlogin/rsh 协议的本质是不可靠地, 要安全就应该关掉它们.]
+.Pp
+作为第三种认证方式, 
+.Nm
+支持基于 RSA 的认证. 
+这种方案依托于公开密钥算法: 密码系统的加密和解密通过不同的密钥完成, 无法
+通过加密密钥推导出解密密钥. RSA 就是这种密码系统.
+每个用户创建一对公开/私密钥匙用于认证.
+服务器知道用户的公钥, 只有用户知道他自己的私钥.
+.Pa $HOME/.ssh/authorized_keys
+文件列出允许登录的(用户的)公钥. 当用户开始登录,
+.Nm
+程序告诉服务器它准备使用哪对钥匙(公钥)做认证.
+服务器检查这只密钥(公钥)是否获得许可, 如果许可, 服务器向用户
+(实际上是用户面前运行的
+.Nm
+程序) 发出测试, 用用户的公钥加密一个随机数. 这个随机数只能用正确的私钥解密.
+随后用户的客户程序用私钥解出测试数字, 即可证明他/她掌握私钥, 
+而又无需(把私钥)暴露给服务器.
+.Pp
+.Nm
+能够自动执行 RSA 认证协议. 用户通过运行
+.Xr ssh-keygen 1
+创建他/她的 RSA 密钥对. 私钥存放在用户根目录下的
+.Pa $HOME/.ssh/identity
+中, 而公钥存放在
+.Pa $HOME/.ssh/identity.pub
+中. 随后, 用户应该把
+.Pa identity.pub
+复制到远程服务器中, 作为
+.Pa $HOME/.ssh/authorized_keys
+存放到他/她的用户根目录下 (
+.Pa authorized_keys
+对应传统的
+.Pa $HOME/.rhosts
+文件, 每一行只有一只密钥, 尽管一行可以很长).
+用户无须密码就可以直接登录. RSA 认证远比 rhosts 认证安全.
+.Pp
+RAS 认证最便捷的用法大概就是使用认证代理(authentication agent) 了. 详见
+.Xr ssh-agent 1
+手册页.
+.Pp
+如果这些认证方式都失败了,
+.Nm
+就提示用户输入口令(password), 然后把口令送到服务器做验证. 由于整个通信过程是
+加密的, 因此别人不可能通过侦听网络获得这个口令.
+.Pp
+.Ss "SSH 协议第二版"
+.Pp
+当用户以协议第二版连接时, 类似的认证方法一样有效. 如果使用了
+.Cm PreferredAuthentications
+的默认内容, 客户端首先试着用基于主机的认证方法进行连接; 如果这个方法失败了
+就用公开密钥方法作认证; 最后, 如果它也失败了, 就进入键盘操作, 试试
+用户口令认证.
+.Pp
+这个公开密钥方法类似于上一节描述的 RAS 认证, 并且允许使用 RAS 或 DSA 算法:
+客户端用他的私钥 (
+.Pa $HOME/.ssh/id_dsa
+或
+.Pa $HOME/.ssh/id_rsa 
+) 对会话标识符(session identifier)签名, 然后把结果送到服务器. 
+服务器检查
+.Pa $HOME/.ssh/authorized_keys
+中是否有匹配的公钥, 如果密钥和签名都正确, 访问就可以继续进行.
+会话标识符来自共享的 Diffie-Hellman 值, 只有客户端和服务器端才知道这个值.
+.Pp
+如果公钥认证失败或无效, 用户口令将会加密后送到远端主机来证明用户的身份.
+.Pp
+另外,
+.Nm
+支持基于主机或测试应答的认证方式.
+.Pp
+协议第二版提供附加机制增强保密性
+(数据流用 3DES, Blowfish, CAST128 或 Arcfour 加密) 和完整性
+(hmac-md5, hmac-sha1).
+注意, 协议第一版缺少强有力的机制确保连接的完整性.
+.Pp
+.Ss 登录会话和远程执行
+.Pp
+服务器接受用户身份后, 服务器即可以执行给定的命令, 也可以让用户登录并给他
+一个正常的 shell. 所有和远端命令或 shell 的通信被自动加密.
+.Pp
+如果分配了伪终端(pseudo-terminal)(普通的登录会话), 用户可以使用后面将
+提到的 escape 字符.
+.Pp
+如果没有分配伪终端, 则会话是透明的(transparent), 能够可靠的传送二进制数据.
+大多数系统上, 即使分配了终端, 把 escape 字符设为
+.Dq none
+也可以让会话透明.
+.Pp
+当远程主机上的命令或 shell 退出时, 会话即结束, 并关闭所有 X11 和 TCP/IP 连接.
+远端程序的返回码做为
+.Nm
+的返回码返回.
+.Pp
+.Ss Escape 字符
+.Pp
+如果启用了伪终端, 
+.Nm
+能够通过 escape 字符支持一组功能.
+.Pp
+单独的波浪符可以用
+.Ic ~~
+送出去, 只要后面不跟下面列举的字符, 也可以把它直接送出去.
+escape 字符必须接在换行(newline)后面, 这样才具有特别含义.
+在配置文件中可以用
+.Cm EscapeChar
+命令更改 escape 字符, 在命令行上可以用
+.Fl e
+选项更改.
+.Pp
+已支持的 escape 命令 (假设是默认的
+.Ql ~ )
+有:
+.Bl -tag -width Ds
+.It Cm ~.
+断开连接
+.It Cm ~^Z
+把 ssh 送到后台
+.It Cm ~#
+列出转发的连接 (forwarded connection)
+.It Cm ~&
+当等待转发的连接/X11会话结束时, ssh 在后台退出登录
+.It Cm ~?
+显示 escape 字符的列表
+.It Cm ~C
+打开命令行 (仅用于
+.Fl L
+和
+.Fl R
+选项增加端口转发)
+.It Cm ~R
+请求连接的重建(rekeying) (仅用于SSH协议第二版, 且对方支持)
+.El
+.Pp
+.Ss X11 和 TCP 转发 (forwarding)
+.Pp
+如果
+.Cm ForwardX11
+变量设为
+.Dq yes
+(或参见后面对
+.Fl X
+和
+.Fl x
+选项的描述), 并且用户正在使用 X11 (设置了
+.Ev DISPLAY
+环境变量), 和 X11 显示器的连接将自动以这种形式转发到远端:
+任何用 shell 或命令启动的 X11 程序将穿过加密的通道, 从本地机器连接真正的
+X 服务器. 用户不应该手动设置
+.Ev DISPLAY .
+可以在命令行上, 也可以在配置文件中设置 X11 连接的转发.
+.Pp
+.Nm
+设置的
+.Ev DISPLAY
+值将指向服务器, 但是显示器号大于零. 这很自然, 因为
+.Nm
+在服务器上创建了一个
+.Dq proxy
+X 服务器, 把连接通过加密通道转发出去.
+.Pp
+.Nm
+将自动在服务器上设置 Xauthority 数据. 目的是这样的:
+SSH 生成一个随机的授权 cookie, 存放在服务器的 Xauthority 中.
+SSH 检查并确保转发的连接携带了这个 cookie, 打开连接后,
+把它替换为真正的 cookie.
+真正的认证 cookie 绝不会送往服务器 (也不会有任何明文传送的 cookie).
+.Pp
+如果
+.Cm ForwardAgent
+变量设为
+.Dq yes
+(或参见后面对
+.Fl A
+和
+.Fl a
+选项的描述), 并且用户正在使用认证代理(authentication agent), 
+则和代理的连接将自动转发到远程主机.
+.Pp
+既可以在命令行上, 也可以在配置文件中指定通过加密通道转发的任何 TCP/IP 连接.
+TCP/IP 转向的应用有, 比如说, 和电子钱包的安全连接, 或者是穿过防火墙等.
+.Pp
+.Ss 服务器认证
+.Pp
+.Nm
+自动维护并检查一个身份数据库, 它包含所有(成功)来访的主机的身份数据.
+主机密钥存放在用户根目录下的
+.Pa $HOME/.ssh/known_hosts
+文件中. 另外, SSH 自动检查
+.Pa /etc/ssh/ssh_known_hosts
+里面已知的主机. 任何新主机将被自动添加到用户文件中.
+如果某个主机的身份发生改变,
+.Nm
+就会发出警告, 并且关闭对它的密码认证, 以防止特洛伊木马窃取用户密码.
+这个机制的另一个目的是防止中间人攻击, 否则这种攻击可能会绕过加密系统.
+.Cm StrictHostKeyChecking
+选项用来防止登录到主机密钥不能识别或发生改变的那些机器.
+.Pp
+命令行选项有:
+.Bl -tag -width Ds
+.It Fl a
+禁止转发认证代理的连接.
+.It Fl A
+允许转发认证代理的连接. 
+可以在配置文件中对每个主机单独设定这个参数.
+.Pp
+代理转发须谨慎. 
+某些用户能够在远程主机上绕过文件访问权限 (由于代理的 UNIX 域 socket),
+他们可以通过转发的连接访问本地代理.
+攻击者不可能从代理获得密钥内容, 但是他们能够操作这些密钥, 利用加载到代理上
+的身份信息通过认证.
+.It Fl b Ar bind_address
+在拥有多个接口或地址别名的机器上, 指定收发接口.
+.It Fl c Ar blowfish|3des|des
+选择加密会话的密码术.
+.Ar 3des
+是默认算法.
+.Ar 3des
+(triple-des) 用三支不同的密钥做加密-解密-加密三次运算, 被认为比较可靠.
+.Ar blowfish
+是一种快速的分组加密术(block cipher), 非常安全, 而且速度比
+.Ar 3des
+快的多.
+.Ar des
+仅支持
+.Nm
+客户端, 目的是能够和老式的不支持
+.Ar 3des
+的协议第一版互操作. 由于其密码算法上的弱点, 强烈建议避免使用.
+.It Fl c Ar cipher_spec
+另外, 对于协议第二版, 这里可以指定一组用逗号隔开, 按优先顺序排列的密码术.
+详见
+.Cm Ciphers .
+.It Fl e Ar ch|^ch|none
+设置 pty 会话的 escape 字符 (默认字符:
+.Ql ~ ) .
+escape 字符只在行首有效, escape 字符后面跟一个点
+.Pq Ql \&.
+表示结束连接, 跟一个 control-Z 表示挂起连接(suspend), 跟 escape 字符自己
+表示输出这个字符. 把这个字符设为
+.Dq none
+则禁止 escape 功能, 使会话完全透明.
+.It Fl f
+要求
+.Nm
+在执行命令前退至后台. 它用于当
+.Nm
+准备询问口令或密语, 但是用户希望它在后台进行. 该选项隐含了
+.Fl n 
+选项. 在远端机器上启动 X11 程序的推荐手法就是类似于
+.Ic ssh -f host xterm 
+的命令.
+.It Fl g
+允许远端主机连接本地转发的端口.
+.It Fl i Ar identity_file
+指定一个 RSA 或 DSA 认证所需的身份(私钥)文件. 默认文件是协议第一版的
+.Pa $HOME/.ssh/identity
+以及协议第二版的
+.Pa $HOME/.ssh/id_rsa
+和
+.Pa $HOME/.ssh/id_dsa
+文件. 也可以在配置文件中对每个主机单独指定身份文件.
+可以同时使用多个
+.Fl i
+选项 (也可以在配置文件中指定多个身份文件).
+.It Fl I Ar smartcard_device
+指定智能卡(smartcard)设备. 参数是设备文件,
+.Nm
+能够用它和智能卡通信, 智能卡里面存储了用户的 RSA 私钥.
+.It Fl k
+禁止转发 Kerberos 门票和 AFS 令牌. 
+可以在配置文件中对每个主机单独设定这个参数.
+.It Fl l Ar login_name
+指定登录远程主机的用户.
+可以在配置文件中对每个主机单独设定这个参数.
+.It Fl m Ar mac_spec
+另外, 对于协议第二版, 这里可以指定一组用逗号隔开, 按优先顺序排列的
+MAC(消息验证码)算法 (message authentication code). 详情以
+.Cm MACs
+为关键字查询.
+.It Fl n
+把 stdin 重定向到
+.Pa /dev/null
+(实际上防止从 stdin 读取数据).
+.Nm
+在后台运行时一定会用到这个选项. 它的常用技巧是远程运行 X11 程序. 例如,
+.Ic ssh -n shadows.cs.hut.fi emacs &
+将会在 shadows.cs.hut.fi 上启动 emacs, 同时自动在加密通道中转发 X11 连接.
+.Nm
+在后台运行. (但是如果
+.Nm
+要求口令或密语, 这种方式就无法工作; 参见
+.Fl f
+选项.)
+.It Fl N
+不执行远程命令. 用于转发端口. (仅限协议第二版)
+.It Fl o Ar option
+可以在这里给出某些选项, 格式和配置文件中的格式一样.
+它用来设置那些没有命令行开关的选项.
+.It Fl p Ar port
+指定远程主机的端口. 可以在配置文件中对每个主机单独设定这个参数.
+.It Fl q
+安静模式. 消除所有的警告和诊断信息.
+.It Fl s
+请求远程系统激活一个子系统. 子系统是 SSH2 协议的一个特性, 能够协助
+其他应用程序(如 sftp)把SSH用做安全通路. 子系统通过远程命令指定.
+.It Fl t
+强制分配伪终端.
+可以在远程机器上执行任何全屏幕(screen-based)程序, 所以非常有用,
+例如菜单服务. 并联的
+.Fl t
+选项强制分配终端, 即使 
+.Nm
+没有本地终端.
+.It Fl T
+禁止分配伪终端.
+.It Fl v
+冗详模式. 使
+.Nm
+打印关于运行情况的调试信息. 在调试连接, 认证和配置问题时非常有用. 并联的
+.Fl v
+选项能够增加冗详程度. 最多为三个.
+.It Fl x
+禁止 X11 转发.
+.It Fl X
+允许 X11 转发. 可以在配置文件中对每个主机单独设定这个参数.
+.Pp
+应该谨慎使用 X11 转发. 如果用户在远程主机上能够绕过文件访问权限
+(根据用户的X授权数据库), 他就可以通过转发的连接访问本地 X11 显示器.
+攻击者可以据此采取行动, 如监视键盘输入等.
+.It Fl C
+要求进行数据压缩 (包括 stdin, stdout, stderr 以及转发 X11 和 TCP/IP 连接
+的数据).  压缩算法和
+.Xr gzip 1
+的一样, 协议第一版中, 压缩级别
+.Dq level
+用
+.Cm CompressionLevel
+选项控制. 压缩技术在 modem 线路或其他慢速连接上很有用, 但是在高速网络上反而
+可能降低速度. 可以在配置文件中对每个主机单独设定这个参数. 另见
+.Cm Compression
+选项.
+.It Fl F Ar configfile
+指定一个用户级配置文件. 如果在命令行上指定了配置文件, 系统级配置文件
+.Pq Pa /etc/ssh/ssh_config
+将被忽略. 默认的用户级配置文件是
+.Pa $HOME/.ssh/config .
+.It Fl L Ar port:host:hostport
+将本地机(客户机)的某个端口转发到远端指定机器的指定端口.
+工作原理是这样的, 本地机器上分配了一个 socket 侦听
+.Ar port
+端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去,
+同时远程主机和
+.Ar host
+的
+.Ar hostport
+端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口.
+IPv6 地址用另一种格式说明:
+.Ar port/host/hostport
+.It Fl R Ar port:host:hostport
+将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.
+工作原理是这样的, 远程主机上分配了一个 socket 侦听
+.Ar port
+端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去,
+同时本地主机和
+.Ar host
+的
+.Ar hostport
+端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机
+才能转发特权端口. IPv6 地址用另一种格式说明:
+.Ar port/host/hostport
+.It Fl D Ar port
+指定一个本地机器
+.Dq 动态的
+应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听
+.Ar port
+端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去,
+根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 
+.Nm
+将充当 SOCKS4 服务器. 只有 root 才能转发特权端口.
+可以在配置文件中指定动态端口的转发.
+.It Fl 1
+强制
+.Nm
+只使用协议第一版.
+.It Fl 2
+强制
+.Nm
+只使用协议第二版.
+.It Fl 4
+强制
+.Nm
+只使用 IPv4 地址.
+.It Fl 6
+强制
+.Nm
+只使用 IPv6 地址.
+.El
+.Sh "配置文件 (CONFIGURATION FILES)"
+.Nm
+可以从用户级配置文件和系统级配置文件中获取更多的配置数据.
+配置文件的格式及其内容参见
+.Xr ssh_config 5 .
+.Sh “环境变量 (ENVIRONMENT)"
+.Nm
+一般将设置下面的环境变量:
+.Bl -tag -width Ds
+.It Ev DISPLAY
+环境变量
+.Ev DISPLAY
+指出 X11 服务器的位置. 
+.Nm
+自动设置这个变量, 变量指向
+.Dq hostname:n
+格式的数据, 其中 hostname 指出运行 shell 的主机, 而 n 是大于等于 1 的整数.
+.Nm
+根据这个数据, 用安全通路转发 X11 连接. 用户一般不需要主动设置
+.Ev DISPLAY
+变量, 否则会导致 X11 连接不安全 (而且会导致用户手工复制所需的授权 cookie).
+.It Ev HOME
+设置为用户根目录的路径.
+.It Ev LOGNAME
+等于
+.Ev USER ;
+用来兼容使用这个变量的系统.
+.It Ev MAIL
+设置为用户邮箱的路径.
+.It Ev PATH
+设置为默认的
+.Ev PATH ,
+如同编译
+.Nm ssh 
+时要求的一样.
+.It Ev SSH_ASKPASS
+如果
+.Nm
+需要一个密语(passphrase), 只要它是终端上启动的, 它会从当前终端上读取. 如果
+.Nm
+没有联接终端, 但是设置了
+.Ev DISPLAY
+和
+.Ev SSH_ASKPASS
+变量,
+.Nm
+就运行
+.Ev SSH_ASKPASS
+指定的程序, 打开一个 X11 窗口读取密语. 当从
+.Pa .Xsession
+或类似的 script 中调用
+.Nm
+时, 这个功能特别有用. (注意, 某些机器上可能需要将输入重定向为
+.Pa /dev/null
+才能工作.)
+.It Ev SSH_AUTH_SOCK
+标识某个 UNIX 域 socket 的路径, 用于和代理通信.
+.It Ev SSH_CONNECTION
+标识连接的客户端和服务器端. 变量包含四个用空格隔开的字段: 客户端IP地址,
+客户端端口号, 服务器IP地址, 服务器端口号.
+.It Ev SSH_ORIGINAL_COMMAND
+如果强制执行了某条命令, 该变量就保存了最初的命令行. 可以用它获取初始参数.
+.It Ev SSH_TTY
+设置为关联当前 shell 或命令的终端名字(设备的路径).
+如果会话没有终端, 就不设置这个变量.
+.It Ev TZ
+如果启动后台进程(daemon)时设置了时区, 就设置这个时区变量, 指出现在的时区
+(就是说, 后台进程会把这个变量传给新建连接).
+.It Ev USER
+设置为登录的用户名.
+.El
+.Pp
+另外, 如果允许用户改变他们的环境数据, 而且有
+.Pa $HOME/.ssh/environment
+这个文件,
+.Nm
+将读取其中数据, 把
+.Dq VARNAME=value
+这种格式的数据行添加进环境数据区. 另见
+.Xr sshd_config 5 
+的
+.Cm PermitUserEnvironment
+选项.
+.Sh "文件 (FILES)"
+.Bl -tag -width Ds
+.It Pa $HOME/.ssh/known_hosts
+主机密钥的记录, 记录有用户登录上来, 但是没有列在 
+.Pa /etc/ssh/ssh_known_hosts 
+中的主机. 参见
+.Xr sshd 8 .
+.It Pa $HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa
+包含了用户的身份信息. 它们分别是协议第一版的 RSA, 协议第二版的 DSA,
+协议第二版的 RSA. 这些文件存有敏感信息, 只应由该用户读取, 不允许其他用户
+访问(读/写/执行). 注意, 如果一个私钥文件能够让其他用户访问,
+.Nm
+将忽略这个文件. 在生成密钥的时候可以指定一个密语(passphrase), 用这个密语和
+3DES 加密文件的敏感部分.
+.It Pa $HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub
+包含认证用的公钥 (以文本格式保存的身份文件的公开部分).
+如果用户希望用协议第一版的 RSA 认证登录这些机器,
+.Pa $HOME/.ssh/identity.pub
+的内容应该添加到所有机器的
+.Pa $HOME/.ssh/authorized_keys
+中. 如果用户希望用协议第二版的 DSA/RSA 认证登录这些机器,
+.Pa $HOME/.ssh/id_dsa.pub
+和
+.Pa $HOME/.ssh/id_rsa.pub
+的内容应该添加到所有机器的
+.Pa $HOME/.ssh/authorized_keys
+中. 这些文件没有敏感数据, 可以(但不是必须)让任何人读取. 
+ssh 绝不会自动访问这些文件, 它们也不是不可或缺; 
+只是为了用户方便才提供这些文件.
+.It Pa $HOME/.ssh/config
+用户级配置文件. 
+.Xr ssh_config 5
+描述了文件格式及其配置选项.
+.It Pa $HOME/.ssh/authorized_keys
+存放 RSA/DSA 公钥, 用户通过它登录机器. 
+.Xr sshd 8
+手册页描述了这个文件的格式. 最简单的文件格式和 .pub 身份文件一样.
+文件内容并非高度敏感, 但是仍然建议仅让此文件的用户读写, 而拒绝其他用户的访问.
+.It Pa /etc/ssh/ssh_known_hosts
+已知的主机密钥的系统级列表. 系统管理员应该准备好这个文件, 把所需主机的公钥
+保存在文件里面. 这个文件应该能够全局读取. 文件中一行一支公钥, 格式是
+(字段用空格隔开): 系统名字, 公钥, 可选的注释域. 如果同一个机器使用了多个名字,
+所有名字都应该(用逗号隔开)列出来. 文件格式在
+.Xr sshd 8
+手册页中有描述.
+.Pp
+登录的时候,
+.Xr sshd 8
+用规范的系统名字(名字服务器返回的)确认客户机; 其他名字也需要, 因为校验密钥前
+.Nm
+不会把用户提供的名字转换为规范名字, 防止能够操作名字服务器的人欺骗主机认证.
+.It Pa /etc/ssh/ssh_config
+系统级配置文件. 
+.Xr ssh_config 5 
+描述了文件格式和配置选项.
+.It Pa /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key
+这三个文件包含了主机密钥的私有部分, 它们用于
+.Cm RhostsRSAAuthentication
+和
+.Cm HostbasedAuthentication .
+如果使用了协议第一版的
+.Cm RhostsRSAAuthentication
+方法,
+.Nm
+必须是 setuid root, 因为只有 root 才能读取主机密钥. 而对于协议第二版的
+.Cm HostbasedAuthentication
+方法,
+.Nm
+使用
+.Xr ssh-keysign 8
+访问主机密钥. 这样消除了验证身份时对
+.Nm
+setuid root 的要求. 默认情况下
+.Nm
+不是 setuid root.
+.It Pa $HOME/.rhosts
+该文件用于
+.Pa \&.rhosts
+认证, 里面列出允许登录的主机/用户对. 
+(注意 rlogin 和 rsh 也使用这个文件, 导致这个文件的应用变得不安全)
+文件中的每一行包括一个主机名字(用名字服务器返回的规范名字), 和主机上的
+用户名字, 用空格隔开. 某些机器上, 如果用户根目录位于 NFS 分区, 
+这个文件可能需要全局可读, 因为
+.Xr sshd 8
+以 root 身份读它. 此外, 该文件必须属于这个用户, 其他人不允许持有写权限.
+对大多数机器推荐的访问权限是, 它的用户可以读写, 而不让其他人访问.
+.Pp
+注意, 默认情况下会安装
+.Xr sshd 8 
+, 因此在允许 \s+2.\s0rhosts 认证前, 
+.Xr sshd 8 
+要求成功进行了 RSA 主机验证. 如果没有
+.Pa /etc/ssh/ssh_known_hosts
+文件存放客户的主机密钥, 密钥可以存放在
+.Pa $HOME/.ssh/known_hosts 
+中. 最简单的做法是用 ssh 从服务器回连客户机; 这样会自动把主机密钥添加到
+.Pa $HOME/.ssh/known_hosts .
+.It Pa $HOME/.shosts
+这个文件的用法和
+.Pa \&.rhosts
+完全一样. 它的目的是允许
+.Nm
+做 rhosts 认证的同时防止
+.Nm rlogin
+或
+.Xr rsh 1
+登录.
+.It Pa /etc/hosts.equiv
+.Pa \&.rhosts 认证
+使用这个文件. 它包含规范的主机名字, 一行一个(
+.Xr sshd 8
+手册页描述了完整的格式). 如果文件中发现了客户机的名字, 
+而且客户机和服务器的用户名相同, 则自动允许登录.
+另外, 一般情况下要求 RSA 主机认证成功. 这个文件只应该让 root 可写.
+.It Pa /etc/ssh/shosts.equiv
+这个文件的用法和
+.Pa /etc/hosts.equiv
+完全一样. 用于允许
+.Nm
+登录, 但不允许 rsh/rlogin 的时候.
+.It Pa /etc/ssh/sshrc
+当用户登录后, 运行 shell (或命令)前, 
+.Nm
+执行这个文件中的命令. 详见
+.Xr sshd 8
+手册页.
+.It Pa $HOME/.ssh/rc
+当用户登录后, 运行 shell (或命令)前, 
+.Nm
+执行这个文件中的命令. 详见
+.Xr sshd 8
+手册页.
+.It Pa $HOME/.ssh/environment
+含有关于环境变量的附加定义, 另见前面的
+.Sx ENVIRONMENT
+节.
+.El
+.Sh "诊断 (DIAGNOSTICS)"
+.Nm
+结束时的状态码就是远端命令结束时的返回码, 如果发生了错误就返回255.
+.Sh "作者 (AUTHORS)"
+OpenSSH 源自最初 Tatu Ylonen 发表的自由 ssh 1.2.12.
+Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
+Theo de Raadt 和 Dug Song 消除了许多 BUGS, 增加新的特征, 从而创建了 OpenSSH.
+Markus Friedl 贡献了对 SSH 协议1.5版和2.0版的支持.
+.Sh "另见 (SEE ALSO)"
+.Xr rsh 1 ,
+.Xr scp 1 ,
+.Xr sftp 1 ,
+.Xr ssh-add 1 ,
+.Xr ssh-agent 1 ,
+.Xr ssh-keygen 1 ,
+.Xr telnet 1 ,
+.Xr ssh_config 5 ,
+.Xr ssh-keysign 8 ,
+.Xr sshd 8
+.Rs
+.%A T. Ylonen
+.%A T. Kivinen
+.%A M. Saarinen
+.%A T. Rinne
+.%A S. Lehtinen
+.%T "SSH Protocol Architecture"
+.%N draft-ietf-secsh-architecture-12.txt
+.%D January 2002
+.%O work in progress material
+.Re
+.Sh "[中文版维护人]"
+徐明 <xuming at users.sourceforge.net>
+.Sh "[中文版最新更新]"
+2004/06/11 第一版
+.Sh "《中国Linux论坛man手册页翻译计划》"
+http://cmpp.linuxforum.net
diff --git a/src/man1/stat.1 b/src/man1/stat.1
new file mode 100644
index 0000000..e0ab876
--- /dev/null
+++ b/src/man1/stat.1
@@ -0,0 +1,43 @@
+.TH STAT 1u UNSUP
+.UC 4
+.SH NAME
+stat \- 打印信息节点(inode)内容
+.SH SYNOPSIS(总览)
+.B stat
+.I filename
+.I [filenames ... ]
+.SH DESCRIPTION(描述)
+.PP
+.I stat
+打印出一个信息节点的内容,它们显示为对人可读的格式的\fIstat(2)\fR.
+.PP
+下面是\fIstat\fR的一个示例输出:
+.nf
+File: \*(lq/\*(rq
+Size: 1024         Allocated Blocks: 2            Filetype: Directory
+Mode: (0755/drwxr-xr-x)         Uid: (    0/    root)  Gid: (    0/  system)
+Device:  0,0   Inode: 2         Links: 20   
+Access: Wed Jan  8 12:40:16 1986(00000.00:00:01)
+Modify: Wed Dec 18 09:32:09 1985(00021.03:08:08)
+Change: Wed Dec 18 09:32:09 1985(00021.03:08:08)
+.fi
+.PP
+.SH DIAGNOSTICS(诊断)
+\*(lqCan't stat file\*(rq or \*(lqCan't lstat file\*(rq 通常意味着它不存在.
+\*(lqCan't readlink file\*(rq 暗示符号链接有错误.
+.SH SEE ALSO(另见)
+stat(2),ls(1)
+.SH AUTHOR(作者)
+Rich Kulawiec, Purdue University
+.SH BUGS
+输出不是完全都可理解.
+.sp 1.5
+.ce
+NOT SUPPORTED BY PUCC
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/strings.1 b/src/man1/strings.1
new file mode 100644
index 0000000..63d4eba
--- /dev/null
+++ b/src/man1/strings.1
@@ -0,0 +1,147 @@
+.\" Copyright (c) 1993 Free Software Foundation
+.\" See section COPYING for conditions for redistribution
+.TH strings 1 "25 June 1993" "cygnus support" "GNU Development Tools"
+.de BP
+.sp
+.ti \-.2i
+\(**
+..
+
+.SH NAME
+strings \- 显示文件中的可打印字符
+
+.SH "总览 (SYNOPSIS)"
+.hy 0
+.na
+.TP
+.B strings
+.RB "[\|" \-a | \-\c
+.RB | \-\-all "\|]" 
+.RB "[\|" \-f | \-\-print\-file\-name "\|]"
+.RB "[\|" \-o "\|]" 
+.RB "[\|" \-\-help "\|]" 
+.RB "[\|" \-v | \-\-version "\|]"  
+.RB "[\|" \-n
+.I min\-len\c
+.RI | \-min\-len\c
+.RB | "\-\-bytes="\c
+.I min\-len\c
+\&\|]
+.RB "[\|" \-t
+.I {o,x,d}\c
+.RB "[\|" "\-\-target=\fIbfdname" "\|]"
+.RB | "\-\-radix="\c
+.I {o,x,d}\c
+\&\|]
+.I file\c
+.ad b
+.hy 1
+
+.SH "描述 (DESCRIPTION)"
+For each
+.I file
+given, 
+GNU \c
+.B strings
+显示 每个 指定的
+.I file
+文件里 包含的 所有 有 4个 (或者 用 选项 指定 的 数字) 以上 连续 可打印 字符 的
+字符串, 在 之后 紧跟着 一个 不可 打印 的 字符. 默认 情况 下, 它 只显示 目标
+文件 初始化 和 装载 段 的 字符串; 对于 其它 类型 的 文件 它 显示 整个 文件 里
+包含 的 所有 字符串.
+.PP
+.B strings
+一般 用来 查看 非 文本 文件 的 内容.
+
+.SH "选项 (OPTIONS)"
+在 这里 并列 的 长选项 和 短选项 都是 等价的.
+.TP
+.B \-a
+.TP
+.B \-\-all
+.TP
+.B \-
+不 只是 扫描 目标 文件 初始化 和 装载 段, 而是 扫描 整个 文件.
+.TP
+.B \-f
+.TP
+.B \-\-print\-file\-name
+在 显示 字符串 之前 先 显示 文件名.
+.TP
+.B \-\-help
+在 标准 输出 打印
+.B strings
+命令 的 选项 
+
+列表
+
+
+然后 退出.
+.TP
+.B \-v
+.TP
+.B \-\-version
+在 标准 输出 打印
+.B strings
+命令 的 版本号 然后 退出.
+.TP
+.B "\-n \fImin\-len\fP"
+.TP
+.B "\-\fImin\-len\fP"
+.TP
+.B "\-bytes=\fImin\-len\fP"
+打印 至少
+.I min\-len
+字符 长 的 字符串. 默认的 是 4.
+.TP
+.BR "\-t " {o,x,d}
+.TP
+.BR "\-\-radix=" {o,x,d}
+在 字符串 前面 显示 其在 文件 中 的 偏移量. 选项 中 的 单个 字符 指定 偏移量
+的 进制 是 八进制, 十六进制 还是 十进制.
+.TP
+.BI "\-\-target=" "bfdname"
+指定 一种 目标 代码 格式 来 代替 你的 系统的 默认 格式. 关于 可用的 目标 代码
+格式 请 参见
+.BR objdump ( 1 ).
+.TP
+.B \-o
+同
+.BR "\-t o" .
+.PP
+
+.SH "参见 (SEE ALSO)"
+.B
+info\c
+\&; 
+.I
+The GNU Binary Utilities\c
+\&, Roland H. Pesch (October 1991)
+里的
+.RB "`\|" binutils "\|'"
+节点.
+.BR ar ( 1 ),
+.BR nm ( 1 ),
+.BR objdump ( 1 ),
+.BR ranlib ( 1 ).
+
+.SH "版权 (COPYING)"
+版权所有 \(co 1993 自由软件基金会
+.PP
+我们 允许 对本手册的 完全 复制, 前提 是 在所有 副本中 保留 本版权声明 和
+本权益声明.
+.PP
+我们 允许 对本手册的 修改版本 进行 复制 和 再分发, 前提是 遵守 上面 逐字复制的
+条款, 以及 确保 因此 所衍生出 成果 也是 使用 和这里 声明的 所有条款 相同的 版权
+和/或 权限声明 发布的.
+.PP
+我们 允许 复制 和 分发 本手册的 其它语言的 译文版本, 前提是 遵守 上面 修改版本
+的条款, 区别 是可以 使用 由自由 软件 基金会 批准的 本版权 和/或 权限 条款的
+译文版 代替 其英文 原文.
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/10/31
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/stty.1 b/src/man1/stty.1
new file mode 100644
index 0000000..b9c37fa
--- /dev/null
+++ b/src/man1/stty.1
@@ -0,0 +1,407 @@
+.TH STTY "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+stty \- 改变并打印终端行设置
+.SH 总览
+.B stty
+[\fI-F device\fR] [\fI--file=device\fR] [\fISETTING\fR]...
+.br
+.B stty
+[\fI-F device\fR] [\fI--file=device\fR] [\fI-a|--all\fR]
+.br
+.B stty
+[\fI-F device\fR] [\fI--file=device\fR] [\fI-g|--save\fR]
+.SH 描述
+.PP
+.\" Add any additional description here
+.PP
+打印或改变终端属性.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+以可读的格式打印当前的所有设置
+.TP
+\fB\-g\fR, \fB\-\-save\fR
+以终端可读的格式打印当前的所有设置
+.TP
+\fB\-F\fR, \fB\-\-file\fR
+打开指定的设备,并用此设备作为输入来代替标准输入
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+显示版本信息并退出
+.PP
+选项-在SETTING之前使用这些选项将被视为无效  星号*表明是非POSIX设置.
+以下是一些系统定义了的可用设置:
+.PP
+.SS "特殊字符"
+.PP
+* dsusp CHAR    
+CHAR表示输入满时,发一个停止信号给终端
+.TP
+eof CHAR
+CHAR表示一个文件结束 (结束输入)
+.TP
+eol CHAR
+CHAR表示当前行结束
+.PP
+* eol2 CHAR     
+CHAR是另一个表示结束当前行的字符
+.TP
+erase CHAR
+CHAR表示擦除最后一个输入字符
+.TP
+intr CHAR
+CHAR表示发一个中断信号
+.TP
+kill CHAR
+CHAR表示擦除当前行
+.PP
+* lnext CHAR    
+CHAR表示输入下一个字符
+.TP
+quit CHAR
+CHAR表示发出一个退出信号
+.PP
+* rprnt CHAR    
+CHAR表示刷新当前行
+.TP
+start CHAR
+CHAR表示在停止输出后重新开始输出
+.TP
+stop CHAR
+CHAR表示停止输出
+.TP
+susp CHAR
+CHAR表示发送一个终端停止信号
+.PP
+* swtch CHAR    
+CHAR表示切换到不同的外壳层
+.PP
+* werase CHAR   
+CHAR表示擦除已经输入的最后一个单词
+.SS "特殊设置"
+.TP
+N
+把输入和输出的波特率设为N
+.PP
+* cols N        
+通知内核终端有N列
+.PP
+* columns N     
+与cols N 相同
+.TP
+ispeed N
+设置输入速度为N
+.PP
+* line N        
+用行约束规则N
+.TP
+min N
+用 \fB\-icanon\fR, 设置一次完整的读操作最小为N个字符
+.TP
+ospeed N
+设置输出速度为N 
+.PP
+* rows N        
+通知内核终端有N行
+.PP
+* size          
+根据内核打印出终端的行数和列数
+.TP
+speed
+打印出终端的速度
+.TP
+time N
+同时用 \fB\-icanon\fR, 设置读超时为十分之N秒
+.SS "控制设置"
+.TP
+[-]clocal
+关闭解调器的控制信号
+.TP
+[-]cread
+允许接收输入
+.PP
+* [-]crtscts    
+允许 RTS/CTS 的握手
+.TP
+csN
+把字符长度设为N, N 为[5..8]
+.TP
+[-]cstopb
+对每字符使用两个停止位 (一个带有 `-')
+.TP
+[-]hup
+当最后一个进程关闭终端后,发一个挂起信号
+.TP
+[-]hupcl
+同 [-]hup
+.TP
+[-]parenb
+在输出中产生奇偶校验位,并要求在输入中也有奇偶校验位
+.TP
+[-]parodd
+设置奇校验 (偶校验用 `-')
+.SS "输入设置:"
+.TP
+[-]brkint
+暂停并产生中断信号
+.TP
+[-]icrnl
+将回车解释为换行
+.TP
+[-]ignbrk
+忽略中断信号
+.TP
+[-]igncr
+忽略回车符
+.TP
+[-]ignpar
+忽略有奇偶校验错的字符
+.PP
+* [-]imaxbel    
+对一个字符产生嘟叫,但不刷新已满的输入缓冲区
+.TP
+[-]inlcr
+将换行解释为回车
+.TP
+[-]inpck
+打开输入奇偶校验
+.TP
+[-]istrip
+清除输入字符的高位(第8位)
+.PP
+* [-]iuclc      
+将大写字符转换成小写字符
+.PP
+* [-]ixany      
+使任何字符都重新开始输出(而 不仅仅是重新输出字符能实现此功能)
+.TP
+[-]ixoff
+打开发送开始/停止字符的开关
+.TP
+[-]ixon
+打开XON/XOFF的流量控制
+.TP
+[-]parmrk
+标记奇偶校验错误 (使用255-0-character 字符序列)
+.TP
+[-]tandem
+同 [-]ixoff
+.PP
+输出设置:
+.PP
+* bsN           
+回退延迟, N 为 [0..1]
+.PP
+* crN           
+回车延迟, N 为 [0..3]
+.PP
+* ffN           
+换页延迟, N 为 [0..1]
+.PP
+* nlN           
+换行延迟, N 为 [0..1]
+.PP
+* [-]ocrnl      
+将回车解释为换行
+.PP
+* [-]ofdel      
+使用删除字符来填充,而不是用空字符填充
+.PP
+* [-]ofill      
+使用填充字符,不使用定时延迟
+.PP
+* [-]olcuc      
+将小写字符转换成大写
+.PP
+* [-]onlcr      
+将换行解释为回车-换行
+.PP
+* [-]onlret     
+换行执行一次回车
+.PP
+* [-]onocr      
+不在第一列打印回车
+.TP
+[-]opost
+postprocess 输出
+.PP
+* tabN          
+水平tab键延迟, N 为 [0..3]
+.PP
+* tabs          
+同tab0 
+.PP
+* \fB\-tabs\fR  同tab3
+.PP
+* vtN           
+垂直方向tab键延迟。。。, N 为 [0..1]
+.SS "本地设置:"
+.TP
+[-]crterase
+将擦除字符显示为:退格-空格-退格
+.PP
+* crtkill       
+根据echoprt和echoe的设置去除所有行
+.PP
+* \fB\-crtkill\fR    
+根据echoctl和echok设置去除所有行
+.PP
+* [-]ctlecho    
+在头部符号中显示控制字符'^c')
+.TP
+[-]echo
+显示输入字符
+.PP
+* [-]echoctl    同 [-]ctlecho 
+.TP
+[-]echoe
+同[-]crterase
+.TP
+[-]echok
+在一个杀死字符后显示一个换行
+.PP
+* [-]echoke     同 [-]crtkill
+.TP
+[-]echonl
+即使不显示其它字符也换行
+.PP
+* [-]echoprt    
+向后显示在 '\' 和 '/'之间的擦除字符 
+.TP
+[-]icanon
+打开 erase, kill, werase, 和 rprnt 这些特殊字符
+.TP
+[-]iexten
+打开 非POSIX 特殊字符
+.TP
+[-]isig
+打开中断,退出和挂起这些特殊字符
+.TP
+[-]noflsh
+在中断和退出这些特殊字符后禁止刷新
+.PP
+* [-]prterase   
+同 [-]echoprt 
+.PP
+* [-]tostop     
+停止试图写终端的后台作业
+.PP
+* [-]xcase      
+与icanon同时使用, 表示用`\'退出大写状态
+.PP
+综合设置:
+.PP
+* [-]LCASE      同 [-]lcase
+.TP
+cbreak
+同 \fB\-icanon\fR
+.TP
+\fB\-cbreak\fR
+同 icanon
+.TP
+cooked
+同 brkint ignpar istrip icrnl ixon opost isig
+icanon, eof 和 eol 字符被设为默认值
+.TP
+\fB\-cooked\fR
+同 raw
+.TP
+crt
+同 echoe echoctl echoke
+.TP
+dec
+同 echoe echoctl echoke \fB\-ixany\fR intr ^c erase 0177
+kill ^u
+.PP
+* [-]decctlq    同 [-]ixany
+.TP
+ek
+将擦除,杀死字符设为它们的默认值
+.TP
+evenp
+同 parenb \fB\-parodd\fR cs7
+.TP
+\fB\-evenp\fR
+同 \fB\-parenb\fR cs8
+.PP
+* [-]lcase      同 xcase iuclc olcuc
+.TP
+litout
+同 fB\-parenb\fR \fB\-istrip\fR \fB\-opost\fR cs8
+.TP
+\fB\-litout\fR
+同 parenb istrip opost cs7
+.TP
+nl
+同 \fB\-icrnl\fR \fB\-onlcr\fR
+.TP
+\fB\-nl\fR
+同 icrnl \fB\-inlcr\fR \fB\-igncr\fR onlcr \fB\-ocrnl\fR \fB\-onlret\fR
+.TP
+oddp
+同 parenb parodd cs7
+.TP
+\fB\-oddp\fR
+同 \fB\-parenb\fR cs8
+.TP
+[-]parity
+同 [-]evenp
+.TP
+pass8
+同 \fB\-parenb\fR \fB\-istrip\fR cs8
+.TP
+\fB\-pass8\fR
+同 parenb istrip cs7
+.TP
+raw
+同 \fB\-ignbrk\fR \fB\-brkint\fR \fB\-ignpar\fR \fB\-parmrk\fR \fB\-inpck\fR \fB
+\-istrip\fR
+\fB\-inlcr\fR \fB\-igncr\fR \fB\-icrnl\fR  \fB\-ixon\fR  \fB\-ixoff\fR  \fB\-iuc
+lc\fR  \fB\-ixany\fR
+\fB\-imaxbel\fR \fB\-opost\fR \fB\-isig\fR \fB\-icanon\fR \fB\-xcase\fR min 1 ti
+me 0
+.TP
+\fB\-raw\fR
+同 cooked
+.TP
+sane
+同 cread \fB\-ignbrk\fR brkint \fB\-inlcr\fR \fB\-igncr\fR icrnl
+\fB\-ixoff\fR \fB\-iuclc\fR \fB\-ixany\fR imaxbel opost \fB\-olcuc\fR \fB\-ocrnl
+\fR onlcr
+\fB\-onocr\fR \fB\-onlret\fR \fB\-ofill\fR \fB\-ofdel\fR nl0 cr0 tab0 bs0 vt0 ff
+0
+isig icanon iexten echo echoe echok \fB\-echonl\fR \fB\-noflsh\fR
+\fB\-xcase\fR \fB\-tostop\fR \fB\-echoprt\fR echoctl echoke, 所有特殊字符
+使用缺省值.
+.PP
+本命令处理连接到标准输入的终端行.如不带参数,则输出波特率, 行的约束规则,以及与健全
+的stty相背离的设置.在设置中, CHAR 是逐字读取的, 或是象 ^c, 0x37, 0177 或127这样的
+编码; 特殊值 ^- 或未定义被用来禁止特殊字符.
+.SH "报告臭虫"
+报告臭虫向.
+.SH "参见"
+完整的文档
+.B stty
+保持为Texinfo手册.  如果
+.B info
+及
+.B stty
+在你的机器上正确安装的话, 命令
+.IP
+.B info stty
+.PP
+会使你能够读取完整的手册.
+.SH 版权
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B hunter77 <email>
+.SH "[中文版最新更新]"
+.BR 2003.11.22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/su.1 b/src/man1/su.1
new file mode 100644
index 0000000..52c8e80
--- /dev/null
+++ b/src/man1/su.1
@@ -0,0 +1,62 @@
+.TH SU "1" "1999年8月" "GNU sh-utils 2.0"  FSF
+.SH NAME(名称)
+su \- 运行替换用户和组标识的shell
+.SH SYNOPSIS(总览)
+.B su
+[\fIOPTION\fR]... [\fI-\fR] [\fIUSER \fR[\fIARG\fR]...]
+.SH DESCRIPTION(描述)
+.PP
+.PP
+修改有效用户标识和组标识为USER的.
+.TP
+-, \fB\-l\fR, \fB\-\-login\fR
+使得shell为可登录的shell
+.TP
+\fB\-c\fR, \fB\-\-commmand\fR=\fICOMMAND\fR
+传递单个COMMAND给\fB\-c\fR的shell.
+.TP
+\fB\-f\fR, \fB\-\-fast\fR
+传递\fB\-f\fR给shell(针对csh或tcsh)
+.TP
+\fB\-m\fR, \fB\-\-preserve\-environment\fR
+不重置环境变量
+.TP
+\fB\-p\fR
+与\fB\-m\fR同
+.TP
+\fB\-s\fR, \fB\-\-shell\fR=\fISHELL\fR
+如果/etc/shells允许,运行SHELL.
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+输出版本信息并退出
+.PP
+单一的-意味着\fB\-l\fR.如果没有给定USER,则假定为root.
+.SH (报告BUGS)
+报告bugs,请发邮件到bug-sh-utils at gnu.org.
+.SH (另见)
+以Texinfo手册形式维护的
+.B su
+完全文档.如果你正确地安装了
+.B info
+和
+.B echo
+命令
+.IP
+.B info su
+.PP
+应该可以使你访问到整个手册.
+.SH COPYRIGHT(版权)
+版权所有 \(co 1999 Free Software Foundation, Inc.
+.br
+这是自由软件;参看复制条件的源文件.不作任何担保,更不用说商品性或者基于特殊目的的适
+用性.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/subst.1 b/src/man1/subst.1
new file mode 100644
index 0000000..fc520ae
--- /dev/null
+++ b/src/man1/subst.1
@@ -0,0 +1,116 @@
+.TH SUBST 1 local
+.DA 25 Feb 1990
+.SH NAME
+subst \- 替换文件中的定义
+
+.SH "总览 (SYNOPSIS)"
+.B subst
+[
+.B \-e
+editor
+]
+.B \-f
+substitutions
+victim ...
+
+.SH "描述 (DESCRIPTION)"
+.I Subst
+能够 替换 文件 的 内容, 适用于 针对 本地情况 定制 软件. 它 根据
+.I substitutions
+的 内容, 修改 每一个
+.I victim
+文件.
+.PP
+在
+.I substitutions
+文件 中, 每个 替换说明(substitution) 占用 一行. 每一行 包含 两个域, 用 
+一个或多个 tab 符 隔开.
+第一个 域 是 替换说明 的 \fI名字(name)\fP, 第二个 域 是 它的 \fI值(value)\fP.
+两者 均不应该 包含 ``#'' 字符; 而使用 文本编辑器 的 转义符, 如 ``&'' 和 ``\e'',
+也是 不明智地; 名字 最好 限制在 字母和数字 中; 以 ``#' 开始 的 行 是 注释,
+将被 忽略.
+.PP
+在 \fIvictim\fP 文件 中, 每一个 需要 替换 的 行 (\fI目标行\fP) 必须 跟在
+\fI原形行(prototype line)\fP 后面. 原形行 应该 有 这样 的 限制: 将来 其他 程序
+处理 这个文件 的 时候, 它 被视为 注释. 原形行 必须 包含 目标行 的 "原形", 该
+"原形" 用 ``=(\&)<'' 和 ``>(\&)='' 括起来, 这一行 的 其他内容 都被 忽略掉.
+.I Subst
+将 分析 这个原形, 寻找 替换说明 中 名字域 的 所有 实例, 名字实例 是用 
+``@\&<'' 和 ``>\&@'' 括起来的, 把 它们 改变成 对应的值, 然后 用这个 结果 替换
+目标行.
+
+.SH "选项 (OPTIONS)"
+.TP
+.B \-e
+替换 操作 由
+.IR sed (1)
+编辑器 完成, 它 必须 放在
+.I /bin
+或
+.I /usr/bin
+目录 下面. 用 ``\-e'' 开关 可以 指定 一个 不同位置 的 执行程序.
+
+.SH "示例 (EXAMPLE)"
+.PP
+如果 \fIsubstitutions\fP 文件内容 是
+.PP
+.RS
+.nf
+.ta \w'SECOND'u+4n
+FIRST	111
+SECOND	222
+.fi
+.RE
+.PP
+而 \fIvictim\fP 文件 是
+.PP
+.RS
+.nf
+x = 2;
+/* =(\&)<y = @\&<FIRST>\&@ + @\&<SECOND>\&@;>(\&)= */
+y = 88 + 99;
+z = 5;
+.fi
+.RE
+.PP
+那么 ``\fBsubst \-f \fP\fIsubstitutions victim\fP'' 命令 把 \fIvictim\fP 改变成:
+.PP
+.RS
+.nf
+x = 2;
+/* =(\&)<y = @\&<FIRST>\&@ + @\&<SECOND>\&@;>(\&)= */
+y = 111 + 222;
+z = 5;
+.fi
+.RE
+.SH "文件 (FILES)"
+.ta \w'\fIvictimdir\fP/substtmp.old'u+4n
+\fIvictimdir\fP/substtmp.new	建立出来的新版本文件
+.br
+\fIvictimdir\fP/substtmp.old	经过改名的老版本文件
+
+.SH "另见 (SEE ALSO)"
+sed(1)
+
+.SH "诊断 (DIAGNOSTICS)"
+如果 subst 无法 创建 临时文件, 或者 临时文件 已经 存在, 程序 中止 并 报错.
+
+.SH "历史 (HISTORY)"
+Henry Spencer 写于 U of Toronto.
+.PP
+Rich $alz 在 1991 年 7 月 增加了 ``\-e'' 选项.
+
+.SH BUGS
+当 创建 准备 用 \fIsubst\fP 处理的 文件 时, 很容易 忘记 在 原形行 后面 插入
+一个 要命的 目标行; 如果 你 忘了 目标行, \fIsubst\fP 最终 会 删掉 原形行 
+下面一行, 不管 那行 是 什么.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2004/02/28
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
+
+
diff --git a/src/man1/sum.1 b/src/man1/sum.1
new file mode 100644
index 0000000..3f1581e
--- /dev/null
+++ b/src/man1/sum.1
@@ -0,0 +1,52 @@
+.TH SUM "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+sum \- 计算文件的校验和,以及文件占用的块数
+.SH "总览 (SYNOPSIS)"
+.B ../src/sum
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+显示 每个 文件 FILE  的 校验和, 以及 他们 占用的 块数.
+.TP
+\fB\-r\fR
+取代 \fB\-s\fR, 使用 BSD sum 算法, 块 大小 为 1K
+.TP
+\fB\-s\fR, \fB\-\-sysv\fR
+使用 System V sum 算法, 块 大小 为 512 字节
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+如果 没有 指定 FILE, 或 FILE 是 -, 就从 标准输入
+读取 数据.
+.SH "作者 (AUTHOR)"
+Kayvan Aghaiepour 和 David MacKenzie.
+.SH "报告 BUGS"
+发现的 bug 送往  <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "另见 (SEE ALSO)"
+.B sum
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B sum
+程序, 使用 命令
+.IP
+.B info sum
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/suspend.1 b/src/man1/suspend.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/suspend.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/svn.1 b/src/man1/svn.1
new file mode 100644
index 0000000..dd00ee7
--- /dev/null
+++ b/src/man1/svn.1
@@ -0,0 +1,21 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svn 1
+.SH NAME
+svn \- Subversion 命令行客户端工具
+.SH "SYNOPSIS 总览"
+.TP
+\fBsvn\fP \fIcommand\fP [\fIoptions\fP] [\fIargs\fP]
+.SH "OVERVIEW 概述"
+Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一个记录何人,何时,为何作出修改等等信息的日志,与 CVS,RCS 或者 SCCS 工具类似。
+\fBSubversion\fP 保存着主控源文件的单一拷贝。这份拷贝被称为代码 “仓库” (``repository'');它包含所有的信息,从而可以从中获取这些文件在先前任何时间的版本。
+.
+要获得有关 Subversion 项目的更多信息,请访问
+http://subversion.tigris.org。
+.
+Subversion 及其工具的文档,包括对 \fBsvn\fP,\fBsvnadmin\fP,\fBsvnserve\fP 和 \fBsnvlook\fP 程序详细的使用说明和解释,历史背景,哲学探讨和追求等等,可以从
+http://svnbook.red-bean.com/
+找到。
+.
+运行 `svn help' 来阅读内建的工具文档。
diff --git a/src/man1/svnadmin.1 b/src/man1/svnadmin.1
new file mode 100644
index 0000000..a0e7b80
--- /dev/null
+++ b/src/man1/svnadmin.1
@@ -0,0 +1,21 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnadmin 1
+.SH NAME
+svnadmin \- Subversion 仓库管理工具
+.SH "SYNOPSIS 总览"
+.TP
+\fBsvnadmin\fP \fIcommand\fP \fI/path/to/repos\fP [\fIoptions\fP] [\fIargs\fP]
+.SH "OVERVIEW 概述"
+Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一个记录何人,何时,为何作出修改等等信息的日志,与 CVS,RCS 或者 SCCS 工具类似。
+\fBSubversion\fP 保存着主控源文件的单一拷贝。这份拷贝被称为代码 “仓库” (``repository'');它包含所有的信息,从而可以从中获取这些文件在先前任何时间的版本。
+.
+要获得有关 Subversion 项目的更多信息,请访问
+http://subversion.tigris.org。
+.
+Subversion 及其工具的文档,包括对 \fBsvn\fP,\fBsvnadmin\fP,\fBsvnserve\fP 和 \fBsnvlook\fP 程序详细的使用说明和解释,历史背景,哲学探讨和追求等等,可以从
+http://svnbook.red-bean.com/
+找到。
+.
+运行 `svnadmin help' 来阅读内建的工具文档。
diff --git a/src/man1/svndumpfilter.1 b/src/man1/svndumpfilter.1
new file mode 100644
index 0000000..94ca55a
--- /dev/null
+++ b/src/man1/svndumpfilter.1
@@ -0,0 +1,21 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svndumpfilter 1
+.SH NAME
+svndumpfilter \- 过滤一个 Subversion 仓库的转储文件 `dumpfile'。
+.SH "SYNOPSIS 总览"
+.TP
+\fBsvndumpfilter\fP \fIcommand\fP [\fIoptions\fP & \fIargs\fP]
+.SH "OVERVIEW 概述"
+Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一个记录何人,何时,为何作出修改等等信息的日志,与 CVS,RCS 或者 SCCS 工具类似。
+\fBSubversion\fP 保存着主控源文件的单一拷贝。这份拷贝被称为代码 “仓库” (``repository'');它包含所有的信息,从而可以从中获取这些文件在先前任何时间的版本。
+.
+要获得有关 Subversion 项目的更多信息,请访问
+http://subversion.tigris.org。
+.
+Subversion 及其工具的文档,包括对 \fBsvn\fP,\fBsvnadmin\fP,\fBsvnserve\fP 和 \fBsnvlook\fP 程序详细的使用说明和解释,历史背景,哲学探讨和追求等等,可以从
+http://svnbook.red-bean.com/
+找到。
+.
+运行 `svndumpfilter help' 来阅读内建的工具文档。
diff --git a/src/man1/svnlook.1 b/src/man1/svnlook.1
new file mode 100644
index 0000000..a5d7302
--- /dev/null
+++ b/src/man1/svnlook.1
@@ -0,0 +1,21 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnlook 1
+.SH NAME
+svnlook \- Subversion 仓库检索工具
+.SH "SYNOPSIS 总览"
+.TP
+\fBsvnlook\fP \fIcommand\fP \fI/path/to/repos\fP [\fIoptions\fP] [\fIargs\fP]
+.SH "OVERVIEW 概述"
+Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一个记录何人,何时,为何作出修改等等信息的日志,与 CVS,RCS 或者 SCCS 工具类似。
+\fBSubversion\fP 保存着主控源文件的单一拷贝。这份拷贝被称为代码 “仓库” (``repository'');它包含所有的信息,从而可以从中获取这些文件在先前任何时间的版本。
+.
+要获得有关 Subversion 项目的更多信息,请访问
+http://subversion.tigris.org。
+.
+Subversion 及其工具的文档,包括对 \fBsvn\fP,\fBsvnadmin\fP,\fBsvnserve\fP 和 \fBsnvlook\fP 程序详细的使用说明和解释,历史背景,哲学探讨和追求等等,可以从
+http://svnbook.red-bean.com/
+找到。
+.
+运行 `svnlook help' 来阅读内建的工具文档。
diff --git a/src/man1/svnversion.1 b/src/man1/svnversion.1
new file mode 100644
index 0000000..35261b8
--- /dev/null
+++ b/src/man1/svnversion.1
@@ -0,0 +1,21 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnversion 1
+.SH NAME
+svnversion \- 为工作代码产生一个紧缩的 (compat) 版本号。
+.SH "SYNOPSIS 总览"
+.TP
+\fBsvnversion\fP wc_path [\fItrail_url\fP]
+.SH "OVERVIEW 概述"
+Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一个记录何人,何时,为何作出修改等等信息的日志,与 CVS,RCS 或者 SCCS 工具类似。
+\fBSubversion\fP 保存着主控源文件的单一拷贝。这份拷贝被称为代码 “仓库” (``repository'');它包含所有的信息,从而可以从中获取这些文件在先前任何时间的版本。
+.
+要获得有关 Subversion 项目的更多信息,请访问
+http://subversion.tigris.org。
+.
+Subversion 及其工具的文档,包括对 \fBsvn\fP,\fBsvnadmin\fP,\fBsvnserve\fP 和 \fBsnvlook\fP 程序详细的使用说明和解释,历史背景,哲学探讨和追求等等,可以从
+http://svnbook.red-bean.com/
+找到。
+.
+运行不带参数的 `svnversion' 来阅读内建的工具文档。
diff --git a/src/man1/sync.1 b/src/man1/sync.1
new file mode 100644
index 0000000..74007bd
--- /dev/null
+++ b/src/man1/sync.1
@@ -0,0 +1,42 @@
+.TH SYNC "1" "January 2000" "GNU fileutils 4.0p" FSF
+.SH NAME
+sync \- 清空文件系统缓冲区
+.SH "总览 (SYNOPSIS)"
+.B sync
+[\fIOPTION\fR]
+.SH "描述 (DESCRIPTION)"
+.PP
+强迫把更改的块写入磁盘, 并更新超级块。
+.TP
+\fB\-\-help\fR
+显示帮助然后终止。
+.TP
+\fB\-\-version\fR
+显示版本信息然后终止。
+.SH "作者 (AUTHOR)"
+Jim Meyering
+.SH "报告错误 (REPORTING BUGS)"
+把错误报告给 <bug-fileutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+版权所有 \(co 1999 自由软件基金会
+.br
+这一程序是自由软件; 拷贝条件见源文件。
+没有任何担保; 甚至没有适合特定目的的隐含的担保。 
+.SH "参见 (SEE ALSO)"
+.B sync
+的完整的文档是用 Texinfo 手册也写成的。 如果安装了
+.B info
+和
+.B sync
+程序, 用命令
+.IP
+.B info sync
+.PP
+便可以得到完整的手册。
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/8/30
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/tac.1 b/src/man1/tac.1
new file mode 100644
index 0000000..3639ddb
--- /dev/null
+++ b/src/man1/tac.1
@@ -0,0 +1,57 @@
+.TH TAC "1" "Decemuber 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+tac \- 反转显示文件
+.SH "总览 (SYNOPSIS)"
+.B ../src/tac
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+把 每个 文件 FILE 显示在 标准输出, 后面 的 行 放在 前面.
+如果 没有 指定 文件 FILE 或者 FILE 是 -, 就从 标准输入 读取 数据.
+.TP
+\fB\-b\fR, \fB\-\-before\fR
+把 分隔单元 移到 前面, 而不是 后面
+.TP
+\fB\-r\fR, \fB\-\-regex\fR
+分隔单元 是 正规表达式
+.TP
+\fB\-s\fR, \fB\-\-separator\fR=\fISTRING\fR
+用 STRING 取代 换行符(newline) 作为 分隔单元
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+
+.SH "作者 (AUTHOR)"
+Jay Lepreau 和 David MacKenzie.
+
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "另见 (SEE ALSO)"
+.B tac
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B tac
+程序, 使用 命令
+.IP
+.B info tac
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/tail.1 b/src/man1/tail.1
new file mode 100644
index 0000000..f28840b
--- /dev/null
+++ b/src/man1/tail.1
@@ -0,0 +1,108 @@
+.TH TAIL "1" "1999年12月" "GNU textutils 2.0a" FSF
+.SH NAME(名称)
+tail \- 输出文件的末尾部分
+.SH SYNOPSIS(总览)
+.B ../src/tail
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION(描述)
+.\" Add any additional description here
+.PP
+在标准输出上显示每个FILE的最后10行.
+如果多于一个FILE,会一个接一个地显示,
+并在每个文件显示的首部给出文件名.
+如果没有FILE,或者FILE是-,那么就从标准输入上读取.
+.TP
+\fB\-\-retry\fR
+即使tail开始时就不能访问
+或者在tail运行后不能访问,也仍然不停地尝试打开文件.
+\fB\-\-\fR
+只与\fB\-f\fR合用时有用.
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR=\fIN\fR
+输出最后N个字节
+.TP
+\fB\-f\fR, \fB\-\-follow[=\fR{name|descriptor}]
+当文件增长时,输出后续添加的数据;
+\fB\-f\fR, \fB\-\-follow\fR以及
+\fB\-\-follow\fR=\fIdescriptor\fR
+都是相同的意思
+.TP
+\fB\-n\fR, \fB\-\-lines\fR=\fIN\fR
+输出最后N行,而非默认的最后10行
+.TP
+\fB\-\-max\-unchanged\-stats\fR=\fIN\fR
+参看texinfo文档(默认为5)
+.TP
+\fB\-\-max\-consecutive\-size\-changes\fR=\fIN\fR
+参看texinfo文档(默认为200)
+.TP
+\fB\-\-pid\fR=\fIPID\fR
+与\fB\-f\fR合用,表示在进程ID,PID死掉之后结束.
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+从不输出给出文件名的首部
+.TP
+\fB\-s\fR, \fB\-\-sleep\-interval\fR=\fIS\fR
+与\fB\-f\fR合用,表示在每次反复的间隔休眠S秒
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+总是输出给出文件名的首部
+.TP
+\fB\-\-help\fR
+显示帮助信息后退出
+.TP
+\fB\-\-version\fR
+输出版本信息后退出
+.PP
+如果N(字节或者行数)的第一个字符为`+',
+那么从每个文件的开头算起的第N项开始显示,
+否则,
+显示该文件的最后N项.
+N可以有一个倍数前缀:
+b表示512,k表示1024,m表示1048576(1兆).
+第一个选项
+\fB\-VALUE\fR
+或+VALUE
+以\fB\-n\fR VALUE或\fB\-n\fR +VALUE
+方式看待,除非VALUE含有[bkm]后缀倍数
+中的一个,在这种情况下,它被看作
+\fB\-c\fR VALUE
+或者\fB\-c\fR +VALUE
+.PP
+使用\fB\-\-follow\fR (-f)时,tail默认后接文件描述符,
+这意味着即使tail显示的文件改名了,tail仍然可以
+追踪到其末尾部分.
+如果你确实希望查询文件的实际名而非文件描述符
+(例如,日志轮转时),
+这种默认的操作就不是你所期望的了.
+在这种情况下应使用\fB\-\-follow\fR=\fIname\fR.
+这将导致tail通过周期性地重新打开所指定的文件来
+追踪其是否被删除了,或者被其他程序重新创建了.
+.SH AUTHOR(作者)
+Paul Rubin, David MacKenzie, Ian Lance Taylor和Jim Meyering.
+.SH "REPORTING BUGS"(报告BUGS)
+请报告bugs到<bug-textutils at gnu.org>.
+.SH COPYRIGHT(版权)
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"(另见)
+.B tail
+的完整文档是以Texinfo手册形式维护的.
+如果
+.B info
+和
+.B tail
+程序在你那儿都已经安装好了,那么命令
+.IP
+.B info tail
+.PP
+应该会让你访问到整篇手册.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/tar.1 b/src/man1/tar.1
new file mode 100644
index 0000000..85daa06
--- /dev/null
+++ b/src/man1/tar.1
@@ -0,0 +1,332 @@
+.\" @(#)tar.1 1.13.14 99/11/09 Bero;
+.TH TAR 1 "09 November 1999"
+.SH NAME
+tar \- tar 档案文件管理程序的 GNU 版本。
+.SH 总览
+.B tar
+[
+.B \-
+]
+.B A --catenate --concatenate \||\| c --create \||\| d --diff --compare \||\| r --append \||\| t --list \||\| u --update \||\| x -extract --get
+[
+.B --atime-preserve
+]
+[
+.B -b, --block-size N
+]
+[
+.B -B, --read-full-blocks
+]
+[
+.B -C, --directory DIR
+]
+[
+.B --checkpoint	
+]
+[
+.B -f, --file [HOSTNAME:]F
+]
+[
+.B --force-local	
+]
+[
+.B -F, --info-script F --new-volume-script F
+]
+[
+.B -G, --incremental
+]
+[
+.B -g, --listed-incremental F
+]
+[
+.B -h, --dereference
+]
+[
+.B -i, --ignore-zeros
+]
+[
+.B -I, --bzip
+]
+[
+.B --ignore-failed-read
+]
+[
+.B -k, --keep-old-files
+]
+[
+.B -K, --starting-file F
+]
+[
+.B -l, --one-file-system
+]
+[
+.B -L, --tape-length N
+]
+[
+.B -m, --modification-time
+]
+[
+.B -M, --multi-volume
+]
+[
+.B -N, --after-date DATE, --newer DATE
+]
+[
+.B -o, --old-archive, --portability
+]
+[
+.B -O, --to-stdout
+]
+[
+.B -p, --same-permissions, --preserve-permissions
+]
+[
+.B -P, --absolute-paths
+]
+[
+.B --preserve	
+]
+[
+.B -R, --record-number
+]
+[
+.B --remove-files
+]
+[
+.B -s, --same-order, --preserve-order
+]
+[
+.B --same-owner
+]
+[
+.B -S, --sparse
+]
+[
+.B -T, --files-from F
+]
+[
+.B --null	
+]
+[
+.B --totals	
+]
+[
+.B -v, --verbose
+]
+[
+.B -V, --label NAME
+]
+[
+.B --version	
+]
+[
+.B -w, --interactive, --confirmation
+]
+[
+.B -W, --verify	
+]
+[
+.B --exclude FILE
+]
+[
+.B -X, --exclude-from FILE
+]
+[
+.B -Z, --compress, --uncompress
+]
+[
+.B -z, --gzip, --ungzip	
+]
+[
+.B --use-compress-program PROG
+]
+[
+.B --block-compress
+]
+[
+.B -[0-7][lmh]	
+]
+.TP
+.I filename1 [ filename2, ... filenameN ] 
+.TP
+.I directory1 [ directory2, ...directoryN ]
+.SH 描述
+tar 程序用于储存或展开 tar 存档文件。存档文件可放在磁盘中 ,也可以存为普通文件。
+tar是需要参数的,可选的参数是A、c、d、r、t、u、x,您在使用tar时必须首先为 tar
+指定至少一个参数;然后,您必须指定要处理的文件或目录。如果指定一个目录则该目录下
+的所有子目录都将被加入存档。
+.SS 应用举例:
+.PP
+1)展开 abc.tar.gz 使用命令: tar xvzf abc.tar.gz
+展开 abc.tar 使用命令: tar xvf abc.tar
+.PP
+2)将当前目录下的 man 目录及其子目录存成存档 man.tar
+tar cf man.tar ./man
+.SH 参数说明
+运行tar时必须要有下列参数中的至少一个才可运行
+.TP
+.B -A, --catenate, --concatenate
+将一存档与已有的存档合并
+.TP
+.B -c, --create	
+建立新的存档
+.TP
+.B -d, --diff, --compare
+比较存档与当前文件的不同之处
+.TP
+.B --delete		
+从存档中删除
+.TP
+.B -r, --append		
+附加到存档结尾
+.TP
+.B -t, --list		
+列出存档中文件的目录
+.TP
+.B -u, --update		
+仅将较新的文件附加到存档中
+.TP
+.B -x, --extract, --get		
+从存档展开文件
+.SH 其他参数
+.TP
+.B --atime-preserve	
+不改变转储文件的存取时间 
+.TP
+.B -b, --block-size N	
+指定块大小为 Nx512 字节(缺省时 N=20)
+.TP
+.B -B, --read-full-blocks	
+\
+读取时重组块(???!!!)
+.TP 
+.B -C, --directory DIR	
+转到指定的目录
+.TP 
+.B --checkpoint		
+读取存档时显示目录名
+.TP
+.B -f, --file [HOSTNAME:]F	
+指定存档或设备 (缺省为 /dev/rmt0)
+.TP
+.B --force-local		
+强制使用本地存档,即使存在克隆
+.TP 
+.B -F, --info-script F --new-volume-script F 
+在每个磁盘结尾使用脚本 F (隐含 -M)
+.TP
+.B -G, --incremental	
+建立老 GNU 格式的备份
+.TP
+.B -g, --listed-incremental F 
+建立新 GNU 格式的备份
+.TP 
+.B -h, --dereference	
+不转储动态链接,转储动态链接指向的文件。
+.TP
+.B -i, --ignore-zeros	
+忽略存档中的 0 字节块(通常意味着文件结束)
+.TP
+.B --ignore-failed-read	
+在不可读文件中作 0 标记后再退出???
+.TP
+.B -k, --keep-old-files	
+保存现有文件;从存档中展开时不进行覆盖
+.TP
+.B -K, --starting-file F	
+从存档文件 F 开始
+.TP
+.B -l, --one-file-system	
+在本地文件系统中创建存档
+.TP
+.B -L, --tape-length N	
+在写入 N*1024 个字节后暂停,等待更换磁盘
+.TP
+.B -m, --modification-time	
+当从一个档案中恢复文件时,不使用新的时间标签
+.TP
+.B -M, --multi-volume	
+建立多卷存档,以便在几个磁盘中存放
+.TP
+.B -N, --after-date DATE, --newer DATE	
+仅存储时间较新的文件
+.TP
+.B -o, --old-archive, --portability	
+以 V7 格式存档,不用 ANSI 格式
+.TP
+.B -O, --to-stdout		
+将文件展开到标准输出
+.TP
+.B -p, --same-permissions, --preserve-permissions 
+展开所有保护信息
+.TP
+.B -P, --absolute-paths	
+不要从文件名中去除 '/'
+.TP
+.B --preserve		
+like -p -s
+与 -p -s 相似
+.TP
+.B -R, --record-number	
+显示信息时同时显示存档中的记录数
+.TP 
+.B --remove-files		
+建立存档后删除源文件
+.TP
+.B -s, --same-order, --preserve-order	
+???
+.TP 
+.B --same-owner
+展开以后使所有文件属于同一所有者
+.TP 
+.B -S, --sparse
+高效处理
+.TP 
+.B -T, --files-from F
+从文件中得到要展开或要创建的文件名
+.TP 
+.B --null
+读取空结束的文件名,使 -C 失效 
+.TP
+.B --totals
+显示用 --create 参数写入的总字节数
+.TP 
+.B -v, --verbose
+详细显示处理的文件
+.TP 
+.B -V, --label NAME
+为存档指定卷标
+.TP 
+.B --version
+显示 tar 程序的版本号
+.TP 
+.B -w, --interactive, --confirmation
+每个操作都要求确认
+.TP 
+.B -W, --verify
+写入存档后进行校验
+.TP 
+.B --exclude FILE
+不把指定文件包含在内
+.TP 
+.B -X, --exclude-from FILE
+从指定文件中读入不想包含的文件的列表
+.TP 
+.B  -y, --bzip2, --bunzip2
+用 bzip2 对存档压缩或解压
+.TP 
+.B -Z, --compress, --uncompress
+用 compress 对存档压缩或解压 
+.TP 
+.B -z, --gzip, --ungzip
+用 gzip 对存档压缩或解压 
+.TP
+.B --use-compress-program PROG
+用 PROG 对存档压缩或解压 ( PROG 需能接受 -d 参数)
+.TP 
+.B --block-compress
+为便于磁盘存储,按块记录存档
+.TP 
+.B -[0-7][lmh]
+指定驱动器和密度[高中低]
+
diff --git a/src/man1/tclsh.1 b/src/man1/tclsh.1
new file mode 100644
index 0000000..121faae
--- /dev/null
+++ b/src/man1/tclsh.1
@@ -0,0 +1,310 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tclsh 1 "" Tcl "Tcl Applications"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tclsh \- 包含 Tcl 解释器的简单的 shell    
+.SH "总览 SYNOPSIS"
+\fBtclsh\fR ?\fIfileName arg arg ...\fR?
+.BE
+
+.SH "描述"
+.PP
+\fBTclsh\fR 是一个 shell     类应用程序,从它的标准输入或一个文件读 Tcl 命令并对其求值(evaluate)。     如果你不加参数的调用,则它交互式的执行,从标准输入读      Tcl     命令并向标准输出打印命令结果和出错信息。它一直运行直到调用 \fBexit\fR    命令或在它的标准输入上读到文件结束。如果在用户的主(home)目录里存在一个文件        \fB.tclshrc\fR  (或在 Windows 平台上的 \fBtclshrc.tcl\fR),在从标准输入读第一条命令之前,\fBtclsh\fR 把这个文件作为一个 Tcl 脚本来求值。
+
+.SH "脚本文件 SCRIPT FILES"
+.PP
+如果加参数调用 \fBtclsh \fR则第一个参数是脚本文件的名字而任何额外的参数作为给脚本使用的变量(见后)。 \fBtclsh\fR        将从指名的文件中读 Tcl      命令而不是从标准输入读取;当到达文件结束时       \fBtclsh\fR  将退出。在这种情况下不自动的对 \fB.tclshrc\fR        求值,如果需要的话,脚本文件总是可以 \fBsource\fR(包含)它。
+.PP
+如果你建立的 Tcl       脚本文件的第一行是 
+.CS
+\fB#!/usr/local/bin/tclsh\fR
+.CE
+则如果你把它标记为可执行的,接着就可以直接在你的 shell   中调用这个脚本文件。这里假定了\fB tclsh\fR  被安装在缺省的位置 /usr/local/bin;如果它被安装在其他地方,那么你需要修改上述行来匹配之。许多 UNIX       系统不允许 \fB#!\fR  行超出     30 个字符的长度,所以要确定 \fBtclsh\fR           可执行文件能被用短文件名访问。
+.PP
+一个更好的途径是用下面三行来开始你的脚本文件:         
+.CS
+\fB#!/bin/sh
+# the next line restarts using tclsh \e
+exec tclsh "$0" "$@"\fR
+.CE
+这种方法比起前面的段落有三个好处。首先,\fBtclsh\fR    二进制文件的位置不需要填入(hard-wired into) 脚本中:      它可以在你的 shell 查找路径中的任何地方。其次,他超越了(get around)了上种方法的      30 字符的文件名的限制。第三,这种方法在 \fBtclsh\fR  自身也是 shell 脚本时仍可运行(一些系统要处理多体系或操作系统:      \fBtclsh\fR          脚本选择某个二进制文件来运行)。第三行导致 \fBsh\fR 和 \fBtclsh\fR      两者来处理脚本,但          \fBexec\fR 只被 \fBsh \fR执行。   \fBsh\fR      首先处理脚本文件;它把第二行作为脚本文件对待并执行第三行。\fBexec\fR      语句导致 shell 停止处理而启动 \fBtclsh\fR      来重新处理整个脚本。当 \fBtclsh\fR      启动时,因为第二行的反斜线导致第三行被作为第二行注释的一部分,它把所有三行都作为注释 [...]
+.PP
+.VS
+You should note that it is also common practise to install tclsh with
+its version number as part of the name.  This has the advantage of
+allowing multiple versions of Tcl to exist on the same system at once,
+but also the disadvantage of making it harder to write scripts that
+start up uniformly across different versions of Tcl.
+.VE
+
+.SH "变量 VARIABLES"
+.PP
+\fBTclsh\fR 设置了下列 Tcl 变量:         
+.TP 15
+\fBargc\fR
+包含 \fIarg\fR  参数的个数(没有则为 0),不包括脚本文件的名字。    
+.TP 15
+\fBargv\fR
+包含一个 Tcl 列表,其元素依次是 \fIarg\fR  参数,如果没有 \fIarg\fR    参数则是一个空串。
+.TP 15
+\fBargv0\fR
+如果指定了 \fIfileName\fR  则在此包含。否则。包含调用 \fBtclsh\fR    使用的名字。    
+.TP 15
+\fBtcl_interactive\fR
+如果交互式运行 \fBtclsh\fR  则包含 1(不指定\fIfileName\fR 并且标准输入是一个终端类设备),否则是 0。      
+
+.SH "提示符 PROMPTS"
+.PP
+当交互式的调用 \fBtclsh\fR  时,它通常为每条命令提示“\fB%\fR”。你可以通过设置变量 \fBtcl_prompt1\fR     和 \fBtcl_prompt2\fR 来改变提示符。如果存在变量    \fBtcl_prompt1\fR  则它必须由一个输出一个提示符的 Tcl     脚本组成;\fBtclsh\fR 对 \fBtcl_prompt1\fR     中的脚本求值而不是输出一个提示符。变量 \fBtcl_prompt2\fR      以类似的方式用在键入了换行而当前命令却不完整的时候;如果没设置     \fBtcl_prompt2\fR   则对不完整的命令不给以提示符。        
+
+.SH "关键字 KEYWORDS"
+argument, interpreter, prompt, script file, shell
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/20
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/tcpdump.1 b/src/man1/tcpdump.1
new file mode 100644
index 0000000..b320052
--- /dev/null
+++ b/src/man1/tcpdump.1
@@ -0,0 +1,1112 @@
+.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997
+.\"     The Regents of the University of California.  All rights reserved.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributions
+.\" retain the above copyright notice and this paragraph in its entirety, (2)
+.\" distributions including binary code include the above copyright notice and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials mentioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of California,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH TCPDUMP 8  "30 June 1997"
+.SH NAME
+tcpdump \- 转储网络上的数据流
+.SH 总览 (SYNOPSIS)
+.na
+.B tcpdump
+[
+.B \-adeflnNOpqStvx
+] [
+.B \-c
+.I count
+] [
+.B \-F
+.I file
+]
+.br
+.ti +8
+[
+.B \-i
+.I interface
+] [
+.B \-r
+.I file
+]
+[
+.B \-s
+.I snaplen
+]
+.br
+.ti +8
+[
+.B \-T
+.I type
+]
+[
+.B \-w
+.I file
+]
+[
+.I expression
+]
+.br
+.ad
+.SH 描述 (DESCRIPTION)
+.LP
+\fITcpdump\fP 打印出 在某个 网络界面 上,
+匹配 布尔表达式 \fIexpression\fP 的报文 的 报头.
+.LP
+.B 对于 SunOS 的 nit 或 bpf 界面:
+要 运行
+.I tcpdump ,
+你 必须 有 
+.I /dev/nit
+或
+.IR /dev/bpf* 
+的 读访问 权限.
+
+.B 对于 Solaris 的 dlpi:
+你 必须 有 网络仿真设备 (network pseudo device), 如
+.IR /dev/le 
+的 读访问 权限.
+
+.B 对于 HP-UX 的 dlpi:
+你 必须 是 root, 或者 把它 安装成 root 的 设置uid 程序.
+
+.B 对于 IRIX 的 snoop:
+你 必须 是 root, 或者 把它 安装成 root 的 设置uid 程序.
+
+.B 对于 Linux:
+你 必须 是 root, 或者 把它 安装成 root 的 设置uid 程序.
+
+.B 对于 Ultrix 和 Digital UNIX:
+一旦 超级用户 使用
+.IR pfconfig (8)
+开放了 promiscuous 操作模式 (promiscuous-mode),
+任何用户 都可以 运行
+.BR tcpdump .
+
+.B 对于 BSD:
+你 必须 有 
+.IR /dev/bpf* 
+的 读访问 权限.
+
+.SH 选项 (OPTIONS)
+.TP
+.B \-a
+试着 把 网络和广播地址 转换成 名称.
+.TP
+.B \-c
+当 收到 \fIcount\fP 报文 后 退出.
+.TP
+.B \-d
+把 编译好的 报文匹配代码 (packet-matching code) 翻译成 可读形式,
+传往 标准输出, 然后退出.
+.TP
+.B \-dd
+把 报文匹配代码 (packet-matching code) 以 
+.B C
+程序片断 的 形式 输出.
+.TP
+.B \-ddd
+把 报文匹配代码 (packet-matching code) 以 十进制数 形式 输出 
+(前面 加上 总数).
+.TP
+.B \-e
+显示 链路层报头.
+.TP
+.B \-f
+以 数字形式 显示 '外部的' 互联网地址, 而不是 字符形式 (这个 选项 用来
+绕开 脑壳坏光的 SUN 黄页服务器 的 问题 \(em 一般说来 当它 翻译 外部网络
+的 数字地址 时 会长期挂起).
+.TP
+.B \-F
+把 \fIfile\fP 的内容 用作 过滤表达式. 忽略 命令行 上 的 表达式.
+.TP
+.B \-i
+监听 \fIinterface\fP.
+如果 不指定 接口, \fItcpdump\fP 在 系统 的 接口 清单 中, 寻找 号码最小,
+已经 配置好的 接口 (loopback 除外). 选中的时候 会 中断 连接.
+.TP
+.B \-l
+行缓冲 标准输出. 可用于 捕捉 数据 的 同时 查看 数据. 例如,
+.br
+``tcpdump\ \ \-l\ \ |\ \ tee dat'' or
+``tcpdump\ \ \-l \ \ > dat\ \ &\ \ tail\ \ \-f\ \ dat''.
+.TP
+.B \-n
+不要把 地址 转换成 名字 (指的是 主机地址, 端口号等)
+.TP
+.B \-N
+不显示 主机名字 中的 域名 部分. 例如, 如果 使用 这个 选项, 
+\fItcpdump\fP 只显示 ``nic'', 而不是 ``nic.ddn.mil''.
+.TP
+.B \-O
+禁止运行 报文匹配代码 的 优化器. 这个选项 只有 当你 怀疑 优化器 有 bug 时 
+才有用.
+.TP
+.B \-p
+\fI禁止\fP 把 接口 置成 promiscuous(杂凑) 模式. 注意, 接口 有可能 因 其他原因
+而 处于 promiscuous 模式; 因此, '-p' 不能 作为
+`ether host {local-hw-addr} 或 ether broadcast' 的 简写.
+.TP
+.B \-q
+快速输出. 显示 较少的 协议信息, 输出行 会 短一点点.
+.TP
+.B \-r
+从 \fIfile\fR 中 读入 数据报 (文件 是用 -w 选项 创建的).
+如果 \fIfile\fR 是 ``-'', 就从 标准输入 读入.
+.TP
+.B \-s
+从每个 报文 中 截取 \fIsnaplen\fP 字节的数据, 而不是 缺省的 68 (如果是
+SunOS 的 NIT, 最小值是 96). 68 个字节 适用于 IP, ICMP, TCP 和 UDP, 
+但是 有可能 截掉 名字服务器 和 NFS 报文 的 协议 信息 (见下文).
+输出时 如果指定 ``[|\fIproto\fP]'',  tcpdump 可以 指出 那些 捕捉量过小
+的 数据报, 这里的 \fIproto\fP 是 截断发生处 的 协议层 名称.
+注意, 采用 更大的 捕捉范围 不但 增加了 处理 报文 的 时间, 而且 减少了
+报文的 缓冲 数量, 可能 导致 报文的丢失. 你 应该 把 \fIsnaplen\fP 设的
+尽量小, 只要 能够 容纳 你 需要 的 协议信息 就可以了.
+
+.TP
+.B \-T
+把 通过 "\fIexpression\fP" 挑选出来的 报文 解释成 指定的 \fItype\fR. 
+目前 已知 的 类型 有:
+\fBrpc\fR (远程过程调用 Remote Procedure Call),
+\fBrtp\fR (实时应用协议 Real-Time Applications protocol),
+\fBrtcp\fR (实时应用控制协议 Real-Time Applications control protocol),
+\fBvat\fR (可视音频工具 Visual Audio Tool),
+和
+\fBwb\fR (分布式白板 distributed White Board).
+.TP
+.B \-S
+显示 绝对的, 而不是 相对的 TCP 流序号.
+.TP
+.B \-t
+\fI禁止\fP 显示 时戳标志.
+.TP
+.B \-tt
+显示 未格式化的 时戳标志.
+.TP
+.B \-v
+(稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报 中的 生存周期 和 服务类型.
+.TP
+.B \-vv
+更繁琐的输出. 例如, 显示 NFS 应答报文 的 附加域.
+.TP
+.B \-w
+把 原始报文 存进 \fIfile\fR, 不做 分析 和 显示. 它们 可以 以后 用 \-r 
+选项 显示. 如果 \fIfile\fR 是 ``-'', 就 写往 标准输出.
+.TP
+.B \-x
+以 16 进制数 形式 显示 每一个 报文 (去掉链路层报头后) .
+可以 显示 较小的 完整 报文, 否则 只 显示
+.I snaplen
+个 字节 .
+.IP "\fIexpression\fP"
+.RS
+用来 选择 要 转储 的 数据报.  如果 没有 指定 \fIexpression\fP ,
+就 转储 网络的 全部 报文.  否则, 只转储 相对 \fIexpression\fP 为 `true' 
+的 数据报.
+.LP
+\fIexpression\fP 由 一个或多个
+.I 原语 (primitive) 
+组成. 原语 通常 由 一个
+.I 标识 
+(id, 名称或数字), 和 标识 前面的 一个或多个 修饰子(qualifier) 组成.
+修饰子 有 三种 不同的类型:
+.IP \fItype\fP
+类型修饰子 指出 标识名称 或 标识数字 代表 什么 类型的东西.
+可以使用的 类型 有
+.BR host ,
+.B net
+和
+.BR port .
+例如, `host foo', `net 128.3', `port 20'.  如果 不指定 类型修饰子,
+就使用 缺省的
+.B host .
+
+.IP \fIdir\fP
+方向修饰子 指出 相对于 
+.B 标识
+的 传输方向 (数据是 传入还是传出 标识).
+可以使用的 方向 有
+.BR src ,
+.BR dst ,
+.B "src or dst"
+和
+.B "src and"
+.BR dst .
+例如, `src foo', `dst net 128.3', `src or dst port ftp-data'.  
+如果 不指定 方向修饰子, 就使用 缺省的
+.B "src or dst" .
+对于 `null' 链路层 (就是说 象 slip 之类的 点到点 协议), 用
+.B inbound
+和
+.B outbound
+修饰子 指定 所需的 传输方向.
+.IP \fIproto\fP
+协议修饰子 要求 匹配 指定的协议. 可以使用的 协议 有:
+.BR ether ,
+.BR fddi ,
+.BR ip ,
+.BR arp ,
+.BR rarp ,
+.BR decnet ,
+.BR lat ,
+.BR sca ,
+.BR moprc ,
+.BR mopdl ,
+.B tcp
+和
+.BR udp .
+例如, `ether src foo', `arp net 128.3', `tcp port 21'.  如果 不指定
+协议修饰子, 就使用 所有 符合 类型 的 协议. 例如, `src foo' 指 
+`(ip 或 arp 或 rarp) src foo' (注意后者不符合语法), `net bar' 指 `(ip 或
+arp 或 rarp) net bar',  `port 53' 指 `(tcp 或 udp) port 53'.
+.LP
+[`fddi' 实际上 是 `ether' 的 别名; 分析器 把 它们 视为
+``用在 指定 网络接口 上的 数据链路层.''  FDDI 报头 包含 类似于 以太协议
+的 源目地址, 而且 通常 包含 类似于 以太协议 的 报文类型, 因此 你 可以
+过滤 FDDI 域, 就象 分析 以太协议 一样. FDDI 报头 也 包含 其他 域, 但是
+你 不能 在 过滤器 表达式 里 显式描述.]
+
+.LP
+作为 上述 的 补充, 有一些 特殊的 `原语' 关键字:
+.BR gateway ,
+.BR broadcast ,
+.BR less ,
+.B greater
+和 数学表达式. 
+它们 不同于 上面的模式, 这些 在 后面 有 叙述.
+.LP
+更复杂的 过滤器表达式 可以 通过
+.BR and ,
+.B or
+和
+.B not
+连接 原语 来 组建.  例如, `host foo and not port ftp and not port ftp-data'.
+为了少敲点键, 可以忽略 相同的 修饰子.  例如,
+`tcp dst port ftp or ftp-data or domain' 实际上 就是
+`tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
+.LP
+允许的 原语 有:
+.IP "\fBdst host \fIhost\fR"
+如果 报文中 IP 的 目的地址域 是 \fIhost\fP, 则 逻辑 为 真.
+\fIhost\fP 既可以 是 地址, 也可以 是 主机名.
+.IP "\fBsrc host \fIhost\fR"
+如果 报文中 IP 的 源地址域 是 \fIhost\fP, 则 逻辑 为 真.
+.IP "\fBhost \fIhost\fP
+如果 报文中 IP 的 源地址域 或者 目的地址域 是 \fIhost\fP, 则 逻辑 为 真.
+上面 所有的 host 表达式 都可以 加上
+\fBip\fP, \fBarp\fP, 或 \fBrarp\fP 关键字 做 前缀, 就象:
+.in +.5i
+.nf
+\fBip host \fIhost\fR
+.fi
+.in -.5i
+它等价于:
+.in +.5i
+.nf
+\fBether proto \fI\\ip\fB and host \fIhost\fR
+.fi
+.in -.5i
+如果 \fIhost\fR 是 拥有 多个 IP 地址 的 主机名, 它的 每个地址 都会 被查验.
+
+.IP "\fBether dst \fIehost\fP
+如果 报文的 以太目的地址 是 \fIehost\fP, 则 逻辑 为 真. \fIEhost\fP
+既可以是 名字 (/etc/ethers 里有), 也可以是 数字 (有关 数字格式 另见
+.IR ethers (3N)
+).
+.IP "\fBether src \fIehost\fP
+如果 报文的 以太源地址 是 \fIehost\fP, 则 逻辑 为 真.
+.IP "\fBether host \fIehost\fP
+如果 报文的 以太源地址 或 以太目的地址 是 \fIehost\fP, 则 逻辑 为 真.
+.IP "\fBgateway\fP \fIhost\fP
+如果 报文 把 \fIhost\fP 当做 网关, 则 逻辑 为 真.  也就是说, 报文的
+以太源或目的地址 是 \fIhost\fP, 但是 IP 的 源目地址 都不是 \fIhost\fP.
+\fIhost\fP 必须 是个 主机名, 而且 必须 存在 /etc/hosts 和 /etc/ethers 中.  
+(一个等价的表达式是
+.in +.5i
+.nf
+\fBether host \fIehost \fBand not host \fIhost\fR
+.fi
+.in -.5i
+对于 \fIhost / ehost\fP, 它既可以是 名字, 也可以是 数字.)
+.IP "\fBdst net \fInet\fR"
+如果 报文的 IP 目的地址 属于 网络号 \fInet\fP, 则 逻辑 为 真. \fInet\fP 
+既可以 是 名字 (存在 /etc/networks 中), 也可以是 网络号. 
+(详见 \fInetworks(4)\fP).
+.IP "\fBsrc net \fInet\fR"
+如果 报文的 IP 源地址 属于 网络号 \fInet\fP, 则 逻辑 为 真.
+.IP "\fBnet \fInet\fR"
+如果 报文的 IP 源地址 或 目的地址 属于 网络号 \fInet\fP, 则 逻辑 为 真.
+.IP "\fBnet \fInet\fR \fBmask \fImask\fR"
+如果 IP 地址 匹配 指定 网络掩码(netmask) 的 \fInet\fR,  则 逻辑 为 真.
+本原语 可以用 \fBsrc\fR 或 \fBdst\fR 修饰.
+.IP "\fBnet \fInet\fR/\fIlen\fR"
+如果 IP 地址 匹配 指定 网络掩码 的 \fInet\fR,  则 逻辑 为 真,
+掩码 的 有效位宽 为 \fIlen\fR.
+本原语 可以用 \fBsrc\fR 或 \fBdst\fR 修饰.
+.IP "\fBdst port \fIport\fR"
+如果 报文 是 ip/tcp 或 ip/udp, 并且 目的端口 是 \fIport\fP, 则 逻辑 为 真.
+\fIport\fP 是一个 数字, 也可以是 /etc/services 中 说明过的 名字 (参看
+.IR tcp (4P)
+和
+.IR udp (4P)).
+如果 使用 名字, 则 检查 端口号 和 协议. 如果 使用 数字, 或者 有二义的名字,
+则 只检查 端口号 (例如, \fBdst port 513\fR 将显示 tcp/login 的数据 和 udp/who 
+的数据, 而 \fBport domain\fR 将显示 tcp/domain 和 udp/domain 的数据).
+.IP "\fBsrc port \fIport\fR"
+如果 报文 的 源端口号 是 \fIport\fP, 则 逻辑 为 真.
+.IP "\fBport \fIport\fR"
+如果 报文 的 源端口 或 目的端口 是 \fIport\fP, 则 逻辑 为 真.
+上述的 任意一个 端口表达式 都可以 用 关键字
+\fBtcp\fP 或 \fBudp\fP 做 前缀, 就象:
+.in +.5i
+.nf
+\fBtcp src port \fIport\fR
+.fi
+.in -.5i
+它 只匹配 源端口 是 \fIport\fP 的 TCP 报文.
+.IP "\fBless \fIlength\fR"
+如果 报文 的 长度 小于等于 \fIlength\fP, 则 逻辑 为 真.
+它等同于:
+.in +.5i
+.nf
+\fBlen <= \fIlength\fP.
+.fi
+.in -.5i
+.IP "\fBgreater \fIlength\fR"
+如果 报文 的 长度 大于等于 \fIlength\fP, 则 逻辑 为 真.
+它等同于:
+.in +.5i
+.nf
+\fBlen >= \fIlength\fP.
+.fi
+.in -.5i
+.IP "\fBip proto \fIprotocol\fR"
+如果 报文 是 IP 数据报(参见
+.IR ip (4P)) ,
+其 内容 的 协议类型 是 \fIprotocol\fP, 则 逻辑 为 真.
+\fIProtocol\fP 可以是 数字, 也可以是 下列 名称 中的 一个:
+\fIicmp\fP, \fIigrp\fP, \fIudp\fP, \fInd\fP, 或 \fItcp\fP.
+注意 这些 标识符 \fItcp\fP, \fIudp\fP, 和 \fIicmp\fP 也是 关键字,
+所以 必须 用 反斜杠(\\) 转义, 在 C-shell 中 应该是 \\\\ .
+.IP "\fBether broadcast\fR"
+如果 报文 是 以太广播报文, 则 逻辑 为 真.
+关键字 \fIether\fP 是 可选的.
+.IP "\fBip broadcast\fR"
+如果 报文 是 IP广播报文, 则 逻辑 为 真. Tcpdump 检查 全0 和 全1 广播约定,
+并且 检查 本地 的 子网掩码.
+.IP "\fBether multicast\fR"
+如果 报文 是 以太多目传送报文(multicast), 则 逻辑 为 真.
+关键字 \fIether\fP 是 可选的. 这实际上 是 `\fBether[0] & 1 != 0\fP' 的简写.
+.IP "\fBip multicast\fR"
+如果 报文 是 IP多目传送报文, 则 逻辑 为 真.
+.IP  "\fBether proto \fIprotocol\fR"
+如果 报文协议 属于 以太类型 的 \fIprotocol\fR, 则 逻辑 为 真.
+\fIProtocol\fP 可以是 数字, 也可以是 名字, 如
+\fIip\fP, \fIarp\fP, 或 \fIrarp\fP.
+注意 这些 标识符 也是 关键字, 所以 必须 用 反斜杠(\\) 转义.
+[如果是 FDDI (例如, `\fBfddi protocol arp\fR'), 协议 标识 来自 802.2 
+逻辑链路控制(LLC)报头, 它 通常 位于 FDDI 报头 的 顶层. 当 根据 协议标识
+过滤 报文 时, \fITcpdump\fP 假设 所有的 FDDI 报文 含有 LLC 报头, 而且
+LLC 报头 用的是 SNAP 格式.]
+
+.IP "\fBdecnet src \fIhost\fR"
+如果 DECNET 的 源地址 是
+.IR host ,
+则 逻辑 为 真, 该 主机地址 的 形式 可能 是 ``10.123'', 或者是 DECNET 主机名.
+[只有 配置成 运行 DECNET 的 Ultrix 系统 支持 DECNET 主机名.]
+.IP "\fBdecnet dst \fIhost\fR"
+如果 DECNET 的 目的地址 是
+.IR host ,
+则 逻辑 为 真.
+.IP "\fBdecnet host \fIhost\fR"
+如果 DECNET 的 源地址 或 目的地址 是
+.IR host ,
+则 逻辑 为 真.
+.IP "\fBip\fR, \fBarp\fR, \fBrarp\fR, \fBdecnet\fR"
+是:
+.in +.5i
+.nf
+\fBether proto \fIp\fR
+.fi
+.in -.5i
+的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
+.IP "\fBlat\fR, \fBmoprc\fR, \fBmopdl\fR"
+是:
+.in +.5i
+.nf
+\fBether proto \fIp\fR
+.fi
+.in -.5i
+的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
+注意
+\fItcpdump\fP 目前 不知道 如何 分析 这些 协议.
+.IP  "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
+是:
+.in +.5i
+.nf
+\fBip proto \fIp\fR
+.fi
+.in -.5i
+的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
+.IP  "\fIexpr relop expr\fR"
+如果 这个 关系式 成立, 则 逻辑 为 真, 其中 \fIrelop\fR 是 >, <, >=, <=, =, != 
+之一, \fIexpr\fR 是 数学表达式, 由 常整数(标准C语法形式), 普通的 二进制运算符
+[+, -, *, /, &, |], 一个 长度运算符, 和 指定的 报文数据访问算符 组成.
+要 访问 报文内 的 数据, 使用 下面的 语法:
+.in +.5i
+.nf
+\fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR
+.fi
+.in -.5i
+\fIProto\fR 是 \fBether, fddi,
+ip, arp, rarp, tcp, udp, \fRor \fBicmp\fR 之一, 同时 也指出了 下标 操作 的
+协议层. \fIexpr\fR 给出 字节单位 的 偏移量, 该 偏移量 相对于 指定的 协议层.
+\fISize\fR 是 可选项, 指出 感兴趣的 字节数; 它可以 是 1, 2, 4, 缺省为 1 字节.
+由 关键字 \fBlen\fP 给出的 长度运算符 指明 报文 的 长度.
+
+例如, `\fBether[0] & 1 != 0\fP' 捕捉 所有的 多目传送 报文.
+表达式 `\fBip[0] & 0xf != 5\fP' 捕捉 所有 带 可选域 的 IP 报文.
+表达式 `\fBip[6:2] & 0x1fff = 0\fP' 只捕捉 未分片 和 片偏移为0 的 数据报.
+这种 检查 隐含在 \fBtcp\fP 和 \fBudp\fP 下标操作 中.
+例如, \fBtcp[0]\fP 一定是 TCP \fI报头\fP 的 第一个 字节, 而不是 其中 某个
+IP片 的 第一个 字节.
+.LP
+原语 可以 用 下述 方法 结合使用:
+.IP
+园括弧 括起来的 原语 和 操作符 (园括弧 在 Shell 中 有专用, 所以必须转义).
+.IP
+取反操作 (`\fB!\fP' or `\fBnot\fP').
+.IP
+连结操作 (`\fB&&\fP' or `\fBand\fP').
+.IP
+或操作 (`\fB||\fP' or `\fBor\fP').
+.LP
+取反操作 有 最高优先级.
+或操作 和 连结操作 有 相同的 优先级, 运算时 从左到右 结合.
+注意 连结操作 需要 显式的 \fBand\fR 算符, 而不是 并列放置.
+.LP
+如果 给出 标识符, 但没给 关键字, 那么 暗指 最近使用 的 关键字.
+例如,
+.in +.5i
+.nf
+\fBnot host vs and ace\fR
+.fi
+.in -.5i
+作为
+.in +.5i
+.nf
+\fBnot host vs and host ace\fR
+.fi
+.in -.5i
+的 简写形式, 不应该 和
+.in +.5i
+.nf
+\fBnot ( host vs or ace )\fR
+.fi
+.in -.5i
+混淆.
+.LP
+表达式参数 可以 作为 单个 参数, 也可以 作为 复合参数 传给 tcpdump,
+后者 更方便 一些.
+一般说来, 如果 表达式 包含 Shell 元字符(metacharacter), 传递 单个 括起来
+的 参数 要 容易 一些. 复合参数 在 被解析前 用 空格 联接 一起.
+
+.SH 示例 (EXAMPLES)
+.LP
+显示 所有 进出 \fIsundown\fP 的 报文:
+.RS
+.nf
+\fBtcpdump host sundown\fP
+.fi
+.RE
+.LP
+显示 \fIhelios\fR 和 主机 \fIhot\fR, \fIace\fR 之间 的 报文 传送:
+.RS
+.nf
+\fBtcpdump host helios and \\( hot or ace \\)\fP
+.fi
+.RE
+.LP
+显示 \fIace\fR 和 除了 \fIhelios\fR 以外的 所有 主机 的 IP报文:
+.RS
+.nf
+\fBtcpdump ip host ace and not helios\fP
+.fi
+.RE
+.LP
+显示 本地的主机 和 Berkeley的主机 之间 的 网络数据:
+.RS
+.nf
+.B
+tcpdump net ucb-ether
+.fi
+.RE
+.LP
+显示 所有 通过 网关 \fIsnup\fP 的 ftp 报文
+(注意 这个 表达式 被 单引号 括起, 防止 shell 解释 园括弧):
+.RS
+.nf
+.B
+tcpdump 'gateway snup and (port ftp or ftp-data)'
+.fi
+.RE
+.LP
+显示 既不是 来自 本地主机, 也不是 传往 本地主机 的 网络数据
+(如果 报文 通过 网关 进入 其他网络, 那么 它 绝不可能 到达 你的 本地网络).
+.RS
+.nf
+.B
+tcpdump ip and not net \fIlocalnet\fP
+.fi
+.RE
+.LP
+显示 每个 TCP会话 的 起始 和 结束 报文 (SYN 和 FIN 报文), 而且 会话方 中
+有一个 远程主机.
+.RS
+.nf
+.B
+tcpdump 'tcp[13] & 3 != 0 and not src and dst net \fIlocalnet\fP'
+.fi
+.RE
+.LP
+显示 经过 网关 \fIsnup\fP 中 大于 576 字节的 IP 数据报:
+.RS
+.nf
+.B
+tcpdump 'gateway snup and ip[2:2] > 576'
+.fi
+.RE
+.LP
+显示 IP 广播 或 多目传送 的 数据报, 但这些 报文
+.I 不是
+通过 以太广播 或 以太多目传送 形式 传送的:
+.RS
+.nf
+.B
+tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
+.fi
+.RE
+.LP
+显示 所有 不是 回响请求/应答 的 ICMP 报文 (也就是说, 不是 ping 报文):
+.RS
+.nf
+.B
+tcpdump 'icmp[0] != 8 and icmp[0] != 0"
+.fi
+.RE
+.SH 输出格式 (OUTPUT FORMAT)
+.LP
+\fItcpdump\fP 的 输出格式 取决于 协议. 下面的 描述 给出 大多数 格式 的
+简要说明 和 范例.
+.de HD
+.sp 1.5
+.B
+..
+.HD
+链路层报头 (Link Level Headers)
+.LP
+如果 给出 '-e' 选项 就 显示 链路层报头.
+
+在 以太网上, 显示 报文的 源目地址, 协议 和 报文长度.
+.LP
+在 FDDI 网络上, '-e' 选项 导致 \fItcpdump\fP 显示出 `帧控制(frame control)'
+域,  源目地址 和 报文长度. (`帧控制' 域 负责 解释 其余的 报文.
+普通报文 (例如 装载 IP数据报 的 报文) 是 `异步' 报文, 优先级 介于 0 到 7
+(例如, `\fBasync4\fR').  那些 被认为 携带了 802.2 逻辑链路控制(LLC) 报文;
+如果 它们 \fI不是\fR ISO 数据报 或者 所谓的 SNAP 报文, 就显示 LLC 报头.
+.LP
+\fI(注意: 以下 描述中 假设 你 熟悉 RFC-1144 中说明的 SLIP 压缩算法.)\fP
+.LP
+在 SLIP 链路上, \fItcpdump\fP 显示出 方向指示 (``I'' 指 inbound(进入), 
+``O'' 指 outbound(离开)), 报文类型 和 压缩信息.
+首先显示的 是 报文类型. 有三种 类型 \fIip\fP, \fIutcp\fP 和 \fIctcp\fP.
+对于 \fIip\fR 报文 不再 显示 更多的 链路信息.
+对于 TCP 报文, 在 类型 后面 显示 连接标识.
+如果 报文 是 压缩过的, 就显示出 它的 编码报头.
+这种 特殊情况 以 \fB*S+\fIn\fR 和 \fB*SA+\fIn\fR 的 形式 显示, 这里的
+\fIn\fR 是 流序号 (或者 流序号 和 ack) 的 变化总量.
+如果 不是 特殊情况, 就显示出 0 或 多个 变化.
+变化 由 U (urgent pointer), W (window), A (ack), S (sequence number) 
+和 I (packet ID) 指明, 后跟 一个 变化量(+n or -n), 或者 是一个 新值(=n).
+最后显示 报文中 的 数据总量, 以及 压缩报头 的 长度.
+.LP
+例如, 下面一行 显示了 一个 传出的 压缩的 TCP 报文, 有一个 隐含的 连接标识;
+确认(ack)的 变化量是 6, 流序号 增加 49, 报文ID 增加 6; 有三个字节的数据 和
+六个字节 的 压缩报头:
+.RS
+.nf
+\fBO ctcp * A+6 S+49 I+6 3 (6)\fP
+.fi
+.RE
+.HD
+ARP/RARP 报文
+.LP
+Arp/rarp 报文 的 输出 是 请求类型 及其 参数. 输出格式 大体上 能够 自我解释.
+这里 是一个 简单的例子, 来自 主机 \fIrtsg\fP 到 主机 \fIcsam\fP 的 'rlogin' 
+开始 部分:
+.RS
+.nf
+.sp .5
+\f(CWarp who-has csam tell rtsg
+arp reply csam is-at CSAM\fP
+.sp .5
+.fi
+.RE
+第一行 说明 rtsg 发出 一个 arp 报文 询问 internet 主机 csam 的 以太网地址.
+Csam 用 它的 以太地址 作应答 (这个例子中, 以太地址 是 大写的, internet 地址
+为 小写).
+.LP
+如果 用 \fBtcpdump \-n\fP 看 就 清楚一些:
+.RS
+.nf
+.sp .5
+\f(CWarp who-has 128.3.254.6 tell 128.3.254.68
+arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP
+.fi
+.RE
+.LP
+如果 用 \fBtcpdump \-e\fP, 可以 看到 实际上 第一个 报文 是 广播, 第二个
+报文 是 点到点 的:
+.RS
+.nf
+.sp .5
+\f(CWRTSG Broadcast 0806  64: arp who-has csam tell rtsg
+CSAM RTSG 0806  64: arp reply csam is-at CSAM\fP
+.sp .5
+.fi
+.RE
+这里 第一个 报文 指出 以太网源地址是 RTSG, 目的地址 是 以太网广播地址,
+类型域 为 16进制数 0806 (类型 ETHER_ARP), 报文全长 64 字节.
+.HD
+TCP 报文
+.LP
+\fI(注意: 以下的描述中 假设 你 熟悉 RFC-793 中 说明的 TCP 协议, 如果 你
+不了解 这个 协议, 无论是 本文 还是 tcpdump 都对你 用处 不大)\fP
+.LP
+一般说来 tcp 协议的 输出格式是:
+.RS
+.nf
+.sp .5
+\fIsrc > dst: flags data-seqno ack window urgent options\fP
+.sp .5
+.fi
+.RE
+\fISrc\fP 和 \fIdst\fP 是 源目IP地址和端口.  \fIFlags\fP 是 S (SYN),
+F (FIN), P (PUSH) 或 R (RST) 或 单独的 `.'(无标志), 或者是 它们的 组合.
+\fIData-seqno\fP 说明了 本报文中的数据 在 流序号 中的 位置 (见下例).
+\fIAck\fP 是 在这条连接上 信源机 希望 下一个 接收的 字节的 流序号
+(sequence number).
+\fIWindow\fP 是 在这条连接上 信源机 接收缓冲区 的 字节大小.
+\fIUrg\fP 表明 报文内 是 `紧急(urgent)' 数据.
+\fIOptions\fP 是 tcp 选项, 用 尖括号 括起 (例如, <mss 1024>).
+.LP
+\fISrc, dst\fP 和 \fIflags\fP 肯定 存在.  其他域 依据 报文的 tcp 报头 内容,
+只输出 有必要 的 部分.
+.LP
+下面 是 从 主机 \fIrtsg\fP rlogin 到 主机 \fIcsam\fP 的 开始部分.
+.RS
+.nf
+.sp .5
+\s-2\f(CWrtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
+csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
+rtsg.1023 > csam.login: . ack 1 win 4096
+rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
+csam.login > rtsg.1023: . ack 2 win 4096
+rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
+csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
+csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
+csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1\fP\s+2
+.sp .5
+.fi
+.RE
+第一行 是说 从 rtsg 的 tcp 端口 1023 向 csam 的 \fIlogin\fP 端口 发送 报文.
+\fBS\fP 标志 表明 设置了 \fISYN\fP 标志.
+报文 的 流序号 是 768512, 没有 数据.
+(这个写成 `first:last(nbytes)',  意思是 `从 流序号 \fIfirst\fP 到 \fIlast\fP,
+不包括 \fIlast\fP, 有 \fInbytes\fP 字节的 用户数据'.)
+此时 没有 捎带确认(piggy-backed ack), 有效的 接收窗口 是 4096 字节,
+有一个 最大分段长度(max-segment-size) 的 选项, 请求 设置 mss 为 1024 字节.
+.LP
+Csam 用类似的 形式 应答, 只是 增加了 一个 对 rtsg SYN 的 捎带确认.
+然后 Rtsg 确认 csam 的 SYN.  `.' 意味着 没有 设置 标志.
+这个 报文 不包含 数据, 因此 也就 没有 数据的流序号.
+注意这个 确认流序号 是一个 小整数(1).  当 \fBtcpdump\fP 第一次 发现 一个
+tcp 会话时, 它 显示 报文 携带的 流序号. 在 随后收到的 报文里, 它 显示 当前
+报文 和 最初那个 报文 的 流序号 之 差.
+这 意味着 从第一个报文 开始, 以后的 流序号 可以 理解成 数据流 中的 相对位移
+(每个报文 的 第一个 数据字节 从 '1' 计数).
+`-S' 选项 能够 改变 这个 特性, 直接 显示 原始的 流序号.
+.LP
+在 第六行, rtsg 传给 csam 19 个字节 的 数据 (字节 2 到 20).
+报文中 设置了 PUSH 标志. 第七行 csam 表明 它 收到了 rtsg 的 数据, 字节序号
+是 21, 但不包括 第21个 字节.
+显然 大多数 数据 在 socket 的 缓冲区内, 因为 csam 的 接收窗口 收到的 数据
+小于 19 个 字节. 同时 csam 向 rtsg 发送了 一个字节 的 数据.
+第八和第九行 显示 csam 发送了 两个字节 的 紧急数据 到 rtsg.
+.LP
+如果 捕捉区 设置的 过小, 以至于 \fBtcpdump\fP 不能 捕捉到 完整的 TCP 报头, 
+\fBtcpdump\fP 会 尽可能的 翻译 已捕获的 部分, 然后 显示 ``[|\fItcp\fP]'',
+表明 无法 翻译 其余 部分. 如果 报头 包含 有问题的 选项 (选项表 长度
+太小 或者 超出 报头范围), tcpdump 显示
+``[\fIbad opt\fP]'' 并且 不再 翻译 其他 选项部分 (因为 它 不可能 判断出
+从哪儿 开始).  如果 报头长度 表明 存在 选项, 但是 IP 数据报 长度 不够,
+不可能 真的 保存 选项, tcpdump 就显示 ``[\fIbad hdr length\fP]''.
+.HD
+.B
+UDP 报文
+.LP
+UDP 格式 就象 这个 rwho 报文 显示的:
+.RS
+.nf
+.sp .5
+\f(CWactinide.who > broadcast.who: udp 84\fP
+.sp .5
+.fi
+.RE
+就是说 把一个 udp 数据报 从 主机 \fIactinide\fP 的 \fIwho\fP 端口 发送到
+\fIbroadcast\fP, Internet 广播地址 的 \fIwho\fP 端口.
+报文 包含 84字节 的 用户数据.
+.LP
+某些 UDP 服务 能够 识别出来(从 源目端口号 上), 因而 显示出 更高层的 协议信息.
+特别是 域名服务请求(RFC-1034/1035) 和 NFS 的 RPC 调用(RFC-1050).
+.HD
+UDP 名字服务请求 (Name Server Requests)
+.LP
+\fI(注意: 以下的描述中 假设 你 熟悉 RFC-1035 说明的 域名服务协议. 
+如果你 不熟悉 这个协议, 下面的内容 可能 看起来是 天书.)\fP
+.LP
+名字服务请求 的 格式 是
+.RS
+.nf
+.sp .5
+\fIsrc > dst: id op? flags qtype qclass name (len)\fP
+.sp .5
+\f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fP
+.sp .5
+.fi
+.RE
+主机 \fIh2opolo\fP 访问 \fIhelios\fP 上的 域名服务, 询问
+和 \fIucbvax.berkeley.edu.\fP 关联的 地址记录(qtype=A).
+查询号是 `3'.  `+' 表明 设置了 \fI递归请求\fP 标志.
+查询长度是 37 字节, 不包括 UDP 和 IP 头.  
+查询操作 是 普通的 \fIQuery\fP 操作, 因此 op 域 可以 忽略.  
+如果 op 设置成 其他什么东西, 它应该 显示在 `3' 和 `+' 之间.
+类似的, qclass 是 普通的 \fIC_IN\fP 类型, 也被 忽略了.  
+其他类型的 qclass 应该 在 `A' 后面 显示.
+.LP
+Tcpdump 会检查 一些 不规则 情况, 相应的 结果 作为 补充域 放在 方括号内: 
+如果 某个 查询 包含 回答, 名字服务 或 管理机构部分,
+就把
+.IR ancount ,
+.IR nscount ,
+或
+.I arcount
+显示成 `[\fIn\fPa]', `[\fIn\fPn]' 或  `[\fIn\fPau]',  这里的 \fIn\fP
+代表 相应的 数量.
+如果 在 第二和第三字节 中, 任何一个 回答位(AA, RA 或 rcode) 或 任何一个
+`必须为零' 的位 被 置位, 就显示 `[b2&3=\fIx\fP]',
+这里的 \fIx\fP 是 报头 第二和第三字节 的 16进制数.
+.HD
+UDP 名字服务回答
+.LP
+名字服务回答的 格式 是
+.RS
+.nf
+.sp .5
+\fIsrc > dst:  id op rcode flags a/n/au type class data (len)\fP
+.sp .5
+\f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
+helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fP
+.sp .5
+.fi
+.RE
+第一个例子里, \fIhelios\fP 回答了 \fIh2opolo\fP 发出的 标识为3 的 询问,
+一共是 3 个 回答记录, 3 个 名字服务记录 和 7 个管理结构记录.
+第一个 回答纪录 的 类型是 A (地址), 数据是 internet 地址 128.32.137.3.  
+回答的 全长 为 273 字节, 不包括 UDP 和 IP 报头.  作为 A 记录的 class(C_IN)
+可以 忽略 op (询问) 和 rcode (NoError).
+.LP
+在第二个例子里, \fIhelios\fP 对 标识为2 的 询问 作出 域名不存在 (NXDomain)
+的 回答, 没有 回答记录, 一个 名字服务记录, 没有 管理结构部分.
+ `*' 表明 设置了 \fI权威回答(authoritative answer)\fP. 
+由于 没有 回答记录, 这里就 不显示 type, class 和 data.
+.LP
+其他 标志 字符 可以 显示为 `\-' (\fI没有\fP设置递归有效(RA)) 和 `|' 
+(设置 消息截短(TC)). 如果 `问题' 部分 没有 有效的 内容, 就 显示 `[\fIn\fPq]'.
+.LP
+注意 名字服务的 询问和回答 一般说来 比较大, 68 字节的 \fIsnaplen\fP 可能
+无法 捕捉到 足够的 报文内容. 如果 你 的确 在 研究 名字服务 的 情况, 可以
+使用 \fB\-s\fP 选项 增大 捕捉缓冲区. `\fB\-s 128\fP' 应该 效果 不错了.
+
+.HD
+NFS 请求和响应
+.LP
+Sun NFS (网络文件系统) 的 请求和响应 显示格式 是:
+.RS
+.nf
+.sp .5
+\fIsrc.xid > dst.nfs: len op args\fP
+\fIsrc.nfs > dst.xid: reply stat len op results\fP
+.sp .5
+\f(CW
+sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
+wrl.nfs > sushi.6709: reply ok 40 readlink "../var"
+sushi.201b > wrl.nfs:
+        144 lookup fh 9,74/4096.6878 "xcolors"
+wrl.nfs > sushi.201b:
+        reply ok 128 lookup fh 9,74/4134.3150
+\fP
+.sp .5
+.fi
+.RE
+在第一行, 主机 \fIsushi\fP 向 \fIwrl\fP 发送 号码为 \fI6709\fP 的 交互会话 
+(注意 源主机 后面的 数字 是 交互号, \fI不是\fP 端口).  
+这项请求 长 112 字节, 不包括 UDP 和 IP 报头.  在 文件句柄 (\fUfh\fP) 
+21,24/10.731657119 上执行 \fIreadlink\fP (读取 符号连接) 操作.
+(如果 运气 不错, 就象 这种情况, 文件句柄 可以 依次翻译成 主次设备号,
+i 节点号, 和 事件号(generation number). )
+\fIWrl\fP 回答 `ok' 和 连接的 内容.
+.LP
+在第三行, \fIsushi\fP 请求 \fIwrl\fP 在 目录文件 9,74/4096.6878 中 查找
+`\fIxcolors\fP'. 注意 数据的 打印格式 取决于 操作类型.  格式 应该 可以
+自我说明.
+.LP
+给出 \-v (verbose) 选项 可以 显示 附加信息.
+例如:
+.RS
+.nf
+.sp .5
+\f(CW
+sushi.1372a > wrl.nfs:
+        148 read fh 21,11/12.195 8192 bytes @ 24576
+wrl.nfs > sushi.1372a:
+        reply ok 1472 read REG 100664 ids 417/0 sz 29388
+\fP
+.sp .5
+.fi
+.RE
+(\-v 同时 使它 显示 IP 报头的 TTL, ID, 和 分片域, 在 这个例子里 把它们
+省略了.)  在第一行, \fIsushi\fP 请求 \fIwrl\fP 从 文件 21,11/12.195
+的 偏移位置 24576 开始, 读取 8192 字节. \fIWrl\fP 回答 `ok'; 第二行 显示的 
+报文 是 应答的 第一个 分片, 因此 只有 1472 字节 (其余数据 在 后续的 分片中
+传过来, 但由于 这些分片里 没有 NFS 甚至 UDP 报头, 因此 根据 所使用的 
+过滤器表达式, 有可能 不再显示). \-v 选项 还会 显示 一些 文件属性 (它们 作为 
+文件数据 的 附带部分 传回来): 文件类型 (普通文件 ``REG''), 存取模式
+(八进制数), uid 和 gid, 以及 文件大小.
+.LP
+如果再给一个 \-v 选项 (\-vv), 还能 显示 更多的细节.
+.LP
+注意 NFS 请求 的 数据量 非常大, 除非 增加 \fIsnaplen\fP, 否则 很多细节 
+无法显示. 试一试 `\fB\-s 192\fP' 选项.
+.LP
+NFS 应答报文 没有明确 标明 RPC 操作.  因此 \fItcpdump\fP 保留有 ``近来的'' 
+请求 记录, 根据 交互号 匹配 应答报文. 如果 应答报文 没有 相应的 请求报文,
+它 就 无法分析.
+.HD
+KIP Appletalk (UDP 上的 DDP)
+.LP
+Appletalk DDP 报文 封装在 UDP 数据报 中, 解包后 按 DDP 报文 转储 
+(也就是说, 忽略 所有的 UDP 报头 信息). 文件
+.I /etc/atalk.names
+用来 把 appletalk 网络和节点号 翻译成 名字. 这个文件 的 行格式 是
+.RS
+.nf
+.sp .5
+\fInumber       name\fP
+
+\f(CW1.254              ether
+16.1            icsd-net
+1.254.110       ace\fP
+.sp .5
+.fi
+.RE
+前两行 给出了 appletalk 的 网络名称. 第三行 给出 某个主机 的 名字
+(主机和网络 依据 第三组 数字 区分 \- 网络号 \fI一定\fP 是 两组数字,
+主机号 \fI一定\fP 是 三组 数字.)  号码 和 名字 用 空白符(空格或tab) 隔开.
+.I /etc/atalk.names
+文件 可以 包含 空行 或 注释行(以`#'开始的行).
+.LP
+Appletalk 地址 按 这个格式 显示
+.RS
+.nf
+.sp .5
+\fInet.host.port\fP
+
+\f(CW144.1.209.2 > icsd-net.112.220
+office.2 > icsd-net.112.220
+jssmag.149.235 > icsd-net.2\fP
+.sp .5
+.fi
+.RE
+(如果 不存在
+.I /etc/atalk.names ,
+或者 里面 缺少 有效项目, 就以 数字形式 显示 地址.)
+第一个例子里, 网络 144.1 的 209 节点的 NBP (DDP 端口 2) 向 网络 icsd 的 
+112 节点 的 220 端口 发送数据.
+第二行 和 上面 一样, 只是 知道了 源节点 的 全称 (`office').  
+第三行 是从 网络 jssmag 的 149 节点 的 235 端口 向 icsd-net 的 NBP 端口
+广播 (注意 广播地址 (255) 隐含在 无主机号的 网络名字 中 \- 所以 在
+/etc/atalk.names 中 区分 节点名 和 网络名 是个 好主意).
+.LP
+Tcpdump 可以 翻译 NBP (名字联结协议) 和 ATP (Appletalk 交互协议) 的 报文
+内容. 其他协议 只转储 协议名称 (或号码, 如果 还 没给 这个协议 注册 名称) 
+和 报文大小.
+
+\fBNBP 报文\fP 的 输出格式 就象 下面的 例子:
+.RS
+.nf
+.sp .5
+\s-2\f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"
+jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250
+techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fP\s+2
+.sp .5
+.fi
+.RE
+第一行 是 网络 icsd 的 112 主机 在 网络 jssmag 上的 广播, 对 名字 
+laserwriter 做 名字查询请求. 名字查询请求 的 nbp 标识号 是 190.
+第二行 显示的是 对 这个请求 的 回答 (注意 它们 有 同样的 标识号),
+主机 jssmag.209 表示 在它的 250 端口 注册了 一个 laserwriter 的 资源,
+名字是 "RM1140". 第三行 是 这个请求 的 其他回答, 主机 techpit 的
+186 端口 有 laserwriter 注册的 "techpit".
+
+\fBATP 报文\fP 格式 如 下例 所示:
+.RS
+.nf
+.sp .5
+\s-2\f(CWjssmag.209.165 > helios.132: atp-req  12266<0-7> 0xae030001
+helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
+jssmag.209.165 > helios.132: atp-req  12266<3,5> 0xae030001
+helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
+jssmag.209.165 > helios.132: atp-rel  12266<0-7> 0xae030001
+jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fP\s+2
+.sp .5
+.fi
+.RE
+Jssmag.209 向 主机 helios 发起 12266 号 交互操作, 请求 8 个 报文(`<0-7>'). 
+行尾的 十六进制数 是 请求中 `userdata' 域 的 值.
+.LP
+Helios 用 8 个 512字节 的 报文 应答.  跟在 交互号 后面的 `:digit' 
+给出了 交互过程中 报文的 序列号, 括弧内的 数字 是 报文的 数据量,
+不包括 atp 报头.  报文 7 的 `*' 表明 设置了 EOM 位.
+.LP
+然后 Jssmag.209 请求 重传 第 3 & 5 报文.  Helios 做了 重传后 jssmag.209 
+结束 这次 交互操作. 最后, jssmag.209 发起 下一次 交互请求.  请求中的 `*' 
+表明 \fI没有\fP 设置 XO (exactly once) 位.
+
+.HD
+IP 分片
+.LP
+分片的 Internet 数据报 显示为
+.RS
+.nf
+.sp .5
+\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB+)\fR
+\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB)\fR
+.sp .5
+.fi
+.RE
+(第一种 形式 表明 还有 更多的 分片. 第二种 形式 表明 这是 最后 一片.)
+.LP
+\fIId\fP 是 分片 标识号.  \fISize\fP 是 分片 大小 (字节), 不包括 IP 报头.
+\fIOffset\fP 是 该分片 在 原数据报 中 的 偏移 (单位是字节).
+.LP
+每一个 分片 的 信息 都可以 打印出来.  第一个 分片 包含了 高层 协议 报头,
+显示 协议信息 后 显示 分片 的 信息. 第一个 分片 以后的 分片 不再 含有
+高层协议 报头, 所以 在 源目地址 后面 只显示 分片 信息.
+例如, 下面是 从 arizona.edu 到 lbl-rtsg.arpa 的 一部分 ftp 传输, 途经的
+CSNET 看上去 处理不了 576 字节的 数据报:
+.RS
+.nf
+.sp .5
+\s-2\f(CWarizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328 at 0+)
+arizona > rtsg: (frag 595a:204 at 328)
+rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560\fP\s+2
+.sp .5
+.fi
+.RE
+这里 有几点 需要注意:  首先, 第二行的 地址 不包括 端口号.  这是因为 TCP
+协议 信息 全部 装到了 第一个 分片内, 所以 显示 后续分片的 时候 不可能 知道
+端口 或 流序号. 其次, 第一行的 tcp 流序号部分 看上去有 308 字节的 用户数据, 
+实际上 是 512 字节 (第一个 分片的 308 和 第二个 分片的 204 字节).  如果
+你 正在 寻找 流序号中 的 空洞, 或者 试图 匹配 报文 的 确认(ack), 那你上当了.
+.LP
+如果 报文的 IP 标有 \fI不要分片\fP 标志, 那么 在尾部 显示 \fB(DF)\fP.
+.HD
+时戳
+.LP
+缺省情况下, 所有 输出行 的 前面 都有 时戳. 时戳 就是 当前时间, 显示格式为
+.RS
+.nf
+\fIhh:mm:ss.frac\fP
+.fi
+.RE
+精度 和 内核时钟 一样. 时戳 反映了 内核 收到 报文 的 时间. 从 以太接口 
+收到 报文 到 内核 响应 '报文就绪' 中断 有一个 滞后, 该 滞后 不被考虑.
+
+.SH "另见 (SEE ALSO)"
+traffic(1C), nit(4P), bpf(4), pcap(3)
+
+.SH 作者 (AUTHORS)
+Van Jacobson,
+Craig Leres and
+Steven McCanne, all of the
+Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
+.LP
+当前 版本 可以 从 匿名ftp 获得:
+.LP
+.RS
+.I ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
+.RE
+
+.SH BUGS
+请把 臭虫 报告 传往 tcpdump at ee.lbl.gov.
+.LP
+NIT 不允许 监视 你自己的 传出数据, BPF 可以. 我们 建议 你 使用 后者.
+.LP
+应该 试着 重组 IP 分片, 至少可以 为 更高层的 协议 计算出 正确的 长度.
+.LP
+名字服务逆向询问 转储的 不正确: 打印出 (空的)问题部分, 而实际上 询问 放在了
+回答部分. 有人 认为 这种 逆向询问 本身就是 bug, 应该 修改 产生问题 的 程序, 
+而非 tcpdump.
+.LP
+苹果 Ethertalk DDP 的 报文 应该 象 KIP DDP 的 报文 一样 容易 转储, 事实
+却 不是 这样. 即使 我们 有意 作点什么 来 促销 Ethertalk (我们没有), 
+LBL 也不允许 Ethertalk 出现在 它的 任何网络上, 所以 我们 没办法 测试 
+这些代码.
+.LP
+如果 报文的 路径上 出现 夏时制时间 变化, 可能 导致 时戳 混乱.
+(这个时间变化将忽略)
+.LP
+操作 FDDI 报头的 过滤器表达式 假设 所有的 FDDI 报文 被封装在 以太报文 中.
+这对 IP, ARP 和 DECNET Phase IV 无疑是 正确的, 但对 某些 协议 如 ISO CLNS
+不正确. 因此, 过滤器 有可能会 糊里糊涂的 的 接收 一些 并不真正 匹配
+过滤器表达式 的 报文.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/tee.1 b/src/man1/tee.1
new file mode 100644
index 0000000..c53f403
--- /dev/null
+++ b/src/man1/tee.1
@@ -0,0 +1,53 @@
+.TH TEE "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+tee \- 从标准输入写往文件和标准输出
+
+.SH "总览 (SYNOPSIS)"
+.B tee
+[\fIOPTION\fR]... [\fIFILE\fR]...
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+把 标准输入 的 数据 复制到 每一个 文件 FILE, 同时 送往 标准输出.
+.TP
+\fB\-a\fR, \fB\-\-append\fR
+追加到 给出的 文件, 而不是 覆盖
+.TP
+\fB\-i\fR, \fB\-\-ignore\-interrupts\fR
+忽略 中断信号
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-sh-utils at gnu.org>.
+
+.SH "另见 (SEE ALSO)"
+.B tee
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B tee
+程序, 使用 命令
+.IP
+.B info tee
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/testparm.1 b/src/man1/testparm.1
new file mode 100644
index 0000000..d1a3f6a
--- /dev/null
+++ b/src/man1/testparm.1
@@ -0,0 +1,76 @@
+.TH TESTPARM 1 "11 Nov 1999" "testparm 2.0.6"
+.SH NAME
+testparm \- 检查smb.conf配置文件的内部正确性
+.PP
+.SH 总览
+.PP
+testparm [-s] [-h] [-L servername] [configfilename] [hostname hostIP] 
+.PP
+.SH 描述
+.PP
+此程序是samba套件的一部分。 
+.PP
+testparm是个非常简单的程序,用于检查smbd配置文件的内部正确性。如果程序报告没有什么
+问题,那么你可以放心地使用这个配置文件,并且smbd也会非常顺利地装入它。
+.PP
+注意,这并不保证配置文件中指定的服务可以获得或者如你所愿地那样进行操作。 
+.PP
+如果在它的命令上指定可选的主机名和主机IP地址的话,测试程序将通过服务接口运行并报告是否
+指定的主机可以访问每个服务。
+.PP
+如果testparm在smb.conf文件中找到一个错误的话,它会向调用程序返回退出代码1,否则返回
+退出代码0。这样shell脚本可以测试testparm的输入。
+.PP
+.SH 选项 
+.PP 
+.IP 
+.IP "\fB-s\fP" 
+如果不带这个参数,testparm将提示在列出服务名和服务定义项之间打一个回车。 
+.IP 
+.IP "\fB-h\fP" 
+列出用法信息 
+.IP 
+.IP "\fB-L servername\fP" 
+对服务项名字设定%L这样的宏值。对于测试包含这样的宏值的文件非常有用。 
+.IP 
+.IP "\fBconfigfilename\fP" 
+指定要检查的配置文件名。如果不指定的话,程序对默认的smb.conf文件进行检查。 
+.IP 
+.IP "\fBhostname\fP" 
+如果命令行带有这个参数时,测试程序将检查smb.conf文件中的“hosts allow”和“hosts 
+deny”参数用以测试这些IP地址对应的主机名是否可以访问smbd服务器。如果用这样的参数时,
+hostIP参数也必须一并使用。 
+.IP 
+.IP "\fBhostIP\fP" 
+这个参数用于指定前面给出的主机名相对应的IP地址。如上说述,主机名参数和这个地址必须一并
+使用。 
+.PP
+.SH 相关文件
+.PP
+smb.conf,通常这是smbd使用的配置文件名。
+.SH 诊断
+程序运行的结果将给出装入的配置文件是否正确的信息。如果文件没有被装入时可能显示的是错误和警
+告信息。反之,装入文件正确的话,程序会在标准输出上列出所有可知的服务细节。
+.SH 版本
+.PP
+此手册页是针对samba套件版本2.0的。 
+.SH 另见
+.PP 
+\fBsmb\&.conf (5)\fP, \fBsmbd (8)\fP
+.PP 
+.SH 作者
+.PP
+samba软件和相关工具最初由Andrew Tridgell samba-bugs at samba.org创建。samba现在由开发
+组作为类似Linux内核开发采用的开放源代码计划方式来发展。 
+.PP
+samba手册页最初由Karl Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在
+ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。 
+.PP
+请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/testprns.1 b/src/man1/testprns.1
new file mode 100644
index 0000000..7d36219
--- /dev/null
+++ b/src/man1/testprns.1
@@ -0,0 +1,72 @@
+.TH TESTPRNS 1 "11 Nov 1999" "testprns 2.0.6"
+.PP 
+NAME
+名字
+testprns \- 为smbd测试合法的打印机名
+.PP
+.SH 总览
+.PP 
+\fBtestprns\fP printername [printcapname]
+.PP 
+.SH 描述
+.PP
+此程序是samba套件的一部分。 
+.PP
+testprns是个非常简单的测试程序,用于检查smbd作为服务提供的打印机名是否合法。
+.PP
+在这里“Valid”的意思就是“在printcap中可以找到该打印机”。实际上总是使用printcap文件
+来指定打印机是非常明智的。
+.PP
+.SH 选项 
+.PP 
+.IP 
+.IP "\fBprintername\fP" 
+要测试的打印机名。 
+.IP
+打印机可以从printcap文件的每个记录首字段中获得,字段中用“|” 号来识别单个的打印机
+名和别名。注意当测试请求的打印机名时并不确认或检查printcap文件的总览。打印假脱机系
+统会比testprns程序更多或更少地放宽printcap文件的总览。但是,如果testprns找到了打印
+机的话smbd会作这样的检查。
+.IP 
+.IP "\fBprintcapname\fP" 
+此参数指定想要对给出的打印机名进行查找的printcap文件名。 
+.IP
+如果此参数没有指定的话,testprns将尝试对编译时指定的printcap文件名。
+.PP
+.SH 相关文件
+.PP 
+\fB/etc/printcap\fP 通常是被扫描的默认printcap文件。请参见
+\fBprintcap (5)\fP\&.
+.PP 
+.SH 诊断
+.PP
+如果发现检测的打印机合法,则显示“Printer name <printername> is valid”这样的信息。
+.PP
+如果发现检测的打印机不合法,则显示“Printer name <printername> is not valid”这样的信息。
+.PP
+所有测试结果信息通常情况下会被记录到当前目录下的test.log文件中。程序运行在调试级3上,所以
+会记录十分详细的信息。如果有出错或警告的话应该仔细检查这个文件。
+.PP
+其它信息是不需加以说明的。
+.PP
+.SH 另见
+.PP 
+\fBprintcap (5)\fP, \fBsmbd (8)\fP, \fBsmbclient
+(1)\fP
+.PP 
+.SH 作者
+.PP
+samba软件和相关工具最初由Andrew Tridgell samba-bugs at samba.org创建。samba现在由开发
+组作为类似Linux内核开发采用的开放源代码计划方式来发展。 
+.PP
+samba手册页最初由Karl Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在
+ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。 
+.PP
+请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/tex.1 b/src/man1/tex.1
new file mode 100644
index 0000000..0490daf
--- /dev/null
+++ b/src/man1/tex.1
@@ -0,0 +1,376 @@
+.TH TEX 1 "10 November 2001" "Web2C 7.4.5"
+.\"=====================================================================
+.if n .ds MF Metafont
+.if t .ds MF M\s-2ETAFONT\s0
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP\" for troff
+.el .ds OX TeX\" for nroff
+.\" the same but obliqued
+.\" BX definition must follow TX so BX can use TX
+.if t .ds BX \fRB\s-2IB\s0\fP\*(TX
+.if n .ds BX BibTeX
+.\" LX definition must follow TX so LX can use TX
+.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX
+.if n .ds LX LaTeX
+.if n .ds WB Web
+.if t .ds WB W\s-2EB\s0
+.\"=====================================================================
+.SH NAME
+tex, virtex, initex \- 文本格式化和排版
+.SH "SYNOPSIS 总览"
+.B tex
+.RI [ options ]
+.RI [ commands ]
+.\"=====================================================================
+.SH "DESCRIPTION 描述"
+这份手册页并不全面。此版本的 \*(TX 完整的文档可以从 info 文件或者手册
+.IR "Web2C: A TeX implementation"
+中找到。
+.PP
+\*(TX
+格式化指定的文件中包含着命令的文本,输出一个设备无关的文件 (称为
+.IR DVI
+,即 “设备无关”
+.IR "DeVice Independent" 
+的缩写)。在
+.IR "The \*(OXbook"
+中讲述了 \*(TX 的功能和语言。
+\*(TX 通常与一个大型的预编译的宏包同时使用,有一些特定的排版系统,例如
+\*(LX,
+通常需要很多宏包的支持。
+.PP
+这个版本的 \*(TX 通过查看它的命令行,查找自身是以什么名称被调用的。
+.B initex
+和
+.B virtex
+都是到可执行文件
+.B tex
+的符号链接。当作为
+.BR initex
+调用时 (或者使用了
+.B --ini
+选项时),它可以用于将宏预编译,输出到一个
+.I .fmt
+文件中。当作为
+.B virtex
+调用时,它将使用
+.I plain
+格式。当以任何其他名称调用时,\*(TX 将使用那个名称作为要使用的格式名称。例如,当作为
+.B tex
+调用时,将使用
+.I tex
+格式,这与
+.I plain
+格式是相同的。
+.I plain
+格式中定义的命令记载在
+.IR "The \*(OXbook"
+中。其他常用的格式包括
+.I latex
+和
+.IR amstex
+。
+.PP
+调用 
+\*(TX
+时,命令行给出的
+.I commands
+被传递给它作为输入的第一行。(但是通常将扩展的参数作为输入的第一行要简单许多,因为 UNIX 命令解释器总是会 “吃掉” 或者错误地解释 \*(TX 的符号,例如反斜杠,除非你引用它们。)
+同
+.IR "The \*(OXbook" 
+书中描述的一致,第一行应当以一个文件名开始,或者是一个控制序列
+.IR \econtrolsequence ,
+或者是一个格式名称
+.IR &formatname .
+.PP
+通常的用法是输入
+.RS
+.I tex paper
+.RE
+来处理
+.IR paper.tex
+。名称
+.I paper
+将作为任务名 (``jobname''),也用来产生输出文件名。
+如果 \*(TX 没有在第一行获得一个文件名,jobname 将是
+.IR texput
+。当查找一个文件时,\*(TX 查找带有和不带默认扩展名
+.RI ( .tex )
+的文件,除非名称中已包含了此扩展名。如果
+.I paper
+是任务名(``jobname''),错误消息的日志记录,包含着比通常屏幕上显示的内容更加详细的内容,将保存为
+.IR paper.log
+,输出文件将保存为
+.IR paper.dvi 
+。
+.PP
+这个版本的 \*(TX 可以查看文件
+.I paper.tex
+的第一行,看它是否以特殊序列
+.IR %&
+开始。如果第一行以
+.BI %& format
+.BI --translate-file \ tcxname
+开始,那么 \*(TX 将使用指定的格式和转换表
+.I tcxname
+来处理源文件。格式名称和
+.B --translate-file
+转换定义都可以被忽略,但是不能同时忽略。这个设定超越了基于可执行文件名称的格式选择。
+选项
+.B --parse-first-line
+或者配置中的变量
+.B parse_first_line
+控制了是否允许这样的行为。
+.PP
+在 \*(TX 的错误提示下回应
+.I e
+将使得系统默认的编辑器被启动,修改当前文件的当前行。环境变量 TEXEDIT 可以用来修改所用的编辑器。它可以包含一个字符串 "%s",指定文件名要替换的位置,以及字符串 "%d",指定行号 (如果有的话) 要替换的位置。例如,要使用
+.B emacs
+,可以这样设置 TEXEDIT 字符串,使用
+.B sh
+命令
+.RS
+\fITEXEDIT="emacs +%d %s"; export TEXEDIT\fP
+.RE
+.PP
+为了方便,库中有一个文件
+.IR null.tex
+,内容为空。当 \*(TX 找不到可能的输入时,它会一直让用户输入另一个文件名;如果不想输入任何东西,回应 `null' 可以跳出这个循环。也可以输入 EOF 字符 (通常是 control-D)。
+.PP
+.\"=====================================================================
+.SH "OPTIONS 选项"
+这个版本的 \*(TX 可以解释下列命令行选项。
+.TP
+.B --file-line-error-style
+.rb
+打印错误消息,以
+.I file:line:error
+的形式,与大多数编译器格式化消息的方式相似。
+.TP
+.BI --fmt \ format
+.rb
+使用
+.I format
+作为要使用的格式名,而不是调用
+\*(TX 的名称或者
+.I %&
+一行指定的内容。
+.TP
+.B --help
+.rb
+打印帮助信息,然后退出。
+.TP
+.B --ini
+.rb
+成为
+.BR initex
+,用于转储格式 (dump formats);如果调用的程序名是
+.BR initex
+,那么隐含这个选项。
+.TP
+.BI --interaction \ mode
+.rb
+设置交互模式。mode 可以是
+.IR batchmode ,
+.IR nonstopmode ,
+.IR scrollmode ,
+和
+.IR errorstopmode
+其中之一。这些模式的含义与相应的
+\ecommands
+相同。
+.TP
+.B --ipc
+.rb
+将 DVI 输出发送到一个 socket,同时像通常那样输出到文件。这个选项是否可用取决于安装程序的选择。
+.TP
+.B --ipc-start
+.rb
+与
+.BR --ipc
+类似,并且同时也在另一段启动服务器。这个选项是否可用取决于安装程序的选择。
+.TP
+.BI --jobname \ name
+.rb
+使用
+.I name
+作为作业名,而不是从输入文件名获得。
+.TP
+.BI --kpathsea-debug \ bitmask
+.rb
+根据位掩码,设置路径搜索调试标志。细节请参见
+.I Kpathsea
+手册页。
+.TP
+.BI --maketex \ fmt
+.rb
+启用
+.RI mktex fmt
+,这里
+.I fmt
+必须是
+.I tex
+或者
+.IR tfm
+之一。
+.TP
+.B --mltex
+.rb
+启用 ML\*(TX 扩展。
+.TP
+.BI --no-maketex \ fmt
+.rb
+禁用
+.RI mktex fmt
+这里
+.I fmt
+必须是
+.I tex
+或者
+.IR tfm
+之一。
+.TP
+.BI --output-comment \ string
+.rb
+使用
+.I string
+作为 DVI 文件的注释,而不是时间。
+.TP
+.B --parse-first-line
+.rb
+如果主输入文件的第一行以
+.I %&
+开始,就解释它,从中查找一个转储名称或者一个
+.B --translate-file
+选项。
+.TP
+.BI --progname \ name
+.rb
+伪装是程序
+.IR name
+。这对所用格式和搜索路径都有影响。
+.TP
+.B --recorder
+.rb
+启用文件名记录。这将在一个扩展名为
+.IR .fls
+的文件中记录输入和输出中打开的所有文件。
+.TP
+.B --shell-escape
+.rb
+启用
+.BI \ewrite18{ command }
+结构。
+.I command
+可以是任何 Bourne shell 命令。出于安全原因,这个结构通常被禁止。
+.TP
+.BI --translate-file \ tcxname
+.rb
+使用
+.I tcxname
+转换表。
+.TP
+.B --version
+.rb
+显示版本信息,然后退出。
+.\"=====================================================================
+.SH "ENVIRONMENT 环境"
+参见 Kpathsearch 库的文档 (手册页的 `Path specifications' 节点) 来查看使用环境变量的精确的细节。
+.B kpsewhich
+实用工具可以用来查询变量的值。
+.PP
+警告:在大多数 \*(TX 格式中,不能直接传给 \*(TX 带有 ~ 的文件名,因为 ~ 是一个有特殊意义的字符,它将被扩展,不会作为文件名的一部分。其他程序,例如 \*(MF,没有这个问题。
+.PP
+.TP
+TEXMFOUTPUT
+通常,\*(TX 将输出文件放在当前目录。如果不能在那里创建任何输出文件,它试着在环境变量 TEXMFOUTPUT 指定的目录中创建它。这个参数没有默认值。例如,假设命令是
+.I tex paper
+并且当前目录不可写,如果 TEXMFOUTPUT 设置为
+.IR /tmp
+,\*(TX 试图创建
+.I /tmp/paper.log
+(还有
+.IR /tmp/paper.dvi
+,如果产生了任何输出。)
+.TP
+TEXINPUTS
+.I \einput
+和
+.I \eopenin
+文件的搜索路径。它们一般应当以 ``.'' 开始,使得用户文件可以先于系统文件被找到。空路径成分将被替换为
+.I texmf.cnf
+文件中定义的路径。例如,设置 TEXINPUTS 为 ".:/home/usr/tex:" 来将当前目录和 ``/home/user/tex'' 添加到标准的搜索路径之前。
+.TP
+TEXEDIT
+切换为编辑器的命令模板。默认值通常是
+.BR vi
+,在 \*(TX 编译时进行设置。
+.\"=====================================================================
+.SH "FILES 文件"
+下面提到的文件的位置在各个系统中是不相同的。使用
+.B kpsewhich
+实用工具来找到它们的位置。
+.TP
+.I texmf.cnf
+配置文件。它包含着搜索路径的定义,还有其他配置参数,例如
+.BR parse_first_line .
+.TP
+.I tex.pool
+编码的文本,是 \*(TX 的提示消息。
+.TP
+.I texfonts.map
+文件名映射定义。
+.TP
+.I *.tfm
+\*(TX 字体的度量的文件。
+.TP
+.I *.fmt
+简写的 \*(TX 格式 (.\|fmt) 文件。
+.TP
+.I $TEXMFMAIN/tex/plain/base/plain.tex
+基本的宏包,在 \*(OXbook 中有详细描述。
+.br
+.\"=====================================================================
+.SH BUGS
+这个版本的 \*(TX 实现了大量的可选的扩展。实际上,其中大部分与 \*(TX 的定义有或多或少的冲突。当启用这样的扩展时,\*(TX 启动时打印的提示信息将是
+.B TeXk
+而不是
+.BR TeX
+。
+.PP
+这个版本的 \*(TX 在面积增加或减少时不能捕获算术下溢错误。这种情况很少见,但是一旦出现,产生的
+.I DVI
+文件将是无效的。
+.\"=====================================================================
+.SH "SEE ALSO 参见"
+.BR mf (1),
+.br
+Donald E. Knuth,
+.IR "The \*(OXbook" ,
+Addison-Wesley, 1986, ISBN 0-201-13447-0.
+.br
+Leslie Lamport,
+.IR "\*(LX \- A Document Preparation System" ,
+Addison-Wesley, 1985, ISBN 0-201-15790-X.
+.br
+K. Berry,
+.IR "Eplain: Expanded plain \*(TX" ,
+ftp://ftp.cs.umb.edu/pub/tex/eplain/doc.
+.br
+Michael Spivak,
+.IR "The Joy of \*(OX" ,
+2nd edition, Addison-Wesley, 1990, ISBN 0-8218-2997-1.
+.br
+.I TUGboat
+(the journal of the \*(TX Users Group).
+.\"=====================================================================
+.SH "TRIVIA 提醒"
+\*(TX,如果发音正确的话,与 ``blecchhh'' 押韵 (rhymes)。使用 typewriter 字体时,正确的拼写是 ``TeX'' 而不是 ``TEX'' 或者 ``tex''。
+.\"=====================================================================
+.SH "AUTHORS 作者"
+\*(TX 的设计者是 by Donald E. Knuth,他用他的 \*(WB 系统实现了它。后来,它分别被 Stanford 的 Howard Tricky 和 Cornell 的 Pavel Curtis 移植到了 Unix。当前随 Unix \*(TX 发行的这个版本使用了 \*(WB 到 C 的翻译系统
+.RB ( web2c )
+来产生,
+.RB ( web2c )
+最初由 Tomas Rokicki 和 Tim Morgan 实现。
diff --git a/src/man1/texi2dvi.1 b/src/man1/texi2dvi.1
new file mode 100644
index 0000000..b54245e
--- /dev/null
+++ b/src/man1/texi2dvi.1
@@ -0,0 +1,82 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH TEXI2DVI "1" "June 2003" "texi2dvi 1.23" "User Commands"
+.SH NAME
+texi2dvi \- 打印 Texinfo 文档
+.SH "SYNOPSIS 总览"
+.B texi2dvi
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH "DESCRIPTION 描述"
+依次从 Tex 系统中运行每个 Texinfo 或者 LaTex 文件 FILE,直到解决了所有的交叉引用,建立所有的索引。每个包含 FILE 的目录都将被搜索,查找被包含的文件。FILE 的后缀被用来判断它的语言 (LaTex 还是 Texinfo)。
+.PP
+需要的时候,在运行 Tex 系统之前,使用 makeinfo 来进行 Texinfo 宏扩展。
+.SS "操作模式:"
+.TP
+\fB\-b\fR, \fB\-\-batch\fR
+非交互式
+.TP
+\fB\-c\fR, \fB\-\-clean\fR
+删除所有的辅助文件 (auxiliary)
+.TP
+\fB\-D\fR, \fB\-\-debug\fR
+打开 shell 调试 (设置 \fB\-x\fR)
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+显示此帮助,然后退出
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIOFILE\fR
+将输出保存于 OFILE (隐含着 \fB\-\-clean\fR);这种情况下只能指定一个输入文件 FILE
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR
+不显示输出,除非发生错误 (隐含着 \fB\-\-batch\fR)
+.TP
+\fB\-s\fR, \fB\-\-silent\fR
+与 \fB\-\-quiet\fR 相同
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+显示版本信息,然后退出
+.TP
+\fB\-V\fR, \fB\-\-verbose\fR
+报告每一步行为
+.SS "调整 TeX:"
+.TP
+-@
+使用 @input 而不是 \einput;只对应预先加载的 Texinfo
+.TP
+\fB\-e\fR, \fB\-E\fR, \fB\-\-expand\fR
+强制使用 makeinfo 进行宏扩展
+.TP
+\fB\-I\fR DIR
+搜索 DIR,查找 Texinfo 文件
+.TP
+\fB\-l\fR, \fB\-\-language\fR=\fILANG\fR
+指定文件 FILE 的语言 LANG (值为 LaTex 或 Texinfo)
+.TP
+\fB\-p\fR, \fB\-\-pdf\fR
+使用 pdftex 或者 pdflatex 来处理
+.TP
+\fB\-t\fR, \fB\-\-command\fR=\fICMD\fR
+在输入文件的拷贝中插入 CMD;
+.TP
+或 \fB\-\-texinfo\fR=\fICMD\fR
+累积多个值 (?)
+.PP
+环境变量 BIBTEX, LATEX (或 PDFLATEX), MAKEINDEX, MAKEINFO, TEX (或 PDFTEX), 以及 TEXINDEX 的值将用来运行对应的命令,如果设置了它们的话。任何 CMD 字串都被添加到 Texinfo 输入文件的 @setfilename 之后,或者 LaTex 输入文件的第一行。
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+Texinfo 主页:http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO 参见"
+.B texindex
+的全部文档以 Texinfo 手册页形式保存。如果你的主机上正确安装了
+.B info
+和
+.B texindex
+程序,命令
+.IP
+.B info texindex
+.PP
+将使你可以读取完整的手册。
diff --git a/src/man1/texindex.1 b/src/man1/texindex.1
new file mode 100644
index 0000000..1944639
--- /dev/null
+++ b/src/man1/texindex.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH TEXINDEX "1" "June 2003" "texindex 4.6" "User Commands"
+.SH NAME
+texindex \- 对 Texinfo 索引文件排序
+.SH "SYNOPSIS 总览"
+.B texindex
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH "DESCRIPTION 描述"
+为每个 Tex 输出文件 FILE 产生一个已排序的索引。通常对于文档 `foo.texi',可以简单地指定 FILE... 为 `foo.??'。
+.SH "OPTIONS 选项"
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+显示此帮助,然后退出
+.TP
+\fB\-k\fR, \fB\-\-keep\fR
+在处理之后,保留临时文件
+.TP
+\fB\-\-no\-keep\fR
+在处理之后,删除临时文件 (这是默认行为)
+.TP
+\fB\-o\fR, \fB\-\-output\fR FILE
+将输出保存为 FILE
+.TP
+\fB\-\-version\fR
+显示版本信息,然后退出
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+Texinfo 主页: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO 参见"
+.B texindex
+的全部文档以 Texinfo 手册页形式保存。如果你的主机上正确安装了
+.B info
+和
+.B texindex
+程序,命令
+.IP
+.B info texindex
+.PP
+将使你可以读取完整的手册。
diff --git a/src/man1/times.1 b/src/man1/times.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/times.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/touch.1 b/src/man1/touch.1
new file mode 100644
index 0000000..0a85303
--- /dev/null
+++ b/src/man1/touch.1
@@ -0,0 +1,190 @@
+.\"版权所有:Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998.
+.\"中文版版权所有 晓寒, www.linuxforum.net
+.\"本文件可在LDP通用公共许可证(LDP GENERAL PUBLIC LICENSE)
+.\"(Version 1, September 1998)所描述的条件下自由拷贝.
+.\"此许可证应与本文件一起发布.
+.\"
+.TH TOUCH 1 "November 1998" "GNU fileutils 4.0"
+.SH NAME
+touch \- 修改文件的时间戳记.
+.SH 总览
+.B touch
+.BI "[\-acm][\-r " ref_file(参照文件) "|\-t " time(时间值) "] " file(文件名)...
+.sp
+被废弃的版本:
+.br
+.B touch
+.BI "[\-acm][" ugly_time "] " file(文件)...
+.sp
+GNU版本:
+.br
+.B touch
+.BI "[\-acfm] [\-r " file(参照文件) "] [\-t " decimtime(时间值) ]
+.BI "[\-d " time(时间值) "] [\-\-time={atime,access,use,mtime,modify}]"
+.BI "[\-\-date=" time "] [\-\-reference=" file ]
+.BI "[\-\-no\-create] [\-\-help] [\-\-version] [\-\-] " file(文件)...
+.SH 用法描述
+.B touch
+修改每个指定文件
+.IR file
+的存取(access)和/或修改(modification)时间戳记.
+除非使用\-r或\-t选项,这些时间戳记都将修改为当前的时间.
+使用\-r选项时,这些戳记将按照文件
+.IR ref_file
+的时间戳记来修改(即变得和ref_file时间戳记值相同).
+使用\-t选项,则这些戳记将按照给定的时间值
+.IR time
+进行修改.同时使用或
+同时不使用选项\-a和\-m,存取和修改两个戳记都将被更改.若只使
+用选项\-a,则只修改存取戳记.同样,只使用选项\-m,则只修改修
+改戳记.若要修改戳记的文件尚不存在,除非使用\-c选项,touch
+将创建它(作为空文件,并赋予0666的模式且受umask值的限制).
+.SH "POSIX标准定义的选项"
+.TP
+.B \-a
+修改文件
+.IR file
+的存取时间.
+.TP
+.B \-c
+不创建文件
+.IR file .
+.TP
+.B \-m
+修改文件
+.IR file
+.IR file
+
+.TP
+.BI "\-r " ref_file
+将参照文件
+.I ref_file
+相应的时间戳记的数值作为指定文件
+.IR file
+时间戳记的新值.
+.TP
+.BI "\-t " time
+使用指定的时间值
+.IR time
+作为指定文件
+.IR file
+相应时间戳记的新值.此处的
+.IR time
+规定为如下形式的十进制数∶
+.br
+.nf
+[[CC]YY]MMDDhhmm[.SS]
+.br
+.fi
+这里,CC为年数中的前两位,即”世纪数”;YY为年数的
+后两位,即某世纪中的年数.如果不给出CC的值,则touch
+将把年数CCYY限定在1969--2068之内.MM为月数,DD为天
+将把年数CCYY限定在1969--2068之内.MM为月数,DD为天
+数,hh为小时数(几点),mm为分钟数,SS为秒数.此处秒
+的设定范围是0--61,这样可以处理闰秒.这些数字组成
+的时间是环境变量TZ指定的时区中的一个时间.由于系统
+的限制,早于1970年1月1日的时间是错误的.
+.SH "POSIX标准的细节"
+已被废弃的touch版本使用时会出现模棱两可的情况:
+.IR ugly_time
+到底是时间值还是文件名?由于此种版本尚未提供\-r或\-t选项,
+所以使用时至少要有两个命令行参数,作为时间值,
+.IR ugly_time
+必须为第一个参数.这里的
+.IR ugly_time
+是一个形为MMDDhhmm[yy]的八
+位或十位整数.其中,yy是介于69--99之间表示1969--1999之间某
+一年的两位数,如果不给,表示当前这一年.
+.SH "GNU版本的细节"
+如果第一个指定文件
+.I file
+的名子从形式上说是选项
+.B "\-t"
+的有效参
+数,并且没有给出选项
+.BR "\-d" ,
+.BR "\-r"
+或
+.B "\-t"
+.B "\-t"
+
+数,也没有给`\-\-'选项,那么这个文件名将被解释成时间值.
+.PP
+一般情况下,利用
+.B touch
+修改文件的时间戳记时要求用户时该文
+件的所有者.除非只是把文件的存取和修改两种时间戳记修改为当
+前的时刻,这种情况只要求用户拥有对该文件`写'的权利就行了.
+.SH "GNU版本选项用法简介"
+.TP
+.B "\-a, \-\-time=atime, \-\-time=access, \-\-time=use"
+只修改存取时间.
+.TP
+.B "\-c, \-\-no\-create"
+如果要修改的文件不存在,此选项使touch不去创建它.
+.TP
+.BI "\-d, \-\-date=" time
+使用时间值
+.I time
+代替指定文件的戳记值.可以包含月份
+名,时区名以及`am'和
+`pm'等等.
+.TP
+.B "\-f"
+此选项用于兼容BSD版本的
+.BR touch (1).
+.TP
+.TP
+.B "\-m, \-\-time=mtime, \-\-time=modify"
+只修改修改时间.
+.TP
+.BI "\-r " file ", \-\-reference=" file
+使用参照文件
+.I file
+的时间戳记值修改指定文件的时间戳
+记.
+.TP
+.BI "\-t " decimtime
+这里时间值
+.I decimtime
+的格式为MMDDhhmm[[CC]YY][.ss]
+从左至右分别是月份,日期,小时,分钟,可选的世纪和
+年,以及可选的秒.
+.B touch
+将用这组数值修改指定文件的
+时间戳记.请注意,这个格式与POSIX标准所规定的格式并
+不一样.
+.SH "GNU版本通用选项"
+.TP
+.B "\-\-help"
+使程序在标准输出上显示该程序的用法信息.
+.TP
+.B "\-\-version"
+使程序在标准输出上打印其版本信息.
+.TP
+.SH "GNU版本通用选项"
+.TP
+.B "\-\-help"
+使程序在标准输出上显示该程序的用法信息.
+.TP
+.B "\-\-version"
+使程序在标准输出上打印其版本信息.
+.TP
+.B "\-\-"
+用于使程序终止对选项的解析.
+.SH 运行环境
+环境变量TZ一般用来表明所给时刻是哪个时区的.而环境变量LANG,
+LC_ALL, LC_CTYPE 和 LC_MESSAGES还是一般情况下的意义.
+.SH "遵循"
+GNU版touch的\-t选项的参数所用格式并不符合POSIX标准1003.2的描述.
+.SH "用法实例"
+如果文件\fIfoo\fP并不存在,那么命令`\fItouch foo\fP'将创建它,并把最
+后的修改时间改到现在的时刻.这一特点经常用来引导
+.BR make
+的执行.
+.SH 注意
+这篇说明描述了fileutils-4.0程序包中的
+.B touch.
+其它版本的touch可能与此有稍许不同.
+对本文的修正和增补请致信aeb at cwi.nl.
+程序缺陷请向fileutils-bugs at gnu.ai.mit.edu报告
\ No newline at end of file
diff --git a/src/man1/trap.1 b/src/man1/trap.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/trap.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/troff.1 b/src/man1/troff.1
new file mode 100644
index 0000000..c9bde7a
--- /dev/null
+++ b/src/man1/troff.1
@@ -0,0 +1,675 @@
+'\" t
+.ig
+troff.man
+
+Last update : 9 Jan 2002
+
+This file is part of groff, the GNU roff type-setting system.
+
+Copyright (C) 1989, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+written by James Clark
+
+modified by Werner Lemberg <wl at gnu.org>
+            Bernd Warken <bwarken at mayn.de>
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this .ig-section and AUTHOR, with no
+Front-Cover Texts, and with no Back-Cover Texts.
+
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
+..
+.
+.
+.\" --------------------------------------------------------------------
+.\" Setup
+.\" --------------------------------------------------------------------
+.
+.mso www.tmac
+.
+.if n \{\
+.  mso tty-char.tmac
+.  ftr CR R
+.  ftr CI I
+.  ftr CB B
+.\}
+.
+.if '\*[.T]'dvi' \
+.  ftr CB CW
+.
+.de TQ
+.br
+.ns
+.TP \\$1
+..
+.
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.
+.
+.\" --------------------------------------------------------------------
+.\" Title
+.\" --------------------------------------------------------------------
+.
+.TH TROFF 1 "16 September 2002" "Groff Version 1.18.1"
+.SH NAME
+troff \- groff 文档排版系统的 troff 处理器
+.
+.
+.\" --------------------------------------------------------------------
+.SH "总览 SYNOPSIS"
+.\" --------------------------------------------------------------------
+.
+.nr a \n(.j
+.ad l
+.nr i \n(.i
+.in +\w'\fBtroff 'u
+.ti \niu
+.B troff
+.de OP
+.ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
+.el .RB "[\ " "\\$1" "\ ]"
+..
+.OP \-abcivzCERU
+.OP \-d cs
+.OP \-f fam
+.OP \-F dir
+.OP \-m name
+.OP \-M dir
+.OP \-n num
+.OP \-o list
+.OP \-r cn
+.OP \-T name
+.OP \-w name
+.OP \-W name
+.RI "[\ " files\|.\|.\|. "\ ]"
+.br
+.ad \na
+.P
+在一个命令行选项与其参数之间可以有空格。
+.
+.
+.\" --------------------------------------------------------------------
+.SH "描述 DESCRIPTION"
+.\" --------------------------------------------------------------------
+.
+这份手册页描述了 GNU 版本的
+.BR troff .
+它是 groff 文档排版系统的一部分。
+.
+它与 UNIX troff 的功能兼容,但是有很多的扩展,参见
+.BR \%groff_diff (7).
+通常它应当用
+.BR groff (1)
+命令调用,groff 会以合适的顺序和合适的选项,运行预处理器和后处理器。
+.
+.
+.\" --------------------------------------------------------------------
+.SH "选项 OPTIONS"
+.\" --------------------------------------------------------------------
+.
+.TP \w'\-dname=s'u+2n
+.B \-a
+产生一个排版输出的
+.SM ASCII
+近似结果 (approximation)
+.
+.TP
+.B \-b
+在每条错误或警告消息中打印回溯信息
+.
+此信息可以帮助跟踪错误的原因
+.
+信息中的行号可能有误,因为
+.BR troff 
+中行号的意义与请求类型是
+.B as
+还是
+.B am
+有关
+.
+.TP
+.B \-c
+禁止颜色输出 (兼容模式下总是禁止)
+.
+.TP
+.B \-C
+使用兼容模式
+.
+.TP
+.BI \-d cs
+.TQ
+.BI \-d name = s
+定义
+.I c
+或
+.I name
+是一个字符串
+.IR s ;
+.I c
+必须是单字符的一个名称
+.
+.TP
+.B \-E
+阻止
+.BR troff 
+的错误输出.
+注意这不影响发出
+.B tm
+或
+.B tm1
+请求的宏包发出的错误消息向标准错误输出
+.
+.TP
+.BI \-f fam
+使用
+.I fam
+作为默认字体族
+.
+.TP
+.BI \-F dir
+在目录中 (或目录路径中) 搜索
+.I dir
+子目录
+.BI dev name
+.RI ( name
+是设备的名称) 查找其中的
+.B DESC
+文件和字体文件
+.I dir
+在所有其他字体目录之前查找
+.
+.TP
+.B \-i
+处理完所有输入文件后继续从标准输入读入
+.
+.TP
+.BI \-m name
+读入文件
+.IB name .tmac\fR.
+如果没有找到,则去读
+.BI tmac. name
+.
+它将先在
+.B \-M
+命令行参数给定的目录中搜索,然后是
+.B GROFF_TMAC_PATH
+环境变量中的目录,然后是当前目录 (安全模式不会做这一步),
+然后是个人目录,/usr/lib/groff/site-tmac, /usr/share/groff/site-tmac
+还有 /usr/share/groff/1.18.1/tmac.
+.
+.TP
+.BI \-M dir
+搜索目录 (或目录路径)
+.I dir
+查找宏文件
+.
+检索在所有其他宏目录之前进行
+.
+.TP
+.BI \-n num
+为第一页编号
+.IR num .
+.
+.TP
+.BI \-o list
+仅输出
+.IR list 
+中指定的页,参数是一个以逗号分隔的页号范围的列表;
+.I n
+意思是打印页面
+.IR n ,
+.IB m \- n
+意思是打印
+.I m
+到
+.IR n 
+之间的所有页面,
+.BI \- n
+意思是打印直到
+.IR n 
+的所有页面,
+.IB n \-
+意思是打印从
+.IR n 
+开始的所有页面,直到结束.
+.B troff
+打印完列表中的最后一页后将退出
+.
+.TP
+.BI \-r cn
+.TQ
+.BI \-r name = n
+设置数字寄存器
+.I c
+或
+.I name
+为
+.IR n ;
+.I c
+必须是单字符的一个名称,
+.I n
+可以是任何 troff 数字表达式
+.
+.TP
+.B \-R
+不读取
+.B troffrc
+和
+.BR troffrc-end .
+.
+.TP
+.BI \-T name
+为设备
+.IR name 
+而不是默认的
+.BR ps
+准备输出
+.
+.TP
+.B \-U
+不全模式
+.
+这将允许下列请求
+.BR open ,
+.BR opena ,
+.BR pso ,
+.BR sy ,
+和
+.BR pi .
+出于安全原因,这些潜在的危险的请求在其他情况下被禁止。
+.
+同时它将当前目录加入宏搜索路径
+.
+.TP
+.B \-v
+打印版本号
+.
+.TP
+.BI \-w name
+允许发出
+.IR  name 
+警告。可能的警告名称在下面的
+.I "警告 WARNINGS"
+章节中详述
+.
+例如,要允许所有警告,使用
+.B \-w
+.BR all .
+允许使用多个
+.B \-w
+选项
+.
+.TP
+.BI \-W name
+禁止发出
+.IR name
+警告。允许使用多个
+.B \-W
+选项
+.
+.TP
+.B \-z
+阻止格式化的输出
+.
+.
+.\" --------------------------------------------------------------------
+.SH "警告 WARNINGS"
+.\" --------------------------------------------------------------------
+.
+.B troff
+可以发出的警告分为下列类别
+.
+每种警告关联的名称在
+.B \-w
+和
+.B \-W
+选项中使用;关联的数字被
+.B warn
+请求和
+.B .warn
+寄存器使用, 它总是 2 的幂,以允许位运算
+.
+.P
+.TS
+tab(@), center, box;
+c c c | c c c
+r rI lB | r rI lB.
+Bit at Code@Warning at Bit@Code at Warning
+_
+0 at 1@char at 10@1024 at reg
+1 at 2@number at 11@2048 at tab
+2 at 4@break at 12@4096 at right-brace
+3 at 8@delim at 13@8192 at missing
+4 at 16@el at 14@16384 at input
+5 at 32@scale at 15@32768 at escape
+6 at 64@range at 16@65536 at space
+7 at 128@syntax at 17@131072 at font
+8 at 256@di at 18@262144 at ig
+9 at 512@mac at 19@524288 at color
+.TE
+.
+.P
+.nr x \w'\fBright-brace'+1n+\w'00000'u
+.ta \nxuR
+.
+.TP \nxu+3n
+.BR break "\t4"
+在填充 (fill) 模式下,不可分行的行的长度 比行的长度要小。
+In fill mode, lines which could not be broken so that their length was
+less than the line length.
+.
+此警告是默认允许的
+.
+.TP
+.BR char "\t1"
+不存在的字符。
+.
+此警告是默认允许的
+.
+.TP
+.BR color "\t524288"
+颜色相关的警告
+.
+.TP
+.BR delim "\t8"
+关闭定界符丢失或不匹配
+.
+.TP
+.BR di "\t256"
+没有当前转移 (current diversion) 而使用了不带参数的
+.B di
+或
+.B da
+.
+.TP
+.BR el "\t16"
+使用
+.B el
+请求但是没有相应的
+.B ie
+请求
+.
+.TP
+.BR escape "\t32768"
+不可识别的转义序列。
+.
+当遇到一个不可识别的转义序列时,转义字符被忽略
+.
+.TP
+.BR font "\t131072"
+不存在的字体。
+.
+此警告是默认允许的
+.
+.TP
+.BR ig "\t262144"
+.B ig
+请求忽略的文本中的非法转义。
+.
+如果不是在被忽略的文本中,它们将是错误
+.
+.TP
+.BR input "\t16384"
+非法输入字符
+.
+.TP
+.BR mac "\t512"
+使用未定义的字符串,宏和标号 (diversions) (?).
+.
+当使用一个未定义的字符串,宏或标号 (diversions) 时,字符串被自动定义为空。
+.
+因此,在大多数情况下,每个名字最多会给出一个警告
+.
+.TP
+.BR missing "\t8192"
+请求缺少必要的参数
+.
+.TP
+.BR number "\t2"
+非法数值表达式。
+.
+此警告是默认允许的
+.
+.TP
+.BR range "\t64"
+超出范围的参数
+.
+.TP
+.BR reg "\t1024"
+使用未定义的数字寄存器。
+.
+当使用一个未定义的数字寄存器时,寄存器被自动定义为值 \~0。
+.
+因此,大多数情况下,使用一个特定的名字最多会得到一个警告
+.
+.TP
+.BR right-brace "\t4096"
+在应当使用数字的地方使用了
+.B \[rs]}
+.
+.TP
+.BR scale "\t32"
+无意义的比例指示 (scaling indicators).
+.
+.TP
+.BR space "\t65536"
+在一个请求或宏与其参数之间缺少空格。
+.
+当遇到一个两个字符以上的未定义名字,并且名字的前两个字符是一个已定义的名称时将给出这个警告,
+.
+请求或宏不会执行。
+.
+当给出这个警告时,不会自动定义宏。
+.
+此警告是默认允许的。
+.
+在兼容模式下不会发生这种警告
+.
+.TP
+.BR syntax "\t128"
+数值表达式中语法有歧义
+.
+.TP
+.BR tab "\t2048"
+不合适地使用了 tab 字符。
+在应当使用数字的地方使用了tab字符,或者在一个未用双引号引用的宏参数中使用tab 时会发生
+.
+.P
+也有可以引用一组警告的名称
+.
+.TP
+.B all
+所有的警告,除了
+.BR di ,
+.BR mac ,
+和
+.BR reg .
+它的目的是指代所有在传统的宏包中有用的警告
+.
+.TP
+.B w
+所有警告
+.
+.
+.\" --------------------------------------------------------------------
+.SH "环境 ENVIRONMENT"
+.\" --------------------------------------------------------------------
+.
+.TP
+.SM
+.B GROFF_TMAC_PATH
+一个以冒号分隔的目录的列表,从中搜索宏文件
+.B troff
+将先搜索
+.B \-M
+选项给出的目录,以及标准的路径 ( 当前目录
+(如果是不安全模式),个人目录
+.BR /usr/lib/groff/site-tmac ,
+.BR /usr/share/groff/site-tmac ,
+.BR /usr/share/groff/1.18.1/tmac )
+最后搜索它
+.
+.TP
+.SM
+.B GROFF_TYPESETTER
+默认设备
+.
+.TP
+.SM
+.B GROFF_FONT_PATH
+一个以冒号分隔的目录的列表,从中搜索
+.BI dev name
+目录。
+.B troff
+将先搜索
+.B \-F
+选项给出的目录,以及标准的路径
+.RB ( /usr/share/groff/site-font ,
+.BR /usr/share/groff/1.18.1/font ,
+.BR /usr/lib/font )
+最后搜索它
+.
+.
+.\" --------------------------------------------------------------------
+.SH "文件 FILES"
+.\" --------------------------------------------------------------------
+.
+.Tp \w'/usr/share/groff/1.18.1/font/devname/DESC'u+3n
+.B /usr/share/groff/1.18.1/tmac/troffrc
+初始化文件 (在任何其他宏包之前调用).
+.
+.TP
+.B /usr/share/groff/1.18.1/tmac/troffrc-end
+初始化文件 (在任何其他宏包之后调用).
+.
+.TP
+.BI /usr/share/groff/1.18.1/tmac/ name .tmac
+.TQ
+.BI /usr/share/groff/1.18.1/tmac/tmac. name
+宏文件
+.
+.TP
+.BI /usr/share/groff/1.18.1/font/dev name /DESC
+设备
+.IR name 
+的设备描述文件.
+.
+.TP
+.BI /usr/share/groff/1.18.1/font/dev name / F
+设备
+.IR name 
+的字体
+.I F
+的字体文件
+.P
+注意默认情况下既不在当前目录也不在个人目录搜索
+.B troffrc
+和
+.B troffrc-end
+,因为安全的原因 (即使给出了
+.B \-U
+选项)。
+.
+如果有必要,使用
+.B \-M
+命令行选项或者
+.B GROFF_TMAC_PATH
+环境变量来将这些路径添加到搜索路径中
+.
+.
+.\" --------------------------------------------------------------------
+.SH "作者 AUTHOR"
+.\" --------------------------------------------------------------------
+.
+Copyright (C) 1989, 2001, 2002 Free Software Foundation, Inc.
+.
+.P
+此文档按照 FDL (GNU Free Documentation License) 1.1 或更新版本的要求发布。
+.
+You should have received a copy of the FDL on your system, it is also
+available on-line at the
+.URL http://www.gnu.org/copyleft/fdl.html "GNU copyleft site" .
+This document was written by James Clark, with modifications from
+.MTO wl at gnu.org "Werner Lemberg"
+和
+.MTO bwarken at mayn.de "Bernd Warken"
+.
+.P
+此文档是
+.IR groff 
+GNU roff 套件的一部分
+.
+.
+.\" --------------------------------------------------------------------
+.SH "参见 SEE ALSO"
+.\" --------------------------------------------------------------------
+.
+.TP
+.BR groff (1)
+.I groff
+系统的主程序,
+.IR troff 
+的包装.
+.
+.TP
+.BR groff (7)
+.I groff
+语言的描述,包括一个虽然短但是完整的手册,内容是所有预定义的
+请求 (request),寄存器 (register) 和
+.IR groff 
+正文的转义 (escapes of plain groff).
+可以在命令行查看,使用命令
+.RS
+.IP
+.B man 7 groff
+.RE
+.
+.TP
+.BR \%groff_diff (7)
+.I groff
+语言和传统的
+.I classical troff
+语言不同之处。
+.
+当前,这是
+.I groff
+系统最为现实 (actual) 的一篇文档
+.
+.TP
+.BR roff (7)
+对
+.I groff
+和其他
+.I roff
+系统的概述,包括更多相关文档的链接
+.
+.P
+.I groff info
+.IR file ,
+参见 (cf.\&) 
+.BR info (1),
+将所有 groff 文档整合到了单独的一篇文档中
+.
+.
+.\" --------------------------------------------------------------------
+.\" Emacs variables
+.\" --------------------------------------------------------------------
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+
+.SH "[中文版维护人]"
+.B bbbush <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.11.25
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/true.1 b/src/man1/true.1
new file mode 100644
index 0000000..98de971
--- /dev/null
+++ b/src/man1/true.1
@@ -0,0 +1,52 @@
+.TH TRUE "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+true \- (成功的)什么都不做
+
+.SH "总览 (SYNOPSIS)"
+.B true
+[\fI忽略命令行参数\fR]
+.br
+.B true
+\fIOPTION\fR
+
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.PP
+.\"用 表示 成功 的 状态代码 结束 程序.
+程序 结束 时, 产生 表示 成功 的 状态码.
+.PP
+下列的 选项 没有 简写 形式.
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 退出.
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 退出.
+
+.SH "报告 BUGS"
+发现 的 错误 送往 <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B true
+的 完整 文档 以 Texinfo 手册 形式 维护. 如果 正确 安装 了
+.B info
+和
+.B true
+程序, 用 命令
+.IP
+.B info true
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/tty.1 b/src/man1/tty.1
new file mode 100644
index 0000000..5470404
--- /dev/null
+++ b/src/man1/tty.1
@@ -0,0 +1,50 @@
+.TH TTY "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+tty \- 显示连接标准输入的终端的文件名
+
+.SH "总览 (SYNOPSIS)"
+.B tty
+[\fIOPTION\fR]...
+
+.SH "描述 (DESCRIPTION)
+.PP
+.\" Add any additional description here
+.PP
+显示 连接 标准输入 的 终端 的 文件名.
+.TP
+\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+什么 都 不显示, 仅仅 返回 一个 退出状态
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-sh-utils at gnu.org>.
+
+.SH "另见 (SEE ALSO)"
+.B tty
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B tty
+程序, 使用 命令
+.IP
+.B info tty
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/type.1 b/src/man1/type.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/type.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/typeset.1 b/src/man1/typeset.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/typeset.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/ulimit.1 b/src/man1/ulimit.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/ulimit.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/umask.1 b/src/man1/umask.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/umask.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/unalias.1 b/src/man1/unalias.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/unalias.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/uname.1 b/src/man1/uname.1
new file mode 100644
index 0000000..a4e0f21
--- /dev/null
+++ b/src/man1/uname.1
@@ -0,0 +1,62 @@
+.TH UNAME "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+uname \- 显示输出系统信息
+.SH 总览
+.B uname
+[\fIOPTION\fR]...
+.SH 描述
+.PP
+.\" Add any additional description here
+.PP
+显示相应的系统信息.  没有指定选项时,同 \fB\-s\fR.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+显示所有的信息
+.TP
+\fB\-m\fR, \fB\-\-machine\fR
+显示机器(硬件)类型
+.TP
+\fB\-n\fR, \fB\-\-nodename\fR
+显示机器的网络节点主机名
+.TP
+\fB\-r\fR, \fB\-\-release\fR
+显示操作系统发行版本
+.TP
+\fB\-s\fR, \fB\-\-sysname\fR
+显示操作系统名
+.TP
+\fB\-p\fR, \fB\-\-processor\fR
+显示主机处理器(CPU)类型
+.TP
+\fB\-v\fR
+显示操作系统版本
+.TP
+\fB\-\-help\fR
+显示本帮助并退出
+.TP
+\fB\-\-version\fR
+显示版本信息并退出
+.SH "报告BUGS"
+请向<bug-sh-utils at gnu.org>报告您所发现的bugs.
+.SH "另见"
+.B uname
+的文档全部以 Texinfo 格式维护.如果您的系统中正确地安装  
+.B info
+和 
+.B uname 
+程序,您就可以通过
+.IP
+.B info uname
+.PP
+命令查阅整个手册.
+.SH 版权
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+这是自由软件.有关拷贝条件请参见源文档. 而且没有保证, 甚至对商业或者对于特殊目的适应性也没有.
+
+.SH "[中文版维护人]"
+.B Mirnshi <mirnshi at 263.net>
+.SH "[中文版最新更新]"
+.B 2001/02/24
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/unicode_start.1 b/src/man1/unicode_start.1
new file mode 100644
index 0000000..b748e5a
--- /dev/null
+++ b/src/man1/unicode_start.1
@@ -0,0 +1,31 @@
+.TH UNICODE_START 1 "28 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+unicode_start \- 将控制台设为Unicode模式.
+
+.SH 总览
+.B unicode_start
+.BI [ " font " [ " screen-font-map " "] ]"
+
+.SH 描述
+.B unicode_start
+命令将显示屏及键盘设为
+.IR "Unicode 模式" ,
+并且有
+可能还会装载所用的
+.I 字体
+和
+.IR "显示屏-字体 映射" . 
+如果没有给出
+参数,就使用当前的
+.I 字体
+和
+.IR "显示屏-字体 映射" . 
+
+.SH BUGS
+如果没有装载"显示屏-字体 映射", 可能会有麻烦.
+
+.SH "另见"
+.BR unicode_stop (1),
+.BR consolechars (8).
+
diff --git a/src/man1/unicode_stop.1 b/src/man1/unicode_stop.1
new file mode 100644
index 0000000..4d8a8bc
--- /dev/null
+++ b/src/man1/unicode_stop.1
@@ -0,0 +1,20 @@
+.TH UNICODE_STOP 1 "28 Oct 1997" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+unicode_stop \- 撤销控制台unicode模式(例如, 回到8-bit模式).
+
+.SH 总览
+.B unicode_stop
+
+.SH 描述
+.B unicode_stop
+撤销以前
+.BR unicode_start (1)
+命令的效果, 将显示
+屏和键盘设回到
+.IR "8-bit 模式" .
+
+.SH "另见"
+.BR unicode_start (1),
+.BR consolechars (8).
+
diff --git a/src/man1/uniq.1 b/src/man1/uniq.1
new file mode 100644
index 0000000..241f4d3
--- /dev/null
+++ b/src/man1/uniq.1
@@ -0,0 +1,81 @@
+.TH UNIQ "1" "December 1999" "GNU textutils 2.0a" FSF
+.SH NAME
+uniq \- 删除排序文件中的重复行
+
+.SH "总览 (SYNOPSIS)"
+.B ../src/uniq
+[\fIOPTION\fR]... [\fIINPUT \fR[\fIOUTPUT\fR]]
+
+.SH "描述 (DESCRIPTION)"
+.\" Add any additional description here
+.PP
+从 INPUT (或 标准输入) 数据 中 忽略 (但是 保留 一行) 连续的 相似行,
+结果 送入 OUTPUT (或 标准输出).
+.TP
+\fB\-c\fR, \fB\-\-count\fR
+在 行首 显示 出现 的 数目
+.TP
+\fB\-d\fR, \fB\-\-repeated\fR
+仅显示 重复行
+.TP
+\fB\-D\fR, \fB\-\-all\-repeated\fR
+显示 全部 重复行
+.TP
+\fB\-f\fR, \fB\-\-skip\-fields\fR=\fIN\fR
+不比较 起初的 N 栏
+.TP
+\fB\-i\fR, \fB\-\-ignore\-case\fR
+比较时 忽略 大小写
+.TP
+\fB\-s\fR, \fB\-\-skip\-chars\fR=\fIN\fR
+不比较 起初的 N 个 字符
+.TP
+\fB\-u\fR, \fB\-\-unique\fR
+仅显示 无重复行
+.TP
+\fB\-w\fR, \fB\-\-check\-chars\fR=\fIN\fR
+每行中 比较 不超过 N 个 字符
+.TP
+\fB\-N\fR
+同 \fB\-f\fR N
+.TP
++N
+同 \fB\-s\fR N
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+栏(field) 指 一段 空白符(whitespace), 接下来 一段 非空白符.
+字符前 的 栏 被 忽略 (Fields are skipped before chars).
+
+.SH "作者 (AUTHOR)"
+Richard Stallman 和 David MacKenzie.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-textutils at gnu.org>.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "另见 (SEE ALSO)"
+.B uniq
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B uniq
+程序, 使用 命令
+.IP
+.B info uniq
+.PP
+能够 访问到 完整 的 手册.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/unset.1 b/src/man1/unset.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/unset.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/unsq.1 b/src/man1/unsq.1
new file mode 100644
index 0000000..b252a4a
--- /dev/null
+++ b/src/man1/unsq.1
@@ -0,0 +1,87 @@
+.\"
+.\"
+.\" Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All modifications to the source code must be clearly marked as
+.\"    such.  Binary redistributions based on modified source code
+.\"    must be clearly marked as modified versions in the documentation
+.\"    and/or other materials provided with the distribution.
+.\" 4. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgment:
+.\"      This product includes software developed by Geoff Kuenning and
+.\"      other unpaid contributors.
+.\" 5. The name of Geoff Kuenning may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"
+.TH SQ 1 LOCAL
+.SH NAME
+sq \- 压缩一个排过序的单词列表
+unsq \- 解压一个排过序的单词列表
+
+.SH "总览 (SYNOPSIS)"
+.B sq
+< infile > outfile
+.PP
+.B unsq
+< infile > outfile
+
+.SH "描述 (DESCRIPTION)"
+.I sq
+压缩 一个 排过序的 单词 列表 (一个 字典). 比如:
+.RS
+sort /usr/dict/words | sq | compress > words.sq.Z
+.RE
+会 大概 以 4 为 因数 压缩 字典.
+.PP
+.I unsq
+解压
+.I sq
+的 输出. 比如:
+.RS
+compress -d < words.sq.Z | unsq | sort -f -o words
+.RE
+会 解压 
+.I sq
+压缩 的 字典.
+.P
+根据 文档 描述, 它 通过 省略 相同 的 词头 来 压缩, 用 一个 单独 的 字符 取代
+这个 词头, 这个 字符 对 与 前一个词 相同的 字符数 进行 编码.
+词头 的 大小 用 一个 编了码 的 可打印 的 字符 表示:
+0-9 代表 0-9, A-Z 代表 10-35, a-z 代表 36-61.
+
+.SH "作者 (AUTHOR)"
+Mike Wexler
+
+.SH "参见 (SEE ALSO)"
+compress(1), sort(1).
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/9/20
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/uptime.1 b/src/man1/uptime.1
new file mode 100644
index 0000000..991baaa
--- /dev/null
+++ b/src/man1/uptime.1
@@ -0,0 +1,41 @@
+.\"             -*-Nroff-*-
+.\"
+.TH UPTIME 1 "1993年1月26日" "Cohesive Systems" "Linux User's Manual"
+.SH NAME(名称)
+uptime \- 告知系统运行了多久时间.
+.SH SYNOPSIS(总览)
+.B uptime
+.br
+.BR uptime " [" "\-V" ]
+.SH DESCRIPTION(描述)
+.B uptime
+给出下列信息的一行显示.
+当前时间,
+系统运行了多久时间,
+当前登陆的用户有多少,
+以及前1,5和15分钟系统的平均负载.
+.sp
+这与通过
+.BR w (1)
+显示的首行包括的信息相同.
+.SH FILES(相关文件)
+.IR /var/run/utmp "     关于当前谁在登录的信息"
+.br
+.IR /proc "     进程信息"
+.SH AUTHORS(作者)
+Larry Greenfield <greenfie at gauss.rutgers.edu>和
+Michael K. Johnson <johnsonm at sunsite.unc.edu>.
+
+请将bug的报告发到<procps-bugs at redhat.com>
+.SH "SEE ALSO"(另见)
+.BR ps (1),
+.BR top (1),
+.BR utmp (5),
+.BR w (1)
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/usleep.1 b/src/man1/usleep.1
new file mode 100644
index 0000000..aa44fec
--- /dev/null
+++ b/src/man1/usleep.1
@@ -0,0 +1,32 @@
+.TH USLEEP 1 "Red Hat, Inc" \" -*- nroff -*-
+.SH NAME
+usleep \- 睡眠若干微秒
+.SH "总览 (SYNOPSIS)"
+.B usleep
+[\fInumber\fP]
+.SH "描述 (DESCRIPTION)"
+.B usleep
+睡眠 指定的 微秒数. 缺省值 是 1.
+.SH "选项 (OPTIONS)"
+\fI--usage\fP
+显示 简短 的 使用方法.
+.TP
+\fI--help, -?\fP
+显示 帮助信息.
+.TP
+\fI-v, --version\fP
+显示 版本信息.
+.SH BUGS
+在 许多 机器 上, 微秒 计数 不够 精确. 精度 只能 到达 -4 或 -5 (注:10的指数).
+
+.SH "作者 (AUTHOR)"
+Donald Barnes <djb at redhat.com>
+.br
+Erik Troan <ewt at redhat.com>
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/uuencode.1 b/src/man1/uuencode.1
new file mode 100644
index 0000000..61aa81d
--- /dev/null
+++ b/src/man1/uuencode.1
@@ -0,0 +1,129 @@
+'.\" Copyright (c) 1980, 1990 The Regents of the University of California.
+'.\" All rights reserved.
+'.\"
+'.\" Redistribution and use in source and binary forms, with or without
+'.\" modification, are permitted provided that the following conditions
+'.\" are met:
+'.\" 1. Redistributions of source code must retain the above copyright
+'.\"    notice, this list of conditions and the following disclaimer.
+'.\" 2. Redistributions in binary form must reproduce the above copyright
+'.\"    notice, this list of conditions and the following disclaimer in the
+'.\"    documentation and/or other materials provided with the distribution.
+'.\" 3. All advertising materials mentioning features or use of this software
+'.\"    must display the following acknowledgement:
+'.\"	This product includes software developed by the University of
+'.\"	California, Berkeley and its contributors.
+'.\" 4. Neither the name of the University nor the names of its contributors
+'.\"    may be used to endorse or promote products derived from this software
+'.\"    without specific prior written permission.
+'.\"
+'.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+'.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+'.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+'.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+'.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+'.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+'.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+'.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+'.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+'.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+'.\" SUCH DAMAGE.
+'.\"
+'.\" Modified from
+'.\"     @(#)uuencode.1	6.9 (Berkeley) 4/23/91
+'.\"
+.TH uuencode 1
+.SH NAME
+uuencode \- 对二进制文件编码
+.PP
+uudecode \- 解码由 uuencode 创建的文件
+
+.SH "总览 (SYNOPSIS)"
+.B uuencode
+[\-m] [ file ] name
+.PP
+.B uudecode
+[-o outfile] [ file ]...
+
+.SH "描述 (DESCRIPTION)"
+.I Uuencode
+和
+.I uudecode
+用于 在 某些 只能 传输 简单 ASCII 数据 的 信道 上 传送 二进制文件.
+.PP
+.I Uuencode
+读入 文件
+.I file
+(缺省为 标准输入)的 内容, 编码后 的 文件 送往 标准输出.
+编码 只使用 可显示 ASCII 字符, 同时 将 文件访问模式 和 目标文件名
+.I name
+存放在 目标文件 中, 供
+.I uudecode
+使用. 如果 目标文件名
+.I name
+是 标准输出
+.I /dev/stdout ,
+Uuencode 将把 生成结果 送往 标准输出. 缺省标准 使用 UU 编码格式.
+如果 在 命令行上 指定了 
+.I \-m
+选项, Uuencode 就 改用
+.B base64
+编码格式.
+
+.PP
+.I Uudecode
+把 uuencode 编码过的 文件
+.I file
+(缺省是 标准输入) 解码成 原来的 形式. 产生的 文件 命名为
+.I name
+(如果 使用了 \-o 选项, 文件名 就是
+.I outfile 
+), 拥有 原来的 文件访问模式, 但会 去除 setuid
+和 可执行 位. 如果
+.I outfile
+或
+.I name
+是 /dev/stdout, Uudecode 将把 生成结果 送往 标准输出.
+.I Uudecode
+忽略 任何(多余的) 前后行. 它 能够 自动 识别 编码格式, 并采用 相应的 解码方案.
+
+.SH "例子 (EXAMPLES)"
+下面的 例子 显示了 打包 一棵 源文件树, 压缩, UU 编码, 然后 寄给
+另一个 系统 的 用户.
+在 目的地 运行
+.I uudecode
+时 将 产生 ``src_tree.tar.Z'' 文件, 展开 这个 文件 就可以 还原成
+原来的 文件树.
+.PP
+.IP
+.NF
+tar cf \- src_tree \&| compress \&|
+uuencode src_tree.tar.Z \&| mail sys1!sys2!user
+.FI
+.LP
+
+.SH "另见 (SEE ALSO)"
+compress(1), mail(1), uucp(1), uuencode(5)
+.SH "标准 (STANDARDS)"
+本实现遵循 P1003.2b/D11.
+.SH BUGS
+如果 使用了 \-o 选项 的 同时 要求 解码 一个以上 的 文件
+.I file ,
+或者 这些 已经 编码的 文件 中, 出现了 相同的 文件名
+.I name , 
+其结果 可能 不是 你 想要的.
+
+.PP
+用 UU 格式 编码 的 文件 增大 37%, 用 base64 格式 (3编码成4字节, 加上控制信息)
+编码 的 文件 增大 35%
+
+.SH "历史 (HISTORY)"
+.I uuencode
+命令始于 BSD 4.0.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/vacuumdb.1 b/src/man1/vacuumdb.1
new file mode 100644
index 0000000..f772c71
--- /dev/null
+++ b/src/man1/vacuumdb.1
@@ -0,0 +1,132 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "VACUUMDB" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
+.SH NAME
+vacuumdb \- 收集垃圾并且分析一个PostgreSQL 数据库
+
+.SH SYNOPSIS
+.sp
+\fBvacuumdb\fR\fR [ \fR\fB\fIconnection-option\fB\fR...\fB \fR\fR]\fR \fR[\fR \fB--full\fR\fR | \fR\fB-f\fR\fR ]\fR \fR[\fR \fB--verbose\fR\fR | \fR\fB-v\fR\fR ]\fR \fR[\fR \fB--analyze\fR\fR | \fR\fB-z\fR\fR ]\fR\fR [ \fR\fB--table | -t \fItable\fB\fR [ \fB( \fIcolumn\fB [,...] ) \fR]\fB \fR\fR]\fR\fR [ \fR\fB\fIdbname\fB \fR\fR]\fR
+
+\fBvacuumdb\fR\fR [ \fR\fB\fIconnection-options\fB\fR...\fB \fR\fR]\fR \fR[\fR \fB--all\fR\fR | \fR\fB-a\fR\fR ]\fR \fR[\fR \fB--full\fR\fR | \fR\fB-f\fR\fR ]\fR \fR[\fR \fB--verbose\fR\fR | \fR\fB-v\fR\fR ]\fR \fR[\fR \fB--analyze\fR\fR | \fR\fB-z\fR\fR ]\fR
+.SH "DESCRIPTION 描述"
+.PP
+\fBvacuumdb\fR 是一个用于整理 PostgreSQL 数据库的工具。 vacuumdb 还将会生成用于 PostgreSQL 查询优化器的内部统计数据。
+.PP
+\fBvacuumdb\fR 是 SQL 命令 VACUUM [\fBvacuum\fR(7)] 的封装。 因此,用哪种方法清理数据库都没什么特别的。
+.SH "OPTIONS 选项"
+.PP
+\fBvacuumdb\fR 接受下列命令行参数:
+.TP
+\fB-a\fR
+.TP
+\fB--all\fR
+ 清理所有数据库。
+.TP
+\fB[-d] \fIdbname\fB\fR
+.TP
+\fB[--dbname] \fIdbname\fB\fR
+ 声明要被清理或分析的数据库名称。 如果没有声明这个参数并且没有使用 -a(或 --all), 那么从环境变量 PGDATABASE 里读取数据库名。 如果那个也没有设置,则使用连接的用户名。
+.TP
+\fB-e\fR
+.TP
+\fB--echo\fR
+ 回显 vacuumdb 生成的查询并且把它发送到服务器。
+.TP
+\fB-f\fR
+.TP
+\fB--full\fR
+ 执行"完全"清理.
+.TP
+\fB-q\fR
+.TP
+\fB--quiet\fR
+ 不显示响应。
+.TP
+\fB-t \fItable\fB [ (\fIcolumn\fB [,...]) ]\fR
+.TP
+\fB--table \fItable\fB [ (\fIcolumn\fB [,...]) ]\fR
+ 只是清理或分析 table。 字段名称只是在与 --analyze 选项联合使用时才需要声明。
+.sp
+.RS
+.B "Tip:"
+提示:  如果你声明了要清理的字段,你可能不得不在 shell 上逃逸圆括弧(见下面的例子)。
+.RE
+.sp
+.TP
+\fB-v\fR
+.TP
+\fB--verbose\fR
+ 在处理过程中打印详细信息。
+.TP
+\fB-z\fR
+.TP
+\fB--analyze\fR
+ 计算用于优化器的该数据库的统计值。
+.PP
+.PP
+\fBvacuumdb\fR 还接受下面的命令行参数用于联接参数:
+.TP
+\fB-h \fIhost\fB\fR
+.TP
+\fB--host \fIhost\fB\fR
+ 声明运行服务器的机器的主机名。 如果主机名以斜扛开头,则它被用做到 Unix 域套接字的路径。
+.TP
+\fB-p \fIport\fB\fR
+.TP
+\fB--port \fIport\fB\fR
+ 声明服务器在侦听联接的 TCP 端口号或一个本地的 Unix 域套接字文件句柄。
+.TP
+\fB-U \fIusername\fB\fR
+.TP
+\fB--username \fIusername\fB\fR
+ 进行联接的用户名。
+.TP
+\fB-W\fR
+.TP
+\fB--password\fR
+ 强制口令输入提示。
+.PP
+.SH "ENVIRONMENT 环境"
+.TP
+\fBPGDATABASE\fR
+.TP
+\fBPGHOST\fR
+.TP
+\fBPGPORT\fR
+.TP
+\fBPGUSER\fR
+ 缺省连接参数
+.SH "DIAGNOSTICS 诊断"
+.PP
+ 如果出差错了。参阅 VACUUM [\fBvacuum\fR(7)]  和 \fBpsql\fR(1)  获取关于错误信息和可能问题的详细描述。 数据库服务器必须在目标主机上运行。同时,前端库 libpq 使用的任何缺省连接设置和环境变量都适用。
+.SH "NOTES 注意"
+.PP
+\fBvacuumdb\fR 可能需要与 PostgreSQL  服务器连接若干次,每次都询问口令。在这种情况下,设立一个 \fI$HOME/.pgpass\fR  是比较方便的。参阅 Section 27.11 获取更多信息。
+.SH "EXAMPLES 例子"
+.PP
+ 整理数据库 test:
+.sp
+.nf
+$ \fBvacuumdb test\fR
+.sp
+.fi
+.PP
+ 为优化器清理和分析一个名为 bigdb 的数据库:
+.sp
+.nf
+$ \fBvacuumdb --analyze bigdb\fR
+.sp
+.fi
+.PP
+ 为清理数据库xyzzy里表 foo, 并且为优化器分析列 bar:
+.sp
+.nf
+$ \fBvacuumdb --analyze --verbose --table 'foo(bar)' xyzzy\fR
+.sp
+.fi
+.SH "SEE ALSO 参见"
+VACUUM [\fBvacuum\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man1/vi.1 b/src/man1/vi.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/vi.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/view.1 b/src/man1/view.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/view.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/vim.1 b/src/man1/vim.1
new file mode 100644
index 0000000..3d9c16e
--- /dev/null
+++ b/src/man1/vim.1
@@ -0,0 +1 @@
+.so man1/gvim.1
diff --git a/src/man1/vimtutor.1 b/src/man1/vimtutor.1
new file mode 100644
index 0000000..5294f06
--- /dev/null
+++ b/src/man1/vimtutor.1
@@ -0,0 +1,50 @@
+.TH VIMTUTOR 1 "1998 December 28"
+
+.SH NAME
+vimtutor \- Vim 教程
+
+.SH "总览 (SYNOPSIS)"
+.br
+.B vimtutor
+
+.SH "描述 (DESCRIPTION)"
+.B Vimtutor
+打开
+.B Vim
+教程。 它首先 考备 文件, 这样 就可以 在 不改变 原文件 的
+情况下 修改 当前文件。
+.PP
+.B Vimtutor
+对 那些 想 学习 一些 基本的
+.B Vim
+命令 的人 是 很有用的。
+.PP
+这个 命令 没有 任何选项 或 参数。
+.B Vim
+总是 以 Vi 蒹容模式 打开的。
+.SH "文件 (FILES)"
+.TP 15
+/usr/share/vim/vim56/tutor/tutor
+.B Vimtutor
+文本文件.
+
+.SH "作者 (AUTHOR)"
+.B Vimtutor
+最早是 Michael C. Pierce 和 科罗拉多 矿业学院(Colorado School of Mines)
+的 Robert K. Ware 根据 科罗拉多 州立大学(Colorado State University)
+的 Charles Smith 提出的 思想 为 Vi 写的.
+电子邮件: bware at mines.colorado.edu。
+.br
+Bram Moolenaar 专门为
+.B Vim
+修改 了它。
+
+.SH "参见 (SEE ALSO)"
+vim(1)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/9/3
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/virtex.1 b/src/man1/virtex.1
new file mode 100644
index 0000000..b6cf832
--- /dev/null
+++ b/src/man1/virtex.1
@@ -0,0 +1 @@
+.so man1/tex.1
diff --git a/src/man1/vt-is-UTF8.1 b/src/man1/vt-is-UTF8.1
new file mode 100644
index 0000000..4901e42
--- /dev/null
+++ b/src/man1/vt-is-UTF8.1
@@ -0,0 +1,68 @@
+.TH VT\-IS\-UTF8 1 "10 Aug 1998" "控制台工具" "Linux 用户手册"
+
+.SH NAME
+vt-is-UTF8 \- check whether current VT is in UTF8- or byte-mode.
+检查当前VT是否处于VTF8模式或是字节模式.
+
+.SH 总览
+.BI "vt-is-UTF8 [" -h | --help "] [" -V | --version "] [" -q | --quiet ]
+
+.SH 描述
+.B vt-is-UTF8
+checks whether the current VT is in UTF8 mode, by writing (and erasing
+afterwards) a 3-byte-long UTF8 sequence, and looking how much chars where
+displayed by the console driver.
+.B vt-is-UTF8
+检查当前VT是否处于 UTF8 模式, 其方式是写(并且随后擦除)
+一个 3 字节的 UTF8 序列, 然后察看控制台驱动展示了多少个字符. 
+
+A message telling in which mode the console is is then written to stdout
+(except if the
+.I --quiet
+option was given).
+然后会在标准输出上给出一个信息, 指出控制台所用模式(除非给出了
+.I --quiet
+选项).
+
+If the 
+.I --quiet
+option is not given, the value returned is 1 if an error occurs, else 0.
+在有错误发生时, 如果没有选取
+.I --quiet
+选项, 返回值将是 1 , 否则将是 0 .
+
+.SH 选项
+.TP
+.I -h --help
+display version number, a short help message and exit.
+展示版本号, 以及一个简短的帮助信息, 然后退出. 
+
+.TP
+.I -V --version
+display version number and exit.
+展示版本号然后退出. 
+
+.TP
+.I -q --quiet
+do not print on stdout in with mode we are, but return the state as
+exit-status 1 if in UTF8-mode, 0 if in byte-mode. In case of error, 0 is
+returned and a message is displayed on stderr.
+不在标准输出上打印所处模式, 但是返回一个状态, 对于 UTF8 模式该退出状态为 1 ,
+而对于字节模式该状态为 0 . 如果发生错误, 也返回 0 , 并且送给标准错误一个信息. 
+
+.SH BUGS
+The check should be done by directly asking the kernel, which is not possible
+as of kernels 2.0.x.
+模式的检查可能应该通过直接请求内核来进行, 但从内核 2.0.x 开始这就不可能了.
+
+As of kernel 2.0.35, the byte-mode is sometimes erroneously detected
+as UTF8-mode, after switching from a 512-chars font to a 256-chars
+font.  This is probably a console-driver bug.
+从 2.0.35 的内核开始, 在做了从 512 字符字体到 256 字符字体的切换后, 
+字节模式有时会被错误地认为是 UTF8 模式. 这或许就是一个控制台驱动的 bug . 
+
+.SH "另见"
+
+.BR unicode_start (1),
+.BR unicode_stop (1).
+
diff --git a/src/man1/w.1 b/src/man1/w.1
new file mode 100644
index 0000000..54c0fff
--- /dev/null
+++ b/src/man1/w.1
@@ -0,0 +1,80 @@
+.TH W 1 "8 Dec 1993 " " " "Linux User's Manual"
+.SH NAME
+w \- 显示已经登录的用户以及他们在做什么
+.SH "总览 (SYNOPSIS)"
+.B w \-
+.RB [ husfV ]
+.RI [ user ]
+.SH "描述 (DESCRIPTION)"
+.B "w "
+显示 系统中 当前用户 的 信息, 以及 他们 的 进程.
+第一行 中 依次 显示 当前时间, 系统的 持续运行时间, 登录的 用户数, 和 最近
+1, 5, 15 分钟 的 系统平均负载 (load average).
+.sp
+接下来 的 条目 显示 每位 用户 的:
+登录名, tty 名, 远程主机, 登录时间, 空闲时间, JCPU, PCPU, 以及
+他们 当前进程 的 命令行.
+.sp
+JCPU 时间 指 某个 tty 上 所有 进程 用掉的 时间, 不包括 过去的 后台任务,
+但是 包括 正在 运行 的 后台任务.
+.sp
+PCPU 时间 指 当前进程 用掉的 时间, 可以 在 "what" 域 看到 当前进程.
+
+.PP
+.SH "命令行选项 (OPTIONS)"
+.TP 0.5i
+.B "\-h "
+不显示 首行.
+.TP 0.5i
+.B "\-u "
+确定 当前进程 和 CPU 时间 的 时候 忽略 用户名. 要 展示 这个 效果,
+执行 "su", 然后 执行 "w" 和 "w -u".
+.TP 0.5i
+.B "\-s "
+使用 简短格式. 不显示 登录时间, JCPU 或 PCPU 时间.
+.TP 0.5i
+.B "\-f "
+切换 显示
+.B from
+(远程主机) 域.  缺省的 发行 方式 是 不显示
+.B from
+域, 但是 系统管理员 或者 发行包 维护者 有可能 编译了 一个 缺省行为 是 显示
+.B from
+域 的 版本.
+.TP 0.5i
+.B "\-V "
+显示 版本信息.
+.TP 0.5i
+.B "user "
+仅显示 指定用户 的 信息.
+
+.SH "文件 (FILES)"
+.ta
+.IR /etc/utmp 
+已登录用户 的 信息
+.br
+.IR /proc 
+进程 信息
+.fi
+
+.SH "另见 (SEE ALSO)"
+.BR free (1),
+.BR ps (1),
+.BR top (1),
+.BR uptime (1),
+.BR utmp (5),
+.BR who (1)
+
+.SH "作者 (AUTHORS)"
+.B w
+基于 Larry Greenfield <greenfie at gauss.rutgers.edu> 和 Michael K. Johnson
+<johnsonm at redhat.com> 的 版本, Charles Blake 几乎 做了 彻底 重写.
+
+请将 bug 报告 送往 <procps-bugs at redhat.com>
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/wait.1 b/src/man1/wait.1
new file mode 100644
index 0000000..b757cd3
--- /dev/null
+++ b/src/man1/wait.1
@@ -0,0 +1 @@
+.so man1/builtins.1
diff --git a/src/man1/wall.1 b/src/man1/wall.1
new file mode 100644
index 0000000..95310dd
--- /dev/null
+++ b/src/man1/wall.1
@@ -0,0 +1,27 @@
+.TH WALL 1 "10 October 1994" "" "Linux User's Manual"
+
+.SH NAME
+wall -- 向所有人的终端发送消息
+
+.SH "总览 (SYNOPSIS)"
+.B wall
+.RB [ " message " ]
+
+.SH "描述 (DESCRIPTION)"
+.B Wall
+向 所有 登录的 并且 \fImesg\fP(1) 权限 设为 \fByes\fP 的 用户 发送 消息. 消息
+可以 作为 \fIwall\fP 的 一个 参数, 或者 \fIwall\fP 的 标准 输入. 当 把 终端
+作为 标准 输入 时, 消息 应该 以 \fBEOF\fP 键 结束 (一般 来说 是 Control-D).
+
+.SH "参见 (SEE ALSO)"
+mesg(1).
+
+.SH "作者 (AUTHOR)"
+Miquel van Smoorenburg, miquels at cistron.nl
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/10/9
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/wbinfo.1 b/src/man1/wbinfo.1
new file mode 100644
index 0000000..f106494
--- /dev/null
+++ b/src/man1/wbinfo.1
@@ -0,0 +1,204 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "WBINFO" 1 "" "" ""
+.SH NAME
+wbinfo \- 向winbind服务查询信息
+
+.SH "总览 SYNOPSIS"
+
+
+\fBwbinfo\fR [-a user%password] [-c username] [-C groupname] [--domain domain] [-I ip] [-s sid] [-u] [-U uid] [-g] [--get-auth-user] [-G gid] [-m] [-n name] [-N netbios-name] [-o user:group] [-O user:group] [-p] [-r user] [--set-auth-user user%password] [--sequence] [-S sid] [-t] [-x username] [-X groupname] [-Y sid]
+
+
+.SH "描述 DESCRIPTION"
+
+.PP
+此工具是 \fBSamba\fR(7) 套件的一部分。
+
+.PP
+\fBwbinfo\fR程序查询并返回由\fBwinbindd\fR(8)服务建立和使用的那些信息。
+
+.PP
+\fBwinbindd\fR(8)进程必须为\fBwbinfo\fR程序而进行配置及运行,以便可以返回信息。
+
+.SH "选项 OPTIONS"
+
+.TP
+-a username%password
+Attempt to authenticate a user via winbindd\&. This checks both authenticaion methods and reports its results\&.
+
+
+.TP
+-c user
+Create a local winbind user\&.
+
+
+.TP
+-C group
+Create a local winbindd group\&.
+
+
+.TP
+--domain name
+This parameter sets the domain on which any specified operations will performed\&. If special domain name '\&.' is used to represent the current domain to which winbindd belongs\&. Currently only the \fB--sequence\fR, \fB-u\fR, and \fB-g\fR options honor this parameter\&.
+
+
+.TP
+-g
+该选项可以列出\fBwinbindd\fR(8)服务所运行的那个\fIWindows NT\fR域中所有可以获得的用户组。所有受托域中的用户组也将被列出。注意该操作并不为任何\fBwinbindd\fR(8)还未获悉的用户组分配组ID。
+
+
+
+.TP
+--get-auth-user
+Print username and password used by winbindd during session setup to a domain controller\&. Username and password can be set using '-A'\&. Only available for root\&.
+
+
+.TP
+-G gid
+该选项试图把一个UNIX组ID转换为一个\fIWindows NT\fR的SID。如果指定的GID无法对应到idmap的GID范围中,则操作失败。
+
+
+.TP
+-I ip
+The \fI-I\fR option queries \fBwinbindd\fR(8) to send a node status request to get the NetBIOS name associated with the IP address specified by the \fIip\fR parameter\&.
+
+
+.TP
+-m
+该选项产生一份当\fBwinbindd\fR(8)在进行名字解析时所联系的\fIWindows NT\fR服务器信任的域列表。该列表不含主域控制器所在的那个NT域。
+
+
+.TP
+-n name
+该选项向\fBwinbindd\fR(8)查询指定名字所分配的SID。使用winbind分隔字符可以在用户名前指定域名。例如CWDOM1/Administrator就是引用域CWDOM1中的管理员。如不指定域,则使用\fBsmb.conf\fR(5)中\fIworkgroup\fR参数所指定的值作为域名。[译者注:SID义为安全标识]
+
+.TP
+-N name
+The \fI-N\fR option queries \fBwinbindd\fR(8) to query the WINS server for the IP address associated with the NetBIOS name specified by the \fIname\fR parameter\&.
+
+
+.TP
+-o user:group
+Add a winbindd local group as a secondary group for the specified winbindd local user\&.
+
+
+.TP
+-O user:group
+Remove a winbindd local group as a secondary group for the specified winbindd local user\&.
+
+
+.TP
+-p
+Check whether winbindd is still alive\&. Prints out either 'succeeded' or 'failed'\&.
+
+
+.TP
+-r username
+Try to obtain the list of UNIX group ids to which the user belongs\&. This only works for users defined on a Domain Controller\&.
+
+
+.TP
+-s sid
+用\fI-s\fR可以把一个SID解析为一个名字。这正好与上面那个\fI-n\fR选项相反。SID必须按传统的\fI微软格式\fR, 用ASCII字串来指定。例如S-1-5-21-1455342024-3071081365-2475485837-500。
+
+
+.TP
+--set-auth-user username%password
+Store username and password used by winbindd during session setup to a domain controller\&. This enables winbindd to operate in a Windows 2000 domain with Restrict Anonymous turned on (a\&.k\&.a\&. Permissions compatiable with Windows 2000 servers only)\&.
+
+
+.TP
+--sequence
+Show sequence numbers of all known domains
+
+
+.TP
+-S sid
+该选项把一个SID转换为一个UNIX用户ID。如果SID与\fBwinbindd\fR(8)所映射的UNIX用户不符合则操作失败。
+
+.TP
+-t
+该选项对samba服务器加入到NT域中时所建立的工作站信任账号进行校验。
+
+.TP
+-u
+该选项可以列出\fBwinbindd\fR(8)服务所在的那个\fIWindows NT\fR域中所有可以得到的用户。所有受托域中的用户也将被列出。注意该操作并不为任何\fBwinbindd\fR(8)尚未获悉的用户分配用户ID。
+
+.TP
+-U uid
+该选项试图把一个UNIX用户ID转换为一个\fIWindows NT\fR的SID。如果指定的UID无法对应到winbind的UID范围中,则操作失败。
+
+.TP
+-x user
+Delete an existing local winbind user\&.
+
+
+.TP
+-X group
+Delete an existing local winbindd group\&.
+
+
+.TP
+-Y sid
+该选项把一个SID转换为一个UNIX组ID。如果SID与\fBwinbindd\fR(8)所映射的UNIX组不符合则操作失败。
+
+.TP
+-V
+Prints the program version number\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.SH "退出状态 EXIT STATUS"
+
+.PP
+wbinfo程序在操作成功时返回0,否则返回1。如果\fBwinbindd\fR(8)当前不在运行,则\fBwbinfo\fR总是返回失败信号。
+
+.SH "版本 VERSION"
+
+.PP
+这份手册页在Samba套件三中经过了校正。
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBwinbindd\fR(8)
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/wc.1 b/src/man1/wc.1
new file mode 100644
index 0000000..e29dd1a
--- /dev/null
+++ b/src/man1/wc.1
@@ -0,0 +1,55 @@
+.TH WC "1" "December 1999" "GNU textutils 2.0a" FSF
+
+.SH NAME
+wc \- 输出文件中的行数、单词数、字节数
+
+.SH SYNOPSIS 总览
+.B wc
+[\fI选项列表\fR]... [\fI文件名列表\fR]...
+
+.SH DESCRIPTION 描述
+.\" Add any additional description here
+.PP
+对每个文件输出行、单词、和字节统计数,如果指定了多于一个文件则还有一
+个行数的总计。没有指定文件或指定的文件是 -,则读取标准输入。
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR, \fB\-\-chars\fR
+输出字节统计数。
+.TP
+\fB\-l\fR, \fB\-\-lines\fR
+输出换行符统计数。
+.TP
+\fB\-L\fR, \fB\-\-max\-line\-length\fR
+输出最长的行的长度。
+.TP
+\fB\-w\fR, \fB\-\-words\fR
+输出单词统计数。
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+输出版本信息并退出
+
+.SH AUTHOR 著作者
+由 Paul Rubin 和 David MacKenzie 完成。
+
+.SH "REPORTING BUGS 报告缺陷"
+向 <bug-textutils at gnu.org>报告缺陷。
+
+.SH COPYRIGHT 版权
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "SEE ALSO 参见"
+完整的 wc 文档是以 Texinfo 手册的形式维护的,如果 info 和 wc 在你的机器上
+被正确的安装了,使用命令 info wc 就访问完整的文档了。
+
+.SH "[中文版维护人]"
+.B mhss<jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+.BR 2000/11/7
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/whatis.1 b/src/man1/whatis.1
new file mode 100644
index 0000000..1ea515a
--- /dev/null
+++ b/src/man1/whatis.1
@@ -0,0 +1,38 @@
+.\"
+.\" Generated automatically from whatis.1.in by the
+.\" configure script.
+.\"
+.\" Man page for whatis
+.\"
+.\" Copyright (c) 1990, 1991, John W. Eaton.
+.\"
+.\" You may distribute under the terms of the GNU General Public
+.\" License as specified in the README file that comes with the man 1.0
+.\" distribution.  
+.\"
+.\" John W. Eaton
+.\" jwe at che.utexas.edu
+.\" Department of Chemical Engineering
+.\" The University of Texas at Austin
+.\" Austin, Texas  78712
+.\"
+.TH whatis 1 "Jan 5, 1991"
+.LO 1
+.SH NAME
+whatis \- 在 whatis 数据库里查找完整的单词
+.SH "总览 (SYNOPSIS)"
+.BI whatis
+keyword ...
+.SH "描述 (DESCRIPTION)"
+whatis 命令在一些特定的包含系统命令的简短描述的数据库文件里查找关键字, 然后把
+结果送到标准输出。 查找的内容必须完全匹配关键字的才会输出。
+whatis 数据库文件是用 /usr/sbin/makewhatis 命令建立的。
+.SH "参见 (SEE ALSO)"
+apropos(1), man(1).
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/9/8
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/who.1 b/src/man1/who.1
new file mode 100644
index 0000000..206b182
--- /dev/null
+++ b/src/man1/who.1
@@ -0,0 +1,71 @@
+.TH WHO "1" "August 1999" "GNU sh-utils 2.0" FSF
+.SH NAME
+who \- 显示已经登录的用户
+.SH "总览 (SYNOPSIS)"
+.B who
+[\fIOPTION\fR]... [\fI FILE | ARG1 ARG2 \fR]
+.SH "描述 (DESCRIPTION)"
+.PP
+.\" Add any additional description here
+.TP
+\fB\-H\fR, \fB\-\-heading\fR
+显示 栏目行
+.TP
+\fB\-i\fR, \fB\-u\fR, \fB\-\-idle\fR
+增加 显示 用户的 空闲时间, 格式是 HOURS:MINUTES, . 或 old
+.TP
+\fB\-l\fR, \fB\-\-lookup\fR
+试图 通过 DNS 规范 主机名
+.TP
+\fB\-m\fR
+仅显示 和 stdin 关联 的 主机名 和 用户
+.TP
+\fB\-q\fR, \fB\-\-count\fR
+显示 全部的 登录名 和 登录数
+.TP
+\fB\-s\fR
+(忽略)
+.TP
+\fB\-T\fR, \fB\-w\fR, \fB\-\-mesg\fR
+用 +, - 或 ? 表示 用户的 消息(message) 状态.
+.TP
+\fB\-\-message\fR
+同 \fB\-T\fR
+.TP
+\fB\-\-writable\fR
+同 \fB\-T\fR
+.TP
+\fB\-\-help\fR
+显示 帮助信息, 然后 结束
+.TP
+\fB\-\-version\fR
+显示 版本信息, 然后 结束
+.PP
+如果 没有 指定 FILE, 缺省 使用 /var/run/utmp.  /var/log/wtmp 是 比较
+常用的 FILE. 如果 给出 ARG1 ARG2, who 设定 \fB\-m\fR 有效:
+他们 通常 是 `am i' 或 `mom likes'.
+.SH "报告 BUGS"
+发现的 bug 送往 <bug-sh-utils at gnu.org>.
+.SH "另见 (SEE ALSO)"
+.B who
+的 完整文档 以 Texinfo 手册 的 格式 维护. 如果 正确 安装了
+.B info
+和
+.B who
+程序, 使用 命令
+.IP
+.B info who
+.PP
+能够 访问到 完整 的 手册.
+.SH "版权 (COPYRIGHT)"
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/wish.1 b/src/man1/wish.1
new file mode 100644
index 0000000..b2d8c37
--- /dev/null
+++ b/src/man1/wish.1
@@ -0,0 +1,84 @@
+.TH WISH 1
+.SH NAME
+.B wish - 简单的窗口式(windowing) shell
+.SH 总览
+.B wish [filename] [arg] [arg ...]
+.SH 选项
+.TP
+-colormap new 
+指定窗口使用一个新的私有的调色板(colormap)而不使用给屏幕的缺省的调色板。
+.TP
+-display display 
+指定显示窗口的显示器(和屏幕)。
+.TP
+-geometry geometry 
+初始化用于窗口的几何(位置、大小)。如果指定了这个选项,它的值存储在应用的 Tcl 解释器的 geometry 全局变量中。
+.TP
+-name name 
+用 name 作为窗口中显示的标题(title),作为被 send 命令使用的解释器的名字。
+.TP
+-sync 
+同步的执行所有 X 服务器命令,这样出错就可以立即报告。这将导致执行更慢,但对调试有用。 -use id 指定应用的主窗口要被嵌入标识符(identifier)为 id 的窗口中,而不是被建立为一个独立的顶层窗口。必须用与 toplevel 组件的 -use 选项的值相同的方式指定 Id (例如,它必须与 winfo id 的返回有一样的形式(form))。
+.TP
+-visual visual 
+指定这个窗口使用的视觉效果(visual)。Visual 必须用 Tk_GetVisual 过程所支持的形式。
+.TP
+- - 
+传递所有剩下的参数到脚本的 argv 变量而不解释它们。这提供了一种机制来传递象 -name 这样的参数到一个脚本而不让 wish 解释它们。
+
+.SH 描述
+Wish 是一个由 Tcl 命令语言、Tk 工具箱和一个从标准输入或文件读命令的主程序构成的简单的程序。它建立一个主窗口接着就处理 Tcl 命令。如果不加参数的调用 wish,或者第一个参数以“-”开始,则从标准输入交互的读 Tcl 命令。它将连续的处理命令直到删除了所有的窗口或在标准输入上到达文件结束。如果在用户的主(home)目录中存在文件 .wishrc,在从标准输入读第一条命令之前,wish 把这个文件作为一个 Tcl 脚本来求值。
+
+如果调用 wish 时加了一个初始化 fileName 参数,则 fileName 被作为一个脚本文件的名字对待。Wish 将对 fileName 中的脚本进行求值(可能是建立一个用户界面),接着它将响应事件直到所有窗口被删除。将不从标准输入读命令。 在这种情况下不自动的对 .wishrc 求值,如果需要的话,脚本文件总是可以 source(包含)它。
+
+ 
+.SH 关于选项
+Wish 自动的处理在上面选项总结中描述的所有命令行选项。任何其他的命令行参数被用后面描述的 argc 和 argv 变量直接传递给应用(程序)。
+
+应用的名字用于象 send 这样的命令,从如果指定了 -name 选项,则从其中获得;否则若指定了fileName则接受之,或者接受调用 wish 所使用的名字。在后两种情况,如果名字包含“/”字符,则只有在最后一个反斜杠后面的字符被作为应用的名字。
+
+应用(程序)的类被用于通过 RESOURCE_MANAGER 属性或 .Xdefaults 文件来指定选项,除了第一个字母是大写的之外,类的名字同于应用的名字。
+.SH 变量
+Wish 设置了下列 Tcl 变量:
+
+argc 包含 arg 参数的个数(没有则为 0),不包括上面描述的选项。
+
+argv 包含一个 Tcl 列表,其成员依次是在 - - 选项后面或不匹配在上面的选项段落描述的任何选项的 arg 参数,如果没有这些参数则是一个空串。
+
+argv0 如果指定了 fileName 则在此包含。否则。包含调用 wish 使用的名字。 geometry 如果指定了 -geometry 选项,wish 把它的值复制到这个变量中。如果在 fileName 被求值之后这个变量仍然存在,wish 在一个 wm geometry 命令中使用这个值来设置主窗口的几何(位置、大小)。
+
+tcl_interactive 如果交互式运行 wish 则包含 1(不指定 fileName 并且标准输入是一个终端类设备),否则是 0。
+
+.SH 脚本文件
+如果你建立的 Tcl 脚本文件的第一行是
+
+\fI#!/usr/local/bin/wish\fR
+
+则如果你把它标记为可执行的,接着就可以直接在你的 shell 中调用这个脚本文件。这里假定了 wish  被安装在缺省的位置 /usr/local/bin;如果它被安装在其他地方,那么你需要修改上述行来匹配之。许多 UNIX 系统不允许 #! 行超出 30 个字符的长度,所以要确定 wish 可执行文件能被用短文件名访问。
+
+一个更好的途径是用下面三行来开始你的脚本文件:
+
+.nf
+#!/bin/sh
+# the next line restarts using wish \\
+exec wish "$0" "$@"
+.fi
+
+这种方法比起前面的段落有三个好处。首先,wish 二进制文件的位置不需要填入(hard-wired into)  脚本中: 它可以在你的 shell 查找路径中的任何地方。其次,他超越了(get around)了上种方法的 30 字符的文件名的限制。第三,这种方法在 wish 自身也是 shell 脚本时仍可运行(一些系统要处理多体系或操作系统:  wish 脚本选择某个二进制文件来运行)。第三行导致 sh 和 wish  两者来处理脚本,但 exec 只被 sh 执行。 sh 首先处理脚本文件;它把第二行作为脚本文件对待并执行第三行。exec 语句导致 shell 停止处理而启动 wish 来重新处理整个脚本。当 wish 启动时,因为第二行的反斜线导致第三行被作为第二行注释的一部分,它把所有三行都作为注释对待。
+提示符
+
+当交互式的调用  wish 时,它通常为每条命令提示“%”。你可以通过设置变量 tcl_prompt1 和 tcl_prompt2 来改变提示符。如果存在变量 tcl_prompt1 则它必须由一个输出一个提示符的 Tcl 脚本组成;tclsh 对 tcl_prompt1 中的脚本求值而不是输出一个提示符。变量 tcl_prompt2 以类似的方式用在键入了换行而当前命令却不完整的时候;如果没设置 tcl_prompt2 则对不完整的命令不给以提示符。
+.SH 关键字
+shell, 工具箱
+.SH 作者
+.nf
+Copyright © 1991-1994 The Regents of the University of California.
+Copyright © 1994-1996 Sun Microsystems, Inc.
+Copyright © 1995-1997 Roger E. Critchlow Jr.
+.fi
+.SH [中文版维护人]
+.B 寒蝉退士
+.SH [中文版最新更新]
+.B 2001/06/20
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/xargs.1 b/src/man1/xargs.1
new file mode 100644
index 0000000..1e04829
--- /dev/null
+++ b/src/man1/xargs.1
@@ -0,0 +1,109 @@
+.TH XARGS 1L \" -*- nroff -*-
+
+.SH NAME
+xargs \- 从标准输入重建并执行命令行
+
+.SH "总览 (SYNOPSIS)"
+.B xargs
+[\-0prtx] [\-e[eof-str]] [\-i[replace-str]] [\-l[max-lines]]
+[\-n max-args] [\-s max-chars] [\-P max-procs] [\-\-null] [\-\-eof[=eof-str]]
+[\-\-replace[=replace-str]] [\-\-max-lines[=max-lines]] [\-\-interactive]
+[\-\-max-chars=max-chars] [\-\-verbose] [\-\-exit] [\-\-max-procs=max-procs]
+[\-\-max-args=max-args] [\-\-no-run-if-empty] [\-\-version] [\-\-help]
+[command [initial-arguments]]
+
+.SH "描述 (DESCRIPTION)"
+此 手册页 描述 GNU 版本 的
+.BR xargs .
+.B xargs
+从 标准 输入 读入 参数. 参数 用 空格(可以 用 双引号 单引号 或 反斜杠 转意) 或者 回车 隔开.
+然后 一次 或者 多次 执行 命令
+.I command
+(默认 是 /bin/echo), 其 参数 是
+.I initial-arguments
+后面 再 加上 从 标准 输入 读入 的 参数. 标准 输入中 的 空格 被 忽略.
+.P
+.B xargs
+退出 可以有 如下 状态:
+.nf
+0 如果 成功
+123 如果 任何 一个 被 调用 的 命令 command 退出 状态 为 1-125
+124 如果 命令 command 退出 状态 为 255
+125 如果 命令 command 被 信号 终止
+126 如果 不能 执行 命令 command
+127 如果 命令 command 没有 找到
+1 如果 发生 其它 错误
+.fi
+
+.SS "选项 (OPTIONS)"
+.TP
+.I "\-\-null, \-0"
+输入 的 文件名 以 null 字符 结尾, 而不是 空格, 引号 和 反斜杠 并不 特殊 处理
+(所有 字符 都以 字面 意思 解释). 禁止 文件尾 字符串, 当 另一个 参数 处理. 当
+参数 含有 空格, 引号, 反斜杠 时 很方便. GNU find 的 \-print0 选项 产生 适合
+这种 模式 的 输出.
+.TP
+.I "\-\-eof[=eof-str], \-e[eof-str]"
+把 文件尾 字符串 设置 成\fIeof-str\fR. 如果 文件尾 字符串 出现 在 输入中 的
+某行, 余下的 行 将被 忽略. 如果 没有 \fIeof-str\fR , 就 没有 文件尾 字符串.
+如果 没有 这个 选项, 文件尾 字符串 默认 是 "_".
+.TP
+.I "\-\-help"
+显示
+.B xargs
+的 选项, 然后 退出.
+.TP
+.I "\-\-replace[=replace-str], \-i[replace-str]"
+把 initial-arguments 里的 所有 \fIreplace-str\fR 替换为 从 标准 输入 里 读入
+的 名称. 同时, 没有 用 引号 括起来 的 空格 不会 结束 参数. 如果 没有
+\fIreplace-str\fR , 它 默认为 "{}" (同 `find \-exec' 一样). 此 选项 隐含有
+\fI\-x\fP 和 \fI\-l 1\fP 选项.
+.TP
+.I "\-\-max-lines[=max-lines], -l[max-lines]"
+每个 命令行 最多 可以 有 \fImax-lines\fR 行 非空格 输入; \fImax-lines\fR 默认
+是 1.  后面 跟着 的 空格 会使 后面 一行 逻辑 上 是 一个 输入行 的 继续. 此 选项
+隐含有 \fI\-x\fR 选项.
+.TP
+.I "\-\-max-args=max-args, \-n max-args"
+每个 命令行 最多 可以 有 \fImax-args\fR 个 参数. 如果 大小 超出了 (见 \-s 选项)
+那么 参数 个数 将 会用 比 \fImax-args\fR 小; 除非 用了 \-x 选项, 那么
+\fBxargs\fR 将 退出.
+.TP
+.I "\-\-interactive, \-p"
+提示 用户 是否 运行 每个 命令行, 然后 从 终端 读入 一行. 只有 当 此行 以 'y'
+或 'Y' 开头 才会 运行 此 命令行. 此 选项 隐含有 \fI\-t\fR 选项.
+.TP
+.I "\-\-no-run-if-empty, \-r"
+如果 标准 输入 不 包含 任何 非空格, 将 不运行 命令. 一般 情况下, 就算 没有
+输入, 命令 也会 运行 一次.
+.TP
+.I "\-\-max-chars=max-chars, \-s max-chars"
+每个 命令行 最多 可以 有 \fImax-chars\fR 个 字符, 包括 命令 和 初始 参数, 还
+包括 参数 后面 结尾 的 null. 默认 是 尽可能的 大, 有 20k 个 字符.
+.TP
+.I "\-\-verbose, \-t"
+在 执行 之前 在 标准 错误 输出 显示 命令行.
+.TP
+.I "\-\-version"
+显示
+.B xargs
+的 版本号, 然后 退出.
+.TP
+.I "\-\-exit, \-x"
+如果 大小 超出 (见 \fI\-s\fR 选项) 就 退出.
+.TP
+.I "\-\-max-procs=max-procs, \-P max-procs"
+同时 最多 运行 \fImax-procs\fR 个 进程; 默认 是 1. 如果 \fImax-procs\fR 为 0,
+\fBxargs\fR 将 同时 运行 尽可能 多 的 进程. 最好 同时 用 \fI\-n\fR 选项; 不然
+很 可能 只会 做 一次 exec.
+
+.SH "参见 (SEE ALSO)"
+\fBfind\fP(1L), \fBlocate\fP(1L), \fBlocatedb\fP(5L), \fBupdatedb\fP(1)
+\fBFinding Files\fP (在线 Info, 或者 打印的)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/10/31
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/xmodmap.1 b/src/man1/xmodmap.1
new file mode 100644
index 0000000..cd949f2
--- /dev/null
+++ b/src/man1/xmodmap.1
@@ -0,0 +1,312 @@
+.\" $TOG: xmodmap.man /main/27 1997/04/02 09:22:54 kaleb $
+.\" Copyright (c) 1988, 1989, 1990  X Consortium
+.\" Copyright 1987 Sun Microsystems, Inc.
+.\" 
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\" 
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\" 
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\" $XFree86: xc/programs/xmodmap/xmodmap.man,v 1.1.1.3.2.2 1997/07/05 15:55:55 dawes Exp $
+.de EX		\"Begin example
+.ne 5
+.if n .sp 1
+.if t .sp .5
+.nf
+.in +.5i
+..
+.de EE
+.fi
+.in -.5i
+.if n .sp 1
+.if t .sp .5
+..
+.TH XMODMAP 1 "Release 6.3" "X Version 11"
+.SH NAME
+xmodmap - 在 X 环境中调节键盘映射和鼠标键映射
+
+.SH "总览 (SYNOPSIS)"
+.B xmodmap
+[-options ...] [filename]
+
+.SH "描述 (DESCRIPTION)"
+.PP
+\fIxmodmap\fP 用来 编辑 或 显示 键盘的
+\fI修饰键映射(modifier map)\fP 和 \fI键盘映射表(keymap table)\fP,
+客户程序 用 它们 把 键码(keycode) 事件 转换为 keysym. 通常 在 用户会话 的 
+启动脚本 中 使用 \fIxmodmap\fP, 把 键盘 配置成 用户 喜爱的 风格.
+
+.SH "选项 (OPTIONS)"
+.PP
+\fIxmodmap\fP 可以 使用 下列 选项:
+.TP 8
+.B \-display \fIdisplay\fP
+这个选项 指定 主机 和 显示器.
+
+.TP 8
+.B \-help
+这个选项 在 标准错误设备 显示 命令行参数 的 说明. 如果 出现了 无法识别 的
+参数, 
+.I xmodmap 
+也会 执行 这个 功能.
+
+.TP 8
+.B \-grammar
+这个选项 在 标准错误设备 显示 表达式 的 语法. 该语法 适用于 文件 或
+\-e expression 选项.
+
+.TP 8
+.B \-verbose
+这个选项 要求
+.I xmodmap
+在 分析 输入数据 的 时候 显示 日志信息.
+
+.TP 8
+.B \-quiet
+这个选项 要求 关闭 verbose 日志信息. 这是 缺省选项.
+
+.TP 8
+.B \-n
+这个选项 不要求
+.I xmodmap
+真的改变 (键盘,鼠标) 映射, 而只是 显示出 它 可能 做什么, 如同
+\fImake(1)\fP 的 相同 选项 一样.
+
+.TP 8
+.B \-e \fIexpression\fB
+这个选项 执行 一个 给定的 表达式. 命令行上 可以 指定 任何 数量 的 表达式.
+
+.TP 8
+.B \-pm
+这个选项 要求 在 标准输出设备 显示 当前的 修饰键(modifier)映射.
+
+.TP 8
+.B \-pk
+这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap).
+
+.TP 8
+.B \-pke
+这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap). 输出格式
+能够 作为 \fIxmodmap\fP 的 输入.
+
+.TP 8
+.B \-pp
+这个选项 要求 在 标准输出设备 显示 当前的 鼠标(pointer)映射.
+
+.TP 8
+.B \-
+单独的 短横线(-) 说明 把 标准输入设备 作为 输入文件 使用.
+
+.PP
+\fIfilename\fP 指定 一个文件, 其中 包含 \fIxmodmap\fP 将要 执行的 表达式.
+这个文件 通常 命名为 \fI.xmodmaprc\fP, 存放在 用户的 根目录下.
+
+.SH "语法 (EXPRESSION GRAMMAR)"
+.PP
+.I xmodmap
+读入 一连串的 表达式, 在 执行 它们 以前, 对 所有 表达式 进行 分析.
+这样 就可以 不用担心 重定义 的 keysym 出现 名字冲突.
+
+.TP 8
+.B keycode \fINUMBER\fP = \fIKEYSYMNAME ...\fP
+把 这一串 keysym 赋于 指定的 键码.
+(键码 可以是 十进制数, 十六进制数, 八进制数, 可以用 
+.I xev 
+程序 测出.)
+
+.TP 8
+.B keycode any = \fIKEYSYMNAME ...\fP
+如果 不存在 分配了 上述 keysym 序列 的 键, \fIxmodmap\fP 就 选择 键盘上 的 
+空闲键, 把 这些 keysym 分配 给 它. keysym 可以是 十进制数, 十六进制数 或者
+八进制数.
+
+.TP 8
+.B keysym \fIKEYSYMNAME\fP = \fIKEYSYMNAME ...\fP
+左边的 \fIKEYSYMNAME\fP 翻译为 对应的 键码, 该键码 应用于 相应的 
+键码表达式集.
+你 可以 在 头文件 \fI<X11/keysymdef.h>\fP 中 找到 keysym 的 名称列表
+(去掉 \fIXK_\fP 前缀), 也可以 查 keysym 数据库 \fI<XRoot>/lib/X11/XKeysymDB\fP,
+这里的 <XRoot> 指 X11 的 安装树. 注意, 如果 多个 键码 编联(bind)了 相同的 
+keysym, 那么 每个 对应的 键码 都要 执行 这个 表达式.
+
+.TP 8
+.B clear \fIMODIFIERNAME\fP
+删除 给定 修饰键 在 修饰键映射表 中 的 所有 表项, 修饰键 的 名字 有:
+.BR Shift ,
+.BR Lock ,
+.BR Control ,
+.BR Mod1 ,
+.BR Mod2 ,
+.BR Mod3 ,
+.BR Mod4 ,
+和 \fBMod5\fP (修饰键名字 不分 大小写, 但是 其他 名字 对 大小写 敏感).
+例如, ``clear Lock'' 将 删除 所有 编联为 shift lock 的 键.
+
+.TP 8
+.B add \fIMODIFIERNAME\fP = \fIKEYSYMNAME ...\fP
+这条语句 把 所有 包含 给定 keysym 的 键 加入到 指定的 修饰键映射表 中.
+读取完 全部 输入表达式 之后, xmodmap 才分析 这些 keysym, 这样 有利于 
+编写 一些 交换 键位 的 表达式. (见 EXAMPLES 节)
+
+.TP 8
+.B remove \fIMODIFIERNAME\fP = \fIKEYSYMNAME ...\fP
+这条语句 在 指定的 修饰键映射表 中 删除 所有 包含 指定 keysym 的 键. 和
+.B add
+不同, xmodmap 每 读取 一行 就 执行 一行. 这样 可以 避免 考虑 这些键
+是否 被 重分配过.
+
+.TP 8
+.B "pointer = default"
+这条语句 把 鼠标映射 设置为 缺省值 (按键1 产生 代码1, 按键2 产生 代码2, 等等).
+
+.TP 8
+.B pointer = \fINUMBER ...\fP
+这条语句 把 鼠标映射 设置为 指定的 按键代码. 这个 代码列表 总是 从 第一个
+按键 开始.
+
+.PP
+注释行 以 感叹号(!) 开始.
+
+.PP
+如果 你 打算 改变 某个 修饰键 的 编联, 你 必须 把它 从 相应的
+修饰键映射表 中 同时 删除.
+
+.SH "示例 (EXAMPLE)"
+.PP
+大多数 鼠标 设计成 右手 食指 按 第一个键, 左撇子 却觉得 如果 把 按键
+代码 反过来, 使 左手 食指 按上 主键 会 更舒服些. 对于 三键鼠标 可以 这样:
+.EX
+%  xmodmap -e "pointer = 3 2 1"
+.EE
+
+.PP
+很多 应用程序 支持 Meta 键,
+然而, 有些 服务器 的 键盘映射表 中 没有 提供 Meta keysym, 因此 需要 手工
+添加. 下面的 命令 将把 Meta 附加到 Multi-language 键上 (有时也 称为
+Compose Character).  另一个 有利方面 是, 需要 Meta 键 的 程序 只是要求 获得 
+键码, 不要求 keysym 位于 键盘映射表 的 第一列.
+这 意味着 需要 Multi_key 的 程序 不会 发觉 有 任何 变化.
+.EX
+%  xmodmap -e "keysym Multi_key = Multi_key Meta_L"
+.EE
+
+.PP
+类似的, 有些 键盘 只有 Alt 键, 而没有 Meta 键. 这种情况下 可以 用:
+.EX
+%  xmodmap -e "keysym Alt_L = Meta_L Alt_L"
+.EE
+
+.PP
+\fIxmodmap\fP 最简单, 也是 最合适的 用途 之一 是 设置 键盘的 "rubout" 键,
+产生 替换的 keysym.  它 经常 用于 交换 Backspace 和 Delete 键.
+如果 \fIxterm\fP 的 \fIttyModes\fP 资源 也 做了 同样的 设置,
+所有的 终端模拟窗口 将 用 相同的键 删除 字符.
+.EX
+%  xmodmap -e "keysym BackSpace = Delete"
+%  echo "XTerm*ttyModes:  erase ^?" | xrdb -merge
+.EE
+.PP
+有些键盘 按下 shift 键 和 逗号, 句号键 时, 不能 产生 小于号 和 大于号.
+这个现象 可以 通过 重新编联 逗号键 和 句号键 矫正:
+.EX
+!
+! make shift-, be < and shift-. be >
+!
+keysym comma = comma less
+keysym period = period greater
+.EE
+
+.PP
+键盘间 最烦人 的 区别 之一 就是 Control 和 Shift Lock 键 的 位置.  
+\fIxmodmap\fP 的 一个 常用功能 就是 交换 这两个 键, 象这样:
+.EX
+!
+! Swap Caps_Lock and Control_L
+!
+remove Lock = Caps_Lock
+remove Control = Control_L
+keysym Control_L = Caps_Lock
+keysym Caps_Lock = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
+.EE
+.PP
+如果 要 对 多个 键码 分配 同一个 keysym, 可以 使用 \fIkeycode\fP 命令.
+尽管 这个做法 不能 移植, 但是 你可以 用它 写一段 脚本, 把 键盘 复位为
+已知状态.
+下面的 脚本 把 backspace 设为 Delete (如上所示), 清除 cap lock 的 编联,
+把 CapsLock 设为 Control 键, F5 设为 Escape, Break/Reset 设为 shift lock.
+.EX
+!
+! On the HP, the following keycodes have key caps as listed:
+!
+!     101  Backspace
+!      55  Caps
+!      14  Ctrl
+!      15  Break/Reset
+!      86  Stop
+!      89  F5
+!
+keycode 101 = Delete
+keycode 55 = Control_R
+clear Lock
+add Control = Control_R
+keycode 89 = Escape
+keycode 15 = Caps_Lock
+add Lock = Caps_Lock
+.EE
+
+.SH "环境变量 (ENVIRONMENT)"
+.PP
+.TP 8
+.B DISPLAY
+指示 缺省的 主机 和 显示器号.
+
+.SH "另见 (SEE ALSO)"
+X(1), xev(1), \fIXlib\fP 关于 键盘 和 鼠标 事件 的 文档.
+
+.SH BUGS
+.PP
+服务器 每执行 一个 \fBkeycode\fP 表达式, 就要在 每一个 客户机 上 产生 一个
+\fIMappingNotify\fP 事件. 这可能 导致 某些 异常情况. 所有的 改变 都应该
+收集 在一起, 然后 一次 完成. 那些 接收了 键盘输入, 却 忽略了 
+\fIMappingNotify\fP 事件 的 客户机 将 无法 注意到 对 键盘映射 的 任何 改变.
+
+.PP
+如果 编联了 某个 修饰键 的 键码 发生 变化, 
+.I Xmodmap
+将 自动 产生 "add" 和 "remove" 表达式.
+
+.PP
+应该 有 某种办法, 当你 确实 搞乱了 键盘映射 的 时候, 使
+.I remove
+表达式 接受 键码 以及 keysym.
+
+.SH "作者 (AUTHOR)"
+Jim Fulton, MIT X 协会, 根据 David Rosenthal 在 Sun Microsystems 中 的 
+早期版本 改写.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/xpdf.1 b/src/man1/xpdf.1
new file mode 100644
index 0000000..08b32d8
--- /dev/null
+++ b/src/man1/xpdf.1
@@ -0,0 +1,382 @@
+.\" Copyright 1996 Derek B. Noonburg
+.TH xpdf 1 "02 Aug 1999"
+.SH NAME
+xpdf \-Portable Document Format(PDF)文件阅读器(版本0.90)
+.SH 总览
+.B xpdf
+[选项]
+.RI [ PDF文件
+.RI [ page]]
+.SH 描述
+.B Xpdf是一个 Portable Document Format(PDF) 文件阅读软件.(PDF文件也经常被称为"Acrobat" 文件,这种叫法来源于Adobe公司的PDF软件的名字.) Xpdf运行在UNIX,VMS和OS/2的X Window系统下.
+.PP
+运行xpdf,只要键入:
+.PP
+.RS
+xpdf file.pdf
+.RE
+.PP
+.I file.pdf
+是你的PDF文件.文件名字后面可以跟随一个数字,用于指定最先显示的页面的页码,比如:
+.PP
+.RS
+xpdf file.pdf 18
+.RE
+.PP
+你当然也可以启动xpdf而不打开任何文件.
+.PP
+.RS
+xpdf
+.RE
+.SH 选项
+方括弧中列出了X资源和相应的选项
+.TP
+.B \-err
+将错误信息指定送到/dev/tty而不是标准错误中(此选项当xpdf被其它程序,比如netscape,打开时,十分有用,否则,每个错误都会弹出一个令人讨厌的小窗口).
+.TP
+.BI \-z " zoom"
+设定初始的放大因子.放大因子是(-5..5)之间的一个数字,其中0表示72dpi.你也可以通过\`page`设定显示页面大小配合窗口大小,或者通过\`width`设定显示页面宽度配合窗口宽度.
+.RB [ xpdf.initialZoom]
+.TP
+.BI \-g " geometry"
+设定窗口的初始几何参数.
+.RB (相当于 \-geometry.)
+.RB [ xpdf.geometry]
+.TP
+.BI \-remote " name"]
+启动/连接名为name的xpdf远程服务器(参见后面的"远程服务器模式"部分)
+.TP
+.B \-raise
+建立xpdf远程服务器窗口.(仅适用于-remote时)
+.TP
+.B -\quit
+退出xpdf远程服务器.(仅适用于-remote时)
+.TP
+.B \-cmap
+安装一个自定义的色彩地图.此选项在TrueColor模式下无效.
+.RB [ xpdf.installCmap]
+.TP
+.BI \-rgb " number"
+设置xpdf将要分配的最大RGB值.缺省值是5(即RGB值5x5x5); 设置一个小数值,可以节省色彩表记录.在自定义色彩地图和TrueColor模式下,此选项无效.
+.TP
+.BI \-papercolor " color"
+设置"页面色彩",比如,页面的显示背景.当pdf文件出现类似在字符后填充白色等情况的时候,此选项无法正常工作.
+.RB [ xpdf.paperColor]
+.TP
+.B \-eucjp
+复制字符时,将日文字符转换成EUC-JP编码.这是至今为止唯一的日文字符转换选项---它的唯一作用就是将非日文字符转换成7-bit的ASCII,以便于配合EUC-JP编码.(此选项只有在编译pdftotext时加上日文支持才有效)
+.RB [ xpdf.eucjp ]
+.TP
+.BI \-t1lib " font-type"
+设定使用t1lib类型的字体提供器.选项为\`none`(完全不使用t1lib),\`plain`(使用non-anti-aliased字体),\`low`或\`high`(使用low-level或者high-level anti-aliased 字体).
+.RB [ xpdf.t1libControl]
+.TP
+.BI \-ps " PS-file"
+设定缺省的PostScript输出文件的名字.此选项也可以以\`|command`的形式,通过某个命令来管道PostScript文件.
+.RB [ xpdf.psFile]
+.TP
+.BI \-paperw " size"
+设定页面宽度,单位是像素点.
+.RB [ xpdf.psPaperWidth]
+.TP
+.BI \-paperh " size"
+设定页面高度,单位是像素点.
+.RB [ xpdf.psPaperHeight]
+.TP
+.B \-level1
+产生Level1 PostScript文件.输出的PostScript文件相当的大(如果它包含图片的话),但是确可以在Level 1打印机上打印输出.此选项将所有的图像转换成黑白图像.
+.RB [ xpdf.psLevel1]
+.TP
+.B \-cmd
+打印出命令的执行结果(在调试时有用)
+.TP
+.B \-q
+不打印任何信息或者错误
+.TP
+.B \-h
+打印帮助信息
+.RB (相当于 \-help)
+.PP
+一些其他的X选项和资源同样可以如预期的一样执行
+.TP
+.BI \-display " display"
+.RB [ xpdf.display]
+.TP
+.BI \-fg " color"
+.RB [ 相当于 \-foreground]
+.RB [ xpdf.foreground]
+.RB \-bg " color"
+.RB (相当于 \-background)
+.RB [ xpdf.background]
+.TP
+.BI \-font " font"
+.RB ( 相当于 \-fn)
+.RB [ xpdf.font]
+.PP
+色彩和字体选项只影响用户界面部分,不影响PDF文件的显示.(\`paper`)
+.PP
+下列的X资源没有对应的命令行选项
+.TP
+.B xpdf.urlCommand
+设定,当你点击网络链接时执行的命令.详情参见后面的
+.B "网络浏览器"
+部分.
+.TP
+.B xpdf.japaneseFont
+设定用于使用日文字符的相应的X字体模式.缺省的是:
+.PP
+.RS
+-*-fixed-medium-r-normal-*-%s-*-*-*-*-*-jisx0208.1983-0
+.RE
+.TP
+.B xpdf.viKeys
+设定将左,右,上和下的滚动由\`h`,\`l`,\`k`和\`j`键执行.
+.PP
+下面的资源用于设定文件名字使用的14种基本的Type 1字体.
+.PP
+.RS
+.B xpdf.t1TimesRoman
+.br
+.B xpdf.t1TimesItalic
+.br
+.B xpdf.t1TimesBold
+.br
+.B xpdf.t1TimesBoldItalic
+.br
+.B xpdf.t1Helvetica
+.br
+.B xpdf.t1HelveticaOblique
+.br
+.B xpdf.t1HelveticaBold
+.br
+.B xpdf.t1HelveticaBoldOblique
+.br
+.B xpdf.t1Courier
+.br
+.B xpdf.t1CourierOblique
+.br
+.B xpdf.t1CourierBold
+.br
+.B xpdf.t1CourierBoldOblique
+.br
+.B xpdf.t1Symbol
+.br
+.B xpdf.t1ZapfDingbats
+.RE
+.PP
+如果激活t1lib,这些Type 1字体将被用于取代X服务器的字体.
+.SH 控制
+.SS 屏幕控制在xpdf窗口的底部.
+.TP
+.B "左/右箭头按键"
+翻到前/后一页
+.TP
+.B "双左/右箭头按键"
+向前/后翻动10页
+.TP
+.B "破折号左/右箭头按键"
+沿着历史路径向前/后翻动
+.TP
+.B "\`Page`输入框"
+翻到指定的页码.通过点击激活输入框,输入页码,然后回车.
+.TP
+.B "放大缩小弹出菜单"
+调整放大因子.(参见前面-z选项的说明)
+.TP
+.B "望远镜按键"
+查找某个文本.
+.TP
+.B "打印机按键"
+弹出一个产生PostScript文件的对话框.对话框可以设定需要
+打印的页面和PostScript文件的名字.当文件名字为\'-'时,代表
+标准输出,或者用\'|command'通过某个命令来管道PostScript,
+比如,\'|lpr'.
+.TP
+.B "\'?'按键"
+弹出一个\'about xpdf'窗口.
+.TP
+.B "链接信息"
+当鼠标移动到某个链接的上面,\`?`和\`Quit`按键之间的空间用来显示链接地址或者外部文件名.
+.TP
+.B "\`Quit`按键"
+退出xpdf.
+.PP
+.SS 菜单
+按鼠标右键,会弹出一个含有以下命令的弹出菜单.
+.TP
+.B "Open..."
+通过文件选择器打开一个新文件.
+.TP
+.B "Save PDF..."
+通过文件选择器保存现有文件.
+.TP
+.B "Rotate left"
+将当前页面逆时针旋转90度.
+.TP
+.B "Rotate right"
+将当前页面顺时针旋转90度.这两个旋转命令主要是为了那些没有在文件中正确指定旋转信息的PDF文件设计的,即使您的X服务器不支持字体旋转,它依然起作用.
+.TP
+.B "Quit"
+退出xpdf.
+.PP
+.SS 字符选择
+按住鼠标并拖动它,可以高亮出一个任意的矩形.任何在此矩形中的字符都会被复制到X选择缓冲中去.
+.PP
+.SS 链接
+点击一个超级链接可以跳转到此链接的目标地址中去.一个指向某个PDF文件的链接将促使xpdf打开此文件.一个指向某可执行程序的\`launch`的链接将弹出一个对话框,如果您点击\`ok`,就会执行此程序.URL链接调出某个外部命令.(参见下面网络浏览器部分.)
+.PP
+.SS 滚动
+按住鼠标中键并拖动之,可以滚动页面.
+.PP
+.SS 快捷键
+.TP
+.B o
+通过文件选择器打开一个新PDF文件.
+.TP
+.B f
+查找字符串.
+.TP
+.B n
+翻到下一页.
+.TP
+.B p
+翻到前一页.
+.TP
+.BR 空格键,PageDown键或者Next键
+向下滚动当前页面,如果已经到达当前页面低部,则翻到下一页.
+.TP
+.BR Backspace键,Delete键,PageUp或者Previous键
+向上滚动当前页面,如果已经到达页面顶部,则翻到前一页.
+.TP
+.B Home键
+滚动到当前页面顶部.
+.TP
+.B End键
+滚动到当前页面低部.
+.TP
+.B 箭头键
+滚动当前页面.
+.TP
+.B control-L
+更新当前页面.
+.TP
+.B q
+退出xpdf.
+.SH "网络浏览器"
+如果您希望点击一个指向PDF文件的链接时,从netscape或者mosaic(或者其他的浏览器)中自动启动xpdf,您需要在您的用户目录下修改(或者创建)
+.I .mime.types
+和
+.I .mailcap
+文件.
+在
+.I .mime.types
+中加入一行:
+.PP
+.RS
+application/pdf pdf
+.RE
+.PP
+在
+.I .mailcap
+中加入:
+.PP
+.RS
+# Use xpdf to view PDF files.
+.RE 
+.RS
+application/pdf; xpdf -err %s
+.RE
+.PP
+确认xpdf在您的可执行查找路径中.
+.PP
+当您点击一个PDF文件中的URL链接,xpdf将执行一个由xpdf.urlCommand资源指定的命令,并将资源中\`%s`替换为相应的URL.比如,指定netscape打开URL,可以这样设定资源.
+.PP
+.RS
+xpdf.urlCommand: netscape -remote `openURL(%s)`
+.RE
+.SH "远程服务器模式"
+通过指定一个服务器的名字,xpdf可以以远程服务器模式打开(和文件名,页码).
+.PP
+.RS
+xpdf -remote myServer file.pdf
+.RE
+.PP
+如果没有xpdf运行在以myServer为名字的服务器模式中,那么一个新的xpdf窗口会被打开.此时,如果键入另一个命令:
+.PP
+.RS
+xpdf -remote myServer another.pdf 9
+.RE
+.PP
+则不会启动新的xpdf,而前一个xpdf(服务器)将会打开
+.I another.pdf
+并且显示第9页.如果文件名字相同:
+.PP
+.RS
+xpdf -remote myServer another.pdf 4
+.RE
+.PP
+xpdf服务器将会简单的显示指定的页面.
+.PP
+-raise选项通知服务器唤醒它的窗口.它既可以后面跟随文件名和页码也可以单独使用.
+.PP
+-quit选项通知服务器关闭窗口并且退出.
+.SH "选项文件"
+xpdf会从您的用户目录(如果有的话)中读取一个叫做
+.I .xpdfrc
+的文件.这个文件可以包含两种条目.
+.TP
+.BI fontpath " directory"
+在
+.IR dicrectory
+中寻找Type 1字体.
+Xpdf只通过此条目获得字体编码.为了显示,还要通过
+.B fontmap
+条目来布局字体.
+.TP
+.BI fontmap " PDF-font" "" " X-font"
+将
+.I PDF-font
+(PDF文件中指定的)布局到
+.IR X-font
+中去,X-font必须是一个在像素大小位置上含有\`%s`的标准X字体描述.
+.PP
+比如,使用
+.PP
+.RS
+fontmap TimesCE-Roman -*-times-medium-r-*-*-%s-*-*-*-*-*-iso8859-2
+.RE
+.PP
+来布局Central European(Latin-2)版的Times-Roman字体.这里假设您已经安装了适当的X字体(参见
+.BR mkfontdir(1)
+).
+Xpdf理解ISO8859-2编码,所以您不需要这些字体的
+.B fontpath
+条目.
+使用Bakoma Type 1字体,可以这样做:
+.PP
+.RS
+fontpath /home/derekn/fonts/bakoma
+.br
+fontmap cmb10 -bakoma-cmb10-medium-r-normal--%s-*-*-*-p-*-adobe-fontspecific
+.br
+fontmap cmbsy10 -bakoma-cmbsy10-medium-r-normal--%s-*-*-*-p-*-adobe-fontspecific
+.br
+etc...
+.RE
+.PP
+这里假设Type 1字体在目录
+.IR /home/derekn/fonts/bakoma
+下.
+.SH 臭虫
+不支持TypeType和Type 3字体.
+.SH 作者
+The xpdf software and documentation are copyright 1996-1999 Derek
+B. Noonburg (derekn at foolabs.com).
+.SH "另见"
+.BR pdftops(1).
+.BR pdftotext(1).
+.BR pdfinfo(1).
+.BR pdftopbm(1).
+.BR pdfimages(1).
+.br
+.B http://www.foolabs.com/xpdf/
diff --git a/src/man1/xxd.1 b/src/man1/xxd.1
new file mode 100644
index 0000000..a82fac6
--- /dev/null
+++ b/src/man1/xxd.1
@@ -0,0 +1,382 @@
+.TH XXD 1 "August 1996" "Manual page for xxd"
+
+.\"
+.\" 21st May 1996
+.\" Man page author:
+.\"    Tony Nugent <tony at sctnugen.ppp.gu.edu.au> <T.Nugent at sct.gu.edu.au>
+.\"    Changes by Bram Moolenaar <Bram at vim.org>
+
+.SH NAME
+.I xxd
+\- 以十六进制形式表示
+
+.SH "总览 (SYNOPSIS)"
+.B xxd
+\-h[elp]
+.br
+.B xxd
+[options] [infile [outfile]]
+.br
+.B xxd
+\-r[evert] [options] [infile [outfile]]
+
+.SH "描述 (DESCRIPTION)"
+.I xxd
+建立 一个 指定 文件 或者 标准 输入 的 十六 进制 转储, 同时 也 可以
+把 十六 进制 转储 转换成 原来的 二进制 形式. 同
+.BR uuencode(1)
+和
+.BR uudecode(1)
+一样, 它 也可以 把 二进制 数据 转换成 ASCII 表示 形式, 这样 电子邮件 就可以
+安全的 传输. 但是 它 有 一个 优点, 就是 可以 把 解码后 的 结果 输出 到
+标准输出. 同时 它 还可以 用来 给 二进制 文件 打补丁.
+
+.SH "选项 (OPTIONS)"
+如果 没有 给定
+.I infile
+就用 标准输入. 如果
+.I infile
+是 一个
+.RB \` \- \'
+字符, 也从 标准输入 读入. 如果 没有 给定
+.I outfile
+(或者 它的 文件名 是 一个
+.RB \` \- \'
+字符), 结果 将 输出至 标准输出.
+.PP
+注意 我们 用的 是 一个 很 "懒" 的 解析器, 它 只 检查 选项的 第一个 字符,
+除非 这个 选项 有 参数. 在 一个 单 字符 的 选项 和 它的 参数 之间的 空格
+可有可无. 选项的 参数 可以 用 十进制, 十六进制 或者 八进制的 形式 指定.
+也就是说
+.RB \-c8 ,
+.BR "\-c 8" ,
+.B \-c 010
+和
+.B \-cols 8
+是 等价的.
+.PP
+.TP
+.IR \-a " | " \-autoskip
+打开/关闭 autoskip: 用一个 单独的 '*' 来 代替 空行. 默认 关闭.
+.TP
+.IR \-b " | " \-bits
+转到 比特(二进制 数字) 模式, 而 不是 十六进制 模式. 在 这种 模式 下,
+每个 字符 被 表示成 八个 0/1 的 数字, 而 不是 一般的 十六进制 形式.
+每 一行 都 以 一个 用 十六进制 形式 表示的 行号, 后面 是 ascii (或者 ebcdic)
+形式 开头. 命令行 选项 \-r, \-p, \-i 在 这个 模式下 不起作用.
+.TP
+.IR "\-c cols " | " \-cols cols"
+.IR "\-c cols " | " \-cols cols"
+每行 表示
+.RI < cols >
+个 字符. 默认 16 (\-i: 12, \-ps: 30, \-b: 6). 最多 256.
+.TP
+.IR \-E " | " \-EBCDIC
+把 右手边的 字符 编码 从 ASCII 变为 EBCDIC. 这个 并不 改变 其 十六进制
+表示 形式. 同 \-r, \-p 或者 \-i 一起用 是 没有 意义的.
+.TP
+.IR "\-g bytes " | " \-groupsize bytes"
+每
+.RI < bytes >
+个 字符 (每 两个 十六进制 字符 或者 八个 二进制 数字) 之间 用 一个 空格 隔开.
+用
+.I \-g 0
+禁止 分组. 在 普通 模式 中
+.RI < Bytes "> 默认 是 " 2
+在 二进制 模式 中 是 \fI1\fP. 分组 并不 适用于 postscript 或者
+include style 选项.
+.TP
+.IR \-h " | " \-help
+显示 可用 命令 概述 并且 退出. 不做 其它 任何 事情.
+.TP
+.IR \-i " | " \-include
+输出 为 C 语言的 包含 文件 形式. 除非 xxd 从 标准输入 读入, 不然 会 输出 一个
+完整的 静态 数组 定义(与 输入 文件 同名).
+.TP
+.IR "\-l len " | " \-len len"
+输出
+.RI  < len >
+个 字符 后 停止.
+.TP
+.IR \-p " | " \-ps " | " \-postscript " | " \-plain
+以 postscript 的 连续 十六进制 转储 输出. 这 也叫做 纯 十六进制 转储.
+.TP
+.IR \-r " | " \-revert
+逆向 操作: 把 十六进制 转储 转换 (或者 打补丁) 成 二进制 形式. 如果 不 输出 到
+标准输出, xxd 并不把 输出 文件 截断, 而是 直接 写到 输出 文件. 用
+.I \-r \-p
+来 从 一个 没有 行号 没有 某种 列格式 的 纯 十六进制 转储 读入. 附加的 空格
+和 换行 可以 出现 在 任何 地方.
+.TP
+.I \-seek offset
+用在
+.I \-r
+之后: 会在 当前 文件的 偏移量 上 增加
+.RI < offset > .
+.TP
+.I \-s [\+][\-]seek
+从 infile 的 绝对 或者 相对 偏移量
+.RI < seek >
+开始.
+\fI\+ \fR 表示 相对于 标准 输入 当前的 位置 (如果 不是 标准输入 就
+没有 意义了). \fI\- \fR 表示 从 文件 末尾 (如果 和 \fI \+ \fR 连用:
+从 标准输入 当前 位置) 向前 数 一些 字符, 从 那个
+地方 开始. 如果 没有 \-s 选项, xxd 从 当前 位置 开始.
+.TP
+.I \-u
+用大写字母. 默认的是小写字母.
+.TP
+.IR \-v " | " \-version
+显示 版本 字符串.
+
+.SH "告诫 (CAVEATS)"
+.PP
+.I xxd \-r
+在 对待 行号 上 有一些 地方 值得 注意. 如过 输出 文件 可以 定位,
+那么 在 十六进制 文件 中的 行首的 行号 可以 重叠, 顺序 可以 打乱,
+还 可以 略去 一些 行号. 这种 情况 下, xxd 会 用 lseek(2) 来 定位.
+如果 输出 文件 不可以 定位, 那么 行号 可以 不连续, 但是 必须 按
+顺序, 这种 情况 下, 中间 会 插入 null 字符.
+.PP
+.I xxd \-r
+从不 输出 解析 错误. 错误 会 被跳过.
+.PP
+在 编辑 十六进制 文件时 要 注意
+.I xxd \-r
+在 读入 足够列 之后 会跳过 本行 后面 所有的 数据 (见 选项 \-c).
+这 就是说 对可打印的 ASCII (或者 EBCDIC) 的修改 都会被 忽略. 用
+xxd \-r \-p 把一个 纯十六进制 转储文件 (或者 postscript) 恢复 成
+二进制文件 与 列数 是否 正确 没有 什么 关系, 它会 解释 所有 看起来
+像 两个 十六进制的 数字.
+.PP
+请 注意
+.br
+\fI% xxd \-i file\fR
+.br
+和
+.br
+\fI% xxd \-i \< file\fR
+的 区别.
+.PP
+因为 lseek(2) 是 用来 重置 输入指针的, 所以
+.I xxd \-s \+seek
+和
+.I xxd \-s seek
+是 有区别的. 如果 输入 是 标准输入, 并且 在 xxd 被执行是 它的 标准输入的 指针
+位置 不是在 文件的 开头, 那么 多了个 '+' 效果 就会 不一样了. 下面的 例子 可能
+帮助你 弄清楚(也可能 让你 更糊涂)...
+.PP
+在读 之前 需要 重置 输入的 文件指针; 因为 `cat' 已经 读到了 输入的 文件尾.
+.br
+\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
+.PP
+从 0x480 (=1024+128) 开始读. `+' 表明 "相对于 当前的 文件位置", 也就是说
+从 dd 读了 1k, 在此 基础上 再加 `128'.
+.br
+\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
+.PP
+从 0x100 ( = 1024-768) 开始读.
+.br
+\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
+.PP
+可是, 这种 情况 很少 发生, 我们 也 很少 需要用 `+'. 当用了 \-s 是, 作者 比较
+喜欢 用 strace(1) 或者 truss(1) 去 监控 xxd 的 行为.
+
+.SH "例子 (EXAMPLES)"
+.PP
+.br
+(译者: 实际 输出 可能 和 例子 有 一些 出入, 只要 理解 其 意思 就行了)
+.br
+显示 \fBfile\fP 除了 前 三行 (十六进制 的 0x30) 的 所有 内容.
+.br
+\fI% xxd \-s 0x30 file
+.PP
+.br
+显示 \fBfile\fP 最后 三行 (十六进制 的 0x30) 的 所有 内容.
+.br
+\fI% xxd \-s \-0x30 file
+.PP
+.br
+显示 120 个 字符, 每行 20 个 字符, 连续 显示.
+.br
+\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
+.br
+2e544820585844203120224d616e75616c207061
+.br
+676520666f7220787864220a2e5c220a2e5c2220
+.br
+32317374204d617920313939360a2e5c22204d61
+.br
+6e207061676520617574686f723a0a2e5c222020
+.br
+2020546f6e79204e7567656e74203c746f6e7940
+.br
+7363746e7567656e2e7070702e67752e6564752e
+.br
+
+.br
+显示 120 个 字符, 每行 12 个 字符.
+.br
+\fI% xxd \-l 120 \-c 12 xxd.1\fR
+.br
+0000000: 2e54 4820 5858 4420 3120 224d  .TH XXD 1 "M
+.br
+000000c: 616e 7561 6c20 7061 6765 2066  anual page f
+.br
+0000018: 6f72 2078 7864 220a 2e5c 220a  or xxd"..\\".
+.br
+0000024: 2e5c 2220 3231 7374 204d 6179  .\\" 21st May
+.br
+0000030: 2031 3939 360a 2e5c 2220 4d61   1996..\\" Ma
+.br
+000003c: 6e20 7061 6765 2061 7574 686f  n page autho
+.br
+0000048: 723a 0a2e 5c22 2020 2020 546f  r:..\\"    To
+.br
+0000054: 6e79 204e 7567 656e 7420 3c74  ny Nugent <t
+.br
+0000060: 6f6e 7940 7363 746e 7567 656e  ony at sctnugen
+.br
+000006c: 2e70 7070 2e67 752e 6564 752e  .ppp.gu.edu.
+.PP
+.br
+只 显示 xxd.1 中 的 日期.
+.br
+\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+.br
+0000028: 3231 7374 204d 6179 2031 3939  21st May 199
+.PP
+.br
+把
+.B input_file
+考到
+.B output_file
+并 在 前面 增加 100 个 字节的 0x00.
+.br
+\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR
+.br
+
+.br
+给 文件 xxd.1 中的 日期 打 补钉.
+.br
+\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
+.br
+\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+.br
+0000028: 3235 7468 204d 6179 2031 3939  25th May 199
+.PP
+.br
+建立 一个 65537 字节的 文件, 所有 字节 都是 0x00,
+除了 最后 一个 字节 是 'A' (十六进制 0x41).
+.br
+\fI% echo \'010000: 41\' | xxd \-r \> file\fR
+.PP
+.br
+打开 autoskip, 显示 上例 中 建立的 文件.
+.br
+\fI% xxd \-a \-c 12 file\fR
+.br
+0000000: 0000 0000 0000 0000 0000 0000  ............
+.br
+*
+.br
+000fffc: 0000 0000 40                   ....A
+.PP
+建立 一个 只 含有 一个 'A' 的 文件. '\-r \-s' 后面 的
+数字 同 文件 中的 行号 相 抵消; 结果是 开头 的 字节 被
+跳过了.
+.br
+\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
+.PP
+在 编辑器, 比如
+.B vim(1)
+中 把 xxd 当成 一个 过滤 程序 来用, 用 十六进制 来 显示
+被 标记 为 'a' 和 'z' 中间 的 区域.
+.br
+\fI:'a,'z!xxd\fR
+.PP
+在 编辑器, 比如
+.B vim(1)
+中 把 xxd 当成 一个 过滤 程序 来用, 用来 恢复 
+被 标记 为 'a' 和 'z' 中间 的 区域 的 十六进制 显示.
+.br
+\fI:'a,'z!xxd \-r\fR
+.PP
+在 编辑器, 比如
+.B vim(1)
+中 把 xxd 当成 一个 过滤 程序 来用, 用来 恢复 一行的
+十六进治 显示. 把 光标 移动 到 相应行 并 键入:
+.br
+\fI!!xxd \-r\fR
+.PP
+从 串行线 中 读入 一个个的 单独的 字符.
+.br
+\fI% xxd \-c1 < /dev/term/b &\fR
+.br
+\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
+.br
+\fI% echo \-n foo > /dev/term/b\fR
+.PP
+
+.SH "返回值 (RETURN VALUES)"
+此 程序 返回 如下的 错误码:
+.TP
+0
+一切 正常.
+.TP
+\-1
+不支持 此 操作 (
+.I xxd \-r \-i
+仍然 不行).
+.TP
+1
+解析 选项 错误.
+.TP
+2
+输入 文件 出错.
+.TP
+3
+输出 文件 出错.
+.TP
+4,5
+指定 的 偏移量 地址 不可 到达.
+
+.SH "参见 (SEE ALSO)"
+uuencode(1), uudecode(1), patch(1)
+.br
+
+.SH "警告 (WARNINGS)"
+这个 工具 古怪的 念头 是其 作者的 意思. 使用 这个 工具的 任何 结果 都由 自己
+负责. 使用它, 探索它, 你 终会 成为 一个 高手.
+.br
+
+.SH "版本 (VERSION)"
+此 手册页 为 1.7 版本的 xxd 而写.
+
+.SH "作者 (AUTHOR)"
+.br
+(c) 1990-1997 by Juergen Weigert
+.br
+<jnweiger at informatik.uni-erlangen.de>
+.LP
+Distribute freely and credit me,
+.br
+make money and share with me,
+.br
+lose money and don't ask me.
+.PP
+Tony Nugent 
+.br
+<tony at sctnugen.ppp.gu.edu.au> <T.Nugent at sct.gu.edu.au>
+最先 开始 写 本 手册页
+.br
+Bram Moolenaar 做了 一些 小的 改动.
+Juergen Weigert 完成了 手册页 的 编写.
+.PP
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/1/22
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/yacc.1 b/src/man1/yacc.1
new file mode 100644
index 0000000..3810023
--- /dev/null
+++ b/src/man1/yacc.1
@@ -0,0 +1,124 @@
+.\" %W% %R% (Berkeley) %E%
+.\"
+
+.TH YACC 1 "July\ 15,\ 1990"
+.UC 6
+
+.SH NAME
+Yacc \- 一个生成 LALR(1) 文法分析器的程序
+
+.SH SYNOPSIS 总览
+.B yacc [ -dlrtv ] [ -b
+.I file_prefix
+.B ] [ -p
+.I symbol_prefix
+.B ]
+.I filename
+
+.SH DESCRIPTION 描述
+Yacc 从 filename 所指定的文件中读出文法(grammar)定义,并为之生成
+一个 LR(1) 分析器。分析器是由一系列 LALR(1)分析表和用 C 语言写的
+驱动例程组成。通常把分析表和驱动例程写到文件 y.tab.c 中。
+
+译注:余在翻译有关编译原理的东西时,总是区别语法(Syntax)和文法
+(grammar)。驱动例程指的是自动生成的 yyparse 函数和相关函数的源代
+码。Yacc和 Lex 自动生成的常量、变量、结构,函数等的名称通常以 yy
+为前缀,目的是不与用户自己的 C 程序定义的名称冲突。LALR(1)文法的
+分析是通过在堆栈上通过移进(shift)和归约(reduce)实现的,任何经过良
+好设计的语言(例如 Lisp,C,Perl,C++,Java),用LALR(1)实现起来是容易,
+高效和可靠的。
+
+.PP
+可得到下面的参数:
+.RS
+
+.TP
+\fB-b \fIfile_prefix\fR
+-b 选项改变的是为输出的文件名准备的前缀,这个字符串用 file_prefix
+指定,缺省的前缀是 y.。
+
+.TP
+.B -d
+\fB-d\fR 
+-d 选项导致多写一个 y.tab.h 头文件。(包含一些词法定义)
+
+.TP
+.B -l
+如果没有指定 -l 选项,则 yacc 将在生成的代码中插入 #line 宏命令
+(directive)。 #line 宏命令用于让 C 编译器把在生成的 C 代码中的
+错误与用户的原始 yacc 代码联系起来。如果指定了 -l 选项,yacc 将
+不插入 #line 宏命令。用户指定的 #line 宏命令还是将被保留的。
+
+.TP
+\fB-p \fIsymbol_prefix\fR
+-p 选项改变的是为 Yacc生成的符号(symbols)准备的前缀,这个字符串用
+symbol_prefix 指定,缺省的前缀是 yy。
+
+.TP
+.B -r
+-r 选项导致 yacc 生成生成分开的代码和表文件。代码文件名是 y.code.c,
+表文件名是 y.tab.c。
+
+.TP
+.B -t
+-t 选项更改 Yacc 生成的预处理宏命令,这样调试语句就会被结合到编译后的
+代码中。
+
+.TP
+.B -v
+-v 选项导致在文件 y.output 中写出可被人阅读的对生成的分析器的描述。
+
+.RE
+.PP
+如果设置了环境变量TMPDIR,TMPDIR 所指定的字符串将被用作生成临时文件
+的路径名。
+
+.SH FILES 相关文件
+.IR y.code.c
+.br
+.IR y.tab.c
+.br
+.IR y.tab.h
+.br
+.IR y.output
+.br
+.IR /tmp/yacc.aXXXXXX
+.br
+.IR /tmp/yacc.tXXXXXX
+.br
+.IR /tmp/yacc.uXXXXXX
+
+.SH DIAGNOSTICS 诊断
+如果有些规则永不归约,在标准错误输出上报告这些规则的数目。
+如果有任何 LALR(1) 冲突,在标准错误输出上报告这些冲突的数目。
+
+译注:规则永不归约通常出现在文法有二义性规则的时候,术语叫
+归约-归约冲突。LALR(1) 冲突术语上叫移进-归约冲突,解决的方法
+一种是 Lisp 风格的语言的括号总动员,一种是 C 风格的语言的优先
+级排座次,还有一种是结构化的解决方法例如 Fortran77 的IF...ENDIF
+及 Algol68 的if...fi。C 风格语言的一个标志就是至少有一个
+从 Algol60 至今死不改悔的移进-归约冲突--都是else(悬挂)惹的祸。
+只要你清楚并让用户知道,有移进-归约冲突可以是正常的,不象
+归约-归约冲突那样必须避免。
+
+.SH [中文版维护人]
+.B mhss
+.PP
+推荐:
+编译原理及实践/(美)Kenneth C. Louden著. -北京: 机械工业出版社,
+2000.3 ¥39。
+实践出真知,无有捷径。读 byacc 的源程序是艰苦的事情, 但能澄清
+一些似是而非的认识, 亲历编程的精真妙明的境界, 虽无大的实际利益,
+毕竟是聊胜于无。在娑婆世界中, 一个完整的美梦是十分珍贵的。
+仁者, 何妨一试。
+.PP
+推荐: 
+编译原理/吕映芝等著. -北京: 清华大学出版社,1998.1 ¥21。
+余见到 LL(2) 感到很欣慰。余以为是改进消除左递归和提取左因子的
+算法就可以解决的事情,故不应是学术问题。余不懂学术,若妄言之,
+大人有大量,请海涵了。
+
+.SH [中文版最新更新]
+2000/11/13
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/yes.1 b/src/man1/yes.1
new file mode 100644
index 0000000..da757ba
--- /dev/null
+++ b/src/man1/yes.1
@@ -0,0 +1,42 @@
+.TH YES "1" "1999年8月" "GNU sh-utils 2.0" FSF
+.SH NAME(名称)
+yes \- 不断输出一个字符串,直到杀死其为止
+.SH SYNOPSIS(总览)
+.B yes
+[\fIOPTION\fR]... [\fISTRING\fR]...
+.SH DESCRIPTION(描述)
+.PP
+.\" 在这儿添加任何附加的描述信息
+.PP
+不断输出包括所有指定STRING(s)的一行,或者是`y'.
+.TP
+\fB\-\-help\fR
+显示帮助并退出
+.TP
+\fB\-\-version\fR
+输出版本信息并退出
+.SH "REPORTING BUGS"(报告BUGS)
+报告bugs,请发到<bug-sh-utils at gnu.org>
+.SH "SEE ALSO"(另见)
+.B yes
+的完整文档以Texinfo手册的形式维护.如果你正确安装了
+.B info
+和
+.B yes
+程序,那么命令
+.IP
+.B info yes
+.PP
+应该可让你访问到整个手册.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+.br
+这是自由软件;参看复制条件的源文件.不承担任何责任;更不用说商业性或针对特定目的的适
+用性.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/08/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/ypchfn.1 b/src/man1/ypchfn.1
new file mode 100644
index 0000000..f94f124
--- /dev/null
+++ b/src/man1/ypchfn.1
@@ -0,0 +1 @@
+.so man1/yppasswd.1
diff --git a/src/man1/ypchsh.1 b/src/man1/ypchsh.1
new file mode 100644
index 0000000..f94f124
--- /dev/null
+++ b/src/man1/ypchsh.1
@@ -0,0 +1 @@
+.so man1/yppasswd.1
diff --git a/src/man1/yppasswd.1 b/src/man1/yppasswd.1
new file mode 100644
index 0000000..fc3c8e0
--- /dev/null
+++ b/src/man1/yppasswd.1
@@ -0,0 +1,156 @@
+.\" -*- nroff -*-
+.\" Copyright (C) 1998, 1999 Thorsten Kukuk
+.\" This file is part of the yp-tools.
+.\" Author: Thorsten Kukuk <kukuk at suse.de>
+.\"
+.\" 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, or (at your option)
+.\" any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+.\"
+.TH yppasswd 1 "1998年5月" "YP Tools 2.4"
+.SH NAME(名称)
+yppasswd, ypchfn, ypchsh \- 修改你在NIS数据库中的密码
+.SH SYNOPSIS(总览)
+.B "yppasswd [-f] [-l] [-p] [user]"
+.br
+.B "ypchfn [user]"
+.br
+.B "ypchsh [user]"
+.SH DESCRIPTION(描述)
+在Linux中,标准的
+.BR passwd (1),
+.BR chfn (1)
+和
+.BR chsh (1)
+不能够用来修改用户的NIS密码,shell和GECOS信息,它们只能修改本机上的密码文件.
+要修改NIS信息,可以使用它们的NIS对应命令
+.BR yppasswd ,
+.B ypchfn
+和
+.BR ypchsh
+来替代.
+.P
+这些命令都是同一个程序,只是链接为不同的名字罢了.
+使用命令行选项,你可以选择是否更新你的密码
+.BR \-p ,
+你的登录shell
+.BR \-l ,
+你的GECOS字段
+.BR \-f ,
+还是它们的并集.
+如果没有指定其它选项的话,
+.B yppasswd
+暗含了
+.B \-p
+选项.如果你使用了
+.B \-f
+或者
+.B \-l
+选项,你也需要添加
+.B \-p
+标识。
+.B ypchfn
+暗含了
+.B \-f
+选项,而
+.B ypchsh
+则暗含了
+.BR \-l 
+选项.
+.P
+当不带
+.I user
+参数调用时,正在调用命令的用户的账号信息将被更新,
+否则更新
+.I user
+的信息.该选项只对超级用户有用.如果服务器上的yppasswdd后台守护程序支持,你可以指定服务器的root密码来替换用户[老的]密码.
+.P
+所有工具首先会提示用户当前NIS密码需要使用
+.BR yppasswdd (8)
+后台守护程序认证.随后,程序提示以下更新信息:
+.\"
+.\"
+.IP "\fByppasswd\fP或\fB-l\fP"
+修改用户的NIS密码.提示用户输入新的密码.
+当输入密码时,响应是关闭的,这样密码不会显示在屏幕上.拒绝空的密码,这是因为密码短于6个字符.用户然后会要求重新输入密码以确证第一次没有拼错.
+.\"
+.\"
+.IP "\fBypchsh\fP or \fB-l\fP"
+修改用户的登录shell.提示用户输入新的shell,老的shell作为默认值:
+.IP
+.in +2n
+.ft B
+.nf
+Login shell [/bin/sh]: _
+.fi
+.ft
+.in
+.IP
+要接受默认值,只需按回车.要清除在你的
+.BR passwd (5)
+文件中的shell字段(这样会选定系统的默认shell),
+输入字符串
+.IR none .
+.\"
+.\"
+.IP "\fBypchfn\fP or \fB-f\fP"
+修改用户的全名和相关信息.按照惯例,一些应用程序需求
+.BR passwd (5)
+文件的GECOS字段(字段4)包含用户的真名(与登录名相对应)和一些如办公室电话号码之类的附加信息.这些信息通过
+.BR finger (1)
+和其他一些可能的工具显示.
+.IP
+当设置全名时,
+.B ypchfn
+显示以下提示,默认值使用方括号括起:
+.IP
+.in +2n
+.ft B
+.nf
+Name [Joe Doe]:
+Location [2nd floor, bldg 34]:
+Office Phone [12345]:
+Home Phone []:
+.fi
+.ft
+.in
+.IP
+要接受默认值,只需按回车.要清除一个字段,则输入
+字符串
+.IR none .
+.SH SEE ALSO(另见)
+.BR chfn (1),
+.BR chsh (1),
+.BR finger (1),
+.BR passwd (5),
+.BR passwd (1),
+.BR ypcat (1),
+.BR yppasswdd (8),
+.BR ypserv (8),
+.BR ypwhich (1)
+.LP
+.SH AUTHOR(作者)
+.B yppasswd
+是
+.B yp-tools
+包的一部分,由Thorsten Kukuk <kukuk at suse.de>写成.
+
+
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2000/12/14
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man1/zcat.1 b/src/man1/zcat.1
new file mode 100644
index 0000000..c2a5145
--- /dev/null
+++ b/src/man1/zcat.1
@@ -0,0 +1 @@
+.so man1/gzip.1
diff --git a/src/man1/zipinfo.1 b/src/man1/zipinfo.1
new file mode 100644
index 0000000..100dd25
--- /dev/null
+++ b/src/man1/zipinfo.1
@@ -0,0 +1,299 @@
+.\"  Copyright (c) 1990-2002 Info-ZIP.  All rights reserved.
+.\"
+.\"  See the accompanying file LICENSE, version 2000-Apr-09 or later
+.\"  (the contents of which are also included in unzip.h) for terms of use.
+.\"  If, for some reason, all these files are missing, the Info-ZIP license
+.\"  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
+.\"
+.\" zipinfo.1 by Greg Roelofs and others.
+.\"
+.\" =========================================================================
+.\" define .X macro (for long-line ZipInfo output examples; small Courier):
+.de X
+.nf
+.ft CW
+.ie n .ti -5
+.el \{ .ti +2m
+.ps -1 \}
+\&\\$1
+.ie n .ti +5
+.el \{ .ti -2m
+.ps +1 \}
+.ft
+.fi
+..
+.\" define .EX/.EE (for multiline user-command examples; normal Courier font)
+.de EX
+.in +4n
+.nf
+.ft CW
+..
+.de EE
+.ft
+.fi
+.in -4n
+..
+.\" =========================================================================
+.TH ZIPINFO 1L "17 February 2002 (v2.4)" "Info-ZIP"
+.SH NAME
+zipinfo \- 列出关于某个ZIP压缩包的详细信息
+.PD
+.SH "总览 SYNOPSIS"
+\fBzipinfo\fP [\fB\-12smlvhMtTz\fP] \fIfile\fP[\fI.zip\fP]
+[\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]
+.PP
+\fBunzip\fP \fB\-Z\fP [\fB\-12smlvhMtTz\fP] \fIfile\fP[\fI.zip\fP]
+[\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]
+.PD
+.\" =========================================================================
+.SH "描述 DESCRIPTION"
+\fIzipinfo\fP 列出某个ZIP档案中的所包含文件的技术信息,
+它们绝大多数和MS-DOS系统中的相同.信息包括文件权限设置,加密状态,压缩类型,
+以及压缩程序的版本和所在的操作系统或者文件系统等.缺省时将为档案中的每一个
+文件列出一行,并在首行和末行给出整个档案的概括信息.其输出的格式介于Unix中
+``\fCls \-l\fR''和 ``\fCunzip \-v\fR''的输出结果.参看下面的
+.B "详细描述 DEATILED DESCRIPTION" .
+请注意 \fIzipinfo\fP与\fIunzip\fP 是同一个程序 (在Unix中,是一个对它的连接);
+然而在有些系统上, \fIzipinfo\fP 的支持在\fIunzip\fP 集成后已被忽略.
+.PD
+.\" =========================================================================
+.SH "参数 ARGUMENTS"
+.TP
+.IR file [ .zip ]
+ZIP 压缩包的路径.如果指定的文件是一个通配符,那么将按照某种操作系统或者
+文件系统所决定的顺序处理每一个匹配的文件.只有文件名可以是通配符.路径本
+身不可以.通配符表达式和 Unix 中的 \fIegrep\fP(1) 正则表达式相似,可能包括:
+.RS
+.IP *
+匹配一个0或者任意多个字符组成的序列
+.IP ?
+精确匹配一个字符
+.IP [.\|.\|.]
+匹配中括号中的任何单个字符;也可以通过首字符,连字符和末字符指定一个匹配范围.如果一个惊叹号或者插入符(`!'或者`^')紧跟左括号;那么将对括号中的内容取补集(也就是说, 任何不属于括号中的字符将被匹配).
+.RE
+.IP
+(如果有任何字符会被操作系统所改变,请使用引号,特别是在 Unix 或者 VMS 中)如果没有匹配项出现,那么指定的内容将被认为是原始的文件名;如果这样做也失败,那么将尝试追加 \fC.zip\fR 后缀.注意自解压的ZIP文件是支持的;只要明确指定 \fC.exe\fR 后缀即可.
+.IP [\fIfile(s)\fP]
+指定一个可选的待处理的档案列表.正则表达式(通配符)可以用来匹配多个成员;如上所述.再次提醒如果表达式会被操作系统所扩展或者修改要使用引号.
+.IP [\fB\-x\fP\ \fIxfile(s)\fP]
+指定一个可选的将被忽略的档案列表.
+.\" =========================================================================
+.SH "选项 OPTIONS"
+.TP
+.B \-1
+只列出文件名,一行一个.这个选项具有完全的排它性;首末行信息以及压缩文件的描述信息将不会被输出.它可以在Unix的Shell脚本中使用.
+.TP
+.B \-2
+只列出文件名,一行一个,但是允许输出首行信息 (\fB\-h\fP), 末行信息(\fB\-t\fP) 和压缩文件描述信息 (\fB\-z\fP). 这个选项在文件名特别长的情况下或许有用.
+.TP
+.B \-s
+以Unix的 ``\fCls \-l\fR'' 的短格式列出压缩文件的信息.这是缺省的,详情见下.
+.TP
+.B \-m
+以 Unix的 ``\fCls \-l\fR'' 的中长格式列出压缩文件的信息.和\fB\-s\fP 的输出结果相同,但是它会列出以百分数表示的压缩比率.
+.TP
+.B \-l
+以 Unix的 ``\fCls \-l\fR'' 的长格式列出压缩文件的信息.和 \fB\-m\fP 输出结果相同,除了压缩比率被压缩后的文件大小(以字节为单位)所取代外.
+.TP
+.B \-v
+详细地以多页方式列出压缩文件的信息.
+.TP
+.B \-h
+列出首行信息.并输出档案名字,实际大小(以字节为单位)以及文件数目.
+.TP
+.B \-M
+将所有的输出以和 Unix 中 \fImore\fP(1) 命令相似的内部页的方式输出.在屏幕输出的末尾,\fIzipinfo\fP 将会暂停,并给出``\-\-More\-\-'' 提示;可以按Enter(Return)或者空格键查看下一屏内容.按``q'' 键(在某些系统上可能是Enter/Return键)可以结束\fIzipinfo\fP .与Unix中的more命令所不同,\fIzipinfo\fP 没有向前搜索和编辑功能.同时,\fIzipinfo\fP 对于屏幕末的长行,不能有效地将它按两行或者多行显示出来,导致\fIzipinfo\fP 屏幕上方的一些文本在被浏览之前就卷过.在有些系统上屏幕上的可显示行的数目是不能被取得的,在这种情况下,\fIzipinfo\fP 假定为24行.
+.TP
+.B \-t
+列出所有或者要求被列出文件的总体信息.输出文件的数目,压缩前后的总大小,以及总的压缩系数;或者如果只有总体信息被打印出,则给出整个档案的信息.请注意总的压缩数据的大小总是不同于实际的压缩文件的大小,这是因为后者包括了作为压缩数据附属物的所有的压缩文件内部的头信息.
+.TP
+.B \-T
+以按点分十进制的格式(yymmdd.hhmmss)排序输出文件的日期和时间.默认的日期格式是一个更加标准的,用户易读的,使用月份名缩写(参看下文)的版本.
+.TP
+.B \-z
+包含档案中的描述信息(如果有的话).
+.PD
+.\" =========================================================================
+.SH "详细描述 DETAILED DESCRIPTION"
+.I zipinfo
+有很多种工作方式,如果不太熟悉 Unix 中的 \fIls\fP(1) (或者即使熟悉)的话,要掌握好它的使用也是比较困难的.默认的方式是以如下的格式列出文件:
+.PP
+.X "-rw-rws---  1.9 unx    2802 t- defX 11-Aug-91 13:48 perms.2660"
+.PP
+最后的三个字段分别是文件的修改日期和时间,还有文件名.文件名的大小写是区分的,这样来自MS-DOS PKZIP的压缩文件总是被大写.如果被压缩的文件存储了路径名,也将被看作是文件名的一部分而被显示.
+.PP
+第二,三个字段表示了文件是在 Unix 下以 1.9 版的 \fIzip\fP 压缩的.由于它来自 Unix ,行开头的文件的存取权限以Unix 格式输出.压缩前的文件大小(本例中为2802)在第四个字段中给出.
+.PP
+第五个字段包含了两个字符,它们中的每个都能取若干个值.第一个字符可能是`t'或者`b',相应地表示文件是文本的或者是二进制的;但是如果文件被加密,\fIzipinfo\fP 通过大写字符(`T'或者`B')来表示.第二个字符可以取四个值,它依赖于是否存在一个本地的头信息并且/或者一个和那个文件相关的 "额外" 字段(详细解释参看 PKWare's APPNOTE.TXT,它基本上类似于ANSI C中的pragmas,它们提供了一种包含非标准信息的标准方法).如果两者都不存在,该字段为连字符(`\-');如果有一个扩展的本地头信息但是没有额外字段,则为`l';反之为`x';如果都存在,则为`X'.这样上面示例中的文件(很可能)是一个未被加密的文本文件,并且没有额外字段和本地头信息与之相关联.下面的例子则是一个有额外信息的二进制文件.
+.PP
+.X "RWD,R,R     0.9 vms     168 Bx shrk  9-Aug-91 19:15 perms.0644"
+.PP
+额外的字段的使用是为了满足不同的需要(参看下面选项 \fB\-v\fP 的讨论)包括这里讨论所假设的情况:VMS 文件的存储特性. 一些其他的可能是为了处理操作系统(这是一个误解,实际应该是文件系统更恰当些)包括 OS/2 或者使用高性能文件系统 (HPFS) 的 NT ,MS_DOS, OS/2 或者使用文件获取表 (FAT) 作为文件系统的 NT, Macintosh.它们被如下所标示:
+.PP
+.X "-rw-a--     1.0 hpf    5358 Tl i4:3  4-Dec-91 11:33 longfilename.hpfs"
+.X "-r--ahs     1.1 fat    4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF"
+.X "--w-------  1.0 mac   17357 bx i8:2  4-May-92 04:02 unzip.macr"
+.PP
+前两个例子的文件的属性以类Unix的格式表示,其中七个子域分别表示该文件是否(1)是一个目录,(2)是可读的(总是)(3)是可写的,(4)是可执行的(猜测建立在假定它们的扩展名为\fI.exe\fP, \fI.com\fP, \fI.bat\fP, \fI.cmd\fP和\fI.btm\fP 的基础上)(5)有它的归档位设置,(6)是隐藏的和(7)是一个系统文件.由于一些 Macintosh 归档工具不存储任何档案信息, Macintosh 文件的解释是不可信的.
+.PP
+最后,第六个字段表示了压缩使用的方法和子方法.
+现在已知有六种方法:存储法(storing)(无压缩),缩减法(reducing),收缩法(shrinking),
+内爆法(impoding),标志法(tokenizing)(从来没有公开发布)和紧缩法(deflating).
+更进一步,缩减法有4种级别(从1到4);内爆法有4种类型(4K或者8K的滑动字典,和2或者3个Shannon-Fano树);紧缩法也有4个层次(超快,快,正常,最大压缩).\fIzipinfo\fP 用如下的方式代表了这些方法和子方法:
+\fIstor\fP;\fIre:1\fP, \fIre:2\fP, etc.; \fIshrk\fP; \fIi4:2\fP, \fIi8:3\fP, etc.;
+\fItokn\fP; and \fIdefS\fP, \fIdefF\fP, \fIdefN\fP, and \fIdefX\fP.
+.PP
+中长和长列表格式显示几乎和短列表相同,除去它们附加了文件压缩方面的信息.中长格式以百分数列出了文件压缩率,它代表了被节省的空间:
+.PP
+.X "-rw-rws---  1.5 unx    2802 t- 81% defX 11-Aug-91 13:48 perms.2660"
+.PP
+在这个例子中,文件以超过5倍的比例被压缩;压缩后的数据大小仅为原是大小的19%.长格式则以以字节大小为单位的压缩后文件大小表示该信息:
+.PP
+.X "-rw-rws---  1.5 unx    2802 t-     538 defX 11-Aug-91 13:48 perms.2660"
+.PP
+增加 \fB\-T\fP  选项则将文件的日期和时间以点分格式输出:
+.PP
+.X "-rw-rws---  1.5 unx    2802 t-     538 defX 910811.134804 perms.2660"
+.PP
+注意到因为 MS-DOS 格式中用来存储文件时间的限制,第二个域总是取值为最近的偶数秒.对于 Unix 文件 \fIzip\fP(1L)  和 \fIunzip\fP 很可能在它们的下一个版本中改变.
+.PP
+作为单独文件信息的补充,默认的输出还包括头和末信息行:
+.PP
+.X "Archive:  OS2.zip   5453 bytes   5 files"
+.X ",,rw,       1.0 hpf     730 b- i4:3 26-Jun-92 23:40 Contents"
+.X ",,rw,       1.0 hpf    3710 b- i4:3 26-Jun-92 23:33 makefile.os2"
+.X ",,rw,       1.0 hpf    8753 b- i8:3 26-Jun-92 15:29 os2unzip.c"
+.X ",,rw,       1.0 hpf      98 b- stor 21-Aug-91 15:34 unzip.def"
+.X ",,rw,       1.0 hpf      95 b- stor 21-Aug-91 17:51 zipinfo.def"
+.X "5 files, 13386 bytes uncompressed, 4951 bytes compressed:  63.0%"
+.PP
+头行给出了档案的名字,它的总大小,总的文件数;末行给出了所列出的文件数,它们总的解压后的大小和它们总的解压前的大小(不包含任何的 \fIzip\fP 内部的部分).但是,如果指定一个或者若干的文件,则头信息和末信息将不会列出.这种行为与Unix中的 ``\fCls \-l\fR'' 类似;可以通过明确指定 \fB\-h\fP h或者 \fB\-t\fP 选项强制显示.
+.PP
+在这种情况下,由于 \fB\-h\fP 或 \fB\-t\fP (或同时)而没有其他选项意味着只有头信息或者末信息(或同时)被列出,列表的格式同样需要明确地指定.对此可参看下面\fB "示例 EXAMPLES" \fP 部分获得这个无意义的半智能化的转化.
+.PP
+冗余的列表显示内容大多数都是自解释的.它还列出了文件和档案文件的描述,如果有的话,还列出所有存储在额外域中的类型和字节数.当前已知的额外域的类型包括 PKWARE 的认证(``AV'')信息;OS/2 扩展属性;VMS 文件系统信息,PLWARE 和 Info-ZIP 的版本; Macintosh 的resource forks;Acorn/Archimedes SparkFS 信息等等.(对于OS/2的扩展属性(压缩文件额外域中最常用的部分) \fIzipinfo\fP 报告的 EAs 的存储大小可能与 OS/2 使用 \fIdir\fP 命令给出得结果不一致:OS/2 总是以16位格式输出字节数,而 \fIzipinfo\fP 总是以32位存储输出.)
+.PD
+.\" =========================================================================
+.SH "环境选项 ENVIRONMENT OPTIONS"
+通过设置在环境变量中的选项可以改变 \fIzipinfo\fP 的默认的工作方式,但是解释起来稍微有点复杂, 这是因为 \fIzipinfo\fP 试图以一种直观,类 Unix 的方式进行默认工作.(不要笑)然而这里有一些内在的逻辑.简言之,选项有三个优先等级:默认选项;环境选项,它是优先于默认选项的,并作为其的补充;用户传递的明确的选项,它是优先于上述两类并作为其补充的.
+.PP
+默认的输出列表格式,正如上述描述的,粗略地对应于 "\fCzipinfo \-hst\fR" 命令(除非指定一个单独的压缩文件).
+一个偏爱长输出格式 (\fB\-l\fP) 的用户能够使用\fIzipinfo\fP的环境变量来改变默认的运作:
+.TP
+Unix Bourne shell:
+\f(CW\&ZIPINFO=\-l; export ZIPINFO\fP
+.TP
+Unix C shell:
+\f(CW\&setenv ZIPINFO \-l\fP
+.TP
+OS/2 or MS-DOS:
+\f(CW\&set ZIPINFO=\-l\fP
+.TP
+VMS (quotes for \fIlowercase\fP):
+\f(CW\&define ZIPINFO_OPTS "\-l"\fP
+.EE
+.PP
+另外,如果用户不喜欢末行信息,\fIzipinfo\fP 的"反选项"的概念可以用来覆盖默认的总结行信息.这可以通过在不想使用的选项前加上减号实现:例如,,在这个例子中可以使用``\fC\-l\-t\fR'' 或者 ``\fC\-\-tl\fR'' .第一个连字符是规则开关符,而`t'之前的那个是减号.连续使用两个连字符看起来有些笨拙.但是从直觉出发并非无意义:只用忽略第一个连字符并从此开始.它同样和Unix命令中的 \fInice\fP(1) 相一致.
+.PP
+正如上面所提到的,对于VMS默认的环境变量是ZIPINFO_OPTS(否则将作为一个安装 \fIzipinfo\fP 的外来命令和环境变量相混淆),而对于其它的操作系统则是ZIPINFO.为了与\fIzip\fP(1L) 兼容,ZIPINFOOPT也被接受(不要问为什么).如果ZIPINFO和ZIPINFOOPT均被定义,则ZIPINFO优先. \fIunzip\fP 的诊断选项(\fB\-v\fP 且没有压缩文件名)能够用来检查所有的四个可能的 \fIunzip\fP 和 \fIzipinfo\fP 环境变量.
+.PD
+.\" =========================================================================
+.SH "示例 EXAMPLES"
+要获得一个压缩档案 \fIstorage.zip\fP 的基本的,短格式输出的完整的内容,并包含头末行信息,使用档案名作为zipinfo 的参数即可:
+.PP
+.EX
+zipinfo storage
+.EE
+.PP
+要获得一个基本的,长格式(非冗余)的,包含头末行信息的列表,用 \fB\-l\fP:
+.PP
+.EX
+zipinfo \-l storage
+.EE
+.PP
+要获得一个档案的完整内容,并且不包含头末行信息,可以使用 \fB\-h\fP 和 \fB\-t\fP 的反选项,也可以明确指定显示内容:
+.PP
+.EX
+zipinfo \-\-h\-t storage
+zipinfo storage \e*
+.EE
+.PP
+(这里的反斜杠 (backslash `\') 只是在 shell 会将 `*' 通配符扩展时才必要,正如在 Unix 中双引号扩起来的星号将会全局有效).如果要默认关闭所有的行显示,可以使用环境变量(这里假设是C shell):
+.PP
+.EX
+setenv ZIPINFO \-\-t
+zipinfo storage
+.EE
+.PP
+要获得第一个例子的完整的,短格式的列表输出,如果环境变量已经象前面的那样设置好了,就需要明确指定\fB\-s\fP 选项,因为 \fB\-t\fP 选项本身只表示输出末行信息:
+.PP
+.EX
+setenv ZIPINFO \-\-t
+zipinfo \-t storage            \fR[only totals line]\fP
+zipinfo \-st storage           \fR[full listing]\fP
+.EE
+.PP
+\fB\-s\fP 选项和 \fB\-m\fP 和 \fB\-l\fP, 选项一样,默认情况下包含了头末行信息,除非另外指定,因为规定不显示末行信息的环境变量较之于默认的 \fB\-s\fP 选项的优先权更高,因此为了得到完整的列表输出,就需要明确指定 \fB\-t\fP 选项.没有什么(环境变量)与头信息相关连,因此 \fB\-s\fP 选项就足够了.请注意当使用 \fB\-h\fP 和 \fB\-t\fP 选项的时候,将不显示任何默认的文件列表;只显示头和/或末信息.在使用一个通配符作为 \fIzipinfo\fP 的参数的时候,这种模式是有用的;所有文件的内容只用一个命令就归纳出了.
+.PP
+要以中长格式列出档案中的一个单独文件的信息,只用明确指定文件名就可以了:
+.PP
+.EX
+zipinfo \-m storage unshrink.c
+.EE
+.PP
+指定任何一个档案成员的文件名,就象在本例一样,将不再显示默认的头末信息;只有显示特定文件信息的那行将被输出.当要获得某个单独的文件的信息的时候这种模式符合直觉.对于多个文件的情形,知道总共的压缩前后的文件的大小常是有用的;在这种情况下 \fB\-t\fP 选项常需要明确指定:
+.PP
+.EX
+zipinfo \-mt storage "*.[ch]" Mak\e*
+.EE
+.PP
+为了获得一个ZIP档案的完全信息,可使用冗余选项.如果操作系统允许的话把输出重定向至一个过滤器例如Unix中的\fImore\fP(1)  通常是明智之举:
+.PP
+.EX
+zipinfo \-v storage | more
+.EE
+.PP
+最后,为了查看档案中最近修改的文件,可使用 \fB\-T\fP 选项配合外部的排序程序比如 Unix 中的 \fIsort\fP(1) (还有这个例子中的 \fItail\fP(1) ):
+.PP
+.EX
+zipinfo \-T storage | sort -n +6 | tail -15
+.EE
+.PP
+\fB\-n\fP 选项告诉 \fIsort\fP(1) 以数字大小排序而不是 ASCII 顺序, \fB\+6\fP 选项意为以第一个后面的第六个字段排序(也就是说是第七个字段).这里假定是默认的短格式输出;如果使用了 \fB\-m\fP 或者 \fB\-l\fP 选项,则正确的 \fIsort\fP(1) 选项将是 \fB\+7\fP.\fItail\fP(1) 命令除去最后15行以外的所有内容.以后的版本的 \fIzipinfo\fP 可能会集成日期/时间和文件名的排序于内建的选项.
+.PD
+.\" =========================================================================
+.SH "技巧 TIPS"
+作者发现如果在可以使用别名的系统(或者允许在系统上拷贝/重命名可执行程序,建立链接或者可以以\fIii\fP 为名建立一个命令文件)上定义 \fIzipinfo\fP 的别名为 \fIii\fP 将会带来很大的方便. \fIii\fP 的用法和通常的作为Unix中长格式输出的别名的 \fIll\fP 相平行,而且两个命令的输出的相似性是有意义的.
+.PD
+.\" =========================================================================
+.SH BUGS
+相对于 \fIunzip\fP,\fIzipinfo\fP 的 \fB\-M\fP (``more'') 选项总体上来说在处理屏幕输出时是过于简单了;正如上面指出的,它不能正确地发现过长的行,因此很可能引起屏幕上端的行在被读取之前就被滚动略过.如果附加一个额外的行,\fIzipinfo\fP 应该能发现并且处理这种情况.这需要获得屏幕的宽和高.并且,\fIzipinfo\fP 还要获得所有系统中的屏幕的真实尺寸.
+.PP
+\fIzipinfo\fP的按列输出的模式是没有必要那么复杂的,应进行简化(这里并不是说将会的到简化).
+.PP
+.\" =========================================================================
+.SH "参见 SEE ALSO"
+\fIls\fP(1), \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L),
+\fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L)
+.PD
+.\" =========================================================================
+.SH URL
+The Info-ZIP home page is currently at
+.EX
+\fChttp://www.info-zip.org/pub/infozip/\fR
+.EE
+或
+.EX
+\fCftp://ftp.info-zip.org/pub/infozip/\fR .
+.EE
+.PD
+.\" =========================================================================
+.SH "作者 AUTHOR"
+Greg ``Cave Newt'' Roelofs.  ZipInfo 包含了Mark Adler的模式匹配的代码以及其他很多人的修正/改进.请参考UnZip源程序发布中的CONTRIBS文件获得更加完整的列表.
+
+.SH "[中文版维护人]"
+.B 严亚勤 <tinyfat at 263.net>
+.SH "[中文版最新更新]"
+.B 2003.11.22
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man1/zless.1 b/src/man1/zless.1
new file mode 100644
index 0000000..c67a27e
--- /dev/null
+++ b/src/man1/zless.1
@@ -0,0 +1,28 @@
+.TH ZLESS 1
+.SH NAME
+zless \- 用于在显示器上阅读被压缩的文本文件的过滤器
+
+.SH "总览 (SYNOPSIS)"
+.B zless
+[ name ...  ]
+
+.SH "描述 (DESCRIPTION)"
+.I  Zless
+是一个文件过滤器, 用于在终端上全屏幕形式查看压缩的或没压缩的文本文件.
+它等于把环境变量 PAGER 设置为
+.I less,
+然后运行 zmore. 但是很多人认为
+.I zless
+命令很重要, 值得提供.
+
+.SH "另见 (SEE ALSO)"
+zmore(1), less(1)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2004/02/8
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
+
diff --git a/src/man2/accept.2 b/src/man2/accept.2
new file mode 100644
index 0000000..b554d39
--- /dev/null
+++ b/src/man2/accept.2
@@ -0,0 +1,268 @@
+.\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Sat Jul 24 16:42:42 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 1998-2000 by Andi Kleen to match Linux 2.2 reality
+.\" 中文版 Copyright (c) 2002 byeyear 和 www.linuxforum.net 
+
+.TH ACCEPT 2 "7 May 1999" "Linux 2.2 Page" "Linux Programmer's Manual"
+.SH NAME 名称
+accept \- 在一个套接字上接收一个连接
+.SH SYNOPSIS 概述
+.B #include <sys/types.h>
+.br
+.B #include <sys/socket.h>
+.sp
+.BI "int accept(int " s ", struct sockaddr *" addr ", socklen_t *" addrlen );
+.SH DESCRIPTION 描述
+
+.B accept
+函数用于基于连接的套接字
+.RB (SOCK_STREAM ,
+.B SOCK_SEQPACKET
+和
+.BR SOCK_RDM).
+它从未完成连接队列中取出第一个连接请求,创建一个和参数
+.IR s
+属性相同的连接套接字,并为这个套接字分配一个文件描述符,
+然后以这个描述符返回.新创建的描述符不再处于倾听状态.原
+套接字
+.I s
+不受此调用的影响.注意任意一个文件描述符标志 (任何可以被
+fcntl以参数
+.B F_SETFL
+设置的值,比如非阻塞式或者异步状态)不会被
+.IR accept.
+所继承.
+.PP
+参数
+.I s
+是以
+.BR socket (2)
+创建,用
+.BR bind (2)
+绑定到一个本地地址,并且在调用了
+.BR listen (2).
+之后正在侦听一个连接的套接字.
+参数
+.I addr
+是一个指向结构sockaddr的指针.这个结构体以连接实体地址填充.
+所谓的连接实体,就是众所周知的网络层.参数
+.I addr
+所传递的真正的地址格式依赖于所使用的套接字族.
+(参见
+.BR socket (2) 
+和各协议自己的手册页).
+.I addrlen
+是一个实时参数:
+它的大小应该能够足以容纳参数
+.IR addr
+所指向的结构体;在函数返回时此参数将以字节数表示出返回地址的
+实际长度.若
+.I addr
+使用NULL作为参数,addrlen将也被置为NULL.
+.PP
+如果队列中没有未完成连接套接字,并且套接字没有标记为非阻塞式,
+.B accept
+将阻塞直到一个连接到达.如果一个套接字被标记为非阻塞式而队列
+中没有未完成连接套接字,
+.B accept
+将返回EAGAIN. 
+.PP
+使用
+.BR select (2)
+或者
+.BR poll (2).
+可以在一个套接字上有连接到来时产生事件.当尝试一个新的连接时
+套接字读就绪,这样我们就可以调用
+.B accept
+为这个连接获得一个新的套接字.此外,你还可以设置套接字在唤醒时
+接收到信号
+.B SIGIO;
+细节请参见
+.BR socket (7)
+.PP
+对于那些需要显式确认的协议,比如
+DECNet,
+.B accept
+可以看作仅仅从队列中取出下一个连接而不做确认.当在这个新的文件
+描述符上进行普通读写操作时暗示了确认,当关闭这个新的套接字时暗
+示了拒绝.目前在Linux上只有DECNet有这样
+的含义. 
+.SH NOTES 注意
+当接收到一个
+.B SIGIO
+信号或者
+.BR select (2)
+或
+.BR poll (2)
+返回读就绪并不总是意味着有新连接在等待,因为连接可能在调用
+.B accept
+之前已经被异步网络错误或者其他线程所移除.如果发生这种情况,
+那么调用将阻塞并等待下一个连接的到来.为确保
+.B accept
+永远不会阻塞,传递的套接字
+.I s
+需要置
+.B O_NONBLOCK
+标志(参见
+.BR socket (7)).
+.SH "RETURN VALUE" "返回值"
+此调用在发生错误时返回\-1.若成功则返回一个非负整数标识这个
+连接套接字.
+.SH ERROR HANDLING 错误处理
+Linux 
+.B accept
+将一个待处理网络错误代码通过 
+.BR accept
+传递给新套接字 . 
+这种处理方式有别于其他的BSD套接字实现.为可靠操作,应用程序
+必须在调用
+.B accept
+之后能够检测这些为协议定义的网络错误,并且以重试解决,就象
+.BR EAGAIN
+一样.对于TCP/IP这些网络错误是
+.BR ENETDOWN,
+.BR EPROTO,
+.BR ENOPROTOOPT,
+.BR EHOSTDOWN,
+.BR ENONET,
+.BR EHOSTUNREACH,
+.BR EOPNOTSUPP,
+以及
+.BR ENETUNREACH.
+.SH ERRORS 错误
+.TP
+.BR EAGAIN或者EWOULDBLOCK
+套接字被标记为非阻塞,且当前没有可接收的连接.
+.TP
+.B EBADF
+描述符非法.
+.TP
+.B ENOTSOCK
+描述符指向一个文件,而不是一个套接字.
+.TP
+.B EOPNOTSUPP
+作为参数的套接字不是
+.BR SOCK_STREAM. 
+类型
+.TP
+.B EFAULT
+参数
+.I addr
+不在用户可写地址空间之内.
+.TP
+.B EPERM
+防火墙规则禁止连接.
+.TP
+.B ENOBUFS,ENOMEM
+没有足够内存.  
+这个错误一般来说意味着内存分配受套接字缓冲区所限,
+而不是没有系统内存.
+.PP
+另外,新套接字和协议中定义的网络错误也可能被返回.
+不同的Linux内核也可能返回下列错误
+.BR EMFILE ,
+.BR EINVAL ,
+.BR ENOSR ,
+.BR ENOBUFS ,
+.BR EPERM ,
+.BR ECONNABORTED ,
+.BR ESOCKTNOSUPPORT ,
+.BR EPROTONOSUPPORT ,
+.BR ETIMEDOUT ,
+.BR ERESTARTSYS .
+.SH "CONFORMING TO" "兼容于"
+SVr4,4.4BSD(
+.B accept
+函数首次出现于BSD 4.2).
+BSD手册页文档定义了五个可能的错误返回值
+(EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT).
+SUSv2文档的定义是EAGAIN, EBADF, ECONNABORTED, EFAULT, EINTR,
+EINVAL, EMFILE, ENFILE, ENOBUFS, ENOMEM, ENOSR, ENOTSOCK, EOPNOTSUPP,
+EPROTO, EWOULDBLOCK.
+.LP
+Linux accept不继承象
+.BR O_NONBLOCK
+这样的套接字标志.
+这一点有别于其他的BSD套接字实现.
+因此,程序应该在accept所返回的套接字上设置所有需要的标志.
+.SH NOTE 注意
+函数
+.B accept
+的第三个参数原来被声明为'int *'(在libc4和libc5以及其他很多系统中,
+比如BSD 4.*,SunOS 4, SGI);POSIX 1003.1g草案试图将其改变为
+`size_t *',SunOS 5就是这么做的.
+后来的POSIX草案和Single Unix Specification以及glibc2使用了
+`socklen_t *'.
+Quoting Linus Torvalds:
+引自Linus Torvalds
+(译注:这个家伙就是Linux的创始人,所以我保留了他老人家的原文,
+仅将原文大意附后):
+I fails: only italicizes a single line
+_Any_ sane library _must_ have "socklen_t" be the same size
+as int.  Anything else breaks any BSD socket layer stuff.
+POSIX initially _did_ make it a size_t, and I (and hopefully others, but
+obviously not too many) complained to them very loudly indeed.  Making
+it a size_t is completely broken, exactly because size_t very seldom is
+the same size as "int" on 64-bit architectures, for example.  And it
+_has_ to be the same size as "int" because that's what the BSD socket
+interface is. 
+Anyway, the POSIX people eventually got a clue, and created "socklen_t". 
+They shouldn't have touched it in the first place, but once they did
+they felt it had to have a named type for some unfathomable reason
+(probably somebody didn't like losing face over having done the original
+stupid thing, so they silently just renamed their blunder).
+
+数据类型"socklen_t"和int应该具有相同的长度.否则就会破坏
+BSD套接字层的填充.POSIX开始的时候用的是size_t,
+Linus Torvalds(他希望有更多的人,但显然不是很多)
+努力向他们解释使用size_t是完全错误的,因为在64位结构中
+size_t和int的长度是不一样的,而这个参数(也就是accept函数
+的第三参数)的长度必须和int一致,因为这是BSD套接字接口
+标准.最终POSIX的那帮家伙找到了解决的办法,那就是创造了
+一个新的类型"socklen_t".Linux Torvalds说这是由于他们
+发现了自己的错误但又不好意思向大家伙儿承认,所以另外
+创造了一个新的数据类型.
+.SH "SEE ALSO" "参见"
+.BR bind (2),
+.BR connect (2),
+.BR listen (2),
+.BR select (2),
+.BR socket (2)
+
+.SH "[中文版维护人]"
+.B byeyear <love_my_love at 263.net >
+.SH "[中文版最新更新]"
+.B 2002.01.27
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man2/bind.2 b/src/man2/bind.2
new file mode 100644
index 0000000..ecfd834
--- /dev/null
+++ b/src/man2/bind.2
@@ -0,0 +1,210 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" Portions extracted from /usr/include/sys/socket.h, which does not have
+.\" any authorship information in it.  It is probably available under the GPL.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"
+.\" Other portions are from the 6.9 (Berkeley) 3/10/91 man page:
+.\"
+.\" Copyright (c) 1983 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"     This product includes software developed by the University of
+.\"     California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 1998 by Andi Kleen
+.TH BIND 2 "3 Oct 1998" "Linux 2.2" "Linux Programmer's Manual"
+.SH NAME 名称
+bind \- 将一个名字和一个套接字绑定到一起(赋一个名字给一个套接字)
+.SH SYNOPSIS 概述
+.B #include <sys/types.h>
+.br
+.B #include <sys/socket.h>
+.sp
+.BI "int bind(int " sockfd ", struct sockaddr *" my_addr ", socklen_t " addrlen );
+.SH DESCRIPTION 描述
+.B bind
+为套接字
+.I sockfd
+指定本地地址
+.IR my_addr .
+.I my_addr
+的长度为
+.I addrlen
+(字节).传统的叫法是给一个套接字分配一个名字.
+当使用
+.BR socket (2),
+函数创建一个套接字时,它存在于一个地址空间(地址族),
+但还没有给它分配一个名字
+.PP
+一般来说在使用
+.B SOCK_STREAM
+套接字建立连接之前总要使用
+.B bind
+为其分配一个本地地址.参见
+.BR accept (2)).
+.SH NOTES 注意
+这条规则用于给每个地址族绑定不同的名称.更多细节请参
+考手册页第7册(man7).
+对于
+.B AF_INET
+参见
+.BR ip (7),
+对于
+.B AF_UNIX
+参见
+.BR unix (7),
+对于
+.B AF_APPLETALK
+参见
+.BR ddp (7),
+对于
+.B AF_PACKET
+参见
+.BR packet (7),
+对于r
+.B AF_X25
+参见
+.BR x25 (7)
+对于
+.B AF_NETLINK
+参见
+.BR netlink (7).
+
+.SH "RETURN VALUE" "返回值"
+函数执行成功返回0,否则返回\-1,
+并设置错误代码.
+.SH ERRORS 错误
+.TP
+.B EBADF
+.I sockfd
+不是一个合法套接字描述符.
+.TP
+.B EINVAL
+套接字已经绑定到一个地址.这一条在以后会有所改变:
+具体参见
+.I linux/unix/sock.c
+.TP
+.B EACCES
+地址受保护,用户不是系统管理员.
+.TP
+.B ENOTSOCK
+参数是文件描述符,不是一个套接字.
+.PP
+下列错误适用于UNIX域 
+.RB ( AF_UNIX ) 
+套接字.
+.TP
+.B EINVAL
+地址长度
+.I addrlen
+错误,或者套接字不在
+.B AF_UNIX
+族.
+.TP
+.B EROFS
+套接字节点位于只读文件系统.
+.TP
+.B EFAULT
+.I my_addr
+指向用户无权访问的地址空间.
+.TP
+.B ENAMETOOLONG
+.I my_addr
+长度超范围.
+.TP
+.B ENOENT
+文件不存在.
+.TP
+.B ENOMEM
+内核存储空间不足.
+.TP
+.B ENOTDIR
+指定路径不是一个目录.
+.TP
+.B EACCES
+指定路径拒绝访问.
+.TP
+.B ELOOP
+在解析
+.IR my_addr
+时发现过多符号连接.
+.SH BUGS 勘误
+透明代理选项没有描述.
+.SH CONFORMING TO 一致性
+SVr4,4.4BSD(函数
+.B bind
+首次出现于BSD 4.2)SVr4文档增加了
+.BR EADDRNOTAVAIL , 
+.BR EADDRINUSE , 
+和
+.B ENOSR 
+一般性错误,
+还增加了
+.BR EIO , 
+.B EISDIR 
+和
+.B EROFS 
+Unix域错误.
+.SH NOTE
+函数
+.B bind
+的第三个参数实际上是int类型(BSD 4.*和libc4以及libc5都是这么做的).
+不知为什么有的POSIX系统目前仍在使用socklen_t.
+目前尚无统一标准,不过glibc2两者都使用.参见
+.BR accept (2).
+.SH "SEE ALSO" "参见"
+.BR accept (2),
+.BR connect (2),
+.BR listen (2),
+.BR socket (2),
+.BR getsockname (2),
+.BR ip (7),
+.BR socket (7)
diff --git a/src/man2/close.2 b/src/man2/close.2
new file mode 100644
index 0000000..a69d120
--- /dev/null
+++ b/src/man2/close.2
@@ -0,0 +1,98 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Wed Jul 21 22:40:25 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sat Feb 18 15:27:48 1995 by Michael Haardt
+.\" Modified Sun Apr 14 11:40:50 1996 by Andries Brouwer <aeb at cwi.nl>:
+.\"   corrected description of effect on locks (thanks to
+.\"   Tigran Aivazian <tigran at sco.com>).
+.\" Modified Fri Jan 31 16:21:46 1997 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 2000-07-22 by Nicol醩 Lichtmaier <nick at debian.org>
+.\"   added note about close(2) not guaranteeing that data is safe on close.
+.\"
+.TH CLOSE 2 1996-04-14 "" "Linux Programmer's Manual"
+.SH NAME  名字
+close \- 关闭一个文件描述符
+.SH SYNOPSIS  总览
+.nf
+.B #include <unistd.h>
+.sp
+.BI "int close(int " fd );
+.fi
+.SH DESCRIPTION  描述
+.B close
+关闭 一个 文件 描述符 , 使它 不在 指向 任何 文件 和 可以 在 新的 文件 操作 中 被 再次 使用.
+任何 与 此 文件 相关联 的 以及 程序 所 拥有 的 锁 , 都 会 被 删除 (忽略 那些 持有 锁 的 文件描述符)
+.PP
+假如
+.I fd
+是 最后 一个 文件描述符 与此 资源 相 关联 , 则 这个 资源 将 被 释放.
+若此 描述符 是 最后 一个 引用 到 此 文件 上 的 , 则 文件 将 使用
+.BR unlink (2)
+删除.
+.SH "RETURN VALUE"  返回值
+.B close
+返回 0 表示 成功 , 或者 -1 表示 有 错误 发生 .
+.SH ERRORS  错误信息
+.TP
+.B EBADF
+.I fd
+不是 一个 有效 的 已 被 打开 的 文件 的 描述符
+.TP
+.B EINTR
+The
+.BR close ()
+调用 被 一 信号 中断.
+.TP
+.B EIO
+I/O 有 错误 发生
+.SH "CONFORMING TO"
+SVr4, SVID, POSIX, X/OPEN, BSD 4.3.  SVr4 documents an additional
+ENOLINK error condition.
+.SH NOTES  注意
+通常 不检测 返回值 , 除了 发生 严重 的 程序 错误.  文件系统  使用 了
+"write-behind" 的 技术 提高 了 执行
+.BR write (2)
+时 的 性能 . 即使 还 没有 被 写 , 写操作 也会 成功 . 错误 信息 在 写操作 以后
+报告 , 但是 这 保证 在 关闭 文件 时 报告 . 在 关闭 文件 时 不检测 返回值 可能
+会 导致 数据 的 丢失 . 这 一点 在 NFS 和 磁盘 配额 上 比较 明显.
+.PP
+由于 内核 会 延迟 写 , 所以 就算 成功 关闭 一个 文件 不能 保证 数据 被 成功 的 写到 磁盘 上.
+当 文件流 关闭 时 , 对 文件系统 来说 一般 不去 刷新 缓冲区 . 如果 你 要 保证 数据 写入
+磁盘 等 物理 存贮器 中
+就 使用 fsync(2) 或 sync(2), 他们 会 做到 你想做的 (对于 这一点 要 依赖于 磁盘 设备).
+.SH "SEE ALSO"  参考
+.BR open (2),
+.BR fcntl (2),
+.BR shutdown (2),
+.BR unlink (2),
+.BR fclose (3)
+
+.SH [中文维护]
+	Daniel (badlong at 163.com)
+.SH [中文更新]
+	2002/1/10
+.SH [说明]
+	若 发现 错误 或 不足 请 与 我 联系.
\ No newline at end of file
diff --git a/src/man2/create_module.2 b/src/man2/create_module.2
new file mode 100644
index 0000000..4d057b1
--- /dev/null
+++ b/src/man2/create_module.2
@@ -0,0 +1,31 @@
+.TH create_module 2 ""
+.SH NAME
+create_module - 生成一条可加载模块记录.
+.SH 总览
+.B #include <linux/module.h>
+.sp
+caddr_t create_module(const char *name, size_t size);
+.SH 描述
+create_module试图生成一条可加载模块的记录并保留用来容纳模块的内核空间内存.该
+系统调用只对超级用户开放.
+.SH 返回值
+成功时返回模块驻留的内核空间地址,错误时返回-1,errno被相应设置.
+.SH 错误
+.TP
+EPERM 
+    用户非超级用户.
+.TP
+EEXIST 
+    相同名字的模块已经存在.
+.TP
+EINVAL
+    要求的大小即使对模块的头信息来说也太小.
+.TP
+ENOMEM 
+    内核无法给模块分配足够的连续的内存块.
+.TP
+EFAULT 
+    name 越出了程序可访问的地址空间.                  
+
+.SH
+      "雷勇" <nsinit at 263.net>
diff --git a/src/man2/execve.2 b/src/man2/execve.2
new file mode 100644
index 0000000..6e48079
--- /dev/null
+++ b/src/man2/execve.2
@@ -0,0 +1,169 @@
+.\" Copyright (c) 1992 Drew Eckhardt (drew at cs.colorado.edu), March 28, 1992
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <u31b3hs at pool.informatik.rwth-aachen.de>
+.\" Modified Wed Jul 21 22:47:01 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified 21 Aug 1994 by Michael Chastain <mec at shell.portal.com>:
+.\"   Fixed typoes.
+.\" Modified Fri Jan 31 16:24:28 1997 by Eric S. Raymond <esr at thyrsus.com>
+.\"
+.TH EXECVE 2 "3 September 1997" "Linux 2.0.30" "Linux Programmer's Manual"
+.SH NAME
+execve \- 执行程序
+
+.SH "总览 (SYNOPSIS)"
+.B #include <unistd.h>
+.sp
+.BI "int execve (const char *" filename ", char *const " argv
+.BI "[], char *const " envp []);
+
+.SH "描述 (DESCRIPTION)"
+\fBexecve()\fP 执行 \fIfilename\fP 指出的 程序. \fIfilename\fP 必须 是
+二进制可执行文件, 或者 以 "\fB#! \fIinterpreter \fR[arg]" 行 开始的 脚本文件.
+后者的 interpreter 必须是 某个 可执行文件 的 有效 路径, 这个 可执行文件 自身
+不能是 脚本程序, 调用 形式 是 "\fBinterpreter\fR [arg] \fIfilename\fR".
+
+\fBexecve()\fP 调用 成功 后 不会 返回, 其 进程 的 正文(text), 数据(data), 
+bss 和 堆栈(stack) 段 被 调入程序 覆盖. 调入程序 继承了 调用程序 的 PID 和
+所有 打开的 文件描述符, 他们 不会 因为 exec 过程 而 关闭. 父进程 的 未决 信号
+被 清除. 所有 被 调用进程 设置过 的 信号 重置为 缺省行为.
+
+如果 当前程序 正在 被 ptrace 跟踪, 成功的 调用 \fBexecve()\fP 后 将 收到
+一个 \fBSIGTRAP\fP 信号.
+
+如果 可执行文件 是 动态连接 的 a.out 二进制程序, 含有 共享库 的 stub,
+开始 执行 程序 的 时候, Linux 动态 连接器(linker)
+.IR ld.so (8)
+把 所需的 共享库 调入 核心, 并且 和 程序 相连.
+
+如果 可执行文件 是 动态连接 的 ELF 二进制程序, 定义在 PT_INTERP 字段 的
+解释器(interpreter) 调入 所需的 共享库.
+连接 libc5 的 程序 的 典型 解释器 是 \fI/lib/ld-linux.so.1\fR,
+而 连接 GNU libc2 (libc6) 的 程序 则为 \fI/lib/ld-linux.so.2\fR.
+
+.SH "返回值 (RETURN VALUE)"
+调用成功 的 时候 \fBexecve()\fP 不会 返回, 调用失败 时 返回 \-1, 并 设置
+.I errno 
+为 相应的 值.
+
+.SH "错误 (ERRORS)"
+.TP 0.8i
+.B EACCES
+文件 或 脚本解释器 不正确.
+.TP
+.B EACCES
+没有 文件 或 脚本解释器 的 执行 权限.
+.TP
+.B EACCES
+文件系统 挂载(mount) 为
+.IR noexec .
+.TP
+.B EPERM
+文件系统 挂载为
+.IR nosuid ,
+使用者 不是 超级用户, 以及 文件 设置了 SUID 或 SGID 位.
+.TP
+.B EPERM
+进程 正 被跟踪, 使用者 不是 超级用户, 以及 文件 设置了 SUID 或 SGID 位.
+.TP
+.B E2BIG
+参数列表 过长.
+.TP
+.B ENOEXEC
+可执行文件 的 文件格式 无法 识别, 误用在 不同的 体系结构, 或者 其他 格式
+错误 导致 程序 无法 执行.
+.TP
+.B EFAULT
+.I filename
+指针 超出 可访问 的 地址空间.
+.TP
+.B ENAMETOOLONG
+.I filename
+太长.
+.TP
+.B ENOENT
+.I filename ,
+脚本解释器, 或 ELF 解释器 不存在.
+.TP
+.B ENOMEM
+内核 空间 不足.
+.TP
+.B ENOTDIR
+在
+.I filename ,
+脚本解释器 或 ELF 解释器 的 前缀 路径 中, 某些 成员 不是 目录.
+.TP
+.B EACCES
+在
+.I filename
+或 脚本解释器 的 前缀 路径 中, 对 某些 目录 没有 访问许可.
+.TP
+.B ELOOP
+解析
+.I filename ,
+脚本解释器 或 ELF 解释器 时 遇到 过多的 符号连接.
+.TP
+.B ETXTBUSY
+可执行文件 被 一个 或 多个 进程 以 写方式 打开.
+.TP
+.B EIO
+发生 I/O 错误.
+.TP
+.B ENFILE
+达到 系统 定义的 同时打开文件数 限制. 
+.TP
+.B EMFILE
+进程 打开了 最大数量 的 文件.
+.TP
+.B EINVAL
+该 ELF 可执行文件 拥有 多个 PT_INTERP 字段 (就是说, 试图 定义 多个 解释器).
+.TP
+.B EISDIR
+ELF 解释器 是 目录.
+.TP
+.B ELIBBAD
+无法 识别 ELF 解释器 的 格式.
+
+.SH "CONFORMING TO"
+SVr4, SVID, X/OPEN, BSD 4.3.  POSIX 没有 对 #! 行为 的 文档, 但有 其他的
+兼容 形式. SVr4 记录了 额外的 错误情况 EAGAIN, EINTR, ELIBACC, ENOLINK, 
+EMULTIHOP; POSIX 没有 关于 ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE,
+EMFILE, EINVAL, EISDIR 或 ELIBBAD 错误情况 的 文档.
+
+.SH "注意 (NOTES)"
+SUID and SGID processes can not be \fBptrace()\fPd SUID or SGID.
+
+在 #! 格式的 shell 可执行脚本 中, 第一行 的 长度 不得 超过 127 字节.
+
+Linux 忽略 脚本程序 的 SUID 和 SGID 位.
+
+.SH "另见 (SEE ALSO)"
+.BR ld.so "(8),"
+.BR execl "(3),"
+.BR fork (2)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man2/init_module.2 b/src/man2/init_module.2
new file mode 100644
index 0000000..1b2c43a
--- /dev/null
+++ b/src/man2/init_module.2
@@ -0,0 +1,53 @@
+.TH	init_module ""
+.SH NAME
+init_module - 初始化一条可加载模块的记录.
+.SH 总览
+.B #include <linux/module.h>
+.sp
+int init_module(const char *name, struct module *image);
+.SH 描述
+init_module加载已被重定位的模块映象到内核空间,并运行模块的初始化函数.
+模块映象以module结构开始,紧跟着代码和数据,module定义如下:
+       struct module                                              
+       {
+         unsigned long size_of_struct; /* module结构的大小 */
+         struct module *next; /*指向下一个module结构 */
+         const char *name; /* 模块名字 */
+         unsigned long size;
+         long usecount; /* 使用计数 */
+         unsigned long flags; /* 模块当前状态标志 */
+         unsigned int nsyms;
+         unsigned int ndeps; /* 正使用模块的模块个数 */
+         struct module_symbol *syms;
+         struct module_ref *deps;
+         struct module_ref *refs;
+         int (*init)(void); /* 模块的初始化函数指针 */
+         void (*cleanup)(void); /*模块的清除函数指针 */
+         const struct exception_table_entry *ex_table_start;
+         const struct exception_table_entry *ex_table_end;
+       #ifdef __alpha__
+         unsigned long gp;
+       #endif
+       };
+除了next和refs外,所有的指针被期望指在模块体内, 
+该系统调用只对超级用户开放.
+.SH 返回值
+成功时返回0,错误时返回 -1,errno被相应设置.
+.SH 错误
+.TP
+EPERM
+    用户不是超级用户.
+.TP
+ENOENT
+    name指定的模块不存在.
+.TP
+EINVAL
+.TP
+EBUSY
+    模块的初始化函数失败.
+.TP
+EFAULT
+    name或image越出了程序可访问的地址空间.
+
+.SH  
+      "雷勇" <nsinit at 263.net>
diff --git a/src/man2/listen.2 b/src/man2/listen.2
new file mode 100644
index 0000000..d493b8e
--- /dev/null
+++ b/src/man2/listen.2
@@ -0,0 +1,125 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Fri Jul 23 22:07:54 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified 950727 by aeb, following a suggestion by Urs Thuermann
+.\" <urs at isnogud.escape.de>
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified 1998 by Andi Kleen
+.\" 中文版 Copyright (c) 2002 byeyear 和 www.linuxforum.net  
+.\"
+.TH LISTEN 2 "23 July 1993" "BSD Man Page" "Linux Programmer's Manual"
+.SH NAME 名称
+listen \- listen for connections on a socket 在一个套接字上倾听连接
+.SH SYNOPSIS 概述
+.B #include <sys/socket.h>
+.sp
+.BI "int listen(int " s ", int " backlog );
+.SH DESCRIPTION 描述
+在接收连接之前,首先要使用
+.BR socket (2)
+创建一个套接字,然后调用
+.BR listen
+使其能够自动接收到来的连接并且为连接队列指定一个长度限制.
+之后就可以使用
+.BR accept (2)
+接收连接.
+.B listen
+调用仅适用于
+.B SOCK_STREAM
+或者
+.BR SOCK_SEQPACKET
+类型的套接字.
+.PP
+参数
+.I backlog
+指定未完成连接队列的最大长度.如果一个连接请求到达时未完成连接
+队列已满,那么客户端将接收到错误
+.B ECONNREFUSED.
+或者,如果下层协议支持重发,那么这个连接请求将被忽略,这样客户端
+在重试的时候就有成功的机会.
+.SH NOTES 注意
+在TCP套接字中
+.I backlog 
+的含义在Linux 2.2中已经改变.
+它指定了已经完成连接正等待应用程序接收的套接字队列的长度,而不是
+未完成连接的数目.未完成连接套接字队列的最大长度可以使用
+.B tcp_max_syn_backlog
+sysctl设置
+当打开syncookies时不存在逻辑上的最大长度,此设置将被忽略.参见
+.BR tcp (7)
+以获取更多信息.
+
+.SH "RETURN VALUE" "返回值"
+函数执行成功时返回0.错误时返回\-1,并置相应错误代码.
+.I errno
+.SH ERRORS 错误
+.TP
+.B EBADF
+参数
+.I s
+不是合法的描述符.
+.TP
+.B ENOTSOCK
+参数
+.I s
+不是一个套接字.
+.TP
+.B EOPNOTSUPP
+套接字类型不支持
+.B listen 
+操作.
+.SH "CONFORMING TO" "兼容于"
+Single Unix, 4.4BSD, POSIX 1003.1g.
+.B listen
+函数调用最初出现于4.2BSD. 
+.SH BUGS 勘误
+如果套接字类型是 
+.BR AF_INET , 
+并且参数
+.I backlog
+大于常量 
+.B SOMAXCONN 
+(Linux 2.0&2.2中是128),它将被自动截断为
+.BR SOMAXCONN
+的值. 
+有的BSD系统(以及一些BSD扩展)将backlog值限制为5.
+.SH "SEE ALSO" "参见"
+.BR accept (2),
+.BR connect (2),
+.BR socket (2)
+
+.SH "[中文版维护人]"
+.B byeyear <love_my_love at 263.net >
+.SH "[中文版最新更新]"
+.B 2002.01.27
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man2/open.2 b/src/man2/open.2
new file mode 100644
index 0000000..f4c59af
--- /dev/null
+++ b/src/man2/open.2
@@ -0,0 +1,333 @@
+
+.TH OPEN 2 1999-06-03 "Linux" "System calls"
+.SH NAME
+open, creat \- 用来 打开和创建 一个 文件或设备
+.SH SYNOPSIS 总览
+.nf
+.B #includ e <sys/types.h>
+.B #include <sys/stat.h>
+.B #include <fcntl.h>
+.sp
+.BI "int open(const char *" pathname ", int " flags );
+.BI "int open(const char *" pathname ", int " flags ", mode_t " mode )
+.BI "int creat(const char *" pathname ", mode_t " mode );
+.fi
+.SH "描述 (DESCRIPTION)"
+.B open()
+通常 用于 将 路径名 转换为 一个 文件描述符 (一个 非负的 小 整数, 在
+.B read " , "write
+等 I/O操作中 将会被使用). 当
+.B open()
+调用 成功, 它会 返回 一个 新的 文件描述符 (永远取 未用 描述符的 最小值).
+这个调用 创建 一个 新的 打开文件, 即 分配 一个 新的 独一无
+二的 文件描述符, 不会与 运行中的 任何 其他程序 共享 (但 可以 通过
+.B fork (2)
+系统调用 实现 共享).
+这个 新的 文件描述符 在其后 对 打开文件操作 的函数 中 使用.(参考
+.BR fcntl (2)).
+文件的 读写 指针 被 置于 文件头
+
+参数
+.I flags
+是通过
+.BR O_RDONLY ", " O_WRONLY " 或 " O_RDWR
+(指明 文件 是以 只读 , 只写 或 读写 方式 打开的)
+与 下面的 零个 或 多个 可选模式 按位
+.RI - or
+操作 得到的:
+.TP
+.B O_CREAT
+若文件 不存在 将 创建 一个 新 文件.
+新 文件 的 属主 (用户ID) 被 设置 为 此 程序 的 有效 用户 的 ID.
+同样 文件 所属 分组 也 被 设置 为 此 程序 的 有效 分组 的 ID
+或者 上层 目录 的 分组 ID (这 依赖 文件系统 类型 ,装载选项 和 上层目录 的 模式,
+参考,在
+.BR mount (8)
+中 描述 的 ext2 文件系统 的 装载选项
+.I bsdgroups
+和
+.I sysvgroups
+)
+.TP
+.B O_EXCL
+通过
+.BR O_CREAT ,
+生成 文件 , 若 文件 已经 存在 , 则
+.B open
+出错 , 调用 失败 . 若是 存在 符号联接 , 将会 把 它的 联接指针 的 指向 文件 忽略.
+.B O_EXCL
+is broken on NFS file systems, programs which rely on it for performing
+locking tasks will contain a race condition.  The solution for performing
+atomic file locking using a lockfile is to create a unique file on the same
+fs (e.g., incorporating hostname and pid), use
+.BR link (2)
+to make a link to the lockfile. If \fBlink()\fP returns 0, the lock is
+successful.  Otherwise, use
+.BR stat (2)
+on the unique file to check if its link count has increased to 2,
+in which case the lock is also successful.
+.TP
+.B O_NOCTTY
+假如
+.I pathname
+引用 一个 终端设备 \(em 参考
+.BR tty (4)
+\(em 即使 进程 没有 控制终端 ,这个 终端 也 不会 变成 进程 的 控制 终端.
+.TP
+.B O_TRUNC
+假如 文件 已经 存在 , 且是 一个 普通 文件 ,打开 模式 又是 可写(即 文件 是 用
+O_RDWR 或 O_WRONLY 模式 打开 的) , 就把 文件 的 长度 设置 为 零 , 丢弃 其中
+的 现有 内容.若 文件 是 一个 FIFO 或 终端设备 文件 , O_TRUNC 标志 被 忽略.
+其他 O_TRUNC 的 作用 是 不 具体 指定 的 (在 许多 Linux 版本 中 , 通常 会 被 忽略 ,
+其他 的 一些 版本 将 返回 一个 错误)
+.TP
+.B O_APPEND
+文件 以 追加 模式 打开 . 在
+.BR 写
+以前 , 文件 读写 指针 被 置 在 文件 的 末尾 .
+as if with
+.BR lseek .
+.B O_APPEND
+may lead to corrupted files on NFS file systems if more than one process
+appends data to a file at once.  This is because NFS does not support
+appending to a file, so the client kernel has to simulate it, which
+can't be done without a race condition.
+.TP
+.BR O_NONBLOCK " 或 " O_NDELAY
+.B 打开(open)
+文件 可以 以 非块(non-blocking) 模式 打开 . 此时 文件 并 没有 打开 , 也 不能 使用 返回 的
+文件描述符 进行 后续 操作 , 而是 使 调用 程序 等待 . 此 模式 是 为了 FIFO (命名管道) 的 处理
+, 参考
+.BR fifo (4).
+这种 模式 对 除了 FIFO 外 没有 任何 影响 .
+.TP
+.B O_SYNC
+打开 文件 实现 I/O 的 同步 . 任何 通过 文件描述符 对 文件 的
+.BR write
+都会 使 调用 的 进程 中断 , 直到 数据 被 真正 写入 硬件 中 .
+其他 , 参考
+.I RESTRICTIONS.
+.TP
+.B O_NOFOLLOW
+假如 \fIpathname\fR 是 一个 符号 联接 , 则 打开 失败 . 这是 FreeBSD
+的 扩充 , 从 2.1.126 版本 以来 被 引入 到 Linux 中来 .
+从 glibc2.0.100 库 以来 , 头文件 中 包括 了 这个 参数 的 定义;
+ \fI kernel 2.1.126 以前 将 忽略 它的 使用\fR.
+.TP
+.B O_DIRECTORY
+假如 \fIpathname\fR 不是 目录 , 打开 就 失败 . 这个 参数 是 Linux 特有 的 ,
+在 kernel 2.1.126 中 加入 , 为了 避免 在 调用 FIFO 或 磁带设备 时 的 denial-of-service
+问题 , 但是 不应该 在 执行 \fBopendir\fR 以外 使用.
+.TP
+.B O_LARGEFILE
+在 32位 系统 中 支持 大 文件系统 , 允许 打开 那些 用 31位 都 不能 表示 其 长度 的 大 文件 .
+.PP
+在 文件 打开 后 , 这些 可选 参数 可以 通过
+.B fcntl
+来 改变 .
+
+在 新文件 被 创建 时 , 参数
+.I mode
+具体 指明 了 使用 权限 . 他 通常 也 会 被
+.BR umask
+修改 . 所以 一般 新建 文件 的 权限 为
+.BR "(mode & ~umask)" .
+注意 模式 只 被 应用 于 将来 对 这 新文件 的 使用 中;
+.B open
+调用 创建 一个 新的 只读 文件 , 但 仍 将 返回 一个 可 读写 文件 描述符.
+.PP
+后面 是 一些
+.IR mode
+的 具体 参数:
+.TP
+.B S_IRWXU
+00700 允许 文件 的 属主 读 , 写 和 执行 文件
+.TP
+.B S_IRUSR (S_IREAD)
+00400 允许 文件 的 属主 读 文件
+.TP
+.B S_IWUSR (S_IWRITE)
+00200 允许 文件 的 属主 写 文件
+.TP
+.B S_IXUSR (S_IEXEC)
+00100 允许 文件 的 属主 执行 文件
+.TP
+.B S_IRWXG
+00070 允许 文件 所在 的 分组 读 , 写 和 执行 文件
+.TP
+.B S_IRGRP
+00040 允许 文件 所在 的 分组 读 文件
+.TP
+.B S_IWGRP
+00020 允许 文件 所在 的 分组 写 文件
+.TP
+.B S_IXGRP
+00010 允许 文件 所在 的 分组 执行 文件
+.TP
+.B S_IRWXO
+00007 允许 其他 用户 读 , 写 和 执行 文件
+.TP
+.B S_IROTH
+00004 允许 其他 用户 读 文件
+.TP
+.B S_IWOTH
+00002 允许 其他 用户 写 文件
+.TP
+.B S_IXOTH
+00001 允许 其他 用户 执行 文件
+.PP
+.I mode
+只有 当 在
+.IR flags
+中 使用
+.B O_CREAT
+时 才 有效 , 否则 被 忽略.
+
+.B creat
+相当 于
+.B open
+的 参数
+.I flags
+等于
+.BR O_CREAT|O_WRONLY|O_TRUNC .
+.SH RETURN VALUE 返回值
+.BR open " 和 " creat
+都 返回 一个 新的 文件描述符 (若是 有 错误 发生 返回 \-1 ,并在
+.I errno
+设置 错误 信息).
+注意
+.B open
+可以 打开 设备 专用 文件 , 但是
+.B creat
+不能创建,需要用
+.BR mknod (2)
+来代替.
+.LP
+On NFS file systems with UID mapping enabled, \fBopen\fP may return a file
+descriptor but e.g. \fBread\fP(2) requests are denied with \fBEACCES\fP.
+This is because the client performs \fBopen\fP by checking the permissions,
+but UID mapping is performed by the server upon read and write requests.
+
+若 文件 是 新 建立 的 , 他 的 atime(上次访问时间), ctime(创建时间), mtime(修改时间) 都 被 修改 为 当前 时间
+, 上层 目录 的atime , ctime 也 被 同样 修改 . 其他的 , 假如 文件 是 由 O_TRUNC 参数 修改
+的 ,它的 ctime , mtime 域 也 被 设置 为 当前 时间.
+
+.SH ERRORS 错误信息
+.TP
+.B EEXIST
+参数
+.BR O_CREAT " and " O_EXCL
+被
+使用,但是文件(
+.I pathname
+)已经存在.
+.TP
+.B EISDIR
+文件名 (
+.I pathname
+) 是 一个 目录 , 而 又 涉及 到 写 操作.
+.TP
+.B EACCES
+ 访问 请求 不 允许 (权限不够) , 在 文件名 (
+.IR pathname
+)中 有 一 目录 不允许 搜索 (没有 执行权限) , 或者 文件 还 不存在 且 对 上层目录 的 写 操作 又 不允许.
+.TP
+.B ENAMETOOLONG
+文件名 (
+.IR pathname
+) 太 长 了
+.TP
+.B ENOENT
+目录 (
+.I pathname
+) 不存在 或者 是 一个 悬空 的 符号 联接.
+.TP
+.B ENOTDIR
+.I pathname
+不是 一个 子目录
+.TP
+.B ENXIO
+使用
+O_NONBLOCK | O_WRONLY, 命名 的 文件 是 FIFO , 所读 文件 还 没有 打开 的 文件 ,
+或者 , 打开 一个 设备 专用 文件 而 相应 的 设备 不存在
+.TP
+.B ENODEV
+文件 (
+.I pathname
+) 引用 了 一个 设备 专用 文件 , 而 相应 的 设备 又 不存在.
+(这是 linux kernel 的 一个bug - ENXIO 一定 会 被 返回 .)
+.TP
+.B EROFS
+文件 (
+.I pathname
+) 是 一个 只读 文件 , 又有 写 操作 被 请求.
+.TP
+.B ETXTBSY
+文件 (
+.I pathname
+) 是 一个 正在 被 执行 的 可 执行 文件 ,又有 写 操作 被 请求.
+.TP
+.B EFAULT
+.IR pathname
+在一个你不能访问的地址空间.
+.TP
+.B ELOOP
+在 分解
+.IR pathname
+时 , 遇到 太多 符号联接 或者 指明 \fBO_NOFOLLOW\fR 但是
+.I pathname
+是 一个 符号联接
+.TP
+.B ENOSPC
+.I pathname
+将要被创建,但是设备又没有空间储存
+.I pathname
+文件了
+.TP
+.B ENOMEM
+可 获得 的 核心内存(kernel memory) 不够
+.TP
+.B EMFILE
+程序打开的文件数已经达到最大值了
+.TP
+.B ENFILE
+系统打开的总文件数已经达到了极限
+.SH "CONFORMING TO"
+SVr4, SVID, POSIX, X/OPEN, BSD 4.3
+The
+.B O_NOFOLLOW
+and
+.B O_DIRECTORY
+flags are Linux-specific.
+One may have to define the
+.B _GNU_SOURCE
+macro to get their definitions.
+.SH RESTRICTIONS 无限制
+There are many infelicities in the protocol underlying NFS, affecting
+amongst others
+.BR O_SYNC " and " O_NDELAY .
+
+POSIX provides for three different variants of synchronised I/O,
+corresponding to the flags \fBO_SYNC\fR, \fBO_DSYNC\fR and
+\fBO_RSYNC\fR.  Currently (2.1.130) these are all synonymous under Linux.
+.SH SEE ALSO 参见
+.BR read (2),
+.BR write (2),
+.BR fcntl (2),
+.BR close (2),
+.BR link (2),
+.BR mknod (2),
+.BR mount (2),
+.BR stat (2),
+.BR umask (2),
+.BR unlink (2),
+.BR socket (2),
+.BR fopen (3),
+.BR fifo (4)
+
+.SH "[中文版维护人]"
+.B Daniel <badlong at 163.com>
+.SH "[中文版最新更新]"
+.BR 2002/01/10
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man2/query_module.2 b/src/man2/query_module.2
new file mode 100644
index 0000000..9a4cd70
--- /dev/null
+++ b/src/man2/query_module.2
@@ -0,0 +1,89 @@
+.TH	query_module ""
+.SH NAME
+query_module - 向内核查询和模块有关的各个位.   /* 查询有关的位?? */
+.SH 总览
+.B #include <linux/module.h>
+.sp
+int query_module(const char *name, int which,void *buf, size_t bufsize, size
+_t *ret);
+.SH 描述
+query_module请求和可加载模块有关的来自内核的信息.信息的细致的特性和格式依赖于
+which参数,一些函数要求name参数来命名当前被加载的模块.一些允许参数name为null,
+指明内核是正确的.: 
+which的值
+0   Always returns success. Used to probe for the system call.
+0   总是返回成功,用来探测系统调用.   /* 参见 insmod -p 和前面文章 */
+QM_MODULES        Returns the names of all loaded modules. The output buffer
+ format is adjacent null-terminated strings; ret is set to the number of mod
+ules.
+    返回所有已加载的模块的名字.输出缓冲区的格式是邻近的以null终止的字符串;ret
+被
+设置为模块的数目.
+QM_DEPS        Returns the names of all modules used by the indicated module
+. The output buffer format is adjacent null-terminated strings; ret is set t
+o the number of modules.    返回所有被name参数指定的模块使用的模块的名字.输出
+缓
+冲区格式是邻近的以null终止的字符串;ret被设置为模块的数目.
+QM_REFS        Returns the names of all modules using the indicated module.
+This is the inverse of QM_DEPS. The output buffer format is adjacent null-te
+rminated strings; ret is set to the number of modules.
+    返回所有正使用被name参数指定的模块的模块名字.这和QM_DEPS是相反的.输出缓冲
+区
+格式是以邻近的null终止的字符串;ret被设置为模块的数目.
+QM_SYMBOLS        Returns the symbols and values exported by the kernel or t
+he indicated module. The buffer format is an array of:               
+               struct module_symbol
+              {
+                unsigned long value;
+                unsigned long name;
+              };
+              followed by null-terminated strings. The value of name is the
+character offset of the string relative to the start of buf; ret is set to t
+he number of symbols.
+    返回被内核或指定模块导出(开放)的符号和值对.缓冲区格式是一个以null终止的
+结构数组,name的值是相对缓冲区的开始的字符串的字符偏移;ret被设置为符号的数目.
+
+    struct module_symbol
+    {
+      unsigned long value;
+      unsigned long value;
+    }
+QM_INFO        Returns miscelaneous information about the indicated module.
+The output buffer format is:
+              struct module_info
+              {
+                unsigned long address;
+                unsigned long size;                                  
+                unsigned long flags;
+              };
+              where address is the kernel address at which the module reside
+s, size is the size of the module in bytes, and flags is a mask of MOD_RUNNI
+NG, MOD_AUTOCLEAN, et al that indicates the current status of the module. re
+t is set to the size of the            module_info struct.
+    返回各种和指定模块相关的各种信息,输出缓冲区的格式如下:
+    struct module_info
+    {
+    unsigned long address;
+    unsigned long size;
+    unsigned long flags;
+    }
+ address是模块在内核空间中驻留的地址,size是模块以字节计数的大小,flags是MOD_R
+UNING,MOD_AUTOCLEAN等指示模块当前状态的标志的按位或组成的掩玛.ret被设置为mod
+ule_info结构的大小.
+.SH 返回值
+成功时总是返回0,错误是返回-1,全局变量errno被相应设置.
+.SH 错误
+.TP
+ENOENT 
+    被name指定的模块不存在.
+.TP
+EINVAL
+.TP
+ENOSPC
+    提供的缓冲区太小,ret被设置为需要的最小大小.
+.TP
+EFAULT
+    name,buf或ret中至少一个越出了程序可访问的地址空间.       
+
+.SH
+      "雷勇" <nsinit at 263.net>
diff --git a/src/man2/read.2 b/src/man2/read.2
new file mode 100644
index 0000000..b778987
--- /dev/null
+++ b/src/man2/read.2
@@ -0,0 +1,138 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sat Jul 24 00:06:00 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt
+.\"   <michael at cantor.informatik.rwth-aachen.de>
+.\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer <aeb at cwi.nl>
+.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb at cwi.nl>
+.\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
+.\"   <michael at cantor.informatik.rwth-aachen.de>
+.\" 中文版版权所有 byeyear AND www.linuxforum.net 2002
+.\"
+.TH READ 2 "July 12, 1997" "Linux 2.0.32" "Linux Programmer's Manual"
+.SH NAME
+read \- 在文件描述符上执行读操作
+.SH 概述
+.nf
+.B #include <unistd.h>
+.sp
+.BI "ssize_t read(int " fd ", void *" buf ", size_t " count );
+.fi
+.SH 描述
+.B read()
+从文件描述符
+.I fd
+中读取
+.I count
+字节的数据并放入从
+.IR buf
+开始的缓冲区中.
+.PP
+如果
+.I count
+为零,\fBread()\fP返回0,不执行其他任何操作.
+如果
+.I count
+大于SSIZE_MAX,那么结果将不可预料.
+.PP
+.SH "返回值"
+成功时返回读取到的字节数(为零表示读到文件描述符),
+此返回值受文件剩余字节数限制.当返回值小于指定的字节数时
+并不意味着错误;这可能是因为当前可读取的字节数小于指定的
+字节数(比如已经接近文件结尾,或者正在从管道或者终端读取数
+据,或者
+\fBread()\fP被信号中断).
+发生错误时返回\-1,并置
+.I errno
+为相应值.在这种情况下无法得知文件偏移位置是否有变化.
+.SH 错误代码
+.TP
+.B EINTR
+在读取到数据以前调用被信号所中断.
+.TP
+.B EAGAIN 
+使用
+.B O_NONBLOCK
+标志指定了非阻塞式输入输出,但当前没有数据可读.
+.TP
+.B EIO
+输入输出错误.可能是正处于后台进程组进程试图读取其
+控制终端,但读操作无效,或者被信号SIGTTIN所阻塞,
+或者其进程组是孤儿进程组.也可能执行的是读磁盘或者
+磁带机这样的底层输入输出错误.
+.TP
+.B EISDIR
+.I fd
+指向一个目录.
+.TP
+.B EBADF
+.I fd
+不是一个合法的文件描述符,或者不是为读操作而打开.
+.TP
+.B EINVAL
+.I fd
+所连接的对象不可读.
+.TP
+.B EFAULT
+.I buf
+超出用户可访问的地址空间.
+.PP
+也可能发生其他错误,具体情况和
+.IR fd
+所连接的对象有关.
+POSIX 允许
+.B read
+在读取了一定量的数据后被信号所中断,并返回
+\-1(且
+.I errno
+被设置为EINTR),或者返回已读取的数据量.
+.SH 兼容于
+SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3
+.SH 限制
+在NFS文件系统中,读取小块数据仅更新时间标记,之后的调用
+不再读取服务器端的数据.这是因为客户端把数据放在缓存里.
+由于大多数情况下不存在NFS服务器向客户端的读操作,
+所以NFS客户必须将更新时间标记的操作放在服务器端,而
+数据可以放在客户端的缓存里留待以后更新.UNIX也可以禁用
+客户端的缓存,但那样的话大多数情况下会导致服务器性能下降.
+.SH 参见
+.BR close (2),
+.BR fcntl (2),
+.BR ioctl (2),
+.BR lseek (2),
+.BR readdir (2),
+.BR readlink (2),
+.BR select (2),
+.BR write (2),
+.BR fread (3)
+
+.SH "[中文版维护人]"
+.B byeyear <love_my_love at 263.net >
+.SH "[中文版最新更新]"
+.B 2002.02.02
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man2/send.2 b/src/man2/send.2
new file mode 100644
index 0000000..8eaf869
--- /dev/null
+++ b/src/man2/send.2
@@ -0,0 +1,248 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Modified Sat Jul 24 01:15:33 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Tue Oct 22 17:55:49 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" Modified Oct 1998 by Andi Kleen
+.\" 中文版 Copyright (c) 2002 byeyear 和 www.linuxforum.net
+.\"
+.TH SEND 2 "July 1999" "Linux Man Page" "Linux Programmer's Manual"
+.SH NAME
+send, sendto, sendmsg \- 从套接字发送消息
+.SH 概述
+.B #include <sys/types.h>
+.br
+.B #include <sys/socket.h>
+.sp
+.BI "int send(int " s ", const void *" msg ", size_t " len ","
+.BI "int " flags );
+.br
+.BI "int sendto(int " s ", const void *" msg ", size_t " len ","
+.BI "int " flags ", const struct sockaddr *" to ", socklen_t " tolen );
+.br
+.BI "int sendmsg(int " s ", const struct msghdr *" msg ","
+.BI "int " flags );
+.SH 描述
+.BR Send ,
+.BR sendto ,
+和
+.B sendmsg
+用于向另一个套接字传递消息.
+.B Send
+仅仅用于连接套接字,而 
+.B sendto
+和
+.B sendmsg
+可用于任何情况下.
+.PP
+目标地址用
+.I to
+指定,
+.I tolen
+定义其长度.消息的长度用
+.IR len
+指定.
+如果消息太长不能通过下层协议,函数将返回
+.B EMSGSIZE
+错误,消息也不会被送出.
+.PP
+在数据传送过程中所产生的错误不会返回给
+.BR send.
+如果发生本地错误,则返回\-1.
+.PP
+当要发送的消息长度大于套接字当前可用缓冲区时,
+.B send
+将阻塞,除非在套接字上设置了非阻塞式输入输出模式.
+对于非阻塞模式,这种情况下将返回
+.B EAGAIN
+错误.
+The
+系统调用
+.BR select (2)
+可以用来检测何时可以发送更多的数据.
+.PP
+参数
+.I flags
+是一个标志字,可以包含下列标志:
+.\" XXX document MSG_PROXY
+.TP
+对于支持带外数据的套接字,
+.B MSG_OOB
+将送出
+.I out-of-band
+(带外)数据(比如,
+.BR SOCK_STREAM
+类型的套接字);
+下层协议也必须支持.
+.I 带外
+数据.
+.TP
+.B MSG_DONTROUTE
+在送出分组时不使用网关.只有直接连接在网络上的主机
+才能接收到数据.这个标志通常仅用于诊断和路由程序.
+可路由的协议族才能使用这个标志;包套接字不可以.
+.TP
+.B MSG_DONTWAIT
+使用非阻塞式操作;如果操作需要阻塞,将返回
+.B EAGAIN 
+错误(也可以用
+.B F_SETFL
+.BR fcntl(2)
+设置
+.B O_NONBLOCK
+实现这个功能.)
+.TP
+.B MSG_NOSIGNAL
+当流式套接字的另一端中断连接时不发送 
+.B SIGPIPE 
+信号,但仍然返回 
+.B EPIPE
+错误.
+.TP
+.BR MSG_CONFIRM " (仅用于Linux 2.3以上版本)"
+通知链路层发生了转发过程:得到了另一端的成功应答.
+如果链路层没有收到通知,它将按照常规探测网络上的相邻
+主机(比如通过免费arp). 
+只能用于 
+.B SOCK_DGRAM
+和
+.B SOCK_RAW
+类型的套接字,且仅对IPv4和IPv6有效.详情参见
+.BR arp (7)
+.PP
+结构体
+.I msghdr
+的定义如下.详情参见 
+.BR recv (2)
+和下文.
+.IP
+.RS
+.nf
+.ta 4n 17n 33n
+struct msghdr {
+	void	* msg_name;	/*地址选项*/
+	socklen_t	msg_namelen;	/*地址长度*/
+	struct iovec	* msg_iov;	/*消息数组*/
+	size_t	msg_iovlen;	/*msg_iov中的元素个数*/
+	void	* msg_control;	/*辅助信息,见下文*/
+	socklen_t	msg_controllen;	/*辅助数据缓冲区长度*/
+	int	msg_flags;	/*接收消息标志*/
+};
+.ta
+.fi
+.RE
+.PP
+可以使用 
+.I msg_control 
+和
+.I msg_controllen 
+成员发送任何控制信息.内核所能处理的最大控制消息缓冲区长度由
+.B net.core.optmem_max 
+sysctl对每个套接字进行限定;参见
+.BR socket (7).
+.SH 返回值
+成功时返回发送的字符个数,否则返回-1.
+.SH 错误代码
+其中一些是套接字层产生的标准错误.其他的是下层协议模块产生的;参见
+各自的man手册.
+.TP
+.B EBADF
+指定了非法描述符.
+.TP
+.B ENOTSOCK
+参数
+.I s
+不是一个套接字.
+.TP
+.B EFAULT
+参数指定的用户地址空间非法.
+.TP
+.B EMSGSIZE
+消息长度越界.
+.TP
+.BR EAGAIN "或者" EWOULDBLOCK
+套接字设置为非阻塞式,但所请求的操作需要阻塞.
+.TP
+.B ENOBUFS
+网络接口输出队列已满.这通常表明接口已停止发送,也有可能是
+暂时性的拥挤(这不会发生在linux下,当设备队列溢出时数据报
+只是被简单丢弃.
+.TP
+.B EINTR
+接收到信号.
+.TP
+.B ENOMEM
+没有可用内存.
+.TP
+.B EINVAL
+传递的参数非法. 
+.TP
+.B EPIPE
+连接套接字的本地端已关闭.这种情况下进程还会接收到
+.B SIGPIPE
+信号,除非设置了
+.B MSG_NOSIGNAL 
+.SH 兼容于
+4.4BSD,SVr4,POSIX1003.1g草案(这些系统调用首次出现于4.2BSD).
+.B MSG_CONFIRM 
+是Linux所做的扩展.
+.SH 注意
+上面给出的函数原型遵循Single Unix Specification,
+glibc2也是这么做的;
+.I flags
+参数在BSD4.*中是`int',但在libc4和libc5中是`unsigned int';
+参数
+.I len
+在BSD4.*和libc4中是`int',但在libc5中是'size_t';
+参数
+.I tolen
+在BSD4.*,libc4和libc5中都是`int'.
+参见
+.BR accept (2).
+.SH "SEE ALSO"
+.BR fcntl (2),
+.BR recv (2),
+.BR select (2),
+.BR getsockopt (2),
+.BR sendfile (2),
+.BR socket (2),
+.BR write (2),
+.BR socket (7),
+.BR ip (7),
+.BR tcp (7),
+.BR udp (7)
+
+.SH "[中文版维护人]"
+.B byeyear <love_my_love at 263.net >
+.SH "[中文版最新更新]"
+.B 2002.02.27
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man2/write.2 b/src/man2/write.2
new file mode 100644
index 0000000..2d27cf8
--- /dev/null
+++ b/src/man2/write.2
@@ -0,0 +1,121 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sat Jul 24 13:35:59 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sun Nov 28 17:19:01 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Sat Jan 13 12:58:08 1996 by Michael Haardt
+.\"   <michael at cantor.informatik.rwth-aachen.de>
+.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb at cwi.nl>
+.\" 中文版版权所有 byeyear AND www.linuxforum.net 2002
+.\"
+.TH WRITE 2 "13 January 1996" "Linux 2.0.32" "Linux Programmer's Manual"
+.SH NAME
+write \-在一个文件描述符上执行写操作
+.SH 概述
+.B #include <unistd.h>
+.sp
+.BI "ssize_t write(int " fd ", const void *" buf ", size_t " count );
+.SH 描述
+.B write
+向文件描述符
+.I fd
+所引用的文件中写入
+从
+.I buf
+开始的缓冲区中
+.I count
+字节的数据.
+POSIX规定,当使用了\fBwrite()\fP之后再使用
+\fBread()\fP,那么读取到的应该是更新后的数据.
+但请注意并不是所有的文件系统都是
+POSIX兼容的.
+.SH "返回值"
+成功时返回所写入的字节数(若为零则表示没有写入数据).
+错误时返回\-1,并置\fIerrno\fP为相应值.
+若\fIcount\fP为零,对于普通文件无任何影响,但对特殊文件
+将产生不可预料的后果.
+.SH 错误代码
+.TP
+.B EBADF
+.I fd
+不是一个合法的文件描述符或者没有以写方式打开.
+.TP
+.B EINVAL
+.I fd
+所指向的对象不可写.
+.TP
+.B EFAULT
+.I buf
+不在用户可访问地址空间内.
+.TP
+.B EPIPE
+.I fd
+连接到一个管道,或者套接字的读方向一端已关闭.此时写进程
+将接收到
+.B SIGPIPE
+信号;如果此信号被捕获,阻塞或忽略,那么将返回错误
+.B EPIPE.
+.TP
+.B EAGAIN
+读操作阻塞,但使用
+.B O_NONBLOCK
+指定了非阻塞式输入输出.
+.TP
+.B EINTR
+在写数据以前调用被信号中断.
+.TP
+.B ENOSPC
+.I fd
+指向的文件所在的设备无可用空间.
+.TP
+.B EIO
+当编辑一个节点时发生了底层输入输出错误.
+.PP
+可能发生了其他错误,取决于
+.IR fd
+所连接的对象.
+.SH "兼容于"
+SVr4, SVID, POSIX, X/OPEN, 4.3BSD.
+SVr4文档添加了以下错误代码:
+EDEADLK, EFBIG, ENOLCK, ENOLNK, ENOSR,
+ENXIO, EPIPE,或者ERANGE.
+对于SVr4有可能在写入部分数据时发生中断并返回EINTR. 
+.SH "参见"
+.BR open (2),
+.BR read (2),
+.BR fcntl (2),
+.BR close (2),
+.BR lseek (2),
+.BR select (2),
+.BR ioctl (2),
+.BR fsync (2),
+.BR fwrite (3)
+
+.SH "[中文版维护人]"
+.B byeyear <love_my_love at 263.net >
+.SH "[中文版最新更新]"
+.B 2002.02.07
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/Object.3 b/src/man3/Object.3
new file mode 100644
index 0000000..09ec921
--- /dev/null
+++ b/src/man3/Object.3
@@ -0,0 +1,367 @@
+'\"
+'\" Copyright (c) 1996-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH Tcl_Obj 3 8.0 Tcl "Tcl Library Procedures"
+.BS
+.SH NAME
+Tcl_NewObj, Tcl_DuplicateObj, Tcl_IncrRefCount, Tcl_DecrRefCount, Tcl_IsShared, Tcl_InvalidateStringRep \- 操纵 Tcl 对象
+.SH 总览 SYNOPSIS
+.nf
+\fB#include <tcl.h>\fR
+.sp
+Tcl_Obj *
+\fBTcl_NewObj\fR()
+.sp
+Tcl_Obj *
+\fBTcl_DuplicateObj\fR(\fIobjPtr\fR)
+.sp
+\fBTcl_IncrRefCount\fR(\fIobjPtr\fR)
+.sp
+\fBTcl_DecrRefCount\fR(\fIobjPtr\fR)
+.sp
+int
+\fBTcl_IsShared\fR(\fIobjPtr\fR)
+.sp
+\fBTcl_InvalidateStringRep\fR(\fIobjPtr\fR)
+.SH 参数 ARGUMENTS
+.AS Tcl_Obj *objPtr in
+.AP Tcl_Obj *objPtr in
+指向一个对象;必须是以前调用 \fBTcl_NewObj\fR 返回的结果。
+.BE
+
+.SH 介绍 INTRODUCTION
+.PP
+这个手册页提供了对 Tcl 对象以及如何使用它们的一个概述。它还描述了管理 Tcl 对象的一些一般过程。使用这些过程来建立和复制对象,和增加和减少到对象的引用(指针)计数。这些过程与那些在特定类型的对象如 \fBTcl_GetIntFromObj\fR 和 \fBTcl_ListObjAppendElement\fR 上进行操作的过程联合使用。单独的过程和它们所操纵的数据结构被放在一起描述。
+.PP
+Tcl 的双端口(\fIdual-ported\fR)对象为存储和交换 Tcl 值提供了一个通用的机制。它们在很大程度上替代了 Tcl 中字符串的使用。例如,它们被用来存储变量值、命令参数、命令结果、和脚本。Tcl 对象外在表现很象字符串,但它还持有可以被更加有效的操纵的内部表示。例如,现在一个 Tcl 列表被表示为持有列表的字符串表示的一个对象,如同到每个列表元素的指针的一个数组。双端口对象避免了运行时的类型转换。它们还提高了许多操作的速度,原因是可以立即获得一个适当的表示。编译器自身使用 Tcl 对象来缓存(cache)作为编译脚本的结果的字节码指令。
+.PP
+这两种表示互为缓存并且被以懒惰方式计算。就是说,每个表示都只在需要时才被计算,它被从另一种表示计算出来,而一旦被计算出来了,它就被保存起来。除此之外,其中一个表示的改变将使另一个表示成为无效 。举个例子,一个做整数运算的 Tcl 程序可以在一个变量的内部机器整数表示上进行直接操作,而不需要经常性的在整数和字符串之间进行转换。只有在需要这个变量的值的一个字符串表示的时候,比如打印它,程序才重新生成这个整数的字符串表示。尽管对象包含一个内部表示,但它们的语义仍是依据字符串定义的: 总是可以获取最新的字符串,在取回对象的字符串表示的时候,对对象的任何改变都将反映到取回的那个字符串上。因为这个表示是无效的并被重新生成了,扩展作者直接访问 \fBTcl_Obj\fR 的字段是很危险的。最好使用 \fBTcl_GetStringFromObj\fR 和 \fBTcl_GetString\fR 这样的过程来访问 \fBTcl_Obj\fR 信息。
+.PP
+在堆上分配对象,使用到它们的 \fBTcl_Obj\fR 结构的指针引用对象。对象要尽可能的共享。这将显著的缩减存储需求,原因是一些对象比如长列表是非常大的。还有,多数 Tcl 值只是被读而从不被修改。尤其是过程参数,它们可以在调用和被调用的过程之间共享。赋值和参数绑定是通过简单的赋予到这个值的一个指针完成的。使用引用计数来确定什么时候归还一个对象的存储是安全的。
+.PP
+Tcl 对象是有类型的(typed)。一个对象的内部表示由它自己的类型来控制。在 Tcl 核心中预定义了七种类型,其中包括:整数、双精度浮点数、列表、和字节码。扩展作者可是使用 \fBTcl_RegisterObjType\fR  过程来扩展类型的集合。
+
+.SH "对象结构 THE TCL_OBJ STRUCTURE"
+.PP
+每个 Tcl 对象都被表示为一个 \fBTcl_Obj\fR 结构,其定义如下。
+.CS
+typedef struct Tcl_Obj {
+	int \fIrefCount\fR;
+	char *\fIbytes\fR;
+	int \fIlength\fR;
+	Tcl_ObjType *\fItypePtr\fR;
+	union {
+		long \fIlongValue\fR;
+		double \fIdoubleValue\fR;
+		VOID *\fIotherValuePtr\fR;
+		struct {
+			VOID *\fIptr1\fR;
+			VOID *\fIptr2\fR;
+		} \fItwoPtrValue\fR;
+	} \fIinternalRep\fR;
+} Tcl_Obj;
+.CE
+\fIbytes\fR 和 \fIlength\fR 成员一起持有一个对象的字符串表示,这是一个已计数的 (\fIcounted\fR) 字符串或二进制串 (\fIbinary string\fR),二进制串可能包含有嵌入的 null 字节的二进制串。\fIbytes\fR 指向这个字符串表示的第一个字节。\fIlength\fR 成员给出字节数。字节数组的在偏移量 \fIlength\fR 上,也就是最后一个字节后面必须总是有一个 null;这允许不包含 null 的字符串表示被作为一个常规的用 null 终结的 C 语言字符串来对待。 C 程序使用 \fBTcl_GetStringFromObj\fR 和 \fBTcl_GetString\fR 来得到一个对象的字符串表示。如果 \fIbytes\fR 是 NULL,则字符串表示无效。
+.PP
+一个对象的类型管理它的内部表示。成员 \fItypePtr\fR 指向描述类型的 Tcl_ObjType 结构。如果 \fItypePtr\fR is 是 NULL,则内部表示无效。
+.PP
+\fIinternalRep\fR 联合成员持有一个对象的内部表示。它可以是一个(长)整数,一个双精度浮点数,或者一个指针、它指向包含这个类型的对象要表示对象所需要的补充信息的值,或者是两个任意的指针。
+.PP
+使用 \fIrefCount\fR 成员来通告在什么时候释放一个对象的存储是安全的。它持有到这个对象的活跃引用的计数。维护正确的引用计数是扩展作者的一个关键性的责任。在下面的对象的存储管理 (\fBSTORAGE MANAGEMENT OF OBJECTS\fR) 章节中讨论了引用计数。
+.PP
+尽管扩展的作者可以直接访问一个 Tcl_Obj 结构的成员,但最好还是使用恰当的过程和宏。例如,扩展作者永远不要直接读或修改 \fIrefCount\fR;作为替代,他们应当使用象 \fBTcl_IncrRefCount\fR  和 \fBTcl_IsShared\fR 这样的宏。
+.PP
+Tcl 对象的一个关键属性是它持有两个表示。典型的,一个对象开始时只包含一个字符串表示: 它是无类型的并且\fItypePtr\fR 是一个 NULL。分别使用 \fBTcl_NewObj\fR 或 \fBTcl_NewStringObj\fR 建立包含一个空串的一个对象或一个指定字符串的一个复件。一个对象的字符串值可以使用 \fBTcl_GetStringFromObj\fR 或 \fBTcl_GetString\fR 来获取并使用 \fBTcl_SetStringObj\fR 来改变它。如果如果这个对象以后被传递给象 \fBTcl_GetIntFromObj\fR 这样的要求一个特定的内部表示的过程,则这个过程将建立一个内部表示并设置这个对象的 \fItypePtr\fR。从字符串表示来计算它的内部表示。一个对象的两个表示是双重的: 对一个的改变也将反映到另一个上。例如,\fBTcl_ListObjReplace\fR 将修改一个对象的内部表示,下一个到 \fBTcl_GetStringFromObj\fR 或 \fBTcl_GetString\fR 的调用将反映这个改变。
+.PP
+出于效率的原因以懒惰方式重计算表示。一个过程如 \fBTcl_ListObjReplace\fR 对一个表示的改变不立即反映到另一个表示上。作为替代,把另一个表示标记为无效,如果以后需要的话再重新生成。多数 C 程序员永远无须关心这是如何完成的,他们只是简单的使用象 \fBTcl_GetBooleanFromObj\fR 或 \fBTcl_ListObjIndex\fR 这样的过程。而实现自己的对象类型的程序员必须检查无效表示和在需要时标记一个表示为无效。使用过程 \fBTcl_InvalidateStringRep\fR 来标记一个对象的字符串表示为无效并释放与这个字符串表示相关联的存储。
+.PP
+对象在它的一生当中通常保持一种类型,但是有时一个对象必须从一种类型转换成另一种类型。例如,一个 C 程序可以通过重复调用 \fBTcl_AppendToObj\fR 来在一个对象中建造一个字符串,并接着调用 \fBTcl_ListObjIndex\fR 来从一个对象中提取一个列表元素。持有相同字符串的同样的对象在不同的时候可能有多种不同的内部表示。扩展作者可以使用 \fBTcl_ConvertToType\fR 过程强制把一个对象从一种类型转换成另一种类型。只有建立新对象类型的程序员才需要关心这是如何作的。作为对象类型实现的一部分,需要定义为一个对象建立一个新的内部表示和改变它 \fItypePtr\fR 的一个过程。如何建立一个新对象类型请参见 \fBTcl_RegisterObjType\fR 手册页。
+
+.SH "对象生命周期示例 EXAMPLE OF THE LIFETIME OF AN OBJECT"
+.PP
+作为一个对象生命周期的一个例子,考虑下列命令序列:
+.CS
+\fBset x 123\fR
+.CE
+这里把一个未知类型的对象赋值给 \fIx\fR,这个对象的 \fIbytes\fR 成员指向 \fB123\fR 而 \fIlength\fR 成员包含 3。对象的 \fItypePtr\fR 成员是 NULL。
+.CS
+\fBputs "x is $x"\fR
+.CE
+\fIx\fR 的字符表示是有效的(因为 \fIbytes\fR 是非 NULL)并被这个命令取回。
+.CS
+\fBincr x\fR
+.CE
+\fBincr\fR 命令首先通过调用 \fBTcl_GetIntFromObj\fR 从 x (所引用的)的对象的得到一个整数。这个过程检查这个对象是否已经是一个整数对象。由于它不是,就通过把这个对象的 \fIinternalRep.longValue\fR 成员设置为整数 \fB123\fR,并把这个对象的 \fItypePtr\fR 设置为指向整数的 Tcl_ObjType 结构,此过程把这个对象转换成了整数对象。两个表示现在都是有效的。\fBincr\fR 增加这个对象的整数内部表示,接着使它的字符串表示无效(通过调用 \fBTcl_InvalidateStringRep\fR),原因是这个字符串表示不再与内部表示相对应了。
+.CS
+\fBputs "x is now $x"\fR
+.CE
+现在需要 \fIx\fR (所引用的)的对象的字符串表示,要重新计算它。字符串表示现在是 \fB124\fR。两个表示又都是有效的了。
+
+.SH "对象的存储管理 STORAGE MANAGEMENT OF OBJECTS"
+.PP
+Tcl 对象在堆上分配,并且要尽可能的共享对象来缩减存储需求。使用引用计数来确定何时一个对象不再被需要并可以被安全的释放。刚用  \fBTcl_NewObj\fR 或 \fBTcl_NewStringObj\fR 建立的对象的  \fIrefCount\fR 是 0。当建立到这个对象的一个新引用时,使用宏 \fBTcl_IncrRefCount\fR 增加引用计数。当不再需要一个引用的时候 ,使用 \fBTcl_DecrRefCount\fR 减少引用计数,而且如果这个对象的引用计数下降到零,就释放它的存储。被不同的代码或数据结构共享的一个对象的 \fIrefCount\fR 大于 1。增加一个对象的引用计数来确保它不会被过早释放或者它的值被意外的改变。
+.PP
+举个例子,字节码解释器在调用者和被调用的过程之间共享参数对象,以避免复制对象。它把调用者的实际参数的对象赋值给过程的形式参数变量。此时,它调用 \fBTcl_IncrRefCount\fR 来增加每个实际参数(所引用的)的对象的引用计数,原因是有了从形式参数到这个对象的一个新引用。在被调用的过程返回的时候,解释器调用 \fBTcl_DecrRefCount\fR 来减少每个参数的引用计数。当一个对象的引用下降到小于等于零的时候, \fBTcl_DecrRefCount\fR 归还它的存储。多数命令过程不是必须关心引用计数的,原因是它们立即使用一个对象的值并且在它们返回之后不保留到这个对象的指针。但是,如果它们把到一个对象的指针保留到一个数据结构中,则他们必须注意要增加它的引用计数,原因是这个保留的指针是一个新引用。
+.PP
+象 \fBlappend\fR 和 \fBlinsert\fR 这样的直接修改对象的命令过程必须注意要在修改一个共享的对象之前复制它。 他们必须首先调用 \fBTcl_IsShared\fR 来检查这个对象是否是共享的。如果对象是共享的,则他们必须使用  \fBTcl_DuplicateObj\fR 复制这个对象;它返回原始对象的一个新复制品,其 \fIrefCount\fR 是 0。如果对象未被共享,则命令过程“拥有”这个对象并可以安全的直接修改它。例如,下列代码出现在实现 \fBlinsert\fR 的命令过程当中。通过在  \fIindex\fR 的前面插入 \fIobjc-3\fR 新元素,这个过程修改在 \fIobjv[1]\fR 中传递给它的列表对象 。
+
+.CS
+listPtr = objv[1];
+if (Tcl_IsShared(listPtr)) {
+	listPtr = Tcl_DuplicateObj(listPtr);
+}
+result = Tcl_ListObjReplace(interp, listPtr, index, 0, (objc-3), &(objv[3]));
+.CE
+
+另一个例子,\fBincr\fR 的命令过程在增加变量(所引用的)对象内部表示中的整数之前,必须检查这个变量(所引用的)对象是否是共享的。如果它是共享的,则需要复制这个对象,目的是避免意外的改变在其他数据结构中值。
+
+
+.SH "参见 SEE ALSO"
+Tcl_ConvertToType, Tcl_GetIntFromObj, Tcl_ListObjAppendElement, Tcl_ListObjIndex, Tcl_ListObjReplace, Tcl_RegisterObjType
+
+.SH 关键字 KEYWORDS
+internal representation, object, object creation, object type, reference counting, string representation, type conversion
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/30
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/basename.3 b/src/man3/basename.3
new file mode 100644
index 0000000..8a0fa80
--- /dev/null
+++ b/src/man3/basename.3
@@ -0,0 +1,142 @@
+.\" (c) 2000 by Michael Kerrisk (michael.kerrisk at gmx.net)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. 
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Created, 14 Dec 2000 by Michael Kerrisk
+.\"
+.TH DIRNAME 3  2000-12-14 "GNU" "Linux Programmer's Manual"
+.SH NAME
+dirname, basename \- 分析路径成员
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <libgen.h>
+.sp
+.BI "char *dirname(char " "*path" ");"
+.nl
+.BI "char *basename(char " "*path" ");"
+.fi
+
+.SH "描述 (DESCRIPTION)"
+.B dirname
+和
+.B basename
+把 以 null 结尾 的 路径名 分解为 目录 和 文件名. 一般情况下, 
+.B dirname
+返回 路径名 的 前面部分, 直到 (但不包括) 最后一个 '/', 而
+.B basename
+则 返回 最后一个 '/' 后面 的 内容. 如果 路径名 以 '/' 结尾, 
+该 '/' 被认为 不是 路径名 的 一部分.
+
+.PP
+如果 路径名
+.I path
+不包含 斜杠 '/', 
+.B dirname
+返回 字符串 ".", 而
+.B basename
+返回
+.IR path 
+的 副本. 如果 路径名
+.I path
+是 "/", 则
+.B dirname
+和
+.B basename
+均 返回 "/". 如果 路径名
+.I path
+是 NULL 指针 或 指向 空串, 则
+.B dirname
+和
+.B basename
+均 返回 ".".
+.PP
+把
+.BR dirname 
+返回的 字符串, "/", 和
+.B basename
+返回的 字符串 连接 起来, 能够 产生 一个 完整 的 路径名.
+.PP
+无论
+.B dirname
+还是
+.B basename
+都 有可能 更改 
+.IR path
+的 内容, 因此 如果 需要 保护 原有 路径名, 应该 传送 副本 作为 参数. 此外,
+.B dirname
+和
+.B basename
+返回的 指针 可能 指向 一块 静态分配 的 内存, 会被 下次 调用 覆盖.
+.PP
+下面 的 例子 (摘自 SUSv2) 展示了 对于 不同的 路径名,
+.B dirname
+和
+.B basename
+返回 的 字符串:
+.sp
+.nf
+.B 
+path  		dirname		basename
+"/usr/lib"	"/usr"		"lib"
+"/usr/"		"/"  		"usr"
+"usr"		"."  		"usr"
+"/"  		"/"  		"/"
+"."  		"."  		"."
+".."  		"."  		".."
+.fi
+
+.SH "示例 (EXAMPLE)"
+.nf
+char *dirc, *basec, *bname, *dname;
+char *path = "/etc/passwd";
+
+dirc = strdup(path);
+basec = strdup(path);
+dname = dirname(dirc);
+bname = basename(basec);
+printf("dirname=%s, basename=%s\\n", dname, bname);
+free(dirc);
+free(basec);
+.fi
+
+.SH "返回值 (RETURN VALUE)"
+.B dirname
+和
+.B basename
+均 返回 以 null 结尾的 字符串 的 指针.
+
+.SH "BUGS"
+在 glibc 的 各个 版本 中, 直到 (并包括) 2.2.1,
+.B dirname
+无法 正确 处理 以 '/' 字符 结尾 的 路径名. 如果 参数 是 NULL 指针,
+他 还会 产生 段冲突 (segmentation violation).
+
+.SH "遵循 (CONFORMING TO)"
+SUSv2
+
+.SH "另见 (SEE ALSO)"
+.BR dirname (1),
+.BR basename (1)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/bindtextdomain.3 b/src/man3/bindtextdomain.3
new file mode 100644
index 0000000..b7890cd
--- /dev/null
+++ b/src/man3/bindtextdomain.3
@@ -0,0 +1,85 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   GNU glibc-2 source code and manual
+.\"   GNU gettext source code and manual
+.\"   LI18NUX 2000 Globalization Specification
+.\"
+
+.TH BINDTEXTDOMAIN 3 "May 2001" "GNU gettext 0.10.38"
+.SH NAME
+bindtextdomain \- 设置 包括 消息条目 的 路径
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <libintl.h>
+.sp
+.BI "char * bindtextdomain (const char * " domainname ", const char * " dirname );
+.fi
+
+.SH "描述 (DESCRIPTION)"
+\fBbindtextdomain\fP 函数 的 作用 是 设置 指定消息域 里,包含 消息条目
+(message catalog) 的 基本目录 层次结构。
+
+.PP
+一个 消息域 是 一套 可翻译的 \fImsgid\fP 消息。 通常,
+每一个 软件包 有 它自己的 消息域。 提出 \fBbindtextdomain\fP 的 需求 是因为
+软件包 安装 的 时候,并不总和 <libintl.h> 头文件 和 libc/libintl 库文件 的前缀
+保持一致.
+
+.PP
+消息条目 期望的 路径名 是
+\fIdirname\fP/\fIlocale\fP/\fIcategory\fP/\fIdomainname\fP.mo,
+其中 \fIlocale\fP 是 locale 名, 而 \fIcategory\fP 是 locale 面, 如 
+\fBLC_MESSAGES\fP.
+.PP
+\fIdomainname\fP 必须 是 非空字符串。
+.PP
+如果 \fIdirname\fP 不是 NULL, 属于 \fIdomainname\fP 域 的
+消息条目 的 基本目录 被设置为 \fIdirname\fP。 函数 能够 复制 参数字符串。
+如果 程序 希望 调用 \fBchdir\fP 函数, \fIdirname\fP 必须 是 绝对路径名;
+否则 程序 无法 保证 找到 消息条目。
+.PP
+如果 \fIdirname\fP 是 NULL, 函数 返回 以前 为 \fIdomainname\fP 域 设置的 
+基本目录。
+
+.SH "返回值 (RETURN VALUE)"
+如果成功, \fBbindtextdomain\fP 函数 返回 当前 \fIdomainname\fP 域
+的 基本目录, 如果 改变了 基本目录, 返回 改变后的 基本目录。 
+返回的 字符串 一直 有效, 直到 下一次 对 同一个 \fIdomainname\fP 调用
+\fBbindtextdomain\fP; 这个 字符串 不应该 被修改 或 释放。
+如果 发生 内存分配错误, \fBerrno\fP 设置为 \fBENOMEM\fP, 然后 返回 NULL.
+
+.SH "错误 (ERRORS)"
+下列 错误 可能 发生, 包括 其它的:
+.TP
+.B ENOMEM
+没有 足够的 内存 可用。
+
+.SH BUGS
+返回类型 应该是 \fBconst char *\fP, 但是 为了 避免 较早版本 ANSI C 代码 的 
+警告, 返回类型 是 \fBchar *\fP.
+
+.SH "另见 (SEE ALSO)"
+.BR gettext (3),
+.BR dgettext (3),
+.BR dcgettext (3),
+.BR ngettext (3),
+.BR dngettext (3),
+.BR dcngettext (3),
+.BR textdomain (3),
+.BR realpath (3)
+
+.SH "[中文版维护人]"
+.B Viamu <viamu at msn.com>
+.SH "[中文版最新更新]"
+2003/11/28
+.SH "[中文版校对人]"
+.B Xuming <xuming at users.sourceforge.net>
+.SH "《中文MAN-PAGE计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/bzero.3 b/src/man3/bzero.3
new file mode 100644
index 0000000..d6c0bca
--- /dev/null
+++ b/src/man3/bzero.3
@@ -0,0 +1,60 @@
+.\" Copyright 1993 David Metcalfe (david at prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sat Jul 24 21:28:17 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Tue Oct 22 23:49:37 1996 by Eric S. Raymond <esr at thyrsus.com>
+.TH BZERO 3  1993-04-09 "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+bzero \- 向字符串写入零
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <string.h>
+.sp
+.BI "void bzero(void *" s ", size_t " n );
+.fi
+
+.SH "描述 (DESCRIPTION)"
+\fBbzero()\fP 函数 把 字符串 \fIs\fP 的 前 \fIn\fP 个 字节 置成 零.
+
+.SH "返回值 (RETURN VALUE)"
+\fBbzero()\fP 函数 无 返回值.
+
+.SH "遵循 (CONFORMING TO)"
+4.3BSD.  建议 不要 用 这个 函数 -- 请 在 新的 程序中 用
+.BR memset
+函数.
+
+.SH "参见 (SEE ALSO)"
+.BR memset "(3), " swab (3)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/1/28
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/clearerr.3 b/src/man3/clearerr.3
new file mode 100644
index 0000000..3a95cca
--- /dev/null
+++ b/src/man3/clearerr.3
@@ -0,0 +1 @@
+.so man3/ferror.3
diff --git a/src/man3/exec.3 b/src/man3/exec.3
new file mode 100644
index 0000000..300c8f4
--- /dev/null
+++ b/src/man3/exec.3
@@ -0,0 +1,204 @@
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)exec.3	6.4 (Berkeley) 4/19/91
+.\"
+.\" Converted for Linux, Mon Nov 29 11:12:48 1993, faith at cs.unc.edu
+.\" Updated more for Linux, Tue Jul 15 11:54:18 1997, pacman at cqc.com
+.\"
+.TH EXEC 3  1993-11-29 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+execl, execlp, execle, execv, execvp \- 执行某个文件
+
+.SH "总览 (SYNOPSIS)"
+.B #include <unistd.h>
+.sp
+.B extern char **environ;
+.sp
+.BI "int execl( const char *" path ", const char *" arg ", ...);
+.br
+.BI "int execlp( const char *" file ", const char *" arg ", ...);
+.br
+.BI "int execle( const char *" path ", const char *" arg
+.BI ", ..., char * const " envp "[]);"
+.br
+.BI "int execv( const char *" path ", char *const " argv "[]);"
+.br
+.BI "int execvp( const char *" file ", char *const " argv "[]);"
+
+.SH "描述 (DESCRIPTION)"
+.B exec
+系列 函数 用 新的 进程 映象 置换 当前的 进程 映象. 
+本 手册页 描述的 这些 函数 实际上 是 对
+.BR execve (2)
+函数 的 前端(front-end) 包装. (关于 当前进程 的 置换 详见 
+.B execve
+的 手册页.)
+.PP
+这些 函数 的 第一个 参数 是 待执行 程序 的 路径名(文件名).
+.PP
+在 函数
+.BR execl ,
+.BR execlp ,
+和
+.B execle
+中, 
+.I "const char *arg"
+以及 省略号 代表 的 参数 可被 视为
+.IR arg0 ,
+.IR arg1 ,
+\&...,
+.IR argn .
+他们 合起来 描述了 指向 null 结尾的 字符串 的 指针 列表, 即 执行程序 的
+参数列表. 作为 约定, 第一个 arg 参数 应该 指向 执行程序名 自身. 参数列表
+.I 必须
+用
+.B NULL
+指针 结束!
+.PP
+.B execv
+和
+.B execvp
+函数 提供 指向 null 结尾的 字符串 的 指针数组 作为 新程序 的 参数列表.
+作为 约定, 指针数组 中 第一个 元素 应该 指向 执行程序名 自身. 指针数组
+.I 必须
+用
+.B NULL
+指针 结束!
+.PP
+.B execle
+函数 同时 说明了 执行进程 的 环境(environment), 他 在
+.B NULL
+指针 后面 要求 一个 附加参数, NULL 指针 用于 结束 参数列表, 或者说,
+argv 数组. 这个 附加参数 是 指向 null 结尾的 字符串 的 指针数组, 他
+.I 必须
+用
+.B NULL
+指针 结束! 其他 函数 从 当前进程 的
+.I environ
+外部变量 中 获取 新进程 的 环境.
+.PP
+某些 函数 有 特殊的 语义.
+.PP
+如果 提供的 文件名 中 不包含 斜杠符(/), 函数
+.B execlp
+和
+.B execvp
+将 同 shell 一样 搜索 执行文件. 搜索路径 由 环境变量
+.B PATH
+指定. 如果 该 变量 不存在, 则 使用 缺省路径 ``:/bin:/usr/bin''.
+另外, 某些 错误 要 特殊处理.
+.PP
+如果 对 某个 文件 的 访问 遭到 拒绝 (
+.B execve
+返回
+.BR EACCES ),
+这些 函数 将 在 搜索路径 中 继续 寻找. 如果 没有 找到 符合的 文件,
+他们 返回时 把
+.I errno
+置为
+.BR EACCES .
+.PP
+如果 无法 识别 文件首部 (
+.B execve
+返回
+.BR ENOEXEC ),
+这些 函数 将 以 文件名 作为 第一个 参数 调用 shell.
+(如果 这个 尝试 失败 就 不再 进行 搜索 了.)
+
+.SH "返回值 (RETURN VALUE)"
+任何
+.B exec
+函数 返回 均 表明 发生了 错误. 返回值 是 \-1, 全局变量
+.I errno
+指出 错误类型.
+
+.SH "文件 (FILE)"
+.I /bin/sh
+
+.SH "错误 (ERROR)"
+这些 函数 均可能 失败, 
+.I errno
+被 置为 库函数
+.BR execve (2)
+设置的 各种 错误类型.
+
+.SH "另见 (SEE ALSO)"
+.BR sh (1),
+.BR execve (2),
+.BR fork (2),
+.BR environ (5),
+.BR ptrace (2)
+
+.SH "兼容性 (COMPATIBILITY)"
+在 某些 其他系统 中, 缺省路径 (当 环境变量 \fBPATH\fR 不存在)
+把 当前目录 列在
+.I /bin
+和
+.IR /usr/bin 
+后面, 这是 为了 防止 特洛伊木马. Linux 在这儿 采取了 传统的 
+"当前目录优先" 缺省路径.
+.PP
+当 试图 执行 程序 并且 发生 错误 的 时候,  
+.B execlp
+和
+.B execvp
+的 行为 是 历史 习惯, 但是 没有 进入 正式文档, 也没有 被
+POSIX 标准 说明. BSD (可能 还有 其他 系统) 中 进程 自动 进入 睡眠, 如果
+发生 ETXTBSY, 他们 就 重试. 而 Linux 视此为 严重错误, 并且 立即 返回.
+.PP
+传统的 做法中, 函数
+.B execlp
+和
+.B execvp
+忽略 所有 错误, 除了 上述的 错误, 
+.B ENOMEM
+和
+.BR E2BIG .
+如果 发生 这三类 错误, 他们 就 返回. 而 现在的 做法是, 不仅仅 上述的 错误,
+任何 错误 均导致 函数 返回.
+
+.SH "遵循 (CONFORMING TO)"
+.BR execl ,
+.BR execv ,
+.BR execle ,
+.B execlp
+和
+.B execvp
+遵循
+IEEE Std1003.1-88 (``POSIX.1'').
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/exit.3 b/src/man3/exit.3
new file mode 100644
index 0000000..0bca0c4
--- /dev/null
+++ b/src/man3/exit.3
@@ -0,0 +1,63 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb at cwi.nl>.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH EXIT 3  2001-11-17 "" "Linux Programmer's Manual"
+.SH NAME
+exit \- 使程序正常中止
+.SH "SYNOPSIS 总览"
+.nf
+.B #include <stdlib.h>
+.sp
+.BI "void exit(int " status );
+.fi
+.SH "DESCRIPTION 描述"
+函数 \fBexit()\fP 使得程序正常中止,\fIstatus & 0377\fP 的值被返回给父进程 (参见
+.BR wait (2))
+。所有用 \fBatexit()\fP 和 \fBon_exit()\fP 注册的函数都以与注册时相反的顺序被依次执行。使用 \fItmpfile()\fP 创建的文件被删除。
+.LP
+C 标准定义了两个值 \fIEXIT_SUCCESS\fP 和 \fIEXIT_FAILURE\fP,可以作为 \fBexit()\fP 的参数,来分别指示是否为成功退出。
+.SH "RETURN VALUE 返回值"
+函数 \fBexit()\fP 不会返回。
+.SH "CONFORMING TO 标准参考"
+SVID 3, POSIX, BSD 4.3, ISO 9899 (``ANSI C'')
+.SH "NOTES 要点"
+在 exit 处理过程中,可能会使用 \fBatexit()\fP 和 \fBon_exit()\fP 注册其他的函数。通常,最后注册的函数被从已注册函数链中摘下来,然后执行。如果在处理过程中,又调用了 \fBexit()\fP 或 \fBlongjmp()\fP,那么发生的行为是未定义的。
+.LP
+相对于使用 0 和非零值 1 或 \-1,使用 EXIT_SUCCESS 和 EXIT_FAILURE 可以稍微增加一些可移植性 (对非 Unix 环境)。特别的,VMS 使用一种不同的约定。
+.LP
+BSD 试图标准化退出代码 - 参见文件
+.IR <sysexits.h>
+。
+.LP
+\fBexit()\fP 之后,退出状态必须传递给父进程。这里有三种情况。如果父进程已设置了 SA_NOCLDWAIT,或者已将 SIGCHLD 的处理句柄设置成了 SIG_IGN,这个状态将被忽略。这时要退出的进程立即消亡。如果父进程没有表示它对退出状态不感兴趣,仅仅是不再等待,那么要退出的程序变成一个僵尸进程 (``zombie'',除了包含一个字节的退出状态外,什么也不是)。这样在父进程后来调用 \fIwait()\fP 函数族之一时,可以得到退出状态。
+.LP
+如果所用实现支持 SIGCHLD 信号,信号将被发送到父进程。如果父进程已设置了 SA_NOCLDWAIT,它被取消定义。(?)
+.LP
+如果进程是一个 session leader,它的控制终端是会话的控制终端,那么这个终端的前台进程组的每个进程都将收到 SIGHUP 信号;终端将与这个会话断开,可以再被一个新的控制进程获得。
+.LP
+如果进程的退出使得一个进程组成为孤儿,并且这个新近成为孤儿的进程组中任何的进程被中止,进程组中所有的进程将依次收到 SIGHUP 和 SIGCONT 信号。
+.SH "SEE ALSO 参见"
+.BR _exit (2),
+.BR wait (2),
+.BR atexit (3),
+.BR on_exit (3),
+.BR tmpfile (3)
diff --git a/src/man3/fclose.3 b/src/man3/fclose.3
new file mode 100644
index 0000000..bb7cf30
--- /dev/null
+++ b/src/man3/fclose.3
@@ -0,0 +1,101 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fclose.3	6.7 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:19:14 1993, faith at cs.unc.edu
+.\"
+.\" Modified 2000-07-22 by Nicol??s Lichtmaier <nick at debian.org>
+.\"
+.TH FCLOSE 3  1993-11-29 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+fclose \- 关闭流
+.SH "SYNOPSIS 总览"
+.B #include <stdio.h>
+.sp
+.BI "int fclose(FILE *" stream );
+.SH "DESCRIPTION 描述"
+函数
+.B fclose
+将名为
+.I stream
+的流与它底层关联的文件或功能集合断开。如果流曾用作输出,任何缓冲的数据都将首先被写入,使用
+.BR fflush (3)
+。
+.SH "RETURN VALUE 返回值"
+成功执行返回 0,否则返回
+.B EOF
+并设置全局变量
+.I errno
+来指示错误发生。任何一种情况下,对流再进行存取 (包括再次调用
+.BR fclose "())"
+都会带来未定义的结果。
+.SH ERRORS
+.TP
+.B EBADF
+.I stream
+底层的文件描述符是无效的。
+.\"  This error cannot occur unless you are mixing ANSI C stdio operations and
+.\"  low-level file operations on the same stream. If you do get this error,
+.\"  you must have closed the stream's low-level file descriptor using
+.\"  something like close(fileno(fp)).
+.PP
+函数
+.B fclose
+也可能失败并置
+.I errno
+为
+.BR close (2),
+.BR write (2)
+或
+.BR fflush (3)
+指定的值。
+.SH "NOTES 要点"
+注意
+.B fclose
+仅仅刷新用户空间的由 C 库提供的缓冲。要保证数据被物理地存储到磁盘上,必须也刷新内核缓冲。例如,使用
+.BR sync (2)
+或
+.BR fsync (2).
+.SH "CONFORMING TO 标准参考"
+函数
+.B fclose
+遵循 ANSI X3.159-1989 (``ANSI C'') 标准。
+.SH "SEE ALSO 参见"
+.BR close (2),
+.BR fcloseall (3),
+.BR fflush (3),
+.BR fopen (3),
+.BR setbuf (3)
diff --git a/src/man3/fcloseall.3 b/src/man3/fcloseall.3
new file mode 100644
index 0000000..c50d83a
--- /dev/null
+++ b/src/man3/fcloseall.3
@@ -0,0 +1,67 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fclose.3	6.7 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:19:14 1993, faith at cs.unc.edu
+.\" Modified to be fcloseall(3) by Nicol??s Lichtmaier <nick at debian.org> Fri Apr 10 1998
+.\"
+.TH FCLOSE 3  1998-04-10 "GNU" "Linux Programmer's Manual"
+.SH NAME
+fcloseall \- 关闭所有打开的流
+.SH "SYNOPSIS 总览"
+.B #define _GNU_SOURCE
+.sp
+.B #include <stdio.h>
+.sp
+.B int fcloseall(void);
+.SH "DESCRIPTION 描述"
+函数
+.B fcloseall
+将所有打开的流与它们底层的文件或功能集合断开。任何缓冲的数据都将首先被写入,使用
+.BR fflush (3)
+。注意标准流 (stdin,stdout 和 stderr) 也被关闭。
+.SH "RETURN VALUE 返回值"
+这个函数总是返回 0。
+.SH "SEE ALSO 参见"
+.BR fclose (3),
+.BR close (2),
+.BR fflush (3),
+.BR fopen (3),
+.BR setbuf (3)
+.SH "CONFORMING TO 标准参考"
+函数
+.B fcloseall
+是一个 GNU 扩展。
diff --git a/src/man3/fdopen.3 b/src/man3/fdopen.3
new file mode 100644
index 0000000..9a40124
--- /dev/null
+++ b/src/man3/fdopen.3
@@ -0,0 +1 @@
+.so man3/fopen.3
diff --git a/src/man3/feof.3 b/src/man3/feof.3
new file mode 100644
index 0000000..3a95cca
--- /dev/null
+++ b/src/man3/feof.3
@@ -0,0 +1 @@
+.so man3/ferror.3
diff --git a/src/man3/ferror.3 b/src/man3/ferror.3
new file mode 100644
index 0000000..950c9bf
--- /dev/null
+++ b/src/man3/ferror.3
@@ -0,0 +1,108 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)ferror.3	6.8 (Berkeley) 6/29/91
+.\"
+.\"
+.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith at cs.unc.edu
+.\" Added remark on EBADF for fileno, aeb, 2001-03-22
+.\"
+.TH FERROR 3  2001-10-16 "" "Linux Programmer's Manual"
+.SH NAME
+clearerr, feof, ferror, fileno \- 检测和重置流状态
+.SH "SYNOPSIS 总览"
+.B #include <stdio.h>
+.sp
+.BI "void clearerr(FILE *" stream );
+.br
+.BI "int feof(FILE *" stream );
+.br
+.BI "int ferror(FILE *" stream );
+.br
+.BI "int fileno(FILE *" stream );
+.SH "DESCRIPTION 描述"
+函数
+.B clearerr
+清除
+.IR stream
+指向的流中的文件结束标记和错误标记。
+.PP
+函数
+.B feof
+测试
+tests the end-of-file indicator for the stream pointed to by
+.IR stream
+指向的流中的文件结束标记,如果已设置就返回非零值。文件结束标记只能用函数
+.BR clearerr
+清除。
+.PP
+函数
+.B ferror
+测试
+.IR stream
+指向的流中的错误标记,如果已设置就返回非零值。错误标记只能用函数
+.B clearerr
+重置。
+.PP
+函数
+.B fileno
+检测
+.I stream
+参数,返回它的整数形式的文件描述符。
+.PP
+关于对应的非锁定函数,请参见
+.BR unlocked_stdio (3)
+。
+.SH "ERRORS 错误"
+这些函数不应当失败,它们不设置外部变量
+.IR errno
+。(但是,如果
+.B fileno
+检测到它的参数不是有效的流,它必须返回 \-1,并且将
+.I errno
+设置为
+.BR EBADF
+。)
+.SH "CONFORMING TO 标准参考"
+函数
+.BR clearerr ,
+.BR feof ,
+以及
+.BR ferror
+遵循 X3.159-1989 (``ANSI C'') 标准。
+.SH "SEE ALSO 参见"
+.BR open (2),
+.BR unlocked_stdio (3),
+.BR stdio (3)
diff --git a/src/man3/fflush.3 b/src/man3/fflush.3
new file mode 100644
index 0000000..69bf655
--- /dev/null
+++ b/src/man3/fflush.3
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fflush.3	5.4 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith at cs.unc.edu
+.\"
+.\" Modified 2000-07-22 by Nicol??s Lichtmaier <nick at debian.org>
+.\" Modified 2001-10-16 by John Levon <moz at compsoc.man.ac.uk>
+.\"
+.TH FFLUSH 3  1993-11-29 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+fflush \- 刷新一个流
+.SH "SYNOPSIS 总览"
+.B #include <stdio.h>
+.sp
+.BI "int fflush(FILE *" stream );
+.SH "DESCRIPTION 描述"
+函数
+.B fflush
+强制在所给的输出流或更新流
+.I stream
+上,写入在用户空间缓冲的所有数据,使用流的底层写功能函数。流的打开状态不受影响。
+.PP
+如果参数
+.I stream
+是
+.BR NULL ,
+.B fflush
+刷新
+.I 所有
+打开的流。
+.PP
+要使用非锁定的对应版本,参见
+.BR unlocked_stdio (3)
+。
+.SH "RETURN VALUE 返回值"
+成功执行返回 0,否则返回
+.B EOF
+并设置全局变量
+.I errno
+来指示错误发生。
+.SH ERRORS
+.TP
+.B EBADF
+.I Stream
+不是一个打开的流,或者不是用于输出。
+.PP
+函数
+.B fflush
+也可能失败并置
+.I errno
+为
+.BR write (2)
+指定的值。
+.SH "NOTES 要点"
+注意
+.B fflush()
+仅仅刷新用户空间的由 C 库提供的缓冲。要保证数据被物理地存储到磁盘上,必须也刷新内核缓冲。例如,使用
+.BR sync (2)
+或
+.BR fsync (2).
+.SH "CONFORMING TO 标准参考"
+函数
+.BR fflush()
+遵循 ANSI X3.159-1989 (``ANSI C'') 标准。
+.SH "SEE ALSO 参见"
+.BR fsync (2),
+.BR sync (2),
+.BR write (2),
+.BR fclose (3),
+.BR fopen (3),
+.BR setbuf (3),
+.BR unlocked_stdio (3)
diff --git a/src/man3/fileno.3 b/src/man3/fileno.3
new file mode 100644
index 0000000..3a95cca
--- /dev/null
+++ b/src/man3/fileno.3
@@ -0,0 +1 @@
+.so man3/ferror.3
diff --git a/src/man3/flockfile.3 b/src/man3/flockfile.3
new file mode 100644
index 0000000..b040a7d
--- /dev/null
+++ b/src/man3/flockfile.3
@@ -0,0 +1,64 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb at cwi.nl>.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH LOCKFILE 3  2001-10-18 "" "Linux Programmer's Manual"
+.SH NAME
+flockfile, ftrylockfile, funlockfile \- 为标准输入输出锁定文件 FILE
+.SH "SYNOPSIS 总览"
+.nf
+.B #include <stdio.h>
+.sp
+.BI "void flockfile(FILE *" filehandle );
+.br
+.BI "int ftrylockfile(FILE *" filehandle );
+.br
+.BI "void funlockfile(FILE *" filehandle );
+.fi
+.SH "DESCRIPTION 描述"
+标准输入输出库 stdio 函数是线程安全的。这是通过为每个文件对象 FILE 赋予一个锁定计数和 (当锁定计数非零时) 一个所有者线程来实现的。对每个库函数调用,这些函数等待直到文件对象 FILE 不再被一个不同的线程锁定,然后锁定它,进行所需的 I/O 操作,再次对它解锁。
+.LP
+(注意:这个锁定与由函数
+.BR flock (2)
+和
+.BR lockf (3)
+实现的锁定无关。)
+.LP
+所有这些操作对 C 程序员来说都是不可见的,但是有两种理由,需要进行更加细节的控制。其一,也许某个线程需要进行不可分割的一系列 I/O 操作,不应当被其他线程的 I/O 所终端。其二,出于效率因素,应当避免进行过多的锁定来提高效率。
+.LP
+为此,一个线程可以显式地锁定文件对象 FILE,接着进行它的一系列 I/O 操作,然后解锁。这样可以避免其他线程干扰。如果这样做的原因是需要达到更高的效率,应当使用 stdio 函数的非锁定版本来进行 I/O 操作:使用 \fIgetc_unlocked\fP() 和 \fIputc_unlocked\fP() 来代替 \fIgetc\fP() 和 \fIputc\fP()。
+.LP
+函数 \fBflockfile()\fP 等待 *\fIfilehandle\fP 不再被其他的线程锁定,然后使当前线程成为 *\fIfilehandle\fP 的所有者,然后增加锁定计数 lockcount。
+.LP
+函数 \fBfunlockfile()\fP 减少锁定计数。
+.LP
+函数 \fBftrylockfile()\fP 是 \fBflockfile()\fP 的非锁定版本。它在其他线程拥有 *\fIfilehandle\fP 时不做任何处理,否则取得所有权并增加锁定计数。
+.SH "RETURN VALUE 返回值"
+函数 \fBftrylockfile()\fP 返回零,如果成功的话 (获得了锁定);如果失败就返回非零。
+.SH ERRORS
+无。
+.SH AVAILABILITY
+这些函数当定义了 _POSIX_THREAD_SAFE_FUNCTIONS 时可用。它们存在于 libc 5.1.1 之后的 libc 版本中,以及 glibc 2.0 之后的 glibc 版本中
+.SH "CONFORMING TO 标准参考"
+POSIX.1
+.SH "SEE ALSO 参见"
+.BR unlocked_stdio (3)
+
diff --git a/src/man3/fopen.3 b/src/man3/fopen.3
new file mode 100644
index 0000000..753a996
--- /dev/null
+++ b/src/man3/fopen.3
@@ -0,0 +1,210 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)fopen.3	6.8 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith at cs.unc.edu
+.\" Modified, aeb, 960421, 970806
+.\" Modified, joey, aeb, 2002-01-03
+.\"
+.TH FOPEN 3  2002-01-03 "BSD MANPAGE" "Linux Programmer's Manual"
+.SH NAME
+fopen, fdopen, freopen \- 打开流
+.SH "SYNOPSIS 总览"
+.B #include <stdio.h>
+.sp
+.BI "FILE *fopen(const char *" path ", const char *" mode );
+.br
+.BI "FILE *fdopen(int " fildes ", const char *" mode );
+.br
+.BI "FILE *freopen(const char *" path ", const char *" mode ", FILE *" stream );
+.SH "DESCRIPTION 描述"
+函数
+.B fopen
+打开文件名为
+.I path
+指向的字符串的文件,将一个流与它关联。
+.PP
+参数
+.I mode
+指向一个字符串,以下列序列之一开始
+(序列之后可以有附加的字符):
+.TP
+.B r
+打开文本文件,用于读。流被定位于文件的开始。
+.TP
+.B r+
+打开文本文件,用于读写。流被定位于文件的开始。
+.TP
+.B w
+将文件长度截断为零,或者创建文本文件,用于写。流被定位于文件的开始。
+.TP
+.B w+
+打开文件,用于读写。如果文件不存在就创建它,否则将截断它。流被定位于文件的开始。
+.TP
+.B a
+打开文件,用于追加 (在文件尾写)。如果文件不存在就创建它。流被定位于文件的末尾。
+.TP
+.B a+
+打开文件,用于追加 (在文件尾写)。如果文件不存在就创建它。读文件的初始位置是文件的开始,但是输出总是被追加到文件的末尾。
+
+.PP
+字符串
+.I mode
+也可以包含字母 ``b'' 作为最后一个字符,或者插入到上面提到的任何双字符的字符串的两个字符中间。这样只是为了和 ANSI X3.159-1989 (``ANSI C'') 标准严格保持兼容,没有实际的效果;在所有的遵循 POSIX 的系统中,``b'' 都被忽略,包括 Linux。(其他系统可能将文本文件和二进制文件区别对待,如果在进行二进制文件的 I/O,那么添加 ``b'' 是个好主意,因为你的程序可能会被移植到非 Unix 环境中。)
+.PP
+任何新建的文件将具有模式
+.BR S_IRUSR \&| S_IWUSR \&|  S_IRGRP \&|  S_IWGRP \&| S_IROTH \&| S_IWOTH
+(0666),然后以进程的掩码值 umask 加以修改 (参见
+.BR umask (2))
+。
+.PP
+在读/写流上进行的读和写操作可以以任意的顺序混合使用。注意 ANSI C 要求文件定位函数只能插入在输出和输入之间,除非输入操作遇到了文件结束符。(如果没有遇到这种情况,那么读取总是能返回除了最近写入内容之外的结果。) 因此,最好 (在 Linux 中有时是必须的) 在对这样的流进行的写和读操作之间加入一个
+.B fseek
+或是
+.B fgetpos
+操作。这个操作可以是对显式的定位的调用 (例如在 \fIfseek(..., 0L, SEEK_CUR)\fR 中那样),利用同时发生的副作用。(?)
+.PP
+以追加方式打开文件 (以 \fBa\fP 作为
+.IR mode
+的第一个字符) 将使得所有后续的对这个流的写操作发生在文件末尾,就好像在写之前调用了
+.RS
+fseek(stream,0,SEEK_END);
+.RE
+一样。
+.PP
+函数
+.B fdopen
+将一个流关联到已存在的文件描述符,
+.IR fildes .
+流的模式
+.I mode
+(取值为 "r", "r+", "w", "w+", "a", "a+" 之一) 必须与文件描述符的模式想匹配。新的流的定位标识被设置为
+.IR fildes
+原有的值,错误和文件结束标记被清除。模式 "w" 或者 "w+" 不会截断文件。文件描述符不会被复制,在关闭由
+.B fdopen
+创建的流时,也不会被关闭。对共享内存对象实施
+.B fdopen
+的结果是未定义的。
+.PP
+函数
+.B freopen
+打开名称为
+.I path
+指向的字符串的文件,将它与
+.I stream
+指向的流关联。初始的流 (如果存在的话) 被关闭。参数
+.I mode
+与在函数
+.B fopen
+中用法一致。函数
+.B freopen
+主要的用处是改变与标准文本流
+.IR "" ( stderr ", " stdin ", 或 " stdout )
+相关联的文件
+.SH "RETURN VALUE 返回值"
+如果成功执行了
+.BR fopen ,
+.B fdopen
+和
+.B freopen
+将返回一个指向文件对象
+.B FILE
+的指针。否则,将返回
+.B NULL
+并将设置全局变量
+.I errno
+的值来指示错误发生。
+.SH ERRORS
+.TP
+.B EINVAL
+为
+.BR fopen ,
+.BR fdopen ,
+或
+.B freopen
+提供的参数
+.I mode
+非法。
+.PP
+函数
+.BR fopen ,
+.B fdopen
+和
+.B freopen
+也有可能失败并置
+.I errno
+为
+.BR malloc (3)
+指定的值。
+.PP
+函数
+.B fopen
+也有可能失败并置
+.I errno
+为
+.BR open (2)
+指定的值。
+.PP
+函数
+.B fdopen
+也有可能失败并置
+.I errno
+为
+.BR fcntl (2)
+指定的值。
+.PP
+函数
+.B freopen
+也有可能失败并置
+.I errno
+为
+.BR open (2),
+.BR fclose (3)
+和
+.BR fflush (3)
+指定的值。
+.SH "CONFORMING TO 标准参考"
+函数
+.B fopen
+和
+.B freopen
+遵循 ANSI X3.159-1989 (``ANSI C'') 标准。函数
+.B fdopen
+遵循 IEEE Std1003.1-1988 (``POSIX.1'') 标准。
+.SH "SEE ALSO 参见"
+.BR open (2),
+.BR fclose (3),
+.BR fileno (3)
diff --git a/src/man3/freopen.3 b/src/man3/freopen.3
new file mode 100644
index 0000000..9a40124
--- /dev/null
+++ b/src/man3/freopen.3
@@ -0,0 +1 @@
+.so man3/fopen.3
diff --git a/src/man3/iconv_close.3 b/src/man3/iconv_close.3
new file mode 100644
index 0000000..292a2a1
--- /dev/null
+++ b/src/man3/iconv_close.3
@@ -0,0 +1,43 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   GNU glibc-2 source code and manual
+.\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
+.\"
+.TH ICONV_CLOSE 3  "November 27, 1999" "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+iconv_close \- 关闭字符转换描述符
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <iconv.h>
+.sp
+.BI "int iconv_close (iconv_t " cd );
+.fi
+
+.SH "描述 (DESCRIPTION)"
+\fBiconv_close\fP 函数 关闭 之前 用 \fBiconv_open\fP 打开的
+转换 描述符, 并 释放 为其 分配 的 空间.
+
+.SH "返回值 (RETURN VALUE)"
+如果 成功, \fBiconv_close\fP 函数 返回 0. 如果 出错, 函数 设置 \fBerrno\fP
+变量 同时 返回 -1.
+
+.SH "遵循 (CONFORMING TO)"
+UNIX98
+
+.SH "参见 (SEE ALSO)"
+.BR iconv_open "(3), " iconv (3)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/3/21
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/iconv_open.3 b/src/man3/iconv_open.3
new file mode 100644
index 0000000..9398bf2
--- /dev/null
+++ b/src/man3/iconv_open.3
@@ -0,0 +1,123 @@
+.\" Copyright (c) Bruno Haible <haible at clisp.cons.org>
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" References consulted:
+.\"   GNU glibc-2 source code and manual
+.\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
+.\"
+.TH ICONV_OPEN 3  "May 6, 2001" "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+iconv_open \- 分配一个字符集转换的描述符
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <iconv.h>
+.sp
+.BI "iconv_t iconv_open (const char* " tocode ", const char* " fromcode );
+.fi
+
+.SH "描述 (DESCRIPTION)"
+\fBiconv_open\fP 函数 分配 一个 用于 把 \fIfromcode\fP 编码的 字符串
+转换成 \fItocode\fP 编码 的 转换 描述符.
+.PP
+\fIfromcode\fP 和 \fItocode\fP 所允许的值 以及 支持的 组合方式 都是 与
+系统 相关的. 对于 这个 libiconv 库, 它 支持 下面 的 编码, 也 支持 其
+所有 的 组合.
+.TP
+欧洲语言
+ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16},
+KOI8-R, KOI8-U, KOI8-RU,
+CP{1250,1251,1252,1253,1254,1257}, CP{850,866},
+Mac{Roman,CentralEurope,Iceland,Croatian,Romania},
+Mac{Cyrillic,Ukraine,Greek,Turkish},
+Macintosh
+.TP
+闪米特语言
+ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}
+.TP
+日文
+EUC-JP, SHIFT-JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
+.TP
+中文
+EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS,
+ISO-2022-CN, ISO-2022-CN-EXT
+.TP
+韩文
+EUC-KR, CP949, ISO-2022-KR, JOHAB
+.TP
+Armenian
+ARMSCII-8
+.TP
+Georgian
+Georgian-Academy, Georgian-PS
+.TP
+泰语
+TIS-620, CP874, MacThai
+.TP
+捞挝语
+MuleLao-1, CP1133
+.TP
+越南语
+VISCII, TCVN, CP1258
+.TP
+特定平台
+HP-ROMAN8, NEXTSTEP
+.TP
+Full Unicode
+.nf
+UTF-8
+UCS-2, UCS-2BE, UCS-2LE
+UCS-4, UCS-4BE, UCS-4LE
+UTF-16, UTF-16BE, UTF-16LE
+UTF-32, UTF-32BE, UTF-32LE
+UTF-7
+JAVA
+.fi
+.TP
+用 \fBuint16_t\fP 或 \fBuint32_t\fP 表示的 Unicode
+(其 字节顺序 和 对齐方式 与 具体 机器 有关)
+UCS-2-INTERNAL, UCS-4-INTERNAL
+.TP
+用 \fBchar\fP 或 \fBwchar_t\fP 表示的 与 区域设置 相关的 编码
+(其 字节顺序 和 对齐方式 与 具体 机器 有关, 其 语意 与
+操作系统 和 当前 区域设置 中的 LC_CTYPE 有关)
+char, wchar_t
+.PP
+在 \fItocode\fP 后面 加上 "//TRANSLIT" 表示, 当 在目标 字符集
+中 不能 表示 一个 字符 时, 就用 同其 相似 的 一个 字符 来 代替.
+.PP
+其 返回的 转换 描述符 可以 被 \fBiconv\fP 多次 使用. 只要 没有 用
+\fBiconv_close\fP 将其 释放, 它 就是 有效的.
+.PP
+转换 描述符 包含了 转换的 状态. 在用 \fBiconv_open\fP 建立 一个 描述符
+时 状态为 初始态. \fBiconv\fP 会 改变 它的 状态. (这说明 一个 描述符
+不能在 多线程中 同时 使用.) 可以 把 NULL 作为 \fIinbuf\fP 传给
+\fBiconv\fP 来 使其 回到 初始态.
+
+.SH "返回值 (RETURN VALUE)"
+\fBiconv_open\fP 函数 返回 一个 新的 转换 描述符. 如果 发生 错误 则
+设置 \fBerrno\fP 变量 同时 返回 (iconv_t)(-1).
+
+.SH "错误 (ERRORS)"
+除了 一般的 错误, 还可能 有 下面的 错误:
+.TP
+.B EINVAL
+此系统 不支持 从 \fIfromcode\fP 到 \fItocode\fP 的 转换.
+
+.SH "遵循 (CONFORMING TO)"
+UNIX98
+
+.SH "参见 (SEE ALSO)"
+.BR iconv "(3), " iconv_close (3)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/3/21
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/setbuf.3 b/src/man3/setbuf.3
new file mode 100644
index 0000000..7724b5c
--- /dev/null
+++ b/src/man3/setbuf.3
@@ -0,0 +1,175 @@
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)setbuf.3	6.10 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 14:55:24 1993, faith at cs.unc.edu
+.\" Added section to BUGS, Sun Mar 12 22:28:33 MET 1995,
+.\"                   Thomas.Koenig at ciw.uni-karlsruhe.de
+.\" Correction,  Sun, 11 Apr 1999 15:55:18,
+.\"     Martin Vicente <martin at netadmin.dgac.fr>
+.\" Correction,  2000-03-03, Andreas Jaeger <aj at suse.de>
+.\" Added return value for setvbuf, aeb, 
+.\"
+.TH SETBUF 3  2001-06-09 "Linux" "Linux Programmer's Manual"
+.SH NAME
+setbuf, setbuffer, setlinebuf, setvbuf \- 流缓冲操作
+.SH "SYNOPSIS 总览"
+.na
+.B #include <stdio.h>
+.sp
+.BI "void setbuf(FILE *" stream ", char *" buf );
+.br
+.BI "void setbuffer(FILE *" stream ", char *" buf ", size_t "  size );
+.br
+.BI "void setlinebuf(FILE *" stream );
+.br
+.BI "int setvbuf(FILE *" stream ", char *" buf ", int " mode
+.BI ", size_t " size );
+.ad
+.SH "DESCRIPTION 描述"
+有三种类型的缓冲策略,它们是无缓冲,块缓冲和行缓冲。当输出流无缓冲时,信息在写的同时出现于目标文件或终端上;当是块缓冲时,字符被暂存,然后一起写入;当是行缓冲时,字符被暂存,直到要输出一个新行符,或者从任何与终端设备连接的流中 (典型的是 stdin) 读取输入时才输出。函数
+.BR fflush (3)
+可以用来强制提前输出。(参见
+.BR fclose (3))
+通常所有文件都是块缓冲的。当文件 I/O 操作在文件上发生时,将调用
+.BR malloc (3)
+,获得一个缓冲。如果流指向一个终端 (通常
+.I stdout
+都是这样),那么它是行缓冲的。标准错误流
+.I stderr
+默认总是无缓冲的。
+.PP
+函数
+.B setvbuf
+可以用在任何打开的流上,改变它的缓冲。参数
+.I mode
+必须是下列三个宏之一:
+.RS
+.TP
+.B _IONBF
+无缓冲
+.TP
+.B _IOLBF
+行缓冲
+.TP
+.B _IOFBF
+完全缓冲
+.RE
+.PP
+除非是无缓冲的文件,否则参数
+.I buf
+应当指向一个长度至少为
+.I size
+字节的缓冲;这个缓冲将取代当前的缓冲。如果参数
+.I buf
+是
+.BR NULL
+,只有这个模式会受到影响;下次 read 或 write 操作还将分配一个新的缓冲。函数
+.B setvbuf
+只能在打开一个流,还未对它进行任何其他操作之前使用。
+.PP
+其他三个函数调用是函数
+.BR setvbuf
+的别名,函数
+.B setbuf
+与使用下列语句完全等价:
+.PP
+.RS
+setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
+.RE
+.PP
+函数
+.B setbuffer
+与此相同,但是缓冲的长度由用户决定,而不是由默认值
+.BR BUFSIZ
+决定。函数
+.B setlinebuf
+与使用下列语句完全等价:
+.PP
+.RS
+setvbuf(stream, (char *)NULL, _IOLBF, 0);
+.RE
+.SH "RETURN VALUE 返回值"
+函数
+.B setvbuf
+成功执行时返回 0。它失败时可能返回任何值,但是当
+It can return any value on failure, but returns nonzero when
+.I mode
+不正确,或者不能实现请求时,必须返回非零值。它在失败时可能设置
+.I errno
+。其他函数没有返回值。
+.SH "CONFORMING TO 标准参考"
+函数
+.B setbuf
+和
+.B setvbuf
+遵循 ANSI X3.159-1989 (``ANSI C'') 标准。
+.SH BUGS
+函数
+.B setbuffer
+和
+.B setlinebuf
+无法移植到 4.2BSD 之前的 BSD 版本,在 Linux 中仅在 libc 4.5.21 之后的系统中可用。在 4.2BSD 和 4.3BSD 系统中,
+.B setbuf
+总是使用非最优的缓冲大小,应当避免使用它。
+.P
+在
+.I stream
+被关闭时,必须确保
+.I buf
+和它指向的空间仍然存在。这通常发生在程序终止时。
+.P
+例如,下列调用是非法的:
+.nf
+.sp
+#include <stdio.h>
+int main()
+{
+    char buf[BUFSIZ];
+    setbuf(stdin, buf);
+    printf("Hello, world!\\n");
+    return 0;
+}
+.fi
+.sp
+.SH "SEE ALSO 参见"
+.BR fclose (3),
+.BR fflush (3),
+.BR fopen (3),
+.BR fread (3),
+.BR malloc (3),
+.BR printf (3),
+.BR puts (3)
diff --git a/src/man3/setbuffer.3 b/src/man3/setbuffer.3
new file mode 100644
index 0000000..dc02d9e
--- /dev/null
+++ b/src/man3/setbuffer.3
@@ -0,0 +1 @@
+.so man3/setbuf.3
diff --git a/src/man3/setlinebuf.3 b/src/man3/setlinebuf.3
new file mode 100644
index 0000000..dc02d9e
--- /dev/null
+++ b/src/man3/setlinebuf.3
@@ -0,0 +1 @@
+.so man3/setbuf.3
diff --git a/src/man3/setlocale.3 b/src/man3/setlocale.3
new file mode 100644
index 0000000..8d62bab
--- /dev/null
+++ b/src/man3/setlocale.3
@@ -0,0 +1,185 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\" and 1999 by Bruno Haible (haible at clisp.cons.org)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 18:20:12 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Tue Jul 15 16:49:10 1997 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Sun Jul  4 14:52:16 1999 by Bruno Haible (haible at clisp.cons.org)
+.\" Modified Tue Aug 24 17:11:01 1999 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Tue Feb  6 03:31:55 2001 by Andries Brouwer (aeb at cwi.nl)
+.TH SETLOCALE 3  1999-07-04 "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+setlocale \- 设置当前的区域选项
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <locale.h>
+.sp
+.BI "char *setlocale(int " category ", const char * " locale ");"
+.fi
+
+.SH "描述 (DESCRIPTION)"
+.B setlocale()
+函数 用来 设置 或者 查询 程序 当前 的 区域选项.
+.PP
+如果
+.I locale
+不是
+.BR NULL ,
+程序 就会 根据 参数 更改 相应的 区域选项.
+.I category
+参数 指定 区域选项 的 哪一部分 需要 更改.
+.TP
+.B LC_ALL
+代表 所有 部分.
+.TP
+.B LC_COLLATE
+代表 正则 表达式 匹配 (和 范围 表达式[range expressions] 以及 字符类[classes]
+有关系) 和 字符串 排序.
+.TP
+.B LC_CTYPE
+代表 正则 表达式 匹配, 字符类(character classification), 转换, 区分大小写 的
+比较, 以及 宽字符 函数.
+.TP
+.B LC_MESSAGES
+代表 可以 本地化的 消息 (自然语言).
+.TP
+.B LC_MONETARY
+代表 货币 格式.
+.TP
+.B LC_NUMERIC
+代表 数字 格式 (比如 小数点 和 千位分组符).
+.TP
+.B LC_TIME
+代表 时间 和 日期 格式.
+.PP
+.I locale
+参数 是 一个 指向 字符串的 指针. 此 字符串 为
+.IR category
+需要的 设置. 此 字符串 可以是 一个 众所周知 的 区域选项 常量, 如 "C" 或 "da_DK"
+(见下), 也可以是 另外 一个
+.BR setlocale
+调用 返回 的 字符串.
+.PP
+如果
+.I locale
+是
+.BR """""" ,
+需要 更改 的 部分 会根据 环境变量 做 相应的 设置. 具体的 和 实现 有关. 对于
+glibc 来说, 首先 查看
+.\" [This is false on my system - must check which library versions do this]
+.\" if
+.\" .I category
+.\" is LC_MESSAGES, the environment variable LANGUAGE is inspected,
+.\" then
+环境变量 LC_ALL (不管
+.IR category ), 然后 查看 和 category
+(LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME)
+同名的 环境变量, 最后 查看 环境变量 LANG. 以 先查到 的 环境变量 为准. 如果 其值
+不是 一个 有效 的 区域选项, 区域选项 将 不会改变,
+.B setlocale
+会 返回 NULL.
+.\" The environment variable LANGUAGE may contain several, colon-separated,
+.\" locale names.
+.PP
+标准 区域选项
+.B """C"""
+和
+.B """POSIX"""
+是 可移植的; 它的 LC_CTYPE 部分 对应的 是 7 位的 ASCII 字符集.
+.PP
+一个 典型的 区域选项 有 如下的 格式:
+.IR language "[_" territory "][." codeset "][@" modifier "],"
+其中
+.I language
+是 一个 ISO 639 语言 代码,
+.I territory
+是 一个 ISO 3166 国家 代码,
+.I codeset
+是 一个 象
+.B "ISO-8859-1"
+或者
+.BR "UTF-8"
+的 字符集 或者 编码 标识符. 用 "locale -a", cf.\&
+.BR locale (1)
+可以 获得 一个 系统 支持的 区域选项 的 列表.
+.PP
+如果
+.I locale
+是
+.BR NULL ,
+意味着 只是 查询 当前 的 区域选项 而不 更改它.
+.PP
+当 main 程序 开始的 时候 可移植的
+.B """C"""
+区域选项 作为 默认值 被设置. 一个 程序 可以 在 初始化 之后 调用
+.B setlocale(LC_ALL, """""")
+函数, 并且 从
+.B localeconv()
+调用 的 返回 中 获得 和 区域选项 相关的 信息, 如果
+.BR "MB_CUR_MAX > 1"
+就用 多字节 和 宽字节 函数 来 处理 文本, 用
+.BR strcoll() ", " wcscoll()
+或者
+.BR strxfrm() ", " wcsxfrm()
+来 比较 字符串, 这样 就可以 使 程序 有 较好的 移植性.
+
+.SH "返回值 (RETURN VALUE)"
+一个 成功的
+.B setlocale()
+调用 会 返回 一个 表示 当前 区域选项 的 字符串 (指针). 这个 字符串 可能 是在
+静态 存储区 中 分配 的. 之后 用 相应的 category 和 这个 字符串 作为 参数 再去
+调用 这个 函数 会 重新 把 程序 区域选项 的 相应 部分 恢复. 如果 请求 不能 完成
+将会 返回
+.B NULL .
+
+.SH "遵循 (CONFORMING TO)"
+ANSI C, POSIX.1
+
+.SH "注意 (NOTES)"
+Linux (也就是, GNU libc) 支持 可移植的
+.BR """C""" " 和 " """POSIX"""
+区域选项. 在 以前 它 曾经 支持 欧洲 Latin-1 区域选项
+.B """ISO-8859-1"""
+(比如说 在 libc-4.5.21 和 libc-4.6.27 中), 和 俄罗斯的
+.B """KOI-8"""
+(更 准确点 是, "koi-8r") 区域选项 (比如 在 libc-4.6.27 中), 所以 设置 一个
+环境变量 LC_CTYPE=ISO-8859-1 就 能够 让 isprint() 返回 正确的 结果. 现在 不讲
+英语 的 欧洲人 会 比以前 更麻烦 一些, 他们 需要 安装 相应 的 区域选项 文件.
+
+.SH "参见 (SEE ALSO)"
+.BR locale (1),
+.BR localedef (1),
+.BR strcoll (3),
+.BR isalpha (3),
+.BR localeconv (3),
+.BR strftime (3),
+.BR charsets (4),
+.BR locale (7)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/12/2
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/setvbuf.3 b/src/man3/setvbuf.3
new file mode 100644
index 0000000..dc02d9e
--- /dev/null
+++ b/src/man3/setvbuf.3
@@ -0,0 +1 @@
+.so man3/setbuf.3
diff --git a/src/man3/stderr.3 b/src/man3/stderr.3
new file mode 100644
index 0000000..752ae27
--- /dev/null
+++ b/src/man3/stderr.3
@@ -0,0 +1 @@
+.so man3/stdin.3
diff --git a/src/man3/stdin.3 b/src/man3/stdin.3
new file mode 100644
index 0000000..33687d3
--- /dev/null
+++ b/src/man3/stdin.3
@@ -0,0 +1,104 @@
+.\" From dholland at burgundy.eecs.harvard.edu Tue Mar 24 18:08:15 1998
+.\"
+.\" This man page was written in 1998 by David A. Holland
+.\" and placed in the Public Domain. Polished a bit by aeb.
+.\"
+.Dd March 24, 1998
+.Dt STDIN 3
+.Os "Linux 2.0"
+.Sh NAME
+.Nm stdin ,
+.Nm stdout ,
+.Nm stderr
+.Nd 标准 I/O 流
+.Sh "SYNOPSIS 总览"
+.Fd #include <stdio.h>
+.Fd extern FILE *stdin;
+.Fd extern FILE *stdout;
+.Fd extern FILE *stderr;
+.Sh "DESCRIPTION 描述"
+通常,每个 Unix 程序在启动时都会打开三个流,一个用于输入,一个用于输出,一个用于打印诊断或错误消息。典型的,他们被连接到用户的终端 (参见
+.Xr tty 4 )
+但是也有可能指向文件或是其他设备,取决于父进程选择设置了什么 (参见 
+.Xr sh 1 
+的重定向 (``Redirection'') 章节。)
+.Pp
+输入流被称为 ``standard input''; 输出流被称为 ``standard output''; 错误流被称为 ``standard error''。这些名词通常简写为符号,用于引用这些文件,它们是
+.Nm stdin ,
+.Nm stdout ,
+和
+.Nm stderr .
+.Pp
+这些符号中,每一个都是
+.Xr stdio 3
+中的一个宏,类型是指向 FILE 的指针,可以用于类似
+.Xr fprintf 3
+或
+.Xr fread 3
+等函数中。
+.Pp
+由于 FILE 是一个对 Unix 文件描述符加以缓冲的包装,下层的文件也可以使用原始的 Unix 文件接口来存取。也就是,类似
+.Xr read 2
+和
+.Xr lseek 2 
+的函数。与流
+.Nm stdin ,
+.Nm stdout ,
+和
+.Nm stderr
+关联的整数形式的文件描述符分别是 0,1 还有 2。预处理器符号 STDIN_FILENO,STDOUT_FILENO 和 STDERR_FILENO 分别以它们为值,定义在 <unistd.h> 中。
+.Pp
+注意混合使用 FILE 和原始的文件描述符可能带来不可预料的结果,一般应当避免。(对于喜欢追根问底的人:POSIX.1 规范的 8.2.3 节详细地描述了这样的混合使用怎样才能不出错。) 一个简单的规则是,文件描述符由内核控制,而 stdio 仅仅是一个库。它的意思是,例如当调用 exec 之后,子进程可以继承所有打开的文件描述符,但是任何原有的流都不可再存取了。
+.Pp
+由于符号
+.Nm stdin ,
+.Nm stdout ,
+和
+.Nm stderr
+被指定为宏,为它们赋值将导致不可移植。利用库函数
+.Xr freopen 3
+,标准流可以用来指向不同的文件。引进这个函数专门用来为
+.Nm stdin ,
+.Nm stdout ,
+和
+.Nm stderr
+重新赋值。标准流在调用
+.Xr exit 3
+和程序正常中止时被关闭。
+.Sh "SEE ALSO 参见"
+.Xr sh 1 ,
+.Xr csh 1 ,
+.Xr open 2 ,
+.Xr fopen 3 ,
+.Xr stdio 3
+.Sh CONSIDERATIONS
+错误流
+.Nm stderr
+是非缓冲的。输出流
+.Nm stdout
+是行缓冲的,如果它指向一个终端。不完全的行只有在调用
+.Xr fflush 3
+或
+.Xr exit 3
+,或者打印了新行符之后才会显示。这样可能带来无法预料的结果,尤其是调试输出时。标准流 (或任何其他流) 的缓冲模式可以用函数
+.Xr setbuf 3
+或
+.Xr setvbuf 3
+来切换。注意当
+.Nm stdin
+与一个终端关联时,也许终端驱动中存在输入缓冲,与 stdio 缓冲完全无关。(确实如此,一般的终端输入在内核中是行缓冲的。) 内核对输入的控制可以通过对
+.Xr tcsetattr 3
+的调用来修改,参见
+.Xr stty 1 ,
+和
+.Xr termios 3
+。
+.Sh "CONFORMING TO 标准参考"
+宏
+.Nm stdin ,
+.Nm stdout ,
+和
+.Nm stderr
+遵循
+.St -ansiC
+标准,这个标准同时规定了这三个流应当在程序启动时打开。
diff --git a/src/man3/stdio.3 b/src/man3/stdio.3
new file mode 100644
index 0000000..07452bf
--- /dev/null
+++ b/src/man3/stdio.3
@@ -0,0 +1,324 @@
+.\" Copyright (c) 1990, 1991 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)stdio.3	6.5 (Berkeley) 5/6/91
+.\"
+.\" Converted for Linux, Mon Nov 29 16:07:22 1993, faith at cs.unc.edu
+.\" Modified, 2001-12-26, aeb
+.\"
+.TH STDIO 3  2001-12-26 "" "Linux Programmer's Manual"
+.SH NAME
+stdio \- 标准输入输出库函数
+.SH "SYNOPSIS 总览"
+.B #include <stdio.h>
+.sp
+.B FILE *stdin;
+.br
+.B FILE *stdout;
+.br
+.B FILE *stderr;
+.SH "DESCRIPTION 描述"
+标注 I/O 库函数提供了一个简单而有效的,带缓冲的流输出输出接口。输入和输出被映射为逻辑的数据流,物理的 I/O 特性则被隐藏起来。库中包含的函数与宏列在下面;更多信息可以从独立的 man 手册页中得到。
+.PP
+将一个流关联到一个外部文件 (可能是一个物理设备) 的方法是打开 (
+.I opening
+) 这个文件,其中可能牵涉到创建一个新文件。创建已有的文件使得文件中已有的内容被丢弃。如果文件支持定位请求 (例如磁盘文件;但终端不是这样),那么一个与文件关联的定位标记 (
+.I file position indicator
+) 被定位到文件的起始 (0 字节),除非以追加模式打开文件。使用追加模式时,究竟定位标记位于文件的开始还是结束是没有指定的。定位标记由后续的读、写和定位请求来维护。从流中输入时,就如同字符是连续地成功调用了函数
+.BR fgetc (3)
+而读入的;产生输出时,就如同所有字符是连续地成功调用了函数
+.BR fputc (3)
+而输出的。
+.PP
+将一个流与一个与之关联的文件断开的办法是关闭 (
+.I closing
+) 这个文件。在流与文件断开之前,输出流被刷新 (任何未写入的缓冲的内容都被传输给主机环境)。在文件被关闭之后,指向
+.B FILE
+对象的指针的值是不确定的 (无用数据)。
+.PP
+一个文件可以继续被相同的或是不同的程序实体再次打开,它的内容可以被恢复或者修改 (如果它可以被重定位到文件开始的话)。如果 main 函数返回到它最初的调用者,或者调用了函数
+.BR exit (3)
+,在程序终止前,所有打开的文件都将被关闭 (因此所有的输出流都被刷新)。其他终止程序的方法,例如
+.BR abort (3)
+不会进行正常的关闭文件操作。
+.PP
+在程序启动时,会预先定义三个文本流,它们不需要显式地打开 \(em
+.I 标准输入
+(用于读入常规内容),\(em
+.I 标准输出
+(用于输出常规内容),以及
+.I 标准错误
+(用于输出诊断信息)。这些流的缩写是
+.IR stdin,stdout
+和
+.IR stderr
+。在打开时,标准错误流不会完全缓冲;当且仅当流不是一个交互的设备时,标准输入和标准输出流才被完全缓冲。
+.PP
+指向终端设备的输出流总是默认使用行缓冲;未定的输出总是在指向一个终端设备的输入流被读取时自动被写入。如果在一个输出终端上打印了一行的一部分,然后运行了大量的计算后,应当在退出和计算前
+.BR fflush (3)
+标准输出,使得输出可以显示出来。(?)
+.PP
+标准输入输出库
+.B stdio
+是函数库
+.B libc
+的一部分,需要时可以被编译器
+.BR cc (1)
+和
+.BR pc (1)
+自动加载。下列手册页的
+.B "SYNOPSIS 总览"
+段落会指出要包含哪些文件,函数定义的格式,以及它们受到哪些外部变量的影响。
+.PP
+下列为已定义的宏;如果不用
+.BR #undef
+取消这些名称的当前定义的话,是不能重新使用它们的:
+.BR BUFSIZ ,
+.BR EOF ,
+.BR FILENAME_MAX ,
+.BR FOPEN_MAX ,
+.BR L_cuserid ,
+.BR L_ctermid ,
+.BR L_tmpnam,
+.BR NULL ,
+.BR SEEK_END ,
+.BR SEEK_SET ,
+.BR SEE_CUR ,
+.BR TMP_MAX ,
+.BR clearerr ,
+.BR feof ,
+.BR ferror ,
+.BR fileno ,
+.BR fropen ,
+.BR fwopen ,
+.BR getc ,
+.BR getchar ,
+.BR putc ,
+.BR putchar ,
+.BR stderr ,
+.BR stdin ,
+.BR stdout .
+另外,还有与这些宏的功能对应的,函数形式的版本
+.BR feof ,
+.BR ferror ,
+.BR clearerr ,
+.BR fileno ,
+.BR getc ,
+.BR getchar ,
+.BR putc ,
+和
+.B putchar
+,在显式地取消宏的定义时,可以使用它们。
+.SH "LIST OF FUNCTIONS 函数列表"
+.TP 10n
+.B "Function 函数"
+.B "Description 描述"
+.TP
+.B clearerr
+检测并重置流状态
+.TP
+.B fclose
+关闭流
+.TP
+.B fdopen
+打开流
+.TP
+.B feof
+检测并重置流状态
+.TP
+.B ferror
+检测并重置流状态
+.TP
+.B fflush
+刷新流
+.TP
+.B fgetc
+从输入流中获取下一个字符或词
+.\" .TP
+.\" .B fgetline
+.\" get a line from a stream (BSD only; renamed to fgetln())
+.TP
+.B fgetpos
+重定位流
+.TP
+.B fgets
+从流中获取一行
+.TP
+.B fileno
+返回流参数的整数形式的描述符
+.TP
+.B fopen
+打开流
+.TP
+.B fprintf
+按照格式输出常规内容
+.TP
+.B fpurge
+刷新流
+.TP
+.B fputc
+向流输出一个字符或词
+.TP
+.B fputs
+向流输出一行
+.TP
+.B fread
+二进制输入/输出
+.TP
+.B freopen
+打开流
+.TP
+.B fropen
+打开流
+.TP
+.B fscanf
+按照格式输入常规内容
+.TP
+.B fseek
+重定位流
+.TP
+.B fsetpos
+重定位流
+.TP
+.B ftell
+重定位流
+.TP
+.B fwrite
+二进制输入/输出
+.TP
+.B getc
+从输入流中获取下一个字符或词
+.TP
+.B getchar
+从输入流中获取下一个字符或词
+.TP
+.B gets
+从流中获取一行
+.TP
+.B getw
+从输入流中获取下一个字符或词
+.TP
+.B mktemp
+创建 (唯一的) 临时文件名
+.TP
+.B perror
+系统错误消息
+.TP
+.B printf
+按照格式输出常规内容
+.TP
+.B putc
+向流输出一个字符或词
+.TP
+.B putchar
+向流输出一个字符或词
+.TP
+.B puts
+向流输出一行
+.TP
+.B putw
+向流输出一个字符或词
+.TP
+.B remove
+删除目录项
+.TP
+.B rewind
+重定位流
+.TP
+.B scanf
+按照格式输入常规内容
+.TP
+.B setbuf
+流缓冲操作
+.TP
+.B setbuffer
+流缓冲操作
+.TP
+.B setlinebuf
+流缓冲操作
+.TP
+.B setvbuf
+流缓冲操作
+.TP
+.B sprintf
+按照格式输出常规内容
+.TP
+.B sscanf
+按照格式输入常规内容
+.TP
+.B strerror
+系统错误消息
+.TP
+.B sys_errlist
+系统错误消息
+.TP
+.B sys_nerr
+系统错误消息
+.TP
+.B tempnam
+临时文件控制
+.TP
+.B tmpfile
+临时文件控制
+.TP
+.B tmpnam
+临时文件控制
+.TP
+.B ungetc
+向输入流中退回字符
+.TP
+.B vfprintf
+按照格式输出常规内容
+.TP
+.B vfscanf
+按照格式输入常规内容
+.TP
+.B vprintf
+按照格式输出常规内容
+.TP
+.B vscanf
+按照格式输入常规内容
+.TP
+.B vsprintf
+按照格式输出常规内容
+.TP
+.B vsscanf
+按照格式输入常规内容
+.SH "CONFORMING TO 标准参考"
+函数库
+.B stdio
+遵循 ANSI X3.159-1989 (``ANSI C'') 标准。
+.SH "SEE ALSO 参见"
+.BR open (2),
+.BR close (2),
+.BR read (2),
+.BR write (2),
+.BR stdout (3)
diff --git a/src/man3/stdout.3 b/src/man3/stdout.3
new file mode 100644
index 0000000..752ae27
--- /dev/null
+++ b/src/man3/stdout.3
@@ -0,0 +1 @@
+.so man3/stdin.3
diff --git a/src/man3/strcoll.3 b/src/man3/strcoll.3
new file mode 100644
index 0000000..26b6726
--- /dev/null
+++ b/src/man3/strcoll.3
@@ -0,0 +1,67 @@
+.\" Copyright 1993 David Metcalfe (david at prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sun Jul 25 10:40:44 1993 by Rik Faith (faith at cs.unc.edu)
+.TH STRCOLL 3  1993-04-12 "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+strcoll \- 用当前的区域选项来比较两个字符串
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <string.h>
+.sp
+.BI "int strcoll(const char *" s1 ", const char *" s2 );
+.fi
+
+.SH "描述 (DESCRIPTION)"
+\fBstrcoll()\fP 函数 是用来 比较 \fIs1\fP 和 \fIs2\fP 两个 字符串的.
+如果 \fIs1\fP 不为空, 它会 返回 一个 小于, 等于 或者 大于 零的 整数 分别来
+表示 它 小于, 等于 或者 大于 \fIs2\fP. 它是 根据 程序 当前的 区域选项 中的
+\fILC_COLLATE\fP 来 比较的. (见 \fBsetlocale\fP(3)).
+
+.SH "返回值 (RETURN VALUE)"
+如果 \fIs1\fP 不为空, \fBstrcoll()\fP 函数 会 返回 一个 小于, 等于 或者 大于
+零的 整数 分别来 表示 它 小于, 等于 或者 大于 \fIs2\fP. 每个 字符串 都根据
+当前的 区域选项 来解释.
+
+.SH "遵循 (CONFORMING TO)"
+SVID 3, BSD 4.3, ISO 9899
+
+.SH "注意 (NOTES)"
+如果 区域选项 是 \fI"POSIX"\fP 或者 \fI"C"\fP, 那么 \fBstrcoll()\fP 同
+\fBstrcmp()\fP 是等价的.
+
+.SH "参见 (SEE ALSO)"
+.BR bcmp "(3), " memcmp "(3), " strcasecmp "(3), " strcmp (3),
+.BR strxfrm "(3), " setlocale (3)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/1/28
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/strxfrm.3 b/src/man3/strxfrm.3
new file mode 100644
index 0000000..1b6b41d
--- /dev/null
+++ b/src/man3/strxfrm.3
@@ -0,0 +1,68 @@
+.\" Copyright 1993 David Metcalfe (david at prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sun Jul 25 10:41:28 1993 by Rik Faith (faith at cs.unc.edu)
+.TH STRXFRM 3  1993-04-12 "GNU" "Linux Programmer's Manual"
+
+.SH NAME
+strxfrm \- 转换字符串
+
+.SH "总览 (SYNOPSIS)"
+.nf
+.B #include <string.h>
+.sp
+.BI "size_t strxfrm(char *" dest ", const char *" src ", size_t " n );
+.fi
+
+.SH "描述 (DESCRIPTION)"
+\fBstrxfrm()\fP 函数 把 字符串 \fIsrc\fP 转换 成 另外 一种 形式. 用
+\fBstrcmp()\fP 来比较 两个 转换后的 字符串 与 用 \fBstrcoll()\fP 来比较 它们
+转换前的 字符串 的 返回值 是 一样的. 转换后的 字符串的 前 \fIn\fP 个 字符
+会存放于 \fIdest\fP 中. 它是 根据 程序 当前的 区域选项 中的
+\fILC_COLLATE\fP 来 转换的. (见 \fBsetlocale\fP(3)).
+
+.SH "返回值 (RETURN VALUE)"
+\fBstrxfrm()\fP 函数 返回 除去 结尾的 `\\0' 字符, 用来 存储 转换后的 字符串
+所 需要的 字节数. 如果 返回值 大于 或 等于 \fIn\fP, \fIdest\fP 中的 内容
+就是 不确定的.
+
+.SH "遵循 (CONFORMING TO)"
+SVID 3, BSD 4.3, ISO 9899
+
+.SH "注意 (NOTES)"
+如果 区域选项 是 \fI"POSIX"\fP 或者 \fI"C"\fP, 那么 \fBstrxfrm()\fP 同
+用 \fBstrncpy()\fP 来 拷贝 字符串 是等价的.
+
+.SH "参见 (SEE ALSO)"
+.BR bcmp "(3), " memcmp "(3), " strcasecmp "(3), " strcmp (3),
+.BR strcoll "(3), " setlocale (3)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2002/1/28
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man3/ulimit.3 b/src/man3/ulimit.3
new file mode 100644
index 0000000..900b059
--- /dev/null
+++ b/src/man3/ulimit.3
@@ -0,0 +1,62 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1996 Andries Brouwer (aeb at cwi.nl)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Moved to man3, aeb, 980612
+.\"
+.TH ULIMIT 3 "12 June 1998" "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+ulimit \- 获取和改变用户的限制设定
+.SH 大纲
+.B #include <ulimit.h>
+.sp
+.BI "long ulimit(int " cmd ", long " newlimit );
+.SH 描述
+警告: 这个函数已经被废弃. glibc 不再提供这个包含文件. 使用 getrlimit(2), 
+setrlimit(2) 和 sysconf(3) 代替这个函数. 相关shell命令
+.BR ulimit ,
+参见
+.BR bash (1).
+
+使用
+.B ulimit
+可以获得或改变当前进程的限制设定.
+.I cmd
+参数可以是下列值中的一个:
+.TP
+.B UL_GETFSIZE 
+返回文件大小的限制 (以512字节为单位).
+.TP
+.B UL_SETFSIZE
+设定文件大小的限制.
+.TP
+.B 3
+(Linux不支持)
+返回数据段可以使用的最大地址.
+.TP
+.B 4
+(支持,但没有定义符号常量) 
+返回调用本函数的进程可以打开的最大文件数.
+
+.SH "返回值"
+如果执行成功
\ No newline at end of file
diff --git a/src/man3/unlocked_stdio.3 b/src/man3/unlocked_stdio.3
new file mode 100644
index 0000000..6e595cc
--- /dev/null
+++ b/src/man3/unlocked_stdio.3
@@ -0,0 +1,90 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb at cwi.nl>.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH UNLOCKED_STDIO 3  2001-10-18 "" "Linux Programmer's Manual"
+.SH NAME
+*_unlocked \- 非锁定的标准输入输出函数
+.SH "SYNOPSIS 总览"
+.nf
+.B #include <stdio.h>
+.sp
+.BI "int getc_unlocked(FILE *" stream );
+.BI "int getchar_unlocked(void);"
+.BI "int putc_unlocked(int " c ", FILE *" stream );
+.BI "int putchar_unlocked(int " c );
+.sp
+.BR "#define _BSD_SOURCE" " /* or _SVID_SOURCE or _GNU_SOURCE */
+.B #include <stdio.h>
+.sp
+.BI "void clearerr_unlocked(FILE *" stream );
+.BI "int feof_unlocked(FILE *" stream );
+.BI "int ferror_unlocked(FILE *" stream );
+.BI "int fileno_unlocked(FILE *" stream );
+.BI "int fflush_unlocked(FILE *" stream );
+.BI "int fgetc_unlocked(FILE *" stream );
+.BI "int fputc_unlocked(int " c ", FILE *" stream );
+.BI "size_t fread_unlocked(void *" ptr ", size_t " size ", size_t " n ,
+.BI "  FILE *" stream );
+.BI "size_t fwrite_unlocked(const void *" ptr ", size_t " size ", size_t " n ,
+.BI "  FILE *" stream );
+.sp
+.B #define _GNU_SOURCE
+.B #include <stdio.h>
+.sp
+.BI "char *fgets_unlocked(char *" s ", int " n ", FILE *" stream );
+.BI "int fputs_unlocked(const char *" s ", FILE *" stream );
+.sp
+.B #define _GNU_SOURCE
+.B #include <wchar.h>
+.sp
+.BI "wint_t getwc_unlocked(FILE *" stream );
+.BI "wint_t getwchar_unlocked(void);"
+.BI "wint_t fgetwc_unlocked(FILE *" stream );
+.BI "wint_t fputwc_unlocked(wchar_t " wc ", FILE *" stream );
+.BI "wint_t putwc_unlocked(wchar_t " wc ", FILE *" stream );
+.BI "wint_t putwchar_unlocked(wchar_t " wc );
+.BI "wchar_t *fgetws_unlocked(wchar_t *" ws ", int " n ", FILE *" stream );
+.BI "int fputws_unlocked(const wchar_t *" ws ", FILE *" stream );
+.fi
+.SH "DESCRIPTION 描述"
+这些函数中每一个都与它没有 `_unlocked` 后缀的对应版本行为一致,但是它们不使用锁定 (它们不自行设置锁定,也不判断是否有其他函数设置的锁定) ,因此是非线程安全的。参见
+.BR flockfile (3)
+。
+.SH "CONFORMING TO 标准参考"
+下面四个函数 \fIgetc_unlocked\fP(), \fIgetchar_unlocked\fP(),
+\fIputc_unlocked\fP(), \fIputchar_unlocked\fP() 包含在 POSIX.1 中。非标准的
+.BR *_unlocked()
+变种在少数 Unix 系统中出现,较新的 glibc 中也提供了它们。
+.\" E.g., in HPUX 10.0. In HPUX 10.30 they are called obsolescent, and
+.\" moved to a compatibility library.
+.\" Available in HPUX 10.0: clearerr_unlocked, fclose_unlocked,
+.\" feof_unlocked, ferror_unlocked, fflush_unlocked, fgets_unlocked,
+.\" fgetwc_unlocked, fgetws_unlocked, fileno_unlocked, fputs_unlocked,
+.\" fputwc_unlocked, fputws_unlocked, fread_unlocked, fseek_unlocked,
+.\" ftell_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
+.\" getw_unlocked, getwc_unlocked, getwchar_unlocked, putc_unlocked,
+.\" putchar_unlocked, puts_unlocked, putws_unlocked, putw_unlocked,
+.\" putwc_unlocked, putwchar_unlocked, rewind_unlocked, setvbuf_unlocked,
+.\" ungetc_unlocked, ungetwc_unlocked.
+它们不应当被使用。
+.SH "SEE ALSO 参见"
+.BR flockfile (3)
diff --git a/src/man4/console_codes.4 b/src/man4/console_codes.4
new file mode 100644
index 0000000..86c348d
--- /dev/null
+++ b/src/man4/console_codes.4
@@ -0,0 +1,511 @@
+'\" t
+.\" Copyright (c)1996 Andries Brouwer <aeb at cwi.nl>, Mon Oct 31 22:13:04 1996
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" This is combined from many sources.
+.\" For Linux, the definitive source is of course console.c.
+.\" About vt100-like escape sequences in general there are
+.\" the ISO 6429 and ISO 2022 norms, the descriptions of
+.\" an actual vt100, and the xterm docs (ctlseqs.ms).
+.\" Substantial portions of this text are derived from a write-up
+.\" by Eric S.Raymond <esr at thyrsus.com>.
+.\"
+.\" Tiny correction, aeb, 961107.
+.\"
+.TH CONSOLE_CODES 4 "October 31, 1996" "Linux" "Linux Programmer's Manual"
+.SH NAME 名称
+控制终端代码 \- Linux 控制终端转义和控制序列
+.SH DESCRIPTION 描述
+Linux控制台实现了VT102和ECMA-48/ISO 6429/ANSI X3.64终端控制的子集,
+这个子集很庞大,当然还有Linux自己私有的控制序列,以改变颜色配置,字符
+集映像,等等.在下面将要给出的表格中,第二列为指定的功能给出了ECMA-48
+或者DEC助记符(如果是后者会在前面加有DEC前缀).没有给出助记符的序列
+既不是ECMA-48也不是VT102字符.
+.LP
+在所有标准输出进程执行完毕,并且一个字符流被送到控制台
+驱动程序准备显示出来的时候,所发生的第一件事就是将进程
+使用的代码转换成显示使用的代码.
+.LP
+如果控制台工作于 UTF-8 模式,那么输入的字节会首先编码
+成16位的 Unicode 代码.如果不是UTF-8模式,那么每个字节
+会按照当前的字符映射表完成转换(转换成Unicode编码的值).
+参看下面将要讨论的 CHARACTER SETS 一章.
+..LP
+在一般情况下,Unicode 代码被转换成为存储在视频存储器中的
+字体索引,这样对应的具体字符(字符存储在视频ROM中)就显示
+在屏幕上了.
+注意使用 Unicode 编码允许我们同时使用 512 种不同的字体(和
+计算机硬件有关).
+.LP
+如果当前的 Unicode 代码是一个控制字符,或者系统目前正在处
+理一个转义序列,处理的方式有些特别.它不会被转换成字体索
+引,也不会直接显示在屏幕上.它可能控制光标的移动,或者实现
+其它控制功能.参看下面的 LINUX CONSOLE CONTROLS 一节
+所进行的讨论.
+.LP
+一般来说直接在程序中插入终端控制字符并不是很好.Linux 支
+持终端兼容的 
+.BR terminfo(5)
+数据库.
+除了直接插入控制和转义序列,也可以使用象
+.BR ncurses(3),
+.BR tput(1),
+或者
+.BR reset(1).
+这样的显示库或者工具.
+
+.SH LINUX CONSOLE CONTROLS Linux终端控制
+
+这一段描述了所有在Linux控制台下使用的调用特殊功能的控制字符
+和转义序列(例如.任何不在当前光标处插入可见字符的序列).
+.SS "Control characters" "控制字符"
+当一个字符在通过字符映射表转换之前含有以下14个代码之一的时
+候表明它是一个控制字符.
+00(NUL),07(BEL),08(BS),09(HT),0a(LF),0b(VT),
+0c(FF),0d(CR),0e(SO),0f(SI),18(CAN),1a(SUB),
+1b(ESC),7f(DEL).
+我们可以通过设置 `显示控制字符' 模式(见下文)以允许07,09,0b,
+18,1a,7f 像普通字符一样显示在屏幕上.另一方面,在UTF-8模式下
+所有位于 00-1f之间的代码都被认为是控制字符,而不管是否处于
+`显示控制字符'模式.
+
+一个控制字符会立刻生效,然后被丢弃(即使是在转义序列中间),
+之后转义序列才继续处理下一个字符.
+(在任何情况下,ESC都表示一个新的转义序列的开始,可能导致 
+前一个序列的非正常终止,CAN和SUB 终止任何转义序列.)
+可识别的控制字符是BEL,BS,HT,LF,VT,FF,CR,SO,SI,CAN,
+SUB,ESC,DEL,CSI.他们的功能如下.:
+.HP
+BEL(0x07,^G)铃声;
+.HP
+BS(0x08,^H)后退一格(在行首不起作用);
+.HP
+HT(0x09,^I)跳至下一个制表位.如果后面已没有制表位则跳至行尾;
+.HP
+LF(0x0A,^J),VT(0x0B,^K),FF(0x0C,^L)三者都表示换行;
+.HP
+CR(0x0D,^M)回车并换行;
+.HP
+SO(0x0E,^N)激活 G1 字符集,
+如果设置了 LF/NL(新行模式)还要加上回车换行;
+.HP
+SI(0x0F,^O)激活 G0 字符集;
+.HP
+CAN(0x18,^X),SUB(0x1A,^Z)两者都表示中断转义序列;
+.HP
+ESC(0x1B,^[)开始一个新的转义序列;
+.HP
+DEL(0x7F)忽略;
+.HP
+CSI(0x9B)等同于 ESC [;
+.LP
+
+.SS "ESC- but not CSI-sequences" "非控制转义序列"
+.TS
+l l l.
+ESC c	RIS	重绘屏幕.
+ESC D	IND	换行.
+ESC E	NEL	新的一行.
+ESC H	HTS	设置当前列为制表位.
+ESC M	RI	翻转换行(Reverse linefeed).
+ESC Z	DECID	DEC 私有定义.内核将其解释为
+		VT102字符,返回字符ESC [ ? 6 c.
+ESC 7	DECSC	存储当前状态(光标坐标,
+		属性,字符集).
+ESC 8	DECRC	恢复上一次储存的设置
+ESC [	CSI	控制序列介绍
+ESC %		开始一个字符集选择序列
+ESC % @	\0\0\0选择默认字符集(ISO 646 / ISO 8859-1)
+ESC % G		\0\0\0选择 UTF-8
+ESC % 8		\0\0\0选择 UTF-8(已不用)
+ESC # 8	DECALN	DEC 屏幕校准测试 - 以E's填充屏幕.
+ESC(		开始一个 G0 字符集定义序列
+ESC( B		\0\0\0选择默认字符集(ISO 8859-1 mapping)
+ESC( 0		\0\0\0选择 vt100 图形映射
+ESC( U		\0\0\0选择空映射 - 直接访问字符ROM
+ESC( K		\0\0\0选择用户映射 -  由程序\fBmapscrn\fP(8)
+		\0\0\0加载.
+ESC )		开始一个 G1 字符集定义
+		(后面跟 B,0,U,K,同上).
+ESC >	DECPNM	设置数字小键盘模式
+ESC =	DECPAM	设置程序键盘模式
+ESC ]	OSC	(是perating system command的缩写)
+		ESC ] P \fInrrggbb\fP: 设置调色板,后面紧跟7个
+		十六进制数,再跟一个 P :-(.
+		这里 \fIn\fP 是颜色(0-16),而 \fIrrggbb\fP 表示
+		红/绿/蓝 值(0-255).
+		ESC ] R: 重置调色板
+.TE
+.SS "ECMA-48 CSI sequence" "ECMA-48 CSI 序列"
+
+CSI(或者 ESC [)后面跟的参数序列大部分是NPAR(16),
+就是由分号隔开的十进制数.空参数或缺少的参数以0处理.
+可以用一个问号代替参数序列.
+
+在任何情况下,系统读取 CSI [(或者 ESC [ [)后的单个字符,
+而忽略整个序列.(用于忽略回显功能键.)
+
+CSI 序列的动作由其最后一个字符决定.
+
+.TS
+l l l.
+@	ICH	用#符号指示空格.
+A	CUU	光标上移到#标识的行.
+B	CUD	光标下移到#标识的行.
+C	CUF	光标右移到#标识的列.
+D	CUB	光标左移到#标识的列.
+E	CNL	将光标下移到#指示的行的第一列.
+F	CPL	将光标上移到#指示的行的第一列.
+G	CHA	光标移动到当前行的指定列.
+H	CUP	光标移动到指定行和列(以1行1列为参照).
+J	ED	删除(默认从当前光标处到行尾的)内容.
+		ESC [ 1 J: 删除从开始到光标处的内容.
+		ESC [ 2 J: 清空整个屏幕.
+K	EL	删除行(默认从当前光标处到结尾).
+		ESC [ 1 K: 删除从行首到当前光标处的内容.
+		ESC [ 2 K: 删除整行.
+L	IL	在空行插入#.
+M	DL	删除#标记的行.
+P	DCH	删除当前行中#标记的字符.
+X	ECH	删除当前行中#标记的单词.
+a	HPR	光标移动到#标记的右边.
+c	DA	以`I am a VT102'应答 ESC [ ? 6 c: 
+d	VPA	光标移动到当前列指定行
+e	VPR	光标移动到#标记的下一行.
+f	HVP	光标移动到指定的行和列.
+g	TBC	没有参数: 清除当前位置的制表站.
+		ESC [ 3 g: 删除所有制表站.
+h	SM	设置模式(见下文).
+l	RM	重置模式(见下文).
+m	SGR	设置属性(见下文).
+n	DSR	状态报告(见下文).
+q	DECLL	设置键盘指示灯.
+		ESC [ 0 q: 熄灭所有指示灯
+		ESC [ 1 q: 点亮 Scroll Lock 灯
+		ESC [ 2 q: 点亮 Num Lock 灯
+		ESC [ 3 q: 点亮 Caps Lock 灯
+r	DECSTBM	设置滚动范围; 参数为首行和末行.
+s	?	存储光标位置.
+u	?	恢复光标位置.
+`	HPA	光标移动到当前行指定列.
+.TE
+.SS ECMA-48 Set Graphics Rendition 设置图形属性
+
+ECMA-48 SGR 序列 ESC [ <parameters> m 设置显示属性.
+同样的序列可以设置一个或多个属性.
+.LP
+.TS
+l l.
+par	作用
+0	所有属性重设为默认值
+1	设置边框
+2	设置亮度减半(用一种颜色模拟另一种颜色)
+4	设置底纹(用一种颜色模拟另一种颜色)
+	(用于模拟的颜色由using ESC ] ...设置)
+5	设置闪烁
+7	设置反转视频(reverse video)
+10	重设选定映像,显示控制标记,
+	反转元素标记.
+11	选择空映像,设置显示控制标记,
+	重设反转标记.
+12	选择空映像,设置显示控制标记,
+	重设反转标记.(在完成映像表转
+	换之前反转标记引起每一字节的
+	高位反转.)
+21	设置正常亮度(和 ECMA-48 不兼容)
+22	设置正常亮度
+24	关闭下划线
+25	不闪烁
+27	反转视频关闭
+30	黑色背景
+31	红色前景
+32	绿色前景
+33	棕色前景
+34	蓝色前景
+35	品红前景
+36	孔雀蓝前景
+37	白色前景
+38	打开下划线,设置默认前景色
+39	关闭下划线,设置默认前景色
+40	黑色背景
+41	红色背景
+42	绿色背景
+43	棕色背景
+44	蓝色背景
+45	品红背景
+46	孔雀蓝背景
+47	白色背景
+49	设置默认背景色
+.TE
+.SS ECMA-48 Mode Switches ECMA-48模式选择
+.TP
+ESC [ 3 h
+DECCRM(默认关闭): 显示控制字符.
+.TP
+ESC [ 4 h
+DECIM(默认关闭): 设置插入模式.
+.TP
+ESC [ 20 h
+LF/NL(默认关闭): 自动在CR后加上 LF,VT 或者 FF.
+.LP
+.SS ECMA-48 状态报告命令.
+.TP
+ESC [ 5 n
+设备状态报告(DSR): 以 ESC [ 0 n 应答(终端准备好).
+.TP
+ESC [ 6 n
+光标位置报告(CPR): 以ESC [ \fIy\fP ; \fIx\fP R 应答,
+这里 \fIx,y\fP 指光标位置.
+
+.SS DEC Private Mode(DECSET/DECRST)sequences DEC私有模式序列.
+
+这里给出的序列在 ECMA-48中没有描述.我们列出了设置模式序列;
+用l替换最后一个h就是重设模式序列.
+.TP
+ESC [ ? 1 h
+DECCKM(默认关闭): 打开时光标键送出 ESC O 前缀,
+而不是 ESC [.
+.TP
+ESC [ ? 3 h
+DECCOLM(默认 = 80 行): 交替选择 80/132 行模式.当原显示
+模式不足以满足要求的时候,象
+.BR resizecons(8)
+这样的用户程序会改变终端显示卡的硬件注册.
+.TP
+ESC [ ? 5 h
+DECSCNM(默认关闭): 设置视频反转模式.
+.TP
+ESC [ ? 6 h
+DECOM(默认关闭): 打开时,光标位置用相对于滚动条左上角
+的位置表示.
+.TP
+ESC [ ? 7 h
+DECAWM(默认关闭): 打开自动换行.在这种模式下,一行中
+超过80列的字符将自动换行(在DECCOLM打开时是132列).
+.TP
+ESC [ ? 8 h
+DECARM(默认关闭): 打开键盘自动重复.
+.TP
+ESC [ ? 9 h
+X10 鼠标报告(默认关闭): 设置报告模式 1(或者重设为
+0)\- 见下文.
+.TP
+ESC [ ? 25 h
+DECCM(默认打开): 设置光标可见.
+.TP
+ESC [ ? 1000 h
+X11 鼠标报告(默认关闭): 设置报告模式 2(或者重设为
+0)\- 见下文.
+
+.SS Linux Console Private CSI Sequences Linux控制台私有控制序列
+
+下面的序列既不属于 ECMA-48 字符也不属于 VT102.它们只在
+Linux控制台上使用.颜色采用 SGR 参数:
+0 = 黑色,1 = 红色,2 = 绿色,3 =褐色 ,4 = 蓝色,5 = 洋红,6 =
+孔雀蓝,7 = 白色.
+
+.TS
+l l.
+ESC [ 1 ; \fIn\fP ]	设置下划线颜色为 \fIn\fP
+ESC [ 2 ; \fIn\fP ]	设置暗色为 \fIn\fP
+ESC [ 8 ]       	设置当前颜色对为默认属性.
+ESC [ 9 ; \fIn\fP ]	设置屏幕空白超时为 \fIn\fP 分钟.
+ESC [ 10 ; \fIn\fP ]	设置机箱喇叭鸣叫频率,单位: Hz.
+ESC [ 11 ; \fIn\fP ]	设置机箱喇叭鸣叫持续时间,单位:微秒.
+ESC [ 12 ; \fIn\fP ]	设置指定控制台前台运行.
+ESC [ 13 ]      	设置指定控制台黑色
+ESC [ 14 ; \fIn\fP ]   	设置 VESA 关闭间隔,单位: 分钟.
+.TE
+
+.SH "CHARACTER SETS" "字符集"
+
+内核可以完成以下四种字符转换,使字符能在屏幕上显示.
+a)Latin1 -> PC,b)VT100 graphics -> PC,c)PC -> PC,
+d)user-defined(用户自定义).
+
+有两种字符集设置,以 G0 和 G1定义,当前字符集必定是其中之一.(初
+始化为G0.)键入 ^N 使 G1 成为当前字符集,键入 ^O 使 G0 成为当前设置.
+
+变量 G0 and G1 指向字符映射关系表,并且这种指向关系可以由用户改变.
+系统初始化时它们分别指向表 a)and b).
+序列 ESC( B ,ESC( 0 ,ESC( U 和 ESC( K 分别使 G0 指向字符映射表
+ a),b),c)和 d).
+序列 ESC )B ,ESC )0 ,ESC )U 和 ESC )K 分别使 G1 指向字符映射表
+a),b),c)和 d).
+
+序列 ESC c 重置一个终端,当屏幕显示出现混乱时可以使用这个序列.
+另一个序列 "echo ^V^O" 仅仅将G0设为当前字符集,但并不保证 G0 指
+向映射表 a).
+有的Linux发行版中提供一个叫做
+.BR reset(1)
+的程序用来送出序列 "echo ^[c".
+如果你的系统终端变量没有错误( rs1=\\Ec),
+那么使用"tput reset"也可以达到同样效果.
+
+用户自定义映射表可以用程序
+.BR mapscrn(8).
+定义.这个程序工作时会将送入的字符c通过关系式s=map[c]映射到
+字符s然后送入显存.字符s所对应的位图放在字符ROM里面,可以使
+用程序
+.BR setfont(8).
+
+来改变.
+
+.SH "MOUSE TRACKING" "鼠标轨迹"
+
+鼠标轨迹工具可以返回与 xterm 兼容的鼠标状态报告.因为控制台
+驱动没有办法知道鼠标类型,只有当虚拟终端驱动接收到鼠标输入
+输出消息更新时才会将这些报告返回给控制台输入流..这些鼠标
+输入输出消息由 \fBgpm(8)\fR 守护进程产生.
+
+所有鼠标轨迹转义序列参数由\fIxterm\fP 编码成象\fIvalue\fP+040
+这样的单一字符形式的数字参数.比如,`!' 编码成 1.屏幕坐标系统
+以'1'为基准.
+
+X10 兼容模式在鼠标键按下时将按下的键和鼠标位置编码后送出.
+ESC [ ? 9 h 允许这一动作,ESC [ ? 9 l禁止这一动作.
+有键按下时,\fIxterm\fP 送出ESC [ M \fIbxy\fP(6 个字符).这里 
+\fIb\fP 代表 键\-1,而 \fIx\fP 和 \fIy\fP 是鼠标的 x 和 y 坐标.这和
+内核产生的序列相同.
+
+常规的轨迹模式(Linux 2.0.24不再支持)在左右两键同时按下然后
+释放时送出转义序列.组合键编码也被送出.ESC [ ? 1000 h 允许这
+个动作而ESC [ 1000 l 禁止这个动作.当有键按下或者释放时,
+\fIxterm\fP 送出 ESC [ M \fIbxy\fP.\fIb\fP 的低两位对按键信息编码:
+0=鼠标键1按下,1=鼠标键2 按下,2=鼠标键3 按下,3=释放.
+高位编码代表组合键,和上述编码一起送出:
+4=Shift,8=Meta(Alt),16=Control(Ctrl).\fIx\fP 和\fIy\fP为发生鼠标事
+件的x和y坐标.以左上角为(1,1).
+
+.SH 和其它终端的比较
+
+我们已经讨论了几种终端类型,比如Linux 控制台.这类终端称为
+"VT100兼容"的终端.这里我们再介绍其他两种重要的终端类型:
+DEC VT102 和
+.BR xterm(1)
+以及他们和Linux控制终端的区别.
+
+.SS Control-character handling 控制字符处理
+vt102 也使用以下控制序列:
+.HP
+NUL(0x00)忽略;
+.HP
+ENQ(0x05)触发应答消息;
+.HP
+DC1(0x11,^Q,XON)继续传送;
+.HP
+DC3(0x13,^S,XOFF)使 vt100 忽略(并停止传送)
+除 XOFF and XON 以外的一切字符.
+.LP
+VT100-like DC1/DC3 进程可以由 tty 驱动激活.
+.LP 
+程序
+.I xterm
+(在 vt100 模式 中)使用控制序列 
+BEL,BS,HT,LF,VT,FF,CR,SO,SI,ESC.
+
+.SS Escape sequences 转义序列
+VT100  控制台序列不完全支持Linux控制台序列:
+.LP
+.TS
+l l l.
+ESC N	SS2	仅仅为下一个字符选择 G2 字符集
+		(Single shift 2).
+ESC O	SS3	仅仅为下一个字符选择 G2 字符集
+		(Single shift 2).
+ESC P	DCS	设备控制字符,由ESC \e 终止
+		(Device control string).
+ESC X	SOS	字符串开始.
+		(Start of string)
+ESC ^	PM	私有消息,由 ESC \e 终结
+		(Privacy message)
+ESC \e	ST	字符串终结
+		(String terminator)
+ESC * ...		指定 G2 字符集
+ESC + ...		指定 G3 字符集
+.TE
+
+程序
+.I xterm
+(vt100 模式)承认 ESC c,ESC # 8,ESC >,ESC =,
+ESC D,ESC E,ESC H,ESC M,ESC N,ESC O,ESC P ...ESC \,
+ESC Z(以 [ ? 1 ; 2 c,`I am a vt100 with advanced video option'回应)
+以及 ESC ^ ...ESC \,意义同上.
+接受 ESC(,ESC ),ESC *,ESC + 后跟 0,A,B 的字符序列,分别
+代表的DEC 特殊字符,画线设置,UK 和 US ASCII码.
+接受 ESC ] 作为特定资源设置:
+.LP
+.TS
+l l.
+ESC ] 0 ; txt BEL	将图标名和窗口标题设为文本.
+ESC ] 1 ; txt BEL	将图标名设为文本.
+ESC ] 2 ; txt BEL	将窗口名设为文本.
+ESC ] 4 6 ; name BEL	改变日志文件名(一般
+	由编译时选项禁止)
+ESC ] 5 0 ; fn BEL	字体设置为 fn.
+.TE
+
+以下字符的含义略有不同::
+.LP
+.TS
+l l l.
+ESC 7  DECSC	存储光标位置
+ESC 8  DECRC	恢复光标位置
+.TE
+
+它还接受以下序列:
+.LP
+.TS
+l l l.
+ESC F		光标移动到屏幕左下角(由
+		hpLowerleftBugCompat 打开这项设置)
+ESC l		内存锁定(对于 HP 终端).
+		锁定光标以上的内存.
+ESC m		内存解锁(对于 HP 终端).
+ESC n	LS2	调用 G2 字符集.
+ESC o	LS3	调用 G3 字符集.
+ESC |	LS3R	以GR调用 G3 字符集.
+		在xterm上看不到效果.
+ESC }	LS2R	以GR调用 G3 字符集.
+		在xterm上看不到效果.
+ESC ~	LS1R	以GR调用 G3 字符集.
+		在xterm上看不到效果.
+.TE
+
+它不识别 ESC % ...
+
+.SS CSI Sequences CSI 序列
+程序
+.I xterm
+(直到 XFree86 3.1.2G)不能识别闪烁或者不可见模式的 
+SGR值.X11R6 也不能识别以 SGRs 为参数设置的色彩.
+.IR xterm
+可以识别其他的 ECMA-48 CSI 序列,只要Linux可以识别.
+反之亦然.
+
+.I xterm
+可以识别以上列出的所有 DEC 私有序列,但是不包括 Linux 私有模式序列.
+在
+.I Xterm Control Sequences
+中有关于
+.IR xterm 
+的私有模式序列的讨论.
+
+document by Edward Moy and Stephen Gildea,available with the X 
+distribution.
+
+.SH BUGS
+
+在版本为 2.0.23 的内核中,CSI 序列的识别有些问题: 不能识别转义序列中的NUL.
+
+.SH 参见
+.BR console(4),
+.BR console_ioctl(4),
+.BR charsets(7)
+
+
+
diff --git a/src/man4/fifo.4 b/src/man4/fifo.4
new file mode 100644
index 0000000..e98bc5c
--- /dev/null
+++ b/src/man4/fifo.4
@@ -0,0 +1,55 @@
+.\" This man page is Copyright (C) 1999 Claus Fischer.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" 
+.\" 990620 - page created - aeb at cwi.nl
+.\"
+.TH FIFO 4 "20 Jun 1999" "Linux Man Page" "Linux Programmer's Manual" 
+
+.SH NAME
+fifo \- 先进先出的特殊文件, 又名管道
+
+.SH "描述 (DESCRIPTION)"
+一个 FIFO 特殊 文件 (又名 管道) 同 管道线 相似, 但是 它是 作为 文件 系统 的
+一部分 访问的. 可以 有 多个 进程 打开它 以供 读写. 当 进程 通过 FIFO 交换 数据
+的时候, 内核 在内部 传送 所有 数据 而 不会 把它 写入 文件 系统, 也就是说 FIFO
+特殊 文件 在 文件 系统 中 没有 任何 内容, 文件 系统 项 只是 作为  进程 可以 用
+文件 系统 中的 一个 名字 来 访问 管道 的 一个 参照点.
+.PP
+内核 会 为 至少 有 一个 进程 打开 了的 FIFO 特殊 文件 维护 并且 也只 维护 一个
+管道 对象. 在 数据 传给 FIFO 之前, FIFO 的 两端 (读 和 写) 必须 同时 打开.
+一般 来说 打开 FIFO 会 阻塞 直至 另一端 也 打开.
+.PP
+一个 进程 可以 以 非阻塞 模式 打开 一个 FIFO. 这种 情况下, 即使 写端 没有 打开,
+打开 读端 还是 会 成功, 但是, 如果 读端 没有 打开, 打开 写端 会 失败, 并且 得到
+一个 ENXIO (设备 或 地址 不存在).
+.PP
+在 Linux 下, 不管 是 阻塞 还是 非阻塞 模式, 打开 一个 FIFO 用作 读 和 写 都会
+成功. POSIX 关于 这种 情况 没有 定义. 这个 可以 用来 在 读端 没有 打开 的 情况
+下 打开 写端. 一个 进程 在 同时 用 FIFO 的 两端 来 和 自己 通信 的 时候 要 特别
+注意 以防 死锁.
+.SH "注意 (NOTES)"
+当 一个 进程 企图 向 读端 没有 打开 的 FIFO 写 数据 的 时候, 进程 会 收到 一个
+SIGPIPE 信号. FIFO 特殊 文件 可以 用
+.BR mkfifo (3)
+来 创建 并且
+.IR "ls -l"
+会 给它 一个 特殊 的 标记.
+
+.SH "参见 (SEE ALSO)"
+.BR mkfifo (3),
+.BR mkfifo (1),
+.BR pipe (2),
+.BR socketpair (2),
+.BR open (2),
+.BR signal (2),
+.BR sigaction (2)
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/10/9
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man4/hd.4 b/src/man4/hd.4
new file mode 100644
index 0000000..1d236c3
--- /dev/null
+++ b/src/man4/hd.4
@@ -0,0 +1,97 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sat Jul 24 16:56:20 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 21:38:51 1996 by Eric S. Raymond <esr at thyrsus.com>
+.\" (and some more by aeb)
+.\"
+.TH HD 4 1992-12-17 "Linux" "Linux Programmer's Manual"
+.SH NAME
+hd \- MFM/IDE 硬盘设备
+.SH "描述 DESCRIPTION"
+\fBhd*\fP 开头的设备是以裸模式(raw mode)访问MFM/IDE类型硬盘的块
+设备. 第一个IDE驱动控制器上的主盘(主设备号3)是 \fBhda\fR ;从盘是 \fBhdb\fR.
+第二个IDE驱动器控制器(主设备号22)是 \fBhdc\fR ,从为 \fBhdd\fR.
+.LP
+大多数IDE 块设备以
+.BI hd X\c
+, 或者
+.BI hd XP\c
+的形式命名,  其中字母
+.I X
+代表任意字母以表示各个物理设备.其中P表示各个物理设备中分区的代号.
+.I P
+表示各个物理设备中分区的代号。第一种形式
+.BI hd X,
+代表整个驱动器的地址,而分区号是按照每个分区
+被发现的顺序分配的,并且只有非空和非扩展分区才能有这个号码
+然而不管这个分区是未使用过的还是扩展的,在MBR中只纪录四个分区
+号码依次为1-4. 因此逻辑分区只能从
+.BI hd X 5\c
+开始。支持DOS 风格的分区以及BSD-磁盘卷标分区。
+你最多可以在一个IDE磁盘上建立63个分区.
+.LP
+例如,
+.B /dev/hda
+代表第一个IDE驱动器的全部;
+.B /dev/hdb3
+代表第二块IDE硬盘上的第三DOS 主分区.
+.LP
+典型如下建立:
+.RS
+.sp
+mknod -m 660 /dev/hda b 3 0
+.br
+mknod -m 660 /dev/hda1 b 3 1
+.br
+mknod -m 660 /dev/hda2 b 3 2
+.br
+\&...
+.br
+mknod -m 660 /dev/hda8 b 3 8
+.br
+mknod -m 660 /dev/hdb b 3 64
+.br
+mknod -m 660 /dev/hdb1 b 3 65
+.br
+mknod -m 660 /dev/hdb2 b 3 66
+.br
+\&...
+.br
+mknod -m 660 /dev/hdb8 b 3 72
+.br
+chown root:disk /dev/hd*
+.RE
+.SH "文件 FILES"
+/dev/hd*
+.SH "参见 SEE ALSO"
+.BR mknod (1),
+.BR chown (1),
+.BR mount (8),
+.BR sd (4)
+
+.SH "[中文版维护人]"
+.B trcbilg <email>
+.SH "[中文版最新更新]"
+.B 2000.11.22
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/acct.5 b/src/man5/acct.5
new file mode 100644
index 0000000..1c2915b
--- /dev/null
+++ b/src/man5/acct.5
@@ -0,0 +1,51 @@
+.\" Copyright (c) 1995 Dirk Eddelbuettel (Dirk.Eddelbuettel at qed.econ.queensu.ca)
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.TH ACCT 5 "1995 October 31" "Debian/GNU Linux"
+
+.SH NAME
+acct \- 执行体(execution)会计文件
+
+.SH "总览 (SYNOPSIS)"
+.B #include <sys/acct.h>
+
+.SH "描述 (DESCRIPTION)"
+内核 对 所有的进程 维护了 一个 会计信息结构 .
+当 一个 进程 结束后, 如果 开启了 进程会计, 内核 就 调用
+.BR acct (2)
+函数 生成 该进程 的 会计记录, 然后 添加到 会计文件 (accounting file) 中.
+文件
+.IR /usr/include/linux/acct.h 
+中 有对 会计结构
+.B "struct  acct"
+的 描述.
+
+.SH "另见 (SEE ALSO)"
+.BR acct (2),
+.BR sa (1).
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/aliases.5 b/src/man5/aliases.5
new file mode 100644
index 0000000..04b9d91
--- /dev/null
+++ b/src/man5/aliases.5
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1998 Sendmail, Inc.  All rights reserved.
+.\" Copyright (c) 1983, 1997 Eric P. Allman.  All rights reserved.
+.\" Copyright (c) 1985, 1991, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\"     @(#)aliases.5	8.8 (Berkeley) 5/19/1998
+.\"
+.TH aliases 5
+.DD May 19, 1998
+.DT ALIASES 5
+.OS BSD 4
+.SH NAME
+.br
+aliases - sendmail使用的别名文件
+.SH 总览
+aliases
+.SH 描述
+此文件描述了
+.B /usr/sbin/sendmai
+使用的用户账号别名。它位于
+.B /etc
+并格式化
+成如下形式的一连串的行:
+.BD -filled -offset indent
+name: name_1, name2, name_3, . . .
+.ED
+.PP
+其中的
+.B name
+是含别名的原名,而
+.B name_n
+就是那个原名的一组别名。以空格起
+首的行是上一行的延续。以`#'起首的行是注释。
+.LP
+别名化只发生在本地账号上。不能发生循环现象,因为邮件不会对任何人进行于一
+多次的投递。
+在完成别名化后,本地的和合法的收信人会有一个``.forward''文件存于他们的宿
+主目录,此文件用于把邮件按文件中定义好的用户列表进行转发。
+.LP
+此别名文件只包含原始数据;实际的别名化信息存于用程序
+.I newaliases(1)
+建立的
+.I  /etc/aliases.db
+这个二进制格式的文件中。每次别名文件更改后都要执行
+.I newaliases
+命令来使更改有效。
+.SH 另见
+.BR newaliases(1),
+.BR dbopen(3),
+.BR dbm(3),
+.BR sendmail(8)
+.RS
+.%T "SENDMAIL 安装和操作指南。"
+.RE
+.RS
+.%T "SENDMAIL 互联网络邮件路由器。"
+.RE
+.SH 错误
+如果你已经在编译
+.B sendmail
+时用
+.B DBM
+支持替换了
+.B NEWDB
+的话,可能会遇到
+.B dbm(3)
+限制
+单条别名容量在
+.I 1000
+字节信息量左右的问题。你可以用``链''的方法来获得更长的别名;
+那就是,把一个作为延续的虚设名来作为别名串中的最后一个名称。
+.SH 历史记录
+别名文件格式出现于BSD 4.0
+.BX 4.0
+。
+.SH "[中文版维护人]"
+.B mhss
+.SH "[中文版最新更新]"
+.B 2001.10.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.B http://cmpp.linuxforum.net 
diff --git a/src/man5/environ.5 b/src/man5/environ.5
new file mode 100644
index 0000000..08d8b6d
--- /dev/null
+++ b/src/man5/environ.5
@@ -0,0 +1,146 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de),
+.\" Fri Apr 2 11:32:09 MET DST 1993
+.\" and Andries Brouwer (aeb at cwi.nl), Fri Feb 14 21:47:50 1997.
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" Chinese Version Copyright mhss, www.linuxforum.net, 2000
+.\" 
+.\" Modified Sun Jul 25 10:45:30 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Mon Oct 21 17:47:19 1996 by Eric S. Raymond (esr at thyrsus.com)
+.\" Modified Wed Aug 27 20:28:58 1997 by Nicol醩 Lichtmaier 
+.\" Modified Mon Sep 21 00:00:26 1998 by Andries Brouwer (aeb at cwi.nl)
+.TH ENVIRON(5) Linux Programmer's Manual ENVIRON(5)
+
+
+.SH NAME
+environ - 用户环境(变量)
+
+.SH SYNOPSIS 总览
+.ad l
+.nf 
+extern char **environ;
+.br
+.fi
+.ad b
+.SH DESCRIPTION 描述
+变量 environ 指向的是一个叫 'environment'(环境)的字符串数组
+(这个变量必须在用户程序中声明,但是在使用 libc4 或 libc5 以
+及使用 glibc 并且定义了 _GNU_SOURCE 的情况下 ,它是在头文件
+unistd.h 中声明的)。对于一个进程,这个字符串的数组是通过开
+始进程的 exec(3) 调用来得到,习惯上,这些字符串的格式是
+'name=value'(名称=值)。常用的例子是:
+.TP
+.B USER
+登录用户的名字(被一些从 BSD 派生来程序所使用)。
+.TP
+.B LOGNAME
+登录用户的名字(被一些从 System-V 派生来程序所使用)。
+.TP
+.B HOME
+用户的登录目录,被login(1)按口令文件 passwd(5) 设置。
+.TP
+.B LANG
+当不被 LC_ALL 或更特殊的环境变量所忽略的时候,是用
+于地域分类的地域名。
+.TP
+.B PATH
+预先设定的目录前缀的序列,sh(1) 和许多程序可借此查找路径
+名不完全的文件。前缀由':'分隔。(类似的,有一些 shell
+用 CDPATH 查找位于不同目录的命令,以及用 MANPATH 找
+手册页等等。)
+.TP
+.B PWD
+当前的工作路径。被一些 shell 设置。
+.TP
+.B SHELL
+用户的登录 shell 的文件名。
+.TP
+.B TERM
+用于准备输出的终端类型。 
+.TP
+.B PAGER
+用户指定的显示文本文件的工具。
+.TP
+.B EDITOR/VISUAL
+用户指定的编辑文本文件的工具。
+.PP
+更多的名字可以通过和在 sh(1) 中的 export 命令和 'name=value',或 csh(1) 中
+的 setenv 命令设置。参数也可以在
+执行 exec(2) 的时候被放置在环境中。一个 C 程序可以使用函数
+.BR getenv(3) 、
+.BR putenv(3) 、
+.BR setenv(3) 
+和 
+.BR unsetenv(3)
+来操纵自身的环境。
+
+注意许多程序和库例程的行为受特定的环境变量的存在和值的影响。
+随便的搜集一下就有:
+.LP
+环境变量 LANG、LANGUAGE、NLSPATH、LOCPATH、LC_ALL、
+LC_MESSAGES 等影响地域的处理。
+.LP
+TMPDIR 影响 tmpnam(3) 生成名字的路径名前缀和其他一些例程,
+sort(1) 和其他程序用的临时文件目录等等。
+.LP 
+LD_LIBRARY_PATH、LD_PRELOAD 和其他 LD_* 变量影响动态 
+(装载器/连接器)的行为。
+.LP
+POSIXLY_CORRECT 使特定的程序和库例程遵循 POSIX 规定。 
+.LP
+MALLOC_* 变量影响 malloc(3) 的行为。
+.LP
+HOSTALIASES 变量给出包含 gethostbyname(3) 用的别名的文件的
+文件名。
+.LP
+TZ 和 TZDIR 给出时区信息。
+.LP
+TERMCAP 给出给定终端的窗口大小(或给出包含这种信息的文件的
+文件名)。
+.LP
+等等,还有很多。
+
+这里有一个明显的安全风险。不止一个系统命令曾经被一个使用了一
+个不寻常的
+.BR IFS " 或 " LD_LIBRARY_PATH
+变量值的用户诱入骗局中。
+
+
+.SH SEE ALSO 又见
+.BR login(1),
+.BR sh(1),
+.BR bash(1),
+.BR csh(1),
+.BR tcsh(1),
+.BR execve(2),
+.BR exec(3), 
+.BR getenv(3),
+.BR putenv(3),
+.BR setenv(3),
+.BR unsetenv(3).
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+.B 2000/11/26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/fs.5 b/src/man5/fs.5
new file mode 100644
index 0000000..a5df1b6
--- /dev/null
+++ b/src/man5/fs.5
@@ -0,0 +1,156 @@
+.\" Copyright 1996 Daniel Quinlan (Daniel.Quinlan at linux.org)
+.\"
+.\" This is free documentation; 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 version.
+.\" Chinese Version Copyright mhss, www.linuxforum.net, 2000
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.TH FILESYSTEMS(5) Linux Programmer's Manual FILESYSTEMS(5)
+.nh
+.SH NAME
+文件系统 - Linux 支持的文件系统类型:minix, ext, ext2, xia, 
+msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb,
+ncpfs
+
+.SH DESCRIPTION 描述
+在文件 /proc/filesystems 中你可以发现当前内核支持哪些文件系统。
+(如果你需要一个当前所不支持的类型,插入相应的模块或重新编译内核。)
+
+下面是对各种文件系统的描述。
+
+.TP
+.\"----------------------------------------------------------------------
+.B "minix"
+是 Minix 操作系统使用的文件系统,Linux 一开始时使用
+的。它有一些不足:64 MB 的分区限制,短文件名,单一的
+时间戳等等。
+.sp 
+对于软盘和 RAM 盘仍然有用。
+.\"----------------------------------------------------------------------
+.TP
+.B ext
+是对 minix 文件系统的精心设计的扩展。它已经完全被扩
+展文件系统的第二版(ext2)所淘汰并且最终将被从内核中
+去除。
+.\"----------------------------------------------------------------------
+.TP
+.B ext2
+是 Linux 对固定磁盘和可移动(装卸)介质所使用的高性能
+文件系统。
+.sp
+扩展文件系统的第二版的设计是对扩展文件系统(ext)的扩
+展。ext2 是 Linux 支持的提供了最佳性能(术语上的速度
+和 CPU 使用率)的文件系统。
+.\"----------------------------------------------------------------------
+.TP
+.B xiafs
+对它的设计和实现是为了
+通过扩展 Minix 文件系统的代码,实现稳定和安全的文件系统。
+它提供了最基本的要求的特征而且不会过于复杂。
+
+xia 文件系统已经不再有活跃的开发或维护。也不经常使用。
+.\"----------------------------------------------------------------------
+.TP
+.B msdos
+是 DOS、Windows、和一些 OS/2 计算机使用的文件系统。
+msdos 文件系统的文件名不长于 8 个字符并跟随着可选的 '.'
+和 3 个字符的扩展名。
+.\"----------------------------------------------------------------------
+.TP
+.B umsdos
+是 Linux 使用的扩展了的 DOS 文件系统。它在 DOS 文件
+系统下增加了长文件名、 UID/GID、POSIX 权限和特殊文件
+(设备、命名管道等)功能,而不牺牲对 DOS 的兼容性。
+.\"----------------------------------------------------------------------
+.TP
+.B vfat
+是 Microsoft Windows95 和 Windows NT 使用的扩展了的
+DOS 文件系统。VFAT 在 MSDOS 文件系统下增加了长文件名
+功能。
+.\"----------------------------------------------------------------------
+.TP
+.B proc
+是一种伪文件系统,被用来作为内核数据的界面,这样就不
+用读并解释 /dev/kmem 了。特别的是,它的文件不占用磁
+盘空间。参见 proc(5)。 
+.\"----------------------------------------------------------------------
+.TP
+.B iso9660
+是满足 ISO 9660 标准的 CD-ROM 文件系统类型。
+.RS
+.TP
+.B "High Sierra"
+Linux 支持 High Sierra,它是ISO 9660 标准的
+CD-ROM 文件系统的先驱。在 Linux 下支持的 
+iso9660 文件系统内,它被自动识别。
+.TP 
+.B "Rock Ridge"
+Linux 也支持使用由 Rock Ridge 交换协议指定的
+使用共享的协议记录的系统。它们被用于进一步为
+一个 UNIX 主机描述 iso9660 文件系统中的文件,
+并且提供象长文件名、UID/GID、POSIX 权限和设备
+。在 Linux 下支持的 iso9660 文件系统内,它被
+自动识别。
+.RE 
+.\"----------------------------------------------------------------------
+.TP
+.B hpfs
+是 OS/2 使用的高性能文件系统。由于缺乏可用的文档,
+在 Linux 下这种文件系统是只读的。
+.\"----------------------------------------------------------------------
+.TP
+.B sysv
+为 Linux 实现的 SystemV/Coherent 文件系统。它实现了
+Xenix FS、SystemV/386 FS 和 Coherent FS。
+.\"----------------------------------------------------------------------
+.TP
+.B nfs
+是用于访问位于远程计算机上的磁盘的网络文件系统。
+.\"----------------------------------------------------------------------
+.TP
+.B smb
+是支持 smb 协议的网络文件系统,被 Windows for 
+Workgroups、Windows NT和 Lan Manager 使用。
+.sp
+要使用 smb 文件系统,你需要一个特殊的 mount 程序,
+这个程序可在 ksmbfs 包中找到,也可从下面网址下载:
+.IR ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/smbfs.
+.\"----------------------------------------------------------------------
+.TP
+.B ncpfs
+是支持 NCP 协议的网络文件系统,被 Novell NetWare 使用。
+.sp 
+要使用 ncpfs,你需要一个特殊的程序,这个程序可在
+下面网址下栽:
+.IR ftp://linux01.gwdg.de/pub/ncpfs。
+.\"----------------------------------------------------------------------
+.SH SEE ALSO 又见
+.BR proc(5),
+.BR fsck(8),
+.BR mkfs(8),
+.BR mount(8).
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.br
+摘录于:Linux 实用大全/陈向阳,方汉 编著. -北京:科学出版社 1998.8
+余进行了一些修订。
+.SH "[中文版最新更新]"
+.B 2000/11/26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/ftpaccess.5 b/src/man5/ftpaccess.5
new file mode 100644
index 0000000..0e36c6a
--- /dev/null
+++ b/src/man5/ftpaccess.5
@@ -0,0 +1,302 @@
+.TH ftpaccess 5 
+
+.SH NAME
+ftpaccess - ftpd的配置档
+
+.SH "描述 DESCRIPTION"
+这个ftpaccess档案是用来配置下述功能的运作
+
+.PP
+存取功能(AccessCapabilities)
+
+.TP
+autogroup<群组名称><类别>[<类别>...]
+如果一个匿名的(ANONYMOUS)使用者是任何<类别>的成员,那麽ftp伺服器将会实行一次setegid()到该<群组名称>。这允许特殊类别的匿名使用者存取group-and-owner-read-only的档案以及目录。<群组名称>是/etc/group里的一个有效群组(或是你的getgrent()呼叫所查阅的地方)。
+
+.TP
+class<类别><类型列表><全球位址>[<全球位址>...]
+定义使用者的<类别>,使用<全球位址>格式的来源位址。可以定义<类别>多个成员。可以有多个"class"指令列出该类别额外的成员。如果多个"calss"指令可以应用到该次的连线期间,会使用在access档案中第一个列出的。尝试为一台主机定义一个有效的类别失败的话将会引起存取被拒绝。<类型列表>是一个以任何"anonymous","guest"及"real"关键字所组成使用逗点隔开的列表。如果包含"real"关键字,该类别可以符合使用FTP存取真实的帐号的使用者,而如果包含"anonymous"关键字该类别可以符合使用匿名FTP的使用者。而"guest"关键字符合访客存取帐号(参阅"guestgroup"以取得更多资讯)
+
+ <全球位址>可以是一个全球的领域名称或是一个全球的数字
+位址。
+
+.TP
+ deny<全球位址><讯息档案>
+永远拒绝符合<全球位址>主机的存取。显示<讯息档案>。<全球位址>可以是"!nameserved"用来拒绝没有名称伺服器服务中的节点的存取。
+
+.TP
+guestgroup<群组名称>[<群组名称>...]
+如果一个真实的(REAL)使用者是任何<群组名称>的成员,该次连线期间的设立完全如同匿名的FTP一般。换句话说,会执行一次chroot(),而且该使用者不再被允许发出USER及PASS指令。<群组名称>是/etc/group里的一个有效群组(或是你的getgrent()呼叫所查阅的地方)。
+
+该使用者的home目录必须适当地加以设定,跟匿名FTP所要做的完全一样。在passwd项目里的home目录栏位被分成两个目录。第一个栏位将是chroot()呼叫的根目录参数。第二个部份是相对於该根目录的使用者home目录。这两半是以"/./"分隔开的。
+
+在/etc/passwd里,该真实的项目:
+
+.CS
+guest1::100:92:Guest
+Account:/ftp/./incoming:/etc/ftponly
+.CE
+
+当guest1成功地签入的时候,此ftp伺服器将会执行一次chroot("/ftp")然後接著chdir("/incoming")。该guest使用者将只能够存取/ftp下的目录结构(此目录对guest1而言看起来跟用起来就像是/目录),就如同一个匿名FTP使用者所见到的。
+
+.TP
+ limit<类别><时间><讯息档案>
+在某<时间>将某<类别>限制为个使用者,若使用者的存取被拒绝则显示<讯息档案>内容。限制的检查只在签入时期实行。如果多个"limit"指令可以应用到该次连线期间的话,会使用第一个适合的。尝试定义一个有效的限制失败,或是值为-1的限制,等於不设限。<时间>使用UUCPL.sys档案相同的格式。
+
+.TP
+loginfails<数字>
+在<数字>签入失败後,记录一个″重复签入失败(repeated loginfailures)讯息″并且终止该FTP连线。预设值是5。
+
+.TP
+private
+使用者签入之後,SITEGROUP及SITEGPASS指令可以用来指定一增强存取的群组以及与之有关的密码。如果该群组名称以及密码是有效的,该使用者变成(经由setegid())一个在群组存取档案/etc/ftpgroups中所指定群组的成员。
+
+该群组存取档案的格式是:
+
+.CS
+存取群组名称:经编码的密码:真实群组名称
+.CE
+
+其中的存取群组是一个随意的(文数字+标点)字串。经编码的密码是经由crypt(3)编码过的密码,与/etc/passwd里的完全一样。真实群组名称是/etc/group里所列出有效群组其中的一个名称。
+
+注意:要使这个选项能运作於匿名的FTP使用者,该FTP伺服器必须保持使/etc/group永久开启而且将群组存取档案载入记忆体。这意指(1)该ftp伺服器现在使一个额外的档案描述子(filedescriptor)开启,以及(2)经由SITEGROUP使用者必须的密码以及存取权利的承认在一次FTP连线期间以内将会是静态的。如果你有紧急的需求要*现在*改变存取群组以及/或是密码,那麽你只要砍掉(kill)所有正在执行中的FTP伺服器。
+
+.PP
+资讯功能(InformationalCapabilities)
+
+.TP
+banner<路径>
+作用与message指令类似,除了此banner是在使用者键入使用者名称/密码之前显示以外。该<路径>系相对於真实的系统根目录,不是匿名FTP所使用的根目录。
+
+警告:这个指令的使用可以完全地防止不相容的FTP客户端程式使用该FTP伺服器。并非所有的客户端都能够处理多行回应(multi-lineresponses)(这正是banner显示的方式)
+
+.TP
+email<名称>
+定义ftp档案处(archive)维护者的电子邮递位址。这个字串将会在每一次使用%E代换变数(magiccookie)的时候印出。
+
+.TP
+message<路径>{<时机>{<类别>...}}
+定义一个配合<路径>的档案名称在使用者签入时或是在使用切换工作目录指令的时候ftpd将会显示该档案的内容。该项<时机>参数可以是"LOGIN"或"CWD=<目录>"。如果<时机>是"CWD=<目录>"的话,<目录>指定将会引发该通知的新预设目录。
+
+该选择性的<类别>指定允许该讯息只对特殊类别的成员显示。可以指定超过一个类别。
+
+在说明档中可以有″代换变数(magiccookies)″这会使ftp伺服器以指定的文字字串取代该变数:
+
+.RS
+.TP
+%T
+本地时间(form ThuNov1517:12:42 1990)
+.TP
+%F
+CWD所在分割区的剩馀空间(kbytes)[并非所有系统都有支援]
+.TP
+%C
+目前的工作目录
+.TP
+%E
+定义在ftpaccess中维护者的电子邮递位址
+.TP
+%R
+远端主机名称
+.TP
+%L
+本地主机名称
+.TP
+%U
+签入时所给的使用者名称
+.TP
+%M
+这个类别所允许的最大使用者数目
+.TP
+%N
+这个类别目前的使用者数目
+.RE
+
+此项message将只显示一次以避免惹使用者讨厌。要记得当MESSAGEs被一匿名的FTP使用者引发时,该<路径>必须是相对於匿名FTP目录树的根目录。
+
+.TP
+readme<路径>{<时机>{<类别>}}
+定义一个配合<路径>的档案名称在使用者签入时或是在使用切换工作目录指令的时候ftpd将会告知使用者该档案存在及修改的日期。<时机>参数可以是"LOGIN"或"CWD=<目录>"。若<时机>是"CWD=<目录>"的话,<目录>指定将会引发该通知的新预设目录。此项讯息将只显示一次以避免打扰使用者。要记得当README讯息被一匿名的FTP使用者引发时,该<路径>必须是相对於匿名FTP目录树的根目录。
+
+该选择性的<类别>指定允许该讯息只对特殊类别的成员显示。可以指定超过一个类别。
+
+.PP
+记录功能(LoggingCapabilities)
+
+.TP
+logcommands<类型列表>
+以使用者启动个别的记录指令。<类型列表>是一个以任何的"anonymous","guest"及"real"关键字所组成使用逗点隔开的列表。如果包含"real"关键字,将会为使用FTP存取真实帐号的使用者做记录,而如果包含"anonymous"关键字则将会为使用匿名FTP的使用者做记录。"guest"关键字符合访客存取帐号(参阅"guestgroup"以取得更多资讯)
+
+.TP
+logtransfers<类型列表><目录>
+启动对真实的或匿名的FTP使用者的档案传输记录。对传输到伺服器(进来)的记录可以跟从伺服器传输(出去)分开来启动。<类型列表>是一个以任何的"anonymous","guest"及"real"关键字所组成使用逗点隔开的列表。如果其中包含有"real"关键字,将会为使用FTP存取真实帐号的使用者做记录,而如果包含"anonymous"关键字则将会为使用匿名FTP的使用者做记录。而"guest"关键字符合访客存取帐号(参阅"guestgroup"以取得更多资讯)。<目录>是一个以任何的"inbound"以及"outbound"两个关键字所组成以逗点隔开的列表,而且将会分别引发对送往该伺服器以及从该伺服器送出的传输记录。
+
+.PP
+其它功能(MiscellaneousCapabilities)
+
+.TP
+alias<字串><目录>
+为一个目录定义一个别名,<字串>。可以用来加入逻辑目录的其它概念。
+
+例如:
+
+.CS
+aliasrfc:/pub/doc/rfc
+.CE
+
+允许使用者从任何目录以指令"cdrfc:"存取/pub/doc/rfc。别名只应用於cd指令上。
+
+.TP
+cdpath<目录>
+定义cdpath里的一个项目。这定义一个在改变目录时使用的搜寻路径。
+
+例如:
+
+.CS
+cdpath/pub/packages
+cdpath/.aliases
+.CE
+
+允许使用者直接cd到任何/pub/packages或/.alias目录以下的目录。该搜寻路径系以该行出现在ftpaccess档案里的顺序定义。
+
+如果使用者所下的指令是:
+
+.CS
+cdfoo
+.CE
+
+则会以下列的顺序搜寻该目录:
+
+.I ./foo
+一个称为"foo"的别名
+.I /pub/packages/foo
+.I /.aliases/foo
+
+该cdpath只能够配合cd指令使用。如果你有数量很大的别名那麽你可能想要设立一个目录别名链结到所有你希望能让使用者使用的区域。
+
+.TP
+.CS
+compress[...]
+tar[...]
+.CE
+为任何符合任何的类别启动压缩(compress)或包裹(tar)功能。实际的转换(conversions)定义在外部的档案FTPLIB/ftpconversions之中。
+
+.TP
+shutdown<路径>
+如果<路径>所指的档案存在,伺服器将会规律地检查该档案以便得知该伺服器是否将要被停机。如果计画一次停机,则会通告使用者,新的连线在停机之前的一段指定的时间之後会被拒绝且目前的连线在停机之前的一段指定的时间之後会被停止。<路径>指到一个结构如下的档案:
+
+.CS
+<年><月><日><时><分><拒绝_期间><抛弃_期间><本文>
+.CE
+.RS
+.TP
+<年>
+任何>1970的年份
+.TP
+<月>
+0-11<----注意!
+.TP
+<时>
+0-23
+.TP
+<分>
+0-59
+.RE
+
+<拒绝_期间>以及<抛弃_期间>是在停机之前新的连线将会被拒绝以及存在的连线将会被抛弃的一段格式为HHMM的期间。
+
+<本文>跟从任何讯息(参阅"message")的一般规则,配合下列额外可用的代换变数:
+
+.RS
+.TP
+%s
+系统将要停机的时间
+.TP
+%r
+新的连线将会被拒绝的时间
+.TP
+%d
+目前的连线将会被抛弃的时间
+.RE
+
+所有时间的格式都是:dddMMMDDhh:mm:ssYYYY。在该配置档中只能有一个"shutdown"指令。
+
+外部程式ftpshut(8)可以用来自动化产生这个档案的程序。
+
+.PP
+许可功能(PermissionCapabilities)
+.TP
+.CS
+chmod<类型列表>
+delete<类型列表>
+overwrite<类型列表>
+umask<类型列表>
+.CE
+允许或不允许执行指定功能的能力。依照预设值,允许所有的使用者执行。
+
+<类型列表>是一个以任何"anonymous","guest"及"real"关键字所组成使用逗点隔开的列表。
+
+.TP
+passwd-check()
+定义该伺服器对匿名ftp密码检查的层级与执行。
+
+.RS
+.TP
+none
+不执行密码检查。
+.TP
+trivial
+密码中必须包含一个'@'字元。
+.TP
+rfc822
+密码必须是一个rfc822相容的位址。
+.TP
+warn
+警告该使用者,但是允许他们签入。
+.TP
+enforce
+警告该使用者,并且接著将之踢出。
+.RE
+
+.TP
+path-filter<类型列表><讯息><允许的字元集>{<不允许的正规表示式>...}
+对於属於<类型列表>的使用者,path-filter定义控制何种档案名称允许或不允许的正规表示式(regularexpressions)。可以有多个不允许的正规表示式。如果一个档案名称因为不符合正规表示式的标准而无效的话,将会显示<讯息>给该使用者。例如:
+
+.CS
+path-filteranonymous/etc/pathmsg^[-A-Za-z0-9._]*$^.^-
+.CE
+
+指定所有匿名使用者所上传的档案名称只能以A-Z,a-z,0-9以及"._-"组成而且不能以一个"."或是一个"-"开始。如果该档案名称是不合法的,则将会显示/etc/pathmsg给该使用者。
+
+.TP
+upload<拥有者><群组>["dirs"|"nodirs"]
+配合定义一个认可或拒绝上传的目录。
+
+如果其认可上传,所有档案将会由<拥有者>以及<群组>所拥有而且将会具有根据设置的权限(permission)。
+
+目录系以最佳-符合(best-match)为基础。
+
+例如:
+
+.CS
+upload*no
+upload/incomingyesftpdaemon0666
+upload/incoming/gifsyesjlcguest0600
+nodirs
+.CE
+
+这将仅允许上传到/incoming以及/incoming/gifs。上传到/incoming的档案将由ftp/daemon所拥有并且具有0666的权限。上传到/incoming/gifs的档案将由jlc/guest拥有并且具有0600的权限。
+
+选择性的"dir"以及"nodir"关键字可以指定允许或不允许使用mkdir指令建立新的子目录。
+
+该upload关键字只应用於匿名的使用者。
+
+.SH "文件 FILES"
+FTPLIB/ftpaccess
+
+.SH "[中文版维护人]"
+.B <asdchen at pc2.hinet.net>
+.SH "[中文版最新更新]"
+.B 1995/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/group.5 b/src/man5/group.5
new file mode 100644
index 0000000..4a7dc7a
--- /dev/null
+++ b/src/man5/group.5
@@ -0,0 +1,34 @@
+.\" 版权所有(c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" 这是免费的文档;你可以遵照自由软件基金会出版的GNU通用出版许可版本2或者更高版本的条例来重新发布和/或修改它.
+.\"
+.\" GNU通用出版许可中涉及到的"目标代码(object code)"和"可执行程序(executables)"可解释为任意文档格式化的输出或者排版系统,包括中间的和已输出的结果.
+.\"
+.\" 该文档的发布寄望于能够实用,但并不做任何担保;甚至也不提供隐含的商品性的保证或者针对特殊目的的适用性.参见GNU通用版权许可以获知详情.
+.\"
+.\" 你应该接收到与本文档一同发布的GNU通用版权许可的副本;如果没有,请写信到自由软件基金会(Free Software Foundation), Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+.\"
+.\" 于1993年1月24日星期六17:06:03由Rik Faith (faith at cs.unc.edu)修改
+.TH GROUP 5 "1992年12月29日" "Linux" "Linux Programmer's Manual(Linux程序员手册)"
+.SH NAME(名称)
+group \- 用户组文件
+.SH DESCRIPTION(描述)
+\fB/etc/group\fp 是一个ASCII码的文件,它定义了用户所属的组.文件中每行包括一条记录,其格式如下:
+.sp
+.RS
+group_name:passwd:GID:user_list
+.RE
+.sp
+字段描述如下:
+.IP group_name
+组名
+.IP password
+(加密的)组密码.如果该字段为空,则不需要密码.
+.IP GID
+组的数字标识.
+.IP user_list
+组内所有成员的用户名,以逗号分隔.
+.SH FILES(相关文件)
+/etc/group
+.SH "SEE ALSO"(另见)
+.BR login "(1), " newgrp "(1), " passwd (5) 
diff --git a/src/man5/host.conf.5 b/src/man5/host.conf.5
new file mode 100644
index 0000000..3d4b149
--- /dev/null
+++ b/src/man5/host.conf.5
@@ -0,0 +1,108 @@
+.\" 版权所有(c) 1997 Martin Schulze (joey at infodrom.north.de)
+.\" 中文版版权所有 riser,www.linuxforum.net 2000
+.\"
+.\" 这是免费的文档; 
+.\" 你可以遵照自由软件基金会出版的 GNU 通用出版许可版本 2
+.\" 或者更高版本的条例来重新发布和/或修改它.
+.\"
+.\" GNU通用出版许可中涉及到的"目标代码 (object code) "和" 可执行程序
+.\" (executables)"可解释为任意文档格式化的输出或者排版系统,
+.\" 包括中间的和已输出的结果.
+.\"
+.\" 该文档的发布寄望于能够实用,但并不做任何担保;
+.\" 甚至也不提供隐含的商品性的保证或者针对特殊目的适用性.
+.\" 参见GNU通用版权许可以获知详情.
+.\"
+.\" 你应该接收到与本文档一同发布的GNU通用版权许可的副本;
+.\" 如果没有,请写信到自由软件基金会
+.\" (Free Software Foundation), Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+.\" 
+.\" 许多文本复制于resolv+(8)的手册页.
+.TH HOST.CONF 5 "1997年2月2日" "Debian/GNU Linux" "(Linux系统管理)"
+.SH NAME (名称)
+host.conf \- 解析配置文件
+.SH DESCRIPTION (描述)
+文件
+.I /etc/host.conf
+包含了为解析库声明的配置信息. 它应该每行含一个配置关键字,
+其后跟着合适的配置信息. 系统识别的关键字有:
+.IR order ", " trim ", " multi ", " nospoof "和 " reorder.
+每个关键字在下面将分别进行介绍:
+
+.TP
+.I order
+这个关键字确定了主机查询是如何执行的.
+它后面应该跟随一个或者更多的查询方式,
+这些查询方式用逗号分隔. 有效的方式有:
+.IR bind ", " hosts "和 " nis .
+.TP
+.I trim
+这个关键字可以多次出现. 每次出现其后应该跟随单个的以句点开头的域名.
+如果设置了它, resolv+ 库会自动截去任何通过 DNS 解析出来的主机名后面的域名.
+这个选项用于本地主机和域. (相关信息: trim 对于通过 NIS 或者 hosts 
+文件获取的主机名无效. 需要注意的是要确保在 hosts 文件中的每条记录的
+第一个主机名是全名或者非全名, 以适合于本地安装.)
+.TP
+.I multi
+有效的值为:
+.IR on "和 "off .
+如果设置为
+.IR on ,
+resolv+ 库会返回一台主机在
+.I /etc/hosts
+文件中出现的的所有有效地址, 而不只是第一个. 默认情况下设为
+.I off ,
+否则可能会导致拥有庞大 hosts 文件的站点潜在的性能损失.
+.TP
+.I nospoof
+有效的值为:
+.IR on " 和 "off .
+如果设置为
+.IR on ,
+resolv+ 库会尝试阻止主机名欺骗以提高使用
+.BR rlogin " 和 "rsh
+的安全性. 它是如下这样工作的:
+在执行了一个主机地址的查询之后, resolv+ 会对该地址执行一次主机名的查询.
+如果两者不匹配, 查询即失败.
+.TP
+.I spoofalert
+如果该选项设为
+.I on
+同时也设置了
+.I nospoof
+选项, resolv+ 会通过 syslog 设施记录错误报警信息. 默认的值为
+.IR off .
+.TP
+.I reorder
+有效的值为
+.IR on " 和 "off .
+如果设置为
+.IR on ,
+resolv+ 会试图重新排列主机地址, 以便执行
+.BR gethostbyname (3)
+时, 首先列出本地地址(即在同一子网中的地址).
+重新排序适合于所有查询方式. 默认的值为
+.IR off .
+.SH FILES(相关文件)
+.TP
+.I /etc/host.conf
+解析配置文件
+.TP
+.I /etc/resolv.conf
+解析配置文件
+.TP
+.I /etc/hosts
+本地主机数据库
+.SH SEE ALSO(又见)
+.BR gethostbyname (3),
+.BR hostname (7),
+.BR resolv+ (8),
+.BR named (8)
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.B 2000/11/26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man5/info.5 b/src/man5/info.5
new file mode 100644
index 0000000..ac09331
--- /dev/null
+++ b/src/man5/info.5
@@ -0,0 +1,56 @@
+.\" info(5)
+.\" Copyright (C) 1998 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.TH INFO 5 "GNU Info" "FSF"
+.SH NAME
+info \- 易读的在线文档
+.SH "DESCRIPTION 描述"
+Info 文件格式是一种易于解析的在线文档表示格式。它可以用
+.I emacs(1)
+和
+.I info(1)
+以及一些其他程序来阅读。
+.PP
+Info 文件通常创建自
+.I texinfo(5)
+源文件,使用
+.IR makeinfo(1)
+命令。但是,如果需要的话,也可以自行创建。
+.PP
+要查看 Texinfo 语言和相关工具的全面描述,请查看 Texinfo 手册(以 Texinfo 自身写成)。最简单的,从 shell 中运行这个命令:
+.RS
+.I info texinfo
+.RE
+或者在 Emacs 中输入按键序列:
+.RS
+.I M-x info RET m texinfo RET
+.RE
+也可以把你带到那里。
+.SH "AVAILABILITY 下载"
+ftp://ftp.gnu.org/pub/gnu/texinfo-<version>.tar.gz
+.br
+或者任何 GNU 镜像站。
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+.SH "SEE ALSO 参见"
+info(1), install-info(1), makeinfo(1), texi2dvi(1),
+.br
+texindex(1).
+.br
+emacs(1), tex(1).
+.br
+texinfo(5).
diff --git a/src/man5/inittab.5 b/src/man5/inittab.5
new file mode 100644
index 0000000..a99cd64
--- /dev/null
+++ b/src/man5/inittab.5
@@ -0,0 +1,241 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH INITTAB 5 "May 19, 1998" "" "Linux 系统管理员手册"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+inittab \- 与 sysv 兼容的 init 进程使用的初始化文件格式
+.\"}}}
+.\"{{{  Description
+.SH 描述
+\fBinittab\fP 文件描述在系统引导及通常的操作期间,
+都启动哪些进程 (比如 \& /etc/init.d/boot, /etc/init.d/rc, getty 等等).
+.BR Init (8)
+讨论有关 \fIrunlevels (运行级)\fP 的概念, 每一个
+运行级都有它自己启动进程的集合. 有效的运行级
+为 \fB0\fP\-\fB6\fP 加上用于 \fBondemand\fP 条目
+的 \fBA\fP, \fBB\fP 和 \fBC\fP.
+\fBinittab\fP 文件中的每一个条目有如下的格式:
+.RS
+.sp
+\fIid\fP:\fIrunlevels\fP:\fIaction\fP:\fIprocess\fP
+.sp
+.RE
+以 `#' 开头的行被忽略.
+.\"{{{  id
+.IP \fIid\fP
+.B inittab 
+文件中条目的唯一标识, 限于 1-4 个字符
+(如果是用版本号小于 5.2.18 或 a.out 的库编译生成的
+sysvinit 程序, 则仅限于 2 个字符).
+.sp
+注意: 对于 getty 或其它的注册进程, \fIid\fP 必须是
+响应的终端线路的 tty 后缀, 如 \fB1\fP 响应 \fBtty1\fP,
+否则, 注册过程不能正常的工作.
+.\"}}}
+.\"{{{  runlevels
+.IP \fIrunlevels\fP
+列出发生指定动作的运行级.
+.\"}}}
+.\"{{{  action
+.IP \fIaction\fP
+描述要发生的动作.
+.\"}}}
+.\"{{{  process
+.IP \fIprocess\fP
+要执行的进程. 如果 process 域以一个 `+' 开头,
+.B init 
+不会在 utmp 和 wtmp 文件中为此进程记帐.
+这是由于 getty 自己主持 utmp/wtmp 记帐的需要,
+同时这也是一个历史遗留的漏洞.
+.\"}}}
+.PP
+\fIrunlevels\fP 域可以包含表示不同运行级的多
+个字符, 例如 \fB123\fP 表示本进程在运行级为
+1, 2 和 3 时都要启动.
+用于 \fBondemand\fP 条目的 \fIrunlevels\fP 域可以
+包含 \fBA\fP, \fBB\fP, 或 \fBC\fP.  
+用于 \fBsysinit\fP, \fBboot\fP, 和 \fBbootwait\fP 
+条目的 \fIrunlevels\fP 域被忽略.
+.PP
+当改变运行级时, 在新运行级中没有给出的那些正在
+运行的进程被杀死, 先使用 \s-2SIGTERM\s0 信号,
+然后是 \s-2SIGKILL\s0.
+.PP
+\fIaction\fP 域可以使用的动作有:
+.\"{{{  respawn
+.IP \fBrespawn\fP
+该进程只要终止就立即重新启动 (如 \& getty).
+.\"}}}
+.\"{{{  wait
+.IP \fBwait\fP
+只要进入指定的运行级就启动本进程, 并且
+.B init 
+等待该进程的结束.
+.\"}}}
+.\"{{{  once
+.IP \fBonce\fP
+只要进入指定的运行级就启动一次本进程.
+.\"}}}
+.\"{{{  boot
+.IP \fBboot\fP
+在系统引导期间执行本进程. \fIrunlevels\fP
+域被忽略.
+.\"}}}
+.\"{{{  bootwait
+.IP \fBbootwait\fP
+在系统引导期间执行本进程. 并且
+.B init 
+等待该进程的结束 (如 \& /etc/rc).  
+\fIrunlevels\fP 域被忽略.
+.\"}}}
+.\"{{{  off
+.IP \fBoff\fP
+什么也不做.
+.\"}}}
+.\"{{{  ondemand
+.IP \fBondemand\fP
+在进入 \fBondemand\fP 运行级时才会执行
+标记为 \fBondemand\fP 的那些进程.
+无论怎样, 实际上没有改变运行级 
+(\fBondemand\fP 运行级就是 `a', `b',
+和 `c').
+.\"}}}
+.\"{{{  initdefault
+.IP \fBinitdefault\fP
+\fBinitdefault\fP 条目给出系统引导
+完成后进入的运行级, 如果不存在这样的条目,
+.B init
+就会在控制台询问要进入的运行级.
+\fIprocess\fP 域被忽略.
+.\"}}}
+.\"{{{  sysinit
+.IP \fBsysinit\fP
+系统引导期间执行此进程. 本进程会在 \fBboot\fP 或
+\fB bootwait\fP 条目之前得到执行.
+\fIrunlevels\fP 域被忽略.
+.\"}}}
+.\"{{{  powerwait
+.IP \fBpowerwait\fP
+本进程在电源不足时执行.
+通常在有进程把 UPS 和计算机相连时
+通知 init 进程, \fBInit\fP 在继续其它工作
+之前要等待此进程结束.
+.\"}}}
+.\"{{{  powerfail
+.IP \fBpowerfail\fP
+类似 \fBpowerwait\fP, 但是\fBinit\fP 不等待
+此进程完成.
+.\"}}}
+.\"{{{  powerokwait
+.IP \fBpowerokwait\fP
+在 \fBinit\fP 收到电源已经恢复的通知后
+立即执行此进程.
+.\"}}}
+.\"{{{  powerfailnow
+.IP \fBpowerfailnow\fP
+本进程在 \fBinit\fP 被告知 UPS 电源快耗尽
+同时外部电源失败 (无效) 时被执行.
+(假设 UPS 和监视进程能够发现这样的情况).
+.\"}}}
+.\"{{{  ctrlaltdel
+.IP \fBctrlaltdel\fP
+在 \fBinit\fP 收到 SIGINT 信号时执行此进程.
+这意味着有人在控制台按下了
+\fBCTRL\-ALT\-DEL\fP 组合键,
+典型地, 可能是想执行类似
+\fBshutdown\fP 然后进入单用户模式或
+重新引导机器.
+.\"}}}
+.\"{{{  kbrequest
+.IP \fBkbrequest\fP
+本进程在 \fBinit\fP 收到一个从控制台
+键盘产生的特殊组合按键信号时执行.
+.sp
+对于此功能本文档尚未完成; 可以在 kbd-x.xx 包中
+找到更多信息 (在写作本文档时最新的是 kbd-0.94).
+当然你可能想为某些 "KeyboardSignal" 行为
+映射组合键, 如为了映射 (Alt-上箭头)
+可以在键盘映射文件中 使用如下的方式:
+.RS
+.sp
+alt keycode 103 = KeyboardSignal
+.sp
+.RE
+.\"}}}
+.\"}}}
+.\"{{{  Examples
+.SH 举例 
+这是一个与老的 Linux inittab 文件类似的例子文件:
+.RS
+.sp
+.nf
+.ne 7
+# inittab for linux
+id:1:initdefault:
+rc::bootwait:/etc/rc
+1:1:respawn:/etc/getty 9600 tty1
+2:1:respawn:/etc/getty 9600 tty2
+3:1:respawn:/etc/getty 9600 tty3
+4:1:respawn:/etc/getty 9600 tty4
+.fi
+.sp
+.RE
+本文件在引导时执行 \fB/etc/rc\fP 并且在
+ty1\-tty4 上启动 getty 进程.
+.PP
+一个更详尽的 \fBinittab\fP 会有不同的运行级
+(参考本身的注释):
+.RS
+.sp
+.nf
+.ne 19
+# 进入默认的运行级
+id:2:initdefault:
+
+# 在进行其它工作之前先完成系统初始化.
+si::sysinit:/etc/rc.d/bcheckrc
+
+# 运行级 0 挂起系统, 6 重新引导, 1 单用户模式.
+l0:0:wait:/etc/rc.d/rc.halt
+l1:1:wait:/etc/rc.d/rc.single
+l2:2345:wait:/etc/rc.d/rc.multi
+l6:6:wait:/etc/rc.d/rc.reboot
+
+# "3 个键" 按下时要做的工作.
+ca::ctrlaltdel:/sbin/shutdown -t5 -rf now
+
+# 运行级2和3: 在控制台生成 getty 进程, 运行级为3时在 modem 上生成 getty.
+1:23:respawn:/sbin/getty tty1 VC linux
+2:23:respawn:/sbin/getty tty2 VC linux
+3:23:respawn:/sbin/getty tty3 VC linux
+4:23:respawn:/sbin/getty tty4 VC linux
+S2:3:respawn:/sbin/uugetty ttyS2 M19200
+
+.fi
+.sp
+.RE
+.\"}}}
+.\"{{{  Files
+.SH 文件 
+/etc/inittab
+.\"}}}
+.\"{{{  Author
+.SH 作者  
+\fBInit\fP 由 Miquel van Smoorenburg 
+(miquels at cistron.nl) 所写. 本手册页由
+Sebastian Lederer (lederer at francium.informatik.uni-bonn.de) 所写,
+由 Michael Haardt (u31b3hs at pool.informatik.rwth-aachen.de) 修改.
+.\"}}}
+.\"{{{  See also
+.SH 参考     
+.BR init (8),
+.BR telinit (8)
+.\"}}}
+
+.SH 中文版维护人
+.B Yin Huaming <yhmact at pzh-public.sc.cninfo.net>
+.SH 中文版最新更新
+2002年7月13日
+.SH 中国 Linux 论坛 man 手册页翻译计划
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/ipc.5 b/src/man5/ipc.5
new file mode 100644
index 0000000..b61b386
--- /dev/null
+++ b/src/man5/ipc.5
@@ -0,0 +1,374 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio at crcc.it)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.TH IPC 5 "November 1, 1993" "Linux 0.99.13" "Linux Programmer's Manual" 
+.SH NAME
+ipc \- System V 进程间通信机制
+.SH SYNOPSIS 总览
+.nf
+.B
+# include <sys/types.h>
+.B
+# include <sys/ipc.h>
+.B
+# include <sys/msg.h>
+.B
+# include <sys/sem.h>
+.B
+# include <sys/shm.h>
+.SH DESCRIPTION
+本手册页涉及 System V 进程间通信机制在 Linux 下的实现:
+消息队列, 信号灯集合, 以及共享内存段. 下面提到
+.B 资源
+时, 就是指上面这些通信机制中的一种.
+.SS 资源访问权限
+对每个资源, 系统用一个共有的
+.BR "struct ipc_perm"
+结构来存放权限信息, 以确定一个 ipc 操作是否可访问该资源. 在
+.I <sys/ipc.h>
+中定义了
+.B ipc_perm,
+其成员如下: 
+.sp
+.B
+	ushort cuid;	
+/* 创建者 uid */
+.br
+.B
+	ushort cgid;	
+/* 创建者 gid */
+.br
+.B
+	ushort uid;
+/* 所有者 uid */
+.br
+.B
+	ushort gid;
+/* 所有者 gid */
+.br
+.B
+	ushort mode;
+/* 读/写权限 */
+.PP
+结构
+.B ipc_perm
+的成员
+.B mode
+的低九位定义了对该资源的访问许
+可, 以确定一个执行了 ipc 系统调用的进程能否访问该资源. 其解
+释如下:
+.sp
+.nf
+	0400	用户可读.
+	0200	用户可写.
+.sp .5
+	0040	组成员可读.
+	0020	组成员可写.
+.sp .5
+	0004	其他用户可读.
+	0002	其他用户可写.
+.fi
+.PP
+系统没有使用执行位 0100, 0010 和 0001. 另外, 这里的 "可写" 等
+效于信号灯集合里的 "可更改". 
+.PP
+在
+.I <sys/ipc.h>
+系统头文件里还定义了如下符号常数:
+.TP 14
+.B IPC_CREAT
+如果 key 不存在就创建.
+.TP
+.B IPC_EXCL
+如果 key 已经存在则失败.
+.TP
+.B IPC_NOWAIT
+如果请求必须等待, 产生错误.
+.TP
+.B IPC_PRIVATE
+私有 key.
+.TP
+.B IPC_RMID
+删除资源.
+.TP
+.B IPC_SET
+设置资源选项.
+.TP
+.B IPC_STAT
+取得资源选项.
+.PP
+请注意
+.B IPC_PRIVATE
+是一个
+.B key_t
+类型, 而别的符号常数都是标志域,它们的可以或( OR )在一起形成
+.B int
+类型.
+.SS 消息队列
+消息队列由正整数
+.RI "(它的 " msqid )
+唯一标识, 其结构体
+.BR "struct msquid_ds"
+在
+.IR <sys/msg.h>
+中定义, 包含如下成员: 
+.sp
+.B
+	struct ipc_perm msg_perm;
+.br
+.B
+	ushort msg_qnum;	
+/* 队列中消息数目 */
+.br
+.B
+	ushort msg_qbytes;	
+/* 一条队列最大字节数 */
+.br
+.B
+	ushort msg_lspid;	
+/* 上一次 msgsnd 调用的 pid  */
+.br
+.B
+	ushort msg_lrpid;	
+/* 上一次 msgrcv 调用的 pid */
+.br
+.B
+	time_t msg_stime;	
+/* 上一次 msgsnd 的时间 */
+.br
+.B
+	time_t msg_rtime;	
+/* 上一次 msgrcv 的时间 */
+.br
+.B
+	time_t msg_ctime;	
+/* 上一次修改时间 */
+.TP 11
+.B msg_perm
+.B ipc_perm
+结构, 指明了对该消息队列的访问权限. 
+.TP
+.B msg_qnum
+该队列当前的消息总数.
+.TP
+.B msg_qbytes
+该队列所允许的消息正文最大字节总数.
+.TP
+.B msg_lspid
+最后做
+.B msgsnd
+系统调用的进程的 ID. 
+.TP
+.B msg_lrpid
+最后做
+.B msgrcv
+系统调用的进程的 ID. 
+.TP
+.B msg_stime
+最近做
+.B msgsnd
+系统调用的时间.
+.TP
+.B msg_rtime
+最近做
+.B msgrcv
+系统调用的时间.
+.TP
+.B msg_ctime
+最后一次改变
+.B msqid_ds
+结构成员的时间. 
+.SS 信号灯集合
+信号灯集合由正整数
+.RI "(它的 " semid )
+唯一标识, 并有一个与之关联的结构体
+.BR "struct semid_ds"
+它在
+.IR <sys/sem.h>
+中定义, 包含如下成员: 
+.sp
+.B
+	struct ipc_perm sem_perm;
+.br
+.B
+	time_t sem_otime;	
+/* 上一次操作的时间 */
+.br
+.B
+	time_t sem_ctime;	
+/* 上一次修改的时间 */
+.br
+.B
+	ushort sem_nsems;	
+/* 集合中信号灯数目 */
+.TP 11
+.B sem_perm
+.B ipc_perm
+结构, 指明对该信号灯集合的访问权限. 
+.TP
+.B sem_otime
+最近做
+.B semop
+系统调用的时间.
+.TP
+.B sem_ctime
+最近做
+.B semctl
+系统调用的时间, 该调用修改了上面结构的一个成员
+或者改变了属于该集合的一个信号灯. 
+.TP
+.B sem_nsems
+该信号灯集合的信号灯数目. 集合中每个信号灯都可以用从
+.B 0
+到
+.BR sem_nsems\-1
+的一个非负整数来引用. 
+.PP
+一个信号灯就是一个
+.B "struct sem"
+结构, 包含如下成员: 
+.sp
+.B
+	ushort semval;	
+/* 信号灯值 */
+.br
+.B
+	short sempid;	
+/* 上一次操作的进程的 pid */
+.br
+.B
+	ushort semncnt;	
+/* 等待增加 semval 值的进程数目 */
+.br
+.B
+	ushort semzcnt;	
+/* 等待 semval = 0 的进程数目 */
+.TP 11
+.B semval
+该信号灯值,是一个非负整数. 
+.TP
+.B sempid
+最后一个对该信号灯做操作的进程 ID. 
+.TP
+.B semncnt
+等待增加
+.B semval
+的进程数. 
+.TP
+.B semznt
+等待
+.B semval
+变成 0 的进程数. 
+.SS 共享内存段
+共享内存段由正整数
+.RI "(它的 " shmid )
+唯一标识, 有一个关联的结构类型
+.BR "struct shmid_ds"
+在
+.IR <sys/shm.h>
+中定义, 包含如下成员: 
+.sp
+.B
+	struct ipc_perm shm_perm;
+.br
+.B
+	int shm_segsz;	
+/* 段尺寸 */
+.br
+.B
+	ushort shm_cpid;	
+/* 创建者 pid */
+.br
+.B
+	ushort shm_lpid;	
+/* 上一次操作的进程的 pid */
+.br
+.B
+	short shm_nattch;	
+/* 目前附着的进程数目 */
+.br
+.B
+	time_t shm_atime;	
+/* 上一次附着的时间 */
+.br
+.B
+	time_t shm_dtime;	
+/* 上一次脱离的时间 */
+.br
+.B
+	time_t shm_ctime;	
+/* 上一次修改的时间 */
+.TP 11
+.B shm_perm
+.B ipc_perm
+结构, 指明对共享内存段的访问权限. 
+.TP
+.B shm_segsz
+共享内存段的大小, 以字节为单位. 
+.TP
+.B shm_cpid
+创建该共享内存段的进程的 ID. 
+.TP
+.B shm_lpid
+最后执行
+.B shmat
+或者
+.B shmdt
+系统调用的进程 ID. 
+.TP
+.B shm_nattch
+当前对该共享内存段的活跃连接数. 
+.TP
+.B shm_atime
+最后做
+.B shmat
+系统调用的时间.
+.TP
+.B shm_dtime
+最后做
+.B shmdt
+系统调用的时间.
+.TP
+.B shm_ctime
+最后做
+.B shmctl
+系统调用的时间, 如果该调用改变了
+shmid_ds.
+.SH "又见"
+.BR ftok (3),
+.BR msgctl (2),
+.BR msgget (2),
+.BR msgrcv (2),
+.BR msgsnd (2),
+.BR semctl (2),
+.BR semget (2),
+.BR semop (2),
+.BR shmat (2),
+.BR shmctl (2),
+.BR shmget (2),
+.BR shmdt (2).
+
+.SH "[中文版维护人]"
+.B name <email>
+.SH "[中文版最新更新]"
+.BR 2001/02/02
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/issue.5 b/src/man5/issue.5
new file mode 100644
index 0000000..a022e8f
--- /dev/null
+++ b/src/man5/issue.5
@@ -0,0 +1,33 @@
+.\"
+.\" 版权所有(c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" 这是免费的文档;你可以遵照自由软件基金会出版的GNU通用出版许可版本2或者更高版本的条例来重新发布和/或修改它.
+.\"
+.\" GNU通用出版许可中涉及到的"目标代码(object code)"和"可执行程序(executables)"可解释为任意文档格式化的输出或者排版系统,包括中间的和已输出的结果.
+.\"
+.\" 该文档的发布寄望于能够实用,但并不做任何担保;甚至也不提供隐含的商品性的保证或者针对特殊目的的适用性.参见GNU通用版权许可以获知详情.
+.\"
+.\" 你应该接收到与本文档一同发布的GNU通用版权许可的副本;如果没有,请写信到自由软件基金会(Free Software Foundation), Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+.\"
+.\" 于1993年1月25日星期日11:06:22由Rik Faith <faith at cs.unc.edu>修改
+.\" 于1996年10月21日星期一17:47:19 EDT由Eric S. Raymond <esr at thyrsus.com>修改
+.TH ISSUE 5 "1993年7月24日" "Linux" "Linux Programmer's Manual(Linux程序员手册)"
+.SH NAME (名称)
+issue \- 登录前的信息和标识文件
+.SH DESCRIPTION (描述)
+\fB/etc/issue\fP 是一个文本文件,它包含了在登录提示符出现之前显示的信息
+或者系统标识.如果
+.BR getty (1)
+支持的话,它可能包括多个 \fB\@\fIchar\fP 和 \fB\e\fP\fIchar\fP 序列.
+.SH FILES (相关文件)
+/etc/issue
+.SH "SEE ALSO"(另见)
+.BR getty (1),
+.BR motd (5)
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/07/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/keymaps.5 b/src/man5/keymaps.5
new file mode 100644
index 0000000..0790d57
--- /dev/null
+++ b/src/man5/keymaps.5
@@ -0,0 +1,422 @@
+.\" @(#)keymaps.5 1.10 940130 aeb
+.TH KEYMAPS 5 "24 April 1998"
+.SH NAME
+keymaps \- 对键盘映射文件的描述
+
+.SH "描述 (DESCRIPTION)
+.IX "keymaps" "" "\fLkeymaps\fR \(em keyboard table descriptions for loadkeys and dumpkeys" ""
+.IX "loadkeys" "keyboard table descriptions" "\fLloadkeys\fR" "keyboard table descriptions"
+.IX "dumpkeys" "keyboard table descriptions" "\fLdumpkeys\fR" "keyboard table descriptions"
+.IX keyboard "table descriptions for loadkeys and dumpkeys" keyboard "table descriptions for \fLloadkeys\fR and \fLdumpkeys\fR"
+.IX "translation tables"
+.LP
+.BR loadkeys (1)
+能够 通过 调入 指定的 文件 修改 键盘翻译表, 键盘翻译表 通常 用于 内核的 
+键盘驱动程序; 另外 
+.BR dumpkeys (1)
+可以 根据 键盘翻译表 产生 这些文件.
+
+.LP
+这些文件 的 结构 大体上 和
+.BR xmodmap (1)
+的 输入文件 类似. 文件 由 字符集(charset), 键定义(key), 和 串定义 组成,
+可以 包含 注释.
+
+.LP
+注释行 以
+.B !
+或
+.B #
+字符 开始, 到 行尾 结束, 忽略 其中 任何 字符.
+注意, 注释行 不需要 从 第一列 开始, 而
+.BR xmodmap (1)
+有 这个 要求.
+
+.LP
+键盘映射(keymap)文件 是 面向行 定义 的; 一个 完整的定义 必须 在 一个 逻辑行
+上 阐明. 不过 逻辑行 可以 分割 在 多个 物理行 上, 只需 在 各个 物理行尾 添加
+一个 反斜杠 (\\) 即可.
+
+.SH "包含文件 (INCLUDE FILES)"
+一个 键盘映射表 可以 包含 其他 键盘映射表, 就象这样:
+.LP
+.RS
+include "pathname"
+.RE
+
+.SH "字符集定义 (CHARSET DEFINITIONS)"
+字符集 定义 的 格式 是:
+.LP
+.RS
+.EX
+charset "iso-8859-x"
+.EE
+.RE
+.LP
+它 指出 如何 解释 后面的 keysym.
+例如, 在 iso-8859-1 中, 符号 mu (或 micro) 的 代码是 0265,
+而 iso-8859-7 中的 mu 是 0354.
+
+.SH "键值的完整定义 (COMPLETE KEYCODE DEFINITIONS)"
+键值(keycode) 的 完整定义 形式 如下:
+.LP
+.RS
+.nf
+.BI keycode " keynumber " = " keysym keysym keysym" \fR...
+.fi
+.RE
+.LP
+.I keynumber
+是 按键的 内部 标识值, 大致 相当于 它的 扫描码(scan code).
+.I keynumber
+可以 用 十进制数, 八进制数, 或 十六进制数 表示. 
+八进制数 以 零 开始, 十六进制数 以
+.B 0x
+开始.
+.LP
+.I keysym
+表示 键盘 动作(action), 单个 按键 可以 编联(bind) 多至 256 个 动作.
+动作 指 输出 Latin1 字符 或 字符序列, 切换 控制台 或 键盘映射, 以及
+重启动 机器 等. (可以 用 dumpkeys(1) 获得 完整的 列表, 如 
+.BI " dumpkeys -l"
+\&.)
+.LP
+在
+.I keysym
+前面 加上 前缀 '+' (加号) 表明 这个 keysym 是 字符, 因而 能够 受到
+CapLock 的 影响, 就象 Shift 的 作用 一样 (CapLock 反转 Shift 的 状态).
+缺省情况下, 配合 CapLock 能够 产生 ASCII 字母 'a'-'z' 和 'A'-'Z'.
+如果 Shift+CapsLock 无法 产生 小写字母, 试在 映射文件 中 加入
+.LP
+.RS
+.nf
+.BI "keycode 30 = +a  A"
+.fi
+.RE
+
+.LP
+当 一个 按键 按下时, 发生 什么 事件 取决于 当时 哪个 修饰键(modifier)
+起作用. 键盘驱动程序 支持 8 个 修饰键, 它们是 (任意顺序)
+Shift, AltGr, Control, Alt, ShiftL, ShiftR, CtrlL 和 CtrlR.
+下面 的 表格 列出 各个 修饰键 对应的 权值, 权值 是 2 的 指数:
+.LP
+.RS
+.TP 24
+.I 修饰键
+.I 权值
+.TP 24
+Shift
+  1
+.PD 0
+.TP 24
+AltGr
+  2
+.TP 24
+Control
+  4
+.TP 24
+Alt
+  8
+.TP 24
+ShiftL
+ 16
+.TP 24
+ShiftR
+ 32
+.TP 24
+CtrlL
+ 64
+.TP 24
+CtrlR
+128
+.PD
+.RE
+.LP
+按键 的 有效动作 通过 加权值 获得, 加权值 是 有效修饰键 的 权值和.
+缺省情况下 没有 使用 修饰键, 对应的 动作代码 是 0, 也就是说, 当一个键
+按下 或 弹起 时, 相应 动作 位于 键定义行 的 第一列. 又如, 如果 Shift 和
+Alt 键 处于 有效状态, 产生的 动作代码 是 9 (对应 第十列).
+
+.\" (译注: 作者 对 修饰键 状态 一直 使用 有效(in effect) 一词, 译者 的 理解 是, 
+.\" 修饰键 不能 简单的 以 按下和弹起 确定 其 状态, 键盘驱动程序 能够 重定义 
+.\" 修饰键 行为, 例如, 按 一下 表示 生效, 再按 一下 表示 解除)
+
+.LP
+通过 编联 适当的 动作, 我们 可以 改变 有效的 修饰键.
+例如, 如果 对 某个键 编联了 名称 Shift, 当 这个键 按下 时, shift 修饰键
+就 生效, 当 这个键 弹起 时, shift 修饰键 状态 就 解除. 
+如果 对 某个键 编联了 名称 AltGr_Lock, 当 按下 这个键 时, AltGr 修饰键 就
+生效, 再次 按下 这个键 就 解除 AltGr 修饰键 状态.
+(缺省情况下, Shift, AltGr, Control 和 Alt 编联到 同名 按键 上;
+AltGr 指 右侧 Alt 键.)
+.LP
+注意, 编联 修饰键 时 应该 非常 小心, 否则 键盘映射 可能 无法 使用.
+例如, 如果 某个键 的 第一列 定义为 Control, 其他列 定义为 VoidSymbol, 你 就
+有麻烦 了. 因为 按下 这个键 使 Control 修饰键 生效, 随后 的 动作 应该 来自
+第五列 (见上表). 因此 当 这个键 弹起 时, 第五列 的 动作 被 采用, 但 这里 是 
+VoidSymbol, 什么 都 不发生. 这意味着 尽管 你 已经 松开了 这个键, 可是 Control
+修饰键 仍然 有效. 反复 敲击 这个键 也 无济于事. 要 避免 这样 的 事情, 你 应该
+把 所有的 列 定义为 相同的 修饰符, 为此 后面 将要 介绍 一个 常用的 缩写.
+
+.LP
+.I keysym
+可以 采用 十进制数, 八进制数, 十六进制数 或者 符号表示法.
+数字表示 的 形式 和
+.IR keynumber 
+一样, 而 符号表示 类似于
+.BR xmodmap (1)
+中 用的. 需要注意 数字符号 的 区别.
+数字符号 '0', ..., '9' 在
+.BR xmodmap (1)
+中 被换成 对应的 单词 'zero', 'one', ... 'nine', 防止 和 数字表示法 混淆.
+
+.LP
+在
+.I keysym
+中 使用 数字表示法 非常 不利于 移植, 这是 因为 不同 的 内核版本 之间, 各键 
+的 动作代码 可能 不一样, 因此 不鼓励 使用 数字表示法, 除非 内核 支持的 某项
+键盘动作 在 当前的 
+.BR loadkeys (1)
+中 没有 对应的 符号名称.
+
+.LP
+下面 介绍 一些 缩写 标记, 它们 能够 增加 可读性, 减少 输入量, 同时
+也能 减少 输入错误.
+.LP
+首先, 你 可以 给出 一个 映射说明行, 如
+.LP
+.RS
+.EX
+keymaps 0-2,4-5,8,12
+.EE
+.RE
+.LP
+表明 键定义行 并不 使用 全部的 256 列, 而 只用 指定的 列. 
+(本例为: 映射 plain, Shift, AltGr, Control, Control+Shift, Alt 和 
+Control+Alt, 只有 7 列, 而非 256 列.)
+如果 没有 定义 这样的 映射说明行, 将 产生 缺省 定义 keymaps 0-M, 
+此处的 M+1 是 所有 键定义行 中 发现 的 最大项数.
+
+.LP
+其次, 键定义行尾 的 VoidSymbol 项 可以 不出现. VoidSymbol 表示 一个
+键盘动作, 它 不产生 输出, 也不出现 其他 效果. 例如, 把 30 号键 定义为
+输出 'a', 按下 Shift 时 输出 'A', 按下 其他 修饰键 如 AltGr 之类 则
+什么都 不做, 你 可以 写成
+.LP
+.RS
+.nf
+keycode  30 = a	A
+.fi
+.RE
+.LP
+来 代替 冗长的
+.LP
+.RS
+.nf
+keycode  30 = a	A	VoidSymbol	VoidSymbol \\
+		VoidSymbol VoidSymbol VoidSymbol ...
+.fi
+.RE
+.LP
+为了方便, 你 可以 用 更简洁 的 定义. 如果 键定义行 中, 等号 后面 只有 一个
+动作码, 它 就可以 拥有 额外的 含义. 如果 这个 动作码 (数字 或 符号 形式)
+不是 一个 ASCII 字符, 这 意味着 该 动作码 在 所有 定义了的 行 上 有效.
+反过来, 如果 动作码 是 ASCII 字符, 位于 'a', ..., 'z' 或 'A', ..., 'Z' 
+之间, 对于 不同的 修饰键组合, 有 如下 定义
+(下表 列出 两种 可能情况: 动作码 是 一个 小写字母, 表示为 'x', 或者是 一个
+大写字母, 表示为 'Y'.)
+.LP
+.RS 4
+.TP 24
+.I modifier
+.I symbol
+.TP 24
+none
+x			Y
+.PD 0
+.TP 24
+Shift
+X			y
+.TP 24
+AltGr
+x			Y
+.TP 24
+Shift+AltGr
+X			y
+.TP 24
+Control
+Control_x		Control_y
+.TP 24
+Shift+Control
+Control_x		Control_y
+.TP 24
+AltGr+Control
+Control_x		Control_y
+.TP 24
+Shift+AltGr+Control
+Control_x		Control_y
+.TP 24
+Alt
+Meta_x		Meta_Y
+.TP 24
+Shift+Alt
+Meta_X		Meta_y
+.TP 24
+AltGr+Alt
+Meta_x		Meta_Y
+.TP 24
+Shift+AltGr+Alt
+Meta_X		Meta_y
+.TP 24
+Control+Alt
+Meta_Control_x	Meta_Control_y
+.TP 24
+Shift+Control+Alt
+Meta_Control_x	Meta_Control_y
+.TP 24
+AltGr+Control+Alt
+Meta_Control_x	Meta_Control_y
+.TP 24
+Shift+AltGr+Control+Alt
+Meta_Control_x	Meta_Control_y
+.PD
+.RE
+.LP
+.SH "单一修饰键定义 (SINGLE MODIFIER DEFINITIONS)"
+上述 键定义行 的 格式 总要 定义 全部 M+1 个 可能的 组合, 无论 该行 是不是
+真的 有 那么多 动作. 然而 还有 另一种 语法定义, 用来说明 只产生 一个 动作
+的 特定键组合. 如果 你的 键盘映射 只有 少数 不符合 需要, 如 AltGr+function
+键, 这个 功能 就特别 有用. 你 可以 制作 一个 小型文件, 在 调入 键盘映射文件
+后 重定义 所需的 映射. 这种 形式 的 语法 是:
+.LP
+.BR "" { " plain " "| <modifier sequence> } " keycode
+.I keynumber
+.B =
+.I keysym
+.LP
+例如:
+.RS
+.EX
+.nf
+plain keycode 14 = BackSpace
+control alt keycode 83 = Boot
+alt keycode 105 = Decr_Console
+alt keycode 106 = Incr_Console
+.fi
+.EE
+.RE
+这里的 "plain" 指 该键的 基本动作 (就是说, 没有 使用 修饰键 时),
+不影响 该键 的 其他 修饰键 组合.
+
+.SH "字符串定义 (STRING DEFINITIONS)"
+除了 注释 和 键定义行, 键盘映射表 还包含 字符串定义. 它们 用于 定义
+各个 功能键(function key) 的 动作码 输出 些 什么. 字符串定义 的 语法 是:
+.LP
+.RS
+.B string
+.I keysym
+.B =
+.BI
+"text"
+.RE
+.LP
+.I text
+包括 文本字符, 八进制字符, 或者 三个 escape 序列: \fB\\n\fP, \fB\\\\\fP, 
+和 \fB\\"\fP, 分别 代表 换行, 反斜杠, 和 引号. 八进制字符 的 格式 是 
+反斜杠 后面 列出的 八进制数字, 最多 三个 八进制数字.
+
+
+.SH "组合定义 (COMPOSE DEFINITIONS)"
+组合(键)定义 的 语法 是:
+.LP
+.RS
+.BI "compose '" char "' '" char "' to '" char "'"
+.RE
+描述 两个 字节 怎样 组合成 第三者 (当 使用 少见的 声调符 或 组合键 时).
+它 常用来 在 标准键盘 上 输入 声调符 之类.
+
+.SH "缩写 (ABBREVIATIONS)
+从 kbd-0.96 开始 可以 使用 多种 缩写.
+.TP
+.B "strings as usual"
+定义 常用 字符串 (而不是 它们 编联的 键).
+.TP
+\fBcompose as usual for "iso-8859-1"\fP
+定义 常用 compose 组合.
+.LP
+如果 想要 知道 哪些
+.I keysym
+能够 用在 键盘映射表 中, 请 使用
+.LP
+.RS
+.nf
+.B dumpkeys --long-info
+.fi
+.RE
+.LP
+遗憾的是, 目前 仍然 没有 对 各个 符号 的 说明. 您 可以 从 符号名称 上
+推测, 或者 参考 内核源程序.
+.LP
+
+.SH "示例 (EXAMPLES)"
+(小心 使用 keymaps 行, 如 `dumpkeys` 显示的 第一行, 或者 "keymaps 0-15" 之类)
+.LP
+下面的 输入项 交换 左侧 Control 键 和 Caps Lock 键 的 功能:
+.LP
+.RS
+.nf
+keycode  58 = Control
+keycode  29 = Caps_Lock
+.fi
+.RE
+.LP
+正常的时候, 键值 58 是 Caps Lock, 键值 29 是 Control 键.
+.LP
+下面的 输入项 使 Shift 键 和 CapsLock 键 更好用 一点, 象 老式 打字机.
+就是说, 按下 Caps Lock 键 (一次 多次 皆可) 使 键盘 进入 CapsLock 状态,
+按 任一 Shift 键 解除 该 状态:
+.LP
+.RS
+.nf
+keycode  42 = Uncaps_Shift
+keycode  54 = Uncaps_Shift
+keycode  58 = Caps_On
+.fi
+.RE
+.LP
+下面的 输入项 设置 增强形键盘 的 编辑键, 使 它 更象是 VT200 系列 终端:
+.LP
+.RS
+.nf
+keycode 102 = Insert
+keycode 104 = Remove
+keycode 107 = Prior
+shift keycode 107 = Scroll_Backward
+keycode 110 = Find
+keycode 111 = Select
+control alt   keycode 111 = Boot
+control altgr keycode 111 = Boot
+.fi
+.RE
+.LP
+下面是 一个 示范, 将 字符串 "du\\ndf\\n" 和 AltGr-D 编联. 我们 使用了
+"空闲的" 动作码 F100, 通常 它 没有被 使用:
+.LP
+.RS
+.nf
+altgr keycode 32 = F100
+string F100 = "du\\ndf\\n"
+.LP
+
+.SH "另见 (SEE ALSO)"
+.BR loadkeys (1),
+.BR dumpkeys (1),
+.BR showkey (1),
+.BR xmodmap (1)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/lilo.conf.5 b/src/man5/lilo.conf.5
new file mode 100644
index 0000000..3bd2fb9
--- /dev/null
+++ b/src/man5/lilo.conf.5
@@ -0,0 +1,449 @@
+.\" @(#)lilo.conf.5 1.0 950728 aeb
+.\" This page is based on the lilo docs, which carry the following
+.\" COPYING condition:
+.\"
+.\" LILO program code, documentation and auxiliary programs are
+.\" Copyright 1992-1994 Werner Almesberger.
+.\" All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms of parts of or the
+.\" whole original or derived work are permitted provided that the
+.\" original work is properly attributed to the author. The name of the
+.\" author may not be used to endorse or promote products derived from
+.\" this software without specific prior written permission. This work
+.\" is provided "as is" and without any express or implied warranties.
+.\"
+.TH LILO.CONF 5 "20 March 2000"
+.SH NAME
+lilo.conf \- lilo 配置文件
+.SH 描述
+.LP
+默认情况下,本文件 (
+.IR /etc/lilo.conf 
+) 由引导管理程序 lilo 读取 (参考 lilo(8)).
+.LP
+它看起来可能象这样:
+.IP
+.nf
+boot = /dev/hda
+delay = 40
+compact
+vga = normal
+root = /dev/hda1
+read-only
+image = /zImage-2.5.99
+        label = try
+image = /zImage-1.0.9
+        label = 1.0.9
+image = /tamu/vmlinuz
+	label = tamu
+	root = /dev/hdb2
+	vga = ask
+other = /dev/hda3
+	label = dos
+	table = /dev/hda
+.fi
+.LP
+该文件表明 lilo 使用设备 /dev/hda 的
+Master Boot Record (简称 MBR, 主引导记录).
+(有关 lilo 使用方法 及与其它操作系统 相互影响的讨论,
+参考 lilo 文档中 user.tex 部分).
+.LP
+引导时, 引导载入程序会等待 4 秒 (40 个十分之一秒),
+使你有机会按下 Shift 键.
+如果没有按键动作发生, 第一个核心映像文件 (/zImage-1.5.99,
+也许你刚在 五分钟之前 完成的安装) 将被引导;
+否则, 引导载入程序会 询问你要引导哪一个映像.
+如果你不知道 有哪些选项可以选择, 按 [TAB] 键
+(如果使用的 是美国键盘布局, 还可以按 [?]),
+可以得到一个菜单,
+这时你就可以 选择引导较新的核心,
+或者是老的稳定的核心, 甚至是另外的 根文件系统上的核心,
+也可以引导其它的操作系统,
+在 lilo.conf 中可以配置最多 16 个映像.
+.LP
+正如上面所见, 配置文件以一定数量的全局
+选项开始 (例子中开始的 6 行),
+紧接着是各映像的描述选项,
+在各映像中的选项会覆盖全局选项.
+
+.SH "全局选项"
+这部分有许多 可能的关键字, 下面部分尽可能按照
+user.tex 中的描述进行解释.
+.TP
+.BI "backup=" backup-file
+使用
+.I backup-file
+文件 (可能是一个设备,如 
+.IR /dev/null )
+代替原来的
+.IR /boot/boot.NNNN 
+存放引导扇区的备份.
+.TP
+.BI "boot=" boot-device
+指定包含引导扇区的设备名称 (如硬盘分区),
+如果忽略了该关键字, 引导扇区就从
+当前作为 root 文件系统
+安装的设备读取 (也可能是进行写入).
+.TP
+.BI "change-rules"
+定义引导时用于改变分区类型的数字 ('隐藏').
+细节请参考 user.tex 中的 "Partition type change rules" 部分.
+.TP
+.BI "compact"
+尽力把读取相邻扇区的请求合并为一次
+读取. 这可以显著 缩短装载时间并减小映像,
+在用软盘引导时, 强烈推荐使用 `compact' 
+选项.
+.TP
+.BI "default=" name
+使用指定的映像文件 作为默认值加以引导.
+如果忽略了 `default' 选项,
+配置文件中 第一个出现的映像会被引导.
+.TP
+.BI "delay=" tsecs
+在装载第一个映像之前等待的十分之一秒数.
+这在需要激活键盘之后立即从硬盘
+启动系统非常有用, 如果忽略了本选项或设置为 0
+将不等待.
+.TP
+.BI "disk=" device-name
+为指定的磁盘给出非标准参数,
+有关细节参考 user.tex 中的 "Disk geometry" 部分.
+特别有用的是 `bios=' 参数,
+BIOS 为磁盘编号为0x80, 0x81等,但是它
+不知道 Linux 磁盘对应的是哪一个 BIOS 盘
+(因为这依赖于 BIOS 的设置, 也依赖于 BIOS 的类型),
+所以如果你使用的是设置很特殊的系统,
+你就必须说明 Linux 磁盘与 BIOS 盘之间的对应关系.
+例如:
+.sp
+.nf
+    disk=/dev/sda
+            bios=0x80
+    disk=/dev/hda
+            bios=0x81
+.fi
+.sp
+意思是, 你的第一块 SCSI 盘 (译者注: 通常id=0) 
+对应一号 BIOS 盘,
+第一个 IDE 口上的主盘对应二号 BIOS 盘.
+.TP
+.BI "disktab=" disktab-file
+指定包含磁盘参数表的文件名称.
+如果忽略 `disktab' 选项,
+映像安装程序查找
+.I /etc/disktab
+, 不鼓励使用 disktab .
+.TP
+.BI "fix-table"
+允许 lilo 调整分区表中的三维地址 (sector/head/cylinder).
+每个分区表项包含有本分区
+起始扇区与结束扇区的三维地址和线性地址,
+如果分区不是对应在整个磁道上并且
+有其它的操作系统 (如PC/MS-DOS 或 OS/2) 在使用
+同一磁盘, 它们可能会修改三维地址,
+lilo 可以在分区上保存两种地址
+的引导扇区, 如果使用了 `fix-table' 选项,
+lilo 可以重新调整错误的三维开始地址.
+
+警告: 这并不能保证其它的操作系统
+随后不重新修改地址, 
+并且发生其它的负作用.
+正确的方法是对磁盘重新分区,
+使得分区对应于整个磁道.
+.TP
+.BI "force-backup=" backup-file
+类似 `backup', 如果原来有同名的备份文件就予以改写.
+.TP
+.BI "ignore-table"
+通知 lilo 忽略混乱的分区表.
+.TP
+.BI "install=" boot-sector
+把指定的文件作为新的引导扇区进行安装,
+如果忽略 `install' 选项,默认使用
+.I /boot/boot.b.
+.TP
+.BI "linear"
+生成线性的扇区地址代替 sector/head/cylinder 类型的三维地址.
+线性地址是在运行时进行转换,
+它不依赖于磁盘的几何结构.
+注意如果使用 `linear' 选项,
+就不能使用 便携式磁盘 (如软盘) 作为引导盘,
+这是因为 决定磁盘 几何结构的 BIOS 服务
+对于软盘 不能可靠的工作.
+对于大磁盘使用 `linear' 选项时,
+.I /sbin/lilo
+可以生成对不可到达 磁盘区域的引用,
+这是由于 在引导完成之前 并不知道扇区的三维地址.
+.TP
+.BI "lba32"
+生成 32 位的逻辑块地址代替 sector/head/cylinder 结构的三维地址.
+如果 BIOS 支持数据分组 (packet) 定址, 
+就会使用这类调用去存取磁盘,
+这样就可以从大于 8.4Gb 的分区进行引导,
+变换的几何结构仅限于是 C:H:S 类型的地址 ;
+如果 BIOS 不支持数据分组定址, 'lba32' 就如 'linear' 选项,
+地址被转换为 C:H:S 结构.
+使用 'lba32' 选项,所有的软盘仍保持 C:H:S 类型的格式.
+.TP
+.BI "lock"
+允许自动记录引导命令作为下次引导的缺省值.
+通过这种方法, lilo 可以"锁定"一个选项直到
+手工覆盖它.
+.TP
+.BI "map=" map-file
+指定映像文件的位置.
+如果忽略了 `map' 选项,就使用
+.I /boot/map .
+.TP
+.BI "message=" message-file
+指定包含有在引导提示出现之前
+显示的消息的文件名称.
+在打印 "LILO " 之后等待按 Shift 键
+过程中消息不会显示.
+在此消息中, FF 字符 ([Ctrl L]) 清除本地屏幕,
+消息文件的大小限制为 65535 字节,
+如果改变或删除了此文件, 映像文件必须重建.
+.TP
+.BI "nowarn"
+禁止对后来的危险发出警告.
+.TP
+.BI "optional"
+每一个 `optional' 选项 (参考下面) 都作用
+于所有的映像.
+.TP
+.BI "password=" password
+每一个 `password=...' 选项 (参考下面) 都作用
+于所有的映像.
+.TP
+.BI "prompt"
+在任何按键之前强制进入引导提示.
+如果设置了 'prompt' 但是没有设置 `timeout',
+就不能自动引导机器 (需要人工干预). 
+.TP
+.BI "restricted"
+每一个 `restricted' 选项 (参考下面) 都作用
+于所有的映像.
+.TP
+.BI "serial=" parameters
+允许从串行线路进行控制.
+指定的串行端口被初始化,
+引导载入程序接受从此端口和 PC 键盘的输入.
+在串行线路上发送一个中断 (break)
+相当于在控制台按下 shift 键,
+可以得到载入程序的注意.
+允许串行线路控制时, 
+所有的引导映像都应该加上口令保护.
+比如线路是连接在 modem 上时,
+相对于控制台, 这是最起码的安全要求.
+参数串有如下的语法格式:
+.sp
+.nf
+    <port>[,<bps>[<parity>[<bits>]]]
+.fi
+.sp
+<port>:  串行端口号, 以 0 为基准. 0 对应于 COM1,
+也就是 /dev/ttyS0, 依此类推. 
+可以使用所有的四个端口 (如果有的话).
+.sp
+<bps>:  本端口的波特率. 支持如下波特率:
+110, 150, 300, 600, 1200, 2400, 4800 和 9600 bps. 
+默认是 2400 bps.
+.sp
+<parity>:  线路上使用的奇偶校验方式. 载入程序忽略
+输入的奇偶校验, 即省略第八位, 
+下面字符描述校验方式 (大小写均可):
+n 无校验, e 偶校验, o 奇校验.
+.sp
+<bits>:  字符位数. 仅支持 7 位或 8位,
+如果无奇偶校验, 默认为 8 位, 有校验则为 7 位.
+.sp
+如果设置了 `serial' 选项, 
+`delay' 的值自动增加到 20.
+.sp
+例如: serial=0,2400n8 用缺省的参数初始化 COM1 端口.
+.TP
+.BI "timeout=" tsecs
+设置键盘输入的超时时间 (以十分之一秒为单位).
+到了指定的时间没有按键发生,
+第一个映像被自动引导.
+类似的, 如果用户停顿时间太长,
+口令输入过程也被终止,
+默认没有超时时间.
+.TP
+.BI "verbose=" level
+打开详细报告过程.
+更大的数字可以得到更多的输出,
+如果在 lilo 的命令行附加了 \-v ,
+level 值会再增加. 最大值为 5.
+
+.LP
+另外, 核心配置参数
+.BR append ", " ramdisk ", " read-only ", " read-write ", " root
+和
+.B vga
+也在全局选项部分设置.
+如果没有在各核心映像部分
+修改它们, 默认是使用了的.
+
+.SH "各映像选项"
+各个映像部分从任意一行开始.
+.sp
+.nf
+    \fBimage=\fP\fIpathname\fP
+.fi
+.sp
+(用于指出包含有 Linux 核心的文件或设备), 
+或者如下面这行:
+.sp
+.nf
+    \fBother=\fP\fIpathname\fP
+.fi
+.sp
+指出要引导的其它系统.
+.LP
+
+在以前, \fBimage\fP 行指定引导的设备时,
+就必须用
+.TP
+.BI "range=" start-end
+格式给出扇区的范围.
+.LP
+
+后来 (要引导其它系统) 使用了下面这三个选项 : 
+.TP
+.BI "loader=" chain-loader
+指出使用的 chain 装入程序.
+默认时使用
+.I /boot/chain.b
+, 当不是从第一块硬盘或软盘引导时, 必须给出
+chain 装入程序.
+.TP
+.BI "table=" device
+给出包含有分区表的设备.
+如果忽略了此选项, 引导载入程序就
+不会给被引导的操作系统传送分区信息,
+(有些操作系统可以通过其它办法
+知道自己是从哪个分区引导的, 如 MS-DOS
+通常在它的引导扇区
+保存磁盘的几何结构或分区信息).
+注意: 如果通过 `table' 选项引用的
+分区表设备被修改了, 就需要重新执行 /sbin/lilo.
+.TP
+.BI "unsafe"
+在建立映射时不能存取引导扇区.
+这样禁止某些包括分区表的完整性检查,
+如果引导扇区在固定格式的软盘设备上,
+使用 UNSAFE 可以避免在执行
+映射安装程序时需要把可读盘放入驱动器中,
+`unsafe' 和 `table' 不兼容.
+.LP
+
+在上面所示的两种情况下, 都适用下述选项 :
+.TP
+.BI "label=" name
+指出每个映像的标识文件名称 (不含路径).
+通过设置各种 `label', 可以为映像指定不同的名称.
+.TP
+.BI "alias=" name
+通过使用别名可以为同一个项目指定第二个名称.
+.TP
+.BI "lock"
+(参考前面.)
+.TP
+.BI "optional"
+如果在映射建立时
+没有提供映像文件就忽略它.
+这对于指定 实际上并不存在的实验核心
+是非常有用的.
+.TP
+.BI "password=" password
+通过 password 口令保护映像.
+.TP
+.BI "restricted"
+如果参数是在命令行中给出的,
+为引导映像就仅需要口令 (如 single).
+.LP
+
+.SH "Linux 核心选项"
+如果引导的是 Linux 核心,
+可以传递命令行参数到核心.
+.TP
+.BI "append=" string
+在传递给核心的参数表中附加本选项.
+典型的应用是指定不能完全自动
+探测到的硬件参数,
+或者是可能有风险的情况. 例如:
+.sp
+.nf
+     append = "hd=64,32,202"
+.fi
+.sp
+.TP
+.BI "literal=" string
+类似 `append', 但删除其它选项 (如设置 root 设备).
+因为通过 `literal' 选项, 可以无意中删除掉其它关键选项,
+所以它不能用在全局选项部分.
+.TP
+.BI "ramdisk=" size
+指出 RAM 磁盘的大小, 0 表示没有
+RAM 盘需要建立. 忽略了此选项,
+RAM 盘的大小就使用引导映像中原来配置的值.
+.TP
+.BI "read-only"
+指出 root 文件系统以只读方式安装.
+典型地, 系统在启动过程中 (在 fsck 检查过程之后)
+以读写方式安装 root 文件系统.
+.TP
+.BI "read-write"
+以读写方式安装 root 文件系统.
+.TP
+.BI "root=" root-device
+指定作为 root 安装的设备.
+如果使用的是
+.B current
+, root 就设置为当前以根
+文件系统安装的设备.
+如果用 -r 选项改变了 root 的值,
+就使用各个自己的设备. 
+如果忽略了 'root' 选项,
+就使用核心中包含的 root 设备.
+(该值是在核心的 Makefile 文件中
+由 ROOT_DEV 给出并在编译核心时
+就确定了的, 以后可以用 rdev(8) 程序修改.)
+.TP
+.BI "vga=" mode
+引导时可以选择的 VGA 文本模式.
+可以使用下列值:
+.sp
+.BR normal :
+普通 80x25 文本模式 .
+.sp
+.BR extended " (或 " ext ):
+选择 80x50 文本模式 .
+.sp
+.BR ask :
+引导停止并等待用户输入.
+.sp
+<number>:  使用此数字对应的文本模式.
+通过 vga=ask 引导, 然后按 [Enter] 
+可以得到一个支持的列表输出.
+.sp
+忽略了此选项, 就使用核心映像中
+包含的 VGA 模式设置值.
+(该值是在核心的 Makefile 文件中
+由 SVGA_MODE 给出并在编译核心时就确定了的,
+以后可以用 rdev(8) 程序修改.)
+
+.SH "参考"
+lilo(8), rdev(8).
+.br
+lilo 的发行版都有很多的文档资料, 以上仅仅是其中的一小部分.
+
+.SH "中文版维护人"
+.B Yin Huaming <yhmact at pzh-public.sc.cninfo.net>
+.SH "中文版最新更新"
+2002年7月10日
+.SH  "中文 man 手册页翻译计划"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/lmhosts.5 b/src/man5/lmhosts.5
new file mode 100644
index 0000000..373f5dc
--- /dev/null
+++ b/src/man5/lmhosts.5
@@ -0,0 +1,67 @@
+.TH LMHOSTS 5 "11 Nov 1999" "lmhosts 2.0.6"
+.SH NAME
+lmhosts \- samba的NetBIOS主机列表文件
+.SH 总览
+lmhosts是一个samba的NetBIOS名字到IP地址映射文件。
+.SH 描述
+此文件是samba套件的一部分。
+.PP
+lmhosts是一个samba的NetBIOS名字到IP地址映射文件。
+它与/etc/hosts文件的格式非常相似,除了主机名部分必须符合NetBIOS名字格式。
+.SH 文件格式
+这是一个在一行之内包含NetBIOS名字的ASCII文件。每行有两个字段用空格互相隔开。
+任何以#号开始的条目将被忽略。这个文件的每一行都包含了以下的信息:
+.TP
+.B IP 
+地址 \- 点分十进制格式。 
+.TP
+.B NetBIOS
+名字 \- 名字格式最大用十五个字符,后面可以跟以#号起头的两位十六进制值用于指出
+NetBIOS名字类型。
+
+如果后跟的#被忽略,那么所给出的IP地址将返回所有与给出的名字相匹配的机器名,而不管查找
+的是何种NetBIOS名字类型。 
+.PP 
+下面有个例子:
+.PP 
+# 
+.br 
+# Sample Samba lmhosts file\&. 
+.br 
+# 
+.br 
+192\&.9\&.200\&.1	TESTPC 
+.br 
+192\&.9\&.200\&.20	NTSERVER#20 
+.br 
+192\&.9\&.200\&.21	SAMBASERVER 
+.br 
+.PP 
+这里包含了三个IP地址到NetBIOS名字的映射。第一和第三个将返回名字分别为"TESTPC"和
+"SAMBASERVER"的任何查询结果,而不管所需的是何种类型NetBIOS名字成份。
+.PP
+第二个映射将只返回当被查询的"NTSERVER"名字类型为"0x20"的值。任何其它的名字类型
+将不会被解释。
+.PP
+lmhosts文件的默认保存位置与smb.conf文件的目录相同。
+.SH 版本
+此手册页是针对samba套件版本2.0的。
+.SH 另见
+smb.conf (5), smbclient (1), smbpasswd (8), samba (7). 
+.SH 作者
+samba软件和相关工具最初由Andrew Tridgell 
+samba-bugs at samba.org创建。samba现在由开发组作为类似Linux内核开发采用的开放源代
+码计划方式来发展。
+.PP
+samba手册页最初由Karl 
+Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在
+ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。
+.PP
+请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/locale.5 b/src/man5/locale.5
new file mode 100644
index 0000000..f5bd271
--- /dev/null
+++ b/src/man5/locale.5
@@ -0,0 +1,528 @@
+.TH locale 5 "09 Nov 1994" "National Language Support" "Linux用户手册"
+.SH NAME
+locale \- 地域定义文件的描述
+.SH 描述
+.B 地域
+定义文件含有
+.B localedef(1) 
+命令所需的全部信息.
+
+定义文件由几个小节组成, 一个小节详细地描述地域的一个范畴.
+.SH 语法
+地域定义文件以一个包含有如下关键字的文件头开头:
+.TP
+.I <escape_char>
+其后所跟字符在文件的其余部分被特别解释为逃逸字符, 
+逃逸字符缺省为反斜杠(
+.B \\\\  
+).
+.TP
+.I <comment_char>
+后面所跟字符在文件的其余部分要特别解释为注释符, 注
+释符缺省为数字符号(
+.B #
+).
+
+.PP
+地域定义分成几个部分, 每个部分对应一个地域范畴, 每个部分都
+可以复制别的地域范畴的内容, 也可以自己重新新定义一个, 如果
+一个范畴想要复制别的范畴, 则在该范畴的定义里唯一有效的关键
+字是
+.BR copy ,
+其后跟随要复制的地域范畴的名字.
+
+.SS LC_CTYPE
+.B LC_CTYPE
+范畴的定义以第一栏的
+.I LC_CTYPE 
+字符串开始.
+
+可以有如下关键字:
+
+.TP
+.I upper
+跟随一个大写字母列表. 字母
+.B A
+到
+.B Z
+自动包括. 被说明
+为
+.B cntrl, digit, punct,
+或
+.B space
+的字符则不允许包括.
+
+.TP
+.I lower
+跟随一个小写字母列表. 字母
+.B a
+到
+.B z
+自动包括. 同样也
+不允许如下字符:
+.B cntrl, digit, punct,
+或者
+.B space.
+
+.TP
+.I alpha
+跟随一个字母列表. 所有被说明为
+.B upper
+或 
+.B lower
+的字符
+都自动包括. 但如下字符仍然不允许:
+.B cntrl, digit, punct,
+或
+.B space
+
+.TP
+.I digit
+后面跟随的字符被划分为数字. 只允许数字
+.B 0 
+到
+.B 9 ,
+并且
+缺省它们也被包括进来了.
+
+.TP
+.I space
+跟随一列被定义为空格的字符. 那些被说明为
+.B upper, lower, alpha, digit, graph,
+或者
+.B xdigit
+的字符是不被允许的. 而字符
+.B <space>, <form-feed>, <newline>, <carriage-return>, <tab>,
+以及
+.B <vertical-tab>
+则被自动包括进来.
+
+.TP
+.I cntrl
+跟随一个控制字符列表.那些被说明为
+.B upper, lower, alpha, digit, punct, graph, print
+或者
+.B xdigit
+的字符不允许包括.
+
+.TP
+.I punct
+跟随一个标点符号的列表. 不允许包括那些被说明为
+.B upper, lower, alpha, digit, cntrl, xdigit
+或者
+.B <space>
+字符.
+
+.TP
+.I graph
+跟随一个可打印字符列表, 但不包括空格符
+.BR <space> .
+被
+说明为
+.B upper, lower, alpha, digit, xdigit
+或
+.B punct 
+的字符自动包括, 而被说明为
+.B cntrl
+的字符则不允许包括.
+
+.TP
+.I print
+跟随一个可打印字符列表, 包括空格符
+.BR <space> .
+被定义
+为
+.B upper, lower, alpha, digit, xdigit, punct
+或
+.B <space>
+的字符自动包括. 而被说明为
+.B cntrl
+的字符则
+不被允许.
+
+.TP
+.I xdigit
+跟随一个被归类为十六进制数的字符的列表. 十进制数字必
+须被包括, 其后还有一个或多个的升序顺序的六字符集, 缺
+省包括下列字符:
+.B 0
+到
+.B 9,
+.B a
+到
+.B f,
+.B A
+到
+.B F.
+
+.TP
+.I blank
+跟随一个被归类为
+.B blank
+字符的列表. 自动包括的字符有
+.B <space>
+和
+.B <tab>.
+
+.TP
+.I toupper
+跟随一个从小写字母到大写字母的映射列表. 每个映射都是
+一个小写-大写字母对, 中间以
+.B ,
+分隔, 并且用圆括号括起
+来. 各个映射之间则用分号分隔.
+
+.TP
+.I tolower
+跟随一个从大写字母到小写字母的映射列表. 如果没有出现
+关键字tolower的话, 就使用它的逆toupper.
+
+.PP
+.B LC_CTYPE
+定义以字符串
+.I END LC_CYTPE
+结束.
+
+.SS LC_COLLATE
+.B LC_COLLATE
+范畴定义了校对字符的规则. 由于libc的局限性, 所以
+并没有实现所有的POSIX选项. 
+
+该定义以第一栏的字符串
+.B LC_COLLATE
+为开始标记.
+
+允许如下关键字:
+
+.TP
+.I collating-element
+
+.TP
+.I collating-symbol
+
+.PP
+order-definition以下列行开始:
+.TP
+.I order_start
+.PP
+后随一个如下关键字的列表:
+.B forward,
+.B backward
+或者
+.B position.
+顺序定义由一些描述顺序的行组成, 并以如下关键字终止,
+.TP
+.I order_end.
+.PP
+
+要得到更多细节请查阅在
+.B /usr/lib/nls/src
+里的源代码. 请注意
+几个例子:
+.B POSIX,
+.B Example
+以及 
+.B Example2.
+
+.PP 
+.B LC_COLLATE
+的定义以字符串
+.I END LC_COLLATE
+结束.
+
+.SS LC_MONETARY
+该定义以第一栏里的字符串
+.B LC_MONETARY
+开始.
+
+可以有如下关键字:
+
+.TP
+.I int_curr_symbol
+其后跟随国际货币符号. 必须是一个四字符的字符串, 包含
+有ISO 4217标准所定义的国际货币符号(三字符)以及一个
+分隔符号.
+
+.TP
+.I currency_symbol
+其后跟随当地的货币符号.
+
+.TP
+.I mon_decimal_point
+其后跟随一个字符串, 该字符串在格式化货币的数额时用做
+十进制定界符号.
+
+.TP
+.I mon_thousands_sep
+其后跟随一个字符串, 该字符串在格式化货币的数额时用做
+组分隔符号.
+
+.TP
+.I mon_grouping
+其后跟随一个字符串, 该字符串描述货币数额格式.
+
+.TP
+.I positive_sign
+其后跟随一个字符串, 该字符串被用于指示货币数额的正号.
+
+.TP
+.I negative_sign
+其后跟随一个字符串, 该字符串被用于指示货币数额的负号.
+
+.TP
+.I int_frac_digits
+其后跟随货币数额的小数部分的数字位数, 该数在用
+.B int_curr_symbol
+格式化货币数额时要用到.
+
+.TP
+.I frac_digits
+其后跟随货币数额的小数部分的数字位数, 该数在用
+.B currency_symbol
+格式化货币数额时要用到.
+
+.TP
+.I p_cs_precedes
+其后跟随一个整数, 如果
+.I currency_symbol
+或者
+.I int_curr_symbol
+要置于格式化的货币数额前面, 该整数就为
+.BR 1 , 
+否则为
+.BR 0 .
+
+.TP
+.I p_sep_by_space
+跟随一个整数,
+.RS
+.TP
+.B 0
+表明在货币符号和数额之间不打印空格,
+.TP
+.B 1
+表明在货币符号和数额之间打印一个空格,
+.TP
+.B 2 
+的意思是如果货币符号与数额的正号相邻的话, 其间打印一个空格,
+.RE
+
+.TP
+.I n_cs_precedes
+.RS
+.TP
+.B 0 
+- 负号跟随于数额,
+.TP
+.B 1
+- 负号领先于数额,
+.RE
+
+.TP
+.I n_sep_by_space
+一个整数,设为
+.B 0
+要求在
+.I currency_symbol
+或者 
+.I int_curr_symbol
+和一个负的货币数额之间没有空格分隔, 设为
+.B 1
+则要求在两者之间有一个空格分隔, 而设为
+.B 2
+则要求在货币符号和负号之间有一个空格分隔, 如果这两者相邻的话,
+
+.TP
+.I p_sign_posn
+.RS
+.TP
+.B 0
+意思是要用括号括住
+.I currency_symbol
+或
+.I int_curr_symbol.
+和货币数额,
+.TP
+.B 1
+正号要领先于货币数额和货币符号
+.I currency_symbol
+或
+.I int_curr_symbol.
+.TP
+.B 2
+正号跟在货币数额和货币符号
+.I currency_symbol
+或
+.I int_curr_symbol
+的后面.
+.TP
+.B 3
+正号领先于货币符号
+.I currency_symbol
+或
+.I int_curr_symbol.
+.TP
+.B 4
+正号跟在货币符号
+.I currency_symbol
+或
+.I int_curr_symbol
+的后面.
+.RE
+
+.TP
+.I n_sign_posn
+.RS
+.TP
+.B 0
+意思是要用括号括住
+.I currency_symbol
+或
+.I int_curr_symbol.
+和货币数额,
+.TP
+.B 1
+负号领先于货币数额及货币符号
+.I currency_symbol
+或
+.I int_curr_symbol.
+.TP
+.B 2
+负号跟在货币数量及货币符号
+.I currency_symbol
+或
+.I int_curr_symbol
+的后面.
+.TP
+.B 3
+负号领先于货币符号
+.I currency_symbol
+或
+.I int_curr_symbol.
+.TP
+.B 4
+负号跟在货币符号
+.I currency_symbol
+或
+.I int_curr_symbol
+的后面.
+.RE
+
+.PP
+.B LC_MONETARY
+定义以字符串
+.I END LC_MONETARY.
+结束,
+
+.SS LC_NUMERIC
+该定义以第一栏的字符串
+.B LC_NUMERIC
+开始.
+
+可有如下关键字:
+
+.TP
+.I decimal_point
+跟随一个字符串, 该串在格式化数量值时用作十进制定界符,
+.TP
+.I thousands_sep
+跟随一个字符串, 该串在格式化数量值时用作群组分隔符,
+.TP
+.I grouping
+跟随一个字符串, 该串描述数量值的格式化,
+
+.PP
+.B LC_NUMERIC
+定义以字符串
+.I END LC_NUMERIC.
+结束,
+
+.SS LC_TIME
+该定义以第一栏的字符串
+.B LC_TIME
+开始,
+
+可以有如下关键字:
+
+.TP
+.I abday
+跟随一个简写星期名列表, 该列表以Sunday或其译名开头,
+.TP
+.I day
+跟随一个星期名列表, 该列表以Sunday开头,
+.TP
+.I abmon
+跟随一个简写的月名列表,
+.TP
+.I mon
+跟随一个月名列表,
+.TP
+.I am_pm
+对
+.B am
+和
+.B pm
+的适当表示,
+.TP
+.I d_t_fmt
+适当的日期加时间格式,
+.TP
+.I d_fmt
+适当的日期格式,
+.TP
+.I t_fmt
+适当的时间格式,
+.TP
+.I t_fmt_ampm
+适当的时间格式(12小时格式),
+
+.PP
+.B LC_TIME
+定义以字符串
+.I END LC_TIME.
+结束,
+
+.SS LC_MESSAGES
+该定义以第一栏的字符串
+.B LC_MESSAGES
+开始,
+
+可以有如下关键字:
+
+.TP
+.I yesexpr
+跟随一个正则表达式, 描述可能的yes-responses. 
+
+.TP
+.I noexpr
+跟随一个正则表达式, 描述可能的no-responses. 
+
+.PP
+.B LC_MESSAGES
+定义以字符串 
+.I END LC_MESSAGES
+结束.
+
+要得到更多细节, 请查阅POSIX.2标准.
+.SH 文件
+/usr/lib/locale/	\- 当前地域范畴设置数据库
+/usr/lib/nls/charmap/*	\- 字符映射文件
+.SH BUGS
+该手册页并不完全.
+.SH 作者
+Jochen Hein (Hein at Student.TU-Clausthal.de)
+.SH CONFORMING TO
+POSIX.2
+.SH 另见
+.BR setlocale (3),
+.BR localeconv (3),
+.BR charmap (5),
+.BR locale (1),
+.BR localedef (1)
+
+.SH "[中文版维护人]"
+.B <email>
+.SH "[中文版最新更新]"
+2001/7/15
+.SH  "《Linuxfourm 中文MAN-PAGE计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/man.conf.5 b/src/man5/man.conf.5
new file mode 100644
index 0000000..ef17d19
--- /dev/null
+++ b/src/man5/man.conf.5
@@ -0,0 +1 @@
+.so man5/man.config.5
diff --git a/src/man5/man.config.5 b/src/man5/man.config.5
new file mode 100644
index 0000000..a8f15f2
--- /dev/null
+++ b/src/man5/man.config.5
@@ -0,0 +1,45 @@
+.\" @(#)man.conf
+.TH MAN.CONF 5 "30 Mar 1994"
+.SH NAME
+man.conf \- man 的 设 定 资 料
+.SH "描述"
+.LP
+.BR man (1)
+man(1) 会 读 取 本 档 。 man.conf 的 内 容 包 含 了 (a) 如 何 建 立 man 搜 寻 路 径 的 资 讯 , (b) man 所 使 用 的 程 式 ( nroff, egn, tbl 等 等 ) 的 完 整 路 径 设 定 (c) 对 特 定 副 档 名 的 解 压 缩 程 式 。
+.PP
+ 若 需 特 别 指 定 设 定 档 可 利 用 :
+.LP
+.RS
+man -C private_man.conf ...
+.RE
+.LP
+man.conf 中 的 指 令 可 附 加 选 项 。 nroff 的 常 用 选 项 可 在 grotty(1) 找 到 。 例 如 , 为 了 取 代 默 认 值
+.LP
+.RS
+.nf
+NROFF /usr/bin/groff -mandoc -Tlatin1
+.fi
+.RE
+.LP
+我 们 可 以 用
+.LP
+.RS
+.nf
+NROFF /usr/bin/groff -mandoc -Tlatin1 -P-u -P-b
+.fi
+.RE
+.LP
+以 抑 制 底 线 与 重 打 的 功 能 。
+.SH "文件 FILES"
+.I "@man_config_file@"
+.SH "参见 SEE ALSO"
+col(1), (g)eqn(1), (g)pic(1), groff(1), grotty(1), (g)refer(1), (g)tbl(1),
+less(1), man (1) and compress(1), gzip(1).
+
+
+.SH "[中文版维护人]"
+.B 软件教程之Linux Man
+.SH "[中文版最新更新]"
+.B 2001.01.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/motd.5 b/src/man5/motd.5
new file mode 100644
index 0000000..747e723
--- /dev/null
+++ b/src/man5/motd.5
@@ -0,0 +1,50 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\" 
+.\" Modified Sat Jul 24 17:08:16 1993 by Rik Faith <faith at cs.unc.edu>
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond <esr at thyrsus.com>
+.TH MOTD 5 "December 29 1992" "Linux" "Linux Programmer's Manual"
+
+.SH NAME
+motd \- 当日消息
+
+.SH "描述 (DESCRIPTION)"
+在 登录 系统 后, 执行 登录 shell 前, 
+.BR login (1)
+显示 \fB/etc/motd\fP 中的 内容.
+
+"motd" 意思是 "message of the day", 他 过去 的确 做 这个事情
+(所需的 磁盘空间 比 对 每个用户 发送 邮件 小的多).
+
+.SH "文件 (FILES)"
+/etc/motd
+
+.SH "另见 (SEE ALSO)"
+.BR login (1)
+.BR issue (5)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/nologin.5 b/src/man5/nologin.5
new file mode 100644
index 0000000..692108c
--- /dev/null
+++ b/src/man5/nologin.5
@@ -0,0 +1,42 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified Sun Jul 25 11:06:34 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Corrected Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr at thyrsus.com)
+.TH NOLOGIN 5 1992-12-29 "Linux" "Linux Programmer's Manual"
+.SH NAME
+nologin \- 阻止非root用户登录系统
+.SH 描述 DESCRIPTION
+如果存在文件 \fB/etc/nologin\fP,
+.BR login (1)
+将只允许root访问。其它用户的登录会遭到拒绝并且显示该文件中的内容给他们。
+.SH 文件 FILES
+/etc/nologin
+.SH "参见 SEE ALSO"
+.BR login (1),
+.BR shutdown (8)
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.B 2000/11/6
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/nscd.conf.5 b/src/man5/nscd.conf.5
new file mode 100644
index 0000000..7524f82
--- /dev/null
+++ b/src/man5/nscd.conf.5
@@ -0,0 +1,124 @@
+.\" -*- nroff -*-
+.\" Copyright (c) 1999, 2000 SuSE GambH Nuernberg, Germany
+.\" Author: Thorsten Kukuk <kukuk at suse.de>
+.\"
+.\" 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 version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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; see the file COPYING.  If not,
+.\" write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+.\" Boston, MA 02111-1307, USA.
+.\"
+.TH nscd.conf 5 1999-10 "GNU C Library"
+.SH NAME
+/etc/nscd.conf - 域名服务缓存守护进程配置文件
+.SH "描述 DESCRIPTION"
+该文件
+.B /etc/nscd.conf
+在启动
+.BR nscd (8)
+时读入。每一行或者指定一个属性和值,或者指定一个属性、服务和一个值。域之间通过
+空格或者TAB分开。‘#’表示注释的开始;在该字符之后到行的末尾将不会被nscd解释。
+
+有效服务为passwd,group或者hosts。
+
+.B logfile
+.I debug-file-name
+.RS
+指定调试信息写入的文件名。
+.RE
+
+.B debug-level
+.I value
+.RS
+设置希望的调试级别。
+.RE
+
+.B threads
+.I number
+.RS
+这是启动的等待请求的线程数。最少将创建5个线程。
+.RE
+
+.B server-user
+.I user
+.RS
+如果设置了该选项,nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个
+单独的缓存(-S参数),将忽略该选项。
+.RE
+
+.B enable-cache
+.I service
+.I <yes|no>
+.RS
+启用或禁用制定的
+.I 服务
+缓存。
+.RE
+
+.B positive-time-to-live
+.I service
+.I value
+.RS
+设置
+.IR service
+在指定缓存中正的项目(成功的请求)的TTL(存活时间)。
+.I Value
+以秒为单位。较大的值将增加缓存命中率从而减低平均响应时间,但是将增加缓存的一致
+性问题。
+.RE
+
+.B negative-time-to-live
+.I service
+.I value
+.RS
+设置
+.IR service
+在指定缓存中负的项目(失败的请求)的TTL(存活时间)。
+.I Value
+以秒为单位。如果存在由不在系统数据库中的uid(用户ID)(例如在以root身份解包linux
+内核源代码时)所拥有的文件将明显改善性能;应该维持较小的值以降低缓存一致性问题。
+.RE
+
+.B suggested-size
+.I service
+.I value
+.RS
+这是内部散列表的大小,
+.I value
+应该保持一个素数以达到优化效果。
+.RE
+
+.B check-files
+.I service
+.I <yes|no>
+.RS
+启用或禁用检查属于指定
+.I 服务
+的文件的改变。这些文件是
+.IR /etc/passwd,
+.IR /etc/group,
+以及
+.IR /etc/hosts。
+.RE
+
+.SH "参见"
+.BR nscd (8)
+.SH "作者"
+.B nscd
+由Thorsten Kukuk和Ulrich Drepper完成。
+
+.SH "[中文版维护人]"
+.B 梁萌 <mengliang99 at sohu.com>
+.SH "[中文版最新更新]"
+.BR 2002/5/18
+.SH "[中国linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/nsswitch.5 b/src/man5/nsswitch.5
new file mode 100644
index 0000000..0c515f3
--- /dev/null
+++ b/src/man5/nsswitch.5
@@ -0,0 +1,331 @@
+.TH NSSWITCH.CONF 5 "11 January 1998" "Linux" "Linux Programmer's Manual"
+
+.SH NAME
+
+nsswitch.conf \- 系统数据库及名字服务开关配置文件
+
+.SH DESCRIPTION
+
+C 程序库里很多函数都需要配置以便能在本地环境正常工作, 习惯上是使用文件(例如`/etc/passwd') 来完成这一任务. 但别的名字服务, 如网络信息服务NIS, 还有域名服务DNS等, 逐渐通用起来, 并且被加入了C 程序库里, 而它们使用的是固定的搜索顺序. 
+
+.LP
+
+在有NYS 支持的Linux libc5以及GNU C Library 2.x (libc.so.6)里, 依靠一个更清晰完整的方案来解决该问题. 该方案模仿了Sun Microsystems公司在Solaris 2 的C 程序库里的方法, 也沿袭了它们的命名, 称为 "名字服务开关(NSS)". 所用 "数据库" 及其查找顺序在文件
+.B /etc/nsswitch.conf
+里指明. 
+
+.LP
+
+NSS 中可用数据库如下: 
+
+.TP
+
+.B aliases
+邮件别名, 
+.BR sendmail (8)
+使用该文件. 
+
+.TP
+
+.B ethers
+以太网号. 
+
+.TP
+
+.B group
+用户组, 
+.BR getgrent (3)
+函数使用该文件. 
+
+.TP
+
+.B hosts
+主机名和主机号, 
+.BR gethostbyname (3)
+以及类似的函数使用了该文件. 
+
+.TP
+
+.B netgroup
+网络内主机及其用户的列表, 访问规则使用该文件. 
+
+.TP
+
+.B network
+网络名及网络号, 
+.BR getnetent (3)
+函数使用该文件. 
+
+.TP
+
+.B passwd
+用户口令, 
+.BR getpwent (3)
+函数使用该文件. 
+
+.TP
+
+.B protocols
+网络协议, 
+.BR getprotoent (3)
+函数使用该文件. 
+
+.TP
+
+.B publickey
+NIS+及NFS 所使用的secure_rpc的公开密匙. 
+
+.TP
+
+.B rpc
+
+远程过程调用名及调用号, 
+.BR getrpcbyname (3)
+及类似函数使用该文件. 
+
+.TP
+
+.B services
+网络服务, 
+.BR getservent (3)
+函数使用该文件. 
+
+.TP
+
+.B shadow
+shadow用户口令,
+.BR getspnam (3)
+函数使用该文件. 
+
+.LP
+
+下面是
+
+.B /etc/nsswitch.conf
+文件的一个例子 (如果在系统中没有
+.B /etc/nsswitch.conf
+文件的话, 这就是缺省的设置):
+
+.sp 1n
+
+.PD 0
+
+.TP 16
+
+passwd:
+
+compat
+
+.TP
+
+group:
+
+compat
+
+.TP
+
+shadow:
+
+compat
+
+.sp 1n
+
+.TP
+
+hosts:
+
+dns [!UNAVAIL=return] files
+
+.TP
+
+networks:
+
+nis [NOTFOUND=return] files
+
+.TP
+
+ethers:
+
+nis [NOTFOUND=return] files
+
+.TP
+
+protocols:
+
+nis [NOTFOUND=return] files
+
+.TP
+
+rpc:
+
+nis [NOTFOUND=return] files
+
+.TP
+
+services:
+
+nis [NOTFOUND=return] files
+
+.PD
+
+.LP
+
+第一栏就是上面的表里所说的数据库, 每行的其余部分指明如何查找. 对每个数据库都可以分别指明其查找方法.
+
+.LP
+
+每个数据库的配置规范包含两个不同的项: 
+
+.PD 0
+
+.TP
+
+* 服务规范, 如`files', `db', 或者`nis'.
+
+.TP
+
+* 对查找结果的反应, 如`[NOTFOUND=return]'.
+
+.PD
+
+.LP
+
+在有NYS支持的libc5里允许服务规范`files', `nis'及`nisplus',此外,还可以对hosts 指明`dns' 为额外服务, 对passwd及group 指明`compat', 但不能对shadow指明`compat'.
+
+.LP
+
+在GNU C Library里, 每个可用的SERVICE都必须有文件
+.B /lib/libnss_SERVICE.so.1
+与之对应. 在标准安装时, 可以使用`files',`db', `nis'以及`nisplus'. 此外, 还可以对hosts 指明`dns' 为额外服务, 对passwd, group, shadow 指明`compat', 而在有NYS 支持的libc5中, 不支持最后一项服务. 
+
+.LP
+
+说明中的第二项使用户可以更好地控制查找过程. Action项处于两个服务名之间, 被括弧括着, 常规格式如下: 
+
+.LP
+
+`[' ( `!'? STATUS `=' ACTION )+ `]'
+
+.LP
+
+这里
+
+.sp 1n
+
+.PD 0
+
+.TP
+
+STATUS => success | notfound | unavail | tryagain
+
+.TP
+
+ACTION => return | continue
+
+.PD
+
+.LP
+
+对关键字的大小写并不敏感. STATUS的值是调用指定服务查找函数的结果, 意义如下: 
+
+.TP
+
+.B success
+
+没有错误发生, 得到想要的结果. 缺省action是`return'. 
+
+.TP
+
+.B notfound
+查找顺利, 但是没有得到所要的结果. 缺省action是`continue'.
+
+.TP
+
+.B unavail
+服务永久不可用. 这可能意味着必要的文件不可用, 或者,DNS 服务不可用或不允许查询.缺省action是`continue'. 
+
+.TP
+
+.B tryagain
+服务临时不可用. 可能是文件被锁住了或者服务器当前不 接受过多的连接. 缺省action是`continue'.
+
+.LP
+
+使用+/-语法的交互(compat 模式)无NYS支持的linux libc5没有名字服务开关, 但允许用户做一些简单的策略控制. 在
+.B /etc/passwd
+里可以使用+user或+ at netgroup条目(即包括NIS passwd映射所指定用户), 以及-user或- at netgroup条目(即不包括被指定用户), 还有 + 条目(即包括每个用户, 除了NIS passwd映射所排除的). 大多数人只放一个 + 在
+.B /etc/passwd
+末尾, 以此包括NIS 的所有东西. 对该情况, 开关提供更快捷的替代方式(`passwd: files nis'), 这使得无需再往
+.BR /etc/passwd,
+.B /etc/group
+及
+.BR /etc/shadow
+里添加单个 + 条目. 如果这还不够, NSS 的`compat' 服务提供了完全的+/-语法. 我们可以对伪数据库
+.BR passwd_compat,
+.B group_compat
+及
+.BR shadow_compat
+指明`nisplus'服务来覆盖缺省服务`nis', 但请注意只在GNU C Library里可以使用伪数据库. 
+
+.SH 文件 FILES
+
+名为SERVICE的服务是通过位于/lib的共享对象libnss_SERVICE.so.1实现的. 
+
+.TP 25
+
+.PD 0
+
+.B /etc/nsswitch.conf
+配置文件
+
+.TP
+
+.B /lib/libnss_compat.so.1
+为GNU C Library 2.x实现`compat'
+
+.TP
+
+.B /lib/libnss_db.so.1
+
+为GNU C Library 2.x实现`db'
+
+.TP
+
+.B /lib/libnss_dns.so.1
+为GNU C Library 2.x实现`dns'
+
+.TP
+
+.B /lib/libnss_files.so.1
+
+为GNU C Library 2.x实现`files'
+
+.TP
+
+.B /lib/libnss_hesoid.so.1
+为GNU C Library 2.x实现`hesoid'
+
+.TP
+
+.B /lib/libnss_nis.so.1
+为GNU C Library 2.x实现`nis'
+
+.TP
+
+.B /lib/libnss_nisplus.so.1
+为GNU C Library 2.x实现`nisplus'
+
+.LP
+
+.SH 注意 NOTES
+
+每个用到了nsswitch.conf 文件的进程只完整地读一次文件, 如果该文件后面被改变了, 进程将仍然使用原来的配置. 
+
+在Solaris 下, 不能静态连接使用了NSS Service 的程序, 但是在Linux 下, 则毫无问题. 
+
+.SH "[中文版维护人]"
+.B <mapping at 263.net>
+.SH "[中文版最新更新]"
+.B 2000.11.11
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/passwd.5 b/src/man5/passwd.5
new file mode 100644
index 0000000..c994b9b
--- /dev/null
+++ b/src/man5/passwd.5
@@ -0,0 +1,132 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr 2 11:32:09 MET DST 1993
+.\" Chinese Version Copyright Scorpio, www.linuxforum.net, 2000
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified Sun Jul 25 10:46:28 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Aug 21 18:12:27 1994 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Jun 18 01:53:57 1995 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Mon Jan 5 20:24:40 MET 1998 by Michael Haardt
+.\" (michael at cantor.informatik.rwth-aachen.de)
+.TH PASSWD 5 "January 5, 1998" "" "File formats"
+.SH NAME 名称
+passwd \- 密码文件
+.SH 描述
+.B Passwd
+是个文本文件, 它包含了一个系统帐户列表,
+给出每个帐户一些有用的信息,比如用户 ID,组 ID, 家目录, shell,等.
+通常它也包含了每个用户经过加密的密码.
+它通常应该是可读的(许多命令,工具程序,象
+.BR ls (1)
+用它做用户 Id 到用户名称的映射),但是只允许超级用户有写方式权限.
+.PP
+在过去美好的日子里,这种一般的读许可没有什么大问题.
+每个人都能读到加密了的密码,因为硬件太慢以至于不能解开一个
+精选的密码,另外,这基本假定是为友好的使用团体使用的.
+现在,许多人运行一些版本的影子密码套件,它们在
+.I /etc/passwd
+的密码域里是 *,而不再是加密的口令,
+加密的口令放在
+.I /etc/shadow
+中,那个文件只有超级用户能读.
+.PP
+不管是否使用了影子密码,许多系统管理员使用一个星号在加密的密码字段
+以确保用户不能鉴别他(她)自己的密码. (见下面的注意)
+.PP
+如果你建立了一个新的登录,首先放个星号在密码字段,
+然后使用
+.BR passwd (1)
+设置它.
+.PP
+(密码文件)里每行一条记录,并且每行有这样的格式:
+.sp
+.RS
+account:password:UID:GID:GECOS:directory:shell
+(帐号:密码:用户ID:组ID:一般的信息:目录:shell)
+.RE
+.sp
+字段描述如下:
+.sp
+.RS
+.TP 1.0in
+.I account
+使用者在系统中的名字,它不能包含大写字母.
+.TP
+.I password
+加密的用户密码,或者星号。
+.TP
+.I UID
+用户 ID 数。
+.TP
+.I GID
+用户的主要组 ID 数。
+.TP
+.I GECOS
+这字段是可选的,通常为了存放信息目的而设的.
+通常,它包含了用户的全名. GECOS 意思是通用电气综合操作系统(General Electric
+Comprehensive Operating System), 当 GE 的大型系统部分割售卖给 Honeywell
+时它被改为 GCOS. Dennis Ritchie 作过报告:"有时我们发送印刷品或批道作业到
+GCOS机器时,gcos 字段打断了 $IDENT 卡的信息,不太美观。"(译者:我想是太长吧) 
+.TP
+.I directory
+用户的 $HOME 目录.
+.TP
+.I shell
+登录时运行的程序(如果空的,使用
+.BR /bin/sh ).
+如果设为不存在的执行(程序),用户不能通过
+.BR login (1)
+登录.
+.RE
+.SH 注意
+如果你想建立用户组,他们的 GID 必须相等并且一定是在
+\fI/etc/group\fP的一条记录, 要不然组就不存在.
+.PP
+如果加密密码设成星号,用户将不能用
+.BR login (1)
+来登录, 但依然可以用
+.BR rlogin (1)
+登录, 通过
+.BR rsh (1)
+或者
+.BR cron (1)
+或者
+.BR at (1)
+或者 mail 过滤器等程序运行已有的进程和开始新的等.
+试图通过简单改变 shell 字段锁住一个用户结果是一样的,
+而且还附上了使用
+.B su(1) 
+的权限.
+.SH 相关文件
+.I /etc/passwd
+.SH "又见"
+.BR passwd (1),
+.BR login (1),
+.BR su (1),
+.BR group (5),
+.BR shadow (5)
+.br
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.B 2000/11/26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/proc.5 b/src/man5/proc.5
new file mode 100644
index 0000000..2315da9
--- /dev/null
+++ b/src/man5/proc.5
@@ -0,0 +1,748 @@
+.\"; Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\"; with networking additions from Alan Cox (A.Cox at swansea.ac.uk)
+.\"; and scsi additions from Michael Neuffer (neuffer at mail.uni-mainz.de)
+.\"; and sysctl additions from Andries Brouwer (aeb at cwi.nl)
+.\"; 中文版版权所有 mapping, Laser www.linuxforum.net 2000
+.\";
+.\"; This is free documentation; 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 version.
+.\";
+.\"; The GNU General Public License's references to ";object code";
+.\"; and ";executables"; are to be interpreted as the output of any
+.\"; document formatting or typesetting system, including
+.\"; intermediate and printed output.
+.\";
+.\"; This manual is distributed in the hope that it will be useful,
+.\"; but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\"; GNU General Public License for more details.
+.\";
+.\"; You should have received a copy of the GNU General Public
+.\"; License along with this manual; if not, write to the Free
+.\"; Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\"; USA.
+.\";
+.\"; Wed May 17 15:26:04 1995: faith at cs.unc.edu, updated BUGS section
+.\"; Minor changes by aeb and Marty Leisner (leisner at sdsp.mc.xerox.com).
+.\"; Sat Apr 13 02:32:45 1996: aeb at cwi.nl, added sys, various fixes.
+.\"; Mon Jul 22 17:14:44 1996: aeb at cwi.nl, minor fix.
+.TH PROC 5 ";22 July 1996"; ";"; ";Linux Programmer's Manual";
+.SH NAME
+proc \- 进程信息伪文件系统
+
+.SH 描述
+/proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅
+是解释说明 /dev/kmem. /proc里的大多数文件都是只读的, 但也可
+以通过写一些文件来改变内核变量. 
+.LP
+下面对整个 /proc 目录作一个大略的介绍.
+.LP
+.na
+.nh
+.PD 1
+.TP
+.I [number]
+在 /proc 目录里, 每个正在运行的进程都有一个以该进程
+ID 命名的子目录, 其下包括如下的目录和伪文件.
+.RS
+.TP
+.I cmdline
+该文件保存了进程的完整命令行. 如果该进程已经
+被交换出内存, 或者该进程已经僵死, 那么就没有
+任何东西在该文件里, 这时候对该文件的读操作将返回零
+个字符. 该文件以空字符 null 而不是换行符作为结
+束标志. 
+.TP
+.I cwd
+一个符号连接, 指向进程当前的工作目录. 例如, 
+要找出进程 20 的 cwd, 你可以: 
+.br
+.nf
+.ft CW
+cd /proc/20/cwd; /bin/pwd
+.fi
+.ft
+.PP
+请注意 pwd 命令通常是 shell 内置的, 在这样的情况下可能
+工作得不是很好. 
+
+.TP
+.I environ
+该文件保存进程的环境变量, 各项之间以空字符分隔, 
+结尾也可能是一个空字符. 因此, 如果要输出进程 1 的环境变量, 
+你应该: 
+.br
+.nf
+.ft CW
+(cat /proc/1/environ; echo) | tr ";\\000"; ";\\n";
+.fi
+.ft P
+.PP
+(至于为什么想要这么做, 请参阅
+.IR lilo (8).)
+.TP
+.I exe
+也是一个符号连接, 指向被执行的二进制代码.
+
+在 Linux 2.0 或者更早的版本下, 对 exe 特殊文件的
+.I readlink(2)
+返回一个如下格式的字符串: 
+
+[设备号]:节点号
+
+举个例子, [0301]:1502 就是某设备的 1502 节点, 
+该设备的主设备号为 03 (如 IDE, MFM 等驱动器),
+从设备号为 01 (第一个驱动器的第一分区).
+
+而在 Linux 2.2 下, 
+.I readlink(2) 
+则给出命令的实际路径名.
+
+另外, 该符号连接也可以正常析引用(试图打开 exe 
+文件实际上将打开一个可执行文件). 你甚至可以键入
+.I /proc/[number]/exe
+来运行 [number] 进程的副本. 
+
+带 -inum 选项的
+.IR find(1)
+命令可以定位该文件. 
+.TP
+.I fd
+进程所打开的每个文件都有一个符号连接在该子目
+录里, 以文件描述符命名, 这个名字实际上是指向
+真正的文件的符号连接,(和 exe 记录一样).
+例如, 0 是标准输入, 1 是标准输出, 2 是标准错误, 等等.
+
+程序有时可能想要读取一个文件却不想要标准输入,
+或者想写到一个文件却不想将输出送到标准输出去,
+那么就可以很有效地用如下的办法骗过(假定 -i 是输入
+文件的标志, 而 -o 是输出文件的标志): 
+.br
+.nf
+\f(CWfoobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...\fP
+.fi
+.br
+这样就是一个能运转的过滤器. 请注意该方法不能
+用来在文件里搜索, 这是因为 fd 目录里的文件是
+不可搜索的.
+
+在 UNIX 类的系统下, /proc/self/fd/N 基本上就与
+/dev/fd/N 相同. 实际上, 大多数的 Linux MAKEDEV
+脚本都将 /dev/fd 符号连接到 [..]/proc/self/fd 上. 
+.TP
+.I maps
+该文件包含当前的映象内存区及他们的访问许可. 
+
+格式如下:
+.nf
+.ft CW
+.in +3n
+address           perms offset   dev   inode
+00000000-0002f000 r-x-- 00000400 03:03 1401
+0002f000-00032000 rwx-p 0002f400 03:03 1401
+00032000-0005b000 rwx-p 00000000 00:00 0
+60000000-60098000 rwx-p 00000400 03:03 215
+60098000-600c7000 rwx-p 00000000 00:00 0
+bfffa000-c0000000 rwx-p 00000000 00:00 0
+.ft
+.fi
+.in
+.PP
+address 是进程所占据的地址空间, perms 是权限集: 
+.nf
+.in +5
+r = read
+w = write
+x = execute
+s = shared
+p = private (copy on write)
+.fi
+.in
+.PP
+offset 是文件或者别的什么的偏移量, dev 是设备号(主设
+备号:从设备号), 而 inode 则是设备的节点号. 0 表明没有
+节点与内存相对应, 就象 bss 的情形.
+.PP
+在 Linux 2.2 下还增加了一个域给可用的路径名. 
+.TP
+.I mem
+该文件并不是 mem (1:1) 设备, 尽管它们有相同的设备号.
+/dev/mem 设备是做任何地址转换之前的物理内存,
+而这里的 mem 文件是访问它的进程的内存.目前这个 mem 还不能
+.I mmap(2)
+(内存映射)出去,而且可能一直要等到内核中增加了一个通用的
+.I mmap(2)
+以后才能实现.
+(也许在你读本手册页时这一切已经发生了)
+.TP
+.I mmap
+.I mmap(2)
+做的 maps 映射目录,是和 exe, fd/* 等类似的符号连接.
+请注意 maps 包含了比 /proc/*/mmap 更多的信息,
+所以应该废弃 mmap.
+
+";0"; 通常指 libc.so.4.
+
+在 linux 内核 1.1.40 里, 
+.I /proc/*/mmap
+被取消了.
+(现在是
+.B 真的
+废弃不用了!)
+.TP
+.I root
+依靠系统调用
+.I chroot(2), 
+unix 和 linux 可以让
+每个进程有各自的文件系统根目录. 
+由
+.I chroot(2)
+系统调用设置.
+根指向文件系统的根,性质就象 exe, fd/* 等一样.
+.TP
+.I stat
+进程状态信息, 被命令
+.I ps(1)
+使用. 
+
+现将该文件里各域, 以及他们的
+.I scanf(3)
+格式说明符, 按顺序分述如下:
+.RS
+.TP
+\fIpid\fP %d
+进程标识.
+.TP
+\fIcomm\fP %s
+可执行文件的文件名, 包括路径. 该文件是否可
+见取决于该文件是否已被交换出内存. 
+.TP
+\fIstate\fP %c
+";RSDZT"; 中的一个, R 是正在运行, S 是
+在可中断的就绪态中睡眠, D 是在不可中
+断的等待或交换态中睡眠, Z 是僵死, T 
+是被跟踪或被停止(由于收到信号). 
+.TP
+\fIppid\fP %d
+父进程 PID.
+.TP
+\fIpgrp\fP %d
+进程的进程组 ID.
+.TP
+\fIsession\fP %d
+进程的会话 ID.
+.TP
+\fItty\fP %d
+进程所使用终端.
+.TP
+\fItpgid\fP %d
+当前拥有该进程所连接终端的进程所在的进程
+组 ID. 
+.TP
+\fIflags\fP %u  
+进程标志. 目前每个标志都设了数学位, 
+所以输出里就不包括该位. crt0.s 检查数学仿真
+这可能是一个臭虫, 因为不是每个进
+程都是用 c 编译的程序. 数学位应该是十
+进制的 4, 而跟踪位应该是十进制的 10.
+.TP
+\fIminflt\fP %u
+进程所导致的小错误(minor faults)数目, 这样的
+小错误(minor faults)不需要从磁盘重新载入一个
+内存页. 
+.TP
+\fIcminflt\fP %u
+进程及其子进程所导致的小错误(minor faults)数目.
+.TP
+\fImajflt\fP %u
+进程所导致的大错误(major faults)数目, 这样的
+大错误(major faults)需要重新载入内存页. 
+.TP
+\fIcmajflt\fP %u
+进程及其子进程所导致的大错误(major faults)数目.
+.TP
+\fIutime\fP %d
+进程被调度进用户态的时间(以 jiffy 为单
+位, 1 jiffy=1/100 秒,另外不同硬件体系略有不同).
+.TP
+\fIstime\fP %d
+进程被调度进内核态的时间, 以 jiffy 为
+单位. 
+.TP
+\fIcutime\fP %d
+进程及其子进程被调度进用户态的时间, 
+以 jiffy 为单位. 
+.TP
+\fIcstime\fP %d
+进程及其子进程被调度进内核态的时间, 
+以 jiffy 为单位. 
+.TP
+\fIcounter\fP %d
+如果进程不是当前正在运行的进程, 就是
+进程在下个时间片当前可以拥有的最大时
+间, 以 jiffy 为单位. 如果进程是当前正
+在运行的进程, 就是当前时间片中所剩下
+jiffy 数目. 
+.TP
+\fIpriority\fP %d
+标准优先数只再加上 15, 在内核里该值总
+是正的. 
+.TP
+\fItimeout\fP %u
+当前至进程的下一次间歇时间, 以 jiffy
+为单位. 
+.TP
+\fIitrealvalue\fP %u
+由于计时间隔导致的下一个 SIGALRM
+发送进程的时延,以 jiffy 为单位.
+.TP
+\fIstarttime\fP %d 
+进程自系统启动以来的开始时间, 以 jiffy
+为单位.
+.TP
+\fIvsize\fP %u
+虚拟内存大小. 
+.TP
+\fIrss\fP %u
+Resident Set Size(驻留大小): 进程所占用的真实内
+存大小, 以页为单位, 为便于管理而减去
+了 3. rss 只包括正文, 数据以及堆栈的空间, 
+但不包括尚未要求装入内存的或已被交换出去的.
+.TP
+\fIrlim\fP %u
+当前进程的 rss 限制, 以字节为单位, 通
+常为 2,147,483,647. 
+.TP
+\fIstartcode\fP %u
+正文部分地址下限. 
+.TP
+\fIendcode\fP %u
+正文部分地址上限. 
+.TP
+\fIstartstack\fP %u
+堆栈开始地址.
+.TP
+\fIkstkesp\fP %u
+esp(32 位堆栈指针) 的当前值, 与在进程
+的内核堆栈页得到的一致. 
+.TP
+\fIkstkeip\fP %u
+EIP(32 位指令指针)的当前值.
+.TP
+\fIsignal\fP %d
+待处理信号的 bitmap(通常为 0).
+.TP
+\fIblocked\fP %d
+被阻塞信号的 bitmap(对 shell 通常是 0, 2).
+.TP
+\fIsigignore\fP %d
+被忽略信号的 bitmap. 
+.TP
+\fIsigcatch\fP %d
+被俘获信号的 bitmap. 
+.TP
+\fIwchan\fP %u
+进程在其中等待的通道, 实际是一个系统
+调用的地址. 如果你需要文本格式的, 也
+可以在名字列表中找到. 
+(如果有最新版本的 /etc/psdatabase, 你
+可以在 \fIps -l\fP 的结果中的 WCHAN 域看到)
+.RE
+.RE
+
+.TP
+.I cpuinfo 
+保存了CPU 以及体系架构依赖条目的列表. 对于不同的系
+统架构有不同的列表, 共有的两项是 \fIcpu\fP 和 \fIBogoMIPS\fP, \fIcpu\fP
+可能是当前在用的 CPU, 而 \fIBogoMIPS\fP 则是内核初始化时计算出
+的一个系统常数. 
+.TP
+.I devices
+主设备号及设备组的列表, 文本格式. MAKEDEV 脚本使用
+该文件来维持内核的一致性. 
+.TP
+.I dma
+一个列表, 指出正在使用的\fIISA\fP DMA (直接内存访问)通道. 
+.TP
+.I filesystems
+以文本格式列出了被编译进内核的文件系统. 当没有给
+.I mount(1)
+指明哪个文件系统的时候, 
+.I mount(1)
+就依靠该文件遍历不同的文件系统.
+.TP
+.I interrupts
+该文件以 ASCII 格式记录了(至少是在 i386 体系上的)每次 IRQ 的中断数目. 
+.TP
+.I ioports
+该文件列出了当前在用的已注册 I/O 端口范围. 
+.TP
+.I kcore
+该伪文件以 core 文件格式给出了系统的物理内存映象, 再
+利用未卸载的内核 (/usr/src/linux/tools/zSystem), 我
+们就可以用 GDB 查探当前内核的任意数据结构. 
+
+该文件的总长度是物理内存 (RAM) 的大小再加上 4KB. 
+.TP
+.I kmsg
+可以用该文件取代系统调用
+.I syslog(2)
+来记录内核信息. 
+但是读该文件需要超级用户权限, 并且一次只能有一个进
+程可以读该文件, 因而如果一个使用了
+.I syslog(2)
+系统调用功能来记录内核信息的系统日志进程正在运行的话,
+别的进程就不能再去读该伪文件了.
+
+该文件的内容可以用
+.I dmesg(8)
+来察看. 
+.TP
+.I ksyms
+该文件保存了内核输出的符号定义, 
+.I modules(X)
+使用该文件
+动态地连接和捆绑可装载的模块. 
+.TP
+.I loadavg
+平均负载数给出了在过去的 1, 5, 15 分钟里在运行队列里
+的任务数, 与
+.I uptime(1)
+等命令的结果相同. 
+.TP
+.I locks
+这个文件显示当前文件锁.
+.TP
+.I malloc
+只有在编译时定义了 CONFIGDEBUGMALLOC 才会有该文件.
+.TP
+.I meminfo
+.I free(1)
+利用该文件来给出系统总的空闲内存和已用内存
+(包括物理内存和交换内存), 以及内核所使用的共享内存
+和缓冲区. 
+
+该文件与
+.I free(1)
+\h'-1' 格式相同, 但是以字节为单位而不是 KB. 
+.TP
+.I modules
+列出了系统已载入的模块, 文本格式. 
+.TP
+.I net
+该子目录包括多个 ASCII 格式的网络伪文件, 描述了网络
+层的部分情况. 可以用 cat 来察看这些文件, 但标准的
+.I netstat(8)
+命令组更清晰地给出了这些文件的信息. 
+.RS
+.TP
+.I arp
+该文件以 ASCII 格式保存了内核 ARP 表, 用于地址解析, 
+包括静态和动态 arp 数据. 文件格式如下: 
+.nf
+.ft CW
+.ie t .in +3n
+.el .in -2n
+IP address       HW type     Flags       HW address
+10.11.100.129    0x1         0x6         00:20:8A:00:0C:5A
+10.11.100.5      0x1         0x2         00:C0:EA:00:00:4E
+44.131.10.6      0x3         0x2         GW4PTS
+.ft
+.fi
+.in
+.PP
+其中 'IP address' 是机器的 IPv4 地址; 'HW type' 是地址的硬
+件类型, 遵循 RFC 826; flags 是 ARP 结构的内部标志, 在
+/usr/include/linux/if_arp.h 中定义; 'HW address' 是该
+IP 地址的物理层映射(如果知道的话). 
+.TP
+.I dev
+该伪文件包含网络设备状态信息, 给出了发送和收
+到的包的数目, 错误和冲突的数目, 以及别的一些
+基本统计数据. 
+.I ifconfig(8)
+利用了该文件来报
+告网络设备状态. 文件格式如下: 
+.nf
+.ft CW
+.if n .in -13n
+Inter-|   Receive                  |   Transmit
+face |packets errs drop fifo frame|packets errs drop fifo colls carrier
+lo:      0    0    0    0    0     2353    0    0    0     0    0
+eth0: 644324    1    0    0    1   563770    0    0    0   581    0
+.if n .in
+.ft
+.fi
+.TP
+.I ipx
+无信息.
+.TP
+.I ipx_route
+无信息.
+.TP
+.I rarp
+该文件具有和
+.I arp
+同样的格式, 包含当前的逆向
+地址映射数据. 
+.I rarp(8)
+利用这些数据来作逆向
+地址查询服务. 只有将 RARP 配置进内核, 该文件才
+存在. 
+.TP
+.I raw
+该文件保存了 RAW 套接字表, 大部分信息除用于调试以外没有什么用.
+'sl' 指出了套接字的内核散列槽号; 'local address'
+包括本地地址和协议号对; "St" 是套接字的内部状态;
+tx_queue 和 rx_queue 是内核存储器使用意义上的输入输
+出数据队列; RAW 没有使用"tr", "tm->when" 和 "rexmits";
+uid 是套接字创建者的有效 uid.
+.TP
+.I route
+没有信息, 但是看上去类似于
+.I route(8)
+.TP
+.I snmp
+该文件以 ASCII 格式保存了 IP, ICMP, TCP 以及 UDP
+管理所需的数据信息, 基于 snmp 协议. TCP mib
+(TCP 管理数据库)尚未完善, 可能在 1.2.0 内核能够
+完成. 
+.TP
+.I tcp
+该文件保存了 TCP 套接字表, 大部分信息除用于调试以外没有什么用.
+"sl" 指出了套接字的内核散列槽号; "local address"
+包括本地地址和端口号; "remote address" 包括远地
+地址和端口号(如果有连接的话); 'St' 是套接字的内
+部状态; 'tx_queue' 和 'rx_queue' 是内核存储器使用意义上
+的输入输出数据队列; "tr", "tm->when" 和 "rexmits" 保存
+了内核套接字声明的内部信息, 只用于调试; uid
+是套接字创建者的有效 uid. 
+.TP
+.I udp
+该文件保存了 UDP 套接字表, 大部分信息除用于调试以外没有什么用.
+"sl" 指出了套接字的内核散列槽号; "local address"
+包括本地地址和端口号; "remote address" 包括远地
+地址和端口号(如果有连接的话); "St" 是套接字的内
+部状态; "tx_queue" 和 "rx_queue" 是内核存储器使用意义上
+的输入输出数据队列; UDP 没有使用 "tr","tm->when" 和
+"rexmits"; uid 是套接字创建者的有效 uid.
+格式如下: 
+.nf
+.ft CW
+.if n .in 0
+sl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm->when uid
+1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
+1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
+1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
+.if n .in
+.ft
+.fi
+.TP
+.I unix
+列出了当前系统的UNIX域套接字以及它们的状态, 
+格式如下: 
+.nf
+.sp .5
+.ft CW
+Num RefCount Protocol Flags    Type St Path
+0: 00000002 00000000 00000000 0001 03
+1: 00000001 00000000 00010000 0001 01 /dev/printer
+.ft
+.sp .5
+.fi
+.PP
+'Num' 是内核散列槽号; 'RefCount' 是用户套接字号; 'Protocol'
+当前总是 0; 'Flags' 是内核标志, 指出了套接字的状态; 'Type'
+当前总是 1(在内核中尚未支持 unix 域数据报套接字); 'St'
+是套接字内部状态; 'Path' 套接字绑捆的路径(如果有的话). 
+.RE
+.TP
+.I pci
+该文件列出了内核初始化时发现的所有 PCI 设备及其配置. 
+.TP
+.I scsi
+该目录包括 scsi 中间层伪文件及各种 SCSI 底层驱动器子目录,
+对系统中每个 SCSI host, 子目录中都存在一个文件与之对应, 
+展示了部分 SCSI IO 子系统的状态. 这些文件是 ASCII 格式
+的, 可用cat阅读. 
+
+你也可以通过写其中某些文件来重新配置该子系统, 开关一些功能.
+.RS
+.TP
+.I scsi
+该文件列出了内核掌握的所有 SCSI 设备, 其内容就
+和系统启动时所看到的类似. 目前 scsi 只支持
+\fIsingledevice\fP命令, 该命令允许 root 添加一个热插
+拔(hotplugged)设备到一个已知设备列表中. 
+
+命令
+.B echo 'scsi singledevice 1 0 5 0' > /proc/scsi/scsi 
+令 host scsi1 扫描 SCSI 通道 0, 
+看在 ID 5 LUN 0 是否存在设备, 如果在该地址
+存在设备, 或者该地址无效, 则返回一个错误. 
+.TP
+.I drivername
+目前 \fIdrivername\fP 可包含: NCR53c7xx, aha152x, aha1542, aha1740, 
+aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, 
+scsi_debug, seagate, t128, u15-24f, ultrastore 或者 wd7000. 
+这些目录展示那些至少注册了一个 SCSI HBA 的驱动. 
+而对每个已注册的 host, 每个目录中都包含一个文件与之对应, 
+而这些对应的 host 文件就以初始化时分配给 host 的数字来命名.
+
+这些文件给出了驱动程序以及设备的配置, 统计数据等.
+
+可以通过写这些文件实现不同的 host 上做不同的工作. 
+例如, root 可以用 \fIlatency\fP 和 \fInolatency\fP 命令打
+开或者关闭 eata_dma 驱动器上测量延时的代码, 
+也可以用 \fIlockup\fP 和 \fIunlock\fP 命令
+控制 scsi_debug 驱动器所模拟的总线锁操作. 
+.RE
+.TP
+.I self
+当某进程访问 /proc 目录时, 该目录就指向 /proc 下以该进
+程 ID 命名的目录. 
+.TP
+.I stat
+内核及系统的统计数据. 
+.RS
+.TP
+\fIcpu  3357 0 4313 1362393\fP
+系统分别消耗在用户模式, 低优先权的用户模式(nice), 
+系统模式, 以及空闲任务的时间, 以 jiffy 为单位.
+最后一个数值应该是 uptime 伪文件第二个数值的
+100 倍. 
+.TP
+\fIdisk 0 0 0 0\fP
+目前并没有实现这四个磁盘记录, 我甚至认为就不应该实现它,
+这是由于在别的机器上内核统计通常依赖转换率及
+每秒 I/O 数, 而这令每个驱动器只能有一个域. 
+.TP
+\fIpage 5741 1808\fP
+系统(从磁盘)交换进的页数和交换出去的页数.
+.TP
+\fIswap 1 0\fP
+取入的交换页及被取出的交换页的页数.
+.TP
+\fIintr 1462898\fP
+系统自启动以来所收到的中断数. 
+.TP
+\fIctxt 115315\fP
+系统所作的进程环境切换次数. 
+.TP
+\fIbtime 769041601\fP
+系统自 1970 年 1 月 1 号以来总的运行时间, 以秒为单位. 
+.RE
+.TP
+.I sys
+该目录在 1.3.57 的内核里开始出现, 包含一些对应于内
+核变量的文件和子目录. 你可以读这些变量, 有的也可以
+通过\fIproc\fP修改, 或者用系统调用
+.IR sysctl (2)
+修改. 目前该目录下有如下三个子目录:
+.IR kernel ";, "; net ";, "; vm
+每个各自包括一些文件和子目录.
+.RS
+.TP
+.I kernel
+该目录包括如下文件: 
+.IR domainname ";, "; file-max ";, "; file-nr ";, "; hostname ";, ";
+.IR inode-max ";, "; inode-nr ";, "; osrelease ";, "; ostype ";, ";
+.IR panic ";, "; real-root-dev ";, "; securelevel ";, "; version ,
+由文件名就可以清楚地得知各文件功能. 
+.LP
+只读文件 
+.I file-nr
+给出当前打开的文件数. 
+.LP
+文件
+.I file-max
+给出系统所容许的最大可打开文件数.
+如果 1024 不够大的话, 可以
+.br
+.nf
+.ft CW
+echo 4096 > /proc/sys/kernel/file-max
+.fi
+.ft
+.LP
+类似地, 文件
+.I inode-nr
+以及文件
+.I inode-max
+指出了当前 inode 数和最大 inode 数.
+.LP
+文件
+.IR ostype ";, "; osrelease ";, "; version
+实际上是
+.IR /proc/version
+的子字串.
+.LP
+文件
+.I panic
+可以对内核变量
+.IR panic_timeout
+进行读/写访问.
+如果该值为零, 内核在 panic 时进入(死)循环; 
+如果非零, 该值指出内核将自动重起的时间, 以秒为单位. 
+.LP
+文件
+.I securelevel
+目前似乎没什么意义 - root 无所不能. 
+.RE
+.TP
+.I uptime
+该文件包含两个数: 系统正常运行时间和总的空闲时间, 都以秒为单位. 
+.TP
+.I version
+指明了当前正在运行的内核版本, 例如: 
+.nf
+.in -2
+.ft CW
+Linux version 1.0.9 (quinlan at phaze) #1 Sat May 14 01:51:54 EDT 1994
+.ft
+.in +2
+.fi
+
+.RE
+.RE
+.SH 又见
+cat(1), find(1), free(1), mount(1), ps(1), tr(1), uptime(1), readlink(2),
+mmap(2), chroot(2), syslog(2), hier(7), arp(8), dmesg(8), netstat(8),
+route(8), ifconfig(8), procinfo(8)等等. 
+.\"; maybe I should trim that down
+.SH 遵循
+本手册页基本上是针对 Linux 1.3.11 内核, 如有必要请及时更新!
+
+最后更新也是针对 Linux 1.3.11.
+.SH 注意事项
+请注意许多字符串(例如环境变量或者命令行)是以内部格式保存的, 
+以 NUL 作为子域的结束标志, 可以用 \fIod -c\fP
+或者 \fItr ";\\000"; ";\\n";\fP 使之变得更可读.
+
+本手册页还不完善, 可能有不够确切的地方, 需要经常更新. 
+.SH BUGS
+.I /proc
+可能会给那些使用了
+.BR chroot (2)
+的进程带来安全问题. 例如, 如果
+.I /proc
+被 mount 在
+.B chroot
+级别里, 一个
+到
+.I /proc/1/root
+的
+.BR chdir (2)
+操作将返回文件系统的原始根目录.  
+由于 Linux 还不支持
+.BR fchroot (2)
+调用, 该问题可能更应该看作一个特性而不是一个 bug.
+
+.SH "[中文版维护人]"
+.B mapping <mapping at 263.net>
+.SH "[中文版最新更新]"
+.B 2000/11/26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/protocols.5 b/src/man5/protocols.5
new file mode 100644
index 0000000..a0434a6
--- /dev/null
+++ b/src/man5/protocols.5
@@ -0,0 +1,54 @@
+.TH PROTOCOLS 5 "1995 年 10 月 18 日" "Linux" "Linux 程序员手册"
+.SH NAME 名称
+protocols \- 协议定义文件
+.SH 描述
+该文件为普通 ASCII 文件,它描述了 TCP/IP 子系统中各类 DARPA internet 协议族.
+你应该参考这个文件, 而不是使用 ARPA 的 include 文件中的号码, 更不必去猜测它们.
+这些号码将出现在任何 ip 包头的协议字段中.
+
+你应该保持这个文件不变, 因为修改会导致不正确的 ip 包.
+协议号码和名字由 DDN 网络信息中心指定.
+
+每行的格式如下:
+
+.RS
+.I 协议 号码 别名 ...
+.RE
+
+这里的字段以空格或者 tab 键分隔. 空行和以散列符 (#) 开头的行将忽略.
+从散列符起始的行的剩余部分也将忽略.
+
+字段描述如下:
+
+.TP
+.I 协议
+协议的本名.例如 :ip, tcp 或者 udp.
+.TP
+.I 号码
+协议的正式号码, 它将出现在 ip 包头中.
+.TP
+.I 别名
+协议的可选别名.
+.LP
+
+该文件也可以使用网络范围中的名字服务,如黄页/NIS 或 BIND/Hesoid,
+在网络分发.
+
+.SH 文件
+.TP
+.I /etc/protocols
+协议定义文件.
+.SH 参见
+.BR getprotoent (3)
+
+黄页服务的指南
+
+BIND/Hesiod 服务的指南
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]" 
+.B 2000/11/6
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+.br
diff --git a/src/man5/resolver.5 b/src/man5/resolver.5
new file mode 100644
index 0000000..f2a9991
--- /dev/null
+++ b/src/man5/resolver.5
@@ -0,0 +1,117 @@
+.\" Copyright (c) 1986 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\"
+.TH RESOLVER 5 "November 11, 1993"
+.UC 4
+
+.SH NAME
+resolver \- 解析器(resolver) 配置文件
+
+.SH "总览 (SYNOPSIS)"
+/etc/resolv.conf
+
+.SH "描述 (DESCRIPTION)"
+.LP
+.I 解析器(resolver)
+是 C 函数库 中 的 一组 例程, 用于 访问 Internet 域名系统.
+当 某个 进程 第一次 调用 这些函数 时, 它们 读取 解析器配置文件 的 内容.
+这个文件 很容易 理解, 它 由 关键字 和 对应值 的 列表 组成, 提供 各种类型
+的 解析器信息.
+.LP
+正常 配置 的 系统 中, 这个 文件 并非 必不可少: 名字服务器 可以 位于 本机,
+域名 从 主机名 中 获得, 域名搜索路径 由 域名 产生.
+.LP
+各种配置选项有:
+.TP
+\fBnameserver\fP
+名字服务器 的 Internet 地址, 用于 解析器 查询.
+最多 可以 列出 MAXNS (目前是 3) 个 名字服务器, 一个关键字 对应 一个服务器.
+如果 列出 多个 服务器, 解析器 按照 列举的顺序 访问.
+如果 没有 给出 \fBnameserver\fP 项, 缺省方法 是 使用 本机的 名字服务.
+(使用的算法 是 先试 第一个 名字服务器, 如果 请求 超时, 就试 下一个 服务器, 
+直到 试遍 所有的 服务器. 然后 重复 这个过程, 直到 最大 重试次数).
+.TP
+\fBdomain\fP
+本地域名.
+多数 对 本域内 的 名字查询 能够 使用 对应的 短名字.
+如果 \fBdomain\fP 项 不存在, 本地域名 取决于 \fIgethostname\fP\|() 
+返回的 主机名: 第一个 '.' 以后的 所有内容 都是 域名 部分.
+最后, 如果 主机名 不含有 域名 部分, 就认为 指定了 根域.
+.TP
+\fBsearch\fP
+主机名查询 的 查找列表.
+查找列表 一般 取决于 本地域名; 缺省情况下 就是 本地域名.
+这一点 可以 改变, 
+在 关键字 \fIsearch\fP 后面, 隔着 空格 或 制表符, 列出 期望的 域名查找路径.
+多数 解析请求 会 按顺序 尝试 查找路径 里的 每一个 成员, 直到 发现 匹配项.
+注意, 如果 所列域名 对应的 服务器 不在 本地网络, 这个 过程 可能 很慢, 而且 
+生成 大量的 网络数据, 如果 其中的 某个域名 没有 对应的 服务器, 将导致 请求
+超时.
+.IP
+目前, 查找列表 限制在 六个 域名 内, 总共 不超过 256 个字符.
+.TP
+\fBsortlist\fP
+排序列表 允许 对 gethostbyname 返回的 地址 排序.
+排序列表 由 IP地址 和 屏蔽字 对 指明. 屏蔽字 是 可选项, 缺省是 网络的
+自然屏蔽字. IP地址 和 可选的屏蔽字 对 用 斜杠符 隔开. 最多 可以 指定
+10 对.
+.IP
+例如: sortlist 130.155.160.0/255.255.240.0 130.155.0.0
+.TP
+\fBoptions\fP
+选项, 允许 修改 某些 解析器 的 内部变量.
+语法形式 是:
+.IP
+\fBoptions\fP \fIoption\fP \fI...\fP
+.IP
+这里的 \fIoption\fP 是 下列 项目 之一:
+.IP
+\fBdebug\fP \(em 在 _res.options 中 设置 RES_DEBUG.
+.IP
+\fBndots:\fP\fIn\fP \(em 设置 句点数目 的 门限值, 如果要 直接 做 
+\fI绝对查询\fP, 传给 \fBres_query\fP (另见 \fIresolver\fP(3)) 的 名字中 的
+句点 不得小于 这个数. \fIn\fP 的 缺省值 是 ``1'', 意即 只要 名字中 有 
+一个 句点, 在 添加 \fI查找列表\fP 中 任何 成员 前, 首先 按 绝对名字 查询.
+.LP
+\fIdomain\fP 和 \fIsearch\fP 关键字 是 互斥的.
+如果 它们 先后 出现, 则 最后一个 有效.
+.LP
+系统文件 \fIresolv.conf\fP 中的 \fIsearch\fP 关键字 能够 被 环境变量
+``\s-1LOCALDOMAIN\s+1'' 的 内容 取代, 域名列表 用 空格 隔开.
+.LP
+系统文件 \fIresolv.conf\fP 中的 \fIoptions\fP 关键字 能够 被 环境变量
+``\s-1RES_OPTIONS\s+1'' 的 内容 修正, 其中 的 选项 (见前面的 \fBoptions\fP)
+用 空格 隔开.
+.LP
+关键字 及其 对应值 必须 列在 同一行, 而且 关键字(例如 \fBnameserver\fP) 
+必须 在 行始.  对应值 在后面 用 空白符(white space) 隔开.
+
+.SH "文件 (FILES)"
+.I /etc/resolv.conf
+
+.SH "另见 (SEE ALSO)"
+.BR gethostbyname (3),
+.BR hostname (7),
+.BR named (8),
+.br
+Name Server Operations Guide for BIND
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at users.sourceforge.net>
+.SH "[中文版最新更新]"
+.BR 2003/05/13
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/rpc.5 b/src/man5/rpc.5
new file mode 100644
index 0000000..69cfa1b
--- /dev/null
+++ b/src/man5/rpc.5
@@ -0,0 +1,67 @@
+.\" @(#)rpc.5	2.2 88/08/03 4.0 RPCSRC; from 1.4 87/11/27 SMI;
+.TH RPC 5  "26 September 1985"
+.SH NAME
+rpc \- rpc 程序号数据库
+.SH SYNOPSIS
+.B /etc/rpc
+.SH DESCRIPTION
+.I rpc
+文件列出了rpc 程序的可读名, 可以此代替rpc 程序号.
+
+每行包含如下信息:
+.HP 10
+运行rpc 程序的服务名
+.br
+.ns
+.HP 10
+rpc 程序号
+.br
+.ns
+.HP 10
+别名
+.LP
+各条目之间以任意数目的空格和(或)tab 字符分隔. '#' 符号表明
+后面是注释, 直到行末的字符都不会被搜索该文件的例程所解释. 
+.LP
+下面是\fI/etc/rpc\fP文件的一个例子, 从Sun RPC 的源代码里取得.
+.nf
+.ta 1.5i +0.5i +1.0i +1.0i
+#
+# rpc 88/08/01 4.0 RPCSRC; from 1.12   88/02/07 SMI
+#
+portmapper		100000	portmap sunrpc
+rstatd		100001	rstat rstat_svc rup perfmeter
+rusersd		100002	rusers
+nfs		100003	nfsprog
+ypserv		100004	ypprog
+mountd		100005	mount showmount
+ypbind		100007
+walld		100008	rwall shutdown
+yppasswdd		100009	yppasswd
+etherstatd		100010	etherstat
+rquotad		100011	rquotaprog quota rquota
+sprayd		100012	spray
+3270_mapper		100013
+rje_mapper		100014
+selection_svc		100015	selnsvc
+database_svc		100016
+rexd		100017	rex
+alis		100018
+sched		100019
+llockmgr		100020
+nlockmgr		100021
+x25.inr		100022
+statmon		100023
+status		100024
+bootparam		100026
+ypupdated		100028	ypupdate
+keyserv		100029	keyserver
+tfsd		100037 
+nsed		100038
+nsemntd		100039
+.fi
+.DT
+.SH FILES
+/etc/rpc
+.SH "SEE ALSO"
+getrpcent(3N)
diff --git a/src/man5/securetty.5 b/src/man5/securetty.5
new file mode 100644
index 0000000..c5dcfb5
--- /dev/null
+++ b/src/man5/securetty.5
@@ -0,0 +1,29 @@
+.\" 版权所有(c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" 这是免费的文档;你可以遵照自由软件基金会出版的GNU通用出版许可版本2或者更高版本的条例来重新发布和/或修改它.
+.\"
+.\" GNU通用出版许可中涉及到的"目标代码(object code)"和"可执行程序(executables)"可解释为任意文档格式化的输出或者排版系统,包括中间的和已输出的结果.
+.\"
+.\" 该文档的发布寄望于能够实用,但并不做任何担保;甚至也不提供隐含的商品性的保证或者针对特殊目的适用性.参见GNU通用版权许可以获知更多详情.
+.\"
+.\" 你应该接收到与本文档一同发布的GNU通用版权许可的副本;如果没有,请写信到自由软件基金会(Free Software Foundation), Inc., 59 Temple Place, Suite 330, Boston, MA 02111, 
+.\" USA.
+.\"
+.\" 于1993年1月25日星期日11:06:27由Rik Faith (faith at cs.unc.edu)修改
+.TH SECURETTY 5 "1992 年 12 月 29 日" "Linux" "Linux 程序员手册"
+.SH NAME (名称)
+\fB/etc/securetty\fR 由
+.BR login (1)
+使用,该文件由包含数行 tty 设备名(每行一个设备名,前面不加
+.IR /dev/ )
+在这些设备上可以允许 root 登录.
+.SH FILES(相关文件)
+/etc/securetty
+.SH "SEE ALSO"(另见)
+.BR login (1)
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]" 
+.B 2000/11/2
+.SH "《中国Linux论坛man手册页翻译计划》:"
+.B http://cmpp.linuxforum.net
diff --git a/src/man5/services.5 b/src/man5/services.5
new file mode 100644
index 0000000..5c78934
--- /dev/null
+++ b/src/man5/services.5
@@ -0,0 +1,179 @@
+.\" 本man页版权所有(C)1996 Austin Donnelly <and1000 at cam.ac.uk>,
+.\" 附加资源版权(c)1995 Martin Schulze <joey at infodrom.north.de>.
+.\"
+.\" 在保留了版权通告和该使用权限通告的前提下,可以授权生成和发布
+.\" 该手册的复制版本
+.\" 
+.\" 在所有最终工作是按照与本篇中一致的权限通告的条例来发布并提供
+.\" 了逐字复制的前提下,可以授权复制发布该手册的修改版本.
+.\"
+.\" 因为Linux内核和库经常改变,该手册页可能会不正确或者过时.作者
+.\" (们)对这些错误、遗漏或者因使用其中的信息而导致的损害不承担任
+.\" 何责任.作者(们)在编写该免费许可的手册时,可能不是基于同样水平
+.\" 的考虑,但在专业化工作时他们会这样做的.
+.\"
+.\" 该手册的格式化或者处理过的版本,如果没有包括源文件,则必须承认
+.\" 其版权以及这篇作品的作者.
+.\" 本man页合并了两个独立编写的man页,一个由Martin Schulze(1995年
+.\" 10月18日)完成,另一个由Austin Donnelly(1996年1月9日)完成.
+.\" 
+.\" 1996年1月11日星期四12:14:41 Austin Donnelly <and1000 at cam.ac.uk>
+.\"    * 合并两个services(5)man页
+.TH SERVICES 5 "1996年1月11日" "Linux 程序员手册"
+.SH NAME(名称)
+services \- Internet 网络服务列表
+.SH DESCRIPTION(描述)
+.B services
+是一个普通的 ASCII 码文件, 它在 internet 服务的友好原文名以及这些服务预先分配的
+端口和协议类型之间提供了映射. 每个联网程序必须查找该文件以获取
+其服务的端口号(和协议).
+C 库例程
+.BR getservent (3),
+.BR getservbyname (3),
+.BR getservbyport (3),
+.BR setservent (3),
+和
+.BR endservent (3)
+支持由程序查询该文件.
+
+端口号由 IANA(Internet Assigned Numbers Authority) 分配, 
+他们当前的工作是分配端口号时, 指定 TCP 和 UDP 协议.
+这样, 大多数记录会包括两条子记录, 即使只是 TCP 的服务也是如此
+
+端口号在 1024 之下的(也称作'低编码'端口)只能由 root (参见
+.BR bind (2),  tcp (7), 和  udp (7).)
+绑定.
+这样连接到低编码端口的客户可信任运行在该端口上的服务是标准的实现,
+而不是由某台机器的用户运行的无聊的服务.由 IANA 确定的众所周知的端口号通常只在
+root 的控制范围之内 
+
+在
+.B services
+文件中出现的一条服务记录并不表示该服务当前在机器上运行.参见
+.BR inetd.conf (5)
+以获知提供的Internet服务的配置.注意不是所有联网服务都由
+.BR inetd (8) 
+启动,因而也不会出现在
+.BR inetd.conf (5) 
+之中.
+特别地,news (NNTP)和mail (SMTP)服务程序通常由系统引导脚本初始化.
+
+.B services
+文件所存放的位置由
+.IR /usr/include/netdb.h 
+中的
+.B _PATH_SERVICES
+定义.
+它通常设为
+.IR /etc/services .
+
+每行描述了一个服务,其格式如下:
+.IP
+\f2服务名\ \ \ 端口\f3/\f2协议\ \ \ \f1[\f2别名 ...\f1]
+这里的
+.TP 10
+.I 服务名
+是给服务所起的可供查找的友好的名字.它是区分大小写的.通常,客户端程序都以
+.IR 服务名
+命名.
+.TP
+.I 端口
+为该服务所用的端口号(十进制格式).
+.TP
+.I 协议
+为所使用的协议类型.该字段应与
+.BR protocols (5)
+文件中的一条记录相匹配.典型的值包括
+.B tcp
+和
+.BR udp .
+.TP
+.I 别名
+可以空缺,或者是以tab分隔的该服务的其他名字的列表(不过请查看下面的BUGS章节).同样,
+这些名字也是区分大小写的.
+.PP
+
+可以使用空格或者tab分隔这些字段.
+
+注释以hash标识(#)开头,一直到该行末结束.空行可跳过.
+
+.I 服务名
+必须是该文件的第一列,因为其前面的空格不会删去.
+.I 服务名
+可以为任何可打印的字符,包括空格和tab,但是,应该使用字符的保守选择来最低限度地减少
+操作中的问题.例如:a-z,0-9,和连字符(\-)看上去就是一个合理的选择.
+
+不匹配该格式的行不应该在该文件中出现.(当前情况下,
+.BR getservent (3),  getservbyname (3), 和  getservbyport (3)
+可以忽略它们.不过,不应该依靠这种方法.)
+
+为了向后兼容,在
+.I 端口
+号和
+.I 协议
+名之间的斜杠(/)实际可以为斜杠或者是逗号(,).在现代的安装中使用逗号是落后的.
+
+该文件也可以通过使用网络级命名服务如黄页/NIS(Yellow Pages/NIS)或BIND/Hesiod来在一
+个网络中发布.
+
+一个
+.B services
+的样本文件看上去如下:
+.RS
+.nf
+.sp
+.ta 3i
+netstat         15/tcp
+qotd            17/tcp          quote
+msp             18/tcp          # message send protocol
+msp             18/udp          # message send protocol
+chargen         19/tcp          ttytst source
+chargen         19/udp          ttytst source
+ftp             21/tcp
+# 22 - unassigned
+telnet          23/tcp
+.sp
+.fi
+.RE
+.SH BUGS
+最大只能有35个别名,这是由
+.BR getservent (3)
+代码的写入方式决定的.
+
+比
+.B BUFSIZ
+(当前为1024)个字符更长的行,
+.BR getservent (3),  getservbyname (3), and  getservbyport (3)
+会忽略掉.
+不过,这也会导致错过下一行.
+.SH FILES(相关文件)
+.TP
+.I /etc/services
+Internet网络服务列表
+.TP
+.I /usr/include/netdb.h
+.B _PATH_SERVICES
+的定义
+.SH SEE ALSO(另见)
+.BR getservent (3),
+.BR getservbyname (3),
+.BR getservbyport (3),
+.BR setservent (3),
+.BR endservent (3),
+.BR protocols (5),
+.BR listen (2),
+.BR inetd.conf (5),
+.BR inetd (8).
+
+分配号码RFC,最新的RFC 1700,(AKA STD0002)
+
+黄页服务的指南
+
+BIND/Hesiod服务的指南
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.B 2000/11/01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/shells.5 b/src/man5/shells.5
new file mode 100644
index 0000000..01e7019
--- /dev/null
+++ b/src/man5/shells.5
@@ -0,0 +1,54 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Thu May 20 20:45:48 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified Sat Jul 24 17:11:07 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Nov 21 10:49:38 1993 by Michael Haardt
+.\" Modified Sun Feb 26 15:09:15 1995 by Rik Faith (faith at cs.unc.edu)
+.TH SHELLS 5 "November 21, 1993" "" "Linux Programmer's Manual"
+.SH NAME [命令名]
+shells \- 有效登录 shell 的路径名
+.SH 描述
+.B /etc/shells 
+是一个文本文件,其中包含有效登录 shell 的路径全名。
+.BR chsh(1) 
+需要参考这个文件,并且其他程序也可以查询该文件。
+有些程序从这个文件判断用户是不是标准用户。比如: ftp 守护进程
+一般不会允许那些所用的 shell 没有在该文件中注明用户访问。
+.SH 实例
+.B /etc/shells
+可能包含以下路径: 
+.sp
+.RS
+.BR /bin/sh 
+.br
+.B /bin/csh 
+.RE     
+.SH 相关文件
+.I /etc/shells   
+.SH 又见
+.BR chsh(1), getusershell(3)   
+.SH "[中文版维护人]"
+.B Redcandle <redcandle51 at chinaren.com >
+.SH "[中文版最新更新]"
+.B 2000.10.29
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/smb.conf.5 b/src/man5/smb.conf.5
new file mode 100644
index 0000000..90456d8
--- /dev/null
+++ b/src/man5/smb.conf.5
@@ -0,0 +1,6698 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMB.CONF" 5 "" "" ""
+.SH NAME
+smb.conf \- Samba组件的配置文件 
+.SH "总览 SYNOPSIS"
+
+.PP
+\fIsmb.conf\fR是Samba组件的配置文件,包含Samba程序运行时的配置信息.\fIsmb.conf\fR被设计成可由\fBswat\fR (8)程序来配置和管理.本文件包含了关于smb.conf的文件格式和可能出现的选项的完整描述以供参考.
+
+.SH "文件格式 FILE FORMAT"
+
+.PP
+本文件由一系列段和选项构成.一个段由一对方括号中的段名开始,直到下一个段名结束.包含在段中的选项按以下格式定义:
+
+.PP
+\fI选项名\fR = \fI选项值\fR
+
+.PP
+本文件是基于文本行的.这就是说,每一个以换行符结束的行描述了一个项目(注释,段名,或选项).
+
+.PP
+段名和选项名是不区分大小写的.
+
+.PP
+只有选项设置中的第一个等号才有意义.第一个等号前后的空格会被忽略.段名和选项名的前后以及中间包含的空格是无关的.选项值前后的空格会被忽略.选项值中包含的空格会原样保留.
+
+.PP
+所有以';'和'#'符开头的行都会被忽略,就象只有空格的行那样.
+
+.PP
+按照UNIX上的惯例,以'\'符号结尾的行续下一行.(也就是说:'\'是续行符,如果一行写不下,可以在行尾以'\'结束,在下一行继续写--译注) 
+
+.PP
+等号后面跟的是字符串(无需引号)或者逻辑值(可以是yes/no,1/0,或者true/false
+来表示).逻辑值是不区分大小写的.字符串值则原样保留了输入的大小写.某些选项
+(例如create modes)的值是数值型的.
+
+.SH "段描述 SECTION DESCRIPTIONS"
+
+.PP
+配置文件的每一段([global]段除外)描述一项共享资源.段名就是共享名,段内的选项设置确定了该共享资源的属性.
+
+.PP
+三个特殊段([global],[homes],[printers])将在后面'special sections'单独说明,以下的内容是普通段的说明.
+
+
+
+.PP
+一个共享资源由一个文件目录和用户对此目录的操作权限的说明构成.另外,还列入了一些用于内部管理的选项.
+
+.PP
+每一段定义了一项文件服务(客户端可以把它看作其本机文件系统的延伸)或打印服务(客户端可以通过它来使用服务器提供的打印服务).
+
+.PP
+段可以定义成\fBguest\fR服务类型,在这种情况下,客户无需口令就可以访问该资源.一个特定的UNIX系统下的\fBguest account\fR通常用来指定这种情况下的客户访问权限.
+
+.PP
+除了guest服务类型以外,其他类型的段定义的共享资源都需要口令才能访问.用户名是由客户端提供的.由于某些老的客户端只提供口令,没有用户名,你需要在共享定义中使用"user="选项来指定一个用户列表,以便根据这个用户列表进行口令验证.对于象Windos95/98和WindowsNT这样的现代客户端程序,这个选项是不需要的.
+
+.PP
+注意,对于资源的操作权限还取决于主机系统赋予指定用户或来访者账户的权限.samba提供的服务权限不能超出主机系统指定的权限范围.
+
+.PP
+下面的示范段定义了一项文件服务,用户拥有对\fI/home/bar\fR目录进行写操作的权限.这个共享资源是通过共享名"foo"来访问的.
+
+.nf
+[foo]
+	path = /home/bar
+	read only = no
+.fi
+
+.PP
+下面示范段定义了一项打印服务,此共享资源是只读的,但是可以进行打印操作.也就是说,唯一允许的写操作只能是打开、写入并关闭一个打印假脱机文件.其中的\fIguest ok\fR选项定义意味着允许以缺省的guest用户(在别处定义的)权限进行访问.
+
+.nf
+[aprinter]
+	path = /usr/spool/public
+	read only = yes
+	printable = yes
+	guest ok = yes
+.fi
+
+.SH "特殊段 SPECIAL SECTIONS"
+
+.SS "[global] 全局选项段 "
+
+.PP
+这一段中定义的选项是服务器的全局性设置,如果在其他段中没有再对这些选项进行重新设置的话还可以作为它们的缺省选项.更多的说明请参阅'PARAMETERS'部分的内容.
+
+.SS "[homes] 个人目录段"
+
+.PP
+如果配置文件中包含名为'homes'的段,就可以建立客户到自己在服务器上的个人目录的连接.
+
+.PP
+当服务器收到连接请求时,首先在已定义的段中搜索,如果段名与被请求的共享资源名一致,则该段的内容就被采用.如果没有找到匹配的段,则被请求的资源就被当作是一个用户名,同时服务器查看本地的口令文件.如果该用户名在口令文件中存在且用户给出了正确的口令,服务器就会复制[homes]段的内容来生成一个共享资源(供该用户访问).
+
+
+.PP
+对新建共享会做以下修改: 
+
+.TP 3
+共享名从'homes'改为查到的用户名.
+.TP
+如果没有指定访问路径,则设置为该用户的个人目录.
+
+.LP
+
+.PP
+如果要在[homes]段中定义访问路径\fBpath=\fR,宏%S也许对你很有用.举例如下:
+
+.PP
+\fBpath = /data/pchome/%S\fR
+
+.PP
+如果你的PC 有与UNIX服务器上个人目录不同的目录,象上面这样的设置会很有用的.
+
+.PP
+这是为大量用户提供对他们个人目录的访问的一种快速简洁的办法.
+
+.PP
+如果被请求访问的共享资源名就是'homes',那么,除了共享名不被改变为发出请求的用户名外,其他处理过程和前面提到的过程是类似的.这种方式适合于不同用户共享一台终端的情况.
+
+.PP
+在[homes]段中可以定义所有普通段中可以使用的选项,可是有些选项更有意义.下面是一个实用的、典型的[homes]段的例子:
+
+.nf
+[homes]
+	read only = no
+.fi
+
+.PP
+注意,很重要的一点是:如果在[homes]段中定义了允许以guest账户访问的话,任何人都可以\fB无须口令\fR而访问所有账户的宿主目录.也许在某些特殊情况下,这正是想要的结果,在这种情况下,你最好同时把[homes]段设置成\fB只读\fR.
+
+.PP
+注意,自动的宿主目录共享资源的\fB可浏览\fR标志是从[global]段继承来的,而不是[homes]段.这样,当在[homes]段中设置\fRbrowseable=no\fR时,用户就看不到单独的'homes'共享,但可以看到自动的宿主目录.
+
+.SS "[printers] 打印机共享设置段"
+
+.PP
+这一段很象[homes]段,不过是用于设置共享打印机的.
+
+.PP
+如果在本配置文件中存在[printers]段,用户就可以连接到在主机上的printcap文件
+中指定的任一打印机.
+
+.PP
+当服务器收到连接请求时,首先在已定义的段中搜索,如果有段名与被请求的共享资源名一致,则该段的内容就被采用.如果没有找到匹配的段,且在配置文件中存在[homes]段,则按照前面所说的方式处理.否则,被请求的资源就被当作是一个打印机名,服务器在适当的printcap文件中查找,检验被请求的共享资源名是否是有效的打印机共享名.如果共享名匹配,服务器就会复制[printers]段的内容来生成一个共享打印服务.
+
+.PP
+对新建共享的修改:
+
+.TP 3
+共享名被设置为查找到的打印机名.
+
+.TP
+如果未给出打印机名,则把打印机名设为前面查找到的打印机名.
+
+.TP
+如果该共享资源不允许以guest身份进行访问,且没有给出用户名,那么用户名就被设为前面查找到的打印机名.
+
+.LP
+
+.PP
+注意,[printers]段必须设置为可打印,如果你不这样设置,服务器会拒绝装载配置文件.
+
+.PP
+指定的典型路径应该设为一个公用的可写假脱机目录(spooling)并且设置sticky标志.一个典型的[printers]段如下所示:
+
+.nf
+[printers]
+	path = /usr/spool/public
+	guest ok = yes
+	printable = yes 
+.fi
+
+.PP
+上台打印机在printcap文件中列出的所有别名都是服务器相关的有效打印机名.如果你系统的打印子系统的工作方式不是这样,你就必须设置一个伪printcap文件,其中包含一行或多行如下格式的设置:
+
+.nf
+别名1|别名2|别名3|别名4... 
+.fi
+
+.PP
+每个别名必须是你的打印子系统可以接受的打印机名.在[global]段中指定这个新文件作为你的printcap文件.这个伪printcap文件可以包含任何你要的别名,而服务器只识别在此文件中列出的名字.这个技术可以很方便的用于限制对本地打印机子集的访问.
+
+.PP
+顺便提一下,printcap文件中的别名用每个记录第一项的任何部分来定义.记录由换行进行分隔.如果一条记录中有多个部分,中间用"|"符号分隔.
+.RS
+.Sh "Note"
+
+.PP
+注意,在SYSV系统中,用lpstat可以确定系统中安装了什么样的打印机.你可以设置"printcap name = lpstat"来自动获得打印机列表.详情参见"printcap name"选项.
+
+.RE
+
+.SH "选项 PARAMETERS"
+
+.PP
+选项定义了每个段的属性.
+
+.PP
+有些选项是在[global]段中设定的(比如有关\fB安全\fR特性的设置),有些可以用在任何段中的(比如\fB建立方式\fR ),剩下的就只能用在普通的段中了.在以下的描述中,[homes]和[printers]段被看作是普通段.标记(\fBG\fR)表示此选项只能在[global]段中使用,标记(\fBS\fR)表示此选项可以在服务定义段中使用.注意,有(\fBS\fR)标记的选项也可以用在[global]段中,在这种情况下,这个选项设置被当作所有其他段的缺省设置.
+
+.PP
+选项的详细说明是按照字母顺序排列的,这样也许不是最好的分类方式,但至少保证你可以找得到他们.如果有多个同义词,那么我们只对首选的那个作详细说明,其他的同义词都只指明参阅那个首选的选项名.
+
+.SH "变量替换 VARIABLE SUBSTITUTIONS"
+
+.PP
+在配置文件中可以用很多字符串进行替换.例如,当用户以john的名称建立连接后,选项"path = /tmp/%u"就被解释成"path = /tmp/john".
+
+
+.PP
+这些置换会在后面的描述中说明,这里说明一些可以用在任何地方的通用置换.它们是:
+
+.TP
+%U
+对话用户名(客户端想要的用户名不一定与取得的一致.)
+
+
+.TP
+%G
+%U的用户组名 
+
+
+.TP
+%h
+运行Samba的主机的internet主机名 
+
+
+.TP
+%m
+客户机的NetBIOS名(非常有用) 
+
+
+.TP
+%L
+服务器的NetBIOS名.这使得你可以根据调用的客户端来改变你的配置,这样你的服务器就可以拥有"双重个性". 
+
+Note that this parameter is not available when Samba listens on port 445, as clients no longer send this information
+
+
+.TP
+%M
+客户端的internet主机名 
+
+
+.TP
+%R
+协议协商后选择的协议,它可以是CORE,COREPLUS,LANMAN1,LANMAN2或NT1中的一种.
+
+.TP
+%d
+当前samba服务器的进程号.
+
+
+.TP
+%a
+远程主机的结构.现在只能认出来某些类型,并且不是100%可靠.目前支持的有Samba、WfWg、WinNT和Win95.任何其他的都被认作"UNKNOWN".如果出现错误就给samba-bugs at samba.org发一个3级的日志以便修复这个bug.
+
+.TP
+%I
+客户机的IP地址.
+
+
+.TP
+%T
+当前的日期和时间.
+
+
+.TP
+%D
+Name of the domain or workgroup of the current user\&.
+
+
+.TP
+%$(\fIenvvar\fR)
+The value of the environment variable \fIenvar\fR\&.
+
+
+.PP
+The following substitutes apply only to some configuration options(only those that are used when a connection has been established):
+
+.TP
+%S
+当前服务名 
+
+
+.TP
+%P
+当前服务的根目录 
+
+
+.TP
+%u
+当前服务的用户名 
+
+
+.TP
+%g
+%u的用户组名 
+
+
+.TP
+%H
+%u所表示的用户的宿主目录 
+
+.TP
+%N
+tNIS服务器的名字.它从auto.map获得.如果没有用\fB--with-auto-mount\fR选项编译samba,那么它的值和%L相同.
+
+.TP
+%p
+用户宿主目录的路径.它由NIS的auot.map得到.NIS的auot.map入口项被分为"%N:%p".
+
+.PP
+灵活运用这些置换和其他的smb.conf选项可以做出非常有创造性的事情来.
+
+.SH NAME
+
+.PP
+Samba支持"名称修正",这样dos和windows客户端就可以使用与8.3格式不一致的文件.也可以用来调整8.3格式文件名的大小写.
+
+.PP
+
+有一些选项可以控制名称修正的执行,下面集中列出来.对于缺省情况请看testparm程序的输出结果.
+
+.PP
+所有这些选项都可以针对每个服务项单独设置(当然也可以设为全局变量).
+
+.PP
+这些选项是: 
+
+.TP
+mangle case = yes/no
+作用是控制是否对不符合缺省写法的名称进行修正.例如,如果设为yes,象"Mail"这样的文件名就会被修正.缺省设置是\fBno\fR.
+
+.TP
+case sensitive = yes/no
+控制文件名是否区分大小写.如果不区分的话,Samba就必须在传递名称时查找并匹配文件名.缺省设置是\fBno\fR.
+
+.TP
+default case = upper/lower
+控制新文件名大小写缺省值.缺省设置是\fB小写\fR.
+
+
+.TP
+preserve case = yes/no
+控制建新文件时是否用客户所提供的大小写形式,或强制用缺省形式.缺省为\fByes\fR.
+
+
+.TP
+short preserve case = yes/no
+控制新建8.3格式的文件名时是全部用大写及合适长度,还是强制用缺省情况.它可以和上面的"preserve case = yes"联用以允许长文件名保持大小写不变,而短文件名为小写.本项的缺省设置是\fByes\fR.
+
+
+.PP
+缺省情况下,Samba3.0与Windows NT相同,就是不区分大小写但保持大小写形式.
+
+.SH "用户名/口令检验中的注意事项 NOTE ABOUT USERNAME/PASSWORD VALIDATION"
+
+.PP
+用户有多种连接到服务项的方式.服务器按照下面的步骤来确定是否允许客户对指定服务的连接.如果下面步骤全部失败,则拒绝用户的连接请求.如果某一步通过,余下的检验就不再进行.
+
+.PP
+如果被请求的服务项设置为\fIguest only = yes\fR,并且,服务运行在共享级安全模式(\fIsecurity = share\fR) ,则跳过1--5步检查.
+
+.TP 3
+第一步:
+如果客户端提供一对用户名和口令,且这对用户名和口令经unix系统口令程序检验为有效,那么就以该用户名建立连接.注意,这包括用\fI\\\\server\\service%username\fR方式传递用户名.
+
+.TP
+第二步:
+如果客户端事先在系统上注册了一个用户名,并且提供了正确的口令,就允许建立连接.
+
+.TP
+第三步:
+根据提供的口令检查客户端的netbios名及以前用过的用户名,如匹配,就允许以该用户名建立连接.
+
+.TP
+第四步:
+如果客户端以前有合法的用户名和口令,并获得了有效的令牌,就允许以该用户名建立连接.
+
+.TP
+第五步:
+如果在\fIsmb.conf\fR里设置了"user = "字段,且客户端提供了一个口令,口令经UNIX系统检验,并与"user="字段里某一个用户匹配,那么就允许以"user="里匹配到的用户名建立连接.如果"user="字段是以@开始,那么该名字会展开为同名组里的用户名列表 .
+
+.TP
+第六步:
+如果这是一个提供给guest用的服务项,那么连接以"guest account ="里给出的用户名建立,而不考虑提供的口令.
+
+.LP
+
+.SH "全局选项完整列表 COMPLETE LIST OF GLOBAL PARAMETERS"
+
+.PP
+以下列出了所有的全局选项,各选项的详细说明请参看后面的相应段落.注意,有些选项的意义是相同的.
+
+.TP 3
+\(bu
+\fIabort shutdown script\fR
+
+.TP
+\(bu
+\fIadd group script\fR
+
+.TP
+\(bu
+\fIadd machine script\fR
+
+.TP
+\(bu
+\fIaddprinter command\fR
+
+.TP
+\(bu
+\fIadd share command\fR
+
+.TP
+\(bu
+\fIadd user script\fR
+
+.TP
+\(bu
+\fIadd user to group script\fR
+
+.TP
+\(bu
+\fIafs username map\fR
+
+.TP
+\(bu
+\fIalgorithmic rid base\fR
+
+.TP
+\(bu
+\fIallow trusted domains\fR
+
+.TP
+\(bu
+\fIannounce as\fR
+
+.TP
+\(bu
+\fIannounce version\fR
+
+.TP
+\(bu
+\fIauth methods\fR
+
+.TP
+\(bu
+\fIauto services\fR
+
+.TP
+\(bu
+\fIbind interfaces only\fR
+
+.TP
+\(bu
+\fIbrowse list\fR
+
+.TP
+\(bu
+\fIchange notify timeout\fR
+
+.TP
+\(bu
+\fIchange share command\fR
+
+.TP
+\(bu
+\fIclient lanman auth\fR
+
+.TP
+\(bu
+\fIclient ntlmv2 auth\fR
+
+.TP
+\(bu
+\fIclient plaintext auth\fR
+
+.TP
+\(bu
+\fIclient schannel\fR
+
+.TP
+\(bu
+\fIclient signing\fR
+
+.TP
+\(bu
+\fIclient use spnego\fR
+
+.TP
+\(bu
+\fIconfig file\fR
+
+.TP
+\(bu
+\fIdeadtime\fR
+
+.TP
+\(bu
+\fIdebug hires timestamp\fR
+
+.TP
+\(bu
+\fIdebuglevel\fR
+
+.TP
+\(bu
+\fIdebug pid\fR
+
+.TP
+\(bu
+\fIdebug timestamp\fR
+
+.TP
+\(bu
+\fIdebug uid\fR
+
+.TP
+\(bu
+\fIdefault\fR
+
+.TP
+\(bu
+\fIdefault service\fR
+
+.TP
+\(bu
+\fIdelete group script\fR
+
+.TP
+\(bu
+\fIdeleteprinter command\fR
+
+.TP
+\(bu
+\fIdelete share command\fR
+
+.TP
+\(bu
+\fIdelete user from group script\fR
+
+.TP
+\(bu
+\fIdelete user script\fR
+
+.TP
+\(bu
+\fIdfree command\fR
+
+.TP
+\(bu
+\fIdisable netbios\fR
+
+.TP
+\(bu
+\fIdisable spoolss\fR
+
+.TP
+\(bu
+\fIdisplay charset\fR
+
+.TP
+\(bu
+\fIdns proxy\fR
+
+.TP
+\(bu
+\fIdomain logons\fR
+
+.TP
+\(bu
+\fIdomain master\fR
+
+.TP
+\(bu
+\fIdos charset\fR
+
+.TP
+\(bu
+\fIenable rid algorithm\fR
+
+.TP
+\(bu
+\fIencrypt passwords\fR
+
+.TP
+\(bu
+\fIenhanced browsing\fR
+
+.TP
+\(bu
+\fIenumports command\fR
+
+.TP
+\(bu
+\fIget quota command\fR
+
+.TP
+\(bu
+\fIgetwd cache\fR
+
+.TP
+\(bu
+\fIguest account\fR
+
+.TP
+\(bu
+\fIhide local users\fR
+
+.TP
+\(bu
+\fIhomedir map\fR
+
+.TP
+\(bu
+\fIhost msdfs\fR
+
+.TP
+\(bu
+\fIhostname lookups\fR
+
+.TP
+\(bu
+\fIhosts equiv\fR
+
+.TP
+\(bu
+\fIidmap backend\fR
+
+.TP
+\(bu
+\fIidmap gid\fR
+
+.TP
+\(bu
+\fIidmap uid\fR
+
+.TP
+\(bu
+\fIinclude\fR
+
+.TP
+\(bu
+\fIinterfaces\fR
+
+.TP
+\(bu
+\fIkeepalive\fR
+
+.TP
+\(bu
+\fIkernel change notify\fR
+
+.TP
+\(bu
+\fIkernel oplocks\fR
+
+.TP
+\(bu
+\fIlanman auth\fR
+
+.TP
+\(bu
+\fIlarge readwrite\fR
+
+.TP
+\(bu
+\fIldap admin dn\fR
+
+.TP
+\(bu
+\fIldap delete dn\fR
+
+.TP
+\(bu
+\fIldap filter\fR
+
+.TP
+\(bu
+\fIldap group suffix\fR
+
+.TP
+\(bu
+\fIldap idmap suffix\fR
+
+.TP
+\(bu
+\fIldap machine suffix\fR
+
+.TP
+\(bu
+\fIldap passwd sync\fR
+
+.TP
+\(bu
+\fIldap port\fR
+
+.TP
+\(bu
+\fIldap server\fR
+
+.TP
+\(bu
+\fIldap ssl\fR
+
+.TP
+\(bu
+\fIldap suffix\fR
+
+.TP
+\(bu
+\fIldap user suffix\fR
+
+.TP
+\(bu
+\fIlm announce\fR
+
+.TP
+\(bu
+\fIlm interval\fR
+
+.TP
+\(bu
+\fIload printers\fR
+
+.TP
+\(bu
+\fIlocal master\fR
+
+.TP
+\(bu
+\fIlock dir\fR
+
+.TP
+\(bu
+\fIlock directory\fR
+
+.TP
+\(bu
+\fIlock spin count\fR
+
+.TP
+\(bu
+\fIlock spin time\fR
+
+.TP
+\(bu
+\fIlog file\fR
+
+.TP
+\(bu
+\fIlog level\fR
+
+.TP
+\(bu
+\fIlogon drive\fR
+
+.TP
+\(bu
+\fIlogon home\fR
+
+.TP
+\(bu
+\fIlogon path\fR
+
+.TP
+\(bu
+\fIlogon script\fR
+
+.TP
+\(bu
+\fIlpq cache time\fR
+
+.TP
+\(bu
+\fImachine password timeout\fR
+
+.TP
+\(bu
+\fImangled stack\fR
+
+.TP
+\(bu
+\fImangle prefix\fR
+
+.TP
+\(bu
+\fImangling method\fR
+
+.TP
+\(bu
+\fImap to guest\fR
+
+.TP
+\(bu
+\fImax disk size\fR
+
+.TP
+\(bu
+\fImax log size\fR
+
+.TP
+\(bu
+\fImax mux\fR
+
+.TP
+\(bu
+\fImax open files\fR
+
+.TP
+\(bu
+\fImax protocol\fR
+
+.TP
+\(bu
+\fImax smbd processes\fR
+
+.TP
+\(bu
+\fImax ttl\fR
+
+.TP
+\(bu
+\fImax wins ttl\fR
+
+.TP
+\(bu
+\fImax xmit\fR
+
+.TP
+\(bu
+\fImessage command\fR
+
+.TP
+\(bu
+\fImin passwd length\fR
+
+.TP
+\(bu
+\fImin password length\fR
+
+.TP
+\(bu
+\fImin protocol\fR
+
+.TP
+\(bu
+\fImin wins ttl\fR
+
+.TP
+\(bu
+\fIname cache timeout\fR
+
+.TP
+\(bu
+\fIname resolve order\fR
+
+.TP
+\(bu
+\fInetbios aliases\fR
+
+.TP
+\(bu
+\fInetbios name\fR
+
+.TP
+\(bu
+\fInetbios scope\fR
+
+.TP
+\(bu
+\fInis homedir\fR
+
+.TP
+\(bu
+\fIntlm auth\fR
+
+.TP
+\(bu
+\fInt pipe support\fR
+
+.TP
+\(bu
+\fInt status support\fR
+
+.TP
+\(bu
+\fInull passwords\fR
+
+.TP
+\(bu
+\fIobey pam restrictions\fR
+
+.TP
+\(bu
+\fIoplock break wait time\fR
+
+.TP
+\(bu
+\fIos2 driver map\fR
+
+.TP
+\(bu
+\fIos level\fR
+
+.TP
+\(bu
+\fIpam password change\fR
+
+.TP
+\(bu
+\fIpanic action\fR
+
+.TP
+\(bu
+\fIparanoid server security\fR
+
+.TP
+\(bu
+\fIpassdb backend\fR
+
+.TP
+\(bu
+\fIpasswd chat\fR
+
+.TP
+\(bu
+\fIpasswd chat debug\fR
+
+.TP
+\(bu
+\fIpasswd program\fR
+
+.TP
+\(bu
+\fIpassword level\fR
+
+.TP
+\(bu
+\fIpassword server\fR
+
+.TP
+\(bu
+\fIpid directory\fR
+
+.TP
+\(bu
+\fIprefered master\fR
+
+.TP
+\(bu
+\fIpreferred master\fR
+
+.TP
+\(bu
+\fIpreload\fR
+
+.TP
+\(bu
+\fIpreload modules\fR
+
+.TP
+\(bu
+\fIprintcap\fR
+
+.TP
+\(bu
+\fIprivate dir\fR
+
+.TP
+\(bu
+\fIprotocol\fR
+
+.TP
+\(bu
+\fIread bmpx\fR
+
+.TP
+\(bu
+\fIread raw\fR
+
+.TP
+\(bu
+\fIread size\fR
+
+.TP
+\(bu
+\fIrealm\fR
+
+.TP
+\(bu
+\fIremote announce\fR
+
+.TP
+\(bu
+\fIremote browse sync\fR
+
+.TP
+\(bu
+\fIrestrict anonymous\fR
+
+.TP
+\(bu
+\fIroot\fR
+
+.TP
+\(bu
+\fIroot dir\fR
+
+.TP
+\(bu
+\fIroot directory\fR
+
+.TP
+\(bu
+\fIsecurity\fR
+
+.TP
+\(bu
+\fIserver schannel\fR
+
+.TP
+\(bu
+\fIserver signing\fR
+
+.TP
+\(bu
+\fIserver string\fR
+
+.TP
+\(bu
+\fIset primary group script\fR
+
+.TP
+\(bu
+\fIset quota command\fR
+
+.TP
+\(bu
+\fIshow add printer wizard\fR
+
+.TP
+\(bu
+\fIshutdown script\fR
+
+.TP
+\(bu
+\fIsmb passwd file\fR
+
+.TP
+\(bu
+\fIsmb ports\fR
+
+.TP
+\(bu
+\fIsocket address\fR
+
+.TP
+\(bu
+\fIsocket options\fR
+
+.TP
+\(bu
+\fIsource environment\fR
+
+.TP
+\(bu
+\fIstat cache\fR
+
+.TP
+\(bu
+\fIsyslog\fR
+
+.TP
+\(bu
+\fIsyslog only\fR
+
+.TP
+\(bu
+\fItemplate homedir\fR
+
+.TP
+\(bu
+\fItemplate primary group\fR
+
+.TP
+\(bu
+\fItemplate shell\fR
+
+.TP
+\(bu
+\fItime offset\fR
+
+.TP
+\(bu
+\fItime server\fR
+
+.TP
+\(bu
+\fItimestamp logs\fR
+
+.TP
+\(bu
+\fIunicode\fR
+
+.TP
+\(bu
+\fIunix charset\fR
+
+.TP
+\(bu
+\fIunix extensions\fR
+
+.TP
+\(bu
+\fIunix password sync\fR
+
+.TP
+\(bu
+\fIupdate encrypted\fR
+
+.TP
+\(bu
+\fIuse mmap\fR
+
+.TP
+\(bu
+\fIusername level\fR
+
+.TP
+\(bu
+\fIusername map\fR
+
+.TP
+\(bu
+\fIuse spnego\fR
+
+.TP
+\(bu
+\fIutmp\fR
+
+.TP
+\(bu
+\fIutmp directory\fR
+
+.TP
+\(bu
+\fIwinbind cache time\fR
+
+.TP
+\(bu
+\fIwinbind enable local accounts\fR
+
+.TP
+\(bu
+\fIwinbind enum groups\fR
+
+.TP
+\(bu
+\fIwinbind enum users\fR
+
+.TP
+\(bu
+\fIwinbind gid\fR
+
+.TP
+\(bu
+\fIwinbind separator\fR
+
+.TP
+\(bu
+\fIwinbind trusted domains only\fR
+
+.TP
+\(bu
+\fIwinbind uid\fR
+
+.TP
+\(bu
+\fIwinbind use default domain\fR
+
+.TP
+\(bu
+\fIwins hook\fR
+
+.TP
+\(bu
+\fIwins partners\fR
+
+.TP
+\(bu
+\fIwins proxy\fR
+
+.TP
+\(bu
+\fIwins server\fR
+
+.TP
+\(bu
+\fIwins support\fR
+
+.TP
+\(bu
+\fIworkgroup\fR
+
+.TP
+\(bu
+\fIwrite raw\fR
+
+.TP
+\(bu
+\fIwtmp directory\fR
+
+.LP
+
+.SH "服务选项完整列表 COMPLETE LIST OF SERVICE PARAMETERS"
+
+.PP
+以下列出了所有关于服务项的选项,各选项的详细说明请参见后面的相应段落.注意,有些选项的意义是相同的.
+
+.TP 3
+\(bu
+\fIacl compatibility\fR
+
+.TP
+\(bu
+\fIadmin users\fR
+
+.TP
+\(bu
+\fIafs share\fR
+
+.TP
+\(bu
+\fIallow hosts\fR
+
+.TP
+\(bu
+\fIavailable\fR
+
+.TP
+\(bu
+\fIblocking locks\fR
+
+.TP
+\(bu
+\fIblock size\fR
+
+.TP
+\(bu
+\fIbrowsable\fR
+
+.TP
+\(bu
+\fIbrowseable\fR
+
+.TP
+\(bu
+\fIcase sensitive\fR
+
+.TP
+\(bu
+\fIcasesignames\fR
+
+.TP
+\(bu
+\fIcomment\fR
+
+.TP
+\(bu
+\fIcopy\fR
+
+.TP
+\(bu
+\fIcreate mask\fR
+
+.TP
+\(bu
+\fIcreate mode\fR
+
+.TP
+\(bu
+\fIcsc policy\fR
+
+.TP
+\(bu
+\fIdefault case\fR
+
+.TP
+\(bu
+\fIdefault devmode\fR
+
+.TP
+\(bu
+\fIdelete readonly\fR
+
+.TP
+\(bu
+\fIdelete veto files\fR
+
+.TP
+\(bu
+\fIdeny hosts\fR
+
+.TP
+\(bu
+\fIdirectory\fR
+
+.TP
+\(bu
+\fIdirectory mask\fR
+
+.TP
+\(bu
+\fIdirectory mode\fR
+
+.TP
+\(bu
+\fIdirectory security mask\fR
+
+.TP
+\(bu
+\fIdont descend\fR
+
+.TP
+\(bu
+\fIdos filemode\fR
+
+.TP
+\(bu
+\fIdos filetime resolution\fR
+
+.TP
+\(bu
+\fIdos filetimes\fR
+
+.TP
+\(bu
+\fIexec\fR
+
+.TP
+\(bu
+\fIfake directory create times\fR
+
+.TP
+\(bu
+\fIfake oplocks\fR
+
+.TP
+\(bu
+\fIfollow symlinks\fR
+
+.TP
+\(bu
+\fIforce create mode\fR
+
+.TP
+\(bu
+\fIforce directory mode\fR
+
+.TP
+\(bu
+\fIforce directory security mode\fR
+
+.TP
+\(bu
+\fIforce group\fR
+
+.TP
+\(bu
+\fIforce security mode\fR
+
+.TP
+\(bu
+\fIforce user\fR
+
+.TP
+\(bu
+\fIfstype\fR
+
+.TP
+\(bu
+\fIgroup\fR
+
+.TP
+\(bu
+\fIguest account\fR
+
+.TP
+\(bu
+\fIguest ok\fR
+
+.TP
+\(bu
+\fIguest only\fR
+
+.TP
+\(bu
+\fIhide dot files\fR
+
+.TP
+\(bu
+\fIhide files\fR
+
+.TP
+\(bu
+\fIhide special files\fR
+
+.TP
+\(bu
+\fIhide unreadable\fR
+
+.TP
+\(bu
+\fIhide unwriteable files\fR
+
+.TP
+\(bu
+\fIhosts allow\fR
+
+.TP
+\(bu
+\fIhosts deny\fR
+
+.TP
+\(bu
+\fIinherit acls\fR
+
+.TP
+\(bu
+\fIinherit permissions\fR
+
+.TP
+\(bu
+\fIinvalid users\fR
+
+.TP
+\(bu
+\fIlevel2 oplocks\fR
+
+.TP
+\(bu
+\fIlocking\fR
+
+.TP
+\(bu
+\fIlppause command\fR
+
+.TP
+\(bu
+\fIlpq command\fR
+
+.TP
+\(bu
+\fIlpresume command\fR
+
+.TP
+\(bu
+\fIlprm command\fR
+
+.TP
+\(bu
+\fImagic output\fR
+
+.TP
+\(bu
+\fImagic script\fR
+
+.TP
+\(bu
+\fImangle case\fR
+
+.TP
+\(bu
+\fImangled map\fR
+
+.TP
+\(bu
+\fImangled names\fR
+
+.TP
+\(bu
+\fImangling char\fR
+
+.TP
+\(bu
+\fImap acl inherit\fR
+
+.TP
+\(bu
+\fImap archive\fR
+
+.TP
+\(bu
+\fImap hidden\fR
+
+.TP
+\(bu
+\fImap system\fR
+
+.TP
+\(bu
+\fImax connections\fR
+
+.TP
+\(bu
+\fImax print jobs\fR
+
+.TP
+\(bu
+\fImax reported print jobs\fR
+
+.TP
+\(bu
+\fImin print space\fR
+
+.TP
+\(bu
+\fImsdfs proxy\fR
+
+.TP
+\(bu
+\fImsdfs root\fR
+
+.TP
+\(bu
+\fInt acl support\fR
+
+.TP
+\(bu
+\fIonly guest\fR
+
+.TP
+\(bu
+\fIonly user\fR
+
+.TP
+\(bu
+\fIoplock contention limit\fR
+
+.TP
+\(bu
+\fIoplocks\fR
+
+.TP
+\(bu
+\fIpath\fR
+
+.TP
+\(bu
+\fIposix locking\fR
+
+.TP
+\(bu
+\fIpostexec\fR
+
+.TP
+\(bu
+\fIpreexec\fR
+
+.TP
+\(bu
+\fIpreexec close\fR
+
+.TP
+\(bu
+\fIpreserve case\fR
+
+.TP
+\(bu
+\fIprintable\fR
+
+.TP
+\(bu
+\fIprintcap name\fR
+
+.TP
+\(bu
+\fIprint command\fR
+
+.TP
+\(bu
+\fIprinter\fR
+
+.TP
+\(bu
+\fIprinter admin\fR
+
+.TP
+\(bu
+\fIprinter name\fR
+
+.TP
+\(bu
+\fIprinting\fR
+
+.TP
+\(bu
+\fIprint ok\fR
+
+.TP
+\(bu
+\fIprofile acls\fR
+
+.TP
+\(bu
+\fIpublic\fR
+
+.TP
+\(bu
+\fIqueuepause command\fR
+
+.TP
+\(bu
+\fIqueueresume command\fR
+
+.TP
+\(bu
+\fIread list\fR
+
+.TP
+\(bu
+\fIread only\fR
+
+.TP
+\(bu
+\fIroot postexec\fR
+
+.TP
+\(bu
+\fIroot preexec\fR
+
+.TP
+\(bu
+\fIroot preexec close\fR
+
+.TP
+\(bu
+\fIsecurity mask\fR
+
+.TP
+\(bu
+\fIset directory\fR
+
+.TP
+\(bu
+\fIshare modes\fR
+
+.TP
+\(bu
+\fIshort preserve case\fR
+
+.TP
+\(bu
+\fIstrict allocate\fR
+
+.TP
+\(bu
+\fIstrict locking\fR
+
+.TP
+\(bu
+\fIstrict sync\fR
+
+.TP
+\(bu
+\fIsync always\fR
+
+.TP
+\(bu
+\fIuse client driver\fR
+
+.TP
+\(bu
+\fIuser\fR
+
+.TP
+\(bu
+\fIusername\fR
+
+.TP
+\(bu
+\fIusers\fR
+
+.TP
+\(bu
+\fIuse sendfile\fR
+
+.TP
+\(bu
+\fI-valid\fR
+
+.TP
+\(bu
+\fIvalid users\fR
+
+.TP
+\(bu
+\fIveto files\fR
+
+.TP
+\(bu
+\fIveto oplock files\fR
+
+.TP
+\(bu
+\fIvfs object\fR
+
+.TP
+\(bu
+\fIvfs objects\fR
+
+.TP
+\(bu
+\fIvolume\fR
+
+.TP
+\(bu
+\fIwide links\fR
+
+.TP
+\(bu
+\fIwritable\fR
+
+.TP
+\(bu
+\fIwriteable\fR
+
+.TP
+\(bu
+\fIwrite cache size\fR
+
+.TP
+\(bu
+\fIwrite list\fR
+
+.TP
+\(bu
+\fIwrite ok\fR
+
+.LP
+
+.SH "每一个选项的详细解释  EXPLANATION OF EACH PARAMETER"
+
+.TP
+abort shutdown script (G)
+\fBThis parameter only exists in the HEAD cvs branch\fR This a full path name to a script called by \fBsmbd\fR(8) that should stop a shutdown procedure issued by the \fIshutdown script\fR\&.
+
+
+This command will be run as user\&.
+
+
+缺省设置: \fBNone\fR\&.
+
+
+示例: \fBabort shutdown script = /sbin/shutdown -c\fR
+
+
+.TP
+acl compatibility (S)
+This parameter specifies what OS ACL semantics should be compatible with\&. Possible values are \fBwinnt\fR for Windows NT 4, \fBwin2k\fR for Windows 2000 and above and \fBauto\fR\&. If you specify \fBauto\fR, the value for this parameter will be based upon the version of the client\&. There should be no reason to change this parameter from the default\&.
+
+
+缺省设置: \fBacl compatibility = Auto\fR
+
+
+示例: \fBacl compatibility = win2k\fR
+
+
+.TP
+add group script (G)
+This is the full pathname to a script that will be run \fBAS ROOT\fR by \fBsmbd\fR(8) when a new group is requested\&. It will expand any \fI%g\fR to the group name passed\&. This script is only useful for installations using the Windows NT domain administration tools\&. The script is free to create a group with an arbitrary name to circumvent unix group name restrictions\&. In that case the script must print the numeric gid of the created group on stdout\&.
+
+
+.TP
+add machine script (G)
+This is the full pathname to a script that will be run by \fBsmbd\fR(8) when a machine is added to it's domain using the administrator username and password method\&.
+
+
+This option is only required when using sam back-ends tied to the Unix uid method of RID calculation such as smbpasswd\&. This option is only available in Samba 3\&.0\&.
+
+
+缺省设置: \fBadd machine script = <空字符串>\fR
+
+
+示例: \fBadd machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u\fR
+
+
+.TP
+addprinter command (G)
+With the introduction of MS-RPC based printing support for Windows NT/2000 clients in Samba 2\&.2, The MS Add Printer Wizard (APW) icon is now also available in the "Printers\&.\&.\&." folder displayed a share listing\&. The APW allows for printers to be add remotely to a Samba or Windows NT/2000 print server\&.
+
+
+For a Samba host this means that the printer must be physically added to the underlying printing system\&. The \fIadd printer command\fR defines a script to be run which will perform the necessary operations for adding the printer to the print system and to add the appropriate service definition to the \fIsmb\&.conf\fR file in order that it can be shared by \fBsmbd\fR(8)\&.
+
+
+The \fIaddprinter command\fR is automatically invoked with the following parameter (in order):
+
+
+\fIprinter name\fR
+
+\fIshare name\fR
+
+\fIport name\fR
+
+\fIdriver name\fR
+
+\fIlocation\fR
+
+\fIWindows 9x driver location\fR
+
+All parameters are filled in from the PRINTER_INFO_2 structure sent by the Windows NT/2000 client with one exception\&. The "Windows 9x driver location" parameter is included for backwards compatibility only\&. The remaining fields in the structure are generated from answers to the APW questions\&.
+
+
+Once the \fIaddprinter command\fR has been executed, \fBsmbd\fR will reparse the \fI smb\&.conf\fR to determine if the share defined by the APW exists\&. If the sharename is still invalid, then \fBsmbd \fR will return an ACCESS_DENIED error to the client\&.
+
+
+The "add printer command" program can output a single line of text, which Samba will set as the port the new printer is connected to\&. If this line isn't output, Samba won't reload its printer shares\&.
+
+
+参见 \fI deleteprinter command\fR, \fIprinting\fR, \fIshow add printer wizard\fR
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBaddprinter command = /usr/bin/addprinter\fR
+
+
+.TP
+add share command (G)
+Samba 2\&.2\&.0 introduced the ability to dynamically add and delete shares via the Windows NT 4\&.0 Server Manager\&. The \fIadd share command\fR is used to define an external program or script which will add a new service definition to \fIsmb\&.conf\fR\&. In order to successfully execute the \fIadd share command\fR, \fBsmbd\fR requires that the administrator be connected using a root account (i\&.e\&. uid == 0)\&.
+
+
+When executed, \fBsmbd\fR will automatically invoke the \fIadd share command\fR with four parameters\&.
+
+
+\fIconfigFile\fR - the location of the global \fIsmb\&.conf\fR file\&.
+
+\fIshareName\fR - the name of the new share\&.
+
+\fIpathName\fR - path to an **existing** directory on disk\&.
+
+\fIcomment\fR - comment string to associate with the new share\&.
+
+This parameter is only used for add file shares\&. To add printer shares, see the \fIaddprinter command\fR\&.
+
+
+参见 \fIchange share command\fR, \fIdelete share command\fR\&.
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBadd share command = /usr/local/bin/addshare\fR
+
+
+.TP
+add user script (G)
+这个选项指出一个脚本的完整文件路径,这个脚本将在特定环境下(下面有详细解释)由\fBsmbd\fR (8)\fB以root身份\fR执行.
+
+通常,samba服务器需要为所有访问服务器上文件的用户建立UNIX用户账号.但是在使用Windows NT账号数据库作为主用户数据库的站点,建立这些用户并在与NT的主域控制器保持用户列表同步是一件很麻烦的事情.这个选项使smbd可以在用户访问时\fB根据需要\fR自动生成UNIX用户账号.
+
+为了使用这个选项,\fBsmbd\fR\fB必须\fR被设置成\fIsecurity=server\fR或者\fIsecurity=domain\fR,并且\fIadd user script\fR必须设为用\fI%u\fR参数来建立unix帐号的脚本文件的全路径,\fI%u\fR扩展成建立的unix帐号名.
+
+当windows用户尝试访问samba服务器时,在登陆时(建立SMB协议会话),\fBsmbd\fR与\fI口令服务器\fR联系,并尝试验证用户名和口令.如果成功,\fBsmbd\fR就会根据unix的口令文件试着将这个windows用户映射成一个unix用户.如果查找失败,但设置了\fIadd user script \fR,smbd就会以\fBroot\fR的身份调用这个脚本,将\fI%u\fR扩展成该要建立的用户账号.
+
+如果这个脚本执行成功,\fBsmbd\fR就认为这个用户已经存在.用这种方式,可以动态建立UNIX用户账号并匹配已有的NT账号.
+
+参见 \fI security\fR, \fIpassword server\fR, \fIdelete user script\fR.
+
+
+缺省设置: \fBadd user script = <空字符串>\fR
+
+
+示例: \fBadd user script = /usr/local/samba/bin/add_user %u\fR
+
+
+.TP
+add user to group script (G)
+Full path to the script that will be called when a user is added to a group using the Windows NT domain administration tools\&. It will be run by \fBsmbd\fR(8) \fBAS ROOT\fR\&. Any \fI%g\fR will be replaced with the group name and any \fI%u\fR will be replaced with the user name\&.
+
+
+缺省设置: \fBadd user to group script = \fR
+
+
+示例: \fBadd user to group script = /usr/sbin/adduser %u %g\fR
+
+
+.TP
+admin users (S)
+admin users定义一组对共享有管理特权的用户.就相当于这些用户可以象超级用户那样操作所有的文件.
+
+小心使用该选项,因为在这个名单里的用户可以对共享资源作任何他们想做的事.
+
+缺省设置: \fB没有 admin users\fR
+
+
+示例: \fBadmin users = jason\fR
+
+
+.TP
+afs share (S)
+This parameter controls whether special AFS features are enabled for this share\&. If enabled, it assumes that the directory exported via the \fIpath\fR parameter is a local AFS import\&. The special AFS features include the attempt to hand-craft an AFS token if you enabled --with-fake-kaserver in configure\&.
+
+
+缺省设置: \fBafs share = no\fR
+
+
+示例: \fBafs share = yes\fR
+
+
+.TP
+afs username map (G)
+If you are using the fake kaserver AFS feature, you might want to hand-craft the usernames you are creating tokens for\&. For example this is necessary if you have users from several domain in your AFS Protection Database\&. One possible scheme to code users as DOMAIN+User as it is done by winbind with the + as a separator\&.
+
+
+The mapped user name must contain the cell name to log into, so without setting this parameter there will be no token\&.
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBafs username map = %u at afs.samba.org\fR
+
+
+.TP
+algorithmic rid base (G)
+This determines how Samba will use its algorithmic mapping from uids/gid to the RIDs needed to construct NT Security Identifiers\&.
+
+
+Setting this option to a larger value could be useful to sites transitioning from WinNT and Win2k, as existing user and group rids would otherwise clash with sytem users etc\&.
+
+
+All UIDs and GIDs must be able to be resolved into SIDs for the correct operation of ACLs on the server\&. As such the algorithmic mapping can't be 'turned off', but pushing it 'out of the way' should resolve the issues\&. Users and groups can then be assigned 'low' RIDs in arbitary-rid supporting backends\&.
+
+
+缺省设置: \fBalgorithmic rid base = 1000\fR
+
+
+示例: \fBalgorithmic rid base = 100000\fR
+
+
+.TP
+allow hosts (S)
+和\fIhosts allow\fR同义. 
+
+
+.TP
+allow trusted domains (G)
+这个选项只在\fIsecurity\fR选项被设成\fBserver\fR或\fBdomain\fR模式时才有效果.如果设为no的话,尝试联接到smbd运行的域或工作组以外的资源时会失败,即使那个域是由远程服务器验证为可信的也不行.
+
+
+如果你只需要在域中对成员提供服务资源的话这个选项是非常有用的.举例来说,假设有两个域DOMA和DOMB,DOMA已经向DOMB进行了委托,而samba服务器位于DOMA中.在通常情况下,在DOMB中有账号的用户可以用同样的samba服务器账号名访问UNIX上的资源.而无须他在DOMA上有账号.不过这样就使安全界线更难分清了.
+
+
+缺省设置: \fBallow trusted domains = yes\fR
+
+
+.TP
+announce as (G)
+这个选项定义\fBnmbd\fR(8) 对网络邻居声称的服务器类型.缺省为windows NT.可选项有"NT",它与"NT Server"同义,"NT Server","NT Workstation","Win95"或"WfW",它们分别代表Windows NT Server,Windows NT Workstation,Windows 95和Windows for Workgroups.除非有特殊的需要不想让samba以windows NT的身份出现,一般不要改动这个选项,因为这可能会影响samba作为浏览服务器的正确性.
+
+
+缺省设置: \fBannounce as = NT Server\fR
+
+
+示例: \fBannounce as = Win95\fR
+
+
+.TP
+announce version (G)
+此选项定义nmbd用于声明服务器版本号的主版本号和次版本号.缺省版本号的是4.9。除非有特殊的必要想将samba设为低版本,一般不要改动这个选项.
+
+缺省设置: \fBannounce version = 4.9\fR
+
+
+示例: \fBannounce version = 2.0\fR
+
+
+.TP
+auth methods (G)
+This option allows the administrator to chose what authentication methods \fBsmbd\fR will use when authenticating a user\&. This option defaults to sensible values based on \fIsecurity\fR\&. This should be considered a developer option and used only in rare circumstances\&. In the majority (if not all) of production servers, the default setting should be adequate\&.
+
+
+Each entry in the list attempts to authenticate the user in turn, until the user authenticates\&. In practice only one method will ever actually be able to complete the authentication\&.
+
+
+Possible options include \fBguest\fR (anonymous access), \fBsam\fR (lookups in local list of accounts based on netbios name or domain name), \fBwinbind\fR (relay authentication requests for remote users through winbindd), \fBntdomain\fR (pre-winbindd method of authentication for remote domain users; deprecated in favour of winbind method), \fBtrustdomain\fR (authenticate trusted users by contacting the remote DC directly from smbd; deprecated in favour of winbind method)\&.
+
+
+缺省设置: \fBauth methods = <空字符串>\fR
+
+
+示例: \fBauth methods = guest sam winbind\fR
+
+
+.TP
+auto services (G)
+与 \fIpreload\fR 同义.
+
+
+.TP
+available (S)
+这个选项可以用来关掉一个服务项.如果\fIavailable = no\fR,那么\fB所有\fR对该服务的连接都会失败.而这些失败会被记录下来.
+
+缺省设置: \fBavailable = yes\fR
+
+
+.TP
+bind interfaces only (G)
+这个全局选项允许samba管理员限制一台主机的某一个网络接口用于响应请求.这会对于\fBsmbd\fR(8)文件服务和\fBnmbd\fR(8)名字服务造成些许影响.
+
+对于名字服务,它将使\fBnmbd\fR 绑定到'interfaces'选项里列出的网络接口的137和138端口上.为了读取广播消息,\fBnmbd\fR也会绑定到"所有地址"接口(0.0.0.0)的137和138端口上.如果没有设置这个选项,\fBnmbd\fR将在所有的接口上响应名字服务请求.如果设置了"bind interfaces only",那么\fBnmbd\fR将在广播接口上检查任何分组的源地址,丢弃任何不匹配\fIinterfaces\fR选项所列接口之广播地址的分组.当在其它接口上收到单播分组,此选项使nmbd拒绝对任何不是是\fIinterfaces\fR选项所列接口来发送分组的主机的服务.IP源地址哄骗可以使这个简单的检查失效,所以不要将\fBnmbd\fR安全功能用于严肃场合.
+
+对于文件服务,该选项使\fBsmbd\fR(8)只在'interfaces'选项所列的网络接口上绑定.这就限制\fBsmbd\fR 只响应那些接口上发出的分组.注意,不应该在PPP和时断时续的机器上或非广播网络接口上使用这个选项,因为它处理不了非永久连接的接口.
+
+如果设置了\fIbind interfaces only\fR,除非网络地址\fB127.0.0.1\fR被加到\fIinterfaces\fR选项的列表中,否则\fBsmbpasswd\fR(8)和\fBswat\fR(8) 可能不会象我们所期望的那样工作,原因如下:
+
+为了改变用户SMB口令,\fBsmbpasswd\fR缺省情况下会以smb客户端的身份连接本地主机地址\fBlocalhost - 127.0.0.1\fR,发出更改口令请求.如果设置了\fIbind interfaces only\fR,\fBsmbpasswd\fR在缺省情况下将会连接失败,除非\fB127.0.0.1\fR已被加入到\fIinterfaces\fR选项.另外,可以用\fI-r remote machine\fR选项指定本地主机的主网络接口ip地址,这样\fBsmbpasswd\fR就会强制使用本地的主ip地址.
+
+\fBswat\fR的状态页面会在\fB127.0.0.1\fR尝试连接\fBsmbd\fR和 \fBnmbd\fR,以确定它们是否正在运行.如果不加入\fB127.0.0.1\fR,将会使\fBsmbd\fR和\fBnmbd\fR 总表示没有运行甚至实际情况并不是这样.这就阻止了\fB swat\fR启动/停止/重启动\fBsmbd\fR 和\fBnmbd\fR进程.
+
+缺省设置: \fBbind interfaces only = no\fR
+
+
+.TP
+blocking locks (S)
+此项控制在客户为了在打开文件处获得一个字节范围的锁定而发出请求时\fBsmbd\fR(8)的动作,同时
+该请求会有一个与之相关的时限.
+
+如果设置了这个选项,锁定范围请求不能立即满足的话,samba将会在内部对请求进行排队,并且周期性地尝试获得锁定,直到超时.
+
+
+如果这个选项设置为\fBno\fR,samba就会同以前版本那样,在锁定范围无法获得时立即使锁定请求失败.
+
+缺省设置: \fBblocking locks = yes\fR
+
+
+.TP
+block size (S)
+This parameter controls the behavior of \fBsmbd\fR(8) when reporting disk free sizes\&. By default, this reports a disk block size of 1024 bytes\&.
+
+
+Changing this parameter may have some effect on the efficiency of client writes, this is not yet confirmed\&. This parameter was added to allow advanced administrators to change it (usually to a higher value) and test the effect it has on client write performance without re-compiling the code\&. As this is an experimental option it may be removed in a future release\&.
+
+
+Changing this option does not change the disk free reporting size, just the block size unit reported to the client\&.
+
+
+.TP
+browsable (S)
+与 \fIbrowseable\fR 同义。
+
+
+.TP
+browseable (S)
+这个选项控制共享资源在可获得共享列表、net view命令及浏览列表里是否可见.
+
+缺省设置: \fBbrowseable = yes\fR
+
+
+.TP
+browse list (G)
+它控制\fBsmbd\fR(8)是否执行一个\fBNetServerEnum\fR调用来为客户提供一个浏览列表.正常情况它被设为\fByes\fR.这个选项可能永远不需要改动.
+
+缺省设置: \fBbrowse list = yes\fR
+
+
+.TP
+case sensitive (S)
+参见NAME MANGLING段的讨论.
+
+
+缺省设置: \fBcase sensitive = no\fR
+
+
+.TP
+casesignames (S)
+与 \fIcase sensitive\fR 同义.
+
+.TP
+change notify timeout (G)
+samba允许客户端告诉服务器监视某个特定目录的任何变化,仅当有变化发生的时候回复SMB请求.这种连续不断的扫描在unix系统上代价很高,因此,\fBsmbd\fR(8)只在等待\fIchange notify timeout\fR时间后才对每个请求的目录执行一次扫描.
+
+
+缺省设置: \fBchange notify timeout = 60\fR
+
+
+示例: \fBchange notify timeout = 300\fR
+
+
+这将把扫描时间改为每5分钟一次.
+
+
+.TP
+change share command (G)
+Samba 2\&.2\&.0 introduced the ability to dynamically add and delete shares via the Windows NT 4\&.0 Server Manager\&. The \fIchange share command\fR is used to define an external program or script which will modify an existing service definition in \fIsmb\&.conf\fR\&. In order to successfully execute the \fIchange share command\fR, \fBsmbd\fR requires that the administrator be connected using a root account (i\&.e\&. uid == 0)\&.
+
+
+When executed, \fBsmbd\fR will automatically invoke the \fIchange share command\fR with four parameters\&.
+
+
+\fIconfigFile\fR - the location of the global \fIsmb\&.conf\fR file\&.
+
+\fIshareName\fR - the name of the new share\&.
+
+\fIpathName\fR - path to an **existing** directory on disk\&.
+
+\fIcomment\fR - comment string to associate with the new share\&.
+
+This parameter is only used modify existing file shares definitions\&. To modify printer shares, use the "Printers\&.\&.\&." folder as seen when browsing the Samba host\&.
+
+
+参见 \fIadd share command\fR, \fIdelete share command\fR\&.
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBchange share command = /usr/local/bin/addshare\fR
+
+
+.TP
+client lanman auth (G)
+This parameter determines whether or not \fBsmbclient\fR(8) and other samba client tools will attempt to authenticate itself to servers using the weaker LANMAN password hash\&. If disabled, only server which support NT password hashes (e\&.g\&. Windows NT/2000, Samba, etc\&.\&.\&. but not Windows 95/98) will be able to be connected from the Samba client\&.
+
+
+The LANMAN encrypted response is easily broken, due to it's case-insensitive nature, and the choice of algorithm\&. Clients without Windows 95/98 servers are advised to disable this option\&.
+
+
+Disabling this option will also disable the \fBclient plaintext auth\fR option
+
+
+Likewise, if the \fBclient ntlmv2 auth\fR parameter is enabled, then only NTLMv2 logins will be attempted\&. Not all servers support NTLMv2, and most will require special configuration to us it\&.
+
+
+Default : \fBclient lanman auth = yes\fR
+
+
+.TP
+client ntlmv2 auth (G)
+This parameter determines whether or not \fBsmbclient\fR(8) will attempt to authenticate itself to servers using the NTLMv2 encrypted password response\&.
+
+
+If enabled, only an NTLMv2 and LMv2 response (both much more secure than earlier versions) will be sent\&. Many servers (including NT4 < SP4, Win9x and Samba 2\&.2) are not compatible with NTLMv2\&.
+
+
+Similarly, if enabled, NTLMv1, \fBclient lanman auth\fR and \fBclient plaintext auth\fR authentication will be disabled\&. This also disables share-level authentication\&.
+
+
+If disabled, an NTLM response (and possibly a LANMAN response) will be sent by the client, depending on the value of \fBclient lanman auth\fR\&.
+
+
+Note that some sites (particularly those following 'best practice' security polices) only allow NTLMv2 responses, and not the weaker LM or NTLM\&.
+
+
+Default : \fBclient ntlmv2 auth = no\fR
+
+
+.TP
+client plaintext auth (G)
+Specifies whether a client should send a plaintext password if the server does not support encrypted passwords\&.
+
+
+缺省设置: \fBclient plaintext auth = yes\fR
+
+
+.TP
+client schannel (G)
+This controls whether the client offers or even demands the use of the netlogon schannel\&. \fIclient schannel = no\fR does not offer the schannel, \fIserver schannel = auto\fR offers the schannel but does not enforce it, and \fIserver schannel = yes\fR denies access if the server is not able to speak netlogon schannel\&.
+
+
+缺省设置: \fBclient schannel = auto\fR
+
+
+示例: \fBclient schannel = yes\fR
+
+
+.TP
+client signing (G)
+This controls whether the client offers or requires the server it talks to to use SMB signing\&. Possible values are \fBauto\fR, \fBmandatory\fR and \fBdisabled\fR\&.
+
+
+When set to auto, SMB signing is offered, but not enforced\&. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either\&.
+
+
+缺省设置: \fBclient signing = auto\fR
+
+
+.TP
+client use spnego (G)
+This variable controls controls whether samba clients will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000 servers to agree upon an authentication mechanism\&. SPNEGO client support for SMB Signing is currently broken, so you might want to turn this option off when operating with Windows 2003 domain controllers in particular\&.
+
+
+缺省设置: \fBclient use spnego = yes\fR
+
+
+.TP
+comment (S)
+这是一段当客户用\fB网上邻居\fR(\fBnet view\fR)察看服务器上共享资源时显示的说明文字.
+
+如果想设置机器名后的说明文字请参考 \fI server string\fR 命令.
+
+
+缺省设置: \fBNo comment string\fR
+
+
+示例: \fBcomment = Fred's Files\fR
+
+
+.TP
+config file (G)
+这可以使samba使用指定的配置文件来替代缺省的配置文件,(通常是\fIsmb\&.conf\fR).如果设置了这个选项,会出现一个先有鸡还是先有蛋的问题!
+
+
+由于这个原因,如果在加载这个选项的时候发现配置文件名变化了,就会从新的配置文件里重新加载选项.
+
+
+这个选项作为常用的替换非常有用.
+
+如果这个配置文件不存在,那么就不会被加载.(允许你特殊地处理少数客户的配置文件)
+
+
+
+示例: \fBconfig file = /usr/local/samba/lib/smb.conf.%m\fR
+
+
+.TP
+copy (S)
+这使你可以克隆服务. 指定的服务以当前服务的名字进行简单的复制,当前服务里定义的选项将替代被拷服务里任何相应的选项.
+
+
+这个特性允许建立一个服务的'模版',可以很容易的生成相似的服务.注意,被拷贝的服务在配置文件里必须先于拷贝的服务出现.
+
+缺省设置: \fBno value\fR
+
+
+示例: \fBcopy = otherservice\fR
+
+
+.TP
+create mask (S)
+与 \fIcreate mode\fR 同义.
+
+当生成一个文件的时候,需要知道从dos模式映射到unix下的文件权限.最后的结果用这个参数进行逐位的与运算得到.这个选项可以理解成unix下文件的位掩码.在生成文件的时候,任何\fB没有\fR设置的位将会从创建模式中去掉.
+
+
+这个选项的缺省值是从unix的文件创建模式中去掉组和其他用户的写和执行标志位.
+
+根据这个规则,samba将会把这个选项生成的unix文件创建模式和由\fIforce create mode\fR设置的选项进行逐位的或运算,\fIforce create mode\fR 的缺省选项是000.
+
+这个选项不会影响目录创建模式.细节参见\fIdirectory mode \fR .
+
+参考\fIforce create mode\fR以进一步了解在创建文件时设置的特殊位.关于创建目录模式参见\fIdirectory mode\fR选项.参见 \fIinherit permissions\fR parameter.
+
+
+Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors\&. If the administrator wishes to enforce a mask on access control lists also, they need to set the \fIsecurity mask\fR\&.
+
+
+缺省设置: \fBcreate mask = 0744\fR
+
+
+示例: \fBcreate mask = 0775\fR
+
+
+.TP
+create mode (S)
+与 \fI create mask\fR 同义.
+
+
+.TP
+csc policy (S)
+This stands for \fBclient-side caching policy\fR, and specifies how clients capable of offline caching will cache the files in the share\&. The valid values are: manual, documents, programs, disable\&.
+
+
+These values correspond to those used on Windows servers\&.
+
+
+For example, shares containing roaming profiles can have offline caching disabled using \fBcsc policy = disable\fR\&.
+
+
+缺省设置: \fBcsc policy = manual\fR
+
+
+示例: \fBcsc policy = programs\fR
+
+
+.TP
+deadtime (G)
+这个值(十进制整数)定义连接发呆超时,单位是分钟.如果一个连接发超过了这个时间就会被断开.如果有文件被打开了,这个时间就不起作用.
+
+这可以保护服务器不被过多的发呆连接耗尽资源.
+
+
+多数客户端有连接断开后的自动重连功能,所以大多数情况下,这个选项对用户应该是透明的
+
+
+对多数系统建议使用较短的发呆超时的选项.
+
+
+发呆超时选项被设为0意味着不会自动断开连接..
+
+
+缺省设置: \fBdeadtime = 0\fR
+
+
+示例: \fBdeadtime = 15\fR
+
+
+.TP
+debug hires timestamp (G)
+有些时候记录信息需要比秒更高层次的时间标识,用这个布尔量选项可以向时间标识信息头中加入以微秒级的频率.
+
+注意要使用这个选项,必须打开\fI debug timestamp\fR选项.
+
+
+
+缺省设置: \fBdebug hires timestamp = no\fR
+
+
+.TP
+debuglevel (G)
+与 \fI log level\fR 同义.
+
+
+.TP
+debug pid (G)
+为很多从\fBsmbd\fR(8)fork出来的进程使用同一个记录文件时,很难精确地跟踪信息是哪个进程输出的.用这个布尔量选项向时间标识信息头中自动添加进程号.
+
+注意要使用这个选项,必须打开\fI debug timestamp\fR 选项.
+
+
+缺省设置: \fBdebug pid = no\fR
+
+
+.TP
+debug timestamp (G)
+samba缺省会给调试纪录信息加上时间标识.如果运行的是高级别\fIdebug level\fR的调试,这个时间标识可以被转移.用这个选项可以将时间标识关闭.
+
+
+缺省设置: \fBdebug timestamp = yes\fR
+
+
+.TP
+debug uid (G)
+samba有时以root身份运行,而有时以已联接的用户来运行.使用这个布尔量选项可以向记录文件的时间标识信息头中自动插入当前的euid,egid,uid和gid标识.
+
+Note that the parameter  must be on for this to have an effect\&.
+注意要使用这个选项,必须打开\fI debug timestamp\fR选项.
+
+缺省设置: \fBdebug uid = no\fR
+
+
+.TP
+default (G)
+与 \fI default service\fR 同义.
+
+
+.TP
+default case (S)
+参见"NAME MANGLING"段. 也注意一下\fIshort preserve case\fR选项. 
+
+
+缺省设置: \fBdefault case = lower\fR
+
+
+.TP
+default devmode (S)
+This parameter is only applicable to printable services\&. When smbd is serving Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba server has a Device Mode which defines things such as paper size and orientation and duplex settings\&. The device mode can only correctly be generated by the printer driver itself (which can only be executed on a Win32 platform)\&. Because smbd is unable to execute the driver code to generate the device mode, the default behavior is to se [...]
+
+
+Most problems with serving printer drivers to Windows NT/2k/XP clients can be traced to a problem with the generated device mode\&. Certain drivers will do things such as crashing the client's Explorer\&.exe with a NULL devmode\&. However, other printer drivers can cause the client's spooler service (spoolsv\&.exe) to die if the devmode was not created by the driver itself (i\&.e\&. smbd generates a default devmode)\&.
+
+
+This parameter should be used with care and tested with the printer driver in question\&. It is better to leave the device mode to NULL and let the Windows client set the correct values\&. Because drivers do not do this all the time, setting \fBdefault devmode = yes\fR will instruct smbd to generate a default one\&.
+
+
+For more information on Windows NT/2k printing and Device Modes, see the MSDN documentation\&.
+
+
+缺省设置: \fBdefault devmode = no\fR
+
+
+.TP
+default service (G)
+这个选项定义一个当指定服务找不到时的缺省服务.注意,在选项值里\fB没有\fR方括号(看示例!).
+
+这个选项没有缺省值. 如果没给出这个选项的话,对不存在的服务的请求将返回错误.
+
+缺省服务一般是那些允许\fIguest ok\fR, \fIread-only\fR的服务.
+
+
+外在的服务名可能被替换成请求的服务名,这样就可以用象\fI%S\fR这样的宏来做一个通用的服务.
+
+注意在缺省服务选项指定的服务名里, 字符'_'被映射为'/'. 这样可能会出现有趣的事情.
+
+
+示例:
+
+.nf
+[global]
+	default service = pub
+[pub]
+	path = /%S
+.fi
+
+.TP
+delete group script (G)
+This is the full pathname to a script that will be run \fBAS ROOT\fR \fBsmbd\fR(8) when a group is requested to be deleted\&. It will expand any \fI%g\fR to the group name passed\&. This script is only useful for installations using the Windows NT domain administration tools\&.
+
+
+.TP
+deleteprinter command (G)
+With the introduction of MS-RPC based printer support for Windows NT/2000 clients in Samba 2\&.2, it is now possible to delete printer at run time by issuing the DeletePrinter() RPC call\&.
+
+
+For a Samba host this means that the printer must be physically deleted from underlying printing system\&. The \fI deleteprinter command\fR defines a script to be run which will perform the necessary operations for removing the printer from the print system and from \fIsmb\&.conf\fR\&.
+
+
+The \fIdeleteprinter command\fR is automatically called with only one parameter: \fI "printer name"\fR\&.
+
+
+Once the \fIdeleteprinter command\fR has been executed, \fBsmbd\fR will reparse the \fI smb\&.conf\fR to associated printer no longer exists\&. If the sharename is still valid, then \fBsmbd \fR will return an ACCESS_DENIED error to the client\&.
+
+
+参见 \fI addprinter command\fR, \fIprinting\fR, \fIshow add printer wizard\fR
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBdeleteprinter command = /usr/bin/removeprinter\fR
+
+
+.TP
+delete readonly (S)
+这个选项允许删除只读文件,这个只读不是通常dos里的含义,而是unix中的.
+
+
+这个选项对于rcs这样的应用很有用,在这种情况下,unix文件的属主不允许改变权限,dos文件只读.
+
+
+缺省设置: \fBdelete readonly = no\fR
+
+
+.TP
+delete share command (G)
+Samba 2\&.2\&.0 introduced the ability to dynamically add and delete shares via the Windows NT 4\&.0 Server Manager\&. The \fIdelete share command\fR is used to define an external program or script which will remove an existing service definition from \fIsmb\&.conf\fR\&. In order to successfully execute the \fIdelete share command\fR, \fBsmbd\fR requires that the administrator be connected using a root account (i\&.e\&. uid == 0)\&.
+
+
+When executed, \fBsmbd\fR will automatically invoke the \fIdelete share command\fR with two parameters\&.
+
+
+\fIconfigFile\fR - the location of the global \fIsmb\&.conf\fR file\&.
+
+\fIshareName\fR - the name of the existing service\&.
+
+This parameter is only used to remove file shares\&. To delete printer shares, see the \fIdeleteprinter command\fR\&.
+
+
+参见 \fIadd share command\fR, \fIchange share command\fR\&.
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBdelete share command = /usr/local/bin/delshare\fR
+
+
+.TP
+delete user from group script (G)
+Full path to the script that will be called when a user is removed from a group using the Windows NT domain administration tools\&. It will be run by \fBsmbd\fR(8) \fBAS ROOT\fR\&. Any \fI%g\fR will be replaced with the group name and any \fI%u\fR will be replaced with the user name\&.
+
+
+缺省设置: \fBdelete user from group script = \fR
+
+
+示例: \fBdelete user from group script = /usr/sbin/deluser %u %g\fR
+
+
+.TP
+delete user script (G)
+它定义一个在使用RPC(NT)工具管理用户时,fBsmbd\fR(8)以root身份运行的包括路径的一个脚本.
+
+
+当远程客户使用'User Manager for Domains' 或是 \fBrpcclient\fR 从服务器上删除一个用户时执行此操作。
+
+
+这个脚本删除给定的unix用户。
+
+缺省设置: \fBdelete user script = <空字符串>\fR
+
+
+示例: \fBdelete user script = /usr/local/samba/bin/del_user %u\fR
+
+
+.TP
+delete veto files (S)
+这个选项用于samba试图删除一个或多个包含禁止文件的目录的情况(参见\fIveto files\fR选项). 如果这个选项设置为\fBno\fR(缺省情况),那么如果一个禁止目录里包含了任何非禁止的文件或目录,删除就会失败.这通常正是你所希望的.
+
+
+如果这个选项被设为了 \fByes\fR,Samba将试图递归删除在被禁止目录里的任何文件和目录.这对于整合象NetAtalk这样的文件服务系统很有用,它通常会在目录里生成Dos/windows用户看不见的中间文件(e.g. \fI.AppleDouble\fR).
+
+
+设置\fBdelete veto files = yes\fR 使那些有权限的用户可以在删除父目录的时候透明的删除子目录.
+
+
+
+参见 \fIveto files\fR 选项.
+
+
+缺省设置: \fBdelete veto files = no\fR
+
+
+.TP
+deny hosts (S)
+与 \fIhosts deny\fR 同义.
+
+
+.TP
+dfree command (G)
+\fIdfree command\fR只需在磁盘空间计算有问题的系统上使用.这个空间计算的问题仅在Ultrix系统上发生过,但在其他的操作系统上也有可能发生.发生这个问题的现象是在每个目录列表最后发生错误并提示"Abort Retry Ignore".
+
+
+这个设置允许用外部程序代替内部程序来计算总共的磁盘空间和可用的磁盘空间.下面的例子给出了一个能完成这个功能的脚本.
+
+
+这个外部程序的输入是文件系统里一个需要计算的目录,典型的包括\fI./\fR字符串.以ascii码返回两个整数.第一个是总共的磁盘空间(以块为单位),第二个是可用块树.可选的第三个返回值可以以字节为单位给出块的大小.缺省的块的大小是1024字节.
+
+注意:这个脚本应该属主为root,\fB只有\fRroot可写,并且\fB不能\fR带有用户标识位和组标识位(setuid or setgid)!
+
+
+缺省设置: \fB缺省用内部程序来计算磁盘容量和可用空间. \fR
+
+
+示例: \fBdfree command = /usr/local/samba/bin/dfree\fR
+
+
+如下这个dfree脚本必须是可执行的.
+
+
+.nf
+ 
+#!/bin/sh
+df $1 | tail -1 | awk '{print $2" "$4}'
+.fi
+
+
+在Sys V一类的系统上可能是:
+
+.nf
+ 
+#!/bin/sh
+/usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+.fi
+
+
+注意在特定的系统上可能需要给出相应的带有全路径的命令.
+
+
+.TP
+directory (S)
+与 \fIpath\fR 同义.
+
+
+.TP
+directory mask (S)
+这个选项是8进制的模式。用来控制在生成UNIX目录时,将其从dos模式转换为unix模式。
+
+当生成一个路径的时候,必须指定的目录权限从dos模式映射到unix模式,然后这个结果和这个选项进行逐位的与运算.这个选项可以理解成unix模式下的位掩码.这个选项里任何\fB没有\fR设置的位在生成unix下的目录时将会被去掉
+
+
+缺省情况下,这个选项把组和其他用户的写权限位去掉,只允许目录的属主对目录进行修改.
+
+Samba将把这个选项和\fIforce directory mode\fR的选项进行逐位的或运算,这个选项缺省时设置为000(也就是不加额外的限制).
+
+
+Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors. If the administrator wishes to enforce a mask on access control lists also, they need to set the \fIdirectory security mask\fR.
+
+在生成目录时如果需要设置特殊的模式位,参见\fIforce directory mode\fR选项.
+
+关于生成文件时的模式位参见\fIcreate mode \fR选项和\fIdirectory security mask\fR选项.
+
+
+Also refer to the \fI inherit permissions\fR parameter.
+
+
+缺省设置: \fBdirectory mask = 0755\fR
+
+
+示例: \fBdirectory mask = 0775\fR
+
+
+.TP
+directory mode (S)
+与 \fI directory mask\fR 同义。
+
+
+.TP
+directory security mask (S)
+此选项控制了NT客户在他的本地NT安全对话框中操纵unix目录权限时可以修改哪些权限位.
+
+
+这个选项以掩码来实现改变权限位,所以在修改时要防止不在掩码中涉及的那些位.实际上,在这个掩码中的位0可以使用户无法改变任何东东.
+
+如果没有明确设定的话,这个选项会用与directory mask选项同样的值.要允许用户在目录中可以修改所有的user/group/world权限,可以把这个选项设为0777.
+
+
+\fB注意\fR,能访问samba服务器的用户通过其它方法也可以很容易地绕过这个限制,所以对独立工作的系统来说这个选项是最根本最有用的.很多系统管理的管理员都会把它设为默认的\fB0777\fR.
+
+
+参见\fI force directory security mode\fR, \fIsecurity mask\fR, \fIforce security mode \fR 选项。
+
+
+缺省设置: \fBdirectory security mask = 0777\fR
+
+
+示例: \fBdirectory security mask = 0700\fR
+
+
+.TP
+disable netbios (G)
+Enabling this parameter will disable netbios support in Samba\&. Netbios is the only available form of browsing in all windows versions except for 2000 and XP\&.
+
+
+Note that clients that only support netbios won't be able to see your samba server when netbios support is disabled\&.
+
+缺省设置: \fBdisable netbios = no\fR
+
+
+示例: \fBdisable netbios = yes\fR
+
+
+.TP
+disable spoolss (G)
+Enabling this parameter will disable Samba's support for the SPOOLSS set of MS-RPC's and will yield identical behavior as Samba 2\&.0\&.x\&. Windows NT/2000 clients will downgrade to using Lanman style printing commands\&. Windows 9x/ME will be uneffected by the 选项。 However, this will also disable the ability to upload printer drivers to a Samba server via the Windows NT Add Printer Wizard or by using the NT printer properties dialog window\&. It will also disable the capability of Windo [...]
+
+
+See also use client driver
+
+
+Default : \fBdisable spoolss = no\fR
+
+
+.TP
+display charset (G)
+Specifies the charset that samba will use to print messages to stdout and stderr and SWAT will use\&. Should generally be the same as the \fBunix charset\fR\&.
+
+
+缺省设置: \fBdisplay charset = ASCII\fR
+
+
+示例: \fBdisplay charset = UTF8\fR
+
+
+.TP
+dns proxy (G)
+指定\fBnmbd\fR(8)象WINS服务器那样寻找没有登记的NetBIOS名,象对待DNS名那样逐字的对待NetBIOS名,向DNS服务器查询该名称所代表的客户端.
+
+
+注意,NetBISO名的最大长度是15个字符,所以DNS名(或DNS别名)同样最多只能有15个字符.
+
+
+\fBnmbd\fR 在做DNS名查询的时候将自身复制一份,因为域名查询是一个阻塞的动作.
+
+
+参见 \fI wins support\fR 。
+
+
+缺省设置: \fBdns proxy = yes\fR
+
+
+.TP
+domain logons (G)
+如果这个选项为\fByes\fR,Samba服务器将为\fIworkgroup\fR提供Windows 95/98 登陆域服务.Samba 2.2只能实现Windows NT 4 域中域控制器的有限功能。有关设置这个功能的更详细信息参见Samba 文档中的Samba-PDC-HOWTO。
+
+
+缺省设置: \fBdomain logons = no\fR
+
+
+.TP
+domain master (G)
+这个选项告诉\fBsmbd\fR(8)收集广域网内的浏览列表.设置这个选项后,\fBnmbd\fR用一个特定的NetBIOS名向它的\fI工作组\fR标识它自己是一个主控浏览器.在同一\fI工作组\fR不同子网中的本地主控浏览器将把自己的浏览列表传给\fBnmbd\fR,然后向\fBsmbd\fR(8) 请求整个网络上浏览列表的完整拷贝.客户端将和他们的本地主控浏览器联系,得到整个域范围内的浏览列表,而不只是子网上的列表.
+
+
+注意,windows NT主域控制器默认情况总是占有这个在\fI工作组\fR中的特殊的NetBIOS名,宣称自己是\fI工作组\fR的主域浏览器(也就是说,没有什么方法可以阻止一个Windows NT主域控制器这样做). 这样如果设置了这个选项,并且\fBnmbd\fR 在Windows NT之前向\fI工作组\fR宣称了这个特殊的名字,那么跨子网的浏览行为会变得奇怪,并且可能会失败.
+
+
+If \fBdomain logons = yes\fR , then the default behavior is to enable the \fIdomain master\fR 选项。 If \fIdomain logons\fR is not enabled (the default setting), then neither will \fIdomain master\fR be enabled by default\&.
+
+
+缺省设置: \fBdomain master = auto\fR
+
+.\" -=>从此以上为ttao翻译
+.\" -=>从此以下为Edwin Chen翻译
+
+.TP
+dont descend (S)
+有些系统上存在某些特殊的路径(比如linux中的\fI/proc\fR),这些目录不需要(也不希望)客户端关心,甚至可能具有无限的层次深度(递归的).这个选项允许你指定一个由逗号分隔的列表,服务器将把列表内包含的目录始终显示成空目录.
+
+
+注意,Samba对'dont descend'选项的输入格式十分挑剔.例如他也许要求你输入\fI./proc\fR而不是仅仅是\fI/proc\fR.实践是最好的策略.
+
+
+缺省设置: \fBnone (也就是说,所有目录的内容会正常的传递给客户端)\fR
+
+
+示例: \fBdont descend = /proc,/dev\fR
+
+
+.TP
+dos charset (G)
+DOS SMB clients assume the server has the same charset as they do\&. This option specifies which charset Samba should talk to DOS clients\&.
+
+
+The default depends on which charsets you have installed\&. Samba tries to use charset 850 but falls back to ASCII in case it is not available\&. Run \fBtestparm\fR(1) to check the default on your system\&.
+
+
+.TP
+dos filemode (S)
+The default behavior in Samba is to provide UNIX-like behavior where only the owner of a file/directory is able to change the permissions on it\&. However, this behavior is often confusing to DOS/Windows users\&. Enabling this parameter allows a user who has write access to the file (by whatever means) to modify the permissions on it\&. Note that a user belonging to the group owning the file will not be allowed to change permissions if the group is only granted read access\&. Ownership o [...]
+
+
+缺省设置: \fBdos filemode = no\fR
+
+
+.TP
+dos filetime resolution (S)
+在DOS和Windows FAT文件系统中,时间的计量精度是2秒。对共享资源设置这个选项,可以使得在一个向\fBsmbd\fR(8)的查询需要1秒精度时,Samba把报告的时间精度降低到2秒左右。
+
+
+这个选项的主要用于解决Visual C++与Samba的兼容性问题.当共享文件被锁定时(oplocks选项被设置为允许),Visual C++使用两个不同的读取时间的函数调用来检查文件自从最后一次读操作以来是否有改变.其中一个函数使用1秒的时间尺度,而另一个则使用2秒的时间尺度.由于使用基于2秒的方法要舍去任何的奇数秒,当文件的时间记录是奇数秒时,Visual C++的两次函数调用结果就会不一致,Visual C++就会总是认为文件被改变.设置这个选项可以使得两次函数调用的结果一致,Visual C++会很高兴的接受这一切.
+
+
+缺省设置: \fBdos filetime resolution = no\fR
+
+
+.TP
+dos filetimes (S)
+在DOS和Windows操作系统中,如果用户对文件进行写操作,就会改变文件的时间记录.而在POSIX规则中,只有文件的所有者和root才有改变文件时间记录的能力.缺省的,Samba按照POSIX规则运行,如果\fBsmbd\fR的用户不是文件的所有者,那么他对文件的操作不会改变文件的时间记录.如果设置这个选项为\fB yes\fR,那么\fBsmbd\fR(8)就按照DOS的规则运行,并且按照DOS系统的要求改变文件的时间记录.
+
+
+缺省设置: \fBdos filetimes = no\fR
+
+
+.TP
+enable rid algorithm (G)
+This option is used to control whether or not smbd in Samba 3\&.0 should fallback to the algorithm used by Samba 2\&.2 to generate user and group RIDs\&. The longterm development goal is to remove the algorithmic mappings of RIDs altogether, but this has proved to be difficult\&. This parameter is mainly provided so that developers can turn the algorithm on and off and see what breaks\&. This parameter should not be disabled by non-developers because certain features in Samba will fail t [...]
+
+
+缺省设置: \fBenable rid algorithm = <yes>\fR
+
+
+.TP
+encrypt passwords (G)
+这个布尔型值控制着是否与客户端用加密口令进行交谈.注意,NT4.0 SP3 及以上还有WINDOWS 98在缺省情况下使用加密口令进行交谈,除非改变了注册表的相应健值.想要使用加密口令,清参阅Samba HOWTO Collection中的 "User Database" 章节。
+
+想要使加密口令能正确的工作, \fBsmbd\fR(8)必须能访问本地的\fBsmbpasswd\fR(5)文件(如何正确设置和维护这个文件,请参阅\fBsmbpasswd\fR(8)手册),或者,设置选项security= [server|domain|ads],这样设置将使得\fBsmbd\fR依赖其它的服务器来帮它鉴别口令. 
+
+
+缺省设置: \fBencrypt passwords = yes\fR
+
+
+.TP
+enhanced browsing (G)
+This option enables a couple of enhancements to cross-subnet browse propagation that have been added in Samba but which are not standard in Microsoft implementations\&.
+
+
+The first enhancement to browse propagation consists of a regular wildcard query to a Samba WINS server for all Domain Master Browsers, followed by a browse synchronization with each of the returned DMBs\&. The second enhancement consists of a regular randomised browse synchronization with all currently known DMBs\&.
+
+
+You may wish to disable this option if you have a problem with empty workgroups not disappearing from browse lists\&. Due to the restrictions of the browse protocols these enhancements can cause a empty workgroup to stay around forever which can be annoying\&.
+
+
+In general you should leave this option enabled as it makes cross-subnet browse propagation much more reliable\&.
+
+
+缺省设置: \fBenhanced browsing = yes\fR
+
+
+.TP
+enumports command (G)
+The concept of a "port" is fairly foreign to UNIX hosts\&. Under Windows NT/2000 print servers, a port is associated with a port monitor and generally takes the form of a local port (i\&.e\&. LPT1:, COM1:, FILE:) or a remote port (i\&.e\&. LPD Port Monitor, etc\&.\&.\&.)\&. By default, Samba has only one port defined--\fB"Samba Printer Port"\fR\&. Under Windows NT/2000, all printers must have a valid port name\&. If you wish to have a list of ports displayed (\fBsmbd \fR does not use a p [...]
+
+
+缺省设置: \fBno enumports command\fR
+
+
+示例: \fBenumports command = /usr/bin/listports\fR
+
+
+.TP
+exec (S)
+与 \fIpreexec\fR 同义。
+
+
+.TP
+fake directory create times (S)
+NTFS和Windows VFAT文件系统为每一个文件和目录保留一个创建时间. 这个时间和UNIX下的状态改变时间--ctime不同. 所以, 在缺省状态下, Samba将报告UNIX系统所保持的各种时间属性中的最早的那个作为(文件/目录)建立时间. 如果在一个共享中设置了这个选项, 将会使得Samba伪造一个目录生成时间, 这个时间就是1980.01.01的午夜.
+
+
+这个选项的主要用于解决Visual C++与Samba的兼容性问题.Visual C++生成makefiles文件时, 包含目标文件所依赖的目的目录. 包含建立目录的规则. 同样的, 当NMAKE比较时间属性时, 它检查目录建立时间. 目标目录不存在的话, 会建立一个;如果存在,它的建立时间总是比它所包含的目标文件的建立时间早.
+
+UNIX的时间规则意味着只要有文件在共享目录中建立或删除,Samba将更新关于该目录建立时间的报告. NMAKE将发现目录中除了最后建立的文件以外的所有目标文件都过期了(与目录的建立时间相比较), 然后重新编译目标文件.设置这个选项值将保证目录的建立时间早于它里面的文件,NMAKE就能够正常工作. 
+
+
+缺省设置: \fBfake directory create times = no\fR
+
+
+.TP
+fake oplocks (S)
+oplocks是这样一个选项, 它允许SMB客户端在本地缓存对服务器的文件操作. 如果服务器允许oplock(opportunistic lock)操作, 客户端可以简单的认为, 它自己是唯一的文件访问者, 可以随意的缓存文件. 有些oplocks类型甚至允许缓存文件的打开和关闭操作. 这个操作换来性能上的巨大提升.
+
+
+当你设置\fBfake oplocks = yes\fR后,\fBsmbd\fR(8)总是允许oplock请求, 而不管到底有多少的客户端在使用这个文件. 
+
+
+在通常情况下, 使用真实的\fIoplocks\fR支持总是比使用这个选项好. 
+
+
+如果你使用这个选项在一些只读的共享上(例如: CDROM共享),或者你知道这个共享只能够被一个客户端所访问(例如: 客户主目录). 你将会注意到性能上的重大提升. 如果你将这个选项用在多个客户端都可以读写的共享上, 由于客户可能同时访问一个共享文件, 这样会造成文件损坏. 请一定小心使用. 
+
+
+缺省设置: \fBfake oplocks = no\fR
+
+
+.TP
+follow symlinks (S)
+这个选项允许Samba管理员禁止某个特殊共享下\fBsmbd\fR(8)对符号链接的访问. 将这个选项设置为\fBno\fR将会阻止这个共享下的任何链接形式的文件或目录被查看(用户将会得到一个错误信息).例如: 这个选项将阻止客户将\fI/etc/passwd\fR文件链接到自己的主目录. (我们看到, 这是很有用的). 但是, 它将会使文件名字的查找速度慢一些.
+
+这个选项缺省是允许(也就是, \fBsmbd\fR将允许访问符号链接) 
+
+
+缺省设置: \fBfollow symlinks = yes\fR
+
+
+.TP
+force create mode (S)
+这个选项设置一组UNIX格式的权限代码, 当Samba建立新文档的时候, \fB总是\fR会使用这个权限设置新文档, 通过将新文档的权限位和这组权限代码做逐位与, 就完成了设置工作.缺省状态下, 这个选项设置为八进制000,在\fIcreate mask\fR加到新建立的文件的权限位上后, 与这个值进行按位与操作, 就得到文件建立时的权限设置. 
+
+
+参见 \fIcreate mask\fR 来获得关于建立文件时的掩码的详细资料。
+
+另外也参见 \fIinherit permissions\fR 参数.
+
+
+缺省设置: \fBforce create mode = 000\fR
+
+
+示例: \fBforce create mode = 0755\fR
+
+这个例子中, 将迫使所有被建立的文档对"同组/其它(用户)"有读和执行权. 对用户自己有读/写/执行权力.
+
+
+.TP
+force directory mode (S)
+这个选项设置一组UNIX格式的权限代码, 当Samba建立新目录的时候, \fB总是\fR会使用这个权限设置新目录, 通过将新目录的权限位和这组权限代码做逐位与, 就完成了设置工作.缺省状态下, 这个选项设置为八进制000,在\fIdirectory mask\fR加到新建立的目录的权限位上后,与这个值进行按位与操作, 就得到目录建立时的权限设置.
+
+
+参见\fI directory mask\fR 来获得关于建立目录时的掩码的详细资料。
+
+
+另外也参见\fI inherit permissions\fR参数.
+
+
+缺省设置: \fBforce directory mode = 000\fR
+
+
+示例: \fBforce directory mode = 0755\fR
+
+
+这个例子中, 将迫使所有被建立的目录对"同组/其它(用户)"有读和进入权. 对用户自己有读/写/进入权力.
+
+.TP
+force directory security mode (S)
+此选项控制NT用户通过本地NT安全对话框可以操作哪些目录上的unix权限位.
+
+此选项以掩码('or')来实现权限位的改变,所以它强制了任何掩码中用户可以更改的位.实际上,当在修改目录的安全性时,这个掩码中的一个0位可以作为一组用户已经设为'on'的位来看待.
+
+如果没有明确设定的话,这个选项会用与force directory mode选项同样的值.要允许用户在目录中可以修改所有的user/group/world权限,可以把这个选项设为0000.
+
+\fB注意\fR,能访问samba服务器的用户通过其它方法也可以很容易地绕过这个限制,所以这个参数只对独立工作的应用系统来说有用.很多系统管理的管理员都会把它设为默认的0000.
+
+参见\fI directory security mask\fR, \fIsecurity mask\fR, \fIforce security mode \fR 参数。
+
+
+缺省设置: \fBforce directory security mode = 0\fR
+
+
+示例: \fBforce directory security mode = 700\fR
+
+
+.TP
+force group (S)
+这个选项指定一个UNIX组, 所有连接到服务上的用户都被强迫使用这个组作为"主组". 所有访问文件的用户都使用这个组的访问权限做权限检查. 因此, 通过分配文件和目录的访问权限给这个用户组, Samba的管理员可以限制或允许对共享文件的访问.
+
+
+在samba 2.0.5及更新的版本中这个选项已经按下面的方法有了一些扩展功能.如果在此列出的组名有一个'+'字符加在名称前的话,当前用户正在访问的共享资源只有初始组被缺省分配到这个组中,而可能的情况是用户已经是其它组成员了.这样,管理员可以决定只有在特殊组里的用户才能以设定的组身份建立文件,更有益于所有权分配管理.例如,设定\fIforce group = +sys\fR的话,只有在sys组里的用户才能在访问samba共享资源时拥有缺省的初始组标识.而其它所有用户保留他们原始的组标识.
+
+
+如果又设定了 \fIforce user\fR选项的话,\fIforce group\fR选项中指定的组将会越过在 \fIforce user\fR中指定的初始组.
+If the \fIforce user\fR parameter is also set the group specified in \fIforce group\fR will override the primary group set in \fIforce user\fR\&.
+
+
+参见 \fIforce user\fR选项.
+
+
+缺省设置: \fBno forced group\fR
+
+
+示例: \fBforce group = agroup\fR
+
+
+.TP
+force security mode (S)
+此选项控制NT用户通过本地NT安全对话框可以操作哪些目录上的unix权限位.
+
+此选项以掩码('or')来实现权限位的改变,所以它强制了任何掩码中用户可以更改的位.实际上,当在修改目录的安全性时,这个掩码中的一个0位可以作为一组用户已经设为'on'的位来看待.
+
+如果没有明确设定的话,这个选项会用与force create mode选项同样的值.要允许用户在文件上可以修改所有的user/group/world权限,可以把这个选项设为000.
+
+
+\fB注意\fR,能访问samba服务器的用户通过其它方法可以很容易地绕过这个限制,所以这个选项对独立工作的系统来说才有用的.很多系统管理的管理员都会把它设为默认的0000.
+
+参见\fI force directory security mode\fR, \fIdirectory security mask\fR, \fI security mask\fR 参数。
+
+
+缺省设置: \fBforce security mode = 0\fR
+
+
+示例: \fBforce security mode = 700\fR
+
+
+.TP
+force user (S)
+这个选项指定一个UNIX用户的名字, 所有连接到服务上的用户的缺省名字就使用这个名字. (由于权限的原因)在共享文件时这个选项是有用的.你必须小心使用这个选项, 它有可能带来安全上的问题. 
+
+
+这个选项只有当一个连接建立起来后才有用. 在建立连接的使用, 用户还是必须有合法的用户名和口令. 一旦连接建立起来, 所有的操作将强迫以这个名字进行, 而不管它是以什么名字登录的.
+
+
+samba 2.0.5和更新的版本中这个选项会导致用户的初始组被作为所有文件操作的初始组.2.0.5以前的初始组被允许作为联接用户的初始组(这是个bug)
+
+
+参见 \fIforce group\fR 选项。
+
+
+缺省设置: \fBno forced user\fR
+
+
+示例: \fBforce user = auser\fR
+
+
+.TP
+fstype (S)
+这个选项允许管理员设置一个字符串说明共享的文件系统的类型, 当客户端有查询时, \fBsmbd\fR(8)将这个字符串作为正在使用的文件系统的类型报告给客户端. 为了和\fIWindows NT\fR兼容缺省值设置是\fBNTFS\fR, 当然,如果必要的话,也可以改变为其它的字符串,例如\fBSamba\fR或\fBFAT\fR.
+
+
+缺省设置: \fBfstype = NTFS\fR
+
+
+示例: \fBfstype = Samba\fR
+
+
+.TP
+get quota command (G)
+The \fBget quota command\fR should only be used whenever there is no operating system API available from the OS that samba can use\&.
+
+
+This parameter should specify the path to a script that queries the quota information for the specified user/group for the partition that the specified directory is on\&.
+
+
+Such a script should take 3 arguments:
+
+
+directory
+
+type of query
+
+uid of user or gid of group
+
+The type of query can be one of :
+
+
+1 - user quotas
+
+2 - user default quotas (uid = -1)
+
+3 - group quotas
+
+4 - group default quotas (gid = -1)
+
+This script should print its output according to the following format:
+
+
+Line 1 - quota flags (0 = no quotas, 1 = quotas enabled, 2 = quotas enabled and enforced)
+
+Line 2 - number of currently used blocks
+
+Line 3 - the softlimit number of blocks
+
+Line 4 - the hardlimit number of blocks
+
+Line 5 - currently used number of inodes
+
+Line 6 - the softlimit number of inodes
+
+Line 7 - the hardlimit number of inodes
+
+Line 8(optional) - the number of bytes in a block(default is 1024)
+
+参见 \fIset quota command\fR 选项。
+
+
+缺省设置: \fBget quota command = \fR
+
+
+示例: \fBget quota command = /usr/local/sbin/query_quota\fR
+
+
+.TP
+getwd cache (G)
+这是一个性能调节选项. 当这个选项允许时, 一个高速缓冲算法将被用来减少调用"getwd()"的时间. 这个选项对性能会产生很大的影响, 特别是在\fIwide links\fR选项设为\fBno\fR的时候.
+
+
+缺省设置: \fBgetwd cache = yes\fR
+
+
+.TP
+group (S)
+与 \fIforce group\fR 同义。
+
+
+.TP
+guest account (G,S)
+这是一个用来访问服务的用户名(作为客户来访账户,区别于系统上的用户), 当然, 被访问的服务必须先设置了选项fI guest ok\fR. 这个账户所拥有的所有权利都会反映到以"访问客户(guest)"身份连接进来的客户身上. 典型的, 这个客户必须在passwd文件中存在, 但是没有有效的登录权限.通常系统中存在着名为"ftp"的账户,把这个账户名使用在这里是个好主意.注意:如果一个服务指定了一个专用的访问用户名,这个专用名将代替这里的用户名.
+
+
+在某些系统上,缺省的访问用户名"nobody"账户可能不能打印.如果遇到这种情况,请使用其它的账户名(例如ftp)。想要测试这种情况,可以试着用来访账户登录(可以用\fBsu -\fR命令),然后,使用系统打印命令\fBlpr\fR(1)或\fBlp\fR(1).
+
+
+这个参数不接受%宏,因为Samba系统的很多组件要正确工作都需要这个值是一个常量。
+
+
+缺省设置: \fB编译时指定,通常是"nobody"\fR
+
+
+示例: \fBguest account = ftp\fR
+
+
+.TP
+guest ok (S)
+如果一个服务的这个选项的值设为\fByes\fR, 那末, 连接到这个服务不需要口令, 权限设置为\fI guest account\fR的权限.
+
+这个选项抵消了设置 \fIrestrict anonymous\fR = 2 的好处。
+
+
+参见下面的\fI security\fR来获得更多信息。
+
+
+缺省设置: \fBguest ok = no\fR
+
+
+.TP
+guest only (S)
+如果一个服务的这个选项设置为 \fByes\fR, 那末, 只有客户(guest)访问被允许, 也就是说, 不允许以其他用户的身份访问.如果没有设置\fIguest ok\fR选项, 则此选项无效. 
+
+
+参见下面的\fI security\fR 参数来获得更多信息。
+
+
+缺省设置: \fBguest only = no\fR
+
+
+.TP
+hide dot files (S)
+这是一个布尔值选项. 控制文件名最前面一个字符为"."的文件是否表现为隐含文件(UNIX文件系统中, 最前面为"."的文件是隐含文件). 
+
+
+缺省设置: \fBhide dot files = yes\fR
+
+
+.TP
+hide files (S)
+这是一个隐藏文件或目录的列表.这些文件不能被看见但是能被访问.列表中的文件或目录将被赋予DOS下的"隐藏"属性.
+
+
+每个条目必须以"/"分隔以便允许在条目中使用空格.可以使用DOS风格的通配符"*"和"?"匹配多个目录和文件。
+
+
+每一个条目必须使用UNIX格式的路径,而不是DOS格式的路径,同时,不能包含UNIX路径分隔符"/".
+
+
+注意:大小写敏感的特性也适用于隐含文件.
+
+
+设置这个选项会影响Samba的性能,它会迫使系统检查所有的文件和目录以确定是否与它的所要寻找的项目匹配.
+
+
+参见 \fIhide dot files\fR, \fI veto files\fR 和 \fIcase sensitive\fR.
+
+
+缺省设置: \fB没有隐藏文件\fR
+
+
+示例: \fBhide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/\fR
+
+上面的例子中的文件从Thursby共享出来,给Macintosh的SMB客户端(DAVE),供内部使用,仍然隐藏了"."打头的文件. 
+
+
+.TP
+hide local users (G)
+This parameter toggles the hiding of local UNIX users (root, wheel, floppy, etc) from remote clients\&.
+
+
+缺省设置: \fBhide local users = no\fR
+
+
+.TP
+hide special files (S)
+This parameter prevents clients from seeing special files such as sockets, devices and fifo's in directory listings\&.
+
+
+缺省设置: \fBhide special files = no\fR
+
+
+.TP
+hide unreadable (S)
+This parameter prevents clients from seeing the existance of files that cannot be read\&. Defaults to off\&.
+
+
+缺省设置: \fBhide unreadable = no\fR
+
+
+.TP
+hide unwriteable files (S)
+This parameter prevents clients from seeing the existance of files that cannot be written to\&. Defaults to off\&. Note that unwriteable directories are shown as usual\&.
+
+
+缺省设置: \fBhide unwriteable = no\fR
+
+
+.TP
+homedir map (G)
+如果\fInis homedir \fR选项的值为\fByes\fR,同时, \fBsmbd\fR(8)也作为win95/98的\fI登录服务器\fR,那么,这个选项指明一个NIS(或者YP)映射.指向用户主目录所在的服务器.目前,只认识Sun的auto.home映射格式.映射格式如下:
+
+
+\fBusername server:/some/file/system\fR
+
+
+程序从":"号前取得服务器名字.将来也许会有更好的解释系统来处理不同的映射格式,当然,也包括Amd(另一种自动装载方式)映射.
+
+
+需要系统中有一个运行的NIS客户来使这个选项工作。
+
+参见 \fInis homedir\fR , \fIdomain logons\fR .
+
+
+缺省设置: \fBhomedir map = <空字符串>\fR
+
+
+示例: \fBhomedir map = amd.homedir\fR
+
+
+.TP
+host msdfs (G)
+If set to \fByes\fR, Samba will act as a Dfs server, and allow Dfs-aware clients to browse Dfs trees hosted on the server\&.
+
+
+参见 \fI msdfs root\fR share level 选项。 For more information on setting up a Dfs tree on Samba, refer to ???\&.
+
+
+缺省设置: \fBhost msdfs = no\fR
+
+
+.TP
+hostname lookups (G)
+Specifies whether samba should use (expensive) hostname lookups or use the ip addresses instead\&. An example place where hostname lookups are currently used is when checking the \fBhosts deny\fR and \fBhosts allow\fR\&.
+
+
+缺省设置: \fBhostname lookups = yes\fR
+
+
+示例: \fBhostname lookups = no\fR
+
+
+.TP
+hosts allow (S)
+与\fIallow hosts\fR 同义.
+
+这个选项是一个由逗号,空格或者tab字符隔开的一组主机名.列入其中的主机才允许访问.
+
+如果该选项出现在[global]段中,它会作用于所有服务而忽略单个服务所作的不同设置.
+
+
+你可以用ip地址或主机名来指定主机.比如,你可以用类似 \fBallow hosts = 150.203.5. \fR来限定只允许访问在这个c类子网中的主机.\fIhosts_access(5)\fR中详细描述了关于这个选项设置的完整语法.注意到你的系统中也许没有这个参考手册,这里也作一个简单的说明.
+
+注意,本机地址127.0.0.1 总是允许连接,除非在\fIhosts deny\fR 选项中加以禁止.
+
+你也可以使用子网号/子网掩码对来指定主机.如果你的网络支持网络组,你还可以用网络组名来指定组内的主机.\fBEXCEPT\fR(除了...)关键字可以在使用了通配符的情况下起到限定作用.
+
+
+Example 1: 允许150.203.*.* 中除了一台机器之外的所有IP访问
+
+
+\fBhosts allow = 150.203. EXCEPT 150.203.6.66\fR
+
+
+Example 2: 允许满足给定的子网号/子网掩码的IP访问
+
+
+\fBhosts allow = 150.203.15.0/255.255.255.0\fR
+
+
+Example 3: 允许一系列主机访问
+
+
+\fBhosts allow = lapland, arvidsjaur\fR
+
+
+Example 4: 允许NIS网络组"foonet"访问,但是禁止其中的一台主机
+
+
+\fBhosts allow = @foonet\fR
+
+
+\fBhosts deny = pirate\fR
+
+
+注意,访问时还是需要有适当的用户级口令.
+
+
+参见\fBtestparm\fR(1) 来检测主机是否可以按照你希望的方式被访问.
+
+
+缺省设置: \fBnone (也就是说,所有机器都可以访问)\fR
+
+
+示例: \fBallow hosts = 150.203.5. myhost.mynet.edu.au\fR
+
+
+.TP
+hosts deny (S)
+\fIhosts allow\fR选项的反义词.所有被列入这个选项中的主机的服务都\fB不\fR允许被访问,除非这个被访问的服务定义了自己的允许列表.当允许的主机列表和禁止的主机列表发生冲突的时候,\fIallow\fR优先.
+
+
+缺省设置: \fBnone (没有禁止访问的主机)\fR
+
+
+示例: \fBhosts deny = 150.203.4. badhost.mynet.edu.au\fR
+
+
+.TP
+hosts equiv (G)
+如果这个选项值不是空字符串,就指定了一个文件名.这个文件中列出了可以不用口令就允许访问的主机和用户的名字.
+
+
+不要把这个选项和\fIhosts allow\fR 搞混了,那是关于控制主机对服务的访问的,用于管理对来访者的服务.而\fI hosts equiv\fR是用于支持那些不对samba提供口令的NT客户的.
+
+
+注意:使用\fIhosts equiv \fR 可能会成为一个很大的安全漏洞.这是因为你相信发起访问的PC提供了正确的用户名.找一台PC来提供一个假的用户名是很容易的.我建议你只有在完全明白你在干什么的情况下才使用\fIhosts equiv\fR选项,或者在你自己的家里(那里有你可以完全信任的配偶和孩子)使用它.仅仅是在你\fB完全\fR可以信任他们的时候才用 :-) 
+
+
+缺省设置: \fBno host equivalences\fR
+
+
+示例: \fBhosts equiv = /etc/hosts.equiv\fR
+
+
+.TP
+idmap backend (G)
+The purpose of the idmap backend parameter is to allow idmap to NOT use the local idmap tdb file to obtain SID to UID / GID mappings, but instead to obtain them from a common LDAP backend\&. This way all domain members and controllers will have the same UID and GID to SID mappings\&. This avoids the risk of UID / GID inconsistencies across UNIX / Linux systems that are sharing information over protocols other than SMB/CIFS (ie: NFS)\&.
+
+
+缺省设置: \fBidmap backend = <空字符串>\fR
+
+
+示例: \fBidmap backend = ldap:ldap://ldapslave.example.com\fR
+
+
+.TP
+idmap gid (G)
+The idmap gid parameter specifies the range of group ids that are allocated for the purpose of mapping UNX groups to NT group SIDs\&. This range of group ids should have no existing local or NIS groups within it as strange conflicts can occur otherwise\&.
+
+
+The availability of an idmap gid range is essential for correct operation of all group mapping\&.
+
+
+缺省设置: \fBidmap gid = <空字符串>\fR
+
+
+示例: \fBidmap gid = 10000-20000\fR
+
+
+.TP
+idmap uid (G)
+The idmap uid parameter specifies the range of user ids that are allocated for use in mapping UNIX users to NT user SIDs\&. This range of ids should have no existing local or NIS users within it as strange conflicts can occur otherwise\&.
+
+
+缺省设置: \fBidmap uid = <空字符串>\fR
+
+
+示例: \fBidmap uid = 10000-20000\fR
+
+
+.TP
+include (G)
+这个选项使得你可以把一个配置文件插入到另一个配置文件中去.这只是一种文本替换,就在好像被插入的文件的那个位置直接写入那个插入文件一样.
+
+它支持标准替换,除\fI%u \fR, \fI%P\fR 和 \fI%S\fR以外.
+
+
+缺省设置: \fB没有包含其他文件\fR
+
+
+示例: \fBinclude = /usr/local/samba/lib/admin_smb.conf\fR
+
+
+.TP
+inherit acls (S)
+This parameter can be used to ensure that if default acls exist on parent directories, they are always honored when creating a subdirectory\&. The default behavior is to use the mode specified when creating the directory\&. Enabling this option sets the mode to 0777, thus guaranteeing that default directory acls are propagated\&.
+
+
+缺省设置: \fBinherit acls = no\fR
+
+
+.TP
+inherit permissions (S)
+The permissions on new files and directories are normally governed by \fI create mask\fR, \fIdirectory mask\fR, \fIforce create mode\fR and \fIforce directory mode\fR but the boolean inherit permissions parameter overrides this\&.
+
+
+New directories inherit the mode of the parent directory, including bits such as setgid\&.
+
+
+New files inherit their read/write bits from the parent directory\&. Their execute bits continue to be determined by \fImap archive\fR , \fImap hidden\fR and \fImap system\fR as usual\&.
+
+
+Note that the setuid bit is \fBnever\fR set via inheritance (the code explicitly prohibits this)\&.
+
+
+This can be particularly useful on large systems with many users, perhaps several thousand, to allow a single [homes] share to be used flexibly by each user\&.
+
+
+参见 \fIcreate mask \fR, \fI directory mask\fR, \fIforce create mode\fR and \fIforce directory mode\fR \&.
+
+
+缺省设置: \fBinherit permissions = no\fR
+
+
+.TP
+interfaces (G)
+这个选项允许你超越默认的Samba用来处理浏览,名字注册和其他NBT网络流量的网络借口列表. 默认情况Samba向内核查询所有活动的接口列表并且使用除了127.0.0.1 之外的接口.
+
+
+这个选项的内容是一个接口字符串的列表, 每个字符串可以是下列任何一种格式:
+
+一个网络接口名(例如eth0).它可以包含象在shell风格的通配符如eth*来匹配任何以子字符品"eth"起始的网络接口.
+
+一个IP地址.这种情况下,网络掩码是从内核中获得的接口列表中检测的.
+
+一个IP/掩码对.
+
+一个广播地址/掩码对.
+
+"mask"选项可以是一个位长度(例如C类网络可以是24)或者是以点分格式出现的完整网络地址掩码.
+
+
+"IP"选项可以是完整点分十六进制IP地址或是按操作系统通常使用的主机名解析机制查找的主机名.
+
+
+例如,下面这一行:
+
+
+\fBinterfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0\fR
+
+
+将配置三个网络接口,对应eth0设备以及IP地址192.168.2.10 和192.168.3.10。后两个接口的网络掩码将设置为255.255.255.0。
+
+
+参见\fIbind interfaces only\fR.
+
+
+缺省设置: \fB除了127.0.0.1 之外的所有活动接口 that are broadcast capable\fR
+
+
+.TP
+invalid users (S)
+这是一个不允许在这个服务上登录的用户的名单.这的确是一个非常严格的(\fBparanoid\fR)检查,确保任何可能的不适当的设置都不会破坏你的系统的安全.
+
+
+以@开头的用户名首先被当作NIS网络组名(如果你的系统支持NIS的话),如果在NIS的网络组数据库中找不到这个组,那么这个名字就被当作一个UNIX用户组名来处理.
+
+
+以+开头的用户名仅表示UNIX用户组名,以&开头的用户名仅表示NIX网络组名(这个设置要求你的系统中有NIS在运行).'+'和'&'符号可以以任何顺序出现在用户组名前,因此,你可以指定对这个名称的查找次序,比如\fI+&group\fR表示先在UNIX用户组中查找,再在NIS网络组中查找,而\fI&+group\fR则相反,先在NIX网络组中查找,再到UNIX用户组中查找.(这与使用@前缀的效果相同).
+
+当前的服务名可以用\fI%S\fR来表示,这在[homes]段中是很有用的.
+
+
+参见 \fIvalid users \fR.
+
+
+缺省设置: \fB没有非法用户\fR
+
+
+示例: \fBinvalid users = root fred admin @wheel\fR
+
+
+.TP
+keepalive (G)
+这个选项是一个整数,它表示用于\fIkeepalive\fR包间隔的秒数.如果这个选项是0,那么就不发送保持连接的包.发送保持连接的包使得主机可以确定客户端是否还在响应。
+
+通常,如果用于连接的socket使用了SO_KEEPALIVE属性设置(参见\fIsocket options\fR),那么发送保持连接的包是不需要的.基本上,除非你遇到了某些困难,这个选项是用不到的.
+
+
+缺省设置: \fBkeepalive = 300\fR
+
+
+示例: \fBkeepalive = 600\fR
+
+
+.TP
+kernel change notify (G)
+This parameter specifies whether Samba should ask the kernel for change notifications in directories so that SMB clients can refresh whenever the data on the server changes\&.
+
+
+This parameter is only usd when your kernel supports change notification to user programs, using the F_NOTIFY fcntl\&.
+
+
+缺省设置: \fBYes\fR
+
+
+.TP
+kernel oplocks (G)
+在支持基于内核的 \fIoplocks\fR(opportunistic lock)的UNIX系统上(目前只有IRIX 和Linux2.4内核),这个选项允许打开或关闭对这个特性的利用.
+
+内核机会性锁定操作使得本地UNIX进程或NFS对文件进行操作时可以锁定(冻结)\fBsmbd\fR(8)对同一个文件的\fIoplocks \fR操作.这可以保持SMB/CIFS,NFS和本地文件操作之间的数据一致性.(这是一个很cool的特性哦 :-)
+
+
+如果你的系统支持这个设置,缺省设置就是\fBon\fR(打开),如果系统不支持,缺省设置就是\fBOff\fR(关闭).你根本不必去管这个选项.
+
+
+参见 \fIoplocks\fR 和 \fIlevel2 oplocks \fR 参数.
+
+
+缺省设置: \fBkernel oplocks = yes\fR
+
+
+.TP
+lanman auth (G)
+This parameter determines whether or not \fBsmbd\fR(8) will attempt to authenticate users using the LANMAN password hash\&. If disabled, only clients which support NT password hashes (e\&.g\&. Windows NT/2000 clients, smbclient, etc\&.\&.\&. but not Windows 95/98 or the MS DOS network client) will be able to connect to the Samba host\&.
+
+
+The LANMAN encrypted response is easily broken, due to it's case-insensitive nature, and the choice of algorithm\&. Servers without Windows 95/98 or MS DOS clients are advised to disable this option\&.
+
+
+Unlike the \fBencypt passwords\fR option, this parameter cannot alter client behaviour, and the LANMAN response will still be sent over the network\&. See the \fBclient lanman auth\fR to disable this for Samba's clients (such as smbclient)
+
+
+If this option, and \fBntlm auth\fR are both disabled, then only NTLMv2 logins will be permited\&. Not all clients support NTLMv2, and most will require special configuration to us it\&.
+
+
+Default : \fBlanman auth = yes\fR
+
+
+.TP
+large readwrite (G)
+This parameter determines whether or not \fBsmbd\fR(8) supports the new 64k streaming read and write varient SMB requests introduced with Windows 2000\&. Note that due to Windows 2000 client redirector bugs this requires Samba to be running on a 64-bit capable operating system such as IRIX, Solaris or a Linux 2\&.4 kernel\&. Can improve performance by 10% with Windows 2000 clients\&. Defaults to on\&. Not as tested as some other Samba code paths\&.
+
+
+缺省设置: \fBlarge readwrite = yes\fR
+
+
+.TP
+ldap admin dn (G)
+The \fIldap admin dn\fR defines the Distinguished Name (DN) name used by Samba to contact the ldap server when retreiving user account information\&. The \fIldap admin dn\fR is used in conjunction with the admin dn password stored in the \fIprivate/secrets\&.tdb\fR file\&. See the \fBsmbpasswd\fR(8) man page for more information on how to accmplish this\&.
+
+
+.TP
+ldap delete dn (G)
+This parameter specifies whether a delete operation in the ldapsam deletes the complete entry or only the attributes specific to Samba\&.
+
+
+缺省设置: \fBldap delete dn = no\fR
+
+
+.TP
+ldap filter (G)
+这个选项指定了RFC2254兼容的LDAP搜索过滤器。默认对所有匹配\fBsambaAccount\fR对象类的条目进行登录名和 \fBuid\fR 属性之间的匹配。注意这个过滤器只应当返回一个条目.
+
+
+缺省设置: \fBldap filter = (&(uid=%u)(objectclass=sambaAccount))\fR
+
+
+.TP
+ldap group suffix (G)
+This parameters specifies the suffix that is used for groups when these are added to the LDAP directory\&. If this parameter is unset, the value of \fIldap suffix\fR will be used instead\&.
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBdc=samba,ou=Groups\fR
+
+
+.TP
+ldap idmap suffix (G)
+This parameters specifies the suffix that is used when storing idmap mappings\&. If this parameter is unset, the value of \fIldap suffix\fR will be used instead\&.
+
+
+缺省设置: \fBnone\fR
+
+
+示例: \fBou=Idmap,dc=samba,dc=org\fR
+
+
+.TP
+ldap machine suffix (G)
+It specifies where machines should be added to the ldap tree\&.
+
+
+缺省设置: \fBnone\fR
+
+
+.TP
+ldap passwd sync (G)
+This option is used to define whether or not Samba should sync the LDAP password with the NT and LM hashes for normal accounts (NOT for workstation, server or domain trusts) on a password change via SAMBA\&.
+
+
+The \fIldap passwd sync\fR can be set to one of three values:
+
+
+\fIYes\fR = Try to update the LDAP, NT and LM passwords and update the pwdLastSet time\&.
+
+\fINo\fR = Update NT and LM passwords and update the pwdLastSet time\&.
+
+\fIOnly\fR = Only update the LDAP password and let the LDAP server do the rest\&.
+
+缺省设置: \fBldap passwd sync = no\fR
+
+
+.TP
+ldap port (G)
+这个选项只有在编译时配置了"--with-ldap"选项的情况下才可用.
+
+这个选项控制用于和LDAP服务器通讯的tcp端口号。默认应用标准的LDAP端口636。
+
+
+参见: ldap ssl
+
+
+Default : \fBldap port = 636 ; 如果 ldap ssl = on\fR
+
+
+Default : \fBldap port = 389 ; 如果 ldap ssl = off\fR
+
+
+.TP
+ldap server (G)
+这个选项只有在编译时配置了"--with-ldapsam"选项的情况下才可用.
+
+这个选项应当包含ldap目录服务器的FQDN,用来查询和定位用户帐户信息。
+
+
+Default : \fBldap server = localhost\fR
+
+
+.TP
+ldap ssl (G)
+This option is used to define whether or not Samba should use SSL when connecting to the ldap server This is \fBNOT\fR related to Samba's previous SSL support which was enabled by specifying the \fB--with-ssl\fR option to the \fIconfigure\fR script\&.
+
+
+The \fIldap ssl\fR can be set to one of three values:
+
+
+\fIOff\fR = Never use SSL when querying the directory\&.
+
+\fIStart_tls\fR = Use the LDAPv3 StartTLS extended operation (RFC2830) for communicating with the directory server\&.
+
+\fIOn\fR = Use SSL on the ldaps port when contacting the \fIldap server\fR\&. Only available when the backwards-compatiblity \fB--with-ldapsam\fR option is specified to configure\&. See \fIpassdb backend\fR
+
+Default : \fBldap ssl = start_tls\fR
+
+
+.TP
+ldap suffix (G)
+指定用户和机器帐号从哪里加入树中。可以被\fBldap user suffix\fR和\fBldap machine suffix\fR选项越过。它也用作所有ldap搜索的base dn。
+
+
+缺省设置: \fBnone\fR
+
+
+.TP
+ldap user suffix (G)
+This parameter specifies where users are added to the tree\&. If this parameter is not specified, the value from \fBldap suffix\fR\&.
+
+
+缺省设置: \fBnone\fR
+
+
+.TP
+level2 oplocks (S)
+这个参数控制了是否Samba在一个共享上支持第二级(只读)oplocks。
+
+2级,或者只读oplocks允许Windows NT客户在文件中可以保持一个oplocks,一旦第二个用户请求同一文件时可以从读写oplocks级降为只读oplocks(而不是像传统的做法,保持唯一的oplocks,在第二次打开时释放所有的oplocks).这样就可以允许支持2级oplocks的文件打开者缓存用于只读的文件(也就是说,他们的写和锁定请求不可能被缓冲),并且使只读文件的大量访问提升性能(例如.exe文件).
+
+一旦在拥有只读oplocks的客户中有一位对文件进行了写操作,所有的客户都会被通知(不需要回复及等待), told to break their oplocks to "none",然后删除所有read-ahead caches.
+
+推荐打开这个选项,为共享的可执行程序提高访问速度。
+
+更多关于2级oplocks的讨论请查看CIFS的规约.
+
+当前,如果使用了\fIkernel oplocks\fR的话,就不会认可2级oplocks(即使把那个选项设为\fByes\fR也没用).还要注意,\fIoplocks\fR 选项必须在共享上被设成\fByes\fR才有效果.
+
+参见 \fIoplocks\fR 和 \fIkernel oplocks\fR 选项。
+
+
+缺省设置: \fBlevel2 oplocks = yes\fR
+
+
+.TP
+lm announce (G)
+这个选项决定\fBnmbd\fR(8)是否产生"Lanman宣告广播",OS/2的客户端需要这个广播用以在它们的浏览列表里看到Samba服务器.这个选项有3个值:\fByes\fR、\fBno\fR、\fBauto\fR.缺省值是\fBauto\fR.如果这值为\fBno\fR,Samba将不会产生这种广播.如果设置为\fByes\fR,Samba将以\fIlm interval\fR选项的值为频率产生这种广播.如果设置为\fBauto\fR,Samba并不发出这类广播,但是侦听他们.如果收到这样的广播,它就开始发送这种广播,频率还是以\fIlm interval\fR选项设定的为准.
+
+
+参见 \fIlm interval\fR.
+
+
+缺省设置: \fBlm announce = auto\fR
+
+
+示例: \fBlm announce = yes\fR
+
+
+.TP
+lm interval (G)
+如果Samba设置为产生"Lanman宣告广播(给OS/2客户端使用,参见\fIlm announce\fR选项).那么,这里的选项设定了以秒为单位的发生频率.如果这个选项设置为"0",则不管\fIlm announce\fR选项的值,永远不会发出任何"Lanman宣告广播".
+
+
+参见\fIlm announce\fR.
+
+
+缺省设置: \fBlm interval = 60\fR
+
+
+示例: \fBlm interval = 120\fR
+
+
+.TP
+load printers (G)
+这个布尔值控制是否在"printcap"文件中的所有打印机将会被缺省的安装到Samba环境,并且可以被浏览.参见"printers"段获得更多细节.
+
+
+缺省设置: \fBload printers = yes\fR
+
+
+.TP
+local master (G)
+这个选项允许\fBnmbd\fR(8)试着去成为本地子网的主控浏览器.如果选项值为\fBno\fR,\fB nmbd\fR不会去争取这个权利.在缺省情况下,这个值为\fByes\fR.设置这个值为\fByes\fR,并不意味着\fBbecome\fR 就一定会成为本地的主浏览器,只是意味着\fBbecome\fR 会参加成为主浏览器的选举.
+
+
+设置这个值为 \fBno\fR 将使 \fBnmbd\fR \fB永远不会\fR 成为主控浏览器。
+
+
+缺省设置: \fBlocal master = yes\fR
+
+
+.TP
+lock dir (G)
+与 \fI lock directory\fR 同义.
+
+
+.TP
+lock directory (G)
+这个选项指出"加锁文件"放置的目录.加锁文件用以实现最大连接数\fImax connections\fR.
+
+
+缺省设置: \fBlock directory = ${prefix}/var/locks\fR
+
+
+示例: \fBlock directory = /var/run/samba/locks\fR
+
+
+.TP
+locking (S)
+这个选项控制当客户端发出锁定请求时,服务器是否执行"锁定".
+
+如果 \fBlocking = no\fR ,所有的锁定请求和解除锁定请求将表现为成功执行.对锁定的查询将会显示没有锁定.
+
+如果\fBlocking = yes\fR 服务器将执行真正的锁定。
+
+这个选项\fB可能\fR对只读文件系统有用,因为它\fB可能\fR不需要锁定(例如:CDROM).即使在这种情况下,我们也不真正推荐使用\fBno\fR.
+
+要特别小心,不管是全局的关闭这个选项或者在某个服务上关闭这个选项,都有可能由于缺少锁定而导致数据损坏.其实,你根本就不需要设置这个选项.
+
+
+缺省设置: \fBlocking = yes\fR
+
+
+.TP
+lock spin count (G)
+This parameter controls the number of times that smbd should attempt to gain a byte range lock on the behalf of a client request\&. Experiments have shown that Windows 2k servers do not reply with a failure if the lock could not be immediately granted, but try a few more times in case the lock could later be aquired\&. This behavior is used to support PC database formats such as MS Access and FoxPro\&.
+
+
+缺省设置: \fBlock spin count = 3\fR
+
+
+.TP
+lock spin time (G)
+The time in microseconds that smbd should pause before attempting to gain a failed lock\&. See \fIlock spin count\fR for more details\&.
+
+
+缺省设置: \fBlock spin time = 10\fR
+
+
+.TP
+log file (G)
+这个选项允许设置其它的文件名字来替代Samba日志文件(也就是调试文件).
+
+这个选项支持标准的文件名代换变量,允许方便的为每个用户或者机器设置专用的日志文件.
+
+
+示例: \fBlog file = /usr/local/samba/var/log.%m\fR
+
+
+.TP
+log level (G)
+这个值(字符串)允许在\fIsmb.conf\fR里定义调试水平(记录水平).This parameter has been extended since the 2.2.x series, now it allow to specify the debug level for multiple debug classes. 这给系统配置带来更大的灵活性.
+
+
+缺省的调试水平将在命令行里定义,如果没有定义,调试水平为零.
+
+
+
+示例: \fBlog level = 3 passdb:5 auth:10 winbind:2\fR
+
+
+.TP
+logon drive (G)
+这个选项设置一个本地路径(可以理解为网络映射盘),当登录时,用户的主目录就连接到这个本地路径(参见\fIlogon home\fR).
+
+注意:这个选项只有在Samba是登录服务器时才有用.
+
+
+缺省设置: \fBlogon drive = z:\fR
+
+
+示例: \fBlogon drive = h:\fR
+
+
+.TP
+logon home (G)
+当Win95/98或Win NT工作站登录到Samba PDC时,它们的主目录的位置.设置了这个选项,就允许在(DOS)提示符下使用形如:
+
+
+C:\\> \fBNET USE H: /HOME\fR
+
+这样的命令。
+
+这个选项支持标准的命令选项替换,方便为每个用户或者机器提供登录脚本.
+
+
+This parameter can be used with Win9X workstations to ensure that roaming profiles are stored in a subdirectory of the user's home directory\&. This is done in the following way:
+
+
+\fBlogon home = \\%N\%U\profile\fR
+
+
+This tells Samba to return the above string, with substitutions made when a client requests the info, generally in a NetUserGetInfo request\&. Win9X clients truncate the info to \\\\server\\share when a user does \fBnet use /home\fR but use the whole string when dealing with profiles\&.
+
+
+Note that in prior versions of Samba, the \fIlogon path\fR was returned rather than \fIlogon home\fR\&. This broke \fBnet use /home\fR but allowed profiles outside the home directory\&. The current implementation is correct, and can be used for profiles if you use the above trick\&.
+
+注意,这个选项只在Samba被设置成为登录服务器logon server时才起作用.
+
+
+缺省设置: \fBlogon home = "\\%N\%U"\fR
+
+
+示例: \fBlogon home = "\\remote_smb_server\%U"\fR
+
+
+.TP
+logon path (G)
+这个选项指定了存放roaming profile(WindowsNT的NTuser.dat 等文件)的用户目录.Contrary to previous versions of these manual pages, it has nothing to do with Win 9X roaming profiles. To find out how to handle roaming profiles for Win 9X system, see the \fIlogon home\fR parameter.
+
+这个选项支持标准替换,允许你为每一个用户或机器设置不同的登录脚本.它也可以指定那些显示在Windows NT客户端上的"应用程序数据"(\fI桌面\fR,\fI开始菜单\fR,\fI网上邻居\fR和\fI程序\fR等文件夹和他们的内容).
+
+指定的共享资源和路径必须是用户可读的,这样,设定的选项和目录才能被Windows NT客户端装载使用.这个共享资源在用户第一次登录时必须是可写的,这样Windows NT客户端才能建立NTuser.dat文件及其他目录.
+
+然后,这些目录以及其中的任何内容都可以根据需要设置为只读的.把NTuser.dat文件设置成只读是不明智的,你应该把它改名成NTuser.man(一个强制使用(\fBMAN\fRdatory)的user.dat)来达到同样的目的.
+
+Windows终端有时候即使没有用户登录也会保持对[homes]共享资源的连接.因此,logon path不能包含对homes共享资源的任何参照(也就是说,把这个选项设置成类似\\\\%N\\HOMES\\profile_path会引起问题).
+
+
+这个选项支持标准替换,允许你为不同的机器或用户设置不同的登录脚本.
+
+
+注意,这个选项只有在Samba被设置成为登录服务器logon server的时候才起作用.
+
+
+缺省设置: \fBlogon path = \\\\%N\\%U\\profile\fR
+
+
+示例: \fBlogon path = \\\\PROFILESERVER\\PROFILE\\%U\fR
+
+
+.TP
+logon script (G)
+这个选项指明,当一个用户成功的登录后,将会自动下载到本地执行的脚本文件,这个脚本文件可能是一个批处理文件(.bat)或者一个NT命令文件(.cmd).这个脚本文件必须使用DOS风格的回车/换行(CR/LF)来结束每一行,因此,我们推荐使用DOS风格的文本编辑器来建立这个文件.
+
+
+脚本文件的存放位置必须是相对于[netlogon]服务中指明的目录路径,举例来说,如果[netlogon]服务指定了了一个\fIpath\fR是\fI/usr/local/samba/netlogon\fR,而\fBlogon script \fR = STARTUP.BAT, 那么将要下载到客户端执行的文件的实际存放位置是:
+
+
+\fI/usr/local/samba/netlogon/STARTUP.BAT\fR
+
+
+登录脚本的内容包含什么,完全由你决定.我们建议包含这个指令:\fBNET TIME \\SERVER /SET /YES\fR,它强迫每一台机器的时间和服务器的时间同步(以服务器的时间为准);另一个建议是映射公共工具盘:\fBNET USE U:\\\\SERVER\\"公共工具目录"\fR 例如:
+
+.nf
+NET USE Q:\\SERVER\ISO9001_QA
+.fi
+
+注意:在一个有安全要求的系统环境中,特别重要的是要记住不要允许客户在[netlogon]上有写的权限,也不要给以客户改写登录脚本文件的权利.如果允许客户随意的修改,安全规则就给撕裂了一个口子.
+
+
+这个选项支持标准的置换规则,允许你为每个不同的用户或机器定制不同的登录脚本.
+
+
+注意,这个选项只有在Samba设置为登录服务器时才起作用.
+
+
+
+缺省设置: \fBno logon script defined\fR
+
+
+示例: \fBlogon script = scripts\%U.bat\fR
+
+
+.TP
+lppause command (S)
+这个选项指定在服务器上中断指定的打印作业的打印或假脱机打印操作所使用的指令.
+
+
+这个指令应该是一个可以根据打印机名和作业号中断打印作业的程序或脚本.实现这个操作的一个办法是使用作业优先级,优先级别太低的作业不会被发送到打印机上.
+
+
+用\fI%p\fR置换可以取得打印机名,而\fI%j\fR会被打印作业号(一个整数)置换.在HPUX系统中(参见\fIprinting=hpux \fR),如果给lpq命令加上\fI-p%p\fR选项,打印作业会显示其执行状态,具体的说,如果作业的优先级低于阻塞级别,它会显示'PAUSED'状态,反之,如果作业的优先级等于或高于阻塞级别,它会显示'SPOOLED'或'PRINTING'状态.
+
+
+注意,在这个设置中使用绝对路径是一个好习惯,因为这个路径有可能不在服务器的PATH环境变量中.
+
+
+参见 \fIprinting \fR parameter选项.
+
+
+缺省设置: 目前这个选项没有缺省设置,除非\fIprinting\fR选项设置\fBSYSV\fR,在这种情况下,缺省参
+数是:
+
+
+\fBlp -i %p-%j -H hold\fR
+
+
+或者在\fIprinting\fR选项设置为\fBsoftq\fR时,缺省选项是:
+
+
+\fBqstat -s -j%j -h\fR
+
+
+在HPUX系统中的例子: \fBlppause command = /usr/bin/lpalt %p-%j -p0\fR
+
+
+.TP
+lpq cache time (G)
+此选项控制了\fBlpq\fR信息多长时间被缓冲一次,以防止频繁调用\fBlpq\fR命令.每一次系统使用\fBlpq\fR命令会保留一个单独的缓冲,所以如果不同的用户分别使用了不同的\fBlpq\fR命令的话,他们不可能共享缓冲信息.
+
+
+缓冲文件被存放在\fI/tmp/lpq.xxxx\fR文件中,其中的xxxx是正在使用的\fBlpq\fR命令哈希表.
+
+
+这个选项的缺省值是10秒,这就是说以前相同的\fBlpq\fR命令的缓冲内容将在周期为10秒内被使用.如果\fBlpq\fR命令非常慢的话,可以取稍大的值.
+
+
+把这个值设为0就完全禁止了缓冲技术的使用.
+
+
+参见 \fIprinting\fR 选项.
+
+
+缺省设置: \fBlpq cache time = 10\fR
+
+
+示例: \fBlpq cache time = 30\fR
+
+
+.TP
+lpq command (S)
+这个选项指定为了获得\fBlpq\fR风格的打印机状态信息而要在服务器上要执行的命令.
+
+
+这个命令应该是一个只以打印机名作为选项并可以输出打印机状态信息的程序或脚本.
+
+
+通常支持九种打印机状态信息:CUPS, BSD,AIX,LPRNG,PLP,SYSV,HPUX,QNX和SOFTQ.而这些正好覆盖了大多数的UNIX系统.你可以用\fIprinting =\fR选项来控制到底要用哪种类型.
+
+
+有些客户端(特别是Windows for Workgroups)可能不能正确地向打印机发送联接号以获得状态信息.对此,服务器会向客户报告它所联接的首个打印服务.这样的情况只当联接号发送非法时才会发生.
+
+
+如果使用\fI%p\fR变量的话,系统会在此处放置打印机名.否则在命令后放置打印机名.
+
+
+注意,当服务器不能获得\fBPATH\fR变量的话,以绝对路径来描述\fIlpq command\fR是个好习惯. 当与CUPS库编译连接时,不需要\fIlpq command\fR,因为smbd将使用库调用来获得打印队列列表。
+
+
+参见 \fIprinting \fR 选项.
+
+
+缺省设置: \fB依赖于 \fI printing\fR 的设置情况\fR
+
+
+示例: \fBlpq command = /usr/bin/lpq -P%p\fR
+
+
+.TP
+lpresume command (S)
+此选项指定为了继续连续打印或假脱机一个指定的打印任务时要在服务器上执行的命令.
+
+
+此命令应该是一个以打印机名和要恢复的打印任务号作为选项的程序或脚本.参见\fIlppause command \fR参数。
+
+
+如果使用\fI%p\fR变量的话,系统会在此处放置打印机名.用\fI%j\fR来代替打印任务号,当然是用整数形
+式罗.
+
+
+注意,当服务器不能获得PATH变量的话,以绝对路径来描述\fIlpresume command\fR是个好习惯
+
+
+参见 \fIprinting \fR 选项.
+
+
+缺省设置: 当前没有缺省设置,除非 \fIprinting\fR 选项是 \fBSYSV\fR, 此时默认是
+
+
+\fBlp -i %p-%j -H resume\fR
+
+
+或者如果\fIprinting\fR 选项是 \fBSOFTQ\fR, 那么默认是:
+
+
+\fBqstat -s -j%j -r\fR
+
+
+HPUX的示例: \fBlpresume command = /usr/bin/lpalt %p-%j -p2\fR
+
+
+.TP
+lprm command (S)
+此选项指定为了要删除一个打印任务而需要在服务器上执行的命令.
+
+
+此命令应该是一个使用打印机名和打印任务号的程序或脚本,并且执行它们可以删掉打印任务.
+
+如果使用\fI%p\fR变量的话,系统会在此处放置打印机名.用\fI%j\fR来代替打印任务号,当然是也用整数形式罗.
+
+注意,当不能从服务器获得PATH变量的话,以绝对路径来描述\fIlprm command\fR是个好习惯.
+
+
+参见\fIprinting \fR 选项.
+
+
+缺省设置: \fB依赖于 \fIprinting \fR 选项设置\fR
+
+
+示例 1: \fBlprm command = /usr/bin/lprm -P%p %j\fR
+
+
+示例 2: \fBlprm command = /usr/bin/cancel %p-%j\fR
+
+
+.TP
+machine password timeout (G)
+如果samba服务器是Windows NT域成员的话(参见\fIsecurity=domain\fR选项),那么运行中的smbd进程会周期性地试着改变储存在叫做\fIprivate/secrets.tdb\fR的TDB中的MACHINE ACCOUNT PASSWORD.这个参数指定了密码将多久更换一次,以秒为单位。缺省值是一个星期(当然要以秒来表示),这与NT域成员服务器是一样的.
+
+
+参见 \fBsmbpasswd\fR(8), 和 \fIsecurity = domain\fR 选项.
+
+
+缺省设置: \fBmachine password timeout = 604800\fR
+
+
+.TP
+magic output (S)
+此选项指定了一个用magic脚本输出内容而建立的文件的名称,参见下面对\fImagic script\fR选项的描述.
+
+
+警告:如果两个客户在同样的目录下用相同的\fImagic script\fR,输出文件内容是无法确定的.
+
+
+缺省设置: \fBmagic output = <magic script name>.out\fR
+
+
+示例: \fBmagic output = myfile.txt\fR
+
+
+.TP
+magic script (S)
+这个选项用来指定将被服务器执行的文件的名字,这个文件如果已经打开,那么,当这个文件关闭后服务器同样也可以运行.这样就允许了一个UNIX脚本可以传送到samba主机,并为所连接的用户运行.
+
+
+以这种方式运行的脚本将会在完成以后被删除,只要权限允许的话.
+
+
+如果脚本产生了输出的话,这些信息就被送到\fImagic  output\fR选项指定的文件中(见以上描述).
+
+
+注意,一些命令解释器不能解释包含CR/LF而不是CR回车换行符的脚本.magic脚本必须是可以被运行的(\fB就象\fR在本地主机运行一样),而有些脚本在某些主机上或某些shell下可能会在dos客户端进行过滤处理.
+
+
+magic脚本仍处于\fB实验\fR阶段,所以\fB不能\fR对此完全依赖.
+
+
+缺省设置: \fB无。禁止使用magic script.\fR
+
+
+示例: \fBmagic script = user.csh\fR
+
+
+.TP
+mangle case (S)
+参见NAME MANGLING部分.
+
+
+缺省设置: \fBmangle case = no\fR
+
+
+.TP
+mangled map (S)
+这个选项是用来直接映射那些不能在Windows/DOS上描述的unix文件名.不过并不经常出现这样的情况,只有一些特殊的扩展名在DOS和UNIX之间才会不同,例如,HTML文件在UNIX下通常都是\fI.html\fR,而在Windows/DOS下通常却是\fI.htm\fR.
+
+
+所以如果要将 \fIhtml\fR 映射为 \fIhtm\fR 你应当这样:
+
+
+\fBmangled map = (*.html *.htm)\fR
+
+
+有一个非常有用的经验是删掉在CDROM光盘上一些文件名后面讨人厌的\fI;1\fR(只有在一些UNIX可以看到它们).为此可以这样映射:(*;1 *;).
+
+
+缺省设置: \fI没有 mangled map\fR
+
+
+示例: \fBmangled map = (*;1 *;)\fR
+
+
+.TP
+mangled names (S)
+这个选项控制是否要把UNIX下的非DOS文件名映射为DOS兼容的形式("mangled")并使得它们可以查阅,或者简单地忽略掉这些非DOS文件名.
+
+
+NAME MANGLING部分有更多关于如何控制这类处理的详细信息.
+
+
+如果使用了这种映射,那么其算法就象下面这样:
+
+
+把文件名最后一个点符号前面首五个字母数字字符强制转换成大写,作为要映射名字的首五个字符.
+
+
+在要映射名字的起始部分加上"~"符号,后面跟两个字符的特殊序列字串,而这个序列字串是由原始的文件名而来(也就是:原文件名去掉最后的文件扩展名).只有当文件的扩展名含有大写字母或长于三个字符时,文件的最后扩展名才被包含在散列计算中.
+
+
+注意,如果你不喜欢'~'的话,可以用\fImangling char\fR选项来指定你想要的字符.
+
+
+最后,扩展名部分的前三个字符会被保留,强制转换到大写并作为映射后名字的扩展名.最后的扩展名就是原始文件名中最后一个'.'右面的那部分.如果文件名中没有'.',那么映射后的文件名也没有扩展名部分(除非用了"hidden files" - 参见后面的介绍).
+
+unix的文件名如果以点开始,那么好比DOS中的隐藏文件.这些文件映射后的文件名就会拿掉点符号并用"___"来作为它的扩展名,而不管原来的扩展名是什么("___"是三个下划线).
+
+
+大写字母数字字符组成了两位散列值.
+
+如果目录中的文件与要映射的文件名使用了相同的前五位字符,这样的算法会导致名称冲突,不过发生冲突的可能性是1/1300.
+
+
+名称映射允许当需要保留unix长文件名时在unix目录与Windows/DOS之间拷贝文件.从Windows/DOS中拷过来的unix文件可以更换新的扩展名并保留同样的主文件名.名称映射并不会在转换时更改什么东西.
+
+
+缺省设置: \fBmangled names = yes\fR
+
+
+.TP
+mangled stack (G)
+这个选项控制了映射文件名的数量,以便让Samba服务器\fBsmbd\fR(8)对其进行缓存.
+
+
+栈里保存了最近映射的基本文件名(扩展名只有在超过3个字符或者包含大写字符时才会保留).
+
+
+栈值设得稍大一些,对于映射unix的长文件名操作会更顺利一些.但是,它会使目录访问变得更慢;小一些的栈可以保存在服务器的内存中(每个栈元素占256个字节).
+
+
+并不保证在转换长文件名时绝对正确无误,准备好面对可能出现的惊奇.
+
+
+缺省设置: \fBmangled stack = 50\fR
+
+
+示例: \fBmangled stack = 100\fR
+
+
+.TP
+mangle prefix (G)
+controls the number of prefix characters from the original name used when generating the mangled names\&. A larger value will give a weaker hash and therefore more name collisions\&. The minimum value is 1 and the maximum value is 6\&.
+
+
+mangle prefix is effective only when mangling method is hash2\&.
+
+
+缺省设置: \fBmangle prefix = 1\fR
+
+
+示例: \fBmangle prefix = 4\fR
+
+
+.TP
+mangling char (S)
+这个选项指定在name mangling操作中使用什么样的字符作为\fBmagic\fR字符.缺省是用了'~',不过有些软件可能会在使用上受到某些妨碍.可以设定为你想要的字符.
+
+
+缺省设置: \fBmangling char = ~\fR
+
+
+示例: \fBmangling char = ^\fR
+
+
+.TP
+mangling method (G)
+controls the algorithm used for the generating the mangled names\&. Can take two different values, "hash" and "hash2"\&. "hash" is the default and is the algorithm that has been used in Samba for many years\&. "hash2" is a newer and considered a better algorithm (generates less collisions) in the names\&. However, many Win32 applications store the mangled names and so changing to the new algorithm must not be done lightly as these applications may break unless reinstalled\&.
+
+
+缺省设置: \fBmangling method = hash2\fR
+
+
+示例: \fBmangling method = hash\fR
+
+
+.TP
+map acl inherit (S)
+This boolean parameter controls whether \fBsmbd\fR(8) will attempt to map the 'inherit' and 'protected' access control entry flags stored in Windows ACLs into an extended attribute called user\&.SAMBA_PAI\&. This parameter only takes effect if Samba is being run on a platform that supports extended attributes (Linux and IRIX so far) and allows the Windows 2000 ACL editor to correctly use inheritance with the Samba POSIX ACL mapping code\&.
+
+
+缺省设置: \fBmap acl inherit = no\fR
+
+
+.TP
+map archive (S)
+这个选项决定了是否把DOS的归档属性映射为UNIX可执行位.在文件修改后DOS的归档位会被设定到文件上.保持归档位的一个理由是使得Samba或者你的PC在新建任何文件的时候,不会为它们设置UNIX可执行属性。那样对于共享源代码、文档等等非常让人厌烦。
+
+
+注意这个选项需要在\fIcreate mask\f中没有排除文件属主的执行权限位(也就是说它必须包含100).参见\fIcreate mask\fR选项中的描述.
+
+
+缺省设置: \fBmap archive = yes\fR
+
+
+.TP
+map hidden (S)
+这个选项决定DOS下的隐藏文件是否要映射为UNIX全局可执行位.
+
+
+注意这个选项需要在\fIcreate mask\fR中没有排除所有用户的执行权限位(也就是说它必须包含001).参见\fIcreate mask\fR选项中的描述.
+
+
+缺省设置: \fBmap hidden = no\fR
+
+
+.TP
+map system (S)
+这个选项决定DOS下的系统文件是否要映射为UNIX组可执行位.
+
+注意这个选项需要在\fIcreate mask\fR中没有排除组用户的执行权限位(也就是说它必须包含010).参见\fIcreate mask\fR选项中的描述.
+
+
+缺省设置: \fBmap system = no\fR
+
+
+.TP
+map to guest (G)
+这个选项只在安全模式不是共享级(\fIsecurity=share\fR)时才有用,也就是选用了用户安全级,服务器安全级或者域安全级(\fBuser\fR, \fBserver\fR, 和\fBdomain\fR).
+
+
+这时,选项会有三种不同的值,分别通知\fBsmbd\fR(8)在用户以非法身份登录时作何相应处理.
+
+
+这三种设定是:
+
+
+\fBNever\fR - 意思是用户登录时用了个非法口令并且被服务器所拒.这是个缺省值.
+
+
+\fBBad User\fR - 意思是用户登录时用了非法口令并且被服务器所拒,除非用户名不存在,否则也可以以来宾身份登录并映射到对应的\fIguest account\fB账号.
+
+
+\fBBad Password\fR - 意思是用户登录时即使用了非法口令,但是还会以来宾身份登录并映射到对应的guest账号.可能出现这样的问题,就是用户虽然输错了口令,却非常平静地以“来宾”身份登录到系统上。他们不明白为什么他们不能访问那些他们认为可以访问的资源,因为在登录时没有任何信息提示他们输错了口令。所以应该小心使用它,以避免不必要的麻烦. Helpdesk services will \fBhate\fR you if you set the \fImap to guest\fR parameter this way :-).
+
+
+注意当使用共享级以外的其它安全模式时,要设定这个选项,以使"Guest"共享资源服务发挥作用.因为在这些安全级模式中,用户请求的共享资源名在服务器成功验证用户登录前\fB不会\fR发送到服务器作处理,所以服务器就在不能处理联接验证结果时为联接提供"Guest"共享.
+
+
+对于那些以前的版本,这个选项会映射到编译时所用的local.h文件里定义的\fBGUEST_SESSSETUP\fR变量的值.
+
+
+缺省设置: \fBmap to guest = Never\fR
+
+
+示例: \fBmap to guest = Bad User\fR
+
+
+.TP
+max connections (S)
+最大联接数就是允许同时联接到一个资源服务的最大数量限制.在\fImax connections\fR大于0的情况下,如果联接数超过了最大联接数设定时,超出的联接将被拒绝.如果设为0的话就没有这样的联接限制了.
+
+
+为了实现这样的功能,系统会使用记录锁定文件.锁定文件存放在\fIlock directory\fR选项指定的目录中.
+
+
+缺省设置: \fBmax connections = 0\fR
+
+
+示例: \fBmax connections = 10\fR
+
+
+.TP
+max disk size (G)
+控制磁盘使用的上限.如果把它设为100的话,所有的共享资源容量都不会超过100M.
+
+
+注意这个选项并不是限制管理员往磁盘上存放数据的容量.在上面所说的情况中,管理员仍然可以存放超过100M的数据到磁盘上,但如果客户查询剩余磁盘空间或磁盘总空间的话,所得到的结果就只在这个 \fImax disk size\fR指定的容量范围之内.
+
+
+使用这个选项主要是为了对一些疯狂使用磁盘空间的软件进行一定的限制,特别是它们可能会使用超过1G上以的磁盘空间.
+
+
+把这个选项设为0说明没有限制.
+
+
+缺省设置: \fBmax disk size = 0\fR
+
+
+示例: \fBmax disk size = 1000\fR
+
+
+.TP
+max log size (G)
+这个选项(一个kB为单位的整数)用来指定使用的记录文件最大到多少容量.samba会周期性地检查这个容量,如果超过这个选项值就把老的文件换名成扩展名为\fI.old\fR的文件.
+
+
+把这个选项设为0说明没有限制.
+
+
+缺省设置: \fBmax log size = 5000\fR
+
+
+示例: \fBmax log size = 1000\fR
+
+
+.TP
+max mux (G)
+这个选项控制了对用户允许的最大SMB并发操作数.你应该不需要设定这个选项的.
+
+
+缺省设置: \fBmax mux = 50\fR
+
+
+.TP
+max open files (G)
+这个选项限定了在任意时间客户端用一个 \fBsmbd\fR(8)文件服务进程可以打开的最大文件数.缺省的值非常高(10,000),因为对于每个未打开的文件只使用其中的一位.
+
+
+打开文件极限通常用UNIX每进程最大文件描述符数来限制更好,所以你不需要去碰这个选项的.
+
+
+缺省设置: \fBmax open files = 10000\fR
+
+
+.TP
+max print jobs (S)
+This parameter limits the maximum number of jobs allowable in a Samba printer queue at any given moment\&. If this number is exceeded, \fBsmbd\fR(8) will remote "Out of Space" to the client\&. See all \fItotal print jobs\fR\&.
+
+
+缺省设置: \fBmax print jobs = 1000\fR
+
+
+示例: \fBmax print jobs = 5000\fR
+
+
+.TP
+max protocol (G)
+此项的值是一个字符串,定义了服务器支持的最高协议等级.
+
+可能的值是:
+
+\fBCORE\fR: 早期版本,不接受用户名.
+
+\fBCOREPLUS\fR: 在CORE的基础上改进了一些性能.
+
+\fBLANMAN1\fR: 第一个比较流行的协议,支持长文件名.
+
+\fBLANMAN2\fR: 对LANMAN1进行了更新. 
+
+\fBNT1\fR: 目前用于Windows NT,一般称为CIFS.
+
+通常,此选项不必设定,因为在SMB协议中会自动协商并选择合适的协议.
+
+
+参见 \fImin protocol\fR
+
+
+缺省设置: \fBmax protocol = NT1\fR
+
+
+示例: \fBmax protocol = LANMAN1\fR
+
+
+.TP
+max reported print jobs (S)
+This parameter limits the maximum number of jobs displayed in a port monitor for Samba printer queue at any given moment\&. If this number is exceeded, the excess jobs will not be shown\&. A value of zero means there is no limit on the number of print jobs reported\&. See all \fItotal print jobs\fR and \fImax print jobs\fR parameters\&.
+
+
+缺省设置: \fBmax reported print jobs = 0\fR
+
+
+示例: \fBmax reported print jobs = 1000\fR
+
+
+.TP
+max smbd processes (G)
+This parameter limits the maximum number of \fBsmbd\fR(8) processes concurrently running on a system and is intended as a stopgap to prevent degrading service to clients in the event that the server has insufficient resources to handle more than this number of connections\&. Remember that under normal operating conditions, each user will have an \fBsmbd\fR(8) associated with him or her to handle connections to all shares from a given host\&.
+
+
+缺省设置: \fBmax smbd processes = 0\fR ## no limit
+
+
+示例: \fBmax smbd processes = 1000\fR
+
+
+.TP
+max ttl (G)
+这个选项通知\fBnmbd\fR(8) 当它用广播或从WINS服务器请求一个名字时,这个NetBIOS名字的有效时间('time to live', 以秒计)是多长.你不需要去碰这个选项,缺省值是3天.
+
+
+缺省设置: \fBmax ttl = 259200\fR
+
+
+.TP
+max wins ttl (G)
+这个选项通知\fBsmbd\fR(8)程序当它作为一个WINS服务器时(\fIwins support =true\fR),nmbd承认的最长NetBIOS名字生存时间('time to live',以秒计).你不需要去改变这个选项的,缺省值是6天(518400秒).
+
+
+参见 \fImin wins ttl\fR 选项.
+
+
+缺省设置: \fBmax wins ttl = 518400\fR
+
+
+.TP
+max xmit (G)
+这个选项控制通过samba的最大包容量.缺省值是65535,同时这也是最大值.有时你可能用一个较小的值可以得到更好的性能.不过低于2048通常会有一些问题.
+
+
+缺省设置: \fBmax xmit = 65535\fR
+
+
+示例: \fBmax xmit = 8192\fR
+
+
+.TP
+message command (G)
+当服务器接收到一个WinPopup类似的信息时运行一个指定的命令.
+
+
+通常这个命令所做之事都取决于你的想象.
+
+
+例如:
+
+\fBmessage command = csh -c 'xedit %s;rm %s' &\fR
+
+这个命令用\fBxedit\fR发出一条信息,然后再删除它.\fB注意很重要的一点是这个命令应该立即返回\fR.这就是为什么在行末用'&'的原因.如果它没有立即返回的话,计算机可能会在发送信息时当掉的(不过一般都会在30秒后恢复).
+
+
+所有信息都被以全局访客用户身份发送.命令可以使用标准的替换符,不过\fI%u\fR将不会有效(在这里用\fI%U\fR可能更好).
+
+
+除了标准替换的部分,还可以应用一些附加的替换,比如:
+
+
+\fI%s\fR =包含消息的文件名
+
+\fI%t\fR = 发送信息的目标(很可能是服务器名).
+
+\fI%f\fR = 信息的来源.
+
+你可以用这个命令来发送邮件或者你想要的内容.如果你有关于发送内容的好主意请通知开发人员.
+
+
+有个例子可以以邮件形式发送信息给root:
+
+
+\fBmessage command = /bin/mail -s 'message from %f on %m' root < %s; rm %s\fR
+
+
+如果没有指定发送信息所用的命令,那么这个信息并不会被发出,同时Samba向发送者报告出错.不幸的是WfWg(Windows for Workgrups)完全忽略出错代码,提示信息已被发出.
+
+
+如果你想要悄悄地删掉它的话请用:
+
+
+\fBmessage command = rm %s\fR
+
+
+缺省设置: \fB没有 message command\fR
+
+
+示例: \fBmessage command = csh -c 'xedit %s; rm %s' &\fR
+
+
+.TP
+min passwd length (G)
+与 \fImin password length\fR 同义.
+
+
+.TP
+min password length (G)
+此项设定当执行变更UNIX口令时\fBsmbd\fR接受的明文口令的最小字符长度.
+
+
+参见 \fIunix password sync\fR, \fIpasswd program\fR和 \fIpasswd chat debug\fR 选项.
+
+
+缺省设置: \fBmin password length = 5\fR
+
+
+.TP
+min print space (S)
+此项设定一个用户假脱机打印作业必须的最小剩余磁盘空间.当然是用kB 为单位.缺省设为0,就是说用户总是可以假脱机打印作业.
+
+
+参见 \fIprinting \fR 选项。
+
+
+缺省设置: \fBmin print space = 0\fR
+
+
+示例: \fBmin print space = 2000\fR
+
+
+.TP
+min protocol (G)
+The value of the parameter (a string) is the lowest SMB protocol dialect than Samba will support\&. Please refer to the \fImax protocol\fR parameter for a list of valid protocol names and a brief description of each\&. You may also wish to refer to the C source code in \fIsource/smbd/negprot\&.c\fR for a listing of known protocol dialects supported by clients\&.
+
+
+If you are viewing this parameter as a security measure, you should also refer to the \fIlanman auth\fR 选项。 Otherwise, you should never need to change this 选项。
+
+
+Default : \fBmin protocol = CORE\fR
+
+
+Example : \fBmin protocol = NT1\fR # disable DOS clients
+
+
+.TP
+min wins ttl (G)
+此项通知\fBnmbd\fR(8)当以WINS服务器的形式(\fIwins support = yes\fR)执行时,它所承认的NetBIOS名字的最小有效时间(以秒为单位).这个选项无需更改,缺省是6小时(21600秒)
+
+
+缺省设置: \fBmin wins ttl = 21600\fR
+
+
+.TP
+msdfs proxy (S)
+This parameter indicates that the share is a stand-in for another CIFS share whose location is specified by the value of the 选项。 When clients attempt to connect to this share, they are redirected to the proxied share using the SMB-Dfs protocol\&.
+
+
+Only Dfs roots can act as proxy shares\&. Take a look at the \fImsdfs root\fR and \fIhost msdfs\fR options to find out how to set up a Dfs root share\&.
+
+
+示例: \fBmsdfs proxy = \\\\otherserver\\someshare\fR
+
+
+.TP
+msdfs root (S)
+If set to \fByes\fR, Samba treats the share as a Dfs root and allows clients to browse the distributed file system tree rooted at the share directory\&. Dfs links are specified in the share directory by symbolic links of the form \fImsdfs:serverA\\\\shareA,serverB\\\\shareB\fR and so on\&. For more information on setting up a Dfs tree on Samba, refer to ???\&.
+
+
+参见 \fIhost msdfs\fR
+
+
+缺省设置: \fBmsdfs root = no\fR
+
+
+.TP
+name cache timeout (G)
+Specifies the number of seconds it takes before entries in samba's hostname resolve cache time out\&. If the timeout is set to 0\&. the caching is disabled\&.
+
+
+缺省设置: \fBname cache timeout = 660\fR
+
+
+示例: \fBname cache timeout = 0\fR
+
+
+.TP
+name resolve order (G)
+samba套件中的一些程序使用此项来决定使用的名字服务以及解析主机名到IP地址的次序.主要目的是控制netbios名称怎样解析。此选项列出不同的名字解析选项,以空格为分隔符.
+
+
+这些名字解析选项是:"lmhosts","host","wins"和"bcast".它们决定了名字解析是以如下方式的:
+
+
+\fBlmhosts\fR : 在samba的lmhosts文件中查找IP地址.如果lmhosts文件的内容行中没有名字类型附加在NetBIOS名上时(参见\fBlmhosts\fR (5)中的详细描述),任何类型的名字都可以匹配这个查询.
+
+\fBhost\fR : 执行标准的主机名到IP地址的解析操作,此操作会使用系统的\fI/etc/hosts\fR,NIS或者是DNS来查询.具体方法取决于操作系统,在IRIX和Solaris中解析名字的方法可能是由\fI/etc/nsswitch.conf\fR文件来控制的.注意此方法只适用于对被查询的NetBIOS名字类型为0x20(服务器)或者是0x1c(域控制器)时才有用,其它类型都会被忽略.后一种情况只在活动目录域中有用,返回一个匹配_ldap._tcp.domain 的SRV RR条目的DNS 查询。
+
+\fBwins\fR : 向列在\fIwins server\fR选项中的服务器查询一个名字对应的IP地址.如果没有指定WINS服务器,那么此方法就被略过了.
+
+\fBbcast\fR : 向在\fIinterfaces\fR选项中列出的每一个已知本地网络接口进行广播来作查询.这是最不可信的名字解析方法,除非目标主机就在本地子网中.
+
+缺省设置: \fBname resolve order = lmhosts host wins bcast\fR
+
+
+示例: \fBname resolve order = lmhosts bcast host\fR
+
+
+在上例中首先检查本地lmhosts文件,然后尝试广播,接下来就是用通常的系统主机名查询方式了. 
+
+
+When Samba is functioning in ADS security mode (\fBsecurity = ads\fR) it is advised to use following settings for \fIname resolve order\fR:
+
+
+\fBname resolve order = wins bcast\fR
+
+
+DC lookups will still be done via DNS, but fallbacks to netbios names will not inundate your DNS servers with needless querys for DOMAIN<0x1c> lookups\&.
+
+
+.TP
+netbios aliases (G)
+此项指定一串NetBIOS名字让nmbd作为附加的名字进行宣布.这样就使一个机器在可浏览列表中可以出现多个名字形式.如果主机是浏览服务器或登录服务器, 就不会出现这些附加的别名,而只会使用它的初始名字.
+
+
+参见 \fInetbios name\fR 选项。
+
+
+缺省设置: \fB空字符串 (没有附加的名字)\fR
+
+
+示例: \fBnetbios aliases = TEST TEST1 TEST2\fR
+
+
+.TP
+netbios name (G)
+此项对一已知的samba服务器设置它的NetBIOS名.缺省情况下会使用此主机DNS名字的主机名部分.如果这个服务器是作浏览服务器或登录服务器时(或是主机DNS名的第一个成分时),这个服务器名将成为这些服务对外宣布时所用的名字.
+
+参见 \fInetbios aliases\fR 选项
+
+
+缺省设置: \fBmachine DNS name\fR
+
+
+示例: \fBnetbios name = MYNAME\fR
+
+
+.TP
+netbios scope (G)
+This sets the NetBIOS scope that Samba will operate under\&. This should not be set unless every machine on your LAN also sets this value\&.
+
+
+.TP
+nis homedir (G)
+此项从NIS映射表中取得有效共享服务器.对于用自动装载程序的UNIX系统来说,用户的主目录经常根据需要从远程服务器装载到一个需要的工作站上.
+
+
+如果samba登录服务器不是作为真正主目录服务器而是通过NFS来实现,却通知用户以SMB服务器来使用主目录时,用户装载主目录来进行访问需要两个网络跳步(一个以SMB方式,另一个以NFS方式装载).这样的使用方式是非常慢的.
+
+
+此选项允许当Samba在主目录服务器方式运行时让samba反馈目录服务器而非登录服务器上的主共享资源,这样samba用户可以直接从目录服务器上装载目录.当samba把目录共享资源反馈给用户,这时它会参考\fIhomedir map\fR选项指定的NIS映射表然后再反馈表中列出的服务.
+
+
+注意要使此项起作用必须有一个运作中的NIS系统,并且samba服务器必须是一个登录服务器。
+
+
+缺省设置: \fBnis homedir = no\fR
+
+
+.TP
+nt acl support (S)
+此布尔量选项控制是否让\fBsmbd\fR(8)尝试把UNIX权限映射到NT的访问控制列表.这个参数在2.2.2之前是一个全局选项。
+
+
+缺省设置: \fBnt acl support = yes\fR
+
+
+.TP
+ntlm auth (G)
+This parameter determines whether or not \fBsmbd\fR(8) will attempt to authenticate users using the NTLM encrypted password response\&. If disabled, either the lanman password hash or an NTLMv2 response will need to be sent by the client\&.
+
+
+If this option, and \fBlanman auth\fR are both disabled, then only NTLMv2 logins will be permited\&. Not all clients support NTLMv2, and most will require special configuration to us it\&.
+
+
+Default : \fBntlm auth = yes\fR
+
+
+.TP
+nt pipe support (G)
+此布尔量选项控制是否让\fBsmbd\fR(8)允许Windows NT用户联接到NT的特殊SMB管道\fBIPC$\fR.这通常是开发者所用的调试项,其它用户可以不管.
+
+
+缺省设置: \fBnt pipe support = yes\fR
+
+
+.TP
+nt status support (G)
+This boolean parameter controls whether \fBsmbd\fR(8) will negotiate NT specific status support with Windows NT/2k/XP clients\&. This is a developer debugging option and should be left alone\&. If this option is set to \fBno\fR then Samba offers exactly the same DOS error codes that versions prior to Samba 2\&.2\&.3 reported\&.
+
+
+You should not need to ever disable this 选项。
+
+
+缺省设置: \fBnt status support = yes\fR
+
+
+.TP
+null passwords (G)
+Allow or disallow client access to accounts that have null passwords\&.
+允许或禁止用户以空口令使用账号.
+
+参见\fBsmbpasswd\fR(5).
+
+
+缺省设置: \fBnull passwords = no\fR
+
+
+.TP
+obey pam restrictions (G)
+When Samba 3\&.0 is configured to enable PAM support (i\&.e\&. --with-pam), this parameter will control whether or not Samba should obey PAM's account and session management directives\&. The default behavior is to use PAM for clear text authentication only and to ignore any account or session management\&. Note that Samba always ignores PAM for authentication in the case of \fIencrypt passwords = yes\fR\&. The reason is that PAM modules cannot support the challenge/response authenticati [...]
+
+
+缺省设置: \fBobey pam restrictions = no\fR
+
+
+.TP
+only guest (S)
+与 \fI guest only\fR同义.
+
+
+.TP
+only user (S)
+此布尔量选项控制是否允许当前进行联接所用的用户名没有列在\fIuser\fR列表中.缺省情况下此项是被禁止了,这样用户只要提供服务需要的用户名就可以了.设置这个选项将强制服务器使用\fIuser\fR列表中的登录用户名,这只在共享级安全中有效。
+
+
+要注意的是上面的说法也表明了samba并不会从服务名而推演出相应的用户名.这样的话对于[homes]段就比较麻烦了.要避免麻烦的话需要用\fBuser = %S\fR,这句就表明你的用户列表\fIuser\fR正好就是这个服务资源名,这时的主目录名就是用户名.
+
+
+参见 \fIuser\fR 选项。
+
+
+缺省设置: \fBonly user = no\fR
+
+
+.TP
+oplock break wait time (G)
+此项调整性的选项以适应在Windows 9x和WinNT中可能出现的错误.当用户发起一个会导致oplock暂停请求(oplock break request)的SMB对话时,如果samba对其响应太快的话,客户端将会失败并且不能响应此请求.这个可调整的选项(以毫秒为单位)是一个samba在向这样的客户发送oplock暂停请求前等待的时间量.
+
+
+\fB除非你理解了samba的oplock代码,否则不要改变这个选项!\fR
+
+
+缺省设置: \fBoplock break wait time = 0\fR
+
+
+.TP
+oplock contention limit (S)
+这是个\fB非常\fR高级的\fBsmbd\fR(8)调整选项,用以改进在多个用户争夺相同文件时oplocks认可操作的效率.
+
+简单地说,这个选项指定了一个数字,如果争夺相同文件的用户数量超过了此设定极限的话,即使有请求,\fBsmbd\fR(8)也不再认可oplock的操作了.这样的话\fBsmbd\fR就象Windows NT一样的运行.
+
+
+\fB除非你理解了samba的oplock代码,否则不要改变这个选项! \fR
+
+
+缺省设置: \fBoplock contention limit = 2\fR
+
+
+.TP
+oplocks (S)
+此布尔量通知\fBsmbd\fR是否对当前请求的共享资源上的文件打开操作启用oplocks(机会性的锁定操作).oplock代码可以明显改善访问samba服务器文件的速度(approx.30% 甚至更多).它允许本地缓存文件,对于不可信赖的网络环境来说可能需要禁止掉这个选项(在Windows NT服务器上它是缺省打开的).请参考samba \fIdocs/\fR目录下的\fISpeed.txt\fR文件.
+
+
+oplocks会有选择性地关闭每一个基本共享资源上的特定文件.参见\fI veto oplock files\fR 选项.在有些系统上会通过最底层的操作系统确认oplocks.这样就可以在所有的访问与oplocked文件中进行数据同步,而不管此访问是通过samba或NFS或者是本地的UNIX进程.参见\fIkernel oplocks\fR选项查看细节.
+
+
+参见 \fIkernel oplocks\fR 以及 \fI level2 oplocks\fR parameters.
+
+
+缺省设置: \fBoplocks = yes\fR
+
+
+.TP
+os2 driver map (G)
+The parameter is used to define the absolute path to a file containing a mapping of Windows NT printer driver names to OS/2 printer driver names\&. The format is:
+
+
+<nt driver name> = <os2 driver name>\&.<device name>
+
+
+For example, a valid entry using the HP LaserJet 5 printer driver would appear as \fBHP LaserJet 5L = LASERJET.HP LaserJet 5L\fR\&.
+
+
+The need for the file is due to the printer driver namespace problem described in ???\&. For more details on OS/2 clients, please refer to ???\&.
+
+
+缺省设置: \fBos2 driver map = <空字符串>\fR
+
+
+.TP
+os level (G)
+这个整数值控制在浏览器选举中Samba宣布它本身是什么系统级别. 此选项的值决定了\fBnmbd\fR(8是否有机会成为本地广播区域内工作组\fI WORKGROUP\fR中的主控浏览器.
+
+\fB注意\fR: 默认情况下,Samba将在本地主控浏览器选举中超越所有M$操作系统并且获胜,除非还有Windows NT4.0/2000 域控制器。这意味着Samba主机的错误配置将使一个子网的浏览无效。参见Samba \fIdocs/\fR 目录中的\fIBROWSING.txt \fR来获取详细信息。
+
+
+缺省设置: \fBos level = 20\fR
+
+
+示例: \fBos level = 65 \fR
+
+
+.TP
+pam password change (G)
+With the addition of better PAM support in Samba 2\&.2, this parameter, it is possible to use PAM's password change control flag for Samba\&. If enabled, then PAM will be used for password changes when requested by an SMB client instead of the program listed in \fIpasswd program\fR\&. It should be possible to enable this without changing your \fIpasswd chat\fR parameter for most setups\&.
+
+
+缺省设置: \fBpam password change = no\fR
+
+
+.TP
+panic action (G)
+此项是一个samba开发者使用的选项以允许当\fBsmbd\fR(8)或\fBsmbd\fR(8)程序崩溃时可以调用一个系统命令.通常这种功能被用于发出对问题的警告.
+
+
+缺省设置: \fBpanic action = <空字符串>\fR
+
+
+示例: \fBpanic action = "/bin/sleep 90000"\fR
+
+
+.TP
+paranoid server security (G)
+Some version of NT 4\&.x allow non-guest users with a bad passowrd\&. When this option is enabled, samba will not use a broken NT 4\&.x server as password server, but instead complain to the logs and exit\&.
+
+
+Disabling this option prevents Samba from making this check, which involves deliberatly attempting a bad logon to the remote server\&.
+
+
+缺省设置: \fBparanoid server security = yes\fR
+
+
+.TP
+passdb backend (G)
+This option allows the administrator to chose which backends to retrieve and store passwords with\&. This allows (for example) both smbpasswd and tdbsam to be used without a recompile\&. Multiple backends can be specified, separated by spaces\&. The backends will be searched in the order they are specified\&. New users are always added to the first backend specified\&.
+
+
+This parameter is in two parts, the backend's name, and a 'location' string that has meaning only to that particular backed\&. These are separated by a : character\&.
+
+
+Available backends can include: .TP 3 \(bu \fBsmbpasswd\fR - The default smbpasswd backend\&. Takes a path to the smbpasswd file as an optional argument\&. .TP \(bu \fBtdbsam\fR - The TDB based password storage backend\&. Takes a path to the TDB as an optional argument (defaults to passdb\&.tdb in the \fIprivate dir\fR directory\&. .TP \(bu \fBldapsam\fR - The LDAP based passdb backend\&. Takes an LDAP URL as an optional argument (defaults to \fBldap://localhost\fR) LDAP connections shou [...]
+
+
+缺省设置: \fBpassdb backend = smbpasswd\fR
+
+
+示例: \fBpassdb backend = tdbsam:/etc/samba/private/passdb.tdb smbpasswd:/etc/samba/smbpasswd\fR
+
+
+示例: \fBpassdb backend = ldapsam:ldaps://ldap.example.com\fR
+
+
+示例: \fBpassdb backend = mysql:my_plugin_args tdbsam\fR
+
+
+.TP
+passwd chat (G)
+这个字串控制在\fBsmbd\fR(8)和本地口令更改程序间更用户口令时发生的\fB"chat"\fR对话.字符串描述一个应答接收对的序列,让\fBsmbd\fR(8)用于决定对\fIpasswd program\fR发送并等待接收哪些具体的内容.如果没有收到预计的输出时不会更改口令.
+
+
+这个chat序列一般发生在特定的主机上,取决于本地口令控制的方法(就象NIS或者别的).
+
+
+注意这个选项仅仅在\fIunix password sync\fR选项设置为\fByes\fR的时候有用。当smbpasswd文件中的SMB口令被更改时是\fB以root身份\fR运行的,不必输入旧密码文本. 这意味着root必须可以在不知道用户密码时重置他的密码。在NIS/YP 中这意味着passwd程序必须在NIS主控服务器上运行。
+
+
+这个字符串可以包含\fI%n\fR宏,用于替换新密码。chat序列还可以包含标准宏\fB\\\\n\fR, \fB\\\\r\fR, \fB\\\\t\fR 和\fB\\\\s\fR 来给出换行,回车,tab和空格。chat序列字符串还可以包含'*' 来匹配任何字符序列。双引号用来将带空格的字符串设为一个单独的字符串。
+
+
+如果在对话序列的任何部分发送的字符串为一个句号".",那么不会发送任何内容.同样,如果等待接收部分有字符串是一个".",那么不等待任何的内容.
+
+
+如果\fIpam password change\fR参数设置为\fByes\fR,chat可以以任何顺序进行,没有特定的输出,是否成功可以由PAM结果得到。在PAM会话中宏\\n被忽略。
+
+
+参见 \fIunix password sync\fR, \fI passwd program\fR , \fIpasswd chat debug\fR 和 \fIpam password change\fR.
+
+
+缺省设置: \fBpasswd chat = *new*password* %n\\n *new*password* %n\\n *changed*\fR
+
+
+示例: \fBpasswd chat = "*Enter OLD password*" %o\\n "*Enter NEW password*" %n\\n "*Reenter NEW password*" %n\\n "*Password changed*"\fR
+
+
+.TP
+passwd chat debug (G)
+此布尔量指定口令对话脚本选项是否以 \fBdebug\fR模式运行.在调试模式下,发送和接收的口令对话字符串会打印到\fIdebug level\fR为100时的\fBsmbd\fR(8)记录文件中.由于在\fBsmbd\fR 记录中允许使用明文口令,所以这是个危险的选项.不过这个选项可以帮助Samba管理员在调用\fIpasswd program\fR设好的口令程序时调试其\fIpasswd chat\fR 对话脚本,并且应该在完成以后把它关闭.这个选项在设置了\fIpam password change\fR选项时无效。缺省情况下这个选项是关闭的.
+
+
+参见 \fIpasswd chat\fR , \fIpam password change\fR , \fIpasswd program\fR .
+
+
+缺省设置: \fBpasswd chat debug = no\fR
+
+
+.TP
+passwd program (G)
+指定用于设定UNIX用户口令的程序名.出现\fI%u\fR的地方表示以用户名替换.在调用口令更改程序前会先检查用户名是否存在.
+
+
+需要注意的是很多口令程序强调口令要\fB合法\fR,例如应该有最小长度或者是字母与数字的混合.这可能在一些客户端(如WfWg)总将口令转为大写发送时,引起一些问题.
+
+
+\fB注意\fR如果把\fIunix password sync\fR选项设为\fByes\fR的话,在改变smbpasswd文件中的SMB口令时是\fB以root身份\fR调用改口令程序的.如果口令更改失败的话,\fBsmbd\fR对SMB口令的更改也会失败,这是设计时的机制.
+
+
+如果设定了\fIunix password sync\fR选项的话,指定口令程序时\fB必须使用\fB所有\fR程序的绝对路径,必须检查安全问题.缺省的\fIunix password sync\fR选项值是 \fBno\fR.
+
+
+参见 \fIunix password sync\fR.
+
+
+缺省设置: \fBpasswd program = /bin/passwd\fR
+
+
+示例: \fBpasswd program = /sbin/npasswd %u\fR
+
+
+.TP
+password level (G)
+在一些客户端/服务器群体中使用大小写混合口令存在着困难.其中比较麻烦的一类客户是WfWg,因为它在使用LANMAN1协议时出于某些理由而强调要使用大写口令.不过当使用COREPLUS时不要修改它!
+另外在Windows95/98 操作系统中会出问题: 即使选择了会话中的NTLM0.12协议,这些客户端也会将明文口令转为大写。
+
+
+此选项定义了口令字中大写字母的最大数量.
+
+
+例如,假定给出的口令是"FRED".如果\fI password level\fR设为1的话,在"FRED"验证失败时会尝试以下的口令组合:
+
+"Fred", "fred", "fRed", "frEd","freD"
+
+如果\fIpassword level\fR设为2的话,就会尝试下面的组合:
+
+"FRed", "FrEd", "FreD", "fREd", "fReD", "frED", \&.\&.
+
+等等。
+
+
+把此选项设成的值越高,相对单一大小写口令来说大小写混合的口令越容易匹配。.不过,要小心使用这个选项会降低安全性,同时增加处理新联接所花的时间量.
+
+
+如果把选项设为0时会使处理口令时只作两种尝试 - 先与给出的口令比较,再比较它的全部小写形式.
+
+
+缺省设置: \fBpassword level = 0\fR
+
+
+示例: \fBpassword level = 4\fR
+
+
+.TP
+password server (G)
+通过在这里指定其它的SMB服务器或者活动目录域控制器,同时使用\fBsecurity = [ads|domain|server]\fR,能把联接samba的用户名/口令合法性验证交给指定的远程服务器去干.
+
+
+此选项设定上面所说的其它口令服务器的名字或者IP地址. 新的语法允许在连接到ADS realm服务器时指定端口号。要指定默认的LDAP 389端口之外的号码,可以将端口号放在名字或ip后面,中间用一个冒号连接(比如说,192.168.1.100:389)。如果你不指定一个端口,Samba将使用标准的LDAP端口tcp/389. 注意端口号在WindowsNT4.0 域或者netbios连接的服务器上无效
+
+如果参数是一个名称,它将使用 \fIname resolve order\fR 中指定的方式来解析。
+
+
+口令服务器应该是使用"LM1.2X002"或"LM NT 0.12"协议的主机,而且它本身必须使用用户级安全模式.
+
+
+注意:使用口令服务器表明你的UNIX主机(就是运行Samba的那台)就只与你指定的口令服务器具有相同的安全等级了.\fB在没有完全信任的情况下不要选择使用其它的口令服务器\fR.
+
+
+不要把口令服务指向Samba服务器本身,这产生一个循环而去查找你的Samba服务器,导致死锁.
+
+
+在指定口令服务器名时可以使用标准的替换符,而实际能用的可能只是\fI%m\fR这一个,这个替换符说明Samba服务器会用联入的客户作为口令服务器.如果这样用的话说明你非常信任你的客户,同时最好以主机允许策略对他们进行限制!
+
+
+如果把安全级\fIsecurity\fR选项设为\fBdomain\fR或者\fBads\fR的话,指定的其它口令服务器必须是在这个Domain中的一个主域控制器或备份域控制器或者'*'.另外指定字符'*'的话就以samba服务器会在整个域中使用加密验证RPC调用来验证用户登录.使用\fB security = domain\fR的好处是,如果指定了几个\fIpassword server\fR时,\fBsmbd \fR会对每一个进行尝试直到它收到回应,对于初始服务器当机时这就很有用了.
+
+
+如果\fIpassword server\fR选项设为字符'*'的话,samba将尝试通过查询\fBWORKGROUP<1C>\fR名字来自动查找主或者备份域控制器并联系经过名字解析得到的IP地址列表中的每个服务器来进行用户验证.
+
+
+如果服务器列表包含名字或IP同时也包含'*'时,列表将视为首选域控制器的列表,但是也会添加一个自动的对所有其余DC的查找。Samba不会通过定位最近的DC来优化这张列表。
+
+
+如果\fIsecurity\fR是\fBserver\fR的话,会有一些安全级为\fBsecurity = domain\fR时所没有的限制:
+
+
+如果在\fIpassword server\fR选项中指定了几个口令服务器的话,\fBsmbd\fR在联接具体的服务器时会失败,也不能验证任何的用户账号.这是安全级为\fBsecurity = server \fR模式时SMB/CIFS协议的一个限制,并且Samba无法修改.
+
+
+如果把Windows NT服务器作为口令服务器,你必须确保用户可以从Samba服务器上进行登录.当使用\fB security = server\fR模式时,网络登录看起来是从那里处理的,而不是从用户工作站.
+
+参见 \fIsecurity \fR 选项。
+
+
+缺省设置: \fBpassword server = <空字符串>\fR
+
+
+示例: \fBpassword server = NT-PDC, NT-BDC1, NT-BDC2, *\fR
+
+
+示例: \fBpassword server = windc.mydomain.com:389 192.168.1.101 *\fR
+
+
+示例: \fBpassword server = *\fR
+
+
+.TP
+path (S)
+此项指定给出的服务项所用的系统路径.在服务项具有可打印属性时,打印假脱机数据会先存放在这个路径所指的位置中.
+This parameter specifies a directory to which the user of the service is to be given access\&. In the case of printable services, this is where print data will spool prior to being submitted to the host for printing\&.
+
+
+对于那些要对访客提供的可打印服务来说,服务项应该设为只读,而且路径应该设为全局可写属性并具有粘性(s)位.这当然不是强制性的,不过不这样做的话可能会无法得到你所希望的结果.
+
+
+路径出现\fI%u\fR的地方将以正处于联接状态的UNIX用户名来替换;同样出现\fI%m\fR的地方将以请求联接的主机NetBIOS名替换.在设定伪主目录时,这种替换项很有用的.
+
+
+所指定的路径都是基于根目录\fIroot dir\fR(如果有的话)的.
+
+
+缺省设置: \fB无\fR
+
+
+示例: \fBpath = /home/fred\fR
+
+
+.TP
+pid directory (G)
+This option specifies the directory where pid files will be placed\&.
+
+
+缺省设置: \fBpid directory = ${prefix}/var/locks\fR
+
+
+示例: \fBpid directory = /var/run/\fR
+
+
+.TP
+posix locking (S)
+The \fBsmbd\fR(8) daemon maintains an database of file locks obtained by SMB clients\&. The default behavior is to map this internal database to POSIX locks\&. This means that file locks obtained by SMB clients are consistent with those seen by POSIX compliant applications accessing the files via a non-SMB method (e\&.g\&. NFS or local file access)\&. You should never need to disable this 选项。
+
+
+缺省设置: \fBposix locking = yes\fR
+
+
+.TP
+postexec (S)
+此项指定在断开服务时运行的一个命令.它使用通常的替换项.此命令在一些系统中可能是以root身份来运行的.
+
+
+一个有趣的示例,用于卸载服务器资源:
+
+
+\fBpostexec = /etc/umount /cdrom\fR
+
+
+参见 \fIpreexec\fR.
+
+
+缺省设置: \fB无 (不执行命令)\fR
+
+
+示例: \fBpostexec = echo \"%u disconnected from %S from %m (%I)\" >> /tmp/log\fR
+
+
+.TP
+preexec (S)
+此项指定在联接到服务时运行一个命令.通常这也可以用一些替换项.
+
+
+一个有趣的示例,在用户每一次登录时向对方发送一个欢迎信息:(一条格言?)
+
+
+\fBpreexec = csh -c 'echo \"Welcome to %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' & \fR
+
+
+当然,一段时间以后这类信息可能就比较讨厌了:-)
+
+
+参见 \fIpreexec close\fR 和 \fIpostexec \fR.
+
+
+缺省设置: \fB无 (不执行命令)\fR
+
+
+示例: \fBpreexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/log\fR
+
+
+.TP
+preexec close (S)
+此布尔量选项控制是否从\fIpreexec \fR返回的非零代码会关闭所联接的服务.
+
+
+缺省设置: \fBpreexec close = no\fR
+
+
+.TP
+prefered master (G)
+这是为拼写错误准备的。请查看 \fI preferred master\fR :-)
+
+
+.TP
+preferred master (G)
+此布尔量选项控制\fBnmbd\fR(8)是否作为工作组里的首选主浏览器.
+
+
+如果设此选项为\fByes\fR时,\fBnmbd\fR会在启动时强制进行一次选举,它有一些有利条件来赢得选举.推荐把此选项与\fB domain master = yes\fR联合使用,这样\fBnmbd\fR可以保证成为一个域浏览器.
+
+
+小心使用此项,因为如果在相同的子网内有多个主机(不管是Samba服务器,Windows95还是NT)参加选举的话,他们每个都会周期性不断地尝试成为本地主浏览器,这时会造成不必须的广播交通流量并降低浏览性能.
+
+参见 \fIos level\fR.
+
+
+缺省设置: \fBpreferred master = auto\fR
+
+
+.TP
+preload (G)
+此选项定义了要自动加入到浏览列表的服务项清单.这对于homes和printers服务项非常有用,否则这些服务将是不可见的.
+
+注意,如果你想加载printcap里所有的打印机,那么用\fIload printers\fR会更容易.
+
+缺省设置: \fBno preloaded services\fR
+
+
+示例: \fBpreload = fred lp colorlp\fR
+
+
+.TP
+preload modules (G)
+This is a list of paths to modules that should be loaded into smbd before a client connects. This improves the speed of smbd when reacting to new connections somewhat\&.
+
+
+缺省设置: \fBpreload modules = \fR
+
+
+示例: \fBpreload modules = /usr/lib/samba/passdb/mysql.so+++ \fR
+
+
+.TP
+preserve case (S)
+此项控制建立新的文件时取名是否使用用户传递的大小写,还是强制使用\fIdefault case \fR.
+
+
+缺省设置: \fBpreserve case = yes\fR
+
+
+参见NAME MANGLING段中的完整讨论.
+
+.TP
+printable (S)
+如果此项设为\fByes\fR,那么用户可以读写并发送打印缓存文件到服务项指定的目录中.
+
+
+注意一个可打印的服务\fB总是\fR允许通过缓存打印数据的方法向服务项路径中执行写操作(需要用户有可写权限).\fIread only\fR选项控制只允许不可打印地访问资源.
+
+
+缺省设置: \fBprintable = no\fR
+
+
+.TP
+printcap (G)
+与 \fI printcap name\fR 同义.
+
+
+.TP
+printcap name (S)
+此项用于覆盖掉编译时产生的缺省printcap名(通常是\fI/etc/printcap\fR).参见[printers]段的讨论,它说明了为什么要这样做的理由.
+
+To use the CUPS printing interface set \fBprintcap name = cups \fR\&. This should be supplemented by an addtional setting printing = cups in the [global] section\&. \fBprintcap name = cups\fR will use the "dummy" printcap created by CUPS, as specified in your CUPS configuration file\&.
+
+
+在可以用\fBlpstat\fR命令列出可用打印机的列表的System V系统上,可以用\fBprintcap name = lpstat \fR来自动获得可用打印机列表.这对于配置samba时定义成SYSV的系统(这就包括了很多基于System V的系统)来说是缺省情况.如果在这些系统上设好\fIprintcap name\fR为\fIlpstat\fR的话,samba就会执行\fBlpstat -v\fR并尝试分析输出信息以获得一份打印机列表.
+
+通常最小的printcap文件看起来就象下面这样:
+
+.nf
+print1|My Printer 1
+print2|My Printer 2
+print3|My Printer 3
+print4|My Printer 4
+print5|My Printer 5
+.fi
+
+
+我们看到'|'符号用来定义打印机的别名.第二个带有空格的别名其实是提示Samba它是注释.
+
+
+在AIX中默认的printcap文件名是\fI/etc/qconfig\fR. 如果在文件名中找到\fIqconfig\fR字样,Samba将假定文件是AIX 的\fIqconfig\fR格式。
+
+缺省设置: \fBprintcap name = /etc/printcap\fR
+
+示例: \fBprintcap name = /etc/myprintcap\fR
+
+
+.TP
+print command (S)
+当一个打印作业完全缓冲到了服务项时,此项指定的命令就能过调用\fBsystem()\fR来处理那些缓存文件.通常我们指定典型的命令来发送缓存文件到主机的打印子系统,不过也不一定要这样.服务器不会删除那些缓存文件,所以你指定的任何命令都应当在处理完以后删除文件,否则的话就需要手工来删除旧的缓存文件了.
+
+打印命令是一个简单的文本字符串。它可以在宏替换之后逐字传递给系统。
+
+
+%s, %f - 缓冲文件名路径
+
+
+%p - 适当的打印机名
+
+
+%J - 客户提交的作业名
+
+
+%c - 缓冲的作业需要打印的页数
+
+%z -缓冲的打印作业的大小(以字节计)
+
+
+打印命令至少\fB必须\fR包含\fI%s\fR或\fI%f\fR替换符中的一个,而\fI%p\fR是个可选项.在提交打印作业时,如果不提供打印机名的话,\fI%p\fR替换符会从打印命令中删掉.
+
+
+如果在[global]段中指定了打印命令,它将被用于任何可打印性的服务项,而不再需要在它们之中单独指定了.
+
+
+如果既没有对可打印性服务项单独指定打印命令又没有指定一个全局的打印命令时,假脱机文件虽然会建立却不会被处理也不会被删除(这很重要哦).
+
+
+注意在某些UNIX上以\fBnobody\fR账号身份进行打印会导致失败.如果发生了这样的情况请建立一个单独的有打印权的访客账号并在[global]段里设置\fIguest account\fR选项.
+
+
+如果你明白命令是直接传递给shell的话,你可以组织非常复杂的打印命令.举例来说,下面的命令会记录一个打印作业,打印这个文件然后删掉它.注意这里的';'是shell脚本命令常用的分隔符.
+
+
+\fBprint command = echo Printing %s >> /tmp/print.log; lpr -P %p %s; rm %s\fR
+
+你可能必须根据平时在系统上打印文件的方式来改变这个命令.缺省情况下,此选项会根据\fIprinting\fR选项的设定而变化.
+
+缺省设置: 对于 \fBprinting = BSD, AIX, QNX, LPRNG 或者 PLP :\fR
+
+
+\fBprint command = lpr -r -P%p %s\fR
+
+
+对于 \fBprinting = SYSV 或者 HPUX :\fR
+
+
+\fBprint command = lp -c -d%p %s; rm %s\fR
+
+
+对于 \fBprinting = SOFTQ :\fR
+
+
+\fBprint command = lp -d%p -s %s; rm %s\fR
+
+
+对于 \fBprinting = CUPS :\fR
+
+如果Samba 编译时加入了libcups, 那么\fIprintcap=cups\fR将使用CUPS API来提交作业等等。否则它用-oraw选项,使用SystemV命令来打印,也就是说它会用\fBlp -c -d%p -o raw; rm %s\fR.当\fBprinting = cups\fR, 并且Samba编译时加入了libcups时,任何手工设置的打印命令将被忽略。
+
+
+示例: \fBprint command = /usr/local/samba/bin/myprintscript %p %s\fR
+
+
+.TP
+printer (S)
+与 \fI printer name\fR 同义。
+
+
+.TP
+printer admin (S)
+This is a list of users that can do anything to printers via the remote administration interfaces offered by MS-RPC (usually using a NT workstation)\&. Note that the root user always has admin rights\&.
+
+
+缺省设置: \fBprinter admin = <空字符串>\fR
+
+
+示例: \fBprinter admin = admin, @staff\fR
+
+
+.TP
+printer name (S)
+此选项指定可打印性服务项用来打印缓存作业数据的打印机.
+
+如果在[global]段里指定了打印机名称,那么给出的打印机就用于任何可打印性服务项而不需个别的指定打印机名称了.
+
+
+缺省设置: \fB空 (在很多系统中可能是 \fBlp\fR )\fR
+
+
+示例: \fBprinter name = laserwriter\fR
+
+
+.TP
+printing (S)
+此选项控制系统上如何解释打印机状态信息,而如果在[global]段中定义,它也会影响\fIprint command\fR,\fIlpq command\fR,\fIlppause command\fR,\fIlpresume command\fR和\fIlprm command\fR这些选项的缺省值
+
+通常系统支持九种打印机风格,它们是\fBBSD\fR, \fBAIX\fR, \fBLPRNG\fR, \fBPLP\fR, \fBSYSV\fR, \fBHPUX\fR, \fBQNX\fR, \fBSOFTQ\fR,还有 \fBCUPS\fR
+
+要在系统上查看使用了不同的选项后其它打印命令的缺省值,可以用\fBtestparm\fR(1)程序.
+
+此项可以在每一台打印机上分别设置.
+
+
+参见[printers]段的讨论。
+
+
+.TP
+print ok (S)
+与 \fIprintable\fR 同义。
+
+.TP
+private dir (G)
+This parameters defines the directory smbd will use for storing such files as \fIsmbpasswd\fR and \fIsecrets\&.tdb\fR\&.
+
+
+Default :\fBprivate dir = ${prefix}/private\fR
+
+
+.TP
+profile acls (S)
+This boolean parameter controls whether \fBsmbd\fR(8) This boolean parameter was added to fix the problems that people have been having with storing user profiles on Samba shares from Windows 2000 or Windows XP clients\&. New versions of Windows 2000 or Windows XP service packs do security ACL checking on the owner and ability to write of the profile directory stored on a local workstation when copied from a Samba share\&.
+
+
+When not in domain mode with winbindd then the security info copied onto the local workstation has no meaning to the logged in user (SID) on that workstation so the profile storing fails\&. Adding this parameter onto a share used for profile storage changes two things about the returned Windows ACL\&. Firstly it changes the owner and group owner of all reported files and directories to be BUILTIN\\\\Administrators, BUILTIN\\\\Users respectively (SIDs S-1-5-32-544, S-1-5-32-545)\&. Second [...]
+
+
+Note that if you have multiple users logging on to a workstation then in order to prevent them from being able to access each others profiles you must remove the "Bypass traverse checking" advanced user right\&. This will prevent access to other users profile directories as the top level profile directory (named after the user) is created by the workstation profile code and has an ACL restricting entry to the directory tree to the owning user\&.
+
+
+缺省设置: \fBprofile acls = no\fR
+
+
+.TP
+protocol (G)
+与 \fImax protocol\fR 同义
+
+
+.TP
+public (S)
+与 \fIguest ok\fR 同义
+
+
+.TP
+queuepause command (S)
+定义服务器暂停打印队列时要执行的命令.
+
+
+此命令应该是个只用打印机名作为选项的程序或脚本,以便用来停止打印队列,使打印作业不再向打印机发送.
+
+
+此命令不支持Windows for Workgroups,但可以在Windows 95和NT的打印机窗口中发送.
+
+此处用替换符\fI%p\fR可以替代打印机名称.否则这个名称将被放置在命令后面.
+
+注意,在命令中使用绝对路径是个好习惯,因为不一定可以获得服务器的PATH变量.
+
+
+缺省设置: \fB依赖于 \fIprinting\fR 选项的设置\fR
+
+
+示例: \fBqueuepause command = disable %p\fR
+
+
+.TP
+queueresume command (S)
+定义服务器恢复暂停了的打印队列时要执行的命令.就是用于恢复因为上面的选项(\fI queuepause command\fR)而导致的结果的.
+
+此命令应该是个只用打印机名作为选项的程序或脚本,以便用来恢复打印队列,使打印作业继续向打印机发送.
+
+
+此命令不支持Windows for Workgroups,但可以在Windows 95和NT的打印机窗口中发送.
+
+此处用替换符\fI%p\fR可以替代打印机名称.否则这个名称将被放置在命令后面.
+
+注意,在命令中使用绝对路径是个好习惯,因为不一定可以获得服务器的PATH变量.
+
+
+缺省设置: \fB依赖于 \fIprinting\fR 选项的设置\fR
+
+示例: \fBqueuepause command = enable %p\fR
+
+.TP
+read bmpx (G)
+此布尔量选项控制是否让\fBsmbd\fR(8)支持"多工读块"(Read Block Multiplex)的SMB.现在这种方式已经很少用了,所以缺省是\fBno\fR.一般你不需要设定此选项.
+
+
+缺省设置: \fBread bmpx = no\fR
+
+
+.TP
+read list (S)
+此处给出对服务项有只读权限的用户清单.如果正在联接的用户属于此列表,那么他们将没有写权限,此时是不管\fIread only\fR选项是否设置的.此列表可以包括用在\fI invalid users\fR 选项中描述的语法定义的组名称.
+
+
+参见 \fI write list\fR 和 \fIinvalid users\fR 选项。
+
+
+缺省设置: \fBread list = <空字符串>\fR
+
+
+示例: \fBread list = mary, @students\fR
+
+
+.TP
+read only (S)
+注意它与 \fIwriteable\fR 反义.
+
+如果这个参数是\fByes\fR, 那么服务的用户不能建立或修改服务目录中的文件。
+
+注意一个可打印的服务(\fBprintable = yes\fR) 的目录\fB 总是\fR 可写的(需要用户可写权限)但是只能通过缓冲操作来写.
+
+
+缺省设置: \fBread only = yes\fR
+
+
+.TP
+read raw (G)
+此选项控制着是否让服务器在传送数据到客户端时支持读取原始的SMB请求.
+
+
+如果允许,那么它会以65535 字节为单位来读取一个数据包的65535字节.这会带来较多的性能方面的好处.
+
+
+但是,有些客户端使用不正确的包容量(虽然是可允许的),或者它们不支持大容量包,所以对这些客户端你应该禁止这一选项.
+
+通常将此选项作为一种系统调试工具,而且严格来说不应修改.参见\fIwrite raw\fR选项.
+
+
+缺省设置: \fBread raw = yes\fR
+
+
+.TP
+read size (G)
+此项影响着磁盘读/写与网络读/写的轮流交替.如果在若干个SMB命令(通常是SMBwrite,SMBwriteX和SMBreadbraw)中传送的数据量超过此项设定的值时,服务器开始就会在从网络接收整个数据包之前进行写操作;在执行SMBreadbraw的情况下,服务器在从磁盘上读出所有数据之前就开始向网络中写数据.
+
+
+在磁盘与网络的访问速度相近时,这种交迭式的工作就会做得非常好,不过当其中一类设备的速度大大高于另一类时,它只会有那么一点点效果.
+
+缺省的值是16384,但没有做过测试最优值的实验。根据已经了解的情况来看,在使用不同的系统时,最优化值的差别很大.一个大于65536的值是没有任何意义的,它只会造成不必要的内存分配.
+
+
+缺省设置: \fBread size = 16384\fR
+
+
+示例: \fBread size = 8192\fR
+
+
+.TP
+realm (G)
+This option specifies the kerberos realm to use\&. The realm is used as the ADS equivalent of the NT4 \fBdomain\fR\&. It is usually set to the DNS name of the kerberos server\&.
+
+
+缺省设置: \fBrealm = \fR
+
+
+示例: \fBrealm = mysambabox.mycompany.com\fR
+
+
+.TP
+remote announce (G)
+此项允许你设置\fBnmbd\fR(8)周期性地向任意工作组的任意IP地址申明自己的存在.
+
+
+如果你要samba服务器处在一个通常浏览传播规则没有正常工作的远程工作组里时,用此项就很有用了.此远程工作组可以位于IP包到得到的任何地方.
+
+
+例如: 
+
+\fBremote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF\fR
+
+以上这行说明\fBnmbd\fR 对两个给出的使用工作组名的IP地址进行申明.如果你只用了IP地址的话,那么会用\fIworkgroup\fR选项里给出的工作组名来替代.
+
+你选用的IP地址通常应该是远程网络的广播地址,不过也可以用配置稳定的网络中的已知主浏览器IP地址.
+
+
+缺省设置: \fBremote announce = <空字符串>\fR
+
+
+.TP
+remote browse sync (G)
+此项允许你设定\fBnmbd\fR(8)周期性地同步位于远程(remote segment)的Samba主浏览器上的浏览列表.同时也允许你收集位于具有交叉路由子网中主浏览器上的浏览列表.这是以一种和其他非Samba的服务器不兼容的方式进行的。
+
+
+This is useful if you want your Samba server and all local clients to appear in a remote workgroup for which the normal browse propagation rules don't work\&. The remote workgroup can be anywhere that you can send IP packets to.
+
+
+例如: 
+
+\fBremote browse sync = 192.168.2.255 192.168.4.255\fR
+
+
+以上行会使\fBnmbd\fR向位于指定子网或地址中的主浏览器请求同步他们本地服务器中的浏览列表
+
+
+你选用的IP地址通常应该是远程网络的广播地址,不过也可以用配置非常稳定的网络中的已知主浏览器IP地址.如果给出一个主机的IP地址,或者主控浏览器事实上在自己的网段中, samba就\fB不\fR验证远程主机是否有效、是否正在侦听了。
+
+
+缺省设置: \fBremote browse sync = <空字符串>\fR
+
+
+.TP
+restrict anonymous (G)
+这个选项限制了是否在匿名连接中返回用户和组列表信息,仿照了Windows2000 和NT在注册表键值\fBHKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\LSA\\RestrictAnonymous\fR 中的做法。设置为0的时候,任何请求都返回用户和组列表。设置为1的时候,只有认证的用户可以获得用户和组列表。设置为2的时候,只有Windows2000/XP和Samba支持,不允许匿名连接。这样做会阻止需要匿名操作的M$或第三方程序运行。
+
+The security advantage of using restrict anonymous = 1 is dubious, as user and group list information can be obtained using other means.
+
+The security advantage of using restrict anonymous = 2 is removed by setting \fIguest ok\fR = yes on any share.
+
+缺省设置: \fBrestrict anonymous = 0\fR
+
+
+.TP
+root (G)
+与 \fIroot directory"\fR 同义
+
+
+.TP
+root dir (G)
+与 \fIroot directory"\fR 同义.
+
+
+.TP
+root directory (G)
+服务器将在启动时对此项所设之目录进行\fBchroot()\fR(也就是改变根目录) 操作.对于安全操作来说,这并不是十分必要的.如果没有这步操作,服务器会拒绝对服务项以外的文件进行访问.同时也检查并拒绝那些文件系统其它部分的软链接或者尝试在其它目录(取决于选项\fIwide links\fR的设置情况)中使用".."这些操作.
+
+
+加入一个\fIroot directory\fR,注意不是实际的"/"目录,可以增加额外的安全级别,但是代价就高了.这样完全确保了所指定的\fIroot directory\fR及所属子目录外的文件都是不能访问的,\fB包括\fR服务器正常运行时所需的一些文件也是如此.因此要想维护服务器整体的可操作性,你需要镜像一些系统文件到所指定的\fIroot directory\fR下.特别是要镜像 \fI/etc/passwd\fR文件或此文件的子集,如果需要的话,任何打印操作要用到的二进制文件或配置文件也要镜像.当然,应该由操作系统决定必须被镜像的文件集合.
+
+缺省设置: \fBroot directory = /\fR
+
+
+示例: \fBroot directory = /homes/smb\fR
+
+
+.TP
+root postexec (S)
+此项与 \fIpostexec\fR选项含义相同,只是以root身份来运行命令而已.在一次联接关闭之后对文件系统,特别是光盘驱动器进行卸载是非常有用的.
+
+
+参见 \fI postexec\fR.
+
+
+缺省设置: \fBroot postexec = <空字符串>\fR
+
+
+.TP
+root preexec (S)
+此项与 \fIpreexec\fR选项含义相同,只是以root身份来运行命令而已.在一次联接稳定建立之后装载文件系统,特别是光盘驱动器是非常有用的.
+
+
+参见 \fI preexec\fR 和 \fIpreexec close\fR 选项.
+
+
+缺省设置: \fBroot preexec = <空字符串>\fR
+
+
+.TP
+root preexec close (S)
+此项与\fIpreexec close \fR选项含义相同,只是以root身份来运行命令而已.
+
+
+参见 \fI preexec\fR 和\fIpreexec close\fR.
+
+
+缺省设置: \fBroot preexec close = no\fR
+
+
+.TP
+security (G)
+此项是\fIsmb.conf\fR文件中最重要的一个设定之一,它影响了客户是如何应答Samba服务器的.
+
+这个选项设置了“安全模式位”用于答复协议协商以使\fBsmbd\fR(8) 调整共享安全级是开或者关.客户端根据此位决定是否(以及如何)向服务器传送用户和口令信息.
+
+缺省值是\fBsecurity = user\fR,这也是在Windows 98和Windows NT环境中最常用的设定.
+
+可选的值 \fBsecurity = share\fR, \fBsecurity = server\fR 或者\fBsecurity = domain \fR.
+
+
+ 2.0.0版本之前的Samba中,缺省值是 \fBsecurity = share\fR 主要因为当时只有这一个值可选。
+
+在WfWg里有一个错误,当在使用用户和服务器安全级时,WfWg客户将会完全忽略你在"connect 
+drive"对话框里键入的口令.这就使除了在WfWg里已登录的用户以外的任何人要联接Samba服务项变得非常困难.
+
+
+如果你的主机使用与UNIX主机上相同的用户名时,就应当使用\fBsecurity = user\fR.如果你用的用户名通常在UNIX上不存在时就应该用\fBsecurity = share\fR.
+
+如果你想设置共享而不用口令的话(访客级共享)也应该用\fBsecurity=share\fR.这通常用于提供共享打印的服务器.在\fBsecurity=user\fR里设定guest帐户非常困难,详细的情况请参见\fImap to guest\fR选项.
+
+\fBsmbd\fR可能会使用一种\fB混杂模式(hybrid)\fR,这样就可以在不同的\fINetBIOS aliases\fR下提供用户和共享级的安全特性.
+
+现在解释各个不同的设定.
+
+
+\fBSECURITY = SHARE\fR
+
+当客户联接到一个共享安全级的服务器,在联接共享资源之前无需用一个合法的用户名和口令登录到服务器(虽然现在的客户端象WIN95/95及NT在与\fBsecurity = share \fR的服务器交谈时都会以用户名发送一个登录请求,但却没有带口令).相反,客户端会在每一个共享上发送认证信息(口令)以尝试联接到这个共享项.
+
+注意 \fBsmbd\fR \fB总是\fR 用合法的UNIX用户代表客户进行操作, 即使是在 \fBsecurity = share\fR 的时候.
+
+
+因为在共享安全级中,客户无需向服务器发送用户名,所以\fBsmbd\fR用一些技术来为客户决定正确的UNIX用户账号.
+
+用于匹配给出客户口令的可能的UNIX用户名列表可以用以下方法建立:
+
+如果设置了\fIguest only\fR选项,则跳过所有其它步骤只检查\fIguest account\fR用户名.
+
+如果通过共享连接请求发送一个用户名,则此用户名(映射后 - 参见\fIusername map\fR)被作为潜在用户名加入.
+
+如果客户使用一个先前的 \fBlogon \fR 请求(SessionSetup SMB调用)则在SMB中发送的用户名将作为潜在用户名加入.
+
+客户请求的服务项名被作为潜在用户名加入.
+
+客户的NetBIOS名被作为潜在用户名加入到列表中.
+
+在\fIuser\fR列表中的任何用户都被作为潜在用户名加入.
+
+如果未设\fIguest only\fR选项,则使用提供的口令来尝试此列表.对于匹配到口令的第一个用户将作为UNIX用户身份使用.
+
+如果设置了\fIguest only\fR选项或未检测到用户名,则如果共享项中标志为可以使用\fIguest account\fR,那么使用此访客用户账号,否则拒绝访问.
+
+注意,在共享安全级中关于哪个UNIX用户名最后将在允许访问中使用\fB非常\fR混淆.
+
+参见NOTE ABOUT USERNAME/PASSWORD VALIDATION段.
+
+
+\fBSECURITY = USER\fR
+这是samba2.0/3.0缺省安全级设置.对于用户安全级,一个客户必须先以合法的用户名和口令(也可以用\fIusername map\fR选项进程映射)“登录”.在此安全模式中也可使用加密口令(参见\fIencrypted passwords\fR选项).如果设置了如\fIuser\fR和\fIguest only\fR这样的选项,则它们会被应用并且在此连接上更改UNIX用户账号,但只能在用户账号被成功验证之后才行.
+
+\fB注意\fR,当服务器成功验证客户身份之前,请求的资源名称是\fB不\fR发送到服务器上的.这就是为什么用户安全级中在没有允许服务器自动把未知用户映射为\fIguest account\fR的情况下,访客共享无法工作.参见\fImap to guest\fR选项获得完成映射的细节.
+
+
+参见NOTE ABOUT USERNAME/PASSWORD VALIDATION段.
+
+
+\fBSECURITY = DOMAIN\fR
+
+
+只有已经用 \fBnet\fR(8)把服务器添加进一个Windows NT的域中,此安全模式才能正常工作.它要求\fIencrypted passwords\fR选项设为\fByes\fR.在此模式中Samba将试图把用户名/口令传送到一个WindowsNT主域或备份域控制器进行验证像一台真正的WindowsNT服务器那样。
+
+\fB注意\fR,仍然需要存在一个和域控制器上的用户名一致的有效的UNIX用户,来使Samba拥有一个有效的UNIX帐户来映射存取文件操作。
+
+\fB注意\fR,对于客户端来说,\fIsecurity=domain\fR模式与\fIsecurity=user\fR是一样的.它只影响
+服务器处理验证工作的方式.对于客户端无任何影响.
+
+\fB注意\fR,当服务器成功验证客户身份之前,请求的资源名称是不发送到服务器上的.这就是为什么域安全级中在没有允许服务器自动把未知用户映射为\fBguest account\fR的情况下,访客共享无法工作.参见\fImap to guest\fR选项获得完成映射的细节
+
+参见 NOTE ABOUT USERNAME/PASSWORD VALIDATION 段.
+
+
+参见 \fIpassword server\fR parameter 和 \fIencrypted passwords\fR 选项。
+
+
+\fBSECURITY = SERVER\fR
+
+在此模式中Samba将试图把用户名/口令传送到其它SMB服务器,比如一台NT服务器,进行验证.如果验证失败则回到\fBsecurity = user\fR模式,它需要\fIencrypted passwords\fR 参数设置为\fByes\fR,除非远端系统不支持它们。但是要注意,如果使用了加密口令的话,samba不会再去检查UNIX系统口令文件的,它必须有一个合法的\fIsmbpasswd\fR文件以再次检查用户账号.参见Samba HOWTO Collection 中关于User Database 的章节来获得如何设置的信息。
+
+This mode of operation has significant pitfalls, due to the fact that is activly initiates a man-in-the-middle attack on the remote SMB server\&. In particular, this mode of operation can cause significant resource consuption on the PDC, as it must maintain an active connection for the duration of the user's session\&. Furthermore, if this connection is lost, there is no way to reestablish it, and futher authenticaions to the Samba server may fail. (From a single client, till it disconnects).
+
+\fB注意\fR,对于客户端来说,\fBsecurity=server\fR模式与\fBsecurity=user\fR是一样的.它只影响服务器处理验证工作的方式.对于客户端无任何影响.
+
+\fB注意\fR,当服务器成功验证客户身份之前,请求的资源名称是\fB不\fR发送到服务器上的.这就是为什么服务器安全级中在没有允许服务器自动把未知用户映射为\fIguest account\fR的情况下,访客共享无法工作.参见 \fImap to guest\fR选项获得完成映射的细节.
+
+
+参见 NOTE ABOUT USERNAME/PASSWORD VALIDATION 段.
+
+
+参见 \fIpassword server\fR parameter 和 \fIencrypted passwords\fR 选项。
+
+
+\fBSECURITY = ADS\fR
+
+
+In this mode, Samba will act as a domain member in an ADS realm\&. To operate in this mode, the machine running Samba will need to have Kerberos installed and configured and Samba will need to be joined to the ADS realm using the net utility.
+
+
+Note that this mode does NOT make Samba operate as a Active Directory Domain Controller.
+
+
+Read the chapter about Domain Membership in the HOWTO for details.
+
+
+参见 \fIads server \fR parameter, the \fIrealm \fR paramter 和\fIencrypted passwords\fR 选项。
+
+
+缺省设置: \fBsecurity = USER\fR
+
+
+示例: \fBsecurity = DOMAIN\fR
+
+
+.TP
+security mask (S)
+此选项控制NT客户用本地NT安全对话框操作UNIX权限时对权限所作的修改情况.
+This parameter controls what UNIX permission bits can be modified when a Windows NT client is manipulating the UNIX permission on a file using the native NT security dialog box\&.
+
+此选项用掩码值'与'实现对权限位的更改,从而防止修改未出现在此掩码中的任何位.可以将掩码中的0看作用户无权更改的位值.
+This parameter is applied as a mask (AND'ed with) to the changed permission bits, thus preventing any bits not in this mask from being modified\&. Essentially, zero bits in this mask may be treated as a set of bits the user is not allowed to change\&.
+
+如未明确设定此选项,则把此选项设为0777,允许用户修改文件的所有user/group/world这些权限.
+
+\fB注意\fR,可通过其它手段访问到Samba服务器的用户可以轻而易举地绕过此限制,所以此选项只对独立的服务器系统有用.多数普通系统的管理员可以将它保留为\fB0777\fR.
+
+参见 \fIforce directory security mode\fR, \fIdirectory security mask\fR, \fIforce security mode\fR 选项.
+
+
+缺省设置: \fBsecurity mask = 0777\fR
+
+
+示例: \fBsecurity mask = 0770\fR
+
+
+.TP
+server schannel (G)
+This controls whether the server offers or even demands the use of the netlogon schannel\&. \fIserver schannel = no\fR does not offer the schannel, \fIserver schannel = auto\fR offers the schannel but does not enforce it, and \fIserver schannel = yes\fR denies access if the client is not able to speak netlogon schannel\&. This is only the case for Windows NT4 before SP4\&.
+
+
+Please note that with this set to \fIno\fR you will have to apply the WindowsXP requireSignOrSeal-Registry patch found in the docs/Registry subdirectory\&.
+
+
+缺省设置: \fBserver schannel = auto\fR
+
+
+示例: \fBserver schannel = yes\fR
+
+
+.TP
+server signing (G)
+This controls whether the server offers or requires the client it talks to to use SMB signing\&. Possible values are \fBauto\fR, \fBmandatory\fR and \fBdisabled\fR\&.
+
+
+When set to auto, SMB signing is offered, but not enforced\&. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either\&.
+
+
+缺省设置: \fBclient signing = False\fR
+
+
+.TP
+server string (G)
+此选项在打印管理器中的打印机信息对话框以及在\fBnet view\fR(网上邻居)的IPC连接中显示的服务器信息.它可以是任何你希望向用户显示的字串.
+
+它还设置显示在浏览列表中主机名后的内容.
+
+\fI%v\fR 将替换为Samba版本号
+
+
+\fI%h\fR 将替换为主机名
+
+
+缺省设置: \fBserver string = Samba %v\fR
+
+
+示例: \fBserver string = University of GNUs Samba Server\fR
+
+
+.TP
+set directory (S)
+如果 \fBset directory = no\fR,则使用服务的用户不能用setdir命令更变目录.
+
+\fBsetdir\fR命令只在Digital Pathworks客户端中实现.参见Pathworks文档的细节.
+
+
+缺省设置: \fBset directory = no\fR
+
+
+.TP
+set primary group script (G)
+Thanks to the Posix subsystem in NT a Windows User has a primary group in addition to the auxiliary groups\&. This script sets the primary group in the unix userdatase when an administrator sets the primary group from the windows user manager or when fetching a SAM with \fBnet rpc vampire\fR\&. \fI%u\fR will be replaced with the user whose primary group is to be set\&. \fI%g\fR will be replaced with the group to set\&.
+
+
+缺省设置: \fBNo default value\fR
+
+
+示例: \fBset primary group script = /usr/sbin/usermod -g '%g' '%u'\fR
+
+
+.TP
+set quota command (G)
+The \fBset quota command\fR should only be used whenever there is no operating system API available from the OS that samba can use\&.
+
+
+This parameter should specify the path to a script that can set quota for the specified arguments\&.
+
+
+The specified script should take the following arguments:
+
+
+1 - quota type .TP 3 \(bu 1 - user quotas .TP \(bu 2 - user default quotas (uid = -1) .TP \(bu 3 - group quotas .TP \(bu 4 - group default quotas (gid = -1) .LP
+
+2 - id (uid for user, gid for group, -1 if N/A)
+
+3 - quota state (0 = disable, 1 = enable, 2 = enable and enforce)
+
+4 - block softlimit
+
+5 - block hardlimit
+
+6 - inode softlimit
+
+7 - inode hardlimit
+
+8(optional) - block size, defaults to 1024
+
+The script should output at least one line of data\&.
+
+
+参见 \fIget quota command\fR 选项。
+
+
+缺省设置: \fBset quota command = \fR
+
+
+示例: \fBset quota command = /usr/local/sbin/set_quota\fR
+
+
+.TP
+share modes (S)
+此选项在一个文件打开时允许或禁止\fIshare modes\fR.此模式可用于使客户获得对一个文件独占的读或写访问.
+
+这些打开模式UNIX是不直接支持的,所以要用共享内存或在UNIX不支持共享内存时(一般都支持)用锁定文件来模拟.
+
+
+允许共享模式的选项是\fBDENY_DOS\fR, \fBDENY_ALL\fR, \fBDENY_READ\fR,\fBDENY_WRITE\fR, \fBDENY_NONE\fR 和\fBDENY_FCB\fR.
+
+
+缺省情况下此选项提供了完全的共享兼容和许可.
+
+
+你 \fB不应\fR 把此选项关闭因为很多Windows应用会因此停止运行。
+
+
+缺省设置: \fBshare modes = yes\fR
+
+
+.TP
+short preserve case (S)
+此布尔值选项控制着如果新文件符合8.3文件名格式(所有字母都为大写且长度适当),则以大写字母建立文件,否则就转换为\fIdefault case \fR.此选项可与\fBpreserve case = yes\fR选项联用,以允许长文件名保留大小写,同时短文件名转换为小写。
+
+参见 NAME MANGLING 段.
+
+
+缺省设置: \fBshort preserve case = yes\fR
+
+
+.TP
+show add printer wizard (G)
+With the introduction of MS-RPC based printing support for Windows NT/2000 client in Samba 2\&.2, a "Printers\&.\&.\&." folder will appear on Samba hosts in the share listing\&. Normally this folder will contain an icon for the MS Add Printer Wizard (APW)\&. However, it is possible to disable this feature regardless of the level of privilege of the connected user\&.
+
+
+Under normal circumstances, the Windows NT/2000 client will open a handle on the printer server with OpenPrinterEx() asking for Administrator privileges\&. If the user does not have administrative access on the print server (i\&.e is not root or a member of the \fIprinter admin\fR group), the OpenPrinterEx() call fails and the client makes another open call with a request for a lower privilege level\&. This should succeed, however the APW icon will not be displayed\&.
+
+
+Disabling the \fIshow add printer wizard\fR parameter will always cause the OpenPrinterEx() on the server to fail\&. Thus the APW icon will never be displayed\&. \fB Note :\fRThis does not prevent the same user from having administrative privilege on an individual printer\&.
+
+
+参见 \fIaddprinter command\fR, \fIdeleteprinter command\fR, \fIprinter admin\fR
+
+
+Default :\fBshow add printer wizard = yes\fR
+
+
+.TP
+shutdown script (G)
+\fBThis parameter only exists in the HEAD cvs branch\fR This a full path name to a script called by \fBsmbd\fR(8) that should start a shutdown procedure\&.
+
+
+This command will be run as the user connected to the server\&.
+
+
+%m %t %r %f parameters are expanded:
+
+
+\fI%m\fR will be substituted with the shutdown message sent to the server\&.
+
+\fI%t\fR will be substituted with the number of seconds to wait before effectively starting the shutdown procedure\&.
+
+\fI%r\fR will be substituted with the switch \fB-r\fR\&. It means reboot after shutdown for NT\&.
+
+\fI%f\fR will be substituted with the switch \fB-f\fR\&. It means force the shutdown even if applications do not respond for NT\&.
+
+缺省设置: \fBNone\fR\&.
+
+
+示例: \fBshutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f\fR
+
+
+Shutdown script example:
+.nf
+
+#!/bin/bash
+		
+$time=0
+let "time/60"
+let "time++"
+
+/sbin/shutdown $3 $4 +$time $1 &
+.fi
+
+Shutdown does not return so we need to launch it in background\&.
+
+
+参见 \fIabort shutdown script\fR\&.
+
+
+.TP
+smb passwd file (G)
+此选项设置加密口令文件smbpasswd的路径.缺省路径在编译samba时指定.
+
+
+缺省设置: \fBsmb passwd file = ${prefix}/private/smbpasswd\fR
+
+
+示例: \fBsmb passwd file = /etc/samba/smbpasswd\fR
+
+
+.TP
+smb ports (G)
+Specifies which ports the server should listen on for SMB traffic\&.
+
+
+缺省设置: \fBsmb ports = 445 139\fR
+
+
+.TP
+socket address (G)
+此选项允许你控制samba监听连接所用的地址.它用于在一个服务器上支持多个配置不同的虚拟接口.缺省情况下samba会在任何地址上都接受连接请求.
+
+
+By default Samba will accept connections on any address\&.
+
+
+示例: \fBsocket address = 192.168.2.20\fR
+
+
+.TP
+socket options (G)
+此选项设置用于与客户端交谈的套接字选项.
+
+套接字选项是使用在允许调整连接的操作系统的网络层的控制命令.
+
+此选项通常用于在局域网上优化调整samba服务器的性能.因为samba无法知道与你的网络所对应的优化选项,所以你必须自己进行试验并作出选择.我们强烈推荐你先阅读与你的操作系统有关的相应文件(也许\fBman setsockopt\fR会有帮助).
+
+你可能会发现在有些系统上samba会在你使用一个选项时发出"Unknown socket option"的信息.这就说明你没有正确拼写或者需要为操作系统添加一个包含文件到includes.h中.如有后面指出的问题请写信到samba-bugs at samba.org.
+
+只要操作系统允许,你可以以任何方法组合任何所支持的套接字选项.
+
+当前可用于此选项的可设置套接字选项列表有:
+
+SO_KEEPALIVE
+
+SO_REUSEADDR
+
+SO_BROADCAST
+
+TCP_NODELAY
+
+IPTOS_LOWDELAY
+
+IPTOS_THROUGHPUT
+
+SO_SNDBUF *
+
+SO_RCVBUF *
+
+SO_SNDLOWAT *
+
+SO_RCVLOWAT *
+
+标有\fB'*'\fR的要使用一个整数参数.其它的有时使用1或0代表允许或禁止该选项,如未指定1或0则缺省值都为允许.
+
+要指定一个变量,用"SOME_OPTION=VALUE"格式。比如可以是SO_SNDBUF=8192.注意,在"="前后不能有任何空格.
+
+如在局域网上,则使用下面这个是比较明智的:
+
+\fBsocket options = IPTOS_LOWDELAY\fR
+
+如有一个局域网则可以试一下:
+
+\fBsocket options = IPTOS_LOWDELAY TCP_NODELAY\fR
+
+如有一个广域网,则试一下IPTOS_THROUGHPU.
+
+注意有些选项可导致samba服务器完全失效.小心使用它们!
+
+缺省设置: \fBsocket options = TCP_NODELAY\fR
+
+示例: \fBsocket options = IPTOS_LOWDELAY\fR
+
+
+.TP
+source environment (G)
+This parameter causes Samba to set environment variables as per the content of the file named\&.
+
+
+If the value of this parameter starts with a "|" character then Samba will treat that value as a pipe command to open and will set the environment variables from the output of the pipe\&.
+
+
+The contents of the file or the output of the pipe should be formatted as the output of the standard Unix \fBenv(1)\fR command\&. This is of the form:
+
+
+Example environment entry:
+
+
+\fBSAMBA_NETBIOS_NAME = myhostname\fR
+
+
+缺省设置: \fBNo default value\fR
+
+
+Examples: \fBsource environment = |/etc/smb.conf.sh\fR
+
+
+示例: \fBsource environment = /usr/local/smb_env_vars\fR
+
+
+.TP
+stat cache (G)
+此选项检测\fBsmbd\fR(8)是否使用缓存以提升映射不分大小写名称的速度.你无须更改此选项.
+
+
+缺省设置: \fBstat cache = yes\fR
+
+
+.TP
+strict allocate (S)
+This is a boolean that controls the handling of disk space allocation in the server\&. When this is set to \fByes\fR the server will change from UNIX behaviour of not committing real disk storage blocks when a file is extended to the Windows behaviour of actually forcing the disk system to allocate real storage blocks when a file is created or extended to be a given size\&. In UNIX terminology this means that Samba will stop creating sparse files\&. This can be slow on some systems\&.
+
+
+When strict allocate is \fBno\fR the server does sparse disk block allocation when a file is extended\&.
+
+
+Setting this to \fByes\fR can help Samba return out of quota messages on systems that are restricting the disk quota of users\&.
+
+
+缺省设置: \fBstrict allocate = no\fR
+
+
+.TP
+strict locking (S)
+此布尔量选项控制服务器对文件锁的处理.当设为\fByes\fR,则服务器对文件锁检查每次读写访问,并拒绝锁存在时的访问.在有些系统上这可能会很慢.
+
+当禁用strict locking时,服务器只在客户明确要求时才为他们检查文件锁.
+
+循规蹈矩的客户总是在重要的时候要求检查文件锁,所以在多数情况下\fBstrict locking = no\fR是可取的.
+
+缺省设置: \fBstrict locking = no\fR
+
+
+.TP
+strict sync (S)
+很多Windows应用(包括Windows 98浏览器)都会干扰对刷新缓冲区内容到磁盘的操作.在UNIX下,一次同步调用强制进程挂起,直到内核确保把所有磁盘缓存区中的未完成数据安全地存到固定存储设备中为止.此操作很慢,而且只能很少用到.把此选项设为\fBno\fR (缺省值)说明\fBsmbd\fR(8) 忽略Windows应用请求的一次同步调用.这样只有在Samba运行的操作系统崩溃时才可能丢失数据,因此缺省设置危险性很小.另外,它修正人们报告的很多关于Windows98浏览器拷贝文件的性能问题.
+
+参见 \fIsync always\fR 选项。
+
+
+缺省设置: \fBstrict sync = no\fR
+
+
+.TP
+sync always (S)
+此布尔量选项控制是否在写操作结束前把所写的内容写到固定存储设备上.如果为\fBno\fR则服务器将在每次写调用中让客户请求来操纵它(客户可以设置一个位码来指出要同步一次特殊的写操作).如果为\fByes\fR则在每次写操作后调用一次\fBfsync() \fR以确保将数据写到磁盘上.注意必须把\fIstrict sync\fR选项设为\fByes\fR以使本选项产生效果.
+
+
+参见 \fIstrict sync\fR 选项。
+
+
+缺省设置: \fBsync always = no\fR
+
+
+.TP
+syslog (G)
+此选项决定samba调试信息号如何映射为系统syslog的记录等级.调试级0映射为syslog的\fBLOG_ERR\fR,调试级1映射为 \fBLOG_WARNING\fR,调试级2映射为\fBLOG_NOTICE\fR,调试级3映射为\fBLOG_INFO\fR.所有更高的级别号映射为\fB LOG_DEBUG\fR.
+
+此选项设置了对syslog发送信息的阈值.只有小于此值的调试级信息号才发给syslog.
+
+
+缺省设置: \fBsyslog = 1\fR
+
+
+.TP
+syslog only (G)
+此选项使samba只把调试级别号记录到系统syslog,而不是调试记录文件.
+
+缺省设置: \fBsyslog only = no\fR
+
+
+.TP
+template homedir (G)
+When filling out the user information for a Windows NT user, the \fBwinbindd\fR(8) daemon uses this parameter to fill in the home directory for that user\&. If the string \fI%D\fR is present it is substituted with the user's Windows NT domain name\&. If the string \fI%U\fR is present it is substituted with the user's Windows NT user name\&.
+
+
+缺省设置: \fBtemplate homedir = /home/%D/%U\fR
+
+
+.TP
+template primary group (G)
+This option defines the default primary group for each user created by \fBwinbindd\fR(8)'s local account management functions (similar to the 'add user script')\&.
+
+
+缺省设置: \fBtemplate primary group = nobody\fR
+
+
+.TP
+template shell (G)
+When filling out the user information for a Windows NT user, the \fBwinbindd\fR(8) daemon uses this parameter to fill in the login shell for that user\&.
+
+
+缺省设置: \fBtemplate shell = /bin/false\fR
+
+
+.TP
+time offset (G)
+此选项是个加入到转换标准GMT为当地时间操作的分钟数.如果你向很多有不正确保存时间操作的主机提供服务时这就很有用了.
+
+
+缺省设置: \fBtime offset = 0\fR
+
+
+示例: \fBtime offset = 60\fR
+
+
+.TP
+time server (G)
+此选项检测\fBnmbd\fR(8) 是否以时间服务器身份向Windows客户通告自身.
+
+缺省设置: \fBtime server = no\fR
+
+
+.TP
+timestamp logs (G)
+与 \fI debug timestamp\fR 同义.
+
+
+.TP
+unicode (G)
+Specifies whether Samba should try to use unicode on the wire by default\&. Note: This does NOT mean that samba will assume that the unix machine uses unicode!
+
+
+缺省设置: \fBunicode = yes\fR
+
+
+.TP
+unix charset (G)
+Specifies the charset the unix machine Samba runs on uses\&. Samba needs to know this in order to be able to convert text to the charsets other SMB clients use\&.
+
+
+缺省设置: \fBunix charset = UTF8\fR
+
+
+示例: \fBunix charset = ASCII\fR
+
+
+.TP
+unix extensions (G)
+This boolean parameter controls whether Samba implments the CIFS UNIX extensions, as defined by HP\&. These extensions enable Samba to better serve UNIX CIFS clients by supporting features such as symbolic links, hard links, etc\&.\&.\&. These extensions require a similarly enabled client, and are of no current use to Windows clients\&.
+
+
+缺省设置: \fBunix extensions = yes\fR
+
+
+.TP
+unix password sync (G)
+此布尔量选项控制samba是否在smbpasswd文件中的加密SMB口令被更改时尝试用SMB口令来同步UNIX口令.如设为\fByes\fR则\fB以root身份\fR调用\fIpasswd program\fR选项中指定的程序 - 以允许设置新的UNIX口令而无需访问原UNIX口令(因为更改SMB口令时代码不访问明文的原口令而只涉及新口令).
+
+参见 \fIpasswd program\fR, \fI passwd chat\fR.
+
+
+缺省设置: \fBunix password sync = no\fR
+
+
+.TP
+update encrypted (G)
+此布尔量选项使以明文口令登录的用户在登录时自动更新smbpasswd文件中的加密(散列计算过的)口令.此选项允许一个站点从明文口令验证方式(以明文口令验证用户账号并再次检查UNIX账号数据库)移植到加密口令验证方式(SMB的询问/响应验证机制)而无需强制所有用户在移植时通过smbpasswd重新输入他们的口令.这对改变加密口令移交要较长周期这种状况来说很方便.一旦所有用户都在smbpasswd文件中拥有他们加密过的口令,则此应该把此选项设为\fBno\fR.
+
+为了让此选项正确工作,当它设为\fByes\fR时必须把 \fIencrypt passwords\fR选项设为\fBno\fR .
+
+注意即使设置了此选项,\fBsmbd\fR还是必须验证用户账号,直到输入合法的口令后才能正确连接并更新他们的散列计算(由smbpasswd完成)后的口令字.
+
+
+缺省设置: \fBupdate encrypted = no\fR
+
+
+.TP
+use client driver (S)
+This parameter applies only to Windows NT/2000 clients\&. It has no effect on Windows 95/98/ME clients\&. When serving a printer to Windows NT/2000 clients without first installing a valid printer driver on the Samba host, the client will be required to install a local printer driver\&. From this point on, the client will treat the print as a local printer and not a network printer connection\&. This is much the same behavior that will occur when \fBdisable spoolss = yes\fR\&.
+
+
+The differentiating factor is that under normal circumstances, the NT/2000 client will attempt to open the network printer using MS-RPC\&. The problem is that because the client considers the printer to be local, it will attempt to issue the OpenPrinterEx() call requesting access rights associated with the logged on user\&. If the user possesses local administator rights but not root privilegde on the Samba host (often the case), the OpenPrinterEx() call will fail\&. The result is that t [...]
+
+
+If this parameter is enabled for a printer, then any attempt to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped to PRINTER_ACCESS_USE instead\&. Thus allowing the OpenPrinterEx() call to succeed\&. \fBThis parameter MUST not be able enabled on a print share which has valid print driver installed on the Samba server\&.\fR
+
+
+参见 \fIdisable spoolss\fR
+
+
+缺省设置: \fBuse client driver = no\fR
+
+
+.TP
+use mmap (G)
+This global parameter determines if the tdb internals of Samba can depend on mmap working correctly on the running system\&. Samba requires a coherent mmap/read-write system memory cache\&. Currently only HPUX does not have such a coherent cache, and so this parameter is set to \fBno\fR by default on HPUX\&. On all other systems this parameter should be left alone\&. This parameter is provided to help the Samba developers track down problems with the tdb internal code\&.
+
+
+缺省设置: \fBuse mmap = yes\fR
+
+
+.TP
+user (S)
+与 \fIusername\fR 同义
+
+
+.TP
+username (S)
+在逗号分隔的列表中指定多个用户以用于轮流(从左到右)测试所提供的口令.
+
+只有当主机无法提供它自己的用户名时才需要\fIusername\fR选项。当用COREPLUS协议或你的用户拥有与UNIX用户名不同的WfWg用户名时就会有这样的情况.在这两种情况下,用\\server\share%user语句代替会更好的.
+
+在大多数情况下\fIusername\fR选项并不是最好的解决方案,因为它意味着Samba会尝试对\fIusername\fR选项行中的每个用户名轮流作测试.这样做是很慢的,而且万一很多用户重复口令的话这就是个坏主意了.错误使用此选项可能会带来超时或安全缺陷.
+
+samba依靠底层的UNIX安全.此选项不限制登录者,它只对Samba服务器提供响应所提供口令的用户名的线索.任何喜欢的人都可以登录,而且如果他们只是启动一次telnet对话的话不会造成破坏.进程以登录的用户身份运行,所以他们无法做任何他们不能做的事儿.
+
+要对一组特殊的用户限制一个服务的话可以用 \fIvalid users \fR 选项.
+
+如果任何用户名以'@'字符开始则此用户名将首先在NIS网络组列表(如果Samba编译时加入了网络组支持的话)中进行查找,然后在UNIX用户组数据库中查找并展开成属于以此名为组的所有用户的列表.
+
+如果任何用户名以'+'字符开始则此用户名只在UNIX用户组数据库中进行查找并展开成属于以此名为组的所有用户的列表.
+
+如果任何用户名以'&'字符开始则此用户名只在NIS网络组列表(如果Samba编译时加入了网络组支持的话)中进行查找并展开成属于以此名为组的所有用户的列表.
+
+注意通过用户组数据库进行查找要花很长时间,在此期间有些客户可能会超时.
+
+
+查看 NOTE ABOUT USERNAME/PASSWORD VALIDATION 段来获得这个选项如何决定访问服务方面的信息。
+
+
+缺省设置: \fB如果是guest服务就是guest帐号,否则是空字符串.\fR
+
+
+示例:\fBusername = fred, mary, jack, jane, @users, @pcgroup\fR
+
+
+.TP
+username level (G)
+此选项在很多DOS客户发送全大写的用户名时,帮助samba尝试和“猜测”实际UNIX用户名.对于缺省情况,Samba尝试所有小写形式,然后是首字母大写形式,如果该用户名在UNIX主机上没有找到则失败.
+
+如果把此选项设为非0,则情况就改变了.此选项指定的是用于尝试同时检测UNIX用户名的大写字母的组合数.数字越高,则尝试的组合数越多,但用户名的发现也越慢.当在你的UNIX主机上有奇特的用户名如\fBAstrangeUser \fR时使用此选项.
+
+缺省设置: \fBusername level = 0\fR
+
+
+示例: \fBusername level = 5\fR
+
+
+.TP
+username map (G)
+此选项允许你指定一个包含对客户机到服务器上的用户名映射的文件.它可用于几个目的.最常见的是把用DOS或Windows主机的用户的名称映射到UNIX主机上的用户.其它还有把多个用户映射到单个用户名上以使他们可以更简单地共享文件.
+
+映射文件被逐行解析.每个行都应该在'='号左边包含一个UNIX用户名,而在右边跟上一列用户名.右边的用户名列表可以包含@group形式的名称,它表示匹配任何组中的UNIX用户名.特殊客户名'*'是一个通配符用于匹配任何名称.映射文件的每个行可以达到1023个字符的长度.
+
+对文件的处理是在每个行上取得提供的用户名并把它与'='号右边的每个用户名进行比较.如果提供的名称匹配右边的任何名称则用左边的名称替换右边的.然后继续处理下一行.
+
+忽略以'#' 或 ';'号开始的行.
+
+当在行中发现了匹配,则在以'!'开始的行后中止处理,否则继续处理每一行的映射.当你在文件中用了通配映射的话'!'就很有用了.
+
+例如把名称\fBadmin\fR 或 \fBadministrator\fR映射为UNIX名\fB root\fR,你可以这样:
+
+\fBroot = admin administrator\fR
+
+或把UNIX组 \fBsystem\fR中的任何人映射为UNIX名\fBsys\fR就可以这样:
+
+\fBsys = @system\fR
+
+可以在一个用户名映射文件中包含很多映射关系.
+
+如果你的系统支持NIS NETGROUP选项,则在使用\fI/etc/group \fR匹配组之前先检查网络组数据库.
+
+你可以通过在名称上使用双引号来映射含有空格的Windows用户名.例如:
+
+\fBtridge = "Andrew Tridgell"\fR
+
+将把windows用户名"Andrew Tridgell"映射为unix用户名"tridge".
+
+以下示例将把mary和fred映射为unix用户sys,然后把其余的映射为guest.注意使用'!'符号可以告诉Samba如果在该行获得一个匹配的话就停止处理.
+
+.nf
+!sys = mary fred
+guest = *
+.fi
+
+注意重映射作用于所有出现用户名的地方.因此如果你连接到\\\\server\\fred而\fB fred\fR已被重映射为 \fBmary\fR,则你实际会连接到\\\\server\\mary"并需要提供\fBmary\fR的口令而不是 \fBfred\fR的.这种情况只有一个例外,那就是用户名是被传到\fI password server\fR(如果你有一个的话)验证的.口令服务器会接收客户提供的未经修改的用户名.
+
+同时要注意反向映射是不会出现的.这主要影响的是打印任务.已经被映射的用户会在删除打印任务时遇到麻烦,因为WfWg上的打印管理器会认为他们不是打印任务的属主.
+
+缺省设置: \fBno username map\fR
+
+
+示例: \fBusername map = /usr/local/samba/lib/users.map\fR
+
+
+.TP
+users (S)
+与 \fI username\fR 同义.
+
+
+.TP
+use sendfile (S)
+If this parameter is \fByes\fR, and Samba was built with the --with-sendfile-support option, and the underlying operating system supports sendfile system call, then some SMB read calls (mainly ReadAndX and ReadRaw) will use the more efficient sendfile system call for files that are exclusively oplocked\&. This may make more efficient use of the system CPU's and cause Samba to be faster\&. This is off by default as it's effects are unknown as yet\&.
+
+
+缺省设置: \fBuse sendfile = no\fR
+
+
+.TP
+use spnego (G)
+This variable controls controls whether samba will try to use Simple and Protected NEGOciation (as specified by rfc2478) with WindowsXP and Windows2000 clients to agree upon an authentication mechanism\&. Unless further issues are discovered with our SPNEGO implementation, there is no reason this should ever be disabled\&.
+
+
+缺省设置: \fBuse spnego = yes\fR
+
+
+.TP
+utmp (G)
+This boolean parameter is only available if Samba has been configured and compiled with the option \fB --with-utmp\fR\&. If set to \fByes\fR then Samba will attempt to add utmp or utmpx records (depending on the UNIX system) whenever a connection is made to a Samba server\&. Sites may use this to record the user connecting to a Samba share\&.
+
+
+Due to the requirements of the utmp record, we are required to create a unique identifier for the incoming user\&. Enabling this option creates an n^2 algorithm to find this number\&. This may impede performance on large installations\&.
+
+
+参见 \fI utmp directory\fR 选项。
+
+
+缺省设置: \fButmp = no\fR
+
+
+.TP
+utmp directory (G)
+This parameter is only available if Samba has been configured and compiled with the option \fB --with-utmp\fR\&. It specifies a directory pathname that is used to store the utmp or utmpx files (depending on the UNIX system) that record user connections to a Samba server\&. 参见 \fIutmp\fR 选项。 By default this is not set, meaning the system will use whatever utmp file the native system is set to use (usually \fI/var/run/utmp\fR on Linux)\&.
+
+
+缺省设置: \fBno utmp directory\fR
+
+
+示例: \fButmp directory = /var/run/utmp\fR
+
+
+.TP
+-valid (S)
+This parameter indicates whether a share is valid and thus can be used\&. When this parameter is set to false, the share will be in no way visible nor accessible\&.
+
+
+This option should not be used by regular users but might be of help to developers\&. Samba uses this option internally to mark shares as deleted\&.
+
+
+缺省设置: \fBTrue\fR
+
+
+.TP
+valid users (S)
+这是一份允许登录服务项的用户列表.以'@','+'和'&'开始的名称用\fIinvalid users\fR 选项中的规则进行解析.
+
+如果此项为空(缺省)则任何用户都可以登录.如果一个用户名同时存在于此列表及\fIinvalid users\fR列表,则拒绝此用户访问.
+
+
+\fI%S \fR替换为当前服务名. 这在[homes]段里非常有用.
+
+参见 \fIinvalid users \fR
+
+
+缺省设置: \fB空 (任何人都不会被拒绝) \fR
+
+
+示例: \fBvalid users = greg, @pcusers\fR
+
+
+.TP
+veto files (S)
+这是一份既不可见又不可访问的文件及目录的列表.在列表中的每一项必须用'/'进行分隔,项目中允许有空格.可以用DOS通配符'*'和'?'来指定多个文件或目录.
+
+每项必须是一个UNIX路径,而非一个DOS路径,同时\fB必须不含\fR UNIX目录分隔符'/'.
+
+注意\fIcase sensitive\fR选项适用于对文件的禁止目的.
+
+需要明白这个选项的很重要的一个特点: 在Samba删除一个目录时的行为。如果一个目录除了veto files之外不包含任何内容,删除操作将\fB失败\fR,除非设置了\fIdelete veto files\fR 是\fIyes\fR.
+
+设置此选项会影响Samba的性能,因为它将强制在扫描所有文件和目录时检查是否匹配.
+
+参见 \fIhide files \fR 和 \fI case sensitive\fR.
+
+
+缺省设置: \fB没有隐藏任何文件. \fR
+
+
+示例:
+
+.nf
+; 隐藏任何文件名带有'Security'的文件,
+; 任何扩展名是.tmp的文件,任何文件名带有'root'的文件
+veto files = /*Security*/*\&.tmp/*root*/
+
+; 隐藏NetAtalk服务器创建的Apple专用的文件
+veto files = /\&.AppleDouble/\&.bin/\&.AppleDesktop/Network Trash Folder/
+.fi
+
+
+.TP
+veto oplock files (S)
+此选项只在对一个共享打开了\fIoplocks\fR选项时才有效.它允许Samba管理员在所选文件上选择性地关闭允许oplocks,这些文件可以用通配符列表来匹配,类拟于在\fIveto files\fR 选项中所用的通配符列表.
+
+缺省设置: \fB没有隐藏oplocks许可\fR
+
+你可能想在已知客户会猛烈争夺的文件上使用此项.在NetBench SMB基准程序下面就是个好例子,它导致客户猛烈地对以\fI.SEM\fR后缀的文件进行连接.为使Samba不在这些文件上允许oplocks,你可以在[global]段或特定的NetBench共享中使用此行:
+
+示例: \fBveto oplock files = /*.SEM/\fR
+
+
+.TP
+vfs object (S)
+与 \fIvfs objects\fR 同义.
+
+
+.TP
+vfs objects (S)
+This parameter specifies the backend names which are used for Samba VFS I/O operations\&. By default, normal disk I/O operations are used but these can be overloaded with one or more VFS objects\&.
+
+
+缺省设置: \fBno value\fR
+
+
+示例: \fBvfs objects = extd_audit recycle\fR
+
+
+.TP
+volume (S)
+此选项允许你忽略共享项提供的卷标.这对于那些坚持要使用一个特殊卷标的安装程序光盘来说很有用.缺省就是共享项的卷标.
+
+缺省设置: \fB共享的名称\fR
+
+.TP
+wide links (S)
+此选项控制服务器是否跟踪UNIX文件系统中的符号链接.指向服务器导出的目录树的链接总是被允许的;此选项只是控制对导出目录树以外的区域的访问情况.
+
+注意设置此选项可对服务器性能产生负面影响,因为samba必须做一些额外的系统调用以检查那些链接.
+
+缺省设置: \fBwide links = yes\fR
+
+
+.TP
+winbind cache time (G)
+This parameter specifies the number of seconds the \fBwinbindd\fR(8) daemon will cache user and group information before querying a Windows NT server again\&.
+
+
+缺省设置: \fBwinbind cache type = 300\fR
+
+
+.TP
+winbind enable local accounts (G)
+This parameter controls whether or not winbindd will act as a stand in replacement for the various account management hooks in smb\&.conf (e\&.g\&. 'add user script')\&. If enabled, winbindd will support the creation of local users and groups as another source of UNIX account information available via getpwnam() or getgrgid(), etc\&.\&.\&.
+
+
+缺省设置: \fBwinbind enable local accounts = yes\fR
+
+
+.TP
+winbind enum groups (G)
+On large installations using \fBwinbindd\fR(8) it may be necessary to suppress the enumeration of groups through the \fBsetgrent()\fR, \fBgetgrent()\fR and \fBendgrent()\fR group of system calls\&. If the \fIwinbind enum groups\fR parameter is \fBno\fR, calls to the \fBgetgrent()\fR system call will not return any data\&.
+
+
+\fBWarning:\fR Turning off group enumeration may cause some programs to behave oddly\&.
+
+
+缺省设置: \fBwinbind enum groups = yes \fR
+
+
+.TP
+winbind enum users (G)
+On large installations using \fBwinbindd\fR(8) it may be necessary to suppress the enumeration of users through the \fBsetpwent()\fR, \fBgetpwent()\fR and \fBendpwent()\fR group of system calls\&. If the \fIwinbind enum users\fR parameter is \fBno\fR, calls to the \fBgetpwent\fR system call will not return any data\&.
+
+
+\fBWarning:\fR Turning off user enumeration may cause some programs to behave oddly\&. For example, the finger program relies on having access to the full user list when searching for matching usernames\&.
+
+
+缺省设置: \fBwinbind enum users = yes \fR
+
+
+.TP
+winbind gid (G)
+This parameter is now an alias for \fBidmap gid\fR
+
+
+The winbind gid parameter specifies the range of group ids that are allocated by the \fBwinbindd\fR(8) daemon\&. This range of group ids should have no existing local or NIS groups within it as strange conflicts can occur otherwise\&.
+
+
+缺省设置: \fBwinbind gid = <空字符串>\fR
+
+
+示例: \fBwinbind gid = 10000-20000\fR
+
+
+.TP
+winbind separator (G)
+This parameter allows an admin to define the character used when listing a username of the form of \fIDOMAIN \fR\\\fIuser\fR\&. This parameter is only applicable when using the \fIpam_winbind\&.so\fR and \fInss_winbind\&.so\fR modules for UNIX services\&.
+
+
+Please note that setting this parameter to + causes problems with group membership at least on glibc systems, as the character + is used as a special character for NIS in /etc/group\&.
+
+
+缺省设置: \fBwinbind separator = '\'\fR
+
+
+示例: \fBwinbind separator = +\fR
+
+
+.TP
+winbind trusted domains only (G)
+This parameter is designed to allow Samba servers that are members of a Samba controlled domain to use UNIX accounts distributed vi NIS, rsync, or LDAP as the uid's for winbindd users in the hosts primary domain\&. Therefore, the user 'SAMBA\\user1' would be mapped to the account 'user1' in /etc/passwd instead of allocating a new uid for him or her\&.
+
+
+缺省设置: \fBwinbind trusted domains only = <no>\fR
+
+
+.TP
+winbind uid (G)
+This parameter is now an alias for \fBidmap uid\fR
+
+
+The winbind gid parameter specifies the range of user ids that are allocated by the \fBwinbindd\fR(8) daemon\&. This range of ids should have no existing local or NIS users within it as strange conflicts can occur otherwise\&.
+
+
+缺省设置: \fBwinbind uid = <空字符串>\fR
+
+
+示例: \fBwinbind uid = 10000-20000\fR
+
+
+.TP
+winbind use default domain (G)
+This parameter specifies whether the \fBwinbindd\fR(8) daemon should operate on users without domain component in their username\&. Users without a domain component are treated as is part of the winbindd server's own domain\&. While this does not benifit Windows users, it makes SSH, FTP and e-mail function in a way much closer to the way they would in a native unix system\&.
+
+
+缺省设置: \fBwinbind use default domain = <no>\fR
+
+
+示例: \fBwinbind use default domain = yes\fR
+
+
+.TP
+wins hook (G)
+当把Samba作为一台WINS服务器运行时,此选项允许你调用一个外部程序更改WINS数据库.此项主要用于动态更新外部名字解析数据库,如动态DNS.
+
+此选项以如下形式指定要调用的一个脚本名或可执行程序:
+
+
+\fBwins_hook operation name nametype ttl IP_list\fR
+
+第一部分参数是opration(操作符),它有三种:"add"、"delete"和"refresh".在很多情况下该操作符可以忽略,因为其它选项可提供足够的信息.注意当有名称以前没有加入过,则有时会用到"refresh",在这种情况下,它应该和"add"有同样含义.
+
+第二部分参数是netbios名.如果该名称不是合法名的话,该功能就不运行.合法的名称应只包含字母,数字,减号,下划线和句点.
+
+第三部分参数是用2位十六进制数字表示的netbios名称类型.
+
+第四部分参数是以秒计算的名称有效时间TTL (time to live).
+
+第五部分是当前该名称所注册的IP地址表.如果表为空则该名称被删除.
+
+一个调用BIND动态DNS更新程序\fBnsupdate\fR的脚本示例在samba源代码的示例目录可以找到.
+
+.TP
+wins partners (G)
+A space separated list of partners' IP addresses for WINS replication\&. WINS partners are always defined as push/pull partners as defining only one way WINS replication is unreliable\&. WINS replication is currently experimental and unreliable between samba servers\&.
+
+
+缺省设置: \fBwins partners = \fR
+
+
+示例: \fBwins partners = 192.168.0.1 172.16.1.2\fR
+
+
+.TP
+wins proxy (G)
+此布尔量选项控制\fBnmbd\fR(8) 是否代替其它主机响应广播名字查询.对一些旧版本客户就可能需要把它设为\fByes\fR .
+
+缺省设置: \fBwins proxy = no\fR
+
+
+.TP
+wins server (G)
+此选项指定nmbd要注册的WINS服务器的IP地址(或DNS域名:IP地址优先(for preference)).如果在你的网络上有一台WINS服务器,就应该把此项设为该服务器的IP地址.
+
+如果你有多个子网的话,应该指定向你的WINS服务器
+
+If you want to work in multiple namespaces, you can give every wins server a 'tag'. For each tag, only one (working) server will be queried for a name. The tag should be seperated from the ip address by a colon.
+
+注意,如有多子网并希望跨子网浏览工作正常的话,应该设置Samba指向一台WINS服务器.
+
+
+缺省设置: \fB未启用\fR
+
+
+示例: \fBwins server = mary:192.9.200.1 fred:192.168.3.199 mary:192.168.2.61\fR
+
+
+For this example when querying a certain name, 192.19.200.1 will be asked first and if that doesn't respond 192.168.2.61 . If either of those doesn't know the name 192.168.3.199 will be queried.
+
+示例: \fBwins server = 192.9.200.1 192.168.2.61\fR
+
+
+.TP
+wins support (G)
+此布尔量选项控制\fBnmbd\fR(8)进程是否作为WINS服务器.你不应该把它设为\fByes\fR,除非有多子网或希望特定的\fBnmbd\fR作为你的WINS服务器.注意在网络上有多台WINS服务器时\fB不\fR应把它设为\fByes\fR.
+
+缺省设置: \fBwins support = no\fR
+
+
+.TP
+workgroup (G)
+此选项规定Samba所在的工作组以便让客户查询.注意它也规定在使用\fBsecurity = domain\fR时所用的域名.
+
+缺省设置: \fB编译时设置为 WORKGROUP\fR
+
+
+示例: \fBworkgroup = MYGROUP\fR
+
+
+.TP
+writable (S)
+与 \fI writeable\fR 相同,是为拼写错误者准备的 :-)
+
+
+.TP
+writeable (S)
+注意它与 \fIread only\fR 反义.
+
+
+.TP
+write cache size (S)
+If this integer parameter is set to non-zero value, Samba will create an in-memory cache for each oplocked file (it does \fBnot\fR do this for non-oplocked files)\&. All writes that the client does not request to be flushed directly to disk will be stored in this cache if possible\&. The cache is flushed onto disk when a write comes in whose offset would not fit into the cache or when the file is closed by the client\&. Reads for the file are also served from this cache if the data is st [...]
+
+
+This cache allows Samba to batch client writes into a more efficient write size for RAID disks (i\&.e\&. writes may be tuned to be the RAID stripe size) and can improve performance on systems where the disk subsystem is a bottleneck but there is free memory for userspace programs\&.
+
+
+The integer parameter specifies the size of this cache (per oplocked file) in bytes\&.
+
+
+缺省设置: \fBwrite cache size = 0\fR
+
+
+示例: \fBwrite cache size = 262144\fR
+
+
+for a 256k cache size per file\&.
+
+
+.TP
+write list (S)
+此选项设置对服务项有读写权的用户列表.如果正在连接的用户属于此列表,那他们就可以有写入权,而不管\fIread only\fR为何值.此列表可以用@group形式描述组名.
+
+注意如果一个用户同时属于读列表和写列表则拥有写入权.
+
+参见 \fIread list \fR 选项。
+
+缺省设置: \fBwrite list = <空字符串>\fR
+
+
+示例: \fBwrite list = admin, root, @staff\fR
+
+
+.TP
+write ok (S)
+注意它与 \fIread only\fR 反义.
+
+
+.TP
+write raw (G)
+此选项规定服务器是否在从客户端传输数据时支持原始方式写SMB消息块.你不应该更改它.
+
+
+缺省设置: \fBwrite raw = yes\fR
+
+
+.TP
+wtmp directory (G)
+This parameter is only available if Samba has been configured and compiled with the option \fB --with-utmp\fR\&. It specifies a directory pathname that is used to store the wtmp or wtmpx files (depending on the UNIX system) that record user connections to a Samba server\&. The difference with the utmp directory is the fact that user info is kept after a user has logged out\&.
+
+
+参见 \fIutmp\fR 选项。 By default this is not set, meaning the system will use whatever utmp file the native system is set to use (usually \fI/var/run/wtmp\fR on Linux)\&.
+
+
+缺省设置: \fBno wtmp directory\fR
+
+
+示例: \fBwtmp directory = /var/log/wtmp\fR
+
+
+.SH "警告 WARNINGS"
+
+.PP
+虽然配置文件允许服务项名包含空格,但你的客户端软件就不一定了.因为在比较中总是忽略空格,所以这不成问题 - 但应该认识到其它可能性.
+
+.PP
+有一条类似提示,很多客户特别是DOS客户,会限制服务项名为8个字符.虽然 \fBsmbd\fR(8)没有这样的限制,但如果这样的客户截去部分服务项名的话,他们的连接尝试会失败.为此你可能要保持你的服务项名在8个字符以内.
+
+.PP
+对于管理员来说[homes] 和 [printers]特殊段的使用很容易,但对缺省属性的多样组合应该小心.当设计这些段时要特别仔细.特别是要确保假脱机目录权限的正确性.
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBsamba\fR(7), \fBsmbpasswd\fR(8), \fBswat\fR(8), \fBsmbd\fR(8), \fBnmbd\fR(8), \fBsmbclient\fR(1), \fBnmblookup\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1).
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/smbpasswd.5 b/src/man5/smbpasswd.5
new file mode 100644
index 0000000..6647144
--- /dev/null
+++ b/src/man5/smbpasswd.5
@@ -0,0 +1,110 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBPASSWD" 5 "" "" ""
+.SH NAME
+smbpasswd \- Samba加密的口令文件。 
+.SH "总览 SYNOPSIS"
+
+.PP
+\fIsmbpasswd\fR
+
+.SH "描述 DESCRIPTION"
+
+.PP
+此文件是 \fBSamba\fR(7) 套件的一部分。 
+
+.PP
+smbpasswd是Samba加密的口令文件。文件中包含了用户名,UNIX用户ID和SMB用户口令(经过hash散列算法处理过),还有账号标志信息及上次更改口令时间。samba已经改进了文件格式并和以前的格式有些不同之处。
+
+.SH "文件格式 FILE FORMAT"
+
+.PP
+Samba 2.2使用的smbpasswd文件格式和UNIX的\fIpasswd(5)\fR文件非常类似。它是个ASCII文件,其中每行内容对应一个用户。每个字段用冒号分隔。任何以#号开始的行将被忽略。对于每个用户在smbpasswd文件中都包含以下的信息: 
+
+.TP
+name
+用户名,必须是标准UNIX口令文件中已经存在的用户名。 
+
+.TP
+uid
+UNIX的用户标识。必须匹配标准UNIX口令文件中相应用户的UID字段。如果不匹配Samba会拒绝确认用户的整个描述项合法。
+
+.TP
+Lanman Password Hash
+此处是用户口令的32位十六进制编码的LANMAN散列表。LANMAN散列表是用DES加密过的用户口令字串。这也是Windows 95/98使用的口令。注意这份口令编码表在字典攻击法下非常脆弱,并且如果两个用户使用了相同的口令的话,这个口令散列表将会相同(也就是这个口令没有像UNIX口令那样“加工”过)。如果用户使用了空口令,这个部分起始将是“NO PASSWORD”的十六进制字串。而如果这些十六进制字串是32个“X”的话,那么这个用户账号就被\fB禁止\fR了,用户就不能登录到samba服务器上了。
+
+\fB警告\fR!!注意到由于SMB/CIFS验证协议的“请求-响应”特性,任何了解口令散列表信息的人都可以伪装成网络中的其他用户。因此,这些口令散列表信息都相当于只是“明文”一样(\fBplain text equivalents\fR). root以外的任何用户都不应该获得这些数据. 为了保护这些口令,smbpasswd文件被存放到只有root用户可以读取和访问的目录中,而smbpasswd文件本身也必须设成只有root用户可以读/写,而其它人无法访问。
+
+.TP
+NT Password Hash
+指定Windows NT的用户口令散列表,也是32位的十六进制编码。NT的散列表用16位的用户口令,little-endian UNICODE编码建立,然后用MD4算法(互联网草案 rfc1321)产生对应的散列表。
+
+这种口令散列表比Lanman Password Hash更安全,因为它用更高质量的散列算法来维护口令和用户信息。但是它仍然存在当两个用户使用相同口令时口令项相同的问题(没有像UNIX口令那样“加工”过)。
+
+\fB警告\fR!!注意到由于SMB/CIFS验证协议的“请求-响应”特性,任何了解口令散列表信息的人都可以伪装成网络中的其他用户。因此,这些口令散列表信息都相当于只是“明文”一样(\fBplain text equivalents\fR). root以外的任何用户都不应该获得这些数据. 为了保护这些口令,smbpasswd文件被存放到只有root用户可以读取和访问的目录中,而smbpasswd文件本身也必须设成只有root用户可以读/写,而其它人无法访问。
+
+.TP
+Account Flags
+账号标志部分描述了用户账号的属性。在Samba 2.2中这个字段是用‘[’和‘]’字符封闭的。它的长度总是13个字符(包含‘[’和‘]’字符), 内容可以是如下的任何字符。 
+
+\fBU\fR - 说明这是一个“用户” 账号,也就是原始用户。在smbpasswd文件中只支持用户和工作站信任账号。
+
+\fBN\fR - 说明这个账号没有口令(Lanman Password Hash和NT Password Hash字段会被忽略)。注意只有在\fBsmb.conf\fR(5)配置文件中设定了\fI null passwords\fR,才允许用户不带口令进行登录。
+
+\fBD\fR - 说明此账号被禁止了,此用户无法登录SMB/CIFS。 
+
+\fBW\fR - 说明此账号是个 “工作站信任” 账号。这类账号被用在把samba作为PDC时, NT工作站和服务器加入到域中的时候。
+
+其它标志作为将来功能扩展所用。这个标志字段余下的空间用空格填充。 
+
+.TP
+Last Change Time
+这个字段由账号最后修改的时间组成。它以字符LCT(含义是“Last Change Time”)后跟UNIX以秒计的时间编码数字(从epoch(公元1970年)开始计算)。
+
+.PP
+所有其余用冒号分隔的字段现在都将被忽略。
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBsmbpasswd\fR(8), \fBSamba\fR(7), 以及互联网草案RFC1321 中MD4算法的详细资料。
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/svnserve.conf.5 b/src/man5/svnserve.conf.5
new file mode 100644
index 0000000..9e63d42
--- /dev/null
+++ b/src/man5/svnserve.conf.5
@@ -0,0 +1,49 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnserve.conf 5
+.SH NAME
+svnserve.conf \- snvserve 的仓库配置文件
+.SH "SYNOPSIS 总览"
+.TP
+\fIrepository-path\fP\fB/conf/svnserve.conf\fP
+.SH "DESCRIPTION 描述"
+每个代码仓库都有一个 \fBsvnserve.conf\fP 文件来控制 \fBsvnserve\fP 守护进程的行为。这个文件位于仓库的 \fBconf\fP 子目录。
+.PP
+文件的结构与 Subversion 用户配置文件的结构类似。顶层是段落 (section),以方括号中的词指定;每个段落之中是 ``variable=value'' 形式的变量定义。以 `#' 开头的行被忽略。\fBsvnserve.conf\fP 当前只使用一个段落,称为 ``general'',并且支持如下变量:
+.PP
+.TP 5
+\fBanon-access\fP = \fBnone\fP|\fBread\fP|\fBwrite\fP
+决定非授权用户的访问级别。\fBwrite\fP 访问允许所有的仓库操作。\fBread\fP 访问允许所有操作,除了提交和修改版本属性。\fBnone\fP 不允许任何访问。默认级别是 \fBread\fP。
+.PP
+.TP 5
+\fBauth-access\fP = \fBnone\fP|\fBread\fP|\fBwrite\fP
+决定授权用户的访问级别,使用与上面相同的访问级别。默认级别是 \fBwrite\fP。
+.PP
+.TP 5
+\fBpassword-db\fP = \fIfilename\fP
+设置密码数据库的位置。\fIfilename\fP 可能是相对仓库中 conf 目录的位置。没有默认值。密码数据库的格式与本文件相似。它只有一个段落 ``users'';段落中的每个变量是一个用户名,每个值是一个密码。
+.PP
+.TP 5
+\fBrealm\fP = \fIrealm\-name\fP
+设置仓库的授权域 (realm)。如果两个仓库拥有相同的密码数据库,它们应当在同一个域中,反之亦然;这样的关联可以允许客户端为多个仓库使用单一的密码缓存。默认域的值是仓库的路径,相对于服务器进程的虚根目录。
+.SH "EXAMPLE 范例"
+下列范例 \fBsvnserve.conf\fP 允许认证用户的读访问,禁止匿名用户的访问,指向相同目录中的密码数据库,定义了一个授权域名。
+.PP
+.nf
+ [general]
+ anon-access = none
+ auth-access = read
+ password-db = passwd
+ realm = My First Repository
+.fi
+.PP
+``passwd'' 文件可能是这样:
+.PP
+.nf
+ [users]
+ joeuser = joepassword
+ jayrandom = randomjay
+.fi
+.SH "SEE ALSO 参见"
+.BR svnserve (8)
diff --git a/src/man5/termcap.5 b/src/man5/termcap.5
new file mode 100644
index 0000000..1c9019c
--- /dev/null
+++ b/src/man5/termcap.5
@@ -0,0 +1,431 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" Modified formatting Sat Jul 24 17:13:38 1993, Rik Faith (faith at cs.unc.edu)
+.\" Modified (extensions and corrections) Sun May  1 14:21:25 MET DST 1994 Michael Haardt
+.\"   If mistakes in the capabilities are found, please send a bug report to:
+.\"   michael at moria.de
+.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr at thyrsus.com)
+.TH TERMCAP 5 "" "Linux" "Linux Programmer's Manual"
+.SH NAME
+termcap \- 终端功能数据库
+.SH 描述 DESCRIPTION
+.B termcap 数据库是一个过时 (obsolete) 工具,用来描述以字符为单位的终端和打印机的功能。它之所以被保留,是为了兼容古老的程序;新程序应当使用
+.BR terminfo (5)
+数据库和相关的库。
+.LP
+.B /etc/termcap
+是一个 ASCII 文件 (数据库主控文件),列出了许多不同类型终端的功能。程序可以读取它,来找到控制实际使用的终端的可视化属性的特定的脱逸字符 (escape code)。(终端的其他方面是 stty 处理的。)termcap 数据库按照 TERM 环境变量进行索引。
+.LP
+.B Termcap
+条目必须以单个逻辑行定义,在新行符处应当用 `\\' 来续行。字段以 `:' 分隔。每个条目的第一个字段从左边起始,包含一系列终端的名称,以 '|' 分隔。
+.LP
+第一个子字段可能 (在 4.3 及以前的 BSD termcap 条目中) 包含由两个字符组成的简称。这个简称可以由大写或小写字母组成。在 4.4BSD termcap 条目中,这个字段被忽略。
+.LP
+第二个子字段 (在较新的 4.4BSD 格式中是第一个字段) 包括环境变量 TERM 使用的名字。只能使用小写字母。可选的硬件功能应当通过附加一个连字符 (hyphen) 和后缀来标记。参见下面的范例。一般使用的后缀是 w (行宽超过 80 个字符),am (自动加边),nam (不自动加边),和 rv (反转视频显示)。
+.LP
+第三个子字段包含一个对这个 termcap 条目的长的描述性的名字。
+.LP
+接下来的字段包含终端功能。任何连续的功能行必须从左边缩进一个指标符 (tab) 位置。
+.LP
+尽管没有定义顺序,建议你将布尔值写在最先,然后是数字值,最后是字符串值;按照字母排序,没有大小写之分。类似功能可以写在同一行。
+.LP
+.nf
+例如:
+.sp
+Head line: vt|vt101|DEC VT 101 terminal in 80 character mode:\e
+Head line: Vt|vt101-w|DEC VT 101 terminal in (wide) 132 character mode:\e
+Boolean: :bs:\e
+Numeric: :co#80:\e
+String: :sr=\eE[H:\e
+.SS "布尔值 Boolean Capabilities"
+.nf
+5i	打印机不在屏幕上回显
+am	自动加边,意味着自动卷行
+bs	Control-H (8 dec.) 执行一个退格 (backspace)
+bw	在行的左边退格回到上一行的右边
+da	显示保留在屏幕上方
+db	显示保留在屏幕下方
+eo	一个空格删除光标所在位置的所有字符
+es	工作在状态行的转义顺序 (escape sequence) 和特殊字符
+gn	普通设备
+hc	这是一个硬拷贝终端
+HC	光标不在底线时几乎看不见
+hs	有一个状态线
+hz	Hazeltine bug, 终端不能打印 ~ 符号
+in	终端插入空字符,不是空格,来填充空白
+km	终端有一个meta键
+mi	光标移动是工作在插入模式下
+ms	光标移动是工作在突出/下划线 (standout/underline) 模式
+NP	无填充字符
+NR	ti 不能反转为 te
+nx	无填充,必须使用 XON/XOFF
+os	终端能重击 (将光标置于要改变的字符下面,再通过键盘输入一个字符来替换原来的字符。)
+ul	终端不能被重击,只能下划线
+xb	蜂窝信号,f1 发射 ESCAPE, f2 发射 ^C
+xn	换行/返转信号
+xo	终端使用xon/xoff协议
+xs	打印的文字超过突出的文本,将显示在突出的位置
+xt	 Teleray 信号,破坏tabs 和奇数化突出模式(standout mode)
+.fi
+.SS "数字值 Numeric Capabilities"
+.nf
+co	列数
+dB	硬拷贝终端上退格 (backspace) 延时,以毫秒为单位
+dC	硬拷贝终端上回车 (carriage return) 延时,以毫秒为单位
+dF	硬拷贝终端上打印纸进纸 (form feed) 延时,以毫秒为单位
+dN	硬拷贝终端上新行符 (new line) 的延时,以毫秒为单位
+dT	硬拷贝终端上制表符停止位 (tabulator stop) 的延时,以毫秒为单位
+dV	硬拷贝终端上垂直制表符停止位的延时,以毫秒为单位
+it	tab 位置间的差分
+lh	软标签高度
+lm	内存线(Lines of memory)
+lw	软标签的宽度
+li	行数
+Nl	软标签的数目
+pb	需要填充的最低波特率
+sg	突出信号
+ug	下划线信号
+vt	虚拟终端数目
+ws	若状态线宽度与屏幕宽度不同时的大小
+.fi
+.SS "字符串值 String Capabilities"
+.nf
+!1	转义为保存键
+!2	转义为挂起键
+!3	转义为撤消键
+#1	转义为帮助键
+#2	转义为 home 键
+#3	转义为输入键
+#4	转义为光标左移键
+%0	重做 (redo) 键
+%1	帮助键
+%2	标记键
+%3	信息 (message) 键
+%4	转移键
+%5	下一对象 (next-object) 键
+%6	打开键
+%7	选项键
+%8	上一对象键
+%9	打印键
+%a	转义为信息 (message) 键
+%b	转义为转移键
+%c	转义为next键
+%d	转义为options键
+%e	转义为previous键
+%f	转义为打印键
+%g	转义为redo键
+%h	转义为替换键
+%i	转义为光标右移键
+%j	转义为恢复键
+&0	转义为取消键
+&1	参考键
+&2	刷新键
+&3	替换键
+&4	重新开始键
+&5	恢复键
+&6	保存键
+&7	挂起键
+&8	撤销键
+&9	转义为开始键
+*0	转义为查找键
+*1	转义为命令键
+*2	转义为拷贝键
+*3	转义为创建键
+*4	转义为删除字符
+*5	转义为删除行
+*6	选择键
+*7	转义为结束键
+*8	转义为清除行键
+*9	转义为退出键
+ at 0	查找键
+ at 1	开始键
+ at 2	取消键
+ at 3	关闭键
+ at 4	命令键
+ at 5	拷贝键
+ at 6	创建键
+ at 7	结束键
+ at 8	回车/发送键
+ at 9	退出键
+al	插入新行
+AL	缩进 %1 行
+ac	成对的图形字符块,映射替代的字符集
+ae	结束替代的字符集
+as	为图形字符块开始替代的字符集
+bc	退格,如果没有 ^H
+bl	铃声
+bt	移动到前一个tab停止位
+cb	从行的开始处清除到光标处
+cc	虚设命令字符
+cd	清除到屏幕的末端
+ce	清除到行末
+ch	水平移动光标到 %1列
+cl	清除屏幕并将光标置位
+cm	光标移动到%1行,%2列 (屏幕中)
+CM	光标移动到%1行,%2列 (内存中)
+cr	回车
+cs	翻滚区域,从%1行到%2行
+ct	清除tab
+cv	垂直移动光标到%1行
+dc	删除一个字符
+DC	删除%1个字符
+dl	删除一行
+DL	删除%1行
+dm	开始delete模式
+do	光标下移一行
+DO	光标下移#1行
+ds	使状态行不可用
+eA	激活替代的字符集
+ec	从光标处开始,删除%1个字符
+ed	结束delete模式
+ei	结束insert模式
+ff	硬拷贝终端上的走纸符
+fs	在进入状态行之前返回字符到他的位置
+F1	由功能键F11发送的字符串
+F2	由功能键F12发送的字符串
+F3	由功能键F14发送的字符串
+\&...	\&...
+F9	由功能键F19发送的字符串
+FA	由功能键F20发送的字符串
+FB	由功能键F21发送的字符串
+\&...	\&...
+FZ	由功能键F45发送的字符串
+Fa	由功能键F46发送的字符串
+Fb	由功能键F47发送的字符串
+\&...	\&...
+Fr	由功能键F63发送的字符串
+hd	移动光标到下一行的中间
+ho	光标置初始位
+hu	移动光标到上一行的中间
+i1	登录时,初始化的字符串1
+i3	登录时,初始化的字符串3
+is	登录时,初始化的字符串2
+ic	插入一个字符
+IC	插入%1个字符
+if	初始化文件
+im	开始插入模式
+ip	插入填充时间和插入后所需要的特殊字符
+iP	初始化程序
+K1	辅助键盘的上左键
+K2	辅助键盘的center键
+K3	辅助键盘的上右键
+K4	辅助键盘的底部左键
+K5	辅助键盘的底部右键
+k0	功能键0
+k1	功能键1
+k2	功能键2
+k3	功能键3
+k4	功能键4
+k5	功能键5
+k6	功能键6
+k7	功能键7
+k8	功能键8
+k9	功能键9
+k;	功能键10
+ka	清除所有的tab键
+kA	插入行键
+kb	退格键
+kB	退回tab停止位
+kC	清屏键
+kd	光标下移键
+kD	删除光标下的字符键
+ke	关闭辅助键盘
+kE	清除到行末
+kF	向前/后滚卷
+kh	光标置初始位键
+kH	光标hown down键
+kI	插入字符/插入模式键
+kl	光标左移键
+kL	整行删除键
+kM	退出插入模式
+kN	下一页
+kP	上一页
+kr	光标右移键
+kR	向后/前滚卷键
+ks	开辅助键盘
+kS	清除到屏幕末端
+kt	清除这个tab键
+kT	设置这儿的tab键
+ku	光标向上键
+l0	如果没有f0,第零个标签功能键
+l1	如果没有f1,第一个标签功能键
+l2	如果没有f2,第二个标签功能键
+\&...	\&...
+la	如果没有f10,第十个标签功能键
+le	光标左移一个字符
+ll	移动光标到左底角
+LE	光标左移%1个字符
+LF	 关闭软标签
+LO	开启软标签
+mb	开始闪烁
+MC	清除软标记
+md	开始粗体模式
+me	开始所有的模式如so, us, mb, md 和 mr
+mh	开始半闪烁模式
+mk	暗模式 (看不见字符)
+ML	设置左软标记
+mm	使终端为meta模式
+mo	使终端离开meta模式
+mp	打开保护属性
+mr	开始反亮模式
+MR	设置右软标记
+nd	光标右移一个字符
+nw	回车命令
+pc	填充字符
+pf	关闭打印机
+pk	对键%1编程,如同用户打印一样发送字符串%2
+pl	对键%1编程,以本地模式执行字符串%2
+pn	对软标签%1编程来显示字符串%2
+po	打开打印机
+pO	打开打印机%1 (<256)字节
+ps	在打印机上打印屏幕内容
+px	对键%1编程来发送字符串%2给计算机
+r1	向设定的终端重置字符串1到sane模式
+r2	向设定的终端重置字符串2到sane模式
+r3	向设定的终端重置字符串3到sane模式
+RA	取消自动标记功能
+rc	恢复存储的光标位置
+rf	重设字符串文件名
+RF	终端输入请求
+RI	光标右移%1个字符
+rp	重复字符%1,共%2次
+rP	替换模式中,在字符发送后填充
+rs	重设字符串
+RX	关闭XON/XOFF流量控制
+sa	设置 %1 %2 %3 %4 %5 %6 %7 %8 %9属性
+SA	激活自动标记功能
+sc	保存光标位置
+se	结束突出模式
+sf	正常滚卷一行
+SF	正常滚卷%1行
+so	开始突出模式
+sr	反向滚卷
+SR	向上滚卷%1行
+st	 设置所有行的制表符的停止位到当前列
+SX	打开XON/XOFF流量控制
+ta	移动到下一个硬件tab
+tc	 从另一个登记项读取终端描述
+te	结束使用光标动作的程序
+ti	开始光标动作的程序
+ts	移动光标到状态行的%1列
+uc	光标下方字符下划线,并向右移动光标
+ue	结束下划线
+up	光标向上一行
+UP	光标向上%1行
+us	开始下划线
+vb	可视化闹铃
+ve	正常的可见光标
+vi	光标不可见
+vs	突出光标
+wi	设置窗口,从%1行到%2行,从3%列到4%列
+XF	XOFF字符,如果没有 ^S
+.fi
+.LP
+还有一些方法定义字符串值功能的控制代码:
+.LP
+通常的字符表示它们自己,除了 '^','\' 和 '%' 。
+.LP
+一个 '^x' 表示Control-x.	Control-A等于 1 个10进制数。
+.LP
+\x  表示一个特殊的代码。x 可以是以下的一个字符:
+.RS
+E 转义符 Escape (27)
+.br
+n 换行 Linefeed (10)
+.br
+r 回车 Carriage return (13)
+.br
+t 制表符 Tabulation (9)
+.br
+b 退格 Backspace (8)
+.br
+f 走纸符 Form feed (12)
+.br
+0 空字符 Null character.  \exxx 指定八进制为 xxx 的字符.
+.RE
+.IP i
+逐一增加参数
+.IP r
+单个参数功能
+.IP +
+增加下一个字符的值到这个参数并以二进制输出
+.IP 2
+对于2,用一个字段将参数以ASCII输出
+.IP d
+对于3,用一个字段将参数以ASCII输出
+.IP %
+打印一个 '%'
+.LP
+如果你使用二进制输出,那么你应该避免空字符,因为它是字符串的终止符。如果Tab键能够成为一个参数的二进制输出,你应该重新设置Tab键长度。
+.IP 警告:
+以上参数的元字符是针对 Minix 系统的 termcap,可能有一些问题,因为可能不是完全与 Linux 的 termcap 兼容的。
+.LP
+图形字符块通过三个字符串值功能来指定:
+.IP as
+开始替代的字符集
+.IP ae
+结束
+.IP ac
+字符对。第一个字符是图形字符块的名称,第二个字符是它的定义。
+.LP
+可以用下面这些名称:
+.sp
+.nf
++	右箭头 right arrow (>)
+,	 左箭头 left arrow (<)
+\&.	下箭头 down arrow (v)
+0	全直角 full square (#)
+I	上箭头 latern (#)
+-	上箭头 upper arrow (^)
+\&'	菱形 rhombus (+)
+a	棋板 chess board (:)
+f	度数 degree (')
+g	加-减 plus-minus (#)
+h	正方形 square (#)
+j	右下角 right bottom corner (+)
+k	右上角 right upper corner (+)
+l	左上角 left upper corner (+)
+m	左下角 left bottom corner (+)
+n	十字 cross (+)
+o	顶线 upper horizontal line (-)
+q	中线 middle horizontal line (-)
+s	下划线 bottom horizontal line (_)
+t	左侧T型 left tee (+)
+u	右侧T型 right tee (+)
+v	底部T型 bottom tee (+)
+w	常规T型 normal tee (+)
+x	垂直线 vertical line (|)
+~	段落 paragraph (???)
+.fi
+.sp
+如果缺少相应功能,将缺省使用圆括号中的值,那是 curses 库使用的值。
+.SH "参见 SEE ALSO"
+.BR termcap (3),
+.BR curses (3),
+.BR terminfo (5)
+.SH "[中文版维护人]"
+.B Timebob <timebob at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000.12.15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man5/texinfo.5 b/src/man5/texinfo.5
new file mode 100644
index 0000000..97a558d
--- /dev/null
+++ b/src/man5/texinfo.5
@@ -0,0 +1,44 @@
+.\" texinfo(5)
+.\" Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.TH TEXINFO 5 "GNU Texinfo" "FSF"
+.SH NAME
+texinfo \- 软件文档系统
+.SH "DESCRIPTION 描述"
+Texinfo 是一种文档系统,使用单一的源文件来产生在线文档以及可打印的输出。它主要用于书写软件使用手册。
+.PP
+要查看 Texinfo 语言和相关工具的全面描述,请查看 Texinfo 手册(以 Texinfo 自身写成)。最简单的,从 shell 中运行这个命令:
+.RS
+.I info texinfo
+.RE
+或者在 Emacs 中输入按键序列:
+.RS
+.I M-x info RET m texinfo RET
+.RE
+也可以把你带到那里。
+.SH "AVAILABILITY 下载"
+ftp://ftp.gnu.org/pub/gnu/texinfo-<version>.tar.gz
+.br
+或者任何 GNU 镜像站。
+.SH "REPORTING BUGS 报告错误"
+将错误报告发送到 bug-texinfo at gnu.org,一般的问题和讨论则发送到 help-texinfo at gnu.org。
+.SH "SEE ALSO 参见"
+info(1), install-info(1), makeinfo(1), texi2dvi(1), texindex(1).
+.br
+emacs(1), tex(1).
+.br
+info(5).
diff --git a/src/man5/ttytype.5 b/src/man5/ttytype.5
new file mode 100644
index 0000000..74b274a
--- /dev/null
+++ b/src/man5/ttytype.5
@@ -0,0 +1,51 @@
+.\" 版权所有(c) 1993 Michael Haardt (michael at moria.de), Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" 这是免费的文档;你可以遵照自由软件基金会出版的GNU通用出版许可版本2或者更高版本的条例来重新发布和/或修改它.
+.\"
+.\" GNU通用出版许可中涉及到的"目标代码(object code)"和"可执行程序(executables)"可解释为任意文档格式化的输出或者排版系统,包括中间的和已输出的结果.
+.\"
+.\" 该文档的发布寄望于能够实用,但并不做任何担保;甚至也不提供隐含的商品性的保证或者针对特殊目的适用性.参见GNU通用版权许可以获知详情.
+.\"
+.\" 你应该接收到与本文档一同发布的GNU通用版权许可的副本;如果没有,请写信到自由软件基金会(Free Software Foundation), Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 于1993年1月24日星期六17:17:50由Rik Faith <faith at cs.unc.edu>修改
+.\" 于1995年10月19日星期四21:25:21 MET由Martin Schulze <joey at infodrom.north.de>修改
+.\" 于1996年10月21日星期一17:47:19 EDT由Eric S. Raymond
+.\" <esr at thyrsus.com>xk修改
+.TH TTYTYPE 5 "1993年7月24日" "Linux" "Linux Programmer's Manual(Linux程序员手册)"
+.SH NAME(名称)
+ttytype \- 终端设备映射的默认终端类型
+.SH DESCRIPTION(描述)
+.I /etc/ttytype
+文件把termcap/terminfo中的终端类型名与tty行关联起来.每行包括一种终端类型,后面跟着空格,然后是tty名(不带
+.IR /dev/ " ) 前缀."
+
+这种关联被
+.BR tset (1)
+程序用来针对用户当前的tty设置环境变量TERM为默认终端名.
+
+这项功能设计是为了Unix微机连接的字符类终端发挥传统分时作业的特色.这在现代的Unix工作站和个人Unix机上很少使用.
+.SH EXAMPLE(示例)
+.I /etc/ttytype
+为:
+.RS
+.sp
+con80x25 tty1
+.br
+vt320 ttys0
+.sp
+.RE
+.SH FILES(相关文件)
+.TP
+.I /etc/ttytype
+tty定义文件.
+.SH "SEE ALSO"(另见)
+.BR getty "(1), " terminfo "(5), " termcap "(5)"
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.B 2000/11/01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man5/tzfile.5 b/src/man5/tzfile.5
new file mode 100644
index 0000000..9bbd110
--- /dev/null
+++ b/src/man5/tzfile.5
@@ -0,0 +1,132 @@
+.TH TZFILE 5
+.SH NAME
+tzfile \- 时区信息
+.SH SYNOPSIS
+.B
+#include <tzfile.h>
+.SH DESCRIPTION
+时区信息文件被
+.IR tzset(3)
+使用, 其开头为特征字符"TZif", 以此
+标示该文件为时区信息文件, 随后六个字节保留未用. 接下来是六
+个"标准"字节顺序(高位在前)的四字节
+.BR long
+类型值, 按顺序描述
+如下:
+.TP
+.I tzh_ttisgmtcnt
+保存在文件中的UTC/local指示器数目. 
+.TP
+.I tzh_ttisstdcnt
+保存在文件中的standard/wall指示器数目. 
+.TP
+.I tzh_leapcnt
+其值保存在文件中的leap second的数目
+.TP
+.I tzh_timecnt
+其值保存在文件中的"变化时间"数目
+.TP
+.I tzh_typecnt
+其值保存在文件中的"本地时间类型"数目(非零!)
+.TP
+.I tzh_charcnt
+保存在文件中的"时区简写符"数目
+
+.PP
+跟在上面这些头部后的是
+.I tzh_timecnt
+个"标准"字节顺序的四字
+节
+.BR long
+类型值, 以升序排序. 每个值均作为一个变化时间(就像
+.IR time (2)
+的返回), 系统依赖这些值来计算本地时间变化. 而在此
+之后的是
+.I tzh_timecnt
+个
+.BR "unsigned char"
+类型的一字节值, 这些
+值指出了文件中描述的多种"本地时间"类型中哪一个与具有相同索
+引的变化时间相关. 这些值可作为
+.I ttinfo
+结构数组的索引. 而
+.I ttinfo
+结构在文件中随后就有定义, 描述如下:
+.in +.5i
+.sp
+.nf
+.ta .5i +\w'unsigned int\0\0'u
+struct ttinfo {
+	long	tt_gmtoff;
+	int	tt_isdst;
+	unsigned int	tt_abbrind;
+};
+.in -.5i
+.fi
+.sp
+结构包括一个"标准"字节顺序的四字节
+.BR long
+类型值
+.I tt_gmtoff, 
+以及一个一字节的
+.I tt_isdst
+和一个一字节的
+.IR tt_abbrind.
+在每
+个结构里,
+.I tt_gmtoff
+给出了要被加到UTC的时间, 以秒为单位, 
+.I tt_isdst
+表明
+.I tm_isdst
+是否可通过
+.I localtime (3)
+设置, 而
+.I tt_abbrind
+可作为时区简写符的数组索引, 该数组在文件中跟在
+.I ttinfo
+结构后面.
+
+.PP
+这样就有
+.I tzh_leapcnt
+个标准字节顺序的四字节对, 每个四字节
+对的第一个值给出一个leap second发生的时间, 就如
+.IR time(2)
+的返回; 每个四字节对的第二个值给出给定时间之后所实现的总的
+leap second数. 四字节对按时间的升序排序.
+
+.PP
+同样有
+.I tzh_ttisstdcnt
+个standard/wall指示器, 每个保存了一
+个一字节值; 这些指示器指出了变化时间(与本地时间类型相关)是
+否被说明为standard time或者wall clock time, 以及当一个时区
+文件被用于处理POSIX 格式时区环境变量时是否使用变化时间.
+
+.PP
+最后, 有
+.I tzh_ttisgmtcnt
+个UTC/local指示器, 每个保存了一个
+一字节值; 这些指示器指出了变化时间(与本地时间类型相关)是否
+被说明为UTC 或者local time, 以及当一个时区文件被用于处理
+POSIX格式时区环境变量时是否使用变化时间.
+
+.PP
+如果
+.I tzh_timecnt
+等于零或者时间参数比文件记录的第一个变化
+时间小的话, 
+.I Localtime
+就使用文件中的第一个标准时间
+.I ttinfo,
+或者在没有标准时间结构是就直接使用第一个
+.I ttinfo
+结构. 
+.SH SEE ALSO
+newctime(3)
+.\" @(#)tzfile.5	7.11
+.\" This file is in the public domain, so clarified as of
+.\" 1996-06-05 by Arthur David Olson (arthur_david_olson at nih.gov).
+
+.\" 中文版维护请mailto: mapping at 263.net
diff --git a/src/man5/utmp.5 b/src/man5/utmp.5
new file mode 100644
index 0000000..c2dd34a
--- /dev/null
+++ b/src/man5/utmp.5
@@ -0,0 +1,192 @@
+.TH UTMP 5 " July 2, 1997 
+.PP
+
+.SH "NAME[名称]
+.PP
+utmp, wtmp - 登 录 记 录(login records) 
+.SH "SYNOPSIS[总览]
+.PP
+#include 
+.SH "DESCRIPTION[描述]
+.PP
+\fButmp\fP 文 件 用 于 记 录 当 前 系 统 用 户 是 哪 些 人。 
+但 是 实 际 的 人 数 可 能 比 这 个 数 目 要 多 , 因 为 并 非 所 有 用 户 都 用 utmp 登 录。 
+
+
+.PP
+\fB警告:\fP \fButmp\fP 
+必 须 置 为 不 可 写 , 因 为 很 多 系 统 程 序 ( 有 点 傻 的 那 种 ) 依 赖 于 它。 
+如 果 你 将 它 置 为 可 写 , 其 他 用 户 可 能 会 修 改 它 (//* 
+导 致 程 序 运 行 出 错 ) 。 (//* (//* )中 为 译 者 注) 
+
+文 件 中 是 一 些 条 目 的 列 表 , 条 目 的 结 构 ( 在 utmp.h 中 进 行 了 声 明 ) 见 下 ( 注 意 这 里 只 列 出
+了 一 部 分 ; 细 节 依 libc 的 版 本 有 所 不 同 ):
+.nf
+
+
+#define UT_UNKNOWN 0
+#define RUN_LVL 1
+#define BOOT_TIME 2
+#define NEW_TIME 3
+#define OLD_TIME 4
+#define INIT_PROCESS 5
+#define LOGIN_PROCESS 6
+#define USER_PROCESS 7
+#define DEAD_PROCESS 8
+#define ACCOUNTING 9
+
+#define UT_LINESIZE 12
+#define UT_NAMESIZE 32
+#define UT_HOSTSIZE 256
+
+struct exit_status {
+short int e_termination; /* process termination status. */
+short int e_exit; /* process exit status. */
+};
+
+struct utmp {
+short ut_type; /* type of login */
+pid_t ut_pid; /* pid of login process */
+char ut_line[UT_LINESIZE]; /* device name of tty - "/dev/" */
+char ut_id[4]; /* init id or abbrev. ttyname */
+char ut_user[UT_NAMESIZE]; /* user name */
+char ut_host[UT_HOSTSIZE]; /* hostname for remote login */
+struct exit_status ut_exit; /* The exit status of a process
+marked as DEAD_PROCESS. */
+long ut_session; /* session ID, used for windowing*/
+struct timeval ut_tv; /* time entry was made. */
+int32_t ut_addr_v6[4]; /* IP address of remote host. */
+char pad[20]; /* Reserved for future use. */
+};
+
+/* Backwards compatibility hacks. */
+#define ut_name ut_user
+#ifndef _NO_UT_TIME
+#define ut_time ut_tv.tv_sec
+#endif
+#define ut_xtime ut_tv.tv_sec
+#define ut_addr ut_addr_v6[0]
+
+
+.fi
+.PP
+
+.PP
+这 个 结 构 给 出 了 与 用 户 终 端 联 系 的 文 件 , 用 户 的 登 录 名 , 记 录 于 \fItime\fP(2) 
+表 中 的 登 录 时 间 。 字 符 串 如 果 比 给 定 的 大 小 小 的 话 , 则 以 \fB'\\0'\fP 
+结 束 之。 
+
+.PP
+第一个条目由 \fIinit\fP(8) 
+执行 \fIinittab\fP(5)而产生。然而,在产生条目以前, 
+\fIinit\fP(8) 先将 utmp 
+清空(通过设定 \fBut_type\fP 为 \fBDEAD_PROCESS\fP来实现. 当\fBut_type\fP 
+不是 \fBDEAD_PROCESS\fP 或 \fBRUN_LVL\fP 并且不存在进程号为 \fBut_pid\fP 
+的进程时,通过用空串清空 \fBut_user\fP, \fBut_host\fP 和 \fBut_time\fP 
+来实现。如果不存在 \fBut_id\fP 的空记录, init(初始化时) 
+会创建一个。它将会依据 inittab 来设置 \fBut_id\fP , 设置\fB ut_pid\fP 
+和 \fBut_time\fP 为当前值,设置 \fBut_type\fP 到 \fBINIT_PROCESS\fP. 
+
+.PP
+\fIgetty\fP(8) 
+依据进程号定位条目, 将 \fBut_type\fP 改为 \fBLOGIN_PROCESS\fP, 改变 \fBut_time\fP, 
+设定 \fBut_line\fP ,然后等待连接建立。 \fIlogin\fP(8), 
+在鉴别完用户后, 将 \fBut_type\fP 改为 \fBUSER_PROCESS\fP, 改变 \fBut_time\fP 
+并设定 \fBut_host\fP 和 \fBut_addr\fP. 根据 \fIgetty\fP(8) 和 \fIlogin\fP(8)完成的功能, 
+可以用 \fBut_line\fP 来定位记录,虽然用 \fBut_pid\fP 可能更好些。 
+
+.PP
+当 \fIinit\fP(8) 
+发现有进程存在时, 它通过 \fBut_pid\fP 来定位它的 utmp 条目, 设定 \fBut_type\fP 
+为 \fBDEAD_PROCESS\fP ,然后用零字节清空 \fBut_user\fP, \fBut_host\fP 和 \fBut_time\fP 
+。
+
+.PP
+\fIxterm\fP(1) 
+和其他终端仿真器直接创建 \fBUSER_PROCESS\fP 记录并通过使用\fB 
+/dev/ttyp\fP\fI%c\fP 的最后两个字母或用\fB p\fP\fI%d\fP \fB(/dev/pts/\fP\fI%d\fP)来产生\fB 
+ut_id\fP 。 如果它们找到这个 id 的 \fBDEAD_PROCESS\fP , 
+它们就使用它,否则就创建一个新的条目. 
+如果可能,它们将它标记为 \fBDEAD_PROCESS\fP 并将 \fBut_line\fP, \fBut_time\fP, 
+\fBut_user\fP 和 \fBut_host\fP 置为 null。
+
+.PP
+\fIxdm\fP(8) 不会创建 
+utmp 记录, 因为没有终端与它相连. 试图用它产生 utmp 
+记录会引起如下错误:finger: can not stat /dev/machine.dom. 它应该用于创建 
+wtmp 条目, 和 \fIftpd\fP(8) 
+相似. 
+
+.PP
+\fItelnetd\fP(8) 设定 \fBLOGIN_PROCESS\fP 
+条目并把其他的的留给 \fIlogin\fP(8) 
+去做。telnet 任务结束后, \fItelnetd\fP(8) cleans up utmp 
+in the described way.(??) 
+
+.PP
+\fBwtmp\fP 文件记录了所有的登录和退出。它的格式与 \fButmp\fP 
+几乎完全一样(例外是:用空用户名来表示在相关终端上的退出)。除此以外, 
+用终端名 \fB"~"\fP 和用户名 \fB"shutdown"\fP 或 \fB"reboot"\fP 
+表示系统关机或重启, the pair of terminal names \fB"|"\fP/\fB"}"\fP 
+logs the old/new system time when \fIdate\fP(1) changes it. \fBwtmp\fP 
+由 \fIlogin\fP(1), 和 \fIinit\fP(1) 以及某些版本的 \fIgetty\fP(1) 使用. 
+但是这些程序并不创建它,所以如果将它删除的话您就得不到记录了。
+
+.SH "FILES[相关文件]
+
+.PP
+/var/run/utmp 
+.br
+/var/log/wtmp 
+
+.SH "CONFORMING TO[遵循] 
+
+.PP
+Linux utmp 既不遵循 v7/BSD 也不遵循 SYSV: 它实际是两者的混合. v7/BSD 
+中域比较少; 最重要的是它没有 \fBut_type\fP (\fBut_type\fP 
+可以使本地的 v7/BSD-类的程序显示(以次为例) dead 或 login 条目.而且,没有为任务分配通道的文件. 
+BSD 则相反(BSD does so), 因为它缺少的是 \fBut_id\fP 域. 在 Linux 中(SYSV 
+中也一样), 记录的 \fBut_id\fP 域一旦设定就不再改变,它保留通道而不需要什么配置文件. 
+清除 \fBut_id\fP 可能会引起 race conditions 从而导致安全漏洞. 就 SYSV 
+的要求来讲,用空字节填充的方式来清空上面提到的各个域不是必须的,但是这样做使得运行采用 
+BSD 语法而又不改变 utmp 的程序成为可能. 正如上面所写的,Linux 
+在句子中使用 BSD 的惯例.
+
+.PP
+SYSV 在句子中仅使用类型域去标识它们或是登录信息(例如:. \fB"new 
+time"\fP). \fBUT_UNKNOWN\fP 只在 Linux 中有. SYSV 没有 \fBut_host\fP 和 \fBut_addr_v6\fP 
+域. 
+
+.PP
+不象其它各种系统, 您可以通过删除文件来禁止 utmp , 在 Linux 中 
+utmp 必须一直存在. 如果你要禁止 \fIwho\fP(1) 命令,您需要使整个 
+utmp 不可读. 
+
+.PP
+需要注意的是在 libc5 和 libc6 中 utmp 的结构是不同的.因此使用旧结构的程序会破坏 
+\fI/var/run/utmp\fP 和/or \fI/var/log/wtmp\fP. Debian 系统包含一个修补过的 
+libc5 它可以使用新的格式. 但对 wtmp, 问题依然存在因为它直接对 
+libc5 进行存取.
+
+.SH "RESTRICTIONS[限制]
+
+.PP
+文件格式依机器而不同, 因此推荐的做法是:在创建它的机器上使用它.
+
+.SH "BUGS[缺憾]
+
+.PP
+本手册页基于 libc5 , 现在可能情况已有不同了. 
+
+.SH "SEE ALSO[另见]
+.PP
+\fBac\fP(1), \fBdate\fP(1), 
+\fBgetutent\fP(3), 
+\fBinit\fP(8), \fBlast\fP(1), \fBlogin\fP(1), \fBupdwtmp\fP(3), \fBwho\fP(1) 
+
+.SH "[中文版维护人]"
+.B Redcandle <redcandle51 at chinaren.com>
+.SH "[中文版最新更新]"
+.B 2001.11.08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man6/zic2xpm.6 b/src/man6/zic2xpm.6
new file mode 100644
index 0000000..bed30cb
--- /dev/null
+++ b/src/man6/zic2xpm.6
@@ -0,0 +1,81 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\" See section COPYING below.
+.TH zic2xpm 6 "11 Apr 1996" "zic2xpm 2.0" "Games"
+.SH NAME
+zic2xpm \- 将 ZIICS 象棋片段 (chess pieces) 转换为 XBoard (XPM/XIM) 片段的工具。
+.SH "总览 SYNOPSIS"
+zic2xpm
+.B file1 [file2 ...]
+.SH "描述"
+.B zic2xpm
+将一个或多个 ZIICS 片段文件转换为 XBoard 可用的格式。
+如果你给出一个以上的文件名,小心同样大小的多个文件 (? sets) 不能共存于同一目录下。
+不同大小的多个文件可以共存于单一目录下。
+.SH "范例 EXAMPLE"
+如果你想新建一个目录,包含设定 (? sets) SET2.V32, SET2.V40, SET2.V50, 和 SET2.V56, 
+它们都在 ~/ziics 目录中,你可以这样:
+
+.nf
+      mkdir Sets
+      cd Sets
+      zic2xpm ~/ziics/SET2.*
+.fi
+
+然后你可以这样运行 XBoard:
+
+.nf
+     xboard -pixmap Sets
+.fi
+.SH BUGS
+请向
+.B frankm at hiwaay.net
+报告它的任何 bug。
+.SH "参见 SEE ALSO"
+.BR
+.BR xboard ( 6 ).
+.SH "作者 AUTHOR"
+Frank McIngvale (frankm at hiwaay.net)
+.SH "版权所有 COPYING"
+Copyright (C) 1996 Free Software Foundation, Inc.
+.PP
+NOTICE: The piece images distributed with ZIICS are
+copyrighted works of their original creators.  Images 
+converted with zic2xpm may not be redistributed without
+the permission of the copyright holders.  Do not contact
+the authors of zic2xpm or of ZIICS itself to request
+permission. 
+.PP
+NOTICE:  The format of the ZIICS piece file was gleaned from
+SHOWSETS.PAS, a part of ZIICS.  Thanks to Andy McFarland
+(Zek on ICC) for making this source available!  ZIICS is a 
+completely separate and copyrighted work of Andy
+McFarland.  Use and distribution of ZIICS falls under the
+ZIICS license, NOT the GNU General Public License.
+.PP
+NOTICE: The format of the VGA imageblocks was determined
+by experimentation, and without access to any
+of Borland Inc.'s BGI library source code.
+.PP
+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 version.  However, the above notices
+MUST BE RETAINED in any copy that you redistribute or modify.
+.PP
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+.PP
+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., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+.SH "[中文版维护人]"
+.B bbbush <bbbush at 163.com>
+.br
+我怀疑还有没有人会看这篇文档
+.SH "[中文版最新更新]"
+.B 2003.11.22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man7/LDP.7 b/src/man7/LDP.7
new file mode 100644
index 0000000..5aefc31
--- /dev/null
+++ b/src/man7/LDP.7
@@ -0,0 +1,89 @@
+.ig \"-*- nroff -*-
+Copyright (C) 2000 Stein Gjoen
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.TH "LDP Introduction" "ldp" 2001-11-15 "LDP"
+.SH NAME
+LDP \- Linux文档工程的简介,包括帮助,向导和文档 
+.SH "总览 SYNOPSIS"
+Linux文档工程(LDP)为Linux社区提供多种自由文档资源,包括向导 (guide),常见问答 (FAQ),入门 (HOWTO) 以及手册页 (man-pages). 
+
+.SH "作者 AUTHORS"
+独立的作者维护着LDP档案中的不同的文档,
+他们的名字列在了每一个入门(HOWTO)的开头.
+如果你对于某个文档有任何问题或者意见,我们鼓励你直接和作者联系。 
+
+.SH "网页 WEB PAGES"
+LDP有自己专门的网站,
+同时还有很多不同的翻译工程,可以从LDP的主网站
+.RS
+\fBhttp://www\&.tldp\&.org/\fP
+.RE
+(或许你想把它加入书签) 链接过去.
+
+.SH "手册页 MAN PAGES"
+手册页的状态信息以及翻译情况的网页位于
+.RS
+\fBhttp://www\&.win\&.tue\&.nl/~aeb/linux/man/\fP
+.RE
+
+.SH "邮件列表 MAILING LISTS"
+LDP有一系列的专门的邮件列表,绝大多数是面向文档作者的: 
+.PP
+.PD 0
+.TP
+.PD
+\fB<ldp\-announce at lists\&.tldp\&.org>\fP
+LDP的通告 
+.TP
+\fB<ldp\-discuss at lists\&.tldp\&.org>\fP
+对于LDP的一般的讨论 
+.PP
+要加入这些列表,可以发一封信体含有 "subscribe" 的信相应地
+给 \fB<ldp\-announce\-request at lists\&.tldp\&.org>\fP
+或者 \fB<ldp\-discuss\-request at lists\&.tldp\&.org>\fP.
+这些邮件列表同时也在tldp\&.org站点有存档. 
+
+.SH "文件 FILES"
+大多数(Linux)发行版在安装的时候包含了入门(HOWTOs)和简单入门(mini-HOWTOS)在相应目录下: 
+.PD 0
+.TP
+\fB/usr/doc/\fP                   (文档的旧位置)
+.TP
+\fB/usr/share/doc/\fP             (文档的新位置)
+.TP
+\fB/usr/share/doc/HOWTO/\fP       (HOWTO 文件)
+.TP
+\fB/usr/share/doc/HOWTO/mini/\fP  (mini-HOWTO 文件)
+.PD
+.SH "参见 SEE ALSO"
+.BR man (1),
+.BR xman (1x),
+.BR info (1)
+.PP
+\fBinfo\fP 信息页,使用
+.BR emacs (1)
+或
+.BR info (1)
+来阅读。
+
+.SH "[中文版维护人]"
+.B 严亚勤 <tinyfat at 263.net>
+.SH "[中文版最新更新]"
+.B 2002.04.26
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man7/abort.7 b/src/man7/abort.7
new file mode 100644
index 0000000..fc5d901
--- /dev/null
+++ b/src/man7/abort.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ABORT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ABORT \- 退出当前事务
+
+.SH SYNOPSIS
+.sp
+.nf
+ABORT [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBABORT\fR 回卷当前事务并且废弃所有当前事务中做的更新。 这个命令和 SQL 命令
+ROLLBACK [\fBrollback\fR(7)],
+的行为完全一样, 只是由于历史原因而保留下来。
+.SH "PARAMETERS 参数"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+ 可选的关键字,它们没有什么影响。
+.SH "NOTES 注意"
+.PP
+ 使用 COMMIT [\fBcommit\fR(7)] to
+成功地中止一个事务。
+.PP
+ 如果不在事务内部发出 ABORT 不会有问题,但是会产生一个警告信息。
+.SH "EXAMPLES 例子"
+.PP
+ 退出全部变更:
+.sp
+.nf
+ABORT;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 此命令是 PostgreSQL 基于历史原因做的扩展。 ROLLBACK 是 SQL 中等价的命令。
+.SH "SEE ALSO 参见"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)], ROLLBACK [\fBrollback\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_aggregate.7 b/src/man7/alter_aggregate.7
new file mode 100644
index 0000000..03e860d
--- /dev/null
+++ b/src/man7/alter_aggregate.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER AGGREGATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER AGGREGATE \- 修改一个聚集函数的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER AGGREGATE \fIname\fR ( \fItype\fR ) RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER AGGREGATE\fR 改变一个聚集函数的定义。目前唯一可用的功能是对聚集函数进行重命名。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现有的聚集函数的名字(可以有模式修饰)。
+.TP
+\fB\fItype\fB\fR
+ 聚集函数的参数数据类型,如果函数接受任何数据类型,则是 *。
+.TP
+\fB\fInewname\fB\fR
+ 聚集函数的新名字。
+.SH "EXAMPLES 例子"
+.PP
+ 给一个接受 integer 类型参数的叫 \fImyavg\fR 的聚集函数重命名为 \fImy_average\fR:
+.sp
+.nf
+ALTER AGGREGATE myavg(integer) RENAME TO my_average;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里面没有 \fBALTER AGGREGATE\fR 语句。
+.SH "SEE ALSO 参见"
+CREATE AGGREGATE [\fBcreate_aggregate\fR(7)], DROP AGGREGATE [\fBdrop_aggregate\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_conversion.7 b/src/man7/alter_conversion.7
new file mode 100644
index 0000000..eb9f4da
--- /dev/null
+++ b/src/man7/alter_conversion.7
@@ -0,0 +1,38 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER CONVERSION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER CONVERSION \- 修改一个编码转换的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER CONVERSION \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER CONVERSION\fR 修改一个编码转换的定义。 目前能用的唯一的一个功能是重命名这个转换。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现有的编码转换的名字(可以有模式修饰)。
+.TP
+\fB\fInewname\fB\fR
+ 转换的新名字。
+.SH "EXAMPLES 例子"
+.PP
+ 把编码转换 iso_8859_1_to_utf_8 重新命名为 latin1_to_unicode:
+.sp
+.nf
+ALTER CONVERSION iso_8859_1_to_utf_8 RENAME TO latin1_to_unicode;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 ALTER CONVERSION 语句。
+.SH "SEE ALSO 参见"
+CREATE CONVERSION [\fBcreate_conversion\fR(7)], DROP CONVERSION [\fBdrop_conversion\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_database.7 b/src/man7/alter_database.7
new file mode 100644
index 0000000..6104468
--- /dev/null
+++ b/src/man7/alter_database.7
@@ -0,0 +1,55 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER DATABASE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER DATABASE \- 修改一个数据库
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER DATABASE \fIname\fR SET \fIparameter\fR { TO | = } { \fIvalue\fR | DEFAULT }
+ALTER DATABASE \fIname\fR RESET \fIparameter\fR
+
+ALTER DATABASE \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER DATABASE\fR 用于改变一个数据库的属性。
+.PP
+ 头两种形式为 PostgreSQL 数据库修改缺省的会话运行时配置变量。 随后在该数据库上启动一个新的会话的时候, 在启动会话之前先有效地运行 SET variable TO value。 数据库相关的缺省值覆盖任何在 postgresql.conf 里出现或者从 postmaster 命令行接收到的设置。 只有数据库所有者或者超级用户可以为一个数据库修改会话缺省。
+.PP
+ 第三种形式修改该数据库的名称。只有数据库所有者可以重命名一个数据库,并且只有在他有 CREATEDB 权限的时候可以。 当前的数据库不能被重命名。(如果你需要这么做,那么连接另外一个数据库。)
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 需要修改会话缺省的数据库的名字。
+.TP
+\fB\fIparameter\fB\fR
+.TP
+\fB\fIvalue\fB\fR
+ 把指定的数据库配置变量的会话缺省值设置为给出的数值。 如果 value 使用了 DEFAULT 或者是等效的 RESET, 那么与数据库相关的变量设置将被删除并且在新的会话中将继承缺省设置。 用 RESET ALL 清除所有设置。
+
+ 参阅 SET [\fBset\fR(7)] 和 Section 16.4 ``Run-time Configuration'' 获取有关允许的变量名和数值的 更多信息。
+.TP
+\fB\fInewname\fB\fR
+ 数据库的新名字。
+.SH "NOTES 注意"
+.PP
+ 使用 ALTER USER [\fBalter_user\fR(7)], 我们也可以把一个会话缺省绑定到一个特定用户,而不是某个数据库上。 如果存在冲突,那么用户声明的设置覆盖数据库相关的设置。
+.SH "EXAMPLES 例子"
+.PP
+ 要关闭在数据库 test 上缺省的索引使用∶
+.sp
+.nf
+ALTER DATABASE test SET enable_indexscan TO off;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBALTER DATABASE\fR 语句是一个 PostgreSQL 扩展。
+.SH "SEE ALSO 参见"
+ALTER USER [\fBalter_user\fR(7)], CREATE DATABASE [\fBcreate_database\fR(l)], DROP DATABASE [\fBdrop_database\fR(l)], SET [\fBset\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_domain.7 b/src/man7/alter_domain.7
new file mode 100644
index 0000000..2ff6274
--- /dev/null
+++ b/src/man7/alter_domain.7
@@ -0,0 +1,102 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER DOMAIN \- 改变一个域的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER DOMAIN \fIname\fR
+    { SET DEFAULT \fIexpression\fR | DROP DEFAULT }
+ALTER DOMAIN \fIname\fR
+    { SET | DROP } NOT NULL
+ALTER DOMAIN \fIname\fR
+    ADD \fIdomain_constraint\fR
+ALTER DOMAIN \fIname\fR
+    DROP CONSTRAINT \fIconstraint_name\fR [ RESTRICT | CASCADE ]
+ALTER DOMAIN \fIname\fR
+    OWNER TO \fInew_owner\fR 
+  
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER DOMAIN\fR 修改一个现有域的定义。 它有几种子形式:
+.TP
+\fBSET/DROP DEFAULT\fR
+ 这些形式设置或者删除一个域的缺省值。请注意缺省只适用于随后的 INSERT 命令;他们并不影响使用该域已经在表中的行。
+.TP
+\fBSET/DROP NOT NULL\fR
+ 这些形式改变一个域是否标记为允许 NULL 值或者是拒绝 NULL 值。 在使用域的字段包含非空的值的时候,你只可以 SET NOT NULL。
+.TP
+\fBADD \fIdomain_constraint\fB\fR
+ 这种形式向域中增加一种新的约束,使用的语法和
+CREATE DOMAIN [\fBcreate_domain\fR(7)] 一样。这样做只有在所有使用域的字段满足新的约束的条件下才能成功。
+.TP
+\fBDROP CONSTRAINT\fR
+ 这种形式删除一个域上的约束。
+.TP
+\fBOWNER\fR
+ 这种形式把域的所有者改变为另外一个用户。
+.PP
+ 要使用 ALTER DOMAIN,你必须拥有该域;但是使用 ALTER DOMAIN OWNER 的时候你必须是数据库超级用户。
+.PP
+.SH "PARAMETERS 参数"
+.PP
+.TP
+\fB\fIname\fB\fR
+ 一个要修改的现有域的名字(可以有模式修饰)。
+.TP
+\fB\fIdomain_constraint\fB\fR
+ 域的新的域约束。
+.TP
+\fB\fIconstraint_name\fB\fR
+ 要删除的现有约束。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖这个对象的约束。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象,则拒绝删除约束。这是缺省行为。
+.TP
+\fB\fInew_owner\fB\fR
+ 域的新所有者的用户名。
+.PP
+.SH "EXAMPLES 例子"
+.PP
+ 给一个域增加一个 NOT NULL 约束:
+.sp
+.nf
+ALTER DOMAIN zipcode SET NOT NULL;
+  
+.sp
+.fi
+ 从一个域里删除一个 NOT NULL 约束:
+.sp
+.nf
+ALTER DOMAIN zipcode DROP NOT NULL;
+
+.sp
+.fi
+.PP
+ 给一个域里增加一个检查约束:
+.sp
+.nf
+ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
+   
+.sp
+.fi
+.PP
+ 从一个域里删除一个检查约束:
+.sp
+.nf
+ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;
+   
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBALTER DOMAIN\fR 语句与 SQL99 兼容,除 OWNER 变种之外,这个变种是 PostgreSQL 的扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_function.7 b/src/man7/alter_function.7
new file mode 100644
index 0000000..e04bb92
--- /dev/null
+++ b/src/man7/alter_function.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER FUNCTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER FUNCTION \- 修改一个函数的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER FUNCTION \fIname\fR ( [ \fItype\fR [, ...] ] ) RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER FUNCTION\fR 修改一个函数的定义,目前唯一的功能是修改它的名字。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现有的函数的名字(可以有模式修饰)。
+.TP
+\fB\fItype\fB\fR
+ 该函数参数的数据类型。
+.TP
+\fB\fInewname\fB\fR
+ 函数的新名字。
+.SH "EXAMPLES 例子"
+.PP
+ 把名字为 sqrt,参数类型为 integer 的函数重命名为 square_root:
+.sp
+.nf
+ALTER FUNCTION sqrt(integer) RENAME TO square_root;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里有一个 ALTER FUNCTION 语句,但是它并没有提供重命名函数的选项。
+.SH "SEE ALSO 参见"
+CREATE FUNCTION [\fBcreate_function\fR(7)], DROP FUNCTION [\fBdrop_function\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_group.7 b/src/man7/alter_group.7
new file mode 100644
index 0000000..ca75ead
--- /dev/null
+++ b/src/man7/alter_group.7
@@ -0,0 +1,52 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER GROUP" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER GROUP \- 修改一个用户组
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER GROUP \fIgroupname\fR ADD USER \fIusername\fR [, ... ]
+ALTER GROUP \fIgroupname\fR DROP USER \fIusername\fR [, ... ]
+
+ALTER GROUP \fIgroupname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER GROUP\fR 用于修改一个用户组。 头两个形式从组中增加或者删除用户。 只有数据库超级用户才能使用这条命令。向组中增加用户并不创建用户。 同样从组中删除用户也不删除用户本身。
+.PP
+ 第三种变体修改一个组的名字。只有数据库超级用户可以重命名组。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIgroupname\fB\fR
+ 要更改的组名称。
+.TP
+\fB\fIusername\fB\fR
+ 准备向组中增加或从组中删除的用户名。用户名必须已经存在。
+.TP
+\fB\fInewname\fB\fR
+ 组的新名字。
+.SH "EXAMPLES 例子"
+.PP
+ 向组中增加用户:
+.sp
+.nf
+ALTER GROUP staff ADD USER karl, john;
+.sp
+.fi
+ 从组中删除用户:
+.sp
+.nf
+ALTER GROUP workers DROP USER beth;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准里没有 ALTER GROUP 语句。角色(roles)的概念与之类似。
+.SH "SEE ALSO 参见"
+CREATE GROUP [\fBcreate_group\fR(7)], DROP GROUP [\fBdrop_group\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_language.7 b/src/man7/alter_language.7
new file mode 100644
index 0000000..e99a478
--- /dev/null
+++ b/src/man7/alter_language.7
@@ -0,0 +1,30 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER LANGUAGE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER LANGUAGE \- 修改一个过程语言的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER LANGUAGE \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER LANGUAGE\fR 修改一门语言的定义。 目前唯一的功能就是重命名语言。只有超级用户可以重命名一门语言。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一门语言的名字
+.TP
+\fB\fInewname\fB\fR
+ 该语言的新名字
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 ALTER LANGUAGE 语句。
+.SH "SEE ALSO 参见"
+CREATE LANGUAGE [\fBcreate_language\fR(7)], DROP LANGUAGE [\fBdrop_language\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_operator_class.7 b/src/man7/alter_operator_class.7
new file mode 100644
index 0000000..71ffd75
--- /dev/null
+++ b/src/man7/alter_operator_class.7
@@ -0,0 +1,34 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER OPERATOR CLASS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER OPERATOR CLASS \- 修改一个操作符表的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER OPERATOR CLASS \fIname\fR USING \fIindex_method\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER OPERATOR CLASS\fR 修改一个操作符表的定义。 目前唯一支持的功能是重命名这个操作符表。
+
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现有操作符的名字(可以有模式修饰) class.
+.TP
+\fB\fIindex_method\fB\fR
+ 这个操作符表操作的索引方法的名字。
+.TP
+\fB\fInewname\fB\fR
+ 操作符表的新名字。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 ALTER OPERATOR CLASS 语句。
+.SH "SEE ALSO 参见"
+CREATE OPERATOR CLASS [\fBcreate_operator_class\fR(7)], DROP OPERATOR CLASS [\fBdrop_operator_class\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_schema.7 b/src/man7/alter_schema.7
new file mode 100644
index 0000000..2d9cda4
--- /dev/null
+++ b/src/man7/alter_schema.7
@@ -0,0 +1,30 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER SCHEMA" "7" "2003-11-02" "SQL - Schema Statements" "SQL Commands"
+.SH NAME
+ALTER SCHEMA \- 修改一个模式的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER SCHEMA \fIname\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER SCHEMA\fR 修改一个模式的定义。 现在它唯一的功能就是重命名模式。 要重命名模式,你必须拥有这个这个模式并且有在该数据库里 CREATE 的权限。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 模式的名字
+.TP
+\fB\fInewname\fB\fR
+ 模式的新名字
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 ALTER SCHEMA 语句。
+.SH "SEE ALSO 参见"
+CREATE SCHEMA [\fBcreate_schema\fR(7)], DROP SCHEMA [\fBdrop_schema\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_sequence.7 b/src/man7/alter_sequence.7
new file mode 100644
index 0000000..626efcc
--- /dev/null
+++ b/src/man7/alter_sequence.7
@@ -0,0 +1,70 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER SEQUENCE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER SEQUENCE \- 更改一个序列生成器的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER SEQUENCE \fIname\fR [ INCREMENT [ BY ] \fIincrement\fR ]
+    [ MINVALUE \fIminvalue\fR | NO MINVALUE ] [ MAXVALUE \fImaxvalue\fR | NO MAXVALUE ]
+    [ RESTART [ WITH ] \fIstart\fR ] [ CACHE \fIcache\fR ] [ [ NO ] CYCLE ]
+  
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER SEQUENCE\fR 命令修改一个现有的序列发生器的参数。 任何没有明确在 ALTER SEQUENCE 命令里声明的参数都将保留原先的设置。
+.SH "PARAMETERS 参数"
+.PP
+.TP
+\fB\fIname\fB\fR
+ 一个要修改的序列的名字(可以有模式修饰)。
+.TP
+\fB\fIincrement\fB\fR
+INCREMENT BY \fIincrement\fR 子句是可选的。一个正数会让序列成为递增序列,负数则成为递减序列。 如果没有声明,将沿用原来的递增值。
+.TP
+\fB\fIminvalue\fB\fR
+.TP
+\fBNO MINVALUE\fR
+ 可选的子句 MINVALUE \fIminvalue\fR  决定一个序列可以生成的最小的值。如果声明了 NO MINVALUE,将使用缺省值, 对于递增和递减的序列分别是 1 和 -2^63-1。如果没有声明任何选项,则沿用当前的最小值。
+.TP
+\fB\fImaxvalue\fB\fR
+.TP
+\fBNO MAXVALUE\fR
+ 可选的子句 MAXVALUE \fImaxvalue\fR 决定序列的最大值。如果声明了 NO MAXVALUE,则使用缺省值,对于递增和递减的序列分别是 2^63-1 和 -1。如果两个选项都没有声明, 则沿用当前的最大值。
+.TP
+\fB\fIstart\fB\fR
+ 可选的 RESTART WITH \fIstart\fR 子句允许序列可以在任何地方开始。
+.TP
+\fB\fIcache\fB\fR
+CACHE \fIcache\fR 选项打开序列号预分配并存储在内存缓冲的功能。最小值是 1 (也就是每次只能生成一个数值,没有缓冲)。 如果没有声明,将沿用旧的缓冲值。
+.TP
+\fBCYCLE\fR
+ 可选的键字 CYCLE 可以用于允许序列在达到递增序列的 maxvalue 或者递减序列的 minvalue的时候重叠使用。 如果达到了极限,那么生成的下一个数字将分别是
+\fIminvalue\fR 或
+\fImaxvalue\fR。
+.TP
+\fBNO CYCLE\fR
+ 如果声明了可选键字 NO CYCLE,任何在序列达到其最大极限后对 nextval 的调用都将返回错误。 如果既未声明 CYCLE 也未声明 NO CYCLE, 那么将沿用原有的循环行为。
+.PP
+.SH "EXAMPLES 例子"
+.PP
+ 从 105 开始重新开始一个叫 serial 的序列:
+.sp
+.nf
+ALTER SEQUENCE serial RESTART WITH 105;
+.sp
+.fi
+.SH "NOTES 注意"
+.PP
+ 为了避免并发的事务从同一个序列获取数值的时候被阻塞住,ALTER SEQUENCE 操作从来不会回滚; 修改马上生效并且不能恢复。
+.PP
+\fBALTER SEQUENCE\fR 将不会立即影响后端的 nextval 结果,除了当前的之外, 因为它又已经缓冲了的序列号。它们只有再使用光所有已经缓冲的数值之后才能意识到改变了的序列参数。当前后端将立即被影响。
+.SH "COMPATIBILITY  兼容性"
+.SS "SQL99"
+.PP
+\fBALTER SEQUENCE\fR 是 PostgreSQL  语言扩展。在 SQL99 里没有 ALTER SEQUENCE 语句。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_table.7 b/src/man7/alter_table.7
new file mode 100644
index 0000000..1b95d23
--- /dev/null
+++ b/src/man7/alter_table.7
@@ -0,0 +1,225 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER TABLE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER TABLE \- 修改表的定义
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ADD [ COLUMN ] \fIcolumn\fR \fItype\fR [ \fIcolumn_constraint\fR [ ... ] ]
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    DROP [ COLUMN ] \fIcolumn\fR [ RESTRICT | CASCADE ]
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR { SET DEFAULT \fIexpression\fR | DROP DEFAULT }
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR { SET | DROP } NOT NULL
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR SET STATISTICS \fIinteger\fR
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ALTER [ COLUMN ] \fIcolumn\fR SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    SET WITHOUT OIDS
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    RENAME [ COLUMN ] \fIcolumn\fR TO \fInew_column\fR
+ALTER TABLE \fIname\fR
+    RENAME TO \fInew_name\fR
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    ADD \fItable_constraint\fR
+ALTER TABLE [ ONLY ] \fIname\fR [ * ]
+    DROP CONSTRAINT \fIconstraint_name\fR [ RESTRICT | CASCADE ]
+ALTER TABLE \fIname\fR
+    OWNER TO \fInew_owner\fR
+ALTER TABLE \fIname\fR
+    CLUSTER ON \fIindex_name\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER TABLE\fR 变更一个现存表的定义。它有好几种子形式:
+.TP
+\fBADD COLUMN\fR
+ 这种形式用和 CREATE TABLE [\fBcreate_table\fR(7)]  里一样的语法向表中增加一个新的字段。
+.TP
+\fBDROP COLUMN\fR
+ 这种形式从表中删除一个字段。请注意,和这个字段相关的索引和表约束也会被自动删除。 如果任何表之外的对象依赖于这个字段, 你必须说 CASCADE,比如,外键参考,视图等等。
+.TP
+\fBSET/DROP DEFAULT\fR
+ 这种形式为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的 INSERT 命令; 它们不会导致已经在表中的行的数值的修改。我们也可以为视图创建缺省, 这个时候它们是在视图的 ON INSERT 规则应用之前插入 INSERT 语句中去的。
+.TP
+\fBSET/DROP NOT NULL\fR
+ 这些形式修改一个字段是否标记为允许 NULL 值或者是拒绝 NULL 值。 如果表在字段中包含非空值,那么你只可以 SET NOT NULL。
+.TP
+\fBSET STATISTICS\fR
+This form
+ 这个形式为随后的
+ANALYZE [\fBanalyze\fR(7)] 操作设置每字段的统计收集目标。 目标的范围可以在 0 到 1000 之内设置;另外,把他设置为 -1 则表示重新恢复到使用系统缺省的统计目标。
+.TP
+\fBSET STORAGE\fR
+ 这种形式为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。 PLAIN 必需用于定长的数值,比如 integer,并且是内联的,不压缩的。 MAIN 用于内联,可压缩的数据。 EXTERNAL 用于外部保存,不压缩的数据, 而 EXTENDED 用于外部的压缩数据。 EXTENDED 是所有支持它的数据的缺省。 使用 EXTERNAL 将令在 text 字段上的子字串操作更快, 付出的代价是增加了存储空间。
+.TP
+\fBSET WITHOUT OIDS\fR
+ 从表中删除 oid 字段。从表中删除(设置为没有)oid 同样不会立即发生。 OID 使用的空间将在元组被更新的时候回收。不更新元组的时候, OID 的空间和数值的维护都是不确定的。这个过程语义上类似 DROP COLUMN  过程。
+.TP
+\fBRENAME\fR
+RENAME 形式改变一个表的名字(或者是一个索引,一个序列,或者一个视图)或者是表中一个独立字段的名字。 它对存储的数据没有任何影响。
+.TP
+\fBADD \fItable_constraint\fB\fR
+ 这个形式给表增加一个新的约束,用的语法和
+CREATE TABLE [\fBcreate_table\fR(7)] 一样。
+.TP
+\fBDROP CONSTRAINT\fR
+ 这个形式删除一个表上的约束。 目前,在表上的约束不要求有唯一的名字,因此可能有多个约束匹配声明的名字。 所有这样的约束都将被删除。
+.TP
+\fBOWNER\fR
+ 这个形式改变表,索引,序列或者视图的所有者为指定所有者。
+.TP
+\fBCLUSTER\fR
+ 这种形式为将来对表进行的 CLUSTER [\fBcluster\fR(7)]
+操作做标记。
+.PP
+.PP
+ 要使用 ALTER TABLE,你必需拥有该表; 除了 ALTER TABLE OWNER 之外,它只能由超级用户执行。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 试图更改的现存表(可能有模式修饰)的名称。 如果声明了 ONLY,则只更改该表。 如果没有声明 ONLY,则该表及其所有后代表(如果有)都被更新。 我们可以在表名字后面附加一个 * 表示后代表都被扫描,但是在目前的版本里,这是缺省行为。 (在7.1之前的版本,ONLY 是缺省的行为。)缺省可以通过改变配置选项 SQL_INHERITANCE 来改变。
+.TP
+\fB\fIcolumn\fB\fR
+ 现存或新的字段名称。
+.TP
+\fB\fItype\fB\fR
+ 新字段的类型。
+.TP
+\fB\fInew_column\fB\fR
+ 新字段的类型。
+.TP
+\fB\fInew_name\fB\fR
+ 表的新名称。
+.TP
+\fB\fItable_constraint\fB\fR
+ 表的新的约束定义。
+.TP
+\fB\fIconstraint_name\fB\fR
+ 要删除的现有约束的名字。
+.TP
+\fB\fInew_owner\fB\fR
+ 该表的新所有者的用户名。
+.TP
+\fB\fIindex_name\fB\fR
+ 要标记为建簇的表上面的索引名字。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于被依赖字段或者约束的对象(比如,引用该字段的视图)。
+.TP
+\fBRESTRICT\fR
+ 如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。 这是缺省行为。
+.SH "NOTES 注意"
+.PP
+ COLUMN 关键字是多余的,可以省略。
+.PP
+ 在目前的 ADD COLUMN实现里还不支持新列/字段的缺省(值)和 NOT NULL 子句。 新字段开始存在时所有值都是 NULL。 不过你可以随后用 ALTER TABLE 的 SET DEFAULT  形式设置缺省(值)。(你可能还想用
+UPDATE [\fBupdate\fR(7)] 把已存在行更新为缺省值。) 如果你想标记该字段为非 null,在你为该字段的所有行输入非 null 值之后用 SET NOT NULL。
+.PP
+DROP COLUMN 命令并不是物理上把字段删除, 而只是简单地把它标记为 SQL 操作中不可见的。随后对该表的插入和更新将在该字段存储一个 NULL。 因此,删除一个字段是很快的,但是它不会立即缩减你的表在磁盘上的大小,因为被删除了的字段占据的空间还没有回收。 这些空间将随着现有的行的更新而得到回收。要立即回收空间, 我们可以做一个UPDATE所有行的假动作,然后立即 vacuum, 象这样:
+.sp
+.nf
+UPDATE table SET col = col;
+VACUUM FULL table;
+.sp
+.fi
+.PP
+ 如果表有任何后代表,那么如果不在后代表上做同样的修改的话, 就不允许在父表上增加或者重命名一个字段,也就是说, ALTER TABLE ONLY将被拒绝。这样就保证了后代表总是有和父表匹配的字段。
+.PP
+ 一个递归DROP COLUMN  操作将只有在后代表并不从任何其它父表中继承该字段并且从来没有独立定义该字段的时候才能删除一个后代表的字段。 一个非递归的DROP COLUMN(也就是,\fBALTER TABLE ONLY ... DROP COLUMN\fR)从来不会删除任何后代字段, 而是把他们标记为独立定义的,而不是继承的。
+.PP
+ 不允许更改系统表结构的任何部分。
+.PP
+ 请参考CREATE TABLE 部分获取更多有效参数的描述。 Chapter 5 ``Data Definition'' 里有更多有关继承的信息。
+.SH "EXAMPLES 例子"
+.PP
+ 向表中增加一个 varchar 列:
+.sp
+.nf
+ALTER TABLE distributors ADD COLUMN address varchar(30);
+.sp
+.fi
+.PP
+ 从表中删除一个字段:
+.sp
+.nf
+ALTER TABLE distributors DROP COLUMN address RESTRICT;
+.sp
+.fi
+.PP
+ 对现存列改名:
+.sp
+.nf
+ALTER TABLE distributors RENAME COLUMN address TO city;
+.sp
+.fi
+.PP
+ 更改现存表的名字∶
+.sp
+.nf
+ALTER TABLE distributors RENAME TO suppliers;
+.sp
+.fi
+.PP
+ 给一个字段增加一个非空约束:
+.sp
+.nf
+ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
+.sp
+.fi
+ 从一个字段里删除一个非空约束:
+.sp
+.nf
+ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
+.sp
+.fi
+.PP
+ 给一个表增加一个检查约束:
+.sp
+.nf
+ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
+.sp
+.fi
+.PP
+ 删除一个表和它的所有子表的监查约束:
+.sp
+.nf
+ALTER TABLE distributors DROP CONSTRAINT zipchk;
+.sp
+.fi
+.PP
+ 向表中增加一个外键约束:
+.sp
+.nf
+ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address) MATCH FULL;
+.sp
+.fi
+.PP
+ 给表增加一个(多字段)唯一约束:
+.sp
+.nf
+ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
+.sp
+.fi
+.PP
+ 给一个表增加一个自动命名的主键约束,要注意的是一个表只能有一个主键:
+.sp
+.nf
+ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ADD COLUMN 形式是兼容 SQL 标准的, 除了上面说的缺省(值)和 NOT NULL 约束外。 ALTER COLUMN 形式是完全兼容的。
+.PP
+ 重命名表,列/字段,索引,和序列的名字是 PostgreSQL  对 SQL 的扩展。
+.PP
+\fBALTER TABLE DROP COLUMN\fR 可以用于删除表中的唯一的一个字段, 留下一个零字段的表。这是对 SQL 的扩展,它不允许零字段表。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_trigger.7 b/src/man7/alter_trigger.7
new file mode 100644
index 0000000..2fa2fde
--- /dev/null
+++ b/src/man7/alter_trigger.7
@@ -0,0 +1,40 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER TRIGGER \- 修改一个触发器的定义
+
+.SH SYNOPSIS
+.sp
+.nf 
+ALTER TRIGGER \fIname\fR ON \fItable\fR RENAME TO \fInewname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER TRIGGER\fR 改变一个现有触发器的属性。 RENAME 修改一个给出地触发器地名称, 而不用改变触发器的定义。
+.PP
+ 你必需拥有该触发器作用的表才能改变其属性。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 现有需要修改的触发器的名称。
+.TP
+\fB\fItable\fB\fR
+ 该触发器作用的表的名字。
+.TP
+\fB\fInewname\fB\fR
+ 现有触发器的新名字。
+.SH "EXAMPLES 例子"
+.PP
+ 重新命名一个现有触发器:
+.sp
+.nf
+ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBALTER TRIGGER\fR 是 PostgreSQL  对 SQL 标准的扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/alter_user.7 b/src/man7/alter_user.7
new file mode 100644
index 0000000..3045ec6
--- /dev/null
+++ b/src/man7/alter_user.7
@@ -0,0 +1,124 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ALTER USER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ALTER USER \- 改变数据库用户帐号
+
+.SH SYNOPSIS
+.sp
+.nf
+ALTER USER \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]
+
+where \fIoption\fR can be:
+
+    [ ENCRYPTED | UNENCRYPTED ] PASSWORD '\fIpassword\fR' 
+    | CREATEDB | NOCREATEDB
+    | CREATEUSER | NOCREATEUSER 
+    | VALID UNTIL '\fIabstime\fR'
+
+ALTER USER \fIname\fR RENAME TO \fInewname\fR
+
+ALTER USER \fIname\fR SET \fIparameter\fR { TO | = } { \fIvalue\fR | DEFAULT }
+ALTER USER \fIname\fR RESET \fIparameter\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBALTER USER\fR 用于更改用户的 PostgreSQL 帐号的属性。 没有在该命令中出现的属性保持原值。
+.PP
+ 这条命令模式中的第一个变种修改某些全局用户权限和认证设置。 (见下文获取细节。)只有数据库超级用户可以用这条命令改变这些权限和使口令失效。普通用户只能修改它们自己的口令。
+.PP
+ 第二个变种改变用户的名字。只有数据库超级用户才能重新命名用户帐户。 当前会话用户不能重命名。(如果想这么干,先用另外一个用户账号连接。)
+.PP
+ 第三和第四个变种修改用户会话的特定配置变量的缺省值。 当该用户随后启动一个新的会话时,声明的数值将成为会话的缺省,覆盖 任何出现在 postgresql.conf 里,或者从 postmaster  命令行接收到的设置。 普通用户可以修改它们自己的会话缺省。超级用户可以修改任何用户的缺省。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 想进行属性更改的用户名字。
+.TP
+\fB\fIpassword\fB\fR
+ 此帐号所使用的新口令。
+.TP
+\fBENCRYPTED\fR
+.TP
+\fBUNENCRYPTED\fR
+ 这些关键字控制口令是否以加密形式存在 pg_shadow 里。 (参阅
+CREATE USER [\fBcreate_user\fR(7)]
+获取这个选项的更多信息。)
+.TP
+\fBCREATEDB\fR
+.TP
+\fBNOCREATEDB\fR
+ 这个子句定义该用户创建数据库的能力。 如果声明了CREATEDB,该用户可以创建她自己的数据库。 用NOCREATEDB将剥夺一个用户创建数据库的能力。
+.TP
+\fBCREATEUSER\fR
+.TP
+\fBNOCREATEUSER\fR
+ 这个子句决定一个用户能否创建新用户。 这个选项同样还令该用户成为超级用户,可以超越所有访问限制。
+.TP
+\fB\fIabstime\fB\fR
+ 该用户帐号口令的过期的日期(和可选的时间)。 要设置一个口令从不过期,可以用'infinity'。
+.TP
+\fB\fInewname\fB\fR
+ 用户的新名字。
+.TP
+\fB\fIparameter\fB\fR
+.TP
+\fB\fIvalue\fB\fR
+ 把该用户特定的配置变量的会话缺省设置为给定的数值。 如果 value 为 DEFAULT  或者使用了等效的 RESET,那么删除用户相关的变量, 并且该用户将在新会话中继承缺省设置。使用 RESET ALL  清除所有设置。
+
+ 参阅 SET [\fBset\fR(7)] 和 Section 16.4 ``Run-time Configuration'' 获取有关可用变量和数值的更多信息。
+.SH "NOTES 注意"
+.PP
+ 使用 CREATE USER [\fBcreate_user\fR(7)]
+创建新用户和 DROP USER [\fBdrop_user\fR(7)] 删除用户。
+.PP
+\fBALTER USER\fR 无法改变一个用户的组的成员性。 用
+ALTER GROUP [\fBalter_group\fR(7)]
+实现这个目地。
+.PP
+ 使用 ALTER DATABASE [\fBalter_database\fR(7)],我们还可能把一个会话缺省和某个数据库绑定起来,而不是和某个用户绑定。
+.SH "EXAMPLES 例子"
+.PP
+ 更改一用户口令:
+.sp
+.nf
+ALTER USER davide WITH PASSWORD 'hu8jmn3';
+.sp
+.fi
+.PP
+ 更改一用户有效期:
+.sp
+.nf
+ALTER USER manuel VALID UNTIL 'Jan 31 2030';
+.sp
+.fi
+.PP
+ 更改一用户有效期, 声明其权限应该在用比UTC早一小时的时区记时的 2005 年 5 月 4 日正午失效
+.sp
+.nf
+ALTER USER chris VALID UNTIL 'May 4 12:00:00 2005 +1';
+.sp
+.fi
+.PP
+ 令用户永远有效:
+.sp
+.nf
+ALTER USER fred VALID UNTIL 'infinity';
+.sp
+.fi
+.PP
+ 赋予一用户创建新用户和新数据库的权限:
+.sp
+.nf
+ALTER USER miriam CREATEUSER CREATEDB;
+.sp
+.fi
+.SH "COMPATIBILITY  兼容性"
+.PP
+\fBALTER USER\fR 语句是 PostgreSQL 扩展。SQL 标准将用户的定义交给实现完成。
+.SH "SEE ALSO 参见"
+CREATE USER [\fBcreate_user\fR(7)], DROP USER [\fBdrop_user\fR(l)], SET [\fBset\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/analyze.7 b/src/man7/analyze.7
new file mode 100644
index 0000000..d2d7a07
--- /dev/null
+++ b/src/man7/analyze.7
@@ -0,0 +1,49 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ANALYZE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ANALYZE \- 收集与数据库有关的统计
+
+.SH SYNOPSIS
+.sp
+.nf
+ANALYZE [ VERBOSE ] [ \fItable\fR [ (\fIcolumn\fR [, ...] ) ] ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBANALYZE\fR 收集有关 PostgreSQL  表的内容的统计,然后把结果保存在系统表 pg_statistic  里。随后,查询规划器就可以使用这些统计帮助判断查询的最有效的规划。
+.PP
+ 如果没有参数,ANALYZE 检查在当前数据库里的所有表。 如果有参数,ANALYZE 只检查那个表。 你还可以给出一列字段名字,这个时候只收集那些字段的统计信息。
+.SH "PARAMETERS 参数"
+.TP
+\fBVERBOSE\fR
+ 打开处理过程信息的显示。
+.TP
+\fB\fItable\fB\fR
+ 要分析的特定表(可能用模式名修饰)的名字。缺省是当前数据库里所有表。
+.TP
+\fB\fIcolumn\fB\fR
+ 要分析的特定字段的名字。缺省是所有字段。
+.SH "OUTPUTS 输出"
+.PP
+ 如果声明了 VERBOSE,\fBANALYZE\fR 发出进度信息,表明当前正在处理的是哪行。 同时打印有关改表的很多其它信息。
+.SH "NOTES 注意"
+.PP
+ 周期性地运行 ANALYZE,或者在对表的大部分内容做了更改之后马上运行它是个好习惯, 准确的统计信息将帮助规划器选择最合适的查询规划,并因此而改善查询处理的速度。 一种比较经常采用的策略是每天在低负荷的时候运行一次 VACUUM [\fBvacuum\fR(7)]
+和 ANALYZE。
+.PP
+ 和 VACUUM FULL 不同的是, ANALYZE 只需要在目标表上有一个读取锁, 因此它可以和表上的其它活动并行地运行。
+.PP
+ 收集的统计信息通常包括一个每字段最常用数值的列表以及一个包线图,显示每个字段里数据的近似分布。 如果 ANALYZE 认为它们都没有什么用, (比如,在一个唯一键字的字段上没有公共的数值)或者是该字段数据类型不支持相关的操作符, 那么它们都可以忽略。在 Chapter 21 ``Routine Database Maintenance'' 中有关于统计的更多信息。
+.PP
+ 对于大表,ANALYZE 采集表内容的一个随机的抽样做统计,而不是检查每一行。 这样就保证了即使是在很大的表上,我们也只需要很少的一些时间就可以完成分析。 不过,要注意的是统计只是近似的结果,而且每次运行ANALYZE都会导致 EXPLAIN 显示的规划器的预期开销有一些小变化, 即使表内容实际上没有改变也这样。在很小的概率的情况下,这个不确定的行为会导致查询优化器在不同 ANALYZE  之间选择不同的查询规划。为了避免这个问题,可以提高 ANALYZE 收集的统计数量,像下面描述的那样。
+.PP
+ 分析的广度可以通过用调整 default_statistics_target 参变量, 或者是以每字段为基础通过用 ALTER TABLE ... ALTER COLUMN ... SET STATISTICS  (参阅  ALTER TABLE [\fBalter_table\fR(7)]) 设置每字段的统计目标来控制。目标数值设置最常用数值列表中的记录的最大数目以及包线图中的最大块数。 缺省的目标数值是 10,不过我们可以调节这个数值获取规划器计算精度和 ANALYZE 运行所需要的时间以及 pg_statistic 里面占据的空间数目之间的平衡。 特别是,把统计目标设置为零就关闭了该字段的统计收集。 这么做对那些从来不参与到查询的 WHERE,GROUP BY,或者 ORDER BY 子句里的字段是很有用的,因为规划器不会使用到这样的字段上的统计。
+.PP
+ 在被分析的字段中最大的统计目标决定为统计采样的表中的行的数目。 增大目标会导致做 ANALYZE 的时候成比例地增大对时间和空间的需求。
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准里没有 ANALYZE 语句。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/arp.7 b/src/man7/arp.7
new file mode 100644
index 0000000..7c70024
--- /dev/null
+++ b/src/man7/arp.7
@@ -0,0 +1,239 @@
+.\" 版权所有:1999 Matthew Wilcox。发布任何修改拷贝时,必须包含此处原文,
+.\" 并将修改人和修改日期,加在这里
+.\" 中文版版权所有 Alian Yao, BitBIRD www.linuxforum.net 2000
+.\" 修改1:June 1999 Andi Kleen 
+
+.TH ARP 7 "3 Jun 1999" "Linux Man Page" "Linux 程序员手册" 
+.SH NAME
+arp \- Linux的ARP核心模块 
+.SH 描述
+这个核心协议模块实现RFC826中定义的 Address Resolution Protocol
+[译注:即TCP/IP的第三层到第一层的地址转换协议],
+用于在直接相连的网络中换第二层硬件地址和 Ipv4 协议地址之间的转换。
+用户除非想对其进行配置,否则一般不会直接操作这个模块。
+
+实际上,它提供对核心中其它协议的服务。 
+
+用户进程可以使用
+.BR packet (7)
+的 sockets,收到 ARP 包(译注:一译分组)。
+还有一种机制是使用
+.BR netlink (7)
+sockets,在用户空间管理 ARP 缓存的机制。
+我们也可以通过
+.B ioctl (2)
+控制任意
+.B PF_INET 
+socket上的
+ARP 表 
+
+
+ARP 模块维护一个硬件地址到协议地址映射的缓存。这个缓存有大小限制,所以
+不常用的和旧的记录(Entry)将被垃圾收集器清除(garbage-collected),
+垃圾收集器永远不能删除标为永久的记录。我们可以使用ioctls直接操纵缓冲,
+并且其性状可以用下面定义的 sysctl 调节。
+
+如果在限定的时间(见下面的sysctl)内,一条现存映射没有肯定反馈时,
+则认为相邻层的缓存记录失效。
+为了再次向目标发送数据,ARP将首先试着询问本地arp进程
+.B app_solicit 
+次,获取更新了的 MAC(介质访问控制)地址。
+如果失败,并且旧的MAC地址是已知的,则发送
+.B ucast_solicit
+次的 unicast probe。如果仍然失败,则将向网络广播一个新的ARP请求,此时要
+有待发送数据的队列
+
+如果 Linux 接到一个地址请求,而且该地址指向 Linux 转发的地址,
+并且接收接口打开了代理 arp 时,Linux 将自动添加一条非永久的
+代理 arp 记录;如果存在拒绝到目标的路由,则不添加代理 arp 记录。
+
+.SH IOCTLS
+有三个 ioctl
+可以用于所有 
+.B PF_INET
+的 sockets 中。它们以一个指向
+.B struct arpreq
+的指针作为它们的参数。
+
+.nf
+.ta 4 20 33
+struct arpreq
+{
+struct sockaddr arp_pa; /* 协议地址(protocol address)*/
+struct sockaddr arp_ha; /* 硬件地址(hardware address) */
+int arp_flags; /* 标志(flags) */
+struct sockaddr arp_netmask; 
+/* 协议地址的网络掩码(netmask of protocol address)*/
+char arp_dev[16];
+};
+.fi
+
+.BR SIOCSARP ", " SIOCDARP " 和 " SIOCGARP
+可分贝设置、删除和获取 ARP 映射。设置和删除 ARP 映射是特许操作,
+只有拥有
+.B CAP_NET_ADMIN
+权限的进程或有效UID为0的进程可以执行。
+
+.I arp_pa
+必须是
+.B AF_INET
+socket,并且
+.I arp_ha
+必须有和
+.IR arp_dev .
+指定的设备相同的类型。
+.I arp_dev
+是个以null结束的设备名字符串。
+
+.TS
+tab(:) allbox;
+c s
+l l.
+\fIarp_flags\fR
+标志(flag):含义(meaning)
+ATF_COM:查找完成(Lookup complete)
+ATF_PERM:永久记录(Permanent entry)
+ATF_PUBL:张贴记录(Publish entry)
+ATF_USETRAILERS:要求使用后缀(Trailers requested)
+ATF_NETMASK:使用网络掩码(Use a netmask)
+ATF_DONTPUB:不回复(Don't answer)
+.TE
+
+.PP
+
+如果设置了
+.B ATF_NETMASK
+标志,那么
+.I arp_netmask
+必须有效。 
+Linux 2.2 不支持代理网络 ARP 记录,因此,要设成0xffffffff或者0,
+以删除现存代理arp记录。这里不使用
+现存代理arp记录。
+.B ATF_USETRAILERS
+已经过时了,不应该继续使用。
+
+
+.SH SYSCTLS
+ARP 支持一个 sysctl 接口,可以用以配置全局参数或逐个网络接口地进行配制。
+该 sysctl 可以通过
+.B /proc/sys/net/ipv4/neigh/*/*
+文件或者使用
+.BR sysctl (2)
+接口来访问。系统中每个接口都在
+/proc/sys/net/ipv4/neigh/.
+中有自己的目录。`default'目录中的设置用于所有新建的设备。
+sysctl 相关的时间是以秒为单位,除非特别声明过.
+.TP
+.B anycast_delay
+对 IPv6 相邻请求信息的回复的最大延迟时间;
+目前还不支持 anycast。缺省值为1秒。
+.TP
+.B app_solicit
+这是在使用多路广播探测(multicast probe)前,
+经过网络连接送到用户间隙ARP端口监控程序的探测(probe)
+最大数目(见
+.IR mcast_solicit 
+)。
+缺省值为0。
+.TP
+.B base_reachable_time
+一旦发现相邻记录,至少在一段介于
+.IR base_reachable_time "/2和3*" base_reachable_time /2
+之间的随机时间内,该记录是有效的。如果收到上层协议的肯定反馈,
+那么记录的有效期将延长。
+缺省值是30秒。
+.TP
+.B delay_first_probe_time
+发现某个相邻层记录无效(stale)后,发出第一个探测要等待的时间。 缺省值是5秒。
+.TP
+.B gc_interval
+收集相邻层记录的无用记录的垃圾收集程序的运行周期,缺省为30秒。
+.TP
+.B gc_stale_time
+决定检查一次相邻层记录的有效性的周期。
+当相邻层记录失效时,将在给它发送数据前,再解析一次。
+缺省值是60秒。
+.TP
+.B gc_thresh1
+存在于ARP高速缓存中的最少层数,如果少于这个数,
+垃圾收集器将不会运行。缺省值是128。
+.TP
+.B gc_thresh2
+保存在 ARP 高速缓存中的最多的记录软限制。
+垃圾收集器在开始收集前,允许记录数超过这个数字 5 秒。
+缺省值是 512。
+.TP
+.B gc_thresh3
+保存在 ARP 高速缓存中的最多记录的硬限制,
+一旦高速缓存中的数目高于此,
+垃圾收集器将马上运行。缺省值是1024。
+.TP
+.B locktime
+ARP 记录保存在高速缓存内的最短时间(jiffy数),
+以防止存在多个可能的映射(potential mapping)时,
+ARP 高速缓存系统的颠簸 (经常是由于网络的错误配置而引起)。
+缺省值是 1 秒。
+.TP
+.B mcast_solicit
+在把记录标记为不可抵达的之前,
+用多路广播/广播(multicast/broadcast)方式解析地址的最大次数。
+缺省值是3。
+.TP
+.B proxy_delay
+当接收到有一个请求已知的代理 ARP 地址的 ARP 请求时,
+在回应前可以延迟的 jiffy(时间单位,见BUG)数目。
+这样,以防止网络风暴。缺省值是0.8秒。
+.TP
+.B proxy_qlen
+能放入代理 ARP 地址队列(proxy-ARP addresses)的数据包最大数目。缺省值是64。
+.TP
+.B retrans_time
+重发一个请求前的等待 jiffy(时间单位,见BUG)的数目。缺省值是1秒。
+.TP
+.B ucast_solicit
+询问ARP端口监控程序前,试图发送单探测(unicast probe)的次数。 (见
+.IR app_solicit ).
+缺省值是3秒。
+.TP
+.B unres_qlen
+每个没有被其它网络层解析的地址,在队列中可存放包的最大数目。缺省值是3.
+
+.SH BUGS
+时钟设置的时间单位 jiffy,跟硬件体系有关。
+在 Alpha 上,一个 jiffy 是 1/1024 秒,而在其它机器上,是 1/100 秒。
+
+目前还没有办法从用户空间发送肯定反馈。
+这意味着在用户空间实现的面向连接的协议
+(connection oriented protocols)将产生大量的 ARP 通讯。
+因为ndisc将重新探测MAC地址。内核 NFS 的实现也存在同样的问题。
+
+这个手册页主要讲 IPv4 规范并且共享 IPv4 和 IPv6 的功能.
+
+.SH 版本
+
+Linux 2.0中的
+.B struct arpreq,
+添加了
+.I arp_dev
+,同时 ioctl 数目也改变了。在 Linux 2.2 中将不再支持旧的ioctl。
+
+在 Linux 2.2 中,取消了对网络代理 arp 记录(网络掩码不是0xffffffff)的支持。
+这个功能被内核设置的一个自动代理 arp 取代,这个自动代理 arp 用于所有位于
+其它接上的可到达的主机(如果该接口的转发和代理 arp 打开了)。
+
+
+
+.SH 另见
+.BR ip (7)
+.PP
+
+RFC826 了解 ARP 描述.
+.br
+RFC2461 描述了IPv6使用的近邻查找以及基本算法
+
+.SH "[中文版维护人]"
+.B Alan Yao <Alan_Yao at 163.net>
+.SH "[中文版最新更新]"
+.B 2000/10/23
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/ascii.7 b/src/man7/ascii.7
new file mode 100644
index 0000000..8848628
--- /dev/null
+++ b/src/man7/ascii.7
@@ -0,0 +1,156 @@
+.\" Copyright (c) 1993 Michael Haardt (michael at moria.de)
+.\" Created Fri Apr 2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111
+.\" USA.
+.\"
+.\" Modified Sat Jul 24 17:20:55 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun May 15 19:47:23 1994 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" Modified Tue Nov 22 13:01:59 1994 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" Modified Tue Jul 11 13:36:31 1995 by Daniel Quinlan (quinlan at yggdrasil.com)
+.\" Modified Wed Dec 18 : : 1996 by Michael Haardt and aeb
+.\" Modified Mon May 31 17:30:00 1999 by Dimitri Papadopoulos (dpo at club-internet.fr)
+.\" Modified Sun Aug 8 19:28:11 1999 by Michael Haardt (michael at moria.de)
+.TH ASCII 7 "August 8, 1999" "Linux" "Linux Programmer's Manual"
+.SH NAME
+ascii \- 在八进制,十进制,十六进制中的 ASCII 字符集编码
+.SH 描述
+ASCII 是美国对于信息交换的标准代码,它是7位码,许多8位码(比如 ISO 8859-1,
+Linux 的默认字符集)容纳 ASCII 作为它们的下半部分。对应的国际 ASSII 是 ISO 646。
+.LP
+下列的表格包含这 128 ASCII 字符.
+.LP
+注意 C 程序 \f(CW'\eX'\fP 扩展(转义).
+.LP
+.if t \{\
+.in 1i
+.ft CW
+\}
+.TS
+l l l l l l l l l.
+Oct Dec Hex Char Oct Dec Hex Char
+_
+000 0 00 NUL '\e0' 100 64 40 @
+001 1 01 SOH 101 65 41 A
+002 2 02 STX 102 66 42 B
+003 3 03 ETX 103 67 43 C
+004 4 04 EOT 104 68 44 D
+005 5 05 ENQ 105 69 45 E
+006 6 06 ACK 106 70 46 F
+007 7 07 BEL '\ea' 107 71 47 G
+010 8 08 BS '\eb' 110 72 48 H
+011 9 09 HT '\et' 111 73 49 I
+012 10 0A LF '\en' 112 74 4A J
+013 11 0B VT '\ev' 113 75 4B K
+014 12 0C FF '\ef' 114 76 4C L
+015 13 0D CR '\er' 115 77 4D M
+016 14 0E SO 116 78 4E N
+017 15 0F SI 117 79 4F O
+020 16 10 DLE 120 80 50 P
+021 17 11 DC1 121 81 51 Q
+022 18 12 DC2 122 82 52 R
+023 19 13 DC3 123 83 53 S
+024 20 14 DC4 124 84 54 T
+025 21 15 NAK 125 85 55 U
+026 22 16 SYN 126 86 56 V
+027 23 17 ETB 127 87 57 W
+030 24 18 CAN 130 88 58 X
+031 25 19 EM 131 89 59 Y
+032 26 1A SUB 132 90 5A Z
+033 27 1B ESC 133 91 5B [
+034 28 1C FS 134 92 5C \e '\e\e'
+035 29 1D GS 135 93 5D ]
+036 30 1E RS 136 94 5E ^
+037 31 1F US 137 95 5F \&_
+040 32 20 SPACE 140 96 60 `
+041 33 21 ! 141 97 61 a
+042 34 22 " 142 98 62 b
+043 35 23 # 143 99 63 c
+044 36 24 $ 144 100 64 d
+045 37 25 % 145 101 65 e
+046 38 26 & 146 102 66 f
+047 39 27 ' 147 103 67 g
+050 40 28 ( 150 104 68 h
+051 41 29 ) 151 105 69 i
+052 42 2A * 152 106 6A j
+053 43 2B + 153 107 6B k
+054 44 2C , 154 108 6C l
+055 45 2D \- 155 109 6D m
+056 46 2E . 156 110 6E n
+057 47 2F / 157 111 6F o
+060 48 30 0 160 112 70 p
+061 49 31 1 161 113 71 q
+062 50 32 2 162 114 72 r
+063 51 33 3 163 115 73 s
+064 52 34 4 164 116 74 t
+065 53 35 5 165 117 75 u
+066 54 36 6 166 118 76 v
+067 55 37 7 167 119 77 w
+070 56 38 8 170 120 78 x
+071 57 39 9 171 121 79 y
+072 58 3A : 172 122 7A z
+073 59 3B ; 173 123 7B {
+074 60 3C < 174 124 7C |
+075 61 3D = 175 125 7D }
+076 62 3E > 176 126 7E ~
+077 63 3F ? 177 127 7F DEL
+.TE
+.fi
+.if t \{\
+.in
+.ft P
+\}
+.SH 历史
+在 AT&T UNIX 的 version 7 中出现过一份
+.B ascii
+手册页。
+.LP
+在一些旧的终端上,着重号(下划线)用一个左箭头显示, 叫 backarrow ,
+插入符作为一上箭头被显示并且垂直线在中间有一个洞。
+
+.LP
+大写和小写字符由仅在于一位的不同,还有ASCII字符 2 不同于双引号也是一位。
+这更加容易地为字符进行编码,机械(键盘)或者是一个非微控制器基础的电子键盘,
+它们都能在旧的电传打字机上找到配对。
+.LP
+ASCII 标准由美国标准协会(USASI)于1968出版.
+.\"
+.\" ASA was the American Standards Association and X3 was an ASA sectional
+.\" committee on computers and data processing. Its name changed to
+.\" American National Standards Committee X3 (ANSC-X3) and now it is known
+.\" as Accredited Standards Committee X3 (ASC X3). It is accredited by ANSI
+.\" and administered by ITI. The subcommittee X3.2 worked on coded
+.\" character sets; the task group working on ASCII appears to have been
+.\" designated X3.2.4. In 1966, ASA became the United States of America
+.\" Standards Institute (USASI) and published ASCII in 1968. It became the
+.\" American National Standards Institute (ANSI) in 1969 and is the
+.\" U.S. member body of ISO; private and non-profit.
+.\"
+.SH 参考
+.BR iso_8859_1 (7),
+.BR iso_8859_15 (7),
+.BR iso_8859_7 (7)
+.br
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.B 2000/10/23
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/begin.7 b/src/man7/begin.7
new file mode 100644
index 0000000..551003f
--- /dev/null
+++ b/src/man7/begin.7
@@ -0,0 +1,53 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "BEGIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+BEGIN \- 开始一个事务块
+
+.SH SYNOPSIS
+.sp
+.nf
+BEGIN [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBBEGIN\fR 初始化一个事务块, 也就是说所有 BEGIN  命令后的用户语句都将在一个事务里面执行直到给出一个明确的 COMMIT [\fBcommit\fR(7)] 或者 ROLLBACK [\fBrollback\fR(l)] 。
+缺省时,(没有 BEGIN),PostgreSQL 以 "autocommit"  模式执行事务,也就是说,每个语句在其自身的事务中执行, 并且在语句结束的时候隐含地执行一个提交(如果执行成功,否则执行回滚)。
+.PP
+ 在事务块里执行的语句很明显地快得多, 因为事务开始/提交(start/commit)需要大量的CPU和磁盘活动。 在一个 事务内部执行多条语句对于修改若干个相关的表的时候也是很有用的: 在所有相关的更新完成之前,其它会话看不到中间的状态。
+.SH "PARAMETERS 参数"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+ 可选关键字。没什么作用。
+.SH "NOTES 注意"
+.PP
+START TRANSACTION [\fBstart_transaction\fR(7)] 有着和 BEGIN 一样的功能。
+.PP
+ 使用 COMMIT [\fBcommit\fR(7)] 或
+ROLLBACK [\fBrollback\fR(7)]
+结束一个事务。
+.PP
+ 在一个现有事务块内部发出一个 BEGIN 将产生一个警告信息。 事务的状态将不会被影响。
+.SH "EXAMPLES 例子"
+.PP
+ 开始一个用户事务:
+.sp
+.nf
+BEGIN;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBBEGIN\fR 是 PostgreSQL 语言的扩展。 在 SQL  标准中没有明确的 BEGIN  的定义;事务初始化总是隐含的而且使用一个 COMMIT 或者 ROLLBACK 语句终止。
+.PP
+ 许多关系型数据库为了方便提供一个自动提交(autocommit)特性。
+.PP
+ 顺便说一句,BEGIN 关键字在嵌入 SQL 里用于不同的目的。 我们建议你在移植数据库应用时仔细检查事务的语义。
+.SH "SEE ALSO 参见"
+COMMIT [\fBcommit\fR(7)], ROLLBACK [\fBrollback\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/bootparam.7 b/src/man7/bootparam.7
new file mode 100644
index 0000000..6b52145
--- /dev/null
+++ b/src/man7/bootparam.7
@@ -0,0 +1,1118 @@
+.\" Copyright (c) 1995,1997 Paul Gortmaker and Andries Brouwer
+.\" 中文版 Copyright (c) 2000 Bill Pan, Laser 和 www.linuxforum.net
+.\"
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" This man page written 950814 by aeb, based on Paul Gortmaker's HOWTO
+.\" (dated v1.0.1, 15/08/95).
+.\" Major update, aeb, 970114.
+.TH BOOTPARAM 7 "14 January 1995" "Linux 2.1.21" "Linux Programmer's Manual"
+.SH NAME
+bootparam \- 介绍Linux核心的启动参数
+.SH 描叙
+Linux 核心在启动的时候可以接受指定的"命令行参数"或"启动参数".
+在通常情况下,由于核心有可能无法识别某些硬件,
+或可能将某些硬件识别为不正确的配置,因此,
+这些参数可以被用来提供正确的硬件配置参数。
+当Linux核心被BIOS直接启动的时候
+(比如说你的核心是从使用了 "cp zImage /dev/fd0" 命令制造的 Linux 启动软盘来启动的),
+你无法指定任何的启动参数。
+因此,为了能够指定启动参数,你必须使用某些能够传递启动参数的软件,
+例如 LILO 或 Loadlin。
+为了使用很少的参数来改变的核心配置,
+可以使用 rdev,查看
+.BR rdev(8)
+可以得到更多的细节。
+
+由 Werner Almesberger 开发的 LILO 程序 (LInux LOader) 是最普遍的启动配置软件。
+它能够启动各种不同的系统核心,
+这些启动配置信息被放置在一个简单明了的文本文件中
+(请看
+.BR lilo(8)
+和
+.BR lilo.conf(5).)
+
+LILO 可以启动象 DOS,OS/2,Linux,FreeBSD,UnixWare 这样的操作系统,
+而且灵活性也非常强。
+
+另外一个较为普遍的启动软件是"LoadLin"。这是一个基于 DOS 操作系统的软件。
+该软件能够从DOS提示符下启动Linux核心(使用启动参数),
+只要某些必需的资源可用就行。
+这对于那些希望从 DOS 系统中启动 Linux 的人来说是很不错的方法。
+
+如果你的硬件能够被 DOS 驱动程序启用的话,LoadLin也会是非常有用的。
+一个最常见的例子是设置与 SoundBlaster 兼容的声卡。
+这些声卡通过使用 DOS 驱动程序设定一些寄存器就可以将它们设置成为 SB 兼容模式的声卡。
+在DOS下启动这些声卡的启动程序,然后使用LoadLin程序启动Linux,
+这样就可以避免由于重新启动Linux系统而造成声卡被重新设置。
+
+.SH "参数列表"
+
+核心参数行被解析成为一个由空格分隔的字符串列表(即启动参数表)。
+大部分的启动参数的格式就象下面这样
+.IP
+名字[=值1],[值2]……[,值10]
+.LP
+其中"名字"是一个唯一关键字,被用来区分接受值(如果有的话)那一部分核心。
+要注意的是 10 个值的限制是确实存在的,
+目前的程序代码只能对每个关键字处理 10 个逗号分隔的参数
+(当然,在一些复杂的应用中,
+你可以通过重新使用同样的关键字来传递多于10个的参数,
+只要配置程序可以支持该方法)
+
+大部分的排序工作是在 linux/init/main.c 中进行的。
+首先,核心检查参数是否为 "root="、"nfsroot="、"nfsaddrs="、"ro"、"rw"、"debug"
+和"init"这些特殊参数中的一种。这些参数的意义我们将在下面说明。
+
+然后,核心会搜索"配置程序队列"(bootsetups队列)
+来查看指定的参数字符串(比如"foo")是不是与某个配置指定设备
+或是核心的配置程序建立了关联。
+例如假设你传递给核心 foo=3,4,5,6,
+那么核心会搜索 bootsetups 队列看看"foo"是否已经注册。
+如果是,那么核心将运行与"foo"关联的配置程序(比如foo_setup())
+并且将参数3,4,5,6交给核心命令列。
+
+任何象 "foo=bar" 这样格式的参数不会被上面所说的那样,
+作为一个配置程序的关联被接受,而是被解释成为一个环境变量的设置。
+一个(无用的?)例子就是使用 "TERM=vt100" 作为核心的启动参数。
+
+任何既不被核心接受又不被解释为环境变量的参数会被传送给第一个系统进程,
+通常这会是init程序。最常用的传递给 init 进程的参数是 "single",
+它告诉init使用单用户模式启动计算机,并且不要执行任何的守护进程。
+查阅帮助,看看你所装版本的 init 程序可以支持的参数。
+
+.SH "一般的、与设备无关的启动参数"
+
+.SS "`init=...'"
+
+这个启动参数提供核心执行时的初始化命令。如果它没有被设置,
+或者没有被找到的话,核心会去尝试调用
+.IR /etc/init ,
+然后是
+.IR /bin/init ,
+然后是
+.IR /sbin/init ,
+最后是
+.IR /bin/sh
+,如果都失败了,就会提示一个异常信息。
+.SS "`nfsaddrs=...'"
+
+该启动参数设置 nfs(网络文件系统)启动地址为指定的字符串值。
+该启动地址被用于网络启动中。
+
+.SS "`nfsroot=...'"
+
+该动参数设置 nfs(网络文件系统)根目录名为指定字符串。
+如果该字符串不是以'/'、','或者一个数字开始的,则该字符串加上"/tftpboot/"的前缀。
+
+.SS  "`no387'"
+
+(只有当CONFIG_BUGi386被定义后才有效)
+某些 i387 协处理器在使用 32 位保护模式时会出现错误。
+例如,一些早期的ULSI-387芯片在处理浮点运算时会出现死锁的情况。
+使用"no387"启动参数可以让Linux忽略你的算术协处理器的存在。
+当然,这时你就必须将你的核心编译成为支持数学仿真模式。
+
+.SS "`no-hlt'"
+
+(只有当CONFIG_BUGi386被定义后才有效)
+某些早期的 i486DX-100 的处理器芯片在使用 "halt" 时会出现问题,
+使用这个指令后它不会正常的返回到操作模式。
+使用 "no-halt" 指令告诉 Linux 在没有事情可做的时候,
+只是执行一个无限的循环指令,而不是让CPU进入"halt"模式。
+这样就可以令人们使用这些有缺陷的芯片来运行 Linux。
+
+.SS "`root=...'"
+
+这个参数告诉核心在启动的时候使用哪个设备被作为根文件系统。
+其缺省值是你在编译核心的时候就所确定的根设备。
+如果你想要修改该值,比如说,将第二个软盘驱动器作为根设备,
+你可以使用 "root=/dev/fd1" (根设备也可以用
+.BR	rdev(8));
+来设置。
+
+根设备能够以符号形式或数字形式来指定。一种符号指定形式是 /dev/XXYN,
+其中 XX 代表设备类型( "hd" 代表普通 IDE 硬盘,紧跟其后的 Y 的范围是 "a" 到 "d";
+"SD" 代表 SCSI 硬盘,紧跟其后的 Y 的范围是 "a" 到 "e";"ad" 代表 Atari ACSI磁盘,
+紧跟其后的 Y 的范围是 "a" 到 "e";"ez" 代表 Syquest EZ135 兼容的使用并口的可移动硬盘,
+紧跟其后的 Y 的值只能是"a";"xd" 代表 XT 兼容的磁盘,紧跟其后的 Y 的值是 "a"
+或者是 "b";"fd" 代表软驱,而 Y 代表软驱的序号 - fd0 代表 DOS 的 "A:",
+fd1代表DOS的 "B:"),Y 表示驱动器字母或序号。N 代表驱动器的分区号
+(以十进制数值表示,当然,软驱是没有该信息的)。
+目前的核心可以使用更多的驱动设备,
+比如 nfs,ram,scd,mcd,cdu535,aztcd,cm206cd,gscd,sbpcd,sonycd,bpcd,
+其中大部分都是 CD-ROM 设备。
+(nfs 指示网络启动的位置;ram 表示一个 ram 虚拟磁盘(ram 表示可读写储存器)。
+
+需要注意的是以上这些指定对你文件系统上的设备名称并没有做任何实质改变,
+"/dev/" 部分的描述只是出于传统习惯。
+
+你也可以通过使用数字形式的主/次设备号指定根设备,
+但这是很笨拙和不方便的方法。
+(例如,/dev/sda3 的主设备号是 8,次设备号是 3,
+所以你也可以使用 "root=0x0803" 来指定根设备。)
+
+.SS "`ro'和`rw'"
+
+"ro" 选项告诉核心使用"只读"方式装配文件系统。
+这样可以让"文件一致性检查"程序
+(fsck程序,用来检查磁盘的工具,类似 DOS 的 scandisk 程序)
+能够在一种所谓"静止"
+(也就是说没有任何对文件系统的写操作)的文件系统中执行。
+需要进行写操作的进程必须等到该文件系统使用
+"读/写"方式重新装配以后才能进行,
+例如,使用了"mount -w -n -o remount /"命令。
+(请查看
+.BR mount(8)。)
+
+"rw" 选项告诉核心使用"可读写"方式装配文件系统。这是缺省值。
+
+只读方式和可读写方式的选择可以使用
+.BR rdev (8).
+来设定。
+
+.SS "`reserve=...'"
+
+该参数用来设定保留区域,使得该区域的 I/O 端口不会被检测。该命令的格式是
+.IP
+.BI reserve= iobase,extent[,iobase,extent]...
+.LP
+在某些情况下你的机器也许必须避免设备驱动程序检测
+(自动检测)某些指定区域的设备。
+这些情况有可能是因为由于检测会导致硬件错误,或者硬件会被错误地识别,
+又或者你只是不想核心对该硬件进行初始化。
+
+reserve(保留)启动参数指定一个不要检测的 I/O 端口保留区。
+设备驱动程序不会检测保留区域的 I/O 端口,
+除非其他的启动参数明确的指定需要去检测。
+
+例如,命令行
+.IP
+reserve=0x300,32  blah=0x300
+.LP
+表示设置保留 I/O 区域 0x300 到 0x31f(共32个端口)
+不会被 `blah' 程序以外的驱动程序所检测。
+
+.SS "`mem=...'"
+
+PC 规范定义的返回内存数的 BIOS 调用最大可以返回 64MB 内存。
+Linux 使用这个 BIOS 调用检测机器安装了多少内存。
+如果你拥有超过 64MB 的内存,就可以使用这个参数告诉 Linux 你的内存数。
+该值可以是 10 进制的或者是 16 进制的(加上 0x 的前缀),
+后缀也可以加上 "k" (乘以 1024)或 "M" (乘以 1048576)。
+下面是 Linux 初始人 Linus 对 "mem=" 参数使用的声明:
+\&"核心能够接受任何你给予的 'mem=xx' 参数,
+但是如果你欺骗它的话,它迟早会让你死的很难看。
+参数用来指定最高位的 RAM 地址,所以 'mem=0x1000000' 表示你拥\&有 16MB 的内存。
+而对于96MB内存的机器来说你应该设置为 'mem=0x6000000'。
+
+注意注意注意:有些机器可能会将内存高端设置为 BIOS 所使用,
+所以你可能将不能全部拥有 96MB 地址空间。
+反之,有些芯片可以将包括 BIOS 的物理内存影射到内存高端去,
+所以,你可以用的实际空间可能会是 96MB+384kB。
+但是如果你告诉 Linux 核心你拥有的内存超出你的实际内存的话,将会发生很糟糕的事情。
+也许躲得过初一,躲不过十五。"
+
+.SS "`panic=N'"
+在缺省情况下,核心并不会在异常后重新启动系统,
+但是这个参数可以指定内核在发生异常后 N 秒后重新启动(如果 N>0)。
+这个异常时限也可以使用 "echo N>/proc/sys/kernel/panic" 来设定。
+
+.SS "`reboot=[warm|cold][,[bios|hard]]'"
+(只有当 CONFIG_BUGi386 被定义的时候该参数才起作用)
+从 2.0.22 版本后的核心开始,reboot 命令在缺省情况下使用冷启动。
+你可以使用 "reboot=warm" 来进行老版本所的缺省的热启动方式。
+(冷启动意味着对所有的硬件设备进行重新设置,
+但是也有可能令在磁盘缓冲区中尚未写到磁盘上的数据被破坏。
+热启动的优点是速度比较快。)
+在缺省情况下,
+要求键盘控制器向机器发出可以重新启动的低电位脉冲是很困难的,
+但是至少有一种类型的主板不会这样工作。
+选项 "reboot=bios" 将用 BIOS 的设置代替跳线。
+
+.SS "`nosmp'" 和 "`maxcpus=N'"
+(该参数只有当 __SMP__ 参数被定义的时候才有效)
+命令行选项 "nosmp" 或 "maxcpus=0" 将会禁止激活 SMP(对称多处理)功能,
+选项 "maxcpus=N" 限制在 SMP 方式下工作的 CPU 最大数目为 N.
+
+.SH "核心开发者所使用的启动参数"
+
+.SS "`debug'"
+
+核心信息被传递给核心的日志守护进程 klogd 使得它们能够被记录在磁盘中。优先级高于
+.I console_loglevel
+的信息也可以在控制台上被显示出来。
+(如果想了解信息优先级,可以去查看<linux/kernel.h>文件。)
+在缺省情况下,所有比调试信息级别高的信息都会被写入日志文件。
+但是这个启动参数的设置,可以使得核心将 DEBUG(调试信息)级别的信息写到日志里。
+console loglevel 也能够在系统运行时通过使用 klogd 来设置。
+请看
+.BR klogd (8).
+
+.SS "`profile=N'"
+
+用来激活一个核心记录程序。
+如果你需要了解核心在什么地方消耗其CPU周期,可以通过设置
+.I prof_shift
+为一个非零值来激活核心记录程序。
+可以通过在编译内核的时候指定 CONFIG_PROFILE 值也可以通过 "profile=" 选项来指定
+.I prof_shift
+的值。
+当
+.I prof_shift
+通过以上方式指定为 N,或通过 CONFIG_PROFILE_SHIT 的方式指定,
+或者直接使用其缺省值 2 的时候,
+这个值表示记录程序使用 prof_shift 个时间间隔进行记录:
+每个时间间隔是一个时钟滴答。
+当系统执行核心代码的时候,一个记数器的值会不断的增加。
+.IP
+profile[address >> prof_shift]++;
+.LP
+原始的配置文件可以从
+.IR /proc/profile .
+中读到。或者你也可以使用象 readprofile.c 之类的工具来阅读配置文件。任何写到
+.I /proc/profile
+中的操作将清除记数器。
+
+.SS "`swap=N1,N2,N3,N4,N5,N6,N7,N8'"
+设置控制核心的虚拟存储交换算法的 8 个参数。这8个参数是
+max_page_age, page_advance, page_decline, page_initial_age, 
+age_cluster_fract, age_cluster_min, pageout_weight, bufferout_weight。
+只能用于核心控制。
+
+.SS "`buff=N1,N2,N3,N4,N5,N6'"
+设置核心缓存管理的 6 个参数,分别是
+max_buff_age, buff_advance, buff_decline,
+buff_initial_age, bufferout_weight, buffermem_grace。
+同样也只能用于核心控制
+
+.SH "使用内存虚拟磁盘的启动参数"
+(该参数只在核心使用 CONFIG_BLK_DEV_RAM 进行编译后才有效)
+在通常情况下,在 Linux 下使用一个内存虚拟磁盘(RAMDISK)并不是一个好的方法 - 
+因为系统会自动、高效的使用可用的内存。
+但是当用软盘启动的时候(或者当建立一个启动软盘的时候),
+将软盘的内容读到一个内存虚拟磁盘中是非常有用的。
+另外的情况也有可能是有一些模块(或者是文件系统又或者是硬件的)
+必须在主磁盘被访问前被调到内存中来。
+
+在 1.3.48 版本的 Linux 中,ramdisk 的操作被彻底的改变了。
+在 1.3.48 以前的版本中,内存是静态分配的,"ramdisk = N" 参数提供内存的大小。
+(这些也能够在核心被编译的时候被设置,或者也可以使用
+.BR rdev (8).来进行设置)
+从 1.3.48 开始,内存虚拟磁盘开始使用高速缓存,而且可以动态的增加其空间。
+如果需要了解有关最新的内存虚拟磁盘设置(比如你要了解怎么使用
+.BR rdev (8)
+来进行ramdisk的设置)
+请查看
+.IR /usr/src/linux/Documentation/ramdisk.txt .
+
+有关的参数一共有四个,两个是布尔变量,两个是整型值。
+
+.SS "`load_ramdisk=N'"
+如果 N=1,载入一个内存虚拟磁盘。如果 N=0,不载入内存虚拟磁盘(这是缺省值)。
+
+
+.SS "`prompt_ramdisk=N'"
+如果 N=1,需要提示插入软盘。(这是缺省值)
+如果 N=0,没有提示。(因此,这个参数永远也不会需要)
+
+.SS "`ramdisk_size=N' 或者 `ramdisk=N'
+设置内存虚拟磁盘的最大空间为 N kB。缺省值是 4096 kB (4MB)。
+
+.SS "`ramdisk_start=N'"
+设置启动块数值(也就是内存虚拟磁盘从软盘的多少偏移量位置开始)为 N。
+由于紧跟在内存虚拟磁盘后面的是核心映象文件,所以这个设置是必要的。
+
+.SS "`noinitrd'"
+(只有核心在编译时使用了 CONFIG_BLK_DEV_RAM 标志和
+CONFIG_BLK_DEV_INITRD 标志时才会有效)
+目前,我们基本上可以通过编译核心使其支持使用初始化内存虚拟磁盘
+(initrd:Initial Ramdisk)。当启用 initrd 的时候,
+启动进程会载入核心和一个已经初始化的内存虚拟磁盘,
+然后核心会将 initrd 转变为一个"普通的"内存虚拟磁盘,
+并将它激活为可读写的根设备。接下来,会被执行 /linuxrc,
+"真正的"根文件系统被激活,而 initrd 文件系统则被转移到 /initrd 目录下。
+最后顺序执行正常的启动程序(比如说是 /sbin/init 程序)。
+如果希望得到关于 initrd 的详细的介绍,可以参考
+.IR /usr/src/linux/Documentation/initrd.txt.
+
+自然,'noinitrd' 参数告诉核心,尽管核心是按照使用 initrd 的参数来编译的,
+但是也不需要使用我们上面描述的过程。但是,仍然保留 initrd 的所有数据到
+.IR /dev/initrd .
+目录下。
+(该设备只能被使用一次,数据在最后一个使用 initrd 的进程被关闭后会释放掉)
+.IR /dev/initrd .)
+
+
+.SH "SCSI设备启动参数"
+
+关于这个区域的一些符号说明:
+
+.I iobase
+第一个SCSI主设备占用的I/O端口。它用 16 进制的数据指定,一般介于 0x200 到 0x3ff 之间。
+
+.I irq
+SCSI 卡设置的硬件中断号。具体的值取决于 SCSI 卡的具体要求,
+一般使用的中断号是 5,7,9,10,11,12 和 15。
+其他的中断号一般会被一些外设所占用,比如说,IDE 接口的硬盘,软盘驱动器,串口等等。
+
+.I scsi-id
+SCSI 适配器在 SCSI 总线上使用的用来标识自身的识别号码(ID)。
+只有一部分 SCSI 适配器允许你改动该 ID 的值,大部分都是被固化好的。
+缺省值一般是 7,可是,在 Seagate 和Future Domain TMC-950 的板卡上是 6。
+
+.I parity
+是否允许 SCSI 适配器在交换数据的时候使用奇偶效验。
+指定一个非零值,奇偶效验会起用,如果指定为零则不会启动奇偶效验。
+同样,不是所有的 SCSI 适配卡支持选择奇偶效验的启动参数。
+
+.SS "`max_scsi_luns=...'"
+
+一个 SCSI 设备能够使用一些包括它自己在内的"子设备"。
+最常用的例子是现在的 SCSI CD-ROM 设备能够同时处理多张光盘。
+每张光盘使用"逻辑单元号码"(LUN)来确定其位置。
+当然,大部分设备,比如硬盘,磁带机都只能处理一个设备,因此它们的 LUN 会被设置为 0
+一些设计上有缺陷的 SCSI 设备一旦发现 LUN 号码不为零时,就可能不再继续工作。
+因此,如果在编译的时候没有设置 CONFIG_SCSI_MULTI_LUN 标志,
+新的核心将使用 0 作为缺省值。
+
+如果需要在启动的时候指定 LUN 的值,可以使用 "max_scsi_luns=n" 作为启动参数,
+而 n 是一个大于 1 小于 8 的数值。
+为了避免上面描述的问题,使用 n=1 可以避免那些设备的造成的错误。
+
+.SS "SCSI 磁带配置"
+
+一些 SCSI 磁带设备的启动设置能够使用下面的格式来进行:
+.IP
+.BI st= buf_size[,write_threshold[,max_bufs]]
+.LP
+前面的两个数字指定单元的大小(kB),缺省的值
+.I buf_size
+是 32kB,最大的值可以指定为 16384kB。
+.I write_threshold
+是磁带得到的缓存区大小,缺省的是 30kB。
+其最大的缓存值依据不同的驱动设备的个数而得到不同的值,缺省值是两个设备。
+缺省的格式可能象下面这样
+.IP
+st=32,30,2
+.LP
+你能够在核心源码的 scsi 目录下的 README.st 中看到所有的细节。
+
+
+.SS "Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI 配置"
+
+在这一句中 aha 数值代表适配卡类型,aic 数值表示适配卡的 SCSI 芯片类型,
+也包括象 Soundblaster-16 这样的 SCSI 设备。
+
+SCSI 主设备探测程序将从已经安装好的 BIOS 中进行查找,
+如果没有的话,该检测将不会找到你的设备。
+那么,你就必须使用以下格式的启动参数:
+.IP
+.BI aha152x= iobase[,irq[,scsi-id[,reconnect[,parity]]]]
+.LP
+如果驱动程序是以调试模式编译的话,第六个值能够被指定设置调试的级别。
+
+其他的参数已经在上面描述过了。值得一提的是
+.I reconnect
+参数如果是非零值就能够允许设备"断连和重新连接"。下面是一个例子。
+.IP
+aha152x=0x340,11,7,1
+.LP
+要注意到的是参数必须按指定的顺序来设定,
+这意味着如果你需要指定奇偶参数的话你就必须指定其他的所有参数。
+
+.SS "Adaptec aha154x 配置"
+
+aha1542 系列的适配卡上有一个 i82077 软盘控制器,aha1540 系列的卡没有。
+这种卡叫做总线主控卡,它们能够通过参数的设置"合理"的与其他设备共享总线。
+它们的启动参数就象下面这样:
+.IP
+.BI aha1542= iobase[,buson,busoff[,dmaspeed]]
+.LP
+通常可用的 iobase 值会是 0x130,0x134,0x230,0x234,0x330,0x334 其中的一个。
+兼容的卡能够允许使用其他值。
+
+.IR buson ", " busoff
+值表示的是该卡占用 ISA 总线的时间(以微秒计)。缺省值是 11 微秒开,4 微秒关,
+这样其他的卡(比如说基于 ISA 总线的 LANCE 以太网卡)就能够有机会访问 ISA 总线。
+
+.I dmaspeed
+值代表直接存储访问 (DMA) 的传输速度 (以MB/秒为单位)。
+缺省值是 5MB/秒。
+较新版本的卡允许你使用软件设置来选择该值,老版本的卡使用跳线来设置。
+如果你的主板支持的话,你能够将该值提高到 10MB/秒。
+如果使用 5MB/秒以上的传输速度,你就应该进行很小心的实验。
+
+.SS "Adaptec aha274x, aha284x, aic7xxx 配置"
+
+这些板卡能够接受象下面这样格式的参数:
+.IP
+.BI aic7xxx= extended,no_reset
+.LP
+.I extended
+值,如果是非零的话,表明大容量磁盘的扩展转换模式可以被使用。而
+.I no_reset
+值如果是非零的话,告诉驱动程序在设置 SCSI 卡后重新启动时不要重新设置 SCSI 总线。
+
+.SS "AdvanSys SCSI Hosts configuration (`advansys=')"
+
+AdvanSys 驱动程序能够接收(最多) 4 个 I/O 地址用于来探测 AdvanSys SCSI 卡。
+要注意的是这些值(如果使用了它们)并不会对 EISA 总线或者 PCI 总线的检测有任何作用。
+它们只能用来检测 ISA 总线和 VLB 总线型的卡。
+另外,如果驱动程序是使用调试模式编译的话,
+调试级别能够通过加入一个 0xdeb[value] 参数来设定。
+value 可以是 0-f(16进制),代表可以得到多达 16 个级别的调试信息。
+
+.SS "AM53C974"
+.IP
+.BI AM53C974= host-scsi-id,target-scsi-id,max-rate,max-offset
+.LP
+
+.SS "BusLogic SCSI Hosts 配置 (`BusLogic=')"
+.IP
+.BI BusLogic= N1,N2,N3,N4,N5,S1,S2,...
+.LP
+作为更深层次的讨论,我们来分析一下 BusLogic 命令行参数,参考一下
+.IR /usr/src/linux/drivers/scsi/BusLogic.c
+(在我看的核心版本中是3149-3270行). 下面的文字是一段精辟的摘录
+
+参数 N1-N5 是整数。参数 S1 是字符串。N1 是适配卡的 I/O 地址。
+N2 是标记队列深度(Tagged Queue Depth),
+是为那些支持标记队列(Tagged Queue)的目标设备而设置的。
+N3 是总线停滞时间(以秒计),
+这是表示从 SCSI 适配卡重新启动 SCSI 总线到发出一个 SCSI 指令之间的时间。 
+N4 是区域选项(只适合特定的单个适配卡)
+N5 是全局选项(针对所有的适配卡) 
+
+字符串参数用来对于标记队列控制
+(TQ:Default,TQ:Enable,TQ:Disable,TQ:<Per-Target-Spec>),
+出错处理(ER:Default,ER:HardReset,ER:BusDeviceReset,ER:None,ER:<Per-Target-Spec>)
+和适配卡检测(NoProbe,NoProbeISA,NoProbePCI)。
+
+.SS "EATA/DMA 配置"
+缺省的需要检测的 I/O 端口能够使用以下的参数来改变:
+.IP
+.BI eata= iobase,iobase,... .
+.LP
+
+.SS "Future Domain TMC-16x0 配置"
+.IP
+.BI fdomain= iobase,irq[,adapter_id]
+.LP
+
+.SS "Great Valley Products (GVP) SCSI 控制器配置"
+.IP
+.BI gvp11= dma_transfer_bitmask
+.LP
+
+.SS "Future Domain TMC-8xx, TMC-950 配置"
+.IP
+.BI tmc8xx= mem_base,irq
+.LP
+在这里,
+.I mem_base
+值是卡所使用的内存映射的 I/O 区域值。
+常见的值会是 0xc8000,0xca000,0xcc000,0xce000,0xdc000,0xde000。
+
+.SS "IN2000 配置"
+.IP
+.BI in2000= S
+.LP
+这里 S 是一个用逗号分隔的关键字 [:值]
+可以被识别的关键字(有可能伴随着值)是:
+ioport:addr, noreset, nosync:x, period:ns, disconnect:x,debug:x, proc:x.
+如果你要了解这些参数的功能的话,请看
+.IR /usr/src/linux/drivers/scsi/in2000.c .
+
+.SS "NCR5380 和 NCR53C400 配置"
+这个启动参数遵循以下的格式
+
+.IP
+.BI ncr5380= iobase,irq,dma
+.LP
+或者
+.IP
+.BI ncr53c400= iobase,irq
+.LP
+如果卡没有使用中断,那么 IRQ 值 255(0xff)将被用来屏蔽中断。
+IRQ 值 254 表示自动检测,更多的细节可以从下面的文档中得到。
+.IR /usr/src/linux/drivers/scsi/README.g_NCR5380 .
+
+.SS "NCR53C8xx 配置"
+.IP
+.BI ncr53c8xx= S
+.LP
+这里 S 是一个用逗号分隔的关键字 [:值]
+可以被识别的关键字(有可能伴随着值)是:
+mpar (master_parity), spar (scsi_parity),disc (disconnection), 
+specf (special_features), ultra (ultra_scsi),fsn (force_sync_nego), 
+tags (default_tags), sync (default_sync),
+verb (verbose), debug (debug), burst (burst_max).
+如果需要了解这些值的功能,请参考
+.IR /usr/src/linux/drivers/scsi/ncr53c8xx.c .
+
+.SS "NCR53c406a 配置"
+.IP
+.BI ncr53c406a= iobase[,irq[,fastpio]]
+.LP
+指定 irq = 0 适用于无中断驱动模式。
+设置 fastpio = 1 设置为快速的处理器 I/O(PIO)模式,0 是慢速的处理器 I/O(PIO)模式。 
+
+.SS "IOMEGA PPA3 配置"
+.IP
+.BI ppa= iobase[,speed_high[,speed_low[,nybble]]]
+.LP
+这里 iobase 的值是并口的地址(缺省值是 0x378),
+speed_high 是在数据处理时延迟时间(以微秒为单位,缺省值是 1),
+speed_low 是端口其他状态下的延迟时间(以微秒为单位,缺省值是 6),
+nybble 是一个 BOOL 值,表示是不是强制使用半个字节(4个位)的工作模式,
+缺省值是"假"。
+更多细节请参考
+.IR /usr/src/linux/drivers/scsi/README.ppa .
+
+.SS "Pro Audio Spectrum 配置"
+
+PAS16 适配卡使用 NC5380 SCSI 芯片,较新的版本支持免跳线模式。启动参数是下列格式:
+
+.IP
+.BI pas16= iobase,irq
+.LP
+不同点是你可以指定 IRQ 的值是 255,
+这样你就可让驱动程序不要使用中断,当然这样会降低性能。
+通常 iobase 的值是0x388。
+
+.SS "Seagate ST-0x 配置"
+
+如果你的卡没有在启动的时候被检测到,你需要使用下面格式的启动参数:
+.IP
+.BI st0x= mem_base,irq
+.LP
+这里
+.I mem_base
+值是卡所使用的内存映射的 I/O 区域值。
+通常的值会是 0xc8000,0xca000,0xcc000,0xce000,0xdc000,0xde000。
+
+.SS "Trantor T128 配置"
+
+这种卡也是使用 NCR5380 芯片组,并且接受以下的选项:
+.IP
+.BI t128= mem_base,irq
+.LP
+.I mem_base
+的值0xc8000,0xcc000,0xdc000,0xd8000。
+
+
+.SS "UltraStor 14F/34F 配置"
+检测出的缺省的 I/O 端口列表能够被
+.IP
+.BI eata= iobase,iobase,... .
+.LP
+所改变。
+
+.SS "WD7000 配置"
+.IP
+.BI wd7000= irq,dma,iobase
+.LP
+
+.SS "Commodore Amiga A2091/590 SCSI 控制器配置"
+.IP
+.BI wd33c93= S
+.LP
+这里 S 是一个用逗号分隔的字符串选项。
+可以被识别的选项字是:
+nosync:bitmask, nodma:x, eriod:ns, disconnect:x, debug:x, clock:x, next.
+详细说明请参考
+.IR /usr/src/linux/drivers/scsi/wd33c93.c .
+
+.SH "硬盘驱动器"
+
+.SS "IDE 硬盘驱动器/光驱驱动程序参数"
+
+IDE 驱动程序可以接受的参数有很多,
+其范围包括从磁盘规格到有缺陷的控制器芯片的支持。
+指定驱动程序参数的同时需要使用 "hdX=" 的格式来指定驱动器。
+X 的范围是从 "a" 到 "h"。
+
+非驱动器选项使用前缀 "hd=" 来指定。
+注意如果将驱动器选项作用于非驱动器选项也可以工作,
+而且选项也能够象你所期望的那样被应用。
+
+同时还要注意到的是 "hd=" 格式也能够用于按照规定的顺序(从 a 到 h)
+检索到下一个没有指定的驱动器。在下面的讨论中,我们可以看到 "hd=" 选项将会被短暂的引用。
+需要了解更多细节的话,参考 linux/drivers/block 目录下的 README.ide
+
+.SS "`hd=cyls,heads,sects[,wpcom[,irq]]' 选项"
+
+这些选项用来指定磁盘的物理参数。前面三个参数是必须的。
+柱面/磁头/磁道三个参数将被 fdisk 程序所使用。
+如果是 IDE 的硬盘驱动器,"写补偿"值会被忽略掉。
+指定的 IRQ 值是接口程序所使用的,所以其实并不能被称为真正意义上的指定的驱动器参数。
+
+.SS "`hd=serialize' 选项"
+具有双 IDE 接口的 CMD-640 芯片在设计上是有缺陷的。
+这个缺陷是当第二个接口与第一个接口被同时使用时,将会破坏你的数据。
+使用这个选项能够使你的接口永远不会同时使用。
+
+.SS "`hd=dtc2278'选项"
+
+这个选项告诉驱动程序你拥有一个 DTC-2278D 的 IDE 接口。
+驱动程序就会试图使用 DTC 的指定操作来激活第二个接口并启动快速传送模式。
+
+.SS "`hd=noprobe'选项"
+
+不要检测该硬盘驱动器。例如,
+.IP
+hdb=noprobe hdb=1166,7,17
+.LP
+将会屏蔽掉检测,可是仍然指定了驱动器的物理参数,
+因为这样才能够将驱动器登记成为一个有效的、可用的块设备。
+
+.SS "`hd=nowerr'选项"
+
+一些驱动器具有 WRERR_STAT 位,并且永久有效。这个选项忽略该位。
+
+.SS "`hd=cdrom'选项"
+
+这个选项告诉 IDE 驱动程序有一个 ATAPI 兼容的光盘驱动器。
+在大部分情况下光盘驱动器会被自动的识别,
+但是对于不能识别的光盘驱动器来说,
+这个选项是很有用的。
+
+.SS "标准的 ST-506 磁盘驱动程序参数 (`hd=')"
+
+标准的磁盘驱动程序可以接受磁盘的物理参数,就象上面的 IDE 设备那样。
+注意无论怎样它都只希望接受三个参数(柱面/磁头/磁道)-- 过多或过少的参数都会被忽略掉。
+当然,它只接受 "hd=" 这样的参数,象 "had=" 参数这样的在这里是无效的。下面是它的格式:
+.IP
+hd=cyls,heads,sects
+.LP
+如果装有两个磁盘驱动器,上面的工作需要重复的进行以配置第二个磁盘驱动器。
+
+.SS "XT 磁盘驱动程序参数 (`xd=')"
+
+如果你不幸使用了一些些老掉牙的、8 位的和使用惊人的 125kB/s 传输速度的卡,
+这些参数会对你有帮助。
+如果它们不能被识别的话,你只能使用以下格式的启动参数:
+.IP
+xd=type,irq,iobase,dma_chan
+.LP
+type 值指定该卡的制造厂商,下面是厂商的值及对应的名字:
+0= 普通卡; 1=DTC; 2,3,4=Western Digital,5,6,7=Seagate; 8=OMTI. 
+同一厂家出厂的不同类型的卡的区别由 BIOS 字符串来指定,如果指定 type,这些也就没有用了。
+
+函数 xd_setup() 不检查这些值,并且会假设你已经输入了全部的四个值。
+不要让它失望。
+这里有一个 WD1002 控制器示范用法--假设 BIOS 被关掉/移走了--使用缺省的 XT 控制参数
+.IP
+xd=2,5,0x320,3
+.LP
+
+.SS "Syquest's EZ*可移动磁盘"
+.IP
+.BI ez= iobase[,irq[,rep[,nybble]]]
+.LP
+
+.SH "IBM MCA总线设备"
+请同时参考
+.IR /usr/src/linux/Documentation/mca.txt .
+
+.SS "PS/2 ESDI hard disks"
+有可能按下面的方法在启动时指定你所需要的磁盘物理参数。
+.IP
+.BI ed= cyls,heads,sectors.
+.LP
+对于ThinkPad-720, 要加上下面的选项
+.IP
+.BR tp720=1 .
+.LP
+
+.SS "IBM Microchannel SCSI Subsystem 配置"
+.IP
+.BI ibmmcascsi= N
+.LP
+这里 N 是子系统的\fIpun\fP (SCSI ID)
+
+.SH "CD-ROMs (Non-SCSI/ATAPI/IDE)"
+
+.SS "Aztech 接口"
+
+语法是:
+.IP
+aztcd=iobase[,magic_number]
+.LP
+如果你设置 magic_number 值为0x79,
+那么该驱动程序尝试在任何一个未知的固件上面执行。其他的值都会被忽略掉。
+
+.SS "MicroSolutions `backpack' 光驱接口"
+语法:
+.IP
+bpcd=iobase
+.LP
+
+.SS "CDU-31A 和 CDU-33A Sony 接口"
+
+这种光盘驱动器的接口会出现在一些 Pro Audio Spectrum 声卡及
+其他支持 Sony 驱动接口的卡上。语法是:
+.IP
+cdu31a=iobase,[irq[,is_pas_card]]
+.LP
+指定一个为 0 的 IRQ 告诉驱动程序该硬件不支持中断(如一些 PAS 卡)。
+如果你的卡支持中断,就要使用它们,这样可以减少驱动程序的 CPU 占用时间。
+
+对于
+.I is_pas_card
+选项来说,如果使用 Pro Audio Spectrum 的卡则应该输入 "PAS",否则就不需要指定了。
+
+.SS "CDU-535 Sony 接口"
+
+该光盘驱动器接口的语法如下
+.IP
+sonycd535=iobase[,irq]
+.LP
+如果你要指定 IRQ 值的话,0 可以被当成一个标志位被填到 I/O 地址中。
+
+.SS "GoldStar 接口"
+
+该光盘驱动器的接口语法是:
+.IP
+gscd=iobase
+.LP
+
+.SS "ISP16 光驱接口"
+语法:
+.IP
+isp16=[iobase[,irq[,dma[,type]]]]
+.LP
+(三个整数值,一个字符串)。如果 type 的值是 "noisp16" 的话,接口不会被配置。
+其他可以被接受的 type 值包括: `Sanyo", `Sony', `Panasonic' 和 `Mitsumi'.
+
+.SS "Mitsumi标准接口"
+
+这种光盘驱动器接口的语法是:
+.IP
+mcd=iobase,[irq[,wait_value]]
+.LP
+这里
+.I wait_value
+被用来设置为内部故障的超时时间。能否实现还需要依靠在编译时的定义而定。
+Mitsumi FX400 是一种不使用 mcd 驱动程序的 IDE/ATAPI 光盘驱动器。.
+
+.SS "Mitsumi XA/MultiSession接口"
+
+这是与我们上面介绍的一样的硬件,只不过该驱动程序拥有更多的特性。
+语法:
+.IP
+mcdx=iobase[,irq]
+.LP
+
+.SS "Optics Storage 接口"
+
+语法为:
+.IP
+optcd=iobase
+.LP
+
+.SS "Phillips CM206 接口"
+
+语法是:
+.IP
+cm206=[iobase][,irq]
+.LP
+
+该驱动程序会假定所给的 3 到 11 之间的值是设置的 IRQ 值,
+数值在 0x300 到 0x370 之间的值是 I/O 端口号,
+因此你可以指定一个,或者可以指定两个,且没有特殊的位置要求。
+它也接受 "cm206=auto" 参数来实现自动检测。
+
+.SS "The Sanyo 接口"
+
+语法是:
+.IP
+sjcd=iobase[,irq[,dma_channel]]
+.LP
+
+.SS "SoundBlaster Pro 接口"
+
+语法是:
+.IP
+sbpcd=iobase,type
+.LP
+这里 type 是下面这些字符串的一种(大小写敏感的):
+`SoundBlaster', `LaserMate', 或 `SPEA'.  
+I/O 地址是光盘驱动器接口的,并不是声卡的一部分。
+
+.SH "以太网络设备"
+
+不同的驱动程序使用不同的参数,但是至少它们都会要使用一个 IRQ,一个 I/O 端口地址,
+一个名字。下面是最为普遍的参数设置格式:
+.IP
+ether=irq,iobase[,param_1[,...param_8]],name
+.LP
+第一个非数值的参数被作为名字使用。
+param_n 的值(如果可以使用的话)对于不同的卡/驱动程序来说往往具有不同的含义。
+典型的 param_n 的值用来指定象共享的内存地址,接口选择,DMA 通道等等。
+
+该参数最普遍的用法是强迫进行第二以太网卡的检测。
+因为作为缺省的情况来说,内核只是检测第一块以太网卡。
+下面是实现第二以太网卡检测的简单方法:
+.IP
+ether=0,0,eth1
+.LP
+注意这里 IRQ 和 I/O 的值都是 0,这个表示值需要进行自动检测。
+
+以太网的 HowTo 文件对于多网卡的使用,网卡/驱动程序的指定,
+param_n 数值的使用都有详细的介绍。
+有兴趣的读者可以参考该文档中对自己拥有的卡的说明。
+
+.SH "软盘驱动器驱动程序"
+
+软盘驱动程序选项有很多,它们在 linux/drivers/block 目录下的 README.fd 中列举出来。
+这些信息就是摘自那个文件。
+
+.SS "floppy=mask,allowed_drive_mask"
+
+设置允许进行掩码设置的驱动程序将掩码设置为 mask。
+在缺省情况下,只有每个软盘控制器的 0 号和 1 号单元允许这样做。
+这样规定的原因是有一些非标准的硬件(华硕的 PCI 主板)在访问 2 号或者 3 号单元时,
+会令键盘发生问题。该选项差不多已被 cmos 选项所取代了。
+
+.SS "floppy=all_drives"
+
+为所有的软盘驱动器设置驱动器掩码。
+如果你在一个软盘控制器上拥有两个驱动器的话,你就可以这么做。
+
+.SS "floppy=asus_pci"
+
+设置掩码为只允许 0 号和 1 号单元。(缺省值)
+
+.SS "floppy=daring"
+
+告诉软盘驱动程序你有一个比较好的软盘控制器。
+这样的设置可以使你的设备运行得更加有效和顺利,
+但是对于某些特定的控制器,这可能会引起错误,也可能会加快某些操作的速度。
+
+.SS "floppy=0,daring"
+
+告诉软盘驱动程序你的软盘控制器需要谨慎的运行。
+
+.SS "floppy=one_fdc"
+
+告诉软盘驱动程序你只有一个软盘控制器。(缺省值)
+
+.SS "floppy=two_fdc or floppy=address,two_fdc"
+
+告诉软盘驱动程序你拥有两个软盘控制器。第二个控制器假设位于 address 值。
+如果 address 的值没有给出的话,0x370 被当成假想位置。
+
+.SS "floppy=thinkpad"
+
+告诉软盘驱动程序你有一个 Thinkpad 电脑。Thinkpad 的磁盘变更线路与通常的机器相反。
+
+.SS "floppy=0,thinkpad"
+
+告诉软盘驱动程序你没有一个 Thinkpad 电脑。
+
+.SS "floppy=drive,type,cmos"
+
+设置 CMOS 的类型为 type 值。条件是驱动器在掩码中被置"允许"。
+如果你有两个以上的软盘驱动器(在实际的 CMOS 设置中只能设置两个),
+或者你的 BIOS 使用的是非标准的 CMOS 类型,这是非常有用的。
+把前面两个软盘驱动器的 CMOS 设置为 0(缺省值)
+使得软盘驱动程序从实际的 CMOS 设置中读取它们的信息。
+
+.SS "floppy=unexpected_interrupts"
+
+当接收到一个异常时显示相应的消息。(缺省行为)
+
+.SS "floppy=no_unexpected_interrupts or floppy=L40SX"
+
+如果出现异常,也不要提示。IBM L40SX 在某些特定的显示模式下需要这个选项。
+(这看起来象是视频和软盘之间有某种交互关系。
+异常中断只会影响性能,所以能够被安全的忽略)
+
+.SH "声卡驱动程序"
+
+声卡驱动程序也能够接受启动参数来替代编译时使用的值。
+这种方法并不值得推荐,因为这样会更复杂。
+参数说明在 /linux/drivers/sound/Readme.Linux 文件中描叙。它接受如下格式的启动参数:
+.IP
+sound=device1[,device2[,device3...[,device10]]]
+.LP
+这里每个 deviceN 是类似于 0xTaaaId 这样格式的值,其中各字符表示为:
+
+T - 设备类型: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16,
+7=SB16-MPU401。
+
+aaa - 16 进制的 I/O 地址。
+
+I - 16 进制表示的中断地址 。
+
+d - DMA 通道号。
+
+这样的格式看起来是很混乱的,你最好在编译的时候就使用你知道的值。
+使用 "sound=0" 的参数将会完全屏蔽声卡驱动程序。
+
+.SH "ISDN 驱动程序"
+
+.SS "ICN ISDN 驱动程序"
+语法:
+.IP
+icn=iobase,membase,icn_id1,icn_id2
+.LP
+这里 icn_id1 和 icn_id2 是两个字符串,用来为核心消息提供卡的名字。
+
+.SS "PCBIT ISDN 驱动程序"
+语法:
+.IP
+pcbit=membase1,irq1[,membase2,irq2]
+.LP
+这里 membaseN 是第 N 块卡其共享内存的地址,irqN 是第 N 块卡的中断值。
+缺省值是 IRQ 5 和内存地址 0xD0000。
+
+.SS "Teles ISDN 驱动程序"
+语法:
+.IP
+teles=iobase,irq,membase,protocol,teles_id
+.LP
+这里 iobase 是卡的 I/O 端口地址,membase,irq 的意义与上面的一样,
+teles_id 是唯一的 ASCII 字符串标识。
+
+.SH "串口驱动程序"
+
+.SS "RISCom/8 多串口驱动程序 (`riscom8=')"
+语法:
+.IP
+riscom=iobase1[,iobase2[,iobase3[,iobase4]]]
+.LP
+更多的细节请参考
+.IR /usr/src/linux/Documentation/riscom8.txt .
+
+.SS "DigiBoard 驱动程序 (`digi=')"
+如果该选项被使用,则应该使用 6 个参数。
+语法:
+.IP
+digi=status,type,altpin,numports,iobase,membase
+.LP
+参数可以是整数值,也可以是字符串值。
+如果使用了字符串,则 iobase 和 membase 参数需要使用 16 进制的形式。
+整型参数值按顺序为:
+status (允许(1) 或屏蔽(0)该卡),
+type (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)),
+altpin (允许(1)或屏蔽(0) alternate pin排列),
+numports (该卡的端口数目),
+iobase (该卡设置的I/O 端口号 (16进制)),
+membase (内存窗口的基地址(16进制)).
+所以,下面两个不同格式的参数形式其实是一样的:
+.IP
+digi=E,PC/Xi,D,16,200,D0000
+.br
+digi=1,0,0,16,0x200,851968
+.LP
+更多的细节请参考
+.IR /usr/src/linux/Documentation/digiboard.txt .
+
+.SS "Baycom 串/并口无线 Modem"
+语法:
+.IP
+baycom=iobase,irq,modem
+.LP
+只有三个参数;如果有多张卡,就使用多个该命令。
+modem 参数是一个字符串,值是 ser12,ser12*,par96,par96* 中的一个。
+这里 "*" 代表使用软件 DCD。ser12 和 par96 用来选择所支持的 modem 类型。
+更多的细节请参考
+.IR /usr/src/linux/drivers/net/README.baycom .
+
+.SS "Soundcard 无线 Modem 驱动程序"
+语法:
+.IP
+soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode
+.LP
+除了最后一个参数以外其他的都是整型值;
+你可能注意到参数中有一个 0,需要该数值是因为在设置代码中有一个错误。
+模式参数是一个字符串,其语法是 hw:modem。
+这里 hw 是"sbc","wss","wssfdx" 中的一个值,modem 是 "afsk1200","fsk9600"
+中的一个值。
+
+.SH "打印驱动程序"
+
+.SS "`lp='"
+对于 1.3.75 版本以后的核心来说,
+你可以告诉打印驱动程序你使用了或没有使用哪个并行端口。
+如果你不想让打印驱动程序取得所有可用的并口,后者是非常有用的,
+这样其他的驱动程序(比如说 PLIP,PPA)就能够使用那些端口。
+
+参数的格式是多个 I/O 地址及 IRQ 对。举例来说,
+lp=0x3bc,0,0x378,7 将使用位于 0x3bc 地址的端口,
+"无 IRQ" (轮询 IRQ) 模式,然后使用位于 0x378 地址,IRQ 为 7 的端口。
+位于地址 0x278 的端口(如果有的话)不会被检测,
+因为自动检测模式只发生于没有 "lp=" 参数的情况下。
+如果需要屏蔽打印驱动程序的话,使用 lp=0 就可以实现。
+
+.SS "WDT500/501驱动程序"
+语法:
+.IP
+wdt=io,irq
+.LP
+
+.SH "鼠标驱动程序"
+
+.SS "`bmouse=irq'"
+总线型鼠标驱动程序只能接受一个参数,也就是该硬件需要的 IRQ 值。
+
+
+.SS "`msmouse=irq'"
+对于微软兼容鼠标来说参数与前面总线鼠标是一样的。
+
+.SS "ATARI鼠标设置"
+.LP
+atamouse=threshold[,y-threshold]
+.IP
+如果只有一个参数,该参数同时代表 x 起点坐标和 y 起点坐标。
+如果有两个参数,则第一个是 x 起点坐标,第二个是 y 起点坐标。
+这些值必须是在 1 到 20 之间(包括 20);缺省值是 2。
+
+.SH "视频设备"
+
+.SS "`no-scroll'"
+该选项告诉控制台驱动程序不要使用硬件滚动模式
+(滚动模式在将屏幕图象移动到图形储存器中而不是移动数据时非常有效)。
+一些 Braille 机器会需要它的。
+
+.SH 作者
+Linus Torvalds 
+
+.SH "参考"
+.BR klogd (8),
+.BR lilo.conf (5),
+.BR lilo(8),
+.BR mount(8),
+.BR rdev(8).
+
+该手册页的大部分内容来自 Paul Gortmaker 写的 Boot Parameter HowTo(1.0.1)版本。
+在该 HowTo 中还可以找到更多的有关信息。
+
+.SH "[中文版维护人]"
+.B billpan <billpan at yeah.net>
+.SH "[中文版最新更新]"
+.BR 2000/11/06
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/charsets.7 b/src/man7/charsets.7
new file mode 100644
index 0000000..80447d0
--- /dev/null
+++ b/src/man7/charsets.7
@@ -0,0 +1,214 @@
+.\" Copyright (c) 1996 Eric S. Raymond 
+.\" and Andries Brouwer 
+.\" This is free documentation; 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 version.
+.\"
+.\" This is combined from many sources, including notes by aeb and
+.\" research by esr. Portions derive from a writeup by Ramon Czybora.
+.TH CHARSETS 7 "November 5th, 1996" "Linux" "Linux Programmer's Manual"
+.SH NAME
+charsets \- 程序员对字符集和国际化的观点
+.SH 描述
+Linux 是一个国际性的操作系统。它的各种各样实用程序和设
+备驱动程序 (包括控制台驱动程序 ) 支持多种语言的字符集,
+包括带有附加符号的拉丁字母表字符,重音符,连字(字母结合),
+和全部非拉丁文字母表(包括希腊语,古代斯拉夫语,阿拉伯语,
+和希伯来语。 )
+.LP
+这份手册以程序员的眼光去看待不同的字符集标准,以及它们是如何
+在 Linux 中调和在一起的。讨论的标准包括 ASCII,ISO 8859,KOI8-R ,
+Unicode,ISO 2022 和 ISO 4873 。
+.SH ASCII
+ASCII (,美国国家信息交换(用)标准(代)码) 是最初的 7-bit字符集,
+原先是为美式英语设计的。当前它被 ECMA-6 标准所描述。
+.LP
+在英国使用一种 ASCII的变体(这变体是:用英国磅值的符号代替美国的
+crosshatch/octothorpe/hash 的磅值符号);当需要时,
+美国的(符号)和英国的变体(符号)可以用"US ASCII"和"UK ASCII"
+作为区别。
+.LP
+因为 Linux 是为美国设计的硬件写的, 它生来就支持 US ASCII 。
+
+.SH ISO 8859
+ISO 8859 是一系列 10 8-bit 字符集,它包含美国 ASCII 的低位 (7 -bit ), 
+128 ~159 范围内的不可见控制字符,和 96 个定宽图形(字符)在 160-255 里。
+。LP
+这些字符集中,最重要是 ISO 8859-1 ( Latin-1 )。
+它生来就被 Linux 控制台驱动程序支持,
+X11R6 的支持得也很好,并且是 HTML 的基础字符集。
+.LP
+
+Linux 下控制台也支持其他的 8859 字符集
+,通过用户模式实用程序( 例如 
+.BR setfont ( 8 ))
+来修改键盘绑定和 EGA 图形表格,
+以及进行控制台驱动程序里的字体表格中的“user mapping(用户影射)”。
+.LP
+下面是每个集合简短的描述:
+.TP
+8859-1 (Latin-1) 
+Latin-1 覆盖大多数的西欧语言,比如阿尔巴尼亚, 加泰罗尼亚语, 丹麦,
+荷兰,英语,法罗群岛,芬兰,法语,德语,加利西亚,爱尔兰,冰岛,
+意大利,挪威,葡萄牙,西班牙和瑞典。缺少荷兰的 ij连字(i与j合字) ,
+法国的 oe(o与e合字)和旧风格的',,' 而德语中``(这样的)引号是可以的。
+.TP
+8859-2 (Latin-2)
+Latin-2 支持大多数的拉丁文书写的斯拉夫语和中欧的语言:
+克罗地亚 , 捷克语, 德语, 匈牙利, 波兰,罗马尼亚,斯洛伐克,
+和斯洛文尼亚。
+.TP
+8859-3 (Latin-3)
+Latin-3 是世界语,加里西亚 , 马耳他人, 和土耳其语作者受欢迎的(语言)。
+.TP
+8859-4 (Latin-4)
+Latin-4 介绍了爱沙尼亚语,拉托维亚,和立陶宛的字符 。它是实质上过时的;
+参见 8859-10 (Latin-6 ) 。
+.TP
+8859-5 
+古代斯拉夫语字母支持保加利亚语, 白俄罗斯语,马其顿语, 俄语, 塞尔维亚语和乌克兰语。
+乌克兰人读带有下挑笔的`geh'为`heh',和(当)需要用带有上挑笔的 ghe
+写正确的ghe.参见下面的(关于)KOI8-R 的讨论。
+(译注:这些外国人书写习惯我们也不怎么需要理解吧,希望上面的解释不要
+把人搞糊涂了)
+.TP
+8859-6
+支持阿拉伯语。 8859-6 字型表是分离字符格式的一种固定的字体,但是一个合适
+的显示引擎应该联合这些来使用合适的词首,中间字母,和最后表格式。
+.TP
+8859-7
+支持现代的希腊语。
+.TP
+8859-8
+支持希伯来语。
+.TP
+8859-9 (Latin-5)
+这是Latin-1 的一种变体,它用土耳其语的一些(字符)代替很少用的冰岛语。
+.TP
+8859-10 (Latin-6) 
+Latin 6 增加末因纽特(译:对于last Inuit 我不知道是否是对的) (格陵兰语) 和 
+Sami ( 拉普兰语 ) ,这些是 Lattin 4 中缺少的,来覆盖整个北欧地区(的字符集)。
+RFC 1345 列出了初步的和不同的“ latin 6 "。 Skolt Sami 仍然比这些需要更多的
+重音符号。
+
+.TP
+8859-13 (Latin-7)
+.TP
+8859-14 (Latin-8)
+.TP
+8859-15
+增加了欧洲符号和法国连字,它们是 Latin-1 里缺漏的。
+.SH KOI8-R
+KOI8-R 是在俄国流行的一个非 ISO 字符集。下半部分是 US ASCII;
+上部是比 ISO 8859-5 设计的更好的古斯拉夫字符集。
+.LP
+控制台为了支持 KOI8-R 字符集,在 Linux 下,
+可以利用用户模式实用程序修改键盘绑定和 EGA 图形表格,
+以及在控制台的驱动程序中使用字体表“user mapping(用户映射)”。
+.SH UNICODE(统[单]一代码,宽[双]字节字符集)
+Unicode( ISO 10646 ) 是一个标准,它的目标是明白地表现
+在每种人类语言中的每种已知字符。Unicode 的编码是 32 位的
+( 旧些的版本使用了 16 位 ) 。在 Unicode 
+的一些信息可以在<http://www.unicode.com>获得。
+.LP
+Linux 使用8位的 Unicode 转移格式 (UTF-8 ) 表示 Unicode 。
+UTF-8 是可变长的 Unicode 编码。使用1个字节给 7 bit
+编码,使用2个字节给 11 bit 编码,
+使用3个字节给 16 bit 编码,使用4个字节给 21 bit 编码,使用5个字节给
+26 bit 编码,使用6个字节给 31 bit 编码 
+.LP
+让 0,1 , x 代表零,一,或任意的位。字节0xxxxxxx 代表Unicode 00000000 0xxxxxxx,
+这个符号和 ASCII 0xxxxxxx 编码的符号是一样。 
+这样, ASCII 没有改为 UTF-8,并且只用 ASCII 的人不会注意到任何变化:
+不在代码,并且不在文件大小。
+.LP
+字节 110xxxxx 是一个2 字节代码的开始,
+110xxxxx 10yyyyyy 组装成 00000xxx xxyyyyyy 。
+字节 1110xxxx 是一个 3 字节代码的开始,
+1110xxxx 10yyyyyy 10zzzzzz 被组装成 xxxxyyyy yyzzzzzz。
+(如果 UTF-8 使用 31-bit ISO 10646 编码,那么这个级数就会延伸
+到 6 字节编码)
+.LP
+对于 ISO-8859-1 的用户而言,这意味着带高位的字符编码成两个字节。
+这会令普通的文本文件增大1到2个百分点。不过没有变换问题,
+因为 Unicode ISO-8859-1 符号的值等于他们的 ISO-8859-1 值
+(用 8 个前导零做前缀) 。对于日语的用户,这意味着原来常用的 16 位编码将
+占 3 个字节,并且还要求有扩展的映射表。许多日本人因此比较喜欢 
+ISO 2022 。
+.LP
+注意 UTF-8 是自我同步的: 10xxxxxx 是一条尾巴, 任何其它
+的字节是编码的头。ASCII 字节出现在 UTF-8 流中唯一的可能是
+作为自己出现。特别是, 不会有 NULs 或 " /'s 嵌入在那些比较大的编码中。
+.LP
+因为编码中的 ASCII,特别是, NUL 和'/', 没有变化, 所以内核不会注意到
+在使用 UTF-8。它根本不在乎它正在处理的那字节代表什么东西。
+.LP
+Unicode 数据流的呈现通常是通过" subfont "表来操作,这个表是
+Unicode 的一个子集到字符表格的映射。内核内部使用 Unicode 
+描述装载入显示内存的 subfont。这意味着在 UTF-8 中的一个模式
+能使用 512 个不同的符号。这对于日语,汉语和朝鲜语来说是不够的,
+但是它满足了大多数其它用途。
+.SH ISO 2022 AND ISO 4873
+ISO 2022 和 4873 标准描述了一个基于 VT100 实现的字体控制模型.
+Linux 内核和 xterm (1) ( 部分 ) 支持这个模型。
+它在日本和韩国很流行。
+.LP
+它有 4 个图形的字符集,称为 G0 , G1 , G2 和 G3 ,并且
+其中之一是当前的高位为0 的编码的字符集(最初 G0 ),而他们之
+一是当前的高位为1的编码的字符集(最初 G1 )。每种图形的字符集有
+94 或 96 个字符 ,并且是实际上是一个 7-bit字符集。
+它使用 040-0177 ( 041-0176 ) 或 0240-0377 ( 0241-0376 )编码
+中的一个。G0 大小总是为 94,并且使用 041-0176 之间的编码。
+.LP
+字符之间切换用转换(shift functions)功能
+^N (SO 或 LS1), ^O (SI 或 LS0), ESC n (LS2), ESC o (LS3),
+ESC N (SS2), ESC O (SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R).
+LS\fIn\fP 把字符集G\fIn\fP标记为当前字符集,用于高位为0的编码。
+LS\fIn\fPR 把字符集 G\fIn\fP标记为当前字符集,用于高位为1的编码。
+SS\fIn\fP 把字符集G\fIn\fP (\fIn\fP=2 or 3) 标记为当前字符集,
+只用于下一个字符(
+不管它的高位的值是什么)
+.LP
+94 字符的集合用做 G\fIn\f 字符集是用一个逃逸序列
+ESC ( xx (用于 G0),ESC ) xx (用于 G1),
+ESC * xx (用于 G2),ESC + xx (用于 G3),等代表的.这里的 xx 是一个符号
+或者是在 ISO 2375 国际注册编码字符集中的一对符号。
+例如,ESC ( @ 选用 ISO 646 字符集作为GO,
+ESC ( A 选用 UK 标准字符集(用磅代替数字记号), ESC ( B 选择 ASCII (
+用美元代替流通货币), ESC ( M 为非洲语言选择一个字符集, ESC ( ! A 
+选择古巴字符集, 等等. 等等.
+.LP
+94 字符的集合用做 G\fIn\f 字符集是用一个逃逸序列
+ESC - xx (对于 G1), ESC . xx (对于 G2)
+或 ESC / xx (对于 G3)等表示.
+例如, ESC - G 选择希伯莱字母表作为 G1.
+.LP
+多字节的字符集用做 G\fIn\fP 字符集是用一个逃逸序列
+ESC $ xx 或者 ESC $ ( xx (对于 G0),
+ESC $ ) xx (对于 G1),ESC $ * xx (对于 G2),ESC $ + xx (对于 G3)等来表示.
+例如, ESC $ ( C 为 G0选择韩国字符集.
+日本字符集合由 ESC $ B选择
+更多临近的版本由ESC & @ ESC $ B选择.
+.LP
+ISO 4873 规定了一个范围比较窄的使用字符集,它的 G0是固定的 (总是 ASCII),
+所以 G1, G2 和 G3只能被调用于高次序位编码集。
+尤其是,不再使用 ^N 和 ^O,ESC ( xx
+仅用于 xx=B, 和 ESC ) xx, ESC * xx, ESC + xx
+分别等价于 ESC - xx, ESC . xx, ESC / xx.
+
+.SH 参考
+.BR console (4),
+.BR console_ioctl (4),
+.BR console_codes (4),
+.BR ascii (7),
+.BR iso_8859_1 (7),
+.BR unicode (7),
+.BR utf-8 (7)
+.br
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+.B 2000/10/23
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/checkpoint.7 b/src/man7/checkpoint.7
new file mode 100644
index 0000000..195bbfb
--- /dev/null
+++ b/src/man7/checkpoint.7
@@ -0,0 +1,24 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CHECKPOINT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CHECKPOINT \- 强制一个事务日志检查点
+
+.SH SYNOPSIS
+.sp
+.nf
+CHECKPOINT
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+ 预写式日志(Write-Ahead Logging (WAL))缺省时在事务日志中每隔一段时间放一个检查点。 (要调整这个原子化的检查点间隔,你可以参考运行时选项 checkpoint_segments  和 checkpoint_segments 。) CHECKPOINT 强迫在命令声明时立即进行检查, 而不是等到下一次调度时的检查点。
+.PP
+ 检查点是一个事务日志训练中的点,在该点,所有数据文件都被更新以反映日志中的信息。 所有数据文件都将被冲刷到磁盘。请参考 Chapter 25 ``Write-Ahead Logging'' 获取更多有关 WAL 系统的信息。
+.PP
+ 只有超级用户可以调用 CHECKPOINT。 该命令不是设计用于正常操作过程中的。
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCHECKPOINT\fR 命令是 PostgreSQL 语言的扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/close.7 b/src/man7/close.7
new file mode 100644
index 0000000..7093171
--- /dev/null
+++ b/src/man7/close.7
@@ -0,0 +1,37 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CLOSE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CLOSE \- 关闭一个游标
+
+.SH SYNOPSIS
+.sp
+.nf
+CLOSE \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCLOSE\fR 释放和一个游标关联的资源。 一个游标关闭后,不允许对其再做任何操作。一个不再使用的游标应该关闭掉。
+.PP
+ 在一个事务用 COMMIT 或者 ROLLBACK 终止之后, 每个不可保持的已打开游标都隐含关闭。如果创建事务通过 ROLLBACK 退出, 那么一个可以保持的游标隐含关闭。如果创建事务成功提交,那么可保持的游标保持打开, 直到执行一个明确的 CLOSE,或者客户端断开。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个待关闭的游标的名字。
+.SH "NOTES 注意"
+.PP
+PostgreSQL 没有明确的 OPEN (打开)游标的语句; 我们认为一个游标在声明时就打开了。使用 DECLARE 语句声明一个游标。
+.SH "EXAMPLES 例子"
+.PP
+ 关闭游标 liahona:
+.sp
+.nf
+CLOSE liahona;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCLOSE\fR 完全遵循 SQL 标准。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/cluster.7 b/src/man7/cluster.7
new file mode 100644
index 0000000..a3f049b
--- /dev/null
+++ b/src/man7/cluster.7
@@ -0,0 +1,80 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CLUSTER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CLUSTER \- 根据一个索引对某个表集簇
+
+.SH SYNOPSIS
+.sp
+.nf
+CLUSTER \fIindexname\fR ON \fItablename\fR
+CLUSTER \fItablename\fR
+CLUSTER
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCLUSTER\fR 指示PostgreSQL  基于索引 indexname  的度量对表 table  进行存储建簇。索引必须已经在表 tablename. 上定义。
+.PP
+ 当对一个表建簇后,该表的物理存储将基于索引信息进行。 建簇是一次性操作:也就是说,当表随后被更新后,改变的内容不会建簇。 也就是说,系统不会试图按照索引顺序对更新过的记录重新建簇。 如果需要,可以通过周期性地手工执行该命令的方法重建簇。
+.PP
+ 在对一个表建簇之后,PostgreSQL  会记忆在哪个索引上建立的簇。 CLUSTER tablename  的形式就在表以前建簇的同一个索引上建簇。
+.PP
+没有任何参数的 \fBCLUSTER\fR  将导致当前数据库里所有调用它的用户所有的表都被建簇。 (绝不会对不包括进来的表建簇。)这种形式的 CLUSTER 不能在一个事务或者函数里面调用。
+.PP
+ 在对一个表进行建簇的时候,则在其上请求一个 ACCESS EXCLUSIVE 锁。 这样就避免了在 CLUSTER 完成之前执行任何其他的数据库操作(包括读写)。 参阅 Section 12.3 获取有关数据库锁定的更多信息。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIindexname\fB\fR
+ 一个索引名称。
+.TP
+\fB\fItablename\fB\fR
+ 准备建簇的表的名称(可能有模式修饰)。
+.SH "NOTES 注意"
+.PP
+ 如果你只是随机的访问表中的行, 那么在堆表中的数据的实际存储顺序是无关紧要的。 但是,如果你对某些数据的访问多于其他数据, 而且有一个索引将这些数据分组,那你就将从使用 CLUSTER 中获益。 如果你从一个表中请求一定索引范围的值, 或者是一个索引过的值对应多行, CLUSTER 也会有助于应用, 因为如果索引标识出第一匹配行所在的堆存储页,所有其他行也可能已经在同一堆存储页里了, 这样便节省了磁盘访问的时间,加速了查询。
+.PP
+ 在这个建簇的操作过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。 同时也建立表上的每个索引的临时拷贝。因此,你需要磁盘上有足够的剩余空间, 至少是表大小和索引大小的和。
+.PP
+ 因为 CLUSTER 记忆建簇信息,我们可以在第一次的时候手工对表进行建簇, 然后设置一个类似 VACUUM 的时间, 这样我们就可以周期地自动对表进行建簇了。
+.PP
+ 因为规划器记录着有关表的排序的统计,所以我们建议在新近建簇的表上运行 ANALYZE。 否则,规划器可能会选择很差劲的查询规划。
+.PP
+ 还有一种建簇的方法。 CLUSTER 命令将原表按你声明的索引重新排列。 这个动作在操作大表时可能会很慢, 因为每一行都从堆存储页里按索引顺序取出,如果存储页表没有排序, 整个表是随机存放在各个页面的,因而移动的每一行都要进行一次磁盘页面操作。 PostgreSQL 有一个缓冲, 但一个大表的主体是不可能都放到缓冲去的。 另外一种对表建簇的方法是
+.sp
+.nf
+CREATE TABLE \fInewtable\fR AS
+    SELECT \fIcolumnlist\fR FROM \fItable\fR ORDER BY \fIcolumnlist\fR;
+.sp
+.fi
+ 这个用法使用PostgreSQL  排序的代码 ORDER BY 来创建一个需要的顺序,在对未排序的数据操作时通常速度比索引扫描快得多。 然后你可以删除旧表,用 ALTER TABLE ... RENAME将 newtable 改成旧表名, 并且重建该表所有索引。但是,这个方法不保留 OID,约束,外键关系, 赋予的权限,以及表的其它附属的属性 ---- 所有这些属性都必须手工重建。
+.SH "EXAMPLES 例子"
+.PP
+ 以雇员的 emp_ind 属性对employees关系建簇。
+.sp
+.nf
+CLUSTER emp_ind ON emp;
+.sp
+.fi
+.PP
+ 使用以前用过的同一个索引对employees表进行建簇:
+.sp
+.nf
+CLUSTER emp;
+.sp
+.fi
+.PP
+ 对以前建过簇的所有表进行建簇:
+.sp
+.nf
+CLUSTER;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 CLUSTER 语句。
+.SH "SEE ALSO 参见"
+clusterdb [\fBclusterdb\fR(1)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/comment.7 b/src/man7/comment.7
new file mode 100644
index 0000000..3f47b90
--- /dev/null
+++ b/src/man7/comment.7
@@ -0,0 +1,115 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "COMMENT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+COMMENT \- 定义或者改变一个对象的评注
+
+.SH SYNOPSIS
+.sp
+.nf
+COMMENT ON
+{
+  TABLE \fIobject_name\fR |
+  COLUMN \fItable_name\fR.\fIcolumn_name\fR |
+  AGGREGATE \fIagg_name\fR (\fIagg_type\fR) |
+  CONSTRAINT \fIconstraint_name\fR ON \fItable_name\fR |
+  DATABASE \fIobject_name\fR |
+  DOMAIN \fIobject_name\fR |
+  FUNCTION \fIfunc_name\fR (\fIarg1_type\fR, \fIarg2_type\fR, ...) |
+  INDEX \fIobject_name\fR |
+  OPERATOR \fIop\fR (\fIleftoperand_type\fR, \fIrightoperand_type\fR) |
+  RULE \fIrule_name\fR ON \fItable_name\fR |
+  SCHEMA \fIobject_name\fR |
+  SEQUENCE \fIobject_name\fR |
+  TRIGGER \fItrigger_name\fR ON \fItable_name\fR |
+  TYPE \fIobject_name\fR |
+  VIEW \fIobject_name\fR
+} IS \fI'text'\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCOMMENT\fR 存储一个数据库对象的评注, 这个评注可以很容易用 psql 的 \fB\\dd\fR, \fB\\d+\fR, 和 \fB\\l+\fR 命令检索出来。 其它检索评注的用户接口可以建设在 psql 所用地同样地内部函数的基础上, 也就是 obj_description() 和 col_description()。
+.PP
+ 要修改一个评注,为同一个对象发出一条新的 COMMENT 命令即可。每个对象只存储一条评注。 要删除评注,在文本字串的位置写上 NULL。 当删除对象时,评注自动被删除掉。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIobject_name\fB\fR
+.TP
+\fB\fItable_name.column_name\fB\fR
+.TP
+\fB\fIaggname\fB\fR
+.TP
+\fB\fIconstraint_name\fB\fR
+.TP
+\fB\fIfunc_name\fB\fR
+.TP
+\fB\fIop\fB\fR
+.TP
+\fB\fIrule_name\fB\fR
+.TP
+\fB\fItrigger_name\fB\fR
+ 要加入评注的对象名称。表,索引,序列,视图,类型,域,函数, 聚集和操作符的名字可以是模式修饰的。
+.TP
+agg_type
+聚集函数的参数类型,如果函数接受任意数据类型,那么是 *。 
+.TP
+large_object_oid
+大对象的 OID。 
+.TP
+PROCEDURAL
+这个字无用。 
+.TP
+sourcetype
+类型转换的源数据类型名字。 
+.TP
+targettype
+类型转换的目的数据类型名字。 
+.TP
+\fB\fItext\fB\fR
+新的评注。
+.SH "NOTES 注意"
+.PP
+ 一个数据库里的评注只能在改数据库里创建,并且只有在那个数据库里可见,其它库里不可见。
+ 
+ 需要说明的是目前评注没有安全机制:任何联接到某数据库上的用户都可以看到所有该数据库对象的评注 (尽管只有超级用户可以修改不属于他的对象的评注)。因此,不要在评注里放安全性敏感地信息。
+.SH "EXAMPLES 例子"
+.PP
+ 给表mytable 加评注:
+.sp
+.nf
+COMMENT ON TABLE mytable IS 'This is my table.';
+.sp
+.fi
+ 再删除它:
+.sp
+.nf
+COMMENT ON TABLE mytable IS NULL;
+.sp
+.fi
+.PP
+ 一些例子:
+.sp
+.nf
+COMMENT ON AGGREGATE my_aggregate (double precision) IS 'Computes sample variance';
+COMMENT ON COLUMN my_table.my_column IS 'Employee ID number';
+COMMENT ON DATABASE my_database IS 'Development Database';
+COMMENT ON DOMAIN my_domain IS 'Email Address Domain';
+COMMENT ON FUNCTION my_function (timestamp) IS 'Returns Roman Numeral';
+COMMENT ON INDEX my_index IS 'Enforces uniqueness on employee ID';
+COMMENT ON OPERATOR ^ (text, text) IS 'Performs intersection of two texts';
+COMMENT ON OPERATOR ^ (NONE, text) IS 'This is a prefix operator on text';
+COMMENT ON RULE my_rule ON my_table IS 'Logs updates of employee records';
+COMMENT ON SCHEMA my_schema IS 'Departmental data';
+COMMENT ON SEQUENCE my_sequence IS 'Used to generate primary keys';
+COMMENT ON TABLE my_schema.my_table IS 'Employee Information';
+COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for RI';
+COMMENT ON TYPE complex IS 'Complex number data type';
+COMMENT ON VIEW my_view IS 'View of departmental costs';
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准里没有COMMENT。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/commit.7 b/src/man7/commit.7
new file mode 100644
index 0000000..8790fa6
--- /dev/null
+++ b/src/man7/commit.7
@@ -0,0 +1,42 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "COMMIT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+COMMIT \- 提交当前事务
+
+.SH SYNOPSIS
+.sp
+.nf
+COMMIT [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCOMMIT\fR 提交当前事务。 所有事务的更改都将为其他事务可见,而且保证当崩溃发生时的可持续性。
+.SH "PARAMETERS 参数"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+ 可选关键字。没有作用。
+.SH "NOTES 注意"
+.PP
+ 使用 ROLLBACK [\fBrollback\fR(7)] 语句退出一次事务。
+.PP
+ 在一个事务内部发出 COMMIT 不会有问题,但是他将产生一个警告信息。
+.SH "EXAMPLES 例子"
+.PP
+ 要让所有变更永久化:
+.sp
+.nf
+COMMIT;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL92 只声明了两种形式 COMMIT  和 COMMIT WORK。否则完全兼容。
+.SH "SEE ALSO 参见"
+BEGIN [\fBbegin\fR(7)], ROLLBACK [\fBrollback\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/copy.7 b/src/man7/copy.7
new file mode 100644
index 0000000..b2276d8
--- /dev/null
+++ b/src/man7/copy.7
@@ -0,0 +1,226 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "COPY" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+COPY \- 在表和文件之间拷贝数据
+
+.SH SYNOPSIS
+.sp
+.nf
+COPY \fItablename\fR [ ( \fIcolumn\fR [, ...] ) ]
+    FROM { '\fIfilename\fR' | STDIN }
+    [ [ WITH ] 
+          [ BINARY ] 
+          [ OIDS ]
+          [ DELIMITER [ AS ] '\fIdelimiter\fR' ]
+          [ NULL [ AS ] '\fInull string\fR' ] ]
+
+COPY \fItablename\fR [ ( \fIcolumn\fR [, ...] ) ]
+    TO { '\fIfilename\fR' | STDOUT }
+    [ [ WITH ] 
+          [ BINARY ]
+          [ OIDS ]
+          [ DELIMITER [ AS ] '\fIdelimiter\fR' ]
+          [ NULL [ AS ] '\fInull string\fR' ] ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCOPY\fR 在 PostgreSQL表和标准文件系统文件之间交换数据。 COPY TO 把一个表的所有内容都拷贝到一个文件, 而 COPY FROM 从一个文件里拷贝数据到一个表里(把数据附加到表中已经存在的内容里)。
+.PP
+ 如果声明了一个字段列表,COPY 将只在文件和表之间拷贝声明的字段的数据。 如果表中有任何不在字段列表里的字段,那么 COPY FROM 将为那些字段插入缺省值。
+.PP
+ 带文件名的 COPY 指示 PostgreSQL 服务器直接从文件中读写数据。 如果声明了文件名,那么该文件必须为服务器可见,而且文件名必须从服务器的角度声明。如果声明的是 STDIN 或 STDOUT,数据通过连接在客户前端和服务器之间流动。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fItablename\fB\fR
+ 现存表的名字(可以有模式修饰)。
+.TP
+\fB\fIcolumn\fB\fR
+ 可选的待拷贝字段列表。如果没有声明字段列表,那么将使用所有字段。
+.TP
+\fB\fIfilename\fB\fR
+ 输入或输出文件的绝对路径名。
+.TP
+\fBSTDIN\fR
+ 声明输入是来自客户端应用。
+.TP
+\fBSTDOUT\fR
+ 声明输入前往客户端应用。
+.TP
+\fBBINARY\fR
+ 使用二进制格式存储和读取,而不是以文本的方式。 在二进制模式下,不能声明 DELIMITERS和NULL。
+.TP
+\fBOIDS\fR
+ 声明为每行拷贝内部对象标识(OID)。 (如果给那些没有 OID 的表声明了 OIDS 选项,则抛出一个错误。)
+.TP
+\fB\fIdelimiter\fB\fR
+ 用于在文件中每行中分隔各个字段的单个字符。 缺省是水平制表符。(tab)
+.TP
+\fB\fInull string\fB\fR
+ 一个代表 NULL 值的字串。缺省是 \\N (反斜杠-N)。 当然,你可以自己挑一个空字串。
+.sp
+.RS
+.B "Note:"
+注意:  对于COPY FROM,任何匹配这个字串的字串将被存储为 NULL 值, 所以你应该确保你用的字串和COPY TO相同。
+.RE
+.sp
+.SH "NOTES 注意"
+.PP
+\fBCOPY\fR 只能用于表,不能用于视图。
+.PP
+BINARY 关键字将强制使用二进制对象而不是文本存储/读取所有数据。 这样做在一定程度上比传统的拷贝命令快,但二进制拷贝文件在不同机器体系间的植性不是很好。
+.PP
+ 你对任何要COPY TO  出来的数据必须有选取数据的权限,对任何要 COPY FROM 入数据的表必须有插入权限。
+.PP
+COPY 命令里面的文件必须是由服务器直接读或写的文件,而不是由客户端应用读写。 因此,它们必须位于数据库服务器上或者可以为数据库服务器所访问,而不是由客户端做这些事情。 它们必须是PostgreSQL用户(服务器运行的用户 ID)可以访问到并且可读或者可写,而不是客户端。 COPY 到一个命名文件是只允许数据库超级用户进行的,因为它允许读写任意服务器有权限访问的文件。
+.PP
+ 不要混淆 COPY 和 psql 指令 \fB\\copy\fR。 \fB\\copy\fR 调用 COPY FROM STDIN 或者 COPY TO STDOUT, 然后把数据抓取/存储到一个 psql 客户端可以访问的文件中。 因此,使用 \fB\\copy\fR 的时候,文件访问权限是由客户端而不是服务器端决定的。
+.PP
+ 我们建议在 COPY 里的文件名字总是使用绝对路径。 在 COPY TO 的时候是由服务器强制进行的, 但是对于 COPY FROM,你的确有从一个声明为相对路径的文件里读取的选择。 该路径将解释为相对于服务器的工作目录(在数据目录里的什么地方),而不是客户端的工作目录。
+.PP
+\fBCOPY FROM\fR 会激活所有触发器和检查约束。不过,不会激活规则。
+.PP
+\fBCOPY\fR 在第一个错误处停下来。这些在 COPY TO中不应该导致问题, 但在 COPY FROM 时目的表会已经接收到早先的行, 这些行将不可见或不可访问,但是仍然会占据磁盘空间。 如果你碰巧是拷贝很大一块数据文件的话, 积累起来,这些东西可能会占据相当大的一部分磁盘空间。你可以调用 VACUUM 来恢复那些磁盘空间。
+.SH "FILE FORMATS 文件格式"
+.SS "TEXT FORMAT 文本格式"
+.PP
+ 当不带 BINARY 选项使用 COPY 时, 读写的文件是一个文本文件,每行代表表中一个行。 行中的列(字段)用分隔符分开。 字段值本身是由与每个字段类型相关的输出函数生成的字符串, 或者是输入函数可接受的字串。 数据中使用特定的空值字串表示那些为 NULL 的字段。 如果输入文件的任意行包含比预期多或者少的字段,那么 COPY FROM 将抛出一个错误。 如果声明了 OIDS,那么 OID 将作为第一个字段读写, 放在所有用户字段前面。
+.PP
+ 数据的结束可以用一个只包含反斜扛和句点(\\.)的行表示。 如果从文件中读取数据,那么数据结束的标记是不必要的, 因为文件结束起的作用就很好了;但是在 3.0 之前的客户端协议里,如果在客户端应用之间拷贝数据, 那么必须要有结束标记。
+.PP
+ 反斜扛字符(\\)可以用在 COPY  里给那些会有歧义的字符进行逃逸(否则那些字符会被当做行或者字段分隔符处理)。 特别是下面的字符如果是字段值的一部分时,必须前缀一个反斜扛:反斜扛本身,换行符,回车,以及当前分隔符。
+.PP
+ 声明的空字串被 COPY TO 不加任何反斜杠发送;与之相对,COPY FROM  在删除反斜杠之前拿它的输入与空字串比较。因此,像 \\N 这样的空字串不会和实际数据值 \\N 之间混淆(因为后者会表现成 \\\\N)。
+.PP
+\fBCOPY FROM\fR 识别下列特殊反斜扛序列:
+.RS
+\\b 退格 (ASCII 8)
+.PP
+\\f 进纸 (ASCII 12)
+.PP
+\\n 新行 (ASCII 10)
+.PP
+\\r 回车 (ASCII 13)
+.PP
+\\t 跳格 (ASCII 9)
+.PP
+\\v 竖直跳格 (ASCII 11)
+.PP
+\\\fIdigits\fR (反斜杠,后面是三个八进制数值,代表具有指定值的字符)
+.RE
+ 目前,COPY TO 将绝不会发出一个八进制反斜扛序列, 但是它的确使用了上面列出的其它字符用于控制字符。
+.PP
+ 绝对不要把反斜扛放在一个数据字符N或者句点(.)前面。 这样的组合将分别被误认为是空字串(\\.) 或者数据结束标记 (\\N)。 另外一个没有在上面的表中列出的反斜扛字符就是它自己。
+.PP
+ 我们强烈建议生成 COPY 数据的应用八换行符和回车分别转换成 \\n 和 \\r 序列。 目前我们可以用一个反斜杠和一个回车表示一个数据回车,以及用一个反斜扛和一个换行符表示一个数据换行符。 不过,这样的表示在将来的版本中缺省时可能不会被接受。
+.PP
+They are also highly vulnerable to corruption if the COPY file is
+transferred across different machines (for example, from Unix to Windows
+or vice versa).
+.PP
+\fBCOPY TO\fR 将再每行的结尾是用一个 Unix 风格的换行符("\\n"), 或者是在 MS Windows 上运行的服务器上用("\\r\\n")标记一行终止,但只是用于COPY到服务器文件里; 为了在不同平台之间一致,COPY TO STDOUT 总是发送 "\\n",不管服务器平台是什么。 COPY FROM 可以处理那些以回车符,或者换行符,或者回车换行符作为行结束的数据。 为了减少在数据中出现的未逃逸的新行或者回车导致的错误,如果输入的行结尾不像上面这些符号, COPY FROM 会发出警告。
+.SS "BINARY FORMAT 二进制格式"
+.PP
+ 在PostgreSQL 7.4 中的 COPY BINARY  的文件格式做了变化。新格式由一个文件头,零或多条元组, 以及文件尾组成。文件头和数据现在是网络字节序。
+.SS "FILE HEADER 文件头"
+.PP
+ 文件头由 15 个字节的固定域组成,后面跟着一个变长的头扩展区。 固定域是:
+.TP
+\fBSignature 签名\fR
+11-字节的序列 PGCOPY\\n\\377\\r\\n\\0 --- 请注意字节零是签名是要求的一部分。 (使用这个签名是为了让我们能够很容易看出文件是否已经被一个非 8 位安全的转换器给糟蹋了。 这个签名会被行结尾转换过滤器,删除字节零,删除高位,或者奇偶的改变而改变。)
+.TP
+\fBFlags field 标志域\fR
+ 32 位整数掩码表示该文件格式的重要方面。 位是从 0(LSB)到 31 (MSB)编码的 --- 请注意这个域是以网络字节序存储的(高位在前), 后继的整数都是如此。位 16 - 31 是保留用做关键文件格式信息的; 如果读者发现一个不认识的位出现在这个范围内,那么它应该退出。 位 0-15 都保留为标志向后兼容的格式使用;读者可以忽略这个范围内的不认识的位。目前只定义了一个标志位,而其它的必须是零:
+.RS
+.TP
+\fBBit 16\fR
+ 如果为 1,那么在数据中包括了 OID;如果为 0,则没有
+.RE
+.PP
+.TP
+\fB头扩展范围长度\fR
+ 32 位整数,以字节计的头剩余长度,不包括自身。目前,它是零, 后面紧跟第一条元组。对该格式的更多的修改都将允许额外的数据出现在头中。 读者应该忽略任何它不知道该如何处理的头扩展数据。
+.PP
+.PP
+ 头扩展数据是一个用来保留一个自定义的数据序列块用的。这个标志域无意告诉读者扩展区的内容是什么。头扩展的具体设计内容留给以后的版本用。
+.PP
+ 这样设计就允许向下兼容头附加(增加头扩展块,或者设置低位序标志位)以及非向下兼容修改(设置高位标志位以标识这样的修改, 并且根据需要向扩展区域增加支持数据)。
+.SS "TUPLES 元组"
+.PP
+每条元组都以一个 16 位整数计数开头,该计数是元组中字段的数目。(目前,在一个表里的每条元组都有相同的计数,但可能不会永远这样。)然后后面不断出现元组中的各个字段,字段先是一个 32 位的长度字,后面跟着那么长的字段数据。(长度字并不包括自己,并且可以为零。)一个特例是:-1 表示一个 NULL 字段值。在 NULL 情况下,后面不会跟着数值字节。
+.PP
+在数据域之间没有对奇填充或者任何其它额外的数据。
+.PP
+目前,一个 COPY BINARY 文件里的所有数据值都假设是二进制格式的(格式代码为一)。预计将来的扩展可能增加一个头域,允许为每个字段声明格式代码。
+.PP
+为了判断实际元组数据的正确的二进制格式,你应该阅读 PostgreSQL 源代码,特别是该字段数据类型的 *send 和 *recv 函数(典型的函数可以在源代码的 src/backend/utils/adt/ 目录找到)。
+.PP
+如果在文件中包括了 OID,那么该 OID 域立即跟在字段计数字后面。它是一个普通的字段,只不过它没有包括在字段计数。但它包括长度字 --- 这样就允许我们不用花太多的劲就可以处理 4 字节和 8 字节的 OID,并且如果某个家伙允许 OID 是可选的话,那么还可以把 OID 显示成空。
+.SS "FILE TRAILER 文件尾"
+.PP
+ 文件尾包括保存着 -1 的一个 16 位整数字。这样就很容易与一条元组的域计数字相区分。
+.PP
+ 如果一个域计数字既不是 -1 也不是预期的字段的数目,那么读者应该报错。 这样就提供了对丢失与数据的同步的额外的检查。
+.SH "EXAMPLES 例子"
+.PP
+ 下面的例子把一个表拷贝到客户端, 使用竖直条(|)作为域分隔符:
+.sp
+.nf
+COPY country TO STDOUT WITH DELIMITER '|';
+.sp
+.fi
+.PP
+ 从一个 Unix 文件中拷贝数据到一个country表中:
+.sp
+.nf
+COPY country FROM '/usr1/proj/bray/sql/country_data';
+.sp
+.fi
+.PP
+ 下面是一个可以从 STDIN 中拷贝数据到表中的例子:
+.sp
+.nf
+AF      AFGHANISTAN
+AL      ALBANIA
+DZ      ALGERIA
+ZM      ZAMBIA
+ZW      ZIMBABWE
+.sp
+.fi
+ 请注意在这里每行里的空白实际上是一个水平制表符 tab。
+.PP
+ 下面的是同样的数据,在一台 Linux/i586 机器上以二进制形式输出。 这些数据是用 Unix 工具 \fIod -c\fR 过滤之后输出的。 该表有三个字段;第一个是 char(2), 第二个是 text, 第三个是integer。所有的行在第三个域都是一个 null 值。
+.sp
+.nf
+0000000   P   G   C   O   P   Y  \\n 377  \\r  \\n  \\0  \\0  \\0  \\0  \\0  \\0
+0000020  \\0  \\0  \\0  \\0 003  \\0  \\0  \\0 002   A   F  \\0  \\0  \\0 013   A
+0000040   F   G   H   A   N   I   S   T   A   N 377 377 377 377  \\0 003
+0000060  \\0  \\0  \\0 002   A   L  \\0  \\0  \\0 007   A   L   B   A   N   I
+0000100   A 377 377 377 377  \\0 003  \\0  \\0  \\0 002   D   Z  \\0  \\0  \\0
+0000120 007   A   L   G   E   R   I   A 377 377 377 377  \\0 003  \\0  \\0
+0000140  \\0 002   Z   M  \\0  \\0  \\0 006   Z   A   M   B   I   A 377 377
+0000160 377 377  \\0 003  \\0  \\0  \\0 002   Z   W  \\0  \\0  \\0  \\b   Z   I
+0000200   M   B   A   B   W   E 377 377 377 377 377 377
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 COPY 语句。
+.PP
+ 7.3 以前的应用使用下面的语法,现在仍然支持:
+.sp
+.nf
+COPY [ BINARY ] \fItablename\fR [ WITH OIDS ]
+    FROM { '\fIfilename\fR' | STDIN }
+    [ [USING] DELIMITERS '\fIdelimiter\fR' ]
+    [ WITH NULL AS '\fInull string\fR' ]
+
+COPY [ BINARY ] \fItablename\fR [ WITH OIDS ]
+    TO { '\fIfilename\fR' | STDOUT }
+    [ [USING] DELIMITERS '\fIdelimiter\fR' ]
+    [ WITH NULL AS '\fInull string\fR' ]
+.sp
+.fi
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_aggregate.7 b/src/man7/create_aggregate.7
new file mode 100644
index 0000000..55fd2c5
--- /dev/null
+++ b/src/man7/create_aggregate.7
@@ -0,0 +1,75 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE AGGREGATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE AGGREGATE \- 定义一个新的聚集函数
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE AGGREGATE \fIname\fR (
+    BASETYPE = \fIinput_data_type\fR,
+    SFUNC = \fIsfunc\fR,
+    STYPE = \fIstate_data_type\fR
+    [ , FINALFUNC = \fIffunc\fR ]
+    [ , INITCOND = \fIinitial_condition\fR ]
+)
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE AGGREGATE\fR 定义一个新的聚集函数。 一些用于基本类型的聚集函数如 min(integer) 和 avg(double precision)  等已经包含在基础软件包里了。 如果你需要定义一个新类型或需要一个还没有提供的聚集函数,这时便可用 CREATE AGGREGATE 来提供我们所需要的特性。
+.PP
+如果给出了一个模式的名字(比如,CREATE AGGREGATE myschema.myagg ...),那么该聚集函数是在指定模式中创建的。 否则它是在当前模式中创建的。
+.PP
+一个聚集函数是用它的名字和输入数据类型来标识的。 同一模式中如果两个聚集处理的输入数据不同,它们可以有相同的名字。 一个聚集函数的输入数据类型必须和所有同一模式中的普通函数的名字和输入类型不同。
+.PP
+一个聚集函数是用一个或两个普通函数做成的: 一个状态转换函数 sfunc, 和一个可选的终计算函数 ffunc. 它们是这样使用的:
+.sp
+.nf
+\fIsfunc\fR( internal-state, next-data-item ) ---> next-internal-state
+\fIffunc\fR( internal-state ) ---> aggregate-value
+.sp
+.fi
+.PP
+PostgreSQL 创建一个类型为 stype的临时变量。 它保存这个聚集的当前内部状态。 对于每个输入数据条目, 都调用状态转换函数计算内部状态值的新数值。 在处理完所有数据后,调用一次最终处理函数以计算聚集的返回值。 如果没有最终处理函数,那么将最后的状态值当做返回值。
+.PP
+一个聚集函数还可能提供一个初始条件,也就是说,所用的该内部状态值的初始值。 这个值是作为一个类型为 text 的字段存储在数据库里的, 不过它们必须是状态值数据类型的合法的外部表现形式的常量。 如果没有提供状态,那么状态值初始化为 NULL。
+.PP 
+如果该状态转换函数被定义为 "strict", 那么就不能用 NULL 输入调用它。这个时候,带有这样的转换函数的聚集执行起来的现象如下所述。 NULL 输入的值被忽略(不调用此函数并且保留前一个状态值)。如果初始状态值是 NULL,那么由第一个非 NULL 值替换该状态值, 而状态转换函数从第二个非 NULL 的输入值开始调用。这样做让我们比较容易实现象 max 这样的聚集。 请注意这种行为只是当 state_type  与 input_data_type  相同的时候才表现出来。 如果这些类型不同,你必须提供一个非 NULL 的初始条件或者使用一个非strice的状态转换函数。
+.PP
+如果状态转换函数不是 strict(严格)的, 那么它将无条件地为每个输入值调用, 并且必须自行处理 NULL 输入和 NULL 转换值, 这样就允许聚集的作者对聚集中的空值有完全的控制。
+.PP
+如果终转换函数定义为"strict",则如果最终状态值是 NULL 时就不会调用它; 而是自动输出一个NULL的结果。(当然,这才是 strict 函数的正常特征。) 不管是那种情况,终处理函数可以选择返回 NULL。比如, avg 的终处理函数在零输入记录时就会返回 NULL。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+要创建的聚集函数名(可以有模式修饰的)。
+.TP
+\fB\fIinput_data_type\fB\fR 
+本聚集函数要处理的基本数据类型。 对于不检查输入类型的聚集来说,这个参数可以声明为"ANY"。 (比如 count(*))。
+.TP
+\fB\fIsfunc\fB\fR
+用于处理源数据列里的每一个输入数据的状态转换函数名称。 它通常是一个双参数的函数,第一个参数的类型是 state_data_type  而第二个参数的类型是 input_data_type. 另外,对于一个不检查输入数据的聚集,该函数只接受一个类型为 state_data_type  的参数。 不管是哪种情况,此函数必须返回一个类型为 state_data_type的值。 这个函数接受当前状态值和当前输入数据条目,而返回下个状态值。
+.TP
+\fB\fIstate_data_type\fB\fR
+聚集的状态值的数据类型。
+.TP
+\fB\fIffunc\fB\fR
+在转换完所有输入域/字段后调用的最终处理函数。它计算聚集的结果。 此函数必须接受一个类型为 state_data_type 的参数。 聚集的输出数据类型被定义为此函数的返回类型。 如果没有声明 ffunc  则使用聚集结果的状态值作为聚集的结果,而输出类型为 state_data_type。
+.TP
+\fB\fIinitial_condition\fB\fR
+状态值的初始设置(值)。它必须是一个数据类型 state_data_type  可以接受的文本常量值。 如果没有声明,状态值初始为 NULL。
+.PP
+\fBCREATE AGGREGATE\fR 的参数可以以任何顺序书写,而不只是上面显示的顺序。
+.PP
+.SH "EXAMPLES 例子"
+.PP
+参阅 ``User-defined Aggregates''
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE AGGREGATE\fR 是 PostgreSQL 语言的扩展。 在 SQL 标准里没有 CREATE AGGREGATE。
+.SH "SEE ALSO 参见"
+ALTER AGGREGATE [\fBalter_aggregate\fR(7)], DROP AGGREGATE [\fBdrop_aggregate\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_cast.7 b/src/man7/create_cast.7
new file mode 100644
index 0000000..5118b56
--- /dev/null
+++ b/src/man7/create_cast.7
@@ -0,0 +1,102 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE CAST" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE CAST \- 定义一个用户定义的转换
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE CAST (\fIsourcetype\fR AS \fItargettype\fR)
+    WITH FUNCTION \fIfuncname\fR (\fIargtype\fR)
+    [ AS ASSIGNMENT | AS IMPLICIT ]
+
+CREATE CAST (\fIsourcetype\fR AS \fItargettype\fR)
+    WITHOUT FUNCTION
+    [ AS ASSIGNMENT | AS IMPLICIT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE CAST\fR 定义一个新的转换。 一个转换说明如何在两个类型之间进行转换。比如:
+.sp
+.nf
+SELECT CAST(42 AS text);
+.sp
+.fi
+通过调用前面声明的一个函数,把整数常量 42 转换成类型 text, 在这个例子里是 text(int4)。(如果没有预先定义好合适的转换,那么这个转换失败。)
+.PP
+两种类型可以是二进制兼容的, 意思是它们之间可以"自由转换"而不用调用任何函数。 这就需要那个对应的数值使用同样的内部表现形式。 比如,类型 text 和 varchar 是二进制兼容的。
+.PP
+缺省时,只有在明确要求转换的情况下才调用一个转换, 也就是一个明确的 CAST(x AS typename), x::typename,或者 typename(x) 构造。
+.PP
+如果转换标记为 AS ASSIGNMENT,那么在赋一个数值给目标数据类型的字段的时候, 可以隐含调用它。比如,假设 foo.f1 是一个类型为 text 的字段,那么
+.sp
+.nf
+INSERT INTO foo (f1) VALUES (42);
+.sp
+.fi
+如果从类型 integer 到类型 text 的转换标记为 AS ASSIGNMENT, 上面的这句就被允许,否则就不允许。(我们通常用术语赋值转换来描述这种转换。)
+.PP
+如果转换标记为 AS IMPLICIT,那么它就可以在任何环境里调用, 不管是赋值还是在表达式的内部。比如,因为 || 接受 text 操作数,
+.sp
+.nf
+SELECT 'The time is ' || now();
+.sp
+.fi
+将只有在类型 timestamp 到 text 的转换标记为 AS IMPLICIT 的时候才允许。否则我们就必须明确书写转换, 比如
+.sp
+.nf
+SELECT 'The time is ' || CAST(now() AS text);
+.sp
+.fi
+(我们通常使用术语隐含转换来描述这种类型的转换。)
+.PP
+在标记转换为隐含的这个问题上保守一些是明智的。 过于丰富的隐含转换路径会导致 PostgreSQL 选择让人奇怪的命令的解析, 或者是完全不能解析命令,因为存在多个可能的解析。 一条好的拇指定律是,只有在同一个通用类型表里面的那些可以保留转换信息的类型之间才标记为可隐含调用转换。 比如,从 int2 到 int4  可以合理地标记为隐含转换,但是从 float8 到 int4  可能应该是标记为赋值转换。跨类型表的转换,比如 text 到 int4,最好是只能明确地转换。
+.PP
+要想创建一个转换,你必须拥有源或者目的数据类型。要创建一个二进制兼容的转换, 你必须是超级用户。(做这个限制是因为一种有问题的二进制兼容转换可以很容易摧毁服务器。)
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIsourcetype\fB\fR
+转换的源数据类型。
+.TP
+\fB\fItargettype\fB\fR
+转换的目标数据类型。
+.TP
+\fB\fIfuncname\fB(\fIargtype\fB)\fR
+用于执行转换的函数。这个函数名可以是用模式名修饰的。 如果它没有用模式名修饰,那么该函数将从路径中找出来。 参数类型必须和源数据类型相同,结果数据类型必须匹配转换的目标类型。
+.TP
+\fBWITHOUT FUNCTION\fR
+表示源数据类型和目标数据类型是二进制兼容的, 所以不需要什么函数来执行转换。 
+.TP
+\fBAS ASSIGNMENT\fR
+表示转换可以在赋值环境里隐含调用。
+.TP
+\fBAS IMPLICIT\fR
+表示这个转换可以在任何环境里隐含调用。
+.SH "NOTES 注意"
+.PP
+用 DROP CAST 删除用户定义的转换。
+.PP
+请注意,如果你想能双向转换类型,那么你需要明确地定义两个方向的转换。
+.PP
+在 PostgreSQL 7.3 之前,如果一个函数的名字和一个数据类型相同, 并且返回该种数据类型,而且还接受另外一种类型的参数自动就是一个转换函数。 这个传统随着模式的引入以及为了能在系统表种表示二进制兼容的转换就被废弃了。 (内置的转换函数仍然遵循这个命名规则,但是它们现在必须在系统表 pg_cast 里显示为转换。)
+.SH "EXAMPLES 例子"
+.PP
+要使用函数 int4(text) 创建一个从类型 text 到类型 int4的转换:
+.sp
+.nf
+CREATE CAST (text AS int4) WITH FUNCTION int4(text);
+.sp
+.fi
+(这个转换在系统中已经预先定义了。)
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE CAST\fR 命令遵循 SQL99,只不过 SQL99 没有提供二进制兼容类型。AS IMPLICIT 也是 PostgreSQL  的扩展。
+.SH "SEE ALSO 参见"
+.PP
+CREATE FUNCTION [\fBcreate_function\fR(7)],
+CREATE TYPE [\fBcreate_type\fR(7)],
+DROP CAST [\fBdrop_cast\fR(7)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
\ No newline at end of file
diff --git a/src/man7/create_constraint_trigger.7 b/src/man7/create_constraint_trigger.7
new file mode 100644
index 0000000..b2ad015
--- /dev/null
+++ b/src/man7/create_constraint_trigger.7
@@ -0,0 +1,38 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE CONSTRAINT TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE CONSTRAINT TRIGGER \- 定义一个新的约束触发器
+.SH SYNOPSIS
+.sp
+.nf
+CREATE CONSTRAINT TRIGGER \fIname\fR
+    AFTER \fIevents\fR ON
+    \fItablename\fR \fIconstraint\fR \fIattributes\fR
+    FOR EACH ROW EXECUTE PROCEDURE \fIfuncname\fR ( \fIargs\fR )
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE CONSTRAINT TRIGGER\fR 被 CREATE TABLE/ALTER TABLE 内部使用以及被 pg_dump 用于创建那些用于参考完整性的特殊的触发器。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 约束触发器的名称。
+.TP
+\fB\fIevents\fB\fR
+ 触发该触发器的事件范围。
+.TP
+\fB\fItablename\fB\fR
+ 发生触发器事件的表名称(可能有模式修饰)。
+.TP
+\fB\fIconstraint\fB\fR
+ 实际的约束声明。
+.TP
+\fB\fIattributes\fB\fR
+ 约束属性。
+.TP
+\fB\fIfuncname\fB(\fIargs\fB)\fR
+ 触发器处理所调用的函数。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_conversion.7 b/src/man7/create_conversion.7
new file mode 100644
index 0000000..1cd8ef6
--- /dev/null
+++ b/src/man7/create_conversion.7
@@ -0,0 +1,68 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE CONVERSION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE CONVERSION \- 定义一个用户定义的码制转换
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [DEFAULT] CONVERSION \fIname\fR
+    FOR \fIsource_encoding\fR TO \fIdest_encoding\fR FROM \fIfuncname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE CONVERSION\fR 定义一种新的编码转换。 转换的名字可以用在 convert 函数内部声明特定的编码转换。 同样,标记为 DEFAULT 的转换可以用于在前端和后端之间的自动编码转换。 出于这个原因,我们必须定义两种转换,从编码 A 到 B 以及从编码 B 到 A。
+.PP
+ 为了可以创建转换,你必须在函数上有EXECUTE权限并且有在目标模式上的CREATE权限。
+.SH "PARAMETERS 参数"
+.TP
+\fBDEFAULT\fR
+DEFAULT 子句表示这种转换对于从这种源编码到目的编码的情况是缺省的。在一个模式里每个编码对应该只有一个缺省编码。
+.TP
+\fB\fIname\fB\fR
+ 转换的名字。转换名可以用模式修饰。如果没有,那么转换就在当前模式中定义。转换名在一个模式里必须唯一。
+.TP
+\fB\fIsource_encoding\fB\fR
+ 源编码名。
+.TP
+\fB\fIdest_encoding\fB\fR
+ 目的编码名。
+.TP
+\fB\fIfuncname\fB\fR
+ 用于执行转换的函数。这个函数名可以用模式名修饰。 如果没有,那么将从路径中找出这个函数。
+
+ 此函数必须有如下的样子:
+.sp
+.nf
+conv_proc(
+    integer,  -- 源编码 ID
+    integer,  -- 目的编码 ID
+    cstring,  -- 源字串(空结尾的 C 字串)
+    cstring,  -- 目的字串(空结尾的 C 字串)
+    integer   -- 源字串长度
+) RETURNS void;
+.sp
+.fi
+.SH "NOTES 注意"
+.PP
+ 使用 DROP CONVERSION 删除用户定义的转换。
+.PP
+ 创建转换所需要的权限可能在未来的版本中改变。
+.SH "EXAMPLES 例子"
+.PP
+ 用 myfunc 创建一个从编码 UNICODE 到 LATIN1 的转换:
+.sp
+.nf
+CREATE CONVERSION myconv FOR 'UNICODE' TO 'LATIN1' FROM myfunc;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE CONVERSION\fR
+是 PostgreSQL 的扩展。 在 SQL 标准里没有CREATE CONVERSION 语句。
+.SH "SEE ALSO 参见"
+ALTER CONVERSION [\fBalter_conversion\fR(7)], CREATE FUNCTION [\fBcreate_function\fR(l)], DROP CONVERSION [\fBdrop_conversion\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_database.7 b/src/man7/create_database.7
new file mode 100644
index 0000000..617d490
--- /dev/null
+++ b/src/man7/create_database.7
@@ -0,0 +1,94 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE DATABASE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE DATABASE \- 创建新数据库
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE DATABASE \fIname\fR
+    [ [ WITH ] [ OWNER [=] \fIdbowner\fR ]
+           [ LOCATION [=] '\fIdbpath\fR' ]
+           [ TEMPLATE [=] \fItemplate\fR ]
+           [ ENCODING [=] \fIencoding\fR ] ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE DATABASE\fR 创建一个新的 PostgreSQL 数据库。
+.PP
+ 要创建一个数据库,你必须是一个超级用户或者有特殊的 CREATEDB 权限。 参阅 CREATE USER [\fBcreate_user\fR(7)]。
+.PP
+ 通常,创建者成为新数据库的管理员。 超级用户可以用 OWNER 子句创建其它用户所有的数据库。 他们甚至可以创建没有特殊权限的用户所有的数据库。 有CREATEDB权限的非超级用户使用只能创建自己使用的数据库。
+.PP
+ 可以声明一个可选的数据库位置,例如,在另一块硬盘上存放数据库。 该路径必须是事先用 initlocation[\fBinitlocation\fR(1)]  命令准备好了的。
+.PP
+ 如果路径名不包含斜杠,那么它被解释成一个环境变量, 该变量必须为服务进程所知。这样数据库管理员 可以对能够在那里创建数据库进行控制。(例如,一个用户化的选择是 'PGDATA2'。)如果服务器带着 ALLOW_ABSOLUTE_DBPATHS  (缺省时没有)选项编译, 那么也允许使用以斜杠开头为标识的绝对路径(例如, ' '/usr/local/pgsql/data')。
+In either case, the final path name must be absolute and must not
+contain any single quotes.
+.PP
+ 缺省时,新数据库将通过克隆标准系统数据库 template1  来创建。不同的模板可以用 TEMPLATE =  name  来写。尤其是,如果你用 TEMPLATE = template0, 你可以创建一个很纯净的数据库,只包括你的版本的 PostgreSQL 预定义的 标准对象。这个方法可以避免把任何已经加入到template1  里的本地安装对象拷贝到新数据库。
+.PP
+ 可选的编码参数允许选择数据库编码, 如果没有声明,缺省是所选用的模板数据库用的编码。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要创建的数据库名。
+.TP
+\fB\fIdbowner\fB\fR
+ 数据库用户的名字,他将拥有新数据库,或者是写 DEFAULT  使用缺省的(也就是执行命令的用户)。
+.TP
+\fB\fIdbpath\fB\fR
+     在文件系统里存储新数据库的可选位置;用字串文本声明。 或者用 DEFAULT 表示使用缺省位置。 
+.TP
+\fB\fItemplate\fB\fR
+ 从哪个模板创建新数据库,这是模板名。或者用 DEFAULT 使用缺省模板(template1)。
+.TP
+\fB\fIencoding\fB\fR
+ 创建新数据库用的多字节编码方法。声明一个字串文本名字 (比如,'SQL_ASCII'), 或者一个整数编号,或者是 DEFAULT  表示使用缺省编码。
+.PP
+ 可选参数可以以任意顺序写,而不仅是上面显示的顺序。
+.PP
+.SH "NOTES 注意"
+.PP
+\fBCREATE DATABASE\fR 不能在一个事务块里面执行。
+block.
+.PP
+ 类似 "could not initialize database directory" 这样的错误最有可能是因为数据目录的权限不够, 或者磁盘满,或者其它文件系统的问题。在使用可选的位置的时候,运行数据库服务器的用户必须有访问该位置的权限。
+.PP
+ 使用 DROP DATABASE [\fBdrop_database\fR(7)]  删除一个数据库。
+.PP
+ 程序 createdb[\fBcreatedb\fR(1)] 是是这个命令的封装,提供来方便使用。
+.PP
+ 在用绝对路径指定的可选数据库位置时,有一些安全和数据完整性的问题, 这就是为什么缺省时没有打开这个特性的原因。 参考 ``Managing Databases'' 获取更多的信息。
+.PP
+ 尽管我们可以通过把某数据库名声明为模板(而非 template1)从非template1数据库拷贝数据库, 但是这(还)不是一个通用的 "COPY DATABASE" 功能。 因此,我们建议当做模板使用的数据库都应该是以只读方式对待的。 参阅 ``Managing Databases'' 获取更多信息。
+.SH "EXAMPLES 例子"
+.PP
+ 创建一个新的数据库:
+.sp
+.nf
+CREATE DATABASE lusiadas;
+.sp
+.fi
+.PP
+ 在另一个地方 ~/private_db创建新数据库, 在 shell 里执行下面的东西:
+shell:
+.sp
+.nf
+mkdir private_db
+initlocation ~/private_db
+.sp
+.fi
+ 然后在一个 psql 会话里执行下面的东西:
+.sp
+.nf
+CREATE DATABASE elsewhere WITH LOCATION '/home/olly/private_db';
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 CREATE DATABASE 语句。 数据库等同于目录,其创建是由实现决定的。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_domain.7 b/src/man7/create_domain.7
new file mode 100644
index 0000000..9ffdf0f
--- /dev/null
+++ b/src/man7/create_domain.7
@@ -0,0 +1,69 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE DOMAIN \- 定义一个新域
+.SH SYNOPSIS
+.sp
+.nf
+CREATE DOMAIN \fIname\fR [AS] \fIdata_type\fR
+    [ DEFAULT \fIexpression\fR ]
+    [ \fIconstraint\fR [ ... ] ]
+
+where \fIconstraint\fR is:
+
+[ CONSTRAINT \fIconstraint_name\fR ]
+{ NOT NULL | NULL | CHECK (\fIexpression\fR) }
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE DOMAIN\fR 创建一个新的数据域。 定义域的用户成为其所有者。
+.PP
+ 如果给出一个模式名称(比如,CREATE DOMAIN myschema.mydomain ...), 那么该域是在指定的模式中创建的。否则它会在当前模式中创建。 域名字必需在其所在模式中的现有类型和域中唯一。
+.PP
+ 域可以便于我们把不同表之间的公共域抽取到一个位置进行维护。 比如,一个电子邮件地址字段可能在多个表中使用,所有的都是同样的属性。 我们可以定义并使用一个域,而不是分别设置每个表的约束。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要创建的域名字(可以有模式修饰)。
+.TP
+\fB\fIdata_type\fB\fR
+ 域的下层数据类型。它可以包含数组声明字。
+.TP
+\fBDEFAULT \fIexpression\fB\fR
+DEFAULT 子句为域数据类型的字段声明一个缺省值。 该值是任何不含变量的表达式(但不允许子查询)。 缺省表达式的数据类型必需匹配域的数据类型。如果没有声明缺省值, 那么缺省值就是空值。
+
+ 缺省表达式将用在任何不为该字段声明数值的插入操作。 如果为特定的字段声明了缺省值,那么它覆盖任何和该域相关联的缺省值。 然后,域的缺省覆盖任何与下层数据类型相关的缺省。
+.TP
+\fBCONSTRAINT \fIconstraint_name\fB\fR
+ 一个约束的可选名称。如果没有声明,系统生成一个名字。
+.TP
+\fBNOT NULL\fR
+ 这个域的数值不允许为 NULL。
+.TP
+\fBNULL\fR
+ 这个域的数值允许为空。它是缺省。
+ 
+ 这个子句只是用于和非标准的 SQL 数据库兼容用。 我们不建议在新的应用中使用它。
+.TP
+\fBCHECK (\fIexpression\fB)\fR
+ CHECK 子句声明完整性约束或者是测试,域地数值必须满足这些要求。 每个约束必须是一个生成一个布尔结果的表达式。它应该使用名字 VALUE  来引用被测试的数值。
+
+ 目前,CHECK 表达式不能包含子查询,也不能引用除 VALUE 之外的变量。
+.SH "EXAMPLES 例子"
+.PP
+ 这个例子创建了 country_code 数据类型并且在一个表定义中使用了该类型:
+.sp
+.nf
+CREATE DOMAIN country_code char(2) NOT NULL;
+CREATE TABLE countrylist (id integer, country country_code);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE DOMAIN\fR 命令符合 SQL 标准。
+.SH "SEE ALSO 参见"
+DROP DOMAIN [\fBdrop_domain\fR(7)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_function.7 b/src/man7/create_function.7
new file mode 100644
index 0000000..68a1fb2
--- /dev/null
+++ b/src/man7/create_function.7
@@ -0,0 +1,139 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE FUNCTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE FUNCTION \- 定义一个新函数
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ OR REPLACE ] FUNCTION \fIname\fR ( [ \fIargtype\fR [, ...] ] )
+    RETURNS \fIrettype\fR
+  { LANGUAGE \fIlangname\fR
+    | IMMUTABLE | STABLE | VOLATILE
+    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
+    | [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER
+    | AS '\fIdefinition\fR'
+    | AS '\fIobj_file\fR', '\fIlink_symbol\fR'
+  } ...
+    [ WITH ( \fIattribute\fR [, ...] ) ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE FUNCTION\fR 定义一个新的函数。 CREATE OR REPLACE FUNCTION 将要么创建一个新函数, 要么替换现有的定义。
+.PP
+ 如果包含了一个模式名,那么函数就在指定的模式中创建。否则它会在当前模式中创建。 新函数的名字不能和同一个模式中的任何带有同样参数类型的函数同名。 不过,参数类型不同的函数可以同名(这叫做重载)。
+.PP
+ 要更新一个现有函数的定义,使用 CREATE OR REPLACE FUNCTION。 我们不能用这个方法修改一个函数的名字或者参数类型(如果你这么干,那么你就会创建一个新的,不同的函数)。 同样,CREATE OR REPLACE FUNCTION 也不会允许你修改一个现有函数的返回类型。 要做这些事情,你必须删除并重新创建函数。
+.PP
+ 如果你删除然后重建一个函数,新函数和旧的将是不同的实体;你会破坏现有规则,视图,触发器等等。 使用 CREATE OR REPLACE FUNCTION 可以在不破坏引用该函数的对象的前提下修改函数定义。
+.PP
+ 创建这个函数的用户成为函数的所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要创建的函数名字。
+.TP
+\fB\fIargtype\fB\fR
+ 该函数的数据类型(可以有模式修饰)。如果有的话,参数类型可以是基本类型,也可以是复合类型,域类型,或者和一个现有字段相同的类型。
+
+ 一个字段的类型是用 \fItablename\fR.\fIcolumnname\fR%TYPE  表示的;使用这个东西可以帮助函数独立于表定义的修改。
+
+ 根据实现语言的不同,我们还可以在这上面声明 "伪类型", 比如 cstring。伪类型表示实际的参数类型要么是没有完整地声明,要么是在普通的 SQL 数据类型之外。
+.TP
+\fB\fIrettype\fB\fR
+ 返回数据类型。输出类型可以声明为一个基本类型,复合类型,域类型, 或者从现有字段拷贝。参阅上面 argtype 的描述获取如何引用一个现有类型的信息。
+
+ 根据实现语言的不同,我们还可以在这上面声明 "伪类型", 比如 cstring。 SETOF 修饰词表示该函数将返回一套条目, 而不是一条条目。
+.TP
+\fB\fIlangname\fB\fR
+ 用以实现函数的语言的名字。 可以是 SQL,C, internal,或者是用户定义的过程语言名字。 (又见 createlang。 ) 为了保持向下兼容,该名字可以用单引号包围。 
+.TP
+\fBIMMUTABLE\fR
+.TP
+\fBSTABLE\fR
+.TP
+\fBVOLATILE\fR
+ 这些属性告诉系统把对该函数的多次调用替换成一次是否安全。 主要用于运行时优化。 至少应该声明一个选择。如果任何一个都没有出现,那么 VOLATILE 是缺省假设。
+
+IMMUTABLE 表示该函数在给出同样的参数值时总是返回相同的结果; 也就是说,它不做数据库查找或者是使用那些并没有直接出现在其参数列表里面的信息。 如果给出这个选项,那么任何带着全部是常量参数对该函数的调用都将立即替换为该函数的值。
+
+STABLE 表示在一次表扫描里,对相同参数值, 该函数将稳定返回相同的值,但是它的结果可能在不同 SQL 语句之间变化。 这个选项对那些结果倚赖数据库查找,参数变量(比如当前时区),等等的函数是很合适的。 还要注意 current_timestamp 族函数是 stable (稳定)的,因为它们的值在一次事务中不会变化。
+
+VOLATILE 表示该函数值甚至可以在一次表扫描内改变, 因此不会做任何优化。很少数据库函数在这个概念上是易变的; 一些例子是 random(),currval(), timeofday()。请注意任何有副作用的函数都必需列为易变类, 即使其结果相当有规律也应该这样,这样才能避免它被优化;一个例子就是 setval()。
+.TP
+\fBCALLED ON NULL INPUT\fR
+.TP
+\fBRETURNS NULL ON NULL INPUT\fR
+.TP
+\fBSTRICT\fR
+CALLED ON NULL INPUT (缺省)表明该函数在自己的某些参数是空值的时候还是可以按照正常的方式调用。 剩下的事情是函数的作者必须负责检查空值以及相应地做出反应。
+
+RETURNS NULL ON NULL INPUT 或 STRICT 表明如果它的任何参数是 NULL,此函数总是返回 NULL。 如果声明了这个参数,则如果存在 NULL 参数时不会执行该函数; 而只是自动假设一个 NULL 结果。
+.TP
+\fB[EXTERNAL] SECURITY INVOKER\fR
+.TP
+\fB[EXTERNAL] SECURITY DEFINER\fR
+SECURITY INVOKER 表明该函数将带着调用它的用户的权限执行。 这是缺省。SECURITY DEFINER 声明该函数将以创建它的用户的权限执行。
+
+ 关键字 EXTERNAL 的目的是和 SQL 兼容, 但是我们和 SQL 不同的是,这个特性不仅仅适用于外部的函数, 所以它是可选的。
+.TP
+\fB\fIdefinition\fB\fR
+ 一个定义函数的字串;含义取决于语言。它可以是一个内部函数名字, 一个指向某个目标文件的路径,一个 SQL 查询,或者一个用过程语言写的文本。
+.TP
+\fB\fIobj_file\fB, \fIlink_symbol\fB\fR
+ 这个形式的 AS 子句用于在函数的 C 源文件里的函数名字和 SQL 函数的名字不同的时候可动态装载 C 语言函数。 字串 obj_file 是包含可动态装载的对象的文件名,而 link_symbol 是函数的链接符号,也就是该函数在 C 源文件里的名字。 如果省略了链接符号,那么就假设它和被定义的 SQL 函数同名。
+.TP
+\fB\fIattribute\fB\fR
+ 历史遗留的函数可选信息。下面的属性可以在此出现:
+.RS
+.TP
+\fBisStrict\fR
+ 等效于 STRICT 或者 RETURNS NULL ON NULL INPUT
+.TP
+\fBisCachable\fR
+isCachable 是 IMMUTABLE  的过时的等效物;不过出于向下兼容,我们仍然接受它。
+.RE
+.PP
+ 属性名是大小写无关的。
+.SH "NOTES 注意"
+.PP
+ 请参阅 ``User-Defined Functions'' 获取更多关于书写函数的信息。
+.PP
+ 我们允许你将完整的 SQL 类型语法用于输入参数和返回值。 不过,有些类型声明的细节(比如,numeric 类型的精度域)是由下层函数实现负责的, 并且会被 CREATE FUNCTION 命令悄悄地吞掉。 (也就是说,不再被识别或强制)。
+.PP
+PostgreSQL 允许函数重载; 也就是说,同一个函数名可以用于几个不同的函数, 只要它们的参数可以区分它们。不过,所有函数的 C 名字必须不同, 也就是说你必须给予重载的 C 函数不同的 C 名字(比如,使用参数类型作为 C 名字的一部分)。
+.PP
+ 如果重复调用 CREATE FUNCTION,并且都指向同一个目标文件, 那么该文件只装载一次。要卸载和恢复装载该文件(可能是在开发过程中),你可以使用 LOAD [\fBload\fR(7)] 命令。
+.PP
+ 使用 DROP FUNCTION 删除一个用户定义函数。
+.PP
+ 函数定义里面的任何单引号或者反斜杠都必须用写双份的方式逃逸。
+.PP
+ 要能定义函数,用户必须对该语言有 USAGE  权限。
+.SH "EXAMPLES 例子"
+.PP
+ 这里是一个简单的例子,用于帮助你开始掌握这个命令。 更多信息和例子,参阅 ``User-Defined Functions''。
+.sp
+.nf
+CREATE FUNCTION add(integer, integer) RETURNS integer
+    AS 'select $1 + $2;'
+    LANGUAGE SQL
+    IMMUTABLE
+    RETURNS NULL ON NULL INPUT;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL99 里的确定义了一个CREATE FUNCTION  PostgreSQL 的和它类似但是不兼容。 这个属性是不可移植的,可以使用的不同语言也是如此。
+.SH "SEE ALSO 参见"
+.PP
+ALTER FUNCTION [\fBalter_function\fR(7)],
+DROP FUNCTION [\fBdrop_function\fR(7)],
+GRANT [\fBgrant\fR(7)],
+LOAD [\fBload\fR(7)],
+REVOKE [\fBrevoke\fR(7)],
+\fBcreatelang\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_group.7 b/src/man7/create_group.7
new file mode 100644
index 0000000..fc3e2d8
--- /dev/null
+++ b/src/man7/create_group.7
@@ -0,0 +1,54 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE GROUP" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE GROUP \- 定义一个新的用户组
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE GROUP \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]
+
+where \fIoption\fR can be:
+
+     SYSID \fIgid\fR
+   | USER  \fIusername\fR [, ...]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE GROUP\fR 将在数据库集群上创建一个新组。 要使用这条命令,你必须是数据库超级用户。
+.PP
+ 使用 ALTER GROUP [\fBalter_group\fR(7)]  修改组成员,DROP GROUP [\fBdrop_group\fR(7)] 删除一个组。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR 
+组名。
+.TP
+\fB\fIgid\fB\fR
+SYSID 子句可以用于选择 PostgreSQL 里新组的组标识(group ID)。 不过,这样做不是必须的。
+
+ 如果没有声明这个,将使用从 1 开始的,已分配的最高组标识加一作为缺省值。
+.TP
+\fB\fIusername\fB\fR
+ 包括到组里面的用户列表。用户必须已经存在。
+.SH "EXAMPLES 例子"
+.PP
+ 创建一个空组:
+.sp
+.nf
+CREATE GROUP staff;
+.sp
+.fi
+.PP
+ 创建一个有成员的组:
+.sp
+.nf
+CREATE GROUP marketing WITH USER jonathan, david;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准中没有 CREATE GROUP 。Roles 在概念上与组类似。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_index.7 b/src/man7/create_index.7
new file mode 100644
index 0000000..01e045e
--- /dev/null
+++ b/src/man7/create_index.7
@@ -0,0 +1,76 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE INDEX" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE INDEX \- 定义一个新索引
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ UNIQUE ] INDEX \fIname\fR ON \fItable\fR [ USING \fImethod\fR ]
+    ( { \fIcolumn\fR | ( \fIexpression\fR ) } [ \fIopclass\fR ] [, ...] )
+    [ WHERE \fIpredicate\fR ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE INDEX\fR 在指定的表上构造一个名为 index_name  的索引。索引主要用来提高数据库性能。但是如果不恰当的使用将导致性能的下降。
+.PP
+ 索引的键字字段是以字段名的方式声明的,或者是可选的写在一个圆括弧里面的表达式。 如果索引方式支持多个字段索引,那么我们也可以声明多个字段。
+.PP
+ 一个索引字段可以是一个使用表的行的一个或多个字段的数值进行计算的表达式。 整个特性可用于获取对基本数据某种变形的快速访问。 比如,一个在 upper(col) 上的函数索引将允许子句 WHERE upper(col) = 'JIM' 使用索引。
+.PP
+PostgreSQL  为从索引提供 B-tree,R-tree,hash(散列) 和 GiST 索引方法。 B-tree 索引方法是一个 Lehman-Yao 高并发 B-trees 的实 现。R-tree 索引方法用 Guttman 的二次分裂算法实现了标准的 R-trees。 hash(散列)索引方法是 Litwin 的线性散列的一个实现。 用户也可以定义它们自己的索引方法,但这个工作相当复杂。
+.PP
+ 如果出现了 WHERE 子句,则创建一个部分索引。 部分索引是一个只包含表的一部分记录的索引,通常是该表中最让人感兴趣的部分。 比如,如果你有一个表,里面包含已上账和未上账的定单, 未上账的定单只占表的一小部分而且这部分是最常用的部分, 那么你就可以通过只在这个部分创建一个索引来改善性能。 另外一个可能的用途是用 WHERE 和 UNIQUE 强制一个表的某个子集的唯一性。
+.PP
+ 在 WHERE 子句里用的表达式只能引用下层表的字段(但是它可以使用所有字段,而不仅仅是被索引的字段)。 目前,子查询和聚集表达式也不能出现在WHERE里。
+.PP
+ 索引定义里的所有函数和操作符都必须是immutable,(不变的)也就是说, 它们的结果必须只能依赖于它们的输入参数,而决不能依赖任何外部的影响(比如另外一个表的内容或者当前时间)。 这个约束确保该索引的行为是定义完整的。要在一个索引上使用用户定义函数,请记住在你创建它的时候把它标记为immutable的函数。
+.SH "PARAMETERS 参数"
+.TP
+\fBUNIQUE\fR
+ 令系统检测当索引创建时(如果数据已经存在)和每次添加数据时表中是否有重复值。 如果插入或更新的值会导致重复的记录时将生成一个错误。
+.TP
+\fB\fIname\fB\fR
+ 要创建的索引名。这里不能包含模式名; 索引总是在同一个模式中作为其父表创建的。
+.TP
+\fB\fItable\fB\fR
+ 要索引的表名(可能有模式修饰)。
+.TP
+\fB\fImethod\fB\fR
+ 用于索引的方法的名字。可选的名字是 btree, hash,rtree,和 gist。缺省方法是 btree。
+.TP
+\fB\fIcolumn\fB\fR
+ 表的列/字段名。
+.TP
+\fB\fIexpression\fB\fR
+ 一个基于该表的一个或多个字段的表达式。 这个表达式通常必须带着圆括弧包围写出,如语法中显示那样。 不过,如果表达式有函数调用的形式,那么圆括弧可以省略。
+.TP
+\fB\fIopclass\fB\fR
+ 一个关联的操作符表。参阅下文获取细节。
+.TP
+\fB\fIpredicate\fB\fR
+ 为一个部分索引定义约束表达式。
+.SH "NOTES 注意"
+.PP
+ 参阅 ``Indexes'' 获取有关何时使用索引,何时不使用索引, 以及哪种情况下是有用的信息。
+.PP
+ 目前,只有 B-tree 和 gist 索引方法支持多字段索引。 缺省时最多可以声明 32 个键字(这个限制可以在制作 PostgreSQL 时修改)。 目前只有 B-tree 支持唯一索引。
+.PP
+ 可以为索引的每个列/字段声明一个 操作符表。 操作符表标识将要被该索引用于该列/字段的操作符。 例如, 一个四字节整数的 B-tree 索引将使用 int4_ops 表; 这个操作符表包括四字节整数的比较函数。 实际上,该域的数据类型的缺省操作符表一般就足够了。 某些数据类型有操作符表的原因是,它们可能有多于一个的有意义的顺序。 例如,我们对复数类型排序时有可能以绝对值或者以实部。 我们可以通过为该数据类型定义两个操作符表,然后在建立索引的时候选择合适的表来实现。 有关操作符表更多的信息在 ``Operator Classes'' 和 ``Interfacing Extensions to Indexes'' 里。
+.PP
+ 使用 DROP INDEX [\fBdrop_index\fR(7)] 删除一个索引。
+.SH "EXAMPLES 例子"
+.PP
+ 在表films上的 title字段创建一个 B-tree 索引:
+.sp
+.nf
+CREATE UNIQUE INDEX title_idx ON films (title);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE INDEX\fR 是 PostgreSQL 语言扩展。 在 SQL 标准中没有 CREATE INDEX 命令。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_language.7 b/src/man7/create_language.7
new file mode 100644
index 0000000..674bf18
--- /dev/null
+++ b/src/man7/create_language.7
@@ -0,0 +1,74 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE LANGUAGE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE LANGUAGE \- 定义一种新的过程语言
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE \fIname\fR
+    HANDLER \fIcall_handler\fR [ VALIDATOR \fIvalfunction\fR ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+ 使用 CREATE LANGUAGE, 一个PostgreSQL 用户可以在 PostgreSQL里注册一个新的语言。 因而,函数和触发器过程可以用这种新语言定义。要注册新语言用户必须具有 PostgreSQL 超级用户权限。
+.PP
+\fBCREATE LANGUAGE\fR 将该语言的名字和一个调用句柄关联起来,而该调用句柄负责执行该语言书写的函数。 请参考 ``User-Defined Functions'' 获取有关语言调用句柄的更多信息。
+.PP
+ 请注意过程语言是对每个独立的数据库而言是自己的。 要让一种语言缺省时可以为所有数据库获得,那你应该把它安装到 template1 数据库里。
+.SH "PARAMETERS 参数"
+.TP
+\fBTRUSTED\fR
+TRUSTED 说明对该语言的调用句柄是安全的; 也就是说,它不会提供给非特权用户任何绕过访问限制的能力。 如果忽略这个关键字,只有具有 PostgreSQL  超级用户权限的人可以使用这个语言创建新的函数。
+.TP
+\fBPROCEDURAL\fR
+ 这是个没有用的字。
+.TP
+\fB\fIname\fB\fR
+ 新的过程化语言的名称。语言名是大小写无关的。 这个名字应该在数据库的所有语言中唯一。
+
+ 出于向下兼容的原因,这个名字可以用单引号包围。
+.TP
+\fBHANDLER \fIcall_handler\fB\fR
+\fIcall_handler\fR 是一个以前注册过的函数的名字,该函数将被调用来执行这门过程语言写的函数。 过程语言的调用句柄必须用一种编译语言书写,比如 C,调用风格必须是版本 1 的调用风格, 并且在 PostgreSQL 里注册为不接受参数并且返回 language_handler 类型的函数, language_handler 是用于将函数声明为调用句柄的占位符。
+.TP
+\fBVALIDATOR \fIvalfunction\fB\fR
+\fIvalfunction\fR 是一个已经注册的函数的名字, 在用该语言创建新函数的时候将调用它来校验新函数。如果没有声明校验函数,那么建立新函数的时候就不会检查它。 校验函数必须接受一个类型为 oid 的参数,它是将要创建的函数的 OID,并且通常会返回 void。
+
+ 校验函数通常会检查函数体,看看看有没有语法错误,但是它也可以查看函数的其它属性, 比如该语言是否不能处理某种参数类型。要发出一个错误,校验函数应该用 elog() 函数。 该函数的返回值将被忽略。
+.SH "NOTES 注意"
+.PP
+ 这条命令通常不应该由用户直接执行。 对于 PostgreSQL 版本里提供的过程语言, 我们应该使用 \fBcreatelang\fR(1) 程序, 它将为我们安装正确的调用句柄。 (createlang 也会在内部调用 CREATE LANGUAGE。)
+.PP
+ 在 PostgreSQL 版本 7.3 之前, 我们必须声明句柄函数返回占位类型 opaque,而不是 language_handler。 为了支持装载旧的转储文件,CREATE LANGUAGE 还将接受声明为返回 opaque 的函数, 但是它会发出一条通知并且把函数声明返回类型改为 language_handler。
+.PP
+ 使用 CREATE FUNCTION [\fBcreate_function\fR(7)] 命令创建新函数。
+.PP
+ 使用 DROP LANGUAGE [\fBdrop_language\fR(7)],或者更好是 \fBdroplang\fR(1) 程序删除一个过程语言。
+.PP
+ 系统表 pg_language (参阅 ``System Catalogs'') 记录了更多有关当前安装的过程语言的信息。createlang 也有一个选项列出已安装的语言。
+.PP
+ 目前,除了权限之外,一种过程语言创建之后它的定义就不能再更改。
+.PP
+ 要使用一种过程语言,用户必须被赋予 USAGE 权限。 如果该语言已知是可信的,那么 createlang 程序自动给每个人赋予权限。
+.SH "EXAMPLES 例子"
+.PP
+ 下面两条顺序执行的命令将注册一门新的过程语言及其关联的调用句柄。
+.sp
+.nf
+CREATE FUNCTION plsample_call_handler() RETURNS language_handler
+    AS '$libdir/plsample'
+    LANGUAGE C;
+CREATE LANGUAGE plsample
+    HANDLER plsample_call_handler;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE LANGUAGE\fR 是 PostgreSQL 扩展。
+.SH "SEE ALSO 参见"
+ALTER LANGUAGE [\fBalter_language\fR(7)], CREATE FUNCTION [\fBcreate_function\fR(l)], DROP LANGUAGE [\fBdrop_language\fR(l)], GRANT [\fBgrant\fR(l)], REVOKE [\fBrevoke\fR(l)], \fBcreatelang\fR(1), \fBdroplang\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_operator.7 b/src/man7/create_operator.7
new file mode 100644
index 0000000..4a98798
--- /dev/null
+++ b/src/man7/create_operator.7
@@ -0,0 +1,134 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE OPERATOR" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE OPERATOR \- 定义一个新的操作符
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE OPERATOR \fIname\fR (
+    PROCEDURE = \fIfuncname\fR
+    [, LEFTARG = \fIlefttype\fR ] [, RIGHTARG = \fIrighttype\fR ]
+    [, COMMUTATOR = \fIcom_op\fR ] [, NEGATOR = \fIneg_op\fR ]
+    [, RESTRICT = \fIres_proc\fR ] [, JOIN = \fIjoin_proc\fR ]
+    [, HASHES ] [, MERGES ]
+    [, SORT1 = \fIleft_sort_op\fR ] [, SORT2 = \fIright_sort_op\fR ]
+    [, LTCMP = \fIless_than_op\fR ] [, GTCMP = \fIgreater_than_op\fR ]
+)
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE OPERATOR\fR 定义一个新的操作符, name。 定义该操作符的用户成为其所有者。如果给出了一个模式名,那么该操作符将在指定的模式中创建。 否则它会在当前模式中创建。
+.PP
+ 操作符 name  是一个最多NAMEDATALEN-1 长的(缺省为 63 个)下列字符组成的字串:
+.sp
+.nf
++ - * / < > = ~ ! @ # % ^ & | ` ?
+.sp
+.fi
+ 你选择名字的时候有几个限制:
+.TP 0.2i
+\(bu
+-- 和 /* 不能在操作符名字的任何地方出现, 因为它们会被认为是一个注释的开始。
+.TP 0.2i
+\(bu
+ 一个多字符的操作符名字不能以 + 或 - 结尾, 除非该名字还包含至少下面字符之一:
+.sp
+.nf
+~ ! @ # % ^ & | ` ?
+.sp
+.fi
+ 例如, @- 是一个允许的操作符名, 但 *- 不是。 这个限制允许 PostgreSQL  分析 SQL-有问题的查询而不要求在符号之间有空白。
+.PP
+.PP
+ 操作符 != 在输入时映射成 <>, 因此这两个名称总是相等的。
+.PP
+ 至少需要定义一个LEFTARG或RIGHTARG。 对于双目操作符来说,两者都需要定义。 对右目操作符来说,只需要定义LEFTARG, 而对于左目操作符来说,只需要定义RIGHTARG。
+.PP
+ 同样,funcname 过程必须已经用 CREATE FUNCTION 定义过, 而且必须定义为接受正确数量的指定类型参数(一个或是两个)。
+.PP
+ 其它子句声明可选的操作符优化子句。他们的含义在 ``User-Defined Operators'' 里定义。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要定义的操作符名字。可用的字符见上文。 其名字可以用模式修饰,比如 CREATE OPERATOR myschema.+ (...)。 如果没有模式,则在当前模式中创建操作符。同一个模式中的两个操作符可以有一样的名字,只要他们操作不同的数据类型。这叫做 重载。
+.TP
+\fB\fIfuncname\fB\fR
+ 用于实现该操作符的函数。
+.TP
+\fB\fIlefttype\fB\fR
+ 如果存在的话,操作符左手边的参数类型。 如果是左目操作符,这个参数可以省略。
+.TP
+\fB\fIrighttype\fB\fR
+ 如果存在的话,操作符右手边的参数类型。 如果是右目操作符,这个参数可以省略。
+.TP
+\fB\fIcom_op\fB\fR
+ 该操作符对应的交换(commutator)操作符。
+.TP
+\fB\fIneg_op\fB\fR
+ 对应的负操作符。
+.TP
+\fB\fIres_proc\fB\fR
+ 此操作符约束选择性计算函数。
+.TP
+\fB\fIjoin_proc\fB\fR
+ 此操作符连接选择性计算函数。
+.TP
+\fBHASHES\fR
+ 表明此操作符支持哈希(散列)连接。
+.TP
+\fBMERGES\fR
+ 表明此操作符可以支持一个融合连接。
+.TP
+\fB\fIleft_sort_op\fB\fR
+ 如果此操作符支持融合连接(join),此操作符的左手边数据的排序操作符。
+.TP
+\fB\fIright_sort_op\fB\fR
+ 如果此操作符支持融合连接(join),此操作符的右手边数据的排序操作符。
+.TP
+\fB\fIless_than_op\fB\fR
+ 如果这个操作符可以支持融合连接,那么这就是比较这个操作符的输入数据类型的小于操作符。
+.TP
+\fB\fIgreater_than_op\fB\fR
+ 如果这个操作符不支持融合连接,那么这就是比较输入这个操作符的数据类型的大于操作符。
+.PP
+ 要在 com_op 或者其它可选参数里给出一个模式修饰的操作符名,使用 OPERATOR()  语法,比如
+.sp
+.nf
+COMMUTATOR = OPERATOR(myschema.===) ,
+.sp
+.fi
+.PP
+.SH "NOTES 注意"
+.PP
+ 请参阅 ``User-Defined Operators'' 中操作符章节获取更多信息。
+.PP
+ 请使用 DROP OPERATOR 从数据库中删除用户定义操作符。
+.SH "EXAMPLES 例子"
+.PP
+ 下面命令定义一个新操作符,面积相等,用于 box 数据类型。
+.sp
+.nf
+CREATE OPERATOR === (
+    LEFTARG = box,
+    RIGHTARG = box,
+    PROCEDURE = area_equal_procedure,
+    COMMUTATOR = ===,
+    NEGATOR = !==,
+    RESTRICT = area_restriction_procedure,
+    JOIN = area_join_procedure,
+    HASHES,
+    SORT1 = <<<,
+    SORT2 = <<<
+    -- 因为给出了排序操作符,索引隐含地有 MERGES。
+    -- LTCMP 和 GTCMP 分别假设是 < 和 >
+);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE OPERATOR\fR 是 PostgreSQL 扩展。 在SQL标准中没有 CREATE OPERATOR  语句。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_operator_class.7 b/src/man7/create_operator_class.7
new file mode 100644
index 0000000..131d2a2
--- /dev/null
+++ b/src/man7/create_operator_class.7
@@ -0,0 +1,95 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE OPERATOR CLASS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE OPERATOR CLASS \- 定义一个新的操作符类
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE OPERATOR CLASS \fIname\fR [ DEFAULT ] FOR TYPE \fIdata_type\fR USING \fIindex_method\fR AS
+  {  OPERATOR \fIstrategy_number\fR \fIoperator_name\fR [ ( \fIop_type\fR, \fIop_type\fR ) ] [ RECHECK ]
+   | FUNCTION \fIsupport_number\fR \fIfuncname\fR ( \fIargument_type\fR [, ...] )
+   | STORAGE \fIstorage_type\fR
+  } [, ... ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE OPERATOR CLASS\fR 定义一个新的操作符表。 一个操作符表定义一种特定的数据类型可以如何与一种索引一起使用。 操作符表声明特定的操作符可以为这种数据类型以及这种索引方法填充特定角色或者"策略"。 操作符表还声明索引方法在为一个索引字段选定该操作符表的时候要使用的支持过程。 所有操作符表使用的函数和操作符都必须在创建操作符表之前定义。
+.PP
+ 如果给出了模式名字,那么操作符表就在指定的模式中创建。 否则就在当前模式中创建(在搜索路径前面的那个;参阅 CURRENT_SCHEMA())。 在同一个模式中的两个操作符表可以有同样的名字,但它们必须用于不同的索引方法。
+.PP
+ 定义操作符表的用户成为其所有者。目前,创造者必须是超级用户。 (作这样的限制是因为一个有问题的操作符表定义会让服务器困惑,甚至崩溃。)
+.PP
+\fBCREATE OPERATOR CLASS\fR  目前并不检查这个类定义是否包含所有索引方法需要操作符以及函数。 定义一个合法的操作符表是用户的责任。
+.PP
+ 参考 ``Interfacing Extensions to Indexes'' 获取更多信息。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 将要创建的操作符表的名字。名字可以用模式修饰。
+.TP
+\fBDEFAULT\fR
+ 如果出现了这个键字,那么该操作符表将成为它的数据类型的缺省操作符表。 对于某个数据类型和访问方式而言,最多可以有一个操作符表是缺省的。
+.TP
+\fB\fIdata_type\fB\fR
+ 这个操作符表处理的字段数据类型。
+.TP
+\fB\fIindex_method\fB\fR
+ 这个操作符表处理的索引访问方式的名字。
+.TP
+\fB\fIstrategy_number\fB\fR
+ 一个操作符和这个操作符表关联的索引访问方式的策略数。
+.TP
+\fB\fIoperator_name\fB\fR
+ 一个和该操作符表关联的操作符的名字(可以用模式修饰)。
+.TP
+\fB\fIop_type\fB\fR
+ 一个操作符的输入数据类型,或者是 NONE 表示左目或者右目操作符。 通常情况下可以省略输入数据类型,因为这个时候它们和操作符表的数据类型相同。
+.TP
+\fBRECHECK\fR
+ 如果出现,那么索引对这个操作符是"lossy"(有损耗的), 因此,使用这个索引检索的行必须重新检查,以保证它们真正满足和此操作符相关的条件子句。
+.TP
+\fB\fIsupport_number\fB\fR
+ 索引方法对一个与操作符表关联的函数的支持过程数。
+.TP
+\fB\fIfuncname\fB\fR
+ 一个函数的名字(可以有模式修饰),这个函数是索引访问方式对此操作符表的支持过程。
+.TP
+\fB\fIargument_types\fB\fR
+ 函数的参数数据类型。
+.TP
+\fB\fIstorage_type\fB\fR
+ 实际存储在索引里的数据类型。通常它和字段数据类型相同, 但是一些索引方法(到目前为止只有 GIST)允许它是不同的。 除非索引方法允许使用一种不同的类型,否则必须省略 STORAGE 子句。
+.PP
+OPERATOR,FUNCTION,和 STORAGE  子句可以按照任意顺序出现。
+.PP
+.SH "EXAMPLES 例子"
+.PP
+ 下面的例子命令为数据类型 _int4(int4 的数组)定义了一个 GiST 索引操作符表。 参阅 contrib/intarray/ 获取完整的例子。
+.sp
+.nf
+CREATE OPERATOR CLASS gist__int_ops
+    DEFAULT FOR TYPE _int4 USING gist AS
+        OPERATOR        3       &&,
+        OPERATOR        6       =       RECHECK,
+        OPERATOR        7       @,
+        OPERATOR        8       ~,
+        OPERATOR        20      @@ (_int4, query_int),
+        FUNCTION        1       g_int_consistent (internal, _int4, int4),
+        FUNCTION        2       g_int_union (bytea, internal),
+        FUNCTION        3       g_int_compress (internal),
+        FUNCTION        4       g_int_decompress (internal),
+        FUNCTION        5       g_int_penalty (internal, internal, internal),
+        FUNCTION        6       g_int_picksplit (internal, internal),
+        FUNCTION        7       g_int_same (_int4, _int4, internal);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE OPERATOR CLASS\fR 是一个 PostgreSQL 扩展。 在 SQL 标准中没有 CREATE OPERATOR CLASS。
+.SH "SEE ALSO 参见"
+ALTER OPERATOR CLASS [\fBalter_operator_class\fR(7)], DROP OPERATOR CLASS [\fBdrop_operator_class\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_rule.7 b/src/man7/create_rule.7
new file mode 100644
index 0000000..f0b8f4c
--- /dev/null
+++ b/src/man7/create_rule.7
@@ -0,0 +1,79 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE RULE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE RULE \- 定义一个新的重写规则
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ OR REPLACE ] RULE \fIname\fR AS ON \fIevent\fR
+    TO \fItable\fR [ WHERE \fIcondition\fR ]
+    DO [ INSTEAD ] { NOTHING | \fIcommand\fR | ( \fIcommand\fR ; \fIcommand\fR ... ) }
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE RULE\fR 定义一个适用于特定表或者视图的新规则。 CREATE OR REPLACE RULE 要么是创建一个新规则, 要么是用一个同表上的同名规则替换现有规则。
+.PP
+PostgreSQL规则系统允许我们在从数据库或表中更新, 插入或删除东西时定义一个其它的动作来执行。 简单说,规则就是当我们在指定的表上执行指定的动作的时候,导致一些额外的动作被执行。 另外,规则可以用另外一个命令取代某个特定的命令,或者令命令完全不被执行。 规则还用于实现表视图。我们要明白的是规则实际上只是一个命令转换机制,或者说命令宏。 这种转换发生在命令开始执行之前。如果你实际上想要一个为每个物理行独立发生的操作, 那么你可能还是要用一个触发器,而不是规则。有关规则的更多信息可以在 ``The Rule System'' 找到。
+.PP
+ 目前,ON SELECT 规则必须是无条件的 INSTEAD 规则并且必须有一个由一条 SELECT 查询组成的动作。 因此,一条 ON SELECT 规则有效地把对象表转成视图, 它的可见内容是规则的 SELECT 查询返回的记录而不是存储在表中的内容(如果有的话)。 我们认为写一条 CREATE VIEW 命令比创建一个表然后定义一条 ON SELECT 规则在上面的风格要好。
+.PP
+ 你可以创建一个可以更新的视图的幻觉, 方法是在视图上定义 ON INSERT,ON UPDATE,和 ON DELETE  规则(或者满足你需要的任何上述规则的子集),用合适的对其它表的更新替换在视图上更新的动作。
+.PP
+ 如果你想在视图更新上使用条件规则,那么这里就有一个补充: 对你希望在视图上允许的每个动作,你都必须有一个无条件的 INSTEAD 规则。 如果规则是有条件的,或者它不是 INSTEAD, 那么系统仍将拒绝执行更新动作的企图,因为它认为它最终会在某种程度上在虚拟表上执行动作。 如果你想处理条件规则上的所由有用的情况,那也可以;只需要增加一个无条件的 DO INSTEAD NOTHING 规则确保系统明白它将决不会被调用来更新虚拟表就可以了。 然后把条件规则做成非 INSTEAD;在这种情况下,如果它们被触发,那么它们就增加到缺省的 INSTEAD NOTHING  动作中。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 创建的规则名。它必须在同一个表上的所有规则的名字中唯一。 同一个表上的同一个事件类型的规则是按照字母顺序运行的。
+.TP
+\fB\fIevent\fB\fR
+ 事件是 SELECT, UPDATE,DELETE  或 INSERT 之一。
+.TP
+\fB\fItable\fB\fR
+ 规则施用的表或者视图的名字(可以有模式修饰)。
+.TP
+\fB\fIcondition\fB\fR
+ 任意 SQL 条件表达式(返回 boolean)。 条件表达式除了引用 NEW 和 OLD 之外不能引用任何表,并且不能有聚集函数。
+.TP
+\fB\fIcommand\fB\fR
+ 组成规则动作的命令。有效的命令是 SELECT,INSERT, UPDATE,DELETE,或 NOTIFY 语句之一。
+.PP
+ 在 condition  和 command 里, 特殊表名字 NEW 和 OLD 可以用于指向被引用表里的数值 new 在 ON INSERT 和 ON UPDATE 规则里可以指向被插入或更新的新行。 OLD 在 ON UPDATE,和 ON DELETE 规则里可以指向现存的被更新,或者删除的行。
+.PP
+.SH "NOTES 注意"
+.PP
+ 为了在表上定义规则,你必须有 RULE 权限。
+.PP
+ 有一件很重要的事情是要避免循环规则。 比如,尽管下面两条规则定义都是 PostgreSQL 可以接受的, 但一条 SELECT 命令会导致 PostgreSQL 报告一条错误信息,因为该查询循环了太多次:
+.sp
+.nf
+CREATE RULE "_RETURN" AS
+    ON SELECT TO t1
+    DO INSTEAD 
+	SELECT * FROM t2;
+
+CREATE RULE "_RETURN" AS
+    ON SELECT TO t2
+    DO INSTEAD 
+	SELECT * FROM t1;
+
+SELECT * FROM t1;
+.sp
+.fi
+.PP
+ 目前,如果一个规则包含一个 NOTIFY 查询,那么该 NOTIFY 将被无条件执行 --- 也就是说,如果规则不施加到任何行上头, 该 NOTIFY 也会被发出。比如,在
+.sp
+.nf
+CREATE RULE notify_me AS ON UPDATE TO mytable DO NOTIFY mytable;
+
+UPDATE mytable SET name = 'foo' WHERE id = 42;
+.sp
+.fi
+ 里,一个 NOTIFY 事件将在 UPDATE 的时候发出,不管是否有某行的 id = 42。这是一个实现的限制,将来的版本应该修补这个毛病。
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE RULE\fR 是 PostgreSQL  语言的扩展,整个规则系统也是如此。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_schema.7 b/src/man7/create_schema.7
new file mode 100644
index 0000000..35e5e7b
--- /dev/null
+++ b/src/man7/create_schema.7
@@ -0,0 +1,80 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE SCHEMA" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE SCHEMA \- 定义一个新的模式
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE SCHEMA \fIschemaname\fR [ AUTHORIZATION \fIusername\fR ] [ \fIschema_element\fR [ ... ] ]
+CREATE SCHEMA AUTHORIZATION \fIusername\fR [ \fIschema_element\fR [ ... ] ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE SCHEMA\fR 将在当前数据库里输入一个新的模式。 该模式名将在当前数据库里现存的所有模式名中唯一。
+.PP
+ 模式实际上是一个名字空间: 它包含命名对象(表,数据类型,函数和操作符)这些名字可以和其它模式里存在的其它对象重名。 命名对象要么是通过用模式名作为前缀"修饰"这些它们的名字进行访问, 要么是通过设置一个搜索路径包含所需要的模式。 无修饰的对象都是在当前模式中创建的(在搜索路径最前面的;可以用函数 current_schema 来判断)。
+.PP
+ 另外,CREATE SCHEMA 可以包括在新模式中创建对象的子命令。 这些子命令和那些在创建完模式后发出的命令没有任何区别,只不过是如果使用了 AUTHORIZATION 子句, 那么所有创建的对象都将被该用户拥有。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIschemaname\fB\fR
+ 要创建的模式名字。如果省略,则使用用户名作为模式名。
+.TP
+\fB\fIusername\fB\fR
+ 将拥有该模式的用户名。如果省略,缺省为执行该命令的用户名。 只有超级用户才能创建不属于自己的模式。
+.TP
+\fB\fIschema_element\fB\fR
+ 一个 SQL 语句,定义一个要在模式里创建的对象。 目前,只有 CREATE TABLE,CREATE VIEW, 和 GRANT 是在 CREATE SCHEMA 里面可以接受的子句。 其它类型的对象可以在创建完模式之后的独立的命令里创建。
+.SH "NOTES 注意"
+.PP
+ 要创建模式,调用该命令的用户必需在当前数据库上有 CREATE 权限。(当然,超级用户绕开这个检查。)
+.SH "EXAMPLES 例子"
+.PP
+ 创建一个模式:
+.sp
+.nf
+CREATE SCHEMA myschema;
+.sp
+.fi
+.PP
+ 为用户 joe 创建模式 --- 模式也会叫 joe:
+.sp
+.nf
+CREATE SCHEMA AUTHORIZATION joe;
+.sp
+.fi
+.PP
+ 创建一个模式并且在里面创建一个表:
+.sp
+.nf
+CREATE SCHEMA hollywood
+    CREATE TABLE films (title text, release date, awards text[])
+    CREATE VIEW winners AS
+        SELECT title, release FROM films WHERE awards IS NOT NULL;
+.sp
+.fi
+ 请注意上面的独立的子命令不是由分号结尾的。
+.PP
+ 下面的命令是实现同样结果的等效语句:
+.sp
+.nf
+CREATE SCHEMA hollywood;
+CREATE TABLE hollywood.films (title text, release date, awards text[]);
+CREATE VIEW hollywood.winners AS
+    SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准允许在 CREATE SCHEMA 里面有一个 DEFAULT CHARACTER SET 子句,以及比目前 PostgreSQL 可以接受的更多的子命令。
+.PP
+ SQL 标准声明在 CREATE SCHEMA 里的子命令可以以任意顺序出现。 目前 PostgreSQL  里的实现还不能处理所有子命令里需要提前引用的情况;有时候可能需要重排一下子命令的顺序以避免前向引用。
+.PP
+ 在 SQL 标准里,模式的所有者总是拥有其中的所有对象。 PostgreSQL 允许模式包含非模式所有者所有的对象。 只有在模式所有者 CREATE 了自己的模式的权限给了其它人才可能出现。
+.SH "SEE ALSO 参见"
+ALTER SCHEMA [\fBalter_schema\fR(7)], DROP SCHEMA [\fBdrop_schema\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_sequence.7 b/src/man7/create_sequence.7
new file mode 100644
index 0000000..f85e04c
--- /dev/null
+++ b/src/man7/create_sequence.7
@@ -0,0 +1,118 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE SEQUENCE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE SEQUENCE \- 创建一个新的序列发生器
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ TEMPORARY | TEMP ] SEQUENCE \fIname\fR [ INCREMENT [ BY ] \fIincrement\fR ]
+    [ MINVALUE \fIminvalue\fR | NO MINVALUE ] [ MAXVALUE \fImaxvalue\fR | NO MAXVALUE ]
+    [ START [ WITH ] \fIstart\fR ] [ CACHE \fIcache\fR ] [ [ NO ] CYCLE ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE SEQUENCE\fR 将向当前数据库里增加一个新的序列号生成器。 包括创建和初始化一个新的名为 name的单行表。生成器将为使用此命令的用户所有。
+.PP
+ 如果给出了一个模式名,那么该序列是在指定模式中创建的。 否则它会在当前模式中创建临时序列存在于一个特殊的模式中,因此如果创建一个临时序列的时候, 不能给出模式名。 序列名必需和同一模式中的其他序列,表,索引,或者视图不同。
+.PP
+ 在序列创建后,你可以使用函数
+\fBnextval\fR,
+\fBcurrval\fR, 和
+\fBsetval\fR
+操作序列。这些函数在 ``Sequence-Manipulation Functions'' 中有详细文档。
+.PP
+ 尽管你不能直接更新一个序列,但你可以使用象
+.sp
+.nf
+SELECT * FROM \fIname\fR;
+.sp
+.fi
+ 检查一个序列的参数和当前状态。特别是序列的 last_value 字段显示了任意后端进程分配的最后的数值。 (当然,这些值在被打印出来的时候可能已经过时了 --- 如果其它进程正积极地使用 nextval。)
+.SH "PARAMETERS 参数"
+.TP
+\fBTEMPORARY or TEMP\fR
+ 如果声明了这个修饰词,那么该序列对象只为这个会话创建, 并且在会话结束的时候自动删除。在临时序列存在的时候, 同名永久序列是不可见的(在同一会话里),除非它们是用模式修饰的名字引用的。
+.TP
+\fB\fIname\fB\fR
+ 将要创建的序列号名(可以用模式修饰)。
+.TP
+\fB\fIincrement\fB\fR
+INCREMENT BY \fIincrement\fR  子句是可选的。一个正数将生成一个递增的序列, 一个负数将生成一个递减的序列。缺省值是一(1)。
+.TP
+\fB\fIminvalue\fB\fR
+.TP
+\fBNO MINVALUE\fR
+ 可选的子句 MINVALUE minvalue  决定一个序列可生成的最小值。 如果没有声明这个子句或者声明了 NO MINVALUE,那么就使用缺省。 缺省分别是递增序列为 1 递减为 -263-1。
+.TP
+\fB\fImaxvalue\fB\fR
+.TP
+\fBNO MAXVALUE\fR
+ 使用可选子句 MAXVALUE maxvalue  决定序列的最大值。 如果没有声明这个子句或者声明了 NO MAXVALUE,那么就使用缺省。 缺省的分别是递增为 263-1,递减为 -1。
+.TP
+\fB\fIstart\fB\fR
+ 可选的 START WITH start  子句  使序列可以从任意位置开始。缺省初始值是递增序列为 minvalue  递减序列为 maxvalue.
+.TP
+\fB\fIcache\fB\fR
+CACHE cache  选项使序列号预分配并且为快速访问存储在内存里面。 最小值(也是缺省值)是1(一次只能生成一个值, 也就是说没有缓存)这也是缺省。
+.TP
+\fBCYCLE\fR
+.TP
+\fBNO CYCLE\fR
+ 可选的CYCLE关键字可用于使序列到达 最大值(maxvalue) 或 最小值(minvalue)  时可复位并继续下去。如果达到极限,生成的下一个数据将分别是 最小值(minvalue) 或 最大值(maxvalue)。
+
+ 如果声明了可选的关键字 NO CYCLE, 那么在序列达到其最大值之后任何对 nextval 的调用都强返回一个错误。 如果既没有声明 CYCLE 也没有声明 NO CYCLE, 那么 NO CYCLE 是缺省。
+.SH "NOTES 注意"
+.PP
+ 使用 DROP SEQUENCE 语句来删除序列。
+.PP
+ 序列是基于 \fBbigint\fR 运算的,因此其范围不能超过八字节的整数范围(-9223372036854775808 到 9223372036854775807)。 在一些老一点的平台上可能没有对八字节整数的编译器支持, 这种情况下序列使用普通的 integer 运算(范围是 -2147483648 到 +2147483647)。
+.PP
+ 如果 cache 设置大于一, 并且这个序列对象将被用于并发多会话的场合,那么可能会有不可预料的结果发生。 每个会话在一次访问序列对象的过程中将分配并缓存随后的序列值,并且相应增加序列对象的 last_value。 这样,同一个事务中的随后的 cache-1 次 nextval  将只是返回预先分配的数值,而不用动序列对象。因此,任何在一个会话中分配但是没有使用的数字都将在会话结尾丢失,导致序列里面出现"空洞"。
+.PP
+ 另外,尽管系统保证为多个会话分配独立的序列值,但是如果考虑所有会话, 那么这个数值可能会丢失顺序。比如,如果 cache  设置为 10,那么会话 A 保留了 1..10 并且返回 nextval=1, 然后会话 B 可能会保留 11..20 然后在会话 A 生成 nextval=2 之前返回 nextval=11。因此,对于 cache 设置为一的情况,我们可以安全地假设 nextval 值是顺序生成的; 而如果把 cache 设置得大于一, 那么你只能假设 nextval 值总是唯一得,而不是完全顺序地生成。 同样,last_value 将反映任何会话保留的最后的数值,不管它是否曾被 nextval 返回。
+.PP
+ 另外一个考虑是在这样的序列上执行的 setval 将不会被其它会话注意到,直到它们用光他们缓存的数值。
+.SH "EXAMPLES 例子"
+.PP
+ 创建一个叫 serial 的递增序列,从101开始:
+.sp
+.nf
+CREATE SEQUENCE serial START 101;
+.sp
+.fi
+.PP
+ 从此序列中选出下一个数字:
+.sp
+.nf
+SELECT nextval('serial');
+    
+ nextval
+---------
+     114
+.sp
+.fi
+.PP
+ 在一个 INSERT 中使用此序列:
+.sp
+.nf
+INSERT INTO distributors VALUES (nextval('serial'), 'nothing');
+.sp
+.fi
+.PP
+ 在一个 COPY FROM 后更新序列:
+.sp
+.nf
+BEGIN;
+COPY distributors FROM 'input_file';
+SELECT setval('serial', max(id)) FROM distributors;
+END;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE SEQUENCE\fR 是 PostgreSQL  语言扩展。 在 SQL 标准里没有 CREATE SEQUENCE 语句。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_table.7 b/src/man7/create_table.7
new file mode 100644
index 0000000..cd5662f
--- /dev/null
+++ b/src/man7/create_table.7
@@ -0,0 +1,366 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TABLE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TABLE \- 定义一个新表
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE \fItable_name\fR (
+    { \fIcolumn_name\fR \fIdata_type\fR [ DEFAULT \fIdefault_expr\fR ] [ \fIcolumn_constraint\fR [, ... ] ]
+    | \fItable_constraint\fR
+    | LIKE \fIparent_table\fR [ { INCLUDING | EXCLUDING } DEFAULTS ] }  [, ... ]
+)
+[ INHERITS ( \fIparent_table\fR [, ... ] ) ]
+[ WITH OIDS | WITHOUT OIDS ]
+[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
+
+where \fIcolumn_constraint\fR is:
+
+[ CONSTRAINT \fIconstraint_name\fR ]
+{ NOT NULL | NULL | UNIQUE | PRIMARY KEY |
+  CHECK (\fIexpression\fR) |
+  REFERENCES \fIreftable\fR [ ( \fIrefcolumn\fR ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
+    [ ON DELETE \fIaction\fR ] [ ON UPDATE \fIaction\fR ] }
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+
+and \fItable_constraint\fR is:
+
+[ CONSTRAINT \fIconstraint_name\fR ]
+{ UNIQUE ( \fIcolumn_name\fR [, ... ] ) |
+  PRIMARY KEY ( \fIcolumn_name\fR [, ... ] ) |
+  CHECK ( \fIexpression\fR ) |
+  FOREIGN KEY ( \fIcolumn_name\fR [, ... ] ) REFERENCES \fIreftable\fR [ ( \fIrefcolumn\fR [, ... ] ) ]
+    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE \fIaction\fR ] [ ON UPDATE \fIaction\fR ] }
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE TABLE\fR 将在当前数据库创建一个新的, 初始为空的表。该表将由发出此命令的用户所有。
+.PP
+ 如果给出了模式名(比如,CREATE TABLE myschema.mytable ...), 那么表是在指定模式中创建的。否则它在当前模式中创建。临时表存在于一个特殊的模式里, 因此创建临时表的时候不能给出模式名。表名字必需和同一模式中其他表,序列,索引或者视图相区别。
+.PP
+\fBCREATE TABLE\fR 还自动创建一个数据类型, 该数据类型代表对应该表一行的复合类型。 因此,表不能和同模式中的现有数据类型同名。
+.PP
+ 一个表的字段数不能超过 1600。(实际上,真正的限制比这低,因为还有元组长度的约束)。
+.PP
+ 可选的约束子句声明约束(或者测试),新行或者更新的行必须满足这些约束才能成功插入或更新。 约束是一个它是一个 SQL 对象,它以多种方式协助我们协助我们在表上定义有效的数值集合。
+.PP
+ 定义约束又两种方法:表约束和列约束。一个列约束是作为一个列定义的一部分定义的。 而表约束并不和某个列绑在一起, 它可以作用于多于一个列上。每个列约束也可以写成表约束; 如果某个约束只影响一个列,那么列约束只是符号上的简洁方式而已。
+.SH "PARAMETERS 参数"
+.TP
+\fBTEMPORARY 或 TEMP\fR
+ 如果声明了此参数,则该表创建为临时表。临时表在会话结束时自动删除, 或者是(可选)在当前事务的结尾(参阅下面的 ON COMMIT)。 现有同名永久表在临时表存在期间在本会话过程中是不可见的, 除非它们是用模式修饰的名字引用的。 任何在临时表上创建的索引也都会自动删除。
+
+ 我们可以选择在 TEMPORARY 或 TEMP 前面放上 GLOBAL 或者 LOCAL。 这样对 PostgreSQL 没有任何区别,可以参阅 Compatibility [\fBcreate_table\fR(7)]。
+.TP
+\fB\fItable_name\fB\fR
+ 要创建的表的名字(可以用模式修饰)。
+.TP
+\fB\fIcolumn_name\fB\fR
+ 在新表中要创建的字段名字。
+.TP
+\fB\fIdata_type\fB\fR
+ 该字段的数据类型。它可以包括数组说明符。
+.TP
+\fBDEFAULT\fR
+DEFAULT 子句给它所出现的字段一个缺省数值。 该数值可以是任何不含变量的表达式(不允许使用子查询和对本表中的其它字段的交叉引用)。 缺省表达式的数据类型必须和字段类型匹配。
+
+ 缺省表达式将被用于任何未声明该字段数值的插入操作。 如果字段上没有缺省值,那么缺省是 NULL。
+.TP
+LIKE 子句声明一个表,新表自动从这个表里面继承所有字段名, 他们的数据类型,以及非空约束。
+
+ 和 INHERITS 不同,新表与继承过来的表之间在创建动作完毕之后是完全无关的。 插入新表的数据不会在父表中表现出来。
+ 
+ 字段缺省表达式只有在声明了 INCLUDING DEFAULTS 之后才会继承过来。 缺省是排除缺省表达式。
+.TP
+\fBINHERITS ( \fIparent_table\fB [, ... ] )\fR
+ 可选的 INHERITS 子句声明一列表,这个新表自动从这列表中继承所有字段。 如果在多于一个父表中存在同名的字段,那么就会报告一个错误,除非这些字段的数据类型在每个父表里都是匹配的。 如果没有冲突,那么重复的字段在新表中融合成一个字段。 如果新表的字段名列表中包括和继承的字段同名的,那么它的数据类型也必须和上面一样与继承字段匹配,并且这些字段定义会融合成一个。 不过,同名的继承和新字段声明可以声明不同的约束:所有的继承过来的约束以及声明的约束都融合到一起,并且全部应用于新表。 如果新表为该字段明确的声明了一个缺省数值,那么此缺省数值覆盖任何来自继承字段声明的缺省值。 否则,任何为该字段声明了缺省数值的父表都必须声明相同的缺省,否则就会报告一个错误。
+.TP
+\fBWITH OIDS\fR
+.TP
+\fBWITHOUT OIDS\fR
+ 这个可选的子句声明新表中的行是否应该拥有赋予它们的 OID (对象标识)。 缺省是有 OID。(如果新表从任何有 OID 的表继承而来,那么就算这条命令说了 WITHOUT OIDS, 也会强制 WITH OIDS。)
+
+ 声明 WITHOUT OIDS 允许用户禁止为行或者表生成 OID。 这么做对大表是值得的,因为这样可以减少 OID 消耗并且推迟 32 位 OID 计数器的消耗。 一旦该计数器重叠,那么就不能再假设 OID 的唯一,这样它的实用性就大打折扣。 声明 WITHOUT OIDS 还会减少在磁盘上存储每行的空间,每行减少 4 字节,因此也可以改进性能。
+.TP
+\fBCONSTRAINT \fIconstraint_name\fB\fR
+ 列或表约束的可选名字。如果没有声明,则由系统生成一个名字。
+.TP
+\fBNOT NULL\fR
+ 字段不允许包含 NULL 数值。
+.TP
+\fBNULL\fR
+ 该字段允许包含 NULL 数值。这是缺省。
+
+ 这个子句的存在只是为和那些非标准 SQL 数据库兼容。 我们不建议在新应用中使用它。
+.TP
+\fBUNIQUE (column constraint)\fR
+.TP
+\fBUNIQUE ( \fIcolumn_name\fB [, ... ] ) (table constraint)\fR
+UNIQUE 声明一个规则,表示一个表里的一个或者多个独立的字段组合的分组只能包含唯一的数值。 表的唯一约束的行为和列约束的一样,只不过多了跨多行的能力。
+
+ 对于唯一约束的用途而言,系统认为 NULL 数值是不相等的。
+
+ 每个唯一表约束都必须命名一个字段的集合,该集合必须和其它唯一约束命名字段集合或者该表定义的主键约束不同。 (否则就只是同样的约束写了两次。)
+.TP
+\fBPRIMARY KEY (column constraint)\fR
+.TP
+\fBPRIMARY KEY ( \fIcolumn_name\fB [, ... ] ) (table constraint)\fR
+ 主键约束表明表中的一个或者一些字段只能包含唯一(不重复)非 NULL 的数值。 从技术上讲,PRIMARY KEY 只是 UNIQUE 和 NOT NULL 的组合,不过把一套字段标识为主键同时也体现了模式设计的元数据, 因为主键意味着其它表可以拿这套字段用做行的唯一标识。
+
+ 一个表只能声明一个主键,不管是作为字段约束还是表约束。
+
+ 主键约束应该定义在同个表上的一个与其它唯一约束所定义的不同的字段集合上。
+.TP
+\fBCHECK (\fIexpression\fB)\fR
+CHECK 约束声明一个生成布尔结果的子句, 一次插入或者更新操作若想成功则里面的新行或者被更新的行必须满足这个条件。 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。
+
+ 目前,CHECK 表达式不能包含子查询也不能引用除当前行字段之外的变量。
+.TP
+\fBREFERENCES \fIreftable\fB [ ( \fIrefcolumn\fB ) ] [ MATCH \fImatchtype\fB ] [ ON DELETE \fIaction\fB ] [ ON UPDATE \fIaction\fB ] (column constraint)\fR
+.TP
+\fBFOREIGN KEY ( \fIcolumn\fB [, ... ] )\fR
+ 这些子句声明一个外键约束,外键约束声明一个由新表中一列或者多列组成的组应该只包含匹配引用的表 reftable 中对应引用的字段 refcolumn 中的数值。 如果省略 refcolumn, 则使用 reftable 的主键。 被引用字段必须是被引用表中的唯一字段或者主键。
+
+ 向这些字段插入的数值将使用给出的匹配类型与参考表中的参考列中的数值进行匹配。 有三种匹配类型:MATCH FULL, MATCH PARTIAL,和 MATCH SIMPLE,它也是缺省匹配类型。 MATCH FULL 将不允许一个多字段外键的字段为 NULL,除非所有外键字段都为 NULL。 MATCH SIMPLE 允许某些外键字段为 NULL 而外键的其它部分不是 NULL。MATCH PARTIAL  还没实现。
+
+ 另外,当被参考字段中的数据改变的时候,那么将对本表的字段中的数据执行某种操作。 ON DELETE 子句声明当被参考表中的被参考行将被删除的时候要执行的操作。 类似,ON UPDATE 子句声明被参考表中被参考字段更新为新值的时候要执行的动作。 如果该行被更新,但被参考的字段实际上没有变化,那么就不会有任何动作。 下面是每个子句的可能的动作:
+.RS
+.TP
+\fBNO ACTION\fR
+ 生成一个错误,表明删除或者更新将产生一个违反外键约束的动作。 它是缺省动作。
+.TP
+\fBRESTRICT\fR
+ 和 NO ACTION 一样,只是动作不可推迟, 即使约束剩下的部分是可以推迟的也马上发生。
+.TP
+\fBCASCADE\fR
+ 删除任何引用了被删除行的行,或者分别把引用行的字段值更新为被参考字段的新数值。
+.TP
+\fBSET NULL\fR
+ 把引用行数值设置为 NULL。
+.TP
+\fBSET DEFAULT\fR
+ 把引用列的数值设置为它们的缺省值。
+.RE
+.PP
+
+ 如果主键字段经常更新,那么我们给 REFERENCES  字段增加一个索引可能是合适的,这样与 REFERENCES 字段相关联的 NO ACTION  和 CASCADE 动作可以更有效地执行。
+.TP
+\fBDEFERRABLE\fR
+.TP
+\fBNOT DEFERRABLE\fR
+ 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。 可以推迟的约束检查可以推迟到事务结尾(使用 SET CONSTRAINTS [\fBset_constraints\fR(7)]  命令)。 缺省是 NOT DEFERRABLE。目前只有外键约束接受这个子句。所有其它约束类型都是不可推迟的。
+.TP
+\fBINITIALLY IMMEDIATE\fR
+.TP
+\fBINITIALLY DEFERRED\fR
+ 如果约束是可推迟的,那么这个子句声明检查约束的缺省时间。 如果约束是 INITIALLY IMMEDIATE, 那么每条语句之后就检查它。这个是缺省。如果约束是 INITIALLY DEFERRED,那么只有在事务结尾才检查它。 约束检查的时间可以用 SET CONSTRAINTS [\fBset_constraints\fR(7)] 命令修改。
+.TP
+\fBON COMMIT\fR
+ 我们可以用 ON COMMIT 控制临时表在事务块结尾的行为。这三个选项是:
+.RS
+.TP
+\fBPRESERVE ROWS\fR
+ 在事务结尾不发生任何特定的动作。这是缺省行为。
+.TP
+\fBDELETE ROWS\fR
+ 临时表的所有行在每次事务结尾都被删除。实际上,在每次提交的时候都自动 \fBtruncate\fR(7)  。
+.TP
+\fBDROP\fR
+ 在当前事务块的结尾,临时表将被删除。
+.RE
+.PP
+.SH "NOTES 注意"
+.TP 0.2i
+\(bu
+ 如果一个应用使用了 OID 标识表中的特定行,那么我们建议在该表的 oid 字段上创建一个唯一约束,以确保该表的 OID 即使在计数器重叠之后也是唯一的。如果你需要一个整个数据库范围的唯一标识, 那么就要避免假设 OID 是跨表唯一的,你可以用 tableoid 和行 OID 的组合来实现这个目的。 (将来的 PostgreSQL 很可能为每个表使用独立的 OID 计数器, 因此包括 tableoid 组成数据库范围内的唯一标识将是必须的,而不是可选的。)
+.sp
+.RS
+.B "提示:" 
+对那些没有主键的表,我们不建议使用 WITHOUT OIDS, 因为如果既没有 OID 又没有唯一数据键字,那么就很难标识特定的行。
+.RE
+.sp
+.TP 0.2i
+\(bu
+PostgreSQL 自动为每个唯一约束和主键约束创建一个索引以确保唯一性。 因此,我们不必为主键字段创建明确的索引。(参阅 CREATE INDEX [\fBcreate_index\fR(7)]获取更多信息。)
+.TP 0.2i
+\(bu
+ 唯一约束和主键在目前的实现里是不能继承的。 这样,如果把继承和唯一约束组合在一起会导致无法运转。
+.SH "EXAMPLES 例子"
+.PP
+ 创建表 films 和 distributors:
+.sp
+.nf
+CREATE TABLE films (
+    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
+    title       varchar(40) NOT NULL,
+    did         integer NOT NULL,
+    date_prod   date,
+    kind        varchar(10),
+    len         interval hour to minute
+);
+.sp
+.fi
+.sp
+.nf
+CREATE TABLE distributors (
+     did    integer PRIMARY KEY DEFAULT nextval('serial'),
+     name   varchar(40) NOT NULL CHECK (name <> '')
+);
+.sp
+.fi
+.PP
+ 创建一个带有 2 维数组的表:
+.sp
+.nf
+CREATE TABLE array (
+    vector  int[][]
+);
+.sp
+.fi
+.PP
+ 为表 films 定义一个唯一表约束。 唯一表约束可以在表的一个或多个字段上定义:
+.sp
+.nf
+CREATE TABLE films (
+    code        char(5),
+    title       varchar(40),
+    did         integer,
+    date_prod   date,
+    kind        varchar(10),
+    len         interval hour to minute,
+    CONSTRAINT production UNIQUE(date_prod)
+);
+.sp
+.fi
+.PP
+ 定义一个检查列约束:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer CHECK (did > 100),
+    name    varchar(40)
+);
+.sp
+.fi
+.PP
+ 定义一个检查表约束:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40)
+    CONSTRAINT con1 CHECK (did > 100 AND name <> '')
+);
+.sp
+.fi
+.PP
+ 为表 films 定义一个主键表约束。 主键表约束可以定义在表上的一个或多个字段。
+.sp
+.nf
+CREATE TABLE films (
+    code        char(5),
+    title       varchar(40),
+    did         integer,
+    date_prod   date,
+    kind        varchar(10),
+    len         interval hour to minute,
+    CONSTRAINT code_title PRIMARY KEY(code,title)
+);
+.sp
+.fi
+.PP
+ 为表 distributors 定义一个主键约束。 下面两个例子是等效的,第一个例子使用了表约束语法, 第二个使用了列约束表示法。
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40),
+    PRIMARY KEY(did)
+); 
+.sp
+.fi
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer PRIMARY KEY,
+    name    varchar(40)
+);
+.sp
+.fi
+.PP
+ 下面这个例子给字段 name 赋予了一个文本常量缺省值, 并且将字段 did 的缺省值安排为通过选择序列对象的下一个值生成。 modtime 的缺省值将是该行插入的时候的时间。
+.sp
+.nf
+CREATE TABLE distributors (
+    name      varchar(40) DEFAULT 'Luso Films',
+    did       integer DEFAULT nextval('distributors_serial'),
+    modtime   timestamp DEFAULT current_timestamp
+);
+.sp
+.fi
+.PP
+ 在表 distributors 上定义两个 NOT NULL 列约束,其中之一明确给出了名字:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer CONSTRAINT no_null NOT NULL,
+    name    varchar(40) NOT NULL
+);
+.sp
+.fi
+.PP
+ 为 name 字段定义一个唯一约束:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40) UNIQUE
+);
+.sp
+.fi
+ 上面的和下面这样作为一个表约束声明是一样的:
+.sp
+.nf
+CREATE TABLE distributors (
+    did     integer,
+    name    varchar(40),
+    UNIQUE(name)
+);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE TABLE\fR 遵循 SQL92 和 SQL99 的一个子集,一些例外情况在下面列出。
+.SS "TEMPORARY TABLES 临时表"
+.PP
+ 尽管 CREATE TEMPORARY TABLE 的语法和 SQL 标准的类似, 但是效果是不同的。在标准里,临时表只是定义一次并且自动存在(从空内容开始)于任何需要它们的会话中。 PostgreSQL 要求每个会话为它们使用的每个临时表发出它们自己的 CREATE TEMPORARY TABLE 命令。 这样就允许不同的会话将相同的临时表名字用于不同的目的,而标准的实现方法则把一个临时表名字约束为具有相同的表结构。
+.PP
+ 标准定义的临时表的行为被广泛地忽略了。PostgreSQL  在这方面上地行为类似于许多其它 SQL 数据库
+.PP
+ 标准中在全局和局部地临时表之间的区别在 PostgreSQL  里不存在,因为这种区别取决于模块的概念,而 PostgreSQL  没有这个概念。出于兼容考虑,PostgreSQL 将接受临时表声明中的 GLOBAL 和 LOCAL 关键字, 但是他们没有作用。
+.PP
+ 临时表的 ON COMMIT 子句也类似于 SQL 标准, 但是有些区别。如果忽略了 ON COMMIT 子句,SQL 声明缺省的行为是 ON COMMIT DELETE ROWS。 但是 PostgreSQL 里的缺省行为是 ON COMMIT PRESERVE ROWS。 在 SQL 里不存在 ON COMMIT DROP。
+.SS "COLUMN CHECK CONSTRAINTS 字段检查约束"
+.PP
+ SQL 标准说 CHECK 字段约束只能引用他们施用的字段; 只有 CHECK 表约束才能引用多个字段。PostgreSQL 并不强制这个限制;它把字段和表约束看作相同的东西。
+.SS "NULL ``CONSTRAINT'' NULL约束"
+.PP
+NULL "约束"(实际上不是约束)是 PostgreSQL 对 SQL 标准的扩展, 包括它是为了和其它一些数据库系统兼容(以及为了和 NOT NULL 约束对称)。因为它是任何字段的缺省,所以它的出现只是噪音而已。
+.SS "INHERITANCE 继承"
+.PP
+ 通过 INHERITS 子句的多重继承是 PostgreSQL 语言的扩展。 SQL99(但不包括 SQL92)使用不同的语法和语义定义了单继承。 SQL99 风格的继承还没有在 PostgreSQL 中实现。
+.SS "OBJECT IDS 对象ID"
+.PP
+PostgreSQL 的 OID 的概念不标准。
+.SS "ZERO-COLUMN TABLES 零行表"
+.PP
+PostgreSQL 允许创建没有字段的表 (比如,CREATE TABLE foo();)。这是对 SQL 标准的扩展, 标准不允许存在零字段表。零字段表本身没什么用,但是禁止他们会给 ALTER TABLE DROP COLUMN带来很奇怪的情况,所以,这个时候忽视标准的限制好想很清楚。
+.SH "SEE ALSO 参见"
+ALTER TABLE [\fBalter_table\fR(7)], DROP TABLE [\fBdrop_table\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
+
diff --git a/src/man7/create_table_as.7 b/src/man7/create_table_as.7
new file mode 100644
index 0000000..1587c4c
--- /dev/null
+++ b/src/man7/create_table_as.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TABLE AS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TABLE AS \- 从一条查询的结果中创建一个新表
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE \fItable_name\fR [ (\fIcolumn_name\fR [, ...] ) ]
+    AS \fIquery\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE TABLE AS\fR 创建一个表并且用来自 SELECT 命令计算出来的数据填充该表。 该表的字段和 SELECT 输出字段的名字及类型相关。 (只不过你可以通过明确地给出一个字段名字列表来覆盖 SELECT 的字段名)。
+.PP
+\fBCREATE TABLE AS\fR 和创建视图有点象, 不过两者之间实在是有比较大差异:它创建一个新表并且只对 SELECT 计算一次来填充这个新表。 新表不能跟踪 SELECT 的源表随后做的变化。 相比之下,每次做查询的时候,视图都重新计算定义它的 SELECT 语句。
+.SH "PARAMETERS 参数"
+.TP
+\fBTEMPORARY or TEMP\fR
+ 如果声明了这个选项,则该表作为临时表创建。 参阅 CREATE TABLE [\fBcreate_table\fR(7)] 获取细节。
+.TP
+\fB\fItable_name\fB\fR
+ 要创建的表名(可以是用模式修饰的)。
+.TP
+\fB\fIcolumn_name\fB\fR
+ 字段的名称。如果没有提供字段名字,那么就从查询的输出字段名中获取。 如果表是一个 EXECUTE 命令创建的, 那么当前就不能声明字段名列表。
+.TP
+\fB\fIquery\fB\fR
+ 一个查询语句(也就是一条 SELECT 命令或者一条运行准备好的 SELECT 命令的 EXECUTE 命令),请分别参考 SELECT [\fBselect\fR(7)] 或者 EXECUTE [\fBexecute\fR(l)] 获取可以使用的语法的描述。
+.SH "NOTES 注意"
+.PP
+ 这条命令从功能上等效于 SELECT INTO [\fBselect_into\fR(7)], 但是我们更建议你用这个命令,因为它不太可能和 SELECT ... INTO 语法的其它方面的使用混淆。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令是根据 Oracle 的一个特性制作的。 在 SQL 标准中没有功能相等的命令。不过, 把 CREATE TABLE 和 INSERT ... SELECT  组合起来可以通过略微多一些的工作完成同样的事情。
+.SH "SEE ALSO 参见"
+CREATE TABLE [\fBcreate_table\fR(7)], CREATE VIEW [\fBcreate_view\fR(l)], EXECUTE [\fBexecute\fR(l)], SELECT [\fBselect\fR(l)], SELECT INTO [\fBselect_into\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_trigger.7 b/src/man7/create_trigger.7
new file mode 100644
index 0000000..a94bf16
--- /dev/null
+++ b/src/man7/create_trigger.7
@@ -0,0 +1,84 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TRIGGER \- 定义一个新的触发器
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE TRIGGER \fIname\fR { BEFORE | AFTER } { \fIevent\fR [ OR ... ] }
+    ON \fItable\fR [ FOR [ EACH ] { ROW | STATEMENT } ]
+    EXECUTE PROCEDURE \fIfuncname\fR ( \fIarguments\fR )
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE TRIGGER\fR 创建一个新的触发器。 触发器将与指定表关联并且将在特定事件发生时执行声明的函数 func。
+.PP
+ 触发器可以声明为在对记录进行操作之前(在检查约束之前和 INSERT,UPDATE  或 DELETE 执行前)或操作完成之后(在检查约束之后和完成  INSERT, UPDATE 或 DELETE 操作)触发。 如果触发器在事件之前,触发器可能略过当前记录的操作或改变被插入的(当前)记录(只对 INSERT 和 UPDATE 操作有效)。 如果触发器在事件之后,所有更改,包括最后的插入, 更新或删除对触发器都是"可见"的。
+.PP
+ 一个 FOR EACH ROW 执行指定操作的触发器为操作修改的每一行都调用一次。比如,一个影响 10 行的 DELETE 将导致任何在目标关系上的 ON DELETE 触发器独立调用 10 次, 每个被删除的行一次。相比之下,一个为指定操作 FOR EACH STATEMENT  的触发器只是为任何操作执行一次,不管有多少行被修改。 (特别是,一个修改零行的操作仍然会导致任何合适的 FOR EACH STATEMENT 触发器的执行。)
+.PP
+ 如果多个同类型的触发器为同样事件做了定义, 那么它们将按照字母顺序被激活。
+.PP
+SELECT 并不更改任何行,因此你不能创建 SELECT 触发器。这种场合下规则和视图更合适些。
+.PP
+ 请参考 Part V ``Triggers'' 获取更多信息。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 赋予新触发器的名称。它必需和任何作用于同一表的触发器不同。
+.TP
+\fBBEFORE\fR
+.TP
+\fBAFTER\fR
+ 决定该函数是在事件之前还是之后调用。
+.TP
+\fB\fIevent\fB\fR
+INSERT,DELETE 或 UPDATE 其中之一。 它声明击发触发器的事件。多个事件可以用 OR 声明。
+.TP
+\fB\fItable\fB\fR
+触发器作用的表名称(可以用模式修饰)。 
+.TP
+\fBFOR EACH ROW\fR
+.TP
+\fBFOR EACH STATEMENT\fR
+ 这些选项声明触发器过程是否为触发器事件影响的每个行触发一次, 还是只为每条 SQL 语句触发一次。如果都没有声明, FOR EACH STATEMENT 是缺省。
+.TP
+\fB\fIfunc\fB\fR
+一个用户提供的函数,它声明为不接受参数并且返回 trigger 类型。 
+.TP
+\fB\fIarguments\fB\fR
+ 一个可选的用逗号分隔的参数列表,它将在触发器执行的时候提供给函数, 这些参数是文本字串常量。也可以在这里写简单的名字和数值常量,但是它们会被转换成字串。 请检查实现语言中关于如何在触发器函数中访问触发器参数的描述; 这些参数可能和普通的函数参数不同。
+.SH "NOTES 注意"
+.PP
+ 要在一个表上创建一个触发器,用户必需在该表上有 TRIGGER 权限。
+.PP
+ 在 PostgreSQL 版本 7.3 以前, 我们必须把触发器函数声明为返回占位类型 opaque, 而不是 trigger。为了支持装载老的转储文件, CREATE TRIGGER 将接受一个声明为返回 opaque 的函数, 但是它将发出一条 NOTICE 并且把函数声明的返回类型改成 trigger。
+.PP
+ 用 DROP TRIGGER [\fBdrop_trigger\fR(7)] 获取如何删除触发器的信息。
+.SH "EXAMPLES 例子"
+.PP
+Section 33.4 ``Triggers'' 包含一个完整的例子。
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE TRIGGER\fR 里的 CREATE TRIGGER 语句实现了一个 SQL99 标准的子集。 (SQL92 里没有触发器) 目前仍然缺少下面的功能∶
+.TP 0.2i
+\(bu
+SQL99 允许触发器为指定的字段的更新进行触发(也就是说,AFTER UPDATE OF col1, col2)。
+.TP 0.2i
+\(bu
+SQL99 允许你为 "old" 和 "new" 行或者表定义别名,用于定义触发器的动作(也就是说, CREATE TRIGGER ... ON tablename REFERENCING OLD ROW AS somename NEW ROW AS othername ...)。因为 PostgreSQL  允许触发器过程以任意数量的用户定义语言进行书写,所以访问数据的工作是用和语言相关的方法实现的。
+.TP 0.2i
+\(bu
+PostgreSQL 只允许为触发的动作执行存储的过程。SQL99 允许执行一些其他的 SQL 命令, 比如那 CREATE TABLE 作为触发器动作。 这个限止并不难绕开,只要创建一个执行这些命令的存储过程即可。
+.PP
+.PP
+SQL99 要求多个触发器应该以创建的时间顺序执行。 PostgreSQL 采用的是按照名字顺序, 我们认为这样更加方便。
+.PP
+ 用 OR 给一个触发器声明多个动作是 PostgreSQL  对标准的扩展。
+.SH "SEE ALSO 参见"
+CREATE FUNCTION [\fBcreate_function\fR(7)], ALTER TRIGGER [\fBalter_trigger\fR(l)], DROP TRIGGER [\fBdrop_trigger\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_type.7 b/src/man7/create_type.7
new file mode 100644
index 0000000..d626241
--- /dev/null
+++ b/src/man7/create_type.7
@@ -0,0 +1,175 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE TYPE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE TYPE \- 定义一个新的数据类型
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE TYPE \fIname\fR AS
+    ( \fIattribute_name\fR \fIdata_type\fR [, ... ] )
+
+CREATE TYPE \fIname\fR (
+    INPUT = \fIinput_function\fR,
+    OUTPUT = \fIoutput_function\fR
+    [ , RECEIVE = \fIreceive_function\fR ]
+    [ , SEND = \fIsend_function\fR ]
+    [ , INTERNALLENGTH = { \fIinternallength\fR | VARIABLE } ]
+    [ , PASSEDBYVALUE ]
+    [ , ALIGNMENT = \fIalignment\fR ]
+    [ , STORAGE = \fIstorage\fR ]
+    [ , DEFAULT = \fIdefault\fR ]
+    [ , ELEMENT = \fIelement\fR ]
+    [ , DELIMITER = \fIdelimiter\fR ]
+)
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE TYPE\fR 为当前数据库注册一个新的数据类型。 定义该类型的用户成为其所有者。
+.PP
+ 如果给出模式名,那么该类型是在指定模式中创建。 否则它是在当前模式中创建。类型名必需和同一模式中任何现有的类型或者域不同。 (因为表和数据类型有联系,类型名不能和同模式中的表名字冲突。)
+.SS "COMPOSITE TYPES 复合类型"
+.PP
+ 第一种形式的 CREATE TYPE 创建一个复合类型。 复合类型是通过一列属性名和数据类型声明的。这样实际上和一个表的行类型一样, 但是如果我们只是想定义一个类型,那么使用 CREATE TYPE 避免了直接创建实际的表。 一个独立的复合类型对于一个函数的返回类型非常有用。
+.SS "BASE TYPES 基本类型"
+.PP
+ 第二种形式的CREATE TYPE创建一种新的基本类型(标量类型)。 参数可以以任意的顺序出现,而不是上面显示的那样。并且大多数都是可选的。 它要求要在定义类型之前先注册两个函数(用CREATE FUNCTION命令)。 支持函数 input_function 和 output_function 是必须的, 而函数 receive_function 和 send_function 是可选的。 通常,这些函数必须用 C 或者其它低层语言编写。
+.PP
+ 函数 input_function  将该类型的外部文本形式转换成可以被对该类型操作的操作符和函数识别的内部形式。 output_function  用做相反用途。 输入函数可以声明为接受一个类型为 c_string 的参数,或者接受三个类型分别为 c_string,oid,integer 的参数。 (第一个参数是 C 字串形式的输入文本,第二个是在该类型为数组类型时其元素的类型, 第三个是目标字段的typmod,如果已知的话。) 它应该返回一个该数据类型本身的数值。 输出函数可以声明为接受一个类型为新数据类型的参数, 或者接受两个类型,第二个参数的类型是 oid。 第二个参数也是用于数组类型的数组元素类型。输出函数应该返回类型 cstring。
+.PP
+ 可选的 receive_function 把该类型的外部二进制表现形式转换成内部表现形式。 如果没有提供这个函数,那么该类型不能用二进制输入。二进制格式应该选取那种转换成内部格式比较容易的,同时还有一定移植性的。 (比如,标准的整数数据类型使用网络字节序作为外部的二进制表现形式,而内部表现形式是机器的本机字节序。) 接收函数应该声明为接受一个类型为 internal 的参数,或者两个类型分别为 internal 和 oid 的参数。 它必须返回一个数据类型自身的数值。(第一个参数是一个指向一个 StringInfo 缓冲区的,保存接受字节串的指针; 可选的第二个参数是元素类型——如果类型是一个数组类型的话。)类似的,可选的 send_function  把类型转换为外部二进制表现形式。 如果没有提供这些函数,那么类型就不能用二进制方式输出。发送函数可以声明为接收一个新数据类型, 或者接收两个参数,第二个参数的类型是 oid。第二个参数仍然是用做数组类型的。 发送函数必须返回 bytea。
+.PP
+ 这个时候你应该觉得奇怪,就是输入和输出函数怎么可以声明为返回新类型的结果或者是接受新类型的参数, 而且是在新类型创建之前就需要创建它们。 答案是输入函数必须先创建,然后是输出函数,最后是数据类型。 PostgreSQL 将首先把新数据类型的名字看作输入函数的返回类型。 它将创建一个"壳"类型,这个类型只是在 pg_type里面的一个占位符,然后把输入函数定义和这个壳类型连接起来。 类似的是输出函数将连接到(现在已经存在)的壳类型。最后, CREATE TYPE 把这个壳类型替换成完整的类型定义,这样就可以使用新类型了。
+.PP
+ 尽管新类型的内部表现形式只有 I/O 函数和其它你创建来使用该类型的函数了解, 但内部表现还是有几个属性必须为 PostgreSQL 声明。 这些中最重要的是 internallength。 基本数据类型可定义成为定长,这时 internallength  是一个正整数,也可以是变长的,通过把 internallength  设置为 VARIABLE 表示。(在内部,这个状态 是通过将typlen设置为 -1 实现的。)所有变长类型的内部形式都必须以一个四字节整数开头,这个整数给出此类型这个数值的全长。
+.PP
+ 可选的标记 PASSEDBYVALUE 表明该类型的数值是用值传递的, 而不是用引用。你不能传递那些内部形式大于 Datum (大多数机器上是 4 字节,有些是 8 字节)类型的尺寸的数据类型的值。
+.PP
+alignment 参数声明该数据类型要求的对齐存储方式。 允许的数值等效于按照 1,2,4,或者 8 字节边界对齐。请注意变长类型必须有至少 4 字节的对齐, 因为它们必须包含一个 int4 作为它们的第一个成份。
+.PP
+storage 参数允许为变长数据类型选择存储策略。 (定长类型只允许使用 plain)。 plain 声明该数据类型总是用内联的方式而不是压缩的方式存储。 extended 声明系统将首先试图压缩一个长的数据值,然后如果它仍然太长的话就将它的值移出主表的行, 但系统将不会压缩它。 main 允许压缩,但是不赞成把数值移动出主表。 (用这种存储策略的数据项可能仍将移动出主表,如果不能放在一行里的话, 但是它们将比 extended 和 external 项更愿意呆在主表里。)
+.PP
+ 如果用户希望字段的数据类型缺省时不是 NULL,而是其它什么东西, 那么你可以声明一个缺省值。 在 DEFAULT 关键字里面声明缺省值。 (这样的缺省可以被附着在特定字段上的明确的 DEFAULT 子句覆盖。)
+.PP
+ 要表示一个类型是数组,用 ELEMENT 关键字声明数组元素的类型。 比如,要定义一个 4 字节整数(int4)的数组,声明
+ 
+ELEMENT = int4
+
+。 有关数组类型的更多细节在下面描述。
+.PP
+ 要声明用于这种类型数组的外部形式的数值之间的分隔符,可用 delimiter  声明指定分隔符。缺省的分隔符是逗号(,)。 请注意分隔符是和数组元素类型相关联,而不是数组类型本身。
+.SS "ARRAY TYPES 数组类型"
+.PP
+ 在创建用户定义数据类型的时候,PostgreSQL  自动创建一个与之关联的数组类型,其名字由该基本类型的名字前缀一个下划线组成。 分析器理解这个命名传统,并且把对类型为 foo[] 的字段的请求转换成对类型为 _foo  的字段的请求。这个隐含创建的数组类型是变长并且使用内建的输入和输出函数 array_in 和 array_out。
+.PP
+ 你很可能会问如果系统自动制作正确的数组类型,那为什么有个 ELEMENT选项?使用 ELEMENT 有用的唯一的场合是在你制作的定长类型碰巧在内部是一个一定数目相同事物的数组, 而你又想允许这 N 个事物可以通过脚标直接关联,以及那些你准备把该类型当做整体进行的操作。 比如,类型 name 就允许其构成 char 用这种方法关联。 一个二维的 point 类型也可以允许其两个构成浮点型按照类似 point[0] 和 point[1] 的方法关联。 
+请注意这个功能只适用与那些内部形式是一个相同的定长域的序列的类型。 一个可以脚标化的变长类型必须有被 array_in 和 array_out 使用的一般化的内部表现形式。 出于历史原因(也就是说,那些明显错误但补救来得太迟的问题),定长数组类型的脚标从零开始,而不是象变长类型那样的从一开始。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 将要创建的类型名(可以有模式修饰)。
+.TP
+\fB\fIattribute_name\fB\fR
+ 复合类型的一个属性(字段)的名字。
+.TP
+\fB\fIdata_type\fB\fR
+ 一个要成为一个复合类型的字段的现有数据类型的名字。
+.TP
+\fB\fIinput_function\fB\fR
+ 一个函数的名称, 将数据从外部类型转换成内部类型。
+.TP
+\fB\fIoutput_function\fB\fR
+ 一个函数的名称, 将数据从内部格式转换成适于显示的形式。
+.TP
+\fB\fIreceive_function\fB\fR
+ 把数据从类型的外部二进制形式转换成其内部形式的函数的名字。
+.TP
+\fB\fIsend_function\fB\fR
+ 把数据从类型的内部形式转换成其外部二进制形式的函数名。
+.TP
+\fB\fIinternallength\fB\fR
+ 一个数值常量,说明新类型的内部表现形式的长度。缺省的假设是它是变长的。
+.TP
+\fB\fIalignment\fB\fR
+ 该数据类型的存储对齐要求。如果声明了,必须是 char, int2, int4 或 double; 缺省是 int4。
+.TP
+\fB\fIstorage\fB\fR
+ 该数据类型的存储策略。如果声明了,必须是 plain,external, extended,或 main; 缺省是 plain。
+.TP
+\fB\fIdefault\fB\fR
+ 该类型的缺省值。通常是省略它的,所以缺省是 NULL。
+.TP
+\fB\fIelement\fB\fR
+ 被创建的类型是数组;这个声明数组元素的类型。
+.TP
+\fB\fIdelimiter\fB\fR
+ 将用做数组的数据元素之间分隔符的字符。
+.SH "NOTES 注意"
+.PP
+ 用户定义类型名不能以下划线(_) 开头而且只能有 62 个字符长。(或者通常是 NAMEDATALEN-2, 而不是其它名字那样的可以有 NAMEDATALEN-1 个字符)。 以下划线开头的类型名被解析成内部创建的数组类型名。
+.PP
+ 在 PostgreSQL 版本 7.3 以前,我们要通过使用占位伪类型 opaque 代替函数的前向引用来避免创建壳类型。 7.3 之前 cstring 参数和结果同样需要声明伪 opaque。 要支持装载旧的转储外那间,CREATE TYPE 将接受那些用 opaque声明的函数, 但是它回发出一条通知并且用正确的类型改变函数的声明。
+.SH "EXAMPLES 例子"
+.PP
+ 这个例子创建一个复合类型并且在一个函数定义中使用它:
+.sp
+.nf
+CREATE TYPE compfoo AS (f1 int, f2 text);
+CREATE FUNCTION getfoo() RETURNS SETOF compfoo AS
+  'SELECT fooid, fooname FROM foo' LANGUAGE SQL;
+.sp
+.fi
+.PP
+ 这个命令创建box数据类型,并且将这种类型用于一个表定义:
+.sp
+.nf
+CREATE TYPE box (
+    INTERNALLENGTH = 16,
+    INPUT = my_box_in_function,
+    OUTPUT = my_box_out_function
+);
+
+CREATE TABLE myboxes (
+    id integer,
+    description box
+);
+.sp
+.fi
+.PP
+ 如果 box 的内部结构是一个四个 float4 的数组,我们可以说
+.sp
+.nf
+CREATE TYPE box (
+    INTERNALLENGTH = 16,
+    INPUT = my_box_in_function,
+    OUTPUT = my_box_out_function,
+    ELEMENT = float4
+);
+.sp
+.fi
+ 它允许一个 box 的数值成分成员可以用脚标访问。 否则该类型和前面的行为一样。
+.PP
+ 这条命令创建一个大对象类型并将其用于一个表定义:
+.sp
+.nf
+CREATE TYPE bigobj (
+    INPUT = lo_filein, OUTPUT = lo_fileout,
+    INTERNALLENGTH = VARIABLE
+);
+CREATE TABLE big_objs (
+    id integer,
+    obj bigobj
+);
+.sp
+.fi
+.PP
+ 更多的例子,包括合适的输入和输出函数,在 Chapter 31``Extending SQL'' in the documentation。
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE TYPE\fR 命令是 PostgreSQL 扩展。在 SQL99 里有一个 CREATE TYPE 语句,但是细节上和 PostgreSQL 的有比较大区别。
+.SH "SEE ALSO 参见"
+CREATE FUNCTION [\fBcreate_function\fR(7)], DROP TYPE [\fBdrop_type\fR(l)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_user.7 b/src/man7/create_user.7
new file mode 100644
index 0000000..b483233
--- /dev/null
+++ b/src/man7/create_user.7
@@ -0,0 +1,100 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE USER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE USER \- 创建一个新的数据库用户帐户
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE USER \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]
+
+where \fIoption\fR can be:
+    
+      SYSID \fIuid\fR 
+    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '\fIpassword\fR'
+    | CREATEDB | NOCREATEDB
+    | CREATEUSER | NOCREATEUSER
+    | IN GROUP \fIgroupname\fR [, ...]
+    | VALID UNTIL '\fIabstime\fR' 
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE USER\fR 向一个 PostgreSQL  数据库集群增加一个新用户。 参考 Chapter 17 ``Database Users and Privileges''  和 Chapter 19 ``Client Authentication''  获取关于管理用户和认证的信息。 要执行这条命令,你必须是一个数据库超级用户。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 用户名
+.TP
+\fB\fIuid\fB\fR
+SYSID 子句可以用于选择正在被创建的用户的 PostgreSQL 用户标识。 通常这是不必要的,但是如果你想恢复一个孤儿对象的所有者,也许这个很有用。
+
+ 如果没有声明这个,缺省使用已分配的最高用户标识加一(最小是 100)。
+.TP
+\fB\fIpassword\fB\fR
+ 设置用户的口令,如果你不准备使用口令认证, 那么你可以省略这个选项,但如果你想切换到一个口令认证的服务器,那么该用户将不能联接。 此口令可以稍后再次设置或者修改,使用 ALTER USER [\fBalter_user\fR(7)]。
+.TP
+\fBENCRYPTED\fR
+.TP
+\fBUNENCRYPTED\fR
+控制口令在数据库中是否以加密形式存储在系统表中。 (如果两个都没有设置,那么缺省的特性是由配置参数 password_encryption 决定的。) 如果提供的字串已经是 MD5 加密的格式,那么就照原样存储, 不管声明的是 ENCRYPTED 还是 UNENCRYPTED。 这样就允许在转储/恢复的过程中重载加密后的口令。
+
+ 请注意老的客户端可能缺少 MD5 认证机制,我们需要这个认证机制处理存储为密文的口令。
+.TP
+\fBCREATEDB\fR
+.TP
+\fBNOCREATEDB\fR
+这个子句定义用户的创建数据库权限。 如果声明了CREATEDB, 被定义的用户将允许创建其自己的数据库。 而使用NOCREATEDB将否决该用户的创建数据库的能力。 如果忽略本子句,缺省是NOCREATEDB。 
+.TP
+\fBCREATEUSER\fR
+.TP
+\fBNOCREATEUSER\fR
+ 该子句决定一个用户是否能创建一个新的用户。 这个选项同样把此用户变成数据库超级用户,可以跨越所有访问限制。省略这个参数将置用户的这个属性为 NOCREATEUSER。
+.TP
+\fB\fIgroupname\fB\fR
+ 一个组名称,把这个用户设为该组成员。 你可以列出多个组名字。
+.TP
+\fB\fIabstime\fB\fR
+VALID UNTIL (有效期)子句设置一个绝对时间, 过了该时间后用户的口令将不再有效。 如果省略这个子句,登陆将总是有效的。
+.SH "NOTES 注意"
+.PP
+ 使用 ALTER USER [\fBalter_user\fR(7)] 修改用户的口令和权限,DROP USER [\fBdrop_user\fR(7)] 删除一个用户。 使用 ALTER GROUP [\fBalter_group\fR(l)] 从组中增加或删除用户。
+.PP
+PostgreSQL  里有一个程序 createuser [\fBcreateuser\fR(1)] 与CREATE USER 有相同的功能(实际上,它调用这条命令), 但是可以在命令行上运行。
+.SH "EXAMPLES 例子"
+.PP
+ 创建一个没有口令的用户:
+.sp
+.nf
+CREATE USER jonathan;
+.sp
+.fi
+.PP
+ 创建一个有口令的用户:
+.sp
+.nf
+CREATE USER davide WITH PASSWORD 'jw8s0F4';
+.sp
+.fi
+.PP
+ 创建一个有口令的用户,其帐号在 2004 年底失效。 注意当 2005 年走过一秒后,该帐号将不再有效:
+.sp
+.nf
+CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';
+.sp
+.fi
+.PP
+ 创建一个拥有创建数据库权限的用户:
+.sp
+.nf
+CREATE USER manuel WITH PASSWORD 'jw8s0F4' CREATEDB;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBCREATE USER\fR 语句是 PostgreSQL 扩展。 SQL 标准把用户的定义交给具体实现处理。
+.SH "SEE ALSO 参见"
+ALTER USER [\fBalter_user\fR(7)], DROP USER [\fBdrop_user\fR(l)], \fBcreateuser\fR(1)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/create_view.7 b/src/man7/create_view.7
new file mode 100644
index 0000000..c8ab0c1
--- /dev/null
+++ b/src/man7/create_view.7
@@ -0,0 +1,89 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "CREATE VIEW" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+CREATE VIEW \- 定义一个视图
+
+.SH SYNOPSIS
+.sp
+.nf
+CREATE [ OR REPLACE ] VIEW \fIname\fR [ ( \fIcolumn_name\fR [, ...] ) ] AS \fIquery\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBCREATE VIEW\fR 定义一个查询的视图。 这个视图不是物理上实际存在(于磁盘)的。具体的说,自动生成一个改写索引规则(一个 ON SELECT 规则)的查询用以支持在视图上的检索。
+.PP
+\fBCREATE OR REPLACE VIEW\fR 类似,不过是如果一个同名的视图已经存在,那么就替换它。 你只能用一个生成相同字段的新查询替换一个视图(也就是说,同样字段名和数据类型)。
+.PP
+ 如果给出了一个模式名(比如,CREATE VIEW myschema.myview ...),那么该视图是在指定的模式中创建的。 否则它是在当前模式中创建的。 该视图名字必需和同一模式中任何其它视图,表,序列或者索引的名字不同。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 所要创建的视图名称(可以有模式修饰)。
+.TP
+\fB\fIcolumn_name\fB\fR
+ 一个可选的名字列表,用于当作视图的字段名。如果没有给出, 字段名取自查询。
+.TP
+\fB\fIquery\fB\fR
+ 一个将为视图提供行和列的查询(也就是一条 SELECT 语句)。
+
+ 请参阅 SELECT [\fBselect\fR(7)] 获取有效查询的更多信息。
+.SH "NOTES 注意"
+.PP
+ 目前,视图是只读的:系统将不允许在视图上插入,更新,或者删除数据。 你可以通过在视图上创建把插入等动作重写为向其它表做合适操作的规则来实现可更新视图的效果。 更多信息详见
+CREATE RULE [\fBcreate_rule\fR(7)].
+.PP
+ 使用 DROP VIEW 语句删除视图
+.PP
+ 请注意视图字段的名字和类型不一定是你们期望的那样。比如,
+.sp
+.nf
+CREATE VIEW vista AS SELECT 'Hello World';
+.sp
+.fi
+ 在两个方面很糟糕:字段名缺省是 ?column?,并且字段的数据类型缺省是 unknown。 如果你想视图的结果是一个字串文本,那么用类似下面这样的东西
+.sp
+.nf
+CREATE VIEW vista AS SELECT text 'Hello World' AS hello;
+.sp
+.fi
+.PP
+ 对视图引用的表的访问的权限由视图的所有者决定。 不过,在视图里调用的函数当作他们直接从使用视图的查询里调用看待。 因此,视图的用户必须有使用视图调用的所有函数的权限。
+.SH "EXAMPLES 例子"
+.PP
+ 创建一个由所有喜剧电影组成的视图:
+.sp
+.nf
+CREATE VIEW comedies AS
+    SELECT *
+    FROM films
+    WHERE kind = 'Comedy';
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准为 CREATE VIEW 声明了一些附加的功能:
+.sp
+.nf
+CREATE VIEW \fIname\fR [ ( \fIcolumn\fR [, ...] ) ]
+    AS query
+    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
+.sp
+.fi
+.PP
+ 完整的SQL命令可选的子句是:
+.TP
+\fBCHECK OPTION\fR
+ 这个选项用于可更新视图。 所有对视图的INSERT和UPDATE都要经过视图定义条件的校验。 (也就是说,新数据应该可以通过视图看到。)如果没有通过校验,更新将被拒绝。
+.TP
+\fBLOCAL\fR
+ 对这个视图进行完整性检查。
+.TP
+\fBCASCADE\fR
+ 对此视图和任何相关视图进行完整性检查。 在既没有声明 CASCADE 也没有声明 LOCAL 时,假设为 CASCADE。
+.PP
+.PP
+\fBCREATE OR REPLACE VIEW\fR 是 PostgreSQL 的扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/deallocate.7 b/src/man7/deallocate.7
new file mode 100644
index 0000000..9245ae9
--- /dev/null
+++ b/src/man7/deallocate.7
@@ -0,0 +1,29 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DEALLOCATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DEALLOCATE \- 删除一个准备好的查询
+
+.SH SYNOPSIS
+.sp
+.nf
+DEALLOCATE [ PREPARE ] \fIplan_name\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDEALLOCATE\fR 用于删除前面准备好的查询。 如果你没有明确 DEALLOCATE 一个准备好的查询, 那么它在会话结束的时候删除。
+.PP
+ 有关已准备好的查询的更多信息。参阅 PREPARE [\fBprepare\fR(7)].
+.SH "PARAMETERS 参数"
+.TP
+\fBPREPARE\fR
+ 这个关键字被忽略。
+.TP
+\fB\fIplan_name\fB\fR
+ 要删除的已准备查询。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准包括一个 DEALLOCATE 语句,但它只是用于嵌入的 SQL 客户端。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/declare.7 b/src/man7/declare.7
new file mode 100644
index 0000000..8b345a2
--- /dev/null
+++ b/src/man7/declare.7
@@ -0,0 +1,102 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DECLARE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DECLARE \- 定义一个游标
+
+.SH SYNOPSIS
+.sp
+.nf
+DECLARE \fIname\fR [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
+    CURSOR [ { WITH | WITHOUT } HOLD ] FOR \fIquery\fR
+    [ FOR { READ ONLY | UPDATE [ OF \fIcolumn\fR [, ...] ] } ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDECLARE\fR 允许用户创建游标, 用于在一个大的查询里面检索少数几行数据。 使用
+FETCH [\fBfetch\fR(7)],游标可以既可以返回文本也可以返回二进制格式。
+.PP
+ 通常游标返回文本格式,和 SELECT 生成的是一样的。 因为数据在系统内部是用二进制格式存储的, 系统必须对数据做一定转换以生成文本格式。 一旦数据是以文本形式返回,那么客户端应用需要把它们转换成二进制进行操作。 另外,文本格式一般都比对应的二进制格式占的存储空间大。 二进制游标给你返回内部二进制形态的数据。当然,如果你想以文本方式显示数据,那么以文本方式检索会为你节约很多客户端的工作。
+.PP
+ 比如,如果查询从一个整数列返回一个一, 在缺省的游标里你将获得一个字符串 1,而如果是一个二进制游标, 你将得到一个 4-字节的包含该数值内部形式的数值(大端序)。
+.PP
+ 游标应该小心使用二进制游标。一些用户应用如 psql 是不识别二进制游标的, 而且期望返回的数据是文本格式。
+.sp
+.RS
+.B "Note:"
+注意:  如果客户端应用使用"扩展查询"协议发出 FETCH 命令, 那么 Bind 协议声明数据是用文本还是用二进制格式检索。 这个选择覆盖游标的定义。因此,在使用扩展查询协议的时候,二进制游标的概念已经过时了 - 任何游标都可以当作文本或者二进制的格式发出。
+.RE
+.sp
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 将在随后FETCH操作中使用的游标名。
+.TP
+\fBBINARY\fR
+ 令游标以二进制而不是文本格式获取数据。
+.TP
+\fBINSENSITIVE\fR
+ 表明从游标检索出来的数据不应该被其他进程或游标的更新动作影响。 在 PostgreSQL 里,所有游标都是不敏感的,这个关键字没有什么作用,提供它只是为了和 SQL 标准兼容。
+.TP
+\fBSCROLL\fR
+.TP
+\fBNO SCROLL\fR
+SCROLL 声明该游标可以用于以非顺序的方式检索数据行(也就是向后检索)。 根据查询的执行计划的不同,声明 SCROLL 可能会对查询的执行时间附加一定的影响。 NO SCROLL 声明该游标不能用于以非顺序的方式检索数据行(也就是向后检索)。
+.TP
+\fBWITH HOLD\fR
+.TP
+\fBWITHOUT HOLD\fR
+WITH HOLD 声明该游标可以在创建它的事务成功提交后继续使用。 WITHOUT HOLD 声明该游标不能在创建它的的事务提交后使用。如果既没有声明 WITHOUT HOLD,也没有声明 WITH HOLD, 那么缺省是 WITH HOLD。
+.TP
+\fB\fIquery\fB\fR
+ 一个SELECT查询,它提供由游标返回的行。 请参考 SELECT 语句获取有关有效查询的详细信息。
+.TP
+\fBFOR READ ONLY\fR
+.TP
+\fBFOR UPDATE\fR
+FOR READ ONLY 表明游标将用于只读模式。 FOR UPDATE 表明游标将被用于更新表。 因为目前 PostgreSQL 不支持游标更新, 所以声明 FOR UPDATE 将产生一个错误信息。而声明 FOR READ ONLY 没有作用。
+.TP
+\fB\fIcolumn\fB\fR
+ 将被更新的列。因为游标更新目前不被 PostgreSQL 支持, 所以 FOR UPDATE 子句将产生一个错误信息。
+.PP
+BINARY,INSENSITIVE,SCROLL 关键字可以以任何顺序出现。
+.PP
+.SH "NOTES 注意"
+.PP
+ 如果没有声明 WITH HOLD,那么这个命令创建的游标只能在当前事务中使用。
+Thus, \fBDECLARE\fR without WITH
+HOLD is useless outside a transaction block: the cursor would
+survive only to the completion of the statement. Therefore
+PostgreSQL reports an error if this
+command is used outside a transaction block.
+使用
+BEGIN [\fBbegin\fR(7)],
+COMMIT [\fBcommit\fR(7)]
+和
+ROLLBACK [\fBrollback\fR(7)]
+定义一个事务块。
+.PP
+ 如果声明了 WITH HOLD,并且创建该游标的事务成功提交, 那么游标还可以在同一会话随后的事务里访问。(但如果创建它的事务回滚,那么游标被删除。) 带着 WITH HOLD 创建的游标是用一个明确的 CLOSE 命令,或者是会话终止来关闭的。 在目前的实现里,由一个游标代表的行是被拷贝到一个临时文件或者内存区里的,这样他们就仍然可以在随后的事务中被访问。
+.PP
+ 在定义一个要用来向后抓取的游标的时候,我们应该声明 SCROLL 选项。 这个是 SQL 标准要求的。不过,为了和早期的版本兼容, PostgreSQL 在没有 SCROLL 的时候也允许向后抓取, 只要游标的查询计划简单得不需要额外的开销就可以支持它。 不过,我们建议应用开发人员不要依赖于使用没有带着 SCROLL  定义的游标的后向查找功能。如果声明了 NO SCROLL,那么不管怎样都会禁止向后抓取的功能。
+.PP
+ 在 SQL 标准中游标只能在嵌入 SQL (ESQL) 的应用中使用。 PostgreSQL 服务器没有一个明确的 OPEN  语句;一个游标被认为在定义时就已经打开了。 不过,PostgreSQL嵌入的 SQL 预编译器, ecpg, 支持 SQL92 习惯,包括那些和DECLARE和OPEN相关的语句。
+.SH "EXAMPLES 例子"
+.PP
+ 定义一个游标:
+.sp
+.nf
+DECLARE liahona CURSOR FOR SELECT * FROM films;
+.sp
+.fi
+ 参阅 FETCH [\fBfetch\fR(7)] 获取有关 游标使用的更多例子。
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准只允许在嵌入的 SQL 中和模块中使用游标。 PostgreSQL 允许交互地使用游标。
+.PP
+SQL 标准允许游标更新表数据。 所有 PostgreSQL 的游标都是只读的。
+.PP
+ 二进制游标是 PostgreSQL 扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/delete.7 b/src/man7/delete.7
new file mode 100644
index 0000000..d26084d
--- /dev/null
+++ b/src/man7/delete.7
@@ -0,0 +1,61 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DELETE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DELETE \- 删除一个表中的行
+
+.SH SYNOPSIS
+.sp
+.nf
+DELETE FROM [ ONLY ] \fItable\fR [ WHERE \fIcondition\fR ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDELETE\fR 从指明的表里删除满足 WHERE 子句的行。 如果 WHERE 子句不存在, 效果是删除表中所有行。结果是一个有效的空表。
+.sp
+.RS
+.B "Tip:"
+提示: TRUNCATE [\fBtruncate\fR(7)] 是一个 PostgreSQL 扩展, 它提供一个更快的从表中删除所有行的机制。
+.RE
+.sp
+.PP
+ 缺省时 DELETE 将删除所声明的表和所有它的子表的记录。 如果你希望只更新提到的表,你应该使用 ONLY 子句。
+.PP
+ 要对表进行删除,你必须对它有 DELETE 权限,同样也必须有 SELECT 的权限,这样才能对符合 condition  的值进行读取操作。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fItable\fB\fR
+ 一个现存表的名字(可以有模式修饰)。
+.TP
+\fB\fIcondition\fB\fR
+ 一个返回 boolean 类型值的值表达式,它判断哪些行需要被删除。
+.SH "OUTPUTS 输出"
+.PP
+ 成功时,DELETE 命令返回形如
+.sp
+.nf
+DELETE \fIcount\fR
+.sp
+.fi
+ 的标签。 count 是被删除的行数。 如果 count 为 0,没有行匹配 condition (这个不认为是错误)。
+.SH "EXAMPLES 例子"
+.PP
+ 删除所有电影(films)但不删除音乐(musicals):
+.sp
+.nf
+DELETE FROM films WHERE kind <> 'Musical';
+.sp
+.fi
+.PP
+ 清空表 films:
+.sp
+.nf
+DELETE FROM films;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令遵循 SQL 标准。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_aggregate.7 b/src/man7/drop_aggregate.7
new file mode 100644
index 0000000..fd93312
--- /dev/null
+++ b/src/man7/drop_aggregate.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP AGGREGATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP AGGREGATE \- 删除一个用户定义的聚集函数
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP AGGREGATE \fIname\fR ( \fItype\fR ) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP AGGREGATE\fR 将删除一个现存聚集函数。 执行这条命令的用户必须是该聚集函数的所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 现存的聚集函数名(可以有模式修饰)。
+.TP
+\fB\fItype\fB\fR
+ 聚集函数的输入数据类型,或者 * ,如果这个聚集函数接受任意输入类型。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于这个聚集的对象。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象,则拒绝删除这个聚集。这是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 将类型 integer 的聚集函数 myavg 删除:
+.sp
+.nf
+DROP AGGREGATE myavg(integer);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准中没有 DROP AGGREGATE 语句。
+.SH "SEE ALSO 参见"
+ALTER AGGREGATE [\fBalter_aggregate\fR(7)], CREATE AGGREGATE [\fBcreate_aggregate\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_cast.7 b/src/man7/drop_cast.7
new file mode 100644
index 0000000..5c08d89
--- /dev/null
+++ b/src/man7/drop_cast.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP CAST" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP CAST \- 删除一个用户定义的类型转换
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP CAST (\fIsourcetype\fR AS \fItargettype\fR) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP CAST\fR  删除一个前面定义的类型转换。
+.PP
+ 要能删除一个类型转换,你必须拥有源或者目的数据类型。 这是和创建一个类型转换相同的权限。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIsourcetype\fB\fR
+ 类型转换里的源数据类型。
+.TP
+\fB\fItargettype\fB\fR
+ 类型转换里的目的数据类型。
+.TP
+\fBCASCADE\fR
+.TP
+\fBRESTRICT\fR
+ 这些键字没有任何效果,因为在类型转换上没有依赖关系。
+.SH "EXAMPLES 例子"
+.PP
+ 删除从 text 到 int 的转换:
+.sp
+.nf
+DROP CAST (text AS int);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBDROP CAST\fR 遵循 SQL 标准。
+.SH "SEE ALSO 参见"
+CREATE CAST [\fBcreate_cast\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_conversion.7 b/src/man7/drop_conversion.7
new file mode 100644
index 0000000..0452c08
--- /dev/null
+++ b/src/man7/drop_conversion.7
@@ -0,0 +1,40 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP CONVERSION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP CONVERSION \- 删除一个用户定义的编码转换
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP CONVERSION \fIname\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP CONVERSION\fR 删除一个以前定义的编码转换。 要想删除一个转换,你必须拥有该转换。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 编码转换的名字。这个名字可以用模式修饰。
+.TP
+\fBCASCADE\fR
+.TP
+\fBRESTRICT\fR
+ 这些键字没有作用,因为编码转换上没有依赖关系。
+.SH "EXAMPLES 例子"
+.PP
+ 删除一个叫做 myname 的编码转换:
+.sp
+.nf
+DROP CONVERSION myname;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 DROP CONVERSION。
+.SH "SEE ALSO 参见"
+ALTER CONVERSION [\fBalter_conversion\fR(7)], CREATE CONVERSION [\fBcreate_conversion\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_database.7 b/src/man7/drop_database.7
new file mode 100644
index 0000000..7f10970
--- /dev/null
+++ b/src/man7/drop_database.7
@@ -0,0 +1,35 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP DATABASE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP DATABASE \- 删除一个数据库
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP DATABASE \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP DATABASE\fR 删除一个现存数据库的目录入口并且删除包含数据的目录。 只有数据库所有者能够执行这条命令(通常也是数据库创建者)。
+.PP
+\fBDROP DATABASE\fR 不能撤销,小心使用!
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要被删除的现有数据库名。
+.SH "NOTES 注意"
+.PP
+\fBDROP DATABASE\fR cannot be executed inside a transaction
+block.
+.PP
+ 这条命令在和目标数据库联接时不能执行。 通常更好的做法是用 dropdb[\fBdropdb\fR(1)] 程序代替,该程序是此命令的一个封装。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准中没有 DROP DATABASE 语句。
+.SH "SEE ALSO 参见"
+CREATE DATABASE [\fBcreate_database\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_domain.7 b/src/man7/drop_domain.7
new file mode 100644
index 0000000..a8f846c
--- /dev/null
+++ b/src/man7/drop_domain.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP DOMAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP DOMAIN \- 删除一个用户定义的域
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP DOMAIN \fIname\fR [, ...]  [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP DOMAIN\fR 将从系统表中删除一个用户域。 只有域的所有者才能删除它。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现有的域(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除倚赖域的对象。(比如,表字段)。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象存在,则拒绝删除此域。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 删除 box 域∶
+.sp
+.nf
+DROP DOMAIN box;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令遵循 SQL 标准。
+.SH "SEE ALSO 参见"
+CREATE DOMAIN [\fBcreate_domain\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_function.7 b/src/man7/drop_function.7
new file mode 100644
index 0000000..7bf8800
--- /dev/null
+++ b/src/man7/drop_function.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP FUNCTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP FUNCTION \- 删除一个函数
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP FUNCTION \fIname\fR ( [ \fItype\fR [, ...] ] ) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP FUNCTION\fR 将删除一个现存的函数的引用。 要执行这条命令,用户必须是函数的所有者。 必须声明函数的参数类型,因为几个不同的函数可能会有同样的名字和不同的参数列表。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 现存的函数名称(可以有模式修饰)。
+.TP
+\fB\fItype\fB\fR
+ 函数参数的类型。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于函数的对象(比如操作符或触发器)。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象存在,则拒绝删除该函数。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 这条命令删除平方根函数:
+.sp
+.nf
+DROP FUNCTION sqrt(integer);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里定义了一个 DROP FUNCTION 语句。 但和这条命令不兼容。
+.SH "SEE ALSO 参见"
+CREATE FUNCTION [\fBcreate_function\fR(7)], ALTER FUNCTION [\fBalter_function\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_group.7 b/src/man7/drop_group.7
new file mode 100644
index 0000000..2df7538
--- /dev/null
+++ b/src/man7/drop_group.7
@@ -0,0 +1,35 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP GROUP" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP GROUP \- 删除一个用户组
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP GROUP \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP GROUP\fR 从数据库中删除指定的组。组中的用户不被删除。 组中的用户不被删除。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 现存组名。
+.SH "EXAMPLES 例子"
+.PP
+ 删除一个组:
+.sp
+.nf
+DROP GROUP staff;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 DROP GROUP。
+.SH "SEE ALSO 参见"
+ALTER GROUP [\fBalter_group\fR(7)], CREATE GROUP [\fBcreate_group\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_index.7 b/src/man7/drop_index.7
new file mode 100644
index 0000000..e6d206d
--- /dev/null
+++ b/src/man7/drop_index.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP INDEX" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP INDEX \- 删除一个索引
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP INDEX \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP INDEX\fR 从数据库中删除一个现存的索引。 要执行这个命令,你必须是索引的所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要删除的索引名(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于该索引的对象。
+.TP
+\fBRESTRICT\fR
+ 如果有依赖对象存在,则拒绝删除该索引。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 此命令将删除title_idx 索引:
+.sp
+.nf
+DROP INDEX title_idx;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBDROP INDEX\fR 是 PostgreSQL 语言扩展。 在 SQL 标准里没有索引的规定。
+.SH "SEE ALSO 参见"
+CREATE INDEX [\fBcreate_index\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_language.7 b/src/man7/drop_language.7
new file mode 100644
index 0000000..85efe9e
--- /dev/null
+++ b/src/man7/drop_language.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP LANGUAGE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP LANGUAGE \- 删除一个过程语言
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP [ PROCEDURAL ] LANGUAGE \fIname\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP LANGUAGE\fR 将删除曾注册过的过程语言 name。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 现存语言的名称。出于向下兼容的考虑,这个名字可以用单引号包围。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于改语言的对象(比如该语言写的函数)。
+.TP
+\fBRESTRICT\fR
+ 如果存在依赖对象,则拒绝删除。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 下面命令删除 plsample 语言:
+.sp
+.nf
+DROP LANGUAGE plsample;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 DROP PROCEDURAL LANGUAGE。
+.SH "SEE ALSO 参见"
+ALTER LANGUAGE [\fBalter_language\fR(7)], CREATE LANGUAGE [\fBcreate_language\fR(l)], \fBdroplang\fR(1)
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_operator.7 b/src/man7/drop_operator.7
new file mode 100644
index 0000000..41b9a29
--- /dev/null
+++ b/src/man7/drop_operator.7
@@ -0,0 +1,62 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP OPERATOR" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP OPERATOR \- 删除一个操作符
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP OPERATOR \fIname\fR ( \fIlefttype\fR | NONE , \fIrighttype\fR | NONE ) [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP OPERATOR\fR 语句从数据库中删除一个现存的操作符。 要执行这个命令,你必须是操作符所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现存的操作符的名字(可以有模式修饰)。
+.TP
+\fB\fIlefttype\fB\fR
+ 该操作符左参数的类型。如果该操作符没有左参数, 写 NONE。
+.TP
+\fB\fIrighttype\fB\fR
+ 该操作符右参数的类型。如果该操作符没有右参数, 写 NONE。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于此操作符的对象。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象则拒绝删除此操作符。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 将用于integer的幂操作符 a^n 删除:
+.sp
+.nf
+DROP OPERATOR ^ (integer, integer);
+.sp
+.fi
+.PP
+ 为类型 bit 删除左单目位操作符 ~b:
+~b for type \fBbit\fR:
+.sp
+.nf
+DROP OPERATOR ~ (none, bit);
+.sp
+.fi
+.PP
+ 删除用于 integer 的阶乘 (x!) :
+.sp
+.nf
+DROP OPERATOR ! (integer, none);
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 DROP OPERATOR 语句。
+.SH "SEE ALSO 参见"
+CREATE OPERATOR [\fBcreate_operator\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_operator_class.7 b/src/man7/drop_operator_class.7
new file mode 100644
index 0000000..4d7a502
--- /dev/null
+++ b/src/man7/drop_operator_class.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP OPERATOR CLASS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP OPERATOR CLASS \- 删除一个操作符类
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP OPERATOR CLASS \fIname\fR USING \fIindex_method\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP OPERATOR CLASS\fR 从数据库中删除一个现有操作符表。要执行这条命令,你必须是此操作符表的所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现存操作符表的名字(可以用模式修饰)。
+.TP
+\fB\fIindex_method\fB\fR
+ 操作符表所对付的索引访问方法的名字。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于该操作符表的对象。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象存在,则拒绝删除此操作符表。这个行为是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 删除 B-tree 操作符表 widget_ops:
+.sp
+.nf
+DROP OPERATOR CLASS widget_ops USING btree;
+.sp
+.fi
+ 如果有任何现存的索引使用这个操作符表,那么这条命令将不能 执行。增加一个 CASCADE 删除这样的索引以及这个 操作符表。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 DROP OPERATOR CLASS。
+.SH "SEE ALSO 参见"
+ALTER OPERATOR CLASS [\fBalter_operator_class\fR(7)], CREATE OPERATOR CLASS [\fBcreate_operator_class\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_rule.7 b/src/man7/drop_rule.7
new file mode 100644
index 0000000..6c8ccef
--- /dev/null
+++ b/src/man7/drop_rule.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP RULE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP RULE \- 删除一个重写规则
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP RULE \fIname\fR ON \fIrelation\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP RULE\fR 删除一个规则。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要删除的现存的规则。
+.TP
+\fB\fIrelation\fB\fR
+ 该规则应用的关系名字(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于此规则的对象。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象,则拒绝删除此规则。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 删除重写规则 newrule:
+.sp
+.nf
+DROP RULE newrule ON mytable;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准中没有DROP RULE。
+.SH "SEE ALSO 参见"
+CREATE RULE [\fBcreate_rule\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_schema.7 b/src/man7/drop_schema.7
new file mode 100644
index 0000000..20b1cba
--- /dev/null
+++ b/src/man7/drop_schema.7
@@ -0,0 +1,43 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP SCHEMA" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP SCHEMA \- 删除一个模式
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP SCHEMA \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP SCHEMA\fR 从数据库中删除模式。
+.PP
+ 模式只能被它的所有者或者超级用户删除。请注意, 所有者即使没有拥有模式中任何对象也可以删除模式(以及模式中的所有对象)。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 模式的名字。
+.TP
+\fBCASCADE\fR
+ 自动删除包含在模式中的对象(表,函数,等等)。
+.TP
+\fBRESTRICT\fR
+ 如果模式包含任何对象,则拒绝删除它。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 从数据库中删除模式 mystuff,以及它包含的所有东西:
+.sp
+.nf
+DROP SCHEMA mystuff CASCADE;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBDROP SCHEMA\fR 和 SQL 标准完全兼容, 只不过标准只允许一条命令删除一个模式。
+.SH "SEE ALSO 参见"
+ALTER SCHEMA [\fBalter_schema\fR(7)], CREATE SCHEMA [\fBcreate_schema\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_sequence.7 b/src/man7/drop_sequence.7
new file mode 100644
index 0000000..7d1bcbb
--- /dev/null
+++ b/src/man7/drop_sequence.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP SEQUENCE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP SEQUENCE \- 删除一个序列
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP SEQUENCE \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP SEQUENCE\fR 从数据库中删除序列号生成器。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 序列名(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖序列的对象。
+.TP
+\fBRESTRICT\fR
+ 如果存在任何依赖的对象,则拒绝删除序列。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 从数据库中删除序列 serial:
+.sp
+.nf
+DROP SEQUENCE serial;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 DROP SEQUENCE。
+.SH "SEE ALSO 参见"
+CREATE SEQUENCE [\fBcreate_sequence\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_table.7 b/src/man7/drop_table.7
new file mode 100644
index 0000000..d50d1e9
--- /dev/null
+++ b/src/man7/drop_table.7
@@ -0,0 +1,43 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP TABLE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP TABLE \- 删除一个表
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP TABLE \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP TABLE\fR 从数据库中删除表或视图。 只有其所有者才能删除一个表或视图。要清空一个表,而不删除表, 使用 DELETE。
+.PP
+\fBDROP TABLE\fR 总是删除目标表上现有的任何索引, 规则,触发器以及约束。但是,要删除一个由另外一个表用外键约束引用的表, 我们必须声明 CASCADE。(CASCADE 将删除外键约束,而不是另外一个表。)
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要删除的现存表的名字(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖于表的对象。(比如视图)。
+.TP
+\fBRESTRICT\fR
+ 如果存在依赖对象,则拒绝删除该表。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 删除 films 和 distributors表:
+.sp
+.nf
+DROP TABLE films, distributors;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 此命令遵循 SQL 标准。
+.SH "SEE ALSO 参见"
+ALTER TABLE [\fBalter_table\fR(7)], CREATE TABLE [\fBcreate_table\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_trigger.7 b/src/man7/drop_trigger.7
new file mode 100644
index 0000000..d3c7dc1
--- /dev/null
+++ b/src/man7/drop_trigger.7
@@ -0,0 +1,44 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP TRIGGER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP TRIGGER \- 删除一个触发器定义
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP TRIGGER \fIname\fR ON \fItable\fR [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP TRIGGER\fR 将删除所有对一个现存触发器的引用。 要执行这个命令,当前用户必须是触发器的所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要删除的触发器名。
+.TP
+\fB\fItable\fB\fR
+ 触发器定义所在的表的名称(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖此触发器的对象。
+.TP
+\fBRESTRICT\fR
+ 如果有任何依赖对象存在,那么拒绝删除。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 删除表films的if_dist_exists触发器:
+.sp
+.nf
+DROP TRIGGER if_dist_exists ON films;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+PostgreSQL 里的 DROP TRIGGER  语句和 SQL 标准不兼容。在 SQL 标准里,触发器名字不是表所局部拥有的,所以命令只是简单的 DROP TRIGGER name。
+.SH "SEE ALSO 参见"
+CREATE TRIGGER [\fBcreate_trigger\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_type.7 b/src/man7/drop_type.7
new file mode 100644
index 0000000..87d9270
--- /dev/null
+++ b/src/man7/drop_type.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP TYPE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP TYPE \- 删除一个用户定义数据类型
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP TYPE \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP TYPE\fR 将从系统表里删除用户定义的类型。 只有类型所有者可以删除类型。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要删除的类型名(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖该类型的对象(比如表字段,函数,操作符等等)。
+.TP
+\fBRESTRICT\fR
+ 如果有依赖对象,则拒绝删除该类型。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 删除 box 类型:
+.sp
+.nf
+DROP TYPE box;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令类似于 SQL 标准里对应的命令,但是要注意,PostgreSQL  里的 CREATE TYPE 命令和数据类型扩展机制是和 SQL 标准里不同的。
+.SH "SEE ALSO 参见"
+CREATE TYPE [\fBcreate_type\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_user.7 b/src/man7/drop_user.7
new file mode 100644
index 0000000..24e98e6
--- /dev/null
+++ b/src/man7/drop_user.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP USER" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP USER \- 删除一个数据库用户帐号
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP USER \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP USER\fR 从数据库中删除指定的用户。 它不删除数据库里此用户所有的表,视图或其他对象。 如果该用户拥有任何数据库,你会收到一个错误信息。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 一个现存用户的名称。
+.SH "NOTES 注意"
+.PP
+PostgreSQL  还有一个程序 dropuser [\fBdropuser\fR(1)] , 这个程序和这条命令功能相同(实际上,程序里调用此命令), 但是可以在命令行上运行。
+.PP
+To drop a user who owns a database, first drop the database or change
+its ownership.
+.SH "EXAMPLES 例子"
+.PP
+ 删除一个用户帐户:
+.sp
+.nf
+DROP USER jonathan;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBDROP USER\fR 语句是一个 PostgreSQL 的扩展。SQL 标准把用户的定义交给具体实现处理。
+.SH "SEE ALSO 参见"
+ALTER USER [\fBalter_user\fR(7)], CREATE USER [\fBcreate_user\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/drop_view.7 b/src/man7/drop_view.7
new file mode 100644
index 0000000..e84d5ea
--- /dev/null
+++ b/src/man7/drop_view.7
@@ -0,0 +1,41 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "DROP VIEW" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+DROP VIEW \- 删除一个视图
+
+.SH SYNOPSIS
+.sp
+.nf
+DROP VIEW \fIname\fR [, ...] [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBDROP VIEW\fR 从数据库中删除一个现存的视图。 执行这条命令必须是视图的所有者。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要删除的视图名称(可以有模式修饰)。
+.TP
+\fBCASCADE\fR
+ 自动删除依赖此视图的对象(比如其它视图)。
+.TP
+\fBRESTRICT\fR
+ 如果有依赖对象存在,则拒绝删除此视图。这个是缺省。
+.SH "EXAMPLES 例子"
+.PP
+ 下面命令将删除视图 kinds:
+.sp
+.nf
+DROP VIEW kinds;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令遵循 SQL 标准。
+.SH "SEE ALSO 参见"
+CREATE VIEW [\fBcreate_view\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/end.7 b/src/man7/end.7
new file mode 100644
index 0000000..dc9a274
--- /dev/null
+++ b/src/man7/end.7
@@ -0,0 +1,42 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "END" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+END \- 提交当前的事务
+
+.SH SYNOPSIS
+.sp
+.nf
+END [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBEND\fR END 提交当前事务。 所有当前事务做的修改都可被其它事务看到并且保证在发生崩溃的情况下的持续性。 它是一个 PostgreSQL 的扩展,等效于 COMMIT [\fBcommit\fR(7)].
+.SH "PARAMETERS 参数"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+ 可选关键字。没有作用。
+.SH "NOTES 注意"
+.PP
+ 用 ROLLBACK [\fBrollback\fR(7)] 退出事务。
+.PP
+ 如果不在一个事务块里发出 END 将不会有什么损害,但是它会生成一个警告信息。
+.SH "EXAMPLES 例子"
+.PP
+ 提交当前事务,令所有改变生效:
+.sp
+.nf
+END;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBEND\fR 是 PostgreSQL  的扩展,提供与 COMMIT [\fBcommit\fR(7)] 相同的功能, 后者是 SQL 标准声明的语句。
+.SH "SEE ALSO 参见"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)], ROLLBACK [\fBrollback\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/execute.7 b/src/man7/execute.7
new file mode 100644
index 0000000..22572c2
--- /dev/null
+++ b/src/man7/execute.7
@@ -0,0 +1,31 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "EXECUTE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+EXECUTE \- 执行一个准备好的查询
+
+.SH SYNOPSIS
+.sp
+.nf
+EXECUTE \fIplan_name\fR [ (\fIparameter\fR [, ...] ) ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBEXECUTE\fR 用于执行一个前面准备好的语句。 因为一个准备好的查询只在会话的生命期里存在,那么准备好的查询必须是在当前会话的前些时候用 PREPARE  语句执行的。
+.PP
+ 如果创建语句的 PREPARE 语句声明了一些参数, 那么传递给 EXECUTE 语句的必须是一个兼容的参数集, 否则就会生成一个错误。请注意(和函数不同),准备好的语句不会基于参数的类型或者个数重载: 在一次数据库会话过程中,准备好的语句的名字必须是唯一的。
+.PP
+ 有关创建和使用准备好的语句的更多信息, 请参阅 PREPARE [\fBprepare\fR(7)].
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIplan_name\fB\fR
+ 要执行的准备好的语句。
+.TP
+\fB\fIparameter\fB\fR
+ 给准备好的语句的一个参数的具体数值。 它必须是一个生成与创建这个准备好的语句的 PREPARE 语句指定参数位置的参数相兼容的数据类型的表达式。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准包括一个 EXECUTE 语句, 但它只是用于嵌入的 SQL 客户端。PostgreSQL  实现的 EXECUTE 的语法也略微不同。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/explain.7 b/src/man7/explain.7
new file mode 100644
index 0000000..6344389
--- /dev/null
+++ b/src/man7/explain.7
@@ -0,0 +1,117 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "EXPLAIN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+EXPLAIN \- 显示语句执行规划
+
+.SH SYNOPSIS
+.sp
+.nf
+EXPLAIN [ ANALYZE ] [ VERBOSE ] \fIstatement\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+ 这条命令显示PostgreSQL规划器为所提供的语句生成的执行规划。 执行规划显示语句引用的表是如何被扫描的--- 是简单的顺序扫描,还是索引扫描等 --- 并且如果引用了多个表, 采用了什么样的连接算法从每个输入的表中取出所需要的记录。
+.PP
+ 显示出来的最关键的部分是预计的语句执行开销, 这就是规划器对运行该语句所需时间的估计(以磁盘页面存取为单位计量)。 实际上显示了两个数字:返回第一行记录前的启动时间, 和返回所有记录的总时间。对于大多数查询而言,关心的是总时间,但是, 在某些环境下,比如一个 EXISTS 子查询里, 规划器将选择最小启动时间而不是最小总时间(因为执行器在获取一条记录后总是要停下来)。 同样,如果你用一条 LIMIT 子句限制返回的记录数, 规划器会在最终的开销上做一个合理的插值以计算哪个规划开销最省。
+.PP
+ANALYZE 选项导致查询被实际执行,而不仅仅是规划。 它在显示中增加了在每个规划节点内部花掉的总时间(以毫秒计)和它实际返回的行数。 这些数据对搜索该规划器的预期是否和现实相近很有帮助。
+.sp
+.RS
+.B "Important:"
+ 要记住的是查询实际上在使用 ANALYZE 的时候是执行的。 尽管 EXPLAIN 会抛弃任何 SELECT 会返回的输出, 但是其它查询的副作用还是一样会发生的。 如果你在 INSERT,UPDATE,DELETE,或者 EXECUTE 语句里使用 EXPLAIN ANALYZE,而且还不想让查询影响你的数据, 用下面的方法:
+.sp
+.nf
+BEGIN;
+EXPLAIN ANALYZE ...;
+ROLLBACK;
+.sp
+.fi
+.RE
+.sp
+.SH "PARAMETERS 参数"
+.TP
+\fBANALYZE\fR
+ 执行命令并显示实际运行时间。
+.TP
+\fBVERBOSE\fR
+ 显示规划树完整的内部表现形式,而不仅仅是一个摘要。通常,这个选项只是在调试 PostgreSQL 的时候有用。 VERBOSE 输出可能是打印得工整的,也可能不是, 具体取决于配置参数 explain_pretty_print。
+.TP
+\fB\fIstatement\fB\fR
+ 任何 \fBSELECT\fR, \fBINSERT\fR, \fBUPDATE\fR,
+\fBDELETE\fR, \fBEXECUTE\fR, 或 \fBDECLARE\fR
+语句。
+.SH "NOTES 注意"
+.PP
+ 在 PostgreSQL 里只有很少的一些文档介绍有关优化器计算开销的问题。参考 Section 13.1 ``Using \fBEXPLAIN\fR'' 获取更多信息。
+.PP
+ 为了让 PostgreSQL 查询规划器在优化查询的时候做出合理的判断, 我们需要运行 ANALYZE 语句以记录有关数据在表中的分布的统计信息。 如果你没做过这件事情(或者如果自上次 ANALYZE 以来, 表中的数据统计分布发生了显著变化),那么计算出来的开销预计很可能与查询的实际属性并不对应, 因此很可能会选取一个比较差的查询规划。
+.PP
+ 在 PostgreSQL 7.3 以前,查询规划是以 NOTICE 消息的形式发出来的。 现在它的显示格式是一个查询结果(格式化成了类似一个有单个文本字段的表。)
+.SH "EXAMPLES 例子"
+.PP
+ 显示一个对只有一个 int4 列和 10000 行的表的简单查询的查询规划:
+.sp
+.nf
+EXPLAIN SELECT * FROM foo;
+
+                       QUERY PLAN
+---------------------------------------------------------
+ Seq Scan on foo  (cost=0.00..155.00 rows=10000 width=4)
+(1 row)
+.sp
+.fi
+.PP
+ 如果存在一个索引,并且我们使用一个可应用索引的 WHERE 条件的查询, EXPLAIN 会显示不同的规划:
+.sp
+.nf
+EXPLAIN SELECT * FROM foo WHERE i = 4;
+
+                         QUERY PLAN
+--------------------------------------------------------------
+ Index Scan using fi on foo  (cost=0.00..5.98 rows=1 width=4)
+   Index Cond: (i = 4)
+(2 rows)
+.sp
+.fi
+.PP
+ 下面是一个使用了聚集函数的查询的查询规划:
+.sp
+.nf
+EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;
+
+                             QUERY PLAN
+---------------------------------------------------------------------
+ Aggregate  (cost=23.93..23.93 rows=1 width=4)
+   ->  Index Scan using fi on foo  (cost=0.00..23.92 rows=6 width=4)
+         Index Cond: (i < 10)
+(3 rows)
+.sp
+.fi
+.PP
+ 下面是一个使用 EXPLAIN EXECUTE 显示一个已准备好的查询规划的例子:
+.sp
+.nf
+PREPARE query(int, int) AS SELECT sum(bar) FROM test
+    WHERE id > $1 AND id < $2
+    GROUP BY foo;
+
+EXPLAIN ANALYZE EXECUTE query(100, 200);
+
+                                                       QUERY PLAN                                                        
+-------------------------------------------------------------------------------------------------------------------------
+ HashAggregate  (cost=39.53..39.53 rows=1 width=8) (actual time=0.661..0.672 rows=7 loops=1)
+   ->  Index Scan using test_pkey on test  (cost=0.00..32.97 rows=1311 width=8) (actual time=0.050..0.395 rows=99 loops=1)
+         Index Cond: ((id > $1) AND (id < $2))
+ Total runtime: 0.851 ms
+(4 rows)
+.sp
+.fi
+.PP
+ 注意这里显示的数字, 甚至还有选择的查询策略都有可能在各个 PostgreSQL版本之间不同--因为规划器在不断改进。 另外,ANALYZE 命令使用随机的采样来估计数据统计; 因此,一次新的 ANALYZE 运行之后开销估计可能会变化, 即使数据的实际分布没有改变也这样。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准中没有EXPLAIN 语句。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/fetch.7 b/src/man7/fetch.7
new file mode 100644
index 0000000..b69077f
--- /dev/null
+++ b/src/man7/fetch.7
@@ -0,0 +1,159 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "FETCH" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+FETCH \- 用游标从查询中抓取行
+
+.SH SYNOPSIS
+.sp
+.nf
+FETCH [ \fIdirection\fR { FROM | IN } ] \fIcursorname\fR
+
+where \fIdirection\fR can be empty or one of:
+
+    NEXT
+    PRIOR
+    FIRST
+    LAST
+    ABSOLUTE \fIcount\fR
+    RELATIVE \fIcount\fR
+    \fIcount\fR
+    ALL
+    FORWARD
+    FORWARD \fIcount\fR
+    FORWARD ALL
+    BACKWARD
+    BACKWARD \fIcount\fR
+    BACKWARD ALL
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBFETCH\fR 使用游标检索行。
+.PP
+ 一个游标有一个由 FETCH 使用的相关联的位置。 游标得位置可以在查询结果的第一行之前,或者在结果中的任意行, 或者在结果的最后一行之后。在创建完之后,游标是放在第一行之前的。 在抓取了一些行之后,游标放在检索到的最后一行上。如果 FETCH  抓完了所有可用行,那么它就停在最后一行后面,或者在向前抓去的情况下是停在第一行前面。 FETCH ALL 或者 FETCH BACKWARD ALL  将总是把游标的位置放在最后一行或者在第一行前面。
+.PP
+NEXT, PRIOR, FIRST,
+LAST, ABSOLUTE, RELATIVE 形式在恰当地 移动游标之后抓取一个行。如果没有数据行了,那么返回一个空的结果, 那么游标就会停在查询结果的最后一行之后或者在第一行之前。
+.PP
+FORWARD 和 BACKWARD 形式在向前或者向后移动的过程中抓取指定的行数, 然后把游标定位在最后返回的行上(或者是,如果 count  大于可用的行数,在所有行之前或之后。)
+.PP
+RELATIVE 0,FORWARD 0,和 BACKWARD 0  都要求在不移动游标的前提下抓取当前行---也就是重新抓取最近刚刚抓取过的行。 除非游标定位在第一行之前或者最后一行之后,这个动作都应该成功,而在那两种情况下,不返回任何行。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIdirection\fB\fR
+\fIdirection\fR 定义抓取的方向和抓取的行数。它可以是下述之一:
+.RS
+.TP
+\fBNEXT\fR
+ 抓取下一行。 direction  省略时这是缺省值。
+.TP
+\fBPRIOR\fR
+ 抓取前面一行。
+.TP
+\fBFIRST\fR
+ 抓取查询的第一行(和 ABSOLUTE 1 相同)。
+.TP
+\fBLAST\fR
+ 抓取查询的最后一行(和 ABSOLUTE -1 相同)。
+.TP
+\fBABSOLUTE \fIcount\fB\fR
+ 抓取查询中第 count 行, 或者,如果 count < 0, 从查询结果末尾抓取第abs(count)行。 如果count 超出了范围,那么定位在第一行之前和最后一行之后的位置; 特别是 ABSOLUTE 0 定位在第一行之前。
+.TP
+\fBRELATIVE \fIcount\fB\fR
+抓取随后的第 count 行, 或者,如果 count < 0 的时候, 抓取前面的第 abs(count) 行。 如果有数据的话,RELATIVE 0 重新抓取当前行。
+.TP
+\fB\fIcount\fB\fR
+ 抓取下面的 count 行 (和 FORWARD count 一样)。
+.TP
+\fBALL\fR
+ 抓取所有剩余的行(和 FORWARD ALL 一样)。
+.TP
+\fBFORWARD\fR
+ 抓取下面一行(和 NEXT)一样。
+.TP
+\fBFORWARD \fIcount\fB\fR
+ 抓取下面 count 行。 FORWARD 0 重新抓取当前行。
+.TP
+\fBFORWARD ALL\fR
+ 抓取所有剩余行。
+.TP
+\fBBACKWARD\fR
+ 抓取前面一行(和 PRIOR 一样)。
+.TP
+\fBBACKWARD \fIcount\fB\fR
+ 抓取前面 count 行(向后扫描)。 BACKWARD 0 重新抓取当前行。
+.TP
+\fBBACKWARD ALL\fR
+ 抓取所有前面的行(向后扫描)。
+.RE
+.PP
+.TP
+\fB\fIcount\fB\fR
+\fIcount\fR 可能是一个有符号的整数常量,决定要抓取的行数和方向。 对于 FORWARD 和 BACKWARD 的情况,声明一个带负号的 count  等效于改变 FORWARD 和 BACKWARD 的方向。
+.TP
+\fB\fIcursorname\fB\fR
+ 一个打开的游标的名称。
+.SH "OUTPUTS 输出"
+.PP
+ 成功完成时,一个 FETCH 命令返回一个形如下面的标记
+.sp
+.nf
+FETCH \fIcount\fR
+.sp
+.fi
+ 这里的 count 是抓取的行数(可能是零)。 请注意在 psql 里,命令标签实际上不会显示, 因为 psql 用抓取的行数取代了。
+.SH "NOTES 注意"
+.PP
+ 如果你想使用 FETCH NEXT 之外的任何 FETCH 的变种, 或者是带负数计数的 FETCH FORWARD。那么定义游标的时候应该带着 SCROLL 选项。 对于简单的查询,PostgreSQL 会允许那些没有带 SCROLL 选项定义的游标也可以反向抓取, 但是我们最好不要依赖这个行为。 如果游标定义了 NO SCROLL,那么不允许反向抓取。
+.PP
+ABSOLUTE 抓取不会比用相对位移移动到需要的数据行更快: 因为下层的实现必须遍历所有中间的行。负数的绝对抓取甚至更糟糕: 查询必须一直读到结尾才能找到最后一行,然后从那里开始反向遍历。 不过,回退到查询开头(就像 FETCH ABSOLUTE 0)很快。
+.PP
+ 在游标中更新数据还不被 PostgreSQL 支持。
+.PP
+DECLARE [\fBdeclare\fR(7)]
+语句用于定义一个游标。使用
+MOVE [\fBmove\fR(7)]
+语句来改变游标位置而不检索数据。
+.SH "EXAMPLES 例子"
+.PP
+ 下面的例子用一个游标跨过一个表。
+.sp
+.nf
+BEGIN WORK;
+
+-- 建立一个游标:
+DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;
+
+-- 抓取头 5 行到游标 liahona 里:
+FETCH FORWARD 5 FROM liahona;
+
+ code  |          title          | did | date_prod  |   kind   |  len
+-------+-------------------------+-----+------------+----------+-------
+ BL101 | The Third Man           | 101 | 1949-12-23 | Drama    | 01:44
+ BL102 | The African Queen       | 101 | 1951-08-11 | Romantic | 01:43
+ JL201 | Une Femme est une Femme | 102 | 1961-03-12 | Romantic | 01:25
+ P_301 | Vertigo                 | 103 | 1958-11-14 | Action   | 02:08
+ P_302 | Becket                  | 103 | 1964-02-03 | Drama    | 02:28
+
+-- 抓取前面行:
+FETCH PRIOR FROM liahona;
+
+ code  |  title  | did | date_prod  |  kind  |  len
+-------+---------+-----+------------+--------+-------
+ P_301 | Vertigo | 103 | 1958-11-14 | Action | 02:08
+
+-- 关闭游标并提交事务:
+CLOSE liahona;
+COMMIT WORK;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准定义的 FETCH 只用于嵌入式环境下。 这里描述的 FETCH 变种是把结果数据像 SELECT  结果那样返回,而不是把它放在宿主变量里。除了这点之外,FETCH 和 SQL 标准完全向上兼容。
+.PP
+ 涉及 FORWARD 和 BACKWARD 的 FETCH 形式 (包括 FETCH count 和 FETCH ALL 的形式,这个时候 FORWARD 是隐含的)是 PostgreSQL  的扩展。
+.PP
+ SQL 标准只允许游标前面有 FROM, 用 IN 是一种扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/glob.7 b/src/man7/glob.7
new file mode 100644
index 0000000..fa5662a
--- /dev/null
+++ b/src/man7/glob.7
@@ -0,0 +1,173 @@
+.\" Copyright (c) 1998 Andries Brouwer
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+
+.TH GLOB 7 "12 June 1998" "Unix" "Linux Programmer's Manual"
+.SH NAME
+glob \- 形成路径名称
+
+.SH "描述 (DESCRIPTION)"
+很久以前 在 UNIX V6 版 中 有一个 程序 
+.I /etc/glob
+用来 展开 通配符模板. 不久以后 它 成为 shell 内建功能.
+现在 人们 开发了 类似的 库函数
+.BR glob (3),
+让 用户程序 实现 同样的 功能.
+
+此 规则 遵循 (POSIX 1003.2, 3.13). 
+
+.SH "通配符匹配 (WILDCARD MATCHING)"
+包含 '?', '*' 或 '[' 字符的 字符串 称为 通配符模板(wildcard pattern).
+形成路径名(globbing) 指 一种 操作, 把 通配符模板 展开为 匹配 该串的 路径名.
+匹配 定义为:
+
+不在 方括弧中 的 '?' 匹配 任意 单个 字符.
+
+不在 方括弧中 的 '*' 匹配 任意 字符串, 包括 空串.
+
+.SS "字符集 (Character classes)"
+对于 表达式 `[...]', 如果 在 第一个 '['符 后面 出现的 第一个 字符 不是 '!', 
+则 该 表达式 匹配 任意 一个 在 `[...]'内 出现的 字符. 方括弧内 不能 有 空串,
+因此 ']' 可以 作为 第一个 字符 出现在 方括弧内. (像 这样, '[][!]' 匹配 下列
+三个 字符 中的 任意 一个, '[', ']' 和 '!'.)
+
+.SS "范围集 (Ranges)"
+字符集 有一个 特例:
+用 '-' 分开的 两个 字符 表示 一个 范围集.
+(像 这样, `[A-Fa-f0-9]' 等于 `[ABCDEFabcdef0123456789]'.)
+把 '-' 放到 方括弧内 的 开头 或 最后 可以 获得 它的 本意.
+(像 这样, `[]-]' 匹配 ']'和'-' 中 任意 一个. 而 `[--/]' 匹配 `-', `.' 和`/'中
+任意 一个.)
+
+.SS "补集 (Complementation)"
+表达式 '[!...]' 表示 一个 字符, 该 字符 不匹配 方括弧内 去掉 开头 '!' 后
+的 表达式. (像 这样, `[!]a-]' 匹配 除了 ']', 'a' 和 '-' 的 任意 一个 字符.)
+
+要 去掉 '?', '*' 和 '[' 的 特殊 含义, 可以 通过 前面 加 一个 反斜杠;
+或者 在 shell 命令行 中, 通过 引号 来 引用 这些 字符.
+在 方括弧内 这些 字符 显露出 本意, 所以, '[[?*\e]' 匹配 这 四个字符
+中 的 一个: '[', '?', '*', '\e'.
+
+.SH "路径名 (PATHNAME)"
+形成路径名 功能 应用于 路径 中 的 每一个 成员部分. 路径 中 的 '/' 不能 被
+通配符 '?' 或 '*', 或 范围集 如 '[.-0]' 匹配. 范围集 不能 直接 包含 '/', 
+否则 导致 语法错误.
+
+如果 待匹配的 文件名 以'.'开头, 那么 这个 '.' 字符 必须 直接 给出. (比如说, 
+'rm *' 不会 删除 '.profile' 文件, 'tar c *' 不会 打包 你的 所有 文件; 
+用 'tar c .' 会 更好.)
+
+.SH "空列表 (EMPTY LISTS)"
+上述的 简单优雅 规则, 把 通配符模板 展开为 匹配的 路径名, 来源于 
+最初的 UNIX 定义. 它 允许 展开出 空串, 例如
+
+.br
+.nf
+	xv -wait 0 *.gif *.jpg
+.fi
+
+这里 可能 没有 *.gif 文件 (而且 不算 错误).
+
+然而, POSIX 要求 句法 错误 或 路径名 列表 为 空 时, 保留 通配符模板 不变.
+(译注: 即 不展开.)
+
+在
+.I bash
+中 可以 通过 设置
+.IR allow_null_glob_expansion=true
+把 它 强置为 传统的 风格. (其他 地方 也有 类似的 问题, 例如, 老式的 语句 是
+.br
+.nf
+	rm `find . -name "*~"`
+.fi
+新的 写法 为
+.br
+.nf
+	rm -f nosuchfile `find . -name "*~"`
+.fi
+以 避免 由于 空参数调用
+.I rm
+而 产生 错误信息.)
+
+.SH "注意 (NOTES)"
+.SS "正规表达式 (Regular expressions)"
+注意, 通配符模板 不是 正规表达式, 尽管 它们 有点象. 首先, 
+它 匹配 文件名, 而 不是 正文; 其次, 规则 不一样, 例如 正规表达式 里 的 '*'
+代表 零个或多个 前面内容的 重复.
+
+正规表达式 的 方括弧表达式 用 '^' 引导 取反操作, (而不是 '[!...]').
+POSIX 声明, 在 通配符模板 中, '[^...]' 未做 定义.
+
+.SS "字符集 和 国际化 (Character classes and Internationalization )"
+当然, 范围集 最初 指 ASCII的 范围, 因此 '[ -%]' 意思是 '[ !"#$%]',
+'[a-z]' 指 所有 小写字符.
+
+一些 UNIX实现 把 这个 归纳为: 范围 X-Y 指 X的编码 到 Y的编码 之间的
+编码字符. 可是, 这 要求 用户 知道 他们 本地系统的 字符编码, 此外, 如果
+本地的 字母表顺序 和 字符集顺序 不对应, 那 就 更不方便了.
+
+因此, POSIX 对 通配符模板 和 正规表达式 的 方括弧表达法 作了 重大扩展,
+上面 我们 知道了 方括弧表达式 中 的 三个 类型, 它们是 (i) 取补集
+(ii) 直接列出的 单个字符 和 (iii) 范围集.
+
+POSIX 对 范围集 在 国际化 方面 作了 更有力的 说明, 并且 增加了 三个 类型:
+
+(iii) 范围 X-Y 由 X 和 Y 之间 所有的字符 组成 (包括X和Y), X 和 Y 的 
+当前编码序列 由 当前场合的 LC_COLLATE 分类定义.
+
+(iv) 命名字符集, 象
+.br
+.nf
+[:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
+[:digit:]  [:graph:]  [:lower:]  [:print:]
+[:punct:]  [:space:]  [:upper:]  [:xdigit:]
+.fi
+因此 可以 用 '[[:lower:]]' 代替 '[a-z]', 它 在 丹麦语 里 同样 有效, 虽然 
+丹麦的 字母表 里 'z' 后面 还有 三个 字母.
+这些 字符集 由 当前场合的 LC_CTYPE 分类定义.
+
+(v) 符号对映, 象 '[.ch.]' 或 '[.a-acute.]',
+在 '[.' 和 '.]' 之间的 字符串 是 定义 在 当前场合的 对映元素.
+注意 这 可以 是 多字符元素.
+
+(vi) 等类表达式, 象 '[=a=]',
+在 '[=' 和 '=]' 之间的 字符串 是 任意 等类 中 的 对映元素, 它 定义在 当前场合.
+例如, '[[=a=]]' 可以 等同于 `[a徉溻]' (警告: 这里 有 Latin-1 字符),
+也就是 `[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]'.
+
+.SH "SEE ALSO"
+.BR sh (1),
+.BR glob (3),
+.BR fnmatch (3),
+.BR locale (7),
+.BR regex (7)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/15
+第一版
+.br
+.BR 2001/11/17
+第一次修订
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/grant.7 b/src/man7/grant.7
new file mode 100644
index 0000000..3885fba
--- /dev/null
+++ b/src/man7/grant.7
@@ -0,0 +1,184 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "GRANT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+GRANT \- 定义访问权限
+
+.SH SYNOPSIS
+.sp
+.nf
+GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON [ TABLE ] \fItablename\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
+    ON DATABASE \fIdbname\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { EXECUTE | ALL [ PRIVILEGES ] }
+    ON FUNCTION \fIfuncname\fR ([\fItype\fR, ...]) [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { USAGE | ALL [ PRIVILEGES ] }
+    ON LANGUAGE \fIlangname\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
+    ON SCHEMA \fIschemaname\fR [, ...]
+    TO { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBGRANT\fR 命令将某对象(表,视图,序列,函数过程语言,或者模式) 上的特定权限给予一个用户或者多个用户或者一组用户。 这些权限将增加到那些已经赋予的权限上,如果存在这些权限的话。
+.PP
+ 键字 PUBLIC 表示该权限要赋予所有用户, 包括那些以后可能创建的用户。PUBLIC  可以看做是一个隐含定义好的组,它总是包括所有用户。 任何特定的用户都将拥有直接赋予他/她的权限,加上他/她所处的任何组, 以及再加上赋予 PUBLIC 的权限的总和。
+.PP
+ 如果声明了 WITH GRANT OPTION,那么权限的受予者也可以赋予别人。 缺省的时候这是不允许的。赋权选项只能给独立的用户,而不能给组或者 PUBLIC。
+.PP
+ 对对象的所有者(通常就是创建者)而言,没有什么权限需要赋予, 因为所有者缺省就持有所有权限。(不过,所有者出于安全考虑可以选择废弃一些他自己的权限。) 删除一个对象的权力,或者是任意修改它的权力都不是可赋予的权利所能描述的; 它是创建者固有的,并且不能赋予或撤销。
+.PP
+ 根据对象的不同,初始的缺省权限可能包括给 PUBLIC  赋予一些权限。缺省设置对于表和模式是没有公开访问权限的; TEMP 表为数据库创建权限;EXECUTE 权限用于函数; 以及 USAGE 用于语言。对象所有者当然可以撤回这些权限。 (出于最大安全性考虑,在创建该对象的同一个事务中发出 REVOKE; 那么就不会打开给别的用户使用该对象的窗口。)
+.PP
+ 可能的权限有:
+.TP
+\fBSELECT\fR
+ 允许对声明的表,试图,或者序列 SELECT [\fBselect\fR(7)] 任意字段。还允许做
+COPY [\fBcopy\fR(7)] TO 的源。 对于序列而言,这个权限还允许使用 currval 函数。
+.TP
+\fBINSERT\fR
+ 允许向声明的表 INSERT [\fBinsert\fR(7)] 一个新行。 同时还允许做 COPY [\fBcopy\fR(7)] FROM。
+.TP
+\fBUPDATE\fR
+ 允许对声明的表中任意字段做 UPDATE [\fBupdate\fR(7)] 。 SELECT ... FOR UPDATE 也要求这个权限 (除了 SELECT 权限之外)。比如, 这个权限允许使用nextval 和 setval。
+.TP
+\fBDELETE\fR
+ 允许从声明的表中 DELETE [\fBdelete\fR(7)] 行。
+.TP
+\fBRULE\fR
+ 允许在该表/视图上创建规则。(参阅 CREATE RULE [\fBcreate_rule\fR(7)] 语句。)
+.TP
+\fBREFERENCES\fR
+ 要创建一个外键约束,你必须在参考表和被参考表上都拥有这个权限。
+.TP
+\fBTRIGGER\fR
+ 允许在声明表上创建触发器。(参阅
+CREATE TRIGGER [\fBcreate_trigger\fR(7)] 语句。)
+.TP
+\fBCREATE\fR
+ 对于数据库,允许在该数据库里创建新的模式。
+
+ 对于模式,允许在该模式中创建新的对象。 要重命名一个现有对象,你必需拥有该对象并且。 对包含该对象的模式拥有这个权限。
+.TP
+\fBTEMPORARY\fR
+.TP
+\fBTEMP\fR
+ 允许在使用该数据库的时候创建临时表。
+.TP
+\fBEXECUTE\fR
+ 允许使用指定的函数并且可以使用任何利用这些函数实现的操作符。 这是适用于函数的唯一的一种权限类型。 (该语法同样适用于聚集函数。)
+.TP
+\fBUSAGE\fR
+ 对于过程语言, 允许使用指定过程语言创建该语言的函数。 这是适用于过程语言的唯一的一种权限类型。
+
+ 对于模式,允许访问包含在指定模式中的对象(假设该对象的所有权要求同样也设置了)。 最终这些就允许了权限接受者"查询"模式中的对象。
+.TP
+\fBALL PRIVILEGES\fR
+ 一次性给予所有适用于该对象的权限。 PRIVILEGES 关键字在 PostgreSQL 里是可选的, 但是严格的 SQL 要求有这个关键字。
+.PP
+ 其它命令要求的权限都在相应的命令的参考页上列出。
+.SH "NOTES 注意"
+.PP
+REVOKE [\fBrevoke\fR(7)] 命令用于删除访问权限。
+.PP
+ 我们要注意数据库超级用户可以访问所有对象, 而不会受对象的权限设置影响。这个特点类似 Unix 系统的 root  的权限。和 root 一样,除了必要的情况,总是以超级用户身分进行操作是不明智的做法。
+.PP
+If a superuser chooses to issue a \fBGRANT\fR or \fBREVOKE\fR
+command, the command is performed as though it were issued by the
+owner of the affected object. In particular, privileges granted via
+such a command will appear to have been granted by the object owner.
+.PP
+ 目前,要在 PostgreSQL 里只对某几列赋予权限, 你必须创建一个拥有那几行的视图然后给那个视图赋予权限。
+.PP
+ 使用 \fBpsql\fR(1) 的 \fB\\z\fR 命令获取在现有对象上的与权限有关的信息。
+.sp
+.nf
+=> \\z mytable
+
+        Access privileges for database "lusitania"
+ Schema |  Table  |           Access privileges
+--------+---------+---------------------------------------
+ public | mytable | {=r/postgres,miriam=arwdRxt/postgres,"group todos=arw/postgres"}
+(1 row)
+.sp
+.fi
+\fB\\z\fR 显示的条目解释如下:
+.sp
+.nf
+              =xxxx -- 赋予 PUBLIC 的权限
+         uname=xxxx -- 赋予一个用户的权限
+   group gname=xxxx -- 赋予一个组的权限
+
+                  r -- SELECT ("读")
+                  w -- UPDATE ("写")
+                  a -- INSERT ("追加")
+                  d -- DELETE
+                  R -- RULE
+                  x -- REFERENCES
+                  t -- TRIGGER
+                  X -- EXECUTE
+                  U -- USAGE
+                  C -- CREATE
+                  T -- TEMPORARY
+            arwdRxt -- ALL PRIVILEGES (for tables)
+                  * -- 给前面权限的授权选项
+
+              /yyyy -- 授出这个权限的用户
+.sp
+.fi
+ 用户 miriam 在建完表之后再做下面的语句, 就可以得到上面例子的结果
+.sp
+.nf
+GRANT SELECT ON mytable TO PUBLIC;
+GRANT SELECT, UPDATE, INSERT ON mytable TO GROUP todos;
+.sp
+.fi
+.PP
+ 如果一个给定的对象的 "Access privileges" 字段是空的, 这意味着该对象有缺省权限(也就是说,它的权限字段是 NULL)。 缺省权限总是包括所有者的所有权限,以及根据对象的不同,可能包含一些给 PUBLIC  的权限。 对象上第一个 GRANT 或者 REVOKE  将实例化这个缺省权限(比如,产生 {=,miriam=arwdRxt}) 然后根据每次特定的需求修改它。
+.SH "EXAMPLES 例子"
+.PP
+ 把表 films 的插入权限赋予所有用户:
+.sp
+.nf
+GRANT INSERT ON films TO PUBLIC;
+.sp
+.fi
+.PP
+ 赋予用户manuel对视图kinds的所有权限:
+.sp
+.nf
+GRANT ALL PRIVILEGES ON kinds TO manuel;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 根据 SQL 标准,在 ALL PRIVILEGES 里的 PRIVILEGES  关键字是必须的。SQL 不支持在一条命令里对多个表设置权限。
+.PP
+SQL 标准允许在一个表里为独立的字段设置权限:
+.sp
+.nf
+GRANT \fIprivileges\fR
+    ON \fItable\fR [ ( \fIcolumn\fR [, ...] ) ] [, ...]
+    TO { PUBLIC | \fIusername\fR [, ...] } [ WITH GRANT OPTION ]
+.sp
+.fi
+.PP
+SQL 标准对其它类型的对象提供了一个 USAGE 权限:字符集,校勘,转换,域。
+.PP
+RULE 权限,以及在数据库,模式,语言和序列上的权限是 PostgreSQL 扩展。
+.SH "SEE ALSO 参见"
+.PP
+REVOKE [\fBrevoke\fR(7)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/hier.7 b/src/man7/hier.7
new file mode 100644
index 0000000..9c3828e
--- /dev/null
+++ b/src/man7/hier.7
@@ -0,0 +1,356 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\" Chinese Version Copyright LetBright, www.linuxforum.net, 2000
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sun Jul 25 11:05:58 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sat Feb 10 16:18:03 1996 by Urs Thuermann (urs at isnogud.escape.de)
+.\" Modified Mon Jun 16 20:02:00 1997 by Nicol醩 Lichtmaier 
+.\" Modified Mon Feb 6 16:41:00 1999 by Nicol醩 Lichtmaier 
+.\" Modified Tue Feb 8 16:46:45 2000 by Chris Pepper 
+.\" 中文版 Copyright (c) 2000 LetBright 和 www.linuxforum.net
+.TH HIER 7 "June 16, 1997" "Linux" "Linux Programmer's Manual"
+.SH NAME 名称
+hier \- 文件系统描述
+.SH DESCRIPTION 描述
+一个典型的Linux系统具有以下几个目录:
+.TP
+.I /
+根目录,是所有目录树开始的地方。
+.TP
+.I /bin
+此目录下包括了单用户方式及系统启动或修复所用到的所有执行程序。
+.TP
+.I /boot
+包括了引导程序的静态文件。此目录下包括了在引导过程中所必需的文件。
+系统装载程序及配制文件在
+.I /sbin
+和
+.IR /etc
+目录中找到。
+.TP
+.I /dev
+对应物理设备的指定文件或驱动程序。参见mknod(1)。
+.TP
+.I /dos
+如果MS\-DOS和Linux共存于一台计算机时,这里通常用于存放DOS
+文件系统。
+.TP
+.I /etc
+用于存放本地机的配置文件。一些大型软件包,如X11,在
+.IR /etc
+下有它们自己的子目录。系统配置文件可以放在这里或在
+.IR /usr/etc。
+不过所有程序总是在
+.BR /etc
+目录下查找所需的配置文件,你也可以将这些文件连结到目录
+.IR /usr/etc .
+.TP
+.I /etc/skel
+当建立一个新用户帐号时,此目录下的文件通常被复制到用户的主目录下。
+.TP
+.I /etc/X11
+X11 window system所需的配置文件。
+.TP
+.I /home
+在Linux机器上,用户主目录通常直接或间接地置在此目录下。其结构通
+常由本地机的管理员来决定。
+.TP
+.I /lib
+此目录下包含系统引导和在根用户执行命令所必需用到的共享库。
+.TP
+.I /mnt
+挂载临时文件系统的挂载点。
+.TP
+.I /proc
+这是提供运行过程和核心文件系统
+.BR proc
+挂载点。这一"伪"文件系统在以下章节中有详细叙述
+.BR proc (5)。
+.TP
+.I /sbin
+类似于
+.IR /bin
+此目录保存了系统引导所需的命令,但这些命令一般用户不能执行。
+.TP
+.I /tmp
+此目录用于保存临时文件,临时文件在日常维护或在系统启动时无需通知便
+可删除
+.TP
+.I /usr
+此目录通常用于从一个独立的分区上挂载文件。它应保存共享只读类文件,
+这样它可以被运行Linux的不同主机挂载。
+.TP
+.I /usr/X11R6
+X\-Window系统 Version 11 release 6.
+.TP
+.I /usr/X11R6/bin
+X\-Windows系统使用的二进制文件;通常是在对更传统的
+.BR /usr/bin/X11
+中文件的符号连接。
+.TP
+.I /usr/X11R6/lib
+保存与X\-Windows系统有关数据文件。
+.TP
+.I /usr/X11R6/lib/X11
+此目录保存与运行X\-Windows系统有关其他文件。通常是对来自
+.BR /usr/lib/X11
+中文件的符号连接。
+.TP
+.I /usr/X11R6/include/X11
+此目录保存包括使用X11视窗系统进行编译程序所需的文件。通常是对来自
+.BR /usr/lib/X11
+中文件的符号连接。
+.TP
+.I /usr/bin
+这是执行程序的主要目录,其中的绝大多数为一般用户使用,
+除了那些启动系统或修复系统或不是本地安装的程序一般都
+放在此目录下。
+.TP
+.I /usr/bin/X11
+X11执行文件放置的地方;在Linux系统中,它通常是对
+.IR /usr/X11R6/bin .
+符号连接表
+.TP
+.I /usr/dict
+此目录保存拼写检查器所使用的词汇表文件。
+.TP
+.I /usr/doc
+此目录下应可以找到那些已安装的软件文档。
+.TP
+.I /usr/etc
+此目录可用来那些存放整个网共用的配置文件。然而那可执行命
+令指向总是使用参照使用
+.I /etc
+目录下的文件。
+.I /etc
+目录下连接文件应指向
+.IR /usr/etc .
+目录下适当的文件。
+.TP
+.I /usr/include
+C程序语言编译使用的Include"包括"文件。
+.TP
+.I /usr/include/X11
+C程序语言编译和X\-Windows系统使用的 Include"包括"文件。它通
+常中指向
+.I /usr/X11R6/include/X11.
+符号连接表。
+.TP
+.I /usr/include/asm
+申明汇编函数的Include"包括"文件,它通常是指向
+.IR /usr/src/linux/include/asm 
+目录的符号连接
+.TP
+.I /usr/include/linux
+包含系统变更的信息通常是指向
+.I /usr/src/linux/include/linux
+目录的符号连接表,来获得操作系统特定信息。
+
+(注:用户应在此自行包含那些保证自己开发的程序正常运行所需的libc
+函数库。不管怎样,Linux核心系统不是设计用来执行直接运行用户程序
+的,它并不知道用户程序需要使用哪个版本的libc库 。如果你随意将
+.I /usr/include/asm
+和
+.I /usr/include/linux
+指向一个系统内核,系统很可能崩溃。Debian系统不这么做。它使用
+libc*-dev运行包中提供的内核系统标识,以保证启动所有正确的文件。)
+.TP
+.I /usr/include/g++
+GNU C++编译器所使用的Include"包括"文件。
+.TP
+.I /usr/lib
+目标库文件,包括动态连接库加上一些通常不是直接调用的可执行文件。一
+些复杂的程序可能在此占用整个子目录。
+.TP
+.I /usr/lib/X11
+存放X系统数据文件及系统配置文件的地方。
+Linux中通常是指向
+.IR /usr/X11R6/lib/X11 
+目录的符号连接表。
+.TP
+.I /usr/lib/gcc-lib
+GNU C 编译器所使用的可执行文件和"包括"文件。
+.BR gcc (1).
+.TP
+.I /usr/lib/groff
+GNU groff 文档格式系统所使用的文件。
+.TP
+.I /usr/lib/uucp
+.BR uucp (1)
+所使用的文件。
+.TP
+.I /usr/lib/zoneinfo
+有关时区信息文件文件。
+.TP
+.I /usr/local
+安装在本地执行程序的地方。
+.TP
+.I /usr/local/bin
+在此地放置本地执行程序的二进制文件。
+.TP
+.I /usr/local/doc
+放置本地文档。
+.TP
+.I /usr/local/etc
+安装在本地程序的配置文件。
+.TP
+.I /usr/local/lib
+安装在本地程序的库文件。
+.TP
+.I /usr/local/info
+安装在本地程序有关信息文件。
+.TP
+.I /usr/local/man
+安装在本地程序使用手册。
+.TP
+.I /usr/local/sbin
+安装在本地的系统管理程序。
+.TP
+.I /usr/local/src
+安装在本地程序的源代码。
+.TP
+.I /usr/man
+手册页通常放在此目录,或相关子目录下。
+.TP
+.I /usr/man//man[1-9]
+此目录在指定的地方以源代码形式存放手册页。系统在所有的手册
+页中使用自己独特的语言及代码集,可能会省略
+.BR substring
+子字串。
+.TP
+.I /usr/sbin
+此目录保存系统管理程序的二进制码,这些文件不是系统启动或文件
+系统挂载
+.BR /usr
+目录或修复系统所必需的。
+.TP
+.I /usr/share
+在此目录下不同的子目录中保存了同一个操作系统在不同构架下工作
+时特定应用程序的共享资料。用户可以找到通常放在
+.I /usr/doc
+或
+.I /usr/lib
+或
+.IR /usr/man
+目录下的这些资料。
+.TP
+.I /usr/src
+系统不同组成部份的源文件包括参考资料包。不要将你自己与项目有关的文
+件放这里,因为在安装软件外,/usr下的文件属性除通常设为只读。
+.TP
+.I /usr/src/linux
+系统内核资源通常拆包安装于此。这是系统中重要的一环,因为
+.BR /usr/include/linux
+符号连接表指向此目录。你应当使用其他目录来来编译建立新内核。
+.TP
+.I /usr/tmp
+此目录不再使用了。它应指向目录
+.IR /var/tmp 。
+这个链接只是出于系统兼容的目的,一般不再使用。
+.TP
+.I /var
+此目录下文件的大小可能会改变,如缓冲文件可日志文件。
+.TP
+.I /var/adm
+此目录为
+.I /var/log
+甩替代,通常是指向
+.IR /var/log
+的符号连接表。
+.TP
+.I /var/backups
+此目录用来存放重要系统文件的后备文件
+.TP
+.IR /var/catman/cat[1-9] " or " /var/cache/man/cat[1-9]
+此目录存放根据手册分类预先格式化的参考手册页。(这些参考手册
+页是相互独立的)
+.TP
+.I /var/lock
+此目录存放锁定文件。依据命名习惯,设备锁定文件是
+.I LCKxxxxx
+xxxxx与在文件系统中该设备名相同,使用的格式是HDU UUCP锁定文件,
+例如包含进程标识PID的锁定文件是一个10字节的ASCII格式的数字,
+后面跟一个换行符。
+.TP
+.I /var/log
+各种日志文件。
+.TP
+.I /var/preserve
+这是
+.BR vi (1)
+存放正在编辑中的文件,以便以后可以恢复。
+.TP
+.I /var/run
+运行时的变量文件,如存放进程标识和登录用户信息的文件。
+.BR (utmp) 
+此目录下文件在系统启动时被自动清除。
+.TP
+.I /var/spool
+各种程序产生的缓冲或排除等待的文件
+.TP
+.I /var/spool/at
+.BR at (1)
+的作业存缓区
+.TP
+.I /var/spool/cron
+.BR cron (1)
+的作业存缓区
+.TP
+.I /var/spool/lpd
+打印缓存文件。
+.TP
+.I /var/spool/mail
+用户邮箱。
+.TP
+.I /var/spool/smail
+存放
+.BR smail (1)
+邮件发送程序的缓冲文件。
+.TP
+.I /var/spool/news
+新闻子系统的缓冲目录
+.TP
+.I /var/spool/uucp
+.BR uucp (1)
+的缓冲文件
+.TP
+.I /var/tmp
+类似
+.IR /tmp ,
+此目录保存未指定持续时间的临时文件。
+.SH "CONFORMS TO 适用于"
+Linux 文件系统,1.2版
+.SH BUGS缺陷
+这份列表是不详尽的。因为不同的系统配置是不同。
+.SH "参见"
+.BR find (1),
+.BR ln (1),
+.BR mount (1), 
+.BR proc (5),
+Linux 文件系统标准的相关内容。
+
+.SH "[中文版维护人]"
+.B LetBright <letbright at netease.com>
+.SH "[中文版最新更新]"
+.B 2000/10/30
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/icmp.7 b/src/man7/icmp.7
new file mode 100644
index 0000000..889a140
--- /dev/null
+++ b/src/man7/icmp.7
@@ -0,0 +1,113 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen .
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" 中文版 Copyright (c) 2000 LetBright, BitBIRD 和 www.linuxforum.net
+.TH ICMP 7 "27 Apr 1999" "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME 名称
+icmp, IPPROTO_ICMP \- Linux IPv4 ICMP 核心模块. 
+.SH DESCRIPTION 描述
+本网络核心协议模块实现了基于 RFC792 协议中定义的《互联网控制报文协议》
+。它针对网络主机间通讯出错的情况作出回应并给出诊断信息。
+用户不能直接使用本模块。相反本模块需与核心中的其他协议进行通讯,而这
+些协议将 ICMP 出错信息返回到网络协议的应用层。ICMP 核心模块也回应 ICMP 请求。
+.PP
+如果用 IPPROTP_ICMP 打开原始套接字(raw socket)时,
+用户协议有可以收到任意本地套接字 ICMP 包。
+.BR IPPROTO_ICMP .
+请参阅
+.BR raw (7)
+传递到套接字的 ICMP 包可以用
+.BR ICMP_FILTER 
+套接字选项进行过滤。核心会处理所有 ICMP 包,包括传递到用户的套接字去的。
+
+Linux 对可以到达每个目标主机出错信息包的比率设立了限制。
+.BR ICMP_REDIRECT
+及
+.BR ICMP_DEST_UNREACH
+也受进入包的目标路由的限制。
+
+.SH SYSCTLS
+ICMP 支持通过 sysctl 接口来设置一些全局 IP 参数。对 Sysctl 的访问可以通过读、写
+.BR /proc/sys/net/ipv4/* 
+下的文件通过 
+.BR sysctl (2)
+接口进行. 大多数这些 sysctls 对特定 ICMP 类型的数据包数量进行了限制。
+Linux 2.2 使用记号单元过滤器对 ICMP 包进行限制。
+.\" XXX better description needed
+此值表示超时错误,以秒计,直到到顶后记号单元过滤器被清除为止。
+.TP
+.BR icmp_destunreach_rate
+发送目的地不可到达 ICMP 消息包的最大数据包比率。这限制了发送到任意一个
+路由或目的地的数据包的比率。
+这个限制不影响发送用来发现数据链路最大传送单位(MTU)的
+.BR ICMP_FRAG_NEEDED 包 
+数据包。
+.TP
+.BR icmp_echo_ignore_all 
+如果该值不为零,Linux将忽略所有的
+.BR ICMP_ECHO 
+请求。
+.TP
+.BR icmp_echo_ignore_broadcasts
+如果该值不为零,Linux将忽略所有发送到广播地址的
+.BR ICMP_ECHO 
+数据包。
+.TP
+.BR icmp_echoreply_rate 
+发送响应
+.BR ICMP_ECHOREQUEST 
+请求的
+.BR ICMP_ECHOREPLY
+数据包比率的最大值。
+.TP
+.BR icmp_paramprob_rate
+发送
+.BR ICMP_PARAMETERPROB
+数据包比率的最大值。当一个具有非法 IP 报头数据包到达时将发送这些包。
+.TP
+.BR icmp_timeexceed_rate
+发送
+.BR ICMP_TIME_EXCEEDED
+包比率的最大值。当一个数据包通过太多网段时,这些包用作防止路由回环。
+.SH NOTES
+由于在许多其他实现中不支持
+.B IPPROTO_ICMP 
+原始套接字(raw socket),可移植程序不能依靠这一特性。
+.\" not really true ATM
+.\" 
+.PP
+.\" Linux ICMP 将遵从RFC1122协议.
+.PP
+.\" XXX: 这已列入修正计划,将加入对Alexey无用网关检测的补丁.
+当Linux不作为路由器时,将不被发送
+.BR ICMP_REDIRECT
+包。内核也只有在路由表中的旧网关和路由重新定向超时时才接受这些包。
+.PP
+.BR ICMP_TIMESTAMP
+返回的 64 位毫秒为单位的时间戳是自1970年1月1日以来的时间.
+.PP
+Linux 的 ICMP 在内部使用原始套接字(raw socket)来发送ICMP包。
+这个原始套接字可能在
+.BR netstat (8)
+消息输出中出现,带着一个“zero inode”信息。
+.PP
+.SH VERSIONS
+在2.2版本中将再不支持
+.BR ICMP_ADDRESS
+请求。
+.PP
+在2.2版本中将不再支持
+.BR ICMP_SOURCE_QUENCH
+.SH 参见
+.BR ip (7)
+.PP
+RFC792 对ICMP协议进行了详细的叙述。
+
+.SH "[中文版维护人]"
+.B LetBright <letbright at netease.com>
+.SH "[中文版最新更新]"
+.B 2000/10/30
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/insert.7 b/src/man7/insert.7
new file mode 100644
index 0000000..a42e8e7
--- /dev/null
+++ b/src/man7/insert.7
@@ -0,0 +1,107 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "INSERT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+INSERT \- 在表中创建新行
+
+.SH SYNOPSIS
+.sp
+.nf
+INSERT INTO \fItable\fR [ ( \fIcolumn\fR [, ...] ) ]
+    { DEFAULT VALUES | VALUES ( { \fIexpression\fR | DEFAULT } [, ...] ) | \fIquery\fR }
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBINSERT\fR 允许我们向表中插入新行。 我们可以一次插入一行或多行作为查询结果。
+.PP
+ 目标列表中的列/字段可以按任何顺序排列。 在目标列中没有出现的列/字段将插入缺省值, 可能是定义了的缺省值或者 NULL。
+.PP
+ 如果每行的表达式不是正确的数据类型,系统将试图进行自动的类型转换。
+.PP
+ 要想向表中插入数据,你必须有 INSERT 权限, 如果你使用了 \fIquery\fR 子句插入来自查询里的数据行, 你还需要拥有在查询里使用的表的 SELECT 权限。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fItable\fB\fR
+ 现存表的名称(可以有模式修饰)。
+.TP
+\fB\fIcolumn\fB\fR
+ 表 \fItable\fR 中的字段名。
+.TP
+\fBDEFAULT VALUES\fR
+ 所有字段都会用它们的缺省值填充。
+.TP
+\fB\fIexpression\fB\fR
+ 赋予 \fIcolumn\fR 的一个有效表达式或值。
+.TP
+\fBDEFAULT\fR
+ 这个字段将被字段它的填充。
+.TP
+\fB\fIquery\fB\fR
+ 一个查询(SELECT 语句),它提供插入的数据行。 请参考 SELECT 语句获取语法描述。
+.SH "OUTPUTS 输出"
+.PP
+ 成功完成后,一条 INSERT 命令返回一个下面形式的命令标签
+.sp
+.nf
+INSERT \fIoid\fR \fIcount\fR
+.sp
+.fi
+\fIcount\fR 是插入的行数。 如果 \fIcount\fR
+正好是一,并且目标表有 OID, 那么
+\fIoid\fR 是赋予插入行的 OID。 否则
+\fIoid\fR 是零。
+.SH "EXAMPLES 例子"
+.PP
+ 向表 films 里插入一行:
+.sp
+.nf
+INSERT INTO films VALUES
+    ('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');
+.sp
+.fi
+.PP
+ 在第二个例子里面省略了字段 len  因此在它里面将只存储缺省的 NULL 值:
+.sp
+.nf
+INSERT INTO films (code, title, did, date_prod, kind)
+    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');
+.sp
+.fi
+.PP
+ 在第三个例子里,我们用 DEFAULT 值作为数据字段,而不是声明一个数值:
+.sp
+.nf
+INSERT INTO films VALUES
+    ('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes');
+INSERT INTO films (code, title, did, date_prod, kind)
+    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');
+.sp
+.fi
+.PP
+ 从表 tmp 中插入几行到表 films 中:
+.sp
+.nf
+INSERT INTO films SELECT * FROM tmp;
+.sp
+.fi
+.PP
+ 插入数组:
+.sp
+.nf
+-- 创建一个空的 3x3 游戏板来玩圈-和-叉游戏
+-- (所有这些查询创建相同的游戏)
+INSERT INTO tictactoe (game, board[1:3][1:3])
+    VALUES (1,'{{"","",""},{},{"",""}}');
+INSERT INTO tictactoe (game, board[3][3])
+    VALUES (2,'{}');
+INSERT INTO tictactoe (game, board)
+    VALUES (3,'{{,,},{,,},{,,}}');
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBINSERT\fR 完全遵循 SQL 标准。可能碰到的关于 \fIquery\fR  子句特性的限制在
+SELECT [\fBselect\fR(7)] 语句中有相关文档。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/ip.7 b/src/man7/ip.7
new file mode 100644
index 0000000..808702a
--- /dev/null
+++ b/src/man7/ip.7
@@ -0,0 +1,795 @@
+.TH IP 7 "1999年5月11日" "Linux 手册页" "Linux 程序员手册"
+.SH NAME (名称)
+ip \- Linux IPv4 协议实现
+.SH SYNOPSIS(总览)
+.B #include <sys/socket.h>
+.br
+.B #include <net/netinet.h>
+.sp
+.IB tcp_socket " = socket(PF_INET, SOCK_STREAM, 0);"
+.br
+.IB raw_socket " = socket(PF_INET, SOCK_RAW, " protocol ");"
+.br
+.IB udp_socket " = socket(PF_INET, SOCK_DGRAM, " protocol ");"
+.SH DESCRIPTION(描述)
+Linux 实现描述于 RFC791 和 RFC1122 中的 Internet 协议,版本4.
+.B ip
+包括遵循 RFC1112 的第二层的多信道广播技术的实现.它也包括含包过滤器的IP路由器.
+.\" XXX:有没有人验证了2.1确实是与1812兼容的?
+.PP
+程序员的接口与 BSD 的套接字(socket)兼容.
+要获得关于套接字的更多信息,参见
+.BR socket (7)
+.PP
+创建一个IP套接字是通过以
+.BR "socket(PF_INET, socket_type, protocol)"
+方式调用
+.BR socket (2)
+函数来实现的.
+有效的套接字类型(socket_type)有:
+.B SOCK_STREAM
+用来打开一个
+.BR tcp (7)
+套接字,
+.B SOCK_DGRAM
+用来打开一个
+.BR udp (7)
+套接字,或者是
+.B SOCK_RAW
+用来打开一个
+.BR raw (7)
+套接字用来直接访问 IP 协议.
+.I protocol
+指的是要接收或者发送出去的包含在 IP 头标识(header)中的 IP 协议.
+对于TCP套接字而言,唯一的有效
+.I protocol
+值是
+.B 0
+和
+.B IPPROTO_TCP
+对于UDP套接字而言,唯一的有效
+.I protocol
+值是
+.B 0
+和
+.B IPPROTO_UDP.
+而对于
+.B SOCK_RAW
+你可以指定一个在 RFC1700 中定义的有效 IANA IP 协议代码来赋值.
+.PP
+.\" XXX ip当前在监听中会自动绑定,但是我不能确定这是否应该列在文档中
+当一个进程希望接受新的来访包或者连接时,它应该使用
+.BR bind (2)
+绑定一个套接字到一个本地接口地址.
+任意给定的本地(地址,端口)对只能绑定一个IP套接字.
+当调用 bind 时中声明了
+.B INADDR_ANY
+时,套接字将会绑定到
+.I 所有
+本地接口.当在未绑定的套接字上调用
+.BR listen (2)
+或者
+.BR connect (2)
+时,套接字会自动绑定到一个本地地址设置为
+.BR INADDR_ANY
+的随机的空闲端口上.
+
+除非你设置了
+.B S0_REUSEADDR 
+标识,否则一个已绑定的 TCP 本地套接字地址在关闭后的一段时间内不可用.
+使用该标识的时候要小心,因为它会使 TCP 变得不可靠.
+
+.SH ADDRESS FORMAT(地址格式)
+一个 IP 套接字地址定义为一个 IP 接口地址和一个端口号的组合.
+基本 IP 协议不会提供端口号,它们通过更高层次的协议如
+.BR udp (7)
+和
+.BR tcp (7)
+来实现.
+对于raw套接字,
+.B sin_port
+设置为IP协议.
+
+.PP
+.RS
+.nf
+.ta 4n 19n 31n
+struct sockaddr_in {
+sa_family_t sin_family; /* 地址族: AF_INET */
+u_int16_t sin_port; /* 按网络字节次序的端口 */
+struct in_addr sin_addr; /* internet地址 */
+};
+
+/* Internet地址. */
+struct in_addr {
+u_int32_t s_addr; /* 按网络字节次序的地址 */
+};
+.ta
+.fi
+.RE
+.PP
+.I sin_family
+总是设置为
+.BR AF_INET .
+这是必需的;在 Linux 2.2 中,如果该设置缺失,大多数联网函数会返回
+.B EINVAL
+.I sin_port
+包含按网络字节排序的端口号.端口号在1024以下的称为
+.IR "保留端口".
+只有那些有效用户标识为 0 或者
+.B CAP_NET_BIND_SERVICE
+有功能的进程才可以
+.BR bind (2)
+到这些套接字.注意原始的(raw)IPv4协议没有这样的端口概念,它们只通过更高的协议如
+.BR tcp (7)
+和
+.BR udp (7)
+来实现.
+.PP
+.I sin_addr
+指的是 IP 主机地址.
+在
+.B struct in_addr
+中的
+.I addr
+部分包含按网络字节序的主机接口地址.
+.B in_addr
+应该只能通过使用
+.BR inet_aton (3),
+.BR inet_addr (3),
+.BR inet_makeaddr (3)
+库函数或者直接通过名字解析器(参见
+.BR gethostbyname (3))
+来访问.
+IPv4 地址分成单点广播,广播传送和多点广播地址.
+单点广播地址指定了一台主机的单一接口,广播地址指
+定了在一个网段上的所有主机,
+而多点广播地址则在一个多点传送组中寻址所有主机.
+只有当设置了套接字标识
+.B SO_BROADCAST 
+时,
+才能收发数据报到广播地址.
+在当前的实现中,面向连接的套接字只允许使用单点传送地址.
+.\" 为XTP留下了一个漏洞 @)
+
+注意地址和端口总是按照网络字节序存储的.
+这意味着你需要对分配给端口的号码调用
+.BR htons (3) .
+所有在标准库中的地址/端口处理函数都是按网络字节序运行的.
+
+有几个特殊的地址:
+.B INADDR_LOOPBACK
+(127.0.0.1)
+总是代表经由回环设备的本地主机;
+.B INADDR_ANY
+(0.0.0.0)
+表示任何可绑定的地址;
+.B INADDR_BROADCAST
+(255.255.255.255)
+表示任何主机,由于历史的原因,这与绑定为
+.B INADDR_ANY
+有同样的效果.
+
+.SH SOCKET OPTIONS(套接字选项)
+
+IP 支持一些与协议相关的套接字选项,这些选项可以通过
+.BR setsockopt (2)
+设置,并可以通过
+.BR getsockopt (2)
+读取.
+IP 的套接字选项级别为
+.B SOL_IP
+. 这是一个布尔整型标识,当值为0时为假,否则则为真.
+
+.TP
+.B IP_OPTIONS
+设置或者获取将由该套接字发送的每个包的 IP 选项.
+该参数是一个指向包含选项和选项长度的存储缓冲区的指针.
+.BR setsockopt (2)
+系统调用设置与一个套接字相关联的 IP 选项.
+IPv4 的最大选项长度为 40 字节.
+参阅 RFC791 获取可用的选项.
+如果一个
+.B SOCK_STREAM
+套接字收到的初始连接请求包包含 IP 选项时,
+IP 选项自动设置为来自初始包的选项,同时反转路由头.
+在连接建立以后将不允许来访的包修改选项.
+缺省情况下是关闭对所有来访包的源路由选项的,你可以用
+.B accept_source_route
+sysctl 来激活.仍然处理其它选项如时间戳(timestamp).
+对于数据报套接字而言,IP 选项只能由本地用户设置.调用带
+.I IP_OPTIONS
+的
+.BR getsockopt (2)
+会把当前用于发送的 IP 选项放到你提供的缓冲区中.
+
+.TP
+.B IP_PKTINFO
+传递一条包含
+.B pktinfo
+结构(该结构提供一些来访包的相关信息)的
+.I IP_PKTINFO
+辅助信息.
+这个选项只对数据报类的套接字有效.
+.IP
+.RS
+.ta 4n 19n 33n
+.nf
+struct in_pktinfo
+{
+unsigned int ipi_ifindex; /* 接口索引 */
+struct in_addr ipi_spec_dst; /* 路由目的地址 */
+struct in_addr ipi_addr; /* 头标识目的地址 */
+};
+.fi
+.RE
+.IP
+.\" XXX 详细阐述这些.
+.B ipi_ifindex
+指的是接收包的接口的唯一索引.
+.\" XXX 这对吗?
+.B ipi_spec_dst
+指的是路由表记录中的目的地址,而
+.B ipi_addr
+指的是包头中的目的地址.
+如果给 sendmsg (2)传递了
+.I IP_PKTINFO,
+那么外发的包会通过在
+.B ipi_ifindex
+中指定的接口
+发送出去,同时把
+.B ipi_spec_dst
+设置为目的地址.
+
+.TP
+.B IP_RECVTOS
+如果打开了这个选项,则
+.I IP_TOS ,
+辅助信息会与来访包一起传递.
+它包含一个字节用来指定包头中的服务/优先级字段的类型.
+该字节为一个布尔整型标识.
+
+.TP
+.B IP_RECVTTL
+当设置了该标识时,
+传送一条带有用一个字节表示的接收包生存时间(time to live)字段的
+.I IP_RECVTTL
+控制信息.
+此选项还不支持
+.B SOCK_STREAM
+套接字.
+
+.TP
+.B IP_RECVOPTS
+用一条
+.I IP_OPTIONS
+控制信息传递所有来访的 IP 选项给用户.
+路由头标识和其它选项已经为本地主机填好.
+此选项还不支持
+.I SOCK_STREAM
+套接字.
+
+.TP
+.B IP_RETOPTS
+等同于
+.I IP_RECVOPTS
+但是返回的是带有时间戳的未处理的原始选项和在这段路由中未填入的路由记录项目.
+
+.TP
+.B IP_TOS
+设置或者接收源于该套接字的每个IP包的 Type-Of-Service
+(TOS 服务类型)字段.它被用来在网络上区分包的优先级.
+TOS 是单字节的字段.定义了一些的标准 TOS 标识:
+.B IPTOS_LOWDELAY
+用来为交互式通信最小化延迟时间,
+.B IPTOS_THROUGHPUT
+用来优化吞吐量,
+.B IPTOS_RELIABILITY
+用来作可靠性优化,
+.B IPTOS_MINCOST
+应该被用作"填充数据",对于这些数据,低速传输是无关紧要的.
+至多只能声明这些 TOS 值中的一个.其它的都是无效的,应当被清除.
+缺省时,Linux首先发送
+.B IPTOS_LOWDELAY
+数据报,
+但是确切的做法要看配置的排队规则而定.
+.\" XXX 详细阐述这些
+一些高优先级的层次可能会要求一个有效的用户标识 0 或者
+.B CAP_NET_ADMIN
+能力.
+优先级也可以以于协议无关的方式通过(
+.B SOL_SOCKET, SO_PRIORITY
+)套接字选项(参看
+.BR socket (7)
+)来设置.
+
+.TP
+.B IP_TTL
+设置或者检索从此套接字发出的包的当前生存时间字段.
+
+.TP
+.B IP_HDRINCL
+如果打开的话,
+那么用户可在用户数据前面提供一个 ip 头.
+这只对
+.B SOCK_RAW
+有效.参看
+.BR raw (7)
+以获得更多信息.当激活了该标识之后,其值由
+.IR IP_OPTIONS
+设定,并且
+.I IP_TOS
+被忽略.
+
+.TP
+.B IP_RECVERR
+允许传递扩展的可靠的错误信息.
+如果在数据报上激活了该标识,
+那么所有产生的错误会在每套接字一个的错误队列中排队等待.
+当用户从套接字操作中收到错误时,就可以通过调用设置了
+.B MSG_ERRQUEUE
+标识的
+.BR recvmsg (2)
+来接收.
+描述错误的
+.B sock_extended_err
+结构将通过一条类型为
+.I IP_RECVERR ,
+级别为
+.BR SOL_IP的辅助信息进行传递.
+这个选项对在未连接的套接字上可靠地处理错误很有用.
+错误队列的已收到的数据部分包含错误包.
+.IP
+IP 按照下面的方法使用
+.B sock_extended_err
+结构:
+ICMP 包接收的错误
+.I ee_origin
+设为
+.B SO_EE_ORIGIN_ICMP ,
+对于本地产生的错误则设为
+.B SO_EE_ORIGIN_LOCAL .
+.I ee_type
+和
+.I ee_code
+设置为 ICMP 头标识的类型和代码字段.
+.I ee_info
+包含用于
+.B EMSGSIZE
+时找到的 MTU.
+.I ee_data
+目前没有使用.
+当错误来自于网络时,该套接字上所有IP选项都被激活
+.RI ( IP_OPTIONS ", " IP_TTL ", "
+等.)并且当做控制信息包含错误包中传递.引发错误的包的有效载荷会以正常数据返回.
+.IP
+.\" XXX:把这些列入文档是个好主意吗?它还是一个不确定的特性.
+在
+.B SOCK_STREAM
+套接字上,
+.I IP_RECVERR
+会有细微的语义不同.它并不保存下次超时的错误,而是立即传递所有进来的错误给用户.
+这对 TCP 连接时间很短的情况很有用,因为它要求快速的错误处理.
+使用该选项要小心:因为不允许从路由转移和其它正
+常条件下正确地进行恢复,它使得TCP变得不可靠,并且破坏协议的规范.
+注意TCP没有错误队列;
+.B MSG_ERRQUEUE
+对于
+.B SOCK_STREAM
+套接字是非法的.
+因此所有错误都会由套接字函数返回,或者只返回
+.B SO_ERROR .
+.IP
+对于原始(raw)套接字而言,
+.I IP_RECVERR
+允许传递所有接收到的ICMP错误给应用程序,否则错误只在连接的套接字上报告出来.
+.IP
+它设置或者检索一个整型布尔标识.
+.I IP_RECVERR
+缺省设置为off(关闭).
+
+.TP
+.B IP_PMTU_DISCOVER
+为套接字设置或接收Path MTU Discovery setting(路径MTU发现设置).
+当允许时,Linux会在该套接字上执行定
+义于RFC1191中的Path MTU Discovery(路径MTU发现).
+don't 段标识会设置在所有外发的数据报上.
+系统级别的缺省值是这样的:
+.B SOCK_STREAM
+套接字由
+.B ip_no_pmtu_disc
+sysctl 控制,而对其它所有的套接字都被都屏蔽掉了,对于非
+.B SOCK_STREAM
+套接字而言,
+用户有责任按照MTU的大小对数据分块并在必要的情况下进行中继重发.如果设置了该标识
+(用
+.B EMSGSIZE
+),内核会拒绝比已知路径MTU更大的包.
+
+.TS
+tab(:);
+c l
+l l.
+Path MTU discovery(路径MTU发现)标识:含义
+IP_PMTUDISC_WANT:对每条路径进行设置.
+IP_PMTUDISC_DONT:从不作Path MTU Discovery(路径MTU发现).
+IP_PMTUDISC_DO:总作Path MTU Discovery(路径MTU发现).
+.TE
+
+
+当允许 PMTU (路径MTU)搜索时,
+内核会自动记录每个目的主机的path MTU(路径MTU).当它使用
+.BR connect (2)
+连接到一个指定的对端机器时,可以方便地使用
+.B IP_MTU
+套接字选项检索当前已知的 path MTU(路径MTU)(比如,在发生了一个
+.B EMSGSIZE
+错误后).它可能随着时间的推移而改变.
+对于带有许多目的端的非连接的套接字,一个特定目的端的新到来的 MTU 
+也可以使用错误队列(参看
+.BR IP_RECVERR )
+来存取访问.
+新的错误会为每次到来的 MTU 的更新排队等待.
+
+当进行 MTU 搜索时,来自数据报套接字的初始包可能会被丢弃.
+使用 UDP 的应用程序应该知道这个并且考虑
+其包的中继传送策略.
+
+为了在未连接的套接字上引导路径 MTU 发现进程,
+我们可以用一个大的数据报(头尺寸超过64K字节)启动,
+并令其通过更新路径 MTU 逐步收缩.
+.\" XXX 这是一项丑陋的设计
+
+为了获得路径MTU连接的初始估计,可通过使用
+.BR connect (2)
+把一个数据报套接字连接到目的地址,并通过调用带
+.B IP_MTU选项的
+.BR getsockopt (2)
+检索该MTU.
+
+.TP
+.B IP_MTU
+检索当前套接字的当前已知路径MTU.只有在套接字被连接时才是有效的.返回一个整数.只有作为一个
+.BR getsockopt (2)
+才有效.
+.\"
+.TP
+.B IP_ROUTER_ALERT
+给该套接字所有将要转发的包设置IP路由器警告(IP RouterAlert option)选项.
+只对原始套接字(raw socket)有效,这对用户空间的 RSVP后
+台守护程序之类很有用.
+分解的包不能被内核转发,用户有责任转发它们.套接字绑定被忽略,
+这些包只按协议过滤.
+要求获得一个整型标识.
+.\"
+.TP
+.B IP_MULTICAST_TTL
+设置或者读取该套接字的外发多点广播包的生存时间值.
+这对于多点广播包设置可能的最小TTL很重要.
+缺省值为1,这意味着多点广播包不会超出本地网段,
+除非用户程序明确地要求这么做.参数是一个整数.
+.\"
+.TP
+.B IP_MULTICAST_LOOP
+设置或读取一个布尔整型参数以决定发送的多点广播包是否应该被回送到本地套接字.
+.\"
+.TP
+.B IP_ADD_MEMBERSHIP
+加入一个多点广播组.参数为
+.B struct ip_mreqn
+结构.
+.PP
+.RS
+.nf
+.ta 4n 19n 34n
+struct ip_mreqn
+{
+struct in_addr imr_multiaddr; /* IP多点传送组地址 */
+struct in_addr imr_address; /* 本地接口的IP地址 */
+int imr_ifindex; /* 接口索引 */
+};
+.fi
+.RE
+.IP
+.I imr_multiaddr
+包含应用程序希望加入或者退出的多点广播组的地址.
+它必须是一个有效的多点广播地址.
+.I imr_address
+指的是系统用来加入多点广播组的本地接口地址;如果它与
+.B INADDR_ANY
+一致,那么由系统选择一个合适的接口.
+.I imr_ifindex
+指的是要加入/脱离
+.I imr_multiaddr
+组的接口索引,或者设为0表示任何接口.
+.IP
+由于兼容性的缘故,老的
+.B ip_mreq
+接口仍然被支持.它与
+.B ip_mreqn
+只有一个地方不同,就是没有包括
+.I imr_ifindex
+字段.这只在作为一个
+.BR setsockopt (2)
+时才有效.
+.\"
+.TP
+.B IP_DROP_MEMBERSHIP
+脱离一个多点广播组.参数为
+.B ip_mreqn
+或者
+.B ip_mreq
+结构,这与
+.IR IP_ADD_MEMBERSHIP
+类似.
+.\"
+.\TP
+.B IP_MULTICAST_IF
+为多点广播套接字设置本地设备.参数为
+.B ip_mreqn
+或者
+.B ip_mreq
+结构,它与
+.IR IP_ADD_MEMBERSHIP
+类似.
+.IP
+当传递一个无效的套接字选项时,返回
+.B ENOPROTOOPT .
+.SH SYSCTLS
+IP协议支持 sysctl 接口配置一些全局选项.sysctl可通过读取或者写入
+.B /proc/sys/net/ipv4/*
+文件或使用
+.BR sysctl (2)
+接口来存取访问.
+.\"
+.TP
+.B ip_default_ttl
+设置外发包的缺省生存时间值.此值可以对每个套接字通过
+.I IP_TTL
+选项来修改.
+.\"
+.TP
+.B ip_forward
+以一个布尔标识来激活IP转发功能.IP转发也可以按接口来设置
+.\"
+.TP
+.B ip_dynaddr
+打开接口地址改变时动态套接字地址和伪装记录的重写.
+这对具有变化的IP地址的拨号接口很有
+用.0表示不重写,1打开其功能,而2则激活冗余模式.
+.\"
+.TP
+.B ip_autoconfig
+无文档
+.\"
+.TP
+.B ip_local_port_range
+包含两个整数,定义了缺省分配给套接字的本地端口范围.
+分配起始于第一个数而终止于第二个数.
+注意这些端口不能与伪装所使用的端口相冲突(尽管这种情况也可以处理).
+同时,随意的选择可能会导致一些防火墙包过滤器的问题,它们会误认为本地端口在使用.
+第一个数必须至少>1024,最好是>4096以避免与众所周知的端口发生冲突,
+从而最大可能的减少防火墙问题.
+.\"
+.TP
+.B ip_no_pmtu_disc
+如果打开了,缺省情况下不对TCP套接字执行路径MTU发现.
+如果在路径上误配置了防火墙(用来丢弃所有
+ICMP包)或者误配置了接口
+(例如,设置了一个两端MTU不同的端对端连接),路径MTU发现可能会失败.
+宁愿修复路径上的损坏的路由器,也好过整个地关闭路径MTU发现,
+因为这样做会导致网络上的高开销.
+.\"
+.TP
+.B ipfrag_high_thresh, ipfrag_low_thresh
+如果排队等待的IP碎片的数目达到
+.B ipfrag_high_thresh ,
+队列被排空为
+.B ipfrag_low_thresh .
+这包含一个表示字节数的整数.
+.TP
+.B ip_always_defrag
+[kernel 2.2.13中的新功能;在早期内核版本中,该功能在编译时通过
+.B CONFIG_IP_ALWAYS_DEFRAG
+选项来控制]
+
+当该布尔标识被激活(不等于0)时,
+来访的碎片(IP包的一部分,这生成于当一些在源端和目的端之间的主机认
+定包太大而分割成许多碎片的情况下)将在处理之前重新组合(碎片整理),
+即使它们马上要被转发也如此.
+
+只在运行着一台与网络单一连接的防火墙或者透明代理服务器时才这么干;
+对于正常的路由器或者主机,
+永远不要打开它.
+否则当碎片在不同连接中通过时碎片的通信可能会被扰乱.
+而且碎片重组也需要花费大量的内存和 CPU 时间.
+
+这在配置了伪装或者透明代理的情况下自动打开.
+.TP
+.B neigh/*
+参看
+.BR arp (7)
+.\" XXX 记载conf的文档/*/* sysctls
+.\" XXX 记载route的文档/* sysctls
+.\" XXX 记载它们的所有文档
+.SH IOCTLS
+所有在
+.BR socket (7)
+中有描述 的 ioctl 都可应用于ip.
+.PP
+用于配置防火墙应用的ioctl记载在
+.B ipchains
+包的
+.BR ipfw (7)
+的文档中.
+.PP
+用来配置普通设备参数的ioctl在
+.BR netdevice (7)
+中有描述.
+.\" XXX 加入一章有关多点传送的内容
+.SH NOTES(备注)
+使用
+.B SO_BROADCAST
+选项要小心 \- 它在 Linux 中没有权限要求.
+不小心的广播很容易导致网络过载.对于新的应用协议而言,最
+好是使用多点广播组来替代广播.我们不鼓励使用广播.
+.PP
+有些其它的BSD套接字实现提供了
+.I IP_RCVDSTADDR
+和
+.I IP_RECVIF
+套接字选项来获得目的地址以及接收数据报的接口.Linux有更通用的
+.I IP_PKTINFO
+来完成相同任务.
+.PP
+.SH ERRORS(错误)
+.\" XXX记载所有错误的文档.我们确实应该修复内核以返回更统一的错误信息(ENOMEM对
+ENOBUFS,EPERM对EACCES等.)
+.TP
+.B ENOTCONN
+操作只定义于连接的套接字,而该套接字却没有连接.
+.TP
+.B EINVAL
+传递无效的参数.
+对于发送操作,这可以因发送到一个
+.I blackhole(黑洞)
+路由而引发.
+.TP
+.B EMSGSIZE
+数据报大于该路径上的 MTU,并且它不能被分成碎片.
+.TP
+.B EACCES
+没有必要权限的用户试图执行一项需要某些权限的操作.
+这包括:
+在没有
+.B SO_BROADCAST
+标识设置的情况下发送一个包到广播地址.
+通过一条
+.I 禁止的
+路由发送包.
+在没有
+.B CAP_NET_ADMIN
+或者有效用户标识不为0的情况下修改防火墙设置.
+在没有
+.B CAP_NET_BIND_SERVICE
+能力或者有效用户标识不为零0的情况下绑定一个保留端口.
+
+.TP
+.B EADDRINUSE
+试图绑定到一个已在使用的地址.
+.TP
+.BR ENOMEM " 和 " ENOBUFS
+没有足够的内存可用.
+.TP
+.BR ENOPROTOOPT " 和 " EOPNOTSUPP
+传递无效的套接字选项.
+.TP
+.B EPERM
+用户没有权限设置高优先级,修改配置或者发送信号到请求的进程或组.
+.TP
+.B EADDRNOTAVAIL
+请求一个不存在的接口或者请求的源端地址不是本地的.
+.TP
+.B EAGAIN
+在一个非阻塞的套接字上进行操作会阻塞.
+.TP
+.B ESOCKTNOSUPPORT
+套接字未配置或者请求了一个未知类型的套接字.
+.TP
+.B EISCONN
+在一个已经连接的套接字上调用
+.BR connect (2) .
+.TP
+.B EALREADY
+在一个非阻塞的套接字上的连接操作已经在进行中.
+.TP
+.B ECONNABORTED
+在一次
+.BR accept (2)
+执行中连接被关闭.
+.TP
+.B EPIPE
+连接意外关闭或者被对端关闭.
+.TP
+.B ENOENT
+在没有报到达的套接字上调用
+.B SIOCGSTAMP .
+.TP
+.B EHOSTUNREACH
+没有有效路由表记录匹配目的地址.该错误可以被来自远程路由器的
+ICMP消息或者因为本地路由表的缘故而引发.
+.TP
+.B ENODEV
+网络设备不可用或者不适于发送IP.
+.TP
+.B ENOPKG
+内核子系统没有配置.
+.TP
+.B ENOBUFS, ENOMEM
+没有足够的空闲内存.
+这常常意味着内存分配因套接字缓冲区的限制而受限,
+而不是因为系统内存的缘故,但是这也不是100%正确.
+.PP
+其它错误可能由重叠协议族生成;参看
+.BR tcp (7),
+.BR raw (7),
+.BR udp (7)
+和
+.BR socket (7).
+.SH VERSIONS(版本)
+.IR IP_PKTINFO ,
+.IR IP_MTU ,
+.IR IP_PMTU_DISCOVER ,
+.IR IP_PKTINFO ,
+.IR IP_RECVERR
+和
+.IR IP_ROUTER_ALERT
+是Linux 2.2中的新选项.
+.PP
+.B struct ip_mreqn
+也是新出现在Linux 2.2中的.Linux 2.0只支持
+.BR ip_mreq .
+.PP
+sysctl是在Linux 2.2中引入的.
+.SH COMPATIBILITY(兼容性)
+为了与Linux 2.0相容,仍然支持用过时的
+.BI "socket(PF_INET, SOCK_RAW, "protocol ")"
+语法打开一个
+.BR packet (7)
+套接字.我们不赞成这么用,而且应该被
+.BI "socket(PF_PACKET, SOCK_RAW, "protocol ")"
+所代替.主要的区别就是
+新的针对一般链接层信息的
+.B sockaddr_ll
+地址结构替换了旧的
+.B sockaddr_pkt
+地址结构.
+.SH BUGS
+有许多不连贯的错误码.
+.PP
+没有描述用来配置特定IP接口选项和ARP表的ioctl.
+.SH AUTHORS(作者)
+该man页作者是Andi Kleen.
+.SH SEE ALSO(另见)
+.BR sendmsg (2),
+.BR recvmsg (2),
+.BR socket (7),
+.BR netlink (7),
+.BR tcp (7),
+.BR udp (7),
+.BR raw (7),
+.BR ipfw (7).
+.PP
+RFC791:原始IP规范.
+.br
+RFC1122:IPv4主机需求.
+.br
+RFC1812:IPv4路由器需求.
+\" 私语: XXX 自动连接 INADDR REUSEADDR
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/07/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/lilyfaq.7 b/src/man7/lilyfaq.7
new file mode 100644
index 0000000..e7e5770
--- /dev/null
+++ b/src/man7/lilyfaq.7
@@ -0,0 +1,390 @@
+.IX Title "lilybbs-linux入门以及精华区导读"
+.TH lilybbs faq "2004-05-01" "lilybbs-linux入门以及精华区导读"
+.SH NAME
+lilybbs-faq \- linux入门以及百合 Linux 版精华区导读
+.SH "QUESTIONS 问题与解答"
+.SS "不需要任何命令的简单介绍"
+.TP
+历史
+.
+(APUE 提到了1990年之前的unix历史,还有各种标准 ANSI ISO IEEE posix xpg3....
+但是linux 和 BSD 尤其是freebsd 在其后才大行其道)
+unix 的历史与 c 是紧密相关的,无论是产生发展还是后来的标准制定。
+标准的制定反映出的,是当时的竞争之激烈。竞争在标准制定之后得到了抑制,
+但是这段纷争的时间却使unix的发展减缓了
+另一个阻碍发展的因素是版权,BSD的发展被延迟了,linux在版权上的障碍才刚刚开始
+.
+历史问题可以参阅精华区的“历史”目录
+.TP
+版权模式
+.
+自由软件版权和开源软件版权的区别,在于对衍生工作的限制。
+GPL 的限制指出,你可以修改GPL软件,但是如果要再发行修改过的版本,
+就必须允许其他任何人对这个版本进行再次修改。根据这一条,很多讨论都是
+没有必要的。如果你的修改不会再发行,那么就不必考虑是否公布修改的细节。
+也就是说,政府/军队的保密限制和GPL是不会冲突的。
+FDL 的限制似乎仅仅需要保留声明
+这种保证用户权力的做法是否有道理,还是不清楚
+开源软件版权,例如BSD和类似的X版权,要求在任何衍生工作中保留原作者的信息
+对再次发行修改后的版本没有限制
+不明白为什么要这样做--其中有一种自信,“舍我其谁”的勇气吧
+参阅精华区“历史文化”目录
+.TP
+合作开发模式
+.
+有很多工具用于实现合作开发
+参阅精华区“软件开发”目录
+.TP
+linux最吸引人的地方是什么?
+.
+很多人想知道linux为什么那么好,为什么让人着迷
+我想我喜欢它,因为它的历史悠久,结构很清楚很漂亮,很多思想很巧妙
+也许仅仅是“历史”就足够了。怀古的人不在少数吧
+合作开发,集中大家的智慧,从中可以产生无限的可能
+自由?共产主义的狂热精神?天下大同?
+当然,最直接的就是可以牢牢地将计算机控制在自己手里,想把它修饰成
+什么样子就做成什么样子,可以想出和别人完全不同的生活方式,比如
+iloveqhq的scheme生活环境,是一般人享受不到的
+各种新鲜的想法,随时可以试验一下--让想法时时刺激头脑
+象一个游戏,耗时,费力,需要经常上论坛找攻略,从来没有一定的玩法
+.TP
+FUD 是什么意思?
+.
+2003年末,伴随SCO对各个有关linux的公司的指控,还有对用户的威胁恐吓,
+各种媒体也纷纷兴风作浪,发表耸人听闻的新闻,例如新浪的一些报道。
+FUD 不仅指这些不负责任的话,还包括对linux等自由软件/开源软件的怀疑,
+对自身的怀疑我自己认为过分的狂热也可以叫做FUD。
+总之,没有平和的态度就没办法实实在在地作事情,所以技术问题之外,
+争论还是少一点好,怀疑更要少一点
+其实所有初学者都会情不自禁地自称“菜鸟”,会“问弱弱的问题”。问题在于,
+有没有抓紧时间提高水平
+.TP
+目录 文件 路径概念
+.
+APUE 中开始就讲目录 文件 路径的概念,因为这几个概念太基础了。自从
+“文件”出现之后,又出现了层次目录结构,对计算机中资源的管理才逐步
+发展起来。文件很适合于描述计算机上的资源
+unix的目录结构是非常严谨的树形结构,根目录是“/”,其他目录和文件都必须
+在这个目录下面。每个目录下面都可以有子目录和文件,目录和文件名称的长度
+是与文件系统有关的
+路径是引用一个目录或文件时用到的,指示它的位置的字符串。绝对路径是说
+从根目录“/”开始,沿着目录树找到需要引用的目录或文件,然后将中间经历的
+节点都写出来。例如,“/root/abc” 是说要找到“abc” 文件,就必须从
+“/”开始,中间经历 “root” 目录才能找到。
+当前目录是说用户正处于树形目录的哪个节点上,相对路径就是要引用的目录
+或文件相对于当前目录的位置。例如,我现在在“/root” 目录当中,要引用
+“/root/def/xyz” 的话,只要用 “def/xyz” 就可以了
+.TP
+文件类型
+.
+文件有不同的类型,在windows里就可以看到,有文本文件,图像,声音,视频
+但是在linux中的文件类型要更多。例如,符号链接就是非常有用的类型
+另外,linux中的二进制可执行文件是ELF格式的,不需要扩展名;而windows中
+是PE格式,有固定的扩展名。所以,两个系统的应用程序不能换用,有朝一日也许可以
+linux中很重要的一种文件就是设备文件。几乎所有的设备都有一个对应的文件,
+在“/dev”当中
+例如,硬盘harddisk简称hd,那么系统中的第一个硬盘就是hda,第二个就是hdb.....,
+然后对应的设备文件就是“/dev/hda”。硬盘上的各个分区用数字来编号,例如
+第一个硬盘的第一个分区就是“/dev/hda1”,第二个分区就是“/dev/hda2”
+再举一个例子,显卡的设备文件“/dev/fb0”,鼠标设备文件“/dev/input/mice”
+和“/dev/psaux”
+要注意的是,linux中的可执行文件可以是二进制的,也可以是文本文件。
+“可执行”仅仅是文件的一个属性而已,不像windows中由于文件系统中能保存的
+属性信息少,只能通过扩展名来识别文件类型。linux中的文件可以不用扩展名,
+也可以用任意的扩展名各种各样的文件类型,是为了将不同的对象进行统一的处理。
+我们可以用open lseek read write close 来读写一个文本文件,也可以用这几个
+函数来处理鼠标,让声卡播放一段声音,读写一块硬盘(如果你敢的话)。
+在windows中,不同的设备处理的方法是不同的,而unix环境中的处理方法是
+整齐划一的。控制方法一般是fcntl和ioctl。(谁能告诉我ioctl犯了什么错误了?)
+.TP
+硬盘分区方式
+.
+硬盘有很多种,分区也有各种各样的方法。linux支持它们,但是常用的分区方法
+就只有一种了。这种分区方法的要求是这样,一块硬盘上只能有最多四个主分区,
+最多一个扩展分区;在扩展分区中可以划分无限多的逻辑分区。记住这三个概念。
+每个分区的第一个扇区一般都是保留分区信息的,数据一般从第二个扇区开始。
+分区信息中很重要的内容是“下一个分区的位置在什么地方”还有“本分区的
+大小是多少”。因此,linux对分区进行编号的顺序并不是硬盘上分区的物理排列顺序,
+而是从第一个分区开始,不断查找下一个分区。这样的结果是编号很容易弄错。
+要处理分区时,一定要把当前分区情况备份一下
+pqmagic分区软件不如linux中的分区软件好用,因为它对混乱的分区编号处理
+更容易出错
+.
+启动引导程序一般都装到某个分区的第一个扇区里面,和分区信息放到一起。
+但是,如果安装启动引导程序时指定的设备错了,那么可能会把数据破坏掉,
+或者将其他分区的引导程序破坏掉。典型的情况是这样:windows将自己的引导程序
+放在第一个分区--主分区1的开头,我们的linux fans想把linux的引导程序,
+lilo或者grub放到整个硬盘的开头--MBR里面。MBR的设备名是 “/dev/hda”,
+但是主分区1的设备名是 “/dev/hda1”。一个不小心,系统就启动不了,坏掉了
+.TP
+国际化,locale的概念,utf8 等字符编码的含义和用法
+.
+后两个已经不用再多说了。是很过时的话题。但是前日还有人问turbolinux是不是内核汉
+化的。用户并不是直接和内核打交道,为什么要汉化内核呢?目前的内核包含各种编码,
+用于文件名的转换,但是并没有包含字体,因为用户不是直接和内核打交道!
+国际化是整个系统范围内的,对编码进行规范,对输入输出方式的函数接口和通信协议进
+行整体的设计,提供处理各种语言环境的统一方法。本地化中,对编码的规定和对日期时
+间、货币格式的规定是国家标准,而输入法、字体还有应用程序界面的翻译,还需要大家
+共同努力。
+国际化和本地化都应当在应用程序中实现,例如zhcon和cce。窗口系统中的国际化和本地
+化也是由应用程序实现的,窗口系统本身只提供通信协议
+zhcon还不是很完善,支持的编码太少了
+.TP
+中文化是本地化的一种,终端的本地化不是很完整
+.
+对世界上所有的字符进行编码,就是unicode。但是,具体的实现方法有很多种,有的采用
+定长编码,有的采用变长编码。utf8编码是变长的,能实现unicode的大部分要求
+zh_CN.UTF-8,zh_CN.GB18030 这些locale 的定义,前一部分是国家代码,语言代码,后
+一部分是编码。不同的国家代码和语言代码对应着不同的输入法,日期时间货币格式等等
+,对用户比较重要,编码则不是很重要,不同的语言可以使用相同的编码,推荐使用utf8
+.TP
+模块化的设计思想 界面无关 设备无关
+.
+这一段还没有想好
+很多程序是和界面没有关系的。例如,字体的使用一般使用Xft2字体库,但是它和窗口环
+境没有必然联系。大部分bt工具是和界面没有关系的。图形应用程序
+我们使用计算机时,我们的一举一动都是在和系统通信。系统中程序执行时也在互相通信
+。想要打开输入法,我们按下ctrl-space,这时候输入法和应用程序之间就通过XIM协议开
+始通信了--过些日子,也许就不是这种协议了,但是通信是一定存在的
+一方面,每个程序都关心自己的功能,另一方面,每个程序都要和其他程序进行通信。
+.TP
+进程的概念 线程
+.
+APUE 中提到,进程是一个程序的运行中的实例。进程有很多属性,比如编号,所有者,当
+前运行状态,启动时的命令行,环境变量,运行时间,打开了什么文件....
+线程和进程类似,也有很多属性。同一个进程的不同线程可以很容易地互相访问数据。so
+laris的线程实现很不错,非常灵活
+.TP
+什么发行版好?什么unix好?
+.
+精华区目录中有各种unix的对比,linux的使用感受,可以看一看
+还有对书和网站的推荐
+debian 发展太慢了,除非用unstable 版本,但是那又太快了。用 knoppix 上上手不错
+redhat 一直很好用,但是升级时最好重装系统。现在fedora的网络升级不知道能不能完全
+升级?
+redhat对中文的支持也很好,但是需要手动安装的软件比较多
+turbolinux magic 还有国内厂商的版本 对中文支持不错
+个人不喜欢mandrake,很难定制。slackware 需要自己处理的东西太多了
+freebsd 的使用和debian 很相似,自动化程度很高
+.SS "需要综合使用命令才可以完成的操作"
+.TP
+文件权限
+.
+文件权限并不是文件类型。所谓“可执行”,仅仅是文件的权限而不是类型。
+传统的文件权限是九个字符rwxrwxrwx三个一组一共三组,再加上文件所有者和组。高级的
+文件权限就不是这么简单了,类似ntfs,可以指定任何用户/组对某个文件的各种各样的权
+限用 “ls -l” 命令可以看到当前目录中所有目录和文件的权限
+用 “chmod” “chown” 和 “chgrp” 命令可以修改权限
+.TP
+运行程序 来自bash手册页
+.
+假如看到文件的权限中带有x,那么它是一个可执行的程序。要执行它,可以使用相对路径
+,也可以使用绝对路径。例如,我的目录中有一个“run-me” 文件是可执行的,那么我可
+以运行 “/root/bin/run-me” ,或者先运行 “cd /root” 再运行 “bin/run-me”。
+假如说这个可执行文件的位置在 “/usr/bin” 当中,那么我不必使用路径也可以直接执
+行它,因为环境变量 “PATH” 中包含了 “/usr/bin”。运行 “export” 可以看到 “
+PATH” 的定义
+.TP
+具体目录的作用 来自FHS 标准
+.
+这个标准不是很正式,但是很多unix系统都在用。意思就是,“/” 根目录下面的子目录
+和文件都有它们各自的用处,不能随意增加删除。比如说,“/dev” 就是设备,“/etc”
+ 就是所有配置文件,“/var” 是应用程序自动管理的数据,比如用rpm安装了一个软件,
+rpm会将那个软件的信息存在“/var” 当中。“/usr” 当然就是应用程序的目录。“/bo
+ot” 是内核还有启动时要用到的文件。试一试,“ls lR /” :)
+.TP
+安装和删除软件--最简单的办法
+.
+最简单的,把这个软件包含的文件--一般是一个可执行文件,复制到 “/usr” 当中就
+可以了。复制到什么地方呢?FHS 对 “/usr” 目录中的子目录也有规定。“/usr/bin”
+ 是可执行文件,“/usr/lib” 是库文件,就是xxxxxx.so.1 之类的,“/usr/share” 是
+不需要修改的数据,比如帮助手册,桌面图标等等。
+要卸载软件,只要从“/usr” 当中把复制过去的文件删掉就可以了
+复制用 cp 命令,删除用 rm 命令。小心不要误删除了有用的东西
+和windows里面不太一样,不会在一个系统中安装四个或者五个QQ却仍然找不到QQ装在什么
+地方。一般安装软件要用make,rpm 或者dpkg 等等方法,不用自己操心复制删除文件
+.TP
+进程间的关系,应当使用APUE 中的叙述
+.
+用ps 命令可以查看进程。用top命令可以动态地查看进程。当然,要搞清楚输出是什么意
+思,需要仔细看看帮助
+fg 和 bg 可以在一些进程中切换
+kill 和killall 可以控制进程停止和退出
+一边执行命令,一边可以到“/proc” 目录看一看。这个目录是整个系统的情况,包括硬
+件和软件的信息。多练一练 “cd”,“ls” 还有 “cat”。看了足够多之后,对于ps 和
+top 命令的输出就大概明白了。我认为“/proc” 是新手训练的最佳场合
+.TP
+fork exec 环境变量 守护进程(daemon)
+.
+.TP
+shell 编程初步-shell,awk,perl
+.
+.TP
+命令
+.
+cd ls ;cat less ;rm cp mv ln ;mkdir chmod chgrp ;
+reboot poweroff ;mount umount df du ;tar make ;
+fdisk parted ;vi ;man info ;
+rpm apt-get apt-cache dpkg ;lilo grub modprobe ;
+gcc g++ ;ps fg bg top ;
+最常用的命令是不是poweroff 和 reboot ?
+.TP
+命令的通用选项
+.
+cd -
+切换到上次所在的目录
+cd ..
+切换到上层目录
+ls -lh
+很多命令的参数中,“-h” 表示的是将文件大小转换为以 “MB” 和 “kB” 为单位
+“-l” 是长格式,可以看到文件更多的信息
+df -h
+du -h
+查看磁盘空间,已用多少,剩余多少
+free
+查看内存和交换空间使用情况。不过一般用top来看更好一些
+less -isr
+可以用这个命令来看看很多类型的文件的内容,包括文本文件,压缩包等等。加上参数就
+能处理中文了
+rm -rf
+强制删除,包括目录和文件
+cp -a
+完全复制,保留原来文件的所有属性
+cp -R
+复制,包括目录和文件。默认不包括目录
+ln -s
+建立符号链接。符号链接的目标可以是目录或文件,也可以不存在。产生的新文件和链接
+目标属性和作用完全一致。
+tar zxf
+tar zcf
+tar jxf
+tar jcf
+创建压缩文件(c)和解压缩(x)
+j 对应的是 .tar.bz2,而 z 对应的是 .tar.gz
+fdisk -l
+列出一个硬盘的分区情况。fdisk 命令交互执行更有意思
+rpm -ivh
+rpm -Uvh
+安装一个软件包 或者升级一个软件包
+rpm -qip
+rpm -qpl
+查询一个软件包的信息和内容
+rpm -qf
+查询一个文件属于哪个软件包
+apt-get update
+升级整个系统,但是不会强制升级一些不合规范的内容
+apt-get install
+安装一个软件。debian最吸引人的地方就在于容易地安装和删除软件
+dpkg -i
+dpkg -l
+apt-cache search
+如果软件名称更容易记就好了
+.SS "实习"
+.TP
+安装X输入法
+.
+X 输入法一般需要两个环境变量,一个是 XMODIFIERS, 另外一个是 LC_CTYPE
+比如要使用fcitx 输入法,XMODIFIERS 最好是 “@im=fcitx” (也可以是其他值),LC
+_CTYPE 是一个locale 类型的变量,其中的国家代码必须是zh,语言代码和编码倒是无所
+谓再比如要使用scim 输入法,XMODIFIERS 应当是 “@im=scim” , LC_CTYPE 在输入
+中文时同上,输入其他文字时可以是其他国家代码。
+当然,如果你的系统中连中文字体都没有,就不要指望有中文输入法了。
+因为不同的进程有自己独特的环境变量设置,所以完全可以在同一个窗口系统的不同应用
+程序中使用各种输入法,只要在启动应用程序之前先设置 XMODIFIERS 就可以了。
+安装X输入法最困难的是如何使输入法可以随着X窗口系统而启动和退出。不同的发行版有
+不同的运行输入法的方法,比如redhat/fedora 可以修改 “/etc/X11/xinit/xinit.d/xi
+nput” 文件
+.TP
+安装终端的中文环境
+.
+.TP
+遍历 /proc 目录
+.
+.TP
+安装软件 查询软件包
+.
+.TP
+配置文件,fstab lilo.conf grub.conf XF86Config
+.
+.TP
+配置lilo 或者 grub, 问题修复
+.
+建议找一个好一点的lilo.conf 或者 grub.conf 看一看,至少是能用的配置文件看一看,
+然后再着手进行修复工作。有可能需要手动从头开始写一个配置文件
+确定真的弄清楚了硬盘分区情况了吗?在BBS上求助时,一定要把分区情况和配置文件,还
+
+有导致出错的步骤都贴上来
+精华区lilo 和grub 目录都各有上百篇帖子,讲述安装和修复的过程
+.TP
+mount
+.
+mount 命令用于将一个设备挂载到一个目录上,然后就可以访问其中的文件了。
+mount 命令可选的参数非常多,但是要想正确挂载一个设备,必须搞清楚一些事情
+例如:
+	mount /dev/sda1 /mnt/u-disk/sda1 -t vfat -o defaults,users
+其中,USB移动硬盘设备对应的设备文件名是 “/dev/sda1”。如果设备文件名
+搞错了,那么挂载肯定会出错。很多出错都是因为 “/dev/sda1” 对应的设备
+根本不存在
+-o 可以指定的选项非常多,不同的文件系统都有自己特定的选项。常用的就是
+users iocharset fmask dmask rw/ro 这一些。iocharset 是自己的编码,在挂载
+windows 网上邻居的目录时,iocodepage 是对方的编码。
+看帮助,man mount 非常长。常见的/etc/fstab中的一行是这样:
+      /dev/hda1    /mnt/harddisk/C vfat defaults,users,umask=0 0 0
+如果是kernel-2.6 那么还可以加上fmask=111,dmask=0 来控制权限
+.TP
+安装X字体
+.
+非常简单。字体有两个系统,一个是旧一点的X系统,一个是新一点的Xft2系统。要想在两
+个系统中同时使用某个字体,需要将这个字体复制到某个“/usr/local/share/fonts” 的
+子目录中去,然后在 “/etc/X11/fs/config” 中加入这个目录,最后执行 “fc-cache 
+-fv” 刷新字体列表,“service xfs restart” 就可以了
+不同的系统中,完成这几个步骤的具体执行的命令可能不一样。复制字体应该都一样,然
+后可能需要将这个目录加入到 “/etc/X11/XF86Config” 当中去,最后也有可能需要重启
+动图形系统。要灵活一点
+.TP
+配置latex 和 ps 系统
+.
+.TP
+分区,重新安装系统
+.
+这里是实践部分。硬盘分区,常见的分区方法是一个主分区,一个扩展分区,然后在扩展
+分区中可以划分很多很多逻辑分区。也有分区方法是划分两个主分区,例如IBM的系统还原
+分区,还有dell也是这样。
+为linux系统分区可以只分一个swap分区和一个 “/” 分区。swap分区大小三五百M就可以
+了。而 “‘/’ 分区” 的说法只是为了方便,意思是将某个分区作为 “/” 目录来使用
+。类似的,如果安装程序要划分 “‘/boot’ 分区”,那么也是将某个分区作为 “/boo
+t” 目录来使用。
+任何一个目录都可以单独划为一个分区,例如可以将 “/usr/local” 目录单独划为一个
+分区,这样把数据放在里面,重装系统时不会被删除掉。
+高级的lvm和lvm2 只在大硬盘上才有用
+.SH "HISTORY 历史"
+.IX Header "背景介绍"
+版上讨论了很久是不是要提高技术性了。的确,大部分入门级问题在
+从前的帖子中都有涉及,精华区中大概也有答案,重复地提问“将有价值
+的论题淹没了”。
+.PP
+    要提高技术水平,就要找到更多的论题和提出更好的想法。但是,鲁
+迅先生说得好,要有“天才的土壤”才行。所以,对于新手问题也不能封
+杀。一种设想,是请几位熟练的使用者专人负责某一个方面的问题,用信
+件联系,然后把有价值的讨论结果发上来。但是,这样效率不高。
+.PP
+    我想试行一下这样的做法,就是入门级问题以及解答就跟在这个帖子
+后面,过一段时间就清理一下,总结到一篇文章中。请大家配合。暂时设
+定精华区的第19个目录和第29个目录分别用作已解决/未解决问题的保存
+之处。
+.PP
+    后续的第二篇帖子是一些快速解答,可以在firefox 的搜索栏中使用
+“页面内搜索”功能来查找关心的内容。
+.PP
+    欢迎修改
+.
+.SH Copyright
+Permission is granted to copy, distribute and/or modify this page 
+under the terms of the GNU Free Documentation License, Version 1.2 or 
+any later version published by the Free Software Foundation; with 
+no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
+.SH AUTHOR
+最后一次修改者:bbbush<bbbush at lilybbs>@2004年2月11日
+.PP
+最初的格式是txt 没有排版,没有链接
+.
diff --git a/src/man7/listen.7 b/src/man7/listen.7
new file mode 100644
index 0000000..2ec27f4
--- /dev/null
+++ b/src/man7/listen.7
@@ -0,0 +1,46 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "LISTEN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+LISTEN \- 监听一个通知
+
+.SH SYNOPSIS
+.sp
+.nf
+LISTEN \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBLISTEN\fR 将当前会话注册为通知条件 name
+.PP
+ 当执行了命令 NOTIFY name  后,不管是此会话还是其他联接到同一数据库的会话执行的, 所有正在监听此通知条件的会话都将收到通知, 并且接下来每个会话将通知与其相连的前端应用.请参考 NOTIFY  获取更多信息.
+.PP
+ 使用 UNLISTEN 命令,可以将一个会话内已注册的通知条件删除. 同样,会话退出时自动删除该会话正在监听的已注册通知条件.
+.PP
+ 前端应用检测通知事件的方法取决于 PostgreSQL 应用使用的编程接口. 如果使用基本的libpq库, 应用将 LISTEN 当作普通 SQL 命令使用,而且必须周期地调用 PQnotifies 过程来检测是否有通知到达. 其他像libpgtcl接口提供了更高级的控制通知事件的方法;实际上, 使用libpgtcl,应用程序员不应该直接使用 LISTEN 或 UNLISTEN. 请参考你使用的接口的文档获取更多细节.
+.PP
+NOTIFY [\fBnotify\fR(7)]
+的手册页包含更广泛的关于 LISTEN 和 NOTIFY 的使用的讨论.
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 通知条件名 (任何标识符)。
+.SH "EXAMPLES 例子"
+.PP
+ 在 \fBpsql\fR 里配制和执行一个监听/通知序列:
+.sp
+.nf
+LISTEN virtual;
+NOTIFY virtual;
+Asynchronous notification "virtual" received from server process with PID 8448.
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 LISTEN
+.SH "SEE ALSO 参见"
+NOTIFY [\fBnotify\fR(7)], UNLISTEN [\fBunlisten\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/load.7 b/src/man7/load.7
new file mode 100644
index 0000000..f7cf259
--- /dev/null
+++ b/src/man7/load.7
@@ -0,0 +1,26 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "LOAD" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+LOAD \- 装载或重载一个共享库文件
+
+.SH SYNOPSIS
+.sp
+.nf
+LOAD '\fIfilename\fR'
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+ 这个命令装载一个共享库文件到PostgreSQL服务器的地址空间。 一旦一个文件被装载,如果该文件前面曾经装载过,那么服务器首先会卸载它。 这条命令主要用于在一个共享库件修改后卸载和重载它。 要利用这个共享库件,我们必须用 CREATE FUNCTION [\fBcreate_function\fR(7)]
+命令声明函数。
+.PP
+ 文件名是和 CREATE FUNCTION [\fBcreate_function\fR(7)] 里描写的共享库的名字相同方法声明的; 特别要注意等是我们可以依赖搜索路径和自动附加系统标准共享库扩展名的特点。 参阅 Section 31.3 ``User-Defined Functions'' 获取更多细节。
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBLOAD\fR 是 PostgreSQL 扩展。
+.SH "SEE ALSO 参见"
+.PP
+CREATE FUNCTION [\fBcreate_function\fR(7)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/locale.7 b/src/man7/locale.7
new file mode 100644
index 0000000..0887b05
--- /dev/null
+++ b/src/man7/locale.7
@@ -0,0 +1,183 @@
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\"
+.\" 在包括本版权通告和许可声明的前提下,允许一字不捺地生成和发布本篇的拷贝版本.
+.\"
+.\" 在遵照本许可声明的条款完整地发布了原作品的前提下,允许复制和发布本手册的修改版本.
+.\"
+.\" 因为Linux内核和库经常修改,本手册页可能会出现错误或者过时.作者(们)对文中错误或者行文繁冗不
+.\" 承担责任,对因为使用包含在内的信息而造成的损失也不负责.对于许可免费的本手册,作者(们)可能在创
+.\" 作它时考虑层次各有不同,当工作专业化之后,也许能够达到一致.
+.\"
+.\" 将该手册版式化或者加工处理,如果没有包括原本,则必须公认本作品的版权和作者.
+.\"
+.TH LOCALE 7 "1993年4月24日" "Linux" "Linux Programmer's Manual(Linux程序员手册)"
+.SH NAME(名称)
+locale \- 描述多语言支持
+.SH SYNOPSIS(总览)
+.nf
+.B #include <locale.h>
+.fi
+.SH DESCRIPTION(描述)
+locale 就是一系列语言文化规则.
+它包括如下一些方面: 讯息的语言, 不同字符设置, 文字惯例, 等等.
+程序需要能够判断其 locale 并根据适合于不同文化的要求来运行.
+.PP
+头文件 
+.B <locale.h>
+声明了用于该项作业中的数据类型,函数和宏.
+.PP
+它声明的函数有:
+.B setlocale()
+用来设置当前 locale,
+.B localeconv()
+用来获得数字格式方面的信息.
+.PP
+程序可能需要的本地化信息会有不同的种类; 它们都以宏的方式声明
+把它们当做
+.B setlocale()
+的第一个参数来用, 就可以把其中一个设置为需要的 locale:
+.TP
+.B LC_COLLATE
+这用来修改函数
+.B strcoll()
+和
+.BR strxfrm()
+的执行方式, 其中 strxfrm() 函数用来以本地化字母表进行字符串比较.
+例如,
+德国升半音的 s 排序为 "ss".
+.TP
+.B LC_CTYPE
+修改字符处理分类函数如
+.B isupper()
+和
+.BR toupper() 
+的执行方式,
+还修改多字节字符函数如
+.B mblen()
+或者
+.BR wctomb()
+的执行方式.
+.TP
+.B LC_MONETARY
+修改由
+.B localeconv()
+返回的信息, 这些信息描述了数字, 以及诸如
+小数点和千进位逗号之类输出的常见格式的细节. 这些信息由函数
+.BR strfmon()
+在内部调用.
+.TP
+.B LC_MESSAGES
+修改显示的语言信息以及正值和负值的表达方式.
+GNU C-library包含:
+.B rpmatch()
+函数用于方便地使用这些信息.
+.TP
+.B LC_NUMERIC
+在考虑使用 locale 设置时,修改
+.B printf()
+和
+.B scanf()
+函数族使用的信息.该信息也可以由
+.B localeconv()
+函数读取.
+.TP
+.B LC_TIME
+修改
+.B strftime()
+函数的执行方式以显示适于当地格式的当前时间;
+例如,欧洲的绝大部分地区使用的是 24 小时的时钟,
+而美国则是 12 小时的时钟.
+.TP
+.B LC_ALL
+上述所有的.
+.PP
+如果
+.B setlocale()
+的第二个参数为空,
+则设置
+.BR """""" ,
+为默认的locale,它通过以下几步来确定:
+.IP 1.
+如果有非空的环境变量
+.BR LC_ALL ,
+则使用
+.B LC_ALL
+的值.
+.IP 2.
+如果存在一个与上述列出的种类同名的环境变量并且其不为空, 则使用该分类的值.
+.IP 3.
+如果有非空的环境变量
+.BR LANG ,
+则使用
+.B LANG
+的值.
+.PP
+关于本地数字格式的值用于由
+.B localeconv()
+函数返回的
+.B struct lconv ,
+其有以下声明:
+.nf
+struct lconv
+{
+/* 数码(非货币形式)信息. */
+
+char *decimal_point; /* 小数点字符. */
+char *thousands_sep; /* 千数的分隔符. */
+/* 每个元素就是每组的阿拉伯数字;指数越高的元素在越左边.一个值为CHAR_MAX的元素表示不需继续
+分组了.一个值为0的元素表示前面的字符用于所有更左边的组. */
+char *grouping;
+
+/* 货币信息. */
+
+/* 前三个字符是ISO 4217定义的流通符号.
+第四个字符是分隔符. 第五个字符是'\0'. */
+char *int_curr_symbol;
+char *currency_symbol; /* 当地货币符号. */
+char *mon_decimal_point; /* 小数点字符. */
+char *mon_thousands_sep; /* 千数的分隔符. */
+char *mon_grouping; /* 如前述的'分组'元素. */
+char *positive_sign; /* 正值符号. */
+char *negative_sign; /* 负值符号. */
+char int_frac_digits; /* 国际通用的数字. */
+char frac_digits; /* 本地使用的数字. */
+/* 如果currency_symbol后跟着一个正值则为1,如果顺序相反为0. */
+char p_cs_precedes;
+/* 如果在currency_symbol和正值之间是一个空格则为1. */
+char p_sep_by_space;
+/* 如果currency_symbol后跟着一个负值则为1,如果顺序相反为0. */
+char n_cs_precedes;
+/* 如果在currency_symbol和正值之间是一个空格则为1. */
+char n_sep_by_space;
+/* 正值和负值符号位置:
+数量值和currency_symbol在圆括号内则为0.
+符号字符串先于数量值和currency_symbol则为1.
+符号字符串在数量值和currency_symbol之后则为2.
+符号字符串后紧跟数量值和currency_symbol则为3.
+符号字符串紧跟在数量值和currency_symbol之后则为4. */
+char p_sign_posn;
+char n_sign_posn;
+};
+.fi
+.SH "CONFORMS TO(遵循规则)"
+POSIX.1
+.SH "SEE ALSO(另见)"
+.BR setlocale (3),
+.BR localeconv (3),
+.BR locale (1),
+.BR localedef (1),
+.BR rpmatch (3),
+.BR strfmon (3),
+.BR strcoll (3),
+.BR strxfrm (3),
+.BR strftime (3)
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.\" 中文版版权所有 riser,BitBIRD www.linuxforum.net 2000
+.\" 1993年7月24日由Rik Faith (faith at cs.unc.edu)修改
+.\" 1997年6月1日由Jochen Hein(jochen.hein at delphi.central.de)修改
+.SH "[中文版最新更新]"
+.BR 2001/07/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/lock.7 b/src/man7/lock.7
new file mode 100644
index 0000000..de69bbc
--- /dev/null
+++ b/src/man7/lock.7
@@ -0,0 +1,80 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "LOCK" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+LOCK \- 明确地锁定一个表
+
+.SH SYNOPSIS
+.sp
+.nf
+LOCK [ TABLE ] \fIname\fR [, ...] [ IN \fIlockmode\fR MODE ]
+
+where \fIlockmode\fR is one of:
+
+    ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
+    | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBLOCK TABLE\fR 获取一个表级锁,必要时等待任何冲突的锁释放。 一旦获取了这个锁,它就会在当前事务的余下部分一直保持。 (没有 UNLOCK TABLE 命令;锁总是在事务结尾释放。)
+.PP
+ 在为那些引用了表的命令自动请求锁的时候,PostgreSQL 总是尽可能使用最小限制的锁模式。LOCK TABLE  是为你在需要更严格的锁的场合提供的。 例如,假设一个应用在读已提交隔离级别上运行事务, 并且它需要保证在表中的数据在事务的运行过程中都存在。要实现这个目的, 你可以在查询之前对表使用 SHARE 锁模式进行锁定。 这样将保护数据不被并行修改并且为任何更进一步的对表的读操作提供实际的当前状态的数据, 因为 SHARE 锁模式与任何写操作需要的 ROW EXCLUSIVE 模式冲突, 并且你的 LOCK TABLE name IN SHARE MODE  语句将等到所有并行的写操作提交或回卷后才执行。因此,一旦你获得该锁,那么就不会存在未提交的写操作.
+.PP
+ 如果运行在可串行化隔离级别并且你需要读取真实状态的数据时, 你必须在执行任何数据修改语句之前运行一个 LOCK TABLE 语句。 一个可串行化事务的数据图象将在其第一个数据修改语句开始的时候冻结住。 稍后的 LOCK TABLE 将仍然阻止并发的写 --- 但它不能保证事务读取的东西对应最近提交的数值。
+.PP
+ 如果一个此类的事务准备修改一个表中的数据,那么应该使用 SHARE ROW EXCLUSIVE 锁模式,而不是 SHARE 模式。 这样就保证任意时刻只有一个此类的事务运行。不这样做就可能会死锁: 当两个并行的事务可能都请求 SHARE 模式,然后试图更改表中的数据时, 两个事务在实际执行更新的时候都需要 ROW EXCLUSIVE 锁模式, 但是它们无法再次获取这个锁。(请注意,一个事务自己的锁是从不冲突的, 因此一个事务可以在持有 SHARE 模式的锁的时候请求 ROW EXCLUSIVE 模式--但是不能在任何其它事务持有 SHARE  模式的时候请求。) 为了避免死锁,所有事务应该保证以相同的顺序对相同的对象请求锁, 并且,如果涉及多种锁模式,那么事务应该总是最先请求最严格的锁模式。
+.PP
+ 有关锁模式和锁定策略的更多信息,请参考 Section 12.3 ``Explicit Locking'' 。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要锁定的现存表的名字(可以有模式修饰)。
+
+ 命令 LOCK a, b; 等效于 LOCK a; LOCK b;。 表是按照 LOCK 命令中声明的顺序一个接一个顺序上锁的。
+.TP
+\fB\fIlockmode\fB\fR
+ 锁模式声明这个锁和那些锁冲突。锁模式在 Section 12.3 ``Explicit Locking'' 里描述。
+
+ 如果没有声明锁模式,那么使用最严格的模式 ACCESS EXCLUSIVE。
+.SH "NOTES 注意"
+.PP
+LOCK ... IN ACCESS SHARE MODE 需要在目标表上有 SELECT 权限。所有其它形式的 LOCK 需要 UPDATE 和/或 DELETE 权限。
+.PP
+\fBLOCK\fR 只是在一个事务块的内部有用 (BEGIN...COMMIT),因为锁在事务结束的时候马上被释放。 出现在任意事务块外面的 LOCK 都自动生成一个自包含的事务,因此该锁在获取之后马上被丢弃。
+.PP
+\fBLOCK TABLE\fR 只处理表级的锁,因此那些有 ROW  字样的锁都是用词不当。这些模式名字通常应该应该理解为用户视图在一个被锁定的表中获取行级的锁。 同样 ROW EXCLUSIVE 模式也是一个可共享的表级锁。 我们一定要记住,只要是涉及到 LOCK TABLE, 那么所有锁模式都有相同的语意,区别只是它们与哪种锁冲突的规则。
+.SH "EXAMPLES 例子"
+.PP
+ 演示在往一个外键表上插入时在有主键的表上使用 SHARE 的锁:
+.sp
+.nf
+BEGIN WORK;
+LOCK TABLE films IN SHARE MODE;
+SELECT id FROM films 
+    WHERE name = 'Star Wars: Episode I - The Phantom Menace';
+-- Do ROLLBACK if record was not returned
+INSERT INTO films_user_comments VALUES 
+    (_id_, 'GREAT! I was waiting for it for so long!');
+COMMIT WORK;
+.sp
+.fi
+.PP
+ 在执行删除操作时对一个有主键的表进行 SHARE ROW EXCLUSIVE 锁:
+.sp
+.nf
+BEGIN WORK;
+LOCK TABLE films IN SHARE ROW EXCLUSIVE MODE;
+DELETE FROM films_user_comments WHERE id IN
+    (SELECT id FROM films WHERE rating < 5);
+DELETE FROM films WHERE rating < 5;
+COMMIT WORK;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里面没有LOCK TABLE ,可以使用 SET TRANSACTION 来声明当前事务的级别。 PostgreSQL 也支持这个,参阅 SET TRANSACTION [\fBset_transaction\fR(7)] 获取详细信息。
+.PP
+ 除了 ACCESS SHARE,ACCESS EXCLUSIVE,和 SHARE UPDATE EXCLUSIVE  锁模式外, PostgreSQL 锁模式和 LOCK TABLE 语句都与那些在 Oracle 里面的兼容。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/mailaddr.7 b/src/man7/mailaddr.7
new file mode 100644
index 0000000..090be76
--- /dev/null
+++ b/src/man7/mailaddr.7
@@ -0,0 +1,121 @@
+.TH MAILADDR 7 "June 24, 1995" linux "Linux User's Manual" \" -*- nroff -*-
+.\"
+.\" Copyright (c) 1983, 1987 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley. The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\" @(#)mailaddr.7 6.5 (Berkeley) 2/14/89
+.\"
+.\" Extensively rewritten by Arnt Gulbrandsen . My
+.\" changes are placed under the same copyright as the original BSD page.
+.\"
+.\" fool hilith19: "
+.UC 5
+.SH NAME
+mailaddr \- 关于邮件地址的描述
+
+.SH DESCRIPTION 描述
+本手册给出的是 Internet 使用的 SMTP 邮件地址的简要描述。
+这些地址的通常的格式是
+.PP
+user at domain
+.PP
+这里的域 (domain) 是分级的子域的列表,子域间用点来分隔。
+例如下面的地址
+.PP
+eric at monet.berkeley.edu
+.br
+Eric Allman 
+.br
+eric at monet.berkeley.edu (Eric Allman)
+.PP
+都是同一个地址的有效的格式。
+.PP
+地址中的域部分 (``monet.berkeley.edu'') 
+可以是一个 internet 上的主机的名字,
+或者是一个逻辑上的邮件地址。域的部分大小写不敏感。
+.PP
+地址中的本地部分 (``eric'') 通常是一个用户名,
+但它的实际意义是由本地软件定义的。
+这部分可以大小写敏感,但通常大小写不敏感。
+如果你发现某个地址的本地部分象一堆乱码,
+原因通常是在不同的内部的电子邮件 (e-mail) 系统和网络
+间存在着网关。下面是一些例子:
+.PP
+"surname/admd=telemail/c=us/o=hp/prmd=hp"@some.where
+USER%SOMETHING at some.where
+machine!machine!name at some.where
+I2461572 at some.where
+.PP
+(它们分别是:一个 X.400 网关,一个到任意的没有适当的 internet 支持的内
+部邮件系统的网关 ,一个 UUCP 网关,最后一个是令人讨厌的用户命名策略)
+.PP
+真实姓名部分 (``Eric Allman'') 可放在最前面,在 < > 的外面;也可以在最后面
+在 ( ) 的里面。(严格的说两者是不一样的,但是论述两者的不同超出了本手册页的
+范围。)如果名字包含某些特定的字符,可以用" "括起来。特定的字符中最常见的
+是``.'':
+.PP
+"Eric P. Allman" 
+.SS Abbreviation. 缩略写法.
+.PP
+许多邮件系统允许用户略写域名。举个实例,在 berkeley.edu 的用户可以用
+``eric at monet''来给 Eric Allman 发邮件并侥幸成功。\fI这种做法是废弃了的。\fP
+.SS 路由地址
+.PP
+在某些环境下,可能必须给出一个消息到达最终目的地所要经过的主机的路径。
+正常的情况下这是自动的和不可见的,但有时不是,特别是在一些老的和破损的
+软件上出现。显示这些中继的地址在术语上叫``路由地址''。路由地址使用下面
+的语法:
+.PP
+<@hosta, at hostb:user at hostc>
+.PP
+这指定消息要被送到 hosta,从 hosta 到 hostb,最后到达 hostc。一些主机
+忽略路由地址并直接发送的 hostc。
+.PP
+路由地址经常发生在返回地址上,因为通常路过的每个主机上的软件都要增补路
+由地址。最常见的可能是忽略地址中除了``user at hostc''的部分,``user at hostc''
+部分确定了真正的发送者。
+.SS 邮件主管.
+.PP
+要求每一个站点都要有一个用户或用户别名被指定为"邮件主管",对于邮件系
+统的问题可以向此"邮件主管"发表。"邮件主管"的地址是大小写不敏感的。
+.SS "FREQUENTLY ASKED QUESTIONS 常见问题"
+rtfm.mit.edu 和许多镜像站点存储了一系列常见问题。请找到并使用这些文档,
+这些文档遍布世界。
+.I mail/inter-network-guide
+解说如何在不同的网络间发送邮件。
+.I mail/country-codes
+顶级域的列表(例如 ``no'' 是 Norway ,``ea'' 是 Eritrea).
+.I mail/college-email/part*
+给出一些关于怎样找出邮件地址的位置的小技巧。
+.SH FILES 相关文件
+.I /etc/aliases
+.br
+.I ~/.forward
+.SH "SEE ALSO 参见"
+.BR binmail (1),
+.BR mail (1),
+.BR mconnect (1),
+.BR forward (5),
+.BR aliases (5),
+.BR sendmail (8),
+.BR vrfy (8),
+RFC822 (Arpa Internet 文本消息格式的标准).
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/man.7 b/src/man7/man.7
new file mode 100644
index 0000000..a6c9194
--- /dev/null
+++ b/src/man7/man.7
@@ -0,0 +1,651 @@
+.\" (C) Copyright 1992-1999 Rickard E. Faith and David A. Wheeler
+.\" (faith at cs.unc.edu and dwheeler at ida.org)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sun Jul 25 11:06:05 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sat Jun  8 00:39:52 1996 by aeb
+.\" Modified Wed Jun 16 23:00:00 1999 by David A. Wheeler (dwheeler at ida.org)
+.\" Modified Thu Jul 15 12:43:28 1999 by aeb
+.\"  [todo: split this into man.7 describing the macros
+.\"   and manpage.7 describing the Linux man page conventions]
+.\"
+.TH MAN 7 1999-06-16 "Linux" "Linux Programmer's Manual"
+.SH NAME
+man \- 格式化手册页的宏
+.SH "总览 SYNOPSIS"
+.B groff \-Tascii \-man
+.I file
+\&...
+.LP
+.B groff \-Tps \-man
+.I file
+\&...
+.LP
+.B man
+.RI [ section ]
+.I title
+.SH "描述 DESCRIPTION"
+此手册页解释了
+.B "groff tmac.man"
+宏包 (通常叫做
+.B man
+宏包) 以及相关的创建手册页的惯例。
+开发者可以使用这个宏包来为 linux 书写或移植手册文档。
+它与其他版本的这个宏包一般是兼容的,因此移植不是一个大问题
+(但是 NET-2 BSD 发布中使用了一个完全不同的宏包叫做 mdoc,参见
+.BR mdoc (7)).
+.PP
+注意 NET-2 BSD mdoc 手册页也可以使用
+.B groff
+处理,只要指定
+.B \-mdoc
+选项而不是
+.B \-man
+选项。推荐使用
+.B \-mandoc
+选项,因为这样会自动判断应当使用哪一个。
+.SH "导言 PREAMBLE"
+一篇手册页的第一个命令 (注释行之后) 应当是
+.RS
+.sp
+.B \&.TH
+.IR "title section date source manual" ,
+.sp
+.RE
+这里:
+.RS
+.TP 10
+.I title
+手册页的标题 (例如,
+.IR MAN ).
+.TP
+.I section
+手册页的章节号应当放在这里 (例如,
+.IR 7 ).
+.TP
+.I date
+最后修改日期 -- 记住要在每次修改过此手册页之后修改它,
+这样可以方便地进行版本控制
+.TP
+.I source
+命令的来源
+.sp
+对于二进制文件,使用这样的表述:
+.IR GNU ", " NET-2 ", " "SLS Distribution" ", " "MCC Distribution" .
+.sp
+对于系统调用,使用它适用的内核版本来表述:
+.IR "Linux 0.99.11" .
+.sp
+对于库调用,使用函数的来源来表述:
+.IR GNU ", " "BSD 4.3" ", " "Linux DLL 4.4.1" .
+.TP
+.I manual
+手册的标题 (例如:
+.IR "Linux Programmer's Manual" ).
+.RE
+.PP
+注意 BSD mdoc 格式的手册页以
+.B Dd
+命令开始,而不是
+.B TH
+命令
+.PP
+手册章节传统上如下定义:
+.RS
+.TP 10
+.B 1 Commands
+用户可从 shell 运行的命令
+.TP
+.B 2 System calls
+必须由内核完成的功能
+.TP
+.B 3 Library calls
+大多数
+.I libc
+函数,例如
+.BR qsort (3))
+.TP
+.B 4 Special files
+.IR /dev )
+目录中的文件
+.TP
+.B 5 File formats and conventions
+.I /etc/passwd
+等人类可读的文件的格式说明
+.TP
+.B 6 Games
+.TP
+.B 7 Macro packages and conventions
+文件系统标准描述,网络协议,ASCII 和其他字符集,还有你眼前这份文档以及其他东西
+.TP
+.B 8 System management commands
+类似
+.BR mount (8)
+等命令,大部分只能由
+.I root
+执行
+.TP
+.B 9 Kernel routines
+这是废弃的章节。
+原来曾想把一些关于核心的文件放在这里,
+但是实际上只有极少数可以写成文件放在这里,而且它们也很快过时了。
+核心开发者可以找到其他更好的资源。
+.RE
+.SH "段 SECTIONS"
+段以
+.B \&.SH
+开始,后跟标题名。如果标题包含空格并且和
+.BR \&.SH 
+在同一行,则需在标题上加双引号。
+传统的或建议的标题包括:
+NAME, 总览 SYNOPSIS, 描述 DESCRIPTION, 返回值 RETURN VALUE,
+退出状态 EXIT STATUS, 错误处理 ERROR HANDLING, 错误 ERRORS,
+选项 OPTIONS, 用法 USAGE, 示例 EXAMPLES, 文件 FILES, 
+环境 ENVIRONMENT, 诊断 DIAGNOSTICS, 安全 SECURITY,
+遵循 CONFORMING TO, 注意 NOTES,
+BUGS, 作者 AUTHOR, 和 参见 SEE ALSO.
+在适合使用约定标题的地方,请使用它;
+这样做可以使文章更易读、易懂。
+不过,只要您的标题能够增加易懂性,请放心使用。
+唯一必须的标题是
+.IR NAME ,
+他应是手册页的第一段,后面应紧跟对该命令的简单描述。比如:
+.RS
+.sp
+\&.SH NAME
+.br
+chess \\- the game of chess
+.sp
+.RE
+请一定要按照这个格式来写,注意在短横线 (dash `-') 前要有个斜杠 (slash `\').
+这种语法结构在
+.BR makewhatis (8)
+程序为
+.BR whatis (1)
+和
+.BR apropos (1)
+命令建立简短命令描述时要用到。
+.PP
+其他约定段的内容应为:
+.TP 14
+.B 总览 SYNOPSIS
+简要描述命令或函数接口。
+对命令,显示他的命令和参数(包括各种选项);黑体表示各种参数,
+下划线(或斜体字)表示可以替换的选项;
+方括号[]中的是可选项,竖线 | 用于把几个选项间隔开,
+小括号()中的部分可以自动重复。
+对函数,显示需要的数据声明或需
+.B #include
+包含的项目,后跟函数声明。
+.TP
+.B 描述 DESCRIPTION
+解释命令、函数或格式的用途。
+说明其如何与文件及标准输入交互,他们的标准输出及标准错误。
+必须要指明的细节。描述一般情况。
+选项和参数信息放在 OPTIONS(选项)段。
+如果有语法说明和一些复杂的设定,
+建议把它们放到 USAGE(用法)段(本段中最好只写一个概要)。
+.TP
+.B 返回值 RETURN VALUE
+列出程序或函数会返回的值,指出引发返回值的条件或原因。
+.TP
+.B 退出状态 EXIT STATUS
+列出可能的退出状态的值,指出引起返回的程序或原因。
+.TP
+.B 选项 OPTIONS
+指出程序可用的选项,及其作用。
+.TP
+.B 用法 USAGE
+描述程序的较高级的使用方法。
+.TP
+.B 示例 EXAMPLES
+provides one or more examples describing how this function, file or
+command is used.
+.TP
+.B 文件 FILES
+列出程序或函数使用到的文件,
+比如配置文件、启动文件和程序直接操作的文件。
+给出文件的绝对路径,
+使用安装程序调整这些路径以使其与用户的实际情况相符。
+对大多数程序来说,缺省的安装路径是 /usr/local,
+所以你的文件要与此一致。
+.TP
+.B 环境 ENVIRONMENT
+列出影响你的程序的所有环境变量,并说明影响的原因。
+.TP
+.B 诊断 DIAGNOSTICS
+写出常会出现的错误概述,并说明解决的办法。
+你无需解释系统错误信息或信号,
+除非它们会影响到您的程序。
+.TP
+.B 安全 SECURITY
+讨论安全问题和相关话题。对应予避免的配置和环境,
+可能有安全隐患的命令等等给出警告,
+特别是当它们不是很明显时。
+单独用一段来讨论安全并不必要;如果比较好理解的话,把它放在其他段中
+(比如 描述 或 用法 段)。但是,最好加上它。
+.TP
+.B 遵循 CONFORMING TO
+描述它实现的任何标准或约定
+.TP
+.B 注意 NOTES
+提供杂项注意事项
+.TP
+.B BUGS
+列出局限、已知的缺点或不便之处,还有其他可能存在的问题。
+.TP
+.B 作者 AUTHOR
+列出程序或文件作者,联系办法等。
+.TP
+.B 参见 SEE ALSO
+以字母顺序列出相关的手册页(man pages)。通常来讲,这是一个手册页的最后一段。
+.SH 字体 FONTS
+虽然在 UNIX 世界中有各种对手册页(man pages)的不同约定,
+但在 linux 系统下存在一个字体的标准:
+.IP
+对函数,其参数通常用下划线(或斜体),
+.IR "在总览(SYNOPSIS)中也是这样"
+,其他部分用黑体。
+例如
+.RS
+.BI "int myfunction(int " argc ", char **" argv );
+.RE
+.IP
+文件名用下划线(或斜体),例如,.IR "/usr/include/stdio.h" ),
+但在总览(SYNOPSIS)中,包含的文件用黑体,例如
+.BR "#include <stdio.h>" ).
+.IP
+专用宏,一般大写表示,用黑体(如:
+.BR MAXINT ).
+.IP
+列举错误代号时,代号用黑体(这种列举通常使用
+.B \&.TP
+宏命令)。
+.IP
+对其他手册页的引用(或本页中某主体的引用)用黑体。
+手册章节号用普通体(如: 
+.BR man (7)).
+设置字体的宏命令如下:
+.TP 4
+.B \&.B
+黑体
+.TP
+.B \&.BI
+黑体和下划线(或斜体)交替(描述函数时非常有用)
+.TP
+.B \&.BR
+黑体和普通体交替(描述引用时非常有用)
+.TP
+.B \&.I
+下划线(或斜体)
+.TP
+.B \&.IB
+下划线(或斜体)和黑体交替
+.TP
+.B \&.IR
+普通体和下划线(或斜体)交替
+.TP
+.B \&.RB
+普通体和下划线(或斜体)交替
+.TP
+.B \&.RI
+小号字和黑体交替
+.TP
+.B \&.SB
+小号字和黑体交替
+.TP
+.B \&.SM
+小号字(用于缩写)
+.LP
+按照惯例,每个命令最多可以有六个小节的参数,
+但是 GNU 去除了这个限制。小节之间以空格隔开。
+如果某小节含有空格,则需要给其加上双引号。
+各小节在显示时无间隔,所以 
+.B \&.BR
+命令可以指定一个黑体的词,
+后跟一个普通体的标点。如果命令后无参数,则命令作用于下一行。 
+.SH "其他宏命令和字符串 OTHER MACROS AND STRINGS"
+.PP
+下面是其他一些相关的宏和预定义的字符串。
+除非指明,否则所有的宏在本行文本结束时终止。
+多数宏使用“流行缩进”(prevailing indent)方式。
+“流行缩进”的值由紧跟着宏命令的 
+.I i 
+值指定,如果不指定,那就会使用当前的“流行缩进”值。
+这样,连续的缩进段就可使用相同的缩进值而不需要重新指定。
+普通段(不缩进)将“流行缩进”值重值为缺省值(0.5 英寸)。
+缺省时,缩进是有规则的 en(s):用 en(s) 或者 em(s) 作为缩进的单位,
+因为它们会自动地调整字体的大小。
+(注:度量距离有不同的单位,当请求需要用到不同的距离时,可以使用默认
+类型来修饰数字,度量单位是英寸,厘米,pica,en,em,点,unit和垂直行距。
+1pica等于1/6英寸,1em等于字母m的宽度,默认宽度取决于troff中使用
+的字体。En是em的一半。)
+其他宏命令定义如下:
+.SS "普通段(无缩进) Normal Paragraphs"
+.TP 9m
+.B \&.LP
+与
+.B \&.PP
+相同(开始一个新段)
+.TP
+.B \&.P
+与
+.B \&.PP
+相同(开始一个新段)
+.TP
+.B \&.PP
+开始一个新段,重置“流行缩进”值。
+.SS "相对缩进 Relative Margin Indent"
+.TP 9m
+.BI \&.RS " i"
+开始相对缩进 -- 把左边界右移 
+.I i
+ (如果不指定 
+.I i 
+值,则使用“流行缩进”值 )。
+同时设定“流行缩进”值为 0.5 英寸。
+直到使用
+.BR \&.RE
+结束这些设定。
+.TP
+.B \&.RE
+结束相对缩进同时把“流行缩进”恢复原值。
+.SS "缩进 Indented Paragraph Macros"
+.TP 9m
+.BI \&.HP " i"
+开始悬挂式缩进(段的第一行从左边揭开时,其余缩进显示)
+.TP
+.BI \&.IP " x i"
+在段上标签 
+.I x
+。如果不指定 
+.I x 
+,则整个段缩进 
+.I i
+。如果指定了 
+.I x 
+,则 
+.I x 
+之前的段不缩进,之后的段缩进(有些象 
+.B \&.TP
+,不过 
+.I x 
+是跟在命令后面而不是在下一行)。
+如果 
+.I x 
+太长,后面的文本会挪到下一行(文本不会丢 失或割断)。
+.PP
+做公告列表,可以用 \e(bu (bullet) 或 \e(em (em dash). 
+要用数字或字母列表, 可以用\&.IP 1. 或 \&.IP A. 这样转换成其他 格式就简单了。
+.TP
+.BI \&.TP " i"
+在段上悬挂标签。标签在下一行指定,但是结果和 
+.B \&.IP
+相像。
+.SS "超文本链接宏 Hypertext Link Macros"
+.TP 9m
+.BI \&.UR " u"
+建立一个超文本链接到 URI (URL)
+.IR u ;
+并以
+.B UE
+结束。当转换为 HTML 格式时,他会转换为
+\fB<A HREF="\fP\fIu\fP\fB">\fP.
+有个例外:如果 
+.I u
+是特殊字符 “ :”,则之后不能建立任何超级链接,直到以
+.B UE
+结束(这用来在不需要超级链接时禁止他)。
+.UR ":"
+LALR(1)
+.UE
+这个宏比较新,很多程序可能并不对他进行处理。但是由于很多工具 (包括 troff) 简单地忽略未定义宏
+(或者最坏的将它们插入到文本中), 插入它们是安全的
+.TP
+.BI \&.UE
+结束相应的
+.B UR
+超级链接。转换为HTML后是
+\fB</A>\fP.
+.TP
+.BI \&.UN " u"
+给超级联接指定名称为
+.IR u ;
+不需要以
+.B UE
+UE 结束。转换为 HTML 后为: 
+\fB<A NAME="\fP\fIu\fP\fB" id="\fP\fIu\fP\fB"> </A>\fP
+(the   is optional if support for Mosaic is unneeded).
+.SS "杂项宏 Miscellaneous Macros"
+.TP 9m
+.B \&.DT
+重置 tab 值为缺省(每一个0.5英寸)。不引起中断。
+.TP
+.BI \&.IX " \&... "
+插入索引信息(方便搜索系统工作,或打印索引列表)。
+在页中索引信息不能正常显示。
+如果只有一个参数,
+参数作为独立的索引项指向手册页的内容。
+如果有两个参数,他可能是 Perl 手册页格式;
+第一个参数指定类型名
+(命令名,标题 ,题头,子段货源素之一),
+第二个参数指明自己的索引名。
+另外,长索引形式:每个参数是一个索引项,
+次级索引项,再次级索引项,等等直到以空参数结束,
+然后是程序名参数,\em,还有一小段描述。
+还可能在跟上一个空参数,有可能是页控制信息
+(如: PAGE START)。举例如下:
+"programmingtools""make""""\fLmake\fP\(em build programs".
+.TP
+.BI \&.PD " d"
+在段中间垂直距离空开 d (如果不指定,则缺省为 d=0.4v),不引起中断。
+.TP
+.BI \&.SS " t"
+子标题 
+.I t
+象是 
+.BR \&.SH ,
+但是作为段中的字标题使用)
+.SS "预定义字符串 Predefined Strings"
+.B man
+预定义了下列字符串
+.IP \e*R
+注册符号: \*R
+.IP \e*S
+改变成缺省字体大小
+.IP \e*(Tm
+商标符号: \*(Tm
+.IP \e*(lq
+左双引号: \*(lq
+.IP \e*(rq
+右双引号: \*(rq
+.SH "安全子集 SAFE SUBSET"
+理论上
+.B man
+是一个 troff 宏命令包,实际上很多工具程序没有支持所有的 man 宏命令。
+因此,为了这些程序可以正常工作最好忽略 troff 的一些比较另类的宏。
+避免使用各种不同的 troff 预处理程序
+(如果必须的话,用 
+.BR tbl (1)
+吧,
+但是在建立双列表时请使用 
+.B IP 
+和 
+.B TP 
+命令)。避免使用计算;大多数其他程序不能处理他。
+使用简单的命令比较容易转换为其他格式。
+下面的宏命令一般认为是安全的(虽然多数时候他们都被忽略了):
+.BR \e" ,
+.BR . ,
+.BR ad ,
+.BR bp ,
+.BR br ,
+.BR ce ,
+.BR de ,
+.BR ds ,
+.BR el ,
+.BR ie ,
+.BR if ,
+.BR fi ,
+.BR ft ,
+.BR hy ,
+.BR ig ,
+.BR in ,
+.BR na ,
+.BR ne ,
+.BR nf ,
+.BR nh ,
+.BR ps ,
+.BR so ,
+.BR sp ,
+.BR ti ,
+.BR tr .
+.PP
+你还可能使用 troff 转义字符(这些转移符号以 \e 开始)。
+但你要在文本中显示反斜线时,用\ee。
+其他转义字符包括:
+.BR \e' ,
+.BR \e` ,
+.BR \e- ,
+.BR \e. ,
+.BR \e" ,
+.BR \e% ,
+.BR \e*x ,
+.BR \e*(xx ,
+.BR \e(xx ,
+.BR \e$N ,
+.BR \enx ,
+.BR \en(xx ,
+.BR \efx ,
+和
+.BR \ef(xx .
+其中 x、xx 是任意字符,N 是任意数字不要使用转义字符来画图。
+.PP
+不要随意使用 
+.B bp
+(break page(中断页))。
+.B sp
+(vertical space(垂直距离)只应使用正值。
+不要用
+.RB ( de )
+(define(定义)定义与现有的宏同名的宏(无论 man 或 mdoc);
+这种重新定义可能会被忽略。
+每个正缩进
+.RB ( in )
+应对应一个负缩进(即使在使用 RS 和 RE 是也不例外)。
+The condition test
+.RB ( if,ie )
+should only have 't' or 'n' as the condition.
+可以使用的只有可忽略的转换
+.RB ( tr ) .
+改变字体命令
+.RB ( ft
+和 \fB\ef\fP  转义序列) 只能带如下参数: 1, 2, 3, 4, R, I, B, P, or CW
+(ft 命令也可以不带参数)。
+.PP
+如果你是用更多的功能,用各种程序仔细察看一下结果。
+如果你肯定某功能是安全的,请告诉我们,以便把他增加到这个列表中。
+.SH "注意 NOTES"
+.PP
+尽量在文本中包含完整的 URL(或URIs);
+一些工具软件(如:
+.BR man2html (1)
+)能够自动把它们转换为超级链接。
+您也可用 
+.B UR 
+命令指定链接到相关信息。
+输入完整的 URL(如:<http://www.kernel-notes.org> )。 
+.PP
+Tools processing these files should open the file and examine the first
+non-whitespace character.
+以(.)或(')开始一行,表明是基于 troff 的文件(如: man 或 mdoc)。
+如果是(<)表明基于 SGML/XML (如:HTML 或 Docbook).
+其他可能是纯文本。(例如 "catman" 的结果)
+.PP
+有些 man 以'\e"和空格再加字符列开始,表示他的预处理方法。
+为了 troff 翻译器程序处理起来简单一些,
+您仅应使用 
+.BR tbl (1),
+而不是其他什么东东,Linux 可以检测到这一点。
+不过,你或许想要包含这些信息以使其可以在其他系统得到处理。
+下面是预处理调用的定义:
+.TP 3
+.B e
+eqn(1)
+.TP
+.B g
+grap(1)
+.TP
+.B p
+pic(1)
+.TP
+.B r
+refer(1)
+.TP
+.B t
+tbl(1)
+.TP
+.B v
+vgrind(1)
+.SH "文件 FILES"
+.IR /usr/share/groff/ [*/] tmac/tmac.an
+.br
+.I /usr/man/whatis
+.SH BUGS
+.PP
+大多数宏命令描述的是格式(比如:字体和空格)而不是内容描述(比如: 这段文字指向另外一页),
+与 mdoc 和 DocBook 正好相反(HTML 也有比较多的内容描述)。
+这使得 
+.B man 
+难以转换为其他形式,不容易与其他文件组合或自动插入交叉引用。
+遵照以上的安全说明,就比较容易在将来把他转换为其他格式。
+.LP
+The Sun macro
+.B TX
+下不能用。 
+.SH "作者 AUTHOR"S
+.IP \(em 3m
+James Clark (jjc at jclark.com) wrote the implementation of the macro package.
+.IP \(em
+Rickard E. Faith (faith at cs.unc.edu) wrote the initial version of
+this manual page.
+.IP \(em
+Jens Schweikhardt (schweikh at noc.fdn.de) wrote the Linux Man-Page Mini-HOWTO
+(which influenced this manual page).
+.IP \(em
+David A. Wheeler (dwheeler at ida.org) heavily modified this
+manual page, such as adding detailed information on sections and macros.
+.SH "参见 SEE ALSO"
+.BR apropos (1),
+.BR groff (1),
+.BR man (1),
+.BR man2html (1),
+.BR mdoc (7),
+.BR mdoc.samples (7),
+.BR whatis (1)
+
+.SH "[中文版维护人]"
+.B RedCandle <redcandle51 at chinaren.com>
+.SH "[中文版最新更新]"
+.BR 2003.11.25
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man7/mdoc.samples.7 b/src/man7/mdoc.samples.7
new file mode 100644
index 0000000..ac0c3fe
--- /dev/null
+++ b/src/man7/mdoc.samples.7
@@ -0,0 +1,2482 @@
+.\" Copyright (c) 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"
+.\" This tutorial sampler invokes every macro in the package several
+.\" times and is guaranteed to give a worst case performance
+.\" for an already extremely slow package.
+.\"
+.Dd December 30, 1993
+.Os
+.Dt MDOC.SAMPLES 7
+.Sh NAME (名字)
+.Nm mdoc.samples
+.Nd 用
+.Nm \-mdoc
+编写
+.Bx
+手册 的 示范教程
+.Sh SYNOPSIS (总览)
+.Nm man mdoc.samples
+.Sh DESCRIPTION (描述)
+这个 示范教程 用于 编写
+.Bx
+手册页 (manual page), 它 使用了
+.Nm \-mdoc
+宏定义包, 这是个
+.Em 基于内容
+和
+.Em 基于宏域 (domain Ns \-base)
+的 格式化包, 交由
+.Xr troff 1 
+处理. 它的 前身
+.Xr \-man 7
+包, 定义了 页面布局 (page layout), 但是 把 诸如 字体控制 和 其他 排版 细节 
+留给了 每一个 作者. 在
+.Nm \-mdoc 
+包里, 页面布局宏 构成了
+.Em "页结构宏域 (page structure domain)"
+它 由 标题, 小节首部, 显示 (displays) 和 列表 宏 组成. 这些 基本项目 影响
+正文 在 格式化页上 的 物理位置.
+作为 页结构宏域 的 补充, 这里 还 定义了 另外 两个 宏域, 手册宏域 和
+基本正文宏域. 基本正文宏域 定义了 一些 宏, 执行 例如 引文 或 文字强调 
+之类的任务.
+手册宏域 定义的宏 是 非正式 日常用语 的 子集, 用于 描述 命令, 例程
+和 相关的
+.Bx
+文件.
+手册宏域里 的 宏 用来处理 命令名, 命令行参数和选项, 函数名称, 函数参数,
+路径, 变量, 以及 到 其他手册页 的 参照 等.
+这些 域项 留有 为 作者 和 手册页的 未来用户 设置的 值.
+希望 从 手册集中 获得的 一致性 能够为 将来的 文档工具 提供 更简单的 转换.
+.Pp
+从 整个的
+.Ux
+手册页 上 来看, 每个 手册项
+可以 简单的 理解为 一个 man page, 不用 注意 它的 实际长度, 
+也没有 性别歧视 意图. (译注: 可能是双关语, man page...男人页)
+.Sh 开始 GETTING STARTED
+因为 人们 通常是 为了 能够 马上 使用 这些材料 的 时候 才 阅读 教程,所以 
+我们 假设 此文档的 用户 是 缺乏耐心的.下面 简述一下 这份文档 剩余部分 
+的 组织:
+.Bl -enum -offset indent
+.It
+.Tn "TROFF 特性"
+.Bl -tag -width flag -compact -offset indent
+.It "使用宏" .
+.It "参数中传递空白符" .
+.It "尾部的空白符" .
+.It "转义特殊字符" .
+.El
+.It
+.Tn "手册页的结构分析"
+.Bl -tag -width flag -compact -offset indent
+.It "手册页的模板" .
+.El
+.It
+.Tn "标题宏" .
+.It
+.Tn "手册宏域和基本正文宏域的介绍" .
+.Bl -tag -width flag -compact -offset indent
+.It "名称背后 ..." .
+.It "基本语法" .
+.El
+.It
+.Tn "手册宏域"
+.Bl -tag -width flag -compact -offset indent
+.It "地址" .
+.It "作者名字" .
+.It "参数" .
+.It "配置声明 (仅用于手册第四部分)" .
+.It "命令修饰" .
+.It "已定义的变量" .
+.It "Errno's (仅用于手册第二部分)" .
+.It "环境变量" .
+.It "函数参数" .
+.It "函数声明" .
+.It "标志 (Flags)" .
+.It "函数 (库例程)" .
+.It "函数类型" .
+.\" .It "头文件 Header File (源代码嵌入 including source code)" .
+.It "交互命令" .
+.It "名称" .
+.It "选项" .
+.It "路径" .
+.It "变量" .
+.It "参照" .
+.El
+.It
+.Tn "基本正文宏域"
+.Bl -tag -width flag -compact -offset indent
+.It "AT&T 宏" .
+.It "BSD 宏" .
+.It "FreeBSD 宏" .
+.It "UNIX 宏" .
+.It "嵌入/引用宏 (Enclosure/Quoting)"
+.Bl -tag -width flag -compact -offset indent
+.It "尖括弧引用/嵌入" .
+.It "方括弧引用/嵌入" .
+.It "双引号引用/嵌入宏" .
+.It "圆括弧引用/嵌入" .
+.It "单引号引用/嵌入" .
+.It "前缀宏" .
+.El
+.It "No\-Op 或正文宏" .
+.It "消除空白宏" .
+.It "手册节对照" .
+.It "参考和引用" .
+.It "返回值 (仅用于手册页第二和第三部分)"
+.It "Trade Names (缩略和类型名称)" .
+.It "参数扩展" .
+.El
+.It
+.Tn "页结构宏域"
+.Bl -tag -width flag -compact -offset indent
+.It "小节首部" .
+.It "段落和空行" .
+.It "保持 (Keeps)" .
+.It "显示" .
+.It "字体模式 (加重, 原文和 Symbolic)" .
+.It "列表和栏" .
+.El
+.It
+.Tn "预定义串"
+.It
+.Tn "诊断"
+.It
+.Tn "用 GROFF, TROFF 和 NROFF 格式化"
+.It
+.Tn "臭虫 BUGS"
+.El
+.ne 7
+.Sh TROFF 特性
+使用
+.Nm \-mdoc
+宏包 的 目的 是 简化 写手册页 的 过程. 理论上讲, 要使用
+.Nm \-mdoc
+不一定 要 学习
+.Xr troff 1
+的 腌脏细节; 然而, 有些 限制 无法回避, 最好 把它们 摆平.
+而且 你 应该 知道, 这个 宏包 的 速度 比较
+.Em 慢.
+.Ss 宏的用法 Macro Usage
+在
+.Xr troff 1 
+里, 宏调用的形式 是 在行首 以
+.Ql \&\.
+(句点符) 起始, 紧随其后 是 作为 宏名 的 两个字符. 参数 跟在 宏名 之后,
+用 空格符 隔开. 这个 位于行首的 句点符 使
+.Xr troff 1
+把 紧随其后 的 两个字符 视作 宏名. 在 某些情况下 要把
+.Ql \&\.
+(句点符) 放在 行首, 但不希望 被理解成 宏请求, 方法是 在
+.Ql \&\.
+(句点) 前 使用
+.Ql \e&
+转义序列.
+.Ql \e&
+被 解释成 一段 长度为零 的 空白, 所以 不会 在 输出端 显示 出来.
+.Pp
+一般说来,
+.Xr troff 1
+宏 最多 接受 九个参数, 忽略掉 其余的. 大多数 在
+.Nm \-mdoc
+里的 宏 支持 九个参数, 某些场合 可以 续加 参数, 或扩展到 下一行. (见
+.Sx 扩展 Extensions ) .
+有些宏 能够 处理 引号 引起来的 参数 (见 下面的
+.Sx 在参数中传递空格符 ) .
+.Pp
+大多数
+.Nm \-mdoc
+的 基本正文宏域 和 手册宏域 的宏 拥有 一种特性, 表现在 把 参数列表 当成
+可调用的宏 
+.Em 分析 (解释) .
+这意味着 如果 参数列表里的参数 是 普通正文宏域 或 手册宏域
+里的 宏, 并且 是 可调用宏, 那么 处理的时候 会 执行 或 调用.
+这种情况下的 参数, 即 宏名, 不需要 用
+.Ql \&\.
+(句点符) 引导.
+这种风格 使 很多 宏 嵌套 在 一起; 例如 这个 选项宏
+.Ql \&.Op ,
+可能
+.Em 调用
+标志和参数宏,
+.Ql \&Fl
+和
+.Ql \&Ar ,
+用来 说明 一个 带参数的 选项:
+.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
+.It Op Fl s Ar bytes
+来自
+.Li \&.Op \&Fl s \&Ar bytes
+.El
+.Pp
+为了 防止 把 两个字符的字符串 解释成 宏名, 在这个 字符串 前面 加上
+.Ql \e& 
+转义序列:
+.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
+.It Op \&Fl s \&Ar bytes
+来自
+.Li \&.Op \e&Fl s \e&Ar bytes
+.El
+.Pp
+这里的 字符串
+.Ql \&Fl
+和
+.Ql \&Ar
+没有 被解释成 宏.
+在 这篇文档 和 相应的 快速参考手册
+.Xr mdoc 7
+中, 参数列表 按 可调用参数 分析 的 宏 称为 已分析, 可以 从 参数列表
+调用 的 宏 称为 可调用.
+这里 用的 术语 '分析' 可能是个 技术失误, 几乎 所有的
+.Nm \-mdoc
+宏 都 被分析, 既 用它 指 可调用宏, 又 指 有 调用 其他宏的 能力, 显得 很笨拙.
+.Ss 在参数中传递空格符 Passing Space Characters in an Argument
+某些时候 我们 希望 能够 把 含有 一个或多个 空格符 的 字符串 作为 单个参数
+传递. 如果 要 突破 九个参数的限制, 或者 传递给 宏 的 参数 需要 一些 特定布置, 
+这个 能力 是必须的. 例如, 函数宏
+.Ql \&.Fn
+的 第一个参数 是 函数名称, 剩下的参数 作为 函数的参数.
+.Tn "ANSI C"
+规定 函数的参数 在 圆括弧内 声明, 每个 参数 至少 由 两个 标示符 组成.
+例如,
+.Fa int foo .
+.Pp
+有 两个方法 传递 嵌有空格符 的 参数.
+.Em 补充一点 :
+不幸的是, 在
+.Tn AT&T
+.Xr troff 
+中, 那个 最容易的方法, 就是 作为 单个 参数 传递 两个引号之间的 
+字符串和空格符, 非常 消耗 时间 和 内存空间.
+虽然 它 对
+.Xr groff
+并不费事, 但是 为了 可移植性, 这种 做法 只限于 下列 有迫切需要 的 宏:
+.Pp
+.Bl -tag -width 4n -offset indent -compact
+.It Li \&Cd
+配置声明 (手册第四部分
+.Sx 概要 SYNOPSIS )
+.It Li \&Bl
+列表开始 (指定宽度的)
+.It Li \&Em
+加重文字
+.It Li \&Fn
+函数 (手册第二, 四部分)
+.It Li \&It
+列表项
+.It Li \&Li
+原文
+.It Li \&Sy
+Symbolic text
+.It Li \&%B
+书题
+.It Li \&%J
+期刊名
+.It Li \&%O
+参考选注
+.It Li \&%R
+报告题目(在参考文件中)
+.It Li \&%T
+在书籍或期刊中的题目
+.El
+.Pp
+一种 传递 含空格符字符串 的 方法 是 用
+.Ql \e\  
+硬编码 或 不可填充空格符, 也就是 在 空格符 前 加上 转义符
+.Ql \e .
+这个 方法 适用于 任何宏, 但 有个 副效应, 它 干扰了 对 长行 的 调整.
+.Xr Troff
+把 这种 硬编码的 空格符 看作 可显示字符, 因此 无法 在需要的时候 把 字符串
+分段 或 换行. 这种 方法 适用于 字符串 不会 到达 行边界 时, 例如:
+.Bl -tag -width "fetch(char *str)" -offset indent
+.It Fn fetch char\ *str
+来自
+.Ql \&.Fn fetch char\e *str
+.It Fn fetch "char *str"
+也可以来自
+.Ql \&.Fn fetch "\\*qchar *str\\*q"
+.El
+.Pp
+如果 忽略
+.Ql \e
+或 引号,
+.Ql \&.Fn
+宏 会认为 有 三个参数, 结果 成为:
+.Pp
+.Dl Fn fetch char *str
+.Pp
+如果 想知道 参数列表 到达 行边界 时 出现什么, 参看
+.Sx BUGS
+小节.
+.Ss 尾部的空白符 Trailing Blank Space Characters
+.Xr Troff
+可能 被 行尾的 空白符 搞乱, 它的防范规则 是 消除 所有 位于行末 的 空白符. 
+如果 坚持 在 行末 加上 空白符, 可以 用 硬空格符 和
+.Ql \e&
+转义字符. 例如,
+.Ql string\e\ \e& .
+.Ss 转义特殊字符 Escaping Special Characters
+特殊字符, 如 换行符
+.Ql \en ,
+是 通过 用
+.Ql \ee
+替换
+.Ql \e
+(e.g.例如
+.Ql \een )
+保留住 反斜杠.
+.Sh "手册页结构分析 THE ANATOMY OF A MAN PAGE"
+手册页 可以 很容易的 通过 模板 构建, 模板 放在
+.Pa /usr/share/misc/mdoc.template . 
+另外 在
+.Pa /usr/share/examples/mdoc
+目录下 有一些 手册页 的 例子.
+.Pp
+.Ss 手册页的模板 A manual page template
+.Bd -literal -offset indent
+\&.\e" 所有的手册页都要求有下面的内容
+\&.Dd 月 日, 年Month day, year
+\&.Os 操作系统 [版本/发行号] 
+\&.Dt 文档标题 [手册节号][卷] 
+\&.Sh 名称 NAME
+\&.Nm 名称 name
+\&.Nd 对名称的简单描述 one line description of name
+\&.Sh 总览 SYNOPSIS
+\&.Sh 描述 DESCRIPTION
+\&.\e" 后面的内容取消注释后可以用在你需要的任何地方.
+\&.\e" 紧接着的这条命令用于手册第二和第三部分, 函数的返回值.
+\&.\e" .Sh 返回值 RETURN VALUES
+\&.\e" 下面的命令用于手册第1, 6, 7, 8部分.
+\&.\e" .Sh 环境 ENVIRONMENT
+\&.\e" .Sh 文件 FILES
+\&.\e" .Sh 示例 EXAMPLES
+\&.\e" 下面的命令用于手册第1, 6, 7, 8部分
+\&.\e"     (在shell下的命令返回值和标准错误类型的诊断)
+\&.\e" .Sh 诊断 DIAGNOSTICS
+\&.\e" 下面的命令用于手册第二和第三部分中的错误和信号处理.
+\&.\e" .Sh 错误 ERRORS
+\&.\e" .Sh 另见 SEE ALSO
+\&.\e" .Sh 遵循 CONFORMING TO
+\&.\e" .Sh 历史 HISTORY
+\&.\e" .Sh 作者 AUTHORS
+\&.\e" .Sh BUGS
+.Ed
+.Pp
+模板中 的 第一个部分 是
+.Pq Li \&.Dd , \&.Os , \&.Dt 
+宏; 文档日期, 手册或其内容 针对的 操作系统, 手册页的标题
+.Pq Em (大写)
+和 该手册页 所属的节 (部分号).
+这些宏 确认和标识了 这个手册页. 在 后面的
+.Sx 标题宏 TITLE MACROS
+将 继续 讨论.
+.Pp
+这个 模板中 的 其余部分 是 小节首部 (section header)
+.Pq Li \&.Sh ;
+其中
+.Sx 名称 NAME ,
+.Sx 总览 SYNOPSIS
+和
+.Sx 描述 DESCRIPTION
+是 必不可少的.
+这些 首部 在
+.Sx 页结构宏域
+中 讨论 ( 介绍完
+.Sx 手册域
+之后 ) .
+有一些 内容宏 被用来 示范 页面布局宏; 建议 接触 页面布局宏 前 先看看 内容宏.
+.Sh 标题宏 TITLE MACROS
+标题宏 是 页结构宏域 的 第一部分, 但 在 过去, 人们 如果 编写 手册页, 
+它 是 手册的 第一部分, 也是 独立部分. 这里 设计了 三个宏 分别 描述
+文档标题 或 手册标题, 操作系统, 和 制作日期. 它们 放在 文档的 最前面, 
+一次 只 调用 一个, 用来 构建 文档的 页头 和 页脚.
+.Bl -tag -width 6n
+.It Li \&.Dt 文档标题 手册区# [卷]
+文档标题 是 手册页的 主题, 由于 troff 的 限制, 必须
+.Tn 大写 .
+手册节号 (部分号) 介于 1,\ ...,\ 8, 如果 指明了 手册节号, 可以 忽略 卷标.
+卷标 用 下列 标识的 一个 或 任意个:
+.\" .Cl
+.\" USD	UNIX 用户增补文档 User's Supplementary Documents
+.\" .Cl
+.\" PS1	UNIX 程序员增补文档 Programmer's Supplementary Documents
+.Pp
+.Bl -column SMM -offset indent -compact
+.It Li AMD	UNIX 历史遗留的手册文档 Ancestral Manual Documents
+.It Li SMM	UNIX 系统管理员手册 System Manager's Manual
+.It Li URM	UNIX 参考手册 Reference Manual
+.It Li PRM	UNIX 程序员手册 Programmer's Manual
+.El
+.Pp
+缺省的卷标
+.Li URM
+代表 手册区 1, 6, and 7;
+.Li SMM
+代表 手册区 8;
+.Li PRM
+代表 手册区 2, 3, 4, and 5.
+.\" .Cl
+.\" MMI	UNIX Manual Master Index
+.\" .Cl
+.\" CON	UNIX Contributed Software Manual
+.\" .Cl
+.\" LOC	UNIX Local Manual
+.It Li \&.Os 操作系统 发行号#
+操作系统 的 名字 可能 是 缩写, 像
+.Tn BSD
+或
+.Tn FreeBSD
+或
+.Tn ATT .
+发行号 应该 是 系统 专用的 标准发行术语, 像 4.3, 4.3+Tahoe, V.3, V.4.
+识别不出的 参数 就 照原样 显示在 页脚. 例如, 典型的页脚 可能是:
+.Pp
+.Dl \&.Os BSD 4.3
+.Pp
+或
+.Dl \&.Os FreeBSD 2.2
+.Pp
+或者 象 订制的产品
+.Pp
+.Dl \&.Os CS Department
+.Pp
+作为 伯克利的缺省设置, 不带 参数 的
+.Ql \&.Os
+定义为
+.Tn BSD 
+(指定在文件
+.Pa /usr/share/tmac/mdoc/doc-common 
+中). 你 应该 把缺省值 设成
+.Tn 本机.
+注意, 如果 不设置
+.Ql \&.Os
+宏, 页面的左下角 会 很难看.
+.It Li \&.Dd 月 日, 年 (month day, year)
+日期 应当 写的 正规点:
+.Pp
+.ne 5
+.Dl January 25, 1989
+.El
+.Sh 手册宏域 和 基本正文宏域的介绍
+.Ss 名称背后 What's in a name...
+手册宏域 的 宏名 来自 非正式的 日常用语, 用来 描述 命令, 子程序 及其 
+相关文件. 在 写 手册页 时, 文字用语 有些 轻微的变化, 分别描述 三个 
+不同 应用面. 首先是
+.Nm \-mdoc
+宏请求 的 用法. 其次, 用
+.Nm \-mdoc
+宏 描述
+.Ux
+命令. 最后, 对 用户 具体的描述 这条命令; 也就是 在 手册页 正文 里 
+讨论这条命令.
+.Pp
+第一种 情况 下,
+.Xr troff 1
+宏 本身 就是 一种 命令; troff 命令 的 基本语法 是:
+.Bd -filled -offset indent
+\&.Va argument1 argument2 ... argument9
+.Ed
+.Pp
+这里的
+.Ql \&.Va
+是 宏命令 或 宏请求, 紧随其后 的 是 待处理的参数.
+第二种 情况 下, 使用 内容宏 描述 一条
+.Ux
+命令 要 复杂 些; 一个 典型的
+.Sx 总览 SYNOPSIS
+命令行 显示 如下:
+.Bd -filled -offset indent
+.Nm filter
+.Op Fl flag
+.Ar infile outfile
+.Ed
+.Pp
+这里的
+.Nm filter
+是 命令名称, 方括弧内 的
+.Fl flag
+是一个
+.Em 标志
+参数, 作为 可选参数 放在 代表 选项 的 方括弧内. 在
+.Nm \-mdoc
+术语 中,
+.Ar infile
+和
+.Ar outfile
+称为
+.Em 参数 .
+产生 上述效果 的 宏 是 这样的:
+.Bd -literal -offset indent
+\&.Nm filter
+\&.Op \&Fl flag
+\&.Ar infile outfile
+.Ed
+.Pp
+第三种 情况 讨论 命令 及其语法, 包括 它们的例子, 可能 还有 更多细节.
+上面的例子里, 可以把
+.Ar infile
+和
+.Ar outfile
+理解为
+.Em 操作参数 operands
+或
+.Em 文件参数 file arguments .
+有些 命令行参数 罗列的 十分 长:
+.Bl -tag -width make -offset indent
+.It Nm make
+.Op Fl eiknqrstv
+.Op Fl D Ar variable
+.Op Fl d Ar flags
+.Op Fl f Ar makefile
+.Bk -words
+.Op Fl I Ar directory
+.Ek
+.Op Fl j Ar max_jobs
+.Op Ar variable=value
+.Bk -words
+.Op Ar target ...
+.Ek
+.El
+.Pp
+这里 你 可能 讨论
+.Nm make
+命令 和 它的参数
+.Ar makefile ,
+作为 一个 标志的参数,
+.Fl f ,
+或者 讨论 一个 可选的文件操作对象
+.Ar target .
+在 具体的上下文 中, 这种细节 能够 防止 混淆. 然而
+.Nm \-mdoc
+宏包中 没有为 标志的参数 准备 宏. 作为 替代 是
+.Ql \&Ar
+参数宏, 用于 描述 操作对象 或 文件参数 如
+.Ar target
+以及 标志的参数 如
+.Ar variable .
+上面的 make 命令行 是 这样 产生的:
+.Bd -literal -offset indent
+\&.Nm make
+\&.Op Fl eiknqrstv
+\&.Op Fl D Ar variable
+\&.Op Fl d Ar flags
+\&.Op Fl f Ar makefile
+\&.Op Fl I Ar directory
+\&.Op Fl j Ar max_jobs
+\&.Op Ar variable=value
+\&.Bk -words
+\&.Op Ar target ...
+\&.Ek
+.Ed
+.Pp
+在 
+.Sx Keeps 
+小节中 将会 解释
+.Ql \&.Bk
+和
+.Ql \&.Ek
+宏.
+.Ss 基本语法 General Syntax
+手册宏域 和 基本正文宏域 的 宏 有着 相似的语法, 仅有 微小差别:
+.Ql \&.Ar ,
+.Ql \&.Fl ,
+.Ql \&.Nm ,
+和
+.Ql \&.Pa
+仅当 无参数调用时 才有 区别;
+.Ql \&.Fn
+和
+.Ql \&.Xr
+的 参数列表 要求 一定的 顺序;
+.Ql \&.Op
+和
+.Ql \&.Fn
+宏有嵌套限制. 所有的 内容宏 能够 识别和正确处理 标点符号, 每个 标点符号 
+要在 前面 用 空格 隔开. 如果 给出 这样的 宏请求:
+.Pp
+.Dl \&.Li sptr, ptr),
+.Pp
+结果是:
+.Pp
+.Dl Li sptr, ptr),
+.Pp
+标点符号 没有 被识别 出来, 全都按 原文字体 输出. 如果 标点符号 前面用
+空格符 隔开:
+.Pp
+.Dl \&.Li "sptr , ptr ) ,"
+.Pp
+结果是:
+.Pp
+.Dl Li sptr , ptr ) ,
+.Pp
+标点符号 被 识别出来 了, 缺省的字体 也 有别于 原文文字的字体.
+.Pp
+用
+.Ql \e& .
+转义符 可以 去掉 标点字符 的 特殊意义.
+.Xr Troff
+作为 宏语言 有一定 的 限制, 当 表达的字串 中 含有
+数学, 逻辑 或 引用 符号时 将 难于 处理:
+.Bd -literal -offset indent-two
+\&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
+.Ed
+.Pp
+问题是
+.Xr troff
+会 认为 它 应该 执行或运算 这些 符号 代表的操作.
+要 防止 这一点 可以 用
+.Ql \e&
+转义 这些 字符. 典型语法 在 下面 显示的 第一个 内容宏 中 可以见到,
+.Ql \&.Ad .
+.Sh 手册域 MANUAL DOMAIN
+.Ss 地址宏 Address Macro
+地址宏 用 这种 格式 标明地址: addr1[,addr2[,addr3]].
+.Pp
+.Dl Usage: .Ad address ... \*(Pu
+.Bl -tag -width ".Ad f1 , f2 , f3 :" -compact -offset 14n
+.It Li \&.Ad addr1
+.Ad addr1
+.It Li \&.Ad addr1\ .
+.Ad addr1 .
+.It Li \&.Ad addr1\ , file2
+.Ad addr1 , file2
+.It Li \&.Ad f1\ , f2\ , f3\ :
+.Ad f1 , f2 , f3 :
+.It Li \&.Ad addr\ )\ )\ ,
+.Ad addr ) ) ,
+.El
+.Pp
+不带参数 调用
+.Ql \&.Ad
+是个 错误.
+.Ql \&.Ad
+可以被 (其他宏) 调用和分析.
+.Ss 作者名称 Author Name
+The
+.Ql \&.An
+宏用以 说明 这个文档的 描述对象的 作者, 或者 这篇手册页的 作者.
+名字 信息 后面的 其他参数 被认为是 标点符号.
+.Pp
+.Dl Usage: .An author_name \*(Pu
+.Bl -tag -width ".An Joe Author ) ) ," -compact -offset 14n
+.It Li \&.An Joe\ Author
+.An Joe Author
+.It Li \&.An Joe\ Author\ ,
+.An Joe\ Author ,
+.It Li \&.An Joe\ Author\ \&Aq\ nobody at FreeBSD.ORG
+.An Joe Author Aq nobody at FreeBSD.ORG
+.It Li \&.An Joe\ Author\ )\ )\ ,
+.An Joe Author ) ) ,
+.El
+.Pp
+.Ql \&.An
+宏可以被 (其他宏) 分析和调用, 
+不带参数调用
+.Ql \&.An
+是个错误.
+.Ss 参数宏 Argument Macro
+当 引用 命令行参数时 可以使用
+.Ql \&.Ar
+参数宏.
+.Pp
+.Dl Usage: .Ar argument ... \*(Pu
+.Bl -tag -width ".Ar file1 file2" -compact -offset 15n
+.It Li \&.Ar
+.Ar
+.It Li \&.Ar file1
+.Ar file1
+.It Li \&.Ar file1\ .
+.Ar file1 .
+.It Li \&.Ar file1 file2
+.Ar file1 file2
+.It Li \&.Ar f1 f2 f3\ :
+.Ar f1 f2 f3 :
+.It Li \&.Ar file\ )\ )\ ,
+.Ar file ) ) ,
+.El
+.Pp
+如果不带参数调用
+.Ql \&.Ar
+宏, 缺省为
+.Ql Ar .
+.Ql \&.Ar
+宏可以被 (其他宏) 分析和调用.
+.Ss 配置定义 (手册第四部分) Configuration Declaration
+.Ql \&.Cd
+宏用于描述
+.Xr config 8
+对 设备接口的定义 (手册第四部分).
+这个宏 接受 引号内的参数 (只能是双引号).
+.Pp
+.Bl -tag -width "device le0 at scode?" -offset indent
+.It Cd "device le0 at scode?"
+来自:
+.Ql ".Cd device le0 at scode?" .
+.El
+.Ss 命令修饰 Command Modifier
+命令修饰宏和
+.Ql \&.Fl
+(标志) 命令相似, 除了
+.Ql \&.Cm
+宏 不在 任何参数 前 加 短横线 (dash).
+传统的标志 以 短横线 开头, 但 一些 命令 或 命令的子集 不用这个.
+命令修饰宏 也可以 和 交互命令 结合 使用, 如 编辑命令. 另见
+.Sx Flags .
+.Ss 已定义的变量 Defined Variables
+在 头文件 中 已经 定义了的变量 用
+.Ql \&.Dv 
+宏说明.
+.Pp
+.Dl Usage: .Dv defined_variable ... \*(Pu
+.Bl -tag -width ".Dv MAXHOSTNAMELEN" -compact -offset 14n
+.It Li ".Dv MAXHOSTNAMELEN"
+.Dv MAXHOSTNAMELEN
+.It Li ".Dv TIOCGPGRP )"
+.Dv TIOCGPGRP )
+.El
+.Pp
+不带参数调用
+.Ql \&.Dv
+是个错误.
+.Ql \&.Dv
+宏可以被 (其他宏) 分析和调用.
+.Ss Errno's (仅供手册第二部分)
+这个
+.Ql \&.Er
+errno 宏 指明 手册 第二部分, 库函数 的 错误返回值.(译注: 应该是系统调用)
+下面的 第二个 例子 显示了
+.Ql \&.Er
+配合
+.Ql \&.Bq
+基本正文宏 的 使用, 就象 用在 手册 第二部分 一样.
+.Pp
+.Dl Usage: .Er ERRNOTYPE ... \*(Pu
+.Bl -tag -width ".Bq Er ENOTDIR" -compact -offset 14n
+.It Li \&.Er ENOENT
+.Er ENOENT
+.It Li \&.Er ENOENT\ )\ ;
+.Er ENOENT ) ;
+.It Li \&.Bq \&Er ENOTDIR
+.Bq Er ENOTDIR
+.El
+.Pp
+不带参数调用
+.Ql \&.Er
+宏是个错误.
+.Ql \&.Er
+宏可以被 (其他宏) 分析和调用.
+.Ss 环境变量 Environment Variables
+.Ql \&.Ev
+宏说明一个环境变量.
+.Pp
+.Dl Usage: .Ev argument ... \*(Pu
+.Bl -tag -width ".Ev PRINTER ) ) ," -compact -offset 14n
+.It Li \&.Ev DISPLAY
+.Ev  DISPLAY
+.It Li \&.Ev PATH\ .
+.Ev PATH .
+.It Li \&.Ev PRINTER\ )\ )\ ,
+.Ev PRINTER ) ) ,
+.El
+.Pp
+不带参数调用
+.Ql \&.Ev
+宏是个错误.
+.Ql \&.Ev
+宏可以被 (其他宏) 分析和调用.
+.Ss 函数参数 Function Argument
+.Ql \&.Fa
+宏 用来 说明 在手册的
+.Sx 总览 SYNOPSIS
+小节 之外的 函数参数, 或者在
+.Sx 总览 SYNOPSIS
+小节内, 其 参数列表对
+.Ql \&.Fn
+宏 而言 过长, 并且 必须 使用
+.Ql \&.Fo
+和
+.Ql \&.Fc
+宏时.
+.Ql \&.Fa
+也 有可能 用来 说明 结构成员.
+.Pp
+.Dl Usage: .Fa function_argument ... \*(Pu
+.Bl -tag -width ".Fa d_namlen\ )\ )\ ," -compact -offset 14n
+.It Li \&.Fa d_namlen\ )\ )\ ,
+.Fa d_namlen ) ) ,
+.It Li \&.Fa iov_len
+.Fa iov_len
+.El
+.Pp
+不带参数调用
+.Ql \&.Fa
+宏是个错误.
+.Ql \&.Fa
+宏可以被 (其他) 宏分析和调用.
+.Ss 函数声明 Function Declaration
+.Ql \&.Fd
+宏 用于 第二或 第三部分 手册页 的
+.Sx 总览 SYNOPSIS
+小节.
+.Ql \&.Fd
+宏 既 不调用 其他宏, 也 不能 被 其他宏调用.
+.Pp
+.Dl Usage: .Fd include_file (or defined variable)
+.Pp
+在
+.Sx 总览 SYNOPSIS
+小节, 如果 已经 说明了 某个 函数, 并且 没有 出现 省略号, 则
+.Ql \&.Fd
+宏请求 能够 产生 一个 断行.
+在 函数 和 函数声明 之间, 垂直方向上 产生 一定的 空白.
+.Ss 标志 Flags
+.Ql \&.Fl
+宏 处理 命令行标志. 它 在 标志前 加一个 短横线
+.Ql \- ,
+对于 交互命令 标志, 它 不需要 短横线, 可以用
+.Ql \&.Cm
+(命令修饰 command modifier)
+宏替换, 它 没有 短横线.
+.Pp
+.Dl Usage: .Fl argument ... \*(Pu
+.Bl -tag -width ".Fl \-s \-t \-v" -compact -offset 14n
+.It Li \&.Fl
+.Fl
+.It Li \&.Fl cfv
+.Fl cfv
+.It Li \&.Fl cfv\ .
+.Fl cfv .
+.It Li \&.Fl s v t
+.Fl s v t
+.It Li \&.Fl -\ ,
+.Fl - ,
+.It Li \&.Fl xyz\ )\ ,
+.Fl xyz ) ,
+.El
+.Pp
+如果
+.Ql \&.Fl
+宏 不带 任何 参数, 将 只产生 一个 短横线, 代表 stdin/stdout.
+注意 如果 把 一个 短横线 做为
+.Ql \&.Fl
+的参数, 结果 会 得到 两个短横线.
+.Ql \&.Fl
+宏可以被 (其他宏) 分析和调用.
+.Ss 函数(库函数) Functions (library routines)
+宏 .Fn 是 ANSI C 函数风格 的 模型.
+.Bd -literal
+Usage: .Fn [type] function [[type] parameters ... \*(Pu]
+.Ed
+.Bl -tag -width ".Fn int align. .const * char *sptrsxx" -compact
+.It Li "\&.Fn getchar"
+.Fn getchar
+.It Li "\&.Fn strlen ) ,"
+.Fn strlen ) ,
+.It Li \&.Fn "\\*qint align\\*q" "\\*qconst * char *sptrs\\*q" ,
+.Fn "int align" "const * char *sptrs" ,
+.El
+.Pp
+不带参数调用
+.Ql \&.Fn
+是一个错误.
+.Ql \&.Fn
+宏可以被 (其他宏) 分析和调用,
+注意 任何 对 其他宏 的 调用 应该在
+.Ql \&.Fn
+宏调用 的 结尾处 给出 标记 (反括弧).
+.Pp
+对于 八个 参数 以上的 函数 (尽管少见), 可以 用 宏
+.Ql \&.Fo
+(function open) 和
+.Ql \&.Fc
+(function close) 配合
+.Ql \&.Fa
+(function argument) 宏 的 使用, 突破 参数 过多 的 限制, 例如:
+.Bd -literal -offset indent
+\&.Fo "int res_mkquery"
+\&.Fa "int op"
+\&.Fa "char *dname"
+\&.Fa "int class"
+\&.Fa "int type"
+\&.Fa "char *data"
+\&.Fa "int datalen"
+\&.Fa "struct rrec *newrr"
+\&.Fa "char *buf"
+\&.Fa "int buflen"
+\&.Fc
+.Ed
+.Pp
+产生:
+.Bd -filled -offset indent
+.Fo "int res_mkquery"
+.Fa "int op"
+.Fa "char *dname"
+.Fa "int class"
+.Fa "int type"
+.Fa "char *data"
+.Fa "int datalen"
+.Fa "struct rrec *newrr"
+.Fa "char *buf"
+.Fa "int buflen"
+.Fc
+.Ed
+.Pp
+宏
+.Ql \&.Fo
+和
+.Ql \&.Fc
+可以被 (其他宏) 分析和调用. 在
+.Sx 总览 SYNOPSIS
+小节, 函数 总是 位于 行的开始 处.
+如果 在
+.Sx 总览 SYNOPSIS
+小节 有 一个以上的 函数声明, 而且 函数类型 没有 说明, 则 会产生 一个 断行.
+在 函数 和 函数 的 垂直方向 上 产生 一定的 空白. 此时
+.Ql \&.Fn
+宏 不按 troff 的 行长 检查 单词 边界, 有可能 难看的 从 单词中间 断开.
+以后 会 解决 这个 问题.
+.Ss 函数类型 Function Type
+这个宏 设计 用在
+.Sx 总览 SYNOPSIS
+小节. 它 可以 毫无困难的 用在 手册页的 其他 地方, 但 它的 主要 目的
+是 为 第二 和 第三部分 手册页的
+.Sx 总览 SYNOPSIS
+小节, 以 核心标准形式 (kernel normal form) 描述 函数类型
+(它 导致 断行, 在 下一行 显示 函数 名称).
+.Pp
+.Dl Usage: .Ft type ... \*(Pu
+.Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
+.It Li \&.Ft struct stat
+.Ft struct stat
+.El
+.Pp
+.Ql \&.Ft
+宏不能被其他宏调用.
+.Ss 交互命令 Interactive Commands
+宏
+.Ql \&.Ic
+用于 说明 交互 或 内部命令.
+.Pp
+.Dl Usage: .Ic argument ... \*(Pu
+.Bl -tag -width ".Ic setenv , unsetenvxx" -compact -offset 14n
+.It Li \&.Ic :wq
+.Ic :wq
+.It Li \&.Ic do while {...}
+.Ic do while {...}
+.It Li \&.Ic setenv\ , unsetenv
+.Ic setenv , unsetenv
+.El
+.Pp
+不带参数调用
+.Ql \&.Ic
+是个错误.
+.Ql \&.Ic
+宏可以被 (其他宏) 分析和调用.
+.Ss 名称宏 Name Macro
+.Ql \&.Nm
+宏 用于 说明 文档题目 或 主题. 它的特点 是 能够 记住 调用时 带的 第一个 
+参数, 这个 参数 就是 该页的 主题. 当 不带 参数 调用它 时,
+.Ql \&.Nm
+宏 把 以前 记住的 参数 显示 出来, 可以 为作者 省点劲.
+注意: 手册第二部分或第三部分的函数名称, 在
+.Sx 名称 NAME
+小节 用
+.Ql \&.Nm
+说明, 在
+.Sx 总览 SYNOPSIS
+和 其余 小节 用
+.Ql \&.Fn
+说明. 对于 交互命令, 例如 在
+.Xr csh 1
+中的
+.Ql while
+命令, 应该 使用
+.Ql \&.Ic
+宏.
+.Ql \&.Ic
+宏和
+.Ql \&.Nm ,
+宏 非常接近, 只是 它 不能够 记忆 调用时的 参数.
+.Pp
+.Dl Usage: .Nm argument ... \*(Pu
+.Bl -tag -width ".Nm mdoc.sample" -compact -offset 14n
+.It Li \&.Nm mdoc.sample
+.Nm  mdoc.sample
+.It Li \&.Nm \e-mdoc
+.Nm \-mdoc .
+.It Li \&.Nm foo\ )\ )\ ,
+.Nm foo ) ) ,
+.It Li \&.Nm
+.Nm
+.El
+.Pp
+.Ql \&.Nm
+宏可以被 (其他宏) 分析和调用.
+.Ss 选项 Options
+.Ql \&.Op
+宏 把 命令行上 剩余的 所有 参数 用 方括弧 括在一起, 把 最后的 标点符号
+放到 方括弧 外面. 宏
+.Ql \&.Oc
+和
+.Ql \&.Oo
+用于 处理 跨行.
+.Pp
+.Dl Usage: .Op options ... \*(Pu
+.Bl -tag -width ".Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
+.It Li \&.Op
+.Op
+.It Li ".Op Fl k"
+.Op Fl k
+.It Li ".Op Fl k ) ."
+.Op Fl k ) .
+.It Li ".Op Fl k Ar kookfile"
+.Op Fl k Ar kookfile
+.It Li ".Op Fl k Ar kookfile ,"
+.Op Fl k Ar kookfile ,
+.It Li ".Op Ar objfil Op Ar corfil"
+.Op Ar objfil Op Ar corfil
+.It Li ".Op Fl c Ar objfil Op Ar corfil ,"
+.Op Fl c Ar objfil Op Ar corfil ,
+.It Li \&.Op word1 word2
+.Op word1 word2
+.El
+.Pp
+应用
+.Ql \&.Oc
+和
+.Ql \&.Oo
+宏:
+.Bd -literal -offset indent
+\&.Oo
+\&.Op \&Fl k \&Ar kilobytes
+\&.Op \&Fl i \&Ar interval
+\&.Op \&Fl c \&Ar count
+\&.Oc
+.Ed
+.Pp
+产生:
+.Oo
+.Op Fl k Ar kilobytes
+.Op Fl i Ar interval
+.Op Fl c Ar count
+.Oc
+.Pp
+宏
+.Ql \&.Op ,
+.Ql \&.Oc
+和
+.Ql \&.Oo
+可以被 (其他宏) 分析和调用.
+.Ss 路径名 Pathnames
+.Ql \&.Pa
+宏 用于 格式化 路径 或 文件名.
+.Pp
+.Dl Usage: .Pa pathname \*(Pu
+.Bl -tag -width ".Pa /tmp/fooXXXXX ) ." -compact -offset 14n
+.It Li \&.Pa /usr/share
+.Pa /usr/share
+.It Li \&.Pa /tmp/fooXXXXX\ )\ .
+.Pa /tmp/fooXXXXX ) .
+.El
+.Pp
+.Ql \&.Pa
+宏可以被 (其他宏) 分析和调用.
+.Ss 变量 Variables
+基本的 变量 参考:
+.Pp
+.Dl Usage: .Va variable ... \*(Pu
+.Bl -tag -width ".Va char s ] ) ) ," -compact -offset 14n
+.It Li \&.Va count
+.Va count
+.It Li \&.Va settimer ,
+.Va settimer ,
+.It Li \&.Va int\ *prt\ )\ :
+.Va int\ *prt ) :
+.It Li \&.Va char\ s\ ]\ )\ )\ ,
+.Va char\ s ] ) ) ,
+.El
+.Pp
+不带参数调用
+.Ql \&.Va
+宏是个错误.
+.Ql \&.Va
+宏可以被 (其他宏) 分析和调用.
+.Ss 手册页参照 Manual Page Cross References
+.Ql \&.Xr
+宏 把 第一个参数 当做 手册页 名称, 第二个参数, 如果 存在,
+当做 标点符号 或 手册页 的 部分号 (节号). 剩下 所有的参数
+视做 标点符号.
+.Pp
+.Dl Usage: .Xr man_page [1,...,8] \*(Pu
+.Bl -tag -width ".Xr mdoc 7 ) ) ," -compact -offset 14n
+.It Li \&.Xr mdoc
+.Xr mdoc
+.It Li \&.Xr mdoc\ ,
+.Xr mdoc ,
+.It Li \&.Xr mdoc 7
+.Xr mdoc 7
+.It Li \&.Xr mdoc 7\ )\ )\ ,
+.Xr mdoc 7 ) ) ,
+.El
+.Pp
+.Ql \&.Xr
+宏可以被 (其他宏) 分析和调用.
+不带参数调用
+.Ql \&.Xr
+宏是个错误.
+.Sh 基本正文宏域 GENERAL TEXT DOMAIN
+.Ss AT&T 宏
+.Bd -literal -offset indent -compact
+Usage: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
+.Ed
+.Bl -tag -width ".At v6 ) ," -compact -offset 14n
+.It Li ".At"
+.At
+.It Li ".At v6 ."
+.At v6 .
+.El
+.Pp
+.Ql \&.At
+宏
+.Em 不能
+被 (其他宏) 分析, 也
+.Em 不能
+被 (其他宏) 调用. 该宏 最多 接受 两个 参数.
+.Ss BSD 宏
+.Dl Usage: .Bx [Version/release] ... \*(Pu
+.Bl -tag -width ".Bx 4.3 ) ," -compact -offset 14n
+.It Li ".Bx"
+.Bx
+.It Li ".Bx 4.3 ."
+.Bx 4.3 .
+.El
+.Pp
+.Ql \&.Bx
+宏可以被 (其他宏) 分析和调用.
+.Ss FreeBSD 宏
+.Bd -literal -offset indent -compact
+Usage: .Fx Version.release ... \*(Pu
+.Ed
+.Bl -tag -width ".Fx 2.2 ) ," -compact -offset 14n
+.It Li ".Fx 2.2 ."
+.Fx 2.2 .
+.El
+.Pp
+.Ql \&.Fx
+宏
+.Em 不能
+被 (其他宏) 分析, 也
+.Em 不能
+被 (其他宏) 调用. 该宏 最多 接受 两个 参数.
+.Ss UNIX 宏
+.Dl Usage: .Ux ... \*(Pu
+.Bl -tag -width ".Ux 4.3 ) ," -compact -offset 14n
+.It Li ".Ux"
+.Ux
+.El
+.Pp
+.Ql \&.Ux
+宏可以被 (其他宏) 分析和调用.
+.Ss 嵌入和引用宏 Enclosure and Quoting Macros
+嵌入 的 概念 和 引用 类似. 把 一句 或 多句 引用对象 嵌到 一对 字符 中, 
+象 引号 或 括弧. 本篇 文档中 将 混用 术语
+.Ql 嵌入
+和
+.Ql 引用.
+大多数 单行的 引用宏名 用 一个 小写字母
+.Ql q
+结尾, 表明 这是 一个 引用(quoting), 但 也有 不规则变化.
+每个 引用宏 都有 一对 开始(open) 和 结束(close) 宏, 各自 以
+.Ql o
+和
+.Ql c
+结尾. 在 某些限制时 这些宏 可以 跨行 使用, 单行的引用宏 可以 嵌套在里面.
+.Pp
+.ne 5
+.Bd -filled -offset indent
+.Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
+.Em " Quote	 Close	 Open	Function	Result"
+\&.Aq	.Ac	.Ao	Angle Bracket Enclosure	<string>
+\&.Bq	.Bc	.Bo	Bracket Enclosure	[string]
+\&.Dq	.Dc	.Do	Double Quote	``string''
+	.Ec	.Eo	Enclose String (in XX)	XXstringXX
+\&.Pq	.Pc	.Po	Parenthesis Enclosure	(string)
+\&.Ql			Quoted Literal	`st' or string
+\&.Qq	.Qc	.Qo	Straight Double Quote	"string"
+\&.Sq	.Sc	.So	Single Quote	`string'
+.El
+.Ed
+.Pp
+除了 下面的 不规则宏, 所有的 引用宏 可以被 (其他宏) 分析和调用. 所有的 
+引用宏 能够 正确 处理 标点符号, 只要 一次 一个字符, 中间 用 空格 隔开.
+引用宏 检查 开始和结束 符号, 以决定 把 它 放在 引用串的 前面还是后面.
+这样 就 有了 一定的 嵌套能力.
+.Bl -tag -width xxx,xxxx
+.It Li \&.Ec , \&.Eo
+这些宏 的 第一个参数 是 各自的 开始和结束串.
+.It Li \&.Ql
+原文引用宏 的 表现在
+.Xr troff
+中和
+.Xr nroff 
+不一样. 如果用
+.Xr nroff 
+格式化, 引用的原文 始终 被引用. 如果用 troff 格式化,
+只有 宽度 小于 三个定宽字符 的 项 才被 引用.
+This is to make short strings more visible where the font change
+to literal (constant width) is less noticeable.
+当 字体 变成 原文(定宽) 时, 短串显得更容易被看到.
+.It Li \&.Pf
+前缀宏不能被 (其他宏) 调用, 但是可以被分析.
+.Bl -tag -width "(namexx" -offset indent
+.It Li ".Pf ( Fa name2"
+变成
+.Pf ( Fa name2 .
+.El
+.Pp
+这个
+.Ql \&.Ns
+(无空格) 宏 执行 类似的 后缀 功能.
+.El
+.Pp
+.ne 4
+引用举例:
+.Bl -tag -width ".Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
+.It Li \&.Aq
+.Aq
+.It Li \&.Aq \&Ar ctype.h\ )\ ,
+.Aq Ar ctype.h ) ,
+.It Li \&.Bq
+.Bq
+.It Li \&.Bq \&Em Greek \&, French \&.
+.Bq Em Greek , French .
+.It Li \&.Dq
+.Dq
+.It Li ".Dq string abc ."
+.Dq string abc .
+.It Li ".Dq \'^[A-Z]\'"
+.Dq \'^[A-Z]\'
+.It Li "\&.Ql man mdoc"
+.Ql man mdoc
+.It Li \&.Qq
+.Qq
+.It Li "\&.Qq string ) ,"
+.Qq string ) ,
+.It Li "\&.Qq string Ns ),"
+.Qq string Ns ),
+.It Li \&.Sq
+.Sq
+.It Li "\&.Sq string
+.Sq string
+.El
+.Pp
+作为 嵌套引用宏的 典型范例, 参见
+.Ql \&.Op
+选项宏. 它们 都 来自 上面 列出的 基本 引用宏.
+.Ql \&.Xo
+和
+.Ql \&.Xc
+扩展的 参数列表宏 同样 来自 相同的 基本例程, 并且, 在 最坏的情况 下, 是
+.Nm \-mdoc
+宏 用法的 很好范例.
+.Ss No\-Op 或正文宏 or Normal Text Macro
+宏
+.Ql \&.No
+用在 某个 宏命令行 上, 意如其名, 将
+.Em 不
+被格式化, 语法 遵循 一般的 内容宏.
+.Ss 无空格宏 No Space Macro
+.Ql \&.Ns
+在 宏请求 之间 消除 不需要的 空格.
+它 用在 旧式风格的 参数列表 中, 标志和参数 间 没有 空格:
+.Bl -tag -width ".Op Fl I Ns Ar directoryxx" -offset indent
+.It Li ".Op Fl I Ns Ar directory"
+产生
+.Op Fl I Ns Ar directory
+.El
+.Pp
+注意:
+.Ql \&.Ns
+宏 在 消除空格后 总会 调用
+.Ql \&.No
+宏, 除非 还有 其他 宏名 跟在 后面.
+.Ql \&.Ns
+宏可以被 (其他宏) 分析和调用.
+.Ss 手册页对照参考 Section Cross References
+.Ql \&.Sx
+宏 指定了 到 同一个文档内的 小节首部 的 对照参考.
+该宏可以被 (其他宏) 分析和调用.
+.Pp
+.Bl -tag -width "Li \&.Sx FILES" -offset 14n
+.It Li \&.Sx FILES
+.Sx FILES
+.El
+.Ss 参考和引言 References and Citations
+The following macros make a modest attempt to handle references.
+At best, the macros make it convenient to manually drop in a subset of
+refer style references.
+下面的宏 试图 适度的 处理 参考资料. 最好情况时, 这些宏 便于 手工
+插入 一段 相关风格的 参考资料.
+.Pp
+.Bl -tag -width 6n -offset indent -compact
+.It Li ".Rs"
+参考开始. 它 导致 一次 断行, 并且 开始 收集 参考资料, 直到 遇到 参考结束宏.
+.It Li ".Re"
+参考结束. 则 打印出 参考信息.
+.It Li ".%A"
+参考资料 的 作者名字, 一次一个.
+.It Li ".%B"
+书名.
+.It Li ".\&%C"
+城市/地点.
+.It Li ".\&%D"
+日期.
+.It Li ".%J"
+期刊名.
+.It Li ".%N"
+发行号.
+.It Li ".%O"
+可选信息.
+.It Li ".%P"
+页码.
+.It Li ".%R"
+报告名.
+.It Li ".%T"
+文章题目.
+.It Li ".%V"
+卷.
+.El
+.Pp
+用
+.Ql %
+符号 开始的 宏 不能被 (其他宏) 调用, 只能 被 trade name macro 分析,
+结果 返回给 调用者 (此时 结果 不太好 预测). 其目的 是 允许 trade name 
+能够 很好的 打印在
+.Xr troff Ns / Ns Xr ditroff
+的 输出端.
+.Ss 返回值 Return Values
+.Ql \&.Rv
+宏 产生 一些 用在
+.Sx 返回值 RETURN VALUES
+小节的 文字.
+.Pp
+.Dl Usage: .Rv [-std function]
+.Pp
+.Ql \&.Rv -std atexit
+将输出 下列文字:
+.Pp
+.Rv -std atexit
+.Pp
+这个
+.Fl std
+选项 仅用于 手册页的 第二和第三部分.
+.Ss Trade Names (或缩略和类型名)
+trade name 宏 一般说来 是 一个 很小的 大写字母宏, 用于 所有 大于
+两个字符的 大写单词.
+.Pp
+.Dl Usage: .Tn symbol ... \*(Pu
+.Bl -tag -width ".Tn ASCII" -compact -offset 14n
+.It Li \&.Tn DEC
+.Tn DEC
+.It Li \&.Tn ASCII
+.Tn ASCII
+.El
+.Pp
+.Ql \&.Tn
+宏可以被 (其他宏) 分析和调用.
+.Ss 扩展参数 Extended  Arguments
+.Ql \&.Xo
+和
+.Ql \&.Xc
+宏 可以 在 宏的边界 扩展 参数列表. 如果 某个宏 要求 所有的参数 在 一行上 
+出现, 则 参数列表 不能 在 这儿 被 扩展. 例如
+.Ql \&.Op .
+.Pp
+这里有
+.Ql \&.Xo
+宏的一个示例, 用 空格模式宏 把 空格 去掉:
+.Bd -literal -offset indent
+\&.Sm off
+\&.It Xo Sy I Ar operation
+\&.No \een Ar count No \een
+\&.Xc
+\&.Sm on
+.Ed
+.Pp
+产生
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.Sm off
+.It Xo Sy I Ar operation
+.No \en Ar count No \en
+.Xc
+.Sm on
+.El
+.Ed
+.Pp
+还有一个:
+.Bd -literal -offset indent
+\&.Sm off
+\&.It Cm S No \&/ Ar old_pattern Xo
+\&.No \&/ Ar new_pattern
+\&.No \&/ Op Cm g
+\&.Xc
+\&.Sm on
+.Ed
+.Pp
+产生
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.Sm off
+.It Cm S No \&/ Ar old_pattern Xo
+.No \&/ Ar new_pattern
+.No \&/ Op Cm g
+.Xc
+.Sm on
+.El
+.Ed
+.Pp
+另一个示例用
+.Ql \&.Xo
+和 引用宏:
+测试一个变量的值.
+.Bd -literal -offset indent
+\&.It Xo
+\&.Ic .ifndef
+\&.Oo \e&! Oc Ns Ar variable
+\&.Op Ar operator variable ...
+\&.Xc
+.Ed
+.Pp
+产生
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.It Xo
+.Ic .ifndef
+.Oo \&! Oc Ns Ar variable
+.Op Ar operator variable ...
+.Xc
+.El
+.Ed
+.Pp
+上面 所有的例子 都在
+.Ql \&.It
+(list-item) 宏 的 参数列表 中 使用了
+.Ql \&.Xo
+宏. 扩展宏 不经常 使用, 一般用来 扩展 list-item 宏 的 参数列表.
+这也 不幸的 是 扩展宏 最苛刻的 地方. 前两个例子里 空格 被去掉; 第三个 例子中, 
+希望 能 输出 部分 空格, 而不是 全部. 在 这种情况下 用 这些宏, 要 确保
+.Ql \&.Xo
+和
+.Ql \&.Xc
+宏 摆放到 第三个例子 中 示范的位置. 如果
+.Ql \&.Xo
+宏 没有 单独 出现在
+.Ql \&.It
+的 参数表 中, 则 无法预测 空格 情况. 这种情况下,
+.Ql \&.Ns
+(no space macro) 一定 不能 作为 一行的 第一个宏 或 最后一个宏. 当前
+.Bx
+发布的 超过 900个 手册页 (事实上大约1500个) 中,
+只有 十五个 用到了
+.Ql \&.Xo
+宏.
+.Sh 页结构宏宏域 PAGE STRUCTURE DOMAIN
+.Ss 小节首部 Section Headers
+每个 手册页 里 都用到了 下面 列出的 三个
+.Ql \&.Sh
+小节首部宏. 作者 写 手册页 时 可以 酌情考虑 其他 建议使用的 小节首部.
+.Ql \&.Sh
+宏 最多 带 九个 参数. 它 可以 被 (其他宏) 分析, 但不能 被调用.
+.Bl -tag -width ".Sh SYNOPSIS"
+.It \&.Sh 名称 NAME
+.Ql \&.Sh 名称 NAME
+宏是 必不可少的. 否则 无法设置 页头, 页脚 和 缺省的 页布局, 样子 会 很难看.
+.Sx 名称 NAME
+小节 至少 由 三项 组成. 第一个 是
+.Ql \&.Nm
+名称宏, 命名 手册页的 主题. 第二个 是 名称描述宏
+.Ql \&.Nd ,
+它 把 主题名称 和 第三项, 描述, 分离开来.
+描述 应该 尽可能的 精简易懂, 少占空间.
+.It \&.Sh 总览 SYNOPSIS
+.Sx SYNOPSIS
+总览小节 描述 该 手册页对象 的 典型用途.
+请求的宏 是 下面 的 任意一个,
+.Ql ".Nm" ,
+.Ql ".Cd" ,
+.Ql ".Fn" ,
+(也可能是
+.Ql ".Fo" ,
+.Ql ".Fc" ,
+.Ql ".Fd" ,
+.Ql ".Ft"
+宏). 函数名称宏
+.Ql ".Fn"
+用在 手册页 的 第二第三部分, 命令 和 基本名称宏
+.Ql \&.Nm
+用在 手册页 的 1, 5, 6, 7, 8 部分. 手册 第四部分 需要
+.Ql ".Nm" , 
+.Ql ".Fd"
+或
+.Ql ".Cd"
+配制设备用途宏. 其他一些 宏 可能 用来 产生 概要行, 象下面的:
+.Pp
+.Bd -filled -offset indent
+.Nm cat
+.Op Fl benstuv
+.Op Fl
+.Ar
+.Ed
+.Pp
+下面 用到的 宏
+.Pp
+.Dl \&.Nm cat
+.Dl \&.Op \&Fl benstuv
+.Dl \&.Op \&Fl
+.Dl \&.Ar
+.Pp
+.Sy 注意 :
+宏
+.Ql \&.Op ,
+.Ql \&.Fl ,
+和
+.Ql \&.Ar
+能够 识别 管道符
+.Ql \*(Ba ,
+因此 命令行 如:
+.Pp
+.Dl ".Op Fl a | Fl b"
+.Pp
+的 表现 会 出轨.
+.Xr Troff
+一般把 \*(Ba 当做 特殊符号. 参见
+.Sx 预定义串 PREDEFINED STRINGS ,
+在 其他情况下 \*(Ba 的使用.
+.It \&.Sh 描述 DESCRIPTION
+大多数 情况下
+.Sx 描述 DESCRIPTION
+小节 的 第一段话 是 关于 这个 命令, 函数 或 文件 的 摘要, 后跟 字典式的
+选项 以及 相应的解释. 创建 这样的 列表, 应该 使用
+.Ql \&.Bl
+列表开始,
+.Ql \&.It
+列表项和
+.Ql \&.El
+列表结束宏 (参见下面的
+.Sx 列表和栏目 Lists and Columns
+).
+.El
+.Pp
+下面的
+.Ql \&.Sh
+小节首部 是 手册页 编排的 常见内容, 为了 保证 连续性, 应 适当 使用.
+它们 按照 应该 出现 的 顺序 排列.
+.Bl -tag -width SYNOPSIS
+.It \&.Sh 环境 ENVIRONMENT
+.Sx 环境 ENVIRONMENT
+小节 用来 揭示 相关的 环境变量 和 线索, 它们的 行为, 表现, 用法.
+.It \&.Sh 示例 EXAMPLES
+有 很多 办法 创建 示例, 详见 下面的
+.Sx 示例 EXAMPLES
+小节.
+.It \&.Sh 文件 FILES
+由 手册页的 主题对象 创建 或 使用 的 文件, 应该 通过
+.Ql \&.Pa
+宏在
+.Sx 文件 FILES
+小节 陈列 出来.
+.It \&.Sh 另见 SEE ALSO
+如果 提及 其他 手册页 或 参照 相应的 手册, 应 把它们 放在
+.Sx 另见 SEE ALSO
+小节. 参照主题 由
+.Ql \&.Xr
+宏指定. 在
+.Sx 另见 SEE ALSO
+小节 的 参照主题 应该按 手册节号 排序, 按 字母顺序 陈列, 并用 逗号 隔开, 
+例如:
+.Pp
+.Xr ls 1 ,
+.Xr ps 1 ,
+.Xr group 5 ,
+.Xr passwd 5 .
+.Pp
+这时候 不太适合 用
+.Xr refer 1
+风格 的 参考引用.
+.It \&.Sh 遵循 CONFORMING TO
+如果 那些 命令, 库函数 或 文件 遵循 一定的 标准 实现, 如
+.St -p1003.2
+或
+.St -ansiC ,
+那就 不需要 这一小节. 如果 命令 不符合 任何标准, 应该 把 它的历史 放在
+.Sx 历史 HISTORY
+小节.
+.It \&.Sh 历史 HISTORY
+任何 不属于 已知标准 的 命令 应该 在 这一节 给出 它的 大致历史.
+.It \&.Sh 作者 AUTHORS
+如果 有 必要, 把 致谢名单 也 列这儿.
+.It \&.Sh 诊断 DIAGNOSTICS
+应该 把 诊断命令 放在 这一节.
+.It \&.Sh 错误 ERRORS
+特定的 错误处理, 尤其是 库函数 (手册页第二第三部分), 放这儿.
+.Ql \&.Er
+宏 用来 指定 一个 errno.
+.It \&.Sh BUGS
+明显的 问题 放这儿...
+.El
+.Pp
+可以 增加一些 用户 制定的
+.Ql \&.Sh
+小节, 例如, 这样 设 小节:
+.Bd -literal -offset 14n
+\&.Sh PAGE STRUCTURE DOMAIN
+.Ed
+.Ss 段落和空行 Paragraphs and Line Spacing.
+.Bl -tag -width 6n
+.It \&.Pp
+.Ql \&.Pp
+把 段落命令 放在 所需的位置, 可以 产生 一个空行. 在
+.Ql \&.Sh
+或
+.Ql \&.Ss
+宏 后面 不需要 这个 宏, 
+.Ql \&.Bl
+宏 的 前面 也不需要. (
+.Ql \&.Bl
+声明了 垂直方向 的 距离, 除非 给出 -compact 标志).
+.El
+.\" This worked with version one, need to redo for version three
+.\" .Pp
+.\" .Ds I
+.\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
+.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx\ (
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va ax
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy \+
+.\" .Cx
+.\" .Cl Cx \&(\&
+.\" .Va ax
+.\" .Cx +
+.\" .Va by
+.\" .Cx +
+.\" .Va c )
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cx \t
+.\" .Li \&.Va by
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy \+
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va c )
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.\" This example shows the same equation in a different format.
+.\" The spaces
+.\" around the
+.\" .Li \&+
+.\" signs were forced with
+.\" .Li \e :
+.\" .Pp
+.\" .Ds I
+.\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
+.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx\ (
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va a
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy x
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx \e\ +\e\ \e&
+.\" .Cx
+.\" .Cl Cx \&(\&
+.\" .Va a
+.\" .Sy x
+.\" .Cx \ +\ \&
+.\" .Va b
+.\" .Sy y
+.\" .Cx \ +\ \&
+.\" .Va c )
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cl Cx \t\t
+.\" .Li \&.Va b
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy y
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx \e\ +\e\ \e&
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va c )
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.\" The incantation below was
+.\" lifted from the
+.\" .Xr adb 1
+.\" manual page:
+.\" .Pp
+.\" .Ds I
+.\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx Op Sy ?/
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Nm m
+.\" .Cx
+.\" .Cl Cx Op Sy ?/
+.\" .Nm m
+.\" .Ad \ b1 e1 f1
+.\" .Op Sy ?/
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cx \t
+.\" .Li \&.Ar \e\ b1 e1 f1
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Op Sy ?/
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.Ss 保持 Keeps
+目前 只实现了 对单词的 保持 能力. 这个宏 有
+.Ql \&.Bk
+(开始保持 begin-keep) 和
+.Ql \&.Ek
+(结束保持 end-keep ) .
+.Ql \&.Bk
+宏 的 唯一 参数是
+.Fl words ,
+用于 防止 在 选项语句 的 中间 断行. 在 make 命令行参数的 例子里 (参见
+.Sx 名称背后 What's in a name ) ,
+keep 宏防止
+.Xr nroff
+把 标志 和 参数 分成 两行.
+(事实上 可以 用 选项宏 防止 此类 事情, 但 当我们 决定 在
+.Xr troff
+中 作为 基本选项, 强制 右边界对齐 时, 它 在 稀疏行里 展开的 很糟糕.
+使用 保持宏 时 需要 多做点事, 增加 一个
+.Fl line
+选项 ) .
+.Ss 示例和显示
+有 五种类型 的 显示, 一个 快速的单行缩进显示
+.Ql \&.D1 ,
+快速的单行原文显示
+.Ql \&.Dl ,
+原文块, 填充块, 和由
+.Ql \&.Bd
+(begin-display) 显示开始 和
+.Ql \&.Ed
+(end-display) 显示结束 宏对 组成的 不规则块.
+.Pp
+.Bl -tag -width \&.Dlxx
+.It Li \&.D1
+(D-one) 显示 一行 缩进文字. 该宏 可以被 (其他宏) 分析, 但 不能 被调用.
+.Pp
+.Dl Fl ldghfstru
+.Pp
+上面是这样产生的:
+.Li \&.Dl Fl ldghfstru .
+.It Li \&.Dl
+(D-ell) 显示 一行 缩进的
+.Em 原文 literal .
+.Ql \&.Dl
+示例宏 已经 遍布 这篇 文档. 它 允许 缩进 (显示) 一行 文字.
+其 缺省字体 设为 定宽 (原文), 它 可以 被 其他宏 分析 和 识别.
+然而 不能 被 其他宏 调用.
+.Pp
+.Dl % ls -ldg /usr/local/bin
+.Pp
+上面是这样产生的
+.Li \&.Dl % ls -ldg /usr/local/bin .
+.It Li \&.Bd
+显示开始.
+.Ql \&.Bd
+的 显示 必须由
+.Ql \&.Ed
+宏 结束. 显示 可以 嵌套在 显示 和 列表中.
+.Ql \&.Bd
+有 这样的 语法:
+.Pp
+.Dl ".Bd display-type [-offset offset_value] [-compact]"
+.Pp
+显示类型 必须是 下面四个 之一, 可以 指定 一个 缩进量.
+.Ql \&.Bd .
+.Pp
+.Bl -tag -width "file file_name  " -compact
+.It Fl ragged
+以 打字 形式 显示 一块 正文, 其 右(和左)边界 是 不平整边界.
+.It Fl filled
+显示 填充 (格式化) 块. 块中文字 被 格式化 (边界 已经 填充过, 
+不再是 左边 不对齐 ).
+.It Fl literal
+显示 原文块, 适用于 源程序, 或 那种 简单的, 用 table 和
+空格 调整的 文字.
+.It Fl file Ar file_name
+阅读 并 显示 跟在
+.Fl file
+标志 后面的 文件. 原文模式 被打开, table 设为 8个字符 宽, 然而 文件中 
+出现的 任何
+.Xr troff/ Ns Nm \-mdoc
+命令 都将 被处理.
+.It Fl offset Ar string
+如果
+.Fl offset
+指定为 下面 字符串 之一, 这些 字符串 解释为 对 以后的 正文块的 缩进层次.
+.Pp
+.Bl -tag -width "indent-two" -compact
+.It Ar left
+正文块 按 当前 左边界 对齐, 这是
+.Ql \&.Bd 
+的 缺省模式.
+.It Ar center
+应该 是把 正文块 布在 中间. 不幸的是, 目前 只能在 大致的 中间位置
+靠左 对齐.
+.It Ar indent
+按 缺省 缩进值 或 table 值 缩进. 这个 缺省 缩进值 同时 用于
+.Ql \&.D1
+显示, 因此 你 应该 使 这两种 显示 一致. 缩进值 一般 设为 6n, 
+大约 2/3 英寸 (六个字符宽度).
+.It Ar indent-two
+缩进 缺省值的 两倍.
+.It Ar right
+在 距离 右边界 大约 两英寸处 把 正文块 靠
+.Em 左
+对齐. 这个宏 要 试验 效果, 有可能
+.Xr troff 
+怎么 都 弄不对.
+.El
+.El
+.It ".Ed"
+End-display.
+显示结束.
+.El
+.Ss 字体模式 Font Modes
+现有 五个宏 用于 改变 手册页的 文字外观:
+.Bl -tag -width \&.Emxx
+.It \&.Em
+文字 可以 用
+.Ql \&.Em
+宏 加重或强调. 常用的 强调字体 是 斜体 (italic).
+.Pp
+.Dl Usage: .Em argument ... \*(Pu
+.Bl -tag -width ".Em vide infra ) ) ," -compact -offset 14n
+.It Li ".Em does not"
+.Em does not
+.It Li ".Em exceed 1024 ."
+.Em exceed 1024 .
+.It Li ".Em vide infra ) ) ,"
+.Em vide infra ) ) ,
+.El
+.Pp
+.Ql \&.Em
+宏可以被 (其他宏) 分析和调用. 不带参数 调用
+.Ql \&.Em
+宏 是 一个错误.
+.It \&.Li
+.Ql \&.Li
+原文宏 用来 显示 字符, 变量, 常数, 任何 希望 照 输入文字 原样显示 的 内容.
+.Pp
+.Dl Usage: .Li argument ... \*(Pu
+.Bl -tag -width ".Li cntrl-D ) ,"  -compact -offset 14n
+.It Li \&.Li \een
+.Li \en
+.It Li \&.Li M1 M2 M3\ ;
+.Li M1 M2 M3 ;
+.It Li \&.Li cntrl-D\ )\ ,
+.Li cntrl-D ) ,
+.It Li \&.Li 1024\ ...
+.Li 1024 ...
+.El
+.Pp
+.Ql \&.Li
+宏可以被 (其他宏) 分析和调用.
+.It \&.Sy
+一般说来 symbolic 强调宏 无论在 象徵主义 角度, 还是 传统的英语 里,
+都是 用 黑体 (bold) 显示.
+.Pp
+.Dl Usage: .Sy symbol ... \*(Pu
+.Bl -tag -width ".Sy Important Noticex" -compact -offset 14n
+.It Li \&.Sy Important Notice
+.Sy Important Notice
+.El
+.Pp
+.Ql \&.Sy
+宏可以被 (其他宏) 分析和调用.
+.Ql \&.Sy
+的参数 可以 用 引号括起.
+.It Li \&.Bf
+字体模式开始.
+.Ql \&.Bf
+字体模式 必须用
+.Ql \&.Ef
+宏结束. 字体模式宏 可以 嵌套.
+.Ql \&.Bf
+宏 用 下面的 语法:
+.Pp
+.Dl ".Bf font-mode"
+.Pp
+字体模式 必须 是 下列 三种 之一:
+.Ql \&.Bf .
+.Pp
+.Bl -tag -width "file file_name  " -compact
+.It Sy \&Em | Fl emphasis
+就象 是 把
+.Ql \&.Em
+宏 用在 整个 正文块 一样.
+.It Sy \&Li | Fl literal
+就象 是 把
+.Ql \&.Li
+宏 用在 整个 正文块 一样.
+.It Sy \&Sy | Fl symbolic
+就象 是 把
+.Ql \&.Sy
+宏 用在 整个 正文块 一样.
+.El
+.It ".Ef"
+字体模式结束.
+.El
+.Ss 标记栏和列表 Tagged Lists and Columns
+有 多种 用
+.Ql ".Bl"
+列表开始宏 初始化的 列表. 表项 用
+.Ql ".It"
+项目宏 指定, 每一个 列表 必须 用
+.Ql ".El"
+宏结束. 列表 可以 嵌套在 列表和显示 中. 栏 可以 用在 列表 中, 但是 列表 
+不能 列在 栏里.
+.Pp
+另外 还可以 指定 列表属性, 像标记宽度, 列表偏移, 以及 紧凑模式
+(允许 或 不允许 表项间的 空行)
+在本文中 大多 使用了 标记风格 (tag style) 的 列表
+.Pq Fl tag .
+作为 步距变化, 表示 列表类型的 列表类型 是个 突出来 (overhanging) 的 列表
+.Pq Fl ohang .
+这种 列表类型 在
+.Tn TeX
+用户中 很流行, 但 看过 很多 页 的 标记列表 后 可能会 觉得 有点 滑稽.
+.Ql ".Bl" 
+宏 可以 接受 下面的 列表类型:
+.Pp
+.Bl -ohang -compact
+.It Fl bullet
+.It Fl item
+.It Fl enum
+这三个 是 最简单的 列表类型. 一旦 使用了
+.Ql ".Bl"
+宏, 只能用
+.Ql ".It"
+宏 组织 表项 . 例如, 可以 这样 写 一个 简单的 数字列表"
+.Bd -literal -offset indent-two
+\&.Bl -enum -compact
+\&.It
+\&Item one goes here.
+\&.It
+\&And item two here.
+\&.It
+\&Lastly item three goes here.
+\&.El
+.Ed
+.Pp
+结果是:
+.Pp
+.Bl -enum -offset indent-two -compact
+.It
+Item one goes here.
+.It
+And item two here.
+.It
+Lastly item three goes here.
+.El
+.Pp
+简单的布告栏:
+.Bd -literal -offset indent-two
+\&.Bl -bullet -compact
+\&.It
+\&Bullet one goes here.
+\&.It
+\&Bullet two here.
+\&.El
+.Ed
+.Pp
+产生:
+.Bl -bullet -offset indent-two -compact
+.It
+Bullet one goes here.
+.It
+Bullet two here.
+.El
+.Pp
+.It Fl tag
+.It Fl diag
+.It Fl hang
+.It Fl ohang
+.It Fl inset
+这些 列表类型 收集
+.Ql \&.It
+宏 指定的 参数, 并且 创建 一个 标签, 它 可能会
+.Em 插入 inset
+后面的 文字中,
+.Em 悬挂 (hanged)
+显示在 后面的 文字前,
+.Em 突前 (overhanged)
+显示在 更高 位置, 并且 不能 缩进 或
+.Em 标记 tagged .
+这个 列表 由
+.Ql Fl ohang
+列表类型 构建.
+.Ql \&.It
+宏 只能 被 插入 (inset), 悬挂 (hang), 和 标记列表类型宏 分析,
+且 不能 被调用. 
+.El
+这是 一个 插入标签 的 例子:
+.Bl -inset -offset indent
+.It Em Tag
+The tagged list (also called a tagged paragraph) is the
+most common type of list used in the Berkeley manuals.
+.It Em Diag
+Diag lists create section four diagnostic lists
+and are similar to inset lists except callable
+macros are ignored.
+.It Em Hang
+Hanged labels are a matter of taste.
+.It Em Ohang
+Overhanging labels are nice when space is constrained.
+.It Em Inset
+Inset labels are useful for controlling blocks of
+paragraphs and are valuable for converting
+.Nm \-mdoc
+manuals to other formats.
+.El
+.Pp
+下面是 产生 这个例子 的 源文本:
+.Bd -literal -offset indent
+\&.Bl -inset -offset indent
+\&.It Em Tag
+\&The tagged list (also called a tagged paragraph) is the
+\&most common type of list used in the Berkeley manuals.
+\&.It Em Diag
+\&Diag lists create section four diagnostic lists
+\&and are similar to inset lists except callable
+\&macros are ignored.
+\&.It Em Hang
+\&Hanged labels are a matter of taste.
+\&.It Em Ohang
+\&Overhanging labels are nice when space is constrained.
+\&.It Em Inset
+\&Inset labels are useful for controlling blocks of
+\&paragraphs and are valuable for converting
+\&.Nm \-mdoc
+\&manuals to other formats.
+\&.El
+.Ed
+.Pp
+这是 含有 两个表项 的 悬挂列表:
+.Bl -hang -offset indent
+.It Em Hanged
+labels appear similar to tagged lists when the
+label is smaller than the label width.
+.It Em Longer hanged list labels
+blend in to the paragraph unlike
+tagged paragraph labels.
+.El
+.Pp
+它们的 源文本为:
+.Bd -literal -offset indent
+\&.Bl -hang -offset indent
+\&.It Em Hanged
+\&labels appear similar to tagged lists when the
+\&label is smaller than the label width.
+\&.It Em Longer hanged list labels
+\&blend in to the paragraph unlike
+\&tagged paragraph labels.
+\&.El
+.Ed
+.Pp
+带有 可选 宽度项的 标记列表 可以 控制 标记的 宽度.
+.Pp
+.Bl -tag -width "PAGEIN" -compact -offset indent
+.It SL
+sleep time of the process (seconds blocked)
+.It PAGEIN
+number of disk
+.Tn I/O Ns 's
+resulting from references
+by the process to pages not loaded in core.
+.It UID
+numerical user-id of process owner
+.It PPID
+numerical id of parent of process process priority
+(non-positive when in non-interruptible wait)
+.El
+.Pp
+源文本是:
+.Bd -literal -offset indent
+\&.Bl -tag -width "PAGEIN" -compact -offset indent
+\&.It SL
+\&sleep time of the process (seconds blocked)
+\&.It PAGEIN
+\&number of disk
+\&.Tn I/O Ns 's
+\&resulting from references
+\&by the process to pages not loaded in core.
+\&.It UID
+\&numerical user-id of process owner
+\&.It PPID
+\&numerical id of parent of process process priority
+\&(non-positive when in non-interruptible wait)
+\&.El
+.Ed
+.Pp
+可接受的 宽度说明:
+.Bl -tag -width Ar -offset indent
+.It Fl width Ar "\&Fl"
+把 宽度 设置为 标志 (flag) 的 缺省 宽度. 所有 可调用的 宏 都有
+一个 缺省 宽度值. 目前
+.Ql \&.Fl 
+的 值 设为 十个 字符宽度, 大约 5/6 英寸.
+.It Fl width Ar "24n"
+设置 宽度 为 24 个 字符宽度, 大约 两英寸. 要使 比例 调整正常, 字母
+.Ql n
+必不可少
+.It Fl width Ar "ENAMETOOLONG"
+设置 宽度为 所给串的 长度.
+.It Fl width  Ar "\\*qint mkfifo\\*q"
+同样, 设置 宽度为 所给串的 长度.
+.El
+.Pp
+如果 没有 为 标记列表类型 指定 宽度, 第一次 调用
+.Ql \&.It
+的 时候, 格式化软件 试图 决定 适当的宽度. 如果
+.Ql ".It"
+的 第一个 参数 是 可调用宏, 就 使用 这个宏的 缺省宽度, 就像 把 宏名 当做宽度.
+可是 如果 列表中 的 其他表项 得到 另一个 可调用宏, 则 认为 它是 新的, 
+嵌套的 列表.
+.Sh 预定义串 PREDEFINED STRINGS
+下面的串 是 预定义的, 可以 用在 troff 的 串翻译序列
+.Ql \&\e*(xx
+中, 这里的
+.Em xx
+就是 定义的 串名; 以及 串翻译序列
+.Ql \&\e*x ,
+这里的
+.Em x
+是串名. 翻译序列 可以 用在 文本 的 任何地方.
+.Pp
+.Bl -column "String " "Nroff " "Troff " -offset indent
+.It Sy "String	Nroff	Troff"
+.It Li "<=" Ta \&<\&= Ta \*(<=
+.It Li ">=" Ta \&>\&= Ta \*(>=
+.It Li "Rq" Ta "''" Ta \*(Rq
+.It Li "Lq" Ta "``" Ta \*(Lq
+.It Li "ua" Ta ^ Ta \*(ua
+.It Li "aa" Ta ' Ta \*(aa
+.It Li "ga" Ta \` Ta \*(ga
+.\" .It Li "sL" Ta ` Ta \*(sL
+.\" .It Li "sR" Ta ' Ta \*(sR
+.It Li "q" Ta \&" Ta \*q
+.It Li "Pi" Ta pi Ta \*(Pi
+.It Li "Ne" Ta != Ta \*(Ne
+.It Li "Le" Ta <= Ta \*(Le
+.It Li "Ge" Ta >= Ta \*(Ge
+.It Li "Lt" Ta < Ta \*(Gt
+.It Li "Gt" Ta > Ta \*(Lt
+.It Li "Pm" Ta +- Ta \*(Pm
+.It Li "If" Ta infinity Ta \*(If
+.It Li "Na" Ta \fINaN\fP Ta \*(Na
+.It Li "Ba" Ta \fR\&|\fP Ta \*(Ba
+.El
+.Pp
+.Sy 注意 :
+那个 名为
+.Ql q
+的 串 应该 写成
+.Ql \e*q ,
+因为 它 只有 一个字符.
+.Sh 诊断 DIAGNOSTICS
+.Nm \-mdoc
+的 除错系统 比较 有限, 但是 可以 帮助你 检测出 微妙的 错误,
+例如 参数名 和 内部寄存器 或 宏名 冲突. (是什么?) 寄存器 是
+.Xr troff
+的 算术存储类, 用 一到二个字符 命名.
+.Nm \-mdoc
+对
+.Xr troff
+和
+.Xr ditroff
+而言, 所有
+.Nm \-mdoc
+的 内部寄存器 由 两个字符 组成, 格式是 <大写字母> <小写字母> 如
+.Ql \&Ar ,
+<小写字母> <大写字母> 如
+.Ql \&aR
+或 <字母> <数字> 如
+.Ql \&C\&1 .
+作为 乱上加乱,
+.Xr troff
+有 它 自己的 内部寄存器, 由 两个 小写字母 组成, 或者 是 一个点 加上 
+一个字母, 或者 是 转义字符 (meta-character) 和 字符. 已经 介绍过的 
+示例中 展示过 怎样用 转义序列
+.Ql \e& 
+防止 解释宏. 这办法 同样 适用于 内部寄存器名.
+.Pp
+.\" Every callable macro name has a corresponding register
+.\" of the same name (<upper_case><lower_case>).
+.\" There are also specific registers which have
+.\" been used for stacks and arrays and are listed in the
+.\" .Sx Appendix .
+.\" .Bd -ragged -offset 4n
+.\" [A-Z][a-z]	registers corresponding to macro names (example ``Ar'')
+.\" [a-z][A-Z]	registers corresponding to macro names (example ``aR'')
+.\" C[0-9]		argument types (example C1)
+.\" O[0-9]		offset stack (displays)
+.\" h[0-9]		horizontal spacing stack (lists)
+.\" o[0-9]		offset (stack) (lists)
+.\" t[0-9]		tag stack (lists)
+.\" v[0-9]		vertical spacing stack (lists)
+.\" w[0-9]		width tag/label stack
+.\" .Ed
+.\" .Pp
+如果 未经转义的 寄存器名 出现在 宏请求的 参数列表 中, 其 后果 不可预测.
+一般说来, 如果 大段的文字 没有 出现在 该出现的 地方, 或者 短句, 如标签, 
+消失了, 多半是 这个地方 误解了 参数列表中的 参数类型.
+既然 你的母亲 都 没打算 让你 记住 那些 乱七八糟的 东西, 那就 用 一种办法
+来 找出 参数 是否 有效: 
+.Ql \&.Db
+(debug) 宏 可以 显示出 对 大多数宏 的 参数列表的 解释.
+诸如
+.Ql \&.Pp
+之类 的 宏 不包含 调试信息, 但是 所有 可调用宏 包含, 我们 强烈建议 一旦
+有 疑点, 打开
+.Ql \&.Db
+宏.
+.Pp
+.Dl Usage: \&.Db [on | off]
+.Pp
+在 这个 示例中, 我们把 介于 debug 宏 之间 的 文本 故意 弄出点 错误 (标志参数
+.Ql \&aC
+应该 写成
+.Ql \e&aC
+):
+.Bd -literal -offset indent
+\&.Db on
+\&.Op Fl aC Ar file )
+\&.Db off
+.Ed
+.Pp
+结果输出为:
+.Bd -literal -offset indent
+DEBUGGING ON
+DEBUG(argv) MACRO: `.Op'  Line #: 2
+	Argc: 1  Argv: `Fl'  Length: 2
+	Space: `'  Class: Executable
+	Argc: 2  Argv: `aC'  Length: 2
+	Space: `'  Class: Executable
+	Argc: 3  Argv: `Ar'  Length: 2
+	Space: `'  Class: Executable
+	Argc: 4  Argv: `file'  Length: 4
+	Space: ` '  Class: String
+	Argc: 5  Argv: `)'  Length: 1
+	Space: ` '  Class: Closing Punctuation or suffix
+	MACRO REQUEST: .Op Fl aC Ar file )
+DEBUGGING OFF
+.Ed
+.Pp
+调试信息的 第一行 是 调用的 宏名, 这里是
+.Ql \&.Op 
+和 它 所在的 行号. 如果 涉及了 一个 或 多个 文件 (特别是 其他文件 
+包含进来), 行号有可能失灵. 但如果 只有 一个文件, 它 应该是 准的.
+第二行 给出了 参数计数, 参数
+.Pq Ql \&Fl
+和 它的长度. 如果 参数的长度 是 两个字符, 将会 测试 看它 能否 执行 
+(不幸的是,含有 非零值 的 寄存器 看上去 都能执行).
+第三行 给出 分配给类的 空间, 以及 类的类型. 这里的 问题是, 参数 aC 
+不应该 可执行. 类的 四种类型是 字符串, 可执行类, 结束标点, 和开始标点.
+最后一行 显示了 读入的 完整 参数行. 下个例子里, 惹祸的
+.Ql \&aC
+被转义了:
+.Bd -literal -offset indent
+\&.Db on
+\&.Em An escaped \e&aC
+\&.Db off
+.Ed
+.Bd -literal -offset indent
+DEBUGGING ON
+DEBUG(fargv) MACRO: `.Em'  Line #: 2
+	Argc: 1  Argv: `An'  Length: 2
+	Space: ` '  Class: String
+	Argc: 2  Argv: `escaped'  Length: 7
+	Space: ` '  Class: String
+	Argc: 3  Argv: `aC'  Length: 2
+	Space: ` '  Class: String
+	MACRO REQUEST: .Em An escaped &aC
+DEBUGGING OFF
+.Ed
+.Pp
+参数
+.Ql \e&aC
+表现出 同样的 长度2, 这是 因为
+.Ql \e&
+序列的 长度 为零, 但是 不存在 叫做
+.Ql \e&aC
+的 寄存器, 因此 它的类型 是 字符串.
+.Pp
+其他 诊断内容 是 使用报告等, 能够 自我解释的.
+.Sh GROFF, TROFF AND NROFF
+The
+.Nm \-mdoc
+宏包 不需要 和
+.Xr groff 
+的 兼容模式.
+.Pp
+为了 便于 在线阅读, 这个宏包 阻止了 分页, 页头, 页脚 之类 常常在
+.Xr nroff 
+中 出现的 中断. 此时 即使在 手册页 尾,
+.Xr groff
+(和参数
+.Fl T Ns Ar ascii
+) 也 不会 提示 什么. 对 分页的 阻止 使得
+.Xr nroff Ns 'd
+文件 不适合 硬拷贝 (hardcopy). 有一个 名为
+.Ql \&cR
+的 寄存器 可以 通过 在 文件
+.Pa /usr/src/share/tmac/doc-nroff
+(依赖于宿主系统) 中置零, 恢复 传统风格.
+.Sh 相关文件 FILES
+.Bl -tag -width /usr/share/man0/template.doc -compact
+.It Pa /usr/share/tmac/tmac.doc
+手册宏包
+.It Pa /usr/share/misc/mdoc.template
+编写 手册 的 模板
+.It Pa /usr/share/examples/mdoc/*
+一些 手册页 的 例子
+.El
+.Sh 另见 SEE ALSO
+.Xr man 1 ,
+.Xr troff 1 ,
+.Xr mdoc 7
+.Sh BUGS
+仍然 没有 解决 在 标志参数中的 连字符, 在
+.Sx 描述 DESCRIPTION
+小节 偶尔 会 出点麻烦 (在 连字符处 断行).
+.Pp
+文档中 没有 声明 预定义串.
+.Pp
+还没有 把 3f 小节 加进 头例程 (header routine) 中.
+.Pp
+.Ql \&.Nm
+字体 不应当在
+.Sx NAME
+小节 中 改变.
+.Pp
+应该 检查
+.Ql \&.Fn
+防止 行 太短 的 时候 断行.
+偶然 它会 断开 反括弧, 而 有时候 如果 某行 已满时, 看上去 会 很可笑.
+.Pp
+当 使用 nroff 格式化 文档 时, 防止 页头和页脚 (不是 初始的 头和脚) 断开 的 方法
+有可能 偶尔 在 页的底部 产生 一个 不可见的 部分填满的 行 (空行).
+.Pp
+列表和显示宏不做任何保存, 显然它应该做的.
+.\" Note what happens if the parameter list overlaps a newline
+.\" boundary.
+.\" to make sure a line boundary is crossed:
+.\" .Bd -literal
+.\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
+.\" .Ed
+.\" .Pp
+.\" produces, nudge nudge,
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
+.\" nudge
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
+.\" .Pp
+.\" If double quotes are used, for example:
+.\" .Bd -literal
+.\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
+.\" .Ed
+.\" .Pp
+.\" produces, nudge nudge,
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
+.\" nudge
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
+.\" nudge
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
+.\" .Pp
+.\" Not a pretty sight...
+.\" In a paragraph, a long parameter containing unpaddable spaces as
+.\" in the former example will cause
+.\" .Xr troff
+.\" to break the line and spread
+.\" the remaining words out.
+.\" The latter example will adjust nicely to
+.\" justified margins, but may break in between an argument and its
+.\" declaration.
+.\" In
+.\" .Xr nroff
+.\" the right margin adjustment is normally ragged and the problem is
+.\" not as severe.
+.Bf
+.Sh "[中文版维护人]"
+.Sy 徐明 <xuming at users.sourceforge.net>
+.Sh "[中文版最新更新]"
+.Sy 2003/05/13
+.Sh "《中国Linux论坛man手册页翻译计划》"
+.Sy http://cmpp.linuxforum.net
+.Ef
diff --git a/src/man7/move.7 b/src/man7/move.7
new file mode 100644
index 0000000..80d9916
--- /dev/null
+++ b/src/man7/move.7
@@ -0,0 +1,56 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "MOVE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+MOVE \- 重定位一个游标
+
+.SH SYNOPSIS
+.sp
+.nf
+MOVE [ \fIdirection\fR { FROM | IN } ] \fIcursorname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBMOVE\fR 在不检索数据的情况下重新定位一个游标。 MOVE ALL 把游标移动到结尾。 MOVE 的工作类似于 FETCH 命令, 但只是重定位游标而不返回行。
+.PP
+ 请参考
+FETCH [\fBfetch\fR(7)]
+命令获取语法和参数的详细信息。
+.SH "OUTPUTS 输出"
+.PP
+ 成功完成时,MOVE 命令返回一个下面形式的命令标签
+.sp
+.nf
+MOVE \fIcount\fR
+.sp
+.fi
+\fIcount\fR 是移动的行数(可能为零)。
+.SH "EXAMPLES 例子"
+设置和使用一个游标:
+.sp
+.nf
+BEGIN WORK;
+DECLARE liahona CURSOR FOR SELECT * FROM films;
+
+-- 忽略开头 5 行:
+MOVE FORWARD 5 IN liahona;
+MOVE 5
+
+-- 抓取游标 liahona 里的第六行:
+FETCH 1 FROM liahona;
+ code  | title  | did | date_prod  |  kind  |  len
+-------+--------+-----+------------+--------+-------
+ P_303 | 48 Hrs | 103 | 1982-10-22 | Action | 01:37
+(1 row)
+
+-- 关闭游标 liahona 并提交工作:
+CLOSE liahona;
+COMMIT WORK;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 MOVE 语句。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/netdevice.7 b/src/man7/netdevice.7
new file mode 100644
index 0000000..476b645
--- /dev/null
+++ b/src/man7/netdevice.7
@@ -0,0 +1,251 @@
+'\" t
+.\" Don't change the first line, it tells man that tbl is needed.
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak at muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.TH NETDEVICE  7 "2 May 1999" "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+netdevice \- 底层访问 Linux 网络设备.
+
+.SH "总览 (SYNOPSIS)"
+.B "#include <sys/ioctl.h>"
+.br
+.B "#include <net/if.h>"
+
+.SH "描述 (DESCRIPTION)"
+本手册 描述 用于 配置 网络设备 的 套接字(socket) 接口.
+
+Linux 支持 一些 配置 网络设备 的 标准 ioctl. 他们 用于 任意的 套接字 描述符,
+而 无须 了解 其 类型 或 系列. 他们 传递 一个
+.B ifreq 
+结构:
+
+.nf
+.ta 4 20 42
+struct ifreq
+{
+	char	ifr_name[IFNAMSIZ];	/* Interface name */
+	union {
+		struct sockaddr	ifr_addr;
+		struct sockaddr	ifr_dstaddr;
+		struct sockaddr	ifr_broadaddr;
+		struct sockaddr	ifr_netmask;
+		struct sockaddr	ifr_hwaddr;
+		short	ifr_flags;
+		int	ifr_ifindex;
+		int	ifr_metric;
+		int	ifr_mtu;
+		struct ifmap	ifr_map;
+		char	ifr_slave[IFNAMSIZ];
+		char	ifr_newname[IFNAMSIZ];
+		char *	ifr_data;
+	};
+}
+
+struct ifconf 
+{ 
+  	int ifc_len;		/* size of buffer */
+	union {            
+		char *	ifc_buf; /* buffer address */ 
+		struct ifreq *ifc_req; /* array of structures */
+	};  
+}; 	   
+.ta
+.fi
+
+一般说来, ioctl 通过 把
+.B ifr_name
+设置为 接口 的 名字 来 指定 将要 操作 的 设备. 结构的 其他成员 可以 分享 内存.
+
+.SH IOCTLS
+如果 某个 ioctl 标记为 特权操作, 那么 操作时 需要 有效uid 为 0, 或者 拥有
+.B CAP_NET_ADMIN
+能力. 否则 将 返回
+.B EPERM .
+
+.TP
+.B SIOCGIFNAME
+给定
+.BR ifr_ifindex,
+返回
+.BR ifr_name 
+中 的 接口名字. 这是 唯一 返回 
+.BR ifr_name 
+内容 的 ioctl.
+
+.TP
+.B SIOCGIFINDEX
+把 接口 的 索引 存入
+.BR ifr_ifindex .
+
+.TP
+.BR SIOCGIFFLAGS ", " SIOCSIFFLAGS
+读取 或 设置 设备的 活动标志字.
+.B ifr_flags
+包含 下列值 的 屏蔽位:
+
+.TS
+tab(:);
+c s
+l l.
+设备标志
+IFF_UP: 接口正在运行.
+IFF_BROADCAST: 有效的广播地址集.
+IFF_DEBUG: 内部调试标志.
+IFF_LOOPBACK: 这是自环接口.
+IFF_POINTOPOINT: 这是点到点的链路接口.
+IFF_RUNNING: 资源已分配.
+IFF_NOARP: 无arp协议, 没有设置第二层目的地址.
+IFF_PROMISC: 接口为杂凑(promiscuous)模式.
+IFF_NOTRAILERS: 避免使用trailer .
+IFF_ALLMULTI: 接收所有组播(multicast)报文.
+IFF_MASTER: 主负载平衡群(bundle).
+IFF_SLAVE: 从负载平衡群(bundle).
+IFF_MULTICAST: 支持组播(multicast).
+IFF_PORTSEL: 可以通过ifmap选择介质(media)类型.
+IFF_AUTOMEDIA: 自动选择介质.
+IFF_DYNAMIC: 接口关闭时丢弃地址.
+.TE 
+
+设置 活动标志字 是 特权操作, 但是 任何进程 都可以 读取 标志字.
+
+.TP
+.BR SIOCGIFMETRIC ", " SIOCSIFMETRIC
+使用
+.BR ifr_metric 
+读取 或 设置 设备的 metric 值. 该功能 目前 还没有 实现. 读取操作 使
+.B ifr_metric
+置 0, 而 设置操作 则 返回
+.B EOPNOTSUPP.
+
+.TP
+.BR SIOCGIFMTU ", " SIOCSIFMTU
+使用
+.BR ifr_mtu 
+读取 或 设置 设备的 MTU(最大传输单元).
+设置 MTU 是 特权操作. 过小的 MTU 可能 导致 内核 崩溃.
+
+.TP
+.BR SIOCGIFHWADDR ", " SIOCSIFHWADDR
+使用
+.BR ifr_hwaddr 
+读取 或 设置 设备的 硬件地址. 设置 硬件地址 是 特权操作.
+
+.TP
+.B SIOCSIFHWBROADCAST
+使用
+.BR ifr_hwaddr 
+读取 或 设置 设备的 硬件广播地址. 这是个 特权操作.
+
+.TP
+.BR SIOCGIFMAP ", " SIOCSIFMAP
+使用
+.BR ifr_map 
+读取 或 设置 接口的 硬件参数. 设置 这个参数 是 特权操作.
+
+.nf
+.ta 4 20 42
+struct ifmap 
+{
+	unsigned long	mem_start;
+	unsigned long	mem_end;
+	unsigned short	base_addr; 
+	unsigned char	irq;	
+	unsigned char	dma; 
+	unsigned char	port; 
+};
+.ta
+.fi
+
+对 ifmap 结构 的 解释 取决于 设备驱动程序 和 体系结构.
+
+.TP
+.BR SIOCADDMULTI ", " SIOCDELMULTI
+使用
+.BR ifr_hwaddr 
+在 设备的 链路层 组播过滤器 (multicase filter) 中 添加 或 删除 地址.
+这些是 特权操作. 参看
+.BR packet (7) .
+
+.TP
+.BR SIOCGIFTXQLEN ", " SIOCSIFTXQLEN
+使用
+.BR ifr_qlen 
+读取 或 设置 设备的 传输队列长度.
+设置 传输队列长度 是 特权操作.
+
+.TP
+.B SIOCSIFNAME
+把
+.BR ifr_ifindex
+中 指定的 接口名字 改成
+.BR ifr_newname .
+这是个 特权操作.
+
+.TP
+.B SIOCGIFCONF
+返回 接口地址(传输层) 列表. 出于 兼容性, 目前 只代表 AF_INET 地址.
+用户 传送 一个
+.B ifconf
+结构 作为 ioctl 的 参数. 其中
+.B ifc_req
+包含 一个 指针 指向
+.I ifreq
+结构数组, 他的 长度 以字节 为单位 存放在
+.B ifc_len 
+中. 内核 用 所有 当前的 L3(第三层?) 接口地址 填充 ifreqs,
+这些 接口 正在 运行:
+.I ifr_name 
+存放 接口名字 (eth0:1等),
+.I ifr_addr
+存放 地址. 内核 在
+.I ifc_len
+中 返回 实际长度;
+如果 他 等于 初始长度, 表示 溢出了, 用户 应该 换一个 大些的 缓冲区 重试 一下.
+没有 发生 错误时 ioctl 返回 0, 否则 返回 -1, 溢出 不算 错误.
+
+\" XXX Slaving isn't supported in 2.2
+.\" .TP
+.\" .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
+.\" Get or set the slave device using
+.\" .BR ifr_slave .
+.\" Setting the slave device is a privileged operation.
+
+.PP
+
+.\" XXX add amateur radio stuff.
+.PP
+大多数 协议 使用 自己的 ioctl 配置 协议 特定的 接口 操作. 具体 情况
+参看 协议的 帮助手册. 要配置 IP 地址 可以 参看
+.BR ip (7).
+.PP
+另外, 某些 设备 有 专用的 ioctl, 这里 不做 叙述.
+
+.SH "注意 (NOTE)"
+严格说来
+.B SIOCGIFCONF 
+是 专门 针对 IP 的, 它 属于
+.BR ip (7).
+
+.SH "注意 (NOTE)"
+可以 通过
+.I /proc/net/dev
+看到 没有 地址 或 没有
+.B IFF_RUNNING 
+标志 的 接口名字.
+
+.SH "另见 (SEE ALSO)"
+.BR ip "(7), " proc "(7)"
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.B 2000/10/15
+第一版
+.br
+.BR 2001/11/24
+第一次修订
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/netlink.7 b/src/man7/netlink.7
new file mode 100644
index 0000000..ec6b3c9
--- /dev/null
+++ b/src/man7/netlink.7
@@ -0,0 +1,251 @@
+.\" t
+.\" Don't change the first line, it tells man that tbl is needed.
+.\" This man page copyright 1998 by Andi Kleen. Subject to the GPL.
+.\" This manpage copyright 1998 by Andi Kleen. Subject to the GPL.
+.\" Based on the original comments from Alexey Kuznetsov
+.\" 中文版 Copyright (c) 2000 LetBright,BitBIRD 和 www.linuxforum.net
+.TH NETLINK 7 "27 Apr 1999" "Linux Man Page" "Linux Programmer's Manual"
+.SH NAME 名称
+netlink, PF_NETLINK \- 内核与用户之间的通讯
+.SH SYNOPSIS 总揽
+.nf
+.\" XXX
+.B #include <asm/types.h>
+.br
+.B #include <sys/socket.h>
+.br
+.B #include <linux/netlink.h> 
+.br
+.PP
+.BI "netlink_socket = socket(PF_NETLINK, " socket_type ", " netlink_family ); 
+.SH DESCRIPTION 描述
+Netlink 用于在内核模块与在用户地址空间中的进程之间传递消息的。它包
+含了用于用户进程的基于标准套接字的接口和用于内核模块的一个内部核心
+API。有关这个内部核心接口的资料没有包含在此手册页中。同样还有
+一个过时的通过 netlink 字符设备的接口也没有包含在此,它只是提供
+向下兼容特性。
+
+Netlink 是一个面向数据包的服务。
+.B SOCK_RAW
+和
+.B SOCK_DGRAM
+都是
+.IR socket_type
+的有效值。然而 netlink 协议对数据包 datagram 和原套接字(raw sockets)
+并不作区分。
+
+.I netlink_family
+选择核心模块或 netlink 组进行通讯。现有可指定的 netlink 的种类有: 
+.TP
+.B NETLINK_ROUTE
+接收路由更新信息,可以用来修改 IPv4 的路由表。(参见
+.BR rtnetlink (7))。
+.TP
+.B NETLINK_FIREWALL
+接收 IPv4 防火墙编码发送的数据包。
+.TP
+.B NETLINK_ARPD
+用以维护用户地址空间里的 arp 表
+.TP
+.B NETLINK_ROUTE6
+接收和发送 IPv6 路由表更新消息。
+.TP
+.B NETLINK_IP6_FW
+接收未通过 IPv6 防火墙检查的数据包(尚未实现)
+.TP
+.BR NETLINK_TAPBASE ... NETLINK_TAPBASE+15
+是
+.B ethertap
+设备实例。Ethertap 是从用户程序空间对以太网驱动程序进行
+仿真的“伪”网络通道设备。
+.TP
+.B NETLINK_SKIP
+Enskip 的保留选项。
+.TP
+.B NETLINK_USERSOCK
+为今后用户程序空间协议用保留选项。
+.PP
+Netlink 数据信息由具有一个或多个
+.B nlmsghdr
+数据报头及其有效数据的字节流组成。对于分成多个数据包的 Netlink 信息,
+数据报头中的
+.B NLM_F_MULTI
+标志位将被设置,除了最后一个包的报头具有标志
+.BR NLMSG_DONE 外。
+字节流应只能用标准的
+.B NLMSG_*
+宏来访问,参阅
+.BR netlink (3). 
+
+Netlink 不是可靠的协议。它只是尽可能地将信息传输到目的地,但在内存耗
+尽或发生其他错误时,它会丢失信息。为保证信息可靠传输,可以设置标志
+.B NLM_F_ACK
+来要求接收方确认。数据接收确认是一个
+.B NLMSG_ERROR
+数据包,包中的出错字段设置为 0。应用程序必须自己创建收到信息确认消息。
+在信息传送过程中,内核一直(尝试)对每个出错的数据包发送
+.B NLMSG_ERROR
+消息。用户进程也应当遵循这一个惯例。
+
+每一个 netlink 数据类都有一个32位广播分组,当
+对套接字调用
+.BR bind (2)
+时, 
+.B sockaddr_nl
+中的
+.B nl_groups
+字段设置成所要侦听的广播组的位掩码。其默认值为 0,表示不接收任何广播。
+
+一个套接字可以对任意一个多址广播组广播消息,只要在调用
+.BR sendmsg (2) 
+或调用
+.BR connect (2) 
+时,将位掩码
+.B nl_groups
+设置成要发送消息的广播组的值就可以了。
+只有具有有效 uid 为 0 的用户或具有
+
+.B CAP_NET_ADMIN
+权限的用户才可能发送或侦听针对 netlink 多址广播组的消息。
+任何一个对多址广播组消息的响应需发回进程标识 pid 和广播组地址。
+
+.RS
+.nf
+.ta 4 13 25
+struct nlmsghdr
+{
+__u32 nlmsg_len; /* 包括报头在内的消息长度*/
+__u16 nlmsg_type; /* 消息正文 */
+__u16 nlmsg_flags; /* 附加标志*/
+__u32 nlmsg_seq; /* 序列号*/
+__u32 nlmsg_pid; /* 发送进程号 PID */
+};
+
+
+struct nlmsgerr
+{
+int error; /* 负数表示的出错号 errno 或为 0 要求确认 acks*/ 
+struct nlmsghdr msg; /* 造成出错的消息报头*/ 
+};
+.ta
+.fi
+.RE
+
+在每个
+.B nlmsghdr
+后跟随着有效数据。
+.B nlmsg_type
+可以成为标准消息的类型:
+.B NLMSG_NOOP
+可以忽略的消息,
+.B NLMSG_ERROR
+发出错误发生的消息,有关数据中包含一个 
+.I nlmsgerr 
+结构,
+.B NLMSG_DONE
+一个多数据包消息结束的信息。
+.\" 2.1.130 好象不再使用它。
+.\" .B NLMSG_OVERRUN
+.\" 数据丢弃. 
+
+一个 netlink 类通常指定更多的消息类型,请参阅有关手册页,如
+.IR NETLINK_ROUTE .
+中的 
+.BR rtnetlink (7)
+
+.TS 
+tab(:); 
+l s 
+l l.
+nlmsg_flags 的标准标志位
+NLM_F_REQUEST: 设置全部请求消息
+NLM_F_MULTI:T{
+此消息是多数据包消息之一,通过标志
+.B NLMSG_DONE
+结束。
+.\" XXX describe that
+T}
+NLM_F_ACK: 数据成功接收返回确认消息
+NLM_F_ECHO: 要求响应请求信息
+.TE
+
+.TS
+tab(:);
+l s 
+l l.
+为 GET 请求设立的附加标志位
+NLM_F_ROOT: 返回对象表而不是单个数据项
+NLM_F_MATCH: 尚未实现
+NLM_F_ATOMIC: 返回对象表的原子快照(atomic snapshot) 
+NLM_F_DUMP: 尚未列入文档
+.TE
+
+.TS
+tab(:);
+l s
+l l.
+对新建 NEW 请求设立的附加标志位
+NLM_F_REPLACE: 替换现有的对象
+NLM_F_EXCL: 如对象已存在,不作替换
+NLM_F_CREATE: 创建对象,如果对象不存在
+NLM_F_APPEND: 对象表添加对象项
+.TE
+
+注 NLM_F_ATOMIC 要求用户有 CAP_NET_ADMIN 或超级用户权。
+
+.SH 地址格式
+
+.B sockaddr_nl
+描述了在用户空间或在核心空间里一个 netlink 客户对象的数据结构。
+一个 sockaddr_nl 对象可以是单址广播或对一个 netlink 多址组
+(nl_groups 不为 0).
+
+.RS
+.nf
+struct sockaddr_nl
+{
+sa_family_t nl_family; /* AF_NETLINK */
+unsigned short nl_pad; /* 零 */
+pid_t nl_pid; /* 进程标识号pid */
+__u32 nl_groups; /* 多址广播组掩码*/
+};
+.fi
+.RE
+
+.B nl_pid 
+是用户空间中 netlink 的进程标识号 pid,如果是在内核时此值为 0。
+.B nl_groups 
+是一个代表 neltlink 组号的位掩码。
+.\" XXX describe what that is. 
+
+
+.SH BUGS
+本手册页并不完整。
+
+
+.SH  NOTES 注意
+通过
+.B libnetlink
+调用 netlink 功能通常比通过低层内核接口要来得好些。
+
+
+.SH VERSIONS 版本
+netlink 套接字接口是 Linux 2.2 新特性
+
+Linux 2.0 支持更多的基于netlink接口的原始设备(作为向下兼容特性,
+这些设备目前仍可使用。旧接口特性没有在此叙述。
+
+.SH 另见
+.BR cmsg (3),
+.BR rtnetlink (7),
+.BR netlink (3).
+.PP
+.BR ftp://ftp.inr.ac.ru/ip-routing/iproute2* 
+有关 libnetlink 部分
+
+.SH "[中文版维护人]"
+.B LetBright <letbright at netease.com>
+.SH "[中文版最新更新]"
+.B 2000/11/09
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/notify.7 b/src/man7/notify.7
new file mode 100644
index 0000000..183bb7a
--- /dev/null
+++ b/src/man7/notify.7
@@ -0,0 +1,51 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "NOTIFY" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+NOTIFY \- 生成一个通知
+
+.SH SYNOPSIS
+.sp
+.nf
+NOTIFY \fIname\fR        
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBNOTIFY\fR 命令向当前数据库中所有执行过 LISTEN name, 正在监听特定通知条件的前端应用发送一个通知事件。
+.PP
+ 传递给前端的通知事件包括通知条件名和发出通知的后端进程PID。 数据库设计者有责任定义用于某个数据库的条件名和每个通知条件的含义。
+.PP
+ 通常,通知条件名与数据库里的表的名字相同, 通知时间实际上意味着"我修改了此数据库,请看一眼有什么新东西"。 NOTIFY 和 LISTEN  命令并不强制这种联系。例如,数据库设计者可以使用几个不同的条件名来标志一个表的几种不同改变。
+.PP
+\fBNOTIFY\fR 为访问同一个 PostgreSQL  数据库的一组进程提供了一种简单的信号形式或进程间通讯机制。 更高级的机制(除了一个简单的通知名以外)可以通过使用数据库中的表从通知者传递数据到被通知者。
+.PP
+ 当NOTIFY用于通知某一特定表修改的动作的发生, 一个实用的编程技巧是将 NOTIFY 放在一个由表更新触发的规则里。用这种方法, 通知将在表更新的时候自动触发,而且应用程序员不会碰巧忘记处理它。
+.PP
+\fBNOTIFY\fR 和 SQL 事务用某种重要的方法进行交换。首先,如果 NOTIFY 在事务内部执行,通知事件直到事务提交才会送出。 这么做是有道理的,因为如果事务退出了, 那么在它里面的所有命令都没有效果 - 包括 NOTIFY。但如果有人希望通知事件立即发送,这就不太好了。 其次,当一个正在监听的会话在一次事务内收到一个通知信号, 直到本次事务完成(提交或退出)之前,该通知事件将不被送到与之相连的客户端。 同样,如果一个通知在事务内部发送出去了, 而该事务稍后又退出了,我们就希望通知可以在某种程度上被撤消- -但通知一旦发送出去,服务器便不能从客户端"收回"通知。 所以通知时间只是在事务之间传递。这一点就要求使用 NOTIFY 作为实时信号的应用应该确保他们的事务尽可能短。
+.PP
+\fBNOTIFY\fR 在一方面的行为象 Unix 的信号: 如果同一条件名在短时间内发出了多条信号,接收者几次执行 NOTIFY 可能只回收到一条通知信息。 所以依赖于收到的通知条数的方法是很不可靠的。因而,使用 NOTIFY唤醒需要关注某事的应用, 同时还要使用数据库对象(如序列号)来跟踪事件发生了几次。
+.PP
+ 客户端经常会自己发送与正在监听的通知名一样的 NOTIFY。 这时它(客户端)也和其他正在监听的会话一样收到一个通知事件。 这样可能导致一些无用的工作(与应用逻辑有关)-- 例如, 对客户端刚写过的表又进行一次读操作以发现是否有更新。 我们可以通过检查服务器进程的PID(在通知事件中提供) 是否与自己的后端的PID一致(从 libpq 中取得)。当他们一样时, 说明这是其自身回弹的信息,可以忽略。(不管前面章节是如何讲的,这是一个安全的技巧。 PostgreSQL 保持自身的通知和其他到来的通知区分开。 所以你屏蔽了自己的通知后不会略过外部的通知。)
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 生成信号(通知)的通知条件(任何标识符)。
+.SH "EXAMPLES 例子"
+.PP
+ 在 \fBpsql\fR 里配置和执行一个监听/通知对:
+.sp
+.nf
+LISTEN virtual;
+NOTIFY virtual;
+Asynchronous notification "virtual" received from server process with PID 8448.
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在 SQL 标准里没有 NOTIFY 语句。
+.SH "SEE ALSO 参见"
+LISTEN [\fBlisten\fR(7)], UNLISTEN [\fBunlisten\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/packet.7 b/src/man7/packet.7
new file mode 100644
index 0000000..8e5a373
--- /dev/null
+++ b/src/man7/packet.7
@@ -0,0 +1,315 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen .
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.TH PACKET(7) Linux Programmer's Manual PACKET(7)
+.SH NAME
+
+分组(也译为数据包),PF_PACKET - 在设备层的分组接口
+译注:PF_PACKET 中的 PF 是 protocol family(协议族)的缩写。
+
+.SH SYNOPSIS 总览
+.nf
+.B #include <sys/socket.h>
+.br
+.B #include <features.h> /* 需要里面的 glibc 版本号 */
+.br
+.B #if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
+.br
+.B #include <netpacket/packet.h>
+.br
+.B #include <net/ethernet.h> /* 链路层(L2)协议 */
+.br
+.B #else
+.br
+.B #include <asm/types.h>
+.br
+.B #include <linux/if_packet.h>
+.br
+.B #include <linux/if_ether.h> /* 链路层协议 */
+.br
+.B #endif
+.sp
+.PP
+.BI packet_socket = socket(PF_PACKET, int socket_type, int protocol);
+.fi
+.SH DESCRIPTION 描述
+分组套接口(也译为插口或套接字)被用于在设备层(OSI 的链路层)
+收发原始(raw )分组。它允许用户在用户空间实现在物理层之上的
+协议模块。
+
+
+对于包含链路层报头的原始分组,socket_type 参数是 SOCK_RAW;
+对于去除了链路层报头的加工过的分组,socket_type 参数是
+SOCK_DGRAM。链路层报头信息可在作为一般格式的 sockaddr_ll 中
+的中得到。socket 的 protocol 参数指的是 IEEE 802.3 的按网络
+层排序的协议号,在头文件中有所有被允许的
+协议的列表。当 protocol 被设置为 htons(ETH_P_ALL)时,可以接
+收所有的协议。到来的此种类型的分组在传送到在内核实现的协议
+之前要先传送给分组套接口。
+
+译注:DGRAM 是数据报的意思,htons 函数名是 hosts to networks
+of a short (16位整数的从主机到网络的字节序变换)的缩写。
+
+只有有效 uid 是 0 或有 CAP_NET_RAW 能力的进程可以打开分组
+套接口。
+
+
+传送到设备和从设备传送来的 SOCK_RAW 分组不改变任何分组数据。
+当收到一个 SOCK_RAW 分组时, 地址仍被分析并传送到一个标准的
+sockaddr_ll 地址结构中。当发送一个 SOCK_RAW 分组时, 用户供
+给的缓冲区应该包含物理层报头。接着此分组不加修改的放入目的
+地址定义的接口的网络驱动程序的队列中。一些设备驱动程序总是
+增加其他报头。SOCK_RAW 分组与已被废弃的 Linux 2.0 的
+SOCK_PACKET 分组类似但不兼容。
+
+对 SOCK_DGRAM 分组的操作要稍微高一层次。在分组被传送到用户
+之前物理报头已被去除。从 SOCK_DGRAM分组套接口送出的分组在被
+放入网络驱动程序的队列之前,基于在 sockaddr_ll 中的目的地址
+得到一个适合的物理层报头。
+
+缺省的所有特定协议类型的分组被发送到分组套接口。为了只从特
+定的接口得到分组,使用bind(2)来指定一个在 sockaddr_ll 结构
+中的地址,以此把一个分组套接口绑定到一个接口上。只有地址字
+段 sll_protocol 和 sll_ifindex 被绑定用途所使用。
+
+不支持在分组套接口上的 connect(2) 操作。(不能作为客户端使用)
+
+.SH ADDRESS TYPES 地址类型
+sockaddr_ll 是设备无关的物理层地址。
+
+.RS
+.nf
+.ta 4n 20n 35n
+struct sockaddr_ll
+{
+unsigned short sll_family; /* 总是 AF_PACKET */
+unsigned short sll_protocol; /* 物理层的协议 */
+int sll_ifindex; /* 接口号 */
+unsigned short sll_hatype; /* 报头类型 */
+unsigned char sll_pkttype; /* 分组类型 */
+unsigned char sll_halen; /* 地址长度 */
+unsigned char sll_addr[8]; /* 物理层地址 */
+};
+.ta
+.fi
+.RE
+
+sll_protocol 是在 linux/if_ether.h 头文件中定义的按网络层排
+序的标准的以太桢协议类型。sll_ifindex 是接口的索引号(参见
+netdevice(2));0 匹配所有的接口(当然只有合法的才用于绑定)。
+sll_hatype 是在 linux/if_arp.h 中定义的 ARP 硬件地址类型。
+sll_pkttype 包含分组类型。有效的分组类型是:目标地址是本地
+主机的分组用的 PACKET_HOST,物理层广播分组用的 PACKET_BROADCAST
+,发送到一个物理层多路广播地址的分组用的 PACKET_MULTICAST,
+在混杂(promiscuous)模式下的设备驱动器发向其他主机的分组用的
+PACKET_OTHERHOST,本源于本地主机的分组被环回到分组套接口用
+的 PACKET_OUTGOING。这些类型只对接收到的分组有意义。sll_addr
+和 sll_halen 包括物理层(例如 IEEE 802.3)地址和地址长度。精确
+的解释依赖于设备。
+
+译注: 
+(1) 对于以太网(ethernet) OSI 模型不完全适用,以太桢定义包
+括物理层和链路层的基本内容, 所谓的以太桢协议类型标识的是网络
+层的协议。IEEE 802 委员会为与 OSI 相一致,把以太桢定义称为 
+MAC(medium access control)层,在 MAC 层与网络层之间加入 LLC
+(logical link control)层,补充上了 OSI 标准的链路层。但在BSD
+TCP/IP 中是为了兼容官方标准才被实现的。对于 TCP/IP 协议族
+OSI 模型也不完全适用,TCP/IP 没定义链路层,只能用 UNIX 的设
+备驱动程序去对应链路层。无论如何这是既成事实,在本手册页中物
+理层、链路层、设备层指的都是以太网的 MAC 层。余以为不必严格
+按层次划分去理解问题,现在这个协议栈是优胜劣汰的结果,不是委
+员会讨论出来的。
+(2) 以太网地址分为三类,物理地址(最高位为0),多路广播地址
+(最高位为1),广播地址(全是1)。以 DP8390 为例,它的接收配置
+寄存器的 D2 位用来指定 NIC 是否接受广播桢,D3 位用来指定 NIC
+是否对多路广播桢进行过滤,D4 位用来指定 NIC是否接受所有的物
+理地址桢。混杂(Promiscuous)模式就是接收所有物理地址桢。
+
+.SH SOCKET OPTIONS 套接口选项
+
+分组套接口可被用来配置物理层的多路广播和混杂模式。配置通过调用
+setsockopt(2)实现,套接口参数是一个分组套接口、层次参数为
+SOL_PACKET 、选项参数中的 PACKET_ADD_MEMBERSHIP 用于增加一
+个绑定,选项参数中的 PACKET_DROP_MEMBERSHIP 用于删除一个绑
+定。两个选项都需要作为参数的 packet_mreq 结构:
+
+.RS
+.nf
+.ta 4n 20n 35n
+struct packet_mreq
+{
+int mr_ifindex; /* 接口索引号 */
+unsigned short mr_type; /* 动作 */
+unsigned short mr_alen; /* 地址长度 */
+unsigned char mr_address[8]; /* 物理层地址 */
+};
+.ta
+.fi
+.RE 
+
+mr_ifindex 包括接口的接口索引号,mr_ifindex 的状态是可以改
+变的。mr_type 参数指定完成那个动作。PACKET_MR_PROMISC 允许
+接收在共享介质上的所有分组,这种接受状态常被称为混杂模式;
+PACKET_MR_MULTICAST 把套接口绑定到由mr_address 和 mr_alen
+指定的物理层多路广播组上;PACKET_MR_ALLMULTI 设置套接口接
+收所有的来到接口的多路广播分组。
+
+
+除此之外传统的 ioctls 如 SIOCSIFFLAGS, SIOCADDMULTI, 
+SIOCDELMULTI 也能用于实现同样的目的。
+
+.SH IOCTLS 输入输出控制
+SIOCGSTAMP 用来接收最新收到的分组的时间戳。它的参数是
+timeval 结构。
+
+除此之外,所有的在 netdevice(7) 和 socket(7) 中定义的标准
+的 ioctl 在分组套接口上均有效。
+
+.SH ERROR HANDLING 错误处理
+分组套接只对传送分组到设备驱动程序时发生的错误做错误处理,
+其他不做错误处理。这里没有等待解决的错误的概念。
+
+.SH COMPATIBILITY 兼容性
+在 Linux 2.0 中,得到分组套接口的唯一方法是调用 
+socket(PF_INET, SOCK_PACKET, protocol)。它仍被支持但变得
+没有价值。两种方法的主要不同在于 SOCK_PACKET 使用老的 
+sockaddr_pkt 结构来指定一个接口,没有提供物理层接口无关性。
+(依赖于物理设备)
+
+.RS
+.nf
+.ta 4n 20n 35n
+struct sockaddr_pkt
+{
+unsigned short spkt_family;
+unsigned char spkt_device[14];
+unsigned short spkt_protocol;
+};
+.ta
+.fi
+.RE
+
+
+spkt_family 包括设备类型,spkt_protocol 是在
+中定义的 IEEE 802.3 协议类型,spkt_device 是表示设备名的 null
+终结的字符串,例如 eth0。
+
+译注: "who is nntp" 就是一个以 null ('\0')终结的字符串。
+
+
+这个结构已经被废弃,不应在新的代码中使用。
+
+
+.SH NOTES 注意
+
+不建议对要求可移植的程序通过 pcap(3) 使用 PF_PACKET 协议族;
+它只覆盖了 PF_PACKET 特征的一个子集。 
+
+译注:该函数库可在 ftp://ftp.ee.lbl.gov/libpcap.tar.Z 得到。 
+
+
+SOCK_DGRAM 分组套接口对 IEEE 802.3 桢不做生成或分析 IEEE 
+802.2 LLC 报头的尝试。当在套接口中指定了 ETH_P_802_3 协议,
+告知内核生成 802.3 桢,并填写了长度字段;用户必须提供提供
+LLC 报头来产生符合标准的分组。到来的 802.3 分组不在协议
+字段 DSAP/SSAP 上实现多路复用;而是故意的把 ETH_P_802_2
+协议的 LLC 报头提供给用户。所以不可能绑定到 ETH_P_802_3;
+而可以绑定到 ETH_P_802_2 并自己做多路复用。缺省的发送的是
+标准的以太网 DIX 封装并填写协议字段。 
+
+译注: 长度字段和协议字段其实都是以太桢的第四字段,这个字段
+的值在小于 1518 时表示此以太桢是 IEEE 802.3 桢,在大于1536
+时表示此以太桢是 DIX 桢。DIX 中的 D 代表 DEC,I 代表 Intel,
+X 代表 Xerox。 
+
+
+分组套接口不是输入或输出防火墙的系列主题。
+
+
+
+.SH ERRORS 错误信息
+.TP
+.B ENETDOWN
+接口未启动。
+
+.TP
+.B ENOTCONN
+未传递接口地址。
+
+.TP
+.B ENODEV 
+在接口地址中指定了未知的设备名或接口索引。
+
+.TP
+.B EMSGSIZE
+分组比接口的 MTU(最大传输单元)大。
+
+.TP
+.B ENOBUFS
+没有足够的内存分配给分组。
+
+.TP
+.B EFAULT 
+用户传递了无效的地址。
+
+.TP
+.B EINVAL 
+无效参数。
+
+.TP
+.B ENXIO
+接口地址包含非法接口索引号。
+
+.TP
+.B EPERM
+用户没有足够的权限来执行这个操作。
+
+.TP
+.B EADDRNOTAVAIL
+传递了未知的多路广播组地址。 
+
+.TP
+.B ENOENT
+未收到分组。
+
+除此之外,底层的驱动程序可能产生其他的错误信息。
+
+.SH VERSIONS 版本
+PF_PACKET 是 Linux 2.2 的新特征。Linux 的早期版本只支持
+SOCK_PACKET。
+
+.SH BUGS 缺陷
+glibc 2.1 没有定义 SOL_PACKET。建议的补救是使用
+.RS
+.nf
+#ifndef SOL_PACKET
+#define SOL_PACKET 263
+#endif
+.fi
+.RE
+在此以后的 glibc 版本中更正了错误并且在 libc5 系统上不会发生。
+
+没有对 IEEE 802.2/803.3 LLC 的处理被认为是缺陷。
+
+套接口过滤器未归入文档。
+
+.SH CREDITS 贡献者
+本手册页是 Andi Kleen 写的,他得到了 Matthew Wilcox 的帮助。
+在 Linux 2.2 中的 PF_PACKET 是 Alexey Kuznetsov 实现的,他
+的实现是以 Alan Cox 和其他人的代码为基础的。
+
+.SH SEE ALSO 参见
+
+.BR ip(7), socket(7), socket(2), raw(7), pcap(3).
+.BR RFC 894 - IP 数据报的 Ethernet 桢封装标准。
+.BR RFC 1700 - IP 数据报的 IEEE 802.3 桢封装标准。
+.BR 头文件 linux/if_ether.h 包含物理层协议。
+
+.SH "[中文版维护人]"
+.B mhss <jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+.BR 2000/10/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/prepare.7 b/src/man7/prepare.7
new file mode 100644
index 0000000..b3fbf7e
--- /dev/null
+++ b/src/man7/prepare.7
@@ -0,0 +1,43 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "PREPARE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+PREPARE \- 创建一个准备好的查询
+
+.SH SYNOPSIS
+.sp
+.nf
+PREPARE \fIplan_name\fR [ (\fIdatatype\fR [, ...] ) ] AS \fIstatement\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBPREPARE\fR 创建一个已准备好的查询。 一个已准备好的查询是服务器端的对象,可以用于优化性能。 在执行 PREPARE 语句的时候,指定的查询被分析,重写以及规划。 当随后发出 EXECUTE 语句的时候, 已准备好的查询就只需要执行了。因此,分析,重写,以及规划阶段都只执行一次,而不是每次查询执行的时候都要执行一次。
+.PP
+ 准备好的查询可以接受参数:在它执行的时候替换到查询中的数值。 要给一个准备好的查询声明参数,我们需要在 PREPARE 语句里包含一个数据类型的列表。在查询本身里,你可以按照位置来引用这些参数, 比如 $1,$2,等。 在执行查询的时候,在 EXECUTE 语句里为这些参数声明实际的数值。 参考 EXECUTE [\fBexecute\fR(7)] 获取更多信息。
+.PP
+ 准备好的查询是在本地存储的(在当前后端里),并且只是在当前数据库会话的过程中存在。 如果客户端退出,那么准备好的查询就会被遗忘,因此我们必须在被重新使用之前重新创建。 这也意味着一个准备好的查询不能被多个同时的数据库客户端使用; 但是,每个客户端可以创建它们自己的已准备好的查询来使用。
+.PP
+ 如果一个会话准备用于执行大量类似的查询,那么已准备好的查询可以获得最大限度的性能优势。 如果查询非常复杂,需要复杂的规划或者重写,那么性能差距将非常明显。 比如,如果查询设计许多表的连接,或者有多种规则要求应用。如果查询的规划和重写相对简单, 而执行起来开销相当大,那么已准备好的查询的性能优势就不那么明显。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIplan_name\fB\fR
+ 给予这个特定的已准备好查询的任意名字。它必须在一个会话中是唯一的, 并且用于执行或者删除一个前面准备好的查询。
+.TP
+\fB\fIdatatype\fB\fR
+ 已准备好查询的某个参数的数据类型。要在已准备好查询内部引用这个参数,使用 $1,$2,等。
+.TP
+\fB\fIstatement\fB\fR
+ 任何 \fBSELECT\fR, \fBINSERT\fR, \fBUPDATE\fR,
+或 \fBDELETE\fR 语句。
+.SH "NOTES 注意"
+.PP
+ 在一些情况下,PostgreSQL  为一个已准备好的查询生成的查询规划可能还不如按照普通方法提交并执行的查询生成的规划好。 这是因为该查询在被规划的时候(也是优化器视图判断最优查询规划的时候), 在查询中声明的任何参数的实际数值都还不可见。 PostgreSQL 在表中收集数据分布的统计, 而且可以利用查询中的常量来猜测执行查询的可能结果。 因为这些数据在准备哪种带参数的查询的规划的时候还不可得, 所以,选出来得规划可能是次好的。 要检查 PostgreSQL 为已准备好的查询选取的查询计划, 使用  \fBEXPLAIN EXECUTE\fR 。
+.PP
+ 有关查询规划和 PostgreSQL 为查询优化的目的收集的统计的更多信息, 参阅 ANALYZE [\fBanalyze\fR(7)]
+文档。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准包含一个 PREPARE 语句, 但是它只用于嵌入的 SQL 客户端。PostgreSQL 实现的 PREPARE 语句的语法也略有不同。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/raw.7 b/src/man7/raw.7
new file mode 100644
index 0000000..621d3c3
--- /dev/null
+++ b/src/man7/raw.7
@@ -0,0 +1,193 @@
+.\" Don't change the first line, it tells man that we need tbl.
+.\" This man page is Copyright (C) 1999 Andi Kleen .
+.\" 中文版版权所有 redcandle, Laser www.linuxforum.net 2000
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" Please send bug reports, corrections and suggestions for improvements to 
+.\" 
+
+.TH RAW 7 "2 Oct 1998" "Linux 手册页" "Linux 程序员手册" 
+.SH NAME
+raw, SOCK_RAW \- Linux IPv4 raw socket.
+
+.SH 总 览
+#include <sys/socket.h>
+.br
+#include <netinet/in.h>
+.br
+raw_socket = socket(PF_INET, SOCK_RAW, int protocol ); 
+
+.SH 描 述
+Raw sockets 使得用户端可以实现新的 IPv4 协议。
+raw socket 设备接收或发送不含链接层报头的原始数据包。
+只有激活接口选项 IP_HDRINCL 时 IPv4 层才会在传输包中
+添加 IP 报头。而且当激活时,包中必须含有 IP 报头。包中含
+有 IP 报头才能被接收。
+
+只有 user id 为 0 或具有 CAP_NET_RAW 能力才能打开 
+raw sockets.
+
+所有匹配为此 raw socket 声明的协议号的包或错误都将被传
+送到该 socket.要察看许可的协议列表,
+请参考 RFC1700 给出的代号和 getprotobyname (3).
+
+IPPROTO_RAW 意味着 IP_HDRINCL 处于激活状态,也意味着接收
+所有 IP 协议. 但是不允许传送。
+
+.TS
+tab(:) allbox;
+c s
+l l.
+IP_HDRINCL 会在传送时修改 IP 报头。
+IP Checksum: 总是写入。
+Source Address:为 0 时写入。
+Packet Id:为 0 时写入。
+Total Length:总是写入。
+.TE
+
+.PP
+如果指定了 IP_HDRINCL 且 IP 报头含有的目的地址不是 0,那么
+该 socket 的目的地址用于路由该包。
+如果指定了 MSG_DONTROUTE 则目的地址
+应指向某个本地接口。否则会进行路有表查找,但是网关路由会被
+忽略。如果未设定 IP_HDRINCL 则可通过 setsockopt (2) 在
+raw socket 中设定 IP header 选项。参考 ip (7) 了解更多信
+息。
+
+在 Linux 2.2 下可以用 IP socket 选项设置所有的 
+IP 报头域和选项. 这意味着通常只有新的协议
+或没有用户界面的协议需要 raw socket (就象 ICMP).
+当收到一个包时,它首先被传给绑定到包协议的任何 raw socket
+然后才传给其他协议句柄(handler)。
+(比如.内核协议模块). 
+
+.SH 地址格式
+raw socket 使用在 ip (7) 中定义的标准 sockaddr_in 地址结构。
+sin_port 域用于指定 IP 协议号,但是在 Linux 2.2 下传送时应将
+其忽略,而且应该一直设为0 (参见 BUGS).
+
+对于接收的包,sin_port 被设置为该包的协议号。
+参考 其中包括介绍有效的 IP 协议的文件. 
+
+.SH SOCKET选项
+raw socket 选项可使用 setsockopt (2) 进行设置,用
+getsockopt (2)进行读取(通过传递 SOL_RAW 族标志). 
+
+.TP
+.B ICMP_FILTER
+激活绑定到 IPPROTO_ICMP 协议的一个用于 raw socket 特殊的过滤器。
+该值对每种 ICMP 消息都有一个位(掩码),
+可以把那种 ICMP 消息过滤掉.缺省时是不过滤 ICMP 消息.
+
+另外,还支持所有对数据报 socket 有效的 ip(7) SOL_IP 
+socket 选项.
+
+.SH 注 意
+raw socket 包长超过接口 MTU 时会把包分成碎片。(另见 BUGS).
+另一个更友好和快速的选择是使用路径 MTU 查找。 
+在 ip (7) IP_PMTU_DISCOVER 一段有详细描述。
+
+使用 bind (2) 可将 raw socket 绑定到指定的本地地址。
+如果没有绑定,则接收所有符合指定的 IP 协议的包。
+另外用 SO_BINDTODEVICE 可以将 RAW socket 绑定到指定的网络
+设备。 详见: socket (7).
+
+IPPROTO_RAW 只能传送。如果你确实想接收所有的 IP 包
+用 packet (7) socket 和 ETH_P_IP 协议.
+请注意 packet socket不象 raw socket 那样对 IP 碎片进行重组。
+
+如果想要为一个 datagram socket 接收的所有 ICMP 包,那么最好
+在那个 socket 上使用 IP_RECVERR。详见: ip (7).
+
+raw socket 能窃听所有的 IP 协议, 即使象 ICMP 或 
+TCP 这样在内核中有协议模块的也不例外。这时候包会同时传送到
+核心模块和raw socket. 一个可移植的程序不能依赖这个特性,
+许多其他 BSD socket 实现在这方面有局限.
+
+Linux 从不改变用户传输的包 (除了前
+面提到的 IP_HDRINCL ,填入一些0字段).这与其他 raw socket
+实现方式是不同的.
+
+RAW socket 通常很难移植. socket 传输时使用 sin_port 中设置的
+协议,但 Linux2.2 下不行了,解决办法是使用 IP_HDRINCL.
+
+.SH 错误处理
+只有连接了 socket 或 IP_RECVERR 设置为有效时,网络错误才会
+传送给用户。因为兼容性的原因只有 EMSGSIZE 和 EPROTO 被传送
+给 socket.
+
+.SH 错 误
+.TP
+.B IP_RECVERR
+使得所有的错误存储到 error queue(错误队列). 
+
+.TP
+.B EMSGSIZE 
+包太大。或者因为路径 MTU 查找 (IP_PMTU_DISCOVER)
+设置为有效,或者因为包的尺寸超过 IPv4 规定的包
+最大尺寸 64KB. 
+
+.TP
+.B EACCES
+用户试图传送到某广播地址但是并未事先在socket中设置广播
+标志。
+
+.TP
+.B EPROTO
+ICMP 错误报告有参数问题。
+
+.TP
+.B EFAULT
+无效内存地址。
+
+.TP
+.B EOPNOTSUPP
+传送给 socket 的标志无效(比如:MSG_OOB ).
+
+.TP
+.B EINVAL
+无效参数.
+
+.TP
+.B EPERM
+用户无权打开 raw socket. 只有用户 id 为 0 或具有
+CAP_NET_RAW 属性方可。
+
+.SH 版 本
+IP_RECVERR 和 ICMP_FILTER 是 Linux 2.2 的新实现.
+不能用于可移植程序。
+
+如果设置了 SO_BSDCOMPAT 标志,
+Linux 2.0 里面有和 BSD 里兼容的 raw socket 代码错误,
+在 2.2 里已经修补了.
+
+.SH BUGS
+没有描述透明代理扩展.
+
+当设置 IP_HDRINCL 选项后datagrams(自寻址数据包)不会被分段
+并受 MTU 限制. 这是 Linux 2.2 的限制.
+
+在 Linux 2.2 sin_port 中设置的 IP 协议会丢失。使用的是绑定了
+socket 的协议,或在 socket (2)初始化调用中指定的协议。
+
+.SH 作 者
+Andi Kleen. 
+.SH 另 见
+.BR ip (7), 
+.BR socket (7), 
+.BR recvmsg (2), 
+.BR sendmsg (2).
+.PP
+RFC1191 for path MTU discovery.
+.br
+RFC791 and the include file for the IP protocol.
+.br
+
+.SH "[中文版维护人]"
+.B RedCandle <redcandle51 at chinaren.com>
+.SH "[中文版最新更新]"
+.B 2000/10/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/regex.7 b/src/man7/regex.7
new file mode 100644
index 0000000..1fc9381
--- /dev/null
+++ b/src/man7/regex.7
@@ -0,0 +1,198 @@
+.\" From Henry Spencer's regex package (as found in the apache
+.\" distribution). The package carries the following copyright:
+.\"
+.\"  Copyright 1992, 1993, 1994 Henry Spencer.  All rights reserved.
+.\"  This software is not subject to any license of the American Telephone
+.\"  and Telegraph Company or of the Regents of the University of California.
+.\"  
+.\"  Permission is granted to anyone to use this software for any purpose
+.\"  on any computer system, and to alter it and redistribute it, subject
+.\"  to the following restrictions:
+.\"  
+.\"  1. The author is not responsible for the consequences of use of this
+.\"     software, no matter how awful, even if they arise from flaws in it.
+.\"  
+.\"  2. The origin of this software must not be misrepresented, either by
+.\"     explicit claim or by omission.  Since few users ever read sources,
+.\"     credits must appear in the documentation.
+.\"  
+.\"  3. Altered versions must be plainly marked as such, and must not be
+.\"     misrepresented as being the original software.  Since few users
+.\"     ever read sources, credits must appear in the documentation.
+.\"  
+.\"  4. This notice may not be removed or altered.
+.\" 
+.\" In order to comply with `credits must appear in the documentation'
+.\" I added an AUTHOR paragraph below - aeb.
+.\"
+.\" In the default nroff environment there is no dagger \(dg.
+.ie t .ds dg \(dg
+.el .ds dg (!)
+.TH REGEX 7 1994-02-07 
+.SH NAME
+regex \- POSIX 1003.2 正则表达式
+.SH DESCRIPTION
+正则表达式 (``RE''s),
+在 POSIX 1003.2 中定义,包含两种类型:
+新式 REs (基本上指的是
+.IR egrep 
+使用的那些,1003.2 称其为 ``extended'' REs
+也就是“扩展的REs”)
+和旧式 REs (指的是
+.BR ed (1)
+中的那些,1003.2 称之为 ``basic'' REs
+也就是“基本的REs”).
+旧式 REs 的存在仅仅是为了向后和一些旧程序保持兼容;在最后将加以讨论。
+1003.2 对 RE 语法和语义的某些方面没有做强制规定;
+`\*(dg' 记号标示了这些内容,它们可能不能完全移植到其他 1003.2 实现当中。
+.PP
+一个(新式的) RE 正则表达式是一个\*(dg 或多个非空\*(dg \fIbranches\fR 分支,以 `|' 分隔。
+它匹配任何匹配其中一个分支的符号串。
+.PP
+一个 branch 分支是一个\*(dg 或多个 \fIpieces\fR 片段连结而成。
+符号串首先要匹配它的第一个片段,接下来剩余部分再匹配第二个片段,以此类推。
+.PP
+一个 piece 片段是一个 \fIatom\fR 原子,其后可能包含一个\*(dg `*', `+', `?', 或者 \fIbound\fR 量词。
+一个原子加上 `*' 匹配零个或多个这个原子的匹配构成的序列。
+一个原子加上 `+' 匹配一个或多个这个原子的匹配构成的序列。
+一个原子加上 `?' 匹配零个或一个这个原子的匹配。
+.PP
+一个 \fIbound\fR 量词是 `{' 后面跟一个无符号十进制整数,可能还会跟一个 `,',
+可能还会再跟一个无符号十进制整数,然后以 `}' 结束。
+整数的大小必须在 0 和 RE_DUP_MAX (255\*(dg) 之间(包含边界值)。
+如果给出了两个数字,那么第一个决不能比第二个大。
+一个原子的量词中如果只有一个数字而没有逗号的话,就匹配 
+\fIi\fR 个这个原子的匹配构成的序列。
+一个原子的量词中如果只有一个数字并且有逗号的话,就匹配
+\fIi\fR 个或多个这个原子的匹配构成的序列。
+一个原子的量词中如果包含两个数字 \fIi\fR 和 \fIj\fR 的话,就匹配
+\fIi\fR 到 \fIj\fR 个这个原子的匹配构成的序列。
+.PP
+一个原子是一个包含在 `()' 中的正则表达式 (这将匹配这个正则表达式匹配的符号串),
+一个空的 `()' (匹配空串),
+一个 \fIbracket expression\fR (方括号表达式,参见下面),
+`.' (匹配任何字符),
+`^' (匹配行首的空字符串),
+`$' (匹配行尾的空字符串),
+一个 `\e' 加上下列字符之一
+`^.[$()|*+?{\e' (匹配这个字符,忽略它的任何特殊意义),
+一个 `\e' (加上任何其他字符\*(dg 匹配那个字符,忽略它的任何特殊意义,就好像 `\e' 不存在\*(dg),
+或者是一个字符,没有特殊意义 (匹配它本身)。
+一个 `{' 后面是一个非数字的字符时,是一个普通的字符而不是量词的开始\*(dg。
+以 `\e' 来结束一个 RE 是非法的。
+.PP
+一个 \fIbracket expression\fR 方括号表达式是一个字符的列表,包含在 `[]' 当中。
+它一般匹配列表中的任何一个字符 (有特殊情况)。
+如果这个列表以 `^' 开始,它将匹配 \fI不在\fR 列表中的任何字符 (下面还会讲到特殊情况)。
+如果列表中的两个字符以 `\-' 分隔,可以表示字母表中这两个字符之间(包括这两个字符)所有的字符。
+例如,ASCII 字符表中 `[0\-9]' 匹配任何数字。
+不能\*(dg 用一个字符作为定义两个字符范围的端点,就像这样 `a-c-e'。
+字符范围是与字母表顺序相关的,可移植的程序不应使用它们。
+.PP
+要在列表中包含一个字面的(没有特殊含义的) `]',可以把它放在首位(后面可能要加上一个`^')。
+要在列表中包含一个字面的 `\-',可以把它放在首位或末尾,或者让它作为一个字符范围的末端点。
+要以一个字面的 `\-' 作为字符范围的起始,可以将它放在 `[.' 和 `.]' 当中,
+使得它成为一个 collating element (归并元素,参见下面)。
+特殊情况除了这些,还有使用 `[' 的组合(参见下一段)。所有其他特殊字符,包括 `\e'
+在内,在方括号表达式中都失去了它们的特殊含义。
+.PP
+方括号表达式中,一个包含在 `[.' 和 `.]' 中的归并元素 (collating element,一个字符,一个视为一体的字符序列,
+或者一个代表着上述两类的归并序列名称) 代表着这个归并元素所包含的字符序列。
+这个序列被视为方括号表达式的一个元素。
+因此一个包含着多字符归并元素的方括号表达式可以匹配多于一个的字符。
+例如,如果这个归并序列包含一个归并元素 `ch',那么
+正则表达式 `[[.ch.]]'*c' 可以匹配 `chchcc' 的前五个字符。
+.PP
+方括号表达式中,一个包含在 `[=' 和 `=]' 中的归并元素是一个等价类,代表着
+等价于它的所有归并元素 (也包括它自身)包含的字符的序列。
+(如果没有其他等价的归并元素,就把它与括号分隔符是 `[.' 和 `.]' 时同样看待。)
+例如,如果 o 和 \o'o^' 是一个等价类的成员,那么 `[[=o=]]',`[[=\o'o^'=]]' 还有 `[o\o'o^']' 都是同义词。
+一个等价类不能\*(dg 是一个字符范围的末端点。
+.PP
+方括号表达式中,包含在 `[:' 和 `:]' 中的一个 \fIcharacter class\fR(字符类) 代表着这个
+字符类中的所有字符的列表。
+标准的字符类名称是:
+.PP
+.RS
+.nf
+.ta 3c 6c 9c
+alnum	digit	punct
+alpha	graph	space
+blank	lower	upper
+cntrl	print	xdigit
+.fi
+.RE
+.PP
+它们代表着
+.BR wctype (3)
+定义的字符类。
+一个 locale(语言环境) 可能会提供其他字符类。
+一个字符类不能用作一个字符范围的末端点。
+.PP
+方括号表达式还有两种特殊的情况\*(dg :
+方括号表达式 `[[:<:]]' 和 `[[:>:]]' 分别匹配一个词的开始和结尾的空字符串。
+一个 word (词)是一个 word character (成词字符) 的序列,并且前后都没有成词字符。
+一个 word character (成词字符) 是一个
+.I alnum
+字符 (在
+.BR wctype (3) 
+中有定义) 或者是一个下划线。
+这是一个扩展,与 POSIX 1003.2 兼容但没有写入正文,在需要移植到其他系统中的软件中应当小心使用。
+.PP
+如果一个 RE 可以匹配一个字符串的多个不同的字串时,RE 选择匹配最前面的一个。
+如果这个 RE 匹配的子串有相同的起始点,RE 选择匹配最长的一个。
+子表达式也匹配最长的字串,使得整个匹配的字串最长,RE 中前面
+的子表达式比后面的子表达式优先级高。
+注意高级的子表达式比组成它的子表达式优先级要高。
+.PP
+匹配长度以字符来计算,而不是归并元素。
+空字符串被认为比没有匹配要长。例如,`bb*' 匹配 `abbbc' 的中间三个字符;
+`(wee|week)(knights|nights)' 匹配 `weeknights' 的全部十个字符;
+`(.*).*' 匹配 `abc',其中括号中的子表达式匹配所有这三个字符;
+`(a*)*' 来和 `bc' 匹配时,括号中的子表达式和整个 RE 都匹配空字符串。
+.PP
+如果指定了 case-indepentent 忽略大小写的匹配,效果是字母表中的大小写区别似乎都消失了。
+如果一个字母可能以两种情况出现,假如它出现在方括号表达式之外,实际上被替换成了一个包含
+所有情况的方括号表达式,例如 `x' 成为了 `[xX]';如果它出现在方括号表达式之内,
+那么它的所有形式都被加入到这个方括号表达式之内,因此例如 `[x]' 等同于
+`[xX]',还有 `[^x]' 成为了 `[^xX]'。
+.PP
+对 RE 的长度没有强制的限制。需要可移植的程序不应当使用长于256字节的正则表达式,
+因为特定的实现可以不接受这种 RE,但是仍然是 POSIX 兼容的。
+.PP
+过时的 (``basic'') 正则表达式在很多地方有不同之处。`|',`+' 和 `?' 是普通的字符,
+并且没有和它们等价的功能。量词的分隔符是 `\e{' 和 `\e}',`{' 和 `}' 本身是普通的字符。
+嵌套的子表达式使用的括号是 `\e(' 和 `\e)',`(' 和 `)' 本身是普通的字符。
+`^' 是一个普通的字符,除非是 RE 的第一个字符,或者\*(dg 一个括号中的子表达式的第一个字符。
+`$' 是一个普通的字符,除非是 RE 的最后一个字符,或者\*(dg 一个括号中的子表达式的最后一个字符。
+`*' 是一个普通的字符,如果它出现在 RE 的开始,或者一个括号中的子表达式的开始(其后一般是一个 `^')。
+最后,还有一类 atom 原子,一个 \fIback reference\fR(向后引用):`\e' 其后跟一个非零十进制整数 \fId\fR,
+匹配与第 \fId\fR 个括号中的子表达式的匹配相同的内容(子表达式的编号是根据它们的左括号而来,从左到右)。
+因此(例如),`\e([bc]\e)\e1' 匹配 `bb' 或 `cc' 但是不匹配 `bc'。
+.SH "SEE ALSO 参见"
+.BR regex (3)
+.PP
+POSIX 1003.2, section 2.8 (Regular Expression Notation).
+.SH BUGS
+同时使用两种 REs 是不明智的。
+.PP
+目前的 1003.2 规约称,如果右括号 `)' 没有对应的 `(' 那么视为普通字符;这个规定是一个笔误,将来会改正。
+避免使用它。
+.PP
+向后引用是糟糕的设计,是高效的实现中要面对的主要问题。
+另外还会产生晦涩的语法
+(?`a\e(\e(b\e)*\e2\e)*d' 可以匹配 `abbbd' 吗?)。
+避免使用它们。
+.PP
+1003.2 对于忽略大小写的匹配的规定也不明确。
+上面给出的定义 ``one case implies all cases'' 是当前各实现者的共识,被当作正确的语法。
+.PP
+词边界的语法丑陋得让人难以接受。
+.SH "AUTHOR 作者"
+This page was taken from Henry Spencer's regex package.
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.BR 2004.02.24
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/reindex.7 b/src/man7/reindex.7
new file mode 100644
index 0000000..a72bb9b
--- /dev/null
+++ b/src/man7/reindex.7
@@ -0,0 +1,84 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "REINDEX" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+REINDEX \- 重建索引
+
+.SH SYNOPSIS
+.sp
+.nf
+REINDEX { DATABASE | TABLE | INDEX } \fIname\fR [ FORCE ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBREINDEX\fR 基于存储在表上的数据重建索引, 替换旧的索引拷贝。使用 REINDEX 有两个主要原因:
+.TP 0.2i
+\(bu
+ 索引崩溃,并且不再包含有效的数据。尽管理论上这是不可能发生的, 但实际上索引会因为软件毛病或者硬件问题而崩溃。REINDEX 提供了一个恢复方法。
+.TP 0.2i
+\(bu
+ 要处理的索引包含大量无用的索引页未被回收。在某些情况下, 这个问题会发生在 PostgreSQL 里面的 B-树索引上。REINDEX  提供了一个缩小索引空间消耗的方法,它采用的方法是写一个不带无用索引页的新版本的索引。 参阅Section 21.2 ``Routine Indexing'' 获取更多信息。
+.PP
+.SH "PARAMETERS 参数"
+.TP
+\fBDATABASE\fR
+ 恢复一个声明了的数据库的所有系统索引。 不包含用户表上的索引。同样,除非在独立运行模式下,也会忽略在共享系统表上的索引(见下文)。
+.TP
+\fBTABLE\fR
+ 重新建立声明的表的所有索引。如果表有个从属的"TOAST"表,那么这个表也会重新索引。
+.TP
+\fBINDEX\fR
+ 重新建立声明了的索引。
+.TP
+\fB\fIname\fB\fR
+ 要重建的所声明的数据库/表/索引的名称。 表和索引名可以有模式修饰。
+.TP
+\fBFORCE\fR
+ 这是一个废弃的选项,如果声明,会被忽略。
+.SH "NOTES 注意"
+.PP
+ 如果你怀疑一个用户表上的索引崩溃了,你可以简单地重建该索引, 或者该表上地所有索引,使用 REINDEX INDEX 或者 REINDEX TABLE。 另外一个对付用户表索引崩溃的方法时删除然后重建它。如果你还要在表上进行一些维护动作, 可能这么做更好一些。REINDEX 在表上请求排他锁,而 CREATE INDEX 只是锁住写动作, 而不会锁住读。
+.PP
+ 如果你从一个崩溃的系统表索引上恢复,事情会更棘手一些。 这种情况下,系统必须不能使用任何有疑问的索引。 (实际上,在这种情况下,你可能发现服务器进程在启动之后马上就崩溃了, 因为依赖于崩溃了的索引。)要想安全恢复,服务器必须带着 -P 选项启动, 它禁止服务器在查找系统表的时候使用索引。
+.PP
+ 这么做个一个办法事停止 postmaster 然后带着 -P 命令行选项启动一个独立的 PostgreSQL 服务器。 然后,根据你希望恢复的程度,可以发出 REINDEX DATABASE,REINDEX TABLE,或者 REINDEX INDEX。 如果还有怀疑,使用 REINDEX DATABASE 选择重新构造数据库中全部的系统索引。 然后退出独立服务器会话并且重启普通的服务器。参阅 \fBpostgres\fR(1) 手册页获取有关如何与独立服务器交互的信息。
+.PP
+ 另外,一个普通的会话可以在其命令行选项里带着 -P 启动。 这么做的方法因不同的客户端而异,但是在所有基于 libpq 的客户端上, 我们都可以通过在启动客户端之前设置 PGOPTIONS 环境变量为 -P 来实现。 请注意尽管这个方法并不要求锁住其它客户端,但是禁止其它客户端连接受损的数据库, 直到完成修补应该事一个明智的选择。
+.PP
+ 如果怀疑任何共享的系统表的索引损坏((pg_database, pg_group,或者 pg_shadow), 那么必须用独立服务器的方式来修复它。REINDEX 不能在多用户环境下处理共享系统表。
+.PP
+ 除了共享系统表之外的所有索引,REINDEX 是抗崩溃并且是事务安全的。 REINDEX 对于共享的索引而言不是抗崩溃的,这就是为什么不允许在正常操作中这么使用的原因。 如果在重新对一个共享表进行索引的时候发生了崩溃,那么在纠正问题之前,就不可能重新启动普通的服务器。 (一个建立了一部分的共享索引的典型症状是"index is not a btree/索引不是 btree 索引"错误。)
+.PP
+ 在 PostgreSQL 7.4 之前,REINDEX TABLE 并不自动处理 TOAST 表,因此这些表必须用独立的命令进行处理。这么做仍然可以,但是已经多余了。
+.SH "EXAMPLES 例子"
+.PP
+ 重建表 mytable 上的索引:
+.sp
+.nf
+REINDEX TABLE my_table;
+.sp
+.fi
+.PP
+ 重建单个索引:
+.sp
+.nf
+REINDEX INDEX my_index;
+.sp
+.fi
+.PP
+ 重建一个数据库上的所有系统索引,不管他们是否有效:
+.sp
+.nf
+$ \fBexport PGOPTIONS="-P"\fR
+$ \fBpsql broken_db\fR
+...
+broken_db=> REINDEX DATABASE broken_db;
+broken_db=> \\q
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 在SQL 标准里没有 REINDEX。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/reset.7 b/src/man7/reset.7
new file mode 100644
index 0000000..1741c80
--- /dev/null
+++ b/src/man7/reset.7
@@ -0,0 +1,53 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "RESET" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+RESET \- 把一个运行时参数值恢复为缺省值
+
+.SH SYNOPSIS
+.sp
+.nf
+RESET \fIname\fR
+RESET ALL
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBRESET\fR 将运行时参数恢复为缺省值。 RESET 是下面语句的一个变种
+.sp
+.nf
+SET \fIparameter\fR TO DEFAULT
+.sp
+.fi
+ 请参考 SET [\fBset\fR(7)] 命令令获取允许的变量值和缺省值的详细信息。
+.PP
+ 缺省值是定义成变量可以拥有的数值,并且在当前会话中没有用 SET 设置过。这个数值的实际源头可能是编译的缺省, postmaster 的配置文件,或者是命令行开关,或者是每数据库或每用户的缺省设置。 参阅 Section 16.4``Run-time Configuration'' 获取细节。
+.PP
+ 参阅 \fBSET\fR 手册页获取有关RESET 的事务行为的细节。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 请参考 SET [\fBset\fR(7)] 语句获取有关可用的参数的详细说明。
+.TP
+\fBALL\fR
+ 把所有运行时参数设置为缺省值。
+.SH "EXAMPLES 例子"
+.PP
+ 把 datestyle 重新设为缺省值:
+.sp
+.nf
+RESET datestyle;
+.sp
+.fi
+.PP
+ 把 geqo 重新设为缺省值:
+.sp
+.nf
+RESET geqo;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+\fBRESET\fR 是 PostgreSQL 扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/revoke.7 b/src/man7/revoke.7
new file mode 100644
index 0000000..323b182
--- /dev/null
+++ b/src/man7/revoke.7
@@ -0,0 +1,92 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "REVOKE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+REVOKE \- 删除访问权限
+
+.SH SYNOPSIS
+.sp
+.nf
+REVOKE [ GRANT OPTION FOR ]
+    { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON [ TABLE ] \fItablename\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
+    ON DATABASE \fIdbname\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { EXECUTE | ALL [ PRIVILEGES ] }
+    ON FUNCTION \fIfuncname\fR ([\fItype\fR, ...]) [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { USAGE | ALL [ PRIVILEGES ] }
+    ON LANGUAGE \fIlangname\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
+    ON SCHEMA \fIschemaname\fR [, ...]
+    FROM { \fIusername\fR | GROUP \fIgroupname\fR | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBREVOKE\fR 撤销以前赋予(别人)的权限,可以是撤销一个或多个用户或者一组用户的权限。 关键字 PUBLIC 代表隐含定义的拥有所有用户的组。
+.PP
+ 参阅 GRANT [\fBgrant\fR(7)] 命令的描述获取权限类型的含义。
+.PP
+ 请注意,任何特定的用户都将拥有直接赋予他/她的权限,加上他/她所处的任何组, 以及再加上赋予 PUBLIC 的权限的总和。因此,举例来说,废止 PUBLIC  的 SELECT 权限并不意味着所有用户都失去了对该对象的 SELECT 权限: 那些直接得到权限赋予的以及通过一个组得到权限的人仍然拥有该权限。
+.PP
+ 如果声明了 GRANT OPTION FOR,那么只是撤销对该权限的授权的权力,而不是撤销该权限本身。
+.PP
+ 如果一个用户持有某项权限,并且还有授权的选项,并且还把这个权限赋予了其他用户, 那么那些其他用户持有的权限都叫做依赖性权限。 如果第一个用户持有的权限或者授权选项被撤销,而依赖性权限仍然存在, 那么如果我们声明了 CASCADE,则所有依赖性权限都被撤销, 否则撤销动作就会失败。这个递规的撤销只影响那种通过一个用户链赋予的权限, 这个链条可以通过这条 REVOKE 命令里面给出的用户追踪。 因此,如果权限本身是通过其他用户赋予的, 那么被影响的用户可以有效地保留这个权限。
+.SH "NOTES 注意"
+.PP
+ 使用 \fBpsql\fR(1) 的 \fB\\z\fR 命令显示在一个现存对象上赋予的权限。 参见 GRANT [\fBgrant\fR(7)] 获取关于格式的信息。
+.PP
+ 一个用户只能撤销由它自己直接赋予的权限。举例来说,如果用户 A 带着授权选项吧一个权限赋予了用户 B,然后用户 B 又赋予了用户 C, 那么用户 A 不能直接将 C 的权限撤销。但是,用户 A 可以撤销用户 B 的授权选项,并且使用 CASCADE 选项,这样, 用户 C 的权限就会自动被撤销。
+.PP
+ 如果一个超级用户发出一个 GRANT 或者 REVOKE 命令, 那么命令是按照以被影响的对象的所有者执行的方式执行的。因为所有权限最终从对象所有者(可能间接通过赋权选项获取), 超级用户可以废除所有权限,但是这样就要求像上面说的那样使用 CASCADE。
+.SH "EXAMPLES 例子"
+.PP
+ 撤销公众在表 films 上的插入权限:
+.sp
+.nf
+REVOKE INSERT ON films FROM PUBLIC;
+.sp
+.fi
+.PP
+ 废除用户 manuel 对视图 kinds 的所有权限:
+.sp
+.nf
+  
+REVOKE ALL PRIVILEGES ON kinds FROM manuel;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+GRANT [\fBgrant\fR(7)] 命令的兼容性信息基本上也适用于 REVOKE。语法概要是:
+.sp
+.nf
+REVOKE [ GRANT OPTION FOR ] \fIprivileges\fR
+    ON \fIobject\fR [ ( \fIcolumn\fR [, ...] ) ]
+    FROM { PUBLIC | \fIusername\fR [, ...] }
+    { RESTRICT | CASCADE }
+.sp
+.fi
+ 标准要求 RESTRICT 或者 CASCADE 之一必须出现, 但是 PostgreSQL 假设缺省是 RESTRICT。
+.SH "SEE ALSO 参见"
+.PP
+GRANT [\fBgrant\fR(7)]
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/roff.7 b/src/man7/roff.7
new file mode 100644
index 0000000..d9aad39
--- /dev/null
+++ b/src/man7/roff.7
@@ -0,0 +1,1206 @@
+.ig
+roff.man
+
+Last update: 22 Apr 2002
+
+This file is part of groff, the GNU roff type-setting system.
+
+Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+written by Bernd Warken <bwarken at mayn.de>
+maintained by Werner Lemberg <wl at gnu.org>
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this .ig-section and AUTHORS, with no
+Front-Cover Texts, and with no Back-Cover Texts.
+
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
+..
+.
+.\" --------------------------------------------------------------------
+.\" Setup
+.\" --------------------------------------------------------------------
+.
+.mso www.tmac
+.
+.if n \{\
+.  mso tty-char.tmac
+.  ftr CR R
+.  ftr CI I
+.  ftr CB B
+.\}
+.
+.if '\*[.T]'dvi' \{\
+.  ftr CB CW
+.\}
+.
+.
+.\" --------------------------------------------------------------------
+.\" String definitions
+.
+.\" Final `\""' comments are used to make Emacs happy, sic \""
+.
+.\" The `-' sign for options.
+.ie t \{\
+.  ds @- \-\"
+.  ds @-- \-\-\"
+.\}
+.el \{\
+.  ds @- -\"
+.  ds @-- --\"
+.\}
+.
+.ds Comment \.\[rs]\[dq]\"
+.ds Ellipsis \.\|.\|.\&\"
+.
+.
+.\" --------------------------------------------------------------------
+.\" Begin of macro definitions
+.
+.de c
+.\" this is like a comment request when escape mechanism is off
+..
+.
+.eo
+.
+.c ---------------------------------------------------------------------
+.
+.de Text
+.  nop \)\$*
+..
+.
+.de CodeSkip
+.  ie t \
+.    sp 0.2v
+.  el \
+.    sp
+..
+.
+.de Esc
+.  ds @1 \$1\"
+.  shift
+.  Text \f[B]\[rs]\*[@1]\f[]\$*
+.  rm @1
+..
+.
+.de QuotedChar
+.  ds @1 \$1
+.  shift
+.  nop `\f[B]\*[@1]\f[]'\$*
+.  rm @1
+..
+.
+.c --------------------------------------------------------------------
+.
+.c a shell command line
+.de ShellCommand
+.  br
+.  ad l
+.  nh
+.  Text \f[I]sh#\h'1m'\f[]\f[CR]\$*\f[]\&\"
+.  ft R
+.  ft P
+.  hy
+.  ad
+..
+.
+.c --------------------------------------------------------------------
+.
+.c ShortOpt ([c [punct]])
+.c
+.c `-c' somewhere in the text.
+.c The second argument is some trailing punctuation.
+.c
+.de ShortOpt
+.  ds @1 \$1\"
+.  shift
+.  nh
+.  Text \f[CB]\*[@-]\f[]\f[B]\*[@1]\f[]\/\$*
+.  hy
+.  rm @1
+..
+.
+.de TP+
+.  br
+.  ns
+.  TP \$1
+..
+.
+.c --------------------------------------------------------------------
+.
+.c Topic
+.c
+.de Topic
+.  TP 2m
+.  Text \[bu]
+..
+.
+.ec
+.\" End of macro definitions
+.
+.
+.\" --------------------------------------------------------------------
+.\" Title
+.\" --------------------------------------------------------------------
+.
+.TH ROFF 7 "23 April 2002" "Groff Version 1.18.1"
+.SH NAME
+roff \- roff 排版系统的概念和历史
+.
+.
+.\" --------------------------------------------------------------------
+.SH "描述 DESCRIPTION"
+.\" --------------------------------------------------------------------
+.
+.I roff
+是一系列排版程序,如
+.IR troff ,
+.IR nroff ,
+.IR ditroff ,
+.IR groff ,
+等等的通称。
+.
+一个 roff 排版系统包含一个可扩展的文本格式化语言和一系列程序用以打印和转换为其他文本格式。
+.
+传统的,它是 Unix 的主要文本处理系统;现在,每个 类Unix 操作系统仍然附带一个 roff 系统作为核心软件包。
+.
+.P
+当今最普遍的 roff 系统是自由软件的实现
+.IR "GNU roff",
+.BR groff (1).
+.
+groff 之前的实现被称为传统的
+.I classical
+实现 (从 1973 年开始)。
+.
+.I groff
+实现了它的传统的前辈的用法和功能,并且加入了更多扩展。
+.
+当前,由于
+.I groff
+是唯一可以在 (几乎是) 任何计算机系统上都可用的 roff 系统,因此它是事实上的 roff 标准。
+.
+.P
+在一些古老的 Unix 系统中,有一个叫做
+.B roff
+的可执行文件,实现了甚至更加古老的
+.I Multics
+操作系统中的
+.B runoff 。
+参见
+.BR HISTORY
+段落。
+它的功能非常有限,即使与古老的 troff 相比;它不再被支持了。
+.
+因此,在本文档中,
+.I roff
+总是泛指 roff 系统
+.IR "roff system" 
+,不是古老的 roff 可执行文件
+.
+.P
+尽管历史悠久,roff 当前还在广泛使用中,例如,UNIX 系统的手册页
+.RI ( man\~pages\/ )
+,很多软件书籍,系统文档,标准和团体组织的文档都是用 roff 来写的。
+.
+roff 在文本设备上的输出效果仍然是无可比拟的,
+并且,与其他自由的排版系统相比,它的图形输出也不差,
+甚至强于很多商业的系统
+.
+.P
+最普遍的 roff 的应用是手册页
+.I manual pages
+(简称
+.IR "man pages") ;
+它是很多操作系统中的标准文档系统
+.
+.P
+此文档描述了围绕
+.IR "roff system" 
+开发的一些历史事件;
+所有 roff 版本在用法方面的一些共同点,
+roff 管道的细节--它经常被掩盖在类似
+.BR groff (1)
+等等的 “前端” 之后;
+对排版语言的一般的概述;
+一些写 roff 文档的技巧;
+还有到更多资料的链接
+.
+.
+.\" --------------------------------------------------------------------
+.SH "历史 HISTORY"
+.\" --------------------------------------------------------------------
+.
+.I roff
+文本处理系统有很长的一段历史,可以回溯到60 年代。
+.
+roff 系统自身与 Unix 操作系统关系密切,
+但是它的起源要从更早的操作系统 CTSS 和 Multics 开始。
+.
+.
+.\" --------------------------------------------------------------------
+.SS "祖先 The Predecessor runoff"
+.\" --------------------------------------------------------------------
+.
+.P
+.I roff
+系统的演变与操作系统的历史紧密联系。
+.
+它的 “先祖”
+.B runoff
+是
+.I Jerry Saltzer
+在
+.I CTSS
+操作系统
+.RI ( "Compatible Time Sharing System" 
+,兼容分时系统 (?),1961)
+上的作品。
+.
+CTTS 后来发展成为操作系统
+.URL http://\:www.multicians.org "Multics" ,
+Unix 的一个著名的来源,出现于 1963,同时
+.I runoff
+成为文档和文本处理的主要格式。
+.
+当时,这两种操作系统只能运行在非常昂贵的计算机之上,
+因此它们大部分用于研究和官方及军队的任务之中
+.
+.P
+与现代的 roff 相比,
+.I runoff
+语言可以做的事非常有限。
+.
+在 60 年代,只能产生文本的输出。
+.
+这可以用一个长度为\~2 的命令 (request) 的集合实现,
+这些命令的绝大部分都保持不变地被 roff 采用。
+.
+这种语言的模型是根据 “前计算机时代” 的排版习惯而建立的,
+那时,以点 (dot, `.') 开头的行被写在手稿中,
+向之后进行手工排版工作的工人指示格式化的要求
+.
+.P
+开始,runoff 程序是用
+.I PL/1
+语言写成的,后来用
+.IR BCPL 
+来写--那是
+.IR C \~\c
+编程语言的 “祖母”。
+.
+在 Multics 操作系统中,帮助系统由 runoff 来处理,
+与 roff 管理 Unix 手册页的作用类似。
+.
+仍然有 runoff 语言写成的文档,
+例如可以到 Saltzer 的主页看看。参见
+.BR "SEE ALSO" 
+段
+.
+.
+.\" --------------------------------------------------------------------
+.SS "传统的 nroff/troff 系统 The Classical nroff/troff System"
+.\" --------------------------------------------------------------------
+.
+在 70 年代,Multics 的后裔 (offspring)
+.I Unix
+变得越来越普遍,因为它可以运行在廉价的计算机上,
+并且那时在大学里可以很容易地获得。
+.
+在 MIT (麻省理工,the Massachusetts Institute of Technology), 
+有人想在一台运行 Unix 的 PDP-11 计算机上驱动 Wang (王安公司?) 的
+.I Graphic Systems CAT
+排字机,一种图形化的输出设备。
+.
+由于 runoff 在这种任务上能力有限,它被
+.IR "Josef F. Osanna" ,
+(Multics 操作系统的主要开发者之一,几个 runoff 移植系统的作者)
+继续开发,成为一种更强大的文本排版系统
+.
+.P
+.I runoff
+这个名字被简化为
+.IR roff .
+Ocsanna 所设想的,极大扩展了的语言已经包含了一个完整的
+.IR "roff" 
+系统的所有元素。
+.
+所有现代的 roff 系统都试图实现同这个系统兼容。
+.
+因此 Joe Osanna 是当之无愧的所有 roff 系统之父
+.
+.P
+最早的
+.I roff 
+系统有三个排版程序
+.
+.TP
+.B troff
+.RI ( "typesetter roff\/" )
+为它唯一支持的
+.I CAT
+排字机产生一个图形的输出
+.
+.TP
+.B nroff
+为终端和文本打印机产生合适的文本输出
+.
+.TP
+.B roff
+对最初的 runoff 程序的有限功能进行重新实现;
+这个程序在后来的版本中被抛弃。
+.
+现在,
+.I roff
+这个名字只用来指代一个 troff/\:nroff 系统的整体
+.
+.P
+Osanna 的第一版用 PDP-11 的汇编语言实现,发布于 1973.
+.
+.I Brian Kernighan
+加入到
+.I roff
+的开发中,使用 C\~编程语言将它进行了重写。
+.
+C\~版本发布于 1975.
+.
+.P
+.BR nroff / troff
+程序使用的排版语言的语法记载在著名的
+.IR "Troff User's Manual [CSTR\~#54]"
+中,出版于 1976, Brian Kernighan 对它不断修订,直到 1992 年。
+.
+此文档是对传统的
+.IR "classical troff" 
+的说明. 所有后来的
+.I roff
+系统都试着与这个说明实现兼容
+.
+.P
+1977 年,Osanna 在他\~50 岁时,由于一次突发的心脏病而去世。
+Kernighan 继续开发 troff。
+.
+下一个开发目标是赋予 troff 一个更一般的接口,以支持更多设备,
+中间输出格式和 “后处理” 系统。
+.
+这使得
+.I "roff"
+系统的结构趋于完整,现在仍然被使用。参见
+.BR "USING ROFF" 
+段。
+.
+1979 年,它们被写入论文
+.IR "[CSTR\~#97]" .
+这个新的 troff 版本是所有现存的较新的 troff 系统的基础,包括
+.IR groff .
+.
+在一些系统上,这个设备无关的
+.I troff
+有一个可执行文件叫做
+.BR ditroff (7).
+.
+所有现代的
+.B troff
+程序都已经自动提供了对 distroff 完整的兼容性
+.
+.
+.\" --------------------------------------------------------------------
+.SS "商业化 Commercialization"
+.\" --------------------------------------------------------------------
+.
+免费的 Unix\~7 操作系统商业化之后,出现了严重的退步。
+.
+一大批不同的操作系统浮出水面,为他们所作的扩展间的互不兼容而争斗。
+.
+幸好,这种不兼容没有影响到原始的 troff。
+.
+所有不同的商业版本的 roff 系统都大量使用了 
+Osanna/\:Kernighan 的开放的源代码和文档,但是却将其作为
+.BI "它们的" 
+系统 (\[lq]their\[rq] system) 出售\[em] 只有很少的修改
+.
+.P
+古老的 Unix 和传统的 troff 的源代码在长达 20 年时间里不再可以自由获得。
+.
+.P
+幸运的是,Caldera 收购了 SCO UNIX (2001).
+.
+随后,Caldera 使得源代码可以在网上获得,允许用于非商业用途。参见
+.BR "SEE ALSO" 
+段
+.
+.P
+(译注:谁能想到,现在,2003 年,SCO会成为自由软件和开源软件界共同的敌人呢?
+而Caldera 又在什么地方呢?)
+.
+.
+.\" --------------------------------------------------------------------
+.SS "自由的 Free roff"
+.\" --------------------------------------------------------------------
+.
+任何商业的 roff 系统都无法成为 roff 开发中的后继者。
+.
+商业社会中的每个人都只对他们自己的事情感兴趣。
+.
+这使得曾经如此优秀的 Unix 操作系统在 80 年代一蹶不振
+.
+.P
+作为对如此快速的商业化过程的补救
+(As a counter-measure to the galopping commercialization,还请重新翻译),
+AT&T Bell Labs 贝尔实验室试图发起一个恢复性的项目 (?,a rescue project) ,使用他们的
+.I Plan\~9
+操作系统。
+.
+它可以免费用于非商业用途,甚至包含了源代码。
+但是它有一个专利许可证,that empedes the free development ( 还请解释词义)。
+.
+这种想法早已过时,因此 Plan\~9 没有被主流开发者接受为自己的平台
+.
+.P
+真正的补救措施 (?, remedy) 是不断出现的自由操作系统
+(386BSD, GNU/\:Linux, 等等.) 和 80 年代到 90 年代的自由软件工程。
+.
+他们实现了传统的 Unix 的特性和很多扩展,因此旧的 “XP体验” 不会丢掉
+(such that the old experience is not lost)。
+.
+进入 21 世纪,类 Unix 系统重新成为计算机工业中的主导因素 \[em] 这要感谢自由软件
+.
+.P
+最重要的自由 roff 计划是 GNU 移植版本的 troff,
+由 James Clark 建立,使用
+.URL http://\:www.gnu.org/\:copyleft "GNU Public License" .
+.
+它叫做
+.I groff
+.RI ( "GNU roff" ).
+参见
+.BR groff (1)
+中的概述
+.
+.P
+groff 系统仍然在继续开发。
+.
+它与传统 troff 兼容,但是还添加了很多扩展。
+.
+它是第一个可以在几乎所有操作系统上运行的 roff 系统并且 \[em] 它是自由开放的。
+.
+这使得 groff 成为现在 roff 的事实标准
+.
+.
+.\" --------------------------------------------------------------------
+.SH "使用 USING ROFF"
+.\" --------------------------------------------------------------------
+.
+很多人不会注意到他们在使用 roff。
+.
+当你阅读一份手册页 (man page) 时,roff 工作在后台。
+.
+roff 文档可以使用
+.BR xditview (1x)
+程序查看,它是一个 X 发行版的标准程序。参见
+.BR X (7x).
+.
+但是显式地使用 roff 也不困难
+.
+.P
+一些 roff 实现提供了包装程序,使得人们可以简单地在命令行使用 roff 系统。
+.
+例如,GNU 的 roff 实现
+.BR groff (1)
+提供了命令行选项来避免传统 troff 中过长的的命令管道;
+.BR grog (1)
+程序试着从文档猜测应当使用什么参数来运行 groff;
+不习惯于指定命令行选项的人应当用
+.BR groffer (1)
+程序来图形化地显示 groff 文件和手册页
+.
+.
+.\" --------------------------------------------------------------------
+.SS "管道 The roff Pipe"
+.\" --------------------------------------------------------------------
+.
+roff 系统由预处理器 (preprocessor),roff 排版程序和后处理器 (postprocessor) 组成。
+.
+这种结构使用了大量的管道
+.I piping
+机制,意思是,一系列的程序陆续地被调用,
+队列中的每个程序的输出就作为下一个程序的输入
+.
+.CodeSkip
+.
+.ds @1 "cat \f[I]file\f[P] |\""
+.ds @2 "\*[Ellipsis] | \f[I]preproc\f[P] | \*[Ellipsis] |\""
+.ds @3 "troff \f[I]options\f[P] | \f[I]postproc\f[P]\""
+.
+.ShellCommand "\*[@1] \*[@2] \*[@3]"
+.
+.rm @1
+.rm @2
+.rm @3
+.P
+预处理器产生 roff 代码,传给一个 roff 处理器 (例如,troff),
+然后 roff 处理器接下来产生中间输出,传给一个后处理器程序,
+用来打印或者产生最终输出
+.
+.P
+所有这些组件都使用它们自己的程序语言;
+每种语言是与其他组件完全无关的。
+.
+此外,还可以包括为特殊目标而制作 (tailor) 的 roff 宏包
+.
+.P
+大多数 roff 文档中掺杂着使用一些包中的宏、
+一个或多个预处理器的代码,还会添加 roff 语言中的一些元素。
+.
+用户很少需要用到 roff 排版语言的完整功能;
+只有宏包的作者需要知道底层细节 (gory details)
+.
+.
+.
+.\" --------------------------------------------------------------------
+.SS "预处理器 Preprocessors"
+.\" --------------------------------------------------------------------
+.
+预处理器是任何产生符合 roff 排版语言语法的输出的程序。
+.
+每个预处理器都有它自己的语言,在预处理器运行时被翻译为 roff 代码。
+.
+roff 文档中可以包含以这种语言写成的片段;
+它们可以被特殊的 roff 命令或宏识别
+(they are identified by special roff requests or macros)。
+.
+加入了预处理器代码的文档必须通过所有相应的预处理器处理之后,
+才能传给真正的 roff 排版程序,
+因为真正的 roff 排版程序会忽略所有陌生的代码。
+.
+预处理器只会分析并转换指定由它处理的文档部分
+.
+.P
+有大量的自由/商业 roff 预处理器。
+.
+一些不能在所有系统上使用,
+还有一些预处理器被认为是 roff 系统不可分割的部分。
+.
+传统的预处理器有
+.
+
+.de @TP
+.\" local indent for .TP
+.TP \\w'\\f[B]soelim\\f[P]'u+2n
+..
+.P
+.RS
+.PD 0
+. at TP
+.B tbl
+制表 (table)
+. at TP
+.B eqn
+数学公式 (mathematical formul\[ae])
+. at TP
+.B pic
+绘图 (diagram)
+. at TP
+.B refer
+书目索引 (bibliographic references)
+. at TP
+.B soelim
+包含标准位置的宏文件 (macro)
+.PD
+.RE
+.
+.P
+其他已知预处理器,但不是在所有系统上都可用,包括
+.
+.P
+.RS
+.PD 0
+. at TP
+.B chem
+化学公式 (chemical formul\[ae])
+. at TP
+.B grap
+构造图元 (graphical elements)
+. at TP
+.B grn
+插入
+.BR gremlin (1)
+图片
+.PD
+.RE
+.
+.rm @TP
+.
+.\" --------------------------------------------------------------------
+.SS "排版程序 Formatter Programs"
+.\" --------------------------------------------------------------------
+.
+A
+.I roff formatter
+排版程序是一个解释用 roff 排版语言或 roff 宏包写成的文档的程序。
+.
+它产生中间结果
+.IR "intermediate output" ,
+将送入单一设备后处理器。后处理器必须在排版程序的命令行选项中指定。
+.
+文档必须已经通过了所有需要的预处理器处理
+.
+.P
+roff 排版程序的输出以另外一种语言表示:
+.IR "intermediate output format"
+或
+.IR "troff output" .
+这种语言最初详述在
+.IR "[CSTR\~#97]" 
+中;它的 GNU 扩展记载在
+.BR groff_out (5)
+中。
+.
+中间输出语言与高级的 roff 语言相比像一种汇编指令语言。
+.
+产生的中间输出是为一种特定的设备优化过的,
+但是对于所有设备,这种语言都适用
+.
+.P
+roff 排版程序是整个 roff 系统的核心。
+.
+传统 roff 有两个排版程序:
+对应字符设备的
+.B nroff
+和对应图形设备的
+.B troff
+.
+.P
+通常,
+.I troff
+这个名字泛指这两种排版程序
+(is used as a general term to refer to both formatters)。
+.
+.
+.\" --------------------------------------------------------------------
+.SS "设备 后处理器 Devices and Postprocessors"
+.\" --------------------------------------------------------------------
+.
+设备是类似打印机、字符或图形终端等的硬件接口,
+或者是用于转换为另一种字符或图形设备的软件接口
+.
+.P
+后处理器是将 troff 输出转化为一种适于某种特殊设备的格式的程序。
+.
+对于输出目标来说,roff 后处理器像是它们的设备驱动
+.
+.P
+每种设备都有为其优化的后处理器程序。.
+.
+后处理器解释中间输出,产生设备相关的代码,传送给设备
+.
+.P
+设备名和后处理器程序的名称是不固定的,
+因为它们依赖于计算机的软硬件的能力。
+.
+例如,
+.I [CSTR\~#54]
+中提到的传统的设备名已经有了极大的改变。
+.
+旧的硬件不再存在,旧的图形转换程序与现代同等功能的程序相比太不精确了
+.
+.P
+例如,Postscript 设备
+.I post
+在传统 troff 中分辨率是 720,而 groff 的
+.I ps
+设备是 72000, 提高了 100 倍
+.
+.P
+现在,操作系统为大多数类似打印机的硬件提供了设备驱动,
+因此不必为每个打印机写一个特殊的后处理器
+.
+.
+.\" --------------------------------------------------------------------
+.SH "roff 编程 ROFF PROGRAMMING"
+.\" --------------------------------------------------------------------
+.
+roff 文档是加入了 roff 排版元素的普通文档。
+.
+roff 排版语言非常强大;
+它几乎是一个完整的程序语言,并且提供了扩充自身的元素。
+.
+使用这些元素,就可以开发为特殊程序定制的宏包。
+.
+这样的宏包比普通的 roff 要容易上手得多。
+.
+所以大多数人会选择一中宏包,
+不用去关心 roff 语言的内部实现
+.
+.
+.\" --------------------------------------------------------------------
+.SS "宏包 Macro Packages"
+.\" --------------------------------------------------------------------
+.
+宏包是一些适于以便利的办法格式化某种特殊文档的宏的集合。
+.
+它们简化了 roff 的使用。
+.
+一个包的宏定义保存在一个叫做
+.IB name .tmac
+的文件中 (传统的命名是
+.BI tmac. name\c
+).
+.
+所有 tmac 文件保存在标准位置的一个或多个目录中。
+.
+有关宏包的命名和位置的细节可以看
+.BR groff_tmac (5).
+.
+.P
+文档中用到的宏包可以使用命令行选项
+.ShortOpt m 
+提供给排版程序, 参见
+.BR troff (1),
+它们也可以在文档中指定,使用 roff 语言的 “包含文件” 命令,参见
+.BR groff (7).
+.
+.P
+著名的传统宏包有
+.I man
+用来处理传统手册页
+.I mdoc
+处理 BSD 样式的手册页;此类书籍、文档和信件的宏集合是
+.I me
+(命名也许是根据它的创造者之名
+.I Eric
+Allman 而来),
+.I ms
+(命名来自
+.IR "Manuscript Macros\/" ),
+还有
+.I mm
+(命名来自
+.IR "Memorandum Macros\/" ).
+.
+.
+.\" --------------------------------------------------------------------
+.SS "roff 排版语言 The roff Formatting Language"
+.\" --------------------------------------------------------------------
+.
+传统的 roff 排版语言记述在 troff 用户手册
+.I Troff User's Manual
+.IR "[CSTR\~#54]" 
+中.
+.
+roff 语言是完整的编程语言,提供了命令 (request),宏定义,转义序列 (escape sequence),
+字符串变量,数字或数量寄存器 (number or size registers),还有流程控制语句
+.
+.P
+.I Requests
+“命令” 是预定义的基础的排版命令,与 shell 提示下的命令类似。
+.
+用户可以定义类似 “命令” 的元素,使用 roff 的 “预定义” 元素。
+.
+用户定义的命令就被叫做 “宏”
+.IR macros .
+.
+文档作者不会体会到 命令和宏 之间用法的任何区别;
+它们都写在一行中,并以一个点 (dot, `.') 开始
+.
+.P
+.I Escape sequences
+“转义序列” 是以反斜杠 (backslash, 
+.QuotedChar \[rs] .
+) 开始的 roff 元素。
+它们可以被插入到任何地方,包括文本的一行中间。
+.
+它们用来实现不同的功能,可以使用
+.Esc ( 
+插入非 ASCII 字符,使用
+.Esc f 
+改变字体,使用
+.Esc \[dq] 
+插入行内注释,它们也可以转义特殊的控制字符,像这样
+.Esc \[rs] ,
+还有很多很多其他的功能
+.
+.P
+.I Strings
+“字符串” 是存储一个字符串的变量。
+.
+字符串以
+.B .ds
+命令存储。
+.
+存储的字符串可以用
+.B \[rs]*
+转义序列获得
+.
+.P
+.I Registers
+“寄存器” 存储数字和数量。
+.
+寄存器可以用
+.B .nr
+命令设置,然后用控制序列
+.BR "\[rs]n" 
+来获得它的值
+.
+.
+.\" --------------------------------------------------------------------
+.SH "文件扩展名 FILE NAME EXTENSIONS"
+.\" --------------------------------------------------------------------
+.
+手册页使用章节号作为文件扩展名,例如本文档的文件名是
+.IR roff.7 ,
+也就是说它放在手册页的第 \~7 章
+.
+.P
+传统的宏包使用包名称作为文件扩展名,例如
+.IB file. me
+意思是使用了
+.I me
+宏包的文件,
+.IB file. mm
+使用了宏包
+.IR mm ,
+.IB file. ms
+用的是
+.IR ms ,
+.IB file. pic
+则是
+.I pic
+等等
+.
+.P
+但是没有 roff 文档统一的命名方式,尽管
+.IB file. tr
+用于
+.I troff file
+在现在和当时都是一样的
+.
+也许应当有 roff 文件扩展名的一个标准
+.
+.P
+文件扩展名与
+.BR less (1)
+格式化工具结合,会非常好用。
+.
+它提供了用单一的方式打开各种输入的可能性,
+方法是定义一个 shell 环境变量
+.BR LESSOPEN .
+这种办法没有什么文档,这是一个例子:
+.
+.CodeSkip
+.ShellCommand LESSOPEN='|lesspipe %s'
+.CodeSkip
+.
+.B lesspipe
+可以是一个系统提供的命令或者是你自己的脚本。
+.
+.
+.\" --------------------------------------------------------------------
+.SH "编辑 EDITING ROFF"
+.\" --------------------------------------------------------------------
+.
+最好的 roff 文档编辑器是 Emacs,参见
+.BR emacs (1).
+它提供了
+.I nroff
+模式,适于所有种类的 roff “方言”。
+.
+可以用下面的命令来激活这种模式
+.
+.P
+当用 Emacs 编辑文档时可以输入
+.RI ` "M-x nroff-mode" '
+来改变模式,这里
+.B M-x
+意思是按住
+.B Meta
+键 (或
+.BR Alt )
+同时点一下
+.BR x\~ 
+键
+.
+.P
+也可以在编辑器加载文件的时候,自动改变模式
+.
+.Topic
+最好的办法是将下面三行注释包含在文件末尾
+.
+.CodeSkip
+.nf
+.B \*[Comment] Local Variables:
+.B \*[Comment] mode: nroff
+.B \*[Comment] End:
+.fi
+.
+.Topic
+有一系列的文件扩展名,例如手册页的扩展名,会自动触发 nroff 模式
+.
+.Topic
+理论上,可以将下面的序列
+.CodeSkip
+.B \*[Comment] \%-*-\ nroff\ -*-
+.CodeSkip
+作为文件的第一行,也可以使 emacs 在加载文件时启用 nroff 模式。
+.
+不幸的是,一些程序例如
+.B man
+在这种方法中会出错;因此请不要用它
+.
+.P
+所有的 roff 排版程序都提供了自动的断行以及水平和竖直间距。
+.
+为了不干扰它的功能,应当注意以下几点:
+.
+.Topic
+不要在 roff 文档中包含空行或只包含空格的行,
+.
+而是使用“空行”命令 (一行中只包含一个点),或者一行注释
+.B \*[Comment]
+(如果需要一个构造元素的话)
+.
+.Topic
+不要在行首用空格,因为这会导致不可预测的行为。
+.
+段落缩进可以以受控的方式,用 roff 命令构造出来
+.
+.Topic
+每句话应当放到自己的一行中,因为句号后面的空格的处理方法是根据它结束的是短语还是句子而不同的。
+.
+要区别这两种情况,在每句话后面加上一个换行
+.
+.Topic
+另外要使用 Emacs 的 auto-fill 模式的话,最好在每句话后面添加一个空的 roff 命令 (一行中只包含一个点)
+.
+.P
+下面的例子显示了最佳的 roff 编辑习惯是怎样的
+.
+.IP
+.nf
+这是一个 roff 文档的例子.
+.Text .
+这是同一段中的下一句.
+.Text .
+这是下一个句子,它比较长,分成了多
+行;类似 `cf.' 这样的短语可以很容易地
+识别,因为其中的“点”后面没有换行.
+.Text .
+(在输出时,它们仍会在同一段中.)
+.Text .
+(译注:如果使用中文的标点“。”就不用考虑这些,
+但是每句话后面换行总是个好主意。少用 `.' 为妙)
+.fi
+.
+.P
+除了 Emacs,其他一些编辑器也提供了 nroff 格式文件的支持,例如
+.BR vim (1),
+它是
+.BR vi (1)
+程序的扩展
+.
+.
+.\" --------------------------------------------------------------------
+.SH BUGS
+.\" --------------------------------------------------------------------
+.
+.I UNIX\[rg]
+是 Open Group 的注册商标。
+.
+但是在 Caldera 在 2001 年收购 SCO UNIX 之后,事情发生了极大的好转
+.
+.P
+(译注:为什么 2003 年 SCO 又会成为 M$ 的走狗呢?)
+.
+.
+.\" --------------------------------------------------------------------
+.SH "参见 SEE ALSO"
+.\" --------------------------------------------------------------------
+.
+有大量的讲述 roff 的文档。
+.
+讲述传统 troff 的原始文档仍可获得,groff 的所有方面也都详细地记录在文档中
+.
+.
+.\" --------------------------------------------------------------------
+.SS "Internet sites"
+.\" --------------------------------------------------------------------
+.
+.TP
+troff.org
+.URL http://\:www.troff.org "“历史上的 troff”"
+提供了 roff 所有历史方面的概述和指引。
+.
+这个网站仍在建设;但是,它将成为 roff 历史的主要来源
+.
+.TP
+Multics
+.URL http://\:www.multicians.org "“Multics 的官方站点”"
+包含很多 MIT 的项目的信息,CTSS,Multics,早期的 Unix,还包括
+.IR  runoff ;
+尤其有用的是一个术语字典,还有很多到古老的文档的链接
+.
+.TP
+Unix Archive
+.URL http://\:www.tuhs.org/\:Archive/ \
+     "“古老的 Unix 的档案馆”"
+.
+提供了古老的 Unix 的源码和一些二进制文件
+(包括 troff 的源码和它的文档),它们
+是 Caldera 自 2001 年以来公开的,例如著名的 Unix 版本\~7
+的 PDP-11 平台版本位置是
+.URL http://\:www.tuhs.org/\:Archive/\:PDP-11/\:Trees/\:V7 \
+     "Unix V7 site" .
+.
+.TP
+Developers at AT&T Bell Labs
+.URL http://\:cm.bell-labs.com/\:cm/\:index.html \
+     "“贝尔实验室计算和数学科学研究所”"
+.
+提供了搜索早期开发者信息的功能
+.
+.TP
+Plan 9
+.URL http://\:plan9.bell-labs.com "“Plan\~9 操作系统”"
+.
+AT&T Bell Labs 贝尔实验室的作品
+.
+.TP
+runoff
+.URL http://web.mit.edu/\:Saltzer/\:www/\:publications/\:pubs.html \
+"“Jerry Saltzer 的主页”"
+.
+保存了古老的 runoff 排版语言写成的一些文档
+.
+.TP
+CSTR Papers
+.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html \
+     "“贝尔实验室 CSTR 网站”"
+.
+保存了原始的 troff 手册 (CSTR #54, #97, #114, #116, #122)
+还有著名的有关编程的历史文档
+.
+.TP
+GNU roff
+.URL http://\:www.gnu.org/\:software/\:groff "“groff 的官方网站”"
+提供了 自由的 roff 实现:groff,并且它是 roff 的事实标准
+.
+.
+.\" --------------------------------------------------------------------
+.SS "历史文档 Historical roff Documentation"
+.\" --------------------------------------------------------------------
+.
+很多
+.troff
+历史文档仍然可以在线获得。
+.
+troff 语言主要的两部手册是
+.
+.TP
+[CSTR\~#54]
+J. F. Osanna,
+.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \
+     "\fINroff/\:Troff User's Manual\fP" ;
+.
+(《用户手册》) Bell Labs, 1976; revised by Brian Kernighan, 1992.
+
+.
+.TP
+[CSTR\~#97]
+Brian Kernighan,
+.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:97.ps \
+     "\fIA Typesetter-independent TROFF\fP" ,
+.
+(《设备无关的 troff》) Bell Labs, 1981, revised March 1982.
+.
+.P
+将 roff 作为一种“小语言”("little language") 来讲述的论文有
+.
+.TP
+[CSTR\~#114]
+Jon L. Bentley and Brian W. Kernighan,
+.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:114.ps \
+     "\fIGRAP \(em A Language for Typesetting Graphs\fP" ;
+.
+(《grap: 一种图形排版语言》) Bell Labs, August 1984.
+.
+.TP
+[CSTR\~#116]
+Brian W. Kernighan,
+.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:116.ps \
+     "\fIPIC -- A Graphics Language for Typesetting\fP" ;
+.
+(《pic: 一种排版用的图形控制语言》) Bell Labs, December 1984.
+.
+.TP
+[CSTR\~#122]
+J. L. Bentley, L. W. Jelinski, and B. W. Kernighan,
+.URL http://\:cm.bell-labs.com/\:cm/\:cs/\:122.ps \
+"\fICHEM \(em A Program for Typesetting Chemical Structure Diagrams, \
+Computers and Chemistry\fP" ;
+.
+(《chem: 排版化学结构图的程序,计算机与化学》) Bell Labs, April 1986.
+.
+.
+.\" --------------------------------------------------------------------
+.SS "手册页 Manual Pages"
+.\" --------------------------------------------------------------------
+.
+由于它结构复杂,完整的 roff 系统包含很多很多手册页,
+每一个都描述了 roff 的一个方面。
+.
+不幸的是,不同的 roff 实现之间,它们的手册没有相同的命名格式
+.
+.P
+在
+.IR groff 
+中,手册页
+.BR groff (1)
+包含了 groff 相关的所有文档的索引
+.
+.P
+其他系统中,你需要自己探索,但是
+.BR troff (1)
+是个很好的起点
+.
+.
+.\" --------------------------------------------------------------------
+.SH "作者 AUTHORS"
+.\" --------------------------------------------------------------------
+.
+Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+.
+.P
+This document is distributed under the terms of the FDL (GNU Free
+Documentation License) version 1.1 or later.
+.
+You should have received a copy of the FDL on your system, it is also
+available on-line at the
+.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
+.
+.P
+此文档是
+.IR groff ,
+GNU roff 套件的一部分。
+.
+它的作者是
+.MTO bwarken at mayn.de "Bernd Warken" ;
+它的管理者是
+.MTO wl at gnu.org "Werner Lemberg".
+.
+.
+.SH "[中文版维护人]"
+.B bbbush <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.11.28
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+.
+.\" --------------------------------------------------------------------
+.\" Emacs setup
+.\" --------------------------------------------------------------------
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/src/man7/rollback.7 b/src/man7/rollback.7
new file mode 100644
index 0000000..2a82576
--- /dev/null
+++ b/src/man7/rollback.7
@@ -0,0 +1,42 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "ROLLBACK" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+ROLLBACK \- 退出当前事务
+
+.SH SYNOPSIS
+.sp
+.nf
+ROLLBACK [ WORK | TRANSACTION ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBROLLBACK\fR 回卷当前事务并取消当前事务中的所有更新。
+.SH "PARAMETERS 参数"
+.TP
+\fBWORK\fR
+.TP
+\fBTRANSACTION\fR
+ 可选的键字。没有作用。
+.SH "NOTES 注意"
+.PP
+ 使用 COMMIT [\fBcommit\fR(7)] 语句将一次事务成功停止。
+.PP
+ 如果不在一个事务内部发出 ROLLBACK 不会有问题,但是将抛出一个警告信息。
+.SH "EXAMPLES 例子"
+.PP
+ 取消所有更改:
+.sp
+.nf
+ROLLBACK;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准只声明了两种形式 ROLLBACK  和 ROLLBACK WORK。否则完全兼容。
+.SH "SEE ALSO 参见"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/samba.7 b/src/man7/samba.7
new file mode 100644
index 0000000..accb9b7
--- /dev/null
+++ b/src/man7/samba.7
@@ -0,0 +1,137 @@
+.TH SAMBA 7 "26 Apr 2000" "samba 2.0.7"
+.PP 
+.SH NAME
+samba - 为 UNIX 实现的 Windows SMB/CIFS 文件服务器
+.PP 
+.SH "SYNOPSIS 总览"
+\fBSamba\fP
+.PP 
+.SH "DESCRIPTION 描述"
+.PP 
+samba 套件是在 UNIX 系统上实现“服务器信息块”(通常简称 SMB)
+协议的一组程序。这个协议有时也称为“通用互联网文件系统,
+LanManager 或 NetBIOS 协议”。
+.PP 
+.SH "COMPONENTS 组件"
+.PP 
+samba 由几个部件组成。每个部件在一系列的文档中被描述。
+强烈推荐你阅读这些 samba 本身和你用的那些部件的手册中的文档。
+如果手册不够清晰,请向这个地址发送补丁或者错误报告:samba-bugs at samba.org
+.PP 
+.IP 
+.IP "\fBsmbd\fP" 
+.br 
+.br 
+\fBsmbd\fP
+(8) 守护程序为 SMB 客户,例如 Windows 95/98,Windows NT,
+Windows for Workgroups 或者是 LanManager 提供文件和打印服务。
+它的相应配置文件在 \fBsmb\&.conf (5)\fP 中描述。
+.IP 
+.IP "\fBnmbd\fP" 
+.br 
+.br 
+\fBnmbd\fP
+(8) 守护程序提供 NetBIOS 名字服务和浏览支持。它的相应配置文件在
+\fBsmb\&.conf (5)\fP 中描述。
+.IP 
+.IP "\fBsmbclient\fP" 
+.br 
+.br 
+\fBsmbclient\fP
+(1) 程序实现了一种简单的类似 FTP 的客户端应用。
+对于访问位于其它兼容服务器(如 NT)上的 SMB 共享资源非常有用,
+同时它也可用于 UNIX 机器向任何 SMB 服务器(如运行 NT 的 PC 机)上的打印机
+提交打印作业。
+.IP 
+.IP "\fBtestparm\fP" 
+.br 
+.br 
+\fBtestparm
+(1)\fP 工具让你可以测试你的 \fBsmb\&.conf
+(5)\fP 配置文件。
+.IP 
+.IP "\fBtestprns\fP" 
+.br 
+.br 
+\fBtestprns
+(1)\fP 工具可以测试你在 printcap 文件中定义好的打印机。
+.IP 
+.IP "\fBsmbstatus\fP" 
+.br 
+.br 
+The \fBsmbstatus\fP
+(1) 工具用来列出当前在
+\fBsmbd (8)\fP 服务器上的联接。
+.IP 
+.IP "\fBnmblookup\fP" 
+.br 
+.br 
+the
+\fBnmblookup (1)\fP 工具用来向 UNIX 机器查询 NetBIOS 名字。
+.IP 
+.IP "\fBmake_smbcodepage\fP" 
+.br 
+.br 
+\fBmake_smbcodepage (1)\fP 工具用来为你的
+\fBsmbd
+(8)\fP 服务器建立 SMB 代码页定义文件。
+.IP 
+.IP "\fBsmbpasswd\fP" 
+.br 
+.br 
+\fBsmbpasswd
+(8)\fP 工具用来在 samba 和 NT 服务器上改变 SMB 加密口令。
+.IP 
+.PP 
+.SH "AVAILABILITY" 可用性
+.PP 
+samba 套件由 GNU 公共协议保护。在软件包的 COPYING 文件中
+包含了一份协议的复本。你可以散布套件的拷贝,但请服从协议条款。
+.PP 
+samba 套件的最新版本可以通过位于 samba.org 的匿名 FTP 上的
+目录获得,当然也可以在很多互联网上的镜像站点中获得。
+.PP 
+你也能在 comp.protocols.smb 新闻组和 samba 的邮件列表
+上找到相关的有用信息。在 samba 的 README 文件中给出了
+加入邮件列表的详细资料。
+.PP 
+如何你能用 WWW 浏览器的话,在 http://samba.org/samba/ 将会找到包括
+samba 邮件列表的问题在内的非常多的有用信息。
+.PP 
+.SH "VERSION" 版本
+.PP 
+这份手册是针对 samba 套件版本 2.0 的。
+.PP 
+.SH "CONTRIBUTIONS" 投稿
+.PP 
+如果你想向 samba 计划投稿的话,建议你到 samba at samba.org 加入
+samba 的邮件列表,详细介绍请看在 http://samba.org/listproc 的网页。
+.PP 
+如果你一个补丁需要提交或者要报告一个错误的话可以直接向
+samba-bugs at samba.org 发信。注意,samba 开发组可以会因为
+这个软件包的迅速流行而需要花费一定的时间来对邮件作出回应。
+我们更愿意在 \fIdiff -u\fP 格式下修补问题。
+.PP 
+.SH "CREDITS" 荣誉
+.PP 
+在此提及对计划作出贡献的人实在太多了,但是所有的 samba用户都应该感谢他们。要看一份完整的列表,查找 \fIftp://samba.org/pub/samba/alpha/cvs.log\fR 可以获得 CVS 修改前提供的一份维护者名单,并在 \fIftp://samba.org/pub/samba/alpha/cvs.log\fR 中找到变更后的内容。CVS 是 samba 开发组开发 samba 时采用的开放源代码控制系统,没有这个系统计划将无法管理。
+.PP 
+另外,一些商业组织现在向 samba 开发组提供资金和设备上的帮助。详细信息请看网页 \fIhttp://samba.org/samba/samba-thanks.html\fR。
+.PP 
+.SH "AUTHOR" 作者
+.PP 
+samba 软件和相关工具最初由 Andrew Tridgell samba-bugs at samba.org 创建。
+samba 现在由开发组以类似 Linux 内核开发采用的开源计划方式来发展。
+.PP 
+samba 手册页最初由 Karl Auer 撰写。它的源码已被转换成 YODL 格式(一种极好的开放源代码软件,可以在\fIftp://ftp.icce.rug.nl/pub/unix/\fR 处获得)并已由 
+Jeremy Allison 更新到 samba2.0 版本。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
+
+
+
diff --git a/src/man7/select.7 b/src/man7/select.7
new file mode 100644
index 0000000..8e429d9
--- /dev/null
+++ b/src/man7/select.7
@@ -0,0 +1,479 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SELECT" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SELECT \- 从表或视图中取出若干行
+
+.SH SYNOPSIS
+.sp
+.nf
+SELECT [ ALL | DISTINCT [ ON ( \fIexpression\fR [, ...] ) ] ]
+    * | \fIexpression\fR [ AS \fIoutput_name\fR ] [, ...]
+    [ FROM \fIfrom_item\fR [, ...] ]
+    [ WHERE \fIcondition\fR ]
+    [ GROUP BY \fIexpression\fR [, ...] ]
+    [ HAVING \fIcondition\fR [, ...] ]
+    [ { UNION | INTERSECT | EXCEPT } [ ALL ] \fIselect\fR ]
+    [ ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...] ]
+    [ LIMIT { \fIcount\fR | ALL } ]
+    [ OFFSET \fIstart\fR ]
+    [ FOR UPDATE [ OF \fItable_name\fR [, ...] ] ]
+
+where \fIfrom_item\fR can be one of:
+
+    [ ONLY ] \fItable_name\fR [ * ] [ [ AS ] \fIalias\fR [ ( \fIcolumn_alias\fR [, ...] ) ] ]
+    ( \fIselect\fR ) [ AS ] \fIalias\fR [ ( \fIcolumn_alias\fR [, ...] ) ]
+    \fIfunction_name\fR ( [ \fIargument\fR [, ...] ] ) [ AS ] \fIalias\fR [ ( \fIcolumn_alias\fR [, ...] | \fIcolumn_definition\fR [, ...] ) ]
+    \fIfunction_name\fR ( [ \fIargument\fR [, ...] ] ) AS ( \fIcolumn_definition\fR [, ...] )
+    \fIfrom_item\fR [ NATURAL ] \fIjoin_type\fR \fIfrom_item\fR [ ON \fIjoin_condition\fR | USING ( \fIjoin_column\fR [, ...] ) ]
+.sp
+.fi
+[Comment: FIXME: This last syntax is incorrect if the join type is an
+INNER or OUTER join (in which case one of NATURAL, ON ..., or USING
+\&... is mandatory, not optional). What's the best way to fix
+this?]
+.SH "DESCRIPTION 描述"
+.PP
+\fBSELECT\fR 将从一个或更多表中返回记录行。 SELECT 通常的处理如下:
+.IP 1. 
+ 计算列出在 FROM 中的所有元素。(FROM 中的每个元素都是一个真正的或者虚拟的表。)如果在 FROM 列表里声明了多过一个元素,那么他们就交叉连接在一起。(参阅下面的 FROM Clause [\fBselect\fR(7)] )。
+.IP 2. 
+ 如果声明了 WHERE 子句,那么在输出中消除所有 不满足条件的行。(参阅下面的 WHERE Clause [\fBselect\fR(7)] )。
+.IP 3. 
+ 如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里。 如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组。(参阅下面的
+GROUP BY Clause [\fBselect\fR(7)] 和
+HAVING Clause [\fBselect\fR(7)] )。
+.IP 4. 
+ 使用 UNION,INTERSECT, 和 EXCEPT,我们可以把多个 SELECT  语句的输出合并成一个结果集。UNION 操作符返回在两个结果集或者其中一个中的行, INTERSECT 操作符返回严格地在两个结果集中都有的行。 EXCEPT 操作符返回在第一个结果集中,但是不在第二个结果集中的行。不管哪种情况, 重复的行都被删除,除非声明了 ALL。(参阅下面的
+UNION Clause [\fBselect\fR(7)], INTERSECT Clause [\fBselect\fR(l)], 和
+EXCEPT Clause [\fBselect\fR(7)] )。
+.IP 5. 
+ 实际输出行的时候,SELECT 先为每个选出的行计算输出表达式 (参阅下面的
+SELECT List [\fBselect\fR(7)] )。
+.IP 6. 
+ 如果声明了 ORDER BY 子句,那么返回的行是按照指定的顺序排序的。 如果没有给出 ORDER BY,那么数据行是按照系统认为可以最快生成的方法给出的。 (参阅下面的 
+ORDER BY Clause [\fBselect\fR(7)] )。
+.IP 7. 
+ 如果给出了 LIMIT 或者 OFFSET  子句,那么 SELECT 语句只返回结果行的一个子集。(参阅下面的 LIMIT Clause [\fBselect\fR(7)] )。
+.IP 8. 
+DISTINCT 从结果中删除那些重复的行。 DISTINCT ON 删除那些匹配所有指定表达式的行。 ALL (缺省)将返回所有候选行,包括重复的。 (参阅下面的 DISTINCT Clause [\fBselect\fR(7)] )。
+.IP 9. 
+FOR UPDATE 子句导致 SELECT  语句对并发的更新锁住选定的行。(参阅下面的 FOR UPDATE Clause [\fBselect\fR(7)] )。
+.PP
+.PP
+ 你必须有 SELECT 权限用来从表中读取数值。 使用 FOR UPDATE 还要求 UPDATE 权限。
+.SH "PARAMETERS 参数"
+.SS "FROM 子句"
+.PP
+FROM 子句为 SELECT 声明一个或者多个源表。 如果声明了多个源表,那么结果就是所有源表的笛卡儿积(交叉连接)。 但是通常我们会添加一些条件,把返回行限制成笛卡儿积的一个小的结果集。
+.PP
+FROM-子句可以包括:
+.TP
+\fB\fItable_name\fB\fR
+ 一个现存的表或视图的名字(可以有模式修饰)。 如果声明了ONLY,则只扫描该表。 如果没有声明ONLY,该表和所有其派生表(如果有的话)都被扫描。 可以在表名后面跟一个*来表示扫所有其后代表, 但在目前的版本里,这是缺省特性。 (在 PostgreSQL 7.1 以前的版本里,ONLY是缺省特性。) 缺省的特性可以通过修改配置选项 sql_interitance 来改变。
+.TP
+\fB\fIalias\fB\fR
+ 为那些包含别名的 FROM 项目取的别名。别名用于缩写或者在自连接中消除歧义(自连接里,同一个表扫描了多次)。 如果提供了别名,那么它就会完全隐藏表或者函数的实际名字; 比如,如果给出 FROM foo AS f,那么 SELECT  剩下的东西必须吧这个 FROM 项以 f 而不是 foo 引用。如果写了别名, 我们也可以提供一个字段别名列表,这样可以替换表中一个或者多个字段的名字。
+.TP
+\fB\fIselect\fB\fR
+ 一个子 SELECT 在 FROM 子句里出现的。 它的输出作用好象是为这条 SELECT 命令在其生存期里创建一个临时表。 请注意这个子 SELECT 必须用园括弧包围。 并且必须给它加别名。
+.TP
+\fB\fIfunction_name\fB\fR
+ 函数调用可以出现在 FROM 子句里。 (对于那些返回结果集的函数特别有用,但是任何函数都能用。) 这么做就好像在这个 SELECT 命令的生命期中, 把函数的输出创建为一个临时表一样。我们也可以使用别名。如果写了别名, 我们还可以写一个字段别名列表,为函数返回的复合类型的一个或多个属性提供名字替换。 如果函数定义为了 record 数据类型, 那么必须出现一个 AS 关键字或者别名,后面跟着一个字段定义列表, 形如:( column_name data_type [, ... ])。 这个字段定义列表必须匹配函数返回的字段的实际数目和类型。
+.TP
+\fB\fIjoin_type\fB\fR
+.RS
+.TP 0.2i
+\(bu
+[ INNER ] JOIN
+.TP 0.2i
+\(bu
+LEFT [ OUTER ] JOIN
+.TP 0.2i
+\(bu
+RIGHT [ OUTER ] JOIN
+.TP 0.2i
+\(bu
+FULL [ OUTER ] JOIN
+.TP 0.2i
+\(bu
+CROSS JOIN
+.RE
+.PP
+ 之一。 就 INNER 和 OUTER 连接类型, 我们必须声明一个连接条件,也就是说一个 NATURAL, ON join_condition, 或者 USING (join_column [, ...])。 见下文获取它们的含义,对于 CROSS JOIN,这些子句都不能出现。
+
+ 一个 JOIN 子句,组合了两个 FROM 项。 必要时使用圆括弧以决定嵌套的顺序。 如果没有圆括弧,JOIN 的嵌套从左向右。 在任何情况下,JOIN 都比逗号分隔的 FROM 项绑定得更紧。
+
+CROSS JOIN 和 INNER JOIN
+生成一个简单的笛卡儿积,和你在 FROM 的顶层列出两个项的结果相同。 CROSS JOIN 等效于 INNER JOIN ON (true), 也就是说,没有被条件删除的行。这种连接类型只是符号上的方便, 因为它们和你用简单的 FROM 和 WHERE 干的事情是一样的。
+
+LEFT OUTER JOIN 返回有条件的笛卡儿积(也就是说, 所有组合出来的行都通过了连接条件)中的行,加上左手边的表中没有对应的右手边表的行可以一起匹配通过连接条件的那些行。 这样的左手边的行扩展成连接生成表的全长,方法是在那些右手边表对应的字段位置填上空。请注意,只有在决定那些行是匹配的时候, 之计算 JOIN 子句自己的条件。外层的条件是在这之后施加的。
+
+ 对应的是,RIGHT OUTER JOIN 返回所有连接出来的行, 加上每个不匹配的右手边行(左边用空值扩展)。这只是一个符号上的便利,因为我们总是可以把它转换成一个 LEFT OUTER JOIN, 只要把左边和右边的输入对掉一下即可。
+
+FULL OUTER JOIN 返回所有连接出来的行,加上每个不匹配的左手边的行(右边用空值扩展), 加上每个不匹配的右手边的行(左边用空值扩展)。
+.TP
+\fBON \fIjoin_condition\fB\fR
+\fIjoin_condition\fR 是一个表达式, 生成类型为 boolean 的结果(类似WHERE 子句), 表示连接中那些行被认为是匹配的。
+.TP
+\fBUSING (\fIjoin_column\fB [, ...])\fR
+ 一个形如 USING ( a, b, ... ) 的子句, 是ON left_table.a = right_table.a AND left_table.b = right_table.b ...  的缩写。同样,USING 蕴涵着:每对等效字段中只有一个包含在连接输出中,而不是两个都输出的意思。
+.TP
+\fBNATURAL\fR
+NATURAL 是一个 USING 列表的缩写,这个列表说的是两个表中同名的的字段。
+.PP
+.SS "WHERE 子句"
+.PP
+ 可选的 WHERE 条件有如下常见的形式:
+.sp
+.nf
+WHERE \fIcondition\fR
+.sp
+.fi
+ 这里 condition  可以是任意生成类型为 boolean 的表达式。 任何不满足这个条件的行都会从输出中删除。如果一个行的数值替换到条件的引用中计算出来的条件为真,那么该行就算满足条件。
+.SS "GROUP BY 子句"
+.PP
+ 可选的 GROUP BY 子句的一般形式
+.sp
+.nf
+GROUP BY \fIexpression\fR [, ...]
+.sp
+.fi
+.PP
+GROUP BY 将把所有在组合了的表达式上共享同样的值的行压缩成一行。 expression 可以是一个输入字段名字, 或者是一个输入字段(SELECT 列表)的序号,或者也可以是任意从输入字段值形成的任意表达式。 在有歧义的情况下,一个 GROUP BY 的名字将被解释成输入字段的名字,而不是输出字段的名字。
+.PP
+ 如果使用了聚集函数,那么就会对组成一组的所有行进行计算,为每个组生成一个独立的值(而如果没有 GROUP BY, 那么聚集对选出来的所有行计算出一个值)。如果出现了 GROUP BY, 那么 SELECT 列表表达式中再引用那些没有分组的字段就是非法的, 除非放在聚集函数里,因为对于未分组的字段,可能会返回多个数值。
+.SS "HAVING 子句"
+.PP
+ 可选的 HAVING 子句有如下形式:
+.sp
+.nf
+HAVING \fIcondition\fR
+.sp
+.fi
+ 这里 condition  和为 WHERE 子句里声明的相同。
+.PP
+HAVING 去除了一些不满足条件的组行。 HAVING 与 WHERE 不同: WHERE 在使用 GROUP BY  之前过滤出单独的行,而 HAVING 过滤由 GROUP BY 创建的行。 在 condition 里引用的每个字段都必须无歧义地引用一个分组的行,除非引用出现在一个聚集函数里。
+.SS "UNION 子句"
+.PP
+UNION 子句的一般形式是:
+.sp
+.nf
+\fIselect_statement\fR UNION [ ALL ] \fIselect_statement\fR
+.sp
+.fi
+ 这里 \fIselect_statement\fR 是任意没有 ORDER BY,LIMIT,或者 FOR UPDATE 子句的 SELECT语句。 (如果用圆括弧包围,ORDER BY 和 LIMIT 可以附着在子表达式里。 如果没有圆括弧,这些子句将交给 UNION 的结果使用, 而不是给它们右手边的输入表达式。)
+.PP
+UNION 操作符计算那些涉及到的所有 SELECT 语句返回的行的结果联合。 一个行如果至少在两个结果集中的一个里面出现,那么它就会在这两个结果集的集合联合中。 两个做为 UNION 直接操作数的SELECT必须生成相同数目的字段, 并且对应的字段必须有兼容的数据类型。
+.PP
+ 缺省地,UNION 的结果不包含任何重复的行,除非声明了 ALL 子句。 ALL 制止了消除重复的动作。
+.PP
+ 同一SELECT语句中的多个 UNION 操作符是从左向右计算的, 除非用圆括弧进行了标识。
+.PP
+ 目前,FOR UPDATE 不能在 UNION 的结果或输入中声明。
+.SS "INTERSECT 子句"
+.PP
+INTERSECT 子句的一般形式是:
+.sp
+.nf
+\fIselect_statement\fR INTERSECT [ ALL ] \fIselect_statement\fR
+.sp
+.fi
+\fIselect_statement\fR 是任何不带 ORDER BY, LIMIT,或者 FOR UPDATE 子句的 SELECT 语句。
+.PP
+ INTERSECT 计算涉及的 SELECT 语句返回的行的集合交集。 如果一个行在两个结果集中都出现,那么它就在两个结果集的交集中。
+.PP
+ NTERSECT 的结果不包含任何重复行,除非你声明了 ALL 选项。 用了 ALL 以后,一个在左手边的表里有 m 个重复而在右手边表里有 n 个重复的行将出现 min(m,n) 次。
+.PP
+ 除非用圆括号指明顺序, 同一 SELECT 语句中的多个 INTERSECT 操作符是从左向右计算的。 INTERSECT 比 UNION 绑定得更紧 --- 也就是说 A UNION B INTERSECT C 将读做 A UNION (B INTERSECT C),除非你用圆括弧声明。
+.SS "EXCEPT 子句"
+.PP
+EXCEPT 子句有如下的通用形式:
+.sp
+.nf
+\fIselect_statement\fR EXCEPT [ ALL ] \fIselect_statement\fR
+.sp
+.fi
+ 这里 fIselect_statement\fR 是任何没有 ORDER BY,LIMIT,或者 FOR UPDATE  子句的 SELECT 表达式。
+.PP
+EXCEPT 操作符计算存在于左边SELECT  语句的输出而不存在于右边语句输出的行。
+.PP
+EXCEPT 的结果不包含任何重复的行,除非声明了 ALL 选项。 使用 ALL 时,一个在左手边表中有 m 个重复而在右手边表中有 n 个重复的行将出现 max(m-n,0) 次。
+.PP
+ 除非用圆括弧指明顺序,同一 SELECT 语句中的多个 EXCEPT 操作符是从左向右计算的。 EXCEPT 和 UNION 绑定级别相同。
+.SS "SELECT 列表"
+.PP
+\fBSELECT\fR 列表(在关键字 SELECT 和 FROM) 之间的东西)声明一个表达式,这个表达式形成 SELECT 语句的输出行。这个表达式可以(通常也的确是)引用那些在 FROM 子句里计算的字段。 通过使用 AS output_name, 我们可以为一个输出行声明另外一个名字。这个名字主要用做显示该行的标签。 它也可以在 ORDER BY 和 GROUP BY 子句里当作字段值的引用, 但是不能在 WHERE 或者 HAVING 子句里这么用;在那里,你必须写出表达式。
+.PP
+ 除了表达式之外,我们也可以在输出列表上写一个 * 表示选出的行的所有字段的缩写。同样,我们可以写 \fItable_name.\fR*  作为来自某个特定表的字段的缩写。
+.SS "ORDER BY 子句"
+.PP
+ 可选的 ORDER BY 子句有下面的一般形式:
+.sp
+.nf
+ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...]
+.sp
+.fi
+\fIexpression\fR 可以是一个输出字段(SELECT 列表)的名字或者序号, 或者也可以是用输入字段的数值组成的任意表达式。
+.PP
+ORDER BY 子句导致结果行根据指定的表达式进行排序。 如果根据最左边的表达式,两行的结果相同,那么就根据下一个表达式进行比较, 依此类推。如果对于所有声明的表达式他们都相同,那么以随机顺序返回。
+.PP
+ 序数指的是列/字段按顺序(从左到右)的位置。 这个特性让我们可以对没有唯一名称的列/字段进行排序。 这一点从来不是必须的, 因为总是可以通过 AS 子句给一个要计算的列/字段赋予一个名称。
+.PP
+ 在 ORDER BY 里还可以使用任意表达式, 包括那些没有出现在SELECT结果列表里面的字段。 因此下面的语句现在是合法的:
+.sp
+.nf
+SELECT name FROM distributors ORDER BY code;
+.sp
+.fi
+ 这个特性的一个局限就是应用于 UNION,INTERSECT, 或者 EXCEPT 查询的 ORDER BY 子句只能在一个输出字段名或者数字上声明,而不能在一个表达式上声明。
+.PP
+ 请注意如果一个 ORDER BY 表达式是一个简单名称, 同时匹配结果字段和输入字段, ORDER BY 将把它解释成结果字段名称。 这和 GROUP BY 在同样情况下做的选择正相反。 这样的不一致是由 SQL 标准强制的。
+.PP
+ 我们可以给 ORDER BY 子句里每个列/字段加一个关键字 DESC (降序)或 ASC(升序)。如果不声明, ASC 是缺省。 我们还可以在 USING 子句里声明一个排序操作符来实现排序。 ASC 等效于使用 USING < 而 DESC 等效于使用 USING >。
+(But the creator of a user-defined data type can define exactly what the
+default sort ordering is, and it might correspond to operators with other
+names.)
+.PP
+ 在一个域里,空值排序时排在其它数值前面。换句话说,升序排序时, 空值排在末尾,而降序排序时空值排在开头。
+.PP
+ 字符类型的数据是按照区域相关的字符集顺序排序的,这个区域是在数据库集群初始化的时候建立的。
+.SS "LIMIT 子句"
+.PP
+LIMIT 子句由两个独立的子句组成:
+.sp
+.nf
+LIMIT { \fIcount\fR | ALL }
+OFFSET \fIstart\fR
+.sp
+.fi
+ 这里 \fIcount\fR 声明返回的最大行数,而 \fIstart\fR 声明开始返回行之前忽略的行数。
+ .PP
+  LIMIT 允许你检索由查询其他部分生成的行的某一部分。 如果给出了限制计数,那么返回的行数不会超过哪个限制。 如果给出了一个偏移量,那么开始返回行之前会忽略那个数量的行。
+.PP
+ 在使用 LIMIT 时, 一个好习惯是使用一个 ORDER BY 子句把结果行限制成一个唯一的顺序。 否则你会得到无法预料的查询返回的子集 --- 你可能想要第十行到第二十行, 但以什么顺序?除非你声明 ORDER BY,否则你不知道什么顺序。
+.PP
+ 查询优化器在生成查询规划时把 LIMIT 考虑进去了, 所以你很有可能因给出的 LIMIT 和 OFFSET 值不同而得到不同的规划(生成不同的行序)。 因此用不同的 LIMIT/OFFSET 值选择不同的查询结果的子集将不会产生一致的结果, 除非你用 ORDER BY 强制生成一个可预计的结果顺序。 这可不是毛病;这是 SQL 生来的特点,因为除非用了 ORDER BY 约束顺序, SQL 不保证查询生成的结果有任何特定的顺序。
+.SS "DISTINCT 子句"
+.PP
+ 如果声明了 DISTINCT,那么就从结果集中删除所有重复的行(每个有重复的组都保留一行)。 ALL 声明相反的作用:所有行都被保留;这个是缺省。
+.PP
+DISTINCT ON ( \fIexpression\fR [, ...] )
+只保留那些在给出的表达式上运算出相同结果的行集合中的第一行。 DISTINCT ON 表达式是使用与 ORDER BY (见上文) 相同的规则进行解释的。请注意,除非我们使用了 ORDER BY 来保证我们需要的行首先出现,否则,每个 "第一行" 是不可预测的。 比如,
+.sp
+.nf
+SELECT DISTINCT ON (location) location, time, report
+    FROM weather_reports
+    ORDER BY location, time DESC;
+.sp
+.fi
+ 为每个地点检索最近的天气报告。但是如果我们没有使用 ORDER BY  来强制对每个地点的时间值进行降序排序,那么我们就会得到每个地点的不知道什么时候的报告。
+.PP
+ DISTINCT ON 表达式必须匹配最左边的 ORDER BY 表达式。 ORDER BY 子句将通常包含额外的表达式来判断每个 DISTINCT ON 组里面需要的行的优先级。
+.SS "FOR UPDATE 子句"
+.PP
+FOR UPDATE 子句有下面的形式
+.sp
+.nf
+FOR UPDATE [ OF \fItable_name\fR [, ...] ]
+.sp
+.fi
+.PP
+FOR UPDATE 令那些被 SELECT 语句检索出来的行被锁住,就像要更新一样。 这样就避免它们在当前事务结束前被其它事务修改或者删除; 也就是说,其它视图 UPDATE,DELETE, 或者 SELECT FOR UPDATE 这些行的事务将被阻塞, 直到当前事务结束。同样,如果一个来自其它事务的 UPDATE, DELETE,或者 SELECT FOR UPDATE  已经锁住了某个或某些选定的行,SELECT FOR UPDATE 将等到那些事务结束, 并且将随后锁住并返回更新的行(或者不返回行,如果行已经被删除)。更多的讨论参阅 Chapter 12 ``Concurrency Control'' 。
+.PP
+ 如果特定的表在 FOR UPDATE 中,那么只有来自这些表中的行才被锁住; 任何在 SELECT 中使用的其它表都只是和平常一样读取。
+.PP
+FOR UPDATE 不能在那些无法使用独立的表数据行清晰标识返回行的环境里; 比如,它不能和聚集一起使用。
+.PP
+FOR UPDATE 可以在 LIMIT 前面出现, 主要是为了和 7.3 之前的 PostgreSQL 兼容。 不过,它在 LIMIT 后面执行更高效,因此我们建议放在 LIMIT 后面。
+.SH "EXAMPLES 例子"
+.PP
+ 将表 films 和表 distributors 连接在一起:
+.sp
+.nf
+SELECT f.title, f.did, d.name, f.date_prod, f.kind
+    FROM distributors d, films f
+    WHERE f.did = d.did
+
+       title       | did |     name     | date_prod  |   kind
+-------------------+-----+--------------+------------+----------
+ The Third Man     | 101 | British Lion | 1949-12-23 | Drama
+ The African Queen | 101 | British Lion | 1951-08-11 | Romantic
+ ...
+.sp
+.fi
+.PP
+ 统计用kind 分组的所有电影和组的列/字段的 len(长度)的和:
+.sp
+.nf
+SELECT kind, sum(len) AS total FROM films GROUP BY kind;
+
+   kind   | total
+----------+-------
+ Action   | 07:34
+ Comedy   | 02:58
+ Drama    | 14:28
+ Musical  | 06:42
+ Romantic | 04:38
+.sp
+.fi
+.PP
+ 统计所有电影(films),组的列/字段 len(长度)的和,用 kind 分组并且显示小于5小时的组总和:
+.sp
+.nf
+SELECT kind, sum(len) AS total
+    FROM films
+    GROUP BY kind
+    HAVING sum(len) < interval '5 hours';
+
+   kind   | total
+----------+-------
+ Comedy   | 02:58
+ Romantic | 04:38
+.sp
+.fi
+.PP
+ 下面两个例子是根据第二列(name)的内容对单独的结果排序的经典的方法:
+.sp
+.nf
+SELECT * FROM distributors ORDER BY name;
+SELECT * FROM distributors ORDER BY 2;
+
+ did |       name
+-----+------------------
+ 109 | 20th Century Fox
+ 110 | Bavaria Atelier
+ 101 | British Lion
+ 107 | Columbia
+ 102 | Jean Luc Godard
+ 113 | Luso films
+ 104 | Mosfilm
+ 103 | Paramount
+ 106 | Toho
+ 105 | United Artists
+ 111 | Walt Disney
+ 112 | Warner Bros.
+ 108 | Westward
+.sp
+.fi
+.PP
+ 下面这个例子演示如何获得表 distributors 和 actors的连接, 只将每个表中以字母 W 开头的取出来。 因为只取了不相关的行,所以关键字 ALL 被省略了:
+.sp
+.nf
+distributors:               actors:
+ did |     name              id |     name
+-----+--------------        ----+----------------
+ 108 | Westward               1 | Woody Allen
+ 111 | Walt Disney            2 | Warren Beatty
+ 112 | Warner Bros.           3 | Walter Matthau
+ ...                         ...
+
+SELECT distributors.name
+    FROM distributors
+    WHERE distributors.name LIKE 'W%'
+UNION
+SELECT actors.name
+    FROM actors
+    WHERE actors.name LIKE 'W%';
+
+      name
+----------------
+ Walt Disney
+ Walter Matthau
+ Warner Bros.
+ Warren Beatty
+ Westward
+ Woody Allen
+.sp
+.fi
+.PP
+ 这个例子显示了如何在 FROM 子句中使用一个函数, 包括带有和不带字段定义列表的。
+.sp
+.nf
+CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS '
+    SELECT * FROM distributors WHERE did = $1;
+' LANGUAGE SQL;
+
+SELECT * FROM distributors(111);
+ did |    name
+-----+-------------
+ 111 | Walt Disney
+
+CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS '
+    SELECT * FROM distributors WHERE did = $1;
+' LANGUAGE SQL;
+
+SELECT * FROM distributors_2(111) AS (f1 int, f2 text);
+ f1  |     f2
+-----+-------------
+ 111 | Walt Disney
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 当然,SELECT 语句和 SQL 标准兼容。但是还有一些扩展和一些缺少的特性。
+.SS "省略 FROM 子句"
+.PP
+PostgreSQL 允许我们在一个查询里省略 FROM 子句。 它的最直接用途就是计算简单的常量表达式的结果:
+.sp
+.nf
+SELECT 2+2;
+
+ ?column?
+----------
+        4
+.sp
+.fi
+ 其它有些 SQL 数据库不能这么做,除非引入一个单行的伪表做 SELECT 的数据源。
+.PP
+ 这个特性的另外一个不太明显的用途是把一个普通的从一个或多个表的 SELECT 缩写:
+.sp
+.nf
+SELECT distributors.* WHERE distributors.name = 'Westward';
+
+ did |   name
+-----+----------
+ 108 | Westward
+.sp
+.fi
+这样也可以运行是因为我们给 SELECT 中引用了但没有在 FROM 中提到的每个表都加了一个隐含的 FROM 项。
+.PP
+ 尽管这是个很方便的写法,但它却容易误用。 比如,下面的查询
+.sp
+.nf
+SELECT distributors.* FROM distributors d;
+.sp
+.fi
+可能就是个错误;用户最有可能的意思是
+.sp
+.nf
+SELECT d.* FROM distributors d;
+.sp
+.fi
+而不是下面的他实际上得到的无约束的连接
+.sp
+.nf
+SELECT distributors.* FROM distributors d, distributors distributors;
+.sp
+.fi
+为了帮助检测这种错误, PostgreSQL 以及以后的版本将在你使用一条即有隐含 FROM 特性又有明确的 FROM 子句的查询的时候给出警告。
+Also, it is possible to disable
+the implicit-FROM feature by setting the
+ADD_MISSING_FROM parameter to false.
+.SS "AS 关键字"
+.PP
+ 在 SQL 标准里,可选的关键字 AS 是多余的,可以忽略掉而不对语句产生任何影响。 PostgreSQL 分析器在重命名列/字段时需要这个关键字, 因为类型扩展的特性会导致在这个环境里的歧义。 不过,AS 在 FROM 项里是可选的。
+.SS "GROUP BY 和 ORDER BY 里可用的名字空间"
+.PP
+ 在 SQL92 标准里,ORDER BY 子句只能使用结果字段名或者编号, 而 GROUP BY 子句只能用基于输入字段名的表达式。 PostgreSQL 对这两个子句都进行了扩展, 允许另外一种选择(但是如果存在歧义,则使用标准的解释)。 PostgreSQL 还允许两个子句声明任意的表达式。 请注意在表达式中出现的名字强总是被当作输入字段名,而不是结果字段名。
+.PP
+SQL99 uses a slightly different definition which is not upward compatible
+with SQL92. In most cases, however, PostgreSQL
+will interpret an ORDER BY or GROUP
+BY expression the same way SQL99 does.
+.SS "非标准子句"
+.PP
+DISTINCT ON,
+LIMIT, 和 OFFSET 都没有在 SQL 标准中定义。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/select_into.7 b/src/man7/select_into.7
new file mode 100644
index 0000000..3c32567
--- /dev/null
+++ b/src/man7/select_into.7
@@ -0,0 +1,45 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SELECT INTO" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SELECT INTO \- 从一个查询的结果中创建一个新表
+
+.SH SYNOPSIS
+.sp
+.nf
+SELECT [ ALL | DISTINCT [ ON ( \fIexpression\fR [, ...] ) ] ]
+    * | \fIexpression\fR [ AS \fIoutput_name\fR ] [, ...]
+    INTO [ TEMPORARY | TEMP ] [ TABLE ] \fInew_table\fR
+    [ FROM \fIfrom_item\fR [, ...] ]
+    [ WHERE \fIcondition\fR ]
+    [ GROUP BY \fIexpression\fR [, ...] ]
+    [ HAVING \fIcondition\fR [, ...] ]
+    [ { UNION | INTERSECT | EXCEPT } [ ALL ] \fIselect\fR ]
+    [ ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...] ]
+    [ LIMIT { \fIcount\fR | ALL } ]
+    [ OFFSET \fIstart\fR ]
+    [ FOR UPDATE [ OF \fItablename\fR [, ...] ] ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBSELECT INTO\fR 从一个查询的计算结果中创建一个新表。 数据并不返回给客户端,这一点和普通的 SELECT 不同。 新表的字段具有和 SELECT 的输出字段相关联(相同)的名字和数据类型。
+.SH "PARAMETERS 参数"
+.TP
+\fBTEMPORARY 或 TEMP\fR
+ 如果声明了这个关键字,那么该表是作为一个临时表创建的。 请参考 CREATE TABLE [\fBcreate_table\fR(7)] 获取细节。
+.TP
+\fB\fInew_table\fB\fR
+ 要创建的表的表名(可以有模式修饰)。
+.PP
+ 所有其它输入的域都在 SELECT [\fBselect\fR(7)] 中有详细描述。
+.PP
+.SH "NOTES 注意"
+.PP
+CREATE TABLE AS [\fBcreate_table_as\fR(7)]
+的作用和 SELECT INTO 相同。 我们建议使用 CREATE TABLE AS 语法, 因为 SELECT INTO 不是标准语法。 实际上,这种类型的 SELECT INTO 是不能在 ECPG 或者 PL/pgSQL 中使用的, 因为它们对 INTO 子句的解释是不同的。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准用 SELECT ... INTO 表示选取数值到一个宿主程序的标量变量中, 而不是创建一个新表。这种用法实际上就是在 ECPG  (参阅 Chapter 29)和PL/pgSQL  (Chapter 35)里的用途。 PostgreSQL 用 SELECT INTO 代表创建表的意思是历史原因。 在新代码里我们最好使用 CREATE TABLE AS 实现这个目地。 (CREATE TABLE AS 也不是标准,但至少它出现混淆的机会少一些。)
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/set.7 b/src/man7/set.7
new file mode 100644
index 0000000..5ca6cff
--- /dev/null
+++ b/src/man7/set.7
@@ -0,0 +1,118 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET \- 改变运行时参数
+
+.SH SYNOPSIS
+.sp
+.nf
+SET [ SESSION | LOCAL ] \fIname\fR { TO | = } { \fIvalue\fR | '\fIvalue\fR' | DEFAULT }
+SET [ SESSION | LOCAL ] TIME ZONE { \fItimezone\fR | LOCAL | DEFAULT }
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+SET 命令修改运行时配置参数。许多在 Section 16.4 ``Run-time Configuration'' 里面列出的运行时参数可以用 SET 在运行时设置。 (但是有些要求使用超级用户权限来修改,而其它有些则在服务器或者会话 开始之后不能修改。)请注意 SET 只影响当前会话使用的数值。
+.PP
+ 如果 SET 或者 SET SESSION 是在一个稍后退出的事务里发出的, 那么 SET 命令的效果将在事务回滚的之后小时。 (这个行为和PostgreSQL版本 7.3 之前的不同, 那个时候 SET 的效果在后面的错误之后不会回滚。) 一旦包围它的事务提交,那么其效果将持续到事务的结束,除非被另外一个 SET 覆盖。
+.PP
+SET LOCAL 的效果只持续到当前事务结束,不管是否提交。 一个特例是在一个事务里面的 SET 后面跟着一个 SET LOCAL:在事务结束之前只能看到 SET LOCAL  的数值,但是之后(如果事务提交),则是 SET 的值生效。
+.SH "PARAMETERS 选项"
+.TP
+\fBSESSION\fR
+ 声明这个命令只对当前会话起作用。 (如果 SESSION 或 LOCAL 都没出现,那么这个是缺省。)
+.TP
+\fBLOCAL\fR
+ 声明该命令只在当前事务中有效。在 COMMIT 或者 ROLLBACK 之后,会话级别的设置将再次生效。 请注意如果在 BEGIN 块之外运行,那么 SET LOCAL  将表现出没有作用,因为事务将立即结束。
+.TP
+\fB\fIname\fB\fR
+ 可设置的运行时参数的名字。可用的参数在 Section 16.4 ``Run-time Configuration'' 和下面归档。
+.TP
+\fB\fIvalue\fB\fR
+ 参数的新值。值可以声明为字串常量,标识符,数字,或者逗号分隔的上面这些东西的列表。 DEFAULT 可以用于把这些参数设置为它们的缺省值。
+.PP
+ 除了在 Section 16.4 ``Run-time Configuration'' 里面有文档记载的配置参数之外, 还有几个只能用 SET 命令设置,或者是有特殊的语法的参数:
+.TP
+\fBNAMES\fR
+SET NAMES \fIvalue\fR 是
+SET client_encoding TO \fIvalue\fR 的别名。
+.TP
+\fBSEED\fR
+ 为随机数生成器(函数 random)设置内部的种子。 允许的值是介于 0 和 1 之间的浮点数,然后它会被乘以 231-1。
+
+ 我们也可以通过调用函数 setseed 来设置种子:
+.sp
+.nf
+SELECT setseed(\fIvalue\fR);
+.sp
+.fi
+.TP
+\fBTIME ZONE\fR
+SET TIME ZONE \fIvalue\fR 是
+for SET timezone TO \fIvalue\fR 的一个别名。 语法 SET TIME ZONE 允许为时区设置特殊的语法。 下面是有效值的例子:
+.RS
+.TP
+\fB\&'PST8PDT'\fR
+ 加州伯克利的时区。
+.TP
+\fB\&'Portugal'\fR
+ 葡萄牙时区。
+.TP
+\fB\&'Europe/Rome'\fR
+ 意大利时区。
+.TP
+\fB-7\fR
+ UTC 以西 7 小时的时区(等效于 PDT)。
+.TP
+\fBINTERVAL '-08:00' HOUR TO MINUTE\fR
+ UTC 以西 8 小时的时区(等效于 PST)。
+.TP
+\fBLOCAL\fR
+.TP
+\fBDEFAULT\fR
+ 将时区设置为你的本地时区(服务器的操作系统缺省的那个)。
+.RE
+.PP
+ 参阅 Section 8.5 ``Date/Time Types'' 获取有关时区的更多细节。
+.PP
+.PP
+.SH "NOTES 注意"
+.PP
+ 函数 set_config 提供了等效的功能。 参阅 Section 9.13 ``Miscellaneous Functions'' 。
+.SH "EXAMPLES 例子"
+.PP
+ 设置模式搜索路径:
+.sp
+.nf
+SET search_path TO my_schema, public;
+.sp
+.fi
+.PP 
+把日期时间风格设置为传统的 POSTGRES 风格,
+with ``day before month'' input convention:
+.sp
+.nf
+SET datestyle TO postgres, dmy;
+.sp
+.fi
+.PP
+ 把时区设置为加州伯克力, 使用双引号保存时区声明里大写字符的属性 (注意这里的日期/时间格式是 PostgreSQL):
+.sp
+.nf
+SET TIME ZONE 'PST8PDT';
+SELECT current_timestamp AS today;
+
+             today
+-------------------------------
+ 2003-04-29 15:02:01.218622-07
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SET TIME ZONE 扩展了在 SQL 标准里定义的语法。 标准只允许有一个数字时区偏移, 而 PostgreSQL 还允许完整更灵活的时区声明。 所有其它的 SET 特性都是 PostgreSQL 扩展。
+.SH "SEE ALSO 参见"
+RESET [\fBreset\fR(7)], SHOW [\fBshow\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/set_constraints.7 b/src/man7/set_constraints.7
new file mode 100644
index 0000000..80aff22
--- /dev/null
+++ b/src/man7/set_constraints.7
@@ -0,0 +1,31 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET CONSTRAINTS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET CONSTRAINTS \- 设置当前事务的约束模式
+
+.SH SYNOPSIS
+.sp
+.nf
+SET CONSTRAINTS { ALL | \fIname\fR [, ...] } { DEFERRED | IMMEDIATE }
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBSET CONSTRAINTS\fR 设置当前事务里的约束运算的特性。 在 IMMEDIATE 模式下,约束是在每条语句后面进行检查的。 在 DEFERRED 模式下,一直到事务提交时才检查约束。
+.PP
+ 在你把约束的模式修改成 IMMEDIATE 之后,新的约束模式是反作用式地生效的: 任何尚在等待的,需要在事务结束检查地数据修改的约束(在使用 DEFERRED 的时候)都将在执行 SET CONSTRAINTS  命令的时候马上检查。
+.PP
+ 从创建的时候开始,一个约束总是表现为下面三个特性之一: INITIALLY DEFERRED,
+INITIALLY IMMEDIATE DEFERRABLE, 或
+INITIALLY IMMEDIATE NOT DEFERRABLE。 第三个特性不会受 SET CONSTRAINTS影响。
+.PP
+ 目前,只有外键约束被这个设置影响。检查和唯一约束总是立即检查的而不是可推迟的。
+.SH "NOTES 注意"
+.PP
+ 这个命令只在当前事务里修改约束的行为。因此,如果你在事务块外面 (BEGIN/COMMIT 对)执行这个命令, 它将显得没有任何作用那样。如果你希望不在每个事务中发出 SET CONSTRAINTS 也能修改约束的行为, 那么在创建这些约束的时候声明 INITIALLY DEFERRED 或者 INITIALLY IMMEDIATE。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令与 SQL 标准里定义的行为兼容,只不过,在 PostgreSQL 里,它只适用于外键约束。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/set_session_authorization.7 b/src/man7/set_session_authorization.7
new file mode 100644
index 0000000..2637158
--- /dev/null
+++ b/src/man7/set_session_authorization.7
@@ -0,0 +1,49 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET SESSION AUTHORIZATION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET SESSION AUTHORIZATION \- 为当前会话设置会话用户标识符和当前用户标识符
+
+.SH SYNOPSIS
+.sp
+.nf
+SET [ SESSION | LOCAL ] SESSION AUTHORIZATION \fIusername\fR
+SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
+RESET SESSION AUTHORIZATION
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+ 这条命令把当前 SQL 会话环境里的会话用户标识和当前用户标识设置为 username。 这个用户名可以写成一个标识符或者一个字串文本。 使用这个命令,我们可以临时变成一个非特权用户,稍后再切换回超级用户。
+.PP
+ 会话用户标识符一开始设置为(可能经过认证的)客户端提供的用户名。 当前用户标识符通常等于会话用户标识符, 但是可能在 "setuid" 的环境里或者类似的机制里临时改变。 当前用户标识符和权限检查相关。
+.PP
+ 只有在初始会话用户(\fI认证了的用户\fR)有超级用户权限的时候,会话用户标识符才能改变。 否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。
+.PP
+SESSION 和 LOCAL 修饰词和普通 SET [\fBset\fR(7)]
+命令里的作用相同。
+.PP
+DEFAULT 和 RESET 形式重置会话和当前用户标识符为初始认证的用户名。这些形式可以为任何用户执行。
+.SH "EXAMPLES 例子"
+.sp
+.nf
+SELECT SESSION_USER, CURRENT_USER;
+
+ session_user | current_user 
+--------------+--------------
+ peter        | peter
+
+SET SESSION AUTHORIZATION 'paul';
+
+SELECT SESSION_USER, CURRENT_USER;
+
+ session_user | current_user 
+--------------+--------------
+ paul         | paul
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准允许一些其它的表达式出现在文本 username  的位置上,不过这个东西实际上并不重要。 PostgreSQL 允许标识符语法 ("username"),而 SQL 不允许。 SQL 不允许在一个事务的过程中用这条命令; PostgreSQL 没有这个限制,因为没有什么理由不允许这样用。 标准中表示执行这条命令的权限要求是具体实现定义的。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/set_transaction.7 b/src/man7/set_transaction.7
new file mode 100644
index 0000000..b3f9a1d
--- /dev/null
+++ b/src/man7/set_transaction.7
@@ -0,0 +1,59 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SET TRANSACTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SET TRANSACTION \- 设置当前事务的特性
+
+.SH SYNOPSIS
+.sp
+.nf
+SET TRANSACTION
+    [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
+SET SESSION CHARACTERISTICS AS TRANSACTION
+    [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBSET TRANSACTION\fR 命令为当前事务设置特性。 它对后面的事务没有影响。
+\fBSET SESSION CHARACTERISTICS\fR 为一个会话中的每个事务设置缺省的隔离级别。 
+\fBSET TRANSACTION\fR 可以为一个独立的事务覆盖上面的设置。
+.PP
+ 可用的事务特性是事务隔离级别和事务访问模式(读/写或者只读)。
+.PP
+ 事务的隔离级别决定一个事务在同时存在其它并行运行的事务时它能够看到什么数据。
+.TP
+\fBREAD COMMITTED\fR
+ 一条语句只能看到在它开始之前的数据。这是缺省。
+.TP
+\fBSERIALIZABLE\fR
+ 当前的事务只能看到在这次事务第一条查询或者修改数据的语句执行之前的数据。
+.sp
+.RS
+.B "Tip:"
+提示:  说白了,serializable(可串行化)意味着两个事务将把数据库保持在同一个状态, 就好象这两个事务是严格地按照先后顺序执行地那样。
+.RE
+.sp
+.PP
+ 事务隔离级别在事务中第一个数据修改语句 (\fBSELECT\fR,
+\fBINSERT\fR, \fBDELETE\fR,
+\fBUPDATE\fR, \fBFETCH\fR,
+\fBCOPY\fR) 执行之后就不能再次设置。 参阅 Chapter 12 ``Concurrency Control'' 获取有关事务隔离级别和并发性控制的更多信息。
+.PP
+ 事务访问模式决定事务是读/写还是只读。读/写是缺省。如果一个 事务是只读,而且写入的表不是临时表,那么下面的 SQL 命令是不允许的:INSERT, UPDATE,DELETE,和 COPY TO; 而所有的 CREATE,ALTER,和 DROP 命令; COMMENT,GRANT,REVOKE, TRUNCATE;和 EXPLAIN ANALYZE 和EXECUTE 都不允许。这是一个高层次的只读概念,它并不阻止对磁盘的写入。
+.SH "NOTES 注意"
+.PP
+ 会话的缺省事务隔离级别也可以用命令
+.sp
+.nf
+SET default_transaction_isolation = '\fIvalue\fR'
+.sp
+.fi
+ 以及在配置文件里设置。 参考 Section 16.4 ``Run-time Configuration'' 获取更多信息。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 两个命令都在 SQL 标准里定义了。SQL 里的缺省事务隔离级别是 SERIALIZABLE; 在 PostgreSQL 里,缺省隔离级别是 READ COMMITED,但是你可以用上面的描述修改它。 PostgreSQL 并没有提供隔离级别 READ UNCOMMITTED 和 REPEATABLE READ。 因为多版本并发控制,SERIALIZABLE 级别并非真正的可串行化。参阅 Chapter 12 ``Concurrency Control'' 获取细节。
+.PP
+ 在 SQL 标准里还有另外一种事务特性可以用这些命令设置:诊断范围的大小。这个概念只用于嵌入的 SQL。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/show.7 b/src/man7/show.7
new file mode 100644
index 0000000..2673399
--- /dev/null
+++ b/src/man7/show.7
@@ -0,0 +1,93 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "SHOW" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+SHOW \- 显示运行时参数的数值
+
+.SH SYNOPSIS
+.sp
+.nf
+SHOW \fIname\fR
+SHOW ALL
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBSHOW\fR 将显示当前运行时参数的数值。 这些变量可以通过 SET 语句来设置,或者通过编辑 postgresql.conf, 或者通过 PGOPTIONS 环境变量,(在使用libpq或者以 libpq 为基础的应用的时候。) 或者在postmaster启动时用命令行参数来设置。 参阅 Section 16.4 ``Run-time Configuration'' 获取细节。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 运行时参数的名称。可用的参数在 Section 16.4 ``Run-time Configuration'' 里面有文档,以及 SET [\fBset\fR(7)] 手册页。 另外,还有几个参数可以显示,但是不能设置:
+.RS
+.TP
+\fBSERVER_VERSION\fR
+ 显示服务器的版本号。
+.TP
+\fBSERVER_ENCODING\fR
+ 显示服务器断的字符集编码。目前,这个参数只能显示但不能设置, 因为编码是在创建数据库的时候决定的。
+.TP
+\fBLC_COLLATE\fR
+ 显示数据库的字符集区域设置(字符顺序)。目前,这个参数只能显示 但不能设置,因为设置是在 initdb 的时候设置的。
+.TP
+\fBLC_CTYPE\fR
+ 为字符集分类显示数据库的区域设置。目前,这个参数只能显示,不能设置, 因为它的设置是在 initdb 的时候决定的。
+.TP
+\fBIS_SUPERUSER\fR
+ 如果当前事务认证标识符有超级用户权限,则为真。
+.RE
+.PP
+.TP
+\fBALL\fR
+ 显示所有当前会话参数。
+.SH "NOTES"
+.PP
+ 函数 current_setting 生成相同输出。 参阅 Section 9.13 ``Miscellaneous Functions'' 。
+.SH "EXAMPLES 例子"
+.PP
+ 显示当前 DateStyle 的设置:
+.sp
+.nf
+SHOW DateStyle;
+ DateStyle
+-----------
+ ISO, MDY
+(1 row)
+.sp
+.fi
+.PP
+ 显示参数geqo的当前设置:
+.sp
+.nf
+SHOW geqo;
+ geqo
+------
+ on
+(1 row)
+.sp
+.fi
+.PP
+ 显示所有设置:
+.sp
+.nf
+SHOW ALL;
+             name              |                setting
+-------------------------------+---------------------------------------
+ australian_timezones          | off
+ authentication_timeout        | 60
+ checkpoint_segments           | 3
+    .
+    .
+    .
+ wal_debug                     | 0
+ wal_sync_method               | fdatasync
+(94 rows)
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SHOW 命令是 PostgreSQL 扩展。
+.SH "SEE ALSO"
+SET [\fBset\fR(7)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/signal.7 b/src/man7/signal.7
new file mode 100644
index 0000000..8d016d6
--- /dev/null
+++ b/src/man7/signal.7
@@ -0,0 +1,164 @@
+'\" t
+.\" Copyright (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 17:34:08 1993 by Rik Faith (faith at cs.unc.edu)
+.\" Modified Sun Jan  7 01:41:27 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Sun Apr 14 12:02:29 1996 by Andries Brouwer (aeb at cwi.nl)
+.\" Modified Sat Nov 13 16:28:23 1999 by Andries Brouwer (aeb at cwi.nl)
+.\"
+.TH SIGNAL 7  "April 14, 1996" "Linux 1.3.88" "Linux Programmer's Manual"
+.SH NAME
+signal \- 有效信号的清单
+
+.SH "描述 (DESCRIPTION)"
+下面 列出 Linux 支持的 信号. 某些 信号 依赖于 体系结构(architecture). 
+
+首先, POSIX.1 描述了 下列 信号.
+
+.sp
+.PP
+.TS
+l c c l
+____
+lB c c l.
+信号	值	动作	说明
+SIGHUP	\01	A	在控制终端上是挂起信号, 或者控制进程结束
+SIGINT	\02	A	从键盘输入的中断
+SIGQUIT	\03	C	从键盘输入的退出
+SIGILL	\04	C	无效硬件指令
+SIGABRT	\06	C	非正常终止, 可能来自 \fIabort\fP(3)
+SIGFPE	\08	C	浮点运算例外
+SIGKILL	\09	AEF	杀死进程信号
+SIGSEGV	11	C	无效的内存引用
+SIGPIPE	13	A	管道中止: 写入无人读取的管道
+SIGALRM	14	A	来自 \fIalarm\fP(2) 的超时信号
+SIGTERM	15	A	终止信号
+SIGUSR1	30,10,16	A	用户定义的信号 1
+SIGUSR2	31,12,17	A	用户定义的信号 2
+SIGCHLD	20,17,18	B	子进程结束或停止
+SIGCONT	19,18,25		继续停止的进程
+SIGSTOP	17,19,23	DEF	停止进程
+SIGTSTP	18,20,24	D	终端上发出的停止信号
+SIGTTIN	21,21,26	D	后台进程试图从控制终端(tty)输入
+SIGTTOU	22,22,27	D	后台进程试图在控制终端(tty)输出
+.TE
+
+下面的 信号 定义 在 SUSv2 中, 而 POSIX.1 没有 定义.
+
+.sp
+.PP
+.TS
+l c c l
+____
+lB c c l.
+信号	值	动作	说明
+SIGBUS	10,7,10	C	总线错误 (不正确的内存访问)
+SIGPOLL		A	I/O就绪事件 (Sys V). 等同于SIGIO
+SIGPROF	27,27,29	A	系统资源定时器(Profiling timer)超时 
+SIGSYS	12,\-,12	C	用错误参数调用系统例程 (SVID)
+SIGTRAP	5	C	跟踪/断点自陷
+SIGURG	16,23,21	B	套接口上出现 urgent 情况 (4.2 BSD)
+SIGVTALRM	26,26,28	A	虚拟超时时钟 (4.2 BSD)
+SIGXCPU	24,24,30	C	超过了CPU时间限制 (4.2 BSD)
+SIGXFSZ	25,25,31	C	超过了文件大小限制 (4.2 BSD)
+.TE
+
+(这里的 SIGSYS, SIGXCPU, SIGXFSZ, 以及 某些 系统上 的 SIGBUS, 
+Linux 的 缺省动作 (到2.3.27版) 是 A(结束), 而 SUSv2 声明是 C(结束且核心转储).)
+
+下面 是 其他 几个 信号.
+
+.sp
+.PP
+.TS
+l c c l
+____
+lB c c l.
+信号	值	动作	说明
+SIGIOT	6	C	IOT 自陷. 等同于 SIGABRT
+SIGEMT	7,\-,7	
+SIGSTKFLT	\-,16,\-	A	协处理器堆栈错误
+SIGIO	23,29,22	A	I/O 有效信号 (4.2 BSD)
+SIGCLD	\-,\-,18		等同于 SIGCHLD
+SIGPWR	29,30,19	A	电源无效 (System V)
+SIGINFO	29,\-,\-		等同于 SIGPWR
+SIGLOST	\-,\-,\-	A	文件锁丢失
+SIGWINCH	28,28,20	B	窗口大小调整信号 (4.3 BSD, Sun)
+SIGUNUSED	\-,31,\-	A	未使用的信号 (将成为 SIGSYS)
+.TE
+
+这里的 \- 指 信号 不存在; 可能 给出 三个值, 第一个值 一般 用于 alpha 和 sparc,
+中间的值 用于 i386, ppc 和 sh, 最后一个 是 mips 的.
+信号29 在 alpha机上 是
+.B SIGINFO
+/
+.B SIGPWR
+, 而在 sparc机上 是
+.B SIGLOST
+.)
+
+
+.PP
+"动作(Action)"栏 的 字母 有 下列 含义:
+.IP A
+缺省动作是结束进程.
+.IP B
+缺省动作是忽略这个信号.
+.IP C
+缺省动作是结束进程, 并且核心转储.
+.IP D
+缺省动作是停止进程.
+.IP E
+信号不能被捕获.
+.IP F
+信号不能被忽略.
+.PP
+(译注: 这里 "结束" 指 进程 终止 并 释放资源, "停止" 指 进程 停止 运行,
+但是 资源 没有 释放, 有可能 继续 运行.)
+
+.SH "遵循 (CONFORMING TO)"
+POSIX.1
+
+.SH BUGS
+.B SIGIO
+和
+.B SIGLOST
+有 相同的 值. 后者 在 内核 源码 中 被注释 掉了,
+但是 某些 软件 构造的 进程 仍然 认为 信号29 是
+.BR SIGLOST .
+
+.SH "另见 (SEE ALSO)"
+.BR kill (1),
+.BR kill (2),
+.BR setitimer (2)
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.B 2000/10/15
+第一版
+.br
+.BR 2001/11/24
+第一次修订
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/socket.7 b/src/man7/socket.7
new file mode 100644
index 0000000..5f5433f
--- /dev/null
+++ b/src/man7/socket.7
@@ -0,0 +1,511 @@
+'\" t
+.\" Don't change the first line, it tells man that we need tbl.
+.\" This man page is Copyright (C) 1999 Andi Kleen .
+.\" and copyright (c) 1999 Matthew Wilcox. 
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.TH SOCKET  7 "7 May 1999" "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+socket \- Linux 套接字
+.SH 总览
+.B #include  <sys/socket.h>
+.br
+.IB mysocket " = socket(int " socket_family ", int " socket_type ", int " protocol );
+
+.SH 描述
+本手册页介绍了 Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用
+户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的
+.I 协议族
+,如
+.BR PF_INET ", " PF_IPX ", " PF_PACKET
+和
+.I 套接字类型
+,如
+.B 字节流(SOCK_STREAM)
+或
+.BR 数据报(SOCK_DGRAM).
+关于协议族和套接字类型请参考
+.BR socket (2) "."
+
+.SH 套接层函数
+用户通过这些套接字函数发送和接收包, 以及其他套接字操作.
+详细说明参看他们各自的手册页.
+
+.BR socket (2)
+创建套接字,
+.PP
+.BR connect (2)
+与远程套接字地址建立连接
+.PP
+.BR bind (2)
+把套接字和一个本地套接字地址绑定在一起(为套接字分配一个本地协议地址)
+.PP
+.BR listen (2)
+通知套接字接受新的连接
+.PP
+.BR accept (2)
+为新的已完成连接获得新的描述字
+.PP
+.BR socketpair (2)
+返回两个连接的匿名套接字(仅在某些本地族中才有实现,如
+.BR PF_UNIX ")"
+.PP
+.BR send (2),
+.PP
+.BR sendto (2),
+和
+.BR sendmsg (2)
+通过套接字发送数据,而
+.BR recv (2),
+.BR recvfrom (2),
+.BR recvmsg (2)
+从套接字接收数据.
+.BR poll (2)
+和
+.PP
+.BR select (2)
+等待数据到来或准备好接收数据. 除此之外, 标准 I/O 操作如
+.BR write (2),
+.BR writev (2),
+.BR sendfile (2),
+.BR read (2),
+和
+.BR readv (2) 
+也可用来读入(接收)和写出(发送)数据.
+.PP
+.BR getsockname (2)
+用于获得本地套接字地址
+.PP
+.BR getpeername (2)
+用于获得远端套接字地址.
+.BR getsockopt (2)
+和
+.BR setsockopt (2)
+用于设置或取得套接字或协议选项. 
+.BR ioctl (2)
+也可以用来设置或读取一些其他选项.
+.PP
+.BR close (2)
+关闭套接字.
+.BR shutdown (2)
+关闭全双工套接字连接的一部分.
+.PP
+套接字不支持搜索,也不支持调用
+.BR pread (2) 
+或
+.BR pwrite (2)
+进行非 0 位置的操作.
+可以用
+.BR fcntl (2).
+设置
+.B O_NONBLOCK
+标志来实现对套接字的非阻塞 I/O 操作
+.B O_NONBLOCK
+是从 accept 继承来的,然后原来所有会阻塞的操作会返回
+.BR EAGAIN .
+.BR connect (2) 
+在此情况下返回
+.B EINPROGRESS
+错误.
+用户可以通过
+.BR poll (2)
+或者
+.BR select (2)
+等待各种事件.
+
+.PP
+.TS
+tab(:) allbox;
+c s s
+l l l.
+I/O 事件
+事件:轮询标志:发生事件
+读:POLLIN:T{
+新数据到达.
+T}
+读:POLLIN:T{
+(对面向连接的套接字)建立连接成功
+T}
+读:POLLHUP:T{
+另一端套接字发出断开连接请求.
+T}
+读:POLLHUP:T{
+(仅对面向连接协议)套接字写的时候连接断开. 同时发送
+.B SIGPIPE.
+T}
+写:POLLOUT:T{
+套接字有充足的发送缓冲区用于写入新数据.
+T}
+读/写:T{
+POLLIN|
+.br
+POLLOUT
+T}:T{
+发出的
+.BR connect (2)
+结束.
+T}
+读/写:POLLERR:产生一个异步错误.
+读/写:POLLHUP:对方已经单向关闭连接.
+例外:POLLPRI:T{
+紧急数据到达.然后发送
+.B SIGURG.
+T}
+.\" XXX not true currently
+.\" It is no I/O event when the connection
+.\" is broken from the local end using 
+.\" .BR shutdown (2)
+.\" or 
+.\" .BR close (2)
+.\" .
+.TE
+
+.PP
+另外一个的 poll/select 方法是让内核用
+.B SIGIO
+信号来通知应用程序. 要这么用的话你必须用
+.BR fcntl (2)
+设置套接字文件描述符的
+.B FASYNC
+标志,并用
+.BR sigaction (2).
+给
+.B SIGIO
+信号设置一个的有效信号处理句柄.参看下面的
+.I SIGNALS
+的讨论.
+.SH 套接字选项
+套接字选项可以用
+.BR setsockopt (2)
+来设置,用
+.BR getsockopt (2)
+读取所有套接字级别设为
+.B SOL_SOCKET 
+的套接字的套接字选项:
+.TP
+.B SO_KEEPALIVE
+允许在面向连接的套接字上发送 keep\-alive 消息的功能.是一个布尔整数.
+.TP
+.B SO_OOBINLINE
+如果打开这个选项,带外(Out\-of\-Band)数据可以直接放入接收数据流。
+否则,只有接收时打开
+.B MSG_OOB 
+标志, 才接收带外数据.
+.\" don't document it because it can do too much harm.
+.\".B SO_NO_CHECK
+.TP
+.BR SO_RCVLOWAT " 和 " SO_SNDLOWAT
+声明在开始向协议
+.RB ( SO_SNDLOWAT ) 
+或正在接收数据的用户
+.RB ( SO_RCVLOWAT ).
+传递数据之前缓冲区内的最小字节数. 在 Linux 中这两个值是不可改变的,
+固定为 1 字节.
+可以用
+.B getsockopt 
+用来读取它们的值; 
+.B setsockopt 
+总是返回
+.BR ENOPROTOOPT .  
+.TP
+.BR SO_RCVTIMEO " 和 " SO_SNDTIMEO
+发送和接收时的超时设定, 并在超时时报错. 在 Linux 中由
+协议指定, 不能被读写. 它们的功能可用
+.BR alarm (2)
+或者
+.BR setitimer (2).
+来模拟.
+.TP
+.B SO_BSDCOMPAT
+允许 BSD 的 bug\-to\-bug 兼容. 这一项只能在 UDP 协议模块中使用而
+且今后将要取消. 如果允许的话, UDP 套接字接收到的 ICMP 错误将不
+会被传送至用户程序. Linux 2.0 中对于原始套接字也允许 BSD 
+bug\-to\-bug 兼容(报头随机改变,省略广播标识),但在 Linux 2.2
+中取消了这一项. 修改用户程序的方式比较好.
+.TP
+.B SO_PASSCRED
+允许或关闭
+.B SCM_CREDENTIALS
+控制消息的接收.
+更多信息参见
+.BR unix (7). 
+.TP
+.B SO_PEERCRED
+返回连接至此套接字的外部进程的身份验证. 只在 
+.B PF_UNIX 
+套接字中有用.参见 
+.BR unix (7). 
+参数为
+.B ucred 
+结构.只在
+.BR getsockopt .
+中有效.
+.TP
+.B SO_BINDTODEVICE
+将此套接字绑定到一个特定的设备上, 如\(lqeth0\(rq,
+做为指定的接口名字传递. 如果名称是空字符串或此项长度为 0,
+则套接字设备绑定被取消. 过去的选项是一个变长的空零结尾的
+接口名称的字符串, 其最大长度为
+.BR IFNAMSIZ . 
+如果一个套接字被绑定至一接口,
+只有由这个特定接口接收的信息包可以由此套接字处理.
+.TP
+.B SO_DEBUG 
+允许套接字调试.只对有
+.B CAP_NET_ADMIN
+功能或有效用户标识为 0 的进程有效.
+.TP
+.B SO_REUSEADDR
+表示在一个
+.BR bind (2) 
+调用中对提供给它的地址使用的确认规则应该允许重复使用本地地址. 对于
+.B PF_INET
+套接字, 这表示该套接字可以绑定, 除非已有一个活跃的侦听套
+接口绑定到此地址上. 如果这个侦听套接字和一个指定端口绑定为
+.B INADDR_ANY
+时, 它就不能再绑定到任何本地地址的此端口.
+.TP
+.B SO_TYPE
+按整数返回套接字类型(如
+.BR SOCK_STREAM ) 
+只能通过
+.BR getsockopt
+读取. 
+.TP
+.B SO_DONTROUTE
+不通过网关发送, 只能发送给直接连接的主机.可以通过在套接字的
+.BR send (2)
+操作上设置
+.B MSG_DONTROUTE
+标志来实现相同的效果. 其值为布尔型整数的标识.
+.TP
+.B SO_BROADCAST
+设置或获取广播标识. 当选择此选项时, 数据报套接字接收向
+广播地址发送的数据包, 并且可以向广播地址发送数据包. 这一
+选项对于面向流的套接字无效.
+.TP
+.B SO_SNDBUF 
+设置或得到套接字发送缓冲区的最大字节数. 其默认值由 
+.B wmem_default 
+sysctl 设置,最大允许值由
+.B wmem_max
+sysctl 设置.
+.TP
+.B SO_RCVBUF
+设置或得到套接字接收缓冲区的最大字节数。其默认值由 
+.B rmem_default 
+sysctl设置,最大允许值由
+.B rmem_max
+sysctl 设置.
+.TP
+.B SO_LINGER
+设置或获取
+.B SO_LINGER 
+选项的值. 其参数为
+.B linger 
+结构.
+.PP
+.RS
+.nf
+.ta 4n 10n 22n
+struct linger {
+	int	l_onoff;	/* 延时状态(打开/关闭) */
+	int	l_linger;	/* 延时多长时间 */
+};
+.ta
+.fi
+.RE
+.IP
+如果选择此选项,
+.BR close (2)
+或
+.BR shutdown (2)
+将等到所有套接字里排队的消息成功发送或到达延迟时间后
+才会返回. 否则, 调用将立即返回. 而 closing 操作将在后台
+进行. 如果套接字是
+.BR exit (2),
+的一部分关闭时, 它总是在后台延迟进行的.
+.TP
+.B SO_PRIORITY
+设置在此套接字发送的所有包的协议定义优先权.
+Linux 通过这一值来排列网络队列: 根据所选设备排队规则, 
+具有更高优先权的包可以先被处理.对于
+.BR ip (7),
+同时也设置了输出包的 IP 服务类型(TOS)的域.
+.TP
+.B SO_ERROR
+取得并清除未解决的套接字错误. 只有在
+.BR getsockopt .
+时有效. 是一个整数值.
+.SH SIGNALS
+当向一个已关闭(被本地或远程终端)的面向联接的套接字写入时,
+将向该写入进程发送
+.B SIGPIPE
+信号,并返回
+.B EPIPE
+.
+如果写入命令声明了
+.B MSG_NOSIGNAL 
+标识时, 不会发出此信号.
+.PP
+如果与
+.B FIOCSETOWN 
+fcntl 或 
+.B SIOCSPGRP 
+ioctl 一起请求,那么当发生 I/O 事件时发出
+.B SIGIO
+这样我们就可以在信号句柄里使用
+.BR poll (2)
+或
+.BR select (2)
+找出发生事件的套接字.
+另一种选择(在 Linux 2.2 中)是用
+.B F_SETSIG
+fcntl 设置一个实时信号:
+实时信号的处理程序被调用时还会收到它的
+.IR siginfo_t 
+的
+.I si_fd 
+区域中的文件描述符.
+更多信息参见
+.BR fcntl (2)
+.PP
+在某些环境中(例如:多个进程访问单个套接字),
+引发
+.B SIGIO
+的东西在进程对信号作出反应时可能已经消失了.
+如果这样的话, 进程应该再次等待, 因为 Linux 稍后会重发此信号.
+.\" .SH辅助消息
+.SH SYSCTLS 
+可以通过目录
+.B /proc/sys/net/core/* 
+下的文件或者用
+.BR sysctl (2) 
+系统调用来访问内核套接字的网络系统控制(sysctl)信息.
+.TP
+.B rmem_default
+指明套接字接收缓冲区的默认字节数.
+.TP
+.B rmem_max
+指明套接字接收缓冲区的最大字节数, 用户可以通过使用
+.B SO_RCVBUF
+套接字选项来设置此值.
+.TP
+.B wmem_default
+指明套接字发送缓冲区的默认字节数.
+.TP
+.B wmem_max
+指明发送缓冲区的最大字节数,用户可以通过使用套接字的
+.B SO_SNDBUF
+选项来设置它的值.
+.TP
+.BR message_cost " 和 " message_burst 
+设定记号存储桶过滤器, 在存储桶中保存一定数量的外部网络
+事件导致的警告消息.
+.TP
+.B netdev_max_backlog 
+在全局输入队列中包的最大数目.
+.TP
+.B optmem_max
+每个套接字的象 iovecs 这样的辅助数据和用户控制数据的最大长度.
+.\" netdev_fastroute 没有介绍
+.SH IOCTLS
+以上的 IO 控制值可以通过
+.BR ioctl (2)
+来访问:
+
+.RS
+.nf
+.IB error " = ioctl(" ip_socket ", " ioctl_type ", " &value_result ");"
+.fi
+.RE
+
+.TP
+.B SIOCGSTAMP
+返回
+.B timeval 
+类型的结构,其中包括有发送给用户的最后一个包接收时的时间戳。
+被用来测量精确的 RTT (round trip time) 时间.
+.BR "struct timeval" .
+结构说明请参考
+.BR setitimer (2) 
+.\"
+.TP
+.BR SIOCSPGRP
+在异步 IO 操作结束或者接收到紧急数据时,用来设置进程或进程组,
+向它(它们)发送
+.B SIGIO
+或者
+.B SIGURG
+信号, 参数为指向
+.BR pid_t . 
+类型的指针。如果参数为正,则发送信号到相应的进程。如果参数为
+负,则发送信号到此参数绝对值 id 所属的进程组的所有进程。
+如果它没有
+.B CAP_KILL
+功能或者它的有效 UID 不是 0, 进程只能选择它自己或自己的进程组来
+接收信号.
+.TP
+.B FIOASYNC
+改变
+.B O_ASYNC
+标志来打开或者关闭套接字的异步 IO 模式。异步IO模式指的是:当
+新的 I/O 事件发生时,将发出
+.B SIGIO 
+信号或者用
+.B F_SETSIG
+设置的信号.
+.IP
+参数为整形布尔量. 
+.\"
+.TP
+.BR SIOCGPGRP
+获得当前接收
+.B SIGIO 
+或者
+.B SIGURG
+信号的进程或者进程组, 
+如果两个信号都没有设置, 则为 0.
+.PP
+有效的 fcntl:
+.TP
+.BR FIOCGETOWN 
+与 IO 控制中的 SIOCGPGRP 相同.
+.TP
+.BR FIOCSETOWN
+与 IO 控制中的 SIOCSPGRP 相同.
+.SH 注意
+Linux 假设有一半的发送/接收缓冲区是用来处理内核结构, 因此, 
+系统控制的缓冲区是网络可访问的缓冲区的两倍.
+.SH 缺陷
+.B CONFIG_FILTER 
+没有介绍
+.B SO_ATTACH_FILTER 
+和
+.B SO_DETACH_FILTER 
+套接字选项. 在 libpcap 库有此接口的说明
+.SH VERSIONS 版本
+.B SO_BINDTODEVICE 
+在 Linux 2.0.30 中引入. 
+.B SO_PASSCRED 
+是在 Linux 2.2 中引入的新选项.
+sysctl 是在 Linux 2.2. 中引入的新概念。 
+.SH 作者
+本手册页由 Andi Kleen 编写.
+.PP
+.SH 又见
+.BR socket (2),
+.BR ip (7),
+.BR setsockopt (2),
+.BR getsockopt (2),
+.BR packet (7),
+.BR ddp (7) 
+
+.SH "[中文版维护人]"
+.B liguoping <liguoping_11 at sina.com>
+.SH "[中文版最新更新]"
+.BR 2000/11/06
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/start_transaction.7 b/src/man7/start_transaction.7
new file mode 100644
index 0000000..acb0a35
--- /dev/null
+++ b/src/man7/start_transaction.7
@@ -0,0 +1,26 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "START TRANSACTION" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+START TRANSACTION \- 开始一个事务块
+
+.SH SYNOPSIS
+.sp
+.nf
+START TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+ 这条命令开始一个新的事务。如果声明了隔离级别或者读写模式, 那么新事务就使用这个特性,如同执行了 SET TRANSACTION [\fBset_transaction\fR(7)] 一样。在其它方面,这条命令的行为和 BEGIN [\fBbegin\fR(7)] 命令一样。
+.SH "PARAMETERS 参数"
+.PP
+ 参阅 SET TRANSACTION [\fBset_transaction\fR(7)] 获取有关参数含义的信息。
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令兼容 SQL 标准;但是又见 SET TRANSACTION [\fBset_transaction\fR(7)] 的兼容性小节。
+.SH "SEE ALSO 参见"
+BEGIN [\fBbegin\fR(7)], COMMIT [\fBcommit\fR(l)], ROLLBACK [\fBrollback\fR(l)], SET TRANSACTION [\fBset_transaction\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/suffix.7 b/src/man7/suffix.7
new file mode 100644
index 0000000..2d1df13
--- /dev/null
+++ b/src/man7/suffix.7
@@ -0,0 +1,259 @@
+.\" t
+.\" (c) 1993 by Thomas Koenig (ig25 at rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\" 
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\" 
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\' 
+.\" Modified Sat Jul 24 17:35:15 1993 by Rik Faith 
+.\" Modified Sun Feb 19 22:02:32 1995 by Rik Faith 
+.\" Modified Tue Oct 22 23:28:12 1996 by Eric S. Raymond 
+.\" Modified Sun Jan 26 21:56:56 1997 by Ralph Schleicher
+.\" 
+.\" Modified Mon Jun 16 20:24:58 1997 by Nicol醩 Lichtmaier 
+.\" Modified Sun Oct 18 22:11:28 1998 by Joseph S. Myers 
+.\" Modified Mon Nov 16 17:24:47 1998 by Andries Brouwer 
+.\"
+.\" 中文版版权所有 redcandle, Laser www.linuxforum.net 2000
+
+.TH SUFFIXES 7 "April 4, 1996" "Linux" "Linux 程序员手册"
+.SH NAME [命令名]
+suffixes \- 列出文件后缀。 
+.SH DESCRIPTION [描述]
+文件后缀与文件名之间以点(.)间隔,通常包括一个或多个字母。 
+我们用文件后缀来描述文件的内容。很多标准的实用程序,如编译器,
+以后缀来识别文件类型。
+.BR make (1)
+就是基于文件后缀的。
+.PP
+下面是 Linux 下常见的文件后缀:
+.TS
+ l | l
+ _ | _
+ lI |  l .
+ 后缀	文件类型
+ ,v	RCS(Revision Control System(修改控制系统)) 文件 
+ -	备份文件。
+ .C	C++ 源代码文件。
+ .F	带 \fBcpp\fP(1) 的 Fortran 源代码或用 freeze 压缩的文件。
+ .S	汇编源代码。
+ .Y	用 yabba 压缩的文件。
+ .Z	用 \fB compress\fR (1) 压缩的文件。
+ .[0-9]+gf	TeX 普通字体文件
+ .[0-9]+pk	TeX 打包字体文件
+ .[1-9]	相关章节的手册页
+ .[1-9][a-z]	包含子章节的手册页
+ .a	静态对象代码库 
+ .ad	X 应用程序缺省资源文件。 
+ .adb	Ada 体源文件(校注:懂 Ada 的同志请指正)
+ .ads	Ada 描述源文件
+ .afm	PostScript 字体度量
+ .al	Perl 自动加载文件
+ .am	\fB automake\fR (1) 输入文件
+ .arc	\fB arc\fR (1) 档案文件 
+ .arj	\fB arj\fR (1) 档案文件 
+ .asc	PGP ASCII-保护数据
+ .asm	(GNU) 汇编源代码 
+ .au	Audio 声音文件
+ .aux	LaTeX 辅助文件 
+ .avi	(msvideo) 电影 
+ .awk	AWK 程序 
+ .b	LILO 启动加载器镜象
+ .bak	备份文件 
+ .bash	\fB bash\fR (1) 脚本
+ .bb	gcc -ftest-coverage 生成的基础块列表数据
+ .bbg	gcc -ftest-coverage 生成的基础块图形数据
+ .bbl	BibTeX 输出文件 
+ .bdf	X 字体文件 
+ .bib	TeX 数目数据库,BibTeX 输入文件
+ .bm	bitmap 源文件
+ .bmp	bitmap 位图 
+ .bz2	\fB bzip2\fR (1)的压缩文件
+ .c	C 源代码 
+ .cat	信息目录文件
+ .cc	C++ 源代码
+ .cf	配置文件 
+ .cfg	同上
+ .cgi	可以产生 web 页的脚本或程序
+ .class	Java 已编译文件 
+ .conf	配置文件 
+ .config	同上
+ .cpp	\fI (等价于 .cc) \fR
+ .csh	\fB csh\fR (1) 脚本 
+ .cxx	\fI (等价于 .cc) \fR
+ .dat	数据文件 
+ .deb	Debian 软件包 
+ .def	Modula-2 语言的定义模块的源代码 
+ .def	其它定义文件 
+ .desc	用 munpack 解压的邮件信息的初始化部分 
+ .diff	文件不同之处 (diff(1) 的输出文件) 
+ .dir	dbm 数据库目录文件 
+ .doc	文档文件 
+ .dtx	LaTeX 包的源文件 
+ .dvi	TeX's 设备无关的输出文件 
+ .el	Emacs-Lisp 源代码 
+ .elc	编译后的 Emacs-Lisp 文件 
+ .eps	压缩过的 PostScript 
+ .f	Fortran 源代码 
+ .f77	Fortran 77 源代码 
+ .f90	Fortran 90 源代码 
+ .fas	预编译的 Common-Lisp 
+ .fi	Fortran 包含文件 
+ .fig	FIG 图象文件 (\fB xfig\fR (1)调用) 
+ .fmt	TeX 格式文件 
+ .gif	Compuserve Graphics Image File format(图象文件) 
+ .gmo	GNU 格式信息目录
+ .gsf	Ghostscript 字体 
+ .gz	用 \fB gzip\fR (1) 压缩的文件
+ .h	C 或 C++ 头文件
+ .help	帮助文件 \fR
+ .hf	等价于 \fI .help\fR 
+ .hlp	等价于 \fI .help\fR 
+ .htm	穷人的(有些系统扩展名只能三个字符)\fI .html
+ .html	WWW 中使用的 HTML 文档
+ .hqx	7-位编码的 Macintosh 文件
+ .i	预处理过的 C 程序 
+ .icon	位图源文件
+ .idx	超文本或数据库系统用的参考书目或数据索引
+ .image	位图源文件
+ .in	配置摸板,常用于 GNU Autoconf 
+ .info	Emacs info 浏览器文件
+ .info-[0-9]+	info 文件 
+ .ins	LaTeX 打包的用于 docstrip 的安装文件
+ .java	Java 源代码 
+ .jpeg	Joint Photographic Experts Group format 
+ .jpg	有些系统扩展名只能三个字符\fI .jpeg \fR 
+ .kmap	\fB lyx\fR (1) 键盘布局 
+ .l	等价于 \fI .lex\fR 或 \fI .lisp\fR 
+ .lex	\fB lex\fR (1) 或 \fB flex\fR (1) 文件
+ .lha	lharc 档案文件 
+ .lib	Common-Lisp 库文件 
+ .lisp	Lisp 源代码 
+ .ln	files for use with \fB lint\fR (1) 
+ .log	日志文件, 多见于 TeX 
+ .lsm	Linux Software Map entry(软件列表?)
+ .lsp	Common-Lisp 源代码
+ .lzh	lharc 档案文件
+ .m4	\fB m4\fR (1) 源代码
+ .mac	宏命令文件 
+ .man	手册页 (通常是源文件,有些是格式化过的) 
+ .map	map 文件
+ .me	使用 me 宏命令包的 Nroff 源文件
+ .mf	Metafont (Tex 使用的字体) 资源 
+ .mm	\fB groff\fR (1) 的 mm 格式的文件
+ .mo	信息目录二进制文件(校注:本地化文件)
+ .mod	Modula-2 执行模块源代码 
+ .mov	(quicktime) 电影
+ .mp	Metapost 资源 
+ .mpe	电影 
+ .o	 对象文件
+ .old	 旧的或备份文件 
+ .orig	 \fB patch\fR (1) 产生的备份或原始文件 
+ .out	 输出文件, 一般是可执行程序(a.out) 
+ .p	 Pascal 源代码 
+ .pag	 dbm 数据库数据文件 
+ .patch	 \fB patch\fR (1) 用的文件的差别文件
+ .pbm	 portable bitmap format(可移植位图格式) 
+ .pcf	 X11 字体 
+ .pdf	 AdobePortableDataFormat(用Acrobat/\fBacroread\fR或\fBxpdf\fR查看 ) 
+ .perl	 Perl 源代码 
+ .pfa	 PostScript 字体定义文件, ASCII 格式 
+ .pfb	 PostScript 字体定义文件, 二进制格式 
+ .pgm	 portable greymap format(可移植灰度图格式)
+ .pgp	 PGP 二进制数据
+ .ph	 Perl 头文件
+ .pid	 存储后台程序信息的文件(e.g. crond.pid)
+ .pl	 TeX 属性列表 或 Perl 库文件 
+ .pm	 Perl 模块
+ .png	 Portable Network Graphics file(可移植网络图象文件) 
+ .po	 信息目录资源(校注:本地化资源文件)
+ .pod	 \fB perldoc\fR (1) 文件 
+ .ppm	 portable pixmap format(可移植点图格式) 
+ .pr	 bitmap source(位图资源) 
+ .ps	 PostScript 文件
+ .py	 Python 源代码 
+ .pyc	 python 编译后文件 
+ .qt	 quicktime movie(电影)
+ .r	 RATFOR 资源 (已过时) 
+ .rej	 \fB patch\fR (1) 不能用的补丁 
+ .rpm	 RedHat 软件包 
+ .rtf	 Rich Text Format file(富文本文件) 
+ .rules	 rules for something(规则文件)
+ .s	 assembler source(汇编源代码) 
+ .sa	 a.out 共享库的存根库
+ .sc	 \fB sc\fR (1) 电子表格命令
+ .sgml	 SGML 源文件 
+ .sh	 \fB sh\fR (1) 脚本 
+ .shar	 \fB shar\fR (1) 产生的档案文件 
+ .so	 共享库或动态可载入对象 
+ .sql	 SQL 资源 
+ .sqml	 SQML 结构或查询程序
+ .sty	 LaTeX 类型文件 
+ .sym	 Modula-2 已编译的定义模块 
+ .tar	 \fB tar\fR (1) 产生的档案文件 
+ .tar.Z	 \fB compress\fR (1) 压缩的tar档案文件 
+ .tar.bz2	 \fB bzip2\fR (1) 压缩的tar档案文件
+ .tar.gz	 \fB gzip\fR (1) 压缩的tar档案文件 
+ .taz	 \fB compress\fR (1) 压缩的tar档案文件 
+ .tex	 TeX 或 LaTeX 资源 
+ .texi	 等价于 \fI .texinfo\fR 
+ .texinfo	 Texinfo 文档资源 
+ .text	 文本文件 
+ .tfm	 TeX font metric file 
+ .tgz	 \fB gzip\fR (1) 压缩的tar档案文件 
+ .tif	 poor man's \fI .tiff(图象) \fR
+ .tiff	 Tagged Image File Format(图象) 
+ .tk	 tcl/tk 脚本 
+ .tmp	 临时文件 
+ .tmpl	 临时文件 
+ .txt	 等价于 \fI .text\fR 
+ .uu	 等价于 \fI .uue\fR 
+ .uue	 \fB uuencode\fR (1) 编码的二进制文件 
+ .vf	 TeX 虚拟字体文件 
+ .vpl	 TeX 虚拟属性列表 
+ .w	 Silvio Levi's CWEB 
+ .wav	 波形声音文件
+ .web	 Donald Knuth's WEB(唐纳得.可鲁梭的 WEB) ??
+ .xbm	 X11 位图源文件
+ .xml	 eXtended Markup Language file(扩展标记语言文件)
+ .xsl	 XSL stylesheet 
+ .xpm	 X11 点图源文件
+ .xs	 h2xs 生成的 Perl 的 xsub 文件
+ .y	 \fB yacc\fR (1) 或 \fB bison\fR (1)(分析器生成器)文件
+ .z	 \fB pack\fR (1) (或旧版 \fB gzip\fR (1)) 产生的压缩文件 
+ .zip	 \fB zip\fR (1) 档案文件 
+ .zoo	 \fB zoo\fR (1) 档案文件 
+ ~	 Emacs 或 \fB patch\fR (1) 备份文件 
+ rc	 开始 (`运行控制') 文件, 如. \fI .newsrc\fR 
+.TE
+.SH "CONFORMS TO [遵循]"
+一般 UNIX 约定 
+.SH BUGS
+本列表尚有遗漏 \fR
+.SH "SEE ALSO [另见]"
+.BR file (1), 
+.BR make (1) 
+
+.SH "[中文版维护人]"
+.B RedCandle <redcandle51 at chinaren.com>
+.SH "[中文版最新更新]"
+.B 2000/11/10
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/tcp.7 b/src/man7/tcp.7
new file mode 100644
index 0000000..64275d2
--- /dev/null
+++ b/src/man7/tcp.7
@@ -0,0 +1,306 @@
+.\" This man page is Copyright (C) 1999 Andi Kleen .
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.TH TCP 7 "25 Apr 1999" "Linux Man Page" "Linux Programmer's Manual" 
+.\" 中文版 Copyright (c) 2000 LetBright, Laser 和 www.linuxforum.net
+
+.SH NAME
+tcp \- 传输控制协议 (TCP)
+.SH 总缆 SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <netinet/in.h>
+.br
+.B tcp_socket = socket(PF_INET, SOCK_STREAM, 0);
+.SH 描述 DESCRIPTION
+本协议是对 RFC973, RFC1122 和 RFC2001 定义的协议
+及其 NewReno 和 SACK 扩充部份实现的。
+它在建立在互联网协议
+.BR ip (7)
+之上的两个套接字之间提供了可靠的面向数据流的全双工连接。
+TCP 协议确保了数据按序到达并在数据包丢失时自动重发。
+它产生和校验每个数据包的校验和 (checksum)
+用以捕捉数据传输时错误。TCP 不保留记录的上下限。
+
+初始的 TCP 接口不包含远端或本地址并且没有规定明确。
+在产生一个出站 (outgoing) TCP 连接时使用
+.BR connect (2)
+来与另个套接字建立一个网络接口。
+在接收一个入站 (incoming) 连接时,套接字使用
+.BR bind (2) 
+先取得本地地址和端口,然后调用
+.BR listen (2)
+使套接字进入侦听状态。
+随后可以用
+.BR accept (2).
+接受为每一个入站 (incoming) 连接建立的新套接字。
+一个已经经过
+.B accept
+或
+.B connect
+成功调用的套接字表示它已完全明确,可以进行数据传送。
+在侦听状态或尚未建立连接的网络接口之间数据传送将不能进行。
+
+Linux 2.2 支持 RFC1323 TCP 高性能扩展。这包括采用大 TCP 数据滑移
+窗以支持高延时或高带宽下的多连接。为实现这些功能,必须增加接
+收与发送的数据缓存区。它们可以使用
+.B net.core.wmem_default
+和
+.B net.core.rmem_default
+sysctl 进行全局设定,或用
+.B SO_SNDBUF 
+和
+.B SO_RCVBUF 
+套接字选项对套接字进行单独设定。
+套接字缓存区的最大尺寸,受到由全局变量
+.B net.core.rmem_max
+和
+.B net.core.wmem_max
+两个 sysctl 限制。详细细节,请参见
+.BR socket (7).
+.PP 
+TCP 支持紧急数据。紧急数据用来通知接收方,在数据流中有需要尽快处理
+的重要信息。发送紧急数据,需在
+.BR send (2).
+中指定
+.B MSG_OOB
+选项。当紧急数据接收后,内核发送
+.B SIGURG
+信号到读进程或者那些用 ioctl 设置了
+.B FIOCSPGRP
+或
+.B FIOCSETOWN 
+套接字的进程或进程组.
+当打开了
+.B SO_OOBINLINE
+套接字选项, 那么紧急数据被放入普通数据流中。
+(可以用
+.B SIOCATMARK
+ioctl 来测试), 否则只有设置了
+.BR sendmsg (2)
+中的
+.B MSG_OOB
+标志时,数据才能被接收。 
+
+.SH 地址格式 ADDRESS FORMATS
+TCP 是建立在 IP 之上(参见
+.BR ip (7)).
+.BR ip (7)
+定义定义的地址格式也适用于 TCP.
+TCP只支持点对点通讯,不支持全局及多址广播。
+.SH 系统控制 SYSCTLS
+可以通过访问
+.B /proc/sys/net/ipv4/* 
+目录下的文件
+或通过
+.BR sysctl (2)
+接口进行访问这些 sysctl.
+此外大多数 IP sysctl 也同样适用于 TCP; 参见
+.BR ip (7). 
+.TP
+.B tcp_window_scaling
+打开 RFC1323 协议中 TCP 滑移数据窗尺寸调整.
+.TP
+.B tcp_sack
+打开 RFC2018 协议中 TCP 选择性确认.
+.TP
+.B tcp_timestamps
+打开 RFC1323 协议中 TCP 时间戳.
+.TP
+.B tcp_fin_timeout
+规定强迫关闭套接字前,等待最后结束数据包的秒数。
+这确实与 TCP 协议中有关规定相违背。
+但这是防止拒绝服务攻击所要求的。
+.TP
+.B tcp_keepalive_probes
+丢弃数据包前,进行最大 TCP 保持连接侦测. 保持连接仅在
+.B SO_KEEPALIVE 
+套接字选项被打开时才被发送.
+.TP
+.B tcp_keepalive_time
+从不再传送数据到向连接上发送保持连接信号之间所需的秒数,
+默认为 10800 秒(3 小时)。
+.TP
+.B tcp_max_ka_probes
+在一定时间发送保持连接时间侦测包的数量。为防止突发信号,此
+值不宜设置太高。
+.TP
+.B tcp_stdurg
+使 TCP 紧急指针字段遵循在 RFC973 协议中的严格解释。缺省情况下,
+紧急指针字段使用与 BSD 相兼容,指针指向紧急数据后的第一个字节。
+在 RFC973 协议中是指向紧急数据后的最后一个字节。打开这一选项
+可能造成操作互换性问题。
+.TP
+.B tcp_syncookies
+打开 TCP 同步标签(syncookie),内核必须打开了
+.BR CONFIG_SYN_COOKIES
+项进行编译. 同步标签(Syncookie)防止一个套接字在有过多试图连接到
+达时的过载。当使用同步标签(syncookie)时,客户机可能探测不到
+一个超时时间短的过载主机。
+.TP
+.B tcp_max_syn_backlog
+每个接口中待发数据队列 (backlog) 长度。Linux 2.2 中,在
+.BR listen (2)
+中的定义只说明了已建立的套接字中待发数据队列(backlog)长度。
+每个侦测套接字的还未建立的套接字(在
+.B SYN_RECV
+状态中的)的最大队列长度用这个 sysctl 设置。
+当更多的连接请求到达时,Linux
+系统将开始丢弃数据包。当同步标签(syncookie)被设置成打开,
+数据包仍能被回应时,这个值将被忽略。
+.TP
+.B tcp_retries1
+定义放弃回应一个 TCP 连接请求前发送重试信号的次数。
+.TP
+.B tcp_retries2
+定义放弃在已建立通讯状态下一个 TCP 数据包前重发的次数。
+.TP
+.B tcp_syn_retries
+定义在放弃发送初始同步数据包(SYN packet)到远端主机前重试的次数并返回出
+错消息,此值必须小于255。这仅对出站(outgoing)连接超时有效;
+对于进站(incoming)连接重发数由
+.BR tcp_retries1
+定义。
+.TP
+.B tcp_retrans_collapse
+在重发时试图发送全尺寸数据包。
+用来解决一些堆栈中的 TCP 缺陷(BUG)。
+.\" tcp_rfc1337 并未列入文档因为它过含糊和混乱。
+.SH 接口选项 SOCKET OPTIONS
+设置或取得 TCP 接口选项,调用
+.BR getsockopt (2)
+进行读操作或调用
+.BR setsockopt (2)
+将接口系列选项参数传送到
+.BR SOL_TCP
+中去.另外,大多数
+.B SOL_IP 
+接口
+选项对 TCP 接口也适用。更多资料,请参见
+.BR ip (7).
+.TP
+.B TCP_NODELAY
+关闭 Nagle 算法。这意味着数据包将尽可能快地被发送而没有因有网
+络中更多的数据包造成的延时,期待一个整数表示的布尔标志。
+.TP
+.B TCP_MAXSEG 
+设置或接收最大出站 TCP 数据段尺寸。如果这个选项在建立连接前的
+设置,它将改变发送到另一端初始信息包中的 MSS 值。这个值大于
+MTU 接口值将被忽略而不起作用。
+.TP
+.B TCP_CORK
+设置此项将不发送部份帧。所有排队的部份帧只在此项清除后,
+才能发送。在调用
+.BR sendfile (2)
+前准备数据报头或对网络吞吐量进行优化有用处。
+此选项不能与
+.BR TCP_NODELAY
+联用.
+.SH 输入输出控制字 IOCTLS
+这些 ioctl 可以用
+.BR ioctl (2)
+进行访问。正确调用句法为:
+.PP
+.RS
+.nf
+.BI int " value";
+.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
+.fi
+.RE
+.TP
+.B FIONREAD
+返回接收缓存中排队的未读数据的数量。
+变量参数是指向一个整数的指针。
+.TP
+.B SIOCATMARK
+如果用户程序已经接收了所有紧急数据,此项返回值为 0。它与
+.BR SO_OOBINLINE
+联用。变量参数是对测试结果,指向一个整数的指针。
+.TP
+.B TIOCOUTQ
+返回在接口(socket)发送队列中待发送数据数,
+该指针返回是一个整数数值。
+.SH 出错处理 ERROR HANDLING
+当网络发生错误时,TCP 协议将尝试重新发送数据包,
+当重发一定失败次数后,产生超时错
+.B ETIMEDOUT 
+或报告在此连接上最后出错消息。
+.PP
+有时程序需要更快地侦测到出错状态。这可以通过打开
+.B SOL_IP
+级别的
+.B IP_RECVERR
+接口选项。当此项打开后,所有入站 (incoming) 错误
+被立即送到用户程序中。小心使用该选项\-它使 TCP 协议对路由的改
+变和其他正常网络状态变化的容错性下降。
+.SH 附注 NOTES
+当建立一个连接时发生错误引发一个对
+.B SIGPIPE
+接口写操作,此操作
+仅当
+.B SO_KEEPOPEN
+接口选项被设置时才能进行。
+.PP
+TCP 并不具有真正的额外频带(out-of-band)数据; 虽然它可以有紧
+急数据。在 Linux 中这意味着如果有其他端发送紧急数据时,旧的紧
+急数据将被当作普通数据插入数据流中。(即使
+.B SO_OOBINLINE
+值没有被设置).这与基于 BSD 堆栈定义不同.
+
+.PP
+缺省状态下,Linux 使用与 BSD 兼容的紧急数据指针字段。这与 RFC1122
+协议相违背, 但这是与其他堆栈协议相互操作性所要求。它可以用
+.B tcp_stdurg
+sysctl 加以改变.
+
+.SH 已知错误 ERRORS
+.TP
+.B EPIPE
+另一端意外关闭了套接字连接或对一个关闭了的套接字进行读操作。
+.TP
+.B ETIMEDOUT
+一段时间后,另一端不确认重发数据。
+.TP
+.B EAFNOTSUPPORT
+在
+.I sin_family
+传递套接字地址类型而不是在
+.BR AF_INET 中的。
+.PP
+任何定义为
+.BR ip (7)
+出错或普通套接字出错可能返回为 TCP 出错.
+.PP
+
+.SH 不足之处 BUGS
+不是所有的错误都列入了文档。
+.PP 没有描述有关 IPv6 的东西。
+.PP
+没有描述有关透明代理的选项
+.SH 版本 VERSIONS
+有关 sysctl 是在 Linux 2.2 中新增的。 
+.B IP_RECVERR 
+是 Linux 2.2 中的新特性。
+.B TCP_CORK 
+在 2.2 中是新的内容.
+.SH 又见 SEE ALSO
+.BR socket (7),
+.BR socket (2),
+.BR ip (7),
+.BR sendmsg (2),
+.BR recvmsg (2).
+.br
+RFC793 协议中对 TCP 有关描述.
+.br
+RFC1122 协议中对 TCP 要求和一份关于 Nagle 算法描述。
+.br
+RFC2001 协议中一些 TCP 算法。
+
+.SH "[中文版维护人]"
+.B LetBright <letbright at netease.com>
+.SH "[中文版最新更新]"
+.B 2000/10/21
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/truncate.7 b/src/man7/truncate.7
new file mode 100644
index 0000000..0b1fef0
--- /dev/null
+++ b/src/man7/truncate.7
@@ -0,0 +1,37 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "TRUNCATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+TRUNCATE \- 清空一个表
+
+.SH SYNOPSIS
+.sp
+.nf
+TRUNCATE [ TABLE ] \fIname\fR
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBTRUNCATE\fR 快速地从一个表中删除所有行。它和无条件的 DELETE 有同样的效果,不过因为它不做表扫描,因而快得多。 在大表上最有用。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 要清空的表名字(可以有模式修饰)。
+.SH "NOTES 注意"
+.PP
+ 如果从其它表有到这个表的外键引用,那么就不能使用 TRUNCATE。 在这种情况下检查有效性要求进行表扫描,而 TRUNCATE 的概念是不做这样的事情。
+.PP
+\fBTRUNCATE\fR 不会运行任何在该表上存在的 ON DELETE 触发器。
+.SH "EXAMPLES 例子"
+.PP
+ 截断表 bigtable∶
+.sp
+.nf
+TRUNCATE TABLE bigtable;
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 TRUNCATE 。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/udp.7 b/src/man7/udp.7
new file mode 100644
index 0000000..fca9ec8
--- /dev/null
+++ b/src/man7/udp.7
@@ -0,0 +1,139 @@
+.\" 本man页版权所有(C)1999 Andi Kleen<ak at muc.de>.
+.\" 可能已作修改的该页拷贝版本要获得授权许可,需一字不捺地包括本header(头标识),而
+.\" 且在作了较大修改的情况下,修改作者和日期需添加到header中.
+.\" 中文版版权所有 riser,BitBIRD www.linuxforum.net 2000
+.TH UDP  7 "1998年10月2日" "Linux 手册页" "Linux 程序员手册"
+.SH NAME (名字)
+udp \- IPv4 上面的 UDP 协议.
+.SH SYNOPSIS (总览)
+.B #include <sys/socket.h>
+.br
+.B #include <netinet/in.h>
+.br
+.B udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
+
+.SH DESCRIPTION(描述)
+这是一个 RFC768 中的用户数据报协议的实现.
+它实现无连接的, 不可靠的数据报信息包服务.
+信息包可能在它们传输到达之前重新排序或者重复.
+UDP 通过生成和检查校验和来俘获传输错误.
+
+当创建一个 UDP 套接字时, 它的本地和远程地址是不确定的.
+可以使用带一个有效目的地址作为参数的
+.BR sendto (2)
+或者
+.BR sendmsg (2)
+立即发送数据报.如果套接字上调用了
+.BR connect (2)
+时, 则设置默认的目的地址, 数据报可以使用
+.BR send (2)
+或者
+.BR write (2)
+发送而不需要指定目的地址.
+也可以通过传递一个地址给
+.BR sendto (2)
+或者
+.BR sendmsg (2)
+来发送到其它目的地址.
+为了接收信息包,套接字必须首先用
+.BR bind (2)
+绑定一个本地地址,
+如果没有这么做, 
+套接字层在第一个用户接收请求时将自动分配一个本地端口.
+
+所有接收操作只返回一个信息包.
+当信息包小于所传递的缓冲区时, 则只返回那些数据, 
+当信息包大于所传递的缓冲区时,则截断信息包并设置
+.B MSG_TRUNC
+标志.
+
+IP 选项可以使用描述于
+.BR ip "(7)"
+中的套接字选项发送或接收.
+只有打开了合适的 sysctl 时,
+内核才处理它们(不过即使关闭了它们, 仍然会传递给用户).
+参见
+.BR ip "(7)" .
+
+如果设置了
+.B MSG_DONTROUTE
+标志,则发送时目的地址必须指向一个本地接口地址,
+而且信息包只发到该接口.
+
+当 UDP 的总长超过接口 MTU(Maximum Transmission Unit 最大传输单元)时,
+UDP 会对信息包进行分段.
+一个更为网络友好的可选方法是使用 path MTU discovery(路径MTU发现),
+它描述于
+.BR ip (7)
+中的
+.B IP_PMTU_DISCOVER
+部分.
+
+.SH ADDRESS FORMAT (地址格式)
+UDP 使用 IPv4 的
+.B sockaddr_in
+地址格式,其描述于
+.BR ip (7)
+中.
+
+.SH ERROR HANDLING (错误处理)
+所有重大错误都会以错误返回值的方式传递给用户,
+即使套接字没有连接亦如此.这种处理方式有别于许多其它的
+BSD 套接字实现方法, 除非套接字连接上, 否则那些方法不会传递任何错误,
+Linux 的处理方式遵循
+.B RFC1122
+的要求.
+
+为了与以前的代码兼容,可以设置
+.B SO_BSDCOMPAT
+SOL_SOCKET 选项令只在套接字已连接的情况下接收远程错误(
+.B EPROTO
+和
+.BR EMSGSIZE )
+除外.
+最好是修复代码并适当地处理错误, 而不要打开该选项.
+本地产生的错误总是传递.
+
+当打开了
+.B IP_RECVERR
+选项时, 所有错误可以存储在套接字错误队列中,
+并可以通过带
+.B MSG_ERRQUEUE
+标识设置的
+.BR recvmsg (2)
+来接收.
+
+.SH ERRORS (错误)
+所有列在
+.BR socket (7)
+或
+.BR ip (7)
+中的错误都可以在一个 UDP 套接字上收发时收到.
+
+.B ECONNREFUSED
+没有与目的地址相关联的接收者.
+这可能由于在前面一个通过该套接字发送的信息包而引发.
+
+.SH VERSIONS(版本)
+IP_RECVERR 是 Linux 2.2 中的新功能.
+
+.SH CREDITS(尾注)
+本手册页的作者为 Andi Kleen.
+
+.SH SEE ALSO(另见)
+.BR ip (7),
+.BR socket (7),
+.BR raw (7).
+
+RFC768: 用户数据报协议.
+.br
+RFC1122: 主机需求
+.br
+RFC1191: 描述 path MTU discovery (路径MTU查找).
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/07/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/unicode.7 b/src/man7/unicode.7
new file mode 100644
index 0000000..fd18c3f
--- /dev/null
+++ b/src/man7/unicode.7
@@ -0,0 +1,193 @@
+.\" Copyright (C) Markus Kuhn, 1995
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.\" 1995-11-26 Markus Kuhn <mskuhn at cip.informatik.uni-erlangen.de>
+.\" First version written
+.\" 中文版版权所有 mapping, Laser www.linuxforum.net 2000
+.TH UNICODE 7 "1995-12-27" "Linux" "Linux Programmer's Manual"
+.SH NAME
+Unicode \- 16 位统一超级字符集
+.SH 描述 (DESCRIPTION)
+国际标准
+.B ISO 10646
+定义了
+.BR "通用字符集 (Universal Character Set, UCS)".
+.B UCS
+包含所有别的字符集标准里的字符,并且保证了
+.BR "互换兼容性 (round-trip compatibility)",
+也就是说,当一个字符串在
+.B UCS
+和任何别的字符集之间转换时, 转换表可以保证不会有信息丢失现象发生.
+
+.B UCS
+包含了表示几乎所有已知的语言所必需的字符.该字符集既包
+括那些使用扩展拉丁语的语言,也包括下面的这些语言: Greek, 
+Cyrillic, Hebrew,Arabic, Armenian, Gregorian, Japanese, 
+Chinese, Hiragana, Katakana, Korean, Hangul, Devangari, 
+Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, 
+Kannada, alayam, Thai, Lao, Bopomofo,等等.而另外的语言,例如
+Tibetian, Khmer, Runic, Ethiopian, Hieroglyphics, 
+各种 Indo-European 语言, 还有许多其他的语言, 正在被加入其
+中.1993 年发布该标准的时候, 还不清楚怎样才能对后面加入的这些
+语言中的大部分作更好的编码. 另外, 这些语言所需的字符, 以及由
+TeX, PostScript, MS-DOS, Macintosh, Videotext, OCR, 还有很
+多字处理系统所提供的大量的图形, 印刷体, 数学和科学符号, 都已
+被包括进来, 还包括了一些特别编码以保证和所有其它已存在字符集
+标准的可逆转换兼容性.
+
+
+.B UCS
+标准 (ISO 10646) 描述了一个 31 位字符集的体系, 不过, 目前
+只使用了前面 65534 个编码位置 (0x0000-0xfffd, 它们被称为
+.BR "基本多语言块  (Basic Multilingual Plane,BMP))",
+分配给了字符, 而且我们
+估计只有那些很古怪的字符(比如. Hieroglyphics)为了专门
+的科学目的, 才会在将来的某个时候, 需要 16 位的 BMP 之外的部分.
+
+从 0x0000 到 0x007f 之间的
+.B UCS
+字符和经典
+.B US-ASCII
+字符集是一样的,
+而从 0x0000 到 0x00ff 之间的字符等于
+.B ISO 8859-1 Latin-1
+字符集.
+.SH 组合字符 (COMBINING CHARACTERS)
+一些
+.B UCS
+编码被分配给了
+.BR "组合字符(combining characters)".
+这样的情形有点类似于打字机上的重音键. 一个组合字符只是
+给前面的字符添加一个重音. 在
+.BR UCS
+里最重要的重音字符都有他们自己的编码,
+不过, 组合字符机制允许给任一字符添加重音和其他的可识别记号.
+组合字符总是跟在那些他们所修饰的字符后面. 例如,德语符号 Umlaut-A 
+(带分音符的大写拉丁字母 A)既可以表示为
+.B UCS
+编码 0x00c4, 也可以
+用一个正常的"大写拉丁字母 A"后面跟一个"组合分音符号":
+0x0041 0x0308 来表示.
+.SH 实现级别 (IMPLEMENTATION LEVELS)
+由于不是所有系统都支持象组合字符这样的高级机制, ISO 10646
+指明了
+.BR UCS
+的三种实现级别:
+.TP 0.9i
+级别 1 (Level 1)
+不支持组合字符和 Hangul Jamo 字符(朝鲜语的一种更复
+杂的专用的编码, Hangul 音节编码成两或三个亚字符).
+.TP
+级别 2 (Level 2)
+类似于级别1, 却在一些语言里面也支持一些组合字符.
+(比如. Hebrew, Arabic, Devangari, Bengali, Gurmukhi,
+Gujarati, Oriya, Tamil, Telugo, Kannada, Malayalam, Thai 和 Lao).
+.TP
+级别 3 (Level 3)
+支持所有
+.B UCS
+字符.
+.PP
+Unicode 协会发布的 Unicode 1.1 标准和 ISO 10646 所描述的
+那样, 在第 3 执行级别只包括了
+.B UCS (基本多语言块 Basic Multilingual Plane).
+Unicode 1.1 还为一些 ISO 10646 的字符定义加
+入了一些语义定义.
+.SH LINUX 下的 UNICODE (UNICODE UNDER LINUX)
+在 Linux 下, 为了降低组合字符的实现复杂性, 目前只包括了执
+行级别 1 下的
+.B BMP.
+更高的执行级别更适合于专门的字处理格式,
+而不是一个普通的系统字符集. 在 linux 下 C 的类型
+.B wchar_t
+是一个
+有符号位的 32 位整型并且其值解释为
+.B UCS4
+编码.
+
+本地化设置指明系统字符编码是使用诸如
+.B UTF-8
+还是
+.BR "ISO 8859-1" 这样的编码.
+象库函数
+.BR wctomb,
+.BR mbtowc,
+或者
+.B wprintf
+就可以用于内部
+.B wchar_t
+字符及字符串与系统字符编码之间做转换.
+.SH 私有区 (PRIVATE AREA)
+在
+.BR BMP
+里, 0xe000 到 0xf8ff 的范围被标准保留做私用因而永远不会
+被分配给任何字符. 对于 Linux 社区, 该私有区被再细分为可以被任何终端用户
+独立使用的 0xe000 到 0xefff 的范围, 以及从 0xf000 到 0xf8ff 给所有 linux
+用户所共用的 linux 区.H. Peter Anvin(<Peter.Anvin at linux.org>,
+Yggdrasil Computing,Inc) 现在维护登记分配到 linux 区的字符.
+该区包括一些 Unicode 中缺少的 DEC VT100 的图形字符, 这使控制台
+的字体缓冲区可以直接获得这些字符, 该区还包括一些象 Klingon
+这样的古老语言所使用的字符.
+.SH 文献 (LITERATURE)
+.TP 0.2i
+*
+Information technology \- Universal Multiple-Octet Coded Character
+Set (UCS) \- Part 1: Architecture and Basic Multilingual Plane.
+International Standard ISO 10646-1, International Organization
+for Standardization, Geneva, 1993.
+
+这是
+.BR UCS
+的正式规范, 非常正式, 也很厚, 还非常贵. 如果要定
+购信息, 去看看 www.iso.ch.
+.TP
+*
+The Unicode Standard \- Worldwide Character Encoding Version 1.0.
+The Unicode Consortium, Addison-Wesley,
+Reading, MA, 1991.
+
+Unicode 已经有 1.1.4 版可用,与 1.0 版的差别可以在 ftp.unicode.org 找到. 
+Unicode 2.0 也将在 1996 年出版一本书.
+.TP
+*
+S. Harbison, G. Steele. C \- A Reference Manual. Fourth edition,
+Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
+
+一本很好的 C 语言编程参考书. 现在的第四版包含了 1994 年对标准
+ISO C 的第一次修正 (ISO/IEC 9899:1990), 添加了大量
+处理多种字符集的新的 C 库函数.
+.SH 缺憾 (BUGS)
+在写这个手册页的时候,linux 对
+.B UCS
+的 C 语言库支持远未完成.
+.SH 作者 (AUTHOR)
+Markus Kuhn <mskuhn at cip.informatik.uni-erlangen.de>
+.SH 又见(SEE ALSO)
+.B utf-8(7),
+.B http://www.linuxforum.net/books/UTF-8-Unicode.html
+
+.SH "[中文版维护人]"
+.B mapping <mapping at 263.net>
+.SH "[中文版最新更新]"
+.BR 2000/11/06
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/unix.7 b/src/man7/unix.7
new file mode 100644
index 0000000..50a884a
--- /dev/null
+++ b/src/man7/unix.7
@@ -0,0 +1,255 @@
+.\" 本man页版权所有(C) 1999 Andi Kleen <ak at muc.de>.
+.TH UNIX  7 "1999年5月7日" "Linux 手册页" "Linux程序员手册"
+
+.SH NAME(名称)
+unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL \- 用于本地内部进程通讯的套接字。
+.SH SYNOPSIS(总览)
+.B #include <sys/socket.h>
+.br
+.B #include <sys/un.h>
+
+.IB unix_socket " = socket(PF_UNIX, type, 0);"
+.br
+.IB error " = socketpair(PF_UNIX, type, 0, int *" sv ");"
+
+.SH DESCRIPTION(描述)
+.B PF_UNIX
+(也称作
+.B PF_LOCAL )
+套接字族用来在同一机器上的提供有效的进程间通讯.Unix 套接字可以是匿名的(由
+.BR socketpair (2)
+创建), 也可以与套接字类型文件相关联.
+Linux 还支持一种抽象名字空间, 它是独立于文件系统的.
+
+有效的类型有:
+.B SOCK_STREAM
+用于面向流的套接字,
+.B SOCK_DGRAM
+用于面向数据报的套接字,其可以保存消息界限.
+Unix 套接字总是可靠的,而且不会重组数据报.
+
+Unix 套接字支持把文件描述符或者进程的信用证明作为数据报的辅助数据
+传递给其它进程.
+
+.SH ADDRESS FORMAT(地址格式)
+unix 地址定义为文件系统中的一个文件名
+或者抽象名字空间中的一个单独的字符串.
+由
+.BR socketpair (2)
+创建的套接字是匿名的.对于非匿名的套接字,目标地址可使用
+.BR connect (2)
+设置.
+本地地址可使用
+.BR bind (2)
+设置.
+当套接字连接上而且它没有一个本地地址时,
+会自动在抽象名字空间中生成一个唯一的地址.
+
+.RS
+.nf
+#define UNIX_PATH_MAX   108
+
+.ta 4n 17n 42n
+struct sockaddr_un {
+sa_family_t     sun_family;     /* AF_UNIX */
+char    sun_path[UNIX_PATH_MAX];        /* 路径名 */
+};
+.fi
+.RE
+
+.B sun_family
+总是包含
+.BR AF_UNIX .
+.B sun_path
+包含空零结尾的套接字在文件系统中的路径名.
+如果
+.B sun_path
+以空零字节开头,它指向由 Unix 协议模块维护的抽象名字空间.
+该套接字在此名字空间中的地址由
+.BR sun_path
+中的剩余字节给定.
+注意抽象名字空间的名字都不是空零终止的. 
+
+.SH SOCKET OPTIONS(套接字选项)
+由于历史原因, 这些套接字选项通过 SOL_SOCKET 类型确定,
+即使它们是 PF_UNIX 指定的.
+它们可以由
+.BR setsockopt (2)
+设置.
+通过指定 SOL_SOCKET 作为套接字族
+用 
+.BR getsockopt (2)
+来读取. 
+
+.B SO_PASSCRED
+允许接收进程辅助信息发送的信用证明.
+当设置了该选项且套接字尚未连接时,
+则会自动生成一个抽象名字空间的唯一名字.
+值为一个整数布尔标识.
+
+.SH ANCILLARY MESSAGES(辅助信息)
+由于历史原因,这些辅助信息类型通过 SOL_SOCKET 类型确定,
+即使它们是 PF_UNIX 指定的.
+要发送它们, 可设置结构
+.B cmsghdr
+的
+.B cmsg_level
+字段为 SOL_SOCKET, 并设置
+.B cmsg_type
+字段为其类型. 要获得更多信息, 请参看
+.BR cmsg (3).
+
+.TP
+.B SCM_RIGHTS
+为其他进程发送或接收一套打开文件描述符.
+其数据部分包含一个文件描述符的整型数组.
+已传文件描述符的效果就如它们已由
+.BR dup (2)
+创建过一样.
+
+.TP
+.B SCM_CREDENTIALS
+发送或者接收 unix 信用证明.
+可用作认证.信用证明传送以
+.B struct ucred
+辅助信息的形式传送.
+
+.RS
+.nf
+.ta 4n 11n 17n
+struct ucred {
+pid_t   pid;     /* 发送进程的进程标识 */
+uid_t   uid;     /* 发送进程的用户标识 */
+gid_t   gid;     /* 发送进程的组标识 */
+};
+.fi
+.RE
+
+发送者确定的信用证明由内核检查.
+一个带有有效用户标识 0 的进程允许指定不与其自身值相
+匹配的值.发送者必须确定其自身的进程标识(除非它带有
+.BR CAP_SYS_ADMIN ),
+其用户标识,有效用户标识或者设置用户标识(除非它带有
+.BR CAP_SETUID ),
+以及其组标识,有效组标识或者设置组标识(除非它带有
+.BR CAP_SETGID ).
+为了接收一条
+.B struct ucred
+消息,必须在套接字上激活
+.B SO_PASSCRED
+选项.
+
+.SH VERSIONS(版本)
+.B SCM_CREDENTIALS
+和抽象名字空间是在 Linux 2.2 中引入的,不应该在要求可移植的程序中使用.
+
+.SH NOTES(注意)
+在 Linux 实现中,
+在文件系统中可见的套接字拥有它们所在目录的权限许可.
+它们的所有者,组和权限可以作修改.
+如果进程不拥有对创建的套接字所在目录的写和搜索(执行)权限,
+则创建一个新的套接字会失败.
+这种执行方式与许多由 BSD 发展而来的系统不同,
+那些系统会忽略 Unix 套接字所需的权限.
+可移植的程序不应把这项功能用于安全方面.
+
+绑定文件名到套接字会在文件系统中创建一个套接字,
+这个套接字在它不再需要时必须由调用者
+删除(使用
+.BR unlink (2)).
+通用的 Unix 相关语义可适用;
+套接字可在任何时候删除, 而且当最后一个引用关闭时,
+最终会从文件系统中删除.
+
+要传递文件描述符或者信用证明, 你需要发送/读取至少一个字节.
+
+.SH ERRORS(错误)
+.TP
+.B ENOMEM
+内存溢出.
+
+.TP
+.B ECONNREFUSED
+.BR connect (2)
+调用了一个未在监听的套接字对象.
+这可能发生在远程套接字不存在或者文件名不是套接字的时候.
+
+.TP
+.B EINVAL
+传递了无效参数.
+通常的产生原因是已传地址的 sun_type 字段的 AF_UNIX 设置丢失,
+或者套接字对应用的操作处于无效状态.
+
+.TP
+.B EOPNOTSUPP
+在非面向流的套接字上调用了流操作,或者试图使用出界的数据选项.
+
+.TP
+.B EPROTONOSUPPORT
+传递的协议是非 PF_UNIX 的.
+
+.TP
+.B ESOCKTNOSUPPORT
+未知的套接字类型.
+
+.TP
+.B EPROTOTYPE
+远程套接字与本地套接字类型不匹配 (SOCK_DGRAM 对 SOCK_STREAM).
+
+.TP
+.B EADDRINUSE
+选择的本地地址已经占用,或者文件系统套接字对象已经存在.
+
+.TP
+.B EISCONN
+在一个已经连接的套接字上调用
+.BR connect (2)
+或者指定的目标地址在一个已连接的套接字上.
+
+.TP
+.B ENOTCONN
+套接字操作需要一个目的地址,但是套接字尚未连接.
+
+.TP
+.B ECONNRESET
+远程套接字意外关闭.
+.TP
+.B EPIPE
+远程套接字在一个流套接字上关闭了.如果激活,会同时发送一个
+.B SIGPIPE
+标识.这可以通过传递
+.B MSG_NOSIGNAL
+标识给
+.BR sendmsg (2)
+或者
+.BR recvmsg (2)
+来避免.
+.TP
+.B EFAULT
+用户内存地址无效.
+.TP
+.B EPERM
+发送者在
+.BR "struct ucred" 
+中传递无效的信用证明.
+.PP
+当生成一个文件系统套接字对象时,
+可能会由通用套接层或者文件系统产生其它错误.
+要获得更多信息,可参见合适的手册页.
+.SH SEE ALSO(另见)
+.BR recvmsg (2),
+.BR sendmsg (2),
+.BR socket (2),
+.BR socket (2),
+.BR socketpair (2),
+.BR cmsg (3),
+.BR socket (7)
+.SH CREDITS(尾注)
+本man页作者Andi Kleen.
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.BR 2001/07/19
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/unlisten.7 b/src/man7/unlisten.7
new file mode 100644
index 0000000..f26efa3
--- /dev/null
+++ b/src/man7/unlisten.7
@@ -0,0 +1,57 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "UNLISTEN" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+UNLISTEN \- 停止监听通知信息
+
+.SH SYNOPSIS
+.sp
+.nf
+UNLISTEN { \fIname\fR | * }
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBUNLISTEN\fR 用于删除一个现有的已注册的 NOTIFY 事件。 UNLISTEN 取消当前 PostgreSQL 会话中的所有对通知条件 notifyname 监听。 特殊的条件通配符 * 则取消对当前会话的所有通知条件的监听。
+.PP
+NOTIFY [\fBnotify\fR(7)]
+包含一些对 LISTEN 和 NOTIFY 的使用的更广泛的讨论。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fIname\fB\fR
+ 通知条件名称(任意标识符)。
+.TP
+\fB*\fR
+ 所有此后端当前正在监听的注册都将被清除。
+.SH "NOTES 注意"
+.PP
+ 如果你 UNLISTEN 一个你没有监听的事件,后端不会报错。
+.PP
+ 每个后端在退出时都会自动执行 UNLISTEN *。
+.SH "EXAMPLES 例子"
+.PP
+ 注册一个:
+.sp
+.nf
+LISTEN virtual;
+NOTIFY virtual;
+Asynchronous notification "virtual" received from server process with PID 8448.
+.sp
+.fi
+.PP
+ 一旦执行了 UNLISTEN,以后的 NOTIFY 命令将被忽略:
+.sp
+.nf
+UNLISTEN virtual;
+NOTIFY virtual;
+-- no NOTIFY event is received
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ SQL 标准里没有 UNLISTEN。
+.SH "SEE ALSO 参见"
+LISTEN [\fBlisten\fR(7)], NOTIFY [\fBnotify\fR(l)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/update.7 b/src/man7/update.7
new file mode 100644
index 0000000..1f107fd
--- /dev/null
+++ b/src/man7/update.7
@@ -0,0 +1,70 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "UPDATE" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+UPDATE \- 更新一个表中的行
+
+.SH SYNOPSIS
+.sp
+.nf
+UPDATE [ ONLY ] \fItable\fR SET \fIcolumn\fR = { \fIexpression\fR | DEFAULT } [, ...]
+    [ FROM \fIfromlist\fR ]
+    [ WHERE \fIcondition\fR ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBUPDATE\fR 改变满足条件的所有行的声明了的列/字段的值。 只有要更改的列/字段需要在语句中出现,没有明确的 SET 的字段保持它们原来的数值。
+.PP
+ 缺省时,UPDATE 将更新所声明的表和所有子表的记录。 如果你希望只更新所声明的表,你应该使用 ONLY 子句。
+.PP
+ 要更改表,你必须对它有UPDATE 权限, 同样对 expression 或者 condition 条件里提到的任何表也要有SELECT权限。
+.SH "PARAMETERS 参数"
+.TP
+\fB\fItable\fB\fR
+ 现存表的名称(可以有模式修饰)。 
+.TP
+\fB\fIcolumn\fB\fR
+ 表 table 中列/字段的名。
+.TP
+\fB\fIexpression\fB\fR
+ 赋予列/字段的一个有效的值或表达式。表达式可以使用表中这个或其它字段的旧数值。
+.TP
+\fBDEFAULT\fR
+ 把字段设置为它的缺省值(如果没有缺省表达式赋予它,那么就是 NULL)。
+.TP
+\fB\fIfromlist\fB\fR
+ 一个表达式的列表,允许来自其它表中的列/字段出现在 WHERE 条件里。
+.TP
+\fB\fIcondition\fB\fR
+ 一个表达式,返回 boolean 类型。只有这个表达式返回 true 的行被更新。
+.SH "OUTPUTS 输出"
+.PP
+ 成功完成后,UPDATE 命令返回形如
+.sp
+.nf
+UPDATE \fIcount\fR
+.sp
+.fi
+ 的命令标签。count 是更新的行数。 如果 count 是 0, 那么没有符合 condition 的行(这个不认为是错误)。
+.SH "EXAMPLES 例子"
+.PP
+ 把表 films 里的字段 kind 里的词 Drama 用Dramatic 代替:
+.sp
+.nf
+UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';
+.sp
+.fi
+.PP
+ 调整表 weather 中的一行的温度记录并且把降水设置为缺省值:
+.sp
+.nf
+UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
+  WHERE city = 'San Francisco' AND date = '2003-07-03';
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+ 这条命令遵循 SQL 标准。FROM 子句是 PostgreSQL 扩展。
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/utf-8.7 b/src/man7/utf-8.7
new file mode 100644
index 0000000..c707c8f
--- /dev/null
+++ b/src/man7/utf-8.7
@@ -0,0 +1,184 @@
+.\" Copyright (C) Markus Kuhn, 1996
+.\" 中文版 Copyright (c) Bill Pan 和 www.LinuxForum.net
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 1995-11-26 Markus Kuhn 
+.\" First version written
+.\"
+.TH UTF-8 7 "1995-11-26" "Linux" "Linux Programmer's Manual"
+.SH NAME
+UTF-8 \- ASCII 兼容的多字节 Unicode 编码
+.SH 描述
+The
+.B Unicode
+字符集使用的是 16 位(双字节)码。最普遍的 Unicode 编码方法(
+.BR UCS-2 )
+由一个 16 位双字序列组成。
+这样的字符串中包括了的一些如‘\\0’或‘/’这样的在文件名中或者是在 C
+库函数中具有特殊意义的字符。
+另外,如果没有做重大的修正的话,大部分操作 ASCII 码文件的 UNIX
+工具不能够正确识别 16 位的字符。因此,
+.B UCS-2
+对于
+.B Unicode
+的文件名、文本文件、环境变量等等来说并不是一种合适的外部编码方式。
+.BR "ISO 10646 Universal Character Set (UCS)" ,
+是 Unicode 的超集,甚至使用了 31 位编码方式,
+另外还有使用 32 编码的 UCS-4 也有同样上述的问题。
+.B UCS-4
+而用
+.B UTF-8
+对
+.B Unicode
+.B UCS
+编码
+就不会存在这样的问题。所以,UTF-8 很明显的是在 UNIX 类操作系统下的
+.B Unicode
+字符集的解决方案。
+.SH 属性
+
+.B UTF-8 
+编码具有以下优良属性:
+.TP 0.2i
+*
+.B UCS
+字符从 0x00000000 到 0x0000007f (传统的
+.B US-ASCII
+字符)简单地编码为字节 0x00 到 0x7f (与 ASCII 码兼容)。
+这意味着只包含 7 位 ASCII 字符的文件和字符串在
+.B ASCII
+和
+.BR UTF-8 .
+编码方式下是完全一样的。
+.TP
+*
+所有大于 0x7f 的
+.B UCS
+字符被编码成为多字节序列。该序列全部是由 0x80 到 0fd 的字符组成,
+这样就不会有标准 ASCII 字符会
+被作为某个字的一个部分这种现象出现,
+对于‘\\0’和‘\’这样的特殊字符来说也就不会有问题了。
+.TP
+*
+保留了
+.B UCS-4
+字典中的字节串的排列顺序。
+.TP
+*
+所有 2^32 次方的 UCS 码都能够使用
+.BR UTF-8 
+来进行编码。
+.TP
+*
+0xfe 和 0xff 两个字符在
+.B UTF-8
+中不会被用到。
+.TP
+* 
+表示非 ASCII 码的
+.B UCS
+多字节串的开始字符总是 0xc0 到 0xfd 之间的字符,并会指出该串的长度。
+多字节串的其他字符都是 0x80
+到 0xbf 之间的字符。
+这使得再同步非常简单,并令编码是无态的,
+丢字节现象也不容易发生。
+.TP
+*
+用
+.B UTF-8
+编码的
+.B UCS
+字符可以增加到 6 个字节的长度。而
+.B Unicode
+只能增加到 3 个字节长。由于 Linux 只使用 16 位的
+.B Unicode
+,
+.BR UCS 
+的子集。所以在 Linux 下,
+.B UTF-8
+多字节串长度最多不会超过三个字节。
+.SH 编码方式
+下面的字节串用来表示一个字符。用什么串依照该字符在 UCS 编码中的序号来定:
+.TP 0.4i
+0x00000000 - 0x0000007F:
+.RI 0xxxxxxx
+.TP
+0x00000080 - 0x000007FF:
+.RI 110xxxxx 
+.RI 10xxxxxx
+.TP
+0x00000800 - 0x0000FFFF:
+.RI 1110xxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.TP
+0x00010000 - 0x001FFFFF:
+.RI 11110xxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.TP
+0x00200000 - 0x03FFFFFF:
+.RI 111110xx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.TP
+0x04000000 - 0x7FFFFFFF:
+.RI 1111110x
+.RI 10xxxxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.RI 10xxxxxx
+.PP
+这里
+.I xxx
+的位置二进制位形式的字符编码填入。
+只用最短的那个足够表达一个字符编码数的多字节串。
+.SH 举例说明
+.B Unicode
+字符 0xa9 = 1010 1001 (版权所有的符号) 在 UTF-8 中被编码为:
+.PP
+.RS
+11000010 10101001 = 0xc2 0xa9
+.RE
+.PP
+字符0x2260 = 0010 0010 0110 0000 (“不等于”符号)被编码为:
+.PP
+.RS
+11100010 10001001 10100000 = 0xe2 0x89 0xa0
+.RE
+.SH 遵循标准
+ISO 10646, Unicode 1.1, XPG4, Plan 9.
+.SH 作者
+Markus Kuhn 
+.SH 参考
+.BR unicode (7)
+
+.SH "[中文版维护人]"
+.B billpan <billpan at yeah.net>
+.SH "[中文版最新更新]"
+.BR 2000/11/09
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man7/vacuum.7 b/src/man7/vacuum.7
new file mode 100644
index 0000000..4b2dddc
--- /dev/null
+++ b/src/man7/vacuum.7
@@ -0,0 +1,96 @@
+.\\" auto-generated by docbook2man-spec $Revision: 1.1 $
+.TH "VACUUM" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands"
+.SH NAME
+VACUUM \- 垃圾收集以及可选地分析一个数据库
+
+.SH SYNOPSIS
+.sp
+.nf
+VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ \fItable\fR ]
+VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ \fItable\fR [ (\fIcolumn\fR [, ...] ) ] ]
+.sp
+.fi
+.SH "DESCRIPTION 描述"
+.PP
+\fBVACUUM\fR 回收已删除元组占据的存储空间。 在一般的 PostgreSQL 操作里, 那些已经 DELETE 的元组或者被 UPDATE 过后过时的元组是没有从它们所属的表中物理删除的; 在完成 VACUUM 之前它们仍然存在。 因此我们有必须周期地运行 VACUUM, 特别是在常更新的表上。
+.PP
+ 如果没有参数,VACUUM 处理当前数据库里每个表, 如果有参数,VACUUM 只处理那个表。
+.PP
+\fBVACUUM ANALYZE\fR 先执行一个 VACUUM  然后是给每个选定的表执行一个 ANALYZE。 对于日常维护脚本而言,这是一个很方便的组合。参阅
+ANALYZE [\fBanalyze\fR(7)]
+获取更多有关其处理的细节。
+.PP
+ 简单的 VACUUM (没有FULL) 只是简单地回收空间并且令其可以再次使用。这种形式的命令可以和对表的普通读写并行操作, 因为没有请求排他锁。VACUUM FULL  执行更广泛的处理,包括跨块移动元组,以便把表压缩到最少的磁盘块数目里。 这种形式要慢许多并且在处理的时候需要在表上施加一个排它锁。
+.PP
+FREEZE 是一种特殊用途的选项,它导致元组尽可能快地标记为"冻结(frozen)", 而不是等到它们已经相当老的时候才标记。如果在同一个数据库上没有其它运行着的事务的时候完成这个命令, 那么系统就保证在数据库里的所有元组都是"冻结(frozen)"的, 因此不会有事务 ID 重叠的问题,而和数据库未清理的时间没有关系。 我们不建议把 FREEZE 用做日常用途。我们用它的唯一目地是准备和用户定义的模板数据库联接的时候, 或者是其它完全是只读的, 不会等到日常维护性 VACUUM 操作的数据库。 参阅 Chapter 21 ``Routine Database Maintenance'' 获取细节。
+.SH "PARAMETERS 参数"
+.TP
+\fBFULL\fR
+ 选择"完全"清理,这样可以恢复更多的空间, 但是花的时间更多并且在表上施加了排它锁。
+.TP
+\fBFREEZE\fR
+ 选择激进的元组"冻结"。
+.TP
+\fBVERBOSE\fR
+ 为每个表打印一份详细的清理工作报告。
+.TP
+\fBANALYZE\fR
+ 更新用于优化器的统计信息,以决定执行查询的最有效方法。
+.TP
+\fB\fItable\fB\fR
+ 要清理的表的名称(可以有模式修饰)。缺省时是当前数据库中的所有表。
+.TP
+\fB\fIcolumn\fB\fR
+ 要分析的具体的列/字段名称。缺省是所有列/字段。
+.SH "OUTPUTS 输出"
+.PP
+ 如果声明了 VERBOSE,VACUUM 发出过程信息, 以表明当前正在处理那个表。各种有关这些表的统计也会打印出来。
+.SH "NOTES 注意"
+.PP
+ 我们建议在经常VACUUMM(清理)(至少每晚一次)生产数据库, 以保证不断地删除失效的行。尤其是在增删了大量记录之后, 对受影响的表执行 VACUUM ANALYZE  命令是一个很好的习惯。这样做将更新系统目录为最近的更改,并且允许 PostgreSQL  查询优化器在规划用户查询时有更好的选择。
+.PP
+ 我们不建议日常使用 FULL 选项,但是可以在特殊情况下使用。 一个例子就是在你删除了一个表的大部分行之后,希望从物理上缩小该表以减少磁盘空间占用。VACUUM FULL  通常要比单纯的 VACUUM 收缩更多表的尺寸。
+.SH "EXAMPLES 例子"
+.PP
+ 下面是一个在 regression (蜕变)数据库里某个表上执行 VACUUM的一个例子:
+.sp
+.nf
+regression=# VACUUM VERBOSE ANALYZE onek;
+INFO:  vacuuming "public.onek"
+INFO:  index "onek_unique1" now contains 1000 tuples in 14 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.01s/0.08u sec elapsed 0.18 sec.
+INFO:  index "onek_unique2" now contains 1000 tuples in 16 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.00s/0.07u sec elapsed 0.23 sec.
+INFO:  index "onek_hundred" now contains 1000 tuples in 13 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.01s/0.08u sec elapsed 0.17 sec.
+INFO:  index "onek_stringu1" now contains 1000 tuples in 48 pages
+DETAIL:  3000 index tuples were removed.
+0 index pages have been deleted, 0 are currently reusable.
+CPU 0.01s/0.09u sec elapsed 0.59 sec.
+INFO:  "onek": removed 3000 tuples in 108 pages
+DETAIL:  CPU 0.01s/0.06u sec elapsed 0.07 sec.
+INFO:  "onek": found 3000 removable, 1000 nonremovable tuples in 143 pages
+DETAIL:  0 dead tuples cannot be removed yet.
+There were 0 unused item pointers.
+0 pages are entirely empty.
+CPU 0.07s/0.39u sec elapsed 1.56 sec.
+INFO:  analyzing "public.onek"
+INFO:  "onek": 36 pages, 1000 rows sampled, 1000 estimated total rows
+VACUUM
+.sp
+.fi
+.SH "COMPATIBILITY 兼容性"
+.PP
+SQL 标准里没有 VACUUM 语句。
+.SH "SEE ALSO 参见"
+vacuumdb [\fBvacuumdb\fR(1)]
+
+.SH "译者"
+.B Postgresql 中文网站
+.B 何伟平 <laser at pgsqldb.org>
diff --git a/src/man7/x25.7 b/src/man7/x25.7
new file mode 100644
index 0000000..60db583
--- /dev/null
+++ b/src/man7/x25.7
@@ -0,0 +1,104 @@
+.\" This man page is Copyright (C) 1998 Heiner Eisen. 
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.TH X25 4 "1 Dec 1998" "Linux Man Page" "Linux Programmer's Manual" 
+.SH NAME
+x25, PF_X25 \- ITU-T X.25 / ISO-8208 协议接口。
+.SH 总览
+.B #include <sys/socket.h>
+.br 
+.B #include <linux/x25.h> 
+.br
+x25_socket = socket(PF_X25, SOCK_SEQPACKET, 0); 
+.SH 描述
+X25 sockets 为 X.25 数据包层协议(packet layer protocol)提供接口。
+这令应用程序可以使用标准的 ITU X.25 建议
+(X.25 DTE-DCE 模式)在公共 X.25 数据网中进行通讯。
+X25 socket 也可以在没有在 ISO-8208中描述的那样的 
+X.25 中介(X.25 DTE-DCE 模式)的网络进行通讯.
+.PP 
+信息分界的保持 - 对 socket 进行
+.BR  read(2)
+得到的数据块与对端 socket 对应
+.BR write(2)
+动作输出的数据块是完全一样的.
+如果必要,内核负责处理信息片段和重组长信息,
+用的是 X.25 M-bit 方法(校注:请懂 x.25 的同志指正)。
+对信息大小没有硬编码的上限。 
+但是重组长信息有时会失败
+(比如系统资源暂时匮乏,或是出现其他的诸如此类的限制时)。
+如果出现这种情况,X.25 连接将被重置。
+.SH 套接口地址 SOCKET ADDRESS
+AF_X25 socket 地址族用 struct sockaddr_x25 代表 
+ITU-T X.121 规范中定义的网络地址。 
+.PP
+.RS
+.nf
+.ta 4n 18n 32n  
+struct sockaddr_x25 {
+sa_family_t   sx25_family;  /* 必须是 AF_X25 */
+x25_address   sx25_addr;    /* X.121 地址 */
+};
+.ta
+.fi
+.RE
+.PP
+.I sx25_addr
+包含一个空零结尾的字符串
+.I x25_addr[]
+。 
+.I sx25_addr.x25_addr[]
+由最多 15 个 ASCII 字符(不包括结束的 0)构成 X.121 地址。
+只能使用数字 `0' 到 `9' 。
+.SH 套接字选项 SOCKET OPTIONS
+以下 X.25 相关的套接字选项
+可以在级别参数设置为
+.BR SOL_X25
+时用
+.BR setsockopt(2)
+设定并可用 
+.BR getsockopt(2) 
+读取。 
+.TP
+.B X25_QBITINCL 
+控制用户是否能够访问 X.25 Q-bit
+((资格数据位)Qualified Data Bit)。
+接受整型参数。 如果设为 0 (缺省),
+那么传出的数据包不设置 Q-bit 传入的数据包中的 Q-bit 被忽略。
+如果设为 1, 就会在通过该套接字传入传出的信息中附加一个前置的首字节。
+对于从套接字中数据, 首位字节的 0 
+表示对应的读入包未设置 Q-bit;而如果是 1 则相反。 
+如果通过套接字写入(传出)的数据中首位字节为 1 则传出包设置 Q-bit ,
+如果是 0 则不设置 Q-bit。
+.SH 缺憾
+有很多, 比如 X.25 PLP 实现
+.BR CONFIG_EXPERIMENTAL. (译注:内核编译选项,尚处于试验阶段)。
+.PP
+本手册页也不完善。
+.PP
+还没有给程序员用的头文件;您需要包含内核头文件
+.BR linux/x25.h
+.B CONFIG_EXPERIMENTAL
+也暗示着未来的接口版本可能在二进制级别不兼容。
+.PP
+X.25 N-重置事件(Reset events)还不会传播给用户进程。
+因此,如果重置,可能会发生数据丢失而得不到任何提示。 
+.SH 另见
+.BR socket(7),
+.BR socket(2).
+.PP 
+Jonathan Simon Naylor:
+\(lqThe Re-Analysis and Re-Implementation of X.25.\(rq
+The URL is
+.Iftp://ftp.pspt.fi/pub/ham/linux/ax25/x25doc.tgz 
+.SH 版本
+PF_X25 协议族是 Linux 2.2 的新特性. 
+
+.SH "[中文版维护人]"
+.B RedCandle <redcandle51 at chinaren.com>
+.SH "[中文版最新更新]"
+.B 2000/10/26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/MAKEDEV.8 b/src/man8/MAKEDEV.8
new file mode 100644
index 0000000..e1a68d6
--- /dev/null
+++ b/src/man8/MAKEDEV.8
@@ -0,0 +1,407 @@
+.TH MAKEDEV 8 "14th August 1994" Linux "Linux Programmer's Manual"
+
+.SH NAME
+MAKEDEV \- 建立设备
+
+.SH "总览 (SYNOPSIS)"
+.B "cd dev; ./MAKEDEV -V"
+.br
+.B "cd dev; ./MAKEDEV [ -n ] [ -v ] update"
+.br
+.BI "cd dev; ./MAKEDEV [ -n ] [ -v ] [ -d ]" " device ..."
+
+.SH "描述 (DESCRIPTION)"
+.B MAKEDEV
+是 一个 脚本程序, 用于 在 \fC/dev\fP 目录下 建立 设备, 通过 这些 设备文件
+可以 访问 位于 内核 的 驱动程序.
+.PP
+注意, 如果 应用程序 显示 出错信息 ``ENOENT: No such file or directory'',
+一般指 设备文件 不存在, 而 ``ENODEV: No such device'' 则 表明 内核 没有
+配置 或 装载 相应的 驱动程序.
+
+.SH "选项 (OPTIONS)"
+.TP
+.B \-V
+显示 版本信息 (实际上 是 RCS 版本信息) 然后 退出.
+.TP
+.B \-n
+并不做 真正的 更新, 只是 显示 一下 它的 执行 效果.
+.TP
+.B \-d
+删除 设备文件. 主要 供
+.B MAKEDEV
+自己 用.
+.TP
+.B \-v
+繁琐模式.  显示出 执行的 每一个 动作.  它的 输出内容 和
+.BR \-n
+选项 的 输出内容 一样.
+
+.SH "自定义 (CUSTOMISATION)"
+由于 目前 还没有 系统 用户 和 用户组 的 标准名称,
+你 可能 需要 修改
+.B MAKEDEV
+以 配合 你的 系统设置.
+在 这个 程序 的 开始位置, 定义了 从 设备类型 到 用户, 用户组 和 访问权限
+的 映射关系 (例如, 所有的 CD-ROM 设备 通过 \fC$cdrom\fP 变量 设置).  
+如果 你 打算 改变 缺省定义, 就需要 编辑 这个 部分.
+
+.SH "设备 (DEVICES)"
+.TP
+.B 基本选项 (General Option)
+.TP
+.B update
+该选项 只用于 实现了 \fC/proc/interrupts\fP 的 内核(从 1.1.x 开始).
+MAKEDEV 扫描 这个文件, 检查 目前 内核 配置了 什么设备, 它 和 上次
+配置 的 设备 做 比较 (记录在 文件 \fCDEVICES\fP 中), 创建 新设备 或
+主设备号 不相同 的 设备, 删除 没有 配置的 设备.
+.TP
+.B generic
+创建 通用设备 子集. 包括 标准设备, 软驱, 各种硬驱, 伪终端,
+控制台设备, 基本串行设备, 总线鼠标 和 打印口.
+.TP
+.B
+std
+标准设备.
+它们有:
+.RS
+.B mem
+\- 访问 物理内存;
+.RE
+.RS
+.B kmem
+\- 访问 内核虚拟内存;
+.RE
+.RS
+.B null
+\- 空设备 (无限写入 infinite sink);
+.RE
+.RS
+.B port
+\- 访问 I/O 端口;
+.RE
+.RS
+.B zero
+\- 空(0)字节 来源 (无限读出 infinite source);
+.RE
+.RS
+.B core
+\- /proc/kcore 的 符号连接 (用于 内核除错);
+.RE
+.RS
+.B full
+\- 写访问 这个设备 一定 返回 ENOSPACE;
+.RE
+.RS
+.B ram
+\- 虚拟磁盘 (ramdisk);
+.RE
+.RS
+.B tty
+\- 访问 进程 的 控制终端.
+.RE
+.TP 
+.B local
+运行
+.BR MAKEDEV.local .
+它是个 脚本程序, 用来 创建 各种 本地设备 (local devices).
+.TP
+.B 虚拟终端 (Virtual Terminal)
+.TP
+.I console
+用于 建立 关联(associate) 控制台 的 设备.  就是 虚拟终端
+.RI tty x ,
+.I x
+从 0 到 63.  设备 tty0 是 当前的 活动 虚拟终端, 也就是 \fCconsole\fP.  
+每个 虚拟终端 有 两个 设备, 
+.RI vcs x
+和
+.RI vcsa x ,
+用做 虚拟终端 的 屏幕转储(screen-dump),
+.BI vcs x
+只有 文本,
+.BI vcsa x
+还包括 属性.
+.TP
+.B 串行设备 (Serial Device)
+.TP
+.I ttyS{0..63}
+串行口 和 对应的 拨出设备(dial-out). 对于
+.BI ttyS x 
+设备, 有 同样的 设备
+.BI cua x
+用于 拨出. 在 一些 简单 的 应用环境, 这种 形式 可以 避免 使用 协作锁.
+.TP
+.I cyclades
+用于 cyclades 智能 I/O 串行卡 的 拨入和拨出 设备.
+拨入设备 是
+.BI ttyC x ,
+对应的 拨出设备 是
+.BI cub x .
+缺省情况是 创建 7线 设备, 但是 去掉 注释 可以 改成 15线.
+.TP
+.B 伪终端 (Pseudo Terminal)
+.TP
+.I pty[p-s]
+参数中的 每个字符 可以 创建 一组 共 16 个 主从伪终端对.
+1.2 版本的 内核 支持 64 对. 主伪终端 是
+.BR pty[p-s][0-9a-f] ,
+从伪终端是
+.BR tty[p-s][0-9a-f] .
+.TP
+.B 并行口 (Parallel Port)
+.TP
+.I lp
+标准并行口.  创建的 设备 是 
+.BR lp0 , 
+.BR lp1 
+和
+.BR lp2 .
+它们 对应的 端口 是 0x3bc, 0x378 和 0x278.
+因此, 有些 机器 上 的 第一个 打印口 是
+.BR lp1 .
+.TP
+.I par
+.IR lp 
+的替换. 端口 由
+.BI par x
+命名, 代替了
+.BI lp x .
+.TP
+.B 总线鼠标 (Bus Mice)
+.TP
+.I busmice
+各种 总线鼠标 设备. 有
+.B logimouse
+(Logitech bus mouse),
+.B psmouse
+(PS/2-style mouse),
+.B msmouse
+(Microsoft Inport bus mouse) 和
+.B atimouse
+(ATI XL bus mouse) 和
+.B jmouse
+(J-mouse).
+.TP
+.B 游戏杆设备 (Joystick Device)
+.TP
+.I js
+游戏操纵杆. 创建
+.B js0
+和
+.BR js1 .
+.TP
+.B Disk Devices
+.TP
+.I fd[0-7]
+软驱设备. 
+.BI fd x
+设备 能够 自动检测 (盘面)格式, 其他设备 采用 固定格式, 在 名字中 指定 容量.
+命名格式 是
+.BI fd xLn , 
+字母
+.I L
+表明 软盘 规格 (d = 5.25" DD, h = 5.25" HD, D = 3.5" DD, H = 3.5" HD, 
+E = 3.5" ED).  数字
+.I n
+代表 这种规格下 的 盘面 容量 (单位是K).  因此 标准的容量 是
+.BI fd x d360 ,
+.BI fd x h1200 ,
+.BI fd x D720 ,
+.BI fd x H1440 ,
+和
+.RI fd x E2880 .
+.IP
+更多的 内容 请参看 Alain Knaff 的 fdutils 发行包.
+.IP
+从
+.BI fd0 *
+到
+.BI fd3 *
+的 设备 是 第一个 控制器 上的 软驱, 而
+.BI fd4 *
+到
+.BI fd7 *
+则 位于 第二个 控制器 上.
+.TP
+.I hd[a-d]
+AT 硬盘. 设备
+.BI hd x
+提供 对 整个 硬盘 的 访问, 访问 分区 用
+.BI hd x [0-20].
+四个 主分区 从
+.BI hd x 1
+到
+.BI hd x 4,
+它们的 逻辑分区 从
+.BI hd x 5
+开始 到
+.BI hd x 20.
+(主分区 可以 配置为 扩展分区, 扩展分区 可以 容纳 4个 逻辑分区).
+缺省情况下, 一个 设备 只创建 4个 逻辑分区.  如果 要求 更多的 逻辑分区,
+可以 在 MAKEDEV 中 去掉 相应的 注释.
+.IP
+驱动器 hda 和 hdb 位于 第一个 控制器 上. 如果 使用 新型的 IDE 驱动器
+(而非 老式的 HD 驱动器), 还会有 hdc 和 hdd, 在 第二个 磁盘控制器上.
+这些设备 同样可以 访问 IDE CDROM 驱动器.
+.TP
+.I xd[a-d] 
+XT 硬盘. 分区结构 和 IDE 硬盘 一样.
+.TP
+.I sd[a-z], sd[a-c][a-z], sdd[a-x]
+SCSI 硬盘.  分区结构 和 IDE 硬盘 类似, 但是 逻辑分区 限制在 11 个 以内,
+.RI (sd x 5
+到
+.RI sd x 15).
+允许 有 128个 SCSI 硬盘.
+.TP
+.I loop
+自环(loopback) 磁盘设备. 允许 你 把 普通文件 当做 块设备 使用.
+这 意味着 可以 挂载(mount) 各种 文件系统 的 映像(文件), 用起来
+和 普通 的 文件系统 一样.
+一般 创建  8个 设备, loop0 到 loop7.
+.TP
+.B 磁带设备 (Tape Device)
+.TP
+.I st[0-7]
+SCSI 磁带.  有 可回卷(rewinding)的 磁带设备
+.BI st x
+和 不可回卷(non-rewinding) 的 
+.BI nst x .
+.TP
+.I qic
+QIC-80 磁带. 创建 的 设备 有
+.BR rmt8 ,
+.BR rmt16 ,
+.BR tape-d
+和
+.BR tape-reset .
+.TP
+.I ftape
+软驱磁带 (QIC-117).  
+根据 不同的 驱动方法, 有 四种 存取 方法 0, 1, 2 和 3, 
+对应 各自的 设备
+.BI rft x
+(可回卷) 和
+.BI nrft x
+(不可回卷). 另外 还提供了 兼容设备
+.B ftape
+和
+.B nftape ,
+它们是
+.B rft0
+和
+.B nrft0
+的 符号连接.
+.TP
+.B CDROM 设备
+.TP
+.I scd[0-7]
+SCSI CD 播放器.
+.TP
+.I sonycd
+Sony CDU-31A CD 播放器.
+.TP
+.I mcd
+Mitsumi CD 播放器.
+.TP
+.I cdu535
+Sony CDU-535 CD 播放器.
+.TP
+.I lmscd
+LMS/Philips CD 播放器.
+.TP
+.I sbpcd{,1,2,3}
+Sound Blaster CD 播放器. 内核 能够 支持 16个 CDROM,
+通过
+.BR sbpcd[0-9a-f] 
+访问. 它们 每四个 一组 分配 在 各个 控制器 上.
+.B sbpcd
+是
+.BR sbpcd0 
+的 符号连接.
+.\" .TP
+.\" .I idecd
+.\" NEC CDR-260 (注意: 这个 可能 被 新型的 IDE 驱动器 取代了).
+.TP
+.B 扫描仪 (Scanner)
+.TP
+.I logiscan
+Logitech ScanMan32 & ScanMan 256.
+.TP
+.I m105scan
+Mustek M105 手持式.
+.TP
+.I ac4096
+A4Tek 彩色手持式.
+.TP
+.B 音频 (Audio)
+.TP
+.I audio
+建立 供 声音驱动程序 使用的 音频设备.  包括
+.BR mixer ,
+.BR sequencer ,
+.BR dsp
+和
+.BR audio .
+.TP
+.I pcaudio
+PC 扬声器 声音驱动程序 的 设备. 有
+.BR pcmixer .
+.BR pxsp ,
+和
+.BR pcaudio .
+.TP
+.B 杂项 (Miscellaneous)
+.TP
+.I sg
+通用 SCSI 设备. 从
+.B sga
+到
+.B sgh ,
+.B sg0
+到
+.BR sg7 .
+它们 允许 对 任何 SCSI 设备 发出 任意指令. 可以 查询 设备信息, 或者 控制
+不是 磁盘, 磁带 或 CDROM 的 SCSI 设备 (例如 扫描仪, 可擦写CDROM).
+.TP
+.I fd
+允许 任何程序 从 文件描述符
+.IR x 
+中 获取 输入, 文件名 是
+.BI /dev/fd/ x .
+而且 还创建了 
+.BR /dev/stdin ,
+.BR /dev/stdout ,
+和
+.BR /dev/stderr .
+(注意, 这些 只是 到 /proc/self/fd 的 符号连接).
+.TP
+.I ibcs2
+IBCS2 模拟器 所需的 设备(和符号连接).
+.TP
+.I apm
+电源管理设备.
+.TP
+.I dcf
+DCF-77 radio clock 驱动程序 用的 设备.
+.TP
+.I helloworld
+内核模块 的 演示设备.  见 模块 源程序.
+.TP
+.B 网络设备 
+Linux 曾经在 /dev 下面 放了一些 设备文件, 用于 控制 网络设备, 现在 取消了. 
+想知道 内核 支持 什么 网络设备, 请 查看 /proc/net/dev.
+
+.SH "另见 (SEE ALSO)"
+Linux Allocated Devices, H.\ Peter Anvin 维护, <Peter.Anvin at linux.org>.
+
+.SH "作者 (AUTHOR)"
+Nick Holloway, <Nick.Hollowa
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/11/03
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/badblocks.8 b/src/man8/badblocks.8
new file mode 100644
index 0000000..cbbb14f
--- /dev/null
+++ b/src/man8/badblocks.8
@@ -0,0 +1,139 @@
+.\" -*- nroff -*-
+.TH BADBLOCKS 8 "July 2000" "E2fsprogs version 1.19"
+.SH NAME
+badblocks \- 查询设备的坏区块
+.SH 语法(SYNPSIS)
+.B badblocks
+[
+.B \-svwnf
+]
+[
+.B \-b
+.I block-size
+]
+[
+.B \-c
+.I blocks_at_once
+]
+[
+.B \-i
+.I input_file
+]
+[
+.B \-o
+.I output_file
+]
+[
+.B \-p
+.I num_passes
+]
+.I device
+[
+.I blocks-count
+] [
+.I start-block 
+]
+.SH (描述)DESCRIPTION
+.B badblocks
+被用来在设备(通常是磁盘分区)中检测坏区块。
+.I device
+参数是设备的名字(例如
+.IR /dev/hdc1 ).
+.I blocks-count
+参数是设备上总的区块数目;如果没有指定这个参数,默认值就是设备的容量大小。
+.I start-block参数是一个可选参数,它指定从多少区块号开始进行检测。因此,检测允许从磁盘的中间部分开始。
+.SH 选项(OPTIONS)
+.TP
+.BI \-b " block-size"
+以字节为单位,指定区块的大小。
+.TP
+.BI \-c " number of blocks"
+每一次检测区块的数目。默认值是16。增加这个数目可以增加检测
+.B 坏块
+的效率可同时也会增加内存的耗费。
+.B Badblocks
+命令在只读模式下需要花费与每一次检测的区块相同数目的内存容量。在读写模式下,这个比例是两倍而在非破坏性的读写模式下,这个比例是三倍。
+如果你将参数“num-of-blocks”设置太大的话,
+.B badblocks
+将会在分派缓存时会因为一个内存溢出错误而立即退出。当然如果你在非破坏性的读写模式下将该值设置得过低,那么在一个不稳定的磁盘上的有问题
+的区块也许会因为磁盘的磁道缓冲的作用而不被检测出来。
+.TP
+.B \-f
+正常情况下,badblocks命令不会在一个已经激活的设备上读写模式或者是非破坏性的读写模式的检测,因为这可能会导致系统的崩溃。
+使用
+.B \-f
+标志可以使这种情况强制执行,但是最好不要在正常的情况下使用它。如果/etc/mtab文件发生了错误,而设备实际上并没有被激活的时候,这个
+参数才会是安全的。
+.TP
+.BI \-i " input_file"
+读入一个已知的坏块列表。
+.B Badblocks
+命令将会跳过对这些已知是坏块的区块检查。如果
+.I input_file
+参数是“-”,则列表从标准输入读入。
+在这个列表中列举出的区块也会在
+.I 新的
+坏道记录文件或者坏道记录输出时被忽略掉。
+.BR dumpe2fs (8)
+的
+.B \-b
+选项能够在一个已有的文件系统中得到被标记为坏块的列表,而且已经做成了符合这个选项的格式。
+.TP
+.BI \-o " output_file"
+将坏块的列表写到指定的文件中。如果没有这个选项,
+.B badblocks
+命令会在标准输出中输出这个列表。其格式是与
+.
+.BR e2fsck (8)
+或者
+.BR mke2fs (8).
+的
+.B \-l
+选项的要求相适应的。
+.TP
+.BI \-p " num_passes"
+重复的扫描磁盘,直到重复“num_passes”遍磁盘扫描后也没有发现新的区块后结束。
+默认值是0。表示
+.B badblocks
+命令成功执行一遍扫描后就会结束。
+.TP
+.B \-n
+使用非破坏性的读写模式。默认值是非破坏性的只读模式测试。这个选项不能与
+.B \-w
+选项一起使用,因为它们是互斥的。
+.TP
+.B \-s
+通过输出正在被检测的区块的号码以表示检测进程。
+.TP
+.B \-v
+混杂模式检测。
+.TP
+.B \-w
+使用写模式测试。通过使用这个选项
+.B badblocks
+通过往每个区块上写入一些特定的字符(0xaa,0x55,0xff,0x00),读出来后再比较其内容,决定是否为坏块。
+这个选项不能与
+.B \-n 
+选项一起使用,因为它们是互斥的。
+.SH 警告(WARNING)
+千万不要将
+.B \-w
+选项用在一个已经包含了文件系统的设备上。这个选项会删除掉原有的数据!
+如果你想要在已经有文件系统的设备上执行读写模式检测,请使用
+.B \-n
+选项。虽然慢点,可是它能够保护你的数据不受伤害。
+.SH 作者(AUTHOR)
+.B badblocks
+作者是Remy Card <Remy.Card at linux.org>.  维护人
+Theodore Ts'o <tytso at alum.mit.edu>.  非破坏性的读写模式测试由David Beattie <dbeattie at softhome.net>进行.
+.SH 有效资源(AVAILABILITY)
+.B badblocks
+是e2fsprogs套件的一部分。能够从支持匿名访问的ftp站点tsx-11.mit.edu的/pub/linux/packages/ext2fs目录下取得。
+.SH 另外请参考
+.BR e2fsck (8),
+.BR mke2fs (8)
+
+.SH 中文版维护人
+.B Bill Pan <billpan at netease.com>
+.SH "中国 Linux 论坛 man 手册页翻译计划"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/bdflush.8 b/src/man8/bdflush.8
new file mode 100644
index 0000000..c394ace
--- /dev/null
+++ b/src/man8/bdflush.8
@@ -0,0 +1,86 @@
+.\" -*- nroff -*-
+.TH bdflush 8 "Aug 1994"
+.SH NAME
+bdflush \- 将dirty缓存写回到磁盘的核心守护进程。
+.SH 总览(SYNOPSIS)
+.B bdflush [opt]
+.SH 描述(DESCRIPTION)
+.B bdflush
+被用来启动核心守护进程将内存中的dirty缓存写到磁盘上。真正清洁工作是一个核心程序完成的。
+bdflush实际上只是派生出一个新的进程调用这个永远不会返回的核心程序。
+.PP
+.B bdflush
+实际上也派生出第二个守护进程,这个进程实际上象一个传统的更新程序,除了那些缓存在变化了一个位前
+不会被考虑用来进行写操作。当缓存的dirty位被置位时,时钟开始计时。当经过一定的时间间隔后,缓存将
+会被写回到磁盘上。对于数据缓存和位元数据缓存(比如目录,位图,间接区块等等)来说,时间间隔是不
+同的。当你在运行bdflush时使用了一些命令行参数的时候,当前一些配置会显示在屏幕上。数据缓存刷新间
+隔的默认值是30秒,位元数据是5秒。
+.PP
+在正常情况下,两个守护进程使用/etc/rc下的一个
+.PP
+/sbin/update
+.PP
+命令来执行。
+值得注意的是你需要让这个两个守护进程同时运行,因为每个守护进程都有其作用。同时也要注意这个命令
+需要在任何主I/O设备运行前执行。需要特别说明的是,在对文件系统使用fsck命令检查前或者将文件系统激
+活为读写模式前应该调用update这个命令。
+.PP
+当bdflush被一个没有超级权限的用户执行时,它就会调用flush和sync函数,然后退出。千万不要同时运行20
+个update守护进程……
+.PP
+.SH “命令行选项”(COMMAND\-LINE OPTIONS)
+.TP 0.5i
+.B "-d "
+显示核心参数。使用这个选项可以防止守护进程的运行。
+.TP 0.5i
+.B "-h "
+打印出使用方法(帮助)。
+.TP 0.5i
+.B "-s "
+如果bdflush的默认为以前的update方法,就经常性的调用sync。
+默认值:30秒。
+.TP 0.5i
+.B "-f "
+经常性的调用flush。默认值:5秒。
+.TP 0.5i
+.B "-0 "
+检测dirty缓存区块时使用LRU算法的最大块。
+.TP 0.5i
+.B "-1 "
+bdflush激活时需要写到磁盘上的最大dirty缓存数量。
+.TP 0.5i
+.B "-2 "
+将clean缓存挂到标志着空闲队列的refill_freelist列表上的数字标识。
+.TP 0.5i
+.B "-3 "
+在refill_freelist队列中激活bdflush的dirty区块临界值。
+.TP 0.5i
+.B "-4 "
+查询空闲簇所使用的缓存百分比。
+.TP 0.5i
+.B "-5 "
+数据缓存在刷新前的可更新时间。
+.TP 0.5i
+.B "-6 "
+非数据(目录,位图等等)缓存在刷新前可更新时间。
+.TP 0.5i
+.B "-7 "
+快速缓存调用平均持续时间。
+.TP 0.5i
+.B "-8 "
+LAV比率(用来决定缓存更迭的临界值)
+.SH 作者(AUTHOR)
+.B bdflush
+是由Eric Youngdale <ericy at gnu.ai.mit.edu>编写.
+主要目的是提高核心刷新dirty缓存的灵活性,并且增加了缓存集群技术。
+其他的作者还有Phil Bostley <bostley at cs.colorado.edu> 和
+Daniel Quinlan <quinlan at yggdrasil.com>.
+.SH 缺陷(BUGS)
+如果有的话,那一定是在核心代码中。
+
+.SH "[中文版维护人]"
+.B billpan <billpan at netease.com>
+.SH "[中文版最新更新]"
+.BR 2002/01/10
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/blockdev.8 b/src/man8/blockdev.8
new file mode 100644
index 0000000..14a8f26
--- /dev/null
+++ b/src/man8/blockdev.8
@@ -0,0 +1,60 @@
+.\" -*- nroff -*-
+.\" Copyright 1998 Andries E. Brouwer (aeb at cwi.nl)
+.\"
+.\" May be distributed under the GNU General Public License
+.TH BLOCKDEV 8 "May 2000" ""
+.SH NAME
+blockdev \- 从命令行调用区块设备控制程序
+.SH 总览(SYNOPSIS)
+.B blockdev
+.RI [ options ]
+.I commands devices
+.SH 描述(DESCRIPTION)
+.B blockdev
+工具允许从命令行调用区块设备控制程序。
+.SH 选项(OPTIONS)
+.TP
+.B \-V
+打印版本信息并退出。
+.TP
+.B \-q
+安静。
+.TP
+.B \-v
+详细信息。
+.SH 命令(COMMANDS)
+.TP
+.B \--setro
+设置只读模式。
+.TP
+.B \--setrw
+设置读写模式。
+.TP
+.B \--getro
+只读模式检测。如果是只读模式,显示1,否则显示0。
+.TP
+.B \--getss
+用字节为单位打印扇区大小——一般是512字节。
+.TP
+.B \--getsize
+显示设备容量(使用512个字节大小的扇区为单位)
+.TP
+.BI \--setra " N"
+设置预读扇区(512字节)为
+.I N
+个。
+.TP
+.B \--getra
+打印预读扇区(512字节)
+.TP
+.B \--flushbufs
+刷新缓存。
+.TP
+.B \--rereadpt
+重读分区表。
+.SH "[中文版维护人]"
+.B billpan <billpan at netease.com>
+.SH "[中文版最新更新]"
+.BR 2002/01/10
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/chat.8 b/src/man8/chat.8
new file mode 100644
index 0000000..1c6069a
--- /dev/null
+++ b/src/man8/chat.8
@@ -0,0 +1,485 @@
+.\" -*- nroff -*-
+.\" manual page [] for chat 1.8
+.\" SH section heading
+.\" SS subsection heading
+.\" LP paragraph
+.\" IP indented paragraph
+.\" TP hanging label
+.TH CHAT 8 "22 May 1999" "Chat Version 1.22"
+.SH NAME
+chat \- 與數據機自動溝通的指令稿
+.SH "总览 SYNOPSIS"
+.B chat
+[
+.I options
+]
+.I script
+.SH "描述 DESCRIPTION"
+.LP
+\fIchat\fR 程式在電腦與數據機之間定義溝通交換事宜。 它最主要的
+目的是用來在點對點協定的隱形程式 (pppd) 以及遠端的 pppd  程序
+之間建立連線。
+.SH "选项 OPTIONS"
+.TP
+.B -f \fI<chat file>
+從 chat 檔案讀取 chat 指令稿。這個選項的使用與 chat 的
+令稿參數互斥(mutually exclusive)。使用者必須具有存取該
+檔案的讀取權。在檔案中允許多線(multiple lines)設定。應
+該要以空白或是橫向定位(horizontal tab)字元來分隔字串。
+.TP
+.B -t \fI<timeout>
+對於所要接收的期待字串(expected string)設定逾時限制。  如果在該時間限制內沒有接收到該字串的話那麼就不送出回覆  字串(reply string)。 可以送出一個變通(alternate)的回覆  或者如果沒有變通的回覆字串則該指令稿將會失敗。一個失敗  的指令稿將會使得 chat 程式以一個非零的錯誤碼結束。
+.TP
+.B -r \fI<report file>
+Set the file for output of the report strings. If you use the keyword
+\fIREPORT\fR, the resulting strings are written to this file. If this
+option is not used and you still use \fIREPORT\fR keywords, the
+\fIstderr\fR file is used for the report strings.
+.TP
+.B -e
+Start with the echo option turned on. Echoing may also be turned on
+or off at specific points in the chat script by using the \fIECHO\fR
+keyword. When echoing is enabled, all output from the modem is echoed
+to \fIstderr\fR.
+.TP
+.B -E
+Enables environment variable substituion within chat scripts using the
+standard \fI$xxx\fR syntax.
+.TP
+.B -v
+要求 chat 指令稿以冗長(verbose)模式執行。 這個 chat 程  式接下來會將所有從數據機接收的文字以及輸出的字串記錄到  SYSLOG 去。The default is to log through the SYSLOG;
+the logging method may be altered with the -S and -s flags.
+.TP
+.B -V
+Request that the \fIchat\fR script be executed in a stderr verbose
+mode. The \fIchat\fR program will then log all text received from the
+modem and the output strings sent to the modem to the stderr device. This
+device is usually the local console at the station running the chat or
+pppd program.
+.TP
+.B -s
+Use stderr.  All log messages from '-v' and all error messages will be
+sent to stderr.
+.TP
+.B -S
+Do not use the SYSLOG.  By default, error messages are sent to the
+SYSLOG.  The use of -S will prevent both log messages from '-v' and
+error messages from being sent to the SYSLOG.
+.TP
+.B -T \fI<phone number>
+Pass in an arbitary string, usually a phone number, that will be
+substituted for the \\T substitution metacharacter in a send string.
+.TP
+.B -U \fI<phone number 2>
+Pass in a second string, usually a phone number, that will be
+substituted for the \\U substitution metacharacter in a send string.
+This is useful when dialing an ISDN terminal adapter that requires two 
+numbers.
+.TP
+.B script
+script 如果指令稿沒有以 -f 選項指定在檔案裡那麼該指令稿會如同  參數般被包含在 chat 程式裡。
+.SH "CHAT 脚本 SCRIPT"
+.LP
+\fIchat\fR 脚本定義通訊過程
+.LP
+一個指令稿裡包含一個或多個〞期待對方送出(expect-send)〞的配對
+字串(pairs of string),以空白隔開,還有一個選擇性的〞期待對方
+送出之候補(subexpect-subsend)〞配對字串,以短線(dash)隔開。像
+下面這個例子:
+.IP
+ogin:-BREAK-ogin: ppp ssword: hello2u2
+.LP
+這一行指示 chat 程式應該期待 "ogin:" 這個字串。如果在所分配的
+時間區間內接收簽入提示失敗的話, 那它就送出一個中斷程序(break
+sequence)給遠端然後期待 "ogin:" 這個字串。 如果第一個 "ogin:"
+被接收到那麼中斷程序就不會產生。
+.LP
+一旦它接收到該簽入提示則 chat 程式將會送出 ppp 這個字串然後期
+待 "ssword:" 這個提示。當它接收到密碼提示以後,它將會送出密碼
+hello2u2 。
+.LP
+一般在回覆字串後面會跟著送出一個機架返回(carriage return)。在
+〞期待〞字串裡除非以 \r  字元程序(character sequence)指定為必
+須否則不會期待它的出現。
+.LP
+期待程序(expect sequence)應該只包含辨認字串所需要的資料。因為
+它一般是儲放在磁碟檔案裡,它不應該包含變動的資訊。 通常以期待
+字串來尋找時間字串(time strings), 網路辨識字串(network iden-
+tification strings),或是其它變動的資料是不被接受的。
+.LP
+為求協助修正在初始化程序中(initial sequence) 可能會傳送錯誤的
+字元,所以尋找 "ogin:" 這個字串而不是 "login:" 。 開頭的  "l"
+字元可能接收錯誤而你永遠找不到該字串, 即使它已經被系統送出。
+因此緣故,指令稿尋找 "ogin:" 而不是 "login:" 以及 "ssword" 而
+不是 "password:" 。
+.LP
+一個非常簡單的指令稿看起來可能像這樣:
+.IP
+ogin: ppp ssword: hello2u2
+.LP
+換句話說, 期待 ...ogin:,  送出 ppp,  期待 ...ssword:, 再送出
+hello2u2 。
+.LP
+在實際使用上,簡單的指令稿是罕見的。最少最少, 原先的字串沒有
+被接收時你應該要把候補期待(sub-sequences)包括進來。例如,考慮
+下面這個例子:
+.IP
+ogin:--ogin: ppp ssword: hello2u2
+.LP
+這會是一個比前面所用的簡單指令稿更好的指令稿。 這個會尋找相同
+同的 login: 提示,然而, 如果沒有接收到的話, 會送出一個單獨的
+返回程序(return sequence)並且它會接著再次尋找 login: 。要是雜
+雜訊掩蓋掉第一個 login 提示那麼接著送出空線路(empty line)經常
+將會再次產生簽入提示。
+.SH COMMENTS
+Comments can be embedded in the chat script. A comment is a line which
+starts with the \fB#\fR (hash) character in column 1. Such comment
+lines are just ignored by the chat program. If a '#' character is to
+be expected as the first character of the expect sequence, you should
+quote the expect string.
+If you want to wait for a prompt that starts with a # (hash)
+character, you would have to write something like this:
+.IP
+# Now wait for the prompt and send logout string
+.br
+\'# ' logout
+.LP
+
+.SH SENDING DATA FROM A FILE
+If the string to send starts with an at sign (@), the rest of the
+string is taken to be the name of a file to read to get the string to
+send.  If the last character of the data read is a newline, it is
+removed.  The file can be a named pipe (or fifo) instead of a regular
+file.  This provides a way for \fBchat\fR to communicate with another
+program, for example, a program to prompt the user and receive a
+password typed in.
+.LP
+
+.SH "放弃字符串 ABORT STRINGS"
+許多數據機會以字串來回報呼叫的狀況。 這些字串可能是 CONNECTED
+或是 NO CARRIER 或是 BUSY 。 通常要是數據機連線到遠端失敗的話
+應該會希望結束指令稿。 困難是指令稿不會確實地知道它可能接收到
+哪個數據機字串。在某次嘗試時, 他可能接收到 BUSY 然而下次它可
+能接收到 NO CARRIER 。
+.LP
+這些〞失敗〞字串可以用 ABORT 程序指定到指令稿中。像是下面這個
+例子般地寫到指令稿裡:
+.IP
+ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT
+.LP
+這個程序將不會期待什麼;而且接著送出 ATZ 這個字串。對此期待的
+回應是 OK 這個字串。當它接收到 OK 時,字串 ADTD5551212 就進行
+撥號。期待字串是 CONNECT 。 如果字串 CONNECT 被接收到那麼就會
+執行指令稿其餘的部份。然而,要是數據機發現電話忙線, 他將會送
+出 BUSY 這個字串。 這會使得該字串符合失敗字元程序(abort char-
+acter)。 這個指令稿將會因為它發現一個失敗字串(abort string)而
+失敗(fail)。如果他接收到的是 NO CARRIER 字串, 它也會因為同樣
+的原因而失敗。不是可以接收到字串就是字串將終結 chat 指令稿。
+.SH CLR_ABORT STRINGS
+This sequence allows for clearing previously set \fBABORT\fR strings.
+\fBABORT\fR strings are kept in an array of a pre-determined size (at
+compilation time); \fBCLR_ABORT\fR will reclaim the space for cleared
+entries so that new strings can use that space.
+.SH SAY STRINGS
+The \fBSAY\fR directive allows the script to send strings to the user
+at the terminal via standard error.  If \fBchat\fR is being run by
+pppd, and pppd is running as a daemon (detached from its controlling
+terminal), standard error will normally be redirected to the file
+/etc/ppp/connect-errors.
+.LP
+\fBSAY\fR strings must be enclosed in single or double quotes. If
+carriage return and line feed are needed in the string to be output,
+you must explicitely add them to your string.
+.LP
+The SAY strings could be used to give progress messages in sections of
+the script where you want to have 'ECHO OFF' but still let the user
+know what is happening.  An example is:
+.IP
+ABORT BUSY 
+.br
+ECHO OFF 
+.br
+SAY "Dialling your ISP...\\n" 
+.br
+\'' ATDT5551212 
+.br
+TIMEOUT 120
+.br
+SAY "Waiting up to 2 minutes for connection ... "
+.br
+CONNECT '' 
+.br
+SAY "Connected, now logging in ...\n"
+.br
+ogin: account
+.br
+ssword: pass
+.br
+$ \c
+SAY "Logged in OK ...\n"
+\fIetc ...\fR
+.LP
+This sequence will only present the SAY strings to the user and all
+the details of the script will remain hidden. For example, if the
+above script works, the user will see:
+.IP
+Dialling your ISP...
+.br
+Waiting up to 2 minutes for connection ... Connected, now logging in ...
+.br
+Logged in OK ...
+.LP
+
+.SH REPORT STRINGS
+A \fBreport\fR string is similar to the ABORT string. The difference
+is that the strings, and all characters to the next control character
+such as a carriage return, are written to the report file.
+.LP
+The report strings may be used to isolate the transmission rate of the
+modem's connect string and return the value to the chat user. The
+analysis of the report string logic occurs in conjunction with the
+other string processing such as looking for the expect string. The use
+of the same string for a report and abort sequence is probably not
+very useful, however, it is possible.
+.LP
+The report strings to no change the completion code of the program.
+.LP
+These "report" strings may be specified in the script using the \fIREPORT\fR
+sequence. It is written in the script as in the following example:
+.IP
+REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account
+.LP
+This sequence will expect nothing; and then send the string
+ATDT5551212 to dial the telephone. The expected string is
+\fICONNECT\fR. If the string \fICONNECT\fR is received the remainder
+of the script is executed. In addition the program will write to the
+expect-file the string "CONNECT" plus any characters which follow it
+such as the connection rate.
+.SH CLR_REPORT STRINGS
+This sequence allows for clearing previously set \fBREPORT\fR strings.
+\fBREPORT\fR strings are kept in an array of a pre-determined size (at
+compilation time); \fBCLR_REPORT\fR will reclaim the space for cleared
+entries so that new strings can use that space.
+.SH ECHO
+The echo options controls whether the output from the modem is echoed
+to \fIstderr\fR. This option may be set with the \fI-e\fR option, but
+it can also be controlled by the \fIECHO\fR keyword. The "expect-send"
+pair \fIECHO\fR \fION\fR enables echoing, and \fIECHO\fR \fIOFF\fR
+disables it. With this keyword you can select which parts of the
+conversation should be visible. For instance, with the following
+script:
+.IP
+ABORT   'BUSY'
+.br
+ABORT   'NO CARRIER'
+.br
+''      ATZ
+.br
+OK\\r\\n  ATD1234567
+.br
+\\r\\n    \\c
+.br
+ECHO    ON
+.br
+CONNECT \\c
+.br
+ogin:   account
+.LP
+all output resulting from modem configuration and dialing is not visible,
+but starting with the \fICONNECT\fR (or \fIBUSY\fR) message, everything
+will be echoed.
+.SH HANGUP
+The HANGUP options control whether a modem hangup should be considered
+as an error or not.  This option is useful in scripts for dialling
+systems which will hang up and call your system back.  The HANGUP
+options can be \fBON\fR or \fBOFF\fR.
+.br
+When HANGUP is set OFF and the modem hangs up (e.g., after the first
+stage of logging in to a callback system), \fBchat\fR will continue
+running the script (e.g., waiting for the incoming call and second
+stage login prompt). As soon as the incoming call is connected, you
+should use the \fBHANGUP ON\fR directive to reinstall normal hang up
+signal behavior.  Here is an (simple) example script:
+.IP
+ABORT   'BUSY'
+.br
+''      ATZ
+.br
+OK\\r\\n  ATD1234567
+.br
+\\r\\n    \\c
+.br
+CONNECT \\c
+.br
+\'Callback login:' call_back_ID
+.br
+HANGUP OFF
+.br
+ABORT "Bad Login"
+.br
+\'Callback Password:' Call_back_password
+.br
+TIMEOUT 120
+.br
+CONNECT \\c
+.br
+HANGUP ON
+.br
+ABORT "NO CARRIER"
+.br
+ogin:--BREAK--ogin: real_account
+.br
+\fIetc ...\fR
+.LP
+.SH "超时 TIMEOUT"
+初始的逾時值是 45 秒。這可以用 -t 參數來加以改變。
+.LP
+要對下一個期待字串改變逾時值的話,可以使用下面這個例子:
+.IP
+ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2
+.LP
+這將會在期待 "login:" 提示的時候把逾時限制改成 10 秒。 逾時限
+制接著在它尋找密碼提示時被改成 5 秒。
+.LP
+逾時限制一旦改變就會持續作用直到它再度被改變。
+.SH "SENDING 发送 EOT"
+EOT 這個特別的回覆字串指示 chat 程式應該送出一個 EOT 字元到遠
+端去。這是一般的檔案結束(End-of-file)字元程序。 在 EOT 後面並
+不會跟著送出一個返回字元(return)。
+.PR
+這個 EOT 程序可以用 ^D 序列嵌入到送出的字串裡。
+.SH "產生中斷 GENERATING BREAK"
+BREAK 這個特別的回覆字串將會使得一個中斷情況被送出。 這個中斷
+是傳送端的一個特殊。接收端一般對此的處理是改變傳輸率。 它可以
+用來循環測試遠端可能的傳輸率直到你能夠接到有效的簽入提示。
+.PR
+ 這
+個中斷程序可以用 \fI\\K\fR  序列嵌入到送出的字串裡。
+.SH "转义序列 ESCAPE SEQUENCES"
+期待以及回覆字串可以包含转义序列。 所有這種程序在回覆字串中都
+是合法的。有許多在期待字串中是合法的。 那些在期待程序中無效的
+會被指出。
+.TP
+.B ''
+期待或送出一個空字串(null string) 。如果你送出一個空字  串那麼它還會送出一個返回字元。這個程序可以是一對省略符  號(apostrophe)或者也可以是引用字元。
+.TP
+.B \\\\b
+代表一個退位(backspace)字元。
+.TP
+.B \\\\c
+抑制在回覆字串結尾的新列(newline)字元。 這是送出沒有返  回字元尾隨的字串的唯一方法。它必須在送出字串的結尾。例  如,這個程序 hello\c 將會簡單地送出字元 h, e, l, l, o。  (在期待字串中無效。)
+.TP
+.B \\\\d
+延遲一秒鐘。該程式使用最長延遲為一秒的 sleep(1) 。(在  期待字串中無效。)
+.TP
+.B \\\\K
+插入一個中斷(在期待字串中無效。)
+.TP
+.B \\\\n
+送出一個新列(newline)或換行(linefeed)字元。
+.TP
+.B \\\\N
+送出一個空字元(null character)。同樣的程序可以用 \0 代  替。(在期待字串中無效。)
+.TP
+.B \\\\p
+暫停一小段時間。延遲 1/10 秒。(在期待字串中無效。)
+.TP
+.B \\\\q
+抑制字串寫往 SYSLOG 檔案。該 ?????? 字串被記錄到自己的  空間。(在期待字串中無效。)
+.TP
+.B \\\\r
+傳送或期待一個機架返回(字元)
+.TP
+.B \\\\s
+代替字串中的空白。這個可以用在不願引用包含空白的字串之  時。'HI TIM' 以及 HI\sTIM 是相同的。
+.TP
+.B \\\\t
+傳送或期待一個定位(tab)字元。
+.TP
+.B \\\\T
+Send the phone number string as specified with the \fI-T\fR option
+.I (not valid in expect.)
+.TP
+.B \\\\U
+Send the phone number 2 string as specified with the \fI-U\fR option
+.I (not valid in expect.)
+.TP
+.B \\\\\\\\
+傳送或期待一個倒斜線(backslash)字元。
+.TP
+.B \\\\ddd
+將八進位數字 (ddd) 折疊(collapse)成單一的 ASCII 字元並  將其送出。(某些字元在期待字串中無效。)
+.TP
+.B \^^C
+替換含有以 C 代表之控制字元的程序。例如,字元 DC1(17)  是以 ^Q 表示。(某些字元在期待字串中無效。)
+.SH ENVIRONMENT VARIABLES
+Environment variables are available within chat scripts, if  the \fI-E\fR
+option was specified in the command line. The metacharacter \fI$\fR is used
+to introduce the name of the environment variable to substitute. If the
+substition fails, because the requested environment variable is not set,
+\fInothing\fR is replaced for the variable.
+.SH TERMINATION CODES
+The \fIchat\fR program will terminate with the following completion
+codes.
+.TP
+.B 0
+The normal termination of the program. This indicates that the script
+was executed without error to the normal conclusion.
+.TP
+.B 1
+One or more of the parameters are invalid or an expect string was too
+large for the internal buffers. This indicates that the program as not
+properly executed.
+.TP
+.B 2
+An error occurred during the execution of the program. This may be due
+to a read or write operation failing for some reason or chat receiving
+a signal such as SIGINT.
+.TP
+.B 3
+A timeout event occurred when there was an \fIexpect\fR string without
+having a "-subsend" string. This may mean that you did not program the
+script correctly for the condition or that some unexpected event has
+occurred and the expected string could not be found.
+.TP
+.B 4
+The first string marked as an \fIABORT\fR condition occurred.
+.TP
+.B 5
+The second string marked as an \fIABORT\fR condition occurred.
+.TP
+.B 6
+The third string marked as an \fIABORT\fR condition occurred.
+.TP
+.B 7
+The fourth string marked as an \fIABORT\fR condition occurred.
+.TP
+.B ...
+The other termination codes are also strings marked as an \fIABORT\fR
+condition.
+.LP
+Using the termination code, it is possible to determine which event
+terminated the script. It is possible to decide if the string "BUSY"
+was received from the modem as opposed to "NO DIAL TONE". While the
+first event may be retried, the second will probably have little
+chance of succeeding during a retry.
+.SH "参见 SEE ALSO"
+關於 chat 指令稿的其它資訊可以在 UUCP 文件裡找到。chat 指令稿
+的概念由 uucico 程式所使用的指令稿來的。
+.LP
+uucico(1), uucp(1)
+.SH COPYRIGHT
+The \fIchat\fR program is in public domain. This is not the GNU public
+license. If it breaks then you get to keep both pieces.
+
+.SH "[中文版维护人]"
+.B asdchen <asdchen at pc2.hinet.net>
+.\" 原始文件:ppp 2.1.2b - chat.8.gz
+.\" 檔案敘述:數據機撥號軟體線上手冊
+.\" 文件編號:LRG.LDTP.MANUAL.003
+.\" 翻譯日期:1995/09/30
+.\" 翻譯維護:asdchen at pc2.hinet.net        
+.SH "[中文版最新更新]"
+.BR 1995/09/30
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/chpasswd.8 b/src/man8/chpasswd.8
new file mode 100644
index 0000000..146fd7c
--- /dev/null
+++ b/src/man8/chpasswd.8
@@ -0,0 +1,69 @@
+.\" Copyright 1991, Julianne Frances Haugh
+.\" All rights reserved.
+.\"; 中文版版权所有 soloman, Laser www.linuxforum.net 2000
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.TH CHPASSWD 8
+.SH NAME
+chpasswd \- 成批更新用户的口令
+.SH 总览
+chpasswd [\-e]
+.SH 描述
+.B chpasswd
+从系统的标准输入读入用户的名称和口令,
+并利用这些信息来更新系统上已存在的用户的口令。
+在没有用 \-e 这个开关选项的情况下,口令将按明文的形式接收。
+如果使用了 \-e 选项,口令将只能以加密的方式传递。
+每行的具体格式如下所示:
+.sp 1
+		\fI用户名\fR:\fI新口令\fR
+.sp 1
+用户名必须是系统上已存在的用户。
+输入的密码在必要时进行加密处理,
+如果口令文件具有时间特性,则同时更新。
+.PP
+此命令适用于大型的系统,在此类系统中,
+用户一般都是一次同时生成的,而用 adduser 和
+passwd 口令来对其一一进行设置一般说往往比较慢。
+.SH 注意事项
+.\" The \fBmkpasswd\fR command must be executed afterwards to update the
+.\" DBM password files.
+.\" This command may be discarded in favor of the newusers(8) command.
+因为可以使用文件重定向进行输入,
+即:chpasswd < user&passwd-filename, 
+如果输入文件是按非加密方式传递的话,请对该文件进行适当的加密。
+.SH 又见
+passwd(1),useradd(8),newuser(8)
+.SH 作者
+Julianne Frances Haugh (jfh at bga.com)
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+2000/11/26
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man8/convertquota.8 b/src/man8/convertquota.8
new file mode 100644
index 0000000..a692e8e
--- /dev/null
+++ b/src/man8/convertquota.8
@@ -0,0 +1,56 @@
+.TH CONVERTQUOTA 8 "Fri Mar 09 2001"
+.UC 4
+.SH NAME
+convertquota \- 把老的配额文件转换为新的格式
+.SH "总览 (SYNOPSIS)"
+.B convertquota
+[
+.B -ug
+]
+.I filesystem
+.SH "描述 (DESCRIPTION)"
+.B convertquota
+把老的配额文件
+.BR quota.user
+和
+.BR quota.group
+转换为Red Hat Linux内核2.4以及更新的
+.IR 文件系统
+所用的
+.BR aquota.user
+和
+.BR aquota.group 。
+.PP
+新的格式可以允许为32位uids/gids设定配额, 为root设定配额,
+以字节(byte)为单位统计所用空间(可以在ReiserFS中使用配额), 并且与结构无关。 
+新的格式用Radix树(一种简单的树结构)为配额文件中存储信息的主要方式。
+.SH "选项 (OPTIONS)"
+.TP
+.B -u
+转换用户配额文件。 此选项是默认的。
+.TP
+.B -g
+转换组配额文件。
+.SH "文件 (FILES)"
+.TP 20
+.B aquota.user
+新的用户配额文件
+.TP
+.B aquota.group
+新的组配额文件
+.SH "参见 (SEE ALSO)"
+.BR quota (1),
+.BR setquota (8),
+.BR edquota (8),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8)
+.SH "作者 (AUTHOR)"
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/7/18
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/cron.8 b/src/man8/cron.8
new file mode 100644
index 0000000..04b4f40
--- /dev/null
+++ b/src/man8/cron.8
@@ -0,0 +1,22 @@
+.TH cron 8
+.SH NAME
+.B cron \- 定期执行指定命令的守护程序 (Vixie Cron)
+.SH 总览
+.B cron
+.SH 描述
+Cron 应该由 /etc/rc 或者 /etc/rc.local 启动(译注:有很多发行版与此不同的,如 RedHat6.x 使用 /etc/rc.d/init.d/crond )。系统会立即返回提示符状态,因此没有必要后缀 '&' 来启动。
+Cron 在目录 /var/spool/cron 下搜索以 /etc/passwd 中账户名命名的 crontab 文件,将找到的文件内容加载到内存中。 Cron 还搜索 /etc/crontab 和目录 /etc/cron.d/ 下的文件,但这些文件使用另外的格式。(见 crontab(5) )。 Cron 平时出于休眠状态,每分钟醒来一次,检查所有储存的 crontab 文件,检查其中的每一条命令并适时执行。执行命令时,任何输出通过邮件发往 crontab 的拥有者(如果 crontab 中设置了 MAILTO 环境变量,就发往此变量所指的用户)。
+.PP
+另外, cron 每分钟检查它的 spool 目录以及 /etc/crontab) 的 modtime 【译注:即文件的最新修改时间,在文件系统的 i-node 中以 mtime 标记】,如果发生变化, cron 将检查所有 crontab 文件的 modtime ,并重新加载已改变的。这意味着即使修改 crontab 文件也没有必要重新启动 cron 守护程序。注意当 Crontab(1) 命令改变 crontab 时会刷新 spool 目录的 modtime 标记。
+.PP
+.SH 另见
+crontab(1), crontab(5)
+.SH 作者
+Paul Vixie
+
+.SH "[中文版维护人]"
+.B Wang Dong <wangdong at 163.net>
+.SH "[中文版最新更新]"
+2000年12月23日
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/dmesg.8 b/src/man8/dmesg.8
new file mode 100644
index 0000000..d83ecfc
--- /dev/null
+++ b/src/man8/dmesg.8
@@ -0,0 +1,61 @@
+.\" Copyright 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.TH DMESG 8 
+.SH NAME
+dmesg \- print or control the kernel ring buffer
+.SH 总览
+.BI "dmesg [ \-c ] [ \-n " 级别 " ] [ \-s " 缓冲区大小 " ]"
+.SH 描述
+.B dmesg
+用于检测和控制内核环缓冲。
+
+程序用来帮助用户了解系统的启动信息。用户只需使用命令:
+.RS
+dmesg > boot.messages
+.RE
+然后将文件
+.I boot.messages
+邮寄给某些可以帮你调试系统的人。而无须手工拷贝系统启动信息。
+.SH 选项
+.TP
+.B \-c
+当完成打印显示后清除环缓冲内的内容。
+.TP
+.BI \-s 缓冲区大小
+定义一个大小为"缓冲区大小"的缓冲区用于查询内核环缓冲区。
+默认大小为 8196(此大小与 2.0.33 和 2.1.103 内核的默认
+syslog 缓冲区大小一致),
+如果你设置了一个大于默认值的环缓冲区,
+那你就可以用这个选项定义一个相当的缓冲区
+来查看完整的环缓冲区内容。
+.TP
+.BI \-n 级别
+设置
+.I 级别
+为记录控制台启动信息的级别。比如,
+.B \-n 1
+指的就是将此级别设为最低级,
+除了内核恐慌信息之外不会向控制台显示信息。
+所有级别的启动信息还将记录到
+.IR /proc/kmsg ,
+文件中,因此,
+.BR syslogd (8)
+同样可以用来对信息的输出进行控制。当使用
+.B \-n
+选项时,
+.B dmesg
+将
+.I 不会 
+清除内核环缓冲区中的内容。
+当同时使用以上两个选项时,只有最后一个选项才会产生效果。
+.SH 又见
+.BR syslogd (8)
+.SH 作者
+Theodore Ts'o (tytso at athena.mit.edu)
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+2001/04/01
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/edquota.8 b/src/man8/edquota.8
new file mode 100644
index 0000000..83bbdbd
--- /dev/null
+++ b/src/man8/edquota.8
@@ -0,0 +1,120 @@
+.TH EDQUOTA 8 "2001年3月9日星期五"
+.SH NAME(名称)
+edquota \- 编辑用户配额
+.SH SYNOPSIS(总览)
+.B edquota
+[
+.B \-p
+.I proto-username
+] [
+.B \-u
+|
+.B \-g
+]
+.IR username .\|.\|.
+.LP
+.B edquota
+[
+.B \-u
+|
+.B \-g
+]
+.B \-t
+.SH DESCRIPTION(描述)
+.IX  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  edit "user quotas \(em \fLedquota\fP"
+.IX  "user quotas"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  "disk quotas"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  "quotas"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.IX  "file system"  "edquota command"  ""  "\fLedquota\fP \(em edit user quotas"
+.B edquota
+是一个配额编辑器(如果你想在脚本中设置配额,请参看
+.BR setquota (8)
+).
+在命令行上可以指定一个或多个用户或组.对于每个用户或组,会用
+.SM ASCII
+形式创建一个针对该用户或组的当前磁盘配额的临时文件,并对这个文件
+调用编辑器.随后可以修改配额,添加新的配额,等等.
+设置某个配额为零表示不施加任何配额限制.
+.PP
+可以允许用户超出它们的软限制一段宽限期,该宽限期对每个文件系统指定.
+一旦超出此宽限期,软限制即作为硬限制来执行.
+.PP
+文件中列出的当前的使用信息是用于提供信息的;
+只可以修改硬和软限制.
+.PP
+一旦离开编辑器,
+.B edquota
+就读入临时文件并修改二进制配额文件以反映所作的修改.
+.LP
+调用的编辑器为
+.BR vi (1)
+除非
+.SB VISUAL
+或者
+.SB EDITOR
+环境变量指定了其它的编辑器.
+.LP
+只有超级用户可以编辑配额.(为了在一个文件系统上建立配额,文件系统的
+root目录下必须包含一个由root所有,叫做
+.BR aquota.user
+或
+.BR aquota.group
+的文件.
+参看
+.BR quotaon (8)
+以了解详情.)
+.SH OPTIONS(选项)
+.TP
+.B \-u
+编辑用户配额.这是默认的选项.
+.TP
+.B \-g
+编辑组配额.
+.TP
+.B \-p
+对每个指定的用户/组的原配额加倍.
+这是用来对一组用户/组初始化配额时常用的方法.
+.TP
+.B \-t
+对每个文件系统编辑软时间限制.
+sec(onds),min(utes),hour(s),day(s)时间单元都是可识别的.
+时间限制显示为最大的可能时间单元,以使该值大于或等于任何值.
+.SH FILES(相关文件)
+.PD 0
+.TP 20
+位于文件系统root下的
+.BR aquota.user
+或
+.BR aquota.group
+配额文件.
+.TP
+.B /etc/mtab
+已挂载的文件系统表
+.PD
+.SH SEE ALSO(另见)
+.BR quota (1),
+.BR vi (1),
+.BR quotactl (2),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8),
+.BR convertquota (8),
+.BR setquota (8)
+.SH BUGS(漏洞)
+临时文件的格式是无法预测的.
+.SH AUTHOR(作者)
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+.br
+基于老的
+.B edquota
+可能作者:
+.br
+Marco van Wieringen \<mvw at planets.elm.net\>
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+.B 2001.07.09
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/exportfs.8 b/src/man8/exportfs.8
new file mode 100644
index 0000000..b327025
--- /dev/null
+++ b/src/man8/exportfs.8
@@ -0,0 +1,226 @@
+.\"
+.\" exportfs(8)
+.\" 
+.\" Copyright (C) 1995 Olaf Kirch <okir at monad.swb.de>
+.\" Modifications 1999-2003 Neil Brown <neilb at cse.unsw.edu.au>
+.TH exportfs 8 "18 July 2003"
+.SH NAME
+exportfs \- 管理NFS共享文件系统列表
+.SH "概述 (SYNOPSIS)"
+.BI "/usr/sbin/exportfs [-avi] [-o " "options,.." "] [" "client:/path" " ..]
+.br
+.BI "/usr/sbin/exportfs -r [-v]"
+.br
+.BI "/usr/sbin/exportfs [-av] -u [" "client:/path" " ..]
+.br
+.BI "/usr/sbin/exportfs [-v]
+.br
+.BI "/usr/sbin/exportfs -f"
+.br
+.SH "描述 (DESCRIPTION)"
+.B exportfs
+命令用来管理当前NFS共享的文件系统列表。
+这个列表保存在一个单独的文件
+.BR /var/lib/nfs/xtab
+中,当远端主机要求对一个文件系统树加载并访问时由
+.B mountd
+读取,列表中活动的一部分也保存在在内核共享表中。
+.P
+通常
+.B xtab
+在执行
+.BR "exportfs -a" .
+.P
+的时候,根据
+.B /etc/exports 
+中定义的共享列表来初始化。
+但是,管理员可以选择添加或删除独立的文件系统,不必修改
+.B /etc/exports
+,只要执行
+.BR exportfs 
+就可以了。
+.P
+.B exportfs
+和它的合作者
+.B mountd
+工作在两种模式之一,一种是2.4以及早期的内核采用的传统模式,
+另一种是2.6以后内核采用的模式。
+2.6之后的内核提供了
+.B nfsd
+虚拟文件系统,挂载点是
+.BR /proc/fs/nfs 。
+在2.6内核中如果没有挂载这个系统,将使用传统模式。
+.P
+在新模式中,
+.B exportfs
+不为内核提供任何信息,只通过
+.B /var/lib/nfs/xtab
+文件将信息提供给
+.B mountd 
+。
+.B mountd
+将等待内核请求,提供需要的信息。
+.P
+在传统模式中,任何标识了一台特定主机(而不是一个子网或是一个工作组)的
+共享请求会直接进入内核共享表,同时写入
+.BR /var/lib/nfs/xtab .
+甚至于,任何列在
+.B /var/lib/nfs/rmtab
+中的挂载点,只要它符合一个不指定主机的共享请求,将使得
+.B rmtab
+给出的主机的一个适当的共享条目进入内核的共享表中。
+.SH "选项 (OPTIONS)"
+.TP 
+.B -a
+打开或取消所有目录共享。
+.TP
+.BI "-o " options,...
+指定一列共享选项,与
+.BR exports(5) 
+中讲到的类似。
+.TP
+.B -i
+忽略
+.B /etc/exports
+文件,从而只使用默认的和命令行指定的选项。
+.TP
+.B -r
+重新共享所有目录。它使
+/var/lib/nfs/xtab
+和 
+/etc/exports
+同步。
+它将
+/etc/exports
+中已删除的条目从
+/var/lib/nfs/xtab
+中删除,将内核共享表中任何不再有效的条目移除。
+.TP
+.B -u
+取消一个或多个目录的共享。
+.TP
+.B -f
+在“新”模式下,刷新内核共享表之外的任何东西。
+任何活动的客户程序将在它们的下次请求中得到
+.B mountd
+添加的新的共享条目。
+.TP
+.B -v
+输出详细信息。当共享或者取消共享时,显示在做什么。
+显示当前共享列表的时候,同时显示共享的选项。
+.SH "讨论 (DISCUSSION)"
+.\" -------------------- Exporting Directories --------------------
+.SS "共享目录 (Exporting Directories)"
+第一条概述中显示出如何执行命令来添加新的共享。
+当执行
+.BR "exportfs -a" 时,
+所有
+.B exports(5)
+中的目录将添加到
+.B xtab
+并且将结果列表送进内核。
+.P
+.I host:/path
+参数指定了要共享的目录和可以访问它的主机。
+所有
+.B exports(5)
+中定义的格式都可以支持。
+想要将一个目录共享给所有其他机器,只要用
+.IR :/path 
+就可以了。
+.P
+这种指定一个特定主机/目录的共享选项来自于多种来源。
+有一系列的默认选项,可以在
+.B /etc/exports
+中指定它们(除非指定了
+.B -i
+选项)。
+另外,管理员可以使用
+.B -o
+参数和一系列以逗号分隔的选项来覆盖所有默认选项。
+做法就像在
+.BR exports(5) 
+中一样。
+因此,
+.B exportfs
+可以用来修改已经共享的目录的共享选项。
+.P
+.B nfsd(8)
+对内核共享表的修改会在命令行解析和
+.B xtab
+文件修改之后马上进行。
+.P
+默认的共享选项是
+.BR sync,ro,root_squash,no_delay 。
+.\" -------------------- Unexporting Directories ------------------
+.SS "取消共享 (Unexporting Directories)"
+第三种语法显示了怎样取消一个当前的共享目录。
+当执行
+.BR "exportfs -ua" ,
+的时候,
+.B xtab
+中的所有条目被从内核共享表中移除,
+这个文件会被清空。这样可以迅速停止所有NFS服务。
+.P
+要取消单独的共享条目,可以指定一个
+.I host:/path
+参数。这样删除了
+.B xtab
+中的条目并且移除了对应的内核条目(如果有的话)。
+.P
+.\" -------------------- Dumping the Export Table -----------------
+.SS "获取共享表 (Dumping the Export Table)"
+执行不带选项的
+.B exportfs
+将列出当前的共享列表。当给出
+.B -v
+选项时,会列出各自的标志。
+.\" -------------------- EXAMPLES ---------------------------------
+.SH "范例 (EXAMPLES)"
+这条命令将所有
+.B /etc/exports
+中列出的目录加入到
+/var/lib/nfs/xtab
+中,将结果送入内核:
+.P
+.nf
+.B "# exportfs -a
+.fi
+.P
+如果要将
+.B /usr/tmp
+目录共享给
+.BR djando 主机,
+允许匿名写入,应当这样:
+.P
+.nf
+.B "# exportfs -o async django:/usr/tmp
+.fi
+.\" -------------------- DEPENDENCIES -----------------------------
+.SH "依赖性 (DEPENDENCIES)"
+提供给IP子网,DNS和NIS域的共享不会使这些工作组中的客户程序马上就能读取NFS;
+这种类型的共享其实是向
+.B mountd(8)
+提供的信息,为来自这些客户的挂载请求授权。
+这通常不是一个大问题,因为重启过程中,任何存在的加载都保存在
+.B rmtab
+中。
+.P
+当取消一个子网或域的共享时,当前任何提供给这个工作组中的成员的共享
+将被检查。如果它们不再有效,它们将被移除。
+.P
+.\" -------------------- SEE ALSO --------------------------------
+.SH "参见 (SEE ALSO)"
+.BR exports(5) ", " mountd(8)
+.\" -------------------- AUTHOR ----------------------------------
+.SH "作者 (AUTHORS)"
+Olaf Kirch, <okir at monad.swb.de>
+.br
+Neil Brown, <neilb at cse.unsw.edu.au>
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.10.26
+.SH "《中国linux论坛man手册页翻译计划》:"
+.B http://cmpp.linuxforum.net 
+
diff --git a/src/man8/fdisk.8 b/src/man8/fdisk.8
new file mode 100644
index 0000000..d71752c
--- /dev/null
+++ b/src/man8/fdisk.8
@@ -0,0 +1,207 @@
+.\"; 中文版版权所有 soloman, Laser www.linuxforum.net 2000
+
+.TH FDISK 8 "11 June 1998" "Linux 2.0" "Linux程序员手册"
+.SH NAME
+fdisk \- Linux分区表操作工具软件
+.SH 总览
+.BI "fdisk [\-u]" 设备名
+.sp
+.BI "fdisk \-l [\-u] [" "设备名 ..." ]
+.sp
+.BI "fdisk \-s" "分区 ..."
+.sp
+.BI "fdisk \-v 
+.SH 描述
+硬盘可以被分成一个或多个逻辑磁盘,称为
+.IR 分区。
+这些分区信息都存放在硬盘0扇区的
+.IR "分区表"
+中。
+.PP	
+在 BSD 风格中,分区被称为“磁盘片”和“磁盘标签”
+.PP
+Linux 至少需要一个分区,即用做它的 root 文件系统。
+Linux 可以使用交换文件和/或交换分区,交换分区更有效。
+因此,通常用户会创建第二个 Linux 分区供交换分区使用。
+在 Intel 兼容的硬件上,启动系统的 BIOS 往往只能访问 1024 柱面之前的硬盘。
+因此,使用大硬盘的用户通常创建第三个只有几兆大小的小分区,
+通常用来装配在
+.IR /boot
+,用来存放内核映象和一些其它启动时需要的附属文件,
+所以应确保此分区必须是在BIOS可访问的部分。
+出于安全方面的考虑、管理方面的原因、备份的需要或为了某些测试,
+也可以将一个硬盘分成更多的分区使用。
+.PP
+.B fdisk
+(以第一种形式调用)是一个以菜单问答形式出现的用来创建和修改分区的程序。
+它可以辩认 DOS 类型的分区表和 BSD 或 SUN 类型的磁盘标签。
+.PP
+.I 设备
+通常是下列之一:
+.br
+.nf
+.RS
+		/dev/hda
+		/dev/hdb
+		/dev/sda
+		/dev/sdb
+.RE
+.fi		
+(/dev/hd[a-h] 指 IDE 硬盘,/dev/sd[a-p] 指 SCSI 硬盘,
+/dev/ed[a-d] 指 ESDI 硬盘,/dev/xd[ab] 指 XT 硬盘)。
+设备名指整个硬盘设备。
+
+.I 分区
+是在
+.I 设备名
+后跟一个分区号。例如:
+.B /dev/hda1
+是指系统在第一个 IDE 硬盘上的第一个分区。
+IDE 硬盘可以最多创建 63 个分区,SCSI 可以创建 15 个。
+又见
+.IR /usr/src/linux/Documnetation/devices.txt 。
+.PP
+一个 BSD/SUN 风格的磁盘标签可以描述 8 个分区,
+其中第三个应该是“整个磁盘”分区。
+不要在零柱面使用那些的确使用其第一扇区的分区,(比如交换分区)
+因为这将损坏磁盘标签。
+.PP
+一个 IRIX/SGI 风格的磁盘标签可以描述 16 个分区,
+其中第十一个应该是完整“卷标”分区,
+而第九个应该被标成“卷标头”。
+卷标头将覆盖分区表,即,它从零块开始并缺省时延伸 5 个柱面。
+卷标头中余下的空间可以用来存放头部目录记录信息。
+不要有任何分区与此卷标头重叠。
+同样,也不要改变它的类形和在其中创建任何文件系统,
+因为这样做将丢失分区表信息。
+只有当将 Linux 安装在 IRIX/SGI 机器上或
+在 Linux 中使用 IRIX/SGI 磁盘时才会使用这种类形的标签。
+.PP
+一个 DOS 风格的分区表可以描述无限的分区。
+零扇区用来存放 4 个分区(称为主分区)的描述信息。
+其中可以有一个分区是扩展分区;此扩展分区也就是存储各逻辑分区地方,
+是一个在组成链表的扇区里存放的描述符,每个描述符都是一个对应分区的开头.
+四个主分区,不管是否存在,都用数字 1-4 编号,而逻辑分区以 5 开始。
+.PP
+在 DOS 风格的分区表中,
+开始地址偏移量和每个分区的大小是以两种不同的方式来存放的:
+以扇区数的绝对值来描述(占 32 位)
+和以柱面、磁头、扇区三个一组的形式(占 10+8+6 个位)来描述。
+前一种描述很好 - 如果每扇区 512 个字节的情况,这种方式可描述到 2TB 的大小。
+后一种方式有两个不同的问题。
+第一个是这种 C/H/S 方式必须是在磁头数和每磁道扇区数都已知的情况下才能使用。
+第二个是就算我们已经知道了这些数字,而只用 24 位来描述这些信息也是不够的。
+DOS 只使用这种 C/H/S 的方式,Windows 则两个都用,Linux 则不使用 C/H/S 的方式。
+.PP
+如果可能,
+.B fdisk
+会自动获得磁盘的几何结构。这不一定是磁盘的物理结构(当然,现在的
+磁盘没有真正的物理结构,同样也不能以简单的柱面/磁头/扇区的形式来描述),
+而是 MS-DOS 用来供分区表使用的几何结构。
+.PP
+通常,缺省时这些都将工作得很好,
+而且,如果磁盘上只有一个 Linux 操作系统时也不会有任何问题。
+然而,如果磁盘上还有其它操作系统,
+那么,用其它操作系统的 fdisk 来生成其自身使用的至少一个分区是比较好的选择。
+当Linux启动的时侯,它会扫描分区表,
+并由此推出和其它共存操作系统友好合作所需的(伪)几何结构。
+.PP
+当打印一个分区表时,系统会对分区表进行一次一至性检查。
+这些检查会验证磁盘几何结构和物理地址的开始、结束、指向和标识,
+同时在柱面的边界检查分区的开始和结束。(除了第一个分区)
+.PP
+一些版本的 MS-DOS 在创建第一个分区时并不是从柱面边界的开始处,
+而是从第一柱面的第 2 扇区处开始。
+从柱面 1 开始的分区不能直接从柱面边界开始,但这未必会造成困难,
+除非你在你的机器上安装了 OS/2 操作系统。
+.PP
+当执行了对分区表的更新后退出时,
+程序会运行一次 sync() 和 BLKRRPART ioct1()
+(从磁盘上重读分区表信息)。
+以前,在使用完 fdisk 后需要重启系统。我认为现在不需要这样了 --
+太快的重起可能导致未写入磁盘的数据丢失。
+注意,内核和磁盘硬件都可能缓存数据。
+
+.SH "DOS6.x WARNING"
+
+DOS6.x 的 FORMAT 命令会在分区的第一扇区的数据区查找一些信息,
+并认为这些信息比分区表中的信息更可靠。
+DOS 的 FORMAT 命令认为 DOS 的 FDISK 命令会在分区变化时
+自动清除分区数据区的前 512 字节区域。
+DOS 的 FORMAT 将查看这些额外的信息,
+甚至在给出了 /U 这个参数后也是如此。
+我们认为这是 DOS FORMAT 和 DOS FDISK 的臭虫。
+.PP
+如果你使用 cfdisk 或 fdisk 更改了 DOS 分区表的条目,
+你必须同时使用
+.B dd
+命令将该分区的前512个字节清零,
+之后,你才能使用 DOS 的 FORMAT 命令对这个分区进行格式化。
+例如:如果你使用 cfdisk 去创建一个 DOS 分区表项目,
+即分区 /dev/hda1,然后
+(在退出 fdisk 或 cfdisk 后重启 Linux 使分区表合法化)
+你就有必要使用如下命令
+“dd if=/dev/ero of=/dev/hda1 bs=512 count=1”
+来将分区的前 512 个字节清零。
+.PP
+当你使用
+.B dd
+命令时请
+.B 务必万分小心 ,
+由于任何小的打印错误都将造成磁盘数据的失效。
+.PP
+最好你还是使用由操作系统指定的分区工具软件。
+例如,当你创建 DOS 分区时应使用 DOS FDISK,
+而创建 Linux 分区时则使用 Linux 的 fdisk 或 cfdisk。
+.PP
+.SH 选项
+.TP
+.B \-v
+打印
+.B fdisk
+的版本信息并退出.
+.TP
+.B \-l
+列出指定设备的分区表信息并退出。
+如果没有给出设备,那么使用那些在
+.I /proc/partitions
+(如果存在)提到的.
+.TP
+.B \-u
+以扇区数而不是以柱面数的形式显示分区表中各分区的信息.
+.BI "\-s " 分区
+将分区的
+.I 大小
+(单位为块)信息输出到标准输出
+.SH 臭虫
+在 Linux 中有很多版本的 *fdisk 类程序。
+每一个都有自己的强项和缺点。分别试着使用
+.BR cfdisk ,
+.BR fdisk ,
+.BR sfdisk .
+(特别是,
+.B cfdisk
+是一个漂亮的程序,它只接受最严谨的分区表,
+而且它能生成高质量的分区表。
+如果可能,你最好使用这个程序。
+.B fdisk
+是一个有很多臭虫的分区工具软件,
+它所做的操作是模糊不清的,通常在碰巧的情况下它才会正常的运行。
+它唯一值得使用的地方是它对 BSD 的磁盘标签和非 DOS 的分区表有所支持,
+尽量少用这个程序。
+.B sfdisk
+是一个专为黑客提供的程序,它的用户界面很不友善,
+但它更精确,也比 fdisk 和 cfdisk 更有效。
+另外,它只能以非交互的方式运行。
+.PP
+IRIX/SGI 风格的磁盘标签不再被当前的内核所支持,
+IRIX/SGI 头目录同样也不是完全支持。
+.PP		
+选项“dump partition table to file”不可用
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+2000/12/04
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/fsck.8 b/src/man8/fsck.8
new file mode 100644
index 0000000..047fa00
--- /dev/null
+++ b/src/man8/fsck.8
@@ -0,0 +1,304 @@
+.\" -*- nroff -*-
+.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
+.\" This file may be copied under the terms of the GNU Public License.
+.\" 
+.TH FSCK 8 "July 2003" "E2fsprogs version 1.34"
+.SH NAME
+fsck \- 检查并修复Linux文件系统
+.SH 总览 SYNOPSIS
+.B fsck
+[
+.B \-sACVRTNP
+]
+[
+.B \-t
+.I fstype
+] 
+.I [filesys ... ]
+[\-\-] [
+.B fs-specific-options
+]
+.SH 描述 DESCRIPTION
+.B fsck
+通常用来检查并适当修复一个或多个Linux文件系统.
+.I filesys
+可以是一个设备名(例如:
+.IR /dev/hdc1 ", " /dev/sdb2 ),
+一个挂载点(例如:
+.IR / ", " /usr ", " /home ),
+或一个ext2文件系统的磁盘标签, 也可以是UUID指定符(例如:
+UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd 或 LABEL=root).  
+通常,
+.B fsck 
+会试着以并行的方式同时在不同的物理磁盘上运行文件系统检查,这样可以减少对所有文件系统进行检查的时间。
+.PP
+如果没有在命令行指定文件系统,并且没有指定
+.B \-A 
+选项,
+.B fsck
+将默认顺序地检查
+.B /etc/fstab
+中登记的文件系统。这和使用
+.B \-As
+选项是相同的。
+.PP
+.B fsck
+退出的返回值是下列情况之和:
+.br
+\	0\	\-\ 没有错误
+.br
+\	1\	\-\ 文件系统有错但已修复
+.br
+\	2\	\-\ 系统应当重启
+.br
+\	4\	\-\ 文件系统错误没有修复
+.br
+\	8\	\-\ 运行错误
+.br
+\	16\	\-\ 用法或语法错误
+.br
+\	32\	\-\ 用户撤销了fsck 操作
+.br
+\	128\	\-\ 共享库出错
+.br
+当检测多个文件系统时,退出的返回值是对每个文件系统检查的返回值按位或的结果。
+.PP
+实际上,
+.B fsck
+只是Linux 中不同的文件系统检查器(\fBfsck\fR.\fIfstype\fR)的一个前端。首先,它在
+.I /sbin
+中搜索特定文件系统的检查器,然后在
+.I /etc/fs
+和
+.IR /etc 
+中搜索,最后在 PATH 环境变量中列出的路径中搜索。请查看特定文件系统的检查器的手册页来获取细节信息。
+.SH 选项 OPTIONS
+.TP
+.B \-s
+顺序地进行
+.B fsck 
+操作。如果你要检查多个文件系统,并且检查器运行在交互模式,这样作比较有好处。(注意:
+.BR e2fsck (8)
+默认是以交互方式运行的。要使
+.BR e2fsck (8)
+以非交互方式运行,你必须指定
+.B \-p
+和
+.B \-a
+选项,如果你想要自动纠正错误,或
+.B \-n
+选项,如果不想自动纠正错误。)
+.TP
+.BI \-t " fslist"
+指定要检查的文件系统的类型。当指定了
+.B \-A
+标志时,只有
+.I fslist
+中列出的类型的文件系统会被检查。
+.I fslist
+参数是一个以逗号分隔的文件系统类型列表以及选项说明符。可以在这个以逗号分隔的列表的所有文件系统前面加上否定前缀
+.RB ' no '
+或
+.RB ' ! '
+来使得只有没有列在
+.I fslist
+中的文件系统将被检查。如果并非
+.I fslist
+中列出的所有文件系统都加上了否定前缀,那么只有
+.I fslist
+中列出的文件系统将被检查。
+.sp
+选项说明符也可能包含在这个以逗号分隔的列表
+.IR fslist
+中。它们的格式是
+.BI opts= fs-option\fR
+。如果出现了选项说明符,那么只有在
+.B /etc/fstab
+中它们的挂载选项字段中不包含
+.I fs-option
+的文件系统将被检查。
+如果选项说明符有否定前缀,那么只有在
+.B /etc/fstab
+中它们的挂载选项字段中包含
+.I fs-option
+的文件系统将被检查。
+.sp
+例如,如果
+.IR fslist
+中出现了
+.B opts=ro
+那么只有
+.B /etc/fstab 
+中,挂载选项包含
+.B ro
+的文件系统将被检查。
+.sp
+为了和Mandrake 发行版兼容(它的启动脚本依赖于一个未经许可而对
+.B fsck
+程序用户接口作出的改变),如果
+.IR fslist
+中有一个
+.B loop
+文件系统,它被视为指定了
+.B opts=loop
+作为
+.B \-t
+选项的参数。
+.sp
+一般地,文件系统类型是在
+.I /etc/fstab 
+中通过搜索与
+.I filesys
+相应的条目得到的。如果不能这样推知类型,并且
+.B \-t 
+选项只有一个文件系统参数,
+.B fsck
+将使用指定的文件系统类型。如果不能使用这种类型,将使用默认的文件系统类型(当前是ext2)。
+.TP
+.B \-A
+搜索
+.I /etc/fstab
+文件,一次检查所有在文件中有定义的文件系统。这个选项典型地用在
+.I /etc/rc
+系统初始化文件中,而不使用多条命令来分别检查各独立的分区。
+.sp
+如果没有使用
+.B \-P
+选项,则根文件系统将第一个被检查。之后,将按
+.I /etc/fstab
+文件中第六字段
+.I fs_passno
+指定的顺序对各文件系统进行检查。
+.I fs_passno
+值为0 的文件系统将被跳过,不会被检查。
+.I fs_passno
+值大于0 的文件系统将被按顺序检查,
+.I fs_passno 值最小的文件系统将被最先检查。
+如果多个文件系统有相同的pass号,fsck将试着并行处理这些文件系统,尽管它不允许在同一个物理磁盘上同时运行多个文件系统检查程序。
+.sp
+因此,
+.I /etc/fstab
+文件中的一个很普遍的设置是将root文件系统的
+.I fs_passno
+设为1,定义其它文件系统的
+.I fs_passno
+为2。这样就充许
+.B fsck
+程序自动以并行的方式运行文件系统检查, 如果这样有好处的话。系统管理员可能会出于某些原因而不希望并行运行多个文件系统检查--例如,如果内存不够,那么过多的换页会成为系统瓶颈。
+.TP
+.B \-C
+如果文件系统检查器支持的话(当前只有ext2),显示进度条。fsck 将管理各文件系统检查器,使得同一时间它们中只能有一个可以显示进度条。
+.TP
+.B \-N
+不执行,仅仅显示将执行的操作。
+.TP
+.B \-P
+当设置了
+.B \-A
+标志时,将并行检查root文件系统和其他文件系统。这样是世界上最不安全的做法,因为如果root文件系统有问题,
+.BR e2fsck (8) 
+这样的程序可执行文件将被破坏!这个选项是为不想把root 文件系统分得小而紧凑(这才是正确的做法)的系统管理员准备的。
+.TP
+.B \-R
+当使用
+.B \-A
+标志来检查所有文件系统时,跳过root文件系统 (它可能已经被挂载为可读写)。
+.TP
+.B \-T
+启动时不显示标题。
+.TP
+.B \-V
+产生冗余输出,包含所有被执行的特定文件系统的命令。
+.TP
+.B fs-specific-options
+.B fsck 
+不理解的选项被传递给特定文件系统的检查器。这些选项
+.B 决不能
+有参数,因为
+.B fsck
+不能判断出哪个选项有参数,那些没有。
+.IP
+以
+.B \-\-
+引导的选项和参数将被当作特定文件系统的选项传给它的检查器。
+.IP
+注意 fsck 没有为传递任意复杂的选项给特定文件系统的检查器而专门设计。如果你要做复杂的操作,请直接执行特定文件系统的检查器。如果你传给
+.B fsck
+极其复杂的选项和参数,它没有按照你想要的那样工作,
+.B 不要把它报告为一个bug!
+You're almost certainly doing something that you shouldn't be doing with 
+.BR fsck.
+.PP
+当前,标准的特定文件系统的选项仍在改进之中。尽管不能保证,还是有下列这些选项可以被大部分文件系统检查器所支持。
+.TP
+.B \-a
+不提问,自动修复文件系统(请小心使用此选项)。注意
+.BR e2fsck (8)
+支持
+.B \-a
+仅仅是为了向前兼容。这个选项被映射到
+.BR e2fsck
+的
+.B \-p
+选项,那比较安全一点,不像大多数文件系统检查器支持的
+.B \-a
+那样。
+.TP
+.B \-r
+交互式地修复文件系统错误(询问确认)。注意: 如果多个 fsck 在并行执行,这不是一个好想法。还要注意
+.BR e2fsck
+的默认行为;它也只为了向前兼容才保留这个选项。
+.SH 作者 AUTHOR
+Theodore Ts'o (tytso at mit.edu)
+.SH 文件 FILES
+.IR /etc/fstab
+.SH 环境变量 ENVIRONMENT VARIABLES
+.B fsck
+程序的行为受下列环境变量影响:
+.TP
+.B FSCK_FORCE_ALL_PARALLEL
+如果设置了这个环境变量,
+.B fsck
+将试着并行运行所有指定的文件系统检查,不管这些文件系统是不是在同一设备上。(这对于RAID系统或者高端存储系统比如IBM或者EMC出售的那种很有用)
+.TP
+.B FSCK_MAX_INST
+这个环境变量将限制同时可以运行的文件系统检查器的最大数量。这样使得拥有大量磁盘的系统避免
+.B fsck
+一次启动过多文件系统检查器,那样有可能耗尽机器的CPU和内存资源。如果值为0,可以孵化出没有限制的数量的进程,这是当前的默认值。将来版本的
+.B fsck
+将试着根据收集操作系统的统计数据,自动判断应当启动多少文件系统检查。
+.TP
+.B PATH
+.B PATH
+环境变量用来查找文件系统检查器。一些系统目录会被最先搜索:
+.BR /sbin ,
+.BR /sbin/fs.d ,
+.BR  /sbin/fs ,
+.BR /etc/fs ,
+和 
+.BR /etc .
+然后才搜索
+.B PATH
+环境变量中设置的目录集合。
+.TP
+.B FSTAB_FILE
+这个环境变量允许系统管理员指定
+.B /etc/fstab
+文件的位置。它也为
+.BR fsck
+的开发者做测试之用。
+.SH 参见 SEE ALSO
+.BR fstab (5),
+.BR mkfs (8),
+.BR fsck.minix (8),
+.BR fsck.ext2 (8)
+或者
+.BR e2fsck (8),
+.BR fsck.xiafs (8).
+
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.11.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/groupadd.8 b/src/man8/groupadd.8
new file mode 100644
index 0000000..d2a49a0
--- /dev/null
+++ b/src/man8/groupadd.8
@@ -0,0 +1,70 @@
+.\" Copyright 1991, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH GROUPADD 8
+.SH NAME
+groupadd \- 建 立 新 群 组
+.SH "总览 SYNOPSIS"
+\fBgroupadd\fR [\fB-g\fI gid \fR[\fB-o\fR]] [\fB-r\fR] [\fB-f\fR] \fIgroup\fR
+.SH "描述 DESCRIPTION"
+groupadd 可 指 定 群 组 名 称 来 建 立 新 的 群 组 帐 号 。 需 要 时 可 从 系 统 中 取 得 新 群 组 值 。 groupadd 有 下 列 选 项 可 用 。
+.IP "\fB-g \fIgid\fR"
+ID 值 。 除 非 使 用 -o 参 数 不 然 该 值 必 须 是 唯 一 , 不 可 相 同 。 数 值 不 可 为 负 。 预 设 为 最 小 不 得 小 于 500 而 逐 次 增 加 。 0~499 传 统 上 是 保 留 给 系 统 帐 号 使 用 。
+.IP \fB-r\fR
+此 参 数 是 用 来 建 立 系 统 帐 号 。  它 会 自 动 帮 你 选 定 一 个 小 于 499 的 gid 除 非 命令行 再 加 上 -g 参 数 。 
+.br
+这 是 RED HAT 额 外 增 设 的 选 项 。
+.IP \fB-f\fR
+这是\fIforce\fR标志。使得新 增 一 个 已 经 存 在 的 群 组 帐 号时 , 系 统 会 出 现 错 误 讯 息 然 后 结 束 groupadd 。 如 果 是 这 样 的 情 况 , 不 会 改变 这 个 群 组 ( 或 再 新 增 一 次 ) 
+.br
+也 可 同 时 加 上 -g 选 项 当 你 加 上 一 个 gid , 此 时 gid 就 不 用 是 唯 一 值 , 可 不 加 -o 参 数 , 建 好 群 组 后 会 显 结 果.
+.br
+这 是 RED HAT 额 外 增 设 的 选 项 。
+
+.SH "文件 FILES"
+/etc/group \- group account information
+.br
+/etc/gshadow \- secure group account information
+
+.SH "参见 SEE ALSO"
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH "作者 AUTHOR"
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
+
+
+.SH "[中文版维护人]"
+.B Best Linux
+.SH "[中文版最新更新]"
+.B 1999-11-29
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/groupdel.8 b/src/man8/groupdel.8
new file mode 100644
index 0000000..08472d8
--- /dev/null
+++ b/src/man8/groupdel.8
@@ -0,0 +1,59 @@
+.\" Copyright 1991 - 1993, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH GROUPDEL 8
+.SH NAME
+groupdel \- Delete a group
+.SH "总览 SYNOPSIS"
+\fBgroupdel\fR \fIgroup\fR
+.SH "描述 DESCRIPTION"
+groupdel 命令会修改系统帐号档,会删除所有指定群组的信息 . 群组名须存在。
+.PP
+你须手动确认一下所有的档案系统确保有没有档案还是没修正群组名变成群组ID。
+.SH "警告 CAVEATS"
+如果有任何一个群组的使用者在线上的话就不能移除该群组。 最好先移除使用者后再移除群组。
+.SH "文件 FILES"
+/etc/group \- group information
+.br
+/etc/gshadow \- secure group information
+.SH "参见 SEE ALSO"
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupadd (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH "作者 AUTHOR"
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
+
+.SH "[中文版维护人]"
+.B Best Linux
+.SH "[中文版最新更新]"
+.B 1999-11-29
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/groupmod.8 b/src/man8/groupmod.8
new file mode 100644
index 0000000..4de94a9
--- /dev/null
+++ b/src/man8/groupmod.8
@@ -0,0 +1,60 @@
+.\" Copyright 1991, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH GROUPMOD 8
+.SH NAME
+groupmod \- 修 改 群 组
+.SH "总览 SYNOPSIS"
+\fBgroupmod\fR [\fB-g\fI gid \fR[\fB-o\fR]] [\fB-n\fI group_name \fR]
+\fIgroup\fR
+.SH "描述 DESCRIPTION"
+groupmod 命 令 会 参 照 你 命 令 列 上 指 定 的 部 份 修 改 系 统 帐 号 档 。 下 列 为 groupmod 可 选 用 的 参 数 。
+.IP "\fB-g \fIgid\fR"
+群 组 I D 值 。 必 须 为 唯 一 的 ID 值 , 除 非 用 \fB-o\fR 选 项 。 数 字 不 可 为 负 值。预 设 为 最 小 不 得 小 于 99 而 逐 次 增 加 。 0~99 传 统 上 是 保 留 给 系 统 帐 号 使 用 。 如 果 有 档 案 使 用 旧 的 群 组 ID , 而 这 时 候 你 新 增 的 群 组 ID 恰 好 与 旧 的 相 同 , 这 样 的 话 你 要 手 动 改 一 下 这 些 档 案 的 群 组 ID 。
+.IP "\fB-n \fIgroup_name\fR"
+更 改 群 组 名 。
+.SH "文件 FILES"
+/etc/group \- group information
+.br
+/etc/gshadow \- secure group information
+.SH "参见 SEE ALSO"
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH "作者 AUTHOR"
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
+
+.SH "[中文版维护人]"
+.B Best Linux
+.SH "[中文版最新更新]"
+.B 1999-11-29
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/halt.8 b/src/man8/halt.8
new file mode 100644
index 0000000..6eb0652
--- /dev/null
+++ b/src/man8/halt.8
@@ -0,0 +1,70 @@
+.TH HALT 8 "Aug 24, 1999" "" "Linux 系统管理员手册"
+.SH NAME
+halt, reboot, poweroff \- 中止系统运行
+.SH SYNOPSIS
+.B /sbin/halt
+.RB [ \-n ]
+.RB [ \-w ]
+.RB [ \-d ]
+.RB [ \-f ]
+.RB [ \-i ]
+.RB [ \-p ]
+.br
+.B /sbin/reboot
+.RB [ \-n ]
+.RB [ \-w ]
+.RB [ \-d ]
+.RB [ \-f ]
+.RB [ \-i ]
+.br
+.B /sbin/poweroff
+.RB [ \-n ]
+.RB [ \-w ]
+.RB [ \-d ]
+.RB [ \-f ]
+.RB [ \-i ]
+.SH 描述
+\fBHalt\fP 将系统正在关机的信息写入
+\fI/var/log/wtmp\fP 文件,然后通知内核停止重启或关机系统。
+如果 \fBhalt\fP 或 \fBreboot\fP 是在系统
+\fI没有\fP 运行在运行级别 \fB0\fP 或 \fB6\fP ,
+系统将调用
+\fBshutdown\fP(8) 命令(使用参数 \fB-h\fP 或 \fB-r\fP )。
+.SH 选项
+.IP \fB\-n\fP
+在关机或重启之前不对系统缓存进行同步。
+.IP \fB\-w\fP
+不真正重启或关机,而仅仅将关机信息写入 wtmp
+(在 \fI/var/log/wtmp\fP 文件里)。
+.IP \fB\-d\fP
+不记录此次关机情况。当使用 \fB\-n\fP 参数时隐含 \fB\-d\fP。
+.IP \fB\-f\fP
+强制执行 halt 或 reboot 而不去调用 \fBshutdown\fP(8)。
+.IP \fB\-i\fP
+在关闭或重启系统之前关闭所有网络界面。
+.IP \fB\-p\fP
+当关闭系统时执行关闭电源操作。当以 \fBpoweroff\fP 方式调用
+halt 时,此为缺省参数。
+.SH DIAGNOSTICS
+If you're not the superuser, you will get the message `must be superuser'.
+.SH 注意
+在先前的 \fBsysvinit\fP 发布中,\fBreboot\fP 和 \fBhalt\fP 不能直接调用。
+从版本 2.74 开始,当系统不是运行在运行级别0或6的时侯,执行
+\fBhalt\fP 和 \fBreboot\fP 后实际调用的是 \fBshutdown\fP(8) 。
+这就意味着如果在当前运行级别的环境中无法找到
+ \fBhalt\fP 或 \fBreboot\fP 的时候(比如,在 \fI/var/run/utmp\fP 
+还没有正确初始化的时候),将会调用 \fBshutdown\fP,这个结果也许非你所想。
+如果你想做一此硬的 \fBhalt\fP 或 \fBreboot\fP,那么使用 \fB-f\fP 参数。
+.PP
+.SH 作者
+Miquel van Smoorenburg, miquels at cistron.nl
+.SH "参见"
+.BR shutdown (8),
+.BR init (1)
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH [中文版最新更新]
+.B 2001/05/01
+.SH 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
+
diff --git a/src/man8/hdparm.8 b/src/man8/hdparm.8
new file mode 100644
index 0000000..c085f3f
--- /dev/null
+++ b/src/man8/hdparm.8
@@ -0,0 +1,444 @@
+.TH HDPARM 8 " 2000年2月 " "版本 3.9"
+.SH NAME
+hdparm \- 获取/设置硬盘参数
+.SH 总览
+.B hdparm
+[
+.B -a
+[扇区数]
+] [
+.B -A
+[0|1]
+] [
+.B -c
+[芯片组模式]
+] [
+.B -C
+] [
+.B -d
+[0|1]
+] [
+.B -f
+] [
+.B -g
+] [
+.B -i
+] [
+.B -k
+[0|1]
+] [
+.B -K
+[0|1]
+] [
+.B -L
+[0|1]
+] [
+.B -m
+[扇区数]
+] [
+.B -p
+[0|1|2|3|4|5]
+] [
+.B -P
+[扇区数]
+] [
+.B -q
+] [
+.B -r
+[0|1]
+] [
+.B -S
+[超时]
+] [
+.B -T
+] [
+.B -t
+] [
+.B -u
+[0|1]
+] [
+.B -v
+] [
+.B -W
+[0|1]
+] [
+.B -X
+[传输模式]
+] [
+.B -y
+] [
+.B -Y
+] [
+.B -Z
+] [设备] ..
+.SH 描述
+.BI hdparm
+提供一个实现各种硬盘控制动作的命令行接口,它由内建
+Linux IDE/ST-506设备驱动程序支持.要实现这种功能需要Linux
+核心版本为1.2.13或更高.在早期的核心下有一些选项可能不能正
+常工作.另外,一些选项只是为包含了新的IDE设备驱动程序的核心
+所支持,像2.0.10版或者更高版本的核心.如果hdparm程序是在使用
+旧的核心文件(在目录usr/include/linux下)的机器上被编译的,这
+些选项将无法获得.
+.SH 选项
+当未给出标记时,
+.I -acdgkmnru
+被作为假设值 (除非一个给定的设备是SCSI设备或某种老式
+XT型MFM/RLL,在这种情况下
+.I -gr
+和
+.I -adgr
+分别是默认值).
+.TP
+.I -a 
+为文件系统提前获得/设置扇区号,可以用来改善连续读取大文件时的
+系统性能,具体方式为提前读取额外的预期中正在运行的任务所需要的
+数据块.在当前核心版本(2.0.10版)中默认设置为8个扇区(4KB).对于
+大多数用途,这个值看起来不错,但在一个大多数文件访问行为是随机
+搜索的系统中,设置一个小一些的值可能效果会更好.当然,很多
+IDE驱动器也有一个独立的内建的预读功能,这在很多情况下可以缓解
+对文件系统预读功能的需求.
+.TP
+.I -A
+关闭/打开IDE驱动器预读功能(通常默认为打开).
+.TP
+.I -c
+查询/打开(E)IDE 32-bit I/O 支持.一个数字的参数可以被用来
+打开/关闭32-bit I/O 支持.当前支持的值包括
+.I 0
+关闭 32-bit I/O 支持,
+.I 1
+打开 32-bit 数据传输, 和
+.I 3
+以一个芯片组要求的特殊的
+.I sync
+流程打开 32-bit data 传输. 值
+.I 3
+几乎对所有的32-bit IDE 芯片组起作用,但导致稍微多一些的系统开销.
+注意,32-bit数据传输仅仅用于通过PCI或VLB总线与接口卡的连接;
+所有的IDE驱动器通过排线从接口卡获得的连接仅为16-bit.
+.TP
+.I -C
+检查当前IDE能耗模式状态, 结果将是下面几种之一
+.B 未知
+(驱动器不支持此命令),
+.B 活动/闲置
+(普通操作),
+.B 待机
+(低能耗模式,驱动器待机),
+or
+.B 睡眠
+(最低能耗模式, 驱动器被完全关闭).
+选项
+.B -S, -y, -Y,
+and
+.B -Z
+用来操纵能耗模式.
+.TP
+.I -d
+为驱动器关闭/打开 "using_dma" 标志. 此选项仅对一些支持
+DMA并且对于IDE驱动程序来说是已知的驱动器-接口组合
+(包括所有被支持的XT接口).特别的,Intel Triton 芯片组
+能和很多驱动器一起实现总线控制 DMA 操作.(根据实验).使用 
+.I -X34
+选项与
+.I -d1
+选项组合确保驱动器自身是为多字DMA模式2设计的.
+使用DMA不一定对吞吐量或系统性能有改进,但很多人信赖它.
+.TP
+.I -E
+设置光盘驱动器速度.对于一般性操作这不是必须的,因为驱动器将自动地自
+行选择自己的速度.如果你想要使用它,就在选项后提供一个数字,通常是2或4.
+.TP
+.I -f
+当设备退出时同步并刷新指针高速缓存.此操作也作为选项
+.I -t
+和
+.I -T
+定时的一部分被执行
+.TP
+.I -g
+显示驱动器物理位置(柱面,磁头,扇区),设备的大小(以扇区为单位),
+以及相对于驱动器起始的设备偏移量(以扇区为单位).
+.TP
+.I -h
+显示简要使用信息(帮助).
+.TP
+.I -i
+显示引导驱动器时获得的识别信息,如果有的话.
+这是一种现代IDE驱动器特性,可能不被较老式的设备支持.
+返回的数据可能是或不是当前的,这取决于自系统引导后的行为.
+然而,当前的复合模式的扇区计数始终被给出.
+要获得更多的关于识别信息的详细阐释,请查阅
+.I AT Attachment Interface for Disk Drives
+(ANSI ASC X3T9.2 working draft, revision 4a, April 19/93).
+.TP
+.I -I
+直接从驱动器获取识别信息,
+并以原始的,未经过修改和更正的形式显示.
+否则便与选项
+.I -i
+相同.
+.TP
+.I -k
+获得/设置驱动器 keep_settings_over_reset 标志.
+当此标志被设置,驱动程序将在一个软性的重置后保护选项
+.I -dmu
+(如同在出错恢复流程中完成的那样)
+此标志默认值为关 ,
+以防止可能由与
+.I -dmu
+组合设置导致的驱动器重置循环.
+选项
+.I -k
+应该仅在你确信用一组选定的设置进行正确的系统操作之后被设置.
+实际中,校验驱动器能够读/些并且在此过程中没有出错记录(核心消息,
+大多数系统上/var/adm/messages中),是测试一个配置(在用-k之前)必须的.
+.TP
+.I -K
+设置驱动器的 keep_features_over_reset 标志. 
+此项设置使驱动器在软性重置后保留
+.I -APSWXZ
+标志的设置 (如同在出错恢复流程中完成的那样).
+并非所有的驱动器都支持此项特性.
+.TP
+.I -L
+设置驱动器的doorlock标志. 设置为
+.b 1
+将锁住一些移动式硬驱动器(像 Syquest,ZIP,Jazz..)的
+门锁机构.设置为
+.b 0 将解锁.
+一般Linux根据驱动器用法自动维护门锁机构.(当安装一个文件
+系统时锁住).但在系统关闭时,如果根分区在一个移动式磁盘上,
+可能会有麻烦,因为在关闭后根分区仍在处在安装状态(只读).
+所以,使用这个命令在根文件系统以只读的方式重新被安装
+.b 后
+,用户可以在关闭后从驱动器中移走磁盘.
+.TP
+.I -m
+获得/设置驱动器多重扇区I/O的扇区数.设置为
+.B 0
+关闭这项特性.多重扇区模式(aka IDE Block 模式),是大多数
+现代硬盘驱动器的一项特性,它允许每次I/O中断传输多个扇区,
+而不是通常的一次中断一个.当这项特性被打开时,操作系统
+处理磁盘I/O的开销降低30-50%.在许多系统上,它也会在任何
+地方增加5% - 50% 的数据流量大多数驱动器支持最小的设置
+为2,4,8或,16个(扇区).较大的设置也可能存在,这取决于驱
+动器.在许多系统上设置为16或32看起来是最理想的.
+Western Digital在他们的许多驱动器上推荐设置为4或8.
+归因于微小的(32kB)磁盘缓冲和非最优化的缓冲算法.
+选项
+.B -i
+被用来查出一个已安装驱动器支持的最大设置
+(在输出中查找 MaxMultSect 值).一些驱动器声称支持多重扇区模式,
+但在某些设置下丢失数据.在极少的情况下,这样的失败会导致
+.B 严重的文件系统损坏.
+.TP
+.I -p
+尝试为指定的PIO模式对IDE接口芯片重编程,或者尝试为驱动器支持
+的最佳的PIO模式进行自动调整.核心中仅针对于一些"知名"的芯片组
+支持这项特性,甚至这种支持不一定是最好的.一些IDE芯片组不能为
+一个单一的驱动器改变PIO模式,在这种情况下此选项可能导致PIO
+模式的设置影响到
+.I 两个
+驱动器.许多IDE芯片组支持少于或多于标准的六个(0到5)PIO模式,
+所以实际实现的精确速度设置将由芯片组和驱动器复杂的配合改变.
+.I 谨慎使用.
+这项特性不包含任何针对不谨慎的保护措施,一个不成功的结果
+可能导致
+.I 严重的文件系统损坏.
+.TP
+.I -P
+为驱动器的内部预读机制设置最大扇区数.
+不是所有的驱动器都支持这项特性.
+.TP
+.I -q
+安静的操作下一个标志,压制正常输出.
+当从/etc/rc.c/rc.local运行时,可用来减轻屏幕混乱程度.
+不适用于
+.I -i
+或
+.I -v
+或
+.I -t
+或
+.I -T
+标志.
+.TP
+.I -r
+获得/设置驱动器的只读标志.当被设置时,设备上的写操作被禁止.
+.TP
+.I -R
+登记一个IDE接口.
+.B 危险.
+参见
+.B -U
+选项获取更多信息.
+.TP
+.I -S
+设置驱动器待机(低速运转)超时值.
+驱动器根据此值决定在关闭主轴电机以节约能耗之前等待多长
+时间(没有磁盘操作).在这种状态下,驱动器可能需要来响应一
+个接下来的磁盘访问,虽然大多数驱动器要快很多.超时值的编
+码有些特别.值0表示"关".值1到240被指定为5秒的倍数,
+也就是超时可以从5秒到20分钟.值241到251指定30分钟的1到11倍,
+也就是超时可以从30分钟到5.5个小时.值252表示超时21分钟,
+253设置一个销售商定义的超时,255表示21分15秒.
+.TP
+.I -T
+用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果,
+应该在内存不少于2M,系统没有其它活动(没有其它活动的程序)
+的条件下,重复操作2-3次.它显示了不存取磁盘直接从Linux缓存
+读取数据的速度.这项测量实际上标示了被测系统的处理器,缓存
+和内存的吞吐量.
+如果标志
+.I -t
+也被指定,那么一个基于
+.I -T
+输出结果的修正量将被综合到
+.I -t
+操作报告的结果中.
+.TP
+.I -t
+用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果,
+应该在内存不少于2M,系统没有其它活动(没有其它活动的程序)
+的条件下,重复操作2-3次.它显示了不使用预先的数据缓冲从磁盘
+这项测量标示了Linux下没有任何文件系统开销时磁盘可以支持多快
+的连续数据读取.为确保测量的精确,缓存在
+.I -t
+的过程中通过BLKFLSBUF控制被刷新.
+如果标志
+.I -T
+也被指定,那么一个基于
+.I -T
+数促结果的修正量将被综合到
+.I -t
+操作报告的结果中.
+.TP
+.I -u
+获得/设置驱动器"不屏蔽中断"标志.设置为
+.B 1
+允许驱动器在磁盘中断处理过程中不屏蔽别的中断,
+它极大改善了Linux的响应性能,并排除了"串行端口溢出"错误.
+.B 谨慎使用:
+一些驱动器/控制器组合不能承受可能是潜在的 I/O 增长,
+而导致
+.B 严重的文件系统损坏.
+特别,
+.B CMD-640B
+和
+.B RZ1000
+(E)IDE 接口可能是
+.B 不可靠的
+(由于某种硬件缺陷),当在早于 2.0.16 版本的核心下使用此选项时.
+关闭这些接口的(通常通过设置BIOS/CMOS)
+.B IDE 预读
+特性可以安全的解决这个问题.
+.TP
+.I -U
+注销一个IDE接口.
+.B 危险.
+.B -R
+的对应选项.
+是为特别设计用来做热交换的硬件准备的(很罕见!). 
+使用时要有充分的知识和 
+.B 非常的谨慎 
+,因为它很容易终止或破坏你的系统.
+hdparm 的源代码包括一个 'contrib' 目录,里面有一些
+用户捐赠的在一台 ThinkPad 600E的UltraBay上作热交换的记录.
+自己去冒险吧.
+.TP
+.I -v 
+显示所有的设置, 除了 -i (像 -acdgkmnru 对于 IDE, -gr 对于 SCSI 
+或 -adgr 对于 XT).  这也是未指定任何标志时的默认操作.
+.TP
+.I -W
+关闭/打开 IDE 驱动器的写缓存特性 (通常默认为 OFF ).
+.TP
+.I -X 
+为较新的 (E)IDE/ATA2 驱动器设置 IDE 传输模式 .
+特别是当在一个被支持的接口芯片组(像 Intel 430FX Triton) 
+上打开通向一个驱动器的DMA时与选项 
+.I -d1 
+组合使用,在这里用  
+.I -X34 
+来选择多字 DMA 模式2 传输.
+对于支持 UltraDMA burst timings 的系统,用 
+.I -X66 
+来选择 UltraDMA mode2 传输 (你需要在这之前为 UltraDMA 
+准备好被支持的芯片组).
+另外, 
+.I 几乎没有必要
+使用此标志,因为大多数/全部现代 IDE 驱动器默认它们最快的
+ PIO 传输模式为打开. 所以摆弄它是没有必要的也是冒险的.
+在支持 alternate 传输模式的驱动器上,
+.I -X
+可以被
+.I 仅
+用来选择模式.
+在改变传输模式之前, 应该为新模式的设置给 IDE 接口跳线或编程(见
+.I -p
+标志)
+以防止数据的丢失或损坏.
+.I 请非常小心地使用它!
+对于 Linux 使用的 PIO 传输模式,此值就是要求的
+PIO 模式号加 8.
+这样, 值 09 设置 PIO mode1, 10 设置 PIO mode2,
+ 11 设置 PIO mode3.
+设置为 00 还原驱动器的默认 PIO 模式,  01 关闭 IORDY.
+对于多字 DMA, 使用的值时要求的 DMA 模式号加 32.
+对于 UltraDMA ,相应的值是要求 UltraDMA 模式号加64.
+.TP
+.I -y
+迫使一个 IDE 驱动器立即进入低能耗 
+.B 待机
+模式, 通常使它低速运转.
+当前能耗模式状态可以用
+.B -C
+标志来检查.
+.TP
+.I -Y
+迫使一个 IDE 驱动器立即进入最低能耗 
+.B 睡眠
+模式, 使它完全关闭. 一个来自硬件或软件的重置
+可以重新唤醒驱动器.
+( 如果需要,Linux IDE 驱动器将自动产生一个重置 ).
+.TP
+.I -Z
+关闭某些 Seagate 驱动器(STxxx 型?)的自动节能功能,
+以防止它们在不适当的时候空转或低速运转.
+.SH BUGS
+像上面提到的, 
+.B -m 扇区数
+和
+.B -u 1
+选项尤其要小心使用, 最好在一个只读文件系统上使用.
+大多数驱动器和这些特性配合得很好,但有一些驱动器/控制器
+组合不是100%兼容的.使用可能导致文件系统损坏. 
+请在实验之前给所有的数据作备份!
+.PP
+某些选项 (例如: -r 对于 SCSI) 可能在旧的核心下因为核心不
+支持必要的 icctl() 而不能工作.
+.PP
+虽然这个命令只是为使用 (E)IDE 硬盘设备准备的,但有几个选项
+也能够(允许)用于带有 XT 接口的 SCSI 硬盘设备和 MFM/RLL 硬盘.
+.SH 作者
+.B hdparm
+是由 Mark Lord <mlord at pobox.com>, Linux (E)IDE 驱动程序
+的主要开发者和维护者编写的,并听取了很多网友的建议.
+.PP
+关闭 Seagate 自动节能的代码是征得
+ Tomi Leppikangas(tomilepp at paju.oulu.fi)允许使用的.
+.SH 另见
+.B AT Attachment Interface for Disk Drives,
+ANSI ASC X3T9.2 working draft, revision 4a, April 19, 1993.
+.PP
+.B AT Attachment Interface with Extensions (ATA-2),
+ANSI ASC X3T9.2 working draft, revision 2f, July 26, 1994.
+.PP
+.B Western Digital Enhanced IDE Implementation Guide,
+by Western Digital Corporation, revision 5.0, November 10, 1993.
+.PP
+.B Enhanced Disk Drive Specification,
+by Phoenix Technologies Ltd., version 1.0, January 25, 1994.
+
diff --git a/src/man8/ifconfig.8 b/src/man8/ifconfig.8
new file mode 100644
index 0000000..1423852
--- /dev/null
+++ b/src/man8/ifconfig.8
@@ -0,0 +1,223 @@
+.\" 中文版 Copyright (c) 2000 meaculpa, Laser 和 www.linuxforum.net
+.TH IFCONFIG 8 "4 August 1997" "net-tools" "Linux Programmer's Manual"
+.SH NAME
+ifconfig \- 配置网络接口
+.SH 总览
+.B "ifconfig [接口]"
+.br
+.B "ifconfig 接口 [aftype] options | address ..."
+.SH 描述
+.B  ifconfig
+用于配置常驻内核的网络接口。它用于在引导成功时设定网络接口。
+此后,只在需要调试及系统调整时才使用。
+.LP
+如没有给出参数,
+.B ifconfig
+显示当前有效接口的状态。如给定单个
+.B 接口
+作为参数,它只显示给出的那个接口的状态;
+如果给出一个
+.B -a
+参数,它会显示所有接口的状态,包括那些停用的接口。
+否则就对一个接口进行配置。
+
+.SH 地址族
+如果跟在接口名称后的第一个参数是它支持地址族的名称,
+那么这个地址族被用于翻译和显示所有的协议地址。
+当前支持的地址族包括
+.B inet
+(
+.I TCP/IP
+,缺省),
+.B inet6
+(
+.I IPv6
+)
+,
+.B ax25
+(
+.I AMPR
+无线分组 ),
+.B ddp
+(
+.I Appletalk
+2 代),
+.B ipx
+(
+.I Novell IPX
+) 和
+.B netrom 
+(
+.I AMPR
+无线分组)。
+.SH 选项
+.B 接口
+接口名称。通常是一个后跟单元号的驱动设备名,
+例如第一个以太接口
+.I eth0 。
+.TP
+.B up
+此选项激活接口。如果给接口声明了地址,等于隐含声明了这个选项。
+.TP
+.B down   
+此选项使接口驱动设备关闭。
+.TP
+.B  "[\-]arp"
+允许或禁止在接口上使用
+.B ARP
+协议。
+.TP
+.B "[\-]promisc"
+允许或禁止接口置于混杂模式。
+如果选用,则接口可以接收网络上的所有分组。
+.TP
+.B "[\-]allmulti"
+允许或禁止
+.B "组播模式(all-multicast)" 。
+如果选用,则接口可以接收网络上的所有组播分组。
+.TP
+.B "metric N"
+将接口度量值设置为整数 N。
+(译注:度量值表示在这个路径上发送一个分组的成本,就是通过多少个路由)
+.TP     
+.B "mtu N"
+此选项设定接口的最大传输单元
+.I MTU。
+.TP
+.B "dstaddr addr"
+为点到点链路(如
+.I PPP
+)设定一个远程 IP 地址。此选项现已废弃;用
+.I pointopoint
+选项替换。
+.TP
+.B  "netmask addr"
+为接口设定 IP 网络掩码。缺省值通常是 A,B 或 C 类的网络掩码
+(由接口的 IP 地址推出),但也可设为其它值。
+.TP
+.B  "add addr/prefixlen"
+为接口加入一个
+.I IPv6
+地址。
+.TP 
+.B  "del addr/prefixlen"
+为接口删除一个
+.I IPv6
+地址。
+.TP
+.B "tunnel aa.bb.cc.dd"
+建立一个新的
+.B SIT
+(在
+.I IPv4
+中的
+.I IPv6
+)设备,为给定的目的地址建立通道。
+.TP
+.B "irq addr"
+为接口设定所用的中断值。
+并不是所有的设备都能动态更改自己的中断值。
+.TP
+.B "io_addr addr"
+为接口设定起始输入/输出地址。
+.TP
+.B "mem_start addr"
+设定接口所用的共享内存起始地址。只有少数设备需要。
+.TP
+.B "media type"
+设定接口所用的物理端口或介质类型。并不是所有设备都会
+更改这项值,而且它们支持的类型可能并相同。典型的
+.B type
+是
+.I 10base2
+(细缆以太网),
+.I 10baseT
+(双绞线 10Mbps 以太网),
+.I AUI
+(外部收发单元接口)等等。介质类型为
+.B auto
+则用于让设备自动判断介质。
+同样,并非所有设备都可以这样工作。
+.TP
+.B  "[\-]broadcast [addr]"
+如果给出了地址参数,
+则可以为接口设定该协议的广播地址。
+否则,为接口设置(或清除)
+.I IFF_BROADCAST
+标志。
+.TP
+.B "[\-]pointopoint [addr]"
+此选项允许接口置为
+.B 点到点
+模式,这种模式在两台主机间建立一条无人可以监听的直接链路。
+.br
+如果还给出了地址参数,则设定链路另一方的协议地址,正如废弃的
+.I dstaddr
+选项的功能。否则,为接口设置(或清除)
+.I IFF_POINTOPOINT
+标志。
+.TP
+.B "hw class address"
+如接口驱动程序支持,则设定接口的硬件地址。
+此选项必须后跟硬件的类型名称和硬件地址等价的可打印
+.I ASCII
+字符。当前支持的硬件类型包括
+.I ether
+(以太网),
+.I ax25
+(AMPR AX.25),
+.I ARCnet
+和
+.I  netrom
+(AMPR NET/ROM)。
+.TP
+.B multicast
+为接口设定组播标志。
+通常无须用此选项因为接口本身会正确设定此标志。
+.TP
+.B address
+为接口分配的
+.B IP
+地址。
+.TP
+.B "txqueuelen length"
+为接口设定传输队列的长度。可以为具有高时延的低速接口设定
+较小值以避免在象
+.I telnet
+这样烦人的交互通信时大量高速的传输。
+.SH 注意
+从内核版本 2.2 起不再有别名接口的显式接口统计信息了。
+打印出的源地址统计信息被同一接口的所有别名地址共享。
+打印出的源地址统计信息被同一接口的所有别名地址共享。
+如果你需要每个地址的统计信息,就应该用
+.BR ipchains(8)
+命令为地址加入显式的记帐规则。
+.SH 相关文件
+.I  /proc/net/socket
+.br
+.I  /proc/net/dev
+.br
+.I  /proc/net/if_inet6
+.SH BUGS
+当显示
+.I appletalk DDP
+和
+.I  IPX
+地址时不能用此命令进行更改,但可以用这条命令显示。
+.SH 又见
+route(8), netstat(8), arp(8), rarp(8), ipchains(8)
+.SH 作者
+Fred N. van Kempen, <waltje at uwalt.nl.mugnet.org>
+Alan Cox, <Alan.Cox at linux.org>
+Phil Blundell, <Philip.Blundell at pobox.com>
+Andi Kleen, <ak at muc.de>
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.TP
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man8/imapd.8 b/src/man8/imapd.8
new file mode 100644
index 0000000..bc81623
--- /dev/null
+++ b/src/man8/imapd.8
@@ -0,0 +1,39 @@
+.TH IMAPD 8C "October 12, 1998"
+.UC 5
+.SH NAME
+IMAPd \- Internet 邮件存取协议服务器
+.SH 总览
+.B /usr/etc/imapd
+.SH 描述
+.I imapd
+是个支持
+.B IMAP4rev1
+远程邮件存取协议(由RFC2060定义)的服务器。
+.I imapd
+是由internet服务器(参见
+.IR inetd (8) )来调用的,
+正常情况下监听对
+.B IMAP
+端口的连接请求,该端口在
+.I /etc/services
+文件(参见
+.IR services (5)).
+)中定义。通常它是143。
+.PP
+.I imapd
+也可以由很多基于Unix平台的客户端通过
+.IR rsh (1C)
+进行访问。为此,
+.I imapd
+程序必须具有一个到
+.I /etc/rimapd
+的链接,因为这是系统认为该软件所在的地方。
+.SH "又见"
+rsh(1C) ipopd(8C)
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2001/05/01
+.SH 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
+
diff --git a/src/man8/inetd.8 b/src/man8/inetd.8
new file mode 100644
index 0000000..e8d4263
--- /dev/null
+++ b/src/man8/inetd.8
@@ -0,0 +1,147 @@
+.TH inetd  8  "" "UNIX系统管理员手册" ""
+
+.SH NAME
+\fBinetd\fR - 因特网“超级服务”
+.SH "总览"
+\fBinetd\fR - [ -d ] [ -q 队列长度 ] [ 配置文件名 ]
+.SH "描述"
+inetd通常在系统启动时由/etc/rc.local引导。inetd会监听指定internet端口是否有连接要求。当发现有某个端口有连接要求时,inetd将决定由哪个服务器进程来响应该连接要求,并调用该服务器程序。当程序运行结束后,inetd会继续对该端口进行监听(除了以下所涉及的原因)。从本质上讲,inetd可以只运行一个守护进程,该守护进程可以在需要时调用其它服务进程,从而减轻系统负担。
+.SH 选项
+.LP
+inetd的可用选项:
+.TP
+-d
+打开调试功能。
+
+.TP
+-q
+队列长度
+设置端口监听队列的长度值,默认值为128。
+
+.SH 说明
+.LP
+在运行时,inetd会读取它的配置文件,默认为/etc/inetd.conf。该配置文件的每一个栏都有一个条目,栏中每一项由空格或制表符进行分隔。以井号开头的是注释文本。其格式如下所示:
+.TP
+
+service name
+服务名
+
+.TP
+
+socket type
+接口类型
+
+.TP
+protocol
+协议名
+
+.TP
+
+wait/nowait[.max]
+等待/不等待
+
+.TP
+
+user[.group]
+用户/组
+
+.TP
+
+server program
+服务器程序
+
+.TP
+
+server program arguments
+服务器程序参数
+
+.LP
+如果定义的是基于Sun-RPC的服务,则将包含有以下内容:
+
+.TP
+
+service name/version
+服务名
+
+.TP
+
+socket type
+接口类型
+
+.TP
+
+rpc/protocol
+协议名
+
+.TP
+
+wait/nowait[.max]
+等待/不等待
+
+.TP
+
+user[.group]
+用户/组
+
+.TP
+
+server program
+服务器程序
+
+.TP
+
+server program arguments
+服务器程序参数
+
+.LP
+
+服务名指的是一个在文件/etc/services中有定义的合法服务。相对局域网而言(下面讨论),服务名须为该服务的官方名称(即,处于文件 /etc/services中的第一行)。当定义一个基于Sun-RPC的服务时,此栏内容须是一个在文件/etc/rpc中有定义的合法服务名。在斜械右侧的是RPC的版本号。此版本号可以是一个单一数字,也可以是一个从低到高的版本范围,如:“rusers/1-3”。
+
+.LP
+
+接口类型则是“stream”、“dgram”、“raw”、“rdm”或“seqpacket”中的一个,这取决于其数据的类型是什么。
+
+.LP
+协议名须是在文件/etc/protocols中有定义的合法协议。例如:“tcp”或“udp”。基于RPC的服务可以定义为:“rpc/tcp”或“rpc/udp”。
+
+.LP
+等待/不等待栏仅当定义接口类型为datagram时有效(其它接口在这里都使用“不等待”)。如果希望一个数据包到达它的同侪后,服务器立刻释放端口,使inetd可以继续监听此端口,即称为“多线程服务”,此时该栏须设为“不等待”。如果服务器都在一个端口传输数据包而且不会将此端口释放,则称此为“单一线程”,此时应设此栏为“等待”。Comsat(8)和talkd(8)是后一种数据类型的应用。Tftpd(8)则是一个例外,此数据服务建立的是一个虚拟的连接,为了避免竞争,此处应设为“等待”。服务器读在取第一个数据包后,重新建立一个新的接口供inetd继续提供监听使用,而旧的接口将在处理完该任务后将自动中断。可选项后缀“max”(与“等待”可“不等待”用逗号分隔)定义inetd在60秒内提供服务的最大进程数,缺省值为 40。
+
+.LP
+用户栏应包含可以使用该服务程序用户的用户名。此选项充许赋于inetd服务器程序低于root的权限。可以在用户名后用逗号分隔加上组名称,此选项可以使inetd在运行时以所定义的组身份运行而非/etc/password文件中定义的身份。如果在此定义了组名而所定义的用户名不是root 时,该用户所在组的名字将自动附加到此处。
+
+.LP
+服务器程序栏应包含全路径的服务器程序名,inetd在监听到某套接字上有请求时会调过该服务器程序。如果某服务由inetd内部提供,则此处应填“internal”。
+
+.PP
+
+
+服务器程序参数栏中应包含所有服务器程序运行时必须的各参数。如果服务程序由inetd内部提供,则此处应填“internal”。
+
+.PP
+
+
+inetd通过内部常规工作,自身也提供一些小的服务。这些服务有 “echo”、“discard”、“chargen”、“daytime”(人类语言)和“time”(以秒为单位的机器语言,从1900年1月1日零时开始计时)。所有这些服务都是基于tcp的。如想更深一步了解这些服务,可以从网上获得相关RFC文档。
+
+.PP
+
+
+inetd在接收到SIGHUP挂起信号后会重新读取其配置文件。在重读配置文件后,可能增加、减少或改变已有的服务。inetd在运行时会创建一个/var/run/inetd.pid的文件用来存放它的进程号。
+
+.SH 另见 SEE ALSO
+
+.PP
+
+comsat(8), fingerd(8), ftpd(8), rexecd(8), rlogind(8), rshd(8), lnetd(8), tftpd(8)
+
+
+.SH 历史 HISTORY
+
+\fBinetd\fR 命令最早出现在4.3BSD中。对基于Sun-RPC的服务支持从SunOS 4.1开始。
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.BR 2000/11/21
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/init.8 b/src/man8/init.8
new file mode 100644
index 0000000..cc49f09
--- /dev/null
+++ b/src/man8/init.8
@@ -0,0 +1,264 @@
+.\"; 中文版版权所有 soloman, Laser www.linuxforum.net 2000
+.TH INIT 8 "11 February 2000" "" "Linux 系统管理员手册"
+.SH NAME
+init, telinit \- 进程处理初始化
+.SH 总览
+.B /sbin/init
+.RB [ " -a " ]
+.RB [ " -s " ]
+.RB [ " -b " ]
+.RB [ " -z xxx " ]
+.RB [ " 0123456Ss " ]
+.br
+.B /sbin/telinit
+.RB [ " \-t 秒 " ]
+.RB [ " 0123456sSQqabcUu " ]
+.SH 描述
+.SS Init
+.B Init
+是所有进程的父进程。它的首要任务是从一个存储在文件
+\fB/etc/inittab\fP (参阅 \fIinittab\fP(5))
+里面的脚本里创建进程。
+这个文件通常有一些令 \fBinit\fP 在每条用户可登录的线上派生 \fBgetty\fP 的记录.
+它同时也控制着各独特系统所要求的独立进程。
+.SH 运行级别
+所谓
+\fI 运行级别 \fP 是一种系统软件环境配置,
+在此特定的环境中只允许某一组选定的进程存在。
+\fBinit\fP 给不同的运行级别派生的进程在 \fB/etc/inittab\fP 
+文件中定义。
+\fBInit\fP 可以启动到8个不同的运行级别上:
+\fB0\(en6\fP 和 \fBS\fP 或 \fBs\fP。运行级别可以由超级用户通过
+\fBtelinit\fP
+命令来转换,此命令可以将转换信号传递给 \fBinit\fP,
+告诉它切换到哪个运行级别。
+.PP
+运行级别 \fB0\fP,\fB1\fP,和 \fB6\fP 为系统保留的专用运行级别。
+运行级别 0 用来关机,运行级别 6 用来重启计算机,
+运行级别 1 用来使计算机进入单用户模式。
+运行级别 \fBS\fP 不是给我们直接使用的,
+更多是为进入运行级别 1 时运行某些可执行脚本时被调用。
+如果想得到更多相关的信息,请参阅手册页 \fBshutdown\fP(8) 和 \fBinittab\fP(5)。
+.PP
+运行级别 7-9 虽然在文档中说明,但也可以使用。
+不使用它们的原因只是因为"传统" Unix 变种不使用这些运行级别。
+另外,运行级别 \fIS\fP 和运行级别 \fIs\fP 实际上是相同的,
+它们只是系统内同一运行级别的两个不同的别名而己。
+.SH 系统引导
+.PP
+当系统内核引导到最后一步时, \fBinit\fP 进程被启动,
+它会自动查找 \fB/etc/inittab\fP 文件,看看是否有类型为
+\fBinitdefault\fP (参阅 \fIinittab\fP(5))的记录.
+\fBinitdefault\fP 记录决定系统初始运行级别。
+如果没有这条记录(或者根本就没有 \fB/etc/inittab\fP ),
+那么,你必须在系统控制台输入想要进入的运行级别。
+.PP
+运行级别 \fBS\fP 或 \fBs\fP 把系统带入单用户模式,
+此模式不需要 \fB/etc/initttab\fP 文件。单用户模式中,
+\fB/sbin/sulogin\fP 会在  \fB/dev/console\fP 这个设备上打开。
+.PP
+当进入单用户模式后, \fBinit\fP 会从文件 \fB/etc/ioctl.save\fP
+中读取控制台的 \fIioctl\fP(2) 状态。如果该文件不存在,
+\fBinit\fP 则把线路设定为 \fB9600 baud\fP 并且带有 \fBCLOCAL\fP。
+当 \fBinit\fP 退出单用户模式时,
+它会自当前的控制台的 \fIioctl\fP 设置存储到这个文件供下次使用。
+.PP
+当第一次进入多用户模式时,\fBinit\fP 会执行\fBboot\fP 和 \fBbootwait\fP 
+记录以便在用户可以登录之前挂载文件系统。
+然后再执行相应运指定的各进程。
+.PP
+当启动一个新的进程时, \fBinit\fP 会检查是否存在
+\fI/etc/initscript\fP 文件。
+如果存在该文件,则使用该脚本来启动该进程。
+.PP
+如果系统中存在文件 \fB/var/run/utmp\fP 和 \fB/var/log/wtmp\fP,
+那么当每个子进程终止时,\fBinit\fP 会将终止信息和原因记录进这两个文件中。
+.SH 改变运行级别
+.PP
+当 \fBinit\fP 启动了所有指定的子进程后,
+它会不断地侦测系统进程情况,如:它的某个子进程被终止、电源失效、或由
+\fBtelinit\fP 发出的改变运行级别的信号。当它接受到以上的这些信号之一时,
+它会自动重新扫描 \fB/etc/inittab\fP 文件,并执行相应操作。
+所以,新的记录可以随时加入到此文件中。
+并且, \fBinit\fP 仍然等待系统发出了上述信号。
+在更新了各种系统文件后,如果你希望得到即时的更新,
+你可以使用\fBtelinit Q\fP 或 \fBq\fP 命令来唤醒 \fBinit\fP 
+让它即刻重新检测\fB/etc/inittab\fP  文件。
+.PP
+如果 \fBinit\fP 不是在单用户模式并且接收到了一个电源失效信号(SIGPWR),
+它会读取文件 \fB/etc/powerstatus\fP,并执行该文件中指定的各种操作:
+.IP F(AIL)
+电源失效,由 UPS 提供电力。执行 \fBpowerwait\fP 和  \fBpowerfail\fP 记录。
+.IP O(K)
+电源恢复,执行 \fBpowerokwait\fP 记录。
+.IP L(OW)
+电源失效并且 UPS 电压也太低。执行 \fBpowerfailnow\fP 记录。
+.PP
+如果文件 /etc/powrestatus 不存在或其中的内容并不包含有以上所示的字母
+\fBF\fP,\fBO\fP 或 \fBL\fP ,则 init 会当做读到了字母 \fBF\fP。
+.PP
+我们不赞成使用 \fBSIGPWR\fP 和 \fB/etc/powerstatus\fP 。
+有些用户希望与 \fBinit\fP 进行交互,那么可以使用 \fB/dev/initctl\fP
+控制通道。关于此点的描述请参阅 \fBsysvinit\fP 包的源代码。
+.PP
+当 \fBinit\fP 得到更新运行级别的请求,
+init会向所有没有在新运行级别中定义的进程发送一个警告信号 \s-1\fBSIGTERM\fP\s0 。
+在等待 5 秒钟之后,它会发出强制中断所有进程的运行的信号 \s-1\fBSIGKILL\fP\s0 。
+注意, \fBinit\fP 假设所有的这些进程(包括它们的后代)都仍然在
+\fBinit\fP 最初创建它们的同一进程组里。
+如果有任何进程改变了它们的进程组,那么它就收不到这些信号。
+这样的进程,你需要分别进行手工的终止。
+.SH TELINIT
+\fB/sbin/telinit\fP 
+是一个到
+.BI /sbin/init
+的软链接。
+它用一个单字符参数来通知 \fBinit\fP 执行相应的操作。
+下面是相关的参数:
+.IP "\fB0\fP,\fB1\fP,\fB2\fP,\fB3\fP,\fB4\fP,\fB5\fP 或 \fB6\fP" 
+通知 \fBinit\fP 将运行级别切换到指定的运行级别
+.IP \fBa\fP,\fBb\fP,\fBc\fP 
+告诉 \fBinit\fP 只运行那些 \fB/etc/inittab\fP 文件中
+运行级别是 \fBa\fP,\fBb\fP 或 \fBc\fP 的记录
+.IP "\fBQ\fP 或 \fBq\fP"
+通知 \fBinit\fP 重新检测 \fB/etc/inittab\fP 文件
+.IP "\fBS\fP 或 \fBs\fP"
+通知 \fBinit\fP 将运行级别切换到单用户模式下
+.IP "\fBU\fP 或 \fBu\fP"
+通知 \fBinit\fP 自动重启(保留状态),
+此操作不会对文件\fB/etc/inittab\fP 进行重新检测。
+执行此操作时,运行级别必须处在 \fBSs12345\fP 之一,否则,该请求将被忽略
+.PP
+\fBtelinit\fP 还可以告诉 \fBinit\fP 
+两次发送 SIGTERM 和 SIGKILL 信号的时间间隔。
+默认值是 5 秒,你可以通过使用 \fB-t sec\fP 的选项来修改。
+.PP
+\fBtelinit\fP 只能由具有恰当权限的用户执行。
+.PP
+\fBinit\fP 通过检查自己的 \fI 进程号\fP 来判断自己是
+\fBinit\fP 还是 \fBtelinit\fP ;真的 \fBinit\fP 的进程号永远都是 \fB1\fP。
+从这一点来看,我们在调用 \fBtelinit\fP 时也可以只使用 \fBinit\fP 
+来少敲几个键.
+.SH 环境变量
+.PP
+\fBInit\fP 为所有的子进程设定下列环境变量
+.IP \fBPATH\fP
+\fI/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin\fP
+.IP \fBINIT_VERSION\fP
+如名字表示的那样.在决定一个脚本是否直接来自 \fBinit\fP 时很有用
+.IP \fBRUNLEVEL\fP
+当前系统的运行级别
+.IP \fBPREVLEVEL\fP
+前次运行的运行级别(仅当改变运行级别时有用)
+.IP \fBCONSOLE\fP
+系统控制台。此变量是由内核继承而来,如果没有此环境变量的定义,
+\fBinit\fP 会使用 \fB/dev/console\fP 做为默认的控制台
+.SH 启动标志
+在启动系统时可以通过引导管理器(比如,LILO)传递一些启动标志给 \fBinit\fP ,
+\fBInit\fP 接受下面几个:
+.TP 0.5i
+.B -s, S, single
+以单用户模式启动系统。按这种模式启动时, \fI/etc/inittab\fP 需要被检查,
+并在单用户模式 shell 启动之前会执行引导 rc 脚本。
+.PP
+.TP 0.5i
+.B 1-5
+定义需要启动的运行级别
+.PP
+.TP 0.5i		
+.B -b, emergency
+不运行任何启动脚本而直接进入单用户模式 shell
+.PP
+.Tp 0.5i
+.B -a, auto
+如果用缺省命令行从内核引导(没有用户干预),
+LILO 引导管理器向命令行增加了单词 \"auto\".
+如果是这样的话, \fBinit\fP 把环境变量 \"AUTOBOOT\" 设置为 \"yes\".
+请注意你不能将这个东西用于任何安全评测 - 用户当然可以在命令行上
+手工输入 \"auto\" 或 \-a .
+.PP
+.Tp 0.5i
+.B -z xxx
+-z 参数被忽略.你可以用这个选项略微扩展命令行,
+这样它可以在堆栈里获得更多空间.然后 \fBInit\fP 就可以操作命令行,
+好让 \fBps\fP(1) 显示当前运行级别.
+.SH 接口
+init监听 /dev 里的一个 \fIfifo\fP ,\fI/dev/initctl\fP,从中获取信息。
+\fBTelinit\fP 也使用这些和 init 进行通信。
+该界面没有完整的文档。
+如果对 init 有兴趣,则可以学习 \fIsrc/\fP 目录中
+\fBinit\fP 源文件包中的 \fIinitreq.h\fP 文件。
+.SH 信号
+init 对以下信号产生响应
+.TP 0.5i
+.B SIGHUP
+当接收到该信号后,init会对
+.I /etc/initrunlvl
+和
+.I /var/log/inirunlvl
+文件进行检查。如果这两个文件之一存在而且文件中有 ASCII 字符的运行级别,
+init 会转换到相应的新的运行级别。
+\fI 此特性只用于向后兼容! \fP .
+通常的情况是该文件并不存在,所以 init 执行类似于
+\fB telinit q\fP
+这样的操作。
+.PP
+.TP 0.5i		
+.B SIGUSR1
+当接收到这个信号量,init 会关闭并重新打开它的控制 fifo,\fB/dev/initctl\fP。
+此操作对 /dev 被重新挂载后的启动脚本有用。
+.TP 0.5i
+.B SIGINT
+通常,当用户按了 CTRL-ALT-DEL 键后,内核会向 init 传递此信号。
+它所执行的操作与 \fIctrlaltdel\fP 相同。
+.TP 0.5i
+.B SIGWINCH
+当键盘有 \fIKeyboardSignal\fP 按键按下时,内核向 init 传递此信号,
+它激活 \fIkbrequest\fP 动作.
+.SH 遵循
+\fBInit\fP 与 System V 的 init 相兼容。
+它与\fI/etc/init.d\fP 和 \fI/etc/rc{runlevel}.d\fP
+目录下的脚本紧密地工作在一起。
+如果你的系统使用这种惯例,在 \fI/etc/init.d\fP 目录下应该有一个
+\fIREADME\fP 文件,它可以很好地解释了这些脚本是如何工作的。
+.SH 相关文件
+.nf
+/etc/inittab
+/etc/initscript
+/dev/console
+/etc/ioctl.save
+/var/run/utmp
+/var/log/wtmp
+/dev/initctl
+.fi
+.SH 警告
+\fBInit\fP 假设进程和进程的后代同属于最初创建它们的进程组.
+如果进程改变了它们的进程组,
+\fBinit\fP 就无法中止它们,因此,你可能会有两个进程读取一条终端线.
+.SH 诊断
+如果 \fBinit\fP 发现它的重启次数在最近 2 分钟里超过了 10 次,
+它就会认为程序命令串出错了。在系统控制台输出出错信息,并拒绝重新启动,
+只有等到 5 分钟以后或用户给 init 一个特定的信号,
+它才会重新响应。
+这可以防止由于用户在编辑 \fB/etc/inittab\fP 文件时可能出现的输入错误
+或由于相关程序被无意删除后导致的大量占用系统资源。
+.SH 作者
+Miquel  van Smoorenburg (miquels at cistron.nl)
+原始帮助手册页作者:Michael Haardt  (u31b3hs at pool.informatik.rwthaachen.de).
+.SH 另见
+.BR getty (1),
+.BR login (1),
+.BR sh (1),
+.BR who (1),
+.BR shutdown(8),
+.BR kill (1),
+.BR inittab (5),
+.BR initscript (5),
+.BR utmp (5)
+.PP
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+2000/11/26
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/iptables-restore.8 b/src/man8/iptables-restore.8
new file mode 100644
index 0000000..02ece39
--- /dev/null
+++ b/src/man8/iptables-restore.8
@@ -0,0 +1,58 @@
+.TH IPTABLES-RESTORE 8 "Jan 04, 2001" "" ""
+.\"
+.\" Man page written by Harald Welte <laforge at gnumonks.org>
+.\" It is based on the iptables man page.
+.\"
+.\"	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 version.
+.\"
+.\"	This program is distributed in the hope that it will be useful,
+.\"	but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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.
+.\"
+.\"
+.SH NAME
+iptables-restore \- 恢复 IP Tables
+.SH "总览 SYNOPSIS"
+.BR "iptables-restore " "[-c] [-n]"
+.br
+.SH "描述 DESCRIPTION"
+.PP
+.B iptables-restore
+用来从 STDIN 给出的数据中恢复 IP Tables。
+使用 shell 的 I/O 重定向功能来从文件中获取数据
+.TP
+\fB\-c\fR, \fB\-\-counters\fR
+恢复所有报文和字节计数的值
+.TP
+\fB\-n\fR, \fB\-\-noflush\fR 
+.TP
+不刷新表中从前的内容。如果没有指定,
+.B iptables-restore
+会刷新 (删除) 相应 IP Tables 中所有从前的内容
+.SH BUGS
+无
+.SH "作者 AUTHOR"
+Harald Welte <laforge at gnumonks.org>
+.SH "参见 SEE ALSO"
+.BR iptables-save "(8), " iptables "(8) "
+.PP
+iptables-HOWTO 记述了 iptables 用法的细节,
+NAT-HOWTO 记述了 NAT 的细节,
+netfilter-hacking-HOWTO 记述了内部实现的细节
+.
+.SH "[中文版维护人]"
+.B 杨鹏 NetSnake <email>
+.br
+.B Poopy <email> (?)
+.SH "[中文版最新更新]"
+.B 2002.05.01
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/iptables-save.8 b/src/man8/iptables-save.8
new file mode 100644
index 0000000..df36a42
--- /dev/null
+++ b/src/man8/iptables-save.8
@@ -0,0 +1,56 @@
+.TH IPTABLES-SAVE 8 "Jan 04, 2001" "" ""
+.\"
+.\" Man page written by Harald Welte <laforge at gnumonks.org>
+.\" It is based on the iptables man page.
+.\"
+.\"	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 version.
+.\"
+.\"	This program is distributed in the hope that it will be useful,
+.\"	but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  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.
+.\"
+.\"
+.SH NAME
+iptables-save \- 保存 IP Tables
+.SH "总览 SYNOPSIS"
+.BR "iptables-save " "[-c] [-t table]"
+.br
+.SH "描述 DESCRIPTION"
+.PP
+.B iptables-save
+用来将 IP Table 转储为可以简单解析的格式,输出到标准输出 STDOUT。
+可以使用 shell 的 I/O 重定向功能来写入文件
+.TP
+\fB\-c\fR, \fB\-\-counters\fR
+在输出中包含所有报文和字节计数的当前值
+.TP
+\fB\-t\fR, \fB\-\-table\fR \fBtablename\fR
+.TP
+限制只输出一个表。如果不指定,会输出所有可能的表
+.SH BUGS
+无
+.SH "作者 AUTHOR"
+Harald Welte <laforge at gnumonks.org>
+.SH "参见 SEE ALSO"
+.BR iptables-restore "(8), " iptables "(8) "
+.PP
+iptables-HOWTO 记述了 iptables 用法的细节,
+NAT-HOWTO 记述了 NAT 的细节,
+netfilter-hacking-HOWTO 记述了内部实现的细节
+.
+.SH "[中文版维护人]"
+.B 杨鹏 NetSnake <email>
+.br
+.B Poopy <email> (?)
+.SH "[中文版最新更新]"
+.B 2002.05.01
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/iptables.8 b/src/man8/iptables.8
new file mode 100644
index 0000000..34bed2a
--- /dev/null
+++ b/src/man8/iptables.8
@@ -0,0 +1,452 @@
+.TH Iptables 8 "iptables 中文手册" ""
+.SH NAME 
+iptables - IP包过滤器管理
+
+.SH 总览
+iptables -ADC  指定链的规则  [-A  添加 -D 删除 -C 修改]
+.br
+iptables - RI 
+.br
+iptables -D chain rule num[option]
+.br
+iptables -LFZ 链名 [选项]
+.br
+iptables -[NX] 指定链
+.br
+iptables -P chain target[options]
+.br
+iptables -E old-chain-name new-chain-name
+
+.SH 说明
+Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 
+
+可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。
+每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处
+理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用
+户定义的链。
+
+.SH TARGETS
+防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中
+下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是
+用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除],
+QUEUE[排队],或者 RETURN[返回]。
+.PP
+.I ACCEPT
+ 表示让这个包通过。
+.br
+.I DROP
+ 表示将这个包丢弃。
+.br
+.I QUEUE
+ 表示把这个包传递到用户空间。
+.br
+.I RETURN
+ 表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的
+ 链(的末端),或者遇到内建链的规则是 RETURN,包的命运将由链准则指定的
+ 目标决定。
+
+.SH TABLES
+当前有三个表(哪个表是当前表取决于内核配置选项和当前模块)。
+.TP
+.B "-t table"
+这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时
+若模块没有加载,(系统)将尝试(为该表)加载适合的模块。
+
+这些表如下:
+.TP
+.BR "filter"
+,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWORD(处理通
+过的包)和OUTPUT(处理本地生成的包)。
+.TP
+.BR "nat"
+这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING
+ (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING
+ (修改准备出去的包)。
+.TP
+.BR "mangle"
+ 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之
+ 前进入的包)和OUTPUT(修改路由之前本地的包)。
+
+.SH OPTIONS
+这些可被iptables识别的选项可以区分不同的种类。
+.SS COMMANDS
+这些选项指定执行明确的动作:若指令行下没有其他规定,该行只能指定一个选项.
+对于长格式的命令和选项名,所用字母长度只要保证iptables能从其他选项中区
+分出该指令就行了。
+.TP
+.BR "-A -append"
+在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换
+为多于一个(多个)地址时,这条规则会加到所有可能的地址(组合)后面。
+.TP
+.BR "-D -delete"
+从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则
+指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
+.TP
+.BR "-R -replace"
+从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地
+址,该命令会失败。规则序号从1开始。
+.TP
+.BR "-I -insert"
+根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1,
+规则会被插入链的头部。这也是不指定规则序号时的默认方式。
+.TP
+.BR "-L -list"
+显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起
+使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。
+.TP
+.BR "-F -flush"
+清空所选链。这等于把所有规则一个个的删除。
+.TP
+.BR "--Z -zero"
+把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。
+.TP
+.BR "-N -new-chain"
+根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。
+.TP
+.BR "-X -delete-chain"
+删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删
+除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非
+内建的链。
+.TP
+.BR "-P -policy"
+设置链的目标规则。
+.TP
+.BR "-E -rename-chain"
+根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。
+TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用
+户自定义链都不能是规则的目标。
+.TP
+.BR "-h Help."
+帮助。给出当前命令语法非常简短的说明。
+.SS 参数
+以下参数构成规则详述,如用于add、delete、replace、append 和 check命令。
+.TP
+.BR "-p -protocal [!]protocol"
+规则或者包检查(待检查包)的协议。指定协议可以是tcp、udp、icmp中的一个或
+者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/pro
+tocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有
+all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合
+时,all可以不被使用。
+.TP
+.BR "-s -source [!] address[/mask]"
+指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码
+或清楚的数字,在网络掩码的左边指定网络掩码左边”1”的个数,因此,mask
+值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志
+ --src 是这个选项的简写。
+.TP
+.BR "-d --destination [!] address[/mask]"
+指定目标地址,要获取详细说明请参见 -s标志的说明。标志 --dst 是这个选项的简写。
+.TP
+.BR "-j --jump target"
+(-j 目标跳转)指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用
+户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标,
+或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个选项被忽略,那么匹
+配的过程不会对包产生影响,不过规则的计数器会增加。
+.TP
+.BR "-i -in-interface [!] [name]"
+(i -进入的(网络)接口 [!][名称])这是包经由该接口接收的可选的入口名称,包通过
+该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。当在接口名
+前使用"!"说明后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名
+开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口。
+.TP
+.BR "-o --out-interface [!][name]"
+(-o --输出接口[名称])这是包经由该接口送出的可选的出口名称,包通过该口输出(在
+链FORWARD、OUTPUT和POSTROUTING中送出的包)。当在接口名前使用"!"说明
+后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名开头的接口都会
+被匹配。如果这个选项被忽略,会假设为"+",那么将匹配所有任意接口。
+.TP
+.BR "[!] -f, --fragment"
+( [!] -f --分片)这意味着在分片的包中,规则只询问第二及以后的片。自那以后由于无
+法判断这种把包的源端口或目标端口(或者是ICMP类型的),这类包将不能匹配任
+何指定对他们进行匹配的规则。如果"!"说明用在了"-f"标志之前,表示相反的意思。
+TP
+.B "-c, --set-counters " "PKTS BYTES"
+This enables the administrater to initialize the packet and byte
+counters of a rule (during
+.B INSERT,
+.B APPEND,
+.B REPLACE
+operations)
+
+.SS 其他选项
+还可以指定下列附加选项:
+.TP
+.BR "-v --verbose"
+详细输出。这个选项让list命令显示接口地址、规则选项(如果有)和TOS
+(Type of Service)掩码。包和字节计数器也将被显示,分别用K、M、G
+(前缀)表示1000、1,000,000和1,000,000,000倍(不过请参看-x标志改变它),
+对于添加,插入,删除和替换命令,这会使一个或多个规则的相关详细信息被打印。
+.TP
+.BR "-n --numeric"
+数字输出。IP地址和端口会以数字的形式打印。默认情况下,程序试显
+示主机名、网络名或者服务(只要可用)。
+.TP
+.BR "-x -exact"
+扩展数字。显示包和字节计数器的精确值,代替用K,M,G表示的约数。
+这个选项仅能用于 -L 命令。
+.TP
+.BR "--line-numbers"
+当列表显示规则时,在每个规则的前面加上行号,与该规则在链中的位置相对应。
+
+.SH 对应的扩展
+iptables能够使用一些与模块匹配的扩展包。以下就是含于基本包内的
+扩展包,而且他们大多数都可以通过在前面加上!来表示相反的意思。
+
+.SS tcp
+当 --protocol tcp 被指定,且其他匹配的扩展未被指定时,这些扩展被装载。它提供以下选项:
+.TP
+.BR "--source-port [!] [port[:port]]"
+源端口或端口范围指定。这可以是服务名或端口号。使用格式端口:端口也可以
+指定包含的(端口)范围。如果首端口号被忽略,默认是"0",如果末端口号被忽
+略,默认是"65535",如果第二?龆丝诤糯笥诘谝桓觯?敲此?腔岜唤换弧U飧鲅∠羁梢允褂? --sport的别名。
+.TP
+.BR "--destionation-port [!] [port:[port]]"
+目标端口或端口范围指定。这个选项可以使用 --dport别名来代替。
+.TP
+.BR "--tcp-flags [!] mask comp"
+匹配指定的TCP标记。第一个参数是我们要检查的标记,一个用逗号分开的列表,
+第二个参数是用逗号分开的标记表,是必须被设置的。标记如下:SYN ACK FIN
+ RST URG PSH ALL NONE。因此这条命令:iptables -A FORWARD -p tcp --tcp-flags SYN, ACK,
+ FIN, RST SYN只匹配那些SYN标记被设置而ACK、FIN和RST标记没有设置的包。
+.TP
+.BR "[!] --syn"
+只匹配那些设置了SYN位而清除了ACK和FIN位的TCP包。这些包用于TCP连接初始
+化时发出请求;例如,大量的这种包进入一个接口发生堵塞时会阻止进入的TCP连接
+,而出去的TCP连接不会受到影响。这等于 --tcp-flags SYN, RST, ACK SYN。如果
+"--syn"前面有"!"标记,表示相反的意思。
+.TP
+.BR "--tcp-option [!] number"
+匹配设置了TCP选项的。
+
+.SS udp
+当protocol udp 被指定,且其他匹配的扩展未被指定时,这些扩展被装载,它提供以下选项:
+.TP
+.BR "--source-port [!] [port:[port]]"
+源端口或端口范围指定。详见 TCP扩展的--source-port选项说明。
+.TP
+.BR "--destination-port [!] [port:[port]]"
+目标端口或端口范围指定。详见 TCP扩展的--destination-port选项说明。
+
+.SS icmp
+当protocol icmp被指定,且其他匹配的扩展未被指定时,该扩展被装载。它提供以下选项:
+.TP
+.BR "--icmp-type [!] typename"
+这个选项允许指定ICMP类型,可以是一个数值型的ICMP?嘈停?蛘呤悄掣鲇擅??
+.br
+iptables -p icmp -h
+.br
+所显示的ICMP类型名。
+
+.SS mac
+.TP
+.BR "--mac-source [!] address"
+匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意它只对来自以太设备并
+进入PREROUTING、FORWORD和INPUT链的包有效。
+
+.SS limit
+这个模块匹配标志用一个标记桶过滤器一一定速度进行匹配,它和LOG
+目标结合使用来给出有限的登陆数.当达到这个极限值时,使用这个扩展
+包的规则将进行匹配.(除非使用了
+”!”标记)
+.TP
+.BR "--limit rate"
+最大平均匹配速率:可赋的值有'/second', '/minute', '/hour', or '/day'这样的单位,默认是3/hour。
+.TP
+.BR "--limit-burst number"
+待匹配包初始个数的最大值:若前面指定的极限还没达到这个数值,则概数字加1.默认值为5
+.TP
+.BR "multiport"
+这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp 或者 -p udp 连着使用。
+.TP
+.BR "--source-port [port[, port]]"
+如果源端口是其中一个给定端口则匹配
+.TP
+.BR "--destination-port [port[, port]]"
+如果目标端口是其中一个给定端口则匹配
+.TP
+.BR "--port [port[, port]]"
+若源端口和目的端口相等并与某个给定端口相等,则匹配。
+
+.SS mark
+这个模块和与netfilter过滤器标记字段匹配(就可以在下面设置为使用MARK标记)。
+.TP
+.BR "--mark value [/mask]"
+匹配那些无符号标记值的包(如果指定mask,在比较之前会给掩码加上逻辑的标记)。
+
+.SS owner
+此模块试为本地生成包匹配包创建者的不同特征。
+只能用于OUTPUT链,而且即使这样一些包(如ICMP ping应答)还
+可能没有所有者,因此永远不会匹配。
+.TP
+.BR "--uid-owner userid"
+如果给出有效的user id,那么匹配它的进程产生的包。
+.TP
+.BR "--gid-owner groupid"
+如果给出有效的group id,那么匹配它的进程产生的包。
+.TP
+.BR "--sid-owner seessionid"
+根据给出的会话组匹配该进程产生的包。
+
+.SS state
+此模块,当与连接跟踪结合使用时,允许访问包的连接跟踪状态。
+.TP
+.BR "--state state"
+这里state是一个逗号分割的匹配连接状态列表。可能的状态是:INVALID
+表示包是未知连接,ESTABLISHED表示是双向传送的连接,NEW表示包
+为新的连接,否则是非双向传送的,而RELATED表示包由新连接开始,但
+是和一个已存在的连接在一起,如FTP数据传送,或者一个ICMP错误。
+
+.SS unclean
+此模块没有可选项,不过它试着匹配那些奇怪的、不常见的包。处在实验中。
+
+.SS tos
+此模块匹配IP包首部的8位tos(服务类型)字段(也就是说,包含在优先位中)。
+.TP
+.BR "--tos tos"
+这个参数可以是一个标准名称,(用iptables -m tos -h 察看该列表),或者数值。
+
+.SH TARGET EXTENSIONS
+iptables可以使用扩展目标模块:以下都包含在标准版中。
+
+.SS LOG
+为匹配的包开启内核记录。当在规则中设置了这一选项后,linux内核会通
+过printk()打印一些关于全部匹配包的信息(诸如IP包头字段等)。
+.TP
+.BR "--log-level level"
+记录级别(数字或参看 syslog.conf(5))。
+.TP
+.BR "--log-prefix prefix"
+在纪录信息前加上特定的前缀:最多14个字母长,用来和记录中其他信息区别。
+.TP
+.BR "--log-tcp-sequence"
+记录TCP序列号。如果记录能被用户读取那么这将存在安全隐患。
+.TP
+.BR "--log-tcp-options"
+记录来自TCP包头部的选项。
+.TP
+.BR "--log-ip-options"
+记录来自IP包头部的选项。
+
+.SS MARK
+用来设置包的netfilter标记值。只适用于mangle表。
+.TP
+.Nr "--set-mark mark"
+
+.SS REJECT
+作为对匹配的包的响应,返回一个错误的包:其他情况下和DROP相同。
+
+此目标只适用于INPUT、FORWARD和OUTPUT链,和调用这些链的用
+户自定义链。这几个选项控制返回的错误包的特性:
+.TP
+.BR "--reject-with type"
+Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-prot
+o-unreachable、 icmp-net-prohibited 或者
+ icmp-host-prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项
+ echo-reply也是允许的;它只能用于指定ICMP
+ ping包的规则中,生成ping的回应。最后,选项tcp-reset可以用于在INPUT链中,或
+ 自INPUT链调用的规则,只匹配TCP协议:将回应一个TCP
+ RST包。
+
+.SS TOS
+用来设置IP包的首部八位tos。只能用于mangle表。
+.TP
+.BR "--set-tos tos"
+你可以使用一个数值型的TOS 值,或者用iptables -j TOS -h 来查看有效TOS名列表。
+.SS MIRROR
+这是一个试验示范目标,可用于转换IP首部字段中的源地址和目标地址,
+再传送该包,并只适用于INPUT、FORWARD和OUTPUT链,以及只调用它们的用户自定义链
+。
+
+.SS SNAT
+这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地
+址(此连接以后所有的包都会被影响),停止对规则的检查,它包含选项:
+.TP
+.BR "--to-source <ipaddr>[-<ipaddr>][:port-port]"
+可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围
+(只能在指定-p tcp 或者-p udp的规则里)。如果未指定端口范围,源端口中
+512以下的(端口)会被安置为其他的512以下的端口;512到1024之间的端口
+会被安置为1024以下的,其他端口会被安置为1024或以上。如果可能,
+端口不会被修改。
+.TP
+.BR "--to-destiontion <ipaddr>[-<ipaddr>][:port-port]"
+可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp 或者-p
+ udp的规则里)。如果未指定端口范围,目标端口不会被修改。
+
+.SS MASQUERADE
+只用于nat表的POSTROUTING链。只能用于动态获取IP(拨号)连接:如果你拥有静态IP
+地址,你要用SNAT。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当接口关
+闭连接会终止。这是因为当下一次拨号时未必是相同的接口地址(以后所有建立的连接都将
+关闭)。它有一个选项:
+.TP
+.BR "--to-ports <port>[-port>]"
+指定使用的源端口范围,覆盖默认的SNAT源地址选择(见上面)。这个选项只适用于指定
+了-p tcp或者-p udp的规则。
+
+.SS REDIRECT
+只适用于nat表的PREROUTING和OUTPUT链,和只调用它们的用户自定义链。它修改包的
+目标IP地址来发送包到机器自身(本地生成的包被安置为地址127.0
+.0.1)。它包含一个选项:
+.TP
+.BR "--to-ports <port>[<port>]"
+指定使用的目的端口或端口范围:不指定的话,目标端口不会被修改。只能用于指定了-p tcp 或 -p udp的规则。
+
+.SH 诊断
+不同的错误信息会打印成标准错误:退出代码0表示正确。类似于不对的或者滥用的命令
+行参数错误会返回错误代码2,其他错误返回代码为1。
+
+.SH 臭虫
+检查还未完成。
+
+.SH COMPATIBILITY WITH IPCHAINS
+与ipchains的兼容性
+
+This iptables is very similar to ipchains by Rusty Russell. The main difference
+ is that the chains INPUT and OUTPUT are only traversed for packets coming into
+ the local host and originating from the local host respectively. Hence every
+ pack only passes through one of the three chains; previously a forwarded packet
+ would pass through all three. The other main difference is that -I refers to
+ input interface; -o refers to the output interface, and both are available for
+ packets entering the FORWARD chain. iptables is a pure packet filter when using
+ the default filter' table, with optional extension modules. This should
+ simplify much of the previous confusion over the combination of IP masquerading
+ and packet filtering seen previously. So the following options are handled
+ differently:
+-j MASQ
+-M -S
+-M -L
+There are several other chaines in iptables
+iptables和Rusty Russell的ipchains非常相似。主要区别是INPUT 链只用于进入本
+地主机的包,而OUTPUT只用于自本地主机生成的包。因此每个包只经过三个链的
+一个;以前转发的包会经过所有三个链。其他主要区别是 -i 引用进入接口;-o引
+用输出接口,两者都适用于进入FORWARD链的包。当和可选扩展模块一起使用
+默认过滤器表时,iptables是一个纯粹的包过滤器。这能大大减少以前对IP伪装和
+包过滤结合使用的混淆,所以以下选项作了不同的处理:
+-j MASQ
+-M -S
+-M -L
+在iptables中有几个不同的链。
+
+.SH 参见
+iptables-HOWTO有详细的iptables用法,对netfilter-hacking-HOWTO也有详细的本质说明。
+
+.SH 作者
+Rusty Russell wrote iptables, in early consultation with Michael Neuling.
+Marc  Boucher  made Rusty abandon ipnatctl by lobbying for a generic packet
+ selection framework in iptables, then wrote the mangle table, the owner match,
+ the  mark  stuff,  and  ranaround doing cool stuff everywhere.
+James Morris wrote the TOS target, and tos match.
+Jozsef Kadlecsik wrote the REJECT target.
+The Netfilter Core Team is: Marc Boucher, Rusty Russell.
+.TP
+                           Mar 20, 2000
+.br
+
+.SH "[中文版维护人]"
+.B 杨鹏·NetSnake <netsnake at 963.net>
+.\" 湖北省恩施市东风大道22号《恩施日报》社
+.\" 445000
+.\" 0718-8260030
+.SH "[中文版最新更新]"
+.BR 2003.11.20
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/lilo.8 b/src/man8/lilo.8
new file mode 100644
index 0000000..251fb38
--- /dev/null
+++ b/src/man8/lilo.8
@@ -0,0 +1,176 @@
+'\"t
+.\" @(#)lilo.8 1.0 950728 aeb
+.\" This page is based on the lilo docs, which carry the following
+.\" COPYING condition:
+.\"
+.\" LILO program code, documentation and auxiliary programs are
+.\" Copyright 1992-1994 Werner Almesberger.
+.\" All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms of parts of or the
+.\" whole original or derived work are permitted provided that the
+.\" original work is properly attributed to the author. The name of the
+.\" author may not be used to endorse or promote products derived from
+.\" this software without specific prior written permission. This work
+.\" is provided "as is" and without any express or implied warranties.
+.\"
+.\" Original version, Andries Brouwer (aeb at cwi.nl), 950728
+.\" Added t directive, as Daniel Quinlan asked, 950824
+.\"
+.TH LILO 8 "28 July 1995"
+
+
+.SH NAME
+lilo \- 安装引导装入程序
+
+.SH 总述
+主要功能:
+.LP
+.B ” /sbin/lilo”
+\- 安装引导装入程序
+.LP
+辅助用途:
+.LP
+.B ”/sbin/lilo –q”
+\- 查询影射表
+.br
+.B ”/sbin/lilo –R”
+\- 设置下次启动的默认命令行
+.br
+.B ”/sbin/lilo –I”
+\- 查询当前内核的路径
+.br
+.B ”/sbin/lilo {-u|-U}”
+\- 卸载lilo
+
+.SH 使用说明
+.LP
+lilo 安装一个你在下一次启动时被激活的引导装入程序
+它有多项的选择.
+.LP
+.TP
+.B \-\^v
+增加冗余.给出一个或更多的-v选项
+使lilo 更详细.
+.TP
+.B \-\^q
+列表当前已被影射的文件.
+.B lilo
+维护着一个文件,缺省的是
+.IR ”/boot/map”,
+包含了启动内核的名称和定位(位置)。
+这个选项列出在其中的名字.
+.BI ”\-\^m “ 影射文件名
+使用指定的影射文件代替默认的.
+.TP
+.BI ”\-\^C” 配置文件名
+.B lilo
+从这个文件中读取有关影射文件的指令, 省缺的是
+.IR ”/etc/lilo.conf”.
+这个选项能使用一个指定的非默认的配置文件.
+.TP
+.BI ”\-\^d “ 延迟
+如果你有几个指定的内核, 在启动时按下Shift 键, 引导程序会提供一个你选
+择使用哪个系统内核去启动的机会. 一个预期的时间后列表的第一项将被引导. 
+这个选项指定一个以十分之一秒为单位的超时延迟.
+.TP
+.BI ”\-\^D ” 标记
+使用给出标记的内核去代替第一个来作为默认的引导.
+.TP
+.BI ”\-\^r ” root-目录
+做任何(修改)之前,改变root的位置到指出的目录.
+习惯上用于纠正从软盘启动的安装.
+.TP
+.BI ”\-\^t ”
+只进行测试. 不会真正的写入新的启动或影射文件.
+和\fB-v\fP一起使用得知.B lilo
+大约有什么要做.
+.TP
+.B ”\-\^c ”
+影射压缩.将合并读入从临近部分的请求.
+加速启动(尤其从软盘).
+.TP
+.BI ”\-\^f ” disk-tab
+指定磁盘参数文件. (省缺的是
+.IR /etc/disktab.)
+.TP
+.BI ”\-\^i ” boot-sector
+指定一个文件作为boot sector使用.(省缺的是 
+.IR /boot/boot.b.)
+.TP
+.BI ”\-\^l ”
+产生线性sector地址代替sector/head/cylinder 地址.
+.TP
+.BI ”\-\^P ” ”{fix|ignore}”
+修理(或忽略)被破坏的分区表, 例如,
+分区表用线性的和sector/head/cylinder 地址不协调.
+.TP
+.BI ”\-\^s ” save-file
+当
+.B lilo
+覆盖 boot sector, 保存旧的内容在一个文件里,
+省缺的是
+.I /boot/boot.NNNN
+这个NNNN依赖与设备.
+这选项为boot sector 指定一个后选的挽救文件.
+(或者, 和
+\fB-u\fP 一起使用,从哪里恢复boot sector.)
+.TP
+.BI ”\-\^S ” 挽救文件
+通常地,
+.B lilo
+不会覆盖已存在的挽救文件.
+这个选项就是告诉它可以覆盖(这个文件).
+.TP
+.BI ”\-\^u ” device-name
+卸载
+.BR lilo,
+通过检查时间标记,拷回一个保存了的boot sector.
+.TP
+.BI ”\-\^U ” device-name
+同上, 但不检查时间标记.
+.TP
+.BI ”\-\^R ” command line
+设定下次启动的命令行.boot loader会删除这行的:
+这是个一次性命令.代表性的用在reboot 脚本, 只在调用shutdown -r'之前使
+用.
+.TP
+.BI ”\-\^I ” 标记
+启动后可以在环境变量BOOT_IMAGE 找到这个标记.
+在标准输出设备上,这个命令列出相应的路径名.
+.TP
+.B ”\-\^V”
+列出版本号.
+.LP
+上面的命令行选项相对应于下面在配置文件指出的关键字。
+.IP
+.TS
+1.1
+-b bootdev boot=bootdev
+-c compact
+-d dsec delay=dsec
+-D label default=label
+-i bootsector install=bootsector
+-f file disktab=file
+-l linear
+-m mapfile map=mapfile
+-P fix fix-table
+-P ignore ignore-table
+-s file backup=file
+-S file force-backup=file
+-v verbose=level
+.TE
+.SH ”请参阅”
+lilo.conf(5).
+.br
+lilo 分发的非常广泛的文档.
+.SH ”作者”
+Werner Almesberger (almesber at bernina.ethz.ch).
+.br
+
+.SH ”[中文版维护人]”
+.B Scorpio <rawk at chinese.com>
+.SH ”[中文版最新更新]”
+2000/10/9
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/losetup.8 b/src/man8/losetup.8
new file mode 100644
index 0000000..cb0662f
--- /dev/null
+++ b/src/man8/losetup.8
@@ -0,0 +1,92 @@
+.TH LOSETUP 8 "Nov 24 1993" "Linux" "MAINTENANCE COMMANDS"
+.SH NAME
+losetup \- 设 定 与 控 制 环回设备
+.SH "总览 SYNOPSIS"
+.ad l
+.B losetup
+[
+.B \-e
+.I encryption
+] [
+.B \-o
+.I offset
+]
+.I loop_device file
+.br
+.B losetup
+[
+.B \-d
+]
+.I loop_device
+.ad b
+.SH "描述"
+.B losetup
+用 来 将 loop device 与 档 案 或 block device 联 结 、 分 离 . 以 及 查 询 loop device 目 前 的 状 况 , 如 只 给 定 \fIloop_device\fR 的 参 数 . 则 秀 出 loop device 目 前 的 状 况 .
+.SH "选项 OPTIONS"
+.IP \fB\-d\fP
+将 某 个 档 案 或 装 制 与 loop 装 置 分 离
+.IP "\fB\-e \fIencryption\fP"
+.RS
+启 动 资 料 编 码 . 下 列 为 可 用 的 选 项 参 数 :启 动 资 料 编 码 . 下 列 为 可 用 的 选 项 参 数 :
+.IP \fBNONE\fP
+不 编 码 ( 定 义 值 ) .
+.PD 0
+.IP \fBXOR\fP
+使 用 简 易 的 XOR 编 码
+.IP \fBDES\fP
+使 用 DES 编 码 . DES 编 码 须 在 kernel 上 加 上 DES 编 码 功 能 . DES 编 码 是 利 用 启 始 值 做 为 密 码 保 护 来 防 止 他 人 用 字 典 功 击 法 破 解 .
+.PD
+.RE
+.IP "\fB\-o \fIoffset\fP"
+资 料 开 启 时 资 料 平移(offset) 几 个 bytes 来 与 档 案 或 装 置 联 接 
+.SH "返回值 RETURN VALUE"
+.B losetup
+returns 0 on success, nonzero on failure. When
+.B losetup
+displays the status of a loop device, it returns 1 if the device
+is not configured and 2 if an error occurred which prevented
+.B losetup
+from determining the status of the device.
+
+.SH "文件 FILES"
+.nf
+/dev/loop0,/dev/loop1,...   loop devices (major=7)
+.fi
+.SH "范例 EXAMPLE"
+如 核 心 使 用 模 组 , 须 先 使 用 下 列 命 令 将 模 组 载 入 .
+.IP
+# insmod loop.o
+.LP
+下 列 为 使 用 loop 装 置 的 简 单 范 例 .
+.nf
+.IP
+dd if=/dev/zero of=/file bs=1k count=100
+losetup -e des /dev/loop0 /file
+Password:
+Init (up to 16 hex digits):
+mkfs -t ext2 /dev/loop0 100
+mount -t ext2 /dev/loop0 /mnt
+ ...
+umount /dev/loop0
+losetup -d /dev/loop0
+.fi
+.LP
+核 心 使 用 模 组 , 须 利 用 下 列 命 令 移 除 loop 模 组 .
+.IP
+# rmmod loop
+.LP
+.fi
+.SH "限制 RESTRICTION"
+DES 编 码 十 分 慢 , 而 使 用 XOR 却 十 分 脆 弱 .
+.SH "作者 AUTHOR"S
+.nf
+Original version: Theodore Ts'o <tytso at athena.mit.edu>
+Original DES by: Eric Young <eay at psych.psy.uq.oz.au>
+.fi
+
+.SH "[中文版维护人]"
+.B 软件教程之Linux Man
+.SH "[中文版最新更新]"
+.B 1989.01.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/lspci.8 b/src/man8/lspci.8
new file mode 100644
index 0000000..931a274
--- /dev/null
+++ b/src/man8/lspci.8
@@ -0,0 +1,121 @@
+.TH lspci 8 "30 March 2002" "pciutils-2.1.10" "Linux PCI Utilities"
+.IX lspci
+.SH NAME
+lspci \- 列出所有PCI设备
+.SH 总览 SYNOPSIS
+.B lspci
+.RB [ options ]
+.SH 描述 DESCRIPTION
+.B lspci
+是一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具。
+
+为了能使用这个命令所有功能,你需要有 \fIlinux\fR \fI2.1.82\fR 或以上版本,支持 \fI/proc/bus/pci\fR 接口的内核。在旧版本内核中,PCI工具必须使用只有root才能执行的直接硬件访问,而且总是出现竞争状况以及其他问题。
+
+如果你要报告 PCI 设备驱动中,或者是
+.I lspci
+自身的 bugs,请在报告中包含 \fI"lspci -vvx"\fR 的输出。
+
+.SH 选项 OPTIONS
+.TP
+.B -v
+使得
+.I lspci
+以冗余模式显示所有设备的详细信息。
+.TP
+.B -vv
+使得
+.I lspci
+以过冗余模式显示更详细的信息 (事实上是 PCI 设备能给出的所有东西)。这些数据的确切意义没有在此手册页中解释,如果你想知道更多,请参照
+.B /usr/include/linux/pci.h
+或者 PCI 规范。
+.TP
+.B -n
+以数字形式显示 PCI 生产厂商和设备号,而不是在 PCI ID 数据库中查找它们。
+.TP
+.B -x
+以十六进制显示 PCI 配置空间 (configuration space) 的前64个字节映象 (标准头部信息)。此参数对调试驱动和
+.I lspci
+本身很有用。
+.TP
+.B -xxx
+以十六进制显示所有 PCI 配置空间的映象。此选项只有 root 可用,并且很多 PCI 设备在你试图读取配置空间的未定义部分时会崩溃 (此操作可能不违反PCI标准,但是它至少非常愚蠢)。
+.TP
+.B -b
+以总线为中心进行查看。显示所有 IRQ 号和内存地址,就象 PCI 总线上的卡看到的一样,而不是内核看到的内容。
+.TP
+.B -t
+以树形方式显示包含所有总线、桥、设备和它们的连接的图表。
+.TP
+.B -s [[<bus>]:][<slot>][.[<func>]]
+仅显示指定总线、插槽上的设备或设备上的功能块信息。设备地址的任何部分都可以忽略,或以“*”代替 (意味着所有值)。所有数字都是十六进制。例如:“0:”指的是在0号总线上的所有设备;“0”指的是在任意总线上0号设备的所有功能块;“0.3”选择了所有总线上0号设备的第三个功能块;“.4”则是只列出每一设备上的第四个功能块。
+.TP
+.B -d [<vendor>]:[<device>]
+只显示指定生产厂商和设备 ID 的设备。 这两个 ID 都以十六进制表示,可以忽略或者以“*”代替 (意味着所有值)。
+.TP
+.B -i <file>
+使用
+.B <file>
+作为 PCI ID 数据库而不是使用默认的 \fI/usr/share/hwdata/pci.ids\fR。
+.TP
+.B -p <dir>
+使用
+.B <dir>
+作为包含 PCI 总线信息的目录而不是使用默认的目录 \fI/proc/bus/pci\fR。
+.TP
+.B -m
+以机器可读的方式转储 PCI 设备数据 (支持两种模式:普通和冗余),便于脚本解析。
+.TP
+.B -M
+使用总线映射模式,这种模式对总线进行全面地扫描以查明总线上的所有设备,包括配置错误的桥之后的设备。请注意,此操作只应在调试时使用,并可能造成系统崩溃 (只在设备有错误的时候,但是不幸的是它们存在),此命令只有 root 可以使用。同时,在不直接接触硬件的 PCI 访问模式中使用 \fI-M\fR 参数没有意义,因为显示的结果 (排除 lspci 中的 bug 的影响) 与普通的列表模式相同。
+.TP
+.B --version
+显示
+.I lspci
+的版本。这个选项应当单独使用。
+
+.SH "PCILIB 选项 PCILIB OPTIONS"
+PCI 工具使用 PCILIB (一种可移植的库,提供平台独立的函数来访问 PCI 配置空间) 来和PCI卡交互。下面的选项用来控制库参数,特别是所用访问模式的指定。默认情况下,PCILIB 使用第一种可用的访问模式,不会显示任何调试信息。每一个开关选项都列出了一组它所支持的硬件/软件列表。
+
+.TP
+.B -P <dir>
+使用 linux 2.1 风格的配置,直接访问目录
+.B <dir>
+而非 \fI/proc/bus/pci\fR 目录。(只能在 linux 2.1 或以上版本中使用)
+.TP
+.B -H1
+通过 Intel 架构 \fB1\fR 来实现直接硬件访问。(只能用于 i386 及其兼容机)
+.TP
+.B -H2
+通过Intel 架构 \fB2\fR 来实现直接硬件访问。警告:此模式只能寻址任何总线上的前16个设备,并且在很多情况下相当不可靠。(只能用于 i386 及其兼容机)
+.TP
+.B -S
+使用 PCI 系统调用访问。(只能用于 Alpha 和 Ultra-Sparc 上的 Linux)
+.TP
+.B -F <file>
+从所给的包含 \fIlspci -x\fR 命令输出的文件中获取相关信息。这在分析用户提交的错误报告时很有用,因为你可以用任何方式来显示硬件配置信息而无需为了获取更多信息打扰用户。(可用于所有系统)
+.TP
+.B -G
+增加库的调试等级。(可用于所有系统)
+
+.SH 文件 FILES
+.TP
+.B /usr/share/hwdata/pci.ids
+所有已知 PCI ID 的清单 (厂商,设备名,类,子类)
+.TP
+.B /proc/bus/pci
+\fIlinux 2.1.82\fR 之后版本内核提供的 PCI 总线配置空间的接口。包含每个总线 (per-bus) 的子目录以及每个设备卡 (per-card) 的配置空间文件,还有一个
+.I devices
+文件,包含所有PCI设备的列表。
+
+.SH 参见 SEE ALSO
+.BR setpci (8)
+
+.SH 作者 AUTHOR
+Linux PCI 工具由 Martin Mares <mj at atrey.karlin.mff.cuni.cz> 维护。
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B Nov 28 2000
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/mailstats.8 b/src/man8/mailstats.8
new file mode 100644
index 0000000..87469d8
--- /dev/null
+++ b/src/man8/mailstats.8
@@ -0,0 +1,73 @@
+.TH MAILSTATS 1 "UNIX Reference Manual" "3rd Berkeley Distribution" "April 25, 1996"
+.SH NAME
+.B   mailstats - 显示邮件状态信息
+.SH 总览
+.B   mailstats [-o] [-C cffile] [-f stfile]
+.SH 描述
+mailstats工具显示当前的邮件状态信息。
+.PP
+首先,先显示统计启动时所记录的时间,当然是以ctime(3)所指定的格式。然后每行显
+示一个邮件程序的统计,而每行都以空格把下面这些字段分隔开:
+.sp
+.RS
+.PD 0.2v
+.TP 1.2i
+M
+邮件程序号码
+.TP
+msgsfr
+该邮件程序接收的信件数
+.TP
+bytes_from   
+该邮件程序接收的信件容量
+.TP
+msgsto       
+该邮件程序发出的信件数
+.TP
+bytes_to     
+该邮件程序发出的信件容量
+.TP
+msgsrej      
+退回的信件数
+.TP
+msgsdis      
+丢弃的信件数
+.TP
+Mailer       
+该邮件程序名
+.PD
+.RE
+.PP
+显示完这些后,用一行对所有邮件程序的所有值进行合计,中间用一行等号把它和上面的
+内容隔开。
+.PP
+该程序有以下选项:
+.TP
+-C
+读取指定的文件来替换缺省的sendmail的"cf"文件。
+.TP
+-f
+读取指定的统计文件来替换在sendmail的"cf"文件中所指定的那个统计文件。
+.TP
+-o
+在输出中不显示邮件程序名。
+.PP
+该程序运行正常返回0,出错返回大于0的任何值。
+
+.SH 文件
+.TP 2.5i
+/etc/sendmail.cf
+缺省的sendmail的"cf"文件。
+.TP
+/var/log/sendmail.st
+缺省的sendmail的统计文件。
+
+.SH 另见
+mailq(1),sendmail(8)
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2001/02/24
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/makemap.8 b/src/man8/makemap.8
new file mode 100644
index 0000000..24e0d01
--- /dev/null
+++ b/src/man8/makemap.8
@@ -0,0 +1,123 @@
+.\" Chinese Version Copyright riser, checker :meaculpa
+.\" Copyright (c) 1998 Sendmail, Inc.  All rights reserved.
+.\" Copyright (c) 1988, 1991, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
+.\"
+.\"
+.\"     @(#)makemap.8	8.12 (Berkeley) 11/13/1998
+.\"
+.TH makemap 8 "BSD 4.4" "11/16/1992"
+.Dd 1992年11月16日
+.Dt MAKEMAP 8
+.Os BSD 4.4
+.Sh NAME(名称)
+.Nm makemap
+.Nd 为sendmail创建数据库映像表
+.Sh SYNOPSIS(总览)
+.Nm
+.Op Fl N
+.if \nP .Op Fl c Ar cachesize
+.Op Fl d
+.Op Fl f
+.if \nP .Op Fl l
+.Op Fl o
+.Op Fl r
+.Op Fl s
+.Op Fl v
+.Ar maptype
+.Ar mapname
+.Sh DESCRIPTION(描述)
+.Nm
+创建
+.Xr sendmail 8
+中关键字式映像查询所使用的数据库映像表.
+它从标准输入设备读取输入并输出到指定的
+.Ar mapname .
+.Pp
+根据其编译的方式不同,
+.Nm
+可以处理多达三种不同的数据库格式,
+这些格式由
+.Ar maptype
+参数确定.
+它们可能为:
+.Bl -tag -width Fl
+.It Li btree
+B-Tree格式映像表.
+这需要新的Berkeley DB库.
+.It Li hash
+Hash格式映像表.
+这也需要Berkeley DB库.
+.El
+.Pp
+普遍而言,
+.Nm
+从标准输入设备读取行,这些行由以空格分隔的两个单词组成.
+第一个为数据库关键字,
+第二个为数值.
+数值可能包含
+``%\fIn\fP''
+字符串用来标明参数替换.
+如果包含文本式的百分符号,则应该重复写
+(``%%'').
+忽略空行和以``#''开头的行.
+.Ss Flags(标识)
+.Bl -tag -width Fl
+.It Fl N
+包含null字节用来结束映像表中的字符串.
+这必须与sendmail.cf中``K''行的\-N标识匹配.
+.if \nP \
+\{\
+.It Fl c
+使用指定的hash和B-Tree缓冲大小.
+.\}
+.It Fl d
+允许映像表中的关键字重复.
+这只能在B-Tree格式的映像表中允许.
+如果读入两个相同的关键字,
+那么它们都会插入到映像表中.
+.It Fl f
+通常所有关键字中的大写字母都会转换成小写字母.
+这个标识可以屏蔽这种功能.
+这是为了配合sendmail.cf中
+\fBK\fP
+行的\-f标识的使用.
+数值永远不作字母大小写的转换.
+.if \nP \
+\{\
+.It Fl l
+列出支持的映像类型.
+.\}
+.It Fl o
+添加到一个旧的文件中.
+允许你增大一个已存在的文件.
+.It Fl r
+允许替换已存在的关键字.
+如果你重复一个关键字,
+通常
+.Nm
+会抱怨,而且不进行插入.
+.It Fl s
+忽略正在创建的映像表的安全性检查.
+这包括对完全可写目录中硬链接或者符号链接的检查.
+.It Fl v
+详尽地打印出正在执行什么.
+.El
+.Sh SEE ALSO(另见)
+.Xr sendmail 8
+.Sh HISTORY(历史)
+.Nm
+该命令出现于
+.Bx 4.4 .
+
+
+.Sh "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.Sh "[中文版最新更新]" 
+.B 2001/2/25
+.Sh 《中国 Linux 论坛 man 手册页翻译计划》: 
+.B http://cmpp.linuxforum.net
diff --git a/src/man8/mingetty.8 b/src/man8/mingetty.8
new file mode 100644
index 0000000..5d343cd
--- /dev/null
+++ b/src/man8/mingetty.8
@@ -0,0 +1,113 @@
+.TH MINGETTY 8 "6 Apr 1996" "Debian-Local" "Linux Programmer's Manual"
+.SH NAME
+mingetty \- 控制台最小的 getty
+.SH 总览 SYNOPSIS
+.B mingetty
+[\-\-noclear] [\-\-nonewline] [\-\-noissue] [\-\-nohangup] [\-\-nohostname]
+[\-\-long\-hostname] [\-\-loginprog=/bin/login] [\-\-nice=10] [\-\-delay=5]
+[\-\-chdir=/home] [\-\-chroot=/chroot] [\-\-autologin username]
+.I tty
+.PP
+.SH 描述 DESCRIPTION
+.B mingetty 
+是一个用于虚拟终端的最小的 getty。不像
+.BR agetty (8)
+,
+.B mingetty
+不适于串行线。我建议使用
+.BR mgetty (8) 
+来替代。
+.PP
+.SH 选项 OPTIONS
+.TP
+.B \-\-noclear
+在提示输入用户名之前不进行清屏操作 (通常屏幕被清除)。
+.TP
+.B \-\-nonewline
+不在向 \fI/etc/issue\fR 输出之前打印一个信行符。
+.TP
+.B \-\-noissue
+不输出 /etc/issue.
+.TP
+.B \-\-nohangup
+不调用 vhangup() 来禁止其他应用程序对此 tty 的写入。
+.TP
+.B \-\-nohostname
+不在提示登录之前打印主机名。
+.TP
+.B \-\-long\-hostname
+默认情况下,主机名只打印第一个句点符 (dot) 前面的部分。允许这个选项之后,将显示 gethostname() 得到的全文。
+.TP
+.B \-\-loginprog /bin/login
+改变登录程序。
+.TP
+.B \-\-nice 10
+调用 nice() 来改变优先级。
+.TP
+.B \-\-delay 5
+启动 \fBmingetty\fR 之后,睡眠这么多秒。
+.TP
+.B \-\-chdir /home
+调用登录程序之前,切换到这个目录。
+.TP
+.B \-\-chroot /chroot
+调用 chroot() ,以这个目录名作为参数。
+.TP
+.B \-\-autologin username
+自动地以指定的用户登录,不询问用户名和密码。为此请检查
+.B /bin/login
+的 \-f 选项。
+.PP
+.SH "ISSUE ESCAPES"
+.B mingetty 
+可以识别下列可以内置于
+.I /etc/issue
+文件中的 escape 序列:
+.IP \fB\ed\fP
+插入当前日期 (本地时间),
+.IP \fB\el\fP
+在
+.B mingetty 
+运行的终端插入一行,
+.IP \fB\em\fP
+插入机器体系结构 (\fIuname -m\fR),
+.IP \fB\en\fP
+插入机器的网络节点主机名 (\fIuname -n\fR),
+.IP \fB\eo\fP
+插入域名,
+.IP \fB\er\fP
+插入操作系统发行版信息 (\fIuname -r\fR),
+.IP \fB\et\fP
+插入当前时间 (本地时间),
+.IP \fB\es\fP
+插入操作系统名称,
+.IP \fB\eu\fP
+以及 \fB\eU\fP
+插入当前已登录的用户数。
+\\U 插入 "\fIn\fP users",但是 \\u 只插入 "\fIn\fP"。
+.IP \fB\ev\fP
+插入操作系统版本号 (\fIuname -v\fR),
+.PP
+.SH 范例 EXAMPLE
+"\fBLinux\ eos\ i386\ #1\ Tue\ Mar\ 19\ 21:54:09\ MET\ 1996\fP" 是将 "\fB\\s\ \\n\ \\m\ \\v\fP" 写入
+.IR /etc/issue
+产生的。
+.PP
+.SH 文件 FILES
+.IR /etc/issue ,
+.IR /var/run/utmp .
+.PP
+.SH "参见 SEE ALSO"
+.BR mgetty (8),
+.BR agetty (8).
+.PP
+.SH 作者 AUTHOR
+版权所有 1996 Florian La Roche <laroche at redhat.com>。
+David Frey <David.Frey at eos.lugs.ch> 和 Florian La Roche 书写了手册页。
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B Nov 9 2000
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/mkfs.8 b/src/man8/mkfs.8
new file mode 100644
index 0000000..6f1d855
--- /dev/null
+++ b/src/man8/mkfs.8
@@ -0,0 +1,117 @@
+.TH MKFS 8 "Jun 1995" "Version 1.9"
+.SH NAME
+mkfs \- 创建一个 Linux 文件系统
+.SH 总览
+.B mkfs
+[
+.B \-V
+]
+[
+.B \-t
+.I 文件系统类型
+]
+[
+.B fs-选项
+]
+.I 文件系统
+[
+.I 块
+]
+.SH 描述
+.B mkfs
+mkfs 用来在指定设备创建一个 Linux 文件系统,
+通常是在硬盘上。
+.I 文件系统
+既可以是设备名,(如:
+.IR /dev/hda1 ,
+.IR /dev/sdb2 )
+也可以是文件系统的挂载点,(如:
+.IR / ,
+.IR /usr ,
+.IR /home )。
+.I 块
+是指该文件系统用的块数。
+.PP
+如果
+.B mkfs
+成功执行时返回值为 0,反之,则是 1。
+.PP
+事实上,
+.B mkfs
+是在 Linux 下各文件系统专用程序
+(\fBmkfs\fR.\fIfstype\fR)
+的前端程序。各文件系统专用程序可以在
+.IR /sbin ,
+.IR /sbin/fs ,
+.IR /sbin/fs.d ,
+.IR /etc/fs ,
+.I /etc
+等目录中找到,
+(精确定义一般都在编译内核时定义,但通常包含有
+.I /sbin
+和
+.IR /sbin/fs ),
+并最终在环境变量 PATH 列出的目录中.
+如要获取更多关于相应文件系统的创建工具的信息,可参考相应帮助手册。
+.SH 选项
+.TP
+.B -V
+输出冗长的帮助信息,其中包括执行的各种系统相关的命令.
+一行命令中出现多个此参数可禁止所有系统相关命令的执行。
+这个做法实际上之是在测试时有用。
+.TP
+.BI -t \ 文件系统类型
+指定所要创建的文件系统类型。如没有任何指定,
+则使用缺省的文件系统类型(目前是 ext2)。
+.TP
+.B fs-选项
+要传递给实际的文件系统制作工具的文件系统相关的选项。
+虽然我们不能保证,但是绝大部分文件系统制作工具支持下面的选项。
+.TP
+.B -c
+在创建文件系统之前进行设备坏块检查。
+.TP
+.BI -l \ filename
+从指定文件
+.I filename
+中读取坏块信息。
+.TP
+.B -v
+产生冗长输出信息。
+.SH 臭虫
+所有通用选项须首先定义并且不能与文件系统相关的
+选项合并。
+一些指定文件系统创建工具不支持
+.I -v
+选项,也不会返回有意义的返回值。
+某些指定文件系统创建工具不会自动侦测磁盘设备的大小,因此需要声明
+.I blocks
+。
+.SH 开发人员
+
+David Engel (david at ods.com)
+.br
+Fred N. van Kempen (waltje at uwalt.nl.mugnet.org)
+.br
+Ron Sommeling (sommel at sci.kun.nl)
+.br
+这个手册页是无耻地从 Remy Card 为 ext2 文件系统
+写的版本搞过来的。
+.SH 又见
+.BR fs (5),
+.BR badblocks (8),
+.BR fsck (8),
+.BR mkdosfs (8),
+.BR mke2fs (8),
+.BR mkfs.ext2 (8),
+.BR mkfs.minix (8),
+.BR mkfs.msdos (8),
+.BR mkfs.xiafs (8)
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B 2001/05/01
+.SH 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
+
diff --git a/src/man8/mkswap.8 b/src/man8/mkswap.8
new file mode 100644
index 0000000..5f6ed85
--- /dev/null
+++ b/src/man8/mkswap.8
@@ -0,0 +1,119 @@
+.\" Copyright 1998 Andries E. Brouwer (aeb at cwi.nl)
+.\"
+.\" May be distributed under the GNU General Public License
+.\" Rewritten for 2.1.117, aeb, 981010.
+.\"
+.TH MKSWAP 8 "25 March 1999" "Linux 2.2.4" "Linux Programmer's Manual"
+.SH NAME
+mkswap \- 建立一个linux交换区
+.SH 总览
+.BI "mkswap [\-c] [\-v" N "] [\-f] " device  " [" size "]"
+.SH 描述
+.B mkswap
+在一个设备上或者在一个文件里创建一个linux交换区。
+
+(该交换区创建后,必须使用
+.B swapon
+命令来启用它。通常交换区被列在
+.I /etc/fstab
+中,从而使得在启动时可通过某些启动脚本中的
+.B swapon -a
+命令来启用。)
+
+参数
+.I device
+通常是一个磁盘分区(类似于
+.I /dev/hda4
+或者
+.IR /dev/sdb7
+),但也可以是一个文件。
+Linux内核不会着眼于分区号,但是一些安装脚本会假定类型为
+16进制的82(LINUX_SWAP)的分区意味着交换分区。
+
+参数
+.I size
+是多余的,但为了向兼容性而被保留。(它指定期望的以1024
+字节为单位的交换区大小。如果它未被指定,
+.B mkswap
+将使用整个分区或者文件。错误地使用"-a"选项将会损坏您的磁盘。)
+
+Linux能理解两种类型的交换区:旧类型和新类型。交换区第一页的最后
+10个字节区分两种类型:旧类型以"SWAP_SPACE",新类型以"SWAPSPACE2"
+作标识。
+
+在旧类型里,第一页的其它部分是一个位图,每一位指出交换区中的可
+用页面。因为第一页保存位图,所以第一位为0。同样的,最后10位保存
+标识。所以,如果页面大小为S,旧类型交换区可以描述最多8*(S-10)-1
+个可用于交换的页面。对于S=4096(象i386上),最大可用区域是
+133890048字节(如果1 MB=2^20 bytes,则差不多为128 MB),而其他部
+分将被浪费。在alpha和sparc64上,S=8192,最大可用区域是535560992字
+节(与上述同样条件下,差不多为512 MB)。
+
+因为零位表示坏的块或者超过交换区末尾的块,旧的设置浪费了大部分的
+位图页面,一个简单的整数就可以满足指出交换区大小的需要,而且如果
+有坏的块,也可以简单的列出来。没有人想使用有许多坏块的交换区(我
+甚至不会使用包含一个坏块的交换空间)。在新类型交换区正好是这样做
+的。现在交换区的最大可用数目取决于具体结构。大致来说,在i386, 
+PPC, m68k, ARM上为2GB,在sparc上为1GB,在mips上为512MB,在alpha
+上为128GB,在sparc64上为3TB。
+
+注意在2.1.117内核之前,每一页分配一个字节,而现在为两个字节,所
+以为了获得2GB的可用交换区,可能需要2MB的核心内存。
+
+目前,Linux允许8个交换区。这些正在使用的区域可从文件
+.I /proc/swaps
+(从2.1.25起)中查到。
+
+.B mkswap
+不允许小于10个页面的区域。
+
+如果不知道您的机器所用的页面大小,可以用"cat /proc/cpuinfo"来查
+看(或者不能查看 - 这个文件的内容取决于系统结构和内核版本)。
+
+为了设置一个交换文件,需要在执行
+.B mkswap ,
+前创建这个文件,例如,象如下命令:
+
+.nf
+.RS
+# dd if=/dev/zero of=swapfile bs=1024 count=65536
+.RE
+.fi
+
+注意一个交换文件必须不包括任何空洞(所以,不能使用
+.BR cp (1)
+来创建该文件)。
+
+.SH 选项
+.TP
+.B \-c
+在创建交换区之前检查设备(如果是块设备)的坏块。
+如果发现任何坏块,坏块的总数将被打印出来。
+.TP
+.B \-f
+强行向前执行,即使该命令是愚蠢的。该选项允许建立比
+所在的文件或者分区还大的交换区。在SPARC上,强行创建
+交换区。无该选项的
+.B mkswap
+将拒绝在包含有效的SPARC超
+级块的设备上创建vo交换区,因为那样可能意味着将删除
+分区表。
+.TP
+.B \-v0
+创建一个旧类型的交换区。
+.TP
+.B \-v1
+创建一个新类型的交换区。
+
+.LP
+如果未指定-v选项,而且交换区大小没有超过旧类型交换区
+的最大值,同时当前内核比2.1.117老(且PAGE_SIZE小于
+2048),
+.B mkswap
+将默认创建旧类型的交换区。万一您的引导分区或者磁盘卷
+标在第一块,新类型的头部将不接触那些部分,所以可能更
+好(如果同样交换区较小),
+
+.SH "参考"
+.BR fdisk (8),
+.BR swapon (8)
diff --git a/src/man8/modinfo.8 b/src/man8/modinfo.8
new file mode 100644
index 0000000..3c2b3be
--- /dev/null
+++ b/src/man8/modinfo.8
@@ -0,0 +1,48 @@
+.\" Copyright (c) 1996 Free Software Foundation, Inc.
+.\" This program is distributed according to the Gnu General Public License.
+.\" See the file COPYING in the kernel source directory
+.\"
+.TH MODINFO 8 "11 Nov 1997" Linux "模块支持"
+.SH NAME
+modinfo \- 显示当前内核模块信息
+.SH 总览
+.B modinfo
+[ options ] <module_file>
+.SH 描述
+.B modinfo
+工具软件用来对内核模块的目标文件
+.I module_file
+进行测试并打印输出相关信息。
+.SS 选项
+.TP
+.BR \-a ", " \-\-author
+显示模块的开发人员
+.TP
+.BR \-d ", " \-\-description
+显示此模块的描述说明
+.TP
+.BI \-f format_string ", \-\-format " format_string
+由用户定义任意格式字符串,可以通过该字符串从内核模块
+.I module_file
+的 ELF 段中获得该模块相应的值,其中包含该模块的信息。
+替换由一个百分号后跟一个由花括号括起来的标签名组成。
+.TP
+.BR \-p ", " \-\-parameters
+显示模块所支持的有类型的参数
+.TP
+.BR \-h ", " \-\-help
+显示帮助信息
+.TP
+.BR \-V ", " \-\-version
+显示
+.BR modinfo 的版本信息
+.SH "参见"
+.BR insmod "(8), " modprobe "(8), " depmod "(8), " rmmod "(8), "
+.BR lsmod "(8), " ksyms "(8), " modules "(2) "
+.SH ”[中文版维护人]”
+.B 所罗门 <solomen at email.com.cn>
+.SH ”[中文版最新更新]”
+.B 2001/05/01
+.SH 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
+
diff --git a/src/man8/named-bootconf.8 b/src/man8/named-bootconf.8
new file mode 100644
index 0000000..78ed61e
--- /dev/null
+++ b/src/man8/named-bootconf.8
@@ -0,0 +1,73 @@
+.\" Copyright (c) 1998 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This documentation is derived from software contributed to The NetBSD
+.\" Foundation by Matthias Scheler.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the NetBSD
+.\"	Foundation, Inc. and its contributors.
+.\" 4. Neither the name of The NetBSD Foundation nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" Copyright (c) 1999 by Internet Software Consortium
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+.\" ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+.\" CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+.\" SOFTWARE.
+.TH named-bootconf 8
+.DD November 19, 1998
+.DT NAMED-BOOTCONF 8
+.OS NetBSD
+.SH NAME
+.B named-bootconf
+.ND 转换名字服务器的配置文件
+.SH 总览
+.B named-bootconf
+.SH 描述
+.B named-bootconf
+把名字服务器的配置文件从 BIND 4 格式转换为 BIND 8 格式。
+.SH 范例
+.B named-bootconf < named.boot > named.conf
+.SH 臭虫
+原文件中含有的注释部分在目标文件中的相应位置不一定完全一样。
+.SR 又见
+.XR named 8 ,
+.XR named.conf 5
+.SH "[中文版维护人]"
+.B meaculpa <email:meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2001/05/01
+.SH 《中国Linux论坛man手册页翻译计划》:
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/netstat.8 b/src/man8/netstat.8
new file mode 100644
index 0000000..972ad39
--- /dev/null
+++ b/src/man8/netstat.8
@@ -0,0 +1,435 @@
+.\"
+.\" netstat.8 
+.\"
+.\" Original: (mdw at tc.cornell.edu & dc6iq at insu1.etec.uni-karlsruhe.de)
+.\"
+.\" Modified: Bernd.Eckenfels at inka.de
+.\" Modified: Andi Kleen ak at muc.de 
+.\" Modified: Tuan Hoang tqhoang at bigfoot.com 
+.\"
+.\"
+.TH NETSTAT 8 "19 December 2000" "net-tools" "Linux Programmer's Manual"
+
+.SH NAME
+netstat \- 显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组。
+.SH 总览 SYNOPSIS
+
+.B netstat 
+.RI [ address_family_options ]
+.RB [ \-\-tcp | \-t ]
+.RB [ \-\-udp | \-u ]
+.RB [ \-\-raw | \-w ]
+.RB [ \-\-listening | \-l ]
+.RB [ \-\-all | \-a ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-symbolic | \-N ]
+.RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
+.RB [ \-\-timers | \-o ]
+.RB [ \-\-program | \-p ]
+.RB [ \-\-verbose | \-v ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat 
+.RB { \-\-route | \-r }
+.RI [ address_family_options ]
+.RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
+.RB [ \-\-verbose | \-v ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-interfaces | \-i }
+.RI [ iface ]
+.RB [ \-\-all | \-a ]
+.RB [ \-\-extend | \-e  [ \-\-extend | \-e] ]
+.RB [ \-\-verbose | \-v ]
+.RB [ \-\-program | \-p ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-groups | \-g }
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-masquerade | \-M }
+.RB [ \-\-extend | \-e ]
+.RB [ \-\-numeric | \-n ]
+.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
+.RB [ \-\-continuous | \-c]
+.RB [delay]
+.P
+.B netstat
+.RB { \-\-statistics | -s }
+.RB [ \-\-tcp | \-t ]
+.RB [ \-\-udp | \-u ]
+.RB [ \-\-raw | \-w ]
+.RB [delay]
+.P
+.B netstat 
+.RB { \-\-version | \-V }
+.P
+.B netstat 
+.RB { \-\-help | \-h }
+.P
+.IR address_family_options :
+.PP
+.RB [ \-\-protocol= { inet , unix , ipx , ax25 , netrom , ddp }[, ...] ]
+.RB [ \-\-unix | \-x ] 
+.RB [ \-\-inet | \-\-ip ]
+.RB [ \-\-ax25 ]
+.RB [ \-\-ipx ] 
+.RB [ \-\-netrom ]
+.RB [ \-\-ddp ]
+
+.SH 描述 DESCRIPTION
+.B Netstat
+程序显示Linux网络子系统的信息。 输出信息的类型是由第一个参数控制的,就像这样:
+.SS (none)
+无选项时,
+.B netstat 
+显示打开的套接字.  如果不指定任何地址族,那么打印出所有已配置地址族的有效套接字。
+.SS "\-\-route , \-r"
+显示内核路由表。
+.SS "\-\-groups , \-g"
+显示IPv4 和 IPv6的IGMP组播组成员关系信息。
+.SS "\-\-interface=\fIiface \fR, \fB\-i"
+显示所有网络接口列表或者是指定的
+.IR iface 
+。
+.SS "\-\-masquerade , \-M"
+显示一份所有经伪装的会话列表。
+.SS "\-\-statistics , \-s"
+显示每种协议的统计信息。
+.SH 选项 OPTIONS
+.SS "\-\-verbose , \-v"
+详细模式运行。特别是打印一些关于未配置地址族的有用信息。
+.SS "\-\-numeric , \-n"
+显示数字形式地址而不是去解析主机、端口或用户名。
+.SS "\-\-numeric-hosts"
+显示数字形式的主机但是不影响端口或用户名的解析。
+.SS "\-\-numeric-ports"
+显示数字端口号,但是不影响主机或用户名的解析。
+.SS "\-\-numeric-users"
+显示数字的用户ID,但是不影响主机和端口名的解析。
+.SS "\-\-protocol=\fIfamily \fR, \fB\-A"
+指定要显示哪些连接的地址族(也许在底层协议中可以更好地描述)。
+.I family 
+以逗号分隔的地址族列表,比如
+.BR inet , 
+.BR unix , 
+.BR ipx , 
+.BR ax25 , 
+.BR netrom ,
+和
+.BR ddp 。
+这样和使用
+.BR \-\-inet ,
+.BR \-\-unix " (" \-x ),
+.BR \-\-ipx ,
+.BR \-\-ax25 ,
+.BR \-\-netrom ,
+和
+.B \-\-ddp 
+选项效果相同。
+.P
+地址族
+.B inet
+包括raw, udp 和tcp 协议套接字。
+.SS "\-c, \-\-continuous"
+将使
+.B netstat
+不断地每秒输出所选的信息。
+.SS "\-e, \-\-extend"
+显示附加信息。使用这个选项两次来获得所有细节。
+.SS "\-o, \-\-timers"
+包含与网络定时器有关的信息。
+.SS "\-p, \-\-program"
+显示套接字所属进程的PID和名称。
+.SS "\-l, \-\-listening"
+只显示正在侦听的套接字(这是默认的选项)
+.SS "\-a, \-\-all"
+显示所有正在或不在侦听的套接字。加上
+.B --interfaces
+选项将显示没有标记的接口。
+.SS "\-F"
+显示FIB中的路由信息。(这是默认的选项)
+.SS "\-C"
+显示路由缓冲中的路由信息。
+.SS delay
+netstat将循环输出统计信息,每隔
+.B delay 
+秒。
+.P
+.SH 输出 OUTPUT
+.P
+.SS 活动的Internet网络连接 \fR(TCP, UDP, raw)\fR
+.SS "Proto" 
+套接字使用的协议。
+.SS "Recv-Q"
+连接此套接字的用户程序未拷贝的字节数。
+.SS "Send-Q"
+远程主机未确认的字节数。
+.SS "Local Address" 
+套接字的本地地址(本地主机名)和端口号。除非给定-n
+.BR \-\-numeric " (" \-n )
+选项,否则套接字地址按标准主机名(FQDN)进行解析,而端口号则转换到相应的服务名。
+.SS "Foreign Address"
+套接字的远程地址(远程主机名)和端口号。
+Analogous to "Local Address."
+.SS "State"
+套接字的状态。因为在RAW协议中没有状态,而且UDP也不用状态信息,所以此行留空。通常它为以下几个值之一:
+.TP
+.I
+ESTABLISHED
+套接字有一个有效连接。
+.TP
+.I
+SYN_SENT
+套接字尝试建立一个连接。
+.TP
+.I
+SYN_RECV
+从网络上收到一个连接请求。
+.TP
+.I
+FIN_WAIT1
+套接字已关闭,连接正在断开。
+.TP
+.I
+FIN_WAIT2
+连接已关闭,套接字等待远程方中止。
+.TP
+.I
+TIME_WAIT
+在关闭之后,套接字等待处理仍然在网络中的分组
+.TP
+.I
+CLOSED
+套接字未用。
+.TP
+.I
+CLOSE_WAIT
+远程方已关闭,等待套接字关闭。
+.TP
+.I
+LAST_ACK
+远程方中止,套接字已关闭。等待确认。
+.TP
+.I
+LISTEN
+套接字监听进来的连接。如果不设置
+.BR \-\-listening " (" \-l )
+或者
+.BR \-\-all " (" \-a )
+选项,将不显示出来这些连接。
+.TP
+.I
+CLOSING
+套接字都已关闭,而还未把所有数据发出。
+.TP
+.I
+UNKNOWN
+套接字状态未知。
+.SS "User"
+套接字属主的名称或UID。
+.SS "PID/Program name"
+以斜线分隔的处理套接字程序的PID及进程名。
+.B --program
+使此栏目被显示。你需要
+.I superuser
+权限来查看不是你拥有的套接字的信息。对IPX套接字还无法获得此信息。
+.SS "Timer"
+(this needs to be written)
+.P
+.SS 活动的UNIX域套接字
+.SS "Proto" 
+套接字所用的协议(通常是unix)。
+.SS "RefCnt"
+使用数量(也就是通过此套接字连接的进程数)。
+.SS "Flags"
+显示的标志为SO_ACCEPTON(显示为
+.BR ACC ),
+SO_WAITDATA 
+.RB ( W )
+或 SO_NOSPACE 
+.RB ( N )。
+如果相应的进程等待一个连接请求,那么SO_ACCECPTON用于未连接的套接字。其它标志通常并不重要
+.SS "Type"
+套接字使用的一些类型:
+.TP
+.I
+SOCK_DGRAM
+此套接字用于数据报(无连接)模式。
+.TP
+.I
+SOCK_STREAM
+流模式(连接)套接字
+.TP
+.I
+SOCK_RAW
+此套接字用于RAW模式。
+.TP
+.I
+SOCK_RDM
+一种服务可靠性传递信息。
+.TP
+.I
+SOCK_SEQPACKET
+连续分组套接字。
+.TP
+.I
+SOCK_PACKET
+RAW接口使用套接字。
+.TP
+.I
+UNKNOWN
+将来谁知道它的话将告诉我们,就填在这里 :-)
+.PP
+.SS "State"
+此字段包含以下关键字之一:
+.TP
+.I FREE
+套接字未分配。
+.TP
+.I LISTENING 
+套接字正在监听一个连接请求。除非设置
+.BR \-\-listening " (" \-l )
+或者
+.BR \-\-all " (" \-a )
+选项,否则不显示。
+.TP
+.I CONNECTING
+套接字正要建立连接。
+.TP
+.I CONNECTED
+套接字已连接。
+.TP
+.I DISCONNECTING
+套接字已断开。
+.TP
+.I (empty)
+套接字未连。
+.TP
+.I UNKNOWN
+!不应当出现这种状态的。
+.SS "PID/Program name"
+处理此套接字的程序进程名和PID。上面关于活动的Internet连接的部分有更详细的信息。
+.SS "Path"
+当相应进程连入套接字时显示路径名。
+.P
+.SS 活动的IPX套接字
+(this needs to be done by somebody who knows it)
+.P
+.SS Active NET/ROM sockets
+(this needs to be done by somebody who knows it)
+.P
+.SS Active AX.25 sockets
+(this needs to be done by somebody who knows it)
+.PP
+.SH 注意 NOTES
+从linux 2.2内核开始
+.B netstat -i 
+不再显示别名接口的统计信息。要获得每个别名接口的计数器,则需要用
+.BR ipchains(8) 
+命令。 
+
+.SH 文件 FILES
+.ta
+.I /etc/services
+-- 服务解释文件
+
+.I /proc
+-- proc文件系统的挂载点。proc文件系统通过下列文件给出了内核状态信息。
+
+.I /proc/net/dev
+-- 设备信息
+
+.I /proc/net/raw
+-- RAW套接字信息
+
+.I /proc/net/tcp
+-- TCP套接字信息
+
+.I /proc/net/udp
+-- UDP套接字信息
+
+.I /proc/net/igmp
+-- IGMP组播信息
+
+.I /proc/net/unix
+-- Unix域套接字信息
+
+.I /proc/net/ipx
+-- IPX套接字信息
+
+.I /proc/net/ax25
+-- AX25套接字信息
+
+.I /proc/net/appletalk
+-- DDP(appletalk)套接字信息
+
+.I /proc/net/nr
+-- NET/ROM套接字信息
+
+.I /proc/net/route
+-- IP路由信息
+
+.I /proc/net/ax25_route
+-- AX25路由信息
+
+.I /proc/net/ipx_route
+-- IPX路由信息
+
+.I /proc/net/nr_nodes
+-- NET/ROM节点列表
+
+.I /proc/net/nr_neigh
+-- NET/ROM邻站
+
+.I /proc/net/ip_masquerade
+-- 伪装连接
+
+.I /proc/net/snmp
+-- 统计
+.fi
+.P
+.SH 参见 SEE ALSO
+.BR route (8), 
+.BR ifconfig (8), 
+.BR ipchains (8),
+.BR iptables (8),
+.BR proc (5)
+.P
+.SH BUGS
+有时如果一个套接字在查看中发生了改变,会显示一些奇怪的信息。
+一般不会发生这种情况。
+.P
+.SH 作者 AUTHORS
+netstat 程序是 Fred Baumgarten<dc6iq at insu1.etec.uni-karlsruhe.de> 的作品。
+
+手册页是Matt Welsh <mdw at tc.cornell.edu> 写的。
+
+Alan Cox <Alan.Cox at linux.org> 做了一些更新,但是还需要做更多工作。
+
+Tuan Hoang<tqhoang at bigfoot.com> 又做了一些更新。
+
+.br
+Bernd Eckenfels <ecki at linux.de> 彻底重写了手册页和net-tools工具包中的命令。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+
diff --git a/src/man8/nmbd.8 b/src/man8/nmbd.8
new file mode 100644
index 0000000..e0334d2
--- /dev/null
+++ b/src/man8/nmbd.8
@@ -0,0 +1,180 @@
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "NMBD" 8 "" "" ""
+.SH NAME
+nmbd \- 向客户端提供构造在IP之上的NetBIOS名字服务的NetBIOS名字服务器
+.SH "总览 SYNOPSIS"
+
+\fBnmbd\fR [-D] [-F] [-S] [-a] [-i] [-o] [-h] [-V][-d <debug level>] [-H <lmhosts file>] [-l <log directory>][-n <primary netbios name>] [-p <port number>] [-s <configuration file>]
+    
+
+.SH "描述 DESCRIPTION"
+
+.PP
+此程序是 \fBSamba\fR(7) 套件的一部分。
+
+.PP
+\fBnmbd\fR 是一个回应构造于IP之上的NetBIOS名字服务请求的服务器,这些请求由SMBD/CIFS
+客户(如Windows 95/98、NT和LanManager客户)产生。当然它也参与构造Windows的"网
+络邻居”查看的浏览协议。
+
+.PP
+当SMB/CIFS客户机启动时,会试图查找一个SMB/CIFS服务器。说得更精确些就是它们要知道
+正在使用的主机对应的IP地址。
+
+.PP
+在其它的服务中,\fBnmbd\fR 将监听这样的请求,如果客户自身的NetBIOS名字已被指定的话就用正
+在运行的主机IP地址回复它。这个“自身的NetBIOS名字”在默认情况下将是正在运行的主机在
+DNS中的名字,但可以用 \fB-n\fR 参数(查看后面关于OPTIONS的描述)越过它。从而\fBnmbd\fR 将用它自已的名字来回应广播查询。要让 \fBnmbd\fR 回应额外名字的话可以在\fBsmb.conf\fR(5)配置文件中通过参数来设定。
+
+.PP
+\fBnmbd\fR 也可用作一个WINS(Windows互联网名称服务)服务器。它作为WINS数据库服务器运作时,用名字注册请求来建立一个数据库以接收和回应客户对这些名字的查询。
+
+.PP
+另外,\fBnmbd\fR 也可以作WINS代理,转发用户不能直接以WINS协议和WINS服务器交谈的广播查询。
+
+.SH "选项 OPTIONS"
+
+.TP
+-D
+如果指定这个参数的话,将使 \fBnmbd\fR 作为一个后台守护程序运行。这样,它分配本身的进程在后台运行,并监视适当的端口请求。在默认情况下, \fBnmbd\fR 通常以命令行方式启动,后台运行。 \fBnmbd\fR 也能通过\fBinetd\fR 这个超级守护程序来启动,但不推荐这样做。 
+
+.TP
+-F
+If specified, this parameter causes the main \fBnmbd\fR process to not daemonize, i\&.e\&. double-fork and disassociate with the terminal\&. Child processes are still created as normal to service each connection request, but the main process does not exit\&. This operation mode is suitable for running \fBnmbd\fR under process supervisors such as \fBsupervise\fR and \fBsvscan\fR from Daniel J\&. Bernstein's \fBdaemontools\fR package, or the AIX process monitor\&.
+
+
+.TP
+-S
+If specified, this parameter causes \fBnmbd\fR to log to standard output rather than a file\&.
+
+
+.TP
+-i
+If this parameter is specified it causes the server to run "interactively", not as a daemon, even if the server is executed on the command line of a shell\&. Setting this parameter negates the implicit daemon mode when run from the command line\&. \fBnmbd\fR also logs to standard output, as if the \fB-S\fR parameter had been given\&.
+
+
+.TP
+-h|--help
+Print a summary of command line options\&.
+
+
+.TP
+-H <filename>
+指定NetBIOS的lmhosts文件。  NetBIOS的lmhosts文件是一份NetBIOS名字到IP地址对应关系的列表, nmbd服务器将会通过在\fBsmb.conf\fR (5)文件中\fIname resolve order\fR描述的名字解析机制来装入和使用这个文件,以便让服务器解析可能的NetBIOS名字查询。注意到nmbd并\fB不\fR用这个文件的内容来回答可能的名字查询。在这个文件中添加内容只会影响本计算机的NetBIOS名字解析。
+
+这个文件的默认存放路径已被作为编译处理的一部分加入到samba中了。通常默认路径是
+ \fI/usr/local/samba/lib/lmhosts\fR, \fI/usr/samba/lib/lmhosts\fR 或是 \fI/etc/samba/lmhosts\fR。 在\fBlmhosts\fR (5)手册页中查找描述此文件的详细内容。
+
+.TP
+-V
+打印出nmbd的版本信息。
+
+
+.TP
+-s <configuration file>
+The file specified contains the configuration details required by the server\&. The information in this file includes server-specific information such as what printcap file to use, as well as descriptions of all the services that the server is to provide\&. See \fIsmb\&.conf\fR for more information\&. The default configuration file name is determined at compile time\&.
+
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR 是一个从0到10的整数。如果没有指定此参数则默认的值是0。
+
+如果这个值越高,越多关于服务器的详细活动信息将被记录到文件中。在0调试级时,只记录紧急错误
+和严重警告。对于日以即日地运行服务,1调试级是个合理的等级,它只产生一定数量的关于执行操作
+的信息。
+
+
+1以上的调试级将产生相当多的记录数据,并且只在研究问题时才有用。3以上的调试级只被设计为让开
+发者使用并会产生极大数量的记录数据,而且其中很多部分非常难以理解。
+
+
+注意在此使用这个参数将越过在\fIsmb\&.conf\fR 文件中的\fIlog level\fR 参数。
+
+.TP
+-l|--logfile=logbasename
+用参数-l可以指定一个带路径的文件名作为记录文件,并会在你给出的名称后自动加上
+\fB".client"\fR的扩展名。The log file is never removed by the client.
+
+.TP
+-p <UDP port number>
+UDP端口号是一个正整数。 这个选项来改变\fBnmbd\fR响应查询的默认UDP端口号(通常它是 137) 。除非你是位这方面的专家,否则请不要用这个选项改变它。
+
+.SH "文件 FILES"
+
+.TP
+\fI/etc/inetd\&.conf\fR
+如果你用 \fBinetd\fR 这个超级守护程序来运行nmbd服务器,那么必须在这个文件中包含适当的启动参数和信息。 
+
+.TP
+\fI/etc/rc\fR
+(也可以是你的系统所用的其它初始化脚本)
+
+如果将nmbd当作服务,在启动时运行,这个文件必须包含合适的服务启动顺序。
+
+.TP
+\fI/etc/services\fR
+If running the server via the meta-daemon \fBinetd\fR, this file must contain a mapping of service name (e.g., netbios-ssn) to service port (e.g., 139) and protocol type (e.g., tcp).
+
+.TP
+\fI/usr/local/samba/lib/smb.conf\fR
+这是服务器配置文件 \fBsmb.conf\fR(5) 默认的存放位置。 系统安装配置文件通常的一些其它位置也可能是 \fI/usr/samba/lib/smb\&.conf\fR 和 \fI/etc/samba/smb\&.conf\fR。
+
+当nmbd被用作WINS服务器时(参见 \fBsmb.conf\fR(5) 手册页中对 \fIwins support\fR 参数的描述), \fBnmbd\fR 将会把WINS数据库文件\fIwins.dat\fR写到 \fIvar/locks\fR 目录下。
+
+如果 \fBnmbd\fR 作为 \fB 主浏览器\fR (参见\fBsmb.conf\fR (5)手册页中对\fIlocal master\fR参数的描述),\fBnmbd\fR将会把浏览数据库\fIbrowse.dat \fR写到\fIvar/locks\fR目录下。
+
+.SH "信号 SIGNALS"
+
+.PP
+我们 \fB不\fR 推荐你使用SIGKILL (-9)来终止\fBnmbd\fR进程除非这是最后的方法,因为这样做可能导致名字数据库不一致。正确的方法是发送SIGTERM (-15)信号并等待程序自行结束。
+
+.PP
+\fBnmbd\fR 可以接受SIGHUP信号,这样程序将把名字清单写入位于\fI/usr/local/samba/var/locks\fR (或是\fIvar/locks\fR)目录下的\fInamelist.debug\fR文件,同时这个信号也将导致程序把服务器的数据库写入\fIlog.nmb\fR文件。
+
+.PP
+另外,nmbd程序的调试记录等级也可以通过\fBsmbcontrol\fR(1) 调高或者调低。(向程序发送一个SIGUSR1信号(kill -USR1 <nmbd-pid>)或SIGUSR2信号(kill -USR2 <nmbd-pid>)的方法在Samba2.2 中已经不再使用。) 通过使用这样的方法可以诊断一些暂时的问题,同时仍然可以在一个正常的并且较低的记录等级来运行。
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBinetd\fR(8), \fBsmbd\fR(8), \fBsmb.conf\fR(5), \fBsmbclient\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1)还有互联网草案 \fIrfc1001.txt\fR, \fIrfc1002.txt\fR. 另外,CIFS (从前的 SMB) 规约可以在 http://samba.org/cifs/网页上找到链接。
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/ntsysv.8 b/src/man8/ntsysv.8
new file mode 100644
index 0000000..1dca386
--- /dev/null
+++ b/src/man8/ntsysv.8
@@ -0,0 +1,32 @@
+.TH NTSYSV 8 "Mon Oct 13 1997"
+.UC 4
+.SH NAME
+ntsysv \- 用于配置运行级别的简单接口
+.SH 总览 SYNOPSIS
+\fBntsysv\fR [--back] [--level <levels>]
+.SH 描述 DESCRIPTION
+\fBntsysv\fR 是个用于配置运行级别服务(也可通过 \fBchkconfig\fR 来配置)的简单接口。对于缺省情况,它配置当前的运行级别。 如果用户需要配置其它的运行级别,可以在命令行上用 \fB--levels\fR选项,在其后列出所要配置的那些运行级别,且互相之间不加空格。例如,\fB--levels 016\fR 选项编辑运行级别0、1和6。
+
+如果一项服务是由正被编辑的运行级别中任一级别启动的话,那么它会被考虑在设置的运行级别中启动。
+
+\fBntsysv\fR 窗口通常包含一个\fB取消\fR按钮。如果指定使用\fB--back\fR 选项的话,会出现一个\fB回退\fR按钮作为代替。
+
+.PD
+.SH "返回值 RETURN CODES"
+\fBntsysv\fR 在正常情况下返回0,在出错时返回2,且如果用户取消(或撤回)程序则返回1。
+
+.PD
+.SH "参见 SEE ALSO"
+.BR chkconfig (8),
+.BR serviceconf (8)
+
+.SH 作者 AUTHOR
+Erik Troan <ewt at redhat.com>
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+
diff --git a/src/man8/ping.8 b/src/man8/ping.8
new file mode 100644
index 0000000..a31c227
--- /dev/null
+++ b/src/man8/ping.8
@@ -0,0 +1,210 @@
+.TH ping
+.DD January 7, 1999
+.DT PING 8
+.OS "iputils-ss990107"
+.SH NAME
+ping\ - 向网络主机发送ICMP回显请求(ECHO_REQUEST)分组
+.SH 总览
+.Nm ping
+.Op Fl dfnqrvR
+.Op Fl c Ar count
+.Op Fl i Ar wait
+.Op Fl l Ar preload
+.Op Fl p Ar pattern
+.Op Fl s Ar packetsize
+.PP
+更改过的选项:
+.TP 2.5i
+-I <device name>
+可用于设置输出接口
+.PP
+新增选项:
+.TP 2.5i
+-T [ping only]:
+发送IP时间戳选项。
+.TP
+-T tsonly
+只有时间戳
+.TP
+-T tsandaddr
+时间戳和地址
+.TP
+-T tsprespec host1 [host2 [host3 [host 4]]]
+预先指定跳数的时间戳
+.PP
+改进:
+.TP
+- 可理解ICMP错误信息并恢复正确。
+.TP
+- 可检查ICMP校验和并把损坏的分组恢复正确。
+.TP
+- 可正确测试linux的回环地址。
+.SH 描述
+.B  ping
+程序使用
+.I ICMP
+协议的强制回显请求数据报以使主机或网关发送一份
+.I ICMP
+的回显应答。回显请求数据报("
+.B pings
+")含有一个
+.I IP
+及
+.I ICMP
+的报头,后跟一个``时间值关键字''然后是一段任意长度的填充字节用于把保持分组长度为16的整数倍。以下是程序的选项:
+.TP
+.B -c 
+.I count
+在发送(和接收)了正好数量为
+.I count
+的回显应答分组后停止操作。在发送了
+.I count
+个分组后没有收到任何分组的特别情况是发送导致了终止(选程主机或网关不可达)。
+.TP
+.B -d	     
+在所用的套接字上使用
+.B SO_DEBUG
+选项。
+.TP
+.B  -f	     
+以高速方式来作
+.I ping
+。以分组返回的速度来输出其它分组或每秒输出百次。当收到每个回显应答并打印一个退格符时,对每个回显请求都打印一个句点``.''。这可以快速显示出丢弃了多少个分组,只有超级用户可以用这个选项。这(操作)对网络要求非常苛刻,应该慎重使用。
+.TP
+.B -i
+.I  wait
+在发送每个分组时等待
+.I wait
+个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。
+.TP
+.B-l 
+.I preload
+如果指定
+.I preload
+,那么
+.B ping
+程序在开始正常运行模式前尽可能快地发送分组。同样只有超级用户可以用这个选项。
+.TP
+.B -n	     
+只以数字形式输出信息。这样就不尝试去查找主机名了。
+.TP
+.B -p
+.I  pattern
+可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。例如``-p ff''将使发出的分组都用全1填充数据区。
+.TP
+.B -q	     
+静态输出。在程序启动和结束时只显示摘要行。
+.TP
+.B -R	     
+记录路由。在回显请求分组中包含记录路由选项并在相应的分组返回时显示路由缓冲区。注意IP首部的容量只能存放9条这样的路由。很多主机
+忽略或禁用此选项。
+.TP 
+.B  -r	     
+在所连接的网络上旁路正常的选路表,直接向主机发送分组。如果主机未处于直接相连的网络上,那么返回一个错误。此选项可用来通过无路由接口对一台主机进行检测(例如当接口已被
+.I routed
+程序丢弃后)。
+.TP
+.B -s 
+.I packetsize
+指定要发送数据的字节量。缺省值为
+.B 56
+,这正好在添加了
+.B 8
+字节的
+.I ICMP
+首部后组装成
+.B 64
+字节的
+.I ICMP
+数据报。
+.TP
+.B  -v	     
+详细模式输出。打印接收到的回显应答以外的
+.I ICMP
+分组。
+.TP
+.B  -w
+.I  waitsecs
+在
+.I waitsecs
+秒后停止
+.I ping
+程序的执行。当试图检测不可达主机时此选项很有用。
+.PP
+当用ping来隔离故障时,应首先在本地主机上运行,以检查本地网络接口有效
+运行。然后,应该进一步检查主机和网关。计算出往返时间和分组丢失率。如
+果收到重复的分组,虽然这些分组的往返时间要用于计算往返时间的最小/平均
+/最大值,但是它们不应该算在刚才计算的丢失的分组中。当指定数量的分组已
+经发送(和接收)时或如果程序被SIGINT信号终止,会显示一份简短的摘要。
+.PP	 
+如果ping程序根本没有收到任何返回分组,那它将以返回码1退出。出错时返回
+2。否则返回0。这些值可能用于查看主机存在与否。
+.PP
+此程序专用于网络测试,度量和管理。因为它会使用网络的流量,在正常操作或
+自动的脚本中使用它并不明智。
+.SS ICMP分组细节
+一个无选项的IP首部长为20字节。一个ICMP回显请求分组包含了额外的8个字节
+用于任意数量的数据。当给出分组长度时,就同时指出了额外数据的长度(缺省为
+56)。因此接收到的ICMP回显应答这样的一个IP分组内部所含的数据量总是8个字
+节从而超过了请求数据空间(ICMP首部)。
+.PP
+如果数据空间至少有8个字节大小,ping程序使用此空间的头8个字节来包含一个
+用于计算往返时间的时间戳。如果指定了填充字节小于8个字节,就不给定往返
+时间了。
+.SS 重复和受损的分组
+.PP
+ping程序会报告重复和受损的分组。分组重复不应该发生,不适当的链路层传输
+可能会导致这样问题。分组重复在很多情况下可能会发生,虽然存在少量重复并
+不总会导致警告,但并不是个好信号。
+.LP
+分组受损很显然会引起严重警告,并通常会在检测分组的路径上某处指出受损的
+硬件(在网络中或主机中)。
+.SS 尝试不同的数据结构
+.PP
+互联网络并不会因为分组数据部分的内容不同而区别看待分组。不幸的是,与数据相关的问题都已知潜存于网络中,并在一个较长时期内无法检测到。在很多情况下,引起问题的特殊结构是些未完全转换的内容如全1或全0,接近临界的结构如几乎全0。在命令行上没有足够的必要去指定如全0这样的一个数据结构,因为有影响的结构位于数据链路层,并且与指定的和控制器传输的复杂程度有关。
+.PP
+这说明如果你有一个与数据相关的问题,可能必须用很多测试来找出它。如果幸运的话,可以设法查找一个不能在网上发送或发送时要花比同长度的文件更多时间的文件。然后检查此文件中用ping程序的-p选项来指定的重复结构。
+.SS 有效时间细节
+.PP
+一个IP分组的TTL值表示分组在被丢弃前穿越IP路由器的最大数据。在现有的实际中,
+你可以认为互联网上每个路由器都对TTL字段减1。
+.PP
+TCP/IP规定TCP分组的TTL字段应该设为60,但很多系统用较小的值(4.3 BSD
+用30, 4.2用15)。
+.PP
+此字段可能的最大值为255,多数UNIX系统把ICMP回显请求分组的TTL字段设
+为255。这就是为什么你可以``ping''一些主机而不能用telnet(1)和ftp(1)到达。
+.PP
+在正常操作时ping打印它收到分组的TTL值。当选程系统收到一份ping的分组时,
+在作出响应时可以用TTL字段完成三件事:
+.TP 20
+不变;
+4.3BSD-Tahoe release之前的Berkeley Unix系统是这样做的。
+在此情况下,收到的分组的TTL值为255减往返路径中的路由器数。
+.TP 
+把它设为255;
+当前的Berkeley Unix系统是这样做的。在此情况下,收到的
+分组的TTL值为为255减选程系统与执行ping主机之间的路由器数。
+.TP 
+把它设为其它值。
+有些主机对ICMP分组使用与TCP分组相同的值,例如30或
+60。其它系统使用原始值。(校对者请指教此句之确切含义:meaculpa at 21cn.com)
+.SH 错误
+很多主机和网关忽略记录路由选项。
+
+最大IP首部对如记录路由这样非常有用的选项来说长度太小。但对此无法再做更多
+事情了。
+
+通常情况并不推荐以高速方式作ping,而且只在非常受限的条件下才可对广播地址
+这样做。
+.SH 另见
+netstat(1),  ifconfig(8)
+.SH 历史
+ping程序出现于4.3BSD 。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国Linux论坛man手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/pppd.8 b/src/man8/pppd.8
new file mode 100644
index 0000000..314c974
--- /dev/null
+++ b/src/man8/pppd.8
@@ -0,0 +1,1563 @@
+.\" manual page [] for pppd 2.4
+.\" SH section heading
+.\" SS subsection heading
+.\" LP paragraph
+.\" IP indented paragraph
+.\" TP hanging label
+.TH PPPD 8
+.SH NAME
+pppd \- 点对点协议守护进程
+.SH "总览 SYNOPSIS"
+.B pppd
+[
+.I tty_name
+] [
+.I speed
+] [
+.I options
+]
+.SH "描述"
+.LP
+点对点协议 (PPP) 提供一种在点对点串列线路上传输资料流
+(datagrams)的方法。PPP是由三个部份所组成的:一个在串列线
+路上封装(encapsulating)资料流的方法,一个可延伸的连结控制
+协定(LinkControlProtocol:LCP),以及一些用来建立并配置不
+同网路层协定的网路控制协定(NetworkControlProtocols:NCP)
+.LP
+封装的机制(scheme)是由核心中的驱动程式码来提供。pppd提供
+基本的LCP,验证(authentication)的支援,以及一个用来建立
+并配置网际网路协定(InternatProtocol(IP))(叫做IP控制
+协定,IPCP)的NCP。
+.SH " 常用选项 FREQUENTLY USED OPTIONS"
+.TP
+.I <tty_name>
+ 在该名称的设备上进行通讯。如果需要的话可以前置一个
+"/dev/"字串。如果没有给设备名称,pppd将会使用控制
+台的终端机(controllingteriminal),并且产生(fork)出
+来时将不会把自己放到背景去。
+.TP
+.I <speed>
+ 将波特率设为speed。在像是4.4BSD以及NetBSA的系
+统上,可以指定任何速率。其他系统(e.g.SunOs)只允
+许有限的几种速率。
+.TP
+.B asyncmap \fI<map>
+ 把非同步(async)字元设为对照到。这个对照表
+描述哪些控制字元不能在串列线路上成功地接收。pppd将
+会要求彼端以两个位元组的逸出序列(escapesequence)来
+传送这些字元。其参数是32位元的十六进位数字而每个
+位元代表一个得避开(escape)的字元。位元0(00000001)
+代表字元0x00;位元31(80000000)代表字元0x1f或
+是^_。如果给了多个asyncmap选项,这些数值会以逻
+辑的或(OR)合在一起。如果没有给asyncmap选项,将没
+有非同步字元对照表会被加以协商来导引接收。这样彼端
+将会避开所有的控制字元。
+.TP
+.B auth
+要求彼端在允许传送或接收网路封包之前先验证它自己。
+This option is the default if the
+system has a default route.  If neither this option nor the
+\fInoauth\fR option is specified, pppd will only allow the peer to use
+IP addresses to which the system does not already have a route.
+.TP
+.B call \fIname
+Read options from the file /etc/ppp/peers/\fIname\fR.  This file may
+contain privileged options, such as \fInoauth\fR, even if pppd
+is not being run by root.  The \fIname\fR string may not begin with /
+or include .. as a pathname component.  The format of the options file
+is described below.
+.TP
+.B connect \fIscript
+ 使用以所指定的可执行指令或是shell指令来设定
+串列线路。这个指令稿一般会使用"chat"程式来拨数据
+机并开始远端ppp区段作业(session)。
+A value for this option from a privileged source cannot 
+be overridden by a non-privileged user.
+.TP
+.B crtscts
+使用硬体流量控制(i.e.RTS/CTS)来控制串列埠上的资料流。
+If neither the \fIcrtscts\fR, the
+\fInocrtscts\fR, the \fIcdtrcts\fR nor the \fInocdtrcts\fR option
+is given, the hardware flow control setting for the serial port is
+left unchanged.
+Some serial ports (such as Macintosh serial ports) lack a true
+RTS output. Such serial ports use this mode to implement
+unidirectional flow control. The serial port will
+suspend transmission when requested by the modem (via CTS)
+but will be unable to request the modem stop sending to the
+computer. This mode retains the ability to use DTR as
+a modem control line.
+.TP
+.B defaultroute
+ 当IPCP协商完全成功时,增加一个预设递送路径到系统
+的递送表,将彼端当作闸道器使用。这个项目在ppp连线
+中断後会移除。
+.TP
+.B disconnect \fIscript
+ 在pppd已经终结该连线之後执行以所指定的可执行
+指令或是shell指令。这个指令稿可以用来,例如,如果
+硬体的数据机控制信号无法使用时,发出指令给数据机使
+其挂断电话。 The disconnect script is not run if the
+modem has already hung up.  A value for this option from a privileged
+source cannot be overridden by a non-privileged user.
+.TP
+.B escape \fIxx,yy,...
+ 指定在传输上确实应该要避开的字元(不管对方是否有用
+它的非同步控制字元对照表要求避开它们)。这些要被避
+开的字元是以用逗号隔开的一串十六进位数字指定的。要
+注意到几乎任何字元都可以用escape选项指定避开,不
+像asyncmap选项只允许指定控制字元。不能避开的字元
+是那些有十六进位值0x20-0x3f或是0x5e者。
+.TP
+.B file \fIname
+ 从档案里读取选项(其格式叙述在後)
+The file must be readable by the user who has invoked pppd.
+.TP
+.B init \fIscript
+Run the executable or shell command specified by \fIscript\fR to
+initialize the serial line.  This script would typically use the
+chat(8) program to configure the modem to enable auto answer.  A value
+for this option from a privileged source cannot be overridden by a
+non-privileged user.
+.TP
+.B lock
+指定pppd应该在此串列设备上使用UUCP式的锁定以确
+定对该设备为互斥(exclusive)存取。
+.TP
+.B mru \fIn
+把MRU[MaximumReceiveUnit最大接收单元]的值设为
+n来进行协商。pppd将会要求彼端传送不比位元组
+更长的封包。最小的MRU值是128。预设的MRU值则是
+1500。对於慢速线路上的建议值是296(其中40个位元
+组给TCP/IP表头+256个位元组的资料)。
+ (Note that for IPv6 MRU must be at least 1280)
+.TP
+.B mtu \fIn
+ 将MTU[MaximumTransmitUnit最大传输单元]的值设
+为\fIn\fR。除非彼端经由MRU协商要求一个更小的值,pppd
+将会要求核心网路程式码透过PPP网路界面所传送的资料
+封包不超过n个位元组。
+ (Note that for IPv6 MTU must be at least 1280)
+.TP
+.B passive
+ 在LCP中开启"passive"选项。加上这个选项,pppd将
+会试图初使一个连线;如果没有从彼端接收到回应,那麽
+pppd将只会被动地等待从彼端所传来的一个有效LCP封
+包(代替结束离开,就像它在没有这个选项时所作的)。
+.SH "选项 OPTIONS"
+.TP
+.I <local_IP_address>\fB:\fI<remote_IP_address>
+ 设定本地以及/或是远端界面的IP位址。两者之中的任
+何一个都可以省略。该IP位址可以利用主机名称或者是
+十进位数值加小数点符号指定(e.g.150.234.56.78)。
+预设的本地位址是系统的(第一个)IP位址(除非有加上
+noipdefault选项)。远端位址如果没有在任何选项中指
+定的话将从彼端取得。因此,在简单的案例中,这个选项
+不是必须的。如果有一个本地以及/或是远端的IP位址
+以这个选项加以指定的话,pppd将不会接受在IPCP协商
+中从彼端所传来不同的值,除非加上ipcp-accept-local
+以及/或是ipcp-accept-remote选项,个别地。
+.TP
+.B ipv6 \fI<local_interface_identifier>\fR,\fI<remote_interface_identifier>
+Set the local and/or remote 64-bit interface identifier. Either one may be
+omitted. The identifier must be specified in standard ascii notation of
+IPv6 addresses (e.g. ::dead:beef). If the
+\fIipv6cp-use-ipaddr\fR
+option is given, the local identifier is the local IPv4 address (see above).
+On systems which supports a unique persistent id, such as EUI-48 derived
+from the Ethernet MAC address, \fIipv6cp-use-persistent\fR option can be
+used to replace the \fIipv6 <local>,<remote>\fR option. Otherwise the 
+identifier is randomized.
+.TP
+.B active-filter \fIfilter-expression
+Specifies a packet filter to be applied to data packets to determine
+which packets are to be regarded as link activity, and therefore reset
+the idle timer, or cause the link to be brought up in demand-dialling
+mode.  This option is useful in conjunction with the
+\fBidle\fR option if there are packets being sent or received
+regularly over the link (for example, routing information packets)
+which would otherwise prevent the link from ever appearing to be idle.
+The \fIfilter-expression\fR syntax is as described for tcpdump(1),
+except that qualifiers which are inappropriate for a PPP link, such as
+\fBether\fR and \fBarp\fR, are not permitted.  Generally the filter
+expression should be enclosed in single-quotes to prevent whitespace
+in the expression from being interpreted by the shell. This option
+is currently only available under NetBSD, and then only
+if both the kernel and pppd were compiled with PPP_FILTER defined.
+.TP
+.B allow-ip \fIaddress(es)
+Allow peers to use the given IP address or subnet without
+authenticating themselves.  The parameter is parsed as for each
+element of the list of allowed IP addresses in the secrets files (see
+the AUTHENTICATION section below).
+.TP
+.B bsdcomp \fInr,nt
+Request that the peer compress packets that it sends, using the
+BSD-Compress scheme, with a maximum code size of \fInr\fR bits, and
+agree to compress packets sent to the peer with a maximum code size of
+\fInt\fR bits.  If \fInt\fR is not specified, it defaults to the value
+given for \fInr\fR.  Values in the range 9 to 15 may be used for
+\fInr\fR and \fInt\fR; larger values give better compression but
+consume more kernel memory for compression dictionaries.
+Alternatively, a value of 0 for \fInr\fR or \fInt\fR disables
+compression in the corresponding direction.  Use \fInobsdcomp\fR or
+\fIbsdcomp 0\fR to disable BSD-Compress compression entirely.
+.TP
+.B cdtrcts
+Use a non-standard hardware flow control (i.e. DTR/CTS) to control
+the flow of data on the serial port.  If neither the \fIcrtscts\fR,
+the \fInocrtscts\fR, the \fIcdtrcts\fR nor the \fInocdtrcts\fR
+option is given, the hardware flow control setting for the serial
+port is left unchanged.
+Some serial ports (such as Macintosh serial ports) lack a true
+RTS output. Such serial ports use this mode to implement true
+bi-directional flow control. The sacrifice is that this flow
+control mode does not permit using DTR as a modem control line.
+.TP
+.B chap-interval \fIn
+ 如果有给这个选项,pppd将会每n 秒重新盘查彼端。
+.TP
+.B chap-max-challenge \fIn
+ 将CHAP盘查(challenge)传输的最大数目设为n(预
+设为10)。
+.TP
+.B chap-restart \fIn
+ 将CHAP重新开始的间隔(重新传输的时间限制)设为n
+秒钟(预设为3)。
+.TP
+.B connect-delay \fIn
+Wait for up \fIn\fR milliseconds after the connect script finishes for
+a valid PPP packet from the peer.  At the end of this time, or when a
+valid PPP packet is received from the peer, pppd will commence
+negotiation by sending its first LCP packet.  The default value is
+1000 (1 second).  This wait period only applies if the \fBconnect\fR
+or \fBpty\fR option is used.
+.TP
+.B debug
+递增侦错层级(与-d相同)。如果加上这个选项,pppd
+将以可供阅读的格式记录所有传送或接收的控制封包内容。
+这些封包透过syslog以facilitydaemon还有level
+debug加以记录。该资讯可以适当设定/etc/syslog.conf
+来导向到一个档案去。(参阅syslog.conf(5))。(如果
+pppd以开启扩充侦错(extradebugging)编译的话,它将
+会使用facilitylocal2取代daemon来记录讯息)。
+.TP
+.B default-asyncmap
+Disable asyncmap negotiation, forcing all control characters to be
+escaped for both the transmit and the receive direction.
+.TP
+.B default-mru
+Disable MRU [Maximum Receive Unit] negotiation.  With this option,
+pppd will use the default MRU value of 1500 bytes for both the
+transmit and receive direction.
+.TP
+.B deflate \fInr,nt
+Request that the peer compress packets that it sends, using the
+Deflate scheme, with a maximum window size of \fI2**nr\fR bytes, and
+agree to compress packets sent to the peer with a maximum window size
+of \fI2**nt\fR bytes.  If \fInt\fR is not specified, it defaults to
+the value given for \fInr\fR.  Values in the range 9 to 15 may be used
+for \fInr\fR and \fInt\fR; larger values give better compression but
+consume more kernel memory for compression dictionaries.
+Alternatively, a value of 0 for \fInr\fR or \fInt\fR disables
+compression in the corresponding direction.  Use \fInodeflate\fR or
+\fIdeflate 0\fR to disable Deflate compression entirely.  (Note: pppd
+requests Deflate compression in preference to BSD-Compress if the peer
+can do either.)
+.TP
+.B demand
+Initiate the link only on demand, i.e. when data traffic is present.
+With this option, the remote IP address must be specified by the user
+on the command line or in an options file.  Pppd will initially
+configure the interface and enable it for IP traffic without
+connecting to the peer.  When traffic is available, pppd will
+connect to the peer and perform negotiation, authentication, etc.
+When this is completed, pppd will commence passing data packets
+(i.e., IP packets) across the link.
+
+The \fIdemand\fR option implies the \fIpersist\fR option.  If this
+behaviour is not desired, use the \fInopersist\fR option after the
+\fIdemand\fR option.  The \fIidle\fR and \fIholdoff\fR
+options are also useful in conjuction with the \fIdemand\fR option.
+.TP
+.B domain \fId
+ 新增领域名称到本地主机名称以支援验证。例如,如
+果gethostname()回应porsche这个名称,但是完整合
+格的领域名称是porsche.Quotron.COM的话,你可以使用
+domain选项来将领域名称设为Quotron.COM。
+ Pppd would then use the name
+\fIporsche.Quotron.COM\fR for looking up secrets in the secrets file,
+and as the default name to send to the peer when authenticating itself
+to the peer.  This option is privileged.
+.TP
+.B dryrun
+With the \fBdryrun\fR option, pppd will print out all the option
+values which have been set and then exit, after parsing the command
+line and options files and checking the option values, but before
+initiating the link.  The option values are logged at level info, and
+also printed to standard output unless the device on standard output
+is the device that pppd would be using to communicate with the peer.
+.TP
+.B dump
+With the \fBdump\fR option, pppd will print out all the option values
+which have been set.  This option is like the \fBdryrun\fR option
+except that pppd proceeds as normal rather than exiting.
+.TP
+.B endpoint \fI<epdisc>
+Sets the endpoint discriminator sent by the local machine to the peer
+during multilink negotiation to \fI<epdisc>\fR.  The default is to use
+the MAC address of the first ethernet interface on the system, if any,
+otherwise the IPv4 address corresponding to the hostname, if any,
+provided it is not in the multicast or locally-assigned IP address
+ranges, or the localhost address.  The endpoint discriminator can be
+the string \fBnull\fR or of the form \fItype\fR:\fIvalue\fR, where
+type is a decimal number or one of the strings \fBlocal\fR, \fBIP\fR,
+\fBMAC\fR, \fBmagic\fR, or \fBphone\fR.  The value is an IP address in
+dotted-decimal notation for the \fBIP\fR type, or a string of bytes in
+hexadecimal, separated by periods or colons for the other types.  For
+the MAC type, the value may also be the name of an ethernet or similar
+network interface.  This option is currently only available under
+Linux.
+.TP
+.B hide-password
+When logging the contents of PAP packets, this option causes pppd to
+exclude the password string from the log.  This is the default.
+.TP
+.B holdoff \fIn
+Specifies how many seconds to wait before re-initiating the link after
+it terminates.  This option only has any effect if the \fIpersist\fR
+or \fIdemand\fR option is used.  The holdoff period is not applied if
+the link was terminated because it was idle.
+.TP
+.B idle \fIn
+Specifies that pppd should disconnect if the link is idle for \fIn\fR
+seconds.  The link is idle when no data packets (i.e. IP packets) are
+being sent or received.  Note: it is not advisable to use this option
+with the \fIpersist\fR option without the \fIdemand\fR option.
+If the \fBactive-filter\fR
+option is given, data packets which are rejected by the specified
+activity filter also count as the link being idle.
+.TP
+.B ipcp-accept-local
+加上这个选项的话,pppd将会接受彼端对於本地IP位址
+的意见,即使本地的IP位址已经在某个选项中指定。
+.TP
+.B ipcp-accept-remote
+加上这个选项的话,pppd将会接受彼端对於它的IP位址
+的意见,即使远端的IP位址已经在某个选项中指定。
+.TP
+.B ipcp-max-configure \fIn
+ 将IPCP配置要求(configure-request)传输的最大数目设
+为n(预设为10)。
+.TP
+.B ipcp-max-failure \fIn
+将开始传送配置拒绝(configure-Rejects)之前的IPCP配
+置未接收(configure-NAKs)的最大数目以取代n(预设
+为10)。
+.TP
+.B ipcp-max-terminate \fIn
+ 将IPCP终结要求(terminate-request)传输的最大数目设
+为 n(预设为3)。
+.TP
+.B ipcp-restart \fIn
+ 将IPCP重新开始的间隔(重新传输的时间限制)设为n
+秒钟(预设为3)。
+.TP
+.B ipparam \fIstring
+Provides an extra parameter to the ip-up and ip-down scripts.  If this
+option is given, the \fIstring\fR supplied is given as the 6th
+parameter to those scripts.
+.TP
+.B ipv6cp-max-configure \fIn
+Set the maximum number of IPv6CP configure-request transmissions to
+\fIn\fR (default 10).
+.TP
+.B ipv6cp-max-failure \fIn
+Set the maximum number of IPv6CP configure-NAKs returned before starting
+to send configure-Rejects instead to \fIn\fR (default 10).
+.TP
+.B ipv6cp-max-terminate \fIn
+Set the maximum number of IPv6CP terminate-request transmissions to
+\fIn\fR (default 3).
+.TP
+.B ipv6cp-restart \fIn
+Set the IPv6CP restart interval (retransmission timeout) to \fIn\fR
+seconds (default 3).
+.TP
+.B ipx
+Enable the IPXCP and IPX protocols.  This option is presently only
+supported under Linux, and only if your kernel has been configured to
+include IPX support.
+.TP
+.B ipx-network \fIn
+Set the IPX network number in the IPXCP configure request frame to
+\fIn\fR, a hexadecimal number (without a leading 0x).  There is no
+valid default.  If this option is not specified, the network number is
+obtained from the peer.  If the peer does not have the network number,
+the IPX protocol will not be started.
+.TP
+.B ipx-node \fIn\fB:\fIm
+Set the IPX node numbers. The two node numbers are separated from each
+other with a colon character. The first number \fIn\fR is the local
+node number. The second number \fIm\fR is the peer's node number. Each
+node number is a hexadecimal number, at most 10 digits long. The node
+numbers on the ipx-network must be unique. There is no valid
+default. If this option is not specified then the node numbers are
+obtained from the peer.
+.TP
+.B ipx-router-name \fI<string>
+Set the name of the router. This is a string and is sent to the peer
+as information data.
+.TP
+.B ipx-routing \fIn
+Set the routing protocol to be received by this option. More than one
+instance of \fIipx-routing\fR may be specified. The '\fInone\fR'
+option (0) may be specified as the only instance of ipx-routing. The
+values may be \fI0\fR for \fINONE\fR, \fI2\fR for \fIRIP/SAP\fR, and
+\fI4\fR for \fINLSP\fR.
+.TP
+.B ipxcp-accept-local
+Accept the peer's NAK for the node number specified in the ipx-node
+option. If a node number was specified, and non-zero, the default is
+to insist that the value be used. If you include this option then you
+will permit the peer to override the entry of the node number.
+.TP
+.B ipxcp-accept-network
+Accept the peer's NAK for the network number specified in the
+ipx-network option. If a network number was specified, and non-zero, the
+default is to insist that the value be used. If you include this
+option then you will permit the peer to override the entry of the node
+number.
+.TP
+.B ipxcp-accept-remote
+Use the peer's network number specified in the configure request
+frame. If a node number was specified for the peer and this option was
+not specified, the peer will be forced to use the value which you have
+specified.
+.TP
+.B ipxcp-max-configure \fIn
+Set the maximum number of IPXCP configure request frames which the
+system will send to \fIn\fR. The default is 10.
+.TP
+.B ipxcp-max-failure \fIn
+Set the maximum number of IPXCP NAK frames which the local system will
+send before it rejects the options. The default value is 3.
+.TP
+.B ipxcp-max-terminate \fIn
+Set the maximum nuber of IPXCP terminate request frames before the
+local system considers that the peer is not listening to them. The
+default value is 3.
+.TP
+.B kdebug \fIn
+开启核心层级中的PPP驱动程式侦错码。The argument values 
+depend on the specific kernel driver, but in general a value of
+1 will enable general kernel debug messages.  (Note that these
+messages are usually only useful for debugging the kernel driver
+itself.)  For the Linux 2.2.x kernel driver, 参数n是一个
+由下列值所组合的数字:1开启一般侦错讯息,2要求印
+出所接收到的封包内容,而4要求印出传输的封包内容。
+On most systems, messages printed by
+the kernel are logged by syslog(1) to a file as directed in the
+/etc/syslog.conf configuration file.
+.TP
+.B ktune
+Enables pppd to alter kernel settings as appropriate.  Under Linux,
+pppd will enable IP forwarding (i.e. set /proc/sys/net/ipv4/ip_forward
+to 1) if the \fIproxyarp\fR option is used, and will enable the
+dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
+1) in demand mode if the local address changes.
+.TP
+.B lcp-echo-failure \fIn
+ 如果有给这个选项,那麽如果传送n个LCP回应要求没
+有接收到有效的LCP回应回覆的话pppd将会推测彼端是
+死掉的。如果发生这种情形,pppd将会终结该连线。这个
+选项的使用要求一个非零的lcp-echo-interval参数值。
+这个选项可以用在硬体数据机控制线路无法使用的情况下
+当实际连线被中断之後(e.g.,数据机已经挂断)终结
+pppd的执行。
+.TP
+.B lcp-echo-interval \fIn
+如果有给这个选项,pppd每秒将会送出一个LCP回
+应要求(echo-request)封包(frame)给彼端。在Linux系
+统下,回应要求在n秒内没有从彼端接收到封包时会被送
+出。一般彼端应该以传送一个回应回覆(echo-reply)来反
+应该回应要求。这个选项可以与lcp-echo-failure选项
+一起使用来侦测不再连线的彼端。
+.TP
+.B lcp-max-configure \fIn
+ 将LCP配置要求(configure-request)传输的最大数目设
+为n(预设为10)。
+.TP
+.B lcp-max-failure \fIn
+ 将开始传送配置拒绝(configure-Rejects)之前的LCP配
+置未接收(configure-NAKs)的最大数目设置为n(预设
+为10)。
+.TP
+.B lcp-max-terminate \fIn
+ 将LCP终结要求(terminate-request)传输的最大数目设
+为n(预设为3)。
+.TP
+.B lcp-restart \fIn
+将LCP重新开始的间隔(重新传输的时间限制)设为
+秒钟(预设为3)。
+.TP
+.B linkname \fIname\fR
+Sets the logical name of the link to \fIname\fR.  Pppd will create a
+file named \fBppp-\fIname\fB.pid\fR in /var/run (or /etc/ppp on some
+systems) containing its process ID.  This can be useful in determining
+which instance of pppd is responsible for the link to a given peer
+system.  This is a privileged option.
+.TP
+.B local
+不要使用数据机控制线路。  With this option, pppd will ignore
+the state of the CD (Carrier Detect) signal from the modem and will
+not change the state of the DTR (Data Terminal Ready) signal.
+.TP
+.B logfd \fIn
+Send log messages to file descriptor \fIn\fR.  Pppd will send log
+messages to at most one file or file descriptor (as well as sending
+the log messages to syslog), so this option and the \fBlogfile\fR
+option are mutually exclusive.  The default is for pppd to send log
+messages to stdout (file descriptor 1), unless the serial port is
+already open on stdout.
+.TP
+.B logfile \fIfilename
+Append log messages to the file \fIfilename\fR (as well as sending the
+log messages to syslog).  The file is opened with the privileges of
+the user who invoked pppd, in append mode.
+.TP
+.B login
+使用系统密码资料库验证使用PAP的彼端。
+and record the user in the system wtmp file.  Note that the peer
+must have an entry in the /etc/ppp/pap-secrets file as well as the
+system password database to be allowed access.
+.TP
+.B maxconnect \fIn
+Terminate the connection when it has been available for network
+traffic for \fIn\fR seconds (i.e. \fIn\fR seconds after the first
+network control protocol comes up).
+.TP
+.B maxfail \fIn
+Terminate after \fIn\fR consecutive failed connection attempts.  A
+value of 0 means no limit.  The default value is 10.
+.TP
+.B modem
+使用数据机控制线路。This option is the default.  With this
+option, pppd will wait for the CD (Carrier Detect) signal from the
+modem to be asserted when opening the serial device (unless a connect
+script is specified), and it will drop the DTR (Data Terminal Ready)
+signal briefly when the connection is terminated and before executing
+the connect script. 在Ultrix上,这个选项会实作硬
+体流量控制,像crtsct选项作的。
+.TP
+.B mp
+Enables the use of PPP multilink; this is an alias for the `multilink'
+option.  This option is currently only available under Linux.
+.TP
+.B mpshortseq
+Enables the use of short (12-bit) sequence numbers in multilink
+headers, as opposed to 24-bit sequence numbers.  This option is only
+available under Linux, and only has any effect if multilink is
+enabled (see the multilink option).
+.TP
+.B mrru \fIn
+Sets the Maximum Reconstructed Receive Unit to \fIn\fR.  The MRRU is
+the maximum size for a received packet on a multilink bundle, and is
+analogous to the MRU for the individual links.  This option is
+currently only available under Linux, and only has any effect if
+multilink is enabled (see the multilink option).
+.TP
+.B ms-dns \fI<addr>
+If pppd is acting as a server for Microsoft Windows clients, this
+option allows pppd to supply one or two DNS (Domain Name Server)
+addresses to the clients.  The first instance of this option specifies
+the primary DNS address; the second instance (if given) specifies the
+secondary DNS address.  (This option was present in some older
+versions of pppd under the name \fBdns-addr\fR.)
+.TP
+.B ms-wins \fI<addr>
+If pppd is acting as a server for Microsoft Windows or "Samba"
+clients, this option allows pppd to supply one or two WINS (Windows
+Internet Name Services) server addresses to the clients.  The first
+instance of this option specifies the primary WINS address; the second
+instance (if given) specifies the secondary WINS address.
+.TP
+.B multilink
+Enables the use of the PPP multilink protocol.  If the peer also
+supports multilink, then this link can become part of a bundle between
+the local system and the peer.  If there is an existing bundle to the
+peer, pppd will join this link to that bundle, otherwise pppd will
+create a new bundle.  See the MULTILINK section below.  This option is
+currently only available under Linux.
+.TP
+.B name \fIname
+将本地系统的名称设为用来进行验证。
+This is a privileged option.  With this option, pppd will
+use lines in the secrets files which have \fIname\fR as the second
+field when looking for a secret to use in authenticating the peer.  In
+addition, unless overridden with the \fIuser\fR option, \fIname\fR
+will be used as the name to send to the peer when authenticating the
+local system to the peer.  (Note that pppd does not append the domain
+name to \fIname\fR.)
+.TP
+.B netmask \fIn
+ 把该界面网路掩码设为,这是一个以″十进位数值加
+小数点″("decimaldot")符号表示的32位元网路掩码
+(e.g.255.255.255.0)。If this option is given, the value
+specified is ORed with the default netmask.  The default netmask is
+chosen based on the negotiated remote IP address; it is the
+appropriate network mask for the class of the remote IP address, ORed
+with the netmasks for any non point-to-point network interfaces in the
+system which are on the same network.  (Note: on some platforms, pppd
+will always use 255.255.255.255 for the netmask, if that is the only
+appropriate value for a point-to-point interface.)
+.TP
+.B noaccomp
+Disable Address/Control compression in both directions (send and
+receive).
+.TP
+.B noauth
+Do not require the peer to authenticate itself.  This option is
+privileged.
+.TP
+.B nobsdcomp
+Disables BSD-Compress compression; \fBpppd\fR will not request or
+agree to compress packets using the BSD-Compress scheme.
+.TP
+.B noccp
+Disable CCP (Compression Control Protocol) negotiation.  This option
+should only be required if the peer is buggy and gets confused by
+requests from pppd for CCP negotiation.
+.TP
+.B nocrtscts
+Disable hardware flow control (i.e. RTS/CTS) on the serial port.
+If neither the \fIcrtscts\fR nor the \fInocrtscts\fR nor the
+\fIcdtrcts\fR nor the \fInocdtrcts\fR option is given, the hardware
+flow control setting for the serial port is left unchanged.
+.TP
+.B nocdtrcts
+This option is a synonym for \fInocrtscts\fR. Either of these options will
+disable both forms of hardware flow control.
+.TP
+.B nodefaultroute
+Disable the \fIdefaultroute\fR option.  The system administrator who
+wishes to prevent users from creating default routes with pppd
+can do so by placing this option in the /etc/ppp/options file.
+.TP
+.B nodeflate
+Disables Deflate compression; pppd will not request or agree to
+compress packets using the Deflate scheme.
+.TP
+.B nodetach
+Don't detach from the controlling terminal.  Without this option, if a
+serial device other than the terminal on the standard input is
+specified, pppd will fork to become a background process.
+.TP
+.B noendpoint
+Disables pppd from sending an endpoint discriminator to the peer or
+accepting one from the peer (see the MULTILINK section below).  This
+option should only be required if the peer is buggy.
+.TP
+.B noip
+Disable IPCP negotiation and IP communication.  This option should
+only be required if the peer is buggy and gets confused by requests
+from pppd for IPCP negotiation.
+.TP
+.B noipv6
+Disable IPv6CP negotiation and IPv6 communication. This option should
+only be required if the peer is buggy and gets confused by requests
+from pppd for IPv6CP negotiation.
+.TP
+.B noipdefault
+关闭在没有指定本地IP位址时所进行的预设动作,这是
+用来由从主机名称决定(如果可能的话)决定本地IP位
+址。加上这个选项的话,彼端将必须在进行IPCP协商时
+(除非在指令列或在选项档中明确地指定它)提供本地的
+IP位址。
+.TP
+.B noipx
+Disable the IPXCP and IPX protocols.  This option should only be
+required if the peer is buggy and gets confused by requests from pppd
+for IPXCP negotiation.
+.TP
+.B noktune
+Opposite of the \fIktune\fR option; disables pppd from changing system
+settings.
+.TP
+.B nolog
+Do not send log messages to a file or file descriptor.  This option
+cancels the \fBlogfd\fR and \fBlogfile\fR options.
+.TP
+.B nomagic
+Disable magic number negotiation.  With this option, pppd cannot
+detect a looped-back line.  This option should only be needed if the
+peer is buggy.
+.TP
+.B nomp
+Disables the use of PPP multilink.  This option is currently only
+available under Linux.
+.TP
+.B nompshortseq
+Disables the use of short (12-bit) sequence numbers in the PPP
+multilink protocol, forcing the use of 24-bit sequence numbers.  This
+option is currently only available under Linux, and only has any
+effect if multilink is enabled.
+.TP
+.B nomultilink
+Disables the use of PPP multilink.  This option is currently only
+available under Linux.
+.TP
+.B nopcomp
+Disable protocol field compression negotiation in both the receive and
+the transmit direction.
+.TP
+.B nopersist
+Exit once a connection has been made and terminated.  This is the
+default unless the \fIpersist\fR or \fIdemand\fR option has been
+specified.
+.TP
+.B nopredictor1
+Do not accept or agree to Predictor-1 compression.
+.TP
+.B noproxyarp
+Disable the \fIproxyarp\fR option.  The system administrator who
+wishes to prevent users from creating proxy ARP entries with pppd can
+do so by placing this option in the /etc/ppp/options file.
+.TP
+.B notty
+Normally, pppd requires a terminal device.  With this option, pppd
+will allocate itself a pseudo-tty master/slave pair and use the slave
+as its terminal device.  Pppd will create a child process to act as a
+`character shunt' to transfer characters between the pseudo-tty master
+and its standard input and output.  Thus pppd will transmit characters
+on its standard output and receive characters on its standard input
+even if they are not terminal devices.  This option increases the
+latency and CPU overhead of transferring data over the ppp interface
+as all of the characters sent and received must flow through the
+character shunt process.  An explicit device name may not be given if
+this option is used.
+.TP
+.B novj
+Disable Van Jacobson style TCP/IP header compression in both the
+transmit and the receive direction.
+.TP
+.B novjccomp
+Disable the connection-ID compression option in Van Jacobson style
+TCP/IP header compression.  With this option, pppd will not omit the
+connection-ID byte from Van Jacobson compressed TCP/IP headers, nor
+ask the peer to do so.
+.TP
+.B papcrypt
+Indicates that all secrets in the /etc/ppp/pap-secrets file which are
+used for checking the identity of the peer are encrypted, and thus
+pppd should not accept a password which, before encryption, is
+identical to the secret from the /etc/ppp/pap-secrets file.
+.TP
+.B pap-max-authreq \fIn
+ 将PAP验证要求(authenticate-request)传输的最大数目
+设为n(预设为10)。
+.TP
+.B pap-restart \fIn
+ 将PAP重新开始的间隔(重新传输的时间限制)设为n
+秒钟(预设为3)。
+.TP
+.B pap-timeout \fIn
+Set the maximum time that pppd will wait for the peer to authenticate
+itself with PAP to \fIn\fR seconds (0 means no limit).
+.TP
+.B pass-filter \fIfilter-expression
+Specifies a packet filter to applied to data packets being sent or
+received to determine which packets should be allowed to pass.
+Packets which are rejected by the filter are silently discarded.  This
+option can be used to prevent specific network daemons (such as
+routed) using up link bandwidth, or to provide a basic firewall
+capability.
+The \fIfilter-expression\fR syntax is as described for tcpdump(1),
+except that qualifiers which are inappropriate for a PPP link, such as
+\fBether\fR and \fBarp\fR, are not permitted.  Generally the filter
+expression should be enclosed in single-quotes to prevent whitespace
+in the expression from being interpreted by the shell.  Note that it
+is possible to apply different constraints to incoming and outgoing
+packets using the \fBinbound\fR and \fBoutbound\fR qualifiers. This
+option is currently only available under NetBSD, and then only if both
+the kernel and pppd were compiled with PPP_FILTER defined.
+.TP
+.B persist
+Do not exit after a connection is terminated; instead try to reopen
+the connection.
+.TP
+.B plugin \fIfilename
+Load the shared library object file \fIfilename\fR as a plugin.  This
+is a privileged option.
+.TP
+.B predictor1
+Request that the peer compress frames that it sends using Predictor-1
+compression, and agree to compress transmitted frames with Predictor-1
+if requested.  This option has no effect unless the kernel driver
+supports Predictor-1 compression.
+.TP
+.B privgroup \fIgroup-name
+Allows members of group \fIgroup-name\fR to use privileged options.
+This is a privileged option.  Use of this option requires care as
+there is no guarantee that members of \fIgroup-name\fR cannot use pppd
+to become root themselves.  Consider it equivalent to putting the
+members of \fIgroup-name\fR in the kmem or disk group.
+.TP
+.B proxyarp
+以彼端的IP位址以及该系统的乙太网路位址增加一个项
+目到系统的ARP[AddressResolutionProtocol位址解
+译协定]表格。
+This will have the effect of making the peer appear to other
+systems to be on the local ethernet.
+.TP
+.B pty \fIscript
+Specifies that the command \fIscript\fR is to be used to communicate
+rather than a specific terminal device.  Pppd will allocate itself a
+pseudo-tty master/slave pair and use the slave as its terminal
+device.  The \fIscript\fR will be run in a child process with the
+pseudo-tty master as its standard input and output.  An explicit
+device name may not be given if this option is used.  (Note: if the
+\fIrecord\fR option is used in conjuction with the \fIpty\fR option,
+the child process will have pipes on its standard input and output.)
+.TP
+.B receive-all
+With this option, pppd will accept all control characters from the
+peer, including those marked in the receive asyncmap.  Without this
+option, pppd will discard those characters as specified in RFC1662.
+This option should only be needed if the peer is buggy.
+.TP
+.B record \fIfilename
+Specifies that pppd should record all characters sent and received to
+a file named \fIfilename\fR.  This file is opened in append mode,
+using the user's user-ID and permissions.  This option is implemented
+using a pseudo-tty and a process to transfer characters between the
+pseudo-tty and the real serial device, so it will increase the latency
+and CPU overhead of transferring data over the ppp interface.  The
+characters are stored in a tagged format with timestamps, which can be
+displayed in readable form using the pppdump(8) program.
+.TP
+.B remotename \fIname
+将远端系统的假设名称设为以进行验证。
+.TP
+.B refuse-chap
+With this option, pppd will not agree to authenticate itself to the
+peer using CHAP.
+.TP
+.B refuse-pap
+With this option, pppd will not agree to authenticate itself to the
+peer using PAP.
+.TP
+.B require-chap
+Require the peer to authenticate itself using CHAP [Challenge
+Handshake Authentication Protocol] authentication.
+.TP
+.B require-pap
+Require the peer to authenticate itself using PAP [Password
+Authentication Protocol] authentication.
+.TP
+.B show-password
+When logging the contents of PAP packets, this option causes pppd to
+show the password string in the log message.
+.TP
+.B silent
+加上这个选项,pppd将不会传输LCP封包来初使一个连
+线一直到从彼端接收到一个有效的LCP封包。(就像是给
+旧版pppd使用的"passive"选项)。
+.TP
+.B sync
+Use synchronous HDLC serial encoding instead of asynchronous.
+The device used by pppd with this option must have sync support.
+Currently supports Microgate SyncLink adapters
+under Linux and FreeBSD 2.2.8 and later.
+.TP
+.B updetach
+With this option, pppd will detach from its controlling terminal once
+it has successfully established the ppp connection (to the point where
+the first network control protocol, usually the IP control protocol,
+has come up).
+.TP
+.B usehostname
+强迫主机名称使用本地系统的名称来进行验证。(这会盖过name选项)。
+This option is not normally needed since the
+\fIname\fR option is privileged.
+.TP
+.B usepeerdns
+Ask the peer for up to 2 DNS server addresses.  The addresses supplied
+by the peer (if any) are passed to the /etc/ppp/ip-up script in the
+environment variables DNS1 and DNS2.  In addition, pppd will create an
+/etc/ppp/resolv.conf file containing one or two nameserver lines with
+the address(es) supplied by the peer.
+.TP
+.B user \fIname
+将使用者名称设为以便让使用PAP的彼端验证这台机器时使用。
+.TP
+.B vj-max-slots \fIn
+Sets the number of connection slots to be used by the Van Jacobson
+TCP/IP header compression and decompression code to \fIn\fR, which
+must be between 2 and 16 (inclusive).
+.TP
+.B welcome \fIscript
+Run the executable or shell command specified by \fIscript\fR before
+initiating PPP negotiation, after the connect script (if any) has
+completed.  A value for this option from a privileged source cannot be
+overridden by a non-privileged user.
+.TP
+.B xonxoff
+使用软体流量控制(i.e.XON/XOFF)来控制串列埠上的资料流。
+.SH "选项文件 OPTIONS FILES"
+选项可以从档案取出使用就如同使用命令列一般。pppd在查看指
+令列之前先从档案/etc/ppp/options以及~/.ppprc读取选项。
+\fIttyname\fR (in that order) before processing the
+options on the command line.  (In fact, the command-line options are
+scanned to find the terminal name before the options.\fIttyname\fR
+file is read.)  In forming the name of the options.\fIttyname\fR file,
+the initial /dev/ is removed from the terminal name, and any remaining
+/ characters are replaced with dots.
+.PP
+一个选项档案以空白字元为界被剖析成一串单字。空白字元可以用
+双引号(")包括在一个单字里。倒斜线引用其後的字元。而hash
+(#)符号开始一段注解持续到该行结束。
+There is no restriction on using the \fIfile\fR or \fIcall\fR
+options within an options file.
+.SH "安全 SECURITY"
+.I pppd
+提供系统管理人员充份的存取控制能力这表示以PPP存取一
+台伺服机器可以提供给合法的使用者使用而不必担心危及该伺服器
+或所在网路的安全性。这有一部份是以/etc/ppp/options档案来
+提供,在这里系统管理人员可以放置在执行pppd的时候用来要求
+验证的选项,而部份是由PAP以及CHAP暗号档案来提供,其中
+系统管理人员可以限制个别的使用者可以使用的一群IP位址。
+.PP
+The default behaviour of pppd is to allow an unauthenticated peer to
+use a given IP address only if the system does not already have a
+route to that IP address.  For example, a system with a
+permanent connection to the wider internet will normally have a
+default route, and thus all peers will have to authenticate themselves
+in order to set up a connection.  On such a system, the \fIauth\fR
+option is the default.  On the other hand, a system where the
+PPP link is the only connection to the internet will not normally have
+a default route, so the peer will be able to use almost any IP address
+without authenticating itself.
+.PP
+As indicated above, some security-sensitive options are privileged,
+which means that they may not be used by an ordinary non-privileged
+user running a setuid-root pppd, either on the command line, in the
+user's ~/.ppprc file, or in an options file read using the \fIfile\fR
+option.  Privileged options may be used in /etc/ppp/options file or in
+an options file read using the \fIcall\fR option.  If pppd is being
+run by the root user, privileged options can be used without
+restriction.
+.PP
+When opening the device, pppd uses either the invoking user's user ID
+or the root UID (that is, 0), depending on whether the device name was
+specified by the user or the system administrator.  If the device name
+comes from a privileged source, that is, /etc/ppp/options or an
+options file read using the \fIcall\fR option, pppd uses full root
+privileges when opening the device.  Thus, by creating an appropriate
+file under /etc/ppp/peers, the system administrator can allow users to
+establish a ppp connection via a device which they would not normally
+have permission to access.  Otherwise pppd uses the invoking user's
+real UID when opening the device.
+.SH AUTHENTICATION
+Authentication is the process whereby one peer convinces the other of
+its identity.  This involves the first peer sending its name to the
+other, together with some kind of secret information which could only
+come from the genuine authorized user of that name.  In such an
+exchange, we will call the first peer the "client" and the other the
+"server".  The client has a name by which it identifies itself to the
+server, and the server also has a name by which it identifies itself
+to the client.  Generally the genuine client shares some secret (or
+password) with the server, and authenticates itself by proving that it
+knows that secret.  Very often, the names used for authentication
+correspond to the internet hostnames of the peers, but this is not
+essential.
+.LP
+At present, pppd supports two authentication protocols: the Password
+Authentication Protocol (PAP) and the Challenge Handshake
+Authentication Protocol (CHAP).  PAP involves the client sending its
+name and a cleartext password to the server to authenticate itself.
+In contrast, the server initiates the CHAP authentication exchange by
+sending a challenge to the client (the challenge packet includes the
+server's name).  The client must respond with a response which
+includes its name plus a hash value derived from the shared secret and
+the challenge, in order to prove that it knows the secret.
+.LP
+The PPP protocol, being symmetrical, allows both peers to require the
+other to authenticate itself.  In that case, two separate and
+independent authentication exchanges will occur.  The two exchanges
+could use different authentication protocols, and in principle,
+different names could be used in the two exchanges.
+.LP
+ pppd预设的动作是如果有要求就同意进行验证,并且不要求从彼
+端做验证。然而如果没有可以用来验证的暗号则pppd将不会同意
+以特殊的协定来验证它自己。
+.LP
+ 验证的基础是由暗号档案选择的暗号(/etc/ppp/pap-secrets是
+给PAP使用的,/etc/ppp/chap-secrets则是给CHAP使用)。
+这两个暗号档案都具有相同的格式,而且两者都可以储放暗号给数
+种伺服器(验证彼端)及客户(被验证端)组合使用。注意pppd
+可以最为伺服端以及客户端,而且如果需要的话两方可以使用不同
+的协定。
+.LP
+ 一个暗号档案如同选项档案一般被剖析成单字。一个暗号是由最少
+包含3个单字的一行所指定,依序是客户,伺服器,暗号。在同
+一行中任何跟在其後的单字都被当作是给客户的可接受IP位址列
+表。如果该行只有3个单字,这假设任何IP位址都可以;不允
+许所有的IP位址的话,使用"-"。如果暗号是以'@'开始,其
+後所接的单字将被假设为可以从中读取暗号的档案名称。而以一个
+"*"字元作为客户或伺服端的名称会符合任何名称。在选择一个暗
+号时,pppd会选择最符合的,i.e.最少万用字元的那个。
+.LP
+ 如此一个暗号档案包含用来验证其它主机,以及用来为其它主机验
+证自己两者的暗号。选择使用哪个暗号是根据该主机(’本地名称
+’)以及其彼端(’远端名称’)而定。本地名称的设定如下:
+.LP
+If the secret starts with an `@', what follows is assumed to be the
+name of a file from which to read the secret.  A "*" as the client or
+server name matches any name.  When selecting a secret, pppd takes the
+best match, i.e.  the match with the fewest wildcards.
+.LP
+Any following words on the same line are taken to be a list of
+acceptable IP addresses for that client.  If there are only 3 words on
+the line, or if the first word is "-", then all IP addresses are
+disallowed.  To allow any address, use "*".  A word starting with "!"
+indicates that the specified address is \fInot\fR acceptable.  An
+address may be followed by "/" and a number \fIn\fR, to indicate a
+whole subnet, i.e. all addresses which have the same value in the most
+significant \fIn\fR bits.  In this form, the address may be followed
+by a plus sign ("+") to indicate that one address from the subnet is
+authorized, based on the ppp network interface unit number in use.
+In this case, the host part of the address will be set to the unit
+number plus one.
+.LP
+Thus a secrets file contains both secrets for use in authenticating
+other hosts, plus secrets which we use for authenticating ourselves to
+others.  When pppd is authenticating the peer (checking the peer's
+identity), it chooses a secret with the peer's name in the first
+field and the name of the local system in the second field.  The
+name of the local system defaults to the hostname, with the domain
+name appended if the \fIdomain\fR option is used.  This default can be
+overridden with the \fIname\fR option, except when the
+\fIusehostname\fR option is used.
+.LP
+When pppd is choosing a secret to use in authenticating itself to the
+peer, it first determines what name it is going to use to identify
+itself to the peer.  This name can be specified by the user with the
+\fIuser\fR option.  If this option is not used, the name defaults to
+the name of the local system, determined as described in the previous
+paragraph.  Then pppd looks for a secret with this name in the first
+field and the peer's name in the second field.  Pppd will know the
+name of the peer if CHAP authentication is being used, because the
+peer will have sent it in the challenge packet.  However, if PAP is being
+used, pppd will have to determine the peer's name from the options
+specified by the user.  The user can specify the peer's name directly
+with the \fIremotename\fR option.  Otherwise, if the remote IP address
+was specified by a name (rather than in numeric form), that name will
+be used as the peer's name.  Failing that, pppd will use the null
+string as the peer's name.
+.LP
+ 当以PAP验证彼端时,一个""暗号符合任何由彼端所提供密码。
+如果密码不符合暗号,密码被以crypt()编码并且再次检查暗号;
+因此验证彼端的暗号可以编码方式储放。
+.LP
+如果指定有login选项,
+使用者名称以及密码也会被以系统的密码资料库检查。因此系统管
+理人员可以设定pap-secrets档案以便只允许某些使用者以PPP
+连线,并且限制每个使用者可以使用一些IP位址。
+Typically, when using the \fIlogin\fR option,
+the secret in /etc/ppp/pap-secrets would be "", which will match any
+password supplied by the peer.  This avoids the need to have the same
+secret in two places.
+.LP
+ 验证必须在IPCP(或任何其它网路控制协定)开始之前被完全地
+满足。如果验证失败,pppd将会终结连线(关闭LCP)。如果
+IPCP协商出一个无法接受的远端主机IP位址,IPCP将会关闭。
+IP封包只有在IPCP打开的时候才能传送或接收。
+.LP
+ 即使本地主机一般会要求验证,在某些案例中会希望允一些无法验
+证它们自己的主机连线并使用所限制的IP位址其中之一。如果彼
+在被要求时拒绝验证它自己,pppd将会把它当成等於是在使用者
+名称以及密码上使用空字串来以PAP验证。所以,藉由增加一行
+指定空字串为客户以及密码到pap-secrets档案去,允许拒绝验
+证自己的主机进行有限制的存取是可能的。
+.SH "路由 ROUTING"
+.LP
+ 当IPCP协商成功地完成时,pppd将会通知核心该ppp界面本地
+以及远端的IP位址。这足够用来建立一个主机到该连线远端的递
+送路径,该路径将使两端能交换IP封包。与其它的机器进行通讯
+往往需要更进一步地修改递送表格(routingtables)以及/或是
+ARP(位址解译协定)表格。在某些案例中这将透过routed或是
+gated隐形程式的动作自动地完成,但是在大部分的案例中需要更
+进一步的介入。
+.LP
+ 有时候会希望透过远端主机来增加一个预设递送路径,像是在一台
+只透过ppp界面连线到Internet的机器。此defaultroute选
+项使得pppd在IPCP完成时建立起这麽一个预设的递送路径,并
+且在该线路被终结时将之删除。
+.LP
+ 在某些情况下会希望使用proxyARP,例如在一台连结到区域网
+路的伺服机器上,为了能够允许其它的主机与远端主机进行通讯。
+proxyarp选项引发pppd去寻找一个与远端主机在相同子网路上
+的网路界面(一个支援广播(boardcast)以及ARP的界面,不但要
+是可用的并且不是一个点对点或回授界面)。如果找到,pppd会
+以该远端主机的IP位址以及所找到的网路界面之硬体位址建立一
+个永久的,公开的ARP项目。
+.LP
+When the \fIdemand\fR option is used, the interface IP addresses have
+already been set at the point when IPCP comes up.  If pppd has not
+been able to negotiate the same addresses that it used to configure
+the interface (for example when the peer is an ISP that uses dynamic
+IP address assignment), pppd has to change the interface IP addresses
+to the negotiated addresses.  This may disrupt existing connections,
+and the use of demand dialling with peers that do dynamic IP address
+assignment is not recommended.
+.SH MULTILINK
+Multilink PPP provides the capability to combine two or more PPP links
+between a pair of machines into a single `bundle', which appears as a
+single virtual PPP link which has the combined bandwidth of the
+individual links.  Currently, multilink PPP is only supported under
+Linux.
+.LP
+Pppd detects that the link it is controlling is connected to the same
+peer as another link using the peer's endpoint discriminator and the
+authenticated identity of the peer (if it authenticates itself).  The
+endpoint discriminator is a block of data which is hopefully unique
+for each peer.  Several types of data can be used, including
+locally-assigned strings of bytes, IP addresses, MAC addresses,
+randomly strings of bytes, or E-164 phone numbers.  The endpoint
+discriminator sent to the peer by pppd can be set using the endpoint
+option.
+.LP
+In circumstances the peer may send no endpoint discriminator or a
+non-unique value.  The optional bundle option adds an extra string
+which is added to the peer's endpoint discriminator and authenticated
+identity when matching up links to be joined together in a bundle.
+The bundle option can also be used to allow the establishment of
+multiple bundles between the local system and the peer.  Pppd uses a
+TDB database in /var/run/pppd.tdb to match up links.
+.LP
+Assuming that multilink is enabled and the peer is willing to
+negotiate multilink, then when pppd is invoked to bring up the first
+link to the peer, it will detect that no other link is connected to
+the peer and create a new bundle, that is, another ppp network
+interface unit.  When another pppd is invoked to bring up another link
+to the peer, it will detect the existing bundle and join its link to
+it.  Currently, if the first pppd terminates (for example, because of
+a hangup or a received signal) the bundle is destroyed.
+.SH "范例 EXAMPLE"S
+.LP
+The following examples assume that the /etc/ppp/options file contains
+the \fIauth\fR option (as in the default /etc/ppp/options file in the
+ppp distribution).
+.LP
+Probably the most common use of pppd is to dial out to an ISP.  This
+can be done with a command such as
+.IP
+pppd call isp
+.LP
+where the /etc/ppp/peers/isp file is set up by the system
+administrator to contain something like this:
+.IP
+ttyS0 19200 crtscts
+.br
+connect '/usr/sbin/chat -v -f /etc/ppp/chat-isp'
+.br
+noauth
+.LP
+In this example, we are using chat to dial the ISP's modem and go
+through any logon sequence required.  The /etc/ppp/chat-isp file
+contains the script used by chat; it could for example contain
+something like this:
+.IP
+ABORT "NO CARRIER"
+.br
+ABORT "NO DIALTONE"
+.br
+ABORT "ERROR"
+.br
+ABORT "NO ANSWER"
+.br
+ABORT "BUSY"
+.br
+ABORT "Username/Password Incorrect"
+.br
+"" "at"
+.br
+OK "at&d0&c1"
+.br
+OK "atdt2468135"
+.br
+"name:" "^Umyuserid"
+.br
+"word:" "\\qmypassword"
+.br
+"ispts" "\\q^Uppp"
+.br
+"~-^Uppp-~"
+.LP
+See the chat(8) man page for details of chat scripts.
+.LP
+Pppd can also be used to provide a dial-in ppp service for users.  If
+the users already have login accounts, the simplest way to set up the
+ppp service is to let the users log in to their accounts and run pppd
+(installed setuid-root) with a command such as
+.IP
+pppd proxyarp
+.LP
+To allow a user to use the PPP facilities, you need to allocate an IP
+address for that user's machine and create an entry in
+/etc/ppp/pap-secrets or /etc/ppp/chap-secrets (depending on which
+authentication method the PPP implementation on the user's machine
+supports), so that the user's
+machine can authenticate itself.  For example, if Joe has a machine
+called "joespc" which is to be allowed to dial in to the machine
+called "server" and use the IP address joespc.my.net, you would add an
+entry like this to /etc/ppp/pap-secrets or /etc/ppp/chap-secrets:
+.IP
+joespc	server	"joe's secret"	joespc.my.net
+.LP
+Alternatively, you can create a username called (for example) "ppp",
+whose login shell is pppd and whose home directory is /etc/ppp.
+Options to be used when pppd is run this way can be put in
+/etc/ppp/.ppprc.
+.LP
+ 如果你的串列连线比直接以线路连接更复杂的话,你可能会需要做
+些调整以便避开一些控制字元。特别是,通常避开XON(^Q)以及
+XOFF(^S)是有用的,可以使用asyncmapa0000。如果该路径包
+含telnet的话,你可能应该也要避开^](asyncmap200a0000)。
+如果该路径包含rlogin的话,你将需要在执行rlogin的客户端
+上使用escapeff选项,因为许多rlogin的实作并非是透通的;
+它们将会从资料流中移除[0xff,0xff,0x73,0x73,跟随的任何
+8位元组]这些序列。
+.SH "诊断 DIAGNOSTICS"
+.LP
+ 讯息使用facilityLOG_DAEMON送到syslog隐形程式。(这个
+可以藉著以所要的facility定义LOG_PPP巨集来重新编译pppd
+加以改变。)为了能够看到错误以及侦错讯息,你将需要编辑你的
+/etc/syslog.conf档案来将讯息导向到所希望的设备或档案。
+.LP
+debug选项使得所有送出以及接收的控制封包内容都被记录下来,
+这是指所有的LCP,PAP,CHAP,或是IPCP封包。如果PPP协商
+没有成功的话那麽这可能会有用。如果在编译时期开启侦错功能的
+话,pppd会使用facilityLOG_LOCAL2来取代LOG_DAEMON,而
+且debug选项会使得额外的侦错讯息被记录下来。
+.LP
+侦错功能也可以藉著传送一个SIGUSR1到pppd程序来启动。侦
+错功能可以藉著传送一个SIGUSR2到pppd程序来关闭。
+.SH EXIT STATUS
+The exit status of pppd is set to indicate whether any error was
+detected, or the reason for the link being terminated.  The values
+used are:
+.TP
+.B 0
+Pppd has detached, or otherwise the connection was successfully
+established and terminated at the peer's request.
+.TP
+.B 1
+An immediately fatal error of some kind occurred, such as an essential
+system call failing, or running out of virtual memory.
+.TP
+.B 2
+An error was detected in processing the options given, such as two
+mutually exclusive options being used.
+.TP
+.B 3
+Pppd is not setuid-root and the invoking user is not root.
+.TP
+.B 4
+The kernel does not support PPP, for example, the PPP kernel driver is
+not included or cannot be loaded.
+.TP
+.B 5
+Pppd terminated because it was sent a SIGINT, SIGTERM or SIGHUP
+signal.
+.TP
+.B 6
+The serial port could not be locked.
+.TP
+.B 7
+The serial port could not be opened.
+.TP
+.B 8
+The connect script failed (returned a non-zero exit status).
+.TP
+.B 9
+The command specified as the argument to the \fIpty\fR option could
+not be run.
+.TP
+.B 10
+The PPP negotiation failed, that is, it didn't reach the point where
+at least one network protocol (e.g. IP) was running.
+.TP
+.B 11
+The peer system failed (or refused) to authenticate itself.
+.TP
+.B 12
+The link was established successfully and terminated because it was
+idle.
+.TP
+.B 13
+The link was established successfully and terminated because the
+connect time limit was reached.
+.TP
+.B 14
+Callback was negotiated and an incoming call should arrive shortly.
+.TP
+.B 15
+The link was terminated because the peer is not responding to echo
+requests.
+.TP
+.B 16
+The link was terminated by the modem hanging up.
+.TP
+.B 17
+The PPP negotiation failed because serial loopback was detected.
+.TP
+.B 18
+The init script failed (returned a non-zero exit status).
+.TP
+.B 19
+We failed to authenticate ourselves to the peer.
+.SH SCRIPTS
+Pppd invokes scripts at various stages in its processing which can be
+used to perform site-specific ancillary processing.  These scripts are
+usually shell scripts, but could be executable code files instead.
+Pppd does not wait for the scripts to finish.  The scripts are
+executed as root (with the real and effective user-id set to 0), so
+that they can do things such as update routing tables or run
+privileged daemons.  Be careful that the contents of these scripts do
+not compromise your system's security.  Pppd runs the scripts with
+standard input, output and error redirected to /dev/null, and with an
+environment that is empty except for some environment variables that
+give information about the link.  The environment variables that pppd
+sets are:
+.TP
+.B DEVICE
+The name of the serial tty device being used.
+.TP
+.B IFNAME
+The name of the network interface being used.
+.TP
+.B IPLOCAL
+The IP address for the local end of the link.  This is only set when
+IPCP has come up.
+.TP
+.B IPREMOTE
+The IP address for the remote end of the link.  This is only set when
+IPCP has come up.
+.TP
+.B PEERNAME
+The authenticated name of the peer.  This is only set if the peer
+authenticates itself.
+.TP
+.B SPEED
+The baud rate of the tty device.
+.TP
+.B ORIG_UID
+The real user-id of the user who invoked pppd.
+.TP
+.B PPPLOGNAME
+The username of the real user-id that invoked pppd. This is always set.
+.P
+For the ip-down and auth-down scripts, pppd also sets the following
+variables giving statistics for the connection:
+.TP
+.B CONNECT_TIME
+The number of seconds from when the PPP negotiation started until the
+connection was terminated.
+.TP
+.B BYTES_SENT
+The number of bytes sent (at the level of the serial port) during the
+connection.
+.TP
+.B BYTES_RCVD
+The number of bytes received (at the level of the serial port) during
+the connection.
+.TP
+.B LINKNAME
+The logical name of the link, set with the \fIlinkname\fR option.
+.P
+Pppd invokes the following scripts, if they exist.  It is not an error
+if they don't exist.
+.TP
+.B /etc/ppp/auth-up
+A program or script which is executed after the remote system
+successfully authenticates itself.  It is executed with the parameters
+.IP
+\fIinterface-name peer-name user-name tty-device speed\fR
+.IP
+Note that this script is not executed if the peer doesn't authenticate
+itself, for example when the \fInoauth\fR option is used.
+.TP
+.B /etc/ppp/auth-down
+A program or script which is executed when the link goes down, if
+/etc/ppp/auth-up was previously executed.  It is executed in the same
+manner with the same parameters as /etc/ppp/auth-up.
+.TP
+.B /etc/ppp/ip-up
+当线路可以传送以及接收IP封包时(也就是IPCP完成
+时)执行的一支程式或指令稿。它是以界面的名称、终端
+设备、速度、本地-IP-位址、远端-IP-位址为参数执行。
+.IP
+\fIinterface-name tty-device speed local-IP-address
+remote-IP-address ipparam\fR
+.TP
+.B /etc/ppp/ip-down
+当线路不再允许传送以及接收IP封包时执行的一支程式
+或指令稿。这个指令稿可以用来回复/etc/ppp/ip-up指
+令稿的影响。它以与ip-up指令稿相同的参数启动。
+.TP
+.B /etc/ppp/ipv6-up
+Like /etc/ppp/ip-up, except that it is executed when the link is available 
+for sending and receiving IPv6 packets. It is executed with the parameters
+.IP
+\fIinterface-name tty-device speed local-link-local-address
+remote-link-local-address ipparam\fR
+.TP
+.B /etc/ppp/ipv6-down
+Similar to /etc/ppp/ip-down, but it is executed when IPv6 packets can no
+longer be transmitted on the link. It is executed with the same parameters 
+as the ipv6-up script.
+.TP
+.B /etc/ppp/ipx-up
+A program or script which is executed when the link is available for
+sending and receiving IPX packets (that is, IPXCP has come up).  It is
+executed with the parameters
+.IP
+\fIinterface-name tty-device speed network-number local-IPX-node-address
+remote-IPX-node-address local-IPX-routing-protocol remote-IPX-routing-protocol
+local-IPX-router-name remote-IPX-router-name ipparam pppd-pid\fR 
+.IP
+The local-IPX-routing-protocol and remote-IPX-routing-protocol field
+may be one of the following:
+.IP
+NONE      to indicate that there is no routing protocol
+.br
+RIP       to indicate that RIP/SAP should be used
+.br
+NLSP      to indicate that Novell NLSP should be used
+.br
+RIP NLSP  to indicate that both RIP/SAP and NLSP should be used
+.TP
+.B /etc/ppp/ipx-down
+A program or script which is executed when the link is no longer
+available for sending and receiving IPX packets.  This script can be
+used for undoing the effects of the /etc/ppp/ipx-up script.  It is
+invoked in the same manner and with the same parameters as the ipx-up
+script.
+.SH "文件 FILES"
+.TP
+.B /var/run/ppp\fIn\fB.pid \fR(BSD or Linux), \fB/etc/ppp/ppp\fIn\fB.pid \fR(others)
+在ppp界面单元n上的ppp程序之Process-ID。
+.TP
+.B /var/run/ppp-\fIname\fB.pid \fR(BSD or Linux), \fB/etc/ppp/ppp-\fIname\fB.pid \fR(others)
+Process-ID for pppd process for logical link \fIname\fR (see the
+\fIlinkname\fR option).
+.TP
+.B /etc/ppp/pap-secrets
+ 由PAP验证所使用的使用者名称、密码以及IP位址。
+This file should be owned by root and not readable or writable by any other
+user.  Pppd will log a warning if this is not the case.
+.TP
+.B /etc/ppp/chap-secrets
+ 由CHAP验证所使用的名称、暗号以及IP位址。
+ As for /etc/ppp/pap-secrets, this file should be owned by root and not
+readable or writable by any other user.  Pppd will log a warning if
+this is not the case.
+.TP
+.B /etc/ppp/options
+ pppd的系统预设选项,在使用者预设选项或指令列选项之前读取。
+.TP
+.B ~/.ppprc
+ 使用者预设选项,在指令列选项之前读取。
+.TP
+.B /etc/ppp/options.\fIttyname
+ 所要使用之串列埠的系统预设选项,在指令列之後读取。read after
+~/.ppprc.  In forming the \fIttyname\fR part of this
+filename, an initial /dev/ is stripped from the port name (if
+present), and any slashes in the remaining part are converted to
+dots.
+.TP
+.B /etc/ppp/peers
+A directory containing options files which may contain privileged
+options, even if pppd was invoked by a user other than root.  The
+system administrator can create options files in this directory to
+permit non-privileged users to dial out without requiring the peer to
+authenticate, but only to certain trusted peers.
+.SH "参见 SEE ALSO"
+.TP
+.B RFC1144
+Jacobson, V.
+\fICompressing TCP/IP headers for low-speed serial links.\fR
+February 1990.
+.TP
+.B RFC1321
+Rivest, R.
+.I The MD5 Message-Digest Algorithm.
+April 1992.
+.TP
+.B RFC1332
+McGregor, G.
+.I PPP Internet Protocol Control Protocol (IPCP).
+May 1992.
+.TP
+.B RFC1334
+Lloyd, B.; Simpson, W.A.
+.I PPP authentication protocols.
+October 1992.
+.TP
+.B RFC1661
+Simpson, W.A.
+.I The Point\-to\-Point Protocol (PPP).
+July 1994.
+.TP
+.B RFC1662
+Simpson, W.A.
+.I PPP in HDLC-like Framing.
+July 1994.
+.TP
+.B RFC2472
+Haskin, D.
+.I IP Version 6 over PPP
+December 1998.
+.SH " 注意 NOTES
+下列信号传送到pppd程序时有特别的影响
+.TP
+.B SIGINT, SIGTERM
+这些信号使得pppd终止该连线(关闭LCP),回存串列
+串列设备的设定,并结束离开。
+.TP
+.B SIGHUP
+指出实体层已经被断线。pppd将会试图回存串列设备的设
+定(这可能会在Suns上产生错误讯息),然後结束离开。
+ If the \fIpersist\fR or
+\fIdemand\fR option has been specified, pppd will try to reopen the
+serial device and start another connection (after the holdoff period).
+Otherwise pppd will exit.  If this signal is received during the
+holdoff period, it causes pppd to end the holdoff period immediately.
+.TP
+.B SIGUSR1
+This signal toggles the state of the \fIdebug\fR option.
+.TP
+.B SIGUSR2
+This signal causes pppd to renegotiate compression.  This can be
+useful to re-enable compression after it has been disabled as a result
+of a fatal decompression error.  (Fatal decompression errors generally
+indicate a bug in one or other implementation.)
+
+.SH "作者 AUTHOR"S
+Paul Mackerras (Paul.Mackerras at cs.anu.edu.au), based on earlier work by
+Drew Perkins,
+Brad Clements,
+Karl Fox,
+Greg Christy,
+and
+Brad Parker.
+
+.SH "[中文版维护人]"
+.B 软件教程之Linux Man <asdchen at pc2.hinet.net>
+.B <Best Linux> 1999
+.SH "[中文版最新更新]"
+.B 1995/10/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/printcap.8 b/src/man8/printcap.8
new file mode 100644
index 0000000..9f20709
--- /dev/null
+++ b/src/man8/printcap.8
@@ -0,0 +1,164 @@
+.\" 發信人: hendrix.bbs at bbs.mis.cycu.edu.tw (啾...), 信區: Linux
+.\" 標  題: printcap man page 中譯
+.\" 發信站: 中原資管森林站 (Sun Mar 30 16:55:48 1997)
+.\" 轉信站: cis_nctu!news.cis.nctu!news-peer.nctu!news.nctu!spring!News.csie.ncu!F
+.\" --
+.\" 
+.TH PRINTCAP 5  "UNIX Programmer's Manual"  "4.2 Berkeley Distribution"  "May 10, 1991"
+.SH NAME
+.B printcap - 打印机相容性数据库
+.SH "总览 SYNOPSIS"
+.B printcap
+.SH "描述 DESCRIPTION"
+.B Printcap 
+是 
+.B termcap(5) 
+的簡單版, 用來描述 line printers. 當用到 spool 系
+統時, 一定會去參考 printcap 這個檔. 允許動態地加入及刪除印表機. 在這資料
+庫中的每一段敘述代表一台印表機. 
+This data base may not be substituted for, as is possible for termcap, 
+because it may allow accounting to be bypassed.
+.PP
+預設的印表機是 lp, 雖然環境變數 PRINTER 可能優於(override)此. 每一
+個用到 spool 的軟體都支援 -p 的選項, 用以選擇印表機. 如果想知道如何為一
+台印表機設定資料的討論, 請參照 4.3 BSD Line Printer Spooler Manual.
+.SH "相容性 CAPABILITIES"
+根據 
+.BI termcap(5) 
+對檔案輸出的描述.
+.nf
+     Name       Type      Description
+     af         str       NULL                   name of accounting file
+     br         num       none                   if lp is a tty, set the baud
+                                                 rate (ioctl(2) call)
+     cf         str       NULL                   cifplot data filter
+     df         str       NULL                   tex data filter (DVI format)
+     fc         num       0                      if lp is a tty, clear flag 
+                                                 bits (sgtty.h)
+     ff         str       `\f'                   string to send for a form
+                                                 feed
+     fo         bool      false                  print a form feed when 
+                                                 device is opened
+     fs         num       0                      like `fc' but set bits
+     gf         str       NULL                   graph data filter (plot(3) 
+                                                 format)
+     hl         bool      false                  print the burst header page
+                                                 last
+     ic         bool      false                  driver supports(non standard)
+                                                 ioctl to indent printout
+     if         str       NULL                   name of text filter which 
+                                                 does accounting
+     lf         str       /dev/console           error logging file name
+     lo         str       lock                   name of lock file
+     lp         str       /dev/lp                device name to open for 
+                                                 output
+     mx         num       1000                   maximum file size (in BUFSIZ
+                                                 blocks), zero = unlimited
+     nd         str       NULL                   next directory for list of
+                                                 queues (unimplemented)
+     nf         str       NULL                   ditroff data filter (device
+                                                 independent troff)
+     of         str       NULL                   name of output filtering
+                                                 program
+     pc         num       200                    price per foot or page in
+                                                 hundredths of cents
+     pl         num       66                     page length (in lines)
+     pw         num       132                    page width (in characters)
+     px         num       0                      page width in pixels
+                                                 (horizontal)
+     py         num       0                      page length in pixels 
+                                                 (vertical)
+     rf         str       NULL                   filter for printing FORTRAN
+                                                 style text files
+     rg         str       NULL                   restricted group. Only
+                                              members of group allowed access
+     rm         str       NULL                   machine name for remote
+                                                 printer
+     rp         str       ``lp''                 remote printer name argument
+     rs         bool      false                  restrict remote users to
+                                                 those with local accounts
+     rw         bool      false                  open the printer device for
+                                                 reading and writing
+     sb         bool      false                  short banner (one line only)
+     sc         bool      false                  suppress multiple copies
+     sd         str       /var/spool/lpd         spool directory
+     sf         bool      false                  suppress form feeds
+     sh         bool      false                  suppress printing of burst
+                                                 page header
+     st         str       status                 status file name
+     tf         str       NULL                   troff data filter (cat
+                                                 phototypesetter)
+     tr         str       NULL                   trailer string to print when
+                                                 queue empties
+     vf         str       NULL                   raster image filter
+.fi
+.PP
+如果本地端印表機(local line printer) driver 支援 indentation 的話, daemon 將
+知道如何去用它.
+.SH "过滤器 FILTERS"
+.B lpd(8) 
+守护进程將創造出一個過濾的管線 (pipeline of filters) 來處理各個不同印
+表機的檔案. 過濾器將依照旗標來選擇將何者送到 
+.B lpr(1) . 
+管線的設定值有:
+.nf
+           p            pr | if regular text + pr(1)
+           none         If         regular text
+           c            cf         cifplot
+           d            df         DVI (tex)
+           g            gf         plot(3)
+           n            nf         ditroff
+           f            rf         Fortran
+           t            tf         troff
+           v            vf         raster image
+.fi
+.PP
+if 過濾器的用法是:
+.CS
+           if [-c] -wwidth -llength -iindent -n login -h host acct-file
+.CE
+.PP
+\fI-c\fP 這個旗標只有在 -l 旗標有列在 lpr 中時才可忽略. width 和 length 定義
+了 page 的長和寬 (from pw and pl respectively). -n 和 -h 可指定列印工作擁有者
+的 login name 和 host name. Acct-file 將忽略 printcap 中的描述. 
+.PP
+If no if is specified, of is used instead, with the distinction that of
+is opened only once, while if is opened for every individual job.  Thus,
+if is better suited to performing accounting.  The of is only given the
+width and length flags.
+.PP
+其它過濾器的呼叫用法如下:
+.CS
+           filter -xwidth -ylength -n login -h host acct-file
+.CE
+.PP
+如果要用 pixels 為單位來定長寬的話, 用 px 和 py 這二個變數.
+所有的過濾器都經由 stdin 輸入檔案, stdout 輸出到印表機, 用 stderr 或 
+.B syslog(3) 
+來記錄(log), 而且不會忽略 SIGINT. 
+.SH "日志 LOGGING"
+Error messages generated by the line printer programs themselves (that
+is, the lp*  programs) are logged by syslog(3) using the LPR facility.
+Messages printed on stderr of one of the filters are sent to the corre-
+sponding lf file.  The filters may, of course, use syslog themselves.
+.PP
+Error messages sent to the console have a carriage return and a line feed
+appended to them, rather than just a line feed.
+.SH "参见 SEE ALSO"
+termcap(5),  lpc(8),  lpd(8),  pac(8),  lpr(1),  lpq(1),  lprm(1)
+.br
+4.3 BSD Line Printer Spooler Manual.
+.SH "历史 HISTORY"
+The printcap file format appeared in 4.2BSD..
+
+.SH "[中文版维护人]"
+.B 中原資管森林站 <u8313115 at mis.cycu.edu.tw>
+.\" --
+.\" 啾~~~  ^_^
+.\" u8313115 at mis.cycu.edu.tw
+.\" http://140.135.137.1/~u8313115/
+.\" 中原資管森林站:140.135.137.11
+.SH "[中文版最新更新]"
+.B 1997.01.01
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/quotacheck.8 b/src/man8/quotacheck.8
new file mode 100644
index 0000000..ddc3bf0
--- /dev/null
+++ b/src/man8/quotacheck.8
@@ -0,0 +1,138 @@
+.TH quotacheck 8 "Mon Jul 17 2000"
+.SH NAME
+quotacheck \- 扫描文件系统,创建,检测并修补配额文件
+.SH 总览(SYNOPSIS)
+.B quotacheck
+[
+.B -agucfinvdFR
+]
+.I filesystem
+.br
+.SH 描述(DESCRIPTION)
+.B quotacheck 
+察看每一个文件系统,建立当前磁盘使用情况表,并将
+此表与配额文件中相应内容比较(如果使用了选项 
+.B \-c
+, 这一步将省略).如果发现任何不一致,同时更新配额文件和当前
+不正确的系统配额拷贝(只有当选择使用配额的文件系统时,才更新
+后者).在缺省状态下,只选择用户配额.
+.PP
+.B quotacheck
+要求每个被检测的文件系统在其根目录中都有名为
+.I aquota.user
+和
+.I aquota.group
+的配额文件.如果上述文件不存在,
+.B quotacheck
+将创建它(们).
+.PP
+.B quotacheck
+通常在系统启动的时候由位于
+.I /etc/init.d
+的初始化脚本在 quotaon(8) 建立磁盘配额之前运行.
+.PP
+强烈建议在运行
+.B quotacheck
+之前关掉配额,卸载文件系统或者将其设为只读模式,否则会出现
+配额损坏.
+.br
+.B quotacheck
+在开始扫描之前,会尝试以只读模式装配各文件系统. 当扫描完
+成时,它会以读写模式重新装配文件系统.你可以用-F选项使
+.B quotacheck
+在尝试以只读模式重新装配文件系统失败之后继续运行.
+.PP
+完成扫描所需要的时间与磁盘的使用程度成正比.
+.SH 选项(OPTIONS)
+.TP
+.B \-v
+.B quotacheck
+在运行时报告其每一项操作.在缺省状态下不报告.
+.TP
+.B \-d
+进入调试状态.这会产生许多用于调试程序的信息.输出的信息
+非常详尽,而扫描速度会减慢.
+.TP
+.B \-a
+如果用它取代任何文件系统的名字,
+.B quotacheck
+将检测所有在
+.I /etc/mtab
+中列为可读写的文件系统的配额.在缺省状态下,只有在
+.I /etc/mtab
+中被列为配额的文件系统才会被检测.
+.TP
+.B \-u
+只检测在
+.I /etc/mtab
+列出或指定的文件系统中的用户配额.这是缺省状态下采取的行动.
+.TP
+.B \-g
+只检测在
+.I /etc/mtab
+中列出或制定的文件系统中的组配额
+.TP
+.B \-c
+不读已经存在的配额文件.执行一次新的扫描,并且把结果保存到磁盘上.
+.TP
+.B \-f
+强制检测所有使用配额的文件系统.不推荐使用该选项,因为其产生的
+配额文件可能会不同步.
+.TP
+.B \-F
+强制在可读写状态下检测文件系统.当使用该选项时,请先确定在对文件
+系统进行扫描的时候,没有进程需要对该文件系统写入数据.
+.TP
+.B \-R
+当与
+.B \-a
+一起使用时,检测除根(root)文件系统外的其他所有文件系统.
+.TP
+.B \-i
+交互模式.在缺省状态下,
+.B quotacheck
+在发现错误后即退出.在交互模式下,用户会被问取建议.
+参考选项
+.BR \-n .
+.TP
+.B \-n
+有时候对同一个ID会找到多个结果. 通常遇到这种情况
+.B quotacheck
+就终止运行.该选项强制使用第一个结果(该选项在交互模式下同样有效).
+.SH 注意 (NOTE)
+.B quotacheck
+应该只能由超级用户执行.因为未授权用户通常不能读
+一个给定文件系统上的所有目录.
+.SH 参见(SEE ALSO)
+.BR quota (1),
+.BR quotactl (2),
+.BR fstab (5),
+.BR quotaon (8),
+.BR repquota (8),
+.BR convertquota (8),
+.BR setquota (8),
+.BR edquota (8),
+.BR fsck (8),
+.BR efsck (8),
+.BR e2fsck (8),
+.BR xfsck (8)
+.SH 文件(FILES)
+.B aquota.user
+与用户配额位于文件系统根目录
+.br
+.B aquota.group
+与组配额位于文件系统根目录
+.br
+.B /etc/mtab
+是已装配文件系统表.
+
+.SH 作者(AUTHOR)
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+.br
+基于旧版
+.B quotacheck
+作者:
+.br
+Edvard Tuinder \<ed at elm.net\>
+.br
+Marco van Wieringen \<mvw at planets.elm.net\>
diff --git a/src/man8/quotaoff.8 b/src/man8/quotaoff.8
new file mode 100644
index 0000000..19dce0f
--- /dev/null
+++ b/src/man8/quotaoff.8
@@ -0,0 +1 @@
+.so man8/quotaon.8
diff --git a/src/man8/quotaon.8 b/src/man8/quotaon.8
new file mode 100644
index 0000000..8584866
--- /dev/null
+++ b/src/man8/quotaon.8
@@ -0,0 +1,133 @@
+.TH QUOTAON 8 "Fri Mar 09 2001"
+.UC 4
+.SH NAME
+quotaon \- 开启关闭文件系统配额
+.SH "总览 (SYNOPSIS)"
+.B quotaon
+[
+.B -e
+|
+.B d
+]
+[
+.B -vug
+]
+.IR filesystem .\|.\|.
+.br
+.B quotaon
+[
+.B -e
+|
+.B d
+]
+[
+.B -avug
+]
+.PP
+.B quotaoff
+[
+.B -e
+|
+.B d
+]
+[
+.B -vug
+]
+.IR filesystem .\|.\|.
+.br
+.B quotaoff
+[
+.B -e
+|
+.B d
+]
+[
+.B -avug
+]
+.SH "描述 (DESCRIPTION)"
+.IX  "quotaon 命令"  ""  "\fLquotaon\fP \(em 打开文件系统配额"
+.IX  "用户配额"  "quotaon 命令"  ""  "\fLquotaon\fP \(em 打开文件系统配额"
+.IX  "磁盘配额"  "quotaon 命令"  ""  "\fLquotaon\fP \(em 打开文件系统配额"
+.IX  "配额"  "quotaon 命令"  ""  "\fLquotaon\fP \(em 打开文件系统配额"
+.IX  "文件系统"  "quotaon 命令"  ""  "\fLquotaon\fP \(em 打开文件系统配额"
+.IX  "quotaoff 命令"  ""  "\fLquotaoff\fP \(em 关闭文件系统配额"
+.IX  "用户配额"  "quotaoff 命令"  ""  "\fLquotaoff\fP \(em 关闭文件系统配额"
+.IX  "磁盘配额"  "quotaoff 命令"  ""  "\fLquotaoff\fP \(em 关闭文件系统配额"
+.IX  "配额"  "quotaoff c命令"  ""  "\fLquotaoff\fP \(em 关闭文件系统配额"
+.IX  "文件系统"  "quotaoff 命令"  ""  "\fLquotaoff\fP \(em 关闭文件系统配额"
+.LP
+.B quotaon
+通知系统在一个或者几个文件系统上使用磁盘配额。
+.B quotaoff
+通知系统取消某一个特定的文件系统的所有磁盘配额。 被指定的文件系统必须已经装载。
+.B quotaon
+要求在指定的文件系统的根目录下有相应的配额文件, 用户配额文件是
+.IR aquota.user ,
+组配额文件是
+.IR aquota.group 。
+这些文件可以是用
+.BR convertquota (8)
+命令转换旧的配额文件而来, 也可以是用
+.BR quotacheck (8)
+命令创建的一个全新的文件。 默认是用户和组配额
+都被允许。
+.SH "选项 (OPTIONS)"
+.TP
+.B -e
+开启指定文件系统配额。 当程序名是
+.B quotaon
+时, 此选项是默认的。
+.
+.TP
+.B -d
+关闭指定文件系统配额。 当程序名是
+.B quotaoff
+时, 此选项是默认的。
+.
+.TP
+.B -a
+当用在任何文件系统名称的地方时,
+.B quotaon/quotaoff
+将允许/禁止所有在
+.B /etc/mtab
+中指定的文件系统为有磁盘配额的读-写。 这个选项一般被用在系统启动时开启配额。
+.TP
+.B -v
+为每个开启或关闭配额的文件系统显示一条消息。
+.TP
+.B -u
+处理用户配额。 这是默认选项。
+.TP
+.B -g
+处理组配额。
+.LP
+.SH "文件 (FILES)"
+.PD 0
+.TP 20
+.B aquota.user
+文件系统根目录下的用户配额文件
+.TP
+.B aquota.group
+文件系统根目录下的组配额文件
+.TP
+.B /etc/mtab
+已装载的文件系统表
+.PD
+.SH "参见 (SEE ALSO)"
+.BR quota (1),
+.BR quotactl (2),
+.BR fstab (5),
+.BR convertquota (8),
+.BR quotacheck (8),
+.BR setquota (8),
+.BR edquota (8),
+.BR repquota (8)
+.SH "作者 (AUTHOR)"
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+
+.SH "[中文版维护人]"
+.B 唐友 \<tony_ty at 263.net\>
+.SH "[中文版最新更新]"
+.BR 2001/7/13
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/quotastats.8 b/src/man8/quotastats.8
new file mode 100644
index 0000000..628136a
--- /dev/null
+++ b/src/man8/quotastats.8
@@ -0,0 +1,24 @@
+.TH QUOTASTATS 8 "1999年8月20日星期五"
+.UC 4
+.SH NAME(名称)
+quotastats - 显示与配额子系统相关的统计信息
+.SH SYNOPSIS(总览)
+.B quotastats
+.SH DESCRIPTION(描述)
+该命令显示与配额子系统相关的统计信息.
+.SH "SEE ALSO"(另见)
+quota(1), quotactl(2)
+.SH AUTHOR(作者)
+Marco van Wieringen \<mvw at planets.elm.net\>
+.br
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+.br
+作了细小的修改.
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+2001/7/10
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/ramsize.8 b/src/man8/ramsize.8
new file mode 100644
index 0000000..901bd75
--- /dev/null
+++ b/src/man8/ramsize.8
@@ -0,0 +1 @@
+.so man8/rdev.8
diff --git a/src/man8/rdev.8 b/src/man8/rdev.8
new file mode 100644
index 0000000..eb81f9d
--- /dev/null
+++ b/src/man8/rdev.8
@@ -0,0 +1,154 @@
+.\" Copyright 1992, 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.\" Changes from sct at dcs.ed.ac.uk added Sat Oct  9 09:54:00 1993.
+.TH RDEV 8 "20 November 1993" "Linux 0.99" "Linux Programmer's Manual"
+.SH NAME
+rdev \- 查询/设置内核映像文件的根设备,RAM 磁盘大小或视频模式
+.SH 总览 SYNOPSIS
+.nf
+.BR "rdev [ \-rvh ] [ \-o " offset " ] [ " image " [ " value " [ " offset " ] ] ]"
+.BR "rdev [ \-o " offset " ] [ " image " [ " root_device " [ " offset " ] ] ]"
+.BR "ramsize [ \-o " offset " ] [ " image " [ " size " [ " offset " ] ] ]"
+.BR "vidmode [ \-o " offset " ] [ " image " [ " mode " [ " offset " ] ] ]"
+.BR "rootflags [ \-o " offset " ] [ " image " [ " flags " [ " offset " ] ] ]"
+.fi
+.SH 描述 DESCRIPTION
+不带任何参数的
+.B rdev
+命令将输出当前根文件系统的
+.I /etc/mtab
+文件行。不带任何参数的
+.BR ramsize ", " vidmode ", 和 " rootflags
+将显示帮助信息。
+
+在一个 i386 上的 linux 可引导内核映像文件中,有几对字节用来指定根设备,视频模式和 RAM 磁盘的大小。这些字节对,在默认情况下起始在内核映像的偏移量504 (十进制) 处。
+
+.nf
+.RS
+ 498 Root flags (根标志)
+(500 和 502 保留)
+ 504 RAM Disk Size RAM (磁盘大小)
+ 506 VGA Mode (VGA 模式)
+ 508 Root Device (根设备)
+(510 Boot Signature (启动标记))
+.RE
+.fi
+
+.B rdev
+可以改变这些值。
+
+典型的
+.I image
+参数的值是一个可启动的 linux 内核映像,可能是
+
+.nf
+.RS
+/vmlinux
+/vmunix
+/boot/bzImage-2.4.0
+/dev/fd0
+/dev/fd1
+.RE
+.fi
+
+当使用
+.B rdev
+命令时,
+.I root_device
+参数是类似如下所示的值:
+
+.nf
+.RS
+/dev/hda1
+/dev/hdf13
+/dev/sda2
+/dev/sdc4
+/dev/ida/c0d0p1
+.RE
+.fi
+
+也可以通过使用一个逗号 (comma) 分隔的十进制整数对
+.IR major , minor
+来指定这个设备。
+
+对于
+.B ramsize
+命令,
+.B size
+参数指定了 RAM 磁盘的大小,以千字节为单位。
+
+对于
+.B rootflags
+命令,
+.B flags
+参数包含在挂载 root 文件系统时额外的信息。当前这些标志的唯一作用是当
+.B flags
+非零时,强制内核以只读模式来挂载 root 文件系统。
+
+对于
+.B vidmode
+命令,
+.B mode
+参数指定了视频模式。
+
+.nf
+.RS
+-3 = Prompt (提示)
+-2 = Extended VGA (扩展的VGA)
+-1 = Normal VGA (普通VGA)
+ 0 = as if "0" was pressed at the prompt (假设在提示时按下了"0")
+ 1 = as if "1" was pressed at the prompt
+ 2 = as if "2" was pressed at the prompt
+ n = as if "n" was pressed at the prompt
+.RE
+.fi
+
+如果没有指定
+.I value
+,将检测
+.I image
+来得到当前的设置。
+.SH 选项 OPTIONS
+.TP
+.B \-r
+使得
+.B rdev
+作为
+.BR ramsize
+运行。
+.TP
+.B \-R
+使得
+.B rdev
+作为
+.BR rootflags
+运行。
+.TP
+.B \-v
+使得
+.B rdev
+作为
+.BR vidmode
+运行。
+.TP
+.B \-h
+提供帮助。
+.SH BUGS
+.B rdev
+工具,如果不是用做查找当前根设备的名称,那么就是一种古老的破解 (hack) ,依靠对内核的一个特定 (magic) 位移以特殊 (magic) 数字进行修改来工作。它在 i386 之外的体系中不能工作。不鼓励使用它。使用一个启动管理器,例如 SysLinux , LILO 或者 grub 来替代它。
+.SH 历史 HISTORY
+偏移 502 从前是交换设备的设备号 (在 linux 0.12 中),运行 \fI"rdev -s"\fR 或者 \fI"swapdev"\fR 将设置它。但是,从 linux 0.95 起,这个常量不再使用,交换设备是以
+.IR swapon ()
+系统调用来指定的。
+.SH 作者 AUTHORS
+.nf
+原作者是 Werner Almesberger (almesber at nessie.cs.id.ethz.ch);
+Peter MacDonald (pmacdona at sanjuan.UVic.CA) 进行了修改;
+Stephen Tweedie (sct at dcs.ed.ac.uk) 加入了 rootflags 支持。
+.fi
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B Nov 21 2000
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/repquota.8 b/src/man8/repquota.8
new file mode 100644
index 0000000..6b2b437
--- /dev/null
+++ b/src/man8/repquota.8
@@ -0,0 +1,84 @@
+.TH REPQUOTA 8 "1999年8月20日星期五"
+.UC 4
+.SH NAME(名称)
+repquota \- 文件系统配额的汇总
+.SH SYNOPSIS(总览)
+.B repquota
+[
+.B \-vugs
+]
+.IR filesystem .\|.\|.
+.LP
+.B repquota
+[
+.B \-avugs
+]
+.SH DESCRIPTION(描述)
+.IX  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "user quotas"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "disk quotas"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "quotas"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "file system"  "repquota command"  ""  "\fLrepquota\fP \(em summarize quotas"
+.IX  "summarize file system quotas repquota"  ""  "summarize file system quotas \(em \fLrepquota\fP"
+.IX  "report file system quotas repquota"  ""  "report file system quotas \(em \fLrepquota\fP"
+.IX  display "file system quotas \(em \fLrepquota\fP"
+.LP
+.B repquota
+显示与配额文件相关的信息以及对于指定文件系统的磁盘使用情况和配额的汇总.
+对于每个用户,显示当前的文件数和空间大小(以千字节计),还有由
+.BR setquota (8)
+或
+.BR edquota (8)
+创建的任何配额.
+.SH OPTIONS(选项)
+.TP
+.B \-a
+包含对所有已挂载的文件系统的统计.
+.TP
+.B \-v
+对所有文件系统报告配额情况,即使该文件系统根本就没使用.
+.TP
+.B \-g
+报告组的配额.
+.TP
+.B \-u
+报告用户的配额.这是默认的选项.
+.TP
+.B \-s
+包含完全的统计信息.
+.LP
+只有超级用户可以浏览不属于他们的配额.
+.SH FILES(相关文件)
+.PD 0
+.TP 20
+.B aquota.user
+位于文件系统root下的用户配额文件.
+.TP
+.B aquota.group
+位于文件系统root下的组配额文件.
+.TP
+.B /etc/mtab
+已挂载的文件系统表
+.PD
+.SH SEE ALSO(另见)
+.BR quota (1),
+.BR quotactl (2),
+.BR fstab (5),
+.BR setquota (8),
+.BR edquota (8),
+.BR quotacheck (8),
+.BR quotaon (8)
+.SH AUTHOR(作者)
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+.br
+用户界面取自老的应用文档,它的作者是:
+.br
+Marco van Wieringen \<mvw at planets.elm.net\>\
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]"
+2001/7/19
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/rootflags.8 b/src/man8/rootflags.8
new file mode 100644
index 0000000..901bd75
--- /dev/null
+++ b/src/man8/rootflags.8
@@ -0,0 +1 @@
+.so man8/rdev.8
diff --git a/src/man8/route.8 b/src/man8/route.8
new file mode 100644
index 0000000..6b2a0f8
--- /dev/null
+++ b/src/man8/route.8
@@ -0,0 +1,187 @@
+.TH ROUTE 8 "2 January 2000" "net-tools" "Linux Programmer's Manual"
+.SH NAME
+.B route - 显示 / 操作IP选路表
+
+.SH 总览 SYNOPSIS
+\fBroute\fR [-CFvnee]
+
+\fBroute\fR  [-v]  [-A	 family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt  I][reject] [mod] [dyn] [reinstate] [[dev] If]
+
+\fBroute\fR  [-v]  [-A	 family]  del [-net|-host] target [gw Gw][netmask Nm] [metric N] [[dev] If]
+
+\fBroute\fR  [-V] [--version] [-h] [--help]
+
+.SH 描述 DESCRIPTION
+route程序对内核的IP选路表进行操作。它主要用于通过已用ifconfig(8)程序配置好的接口来指定的主机或网络设置静态路由。
+
+.SH 选项 OPTIONS
+.TP
+-v     
+选用细节操作模式
+.TP
+-A family
+用指定的地址族(如`inet',`inet6')。
+.TP
+-n     
+以数字形式代替解释主机名形式来显示地址。此项对试图检测对域名服务器进行路由发生故障的原因非常有用。
+.TP
+-e     
+用netstat(8)的格式来显示选路表。-ee将产生包括选路表所有参数在内的大量信息。
+.TP
+-net   
+路由目标为网络。
+.TP
+-host  
+路由目标为主机。
+.TP
+-F     
+显示内核的FIB选路表。其格式可以用-e 和 -ee选项改变。
+.TP
+-C     
+显示内核的路由缓存。
+.TP
+del    
+删除一条路由。
+.TP
+add    
+添加一条路由。
+.TP
+target 
+指定目标网络或主机。可以用点分十进制形式的IP地址或主机/网络名。
+.TP
+netmask Nm
+为添加的路由指定网络掩码。
+.TP
+gw Gw  
+为发往目标网络/主机的任何分组指定网关。注意:指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。这是BSD风格所兼容的。
+.TP
+metric M
+把选路表中的路由值字段(由选路进程使用)设为M。
+.TP
+mss M  
+把基于此路由之上的连接的TCP最大报文段长度设为M字节。这通常只用于优化选路设置。默认值为536。
+.TP
+window W
+把基于此路由之上的连接的TCP窗口长度设为W字节。这通常只用于AX.25网络和不能处理背对背形式的帧的设备。
+.TP
+irtt I 
+把基于此路由之上的TCP连接的初始往返时间设为I毫秒(1-12000)。这通常也只用于AX.25网络。如果省略此选项,则使用RFC1122的缺省值300ms。
+.TP
+reject 
+设置一条阻塞路由以使一条路由查找失败。这用于在使用缺省路由前先屏蔽掉一些网络。但这并不起到防火墙的作用。
+.TP
+mod, dyn, reinstate
+设置一条动态的或更改过的路由。这些标志通常只由选路进程来设置。这只用于诊断目的,
+.TP
+dev If 
+强制使路由与指定的设备关联,因为否则内核会自己来试图检测相应的设备(通常检查已存在的路由和加入路由的设备的规格)。在多数正常的网络上无需使用。
+
+如果dev If是命令行上最后一个指定的选项,那么可以省略关键字dev,因为它是缺省值。否则路由修改对象(metric - netmask- gw - dev)无关紧要。
+.SH 范例 EXAMPLES
+.TP
+route add -net 127.0.0.0
+加入正常的环回接口项,它使用掩码255.0.0.0(由目标地址决定了它是A类网络)并与设备"lo"相关联(假定该设备先前已由ifconfig(8)正确设置)。
+.TP
+route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
+向"eth0"添加一条指向网络192.56.76.x的路由。其中的C类子网掩码并不必须,因为192.*是个C类的IP地址。在此关键字"dev"可省略。
+.TP
+route add default gw mango-gw
+加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有分组将通过网关"mango-gw"进行传输。实际使用此路由的设备取决于如何到达"mango-gw" - 先前必须设好到"mango-gw"的静态路由。
+.TP
+route add ipx4 sl0
+向SLIP接口添加一条指向"ipx4"的路由(假定"ipx4"是使用SLIP的主机)。
+.TP
+route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
+此命令为先前SLIP接口的网关ipx4添加到网络"192.57.66.x"的路由。
+.TP
+route add 224.0.0.0 netmask 240.0.0.0 dev eth0
+此命令为"eth0"设定所有D类地址(用于组播)的路由。这是用于组播内核的正确配置行。
+.TP
+route add 10.0.0.0 netmask 255.0.0.0 reject
+此命令为私有网络"10.x.x.x."设置一条阻塞路由。
+
+.SH 输出信息 OUTPUT
+内核选路表的输出信息由以下栏目组成:
+.TP
+Destination
+目标网络或目标主机。
+.TP
+Gateway
+网关地址或'*'(如未设)。
+.TP
+Genmask
+目标网络的子网掩码;'255.255.255.255'为主机,'0.0.0.0'为缺省路由。
+.TP
+Flags  
+可能出现的标志有:
+.br
+U (route is up)
+路由正常
+.br
+H (target is a host)
+主机路由
+.br
+G (use gateway)
+使用网关的间接路由
+.br
+R (reinstate route for dynamic routing)
+为动态选路恢复路由
+.br
+D (dynamically installed by daemon or redirect)
+该路由由选路进程或重定向动态创建
+.br
+M (modified from routing daemon or rederict)
+该路由已由选路进程或重定向修改
+.br
+! (reject route)
+阻塞路由
+.TP
+Metric 
+通向目标的距离(通常以跳来计算)。新内核不使用此概念,而选路进程可能会用。
+.TP
+Ref    
+使用此路由的活动进程个数(Linux内核并不使用)。
+.TP
+Use    
+查找此路由的次数。根据-F  和 -C的使用,此数值是路由缓存的损失数或采样数。
+.TP
+Iface  
+使用此路由发送分组的接口。
+.TP
+MSS    
+基于此路由的TCP连接的缺省最大报文段长度。
+.TP
+Window 
+基于此路由的TCP连接的缺省窗口长度。
+.TP
+irtt   
+初始往返时间。内核用它来猜测最佳TCP协议参数而无须等待(可能很慢的)应答。
+.TP
+HH (cached only)
+为缓存过的路由而访问硬件报头缓存的ARP记录和缓存路由的数量。如果缓存过路由的接口(如lo)无须硬件地址则值为-1。
+.TP
+Arp (cached only)
+无论缓存路由所用的硬件地址情况如何都进行更新。
+
+.SH 文件 FILES
+.B  /proc/net/ipv6_route
+.br
+.B /proc/net/route
+.br
+.B /proc/net/rt_cache
+.br
+.SH 参见SEE ALSO
+.B ifconfig(8), netstat(8), arp(8), rarp(8)
+
+.SH 历史 HISTORY
+Linux所用的route程序最初由Fred	 N.   van Kempen <waltje at uwalt.nl.mugnet.org>开发,并由Johannes Stille 和Linus  Torvalds对pl15进行修改。Alan  Cox为Linux 1.1.22加入了mss 和 window选项。对irtt的支持和与netstat的合并来自BerndEckenfels的工作。
+
+.SH 作者 AUTHOR
+当前由Phil Blundell <Philip.Blundell at pobox.com>维护。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2001/02/24
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/rpm.8 b/src/man8/rpm.8
new file mode 100644
index 0000000..825f16b
--- /dev/null
+++ b/src/man8/rpm.8
@@ -0,0 +1,543 @@
+.\" rpm - Red Hat Package Manager
+.TH rpm 8 "22 December 1998" "Red Hat Software" "Red Hat Linux"
+.SH NAME
+rpm \- Red Hat 包管理器
+.SH 总览
+\fBrpm\fP [选项] 
+.SH 描述
+\fBrpm\fP是一个很有用的\fI包管理器\fP, 可以用于生成, 安装, 查询, 核实, 
+更新以及卸载单个软件包. 一个\fI包\fP通常包括一个文件档以及关于包
+的信息, 比如名字, 版本, 描述等.
+
+必须选取下列基本模式中一个:
+\fI初始化数据库\fP, \fI重新生成数据库\fP, 
+\fI生成包\fP, \fI重新编译包\fP, \fI从Tar包生成RPM包\fP, 
+\fI查询\fP, \fI显示查询标签\fP, 
+\fI安装\fP, \fI更新\fP, \fI卸载\fP, 
+\fI核实\fP, \fI签名检查\fP, \fI再签名\fP, \fI添加签名\fP, 
+\fI设置所有者和组\fR 以及 \fI显示配置\fP.
+
+
+数据库维护:
+.br
+.I "\fB    rpm \-i [\-\-initdb]\fP"
+.br
+.I "\fB    rpm \-i [\-\-rebuilddb]\fP"
+
+生成:
+.br
+.I "\fB    rpm [\-b|t] [package_spec]+\fP"
+.br
+.I "\fB    rpm [\-\-rebuild] [sourcerpm]+\fP"
+.br
+.I "\fB    rpm [\-\-tarbuild] [tarredsource]+\fP"
+.br
+
+查询:
+.br
+.I "\fB    rpm [\-\-query] [queryoptions]\fP"
+.br
+.I "\fB    rpm [\-\-querytags]\fP"
+.br
+
+维护已安装的包:
+.br
+.I "\fB    rpm [\-\-install] [installoptions] [package_file]+\fP"
+.br
+.I "\fB    rpm [\-\-freshen|\-F] [installoptions] [package_file]+\fP"
+.br
+.I "\fB    rpm [\-\-uninstall|\-e] [uninstalloptions] [package]+\fP"
+.br
+.I "\fB    rpm [\-\-verify|\-V] [verifyoptions] [package]+\fP"
+.br
+
+签名:
+.br
+.I "\fB    rpm [\-\-verify|\-V] [verifyoptions] [package]+\fP"
+.br
+.I "\fB    rpm [\-\-resign] [package_file]+\fP"
+.br
+.I "\fB    rpm [\-\-addsign] [package_file]+\fP"
+.br
+
+Miscellaneous:
+.br
+.I "\fB    rpm [\-\-showrc]\fP"
+.br
+.I "\fB    rpm [\-\-setperms] [package]+\fP"
+.br
+.I "\fB    rpm [\-\-setgids] [package]+\fP"
+.br
+
+
+.SH 普通选项
+这些选项可以各种不同的方式使用.
+.IP "\fB\-vv\fP"
+将打印出许多难以阅读的调试信息.
+.IP "\fB\-\-quiet\fP"
+打印尽可能少的信息 \- 普通只展示错误信息.
+.IP "\fB\-\-help\fP"
+给出比常规更多的用法信息.
+.IP "\fB\-\-version\fP"
+在单独一个行里给出所用 \fBrpm\fP 的版本号
+.IP "\fB\-\-rcfile \fI<filelist>\fP"
+在\fI<filelist>\fP里列出了一些文件, 各文件之间以冒号分隔, 
+\fBrpm\fP 顺序读取这些文件以获得配置信息. \fI<filelist>\fP缺省
+是\fB/usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc\fP.
+列表中的第一个文件(/usr/lib/rpm/rpmrc)且只有这个文件
+必须存在, 代字符~指向\fB$HOME\fP的值. 
+.IP "\fB\-\-root \fI<dir>\fP"
+对所有操作均将\fI<dir>\fP视为系统根目录. 注意这意味着对数
+据库的读或修改操作都将是在\fI<dir>\fP目录下进行, 并且脚本
+的\fIpre\fP或\fIpost\fP操作都是在做了以\fI<dir>\fP为根目录的chroot()
+之后进行.
+.IP "\fB\-\-dbpath \fI<path>\fP"
+依照\fI<path>\fP使用RPM的数据库.
+.IP "\fB\-\-justdb\fP"
+更新只针对数据库,而不是整个文件系统.
+.IP "\fB\-\-ftpproxy \fI<host>\fP, \fB\-\-httpproxy \fI<host>\fP"
+设\fI<host>\fP为FTP或HTTP的代理服务器. 参阅\fBFTP/HTTP 选项\fP.
+.IP "\fB\-\-ftpport \fI<port>\fP, \fB\-\-httpport \fI<port>\fP"
+设\fI<port>\fP为FTP或HTTP的代理服务器的端口. 参阅\fBFTP/HTTP 选项\fP.
+.IP "\fB\-\-pipe \fI<cmd>\fP"
+通过管道将\fBrpm\fP的输出输入到命令\fI<cmd>\fP.
+
+.SH 安装和升级选项
+通常的rpm安装命令如下:
+.PP
+	\fBrpm \-i [install\-options] \fI<package_file>+\fP
+.PP
+这样将安装一个新的包. 通常的rpm升级命令如下:
+.PP
+	\fBrpm \-U [install\-options] \fI<package_file>+\fP
+.PP
+这样将当前已安装的包升级或新安装到一个新的RPM版本. 升级和
+安装是一样的, 区别在于升级要将所有别的版本的包从系统移去.
+.PP
+	\fBrpm [\-F|--freshen] [install\-options] \fI<package_file>+\fP
+.PP
+这样也升级包, 但只有在系统存在一个更早版本的包时候才使用这
+种方式.
+
+
+如果包在安装之前要先进行下载, \fI<package_file>\fP应该指明为一个
+ftp或者http URL. 要得到关于RPM包生成的ftp和http支持的信息, 
+可以参阅\fBFTP/HTTP 选项\fP.
+.PP
+.IP "\fB\-\-force\fP"
+与使用\fB\-\-replacepkgs\fP, \fB\-\-replacefiles\fP, 以及\fB\-\-oldpackage\fP效果相同
+.IP "\fB\-h\fP, \fB\-\-hash\fP"
+包档如果没有被解包, 打印50个破折号. 配合\fB\-v\fP使用可以
+使得有更好的展示.
+.IP "\fB\-\-oldpackage\fP"
+允许用旧版本的包取代较新的版本.
+.IP "\fB\-\-percent\fP"
+给出文件从包档解包的百分比. 该项的作用是为了使rpm相
+比于别的工具更容易使用.
+.IP "\fB\-\-replacefiles\fP"
+即使要安装的包会取代别的已安装包的文件, 也安装该包.
+.IP "\fB\-\-replacepkgs\fP"
+即使包的部分内容已安装在系统里,也安装该包.
+.IP "\fB\-\-allfiles\fP"
+安装或升级包里所有的缺失文件,不管其是否存在.
+.IP "\fB\-\-nodeps\fP"
+在安装或升级包之前不做依赖检查.
+.IP "\fB\-\-noscripts\fP"
+不执行安装前或安装后脚本
+.IP "\fB\-\-notriggers\fP"
+不执行由该包的安装所激发的脚本
+.IP "\fB\-\-ignoresize\fP"
+安装该包前不检查mount文件系统是否有足够的磁盘空间.
+.IP "\fB\-\-excludepath \fI<path>\fP"
+不安装文件名以路径\fI<path>\fP开头的文件.
+.IP "\fB\-\-excludedocs\fP"
+不安装任何标记为文档的文件(包括手册页及文本信息档案).
+.IP "\fB\-\-includedocs\fP"
+安装文档文件, 这是缺省的操作.
+.IP "\fB\-\-test\fP"
+不安装包, 只是简单地检查并报告可能的冲突.
+.IP "\fB\-\-ignorearch\fP"
+允许安装或升级其体系与主机不匹配的二进制RPM包.
+.IP "\fB\-\-ignoreos\fP"
+允许安装或升级其操作系统与主机不匹配的二进制RPM包.
+.IP "\fB\-\-prefix \fI<path>\fP"
+对于可浮动包, 这将把安装前缀设置到\fI<path>\fP.
+.IP "\fB\-\-relocate \fI<oldpath>\fB=\fI<newpath>\fP"
+将文件从\fI<oldpath>\fP改置到\fI<newpath>\fP, 这使得可以浮动包.
+.IP "\fB\-\-badreloc\fP"
+与\-\-relocate配合使用, 强制改置不可浮动的包.
+.IP "\fB\-\-noorder\fP"
+安装时对包不重新排序, 正常在安装时应该重新排序包列
+表, 以满足依赖性.
+
+.SH 查询选项
+rpm的查询命令通常的格式如下:
+.PP
+	\fBrpm \-q [query\-options]\fP
+.PP
+可以制定包信息的打印格式, 这时要用\fB[\-\-queryformat|\-qf]\fP选项, 
+格式串跟在选项后面. 
+
+查询格式由标准\fBprintf(3)\fP格式的版本决定. 格式由静态字符串
+(包括除了换行符, tab, 以及其它的特殊字符之外的标准C字符), 
+以及\fBprintf(3)\fP类型格式符. 如果\fBrpm\fP已经知道打印类型, 
+则类型说明就必须被忽略, 并且以要打印的头部tag的名字取代, 
+该名字被括在\fB{}\fP之间. 而且tag的\fBRPMTAG_\fP部分也被忽略.
+
+可以用\fB:\fItypetag\fR来改变输出格式.当前支持的有如下类型:\fBoctal\fR,
+\fBdate\fR, \fBshescape\fR, \fBperms\fR, \fBfflags\fR, 以及 \fBdepflags\fR.
+
+例如,要只打印被查询包的名字,可以用\fB%{名称}\fP作为格式字符串.
+要在两个栏里打印包名及分布信息,可以用\fB%\-30{名称}%{分布}\fP.
+
+当被\fB\-\-querytags\fP参数激发时,\fBrpm\fP将列出所有tags.
+
+查询选项有两种子设置: 包选择和信息选择.
+
+包选择选项:
+.br
+.IP "\fB\fI<package_name>\fP"
+查询名为\fI<package_name>\fP的安装包.
+.IP "\fB\-a\fP, \fB\-\-all\fP"
+查询所有安装的包.
+.IP "\fB\-\-whatrequires \fI<capability>\fP"
+查询所有需要\fI<capability>\fP才能提供适当功能的包.
+.IP "\fB\-\-whatprovides \fI<virtual>\fP"
+查询所有提供\fI<virtual>\fP功能的包.
+.IP "\fB\-f \fI<file>\fP, \fB\-\-file \fI<file>\fP"
+查询拥有文件\fI<file>\fP的包.
+.IP "\fB\-g \fI<group>\fP, \fB\-\-group \fI<group>\fP"
+查询属于???组\fI<group>\fP的包
+.IP "\fB\-p \fI<package_file>\fP"
+查询一个没有安装的包\fI<package_file>\fP.
+\fI<package_file>\fP可以被说明为ftp或http URL,这时包头会被下载并被查询.
+要得到关于RPM生成的ftp和http客户端支持的信息,请参阅\fBFTP/HTTP OPTIONS\fP
+.IP "\fB\-\-specfile \fI<specfile>\fP"
+像对待一个包一样Parse并查询\fI<specfile>\fP.
+虽然不是所有的信息(例如文件列表)可用,这种查询类型
+允许rpm在不用写一个specfile parser的情况下从spec files提取信息.
+.IP "\fB\-\-querybynumber \fI<num>\fP"
+直接查询\fI<num>\fP数据库入口,该选项在调试时很有用处.
+.IP "\fB\-\-triggeredby \fI<pkg>\fP"
+查询由包\fI<pkg>\fP所激发的包.
+
+.P
+信息选择选项:
+.br
+.IP "\fB\-i\fP"
+展示包信息,包括名字,版本,以及描述.???
+.IP "\fB\-R\fP, \fB\-\-requires\fP"
+列出该包所依赖的别的包.
+.IP "\fB\-\-provides\fP"
+列出该包所提供的功能.
+.IP "\fB\-\-changelog\fP"
+展示该包的变更信息.
+.IP "\fB\-l\fP, \fB\-\-list\fP"
+列出该包的文件.
+.IP "\fB\-s\fP, \fB\-\-state\fP"
+展示该包各文件的状态信息,因此该选项实际隐含了\fB\-l\fP选项.
+文件状态可以是如下之一:
+\fInormal\fP, \fInot installed\fP, 或者 \fIreplaced\fP.
+.IP "\fB\-d\fP, \fB\-\-docfiles\fP"
+只列出文档文件(隐含\fB\-l\fP选项).
+.IP "\fB\-c\fP, \fB\-\-configfiles\fP"
+只列出配置文件(隐含\fB\-l\fP选项).
+.IP "\fB\-\-scripts\fP"
+如果有的话,就列出该包里作为安装或卸载过程一部分的特殊shell脚本.
+.IP "\fB\-\-triggers\fP, \fB\-\-triggerscripts\fP"
+如果有的话,展示该包包含的激发子脚本.
+.IP "\fB\-\-dump\fP"
+如下的哑文件信息: path size mtime md5sum mode
+owner group isconfig isdoc rdev symlink.
+该选项必须至少配合如下选项之一:\fB\-l\fP, \fB\-c\fP, \fB\-d\fP使用.
+.IP "\fB\-\-last\fP"
+按包的安装时间进行排序,这使得最新的包在序列顶部.
+.IP "\fB\-\-querybypkg\fP"
+列出每个包里的所有文件.
+.IP "\fB\-\-triggerscripts\fP"
+显示所选包的所有激发子脚本.
+
+.SH 核实选项
+.PP
+	\fBrpm \-V|\-y|\-\-verify [verify\-options]\fP
+.PP
+将所安装包的文件信息和源发包的文件信息以及在rpm数据库的文件信息做比较, 以此来核实包.
+对于别的东西,则???
+任何的差异都会展示.包的说明选项与查询选项相同.
+
+对于不是从包安装的文件,例如在安装的时候用"\fB\-\-excludedocs\fP"
+选项排除了的文档文件,将在没有提示的情况下被忽略掉.
+
+核实选项可以使用如下模式:
+
+.IP "\fB\-\-nofiles\fP"
+核实时忽略缺失文件
+.IP "\fB\-\-nomd5\fP"
+核实时忽略MD5校验错误
+.IP "\fB\-\-nopgp\fP"
+核实时忽略PGP校验错误
+.IP "\fB\-\-nofiles\fP"
+核实时忽略缺失文件
+
+
+输出的格式是一个八个字符的字符串,和一个可能有的"\fBc\fP",
+指明后面是一个配置文件,以及后面的文件名.
+八个字符中的每一个都代表着一个文件属性与保存在RPM的数据库中的属性纪录值的比较结果.
+单个的"\fB.\fP"(句号)表明检查通过.下列字符代表特定检查的失败:
+
+
+.IP "\fB5\fP"
+MD5校验和
+.IP "\fBS\fP"
+文件大小
+.IP "\fBL\fP"
+符号连接
+.IP "\fBT\fP"
+修改时间
+.IP "\fBD\fP"
+设备
+.IP "\fBU\fP"
+用户
+.IP "\fBG\fP"
+组
+.IP "\fBM\fP"
+模式(包括许可和文件类型)
+
+.SH 签名检查
+通常的rpm签名检查命令如下:
+.PP
+	\fBrpm \-\-checksig \fI<package_file>+\fP
+.PP
+这将检查包\fI<package_file>\fP的PGP签名以确保其完整性和源发性.
+可以从配置文件读取PGP配置信息.细节请查阅 PGP 签名 部分.
+
+.SH 卸载选项
+rpm卸载命令的通常格式如下:
+.PP
+	\fB    rpm \-e \fI<package_name>+\fP
+.PP
+.IP "\fB\-\-allmatches\fP"
+将移去与\fI<package_name>\fR相匹配的所有版本的包.正常的话,如果\fI<package_name>\fR与多个包相匹配,就会给出错误信息.
+.IP "\fB\-\-noscripts\fP"
+不执行安装前或安装后脚本.
+.IP "\fB\-\-notriggers\fP"
+不执行由移去该包所激发的脚本
+.IP "\fB\-\-nodeps\fP"
+卸载前不检查依赖性
+.IP "\fB\-\-test\fP"
+不真正卸载任何东西,只是遍历该动作.配合\fB\-vv\fP选项会很有用处.
+
+.SH 生成选项
+The general form of an rpm build command is
+.PP
+    \fBrpm \-[b|t]\fIO\fP [build\-options] \fI<package_spec>+\fP
+.PP
+The argument used is \fB-b\fR if a spec file is being used to build the package
+and \fB-t\fR if \fBRPM\fR should look inside of a gzipped (or compressed) tar
+file for the spec file to use. After the first argument, the next argument
+(\fIO\fR) specifies the stages of building and packaging to be done and
+is one of:
+rpm通常的生成选项如下:
+.PP
+    \fBrpm \-[b|t]\fIO\fP [build\-options] \fI<package_spec>+\fP
+.PP
+
+
+.IP "\fB\-bp\fP"
+Executes the "%prep" stage from the spec file.  Normally this
+involves unpacking the sources and applying any patches.
+
+.IP "\fB\-bl\fP"
+Do a "list check".  The "%files" section from the spec file
+is macro expanded, and checks are made to verify that each file
+exists.
+.IP "\fB\-bc\fP"
+Do the "%build" stage from the spec file (after doing the prep stage).
+This generally involves the equivalent of a "make".
+.IP "\fB\-bi\fP"
+Do the "%install" stage from the spec file (after doing the prep
+and build stages).  This generally involves the equivalent of a
+"make install".
+.IP "\fB\-bb\fP"
+生成一个二进制包(在完成prep, build, 以及 install阶段之后)
+.IP "\fB\-bs\fP"
+只生成源包(在完成prep, build, 以及 install阶段之后)
+.IP "\fB\-ba\fP"
+生成二进制包和源包(在完成prep, build, 以及 install阶段之后)
+.PP
+
+还可以使用的选项如下:
+.IP "\fB\-\-short\-circuit\fP"
+忽略导致specified阶段(比如,忽略所有导致specified阶段的阶段).
+只有与\fB\-bc\fP 以及 \fB\-bi\fP合用才有效.
+.IP "\fB\-\-timecheck\fP"
+设置"timecheck"的值(0-?).该值也可以通过定义宏"_timecheck"来配置.
+timecheck值以秒为单位,表示一个包生成的最大年龄.如果时间超过了该值,
+则对所有文件皆给出警告信息.
+.IP "\fB\-\-clean\fP"
+在包完成之后,移去生成树.
+.IP "\fB\-\-rmsource\fP"
+在完成包的生成之后移去源和spec文件
+(也可以单独使用,比如:"\fBrpm \-\-rmsource foo.spec\fP").
+.IP "\fB\-\-test\fP"
+不执行任何生成阶段.在测试spec文件时很有用处.
+.IP "\fB\-\-sign\fP"
+在包中嵌入一个PGP签名.该签名可以用来核实该包的完整性和源发性.
+配置细节可以察看 PGP 签名 一节.
+.IP "\fB\-\-buildroot \fI<dir>\fP"
+在生成包的时候,用目录\fI<dir>\fP覆盖包的生成根目录tag.
+.IP "\fB\-\-target \fI<platform>\fP"
+在生成包的时候,将\fI<platform>\fP解释为\fBarch-vendor-os\fP,并且相应地设置
+宏\fB_target\fP, \fB_target_arch\fP 以及 \fB_target_os\fP.
+.IP "\fB\-\-buildarch \fI<arch>\fP"
+在生成包的时候,将architecture设置到\fI<arch>\fP.
+该选项在RPM 3.0中由于\fB\-\-target\fI的出现而被抛弃.
+.IP "\fB\-\-buildos \fI<os>\fP"
+在生成包的时候,将architecture设置到\fI<os>\fP.
+该选项在RPM 3.0中由于\fB\-\-target\fI的出现而被抛弃.
+
+.SH 重新生成以及重新编译选项
+
+There are two other ways to invoke building with rpm:
+有两种不同的方法用rpm重新生成包:
+
+.I "\fBrpm \-\-recompile \fI<source_package_file>+\fP"
+
+.I "\fBrpm \-\-rebuild \fI<source_package_file>+\fP"
+
+当以这种方式激发的时候,\fBrpm\fP安装指明的源包,并且完成prep,compile,install工作.
+另外,\fB\-\-rebuild\fP生成一个新的二进制包.
+当包的生成完成的时候,生成所用目录被移去(就如同使用了\fB\-\-clean\fP),
+而且该包的源和spec文件也要移走.
+
+.SH 签名一个已存在的RPM
+
+.I "\fBrpm \-\-resign \fI<binary_package_file>+\fP"
+
+该选项生成并将新签名插入所列出的包里.已存在的签名会被移走.
+
+.I "\fBrpm \-\-addsign \fI<binary_package_file>+\fP"
+
+该选项生成并将新签名附加到所列出的包的签名之后.
+
+.SH PGP 签名
+
+要使用签名特性,RPM必须要能够运行PGP(要安装了PGP并且你可以访问它),
+而且还需PGP能找到一个带有RPM公钥的公钥环.
+缺省情况下,RPM使用PGP的缺省设置(著名的PGPPATH)来查找钥环.
+如果你的钥环并不在PGP所期望它们处在的地方,则你需要配置宏
+.IP "\fB_pgp_path\fP" ,
+将其设为要使用的PGP钥环所在的位置.
+.PP
+
+如果你想要签名一个你自己生成的包,你还必须创建自己的公钥和密钥对(请参阅PGP手册).
+还需要配置签名类型宏:
+.IP "\fB_signature\fP",
+目前只支持pgp.还有用户名宏:
+.IP "\fB_pgp_name\fP"
+指明想要使用其键去签名你的包的用户.
+
+在生成包的时候,可以将\-\-sign加到命令行里.这样只需给出你的口令短语,
+就可以在生成包的同时对其签名.
+
+比如,要想以用户\fp"John Doe <jdoe at foo.com>"\fP的身份,用在
+\fB/etc/rpm/.pgp\fP的钥环,去签名一个包,就应该将
+
+.IP "\fB%_signature\fP"
+\fBpgp\fP
+.IP "\fB%_pgp_name\fP"
+\fB/etc/rpm/.pgp\fP
+.IP "\fB%_pgp_name\fP"
+\fBJohn Doe <jdoe at foo.com>"
+.PP
+
+包括在一个宏配置文件里.
+对于系统的配置可以使用\fB/etc/rpm/macros\fP,
+而对于个人配置可以使用\fB~/.rpmmacros\fP.
+
+.SH 重新生成数据库选项
+
+rpm重建数据库的命令是
+.PP
+	\fBrpm \-\-rebuilddb\fP
+.PP
+
+要重建一个新的数据库,可以:
+.PP
+	\fBrpm \-\-initdb\fP
+.PP
+对这些模式唯一的选项是\fB-\-dbpath\fP 和 \fB-\-root\fP.
+
+.SH SHOWRC 
+
+运行
+.PP
+	\fBrpm \-\-showrc\fP
+
+.PP
+展示一些设置在\fIrpmrc\fP文件里的值,RPM所有选项都会利用这些值.
+
+.SH FTP/HTTP选项
+
+RPM包括简单的FTP和HTTP客户端程序,这样可以简化那些从internet取得的包的安装和查询.
+用于安装,升级,以及查询操作的包文件可以说明为ftp或者http格式的URL:
+
+.PP
+	\fBftp://<user>:<password>@hostname:<port>/path/to/package.rpm\fP
+.PP
+如果忽略掉\fB:password\fP部分,会提示要求给出口令(每个用户/主机名对一次)
+如果用户名和口令都忽略了,就使用匿名ftp. 
+总是使用消极(PASV) ftp传送. 
+
+RPM允许使用下列操作辅助ftp URLs
+
+.IP "\fB\--ftpproxy \fI<hostname>\fP"
+主机\fI<hostname>\fP将被作为所有ftp传输的代理服务器使用, 
+这样允许用户通过使用了代理系统的防火墙机器来做ftp传输. 
+该选项也可以通过配置宏\fB_ftpproxy\fP来指明. 
+
+.IP "\fB\--ftpport \fI<port>\fP"
+用该TCP\fI<端口>\fP号取代缺省的端口去连接代理ftp服务器. 
+该选项也可以通过配置宏\fB_ftpport\fP来指明. 
+.PP
+
+RPM允许使用下列操作辅助http URLs
+
+.IP "\fB\--httpproxy \fI<hostname>\fP"
+将主机\fI<主机名>\fP作为所有http传输的代理服务器使用. 
+该选项可以通过配置宏\fB_httpproxy\fP来指明. 
+
+.IP "\fB\--httpport \fI<port>\fP"
+用该TCP\fI<端口>\fP号取代缺省的端口去连接代理http服务器. 
+该选项也可以通过配置宏\fB_httpport\fP来指明. 
+.PP
+
+.SH 文件
+.nf
+/usr/lib/rpm/rpmrc
+/etc/rpmrc
+~/.rpmrc
+/var/lib/rpm/packages
+/var/lib/rpm/pathidx
+/var/lib/rpm/nameidx
+/tmp/rpm*
+.fi
+.El
+.SH 另见
+.IR glint (8) ,
+.IR rpm2cpio (8) ,
+.B http://www.rpm.org/
+.nf
+.SH 作者
+.nf
+Marc Ewing <marc at redhat.com>
+Jeff Johnson <jbj at redhat.com>
+Erik Troan <ewt at redhat.com>
+.fi
+
+.SH "[中文版维护人]"
+.B mapping <email>
+.SH "[中文版最新更新]"
+2001/7/21
+.SH  "《Linuxfourm 中文MAN-PAGE计划》"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/setclock.8 b/src/man8/setclock.8
new file mode 100644
index 0000000..6e23106
--- /dev/null
+++ b/src/man8/setclock.8
@@ -0,0 +1,27 @@
+.\'
+.TH SETCLOCK 8 "1996年11月12日 sun"  
+.UC 4
+.SH NAME
+\fBsetclock \- 用系统时间来设置硬件时间 \fR 
+.SH 总览
+\fBsetclock\fR
+.SH 描述
+\fBsetclock\fR 用当前系统时钟存储的时间设置系统的硬件时间.
+它先读取 \fI/etc/sysconfig/clock\fR 的时间格式, 时间存储前应该转化成这种格式. 
+Red Hat 的标准启动脚本和 \fBtimeconfig(8)\fR 也是用的这种方法 .
+
+.SH 相关文件
+.PD 0
+.TP 25
+\fI/etc/sysconfig/clock\fR 
+用来配置时间的格式. 
+
+.PD
+.SH "另见"
+.BR clock (8),
+.BR timeconfig (8)
+.SH 作者
+.nf
+Erik Troan <ewt at redhat.com>
+.fi
+ 
diff --git a/src/man8/setquota.8 b/src/man8/setquota.8
new file mode 100644
index 0000000..7c64421
--- /dev/null
+++ b/src/man8/setquota.8
@@ -0,0 +1,113 @@
+.TH SETQUOTA 8 "1999年8月20日星期五"
+.SH NAME(名称)
+setquota \- 设置磁盘配额或时间限制
+.SH SYNOPSIS(总览)
+.B setquota
+[
+.B \-u
+|
+.B \-g
+]
+.I filesystem-name
+.I block-soft
+.I block-hard
+.I inode-soft
+.I inode-hard
+.IR name .\|.\|.\|
+.LP
+.B setquota
+[
+.B \-u
+|
+.B \-g
+]
+.I filesystem-name
+.B \-p
+.I model-name
+.IR name .\|.\|.\|
+.LP
+.B setquota
+.B -p
+[
+.B \-u
+|
+.B \-g
+]
+.I filesystem-name
+.I block-time-limit
+.I inode-time-limit
+.SH DESCRIPTION(描述)
+.IX  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  set "disk quotas \(em \fLsetquota\fP"
+.IX  "disk quotas"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  "disk quotas"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  "quotas"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.IX  "file system"  "setquota command"  ""  "\fLsetquota\fP \(em set disk quotas"
+.B setquota
+是一个命令行配额编辑器.它允许针对特定(通过名字或id标识的)用户/组的
+配额设置.
+配额可以直接指定,也可以从其它用户复制(参看选项
+.BR -p ).
+使用这个应用程序,同时可以设置超出软配额的可能的时间限制(参看选项
+.BR -t ).
+如果你想手工编辑配额,你也可以使用
+.BR edquota (8)
+应用程序,倘若你觉得它更方便的话.
+
+.SH OPTIONS(选项)
+.TP
+.B -u
+为指定的用户设置用户配额.这是默认的选项
+.TP
+.B -g
+为指定的组设置组配额.
+.TP
+.B -p model-name
+设置指定的用户/组的配额与
+.I model-name
+的用户/组相同.
+.TP
+.B -t
+在指定的文件系统上针对特定的配额类型设置时间限制.
+限制以秒计.
+.LP
+要禁止使用配额,可以设置相应的参数为0.
+要对几个文件系统修改配额,可以对每个文件系统调用一次.
+.LP
+只有超级用户可以编辑配额.(为了在一个文件系统上建立配额,文件系统的
+root目录下必须包含一个由root所有,叫做
+.BR aquota.user
+或
+.BR aquota.group
+的文件.
+参看
+.BR quotaon (8)
+以了解详情.)
+.SH FILES(相关文件)
+.PD 0
+.TP 20
+.B aquota.user或aquota.group
+位于文件系统root下的配额文件
+.TP
+.B /etc/mtab
+已挂载的文件系统表
+.PD
+.SH SEE ALSO(另见)
+.BR quota (1),
+.BR quotactl (2),
+.BR quotacheck (8),
+.BR quotaon (8),
+.BR repquota (8),
+.BR convertquota (8),
+.BR edquota (8)
+.SH AUTHOR(作者)
+Jan Kara \<jack at atrey.karlin.mff.cuni.cz\>
+
+
+.SH "[中文版维护人]"
+.B riser <boomer at ccidnet.com>
+.SH "[中文版最新更新]" 
+.B 2001.07.10
+.br
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/setserial.8 b/src/man8/setserial.8
new file mode 100644
index 0000000..2f68c66
--- /dev/null
+++ b/src/man8/setserial.8
@@ -0,0 +1,435 @@
+.TH SETSERIAL 8 "1998年9月" "Setserial 2.15
+.SH NAME
+setserial \- 取得/设置 Linux 串行口的信息
+.SH 总览
+.B setserial
+.B "[ \-abqvVWZ]"
+设备
+.BR "[ "命令参数一 " [ " 设备变元参数 " ] ] ..."
+.B "setserial -g"
+.B "[\a-abGv ]"
+设备一 ...
+.SH 描述
+.B setserial 
+是一个用来设置和取得与一个串行口有关的信息与设置的程序。这些信
+息包括某个串行口正在使用的I/o地址与中断号,以及break键是否被当
+做引起安全注意的键,等等。
+
+在通常的引导的过程中,只有端口 COM1至COM4被初始化,并使用默认的
+I/O地址和中断号,正如以下所列。为了初始化其它的串行口,或者是把
+COM1至COM4中的设置改为一个非标准的设置。就必须使用
+.B setserial 
+程序。一般这个程序会在
+.I rc.serial
+脚本中使用,此脚本通常会在
+.IR /etc/rc.local .
+ 中被执行
+
+.I 设备
+ 由变元参数定义的需要设置的串行设备。它们通常具有以下形式:
+.BR /dev/cua[0-3]  .
+
+如果没有设定命令参数,
+.B setserial 
+ 将打印出此端口的类型(如,8250,16450 ,14330,16550A,等等),
+ 硬件I/O地址,各硬件中也断号,波特数,和一些可操作或更改的标识。
+
+如果选择
+.B \-g
+选项,命令将列出所给出的设备参数的一些基本信息。 
+
+如果没有指定参数
+.B\-g
+命令所指定的第一个设备变元将被当作修改或者是显示内容的目标设备,
+而其它的设备变元参数将被当作命令参数赋于目标设备。
+
+
+对于大多数情况,需要有系统管理员的权限才能设置串行口。当然有一
+些串行口的参数,也可由普通用户设置,这些参数在本手册中会有另有
+说明。
+
+.SH 选项
+.B Setserial 
+可接受下列参数:
+
+.TP
+.B \-a
+当输出串行口设备的设置时,显示出所有有效信息.
+
+.TP
+.B \-b
+当输出串行口设备的设置时,输出主要的设备设置信息,此项适合于
+在引导过程时,在/etc/rc 脚本中输出设备信息.
+
+.TP
+.B \-G
+以特定形式输出串行口的设置信息,此形式可以设置信息以命令行
+参数的形式返馈回串行口设备.
+.TP
+.B \-q
+静默.
+.TP
+.B SetSerial
+命令将以更简洁的形式输出.
+.TP
+.B \-V
+输出详细信息.
+.B Setserial
+可以输出附加的状态的信息.
+.TP
+.B \-V
+显示版本信息然后退出.
+.TP
+.B \-W
+强制初始化中,断然后退出.些选项在核心版本2.1后的Linux中不在提供.
+.B \-z
+在开始设置标记前清除原有的设置的串行标记.此项与
+使用\-G 标记自动保存串行口的设置标记有关.
+
+.SH 命令参数
+以下命令参数可以赋于一个串行口.
+
+所有的参数值都被假定为一个八进制数,除非值前标有"0x".
+
+.TP
+.BR port " 端口号 "
+.B port
+此选项设置I/O地址如上.
+.TP
+.BR irq "中断号"
+.B irq
+此选项设置硬件的中断号IRQ如上.
+.TP
+.BR uart "异步通讯(UART)类型"
+ 此选项用来设置异步通讯(UART)的类型.允许的类型有
+.BR none ,
+8250,16450, 16550,16550A,16550,16650V2,and 16750.
+并且8250 类型 和 16450 没有FIFO's ,起初的16550 有一些错误致
+使FIFO's不可用,FIFO 只可用来16550A类型的异步通讯机。设置异步
+通讯(UART)类型为  8250,16450,或16550 将启用不使用 FIFO的串
+行口.使用异步通讯类型为
+.B none
+将禁用端口.
+
+一些内猫标注着"16650A UART带有1K缓冲",这是骗人的.它们没有真正
+兼容 16550A的UART;相反的它们只有 一个16450兼容的带1K接收缓冲
+UART,以防止接 收时溢出.这是非常重要的,因为它们没有一个没有一
+个可传导的FIFO.因此,他们与16650A UART 并不兼容,自动配置过程将
+正确的识别它们为16450 类型。如果你想强行使用,需要
+.B uart
+参数,这样你在传输文件时会发现有字符遗失.这些 UART 通常还有其它
+一些问题.
+.B skip test
+参数也经常被使用.
+.B autoconfig
+当使用这个参数时,
+.B Setserial
+将向核心请求自动设置串行口.I/O地址一要正确设置;核心将会
+试图检测UART类型,如果
+.B auto_irq
+参数选用,Linux将试图自动分配中断号IRQ. 
+.B autoconfig
+参数应在
+.BR port,auto_irq ",and "skip_test
+等参数使用后也被指定.
+.TP
+.B auto_irq
+在自动配置的过程中,会自动分配中断号IRQ. 此功能不能保证一
+定有一个正确的结果;一些硬件的配置可能会迷惑Linux的核心.一
+般来说不使用参数
+.B auto_irq
+ 的功能更安全一些,宁可明确地定IRQ中断号.
+.B irq
+ 参数指定中断号.
+.TP
+.B ^auto_irq
+在自动配置的过程中.并
+.I 不
+试图分配中断号IRQ.
+.TP
+.B skip_test
+在自动配置的过程中,忽略UART检测.一些内猫没有国际半导体公司
+兼容的UART设备类型,只有一些便宜的仿制品.有一些甚至不完全支持
+loopback检测模式,此模式是核心在试图配置之前用来确定在特定的
+地址上是不真有UART设备.因此对于某些内猫你可能需要指定这个参数
+以便Linux能正确的初始化UART.
+.TP
+.B ^skip_tet
+在自动配置过程中,
+.I 不
+忽略UART的检测.
+.TP
+.BR baud_base "波特基率"
+此选项设端口的波特率,此值为时钟频率除以16. 一般情况此项值为 115200, 这也是UART能支持的最快波特率.
+.TP
+.B spd_hi
+当程序要求 38.4kb时,使用57.6kb的连接速度.
+这个参数可以用由无特权的用户指定.
+.TP
+.B spd_vhi
+当要求38.4kb时,使用115kb的连接速度.
+.B spd_cust
+当要求38.4kb时,使用指定的divisor(除数)来计算速度.这时波特率由
+.B baud_base(波特基率)
+ 除以
+.B divisor(除数)
+得到
+.TP
+.B spd_normal
+当要求38.4kb 时使用38.4kb的速度.
+此参数可以由无特权的用户指定.
+.TP
+.BR divisor "divisor(除数)"
+此选项指定了自定义的除数.这个除数将被用在
+.B spd_cust
+选项中被指定时,当要求38.4kb的速度时,用来自行设置串行口连接
+速度此参数可由无特权的普通用户设定.
+.TP
+.B sak
+设置break键为引发安全注意键.
+.TP
+.B ^sak
+禁用引发安全注意键.
+.TP
+.B fourport
+配置端口为一AST Fouroart 卡.
+.TP
+.B ^fourport
+禁用 AST Fourport 配置.
+.TP
+.BR close delay "delay(延时)"
+指定时间长度,单位是百分之一秒,DTR在联出设备被关闭后,仍会保
+持一个低速串行通路,在有数据进来之前会重新起动DTR.这选项的默
+认值为50,即半秒延时.
+.TP
+.BR close_delay "delay(延时)"
+指定时间长度,单位是百分之一秒,在接受端被禁之前关闭端口时,
+核心需要等待从串行口传来的数据. 如果指定为"none",将不会有
+延时.如果指定"infinite" 时,核心将会以不确定的时间等待缓冲
+数据的传输.此选项的默认值为是 "none" .
+.TP
+.BR closing_wait2 "delay(延时)"
+指定时间的长度,单位是百分之一秒,在接受端被禁用后,在关闭端
+口时核心会等待从串行口传来的数据.而用
+.B closing_wait
+命令,"none" 和 "infinite" 两参数都将被指定,此项的默认值是
+3000,也就是30 秒延时。
+ 
+closing_wait 和 closing_wait2的默认值对大多数的设备都会适用。
+如果选择的延时太长,当串行口断开后,它会挂起太长时间,
+致使数据挂起而被消除。如果设太短,将会有可能致使一些传输的
+数据溢出。
+
+如果设备非常慢,像一个绘图仪,那么,两项值可能要增大一些。
+
+如果设备使用 XON/XOFF 信号交换,那么默认值将会反过来。然而这
+可能会致使在linux 与回波猫之间有一个"回波冲突"。
+.TP
+.B session_lockout
+对不同的任务,锁定联出设备的端口(/dev/cuaXX),也就是说,一但
+有一个进程打开端口,就不允许其它不同号的任务打开此端口,直到
+前一个进程放开此端口。
+.TP
+.B ^session_lockout
+对联出的端口不开启上述功能。
+.TP
+.B pgrp_lockout
+对不同进程组,锁定联出的端口(/dev/cuaXX)。
+也就是说,一但一个进程打开一个端口,不允其它进程组的进程共
+享此端口,直到前一个进程释放它。
+
+此参数的一个应用就是在当一个登陆端被一个拨号的串行口锁定。它将
+允许登陆端重置调制解调器(使用指定设备的程序可能会修改它的设置)
+在锁定被打开之前。
+.TP
+.B ^hup_notify
+当进程锁定在打一个拨号时,而此时联邮设备正挂起的话,不通知进程。
+.TP
+.B split_termios
+对于联出设备的终端设置与联入设备的终端设置分开对待。
+.TP
+.B ^split)termios
+ 对以上两者相同对待.此值为默认选项。
+.TP
+.B callout_nohup
+ 如果这个特殊串行口被当成一个联出设备打开,那么当载波检测消失
+时,不挂起通讯端口。
+.TP
+.B ^callout_nohup
+当串行口当作联出设备打开时,不忽略挂起通讯端口。当然,如果挂起
+的话HUPCL终端标识将会被启用。
+.TP
+.B ^low_latency
+  以更高的CPU占用率来使得接受滞延达到最小。(通常传输中的5-10ms的
+滞延以使系统开销最小.) 此项默认值为关闭,但某些实时程序可能会用
+到此参数。
+.SH CONISIDERATIONS OF CONFIGURING SERIAL PORTS
+明白setserial 命令只是告诉linux核心它想找到某个特定的端口的
+I/O地址各中断号IRQ是很重要的。它并不操作硬件,串行设备实际
+使用的一个特定的I/O地址。为了达到更改实际的硬件参数,你需要
+手动设置硬件,通常是设置跳线,或更改DIP开关。
+
+以下一节将针对设置你的串行端口给于一些帮助。
+
+  以下是"标准MS-dos"的端口设置:
+.nf
+.RS
+/dev/ttys0(COM1), port 0x3f8, irq 4
+/dev/ttys1(COM2), port 0x2f8, irq 3
+/dev/ttys2(COM3), port 0x3e8, irq 4
+/dev/ttys3(COM4), port 0x2e8, irq 3 
+.RE
+.fi
+
+根据AT/ISA总线结构的限定,通常中断号IRQ不能被两个以上的串行口
+共享。如果你试图这这样做,那么当你同时启用两个端口时,它们中
+的一个或全部将会不可靠。这和限制可由一多端口的串行口板来克服,
+它用来让多个串行口共享一个中断号IRQ。此种板对linux的支持已加入
+到AST  FourPort, Accent Async 板,Usenet Serial II 板,Bocabord
+BB-1004, BB-1008,和  BB-2016 板,以及HUB-6 serial  板之中。
+
+修改一个设备的中断号IRQ是比较困难的,因为大多数中断号已经被使用了,
+以下是"标准MS-DOS"设定的有效的中断号列表:
+.nf
+.RS
+IRQ 3: COM2
+IRQ 4: COM1
+IRQ 5: LPT2
+IRQ 7: LPT1
+.RE
+.fi
+
+许多人都发现中断号IRQ  5 是一个好的选择,假设电脑中只有一个并行口
+是正在使用的。那么中断号IRQ  2  也是一个好的选择(也可能是9);
+虽然这个中断号IRQ有时也被网卡使用,也有极个别的的显卡可能要使用
+中断号IRQ  2作为一个垂直回扫的中断。如果你的显卡是这样设置的;
+那你可能要禁用此项功能,以便能给其它的设备释放一个中断。当然这对
+于linux或是其它操作系统不一定是必须的。
+
+另外其它可用的中断号有  3 ,4,和  7,这些中断可能也被另一些串
+行或是并行口所用。(如果你的串行卡有一个16位的电子数据收集器的
+接线口,并且支持更高的中断号,那么中断号IRQ  10  ,11,  12,和
+15  也是可用的。)
+
+在一些AT类的机器上,中断号IRQ  2  被当作中断号IRQ  9,所以linux
+会如此认为。
+
+其它中断号除了2(9),3,  4,  5, 7,  10,  11,  12  和15
+.I 不
+能被使用,因为他们被安排给了其它的硬件,而且一般上不能
+更改。以下是一些“标准”的设置:
+
+.nf
+.RS
+IRQ  0     时钟发生器  0
+IRQ  1     键盘
+IRQ  2     可编程的中断控制器  2
+IRQ  3     串行口  2
+IRQ  4     串行口  1
+IRQ  5     并行口  2(保留给PS/2)
+IRQ  6     软盘驱动器
+IRQ  7     并行口  1
+IRQ  8     系统实时名钟 
+IRQ  9     重定向给中断号IRQ  2
+IRQ  10    保留
+IRQ  11    保留  
+IRQ  12    保留(ps/2兼容的设备)
+IRQ  13    数学协处理器
+IRQ  14    硬盘控制器
+IRQ  15    保留
+.RE
+.fi
+
+.SH MULTIPORT CONFIGURATION
+
+一些多端口的串行板可以让多的端中共享一个中断号,使用一个或是多个端口
+以显示是否有端口需要服务。如果你的多端口吕行板支持这些端口,你须保
+证如果中断丢失时,能避免潜在的死锁。
+
+为了详细设置这些端口,使用
+.B set_multiport
+为参数,紧接其后的是多端口的参数。这个多端中的参数须指定为以下形式
+.I port
+这需要检测一下,参数
+.I mask
+可以显示在已注册的位中那个是重要的,最后参数
+.I math
+用来指定在已注册的位中,当没有进一步工作要做时,那一位必须匹配。
+
+当有四个这种  /port/mask/match时,就要指定联合。第一个这种联合应该
+使用如下参数
+.BR port1,
+.BR mask1,
+和
+.BR match1 .
+第二个这种联合需要用如下参数指定
+.BR port2,
+.BR mask2,
+和
+.BR match2,
+等等。为了禁用这个多端口检测,设置
+.B port1
+为零。
+
+如果想查看当前多端口的设置,指定命令行参数
+.B get_multiport
+
+以下是一些通常的串行板的设置:
+
+.nf
+.RS
+AST FourPort    port1 0x1BF match1 0xf mask1 0xf
+
+Boca BB-1004/8  port1 0x107 match1 0xff match1 0
+
+Boca BB-2016    port1 0x107 match1 0xff match1 0 
+                port2 0x147 match2 0xff match2 0
+.RE
+.fi
+
+.SH Hayes ESP 的设置  
+.B Setserial
+也可以用来在贺氏的ESP串行板上设置端口。
+.PP
+以下参数在设置时使用:
+.TP
+.B rx_trigger
+这是一个接收的FIFO的触发水平(以字节为单位),较大的值可减少中断时间提
+高性能;然而值太大会引起数据丢失。有效值在1  到  1023  之间.
+.TP
+.B tx_trigger
+这是一个传送的FIFO的触发水平(安节为单位),较在的值可减少中断时间提高性
+能,但值太大会引起传输效率下降。有效值在1  到  1023之间.
+.TP
+.B flow_off
+这是通知ESP端口断开远端的传输(如,告诉它停止发送数据).有效值在1  到
+1023之间,这个值要比接收的触发等级和联接的水平值高.
+.TP
+.B flow_on
+这是ESP端口通知联接的等级(单位字节),(如,通知重新开始发送数据)在
+挂断之后,有效值在1  到  1023之间.这个值应在断开(flow off)等级值
+之下但要比接收的触发等级高.
+.TP
+.B rx_timeout
+这是ESP端口在接收完最后一个字符,且在中断信号之前将要等待的时间。
+有效值是0到255.值太大会增加延时,太小会引起不必要的中断。
+
+.SH 警告
+警告:设置一个串行端口时使用一个不正确的I/O地址可能会造成死机.
+.SH 文件
+.BR /etc/rc.local
+.BR /etc/rc.serial
+.SH "另见",
+.BR tty(4),
+.BR ttys(4),  
+kernel/chr_drv/serial.c
+.SH 作者
+最初seterial的版本是由Rick Sladkey(jrs at world.std.com)所作,而后由
+Michael K. Johnson(johsonm at stolaf.edu).
+
+
+
+
+
+
+
diff --git a/src/man8/showmount.8 b/src/man8/showmount.8
new file mode 100644
index 0000000..6fa40da
--- /dev/null
+++ b/src/man8/showmount.8
@@ -0,0 +1,63 @@
+.\" Copyright 1993 Rick Sladkey <jrs at world.std.com>
+.TH SHOWMOUNT 8 "11 August 1997"
+.SH NAME
+showmount \- 显示关于 NFS 服务器文件系统挂载的信息
+.SH 总览
+.ad l
+.B /usr/sbin/showmount
+.B "[\ \-adehv\ ]"
+.B "[\ \-\-all\ ]"
+.B "[\ \-\-directories\ ]"
+.B "[\ \-\-exports\ ]"
+.B "[\ \-\-help\ ]"
+.B "[\ \-\-version\ ]"
+.B "[\ host\ ]"
+.ad b
+.SH 描述
+.B showmount
+showmount 在远程主机上查询关于该 NFS 服务器的挂载进程状态。
+如果不使用任何参数,
+.B showmount
+显示所有从该服务器上挂载到本地的客户清单。
+.B showmount
+的输出格式设计成类似于经过 ``sort -u''
+命令格式化后一样。
+.SH 选项
+.TP
+.BR \-a 或 \-\-all
+以 host:dir 这样的格式来显示客户主机名和挂载点目录。
+.TP
+.BR \-d 或 \-\-directories
+仅显示被客户挂载的目录名。
+.TP
+.BR \-e 或 \-\-exports
+显示NFS服务器的输出清单。
+.TP
+.BR \-h 或 \-\-help
+显示帮助信息。
+.TP
+.BR \-v 或 \-\-version
+显示版本信。
+.TP
+.B \-\-no\-headers
+禁止输出描述头部信息。
+.SH 参见
+.BR rpc.mountd (8),
+.BR rpc.nfsd (8)
+.SH BUGS
+.B showmount
+所显示输出内容的完整性和准确性将视 NFS 实现的好坏而定。
+.PP
+由于
+.B showmount
+的输出是唯一的和经过排序的,
+所以无法列出当前挂载点目录是否被挂载一次以上。
+.SH 作者
+.B Rick Sladkey <jrs at world.std.com>
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B 2001/05/01
+.SH 《中国Linux论坛man手册页翻译计划》:
+.B http://cmpp.linuxforum.net
+
diff --git a/src/man8/shutdown.8 b/src/man8/shutdown.8
new file mode 100644
index 0000000..d2d7616
--- /dev/null
+++ b/src/man8/shutdown.8
@@ -0,0 +1,134 @@
+.\"{{{}}}
+.\"{{{  Title
+.TH SHUTDOWN 8 "Juli 31, 2001" "" "Linux System Administrator's Manual"
+.\"}}}
+.\"{{{  Name
+.SH NAME
+shutdown \- 关闭系统
+.\"}}}
+.\"{{{  Synopsis
+.SH 总览 SYNOPSIS
+.B /sbin/shutdown
+.RB [ \-t
+.IR sec ]
+.RB [ \-arkhncfF ]
+.I time
+.RI [ warning-message ]
+.\"}}}
+.\"{{{  Description
+.SH 描述 DESCRIPTION
+.B shutdown
+以一种安全的方式关闭系统。所有登陆用户都可以看到关机信息提示,并且 \fBlogin\fP(1) 将被阻塞。可以指定立刻关机,也可以指定系统在一定的延时后关机。所有进程都将接收到 \s-2SIGTERM\s0 信号。这可以使 \fBvi\fP(1) 等程序有时间将处于编辑状态的文件进行存储,邮件和新闻程序进程则可以将所有缓冲池内的数据进行适当的清除等等。
+.B shutdown
+通过通知 \fBinit\fP 进程,要求它改换运行级别来实现。运行级别 \fB0\fP 用来关闭系统,运行级别 \fB6\fP 用来重启系统,运行级别 \fB1\fP 用来使系统进入执行系统管理任务状态,如果没有给出 \fI-h\fP 或 \fI-r\fP 标志时,这是
+.B shutdown
+命令的默认工作状态。具体关机或重启所执行的操作请查阅 \fI/etc/inittab\fP 文件中相应的运行级别栏。
+.\"}}}
+.\"{{{  Options
+.SH 选项 OPTIONS
+.\"{{{  -a
+.IP "\fB\-a\fP
+使用 \fB/etc/shutdown.allow\fP 来验证身份。
+.\"}}}
+.\"{{{  -t sec
+.IP "\fB\-t\fP \fIsec\fP"
+通知 \fBinit\fP(8) 在转换到其它运行级别前,发送警告 (warning) 信号后延时 (\fIsec\fP) 秒数后再发送关闭 (kill) 信号。
+.\"}}}
+.\"{{{  -k
+.IP \fB\-k\fP
+并非真正关机,只向所有人显示警告信息。
+.\"}}}
+.\"{{{  -r
+.IP \fB\-r\fP
+重启。
+.\"}}}
+.\"{{{  -h
+.IP \fB\-h\fP
+停机。
+.\"}}}
+.\"{{{  -n
+.IP \fB\-n\fP
+[DEPRECATED(不应再使用)] 不调用 \fBinit\fP(8) 程序进行关机操作,而由自己进行。不建议用户使用这种关机方式,它的结果一般也不是你希望的那样。
+.\"}}}
+.\"{{{  -f
+.IP \fB\-f\fP
+重启时跳过磁盘检测。
+.\"}}}
+.\"{{{  -F
+.IP \fB\-F\fP
+重启时强制磁盘检测。
+.\"}}}
+.\"{{{  -c
+.IP \fB\-c\fP
+取消运行中的 shutdown 进程。不可能为此选项指定 \fBtime\fP 参数,但你可以在命令行输入一条解释消息来向所有用户说明。(一般的shutdown指令可以用按“+”号来进行中断)
+.\"}}}
+.\"{{{  time
+.IP \fItime\fP
+关机时间。
+.\"}}}
+.\"{{{  warning-message
+.IP \fIwarning-message\fP
+发送给所有用户的消息。
+.\"}}}
+.PP
+ \fItime\fP 参数的格式可以有很多种。首先,可以是 \fIhh:mm\fP 格式的绝对时间,其中 \fIhh\fP 指的是小时(一到二位数),\fImm\fP 指的是分钟(二位数)。第二种是 \fB+\fP\fIm\fP 格式,其中 \fIm\fP 指的是等待的分钟数。 \fBnow\fP 是 \fB+0\fP 的别名。
+.PP
+如果
+.B shutdown
+在调用时使用了延时,它将自动创建一个咨询 (advisory) 文件
+.I /etc/nologin
+,作用是禁止 \fIlogin(1)\fP 允许新用户登陆,除非
+.B shutdown 在向 init 发信号前意外中止 (就是说,它被取消或出了什么问题)。它会在调用 init 改变运行级之前删除这个文件。
+.PP
+\fB\-f\fP 标志意味着 `快速重启'。这将创建一个咨询 (advisory) 文件 \fI/fastboot\fP ,此文件在系统重启时会被检测到。启动脚本 rc 会检测是否存在这样的文件,如果有,就不会再运行 \fBfsck\fP(1),因为系统是以正常方式关闭的。这之后,启动进程会删除 \fI/fastboot\fP。
+.PP
+\fB\-F\fP 标志意味着 `强制 fsck'。这将创建一个咨询 (advisory) 文件 \fI/forcefsck\fP,此文件在系统重启时会被检测到。启动脚本 rc 会检测是否存在这个文件,如果有,就运行 \fBfsck\fP(1) 并且加上一个特殊的 `force' 标志,以使得即使正常卸载的文件系统也被检查。这之后,启动进程会删除 \fI/forcefsck\fP。
+.PP
+ \fB-n\fP 标志导致 \fBshutdown\fP 不调用 \fBinit\fP 程序进行关机,而是自己关闭所有运行中的进程。\fBshutdown\fP 接下来会关闭配额 (quota),记账 (accounting) 和交换分区,卸载所有文件系统。
+.\"}}}
+.\"{{{  Files
+.SH 访问控制 ACCESS CONTROL
+如果在 \fI/etc/inittab\fP 文件中有适当的条目,当按下特殊键 \fBCTRL-ALT-DEL\fP 时,\fBshutdown\fP 可以被 \fBinit\fP(8) 调用。这意味着可以物理地接触到终端键盘的任何人都可以关闭系统。要避免这种行为,\fBshutdown\fP 可以检测是否有授权的用户登录到了虚拟终端之一。如果 \fBshutdown\fP 在调用时带有 \fB-a\fP 参数 (可以将它添加到 \fI/etc/inittab\fR 中 shutdown 的执行命令之后),它将检测是否存在 \fI/etc/shutdown.allow\fP 文件。接下来它比较文件中的登录名与虚拟终端的登录用户列表 (在\fI/var/run/utmp\fP)。只有当授权的用户之一 \fB或者 root\fP 登录了,它才会继续。否则,它会把信息
+.sp 1
+.nf
+\fBshutdown: no authorized users logged in\fP
+.fi
+.sp 1
+写到 (物理的) 系统终端。\fI/etc/shutdown.allow\fP 的格式是每行一个用户名。允许出现空行和注释行 (以 \fB#\fP 开头)。此文件当前有最多 32 个用户的限制。
+.sp 1
+注意,如果 \fI/etc/shutdown.allow\fP 不存在,\fB-a\fP 参数将被忽略。
+.SH 文件 FILES
+.nf
+/fastboot
+/etc/inittab
+/etc/init.d/halt
+/etc/init.d/reboot
+/etc/shutdown.allow
+.fi
+.\"}}}
+.SH 注意 NOTES
+很多用户忘记了传递 \fItime\fP 参数,结果被 \fBshutdown\fP 产生的错误消息所迷惑。\fItime\fP 参数是必须的,90% 的情况下这个参数会是 \fBnow\fP。
+.PP
+Init 只能在终端模式捕获 CTRL-ALT-DEL 并且启动 shutdown。如果系统正在运行 X window System,X 服务器处理所有的按键。一些 X11 环境使得捕获 CTRL-ALT-DEL 成为可能,但是这个事件究竟做了什么依赖于那个环境。
+.PP
+.B Shutdown 没有被设计为使用 setuid。\fI/etc/shutdown.allow\fP 不用来找出谁在执行
+.B shutdown
+,它\fB*只*\fR用来检查当前在终端 (之一) 登录的用户。
+.\"{{{  Author
+.SH 作者 AUTHOR
+Miquel van Smoorenburg, miquels at cistron.nl
+.\"}}}
+.\"{{{  See also
+.SH "参见 SEE ALSO"
+.BR fsck (8),
+.BR init (8),
+.BR halt (8),
+.BR poweroff (8),
+.BR reboot (8)
+.\"}}}
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B Nov 21 2000
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/smbd.8 b/src/man8/smbd.8
new file mode 100644
index 0000000..b7966ac
--- /dev/null
+++ b/src/man8/smbd.8
@@ -0,0 +1,217 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBD" 8 "" "" ""
+.SH NAME
+smbd \- 向客户提供SMB/CIFS服务的服务器 
+.SH "总览 SYNOPSIS"
+
+
+\fBsmbd\fR [-D] [-F] [-S] [-i] [-h] [-V] [-b] [-d <debug level>] [-l <log directory>][-p <port number>] [-O <socket option>] [-s <configuration file>]
+
+
+.SH "描述  DESCRIPTION"
+
+.PP
+此程序是\fBSamba\fR(7) 套件的一部分。
+
+.PP
+\fBsmbd\fR 是向Windows客户机提供文件共享和打印服务的服务器进程。该服务器用SMB(或CIFS)协议向客户提供文件存放空间和打印服务。它与LanManager协议兼容并能向使用此协议的客户提供服务。这些客户端包括MSCLIENT 3.0 for DOS,Windows for Workgroups,Windows 95/98/ME,Windows NT,Windows 2000, OS/2,DAVE for Macintosh, 和smbfs for Linux。
+
+.PP
+用来控制服务属性的配置文件的手册页中对服务器可提供的服务进行了详细的描述(参见 \fBsmb.conf\fR (5))。此手册不描述提供的服务但集中讲述了对管理服务器运行等方面的问题描述。 
+
+.PP
+请注意对服务器运行有关的非常重要的安全性问题,同时在进行安装处理前也应该仔细阅读\fBsmb.conf\fR (5)手册。
+
+.PP
+只要有客户请求就会建立一个对话。对每个对话,每个客户获得服务器的一份复本。在对话期间此复本对所有客户产生的连接进行服务。当来自此客户的所有连接都关闭时,此客户的服务器复本也退出。 
+
+.PP
+服务器所包含的配置文件和其它任何文件都会在每次更改后自动重新装入。你可以通过对服务器发送一个SIGHUP信息来强制一次重新装入。重新装入配置文件对已建立的任何对服务的连接均无效。要么用户必须断开服务,要么将\fBsmbd\fR进程中止并重启。 
+
+.SH "选项 OPTIONS"
+
+.TP
+-D
+如果指定此选项,则服务器以后台进程方式运行。即,它会分离本身并在后台运行,在适当的端口上监听请求。对于提供比临时性的文件和打印服务更多内容的服务器,推荐将\fBsmbd\fR 以后台进程方式运行。如果在shell命令行运行\fBsmbd \fR,将默认使用这个选项。
+
+.TP
+-F
+If specified, this parameter causes the main \fBsmbd\fR process to not daemonize, i\&.e\&. double-fork and disassociate with the terminal\&. Child processes are still created as normal to service each connection request, but the main process does not exit\&. This operation mode is suitable for running \fBsmbd\fR under process supervisors such as \fBsupervise\fR and \fBsvscan\fR from Daniel J\&. Bernstein's \fBdaemontools\fR package, or the AIX process monitor\&.
+
+
+.TP
+-S
+If specified, this parameter causes \fBsmbd\fR to log to standard output rather than a file\&.
+
+
+.TP
+-i
+If this parameter is specified it causes the server to run "interactively", not as a daemon, even if the server is executed on the command line of a shell. Setting this parameter negates the implicit deamon mode when run from the command line. \fBsmbd\fR also logs to standard output, as if the \fB-S\fR parameter had been given.
+
+
+.TP
+-V
+打印smbd的版本号。
+
+
+.TP
+-s <configuration file>
+指定的文件包含了服务器所需的配置细节。此文件中的信息包含如所用的printcap文件这样的服务器详细信息,同时也对服务器所提供的服务进行了描述。请参见\fIsmb.conf\fR (5)文件。缺省的配置文件名在软件包编译时决定。
+
+.TP
+-d|--debug=debuglevel
+\fIdebuglevel\fR 是一个从0到10的整数。如果没有指定此参数则默认的值是0。 
+
+如果这个值越高,越多关于服务器的详细活动信息将被记录到文件中。在0调试级时,只记录紧急错误和严重警告。对于平日的运行服务,1调试级是个合理的等级,它只产生小量的关于执行操作的信息。
+
+1以上的调试级将产生相当多的记录数据,并且只在解决问题时才有用。3以上的调试级只被设计为让开发者使用并会产生极大数量的记录数据,而且其中很多部分非常难以理解。
+
+注意在此使用这个参数将越过在\fIsmb.conf\fR (5)文件中的\fIlog level\fR参数。
+
+.TP
+-l|--logfile=logbasename
+用来记录/调试的文件。会自动为它添加 \fB".client"\fR 扩展名。客户端不会将记录文件删除。
+
+.TP
+-h|--help
+打印smbd的命令行参数(用法)。
+
+.TP
+-b
+Prints information about how Samba was built\&.
+
+
+.TP
+-l <log directory>
+If specified, \fIlog directory\fR specifies a log directory into which the "log.smbd" log file will be created for informational and debug messages from the running server\&. The log file generated is never removed by the server although its size may be controlled by the \fImax log size\fR option in the \fBsmb.conf\fR(5) file. \fBBeware:\fR If the directory specified does not exist, \fBsmbd\fR will log to the default debug log location defined at compile time.
+
+The default log directory is specified at compile time.
+
+.TP
+-p <port number>
+\fIport number\fR 端口号是个正值整数。如果此选项未指定则缺省值为139。 
+
+这个端口号用于从客户端建立对服务器的连接。基于TCP上的SMB所用的标准(通常使用的)端口号为139,因此这是缺省值。如果你希望作为普通用户而不是root身份运行服务器的话,多数系统会要求你使用1024以上的端口号 - 如有此情况请向系统管理员取得帮助。 
+
+为了使更多客户使用服务器,而又在139以外的端口进行配置,则你需要在端口139上进行端口重定向,在rfc1002.txt的4.3.5部分有详细的描述。 
+
+除上述情况以外,此选项通常不用。
+
+.SH "文件 FILES"
+
+.TP
+\fI/etc/inetd.conf\fR
+如果通过\fBinetd\fR 超级进程来运行服务器,则此文件必须含有适当的启动信息。
+
+.TP
+\fI/etc/rc\fR
+(或其它你的系统所用的初始化脚本)。 
+
+如果在启动时以后台进程模式运行服务器,则此文件须包含适当的服务器启动次序。
+
+.TP
+\fI/etc/services\fR
+如果通过\fBinetd\fR超级进程来运行服务器,则此文件必须包含一份服务端口(如139)和协议类型(如tcp)与对应的服务名(如netbios-ssn)的映射。
+
+.TP
+\fI/usr/local/samba/lib/smb.conf\fR
+缺省的服务器配置文件 \fBsmb.conf\fR(5)的存放位置。系统安装此文件的其它通常位置为 \fI/usr/samba/lib/smb.conf\fR和\fI/etc/samba/smb.conf\fR。 
+
+此文件描述了客户可获得的服务项的情况。参见\fBsmb.conf\fR(5)获得更多情况。
+
+.SH "限制  LIMITATIONS"
+
+.PP
+在有些系统上,\fBsmbd\fR无法在一次setuid()调用以后把uid返回到root。这样的系统称为“陷门”(trapdoor)uid系统。如果你使用这样的系统,将无法同时在一个客户端(如一台PC机)以两个不同的用户身份进行连接。试图连接第二个用户将得到“访问被拒”或类似的结果。
+
+.SH "环境变量 ENVIRONMENT VARIABLES"
+
+.TP
+\fBPRINTER\fR
+如果对可打印服务没有指定打印名称,多数系统将使用此变量(如果未定义此变量则用\fBlp\fR )的值作为可用打印机的名称。但并不是服务器特定的。
+
+.SH "PAM INTERACTION"
+
+.PP
+Samba uses PAM for authentication (when presented with a plaintext password), for account checking (is this account disabled?) and for session management\&. The degree too which samba supports PAM is restricted by the limitations of the SMB protocol and the \fIobey pam restrictions\fR  \fBsmb.conf\fR(5) paramater\&. When this is set, the following restrictions apply:
+
+.TP 3
+\(bu
+\fBAccount Validation\fR: All accesses to a samba server are checked against PAM to see if the account is vaild, not disabled and is permitted to login at this time\&. This also applies to encrypted logins\&.
+
+.TP
+\(bu
+\fBSession Management\fR: When not using share level secuirty, users must pass PAM's session checks before access is granted\&. Note however, that this is bypassed in share level secuirty\&. Note also that some older pam configuration files may need a line added for session support\&.
+
+.LP
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。 
+
+.SH "诊断 DIAGNOSTICS"
+
+.PP
+通常情况下诊断信息都记录到指定好的记录文件中。这个文件的名称是在编译时指定的,但也可以用命令行来指定。
+
+.PP
+用户可以得到的诊断信息的数量和种类取决于用户执行客户端程序时所用的调试等级。如果你发现有问题的话,把调试级设到3并详细阅读记录文件里的内容。
+
+.PP
+很多信息都无须加以说明。不幸的是,在写手册页时,源代码中有着太多的诊断信息,它们保证了对每种情况都加以描述,却无法写入文档。在此时,你最好还是用grep查找源代码并检查引起诊断信息的条件。
+
+.SH "信号 SIGNALS"
+
+.PP
+向\fBsmbd\fR发送一个SIGHUP信号可以使它在一个很短时间内重新装入\fIsmb.conf\fR配置文件。
+
+.PP
+我们 \fB不\fR 推荐你使用SIGKILL (-9)来终止\fBsmbd\fR进程除非这是最后的方法,因为这样做可能导致名字数据库不一致。正确的方法是发送SIGTERM (-15)信号并等待程序自行结束。
+
+.PP
+另外,\fBsmbd\fR程序的调试记录等级也可以通过\fBsmbcontrol\fR(1) 调高或者调低。(向程序发送一个SIGUSR1或SIGUSR2信号(kill -USR2 <nmbd-pid>)的方法在Samba2.2 中已经不再使用。) 通过使用这样的方法可以诊断一些暂时的问题,同时仍然可以在一个正常的并且较低的记录等级来运行。
+
+.PP
+Note that as the signal handlers send a debug write, they are not re-entrant in \fBsmbd\fR. This you should wait until\fBsmbd\fR is in a state of waiting for an incoming SMB before issuing them\&. It is possible to make the signal handlers safe by un-blocking the signals before the select call and re-blocking them after, however this would affect performance.
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBhosts_access\fR(5), \fBinetd\fR(8), \fBnmbd\fR(8), \fBsmb.conf\fR(5), \fBsmbclient\fR(1), \fBtestparm\fR(1), \fBtestprns\fR(1), 还有互联网草案 \fIrfc1001.txt\fR, \fIrfc1002.txt\fR. 另外,CIFS (从前的 SMB) 规约可以在 http://samba.org/cifs/网页上找到链接。
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/smbmnt.8 b/src/man8/smbmnt.8
new file mode 100644
index 0000000..5211cee
--- /dev/null
+++ b/src/man8/smbmnt.8
@@ -0,0 +1,43 @@
+.TH SMBMNT 8 "26 Apr 2000" "smbmnt 2.0.7"
+.PP 
+.SH "NAME 名字" 
+smbmnt \- 装载 SMB 文件系统的协助工具。
+.PP 
+.SH "总览" 
+\fBsmbmnt\fP mount-point [ -s share ] [ -r ] [ -u uid ] [ -g gid ] [ -f mask ] [ -d mask ] 
+.PP 
+.SH "描述" 
+.PP 
+smbmnt 用于协助 smbmount 程序完成实际装载 SMB 共享资源。
+smbmnt 必须以 root 用 setuid 来安装,这样普通用户才能
+装载他们的 SMB 共享资源。它在装载点和装载目录上检查
+用户是否有写权限。
+.PP 
+smbmnt 通常由 smbmount 来调用。用户不能直接调用它。
+.PP 
+.IP "\fB-r\fP" 
+以只读方式装载文件系统
+.PP 
+.IP "\fB-u uid\fP" 
+指定要装载文件者的用户标识符。
+.PP 
+.IP "\fB-g gid\fP" 
+指定要装载文件者的组标识符。
+.PP 
+.IP "\fB-f mask\fP" 
+声明用八进制数表示的文件掩码。
+.PP 
+.IP "\fB-d mask\fP" 
+声明用八进制数表示的文件掩码。
+.PP 
+.SH "作者" 
+smbfs、smbmnt 和 smbmount 的维护人是 Andrew Tridgell tridge at samba.org
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2001/04/14
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
+
+
diff --git a/src/man8/smbmount.8 b/src/man8/smbmount.8
new file mode 100644
index 0000000..58fe0fe
--- /dev/null
+++ b/src/man8/smbmount.8
@@ -0,0 +1,207 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBMOUNT" 8 "" "" ""
+.SH NAME
+.B smbmount \- 装载一个 smbfs 文件系统
+.SH "总览 SYNOPSIS"
+
+\fBsmbmount\fR {service} {mount-point} [-o options]
+
+.SH "描述 DESCRIPTION"
+
+.PP
+\fBsmbmount\fR 可以装载一个Linux SMB文件系统。它通常在带 "-t smbfs" 选项执行 \fBmount\fR(8) 命令时被作为\fBmount.smbfs\fR执行。当然内核必须支持smbfs文件系统。
+
+.PP
+\fBsmbmount\fR使用的选项是用逗号分隔的一串key=value字串对的列表。It is possible to send options other than those listed here, assuming that smbfs supports them. If you get mount failures, check your kernel log for errors on unknown options.
+
+.PP
+\fBsmbmount\fR is a daemon. After mounting it keeps running until the mounted smbfs is umounted. It will log things that happen when in daemon mode using the "machine name" smbmount, so typically this output will end up in \fIlog.smbmount\fR. The \fB smbmount\fR process may also be called mount.smbfs.
+
+.RS
+.Sh "注意"
+
+.PP
+\fBsmbmount\fR 调用 \fBsmbmnt\fR(8)来完成实际的装载任务。你必须确保 \fBsmbmnt\fR 位于可以找到的路径中。 
+
+.RE
+
+.SH "选项 OPTIONS"
+
+.TP
+username=<arg>
+指定联接时的用户名。如果不指定,程序会用\fBUSER\fR这个环境变量。这个选项也接受"user%password", "user/workgroup"或"user/workgroup%password"形式的参数,允许密码和工作组作为用户名的一部分同时被指定。
+
+.TP
+password=<arg>
+指定SMB口令。如果不指定,将使用环境变量\fBPASSWD\fR. 如果没有指定,也没有环境变量, \fBsmbmount\fR会提示输入口令,除非使用了guest选项。 
+
+Note that passwords which contain the argument delimiter character (i.e. a comma ',') will failed to be parsed correctly on the command line. However, the same password defined in the PASSWD environment variable or a credentials file (see below) will be read correctly.
+
+.TP
+credentials=<filename>
+specifies a file that contains a username and/or password\&. 
+The format of the file is:
+.nf
+
+username = <value>
+password = <value>
+.fi
+
+
+This is preferred over having passwords in plaintext in a shared file, such as \fI/etc/fstab\fR. Be sure to protect any credentials file properly\&.
+
+
+.TP
+krb
+Use kerberos (Active Directory).
+
+
+.TP
+netbiosname=<arg>
+设定源NetBIOS主机名。默认是本机名。
+
+
+.TP
+uid=<arg>
+设定装载的文件系统的用户标识符。可以用用户名或者UID数字两种办法来指定。
+
+.TP
+gid=<arg>
+设定装载的文件系统的组标识符。可以用组名或者GID数字两种方法来指定。 
+
+.TP
+port=<arg>
+设定远程SMB系统的端口号。默认是139。 
+
+.TP
+fmask=<arg>
+设定文件掩码。这决定了本地文件系统中远程文件的权限。它不是掩码而是实际的文件权限。默认值是根据当前的umask算出来的。 
+
+.TP
+dmask=<arg>
+设定目录掩码。这决定了本地文件系统中远程目录的权限。它不是掩码而是实际的目录权限。默认值是根据当前的umask算出来的。 
+
+.TP
+debug=<arg>
+设定调试等级。对于跟踪SMB的联接问题非常有用。 建议的值是4. 如果设置得过高,会产生大量输出,可能会掩盖有用的输出。
+
+.TP
+ip=<arg>
+设定目标主机或IP地址。 
+
+.TP
+workgroup=<arg>
+设定目的工作组。
+
+.TP
+sockopt=<arg>
+设定TCP套接字的一些选项。参见\fBsmb.conf\fR(5)配置文件中的\fIsocket options\fR选项。 
+
+.TP
+scope=<arg>
+设定NetBIOS范围。
+
+.TP
+guest
+不提示口令
+
+.TP
+ro
+以只读方式装载。 
+
+.TP
+rw
+以读写方式装载。 
+
+.TP
+iocharset=<arg>
+sets the charset used by the Linux side for codepage to charset translations (NLS). Argument should be the name of a charset, like iso8859-1. (Note: only kernel 2.4.0 or later)
+
+
+.TP
+codepage=<arg>
+sets the codepage the server uses. See the iocharset option. Example value cp850. (Note: only kernel 2.4.0 or later)
+
+
+.TP
+ttl=<arg>
+sets how long a directory listing is cached in milliseconds (also affects visibility of file size and date changes)\&. A higher value means that changes on the server take longer to be noticed but it can give better performance on large directories, especially over long distances\&. Default is 1000ms but something like 10000ms (10 seconds) is probably more reasonable in many cases\&. (Note: only kernel 2\&.4\&.2 or later)
+
+
+.SH "ENVIRONMENT VARIABLES"
+
+.PP
+The variable \fBUSER\fR may contain the username of the person using the client\&. This information is used only if the protocol level is high enough to support session-level passwords\&. The variable can be used to set both username and password by using the format username%password\&.
+
+.PP
+The variable \fBPASSWD\fR may contain the password of the person using the client\&. This information is used only if the protocol level is high enough to support session-level passwords\&.
+
+.PP
+The variable \fBPASSWD_FILE\fR may contain the pathname of a file to read the password from\&. A single line of input is read and used as the password\&.
+
+.SH "BUGS"
+
+.PP
+Passwords and other options containing , can not be handled\&. For passwords an alternative way of passing them is in a credentials file or in the PASSWD environment\&.
+
+.PP
+The credentials file does not handle usernames or passwords with leading space\&.
+
+.PP
+One smbfs bug is important enough to mention here, even if it is a bit misplaced:
+
+.TP 3
+\(bu
+Mounts sometimes stop working\&. This is usually caused by smbmount terminating\&. Since smbfs needs smbmount to reconnect when the server disconnects, the mount will eventually go dead\&. An umount/mount normally fixes this\&. At least 2 ways to trigger this bug are known\&.
+
+.LP
+
+.PP
+Note that the typical response to a bug report is suggestion to try the latest version first\&. So please try doing that first, and always include which versions you use of relevant software when reporting bugs (minimum: samba, kernel, distribution)
+
+.SH "SEE ALSO"
+
+.PP
+Documentation/filesystems/smbfs\&.txt in the linux kernel source tree may contain additional options and information\&.
+
+.PP
+FreeBSD also has a smbfs, but it is not related to smbmount
+
+.PP
+For Solaris, HP-UX and others you may want to look at \fBsmbsh\fR(1) or at other solutions, such as Sharity or perhaps replacing the SMB server with a NFS server\&.
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/smbpasswd.8 b/src/man8/smbpasswd.8
new file mode 100644
index 0000000..2cc0d29
--- /dev/null
+++ b/src/man8/smbpasswd.8
@@ -0,0 +1,199 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBPASSWD" 8 "" "" ""
+.SH NAME
+smbpasswd \- 改变用户的SMB口令 
+.SH "总览 SYNOPSIS"
+
+
+\fBsmbpasswd\fR [-a] [-x] [-d] [-e] [-D debuglevel] [-n] [-r <remote machine>] [-R <name resolve order>] [-m] [-U username[%password]] [-h] [-s] [-w pass] [-i] [-L] [username]
+         
+.SH "描述 DESCRIPTION"
+
+.PP
+此程序是\fBSamba\fR(7)套件的一部分。 
+
+.PP
+smbpasswd程序有几个不太一样的功能,这取决于它被\fBroot\fR账号还是其它账号来使用。当普通用户运行它时,用户可以通过SMB会话在任何保存SMB口令的机器上改变他们的口令。
+
+.PP
+默认情况下(不带参数运行)它会尝试在本地改变当前用户的SMB口令。这和\fBpasswd\fR(1)程序的工作方式类似。不过,\fB smbpasswd\fR和具有\fBsetuid root\fR 特性的passwd还是不一样的,它工作在客户机-服务器模式, 并且与本地运行中的\fBsmbd\fR(8)通信。为了运行成功,smbd守护程序必须正在本地主机上运行。在UNIX主机上通常用\fBsmbpasswd\fR(5) 来存放SMB的加密口令。
+
+.PP
+当普通用户不带选项来运行这个程序时,smbpasswd会向他们提示输入原SMB口令并询问所需的新口令两次,来确保输入正确. 输入时屏幕并不回显。如果你用了一个空SMB口令(在smbpasswd文件中会指定字串“NO PASSWORD”)的话,在程序提示输入原口令时可以直接输入<Enter>键。
+
+.PP
+普通用户也可以在远程主机(例如Windows NT主域控制器)上用smbpasswd来改他们的SMB口令。详细情况请参见以下的(\fI-r\fR)和\fI-U\fR两个选项。
+
+.PP
+当root运行这个程序时,smbpasswd可以在smbpasswd文件中增删用户,也可以改变用户属性。这时,\fB smbpasswd\fR 会直接访问本地smbpasswd文件,即使smbd并没有在运行时也可以。
+
+.SH "选项 OPTIONS"
+
+.TP
+-a
+在这个选项后跟上用户名用来实现在本地smbpasswd文件中增加用户,并且同时设置口令(提示原口令时用<Enter>)。如果smbpasswd文件中已经存在了这个用户时,命令就变成通常的修改口令模式。注意,默认的passdb后端要求所要加入的SMB用户必须是系统口令文件中(通常是\fI/etc/passwd\fR)已经存在的用户否则加入操作将会失败。
+
+只有root运行smbpasswd程序时才可以使用这个选项。 
+
+.TP
+-x
+This option specifies that the username following should be deleted from the local smbpasswd file\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-d
+这个选项后跟用户名用来\fB禁止\fR存在于smbpasswd文件中的这个账号。通过在smbpasswd文件的账号控制部分写入 \fB'D'\fR标志来实现这个功能。一旦账号被禁止,所有使用这个账号作SMB身份验证的尝试都将失败。
+
+如果smbpasswd文件还是旧格式的话(比如Samba 2.0之前版本),在用户口令项中没有这样的账号控制部分可以作任何标志,这个命令会*失败*。关于口令文件的新格式和旧格式细节可以参见\fBsmbpasswd\fR(5) 。
+
+只有root运行smbpasswd程序时才可以使用这个选项。
+
+.TP
+-e
+这个选项后跟用户名用来在本地smbpasswd文件中的这个账号被禁止时重新\fB允许\fR使用。如果账号并未被禁止的话,使用这个选项不会有什么结果。被允许的账号将可以通过SMB的身份验证。
+
+使用老格式的口令文件时,\fB smbpasswd\fR 将运行失败。关于口令文件的新格式和旧格式细节可以参见\fBsmbpasswd\fR(5)。 
+
+只有root运行smbpasswd程序时才可以使用这个选项。 
+
+.TP
+-D debuglevel
+\fIdebuglevel\fR 是一个从0到10的整数。如果没有指定此参数则默认的值是0。 
+
+如果这个值越高,越多关于smbpasswd的详细活动信息将被记录到文件中。在0调试级时,只记录紧急错误和严重警告。
+
+1以上的调试级将产生相当多的记录数据,并且只在解决问题时才有用。3以上的调试级只被设计为让开发者使用并会产生极大数量的记录数据,而且其中很多部分非常难以理解。
+
+.TP
+-n
+用这个选项后跟用户名来把这个账号的口令设为空(也就是没有口令)。程序会把本地smbpasswd文件中该口令项的第一部分改为“NO PASSWORD”。
+
+注意如果设置了"NO PASSWORD"之后,要允许用户以空口令登录到Samba服务器,管理员必须在\fIsmb.conf\fR配置文件的[global]段中设置以下的参数:
+
+\fBnull passwords = yes\fR
+
+只有root运行smbpasswd程序时才可以使用这个选项。 
+
+.TP
+-r remote machine name
+使用这个选项来让用户指定他们所希望改变口令的主机,不用此参数时默认对本地更改口令。SMB/CIFS服务器会试图联接以\fIremote machine name\fR作为NetBIOS名字的主机以更改口令。Samba套件中的所有程序都使用标准的名字解析机制来把这样的名字转换成IP地址。参见\fI-R name resolve order\fR参数来获得改变解析机制的详细信息。
+
+用这个选项更改密码的账号就是当前登录UNIX的账号。要改变其它帐号的密码可以参见\fI-U username\fR参数。
+
+注意,如果要改变一个NT域账号,指定的远程主机必须是域中的主域控制器,因为备份域控制器只维护用户账号数据库的只读复本,而不能更改。
+
+\fB注意\fR的是Windows 95/98实际根本没有口令数据库,所以不可能更改远程Win95/98主机上的口令
+
+.TP
+-R name resolve order
+用这个选项来让使用smbclient的用户在查询主机NetBIOS名字用于联接时,决定使用怎样的名字解析服务。
+
+这些名字解析选项是:"lmhosts","host","wins"和"bcast".它们决定了名字解析是以如下方式的:
+
+\fBlmhosts\fR : 在samba的lmhosts文件中查找IP地址.如果lmhosts文件的内容行中没有名字类型附加在NetBIOS名上时(参见\fBlmhosts\fR (5)中的详细描述),任何类型的名字都可以匹配这个查询.
+
+\fBhost\fR : 执行标准的主机名到IP地址的解析操作,此操作会使用系统的\fI/etc/hosts\fR,NIS或者是DNS来查询.具体方法取决于操作系统,在IRIX和Solaris中解析名字的方法可能是由\fI/etc/nsswitch.conf\fR文件来控制的.注意此方法只适用于对被查询的NetBIOS名字类型为0x20(服务器)时才有用,其它类型都会被忽略.
+
+\fBwins\fR : 向列在\fIwins server\fR选项中的服务器查询一个名字对应的IP地址.如果没有指定WINS服务器,那么此方法就被略过了.
+
+\fBbcast\fR : 向在\fIinterfaces\fR选项中列出的每一个已知本地网络接口进行广播来作查询.这是最不可信的名字解析方法,除非目标主机就在本地子网中.
+
+默认的顺序是 \fBlmhosts, host, wins, bcast\fR。如果没有这个参数,\fBsmb.conf\fR(5) 文件中也没有选项,将尝试这个顺序的名字解析。
+
+.TP
+-m
+这个选项来把账号改为一个MACHINE账号。通常当Samba作为Windows NT主域控制器的时候可以使用它。
+
+只有root运行smbpasswd程序时才可以使用这个选项。 
+
+.TP
+-U username
+这个选项只能和 \fI-r\fR选项联合使用。当从远程主机更改口令时,用它来允许用户指定要改变的远程主机口令的用户账号。这使得在不同的系统上使用不同的账号的用户可以口令。 
+
+.TP
+-h
+使用这个选项可以打印出\fB smbpasswd\fR的帮助信息,注意选择正确的帮助: root用户和普通用户使用的。
+
+.TP
+-s
+使用这个选项会使smbpasswd保持安静(不发出提示),在标准输入上读取原口令和新口令。而不是从\fI/dev/tty\fR上读口令(象\fBpasswd\fR(1)那样)。使用脚本来处理smbpasswd时可以用它。
+
+.TP
+-w password
+This parameter is only available if Samba has been configured to use the experimental \fB--with-ldapsam\fR option\&. The \fI-w\fR switch is used to specify the password to be used with the \fIldap admin dn\fR\&. Note that the password is stored in the \fIsecrets\&.tdb\fR and is keyed off of the admin's DN\&. This means that if the value of \fIldap admin dn\fR ever changes, the password will need to be manually updated as well\&.
+
+
+.TP
+-i
+This option tells smbpasswd that the account being changed is an interdomain trust account\&. Currently this is used when Samba is being used as an NT Primary Domain Controller\&. The account contains the info about another trusted domain\&.
+
+
+This option is only available when running smbpasswd as root\&.
+
+
+.TP
+-L
+Run in local mode\&.
+
+
+.TP
+username
+This specifies the username for all of the \fBroot only\fR options to operate on\&. Only root can specify this parameter as only root has the permission needed to modify attributes directly in the local smbpasswd file\&.
+
+
+.SH "注意 NOTES"
+
+.PP
+由于非root用户是以客户机-服务器模式运行\fBsmbpasswd\fR与本地smbd通信,因此smbd守护程序必须在运行状态。通常会出现的一个问题是在对可以连接到本地运行的smbd的主机进行限制的时候,通过在\fBsmb.conf\fR(5) 配置文件中指定\fIallow hosts\fR或者\fIdeny hosts\fR参数但是忘记了允许“localhost”对smbd进行连接。
+
+.PP
+另外smbpasswd命令只有在已经把samba设成使用加密口令时才能发挥作用。
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBsmbpasswd\fR(5), \fBSamba\fR(7)\&.
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/smbspool.8 b/src/man8/smbspool.8
new file mode 100644
index 0000000..8c30aae
--- /dev/null
+++ b/src/man8/smbspool.8
@@ -0,0 +1,119 @@
+.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "SMBSPOOL" 8 "" "" ""
+.SH NAME
+smbspool \- 将一个打印文件发送到一台SMB打印机
+.SH "总览 SYNOPSIS"
+
+\fBsmbspool\fR {job} {user} {title} {copies} {options} [filename]
+
+.SH "描述 DESCRIPTION"
+
+.PP
+此程序是\fBSamba\fR(7)套件的一部分。 
+
+.PP
+smbspool 是个非常小的打印假脱机程序用于向SMB共享打印机发送打印文件的作业。命令行参数的位置是位置无关的,这样做是为了和CUPS(Common UNIX Printing System)兼容,但是你可以在任何打印系统中,在程序或者脚本中使用它。
+
+.PP
+\fBDEVICE URI\fR
+
+.PP
+smbspool 使用“smb”方法的统一资源标识符(“URI”,Uniform Resource Identifier)来指定操作目标。这种描述有以下这样的形式:
+
+.TP 3
+\(bu
+smb://server/printer
+
+.TP
+\(bu
+smb://workgroup/server/printer
+
+.TP
+\(bu
+smb://username:password@server/printer
+
+.TP
+\(bu
+smb://username:password@workgroup/server/printer
+
+.LP
+
+.PP
+smbspool 会试图从argv[0]参数中得到URI。如果argv[0]包含了程序名的话,它将到\fB DEVICE_URI\fR环境变量中取得URI。
+
+.PP
+程序中可以使用\fBexec(2)\fR函数来将URI传递给argv[0],shell脚本则必须在运行smbspool之前设置\fBDEVICE_URI\fR环境变量。
+
+.SH "选项 OPTIONS"
+
+.TP 3
+\(bu
+job参数(argv[1])包含了作业ID号,smbspool当前还没有用到。
+
+.TP
+\(bu
+user参数(argv[2])包含了打印用户名,smbspool当前还没有用到。 
+
+.TP
+\(bu
+title参数(argv[3])包含了在发送打印作业时作为远程文件名传递的打印作业标题字串。
+
+.TP
+\(bu
+opies参数(argv[4])包含了需要打印文件的份数。如果没有提供文件名,smbspool就不使用这个参数。 
+
+.TP
+\(bu
+options参数(argv[5])包含了打印选项(以一个字串来描述),smbspool当前还没有用到。
+
+.TP
+\(bu
+filename参数(argv[6])包含了要打印的文件名。如果不指定文件名则从标准输入中读取信息作为打印的内容。
+
+.LP
+
+.SH "版本 VERSION"
+
+.PP
+此手册页是针对samba套件版本3.0的。
+
+.SH "参见 SEE ALSO"
+
+.PP
+\fBsmbd\fR(8) 和\fBSamba\fR(7).
+
+.SH "作者 AUTHOR"
+
+.PP
+samba软件和相关工具最初由Andrew Tridgell创建。samba现在由Samba Team 作为开源软件来发展,类似linux内核的开发方式。
+
+.PP
+最初的samba手册页是 Karl Auer写的。
+手册页源码已经转换为YODL格式(另一种很好的开源软件,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。
+Gerald Carter 在Samba2.2中将它转化为DocBook 格式。
+Alexander Bokovoy 在Samba 3.0中实现了DocBook XML4.2 格式的转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/smbumount.8 b/src/man8/smbumount.8
new file mode 100644
index 0000000..519eefd
--- /dev/null
+++ b/src/man8/smbumount.8
@@ -0,0 +1,41 @@
+.\" This manpage has been automatically generated by docbook2man-spec
+.\" from a DocBook document.  docbook2man-spec can be found at:
+.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
+.\" Please send any bug reports, improvements, comments, patches, 
+.\" etc. to Steve Cheng <steve at ggi-project.org>.
+.TH SMBUMOUNT 8 "17 Apr 2001" "smbumount 2.2.0"
+.SH NAME
+smbumount \- 为普通用户卸载smb文件系统
+.SH 总览
+.sp
+\fBsmbumount\fR \fB装载点\fR
+.SH 描述
+.PP
+普通用户使用这个程序可以卸载smb文件系统。它在工作时会suid到root身份,
+并且向普通linux用户提供了对资源更多的控制能力。在suid方面,它拥有足
+够的安全性,因此,只有装载过文件系统的用户才可以调用它来进行卸载。而
+对于root来说,就没有必要用这个程序了。unix中的通用umount程序也工作得
+不错,但在suid到root方面的确也是有问题的。
+.SH 选项
+.TP
+\fB装载点\fR
+要卸载的目标目录。
+.SH 参见
+.PP
+\fBsmbmount(8)\fR
+.SH 作者
+.PP
+Volker Lendecke、Andrew Tridgell、Michael H. Warfield和其他人。
+.PP
+关于smb文件系统方面的工具,如\fBsmbmount\fR、\fBsmbumount\fR、和\fBsmbmnt\fR,
+其维护者是Urban Widmark <URL:mailto:urban at teststation.com>。要提问题,
+请到SAMBA的邮件列表<URL:mailto:samba at samba.org>。
+.PP
+Gerald Carter在Samba 2.2中对本手册页进行了转换。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+2001/05/20
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/svnserve.8 b/src/man8/svnserve.8
new file mode 100644
index 0000000..475b59c
--- /dev/null
+++ b/src/man8/svnserve.8
@@ -0,0 +1,53 @@
+.\" You can view this file with:
+.\" nroff -man [filename]
+.\"
+.TH svnserve 8
+.SH NAME
+svnserve \- 使用 `svn' 访问仓库时的服务器
+.SH "SYNOPSIS 总览"
+.TP
+\fBsvnserve\fP [\fIoptions\fP]
+.SH "DESCRIPTION 描述"
+\fBsvnserve\fP 允许使用 svn 网络协议访问 Subversion 仓库。它可以运行为独立的服务器进程,也可以在 xinetd 控制下运行。在启动 \fBsvnserver\fP 时,必须选择操作的模式。下列选项也被识别:
+.PP
+.TP 5
+\fB\-d\fP, \fB\-\-daemon\fP
+使得 \fBsvnserve\fP 以守护进程方式运行。\fBsvnserve\fP 使自身运行在后台,在 svn 端口 (默认是 3690) 监听并提供服务。
+.PP
+.TP 5
+\fB\-\-listen-port\fP=\fIport\fP
+使得 \fBsvnserve\fP 在以守护进程方式运行时监听 \fIport\fP 端口。
+.PP
+.TP 5
+\fB\-\-listen-host\fP=\fIhost\fP
+使得 \fBsvnserver\fP 监听 \fIhost\fP 指定的接口,可以是一个主机名或是一个 IP 地址。
+.PP
+.TP 5
+\fB\-\-foreground\fP
+当与 \fB\-d\fP 一同使用时,这个选项使得 \fBsvnserve\fP 在前台运行。这个选项主要用于调试。
+.PP
+.TP 5
+\fB\-i\fP, \fB\-\-inetd\fP
+使得 \fBsvnserve\fP 使用标准输入/标准输出文件描述符,当它在 xinetd 控制下运行时应该这样做。
+.PP
+.TP 5
+\fB\-h\fP, \fB\-\-help\fP
+显示用法信息,然后退出。
+.PP
+.TP 5
+\fB\-r\fP \fIroot\fP, \fB\-\-root\fP=\fIroot\fP
+为它提供服务的所有仓库设置虚根目录。客户端给出的 URL 中的路径名将被解释为相对于此 “根” 目录的路径,不允许超出根目录的范围。
+.PP
+.TP 5
+\fB\-t\fP, \fB\-\-tunnel\fP
+使得 \fBsvnserver\fP 运行于隧道模式,操作与 xinetd 模式类似 (在标准输入/标准输出提供一个连接),但是将连接视为已认证的,认证用户就是当前的 uid。这个选项是在客户端运行于一个隧道代理上时使用。
+.PP
+.TP 5
+\fB\-T\fP, \fB\-\-threads\fP
+当运行在守护进程模式时,使得 \fBsvnserve\fP 为每个连接产生新线程而不是新进程。\fBsvnserve\fP 进程在启动时仍然将自身放到后台。
+.PP
+.TP 5
+\fB\-X\fP, \fB\-\-listen\-once\fP
+使得 \fBsvnserve\fP 接受 svn 端口的一个连接,提供服务,然后退出。这个选项主要用于调试。
+.PP
+一旦客户端通过传递 URL 选择了一个仓库,\fBsnvserve\fP 读取这个仓库中名为 \fBconf/svnserve.conf\fP 的文件,判断特定于仓库的设置信息,例如使用什么认证数据库,接受什么样的认证规则。参见 \fBsvnserve.conf\fP(5) 来查看文件格式的详细信息。
diff --git a/src/man8/swapoff.8 b/src/man8/swapoff.8
new file mode 100644
index 0000000..1a06b7e
--- /dev/null
+++ b/src/man8/swapoff.8
@@ -0,0 +1 @@
+.so man8/swapon.8
diff --git a/src/man8/swapon.8 b/src/man8/swapon.8
new file mode 100644
index 0000000..e53c50b
--- /dev/null
+++ b/src/man8/swapon.8
@@ -0,0 +1,136 @@
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"	This product includes software developed by the University of
+.\"	California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)swapon.8	6.3 (Berkeley) 3/16/91
+.\"
+.\" Sun Dec 27 12:31:30 1992: Modified by faith at cs.unc.edu
+.\" Sat Mar  6 20:46:02 1993: Modified by faith at cs.unc.edu
+.\" Sat Oct  9 09:35:30 1993: Converted to man format by faith at cs.unc.edu
+.\" Sat Nov 27 20:22:42 1993: Updated authorship information, faith at cs.unc.edu
+.\" Mon Sep 25 14:12:38 1995: Added -v and -p information
+.\" Tue Apr 30 03:32:07 1996: Added some text from A. Koppenhoefer
+.\"
+.TH SWAPON 8 "25 September 1995" "Linux 1.x" "Linux Programmer's Manual"
+.SH NAME
+swapon, swapoff \- 使用/关闭用于分页和交换的文件和设备
+
+.SH "总览 (SYNOPSIS)"
+.B /sbin/swapon [\-h \-V]
+.br
+.B /sbin/swapon \-a [\-v]
+.br
+.BI "/sbin/swapon [\-v] [\-p " "priority" "] " " specialfile " ...
+.br
+.B /sbin/swapon [\-s]
+.br
+.B /sbin/swapoff [\-h \-V]
+.br
+.B /sbin/swapoff \-a
+.br
+.BI /sbin/swapoff " specialfile " ...
+
+.SH "描述 (DESCRIPTION)"
+.B Swapon
+指出 用于 分页和交换 的 设备.
+一般 在 系统 多用户运行级 的 初始化文件
+.I /etc/rc
+中 调用
+.B swapon ,
+使 所有的 交换设备 生效, 因此 分页和交换 活动 可以 在 多个 设备和文件
+之中 进行.
+
+常用的形式有:
+.TP
+.B \-h
+显示帮助
+.TP
+.B \-V
+显示版本
+.TP
+.B \-s
+显示交换设备的使用情况.这个选项需要
+.I /proc/swaps
+(小于 2.1.25 的 内核 可能没有).
+.TP
+.B \-a
+使
+.I /etc/fstab
+中, 所有 标记了 'sw' 的 交换设备 生效.
+.TP
+.BI \-p " priority"
+指定
+.BR swapon 
+的 优先级. 这个 选项 要求
+.B swapon
+在 1.3.2 或 更高 的 内核 上 编译 和 使用.
+.I priority
+介于 0 和 32767 之间. 关于 交换优先级 的 完整 描述 请 参看
+.BR swapon (2) .
+在
+.I /etc/fstab
+文件 中, 交换设备 的 选项域 里 加上
+.BI pri= value ,
+用
+.BR "swapon -a"
+可以 使其 生效.
+.PP
+.B Swapoff
+禁止 在 指定的 设备和文件 上 做 交换, 如果 指定了
+.B \-a
+选项, 
+.I /etc/fstab
+中 所有的 交换设备 皆被 关闭.
+.SH "注意 (NOTE)"
+别在 包含 空洞(hole) 的 文件 上 使用
+.B swapon .
+.SH "参见 (SEE ALSO)"
+.BR swapon "(2), " swapoff "(2), " fstab "(5), " init "(8), " mkswap (8),
+.BR rc "(8), " mount (8)
+.SH "文件 (FILES)"
+.I /dev/hd??
+标准分页设备
+.br
+.I /dev/sd??
+标准 (SCSI) 分页设备
+.br
+.I /etc/fstab
+ascii 格式的 文件系统 描述表
+.SH "历史 (HISTORY)"
+.B swapon
+命令 源于 4.0BSD.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/11/18
+.SH "《中国Linux论坛man手册页翻译计划》"
+.BI http://cmpp.linuxforum.net
+
diff --git a/src/man8/swat.8 b/src/man8/swat.8
new file mode 100644
index 0000000..79e5ce3
--- /dev/null
+++ b/src/man8/swat.8
@@ -0,0 +1,176 @@
+.TH "swat (8)" "23 Oct 1998" "Samba"
+3A
+.SH NAME
+swat - 基于web的samba管理工具
+.SH 总览
+.B swat [
+.B -s 
+.I smb config file
+] [
+.B -a
+]
+.SH 描述
+.PP
+此程序是
+.B samba
+套件的一部分。 
+.PP
+.B swat
+允许
+.B samba
+管理员通过web浏览器配置复杂的
+.BI smb.conf
+文件。另外,
+.B swat
+配置页可以帮助管理员检查链接所有在
+.BI smb.conf
+文件中的可配置项并可以简单地查看任何的改变效果。
+.PP
+.B swat
+在
+.B inetd
+中运行。
+.SH 选项 
+.TP
+.B -s 
+.I smb configuration file 
+
+检查编译时建立的默认配置文件路径。 
+
+指定的文件包含了
+.B smbd
+服务器所需的详细配置信息。
+.B swat
+可以修改这个文件。文件包含了服务
+器的特殊信息如使用的
+.BI printcap
+文件,还有所有提供的服务的描述。请参见
+.BI smb.conf (5)
+获得更
+多信息。
+.TP
+.B -a 
+用这个选项禁止授权验证并使
+.B swat
+在演示模式下运行。在此模式下任何人都可以修改
+.BI smb.conf
+配置文件。不要在正式的服务器上使用这个选项哦。 
+.SH 安装
+在编译完
+.BR SWAT
+后你需要运行
+.BI "make install"
+来安装
+.B swat
+二进制程序和各种帮助文件和图片。默认情况下这些东东都被放入以下目录中:
+.br
+/usr/local/samba/bin/swat
+.br
+/usr/local/samba/swat/images/*
+.br
+/usr/local/samba/swat/help/*
+
+.SH 关于INETD的安装
+.PP
+你需要编辑
+.BI /etc/inetd.conf
+和
+.BI /etc/services
+来允许通过
+.BI inetd
+来运行
+.BR SWAT。
+.PP
+在/etc/services中你需要象这样加入一行内容:
+.br
+.BI "swat 901/tcp"
+.PP
+注意对于NIS/YP的用户来说,可能需要重新建立NIS服务映射,因为这比修改本地/etc/services文件更好。
+.PP
+对于端口号的选择并不十分重要,除了它应该小于
+.B 1024
+以外就是不应该是当前正在使用的端口号(使用
+.B 1024
+以上的端口号可能出现未知的安全漏洞,这取决于你的
+.BI inetd
+守护程序的运行情况)。
+.PP
+在/etc/inetd.conf文件中你应该添加这样的内容:
+.br
+.B "swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat "
+.PP
+在编辑
+.B /etc/services
+和
+.B /etc/inetd.conf
+文件时有件事需要做一下,就是向
+.B inetd
+发送一个
+.BR HUP
+信号。可以用“
+.BI kill -1 PID
+”命令来做这步操作,当然了,
+.BR PID
+就是
+.B inetd
+守护程序的进程号。
+.SH 运行
+.PP
+要运行
+.B swat
+你只要在自己的web浏览器中查看
+.BI "http://localhost:901/"
+地址。
+.PP
+注意你可以从任何可联网主机的IP上访问
+.B swat
+,但是从远程主机联接的话,在线的口令传送可以很容易地被监听。 
+.SH 相关文件
+.pp
+.B /etc/inetd.conf 
+.br
+此文件包含了超级守护程序所使用的适当的启动信息。
+.pp
+.B /etc/services 
+.br
+这个文件必须包含一系列服务名(如
+.B swa
+t)、服务端口(如
+.B 901
+)和协议类型(如
+.B tcp
+)的映射。 
+.PP
+.B /usr/local/samba/lib/smb.conf 
+.br
+默认情况下
+.B swat
+会编辑这个目录下的
+.BI smb.conf
+服务器配置文件。另外一些系统安装此文件的位置通
+常是
+.BI "/usr/samba/lib/smb.conf和/etc/smb.conf。"
+.PP
+这个配置文件描述了客户可以获得的所有服务。参见
+.BI smb.conf (5)
+获得详细信息。
+.SH 警告
+swat会重写你的smb.conf文件。它将重新安排各项内容并删掉所有注释,"include="和"copy="选项。如果你想谨慎一些的话先备份或者不要用swat!
+.SH 版本
+此手册页是针对samba套件版本2.0的。 
+.SH 另见
+inetd (8), nmbd (8), smb.conf (5). 
+.SH 作者
+.PP
+samba软件和相关工具最初由Andrew Tridgell samba-bugs at samba.org创建。samba现在由开发组作为类似Linux内核开发采用的开放源代码计划方式来发展。 
+.PP
+samba手册页最初由Karl Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy Allison更新到samba2.0版本。 
+.PP
+请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。
+
+.SH "[中文版维护人]"
+.B meaculpa <meaculpa at 21cn.com>
+.SH "[中文版最新更新]"
+.B 2000/12/08
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/sync.8 b/src/man8/sync.8
new file mode 100644
index 0000000..3c2166d
--- /dev/null
+++ b/src/man8/sync.8
@@ -0,0 +1,94 @@
+.\" Reboot/halt and Linux information extracted from Rick Faith's original
+.\" sync(8) manpage, dating back to the Linux 0.99 days. The Linux-specific
+.\" information is attributed to Linus Torvalds
+.\" Copyright 1992, 1993 Rickard E. Faith (faith at cs.unc.edu)
+.\"; 中文版版权所有 scorpio, Laser www.linuxforum.net 2000
+.\" May be distributed under the GNU General Public License
+.TH SYNC 8 "November 1998" "GNU fileutils 4.0"
+.SH NAME 名称
+sync \- 同步内存与磁盘的数据
+.SH 总览
+.B "sync [\-\-help] [\-\-version]"
+.SH
+描述
+.B sync
+把任何在内存中缓冲的数据写到磁盘上。
+这能包括(但不仅限于)修改了的超级块,
+i 节点,和延迟的读写。这必须由内核执行;
+.B sync
+除了执行
+.BR sync (2)
+系统调用外什么都不做.
+.PP
+内核把数据保持在内存里以避免磁盘读写(磁盘相对来说比较慢)
+这能改进性能,但如果计算机跨掉,结果就可能是数据丢失,
+或者文件系统损坏.
+.B sync
+保证任把何在内存里的东西写入磁盘.
+.PP
+.B sync
+应该在处理器异常停止前调用
+(例如,在因为调试新的内核代码引起内核恐慌
+(?可能是灾难发生吧)之前)
+一般而言,处理器应该使用
+.BR shutdown (8)
+或者
+.BR reboot (8)
+或者
+.BR halt (8)
+命令来停止, 那会试图,在调用
+.BR sync (2)
+前让系统处于静止状态.
+(这些命令有好几种不同的实现,
+请参考你的文档,在一些系统上你
+不能直接调用
+.BR reboot (8)
+和
+.BR halt (8)
+.)
+.SH "GNU 标准选项"
+.TP
+.B "\-\-help"
+在标准输出上印出用法信息并退出。
+.TP
+.B "\-\-version"
+在标准输出上印出版本信息并退出。
+.TP
+.B "\-\-"
+结束选项列表
+.SH 环境(变量)
+变量 LANG, LC_ALL, LC_CTYPE 和 LC_MESSAGES 有通常的意义.
+.SH "遵循"
+POSIX 1003.2
+.SH 注意
+在 Linux 上,
+.B sync
+仅保证安排脏数据块进入等待:
+实际上在真正写入前要花费一点时间.
+.BR reboot (8)
+和
+.BR halt (8)
+在调用
+.BR sync (2)
+之后会睡眠几秒以考虑这些延时.
+.PP
+这份
+.B sync
+的描述可以在
+file\%utils-4.0 包你找到;
+其他版本也许有些微的差别.
+把修正和新增邮到 aeb at cwi.nl.
+程序缺陷邮到 fileutils-bugs at gnu.ai.mit.edu.
+.SH "又见"
+.BR sync (2),
+.BR halt (8),
+.BR reboot (8),
+.BR update (8)
+.br
+
+.SH "[中文版维护人]"
+.B Scorpio <rawk at chinese.com>
+.SH "[中文版最新更新]"
+2000/11/26
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/tcpdump.8 b/src/man8/tcpdump.8
new file mode 100644
index 0000000..8cd7152
--- /dev/null
+++ b/src/man8/tcpdump.8
@@ -0,0 +1,1111 @@
+.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributions
+.\" retain the above copyright notice and this paragraph in its entirety, (2)
+.\" distributions including binary code include the above copyright notice and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials mentioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of California,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH TCPDUMP 8  "30 June 1997"
+.SH NAME
+tcpdump \- 转储网络上的数据流
+.SH 总览 (SYNOPSIS)
+.na
+.B tcpdump
+[
+.B \-adeflnNOpqStvx
+] [
+.B \-c
+.I count
+] [
+.B \-F
+.I file
+]
+.br
+.ti +8
+[
+.B \-i
+.I interface
+] [
+.B \-r
+.I file
+]
+[
+.B \-s
+.I snaplen
+]
+.br
+.ti +8
+[
+.B \-T
+.I type
+]
+[
+.B \-w
+.I file
+]
+[
+.I expression
+]
+.br
+.ad
+.SH 描述 (DESCRIPTION)
+.LP
+\fITcpdump\fP 显示 网络接口 上 符合 布尔表达式 \fIexpression\fP 的 报头.
+.LP
+.B 对于 SunOS 的 nit 或 bpf 界面:
+要 运行
+.I tcpdump ,
+你 必须 有 
+.I /dev/nit
+或
+.IR /dev/bpf* 
+的 读访问 权限.
+
+.B 对于 Solaris 的 dlpi:
+你 必须 有 网络仿真设备 (network pseudo device), 如
+.IR /dev/le 
+的 读访问 权限.
+
+.B 对于 HP-UX 的 dlpi:
+你 必须 是 root, 或者 把它 安装成 root 的 setuid 程序.
+.B 对于 IRIX 的 snoop:
+你 必须 是 root, 或者 把它 安装成 root 的 setuid 程序.
+.B 对于 Linux:
+你 必须 是 root, 或者 把它 安装成 root 的 setuid 程序.
+
+.B 对于 Ultrix 和 Digital UNIX:
+一旦 超级用户 用
+.IR pfconfig (8)
+开放了 杂凑模式 (promiscuous-mode),
+任何用户 都可以 运行
+.BR tcpdump .
+
+.B 对于 BSD:
+你 必须 有 
+.IR /dev/bpf* 
+的 读访问 权限.
+
+.SH 选项 (OPTIONS)
+.TP
+.B \-a
+试着 把 网络和广播地址 转换成 名称.
+.TP
+.B \-c
+当 收到 \fIcount\fP个 报文 后 退出.
+.TP
+.B \-d
+把 编译好的 报文匹配模板 (packet-matching code) 翻译成 可读形式,
+传往 标准输出, 然后退出.
+.TP
+.B \-dd
+把 报文匹配模板 (packet-matching code) 以 
+.B C
+程序片断 的 形式 输出.
+.TP
+.B \-ddd
+把 报文匹配模板 (packet-matching code) 以 十进制数 形式 输出 
+(前面 加上 总数).
+.TP
+.B \-e
+每行 都 显示 链路层报头.
+.TP
+.B \-f
+用 数字形式 显示 '外部的' 互联网地址, 而不是 字符形式 (这个 选项 用来
+绕开 脑壳坏掉的 SUN 黄页服务器 的 问题 \(em 一般说来, 它 翻译 外部网络
+数字地址 的 时候 会 长期挂起).
+.TP
+.B \-F
+指定 文件 \fIfile\fP 的 内容 为 过滤表达式. 忽略 命令行 上 的 表达式.
+.TP
+.B \-i
+监听 \fIinterface\fP 接口.
+如果 不指定 接口, \fItcpdump\fP 在 系统 的 接口 清单 中, 寻找 号码最小,
+已经 配置好的 接口 (loopback 除外). 选中的时候 会 中断 连接.
+.TP
+.B \-l
+行缓冲 标准输出. 可用于 捕捉 数据 的 同时 查看 数据. 例如,
+.br
+``tcpdump\ \ \-l\ \ |\ \ tee dat'' or
+``tcpdump\ \ \-l \ \ > dat\ \ &\ \ tail\ \ \-f\ \ dat''.
+.TP
+.B \-n
+不把 地址 转换成 名字 (如主机地址, 端口号等)
+.TP
+.B \-N
+不显示 主机名字 中的 域名 部分. 例如, 如果 使用 这个 选项, 
+\fItcpdump\fP 只显示 ``nic'', 而不是 ``nic.ddn.mil''.
+.TP
+.B \-O
+禁止运行 报文匹配模板 的 优化器. 当 怀疑 优化器 含有 bug 时, 这个选项 才有用.
+.TP
+.B \-p
+\fI禁止\fP 把 接口 置成 promiscuous 模式. 注意, 接口 有可能 因 其他原因
+而 处于 promiscuous 模式; 因此, '-p' 不能 作为
+`ether host {local-hw-addr} 或 ether broadcast' 的 简写.
+.TP
+.B \-q
+快速输出. 显示 较少的 协议信息, 输出行 将 短一点点.
+.TP
+.B \-r
+从 \fIfile\fR 中 读入 数据报 (文件 是用 -w 选项 创建的).
+如果 \fIfile\fR 是 ``-'', 就 读 标准输入.
+.TP
+.B \-s
+从每个 报文 中 截取 \fIsnaplen\fP 字节的数据, 而不是 缺省的 68 (如果是
+SunOS 的 NIT, 最小值是 96). 68 个字节 适用于 IP, ICMP, TCP 和 UDP, 
+但是 有可能 截掉 名字服务器 和 NFS 报文 的 协议 信息 (见下面).
+输出时 如果指定 ``[|\fIproto\fP]'',  tcpdump 可以 指出 那些 捕捉量过小
+的 数据报, 这里的 \fIproto\fP 是 截断发生处 的 协议层 名称.
+注意, 采用 更大的 捕捉范围 既增加了 处理 报文 的 时间, 又 相应的 减少了
+报文的 缓冲 数量, 可能 导致 报文的丢失. 你 应该 把 \fIsnaplen\fP 设的
+尽量小, 只要 能够 容纳 你 需要 的 协议信息 就可以了.
+
+.TP
+.B \-T
+把 通过 "\fIexpression\fP" 挑选出来的 报文 解释成 指定的 \fItype\fR. 
+目前 已知 的 类型 有:
+\fBrpc\fR (远程过程调用 Remote Procedure Call),
+\fBrtp\fR (实时应用协议 Real-Time Applications protocol),
+\fBrtcp\fR (实时应用控制协议 Real-Time Applications control protocol),
+\fBvat\fR (可视音频工具 Visual Audio Tool),
+和
+\fBwb\fR (分布式白板 distributed White Board).
+.TP
+.B \-S
+显示 绝对的, 而不是 相对的 TCP 序列号.
+.TP
+.B \-t
+\fI禁止\fP 显示 时戳标志.
+.TP
+.B \-tt
+显示 未格式化的 时戳标志.
+.TP
+.B \-v
+(稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报 中的 生存周期 和 服务类型.
+.TP
+.B \-vv
+更繁琐的输出. 例如, 显示 NFS 应答报文 的 附加域.
+.TP
+.B \-w
+把 原始报文 存进 \fIfile\fR, 不分析 也 不显示. 它们 可以 以后 用 \-r 
+选项 显示. 如果 \fIfile\fR 是 ``-'', 就 写到 标准输出.
+.TP
+.B \-x
+以 十六进制数 形式 显示 每一个 报文 (去掉链路层报头后) .
+可以 显示 较小的 完整 报文, 否则 只 显示
+.I snaplen
+个 字节 .
+.IP "\fIexpression\fP"
+.RS
+用来 选择 要 转储 的 数据报.  如果 没有 指定 \fIexpression\fP ,
+就 转储 网络的 全部 报文.  否则, 只转储 相对 \fIexpression\fP 为 `true' 
+的 数据报.
+.LP
+\fIexpression\fP 由 一个或多个
+.I 原语 (primitive) 
+组成. 原语 通常 由 一个
+.I 标识 
+(id, 名称或数字), 和 标识 前面的 一个或多个 修饰子(qualifier) 组成.
+修饰子 有 三种 不同的类型:
+.IP \fItype\fP
+类型修饰子 指出 标识名称 或 标识数字 代表 什么 类型的东西.
+可以使用的 类型 有
+.BR host ,
+.B net
+和
+.BR port .
+例如, `host foo', `net 128.3', `port 20'.  如果 不指定 类型修饰子,
+就使用 缺省的
+.B host .
+
+.IP \fIdir\fP
+方向修饰子 指出 相对于 
+.B 标识
+的 传输方向 (数据是 传入还是传出 标识).
+可以使用的 方向 有
+.BR src ,
+.BR dst ,
+.B "src or dst"
+和
+.B "src and"
+.BR dst .
+例如, `src foo', `dst net 128.3', `src or dst port ftp-data'.  
+如果 不指定 方向修饰子, 就使用 缺省的
+.B "src or dst" .
+对于 `null' 链路层 (就是说 象 slip 之类的 点到点 协议), 用
+.B inbound
+和
+.B outbound
+修饰子 指定 所需的 传输方向.
+.IP \fIproto\fP
+协议修饰子 要求 匹配 指定的协议. 可以使用的 协议 有:
+.BR ether ,
+.BR fddi ,
+.BR ip ,
+.BR arp ,
+.BR rarp ,
+.BR decnet ,
+.BR lat ,
+.BR sca ,
+.BR moprc ,
+.BR mopdl ,
+.B tcp
+和
+.BR udp .
+例如, `ether src foo', `arp net 128.3', `tcp port 21'.  如果 不指定
+协议修饰子, 就使用 所有 符合 类型 的 协议. 例如, `src foo' 指 
+`(ip or arp or rarp) src foo' (注意后者不符合语法), `net bar' 指 `(ip or
+arp or rarp) net bar',  `port 53' 指 `(tcp or udp) port 53'.
+.LP
+[`fddi' 实际上 是 `ether' 的 别名; 分析器 把 它们 视为
+``用在 指定 网络接口 上的 数据链路层.''  FDDI 报头 包含 类似于 以太协议
+的 源目地址, 而且 通常 包含 类似于 以太协议 的 报文类型, 因此 你 可以
+分析 FDDI 域, 就象 分析 以太协议 一样. FDDI 报头 也 包含 其他 域, 但是
+你 不能 在 过滤器表达式 里 显式描述.]
+
+.LP
+作为 上述 的 补充, 有一些 特殊的 `原语' 关键字, 它们 不同于 上面的模式:
+.BR gateway ,
+.BR broadcast ,
+.BR less ,
+.B greater
+和 数学表达式. 这些 在 后面 有 叙述.
+.LP
+更复杂的 过滤器表达式 可以 通过
+.BR and ,
+.B or
+和
+.B not
+连接 原语 来 组建.  例如, `host foo and not port ftp and not port ftp-data'.
+为了少敲点键, 可以忽略 相同的 修饰子.  例如,
+`tcp dst port ftp or ftp-data or domain' 实际上 就是
+`tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
+.LP
+允许的 原语 有:
+.IP "\fBdst host \fIhost\fR"
+如果 报文中 IP 的 目的地址域 是 \fIhost\fP, 则 逻辑 为 真.
+\fIhost\fP 既可以 是 地址, 也可以 是 主机名.
+.IP "\fBsrc host \fIhost\fR"
+如果 报文中 IP 的 源地址域 是 \fIhost\fP, 则 逻辑 为 真.
+.IP "\fBhost \fIhost\fP
+如果 报文中 IP 的 源地址域 或者 目的地址域 是 \fIhost\fP, 则 逻辑 为 真.
+上面 所有的 host 表达式 都可以 加上
+\fBip\fP, \fBarp\fP, 或 \fBrarp\fP 关键字 做 前缀, 就象:
+.in +.5i
+.nf
+\fBip host \fIhost\fR
+.fi
+.in -.5i
+它等价于:
+.in +.5i
+.nf
+\fBether proto \fI\\ip\fB and host \fIhost\fR
+.fi
+.in -.5i
+如果 \fIhost\fR 是 拥有 多个 IP 地址 的 主机名, 它的 每个地址 都会 被查验.
+
+.IP "\fBether dst \fIehost\fP
+如果 报文的 以太目的地址 是 \fIehost\fP, 则 逻辑 为 真. \fIEhost\fP
+既可以是 名字 (/etc/ethers 里有), 也可以是 数字 (有关 数字格式 另见
+.IR ethers (3N)
+).
+.IP "\fBether src \fIehost\fP
+如果 报文的 以太源地址 是 \fIehost\fP, 则 逻辑 为 真.
+.IP "\fBether host \fIehost\fP
+如果 报文的 以太源地址 或 以太目的地址 是 \fIehost\fP, 则 逻辑 为 真.
+.IP "\fBgateway\fP \fIhost\fP
+如果 报文 把 \fIhost\fP 当做 网关, 则 逻辑 为 真.  也就是说, 报文的
+以太源或目的地址 是 \fIhost\fP, 但是 IP 的 源目地址 都不是 \fIhost\fP.
+\fIhost\fP 必须 是个 主机名, 而且 必须 存在 /etc/hosts 和 /etc/ethers 中.  
+(一个等价的表达式是
+.in +.5i
+.nf
+\fBether host \fIehost \fBand not host \fIhost\fR
+.fi
+.in -.5i
+对于 \fIhost / ehost\fP, 它既可以是 名字, 也可以是 数字.)
+.IP "\fBdst net \fInet\fR"
+如果 报文的 IP 目的地址 属于 网络号 \fInet\fP, 则 逻辑 为 真. \fInet\fP 
+既可以 是 名字 (存在 /etc/networks 中), 也可以是 网络号. 
+(详见 \fInetworks(4)\fP).
+.IP "\fBsrc net \fInet\fR"
+如果 报文的 IP 源地址 属于 网络号 \fInet\fP, 则 逻辑 为 真.
+.IP "\fBnet \fInet\fR"
+如果 报文的 IP 源地址 或 目的地址 属于 网络号 \fInet\fP, 则 逻辑 为 真.
+.IP "\fBnet \fInet\fR \fBmask \fImask\fR"
+如果 IP 地址 匹配 指定 网络掩码(netmask) 的 \fInet\fR,  则 逻辑 为 真.
+本原语 可以用 \fBsrc\fR 或 \fBdst\fR 修饰.
+.IP "\fBnet \fInet\fR/\fIlen\fR"
+如果 IP 地址 匹配 指定 网络掩码 的 \fInet\fR,  则 逻辑 为 真,
+掩码 的 有效位宽 为 \fIlen\fR.
+本原语 可以用 \fBsrc\fR 或 \fBdst\fR 修饰.
+.IP "\fBdst port \fIport\fR"
+如果 报文 是 ip/tcp 或 ip/udp, 并且 目的端口 是 \fIport\fP, 则 逻辑 为 真.
+\fIport\fP 是一个 数字, 也可以是 /etc/services 中 说明过的 名字 (参看
+.IR tcp (4P)
+和
+.IR udp (4P)).
+如果 使用 名字, 则 检查 端口号 和 协议. 如果 使用 数字, 或者 有二义的名字,
+则 只检查 端口号 (例如, \fBdst port 513\fR 将显示 tcp/login 的数据 和 udp/who 
+的数据, 而 \fBport domain\fR 将显示 tcp/domain 和 udp/domain 的数据).
+.IP "\fBsrc port \fIport\fR"
+如果 报文 的 源端口号 是 \fIport\fP, 则 逻辑 为 真.
+.IP "\fBport \fIport\fR"
+如果 报文 的 源端口 或 目的端口 是 \fIport\fP, 则 逻辑 为 真.
+上述的 任意一个 端口表达式 都可以 用 关键字
+\fBtcp\fP 或 \fBudp\fP 做 前缀, 就象:
+.in +.5i
+.nf
+\fBtcp src port \fIport\fR
+.fi
+.in -.5i
+它 只匹配 源端口 是 \fIport\fP 的 TCP 报文.
+.IP "\fBless \fIlength\fR"
+如果 报文 的 长度 小于等于 \fIlength\fP, 则 逻辑 为 真.
+它等同于:
+.in +.5i
+.nf
+\fBlen <= \fIlength\fP.
+.fi
+.in -.5i
+.IP "\fBgreater \fIlength\fR"
+如果 报文 的 长度 大于等于 \fIlength\fP, 则 逻辑 为 真.
+它等同于:
+.in +.5i
+.nf
+\fBlen >= \fIlength\fP.
+.fi
+.in -.5i
+.IP "\fBip proto \fIprotocol\fR"
+如果 报文 是 IP 数据报(参见
+.IR ip (4P)) ,
+其 内容 的 协议类型 是 \fIprotocol\fP, 则 逻辑 为 真.
+\fIProtocol\fP 可以是 数字, 也可以是 下列 名称 中的 一个:
+\fIicmp\fP, \fIigrp\fP, \fIudp\fP, \fInd\fP, 或 \fItcp\fP.
+注意 这些 标识符 \fItcp\fP, \fIudp\fP, 和 \fIicmp\fP 也同样是 关键字,
+所以 必须 用 反斜杠(\\) 转义, 在 C-shell 中 应该是 \\\\ .
+.IP "\fBether broadcast\fR"
+如果 报文 是 以太广播报文, 则 逻辑 为 真.
+关键字 \fIether\fP 是 可选的.
+.IP "\fBip broadcast\fR"
+如果 报文 是 IP广播报文, 则 逻辑 为 真. Tcpdump 检查 全0 和 全1 广播约定,
+并且 检查 本地 的 子网掩码.
+.IP "\fBether multicast\fR"
+如果 报文 是 以太多目传送报文(multicast), 则 逻辑 为 真.
+关键字 \fIether\fP 是 可选的. 这实际上 是 `\fBether[0] & 1 != 0\fP' 的简写.
+.IP "\fBip multicast\fR"
+如果 报文 是 IP多目传送报文, 则 逻辑 为 真.
+.IP  "\fBether proto \fIprotocol\fR"
+如果 报文协议 属于 以太类型 的 \fIprotocol\fR, 则 逻辑 为 真.
+\fIProtocol\fP 可以是 数字, 也可以是 名字, 如
+\fIip\fP, \fIarp\fP, 或 \fIrarp\fP.
+注意 这些 标识符 也是 关键字, 所以 必须 用 反斜杠(\\) 转义.
+[如果是 FDDI (例如, `\fBfddi protocol arp\fR'), 协议 标识 来自 802.2 
+逻辑链路控制(LLC)报头, 它 通常 位于 FDDI 报头 的 顶层. 当 根据 协议标识
+过滤 报文 时, \fITcpdump\fP 假设 所有的 FDDI 报文 含有 LLC 报头, 而且
+LLC 报头 使用 SNAP 格式.]
+
+.IP "\fBdecnet src \fIhost\fR"
+如果 DECNET 的 源地址 是
+.IR host ,
+则 逻辑 为 真, 该 主机地址 的 形式 可能 是 ``10.123'', 或者是 DECNET 主机名.
+[只有 配置成 运行 DECNET 的 Ultrix 系统 支持 DECNET 主机名.]
+.IP "\fBdecnet dst \fIhost\fR"
+如果 DECNET 的 目的地址 是
+.IR host ,
+则 逻辑 为 真.
+.IP "\fBdecnet host \fIhost\fR"
+如果 DECNET 的 源地址 或 目的地址 是
+.IR host ,
+则 逻辑 为 真.
+.IP "\fBip\fR, \fBarp\fR, \fBrarp\fR, \fBdecnet\fR"
+是:
+.in +.5i
+.nf
+\fBether proto \fIp\fR
+.fi
+.in -.5i
+的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
+.IP "\fBlat\fR, \fBmoprc\fR, \fBmopdl\fR"
+是:
+.in +.5i
+.nf
+\fBether proto \fIp\fR
+.fi
+.in -.5i
+的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
+注意
+\fItcpdump\fP 目前 不知道 如何 分析 这些 协议.
+.IP  "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
+是:
+.in +.5i
+.nf
+\fBip proto \fIp\fR
+.fi
+.in -.5i
+的 简写 形式, 其中 \fIp\fR 为 上述 协议 的 一种.
+.IP  "\fIexpr relop expr\fR"
+如果 这个 关系 成立, 则 逻辑 为 真, 其中 \fIrelop\fR 是 >, <, >=, <=, =, != 
+之一, \fIexpr\fR 是 数学表达式, 由 常整数(标准C语法形式), 普通的 二进制运算符
+[+, -, *, /, &, |], 一个 长度运算符, 和 指定的 报文数据访问算符 组成.
+要 访问 报文内 的 数据, 使用 下面的 语法:
+.in +.5i
+.nf
+\fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR
+.fi
+.in -.5i
+\fIProto\fR 是 \fBether, fddi,
+ip, arp, rarp, tcp, udp, \fRor \fBicmp\fR 之一, 同时 也指出了 下标 操作 的
+协议层. \fIexpr\fR 给出 字节单位 的 偏移量, 该 偏移量 相对于 指定的 协议层.
+\fISize\fR 是 可选项, 指出 感兴趣的 字节数; 它可以 是 1, 2, 4, 缺省为 1 字节.
+由 关键字 \fBlen\fP 给出的 长度运算符 指明 报文 的 长度.
+
+例如, `\fBether[0] & 1 != 0\fP' 捕捉 所有的 多目传送 报文.
+表达式 `\fBip[0] & 0xf != 5\fP' 捕捉 所有 带 可选域 的 IP 报文.
+表达式 `\fBip[6:2] & 0x1fff = 0\fP' 只捕捉 未分片 和 片偏移为0 的 数据报.
+这种 检查 隐含在 \fBtcp\fP 和 \fBudp\fP 下标操作 中.
+例如, \fBtcp[0]\fP 一定是 TCP \fI报头\fP 的 第一个 字节, 而不是 其中 某个
+IP片 的 第一个 字节.
+.LP
+原语 可以 用 下述 方法 结合使用:
+.IP
+园括弧 括起来的 原语 和 操作符 (园括弧 在 Shell 中 有 特定含义, 所以必须转义).
+.IP
+取反操作 (`\fB!\fP' or `\fBnot\fP').
+.IP
+连结操作 (`\fB&&\fP' or `\fBand\fP').
+.IP
+或操作 (`\fB||\fP' or `\fBor\fP').
+.LP
+取反操作 有 最高优先级.
+或操作 和 连结操作 有 相同的 优先级, 运算时 从左到右 结合.
+注意 连结操作 需要 显式的 \fBand\fR 算符, 而不是 并列放置.
+.LP
+如果 给出 标识符, 但没给 关键字, 那么 暗指 最近使用 的 关键字.
+例如,
+.in +.5i
+.nf
+\fBnot host vs and ace\fR
+.fi
+.in -.5i
+作为
+.in +.5i
+.nf
+\fBnot host vs and host ace\fR
+.fi
+.in -.5i
+的 简写形式, 不应该 和
+.in +.5i
+.nf
+\fBnot ( host vs or ace )\fR
+.fi
+.in -.5i
+混淆.
+.LP
+表达式参数 可以 作为 单个 参数 传给 tcpdump, 也可以 作为 复合参数,
+后者 更方便 一些.
+一般说来, 如果 表达式 包含 Shell 元字符(metacharacter), 传递 单个 括起来
+的 参数 要 容易 一些. 复合参数 在 被解析前 用 空格 联接 一起.
+
+.SH 示例 (EXAMPLES)
+.LP
+显示 所有 进出 \fIsundown\fP 的 报文:
+.RS
+.nf
+\fBtcpdump host sundown\fP
+.fi
+.RE
+.LP
+显示 \fIhelios\fR 和 主机 \fIhot\fR, \fIace\fR 之间 的 报文 传送:
+.RS
+.nf
+\fBtcpdump host helios and \\( hot or ace \\)\fP
+.fi
+.RE
+.LP
+显示 \fIace\fR 和 除了 \fIhelios\fR 以外的 所有 主机 的 IP报文:
+.RS
+.nf
+\fBtcpdump ip host ace and not helios\fP
+.fi
+.RE
+.LP
+显示 本地主机 和 Berkeley主机 之间 的 网络数据:
+.RS
+.nf
+.B
+tcpdump net ucb-ether
+.fi
+.RE
+.LP
+显示 所有 通过 网关 \fIsnup\fP 的 ftp 报文
+(注意 这个 表达式 被 单引号 括起, 防止 shell 解释 园括弧):
+.RS
+.nf
+.B
+tcpdump 'gateway snup and (port ftp or ftp-data)'
+.fi
+.RE
+.LP
+显示 既不是 来自 本地主机, 也不是 传往 本地主机 的 网络数据
+(if you gateway to one other net, this stuff should never make it onto your
+local net).
+.RS
+.nf
+.B
+tcpdump ip and not net \fIlocalnet\fP
+.fi
+.RE
+.LP
+显示 每个 TCP会话 的 起始 和 结束 报文 (SYN 和 FIN 报文), 而且 会话方 中
+有一个 远程主机.
+.RS
+.nf
+.B
+tcpdump 'tcp[13] & 3 != 0 and not src and dst net \fIlocalnet\fP'
+.fi
+.RE
+.LP
+显示 经过 网关 \fIsnup\fP 中 大于 576 字节的 IP 数据报:
+.RS
+.nf
+.B
+tcpdump 'gateway snup and ip[2:2] > 576'
+.fi
+.RE
+.LP
+显示 IP 广播 或 多目传送 的 数据报, 这些 报文
+.I 不是
+通过 以太网 的 广播 或 多目传送 形式 传送的:
+.RS
+.nf
+.B
+tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
+.fi
+.RE
+.LP
+显示 所有 不是 回响请求/应答 的 ICMP 报文 (也就是说, 不是 ping 报文):
+.RS
+.nf
+.B
+tcpdump 'icmp[0] != 8 and icmp[0] != 0"
+.fi
+.RE
+.SH 输出格式 (OUTPUT FORMAT)
+.LP
+\fItcpdump\fP 的 输出格式 取决于 协议. 下面的 描述 给出 大多数 格式 的
+简要说明 和 范例.
+.de HD
+.sp 1.5
+.B
+..
+.HD
+链路层报头 (Link Level Headers)
+.LP
+如果 给出 '-e' 选项 就 显示 链路层报头.
+在 以太网上, 显示 报文的 源目地址, 协议 和 报文长度.
+.LP
+在 FDDI 网络上, '-e' 选项 导致 \fItcpdump\fP 显示出 `帧控制(frame control)'
+域,  源目地址 和 报文长度. (`帧控制' 域 负责 解释 其余的 报文.
+普通报文 (比如说 载有 IP数据报) 是 `异步' 报文, 优先级 介于 0 到 7; 
+例如, `\fBasync4\fR'.  这些 被认为 载有 802.2 逻辑链路控制(LLC) 报文;
+如果 它们 \fI不是\fR ISO 数据报 或者 所谓的 SNAP 报文, 就显示出 LLC 报头.
+.LP
+\fI(注意: 以下 描述中 假设 你 熟悉 RFC-1144 中说明的 SLIP 压缩算法.)\fP
+.LP
+在 SLIP 链路上, \fItcpdump\fP 显示出 方向指示 (``I'' 指 inbound, 
+``O'' 指 outbound), 报文类型 和 压缩信息.
+首先显示的 是 报文类型. 有三种 类型 \fIip\fP, \fIutcp\fP 和 \fIctcp\fP.
+对于 \fIip\fR 报文 不再 显示 更多的 链路信息.
+对于 TCP 报文, 在 类型 后面 显示 连接标识.
+如果 报文 是 压缩过的, 就显示出 编码的报头.
+特殊 情形 以 \fB*S+\fIn\fR 和 \fB*SA+\fIn\fR 的 形式 显示, 这里的
+\fIn\fR 是 顺序号 (或顺序号 及其 确认) 发生 的 改变 总和.
+如果 不是 特殊 情形, 就显示 0 或 多少个 改变.
+改变 由 U (urgent pointer), W (window), A (ack), S (sequence number) 
+和 I (packet ID) 指明, 后跟 一个 变化量(+n or -n), 或 另一个 值(=n).
+最后显示 报文中 的 数据总和, 以及 压缩报头 的 长度.
+.LP
+例如, 下面一行 显示了 一个 传出的 压缩的 TCP 报文, 有一个 隐含的 连接标识;
+确认(ack)的 变化量是 6, 顺序号 是 49, 报文ID 是 6; 有三个字节的数据 和
+六个字节 的 压缩报头:
+.RS
+.nf
+\fBO ctcp * A+6 S+49 I+6 3 (6)\fP
+.fi
+.RE
+.HD
+ARP/RARP 报文
+.LP
+Arp/rarp 报文 的 输出 显示 请求类型 及其 参数. 输出格式 倾向于 能够 自我解释.
+这里 是一个 简单的例子, 来自 主机 \fIrtsg\fP 到 主机 \fIcsam\fP 的 'rlogin' 
+开始 部分:
+.RS
+.nf
+.sp .5
+\f(CWarp who-has csam tell rtsg
+arp reply csam is-at CSAM\fP
+.sp .5
+.fi
+.RE
+第一行 说明 rtsg 发出 一个 arp 报文 询问 internet 主机 csam 的 以太网地址.
+Csam 用 它的 以太地址 作应答 (这个例子中, 以太地址 是 大写的, internet 地址
+为 小写).
+.LP
+如果 用 \fBtcpdump \-n\fP 看上去 要 清楚一些:
+.RS
+.nf
+.sp .5
+\f(CWarp who-has 128.3.254.6 tell 128.3.254.68
+arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP
+.fi
+.RE
+.LP
+如果 用 \fBtcpdump \-e\fP, 可以 看到 实际上 第一个 报文 是 广播, 第二个
+报文 是 点到点 的:
+.RS
+.nf
+.sp .5
+\f(CWRTSG Broadcast 0806  64: arp who-has csam tell rtsg
+CSAM RTSG 0806  64: arp reply csam is-at CSAM\fP
+.sp .5
+.fi
+.RE
+这里 第一个 报文 指出 以太网源地址是 RTSG, 目的地址 是 以太网广播地址,
+类型域 为 16进制数 0806 (类型 ETHER_ARP), 报文全长 64 字节.
+.HD
+TCP 报文
+.LP
+\fI(注意: 以下的描述中 假设 你 熟悉 RFC-793 中 说明的 TCP 协议, 如果 你
+不了解 这个 协议, 无论是 本文 还是 tcpdump 都对你 用处 不大)\fP
+.LP
+一般说来 tcp 协议的 输出格式是:
+.RS
+.nf
+.sp .5
+\fIsrc > dst: flags data-seqno ack window urgent options\fP
+.sp .5
+.fi
+.RE
+\fISrc\fP 和 \fIdst\fP 是 源目IP地址和端口.  \fIFlags\fP 是 S (SYN),
+F (FIN), P (PUSH) 或 R (RST) 或 单独的 `.'(无标志), 或者是 它们的 组合.
+\fIData-seqno\fP 说明了 本报文中的数据 在 流序号 中的 位置 (见下例).
+\fIAck\fP 是 在这条连接上 信源机 希望 下一个 接收的 字节的 流序号
+(sequence number).
+\fIWindow\fP 是 在这条连接上 信源机 接收缓冲区 的 字节大小.
+\fIUrg\fP 表明 报文内 是 `紧急(urgent)' 数据.
+\fIOptions\fP 是 tcp 可选报头, 用 尖括号 括起 (例如, <mss 1024>).
+.LP
+\fISrc, dst\fP 和 \fIflags\fP 肯定 存在.  其他域 依据 报文的 tcp 报头 内容,
+只输出 有必要 的 部分.
+.LP
+下面 是 从 主机 \fIrtsg\fP rlogin 到 主机 \fIcsam\fP 的 开始部分.
+.RS
+.nf
+.sp .5
+\s-2\f(CWrtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
+csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
+rtsg.1023 > csam.login: . ack 1 win 4096
+rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
+csam.login > rtsg.1023: . ack 2 win 4096
+rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
+csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
+csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
+csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1\fP\s+2
+.sp .5
+.fi
+.RE
+第一行 是说 从 rtsg 的 tcp 端口 1023 向 csam 的 \fIlogin\fP 端口 发送 报文.
+\fBS\fP 标志 表明 设置了 \fISYN\fP 标志.
+报文 的 流序号 是 768512, 没有 数据.
+(这个写成 `first:last(nbytes)',  意思是 `从 流序号 \fIfirst\fP 到 \fIlast\fP,
+不包括 \fIlast\fP, 有 \fInbytes\fP 字节的 用户数据'.)
+此时 没有 捎带确认(piggy-backed ack), 有效的 接收窗口 是 4096 字节,
+有一个 最大段大小(max-segment-size) 的 选项, 请求 设置 mss 为 1024 字节.
+.LP
+Csam 用类似的 形式 应答, 只是 增加了 一个 对 rtsg SYN 的 捎带确认.
+然后 Rtsg 确认 csam 的 SYN.  `.' 意味着 没有 设置 标志.
+这个 报文 不包含 数据, 因此 也就 没有 数据的流序号.
+注意这个 确认流序号 是一个 小整数(1).  当 \fBtcpdump\fP 第一次 发现 一个
+tcp 会话时, 它 显示 报文 携带的 流序号. 在 随后收到的 报文里, 它 显示 当前
+报文 和 最初那个 报文 的 流序号 之 差.
+这 意味着 从第一个报文 开始, 以后的 流序号 可以 理解成 数据流 中的 相对位移
+(第一个 字节 是 `1').  
+`-S' 选项 能够 改变 这个 特性, 直接 显示 原始的 流序号.
+.LP
+在 第六行, rtsg 传给 csam 19 个字节 的 数据 (字节 2 到 20).
+报文中 设置了 PUSH 标志. 第七行 csam 表明 它 收到了 rtsg 的 数据, 字节序号
+是 21, 但不包括 第21个 字节.
+显然 大多数 数据 在 socket 的 缓冲区内, 因为 csam 的 接收窗口 收到的 数据
+小于 19 个 字节. 同时 csam 向 rtsg 发送了 一个字节 的 数据.
+第八和第九行 显示 csam 发送了 两个字节 的 紧急数据 到 rtsg.
+.LP
+如果 捕捉区 设置的 过小, 以至于 \fBtcpdump\fP 不能 捕捉到 完整的 TCP 报头, 
+\fBtcpdump\fP 会 尽可能的 翻译 已捕获的 部分, 然后 显示 ``[|\fItcp\fP]'',
+表明 无法 翻译 其余 部分. 如果 报头 包含 一个 虚假 选项 (如 长度 过短, 或者
+超出了 报头 范围), tcpdump 显示 ``[\fIbad opt\fP]'' 并且 不再 翻译 其他 
+选项部分 (因为 它 不可能 判断出 从 哪里 开始).  如果 报头长度 表明 存在 选项,
+但是 IP 数据报 长度 不足以 真的 存放 选项, tcpdump 就显示 
+``[\fIbad hdr length\fP]''.
+.HD
+.B
+UDP 报文
+.LP
+UDP 格式 就象 这个 rwho 报文 显示的:
+.RS
+.nf
+.sp .5
+\f(CWactinide.who > broadcast.who: udp 84\fP
+.sp .5
+.fi
+.RE
+就是说 把一个 udp 数据报 从 主机 \fIactinide\fP 的 \fIwho\fP 端口 发送到
+\fIbroadcast\fP, Internet 广播地址 的 \fIwho\fP 端口.
+报文 包含 84字节 的 用户数据.
+.LP
+某些 UDP 服务 能够 识别出来(从 源目端口号 上), 因而 显示出 更高层的 协议信息.
+特别是 域名服务请求(RFC-1034/1035) 和 NFS 的 RPC 调用(RFC-1050).
+.HD
+UDP 域名服务请求 (Name Server Requests)
+.LP
+\fI(注意: 以下的描述中 假设 你 熟悉 RFC-1035 说明的 域名服务协议. 
+如果你 不熟悉 这个协议, 下面的内容 就象是 天书.)\fP
+.LP
+域名服务请求 的 格式 是
+.RS
+.nf
+.sp .5
+\fIsrc > dst: id op? flags qtype qclass name (len)\fP
+.sp .5
+\f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fP
+.sp .5
+.fi
+.RE
+主机 \fIh2opolo\fP 访问 \fIhelios\fP 上的 域名服务, 询问
+和 \fIucbvax.berkeley.edu.\fP 关联的 地址记录(qtype=A).
+查询号是 `3'.  `+' 表明 设置了 \fI递归请求\fP 标志.
+查询长度是 37 字节, 不包括 UDP 和 IP 头.  
+查询操作 是 普通的 \fIQuery\fP 操作, 因此 op 域 可以 忽略.  
+如果 op 设置成 其他什么东西, 它应该 显示在 `3' 和 `+' 之间.
+类似的, qclass 是 普通的 \fIC_IN\fP 类型, 也被 忽略了.  
+其他类型的 qclass 应该 在 `A' 后面 显示.
+.LP
+Tcpdump 会检查 一些 不规则 情况, 相应的 结果 作为 补充域 放在 方括号内: 
+如果 某个 查询 包含 回答, 名字服务 或 管理机构部分,
+就把
+.IR ancount ,
+.IR nscount ,
+或
+.I arcount
+显示成 `[\fIn\fPa]', `[\fIn\fPn]' 或  `[\fIn\fPau]',  这里的 \fIn\fP
+代表 相应的 数量.
+如果 在 第二和第三字节 中, 任何一个 回答位(AA, RA 或 rcode) 或 任何一个
+`必须为零' 的位 被 置位, 就显示 `[b2&3=\fIx\fP]',
+这里的 \fIx\fP 是 报头 第二和第三字节 的 16进制数.
+.HD
+UDP 名字服务回答
+.LP
+名字服务回答的 格式 是
+.RS
+.nf
+.sp .5
+\fIsrc > dst:  id op rcode flags a/n/au type class data (len)\fP
+.sp .5
+\f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
+helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fP
+.sp .5
+.fi
+.RE
+第一个例子里, \fIhelios\fP 回答了 \fIh2opolo\fP 发出的 标识为3 的 询问,
+一共是 3 个 回答记录, 3 个 名字服务记录 和 7 个管理结构记录.
+第一个 回答纪录 的 类型是 A (地址), 数据是 internet 地址 128.32.137.3.  
+回答的 全长 为 273 字节, 不包括 UDP 和 IP 报头.  作为 A 记录的 class(C_IN)
+可以 忽略 op (询问) 和 rcode (NoError).
+.LP
+在第二个例子里, \fIhelios\fP 对 标识为2 的 询问 作出 域名不存在 (NXDomain)
+的 回答, 没有 回答记录, 一个 名字服务记录, 而且 没有 管理结构.
+ `*' 表明 设置了 \fI权威回答(authoritative answer)\fP. 
+由于 没有 回答记录, 这里就 不显示 type, class 和 data.
+.LP
+其他 标志 字符 可以 显示为 `\-' (\fI没有\fP设置递归有效(RA)) 和 `|' 
+(设置 消息截短(TC)). 如果 `问题' 部分 没有 有效的 内容, 就 显示 `[\fIn\fPq]'.
+.LP
+注意 名字服务的 询问和回答 一般说来 比较长, 68 字节的 \fIsnaplen\fP 可能
+无法 捕捉到 足够的 报文内容. 如果 你 的确 在 研究 名字服务 的 情况, 可以
+使用 \fB\-s\fP 选项 增大 捕捉缓冲区. `\fB\-s 128\fP' 应该 效果 不错了.
+
+.HD
+NFS 请求和响应
+.LP
+Sun NFS (网络文件系统) 的 请求和响应 显示格式 是:
+.RS
+.nf
+.sp .5
+\fIsrc.xid > dst.nfs: len op args\fP
+\fIsrc.nfs > dst.xid: reply stat len op results\fP
+.sp .5
+\f(CW
+sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
+wrl.nfs > sushi.6709: reply ok 40 readlink "../var"
+sushi.201b > wrl.nfs:
+	144 lookup fh 9,74/4096.6878 "xcolors"
+wrl.nfs > sushi.201b:
+	reply ok 128 lookup fh 9,74/4134.3150
+\fP
+.sp .5
+.fi
+.RE
+在第一行, 主机 \fIsushi\fP 向 \fIwrl\fP 发送 号码为 \fI6709\fP 的 交易会话 
+(注意 源主机 后面的 数字 是 交易号, \fI不是\fP 端口).  
+这项请求 长 112 字节, 不包括 UDP 和 IP 报头.  在 文件句柄 (\fUfh\fP) 
+21,24/10.731657119 上执行 \fIreadlink\fP (读取 符号连接) 操作.
+(如果 运气 不错, 就象 这种情况, 文件句柄 可以 依次翻译成 主次设备号,
+i 节点号, 和 世代号(generation number). )
+\fIWrl\fP 回答 `ok' 和 连接的 内容.
+.LP
+在第三行, \fIsushi\fP 请求 \fIwrl\fP 在 目录文件 9,74/4096.6878 中 查找
+`\fIxcolors\fP'. 注意 数据的 打印格式 取决于 操作类型.  格式 应该是 可以
+自我说明的.
+.LP
+给出 \-v (verbose) 选项 可以 显示 附加信息.
+例如:
+.RS
+.nf
+.sp .5
+\f(CW
+sushi.1372a > wrl.nfs:
+	148 read fh 21,11/12.195 8192 bytes @ 24576
+wrl.nfs > sushi.1372a:
+	reply ok 1472 read REG 100664 ids 417/0 sz 29388
+\fP
+.sp .5
+.fi
+.RE
+(\-v 同时 使它 显示 IP 报头的 TTL, ID, 和 分片域, 在 这个例子里 把它们
+省略了.)  在第一行, \fIsushi\fP 请求 \fIwrl\fP 从 文件 21,11/12.195
+的 偏移位置 24576 开始, 读取 8192 字节. \fIWrl\fP 回答 `ok'; 第二行 显示的 
+报文 是 应答的 第一个 分片, 因此 只有 1472 字节 (其余数据 在 后续的 分片中
+传过来, 但由于 这些分片里 没有 NFS 甚至 UDP 报头, 因此 根据 所使用的 
+过滤器表达式, 有可能 不显示). \-v 选项 还会 显示 一些 文件属性 (它们 作为 
+文件数据 的 附带部分 传回来): 文件类型 (普通文件 ``REG''), 存取模式
+(八进制数), uid 和 gid, 以及 文件大小.
+.LP
+如果再给一个 \-v 选项 (\-vv), 还能 显示 更多的细节.
+.LP
+注意 NFS 请求 的 数据量 非常大, 除非 增加 \fIsnaplen\fP, 否则 很多细节 
+无法显示. 试一试 `\fB\-s 192\fP' 选项.
+.LP
+NFS 应答报文 没有明确 标明 RPC 操作.  因此 \fItcpdump\fP 保留有 ``近来的'' 
+请求 记录, 根据 交易号 匹配 应答报文. 如果 应答报文 没有 相应的 请求报文,
+它 就 无法分析.
+.HD
+KIP Appletalk (UDP 上的 DDP)
+.LP
+Appletalk DDP 报文 封装在 UDP 数据报 中, 解包后 按 DDP 报文 转储 
+(也就是说, 忽略 所有的 UDP 报头 信息). 文件
+.I /etc/atalk.names
+用来 把 appletalk 网络和节点号 翻译成 名字. 这个文件 的 行格式 是
+.RS
+.nf
+.sp .5
+\fInumber	name\fP
+
+\f(CW1.254		ether
+16.1		icsd-net
+1.254.110	ace\fP
+.sp .5
+.fi
+.RE
+前两行 给出了 appletalk 的 网络名称. 第三行 给出 某个主机 的 名字
+(主机和网络 依据 第三组 数字 区分 \- 网络号 \fI一定\fP 是 两组数字,
+主机号 \fI一定\fP 是 三组 数字.)  号码 和 名字 用 空白符(空格或tab) 隔开.
+.I /etc/atalk.names
+文件 可以 包含 空行 或 注释行(以`#'开始的行).
+.LP
+Appletalk 地址 按 这个格式 显示
+.RS
+.nf
+.sp .5
+\fInet.host.port\fP
+
+\f(CW144.1.209.2 > icsd-net.112.220
+office.2 > icsd-net.112.220
+jssmag.149.235 > icsd-net.2\fP
+.sp .5
+.fi
+.RE
+(如果 不存在
+.I /etc/atalk.names ,
+或者 里面 缺少 有效项目, 就以 数字形式 显示 地址.)
+第一个例子里, 网络 144.1 的 209 节点的 NBP (DDP 端口 2) 向 网络 icsd 的 
+112 节点 的 220 端口 发送数据.
+第二行 和 上面 一样, 只是 知道了 源节点 的 全称 (`office').  
+第三行 是从 网络 jssmag 的 149 节点 的 235 端口 向 icsd-net 的 NBP 端口
+广播 (注意 广播地址 (255) 隐含在 无主机号的 网络名字 中 \- 所以 在
+/etc/atalk.names 中 区分 节点名 和 网络名 是个 好主意).
+.LP
+Tcpdump 可以 翻译 NBP (名字联结协议) 和 ATP (Appletalk 交互协议) 的 报文
+内容. 其他协议 只转储 协议名称 (或号码, 如果 还 没给 这个协议 注册 名称) 
+和 报文大小.
+
+\fBNBP 报文\fP 的 输出格式 就象 下面的 例子:
+.RS
+.nf
+.sp .5
+\s-2\f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"
+jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250
+techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fP\s+2
+.sp .5
+.fi
+.RE
+第一行 是 网络 icsd 的 112 主机 在 网络 jssmag 上的 广播, 对 名字 
+laserwriter 做 名字查询请求. 名字查询请求 的 nbp 标识号 是 190.
+第二行 显示的是 对 这个请求 的 回答 (注意 它们 有 同样的 标识号),
+主机 jssmag.209 表示 在它的 250 端口 注册了 一个 laserwriter 的 资源,
+名字是 "RM1140". 第三行 是 这个请求 的 其他回答, 主机 techpit 的
+186 端口 有 laserwriter 注册的 "techpit".
+
+\fBATP 报文\fP 格式 如 下例 所示:
+.RS
+.nf
+.sp .5
+\s-2\f(CWjssmag.209.165 > helios.132: atp-req  12266<0-7> 0xae030001
+helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
+jssmag.209.165 > helios.132: atp-req  12266<3,5> 0xae030001
+helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
+helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
+jssmag.209.165 > helios.132: atp-rel  12266<0-7> 0xae030001
+jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fP\s+2
+.sp .5
+.fi
+.RE
+Jssmag.209 向 主机 helios 发起 12266 号 交易, 请求 8 个 报文(`<0-7>'). 
+行尾的 十六进制数 是 请求中 `userdata' 域 的 值.
+.LP
+Helios 用 8 个 512字节 的 报文 应答.  跟在 交易号 后面的 `:digit' 
+给出了 交易过程中 报文的 序列号, 括弧内的 数字 是 报文的 数据量,
+不包括 atp 报头.  报文 7 的 `*' 表明 设置了 EOM 位.
+.LP
+然后 Jssmag.209 请求 重传 第 3 & 5 报文.  Helios 做了 重传后 jssmag.209 
+结束 这次 交易. 最后, jssmag.209 发起 下一次 交易请求.  请求中的 `*' 表明 
+\fI没有\fP 设置 XO (只有一次) 位.
+
+.HD
+IP 分片
+.LP
+分片的 Internet 数据报 显示为
+.RS
+.nf
+.sp .5
+\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB+)\fR
+\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB)\fR
+.sp .5
+.fi
+.RE
+(第一种 形式 表明 还有 更多的 分片. 第二种 形式 表明 这是 最后 一片.)
+.LP
+\fIId\fP 是 分片 标识号.  \fISize\fP 是 分片 大小 (字节), 不包括 IP 报头.
+\fIOffset\fP 是 该分片 在 原数据报 中 的 偏移 (单位是字节).
+.LP
+每一个 分片 的 信息 都可以 打印出来.  第一个 分片 包含了 高层 协议 报头,
+显示 协议信息 后 显示 分片 的 信息. 第一个 分片 以后的 分片 不再 含有
+高层协议 报头, 所以 在 源目地址 后面 只显示 分片 信息.
+例如, 下面是 从 arizona.edu 到 lbl-rtsg.arpa 的 一部分 ftp 传输, 途经的
+CSNET 看上去 处理不了 576 字节的 数据报:
+.RS
+.nf
+.sp .5
+\s-2\f(CWarizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328 at 0+)
+arizona > rtsg: (frag 595a:204 at 328)
+rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560\fP\s+2
+.sp .5
+.fi
+.RE
+这里 有几点 需要注意:  首先, 第二行的 地址 不包括 端口号.  这是因为 TCP
+协议 信息 全部 装到了 第一个 分片内, 所以 显示 后续分片的 时候 不可能 知道
+端口 或 流序号. 其次, 第一行的 tcp 流序号部分 看上去有 308 字节的 用户数据, 
+实际上 是 512 字节 (第一个 分片的 308 和 第二个 分片的 204 字节).  如果
+你 正在 寻找 流序号中 的 空洞, 或者 试图 匹配 报文 的 确认(ack), 那你上当了.
+.LP
+如果 报文的 IP 标有 \fI不要分片\fP 标志, 显示时 在尾部 加上 \fB(DF)\fP.
+.HD
+时戳
+.LP
+缺省情况下, 所有 输出行 的 前面 都有 时戳. 时戳 就是 当前时间, 显示格式为
+.RS
+.nf
+\fIhh:mm:ss.frac\fP
+.fi
+.RE
+精度 和 内核时钟 一样. 时戳 反映了 内核 收到 报文 的 时间. 从 以太接口 
+收到 报文 到 内核 响应 '报文就绪' 中断 有一个 滞后, 该 滞后 不被考虑.
+
+.SH "另见 (SEE ALSO)"
+traffic(1C), nit(4P), bpf(4), pcap(3)
+
+.SH 作者 (AUTHORS)
+Van Jacobson,
+Craig Leres and
+Steven McCanne, all of the
+Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
+.LP
+当前 版本 可以 从 匿名ftp 获得:
+.LP
+.RS
+.I ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
+.RE
+
+.SH BUGS
+请把 bugs 报告给 tcpdump at ee.lbl.gov.
+.LP
+NIT 不允许 监视 你自己的 传出数据, BPF 可以. 我们 建议 你 使用 后者.
+.LP
+应该 试着 重组 IP 分片, 至少可以 为 更高层的 协议 计算出 正确的 长度.
+.LP
+名字服务逆向询问 转储的 不正确: 显示出 (空的)问题部分, 而实际上 询问 放在了
+回答部分. 有人 认为 这种 逆向询问 本身就是 bug, 应该 修改 产生问题 的 程序, 
+而非 tcpdump.
+.LP
+苹果 Ethertalk DDP 的 报文 应该 象 KIP DDP 的 报文 一样 容易 转储, 事实
+却 不是 这样. 即使 我们 有意 作点什么 来 促销 Ethertalk (我们没有), 
+LBL 也不允许 Ethertalk 出现在 它的 任何网络上, 所以 我们 没办法 测试 
+这些代码.
+.LP
+如果 报文的 路径上 出现 夏时制时间 变化, 可能 导致 时戳 混乱.
+(这个时间变化将忽略)
+.LP
+操作 FDDI 报头的 过滤器表达式 假设 所有的 FDDI 报文 被封装在 以太报文 中.
+这对 IP, ARP 和 DECNET Phase IV 无疑是 正确的, 但对 某些 协议 如 ISO CLNS
+不正确. 因此, 过滤器 有可能会 糊里糊涂的 的 接收 一些 并不真正 匹配
+过滤器表达式 的 报文.
+
+.SH "[中文版维护人]"
+.B 徐明 <xuming at iname.com>
+.SH "[中文版最新更新]"
+.BR 2001/03/05
+第一版
+.br
+.BR 2001/11/16
+第一次修订
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/tzselect.8 b/src/man8/tzselect.8
new file mode 100644
index 0000000..2750bfa
--- /dev/null
+++ b/src/man8/tzselect.8
@@ -0,0 +1,45 @@
+.\" 中文版 Copyright (c) 2000 mhss 和 www.linuxforum.net
+
+.TH TZSELECT 8
+.SH NAME
+tzselect \- 选择一个时区
+.SH 总览
+.B tzselect
+.SH 描述
+.B tzselect
+程序向用户询问当前位置的信息,把时区描述作为结果输出到标准输出。
+此结果适合作为环境变量 TZ 的值。
+.PP
+所有与用户的交互是通过标准输入和标准错误输出完成的。
+.SH "环境变量"
+.TP
+\f3AWK\fP
+一个 Posix 兼容的
+.I awk
+程序的名字(缺省:
+.BR awk ).
+.TP
+\f3TZDIR\fP
+包含时区数据文件的目录的名字 (缺省:
+.BR /usr/local/etc/zoneinfo ).
+.SH 文件
+.TP
+\f2TZDIR\fP\f3/iso3166.tab\fP
+包含国家(地区)编码和名称的 ISO 3166 2-字母表。
+.TP
+\f2TZDIR\fP\f3/zone.tab\fP
+国家(地区)代码表,包含经度和纬度,TZ(时区)值,描述性的注释。
+.TP
+\f2TZDIR\fP\f3/\fP\f2TZ\fP
+关于时区的时区数据文件 \f2TZ\fP.
+.SH "退出状态"
+若从用户获得了正确的时区退出状态返回 0,否则非 0。
+.SH "参见"
+newctime(3), tzfile(5), zdump(8), zic(8)
+
+.SH "[中文版维护人]"
+mhss  <jijingzhisheng at up369.com>
+.SH "[中文版最新更新]"
+2000/10/15
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/umount.8 b/src/man8/umount.8
new file mode 100644
index 0000000..14fb1dc
--- /dev/null
+++ b/src/man8/umount.8
@@ -0,0 +1,117 @@
+.\" Copyright (c) 1996 Andries Brouwer
+.\" This page is somewhat derived from a page that was
+.\" (c) 1980, 1989, 1991 The Regents of the University of California
+.\" and had been heavily modified by Rik Faith and myself.
+.\"
+.\" This is free documentation; 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 version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.TH UMOUNT 8 "26 July 1997" "Linux 2.0" "Linux 程序员手册"
+.SH "NAME 名字"
+umount \- 卸载文件系统
+.SH 总览
+.BI "umount [\-hV]"
+.LP
+.BI "umount -a [\-nrv] [\-t " vfstype ]
+.br
+.BI "umount [\-nrv] " "device " | " dir " [...]
+.SH 描述
+.B umount
+可以卸除当前挂载在文件层次目录中的文件系统。
+文件系统形式可以是以它所在的目录的形式指定,
+也可以是以它所在的特殊设备的形式来指定。
+
+请注意当文件系统正处于使用状态时,不能进行卸载操作,
+必须等工作完成后才能进行卸除。例如,如果在当前文件系统中
+有打开的文件或某些进程正工作在该文件系统的某个目录下时,
+或者是它上面的一个交换文件正在使用。
+干涉的进程甚至可以是
+.B umount
+本身 - 它打开 libc,而随后 libc 可能会打开本地文件.
+
+.B umount
+命令的选项:
+.TP
+.B \-V
+打印版本信息并退出。
+.TP
+.B \-h
+显示帮助信息并退出。
+.TP
+.B \-v
+以冗长模式运行。
+.TP
+.B \-n
+在卸载后不将相应信息写入
+.IR /etc/mtab 
+文件。
+.TP
+.B \-r
+如果卸载失败,试图以只读方式进行重新挂载。
+.TP
+.B \-a
+卸载所有在
+.I /etc/mtab
+文件中描述的文件系统。(在
+.B umount
+版本或以后的版本中,不会卸载
+.I proc
+文件系统)
+.TP
+.BI \-t " vfstype"
+只卸载指定类型的文件系统。如果要一次指定多个文件系统,
+可以用逗号分隔。如在指定文件系统前加
+.B no
+,则可卸载除些文件系统以外的其它文件系统。
+.TP
+.B \-f
+强制卸载(比如不可达的 NFS )。
+(此选项须在高于 2.1.116 的版本上使用)
+
+.SH "环路设备"
+如果在
+.IR /etc/mtab
+文件中存在有 `loop=...' 这样的参数,
+.B umount
+命令将释放与挂载相关联的环路设备.
+任何挂起的环路设备可以用 `losetup -d' 命令来释放。
+参阅
+.BR losetup (8).
+
+
+.SH 相关文件
+.I /etc/mtab
+已挂载文件系统的清单。
+
+.SH "另见"
+.BR umount (2),
+.BR mount (8),
+.BR losetup (8).
+
+.SH 历史
+.B umount
+命令最早出现在版本 6 的 AT&T UNIX.
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+.B Nov 20 2000
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/useradd.8 b/src/man8/useradd.8
new file mode 100644
index 0000000..7585356
--- /dev/null
+++ b/src/man8/useradd.8
@@ -0,0 +1,124 @@
+.\" Copyright 1991 - 1994, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH USERADD 8
+.SH NAME
+useradd \- 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯
+.SH "总览 SYNOPSIS"
+.TP 8
+\fBuseradd\fR [\fB-c\fR \fIcomment\fR] [\fB-d\fR \fIhome_dir\fR]
+.br
+[\fB-e\fR \fIexpire_date\fR] [\fB-f\fR \fIinactive_time\fR]
+.br
+[\fB-g\fR \fIinitial_group\fR] [\fB-G\fR \fIgroup\fR[,...]]
+.br
+[\fB-m\fR [\fB-k\fR \fIskeleton_dir\fR]] [\fB-o\fR] [\fB-p\fR \fIpasswd\fR]
+.br
+[\fB-s\fR \fIshell\fR] [\fB-u\fR \fIuid\fR] \fIlogin\fR
+.TP 8
+\fBuseradd\fR \fB-D\fR [\fB-g\fI default_group\fR] [\fB-b\fI default_home\fR]
+.br
+[\fB-e\fI default_expire_date\fR] [\fB-f\fI default_inactive\fR]
+.br
+[\fB-s\fI default_shell\fR]
+.SH "描述"
+.SS 新 帐 号 建 立 
+当 不 加 -D 参 数 , useradd 指 令 使 用 命 令 列 来 指 定 新 帐 号 的 设 定 值 and 使 用 系 统 上 的 预 设 值 . 新 使 用 者 帐 号 将 产 生 一 些 系 统 档 案 , 使 用 者 目 录 建 立 , 拷 备 起 始 档 案 等 , 这 些 均 可 以 利 用 命 令列 选 项 指 定 。 此 版 本 为 Red Hat Linux 提 供 , 可 帮 每 个 新 加 入 的 使 用 者 建 立 个 别 的 group , 毋 须 添 加 -n 选 项 。 useradd 可 使 用 的 选 项 为
+.IP "\fB-c \fIcomment\fR"
+新 帐 号 password 档 的 说 明 栏 。
+.IP "\fB-d \fIhome_dir\fR"
+新 帐 号 每 次 登 入 时 所 使 用 的 home_dir 。 预 设 值 为 default_home 内 login 名 称 , 并 当 成 登 入 时 目 录 名 称 。
+.IP "\fB-e \fIexpire_date\fR"
+帐 号 终 止 日 期 。 日 期 的 指 定 格 式 为 MM/DD/YY 。
+.IP "\fB-f \fIinactive_days\fR"
+帐 号 过 期 几 日 后 永 久 停 权 。 当 值 为 0 时 帐 号 则 立 刻 被 停 权 。 而 当 值 为 -1 时 则 关 闭 此 功 能 , 预 设 值 为 -1
+.IP "\fB-g \fIinitial_group\fR"
+group 名 称 或 以 数 字 来 做 为 使 用 者 登 入 起 始 群 组 (group) 。 群 组 名 须 为 现 有 存 在 的 名 称 。 群 组 数 字 也 须 为 现 有 存 在 的 群 组 。 预 设 的 群 组 数 字 为 1 。
+.IP "\fB-G \fIgroup,[...]\fR"
+定 义 此 使 用 者 为 此 一 堆 groups 的 成 员 。 每 个 群 组 使 用 ??区 格 开 来 , 不 可 以 夹 杂 空 白 字 元 。 群 组 名 同 -g 选 项 的 限 制 。 定 义 值 为 使用 者 的 起 始 群 组 。
+.IP \fB-m\fR
+使 用 者 目 录 如 不 存 在 则 自 动 建 立 。 如 使 用 -k 选 项 skeleton_dir 内 的 档 案 将 复 制 至 使 用 者 目 录 下 。 然 而 在 /etc/skel 目 录 下 的 档 案 也 会 复 制 过 去 取 代 。 任 何 在 skeleton_dir or /etc/skel 的 目 录 也 相 同 会 在 使 用 者 目 录 下 一 一 建 立 。 The -k 同 -m 不 建 立 目 录 以 及 不 复 制 任 何 档 案 为 预 设 值 。
+.IP "\fB-o\fR"
+Allow create user with duplicate (non-unique) UID.
+.IP "\fB-p \fIpasswd\fR"
+The encrypted password, as returned by \fBcrypt\fR(3).
+The default is to disable the account.
+.IP "\fB-s \fIshell\fR"
+使 用 者 登 入 后 使 用 的 shell 名 称 。 预 设 为 不 填 写 , 这 样 系 统 会 帮 你 指 定 预 设 的 登 入 shell 。
+.IP "\fB-u \fIuid\fR"
+用 者 的 ID 值 。 必 须 为 唯 一 的 ID 值 , 除 非 用 -o 选 项 。 数 字 不 可 为 负 值。预 设 为 最 小 不 得 小 于 99 而 逐 次 增 加 。 0~99 传 统 上 是 保 留 给 系 统 帐 号 使 用 。
+.SS 改 变 预 设 值
+当 -D 选 项 出 现 时 , useradd 秀 出 现 在 的 预 设 值 , 或 是 藉 由 命 令 列 的 方 式 更 新 预 设 值 。 可 用 选 项 为 ∶
+.IP "\fB-b \fIdefault_home\fR"
+定 义 使 用 者 所 属 目 录 的 前 一 个 目 录 。 使 用 者 名 称 会 附 加 在 default_home 后 面 用 来 建 立 新 使 用 者 的 目 录 。 当 然 使 用 -d 后 则 此 选 项 无 效 。
+.IP "\fB-e \fIdefault_expire_date\fR"
+使 用 者 帐 号 停 止 日 期 。
+.IP "\fB-f \fIdefault_inactive\fR"
+帐 号 过 期 几 日 后 停 权 。
+.IP "\fB-g \fIdefault_group\fR"
+新 帐 号 起 始 群 组 名 或 ID 。 群 组 名 须 为 现 有 存 在 的 名 称 。 群 组 I D 也 须 为 现 有 存 在 的 群 组 。
+.IP "\fB-s \fIdefault_shell\fR"
+使 用 者 登 入 后 使 用 的 shell 名 称 。 往 后 新 加 入 的 帐 号 都 将 使 用 此 shell.
+.PP
+如 不 指 定 任 何 参 数 , useradd 显 示 目 前 预 设 的 值 。
+
+.SH NOTES
+The system administrator is responsible for placing the default
+user files in the \fI/etc/skel\fR directory.
+
+.SH "警告 CAVEATS"
+不 可 新 增 使 用 者 于 NIS 群 组 中 。 你 必 须 在 NIS 伺 服 器 上 执 行 。
+
+.SH "文件 FILES"
+/etc/passwd \- 使 用 者 帐 号 资 讯
+.br
+/etc/shadow \- 使 用 者 帐 号 资 讯 加 密
+.br
+/etc/group \- 群 组 资 讯 
+.br
+/etc/default/useradd \- 定 义 资 讯
+.br
+/etc/skel \- 系 统 广 义 设 定
+
+.SH "参见 SEE ALSO"
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR crypt (3),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH "作者 AUTHOR"
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
+
+.SH "[中文版维护人]"
+.B 软件教程之Linux Man 
+.SH "[中文版最新更新]"
+.B 1998.01.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/userdel.8 b/src/man8/userdel.8
new file mode 100644
index 0000000..03dea43
--- /dev/null
+++ b/src/man8/userdel.8
@@ -0,0 +1,80 @@
+.\" Copyright 1991 - 1994, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH USERDEL 8
+.SH NAME
+userdel \- 删 除 使 用 者 帐 号 及 相 关 档 案
+.SH "总览 SYNOPSIS"
+.B userdel
+[\fB-r\fR]
+.I login
+.SH "描述"
+userdel 命 令 修 改 系 统 帐 号 档 删 除 所 有 login 会 参 考 的 部 份 。 使 用 者 名 称 必 须是 存 在 的 。
+The options which apply to the \fBuserdel\fR command are:
+.IP \fB-r\fR
+使 用 者 目 录 下 的 档 案 一 并 移 除 。 在 其 他 位 置 上 的 档 案 也 将 一 一 找 出 并 删 除 。
+
+.SH "文件 FILES"
+/etc/passwd \- 使 用 者 帐 号 资 料
+.br
+/etc/shadow \- 使 用 者 帐 号 资 讯 加 密
+.br
+/etc/group \- 群 组 资 讯
+.SH "返回值 EXIT VALUES"
+0       \- success
+.br
+1       \- can't update password file
+.br
+2       \- bad command syntax
+.br
+6       \- specified user doesn't exist
+.br
+8       \- user currently logged in
+.br
+10      \- can't update group file
+.br
+12      \- can't remove home directory
+.SH "警告 CAVEATS"
+\fBuserdel\fR 不 允 许 你 移 除 正 在线 上 的 使 用 者 帐 号 。 你 必 须 砍 掉 此 帐 号 现 在 在 系 统 上 执 行 的 程 序 才 能 进 行 帐 号 删 除 。 不 能 在 NIS client 端 移 除 NIS 属 性 的 东 西 。 这 动 做 须 在 NIS server 端 上 执 行 。
+
+.SH "参见 SEE ALSO"
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR usermod (8)
+.SH "作者 AUTHOR"
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
+
+.SH "[中文版维护人]"
+.B 软件教程之Linux Man 
+.SH "[中文版最新更新]"
+.B 1998.01.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/usermod.8 b/src/man8/usermod.8
new file mode 100644
index 0000000..86eeddf
--- /dev/null
+++ b/src/man8/usermod.8
@@ -0,0 +1,100 @@
+.\" Copyright 1991 - 1994, Julianne Frances Haugh
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.TH USERMOD 8
+.SH NAME
+usermod \- 修 改 使 用 者 帐 号
+.SH "总览 SYNOPSIS"
+.TP 8
+\fBusermod\fR [\fB-c\fR \fIcomment\fR] [\fB-d\fR \fIhome_dir\fR [\fB-m\fR]]
+.br
+[\fB-e\fR \fIexpire_date\fR] [\fB-f\fR \fIinactive_time\fR]
+.br
+[\fB-g\fR \fIinitial_group\fR] [\fB-G\fR \fIgroup\fR [,...]]
+.br
+[\fB-l\fR \fIlogin_name\fR] [\fB-p\fR \fIpasswd\fR]
+.br
+[\fB-s\fR \fIshell\fR] [\fB-u\fR \fIuid\fR [\fB-o\fR]] [\fB-L\fR|\fB-U\fR]
+\fIlogin\fR
+.SH "描述"
+\fBusermod\fR 命 令 会 参 照 你 命 令 列 上 指 定 的 部 份 修 改 系 统 帐 号 档 。 下 列 为 usermod 可 选 用 的 参 数 。
+.IP "\fB-c \fIcomment\fR"
+更 新 使 用 者 帐 号 password 档 中 的 注 解 栏 , 一 般 是 使 用 chfn(1) 来 修 改 。
+.IP "\fB-d \fIhome_dir\fR"
+更 新 使 用 者 新 的 登 入 目 录 。 如 果 给 定 -m 选 项 , 使 用 者 旧 目 录 会 搬 到 新 的 目 录 去 ,如 旧 目 录 不 存 在 则 建 个 新 的 。
+.IP "\fB-e \fIexpire_date\fR"
+加 上 使 用 者 帐 号 停 止 日 期 。 日 期 格 式 为 MM/DD/YY.
+.IP "\fB-f \fIinactive_days\fR"
+帐 号 过 期 几 日 后 永 久 停 权。当 值 为 0 时 帐 号 则 立 刻 被 停 权 。 而 当 值 为 -1 时 则 关闭此功能 。预 设 值 为 -1。
+.IP "\fB-g \fIinitial_group\fR"
+更 新 使 用 者 新 的 起 始 登 入 群 组 。 群 组 名 须 已 存 在 。群 组 ID 必 须 参 照 既 有 的 的 群 组 。 群 组 ID 预 设 值 为 1 。
+.IP "\fB-G \fIgroup,[...]\fR"
+定 义 使 用 者 为 一 堆 groups 的 成 员 。 每 个 群 组 使 用 ??区 格 开 来 , 不 可 以 夹 杂 空 白 字 元 。 群 组 名 同 -g 选 项 的 限 制 。 如 果 使 用 者 现 在 的 群 组 不 再 此 列 , 则 将 使 用 者 由 该 群 组 中 移 除 。
+.IP "\fB-l \fIlogin_name\fR"
+变 更 使 用 者 login 时 的 名 称 为 login_name 。 其 于 不 变 。 特 别 是 , 使 用 者 目 录 名 应 该 也 会 跟 着 更 动 成 新 的 登 入 名 。
+.IP "\fB-p \fIpasswd\fR"                                                
+The encrypted password, as returned by \fBcrypt\fR(3).                      
+.IP "\fB-s \fIshell\fR"
+指 定 新 登 入 shell 。 如 此 栏 留 白 , 系 统 将 选 用 系 统 预 设 shell 。
+.IP "\fB-u \fIuid\fR"
+用 者 ID 值 。必 须 为 唯 一 的 ID 值 , 除 非 用 -o 选 项 。 数 字 不 可 为 负 值。预 设 为 最 小 不 得 小 于 99 而 逐 次 增 加 。 0~99 传 统 上 是 保 留 给 系 统 帐 号 使 用 。 使 用 者 目 录 树 下 所 有 的 档 案 目 录 其 user ID 会 自 动 改 变 。 放 在 使 用 者 目 录 外 的 档 案 则 要 自 行 手 动 更 动 。
+.IP "\fB-L\fR"
+Lock a user's password.
+This puts a '!' in front of the encrypted password, effectively disabling
+the password.  You can't use this option with \fI-p\fR or \fI-U\fR.
+.IP "\fB-U\fR"
+Unlock a user's password.
+This removes the '!' in front of the encrypted password.
+You can't use this option with \fI-p\fR or \fI-L\fR.
+.SH "警告 CAVEATS"
+\fBusermod\fR 不 允 许 你 改 变 正 在线 上 的 使 用 者 帐 号 名 称 。 当 usermod 用 来 改 变 user ID, 必 须 确 认 这 名 user 没 在 电 脑 上 执 行 任 何 程 序。 你 需 手 动 更 改 使 用 者 的 crontab 档 。 也 需 手 动 更 改 使 用 者 的 at 工 作 档 。 采 用 NIS server 须 在 server 上 更 动 相 关 的 NIS 设 定 。
+.SH "文件 FILES"
+/etc/passwd \- 使 用 者 帐 号 资 讯
+.br
+/etc/shadow \- 使 用 者 帐 号 资 讯 加 密
+.br
+/etc/group \- 群 组 资 讯
+
+.SH "参见 SEE ALSO"
+.BR chfn (1),
+.BR chsh (1),
+.BR passwd (1),
+.BR crypt (3),
+.BR groupadd (8),
+.BR groupdel (8),
+.BR groupmod (8),
+.BR useradd (8),
+.BR userdel (8)
+.SH "作者 AUTHOR"
+Julianne Frances Haugh (jockgrrl at ix.netcom.com)
+
+.SH "[中文版维护人]"
+.B 软件教程之Linux Man 
+.SH "[中文版最新更新]"
+.B 1998.01.01
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+
diff --git a/src/man8/vidmode.8 b/src/man8/vidmode.8
new file mode 100644
index 0000000..901bd75
--- /dev/null
+++ b/src/man8/vidmode.8
@@ -0,0 +1 @@
+.so man8/rdev.8
diff --git a/src/man8/vmstat.8 b/src/man8/vmstat.8
new file mode 100644
index 0000000..857133f
--- /dev/null
+++ b/src/man8/vmstat.8
@@ -0,0 +1,113 @@
+.\"  This page Copyright (C) 1994 Henry Ware <al172 at yfn.ysu.edu>
+.\"; 中文版版权所有 soloman, Laser www.linuxforum.net 2000
+.\"  Distributed under the GPL, Copyleft 1994.
+.TH VMSTAT 8 "27 July 1994 " "Throatwobbler Ginkgo Labs" "Linux 系统管理员手册"
+.SH NAME
+vmstat \- 报告虚拟内存的统计信息
+.SH 总览
+vmstat [\-n] [延时[次数]]
+.br
+vmstat [\-V]
+.SH 描述
+vmstat 对系统的进程情况、内存使用情况、交换页和 I/O 块使用情况、
+中断以及 CPU 使用情况进行统计并报告相应的信息。
+
+第一个显示内容指出了计算机自上次重启至今的平均使用情况。
+后面的每一行信息是按
+.I 延时
+定期地显示系统的各部分信息。
+进程信息和内存信息都是即时产生的。
+
+.SS 选项
+\fB-n\fP 开关令第一次的信息只显示一次而不是周期地产生。
+.PP
+.I 延时
+是以秒为单位的刷新时间间隔。
+如果没有给出此延时时间,则仅显示系统启动至今的平均值。
+.PP
+.I 次数
+指的是更新的次数。
+如果没有指定此数而又定义了延时时间,则次数的默认值是无穷次。
+.PP
+\fB-V\fP 开关可以用来输出该命令的版本信息。
+.SH 输出信息简介
+.SS
+.B "Procs"
+.NF
+r: 等待运行的进程数
+b: 处在非中断睡眠状态的进程数
+w: 被交换出去的可运行的进程数。
+此数由 linux 计算得出,但 linux 并不耗尽交换空间
+.fi
+.PP
+.SS
+.B "Memory"
+.nf
+swpd: 虚拟内存使用情况,单位:KB
+free: 空闲的内存,单位KB
+buff: 被用来做为缓存的内存数,单位:KB
+.fi
+.PP
+.SS
+.B Swap
+.nf
+si: 从磁盘交换到内存的交换页数量,单位:KB/秒
+so: 从内存交换到磁盘的交换页数量,单位:KB/秒
+.fi
+.PP
+.SS
+.B "IO"
+.nf
+bi: 发送到块设备的块数,单位:块/秒
+bo: 从块设备接收到的块数,单位:块/秒
+.fi
+.PP
+.SS
+.B "System"
+.nf
+in: 每秒的中断数,包括时钟中断
+cs: 每秒的环境(上下文)切换次数
+.fi
+.PP
+.SS
+.B "CPU"
+按 CPU 的总使用百分比来显示
+.nf
+us: CPU 使用时间
+sy: CPU 系统使用时间
+id: 闲置时间
+.nf
+.SH 注意
+运行
+.B "vmstat "
+不须要特别的使用权限
+.PP
+这些系统信息是用来向用户提供分析系统瓶颈问题信息的。
+linux在计算进程情况时不将正在运行的
+.B "vmstat "
+自己计算进去。
+.PP
+当前所在的 linux 块的大小都是 1K,而 CD-ROM 文件系统的块大小为 2K。
+.SH 相关文件
+.ta
+.nf
+/proc/meninfo
+/proc/stat
+/proc/*/stat
+.fi
+
+.SH 又见
+ps(1),top(1),free(1)
+.SH 臭虫
+该命令不会对系统的每个设备的块输入输出进行列表,也不对系统调用进行计数。
+.SH 作者
+该程序由 Henry Ware <all72 at yfn.ysu.edu>完成
+
+Throatwobbler Ginkgo Labs 27 July 1994
+
+.SH "[中文版维护人]"
+.B 所罗门 <solomen at email.com.cn>
+.SH "[中文版最新更新]"
+2000/11/26
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/xinetd.8 b/src/man8/xinetd.8
new file mode 100644
index 0000000..66c2fc0
--- /dev/null
+++ b/src/man8/xinetd.8
@@ -0,0 +1,140 @@
+.\"(c) Copyright 1992 by Panagiotis Tsirigotis
+.\"(c) Sections Copyright 1998-2001 by Rob Braun
+.\"All rights reserved.  The file named COPYRIGHT specifies the terms
+.\"and conditions for redistribution.
+.\"
+.TH XINETD 8 "14 June 2001"
+.\" *************************** NAME *********************************
+.SH NAME
+xinetd \- 扩展的互联网服务守护进程
+.\" *************************** SYNOPSIS *********************************
+.SH 总览 SYNOPSIS
+.B xinetd
+[\fIoptions\fP]
+.\" *************************** DESCRIPTION *********************************
+.SH 描述 DESCRIPTION
+\fBxinetd\fP 执行与 \fBinetd\fP 相同的任务:它启动提供互联网服务的程序。与在系统初始化时启动这些服务器,让它们保持休眠,直到有连接请求到达才提供服务这种做法不同,\ fBxinetd\fP 是唯一的被启动的守护进程,它侦听各种服务在它们各自的配置文件中列出的所有端口。当一个请求到达,\fBxinetd\fP  启动合适的服务器。因为它以这种方式操作,\fBxinetd\fP (还有 \fBinetd\fP) 常被称作超级服务器。
+.LP
+列在 \fBxinetd\fP 的配置文件中的服务可以分为两组。第一组的服务称为
+.I "多线程的 (multi-threaded)"
+并且它们需要为每个新的连接请求产生 (fork) 一个新的服务器进程。接下来新的服务器将处理那个连接。对于这些服务,\fBxinetd\fP 保持侦听新的请求从而可以孵化 (spawn) 新的服务器。另一方面,第二组包含着需要由服务器守护进程处理所有新的连接请求的服务。这些服务称为
+.I "单线程的 (single-threaded)"
+并且 \fBxinetd\fP 将停止为它们处理新的请求,直到这个服务器退出。这个组中的服务一般都是基于数据报的。
+.LP
+至今,超级服务器存在的唯一理由是通过避免大量产生生命周期中大部分时间可能都是空闲着的进程,从而节省系统资源。当实现这种功能时,\ fBxinetd\fP 从超级服务器这种思想中获得了好处,可以提供访问控制和日志等特性。更进一步,\fBxinetd\fP 不仅限于侦听
+.I /etc/services
+中列出的服务。因此,任何人都可以使用 \fBxinetd\fP 来启动特殊用途的服务器。
+.\" *************************** OPTIONS *********************************
+.SH 选项 OPTIONS
+.TP
+.BR \-d
+启用调试模式。这样将产生大量调试输出,并且使得在 \fBxinetd\fP 上使用一个调试器成为可能。
+.TP
+.BI \-syslog " syslog_facility"
+这个选项使得 syslog 使用指定的日志功能来记录 \fBxinetd\fP 产生的消息。可以使用下列功能:
+.I daemon,
+.I auth,
+.I user,
+.I "local[0-7]"
+(参见 \fIsyslog.conf(5)\fP 来查看它们的意义)。这个选项在 debug 模式是无效的,因为所有的相关信息都将送到终端上。
+.TP
+.BI \-filelog " logfile"
+\fBxinetd\fP 产生的信息将放到指定文件中。信息总是添加到文件之后。如果文件不存在,将会被创建。这个选项在 debug 模式无效,因为所有的相关信息都将送到终端上。
+.TP
+.BI \-f " config_file"
+决定\fBxinetd\fP 用来配置的文件。默认设置是 \fI/etc/xinetd.conf\fP。
+.TP
+.BR \-pidfile " pid_file"
+.br
+进程 ID 被写入的文件。这个选项在 debug 模式无效。
+.TP
+.BI \-dontfork
+指定\fBxinetd\fP 在前台运行,而不是分离自身以支持由 init 或 daemontools 运行。这个选项自动设置了
+.B \-stayalive
+(参见下面)。
+.TP
+.BI \-stayalive
+指定\fBxinetd\fP 保持运行,即使没有指定服务。
+.TP
+.BI \-limit " proc_limit"
+这个选项为
+.B xinetd
+可以启动的并行运行的进程数设置了一个上限。目的是防止进程表溢出。
+.TP
+.BI \-logprocs " limit"
+这个选项为服务远程用户的并行运行的进程数设置了一个上限。
+.TP
+.BI \-version
+这个选项使得 xinetd 打印出它的版本信息。
+.TP
+.BI \-inetd_compat
+这个选项使得 xinetd 在标准的配置文件之外,附加地读取\fI/etc/inetd.conf\fR。\fI/etc/inetd.conf\fR 的读取是在读取标准的配置文件之后。
+.TP
+.BI \-cc " interval"
+这个选项指定
+.B xinetd
+每
+.I interval
+秒对内部状态进行一次定时的一致性检查。
+.LP
+\fIsyslog\fP 和 \fIfilelog\fP 选项是互相独立的。如果没有指定任何一个,默认将使用 syslog 的
+.I daemon
+功能。你不应将 \fBxinetd\fP 信息与和服务日志相关的信息相混淆。后者只有在配置文件中指定之后才会记录。
+.\" *********************** CONTROLLING XINETD ****************************
+.SH "控制 xinetd CONTROLLING XINETD"
+.LP
+\fBxinetd\fP 收到一定的信号时会执行一定的动作。与特定信号相关联的特定动作可以通过修改 \fIconfig.h\fP 并且重新编译来重新定义。
+.TP 15
+.B SIGHUP
+导致一个强制的重新配置,意味着 \fBxinetd\fP 重新读取配置文件,停止不再有效的服务的服务器。在正在运行的服务器上将刷新访问控制,检查远程位置,访问时间和服务器实例。如果允许的服务器实例数减少了,一些随机选取的服务器将会被杀掉来满足限制; 这将在任何服务器停止\fI之后\fR发生,因为不能通过远程位置或访问时间的检查(this will happen \fIafter\fP any servers are terminated because of failing the remote location or access time checks)。还有,如果
+.B INTERCEPT
+标志被清除后又重新设置,此服务的任何运行中的服务器将被停止。\fI这样做的目的是保证在强制的重新配置之后,没有那种接受从不遵循访问控制标准的地址发来的包的服务器在运行。
+.TP
+.B SIGQUIT
+导致程序退出。
+.TP
+.B SIGTERM
+在 \fBxinetd\fP 退出之前,停止所有运行中的服务器。
+.TP
+.B SIGUSR1
+导致内部状态转储 (默认的转储文件是 \fI/var/run/xinetd.dump\fP;要改变文件名,修改 \fIconfig.h\fP 然后重新编译。)
+.TP
+.B SIGIOT
+导致一个内部一致性检查来核对程序使用的数据结构没有崩溃。当检查结束时,
+.B xinetd
+将产生一个消息,报告测试是成功了还是失败了。
+.LP
+重新配置的时候,日志文件被关闭又重新打开。这样做允许移除旧的日志文件。
+.\" *********************** FILES ****************************
+.SH 文件 FILES
+.LP
+.PD .1v
+.TP 20
+.B /etc/xinetd.conf
+默认的配置文件
+.TP
+.B /var/run/xinetd.dump
+默认的转储文件
+.PD
+.\" *********************** SEE ALSO ****************************
+.SH "参见 SEE ALSO"
+.I "inetd(8),"
+.LP
+.I "xinetd.conf(5),"
+.LP
+.I "xinetd.log(5)"
+.LP
+.I "http://cr.yp.to/daemontools.html
+.\" *********************** AUTHOR ****************************
+.SH 作者 AUTHOR
+Panos Tsirigotis, CS Dept, University of Colorado, Boulder
+Rob Braun
+.\" *********************** PRONUNCIATION ****************************
+.SH 发音 PRONUNCIATION
+zy-net-d
+.SH "[中文版维护人]"
+.B 袁乙钧 <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003.11.04
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/man8/zdump.8 b/src/man8/zdump.8
new file mode 100644
index 0000000..b723f32
--- /dev/null
+++ b/src/man8/zdump.8
@@ -0,0 +1,44 @@
+.\"  Chinese Version Copyright mhss, www.linuxforum.net, 2000
+.TH ZDUMP 8
+.SH NAME
+zdump \- 时区输出器
+.SH SYNOPSIS 总览
+.B zdump
+[
+.B \-v
+] [
+.B \-c
+cutoffyear ] [ zonename ... ]
+.SH 描述
+.I Zdump
+对命令行中的每一个
+.I zonename
+输出其当前时间。
+.PP
+提供了以下选项:
+.TP
+.B \-v
+对于命令行的每一个
+.I zonename
+,
+输出可能的最早时间值,可能的最早时间一天以后的时间值,
+它们均是能被检测到的精确时刻的1秒前的时间值,
+可能的最晚时间一天以前的时间值, 可能的最晚时间值,
+如果给出的时间是夏令时,每行以
+.B isdst=1
+结束,否则以
+.B isdst=0
+结束。
+.TP
+.BI "\-c " cutoffyear
+在给定的年份开始的前后,剪切掉冗余的输出。
+.SH "又见"
+newctime(3), tzfile(5), zic(8)
+.\" @(#)zdump.8 7.3
+
+.SH [中文版维护人]
+.B mhss <jijingzhisheng at up369.com>
+.SH [中文版最新更新]
+2000/12/05
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man8/zic.8 b/src/man8/zic.8
new file mode 100644
index 0000000..08bc837
--- /dev/null
+++ b/src/man8/zic.8
@@ -0,0 +1,381 @@
+.\"  Chinese Version Copyright mhss, www.linuxforum.net, 2000
+.TH ZIC 8
+.SH NAME
+zic - 时区编辑器
+.SH 总览
+.B zic
+[
+.B \-v
+] [
+.B \-d
+.I directory
+] [
+.B \-l
+.I localtime
+] [
+.B \-p
+.I posixrules
+] [
+.B \-L
+.I leapsecondfilename
+] [
+.B \-s
+] [
+.B \-y
+.I command
+] [
+.I filename 
+\&... ]
+.SH 描述
+.if t .ds lq ``
+.if t .ds rq ''
+.if n .ds lq \&"\"
+.if n .ds rq \&"\"
+.de q
+\\$3\*(lq\\$1\*(rq\\$2
+..
+.I Zic
+从文件中读取文本输入,文件的名字是用命令行指定的;
+然后生成时间转换信息文件,此文件由输入指定。
+如果
+.I 文件名
+是
+.BR \-
+,从
+标准输入中读取。 
+.PP
+可得到以下选项:
+.TP
+.BI "\-d " 目录
+在指定的目录中生成时间转换信息文件,而不是下面的标准
+的目录名。 
+.TP
+.BI "-l " 时区
+用给定的时区作为本地时间。
+.I Zic
+对此选项的对待如同在输入中有下面格式的连接行
+.sp
+.ti +.5i
+连接 (从) \fI时区\fP (到)本地时间
+.TP
+.BI "-p " 时区
+当处理 POSIX 格式的时区环境变量时,使用给定的时区规则。
+.I Zic
+对此选项的对待如同在输入中有下面格式的连接行
+.sp
+.ti +.5i
+连接 (从) \fI时区\fP  (到)POSIX规则
+.TP
+.BI "-L " 闰秒文件名
+从指定名字的文件中读闰秒信息。
+如果不使用本选项,则在输出文件中不出现闰秒信息。
+.TP 10
+译注: 早期的日期时间度量采用天文方法,GMT (Greenwich Mean
+Time,格林威治平均时) 中的 Greenwich 所指称的是英国的一个
+天文台。1948年发明了原子钟,当前使用铯133原子钟的国际原子
+时间(TAI)与地球的公转和自转无关。由于地球自转的速度逐渐变
+慢,为保持与太阳运动的同相, 当 TAI 与太阳时之间的差距达
+到 800ms 时,在太阳时中加入闰秒调快太阳时的时间系统。矫正
+后的时间称为 UTC 时间(Universal Coordinated Time,世界时)。
+PC 机以本机器内的晶振计时, 没有与 UTC 时间同步的机制。UTC
+是法语的缩写。
+引自:现代操作系统/Andrew S. Tanebaum 著。-北京: 机械工业
+出版社,1999.11。第 11 章,第 11.1.2 节;第 5 章,
+第 5.4.1 节。
+.TP
+.B \-v 
+当出现在数据文件中的年超出了
+.IR time (2)
+可表示的值的年的范围时提出申诉。
+(让用户知道他干不了超出自身能力的事)
+.TP
+.B \-s
+限定在输出文件中存储的时间值无论被作为有符号或无符号
+均是同一个值。你能用此选项生成 SVVS 兼容文件。
+.TP 8
+译注: 传统 UNIX 使用三十二位有符号整数计数器以秒为单位计
+时,以1970年1月1日为零起点,在2038年将溢出,负数可表示到
+1901年。Linux 使用三十二位无符号整数计数器以秒为单位计时,
+以1970年1月1日为零起点,在2106年将溢出。由此决定了时间值
+的范围(至少是在 ANSI C 中)。
+引自:现代操作系统/Andrew S. Tanebaum 著。-北京: 机械工业
+出版社,1999.11。第 5 章,第 5.4.2 节。
+.TP
+.BI "-y "命令
+当检测年的类型时,使用给定的
+.I 命令
+,而不是
+.B yearistype
+(见后)
+.PP
+输入行由字段组成。字段之间以白空格字符(空格或 TAB)分隔。
+前导和后挂的白空格将被忽略。在输入中的未加引号的 # 号
+表示直到其所在行结束的部分是注释。如果要在字段中使用空白和 # 号,
+你要把它们用双引号括起来。任何(去除了注释后的)空行将被
+忽略。非空行应是以下三种类型之一: 规则行,时区行,连接行。
+.PP
+规则行的格式
+.nf
+.ti +.5i
+.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
+.sp
+Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+.sp
+例如:
+.ti +.5i
+.sp
+Rule	US	1967	1973	\-	Apr	lastSun	2:00	1:00	D
+.sp
+.fi
+组成规则行的字段是:
+.TP "\w'LETTER/S'u"
+.B "NAME " 名字
+给出此条规则所属的规则集的名字,名字可任意起。
+.B "FROM " 从...(年)
+给出本规则应用的启始年份。提供的年份可以是任何整数;
+.B "minimum " 最小
+(或其略写)一词的意思是可表示成整数的最小年份。
+.B "maximum " 最大
+(或其略写)一词的意思是可表示成整数的最大年份。
+规则可以描述不能以时间值表示的时间,
+但忽略不能以时间值表示的时间,
+这允许规则在不同时间值类型的主机之间有可移植性。
+.TP
+.B "TO "到...(年)
+给出本规则应用的终止年份。除了上面的
+.B 最大
+和
+.B 最小 
+,
+.B "only " 唯一
+(或其略写)一词的意思是与
+.B FROM
+字段有相同的值。 
+.TP
+.B "TYPE "类型 
+给出本规则应用的年份类型。如果
+.B TYPE
+是
+.B \-
+,则本规则应用于包含在
+.B FROM
+和
+.B TO
+之间的所有年份。如果是其他类型,则
+.B Zic
+执行下面的命令
+.ti +.5i
+\fByearistype\fP \fIyear\fP \fItype\fP
+.br
+来检测某一年的类型: 退出状态 0 表示此年是给定的类型;
+退出状态非 0 表示此年不是给定的类型。 
+.TP
+.B "IN "在...(月)
+给出本规则有效的月份的名字。月份的名字可用缩写。
+.TP
+.B "ON "在...(日) 
+给出本规则有效的日期。可识别的日期的格式包括:
+.in +.5i
+.sp
+.ta \w'Sun<=25\0\0'u
+5	一个月的第 5 天
+lastSun	一个月的最后的星期天
+lastMon	一个月的最后的星期一
+Sun>=8	一个月的第 8 天以后(含第 8 天)的第一个星期天
+Sun<=25	一个月的第 25 天以前(含第 25 天)的最后一个星期天
+.fi
+.in -.5i
+.sp
+星期的名字是可以缩写或全拼。注意在
+.B ON
+字段中不能有空格。
+.TP
+.B "AT "在...(时间)
+给出本规则有效的时间。可识别的时间的格式包括:
+.nf
+.in +.5i
+.sp
+.ta \w'1:28:13\0\0'u
+2	用小时表示的时间
+2:00	用小时:分钟表示的时间
+15:00	用 24 制小时表示的时间 (表示下午的时间)
+1:28:14	用小时:分钟:秒钟表示的时间
+.fi
+.in -.5i
+.sp
+这里午夜 0 点是一天开始, 午夜 24 点是一天结束。
+对于任何以上格式,如果给定的时间是本地的
+.q "墙钟"
+时间,可以后跟字母
+.B w ;
+如果给定的时间是本地的
+.q "标准"
+时间,可以后跟字母
+.B s ;
+果给定的时间世界时间,可以后跟字母
+.B u
+(或
+.B g
+或
+.B z )
+如果没写此种指示符,假定是"墙钟"时间。
+.TP 8
+译注:例如我的"墙钟"时间是北京时间(GMT+8),我的本地标准时间
+是 GMT+9(哈尔滨所在的时区的时间)。
+.TP
+.B "SAVE "补偿
+给出当本规则有效时增加到本地标准时间上的时间量。
+本字段与
+.I AT
+字段格式相同(当然,未使用
+.B w 和
+.B s 后缀)。
+.TP
+.B "LETTER/S "字母
+给出当本规则有效时时区缩写的
+.q "可变部分"
+(例如,
+.q "EST" 中
+的
+.q "S" 或
+.q "EDT" 中的
+.q "D" )。如果本字段是
+.BR \- ,可变部分是空。 
+.PP
+时区行格式
+.sp
+.nf
+.ti +.5i
+.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
+Zone	NAME	GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+.sp
+例如:
+.sp
+.ti +.5i
+Zone	Australia/Adelaide	9:30	Aus	CST	1971 Oct 31 2:00
+.sp
+.fi
+组成规则行的字段是:
+.TP "\w'GMTOFF'u"
+.B "NAME "名字
+时区的名称,被作为为时区而生成的时间转换文件的名字。
+.TP
+.B "GMTOFF "GMT-偏移量
+为得到本时区的标准时间而应加到 UTC 时间上的时间量。
+本字段与规则行的
+.B AT
+和
+.B SAVE
+有相同的格式;字段值是负值
+(即以负号开始)表示要从 UTC 时间上减去的时间量。
+.TP
+.B "RULES/SAVE "规则/补偿 
+本时区应用的规则的名字,或者是应加到本地标准时间上的
+时间量 。如果本字段是
+.B \- ,则本时区总是用标准时间。
+.TP
+.B "FORMAT "格式
+本时区的时区缩写的格式。字符对
+.B %s
+表示时区缩写的
+.q "可变部分"
+。另外,/ 符号(斜扛) 分隔标准时和夏令时的缩写。
+.TP
+.B "UNTIL "直到
+是某个位置的 UTC 偏移量或规则改变的时间。它被指定为 
+某年某月某日某时。如果指定了本字段,直到指定的时间之
+后,才会产生从改变了的 UTC 偏移量和规则生成的时区信息。
+某年某月某日某时的格式同于规则中的 IN、ON 和 AT 列;
+随后的列可以省略,给未写出的列的缺省值是可能的最早的值。
+.IP
+下一行必须是一个
+.q 接续
+的行,就是说,除了字符串
+.q Zone
+和名字省略了之外,与时区行有一样的格式;接续行在上一行
+的
+.B UNTIL
+字段所指定的时间开始后,按本行的 UTC 偏移量或规
+则在上一行名字字段指定的文件中生成时区信息。接续行可以
+有象时区行一样的
+.B UNTIL 字段,用于指示下一行是自己的接续。
+.TP 8
+译注:上面的这段绕口令的意思是
+zome 输出的时区文件名 规则1 规则2生效时间
+规则2 规则3生效时间 
+规则n
+.PP
+连接行格式
+.sp
+.nf
+.ti +.5i
+.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u
+Link	LINK-FROM	LINK-TO
+.sp
+例如:
+.sp
+.ti +.5i
+Link	Europe/Istanbul	Asia/Istanbul
+.sp
+.fi
+.B LINK-FROM
+字段的值应是在某个时区行的
+.B NAME 名字
+字段上出现过;
+.B LINK-TO
+字段是那个时区的可替代的名字。
+.PP
+除了接续行之外,行可在文件中以任意顺序出现。
+.PP
+描述闰秒的文件中的行有以下格式: 
+.nf
+.ti +.5i
+.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
+.sp
+Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
+.sp
+例如:
+.ti +.5i
+.sp
+Leap	1974	Dec	31	23:59:60	+	S
+.sp
+.fi
+字段
+.B YEAR、
+.B MONTH、
+.B DAY 
+和
+.B HH:MM:SS
+说明什么时侯闰秒出现。 
+.B CORR
+字段在应增加一秒时是
+.q + ,在应减少一秒时是
+.q - 。
+在其他字段给出的闰秒时间应被解释为 UTC 时间的情况下,
+.B R/S
+字段应是
+S
+(
+.q Stationary
+静止一词的缩写);在其他字段给出的闰秒时间应被解释
+为本地墙钟时间的情况下,
+.B R/S
+字段应是 R(
+.q Rolling 滚动一词的缩写)。 
+.SH 注意
+对于有多于两种类型的本地时间的地区,你可能需要用最早变更时
+间的规则的
+.B AT
+字段中的本地标准时间,来确保记录在编译的文件
+中的最早变更时间是正确的。 
+.SH 相关文件
+/usr/local/etc/zoneinfo 生成的文件所在的标准目录。
+.sh 又见
+newctime(3), tzfile(5), zdump(8)
+
+.SH [中文版维护人]
+.B mhss <jijingzhisheng at up369.com>
+.SH [中文版最新更新]
+2000/12/05
+.SH "[中国 Linux 论坛 man 手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
diff --git a/src/man9/cmanexample.9 b/src/man9/cmanexample.9
new file mode 100644
index 0000000..210a014
--- /dev/null
+++ b/src/man9/cmanexample.9
@@ -0,0 +1,55 @@
+.\" 文件最前面的注释等等请保留不要翻译,不明白其意义的代码也请保留
+
+.TH example 9 cman1.4 "Nov 01,2003"
+.\" 注意上面一行中的空格。
+
+.SH NAME
+\fBexample\fR \- 在这里插入一句话的简介
+
+.SH "总览 (SYNOPSIS)"
+\fBexample\fR [options] arguments
+
+.SH "描述 (DESCRIPTION)"
+在这里插入描述
+
+\fBman9\fR 应当是 “内核文档” 但是由于内核文档一般不以 man 形式出现 所以这里借用一下,存放一个翻译好的手册页的框架。正确的位置应当是 \fBman7\fR 即 “杂项” 中。参见 \fIman\fR(1) 中对于各类手册页用途的叙述。
+
+.SH "选项 (OPTIONS)"
+在这里插入对选项的说明
+
+.SH "示例 (EXAMPLE)"
+在这里插入示例
+
+.SH "版本 (VERSION)"
+在这里插入版本,如果有的话
+
+.SH "参见 (SEE ALSO)"
+如果在翻译工作之外,还参加了软件包的管理,请参阅下列文档:
+.BR nroff(1) ,
+.BR groff(1) ,
+.BR troff(1) ,
+.BR groff(7) ,
+.BR man(1) ,
+.BR mdoc-samples(7)
+
+.SH BUGS
+在这里插入BUGS 的描述,如果有的话
+
+.SH "作者 (AUTHORS)"
+作者等信息不需要翻译和变化
+
+.SH "版权 (COPYRIGHT)"
+版权信息也不需要翻译和变化
+
+.br
+下面六行签名档只需要修改相应内容
+.SH "[中文版维护人]"
+.B 名字 <电子邮件>
+.SH "[中文版最新更新]" 
+.B 2001/02/24
+.SH "[中国linux论坛中文手册页翻译计划]"
+.BI http://cmpp.linuxforum.net
+
+.\" 请在这里以注释形式加入译者的
+.\" 名字<电子邮件>
+.\" 并加入自己所做工作的概述
diff --git a/src/man9/cmanformat.9 b/src/man9/cmanformat.9
new file mode 100644
index 0000000..1afb23d
--- /dev/null
+++ b/src/man9/cmanformat.9
@@ -0,0 +1,316 @@
+.\" 说明:本文件演示 man 文件格式,可供翻译 man pages 及编写 man 相关的程序参考
+
+.TH cmanformat 9 2000.10.6 "RedCandle LinuxForum" " man 格式演示 "
+
+.SH NAME
+cmanformat \- 不是命令啦,是个演示文件 :)
+
+.SH "总览 SYNOPSIS"
+
+略
+
+.SH "描述 DESCRIPTION"
+
+cmanformat 是 man pages 格式的演示文件。
+
+由于系统不同会有差异。在 XWindow 下会好些。
+
+.SH ___________________________________
+.BR 
+.SH 字体演示
+
+.TP
+
+黑 体 字
+
+.B 黑体字黑体字黑体字黑体字黑体字
+
+.TP
+
+黑体和下划线 (或斜体) 交替 (描述函数时非常有用)
+
+.BI "黑体"\fR和\fP下划线 "黑体"\fR和\fP下划线
+
+.TP
+
+黑体和普通体交替 (描述引用时非常有用)
+
+.BR "黑体"\fR和\fP普通体 "黑体"\fR和\fP普通体
+
+.TP
+
+下划线 (或斜体,系统不同会有差异)
+
+.I 下划线下划线下划线下划线下划线
+
+.TP
+
+下划线 (或斜体) 和黑体交替
+
+.IB "下划线 (或斜体) "\fR和\fP黑体 "下划线 (或斜体) "\fR和\fP黑体
+
+.TP
+
+下划线 (或斜体) 和普通体交替
+
+.IR "下划线 (或斜体) "\fR和\fP普通体 "下划线 (或斜体) "\fR和\fP普通体
+
+.TP
+
+普通体和下划线 (或斜体) 交替
+
+.RI "普通体"\fR和\fP下划线 "普通体"\fR和\fP下划线
+
+.TP
+
+小 号 字
+
+.SM 小号字小号字小号字小号字小号字
+
+.TP
+
+小号字和黑体交替
+
+.SB "小号字"\fR和\fP黑体
+
+.SH ___________________________________
+.BR
+.SH 缩进演示
+
+.I 无缩进
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.I 相对缩进
+
+.P
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.RS
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.RS
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.RS
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.RS
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.RS
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.RE
+.RE
+.RE
+.RE
+.RE
+
+.P
+
+.I 悬挂式缩进
+
+.HP
+
+aaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.P
+
+.I 悬挂标签缩进 1 (不贴标签)
+
+.IP
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.P
+
+.I 悬挂标签缩进 2.1 (贴短标签)
+
+.IP 标签
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.P
+
+.I 悬挂标签缩进 2.2 (贴长标签)
+
+.IP 很长的标签
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.P
+
+.I 悬挂标签(和 IP 相同)
+
+.TP
+
+aaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.SH ___________________________________
+.BR
+.SH 超级链接 (转换为其他格式文件时有用)
+
+1) .UR http://www.sina.com.cn
+
+.UE
+
+2) .UN "link to sina"
+
+.UR http://www.sina.com.cn
+
+.UE
+
+.UN "link to sina"
+
+.SH ___________________________________
+.BR
+.P
+
+.SH 杂项宏
+
+.P
+
+.I 在段中空开一定距离 (好象不起作用) :(
+
+.PD
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.P
+
+.I 段中的子标题
+
+.SS 子标题
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaa
+
+.SH ___________________________________
+.BR
+.SH 预定义字符串
+
+\*R 注册符号
+
+\*S 改变成缺省字体大小
+
+\*(Tm 商标符号
+
+\*(lq 左双引号
+
+\*(rq 右双引号
+
+.SH ___________________________________
+.BR
+.SH "返回值 Return Value"
+
+无
+
+.SH "退出状态 Exit Status"
+
+无
+
+.SH "选项 OPTIONS"
+
+无
+
+.SH "参数 ARGUMENTS"
+
+无
+
+.SH "用法 USAGES"
+
+如果你是没有运行过 man cmanformat 就在命令行运行一下。
+不过除了这种办法,你也不大可能看到这段介绍。:)
+
+告诉我,你是从什么地方得知本文档的--选项有:
+.br
+朋友,家人,报纸,网络,说明书
+
+.SH "文件 FILES"
+
+cmanformat.9
+
+.SH "环境 ENVIRONMENT"
+
+也许会和你的locale 即语言环境设置有关。
+再说一遍,如果你正常地看到了这几行字,就完全没有问题了;
+但是如果你看不到,那我也不可能在这里给你提出建议。
+参见 \fBman\fR(1) 和相关命令 \fBless\fR(1), \fBgroff\fR(1) 的文档
+
+.SH "诊断 DIAGNOSIS"
+
+略
+
+.SH "安全要点 SECURITY ISSUE"
+
+请放心使用
+
+.SH "注意 NOTES"
+
+无
+
+.SH "已知漏洞 KNOWN BUGS"
+
+在字符界面下有些字体无法显示(只能显示普通体和黑体),
+这是中文字库的不足,目前没有办法解决。
+
+.SH "作者 AUTHORS"
+
+.TP
+
+RedCandle
+
+redcandle51 at chinaren.com
+
+.SH "参见 SEE ALSO"
+
+man(7), groff(1), less(1)
+
+参与翻译的成员请注意DOCS 目录提供的词汇表,还有以下内容:
+man手册中文版的署名的形式为:
+(一定要保留原英文作者名字,版权等信息,只要将下面一段复制粘贴到文档最后即可,注意空格)
+.SH "[中文版维护人]"
+可以将译者信息放在这里,如果译者不想管理自己的“产品”,也可以把信息放在注释中,就像这样
+.br
+.B .\e" 姓名 <email>
+.br
+.B RedCandle <email>
+.SH "[中文版最新更新]"
+.B yyyy.mm.dd
+.SH "[中国linux论坛中文手册页翻译计划]:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/manl/cbdsqr.l b/src/manl/cbdsqr.l
new file mode 100644
index 0000000..4d5c4b2
--- /dev/null
+++ b/src/manl/cbdsqr.l
@@ -0,0 +1,143 @@
+.TH CBDSQR l "15 June 2000" "LAPACK version 3.0"
+.SH NAME
+CBDSQR - 计算一个实 (real) NxN 上/下 (upper/lower) 三角 (bidiagonal) 矩阵 B 的单值分解 (singular value decomposition (SVD))
+.SH "总览 SYNOPSIS"
+.TP 19
+SUBROUTINE CBDSQR(
+UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,
+LDU, C, LDC, RWORK, INFO )
+.TP 19
+.ti +4
+CHARACTER
+UPLO
+.TP 19
+.ti +4
+INTEGER
+INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
+.TP 19
+.ti +4
+REAL
+D( * ), E( * ), RWORK( * )
+.TP 19
+.ti +4
+COMPLEX
+C( LDC, * ), U( LDU, * ), VT( LDVT, * )
+.SH PURPOSE
+CBDSQR computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B: B = Q * S * P' (P' denotes the transpose of P), where S is a diagonal matrix with
+non-negative diagonal elements (the singular values of B), and Q
+and P are orthogonal matrices.
+.br
+
+The routine computes S, and optionally computes U * Q, P' * VT,
+or Q' * C, for given complex input matrices U, VT, and C.
+
+See "Computing  Small Singular Values of Bidiagonal Matrices With
+Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
+LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11,
+no. 5, pp. 873-912, Sept 1990) and
+.br
+"Accurate singular values and differential qd algorithms," by
+B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics
+Department, University of California at Berkeley, July 1992
+for a detailed description of the algorithm.
+.br
+
+.SH ARGUMENTS
+.TP 8
+UPLO    (input) CHARACTER*1
+= 'U':  B is upper bidiagonal;
+.br
+= 'L':  B is lower bidiagonal.
+.TP 8
+N       (input) INTEGER
+The order of the matrix B.  N >= 0.
+.TP 8
+NCVT    (input) INTEGER
+The number of columns of the matrix VT. NCVT >= 0.
+.TP 8
+NRU     (input) INTEGER
+The number of rows of the matrix U. NRU >= 0.
+.TP 8
+NCC     (input) INTEGER
+The number of columns of the matrix C. NCC >= 0.
+.TP 8
+D       (input/output) REAL array, dimension (N)
+On entry, the n diagonal elements of the bidiagonal matrix B.
+On exit, if INFO=0, the singular values of B in decreasing
+order.
+.TP 8
+E       (input/output) REAL array, dimension (N)
+On entry, the elements of E contain the
+offdiagonal elements of of the bidiagonal matrix whose SVD
+is desired. On normal exit (INFO = 0), E is destroyed.
+If the algorithm does not converge (INFO > 0), D and E
+will contain the diagonal and superdiagonal elements of a
+bidiagonal matrix orthogonally equivalent to the one given
+as input. E(N) is used for workspace.
+.TP 8
+VT      (input/output) COMPLEX array, dimension (LDVT, NCVT)
+On entry, an N-by-NCVT matrix VT.
+On exit, VT is overwritten by P' * VT.
+VT is not referenced if NCVT = 0.
+.TP 8
+LDVT    (input) INTEGER
+The leading dimension of the array VT.
+LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if NCVT = 0.
+.TP 8
+U       (input/output) COMPLEX array, dimension (LDU, N)
+On entry, an NRU-by-N matrix U.
+On exit, U is overwritten by U * Q.
+U is not referenced if NRU = 0.
+.TP 8
+LDU     (input) INTEGER
+The leading dimension of the array U.  LDU >= max(1,NRU).
+.TP 8
+C       (input/output) COMPLEX array, dimension (LDC, NCC)
+On entry, an N-by-NCC matrix C.
+On exit, C is overwritten by Q' * C.
+C is not referenced if NCC = 0.
+.TP 8
+LDC     (input) INTEGER
+The leading dimension of the array C.
+LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC = 0.
+.TP 8
+RWORK   (workspace) REAL array, dimension (4*N)
+.TP 8
+INFO    (output) INTEGER
+= 0:  successful exit
+.br
+< 0:  If INFO = -i, the i-th argument had an illegal value
+.br
+> 0:  the algorithm did not converge; D and E contain the
+elements of a bidiagonal matrix which is orthogonally
+similar to the input matrix B;  if INFO = i, i
+elements of E have not converged to zero.
+.SH PARAMETERS
+.TP 8
+TOLMUL  REAL, default = max(10,min(100,EPS**(-1/8)))
+TOLMUL controls the convergence criterion of the QR loop.
+If it is positive, TOLMUL*EPS is the desired relative
+precision in the computed singular values.
+If it is negative, abs(TOLMUL*EPS*sigma_max) is the
+desired absolute accuracy in the computed singular
+values (corresponds to relative accuracy
+abs(TOLMUL*EPS) in the largest singular value.
+abs(TOLMUL) should be between 1 and 1/EPS, and preferably
+between 10 (for fast convergence) and .1/EPS
+(for there to be some accuracy in the results).
+Default is to lose at either one eighth or 2 of the
+available decimal digits in each computed singular value
+(whichever is smaller).
+.TP 8
+MAXITR  INTEGER, default = 6
+MAXITR controls the maximum number of passes of the
+algorithm through its inner loop. The algorithms stops
+(and so fails to converge) if the number of passes
+through the inner loop exceeds MAXITR*N**2.
+
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.B yyyy.mm.dd
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/manl/lapack.l b/src/manl/lapack.l
new file mode 100644
index 0000000..0714e44
--- /dev/null
+++ b/src/manl/lapack.l
@@ -0,0 +1,154 @@
+.TH LAPACK l "2 April 1993" "LAPACK Version 1.1" "LAPACK FORTRAN LIBRARY ROUTINES"
+
+.SH 什么是 LAPACK ?
+.in -0.3i
+\fBLAPACK\fR 是一个 \fIFortran 77\fR 子程序的 transportable library ,
+用来解决多数数字线性代数中共同的问题:
+systems of linear equations, linear least squares problems, eigenvalue problems,
+还有 singular value problems. 
+它在大部分现代的高性能计算机中可以高效地运作。
+
+\fBLAPACK\fR 是 \fILINPACK\fR 和 \fIEISPACK\fR 的后继者。
+它扩展了这些库的功能,包含了线性系统的
+equilibration, iterative refinement, error bounds, 和 driver routines,
+routines for computing and re-ordering the Schur factorization,
+还有 condition estimation routines for eigenvalue problems.  
+\fBLAPACK\fR 通过包含
+finding singular values and eigenvalues of bidiagonal and tridiagonal matrices
+respectively that arise in SVD and symmetric eigenvalue problems 
+的高精度算法提高了 \fIEISPACK\fR 中标准算法的精度。
+这些算法和软件被重新编写,在向量处理器上,高性能 ``superscalar'' 工作站上和
+共享内存的多处理器上都可以获得高效率。
+\fBLAPACK\fR 软件还附带了一个复杂的测试和时间测算套件。
+ 
+.SH 如何得到 LAPACK
+.in -0.3i
+完整的 \fBLAPACK\fR 软件包可以从 xnetlib 和 NAG 得到,也可以从 netlib 获得特定的库。
+要查看 \fBLAPACK\fR 内容的描述,向 netlib at ornl.gov 发一封消息类型为:
+\fIsend index from lapack\fR 的电子邮件。
+
+Xnetlib is an X-version of netlib recently developed at the University
+of Tennessee and Oak Ridge National Laboratory.  Unlike netlib, which
+uses electronic mail to process requests for software and other text,
+xnetlib uses an X Window graphical user interface and a socket-based
+connection between the user's machine and the xnetlib server machine to
+process software requests. The complete contents of LAPACK is available
+in tar/compress format from xnetlib.
+
+To receive a copy of xnetlib send the message "send xnetlib.shar from
+xnetlib" to netlib at ornl.gov.
+
+When you receive the shar file, remove the mail header, save it to a
+file, type 'sh filename' and follow the instructions in the README
+file.
+
+Alternatively, the complete LAPACK package can be
+obtained from NAG on magnetic media for a handling charge. 
+For further details contact NAG at one of the following addresses:
+ 
+.nf
+NAG Inc	                      NAG Ltd              NAG GmbH
+1400 Opus Place               Wilkinson House      Schleissheimerstrasse 5
+Suite 200                     Jordan Hill Road     W-8046 Garching bei Munchen
+Downers Grove, IL 60515-5702  Oxford OX2 8DR       Germany 
+USA                           England
+Tel: +1 708 971 2337          Tel: +44 865 511245  Tel: +49 89 3207395
+Fax: +1 708 971 2706          Fax: +44 865 310139  Fax: +49 89 3207396
+.fi
+ 
+LAPACK has been thoroughly tested, on many different
+types of computers.  The LAPACK project supports the package in the
+sense that reports of errors or poor performance will gain immediate
+attention from the developers. Such reports, descriptions
+of interesting applications, and other comments should be sent by
+electronic mail to lapack at cs.utk.edu.
+
+.SH LAPACK USERS' GUIDE
+.in -0.3i
+The LAPACK Users' Guide is published by SIAM and was made available
+May, 1992.  LAPACK Users' Guide gives an informal introduction to
+the design of the algorithms and software, summarizes the contents
+of the package, and describes the conventions used in the software
+and documentation, and includes complete specifications for calling
+the routines.  The LAPACK Users' Guide can be purchased from:
+SIAM; 3600 University City Science Center; Philadelphia, PA 19104-2688;
+215-382-9800, FAX 215-386-7999.  It will also be available from
+booksellers.  The Guide costs $15.60 for SIAM members, and $19.50
+for non-members.  Please specify order code OT31 when ordering.
+To order by email, send email to service at siam.org.
+
+A list of known problems, bugs, and compiler errors for LAPACK, as 
+well as errata for the LAPACK Users' Guide and the LAPACK code itself, is
+maintained on netlib.  For a copy of this report, send email to
+netlib at ornl.gov with a message of the form: send release_notes from
+lapack.
+
+.SH LAPACK WORKING NOTES
+.in -0.3i
+A number of working notes were written during the
+development of LAPACK and published as LAPACK Working Notes,
+initially by Argonne National Laboratory and later by the University
+of Tennessee.  Many of these reports have subsequently appeared as
+journal articles.  Most of these working notes are available in postscript
+form from netlib.  To receive a list of available reports, send email to
+netlib at ornl.gov with a message of the form: send index from lapack/lawns.
+Otherwise, requests for copies of these working notes can be sent to
+the following address.
+
+LAPACK Project
+c/o J.J. Dongarra
+Computer Science Department
+University of Tennessee
+Knoxville, Tennessee 37996-1301
+USA
+Email: lapack at cs.utk.edu
+ 
+.SH ACKNOWLEDGEMENTS
+.in -0.3i
+LAPACK has been funded in part by NSF, DOE, and DARPA, with
+developmental support from NAG Ltd., Cray Research, and many friends
+and colleagues around the world.
+ 
+
+Ed Anderson, Zhao-jun Bai, Chris Bischof, Jim Demmel, Jack Dongarra,
+Jeremy Du Croz, Anne Greenbaum, Sven Hammarling, Alan McKenney,
+Susan Ostrouchov, and Danny Sorensen
+ 
+             (           l    l    l    l )
+             (           a   -a    a   -a )
+       1/4 * ( p    p             -p   -p )
+             ( a   -a             -a    a )
+             ( c    c   -c   -c           )
+             ( k   -k   -k    k           )
+
+ 
+.SH NAMING SCHEME
+.in -0.3i
+The name of each LAPACK routine is a coded specification of
+its function (within the very tight limits of standard Fortran 77
+6-character names).
+ 
+All driver and computational routines have names of the form XYYZZZ,
+where for some driver routines the 6th character is blank.
+ 
+The first letter, X, indicates the data type as follows:
+ 
+      S  REAL
+      D  DOUBLE PRECISION
+      C  COMPLEX
+      Z  COMPLEX*16  or DOUBLE COMPLEX
+ 
+The next two letters, YY, indicate the type of matrix (or of the most
+significant matrix).  Most of these two-letter codes apply to both real
+and complex matrices; a few apply specifically to one or the other.
+ 
+The last three letters ZZZ indicate the computation performed.
+For example, SGEBRD is a single precision routine that performs a
+bidiagonal reduction (BRD) of a real general matrix.
+
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.B yyyy.mm.dd
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/manl/zdrot.l b/src/manl/zdrot.l
new file mode 100644
index 0000000..5f98493
--- /dev/null
+++ b/src/manl/zdrot.l
@@ -0,0 +1,123 @@
+.SH NAME
+
+.SH "总览 SYNOPSIS"
+.TP 18
+SUBROUTINE ZDROT(
+N, CX, INCX, CY, INCY, C, S )
+.TP 18
+.ti +4
+INTEGER
+INCX, INCY, N
+.TP 18
+.ti +4
+DOUBLE
+PRECISION C, S
+.TP 18
+.ti +4
+COMPLEX*16
+CX( * ), CY( * )
+.TP 18
+.ti +4
+INTEGER
+I, IX, IY
+.TP 18
+.ti +4
+COMPLEX*16
+CTEMP
+.TP 18
+.ti +4
+IF(
+N.LE.0 )
+RETURN
+.TP 18
+.ti +4
+IF(
+INCX.EQ.1 .AND. INCY.EQ.1 )
+GO TO 20
+.TP 18
+.ti +4
+IX
+= 1
+.TP 18
+.ti +4
+IY
+= 1
+.TP 18
+.ti +4
+IF(
+INCX.LT.0 )
+IX = ( -N+1 )*INCX + 1
+.TP 18
+.ti +4
+IF(
+INCY.LT.0 )
+IY = ( -N+1 )*INCY + 1
+.TP 18
+.ti +4
+DO
+10 I = 1, N
+.TP 18
+.ti +4
+CTEMP
+= C*CX( IX ) + S*CY( IY )
+.TP 18
+.ti +4
+CY(
+IY ) = C*CY( IY ) - S*CX( IX )
+.TP 18
+.ti +4
+CX(
+IX ) = CTEMP
+.TP 18
+.ti +4
+IX
+= IX + INCX
+.TP 18
+.ti +4
+IY
+= IY + INCY
+.TP 18
+.ti +4
+10
+CONTINUE
+.TP 18
+.ti +4
+RETURN
+.TP 18
+.ti +4
+20
+CONTINUE
+.TP 18
+.ti +4
+DO
+30 I = 1, N
+.TP 18
+.ti +4
+CTEMP
+= C*CX( I ) + S*CY( I )
+.TP 18
+.ti +4
+CY(
+I ) = C*CY( I ) - S*CX( I )
+.TP 18
+.ti +4
+CX(
+I ) = CTEMP
+.TP 18
+.ti +4
+30
+CONTINUE
+.TP 18
+.ti +4
+RETURN
+.TP 18
+.ti +4
+END
+.SH PURPOSE
+
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.B yyyy.mm.dd
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/manl/zdrscl.l b/src/manl/zdrscl.l
new file mode 100644
index 0000000..7da3805
--- /dev/null
+++ b/src/manl/zdrscl.l
@@ -0,0 +1,47 @@
+.TH ZDRSCL l "15 June 2000" "LAPACK version 3.0"
+.SH NAME
+ZDRSCL - 使用实数量 1/a 乘一个 n 维复向量
+.SH "总览 SYNOPSIS"
+.TP 19
+SUBROUTINE ZDRSCL(
+N, SA, SX, INCX )
+.TP 19
+.ti +4
+INTEGER
+INCX, N
+.TP 19
+.ti +4
+DOUBLE
+PRECISION SA
+.TP 19
+.ti +4
+COMPLEX*16
+SX( * )
+.SH "目的 PURPOSE"
+ZDRSCL 使实数量 1/a 与 n 维复向量相乘。只要最终结果 x/a 不会上溢或下溢,那么这个函数也不会。
+.br
+
+.SH "参数 ARGUMENTS"
+.TP 8
+N       (输入) 整型
+向量 x 的分量个数
+.TP 8
+SA      (输入) 双精度
+数量 a,用来除 x 的每个分量。SA 必须大于0,否则这个子过程将除以零
+.TP 8
+SX      (输入/输出) 16个复数的阵列 (COMPLEX*16 array),dimension
+(1+(N-1)*abs(INCX))
+The n-element vector x.
+.TP 8
+INCX    (输入) 整型
+向量 SX 连续值间的步进
+> 0:  SX(1) = X(1) 且 SX(1+(i-1)*INCX) = x(i),     1< i<= n
+
+.SH "[中文版维护人]"
+.B bbbush <bbbush at 163.com>
+.br
+不会翻译这些非常专业的 manl 文档,看样子不会继续了
+.SH "[中文版最新更新]"
+.B 2003.11.22
+.SH "《中国linux论坛man手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net 
diff --git a/src/mann/ArrowButton.n b/src/mann/ArrowButton.n
new file mode 100644
index 0000000..3261292
--- /dev/null
+++ b/src/mann/ArrowButton.n
@@ -0,0 +1,99 @@
+.TH ArrowButton "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B ArrowButton 带有一个箭头形状的按钮组件。
+
+.SH 创建 CREATION
+.B ArrowButton pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+ArrowButton 根据 type 选项而可以有两种类型: 对 button 类型,它是在其上画着一个箭头的一个标准按钮;对于 arrow 类型,它是象滚动条的箭头那样的一个箭头。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-armcommand
+指定当在 ArrowButton 上点击鼠标按钮 1 的时候与 ArrowButton 相关联的一个 Tcl 命令。在 repeatdelay 或 repeatinterval 选项是正整数的时候,如果鼠标指针在这个按钮之上,则反复的调用这个命令,直到释放鼠标按钮 1。
+
+.TP
+-arrowbd
+在 ArrowButton 的 type 是 arrow 的时候,指定箭头的边框宽度。必须是 1 或 2。
+
+.TP
+-arrowrelief
+在 ArrowButton 的 type 是 arrow 的时候,指定箭头的面型(relief)。必须是 raised 或 sunken。
+
+.TP
+-clean
+为箭头指定品质级别,在 0 到 2 之间。如果是 0,则用最大的宽度和高度画这个箭头。If 1, the base of arrow is arranged to be odd to have same edges. If 2, the base of arrow is arranged to be odd and the orthogonal to be (base+1)/2 to have 'straight' diagonal for edges. 
+
+.TP
+-command
+指定与 ArrowButton 相关联的一个 Tcl 命令。典型的当鼠标按钮 1 在 ArrowButton 窗口上释放的时候调用这个命令。
+
+.TP
+-dir
+指定箭头的方向: top、bottom、left 或 right。 
+
+.TP
+-disarmcommand
+指定在鼠标按钮 1 释放的时候与 ArrowButton 相关联的一个 Tcl 命令。即使鼠标指针不在 ArrowButton 上也要调用这个命令,并且总是在用 command 选项指定的命令之前。它典型的与 armcommand、repeatdelay 和 repeatinterval 联合使用。
+
+.TP
+-height
+为 ArrowButton 指定想要的高度。值的单位是屏幕单位。
+
+.TP
+-helptext
+动态帮助的文本。如果为空,则这个组件不能获得帮助。
+
+.TP
+-helptype
+动态帮助的类型。使用 balloon 或 variable.
+
+.TP
+-helpvar
+在 helptype 选项是 variable 的时候使用的变量。
+
+.TP
+-ipadx
+指定在 ArrowButton 边框和箭头的左右两边之间的一个最小边距(pad)。这个值的单位是屏幕单位。
+
+.TP
+-ipady
+指定在 ArrowButton 边框和箭头的上下两边之间的一个最小边距(pad)。这个值的单位是屏幕单位。
+
+.TP
+-state
+指定 ArrowButton 为三种状态之一: normal、active、或 disabled。 如果 ArrowButton 的 type 是 button: 在普通状态下,使用 foreground 和 background 选项来显示 ArrowButton。在指针处于 ArrowButton 之上的时候典型的使用活跃状态。在活跃状态下,使用 activeforeground 和 activebackground 选项显示 ArrowButton。在停用状态下,使用 disabledforeground 和 background 选项显示 ArrowButton。 如果 ArrowButton 的 type 是 arrow: 只改变箭头的颜色。总是使用 troughcolor 选项显示 ArrowButton 的背景。在普通状态下,使用 background 选项显示 ArrowButton。在指针处于 ArrowButton 之上的时候典型的使用活跃状态。在活跃状态下,使用 activebackground 选项显示 ArrowButton。在停用状态下,用模 [...]
+
+.TP
+-type
+决定 ArrowButton 的类型: button 是标准按扭外观,arrow 是滚动条的箭头外观。
+
+.TP
+-width
+为 ArrowButton 指定想要的宽度。值的单位是屏幕单位。 
+
+.SH 组件命令
+
+.TP
+pathName cget  option
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。 
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。
+
+.TP
+pathName invoke 
+如果 ArrowButton 的 state 不是停用。它调用这个按钮的命令。用活跃颜色和 sunken 面型(relief)重新显示 ArrowButton,并调用 armcommand。接着用普通颜色和它定义的面型显示 ArrowButton,并调用 disarmcommand 接着调用 command.
+
+在 ArrowButton 获得输入聚焦并且用户按 space bar 的时候调用 invoke。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/04
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/Button.n b/src/mann/Button.n
new file mode 100644
index 0000000..8d29968
--- /dev/null
+++ b/src/mann/Button.n
@@ -0,0 +1,89 @@
+.TH Button "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B Button - 有增强选项的按钮组件
+
+.SH 创建 CREATION
+.B Button pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+Button 组件向 Tk 按钮组件扩展了新选项。增加了动态帮助 (\fIDynamicHelp\fR) 选项,一个新面型(relief)式样,arm/disarm 回调,和 repeatdelay/repeatinterval 选项。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-armcommand
+指定当在 Button 上点击鼠标按钮 1 的时候与 Button 相关联的一个 Tcl 命令。在 repeatdelay 或 repeatinterval 选项是正整数的时候,如果鼠标指针在这个按钮之上,则反复的调用这个命令,直到释放鼠标按钮 1。
+
+.TP
+-command  
+指定与 Button 相关联的一个 Tcl 命令。典型的当鼠标按钮 1 在 Button 窗口上释放的时候调用这个命令。
+
+.TP
+-default  
+指定缺省 ring 为三种状态之一: normal、active、或 disabled。在活跃状态下,用这个平台特定的缺省按钮的外观绘制这个按钮。在普通状态下,用这个平台特定的非缺省按钮的外观来绘制这个按钮,留出足够的空间来绘制缺省按钮外观。普通和活跃状态将导致相同大小的按钮。在停用状态下,用非缺省按钮外观来绘制这个按钮,但不为缺省外观留下空间。停用状态将导致比活跃状态更小的按钮。
+
+.TP
+-disarmcommand  
+指定在鼠标按钮 1 释放的时候与 Button 相关联的一个 Tcl 命令。即使鼠标指针不在 Button 上也要调用这个命令,并且总是在用 command 选项指定的命令之前。它典型的与 armcommand、repeatdelay 和 repeatinterval 联合使用。
+
+.TP
+-height  
+为 Button 指定想要的高度。如果在 Button 中显示一个图象或位图,则这个值单位是屏幕单位; 对于文本它以行为单位。如果未指定这个选项,则从在其中显示的图象或位图或文本的大小来计算 Button 的需要的高度。
+
+.TP
+-helptext  
+动态帮助的文本。如果为空,则这个组件不能获得帮助。
+
+.TP
+-helptype  
+动态帮助的类型。使用 balloon 或 variable.
+
+.TP
+-helpvar  
+在 helptype 选项是 variable 的时候使用的变量。
+
+.TP
+-name  
+为这个按钮指定一个标准名字。如果在资源数据库中找到选项 *nameName,则从它的值中提取 text 和 underline 选项。
+
+.TP
+-relief  
+为这个组件指定想要的 3-D 效果。可接受的值是按钮面型(relief)的标准值(raised、sunken、 flat、ridge、solid、和 groove) 和 link,它指定当指针在按钮外面的时候按钮的面型是 flat 而在指针在里面的时候是 raised。
+
+.TP
+-state  
+指定这个 Button 为三种状态之一: normal、active、或 disabled。在普通状态下,使用 foreground 和 background 选项显示这个 Button。典型的在指针在这个 Button 之上的时候使用活跃状态。在活跃状态下,使用 activeforeground 和 activebackground 选项显示这个 Button。停用状态意味着这个按钮应当是没有感觉的(insensitive): 缺省绑定将拒绝激活这个组件并将忽略鼠标按扭按下。在这种状态下,使用 disabledforeground 和 background 选项显示这个 Button。
+
+.TP
+-underline  
+指定在这个按钮的标签中要有下划线的字符的整数索引。0 对应显示的文本的第一个字符,1 对应下一个字符,以此类推。
+
+在这个按钮的顶层窗口上自动把绑定 <Alt-char> 自动的设置为调用 Button::setfocus。
+
+.TP
+-width  
+为 Button 指定想要的宽度。如果在 Button 中显示一个图象或位图,则这个值单位是屏幕单位; 对于文本它以字符为单位。如果未指定这个选项,则从在其中显示的图象或位图或文本的大小来计算 Button 的需要的宽度。 
+
+.SH 组件命令
+
+.TP
+pathName cget  option
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。
+
+.TP
+pathName invoke 
+如果 Button 的 state 不是停用。它调用这个按钮的命令。用活跃颜色和 sunken 面型(relief)重新显示 Button,并调用 armcommand。接着用普通颜色和它定义的面型显示 Button,并调用 disarmcommand 接着 command。
+
+在 Button 获得输入聚焦并且用户按 space bar 的时候调用 invoke。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/04
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/ComboBox.n b/src/mann/ComboBox.n
new file mode 100644
index 0000000..08f1e17
--- /dev/null
+++ b/src/mann/ComboBox.n
@@ -0,0 +1,74 @@
+.TH ComboBox "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B ComboBox - ComboBox 组件
+
+.SH 创建 CREATION
+.B ComboBox pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+ComboBox 组件使用户能在用 values 选项给出的一个列表中选择一个值。通过按 ArrowButton,或在 ComboBox 的 editable 的值是 false 的时候在录入栏中点击,弹出可能值的列表。
+如果 ComboBox 的 editable 的值是 true 并且录入栏获得了聚焦,用户可以按上下箭头键来修改它的值。如果当前值精确的匹配在列表中的一个值,则显示列表中的前一个(向上箭头键)或下一个(向下箭头键)值。如果当前值匹配在列表中的一个值的开始,则显示这个值。如果当前值不匹配任何东西,则显示第一个值。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-height  
+为个这个窗口指定想要的高度,以行为单位(in lines)。如果它小于等于零,则这个窗口要求的高度只是足够大得装下在列表框中所有的元素。
+
+.TP
+-modifycmd  
+指定在用户通过在列表框中选择一个值或按上下箭头键来修改 ComboBox 框的值的时候调用的一个 Tcl 命令。
+
+.TP
+-postcommand  
+指定在映射 ComboBox 的列表框之前调用的一个 Tcl 命令。
+
+.TP
+-values  
+指定在 ComboBox 的列表框中显示的值。
+
+.SH 组件命令
+
+.TP
+pathName bind ?arg...? 
+在录入组件上设置绑定。
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。
+
+.TP
+pathName getvalue  
+返回 ComboBox 的当前文本在值的列表中的索引,如果它不匹配任何值则返回 -1。
+
+.TP
+pathName setvalue index  
+把 ComboBox t的文本设置成用在值的列表中的索引指示的值。index 可以被指定为任何下列形式:
+
+last
+指定值的列表的最后一个元素。 
+
+first
+指定值的列表的第一个元素。 
+
+next
+指定值的列表的当前元素(就是 getvalue 返回的那个)的下一个元素。 
+
+previous
+指定值的列表的当前元素(就是 getvalue 返回的那个)的上一个元素。 
+
+ at number
+指定在值的列表的整数索引。
+
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/04
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/Dialog.n b/src/mann/Dialog.n
new file mode 100644
index 0000000..fbafa35
--- /dev/null
+++ b/src/mann/Dialog.n
@@ -0,0 +1,117 @@
+.TH Dialog "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B Dialog  - 有定制按钮的对话框
+
+.SH 创建 CREATION
+.B Dialog pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+Dialog 组件使用户能建立一个对话框。一些命令接受一个 index 参数来指示在哪个 Button 上工作。这个索引与 ButtonBox 命令由相同的规定:
+
+number 
+用数值来指定 Button,这里的 0 对应于第一个增加的 Button,1 对应下一个,以此类推。
+
+endor 或 last
+指示最后添加的项目。 
+
+default
+指示缺省 Button。
+
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+.TP
+-anchor (read-only)
+指定 ButtonBox 的定位点(anchor point)。必须是 w、e、n、s、c 之一。如果 side选项被设置为 top或 bottom,anchor值 n、s和 c有相同的效果。如果 side选项被设置为 left或 right,anchor值 w、e和 c有相同的效果。
+
+.TP
+-bitmap (read-only)
+指定在用户框架的左面显示的一个位图。image选项屏弃 bitmap。
+
+.TP
+-cancel
+指定这个 Dialog 的取消按钮的编号。当用户在 Dialog 中按下 Esc 的时候,调用这个按钮。
+
+.TP
+-default
+指定这个 Dialog 的缺省按钮的编号。当用户在 Dialog 中按下 Return 的时候,调用这个按钮。
+
+.TP
+-image (read-only)
+指定在用户框架的左面显示一个图像。image选项屏弃 bitmap。
+
+.TP
+-modal
+这个选项必须是 none, local或 global。这个选项的值指定对话框的 grab 模式和如何完成 Dialog::draw。
+
+.TP
+-parent
+这个 Dialog 的父窗口。Dialog 在它的父窗口中居中。如果为空。则在根窗口中居中。
+
+.TP
+-separator (read-only)
+指定在用户框架和 ButtonBox 之间是否绘制一个分隔线。
+
+.TP
+-side (read-only)
+指定在相对于用户框架的何处绘制 ButtonBox。必须是 top、left、bottom或 right 之一。
+
+.TP
+-titleDialog 
+顶层窗口的标题. 
+
+
+.SH 组件命令
+
+.TP
+pathName add?arg...? 
+向这个对话框的按钮框增加一个按钮。缺省的 -command 选项是 Dialog::enddialog $path index,这里的 index是增加的按钮的编号。
+
+.TP
+pathName cget option
+返回用 option 给出的配置选项的当前值。Option可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure?option? ?valueoptionvalue...? 
+查询或修改这个组件的配置选项。如果未指定 option,则返回描述 pathName的所有可获得的选项的一个列表。如果指定了不带 value的 option,则这个命令返回描述这个指名的 option的一个列表(这个列表与未指定 option所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option可以是能被建立命令接受的任何值。只读选项不可修改。
+
+.TP
+pathName draw?focus? 这个命令绘制 Dialog,并把 grab 设置为依从 modal选项。如果 modal选项设置成 none,则这个命令立即返回一个空串。在所有其他情况下,在调用 Dialog::enddialog或销毁 Dialog 的时候这个命令返回。返回值是 Dialog::enddialog的 result参数,如果是被销毁的则返回 -1。
+
+缺省的把焦点设置到用 default 选项引用的缺省按钮上,如果没有设置缺省按钮则在 Dialog 的顶层窗口上。如果 focus 存在,则它必须是一个路径名,或者是到一个按钮的索引。最初的焦点被设置到这个路径或对应的按钮上。
+
+.TP
+pathName enddialog  result 
+典型的在按钮的命令内调用这个命令来使 Dialog::draw 返回。 
+
+.TP
+pathName getframe 
+返回这个用户窗口的路径名。
+
+.TP
+pathName invoke index 
+调用由 index 给出的按钮。
+
+.TP
+pathName itemcget index option 
+返回这个项目的一个配置选项的当前值。Option 可以是这个项目的建立命令能接受的任何值。
+
+.TP
+pathName itemconfigure index ?option? ?value option value ...? 
+这个命令类似于 configure 命令,但是它为单独的项目提供选项,而 configure 为作为整体的组件提供选项。Options 可以是项目建立组件命令可接受的任何值。如果指定了选项,则依据命令的指示修改选项并且命令返回一个空串。如果未指定选项,则返回描述这个项目的当前选项的一个列表。只读选项不能修改。
+
+.TP
+pathName setfocus index 
+把焦点设置到用 index 给出的按钮。
+
+.TP
+pathName withdraw 
+调用这个命令来隐藏这个对话框。
+
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/13
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/Http.n b/src/mann/Http.n
new file mode 100644
index 0000000..4837bdf
--- /dev/null
+++ b/src/mann/Http.n
@@ -0,0 +1,571 @@
+'\"
+'\" Copyright (c) 1995-1997 Sun Microsystems, Inc.
+'\" Copyright (c) 1998-2000 by Ajuba Solutions.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "Http" n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+Http \- HTTP/1.0 协议客户端的实现。
+.SH 总览 SYNOPSIS
+\fBpackage require http ?2.4?\fR
+.sp
+\fB::http::config \fI?options?\fR
+.sp
+\fB::http::geturl \fIurl ?options?\fR
+.sp
+\fB::http::formatQuery \fIlist\fR
+.sp
+\fB::http::reset \fItoken\fR
+.sp
+\fB::http::wait \fItoken\fR
+.sp
+\fB::http::status \fItoken\fR
+.sp
+\fB::http::size \fItoken\fR
+.sp
+\fB::http::code \fItoken\fR
+.sp
+\fB::http::ncode \fItoken\fR
+.sp
+\fB::http::data \fItoken\fR
+.sp
+\fB::http::error \fItoken\fR
+.sp
+\fB::http::cleanup \fItoken\fR
+.sp
+\fB::http::register \fIproto port command\fR
+.sp
+\fB::http::unregister \fIproto\fR
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+\fBhttp\fR包提供 HTTP/1.0 协议的客户端。这个包实现了 HTTP/1.0 的 GET、POST、和 HEAD 操作。它允许配置一个代理(proxy)主机来通过防火墙。这个包与 \fBSafesock\fR 安全策略相容,所以可以被不可信任的 applets 用来从一些受限制的主机做 URL 取回(fetching)。可以扩展这个包来支持附加的 HTTP 传输协议,比如 HTTPS,通过 \fBhttp::register\fR,提供一个定制的 \fBsocket\fR 命令。
+.PP
+\fB::http::geturl\fR 过程做一次 HTTP 事务(transaction)。它的 \fIoptions \fR (选项)确定完成 GET、POST、或 HEAD 事务中的那一个。\fB::http::geturl\fR 的返回值是这个事务的一个记号(token)。这个值也是在::http 名字空间中一个数组的名字,这个数组包含关于这个事务的信息。这个数组的元素在状态数组章节中描述。
+.PP
+如果指定了 \fB-command\fP 选项,则在后台做这个 HTTP 操作。\fB::http::geturl\fR 在生成一个 HTTP 请求和在事务完成时调用的回调过程(callback)之后立即返回。要使它工作,Tcl 事件循环必须是活跃的(active)。在 Tk 应用中总是真的。对于纯 Tcl 应用,调用者可以在调用 \fB::http::geturl\fR 之后使用 \fB::http::wait\fR 来启动事件循环。
+.SH 命令 COMMANDS
+.TP
+\fB::http::config\fP ?\fIoptions\fR?
+使用 \fB::http::config\fR 命令来设置和查询代理服务器的和端口的名字,和在 HTTP 请求中使用的用户代理(User-Agent)名字。如果未指定选项,则返回当前的配制。如果指定了一个单一的参数,则它应该是下面描述的标志之一。在这种情况下返回设置的当前值。否则,选项应该是定义配置的一系列标志和值:
+.RS
+.TP
+\fB\-accept\fP \fImimetypes\fP
+(指定)请求的接受(类型)头部(header)。缺省是 */*,这意味者接受所有类型的文档。否则你可以提供用逗号分隔的你想接收的 mime(多用途互连网邮件扩展)类型模式的一个列表。例如,"image/gif, image/jpeg, text/*"。
+.TP
+\fB\-proxyhost\fP \fIhostname\fP
+如果有代理服务器主机的话,它是代理服务器主机的名字。如果这个值是空串,则直接联系 URL 主机。
+.TP
+\fB\-proxyport\fP \fInumber\fP
+代理服务器端口。
+.TP
+\fB\-proxyfilter\fP \fIcommand\fP
+这个命令设置在 \fB::http::geturl\fR 期间的一个回调过程,用来决定是否为一个给定主机而要求一个代理服务器。在调用它的时候,向命令 \fIcommand\fR 添加的一个参数是主机名字。如果要求一个代理服务器,则这个回调过程应该返回一个有两个元素的数组,分别是代理服务器和代理服务端口。否则这个过滤器应该返回一个空列表。在 \fB\-proxyhost\fR 和 \fB\-proxyport\fR 设置非空的时候,缺省的过滤器返回它们的值。
+.TP
+\fB\-useragent\fP \fIstring\fP
+在 HTTP 请求中客户代理头部的值。缺省是 \fB"Tcl http client package 2.2."\fR
+.RE
+.TP
+\fB::http::geturl\fP \fIurl\fP ?\fIoptions\fP? 
+\fB::http::geturl\fR 命令是包中的主过程。\fB\-query\fR 选项导致一个 POST 操作,而 \fB\-validate\fR 选项导致一个 HEAD 操作;否则,进行一个 GET 操作。\fB::http::geturl\fR 命令返回一个 \fItoken\fR (记号)值,可用它来获得关于这次事务的信息。详情参见状态数组和错误章节。除非用 \fB\-command\fR 选项指定在 HTTP 事务完成时调用的一个回调过程,否则 \fB::http::geturl\fR 命令在操作完成之前一直阻塞。 \fB::http::geturl\fR 接受一些选项:
+.RS
+.TP
+\fB\-binary\fP \fIboolean\fP
+Specifies whether to force interpreting the url data as binary.  Normally
+this is auto-detected (anything not beginning with a \fBtext\fR content
+type or whose content encoding is \fBgzip\fR or \fBcompress\fR is
+considered binary data).
+.TP
+\fB\-blocksize\fP \fIsize\fP
+在读 URL 时使用块大小。一次最多读 \fIsize\fR 字节。读完每一块之后,调用 \fB\-progress\fR 回调过程(如果指定着这个选项的话)。
+.TP
+\fB\-channel\fP \fIname\fP
+复制 URL 内容到叫 \fIname\fR 的通道中而不是保存在 \fBstate(body)\fR 中。
+.TP
+\fB\-command\fP \fIcallback\fP
+在这次 HTTP 事务完成之后调用 \fIcallback\fP。这个选项导致 \fB::http::geturl\fP 立即返回。\fIcallback\fP 得到一个增添的参数,它是从 \fB::http::geturl\fR 返回的 \fItoken\fR (记号)。这个记号是在状态数组章节中描述的一个数组的名字。下面是这个回调过程的一个模版:
+.RS
+.CS
+proc httpCallback {token} {
+    upvar #0 $token state
+    # Access state as a Tcl array
+}
+.CE
+.RE
+.TP
+\fB\-handler\fP \fIcallback\fP
+在可获得 HTTP 数据的时候调用 \fIcallback\fP ;如果(这个回调)存在,则不对 HTTP 数据做其他任何事情。这个过程得到两个增添的参数: 给这些 HTTP 数据的套接口和从 \fB::http::geturl\fR 返回的 \fItoken\fR 。这个记号是在状态数组章节中描述的一个数组的名字。回调过程应返回从这个套接口中读到的字节数目。下面是这个回调过程的一个模版:
+.RS
+.CS
+proc httpHandlerCallback {socket token} {
+    upvar #0 $token state
+    # Access socket, and state as a Tcl array
+    ...
+    (example: set data [read $socket 1000];set nbytes [string length $data])
+    ...
+    return nbytes
+}
+.CE
+.RE
+.TP
+\fB\-headers\fP \fIkeyvaluelist\fP
+使用这个选项来给 HTTP 请求增加额外的头部。\fIkeyvaluelist\fR 参数必须是有偶数个元素的一个列表,这些元素是交替的键(key)和值。这些键变成头部的字段名字。从这些值中去除(strip)换行符,所以头部不会被中断(corrupt)。例如,如果 \fIkeyvaluelist\fR 是 \fBPragma no-cache\fR 则在 HTTP 请求中包含下列头部:
+.CS
+Pragma: no-cache
+.CE
+.TP
+\fB\-progress\fP \fIcallback\fP
+每次从 URL 传输数据之后调用这个 \fIcallback\fR。这个调用得到三个增添的参数: 从 \fB::http::geturl\fR 得来的 \fItoken\fR,从 \fBContent-Length\fR 元(meta)数据得来的期望的内容总体大小,和迄今为止传输的字节数。期望的总体大小可以是未知的,在这种情况下向这个回调传递零。下面是这个回调过程的一个模版:
+.RS
+.CS
+proc httpProgress {token total current} {
+    upvar #0 $token state
+}
+.CE
+.RE
+.TP
+\fB\-query\fP \fIquery\fP
+这个标志导致 \fB::http::geturl\fR 去做向服务器传递 \fIquery\fR 的一次 POST 请求。这个 \fIquery\fR 必须是 x-url-encoding 编码格式的一个查询。可以使用 \fB::http::formatQuery\fR 过程来做格式化。
+.TP
+\fB\-queryblocksize\fP \fIsize\fP
+在向 URL 传送(post)查询数据的时候使用这个块大小。一次最多写 \fIsize\fR 字节。 在每块(被传输完毕)之后,调用 \fB\-queryprogress\fR 回调过程(如果指定了这个选项的话)。
+.TP
+\fB\-querychannel\fP \fIchannelID\fP
+这个标志导致 \fB::http::geturl\fR 去做向服务器传递在 \fIchannelID\fR 中包含的数据的一次 POST 请求。除非使用了下面的 \fB\-type\fP 选项,否则在 \fIchannelID\fR 中包含的数据必须是 x-url-encoding 编码格式的一个查询。如果没有通过 \fB\-headers\fR 选项指定 Content-Length(内容长度)头部,则 \fB::http::geturl\fR 尝试确定传送的数据的大小来建立这个头部。如果不能确定这个大小,它返回一个错误。
+.TP
+\fB\-queryprogress\fP \fIcallback\fP
+在每次到 URL 的数据传输之后调用这个 \fIcallback\fR (例如,POST),并且表现(act)得与 \fB\-progress\fR 选项精确的相似(回调过程的格式相同)。
+.TP
+\fB\-timeout\fP \fImilliseconds\fP
+如果 \fImilliseconds\fR 是非零(的数),则 \fB::http::geturl\fR 设置在这个数字指定的毫秒后发生一个超时(timeout)。如果指定了 \fB::http::reset\fP 和 \fB-command\fP 回调过程,一个超时导致对它们的调用。在超时发生之后,\fB::http::status\fP 的返回值是 \fBtimeout\fP。
+.TP
+\fB\-type\fP \fImime-type\fP
+使用 \fImime-type\fR 作为 \fBContent-Type\fR (内容类型)的值,在一次 POST 操作期间,替换缺省值(\fBapplication/x-www-form-urlencoded\fR)。
+.TP
+\fB\-validate\fP \fIboolean\fP
+如果 \fIboolean\fR 是非零,则 \fB::http::geturl\fR 做一次 HTTP HEAD 请求。这个请求返回关于这个 URL 的元(meta)信息,而不返回(具体)内容。这个事务之后在 \fBstate(meta) \fR 变量中可获得这些元信息。详情参见STATE ARRAY章节。
+.RE
+.TP
+\fB::http::formatQuery\fP \fIkey value\fP ?\fIkey value\fP ...?
+这个过程做查询数据的 x-url 编码。它接受偶数个参数,它们是这个查询的键和值。它编码这些键和值,并生成有正确的 & 和 = 分隔符的一个字符串。 结果适合于传递给 \fB::http::geturl\fR 的 \fB\-query\fR 的值。
+.TP
+\fB::http::reset\fP \fItoken\fP ?\fIwhy\fP?
+这个命令重置用 \fItoken\fR 标识的 HTTP 事务。如果有的话,它设置 \fBstate(status)\fP 值为 \fIwhy\fP,它的缺省值是 \fBreset\fR,并且接着调用注册的 \fB\-command\fR 回调。
+.TP
+\fB::http::wait\fP \fItoken\fP
+这是阻塞并等待一个事务完成的一个方便函数。它使用了 \fBvwait\fR 所以只能在可信赖的代码中工作。还有,它对调用 \fB::http::geturl\fP 而不加 \fB-command\fP 选项的情况没有用处,在这种情况下 \fB::http::geturl\fP 在 HTTP 事务完成之前不返回,所以不需等待。
+.TP
+\fB::http::data\fP \fItoken\fP
+这是返回状态数组的 \fBbody\fP 元素(例如,URL 数据)的一个方便过程。
+.TP
+\fB::http::error\fP \fItoken\fP
+这是返回状态数组的 \fBerror\fP 元素的一个方便过程。
+.TP
+\fB::http::status\fP \fItoken\fP
+这是返回状态数组的 \fBstatus\fP 元素的一个方便过程。
+.TP
+\fB::http::code\fP \fItoken\fP
+这是返回状态数组的 \fBhttp\fP 元素的一个方便过程。
+.TP
+\fB::http::ncode\fP \fItoken\fP
+这是只返回状态数组的 \fBhttp\fP 元素的数值返回码(200、404 等)的一个方便过程。
+.TP
+\fB::http::size\fP \fItoken\fP
+这是返回状态数组的 \fBcurrentsize\fP 元素的一个方便过程,它表示在 \fB::http::geturl\fP 调用中从 URL 接收的字节数。
+.TP
+\fB::http::cleanup\fP \fItoken\fP
+这个过程清除与由 \fItoken\fP 标识的连接相关的状态。在这个调用之后,不能使用象 \fB::http::data\fP 这样的过程得到关于这个操作的信息。强烈建议你在做完一个特定的 HTTP 操作之后调用这个函数。不这样做将导致内存不被释放,如果你的应用调用 \fB::http::geturl\fP 次数足够多,内存泄露(leak)将导致性能下降(hit)...或更糟。
+.TP
+\fB::http::register\fP \fIproto port command\fP
+这个过程允许你通过注册一个前缀、缺省端口、和建立 Tcl \fBchannel\fR (通道)的命令,提供定制的 HTTP 传输类型如 HTTPS。比如:
+.RS
+.CS
+package require http
+package require tls
+
+http::register https 443 ::tls::socket
+
+set token [http::geturl https://my.secure.site/]
+.CE
+.RE
+.TP
+\fB::http::unregister\fP \fIproto\fP
+这个过程注销(unregister)以前通过 \fBhttp::register\fR注册的一个协议处理器(handler)。
+
+.SH "错误 ERRORS"
+\fBhttp::geturl\fP 过程在下列情况下将引发(raise)错误: 无效的命令行选项、一个无效的 URL、在一个不存在的主机上的一个 URL、或在一个存在的主机的一个不良端口上的一个 URL。这些错误意味着它不能开始网络事务。如果它在写出 HTTP 请求头部期间得到了一个 I/O 错误,它也引发一个错误。对于同步 \fB::http::geturl\fP 调用(这个未指定 \fB-command\fP),如果它在读 HTTP 回应头部或数据期间得到一个 I/O 错误,它将引发一个错误。因为在这种情况下 \fB::http::geturl\fP 不返回一个记号,它做所有需要的清除,你的应用没有必要调用 \fB::http::cleanup\fP。
+.PP
+对于异步 \fB::http::geturl\fP  调用,除了在读 HTTP 回应头部或数据期间出现 I/O 错误之外,所有上述错误情况不引起(throw)例外(异常)。这是因为在写完 HTTP 头部之后,\fB::http::geturl\fP 返回,而余下的 HTTP 事务在后台发生。命令的回调过程可以通过调用 \fB::http::status\fP 来检查状态,查看在读的时候是否发生了 \fIerror\fP 错误,如果有错误,调用 \fB::http::error\fP 来得到错误的消息。
+.PP
+另一个选择,如果主程序流到达需要知道异步 HTTP 请求的结果的某点(point),它可以调用 \fB::http::wait\fP 并接着象上面的回调过程做的那样检查状态和错误。
+.PP
+在任何情况下,你必须在你做完(检查)的时候调用 \fBhttp::cleanup\fP 来删除状态数组。
+.PP
+下面描述的是用 \fBhttp::status\fP 检查状态能确定的 HTTP 事务的可能的结果。
+.TP
+ok
+如果 HTTP 事务完整完成,则状态将是 \fBok\fP。但是,你仍需检查 \fBhttp::code\fP 的值来得到 HTTP 状态。\fBhttp::ncode\fP 过程只提供数值的错误(代码)(例如,200,404 或 500) 而 \fBhttp::code\fP 过程返回象“HTTP 404 File not found”这样的一个值。
+.TP
+eof
+如果服务器关闭了套接口而不回应,则不引发错误,但事务的状态将是 \fBeof\fP。
+.TP
+error
+错误消息将被存储在状态数组的 \fBerror\fP 元素中,可通过 \fB::http::error\fP 访问。
+.PP
+另一个错误的可能是 \fBhttp::geturl\fP 在服务器响应并关闭套接口之前不能向服务器写出所有的 post 查询。错误消息保存在状态数组的 \fBposterror\fP 元素中,而 \fBhttp::geturl\fP 接着尝试完成这个事务。如果它能读到服务器的响应,它将以一个 \fBok\fP 状态结束,否则将有一个 \fBeof\fP 状态。
+
+.SH "状态数组 STATE ARRAY"
+\fB::http::geturl\fR 过程返回一个 \fItoken\fR ,可以用它来得到一个 Tcl 数组形式的 HTTP 事务状态。使用下面这个构造(construct)来建立一个易用的数组变量:
+.CS
+upvar #0 $token state
+.CE
+一旦与某个 url 有关的数据不再需要,应当清除这个数组来释放存储(空间)。为此提供了 \fBhttp::cleanup\fP 过程。这个数组支持下列元素:
+.RS
+.TP
+\fBbody\fR
+URL 的内容。如果指定了 \fB\-channel\fR 选项,则它将为空。用 \fB::http::data\fP 命令返回这个值。
+.TP
+\fBcharset\fR
+The value of the charset attribute from the \fBContent-Type\fR meta-data
+value.  If none was specified, this defaults to the RFC standard
+\fBiso8859-1\fR, or the value of \fB$::http::defaultCharset\fR.  Incoming
+text data will be automatically converted from this charset to utf-8.
+.TP
+\fBcoding\fR
+A copy of the \fBContent-Encoding\fR meta-data value.
+.TP
+\fBcurrentsize\fR
+当前从 URL 取回的字节数。用 \fB::http::size\fP 命令返回这个值。
+.TP
+\fBerror\fR
+如果定义了这个元素,这是终止 HTTP 事务时(描述)错误的字符串。
+.TP
+\fBhttp\fR
+从服务器回应的 HTTP 状态。用 \fB::http::code\fP 命令返回这个值。这个值的格式是:
+.RS
+.CS
+\fIHTTP/1.0 code string\fP
+.CE
+\fIcode\fR 是在 HTTP 标准中定义的一个三位数。代码 200 是 OK。以4或5开始的代码指示错误。以3开始的代码是重定向错误。在这种情况下,\fBLocation\f 元数据指定包含所需信息的一个新 URL。
+.RE
+.TP
+\fBmeta\fR
+HTTP 协议返回描述 URL 内容的元数据。状态数组的 \fBmeta\fR 元素是元数据的键和值的一个列表。下面的格式对初始化只包含元数据的一个数组有用:
+.RS
+.CS
+array set meta $state(meta)
+.CE
+下面列出一些元数据的键,HTTP 标准定义了更多,服务器可自由的添加它们自己的键。
+.TP
+\fBContent-Type\fR
+URL 内容的类型。例子包括 \fBtext/html\fR、\fBimage/gif\fR、\fBapplication/postscript\fR 和 \fBapplication/x-tcl\fR。
+.TP
+\fBContent-Length\fR
+内容的通告(advertise)的大小。通过 \fB::http::geturl\fR 获得的实际大小作为 \fBstate(size)\fR 来获取。
+.TP
+\fBLocation\fR
+包含所需的数据的一个可替代的 URL。
+.RE
+.TP
+\fBposterror\fR
+在向服务器写 post 查询时发生的错误。如果有的话。
+.TP
+\fBstatus\fR
+对于成功完成是 \fBok\fR,对于用户重重置(user-reset)是 \fBreset\fR,如果在事务完成之前发生了超时则是\fBtimeout\fP。或在错误的情况下是 \fBerror\fR。在事务(进行)期间这个值是一个空串。
+.TP
+\fBtotalsize\fR
+\fBContent-Length\fR 元数据值的一个复本。
+.TP
+\fBtype\fR
+\fBContent-Type\fR 元数据值的一个复本。
+.TP
+\fBurl\fR
+请求的 URL。
+.RE
+.SH 示例 EXAMPLE
+.DS
+# Copy a URL to a file and print meta-data
+proc ::http::copy { url file {chunk 4096} } {
+    set out [open $file w]
+    set token [geturl $url -channel $out -progress ::http::Progress \\
+	-blocksize $chunk]
+    close $out
+    # This ends the line started by http::Progress
+    puts stderr ""
+    upvar #0 $token state
+    set max 0
+    foreach {name value} $state(meta) {
+	if {[string length $name] > $max} {
+	    set max [string length $name]
+	}
+	if {[regexp -nocase ^location$ $name]} {
+	    # Handle URL redirects
+	    puts stderr "Location:$value"
+	    return [copy [string trim $value] $file $chunk]
+	}
+    }
+    incr max
+    foreach {name value} $state(meta) {
+	puts [format "%-*s %s" $max $name: $value]
+    }
+
+    return $token
+}
+proc ::http::Progress {args} {
+    puts -nonewline stderr . ; flush stderr
+}
+.DE
+
+.SH "参见 SEE ALSO"
+safe(n), socket(n), safesock(n)
+
+.SH 关键字 KEYWORDS
+security policy, socket
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/LabelFrame.n b/src/mann/LabelFrame.n
new file mode 100644
index 0000000..fb0c82b
--- /dev/null
+++ b/src/mann/LabelFrame.n
@@ -0,0 +1,41 @@
+.TH LabelFrame "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B LabelFrame - 有一个标签的框架.
+
+.SH 创建 CREATION
+.B LabelFrame pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+LabelFrame 使用户能建立带有可定位在任何一边的一个标签的框架。ComboBox 和 SpinBox 使用了 LabelFrame。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-side (read-only)  
+指定把标签定位于相对于用户框架的: top、bottom、left 或 right。 
+
+.SH 组件命令
+
+.TP
+LabelFrame::align ?arg...? 
+这个命令通过设置用 args 给出的类 LabelFrame (或衍生(derive)类)的所有组件的标签的宽度为最大的那个宽度 + 1 来对齐(align)这些标签。 
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。 
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName getframe  
+返回用户可以建立任何其他组件的那个框架。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/06
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/MainFrame.n b/src/mann/MainFrame.n
new file mode 100644
index 0000000..f6ac738
--- /dev/null
+++ b/src/mann/MainFrame.n
@@ -0,0 +1,148 @@
+.TH MainFrame "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B MainFrame - 管理带有菜单、工具条和状态条的顶层窗口
+
+.SH 创建 CREATION
+.B MainFrame pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+MainFrame 管理的顶层窗口有:
+
+* 建立带有自动快捷键绑定和动态帮助关联的简单菜单,
+
+* 用户可以隐藏的一个或多个工具条,
+
+* 显示用户消息或菜单描述的一个状态条,和可选的一个进度条。 
+    
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+.TP
+-height  
+以 Tk_GetPixels 可接受的任何形式为用户框架指定想要的高度。如果这个选项小于等于零(缺省)则对这个窗口根本不要求任何大小。
+
+.TP
+-menu (read-only)  
+这个选项描述菜单。它是一个列表,每五个元素描述一个级联菜单。它有下列格式: {菜单名 标签(tag)列表 菜单Id 撕开项 菜单项...} 这里的菜单项是一个列表,其中每个元素描述一个菜单项,它们可以是:
+
+一个分隔符:
+{separator}
+
+一个命令:
+{command 菜单名 ?标签列表? ?描述? ?快捷键? ?选项值? ...}
+
+复选按钮:
+{checkbutton 菜单名 ?标签列表? ?描述? ?快捷键? ?选项值? ...}
+
+单选按钮:
+{radiobutton 菜单名 ?标签列表? ?描述? ?快捷键? ?选项值? ...}
+
+一个级联菜单:
+{cascad 菜单名 ?标签列表? 菜单Id 撕开项 菜单项} 
+
+这里的:
+ 
+如果菜单名包含一个 &, 则把随后的字符自动的转换成 menu add 命令的相应的选项。
+ 
+标签列表是这个条目的所有标签的列表,用于使用 MainFrame::setmenustate 来启用或停用菜单条目。
+
+菜单Id 是给这个菜单的 id,你可以用 MainFrame::getmenu 来从它得到菜单路径名。
+
+撕开项指定菜单是否有撕开条目。
+
+描述为动态帮助指定字符串。
+
+快捷键指定一个击键序列。它是两个元素的一个列表,其中的第一个元素是 Ctrl、Alt 或 CtrlAlt 之一,而第二个元素是一个字母或数字。建造一个快捷键字符串并在顶层窗口上设置相应的绑定来调用菜单项。
+
+选项值为这个条目指定补充选项(参见 menu add 命令)。
+
+被 ? 包围的每个值都是可选的并且缺省为空串,但是如果下列选项是非空则必须提供值。
+ 
+.TP
+-separator (只读) 
+ 指定是否把分隔线画在用户窗口的顶部和/或底部。必须是值 none、top、bottom 或 both 之一。 它依赖于用户窗口的子组件的面型(relief)。
+
+.TP
+-textvariable  
+为状态条的标签指定 textvariable 选项。在这个 MainFrame 的建立的时候把菜单条目的动态帮助描述映射到这个变量。如果用 MainFrame::configure 变更了这个变量,菜单描述将不可获得。你可以通过修改这个变量的值来变更这个标签的文字。
+
+.TP
+-width  
+以 Tk_GetPixels 可接受的任何形式为用户框架指定想要的宽度。如果这个选项小于等于零(缺省)则对这个窗口根本不要求任何大小。
+
+.SH 范例
+.nf
+set descmenu {
+    "&File" {} {} 0 {
+        {command "&New"     {} "建立一个新文档"     {Ctrl n} -command Menu::new}
+        {command "&Open..." {} "打开一个现存文件" {Ctrl o} -command Menu::open}
+        {command "&Save"    open "保存这个文档" {Ctrl s} -command Menu::save}
+        {cascad  "&Export"  {} export 0 {
+            {command "Format &1" open "导出文档为格式 1" {} -command {Menu::export 1}}
+            {command "Format &2" open "导出文档为 2" {} -command {Menu::export 2}}
+        }}
+        {separator}
+        {cascad "&Recent files" {} recent 0 {}}
+        {separator}
+        {command "E&xit" {} "退出应用程序" {} -command Menu::exit}
+    }
+    "&Options" {} {} 0 {
+        {checkbutton "Toolbar" {} "显示/隐藏工具栏" {} 
+            -variable Menu::_drawtoolbar
+            -command  {$Menu::_mainframe showtoolbar toolbar $Menu::_drawtoolbar}
+        }
+    }
+}
+.fi
+
+.SH 组件命令
+.TP
+pathName addindicator ?arg...? 
+在状态条的右端增加一个指示器(indicator)框。从左到右增加每个指示器。指示器是用 ?arg...? 给出的选项-值配置的一个 Tk 标签(label)组件。-relief 和 -borderwidth 选项分别缺省为 sunken(凹陷) 和 1。返回建立的标签的路径名。
+
+.TP
+pathName addtoolbar  
+向 MainFrame 添加一个工具条。返回在其中放置工具条的那个新窗口的路径名。
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。
+
+.TP
+pathName getframe  
+返回用户窗口的路径名。
+
+.TP
+pathName getindicator index  
+返回第 index 次增加的指示器。 
+
+.TP
+pathName getmenu menuid  
+返回 id 是 menuid 的菜单的路径名。 
+
+.TP
+pathName gettoolbar index  
+返回第 index 次增加的工具条的路径名。 
+
+.TP
+pathName setmenustate tag state  
+把有标签 tag 的所有菜单项的 -state 选项的值设置成 state。 
+
+.TP
+pathName showstatusbar name  
+name 是 none、status 或 progression 之一。使用 none 来隐藏状态条,用 status 来只显示标签(label),或用 progression 来显示标签和进度条。 
+
+.TP
+pathName showtoolbar index bool  
+如果 bool 是 0 则隐藏第 index 次增加的工具条,如果 bool 是 1 则显示第 index 次增加的工具条。要防止你的顶层窗口在隐藏/显示工具条期间调整大小,在操纵(manage)它的时候做 [wm geometry $top [wm geometry $top]] 。
+
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/06
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/Notebook.n b/src/mann/Notebook.n
new file mode 100644
index 0000000..7c1980a
--- /dev/null
+++ b/src/mann/Notebook.n
@@ -0,0 +1,117 @@
+.TH NoteBook "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B NoteBook - 笔记本管理器组件
+
+.SH 创建 CREATION
+.B NoteBook pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+NoteBook 组件管理一组页面并显示其中一个。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+.TP
+-height  
+为页面指定想要的高度。如果这个选项等于零(缺省的),则这个窗口根本不要求任何大小。在这种情况下,用户可以调用 NoteBook::compute_size 来使 NoteBook 足够大得包含最大的页面。
+
+.TP
+-homogeneous  
+指定页面的标签是否有相同的宽度。
+
+.TP
+-side (read-only)  
+指定靠那边放置页面的标签。必须是 top 或 bottom 之一。目前只实现了 top。
+
+.TP
+-width  
+为页面指定想要的宽度。如果这个选项等于零(缺省的),则这个窗口根本不要求任何大小。在这种情况下,用户可以调用 NoteBook::compute_size 来使 NoteBook 足够大得包含最大的页面。 
+
+.SH 组件命令
+
+.TP
+pathName bindtabs event script  
+这个命令把在用 event 给出的时间序列发生时要执行的一个命令关联到一个标贴(tab)上。把在它的上面发生事件的页面的标识符添加到这个命令上。 
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。 
+
+.TP
+pathName compute_size  
+调用这个命令使笔记本足够大得包含最大的页。注意如果所有的页面都使用了 -createcmd,则它们没有要求的大小。 
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName delete page ?destroyframe? 
+删除这个页面。如果 destroyframe 是 1 (缺省的),销毁与 page 相关的框架。如果 destroyframe 是 0,则不销毁这个框架,以便将来用 insert 调用重新使用同一个的 page。 
+
+.TP
+pathName getframe page  
+返回页面 page 的路径名。 
+
+.TP
+pathName index page  
+返回对应于这个项目的数值索引。 
+
+.TP
+pathName insert index page ?option value...? 
+在页面列表中位置 index 上插入用 page 标识的一个新页面。index 必须是数值或 end。返回这个新页面的路径名。
+
+-createcmd 
+指定在第一次提升(raise)这个页面的时候调用的命令。 
+
+-image 
+为这个页面指定在标签的左面显示的图象。 
+
+-leavecmd 
+指定在要离开(leave)一个页面的时候调用的一个命令。如果这个页面可以离开则这个命令必须返回 0,如果可以离开则返回 1。 
+
+-raisecmd 
+指定在每次提升这个页面的时候调用的命令。 
+
+-state 
+指定这个页面的状态。必须是 normal 或 disabled. 
+
+-text 
+为这个页面指定要显示的一个标签。 
+
+.TP
+pathName itemcget page option 
+返回这个项目的一个配置选项的当前值。Option 可以是这个项目建立命令能接受的任何值。 
+
+.TP
+pathName itemconfigure page ?option? ?value option value ...? 
+这个命令类似于 configure 命令,但是它为单独的项目提供选项,而 configure 为作为整体的组件提供选项。Options 可以是项目建立组件命令可接受的任何值。如果指定了选项,则依据命令的指示修改选项并且命令返回一个空串。如果未指定选项,则返回描述这个项目的当前选项的一个列表。只读选项不能修改。 
+
+.TP
+pathName move page index 
+把 page 的标贴移动到到索引 index。 
+
+.TP
+pathName page first ?last? 
+反对使用它,建议替代为 pages。
+
+如果省略了 last,则返回在索引 first 上的页面,如果 first 引用一个不存在的页面则返回空串。如果指定了 last,则这个命令返回一个列表,它的元素是在 first 和 last 之间(包含二者)的所有页面。first 和 last 二者可以是索引的任何标准形式。 
+
+.TP
+pathName pages ?first? ?last? 
+如果省略了 first 和 last,则返回所有页面的一个列表。如果指定了 first 而省略了 last,则返回在索引 first 上的页面,如果 first 引用一个不存在的元素则返回空串。如果指定了 first 和 last,则这个命令返回一个列表,它的元素是在 first 和 last 之间(包含二者)的所有页面。first 和 last 二者可以是索引的任何标准形式。
+
+.TP
+pathName raise ?page? 
+提升(raise)页面 page,如果省略了 page 则返回突出的(raised)页面。 
+
+.TP
+pathName see page 
+卷绕(scroll)标签来使页面 page 的标签可见。
+
+ 
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/11
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/PagesManager.n b/src/mann/PagesManager.n
new file mode 100644
index 0000000..dc098e1
--- /dev/null
+++ b/src/mann/PagesManager.n
@@ -0,0 +1,66 @@
+.TH PagesManager "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B PagesManager - 页面管理器组件
+
+.SH 创建 CREATION
+.B PagesManager pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+PagesManager 组件管理一组页面并显示其中之一。PagesManager 不象 NoteBook 那样提供任何用户访问方法,这可以通过列表框、菜单、单选按钮、或其他什么东西来完成。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+.TP
+-height  
+为页面指定想要的高度。如果这个选项等于零(缺省的),则这个窗口根本不要求任何大小。在这种情况下,用户可以调用 PagesManager::compute_size 来使 PagesManager 足够大得包含最大的页面。
+
+.TP
+-width  
+为页面指定想要的宽度。如果这个选项等于零(缺省的),则这个窗口根本不要求任何大小。在这种情况下,用户可以调用 PagesManager::compute_size 来使 PagesManager 足够大得包含最大的页面。 
+
+.SH 组件命令
+
+.TP
+pathName add page  
+增加用 page  标识的一个新页面。返回这个新页面的路径名。 
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。 
+
+.TP
+pathName compute_size  
+调用这个命令使 PagesManager 足够大得包含最大的页面。 
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName delete page  
+删除页面 page。 
+
+.TP
+pathName getframe page  
+返回页面 page 的路径名。 
+
+.TP
+pathName page first ?last? 
+反对使用它,建议替代为 pages。
+
+如果省略了 last,则返回在索引 first 上的页面,如果 first 引用一个不存在的页面则返回空串。如果指定了 last,则这个命令返回一个列表,它的元素是在 first 和 last 之间(包含二者)的所有页面。first 和 last 二者可以是索引的任何标准形式。 
+
+.TP
+pathName pages ?first? ?last? 
+如果省略了 first 和 last,则返回所有页面的一个列表。如果指定了 first 而省略了 last,则返回在索引 first 上的页面,如果 first 引用一个不存在的元素则返回空串。如果指定了 first 和 last,则这个命令返回一个列表,它的元素是在 first 和 last 之间(包含二者)的所有页面。first 和 last 二者可以是索引的任何标准形式。 
+
+.TP
+pathName raise ?page? 
+提升(raise)页面 page,如果省略了 page 则返回突出的(raised)页面。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/15
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/PanedWindow.n b/src/mann/PanedWindow.n
new file mode 100644
index 0000000..92762c4
--- /dev/null
+++ b/src/mann/PanedWindow.n
@@ -0,0 +1,55 @@
+.TH PanedWindow "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B PanedWindow - 平铺布局管理器组件
+
+.SH 创建 CREATION
+.B PanedWindow pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+PanedWindow 是在垂直或水平平铺格局下排布子窗体的一个组件。用户可以调整窗格(pane)的大小,带有在子窗口之间的一个窗格控制窗框(sash)。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-pad (只读)  
+指定在窗框的按钮和子窗口之间的额外的空间。 
+
+.TP
+-side (只读)  
+指定窗框在那边,这暗示着布局: top 或 bottom (水平格局), left 或 right (垂直格局)。 
+
+.TP
+-width (只读)  
+指定窗框的按钮的宽度。 
+
+.SH 组件命令
+
+.TP
+pathName add ?option value...? 
+这个命令增加一个新窗格。对于垂直的布局新窗格被放置到以前的窗格的下面,对于水平布局是右面。这个命令返回用户可以放置它的组件的一个框架。有效的选项有: 
+
+-minsize  
+指定对这个窗格要求的最小大小。详情参见 grid 命令。 
+
+-weight  
+为在窗格之间分配额外空间指定相对权重(weight)。详情参见 grid 命令。 
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。 
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName getframe index  
+返回第 index 次增加的窗格的路径名。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/09
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/ProgressBar.n b/src/mann/ProgressBar.n
new file mode 100644
index 0000000..3fde7f0
--- /dev/null
+++ b/src/mann/ProgressBar.n
@@ -0,0 +1,55 @@
+.TH ProgressBar "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B ProgressBar - 进度指示器组件
+
+.SH 创建 CREATION
+.B ProgressBar pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+ProgressBar 组件向用户指示一个冗长的操作的进度。它通常用于 MainFrame 和 ProgressDlg。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-height  
+为进度指示器指定想要的高度。 
+
+.TP
+-maximum  
+指定变量的最大值。 
+
+.TP
+-type  
+指定 ProgressBar 的类型。必须是 normal、incremental 或 infinite 之一。
+
+如果 type 是 normal,则在每次设置变量的时候,按变量值和 maximum 选项来成比例的绘制进度指示器。 
+
+如果 type 是 incremental,则在内部维护进度指示器的值,并在每次设置变量值的时候增加内部值。按内部值和 maximum 选项来成比例的绘制进度指示器。
+
+如果 type 是 infinite, 则在内部维护进度指示器的值,并在每次设置变量值的时候增加内部值。 如果内部值(以 maximum 为模)小于 maximum/2 则进度指示器从左至右增长,并且如果内部值大于  maximum/2 则从右至左增长。 它的值的特殊情况请参见 -variable 选项。 
+
+.TP
+-variable 
+指定联系(attach)到进度指示器上的变量。在这个变量的值变化的时候更新进度指示器。如果这个变量的值是负数,则不显示进度指示器(用 background 色绘平(draw flat)它 - 用于 ProgressDlg 使它不可见)。如果它的值是 0,则重新初始化进度指示器。 
+
+.TP
+-width 
+为进度指示器指定想要的宽度。
+
+.SH 组件命令
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。 
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/12
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/ScrollableFrame.n b/src/mann/ScrollableFrame.n
new file mode 100644
index 0000000..63fb3c1
--- /dev/null
+++ b/src/mann/ScrollableFrame.n
@@ -0,0 +1,77 @@
+.TH ScrollableFrame "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B ScrollableFrame - 包含组件的可滚动的框架
+
+.SH 创建 CREATION
+.B ScrollableFrame pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+ScrollableFrame 组件包含组件。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-areaheight  
+为可滚动区域指定高度。如果是 zero,则使可滚动区域的高度刚好足够大得持有它的所有子窗口。 
+
+.TP
+-areawidth  
+为可滚动区域指定宽度。如果是 zero,则使可滚动区域的宽度刚好足够大得持有它的子窗口。 
+
+.TP
+-constrainedheight  
+指定可滚动区域是否应当与滚动窗口有相同的高度。如果为真,则不需要垂直滚动条。 
+
+.TP
+-constrainedwidth  
+指定可滚动区域是否应当与滚动窗口有相同的宽度。如果为真,则不需要水平滚动条。   
+
+.TP
+-height  
+以象素为单位为这个窗口指定想要的高度。 
+
+.TP
+-width  
+以象素为单位为这个窗口指定想要的宽度。 
+
+.TP
+-xscrollincrement  
+参见 canvas 组件的 xscrollincrement 选项。 
+
+.TP
+-yscrollincrement  
+参见 canvas 组件的 yscrollincrement 选项。
+
+.SH 组件命令
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName getframe  
+返回应当在其中建立组件的滚动框架的路径名。 
+
+.TP
+pathName see widget ?vert? ?horz? 
+排布(arrange)可滚动区域来使 widget 在窗口中可见。在 widget 太长或太大而不能整个可见的情况下,用 vert 和 horz 指定 widget 的那部分更适合见到。vert 必须是 top (缺省的) 或 bottom,而 horz 必须是 left (缺省的) 或 right。如果 vert 或 horz 不是有效的值,则在这个方向上不滚动区域。 
+
+.TP
+pathName xview ?arg...? 
+启用 pathName 的水平滚动的标准命令。 
+
+.TP
+pathName yview ?arg...? 
+启用 pathName 的垂直滚动的标准命令。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/12
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/ScrolledWindow.n b/src/mann/ScrolledWindow.n
new file mode 100644
index 0000000..2bef95d
--- /dev/null
+++ b/src/mann/ScrolledWindow.n
@@ -0,0 +1,57 @@
+.TH Scrolledwindow "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B ScrolledWindow - 通用滚动组件
+
+.SH 创建 CREATION
+.B ScrolledWindow pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+ScrolledWindow 使用户能容易的建立带有自己的滚动条的组件。ScrolledWindow 建立滚动条并且用 ScrolledWindow::setwidget 自动的把滚动命令关联到一个可滚动的组件上。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+
+.TP
+-auto  
+指定想要的自动管理的滚动条:
+
+* none 
+意思是总是绘制滚动条
+
+* horizontal 
+意思是在需要时绘制水平滚动条
+
+* vertical 
+意思是在需要时绘制垂直滚动条
+
+* both  
+意思是在需要时绘制水平滚动条和垂直滚动条 
+
+.TP
+-scrollbar (只读) 
+指定想要的滚动条: none、horizontal、vertical 或 both。这个选项不能用 ScrolledWindow::configure 修改。
+
+.SH 组件命令
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+ pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName getframe  
+返回应该在其中建立滚动组件的框架的路径名。这个命令不再需要。你可以直接建立作为 pathName 的子窗口的滚动组件。 
+
+.TP
+pathName setwidget widget  
+把 widget 关联到滚动条上。通过把选项 expand 设为 yes 和 fill 设为 both 包装(pack) widget 是。widget 必须是可滚动组件,也就是说有选项 xscrollcommand/yscrollcommand 和命令 xview/yview,比如画布或文本。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/12
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/SpinBox.n b/src/mann/SpinBox.n
new file mode 100644
index 0000000..9a7b1cc
--- /dev/null
+++ b/src/mann/SpinBox.n
@@ -0,0 +1,79 @@
+.TH SpinBox "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B SpinBox - SpinBox 组件
+
+.SH 创建 CREATION
+.B SpinBox pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+SpinBox 组件使用户能在用 values 选项给出的一个列表,或用一个最小值、一个最大值和一个增量定义的一组值中选择一个值。注意 range 选项定义值的一个列表,所以 getvalue 和 setvalue 能操作 values 和 range 二者。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+.TP
+-modifycmd  
+指定在用户修改 SpinBox 的值的时候调用的 Tcl 命令。 
+
+.TP
+-range  
+指定描述 SpinBox 的最小值、最大值和增量的三个整数的一个列表。 
+
+.TP
+-values  
+指定 SpinBox 接受的值。这个选项优先于 range 选项。 
+
+.SH 组件命令
+
+.TP
+pathName bind ?arg...? 
+在录入组件上设置绑定。 
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName getvalue  
+返回 SpinBox 当前文本在值的列表中的索引,如果它不匹配任何值则返回 -1。 
+
+.TP
+pathName setvalue index  
+把 SpinBox 的文本设置成用在值的列表中的索引指示的值。index 可以被指定为任何下列形式:
+
+last
+指定值的列表的最后一个元素。 
+
+first
+指定值的列表的第一个元素。 
+
+next
+指定值的列表的当前元素(就是 getvalue 返回的那个)的下一个元素。 
+
+previous
+指定值的列表的当前元素(就是 getvalue 返回的那个)的上一个元素。 
+
+ at number
+指定在值的列表的整数索引。 
+
+.SH 绑定
+
+在 SpinBox 的录入组件获得输入聚焦的时候,除了缺省的录入组件绑定之外,它还有下列绑定:
+
+* Page up 把 SpinBox 的值设置为最后一个值。
+
+* Page down 把 SpinBox 的值设置为第一个值。
+
+* Arrow up 把 SpinBox 的值设置为下一个值。
+
+* Arrow down 把 SpinBox 的值设置为上一个值。 
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/17
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/Tcl.n b/src/mann/Tcl.n
new file mode 100644
index 0000000..a6bd352
--- /dev/null
+++ b/src/mann/Tcl.n
@@ -0,0 +1,373 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH Tcl n "8.1" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+Tcl \- 语言语法总结.
+.BE
+
+.SH 描述 DESCRIPTION
+
+.PP
+ 下面的规则定义 Tcl 语言的语法和语义:
+ 
+.IP [1]
+一个 Tcl 脚本是一个包含一个或多个命令的字符串。除了象后面描述的那样被引用(quote)之外,分号(Semi-colon)和换行(newline)是命令分隔符。除了被引用(quote)之外,右方括号(Close bracket)在命令替换期间是命令终结符(见后)。
+
+.IP [2]
+命令的求值分两步。 首先,Tcl 解释器把命令分解成字 (\fIwords\fR) 并按下面描述的那样完成替换。对所有命令都以同样的方式进行替换。第一个字用于定位完成这个命令的一个命令过程,接着命令的所有的字被传递给命令过程。命令过程以它喜欢的任何方式自由的解释命令的字,如一个整数、变量名、列表、或 Tcl 脚本。不同的命令以不同的方式解释它们的字。
+
+.IP [3]
+一个命令的字(word)由白空格(不包括作为命令分隔符的换行)来分隔。
+
+.IP [4]
+如果一个字的第一个字符是双引号 (``"'',double-quote) 则字终结于下一个双引号字符。如果是分号,右方括号,或白空格字符(包括换行)出现在引号之间则被作为普通的字符对待并包含在字里。象下面描述的那样,在引号之间的字符上进行命令替换、变量替换、和反斜杠替换。双引号不作为字的一部分而保留。
+
+.IP [5]
+如果一个字的第一个字符是左花括号 (“{”,open brace) 则字终结于相匹配的右花括号 (“}”,close brace)。花括号在字中嵌套: 对于每个增加的(additional)左花括号都必须有一个增加的右花括号(但是,如果 在一个字中的左括号或右括号被用一个反斜杠引用起来则在匹配右花括号时不计在内)。除了下面描述的反斜杠-换行替换之外,在花括号之间的字符上不进行替换,对分号、换行、右方括号、或白空格不做特殊的解释。字由外侧的花括号之间的字符精确的组成,不包括花括号自身。
+
+.IP [6]
+如果一个字包含一个左方括号 (“[”,open bracket ) 则 Tcl 进行命令替换 (\fIcommand substitution\fR)。为此将递归调用 Tcl 解释器来把左方括号后面的字符作为一个 Tcl 脚本处理。脚本可以包含任意数目的命令并且必须用一个右方括号 (“]”,close bracket) 来终结。脚本的结果(例如,最后的一条命令的结果)将被替换到字中方括号和它们中间所有字符的位置上。在一个单一的字中可以有任意数目的命令替换。在由花括号包起来(enclose)的字上不进行命令替换。
+
+.IP [7]
+如果一个字包含一个美元符(``$'')则 Tcl 进行变量替换 (\fIvariable
+substitution\fR): 字中的美元符号和跟随的字符被一个变量的值所替换。接受下面几种形式(form)的变量替换:
+
+.RS
+
+.TP 15
+\fB$\fIname\fR
+\fIName\fR 是一个标量(scalar)变量的名字;名字终结于任何不是字母、数字、或下划线(underscore)的字符。
+
+.TP 15
+\fB$\fIname\fB(\fIindex\fB)\fR
+\fIName\fR 给出一个数组变量的名字,\fIindex\fR 给出在这个数组中的一个元素的名字. \fIName\fR 只能包含字母、数字、和下划线。\fIindex\fR 的字符将被进行命令替换、变量替换、和反斜杠替换。
+
+.TP 15
+\fB${\fIname\fB}\fR
+\fIName\fR 是一个标量( scalar)变量的名字。它可以包含除了右括号之外的任何字符。
+
+.LP
+一个单一的字中可以有任意数目的变量替换。在由花括号包起来(enclose)的字上不进行命令替换。
+
+.RE
+
+.IP [8]
+如果在一个字中出现一个反斜杠(“\”)则发生反斜杠替换 (\fIbackslash substitution\fR)。除了下面描述的这些情况之外,反斜杠 (backslash)被删除(drop),跟随的字符被作为普通字符对待。这就允许在字中包含象双引号、右方括号、和美元符号等字符而不触发特殊的处理。下表列出的要特殊处理的反斜杠序列,跟着的是每个序列被替换成的值。
+
+.RS
+
+.TP 7
+\e\fBa\fR
+声音警告 (振铃) (0x7).
+
+.TP 7
+\e\fBb\fR
+退格 (0x8).
+
+.TP 7
+\e\fBf\fR
+换页 (0xc).
+
+.TP 7
+\e\fBn\fR
+换行 (0xa).
+
+.TP 7
+\e\fBr\fR
+回车 (0xd).
+
+.TP 7
+\e\fBt\fR
+跳格(Tab) (0x9).
+
+.TP 7
+\e\fBv\fR
+纵向跳格 (0xb).
+
+.TP 7
+\e\fB<newline>\fIwhiteSpace\fR
+.
+一个单一的空格字符替换反斜杠、换行和在换行后面的所有空格和跳格。这个反斜杠序列是唯一一个在命令被实际分析之前在一次独立的预处理(pre- pass)中被替换的。这意味着即使在花括号之间这个替换也发生,并且不在花括号和引号之间时作为结果的空格被作为一个字分隔符对待。
+
+.TP 7
+\e\e
+反斜杠 (``\'').
+
+.VS 8.1 br
+
+.TP 7
+\e\fIooo\fR 
+.
+数字\fIooo\fR(它们中的一个、两个、或三个)给出一个八进制数,是要插入的 Unicode 字符的八位值。 Unicode 字符的高位(upper)将是 0.
+
+.TP 7
+\e\fBx\fIhh\fR 
+.
+十六进制数 \fIhh\fR 给出要插入的 Unicode 字符的八位值。可以提供任意数目的十六进制数字 ;但除了最后两位之外都被忽略(结果总是一个一字节的数量)。Unicode 字符的高位(upper)将是 0.
+
+.TP 7
+\e\fBu\fIhhhh\fR 
+.
+十六进制数 \fIhhhh\fR (它们中的一个、两个、三个、或四个)给出要插入的 Unicode 字符的十六位值。
+.VE
+.LP
+除了前面描述的反斜杠-换行,在由花括号包起来(enclose)的字上不进行反斜杠替换。
+.RE
+
+.IP [9]
+如果一个升音符 “#” (sharp / hash) 出现在 Tcl 希望是一个命令的第一个字的地方(point),则升音符和其后面跟随的、一直到下一个换行的所有字符,被作为一个注释对待并被忽略。注释字符只有出现在一个命令开始时才有意义(significance)。
+
+.IP [10]
+每个字符作为建立的一个命令的某个字的一部分,被 Tcl 解释器精确的处理一次。例如,如果发生了变量替换则在变量的值上不进行进一步的替换;值被原封不动的(verbatim)插入字中。如果发生了命令替换则嵌套的命令被对 Tcl 解释器的递归调用整个的处理;在做递归调用之前不进行替换并且对嵌套的脚本的结果不进行额外的(additional)替换。
+
+.IP [11]
+替换不影响一个命令的字边界(boundary)。例如,即使变量的值包含空格,在变量替换期间变量的整个的值成为一个单一的字的一部分。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/TitleFrame.n b/src/mann/TitleFrame.n
new file mode 100644
index 0000000..779d3dc
--- /dev/null
+++ b/src/mann/TitleFrame.n
@@ -0,0 +1,45 @@
+.TH TitleFrame "tcl" "tcllib - BWidget"
+
+.SH NAME
+.B TitleFrame - 有一个标题的框架
+
+.SH 创建 CREATION
+.B TitleFrame pathName ?option value...?
+
+.SH 描述 DESCRIPTION
+TitleFrame 使用户能建立带有象 XmFrame Motif 组件那样的框架。
+
+.SH 组件特有选项 WIDGET-SPECIFIC OPTIONS
+.TP
+.TP
+-baseline  
+指定标题的垂直对齐: top、center 或 bottom。 
+
+.TP
+-ipad  
+指定在这个框架和用户框架之间的填充(pad)。值使用屏幕单位。 
+
+.TP
+-side  
+指定标题的水平对齐: left、center 或 right。
+
+.SH 组件命令
+
+.TP
+pathName cget option  
+返回用 option 给出的配置选项的当前值。Option 可以是能被建立命令接受的任何值。
+
+.TP
+pathName configure ?option? ?value option value ...? 
+查询或修改这个组件的配置选项。如果未指定 option ,则返回描述 pathName 的所有可获得的选项的一个列表。如果指定了不带 value 的 option,则这个命令返回描述这个指名的 option 的一个列表(这个列表与未指定 option 所返回的值的相应的子集是一样的)。如果指定了一个或多个选项-值 对,则这个命令把给定的组件选项修改为给定的值;在这种情况下这个命令返回一个空串。Option 可以是能被建立命令接受的任何值。只读选项不可修改。 
+
+.TP
+pathName getframe  
+返回用户可以建立任何其他组件的那个框架。
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/08
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/after.n b/src/mann/after.n
new file mode 100644
index 0000000..31252e6
--- /dev/null
+++ b/src/mann/after.n
@@ -0,0 +1,299 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 4c 8c 12c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH after n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+after \- 延迟一段时间之后执行一个命令
+.SH 总览 SYNOPSIS
+\fBafter \fIms\fR
+.sp
+\fBafter \fIms \fR?\fIscript script script ...\fR?
+.sp
+\fBafter cancel \fIid\fR
+.sp
+\fBafter cancel \fIscript script script ...\fR
+.sp
+\fBafter idle \fR?\fIscript script script ...\fR?
+.sp
+\fBafter info \fR?\fIid\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+ 这个命令被用于延迟执行程序或者在将来某时在后台执行一个命令。它有几种形式,依靠给命令的第一个参数(来区分):
+.TP
+\fBafter \fIms\fR
+\fIMs\fR 必须是整数,给出以毫秒为单位的时间。命令在睡眠(sleep) \fIms\fR 毫秒之后返回。当命令在睡眠的时候,应用不响应事件。
+.TP
+\fBafter \fIms \fR?\fIscript script script ...\fR?
+在这种形式中,命令立即返回,它安排一个 Tcl 命令在 \fIms\fR 毫秒之后作为事件处理器(handler)来运行。在给定时间,命令将被精确的执行一次。延迟的命令是通过连接(concatenate)所有的  \fIscript\fR 参数形成的,这与 \fBconcat\fR 命令的方式(fashion)一样。命令将在全局层次上执行(在任何 Tcl 过程的上下文之外)。在执行延迟命令时如果有错误发生,则使用 \fBbgerror\fR 机制来报告错误。\fBafter\fR 命令返回一个标识符,\fBafter cancel\fR 命令用它来取消延迟的命令。
+.TP
+\fBafter cancel \fIid\fR
+取消前面安排的延迟命令的执行。\fIId\fR 指示要取消那条命令;它必须是前面 \fBafter\fR 命令返回的。如果用 \fIid\fR 给出的命令已经执行了则 \fBafter cancel\fR 命令不起作用。
+.TP
+\fBafter cancel \fIscript script ...\fR
+这个命令也取消一个延迟命令的执行。用空格分隔符来连接 \fIscript\fR 参数(如同在 \fBconcat\fR 命令中那样)。如果有一条等待的命令与这个字符串匹配,则取消它并永不执行;如果当前没有这样的等待命令则 \fBafter cancel\fR 命令不起作用。
+.TP
+\fBafter idle \fIscript \fR?\fIscript script ...\fR?
+用空格分隔符连接 \fIscript\fR 参数(如同在 \fBconcat\fR 命令中那样),并被作为一个空闲回调(idle callback)来安排结果脚本在以后执行。下次进入事件循环并且没有事件要处理(的时候),这个脚本被精确的执行一次。命令返回一个标识符,\fBafter cancel\fR 命令用它来取消延迟的命令。在执行延迟命令时如果有错误发生,则使用 \fBbgerror\fR 机制来报告错误。
+.TP
+\fBafter info \fR?\fIid\fR?
+这个命令返回关于存在的事件处理器的信息。如果没提供 \fIid\fR 参数,命令为所有通过 \fBafter\fR 命令给这个解释器建立的事件处理器返回一个标识符的列表。如果提供了 \fIid\fR,它指定一个现存的处理器;\fIid\fR 必须是以前调用 \fBafter\fR 返回的值并且仍未被触发或取消。这种情况下命令返回一个有两个元素的列表。列表的第一个元素是与 \fIid\fR 关联的脚本,第二个元素要么是 \fBidle\fR 要么是 \fBtimer\fR,指示它是那种类型的事件处理器。
+.LP
+命令的 \fBafter \fIms\fR 和 \fBafter idle\fR 形式假定应用是事件驱动的: 除非应用进入事件循环否则延迟命令将不被执行。在通常不事件驱动的应用中,如 \fBtclsh\fR,用 \fBvwait\fR 和 \fBupdate\fR 命令进入事件循环。
+
+
+.SH "参见 SEE ALSO"
+bgerror
+
+.SH 关键字 KEYWORDS
+cancel, delay, idle callback, sleep, time
+
+.SH [中文版维护人]
+.B 寒蝉退士
+.SH [中文版最新更新]
+.B 2001/06/21
+.SH 《中国 Linux 论坛 man 手册页翻译计划》:
+.B http://cmpp.linuxforum.net
diff --git a/src/mann/append.n b/src/mann/append.n
new file mode 100644
index 0000000..8fbcd09
--- /dev/null
+++ b/src/mann/append.n
@@ -0,0 +1,268 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH append n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+append \- 向变量追加
+.SH 总览 SYNOPSIS
+\fBappend \fIvarName \fR?\fIvalue value value ...\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+向变量 \fIvarName\f 的当前值添加所有的 \fIvalue\fR 参数。如果 \fIvarName\f 不存在,给她一个等价于所有 \fIvalue\fR 参数的联接(concatenation)的值。这个命令提供了一个有效的方式来增殖性地增长(build up)变量。例如,如果 \fB$a\fR 很长,``\fBappend a $b\fR'' 比 ``\fBset a $a$b\fR'' 更加有效率。
+
+.SH "参见 SEE ALSO"
+concat(n), lappend(n)
+
+.SH 关键字 KEYWORDS
+append, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/array.n b/src/mann/array.n
new file mode 100644
index 0000000..976426c
--- /dev/null
+++ b/src/mann/array.n
@@ -0,0 +1,300 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH array n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+array \- 操纵数组变量
+.SH 总览 SYNOPSIS
+\fBarray \fIoption arrayName\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+ 这个命令在由 \fIarrayName\fR 给出的变量上进行多种操作中的某一项。除了在后面为单独的命令(专门)指定之外,\fIarrayName\fR 必须是一个现存的数组变量的名字。\fIoption\fR 选项决定命令完成何种动作。合法的选项(可以用缩写)有:
+.TP
+\fBarray anymore \fIarrayName searchId\fR
+如果在一次数组查找中还有元素等待处理则返回 1,如果所有元素都被返回过了则返回 0。\fISearchId\fR 指示在 \fIarrayName\fR 上检查哪个查找,它必须是从以前的 \fBarray startsearch\fR 调用返回的值。如果一个数组的某个元素有空名字时这个选项特别有用,因为从 \fBarray nextelement\fR 返回的值不能指示出查找是否完成。
+.TP
+\fBarray donesearch \fIarrayName searchId\fR
+这个命令终止一个数组查找并销毁与这个查找有关的所有状态。\fISearchId\fR 指示在 \fIarrayName\fR 上要要销毁哪个查找,必须时在以前调用 \fBarray startsearch\fR 返回的值。返回一个空串。
+.TP
+\fBarray exists \fIarrayName\fR
+如果 \fIarrayName\fR 是一个数组变量返回 1,如果没有叫这个名字的变量或是一个标量变量则返回 0。
+.TP
+\fBarray get \fIarrayName\fR ?\fIpattern\fR?
+返回包含成对的元素的一个列表。每对的第一个元素是在 \fIarrayName\fR 中的元素名,每对的第二个元素是数组元素的值。没定义成对元素的次序。如果没指定 \fIpattern\fR,则数组的所有元素被包括在结果中,如果指定了 \fIpattern\fR,则结果中只包括那些名字匹配 \fIpattern\fRn 的元素(使用 \fBstring match\fR 的匹配规则)。如果 \fIarrayName\fR 不是一个数组变量的名字,或者数组不包含元素,则返回一个空列表。
+.TP
+\fBarray names \fIarrayName\fR ?\fIpattern\fR?
+返回在一个列表,它包含数组中匹配 \fIpattern\fR 的所有元素的名字(使用 \fBstring match\fR 匹配规则)。 如果省略了 \fIpattern\fR 则命令返回在数组中所有元素的名字。如果在数组中没有(匹配的)元素,或者 \fIarrayName\fRe 不是一个数组变量的名字,则返回一个空串。
+.TP
+\fBarray nextelement \fIarrayName searchId\fR
+返回在 \fIarrayName\fR 中下一个元素的名字,如果在这个查找中所有 \fIarrayName\fR 的元素都被已经被返回过了则返回空串。\fIsearchId\fR 参数标识一个查找,并且必须是 \fBarray startsearch\fR 命令的返回值。 警告: 如果从这个数组中添加或删除元素,那么自动的终止所有的查找,有如调用了 \fBarray donesearch\fR,这将导致对这些查找的 \fBarray nextelement\fR 操作失败。
+.TP
+\fBarray set \fIarrayName list\fR
+设置在 \fIarrayName\fR 中的一个或多个元素的值。list 的形式必须与 \fBarray get\fR 返回的相同,由偶数个元素组成的。在 \fIlist\fR 中每个奇数元素被作为在 \fIarrayName\fR 中被作为一个元素名对待,后面跟随的 \fIlist\fR 中的元素被作为这个数组元素的新值使用。如果变量 \fIarrayName\fR 不存在并且 \fIlist\fR 是空, 建立是空值的 \fIarrayName\fR。
+.TP
+\fBarray size \fIarrayName\fR
+返回一个给出在一个数组中的元素个数的一个十进制数的字符串。如果 \fIarrayName\fR 不是一个数组的名字则返回 0。
+.TP
+\fBarray startsearch \fIarrayName\fR
+这个命令在用 \fIarrayName\fR 给出的数组上初始化一个逐个元素的查找,调用 \fBarray nextelement\fR 命令将返回在数组中单独元素的名字。在查找完成的时候,要调用 \fBarray donesearch\fR 命令。返回值是一个在 \fBarray nextelement\fR 和 \fBarray donesearch\fR 命令中必须要用的查找标识符;对同一个数组允许多个查找同时进行。
+
+.VS 8.3
+
+.TP
+\fBarray unset \fIarrayName\fR ?\fIpattern\fR?
+在一个数组中删除匹配 \fIpattern\fR 的所有元素(使用 \fBstring match\fR 的匹配规则)。如果 \fIarrayName\fR 不是一个数组变量的名字或在数组中没有匹配的元素,则返回一个空数组。如果是一个数组变量的名字并且省略了 \fIpattern\fR ,则命令删除整个数组。 
+
+.VE 8.3
+
+.SH 关键字 KEYWORDS
+array, element names, search
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/22
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/bell.n b/src/mann/bell.n
new file mode 100644
index 0000000..426ff39
--- /dev/null
+++ b/src/mann/bell.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: bell.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: bell.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 4c 8c 12c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH bell n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+bell \- 鸣响一个显示器的震铃
+.SH 总览 SYNOPSIS
+\fBbell \fR?\fB\-displayof \fIwindow\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+ 这个命令鸣响 \fIwindow\fR 所在的显示器的震铃并返回一个空串。如果省略了 \fB\-displayof\fR 选项,缺省使用应用的主窗口的显示器。这个命令使用给这个显示器的有关震铃的当前设置,可以使用程序如 \fBxset\fR 来修改这个设置。
+.PP
+这个命令还重置给这个屏幕的屏幕保护器(screen saver)。一些屏幕保护器(程序)忽略这个重置,而另一些将重置而屏幕再次变为可见。
+
+
+.SH 关键字 KEYWORDS
+beep, bell, ring
+
+.SH [中文版维护人]
+.B 寒蝉退士
+.SH [中文版最新更新]
+.B 2001/09/28
+.SH 《中国 Linux 论坛 man 手册页翻译计划》:
+.B http://cmpp.linuxforum.net
diff --git a/src/mann/bgerror.n b/src/mann/bgerror.n
new file mode 100644
index 0000000..f58af37
--- /dev/null
+++ b/src/mann/bgerror.n
@@ -0,0 +1,282 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: bgerror.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: bgerror.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH bgerror n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+bgerror \- 为处理后台错误而被调用的命令
+.SH 总览 SYNOPSIS
+\fBbgerror \fImessage\fR
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+\fBbgerror\fR 命令不作为 Tcl 内置部分而存在。如果单独的某个应用或用户希望处理后台错误,可以定义一个 bgerror 命令(例如,作为一个 Tcl 过程)。
+.PP
+后台错误发生在事件处理器(handler)或不是由应用发起(originate)的一些其他命令中。例如,如果在执行一个用 \fBafter\fR 命令指定的一个命令时发生了一个错误,那么这就是一个后台错误。对于一个非后台错误,通过嵌套的 Tcl 命令求值(evaluation), 错误可以被简单的向上返回,直到到达应用中的顶层代码;则应用可以用任何它希望的方式来报告错误。 当一个后台错误发生时,在 Tcl 库中终止命令解释(unwinding ends ? 松开末端)并且没有给 Tcl 用来报告错误明显的途径。
+.PP
+当 Tcl 检测到一个后台错误时,它保存关于错误的信息并作为一个空闲处理器而在以后调用 \fBbgerror\fR 命令。在调用 \fBbgerror\fR 之前,Tcl 把 fBerrorInfo\fR 和 \fBerrorCode\fR 变量的存储成它们在错误发生时的值,接着用错误消息作为唯一的参数来调用 \fBbgerror\fR。Tcl 假定应用已经实现了 \fBbgerror\fR 命令,命令以对应用有意义的方式来报告错误。 Tcl 在 \fBbgerror\fR 命令没有生成错误时忽略返回的任何结果。
+.PP
+如果在 \fBbgerror\fR 命令中发生了另一个 Tcl 错误(例如,没有定义 \fBbgerror\fR 命令)则 Tcl 通过向标准错误写消息来处理这个自身的错误。
+.PP
+在调用 \fBbgerror\fR 来处理错误之前如果积累了一些错误,将以发生的次序为每个错误调用一次 \fBbgerror\fR。但是,如果 \fBbgerror\fR 以一个 break 例外返回,则跳过所有的余下的错误而不调用 \fBbgerror\fR。
+.PP
+ Tcl 没有缺省的实现 \fBbgerror\fR。但是,在使用  Tk 的应用中有一个缺省的 \fBbgerror\fR 过程,它贴出(post)一个对话框,包含了错误信息并向用户提供一个机会来查看显示在什么地方发生错误的栈跟踪。
+In addition to allowing the user to view the stack trace, the dialog provides an additional application configurable button which may be used, for example, to save the stack trace to a file.  By default,
+this is the behavior associated with that button.  This behavior can be redefined by setting the option database values \fB*ErrorDialog.function.text\fR, to specify the caption for the function button, and \fB*ErrorDialog.function.command\fR, to specify the command to be run.  The text of the stack trace is appended to the command when it is evaluated.  If either of these options is set to the empty string, then the additional button will not be displayed in the dialog.
+
+.SH "参见 SEE ALSO"
+after(n), tclvars(n)
+
+.SH 关键字 KEYWORDS
+background error, reporting
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/27
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/binary.n b/src/mann/binary.n
new file mode 100644
index 0000000..c1fdbf8
--- /dev/null
+++ b/src/mann/binary.n
@@ -0,0 +1,569 @@
+'\"
+'\" Copyright (c) 1997 by Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: binary.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: binary.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH binary n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+binary \- 从(向)二进制串插入和提取字段
+.SH 总览 SYNOPSIS
+\fBbinary format \fIformatString \fR?\fIarg arg ...\fR?
+.br
+\fBbinary scan \fIstring formatString \fR?\fIvarName varName ...\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+ 这个命令提供操纵二进制数据的设施。第一种形式是 \fBbinary format\fR,从普通的 Tcl 值来建立一个二进制串。例如,给出值 16 和 22,可以产生一个8字节的二进制串,由两个4字节的整数组成。第二种形式是 \fBbinary scan\fR,做相反的事: 从一个二进制串中提取出数据并作为通常的 Tcl 字符串值而返回。
+
+.SH "二进制化 BINARY FORMAT"
+.PP
+\fBbinary format\fR 命令生成一个二进制串,其格式由 \fIformatString\fR 指定,它的内容来(自在后面)增添的参数。返回结果二进制值。
+.PP
+\fIformatString\fR 由零个或多个字段说明符(specifier)的序列组成,用零个或多个空格分隔。每个说明符都是一个单独的类型字符,跟随着一个可选的数值 \fIcount\fR。多数字段说明符消耗(consume)一个参数来获取被格式化的值。类型字符指定如何格式化值。\fIcount\fR 典型的指示从值中接受了多少个指定类型的单项(item)。如果\fIcount\fR 存在,则是一个非负十进制整数或 \fB*\fR,星号通常指示使用在值中所有的单项。如果参数的个数不匹配在消耗参数的这些格式串中的字段的个数,则产生一个错误。
+.PP
+每个类型-数目(type-count)对在二进制串上移动一个假想的游标,在当前的位置上存储一些字节并且游标前进到最近存储的字节的紧后面。游标初始在位置 0 也就是在数据的开始(端)。类型可以是下列字符中的任意一个:
+.IP \fBa\fR 5
+在输出串中存储长度是 \fIcount\fR 的一个字符串。如果 \fIarg\fR 比 \fIcount\fR 的字节数少,则有增补的零字节来填充字段。如果 \fIarg\fR 比指定长度多,忽略额外的字符。如果 \fIcount\fR 是 \fB*\fR, 则格式化在 \fIarg\fR 中的所有字节。如果省略了 \fIcount\fR ,则格式化一个字符。例如,
+.RS
+.CS
+\fBbinary format a7a*a alpha bravo charlie\fR
+.CE
+将返回等价于 \fBalpha\\000\\000bravoc\fR的一个串。
+.RE
+.IP \fBA\fR 5
+除了使用空格而不是空字符来填充之外,这种形式同于 \fBa\fR。例如,
+.RS
+.CS
+\fBbinary format A6A*A alpha bravo charlie\fR
+.CE
+将返回 \fBalpha bravoc\fR.
+.RE
+.IP \fBb\fR 5
+在输出串中存储 \fIcount\fR 个二进制数字的一个串,并且在每个字节中以从低到高的次序(来排序)。\fIArg\fR 必须包含一个 \fB1\fR 和 \fB0\fR 字符的一个序列。以从最先到最后的次序散布(emit)结果字节,并且以在每个字节中以从低到高的次序格式化每位。如果 \fIarg\fR 比 \fIcount\fR 的位数少,则剩余的位使用零。如果 \fIarg\fR 比指定的位数多,忽略额外的位。如果 \fIcount\fR 是 \fB*\fR, 则格式化在 \fIarg\fR 中所有的位。如果省略了 \fIcount\fR,则格式化一位。如果如果格式化的位数不结束在字节边界上,最后的字节的剩余的位将是零。例如,
+.RS
+.CS
+\fBbinary format b5b* 11100 111000011010\fR
+.CE
+将返回等价于 \fB\\x07\\x87\\x05\fR的一个串。
+.RE
+.IP \fBB\fR 5
+除了在每个字节中以从高到低的次序(来排序)之外,这种形式同于 \fBb\fR。例如,
+.RS
+.CS
+\fBbinary format B5B* 11100 111000011010\fR
+.CE
+将返回等价于 \fB\\xe0\\xe1\\xa0\fR的一个串。
+.RE
+.IP \fBh\fR 5
+在输出串中存储 \fIcount\fR 个十六进制的数字的一个串,并且在每个字节中以从低到高的次序(来排序)。\fIArg\fR  必须包含在“0123456789abcdefABCDEF”(字符)集中的字符的一个序列。以从最先到最后的次序散布(emit)结果字节,并且在每个字节中以从低到高的次序格式化十六进制数字。如果 \fIarg\fR 比 \fIcount\fR 的数字个数少,则剩余的数字使用零。如果 \fIarg\fR 比指定的数字的个数多,忽略额外的数字。如果 \fIcount\fR 是 \fB*\fR,则格式化在 \fIarg\fR 中所有的数字。如果省略了 \fIcount\fR ,则格式化一个数字。如果格式化的数字的个数不结束在一个字节的边界上,最后的字节的剩余的位将是零。例如,
+.RS
+.CS
+\fBbinary format h3h* AB def\fR
+.CE
+将返回等价于 \fB\\xba\\x00\\xed\\x0f\fR的一个串。
+.RE
+.IP \fBH\fR 5
+除了在每个字节中以从高到低的次序(来排序)之外,这种形式同于 \fBh\fR 。例如,
+.RS
+.CS
+\fBbinary format H3H* ab DEF\fR
+.CE
+将返回等价于 \fB\\xab\\x00\\xde\\xf0\fR的一个串。
+.RE
+.IP \fBc\fR 5
+在输出串中存储一个或多个8位整数值。如果未指定 \fIcount\fR,则 \fIarg\fR 必须包含一个整数值;否则 \fIarg\fR 必须包含至少有一个整数元素的一个列表。在当前的位置上把每个整数的低位(low-order)的 8 位存储成一个一字节的值。如果 \fIcount\fR 是 \fB*\fR,则格式化在列表中所有的整数。如果在列表中的元素的个数比 \fIcount\fR 少,则产生一个错误。 如果在列表中的元素的个数比 \fIcount\fR 多,则忽略额外的元素。例如,
+.RS
+.CS
+\fBbinary format c3cc* {3 -3 128 1} 260 {2 5}\fR
+.CE
+将返回等价于 \fB\\x03\\xfd\\x80\\x04\\x02\\x05\fR 的一个串。而
+.CS
+\fBbinary format c {2 5}\fR
+.CE
+将产生一个错误。
+.RE
+.IP \fBs\fR 5
+除了以小端(little-endian)字节序在输出串中存储一个或多个16位整数之外,这种形式同于 \fBc\fR。在当前位置上把每个整数的低位的16位存储成一个两字节的值,并且首先存储最低有效(significant)字节。例如,
+.RS
+.CS
+\fBbinary format s3 {3 -3 258 1}\fR
+.CE
+将返回等价于 \fB\\x03\\x00\\xfd\\xff\\x02\\x01\fR 的一个字串。
+.RE
+.IP \fBS\fR 5
+除了以大端(big-endian)字节序在输出串中存储一个或多个16位整数之外,这种形式同于 \fBs\fR 。例如,
+.RS
+.CS
+\fBbinary format S3 {3 -3 258 1}\fR
+.CE
+将返回等价于 \fB\\x00\\x03\\xff\\xfd\\x01\\x02\fR 的一个串。
+.RE
+.IP \fBi\fR 5
+ 除了以小端(little-endian)字节序在输出串中存储一个或多个32位整数之外,这种形式同于 \fBc\fR。在当前位置上把每个整数的低位的32位存储成一个四字节的值,并且首先存储最低有效字节。例如,
+.RS
+.CS
+\fBbinary format i3 {3 -3 65536 1}\fR
+.CE
+将返回等价于 \fB\\x03\\x00\\x00\\x00\\xfd\\xff\\xff\\xff\\x00\\x00\\x01\\x00\fR 的一个串。
+.RE
+.IP \fBI\fR 5
+除了以大端(big-endian)字节序在输出串中存储一个或多个32位整数之外,这种形式同于 \fBi\fR。例如,
+.RS
+.CS
+\fBbinary format I3 {3 -3 65536 1}\fR
+.CE
+将返回等价于 \fB\\x00\\x00\\x00\\x03\\xff\\xff\\xff\\xfd\\x00\\x01\\x00\\x00\fR 的一个串。
+.RE
+.IP \fBf\fR 5
+除了以机器的本地表示在输出串中存储一个或多个单精度浮点数之外,这种形式同于 \fBc\fR。这种表示是不能跨体系移植的,所以不应用于在网络上交流浮点数。浮点数的大小在体系间可能不同,所以生成的字节数也可能不同。如果值溢出了机器的本地表示,则使用系统定义的 FLT_MAX 的值。因为 Tcl 在内部使用双精度浮点数,在转换成单精度时可能损失些精度。例如,运行在 Intel Pentium 处理器的一个 Windows 系统上,
+.RS
+.CS
+\fBbinary format f2 {1.6 3.4}\fR
+.CE
+将返回等价于 \fB\\xcd\\xcc\\xcc\\x3f\\x9a\\x99\\x59\\x40\fR 的一个串。
+.RE
+.IP \fBd\fR 5
+除了以机器的本地表示在输出串中存储一个或多个双精度浮点数之外,这种形式同于 \fBf\fR。例如,运行在 Intel Pentium 处理器的一个 Windows 系统上,
+.RS
+.CS
+\fBbinary format d1 {1.6}\fR
+.CE
+将返回等价于 \fB\\x9a\\x99\\x99\\x99\\x99\\x99\\xf9\\x3f\fR 的一个串。
+.RE
+.IP \fBx\fR 5
+Stores \fIcount\fR null bytes in the output string.  If \fIcount\fR is
+not specified, stores one null byte.  If \fIcount\fR is \fB*\fR,
+generates an error.  This type does not consume an argument.  For
+example,
+.RS
+.CS
+\fBbinary format a3xa3x2a3 abc def ghi\fR
+.CE
+将返回等价于 \fBabc\\000def\\000\\000ghi\fR 的一个串。
+.RE
+.IP \fBX\fR 5
+在输出串中反向移动游标 \fIcount\fR 字节。如果 \fIcount\fR 是 \fB*\fR 或比当前游标位置大,则游标定位到位置 0,这样下个存储的字节将是结果串中的第一个字节。如果省略了\fIcount\fR,则游标反向移动一字节。 这种形式不使用参数。例如,
+.RS
+.CS
+\fBbinary format a3X*a3X2a3 abc def ghi\fR
+.CE
+将返回 \fBdghi\fR.
+.RE
+.IP \fB@\fR 5
+在输出串中把游标移动到由 \fIcount\fR 指定的绝对位置上。位置 0 参照在输出串中的第一个字节。如果 \fIcount\fR 参照的位置超出至今所存储的最后的字节,则在空挡的(unitialized ?)位置上放置空字节并把游标放置到指定位置。如果 \fIcount\fR 是 \fB*\fR,则游标将被移动到输出串的末端。如果省略了 \fIcount\fR,则产生一个错误。这种类型不使用参数。例如,
+.RS
+.CS
+\fBbinary format a5 at 2a1@*a3 at 10a1 abcde f ghi j\fR
+.CE
+将返回 \fBabfdeghi\\000\\000j\fR.
+.RE
+
+.SH "二进制检索 BINARY SCAN"
+.PP
+\fBbinary scan\fR 命令从一个二进制串分析字段、返回完成的转换的数目。\fIString\fR 给出要被分析的输入而 \fIformatString\fR 指示如何分析它。每个 \fIvarName\fR 给出一个变量的名字;当从 \fIstring\fR 检索出一个字段时,结果被赋给相应的变量。
+.PP
+如同 \fBbinary format\fR 那样,\fIformatString\fR 由零个或多个字段说明符(specifier)的序列组成,用零个或多个空格分隔。每个说明符都是一个单独的类型字符,跟随着一个可选的数值 \fIcount\fR。多数字段说明符消耗(consume)一个参数来获取检索出的值要放置在其中的那个变量。类型字符指定如何解释二进制串。\fIcount\fR 典型的指定从数据中接受指定类型的多少个单项(item)。如果存在,\fIcount\fR 是一个非负数的十进制整数或 \fB*\fR,星号通常指示要用到在数据中所有的剩余的单项。如果在满足当前字段说明符的当前位置之后没有剩下足够的字节,则相应的变量保持不动(untouch)而 \fBbinary scan\fR 立即返回设置了的变量的个数。如果没有足够的参数给所有这些消耗参数的格式串中的字段,则产生一个错误。
+.PP
+着重 (\fBimportant\fR) 注意 \fBc\fR, \fBs\fR 和 \fBS\fR(还有在64位系统上的 \fBi\fR 和 \fBI\fRI)将被检索成一个长整型 (long) 大小的值。在这种情况下,(最)高位设置(为1)的值(对于char 是 0x80,对于 short 是 0x8000,对于 int 是 0x80000000),将被符号扩展。所以下列情况将发生:
+.CS
+\fBset signShort [binary format s1 0x8000]\fR
+\fBbinary scan $signShort s1 val; \fI# val == 0xFFFF8000\fR
+.CE
+如果你打算生成一个无符号值,那么你可以把返回值屏蔽(mask)成需要的大小。例如,要生成一个无符号  short 值:
+.CS
+\fBset val [expr {$val & 0xFFFF}]; \fI# val == 0x8000\fR
+.CE
+.PP
+每个类型-数目(type-count)对在二进制串上移动一个假想的游标,从当前的位置上读一些字节。游标的初始在位置 0 也就是数据的开始(端)。类型可以是下列字符中的任意一个:
+.IP \fBa\fR 5
+数据是长度是 \fIcount\fR 的一个字符串。如果 \fIcount\fR 是 \fB*\fR,则在 string 中所有的剩余的字节将被检索到变量中。如果省略了 \fIcount\fR,则将检索一个字符。例如,
+.RS
+.CS
+\fBbinary scan abcde\\000fghi a6a10 var1 var2\fR
+.CE
+将返回 \fB1\fR 并把等价于 \fBabcde\\000\fR 的一个字符串存储到 \fBvar1\fR 而 \fBvar2\fR 保持不变。
+.RE
+.IP \fBA\fR 5
+除了在存储到变量之前从检索到的值中去除(strip)尾随的空白(blank)和空字符(null)之外,这种形式同于 \fBa\fR。例如
+.RS
+.CS
+\fBbinary scan "abc efghi  \\000" A* var1\fR
+.CE
+将返回 \fB1\fR 并把 \fBabc efghi\fR 存储到 \fBvar1\fR。
+.RE
+.IP \fBb\fR 5
+把数据转换成 \fIcount\fR 位二进制数字的一个字符串,以从低到高的次序表示成“1”和“0”字符的一个序列。数据字节按从最先到最后的次序被检索,并且在每个字节中按从低到高的次序接受(每)位。忽略在最后的字节中的任何额外的位。如果 \fIcount\fR 是 \fB*\fR,则检索在串中的所有的剩余的位。 如果省略了 \fIcount\fR,则检索一位。例如,
+.RS
+.CS
+\fBbinary scan \\x07\\x87\\x05 b5b* var1 var2\fR
+.CE
+将返回 \fB2\fR 并把 \fB11100\fR 存储到 \fBvar1\fR 且 \fB1110000110100000\fR 存储到 \fBvar2\fR.
+.RE
+.IP \fBB\fR 5
+除了在每字节中按从高到低的次序接受(每)位之外,这种形式同于 \fBb\fR。例如,
+.RS
+.CS
+\fBbinary scan \\x70\\x87\\x05 B5B* var1 var2\fR
+.CE
+将返回 \fB2\fR 并把 \fB01110\fR 存储到 \fBvar1\fR 且 \fB1000011100000101\fR 存储到 \fBvar2\fR.
+.RE
+.IP \fBh\fR 5
+把数据转换成 \fIcount\fR 个十六进制数字的一个字符串,以从低到高的次序表示成一个在 “0123456789abcdefABCDEF” (字符)集中的字符的一个序列。按从最先到最后的次序检索数据字节,并且在每个字节中以从低到高的次序接受十六进制数字。忽略最后的字节中的任何额外的位。如果 \fIcount\fR 是 \fB*\fR, 则检索在串中所有剩余的十六进制数字。如果省略了 \fIcount\fR,则检索一位十六进制数字。例如,
+.RS
+.CS
+\fBbinary scan \\x07\\x86\\x05 h3h* var1 var2\fR
+.CE
+将返回 \fB2\fR 并把 \fB706\fR 存储到 \fBvar1\fR 且 \fB50\fR 存储到n \fBvar2\fR.
+.RE
+.IP \fBH\fR 5
+除了在每个字节中以从高到低的次序接受数字之外,这种形式同于 \fBh\fR。例如,
+.RS
+.CS
+\fBbinary scan \\x07\\x86\\x05 H3H* var1 var2\fR
+.CE
+将返回 \fB2\fR 并把 \fB078\fR 存储到\fBvar1\fR 且 \fB05\fR 存储到 \fBvar2\fR.
+.RE
+.IP \fBc\fR 5
+把数据转换成 \fIcount\fR 个8位有符号整数并作为一个列表存储到相应的变量中。如果 \fIcount\fR 是 \fB*\fR,则检索在串中所有剩余的字节。如果省略了 \fIcount\fR,则检索一个8位整数。例如,
+.RS
+.CS
+\fBbinary scan \\x07\\x86\\x05 c2c* var1 var2\fR
+.CE
+将返回\fB2\fR 并把 \fB7 -122\fR 存储到 \fBvar1\fR 且 \fB5\fR 存储到 \fBvar2\fR.  注意返回的整数是有符号的,但它们是类似下面这样的表达式来转换成无符号的8位数量(quantity):
+.CS
+\fBexpr ( $num + 0x100 ) % 0x100\fR
+.CE
+.RE
+.IP \fBs\fR 5
+把数据解释成 \fIcount\fR 个表示为小端字节序的16位有符号整数。 整数被作为一个列表存储到相应的变量中。如果 \fIcount\fR 是 \fB*\fR,则检索在串中所有剩余的字节。如果省略了 \fIcount\fR,则检索一个16位整数。例如,
+.RS
+.CS
+\fBbinary scan \\x05\\x00\\x07\\x00\\xf0\\xff s2s* var1 var2\fR
+.CE
+将返回 \fB2\fR 并把 \fB5 7\fR 存储到 \fBvar1\fR 且 \fB-16\fR 存储到 \fBvar2\fR.  注意返回的整数是有符号的,但它们是类似下面这样的表达式来转换成无符号的16位数量(quantity):
+.CS
+\fBexpr ( $num + 0x10000 ) % 0x10000\fR
+.CE
+.RE
+.IP \fBS\fR 5
+除了把数据解释成 \fIcount\fR 个表示为大端字节序的16位有符号整数之外,这种形式同于 \fBs\fR。例如, 
+.RS
+.CS
+\fBbinary scan \\x00\\x05\\x00\\x07\\xff\\xf0 S2S* var1 var2\fR
+.CE
+将返回 \fB2\fR 并把 \fB5 7\fR 存储到 \fBvar1\fR 且 \fB-16\fR 存储到 \fBvar2\fR. 
+.RE
+.IP \fBi\fR 5
+把数据解释成 \fIcount\fR 个表示为小端字节序的32位有符号整数。 整数被作为一个列表存储到相应的变量中。如果 \fIcount\fR 是 \fB*\fR,则检索在串中所有剩余的字节。如果省略了 \fIcount\fR,则检索一个32位整数。例如,
+.RS
+.CS
+\fBbinary scan \\x05\\x00\\x00\\x00\\x07\\x00\\x00\\x00\\xf0\\xff\\xff\\xff i2i* var1 var2\fR
+.CE
+将返回 \fB2\fR ,并把 \fB5 7\fR 存储到 \fBvar1\fR 且 \fB-16\fR 存储到 \fBvar2\fR。注意返回的整数是有符号的并且不能被 Tcl 表示成无符号的值。
+.RE
+.IP \fBI\fR 5
+除了把数据解释成 \fIcount\fR 个表示为大端字节序的32位有符号整数之外,这种形式同于 \fBi\fR。例如,
+.RS
+.CS
+\fBbinary \\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x07\\xff\\xff\\xff\\xf0 I2I* var1 var2\fR
+.CE
+将返回 \fB2\fR  ,并把 \fB5 7\fR 存储到 \fBvar1\fR 且 \fB-16\fR 存储到 \fBvar2\fR。
+.RE
+.IP \fBf\fR 5
+把数据解释成 \fIcount\fR 个机器本地表示的单精度浮点数,把浮点数作为一个列表存储到相应的变量中 。如果 \fIcount\fR 是 \fB*\fR,则检索在串中所有剩余的字节。如果省略了 \fIcount\fR,则检索一个单精度浮点数。 浮点数的大小在体系间可能不同,所以检索的字节数也可能不同。如果数据不表示一个有效的浮点数,结果值是未定义的并且依赖于编译器。例如,运行在 Intel Pentium 处理器的一个 Windows 系统上,
+.RS
+.CS
+\fBbinary scan \\x3f\\xcc\\xcc\\xcd f var1\fR
+.CE
+将返回 \fB1\f ,并把 \fB1.6000000238418579\fR 存储到 \fBvar1\fR。
+.RE
+.IP \fBd\fR 5
+除了把数据解释成 \fIcount\f 个机器本地表示的双精度浮点数之外,这种形式同于 \fBf\fR。例如,运行在 Intel Pentium 处理器的一个 Windows 系统上,
+.RS
+.CS
+\fBbinary scan \\x9a\\x99\\x99\\x99\\x99\\x99\\xf9\\x3f d var1\fR
+.CE
+将返回 \fB1\fR ,并把 \fB1.6000000000000001\fR 存储到 \fBvar1\fR1。
+.RE
+.IP \fBx\fR 5
+在 \fIstring\fR 中正向移动游标 \fIcount\fR 字节。如果 \fIcount\fR 是 \fB*\fR 或比当前游标位置之后的字节数大,则游标定位到位置 \fIstring\fR 中的最后一个字节之后。如果省略了\fIcount\fR,则游标正向移动一字节。 注意 这种形式不消耗参数。例如,
+.RS
+.CS
+\fBbinary scan \\x01\\x02\\x03\\x04 x2H* var1\fR
+.CE
+将返回 \fB1\fR,并把 \fB0304\fR 存储到 \fBvar1\fR。
+.RE
+.IP \fBX\fR 5
+在 \fIstring\fR 中反向移动游标 \fIcount\fR 字节。如果 \fIcount\fR 是 \fB*\fR 或比当前游标位置大,则游标定位到位置 0,这样下个检索的字节将是 \fIstring\fR 中的第一个字节。如果省略了\fIcount\fR,则游标反向移动一字节。 注意这种形式不消耗参数。例如,
+.RS
+.CS
+\fBbinary scan \\x01\\x02\\x03\\x04 c2XH* var1 var2\fR
+.CE
+将返回 \fB2\fR,并把 \fB1 2\fR 存储到 \fBvar1\fR 且 \fB020304\fR 存储到 \fBvar2\fR。
+.RE
+.IP \fB@\fR 5
+在数据串中把游标移动到由 \fIcount\fRt 指定的绝对位置上。位置 0 参照在 \fIstring\fR 中的第一个字节。如果 \fIcount\fR 参照的位置超出 \fIstring\fR 的末端,则把游标定位在最后的字节的后面。如果省略了 \fIcount\fR,则产生一个错误。例如,  
+.RS
+.CS
+\fBbinary scan \\x01\\x02\\x03\\x04 c2 at 1H* var1 var2\fR
+.CE
+将返回 2 ,并把 1 2 存储到 var1 且 020304 存储到 var2。
+.RE
+
+.SH "平台相关事宜 PLATFORM ISSUES"
+ 有时希望以机器的本地字节序来格式化或检索整数值。参照 \fBtcl_platform\fR  数组中的 \fBbyteOrder\fR 元素来决定在格式化或检索整数时使用那种类型字符。
+
+.SH "参见 SEE ALSO"
+format(n), scan(n), tclvars(n)
+
+.SH 关键字 KEYWORDS
+binary, format, scan
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/bindtags.n b/src/mann/bindtags.n
new file mode 100644
index 0000000..3253a3a
--- /dev/null
+++ b/src/mann/bindtags.n
@@ -0,0 +1,284 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: bindtags.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: bindtags.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 4c 8c 12c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH bindtags n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+bindtags \- 确定对一个窗口提供那些绑定和求值的次序
+.SH 总览 SYNOPSIS
+\fBbindtags \fIwindow \fR?\fItagList\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+用  \fBbind\fR 命令建立的一个绑定,可以关联上一个特定的窗口如 \fB.a.b.c\fR,一个类的名字如  \fBButton\fR,关键字 \fBall\fR,或任何其他字符串。所有这些形式叫做绑定标签(\fIbinding tags\fR)。每个窗口包含绑定标签的一个列表,它决定这个窗口如何处理事件。当在一个窗口中发生一个事件,依次把它提供给这个窗口的每个标签: 对于每个标签,执行匹配给定标签和事件的最明确的绑定。匹配处理的详情请参见 \fBbind\fR。
+.PP
+缺省的,每个窗口有四个绑定标签,它们依次是这个窗口的名字,这个窗口的类的名字,这个窗口的最近的顶层祖先的名字,和 \fBall\fR。顶层窗口缺省的只有三个标签,因为顶层名字与这个窗口的名字相同。\fBbindtags\fR 命令允许读取和修改一个窗口的绑定标签。
+.PP
+如果只用一个参数调用 \fBbindtags\fR,则把 \fIwindow\fR 的当前绑定标签的集合作为一个列表返回。如果对 \fBbindtags\fR 指定了 \fItagList\fR 参数,则它必须是一个正确的列表;把 \fIwindow\fR 的标签变更为这个列表的元素。\fItagList\fR 的元素可以是任意的字符串;但是,任何以一个点号开始的标签将被作为一个窗口的名字对待 ;如果在处理一个事件的时候不存在叫这个名字的窗口,则忽略这个事件的这个标签。\fItagList\fR 中元素的次序决定执行绑定脚本来响应事件的次序。例如,命令
+.CS
+\fBbindtags .b {all . Button .b}\fR
+.CE
+对叫做 \fB.b\fR 的一个按钮颠倒求值绑定脚本的次序,首先调用 \fBall\fR 绑定,接着是 \fB.b\fR 的顶层(“.”)的绑定,随后是类绑定,最后是 \fB.b\fR 的绑定。如果 \fItagList\fR 是一个空列表则把 \fIwindow\fR 的绑定标签返回为上面描述的缺省状态。
+.PP
+可以使用 \fBbindtags\fRs 命令来为一个窗口介入任意的补充绑定标签,或则删除标准标签。例如,命令
+.CS
+\fBbindtags .b {.b TrickyButton . all}\fR
+.CE
+把 \fB.b\fR 的 \fBButton\fR 标签替换为 \fBTrickyButton\fR。这意味着与 \fBButton\fR 标签相关联的按钮的缺省组件绑定,将不在提供给 \fB.b\fR,转而提供与 \fBTrickyButton\fR (可能有一些新的按钮行为)关联的任何绑定。
+
+.SH "参见 SEE ALSO"
+bind
+
+.SH 关键字 KEYWORDS
+binding, event, tag
+
+.SH [中文版维护人]
+.B 寒蝉退士
+.SH [中文版最新更新]
+.B 2002/05/11
+.SH 《中国 Linux 论坛 man 手册页翻译计划》:
+.B http://cmpp.linuxforum.net
diff --git a/src/mann/break.n b/src/mann/break.n
new file mode 100644
index 0000000..8c85d31
--- /dev/null
+++ b/src/mann/break.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: break.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: break.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH break n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+break \- 终止循环命令
+.SH 总览 SYNOPSIS
+\fBbreak\fR
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+ 这个命令典型的在一个象 \fBfor\fR 或 \fBforeach\fR 或 \fBwhile\fR 这样的循环命令的(循环)体中调用。它返回一个  TCL_BREAK 代码,这将导致一个 break 例外发生。这个例外将导致当前脚本被退出到(be aborted out to )在最内部(innermost)包含的循环命令,接着这个命令将终止它的执行并正常返回。在一些其他情况下也处理 Break 例外,如 \fBcatch\fR 命令、Tk 事件绑定、和过程体的最外部(outermost)的脚本。
+
+.SH "参见 SEE ALSO"
+catch(n), continue(n), for(n), foreach(n), while(n)
+
+.SH "关键字 KEYWORDS"
+abort, break, loop
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/27
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/catch.n b/src/mann/catch.n
new file mode 100644
index 0000000..2558231
--- /dev/null
+++ b/src/mann/catch.n
@@ -0,0 +1,290 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: catch.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: catch.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH catch n "8.0" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+catch \- 对脚本求值并追踪异常返回 
+.SH "总览 SYNOPSIS"
+\fBcatch\fI script \fR?\fIvarName\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBcatch\fR 命令被用于防止出错导致的终止命令解释。\fBCatch\fR   递归的调用 Tcl 解释器来执行 \fIscript\fR,并且不顾在执行 \fIscript \fR期间可能发生的任何错误,它总是返回而不引发(raise)任何错误。
+.PP
+如果 \fIscript\fR  引发一个错误,\fBcatch\fR  将返回一个非零的整数值,相应于异常返回代码中的一个(参见 tcl.h 来找到代码值的定义)。如果给出了 \fIvarName\fR  参数,则它所指名的变量被设置成从解释 \fIscript \fR得到的错误消息。
+.PP
+如果 \fIscript\fR  不引发任何错误,\fBcatch\fR  将返回 0(TCL_OK)并设置这个变量为脚本返回的值。
+.PP
+注意 \fBcatch\fR  捕获所有的例外,如同错误一样,包括了由 \fB break \fR 和 \fB continue \fR  生成的例外。唯一不捕获的错误是在编译脚本时发现的语法错误。这是因为 catch 命令只捕捉运行时的错误。当 catch 语句被编译后,脚本同样要被编译,并且任何错误都将生成一个 Tcl 错误。  
+
+.SH EXAMPLES
+
+\fBcatch\fR  命令可在一个 \fB if \fR  中使用,基于一个脚本的(是否)成功而(进行)分支(branch)。 
+
+.CS
+if { [catch {open $someFile w} fid] } {
+    puts stderr "Could not open $someFile for writing\\n$fid"
+    exit 1
+}
+.CE
+\fBcatch\fR  命令不捕捉编译后的语法错误。第一次调用 proc \fBfoo\fR  时,(过程)体将被编译并且生成一个  Tcl 错误。  
+
+.CS
+proc foo {} {
+    catch {expr {1 +- }}
+}
+.CE
+
+.SH "关键字 KEYWORDS"
+catch, error
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/cd.n b/src/mann/cd.n
new file mode 100644
index 0000000..afcffca
--- /dev/null
+++ b/src/mann/cd.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: cd.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: cd.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH cd n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+cd \- 改变工作目录
+.SH "总览 SYNOPSIS"
+\fBcd \fR?\fIdirName\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+把当前的工作目录改变成 \fIdirName\fR,如果没给出 \fIdirName\fR 就改变到主(home)目录(在 HOME 环境变量中指定)。返回一个空串。 
+
+.SH "参见 SEE ALSO"
+filename(n), glob(n), pwd(n)
+
+.SH "关键字 KEYWORDS"
+working directory
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/chooseColor.n b/src/mann/chooseColor.n
new file mode 100644
index 0000000..4d14d1f
--- /dev/null
+++ b/src/mann/chooseColor.n
@@ -0,0 +1,281 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: chooseColor.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: chooseColor.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_chooseColor n 4.2 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_chooseColor \- 弹出用于用户选择颜色的一个对话框。
+.PP
+.SH "总览 SYNOPSIS"
+\fBtk_chooseColor \fR?\fIoption value ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+过程 \fBtk_chooseColor\fR 弹出让用户选择一种颜色的一个对话框。下列成对的选项和值是这个命令的可能的命令行参数:
+.TP
+\fB\-initialcolor\fR \fIcolor\fR
+指定在颜色对话框弹出的时候在其中显示的颜色。\fIcolor\fR 的必须是 \fB Tk_GetColor \fR 函数可以接受的形式。
+.TP
+\fB\-parent\fR \fIwindow\fR
+使 \fIwindow\fR 成为颜色对话框逻辑上的父窗口。颜色对话框在其父窗口中显示。
+.TP
+\fB\-title\fR \fItitleString\fR
+指定一个字符串作为这个对话框的标题来显示。如果未指定这个选项,则显示缺省的标题。
+.LP
+如果用户选择了一个颜色,\fBtk_chooseColor\fR 将以能被 \fBTk_GetColor \fR所接受形式返回的颜色的名字。如果用户取消了这个操作,命令将返回空串。
+.SH "示例 EXAMPLE"
+.CS
+button .b \-fg [tk_chooseColor \-initialcolor gray \-title "Choose color"]
+.CE
+
+.SH "关键字 KEYWORDS"
+color selection dialog
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/chooseDirectory.n b/src/mann/chooseDirectory.n
new file mode 100644
index 0000000..b629366
--- /dev/null
+++ b/src/mann/chooseDirectory.n
@@ -0,0 +1,281 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: chooseDirectory.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: chooseDirectory.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_chooseDirectory n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_chooseDirectory \- 弹出让用户选择一个目录的一个对话框。
+.PP
+.SH "总览 SYNOPSIS"
+\fBtk_chooseDirectory \fR?\fIoption value ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+过程 \fBtk_chooseDirectory\fR 弹出一个对话框让用户选择一个目录。下列的\fI选项-值\fR对是可能的命令行参数:
+.TP
+\fB\-initialdir\fR \fIdirname\fR
+指定在对话框弹出的时候应当显示在 \fIdirectory\fR中的目录。如果未指定这个参数,则显示在当前工作目录中的目录。如果这个参数指定了一个相对路径,返回值将把这个相对路径转换成一个绝对路径。这个选项在 Macintosh 上不是总可以工作的。但这不是一个缺陷,而是在 Mac 上的 \fIGeneral Controls\fR 控制面板允许最终用户屏弃应用的缺省目录。
+.TP
+\fB\-parent\fR \fIwindow\fR
+使 \fIwindow\fR 成为这个对话框的逻辑父窗口。这个对话框显示在它的父窗口的顶上。
+.TP
+\fB\-title\fR \fItitleString\fR
+把一个字符串指定为这个对话框的标题。如果未指定这个选项,则显示一个缺省标题。
+.TP
+\fB\-mustexist\fR \fIboolean\fR
+指定用户是否可以指定不存在的目录。如果这个参数是真,则用户只能选择现存的目录。缺省为假。
+.LP
+
+.SH "参见 SEE ALSO"
+tk_getOpenFile, tk_getSaveFile
+
+.SH "关键字 KEYWORDS"
+directory selection dialog
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/17
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/ckalloc.n b/src/mann/ckalloc.n
new file mode 100644
index 0000000..44aa56c
--- /dev/null
+++ b/src/mann/ckalloc.n
@@ -0,0 +1 @@
+.so mann/memory.n
diff --git a/src/mann/ckfree.n b/src/mann/ckfree.n
new file mode 100644
index 0000000..44aa56c
--- /dev/null
+++ b/src/mann/ckfree.n
@@ -0,0 +1 @@
+.so mann/memory.n
diff --git a/src/mann/clipboard.n b/src/mann/clipboard.n
new file mode 100644
index 0000000..25f3c76
--- /dev/null
+++ b/src/mann/clipboard.n
@@ -0,0 +1,285 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: clipboard.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: clipboard.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH clipboard n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+clipboard \- 操纵 Tk 剪贴板
+.SH "总览 SYNOPSIS"
+\fBclipboard \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令提供了到 Tk 剪贴板的 Tcl 接口,它使用选择机制来为以后的取回存储数据。要把数据复制到剪贴板中,必须调用 \fBclipboard clear\fR,随后是到 \fBclipboard append \fR的一个或多个调用的一个序列。要确保自动更新剪贴板,在返回到事件循环之前必须完成所有添加。
+.PP
+给 \fBclipboard\fR 的第一个参数决定剩余参数的格式和这个命令的行为。当前支持下列形式(form):
+.PP
+.TP
+\fBclipboard clear\fR ?\fB-displayof\fR \fIwindow\fR?
+要求在 \fIwindow \fR的显示器上剪贴板的所有权并删除所有以前的内容。\fIWindow\fR 缺省为“.”。返回一个空串。
+.TP
+\fBclipboard append\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-format\fR \fIformat\fR? ?\fB\-type\fR \fItype\fR? ?\fB\-\|\-\fR? \fIdata\fR
+向在 \fIwindow \fR的显示器上的剪贴板添加 \fIdata\fR  ,其形式由 \fItype\fR 给出,表示法(representation)由 \fIformat\fR 给出,并且要求在 \fIwindow \fR的显示器上剪贴板的所有权。
+.RS
+.PP
+\fIType\fR 参数指定返回的选择的形式(用 ICCCM 术语是想要的转换“目标”),并且应当是一个原子名字如     STRING 或 FILE_NAME;详情参见客户间通信协定手册。\fIType\fR 缺省为 STRING。
+.PP
+\fIformat\fR 参数指定用来把选择传输(transmit)到请求者的表示法(ICCCM 的表 2 的第二列),并且缺省为 STRING。如果 \fIformat\fR 是 STRING,则把选择传输为 8-bit ASCII 字符。如果 \fIformat\fR 是 ATOM,则把 \fIdata\fR 分割为用白空格分隔的字段;把每个字段转换成它的原子值,传输 32-bit 原子值而不是原子的名字。对于任何其他的 \fIformat\fR,把  \fIdata\fR  分割为用白空格分隔的字段;把每个字段转换成一个 32-bit  整数;向选择的请求者传输一个整数的数组。注意在转换之前串联(concatenate)传递给  \fBclipboard append\fR  的字符串,所以调用者必须注意确保跨越字符串边界的间隔。添加到剪贴板的有相同 \fItype\fR  的所有项目必须有相同的 \fIformat\fR。
+.PP
+\fIformat\fR 参数只在与不使用 Tk 的请求者相兼容时需要。如果使用 Tk 工具箱来取回 CLIPBOARD 选择,则在请求端把这个值转换回一个字符串,所以 \fIformat\fR 是无关的(irrelevant)。
+.PP
+\fB\-\|\-\fR 参数来标记选项的结束: 下一个参数总是被用做 \fIdata\fR。在数据开始于 \fB-\fR 的时候这个特征会带来方便。
+.RE
+
+.SH "关键字 KEYWORDS"
+clear, format, clipboard, append, selection, type
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/05/17
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/clock.n b/src/mann/clock.n
new file mode 100644
index 0000000..1955fe1
--- /dev/null
+++ b/src/mann/clock.n
@@ -0,0 +1,392 @@
+'\"
+'\" Copyright (c) 1992-1995 Karl Lehenbauer and Mark Diekhans.
+'\" Copyright (c) 1995-1997 Sun Microsystems, Inc.
+'\" Copyright (c) 1998-1999 Scriptics Corporation
+'\"
+'\" This documentation is derived from the time and date facilities of
+'\" TclX, by Mark Diekhans and Karl Lehenbauer.
+'\" 
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: clock.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: clock.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH clock n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+clock \- 获取和操纵时间    
+.SH "总览 SYNOPSIS"
+\fBclock \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令进行多种操作中的某一个,可以获取或操纵表示一些时间概念(notion)的字符串或值。\fIoption\fR 参数确定这个命令完成什么操作。合法的 \fIoptions\fR  (可以使用缩写) 有:           
+.TP
+.VS 8.3
+\fBclock clicks\fR ?\fB\-milliseconds\fR?
+返回一个高解析度(high-resolution)的时间值,是一个依赖于系统的整数。值的单位是依赖于系统的但应该是系统上可获得的最高解析度的时钟,比如一个 CPU 周期记数(counter)。如果指定了 \fB-milliseconds\fR ,则保证这个值是微秒的粒度。这个值只应用于流逝了的时间的相对测量。     
+.VE 8.3
+.TP
+\fBclock format \fIclockValue\fR ?\fB\-format \fIstring\fR? ?\fB\-gmt \fIboolean\fR?
+把一个整数时间值转换成人可阅读的形式,典型的,这个时间值是从 \fBclock seconds\fR、\fBclock scan\fR、或 \fBfile\fR 命令的 \fBatime\fR、 \fBmtime\fR、或 \fBctime\fR  选项返回的。如果 \fB-format\fR  参数存在,下一个参数是描述如何格式化日期和时间的一个字符串。字段描述符由一个 \fB%\fR 和随后的字段描述符字符组成。所有的其他字符都复制到结果中。有效的字段描述符有: 
+.RS
+.IP \fB%%\fR
+插入一个 %。
+.IP \fB%a\fR
+星期名的缩写 (Mon, Tue, etc.)。         
+.IP \fB%A\fR
+完整的星期名 (Monday, Tuesday, etc.)。          
+.IP \fB%b\fR
+月名的缩写 (Jan, Feb, etc.)。         
+.IP \fB%B\fR
+完整的月名。     
+.IP \fB%c\fR
+特定于本地的日期和时间。     
+.IP \fB%d\fR
+月中的第几天 (01 - 31)。
+.IP \fB%H\fR
+24小时格式的小时(00 - 23)。  
+.IP \fB%I\fR
+12小时格式的小时 (00 - 12)。 
+.IP \fB%j\fR
+年中的第几天 (001 - 366)。      
+.IP \fB%m\fR
+第几月 (01 - 12)。      
+.IP \fB%M\fR
+分 (00 - 59)。         
+.IP \fB%p\fR
+AM/PM 指示符。        
+.IP \fB%S\fR
+秒 (00 - 59)。   
+.IP \fB%U\fR
+年中的第几星期 (00 - 52),星期天是一个星期中的第一天。         
+.IP \fB%w\fR
+星期几 (Sunday = 0)。      
+.IP \fB%W\fR
+年中的第几星期 (00 - 52),星期一是一个星期中的第一天。       
+.IP \fB%x\fR
+特定于本地的日期格式。   
+.IP \fB%X\fR
+特定于本地的时间格式。     
+.IP \fB%y\fR
+世纪中的第几年 (00 - 99)。   
+.IP \fB%Y\fR
+带世纪的年 (例如 1990)。   
+.IP \fB%Z\fR
+时区名。    
+.RE
+.sp
+.RS
+在一些系统上支持下列补充的字段描述符(例如在 Unix 上而不在 Windows):     
+.IP \fB%D\fR
+形如 %m/%d/%y 的日期。  
+.IP \fB%e\fR
+月中的第几天 (1 - 31),没有前导的零。     
+.IP \fB%h\fR
+月名的缩写。
+.IP \fB%n\fR
+插入一个换行。  
+.IP \fB%r\fR
+形如 %I:%M:%S %p 的时间。       
+.IP \fB%R\fR
+形如 %H:%M 的时间。
+.IP \fB%t\fR
+插入一个 tab。
+.IP \fB%T\fR
+形如 %H:%M:%S 的时间。 
+.RE
+.sp
+.RS
+如果未指定 \fB-format\fR  参数,使用格式串 “\fB%a %b %d %H:%M:%S %Z %Y\fR”。如果 \fB-gmt\fR 参数存在,下一个参数必须是一个 boolean (值)。如果是真则指定时间作为 Greenwich 标准时来格式化,如果是假则使用操作环境定义的本地时区。        
+.RE
+.TP
+\fBclock scan \fIdateString\fR ?\fB\-base \fIclockVal\fR? ?\fB\-gmt \fIboolean\fR?
+把 \fIdateString\fR  转换成一个整数时钟值(参见 \fBclock seconds\fR)。这个命令可分析并转换几乎所有的标准的日期和/或时间串,其中可以包含标准的时区助记码(mnemonic)。如果只指定了一个时间,假定为当前的日期。如果串中不包括一个时区助记码,除非 \fB-gmt \fR参数是真之外假定为本地时区,在 \fB-gmt \fR 参数是真的情况下,假定指定的时间是相对于 Greenwich 标准时来计算时钟值。如果指定了 \fB-gmt\fR,它只影响计算出的时间值,不影响对 \fB-base \fR的解释。
+.sp
+如果指定了 \fB-base\fR   标记,下一个参数将包括一个整数的时钟值。只使用这个值中的日期而不管时间。这对确定特定的某天的时间或做其他的相对于日期的转换有用。
+.sp
+\fIdateString\fR 包含零个或多个下列形式的指定(specification):     
+.RS
+.TP
+\fItime\fR
+一天中的时间,样式是: \fIhh\fR?\fI:mm\fR?\fI:ss\fR?? 
+?\fImeridian\fR? ?\fIzone\fR? or \fIhhmm \fR?\fImeridian\fR? 
+?\fIzone\fR?. 如果为指定上下午(meridian), \fIhh\fR 被解释为一个24小时钟点。    
+.TP
+\fIdate\fR
+一个特定的月和日,年是可选的。可接受的格式是 \fImm/dd\fR?\fI/yy\fR?, \fImonthname dd\fR
+?, \fIyy\fR?, \fIdd monthname \fR?\fIyy\fR?, \fIday, dd monthname
+yy\fR, \fI?CC?yymmdd\fR, \fI?CC?yy-mm-dd\fR, \fIdd-monthname-?CC?yy\fR. 缺省的年是当前年。如果年小于  
+.VS
+100,我们把 00-68 年作为 2000-2068 年而 69-99 年作为 1969-1999  年。注意所有平台都可以表示 38-70 年,  所以如果使用这些年就可能出错。           
+.VE
+.TP
+\fIISO 8601 point-in-time\fR
+一个 ISO 8601 point-in-time 指定,如 \fICCyymmddThhmmss\fR, 这里 T 是字面的 T,\fICCyymmdd hhmmss\fR, 或者 \fICCyymmddThh:mm:ss\fR.
+.TP
+\fIrelative time\fR
+相对当前时间的一个指定。格式是 \fInumber unit\fR,可接受的单位是 \fByear\fR、 \fBfortnight\fR、 \fBmonth\fR、 \fBweek\fR、 \fBday\fR、\fBhour\fR、 \fBminute\fR  (或 \fBmin\fR)、和 \fBsecond\fR  (或 \fBsec\fR)。单位可以被指定为单数或复数,比如 \fB3 weeks\fR。还可以指定这些修饰符: \fBtomorrow\fR、 \fByesterday\fR、\fBtoday\fR、 \fBnow\fR、\fBlast\fR、\fBthis\fR、 \fBnext\fR、\fBago\fR。        
+.RE
+.sp
+.RS
+实际的日期计算依照下列的步骤。首先,处理和转换所有绝对日期和/或时间。使用这个时间作为基准(base),添加上星期几(day-of-week)指定。其次,使用相对指定。如果指定了一个日期或某天,并且没有给出绝对或相对的时间,则使用午夜。最后,进行一次校正,这样就在估计了夏令时不同之后产生正确的一天中的小时,并且在从一个大月结束到一个小月时给出正确的日期。       
+.sp
+只在用如下单位指定相对时间的时候进行夏令时校正,日或更多,例如  days、 weeks、 fortnights、months 或 years。这意味着跨越夏令时边界的时候,对 \fBclock scan “1 day”\fR 和 \fBclock scan “24 hours” \fR将给出不同的结果:    
+.CS
+.ta 6c
+\fB% clock scan "1 day" -base [clock scan 1999-10-31]
+941443200
+% clock scan "24 hours" -base [clock scan 1999-10-31]
+941439600\fR
+.CE
+.RE
+.TP
+\fBclock seconds\fR
+把当前的日期和时间作为依赖于系统的整数值返回。值的单位是秒,允许它被用于相对时间的计算。值通常被定义成从“epoch”开始(至今)总共流逝的时间。你不应该假定 epoch 的值。  
+
+.SH "关键字 KEYWORDS"
+clock, date, time
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/close.n b/src/mann/close.n
new file mode 100644
index 0000000..fa44d4d
--- /dev/null
+++ b/src/mann/close.n
@@ -0,0 +1,283 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: close.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: close.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH close n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+close \- 关闭一个打开了的通道 
+.SH "总览 SYNOPSIS"
+\fBclose \fIchannelId\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+关闭由 \fIchannelId\fR 给出的通道。\fIChannelId\fR   必须是一个通道标识符,是以前的 \fBopen\fR 或 \fBsocket\fR   命令的返回值。向通道的输出设备刷新所有的缓冲了的输出,丢弃所有缓冲了的输入,关闭底层的文件或设备,并且  使用 \fIchannelId\fR  变成无效。
+.VS "" br
+.PP
+如果通道正在阻塞(block),在刷新所有输出之前命令不返回。如果通道未阻塞并且有未刷新的(unflushed)输出,通道保持打开而命令立即返回;将在后台刷新输出并且在刷新完成时关闭通道。
+.VE
+.PP
+如果 \fIchannelId\fR   是用于一个命令管道的一个阻塞通道,则 \fBclose\fR   等待子进程完成。
+.VS "" br
+.PP
+如果通道在解释器间共享,则 \fBclose\fR   使 \fIchannelId\fR   在调用它的解释器中无效而在所有的共享解释器关闭这个通道之前不起其他作用。当在其中注册了这个通道的最后一个解释器调用  \fBclose \fR时,上面描述的清除动作发生。关于通道共享的描述请参见  \fBinterp\fR  命令。
+.PP
+在解释器被销毁和进程退出时自动的关闭通道。通道被切换到阻塞模式,用以确保(ensure)在进程退出之前正确的刷新所有的输出。
+.VE
+.PP
+命令返回一个空串,如果在刷新输出时发生了错误它可以产生一个错误。 
+
+.SH "参见 SEE ALSO"
+file(n), open(n), socket(n), eof(n)
+
+.SH "关键字 KEYWORDS"
+blocking, channel, close, nonblocking
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/03 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/concat.n b/src/mann/concat.n
new file mode 100644
index 0000000..8082a45
--- /dev/null
+++ b/src/mann/concat.n
@@ -0,0 +1,280 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: concat.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: concat.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH concat n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+concat \- 把列表连接(join)在一起
+.SH "总览 SYNOPSIS"
+\fBconcat\fI \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令把每个参数都作为一个列表并把他们串联(concatenate)成一个单一的列表。它还去除在 \fIarg\fR  中的前导和尾随的空格并在 \fIarg \fR之间添加一个单一的分隔符空格。它允许任何数目的参数。例如,命令    
+.CS
+\fBconcat a b {c d e} {f {g h}}\fR
+.CE
+将返回    
+.CS
+\fBa b c d e f {g h}\fR
+.CE
+作为结果。
+.PP
+如果没有提供 \fIarg\fRs,结果是一个空串。    
+
+.SH "参见 SEE ALSO"
+append(n), eval(n)
+
+.SH "关键字 KEYWORDS"
+concatenate, join, lists
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/04  
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/continue.n b/src/mann/continue.n
new file mode 100644
index 0000000..45c6f61
--- /dev/null
+++ b/src/mann/continue.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: continue.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: continue.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH continue n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+continue \-  跳(skip)到一个循环的下一次重复(iteration)当中
+.SH "总览 SYNOPSIS"
+\fBcontinue\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令典型的在一个象 \fB for \fR 或  \fB foreach \fR 或 \fB while \fR这样的循环命令的(循环)体中调用。它返回一个 TCL_CONTINUE 代码,这将导致一个 continue  例外发生。这个例外导致当前的脚本被退出到(be aborted out to )在最内部(innermost)包含的循环命令,接着这个命令继续(执行)这个循环的下一次重复。在一些其他情况下也处理 continue  例外,如 \fB catch \fR 命令、Tk  事件绑定、和过程体的最外部(outermost)的脚本。    
+
+.SH "参见 SEE ALSO"
+break(n), for(n), foreach(n), while(n)
+
+.SH "关键字 KEYWORDS"
+continue, iteration, loop
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/04
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/cursors.n b/src/mann/cursors.n
new file mode 100644
index 0000000..23c0056
--- /dev/null
+++ b/src/mann/cursors.n
@@ -0,0 +1,393 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: cursors.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: cursors.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH cursors n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+cursors \- 在 Tk 可获得的鼠标光标
+
+.SH "描述 DESCRIPTION"
+.PP
+\fB-cursor\fR 组件选项允许 Tk 编程者改变特定组件的鼠标光标。下面是在所有平台的 Tk 识别的光标名字:
+.CS
+X_cursor
+arrow
+based_arrow_down
+based_arrow_up
+boat
+bogosity
+bottom_left_corner
+bottom_right_corner
+bottom_side
+bottom_tee
+box_spiral
+center_ptr
+circle
+clock
+coffee_mug
+cross
+cross_reverse
+crosshair
+diamond_cross
+dot
+dotbox
+double_arrow
+draft_large
+draft_small
+draped_box
+exchange
+fleur
+gobbler
+gumby
+hand1
+hand2
+heart
+icon
+iron_cross
+left_ptr
+left_side
+left_tee
+leftbutton
+ll_angle
+lr_angle
+man
+middlebutton
+mouse
+pencil
+pirate
+plus
+question_arrow
+right_ptr
+right_side
+right_tee
+rightbutton
+rtl_logo
+sailboat
+sb_down_arrow
+sb_h_double_arrow
+sb_left_arrow
+sb_right_arrow
+sb_up_arrow
+sb_v_double_arrow
+shuttle
+sizing
+spider
+spraycan
+star
+target
+tcross
+top_left_arrow
+top_left_corner
+top_right_corner
+top_side
+top_tee
+trek
+ul_angle
+umbrella
+ur_angle
+watch
+xterm
+.CE
+
+.SH "移植要点 PORTABILITY ISSUES"
+
+.TP
+\fBWindows\fR
+在 Windows 系统上,把下列光标映射成本地光标:
+.RS
+.CS
+arrow
+center_ptr
+crosshair
+fleur
+ibeam
+icon
+sb_h_double_arrow
+sb_v_double_arrow
+watch
+xterm
+.CE
+还可获得下列补充的光标:
+.CS
+no
+starting
+size
+size_ne_sw
+size_ns
+size_nw_se
+size_we
+uparrow
+wait
+.CE
+可以指定 \fBno\fR 光标来使光标消失。
+.RE
+
+.TP
+\fBMacintosh\fR
+在 Macintosh 系统上,把下列光标映射成本地光标:
+.RS
+.CS
+arrow
+cross
+crosshair
+ibeam
+plus
+watch
+xterm
+.CE
+还可获得下列补充的光标:
+.CS
+text
+cross-hair
+.CE
+.RE
+
+.SH "关键字 KEYWORDS"
+cursor, option
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/dde.n b/src/mann/dde.n
new file mode 100644
index 0000000..2246540
--- /dev/null
+++ b/src/mann/dde.n
@@ -0,0 +1,311 @@
+'\"
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: dde.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: dde.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH dde n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+dde \- 执行一个动态数据交换命令
+.SH "总览 SYNOPSIS"
+.sp
+\fBpackage require dde 1.1\fR
+.sp
+\fBdde \fIservername \fR?\fItopic\fR?
+.sp
+\fBdde ?\-async?\fR \fIcommand service topic \fR?\fIdata\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+当运行在 Microsoft Windows 下的时候,这个命令允许一个应用来发送动态数据交换(Dynamic Data Exchange:DDE)命令。动态数据交换是一种机制,在这里应用可以交换原始数据。每个 DDE 事务都需要一个\fI服务名(service name)\fR和一个\fI主题(topic)\fR。\fI服务名\fR和主题均由应用来定义;Tcl 使用的服务名是 \fBTclEval\fR,而主题名是用\fBdde servername \fR给出的解释器的名字。其他的应用有其自己的\fI服务名\fR和\fI主题\fR。例如,Microsoft Excel 的服务名是 \fBExcel\fR。
+.PP
+\fBdde\fR  命令的唯一的选项是:          
+.TP
+\fB\-async\fR
+要求异步激发(invocation)。这只对\fBexecute\fR 子命令有效。正常的,\fBdde execute\fR 子命令等待直到命令完成,返回适当的出错信息。当使用了 \fB-async\fR  选项,命令立刻返回,不能获得出错信息。  
+
+.SH "DDE 命令 COMMANDS"
+.PP
+下面的命令是完整的动态数据交换命令集的子集。 
+.TP
+\fBdde servername \fR?\fItopic\fR?
+\fBdde servername\fR  用服务名 \fBTclEval\fR   和由 \fItopic \fR指定的主题名来把解释器注册为一个 DDE 服务器。如果没有给出 \fItopic\fR,\fBdde servername\fR返回当前的主题的名字,如果未被注册为一个服务则返回空串。      
+.TP
+\fBdde execute \fIservice topic data\fR
+\fBdde execute\fR  接受 \fIdata\fR  并把它发送到由 \fIservice\fR  指示出的服务器并由 \fItopic \fR指示出主题。典型的,\fIservice\fR 是一个应用的名字,而 \fItopic\fR 是要在其上工作的一个文件。给予远程应用的是 \fIdata\fR 域(field)。典型的,应用把 \fIdata\fR  域作为脚本对待,接着在应用中运行脚本。如果脚本没有运行,命令返回一个错误。如果使用了 \fB-async\fR标志,命令立即返回而没有错误。               
+.TP
+\fBdde poke \fIservice topic item data\fR
+\fBdde poke\fR  传递 \fIdata\fR  到由 \fIservice\fR指示的服务器并用 \fItopic\fR 和 \fIitem\fR  加以指定。典型的, \fIservice\fR  是一个应用的名字。\fItopic\fR 由应用指定,可以是给服务器的一个命令或一个要在其上工作的一个文件的名字。\fIitem\fR 也由应用指定,不常用,但必须总是非空。给予远程应用的是 \fIdata\fR  域( field)。                 
+.TP
+\fBdde request \fIservice topic item\fR
+\fBdde request\fR  典型的用于得到某种东西的值;如 Microsoft Excel 中的一个单元格(cell)的值或在 Microsoft Word  中一个选择的文本。 \fIservice\fR 典型的是一个应用的名字。 \fItopic\fR典型的是文件的名字,\fIitem\fR由用户来指定。命令返回在应用中定义的 \fIitem\fR的值。
+.TP
+\fBdde services \fIservice topic\fR
+\fBdde services\fR  返回当前在机器上存在的服务-主题对的一个列表。如果 \fIservice\fR  和 \fItopic\fR  都是空串({}),  则返回在系统上当前可获得的所有的服务-主题对。如果 \fIservice\fR 是空而 \fItopic\fR  不是,则返回指定主题的所有服务。如果 \fIservice\fR 不空而 \fItopic\fR  空,则返回指定服务的所有主题。如果均不空,若当前存在这个服务-主题对则返回它,否则返回空。                 
+.TP
+\fBdde eval \fItopic cmd \fR?\fIarg arg ...\fR?
+\fBdde eval\fR   求值一个命令和它的参数,解释器用 \fItopic\fR 指定。DDE 服务必须是\fBTclEval\fR  服务。这个命令可以用于在 Windows 上替换 send。                 
+.SH "DDE 和 TCL"
+一个 Tcl 解释器总是有一个服务名 \fBTclEval\fR。每个不同的运行 Tcl 应用的解释器必须给予一个用 \fBdde servername\fR指定的唯一的名字。每个解释器只有使用 \fBdde servername\fR命令来设置名字,这个解释器才可作为一个 DDE 主题来获得。所以一个 \fBdde services TclEval {}\fR  命令将返回一个服务-主题对的列表,这里每个当前运行的解释器都将是一个主题。
+.PP
+当       
+Tcl 处理一个 \fBdde execute\fR 命令时,用于执行的数据作为一个脚本在 \fBdde execute\fR 命令的主题指明的解释器中运行。
+.PP
+当 Tcl 处理一个 \fBdde request\fR命令时,它返回在 dde 命令中给出的变量的值,变量在由 dde主题指名的解释器的上下文中的。Tcl 为内部使用而保留变量 \fB$TCLEVAL  $EXECUTE $RESULT\fR,对这些变量的\fBdde request\fR  命令将返回不可预测的(unpredictable)结果。
+.PP
+打算运行一个Tcl 脚本的一个外部(external)应用应当使这个脚本在一个变量中存储它的结果,运行  \fBdde execute\fR  命令,接着运行 \fBdde request\fR 得到这个变量的值。
+.PP
+当使用 DDE 时,注意要确保使用 \fBupdate\fR或者 \fBvwait \fR来刷新事件队列。在使用\fBwish\fR时这是缺省的,但不包括调用了一个阻塞命令的情况(例如 \fBexec\fR  而不填加 \fB&\fR  来在后台运行进程)。如果由于某种原因而导致事件队列没被刷新,DDE 命令将挂起(hang)直到事件队列被刷新。这可能产生死锁的情况。
+
+.SH "参见 SEE ALSO"
+tk(n), winfo(n), send(n)
+
+.SH "关键字 KEYWORDS"
+application, dde, name, remote execution
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/18 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/destroy.n b/src/mann/destroy.n
new file mode 100644
index 0000000..775b1a8
--- /dev/null
+++ b/src/mann/destroy.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: destroy.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: destroy.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH destroy n "" Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+destroy \- 销毁一个或多个窗口
+.SH "总览 SYNOPSIS"
+\fBdestroy \fR?\fIwindow window ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.VS
+.PP
+这个命令清除用 \fIwindow \fR参数给出的窗口,加上所有它们的后代(窗口)。如果清除了\fI窗口\fR  “.”则整个应用也将被销毁。依次销毁这些 \fIwindow\fR,如果在销毁某个窗口时发生了错误,则这个命令退出而不销毁剩下的窗口。如果 \fIwindow\fR  不存在不返回错误。  
+.VE
+
+.SH "关键字 KEYWORDS"
+application, destroy, window
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/28 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/encoding.n b/src/mann/encoding.n
new file mode 100644
index 0000000..e034d36
--- /dev/null
+++ b/src/mann/encoding.n
@@ -0,0 +1,291 @@
+'\"
+'\" Copyright (c) 1998 by Scriptics Corporation.
+'\" 
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: encoding.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: encoding.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH encoding n "8.1" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+encoding \- 操纵编码
+.SH "总览 SYNOPSIS"
+\fBencoding \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "介绍 INTRODUCTION"
+.PP
+在 Tcl 中字符串使用16位的 Unicode 字符来编码。不同的操作系统接口或应用可以生成用其他编码如 Shift-JIS 的字符串。\fBencoding\fR  命令是 Unicode  和其他格式之间的桥梁。
+
+.SH "描述 DESCRIPTION"
+.PP
+依照\fIoption\fR,完成与编码相关一系列操作之一。合法的 \fIoption\fRs有:     
+.TP
+\fBencoding convertfrom ?\fIencoding\fR? \fIdata\fR
+把 \fIdata\fR  从特定的 \fIencoding\fR(编码)转换成 Unicode。在 \fIdata\fR 中的字符被作为二进制数据对待,其中的每个字符的低8位被作为一个单一的字节接受。结果的字节序列被作为一个用特定的 \fIencoding \fR编码的字符串。如果未指定 \fIencoding\fR,使用当前的系统编码。    
+.TP
+\fBencoding convertto ?\fIencoding\fR? \fIstring\fR
+把 \fIstring\fR  从 Unicode 转换成特定的 \fIencoding\fR编码。结果是表示转换后的字符串的一个字节序列。每个字节都存储在一个 Unicode 字符的低8位中。如果未指定 \fIencoding\fR,使用当前的系统编码。
+.TP
+\fBencoding names\fR
+返回包含当前可获得的所有编码的名字的一个列表。      
+.TP
+\fBencoding system\fR ?\fIencoding\fR?
+设置系统编码为 \fIencoding\fR。如果省略了 \fIencoding\fR,则命令返回当前系统编码。在 Tcl 向系统调用传递字符串时使用系统编码。 
+
+.SH 范例 EXAMPLE
+.PP
+一个常见的实践是用产生 euc-jp 编码输出的文本编辑器来写脚本文件,它把 ASCII  字符表示成一个单一的字节而把日文字符表示成两字节。这样通过简单的键入对应于非 ASCII 字符的文字串便可在脚本中某个位置上嵌入它。但是,  由于 \fBsource\fR  命令总是使用 ISO8859-1 编码来读文件,Tcl  将把文件中的每个字节作为一个单独的字符对待并映射成在 Unicode 中的 00 (代码)页(中的字符)。结果的 Tcl 字符串不包含想要的日文字符。转而,它将包含相应与原始的字符串的每个字节的一个Latin-1 字符的序列。\fBencoding\fR  命令将可被用于把这个字符串转换成想要的日文 Unicode 字符。例如,     
+.CS
+	set s [encoding convertfrom euc-jp "\\xA4\\xCF"]
+.CE
+将返回 Unicode 字符串 "\\u306F",它是 Hiragana 字母 HA。     
+
+.SH "参见 SEE ALSO"
+Tcl_GetEncoding(3)
+
+.SH "关键字 KEYWORDS"
+encoding
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/08 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/eof.n b/src/mann/eof.n
new file mode 100644
index 0000000..31f1a3e
--- /dev/null
+++ b/src/mann/eof.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: eof.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: eof.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH eof n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+eof \- 在通道上检查文件结束状况
+.SH "总览 SYNOPSIS"
+\fBeof \fIchannelId\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+如果在 \fIchannelId \fR上的最近的输入操作(例如 \fBgets\fR)期间出现(occur)了文件结束的情况(condition)则返回 1,否则返回0。   
+
+.SH "参见 SEE ALSO"
+file(n), open(n), close(n), fblocked(n)
+
+.SH "关键字 KEYWORDS"
+channel, end of file
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/error.n b/src/mann/error.n
new file mode 100644
index 0000000..68331f4
--- /dev/null
+++ b/src/mann/error.n
@@ -0,0 +1,280 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: error.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: error.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH error n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+error \- 产生一个错误
+.SH "总览 SYNOPSIS"
+\fBerror \fImessage\fR ?\fIinfo\fR? ?\fIcode\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+返回一个 TCL_ERROR 代码,这个代码将终止(unwind ? 松开)命令解释。向应用返回\fIMessage\fR        
+ ,用来指示出了什么错误的一个字符串
+.PP
+如果提供了非空的 \fIinfo\fR 参数,它被用于初始化全局变量 \fBerrorInfo\fR。\fBerrorInfo\fR  用于积累关于在发生错误时正在处理什么的一个栈追踪;在嵌套命令终止的同时,Tcl 解释器向 \fBerrorInfo\fR 添加信息。如果存在 \fIinfo\fR 参数,则用它来初始化 \fBerrorInfo\fR   并且 Tcl 解释器不向它添加终止信息的第一个增长。换句话说,包含 \fBerror\fR 命令的命令将不出现在 \fBerrorInfo\fR 中,在它的位置上的将是 \fIinfo\fR。这个特征与 \fBcatch\fR命令联合使用很有用: 如果一个捕捉到的错误不能被正确处理,使用 \fIinfo\fR返回一个栈追踪来反映错误发生的原始点:        
+.CS
+\fBcatch {...} errMsg
+set savedInfo $errorInfo
+\&...
+error $errMsg $savedInfo\fR
+.CE
+.PP
+如果存在 \fIcode\fR  参数,则在 \fBerrorCode\fR  全局变量中存储它的值。在可获得错误信息的情况下,要用这个变量来持有一个机器可读的错误描述;参见 \fBtclvars\fR 手册页来得到关于这个变量的正确格式的信息。如果不存在 \fIcode\fR  参数,则 \fBerrorCode\fR  被 Tcl 解释器作为处理命令生成的错误的一部分而自动的重置为“NONE”。   
+
+.SH "参见 SEE ALSO"
+catch(n), tclvars(n)
+
+.SH "关键字 KEYWORDS"
+error, errorCode, errorInfo
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/eval.n b/src/mann/eval.n
new file mode 100644
index 0000000..b918376
--- /dev/null
+++ b/src/mann/eval.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: eval.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: eval.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH eval n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+eval \- 求一个 Tcl 脚本的值
+.SH "总览 SYNOPSIS"
+\fBeval \fIarg \fR?\fIarg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBEval\fR 接受一个或多个参数,它们一起组成一个包含一个或多个命令的 Tcl 脚本。\fBEval\fR  用与 \fBconcat\fR命令相同的方式连接(concatenate)它所有的参数,把连接后的字符串递归的传递给Tcl 解释器,并返回这次求值的结果(或它产生的任何错误)。  
+
+.SH "关键字 KEYWORDS"
+concatenate, evaluate, script
+
+.SH "参见 SEE ALSO"
+catch(n), concat(n), error(n), subs(n), tclvars(n)
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/10 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/exec.n b/src/mann/exec.n
new file mode 100644
index 0000000..204bfed
--- /dev/null
+++ b/src/mann/exec.n
@@ -0,0 +1,407 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: exec.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: exec.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH exec n 7.6 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+exec \- 调用子进程
+.SH "总览 SYNOPSIS"
+\fBexec \fR?\fIswitches\fR? \fIarg \fR?\fIarg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令把它的参数作为对要执行的一个或多个子进程的指定来对待。参数接受标准的 shell 管道的格式(form),即每个 \fIarg\fR 都变成某个命令的一个字,并且每个不同的命令都变成一个子进程。
+.PP
+如果给 \fBexec\fR的初始的参数以 \fB-\fR 开始,则它们被作为命令行开关而不是管道指定的一部分来对待。当前支持下列开关:   
+.TP 13
+\fB\-keepnewline\fR
+在管道的输出中保持尾随的换行符。通常要删除尾随的换行符。          
+.TP 13
+\fB\-\|\-\fR
+标志开关(部分)的结束。此后的参数即使以\fB-\fR开头仍被作为第一个 \fIarg\fR 来对待。        
+.PP
+如果一个 \fIarg\fR  (或成对的 \fIarg\fR)有象下面描述的格式个某一种,则\fBexec\fR  用它来控制子进程间的输入和输出流(flow)。将不把这样的参数传递给子进程。在象“< \fIfileName\fR”这样的格式中 \fIfileName\fR 可以要么是一个与“<”分离的参数,要么是在同一个参数中而没有间隔的空格(例如          
+“<\fIfileName\fR”)。           
+.TP 15
+|
+分隔在管道中不同的命令。前面的命令的标准输出将被输送给后面命令的标准输入中。 
+.TP 15
+|&
+分隔在管道中不同的命令。前面命令的标准输出和标准错误输出都被输送到后面的标准输入中。这种重定向格式取代象 2>  和 >& 这样的格式。     
+.TP 15
+<\0\fIfileName\fR
+打开由 \fIfileName\fR 指名的文件并作为在管道中的第一个命令的标准输入来使用。       
+.TP 15
+<@\0\fIfileId\fR
+\fIFileId\fR  必须是一个打开了的文件的标识符,比如是从以前的 \fBopen \fR调用的返回值。作为在管道中的第一个命令的标准输入来使用。\fIFileId\fR           
+ 必须用读模式来打开。          
+.TP 15
+<<\0\fIvalue\fR
+\fIValue\fR  被传递给第一个命令来作为它的标准输入。       
+.TP 15
+>\0\fIfileName\fR
+最后的命令的标准输出被重定向到叫 \fIfileName\fR\fI \fR的文件中,覆盖它以前的内容。    
+.TP 15
+2>\0\fIfileName\fR
+把管道中所有命令的标准错误输出重定向到叫 \fIfileName\fR 的文件中,覆盖它以前的内容。          
+.TP 15
+>&\0\fIfileName\fR
+最后的命令的标准输出和所有命令的标准错误输出都被重定向到叫 \fIfileName\fR的文件中,覆盖它以前的内容。         
+.TP 15
+>>\0\fIfileName\fR
+最后的命令的标准输出被重定向到叫 \fIfileName\fR 的文件中,对它进行添加而不是覆盖它。      
+.TP 15
+2>>\0\fIfileName\fR
+在管道中的所有的命令的标准错误输出都被重定向到叫 \fIfileName\fR的文件中,对它进行添加而不是覆盖它。       
+.TP 15
+>>&\0\fIfileName\fR
+最后的命令的标准输出和所有命令的标准错误输出被重定向到叫 \fIfileName\fR 的文件中,对它进行添加而不是覆盖它。         
+.TP 15
+>@\0\fIfileId\fR
+\fIFileId\fR  必须是一个打开了的文件的标识符,比如是从以前的 \fBopen\fR调用的返回值。最后的命令的标准输出被重定向到 \fIfileId\fR(指定)的文件中。文件必须用读模式来打开。          
+.TP 15
+2>@\0\fIfileId\fR
+\fIFileId\fR 必须是一个打开了的文件的标识符,比如是从以前的 \fBopen\fR调用的返回值。在管道中的所有命令的标准错误输出都被重定向到 \fIfileId\fR(指定)的文件中。文件必须用写模式来打开。          
+.TP 15
+>&@\0\fIfileId\fR
+\fIFileId\fR 必须是一个打开了的文件的标识符,比如是从以前的 \fBopen\fR调用的返回值。最后的命令的标准输出和所有命令的标准错误输出被重定向到 \fIfileId\fR(指定)的文件中。文件必须用写模式来打开。          
+.PP
+如果标准输出没有被重定向,则 \fBexec\fR   命令返回在管道中最后的命令的标准输出。如果在管道中的任何命令不正常退出或被杀死或被挂起,则 \fBexec\fR  将返回一个错误和并且错误信息将包含管道的输出和随后的描述不正常终止的错误信息;\fBerrorCode\fR   变量将包括关于最近所遭遇的不正常终止的额外的信息。如果任何命令写它的标准错误文件而这个标准错误未被重定向,则 \fBexec\fR 将返回一个错误;错误消息将包含管道的标准输出,跟着是关于不正常终止的信息(如果有的话),随后是标准错误输出。
+.PP
+如果结果或错误信息的最后的字符是一个换行符,则这个换行符通常被从结果或错误信息中删除。这是与其他 Tcl 返回值相一致的,它们通常不用换行(作为)结束。但是,如果指定了 \fB\-keepnewline\fR则保持尾随的换行符。
+.PP
+如果标准输入未使用 “<” 、“<<” 或 “<@” 来重定向,则把应用的当前的标准输入作为第一个命令的标准输入。
+.PP
+如果最后的 \fIarg\fR 是“&”,则管道将在后台执行。在这种情况下 \fBexec\fR命令将返回一个列表,列表的元素是在管道中所有子进程的进程标识符。如果在管道中最后的命令的标准输出未被重定向,则输出到应用的标准输出中,并且如果管道中所有的命令的错误输出未被重定向,则错误输出到应用的标准错误中。
+.PP
+每个命令中的第一个字被接受为命令的名字;在它上面进行“~”(tilde)替换,如果结果不包含斜杠,则在 PATH  环境变量中的目录里查找给定名字的可执行文件。如果名字包含斜杠,则它必须参照一个从当前目录可到达的可执行文件。在给命令的参数上不进行通配符 (glob) 扩展或其他的     
+shell 式的替换。           
+
+.VS
+.SH "移植要点 PORTABILITY ISSUES"
+.TP
+\fBWindows\fR (所有版本)
+.
+从/向一个套接口读或写,使用“\fB@ \fR\fIfileId\fR”记号(notation),不能工作。在从一个套接口读的时候,一个16位 DOS 应用程序将挂起(hang) 而一个32位应用程序将立即返回文件结束(end-of-file)。在任意类型的应用向一个套接口写的时候,如果控制台存在的话,信息转而发送到控制台,否则就丢弃信息。
+.sp
+Tk     
+控制台文本组件不提供真实的标准 IO 功能。在 Tk 下,从标准输入重定向的时候,所有的应用将看到一个立即的文件结束;重定向到标准输出或标准错误输出的信息将被丢弃。
+.sp
+要么是正斜杠要么是反斜杠被接受为给 Tcl 命令的参数的路径分隔符。在执行一个应用的时候,对应用的路径名指定也可以包含正或反斜杠作为路径分隔符。但是必须记住,多数 Windows 应用接受有正斜杠的参数作为选项分界符(delimiter)而反斜杠只在路径中。指定了有正斜杠的一个路径名的给应用的任何参数将不被自动的转换成使用反斜杠字符。如果一个参数包括作为路径分隔符的正斜杠,它可以被识别成路径名,也可以不被识别成路径名,这依赖于(具体)程序。
+.sp
+额外的,在调用一个16位 DOS 或 Windows 3.X 应用时,所有路径名必须使用短的、神秘的(cryptic)的路径格式(例如,使用“applba~1.def”来替代 “applbakery.default”)。
+.sp
+在一个路径中在一行的两个或更多的正或反斜杠参照一个网络路径。例如,根目录\fBc:/\fR  和一个子目录\fB/windows/system\fR的一个简单的连接将产生\fBc://windows/system\fR  (两个斜杠在一起),这参照的是在叫 \fBwindows\fR  的那台机器上的叫 \fBsystem\fR  的挂装点(而 \fBc:/\fR 被忽略),这并不等价于 \fBc:/windows/system\fR,它描述的是在当前计算机上的一个目录。应使用 \fBfile join\fR  命令来连接路径的成员。
+.TP
+\fBWindows NT\fR
+.
+在尝试执行一个应用时,\fBexec\fR 首先查找指定的那个名字。接着按 \fB.com\fR、 \fB.exe\fR, 和 \fB.bat\fR  的次序把它们添加到指定的名字的后面并查找这个加长了的名字。如果没有指定一个目录名作为应用(程序)名的一部分,在尝试定位应用(程序)时,依次在下列目录中自动查找:          
+.sp
+.RS
+.RS
+装载 Tcl 可执行文件的目录。  
+.br
+当前目录
+.br
+Windows NT 32位系统目录。          
+.br
+Windows NT 16位系统目录。
+.br
+Windows NT 主目录。     
+.br
+在 path 中列出的目录。          
+.RE
+.sp
+要执行 shell 内置命令象 \fBdir\fR 和 \fBcopy\fR, 调用者必须为想用的命令加上“\fBcmd.exe /c \fR”前导 (prepend)。 
+.sp
+.RE
+.TP
+\fBWindows 95\fR
+.
+在尝试执行一个应用时,\fBexec\fR首先查找指定的那个名字。接着按 \fB.com\fR、 \fB.exe\fR, 和 \fB.bat\fR 的次序把它们添加到指定的名字的后面并查找这个加长了的名字。如果没有指定一个目录名作为应用(程序)名的一部分,在尝试定位应用(程序)时,依次在下列目录中自动查找:         
+.sp
+.RS
+.RS
+装载 Tcl 可执行文件的目录。
+.br
+当前目录。 
+.br
+Windows 95 系统目录。  
+.br
+Windows 95 主目录。      
+.br
+在 path 中列出的目录。 
+.RE
+.sp
+要执行 shell 内置命令象 \fBdir\fR 和 \fBcopy\fR, 调用者必须为想用的命令加上“\fBcommand.exe /c \fR”前导(prepend)。
+.sp
+一旦一个 16位 DOS 应用程序从一个控制台读标准输入接着退出,所以后来运行的 16位 DOS 应用程序将看到标准输入已经被关闭了。32位应用程序没有这个问题并将正确运行,即使在一个 16位 DOS 应用程序认为标准输入已经被关闭之后。此时还没有针对这个缺陷的已知的工作项目(workaround)。
+.sp
+NUL: </B> 设备和一个 16位应用程序之间的重定向不总是工作。在从 \fBNUL: \fR重定向时 一些应用程序可能挂起,另一些将得到永无穷尽(infinite)的“0x01”字节流(stream),而有一些实际上将正确的得到立即的文件结束;这些行为象是依赖于编译到应用程序自身中的某些东西。在到 \fBNUL:\fR的重定向大于或等于4K 时, 一些应用将挂起(hang)。在32位应用程序中不发生上述问题。
+.sp
+所有 DOS 16位应用程序都是同步运行的。从一个管道到一个 16位 DOS 应用程序的所有标准输入被搜集到一个临时文件中;在这个16位 DOS 应用程序开始执行之前,管道的其他端点(end)必须被关闭。从一个16位 DOS应用程序到一个管道的所有标准输出或错误输出被搜集到一个临时文件中;在临时文件被重定向到管道的下一个阶段之前,这个应用程序必须终止。这源于一个针对 Windows 95在实现管道中的一个缺陷的工作项目,也是标准的 Windows 95 DOS shell  自身处理管道的方式。
+.sp
+特定的应用程序,象 \fBcommand.com\fR ,不应该交互的执行。不从标准输入读和向标准输出写,而是直接访问控制台窗口的应用程序可能会失败,并挂起Tcl,如果它们自己的私有控制台窗口不可使用甚至可能挂起系统。   
+.RE
+.TP
+\fBMacintosh\fR
+在 Macintosh 下 \fBexec\fR  命令未被实现而不存在。   
+.TP
+\fBUnix\fR\0\0\0\0\0\0\0
+ \fBexec\fR  命令是全功能的并象上面描述的那样工作。       
+
+.SH "参见 SEE ALSO"
+error(n), open(n)
+
+.SH "关键字 KEYWORDS"
+execute, pipeline, redirection, subprocess
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/11       
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/exit.n b/src/mann/exit.n
new file mode 100644
index 0000000..f4370a9
--- /dev/null
+++ b/src/mann/exit.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: exit.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: exit.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH exit n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+exit \- 结束应用(程序)
+.SH "总览 SYNOPSIS"
+\fBexit \fR?\fIreturnCode\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+终止进程,向系统返回 \fIreturnCode\fR作为退出状态。如果没指定 \fIreturnCode\fR  则它缺省为 0。
+
+
+.SH "参见 SEE ALSO"
+exec(n), tclvars(n)
+
+.SH "关键字 KEYWORDS"
+exit, process
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/expr.n b/src/mann/expr.n
new file mode 100644
index 0000000..06994bc
--- /dev/null
+++ b/src/mann/expr.n
@@ -0,0 +1,481 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-2000 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: expr.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: expr.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH expr n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+expr \- 求一个表达式的值     
+.SH "总览 SYNOPSIS"
+\fBexpr \fIarg \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+连接(concatenate)所有 \fIarg\fR (在它们中间添加分隔符空格),把结果作为一个Tcl 表示式来求值(evaluate)并返回结果。在 Tcl 表达式中允许的操作符式在 C  表达式中允许的操作符的一个子集,并且它们与相应的 C 操作符有相同意义和优先级。表达式几乎总是产生一个数值结果(整数或浮点数的值)。例如,表达式     
+.CS
+\fBexpr 8.2 + 6\fR
+.CE
+求值出 14.2.
+Tcl 表达式与 C 表达式在操作数指定的方式上有区别。还有,Tcl 表达式支持非数值操作符和字符串比较。       
+.SH "操作数 OPERANDS"
+.PP
+一个 Tcl 表达式由操作符、操作数和括号的组合构成。在操作符、操作数和括号之间可使用白空格;它被表达式的指令所忽略。指定整数值可以使用十进制(通常的情况)、八进制(如果操作数的第一个字符是 \fB0\fR)、或十六进制(如果操作数的前两个字符是 \fB0x\fR)。如果一个操作数没有上述的整数格式,则如果可能的话把它作为浮点数对待。指定浮点数可以使用任何遵从 ANSI 的 C 编译器可接受方式(除了在多数安装(installation)中不允许 \fBf\fR、\fBF\fR、\fBl\fR\fB \fR和 \fBL\fR  后缀)。例如,下列的数都是有效的浮点数: 2.1、3.、6e4、7.91e+16。如果没有可能的数值解释,则一个操作数被作为字符串来保留(并且对它只提供一组有限的操作符)。
+.PP
+可以用下列方式指定操作数: 
+.IP [1]
+为一个数值值,要么是整数要么是浮点数。        
+.IP [2]
+作为一个 Tcl 变量,使用标准的 \fB$\fR 记号。变量的值将被用作操作数。        
+.IP [3]
+作为用双引号包围起来的一个字符串。表达式分析器将在引号之间的信息上完成反斜杠、变量和命令替换,并把结果值用作操作数。
+.IP [4]
+作为用花括号包围起来的一个字符串。在左花括号和相匹配的右花括号之间的字符将被用作操作数而不做任何替换。
+.IP [5]
+作为一个用方括号包围起来的 Tcl 命令。命令将被执行并且它的结果将被用作操作数。   
+.IP [6]
+作为一个数学函数,它的参数可以是操作数的任何上述形式,比如 \fBsin($x)\fR。参见下面的已定义的函数的一个列表。       
+.LP
+在上述替换发生的地方(例如在被引用起来的字符串当中),他们由表达式的指令来完成。但是,在调用表达式处理器之前命令分析器可能已经完成了一个额外的替换层。如下面讨论的那样,通常最好把表达式包围在花括号中来防止命令分析器在这些内容上进行替换。
+.PP
+举一些简单的表达式的例子,假设变量\fBa\fR  的值是 3 并且变量 \fBb\fR  的值是 6。则下面的每行左边的命令将生成右边的值。
+.CS
+.ta 6c
+\fBexpr 3.1 + $a	6.1
+expr 2 + "$a.$b"	5.6
+expr 4*[llength "6 2"]	8
+expr {{word one} < "word $a"}	0\fR
+.CE
+.SH "操作符 OPERATORS"
+.PP
+下面列出了有效的操作符,用优先级的降序分组:       
+.TP 20
+\fB\-\0\0+\0\0~\0\0!\fR
+一元(Unary,也译为单目)减,一元加,位(bit-wise) NOT,逻辑 NOT。这些操作符不能提供给字符串操作数,并且位 NOT 只能提供给整数。 
+.TP 20
+\fB*\0\0/\0\0%\fR
+乘,除,求余。这些操作符不能提供给字符串操作数,并且求余只能提供给整数。余数将总是与除数有相同的符号并且绝对值小于除数。        
+.TP 20
+\fB+\0\0\-\fR
+加和减。对任何数值操作数均有效。        
+.TP 20
+\fB<<\0\0>>\fR
+左移和右移。只对整数操作数有效。一右移总是传播(propagate)符号位。  
+.TP 20
+\fB<\0\0>\0\0<=\0\0>=\fR
+Boolean 小于,大于,小于等于,大于等于。如果条件是真则每个操作符产生 1,否则 0。这些操作符可以象提供给数值操作数一样提供给字符串,在这种情况下使用字符串比较。        
+.TP 20
+\fB==\0\0!=\fR
+Boolean 等于和不等于。每个操作符产生一个零/一结果。对所有操作数类型有效。        
+.TP 20
+\fB&\fR
+位与。只对整数操作数有效。       
+.TP 20
+\fB^\fR
+位异或。只对整数操作数有效。       
+.TP 20
+\fB|\fR
+位或。只对整数操作数有效。       
+.TP 20
+\fB&&\fR
+逻辑与。如果两个操作数都是非零则生成一个 1,否则生成 0。只对 boolean 和数值(整数或浮点数)操作数有效。       
+.TP 20
+\fB||\fR
+逻辑或。如果两个操作数都是零则生成一个 0,否则生成 1。只对 boolean 和数值(整数或浮点数)操作数有效。       
+.TP 20
+\fIx\fB?\fIy\fB:\fIz\fR
+If-then-else,如同 C 语言那样。如果 \fIx\fR 求值为非零,则结果是 \fIy\fR\fI \fR的值。否则结果是 \fIz \fR的值。\fIx\fR操作数必须是一个数值值。    
+.LP
+参见 C 手册来得到对每个操作符的生成结果的更详细的描述。所有相同的优先级的二元操作符从左至右的组合(group)。例如,命令       
+.CS
+\fBexpr 4*2 < 7\fR
+.CE
+返回 0.
+.PP
+\fB&&\fR, \fB||\fR, 和 \fB?:\fR 操作符“惰性求值”,如同 C 语言那样,这意味着如果操作数对确定结果不是必须的则不被求值。例如,命令
+.CS
+\fBexpr {$v ? [a] : [b]}\fR
+.CE
+中实际上只有 \fB[a]\fR 或 \fB[b]\fR中的一个将被求值,依赖于 \fB$v \fR的值。注意,这只在整个表达式被包围在花括号中时是真的;否则 Tcl 分析器将在调用 \fBexpr\fR  命令之前求值 \fB[a]\fR 和 \fB[b]\fR 二者。
+.SH "数学函数 MATH FUNCTIONS"
+.PP
+Tcl 支持在表达式中的下列数学函数:      
+.DS
+.ta 3c 6c 9c
+\fBabs\fR	\fBcosh\fR	\fBlog\fR	\fBsqrt\fR
+\fBacos\fR	\fBdouble\fR	\fBlog10\fR	\fBsrand\fR
+\fBasin\fR	\fBexp\fR	\fBpow\fR	\fBtan\fR
+\fBatan\fR	\fBfloor\fR	\fBrand\fR	\fBtanh\fR
+\fBatan2\fR	\fBfmod\fR	\fBround\fR
+\fBceil\fR	\fBhypot\fR	\fBsin\fR
+\fBcos\fR	\fBint\fR	\fBsinh\fR
+.DE
+.PP
+.TP
+\fBabs(\fIarg\fB)\fR
+返回 \fIarg\fR 的绝对值。\fIArg\fR可以要么式整数要么是浮点数,并且结果以同样的形式返回。    
+.TP
+\fBacos(\fIarg\fB)\fR
+返回 \fIarg \fR的反余弦,值域是 [0,pi] 弧度。\fIArg\fR的定义域是 [-1,1]。 .TP
+\fBasin(\fIarg\fB)\fR
+返回 \fIarg \fR的反正弦,值域是 [-pi/2,pi/2] 弧度。\fIArg\fR  的定义域是 [-1,1]。     
+.TP
+\fBatan(\fIarg\fB)\fR
+返回 \fIarg \fR的反正切,值域是 [-pi/2,pi/2] 弧度。   
+.TP
+\fBatan2(\fIx, y\fB)\fR
+返回 \fIy\fR/\fIx\fR\fI \fR的反正切,值域是 [-pi,pi] 和,\fIx\fR 和 \fIy\fR  不能都是 0。        
+.TP
+\fBceil(\fIarg\fB)\fR
+返回不小于 \fIarg \fR的最小的整数值。     
+.TP
+\fBcos(\fIarg\fB)\fR
+返回 \fIarg \fR的余弦,单位是弧度。      
+.TP
+\fBcosh(\fIarg\fB)\fR
+返回 \fIarg\fR 的双曲余弦,如果结果导致溢出,返回一个错误。       
+.TP
+\fBdouble(\fIarg\fB)\fR
+如果 \fIarg\fR  是一个浮点值,返回 \fIarg\fR;否则把 \fIarg\fR 转换成浮点数并返回转换后的值。      
+.TP
+\fBexp(\fIarg\fB)\fR
+返回 \fIarg\fR 的指数,定义为 e**\fIarg\fR。如果结果导致溢出,返回一个错误。        
+.TP
+\fBfloor(\fIarg\fB)\fR
+返回不大于 \fIarg \fR的最大整数值。        
+.TP
+\fBfmod(\fIx, y\fB)\fR
+返回 \fIx\fR 除以 \fIy\fR 得到的浮点余数。如果 \fIy\fR 是 0,返回一个错误。      
+.TP
+\fBhypot(\fIx, y\fB)\fR
+计算一个直角三角形的斜边的长度(\fIx\fR*\fIx\fR+\fIy\fR*\fIy\fR)。
+.TP
+\fBint(\fIarg\fB)\fR
+如果 \fIarg\fR  是一个整数值,返回 \fIarg\fR,否则通过截取\fIarg\fR  (的整数部分)来把它转换成整数并返回转换后的值。        
+.TP
+\fBlog(\fIarg\fB)\fR
+返回 \fIarg \fR的自然对数。\fIArg\fR  必须是正数值。        
+.TP
+\fBlog10(\fIarg\fB)\fR
+返回 \fIarg \fR的以10 为底的对数(常用对数)。\fIArg\fR必须是正数值。   
+.TP
+\fBpow(\fIx, y\fB)\fR
+计算 \fIx\fR  的 \fIy\fR 次幂。如果 \fIx\fR 是负数,\fIy\fR  必须是一个整数值。     
+.TP
+\fBrand()\fR
+返回一个大于等于零且小于 1 的一个(随机)浮点数,这个范围用数学术语是区间[0,1)。种子来自机器的内部时钟或用 srand 函数人为设定。        
+.TP
+\fBround(\fIarg\fB)\fR
+如果 \fIarg\fR  是一个整数,返回 \fIarg\fR,否则通过四舍五入把 \fIarg\fR  转换成整数并返回转换后的值。   
+.TP
+\fBsin(\fIarg\fB)\fR
+返回 \fIarg \fR的正弦,单位是弧度。    
+.TP
+\fBsinh(\fIarg\fB)\fR
+返回 \fIarg\fR 的双曲正弦。如果结果导致溢出,返回一个错误。        
+.TP
+\fBsqrt(\fIarg\fB)\fR
+返回 \fIarg\fR 的开方。\fIArg\fR  必须是非负数。        
+.TP
+\fBsrand(\fIarg\fB)\fR
+ \fIarg\fR 必须是一个整数,它被用于重置随机数生成器的种子。返回用这个种子生成的第一个随机数。每个解释器都有它自己的种子。  
+.TP
+\fBtan(\fIarg\fB)\fR
+返回 \fIarg\fR 的正切。单位是弧度。
+.TP
+\fBtanh(\fIarg\fB)\fR
+返回 \fIarg\fR 的双曲正切。  
+.PP
+除了这些预定义的函数之外,应用可以使用 \fBTcl_CreateMathFunc \fR()  定义增补的函数。       
+.SH "类型 TYPES, 溢出 OVERFLOW, 和 精度 PRECISION"
+.PP
+所有涉及整数的内部运算用 C 类型 \fIlong\fR\fI \fR处置。并且所有涉及浮点数的内部运算用 C 类型 \fIdouble\fR 处置。当把一个字符串转换成一个浮点数的时候,若检测到指数溢出则导致一个 Tcl 错误。对于从字符串转换成整数,溢出检测依赖于在本地 C  库中的一些例程的行为,所以它应被作为不可靠的来看待。在任何情况下,对中间结果通常不能可靠的检测整数的上溢和下溢。浮点数上溢和下溢的检测通常达到由硬件支持的程度,普遍非常可靠。
+.PP
+整数,浮点数、和字符串的内部表示之间的转换按需要自动完成。对于算术计算,在浮点数介入之前使用整数,此后使用浮点数。例如, 
+.CS
+\fBexpr 5 / 4\fR
+.CE
+返回 1,而
+.CS
+\fBexpr 5 / 4.0\fR
+\fBexpr 5 / ( [string length "abcd"] + 0.0 )\fR
+.CE
+都返回 1.25。 返回的浮点值总是带着一个“\fB.\fR”或一个 \fBe\fR 所以它们看起来不象整数值。例如,
+.CS
+\fBexpr 20.0/5.0\fR
+.CE
+返回 \fB4.0\fR, 而不是 \fB4\fR.
+
+.SH "字符串操作 STRING OPERATIONS"
+.PP
+字符串可被用做比较操作符的操作数,尽管表达式求值器尽可能的尝试着作为整数或浮点数来做比较。如果一个比较的操作数中的一个是字符串而其他是数值值,数值操作数被转换回字符串,对整数值使用 C \fIsprintf\fR  格式指定符 \fB%d\fR ,对浮点数值使用 \fB%g\fR。例如,命令        
+.CS
+\fBexpr {"0x03" > "2"}\fR
+\fBexpr {"0y" < "0x12"}\fR
+.CE
+都返回 1。做第一个比较使用了整数比较,而做第二个比较在把第二个操作数转换成字符串 \fB18\fR之后使用了字符串比较。因为 Tcl 趋向于尽可能的把值作为数值对待,在你事实上想进行字符串比较并且操作符的值可以是任意的的时候使用象 \fB==\fR  这样的操作符通常不是个好主意;在这种情况下最好使用 \fBstring\fR命令。        
+
+.SH "性能的考虑 PERFORMANCE CONSIDERATIONS"
+.PP
+要得到最快的速度和最小的存储需求,就要把表达式包围在花括号中。这允许 Tcl 字节码编译器生成最好的代码。
+.PP
+象上面所提及的那样,表达式被替换两次: 一次由 Tcl 解释器,一次由 \fBexpr\fR  命令。例如,命令
+.CS
+\fBset a 3\fR
+\fBset b {$a + 2}\fR
+\fBexpr $b*4\fR
+.CE
+返回 11,而不是 4 的倍数。这是因为 Tcl 分析器将首先把变量 \fBb\fR替换成 \fB$a + 2\fR,接着 \fBexpr\fR  命令将求值表达式 \fB$a + 2*4\fR。
+.PP
+多数表达式不需要两轮替换。要它们被包围在花括号中,要么它们的变量和命令替换生成数值或本身不需要替换的字符串。但是,因为一些未用化括号包围起来的表达式需要两轮替换,字节码编译器必须散布(emit)额外的指令来处理这些情况。对于未用化括号包围起来的表达式,代价最高昂的代码是包含命令替换的代码。必须通过在每次执行这个表达式时生成新的代码来实现这些表达式。       
+
+.SH "关键字 KEYWORDS"
+arithmetic, boolean, compare, expression, fuzzy comparison
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/22 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/fblocked.n b/src/mann/fblocked.n
new file mode 100644
index 0000000..d20d503
--- /dev/null
+++ b/src/mann/fblocked.n
@@ -0,0 +1,269 @@
+'\" 
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: fblocked.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fblocked.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fblocked n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fblocked \- 测试上次输入操作是否耗尽了所有获得的输入
+.SH "总览 SYNOPSIS"
+\fBfblocked \fIchannelId\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+如果在 \fIchannelId \fR 上的最新的输入操作返回少于其要求的信息,\fBfblocked\fR命令将返回 1,因为所有可获得的输入都被耗尽了。例如,如果在只能获得三个字符用于输入并且没有行结束序列的时候调用 \fBgets\fR, \fBgets\fR将返回一个空串并且随后的 \fBfblocked\fR  调用将返回 1。
+.PP
+
+.SH "参见 SEE ALSO"
+gets(n), open(n), read(n)
+
+.SH "关键字 KEYWORDS"
+blocking, nonblocking
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/22
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/fconfigure.n b/src/mann/fconfigure.n
new file mode 100644
index 0000000..aba0d9d
--- /dev/null
+++ b/src/mann/fconfigure.n
@@ -0,0 +1,339 @@
+'\" 
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: fconfigure.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fconfigure.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fconfigure n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fconfigure \- 设置和获得一个通道上的选项      
+.SH "总览 SYNOPSIS"
+.nf
+\fBfconfigure \fIchannelId\fR
+\fBfconfigure \fIchannelId\fR \fIname\fR
+\fBfconfigure \fIchannelId\fR \fIname value \fR?\fIname value ...\fR?
+.fi
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBfconfigure\fR   命令设置和检索一个通道的选项。\fIChannelId\fR 标识要设置或查询某个选项的那个通道。如果没有提供 \fIname\fR 或 \fIvalue\fR 参数,命令返回一个列表,它包含着这个通道上可变更的选项名字和值。如果提供了 \fIname\fR 而没有 \fIvalue\fR  则命令返回给定选项的当前值。如果提供一对或多对 \fIname\fR和 \fIvalue\fR,命令把每个指名的选项设置成相应的 \fIvalue \fR;在这种情况下返回值是一个空串。
+.PP
+所有通道都支持下面描述的选项。额外的,每个通道类型都可以增加只有它自己支持的选项。参见建立各种类型通道的命令的手册条目来得到这个特定类型的通道所支持的选项。例如,参见  \fBsocket\fR命令的手册条目来得到增补的选项。
+.TP
+\fB\-blocking\fR \fIboolean\fR
+\fB-blocking\fR  选项决定在通道上的 I/O  操作是否可以导致进程无限的阻塞。选项的值必须是一个正确的 boolean  值。通道通常在阻塞模式中;如果把一个通道转换到非阻塞模式中,它将影响 \fBgets\fR、\fBread\fR、\fBputs\fR、\fBflush\fR、和 \fBclose\fR  命令的操作;详见这些命令的文档。要使非阻塞模式正常工作,应用必须使用 Tcl    事件循环(例如,通过调用 \fBTcl_DoOneEvent\fR  或调用 \fBvwait\fR  命令)。 
+.TP
+\fB\-buffering\fR \fInewValue\fR
+.
+如果 \fInewValue\fR  是 \fBfull\fR,则 I/O 系统直到它的内部缓冲变满或调用 \fBflush\fR   命令之后才将缓冲输出。如果 \fInewValue\fR 是 \fBline\fR,则 I/O 系统将在输出一个换行符的时候自动的刷新此通道的输出。如果 \fInewValue\fR  是 \fBnone\fR,则 I/O 系统将在每次输出操作之后自动刷新。除了连接到终端类设备的通道被初始设置成 \fBline \fR之外,\fB-buffering\fR  的缺省被设置成 \fBfull\fR。补充一下,\fBstdin\fR  和 \fBstdout\fR  被初始设置成 \fBline\fR,而 \fBstderr\fR 被设置成 \fBnone\fR。               
+.TP
+\fB\-buffersize\fR \fInewSize\fR
+.
+\fINewvalue\fR必须是一个整数;使用它的值来设置随后分配给这个通道用来存储输入和输出的缓冲区的大小,以字节为单位。\fINewvalue\fR  必须在十到一百万之间,即允许十到一百万字节大小的缓冲区。 
+.VS 8.1 br
+.TP
+\fB\-encoding\fR \fIname\fR
+.
+用这个选项来指定通道的编码,为了在 Tcl 中使用数据,数据可以转换成 Unicode 或从 Unicode 转换过来。例如,要使 Tcl 从用 \fBshiftjis\fR  编码的日文文件中读取字符并正确的处理和显示其中的内容,编码就应该设置成 \fBshiftjis\fR。此后,当从一个通道读取的时候,在这个日文文件中的字节如其所读的将被转换成 Unicode。同样也支持写入 - 即把要写到通道中的 Tcl 字符串自动的转换成输出上的特定编码。
+.RS
+.PP
+如果一个文件包含纯二进制数据(例如,一个 JPEG 图象),这种通道应当被配置成 \fBbinary\fR。Tcl  将对这种文件中的数据不赋予任何解释,而是简单的读或写原始(raw)的字节。使用Tcl \fBbinary\fR  命令操纵这种原始字节数据。
+.PP
+给新打开的通道的缺省编码与同操作系统交互时使用的依赖于平台或本地的编码是一样的。              
+.RE
+.VE
+.TP
+\fB\-eofchar\fR \fIchar\fR
+.TP
+\fB\-eofchar\fR \fB{\fIinChar outChar\fB}\fR
+.
+这个选项支持 DOS 文件系统,它使用 Control-z (\ex1a)作为文件结束的标记符(marker)。如果 \fIchar\fR  不是一个空串,则在输入期间遇到这个字符时指示(signal)文件结束。对于输出,在关闭通道的时候输出文件结束字符。如果 \fIchar\fR 是一个空串,则没有特定的文件结束字符标记符。对于读写通道,一个有两个元素的列表分别指定给输入和输出的文件结束标记符。作为一种约定,在给读写通道设置文件结束符的时候,你可以指定一个单一的值,同时提供给读和写。在查询一个读写通道的文件结束符时,将返回一个两个元素的列表。除了在 Windows 下的文件之外的情况下,\fB-eofchar\fR  缺省值是一个空串。在Windows 的情况下,对于读 \fB-eofchar\fR  是 Control-z (\ex1a),对于写是空串。              
+.TP
+\fB\-translation\fR \fImode\fR
+.TP
+\fB\-translation\fR \fB{\fIinMode outMode\fB}\fR 
+.
+在 Tcl 脚本中总是使用一个单一的换行符(\en)来表示一行的结束。但是在实际的文件和设备中的行结束在不同的平台上可能有不同的表示,甚至在相同的平台的不同的设备上也可能有不同的表示。例如,在 UNIX 下在文件中是换行符,而在网络连接中通常使用回车-换行(carriage-return-linefeed)序列。在输入上  (例如,使用 \fBgets\fR 和 \fBread\fR),Tcl I/O 系统自动的把外部的行结束表示转换成换行符。在输出上(例如,使用 \fBputs\fR),I/O 系统把换行符转换成外部的行结束表示。缺省的转换模式是 \fBauto\fR,即自动的处理所有一般情况,而 \fB-translation\fR 
+ 选项在提供显式的对行结束转换的控制。
+.PP
+对于只读和只写通道,与 \fB-translation\fR   相关联的值是一个单一的项目。对于读写通道这个值是一个两个元素的列表;列表的第一个元素是读转换模式,第二个元素是写转换模式。作为一种约定,在给读写通道设置行结束符的时候,你可以指定一个单一的值,同时提供给读和写。在查询一个读写通道的行结束符时,将返回一个两个元素的列表。当前支持下列值:              
+.TP
+\fBauto\fR
+.
+作为输入转换模式,\fBauto\fR  把所有的换行(\fBlf\fR)、回车(\fBcr\fR)、或一个回车并跟随一个换行(\fBcrlf\fR) 作为行结束表示。行结束表示甚至可以从行到行的改变,并且所有的情况都被转换成一个换行符。作为输出转换模式,\fBauto\fR  选择一个特定于平台的表示;对于套接口,Tcl 在所有平台上均选择 \fBcrlf\fR,对于所有 Unix 版本(flavor),它选择 \fBlf\fR,对Macintosh 平台它选择 \fBcr\fR,对于各种版本的Windows 它选择 \fBcrlf\fR。对于输入和输出二者,\fB-translation\fR的缺省设置是 \fBauto\fR。               
+.VS 8.1 br
+.TP
+\fBbinary\fR 
+.
+不进行行结束转换。除了 \fBbinary\fR模式额外的把文件结束符设置成空串(禁用文件结束符),并且把编码设置成 \fBbinary\fR (禁用编码过滤)之外,它与\fBlf\fR  模式基本一致。详细信息参见 \fB-eofchar\fR 和 \fB-encoding\fR。               
+.VE
+.TP
+\fBcr\fR
+.
+在底层文件或设备中的行结束被表示为一个单一的回车符。作为输入转换模式,\fBcr\fR模式把回车符转换成换行符。作为输出转换模式,\fBcr\fR模式把换行符转换成回车符。这种模式典型的在 Macintosh 平台上使用。               
+.TP
+\fBcrlf\fR
+.
+在底层文件或设备中的行结束被表示一个回车符并跟随一个换行符。作为输入转换模式,\fBcrlf\fR模式把回车换行序列转换成换行符。作为输出模式,\fBcrlf\fR 模式把换行符转换成回车换行序列。这种模式典型的在 Windows  平台和网络连接上使用。 
+.TP
+\fBlf\fR
+.
+在底层文件或设备中的行结束被表示为一个单一的换行符。在这种模式下在输入或输出期间没有转换发生。这种模式典型的在UNIX 平台上使用。
+.RE
+.PP
+
+.SH "参见 SEE ALSO"
+close(n), flush(n), gets(n), puts(n), read(n), socket(n)
+
+.SH "关键字 KEYWORDS"
+blocking, buffering, carriage return, end of line, flushing, linemode,
+newline, nonblocking, platform, translation, encoding, filter, byte array,
+binary
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/02
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/fcopy.n b/src/mann/fcopy.n
new file mode 100644
index 0000000..ae9ca3b
--- /dev/null
+++ b/src/mann/fcopy.n
@@ -0,0 +1,325 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: fcopy.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fcopy.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fcopy n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fcopy \- 从一个通道向另一个复制数据
+.SH "总览 SYNOPSIS"
+\fBfcopy \fIinchan\fR \fIoutchan\fR ?\fB\-size \fIsize\fR? ?\fB\-command \fIcallback\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBfcopy\fR  命令从一个 I/O 通道 \fIinchan\fR  向另一个 I/O 通道 \fIoutchan\fR  
+复制数据。\fBfcopy\fR  命令在 Tcl I/O 系统中起到缓冲的杠杆作用(leverage),它避免额外的复制,并且在向慢速目标如网络套接口复制大文件的时候避免在主存中缓冲过多的数据。
+.PP
+ \fBfcopy\fR 命令从 \fIinchan\fR  传输数据直到文件结束或传输完 \fIsize\fR字节。如果没有给出 \fB-size\fR 参数,则复制持续到文件结束。从 \fIinchan\fR读的所有数据都复制到 \fIoutchan\fR。如果没有 \fB-command\fR选项,在复制完成并返回写到 \fIoutchan \fR的字节数之前 \fBfcopy\fR  将阻塞。
+.PP
+\fB-command\fR 参数使 \fBfcopy\fR在后台工作。在这种情况下它立即返回,并在复制完成时调用  \fIcallback\fR。调用 \fIcallback\fR 加上一个或两个额外的参数来指示有多少字节被写到了 \fIoutchan\fR。在后台复制期间如果发生了一个错误,第二个参数是与错误相关联的错误字符串。使用后台复制不需要把 \fIinchan\fR 或 \fIoutchan\fR 转换成非阻塞模式;\fBfcopy\fR 命令将自动关照这些。但是,需要使用 \fBvwait\fR 命令或使用 Tk 进入事件循环。
+.PP
+在后台复制期间不允许对 \fIinchan\fR 或 \fIoutchan \fR做其他 I/O 操作。如果在复制进行期间 \fIinchan\fR 或 \fIoutchan\fR  中被关闭,停止当前的复制并且不做命令回调。如果 \fIinchan\fR被关闭,则写出为 \fIoutchan\fR  而排队(queue)的所有数据。
+.PP
+注意在一个命令复制期间 \fIinchan\fR 可以变成可读的。在一个后台复制期间你应该关闭任何 \fBfileevent\fR句柄,这样这些句柄不与复制相触及(interfere)。通过一个 \fBfileevent\fR句柄的任何 I/O 尝试将得到一个 "channel busy"  错误。
+.PP
+.PP
+\fBFcopy\fR  依据 \fIinchan\fR 和 \fIoutchan \fR的 \fB-translation\fR选项来转换它们中的文件行结束序列。参见\fBfconfigure\fR的手册条目来得到 \fB-translation\fR  选项的详情。转换意味着从 \fIinchan\fR 读到的字节数与写到 \fIoutchan\fR.的字节数可能不同。只报告写到 \fIoutchan\fR中的字节数。要么作为同步的 \fBfcopy\fR 的返回值,要么作为给异步的 \fBfcopy \fR的回调的参数。  
+
+.SH "范例 EXAMPLE"
+.PP
+第一个例子展示了回调如何得到传递给它的传输了的字节数。它还使用 vwait  来使应用进入事件循环。当然,不使用回调也能做出这个简化了的例子。
+.DS
+proc Cleanup {in out bytes {error {}}} {
+    global total
+    set total $bytes
+    close $in
+    close $out
+    if {[string length $error] != 0} {
+	# error occurred during the copy
+    }
+}
+set in [open $file1]
+set out [socket $server $port]
+fcopy $in $out -command [list Cleanup $in $out]
+vwait total
+
+.DE
+.PP
+第二个例子按块(chunk)复制并在命令回调中测试文件结束。  
+.DS
+proc CopyMore {in out chunk bytes {error {}}} {
+    global total done
+    incr total $bytes
+    if {([string length $error] != 0) || [eof $in] {
+	set done $total
+	close $in
+	close $out
+    } else {
+	fcopy $in $out -command [list CopyMore $in $out $chunk] \\
+	    -size $chunk
+    }
+}
+set in [open $file1]
+set out [socket $server $port]
+set chunk 1024
+set total 0
+fcopy $in $out -command [list CopyMore $in $out $chunk] -size $chunk
+vwait done
+
+.DE
+
+.SH "参见 SEE ALSO"
+eof(n), fblocked(n), fconfigure(n)
+
+.SH "关键字 KEYWORDS"
+blocking, channel, end of line, end of file, nonblocking, read, translation
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/02
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/file.n b/src/mann/file.n
new file mode 100644
index 0000000..9ec32a8
--- /dev/null
+++ b/src/mann/file.n
@@ -0,0 +1,441 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: file.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: file.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH file n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+file \- 操纵文件名和属性
+.SH "总览 SYNOPSIS"
+\fBfile \fIoption\fR \fIname\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令提供在一个文件名或属性上的一些操作。\fIName\fR 是一个文件的名字;如果它以波浪线(~)开始,则在执行命令之前进行波浪线替换(详情参见\fBfilename\fR  命令的手册条目)。\fIOption\fR 指示对文件名做什么处理。接受 \fIoption\fR 的任何唯一的缩写。有效的选项是: 
+.TP
+\fBfile atime \fIname\fR ?\fBtime\fR?
+.
+返回一个十进制字符串,给出文件 \fIname \fR上次被访问的时间。如果指定了\fItime\fR,它是这个文件要设置成的访问时间。这个时间是用标准的 POSIX 方式(fashion)度量的,即从一个固定的开始时间至今的秒数(通常是1970年1月1日)。如果文件不存在或它的访问时间不可查询或设置则生成一个错误。在 Windows 上,FAT 文件系统不支持访问时间。
+.TP
+\fBfile attributes \fIname\fR
+.br
+\fBfile attributes \fIname\fR ?\fBoption\fR?
+.br
+\fBfile attributes \fIname\fR ?\fBoption value option value...\fR?
+.RS
+这个子命令返回或设置与一个文件相关联的特定于平台的值。第一种形式返回特定于平台的标志(flag)和它们的值的一个列表。第二种形式返回指定选项的值。第三种形式设置一个或多个值。这些值是:
+.PP
+在Unix 上,\fB-group\fR  得到或设置这个文件的组名字。给这个命令一个组ID,而它返回一个组名字。\fB-owner\fR 得到或设置这个文件的属主的名字。这个命令返回属主的名字,而在设置属主的时候要传递给它数值的 ID。\fB-permissions\fR  设置或查询 chmod(1) 所使用的八进制代码。这个命令还有限的支持使用 chmod(1)的符号属性来做设置,形式是 [ugo]?[[+\-=][rwxst],[...]],这里使用逗号来分隔多个符号属性(例如: \fBu+s,go\-rw\fR  为用户添加粘住位(sticky),为组和其他删除读和写的许可权)。还支持一个简化的 \fBls\fR式样的字符串,形式是 rwxrwxrwx (必须是 9 个字符)(例如: \fBrwxr\-xr\-t\fR 等价于01755)。
+.PP
+在 Windows 上,\fB-archive\fR 给出值或设置或清除这个文件的归档属性。\fB-hidden\fR  给出值或设置或清除这个文件的隐藏属性。\fB-longname\fR将把每个路径元素扩展成长版本。不能设置这个属性。\fB-readonly\fR 给出值或设置或清除这个文件的只读属性。\fB-shortname\fR    给出一个字符串,在这里每个路径元素被替换成它的短(8.3)版本的文件名。不能设置这个属性。\fB-system\fR 给出值或设置或清除这个文件的系统属性。
+.PP
+在 Macintosh 上,\fB-creator\fR给出或设置这个文件的寻找器(Finder)建立者类型。\fB-hidden\fR给出值或设置或清除这个文件的隐藏属性。\fB-readonly\fR 给出值或设置或清除这个文件的只读属性。注意如果打开了文件共享则目录只能被锁定。\fB-type\fR 给出或设置这个文件的寻找器文件类型。    
+.RE
+.VS
+.TP
+\fBfile channels ?\fIpattern\fR?
+.
+如果没有指定 \fIpattern\fR,则返回所有在这个解释器中注册的打开通道的一个列表。如果指定了 \fIpattern\fR,则只返回匹配\fIpattern\fR  的名字。确定匹配使用与 \fBstring match\fR 相同的规则。              
+.VE
+.TP
+\fBfile copy \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR \fItarget\fR
+.br
+\fBfile copy \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR ?\fIsource\fR ...? \fItargetDir\fR
+.RS
+第一中形式在路径名 \fItarget \fR底下做文件或路径 \fIsource\fR的一个复件。如果 \fItarget\fR   是一个现存的目录,则使用第二种形式。第二种形式在\fItargetDir \fR中做列出的每个 \fIsource\fR 文件的一个复件。如果指定一个目录作为一个 \fIsource\fR,则这个目录的内容将被递归的复制进 \fItargetDir\fR   中。除非指定 \fB\-force\fR  选项否则现存文件将不被覆写。即使指定了 \fI\-force\fR  ,尝试覆写一个非空目录,用一个文件覆写一个目录,或者用一个目录覆写一个文件将导致错误。参数按指定的次序被处理,如果有错误的话,在第一个错误处停止(halt)。一个 \fB\-\|\-\fR   标记选项的结束;在 \fB\-\|\-\fR 之后的参数即使以 \fB\- \fR开始将仍被作为一个 \fIsource\fR  来对待。         
+.RE
+.TP
+\fBfile delete \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIpathname\fR ?\fIpathname\fR ... ?
+.
+删除由每个 \fIpathname\fR 参数所指定的文件或目录。只有指定 \fB-force\fR选项才删除非空目录。尝试删除一个不存在文件将导致不作为一个错误来考虑。即使没有指定 \fB-force\fR 
+项,尝试删除一个只读文件将导致文件被删除。参数按指定的次序被处理,如果有错误的话,在第一个错误处停止(halt)。一个 \fB\-\|\-\fR  标记选项的结束;在 \fB\-\|\-\fR 之后的参数即使以 \fB\- \fR开始将仍被作为一个 \fIpathname\fR来对待。                
+.TP
+\fBfile dirname \fIname\fR
+返回一个名字,由在 \fIname\fR  中除了最后一个之外的所有路径组成部分(component)组成。如果 \fIname\fR 是一个相对的文件名并且只包含一个路径元素(element),则返回“\fB.\fR” (在 Macintosh 上为“\fB:\fR”)。如果 \fIname\fR 参照一个根目录,则返回根目录。例如,
+.RS
+.CS
+\fBfile dirname c:/\fR
+.CE
+返回 \fBc:/\fR. 
+.PP
+注意波浪线替换只在必要的时候进行用以补全(complete)命令。例如,                
+.CS
+\fBfile dirname ~/src/foo.c\fR
+.CE
+返回 \fB~/src\fR,而  
+.CS
+\fBfile dirname ~\fR
+.CE
+返回 \fB/home\fR (or something similar).
+.RE
+.TP
+\fBfile executable \fIname\fR
+.
+如果文件对当前用户是可执行的则返回 \fB1\fR,否则返回\fB0\fR。                  
+.TP
+\fBfile exists \fIname\fR
+.
+如果文件 \fIname\fR  存在并且当前的用户对找到(lead to)它(所途径)的目录有查找的权利(privilege)则返回\fB1\fR,否则返回 \fB0\fR。            
+.TP
+\fBfile extension \fIname\fR
+.
+返回在 \fIname \fR最后那个元素的最后一个点号之后并包括点号的所有在 \fIname\fR中字符。如果在 \fIname\fR 的最后的那个元素中没有点号则返回空串。 
+.TP
+\fBfile isdirectory \fIname\fR
+.
+如果文件 \fIname\fR  是一个目录则返回 \fB1\fR,否则返回 \fB0\fR。
+.TP
+\fBfile isfile \fIname\fR
+.
+如果文件 \fIname\fR  是一个普通文件则返回 \fB1\fR,否则返回 \fB0\fR。
+.TP
+\fBfile join \fIname\fR ?\fIname ...\fR?
+.
+接受一个或多个文件名并使用对当前平台正确的路径分隔符来组合它们。如果特定的 \fIname\fR是相对的,则它会被连接到前面的文件名参数上。否则,丢弃所有以前的参数,从当前的参数开始进行连接。例如
+.RS
+.CS
+\fBfile join a b /foo bar\fR
+.CE
+返回 \fB/foo/bar\fR.
+.PP
+注意任何名字都可以包含分隔符,并且结果总是依从当前平台的规矩:  对 Unix 和 Windows 是 \fB/\fR,对 Macintosh 是 \fB:\fR。
+.RE
+.TP
+\fBfile lstat \fIname varName\fR
+.
+除了使用 \fIlstat\fR 调用而不使用 \fIstat \fR之外,与 \fBstat\fR  选项(见后)相同。这意味着如果 \fIname\fR 参照一个符号连接,在 \fIvarName\fR 中返回的信息是针对这个连接而不是它所引用的那个文件。在不支持符号连接的系统上这个选项的行为与 \fBstat\fR选项完全一致。               
+.TP
+\fBfile mkdir \fIdir\fR ?\fIdir\fR ...?
+.
+建立每个指定的目录。对于每个指定的路径名 \fIdir\fR  ,象 \fIdir\fR 自身一样,这个命令将建立所有不存在的父目录。如果指定了一个现存的目录,不做动作并不返回错误。尝试用一个目录覆写一个现存的文件将导致一个错误。参数按指定的次序被处理,如果有错误的话,在第一个错误处停止(halt)。
+.TP
+\fBfile mtime \fIname\fR ?\fItime\fR?
+.
+返回一个十进制字符串,给出文件 \fIname\fR上次被修改的时间。如果指定了\fItime\fR    
+,它是这个文件要设置成的修改时间。(等价与 Unix 的 \fBtouch\fR)。这个时间是用标准的 POSIX 方式(fashion)度量的,即从一个固定的开始时间至今的秒数(通常是1970年1月1日)。如果文件不存在或它的修改时间不可查询或设置则生成一个错误。
+.TP
+\fBfile nativename \fIname\fR
+.
+返回文件的特定于平台的名字。如果这个文件名需要传递给特定于系统的调用,比如对在 Windows 下的 exec 或在 Macintosh 上的 AppleScript 将会有用。
+.TP
+\fBfile owned \fIname\fR 
+.
+如果文件 \fIname\fR  由当前用户所有则返回 \fB1\fR,否则返回 \fB0\fR。
+.TP
+\fBfile pathtype \fIname\fR
+.
+返回 \fBabsolute\fR、\fBrelative\fR、\fBvolumerelative \fR中的一个。如果 \fIname\fR  参照一个在指定卷上的指定文件,路径类型将是 \fBabsolute\fR。如果 \fIname\fR 参照一个相对当前工作目录的一个文件,则路径类型将是 \fBrelative\fR。如果 \fIname\fR 参照在指定卷上的相对于当前工作目录的一个文件,或者在当前工作卷上的指定文件,则路径类型是 \fBvolumerelative\fR。
+.TP
+\fBfile readable \fIname\fR
+.
+如果文件 \fIname\fR  对当前用户是可读的则返回 \fB1\fR,否则返回\fB0\fR。
+.TP
+\fBfile readlink \fIname\fR
+.
+返回由 \fIname\fR  给出的符号连接的值(比如,它指向的文件的名字)。如果 \fIname\fR 不是符号连接或它的值不可读,则返回一个错误。在不支持符号连接的系统上这个选项未定义。               
+.TP
+\fBfile rename \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR \fItarget\fR
+.TP
+\fBfile rename \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR ?\fIsource\fR ...? \fItargetDir\fR
+.RS
+第一种形式接受由路径名\fIsource\fR 指定的文件或目录并且把它重命名成 \fItarget\fR,如果路径名 \fItarget\fR指定了在不同目录下的一个名字,则移动这个文件。如果 \fItarget\fR 是一个现存的目录,则使用第二种形式。第二中形式移动每个 \fIsource\fR 文件或目录到目录 \fItargetDir \fR中。除非指定了\fB-force\fR选项否则不覆写现存的文件。尝试覆写一个非空目录,用一个文件覆写一个目录,或者用一个目录覆写一个文件将导致错误。参数按指定的次序被处理,如果有错误的话,在第一个错误处停止(halt)。一个 \fB\-\|\-\fR 标记选项的结束;在 \fB\-\|\-\fR  之后的参数即使以 \fB\- \fR开始将仍被作为一个 \fIsource\fR 来对待。         
+.RE
+.TP
+\fBfile rootname \fIname\fR
+.
+返回 \fIname\fR  的最后一个组成部分的最后一个“.”之前但不包括这个“.”的 \fIname\fR中的所有字符。如果 \fIname\fR 的最后的组成部分不包含点号,则返回 \fIname\fR。
+.TP
+\fBfile size \fIname\fR
+.
+返回给出文件 \fIname\fR 的大小的以字节为单位的一个十进制字符串。如果文件不存在或它的大小不可查询则生成一个错误。      
+.TP
+\fBfile split \fIname\fR
+.
+返回一个列表,它的元素是在 \fIname \fR中的路径的组成部分。列表的第一个元素将与  \fIname \fR有相同的路径类型。所有其他元素将是相对的。除了需要确保一个元素是相对的而无歧义之外,丢弃路径分隔符。例如,在 Unix 下                
+.RS
+.CS
+\fBfile split /foo/~bar/baz\fR
+.CE
+返回 \fB/  foo  ./~bar  baz\fR   来确保以后的命令在第三个组成部分上不进行波浪线替换。
+.RE
+.TP
+\fBfile stat  \fIname varName\fR
+.
+在 \fIname \fR上调用 \fBstat\fR  内核调用,并且使用由 \fIvarName\fR 给出的变量来持有从内核调用返回的信息。\fIVarName\fR 被作为一个数组变量来对待,并且给这个变量设置下列元素: \fBatime\fR、\fBctime\fR、\fBdev\fR、\fBgid\fR、\fBino\fR、\fBmode\fR、\fBmtime\fR、\fBnlink\fR、\fBsize\fR、\fBtype\fR、\fBuid\fR。除了 \fBtype\fR之外的每个元素都是一个十进制字符串,它们的值来自从 \fBstat\fR 返回的结构中相应的字段。这些值的意义详见 \fBstat\fR 的手册条目。\fBtype\fR  元素给出的文件类型与命令 \fBfile type  \fR返回的有相同的形式。这个命令返回一个空串。
+.TP
+\fBfile tail \fIname\fR
+.
+返回在最后一个目录分隔符之后的在 \fIname\fR中的所有字符。如果 \fIname\fR  不包含分隔符则返回\fIname\fR。
+.TP
+\fBfile type \fIname\fR
+.
+返回给出文件 \fIname \fR的类型的一个字符串,它将是\fBfile\fR、\fBdirectory\fR、\fBcharacterSpecial\fR、 \fBblockSpecial\fR、\fBfifo\fR、\fBlink\fR、或 \fBsocket\fR 中的一个。   
+.TP
+\fBfile volume\fR
+. 
+返回一个适当的 Tcl 列表,给出到挂装在系统上的卷的绝对路径。在Macintosh上,将是挂装驱动器的一个列表,包括本地的和网络的二者。N.B.(?)如果两个驱动器有相同的名字,它们都将出现在卷列表上,但当前没有办法从Tcl 来访问除了第一个之外的任何驱动器。在 UNIX 上,命令将总是返回 "/",因为所有文件系统都是本地挂装的。在 Windows 上,它将返回可获得的本地驱动器的一个列表(比如,{a:/ c:/})。                
+.TP
+\fBfile writable \fIname\fR
+.
+如果文件 \fIname\fR  对当前用户是可写的则返回 \fB1\fR,否则返回 \fB0\fR。   
+.SH "移植要点 PORTABILITY ISSUES"
+.TP
+\fBUnix\fR\0\0\0\0\0\0\0
+.
+这些命令总是使用真实用户和组标识而不使用有效用户和组标识。
+
+.SH "参见 SEE ALSO"
+filename
+
+.SH "关键字 KEYWORDS"
+attributes, copy files, delete files, directory, file, move files, name, rename files, stat
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/fileevent.n b/src/mann/fileevent.n
new file mode 100644
index 0000000..65bd9a5
--- /dev/null
+++ b/src/mann/fileevent.n
@@ -0,0 +1,290 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: fileevent.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: fileevent.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH fileevent n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+fileevent \- 在一个通道变得可读或可写的时候执行一个脚本
+.SH "总览 SYNOPSIS"
+\fBfileevent \fIchannelId \fBreadable \fR?\fIscript\fR?
+.sp
+\fBfileevent \fIchannelId \fBwritable \fR?\fIscript\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令被用于建立\fI文件事件处理器\fR。一个文件事件处理器(handler)是在一个通道和一个脚本之间的一个绑定,这样在通道变得可读或可写的时候求这个脚本的值。通常使用文件事件处理器来允许在事件驱动的基础上从另一个进程接收数据,这样接受者可以在等待数据到来的时候继续与用户交互。如果一个应用在一个阻塞(模式下)的通道上调用 \fBgets\fR或 \fBread\fR,而此时没有可获得的数据,在输入数据到来之前,进程将被阻塞,它将不能服务于其他事件,所以对于用户它象是被“冷冻”了。使用 \fBfileevent\fR,进程可以在数据出现(present)的时候被告之,而只在不会导致阻塞的时候调用 \fBgets\fR或 \fBread\fR  。
+.PP
+给 \fBfileevent\fR的 \fIchannelId\fR   参数参照一个打开的通道,比如从以前的 \fBopen\fR 或 \fBsocket\fR  命令的得到的返回值。如果指定了 \fIscript\fR  参数,则 \fBfileevent\fR  建立一个新的事件处理器: 在通道变得可读或可写(依赖于给 \fBfileevent\fR 的第二个参数)的时候求 \fIscript\fR  的值。在这种情况下 \fBfileevent\fR 返回一个空串。对于一个文件 \fBreadable\fR 和 \fBwritable\fR事件处理器是独立的,可以单独的建立和删除。但是,在一个特定的解释器中在一个特定的时间上对于一个文件最多只能有一个\fBreadable\fR和一个 \fBwritable\fR  处理器。如果调用 \fBfileevent\fR而此时指定的处理器已经在调用的解释器中存在,新的脚本替换旧的那个。  
+.PP
+如果没有指定 \fIscript\fR  参数,\fBfileevent\fR 为 \fIchannelId\fR返回当前的脚本,如果没有则返回一个空串。如果 指定 \fIscript\fR 参数为一个空串则删除这个事件处理器,如此将不会有脚本被调用。在一个通道被关闭或它的解释器被删除的时候文件的事件处理器也自动的被删除。
+.PP
+如果在底层的设备上有可获得的未读的数据则把一个通道考虑为可读的。除了要从这个通道读的最近的尝试是不能在输入缓冲中找到一个完整的行的一个 \fBgets\fR  调用的特殊情况之外,如果在一个输入缓冲中有未读的数据也把一个通道考虑未可读的。这个特征允许使用事件从一个在非阻塞模式下的文件中一次读一行。如果在底层的文件或设备上有文件结束或出错的条件出现也把一个通道考虑为可读的。对于 \fIscript\fR 检查这些条件和正确的处理它们是很重要的;例如,如果没有对文件结束的特定检查,可能发生一个无限的循环,这里\fIscript\fR  读不到数据,返回,立即重新调用。
+.PP
+如果至少数据中有一字节可以写到底层文件或设备中而不阻塞,或者在底层的文件或设备上有错误的条件出现则把一个通道考虑为可写的。    
+.PP
+
+事件驱动 I/O 最好为使用 \fBfconfigure\fR  命令配置成非阻塞模式的通道工作。在阻塞模式下,如果你给它的数据比底层文件或数据可接受的多,则 \fBputs\fR 命令将阻塞,而如果你读的数据比已经准备好的多,则\fBgets\fR 或 \fBread\fR 命令将阻塞;在命令阻塞时不处理事件。在非阻塞模式下,\fBputs\fR、\fBread\fR和 \fBgets\fR从不阻塞。参见这些单独命令的文档来得到关于它们如何处理阻塞和非阻塞通道的信息。
+.PP
+给一个文件事件的脚本在调用\fBfileevent\fR  命令的解释器的全局的层次上执行(在任何 Tcl 过程的上下文之外)。如果在执行脚本期间发生了错误则使用 \fBbgerror\fR 机制来报告错误。额外的,如果一个事件处理器曾经返回错误则删除它;目的是防止缺陷很多的处理器导致无限循环。  
+
+.SH "感谢 CREDITS"
+.PP
+\fBfileevent\fR  基于由 Mark Diekhans 建立的 \fBaddinput\fR  命令。
+
+.SH "参见 SEE ALSO"
+bgerror(n), fconfigure(n), gets(n), puts(n), read(n)
+
+.SH "关键字 KEYWORDS"
+asynchronous I/O, blocking, channel, event handler, nonblocking, readable,
+script, writable.
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/13
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/filename.n b/src/mann/filename.n
new file mode 100644
index 0000000..518c13a
--- /dev/null
+++ b/src/mann/filename.n
@@ -0,0 +1,362 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: filename.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: filename.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH filename n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+filename \- Tcl 命令支持的文件名转换
+.BE
+.SH INTRODUCTION
+.PP
+所有接受文件名作为参数的 Tcl 命令和 C 过程希望文件名是依赖于当前平台的三种形式之一。在每种平台上,Tcl 都支持这种平台上的标准形式的文件名。额外的,在所有平台上,Tcl 支持一种 Unix 式的语法,提供了一种方便的方式来构造简单的文件名。但是,打算被移植的脚本不要假定特定形式的文件名。可移植的脚本必须使用 \fBfile split\fR 和 \fBfile join\fR 命令来操纵文件名(详见\fBfile\fR 的手册条目)。
+
+
+.SH "路径类型 PATH TYPES"
+.PP
+基于用来指定文件的路径的起点,文件名被组织成三种一般类型: 绝对,相对,相对-卷。绝对名字是完全限定的(qualified),给出的到文件的路径相对于一个特定的卷和在这个卷上的根目录。相对名字是未限定的,给出的到文件的路径相对于当前的工作目录。相对-卷名字是部分限定的,给出的路径要么相对在当前卷上的根目录,要么相对于在指定卷上的当前目录。使用 \fBfile pathtype\fR 命令来确定一个给定路径的类型。
+
+.SH "路径语法 PATH SYNTAX"
+.PP
+本地名字的规则依赖于在 Tcl 数组元素 \fBtcl_platform(platform) \fR中报告的值:
+.TP 10
+\fBmac\fR
+在 Apple Macintosh 系统上,Tcl  支持两种形式的路径名。常规 Mac 式样的名字使用分号作为路径分隔符。路径可以是相对的或绝对的,并且文件名中可以包含除了分号之外的任何字符。一个前导的分号导致路径的剩余部分被解释成相对当前目录。如果一个路径包含一个不在开始处的分号,则路径被解释成一个绝对路径。在路径中任何地方的两个或多个分号的序列被用做构造相对路径,这里的 \fB::\fR 参照当前目录的父目录,\fB:::\fR 参照父目录的父目录,以此类推。
+.RS
+.PP
+除了 Macintosh 式样的名字,Tcl 还支持 Unix 式名字的一个子集。如果一个路径不包含分号,则把它按一个  Unix 路径来解释。使用斜杠作为路径分隔符。文件名 \fB\&.\fR 参照当前目录,而 \fB\&..\fR 参照当前目录的父目录。但是,象 \fB/\fR 或 \fB/..\fR的一些名字没有映射,并被作为 Macintosh 名字解释。一般的,生成文件名的命令返回 Macintosh 式样的名字,而接收文件名的命令接受 Macintosh 和 Unix 式样的两种名字。
+.PP
+下列例子展示不同形式的路径名:
+.TP 15
+\fB:\fR
+到当前文件夹(folder)的相对路径。
+.TP 15
+\fBMyFile\fR
+到在当前文件夹中的叫 \fBMyFile\fR的一个文件的相对路径。
+.TP 15
+\fBMyDisk:MyFile\fR
+到在叫 \fBMyDisk \fR的设备上的一个叫 \fBMyFile\fR 的文件的绝对路径。.
+.TP 15
+\fB:MyDir:MyFile\fR
+到在当前文件夹中的一个叫 \fBMyDir\fR的文件夹中的一个叫 \fBMyFile\fR 的文件的相对路径。
+.TP 15
+\fB::MyFile\fR
+到在当前文件夹的上层文件夹中的一个叫 \fBMyFile\fR 的文件的相对路径。
+.TP 15
+\fB:::MyFile\fR
+到在当前文件夹的上两层文件夹中的一个叫 \fBMyFile\fR 的文件的相对路径。
+.TP 15
+\fB/MyDisk/MyFile\fR
+在叫 \fBMyDisk \fR的设备上的一个叫 \fBMyFile\fR 的文件的绝对路径。
+.TP 15
+\fB\&../MyFile\fR
+到在当前文件夹的上层文件夹中的一个叫 \fBMyFile\fR 的文件的相对路径。
+.RE
+.TP
+\fBunix\fR
+在 Unix 平台上,Tcl 使用的路径名的组成部分由斜杠来分隔。路径名可以是相对的或绝对的,并且文件名可以包含除斜杠之外的任何字符。文件名 \fB\&.\fR 和 \fB\&..\fR  是特殊的并且分别参照当前目录和当前目录的父目录。多个毗接的(adjacent)的斜杠被解释为一个单一的分隔符。下列例子展示不同形式的路径名:
+.RS
+.TP 15
+\fB/\fR
+到根目录的绝对路径。
+.TP 15
+\fB/etc/passwd\fR
+到在根目录中的 \fBetc\fR 目录中的一个叫 \fBpasswd\fR 的文件的绝对路径。
+.TP 15
+\fB\&.\fR
+到当前目录的相对路径。
+.TP 15
+\fBfoo\fR
+Relative path to the file \fBfoo\fR in the current directory.
+.TP 15
+\fBfoo/bar\fR
+到在当前目录中的一个叫 \fBfoo\fR 的文件的相对路径。
+.TP 15
+\fB\&../foo\fR
+到在当前目录中的目录 \fBfoo\fR 目录中的一个叫 \fBbar\fR 的文件的相对路径。
+.RE
+.TP
+\fBwindows\fR
+在 Microsoft Windows 平台上,Tcl 支持相对驱动器和 UNC 式样的名字两者。\fB/\fR 和 \fB\e\fR 二者都可用在两种类型的名字中做分隔符。相对驱动器的名字由可选的驱动器指定符(specifier)和随后的绝对或相对的路径组成。UNC 路径依从 \fB\e\eservername\esharename\epath\efile\fR 的一般形式。在两种形式中,文件名 \fB.\fR 和 \fB..\fR 是特殊的并且分别参照当前目录和当前目录的父目录。下列例子展示不同形式的路径名:
+.RS
+.TP 15
+\fB\&\e\eHost\eshare/file\fR
+到在主机 \fBHost \fR上的导出点 \fBshare\fR 的根目录中的一个叫 \fBfile\fR 的文件的绝对 UNC 路径。
+.TP 15
+\fBc:foo\fR
+到在驱动器 \fBc \fR上的当前目录中的一个叫 \fBfoo\fR 的文件的相对卷的路径。
+.TP 15
+\fBc:/foo\fR
+到在当前卷上的当前目录中 \fBfoo\fR 目录中一个叫 \fBbar\fR 的文件的绝对路径。
+.TP 15
+\fBfoo\ebar\fR
+到在当前卷上的当前目录中 \fBfoo\fR 目录中一个叫 \fBbar\fR 的文件的相对路径。
+.TP 15
+\fB\&\efoo\fR
+到在当前卷的根目录中的一个叫 \fBfoo\fR 的文件的相对卷的路径。
+.RE
+
+.SH "波浪线替换 TILDE SUBSTITUTION"
+.PP
+除了上述文件名规则之外,Tcl 还支持 csh 式样的波浪线替换。如果一个文件名以一个波浪线开始,则按文件名的第一个元素被给定用户的主目录的位置所替换来解释。如果波浪线之后立即跟随着一个分隔符,则用 \fB$HOME\fR 环境变量来替换。否则在波浪线和下一个分隔符之间的的字符被接受为一个用户名,它被用来检索用于替换的用户的主目录。
+.PP
+Macintosh 和 Windows 不支持对波浪线跟随一个用户名的波浪线替换。在这些平台上,使用波浪线并跟随一个用户名的尝试将生成一个错误。有一个波浪线而没有用户名的文件名将象 Unix 一样使用 \fB$HOME\fR 环境变量来替换。
+
+.SH "移植要点 PORTABILITY ISSUES"
+.PP
+注意所有的文件系统都是大小写敏感的,所以脚本应避免依赖于在文件名中的字符大小写的代码。额外的,在不同设备上允许的字符集可能不同,所以脚本脚本应选择不包含特殊字符如 \fB<>:"/\e|\fR 的文件名。最安全的方式是只使用由字母组成的用户名。还有 Windows 3.1 只支持有不多于8个字符的根和不多于3个字符的扩展的文件名。
+
+.SH "关键字 KEYWORDS"
+current directory, absolute file name, relative file name,
+volume-relative file name, portability
+
+.SH "参见 SEE ALSO"
+file(n), glob(n)
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/flush.n b/src/mann/flush.n
new file mode 100644
index 0000000..b0de70b
--- /dev/null
+++ b/src/mann/flush.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: flush.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: flush.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH flush n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+flush \- 为一个通道刷新缓冲的输出。
+.SH "总览 SYNOPSIS"
+\fBflush \fIchannelId\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+刷新为 \fIchannelId \fR缓冲的任何输出。\fIChannelId\fR  必须是一个从以前的 \fBopen\fR 或 \fBsocket\fR   命令返回的通道标识符,并且它必须是为写而打开的。如果这个通道在阻塞模式下,在所有被缓冲的输出被刷新到通道之前,命令不返回。如果通道在非阻塞下,在所有被缓冲的输出被刷新之前命令可以返回;剩余的将在后台刷新, (速度)与底层文件或设备吸收它的速度相同。  
+
+.SH "参见 SEE ALSO"
+file(n), open(n), socket(n)
+
+.SH "关键字 KEYWORDS"
+blocking, buffer, channel, flush, nonblocking, output
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/05
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/focusNext.n b/src/mann/focusNext.n
new file mode 100644
index 0000000..00d6f2c
--- /dev/null
+++ b/src/mann/focusNext.n
@@ -0,0 +1,277 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: focusNext.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: focusNext.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_focusNext n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_focusNext, tk_focusPrev, tk_focusFollowsMouse \- 管理输入聚焦的实用过程
+.SH "总览 SYNOPSIS"
+\fBtk_focusNext \fIwindow\fR
+.sp
+\fBtk_focusPrev \fIwindow\fR
+.sp
+\fBtk_focusFollowsMouse\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBtk_focusNext\fR是用于键盘遍历的一个实用过程。它返回在聚焦次序上在 \fIwindow\fR后面的“下一个”窗口。聚焦次序由窗口的堆栈次序和窗口的层次结构来决定。在兄弟窗口之间,聚焦次序同于堆栈次序,最低的窗口是第一个。如果一个窗口有子窗口,则首先访问这个窗口,随后(递归的)是它的子窗口,随后是它的下一个兄弟窗口。跳过除了 \fIwindow\fR 之外的顶层窗口,所以 \fBtk_focusNext\fR 从不返回与 \fIwindow \fR在不同的顶层窗口中的窗口。
+.PP
+在计算下一个窗口之后,\fBtk_focusNext\fR 检查这个窗口的 \fB-takefocus\fR选项来查看是否跳过它。如果它不接受聚焦,\fBtk_focusNext\fR 继续到在聚焦次序上的下一个窗口上,直到最终找到接受聚焦的一个窗口或回到 \fIwindow\fR。
+.PP
+\fBtk_focusPrev\fR 类似于 \fBtk_focusNext\fR,但返回在聚焦次序上在\fIwindow\fR 紧前面的窗口。
+.PP
+\fBtk_focusFollowsMouse\fR 把这个应用的聚焦模式改变成隐含模式,此时在鼠标下的窗口得到聚焦。在调用这个过程之后,在鼠标进入一个窗口的时候,Tk 将自动给予它输入聚焦。可以使用 \fBfocus\fR 命令来移动光标到不在鼠标下的一个窗口上,但是一旦鼠标移动到一个新窗口上聚焦就会跳到那个窗口上。注意: 现在没有内置的对使应用返回显式的聚焦模式的支持;要这样做你必须写一个删除 \fBtk_focusFollowsMouse\fR 所建立的绑定的脚本。
+
+.SH "关键字 KEYWORDS"
+focus, keyboard traversal, top-level
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/for.n b/src/mann/for.n
new file mode 100644
index 0000000..5824bfc
--- /dev/null
+++ b/src/mann/for.n
@@ -0,0 +1,277 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: for.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: for.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH for n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+for \- ``For'' 循环
+.SH "总览 SYNOPSIS"
+\fBfor \fIstart test next body\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBFor\fR  是一个循环命令,在结构上类似与 C 语言的 \fBfor\fR语句。\fIstart\fR、\fInext\fR、和\fIbody\fR  参数必须是 Tcl 命令串,而 \fItest\fR 是一个表达式串。\fBfor\fR  命令首先调用 Tcl 解释器来执行 \fIstart\fR。接着它重复的把 \fItest\fR作为一个表达式来求值;如果结果是非零则它在 \fIbody \fR上调用 Tcl 解释器,接着在 \fInext \fR上调用 Tcl 解释器,接着重复这个循环。在 \fItest\fR  被求值为 0 的时候命令终止。如果\fIbody\fR  中调用了 \fBcontinue\fR  命令则在 \fIbody\fR  的当前执行中的所有剩余的命令都被跳过;处理继续,在 \fInext \fR上调用 Tcl 解释器,接着对 \fItest \fR求值。 等等. 如果在 \fIbody\fR 或 \fInext \fR中调用 \fBbreak\fR  命令,则 \fBfor\fR  命令将立即返回。\fBbreak\fR  和 [...]
+.PP
+注意: \fItest\fR 应当总是在花括号中包围着。如果不是这样,在 \fBfor\fR  命令开始之前就作了变量替换,这意味着在循环体中做的变量变更在表达式中将不被考虑。将导致一个无限循环。如果 \fItest\fR  被包围在花括号中,变量替换将延迟,直到表达式求值(在每次循环重复之前),所以变量的变更将是可见的。例如,尝试在 \fB$x<10\fR 周围有和没有一对花括号的下列脚本: 
+.CS
+for {set x 0} {$x<10} {incr x} {
+	puts "x is $x"
+}
+.CE
+
+.SH "参见 SEE ALSO"
+break, continue, foreach, while
+
+.SH "关键字 KEYWORDS"
+for, iteration, looping
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/05 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/foreach.n b/src/mann/foreach.n
new file mode 100644
index 0000000..7adfeb8
--- /dev/null
+++ b/src/mann/foreach.n
@@ -0,0 +1,307 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: foreach.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: foreach.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH foreach n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+foreach \- 在一个或多个列表的所有元素上重复
+.SH "总览 SYNOPSIS"
+\fBforeach \fIvarname list body\fR
+.br
+\fBforeach \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBforeach\fR 命令实现一个循环,在这里循环变量从一个或多个列表接受值。在最简单的情况下,这里有一个循环变量 \fIvarname\fR  ,和一个列表 \fIlist\fR,它是要赋给 \fIvarname\fR  的值的一个列表。\fIbody\fR  参数是一个 Tcl 脚本。对于 \fIlist\fR   的每个元素(按从最先到最后的次序),\fBforeach\fR   把这个元素的内容赋给 \fIvarname\fR,如同使用 \fBlindex\fR   命令提取元素一样,接着调用 Tcl 解释器来执行 \fIbody\fR。
+.PP
+在一般的情况下,这里可以有多于一个的值列表(例如,\fIlist1\fR和 \fIlist2\fR),并且每个值列表可以与一个循环变量的列表相关联。(例如,\fIvarlist1\fR 和 \fIvarlist2\fR)。 在循环的每次重复期间每个 \fIvarlist\fR 中的变量被赋与相应的\fIlist \fR中的连续的值。在每 个\fIlist\fR 中的值按从最先到最后的次序被使用,并且每个值被准确的使用一次。循环重复的总数足够的大来用光所有列表的所有的值。如果一个值的列表不包含足够元素,供给每次重复中的每个循环变量,则给遗漏的元素使用空值。
+.PP
+\fBbreak\fR  和 \fBcontinue\fR  语句可以在 \fIbody \fR中调用,与在 \fBfor\fR 命令中有相同的效果。\fBForeach\fR  返回一个空串。
+.SH "范例 EXAMPLES"
+.PP
+下面的循环使用 i 和 j 作为循环变量在一个单一的列表的一对元素上重复。 
+.DS
+set x {}
+foreach {i j} {a b c d e f} {
+    lappend x $j $i
+}
+# The value of x is "b a d c f e"
+# There are 3 iterations of the loop.
+.DE
+.PP
+下一个循环使用 i 和 j 在两个并行的列表上重复。  
+.DS
+set x {}
+foreach i {a b c} j {d e f g} {
+    lappend x $i $j
+}
+# The value of x is "a d b e c f {} g"
+# There are 4 iterations of the loop.
+.DE
+.PP
+在下面例子中组合了两种形式。
+.DS
+set x {}
+foreach i {a b c} {j k} {d e f g} {
+    lappend x $i $j $k
+}
+# The value of x is "a d e b f g c {} {}"
+# There are 3 iterations of the loop.
+.DE
+
+.SH "参见 SEE ALSO"
+for(n), while(n), break(n), continue(n)
+
+.SH "关键字 KEYWORDS"
+foreach, iteration, list, looping
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/05
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/format.n b/src/mann/format.n
new file mode 100644
index 0000000..52d75ab
--- /dev/null
+++ b/src/mann/format.n
@@ -0,0 +1,351 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: format.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: format.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH format n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+format \- 按 sprintf 的式样格式化一个字符串    
+.SH "总览 SYNOPSIS"
+\fBformat \fIformatString \fR?\fIarg arg ...\fR?
+.BE
+
+.SH INTRODUCTION
+.PP
+这个命令按与ANSI C \fBsprintf \fR过程相同的方式生成一个格式化了的字符串(在它的实现中使用了 \fBsprintf\fR)。\fIFormatString\fR      指示如何格式化结果,与 \fBsprintf \fR一样使用      \fB%\fR  转换指定符(specifier),如果有增添的参数,则它们提供要被替换到结果中的值。\fBformat\fR      的返回值是格式化了的字符串。
+
+.SH "格式化细节 DETAILS ON FORMATTING"
+.PP
+命令按从左到右的检索(scan) \fIformatString\fR 的方式操作。除了百分号之外的在格式字符串中的每个字符都要添加到结果字符串上。如果字符是一个 \fB%\fR则它不被复制到结果字符串中。转而,在 \fB%\fR  后面的字符被作为一个转换指定符对待。转换指定符控制把下一个连续的(successive) \fIarg\fR 转换成一个特定的格式,并把结果添加到结果字符串中转换指定符的位置上。如果在格式字符串中有多个转换指定符,则每一个控制一个增添的参数 \fIarg\fR。\fBformat\fR   命令必须给出足够的 \fIarg\fRs 来满足在 \fIformatString \fR中的所有转换指定符的需要。
+.PP
+每个转换指定符可以由六部分组成: 一个 XPG3 位置指定符,一系列标志(flag),一个最小字段宽度,一个精度,一个长度修饰符(modifier),和一个转换字符。除了转换字符之外可以省略这些字段中的任何一个。存在的字段必须按上面给出的次序出现。下面的段落依次讨论所有这些字段。
+.PP
+如果 \fB%\fR    跟随着一个十进制数值和一个 \fB$\fR, 比如“\fB%2$d\fR”,则要转换的值不接受下一个顺序的参数。转而,它接受由这个数字指示的参数,这里 1  对应于第一个 \fIarg\fR。如果因为在指定符中有 \fB*\fR  字符而转换指定符要求多个参数,则使用连续的参数,开始的参数由这个数值给出。这依从 XPG3 定位指定符约定。如果在 \fIformatString\fR      中有任何定位的指定符则所有指定符必须定位。
+.PP
+一个转换指定符的第二部分可以按任意次序包含任何下列的标志字符:    
+.TP 10
+\fB\-\fR
+指定被转换的参数在它的字段中左对齐(数值一般右对齐,如果需要的话,有前导的空格)。  
+.TP 10
+\fB+\fR
+指定输出的数值必须有符号,即使是正数。    
+.TP 10
+\fIspace\fR
+指定如果数值的第一个字符不是一个符号则向数值的开始处添加空格。    
+.TP 10
+\fB0\fR
+指定应当在数值的左侧填充零而不是空格。    
+.TP 10
+\fB#\fR
+要求一中替代的输出形式。对于 \fBo\fR 和 \fBO\fR 转换它保证第一个数字总是 \fB0\fR。对于 \fBx\fR 或 \fBX\fR 转换,除了零之外,在结果的开始处(分别)添加 \fB0x\fR 或 \fB0X\fR。对于所有浮点数转换(\fBe\fR、\fBE\fR、\fBf\fR、\fBg\fR、和 \fBG\fR) 它保证结果总是一个小数点。对于 \fBg\fR 和 \fBG\fR 转换它指定删除尾部的零。    
+.PP
+一个转换指定符的第三部分是给出这个转换的最小字段宽度的一个数字。它典型的被用来按列表的(tabular)输出形式排列(line up)各列(column)。如果被转换的参数包含的字符比这个最小字段宽度少,则填充它来达到这个最小的字段宽度。填充通常是在被转换的参数的左侧添加额外的空格,但是可以使用 \fB0\fR和 \fB-\fR 标志来分别指定在左侧填充零或在右侧填充空格。如果指定最小字段宽度为 \fB*\fR 而不是一个数值,则用给 \fBformat\fR 命令的下一个参数确定最小字段宽度;它必须是一个数值字符串。
+.PP
+一个转换指定符的第四部分是一个精度,它由一个点号和随后的一个数值组成。在不同的转换中按不同的方式使用这个数值。对于 \fBe\fR、\fBE\fR、和 \fBf\fR 转换它指定出现在小数点右侧的数字的位数。对于 \fBg\fR 和 \fBG\fR 转换它指定出现的数字的总数,包括在小数点两侧的数字(但是,除非指定了 \fB#\fR  标志,省略在小数点后面的尾部的零)。对于正数转换,它指定输出的最小的数字位数(如果需要的话添加前导的零)。对于 \fBs\fR  转换它指定输出的最大的字符数;如果字符串比它长则删除尾部的字符。如果用 \fB*\fR  而不是一个数值来指定精度,则用给 \fBformat\fR  命令的下一个参数来确定精度;它必须是一个数值字符串。
+.PP
+一个转换指定符的第五部分是一个长度修饰符,它必须是 \fBh\fR 或 \fBl\fR。如果它是 \fBh\fR  则指定数值值在转换之前必须被截断(truncate)成16位值。这个选项很少有用。忽略 \fBl\fR 修饰符。
+.PP
+一个转换指定符的最后一部分是确定进行那种转换的一个字母字符。当前支持下列转换字符:     
+.TP 10
+\fBd\fR
+把整数转换成有符号的十进制字符串。     
+.TP 10
+\fBu\fR
+把整数转换成无符号的十进制字符串。     
+.TP 10
+\fBi\fR
+把整数转换成有符号的十进制字符串;整数可以是十进制的,八进制的(有一个前导的 \fB0\fR) 或十六进制的(有一个前导的 \fB0x\fR)。    
+.TP 10
+\fBo\fR
+把整数转换成无符号八进制字符串。     
+.TP 10
+\fBx\fR or \fBX\fR
+把整数转换成无符号十六进制字符串,对 \fBx\fR 使用数字“0123456789abcdef”而对 \fBX\fR 使用数字 “0123456789ABCDEF”。  
+.VS
+.TP 10
+\fBc\fR
+把整数转换成它代表的 Unicode 字符。  
+.VE
+.TP 10
+\fBs\fR
+不转换,只是插入字符。     
+.TP 10
+\fBf\fR
+浮点数转换成有符号的 \fIxx.yyy \fR形式的十进制字符串,这里的 \fIy \fR的位数由精度确定(缺省: 6)。如果精度是 0 则不输出小数点。     
+.TP 10
+\fBe\fR or \fBe\fR
+把浮点数转换成 \fIx.yyy\fR\fBe±\fR\fIzz \fR形式的科学记数法,这里的 \fIy \fR的位数由精度确定(缺省: 6)。如果精度是 0 则不输出小数点。如果使用 \fBE\fR  式样则输出 \fBE\fR  而不是 \fBe\fR。     
+.TP 10
+\fBg\fR or \fBG\fR
+如果指数小于 -4 或大于等于精度,则把富点数按 \fB%e\fR 或 \fB%E\fR 来转换。否则按 \fB%f\fR 转换。省略尾部的零和尾部的小数点。     
+.TP 10
+\fB%\fR
+不转换: 只是插入 \fB%\fR。     
+.LP
+数值转换,被转换的参数必须是一个正数或浮点数字符串;format 把参数转换成二进制接着依照转换指定符把它再转换成一个字符串。
+
+.SH "与 ANSI SPRINTF 的区别 DIFFERENCES FROM ANSI SPRINTF"
+.PP
+除了下列区别之外,format 命令的行为与 ANSI C \fBsprintf\fR  过程相同:     
+.IP [1]
+当前不支持 \fB%p\fR 和 \fB%n\fR  指定符。     
+.IP [2]
+对于 \fB%c\fR  转换,参数必须是一个十进制字符串,它将被转换成相应的字符值。    
+.IP [3]
+忽略 \fBl\fR  修饰符;转换整数值总是有如没有修饰符存在,而转换实数值总是有如存在 \fBl\fR  修饰符(例如, 使用类型     \fBdouble\fR  作为内部表示)。如果指定了 \fBh\fR   
+修饰符则在转换前截断整数值。    
+
+.SH "参见 SEE ALSO"
+sprintf(3), string(n)
+
+.SH "关键字 KEYWORDS"
+conversion specifier, format, sprintf, string, substitution
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/29
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/gets.n b/src/mann/gets.n
new file mode 100644
index 0000000..cc0a33f
--- /dev/null
+++ b/src/mann/gets.n
@@ -0,0 +1,272 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: gets.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: gets.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH gets n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+gets \- 从一个通道读一行
+.SH "总览 SYNOPSIS"
+\fBgets \fIchannelId\fR ?\fIvarName\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令从 \fIchannelId \fR读下一行,返回直到(但不包括)行结束字符的行中所有字符,并抛弃行结束字符。如果省略了 \fIvarName\fR,把这一行作为命令的结果返回。如果指定了 \fIvarName\fR ,则把这一行放置到叫这个名字的变量中而返回值是返回的字符总数。
+.PP
+如果在检索行结束的时候遇到了文件结束,命令返回直到文件结束可获得的所有输入。如果 \fIchannelId\fR在非阻塞模式下并且不能获得完整的一行的输入,命令返回一个空串并不消耗任何输入。因为文件结束或因为在非阻塞模式下数据不充足,如果指定了 \fIvarName\fR 并切返回了一个空串,则返回的总数是 -1。注意如果未指定 \fIvarName\fR  则在文件结束和没有可获得的完整的一行的情况下产生的结果与输入行只由一个行结束字符组成同样。使用\fBeof\fR 和 \fBfblocked\fR命令来区别这三种情况。  
+
+.SH "参见 SEE ALSO"
+file(n), eof(n), fblocked(n)
+
+.SH "关键字 KEYWORDS"
+blocking, channel, end of file, end of line, line, nonblocking, read
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/02  
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/glob.n b/src/mann/glob.n
new file mode 100644
index 0000000..aea85b2
--- /dev/null
+++ b/src/mann/glob.n
@@ -0,0 +1,352 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: glob.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: glob.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH glob n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+glob \- 返回匹配模式的文件名
+.SH "总览 SYNOPSIS"
+\fBglob \fR?\fIswitches\fR? \fIpattern \fR?\fIpattern ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令用与 csh shell 类似的方式进行文件名的“通配符匹配”。它返回文件名匹配 \fIpattern\fR (模式)参数中的所有文件的一个列表。
+.LP
+如果给 \fBglob\fR 的初始参数以 \fB\-\fR 开始,则它们将被作为选项来对待。当前支持下列选项开关: 
+.VS 8.3
+.TP
+\fB\-directory\fR \fIdirectory\fR
+在这个给定的 \fIdirectory \fR(目录)中开始查找匹配给定模式的文件。这允许查找名字中包含通配符敏感字符的目录而不需要显式的引用这些字符。这个选项不能与\fB\-path\fR 联合使用。
+.TP
+\fB\-join\fR
+把通过剩余的模式参数用目录分隔符连接起来作为一个单一的模式来对待。  
+.VE 8.3
+.TP
+\fB\-nocomplain\fR
+允许返回一个空列表而不是返回一个错误;要是没有这个开关的话,如果结果列表为空则返回一个错误。
+.VS 8.3
+.TP
+\fB\-path\fR \fIpathPrefix\fR
+查找有给定的 \fIpathPrefix\fR  (路径前缀)的文件,名字中余下的部分匹配给定模式。这个选项允许查找与一个给定文件有类似的名字的文件,包括名字中包含通配符敏感的字符的情况。这个选项不能与\fB-directory\fR 联合使用。
+.TP
+\fB\-types\fR \fItypeList\fR
+只列出匹配 \fItypeList \fR(类型列表)的文件或目录,在这个列表中的元素有两种形式。第一种形式类似 Unix find 命令的 -type 选项:     
+\fIb\fR (块特殊文件 block special file),
+\fIc\fR (字符特殊文件 character special file),
+\fId\fR (目录 directory),
+\fIf\fR (单纯文件 plain file),
+\fIl\fR (符号连接 symbolic link),
+\fIp\fR (命名管道 named pipe),
+or \fIs\fR (套接口 socket), 
+在这个列表中可以指定多个类型。\fBGlob\fR 返回至少匹配一个类型的所有文件。
+.RS
+.PP
+对于第二种形式指定的类型,所有给出的类型都必须匹配。它们是作为文件权限的 \fIr\fR、\fIw\fR、\fIx\fR和作为特殊权限的实例的 \fIreadonly\fR、\fIhidden\fR。在 Macintosh 上,还支持 MacOS 类型和建立者,假定任何四个字符长的项目都是一个 MacOS  类型(例如 \fBTEXT\fR)。有\fI{macintosh type XXXX}\fR 或 \fI{macintosh creator XXXX} \fR形式的项目将分别的匹配类型或建立者。不可识别的类型,或多个 MacOS 类型/建立者指定将导致错误。
+.PP
+以混合两种类型,所以 \fB-types {d f r w}\fR 将找到有读\fB和\fR写权限的正规文件\fB或\fR目录。下列命令等价:    
+.RS
+.CS
+\fBglob \-type d *\fR
+\fBglob */\fR
+.CE
+.RE
+但第一种情况不返回尾部的 ``/'' 并且更加不依赖平台。
+.RE
+.VE 8.3
+.TP
+\fB\-\|\-\fR
+标志着选项的结束。此后的参数即使以 \fB- \fR开始仍将被作为\fIpattern\fR  对待。         
+.PP
+\fIpattern\fR  参数可以包含任意下列特殊字符:  
+.TP 10
+\fB?\fR
+匹配任何单一字符。
+.TP 10
+\fB*\fR
+匹配零个或多个字符的任何序列。
+.TP 10
+\fB[\fIchars\fB]\fR
+匹配在 \fIchars \fR中的任何单一字符。如果 \fIchars\fR 包含 \fIa\fR\fB-\fR\fIb\fR  形式的一个序列则匹配在 \fIa\fR 和 \fIb\fR  之间(包括它们在内)的任何字符。        
+.TP 10
+\fB\e\fIx\fR
+匹配字符 \fIx\fR。
+.TP 10
+\fB{\fIa\fB,\fIb\fB,\fI...\fR}
+匹配字符串 \fIa\fR、\fIb\fR\fI \fR等中的任何一个。  
+.LP
+与 csh 一样, 在一个文件的名字的开始处或紧随“/”之后的那个“.”必须被显式的(explicit)匹配或与一个 {}  构造(construct)相匹配。额外的,所有“/”字符必须显式的匹配。
+.LP
+如果在一个 \fIpattern\fR中的第一个是“~”,则它参照一个用户的主目录,这个用户的名字紧随在“~”之后。如果 “~”的后面紧随着一个“/”,则使用 HOME 环境变量的值。
+.LP
+\fBglob\fR与 csh globbing 在两个方面有区别。首先,它不排序它的结果列表(如果你想排序的话使用 \fBlsort\fR 命令)。其次,\fBglob\fR  只返回实际存在的文件的名字;在 csh  中除非一个模式包含一个 ?、*、或 [] 构造,否则不检查文件是否存在。
+
+.SH "移植要点 PORTABILITY ISSUES"
+.PP
+不象其他 Tcl 命令那样接受网络和本地式样的两种名字(关于如何指定本地和网络名字的详情参见 \fBfilename\fR手册条目),而 \fBglob\fR  命令只接受本地名字。
+
+.TP
+\fBWindows\fR
+.
+对于 Windows UNC 名字,路径组成部分中的服务器名和共享名不能包含?、*、或 [] 构造。在 Windows NT 上,如果 \fIpattern\fR  有 ``\fB~\fIusername\fB@\fIdomain\fR'' 的形式,则它参照一个用户的主目录,这个用户的帐号信息驻留在指定 NT  域控制器上。否则,从本地计算机获取用户帐号信息。在 Windows 95  和 98 上,\fBglob\fR  接受象“.../” 和 “..../”这样的模式,用于连续的更上层的父目录。 
+
+.TP 
+\fBMacintosh\fR 
+. 
+在使用了选项 \fB\-dir\fR、\fB\-join\fR 或 \fB\-path \fR的时候,glob 假定给整个模式的目录分隔符是标准的“:”。在不使用这些选项的时候,glob  检查每个模式参数,除非这个模式包含一个“:”,否则使用“/”。
+
+.SH "参见 SEE ALSO"
+file(n)
+
+.SH "关键字 KEYWORDS"
+exist, file, glob, pattern
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/03
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/global.n b/src/mann/global.n
new file mode 100644
index 0000000..2369c99
--- /dev/null
+++ b/src/mann/global.n
@@ -0,0 +1,274 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: global.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: global.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH global n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+global \- 访问全局变量
+.SH "总览 SYNOPSIS"
+\fBglobal \fIvarname \fR?\fIvarname ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+除非正在解释一个 Tcl 过程否则忽略这个命令。如果正在解释一个 Tcl 过程,则它声明这些给定的 \fIvarname\fR 是全局变量而不是局部变量。全局变量是在全局名字空间中的变量。在这个当前过程的持续期间(duration)(并且只有在当前过程中执行的时候),对 \fIvarname\fR 中任何一个的任何引用都将参照(refer to)叫相同名字的全局变量。
+.PP
+Please note that this is done by creating local variables that are
+linked to the global variables, and therefore that these variables
+will be listed by \fBinfo locals\fR like all other local variables.
+
+.SH "参见 SEE ALSO"
+namespace(n), upvar(n), variable(n)
+
+.SH "关键字 KEYWORDS"
+global, namespace, procedure, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/02
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/history.n b/src/mann/history.n
new file mode 100644
index 0000000..6ad646e
--- /dev/null
+++ b/src/mann/history.n
@@ -0,0 +1,306 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: history.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: history.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH history n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+history \- 操纵历史列表
+.SH 总览 SYNOPSIS
+\fBhistory \fR?\fIoption\fR? ?\fIarg arg ...\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+\fBhistory\fR 命令完成与记录在一个历史列表中的最近执行过的命令有关的一些操作中的一个。每个记录的命令被作为一个“事件”来参照。使用下列形式给 \fBhistory\fR 命令指定的一个事件:
+.IP [1]
+一个数: 如果是正数,它用这个数来参照事件(所有事件多被从 1 开始计数)。如果是负数,它选择相对当前事件的一个事件(\fB\-1\fR 参照上一个事件,\fB\-2\fR 参照大上一个,以此类推)。事件 \fB0\fP 参照当前事件。
+.IP [2]
+一个字符串: 选择匹配这个字符串的最新近的事件。在两种情况下一个事件被考虑为匹配这个字符串,要么这个字符串与这个命令的最前面的字符相同,要么这个字符串以与 \fBstring match\fR 命令相同的方式匹配这个事件。
+.PP
+\fBhistory\fR 命令接受所有下列形式:
+.TP
+\fBhistory\fR
+同于下面描述的 \fBhistory info\fR。
+.TP
+\fBhistory add\fI command \fR?\fBexec\fR?
+把 \fIcommand\fR 参数作为一个新事件添加到历史列表中。如果指定了 \fBexec\fR(或其缩写) 则还执行这个命令并返回它的结果。如果没有指定 \fBexec\fR 则返回一个空串作为结果。
+.TP
+\fBhistory change\fI newValue\fR ?\fIevent\fR?
+把给一个事件记录的值替代(replace)为 \fInewValue\fR。 \fIEvent\fR 指定要替代的事件,缺省为当前 (\fIcurrent\fR) 事件(不是事件 \fB\-1\fR)。这个命令用在实现新形式的历史替换(substitution)的命令中,和用在想用通过替换建立的命令替代当前事件(调用这个替换的事件)的命令中。 返回值是一个空串。
+.TP
+\fBhistory clear\fR
+删除历史列表。保持当前保留限制。重置历史事件数。
+.TP
+\fBhistory event\fR ?\fIevent\fR?
+返回由 \fIevent\fR 给出的事件的值。 \fIEvent\fR 缺省为 \fB\-1\fR。
+.TP
+\fBhistory info \fR?\fIcount\fR?
+返回一个格式化了字符串(用于人们阅读),它给出在历史列表中除了当前事件之外的每个事件的事件号和内容。如果指定了 \fIcount\fR,则只返回新近的 \fIcount\fR 个事件。
+.TP
+\fBhistory keep \fR?\fIcount\fR?
+使用这个命令来变更历史列表的大小为 \fIcount\fR 个事件。最初,在历史列表中保留 20 个事件。如果未指定 \fIcount\fR ,则返回当前的保留限制。
+.TP
+\fBhistory nextid\fR
+返回要记录在历史记录中的下一个事件的号码。这对象在命令行提示符下输出事件号这样的事有用。
+.TP
+\fBhistory redo \fR?\fIevent\fR?
+重新执行由 \fIevent\fR 指示的命令并返回它的结果。\fIEvent\fR 缺省为 \fB\-1\fR。这个命令导致历史修订: 详情见下面的段落。
+
+.SH "历史修订 HISTORY REVISION"
+.PP
+8.0 之前 的 Tcl 有一个复杂的历史修订机制。当前的机制受到了更多的限制,并且去除了老的历史操作 \fBsubstitute\fP  和 \fBwords\fP 。(作为安慰,添加了 \fBclear\fP 操作。)
+.PP
+历史选项 \fBredo\fR 导致非常简单的“历史修订”。在调用这个选项的时候,修改最新近的事件来淘汰历史命令(的记录)并用历史命令的结果替换它。如果你打算重做一个事件而不修改历史列表,则使用 \fBevent\fP 操作来检索某些事件,并使用 \fBadd\fP 操作来向历史列表添加它并执行它。
+
+.SH 关键字 KEYWORDS
+event, history, record
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/03
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/html.n b/src/mann/html.n
new file mode 100644
index 0000000..9ce258f
--- /dev/null
+++ b/src/mann/html.n
@@ -0,0 +1,323 @@
+'\" -*- tcl -*- doctools manpage
+'\"
+'\" Generated from ./modules/html/html.man by mpexpand with fmt.nroff
+'\"
+.so man.macros
+.TH "html" n 1.2.1 html "HTML Generation"
+.BS
+.SH NAME
+html \- 产生 HTML 框架的子程序
+.SH "总览 SYNOPSIS"
+package require \fBTcl 8.2\fR
+.sp
+package require \fBhtml ?1.2.1?\fR
+.sp
+\fB::html::author\fR \fIauthor\fR\fR
+.sp
+\fB::html::bodyTag\fR \fIargs\fR\fR
+.sp
+\fB::html::cell\fR \fIparam value\fR ?\fItag\fR?\fR
+.sp
+\fB::html::checkbox\fR \fIname value\fR\fR
+.sp
+\fB::html::checkSet\fR \fIkey sep list\fR\fR
+.sp
+\fB::html::checkValue\fR \fIname\fR ?\fIvalue\fR?\fR
+.sp
+\fB::html::closeTag\fR \fR
+.sp
+\fB::html::default\fR \fIkey\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::description\fR \fIdescription\fR\fR
+.sp
+\fB::html::end\fR \fR
+.sp
+\fB::html::eval\fR \fIarg\fR ?\fIargs\fR?\fR
+.sp
+\fB::html::extractParam\fR \fIparam key\fR ?\fIvarName\fR?\fR
+.sp
+\fB::html::font\fR \fIargs\fR\fR
+.sp
+\fB::html::for\fR \fIstart test next body\fR\fR
+.sp
+\fB::html::foreach\fR \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR\fR
+.sp
+\fB::html::formValue\fR \fIname\fR ?\fIdefvalue\fR?\fR
+.sp
+\fB::html::getFormInfo\fR \fIargs\fR\fR
+.sp
+\fB::html::getTitle\fR \fR
+.sp
+\fB::html::h\fR \fIlevel string\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h1\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h2\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h3\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h4\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h5\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::h6\fR \fIstring\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::hdrRow\fR \fIargs\fR\fR
+.sp
+\fB::html::head\fR \fItitle\fR\fR
+.sp
+\fB::html::headTag\fR \fIstring\fR\fR
+.sp
+\fB::html::if\fR \fIexpr1 body1\fR ?\fBelseif\fR \fIexpr2 body2 ...\fR? ?\fBelse\fR \fIbodyN\fR?\fR
+.sp
+\fB::html::keywords\fR \fIargs\fR\fR
+.sp
+\fB::html::mailto\fR \fIemail\fR ?\fIsubject\fR?\fR
+.sp
+\fB::html::meta\fR \fIargs\fR\fR
+.sp
+\fB::html::minorMenu\fR \fIlist\fR ?\fIsep\fR?\fR
+.sp
+\fB::html::minorList\fR \fIlist\fR ?\fIordered\fR?\fR
+.sp
+\fB::html::openTag\fR \fItag args\fR\fR
+.sp
+\fB::html::passwordInput\fR ?\fIname\fR?\fR
+.sp
+\fB::html::passwordInputRow\fR \fIlabel\fR ?\fIname\fR?\fR
+.sp
+\fB::html::quoteFormValue\fR \fIvalue\fR\fR
+.sp
+\fB::html::radioSet\fR \fIkey sep list\fR\fR
+.sp
+\fB::html::radioValue\fR \fIname value\fR\fR
+.sp
+\fB::html::refresh\fR \fIseconds url\fR\fR
+.sp
+\fB::html::init\fR ?\fIlist\fR?\fR
+.sp
+\fB::html::row\fR \fIargs\fR\fR
+.sp
+\fB::html::paramRow\fR \fIlist\fR ?\fIrparam\fR? ?\fIcparam\fR?\fR
+.sp
+\fB::html::select\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+.sp
+\fB::html::selectPlain\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+.sp
+\fB::html::submit\fR \fIlabel\fR ?\fIname\fR?\fR
+.sp
+\fB::html::set\fR \fIvar val\fR\fR
+.sp
+\fB::html::tableFromArray\fR \fIarrname\fR ?\fIparam\fR? ?\fIpat\fR?\fR
+.sp
+\fB::html::tableFromList\fR \fIquerylist\fR ?\fIparam\fR?\fR
+.sp
+\fB::html::textarea\fR \fIname\fR ?\fIparam\fR? ?\fIcurrent\fR?\fR
+.sp
+\fB::html::textInput\fR \fIname args\fR\fR
+.sp
+\fB::html::textInputRow\fR \fIlabel name args\fR\fR
+.sp
+\fB::html::title\fR \fItitle\fR\fR
+.sp
+\fB::html::varEmpty\fR \fIname\fR\fR
+.sp
+\fB::html::while\fR \fItest body\fR\fR
+.sp
+.BE
+.SH "描述 DESCRIPTION"
+.PP
+\fBhtml\fR 包提供了产生 HTML 的命令。这些命令一般返回 HTML 字符串作为结果。特殊的是,它们不向 \fBstdout\fR 输出结果。
+.PP
+\fB::html::init\fR 命令应当最早调用,从而初始化整个模块。也可以使用这个子程序来定义 HTML 标记参数的默认值。
+.TP
+\fB::html::author\fR \fIauthor\fR\fR
+\fBSide effect only\fR.  在调用 \fB::html::head\fR 之前调用它,来定义页面的作者。作者以 HEAD 段中的注释形式给出。
+.TP
+\fB::html::bodyTag\fR \fIargs\fR\fR
+产生一个 BODY 标签。标签参数来自 \fIargs\fR 或是在 \fB::html::init\fR 中定义的 body.* 属性。
+.TP
+\fB::html::cell\fR \fIparam value\fR ?\fItag\fR?\fR
+产生一个 TD (或 TH) 标签,一个值,和一个关闭 TD (或 TH) 标签。标签参数来自\fIparam\fR 或是在 \fB::html::init\fR 中定义的 TD.* 属性。它使用 \fB::html::font\fR 来在表格单元中插入一个标准的 FONT 标签。 \fItag\fR 参数默认是 "td".
+.TP
+\fB::html::checkbox\fR \fIname value\fR\fR
+产生一个 CHECKBOX 表单元素,使用指定的名称和值。这使用了 \fB::html::checkValue\fR.
+.TP
+\fB::html::checkSet\fR \fIkey sep list\fR\fR
+产生一个 CHECKBOX 表单元素和相关标签的集合。\fIlist\fR 应当包含一个可选标签和值的列表。这使用了 \fB::html::checkbox\fR.
+.TP
+\fB::html::checkValue\fR \fIname\fR ?\fIvalue\fR?\fR
+为一个 CHECKBOX 表单元素产生一个 "name=\fIname\fR value=\fIvalue\fR" . 如果 CGI 变量 \fIname\fR
+的值是 \fIvalue\fR,那么 SELECTED 将加入到返回值中。\fIvalue\fR 默认值是 "1".
+.TP
+\fB::html::closeTag\fR \fR
+从 \fB::html::openTag\fR 创建的栈中弹出一个标签,产生相应的关闭标签 (例如,/BODY)。
+.TP
+\fB::html::default\fR \fIkey\fR ?\fIparam\fR?\fR
+这个子程序由 \fB::html::tagParam\fR 用来产生标签的参数名称和值列表。\fB::html::default\fR 子程序用来为那些不在 \fIparam\fR 中的项目产生默认值。如果 \fIkey\fR 代表的值匹配 \fIparam\fR 中的一个值,那么这个子程序返回孔字符串。否则,它为 \fIkey\fR 代表的表单元素返回一个 "parameter=value" 字符串。\fIkey\fR 的形式是 "tag.parameter" (例如,body.bgcolor)。使用 \fB::html::init\fR 来注册默认值。\fIparam\fR 默认是空字符串。
+.TP
+\fB::html::description\fR \fIdescription\fR\fR
+\fBSide effect only\fR.  在调用 \fB::html::head\fR 前调用它来为页面定义一个 META 标签。这个标签在随后调用  \fB::html::head\fR 时产生。
+.TP
+\fB::html::end\fR \fR
+从栈中弹出所有开标签,产生相应的关闭标签 (例如,</body></html>)。
+.TP
+\fB::html::eval\fR \fIarg\fR ?\fIargs\fR?\fR
+这个子程序类似于内置的 Tcl \fBeval\fR 命令,唯一的区别是它返回 "", 因此可以在一个 HTML 模板文件中调用,不会添加不需要的结果。
+.TP
+\fB::html::extractParam\fR \fIparam key\fR ?\fIvarName\fR?\fR
+这是一个解释程序,从 \fIparam\fR ,一个 HTML 式样的 "name=quotedvalue" 列表中得到所有 \fIkey\fR 的值。\fIvarName\fR 用作一个 Tcl 变量名,赋以参数中找到的值。这个函数返回 1,如果 \fIparam\fR 中找到了参数,否则返回 0。如果没有指定 \fIvarName\fR ,将使用 \fIkey\fR 作为变量名。
+.TP
+\fB::html::font\fR \fIargs\fR\fR
+产生一个标准的 FONT 标签。标签的参数来自 \fIargs\fR 和 \fB::html::init\fR 定义的 HTML 默认值。
+.TP
+\fB::html::for\fR \fIstart test next body\fR\fR
+这个子程序与内置的 Tcl \fBfor\fR 控制结构相似。但它返回联接的 (subst'ed) \fIbody\fR 而不是去计算 body 的值。循环的每一次都会在返回值中联接另外一个字符串。
+.TP
+\fB::html::foreach\fR \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR\fR
+这个子程序与内置的 Tcl \fBforeach\fR 控制结构相似。但它返回联接的 \fIbody\fR 而不是去计算 body 的值。循环的每一次都会将另外一个字符串联接到返回值中。
+.TP
+\fB::html::formValue\fR \fIname\fR ?\fIdefvalue\fR?\fR
+返回一个名称-值对,使用现有的 CGI 数据来初始化值。结果有以下形式:
+.sp
+.nf
+  name="fred" value="freds value"
+.fi
+.TP
+\fB::html::getFormInfo\fR \fIargs\fR\fR
+产生隐藏的字段来捕获表单值。如果 \fIargs\fR 是空,那么为所有 CGI 值创建隐藏字段。否则 \fIargs\fR 是一个匹配表单元素名称的字符串模式的列表。
+.TP
+\fB::html::getTitle\fR \fR
+返回 title 字符串,没有包围的 TITLE 标签。title 以一个先前调用的 \fB::html::title\fR 定义。
+.TP
+\fB::html::h\fR \fIlevel string\fR ?\fIparam\fR?\fR
+产生一个标题 (例如, H1) 标签。\fIstring\fR 嵌于标题中,\fIparam\fR 用作标签参数。
+.TP
+\fB::html::h1\fR \fIstring\fR ?\fIparam\fR?\fR
+产生一个 H1 标签。参见 \fB::html::h\fR.
+.TP
+\fB::html::h2\fR \fIstring\fR ?\fIparam\fR?\fR
+产生一个 H2 标签。参见 \fB::html::h\fR.
+.TP
+\fB::html::h3\fR \fIstring\fR ?\fIparam\fR?\fR
+产生一个 H3 标签。参见 \fB::html::h\fR.
+.TP
+\fB::html::h4\fR \fIstring\fR ?\fIparam\fR?\fR
+产生一个 H4 标签。参见 \fB::html::h\fR.
+.TP
+\fB::html::h5\fR \fIstring\fR ?\fIparam\fR?\fR
+产生一个 H5 标签。参见 \fB::html::h\fR.
+.TP
+\fB::html::h6\fR \fIstring\fR ?\fIparam\fR?\fR
+产生一个 H6 标签。参见 \fB::html::h\fR.
+.TP
+\fB::html::hdrRow\fR \fIargs\fR\fR
+产生一个表格行,包含 TR 和 TH 标签。\fIargs\fR 中的每个值都置入自己的表格单元中。这使用了 \fB::html::cell\fR.
+.TP
+\fB::html::head\fR \fItitle\fR\fR
+产生一个 HEAD 段,包含页面的 TITLE。如果先前调用了
+\fB::html::author\fR,
+\fB::html::keywords\fR,
+\fB::html::description\fR,
+或
+\fB::html::meta\fR
+那么附加的标签将插入到 HEAD 段中。它使用 \fB::html::openTag\fR 将一个开 HTML 标签入栈.
+.TP
+\fB::html::headTag\fR \fIstring\fR\fR
+保存一个包含于 \fB::html::head\fR 产生的 HEAD 段中的标签。\fIstring\fR 是一个标签中除了尖括号之外的所有东西。
+.TP
+\fB::html::if\fR \fIexpr1 body1\fR ?\fBelseif\fR \fIexpr2 body2 ...\fR? ?\fBelse\fR \fIbodyN\fR?\fR
+这个子程序与内置的 Tcl \fBif\fR 控制结构相似。但它返回联接的 \fIbody\fR 而不是去计算它每个分支 body 的值。注意这个语法与内置的 Tcl \fBif\fR 控制结构相比稍有限制。
+.TP
+\fB::html::keywords\fR \fIargs\fR\fR
+\fBSide effect only\fR.  在调用 \fB::html::head\fR 之前调用它来定义一个页面的关键字 META 标签。在 \fB::html::head\fR 结果中将包含这个 META 标签。
+.TP
+\fB::html::mailto\fR \fIemail\fR ?\fIsubject\fR?\fR
+产生一个到 mailto: URL 的超链接。
+.TP
+\fB::html::meta\fR \fIargs\fR\fR
+\fBSide effect only\fR.  在调用 \fB::html::head\fR 之前调用它来定义一个页面的 META 标签。  \fIargs\fR 是一个 Tcl 样式的名称和值列表,用作 META 标签的 name= 和 value= 参数。在 \fB::html::head\fR 结果中将包含这个 META 标签。
+.TP
+\fB::html::minorMenu\fR \fIlist\fR ?\fIsep\fR?\fR
+产生一系列超链接。\fIlist\fR 是一个 Tcl 样式的名称和值列表,内容是链接的标签和地址。\fIsep\fR 是分隔每个链接的文本,默认是 " | ".
+.TP
+\fB::html::minorList\fR \fIlist\fR ?\fIordered\fR?\fR
+产生一个排序的或未排序的链接列表。\fIlist\fR 是一个 Tcl 样式的名称和值列表,内容是链接的标签和地址。\fIordered\fR 是一个布尔值,用来选择有序表或无序表,默认是 \fBfalse\fR.
+.TP
+\fB::html::openTag\fR \fItag args\fR\fR
+将 \fItag\fR 入栈,为它产生一个开标签。使用 \fB::html::closeTag\fR 来从栈中弹出标签。
+.TP
+\fB::html::passwordInput\fR ?\fIname\fR?\fR
+产生一个 PASSWORD 类型的 INPUT 标签。 \fIname\fR 默认为 "password".
+.TP
+\fB::html::passwordInputRow\fR \fIlabel\fR ?\fIname\fR?\fR
+格式化一个包含一个标签和一个 PASSWORD 类型的 INPUT 标签的表格行。\fIname\fR 默认为 "password".
+.TP
+\fB::html::quoteFormValue\fR \fIvalue\fR\fR
+使用 HTML 实体 (quotes, ampersand, and angle brackets.) 来替换 \fIvalue\fR 中的特殊字符,从而可以引用它们。
+.TP
+\fB::html::radioSet\fR \fIkey sep list\fR\fR
+产生一个 RADIO 类型的 INPUT 标签集合以及一个相关的文本标签。所有单选按钮共享同样的 \fIkey\fR 作为它们的名字。\fIsep\fR 是用来分隔各元素的文本。\fIlist\fR 是一个 Tcl 风格的标签,值列表。
+.TP
+\fB::html::radioValue\fR \fIname value\fR\fR
+为一个 RADIO 表单元素产生一个 "name=\fIname\fR value=\fIvalue\fR" .如果 CGI 变量 \fIname\fR 值为 \fIvalue\fR, 那么 SELECTED 将被加入返回值中。
+.TP
+\fB::html::refresh\fR \fIseconds url\fR\fR
+建立一个刷新 META 标签。在调用 \fB::html::head\fR 之前调用它,HEAD 段中将包含一个 META 标签使得页面每 \fIseconds\fR 刷新一次。 \fIurl\fR 是可选的,如果指定的话它指定了刷新间隔之后读取的新页面。
+.TP
+\fB::html::init\fR ?\fIlist\fR?\fR
+\fB::html::init\fR 接受一个 Tcl 样式的 name-value 列表,定义了名称是 "tag.parameter" 形式的对象的值。例如, "body.bgcolor" 默认将为 BODY 标签定义背景色。
+.TP
+\fB::html::row\fR \fIargs\fR\fR
+产生一个表格行,包含 TR 和 TD 标签。\fIargs\fR 的每个值都置入各自的表格单元中。它使用了 \fB::html::cell\fR.
+.TP
+\fB::html::paramRow\fR \fIlist\fR ?\fIrparam\fR? ?\fIcparam\fR?\fR
+产生一个表格行,包含 TR 和 TD 标签。\fIargs\fR 的每个值都置入各自的表格单元中。它使用了 \fB::html::cell\fR.  \fIrparam\fR  用作 TR 标签的参数,\fIcparam\fR  的值被传给 \fB::html::cell\fR,作为 TD 标签的参数。
+.TP
+\fB::html::select\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+产生一个 SELECT 表单元素以及内置的 OPTION 标签。 \fIname\fR 和 \fIparam\fR 用来产生 SELECT 标签。 \fIchoices\fR 列表是一个 Tcl 样式的 name-value 列表。
+.TP
+\fB::html::selectPlain\fR \fIname param choices\fR ?\fIcurrent\fR?\fR
+类似 \fB::html::select\fR 但 \fIchoices\fR 是一个 Tcl 值的列表,用于 OPTION 标签。每个 OPTION 的标签和值是相同的。
+.TP
+\fB::html::submit\fR \fIlabel\fR ?\fIname\fR?\fR
+产生一个 SUBMIT 类型的 INPUT 标签。 \fIname\fR 默认是 "submit".
+.TP
+\fB::html::set\fR \fIvar val\fR\fR
+这个子程序与内置的 Tcl \fBset\fR 控制结构相似。主要区别是它返回 "" 因此可以在一个 HTML 模板文件中调用,不会产生奇怪的结果。另外的区别是它需要两个参数。
+.TP
+\fB::html::tableFromArray\fR \fIarrname\fR ?\fIparam\fR? ?\fIpat\fR?\fR
+产生一个 TABLE 和内置的行,来显示一个 Tcl 数组。\fIparam\fR 是为 TABLE 标签准备的。\fIpat\fR 是一个 \fBstring match\fR 模式,用来选择数组元素,默认是 "*".
+.TP
+\fB::html::tableFromList\fR \fIquerylist\fR ?\fIparam\fR?\fR
+产生一个 TABLE 和内置的行来显示 \fIquerylist\fR, 一个 Tcl 样式的名称和值列表。\fIparam\fR 是为 TABLE 标签设置的。
+.TP
+\fB::html::textarea\fR \fIname\fR ?\fIparam\fR? ?\fIcurrent\fR?\fR
+产生一个 TEXTAREA 标签,包围 (wrapped) 在它的当前值
+.TP
+\fB::html::textInput\fR \fIname args\fR\fR
+产生一个 TEXT 类型的 INPUT 表单标签。这使用了 \fB::html::formValue\fR.  参数是你想在 INPUT 标签中添加的任何附加标签属性。
+.TP
+\fB::html::textInputRow\fR \fIlabel name args\fR\fR
+产生一个 TEXT 类型的 INPUT 标签,和一个相关标签一起格式化到一个表格行中。参数是你想在 INPUT 标签中添加的任何附加标签属性。
+.TP
+\fB::html::title\fR \fItitle\fR\fR
+\fBSide effect only\fR. 在调用 \fB::html::head\fR 调用它来定义页面的 TITLE。
+.TP
+\fB::html::varEmpty\fR \fIname\fR\fR
+如果指定名称的变量不存在或者为空值则返回 1 。
+.TP
+\fB::html::while\fR \fItest body\fR\fR
+这个子程序类似于内置的 Tcl \fBwhile\fR 空值结构。但它返回联接的 \fIbody\fR 而不是计算 body。循环的每一次都将另一个字符串联接到返回值中。
+
+.SH "参见 SEE ALSO"
+ncgi, htmlparse
+.SH "关键字 KEYWORDS"
+html, form, table, checkbox, radiobutton, checkbutton
+
+.SH "[中文版维护人]"
+.B 袁乙钧
+.SH "[中文版最新更新]"
+.B 2003/11/10
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/if.n b/src/mann/if.n
new file mode 100644
index 0000000..cde5c55
--- /dev/null
+++ b/src/mann/if.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: if.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: if.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH if n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+if \- 有条件的执行脚本
+.SH "总览 SYNOPSIS"
+\fBif \fIexpr1 \fR?\fBthen\fR? \fIbody1 \fBelseif \fIexpr2 \fR?\fBthen\fR? \fIbody2\fR \fBelseif\fR ... ?\fBelse\fR? ?\fIbodyN\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fIif\fR  命令把 \fIexpr1\fR  作为一个表达式来求值(用与 \fBexpr\fR 求值它的参数相同的方式)。这个表达式的值必须式一个 boolean  值(一个数值值,这里 0 是假而任何其他数值都是真;或者是一个字符串值,比如 \fBtrue\fR 或 \fByes\fR  是真而 \fBfalse\fR 或 \fBno\fR  是假);如果它是真通过把 \fIbody1\fR  传递给 Tcl 解释器来执行它。否则把 \fIexpr2\fR  作为一个表达式来求值并且如果它是真则执行 \fIbody2\fR,以此类推。如果没有表达式被求值为真则执行 \fIbodyN\fR 。\fBthen\fR 和 \fBelse\fR  是可选的“噪音词”用来使命令易读。可以有任意数目的 \fBelseif\fR  子句,包括零个。\fIBodyN\fR  与 \fBelse\fR   可同时省略。命令的返回值是被执行的那个脚本的返回值,如果没有表达式是非零并且没有 \fIbodyN\fR  则返回空串。 
+
+.SH "参见 SEE ALSO"
+expr(n), for(n), foreach(n)
+
+.SH "关键字 KEYWORDS"
+boolean, conditional, else, false, if, true
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/02
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/incr.n b/src/mann/incr.n
new file mode 100644
index 0000000..ea24b41
--- /dev/null
+++ b/src/mann/incr.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: incr.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: incr.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH incr n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+incr \- 增加一个变量的值
+.SH "总览 SYNOPSIS"
+\fBincr \fIvarName \fR?\fIincrement\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+增加存储在叫 \fIvarName \fR的变量中的值。变量的值必须是一个整数。如果提供了 \fIincrement\fR 则向 \fIvarName\fR 变量的值加上它的值(必须是个整数);否则向 \fIvarName\fR 加 1。新值被作为一个十进制字符串存储在变量 \fIvarName\fR  中并被作为结果返回。
+
+.SH "参见 SEE ALSO"
+expr(n)
+
+.SH "关键字 KEYWORDS"
+add, increment, variable, value
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/02
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/info.n b/src/mann/info.n
new file mode 100644
index 0000000..4ff58d1
--- /dev/null
+++ b/src/mann/info.n
@@ -0,0 +1,328 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: info.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: info.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH info n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+info \- 返回关于 Tcl 解释器状态的信息
+.SH "总览 SYNOPSIS"
+\fBinfo \fIoption \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令提供关于 Tcl 解释器的各种内部信息。合法的\fIoption\fR (可以是缩写)有: 
+.TP
+\fBinfo args \fIprocname\fR
+返回一个列表,依次包含给过程\fIprocname \fR的参数们的名字。\fIProcname\fR   必须是一个 Tcl 命令的名字。
+.TP
+\fBinfo body \fIprocname\fR
+返回过程 \fIprocname\fR 的过程体。\fIProcname\fR   必须是一个Tcl 命令的名字。
+.TP
+\fBinfo cmdcount\fR
+返回在这个解释器中已经被调用的命令的总数的统计。     
+.TP
+\fBinfo commands \fR?\fIpattern\fR?
+如果未指定 \fIpattern\fR  ,返回在当前名字空间中所有 Tcl 命令的名字的一个列表,包括用 C 写成的内置命令和使用 \fBproc\fR命令定义的命令过程。如果指定了 \fIpattern\fR,只返回匹配 \fIpattern\fR 的那些名字。使用与 \fBstring match\fR相同的规则确定匹配。\fIpattern\fR  可以是象 \fBFoo::print*\fR\fB \fR这样的一个限定的(qualified)名字。这样,可以使用由 \fB::\fR\fB\fR分隔的名字空间的名字序列来指定一个特定的名字空间,并可以用匹配后面特定字符的模式来指定在这个名字空间中的一系列命令。如果是 \fIpattern\fR是一个限定的名字,命令名字的结果列表中的每个元素都被指定名字空间的名字所限定。
+.TP
+\fBinfo complete \fIcommand\fR
+如果 \fIcommand\fR 是一个完整的 Tcl 命令则返回 1,完整的意思是没有不闭合的引号、花括号、方括号或数组元素名,如果命令表现为不完整则返回 0。典型的,这个命令在面向行的输入环境中被用来允许用户键入分开(span)成多行的命令;如果命令不完整,脚本可以延期求值,直到键入增补的行完成这个命令。    
+.TP
+\fBinfo default \fIprocname arg varname\fR
+\fIProcname\fR  必须是一个 Tcl 命令过程的名字而 \fIarg\fR 必须是给这个过程的一个参数的名字。如果 \fIarg\fR 没有缺省值则命令返回 \fB0\fR。否则它返回 \fB1\fR  并把这个缺省值放置到变量 \fIvarname\fR 中。
+.TP
+\fBinfo exists \fIvarName\fR
+如果在当前上下文中存在叫 \fIvarName\fR  的变量(可以是一个全局变量或局部变量),并已经通过给它一个值而被定义则返回 \fB1\fR,否则返回 \fB0\fR
+.TP
+\fBinfo globals \fR?\fIpattern\fR?
+如果未指定 \fIpattern\fR ,返回所有当前定义的全局变量的名字的一个列表。全局变量是在全局名字空间中的变量。如果指定了 \fIpattern\fR ,只返回匹配 \fIpattern\fR 的那些名字。使用与 \fBstring match \fR相同的规则确定匹配。
+.TP
+\fBinfo hostname\fR
+返回在其上执行这个调用的那个计算机的名字。
+.TP
+\fBinfo level\fR ?\fInumber\fR?
+如果未指定 \fInumber\fR,这个命令返回给出调用过程的栈层次的一个数,如果在顶层调用这个名字则返回 0。如果指定了 \fInumber\fR ,则结果是由在栈上 \fInumber\fR 层调用的过程的名字和值组成的一个列表。如果 \fInumber\fR  是正数则选择的是一个特定的栈层次(1 参照最顶层活跃过程,2 是它调用的过程,以此类推);否则给出的是相对当前层次的一个相对层次(0 参照当前过程,-1 是它的调用者,以此类推)。关于栈层次的详细信息参见 \fBuplevel\fR 命令。
+.TP
+\fBinfo library\fR
+返回在其中存储标准 Tcl 脚本的库目录的名字。这实际上是 \fBtcl_library\fR 变量的值并可通过设置 \fBtcl_library \fR来变更。详情参见 \fBtclvars\fR 手册条目。
+.TP
+\fBinfo loaded \fR?\fIinterp\fR?
+返回描述用 \fBload\fR  命令装载到 \fIinterp\fR  中的所有包的一个列表。每个列表元素都是有两元素的一个子列表,它们是从其中装载包的文件的名字和包的名字。对于静态装载包这个文件名字是一个空串。如果省略了 \fIinterp\fR  则返回在进程中所有的解释器中装载的包的信息。要得到当前解释器中的包的一个列表,指定 \fIinterp\fR参数为一个空串。
+.TP
+\fBinfo locals \fR?\fIpattern\fR?
+如果未指定 \fIpattern\fR,返回所有当前定义的局部变量名字的一个列表,包括给当前过程的参数。 用 \fBglobal\fR 和 \fBupvar\fR命令定义的参数将不返回。如果指定了 \fIpattern\fR ,只返回匹配 \fIpattern\fR 的那些名字。使用与 \fBstring match \fR相同的规则确定匹配。 
+.TP
+\fBinfo nameofexecutable\fR
+返回完整的二进制文件的路径名,从这个文件中调用了应用(程序)。如果Tcl 不能标识这个文件,则返回一个空串。
+.TP
+\fBinfo patchlevel\fR
+返回全局变量 \fBtcl_patchLevel\fR\fB \fR的值;详情参见 \fBtclvars\fR 手册条目。
+.TP
+\fBinfo procs \fR?\fIpattern\fR?
+如果未指定 \fIpattern\fR  ,返回在当前的名字空间中的所有 Tcl 命令过程的名字的一个列表。如果指定了 \fIpattern\fR,在返回在当前名字空间中匹配 \fIpattern\fR 的过程名字。使用与 \fBstring match \fR相同的规则确定匹配。
+.TP
+\fBinfo script\fR
+如果当前正在求值一个 Tcl 脚本文件(例如,有一个 \fBTcl_EvalFile\fR 调用处于活跃或有一个对 \fBsource\fR 命令的活跃调用),则这个命令返回被处理的最内部(innermost)文件的名字。否则这个命令返回一个空串。 
+.TP
+\fBinfo sharedlibextension\fR
+返回在这个平台上包含共享库的文件使用的扩展名(例如,在Solaris 下是 \fB.so\fR)。如果在这个平台上不支持共享库则返回一个空串。
+.TP
+\fBinfo tclversion\fR
+返回全局变量 \fBtcl_version \fR的值;详情参见 \fBtclvars\fR手册条目。
+.TP
+\fBinfo vars\fR ?\fIpattern\fR?
+如果未指定 \fIpattern\fR,则返回所有当前可见的变量的名字的一个列表。包括局部变量和当前可见的全局变量。如果指定了 \fIpattern\fR,只返回匹配 \fIpattern\fR  的那些名字。使用与 \fBstring match \fR相同的规则确定匹配。\fIpattern\fR  可以是象 \fBFoo::print* \fR这样的一个限定的(qualified)名字。这样,可以使用由 \fB:: \fR分隔的名字空间的名字序列来指定一个特定的名字空间,并可以用匹配后面特定字符的模式来指定在这个名字空间中的一系列命令。如果是 \fIpattern\fR是一个限定的名字,命令名字的结果列表中的每个元素都被指定名字空间的名字所限定。
+
+.SH "关键字 KEYWORDS"
+command, information, interpreter, level, namespace, procedure, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/interp.n b/src/mann/interp.n
new file mode 100644
index 0000000..a6f5d52
--- /dev/null
+++ b/src/mann/interp.n
@@ -0,0 +1,463 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: interp.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: interp.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH interp n 7.6 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+interp \- 建立和操纵 Tcl 解释器
+.SH "总览 SYNOPSIS"
+\fBinterp \fIoption \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令建立一个或多个新的 Tcl 解释器,并使其与建立(它们的)解释器在相同的应用中共存。建立解释器的解释器叫做主解释器(\fImaster\fR)而新解释器叫做从解释器(\fIslave\fR)。主解释器可以建立任意数目的从解释器,每个从解释器也可以自己建立增添的从解释器而成为它们的主解释器,这将导致解释器的一个等级层次(hierarchy)。
+.PP
+每个解释器相对其他解释器是独立的: 它有给命令、过程、和全局变量的自己的名字空间。一个主解释器可以使用叫别名(\fIalias\fR)的机制建立它的从解释器与它自身间的连接。别名是在一个从解释器中的一个命令,调用它时,导致在它的主解释器或其他从解释器中调用一个命令。解释器之间的唯一其他连接是通过环境变量(\fBenv\fR 变量),它通常被在这个应用中的所有解释器共享。注意给文件的名字空间(比如由 \fBopen\fR命令返回的名字)不在解释器之间共享。提供显式的命令来共享文件和把到打开文件的引用从一个解释器转换(transfer)到另一个。
+.PP
+\fBinterp\fR命令还提供对安全(\fIsafe\fR)解释器的支持。一个安全解释器是一个功能被严格限制了的从解释器,这样就可以执行不可信任的脚本而不用害怕它们毁坏其他解释器或这个应用的环境。例如,安全解释器不能访问所有 IO  通道建立命令和子过程建立命令。
+.VS
+详情参见下面的 SAFE INTERPRETERS (安全的解释器) 章节。未从安全的解释器中去除有危险的功能;但是,它们是隐藏的,所以只有可信任的解释器可以获得到它们的访问。隐藏命令的详细解释请参见下面的 HIDDEN COMMANDS (隐藏命令) 章节。可以使用别名机制来在从解释器和它的主解释器之间进行受保护的通信(类似于一个内核调用)。别名机制工作的详情参见下面的 ALIAS INVOCATION (别名调用)章节。
+.VE
+.PP
+一个限定的(qualified)解释器的名字是一个适当的 Tcl 列表,它包含在这个解释器层次中它的祖先的一个子集,终结于以它的直接上级(immediate)主解释器命名的字符串。解释器名字是相对于在其中使用它的哪个解释器的。例如,如果 \fBa\fR 是当前解释器的一个从解释器并且它有一个从解释器 \fBa1\fR,它依次有一个从解释器 \fBa11\fR,在\fBa\fR  中 \fBa11\fR  的限定的名字是列表 \fBa1 a11\fR。
+.PP
+下面描述的 \fBinterp\fR命令接受限定的解释器名字作为参数;命令在其中求值的解释器总是可以作为 \fB{}\fR来引用(空列表或字符串)。注意除了通过别名之外,在一个从解释器中不可能通过名字引用一个主(祖先)解释器。还有,没有通过它可以引用在应用中建立的第一个解释器的全局名字。这两种限制的目的都是为了安全。
+
+.VS
+.SH "INTERP 命令 COMMAND"
+.PP
+.VE
+使用 \fBinterp\fR  命令建立、删除、和操纵从解释器,并在解释器之间共享或转换通道。依赖于 \fIoption\fR 参数,它可以有下列一些形式:        
+.TP
+\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR
+返回一个 Tcl 列表,它的元素是与叫做 \fIsrcCmd\fR的别名有关的 \fItargetCmd\fR  和 \fIarg\fRs(在建立别名时指定所有这些值;在从解释器中实际的源命令如果被重命名的话可能与 \fIsrcCmd\fR 不同)。                                
+.TP
+\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR \fB{}\fR
+删除在从解释器中用 \fIsrcPath \fR标识的给 \fIsrcCmd\fR  的别名。\fIsrcCmd\fR 引用在其下建立别名的名字;如果 源命令已经被重命名,则删除重命名后的命令。
+.TP
+\fBinterp\fR \fBalias\fR \fIsrcPath\fR \fIsrcCmd\fR \fItargetPath\fR \fItargetCmd \fR?\fIarg arg ...\fR?
+这个命令在一个从解释器和其他解释器之间建立一个别名(关于在一个从解释器和它的主解释器之间建立别名请参见下面的 \fBalias\fR 从命令)。在这个命令中,两个从解释器可以在调用这个命令的解释器底下的解释器层次中的任何位置。\fISrcPath\fR和 \fIsrcCmd\fR  标识这个别名的来源。\fISrcPath\fR  是一个 Tcl 列表,它的元素选择一个特定的解释器。例如,“\fBa b\fR”标识一个解释器 \fBb\fR,它是解释器 \fBa\fR 的一个从解释器,\fBa\fR解释器是调用(命令)的解释器的一个从解释器。一个空列表指定调用这个命令的解释器。\fIsrcCmd\fR给出一个新命令的名字,将在源解释器中建立它。\fITargetPath\fR和 \fItargetCmd\fR  指定一个目标解释器和命令,和 \fIarg\fR   参数,如果有的话,给 \fItargetCmd \fR指定增补的参数,它们在 \fIsrcCmd\fR 调用中指定的所有参数的前面。\fITargetCmd\fR在这个调用的时候可以被取消定义(undefin [...]
+.TP
+\fBinterp\fR \fBaliases \fR?\fIpath\fR?
+这个命令返回给在用 \fIpath \fR表示的解释器中定义的别名的所有源命令的名字一个 Tcl 列表。 
+.TP
+\fBinterp\fR \fBcreate \fR?\fB\-safe\fR? ?\fB\-\|\-\fR? ?\fIpath\fR?
+建立用 \fIpath\fR  标识的一个从解释器和叫做从命令(\fIslave command\fR)的一个新命令。从命令的名字是 \fIpath\fR的最后一个成员。在其中建立新的从解释器和从命令的解释器由从 \fIpath\fR 中去除最后一个成员所获得的路径来标识。例如,如果 \fIpath \fR是\fI \fR\fBa b c\fR  则一个新的从解释器和叫做 \fBc\fR的从命令建立在用路径 \fBa b \fR标识的从解释器中。可以使用从命令先下面描述的那样操纵新解释器。如果省略了 \fIpath\fR, Tcl 建立 \fBinterp\fR\fIx \fR形式的一个唯一的名字,这里的 \fIx\fR是一个整数,并用于解释器和从命令。如果指定了 \fB-safe\fR开关(或者主解释器是一个安全解释器),新的从解释器将建立成功能有限的一个安全解释器;否则从解释器将包含 Tcl  内置命令和变量的全集。使用 \fB\-\|\-\fR 开关来标记开关的结束;如果路径是象 \fB-safe\fR  这样的一个特殊的值的时候需要这个开关。这个命令的结果是新解 [...]
+.TP
+\fBinterp\fR \fBdelete \fR?\fIpath ...?\fR
+删除用可选的 \fIpath\fR 参数给出的零个或多个解释器,并且对于每个解释器,它还删除它的所有从解释器。这个命令还删除给每个被删除的解释器的从命令。对于每个 \fIpath\fR 参数,如果叫这个名字的解释器不存在,这个名字将引发一个错误。
+.TP
+\fBinterp\fR \fBeval\fR \fIpath arg \fR?\fIarg ...\fR?
+这个命令用与 \fBconcat\fR命令相同的方式串联所有的 \fIarg\fR 参数,接着在用 \fIpath \fR标识的解释器中把结果字符串作为一个 Tcl 脚本来求值。把这个求值的结果(如果发生错误的话,包括象 \fBerrorInfo\fR和 \fBerrorCode\fR  变量这样的错误信息)返回给调用(命令)的解释器。
+.TP
+\fBinterp exists \fIpath\fR
+如果在这个主解释器中存在用 \fIpath\fR 指定的从解释器则返回  \fB1\fR,否则返回 \fB0\fR。如果省略了 \fIpath\fR,使用调用(命令)的解释器。
+.VS "" BR
+.TP
+\fBinterp expose \fIpath\fR \fIhiddenName\fR ?\fIexposedCmdName\fR?
+在用 \fIpath \fR表示(denote)的解释器中,使隐藏的命令 \fIhiddenName\fR  暴露(expose),最终把它带回在一个新的\fIexposedCmdName\fR  名字之下(目前只接受没有任何:: 的一个全局名字空间名字)。如果有目标名字的一个暴露的命令已经存在,这个命令失败。隐藏命令的详情参见下面的HIDDEN COMMANDS (隐藏命令)章节。
+.TP
+\fBinterp\fR \fBhide\fR \fIpath\fR \fIexposedCmdName\fR ?\fIhiddenCmdName\fR?
+在用 \fIpath \fR表示(denote)的解释器中,使暴露的命令 \fIexposedCmdName\fR 隐藏,并把它重命名成隐藏命令 \fIhiddenCmdName\fR,如果未给出                                  
+\fIhiddenCmdName\fR 则保持相同的名字。如果有目标名字的一个隐藏的命令已经存在,这个命令失败。目前 \fIexposedCmdName\fR 和 \fIhiddenCmdName\fR二者不能不能包含名字空间限定符,否则将引发一个错误。即使当前名字空间不是全局名字空间,仍在全局名字空间中查找要被 \fBinterp hide\fR隐藏的命令。这防止从解释器通过使当前的名字空间不同于全局名字空间(的方式),来愚弄主解释器去隐藏错误的命令。隐藏命令的详情参见下面的HIDDEN COMMANDS (隐藏命令)章节。                                 
+.TP
+\fBinterp\fR \fBhidden\fR \fIpath\fR
+返回在用 \fIpath\fR  标识的解释器中所有隐藏命令的名字的一个列表。
+.TP
+\fBinterp\fR \fBinvokehidden\fR \fIpath\fR ?\fB-global\fR? \fIhiddenCmdName\fR ?\fIarg ...\fR?
+在由 \fIpath\fR 表示的解释器中用提供的参数调用隐藏命令 \fIhiddenCmdName\fR 。对参数不(进行)替换或求值。如果存在 \fB-global\fR  标志,在目标解释器的全局层次上调用隐藏命令;否则在当前的调用框架 (frame)上调用它并且可以访问调用框架内部和外部的局部变量。隐藏命令的详情请参见下面的HIDDEN COMMANDS (隐藏命令)章节。
+.VE
+.TP
+\fBinterp issafe\fR ?\fIpath\fR?
+如果由 \fIpath\fR 指定的解释器是安全的则返回 \fB1\fR,否则返回 \fB0\fR。 
+.VS "" BR
+.TP
+\fBinterp marktrusted\fR \fIpath\fR
+标记用 \fIpath\fR  标识的解释器是可信任的。不暴露隐藏命令。这个命令只能在可信任的解释器中调用。如果由 \fIpath\fR标识的解释器已经是可信任的,则这个命令没有影响。
+.VE
+.TP
+\fBinterp\fR \fBshare\fR \fIsrcPath channelId destPath\fR
+在用 \fIsrcPath\fR  标识的解释器和用 \fIdestPath \fR标识的解释器之间导致用 \fIchannelId\fR标识的 IO 通道变成共享的。两个解释器在这个 IO通道上由相同的权限。两个解释器必须关闭它来关闭低层的 IO 通道;在销毁一个解释器的时候自动关闭在这个解释器中可访问的 IO 通道。
+.TP
+\fBinterp\fR \fBslaves\fR ?\fIpath\fR?
+返回与用 \fIpath \fR标识的解释器相关的所有从解释器的名字的一个 Tcl  列表。如果省略了 \fIpath\fR,使用调用(命令)的解释器。
+.TP
+\fBinterp\fR \fBtarget\fR \fIpath alias\fR
+返回描述给一个别名的目标解释器的一个 Tcl 列表。用一个解释器路径和源命令名指定这个别名, 就象在上面的 \fBinterp alias\fR 中那样。目标解释器的名字被返回为相对于调用(命令)的解释器的一个解释器路径。如果给这个别名的目标解释器是调用(命令)的解释器则返回一个空列表。如果给别名的目标解释器不是调用(命令)的解释器或是它的后代之一则生成一个错误。在调用这个命令的时候目标命令不是必须定义的。
+.TP
+\fBinterp\fR \fBtransfer\fR \fIsrcPath channelId destPath\fR
+导致用 \fIchannelId\fR  标识的 IO 通道,在用 \fIdestPath\fR 标识的解释器中变成可获得的,而在用 \fIsrcPath \fR标识的解释器中变成不可获得的。
+
+.SH "SLAVE 命令 COMMAND"
+.PP
+对于每个用 \fBinterp\fR  建立的从解释器,在主解释器中建立名字与这个新解释器相同的一个新 Tcl 命令。可以使用这个命令调用在这个解释器上的各种操作。它有下面的一般形式:
+.CS
+\fIslave command \fR?\fIarg arg ...\fR?
+.CE
+\fISlave\fR  是解释器的名字,\fIcommand\fR 和 \fIarg\fRs确定这个命令的具体行为。这个命令有效形式有: 
+.TP
+\fIslave \fBaliases\fR
+返回一个 Tcl 列表,它的元素是在 \fIslave \fR中的所有别名的名字。返回的名字是建立别名时使用的 \fIsrcCmd\fR 的值(如果它们已经被重命名,则它可以同这个命令的当前的名字不相同)。
+.TP
+\fIslave \fBalias \fIsrcCmd\fR
+返回一个 Tcl 列表,它的元素是与叫做 \fIsrcCmd\fR  的别名相关的 \fItargetCmd\fR  和 \fIarg\fRs(在建立这个别名的时候指定所有这些值;在从解释器中的实际的源命令如果被重命令则可能与 \fIsrcCmd\fR不同)。
+.TP
+\fIslave \fBalias \fIsrcCmd \fB{}\fR
+在从解释器中删除给 \fIsrcCmd\fR  的别名。\fIsrcCmd\fR 参照在其下建立别名的那个名字;如果源命令已经被重命名,则删除重命名后的命令。 
+.TP
+\fIslave \fBalias \fIsrcCmd targetCmd \fR?\fIarg ..\fR?
+建立一个别名,当在\fIslave \fR中调用 \fIsrcCmd\fR  的时候, 在主解释器中调用 \fItargetCmd \fR。把 \fIarg\fR 参数作为补充的参数传递给 \fItargetCmd\fR  ,这些参数在 \fIsrcCmd \fR的调用中传递的任何参数之前。详情参见下面的ALIAS INVOCATION (别名调用)章节。 
+.TP
+\fIslave \fBeval \fIarg \fR?\fIarg ..\fR?
+这个命令用与 \fBconcat\fR 命令相同的方式串联所有的 \fIarg\fR  参数,接着在\fI slave \fR中把结果字符串作为一个 Tcl 脚本来求值。把这个求值的结果(如果有错误发生,包括象 \fBerrorInfo\fR  和 \fBerrorCode\fR  变量这样的错误信息)返回给调用(命令)的解释器。
+.VS "" BR
+.TP
+\fIslave \fBexpose \fIhiddenName \fR?\fIexposedCmdName\fR?
+这个命令暴露在 \fIslave \fR的隐藏的命令 \fIhiddenName\fR,最终把它带回在一个新的\fIexposedCmdName\fR  名字之下(目前只接受没有任何:: 的一个全局名字空间名字)。如果有目标名字的一个暴露的命令已经存在,这个命令失败。隐藏命令的详情参见下面的HIDDEN COMMANDS (隐藏命令)章节。
+.TP
+\fIslave \fBhide \fIexposedCmdName\fR ?\fIhiddenCmdName\fR?
+这个命令隐藏在从解释器中暴露的命令 \fIexposedCmdName\fR,并把它重命名成隐藏命令 \fIhiddenCmdName\fR,如果未给出\fIhiddenCmdName\fR 则保持相同的名字。如果有目标名字的一个隐藏的命令已经存在,这个命令失败。目前 \fIexposedCmdName\fR和 \fIhiddenCmdName\fR二者不能不能包含名字空间限定符,否则将引发一个错误。即使当前名字空间不是全局名字空间,仍在全局名字空间中查找要被隐藏的命令。这防止从解释器通过使当前的名字空间不同于全局名字空间(的方式),来愚弄主解释器去隐藏错误的命令。隐藏命令的详情参见下面的HIDDEN COMMANDS (隐藏命令)章节。                                 
+.TP
+\fIslave \fBhidden\fR
+返回在 \fIslave \fR中所有隐藏的名字的一个列表。
+.TP
+\fIslave \fBinvokehidden\fR ?\fB-global\fR \fIhiddenName \fR?\fIarg ..\fR?
+这个命令在 \fIslave \fR中用提供的参数调用隐藏的命令 \fIhiddenName\fR。对这些参数不进行求值或替换。如果给出了 \fB-global\fR标志,则在这个从解释器的全局层次上调用这个命令;否则在当前调用框架上调用它并可访问这个调用框架内部或外部的局部变量。隐藏命令的详情参见下面的HIDDEN COMMANDS (隐藏命令)章节。
+.VE
+.TP
+\fIslave \fBissafe\fR
+如果从解释器是安全的则返回  \fB1\fR,否则返回 \fB0\fR。
+.VS "" BR
+.TP
+\fIslave \fBmarktrusted\fR
+标记从解释器为可以信任的。只可以被可信任的解释器调用。这个命令不暴露在这个从解释器中的任何隐含命令。如果这个命令已经是可以信任的了,则这个命令没有影响。
+.VE
+
+.SH "安全解释器 SAFE INTERPRETERS"
+.PP
+一个安全解释器是一个功能受限制的解释器,所以执行从最恶毒的敌人那里来的任意脚本都是安全的而不用害怕这个脚本毁坏包围它的(enclosing)应用或你的计算环境的其余部分。要使一个解释器安全,要从这个解释器中删除特定的命令和变量。例如,删除在磁盘上建立文件的命令,和删除\fBexec\fR命令,因为它可通过子进程导致破坏。通过建立到主解释器的别名,它小心的检查它们的参数并提供对设施的一个安全子集的受限制的访问,可以提供对这些设施的有限的访问。例如,在一个特定的子目录中允许文件建立,和允许对仔细选择的和一个固定的程序的集合的子进程调用。
+.PP
+通过给 \fBinterp create \fR命令指定 \fB-safe\fR开关来建立一个安全的解释器。进而,一个安全解释器建立的任何从解释器都是安全的。
+.PP
+建立的安全解释器准确的有下列的内置的命令集: 
+.DS
+.ta 1.2i 2.4i 3.6i
+\fBafter	append	array	binary
+break	case	catch	clock
+close	concat	continue	eof
+error	eval	expr	fblocked
+fcopy	fileevent	flush	for
+foreach	format	gets	global
+history	if	incr	info
+interp	join	lappend	lindex
+linsert	list	llength	lrange
+lreplace	lsearch	lsort	namespace
+package	pid	proc	puts
+read	regexp	regsub	rename
+return	scan	seek	set
+split	string	subst	switch
+tell	trace	unset	update
+uplevel	upvar	variable	vwait
+while\fR
+.DE
+.VS ""  BR
+\fBinterp create\fR  建立一个安全解释器时下列命令是隐藏的: 
+.DS
+.ta 1.2i 2.4i 3.6i
+\fBcd	exec	exit	fconfigure
+file	glob	load	open
+pwd	socket	source	vwait\fR
+.DE
+以后这些命令可以作为 Tcl 过程或别名来重新建立,或用 \fBinterp expose\fR暴露出来。
+.VE
+.PP
+除此之外,在一个安全解释器中不存在 \fBenv\fR变量,所以不能同其他解释器共享环境变量。\fBenv\fR  变量可能造成一次安全冒险,因为用户可能在某个环境变量中存储敏感信息。例如,PGP 手册建议在环境变量 \fIPGPPASS \fR中存储 PGP 私有密钥。让不可信任代码可以在安全解释器中访问这个变量将招致一次安全冒险。
+.PP
+如果扩展被装载到安全解释器中,它们也可以限制它们自己功能来排除不安全的命令。对扩展的安全性的管理的讨论参见\fBSafe-Tcl\fR  和 \fBload\fR Tcl 命令的手册条目。 
+
+.SH "别名调用 ALIAS INVOCATION"
+.PP
+精心的设计了别名机制,所以在安全的从解释器中执行不可信任的脚本是安全的而别名的目标是一个可信任的主解释器。最保证安全性的最重要的事情是确保从从解释器传递到主解释器的信息在主解释器中永不被求值或替换;如果这种情况发生了,它将开启在从解释器中的某个邪恶的脚本来在主解释器中调用任意函数,这将危及安全。
+.PP
+当从解释器中调用一个别名的源(命令)的时候,在分析这个命令时进行常规的 Tcl 替换。在源解释器中完成这些替换,就象对在这个解释器中的调用的其他命令一样。源命令的命令过程接受它的参数并把它们与给这个别名的 \fItargetCmd\fR和 \fIarg\fRs 融合起来建立一个新的参数数组。如果 \fIsrcCmd\fR的字是``\fIsrcCmd arg1 arg2 ... argN\fR'',则新的字集将是``\fItargetCmd arg arg ... arg arg1 arg2 ... argN\fR''。这里的 \fItargetCmd\fR和 \fIarg\fRs 是在建立别名的时候提供的值。接着用 \fITargetCmd\fR来在目标解释器中定位(locate)一个命令过程,并且用新的参数集来调用这个命令过程。如果在目标解释器中没有叫做 \fItargetCmd\fR 的命令则发生一个错误。在这个字上不进行补充的替换:不通过常规的 Tcl 求值机制,直接调用目标命令过程。所以在每个字上精确的进行一次替换: 在分析建立这个别名的命令的时候替换 \fIt [...]
+.PP
+在安全解释器中给别名写 \fItargetCmd\fRs 的时候,给它的参数永远不被求值或替换是非常重要的,因为这将提供一种逃逸机制,使从解释器可以执行在主解释器中的任意代码。这将危及系统的安全。
+
+.VS
+.SH "隐藏命令 HIDDEN COMMANDS"
+.PP
+安全解释器严重的限制了在其中执行的 Tcl 程序可获得的功能。允许不可信任的 Tcl 程序访问这些功能是不安全的,因为它们可以在这个环境中被用于各种攻击。但是,有时在安全解释器的上下文中有使用危险的功能的合理需要。例如,有时一个程序必须 \fBsource \fR到解释器中。另一个例子是 Tk,在这里窗口被绑定到与一个特定解释器关联的窗口层次当中;一些潜在的危险函数,比如窗口管理,必须在这个解释器上下文中的那些窗口上进行。
+.PP
+\fBinterp\fR 命令提供了对这个问题的一种\fI隐藏命令\fR形式的解决方案。不是从安全解释器中整个的删除危险的命令,而是隐藏这些命令,所以它们变成对在这个解释器中执行的 Tcl 脚本是不可获得的。但是,这个安全解释器的任何可信任的祖先可以使用 \fBinterp invoke\fR,在这个安全解释器的上下文中,调用这些隐藏命令。隐藏命令和暴露命令驻留在分开的名字空间中。在一个解释器中可以定义叫相同名字的隐藏命令和暴露命令。
+.PP
+在别名调用期间,在主解释器中调用的过程体中可以调用在从解释器中的隐藏命令。例如,在一个从解释器中可以给 \fBsource\fR 建立一个别名。当在这个从解释器中调用它的时候,调用在主解释器中的一个过程来检查这个操作是否是允许的(比如,是否允许这个从解释器访问的它要求source 的文件)。接着这个过程在从解释器中调用隐藏的 \fBsource\fR命令来实际装载(source)这个文件的内容。注意在从解释器中存在来着两个叫 \fBsource\fR 的命令: 别名和隐藏命令。
+.PP
+因为一个主解释器可以把调用一个隐藏命令作为处理一个别名调用的一部分,必须非常小心的避免对通过别名调用传递来的任何参数进行求值。否则,恶意的从解释器可以导致一个可信任的代表它们来执行危险的命令。这个主题的完整讨论参见ALIAS INVOCATION (别名调用)章节。要避免这个问题,对 \fBinterp invokehidden\fR的参数不要进行替换或求值。
+.PP
+不允许安全解释器调用它自身中或它后代中的隐藏命令。这防止安全从解释器访问在自身中或它们的后代中的隐藏命令。
+.PP
+一个可信任的解释器可以使用 \fBinterp expose\fR和 \fBinterp hide \fR来操纵一个解释器中的隐藏命令的集合。\fBinterp expose\fR  命令把在用 \fIpath \fR标识的解释器中一个隐藏命令移动到暴露命令的集合中,在这个过程中可能重命名这个命令。如果叫目标名字的一个暴露的命令已经存在,这个操作失败。类似的,\fBinterp hide\fR  把在这个解释器中的一个暴露命令移动到隐藏命令的集合中。不允许安全解释器在它自身中或它的后代中的隐藏命令和暴露命令的集合之间移动命令。
+.PP
+目前,隐藏命令的名字不能包含名字空间限定符,并且在你可以隐藏它之前必须首先把在一个名字空间中的命令重命令到全局名字空中。在全局名字空间中查找要被 \fBinterp hide\fR 隐藏的命令。这防止从解释器通过使当前的名字空间不同于全局名字空间(的方式),来愚弄主解释器去隐藏错误的命令。 
+
+.VE
+.SH "感谢 CREDITS"
+.PP
+这个机制基于由 Nathaniel Borenstein 和 Marshall Rose 实现的 Safe-Tcl                             
+原型。
+
+.SH "参见 SEE ALSO"
+load(n), safe(n), Tcl_CreateSlave(3)
+
+.SH "关键字 KEYWORDS"
+alias, master interpreter, safe interpreter, slave interpreter
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/09
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/join.n b/src/mann/join.n
new file mode 100644
index 0000000..52bab88
--- /dev/null
+++ b/src/mann/join.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: join.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: join.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH join n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+join \- 通过把列表元素连接在一起来建立一个字符串
+.SH "总览 SYNOPSIS"
+\fBjoin \fIlist \fR?\fIjoinString\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fIlist\fR  参数必须是一个有效的 Tcl 列表。这个命令返回由 \fIlist\fR的所有元素连接在一起形成的字符串,用\fIjoinString\fR  分隔每个毗连的元素对。\fIjoinString\fR 参数缺省是一个空格字符。
+
+.SH "参见 SEE ALSO"
+list(n), lappend(n)
+
+.SH "关键字 KEYWORDS"
+element, join, list, separator
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/05
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/keysyms.n b/src/mann/keysyms.n
new file mode 100644
index 0000000..e17f4f1
--- /dev/null
+++ b/src/mann/keysyms.n
@@ -0,0 +1,1166 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: keysyms.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: keysyms.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH keysyms n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+keysyms \- Tk 可以识别的符号 (keysyms)
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+Tk 在指定按键绑定 (例如,\fBbind . <Key-\fR\fIkeysym\fR\fB>\fR) 时,可以识别大量符号。下面的列表枚举了 Tk 可以识别的所有符号。注意并不是所有的符号在每种平台下都可用。例如,在 Unix 系统中,一个特殊符号的存在依赖于键盘替换表 (keyboard modifier map) 的配置。这个列表给出了符号还有它们的十进制与十六进制值。
+.PP
+.CS
+space                               32     0x0020
+exclam                              33     0x0021
+quotedbl                            34     0x0022
+numbersign                          35     0x0023
+dollar                              36     0x0024
+percent                             37     0x0025
+ampersand                           38     0x0026
+quoteright                          39     0x0027
+parenleft                           40     0x0028
+parenright                          41     0x0029
+asterisk                            42     0x002a
+plus                                43     0x002b
+comma                               44     0x002c
+minus                               45     0x002d
+period                              46     0x002e
+slash                               47     0x002f
+0                                   48     0x0030
+1                                   49     0x0031
+2                                   50     0x0032
+3                                   51     0x0033
+4                                   52     0x0034
+5                                   53     0x0035
+6                                   54     0x0036
+7                                   55     0x0037
+8                                   56     0x0038
+9                                   57     0x0039
+colon                               58     0x003a
+semicolon                           59     0x003b
+less                                60     0x003c
+equal                               61     0x003d
+greater                             62     0x003e
+question                            63     0x003f
+at                                  64     0x0040
+A                                   65     0x0041
+B                                   66     0x0042
+C                                   67     0x0043
+D                                   68     0x0044
+E                                   69     0x0045
+F                                   70     0x0046
+G                                   71     0x0047
+H                                   72     0x0048
+I                                   73     0x0049
+J                                   74     0x004a
+K                                   75     0x004b
+L                                   76     0x004c
+M                                   77     0x004d
+N                                   78     0x004e
+O                                   79     0x004f
+P                                   80     0x0050
+Q                                   81     0x0051
+R                                   82     0x0052
+S                                   83     0x0053
+T                                   84     0x0054
+U                                   85     0x0055
+V                                   86     0x0056
+W                                   87     0x0057
+X                                   88     0x0058
+Y                                   89     0x0059
+Z                                   90     0x005a
+bracketleft                         91     0x005b
+backslash                           92     0x005c
+bracketright                        93     0x005d
+asciicircum                         94     0x005e
+underscore                          95     0x005f
+quoteleft                           96     0x0060
+a                                   97     0x0061
+b                                   98     0x0062
+c                                   99     0x0063
+d                                  100     0x0064
+e                                  101     0x0065
+f                                  102     0x0066
+g                                  103     0x0067
+h                                  104     0x0068
+i                                  105     0x0069
+j                                  106     0x006a
+k                                  107     0x006b
+l                                  108     0x006c
+m                                  109     0x006d
+n                                  110     0x006e
+o                                  111     0x006f
+p                                  112     0x0070
+q                                  113     0x0071
+r                                  114     0x0072
+s                                  115     0x0073
+t                                  116     0x0074
+u                                  117     0x0075
+v                                  118     0x0076
+w                                  119     0x0077
+x                                  120     0x0078
+y                                  121     0x0079
+z                                  122     0x007a
+braceleft                          123     0x007b
+bar                                124     0x007c
+braceright                         125     0x007d
+asciitilde                         126     0x007e
+nobreakspace                       160     0x00a0
+exclamdown                         161     0x00a1
+cent                               162     0x00a2
+sterling                           163     0x00a3
+currency                           164     0x00a4
+yen                                165     0x00a5
+brokenbar                          166     0x00a6
+section                            167     0x00a7
+diaeresis                          168     0x00a8
+copyright                          169     0x00a9
+ordfeminine                        170     0x00aa
+guillemotleft                      171     0x00ab
+notsign                            172     0x00ac
+hyphen                             173     0x00ad
+registered                         174     0x00ae
+macron                             175     0x00af
+degree                             176     0x00b0
+plusminus                          177     0x00b1
+twosuperior                        178     0x00b2
+threesuperior                      179     0x00b3
+acute                              180     0x00b4
+mu                                 181     0x00b5
+paragraph                          182     0x00b6
+periodcentered                     183     0x00b7
+cedilla                            184     0x00b8
+onesuperior                        185     0x00b9
+masculine                          186     0x00ba
+guillemotright                     187     0x00bb
+onequarter                         188     0x00bc
+onehalf                            189     0x00bd
+threequarters                      190     0x00be
+questiondown                       191     0x00bf
+Agrave                             192     0x00c0
+Aacute                             193     0x00c1
+Acircumflex                        194     0x00c2
+Atilde                             195     0x00c3
+Adiaeresis                         196     0x00c4
+Aring                              197     0x00c5
+AE                                 198     0x00c6
+Ccedilla                           199     0x00c7
+Egrave                             200     0x00c8
+Eacute                             201     0x00c9
+Ecircumflex                        202     0x00ca
+Ediaeresis                         203     0x00cb
+Igrave                             204     0x00cc
+Iacute                             205     0x00cd
+Icircumflex                        206     0x00ce
+Idiaeresis                         207     0x00cf
+Eth                                208     0x00d0
+Ntilde                             209     0x00d1
+Ograve                             210     0x00d2
+Oacute                             211     0x00d3
+Ocircumflex                        212     0x00d4
+Otilde                             213     0x00d5
+Odiaeresis                         214     0x00d6
+multiply                           215     0x00d7
+Ooblique                           216     0x00d8
+Ugrave                             217     0x00d9
+Uacute                             218     0x00da
+Ucircumflex                        219     0x00db
+Udiaeresis                         220     0x00dc
+Yacute                             221     0x00dd
+Thorn                              222     0x00de
+ssharp                             223     0x00df
+agrave                             224     0x00e0
+aacute                             225     0x00e1
+acircumflex                        226     0x00e2
+atilde                             227     0x00e3
+adiaeresis                         228     0x00e4
+aring                              229     0x00e5
+ae                                 230     0x00e6
+ccedilla                           231     0x00e7
+egrave                             232     0x00e8
+eacute                             233     0x00e9
+ecircumflex                        234     0x00ea
+ediaeresis                         235     0x00eb
+igrave                             236     0x00ec
+iacute                             237     0x00ed
+icircumflex                        238     0x00ee
+idiaeresis                         239     0x00ef
+eth                                240     0x00f0
+ntilde                             241     0x00f1
+ograve                             242     0x00f2
+oacute                             243     0x00f3
+ocircumflex                        244     0x00f4
+otilde                             245     0x00f5
+odiaeresis                         246     0x00f6
+division                           247     0x00f7
+oslash                             248     0x00f8
+ugrave                             249     0x00f9
+uacute                             250     0x00fa
+ucircumflex                        251     0x00fb
+udiaeresis                         252     0x00fc
+yacute                             253     0x00fd
+thorn                              254     0x00fe
+ydiaeresis                         255     0x00ff
+Aogonek                            417     0x01a1
+breve                              418     0x01a2
+Lstroke                            419     0x01a3
+Lcaron                             421     0x01a5
+Sacute                             422     0x01a6
+Scaron                             425     0x01a9
+Scedilla                           426     0x01aa
+Tcaron                             427     0x01ab
+Zacute                             428     0x01ac
+.CE
+.CS
+Zcaron                             430     0x01ae
+Zabovedot                          431     0x01af
+aogonek                            433     0x01b1
+ogonek                             434     0x01b2
+lstroke                            435     0x01b3
+lcaron                             437     0x01b5
+sacute                             438     0x01b6
+caron                              439     0x01b7
+scaron                             441     0x01b9
+scedilla                           442     0x01ba
+tcaron                             443     0x01bb
+zacute                             444     0x01bc
+doubleacute                        445     0x01bd
+zcaron                             446     0x01be
+zabovedot                          447     0x01bf
+Racute                             448     0x01c0
+Abreve                             451     0x01c3
+Cacute                             454     0x01c6
+Ccaron                             456     0x01c8
+Eogonek                            458     0x01ca
+Ecaron                             460     0x01cc
+Dcaron                             463     0x01cf
+Nacute                             465     0x01d1
+Ncaron                             466     0x01d2
+Odoubleacute                       469     0x01d5
+Rcaron                             472     0x01d8
+Uring                              473     0x01d9
+Udoubleacute                       475     0x01db
+Tcedilla                           478     0x01de
+racute                             480     0x01e0
+abreve                             483     0x01e3
+cacute                             486     0x01e6
+ccaron                             488     0x01e8
+eogonek                            490     0x01ea
+ecaron                             492     0x01ec
+dcaron                             495     0x01ef
+nacute                             497     0x01f1
+ncaron                             498     0x01f2
+odoubleacute                       501     0x01f5
+rcaron                             504     0x01f8
+uring                              505     0x01f9
+udoubleacute                       507     0x01fb
+tcedilla                           510     0x01fe
+abovedot                           511     0x01ff
+Hstroke                            673     0x02a1
+Hcircumflex                        678     0x02a6
+Iabovedot                          681     0x02a9
+Gbreve                             683     0x02ab
+Jcircumflex                        684     0x02ac
+hstroke                            689     0x02b1
+hcircumflex                        694     0x02b6
+idotless                           697     0x02b9
+gbreve                             699     0x02bb
+jcircumflex                        700     0x02bc
+Cabovedot                          709     0x02c5
+Ccircumflex                        710     0x02c6
+Gabovedot                          725     0x02d5
+Gcircumflex                        728     0x02d8
+Ubreve                             733     0x02dd
+Scircumflex                        734     0x02de
+cabovedot                          741     0x02e5
+ccircumflex                        742     0x02e6
+gabovedot                          757     0x02f5
+gcircumflex                        760     0x02f8
+ubreve                             765     0x02fd
+scircumflex                        766     0x02fe
+kappa                              930     0x03a2
+Rcedilla                           931     0x03a3
+Itilde                             933     0x03a5
+Lcedilla                           934     0x03a6
+Emacron                            938     0x03aa
+Gcedilla                           939     0x03ab
+Tslash                             940     0x03ac
+rcedilla                           947     0x03b3
+itilde                             949     0x03b5
+lcedilla                           950     0x03b6
+emacron                            954     0x03ba
+gacute                             955     0x03bb
+tslash                             956     0x03bc
+ENG                                957     0x03bd
+eng                                959     0x03bf
+Amacron                            960     0x03c0
+Iogonek                            967     0x03c7
+Eabovedot                          972     0x03cc
+Imacron                            975     0x03cf
+Ncedilla                           977     0x03d1
+Omacron                            978     0x03d2
+Kcedilla                           979     0x03d3
+Uogonek                            985     0x03d9
+Utilde                             989     0x03dd
+Umacron                            990     0x03de
+amacron                            992     0x03e0
+iogonek                            999     0x03e7
+eabovedot                         1004     0x03ec
+imacron                           1007     0x03ef
+ncedilla                          1009     0x03f1
+omacron                           1010     0x03f2
+kcedilla                          1011     0x03f3
+uogonek                           1017     0x03f9
+utilde                            1021     0x03fd
+umacron                           1022     0x03fe
+overline                          1150     0x047e
+kana_fullstop                     1185     0x04a1
+kana_openingbracket               1186     0x04a2
+kana_closingbracket               1187     0x04a3
+kana_comma                        1188     0x04a4
+kana_middledot                    1189     0x04a5
+kana_WO                           1190     0x04a6
+kana_a                            1191     0x04a7
+kana_i                            1192     0x04a8
+kana_u                            1193     0x04a9
+kana_e                            1194     0x04aa
+kana_o                            1195     0x04ab
+kana_ya                           1196     0x04ac
+kana_yu                           1197     0x04ad
+kana_yo                           1198     0x04ae
+kana_tu                           1199     0x04af
+prolongedsound                    1200     0x04b0
+kana_A                            1201     0x04b1
+kana_I                            1202     0x04b2
+kana_U                            1203     0x04b3
+kana_E                            1204     0x04b4
+kana_O                            1205     0x04b5
+kana_KA                           1206     0x04b6
+kana_KI                           1207     0x04b7
+kana_KU                           1208     0x04b8
+kana_KE                           1209     0x04b9
+kana_KO                           1210     0x04ba
+kana_SA                           1211     0x04bb
+kana_SHI                          1212     0x04bc
+kana_SU                           1213     0x04bd
+kana_SE                           1214     0x04be
+kana_SO                           1215     0x04bf
+kana_TA                           1216     0x04c0
+kana_TI                           1217     0x04c1
+kana_TU                           1218     0x04c2
+kana_TE                           1219     0x04c3
+kana_TO                           1220     0x04c4
+kana_NA                           1221     0x04c5
+kana_NI                           1222     0x04c6
+kana_NU                           1223     0x04c7
+kana_NE                           1224     0x04c8
+kana_NO                           1225     0x04c9
+kana_HA                           1226     0x04ca
+kana_HI                           1227     0x04cb
+kana_HU                           1228     0x04cc
+kana_HE                           1229     0x04cd
+kana_HO                           1230     0x04ce
+kana_MA                           1231     0x04cf
+kana_MI                           1232     0x04d0
+kana_MU                           1233     0x04d1
+kana_ME                           1234     0x04d2
+kana_MO                           1235     0x04d3
+kana_YA                           1236     0x04d4
+kana_YU                           1237     0x04d5
+kana_YO                           1238     0x04d6
+kana_RA                           1239     0x04d7
+kana_RI                           1240     0x04d8
+kana_RU                           1241     0x04d9
+kana_RE                           1242     0x04da
+kana_RO                           1243     0x04db
+kana_WA                           1244     0x04dc
+kana_N                            1245     0x04dd
+voicedsound                       1246     0x04de
+semivoicedsound                   1247     0x04df
+Arabic_comma                      1452     0x05ac
+Arabic_semicolon                  1467     0x05bb
+Arabic_question_mark              1471     0x05bf
+Arabic_hamza                      1473     0x05c1
+Arabic_maddaonalef                1474     0x05c2
+Arabic_hamzaonalef                1475     0x05c3
+Arabic_hamzaonwaw                 1476     0x05c4
+Arabic_hamzaunderalef             1477     0x05c5
+Arabic_hamzaonyeh                 1478     0x05c6
+Arabic_alef                       1479     0x05c7
+Arabic_beh                        1480     0x05c8
+Arabic_tehmarbuta                 1481     0x05c9
+Arabic_teh                        1482     0x05ca
+Arabic_theh                       1483     0x05cb
+Arabic_jeem                       1484     0x05cc
+Arabic_hah                        1485     0x05cd
+Arabic_khah                       1486     0x05ce
+Arabic_dal                        1487     0x05cf
+Arabic_thal                       1488     0x05d0
+Arabic_ra                         1489     0x05d1
+Arabic_zain                       1490     0x05d2
+Arabic_seen                       1491     0x05d3
+Arabic_sheen                      1492     0x05d4
+Arabic_sad                        1493     0x05d5
+Arabic_dad                        1494     0x05d6
+Arabic_tah                        1495     0x05d7
+Arabic_zah                        1496     0x05d8
+Arabic_ain                        1497     0x05d9
+Arabic_ghain                      1498     0x05da
+Arabic_tatweel                    1504     0x05e0
+Arabic_feh                        1505     0x05e1
+Arabic_qaf                        1506     0x05e2
+Arabic_kaf                        1507     0x05e3
+Arabic_lam                        1508     0x05e4
+Arabic_meem                       1509     0x05e5
+.CE
+.CS
+Arabic_noon                       1510     0x05e6
+Arabic_heh                        1511     0x05e7
+Arabic_waw                        1512     0x05e8
+Arabic_alefmaksura                1513     0x05e9
+Arabic_yeh                        1514     0x05ea
+Arabic_fathatan                   1515     0x05eb
+Arabic_dammatan                   1516     0x05ec
+Arabic_kasratan                   1517     0x05ed
+Arabic_fatha                      1518     0x05ee
+Arabic_damma                      1519     0x05ef
+Arabic_kasra                      1520     0x05f0
+Arabic_shadda                     1521     0x05f1
+Arabic_sukun                      1522     0x05f2
+Serbian_dje                       1697     0x06a1
+Macedonia_gje                     1698     0x06a2
+Cyrillic_io                       1699     0x06a3
+Ukranian_je                       1700     0x06a4
+Macedonia_dse                     1701     0x06a5
+Ukranian_i                        1702     0x06a6
+Ukranian_yi                       1703     0x06a7
+Serbian_je                        1704     0x06a8
+Serbian_lje                       1705     0x06a9
+Serbian_nje                       1706     0x06aa
+Serbian_tshe                      1707     0x06ab
+Macedonia_kje                     1708     0x06ac
+Byelorussian_shortu               1710     0x06ae
+Serbian_dze                       1711     0x06af
+numerosign                        1712     0x06b0
+Serbian_DJE                       1713     0x06b1
+Macedonia_GJE                     1714     0x06b2
+Cyrillic_IO                       1715     0x06b3
+Ukranian_JE                       1716     0x06b4
+Macedonia_DSE                     1717     0x06b5
+Ukranian_I                        1718     0x06b6
+Ukranian_YI                       1719     0x06b7
+Serbian_JE                        1720     0x06b8
+Serbian_LJE                       1721     0x06b9
+Serbian_NJE                       1722     0x06ba
+Serbian_TSHE                      1723     0x06bb
+Macedonia_KJE                     1724     0x06bc
+Byelorussian_SHORTU               1726     0x06be
+Serbian_DZE                       1727     0x06bf
+Cyrillic_yu                       1728     0x06c0
+Cyrillic_a                        1729     0x06c1
+Cyrillic_be                       1730     0x06c2
+Cyrillic_tse                      1731     0x06c3
+Cyrillic_de                       1732     0x06c4
+Cyrillic_ie                       1733     0x06c5
+Cyrillic_ef                       1734     0x06c6
+Cyrillic_ghe                      1735     0x06c7
+Cyrillic_ha                       1736     0x06c8
+Cyrillic_i                        1737     0x06c9
+Cyrillic_shorti                   1738     0x06ca
+Cyrillic_ka                       1739     0x06cb
+Cyrillic_el                       1740     0x06cc
+Cyrillic_em                       1741     0x06cd
+Cyrillic_en                       1742     0x06ce
+Cyrillic_o                        1743     0x06cf
+Cyrillic_pe                       1744     0x06d0
+Cyrillic_ya                       1745     0x06d1
+Cyrillic_er                       1746     0x06d2
+Cyrillic_es                       1747     0x06d3
+Cyrillic_te                       1748     0x06d4
+Cyrillic_u                        1749     0x06d5
+Cyrillic_zhe                      1750     0x06d6
+Cyrillic_ve                       1751     0x06d7
+Cyrillic_softsign                 1752     0x06d8
+Cyrillic_yeru                     1753     0x06d9
+Cyrillic_ze                       1754     0x06da
+Cyrillic_sha                      1755     0x06db
+Cyrillic_e                        1756     0x06dc
+Cyrillic_shcha                    1757     0x06dd
+Cyrillic_che                      1758     0x06de
+Cyrillic_hardsign                 1759     0x06df
+Cyrillic_YU                       1760     0x06e0
+Cyrillic_A                        1761     0x06e1
+Cyrillic_BE                       1762     0x06e2
+Cyrillic_TSE                      1763     0x06e3
+Cyrillic_DE                       1764     0x06e4
+Cyrillic_IE                       1765     0x06e5
+Cyrillic_EF                       1766     0x06e6
+Cyrillic_GHE                      1767     0x06e7
+Cyrillic_HA                       1768     0x06e8
+Cyrillic_I                        1769     0x06e9
+Cyrillic_SHORTI                   1770     0x06ea
+Cyrillic_KA                       1771     0x06eb
+Cyrillic_EL                       1772     0x06ec
+Cyrillic_EM                       1773     0x06ed
+Cyrillic_EN                       1774     0x06ee
+Cyrillic_O                        1775     0x06ef
+Cyrillic_PE                       1776     0x06f0
+Cyrillic_YA                       1777     0x06f1
+Cyrillic_ER                       1778     0x06f2
+Cyrillic_ES                       1779     0x06f3
+Cyrillic_TE                       1780     0x06f4
+Cyrillic_U                        1781     0x06f5
+Cyrillic_ZHE                      1782     0x06f6
+Cyrillic_VE                       1783     0x06f7
+Cyrillic_SOFTSIGN                 1784     0x06f8
+Cyrillic_YERU                     1785     0x06f9
+Cyrillic_ZE                       1786     0x06fa
+Cyrillic_SHA                      1787     0x06fb
+Cyrillic_E                        1788     0x06fc
+Cyrillic_SHCHA                    1789     0x06fd
+Cyrillic_CHE                      1790     0x06fe
+Cyrillic_HARDSIGN                 1791     0x06ff
+Greek_ALPHAaccent                 1953     0x07a1
+Greek_EPSILONaccent               1954     0x07a2
+Greek_ETAaccent                   1955     0x07a3
+Greek_IOTAaccent                  1956     0x07a4
+Greek_IOTAdiaeresis               1957     0x07a5
+Greek_IOTAaccentdiaeresis         1958     0x07a6
+Greek_OMICRONaccent               1959     0x07a7
+Greek_UPSILONaccent               1960     0x07a8
+Greek_UPSILONdieresis             1961     0x07a9
+Greek_UPSILONaccentdieresis       1962     0x07aa
+Greek_OMEGAaccent                 1963     0x07ab
+Greek_alphaaccent                 1969     0x07b1
+Greek_epsilonaccent               1970     0x07b2
+Greek_etaaccent                   1971     0x07b3
+Greek_iotaaccent                  1972     0x07b4
+Greek_iotadieresis                1973     0x07b5
+Greek_iotaaccentdieresis          1974     0x07b6
+Greek_omicronaccent               1975     0x07b7
+Greek_upsilonaccent               1976     0x07b8
+Greek_upsilondieresis             1977     0x07b9
+Greek_upsilonaccentdieresis       1978     0x07ba
+Greek_omegaaccent                 1979     0x07bb
+Greek_ALPHA                       1985     0x07c1
+Greek_BETA                        1986     0x07c2
+Greek_GAMMA                       1987     0x07c3
+Greek_DELTA                       1988     0x07c4
+Greek_EPSILON                     1989     0x07c5
+Greek_ZETA                        1990     0x07c6
+Greek_ETA                         1991     0x07c7
+Greek_THETA                       1992     0x07c8
+Greek_IOTA                        1993     0x07c9
+Greek_KAPPA                       1994     0x07ca
+Greek_LAMBDA                      1995     0x07cb
+Greek_MU                          1996     0x07cc
+Greek_NU                          1997     0x07cd
+Greek_XI                          1998     0x07ce
+Greek_OMICRON                     1999     0x07cf
+Greek_PI                          2000     0x07d0
+Greek_RHO                         2001     0x07d1
+Greek_SIGMA                       2002     0x07d2
+Greek_TAU                         2004     0x07d4
+Greek_UPSILON                     2005     0x07d5
+Greek_PHI                         2006     0x07d6
+Greek_CHI                         2007     0x07d7
+Greek_PSI                         2008     0x07d8
+Greek_OMEGA                       2009     0x07d9
+Greek_alpha                       2017     0x07e1
+Greek_beta                        2018     0x07e2
+Greek_gamma                       2019     0x07e3
+Greek_delta                       2020     0x07e4
+Greek_epsilon                     2021     0x07e5
+Greek_zeta                        2022     0x07e6
+Greek_eta                         2023     0x07e7
+Greek_theta                       2024     0x07e8
+Greek_iota                        2025     0x07e9
+Greek_kappa                       2026     0x07ea
+Greek_lambda                      2027     0x07eb
+Greek_mu                          2028     0x07ec
+Greek_nu                          2029     0x07ed
+Greek_xi                          2030     0x07ee
+Greek_omicron                     2031     0x07ef
+Greek_pi                          2032     0x07f0
+Greek_rho                         2033     0x07f1
+Greek_sigma                       2034     0x07f2
+Greek_finalsmallsigma             2035     0x07f3
+Greek_tau                         2036     0x07f4
+Greek_upsilon                     2037     0x07f5
+Greek_phi                         2038     0x07f6
+Greek_chi                         2039     0x07f7
+Greek_psi                         2040     0x07f8
+Greek_omega                       2041     0x07f9
+leftradical                       2209     0x08a1
+topleftradical                    2210     0x08a2
+horizconnector                    2211     0x08a3
+topintegral                       2212     0x08a4
+botintegral                       2213     0x08a5
+vertconnector                     2214     0x08a6
+topleftsqbracket                  2215     0x08a7
+botleftsqbracket                  2216     0x08a8
+toprightsqbracket                 2217     0x08a9
+botrightsqbracket                 2218     0x08aa
+topleftparens                     2219     0x08ab
+botleftparens                     2220     0x08ac
+toprightparens                    2221     0x08ad
+botrightparens                    2222     0x08ae
+leftmiddlecurlybrace              2223     0x08af
+rightmiddlecurlybrace             2224     0x08b0
+topleftsummation                  2225     0x08b1
+botleftsummation                  2226     0x08b2
+topvertsummationconnector         2227     0x08b3
+botvertsummationconnector         2228     0x08b4
+toprightsummation                 2229     0x08b5
+botrightsummation                 2230     0x08b6
+rightmiddlesummation              2231     0x08b7
+.CE
+.CS
+lessthanequal                     2236     0x08bc
+notequal                          2237     0x08bd
+greaterthanequal                  2238     0x08be
+integral                          2239     0x08bf
+therefore                         2240     0x08c0
+variation                         2241     0x08c1
+infinity                          2242     0x08c2
+nabla                             2245     0x08c5
+approximate                       2248     0x08c8
+similarequal                      2249     0x08c9
+ifonlyif                          2253     0x08cd
+implies                           2254     0x08ce
+identical                         2255     0x08cf
+radical                           2262     0x08d6
+includedin                        2266     0x08da
+includes                          2267     0x08db
+intersection                      2268     0x08dc
+union                             2269     0x08dd
+logicaland                        2270     0x08de
+logicalor                         2271     0x08df
+partialderivative                 2287     0x08ef
+function                          2294     0x08f6
+leftarrow                         2299     0x08fb
+uparrow                           2300     0x08fc
+rightarrow                        2301     0x08fd
+downarrow                         2302     0x08fe
+blank                             2527     0x09df
+soliddiamond                      2528     0x09e0
+checkerboard                      2529     0x09e1
+ht                                2530     0x09e2
+ff                                2531     0x09e3
+cr                                2532     0x09e4
+lf                                2533     0x09e5
+nl                                2536     0x09e8
+vt                                2537     0x09e9
+lowrightcorner                    2538     0x09ea
+uprightcorner                     2539     0x09eb
+upleftcorner                      2540     0x09ec
+lowleftcorner                     2541     0x09ed
+crossinglines                     2542     0x09ee
+horizlinescan1                    2543     0x09ef
+horizlinescan3                    2544     0x09f0
+horizlinescan5                    2545     0x09f1
+horizlinescan7                    2546     0x09f2
+horizlinescan9                    2547     0x09f3
+leftt                             2548     0x09f4
+rightt                            2549     0x09f5
+bott                              2550     0x09f6
+topt                              2551     0x09f7
+vertbar                           2552     0x09f8
+emspace                           2721     0x0aa1
+enspace                           2722     0x0aa2
+em3space                          2723     0x0aa3
+em4space                          2724     0x0aa4
+digitspace                        2725     0x0aa5
+punctspace                        2726     0x0aa6
+thinspace                         2727     0x0aa7
+hairspace                         2728     0x0aa8
+emdash                            2729     0x0aa9
+endash                            2730     0x0aaa
+signifblank                       2732     0x0aac
+ellipsis                          2734     0x0aae
+doubbaselinedot                   2735     0x0aaf
+onethird                          2736     0x0ab0
+twothirds                         2737     0x0ab1
+onefifth                          2738     0x0ab2
+twofifths                         2739     0x0ab3
+threefifths                       2740     0x0ab4
+fourfifths                        2741     0x0ab5
+onesixth                          2742     0x0ab6
+fivesixths                        2743     0x0ab7
+careof                            2744     0x0ab8
+figdash                           2747     0x0abb
+leftanglebracket                  2748     0x0abc
+decimalpoint                      2749     0x0abd
+rightanglebracket                 2750     0x0abe
+marker                            2751     0x0abf
+oneeighth                         2755     0x0ac3
+threeeighths                      2756     0x0ac4
+fiveeighths                       2757     0x0ac5
+seveneighths                      2758     0x0ac6
+trademark                         2761     0x0ac9
+signaturemark                     2762     0x0aca
+trademarkincircle                 2763     0x0acb
+leftopentriangle                  2764     0x0acc
+rightopentriangle                 2765     0x0acd
+emopencircle                      2766     0x0ace
+emopenrectangle                   2767     0x0acf
+leftsinglequotemark               2768     0x0ad0
+rightsinglequotemark              2769     0x0ad1
+leftdoublequotemark               2770     0x0ad2
+rightdoublequotemark              2771     0x0ad3
+prescription                      2772     0x0ad4
+minutes                           2774     0x0ad6
+seconds                           2775     0x0ad7
+latincross                        2777     0x0ad9
+hexagram                          2778     0x0ada
+filledrectbullet                  2779     0x0adb
+filledlefttribullet               2780     0x0adc
+filledrighttribullet              2781     0x0add
+emfilledcircle                    2782     0x0ade
+emfilledrect                      2783     0x0adf
+enopencircbullet                  2784     0x0ae0
+enopensquarebullet                2785     0x0ae1
+openrectbullet                    2786     0x0ae2
+opentribulletup                   2787     0x0ae3
+opentribulletdown                 2788     0x0ae4
+openstar                          2789     0x0ae5
+enfilledcircbullet                2790     0x0ae6
+enfilledsqbullet                  2791     0x0ae7
+filledtribulletup                 2792     0x0ae8
+filledtribulletdown               2793     0x0ae9
+leftpointer                       2794     0x0aea
+rightpointer                      2795     0x0aeb
+club                              2796     0x0aec
+diamond                           2797     0x0aed
+heart                             2798     0x0aee
+maltesecross                      2800     0x0af0
+dagger                            2801     0x0af1
+doubledagger                      2802     0x0af2
+checkmark                         2803     0x0af3
+ballotcross                       2804     0x0af4
+musicalsharp                      2805     0x0af5
+musicalflat                       2806     0x0af6
+malesymbol                        2807     0x0af7
+femalesymbol                      2808     0x0af8
+telephone                         2809     0x0af9
+telephonerecorder                 2810     0x0afa
+phonographcopyright               2811     0x0afb
+caret                             2812     0x0afc
+singlelowquotemark                2813     0x0afd
+doublelowquotemark                2814     0x0afe
+cursor                            2815     0x0aff
+leftcaret                         2979     0x0ba3
+rightcaret                        2982     0x0ba6
+downcaret                         2984     0x0ba8
+upcaret                           2985     0x0ba9
+overbar                           3008     0x0bc0
+downtack                          3010     0x0bc2
+upshoe                            3011     0x0bc3
+downstile                         3012     0x0bc4
+underbar                          3014     0x0bc6
+jot                               3018     0x0bca
+quad                              3020     0x0bcc
+uptack                            3022     0x0bce
+circle                            3023     0x0bcf
+upstile                           3027     0x0bd3
+downshoe                          3030     0x0bd6
+rightshoe                         3032     0x0bd8
+leftshoe                          3034     0x0bda
+lefttack                          3036     0x0bdc
+righttack                         3068     0x0bfc
+hebrew_aleph                      3296     0x0ce0
+hebrew_beth                       3297     0x0ce1
+hebrew_gimmel                     3298     0x0ce2
+hebrew_daleth                     3299     0x0ce3
+hebrew_he                         3300     0x0ce4
+hebrew_waw                        3301     0x0ce5
+hebrew_zayin                      3302     0x0ce6
+hebrew_het                        3303     0x0ce7
+hebrew_teth                       3304     0x0ce8
+hebrew_yod                        3305     0x0ce9
+hebrew_finalkaph                  3306     0x0cea
+hebrew_kaph                       3307     0x0ceb
+hebrew_lamed                      3308     0x0cec
+hebrew_finalmem                   3309     0x0ced
+hebrew_mem                        3310     0x0cee
+hebrew_finalnun                   3311     0x0cef
+hebrew_nun                        3312     0x0cf0
+hebrew_samekh                     3313     0x0cf1
+hebrew_ayin                       3314     0x0cf2
+hebrew_finalpe                    3315     0x0cf3
+hebrew_pe                         3316     0x0cf4
+hebrew_finalzadi                  3317     0x0cf5
+hebrew_zadi                       3318     0x0cf6
+hebrew_kuf                        3319     0x0cf7
+hebrew_resh                       3320     0x0cf8
+hebrew_shin                       3321     0x0cf9
+hebrew_taf                        3322     0x0cfa
+BackSpace                        65288     0xff08
+Tab                              65289     0xff09
+Linefeed                         65290     0xff0a
+Clear                            65291     0xff0b
+Return                           65293     0xff0d
+Pause                            65299     0xff13
+Scroll_Lock                      65300     0xff14
+Sys_Req                          65301     0xff15
+Escape                           65307     0xff1b
+Multi_key                        65312     0xff20
+Kanji                            65313     0xff21
+Home                             65360     0xff50
+Left                             65361     0xff51
+Up                               65362     0xff52
+Right                            65363     0xff53
+Down                             65364     0xff54
+Prior                            65365     0xff55
+Next                             65366     0xff56
+End                              65367     0xff57
+Begin                            65368     0xff58
+Win_L                            65371     0xff5b
+Win_R                            65372     0xff5c
+.CE
+.CS
+App                              65373     0xff5d
+Select                           65376     0xff60
+Print                            65377     0xff61
+Execute                          65378     0xff62
+Insert                           65379     0xff63
+Undo                             65381     0xff65
+Redo                             65382     0xff66
+Menu                             65383     0xff67
+Find                             65384     0xff68
+Cancel                           65385     0xff69
+Help                             65386     0xff6a
+Break                            65387     0xff6b
+Hebrew_switch                    65406     0xff7e
+Num_Lock                         65407     0xff7f
+KP_Space                         65408     0xff80
+KP_Tab                           65417     0xff89
+KP_Enter                         65421     0xff8d
+KP_F1                            65425     0xff91
+KP_F2                            65426     0xff92
+KP_F3                            65427     0xff93
+KP_F4                            65428     0xff94
+KP_Multiply                      65450     0xffaa
+KP_Add                           65451     0xffab
+KP_Separator                     65452     0xffac
+KP_Subtract                      65453     0xffad
+KP_Decimal                       65454     0xffae
+KP_Divide                        65455     0xffaf
+KP_0                             65456     0xffb0
+KP_1                             65457     0xffb1
+KP_2                             65458     0xffb2
+KP_3                             65459     0xffb3
+KP_4                             65460     0xffb4
+KP_5                             65461     0xffb5
+KP_6                             65462     0xffb6
+KP_7                             65463     0xffb7
+KP_8                             65464     0xffb8
+KP_9                             65465     0xffb9
+KP_Equal                         65469     0xffbd
+F1                               65470     0xffbe
+F2                               65471     0xffbf
+F3                               65472     0xffc0
+F4                               65473     0xffc1
+F5                               65474     0xffc2
+F6                               65475     0xffc3
+F7                               65476     0xffc4
+F8                               65477     0xffc5
+F9                               65478     0xffc6
+F10                              65479     0xffc7
+L1                               65480     0xffc8
+L2                               65481     0xffc9
+L3                               65482     0xffca
+L4                               65483     0xffcb
+L5                               65484     0xffcc
+L6                               65485     0xffcd
+L7                               65486     0xffce
+L8                               65487     0xffcf
+L9                               65488     0xffd0
+L10                              65489     0xffd1
+R1                               65490     0xffd2
+R2                               65491     0xffd3
+R3                               65492     0xffd4
+R4                               65493     0xffd5
+R5                               65494     0xffd6
+R6                               65495     0xffd7
+R7                               65496     0xffd8
+R8                               65497     0xffd9
+R9                               65498     0xffda
+R10                              65499     0xffdb
+R11                              65500     0xffdc
+R12                              65501     0xffdd
+F33                              65502     0xffde
+R14                              65503     0xffdf
+R15                              65504     0xffe0
+Shift_L                          65505     0xffe1
+Shift_R                          65506     0xffe2
+Control_L                        65507     0xffe3
+Control_R                        65508     0xffe4
+Caps_Lock                        65509     0xffe5
+Shift_Lock                       65510     0xffe6
+Meta_L                           65511     0xffe7
+Meta_R                           65512     0xffe8
+Alt_L                            65513     0xffe9
+Alt_R                            65514     0xffea
+Super_L                          65515     0xffeb
+Super_R                          65516     0xffec
+Hyper_L                          65517     0xffed
+Hyper_R                          65518     0xffee
+Delete                           65535     0xffff
+.CE
+
+.SH "参见 SEE ALSO"
+bind
+
+.SH "关键字 KEYWORDS"
+keysym, bind, binding
+
+.SH "[中文版维护人]"
+.B bbbush <bbbush at 163.com>
+.SH "[中文版最新更新]"
+.B 2003/11/14
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lappend.n b/src/mann/lappend.n
new file mode 100644
index 0000000..733f52e
--- /dev/null
+++ b/src/mann/lappend.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lappend.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lappend.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lappend n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lappend \- 向一个变量上添加列表元素
+.SH "总览 SYNOPSIS"
+\fBlappend \fIvarName \fR?\fIvalue value value ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令把由 \fIvarName\fR  给出的变量作为一个列表来对待,并把每个 \fIvalue\fR  参数作为独立的元素添加到这个列表上,元素间用空格分隔。如果 \fIvarName\fR  不存在,则用由 \fIvalue\fR  给出的元素建立这个列表。\fBLappend\fR 与 \fBappend\fR  类似,但它的 \fIvalue\fRs 被作为列表的元素来添加而不是作为原始文本。这个命令提供了建造大列表的一种相对高效的方式。例如,在 \fB$a\fR  很长的时候,“\fBlappend a $b\fR”比“\fBset a [concat $a [list $b]]\fR”更高效。
+
+.SH "参见 SEE ALSO"
+list(n), lindex(n), linsert(n), llength(n), lsort(n), lrange(n)
+
+.SH "关键字 KEYWORDS"
+append, element, list, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/05
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/library.n b/src/mann/library.n
new file mode 100644
index 0000000..b149173
--- /dev/null
+++ b/src/mann/library.n
@@ -0,0 +1,386 @@
+'\"
+'\" Copyright (c) 1991-1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: library.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: library.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH library n "8.0" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+auto_execok, auto_import, auto_load, auto_mkindex, auto_mkindex_old, auto_qualify, auto_reset, tcl_findLibrary, parray, tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter, tcl_wordBreakBefore \- standard library of Tcl procedures
+.SH "总览 SYNOPSIS"
+.nf
+\fBauto_execok \fIcmd\fR
+\fBauto_import \fIpattern\fR
+\fBauto_load \fIcmd\fR
+\fBauto_mkindex \fIdir pattern pattern ...\fR
+\fBauto_mkindex_old \fIdir pattern pattern ...\fR
+\fBauto_qualify \fIcommand namespace\fR
+\fBauto_reset\fR
+\fBtcl_findLibrary \fIbasename version patch initScript enVarName varName\fR
+\fBparray \fIarrayName\fR
+.VS
+\fBtcl_endOfWord \fIstr start\fR
+\fBtcl_startOfNextWord \fIstr start\fR
+\fBtcl_startOfPreviousWord \fIstr start\fR
+\fBtcl_wordBreakAfter \fIstr start\fR
+\fBtcl_wordBreakBefore \fIstr start\fR
+.VE
+.BE
+
+.SH "介绍 INTRODUCTION"
+.PP
+Tcl 为公共需求的功能包含了一个 Tcl 过程库。在 Tcl 库中定义的过程是适用于多种不同的应用的通用过程。用 \fBinfo library\fR 命令返回 Tcl 库的位置。除了这个 Tcl 库之外,每个应用通常都有它自己的支持过程库;这个库的位置通常用 \fB$\fIapp\fB_library\fR 全局变量的值给出,这里 \fIapp\fR 是应用的名字。例如,Tk 库的位置保持在变量 \fB$tk_library\fR 中。
+.PP
+要访问在 Tcl 库中的过程,一个应用应该 source (载入)库中的文件 \fBinit.tcl\fR,例如,Tcl 命令
+.CS
+\fBsource [file join [info library] init.tcl]\fR
+.CE
+如果在一个应用的 \fBTcl_AppInit \fR过程中调用了库过程 \fBTcl_Init\fR,则这(个加载)将自动发生。在 \fBinit.tcl\fR 中的代码将定义 \fBunknown\fR 过程和使用下面定义的自动装载机制安排其他过程在需要时装载。
+
+.SH "命令过程 COMMAND PROCEDURES"
+.PP
+在 Tcl 库中提供了下列过程:
+.TP
+\fBauto_execok \fIcmd\fR
+确定是否有一个叫 \fIcmd \fR的一个可执行文件或 shell     内置命令。如果有,它返回要传递给 \fBexec\fR     来执行这个叫 \fIcmd\fR\fI \fR的可执行文件或 shell     内置命令的那些参数的一个列表。如果没有,它返回一个空串。这个命令检查在当前查找路径中目录(由     PATH 环境变量给出),在其中查找叫 \fIcmd\fR     的一个可执行文件。在 Windows     平台上,查找被展开为相同的目录和与 \fBexec\fR     使用相同的文件名扩展。 \fBAuto_exec\fR 在一个叫 \fBauto_execs\fR\fB     \fR的数组中记住以前查找的信息;这避免在将来调用相同的     \fIcmd\fR 时进行路径查找。可以使用命令 \fBauto_reset\fR     来强迫 \fBauto_execok\fR 忘掉缓存的信息。
+.TP
+\fBauto_import \fIpattern\fR
+在 \fBnamespace import\fR 期间调用 \fBAuto_import\fR 来查看用 \fIpattern\fR 指定的导入命令是否驻留在一个 自动装载的库中。如果是,则装载这个命令,这样要建立导入连接的解释器就可以获得它们。如果这个命令不驻留在自动装载库中,\fBauto_import\fR 什么都不做。
+.TP
+\fBauto_load \fIcmd\fR
+这个命令尝试装载一个叫做 \fIcmd\fR 的 Tcl  命令的定义,它查找一个\fB自动装载路径\fR,它是一个或多个目录的一个列表。如果全局变量     \fB$auto_path\fR     存在的话,则它给出这个自动装载路径。如果没有 \fB$auto_path\fR     变量,则若 TCLLIBPATH     环境变量存在则使用它。否则自动装载路径只包含 Tcl     库目录。在自动装载路径中的每个目录中必须有描述在这个目录中定义的一个或多个命令的一个文件     \fBtclIndex\fR,和要被求值来装载每个命令的一个脚本。应当使用     \fBauto_mkindex\fR 命令来自动生成 \fBtclIndex\fR     文件。如果在一个索引文件中找到 \fIcmd\fR     ,则求值适当的脚本来建立这个命令。如果成功的建立了 \fIcmd\fR,则     \fBauto_load\fR 命令返回 1。如果没有给 \fIcmd\fR     的索引条目或这个脚本实际上定义的不是 \fIcmd\fR(例如,因为索引信息过时了), [...]
+.TP
+\fBauto_mkindex \fIdir pattern pattern ...\fR
+生成适合于 \fBauto_load \fR使用的一个索引。这个命令在 \fIdir\fR   中查找名字匹配任何 \fIpattern\fR 参数的所有文件(使用 \fBglob\fR  命令进行匹配),生成在所有匹配的文件的中定义的所有  Tcl 命令过程的一个索引,并且在 \fIdir\fR 中的一个叫 \fBtclIndex \fR的文件中存储索引信息。如果未给出模式,则假定模式是 \fB*.tcl\fR,例如
+.RS
+.CS
+\fBauto_mkindex foo *.tcl\fR
+.CE
+.LP
+将在子目录读 \fBfoo\fR 中读取所有 \fB.tcl\fR 文件并生成一个新索引文件 \fBfoo/tclIndex\fR。
+.PP
+\fBAuto_mkindex\fR 通过把 Tcl 脚本载入(source)到一个从解释器中来分析它们并监视执行的     proc 和 namespace 命令。扩展可以使用(没有文档)     auto_mkindex_parser 包来注册对 auto_load     索引有所贡献的其他命令。你必须阅读 auto.tcl     来查看这是如何工作的。
+.PP
+\fBAuto_mkindex_old\fR 在一个相对不复杂的方式分析 Tcl     脚本: 如果任何一行包含字 \fBproc\fR     为它的第一个字,则假定它为一个过程定义并接受这一行的下一个字为这个过程的名字。不是以这种方式出现的过程定义(比如,在     \fBproc \fR前面有空格)将不被编排索引。如果你的脚本包含“危险”代码,比如全局初始化代码或有特殊字符如     \fB$\fR、\fB*\fR、\fB[\fR 或 \fB]\fR 的过程名字,则你使用     auto_mkindex_old 是更安全的。
+.RE
+.TP
+\fBauto_reset\fR
+销毁被 \fBauto_execok\fR 和 \fBauto_load \fR缓存的所有信息。下次需要这些信息的时候将从磁盘重新读取。\fBAuto_reset\fR     还删除在 auto-load     中列出的所有过程,这样下次使用它们的时候将装载它们的刷新了的复本。
+.TP
+\fBauto_qualify \fIcommand namespace\fR
+计算 \fIcommand \fR的完全限定的名字的一个列表。这个列表镜像标准     Tcl 解释器用以查找命令的那个路径:     首先它在当前名字空间中查找这个命令,接着在全局名字空间中。相应的,如果     \fIcommand\fR 是相对的并且 \fInamespace\fR 不是 \fB::\fR,则返回的这个列表两个元素:     一个是由 \fInamespace\fR 界定范围的\fIcommand\fR,如同它是一个在     \fInamespace\fR 名字空间中的命令一样;而另一个 \fIcommand\fR     如同在全局名字空间中的一个命令一样。否则,如果 \fIcommand\fR     是绝对的(它以 \fB:: \fR为开始),或者 \fInamespace\fR 是 \fB::\fR,则这个列表只包含一个     \fIcommand\fR     ,如同它是一个在全局名字空间中的命令一样。
+.RS
+.PP
+在 Tcl 中自动装载设施使用 \fBAuto_qualify\fR,用来生成自动装载索引如     \fIpkgIndex.tcl\fR,和用来在运行时进行实际的函数自动装载。
+.RE
+.TP
+\fBtcl_findLibrary \fIbasename version patch initScript enVarName varName\fR
+这个命令是扩展在它们的初始化期间使用的一个标准查找过程。扩展调用这个过程来在多个标准路径中查找它们的过程。目录名字的最后的构成部分通常是     \fIbasenameversion\fR (例如,tk8.0),但在建造等级上他可能是“库”。一旦找到就把     \fIinitScript\fR 文件 source(加载)到解释器中。把在其中找到文件的那个目录保存到全局变量     \fIvarName\fR 中。如果已经定义这个变量(比如,在应用初始化期间用     C 代码),则不进行查找。否则在以下这些目录中进行查找:     由环境变量 \fIenVarName \fR给出名字的目录;相对于 Tcl     库的目录;相对于(??? relative to)在标准安装 bin 或 bin/\fIarch\fR     中的可执行文件的目录;相对于在当前建造树中的可执行文件的目录;相对于在并行建造树中的可执行文件的目录。
+.TP
+\fBparray \fIarrayName\fR
+把数组 \fIarrayName\fR    中的所有元素的名字和值输出到标准输出上。\fBArrayName\fR   必须是一个对于 \fBparray \fR的调用者是可以访问的一个数组。它可以是局部的或全局的。
+.TP
+\fBtcl_endOfWord \fIstr start\fR
+.VS
+返回字符串 \fIstr\fR 中在起始索引 \fIstart\fR  之后出现的第一个字结束(end-of-word)位置的的索引。定义字结束位置为在起始点之后跟随在第一个单字字符后面的第一个非字字符。如果在起始点之后没有字结束位置则返回     -1。关于 Tcl  如何确定哪个字符是单字字符的详情参见下面对 \fBtcl_wordchars\fR  和 \fBtcl_nonwordchars\fR 的描述。
+.TP
+\fBtcl_startOfNextWord \fIstr start\fR
+返回字符串 \fIstr\fR 中在起始索引 \fIstart\fR  之后出现的第一个字开始(start-of-word)位置的的索引。定义字开始位置为跟随在一个非字字符后面的第一个单字字符。如果在起始点之后没有字开始位置则返回 -1。
+.TP
+\fBtcl_startOfPreviousWord \fIstr start\fR
+返回字符串 \fIstr\fR 中在起始索引 \fIstart\fR  之前出现的第一个字开始(start-of-word)位置的的索引。如果在起始点之前没有字开始位置则返回  -1。
+.TP
+\fBtcl_wordBreakAfter \fIstr start\fR
+返回字符串 \fIstr\fR 中在起始索引 \fIstart\fR  之后出现的第一个字边界的索引。如果在给定字符串中在起始点之后没有边界则返回  -1。返回的索引参照组成一个边界(字符)对的第二个字符。
+.TP
+\fBtcl_wordBreakBefore \fIstr start\fR
+返回字符串 \fIstr\fR 中在起始索引 \fIstart\fR  之前出现的第一个字边界的索引。如果在给定字符串中在起始点之前没有边界则返回 -1。返回的索引参照组成一个边界(字符)对的第二个字符。
+.VE
+
+.SH "变量 VARIABLES"
+.PP
+在 Tcl 库中的过程定义或使用下列全局变量:
+.TP
+\fBauto_execs\fR
+用它来记录关于特定命令是否存在为可执行文件的信息。
+.TP
+\fBauto_index\fR
+\fBauto_load\fR 用它来保存从磁盘读来的索引信息。
+.TP
+\fBauto_noexec\fR
+如果设置了任何值,则 \fBunknown\fR     不尝试自动执行任何命令。
+.TP
+\fBauto_noload\fR
+如果设置了任何值,则 \fBunknown\fR     不尝试自动装载任何命令。
+.TP
+\fBauto_path\fR
+如果设置了它,则它必须包含一个有效的 Tcl     列表,给出在自动装载操作中要查找的目录。在启动期间初始化这个变量为依次包含:     在 TCLLIBPATH 环境变量中列出的目录,由 $tcl_library     变量命名的目录,$tcl_library 的父目录,在 $tcl_pkgPath     变量中列出的目录。
+.TP
+\fBenv(TCL_LIBRARY)\fR
+如果设置了它,则它指定包含库脚本的目录的位置(这个变量的值将被赋予     \fBtcl_library\fR 变量并被 \fBinfo library \fR命令所返回)。如果这个变量未被设置,则使用缺省的值。
+.TP
+\fBenv(TCLLIBPATH)\fR
+如果设置了它,则它必须包含一个有效的 Tcl     列表,给出在自动装载操作期间要查找的目录。必须用 Tcl     格式指定目录,使用“/”作为分隔符而不管是在什么平台上。只在初始化     \fBauto_path\fR 的时候使用这个变量。
+.TP
+\fBtcl_nonwordchars\fR
+.VS
+这个变量包含一个正则表达式,用于象 \fBtcl_endOfWord\fR     这样的例程来识别一个字符是否是一个字的一部分。如果这个模式匹配一个字符,则把这个字符作为一个非字(non-word)字符对待。在     Windows 平台上,空格、tab、和换行被作为非字字符对待。在     Unix     下,除了数字、字母和下划线之外,所有字符都是非字字符。
+.TP
+\fBtcl_wordchars\fR
+这个变量包含一个正则表达式,用于象 \fBtcl_endOfWord\fR     这样的例程来识别一个字符是否是一个字的一部分。如果这个模式匹配一个字符,则把这个字符作为一个单字字符对待。在     Windows 平台上,字有任何不是空格、tab、或换行的字符组成。在     Unix 下,字由数字、字母或下划线组成。
+.VE
+.TP
+\fBunknown_pending\fR
+\fB unknown\fR     用它来记录正在查找的命令。在 \fBunknown\fR     在自身上无穷递归的地方,使用它来检测错误。在 \fBunknown\fR     返回前删除它的值。
+
+.SH "参见 SEE ALSO"
+info(n), re_syntax(n)
+
+.SH "关键字 KEYWORDS"
+auto-exec, auto-load, library, unknown, word, whitespace 
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/06
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lindex.n b/src/mann/lindex.n
new file mode 100644
index 0000000..6c30545
--- /dev/null
+++ b/src/mann/lindex.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lindex.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lindex.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lindex n 8.2 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lindex \- 在一个列表中检索一个元素
+.SH "总览 SYNOPSIS"
+\fBlindex \fIlist index\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令把 \fIlist\fR  作为一个 Tcl 列表来对待并从它返回第  \fIindex\fR 个元素(0 参照这个列表的第一个元素)。在提取过程中,\fIlindex\fR   遵守与 Tcl  命令解释器一样的关于花括号、引号和反斜线的规则;但是,变量替换和命令替换不发生。如果 \fIindex\fR   是负数或大于等于在 \fIlist \fR中的元素数目,则返回一个空字符串。如果 \fIindex\fR   的值是 \fBend\fR,它参照这个列表中最后一个元素,并且 \fBend-\fR\fI整数  \fR参照在列表中倒数的第指定整数个元素。 
+
+.SH "参见 SEE ALSO"
+list(n), lappend(n), linsert(n), llength(n), lsearch(n), lsort(n),
+lrange(n), lreplace(n)
+
+.SH "关键字 KEYWORDS"
+element, index, list
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/06 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/linsert.n b/src/mann/linsert.n
new file mode 100644
index 0000000..3c04118
--- /dev/null
+++ b/src/mann/linsert.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: linsert.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: linsert.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH linsert n 8.2 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+linsert \- 把元素插入到一个列表中
+.SH "总览 SYNOPSIS"
+\fBlinsert \fIlist index element \fR?\fIelement element ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令通过在 \fIlist \fR的第 \fIindex \fR个元素的前面插入所有\fIelement\fR  参数来生成一个新列表。每个 \fIelement\fR 参数变成这个新列表的一个单独的元素。如果 \fIindex\fR  小于等于零,则在这个列表的开始处插入新元素。如果 \fIindex\fR  的值是 \fBend\fR,或大于等于在这个列表中的元素数目,则在这个列表的尾部添加新元素。\fBend\fR-整数 参照在列表中倒数的第指定整数个元素
+
+
+.SH "参见 SEE ALSO"
+list(n), lappend(n), llength(n)
+
+.SH "关键字 KEYWORDS"
+element, insert, list
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/06
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/list.n b/src/mann/list.n
new file mode 100644
index 0000000..6c7021b
--- /dev/null
+++ b/src/mann/list.n
@@ -0,0 +1,282 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: list.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: list.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH list n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+list \- 建立一个列表
+.SH "总览 SYNOPSIS"
+\fBlist \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令返回由所有 \fIarg\fR 组成的一个列表,如果未指定 \fIarg\fR 则返回一个空串。可按需要增加花括号和反斜线,这样就可以在结果上使用 \fBindex\fR  命令来提取原始的参数,还可以用 \fBeval\fR  执行这个结果列表,(执行时)加上由这个命令的名字组成的 \fIarg1\fR 和又它的参数组成的其他 \fIarg\fRs 。\fBList\fR  与 \fBconcat \fR生成的结果有细微的区别:  \fBconcat\fR  在形成列表之前去除一层组合,而 \fBlist\fR  直接用原始参数来工作。例如,命令
+.CS
+\fBlist a b {c d e} {f {g h}}\fR
+.CE
+将返回
+.CS
+\fBa b {c d e} {f {g h}}\fR
+.CE
+而加了同样参数的 \fBconcat\fR  将返回
+.CS
+\fBa b c d e f {g h}\fR
+.CE
+
+.SH "参见 SEE ALSO"
+lappend(n), lindex(n), linsert(n), llength(n), lsearch(n), lsort(n),
+lrange(n), lreplace(n)
+
+.SH "关键字 KEYWORDS"
+element, list
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/06
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/llength.n b/src/mann/llength.n
new file mode 100644
index 0000000..cbe2c72
--- /dev/null
+++ b/src/mann/llength.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: llength.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: llength.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH llength n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+llength \- 统计在一个列表中元素的个数
+.SH "总览 SYNOPSIS"
+\fBllength \fIlist\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+把 \fIlist\fR  作为一个列表对待并返回给出在列表中元素个数的一个十进制数的字符串。
+
+
+.SH "参见 SEE ALSO"
+list(n), lindex(n), lrange(n)
+
+.SH "关键字 KEYWORDS"
+element, list, length
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/load.n b/src/mann/load.n
new file mode 100644
index 0000000..4bcf6f5
--- /dev/null
+++ b/src/mann/load.n
@@ -0,0 +1,312 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: load.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: load.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH load n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+load \- 装载机器代码并初始化新命令。
+.SH "总览 SYNOPSIS"
+\fBload \fIfileName\fR
+.br
+\fBload \fIfileName packageName\fR
+.br
+\fBload \fIfileName packageName interp\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令把二进制代码从一个文件装载到应用的地址空间中并调用在包(package)中的初始化过程来把它加入到解释器中。\fIfileName\fR    是包含代码的文件的名字;它准确的形式在不同的系统上是不同的,但在多数系统上是一个共享库,例如,在 Solaris  下的 \fB.so\fR  文件或在 Windows 下的一个 DLL。\fIpackageName\fR   是包的名字,并被用于计算初始化过程的名字。\fIinterp\fR   是要在其中装载包的解释器的路径名(详情参见 \fBinterp\fR   手册条目);如果省略了 \fIinterp\fR  ,它的缺省是在其中调用  \fBload \fR命令的那个解释器。
+.PP
+一旦已经被装载到应用的地址空间中,两个初始化过程之一将在新代码中被调用。典型的,初始化进程将向一个   Tcl 解释器添加新命令。初始化过程的名字由    \fIpackageName\fR   和目标解释器是否是安全解释器来确定。对于通常的解释器,初始化过程的名字的形式是 \fIpkg\fR\fB_Init\fR,这里 \fIpkg\fR     与 \fIpackageName\fR   相同,但是第一个字母被转换成大写而所有其他字母被转换成小写。例如,如果 \fIpackageName\fR   是    
+\fBfoo\fR 或 \fBFOo\fR,则初始化过程的名字将是 \fBFoo_Init\fR。
+.PP
+如果目标解释器是一个安全解释器,则初始化过程的名字将是 \fIpkg\fR\fB_SafeInit\fR     而不是 \fIpkg\fR\fB_Init\fR。写 \fIpkg\fR\fB_SafeInit\fR   函数要仔细,在包中提供的功能中,只用由不可信任的代码使用是安全的的那部分初始化安全解释器。  关于 Safe-Tcl 的详细的信息,请参见 \fBsafe\fR  手册条目。
+.PP
+初始化过程必须匹配下列原型 (prototype):   
+.CS
+typedef int Tcl_PackageInitProc(Tcl_Interp *\fIinterp\fR);
+.CE
+\fIinterp\fR   
+参数标识在其中装载包的解释器。初始化过程必须返回    \fBTCL_OK\fR 或 \fBTCL_ERROR\fR  来指示是否成功完成;在有错误的情况下,应把解释器的结果设置为指向一个错误消息。初始化过程返回的结果就是  \fBload\fR  命令的结果。
+.PP
+在一个应用中对每个 \fIfileName \fR只进行一次文件的实际装载。如果一个给定的 \fIfileName\fR   被装载到多个解释器中,则第一个 \fBload\fR   将装载代码并调用初始化过程;随后的 \fBload\fR  将调用初始化过程而不再次装载代码  。不可能卸载或重载一个包。
+.PP
+\fBload\fR   命令还支持同应用静态连接的包,条件是这些包已经通过调用 \fBTcl_StaticPackage\fR  过程注册过了。如果 \fIfileName\fR  是一个空串,则必须指定\fIpackageName\fR   。
+.PP
+如果省略了 \fIpackageName\fR  或被指定为一个空串,Tcl  尝试着猜出包的名字。在不同的平台上可能是不同的。在多数 UNIX  平台上,缺省的猜测是接受 \fIfileName\fR  的最后的组成部分,如果前三个字符是 \fBlib \fR就去掉它们,使用所有随后的
+.VS
+字母和下划线作为模块的名字。
+.VE
+例如,命令 \fBload libxyz4.2.so\fR   使用模块名 \fBxyz\fR  而命令 \fBload bin/last.so {}\fR   使用模块名 \fBlast\fR。
+.VS "" br
+.PP
+如果 \fIfileName\fR  是一个空串,则必须指定 \fIpackageName\fR。\fBload\fR   命令首先用这个名字查找一个静态装载包(通过调用 \fBTcl_StaticPackage\fR    过程注册的包);如果找到了就使用它。否则,\fBload\fR   命令用这个名字查找动态装载包,如果找到就使用它。如果一些不同的文件被装载成包的不同版本,Tcl  选择被最先装载的文件。   
+.VE
+
+.SH "移植要点 PORTABILITY ISSUES"
+.TP
+\fBWindows\fR\0\0\0\0\0
+.
+在装载出现 "library not found" 错误的时候,也有可能是没找到一个依赖库。要查看依赖库,在一个 DOS  控制台中“dumpbin -imports <dllname>”来查看必须导入那些库。在当前目录中装载一个 DLL  的时候,Windows 将忽略作为一个路径指定符(specifier)的“./”,转而使用一次启发式(heuristic)的查找来找到这个 DLL。要避免如此,装载DLL  就要用   
+.CS
+    load [file join [pwd] mylib.DLL]
+.CE
+
+.SH BUGS
+.PP
+如果以不同的\fIfileName\fRs 装载同一个文件,它将被多次载入这个进程的地址空间。在不同的系统上装载的行为是不同的(一些系统可以检测多余的装载,其他的可能不能)。   
+
+.SH "参见 SEE ALSO"
+\fBinfo sharedlibextension\fR, Tcl_StaticPackage(3), safe(n)
+
+.SH "关键字 KEYWORDS"
+binary code, loading, safe interpreter, shared library
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/30  
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/loadTk.n b/src/mann/loadTk.n
new file mode 100644
index 0000000..5bd7458
--- /dev/null
+++ b/src/mann/loadTk.n
@@ -0,0 +1,285 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: loadTk.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: loadTk.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "Safe Tk" n 8.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+loadTk \- 把 Tk 装载到一个安全解释器中。
+.SH "总览 SYNOPSIS"
+\fB::safe::loadTk \fIslave\fR ?\fB\-use\fR \fIwindowId\fR? ?\fB\-display\fR \fIdisplayName\fR? 
+.BE
+
+Safe Tk 基于 Safe Tcl 之上,它提供一种机制,允许对自动装载和安全解释器的包的受限制和有中介的访问。Safe Tk 增加为安全 Tk 操作配置解释器和把 Tk 装载到安全解释器的功能。
+
+.SH "描述 DESCRIPTION"
+.PP
+\fB::safe::loadTk\fR 命令在指明的解释器中初始化需要的数据结构并把 Tk 装载到其中。这个命令返回这个安全解释器的名字。如果指定了 \fB\-use\fR,使用由指定的系统决定的标识符 \fIwindowId\fR 所标识的窗口来包含这个解释器的 ``.'' 窗口;它可以是任何有效的 id,最终引用属于另一个应用的一个窗口。出于方便,如果你想要使用的窗口是应用的一个 Tk 窗口,则你可以使用这个窗口的名字(比如: \fB.x.y\fR)来替代它的窗口 Id (\fB[winfo id .x.y]\fR)。在未指定 \fB-use\fR 的时候,为这个安全解释器的 ``.'' 窗口建立一个新的顶层窗口。在 X11 上如果你想让嵌入的窗口使用其他的显示器而不是缺省的那个,可以用 \fB\-display\fR 指定它。实现的细节请参见下面的安全要点 (\fBSECURITY ISSUES\fR)  章节。
+
+.SH "安全要点 SECURITY ISSUES"
+.PP
+请阅读 Tcl 的 \fBsafe\fR 手册页来获悉对 Safe Tcl 做的基本安全考虑。
+.PP
+\fB::safe::loadTk\fR 把从解释器接受的 \fBtk_library\fR 的值增加到安全解释器的虚拟路径上,这样自动装载就能在安全解释器中工作了。
+.PP
+.PP
+就不信任从解释器对启动的陈述而论,Tk 初始化现在是安全的。\fB::safe::loadTk\fR 注册从解释器的名字,这样在调用 Tk 初始化(\fBTk_SafeInit\fR)和依次调用主解释器的 \fB::safe::InitTk\fR 的时候,它将返回想要的 \fBargv\fR 等价物(\fB\-use\fR \fIwindowId\fR,正确的 \fB\-display \fR等等...)。
+.PP
+在未使用 \fB\-use\fR 的时候,对新建立的顶层窗口进行特殊装饰,这样用户总能意识到呈现的用户界面来自潜在不安全的代码并可以轻易的删除相应的解释器。
+.PP
+在 X11 上,有冲突的 \fB\-use\fR 和 \fB\-display\fR 将生成一个致命的 X 错误。
+
+.SH "参见 SEE ALSO"
+safe(n), interp(n), library(n), load(n), package(n), source(n), unknown(n)
+ 
+.SH "关键字 KEYWORDS"
+alias, auto\-loading, auto_mkindex, load, master interpreter, safe
+interpreter, slave interpreter, source
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/15
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lower.n b/src/mann/lower.n
new file mode 100644
index 0000000..e1a73ca
--- /dev/null
+++ b/src/mann/lower.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lower.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lower.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lower n 3.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lower \- 改变一个窗口在堆栈次序中的位置
+.SH "总览 SYNOPSIS"
+\fBlower \fIwindow \fR?\fIbelowThis\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+如果省略了 \fIbelowThis\fR 参数则这个命令降低 \fIwindow\fR ,这样它将在堆栈次序上低于它的所有兄弟窗口(它将被与它交叠的任何兄弟窗口所遮挡(obscure)而不遮挡任何兄弟窗口)。如果指定了 \fIbelowThis\fR 则它必须是一个窗口的路径名字,它要么是 \fIwindow\fR的一个兄弟窗口要么是 \fIwindow\fR 的兄弟窗口的一个后代。在这种情况下,\fBlower\fR 命令将在堆栈次序上把 \fIwindow\fR 插入到 \fIbelowThis\fR (或 \fIbelowThis\fR 的祖先窗口中是 \fIwindow \fR的兄弟窗口的那个窗口)的紧下面;这最终将要么升高要么降低 \fIwindow\fR。
+
+.SH "参见 SEE ALSO"
+raise
+
+.SH "关键字 KEYWORDS"
+lower, obscure, stacking order
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lrange.n b/src/mann/lrange.n
new file mode 100644
index 0000000..6a5788a
--- /dev/null
+++ b/src/mann/lrange.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lrange.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lrange.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lrange n 7.4 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lrange \- 从一个列表返回一个或多个毗连的元素 
+.SH "总览 SYNOPSIS"
+\fBlrange \fIlist first last\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fIList\fR  必须是一个有效的 Tcl 列表。这个命令将返回由  \fIfirst\fR  到 \fIlast \fR的元素(包括它们两个)组成的一个新列表。\fIFirst\fR  或 \fIlast\fR  可以是 \fBend\fR  (或它的任何缩写)  来参照这个列表的最后的元素。如果 \fIfirst\fR   小于零,则作为零来对待。如果 \fIlast\fR   大于等于在这个列表中元素的数目,则作为 \fBend\fR  来对待。如果 \fIfirst\fR  大于 \fIlast\fR  则返回一个空串。注意: ``\fBlrange \fIlist first first\fR'' 不总是与``\fBlindex \fIlist first\fR'' 产生相同的结果(尽管对未用花括号包围起来的简单字段是相同的);但它精确的产生与``\fBlist [lindex \fIlist first\fB]\fR''相同的结果。 
+
+.SH "参见 SEE ALSO"
+lappend(n), lindex(n), linsert(n), list(n), llength(n), lreplace(n)
+
+.SH "关键字 KEYWORDS"
+element, list, range, sublist
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lreplace.n b/src/mann/lreplace.n
new file mode 100644
index 0000000..e33d126
--- /dev/null
+++ b/src/mann/lreplace.n
@@ -0,0 +1,278 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lreplace.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lreplace.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lreplace n 7.4 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lreplace \- 在一个列表中用新元素替换旧元素
+.SH "总览 SYNOPSIS"
+\fBlreplace \fIlist first last \fR?\fIelement element ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBlreplace\fR 指定要替换的元素范围的最先索引和最后索引。0 参照这个列表的第一个元素,而用 \fBend\fR  (或它的任何缩写)参照这个列表的最后一个元素。如果 \fIlist\fR  是空,则忽略 \fIfirst\fR 和 \fIlast\fR。
+
+如果 \fIfirst\fR  小于零,则作为对列表的第一个元素的参照来考虑。对于非空列表,\fIfirst\fR  指定的元素必须存在。
+
+如果 \fIlast\fR  小于零但大于 \fIfirst\fR,则在这个列表的开始处插入指定的所有元素。如果 \fIlast\fR  小于 \fIfirst\fR  则不删除元素;新元素被简单的插入到 \fIfirst \fR前面。
+
+\fIelement\fR 参数指定要添加到这个列表中被删除了元素的位置上的零个或多个新参数。每个 \fIelement\fR  参数都将变成这个列表的一个独立的元素。如果未指定 \fIelement\fR  参数,则只简单的删除在 \fIfirst\fR 和 \fIlast\fR  之间的元素。如果 \fIlist\fR  是空,在这个列表的尾部添加所有的 \fIelement\fR  参数。
+
+
+.SH "参见 SEE ALSO"
+lappend(n), lindex(n), linsert(n), list(n), llength(n), lrange(n),
+lsearch(n), lsort(n)
+
+.SH "关键字 KEYWORDS"
+element, list, replace
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lsearch.n b/src/mann/lsearch.n
new file mode 100644
index 0000000..17972d4
--- /dev/null
+++ b/src/mann/lsearch.n
@@ -0,0 +1,278 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lsearch.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lsearch.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lsearch n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lsearch \- 查看一个列表是否包含一个特定的元素
+.SH "总览 SYNOPSIS"
+\fBlsearch \fR?\fImode\fR? \fIlist pattern\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令在 \fIlist\fR   的元素中进行查找,看它们中是否有一个匹配 \fIpattern\fR。如果有,命令返回第一个匹配的元素的索引。如果没有,命令返回 \fB-1\fR。\fImode\fR  参数指示这个列表的元素以何种方式与 \fIpattern\fR  相匹配,它必须是下列值中的某一个: 
+.TP
+\fB\-exact\fR
+列表中的元素必须精确的包含与 \fIpattern \fR相同的字符串。 
+.TP
+\fB\-glob\fR
+\fIPattern\fR 是一个通配符式样的模式,它匹配使用与 \fBstring match\fR  命令相同的规则的每个列表元素。 
+.TP
+\fB\-regexp\fR
+\fIPattern\fR 被作为一个正则表达式来对待,它匹配使用在 \fBre_syntax\fR   参考页中描述的规则的每个列表元素。 
+.PP
+如果省略了 \fImode\fR  则它缺省为 \fB-glob\fR。 
+
+.SH "关键字 KEYWORDS"
+list, match, pattern, regular expression, search, string
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/06 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/lsort.n b/src/mann/lsort.n
new file mode 100644
index 0000000..dc34427
--- /dev/null
+++ b/src/mann/lsort.n
@@ -0,0 +1,404 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\" Copyright (c) 1999 Scriptics Corporation
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: lsort.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: lsort.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH lsort n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+lsort \- 给一个列表的元素排序  
+.SH "总览 SYNOPSIS"
+\fBlsort \fR?\fIoptions\fR? \fIlist\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令给 \fIlist \fR的元素排序,返回按整理后的次序(排列)的一个新列表。\fBlsort\fR    命令的实现使用了归并排序算法,这个算法有 O(n log   n) 性能特征的一个稳定的排序算法。
+.PP
+缺省的使用 ASCII   排序,并按升序返回结果。但是,可以在 \fIlist\fR    的前面指定任何下列参数来控制排序处理(接受唯一性的缩写):  
+.TP 20
+\fB\-ascii\fR
+字符串比较使用 ASCII (作为)整理(collation)次序。这是缺省的。 
+.TP 20
+\fB\-dictionary\fR
+使用字典式样的比较。除了下列两点之外它同于 \fB-ascii\fR。(a)   除了作为一个 tie-breaker 之外忽略大写,(b)   如果字符串包含嵌入的数字,数字作为整数来比较而不是字符。例如,在 \fB-dictionary\fR    模式下,\fBbigBoy\fR   排序在 \fBbigbang\fR 和 \fBbigboy \fR之间,而 \fBx10y\fR    排序在 \fBx9y\fR 和 \fBx11y \fR之间。  
+.TP 20
+\fB\-integer\fR
+把列表元素转换成整数并使用整数比较。 
+.TP 20
+\fB\-real\fR
+把列表元素转换成浮点值并使用浮点比较。  
+.TP 20
+\fB\-command\0\fIcommand\fR
+使用 \fIcommand\fR    作为一个比较命令。想比较两个元素,要求由 \fIcommand\fR   构成的一个 Tcl 脚本的值,并加上两个元素作为(向这个过程)附加的参数。如果第一个参数被认定为小于、等于、或大于第二个参数,这个脚本应该分别返回小于、等于、或大于零的一个整数。  
+.TP 20
+\fB\-increasing\fR
+按升序整理这个列表(“最小” 的项目在最先)。这是缺省的。 
+.TP 20
+\fB\-decreasing\fR
+按降序整理这个列表(“最大” 的项目在最先)。  
+.TP 20
+\fB\-index\0\fIindex\fR
+如果指定了这个选项,\fIlist\fR   的每个元素自身必须是一个正确的 Tcl 子列表。不是基于整个子列表来排序,\fBlsort\fR   将从每个子列表中提取第 \fIindex \fR个元素并基于这个给定的元素来排序。\fIindex\fR   允许使用关键字 \fBend\fR   来在子列表的最后的元素上排序,
+.VS 8.3.4
+而 \fBend-\fIindex\fR sorts on a sublist element offset from the end
+.VE
+。例如,  
+.RS
+.CS
+lsort -integer -index 1 {{First 24} {Second 18} {Third 30}}
+.CE
+返回 \fB{Second 18} {First 24} {Third 30}\fR, 并且
+.VS 8.3.4
+'\"
+'\" This example is from the test suite!
+'\"
+.CS
+lsort -index end-1 {{a 1 e i} {b 2 3 f g} {c 4 5 6 d h}}
+.CE
+返回 \fB{c 4 5 6 d h} {a 1 e i} {b 2 3 f g}\fR.
+.VE
+这个选项比使用 \fB\-command\fR    来完成同样的功能要更加高效。  
+.RE
+.TP 20
+\fB\-unique\fR
+如果指定了这个选项,则保留在这个列表中找到的重复的(duplicate)元素的最后一组。注意重复是相对于在排序中使用的比较来决定的。所以如果使用了    \fI\-index 0\fR ,\fB{1 a}\fR 和 \fB{1 b}\fR   将被认为是重复的并只保留第二个元素 \fB{1 b}\fR。  
+
+
+.SH "注意 NOTES"
+.PP
+The options to \fBlsort\fR only control what sort of comparison is
+used, and do not necessarily constrain what the values themselves
+actually are.  This distinction is only noticeable when the list to be
+sorted has fewer than two elements.
+.PP
+The \fBlsort\fR command is reentrant, meaning it is safe to use as
+part of the implementation of a command used in the \fB\-command\fR
+option.
+
+.SH "范例 EXAMPLES"
+
+.PP
+Sorting a list using ASCII sorting:
+.CS
+% lsort {a10 B2 b1 a1 a2}
+B2 a1 a10 a2 b1
+.CE
+
+.PP
+Sorting a list using Dictionary sorting:
+.CS
+% lsort -dictionary {a10 B2 b1 a1 a2}
+a1 a2 a10 b1 B2
+.CE
+
+.PP
+Sorting lists of integers:
+.CS
+% lsort -integer {5 3 1 2 11 4}
+1 2 3 4 5 11
+% lsort -integer {1 2 0x5 7 0 4 -1}
+-1 0 1 2 4 0x5 7
+.CE
+
+.PP
+Sorting lists of floating-point numbers:
+.CS
+% lsort -real {5 3 1 2 11 4}
+1 2 3 4 5 11
+% lsort -real {.5 0.07e1 0.4 6e-1}
+0.4 .5 6e-1 0.07e1
+.CE
+
+.PP
+Sorting using indices:
+.CS
+% # Note the space character before the c
+% lsort {{a 5} { c 3} {b 4} {e 1} {d 2}}
+{ c 3} {a 5} {b 4} {d 2} {e 1}
+% lsort -index 0 {{a 5} { c 3} {b 4} {e 1} {d 2}}
+{a 5} {b 4} { c 3} {d 2} {e 1}
+% lsort -index 1 {{a 5} { c 3} {b 4} {e 1} {d 2}}
+{e 1} {d 2} { c 3} {b 4} {a 5}
+.CE
+
+.PP
+Stripping duplicate values using sorting:
+.CS
+% lsort -unique {a b c a b c a b c}
+a b c
+.CE
+
+.PP
+More complex sorting using a comparison function:
+.CS
+% proc compare {a b} {
+    set a0 [lindex $a 0]
+    set b0 [lindex $b 0]
+    if {$a0 < $b0} {
+        return -1
+    } elseif {$a0 > $b0} {
+        return 1
+    }
+    return [string compare [lindex $a 1] [lindex $b 1]]
+}
+% lsort -command compare \\
+        {{3 apple} {0x2 carrot} {1 dingo} {2 banana}}
+{1 dingo} {2 banana} {0x2 carrot} {3 apple}
+.CE
+
+.SH "参见 SEE ALSO"
+lappend(n), lindex(n), linsert(n), list(n), llength(n), lrange(n),
+lreplace(n), lsearch(n)
+
+.SH "关键字 KEYWORDS"
+element, list, order, sort
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/06  
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/memory.n b/src/mann/memory.n
new file mode 100644
index 0000000..927afd1
--- /dev/null
+++ b/src/mann/memory.n
@@ -0,0 +1,257 @@
+.\"
+.\" Memory.man
+.\"
+.\" Extended Tcl memory leak locator.
+.\"----------------------------------------------------------------------------
+.\" Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans.
+.\"
+.\" Permission to use, copy, modify, and distribute this software and its
+.\" documentation for any purpose and without fee is hereby granted, provided
+.\" that the above copyright notice appear in all copies.  Karl Lehenbauer and
+.\" Mark Diekhans make no representations about the suitability of this
+.\" software for any purpose.  It is provided "as is" without express or
+.\" implied warranty.
+.\"----------------------------------------------------------------------------
+.\" $Id: memory.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+.\"----------------------------------------------------------------------------
+.\"
+.TH "Memory" TCL "" "Tcl"
+.BS
+.SH NAME
+ckalloc, memory, ckfree, Tcl_DisplayMemory, Tcl_InitMemory, Tcl_ValidateAllMemory - 合法的内存分配接口
+.SH "总览 SYNOPSIS"
+.nf
+.B memory \fBinfo\fR
+
+.B memory \fBtrace\fR [\fBon|off\fR]
+
+.B memory \fBvalidate\fR [\fBon|off\fR]
+
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+
+.B memory \fBdisplay\fR \fIfile\fR
+
+.sp 2
+.ft CW
+#include <tcl.h>
+.sp
+char *
+ckalloc (unsigned size)
+.sp
+void
+ckfree (char *ptr)
+.sp
+int
+Tcl_DumpActiveMemory (char *fileName);
+.sp
+void
+Tcl_ValidateAllMemory (char *file,
+                       int   line)
+
+void
+Tcl_InitMemory (interp)
+.ft R
+'
+.SH ARGUMENTS
+.AS Tcl_Interp *fileName
+.AP uint size in
+
+.AP char *ptr in
+.AP Tcl_Interp *interp in
+A pointer to the Tcl interpreter.
+.AP char *file in
+The filename of the caller of Tcl_ValidateAllMemory.
+.AP int line in
+The line number of the caller of Tcl_ValidateAllMemory.
+.AP char *fileName in
+File to display list of active memory.
+.BE
+
+.SH "描述 DESCRIPTION"
+.SS ckalloc
+.PP
+This macro allocates memory, in the same manner as \fBmalloc\fR, with the
+following differences: One, \fBckalloc\fR checks the value returned from
+\fBmalloc\fR (it calls \fBmalloc\fR for you) and panics if the allocation
+request fails.  Two, if enabled at compile time, a version of \fBckalloc\fR
+with special memory debugging capabilities replaces the normal version of
+\fBckalloc\fR, which aids in detecting memory overwrites and leaks (repeated
+allocations not matched by corresponding frees).
+.PP
+Parameters:
+.RS 2
+\fBo \fIsize\fR - The size of the memory block to be allocated.
+.RE
+.PP
+Returns:
+.RS 2
+A pointer to the allocated memory block.
+.RE
+'
+.SS ckfree
+.PP
+This macro frees memory allocated by \fBckalloc\fR.  Like \fBckalloc\fR,
+when memory debugging is enabled, \fBckfree\fR has enhanced capabilities
+for detecting memory overwrites and leaks.
+.PP
+It is very important that you use \fBckalloc\fR when you need to allocate
+memory, and that you use \fBckfree\fR to free it.  Should you use \fBmalloc\fR
+to allocate and \fBckfree\fR to free, spurious memory validation errors will
+occur when memory debugging is enabled.  Should you use \fBfree\fR to free
+memory allocated by \fBckalloc\fR, memory corruption will occur when memory
+debugging is enabled.  Any memory that is to be become the property of the Tcl
+interpreter, such as result space, must be allocated with \fBckalloc\fR.  If
+it is absolutely necessary for an application to pass back \fBmalloc\fRed
+memory to Tcl, it will work only if Tcl is complied with the
+\fBTCL_MEM_DEBUG\fR flag turned off.  If you convert your application to use
+this facility, it will help you find memory over runs and lost memory.  Note
+that memory allocated by a C library routine requiring freeing should still be
+freed with \fBfree\fR, since it calls \fBmalloc\fR rather than \fBckalloc\fR
+to do the allocation.
+.PP
+Parmeters:
+.RS 2
+\fBo \fIptr\fR - The address of a block to free, as returned by ckalloc.
+.RE
+.sp
+'
+.SS Tcl_DumpActiveMemory
+.PP 
+This function will output a list of all currently allocated memory to the
+specified file.  The following information is outputted for each allocated
+block of memory: starting and ending addresses (excluding guard zone), size,
+source file where \fBckalloc\fR was called to allocate the block and line
+number in that file.  It is especially useful to call
+\fBTcl_DumpActiveMemory\fR after the Tcl interpreter has been deleted.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfileName\fR - The name of the file to output the memory list to.
+.RE
+'
+.SS Tcl_ValidateAllMemory
+.PP
+Forces a validation of the guard zones of all currently allocated blocks
+of memory.  Normally validation of a block occurs when its freed, unless
+full validation is enabled, in which case validation of all blocks
+occurs when \fBckalloc\fR and \fBckfree\fR are called.  This function forces
+the validation to occur at any point.
+.PP
+Parameters:
+.RS 2
+\fBo \fIfile\fR - The file that this routine is being called from, normally
+\fB__FILE__\fR.
+.br
+\fBo \fIline\fR - The line that this routine is being called from, normally
+\fB__LINE__\fR.
+.RE
+'
+.SH ENABLING MEMORY DEBUGGING
+.PP
+To enable memory debugging, Tcl should be recompiled from scratch with
+\fBTCL_MEM_DEBUG\fR defined.  This will also compile in
+a non-stub version of \fBTcl_InitMemory\fR
+to add the \fBmemory\fR command to Tcl.
+.PP
+\fBTCL_MEM_DEBUG\fR must be either left defined for all modules or undefined
+for all modules that are going to be linked together.  If they are not, link
+errors will occur, with either \fBTclDbCkfree\fR and \fBTcl_DbCkalloc\fR or
+\fBTcl_Ckalloc\fR and \fBTcl_Ckfree\fR being undefined.
+'
+.SH GUARD ZONES
+.PP
+When memory debugging is enabled, whenever a call to \fBckalloc\fR is
+made, slightly more memory than requested is allocated so the memory debugging
+code can keep track
+of the allocated memory, and also 
+eight-byte ``guard zones'' are placed in front of and behind the space that 
+will be returned to the caller.  (The size of the guard zone is defined
+by the C #define \fBGUARD_SIZE\fR in \fIbaseline/src/ckalloc.c\fR -- it
+can be extended if you suspect large overwrite problems, at some cost in
+performance.)  A known pattern is written into the guard zones and,
+on a call to \fBckfree\fR, the guard zones of the space being freed
+are checked to see if either zone has been modified in any way.
+If one has been, the guard bytes and their new contents are identified,
+and a ``low guard failed'' or ``high guard failed'' message is issued.
+The ``guard failed'' message includes the address of the memory packet 
+and the file name and line number of the code that called \fBckfree\fR.
+This allows you to detect the common sorts of one-off problems, where
+not enough space was allocated to contain the data written, for example.
+'
+.SH THE MEMORY COMMAND
+'@help: debug/memory
+'@brief: display and debug memory problems
+'
+.TP
+.B memory \fIoptions\fR
+.br
+The Tcl \fBmemory\fR command gives the Tcl developer control of Tcl's memory
+debugging capabilities.  The memory command has several suboptions, which are
+described below.  It is only available when Tcl has been compiled with memory
+debugging enabled.
+'
+.TP
+.B memory \fBinfo\fR
+.br
+生成一个报告,包含自从 Tcl 启动以来分配和释放的(内存)总数,当前分配的包(未遇到相应的到 \fBckfree \fR的调用的到 \fBckalloc\fR  的调用的当前数目)的数目,当前分配的字节数,和已分配的包和字节的最大的数目。
+'
+.TP
+.B memory \fBtrace\fR [\fBon|off\fR]
+.br
+使内存跟踪开启或关闭。在开启内存跟踪的时候,对 \fBckalloc\fR    的每次调用都导致向      \fIstderr \fR写一行跟踪信息,其组成有字 \fIckalloc\fR,随后是返回的地址,分配的内存总数,和进行分配的 C 文件名和代码的行数。例如:...
+.sp
+   \fBckalloc 40e478 98 tclProc.c 1406\fR
+.sp
+Calls to \fBckfree\fR are traced in the same manner, except that the
+word \fIckalloc\fR is replaced by the word \fIckfree\fR.
+'
+.TP
+.B memory \fBvalidate\fR [\fBon|off\fR]
+.br
+使内存生效(validation)开启或关闭。在开启内存生效的时候,在对\fBckalloc\fR 或 \fBckfree \fR的每次调用上,检查用 \fBckalloc \fR分配的每块现存的内存的守卫区(guard zone)。这有很大的性能影响而只在强烈怀疑有覆写(overwrite)问题的时候才使用。开启内存生效的益处是在覆写发生之后第一次调用 \fBckalloc\fR   或 \fBckfree\fR   的时候就能检测到守卫区覆写,而不是在释放有覆写守卫区的内存的时候,释放可能在内存覆写发生之后才发生。
+'
+.TP
+.B memory \fBtrace_on_at_malloc\fR \fInnn\fR
+.br
+在进行了 \fIcount\fR\fI \fR数目 \fBckalloc \fR之后启用内存跟踪。例如,如果你键入了 \fBmemory trace_on_at_malloc 100\fR,在第   100 次调用 \fBckalloc \fR之后,将对所有分配和释放的内存显示内存跟踪信息。因为在一个问题发生之前可能有许多内存活动,如果你能在问题出现( sets in)之前标识出一定数目的分配,决定(judicious)使用这个选项可以减轻跟踪导致的速度变慢(和生成的跟踪信息总数)。在发生一个守卫区错误时,输出自从 Tcl  启动以来发生的内存分配的当前数目。     
+.TP
+.B memory \fBbreak_on_malloc\fR \fInnn\fR
+.br
+在进行了 \fB\fIcount\fR\fR  数目的 \fBckalloc\fR  分配之后,输出一个(中断)消息,表示它现在想进入 C 调试器。  Tcl  将向自身发出一个 \fISIGINT\fR  信号。如果你在一个 C  调试器下运行 Tcl,它将接着进入调试器命令模式。     
+'
+.TP
+.B memory \fBdisplay\fR \fIfile\fR
+.br
+向指定文件写当前所有分配的内存的一个列表。
+'@endhelp
+'
+.SH DEBUGGING DIFFICULT MEMORY CORRUPTION PROBLEMS
+.PP
+Normally, Tcl compiled with memory debugging enabled will make it easy to isolate
+a corruption problem.  Turning on memory validation with the memory command
+can help isolate difficult problems.
+If you suspect (or know) that corruption is 
+occurring before the Tcl interpreter comes up far enough for you to
+issue commands, you can set \fBMEM_VALIDATE\fR define, recompile 
+tclCkalloc.c and rebuild Tcl.  This will enable memory validation
+from the first call to \fBckalloc\fR, again, at a large performance impact.
+.PP
+If you are desperate and validating memory on every call to \fBckalloc\fR
+and \fBckfree\fR isn't enough, you can explicitly call
+\fBTcl_ValidateAllMemory\fR directly at any point.  It takes a \fIchar *\fR
+and an \fIint\fR which are normally the filename and line number of the
+caller, but they can actually be anything you want.  Remember to remove
+the calls after you find the problem.
+'
+.SH "关键字 KEYWORDS"
+ckalloc, ckfree, free, memory, malloc
+
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/messageBox.n b/src/mann/messageBox.n
new file mode 100644
index 0000000..5ac6fd6
--- /dev/null
+++ b/src/mann/messageBox.n
@@ -0,0 +1,315 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: messageBox.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: messageBox.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_messageBox n 4.2 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_messageBox \- 弹出一个消息窗口并等待用户响应。
+.SH "总览 SYNOPSIS"
+\fBtk_messageBox \fR?\fIoption value ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个过程建立并显示一个消息窗口,它带有一个用户消息,一个图标和一组按钮。用一个唯一的符号名字标识消息窗口中的每个按钮(参见 \fB-type\fR 选项)。在弹出消息窗口之后,\fBtk_messageBox\fR 等待用户选择按钮中的一个。接着返回选择的按钮的符号名字。
+
+支持下列选项-值对:
+.TP
+\fB\-default\fR \fIname\fR
+\fIName\fR 给出这个消息窗口的缺省按钮的符号名字(‘ok’、‘cancel’和诸如此类)。符号名字的列表请参见     \fB-type\fR。如果这个消息框只有一个按钮则它将自动成为缺省,如果未指定这个选项,则不会有任何缺省按钮。
+.TP
+\fB\-icon\fR \fIiconImage\fR
+指定要显示的一个图标。\fIIconImage\fR 必须是下列之一: \fBerror\fR、\fBinfo\fR、\fBquestion\fR     或 \fBwarning\fR。如果未指定这个选项,则显示 info 图标。
+.TP
+\fB\-message\fR \fIstring\fR
+指定在这个消息框中显示的消息。
+.TP
+\fB\-parent\fR \fIwindow\fR
+使 \fIwindow\fR     成为这个消息框的逻辑父窗口。这个消息框在它的父窗口顶上显示。
+.TP
+\fB\-title\fR \fItitleString\fR
+指定一个字符串显示为这个消息窗口的标题。缺省值为一个空串。
+.TP
+\fB\-type\fR \fIpredefinedType\fR
+安排要显示的预定按钮集合。\fIpredefinedType \fR可能是下列值:
+.RS
+.TP 18
+\fBabortretryignore\fR
+显示三个按钮,它们的符号名字是 \fBabort\fR、\fBretry\fR   和 \fBignore\fR。
+.TP 18
+\fBok\fR
+显示一个按钮,它的符号名字是 \fBok\fR。
+.TP 18
+\fBokcancel\fR
+显示两个按钮,它们的符号名字是 \fBok\fR 和 \fBcancel\fR。
+.TP 18
+\fBretrycancel\fR
+显示两个按钮,它们的符号名字是 \fBretry\fR 和 \fBcancel\fR。
+.TP 18
+\fByesno\fR
+显示两个按钮,它们的符号名字是 \fByes\fR 和 \fBno\fR。
+.TP 18
+\fByesnocancel\fR
+显示三个按钮,它们的符号名字是 \fByes\fR、\fBno\fR  和 \fBcancel\fR。
+.RE
+.PP
+.SH "示例 EXAMPLE"
+.CS
+set answer [tk_messageBox \-message "Really quit?" \-type yesno \-icon question]
+switch -- $answer {
+    yes exit
+    no {tk_messageBox \-message "I know you like this application!" \-type ok}
+}
+.CE
+
+.SH "关键字 KEYWORDS"
+message box
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/msgcat.n b/src/mann/msgcat.n
new file mode 100644
index 0000000..86c9322
--- /dev/null
+++ b/src/mann/msgcat.n
@@ -0,0 +1,430 @@
+'\"
+'\" Copyright (c) 1998 Mark Harrison.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" SCCS: @(#) msgcat.n
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: msgcat.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "msgcat" n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+msgcat \- Tcl 消息目录
+.SH "总览 SYNOPSIS"
+\fBpackage require Tcl 8.2\fR
+.sp
+\fBpackage require msgcat 1.1\fR
+.sp
+\fB::msgcat::mc \fIsrc-string\fR
+.sp
+\fB::msgcat::mclocale \fR?\fInewLocale\fR?
+.sp
+\fB::msgcat::mcpreferences\fR
+.sp
+\fB::msgcat::mcload \fIdirname\fR
+.sp
+\fB::msgcat::mcset \fIlocale src-string \fR?\fItranslate-string\fR?
+.sp
+\fB::msgcat::mcunknown \fIlocale src-string\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBmsgcat\fR 包提供用来管理多语言的用户界面的一系列函数。在独立于应用的一个“消息目录”中定义文本串,可以编辑和修改这些文本串而不用修改应用的源代码。通过向这个消息目录增加一个新文件来提供一个新语言或地域(locale)。
+.PP
+对任何应用和包使用消息目录都是可选的,但是鼓励你使用它,以便应用或包在多语言环境中被采用。                 
+
+.SH "命令 COMMANDS
+.TP
+\fB::msgcat::mc \fIsrc-string\fR ?\fIarg arg ...\fR?
+依照用户的当前地区,返回 \fIsrc-string\fR   的翻译(translation)。如果在 \fIsrc-string\fR 之后给出了附加的参数,使用 \fBformat\fR  命令把 \fIsrc-string\fR\fI \fR的翻译中的转换指定符替换成补充参数。
+
+为了翻译 \fIsrc-string \fR\fB::msgcat::mc\fR  将在当前名字空间中查找定义的消息;如果未找到,它将在当前的名字空间的父空间中查找,以此类推直到到达全局名字空间。如果不存在转换字符串,调用 \fB::msgcat::mcunknown\fR 并返回 \fB::msgcat::mcunknown\fR  的返回。
+.PP
+\fB::msgcat::mc\fR  是用来本地化一个应用的主要函数。不再直接的使用英文字符串,一个应用可以把英文字符串传递给 \fB::msgcat::mc\fR 并使用它的结果。如果以这种方式用一种语言写了一个应用,通过简单的定义新的消息目录条目,以后增加附加的语言支持是很容易的。
+.TP
+\fB::msgcat::mclocale \fR?\fInewLocale\fR? 
+这个函数把地域设置成 \fInewLocale\fR。如果省略了 \fInewLocale\fR,返回当前的地域,否则当前的地域被设置成 \fInewLocale\fR。初始的地域缺省为在用户的环境变量中指定的地域。关于地域字符串的格式的详细描述参见下面的 \fBLOCALE AND SUBLOCALE SPECIFICATION\fR 地域和子地域指定章节。   
+.TP
+\fB::msgcat::mcpreferences\fR
+返回一个有序的地域列表,它们是基于用户指定的语言,以用户喜好程度为次序。次序是从最偏好到最不喜好的。如果用户已经指定了LANG=en_US_funky,这个过程将返回{en_US_funky en_US en}。
+.TP
+\fB::msgcat::mcload \fIdirname\fR
+在指定的目录中查找一个文件,这个文件匹配用 \fB::msgcat::mcpreferences \fR返回的语言指定。每个文件的根文件名是地域字符串,扩展名是“.msg”。返回匹配的指定和装载了消息的数目。 
+.TP
+\fB::msgcat::mcset \fIlocale src-string \fR?\fItranslate-string\fR?
+在指定的 \fIlocale \fR中设置从 \fIsrc-string\fR  到 \fItranslate-string\fR  的翻译。如果未指定 \fItranslate-string\fR,对二者都使用 \fIsrc-string\fR 。函数返回 \fItranslate-string\fR。  
+.TP
+\fB::msgcat::mcunknown \fIlocale src-string\fR
+在当前的地域中没有给 \fIsrc-string\fR 定义的翻译的情况下,这个例程被 \fB::msgcat::mc\fR  调用。缺省的动作是返回  \fIsrc-string\fR。这个过程可以被这个应用重新定义,比如对每个未知字符串记录错误消息日志。在与 \fB::msgcat::mc \fR相同的栈层次上调用 \fB::msgcat::mcunknown\fR 过程。 \fB::msgcat::mcunknown\fR  的返回值被用做 \fB::msgcat::mc \fR的返回值。 
+
+.SH "地域和子地域规定 LOCALE AND SUBLOCALE SPECIFICATION"
+.PP
+用地域字符串指定地域。地域字符串的组成是一个语言代码,一个可选的国家(地区)代码,一个可选的特定于系统代码,它们用“_”分割。国家和语言代码在标准ISO-639 和 ISO-3166 中。例如,地域“en”指定 English 而“en_US”指定  U.S.  English。
+.PP
+区域定义缺省为装载 \fBmsgcat \fR包时在 \fBenv(LANG) \fR中的值。如果未定义 \fBenv(LANG)\fR,则地域缺省为“C”。
+.PP
+在用户指定一个地域的时候,在字符串翻译期间进行“最佳匹配”查找。例如,如果用户指定了 en_UK_Funky,按“en_UK_Funky”、“en_UK”、和“en” 的次序查找地域,直到找到一个匹配的字符串翻译。如果没有找到这个字符串的翻译,则调用 \fB::msgcat::unknown\fR。
+.PP
+译注:常用地域字符串的一部分
+.CS
+语言	国家(地区)	地域 ID
+Arabic	Saudi Arabia	ar_SA
+Chinese (Simplified)	China	zh_CN
+Chinese (Traditional)	Taiwan	zh_TW
+English	United States	en_US
+French	France	fr_FR
+German	Germany	de_DE
+Hebrew	Israel	iw_IL
+Italian	Italy	it_IT
+Japanese	Japan	ja_JP
+Korean	South Koreako_KR
+Spanish	Spain	es_ES
+Swedish	Sweden	sv_SE
+.CE
+
+.SH NAME
+.PP
+在消息目录中存储的字符串被存储为相对于在其中增加它们的那个名字空间。这允许多个包使用相同的字符串而不用害怕与其他包冲突。它还允许源字符串被缩写而减少(less prone to)排字错误。    
+.PP
+例如,执行代码 
+.CS
+mcset en hello "hello from ::"
+namespace eval foo {mcset en hello "hello from ::foo"}
+puts [mc hello]
+namespace eval foo {puts [mc hello]}
+.CE
+将输出   
+.CS
+hello from ::
+hello from ::foo
+.CE
+.PP
+在查找一个消息的翻译的时候,消息目录将首先查找当前名字空间,接着是当前名字空间的父名字空间,以次类推知道到达全局名字空间。这允许子名字空间从它的父名字空间“继承”消息。
+.PP
+例如,执行代码        
+.CS
+mcset en m1 ":: message1"
+mcset en m2 ":: message2"
+mcset en m3 ":: message3"
+namespace eval ::foo {
+    mcset en m2 "::foo message2"
+    mcset en m3 "::foo message3"
+}
+namespace eval ::foo::bar {
+    mcset en m3 "::foo::bar message3"
+}
+puts "[mc m1]; [mc m2]; [mc m3]"
+namespace eval ::foo {puts "[mc m1]; [mc m2]; [mc m3]"}
+namespace eval ::foo::bar {puts "[mc m1]; [mc m2]; [mc m3]"}
+.CE
+将输出
+.CS
+:: message1; :: message2; :: message3
+:: message1; ::foo message2; ::foo message3
+:: message1; ::foo message2; ::foo::bar message3
+.CE
+
+.SH "消息文件的定位和格式 LOCATION AND FORMAT OF MESSAGE FILES"
+.PP
+消息文件可以位于任何目录中,取决于下列条件:
+.IP [1]
+给一个包的所有消息文件都在相同的目录中。  
+.IP [2]
+消息文件名跟一个地域指定符并跟随着“.msg”。例如:        
+.CS
+es.msg    -- spanish
+en_UK.msg -- UK English
+.CE
+.IP [3]
+这个文件包含一系列对 mcset 的调用,它们为这个语言设置需要的翻译字符串。例如:   
+.CS
+::msgcat::mcset es "Free Beer!" "Cerveza Gracias!"
+.CE
+
+.SH "推荐的对包的消息设置 RECOMMENDED MESSAGE SETUP FOR PACKAGES"
+.PP
+如果一个包被安装到\fBtcl_pkgPath\fR  的一个子目录中并通过 \fBpackage require\fR 装载,推荐下列过程。
+.IP [1]
+在包安装期间,在你的包目录下建立一个子目录\fBmsgs\fR。     
+.IP [2]
+复制你的 *.msg 文件到这个目录中。    
+.IP [3]
+在你的包初始化脚本中增加下列命令:          
+.CS
+# load language files, stored in msgs subdirectory
+::msgcat::mcload [file join [file dirname [info script]] msgs]
+.CE
+
+.SH "给 FORMAT 和 SCAN 命令的定位代码 POSTITIONAL CODES FOR FORMAT AND SCAN COMMANDS"
+.PP
+用做给 \fBformat\fR 的参数的一个消息字符串中的转换指定符可以包含一个 XPG3 位置指定符。例如,它可以按句法的需要在翻译的时候重新安排句子结构。  
+.CS
+format "We produced %d units in location %s" $num $city
+format "In location %s we produced %d units" $city $num
+.CE
+.PP
+可使用定位参数来处理:   
+.CS
+format "We produced %1\\$d units in location %2\\$s" $num $city
+format "In location %2\\$s we produced %1\\$d units" $num $city
+.CE
+.PP
+类似的,可以在 \fBscan\fR 中使用定位参数来提取国际化字符串中的值。
+
+.SH "感谢 CREDITS"
+.PP
+消息目录代码由 Mark Harrison 开发。  
+
+.SH "参见 SEE ALSO"
+format(n), scan(n), namespace(n), package(n)
+
+.SH "关键字 KEYWORDS"
+internationalization, i18n, localization, l10n, message, text, translation
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.CS
+译注:部分句子写的莫名其妙,余加以意译。
+.CE
+.SH "[中文版最新更新]"
+.B 2001/10/12
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/namespace.n b/src/mann/namespace.n
new file mode 100644
index 0000000..be3c88a
--- /dev/null
+++ b/src/mann/namespace.n
@@ -0,0 +1,499 @@
+'\"
+'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: namespace.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: namespace.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH namespace n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+namespace \- 建立及操作给命令和变量的上下文
+.SH "总览 SYNOPSIS"
+\fBnamespace \fR?\fIoption\fR? ?\fIarg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBnamespace\fR 命令让你建立、访问、和销毁给命令和变量的独立的上下文。名字空间的概述参见下面的\fBWHAT IS A NAMESPACE?\fR (什么是名字空间) 章节。下面列出了合法的 \fIoption \fR。注意你可以缩写这些 \fIoption \fR。
+.TP
+\fBnamespace children \fR?\fInamespace\fR? ?\fIpattern\fR?
+返回属于名字空间 \fInamespace \fR的所有子名字空间的一个列表。如果未指定\fInamespace\fR,则返回当前名字空间的所有子名字空间。这个命令返回完全限制的(fully-qualified)的名字,它们以 \fB:: \fR开始。如果给出了可选的 \fIpattern\fR  ,则这个命令只返回匹配通配符式样模式的名字。确定实际使用的模式如下: 以 \fB::\fR  开始的模式直接使用,否则把命令空间 \fInamespace\fR  (或当前名字空间的完全限制的名字) 加在这个模式的前面。
+.TP
+\fBnamespace code \fIscript\fR
+为以后执行脚本 \fIscript \fR而捕获(Capture)当前的名字空间上下文。它返回一个新脚本,在这个结果脚本中 \fIscript\fR  被包裹在一个 \fBnamespace inscope\fR 命令中。新脚本有两个重要的特性。首先,它可以在任何名字空间中被求值,而导致 \fIscript\fR  在当前的名字空间(调用 \fBnamespace code\fR命令的那个名字空间)中被求值。其次,可以向结果脚本添加补充的参数   并且它们将被作为补充参数而传递给 \fIscript\fR   。例如,假设在名字空间 \fB::a::b\fR 中调用命令\fBset script [namespace code {foo bar}]\fR。则可以在任何名字空间中执行 \fBeval "$script x y"\fR   (假定 \fBscript\fR  的值已经被正确的传递进来) 而与命令 \fBnamespace eval ::a::b {foo bar x y} \fR有相同的效果。这个命令是必须有的,因为象 Tk   这样的扩展一般在全局名字空间 [...]
+.TP
+\fBnamespace current\fR
+返回给当前名字空间的完全限定的名字。全局名字空间的实际的名字是“”(一个空串),但这个命令为了编程者的方便而为全局名字空间返回 \fB::\fR。
+.TP
+\fBnamespace delete \fR?\fInamespace namespace ...\fR?
+删除所有的名字空间 \fInamespace\fR  和这些名字空间包含的所有变量、过程、和子名字空间。如果在名字空间中一个过程正在执行,在这个过程返回之前这个过程保持存在;但是,会标记这个名字空间来防止其他代码通过名字查找它。如果一个名字空间不存在,这个命令返回一个错误。如果未给出名字空间名字,这个命令什么也不做。
+.TP
+\fBnamespace eval\fR \fInamespace arg\fR ?\fIarg ...\fR?
+激活叫 \fInamespace\fR  的名字空间并在这个上下文中对某些脚本进行求值。如果这个名字空间不存在,则建立它。如果指定了多于一个 \fIarg\fR    参数,则用与 \fBeval\fR命令一样的方式把这些参数串联起来并用空格彼此分隔,并对结果进行求值。
+.br
+.sp
+如果 \fInamespace\fR  有前导的名字空间限定符并且有的前导名字空间不存在,则自动建立它们。
+.TP
+\fBnamespace export \fR?\-\fBclear\fR? ?\fIpattern pattern ...\fR?
+指定从一个名字空间中导出那些命令。导出的那些命令以后可以被其他名字空间用 \fBnamespace import\fR 命令导入。在一个名字空间中定义的命令和这个名字空间以前导入的命令二者都可以被这个名字空间导出。在执行\fBnamespace export\fR  命令的时候,这些(要导出的)命令不是必须已经被定义了。每个 \fIpattern\fR   可以包含通配符式样的特殊字符,但不可以包含任何名字空间限定符。就是说,模式只能指定在当前(导出)的名字空间中的命令。把所有 \fIpattern   \fR添加到这个名字空间的导出模式列表上。如果给出了 -\fBclear\fR  标志,则在添加任何    \fIpattern\fR 参数之前,重置这个名字空间的导出模式列表为空。如果未给出 \fIpattern\fRs 并且未给出 -\fBclear\fR标志,这个命令返回这个名字空间当前的导出列表。
+.TP
+\fBnamespace forget \fR?\fIpattern pattern ...\fR?
+删除以前从一个名字空间导入的命令。所有 \fIpattern\fR 都是一个限定的命令如 \fBfoo::x\fR 或 \fBa::b::p*\fR。限定的名字包含 \fB::\fR并且用一个或多个名字空间的名字限制一个名字。每个 \fIpattern\fR   被一个导出名字空间的名字所限制,并且在限定的名字的结束处可以有通配符式样的特殊字符。通配字符可以不出现在名字空间的名字中。这个命令首先查找匹配的导出命令。接着检查是否有些命令是以前由当前名字空间导入的。如果有,这个命令删除相应的导入的命令。效果上,这个命令撤消 \fBnamespace import\fR命令的动作。
+.TP
+\fBnamespace import \fR?\fB\-force\fR? ?\fIpattern\fR \fIpattern ...\fR?
+导入命令到一个名字空间中。所有 \fIpattern\fR都是一个限定的命令如\fBfoo::x\fR 或 \fBa::p*\fR。就是说,它包括一个导出名字空间的名字,并且在限定的名字的结束处可以有通配符式样的特殊字符。通配字符可以不出现在名字空间的名字中。把所有匹配某个 \fIpattern\fR 字符串并且被它们的名字空间导出的命令添加到当前名字空间中。这是通过在当前名字空间中建立一个新命令,这个新命令指向在它的原始名字空间中的导出命令;当调用这个新导入的命令的时候,它调用那个导出的命令。如果一个导入的命令与一个现存的命令有冲突,则这个命令通常返回一个错误。但是,如果给出了 -\fBforce\fR 选项,在则导入命令将悄无声息的替换现存的命令。\fBnamespace import\fR  命令有当前快照(snapshot)语义: 就是说,在要求(导入)的命令中,只导入在导出的名字空间中定义了的那些命令。换句话说,你只能导入在执行 \fBnamespace import\fR 的时候在一个名字空间中(已经存在)的命令。如果此后又定义并导出了其他命令,则不会导入它们。
+.TP
+\fBnamespace inscope\fR \fInamespace arg\fR ?\fIarg ...\fR?
+在一个特定的名字空间的上下文中执行一个脚本。不希望编程者直接执行这个命令;例如,在应用使用 \fBnamespace code\fR命令建立回调脚本,并且应用接着要向 Tk组件注册它的时候,隐式的生成对它的调用。除了有 \fBlappend\fR语义并且名字空间必须已经存在之外,\fBnamespace inscope\fR命令与 \fBnamespace eval\fR 命令非常相似。它把第一个参数作为一个列表来对待,接着把后面的所有参数作为适当的列表元素添加到第一个参数的尾部。\fBnamespace inscope ::foo a x y z\fR 等价于\fBnamespace eval ::foo [concat a [list x y z]]\fR。这个 \fBlappend>\fR语义很重要,因为许多回调 脚本实际上是前缀。
+.TP
+\fBnamespace origin \fIcommand\fR
+返回导入的命令 \fIcommand\fR所引用的原始命令的完全限定的名字。当一个命令被导入一个名字空间的时候,在这个名字空间中建立一个新命令,它指向在导出名字空间中的实际命令。如果一个命令被导入到一个名字空间的序列 \fIa, b,...,n \fR之中,这里每一个后续的名字空间只从前面的名字空间中导入命令,这个命令返回在第一个名字空间中的原始命令的完全限定的名字 \fIa\fR。如果 \fIcommand\fR不引用一个导入的命令,返回这个(\fIcommand\fR)命令自己的完全限定的名字。
+.TP
+\fBnamespace parent\fR ?\fInamespace\fR?
+返回给名字空间 \fInamespace\fR 的父名字空间的完全限定的名字。如果未指定 \fInamespace\fR,返回当前名字空间的父名字空间的完全限定的命令。
+.TP
+\fBnamespace qualifiers\fR \fIstring\fR
+返回给 \fIstring \fR的所有前导的名字空间限定符。限定符是由 \fB::\fR分隔的名字空间的名字。对于 \fIstring\fR \fB::foo::bar::x\fR,这个命令返回 \fB::foo::bar\fR,而对于 \fB::\fR它返回一个空串。这个命令与 \fBnamespace tail\fR 命令互补。注意,它不检查名字空间的名字事实上是否是目前定义的名字空间的名字。
+.TP
+\fBnamespace tail\fR \fIstring\fR
+返回在一个限定的字符串尾部的简单名字。限定符是由 \fB::\fR分隔的名字空间的名字。对于 \fIstring\fR \fB::foo::bar::x\fR,这个命令返回 \fBx\fR,而对于 \fB::\fR它返回一个空串。这个命令与 \fBnamespace qualifiers\fR命令互补。它不检查名字空间的名字事实上是否是目前定义的名字空间的名字。
+.TP
+\fBnamespace which\fR ?\-\fBcommand\fR? ?\-\fBvariable\fR? \fIname\fR
+把 \fIname\fR  作为一个命令或者变量来查找并返回它的完全限定的名字。例如,如果 \fIname\fR 在当前名字空间中不存在但在全局名字空间中存在,这个命令返回在全局名字空间中的一个完全限定的名字。如果这个命令或变量不存在,这个命令返回空串。如果变量已经建立但未被定义,比如通过 \fBvariable\fR 命令或通过在变量上\fBtrace\fR(进行追踪),这个命令返回这个变量的完全限定的名字。如果未给出标志,\fIname\fR被作为一个命令的名字。关于名字解析的规则的解释请参见下面的\fBNAME RESOLUTION\fR (名字解析)章节。
+
+.SH "什么名字空间 WHAT IS A NAMESPACE?"
+.PP
+一个名字空间是命令和变量的一个集合(collection)。它封装命令和变量来确保它们不会被其他名字空间中命令和变量所干扰。Tcl 总是有一个这样的集合,它被引用为\fIglobal namespace\fR (全局名字空间)。全局名字空间持有所有全局变量和命令。\fBnamespace eval\fR命令让你建立一个新的名字空间。例如,
+.CS
+\fBnamespace eval Counter {
+    namespace export bump
+    variable num 0
+
+    proc bump {} {
+        variable num
+        incr num
+    }
+}\fR
+.CE
+建立包含变量 \fBnum\fR  和过程 \fBbump \fR的一个新的名字空间。在这个名字空间中的命令和变量独立于在同一个程序中的其他命令和变量。例如,如果在全局名字空间中有一个叫 \fBbump\fR的命令,它不同的于在 \fBCounter\fR 名字空间中的 \fBbump\fR  命令。
+.PP
+名字空间变量类似于在 Tcl 中的全局变量。它们存在于名字空间中的过程之外,但象在上面的例子中展示的那样,在同一个名字空间中的过程可以通过 \fBvariable\fR 命令访问它。
+.PP
+名字空间是动态的。你可以在任意时候增加及删除命令和变量,所以你可以使用一系列 \fBnamespace eval\fR命令分几次(over time)来建造一个名字空间的内容。例如,下面的一系列命令与上面展示的定义有相同的效果:  
+.CS
+\fBnamespace eval Counter {
+    variable num 0
+    proc bump {} {
+        variable num
+        return [incr num]
+    }
+}
+namespace eval Counter {
+    proc test {args} {
+        return $args
+    }
+}
+namespace eval Counter {
+    rename test ""
+}\fR
+.CE
+注意在例子中向 \fBCounter\fR  名字空间增加了 \fBtest\fR 过程,后来又用 \fBrename\fR命令把它删除了。
+.PP
+在名字空间内可以又其他的名字空间,它们是有层次的嵌套。一个嵌套的名字空间被封装在它的父名字空间中并且不会被其他名字空间所干扰。      
+
+.SH "限定的名字 QUALIFIED NAMES"
+.PP
+每个名字空间都有一个文本名字比如\fBhistory\fR 或 \fB::safe::interp\fR。因为名字空间可以嵌套,使用限定的名字来引用在名字空间中的命令、变量、和包含子名字空间。除了使用 \fB::\fR作为分隔符而不是 \fB/\fR 或 \fB.\fR 之外,限定的(qualified)名字类似于给 Unix 文件或 Tk 组件的有层次的路径,最顶层或全局名字空间拥有名字“” (一个空串),而 \fB::\fR 是它的同义词。例如,名字 \fB::safe::interp::create\fR  引用在名字空间 \fB::safe \fR的子名字空间 \fBinterp\fR 中的命令 \fBcreate\fR,\fB::safe \fR是全局名字空间 \fB:: \fR的子名字空间。
+.PP
+如果你打算从其他的名字空间中访问命令和变量,你必须使用额外的语法。名字必须被包含它们的名字空间所限定。例如我们可以象下面这样访问 \fBCounter\fR 的过程: 
+.CS
+\fBCounter::bump 5
+Counter::Reset\fR
+.CE
+我们可以象下面这样访问当前的 count (变量的值):  
+.CS
+\fBputs "count = $Counter::num"\fR
+.CE
+当一个名字空间包含另一个的时候,要到达它的元素你可能需要多于一个的限定符。如果我们有一个名字空间 \fBFoo\fR,它包含名字空间 \fBCounter\fR,你可以象下面这样从全局名字空间调用它的 \fBbump\fR 过程:
+.CS
+\fBFoo::Counter::bump 3\fR
+.CE
+.PP
+你还可以在建立和重命名命令的时候使用限定的名字。例如,你可以象下面这样向 \fBFoo\fR增加一个过程:  
+.CS
+\fBproc Foo::Test {args} {return $args}\fR
+.CE
+你可以象下面这样把同一个过程移动到另一个名字空间中: 
+.CS
+\fBrename Foo::Test Bar::Test\fR
+.CE
+.PP
+我们覆盖(cover)剩下的一些关于限定的名字的要点。除了全局名字空间之外名字空间有非空的名字。除了作为名字空间分隔符,不允许 \fB::\fR  在简单命令、变量、和名字空间名字中使用。在限定的名字中忽略额外的 \fB:\fR ;就是说,两个或更多的 \fB: \fR被作为一个名字空间分隔符。在一个限定的变量或命令名字中的尾随的 \fB::\fR 引用叫做 {} 的变量或命令。但是忽略在一个限定的名字空间名中的尾随的 \fB::\fR。 
+
+.SH NAME
+.PP
+一般的,所有接受变量和命令的名字的 Tcl 命令都支持限定的名字。这意味着你可以把限定的名字给这样的命令如\fBset\fR、\fBproc\fR、\fBrename\fR、和 \fBinterp alias\fR。如果你提供了以 \fB:: \fR开始的一个完全限定的名字,对任何命令、变量、或名字空间多没有问题。但是,如果这个名字不以一个 \fB::\fR    开始(它是\fI相对的\fR),Tcl 依据一个固定的规则来查找它: 解析命令和变量名字总是首先在当前的名字空间中查找,接着在全局名字空间中查找。另一方面,解析名字空间总是在当前名字空间中查找。
+.PP
+在下列例子中, 
+.CS
+\fBset traceLevel 0
+namespace eval Debug {
+    printTrace $traceLevel
+}\fR
+.CE
+Tcl 在名字空间 \fBDebug\fR 中查找 \fBtraceLevel\fR接着在全局名字空间中查找,它以相同的方式查找命令 \fBprintTrace\fR。如果一个变量或命令的名字在这两个上下文中都找不到,则这个名字是未定义的。为了使这一点绝对清楚,考虑下列例子:   
+.CS
+\fBset traceLevel 0
+namespace eval Foo {
+    variable traceLevel 3
+
+    namespace eval Debug {
+        printTrace $traceLevel
+    }
+}\fR
+.CE
+这里 Tcl 首先在名字空间 \fBFoo::Debug \fR中查找 \fBtraceLevel\fR。因为在这里未找到,Tcl 接着在全局名字空间中查找。在名字解析过程中完全忽略了变量 \fBFoo::traceLevel\fR。
+.PP
+你可以使用 \fBnamespace which\fR  命令来清除关于名字解析的任何问题: 
+.CS
+\fBnamespace eval Foo::Debug {namespace which \-variable traceLevel}\fR
+.CE
+返回  \fB::traceLevel\fR。另一方面,命令,
+.CS
+\fBnamespace eval Foo {namespace which \-variable traceLevel}\fR
+.CE
+返回 \fB::Foo::traceLevel\fR.
+.PP
+如上面提及的那样,查找名字空间名字与变量和命令的名字不同。总是在当前名字空间中解析名字空间名字。这意味除非新名字空间的名字以一个 \fB::\fR开始,否则建立一个新名字空间的 \fBnamespace eval\fR 命令总是建立当前名字空间的一个子名字空间。
+.PP
+Tcl 对你可以引用的变量、命令、或名字空间没有访问控制。如果你能提供一个限定的名字来通过名字解析规则解析到一个元素,你就可以访问这个元素。
+.PP
+你可以通过 \fBvariable\fR  命令从同一个名字空间中的一个过程中访问一个名字空间变量。非常象 \fBglobal\fR 命令,它建立到名字空间变量的一个本地连接。如果需要,这个命令还在当前的名字空间中建立这个变量并初始化它。注意:\fBglobal\fR命令只建立到在全局名字空间中的变量的连接。如果你总是使用一个适当的限定的名字来引用名字空间变量,则使用 \fBvariable\fR 命令不是必须的。 
+
+.SH "导入命令 IMPORTING COMMANDS"
+.PP
+名字空间经常用来表示库。一些库命令使用的如此频繁以至于键入它们的限定的名字是极其烦人的。例如, 假设在一个包如 BLT 中的所有命令都包含在一个叫 \fBBlt \fR的名字空间中。则你可以象下面这样访问这些命令: 
+.CS
+\fBBlt::graph .g \-background red
+Blt::table . .g 0,0\fR
+.CE
+如果你频繁使用 \fBgraph\fR 和 \fBtable\fR  命令,你可能希望访问它们而不用加 \fBBlt::\fR前缀。你可以通过把它导入到当前名字空间中的方式来达到此目的。例如: 
+.CS
+\fBnamespace import Blt::*\fR
+.CE
+这个例子把从 \fBBlt\fR名字空间导出的所有命令增加到当前名字空间上下文中,所以你可以象下面这样写代码: 
+.CS
+\fBgraph .g \-background red
+table . .g 0,0\fR
+.CE
+\fBnamespace import\fR命令从一个名字空间导入的命令只能是那个名字空间中用 \fBnamespace export\fR命令导出的命令。
+.PP
+从一个名字空间导入\fI所有\fR命令一般是一个坏主意,因为你不知道你将会得到些什么。更好的方式是只导入你需要的命令。例如,命令
+.CS
+\fBnamespace import Blt::graph Blt::table\fR
+.CE
+只把 \fBgraph\fR 和 \fBtable\fR  命令导入到当前上下文。
+.PP
+如果你要导入一个已经存在的命令,你将得到一个错误。这防止你从两个不同的包导入同一个命令。但是有的时候(可能在调试时),你可能希望超越这个限制。你可能希望重新发起(reissue) \fBnamespace import\fR命令来导入(pick up)一个新命令,而同名的命令在这个名字空间中已经出现过了。在这种情况下,你可以使用 \fB-force\fR   选项,现存命令将悄无声息的被覆写(overwritten): 
+.CS
+\fBnamespace import \-force Blt::graph Blt::table\fR
+.CE
+如果出于某种原因,你打算停止使用导入的命令,你可以用 \fBnamespace forget\fR 命令删除它们,例如: 
+.CS
+\fBnamespace forget Blt::*\fR
+.CE
+它在当前名子空间中查找从 \fBBlt \fR导入的所有命令,如果找到则删除它们。否则,它什么都不做。此后,访问 \fBBlt\fR命令必须使用 \fBBlt::\fR  前缀。
+.PP
+当你从导出(命令的)名字空间删除一个命令的时候,例如:
+.CS
+\fBrename Blt::graph ""\fR
+.CE
+则从所有导入它的名字空间中自动删除这个命令。 
+
+.SH "导出命令 EXPORTING COMMANDS"
+你可以从一个名字空间中导出命令,例如: 
+.CS
+\fBnamespace eval Counter {
+    namespace export bump reset
+    variable Num 0
+    variable Max 100
+
+    proc bump {{by 1}} {
+        variable Num
+        incr Num $by
+        Check
+        return $Num
+    }
+    proc reset {} {
+        variable Num
+        set Num 0
+    }
+    proc Check {} {
+        variable Num
+        variable Max
+        if {$Num > $Max} {
+            error "too high!"
+        }
+    }
+}\fR
+.CE
+过程 \fBbump\fR  和 \fBreset\fR  被导出,所以当你从 \fBCounter\fR 名字空间导入的时候,它们被包括在内。例如:  
+.CS
+\fBnamespace import Counter::*\fR
+.CE
+但是 \fBCheck\fR  过程未被导出,所以它被导入操作所忽略。
+.PP
+\fBnamespace import\fR,命令只导入被它们的名字空间导出的命令。\fBnamespace export\fR 命令指定什么命令可以被其他名字空间导入。如果一个 \fBnamespace import\fR命令指定了一个未被导出的命令,则不导入这个命令。
+
+.SH "参见 SEE ALSO"
+variable(n)
+
+.SH "关键字 KEYWORDS"
+exported, internal, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/12
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/open.n b/src/mann/open.n
new file mode 100644
index 0000000..7c83eec
--- /dev/null
+++ b/src/mann/open.n
@@ -0,0 +1,436 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: open.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: open.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH open n 7.6 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+open \- 打开基于文件或命令管道的一个通道
+.SH "总览 SYNOPSIS"
+.sp
+\fBopen \fIfileName\fR
+.br
+\fBopen \fIfileName access\fR
+.br
+\fBopen \fIfileName access permissions\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+.VS
+这个命令打开一个文件、串行端口、或命令管道并返回一个
+.VE
+通道标识符用于将来被命令如 \fBread\fR、\fBputs\fR、和\fBclose \fR调用。如果 \fIfileName\fR 的第一个字符不是“|”则命令打开一个文件: \fIfileName\fR 给出要打开的文件的名字,并且它必须符合在 \fBfilename\fR 手册条目中描述的规范。
+.PP
+如果存在 \fIaccess\fR 参数,则它指示以何种方式访问文件(或命令管道)。在第一种形式下 \fIaccess\fR 可以是下列值:
+.TP 15
+\fBr\fR
+为只读而打开文件;文件必须已经存在。如果未指定 \fIaccess\fR     则这个值是缺省值。
+.TP 15
+\fBr+\fR
+为读写而打开文件;文件必须已经存在。
+.TP 15
+\fBw\fR
+为只写而打开文件。如果文件已经存在则截断(truncate)它,如果文件不存在则建立一个新文件。
+.TP 15
+\fBw+\fR
+为读写而打开文件。如果文件已经存在则截断(truncate)它,如果文件不存在则建立一个新文件。
+.TP 15
+\fBa\fR
+为只读而打开文件。如果文件不存在,则建立一个新的空文件。设置初始访问位置为文件的结束处。
+.TP 15
+\fBa+\fR
+为读写而打开文件。如果文件不存在,则建立一个新的空文件。设置初始访问位置为文件的结束处。
+.PP
+在第二种形式下,\fIaccess\fR 由某些下列标志的一个列表构成,所有这些都有标准的 POSIX 意义。 必须有一个标志是 \fBRDONLY\fR、\fBWRONLY\fR 或 \fBRDWR\fR 中的一个。
+.TP 15
+\fBRDONLY\fR
+为只读而打开文件。
+.TP 15
+\fBWRONLY\fR
+为只写而打开文件。
+.TP 15
+\fBRDWR\fR
+为读写而打开文件。
+.TP 15
+\fBAPPEND\fR
+在每次写之前把指针设置到文件的结束处。
+.TP 15
+\fBCREAT\fR
+如果文件不存在则建立这个文件(如果没有这个标志,在文件不存在时返回一个错误)。
+.TP 15
+\fBEXCL\fR
+如果还指定了 \fBCREAT\fR,如果文件已经存在则返回一个错误。
+.TP 15
+\fBNOCTTY\fR
+如果文件是一个终端设备,这个标志防止这个文件成为这个进程的控制终端。
+.TP 15
+\fBNONBLOCK\fR
+在打开文件和可能的后续 I/O 
+    操作期间防止过程阻塞。这个标志的真实行为是依赖于系统的和依赖于设备的;不鼓励使用它(更好是使用     \fBfconfigure\fR     命令来使一个文件进入非阻塞模式)。详情参见你的系统文档中的  \fBopen\fR 系统调用的 \fBO_NONBLOCK\fR 标志。
+.TP 15
+\fBTRUNC\fR
+如果文件存在则截断其为零长度。
+.PP
+如果作为打开过程的一部分而建立了一个新文件,使用 \fIpermissions\fR (一个整数)并联合进程的文件模式建立掩码为新文件设置权限。\fIPermissions\fR 缺省为 0666。
+.PP
+'\" Not versioned as advice applies to all recent versions of Tcl.
+'\" Prior to that, Tcl didn't really support binary files anyway...
+.VS
+Note that if you are going to be reading or writing binary data from
+the channel created by this command, you should use the
+\fBfconfigure\fR command to change the \fB-translation\fR option of
+the channel to \fBbinary\fR before transferring any binary data.  This
+is in contrast to the ``b'' character passed as part of the equivalent
+of the \fIaccess\fR parameter to some versions of the C library
+\fIfopen()\fR function.
+.VE
+.SH "命令管道 COMMAND PIPELINES"
+.PP
+如果 \fIfileName\fR is 的第一个字符是“|”,则把 \fIfileName\fR 的余下的字符被作为描述要调用的一个命令管道的参数的一个列表来对待,与 \fBexec \fR对待参数的方式相同。在这种情况下,依赖于 access 的值,使用由 \fBopen\fR 返回的通道标识符来向这个命令的输入管道写或从它的输出管道读。如果使用了只写访问(例如, \fIaccess\fR 是 \fBw\fR),则除非被这个命令所屏弃(override),这个(命令)管道的标准输出被定向到当前的标准输出上。如果使用了只读访问(例如,\fIaccess\fR 是 \fBr\fR),则除非被这个命令所屏弃(override),这个(命令)管道的标准输入接受当前的标准输入。
+.PP
+译注
+.CS
+打开用来写的命令管道
+
+                    Tcl     ==>   Pipeline  ==>   command
+
++--------+       +--------+      +--------+      +--------+
+| stdin  |<------+ stdin  |  +-->| pipein |   +--+ stdin  |
++--------+       +--------+  |   +--------+   |  +--------+
+| stdout |<--+---+ stdout |  |   | pipeout|<--+  | stdout +--+
++--------+   |   +--------+  |   +--------+      +--------+  |
+             |   | stderr |  |                   | stderr |  |
+             |   +--------+  |                   +--------+  |
+             |   | channel+--+                               |
+             |   +--------+                                  |
+             +-----------------------------------------------+
+
+
+打开一个用来读的命令管道
+
+             +-----------------------------------------------+
+             |                                               |
++--------+   |   +--------+      +--------+      +--------+  |
+| stdin  |<--+---+ stdin  |      | pipein |<--+  | stdin  +--+
++--------+       +--------+      +--------+   |  +--------+
+| stdout |<------+ stdout |  +-->| pipeout|   +--+ stdout |
++--------+       +--------+  |   +--------+      +--------+
+                 | stderr |  |                   | stderr |
+                 +--------+  |                   +--------+
+                 | channel+--+
+                 +--------+
+                    Tcl     <==    Pipeline  <==  command
+
+.CE
+.SH "串行通信 SERIAL COMMUNICATIONS"
+.VS
+.PP
+如果 \fIfileName\fR 参照一个串行端口,则打开特定的串行端口并以依赖于平台的方式初始化。给 \fIfileName\fR 用以打开一个串行端口的可接受的值在移植要点中描述。
+
+.SH "配置选项 CONFIGURATION OPTIONS"
+使用 \fBfconfigure\fR 命令来为打开的串行端口查询和设置下列选项:
+.TP
+\fB\-mode \fIbaud\fB,\fIparity\fB,\fIdata\fB,\fIstop\fR
+.
+这个选项是由逗号分隔的四个值的一个集合:     这个串行端口的波特(baud)率、奇偶校验(parity)、数据位数、和停止位。\fIbaud\fR     率是指定连接速度的一个简单整数。\fIParity\fR     是下列字母之一: \fBn\fR、\fBo\fR、\fBe\fR、\fBm\fR、\fBs\fR;分别表示奇偶校验选项“none”、“odd”、“even”、“mark”、或“space”。\fIData\fR     是数据位数,应当是从 5 到 8 中的一个整数,而 \fIstop\fR     是停止位的数目,应当是整数 1 或 2。
+.TP
+\fB\-pollinterval \fImsec\fR
+.
+只在 Windows     上串行端口能获得这个选项,它被用来设置文件事件轮询(poll)之间的最大时间。这影响整个     Tcl 解释器检查事件中间的时间间隔(总是采用最小的值)。只有在你想要使轮询这个串行端口的时间间隔小于     10 msec (缺省值)时才使用这个选项。
+.TP
+\fB\-lasterror\fR
+.
+只在 Windows 上串行端口能获得这个选项,并只能查询(只在直接请求时报告)。在串行通信出错的情况下,\fBread\fR     或 \fBputs\fR 返回一个一般 Tcl 文件 I/O     错误。可以调用 \fBfconfigure -lasterror\fR     来得到错误详情的一个列表(例如,FRAME RXOVER)。
+.VE
+
+.VS
+.SH "移植要点 PORTABILITY ISSUES"
+.sp
+.TP
+\fBWindows \fR(所有版本)
+.
+给 \fIfileName\fR 来打开一个串行端口的有效值的形式是 \fBcom\fIX\fB:\fR,这里     \fIX\fR 是一个数,一般是从 1 到 4。如果系统有多于四个串行端口,则这个符号(notation)可以表示串行端口从     1 到 9。尝试打开一个不存在或序号大于 9     的串行端口将导致错误。打开串行端口的可替代的方法是使用文件名    \fB\e\e.\ecomX\fR,这里 X 是对应于一个串行端口的任何(整)数;请注意,这个方法在     Windows 95 和 Windows 98 上相当的慢。
+.TP
+\fBWindows NT\fR
+.
+在交互运行 Tcl     的时候,如果存在一个控制台,则在真实的控制台和使用标准输入或输出的一个命令管道之间可能有一些奇怪的相互作用。如果为读而打开一个命令管道,在这个控制台键入的一些行将被发送到命令管道而一些行将别发送到     Tcl     求值器。如果为写而打开一个命令管道,在管道关闭之前,在这个控制台中键入的击键(keystroke)将一直是不可见的。在执行     16-bit 或 32-bit     应用程序时都可能发生这种事情。这些问题只发生在 Tcl     和子应用程序同时竞争这个控制台的时候。如果命令管道是从一个脚本中启动的,所以     Tcl     不访问控制台,或者命令管道不使用标准输出或输出,而是重定向(从或)到一个文件,那么上述问题不发生。
+.TP
+\fBWindows 95\fR 
+.
+不能同时为读写而打开一个命令管道来执行一个 16-bit DOS     应用程序,因为从一个管道接收标准输入和向一个管道发送标准输出的(两个)     16-bit DOS 应用程序同步运行。不执行 16-bit DOS     应用程序的命令管道异步运行并且可以同时为读写而打开。
+.sp
+在交互运行 Tcl     的时候,如果存在一个控制台,则在真实的控制台和使用标准输入或输出的一个命令管道之间可能有一些奇怪的相互作用。如果为从一个     32-bit     应用程序读而打开一个命令管道,在这个控制台键入的一些击键将被发送到命令管道而一些击键将别发送到     Tcl 求值器。如果为向一个 32-bit     应用程序写而打开一个命令管道,在管道关闭之前,在控制台中将一直没有输出是可见的。这些问题只发生在     Tcl     和子应用程序同时竞争这个控制台的时候。如果命令管道是从一个脚本中启动的,所以     Tcl     不访问控制台,或者命令管道不使用标准输出或输出,而是重定向(从或)到一个文件,那么上述问题不发生。
+.sp
+不论 Tcl 是否在交互的运行,如果为从一个 16-bit DOS     应用程序读而打开一个命令管道,在从命令管道的标准输出收到文件结束之前,对     \fBopen\fR 的调用一直不返回。如果为向一个 16-bit DOS     应用程序写而打开一个命令管道,在管道实际上被关闭之前,没有数据被发送到命令管道的标准输出。象上面描述的那样,这个问题发生的原因是     16-bit DOS 应用程序同步运行。
+.TP
+\fBMacintosh\fR
+.
+在 Macintosh 下目前未实现打开串行端口。
+.sp
+在 Macintosh     不支持打开命令管道,原因是应用程序不支持标准输入或输出的概念。
+.TP
+\fBUnix\fR\0\0\0\0\0\0\0
+.
+给 \fIfileName\fR 来打开一个串行端口的有效值的形式是 \fB/dev/tty\fIX\fR,这里的     \fIX\fR 是 \fBa\fR 或 \fBb\fR,但是可以使用映射到一个串行端口的任何伪文件(pseudo-file)的名字。
+.sp
+在交互运行 Tcl     的时候,如果存在一个控制台,则在真实的控制台和使用标准输入或输出的一个命令管道之间可能有一些奇怪的相互作用。如果为读而打开一个命令管道,在这个控制台键入的一些行将被发送到命令管道而一些行将别发送到     Tcl 求值器。这些问题只发生在 Tcl     和子应用程序同时竞争这个控制台的时候。如果命令管道是从一个脚本中启动的,所以     Tcl     不访问控制台,或者命令管道不使用标准输出或输出,而是重定向(从或)到一个文件,那么上述问题不发生。
+.LP
+关于在不同平台上执行应用程序请参见 \fBexec\fR 命令的\fB移植要点\fR章节来得到不特定于命令管道的额外的信息。
+
+.SH "参见 SEE ALSO"
+file(n), close(n), filename(n), fconfigure(n), gets(n), read(n),
+puts(n), exec(n), fopen(1)
+
+.SH "关键字 KEYWORDS"
+access mode, append, create, file, non-blocking, open, permissions,
+pipeline, process, serial
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/16
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/option.n b/src/mann/option.n
new file mode 100644
index 0000000..608e79f
--- /dev/null
+++ b/src/mann/option.n
@@ -0,0 +1,301 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: option.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: option.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH option n "" Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+option \- 向/从选项数据库增加/取回窗口选项
+.SH 总览 SYNOPSIS
+\fBoption add \fIpattern value \fR?\fIpriority\fR?
+.sp
+\fBoption clear\fR
+.sp
+\fBoption get \fIwindow name class\fR
+.sp
+\fBoption readfile \fIfileName \fR?\fIpriority\fR?
+.BE
+
+.SH 描述 DESCRIPTION
+.PP
+\fBoption\fR 命令允许你向 Tk 选项数据库增加条目或从这个数据取回(retrieve)选项。这个命令的 \fBadd\fR 形式向数据库增加一个新选项。\fIPattern\fR 包含被指定的选项,并且使用普通的 X 格式,由星号或点号分隔的名字和/或类组成。\fIValue\fR 包含一个与 \fIpattern\fR 相关联的文字串;可以通过到 \fBTk_GetOption\fR 的调用或调用 \fBoption get\fR 命令的调用返回这个值。如果指定了 \fIpriority\fR ,它为这个选项指示特权级别(参见下面的合法值);它缺省为 \fBinteractive\fR。这个命令总是返回一个空串。
+
+.PP
+\fBoption clear\fR 命令清除选项数据库。下次向数据库增加或删除一个选项的时候,(从 \fBRESOURCE_MANAGER\fR 属性或 \fB.Xdefaults\fR 文件)自动的重新装载缺省选项。这个命令总是返回一个空串。
+
+.PP
+\fBoption get\fR 命令返回为在 \fIname\fR 和 \fIclass\fR 下的 \fIwindow\fR 所指定选项的值。如果在数据库中的一些条目匹配 \fIwindow\fR、\fIname\f、和 \fIclass\fR,则这个命令返回用最高 \fIpriority\fR 级别建立的那个条目。如果在同一个特权级别上有多个匹配的条目,则它返回最新近进入到选项数据库中的那个条目。如果没有匹配的条目,则返回空串。
+
+.PP
+这个命令的 \fBreadfile\fR 形式读取 \fIfileName\fR,它应当拥有用于 X 资源数据库如 \fB.Xdefaults\fR 的标准格式,并把在这个文件中指定的所有选项增加到选项数据库中。如果指定了 \fIpriority\fR,则它指示以在何种优先级上加入选项;\fIpriority\fR 缺省为 \fBinteractive\fR。
+
+.PP
+给 \fBoption\fR 命令的 \fIpriority\fR 参数通常使用下列值之一来用符号指定:
+
+.TP
+\fBwidgetDefault\fR
+级别 20。用于硬编码到组件中的缺省值。
+.TP
+\fBstartupFile\fR
+级别 40。用于在特定于应用的启动文件中指定的选项。
+.TP
+\fBuserDefault\fR
+级别 60。用于在特定于用户的缺省文件如 \fB.Xdefaults\fR,装载到 X 服务器内的资源数据库,或特定于用户的启动文件中指定的选项。
+.TP
+\fBinteractive\fR
+级别 80。用于应用程序开始运行之后交互的指定的选项。如果未指定 \fIpriority\fR,则它缺省为这个级别。
+
+.LP
+任何上述关键字都可以被缩写。此外,可以用 0 和 100 (含)之间的整数来用数值指定优先级。除非特权级不是上述给出的那些,否则用数值形式的优先级可能不是个好主意。
+
+.SH 关键字 KEYWORDS
+database, option, priority, retrieve
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/07/10
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/optionMenu.n b/src/mann/optionMenu.n
new file mode 100644
index 0000000..bcebfe5
--- /dev/null
+++ b/src/mann/optionMenu.n
@@ -0,0 +1,269 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: optionMenu.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: optionMenu.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_optionMenu n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_optionMenu \- 建立菜单按钮和它的菜单
+.SH "总览 SYNOPSIS"
+\fBtk_optionMenu \fIw varName value \fR?\fIvalue value ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个过程建立叫做 \fIw \fR的一个选项菜单按钮,并加上一个相关联的菜单。它们在一起允许用户选择用 \fIvalue\fR 参数给出的值中的一个。当前值被存储在用 \fIvarName\fR 给出名字的全局变量中,并且还将被显示为选项菜单按钮中的标签。用户可以点击菜单按钮来显示一个包括所有 \fIvalue \fR的菜单并接着选择一个新值。一旦选择了一个新值,则把它存储在这个变量中并在选项菜单按钮中出现。还可以通过设置这个变量来改变当前值。
+.PP
+从 \fBtk_optionMenu\fR 返回的值是与 \fIw \fR相关联的菜单的名字,这样调用者可以改变它的配置选项或以其他方式操纵它。
+
+.SH "关键字 KEYWORDS"
+option menu
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/package.n b/src/mann/package.n
new file mode 100644
index 0000000..6e03175
--- /dev/null
+++ b/src/mann/package.n
@@ -0,0 +1,330 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: package.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: package.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH package n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+package \- 装载包和版本控制的设施  
+.SH "总览 SYNOPSIS"
+.nf
+\fBpackage forget ?\fIpackage package ...\fR?
+\fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
+\fBpackage names\fR
+\fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+\fBpackage provide \fIpackage \fR?\fIversion\fR?
+\fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+\fBpackage unknown \fR?\fIcommand\fR?
+\fBpackage vcompare \fIversion1 version2\fR
+\fBpackage versions \fIpackage\fR
+\fBpackage vsatisfies \fIversion1 version2\fR
+.fi
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令维持由当前解释器使用的可获得的包以及如何把它们装载到解释器中的一个简单的数据库。它支持每个包的多个版本,并基于应用的需要安排装载一个包的正确的版本。这个命令还检测并报告版本冲突。典型的,在通常的 Tcl 脚本中只调用 \fBpackage require\fR 和 \fBpackage provide\fR 命令;其他命令主要被系统脚本用来维护包数据库。
+.PP
+\fBpackage\fR 命令的行为由它的第一个参数确定。允许下列形式:    
+.TP
+\fBpackage forget ?\fIpackage package ...\fR?
+从这个解释器中删除关于每个指定的包的所有信息,包括由 \fBpackage ifneeded\fR 和 \fBpackage provide\fR 提供的信息。  
+.TP
+\fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
+这个命令典型的只出现在系统配置脚本中,被用来设置包数据库。若需要一个特定的包的一个特定的版本,它指示如果这个包的这个版本是可获得的,可通过执行  \fIscript\fR   来把这个包来增加到解释器上。脚本保存在一个数据库中,由随后的 \fBpackage require\fR 命令使用;典型的,\fIscript\fR   为在包中的命令设置自动装载(或直接调用 \fBload\fR  和/或 \fBsource\fR),接着调用\fBpackage provide\fR  来指示这个包已经存在。在数据库中可以有一个单一的包的多个版本的信息。如果数据库已经包含了对 \fIpackage\fR 和 \fIversion\fR 的信息,则新 \fIscript\fR  替换现存的脚本。如果省略了 \fIscript\fR 参数,返回包 \fIpackage\fR 的版本 \fIversion\fR  的当前脚本,如果未对这个 \fIpackage\fR 和 \fIversion\fR 调用 \fBpackage ifneeded\fR  命令则返回一个空串。  
+.TP
+\fBpackage names\fR
+返回在这个解释器中所有包的名字,为这些包提供了一个版本(通过 \fBpackage provide\fR)或可获得给它们的 \fBpackage ifneeded\fR  脚本。在列表中的元素的次序是任意的。
+.TP
+\fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+除了在包没有装载时它不尝试并装载它之外,这个命令等价于 \fBpackage require\fR。
+.TP
+\fBpackage provide \fIpackage \fR?\fIversion\fR?
+调用这个命令来指示在这个解释器中包 \fIpackage\fR  的这个版本 \fIversion\fR  现在已经存在。它典型的被作为一个 \fBifneeded\fR脚本的一部分而调用一次,并在包最终装载时被包自身再次调用。如果以前的 \fBpackage provide\fR  命令已经提供的 \fIpackage\fR 的一个不同的版本则生成一个错误。如果省略了 \fIversion\fR  参数,则命令返回当前提供包的版本号,如果在这个解释器中对 \fIpackage\fR 没有调用 \fBpackage provide\fR 命令则返回一个空串。
+.TP
+\fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
+这个命令典型的被想要使用特定包的特定版本的 Tcl 脚本调用。参数指示想要哪个包,和确保把包的合适版本装载到解释器中的命令。如果命令成功执行,它返回装载的包的版本号;否则生成一个错误。如果同时指定了 \fB-exact\fR  开关和 \fIversion\fR  选项,则只接受给定版本。如果省略了 \fB-exact\fR 但指定了 \fIversion\fR  ,则主版本号与 \fIversion \fR相同但晚于 \fIversion\fR 的版本也可以接受。如果省略了 \fB-exact\fR  和 \fIversion\fR二者则任何版本都可接受。如果已经提供了 \fIpackage\fR 的一个版本(通过调用 \fBpackage provide\fR  命令),则它的版本号必须满足由\fB-exact\fR  和 \fIversion\fR  给出的条件并且命令立即返回。否则,命令查找由以前的\fBpackage ifneeded\fR 命令提供的信息的数据库,看是否能获得一个可接受的版本。如果有,则调用最可接受的版本号的脚本;它必须做所有装载这个包所必须 [...]
+.TP
+\fBpackage unknown \fR?\fIcommand\fR?
+这个命令提供在一个“最后一搏”(``last resort'') 命令,在 \fBpackage require\fR  期间如果 \fBpackage ifneeded\fR 数据库中没有一个包的合适的版本可调用这个命令。如果提供了 \fIcommand\fR 参数,它包含一个命令的第一部分,在一次 \fBpackage require\fR 命令期间调用这个命令的时候,Tcl  添加给出所须的包的名字和版本的两个附加参数。例如,如果 \fIcommand\fR是 \fBfoo bar\fR  并且后来调用了命令 \fBpackage require test 2.4\fR,则 Tcl 将执行命令 \fBfoo bar test 2.4\fR  来装载这个包。如果未给 \fBpackage require\fR  命令提供版本号,则给这个被调用的命令的版本参数是一个空串。如果 \fBpackage unknown\fR命令但不加 \fIcommand\fR 参数,则返回当前的 \fBpackage unknown\fR 脚本,如果没有就返回一个空串。如果指定 \fIc [...]
+.TP
+\fBpackage vcompare \fIversion1 version2\fR
+比较由 \fIversion1\fR和 \fIversion2 \fR给出的两个版本。如果 \fIversion1\fR 比 \fIversion2 \fR早就返回 -1,如果相同则返回0,如果 \fIversion1\fR 比 \fIversion2 \fR晚则返回 1。
+.TP
+\fBpackage versions \fIpackage\fR
+返回 \fIpackage\fR  的所有版本号,通过 \fBpackage ifneeded\fR  命令为它们提供了信息。   
+.TP
+\fBpackage vsatisfies \fIversion1 version2\fR
+如果为 \fIversion2\fR  写的脚本不须更改就可为 \fIversion1\fR   工作则返回 1(例如,\fIversion1\fR  大于等于 \fIversion2\fR   并且有相同的主版本号),否则返回 0。
+
+.SH "版本号 VERSION NUMBERS"
+.PP
+版本号由一个或多个用点号分隔的十进制数组成,比如 2 或 1.162  
+或 3.1.13.1。第一个数叫做主版本号。越大的数对应一个包的越晚的版本,最左边的数有更大的权重(significance).  
+例如,版本 2.1 比 1.3 晚而版本         
+3.4.6 比 3.3.5 晚。遗漏的字段等价于零: 版本 1.3 于版本 1.3.0  
+和 1.3.0.0 相同,所以它比 1.3.1 和 1.3.0.2  
+早。假定一个晚期版本向上(upward)兼容有相同主版本号的早期版本。
+例如,为一个包的版本 2.3  
+写的 Tcl 脚本应当在版本 2.3.2、2.4、和 2.5.1  
+下不须更改就能工作。主版本号的变更表示有不兼容的变更:  
+如果代码是使用了一个包的版本 2.1 写成的,不保证在版本 1.7.3  
+或版本 3.1 下不须更改就能工作。        
+
+.SH "包索引 PACKAGE INDICES"
+.PP
+推荐的在 Tcl 中使用包的方式是在脚本中调用 \fBpackage require\fR  和 \fBpackage provide\fR  命令,并使用过程 \fBpkg_mkIndex\fR  来建立包索引文件。一旦你已经这样做了,将自动的装载包来响应  \fBpackage require\fR 命令。详情请参见 \fBpkg_mkIndex\fR  的文档。
+
+.SH "参见 SEE ALSO"
+msgcat(n), packagens(n), pkgMkIndex(n)
+
+.SH "关键字 KEYWORDS"
+package, version
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/08/31
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/packagens.n b/src/mann/packagens.n
new file mode 100644
index 0000000..afa18ac
--- /dev/null
+++ b/src/mann/packagens.n
@@ -0,0 +1,285 @@
+'\"
+'\" Copyright (c) 1998-2000 by Scriptics Corporation.
+'\" All rights reserved.
+'\" 
+'\" RCS: @(#) $Id: packagens.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: packagens.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pkg::create n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pkg::create \- 为一个给定的包指定构造一个适当的\fBpackage ifneeded\fR 命令
+.SH "总览 SYNOPSIS"
+\fB::pkg::create \fI\-name packageName\fR \fI\-version packageVersion\fR ?\fI\-load filespec\fR? ... ?\fI\-source filespec\fR? ...
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fB::pkg::create\fR  是标准 Tcl 库中的一个实用过程。它被用来为一个给定的包指定建立一个适当的 
+\fBpackage ifneeded\fR  命令。可用它构造用于 \fBpackage\fR  机制的一个 \fBpkgIndex.tcl\fR  文件。
+
+.SH "选项 OPTIONS"
+支持的参数有:
+.TP
+\fB\-name\fR\0\fIpackageName\fR
+这个参数指定包的名字。它是必须的。
+.TP
+\fB\-version\fR\0\fIpackageVersion\fR
+这个参数指定包的版本。它是必须的。
+.TP
+\fB\-load\fR\0\fIfilespec\fR
+这个参数指定必须用 \fBload\fR  命令装载的一个二进制库。\fIfilespec\fR  是有两个元素的一个列表。第一个元素是要装载的文件的名字。第二个可选的元素是装载的这个文件提供命令的一个列表。如果这个过程的列表是空或被省略了,\fB::pkg::create\fR  将为直接装载而设置这个库(参见 \fBpkg_mkIndex\fR)。可以指定任何数目的 \fB-load\fR  参数。
+.TP
+\fB\-source\fR\0\fIfilespec\fR
+除了指定必须用 \fBsource\fR  命令装载的一个 Tcl 库之外,这个参数类似于 \fB-load\fR  参数。可以指定任何数目的 \fB-load\fR  参数。
+.PP
+必须给出至少一个 \fB-load\fR 或 \fB-source\fR  参数。
+
+.SH "参见 SEE ALSO"
+package(n)
+
+.SH "关键字 KEYWORDS"
+auto-load, index, package, version
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/01
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/palette.n b/src/mann/palette.n
new file mode 100644
index 0000000..a29479a
--- /dev/null
+++ b/src/mann/palette.n
@@ -0,0 +1,284 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: palette.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: palette.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_setPalette n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_setPalette, tk_bisque \- 修改 Tk 颜色调色板
+.SH "总览 SYNOPSIS"
+\fBtk_setPalette \fIbackground\fR
+.sp
+\fBtk_setPalette \fIname value \fR?\fIname value ...\fR?
+.sp
+\fBtk_bisque\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBtk_setPalette\fR 过程改变 Tk 的颜色方案。它通过修改现存组件的颜色和修改选项数据库来做这个工作,这样将来的组件将使用新颜色方案。如果用一个单一参数调用 \fBtk_setPalette\fR,则这个参数是用做普通背景色的一个颜色的名字;\fBtk_setPalette\fR 将从这个背景色计算出一个完整的颜色调色板。作为另一个选择,给 \fBtk_setPalette\fR 的参数可以由任意数目的名字-值对组成,对中的第一个参数是在 Tk 选项数据库中的一个选项的名字,而第二个参数是用于这个选项的新值。当前数据库支持下列名字:
+.DS L
+.ta 4c 8c
+\fBactiveBackground	foreground	selectColor
+activeForeground	highlightBackground	selectBackground
+background	highlightColor	selectForeground
+disabledForeground	insertBackground	troughColor\fR
+.DE
+\fBtk_setPalette\fR 尝试为你没有指定的所有选项计算合理的缺省。你可以指定上述之外的选项而 Tk 同样在组件上的这些选项。这个特征对使用了额外的颜色选项的定制组件可能有用。
+.PP
+一旦为每个颜色选项计算了新值,\fBtk_setPalette\fR 检索组件层次来修改所有现存组件的选项。对于每个组件,它检查这个组件是否定义了上述选项。如果是这样,并且如果这个选项的当前值是缺省的,则改变这个值;如果这个选项有一个不是缺省的值,\fBtk_setPalette\fR 将不改变它。如果以前未运行 \fBtk_setPalette\fR,则缺省值由组件来选项提供(\fB[lindex [$w configure $option] 3]\fR),否则它是在前面的 \fBtk_setPalette\fR 调用中指定的值。
+.PP
+在修改了在应用中的所有组件之后,\fBtk_setPalette\fR 向选项数据库增加选项来改变将来建立的组件的缺省值。增加的新选项在优先级 \fBwidgetDefault\fR 上,所以将被来自 .Xdefaults 文件的选项或在建立一个组件的命令行上指定的选项所屏弃。
+.PP
+为向后兼容而提供了 \fBtk_bisque\fR: 它把应用的颜色恢复为 Tk 3.6 和以前版本中的浅黄(“bisque”)色方案。
+
+.SH "关键字 KEYWORDS"
+bisque, color, palette
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/16
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/pid.n b/src/mann/pid.n
new file mode 100644
index 0000000..d35a5c4
--- /dev/null
+++ b/src/mann/pid.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: pid.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: pid.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pid n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pid \- 检索进程 id
+.SH "总览 SYNOPSIS"
+\fBpid \fR?\fIfileId\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+如果给出了 \fIfileId\fR  参数,则它应当参照用 \fBopen\fR  命令建立的一个进程管道。在这种情况下 \fBpid\fR  将返回一个列表,其元素依次是在这个管道中的所有进程的进程标识符。如果 \fIfileId\fR  参照到打开文件不是一个过程管道则这个列表为空。如果未给出 \fIfileId\fR  参数,则 \fBpid\fR  返回当前进程的进程标识符。所有进程标识符都作为十进制字符串返回。
+
+.SH "参见 SEE ALSO"
+exec(n), open(n)
+
+.SH "关键字 KEYWORDS"
+file, pipeline, process identifier
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/15
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/pkgMkIndex.n b/src/mann/pkgMkIndex.n
new file mode 100644
index 0000000..a47496a
--- /dev/null
+++ b/src/mann/pkgMkIndex.n
@@ -0,0 +1,342 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: pkgMkIndex.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: pkgMkIndex.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pkg_mkIndex n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pkg_mkIndex \- 为包的自动装载建造一个索引
+.SH "总览 SYNOPSIS"
+.nf
+.VS 8.3.0
+\fBpkg_mkIndex ?\fI\-direct\fR?  ?\fI\-lazy\fR?  ?\fI\-load pkgPat\fR? ?\fI\-verbose\fR? \fIdir\fR ?\fIpattern pattern ...\fR?
+.VE
+.fi
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBPkg_mkIndex\fR 是标准Tcl 库中的一个实用过程。它被用于建立索引文件,在执行 \fBpackage require\fR 的时候用它来允许自动装载包。使用 \fBpkg_mkIndex\fR要依从下面这些步骤:         
+.IP [1]
+建立包。
+每个包可以由一个或多个 Tcl   脚本文件或二进制文件组成。二进制文件必须适合使用有一个单一参数的 \fBload\fR 命令装载;例如,如果文件是 \fBtest.so\fR  它必须可能用命令 \fBload test.so  \fR命令来装载这个文件。每个脚本文件必须包含一个 \fBpackage provide\fR  命令来声明包和版本号,而每个二进制文件必须包含一个对 \fBTcl_PkgProvide\fR的调用。            
+.IP [2]
+通过调用 \fBpkg_mkIndex \fR建立索引。
+用 \fIdir\fR              
+参数给出一个目录的名字并且每个\fIpattern\fR  参数都是在 \fIdir\fR\fI \fR中选择脚本或二进制文件的一个通配符式样的模式。
+.VS 8.0.3
+缺省的模式是 \fB*.tcl\fR 和 \fB*.[info sharedlibextension]\fR。
+.VE
+.br
+\fBPkg_mkIndex\fR 将在 \fIdir\fR   中建立一个文件 \fBpkgIndex.tcl\fR,其中有关于用 \fIpattern\fR  参数给出的所有文件的包信息。它通过把每个文件装载到一个从解释器中并查看出现了那些包和新命令来完成这项工作(这就是上面描述的在这些文件中必须有 \fBpackage provide\fR  命令或 \fBTcl_PkgProvide\fR 调用的原因)。如果你有一个分开成多个脚本和二进制文件的包,或有文件间的依赖,你可能必须使用 \fB-load\fR 选项或调整 \fBpkg_mkIndex\fR 处理这些文件的次序。参见下面的 COMPLEX CASES 复杂情况。        
+
+.IP [3]
+把包安装为由 \fBtcl_pkgPath\fR   变量给出的某个目录的子目录。如果 \fB$tcl_pkgPath\fR 包含多于一个的目录,依赖于机器的包(例如,包含二进制共享库的包)通常应该被安装在第一个目录下面而不依赖于机器的包(例如,只包含 Tcl  脚本的包)应该被安装在第二个目录下面。子目录应该包含包的脚本和/或二进制文件还有 \fBpkgIndex.tcl\fR  文件。包被安装为在 \fB$tcl_pkgPath\fR   中的一个目录的一个子目录之后,在 \fBpackage require\fR  命令期间可自动找到它。
+.br
+如果你把包安装在其他地方,则你必须确保包含包的目录在 \fBauto_path\fR 全局变量中或在 \fBauto_path\fR  中的一个目录的最直接(immediate)子目录中。\fBAuto_path\fR包含由自动装载器和包装载器查找的目录的一个列表;缺省的它包括 \fB$tcl_pkgPath\fR。包装载器也检查在 \fBauto_path\fR 中的目录的所有子目录。你可以在你的应用中显式的向 \fBauto_path\fR增加一个目录,或向你的 \fBTCLLIBPATH\fR  环境变量添加这个目录:   如果这个环境变量存在,在应用启动期间Tcl 用它来初始化 \fBauto_path\fR。            
+.IP [4]
+一旦进行了上述步骤,要使用一个包你需要做的就是调用 \fBpackage require\fR。例如,如果包 \fBTest\fR  的版本 2.1、2.3、和 3.1 已经用 \fBpkg_mkIndex \fR建立了索引,\fBpackage require Test\fR 将可获得版本 3.1 而命令 \fBpackage require -exact Test 2.1\fR将可获得版本 2.1。在 \fBauto_path\fR 中的不同的索引文件中可能有一个包的多个版本,实际上只有一个将被装载到给定的解释器中,具体决定于首先调用了哪个 \fBpackage require\fR。一个包的不同版本可以装载到不同的解释器中。
+
+.SH "选项 OPTIONS"
+选项开关有:    
+.TP 15
+\fB\-direct\fR
+The generated index will implement direct loading of the package
+upon \fBpackage require\fR.  This is the default.
+.TP 15
+\fB\-lazy\fR
+生成的索引将设法延迟装载包,一直等到使用了由这个包提供命令之一,而不是在 \fBpackage require \fR时立即装载。
+.TP 15
+\fB\-load \fIpkgPat\fR
+索引处理将预装载在当前解释器中现存的所有包和匹配 \fIpkgPat\fR  的包装载到到用于生成索引的从解释器中。模式匹配使用与字符串匹配相同的规则。参见下面的COMPLEX CASES复杂情况。  
+.TP 15
+\fB\-verbose\fR
+在索引处理期间生成输出。输出通过 \fBtclLog\fR    过程,这个过程缺省输出到 stderr。 
+.TP 15
+\fB\-\-\fR
+标志的终止,用于 \fIdir\fR  以连字号开始的情况。 
+
+.SH "包和自动装载器 PACKAGES AND THE AUTO-LOADER"
+.PP
+包管理设施与自动装载器在一些方面有所重叠,二者都安排文件在需要时(on-demand)装载。但是,包管理是一个高层机制,它在装载过程的最后一步使用自动装载器。一般的,使用\fBpkg_mkIndex\fR  给一个包加索引而不使用 \fBauto_mkindex\fR ,因为包机制提供了版本控制: 在索引文件中可获得一个包的多个版本,急于 \fBpackage require\fR  命令不同的应用可使用不同的版本。相反的,\fBauto_mkindex\fR  不理解版本,所以它只能处理每个包的一个单一版本。对一个给定的包使用   \fBpkg_mkIndex\fR 和 \fBauto_mkindex\fR 两者来建立索引可能不是个好主意。如果你使用 \fBpkg_mkIndex\fR 来为一个包建立索引,它的命令不能被调用,一直等到使用 \fBpackage require\fR 选择了一个版本;相反的,用 \fBauto_mkindex\fR  建立索引的包由于没有版本而可以立即使用。           
+
+.SH "它是如何工作的 HOW IT WORKS"
+.PP
+\fBPkg_mkIndex\fR 依赖于 \fBpackage unknown\fR  命令、\fBpackage ifneeded\fR 命令、和自动装载器。在第一次调用一个 \fBpackage require\fR命令时,调用 \fBpackage unknown\fR   脚本。Tcl   初始化把它设置成求值在\fBauto_path \fR中的所有 \fBpkgIndex.tcl\fR  文件的一个脚本。\fBpkgIndex.tcl\fR 文件包含给每个可获得的包的 \fBpackage ifneeded\fR 命令;这些命令调用 \fBpackage provide\fR 命令来宣布这个包的可获得性,并且它们设置自动装载器的信息来装载这些包的文件。
+.VS 8.3
+如果在生成\fBpkgIndex.tcl\fR 时提供了 \fI-lazy\fR  标志,
+.VE
+在第一次调用它的命令之前不实际上装载一个给定包的给定版本的一个给定文件。所以在调用了 \fBpackage require\fR之后,你可能在这个解释器中不能看到这个包的命令,但你可以调用它的命令而它们将被自动装载。  
+
+.VS 8.3
+.SH "直接装载 DIRECT LOADING"
+.PP
+一些包,例如使用了名字空间和导出命令或要求特殊初始化的包,可以选择在 \fBpackage require\fR 的时候立即装载它们的包文件而不是延迟实际的装载到第一次使用这个包中的命令的时候。在生成包索引时这是缺省的模式。可以指定 \fI-lazy\fR 参数来屏弃(override)它。
+.VE
+
+.SH "复杂情况 COMPLEX CASES"
+脚本和二进制文件之间存在依赖,和包被分开成脚本和二进制文件的可被正确处理。但是,你可能必须调整\fBpkg_mkIndex\fR  处理这些文件的次序。下面详细描述这些要点。
+.PP
+如果每个脚本或文件包含一个包,并且包只包含在一个文件中,则事情就很容易。你可以简单的用一些通配符模式指定以任意次序为所有文件建立索引。
+.PP
+一般的,脚本依赖于其他包是没有问题的。如果脚本包含 \fBpackage require\fR 命令,在用于处理这个脚本的解释器中把他们连根拔除(stubbed out),所以不会导致问题。如果脚本调用了其他包的在全局代码中的过程,这些调用由一个存根(stub) \fBunknown\fR    命令处理。但是,如果脚本引用了其他包的在全局代码中的变量   ,这将导致错误。这也是糟糕的编码风格。
+.PP
+如果二进制文件依赖于其他的包,事情就变的棘手了,因为在装载一个二进制文件时不可能连根拔除C-层次 API 如 \fBTcl_PkgRequire\fR API。例如,假设 BLT 包要求 Tk,并在它的 \fBBlt_Init \fR例程中用对 \fBTcl_PkgRequire\fR 的一个调用表达了这种需求。要支持它,你必须在一个已经装载了Tk 的解释器中运行 \fBpkg_mkIndex\fR。你用 \fB-load \fR\fIpkgPat\fR选项来完成这个任务。如果你指定了这个选项,\fBpkg_mkIndex\fR将装载在 \fBinfo loaded\fR 中列出的所有的包和那些匹配 \fIpkgPat\fR 的包到用于处理文件的解释器中。在多数情况下这将可以满足二进制文件中的 \fBTcl_PkgRequire\fR 调用。
+.PP
+如果你为两个二进制文件建立索引,其中的一个依赖于另一个,你应该最后指定有依赖的那个包。这样没有依赖的那个包将被装载和建立索引,那么在处理第二个文件的时候这个文件所提供的包就是可获得的了。你还必须使用 \fB-load\fR 标志把第一个包装载到用于建立索引的一个临时解释器中;这将无损于指定仍未装载的包模式。
+.PP
+如果你有一个分开成一些脚本和一个二进制文件的包,则你必须避免 \fB-load\fR    标志。问题在于如果你在计算索引之前装载了一个包,它将屏蔽提供同一个包的其他部分的所有其他文件。如果你必须使用 \fB-load\fR,则你必须首先指定脚本;否则从二进制文件装载的包可能会屏蔽用脚本定义的包。    
+
+.SH "参见 SEE ALSO"
+package(n)
+
+.SH "关键字 KEYWORDS"
+auto-load, index, package, version
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/01 
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/popup.n b/src/mann/popup.n
new file mode 100644
index 0000000..7fd83e5
--- /dev/null
+++ b/src/mann/popup.n
@@ -0,0 +1,266 @@
+'\"
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: popup.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: popup.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_popup n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_popup \- 贴出一个弹出菜单
+.SH "总览 SYNOPSIS"
+\fBtk_popup \fImenu x y \fR?\fIentry\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个过程在屏幕上给定位置贴出(post)一个菜单并配置 Tk 使这个菜单和它的级联子菜单可以用鼠标或键盘来遍历(traverse)。\fIMenu\fR 是一个菜单组件的名字而 \fIx\fR 和 \fIy\fR 是显示这个菜单的根坐标。如果省略了 \fIentry\fR 或者是它是一个空串,则菜单的左上角被定位在给定点上。否则 \fIentry\fR 给出 \fImenu\fR 中的一个条目的索引,而定位的菜单将使这个条目位于给定点上。
+
+.SH "关键字 KEYWORDS"
+menu, popup
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/proc.n b/src/mann/proc.n
new file mode 100644
index 0000000..d7c8ea1
--- /dev/null
+++ b/src/mann/proc.n
@@ -0,0 +1,276 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: proc.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: proc.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH proc n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+proc \- 建立一个 Tcl 过程   
+.SH "总览 SYNOPSIS"
+\fBproc \fIname args body\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBproc\fR 命令建立一个叫做\fIname \fR的新的 Tcl 过程,替换已经叫这个名字的任何现存的命令或过程。 当调用这个新命令的时候,Tcl 解释器将执行 \fIbody\fR 的内容。通常,\fIname\fR  是未限定的(unqualified)(不包括任何包含(这个过程)的名字空间的名字),在当前名字空间中建立这个新过程。如果 \fIname\fR 包含任何名字空间限定符(qualifier),则在指定的名字空间中建立这个过程。\fIArgs\fR  指定给这个过程的形式参数。它由一个列表组成,可以为空,它的每个元素指定一个参数。每个参数指定符(specifier)也可以是有一个或两个字段(field)的一个列表。如果在指定符中只有一个单一字段则它是参数的名字;如果有两个字段,则第一个是参数名而第二个是它的缺省值。
+.PP
+在调用 \fIname\fR 时,为过程的每个形式参数建立一个局部变量;它的值将是在调用命令中相应的(实际)参数的值或这个参数的缺省值。在过程调用中可以不指定有缺省值的参数。但是,必须有足够的实际参数给所有没有缺省值的形式参数,并且没有多余的实际参数。有一种特殊情况可以允许过程有可变数目的参数。如果最后的形式参数的名字是 \fBargs\fR,则到这个过程的一个调用包含的实际参数可以多于过程拥有的形式参数。此时,把开始于应当被赋给 \fBargs \fR的那个实际参数的所有实际参数组合成一个列表(有如使用了 \fBlist\fR 命令);把这个组合后的值赋给局部变量 \fBargs\fR。
+.PP
+在执行 \fIbody\fR  的时候,变量名一般引用局部变量,在被引用时自动建立它们,在过程退出时(自动)删除它们。为过程的每个参数自动的建立一个局部变量。只能通过调用 \fBglobal\fR 命令或 \fBupvar\fR 命令来访问全局变量。只能通过调用 \fBvariable\fR 命令或 \fBupvar\fR  命令来访问名字空间变量。
+.PP
+\fBproc\fR  命令返回一个空串。在调用一个过程的时候,在一个  \fBreturn\fR 命令中指定这个过程的返回值。如果过程不执行一个显式的\fBreturn \fR命令,则它的返回值是在过程体中执行的最后一条命令的值。如果在执行过程体期间发生了一个错误,则作为一个整体的过程将返回相同的错误。      
+
+.SH "参见 SEE ALSO"
+info(n), unknown(n)
+
+.SH "关键字 KEYWORDS"
+argument, procedure
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/17
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/puts.n b/src/mann/puts.n
new file mode 100644
index 0000000..3d28b27
--- /dev/null
+++ b/src/mann/puts.n
@@ -0,0 +1,277 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: puts.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: puts.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH puts n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+puts \- 向一个通道写
+.SH "总览 SYNOPSIS"
+\fBputs \fR?\fB\-nonewline\fR? ?\fIchannelId\fR? \fIstring\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+把用 \fIstring\fR  给出的字符写到用 \fIchannelId \fR给出的通道中。    \fIChannelId\fR  必须是从以前的 \fBopen\fR  或 \fBsocket\fR  调用返回的一个通道标识符。它必须为输出而打开。如果未指定 \fIchannelId\fR  则取省为 \fBstdout\fR。\fBPuts\fR  通常在    \fIstring \fR后面输出一个换行字符,但可以通过指定    \fB-nonewline\fR 开关来禁止这个特征。
+.PP
+\fBputs\fR   
+依照给这个通道的 \fB-translation\fR  选项的值把在输出中换行(Newline)字符转换成特定于平台的行结束序列(例如,在  PC 上换行一般被替换成回车换行(carriage-return-linefeed)序列;在  Macintoshe 上换行通常被替换成回车符(carriage-returns))。关于 \fBfconfigure\fR   如何改变输出的讨论请参见 \fBfconfigure\fR   手册条目。
+.PP
+Tcl 在内部缓冲输出,所以用 \fBputs\fR  写的字符可能不会在输出文件或设备上立即出现;Tcl  通常延迟输出,一直等到缓冲区满了或通道被关闭。你可以通过 \fBflush\fR     命令强制输出立即出现。
+.PP
+当输出缓冲被添满的时候,在所有缓冲的数据被操作系统接受以便输出之前,\fBputs\fR   命令将一直阻塞。如果 \fIchannelId\fR   在非阻塞模式下,那么即使操作系统不接受这些数据,\fBputs\fR   命令也不阻塞。作为替代,Tcl  继续缓冲这些数据并在后台以底层的文件或设备可以接受的速度写它们。要使非阻塞的输出工作应用必须使用  Tcl 事件循环;否则 Tcl 不能发现文件或设备已经准备好接收更多的输出数据。在非阻塞模式下的一个通道可以缓冲任意数量的数据,这可能消耗大量的内存。要避免浪费内存,非阻塞 I/O  通常应该以事件驱动的方式用于 \fBfileevent\fR   命令(除非在通过一个文件事件得到指示,通知你通道已经准备好接收更多的数据,否则不要调用 \fBputs\fR)。  
+
+.SH "参见 SEE ALSO"
+file(n), fileevent(n)
+
+.SH "关键字 KEYWORDS"
+channel, newline, output, write
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/17   
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/pwd.n b/src/mann/pwd.n
new file mode 100644
index 0000000..9df85eb
--- /dev/null
+++ b/src/mann/pwd.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: pwd.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: pwd.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH pwd n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+pwd \- 返回当前的工作目录 
+.SH "总览 SYNOPSIS"
+\fBpwd\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+返回当前的工作目录的路径名。
+
+
+.SH "参见 SEE ALSO"
+file(n), cd(n), glob(n), filename(n)
+
+.SH "关键字 KEYWORDS"
+working directory
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/raise.n b/src/mann/raise.n
new file mode 100644
index 0000000..8e1f23f
--- /dev/null
+++ b/src/mann/raise.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1990 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: raise.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: raise.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH raise n 3.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+raise \- 改变一个窗口在堆栈次序中的位置
+.SH "总览 SYNOPSIS"
+\fBraise \fIwindow \fR?\fIaboveThis\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+如果省略了 \fIaboveThis\fR 参数则这个命令升高 \fIwindow\fR,这样它将在堆栈次序上高于它的所有兄弟窗口(它将不被任何兄弟窗口所遮挡(obscure)并将遮挡与它交叠的任何兄弟窗口)。如果指定了 \fIaboveThis\fR 则它必须是一个窗口的路径名字,它要么是 \fIwindow\fR 的一个兄弟窗口要么是 \fIwindow\fR.的兄弟窗口的一个后代。在这种情况下,\fBraise\fR 命令将在堆栈次序上把 \fIwindow\fR 插入到 \fIaboveThis\fR (或 \fIaboveThis\fR 的祖先窗口中是 \fIwindow \fR的兄弟窗口的那个窗口)的紧上面;这最终将要么升高要么降低 \fIwindow\fR。
+
+.SH "参见 SEE ALSO"
+lower
+
+.SH "关键字 KEYWORDS"
+obscure, raise, stacking order
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/re_syntax.n b/src/mann/re_syntax.n
new file mode 100644
index 0000000..38c5a5f
--- /dev/null
+++ b/src/mann/re_syntax.n
@@ -0,0 +1,771 @@
+'\"
+'\" Copyright (c) 1998 Sun Microsystems, Inc.
+'\" Copyright (c) 1999 Scriptics Corporation
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: re_syntax.n,v 1.3 2004/03/01 14:15:48 bbbush Exp $
+'\"
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: re_syntax.n,v 1.3 2004/03/01 14:15:48 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH re_syntax n "8.1" Tcl "Tcl Built-In Commands"
+.BS
+.SH NAME
+re_syntax \- Tcl 正则表达式的语法。
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+一个\fB正则表达式\fR (\fIregular expression\fR ) 描述了一类字符串。它是匹配特定字符串而不匹配其他的字符串的一个模式。
+
+.SH "RE 的不同风格 DIFFERENT FLAVORS OF REs"
+正则表达式(“RE”)由 POSIX 定义,有两种风格(flavor): \fB扩展\fR RE(``EREs'')和\fB基本\fRRE(``BREs'')。ERE 粗略的相当于传统的 \fBegrep\fR \fI\fR的正则表达式,而 BRE 粗略的相当于传统的 \fBed\fR 的正则表达式。这个实现增加了第三种风格,\fB高级\fRRE(``AREs''),它基本上是 ERE 再加上一些重要的扩展。
+.PP
+译注:grep 缺省支持 BRE,通过指定 -E 选项来支持 ERE,历史上的 egrep 和 fgrep 已经合并入 grep 中。ed、sed 支持 BRE,lex、AWK 支持 ERE。
+.PP
+这个手册页主要描述 ARE。提供 BRE 主要是为了在一些老程序中反向(backward)兼容;它们将最后讨论。POSIX 
+ERE 基本上是 ARE 的一个真子集。在 ERE 中不存在的 ARE 的特征将被指示出来。
+
+.SH "正则表达式的语法 REGULAR EXPRESSION SYNTAX"
+.PP
+实现 Tcl 正则表达式使用了 Henry Spencer 写的包,基于 POSIX 1003.2 规定和一些(不是全部) Perl5 扩展 (感谢 Henry!)。下面的许多正则表达式描述是原封不动的从他的手册页复制过来的。
+.PP
+译注:Perl5 的正则表达式也是从 Henry Spencer 所写的包演变而来。
+.PP
+一个 ARE 是一个或多个由`\fB|\fR'分隔的\fB分支\fR(branch)(构成的),它匹配与任何一个分支匹配的一个字符序列。
+.PP
+一个分支是零或多个串联起来的\fB约束\fR(constraint)或\fB定量\fR\fB原子\fR(quantified atom)(构成的)。它与每个构件(约束或定量原子)所匹配的任何字符序列的一个串联相匹配,组成这个字符序列的串联的第一个字符序列与这个分支的第一个构件相匹配,第二个字符序列与第二个构件相匹配,以此类推。一个空分支匹配空串。
+.PP
+一个定量原子是可能跟随一个单一的\fB定量符\fR (quantifier) 的原子。不加定量符,它匹配这个原子的一个匹配。定量符和它所定量的原子的匹配如下:
+.RS 2
+.TP 6
+\fB*\fR
+零个或多个这个原子的匹配的一个序列
+.TP
+\fB+\fR
+一个或多个这个原子的匹配的一个序列
+.TP
+\fB?\fR
+零个或一个这个原子的匹配的一个序列
+.TP
+\fB{\fIm\fB}\fR
+严格的 \fIm\fR 个这个原子的匹配的一个序列
+.TP
+\fB{\fIm\fB,}\fR
+\fIm\fR 或更多个这个原子的匹配的一个序列
+.TP
+\fB{\fIm\fB,\fIn\fB}\fR
+从 \fIm\fR 到 \fIn\fR (包括二者)个这个原子的匹配的一个序列;\fIm\fR 不能超过 \fIn\fR
+.TP
+\fB*?  +?  ??  {\fIm\fB}?  {\fIm\fB,}?  {\fIm\fB,\fIn\fB}?\fR
+不贪婪的 (\fInon-greedy\fR) 定量符,它匹配与上面相同的可能性,但偏好最小字符数而不是最大字符数的匹配(参见MATCHING 匹配)。
+.RE
+.PP
+使用 \fB{\fR 和 \fB}\fR 的形式叫做\fB束缚\fR(bound)。数 \fIm\fR 和 \fIn\fR 是无符号十进制整数,允许的值从 0 到 255(包括0 及 255)。
+.PP
+\fB原子\fR是下列之一:
+.RS 2
+.TP 6
+\fB(\fIre\fB)\fR
+(这里的 \fIre\fR 是任何正则表达式) 匹配对 \fIre \fR的一个匹配,为可能的报告而记录(最长和最短的)匹配
+
+译注:使用圆括号来组合原子。例如,ab*     被识别为原子 a 和原子 b 的闭包 b* 的串联 a(b)*,而不是原子  a 和原子 b 的串联 ab 的闭包 (ab)*。捕获的意思是把在圆括号中的子表达式所匹配的字符序列保存下来,由后续的后引用去使用。
+.TP
+\fB(?:\fIre\fB)\fR
+同上,但不报告(设置为“非捕获”的圆括号)
+.TP
+\fB()\fR
+匹配一个空串,为可能的报告而记录(匹配)
+.TP
+\fB(?:)\fR
+匹配一个空串,不报告
+.TP
+\fB[\fIchars\fB]\fR
+一个方括号表达式 (\fIbracket expression\fR) ,匹配 \fBchars\fR 中的任何一个字符(详情参见 BRACKET EXPRESSIONS 方括号表达式)
+.TP
+ \fB.\fR
+匹配任何单一字符
+.TP
+\fB\e\fIk\fR
+(这里的 \fIk\fR 是一个非 alphanumeric (字母或数字)字符),匹配被接受为普通字符的这个字符,例如,\e\e 匹配一个反斜杠字符
+.TP
+\fB\e\fIc\fR
+(这里的 \fIc\fR 是一个 alphanumeric 字符(可能跟随着其他字符)),一个\fB转义 (escape)\fR(专属 ARE),参见后面的ESCAPES 转义)
+.TP
+\fB{\fR
+当跟随着不是数字的一个字符的时候,匹配左花括号字符`\fB{\fR';在跟随着一个数字的时候,它是一个\fB束缚\fR的开始(参见前面)
+.TP
+\fIx\fR
+这里 \fIx\fR 是没有其他意义的一个单一字符,匹配这个字符。
+.RE
+.PP
+\fB约束\fR (constraint) 在指定条件满足的时候匹配一个空串。一个约束不能跟随一个定量符。简单的约束如下;其他的在以后的 ESCAPES 转义 章节中介绍。
+
+译注:约束的术语叫锚定
+.RS 2
+.TP 8
+\fB^\fR
+匹配一行的开始
+.TP
+\fB$\fR
+匹配一行的结束
+.TP
+\fB(?=\fIre\fB)\fR
+\fB正前行\fR(positive lookahead) (专属 ARE),匹配任何与 \fIre\fR 相匹配的子串的开始端点
+.TP
+\fB(?!\fIre\fB)\fR
+\fB负前行\fR(negative lookahead) (专属 ARE),匹配任何不与 \fIre\fR 相匹配的子串的开始端点
+.RE
+.PP
+前行约束不能包括后引用(参见后面),并且其中的所有圆括号被认为是非捕获的。
+.PP
+一个 RE 不能结束于`\fB\e\fR'.
+
+.SH "方括号表达式 BRACKET EXPRESSIONS"
+一个方括号表达式是一个在`\fB[\|]\fR'中包围的一个列表。它通常匹配列表中的任意一个单一字符(参见后面)。如果这个列表以“\fB^\fR”为开始,它匹配不属于这个列表剩余部分的任意一个单一字符(参见后面)。
+.PP
+如果在这个列表中的两个字符被`\fB\-\fR'分割,这是在归并序列(collating sequence)中这两个字符之间(包括二者)的字符的完整范围的简写,例如,\fB[0\-9]\fR 在 ASCII 中匹配任何十进制数字。两个范围不能共享同一个端点,比如 \fBa\-c\-e\fR 是非法的。范围是很依赖于整理序列的,可移植程序应该避免依靠它们。
+.PP
+译注:\fB整理元素\fR \-\- 用来确定字符或宽字符字符串的逻辑次序的最小实体。一个整理元素的组成要么是一个单一字符,要么是被整理为一个实体的两个或更多字符。由当前地域(locale)中的 LC_COLLATE 类属的值确定整理元素的当前设置。
+.PP
+译注:\fB整理序列\fR \-\- 当前地域中的 LC_COLLATE 类属的设置确定 整理元素的相对次序。这个字符次序定义所有整理元素的相对位置,在这个次序中每个元素都占有一个唯一的位置。
+.PP
+要在这个列表中包括一个文字的
+\fB]\fR
+或者
+\fB\-\fR
+,最简单的方法是把它包围在
+\fB[.\fR 和 \fB.]\fR
+中使它成为一个整理元素(见后)。可替代的,使它成为第一个字符(跟随在可能的‘\fB^\fR’的后面),或(专属 ARE) 加以 ‘\fB\\fR’先导。可选的,对于‘\fB\-\fR’,使它成为最后的字符,或一个范围的第二端点。要使用一个文字 \fB\-\fR 作为一个范围的开始端点,可以使它成为一个整理元素或(专属 ARE) 加以‘\fB\e\fR’先导。除了这些例外、一些使用 \fB[\fR (参见下段)的组合、和转义,在一个方括号表达式中的所有其他特殊字符失去其特殊意义。
+.PP
+在一个方括号表达式当中,在 \fB[.\fR 和 \fB.]\fR 当中包围一个\fB归并元素\fR(collating element)(一个字符、一个多字符序列被整理为如同一个单一字符,或给二者的一个整理序列名字)表示这个整理元素的一个字符序列。这个序列是这个方括号表达式列表中的一个单一元素。在有多字符整理元素的地域中,一个方括号表达式可以匹配多于一个字符。
+.VS 8.2
+所以(潜藏的),即使在方括号表达式中未出现多字符整理元素,以 \fB^\fR 为开始的一个方括号表达式仍可以匹配多字符整理元素! (注意:Tcl 目前没有多字符整理元素。这些信息只是用来解释概念。)
+.PP
+例如,假定整理序列包含一个 \fBch\fR 多字符整理元素,则 RE \fB[[.ch.]]*c\fR (后面跟随着 \fBc\fP的零或多个 \fBch\fP) 匹配`\fBchchcc\fR'的最先的5个字符。还有 \fB[^c]b\fR 匹配整个`\fBchb\fR'(因为 \fB[^c]\fR 匹配多字符 \fBch\fR)。
+.VE 8.2
+.PP
+在一个方括号表达式中,在 \fB[=\fR 和 \fB=]\fR 当中包含的一个整理元素是一个equivalence class 等价类,表示等价于这个整理元素的所有整理元素的字符序列,包括它自身。(如果没有其他等价的整理元素,与在分界符`\fB[.\fR'\&和`\fB.]\fR'中包含一样对待。) 例如,如果 \fBo\fR 和\fB\o'o^'\fR 是一个等价类的成员,则`\fB[[=o=]]\fR'、`\fB[[=\o'o^'=]]\fR'、和`\fB[o\o'o^']\fR'\&都是同义词。一个等价类不能是一个范围的端点。
+.VS 8.2
+(注意:Tcl 目前只实现了 Unicode 地域。它不定义任何等价类。上面的例子只是用来解释概念。)
+.VE 8.2
+.PP
+在一个方括号表达式中,在 \fB[:\fR 和 \fB:]\fR 中包含的一个\fIcharacter class\fR 字符类 的名字表示属于这个类的所有字符的列表(不是所有整理元素!)。标准字符类有:
+.PP
+.RS
+.ne 5
+.nf
+.ta 3c
+\fBalpha\fR	一个字母
+\fBupper\fR	一个大写字母
+\fBlower\fR	一个小写字母 
+\fBdigit\fR	一个十进制数字
+\fBxdigit\fR	一个十六进制数字
+\fBalnum\fR	一个 alphanumeric (字母或数字)
+\fBprint\fR	一个 alphanumeric (同于 alnum)
+\fBblank\fR	一个空格或 tab 字符
+\fBspace\fR	在显示的文本中产生白空格的一个字符 
+\fBpunct\fR	一个标点字符
+\fBgraph\fR	有图形表示的一个字符
+\fBcntrl\fR	一个控制字符
+.fi
+.RE
+.PP
+一个地域可以提供其他的字符类。
+.VS 8.2
+(注意:Tcl 目前只实现了一个地域:Unicode 地域。) 
+.VE 8.2
+一个字符类不能用做一个范围的端点。
+.PP
+方括号表达式有两个特殊情况: 方括号表达式
+\fB[[:<:]]\fR
+和
+\fB[[:>:]]\fR
+是约束,分别匹配在一个字开始处和结束处的空串。定义一个字为既没有前导的又没有尾随的单词字符的单词字符的一个序列。一个单词字符是一个 \fBalnum \fR字符或一个下划线(\fB_\fR)。这些特殊的方括号表达式已被淘汰;ARE 用户应当转而使用约束转义(见后)。
+.SH "转义 ESCAPES"
+转义(专属 ARE),它以
+\fB\e\fR
+为开始后面跟随着一个字母字符,存在一些变体: 字符录入(entry)、类简写、约束转义、和后引用。在 ARE 中,跟随着一个 alphanumeric 字符但不约束一个有效转义的
+\fB\e\fR
+是非法的。在 ERE 中,没有转义: 在方括号表达式外部,跟随着一个 alphanumeric 字符的一个
+\fB\e\fR
+仅表示这个字符为一个普通字符,而在一个方括号表达式内部,
+\fB\e\fR
+是一个普通字符。(后者是在 ERE 和 ARE 之间的一个实际上的不兼容。)
+.PP
+字符录入转义 (Character-entry escapes) (专属 ARE) 的存在简便了在 RE 中指定一个非打印和其他非常规字符:
+.RS 2
+.TP 5
+\fB\ea\fR
+警报(震铃)字符,如同 C 语言
+.TP
+\fB\eb\fR
+退格,如同 C 语言
+.TP
+\fB\eB\fR
+\fB\e\fR 的同义词,在有多层反斜杠处理的一些应用中用来减少双反斜杠
+.TP
+\fB\ec\fIX\fR
+(这里的 X 是任何字符) 字符的低端5位与 \fIX \fR的低端5位相同,而其他位全是零
+.TP
+\fB\ee\fR
+其整理序列名字是‘\fBESC\fR’的字符,如果尝试失败,这个字符有八进制值 033
+.TP
+\fB\ef\fR
+换页,如同 C 语言
+.TP
+\fB\en\fR
+换行,如同 C 语言
+.TP
+\fB\er\fR
+回车,如同 C 语言
+.TP
+\fB\et\fR
+水平 tab,如同 C 语言
+.TP
+\fB\eu\fIwxyz\fR
+(这里的 \fIwxyz\fR 是严格的四个十六进制数字) 在本地字节次序中的 Unicode 字符 \fBU+\fIwxyz\fR
+.TP
+\fB\eU\fIstuvwxyz\fR
+(这里的 \fIstuvwxyz\fR 是严格的八个十六进制数字)     保留给假定的某种扩展到32位的 Unicode
+.TP
+\fB\ev\fR
+垂直 tab,如同 C 语言
+.TP
+\fB\ex\fIhhh\fR
+(这里的 \fIhhh\fR 是十六进制数字的任意序列) 其十六进制值为 \fB0x\fIhhh\fR 的字符(不管使用了多少十六进制数字它都是一个单一字符)。
+.TP
+\fB\e0\fR
+其值为 \fB0 \fR的字符
+.TP
+\fB\e\fIxy\fR
+(这里的 \fIxy\fR 是严格的两个八进制数字,并且不是一个\fB后引用\fR(参见后面)) 其八进制值为\fB0\fIxy\fR 的字符
+.TP
+\fB\e\fIxyz\fR
+(这里的 \fIxyz\fR 是严格的两个八进制数字,并且不是一个\fB后引用\fR(参见后面)) 其八进制值为 \fB0\fIxyz\fR的字符
+.RE
+.PP
+十六进制数字是 `\fB0\fR'-`\fB9\fR', `\fBa\fR'-`\fBf\fR',
+和`\fBA\fR'-`\fBF\fR'.
+八进制数字是 `\fB0\fR'-`\fB7\fR'.
+.PP
+字符录入转义总是被接受为普通字符。例如,
+\fB\e135\fR
+是ASCII中的
+\fB]\fR
+而
+\fB\e135\fR
+不终结一个方括号表达式。但是要小心,一些应用(例如 C 编译器)在正则表达式包得到它们之前要自己解释这些序列,这可能就要求写两次(四次 (quadrupling),等等) `\fB\e\fR'。
+.PP
+类简写转义 Class-shorthand escapes (专属 ARE) 为特定的通用字符类提供简写:
+.RS 2
+.TP 10
+\fB\ed\fR
+\fB[[:digit:]]\fR
+.TP
+\fB\es\fR
+\fB[[:space:]]\fR
+.TP
+\fB\ew\fR
+\fB[[:alnum:]_]\fR
+(注意有下划线)
+.TP
+\fB\eD\fR
+\fB[^[:digit:]]\fR
+.TP
+\fB\eS\fR
+\fB[^[:space:]]\fR
+.TP
+\fB\eW\fR
+\fB[^[:alnum:]_]\fR
+(注意有下划线)
+.RE
+.PP
+W在方括号表达式中,没有外面的方括号的`\fB\ed\fR', `\fB\es\fR',
+和 `\fB\ew\fR'\&
+,还有
+`\fB\eD\fR', `\fB\eS\fR',
+和 `\fB\eW\fR'\&
+都是非法的。
+.VS 8.2
+(所以,等价于\fB[a-c[:digit:]]\fR 的 \fB[a-c\ed]\fR 和等价于 \fB[a-c^[:digit:]]\fR 的\fB[a-c\eD]\fR 是非法的)
+.VE 8.2
+.PP
+约束转义 constraint escape (AREs only) 是如果指定条件满足则匹配空串的一个约束,它被写成一个转义:
+.RS 2
+.TP 6
+\fB\eA\fR
+只在字符串开始处匹配(与 `\fB^\fR'的不同之处请参见下面的 MATCHING 章节)
+.TP
+\fB\em\fR
+只在一个字开始处匹配
+.TP
+\fB\eM\fR
+在一个字的结束处匹配
+.TP
+\fB\ey\fR
+只在一个字的开始处或结束处匹配
+.TP
+\fB\eY\fR
+只在一个字的不是开始处或结束处的某点上匹配
+.TP
+\fB\eZ\fR
+只在一个字符串的结束处匹配(与 `\fB$\fR'的不同之处请参见下面的 MATCHING 章节)
+.TP
+\fB\e\fIm\fR
+(这里的 \fIm\fR 是一个非零数字)一个\fIback reference\fR 后引用, 参见后面
+.TP
+\fB\e\fImnn\fR
+(这里的 \fIm\fR 是一个非零数字,而 \fInn\fR 是一些更多的数字,并且十进制值 \fImnn\fR 不大于目前为止闭合的捕获圆括号的数目) 一个\fB后引用\fR,参见下面 
+.RE
+.PP
+同于上面规定的
+\fB[[:<:]]\fR
+和 
+\fB[[:>:]]\fR
+,字定义为既没有前导的又没有尾随的单词字符的一个序列。
+一个单词字符是一个 \fBalnum \fR字符或一个下划线(\fB_\fR)。
+在方括号表达式中,约束转义是非法的。
+.PP
+一个\fB后引用\fR(专属 ARE) 匹配的字符串与用数字指定的在圆括号中的子表达式所匹配的字符串相同,所以(例如) \fB([bc])\e1\fR 匹配 \fBbb\fR 或 \fBcc\fR 而不是 ‘\fBbc\fR’。在 RE 中,子表达式必须全部在后引用的前面。以前导的圆括号(左圆括号)的次序给子表达式编号。非捕获圆括号不定义子表达式。
+.PP
+译注:后引用是原属 BRE 的特征,ERE 无此特征。例如,表达式 ^(.*)\e1$ 匹配由同一个字符串的两个毗连的出现组成的一行,而表达式 (a)*\e1 不匹配 a。(a)(b)\e1 匹配 aba,(a)(b)\e2 匹配 abb,(a(b))\e1 匹配 abab,(a(b))\e2 匹配abb。(a)\e1 等价于 a{2,2}。
+.PP
+在八进制字符录入转义和后引用之间有一个历史遗留的二义性,只能象上面提示的那样用启发式的方法来解决。一个前导的零总是指示一个八进制转义。一个单一的非零数字,不跟随着其他数字,总是接受为一个后引用。不以一个零为开始的一个多数字序列如果在一个合适的子表达式后面,则被接受为一个后引用 (比如给出的后引用的序号在合法范围内),否则被接受为一个八进制转义。
+.SH "元语法 METASYNTAX"
+除了上面描述的主要的语法之外,还可获得特殊形式和杂项的一些语法性的设施。
+.PP
+一般通过应用相关的方式指定使用的 RE 的风格。但是,可以用\fB指示符\fR(\fIdirector\fR)来屏弃它们。如果某种风格的一个 RE 以‘\fB***:\fR’为开始,则 RE 的剩余部分是一个 ARE。如果某种风格的一个 RE 以‘\fB***=\fR’为开始,则 RE 的剩余部分被接受为一个文字串,并且其中的所有字符被认为是普通字符。
+.PP
+一个 ARE 可以以\fIembedded options\fR 嵌入选项为开始: 
+一个序列
+\fB(?\fIxyz\fB)\fR
+(这里的
+\fIxyz\fR
+是一个或更多的字母字符) 指定影响 RE 剩余部分的选项。它们提供和屏弃由应用指定的任何选项。可获得的选项字母有:
+.RS 2
+.TP 3
+\fBb\fR
+RE 的剩余部分是一个 BRE
+.TP 3
+\fBc\fR
+大小写敏感 (通常是缺省的)
+.TP 3
+\fBe\fR
+RE 的剩余部分是一个 ERE
+.TP 3
+\fBi\fR
+大小写不敏感 (参见下面的 MATCHING 匹配)
+.TP 3
+\fBm\fR
+历史上的 \fBn \fR的同义词
+.TP 3
+\fBn\fR
+换行敏感匹配 (参见下面的 MATCHING 匹配)
+.TP 3
+\fBp\fR
+部分换行敏感匹配 (参见下面的 MATCHING 匹配)
+.TP 3
+\fBq\fR
+RE 的剩余部分是一个文字 (被引用起来的 ``quoted'')字符串,都是普通字符
+.TP 3
+\fBs\fR
+非换行敏感匹配 (通常是缺省的)
+.TP 3
+\fBt\fR
+紧凑语法 (通常是缺省的;参见后面)
+.TP 3
+\fBw\fR
+反向部分换行敏感 (离奇的 ``weird'') 匹配 (参见下面的 MATCHING 匹配)
+.TP 3
+\fBx\fR
+展开语法 (参见后面)
+.RE
+.PP
+嵌入选项影响的序列被
+\fB)\fR
+终结。它们只在一个 ARE 的开始处有效,此后不可以在其中使用。
+.PP
+除了通常的(紧凑) RE 语法,其中所有字符都有意义,还有一个展开语法,在所有风格的 RE 中都可以使用 \fB-expanded\fR 开关来获得它,或者在 ARE 中使用嵌入的 x 选项。在展开语法中,忽略白空格和在 \fB#\fR 和随后的换行(或 RE 结束)之间的所有字符,这就允许了在一个复杂的 RE 中进行分段和注释。有对这些基本规则的三个例外:
+.RS 2
+.PP
+保留有前导`\fB\e\fR'的白空格或 `\fB#\fR'
+.PP
+保留在方括号表达式中的白空格或 `\fB#\fR' 
+.PP
+在多字符符号如 ARE `\fB(?:\fR' 或 `\fB\e(\fR' 中间的白空格或注释是非法的
+.RE
+.PP
+展开语法中的白空格是 blank、tab
+.VS 8.2
+、和属于空格字符类的任何字符。
+.VE 8.2
+.PP
+最后,在 ARE 中,在方括号表达式外面,序列 `\fB(?#\fIttt\fB)\fR'
+(这里的
+\fIttt\fR
+是不包含 `\fB)\fR' 的任何文本)
+是一个注释,它将被完全忽略。同样,不允许它在多字符符号如 `\fB(?:\fR'中间的出现。这种注释是历史产物而不是很有用的设施,它的使用被淘汰了;应使用展开语法来替代。
+.PP
+如果应用(或一个启始的 \fB***=\fR 指示符)指定用户的输入被作为一个文字串而不是一个 RE 来对待,则不能获得这些元语法扩展。
+.SH "匹配 MATCHING"
+译注:下述引自 XBD RE 规定中的匹配定义,略有变更。
+.PP
+译注:零个或多个字符的一个序列被称为与 RE 匹配的条件是在这个序列中的字符对应于这个模式定义的一个字符序列。
+.PP
+译注:对一个匹配的序列的查找开始于一个字符串的开始处,停止于找到第一个匹配字符串的时候,这里定义\fB第一个\fR的意思为“字符串中最早开始的”。如果模式允许匹配的字符有可变的数目,因此在这个点开始的序列多于一个,则匹配最长的那个序列。例如: RE bb* 匹配 abbbc 中的第2到第4个字符,而 RE (wee|week)(knights|night) 匹配 weeknights 的所有10个字符。
+.PP
+译注:与整个匹配是最长的最左匹配相一致,从左到右的每个子模式,匹配最长的可能的字符串。为此,一个空串被认为比根本没有匹配长。例如,针对(against) abcdef 匹配 RE (.*).* ,子表达式 (\1) 是 abcdef,而针对 bc 匹配 RE (a*)*,子表达式 (\1) 是空串。
+.PP
+译注:通过向每个子表达式递归的提供最左最长匹配来确定什么(子)字符串对应于子表达式是可能的,而附带条件是整体匹配是最左的、最长的。例如,针对acdacaaa 匹配 (ac*)c*d[ac]*\1 匹配出 acdacaaa (这里 \1=a); 而简单的给 (ac*) 匹配最长的将生成 \1=ac,但整体匹配将变小 (acdac)。概念上,实现必须检查每种可能的匹配,并在生成的最左最长的总体匹配中,为最左子表达式挑出一个最长的匹配(子串)并以此类推。注意,这意味着子表达式的匹配是上下文相关的: 在一个很大的 RE 中的一个子表达式所匹配的字符串可能与它作为一个独立的 RE 时不同,还有,即使在类似的字符序列中,在同一个很大的 RE 中的同一个子表达式的两个实例可能匹配不同的长度。例如,在 RE (a.*b)(a.*b) 中,两个完全相同的子表达式将分别的匹配 accbaccccb 的四个和六个字符。
+.PP
+如果一个 RE 能匹配一个给定字符串中的多于一个的子串,RE 匹配在这个字符串中最先开始的子串。如果 RE能匹配的在这一点上开始的子串多于一个,它的选择决定于它的\fB偏好\fR(preference): 要么是最长的子串,要么是最短的子串。
+.PP
+多数原子和所有约束,都没有偏好。一个有圆括号的 RE 与 RE 有相同的偏好(有可能没有)。一个有
+\fB{\fIm\fB}\fR
+或
+\fB{\fIm\fB}?\fR
+定量符的定量原子与原子自身有相同的偏好(有可能没有)。一个有其他平常的定量符的定量原子(包括在 
+\fB{\fIm\fB,\fIn\fB}\fR
+中
+\fIm\fR
+等于
+\fIn\fR)
+偏好最长的匹配。一个有不贪婪定量符的定量原子(包括在 
+\fB{\fIm\fB,\fIn\fB}?\fR
+中
+\fIm\fR
+等于
+\fIn\fR
+的情况)
+偏好最短的匹配。一个分支与在它的里面的第一个定量原子有相同的偏好。用 \fB|\fR 操作符连接起来的一个由两个或多个分支组成的 RE 偏好最长的匹配。
+.PP
+取决于匹配整个 RE 的规则所强加的约束,基于可能子串的表现,子表达式可以匹配最长或最短的可能子串,在 
+RE 中开始较早的子表达式优先于开始较晚的。注意,外部的子表达式优先于其中的构件子表达式。
+.PP
+注意,可以分别的使用定量符
+\fB{1,1}\fR
+和
+\fB{1,1}?\fR
+在子表达式或整个 RE 上强制最长和最短偏好。
+.PP
+用字符数而不是整理元素数来测量匹配长度。一个空串被当作比根本没有匹配长 ,例如
+\fBbb*\fR
+匹配 `\fBabbbc\fR'中间的三个字符,
+\fB(week|wee)(night|knights)\fR
+匹配 `\fBweeknights\fR'的所有10个字符,在针对(against)
+\fBabc\fR
+匹配 \fB(.*).*\fR 的时候圆括号中的子表达式匹配所有这三个字符,而在针对
+\fBbc\fR
+匹配 \fB(a*)*\fR 的时候整个 RE 和圆括号中子表达式都匹配一个空串。
+.PP
+如果指定了大小写无关匹配,效果如同所有字母的大小写区别都消失了。当存在大小写区别的一个字符在方括号表达式外面作为一个普通字符出现的时候,它被有效的转变成包含大小写二者的一个方括号表达式, 所以 \fBx\fR 变成了`\fB[xX]\fR'。当它出现在一个方括号表达式中,把它对应的所有大小写添加到方括号中,所以\fB[x]\fR 变成 \fB[xX]\fR而 \fB[^x]\fR 变成 `\fB[^xX]\fR'。
+.PP
+如果指定了换行敏感匹配,则 \fB.\fR 和使用 \fB^\fR 的方括号表达式永不匹配换行字符(所以除非 RE 显式安排,否则永不会跨越换行来进行匹配),并且 \fB^\fR 和 \fB$\fR 除了分别匹配字符串的开始和结束之外,还分别的匹配在换行之后和之前的空串。ARE \fB\A\fR 和 \fB\Z\fR 继续\fB只\fR匹配字符串的开始和结束。
+.PP
+如果指定了部分换行敏感,这将致使 \fB.\fR 和方括号表达式成为换行敏感匹配,但不影响 \fB^\fR 和‘\fB$\fR’。
+.PP
+如果指定了反向部分换行敏感,这将致使 \fB^\fR 和 \fB$\fR 成为换行敏感匹配,但不影响 \fB.\fR 和方括号。这不是很有用,提供它只是为了对称。
+.SH "限制和兼容性 LIMITS AND COMPATIBILITY"
+对于 RE 的长度没有强加特定的限制。想要高度可移植的程序不应该依赖比 256 字节长的 RE,因为遵从 POSIX 的实现可能拒绝接受这样的 RE。
+.PP
+专属 ARE 并且实际上与 POSIX ERE 不相容的特征是在方括号表达式中的 \fB\e\fR 不失去它的特殊意义。所有其他 ARE 特征使用的语法在 POSIX ERE 中是非法的,或着有未定义或未指定的效果;指示符的 \fB***\fR 语法同样不属于 BRE 和 ERE 二者的 POSIX 语法。
+.PP
+许多 ARE 扩展取自 Perl,为了整理它们而进行了一些变更,还有一些 Perl 扩展未提供。要注意的不相容包括:‘\fB\eb\fR’、‘\fB\eB\fR’,缺乏对尾随的换行的特殊对待,为受换行敏感匹配影响的 RE 增加了方括号表达式补全,在先行约束中对圆括号和后引用的限制,和最长/最短匹配的匹配语义。
+.PP
+自从这个包的一个早期的 beta 测试版本做了变更以来,RE 的匹配的规则包含正常的和非贪婪的定量符二者。(新规则更加简单和清晰,而不在猜测用户的真实意图上费很大力气。)
+.PP
+Henry Spencer 的原始的 1986 \fIregexp\fR 包,仍被广泛的使用(例如,在 Tcl 8.1 之前的发行中),它实现了今天的 ERE 的一个早期版本。在 \fIregexp \fR的近似 ERE (简写为 RRE)和 ARE 之间有四点不相容: 
+In roughly increasing order of significance:
+.PP
+.RS
+在 ARE 中,跟随着一个字母字符的 \fB\e\fR  要么是转义要么是一个错误,而在 RRE 中,它只是写字母的另一种方式。这不应该是一个问题,因为在  RRE 中没有理由写出这样的一个序列。
+.PP
+在 ARE 中跟随着一个数字的 \fB{\fR 是一个束缚的开始,而在 RRE 中,\fB{\fR 总是一个普通字符。这样的序列是少见的,并且经常导致一个错误,原因是随后的字符看起来不象一个有效的束缚。
+.PP
+在 ARE 中,在`\fB[\|]\fR'内 \fB\e\fR 保持是一个特殊字符,所以在`\fB[\|]\fR'内一个文字 \fB\e\fR 必须写成`\fB\e\e\fR'。在 RRE 中,在\fB[\|]\fR内 `\fB\e\e\fR' 也给出一个文字 \fB\e\fR,但只有真正的偏执狂程序员才例行公事的双写反斜杠。
+.PP
+ARE 为 RE 报告最长的和最短的匹配,而不是按指定的查找次序找到的第一个匹配。这可能影响寄希望于第一个匹配不被报告的一些 RRE。(废弃了为快速匹配而优化查找次序的 RRE 细致工艺(ARE 并行的检查所有可能的匹配,并且它们的性能在很大程度上不敏感于它们的复杂性),而为故意的找寻非最长或最短的一个匹配而开发的查找次序需要重写。)
+.RE
+
+.SH "基本正则表达式 BASIC REGULAR EXPRESSIONS"
+BRE 在一些方面与 ERE 有所区别。 `\fB|\fR', `\fB+\fR',
+和
+\fB?\fR
+是普通字符并且没有与之等价的功能。用于束缚的分界符是
+\fB\e{\fR
+和 `\fB\e}\fR',
+而 
+\fB{\fR
+和
+\fB}\fR
+本身是普通字符。用于嵌套子表达式的圆括号是
+\fB\e(\fR
+和`\fB\e)\fR',
+而 
+\fB(\fR
+和
+\fB)\fR
+自身是普通字符。除了在 RE 或一个圆括号中的子表达式的开始处之外,
+\fB^\fR
+是一个普通字符,除了在 RE 或一个圆括号中的子表达式的结束处之外,
+\fB$\fR
+是一个普通字符,而在 RE 或一个圆括号中的子表达式的开始处之外出现的 
+\fB*\fR
+是一个普通字符(在可能的前导 `\fB^\fR' 之后)。最后,可获得单一数字的后引用, 
+\fB\e<\fR
+和
+\fB\e>\fR
+分别是
+\fB[[:<:]]\fR
+和
+\fB[[:>:]]\fR
+的同义词;没有其他可获得的转义。
+
+.SH "参见 SEE ALSO"
+RegExp(3), regexp(n), regsub(n), lsearch(n), switch(n), text(n)
+
+.SH "关键字 KEYWORDS"
+match, regular expression, string
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/read.n b/src/mann/read.n
new file mode 100644
index 0000000..68badbe
--- /dev/null
+++ b/src/mann/read.n
@@ -0,0 +1,280 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: read.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: read.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH read n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+read \- 从一个通道读
+.SH "总览 SYNOPSIS"
+\fBread \fR?\fB\-nonewline\fR? \fIchannelId\fR
+.sp
+\fBread \fIchannelId numChars\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+在第一种形式下,\fBread\fR 命令从 \fIchannelId\fR 读出直到文件结束的所有数据。如果指定了 \fB-nonewline\fR 开关,那么文件的最后一个字符要是换行的话则丢弃它。
+.VS 8.1
+在第二种情况下,额外的参数指定要读多少个字符。 实际上就读取并返回这么多字符,除非在文件中剩下的字符少于 \fInumChars\fR ;在这种情况下返回所有剩余的字符。如果通道被配置成使用多字节编码,则读的字符数可能与读的字节数不相同。
+.PP
+如果 \fIchannelId\fR 在非阻塞模式下,这个命令读的字符可能不象要求的那样多: 一旦所有可获得的输入已经被读取了,这个命令将返回这些可获得的数据,而不是为得到更多数据而阻塞。如果通道被配置成使用多字节编码,则实际上可能有一些字节因为不能形成一个完整的字符而保留在内部缓冲区中。一直等到可获得一个完整的字符或到达文件结束,此前不返回这些字节。
+.VE 8.1
+如果命令在到达文件结束之前返回则忽略 \fB-nonewline\fR 开关。
+.PP
+\fBRead\fR 依照给通道的 \fB-translation\fR 选项把输入中的行结束转换成换行字符。参见 \fBfconfigure\fR 手册条目来得到关于 \fBfconfigure\fR 如何改变输入的一个讨论。
+
+.SH "参见 SEE ALSO"
+file(n), eof(n), fblocked(n), fconfigure(n)
+
+.SH "关键字 KEYWORDS"
+blocking, channel, end of line, end of file, nonblocking, read, translation, encoding
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/18
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/regexp.n b/src/mann/regexp.n
new file mode 100644
index 0000000..44a246f
--- /dev/null
+++ b/src/mann/regexp.n
@@ -0,0 +1,317 @@
+'\"
+'\" Copyright (c) 1998 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: regexp.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: regexp.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH regexp n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+regexp \- 针对一个字符串匹配一个正则表达式
+
+.SH "总览 SYNOPSIS"
+\fBregexp \fR?\fIswitches\fR? \fIexp string \fR?\fImatchVar\fR? ?\fIsubMatchVar subMatchVar ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+确定正则表达式 \fIexp\fR 是否匹配部分或全部 \fIstring\fR,在未指定 \fB-inline\fR (参见后面)的时候,如果匹配则返回 1,否则返回 0。(正则表达式匹配的描述请参见 \fBre_syntax\fR 参考页。)
+.LP
+如果在 \fIstring\fR 之后指定了补充的参数,则把它们作为变量的名字对待,把关于 \fIstring\fR 中匹配 \fIexp \fR的那部分的信息返回到其中。\fIMatchVar\fR 将被设置为匹配全部 \fIexp \fR的 \fIstring \fR的范围。第一个\fIsubMatchVar\fR 将包含与 \fIexp \fR中最左的圆括号中的子表达式相匹配的 \fIstring\fR 中那部分字符,下一个 \fIsubMatchVar\fR 将包含与\fIexp \fR中从左到右的下一个圆括号中的子表达式相匹配的 \fIstring\fR 中那部分字符,以此类推。
+.PP
+如果给 \fBregexp\fR 的初始的参数以 \fB-\fR 为开始,则它们被作为开关来对待。当前支持下列开关:
+.TP 15
+\fB\-about\fR
+不再尝试匹配正则表达式,返回包含关于正则表达式信息的一个列表。列表的第一个元素是子表达式计数。第二个元素是描述正则表达式各种特性的属性名的一个列表。这个开关主要用于调试目的。
+.TP 15
+\fB\-expanded\fR
+启用展开的(expanded)正则表示式语法,将忽略白空格和注释。这与指定 \fB(?x)\fR 嵌入选项相同。(see METASYNTAX, below).
+.TP 15
+\fB\-indices\fR
+改变在 \fIsubMatchVar\fR 中存储的内容。不再存储 \fIstring \fR中匹配的字符串,每个变量将包含两个十进制字符串组成的一个列表,它们给出匹配的字符范围中的第一个和最后一个字符在     \fIstring\fR 中的索引 。
+.TP 15
+\fB\-line\fR
+启用换行敏感匹配。缺省的,换行是没有特殊意义的一个完全的普通字符。加上了这个标志,‘[^’ 方括号表达式和‘.’将永不匹配换行,‘^’除了它的正常功能之外还匹配在任何换行之后的空串,而‘$’除了它的正常功能之外还匹配在任何换行之前的空串。这个标志等价于指定 \fB-linestop\fR 和 \fB-lineanchor \fR二者,或者 \fB(?n)\fR 嵌入选项。 (see METASYNTAX, below).
+.TP 15
+\fB\-linestop\fR
+改变‘[^’方括号表达式和‘.’的行为,这样表示式将停止于换行。这与指定 \fB(?p)\fR 嵌入选项相同。 (see METASYNTAX, below).
+.TP 15
+\fB\-lineanchor\fR
+改变‘^’和‘$’(“锚”)的行为,这样它们分别的匹配一行的开始和结束。这与指定 \fB(?w)\fR 嵌入选项相同。 (see METASYNTAX, below).
+.TP 15
+\fB\-nocase\fR
+导致在匹配处理中把 \fIstring\fR 中的大写字符与小写字符同样对待。
+.VS 8.3
+.TP 15
+\fB\-all\fR
+导致尽字符串中可能的次数去匹配正则表达式,返回发现的匹配总数。如果一起指定的还有匹配变量,它们将只保持最后的匹配。
+.TP 15
+\fB\-inline\fR
+导致命令把原先要放置到匹配变量中的数据作为一个列表返回。当使用 \fB-inline\fR 的时候,不可以指定匹配变量。如果还使用了 \fB-all\fR,在每次重复操作(iteration)时串联列表,这样将总是返回一个平坦的列表。对于每次匹配的重复操作,这个命令将添加整体的匹配数据,为正则表达式中的每个子表达式加上一个元素。例如:
+.CS
+    regexp -inline -- {\\w(\\w)} " inlined "
+ => {in n}
+    regexp -all -inline -- {\\w(\\w)} " inlined "
+ => {in n li i ne e}
+.CE
+.TP 15
+\fB\-start\fR \fIindex\fR
+在字符串中指定一个字符索引,在这个偏移量上开始匹配。当使用了这个开关的时候,‘^’将不匹配行的开始,而     \A 将仍旧在 \fIindex \fR上匹配字符串的开始。如果指定了 \fB-indices\fR,编制索引将以输入字符串的绝对开始为起始。\fIindex\fR     将被约束为输入字符串的束缚。
+.VE 8.3
+.TP 15
+\fB\-\|\-\fR
+标记开关的结束。这个标志之后的参数即使以 \fB- \fR为开始仍被作为 \fIexp\fR 对待。
+.PP
+如果 \fIsubMatchVar\fR 比 \fIexp\fR 中的圆括号中的子表达式多,或者在 \fIexp\fR 中的一个特定子表达式不匹配字符串。(比如,因为它是不被匹配的子表达式的一部分), 则在指定了 \fB-indices\fR 的时候,相应\fIsubMatchVar\fR 将被设置成``\fB\-1 \-1\fR'',其他时候被设置成空串。
+
+.SH "参见 SEE ALSO"
+re_syntax(n), regsub(n)
+
+.SH "关键字 KEYWORDS"
+match, regular expression, string
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/27
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/registry.n b/src/mann/registry.n
new file mode 100644
index 0000000..e4e650c
--- /dev/null
+++ b/src/mann/registry.n
@@ -0,0 +1,357 @@
+'\"
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: registry.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: registry.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH registry n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+registry \- 操纵 Windows 注册表
+.SH "总览 SYNOPSIS"
+.sp
+\fBpackage require registry 1.0\fR
+.sp
+\fBregistry \fIoption\fR \fIkeyName\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBregistry\fR 包为操纵 Windows 注册表提供了一个通用的操作集。这个包实现了 Tcl 命令 \fBregistry\fR。只在 Windows 平台上支持这个命令。警告: 使用这个命令必须谨慎,因为一个被破坏了的注册表将导致你的系统进入不可用状态。
+.PP
+\fIKeyName\fR 是一个注册表键的名字。注册表键必须是下列一种形式之一:
+.IP
+\fB\e\e\fIhostname\fB\e\fIrootname\fB\e\fIkeypath\fR
+.IP
+\fIrootname\fB\e\fIkeypath\fR
+.IP
+\fIrootname\fR
+.PP
+\fIHostname\fR 指定任何有效的 Windows 主机名字,它导出了自己的注册表。\fIrootname\fR 组成部分必须是下列之一:
+\fBHKEY_LOCAL_MACHINE\fR, \fBHKEY_USERS\fR,
+.VS
+\fBHKEY_CLASSES_ROOT\fR, \fBHKEY_CURRENT_USER\fR,
+\fBHKEY_CURRENT_CONFIG\fR, \fBHKEY_PERFORMANCE_DATA\fR, or
+\fBHKEY_DYN_DATA\fR.  
+\fIkeypath\fR 可以是一个或更多
+.VE
+注册表键的名字, 用反斜杠字符(\fB\\fR)分隔。
+.PP
+\fIOption\fR 指示对注册表键名要做什么。可接受一个唯一的 \fIoption\fR 的缩写。有效的选项有:
+.TP
+\fBregistry delete \fIkeyName\fR ?\fIvalueName\fR?
+.
+如果提供了可选的 \fIvalueName\fR     参数,则从注册表中删除 \fIkeyName\fR     下的这个指定的值。如果省略了可选的 \fIvalueName\fR,则删除这个指定的键和在注册表层次中位于其下的子键或值。如果不能删除这个键则生成一个错误。如果这个键不存在,这个命令没有作用。
+.TP
+\fBregistry get \fIkeyName valueName\fR
+.
+返回在键 \fIkeyName \fR下面的值 \fIvalueName\fR     所关联的数据。如果这个键或值不存在,则生成一个错误。     返回数据的格式的详情请参见下面的 SUPPORTED TYPES 支持的类型。
+.TP
+\fBregistry keys \fIkeyName\fR ?\fIpattern\fR?
+.
+如果未指定 \fIpattern\fR,返回 \fIkeyName \fR的所有子键的名字的一个列表。如果指定了 \fIpattern\fR,只返回匹配 \fIpattern\fR 的那些名字。使用与 \fBstring\fR 相同的匹配规则确定匹配。如果指定的 \fIkeyName\fR  不存在,则生成一个错误。
+.TP
+\fBregistry set \fIkeyName\fR ?\fIvalueName data \fR?\fItype\fR??
+.
+如果未指定 \fIvalueName\fR,若键 \fIkeyName\fR 不存在则建立之。如果指定了 \fIvalueName\fR,如果需要的话,建立键  \fIkeyName\fR 和值 \fIvalueName\fR。\fIvalueName\fR 的内容被设置成 \fIdata\fR,用 \fItype \fR指示其类型。如果未指定 \fItype\fR,假定为类型 \fBsz\fR。数据和类型参数的详情请参见下面的 SUPPORTED TYPES 支持的类型。
+.TP
+\fBregistry type \fIkeyName valueName\fR
+.
+返回在键 \fIkeyName \fR中的值 \fIvalueName\fR     的类型。可能的类型的更多信息请参见下面的SUPPORTED TYPES 支持的类型。
+.TP
+\fBregistry values \fIkeyName\fR ?\fIpattern\fR?
+.
+如果未指定 \fIpattern\fR,返回 \fIkeyName \fR的所有值的名字的一个列表。如果指定了     \fIpattern\fR ,只返回匹配 \fIpattern\fR 的那些名字。使用与     \fBstring\fR 相同的匹配规则确定匹配。
+
+.SH "支持的类型 SUPPORTED TYPES"
+在注册表中一个键之下的每个值包含特定类型的一些数据,这些数据存储为特定于类型的表示。\fBregistry\fR 命令在这种内部表示和可以被 Tcl 脚本操作的表示之间进行转换。在多数情况下,数据被简单的返回为一个 Tcl 字符串。类型为数据指示目的用途,但不实际改变表示。对于一些类型,\fBregistry\fR 命令以不同的形式返回数据以易于操纵。注册命令识别下列类型:
+.TP 17
+\fBbinary\fR
+.
+注册值包含任意二进制数据。数据在 Tcl     中被精确表示,包括所有嵌入的 null。
+.TP
+\fBnone\fR
+.
+注册值包含未定义类型的任意二进制数据。数据在 Tcl     中被精确表示,包括所有嵌入的 null。
+.TP
+\fBsz\fR
+.
+注册值包含一个 null 终结的字符串。数据在 Tcl     中被表示为一个字符串。
+.TP
+\fBexpand_sz\fR
+.
+注册值包含一个 null     终结的字符串,其中包含到环境变量的未展开的引用(unexpanded reference),引用是通常的 Windows 式样(例如,"%PATH%")。数据在 Tcl 中被表示为一个字符串。
+.TP
+\fBdword\fR
+.
+注册值包含一个小端(little-endian) 32 位数。数据在 Tcl     中被表示为一个十进制串。
+.TP
+\fBdword_big_endian\fR
+.
+注册值包含一个大端(big-endian) 32 位数。数据在 Tcl     中被表示为一个十进制串。
+.TP
+\fBlink\fR
+.
+注册值包含一个符号连接。数据在 Tcl     中被精确表示,包括所有嵌入的 null。
+.TP
+\fBmulti_sz\fR
+.
+注册值包含 null 终结的字符串的一个数组。数据在 Tcl     中被表示为字符串的一个列表。
+.TP
+\fBresource_list\fR
+.
+注册值包含一个设备-驱动器资源列表。数据在 Tcl     中被精确表示,包括所有嵌入的 null。
+.PP
+除了上面列出的用符号命名的类型之外,用对应于系统接口返回的类型代码的一个32位整数标识未知类型 。在这种情况下,数据在 Tcl 中被精确表示,包括所有嵌入的 null。
+
+.SH "移植要点 PORTABILITY ISSUES"
+只能在 Windows 中使用注册表命令。
+
+.SH "关键字 KEYWORDS"
+registry
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/29
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/regsub.n b/src/mann/regsub.n
new file mode 100644
index 0000000..9af1914
--- /dev/null
+++ b/src/mann/regsub.n
@@ -0,0 +1,303 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\" Copyright (c) 2000 Scriptics Corporation.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: regsub.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: regsub.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH regsub n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+regsub \- 基于正则表达式模式匹配进行替换
+.SH "总览 SYNOPSIS"
+\fBregsub \fR?\fIswitches\fR? \fIexp string subSpec varName\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令针对 \fIstring \fR匹配正则表达式 \fIexp\fR,并且它把 \fIstring\fR 复制到用 \fIvarName\fR 给出名字的变量中。(正则表达式匹配的描述请参见 \fBre_syntax\fR 参考页。)如果有一个匹配,则在复制 \fIstring\fR 到 \fIvarName\fR 期间,\fIstring\fR 中匹配 \fIexp\fR 的那部分将被替代为 \fIsubSpec\fR。如果 \fIsubSpec\fR 包含一个``&''或``\e0'',则在这个替换中它被替代为 \fIstring\fR 中匹配 \fIexp \fR的那部分。如果 \fIsubSpec\fR 包含一个``\e\fIn\fR'',这里的 \fIn\fR 是在 1 和 9 之间的一个数字,则在这个替换中它将被替代为 \fIstring\fR 中匹配第 \fIn \fR个圆括号中的子表达式 \fIexp \fR的那部分。 在 \fIsubSpec\fR 中可以使用额外的反斜杠来防对``&''、``\e0''、``\e\fIn\fR''或反斜杠的特殊解 [...]
+.LP
+如果给 \fBregexp\fR 的初始的参数以 \fB-\fR 为开始,则它们被作为开关来对待。当前支持下列开关:
+.TP 10
+\fB\-all\fR
+找到 \fIstring\fR 中匹配 \fIexp\fR  的所有范围,并对每个范围进行替换。没有这个选项,则只有第一个匹配的范围被找到并替换。如果指定了 \fB-all\fR,则对于每次替换使用相应的匹配信息来处理``&''和``\e\fIn\fR''序列。
+.TP 15
+\fB\-expanded\fR
+启用展开的(expanded)正则表示式语法,将忽略白空格和注释。这与指定 \fB(?x)\fR 嵌入选项相同。 (see METASYNTAX, below).
+.TP 15
+\fB\-line\fR
+启用换行敏感匹配。缺省的,换行是没有特殊意义的一个完全的普通字符。加上了这个标志,‘[^’ 方括号表达式和‘.’将永不匹配换行,‘^’除了它的正常功能之外还匹配在任何换行之后的空串,而‘$’除了它的正常功能之外还匹配在任何换行之前的空串。这个标志等价于指定 \fB-linestop\fR 和 \fB-lineanchor \fR二者,或者 \fB(?n)\fR  嵌入选项。 (see METASYNTAX, below).
+.TP 15
+\fB\-linestop\fR
+改变‘[^’方括号表达式和‘.’的行为,这样表示式将停止于换行。这与指定     \fB(?p)\fR 嵌入选项相同。(see METASYNTAX, below).
+.TP 15
+\fB\-lineanchor\fR
+改变‘^’和‘$’(“锚”)的行为,这样它们分别的匹配一行的开始和结束。这与指定 \fB(?w)\fR 嵌入选项相同。 (see METASYNTAX, below).
+.TP 10
+\fB\-nocase\fR
+Upper-case characters in \fIstring\fR will be converted to lower-case
+before matching against \fIexp\fR;  however, substitutions specified
+by \fIsubSpec\fR use the original unconverted form of \fIstring\fR.
+.VS 8.3
+.TP 10
+\fB\-start\fR \fIindex\fR
+在字符串中指定一个字符索引,在这个偏移量上开始匹配。当使用了这个开关的时候,‘^’将不匹配行的开始,而     \\A  将仍旧在 \fIindex \fR上匹配字符串的开始。\fIindex\fR 将被约束为输入字符串的束缚。
+.VE 8.3
+.TP 10
+\fB\-\|\-\fR
+标记开关的结束。这个标志之后的参数即使以 \fB- \fR为开始仍被作为 \fIexp\fR 对待。
+.PP
+这个命令返回找到并替换的匹配范围的总数。正则表达式的解释详见 \fBregexp\fR 的手册条目。
+
+.SH "参见 SEE ALSO"
+regexp(n), re_syntax(n)
+
+.SH "关键字 KEYWORDS"
+match, pattern, regular expression, substitute
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/27
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/rename.n b/src/mann/rename.n
new file mode 100644
index 0000000..777321c
--- /dev/null
+++ b/src/mann/rename.n
@@ -0,0 +1,270 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: rename.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: rename.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH rename n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+rename \- 重命名或删除一个命令
+.SH "总览 SYNOPSIS"
+\fBrename \fIoldName newName\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+把过去叫做 \fIoldName\fR 的命令重命名为叫做 \fInewName\fR。如果 \fInewName\fR 是一个空串则删除叫做 \fIoldName \fR的命令。\fIoldName\fR 和 \fInewName\fR 可以包括名字空间限定符(包含名字空间的名字)。如果一个命令被重命名到一个不同名字空间中,将来对它的调用将在新的名字空间中执行。\fBrename\fR 命令返回一个空串作为结果。
+
+.SH "参见 SEE ALSO"
+namespace(n), proc(n)
+
+.SH "关键字 KEYWORDS"
+command, delete, namespace, rename
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/resource.n b/src/mann/resource.n
new file mode 100644
index 0000000..282ea52
--- /dev/null
+++ b/src/mann/resource.n
@@ -0,0 +1,325 @@
+'\"
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" RCS: @(#) $Id: resource.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: resource.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH resource n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+resource \- 操纵 Macintosh 资源
+.SH "总览 SYNOPSIS"
+\fBresource \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBresource\fR 命令为处理 Macintosh 资源提供了一些一般操作。只在Macintosh 平台上支持这个命令。每个 Macintosh 文件由两个 \fBfork\fR组成: 一个数据 fork 和一个资源 fork。你可以使用通常的open、puts、 close 等命令来操纵数据 fork。但是要与资源 fork 交互你必须使用这个命令。\fIOption\fR 指示完成什么资源命令。可以接受 \fIoption\fR 的一个唯一的缩写。有效的选项有:
+.TP
+\fBresource close \fIrsrcRef\fR
+关闭给定的资源引用(获取自 \fBresource open\fR)。来自这个资源文件的资源将不再可获得。
+.TP
+\fBresource delete\fR ?\fIoptions\fR? \fIresourceType\fR
+这个命令将删除用 \fIoptions\fR 和类型 \fIresourceType\fR (参见下面的RESOURCE TYPES 资源类型) 指定的资源。下列选项给出指定要删除资源的一些方式。
+.RS
+.TP
+\fB\-id\fR \fIresourceId\fR
+如果给出了 \fB-id\fR 选项,则使用 id \fIresourceId\fR (参见下面的RESOURCE IDS 资源ID)指定要被删除的资源。id 必须是一个数 - 要指定一个名字请使用 \fB-name\fR 选项。
+.TP
+\fB\-name\fR \fIresourceName\fR
+如果指定了 \fB-name\fR,则删除叫做 \fIresourceName\fR 的资源。如果还提供了 \fB-id\fR,则要删除的资源必须有这个名字和这个 id 二者。如果未提供名字,则使用 id 而不管实际资源的名字。
+.TP
+\fB\-file\fR \fIresourceRef\fR
+如果指定了 \fB-file\fR 选项,则从 \fIresourceRef\fR  所指向的文件中删除资源。否则删除在资源文件路径上找到的有给定的 \fIresourceName\fR 和/或 \fIresourceId\fR 的第一个资源。要检查文件路径,应使用 \fIresource files\fR 命令。
+.RE
+.TP
+\fBresource files ?\fIresourceRef\fR?
+如果未提供 \fIresourceRef\fR,这个命令返回所有当前打开的资源文件的资源引用的一个 Tcl 列表。这个列表按 Macintosh 通常查找资源的次序来排序。如果指定了 \fIresourceRef\fR,这个命令将返回到那个记号表示的资源 fork 所在的文件的路径。
+.TP
+\fBresource list \fIresourceType\fR ?\fIresourceRef\fR?
+列出所有的类型 \fIresourceType\fR 的 id(参见下面的 RESOURCE TYPES 资源类型)。如果指定了\fIresourceRef\fR ,则这个命令把查找限制为这个特定的资源文件。否则,查找应用当前当前打开的所有资源文件。返回找到的资源的要么是资源名字要么是资源id 的一个 Tcl 列表。关于资源 id 的详情请参见下面的 RESOURCE IDS  资源 ID。
+.TP
+\fBresource open \fIfileName\fR ?\fIaccess\fR?
+打开文件 \fIfileName \fR的中资源。还可以指定标准文件访问权限(详情参见 \fBopen\fR 手册条目)。它返回可被其他资源命令使用的一个资源引用(\fIresourceRef\fR)。如果文件不存在或文件没有资源 fork 则产生一个错误。但是,如果你打开文件时加上了写权限,则建立这个文件和/或资源 fork 而不生成一个错误。
+.TP
+\fBresource read \fIresourceType\fR \fIresourceId\fR ?\fIresourceRef\fR?
+把类型是 \fIresourceType\fR (参见下面的 RESOURCE TYPES资源类型)并且名字或 id 是 \fIresourceId\fR 的全部资源(参见下面的 RESOURCE IDS 资源  ID)读到内存中并返回这个结果。如果指定了 \fIresourceRef\fR ,则这个命令把我们的查找限制为这个特定的资源文件,否则我们查找在应用中所有打开的资源。要注意:多数  Macintosh 资源使用二进制格式,并且从这个命令返回的数据可能包含嵌入的 NULL 或其他非 ASCII 数据。
+.TP
+\fBresource types ?\fIresourceRef\fR?
+这个命令返回在 \fIresourceRef \fR所指向的资源文件中找到的所有资源类型(参见下面的 RESOURCE TYPES资源类型)的一个Tcl 列表。如果未指定 \fIresourceRef\fR  ,则它返回在应用当前打开的所有资源文件中找到的所有资源类型。
+.TP
+\fBresource write\fR ?\fIoptions\fR? \fIresourceType\fR \fIdata\fR
+这个命令把在 \fIdata\fR 中传递进来的数据写为类型是 \fIresourceType\fR (参见下面的 RESOURCE TYPES资源类型)的一个新资源。可获得许多描述资源存储在那里和如何存储的选项。
+.RS
+.TP
+\fB\-id\fR \fIresourceId\fR
+如果给出了 \fB-id\fR 选项,则为新资源使用 id \fIresourceId\fR ( 参见下面的SOURCE  TYPES资源类型),否则生成一个与任何现存的资源不冲突的一个唯一的 id。但是,id 必须是一个数 - 要指定一个名字请使用 \fB-name\fR 选项。
+.TP
+\fB\-name\fR \fIresourceName\fR
+如果指定了 \fB-name\fR,则这个资源将叫做 \fIresourceName\fR,否则它将以空串作为名字。
+.TP
+\fB\-file\fR \fIresourceRef\fR
+如果指定了 \fB-file\fR 选项,则把资源被写入 \fIresourceRef \fR所指向的文件中,否则使用最新近打开的资源。
+.TP
+\fB\-force\fR
+如果目标资源已经存在,则 Tcl 缺省的不是覆写它,而是引发一个错误。使用 -force 标志来强行覆写现存的资源。
+.RE
+
+.SH "资源类型 RESOURCE TYPES"
+资源类型被定义为一个四字符的字符串,它被映射成一个底层 id。例如,\fBTEXT\fR 参照的 Macintosh 资源类型是文本。类型 \fBSTR#\fR 是已计数的(counted)的字符串的一个列表。所有 Macintosh 资源必须是某种类型的。要得到通常使用的资源类型的一个完整列表请参见 Macintosh 文档。
+
+.SH "资源 RESOURCE IDS"
+对于本命令,一个资源的 id 的概念(notion)实际上涉及 Macintosh 资源中的两个概念。在你可以使用资源 Id 的每个地方,你可以使用资源名字或者一个资源数。查找和返回总是偏好名字而不是数。例如,如果一个资源的名字存在则 \fBresource list\fR 命令将返回这个名字,如果资源的名字是 NULL 则返回数。
+
+.SH "移植要点 PORTABILITY ISSUES"
+只在 Macintosh 上可获得这个命令。
+
+.SH "参见 SEE ALSO"
+open(n)
+
+.SH "关键字 KEYWORDS"
+open, resource
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/29
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/return.n b/src/mann/return.n
new file mode 100644
index 0000000..c029bd2
--- /dev/null
+++ b/src/mann/return.n
@@ -0,0 +1,299 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: return.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: return.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH return n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+return \- 从一个过程中返回
+.SH "总览 SYNOPSIS"
+\fBreturn \fR?\fB\-code \fIcode\fR? ?\fB\-errorinfo \fIinfo\fR? ?\fB\-errorcode\fI code\fR? ?\fIstring\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+从当前过程(或顶层命令或 \fBsource\fR 命令)中立即返回,用 \fIstring\fR 作为返回值。如果未指定 \fIstring\fR,则返回一个空串作为结果。
+
+.SH "异常返回 EXCEPTIONAL RETURNS"
+.PP
+通常在未指定 \fB\-code \fR选项的情况下,过程将正常返回(它的完成代码是 TCL_OK)。但是,可以使用 \fB-code\fR 选项来生成一个异常的过程返回。\fICode\fR 可以是某个下列值:
+.TP 10
+\fBok\fR
+正常返回: 如同这个选项被省略。
+.TP 10
+\fBerror\fR
+错误返回: 除了 \fBerrorInfo\fR 和 \fBerrorCode\fR 变量的处理之外,同于使用 \fBerror\fR 命令终止过程(见后)。
+.TP 10
+\fBreturn\fR
+返回当前过程并加上一个 TCL_RETURN  完成代码,这将导致调用它的那个过程也返回。
+.TP 10
+\fBbreak\fR
+返回当前过程并加上一个 TCL_BREAK  完成代码,它将终止调用当前过程的代码中的最内层嵌套循环。
+.TP 10
+\fBcontinue\fR
+返回当前过程并加上一个 TCL_CONTINUE 完成代码,它终止调用当前过程的代码中的最内层嵌套循环的当前重复操作。
+.TP 10
+\fIvalue\fR
+\fIValue\fR 必须是一个整数;把它作为当前过程的完成代码返回。
+.LP
+很少使用 \fB-code\fR 选项。提供它目的让实现新控制结构的命令可以向它的调用者反映异常条件。
+.PP
+两个补充的选项,\fB\-errorinfo\fR 和 \fB\-errorcode\fR,可以被用来在错误返回期间提供补充信息。除非 \fIcode\fR 是 \fBerror\fR,否则忽略这些选项。
+.PP
+\fB-errorinfo\fR 选项为 \fBerrorInfo \fR变量指定一个初始栈跟踪;如果未指定它,则留在 \fBerrorInfo\fR 中的栈跟踪将包括对这个过程的调用和栈上的更高层次,但不包括有关过程中错误上下文的任何信息。典型的,在 \fBcatch\fR 命令在这个过程中捕获到一个错误之后,把留在 \fBerrorInfo\fR 中的值提供为 \fIinfo\fR 值。
+.PP
+如果指定了 \fB-errorcode\fR 选项,则 \fIcode\fR 为 \fBerrorCode\fR 变量提供一个值。如果未指定这个选项,则 \fBerrorCode\fR 缺省为 \fBNONE\fR。
+
+.SH "参见 SEE ALSO"
+break(n), continue(n), error(n), proc(n)
+
+.SH "关键字 KEYWORDS"
+break, continue, error, procedure, return
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/06/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/safe.n b/src/mann/safe.n
new file mode 100644
index 0000000..27d7e41
--- /dev/null
+++ b/src/mann/safe.n
@@ -0,0 +1,435 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: safe.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: safe.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH "Safe Tcl" n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+Safe\ Base \- 用来建立和操纵安全解释器的机制。
+.SH "总览 SYNOPSIS"
+\fB::safe::interpCreate\fR ?\fIslave\fR? ?\fIoptions...\fR?
+.sp
+\fB::safe::interpInit\fR \fIslave\fR ?\fIoptions...\fR?
+.sp
+\fB::safe::interpConfigure\fR \fIslave\fR ?\fIoptions...\fR?
+.sp
+\fB::safe::interpDelete\fR \fIslave\fR
+.sp
+\fB::safe::interpAddToAccessPath\fR \fIslave\fR \fIdirectory\fR
+.sp
+\fB::safe::interpFindInAccessPath\fR \fIslave\fR \fIdirectory\fR
+.sp
+\fB::safe::setLogCmd\fR ?\fIcmd arg...\fR?
+.SH OPTIONS
+.PP
+?\fB\-accessPath\fR \fIpathList\fR?
+?\fB\-statics\fR \fIboolean\fR? ?\fB\-noStatics\fR?
+?\fB\-nested\fR \fIboolean\fR? ?\fB\-nestedLoadOk\fR?
+?\fB\-deleteHook\fR \fIscript\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+Safe Tcl 是一种机制,用于安全的执行不可信任的 Tcl 
+脚本,并为有潜在危险功能的脚本提供访问中介。
+.PP
+Safe Base 确保不可信任的 Tcl 脚本不能损坏宿主应用。Safe 
+Base 防止完整性和隐私攻击。防止不可信任的 Tcl 
+脚本败坏宿主应用或计算机的状况。防止不可信任的脚本把存储在宿主主机或宿主应用中的信息泄露给任何人群。
+.PP
+Safe Base 
+允许一个主解释器建立安全、受限制的解释器,它包括为  \fBsource\fR,
+\fBload\fR, \fBfile\fR, \fBencoding\fR, 和 \fBexit\fR 命令预定义的一系列别名,并可以使用自动装载和包机制。
+.PP
+不向安全解释器透露文件系统的任何东西,它只能访问包含记号(token)的虚拟的路径。当安全解释器请求 
+source(载入)一个文件的时候,它使用在虚拟路径中的记号作为要 source 的文件名的一部分;主解释器透明的把这个记号转换成一个实际的路径名并执行所要求的操作 (详情参见下面的 \fBSECURITY\fR 安全 章节).
+可以使用下面描述的命令标志来选择不同的安全级别。
+.PP
+Safe Base 在主解释器中提供的所有命令驻留在 \fBsafe\fR 
+名字空间中:
+
+.SH "命令 COMMANDS"
+在主解释器中提供了下列命令:
+.TP
+\fB::safe::interpCreate\fR ?\fIslave\fR? ?\fIoptions...\fR?
+建立一个安全解释器,安装在\fBALIASES\fR  别名 章节中描述的别名并初始化在 \fBOPTIONS\fR 选项 中提供的自动装载和包机制。对可选择的参数的描述请参见下面 \fBOPTIONS\fR 选项 章节。如果省略了\fIslave\fR 参数,则生成一个名字。\fB::safe::interpCreate\fR 总是返回解释器的名字。
+.TP
+\fB::safe::interpInit\fR \fIslave\fR ?\fIoptions...\fR?
+除了不建立安全解释器之外,这个命令类似于 \fBinterpCreate\fR   命令。必须已经通过其他方式如 \fBinterp create -safe\fR建立了这个 \fIslave\fR。
+.TP
+如果未给出 \fIoptions\fR,则把给指名的这个解释器所有选项的设置返回为给这个 \fIslave \fR的选项和它们当前的值的一个列表。如果提供了一个单一的补充参数,它将返回有两个元素 \fIname\fR 和 \fIvalue\fR 的一个列表,这里的 \fIname\fR 是选项的全名而 \fIvalue\fR 是给 \fIslave \fR的这个选项当前值。如果提供多于两个补充选项,它将重新配置这个安全解释器并只改变每个提供的选项。关于选项的描述请参见下面的 OPTIONS 章节。使用的例子:
+.RS
+.CS
+# Create a new interp with the same configuration as "$i0" :
+set i1 [eval safe::interpCreate [safe::interpConfigure $i0]]
+# Get the current deleteHook
+set dh [safe::interpConfigure $i0  \-del]
+# Change (only) the statics loading ok attribute of an interp
+# and its deleteHook (leaving the rest unchanged) :
+safe::interpConfigure $i0  \-delete {foo bar} \-statics 0 ;
+.CE
+.RE
+.TP
+\fB::safe::interpDelete\fR \fIslave\fR
+删除这个安全解释器并清除相应的主解释器数据结构。如果为这个解释器指定了一个 \fIdeleteHook\fR 脚本,则在删除这个解释器之前执行这个脚本,把这个解释器的名字作为一个补充参数。
+.TP
+\fB::safe::interpFindInAccessPath\fR \fIslave\fR \fIdirectory\fR
+这个命令寻找并返回在安全解释器的当前虚拟访问路径中给实际路径 
+\fIdirectory\fR 
+的记号。如果未找到这个路径则生成一个错误。使用的例子:
+.RS
+.CS
+$slave eval [list set tk_library [::safe::interpFindInAccessPath $name $tk_library]]
+.CE
+.RE
+.TP
+\fB::safe::interpAddToAccessPath\fR \fIslave\fR \fIdirectory\fR
+这个命令把 \fIdirectory\fR 添加到在主解释器中为安全解释器维护的虚拟路径中,并返回可在安全解释器中被用来获得到在这个目录中的文件的访问的记号。如果这个路径已经存在于虚拟路径中,则它只返回记号而不再次把这个路径添加到虚拟路径中。使用的例子:
+.RS
+.CS
+$slave eval [list set tk_library [::safe::interpAddToAccessPath $name $tk_library]]
+.CE
+.RE
+.TP
+\fB::safe::setLogCmd\fR ?\fIcmd arg...\fR?
+这个命令安装在一个脚本,在这个安全解释器的特定的生命周期事件发生的时候将被调用。在调用这个命令而不加参数时,它返回当前安装的脚本。在调用并加一个参数空串时,则删除当前安装的脚本并关闭日志记录。调用这个脚本时将加上一个补充参数,它描述所感兴趣的事件。主要的目的是帮助调试安全解释器。在安全解释器只能得到一个一般错误消息的时候你可以使用这个设施获得完整的错误消息。这防止安全解释器见到关于失败的消息和其他可能包含敏感信息如真实路径名的其他事件的消息。
+.RS
+使用的例子:
+.CS
+::safe::setLogCmd puts stderr
+.CE
+下面是一个样本对话的输出,这里一个安全解释器尝试着 source 一个在它的虚拟访问路径中找不到的文件。注意这个安全解释器只接收到一个错误消息,说这个文件未找到:
+.CS
+NOTICE for slave interp10 : Created
+NOTICE for slave interp10 : Setting accessPath=(/foo/bar) staticsok=1 nestedok=0 deletehook=()
+NOTICE for slave interp10 : auto_path in interp10 has been set to {$p(:0:)}
+ERROR for slave interp10 : /foo/bar/init.tcl: no such file or directory
+.CE
+.RE
+
+.SH "选项 OPTIONS"
+下列选项通用于 \fB::safe::interpCreate\fR、\fB::safe::interpInit\fR、和 \fB::safe::interpConfigure\fR。任何选项都可缩写为它的最小的无歧义的名字。选项的名字是大小写不敏感的。
+.TP 
+\fB\-accessPath\fR \fIdirectoryList\fR
+这个选项设置目录的列表,安全解释器可以从中 \fBsource\fR 和 \fBload\fR 文件。如果未指定这个选项,或者它被给定为一个空列表,安全解释器将使用的目录同与它的主解释器用于自动装载的目录。关于虚拟路径、记号和访问控制的详情请参见下面的 \fBSECURITY\fR 安全 章节。
+.TP
+\fB\-statics\fR \fIboolean\fR
+这个选项指定是否允许这个安全解释器装载静态连接包(如 \fBload {} Tk\fR)。缺省值是 \fBtrue\fR : 允许安全解释器装载静态连接包。
+.TP
+\fB\-noStatics\fR
+这个选项是 \fB-statics false\fR     的一个方便的简写,它指定不允许这个安全解释器装载静态连接包。
+.TP
+\fB\-nested\fR \fIboolean\fR
+这个选项指定是否允许这个安全解释器把包装载到它自己的子解释器中。缺省值是     \fBfalse\fR :     不允许安全解释器把包装载到它自己的子解释器中。
+.TP
+\fB\-nestedLoadOk\fR
+这个选项是 \fB-nested true\fR     的一个方便的简写,它指定允许安全解释器把包装载到它自己的子解释器中。
+.TP 
+\fB\-deleteHook\fR \fIscript\fR
+当给这个选项以一个非空的 \fIscript\fR     的时候,它将在实际删除这个从解释器之前在主解释器中被求值,并加上这个安全解释器的名字作为一个补充的参数。给予一个空值则去除任何当前为这个安全解释器安装的删除回调(hook)脚本。缺省值(\fB{}\fR)是没有任何删除回调脚本。
+.SH "别名 ALIASES"
+在安全解释器中提供了下列别名:
+.TP
+\fBsource\fR \fIfileName\fR
+如果找到了要求的这个 Tcl 源文件,则把它 source(装载)到安全解释器中。
+\fBsource\fR 别名只可以从给这个安全解释器的虚拟路径中的目录 source 文件。
+关于在有效文件名上的限制的更多信息请参见 \fBSECURITY\fR 安全 章节。
+.TP
+\fBload\fR \fIfileName\fR
+如果找到了要求的这个共享的目标文件,则把它动态的装载到安全解释器中。为了能成功的找到它,文件名必须包含在给这个安全解释器的虚拟路径中提及的一个记号的名字。还有,这个共享的目标文件必须包含一个安全入口点;详情请参见 \fBload\fR 命令的手册条目。
+.TP
+\fBfile\fR ?\fIsubCmd args...\fR?
+\fBfile\fR 别名提供到 \fBfile\fR命令的子命令的一个安全子集的访问;它只允许 \fBdirname\fR、\fBjoin\fR、  \fBextension\fR、\fBroot\fR、\fBtail\fR、\fBpathname\fR 和 \fBsplit\fR  子命令。关于这些子命令的详情请参见 \fBfile\fR  命令的手册条目。
+.TP
+\fBencoding\fR ?\fIsubCmd args...\fR?
+\fBenconding\fR 别名提供到 \fBencoding\fR 命令的子命令的一个安全子集的访问;它不允许设置系统编码,不允许其他子命令包括 \fBsystem\fR 检查当前编码。
+.TP
+\fBexit\fR
+删除调用它的脚本并停止它的计算,但这个解释器存在于其中的那个 Tcl 进程不被终止。
+
+.SH "安全 SECURITY"
+Safe Base 不尝试完全的防止烦恼(annoyance)和拒绝服务攻击。这些形式的攻击妨碍应用或用户临时的使用计算机来完成有用的工作,例如消耗所有可利用的 CPU 时间或所有可利用的屏幕 real estate。这些攻击尽管很恶劣,但一般不如 Safe Base 主要防护的完整性和隐私攻击那么重要。
+.PP
+除了在 \fBinterp\fR 手册页中定义的安全命令集之外,在安全解释器中可获得的命令还包括给 \fBsource\fR、\fBload\fR、\fBexit\fR 的作为中介的(mediate)别名以及 \fBfile\fR 和 \fBencoding\fR 命令的安全子集。安全解释器还可以自动装载代码并可以请求装载包。
+.PP
+因为这些命令中的一些命令访问本地文件系统,存在着对它的目录结构的潜在的信息泄露。为了防止这个问题,接受文件名作为参数的命令在安全解释器中使用记号来替代真实的目录名。在主解释器中介一个要求例如 
+source 一个文件的时候,把这些记号转换成实际路径名。在主解释器中维护这个虚拟路径系统,针对每个用 
+\fB::safe::interpCreate\fR 建立的或用 \fB::safe::interpInit\fR 
+初始化的安全解释器,这个路径把在安全解释器中可访问的记号映射成在本地文件系统上的真实路径名,这样就防止了安全解释器去获取关于这个解释器在其上执行的主机的文件系统结构的知识。可以提供给从解释器中的 
+\fBsource\fR 和 \fBload\fR 别名的有效的文件名参数只能是下面这种形式的路径:
+\fB[file join \fR\fItoken filename\fR\fB]\fR (比如,在使用本地文件路径格式的时候: 
+在 Unix 上是 \fItoken\fR\fB/\fR\fIfilename\fR,在 Windows 上是 \fItoken\fR\fB\\\fIfilename\fR,在 
+Mac 上是 \fItoken\fR\fB:\fR\fIfilename\fR  ),这里的 \fItoken\fR 表示 
+\fIaccessPath \fR列表中的一个目录而 \fIfilename\fR 是在这个目录中一个文件(不允许访问子目录)。
+.PP
+在一个安全解释器中,当在要 source 或装载一个文件的一个请求中使用一个记号的时候,检查这个记号并把它转换成真实路径名,并在文件系统上定位要被 source 或装载的文件。安全解释器不能获取关于文件系统上在其下存储这个文件的实际路径名的知识。
+.PP
+为了进一步防止潜在的对偶然的包括在可以被安全解释器 source 的文件集中的敏感文件的信息泄露,限制 \fBsource\fR 别名为访问满足下列约束的文件: 文件名必须是十四个字符或更短,必须不包含多于一个的点(“\fB.\fR”),不许终止于扩展 \fB.tcl\fR 或是被调用的 \fBtclIndex\fR。
+.PP
+初始的访问路径列表中的每个元素将分配一个记号,它们将被设置在从解释器的 
+\fBauto_path\fR 中并且这个列表的第一个元素将被设置为这个从解释器的 \fBtcl_library\fR。
+.PP
+如果未给出访问路径参数或者是一个空列表,缺省的行为是让从解释器访问的包与主解释器已经访问了的包相同(更精确的描述: 
+只允许用 Tcl 写成的包(因为它们将在从解释器中运行所以不可能是危险的)和提供 
+Safe_Init 入口点的 C 扩展)。为此,用主解释器的 \fBauto_path\fR 
+来构造从解释器的访问路径。为了从解释器能成功的装载 Tcl 
+库文件(它自身包括自动装载机制),如果需要的话,把 \fBtcl_library\fR 
+增加或移动到在从解释器的访问路径中的第一个的位置上,这样从解释器的 \fBtcl_library\fR 将与主解释器的相同(它的真实路径对从解释器仍是不可见的)。为了使自动装载对于从解释器和主解释器在缺省的情况下以相同的方式工作,在主解释器 \fBauto_path\fR 中的每个目录的第一层子目录将被添加(如果未曾包含的话)到从解释器的访问路径中。你总是可以通过显式的使用 \fB-accessPath\fR 标志指定你的目录列表,而不是依赖于这个缺省机制,来指定一个更受限制的路径,它的子目录永远不能被查找。
+.PP
+在首次建立或初始化(例如通过 \fBinterpConfigure -accessPath \fR\fIlist\fR)之后变更 
+\fIaccessPath\fR 的时候,将在安全解释器中自动的求值 \fBauto_reset\fR 
+来使它的 \fBauto_index\fR 与新的记号列表同步。
+
+.SH "参见 SEE ALSO"
+interp(n), library(n), load(n), package(n), source(n), unknown(n)
+ 
+.SH "关键字 KEYWORDS"
+alias, auto\-loading, auto_mkindex, load, master interpreter, safe
+interpreter, slave interpreter, source
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/07
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/scan.n b/src/mann/scan.n
new file mode 100644
index 0000000..850e215
--- /dev/null
+++ b/src/mann/scan.n
@@ -0,0 +1,347 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\" Copyright (c) 2000 Scriptics Corporation.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: scan.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: scan.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH scan n 8.3 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+scan \- 使用 sscanf 式样的转换指定符分析字符串
+.SH "总览 SYNOPSIS"
+\fBscan \fIstring format \fR?\fIvarName varName ...\fR?
+.BE
+
+.SH INTRODUCTION
+.PP
+这个命令用与 ANSI C \fBsscanf\fR 过程相同的方式从输入字符串中分析字段并返回完成的转换数目的总计,如果在任何转换被完成之前到达了输入字符串的结束则返回 -1。\fIString\fR 给出要被分析的输入而 \fIformat\fR 指示如何分析它,使用与 \fBsscanf\fR 相同的 \fB%\fR 转换指定符。每个 \fIvarName\fR 给出一个变量的名字;在从 \fIstring\fR 中检索出一个字段的时候,结果被转换回一个字符串并赋值给相应的变量。
+.VS 8.3
+如果未指定 \fIvarName\fR 变量,则 \fBscan\fR 在行内(inline)方式下工作,返回的数据将是一个列表而不存储在变量中。在行内方式下,如果在任何转换被完成之前到达了输入字符串的结束则返回,则返回一个空串。
+.VE 8.3
+
+.SH "检索细节 DETAILS ON SCANNING"
+.PP
+\fBScan\fR 操作一起检索 \fIstring\fR 和 \fIformat\fR。如果在 \fIformat\fR 的下一个字符是一个空字符(blank)或跳格字符(tab)则它匹配在 \fIstring\fR 中任何数目(包括零个)的白空格字符。
+如果它不是一个 \fB%\fR 字符则它必须匹配 \fIstring \fR的下一个字符。当在 \fIformat\fR 中遇到一个 \fB%\fR 的时候,它指示一个转换指定符的开始。
+一个转换指定符包括 \fB% \fR和后面的最多四个字段: 一个 \fB*\fR,它指示丢弃被转换出的值而不是赋值到变量中;一个 XPG3 位置指定符;一个数指示最大的字段宽度;和一个转换字符。除了转换字符之外所有这些字段都是可选的。存在的字段必须按照上面给出的次序出现。
+.PP
+当 \fBscan\fR 在 \fIformat \fR中发现一个转换指定符的时候,它首先跳过 \fIstring\fR 中的所有白空格(除非指定符是 \fB[\fR 或 \fBc\fR)。接着它依据转换指定符转换下一组输入字符,并把结果存储到用给 \fBscan\fR 的下一个参数给出的变量中。
+.PP
+如果 \fB%\fR 跟随着一个十进制数和一个 \fB$\fR,比如``\fB%2$d\fR'',则使用的变量不取自下一个顺序的参数。而是取自用这个数字指定的参数,这里 1 对应着第一个 \fIvarName\fR。如果在 \fIformat\fR 中有任何位置指定符则所有指定符都必须被指定位置。每个在参数列表上的 \fIvarName\fR 必须准确的对应于一个转换指定符,否则生成一个错误。在行内方式下,任何位置指定符可以指定最多一次,并且用空串填充空位置指定符。
+.PP
+支持下列转换字符:
+.TP 10
+\fBd\fR
+输入字段必须是一个十进制整数。它被读入并作为一个十进制字符串存储到变量中。
+.TP 10
+\fBo\fR
+输入字段必须是一个八进制整数。它被读入并作为一个八进制字符串存储到变量中。
+.VS 8.4
+If the value exceeds MAX_INT (017777777777 on platforms using 32-bit
+integers), it will be truncated to a signed integer.  Hence, 037777777777
+will appear as -1 on a 32-bit machine.
+.VE 8.4
+.TP 10
+\fBx\fR
+输入字段必须是一个十六进制整数。它被读入并作为一个十六进制字符串存储到变量中。
+.VS 8.4
+If the value exceeds MAX_INT (0x7FFFFFFF on platforms using 32-bit
+integers), it will be truncated to a signed integer.  Hence, 0xFFFFFFFF
+will appear as -1 on a 32-bit machine.
+.VE 8.4
+.TP 10
+\fBu\fR
+输入字段必须是一个十进制整数。它被读入并作为一个无符号十进制字符串存储到变量中。
+.TP 10
+\fBi\fR 
+输入字段必须是一个整数。使用与 \fBexpr\fR 中描述的相同方式确定基数(base)(例如,十进制、八进制、或十六进制)。值被作为一个十进制字符串存储到变量中。
+.TP 10
+\fBc\fR
+读入一个单一的字符并把它的二进制值作为一个十进制字符串存储到变量中。在这种情况下不跳过初始的白空格,这样输入字段可以是一个白空格字符。这个转换不同于  ANSI 标准的地方是输入字段总是由一个单一字段组成并且不可以指定字段宽度。
+.TP 10
+\fBs\fR
+输入字段由到下一个白空格为止的所有字符组成;把这些字符复制到变量中。
+.TP 10
+\fBe\fR 或 \fBf\fR 或 \fBg\fR
+输入字段必须是一个浮点数,其组成是一个可选的正负号,一个可能有小数点的十进制数字的字符串,和一个可选的指数,它由一个 \fBe\fR 或 \fBE\fR  并跟随着一个可选的正负号和一个十进制数字的字符串组成。它被读入并作为一个浮点数存储到变量中。
+.TP 10
+\fB[\fIchars\fB]\fR
+输入字段由任何数目的在 \fIchars \fR中的字符组成。把匹配的字符串存储到变量中。如果在方括号之间的第一个字符是\fB]\fR 则它被作为 \fIchars\fR 的一部分来对待而不是这个字符集合的闭合方括号。
+如果 \fIchars\fR 包括一个 \fIa\fB\-\fIb\fR 形式的序列,则匹配在 \fIa\fR 和 \fIb\fR 之间(包括二者)的任何字符。如果在方括号之间的第一个或最后一个字符是一个 \fB-\fR,则它被作为 \fIchars\fR 的一部分来对待而不是指示一个范围。
+.TP 10
+\fB[^\fIchars\fB]\fR
+输入字段由任何数目的不在 \fIchars \fR中的字符组成。把匹配的字符串存储到变量中。如果紧随在     \fB^\fR 后面的字符是一个 \fB]\fR 则它被作为 \fIchars\fR     的一部分来对待而不是这个字符集合的闭合方括号。
+如果\fIchars\fR     包括一个 \fIa\fB\-\fIb\fR  形式的序列,则从字符的集合中排除在 \fIa\fR 和 \fIb\fR     之间(包括二者)的任何字符。如果在方括号之间的第一个或最后一个字符是一个     \fB-\fR,则它被作为 \fIchars\fR     的一部分来对待而不是指示一个范围。
+.TP 10
+\fBn\fR
+不从输入字符串中消耗输入。而是把到现在为止从输入字符串中检索到的字符总数存储到变量中。
+.LP
+对于一个转换从输入中读的字符数目应该是对特定转换最大的数目(例如,对 \fB%d \fR是尽可能多的十进制数字,对于 \fB%o \fR是尽可能多的八进制数字,以此类推)。给一个给定转换的输入要么终止于遇到一个白空格要么终止于达到了最大的字段宽度,只要其中一种情况满足就终止。如果在转换指定符中存在一个 \fB*\fR 则不赋值变量并且不消耗下一个检索参数。
+
+.SH "与ANSI SSCANF 的区别 DIFFERENCES FROM ANSI SSCANF"
+.PP
+除了下列区别之外 \fBscan\fR 命令的行为与 ANSI C \fBsscanf\fR 过程的行为相同:
+.IP [1]
+当前不支持 \fB%p\fR 转换指定符。
+.IP [2]
+对于 \fB%c\fR  转换,把一个单一字符转换成一个十进制字符串,接着把它赋值给相应的  \fIvarName\fR;对于这个转换不能指定字段宽度。
+.IP [3]
+忽略 \fBl\fR、\fBh\fR、和 \fBL\fR  修饰符;转换整数值总是如同不存在修饰符,而转换实数值总是如同存在  \fBl\fR 修饰符(就是说,对于内部表示使用类型 \fBdouble\fR)。
+.IP [4]
+.VS 8.3
+如果在任何转换被完成之前到达了输入字符串的结束并且未给出变量,则返回一个空串。
+.VE 8.3
+
+.SH "参见 SEE ALSO"
+format(n), sscanf(3)
+
+.SH "关键字 KEYWORDS"
+conversion specifier, parse, scan
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/07
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/seek.n b/src/mann/seek.n
new file mode 100644
index 0000000..bc1c1bd
--- /dev/null
+++ b/src/mann/seek.n
@@ -0,0 +1,287 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: seek.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: seek.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH seek n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+seek \- 改变一个打开的通道的访问位置
+.SH "总览 SYNOPSIS"
+\fBseek \fIchannelId offset \fR?\fIorigin\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+改变 \fIchannelId \fR的访问位置。\fIChannelId\fR 必须是从以前的 \fBopen\fR 或 \fBsocket \fR调用返回的一个通道标识符。\fIoffset\fR 和 \fIorigin\fR 参数指定在 \fIchannelId \fR中下一次读或写发生的位置。\fIOffset\fR 必须是一个整数(可以是负数) 而 \fIorigin\fR 必须是下列之一:
+.TP 10
+\fBstart\fR
+新访问位置是在底层的文件或设备的开始处偏移 \fIoffset\fR 字节。
+.TP 10
+\fBcurrent\fR
+新访问位置是在当前访问位置上偏移 \fIoffset\fR 字节;一个负数 \fIoffset\fR 在底层文件或设备中反向移动访问位置。
+.TP 10
+\fBend\fR
+新访问位置是在文件或设备的结束处偏移 \fIoffset\fR 字节。一个负数 \fIoffset\fR 把访问位置置于文件结束之前,而一个正数 \fIoffset\fR 把访问位置置于文件结束之后。
+.LP
+The \fIorigin\fR argument defaults to \fBstart\fR.
+.PP
+即使通道处于非阻塞模式下,在这个命令返回之前,它要刷新为这个通道缓冲的所有输出。它还丢弃所有已被缓冲而未读取的输入。这个命令返回一个空串。如果对其底层文件或设备不支持搜寻(seek)的通道使用了这个命令,则生成一个错误。
+.PP
+.VS 8.1
+注意:\fIoffset\fR 值是字节偏移量。\fBseek\fR 和 \fBtell\fR 二者按照字节进行操作,而不是象 \fBread \fR那样按照字符进行操作。
+.VE 8.1
+
+.SH "参见 SEE ALSO"
+file(n), open(n), close(n), gets(n), tell(n)
+ 
+.SH "关键字 KEYWORDS"
+access position, file, seek
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/30
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/selection.n b/src/mann/selection.n
new file mode 100644
index 0000000..60f98b9
--- /dev/null
+++ b/src/mann/selection.n
@@ -0,0 +1,300 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: selection.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: selection.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH selection n 8.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+selection \- 操纵 X 选择
+.SH "总览 SYNOPSIS"
+\fBselection \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令提供到 X 选择机制的一个 Tcl 接口并实现了在 X 
+客户间通信协定手册(ICCCM)中描述全部选择功能。
+.PP
+给 \fBselection\fR 的第一个参数决定余下的参数的格式和命令的行为。当前支持下列形式:
+.PP
+.TP
+\fBselection clear\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR?
+如果 \fIselection\fR 存在于 \fIwindow \fR的显示器上的某个地方,则清除它这样就没有任何窗口拥有这个选择了。\fISelection\fR     指定应该清除的 X 选择,并且应当是一个原子的名字如 PRIMARY 或 CLIPBOARD;详情请参见 X 客户间通信协定手册。\fISelection\fR  缺省为 PRIMARY 而 \fIwindow\fR 缺省为“.”。返回一个空串。
+.TP
+\fBselection get\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR? ?\fB\-type\fR \fItype\fR?
+从 \fIwindow \fR的显示器取回 \fIselection\fR 的值并把它作为结果返回。\fISelection\fR 缺省为 PRIMARY 而 \fIwindow\fR  缺省为“.”。\fIType\fR 指定返回选择用的形式(用 ICCCM 术语是想要的转换的“目标”),并且应当是一个原子的名字如 STRING 或 FILE_NAME; 详情请参见 X 客户间通信协定手册。\fIType\fR  缺省为 STRING。选择拥有者可以在多种不同的表示格式中挑选返回选择(的格式),比如 STRING、ATOM、INTEGER 等。(这个格式不同与选择类型,如有混淆请参见 ICCCM)。如果以非字符串格式返回选择。比如 INTEGER 或 ATOM,\fBselection\fR  命令把它转换字符串格式,即一组用空格分隔的字段:  把原子转换成他们的文字名字,把其他任何东西都转换成十六进制整数。
+.TP
+\fBselection handle\fR ?\fB\-selection\fR \fIselection\fR? ?\fB\-type\fR \fItype\fR? ?\fB\-format\fR \fIformat\fR? \fIwindow command\fR
+为选择请求建立一个处理器(handler),这样当 \fIwindow\fR 拥有 \fIselection\fR 并且有人尝试以用 \fItype\fR (比方说在 \fBselection get\fR 命令中指定了 \fItype\fR)给出的形式取回它的时候,则执行 \fIcommand\fR 。\fISelection\fR 缺省为 PRIMARY,\fItype\fR 缺省为STRING,而 \fIformat\fR 缺省为 STRING。如果 \fIcommand\fR 是一个空串,则删除针对 \fIwindow\fR、\fItype\fR 和 \fIselection\fR 的所有处理器。
+.RS
+.PP
+在要求 \fIselection\fR 的时候,\fIwindow\fR  是选择的所有者,而 \fItype\fR 是要求的类型,把 \fIcommand\fR 作为一个 Tcl 脚本来执行,并向它添加了两个补充的数(带有空格分隔符)。这两个补充的数
+.VS
+是 \fIoffset\fR 和 \fImaxChars\fR: \fIoffset\fR 指定在选择中的开始位置而 \fImaxChars\fR 给出要取回的字符的最大数目。这个命令应该返回一个值,它由选择的最多 \fImaxChars\fR 字符组成,开始于位置 \fIoffset\fR。对于非常大的选择(大于 \fImaxChars\fR),使用递增 \fIoffset\fR 值的多次 \fIcommand\fR  调用来取回选择。如果 \fIcommand\fR 返回其长度小于 \fImaxChars\fR  的一个字符串,则假定返回值包含选择的全部余下部分;如果  \fIcommand\fR 的结果的长度等于 \fImaxChars\fR 则将再次调用 \fIcommand\fR ,知道最终返回小于 \fImaxChars\fR 的一个结果。\fImaxChars\fR 总是相对的大(成千个字符)。
+.VE
+.PP
+如果 \fIcommand\fR 返回一个错误,则丢弃取回的选择,如同选择根本不存在。
+.PP
+\fIformat\fR 参数指定用来把选择传输(transmit)到请求者的表示法(ICCCM 的表 2 的第二列),并且缺省为 STRING。如果 \fIformat\fR 是 STRING,则把选择传输为 8-bit ASCII 字符。如果 \fIformat\fR 是 ATOM,则把 \fIdata\fR 分割为用白空格分隔的字段;把每个字段转换成它的原子值,传输 32-bit 原子值而不是原子的名字。对于任何其他的 \fIformat\fR,把 \fIdata\fR 分割为用白空格分隔的字段;把每个字段转换成一个 32-bit 整数;向选择的请求者传输一个整数的数组。
+.PP
+\fIformat\fR 参数只在与不使用 Tk 的请求者相兼容时需要。如果使用 Tk 工具箱来取回 CLIPBOARD 选择,则在请求端把这个值转换回一个字符串,所以 \fIformat\fR 是无关的(irrelevant)。
+.RE
+.TP
+\fBselection own\fR ?\fB\-displayof\fR \fIwindow\fR? ?\fB\-selection\fR \fIselection\fR?
+.TP
+\fBselection own\fR ?\fB\-command\fR \fIcommand\fR? ?\fB\-selection\fR \fIselection\fR? \fIwindow\fR
+第一种形式的 \fBselection own\fR 返回在这个应用中的一个窗口路径名字的名字,这个窗口拥有在容纳 \fIwindow \fR的显示器上的 \fIselection\fR,如果在这个应用种没有窗口拥有这个选择就返回一个空串。\fISelection\fR   defaults to PRIMARY and \fIwindow\fR defaults to ``.''.
+.PP
+\fBselection own\fR 的第二种形式导致 \fIwindow\fR 成为在 \fIwindow \fR的显示器上的 \fIselection\fR 的新拥有者,它返回一个空串作为结果。通知现存的拥有者(如果有的话)它已经失去了这个选择。如果指定了\fIcommand\fR,在其他一些窗口向 \fIwindow \fR索取(claim)这个选择的所有权的时候,执行这个Tcl 脚本。\fISelection\fR 缺省为 PRIMARY。
+
+.SH "关键字 KEYWORDS"
+clear, format, handler, ICCCM, own, selection, target, type
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/27
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/send.n b/src/mann/send.n
new file mode 100644
index 0000000..1c31394
--- /dev/null
+++ b/src/mann/send.n
@@ -0,0 +1,294 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: send.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: send.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH send n 4.0 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+send \- 在一个不同的应用的执行一个命令
+.SH "总览 SYNOPSIS"
+\fBsend ?\fIoptions\fR? \fIapp cmd \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令安排在叫做 \fIapp \fR的应用中执行 \fIcmd\fR (和 \fIarg\fRs)。它返回这个命令执行的结果或错误。\fIApp\fR 可以是其主窗口在容纳发送者的主窗口的显示器上的任何应用的名字;不需要在同一个进程中。如果不存在 \fIarg\fR 参数,则要执行的这个命令完全的包含在 \fIcmd\fR 参数内。如果存在一个或多个 \fIarg\fRs,则把它们串联起来形成要执行的命令,就象 \fBeval\fR 命令那样。
+.PP
+如果这个命令的最初的参数开始于“-”,则把它们作为选项对待。当前定义了下列选项:
+.TP
+\fB\-async\fR
+要求异步调用。在这种情况下 \fBsend\fR     命令将立即完成而不等待 \fIcmd\fR     在目标应用中完成;不能获得任何结果并且忽略在发送命令中的错误。如果目标应用与发送的应用在同一个进程中则忽略     \fB-async\fR 选项。
+.TP
+\fB\-displayof\fR \fIpathName\fR
+指定目标应用的主窗口是在用 \fIpathName \fR给出的窗口的显示器上,而不是包含应用的主窗口的显示器。
+.TP
+\fB\-\|\-\fR
+除了终止选项的列表没有其他用途。这个选择只在 \fIapp\fR     包含一个前导的“-”字符时需要。
+
+.SH "应用的名字 APPLICATION NAMES"
+.PP
+用程序或建立这个应用的脚本的名字来初始设置应用的名字。你可以用 \fBtk appname\fR 命令查询和变更一个应用的名字
+
+.SH "停用发送 DISABLING SENDS"
+.PP
+如果从应用中删除了 \fBsend\fR 命令(比如,使用了命令 \fBrename send {}\fR),则这个应用不对到来的发送请求做任何响应,也不能发起外出的请求。可以通过调用 \fBtk appname\fR 命令重新启用通信。
+
+.SH "安全 SECURITY"
+.PP
+\fBsend\fR 命令是一个潜在的严重的安全漏洞。在 Unix 上,可以连接到你的 X 服务器的任何应用都可以向你的应用发送脚本。这些到来的脚本可以使用 Tcl 来读写你的文件和用你的名字调用子进程。
+基于主机的访问控制比如 \fBxhost\fR 特别不安全,因为它允许在特定主机上有一个帐户的任何人连接到你的服务器上,并且如果停用了它则允许任何人从任何地方连接到你的服务器。为了提供少量的安全性,Tk 检查服务器使用的访问控制,并且除非是 (a)启用了 \fBxhost\fR式样的访问控制(就是说只有特定主机可以建立连接),和 (b)允许的主机的列表是空的,否则丢弃到来的发送。这意味着除非应用使用了其他形式的授权(authorization)比如 \fBxauth\fR,否则不能连接到服务器上。
+.VS
+在 Windows 上,目前禁用 \fBsend\fR。它的多数功能由 \fBdde\fR 命令提供。
+.VE
+.SH "关键字 KEYWORDS"
+.VS
+application, dde, name, remote execution, security, send
+.VE
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/set.n b/src/mann/set.n
new file mode 100644
index 0000000..6609096
--- /dev/null
+++ b/src/mann/set.n
@@ -0,0 +1,273 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: set.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: set.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH set n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+set \- 读写变量
+.SH "总览 SYNOPSIS"
+\fBset \fIvarName \fR?\fIvalue\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+返回变量 \fIvarName \fR的值。如果指定了 \fIvalue\fR,则把 \fIvarName\fR 的值设置为 \fIvalue\fR,如果这个变量不存在,则建立一个新变量并返回它的值。如果 \fIvarName\fR 包含一个开圆括号并终止于一个闭圆括号,则它引用一个数组元素: 在第一个开括号之前的字符是数组的名字,而在圆括号中的字符是在数组中的索引。否则 \fIvarName\fR 引用一个标量变量。
+一般的,\fIvarName\fR 是未限定的(不包括任何包容它的名字空间的名字),读或写当前名字空间中叫这个名字的变量。如果 \fIvarName\fR 中包含名字空间限定符(如果它引用一个数组元素则在数组名字中),则读或写在指定名字空间中的变量。
+.PP
+如果没有活跃的过程,则 \fIvarName\fR 引用一个名字空间变量(如果当前的名字空间是全局名字空间则是全局变量)。如果有一个过程是活跃的,则除非调用 \fBglobal\fR 命令声明 \fIvarName\fR 是全局的或调用 \fBvariable\fR 声明 \fIvarName\fR 是一个名字空间变量,否则 \fIvarName\fR 引用这个过程的一个参数或局部变量。
+
+.SH "参见 SEE ALSO"
+expr(n), proc(n), trace(n), unset(n)
+
+.SH "关键字 KEYWORDS"
+read, write, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/30
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/socket.n b/src/mann/socket.n
new file mode 100644
index 0000000..b83c8ec
--- /dev/null
+++ b/src/mann/socket.n
@@ -0,0 +1,315 @@
+'\"
+'\" Copyright (c) 1996 Sun Microsystems, Inc.
+'\" Copyright (c) 1998-1999 by Scriptics Corporation.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\"
+'\" RCS: @(#) $Id: socket.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: socket.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH socket n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+socket \- 打开一个 TCP 网络连接
+.SH "总览 SYNOPSIS"
+.sp
+\fBsocket \fR?\fIoptions\fR? \fIhost port\fR
+.sp
+\fBsocket\fR \fB\-server \fIcommand\fR ?\fIoptions\fR? \fIport\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令打开一个网络套接口并返回将来可被 \fBread\fR、\fBputs\fR 和 \fBflush \fR命令调用使用一个通道标识符。目前只支持 TCP 网络协议;将来的发行可能包括对补充协议的支持。依赖于是否指定了 \fB-server\fR 开关,可以使用 \fBsocket\fR 命令来打开客户端或服务器端连接。
+
+.SH "客户端套接口 CLIENT SOCKETS"
+.PP
+如果未指定 \fB-server\fR 选项,则打开一个的连接的客户端并且命令返回一个可被用于读写的通道标识符。 \fIPort\fR 和 \fIhost\fR 指定一个要连接到的端口;必须有一个服务器接受在这个端口上的连接。\fIPort\fR 是一个整数端口号而 \fIhost\fR 要么是一个域名式样的名字如 \fBwww.sunlabs.com\fR 要么是一个数值 IP 地址如\fB127.0.0.1\fR。 使用 \fIlocalhost\fR 来参照在其上调用这个命令的那个主机。
+.PP
+在 \fIhost\fR 之前可以提供下列选项指定关于连接的补充信息:
+.TP
+\fB\-myaddr\fI addr\fR
+\fIAddr\fR  给出用于连接的客户端网络接口的域名式样的名字或数值  IP 地址。如果客户端机器有多个网络接口的话这个选项会有用处。如果省略了这个选项,则由系统软件选择客户端接口。
+.TP
+\fB\-myport\fI port\fR
+\fIPort\fR 指定用于连接的客户端的一个整数端口号。如果省略了这个选项,则由系统软件随机的选择客户端口号。
+.TP
+\fB\-async\fR
+\fB\-async\fR 选项将导致客户端套接口被异步的连接。这意味着这个套接口将被立即建立,但在到\fBsocket\fR的调用返回的时候可能仍未连接到服务器上。在连接尝试成功或失败之前调用了   gets  或  flush 的时候,如果套接口在阻塞模式下,则将等待直到连接被完成或失败。如果套接口在非阻塞模式之下,而在连接尝试成功或失败之前调用了 gets 或 flush ,则操作立即返回,并且在套接口上的 \fBfblocked\fR 返回 1。
+
+.SH "服务器套接口 SERVER SOCKETS"
+.PP
+如果指定了 \fB-server\fR 选项,则新套接口将是用 \fIport \fR给出的端口的一个服务器。Tcl 将自动接受到这个给定端口的连接。对于每个连接 Tcl 将建立可以用来同客户通信的一个新通道。Tcl 接着调用 \fIcommand\fR 并加上三个补充参数: 新通道的名字,用网络地址表示的客户的主机地址,和客户的端口号。
+.PP
+在 \fIhost\fR 之前可以提供下列选项指定关于连接的补充信息:
+.TP
+\fB\-myaddr\fI addr\fR
+ \fIAddr\fR 给出用于连接的服务器端网络接口的域名式样的名字或数值  IP 地址。如果服务器机器有多个网络接口的话这个选项会有用处。如果省略了这个选项,则服务器套接口被绑定到特殊地址  INADDR_ANY 上,这样它可以接受来自任何接口的连接。
+.PP
+服务器通道不能被用来输入或输出;它们唯一的用处是接受新的客户连接。为每个到来的客户连接建立的通道是为输入和输出而打开的。关闭服务器通道将关断服务器,这样就不能接受新连接了,不影响现存的连接。
+.PP
+服务器套接口依赖于 Tcl 事件机制来找出何时打开了新连接。如果应用未进入事件循环,例如通过调用 \fBvwait\fR 命令或调用 C 过程 \fBTcl_DoOneEvent\fR,则不接受连接。
+
+.SH "配置选项 CONFIGURATION OPTIONS"
+可以使用 \fBfconfigure\fR 命令来查询套接口通道的许多只读配置选项:
+.VS 8.0.5
+.TP
+\fB\-error\fR
+这个选项得到给定套接口的当前错误状态。在你需要确定一个异步连接操作是否成功的时候这个选项会有用处。如果有一个错误,则返回错误消息。如果没有错误,则返回空串。
+.VE 8.0.5
+.TP
+\fB\-sockname\fR
+这个选项返回三个元素的一个列表,分别是这个套接口的地址、主机名和端口号。如果不能计算出这个主机名,第二个元素等同与列表的第一个元素地址。
+.TP
+\fB\-peername\fR
+服务器套接口不支持这个选项。对于客户和接受的套接口,这个选项返回三个元素的一个列表;它们是地址、主机名字和对等的套接口所连接或绑定到端口。如果不能计算出这个主机名,第二个元素等同与列表的第一个元素地址。
+.PP
+
+.SH "参见 SEE ALSO"
+flush(n), open(n), read(n)
+
+.SH "关键字 KEYWORDS"
+bind, channel, connection, domain name, host, network address, socket, tcp
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/10
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/source.n b/src/mann/source.n
new file mode 100644
index 0000000..3c78df5
--- /dev/null
+++ b/src/mann/source.n
@@ -0,0 +1,283 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: source.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: source.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH source n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+source \- 把一个文件或资源作为一个 Tcl 脚本来求值
+.SH "总览 SYNOPSIS"
+\fBsource \fIfileName\fR
+.sp
+\fBsource\fR \fB\-rsrc \fIresourceName \fR?\fIfileName\fR?
+.sp
+\fBsource\fR \fB\-rsrcid \fIresourceId \fR?\fIfileName\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令接受指定文件或资源的内容并把它们作为一个文本脚本传递给 
+Tcl 解释器。\fBsource\fR 
+的返回值是在脚本中最后执行的命令的返回值。如果在对这个脚本的内容进行求值时发生了一个错误,则 
+\fBsource\fR 命令将返回这个错误。如果在脚本中调用了 \fBreturn\fR 
+命令,则文件的剩余部分将被跳过(skip)而 \fBsource\fR 
+命令将正常的返回 \fBreturn\fR 命令的结果。
+.PP
+这个命令的 \fI-rsrc\fR 和 \fI-rsrcid\fR 形式只能在 Macintosh 
+计算机上获得。此命令的这个版本允许你从一个 \fBTEXT \fR资源中 
+source 一个脚本。你可以通过名字或 id 指定要 source 的 \fBTEXT\fR 
+资源。缺省的 Tcl 查找所有打开的资源文件,其中包括当前应用和任何装载的 
+C 扩展(所打开的资源文件)。另一种选择,你可以指定在其中能找到 
+\fBTEXT\fR 资源的 \fIfileName\fR。
+
+.SH "关键字 KEYWORDS"
+file, script
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/30
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/split.n b/src/mann/split.n
new file mode 100644
index 0000000..7d80324
--- /dev/null
+++ b/src/mann/split.n
@@ -0,0 +1,284 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: split.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: split.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH split n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+split \- 把一个字符串分离成一个恰当的 Tcl 列表
+.SH "总览 SYNOPSIS"
+\fBsplit \fIstring \fR?\fIsplitChars\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+返回通过把字符串在每个用 \fIsplitChars\fR 
+参数指定的字符上分开而建立的一个列表。结果列表的每个元素都是由位于在 
+\fIsplitChars \fR中的字符的实例之间的来自 \fIstring\fR 
+的字符组成。如果 \fIstring\fR 包含在 \fIsplitChars \fR中毗连的字符,或者 
+\fIstring\fR 的第一个或最后一个字符在 \fIsplitChars \fR中,则生成空列表元素。如果 
+\fIsplitChars\fR 是一个空串,则在 \fIstring\fR 中的每个字符都变成结果列表中的一个独立元素。
+\fISplitChars\fR 缺省是标准白空格字符。例如,
+.CS
+\fBsplit "comp.unix.misc" .\fR
+.CE
+返回 \fB"comp unix misc"\fR 而
+.CS
+\fBsplit "Hello world" {}\fR
+.CE
+返回 \fB"H e l l o { } w o r l d"\fR.
+
+.SH "参见 SEE ALSO"
+join(n), list(n), string(n)
+
+.SH "关键字 KEYWORDS"
+list, split, string
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/30
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/string.n b/src/mann/string.n
new file mode 100644
index 0000000..685ac17
--- /dev/null
+++ b/src/mann/string.n
@@ -0,0 +1,452 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: string.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: string.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH string n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+string \- 操纵字符串
+.SH "总览 SYNOPSIS"
+\fBstring \fIoption arg \fR?\fIarg ...?\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+依赖于 \fIoption\fR (选项)进行某种字符串操作。合法的 \fIoption\fR (可以是缩写)有:
+.VS 8.1
+.TP
+\fBstring bytelength \fIstring\fR
+返回一个十进制字符串,给出在内存中表示 \fIstring\fR 用的字节数。因为 UTF-8 使用一到三字节来表示 Unicode  字符,字节长度可能与通常的字符长度不同。一个脚本关心字节长度的情况较少见。多数情况下,你应该使用  \fBstring length\fR 操作。关于 UTF-8 表示的详情请参考 \fBTcl_NumUtfChars\fR 手册页。
+.TP
+\fBstring compare\fR ?\fB\-nocase\fR? ?\fB\-length int\fR? \fIstring1 string2\fR
+.VE 8.1
+对字符串 \fIstring1\fR 和 \fIstring2\fR\fI \fR进行逐个字符的比较。依赖于     \fIstring1\fR 在词典顺序上(lexicographically)小于、等于、大于  \fIstring2\fR,返回 -1、0、或 1。
+.VS 8.1
+如果指定了 \fB-length\fR     ,则在比较中只使用前 \fIlength\fR 个字符。如果 \fB-length\fR     是负数,则被忽略。如果指定了 \fB-nocase\fR     ,则使用大小写不敏感方式比较字符串。
+.TP
+\fBstring equal\fR ?\fB\-nocase\fR? ?\fB-length int\fR? \fIstring1 string2\fR
+对字符串 \fIstring1\fR 和 \fIstring2\fR\fI \fR进行逐个字符的比较。如果     \fIstring1\fR 和 \fIstring2\fR 等同则返回 1,否则返回 0。如果指定了     \fB-length\fR ,则在比较中只使用前 \fIlength\fR     个字符。如果 \fB-length\fR 是负数,则被忽略。如果指定了     \fB-nocase\fR ,则使用大小写不敏感方式比较字符串。
+.TP
+\fBstring first \fIstring1 string2\fR ?\fIstartIndex\fR?
+.VE 8.1
+在 \fIstring2\fR 中查找精确的匹配 \fIstring1 \fR中的字符的一个字符序列。如果找到,返回     \fIstring2 \fR中的第一个这样的匹配的第一个字符的索引。如果未找到,返回     -1。
+.VS 8.1
+如果指定了 \fIstartIndex\fR (以可被 \fBindex\fR     方法接受的任何形式),则约束查找为在 \fIstring2\fR     中从用索引指定的字符开始。例如,
+.RS
+.CS
+\fBstring first a 0a23456789abcdef 5\fR
+.CE
+将返回 \fB10\fR, but
+.CS
+\fBstring first a 0123456789abcdef 11\fR
+.CE
+将返回 \fB\-1\fR.
+.RE
+.VE 8.1
+.TP
+\fBstring index \fIstring charIndex\fR
+返回 \fIstring\fR 参数的第 \fIcharIndex \fR个字符。\fIcharIndex\fR     中 0 对应着字符串的第一个字符。
+.VS 8.1
+ \fIcharIndex\fR     可以被指定如下:
+.RS
+.IP \fIinteger\fR 10
+用整数索引指定字符。
+.IP \fBend\fR 10
+字符串的最后一个字符。
+.IP \fBend\-\fIinteger\fR 10
+字符串最后一个字符减去指定整数偏移量(例如, \fBend-1\fR 将参照“abcd”中的“c”)。
+.PP
+.VE 8.1
+如果 \fIcharIndex\fR 小于 0     或大于等于字符串的长度则返回一个空串。
+.VS 8.1
+.RE
+.TP
+\fBstring is \fIclass\fR ?\fB\-strict\fR? ?\fB\-failindex \fIvarname\fR? \fIstring\fR
+如果 \fIstring\fR 是指定字符类的一个有效成员则返回 1,否则返回     0。如果指定了 \fB-strict\fR,则对一个空串返回 0,否则在任何类上对一个空串返回     1。如果指定了 \fB-failindex\fR,则若函数返回 0,把字符串中类不再有效的地方的索引存储到叫做     \fIvarname\fR 的变量中。如果函数返回 1则不设置 \fIvarname\fR     。识别下列字符类(类的名字可以被缩写):
+.RS
+.IP \fBalnum\fR 10
+任何 Unicode 字母或数字字符。
+.IP \fBalpha\fR 10
+任何 Unicode 字母字符。
+.IP \fBascii\fR 10
+值小于 \\u0080 的任何字符(这是 7-bit ascii 的范围)。
+.IP \fBboolean\fR 10
+\fBTcl_GetBoolean\fR 所允许的任何形式。
+.IP \fBcontrol\fR 10
+任何 Unicode 控制字符。
+.IP \fBdigit\fR 10
+任何 Unicode 数字字符。注意这包括在 [0-9] 范围外的字符。
+.IP \fBdouble\fR 10
+双精度数在 Tcl  中的任何有效形式,可以有可选的围绕白空格。在值下溢/上溢的情况下,返回 0 并且 \fIvarname\fR 将包含 -1。
+.IP \fBfalse\fR 10
+\fBTcl_GetBoolean\fR 允许的任何形式,这里的值是假。
+.IP \fBgraph\fR 10
+除了空格之外的任何 Unicode 打印字符。
+.IP \fBinteger\fR 10
+整数在 Tcl 中的任何有效形式,可以有可选的围绕白空格。在值下溢/上溢的情况下,返回 0 并且 \fIvarname\fR 将包含 -1。
+.IP \fBlower\fR 10
+任何 Unicode 小写字母字符。.
+.IP \fBprint\fR 10
+包括空格在内的任何 Unicode 打印字符。
+.IP \fBpunct\fR 10
+任何 Unicode 标点字符。
+.IP \fBspace\fR 10
+任何 Unicode 空格字符。
+.IP \fBtrue\fR 10
+\fBTcl_GetBoolean\fR 所允许的任何形式,这里的值是真。
+.IP \fBupper\fR 10
+在 Unicode 中的任何大写字符。
+.IP \fBwordchar\fR 10
+任何 Unicode 单字字符。它是任何字母字符和 Unicode  连接符标点字符(例如,下划线)。
+.IP \fBxdigit\fR 10
+任何十六进制数字字符 ([0\-9A\-Fa\-f]).
+.PP
+在 \fBboolean\fR、\fBtrue\fR 和 \fBfalse\fR 的情况下,如果函数将返回 0,则 \fIvarname\fR 总是被设置为 0,原因是一个有效 boolean 值有多种本地(表示)。
+.RE
+.TP
+\fBstring last \fIstring1 string2\fR ?\fIstartIndex\fR?
+.VE 8.1
+在 \fIstring2\fR 中查找精确的匹配在 \fIstring1 \fR中的字符的一个字符序列。如果找到,返回在     \fIstring2 \fR中最后一个这样的匹配的第一个字符的索引。如果没有匹配,则返回     -1。
+.VS 8.1
+如果指定了 \fIstartIndex\fR(以可被 \fBindex\fR     方法接受的任何形式), 则查找只针对 \fIstring2\fR 中用 \fIstartIndex\fR     指定的和此前的字符。例如,
+.RS
+.CS
+\fBstring last a 0a23456789abcdef 15\fR
+.CE
+将返回 \fB10\fR, 而
+.CS
+\fBstring last a 0a23456789abcdef 9\fR
+.CE
+将返回 \fB1\fR.
+.RE
+.VE 8.1
+.TP
+\fBstring length \fIstring\fR
+返回一个十进制字符串,给出在 \fIstring \fR中字符的数目。注意这不是必须与用于存储这个字符串的字节的数目相同。
+.VS 8.1
+.TP
+\fBstring map\fR ?\fB\-nocase\fR? \fIcharMap string\fR
+基于在 \fIcharMap \fR中的键-值对替代 \fIstring\fR     中的字符。\fIcharMap\fR 是形如 \fIkey value key value\fR ...  的一个列表,同于从 \fBarray get \fR返回的那种形式。在字符串中这些键的每个实例将被替代为相应的值。如果指定了 \fB-nocase\fR,则进行匹配时不区别大小写。\fIkey\fR 和 \fIvalue\fR  二者都可以是多字节的。以一种有次序的方式进行替代,所以在列表中出现在最前面的键将被首先检查,以此类推。\fIstring\fR 只被重复操作(iterate)一次,所以早先的键替代将不影响以后的键匹配。例如,
+.RS
+.CS
+\fBstring map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc\fR
+.CE
+将返回字符串 \fB01321221\fR.
+.RE
+.TP
+\fBstring match\fR ?\fB\-nocase\fR? \fIpattern\fR \fIstring\fR
+.VE 8.1
+查看 \fIpattern\fR 是否匹配 \fIstring\fR;如果是则返回 1,不是则返回 0。
+.VS 8.1
+如果指定了 \fB-nocase\fR,则针对字符串的模式匹配采用大小写不敏感的方式。
+.VE 8.1
+对于要进行匹配的这两个字符串,除了在 \fIpattern \fR中可以出现的下列特殊序列之外它们的内容必须相同:
+.RS
+.IP \fB*\fR 10
+匹配 \fIstring \fR中任何字符的一个序列,包括一个空字符。
+.IP \fB?\fR 10
+匹配 \fIstring\fR 中的一个单一字符。
+.IP \fB[\fIchars\fB]\fR 10
+匹配在用 \fIchars \fR给出的集合中的任何字符。如果在 \fIchars\fR 中出现一个形式是 \fIx\fB\-\fIy\fR 的一个序列,则匹配在 \fIx\fR 和 \fIy\fR,之间的任何字符,包括二者。
+.VS 8.1
+当与 \fB\-nocase \fR一起使用的时候,范围的端点首先被转换为小写。所以在大小写敏感匹配时 {[A\-z]} 匹配‘_’(‘_’位于‘Z’和‘a’之间),加上 \fB-nocase\fR 则将被象 {[A\-Za\-z]} 那样对待(并可能是前者的真实意图)。
+.VE 8.1
+.IP \fB\e\fIx\fR 10
+匹配单一字符 \fIx\fR。这提供了一种方式避免在 \fIpattern \fR中对字符 \fB*?[]\e\fR 做特殊解释。
+.RE
+.TP
+\fBstring range \fIstring first last\fR
+从 \fIstring \fR返回一个范围的连续字符,从索引是 \fIfirst\fR 的字符开始并结束于索引是 \fIlast\fR 的字符。 索引 0 参照字符串的
+.VS 8.1
+第一个字符。可以按 \fBindex\fR 方法的方式指定 \fIfirst\fR 和 \fIlast\fR 。
+.VE 8.1
+如果 \fIfirst\fR 小于零,则把它作为零对待,而如果 \fIlast\fR 大于等于字符串的长度,则把它作为 \fBend\fR 对待。如果 \fIfirst\fR 大于 \fIlast\fR 则返回空串。
+.VS 8.1
+.TP
+\fBstring repeat \fIstring count\fR
+把 \fIstring \fR重复 \fIcount\fR 次后返回。
+.TP
+\fBstring replace \fIstring first last\fR ?\fInewstring\fR?
+从 \fIstring\fR 删除一个范围的连续字符,范围从索引是 \fIfirst\fR  的字符开始并结束于索引是 \fIlast\fR 的字符。索引 0     参照字符串的第一个字符。可以按 \fBindex\fR     方法的方式指定 \fIfirst\fR 和 \fIlast\fR 。如果指定了 \fInewstring\fR     ,则把它放置在删除的字符范围中。如果 \fIfirst\fR     小于零,则把它作为零对待,而如果 \fIlast\fR     大于等于字符串的长度,则把它作为 \fBend\fR 对待。如果 \fIfirst\fR     大于 \fIlast \fR或最初的字符串的长度 ,或者 \fIlast\fR     小于 0,则不做变动的返回最初的字符串。
+.TP
+\fBstring tolower \fIstring\fR ?\fIfirst\fR? ?\fIlast\fR?
+返回一个等同于 \fIstring\fR 的值,但所有大写(或标题)字母都被转换为小写。如果指定了     \fIfirst\fR,则它参照字符串中开始修改的第一个字符的索引。如果指定了     \fIlast\fR,则它参照字符串中修改停止到(包括它)的那个字符的索引。按     \fBindex\fR 方法的方式指定 \fIfirst\fR 和 \fIlast\fR。
+.TP
+\fBstring totitle \fIstring\fR ?\fIfirst\fR? ?\fIlast\fR?
+返回等同于 \fIstring\fR 的一个值,但把 \fIstring\fR     的第一个字符转换成它的 Unicode 标题大写变体(如果没有标题大写变体则为大写)而把字符串的其余部分转换成小写。如果指定了     \fIfirst\fR,则它参照字符串中开始修改的第一个字符的索引。如果指定了     \fIlast\fR,则它参照字符串中修改停止到(包括它)的那个字符的索引。按     \fBindex\fR 方法的方式指定 \fIfirst\fR 和 \fIlast\fR。
+.TP
+\fBstring toupper \fIstring\fR ?\fIfirst\fR? ?\fIlast\fR?
+返回一个等同于 \fIstring\fR 的值,但所有小写(或标题)字母都被转换为大写。如果指定了     \fIfirst\fR,则它参照字符串中开始修改的第一个字符的索引。如果指定了     \fIlast\fR,则它参照字符串中修改停止到(包括它)的那个字符的索引。按     \fBindex\fR 方法的方式指定 \fIfirst\fR 和 \fIlast\fR。
+.VE 8.1
+.TP
+\fBstring trim \fIstring\fR ?\fIchars\fR?
+返回一个等同于 \fIstring\fR     的值,但删除了任何前导或尾随的用 \fIchars\fR     给出的字符集合中字符。如果未指定 \fIchars\fR     则删除白空格(空格、tab、换行、回车)。
+.TP
+\fBstring trimleft \fIstring\fR ?\fIchars\fR?
+返回一个等同于 \fIstring\fR     的值,但删除了任何前导的用 \fIchars\fR     给出的字符集合中字符。如果未指定 \fIchars\fR     则删除白空格(空格、tab、换行、回车)。
+.TP
+\fBstring trimright \fIstring\fR ?\fIchars\fR?
+返回一个等同于 \fIstring\fR     的值,但删除了任何尾随的用 \fIchars\fR     给出的字符集合中字符。如果未指定 \fIchars\fR     则删除白空格(空格、tab、换行、回车)。
+.VS 8.1
+.TP
+\fBstring wordend \fIstring charIndex\fR
+返回包含 \fIstring \fR的第 \fIcharIndex\fR     个字符的那个字最后的字符后面的那个字符的索引。按 \fBindex\fR     方法的方式指定 \fIcharIndex\fR     。一个字被认为是任何连续范围的 alphanumeric (Unicode 字母或十进制数字)或下划线(Unicode 连接符标点)字符,或除了这些之外的任何单一字符。
+.TP
+\fBstring wordstart \fIstring charIndex\fR
+返回包含 \fIstring \fR的第 \fIcharIndex\fR 个字符的那个字的第一个字符的索引。按 \fBindex\fR  方法的方式指定 \fIcharIndex\fR 。一个字被认为是任何连续范围的 alphanumeric (Unicode 字母或十进制数字)或下划线(Unicode 连接符标点)字符,或除了这些之外的任何单一字符。
+.VE 8.1
+
+.SH "参见 SEE ALSO"
+expr(n), list(n)
+
+.SH "关键字 KEYWORDS"
+case conversion, compare, index, match, pattern, string, word, equal, ctype
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/15
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/subst.n b/src/mann/subst.n
new file mode 100644
index 0000000..0edc13e
--- /dev/null
+++ b/src/mann/subst.n
@@ -0,0 +1,287 @@
+'\"
+'\" Copyright (c) 1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: subst.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: subst.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH subst n 7.4 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+subst \- 进行反斜杠、命令、和变量替换
+.SH "总览 SYNOPSIS"
+\fBsubst \fR?\fB\-nobackslashes\fR? ?\fB\-nocommands\fR? ?\fB\-novariables\fR? \fIstring\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令在它的 \fIstring\fR 
+参数上进行变量替换、命令替换、和反斜杠替换并返回被完全替换了的结果。 
+进行替换的方式与 Tcl 命令的方式完全相同,\fIstring\fR 
+参数实际上被替换了两次,第一次是由 Tcl 
+分析器以通常的方式为 Tcl 命令进行替换,而第二次是由 \fIsubst\fR 
+命令对它的参数进行替换。
+.PP
+如指定了 \fB-nobackslashes\fR、\fB-nocommands\fR、或 \fB-novariables\fR 
+中的任意一个,则不进行相应的替换。例如,如果指定了 \fB-nocommands\fR,就不进行命令替换: 
+开方括号和闭方括号被作为没有特殊解释的普通字符对待。
+.PP
+注意: 在进行替代的时候,\fIsubst\fR 
+对双引号或花括号不做特殊的对待。例如,脚本
+.CS
+\fBset a 44
+subst {xyz {$a}}\fR
+.CE
+返回 ``\fBxyz {44}\fR'', 而不是 ``\fBxyz {$a}\fR''.
+
+.SH "参见 SEE ALSO"
+eval(n)
+
+.SH "关键字 KEYWORDS"
+backslash substitution, command substitution, variable substitution
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/10/30
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/switch.n b/src/mann/switch.n
new file mode 100644
index 0000000..e85fa7d
--- /dev/null
+++ b/src/mann/switch.n
@@ -0,0 +1,331 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: switch.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: switch.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH switch n 7.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+switch \- 依据一个给定的值对多个脚本中的一个进行求值
+.SH "总览 SYNOPSIS"
+\fBswitch \fR?\fIoptions\fR?\fI string pattern body \fR?\fIpattern body \fR...?
+.sp
+\fBswitch \fR?\fIoptions\fR?\fI string \fR{\fIpattern body \fR?\fIpattern body \fR...?}
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBswitch\fR 命令依次针对每个 \fIpattern \fR(模式)参数匹配它的 
+\fIstring\fR 参数。如果它发现一个 \fIpattern\fR 匹配 \fIstring\fR,则立即通过把跟随在(这个模式)后面的 
+\fIbody\fR 参数递归的传递给 Tcl 
+解释器来求值它,并返回这次求值的结果。如果最后的 \fIpattern\fR 
+参数是 \fBdefault\fR,则它匹配所有的东西。如果没有 \fIpattern\fR 
+参数匹配 \fIstring\fR 并且没有给出缺省,则 \fBswitch\fR 
+命令返回一个空串。
+.PP
+如果给 \fBswitch\fR 的最初的参数以 \fB-\fR 
+开始,则它们被作为选项来对待。当前支持下列选项:
+.TP 10
+\fB\-exact\fR
+当与一个模式比较 \fIstring\fR  的时候,使用精确匹配。这是缺省的。
+.TP 10
+\fB\-glob\fR
+当与一个模式比较 \fIstring\fR 的时候,使用通配符式样的匹配(与 \fBstring match\fR 命令所实现的相同)。
+.TP 10
+\fB\-regexp\fR
+当与一个模式比较 \fIstring\fR 的时候,使用正则表达式匹配(在 \fBre_syntax\fR 参考页中描述)。
+.TP 10
+\fB\-\|\-\fR
+选项结束的标志。此后的参数即使以 \fB-\fR 开始仍被作为 \fIstring\fR 来对待。
+.PP
+为 \fIpattern\fR 和 \fIbody\fR 参数提供了两个语法。第一个是对于每个模式和命令使用一个独立的参数;如果在一些模式或命令上需要替换,则这种形式是很方便的。第二种形式是把所有的模式和命令放在一起作为一个单一的参数;这个参数必须有正确的列表结构,它的元素是模式和命令。第二种形式适合于构造多行 switch 命令,因为花括号包围着所有元素,所以没有必要在每行结束之处包含一个反斜杠。
+在第二种形式中因为 \fIpattern\fR参数在花括号中,所以在它们上不进行命令和变量替换;这使得第二种形式的行为在一些情况下与第一种形式不同。
+.PP
+如果指定一个 \fIbody\fR 为``\fB\-\fR'',则意味着给下一个模式的 \fIbody \fR也被用于这个模式(如果下一个模式也有一个执行体“\fB-\fR”则使用它后面的这个执行体,以此类推)。这个特征使在多个模式之间共享一个单一的 \fIbody\fR 成为可能。
+.PP
+在 \fBswitch\fR 命令放置注释要注意。注释只能放置在一个模式的执行体中,而不能与模式混合。
+.PP
+下面是 \fBswitch\fR 命令的一些例子:
+.CS
+\fBswitch\0abc\0a\0\-\0b\0{format 1}\0abc\0{format 2}\0default\0{format 3}\fR
+.CE
+将返回 \fB2\fR, 
+.CS
+\fBswitch\0\-regexp\0aaab {
+	^a.*b$\0\-
+	b\0{format 1}
+	a*\0{format 2}
+	default\0{format 3}
+}\fR
+.CE
+将返回  \fB1\fR, 而
+.CS
+\fBswitch\0xyz {
+	a
+		\-
+	b
+		{
+		# Correct Comment Placement
+		format 1
+	}
+	a*
+		{format 2}
+	default
+		{format 3}
+}\fR
+.CE
+将返回  \fB3\fR.
+
+.SH "参见 SEE ALSO"
+for(n), if(n), regexp(n)
+
+.SH "关键字 KEYWORDS"
+switch, match, regular expression
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/15
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tclvars.n b/src/mann/tclvars.n
new file mode 100644
index 0000000..c1ea7ac
--- /dev/null
+++ b/src/mann/tclvars.n
@@ -0,0 +1,422 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tclvars.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tclvars.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tclvars n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tclvars \- Tcl 使用的变量
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+Tcl 库自动的建立和管理下列全局变量。除了下面专做说明的地方之外,对特定于应用的代码和用户,这些变量通常应当作为只读的来对待。
+.TP
+\fBenv\fR
+Tcl     把这个变量维护为一个数组,它的元素是这个进程的环境变量。读取一个元素将返回相应的环境变量的值。设置这个数组的一个元素将修改相应的环境变量,如果它不存在则建立一个新的。删除     \fBenv\fR 的一个元素将删除相应的环境变量。对 \fBenv\fR     数组的变更将影响通过象 \fBexec \fR这样的命令传递给子进程的环境变量。如果删除了整个     \fBenv\fR 数组,则 Tcl 将停止监视 \fBenv\fR     访问并且将不更新环境变量。
+.RS
+.VS 8.0 
+在 Windows 下,任何大小写形式的环境变量 PATH 和  COMSPEC 都被自动转换成大写的。例如,PATH  环境变量可以被操作系统导出为“path”、“Path”、“PaTh”、等,这导致其他简单  Tcl 代码必须支持许多特殊的写法。Tcl  继承的所有其他环境变量保持不变。
+.VE
+.RE
+.RS
+在 Macintosh 上,Tcl  把环境变量构造为非现存的全局环境变量。为 Tcl  建立的环境变量包括:
+.TP
+\fBLOGIN\fR
+它持有 Macintosh 的 Chooser 名字。
+.TP
+\fBUSER\fR
+它也持有 Macintosh 的 Chooser 名字。
+.TP
+\fBSYS_FOLDER\fR
+到系统目录的路径。
+.TP
+\fBAPPLE_M_FOLDER\fR
+到 Apple 菜单目录的路径。
+.TP
+\fBCP_FOLDER\fR
+到控制面板目录的路径。
+.TP
+\fBDESK_FOLDER\fR
+到桌面目录的路径。
+.TP
+\fBEXT_FOLDER\fR
+到系统扩展目录的路径。
+.TP
+\fBPREF_FOLDER\fR
+到偏好目录的路径。
+.TP
+\fBPRINT_MON_FOLDER\fR
+到打印监控器目录的路径。
+.TP
+\fBSHARED_TRASH_FOLDER\fR
+到网络垃圾箱目录的路径。
+.TP
+\fBTRASH_FOLDER\fR
+到垃圾箱目录的路径。
+.TP
+\fBSTART_UP_FOLDER\fR
+到启动目录的路径。
+.TP
+\fBHOME\fR
+到应用程序的缺省目录的路径。
+.PP
+你还可以为 Macintosh 建立你自己的环境变量。叫做 \fBTcl Environment Variables\fR 的一个文件将被放置到 Mac 系统文件夹中的偏好文件夹中。这个文件中的每行的形式都是 \fIVAR_NAME=var_data\fR。
+.PP
+最后的选择是把环境变量放置到这个应用的叫做 \fBTcl Environment Variables\fR 的一个‘STR#’资源文件中。这被认为是更象“Mac 式”而不是一个 Unix 式样的环境变量文件。‘STR#’资源中每个条目有与上述相同的格式。源代码文件 \fItclMacEnv.c\fR 包含 env 机制的实现。这个文件包含许多 #define,它们允许你定制 env 机制来适合你的应用的需要。
+.RE
+.TP
+\fBerrorCode\fR
+在发生了一个错误之后,设置这个变量为持有关于错误的补充信息,它的形式易于用程序处理。\fBerrorCode\fR 由有一个或多个元素的一个 Tcl 列表组成。这个列表的第一个元素标识错误的一个一般的类别,并决定列表余下部分的格式。Tcl 核心为 \fBerrorCode\fR 使用下列格式;个别应用可以定义补充的格式。
+.RS
+.TP
+\fBARITH\fI code msg\fR
+在发生一个算术错误的时候使用这个格式(例如,在 \fBexpr\fR 命令中尝试除以零)。\fICode\fR 标识准确的错误而 \fImsg\fR 提供一个人可阅读的对错误的描述。\fICode\fR 将是下列之一:DIVZERO (尝试除以零)、DOMAIN (如果函数的一个参数在它的作用域之外,比如 acos(-3))、IOVERFLOW (整数溢出)、 OVERFLOW (浮点数溢出)、或 UNKNOWN (如果不能确定错误的原因)。
+.TP
+\fBCHILDKILLED\fI pid sigName msg\fR
+在子进程被一个信号所终止的时候使用这个格式。\fBerrorCode\fR 的第二个元素是这个进程的标识符(十进制数)。第三个元素标识导致进程终止的信号的符号名字;它将是在文件 signal.h 中包含的名字之一,比如 \fBSIGPIPE\fR。第四个元素是一个描述这个信号的人可阅读的短消息,比如对 \fBSIGPIPE\fR是“write on pipe with no readers”。
+.TP
+\fBCHILDSTATUS\fI pid code\fR
+在子进程以非零状态退出的时候使用这个格式。\fBerrorCode \fR的第二个元素是这个进程的标识符(十进制数),而第三个元素是这个进程返回的退出代码(也是十进制数)。
+.TP
+\fBCHILDSUSP\fI pid sigName msg\fR
+在子进程被一个信号所挂起的时候使用这个格式。\fBerrorCode\fR 的第二个元素是这个进程的标识符,是一个十进制数。第三个元素识导致进程挂起的信号的符号名字;它将是在文件signal.h 中包含的名字之一,比如 \fBSIGTTIN\fR。 第四个元素是一个描述这个信号的人可阅读的短消息,比如对 \fBSIGTTIN \fR是“background tty read”。
+.TP
+\fBNONE\fR
+对除了返回错误消息之外没有其他可获得的补充信息的错误使用这个格式。在这种情况下 \fBerrorCode\fR 将由只有一个单一元素的一个列表组成,这个元素的内容是 \fBNONE\fR。
+.TP
+\fBPOSIX \fIerrName msg\fR
+如果 \fBerrorCode\fR 的第一个元素是 \fBPOSIX\fR,则错误发生在一个 POSIX 内核调用期间。这个列表的第二个元素将包含发生的错误的符号名字,比如 \fBENOENT\fR;它将是在包含文件 errno.h 中定义的值之一。这个列表的第三个元素是对应于 \fIerrName\fR 的一个人可阅读的消息,比如对 \fBENOENT\fR 是“no such file or directory”。
+.PP
+要设置 \fBerrorCode\fR,应用应当使用库过程比如 \fBTcl_SetErrorCode\fR 和 \fBTcl_PosixError\fR,或者调用  \fBerror\fR 命令。如果使用了这些方法之一,则 Tcl 解释器将在下个错误之后重置这个变量为 \fBNONE\fR。
+.RE
+.TP
+\fBerrorInfo\fR
+在一个错误发生之后,这个字符串将包含标识在最新近的错误发生时正在执行的 Tcl 命令和过程的一行或多行。它的内容使用栈跟踪的形式,展示在错误发生时调用的各个嵌套的 Tcl 命令。
+.TP
+\fBtcl_library\fR
+这个变量持有包含系统 Tcl  脚本库的一个目录的名字,比如用于自动装载的那些目录。\fBinfo library\fR 命令返回这个变量的值。关于 Tcl  脚本库的详情请参见 \fBlibrary\fR 手册条目。 除了 Tcl 脚本库之外,每个应用或包通常都有它自己的特定于应用的脚本库;每个应用都应该设置名字象  \fB$\fR\fIapp\fR\fB_library\fR 这样的一个全局变量(这里的 \fIapp\fR  是这个应用的名字)来持有这个应用的库目录的网络文件名字。在建立解释器的时候,通过查找许多不同目录直到找到包含一个适当的 Tcl 启动脚本的目录,来设置 \fBtcl_library\fR 的最初的值。如果 \fBTCL_LIBRARY\fR 环境变量存在,则首先访问它指名的目录。如果 \fBTCL_LIBRARY\fR 未被设置或不参照一个适当的目录,则 Tcl 检查基于在其中编译(compiled-in)的缺省位置的其他一些目录、包含应用的二进制文件的位置、和当前工作目录。
+.TP
+\fBtcl_patchLevel\fR
+在建立解释器的时候 Tcl 初始化这个变量来持有给出当前的 Tcl   补丁级别的一个字符串,比如 \fB7.3p2 \fR是Tcl 7.3 的第二次官方补丁,而 \fB7.4b4\fR 是 Tcl 7.4 的第四次 beta    发布。\fBinfo patchlevel\fR 命令返回这个值。
+.VS 8.0 br
+.TP
+\fBtcl_pkgPath\fR
+这个变量持有一个目录的列表,它一般指示把包安装到哪里。在 Windows 上不使用它。它典型的包含一个或两个条目;如果它包含两个条目,第一个通常是依赖于平台的包的目录(例如,共享库的二进制文件)而第二个通常是平台无关的包的目录(例如,脚本文件)。典型的把包安装为在  \fB$tcl_pkgPath\fR 中的一个条目的一个子目录。在 \fB$tcl_pkgPath\fR 中的目录缺省的包含在 \fBauto_path\fR 变量中,所以 \fBpackage require\fR 命令期间自动的在它们和它们的直接子目录中查找包。注意: 不希望应用修改 \fBtcl_pkgPath\fR。在启动时它的值被添加到  \fBauto_path\fR;对 \fBtcl_pkgPath\fR 的变动不会反映到 \fBauto_path\fR   中。如果你想让 Tcl 来在额外的目录中查找包,你应该把这些目录的名字添加到 \fBauto_path\fR,而不是 \fBtcl_pkgPath\fR。
+.VE
+.TP
+\fBtcl_platform\fR
+这是一个关联数组,它的元素包含关于应用在其上运行的平台的信息,比如操作系统的名字、它的当前发行号、和机器的指令集。总是定义下列元素,但是如果 Tcl 不能检索到任何有关的信息,则它们的值将是空串。除此之外,扩展和应用可以向这个数组添加补充的值。预先定义的元素是:
+
+.RS
+.VS
+.TP
+\fBbyteOrder\fR
+这个机器的本地字节序: \fBlittleEndian\fR 或 \fBbigEndian\fR。
+.VE
+.TP
+\fBdebug\fR
+如果这个变量存在,则编译解释器时启用了调试符号。只在 Windows 上存在这个变量,扩展作者可以依赖于所装载的 C 运行时库来指定装载哪个包。
+.TP
+\fBmachine\fR
+这个机器执行的指令集,比如 \fBintel\fR、\fBPPC\fR、\fB68k\fR、或\fBsun4m\fR。在 UNIX 机器上,用 \fBuname -m\fR 返回这个值。
+.TP
+\fBos\fR 
+在这个机器上运行的操作系统的名字,比如 \fBWindows 95\fR、\fBWindows NT\fR、\fBMacOS\fR、或 \fBSunOS\fR。 在 UNIX 机器上,用 \fBuname -s\fR 返回这个值。在 Windows 95 和 Windows 98 上,返回的值将是 \fBWindows 95\fR 来提供更好的对 Windows 95 的反向兼容;要区别二者,请检查 \fBosVersion\fR。
+.TP
+\fBosVersion\fR
+在这个机器上运行的操作系统的版本号。在 UNIX 机器上,用 \fBuname -r\fR 返回这个值。在 Windows 95 上,版本将是 4.0;在 Windows 98 上,版本将是 4.10。
+.TP
+\fBplatform\fR
+\fBwindows\fR、\fBmacintosh\fR、或 \fBunix \fR之一。它表示这个机器的一般操作环境。
+.TP
+\fBthreaded\fR
+如果这个变量存在,则编译这个解释器时启用了线程。
+.TP
+\fBuser\fR
+它基于在平台上获得的登录信息标识当前用户。在 Unix 它源自 USER 或 LOGNAME 环境变量,在 Windows 和 Macintosh 上源自 GetUserName。
+.RE
+.TP
+\fBtcl_precision\fR
+.VS
+这个变量在把浮点数转换成字符串时控制生成的数字的数目。它缺省的是 12。对于 IEEE 浮点数 17 位数字是“最佳的”,这样允许双精度值在二进制和字符串之间来回转换而不丢失信息。但是,使用  17 位数字将禁止任何舍入,这将生成更长,而更不直观的值。例如,\fBexpr 1.4\fR 在设置 \fBtcl_precision\fR 为 17 时返回 1.3999999999999999,而在设置 \fBtcl_precision\fR 为 12 时返回 1.4 。
+.RS
+在一个进程中的所有解释器共享一个单一的 \fBtcl_precision\fR  值: 在一个解释器中改变它将同样影响所有其他解释器。但是,不允许安全解释器修改这个变量。
+.RE
+.VE
+.TP
+\fBtcl_rcFileName\fR
+在初始化期间使用这个变量来指示特定于用户的启动文件的名字。如果在特定于应用的初始化中设置了它,则 Tcl 启动代码将检查这个文件是否存在,并且如果它存在的话则 \fBsource\fR (载入)它。例如,对于 \fBwish\fR ,这个变量被设置成给 Unix 的 \fB~/.wishrc\fR 和给 Windows 的 \fB~/wishrc.tcl\fR。
+.TP
+\fBtcl_rcRsrcName\fR
+这个变量只在 Macintosh  系统上使用。在初始化期间使用这个变量来指示位于应用或扩展资源  fork 中的一个特定于应用的 \fBTEXT\fR  资源的名字。如果特定于应用的初始化设置了它,则 Tcl  启动代码将检查资源是否存在,如果存在则 \fBsource\fR   它。例如,Macintosh \fBwish\fR  应用设置这个变量为 \fBtclshrc\fR。
+.TP
+\fBtcl_traceCompile\fR
+设置这个变量的值来控制在字节码编译期间显示多少跟踪信息。缺省的,tcl_traceCompile    是零且不显示信息。设置 tcl_traceCompile 为 1,在编译一个过程或顶层命令的时候在标准输出上生成一行总结。设置它为 2,在标准输出上详细的列出在每次编译期间散发(??? emit)的字节码指令。在跟踪怀疑是 Tcl 编译器的问题时很有用。在把现存代码转换成 Tcl8.0 时也偶尔有用。
+.TP
+\fBtcl_traceExec\fR
+设置这个变量的值来控制在字节码执行期间显示多少跟踪信息。缺省的,tcl_traceExec    是零而不显示信息。设置 tcl_traceExec 为 1,在每次调用一个 Tcl 过程的时候在标准输出上生成一行跟踪。设置它为 2,在用命令的名字和它的参数调用任何Tcl 命令的时候,生成一行输出。设置它为 3,生成一个详细的跟踪,展示每个字节码指令的执行结果。注意在 tcl_traceExec 是 2 或 3 的时候,不展示象 set 和 incr 这样已经被整个替换为一个字节码指令序列的命令。在跟踪怀疑是 Tcl 编译器和解释器的问题时很有用。在把现存代码转换成 Tcl8.0 时也偶尔有用。
+.TP
+\fBtcl_wordchars\fR
+这个变量的值是一个正则表达式,设置它来控制认把什么字符认为是“字”字符。例如在  Tk 的文本框中用双击来选择一个字。它是平台相关的。在  Windows 上,它缺省为 \fB\S\fR,意思是除了 Unicode  空格字符之外的任何字符。其他平台上缺省为 \fB\w\fR,它是任何   Unicode 字字符(数字、字母、下划线)。
+.TP
+\fBtcl_nonwordchars\fR
+这个变量的值是一个正则表达式,设置它来控制认把什么字符认为是“非字”字符。例如在   Tk 的文本框中用双击来选择一个字。它是平台相关的。在 Windows 上,它缺省为 \fB\s\fR,意思是任何 Unicode 空格字符。其他平台上缺省为 \fB\W\fR,它是除了 Unicode 字字符(数字、字母、下划线)之外的任何字符。
+.TP
+\fBtcl_version\fR
+在建立解释器的时候,Tcl 初始化这个变量来持有这个版本的 Tcl 的版本号,形式是 \fIx.y\fR。对  \fIx\fR 的变更表示可能导致不兼容的较大的变化,对 \fIy\fR  的变更表示保持反向兼容的小增强和缺陷修理,\fBinfo tclversion\fR 命令返回这个变量的值。
+
+.SH "参见 SEE ALSO"
+eval(n)
+
+.SH "关键字 KEYWORDS"
+arithmetic, bytecode, compiler, error, environment, POSIX, precision, subprocess, variables
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/10
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tell.n b/src/mann/tell.n
new file mode 100644
index 0000000..9aaf560
--- /dev/null
+++ b/src/mann/tell.n
@@ -0,0 +1,273 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tell.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tell.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tell n 8.1 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tell \- 返回一个打开的通道的当前访问位置
+.SH "总览 SYNOPSIS"
+\fBtell \fIchannelId\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+.VS 8.1
+返回一个整数值,给出 \fIchannelId \fR的当前访问位置。返回的这个值是可以传递给 \fBseek\fR 命令的一个字节偏移量,用以把通道设置到一个特定的位置。注意这个值以字节为单位的,而不是以字符为单位如 \fBread\fR 命令。
+.VE 8.1
+对于不支持搜寻(seek)的通道返回的这个值是 -1。
+
+.SH "参见 SEE ALSO"
+file(n), open(n), close(n), gets(n), seek(n)
+
+.SH "关键字 KEYWORDS"
+access position, channel, seeking
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/time.n b/src/mann/time.n
new file mode 100644
index 0000000..4f0cb3b
--- /dev/null
+++ b/src/mann/time.n
@@ -0,0 +1,274 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: time.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: time.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH time n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+time \- 多次执行一个脚本
+.SH "总览 SYNOPSIS"
+\fBtime \fIscript\fR ?\fIcount\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令将 \fIcount\fR 次调用 Tcl 解释器求值 \fIscript\fR (如果未指定 \fIcount\fR 则为一次)。它将返回下面这种形式的一个字符串
+.CS
+\fB503 microseconds per iteration\fR
+.CE
+它指示每次重复操作(iteration)所需时间的平均值,以微秒为单位。测量时间使用流(elapsed)时间,而不是 CPU 时间。
+
+.SH "参见 SEE ALSO"
+clock(n)
+
+.SH "关键字 KEYWORDS"
+script, time
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tk.n b/src/mann/tk.n
new file mode 100644
index 0000000..467bc66
--- /dev/null
+++ b/src/mann/tk.n
@@ -0,0 +1,284 @@
+'\"
+'\" Copyright (c) 1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tk.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tk.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk n 8.3 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk \- 操纵 Tk 内部状态
+.SH "总览 SYNOPSIS"
+\fBtk\fR \fIoption \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBtk\fR 命令提供对 Tk 内部状态的杂类元素的访问。这个命令操纵的多数信息适合于作为一个整体的应用(程序),或者是一个屏幕或显示器,而不是一个特定的窗口。依赖于 \fIoption\fR 参数,这个命令可以接受的多种不同的的形式。合法的形式有:
+.TP
+\fBtk appname \fR?\fInewName\fR?
+如果未指定 \fInewName\fR,则这个命令返回这个应用(程序)的名字(这个名字可以用在 \fBsend\fR 命令中来与应用通信)。如果指定了 \fInewName\fR,则把应用的名字变更为 \fInewName\fR。如果给定名字已经使用了,则添加“\fB#2\fR”或“\fB#3\fR”形式的后缀来保持名字的唯一性。这个命令的结果是实际上选择的名字。\fInewName\fR 不应该开始于大写字符。这将妨碍选项处理,因为以大写开头的名字被假定为类;结果是 Tk 可能找不到给应用的一些选项。如果通过删除 \fBsend\fR 而停用了发送,这个命令将重新启用它们并建立 \fBsend\fR 命令。
+.TP
+\fBtk scaling \fR?\fB\-displayof \fIwindow\fR? ?\fInumber\fR?
+.
+设置和查询 Tk 使用的当前的比例(缩放)因子,它用于在物理单位(如点、英寸、或毫米)和象素之间进行转换。\fInumber\fR 参数是指定在 \fIwindow \fR的显示器上每点的象素数的一个浮点数。如果省略了 \fIwindow\fR 参数,则它缺省为主窗口。如果省略了 \fInumber\fR 参数,则返回比例因子的当前值。
+.RS
+.PP
+“点” (``point'') 是等于 1/72 英寸的一个度量单位。比例因子 1.0 对应于每点 1 象素,这等价与一个 72 dpi 的监视器。比例因子 1.25 意味着每点 1.25 个象素,这是 90 dpi 监视器的设置;在一个 72 dpi 监视器上设置比例因子为 1.25 将导致在应用中显示的所有东西是正常的 1.25 倍。在应用启动的时候,基于安装的监视器的特性类设置比例因子的初始值,但可以在任何时候变更。使用变更了的比例因子的度量将使用新的比例因子,但对现存的组件是否动态的调整自身大小来适应新的比例因子未做规定。
+.RE
+.VS 8.3
+.TP
+\fBtk useinputmethods \fR?\fB\-displayof \fIwindow\fR? ?\fIboolean\fR?
+.
+设置和查询 Tk 是否应当使用 XIM (X 输入方法:X Input Methods)来过滤事件的状态。在一些地域(如: 日本、高丽)中使用 XIM 来处理特殊的输入设备。这个特征只在 X 上重要。如果不能获得 XIM 支持,它总是返回 0。如果省略了 \fIwindow\fR 参数,则缺省为主窗口。如果省略了 \fIboolean\fR 参数,则返回当前状态。
+.VE
+
+.SH "关键字 KEYWORDS"
+application name, send
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/12
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tk_dialog.n b/src/mann/tk_dialog.n
new file mode 100644
index 0000000..5940ee8
--- /dev/null
+++ b/src/mann/tk_dialog.n
@@ -0,0 +1,289 @@
+'\"
+'\" Copyright (c) 1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tk_dialog.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tk_dialog.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tk_dialog n 4.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tk_dialog \- 建立模式对话框并等待响应
+.SH "总览 SYNOPSIS"
+\fBtk_dialog \fIwindow title text bitmap default string string ...\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个过程是 Tk 脚本库的一部分。它的参数描述一个对话框:
+.TP
+\fIwindow\fR
+用于对话框的顶层窗口的名字。销毁叫这个名字的任何现存窗口。
+.TP
+\fItitle\fR
+显示在窗口管理器给这个对话框的标题栏中的文字。
+.TP
+\fItext\fR
+出现在对话框顶部的消息。
+.TP
+\fIbitmap\fR
+如果非空,则指定在对话框的顶部显示在文字左边的一个位图。如果它是一个空串则在对话框中不显示位图。
+.TP
+\fIdefault\fR
+如果它是大于等于零的一个整数,则它给出成为这个对话框的缺省按钮的按钮的索引(0 给最左的按钮,并以次类推)。如果小于零或是一个空串则没有缺省按钮。
+.TP
+\fIstring\fR
+为这些参数中的每个建立一个按钮。按从左至右的次序,每个\fIstring\fR 指定要在一个按钮中显示的文字。
+.PP
+在建立了对话框之后,\fBtk_dialog\fR 等待用户选择按钮中的一个,要么通过用鼠标点击按钮之一要么通用键入返回键来调用缺省按钮(如果有的话)。接着它返回选择的按钮的索引: 0 是最左的按钮,1 是下一个按钮,并以次类推。如果这个对话框的窗口在用户选择按钮中的一个之前就被销毁了,则返回 -1。
+.PP
+在等待用户响应期间,\fBtk_dialog\fR 设置一个本地夺取(grab)。这将防止用户以除了调用这个对话框之外的任何方式与应用进行交互。
+
+.SH "关键字 KEYWORDS"
+bitmap, dialog, modal
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/17
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tkerror.n b/src/mann/tkerror.n
new file mode 100644
index 0000000..b489ee4
--- /dev/null
+++ b/src/mann/tkerror.n
@@ -0,0 +1,268 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tkerror.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tkerror.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tkerror n 4.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tkerror \- 为处理后台错误而调用的命令
+.SH "总览 SYNOPSIS"
+\fBtkerror \fImessage\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+注意: 在 Tk 4.1 中把 \fBtkerror\fR 命令重新命名为 \fBbgerror\fR,原因是事件循环(这个命令通常被它所调用)现在是Tcl 的一部分了。为了反向兼容,如果存在 \fBtkerror\fR(或一个可自动装载的 tkerror),则当前的 Tk 版本提供的 \fBbgerror\fR 仍然尝试调用它,所以定义了错误处理器的老脚本仍然可以工作,但你应该设法修改你脚本来使用 \fBbgerror\fR 替代 \fBtkerror\fR,因为对老名字的支持在不久的将来可能不复存在。如果调用它失败,\fBbgerror\fR 将贴出(post)一个对话框显示这个错误并向用户提供栈跟踪。如果你想拥有自己的错误管理,你应该直接使用 
+\fBbgerror\fR 而不是 \fBtkerror\fR。\fBbgerror\fR 的文档可在 Tcl 的文档中获得。
+
+.SH "关键字 KEYWORDS"
+background error, reporting
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/26
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tkvars.n b/src/mann/tkvars.n
new file mode 100644
index 0000000..a8e0c56
--- /dev/null
+++ b/src/mann/tkvars.n
@@ -0,0 +1,280 @@
+'\"
+'\" Copyright (c) 1990-1994 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tkvars.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tkvars.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tkvars n 4.1 Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tkvars \- Tk 使用或设置的变量
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+在 Tk 的执行的各个时期设置或使用下列 Tcl 变量:
+.TP 15
+\fBtk_library\fR
+这个变量持有一个目录的文件名字,它包含与 Tk 有关的一个 Tcl 脚本库。这些脚本包含通常在 Tk 应用启动的时候处理的一个初始化文件,加上包含实现组件缺省行为的过程的其他文件。在向一个解释其添加 Tk 的时候设置 \fBtcl_library\fR 的初始值;这是通过查找许多不同的目录直到找到包含一个适当的 Tk 启动脚本来完成的。如果存在 \fBTK_LIBRARY\fR 环境变量,则首先查找它指名的目录。如果未设置 \fBTK_LIBRARY\fR 或者未引用一个适当的目录,则基于系列位置检查其他一些目录,编辑进去(compiled-in)的缺省位置,Tcl  库目录的位置,包含应用的二进制文件的位置,和当前工作目录。应用可以修改这个变量来切换到一个不同的库上。
+.TP
+\fBtk_patchLevel\fR
+包含给出 Tk 的当前补丁级别的一个十进制整数。补丁级别在每次新发行或修补时增加,并唯一的标识一个 Tk 的官方版本。
+.TP
+\fBtkPriv\fR
+这个变量是一个数组,它包含 Tk 私有的许多信息。Tk 库过程和缺省绑定使用 \fBtkPriv\fR 的元素。Tk 以外的任何代码都不应该访问它。
+.TP
+\fBtk_strictMotif\fR
+缺省的把这个变量设置为零。如果一个应用把它设置为一,则 Tk 尝试保持尽可能的与 Motif 观感标准相接近。例如,活跃元素如按钮和滚动条滑块在指针经过它们的时候不改变颜色。
+.TP 15
+\fBtk_version\fR
+Tk 为每个应用在解释器中设置这个变量。这个变量持有 Tk 库的 \fImajor\fR.\fIminor\fR\fI \fR形式的当前版本号。 \fIMajor\fR 和 \fIminor\fR 是整数。在包含不反向兼容的变更的 Tk 发行中增加主版本号(就是说,可能必须改变现存的 Tk 应用和脚本来在新发行下工作的时候)。在每次 Tk 的新发行中增加次版本号,但在主版本号变更的时候被复位为零。
+
+.SH "关键字 KEYWORDS"
+variables, version
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2002/05/13
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/tkwait.n b/src/mann/tkwait.n
new file mode 100644
index 0000000..7b2b2f3
--- /dev/null
+++ b/src/mann/tkwait.n
@@ -0,0 +1,274 @@
+'\"
+'\" Copyright (c) 1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: tkwait.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: tkwait.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH tkwait n "" Tk "Tk Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+tkwait \- 等待变量更改或窗口被销毁
+.SH "总览 SYNOPSIS"
+\fBtkwait variable \fIname\fR
+.sp
+\fBtkwait visibility \fIname\fR
+.sp
+\fBtkwait window \fIname\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+\fBtkwait\fR 
+命令等待多个事情中的一个发生,接着返回而不做其他动作。返回的值总是一个空串。如果第一个参数是 \fBvariable\fR (或它的任何简写)则第二个参数是一个全局变量的名字,并且命令等待这个变量被修改。如果第一个参数是\fBvisibility\fR (或它的任何简写)则第二个参数是一个窗口的名字,并且 \fBtkwait\fR 命令等待它的可见性状态的变化(由到来的 VisibilityNotify 事件来指示)。这种形式典型的用于等待一个新近建立的窗口在屏幕上显示,此后做一些动作。如果第一个参数是 \fBwindow\fR (或它的任何简写)则它的第二个参数是一个窗口的名字,并且 \fBtkwait\fR 命令等待这个窗口被销毁。这种形式典型的用于等待用户完成与与对话框的交互,此后使用这次交互的结果。
+.PP
+在 \fBtkwait\fR 命令等待期间它以平常的方式处理事件,所以应用可以继续响应用户交互。如果一个事件处理器再次调用 \fBtkwait\fR,在外部调用可以完成之前嵌套的调用必须完成。
+
+.SH "关键字 KEYWORDS"
+variable, visibility, wait, window
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/12/28
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/trace.n b/src/mann/trace.n
new file mode 100644
index 0000000..d6d5c7a
--- /dev/null
+++ b/src/mann/trace.n
@@ -0,0 +1,309 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: trace.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: trace.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH trace n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+trace \- 监视变量访问
+.SH "总览 SYNOPSIS"
+\fBtrace \fIoption\fR ?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令导致在调用了特定操作的时候执行 Tcl 命令。现在只实现了变量跟踪。合法的 \fIoption\fR (选项) (可以是缩写)有:
+.TP
+\fBtrace variable \fIname ops command\fR
+安排 \fIcommand\fR 在变量 \fIname\fR 被以用 \fIops \fR给出的方式访问的时候执行。\fIName\fR     可以引用一个普通变量、数组的一个元素,或整个的一个数组(就是说,\fIname\fR     可以只是一个数组的名字,而不加在圆括号中的索引)。如果     \fIname\fR     引用整个的一个数组,则在操纵了这个数组的任何元素的时候调用     \fIcommand\fR     。如果这个变量不存在,则建立它但不给它值,所以对 \fBnamespace     which\fR 查询是可见的,但对 \fBinfo exists\fR     不是。
+.RS
+.PP
+\fIOps\fR     指示要进行何种操作,它由下列字母中的一个或多个组成:
+.TP
+\fBr\fR
+在读这个变量的时候调用 \fIcommand\fR。
+.TP
+\fBw\fR
+在写这个变量的时候调用 \fIcommand\fR。
+.TP
+\fBu\fR
+在删除这个变量的时候调用 \fIcommand\fR。可以使用 \fBunset\fR  命令显式的删除变量,或者在过程返回的时候隐式的删除(所有它们的局部变量)。在删除解释器的时候也删除变量,因为没有在其中执行命令的解释器所以不调用跟踪。
+.PP
+当触发跟踪的时候,向 \fIcommand\fR     添加三个参数,所以实际上的命令如下:
+.CS
+\fIcommand name1 name2 op\fR
+.CE
+\fIName1\fR 和 \fIname2\fR 给出被访问了的变量的名字:     如果这个变量是个标量,则 \fIname1\fR 给出变量的名字而 \fIname2\fR     是一个空串;如果变量是一个数组元素,则 \fIname1\fR     给出数组的名字而 \fIname2\fR     给出在这个数组中的索引;如果整个数组被删除并且跟踪注册在整个数组上,而不是在一个单一元素上,则     \fIname1\fR 给出这个数组的名字而 \fIname2\fR 是一个空串。\fIName1\fR     和 \fIname2\fR 不是必须与在 \fBtrace variable\fR     命令中使用的名字相同: \fBupvar\fR     命令允许一个过程在不同的名字下引用一个变量。\fIOp\fR     指示在这个变量上进行了何种操作,它是上面定义的 \fBr\fR、\fBw\fR、或     \fBu\fR 中的一个。
+.PP
+\fICommand\fR     在与调用跟踪操作的代码的相同的上下文中执行:     如果被访问的变量是一个 Tcl 过程的一部分,则 \fIcommand\fR     将访问到与过程中的代码相同的局部变量。这个上下文可能与在其中建立跟踪的上下文不同。如果     \fIcommand\fR 调用一个过程(它经常这么做),则过程要想访问被跟踪的变量必须使用     \fBupvar\fR 或 \fBuplevel\fR。还要注意     \fIname1\fR     不是必须与用来在变量上设置跟踪的那个名字相同;如果通过用     \fBupvar\fR     定义的一个变量进行访问,则可能发生不同。
+.PP
+对于读和写跟踪,\fIcommand\fR     可以修改变量来影响被跟踪的操作的结果。如果\fIcommand\fR     在读写跟踪期间修改了一个变量的值,则这个新值将被返回为跟踪操作的结果。除非从     \fIcommand\fR     返回的值是一个某种错误,此时跟踪的操作返回的错误与跟踪命令返回的错误消息相同,否则忽略它(例如,可使用这种机制实现只读变量)。对于写跟踪,在这个变量的值被改变之后调用     \fIcommand\fR     ;它把一个新值写到这个变量中来屏弃在这次写操作中指定的原始值。要实现只读变量,\fIcommand\fR     必须存储这个变量的旧值。
+.PP
+当 \fIcommand\fR     在一个读或写跟踪期间执行的时候,在变量上的跟踪被暂时禁用。这意味着     \fIcommand\fR 调用的读和写将直接发生,不用再次调用 \fIcommand\fR     (或任何其他跟踪)。但是,如果 \fIcommand\fR     删除了这个变量则调用删除跟踪。
+.PP
+在调用一个删除跟踪的时候,这个变量已经被删除了:     它将出现为未定义的而不加以跟踪。如果因为一个过程返回而发生一个删除,则在返回到的那个过程的变量上下文中调用跟踪:     返回的过程的栈桢已经不存在了。在删除跟踪期间不禁止跟踪,所以如果一个删除跟踪命令建立了一个新的跟踪并访问了这个变量,则调用这个跟踪。忽略删除跟踪的任何错误。
+.PP
+如果在一个变量上有多个跟踪,则以建立的次序调用它们,先处理最新的。如果一个跟踪返回一个错误,则不对这个变量调用进一步的跟踪。如果一个数组元素有一个跟踪设置,并且还有一个在整个数组上的跟踪设置,调用在整个数组上的跟踪先于在这个元素上的跟踪。
+.PP
+一旦建立了,跟踪保持有效直到用下面描述的 \fBtrace vdelete\fR 命令删除这个跟踪、直到删除了这个变量,或直到删除了这个解释器为止。删除数组的一个元素将删除在这个元素上的任何跟踪,但不删除在整个数组上的跟踪。
+.PP
+这个命令返回一个空串。
+.RE
+.TP
+\fBtrace vdelete \fIname ops command\fR
+如果在变量 \fIname\fR 上设置了一个用 \fIops\fR     给出操作和用 \fIcommand\fR     给出命令的跟踪,则删除这个跟踪,这样将永不再次调用 \fIcommand\fR     。返回一个空串。
+.TP
+\fBtrace vinfo \fIname\fR
+返回一个列表,为每个在变量 \fIname \fR设置的当前跟踪包含一个元素。这个列表的每个元素自身是一个包含两个元素的列表,它们是与这个跟踪相关的     \fIops\fR 和 \fIcommand\fR 。如果 \fIname\fR     不存在或没有跟踪设置,则命令的结果是一个空串。
+
+.SH "关键字 KEYWORDS"
+read, variable, write, trace, unset
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/unknown.n b/src/mann/unknown.n
new file mode 100644
index 0000000..5481536
--- /dev/null
+++ b/src/mann/unknown.n
@@ -0,0 +1,274 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: unknown.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: unknown.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH unknown n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+unknown \- 处理对使用不存在命令的尝试
+.SH "总览 SYNOPSIS"
+\fBunknown \fIcmdName \fR?\fIarg arg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+在一个脚本尝试调用一个不存在的命令的时候,Tcl  解释器将调用这个命令。\fBunknown\fR  的实现不是 Tcl  核心的一部分;但是在 Tcl   启动的时候,它是一个被缺省定义的库过程。你可以覆盖这个缺省的 \fBunknown\fR     来改变它的功能。
+.PP
+如果 Tcl   解释器遇到一个命令名而没有为它一个定义了的命令,则 Tcl    检查是否存在一个叫 \fBunknown \fR的命令。如果没有这个命令,则解释器返回一个错误。如果\fBunknown\fR     命令存在,则调用它并加上由被完全替换过的名字组成的参数和给最初的不存在的命令的参数。典型的,\fBunknown\fR    命令做在库目录中查找名字是    \fIcmdName \fR的一个命令过程,把缩写的命令名扩展成全长的名字,或自动的作为子进程执行未知命令等事情。在这些情况下(比如扩展缩写) \fBunknown\fR    将轻微的改变最初的命令,接着(重)执行它。\fBunknown\fR    命令的结果被用做最初的不存在的命令的结果。
+.PP
+\fBunknown\fR    的缺省实现的行为如下。它首先调用 \fBauto_load\fR  库过程来装载命令,接着它用最初的参数执行最初的命令。如果自动装载失败则 \fBunknown\fR  调用 \fBauto_execok\fR     来看是否有一个叫 \fIcmd \fR的可执行文件。如果有,它调用 Tcl \fBexec\fR    命令并加上 \fIcmd\fR  和所有 \fIargs\fR  作为参数。如果 \fIcmd\fR  不可自动执行,\fBunknown\fR     检查是否在顶层调用这个命令并在任何脚本的外部。如果是这样,则 \fBunknown\fR   进行两个额外的步骤。首先它参看 \fIcmd\fR   是否是下列三种形式之一:    \fB!!\fR, \fB!\fIevent\fR, 或 \fB^\fIold\fB^\fInew\fR?\fB^\fR?。如果是这样,则 \fBunknown\fR  用与 \fBcsh\fR  相同的方式对这些构造(construct)进行历史替换。最后,\fBunknown\fR   [...]
+
+.SH "参见 SEE ALSO"
+info(n), proc(n)
+
+.SH "关键字 KEYWORDS"
+error, non-existent command
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/09/01
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/unset.n b/src/mann/unset.n
new file mode 100644
index 0000000..b6d2c48
--- /dev/null
+++ b/src/mann/unset.n
@@ -0,0 +1,267 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: unset.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: unset.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH unset n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+unset \- 删除变量
+.SH "总览 SYNOPSIS"
+\fBunset \fIname \fR?\fIname name ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令删除一个或多个变量。每个 \fIname\fR 都是一个变量的名字,可以用 \fBset\fR 命令可接受的任何方式指定它们。如果一个 \fIname\fR 引用一个数组的一个元素,则删除这个元素而不影响这个数组其余的元素。如果某个 \fIname\fR 是一个数组的名字而没有在圆括号中包围的索引,则删除整个数组。\fBunset\fR 命令返回一个空串作为结果。如果变量中任何一个不存在则发生一个错误,而不删除这个不存在的变量后面的任何变量。
+
+.SH "关键字 KEYWORDS"
+remove, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/update.n b/src/mann/update.n
new file mode 100644
index 0000000..d221c6c
--- /dev/null
+++ b/src/mann/update.n
@@ -0,0 +1,276 @@
+'\"
+'\" Copyright (c) 1990-1992 The Regents of the University of California.
+'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: update.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: update.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH update n 7.5 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+update \- 处理等待的事件和空闲回调
+.SH "总览 SYNOPSIS"
+\fBupdate\fR ?\fBidletasks\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令重复的进入事件循环直到处理了所有的等待事件(包括空闲回调),以此使应用成为“最近更新的”。
+.PP
+如果指定 \fBidletasks\fR 关键字为给这个命令的一个参数,则不处理新事件或错误;只调用空闲回调。这导致通常被推延的操作,比如显示器更新和窗口格局计算,被立即进行。
+.PP
+\fBupdate idletasks\fR 命令在一些脚本中有用,在其中对应用的状态做了变更并且你想要这些变化立即出现在显示器上,而不是等待脚本完成。多数显示器更新被作为空闲回调来进行,所以 \fBupdate idletasks\fR 将导致他们运行。但是,有些种类的更新只发生在对事件的响应当中,比如窗口大小变更所触发的事件;在 \fBupdate idletasks\fR 中将不发生这些更新。
+.PP
+没有选项的\fB update\fR 命令在一些脚本中有用,在其中你想运行一个长时间的运算而仍想让应用响应事件比如用户交互;如果你偶尔的调用 \fBupdate\fR,则在下次调用 \fBupdate \fR期间将处理用户输入。
+
+.SH "参见 SEE ALSO"
+after(n), bgerror(n)
+
+.SH "关键字 KEYWORDS"
+event, flush, handler, idle, update
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/uplevel.n b/src/mann/uplevel.n
new file mode 100644
index 0000000..da3ef3c
--- /dev/null
+++ b/src/mann/uplevel.n
@@ -0,0 +1,288 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: uplevel.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: uplevel.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH uplevel n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+uplevel \- 在一个不同的栈桢中执行一个脚本
+.SH "总览 SYNOPSIS"
+\fBuplevel \fR?\fIlevel\fR?\fI arg \fR?\fIarg ...\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+串联所有 \fIarg\fR 参数如同把它们传递给 \fBconcat\fR 一样;接着在用 \fIlevel\fR 指示出的变量上下文中对结果进行求值。\fBUplevel\fR 返回这次求值的结果。
+.PP
+如果 \fIlevel\fR 是一个整数则它给出执行这个命令之前要移动的距离(在过程调用栈上)。如果\fIlevel\fR 由 \fB#\fR 和随后的一个数字组成,则这个数字给出一个绝对的层次数。如果省略了 \fIlevel\fR 则它缺省为 \fB1\fR。如果第一个 \fIcommand\fR 参数以一个数字或 \fB#\fR 则不能缺省 \fILevel\fR。
+.PP
+例如,假设从顶层调用过程 \fBa\fR,而它调用 \fBb\fR,接着\fBb\fR 调用 \fBc\fR。假设 \fBc\fR 调用了 \fBuplevel\fR 命令。如果 \fIlevel\fR 是 \fB1\fR 或 \fB#2\fR 或被省略了,则命令将在 \fBb\fR 的变量上下文中在执行。如果 \fIlevel\fR 是 \fB2\fR 或 \fB#1\fR 则命令将在 \fBa\fR 的变量上下文中执行。如果 \fIlevel\fR 是 \fB3\fR 或 \fB#0\fR 则命令将在顶层执行(只有全局变量是可见的)。
+.PP
+\fBuplevel\fR 命令导致调用它的过程在命令执行的时候从过程调用栈中消失。在上面的例子中,假设 \fBc\fR 调用了命令
+.CS
+\fBuplevel 1 {set x 43; d}\fR
+.CE
+这里的 \fBd\fR 是另一个 Tcl 过程。\fBset\fR 命令将修改在 \fBb \fR的上下文中的变量 \fBx\fR ,而 \fBd\fR 将在层次 3 上执行,如同从 \fBb\fR 调用它一样。如果 \fBd\fR 接着执行命令
+.CS
+\fBuplevel {set x 42}\fR
+.CE
+则 \fBset\fR 命令将修改在 \fBb \fR的上下文中的同一个变量 \fBx\fR: 在 \fBd\fR 执行的时候过程 \fBc\fR 在调用栈上不出现。可以使用命令“\fBinfo level\fR”来获得当前过程的层次。
+.PP
+\fBUplevel\fR 使实现如同 Tcl 过程的新控制结构成为可能(例如,可以使用 \fBuplevel\fR 把 \fBwhile\fR 构造实现为一个 Tcl 过程)。
+.PP
+namespace eval 是改变 Tcl 命令上下文的另一种方式(除了过程调用之外)。它向栈增加一个调用桢来表示名字空间上下文。这意味着每个 namespace eval 命令被视为给 \fBuplevel\fR 和 \fBupvar\fR 命令的另一个调用层次。例如,info level 1 将返回描述一个命令的列表,它要么是最外的过程要么是最外的 namespace eval 命令。还有,uplevel #0 在最外面的名字空间(全局名字空间)中的顶层求值一个脚本。
+
+.SH "参见 SEE ALSO"
+namespace(n), upvar(n)
+
+.SH "关键字 KEYWORDS"
+context, level, namespace, stack frame, variables
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/upvar.n b/src/mann/upvar.n
new file mode 100644
index 0000000..b400185
--- /dev/null
+++ b/src/mann/upvar.n
@@ -0,0 +1,305 @@
+'\"
+'\" Copyright (c) 1993 The Regents of the University of California.
+'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: upvar.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: upvar.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH upvar n "" Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+upvar \- 建立到在不同栈桢上的变量的连接
+.SH "总览 SYNOPSIS"
+\fBupvar \fR?\fIlevel\fR? \fIotherVar myVar \fR?\fIotherVar myVar \fR...?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令安排在当前过程中的一个或多个局部变量去引用位于包围它的过程调用中的变量或引用全局变量。 \fILevel\fR 可以用 \fBuplevel\fR 命令允许的任何形式,并且如果第一个 \fIotherVar\fR 的第一个字母不是 \fB#\fR 或一个数字,则可以被省略(它缺省为\fB1\fR)。对于每个 \fIotherVar\fR 参数,\fBupvar\fR 使由 \fIlevel\fR 给出的过程桢中(如果 \fIlevel\fR 是 \fB#0 \fR则在全局层次)的叫这个名字的变量在当前过程中可以用由相应的 \fImyVar\fR 参数给出名字来访问。在调用它的时候叫做 \fIotherVar\fR 的变量不需要存在;可以在第一次引用 \fImyVar\fR 时象普通变量那样建立它。在调用 \fBupvar\fR 的时候一定不能存在一个叫 \fImyVar\fR 的变量。\fIMyVar\fR 总是被作为一个变量的名字来对待,而不是一个数组的元素。即使这个名字看起来象一个数组元素,比如 \fBa(b)\fR,仍建立一个正规的变量。\fIOtherV [...]
+.PP
+\fBupvar\fR 命令简化了传名调用(call-by-name)过程的实现并使它易于建立如同 Tcl 过程的新控制结构。例如,考虑下列过程:
+.CS
+\fBproc add2 name {
+	upvar $name x
+	set x [expr $x+2]
+}\fR
+.CE
+调用\fB Add2\fR 时加上给出一个变量名字的一个参数,它向这个变量的值加二。尽管 \fBadd2\fR 可以使用 \fBuplevel\fR 替代 \fBupvar \fR来实现,\fBupvar\fR 简便了 \fBadd2\fR 访问在调用者过程桢中的变量。
+.PP
+\fBnamespace eval\fR 是改变 Tcl 命令上下文的另一种方式(除了过程调用之外)。它向栈增加一个调用桢来表示名字空间上下文。这意味着每个 \fBnamespace eval\fR 命令被视为给 \fBuplevel\fR 和 \fBupvar\fR 命令的另一个调用层次。例如,\fBinfo level 1\fR 将返回描述一个命令的列表,它要么是最外的过程要么是最外的 \fBnamespace eval\fR 命令。还有,\fBuplevel #0\fR 在最外面的名字空间(全局名字空间)中的顶层求值一个脚本。
+.PP
+.VS
+如果删除(unset)一个 upvar 变量(比如,上面的 \fBadd2\fR 中的 \fBx\fR ),则 \fBunset\fR 操作影响它所连接到的变量,而不是 upvar 变量。除了退出在其中定义它的那个过程之外,没有方法删除一个 upvar 变量。但是,可以通过执行另一个 \fBupvar\fR 命令来为一个 upvar 变量重定目标(retarget)。
+
+.SH "Traces 和 upvar"
+.PP
+upvar 以一种直接但可能不是预期的方式与 trace 交互。如果在 \fIotherVar \fR上定义了一个变量跟踪,涉及 \fImyVar \fR的动作将触发这个追踪。但是,传递给跟踪过程将是 \fImyVar \fR的名字,而不是 \fIotherVar\fR 的名字。 所以,下列代码的输出将是 \fBlocalVar\fR 而不是 \fBoriginalVar\fR:
+.CS
+\fBproc traceproc { name index op } {
+	puts $name
+}
+proc setByUpvar { name value } {
+	upvar $name localVar
+	set localVar $value
+}
+set originalVar 1
+trace variable originalVar w traceproc
+setByUpvar originalVar 2
+}\fR
+.CE
+
+如果 \fIotherVar\fR 引用一个数组的元素,则为整个数组设置的变量跟踪在 \fImyVar\fR 被访问的时候将不被调用(但在特定元素上的跟踪仍将被调用)。特别的,如果这个数组是 \fBenv\fR,则对 \fImyVar\fR 的变动将不被正确的传递给子进程。
+
+.VE
+
+.SH "参见 SEE ALSO"
+global(n), namespace(n), uplevel(n), variable(n)
+
+.SH "关键字 KEYWORDS"
+context, frame, global, level, namespace, procedure, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/21
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/variable.n b/src/mann/variable.n
new file mode 100644
index 0000000..086a1ff
--- /dev/null
+++ b/src/mann/variable.n
@@ -0,0 +1,276 @@
+'\"
+'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
+'\" Copyright (c) 1997 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: variable.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: variable.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH variable n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+variable \- 建立并初始化一个名字空间变量
+.SH "总览 SYNOPSIS"
+\fBvariable \fR?\fIname value...\fR? \fIname \fR?\fIvalue\fR?
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+通常在 \fBnamespace eval\fR 命令中使用这个命令在一个名字空间中建立一个或多个变量。每个变量 \fIname\fR 都被初始化为 \fIvalue\fR。给最后一个变量的值是可选的。
+.PP
+如果一个变量 \fIname\fR 不存在,则建立它。在这种情况下,如果指定了 \fIvalue\fR ,它被分配为一个新建的变量。如果未指定 \fIvalue\fR,则保持新变量为未定义。如果变量已经存在,若指定了 \fIvalue\fR 则把它设置为 \fIvalue\fR ,若未给出 \fIvalue\fR 则保持不变。通常的,\fIname\fR 是未被限定的(不包含任何包容它的名字空间的名字),而变量建立在当前名字空间中。如果 \fIname\fR 包含任何名字空间限定符,则变量建立在指定的名字空间中。如果变量未被定义,它将对 \fBnamespace which\fR 命令是可见的,但对 \fBinfo exists\fR 命令不是。
+.PP
+如果在一个 Tcl 过程中执行 \fBvariable\fR 命令,它建立连接到相应的名字空间变量的局部变量。在这种方式下 \fBvariable\fR 命令类似于 \fBglobal\fR 命令,但 \fBglobal\fR 命令只连接到在全局名字空间中的变量。如果给出了任何 \fIvalue\fR,使用它们来修改相关的名字空间变量的值。如果一个名字空间变量不存在,则建立它并可选择的初始化它。
+.PP
+\fIname\fR 参数不能引用在数组中的一个元素。\fIname\fR 应该引用整个数组,并应当去掉初始化的 \fIvalue\fR 。在变量被声明之后,可以使用平常的 \fBset\fR 或 \fBarray\fR 命令来设置数组中的元素。
+
+.SH "参见 SEE ALSO"
+global(n), namespace(n), upvar(n)
+
+.SH "关键字 KEYWORDS"
+global, namespace, procedure, variable
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/vwait.n b/src/mann/vwait.n
new file mode 100644
index 0000000..dc9c815
--- /dev/null
+++ b/src/mann/vwait.n
@@ -0,0 +1,271 @@
+'\"
+'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
+'\"
+'\" See the file "license.terms" for information on usage and redistribution
+'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+'\" 
+'\" RCS: @(#) $Id: vwait.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\" 
+'\" The definitions below are for supplemental macros used in Tcl/Tk
+'\" manual entries.
+'\"
+'\" .AP type name in/out ?indent?
+'\"	Start paragraph describing an argument to a library procedure.
+'\"	type is type of argument (int, etc.), in/out is either "in", "out",
+'\"	or "in/out" to describe whether procedure reads or modifies arg,
+'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
+'\"	needed;  use .AS below instead)
+'\"
+'\" .AS ?type? ?name?
+'\"	Give maximum sizes of arguments for setting tab stops.  Type and
+'\"	name are examples of largest possible arguments that will be passed
+'\"	to .AP later.  If args are omitted, default tab stops are used.
+'\"
+'\" .BS
+'\"	Start box enclosure.  From here until next .BE, everything will be
+'\"	enclosed in one large box.
+'\"
+'\" .BE
+'\"	End of box enclosure.
+'\"
+'\" .CS
+'\"	Begin code excerpt.
+'\"
+'\" .CE
+'\"	End code excerpt.
+'\"
+'\" .VS ?version? ?br?
+'\"	Begin vertical sidebar, for use in marking newly-changed parts
+'\"	of man pages.  The first argument is ignored and used for recording
+'\"	the version when the .VS was added, so that the sidebars can be
+'\"	found and removed when they reach a certain age.  If another argument
+'\"	is present, then a line break is forced before starting the sidebar.
+'\"
+'\" .VE
+'\"	End of vertical sidebar.
+'\"
+'\" .DS
+'\"	Begin an indented unfilled display.
+'\"
+'\" .DE
+'\"	End of indented unfilled display.
+'\"
+'\" .SO
+'\"	Start of list of standard options for a Tk widget.  The
+'\"	options follow on successive lines, in four columns separated
+'\"	by tabs.
+'\"
+'\" .SE
+'\"	End of list of standard options for a Tk widget.
+'\"
+'\" .OP cmdName dbName dbClass
+'\"	Start of description of a specific option.  cmdName gives the
+'\"	option's name as specified in the class command, dbName gives
+'\"	the option's name in the option database, and dbClass gives
+'\"	the option's class in the option database.
+'\"
+'\" .UL arg1 arg2
+'\"	Print arg1 underlined, then print arg2 normally.
+'\"
+'\" RCS: @(#) $Id: vwait.n,v 1.2 2003/11/24 05:10:00 bbbush Exp $
+'\"
+'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
+.if t .wh -1.3i ^B
+.nr ^l \n(.l
+.ad b
+'\"	# Start an argument description
+.de AP
+.ie !"\\$4"" .TP \\$4
+.el \{\
+.   ie !"\\$2"" .TP \\n()Cu
+.   el          .TP 15
+.\}
+.ta \\n()Au \\n()Bu
+.ie !"\\$3"" \{\
+\&\\$1	\\fI\\$2\\fP	(\\$3)
+.\".b
+.\}
+.el \{\
+.br
+.ie !"\\$2"" \{\
+\&\\$1	\\fI\\$2\\fP
+.\}
+.el \{\
+\&\\fI\\$1\\fP
+.\}
+.\}
+..
+'\"	# define tabbing values for .AP
+.de AS
+.nr )A 10n
+.if !"\\$1"" .nr )A \\w'\\$1'u+3n
+.nr )B \\n()Au+15n
+.\"
+.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
+.nr )C \\n()Bu+\\w'(in/out)'u+2n
+..
+.AS Tcl_Interp Tcl_CreateInterp in/out
+'\"	# BS - start boxed text
+'\"	# ^y = starting y location
+'\"	# ^b = 1
+.de BS
+.br
+.mk ^y
+.nr ^b 1u
+.if n .nf
+.if n .ti 0
+.if n \l'\\n(.lu\(ul'
+.if n .fi
+..
+'\"	# BE - end boxed text (draw box now)
+.de BE
+.nf
+.ti 0
+.mk ^t
+.ie n \l'\\n(^lu\(ul'
+.el \{\
+.\"	Draw four-sided box normally, but don't draw top of
+.\"	box if the box started on an earlier page.
+.ie !\\n(^b-1 \{\
+\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.el \}\
+\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
+.\}
+.\}
+.fi
+.br
+.nr ^b 0
+..
+'\"	# VS - start vertical sidebar
+'\"	# ^Y = starting y location
+'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
+.de VS
+.if !"\\$2"" .br
+.mk ^Y
+.ie n 'mc \s12\(br\s0
+.el .nr ^v 1u
+..
+'\"	# VE - end of vertical sidebar
+.de VE
+.ie n 'mc
+.el \{\
+.ev 2
+.nf
+.ti 0
+.mk ^t
+\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
+.sp -1
+.fi
+.ev
+.\}
+.nr ^v 0
+..
+'\"	# Special macro to handle page bottom:  finish off current
+'\"	# box/sidebar if in box/sidebar mode, then invoked standard
+'\"	# page bottom macro.
+.de ^B
+.ev 2
+'ti 0
+'nf
+.mk ^t
+.if \\n(^b \{\
+.\"	Draw three-sided box if this is the box's first page,
+.\"	draw two sides but no top otherwise.
+.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
+.\}
+.if \\n(^v \{\
+.nr ^x \\n(^tu+1v-\\n(^Yu
+\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
+.\}
+.bp
+'fi
+.ev
+.if \\n(^b \{\
+.mk ^y
+.nr ^b 2
+.\}
+.if \\n(^v \{\
+.mk ^Y
+.\}
+..
+'\"	# DS - begin display
+.de DS
+.RS
+.nf
+.sp
+..
+'\"	# DE - end display
+.de DE
+.fi
+.RE
+.sp
+..
+'\"	# SO - start of list of standard options
+.de SO
+.SH "STANDARD OPTIONS"
+.LP
+.nf
+.ta 5.5c 11c
+.ft B
+..
+'\"	# SE - end of list of standard options
+.de SE
+.fi
+.ft R
+.LP
+See the \\fBoptions\\fR manual entry for details on the standard options.
+..
+'\"	# OP - start of full description for a single option
+.de OP
+.LP
+.nf
+.ta 4c
+Command-Line Name:	\\fB\\$1\\fR
+Database Name:	\\fB\\$2\\fR
+Database Class:	\\fB\\$3\\fR
+.fi
+.IP
+..
+'\"	# CS - begin code excerpt
+.de CS
+.RS
+.nf
+.ta .25i .5i .75i 1i
+..
+'\"	# CE - end code excerpt
+.de CE
+.fi
+.RE
+..
+.de UL
+\\$1\l'|0\(ul'\\$2
+..
+.TH vwait n 8.0 Tcl "Tcl Built-In Commands"
+.BS
+'\" Note:  do not modify the .SH NAME line immediately below!
+.SH NAME
+vwait \- 处理事件直到一个变量被写
+.SH "总览 SYNOPSIS"
+\fBvwait\fR \fIvarName\fR
+.BE
+
+.SH "描述 DESCRIPTION"
+.PP
+这个命令进入 Tcl 事件循环来处理事件,如果没有事件就绪则阻塞应用。它连续处理事件直到一些事件处理器设置了 \fIvarName\fR 变量的值。一旦设置了 \fIvarName\fR ,则\fBvwait\fR 命令在修改 \fIvarName\fR 的那个事件处理器完成之后立即返回。\fIvarName\fR 必须是全局作用域的(要么为这个变量调用 \fBglobal\fR,要么为它加上完整的名字空间路径指定)。
+.PP
+在一些情况下,\fBvwait\fR 命令在设置了 \fIvarName\fR 之后可能不立即返回。如果设置 \fIvarName\fR 的那个事件处理器未立即完成则可能发生这种情况。例如,如果一个事件处理器设置了 \fIvarName\fR 并接着它自身调用 \fBvwait\fR 来等待一个不同的变量,则它可能很长时间不返回。在此期间顶层的 \fBvwait\fR 被阻塞来等待事件处理器完成,所以都不能返回。
+
+.SH "参见 SEE ALSO"
+global(n)
+
+.SH "关键字 KEYWORDS"
+event, variable, wait
+
+.SH "[中文版维护人]"
+.B 寒蝉退士
+.SH "[中文版最新更新]"
+.B 2001/11/20
+.SH "《中国 Linux 论坛 man 手册页翻译计划》:"
+.BI http://cmpp.linuxforum.net
diff --git a/src/mann/while.n b/src/mann/while.n
new file mode 100644
index 0000000..15e932c
--- /dev/null
+++ b/src/mann/while.n
@@ -0,0 +1,33 @@
+.TH while n
+.SH NAME
+.B while - 在条件满足时重复的执行脚本
+.SH 总览
+.B while test body
+.SH 描述
+while 命令把 test 作为一个表达式来求值(用与 expr 求它的参数的值相同的方式)。这个表达式的值必须是一个正确的 boolean 值;如果它是真值则把 body 传递给 Tcl 解释器来执行它。一旦执行了 body 则再次求值 test ,并重复处理直到最终 test 求值出一个假 boolean 值。可以在 body 中执行 Continue 命令来终止这个循环的当前重复操作(iteration),并可以在 body 中执行 break 命令来导致 while 命令立即终止。while 命令总是返回一个空串。
+
+注意: test 应该总是包围在花括号中。如果不是,在 while 命令开始执行之前将进行变量替换,这意味着循环体所做的变量变更将不考虑在这个表达式中。这将很可能导致无限循环。如果 test 被包围在花括号中,变量替换被推迟到求值这个表达式的时候(在每次循环重复操作之前),所以变量的变化将是可见的。例如,尝试下列脚本并在 $x<10 两边分别加上和不加花括号:
+
+.nf
+set x 0
+while {$x<10} {
+	puts "x is $x"
+	incr x
+}
+.fi
+
+.SH 关键字
+boolean 值, 循环, 测试, while
+
+.SH 作者
+.nf
+Copyright © 1993 The Regents of the University of California.
+Copyright © 1994-1997 Sun Microsystems, Inc.
+Copyright © 1995-1997 Roger E. Critchlow Jr.
+.fi
+.SH [中文版维护人]
+.B 寒蝉退士
+.SH [中文版最新更新]
+.B 2001/11/20
+.SH 《中国 Linux 论坛 man 手册页翻译计划》:
+.BI http://cmpp.linuxforum.net
diff --git a/utils/bi2fbfi.pl b/utils/bi2fbfi.pl
new file mode 100755
index 0000000..e7ed116
--- /dev/null
+++ b/utils/bi2fbfi.pl
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl
+#
+# 将html 格式中的<B></B>转换为roff 格式中的\fB \fR
+# <I></I> 也转换为 \fI \fR
+#
+while(<>){
+	s/\<b\>(.*?)\<\/b\>/\\fB\1\\fR/g;
+	s/\<B\>(.*?)\<\/B\>/\\fB\1\\fR/g;
+	s/\<i\>(.*?)\<\/i\>/\\fI\1\\fR/g;
+	s/\<I\>(.*?)\<\/I\>/\\fI\1\\fR/g;
+	print
+	}
diff --git a/utils/html2man b/utils/html2man
new file mode 100755
index 0000000..039985d
--- /dev/null
+++ b/utils/html2man
@@ -0,0 +1,9 @@
+#!/usr/bin/perl
+while(<>){
+	s/gb2312/utf8/g;
+	s/<DD>//ig;
+	s/<DT>//ig;
+	s/<DL>//ig;
+	s/<\/DL>//ig;
+	print
+}
diff --git a/utils/man2html b/utils/man2html
new file mode 100755
index 0000000..7b167b5
--- /dev/null
+++ b/utils/man2html
@@ -0,0 +1,14 @@
+#!/bin/sh
+# bbbush <bbbush at 163.com> 20031123
+# you need to set LC_ALL to zh_CN.GB18030 before you use this script
+# to process GB encoded man pages.
+
+man2html="/usr/bin/groff -Thtml -mandoc"
+if [ ! $# -le "1" ] ;then
+	echo "Error! $0 Need exactly 1 arguments and act as a pipe"
+	exit
+elif [ $# -eq 1 ] ;then
+	$man2html $1 2>/dev/null
+else
+	$man2html - 2>/dev/null
+fi
diff --git a/utils/man2html.sh b/utils/man2html.sh
new file mode 100644
index 0000000..d396883
--- /dev/null
+++ b/utils/man2html.sh
@@ -0,0 +1,70 @@
+#! /bin/sh
+
+#	$Id: man2html.sh,v 1.1 2003/11/24 05:10:00 bbbush Exp $
+# 		www.linuxforum.net CMPP
+# simple shell to process all the man pages, change them to html file
+# Copyright (c) He Weiping(Laser Henry) (laser at zhengmai.com.cn)2000
+#  You may freely re-write and/or re-distrabute this scrip
+# all rights revoked
+# 
+# Laser	2000/10/11	0.0.1 	firstdraft
+# Laser 2000/10/31	0.0.2	change those command to bin dir
+# Laser 2000/10/31	0.0.3	fix the file types error
+# 
+
+#TOPDIR=$(cat /tmp/CMANROOT ) 
+TOPDIR=$(echo $CMANROOT )
+HTMLSUBDIR=html
+HTMLFILE=
+CMDPATH=$TOPDIR/bin
+
+usage() {
+	echo "Usage: man2html {the_directory_you_containing_the_man_file}"
+}
+
+prepare() {
+        echo "you need to prepare the cman's root"
+        echo "use command:"
+#        echo "$ pwd >/tmp/CMANROOT"
+	echo "$ CMANROOT=\`pwd\`>>~/.bash_profile"
+        echo "in your cman's dir"
+}
+
+
+if [ "$#" = "0" ]; then
+		usage
+		exit 1
+fi
+
+if [ "$TOPDIR" = "" ]; then
+        prepare
+        exit 1
+fi
+
+
+for i in $* 
+	do
+		if [ -d $i ]; then
+			if [ "$i" != "$HTMLSUBDIR" ]; then
+				cd $i
+				echo "we are now in $i"
+				$CMDPATH/man2html.sh *
+				cd ..
+			fi
+		elif [ "$i" != "man2html.sh"  ]; then
+
+                        FILETYPE=$(file $i |cut -f2 -d ' ')
+
+                        if [ "$FILETYPE" = "troff" ]; then
+
+				echo "processing $i"
+				HTMLFILE=$(echo $i |cut -d. -f 1)
+				echo "generating $HTMLFILE.html"
+				man2html $i > $HTMLFILE.html
+				cat $HTMLFILE.html | $CMDPATH/htmlcharfix.pl > $TOPDIR/html/$HTMLFILE.html
+				rm $HTMLFILE.html
+			fi
+		fi
+	done
+
+exit 0
diff --git a/utils/name.pl b/utils/name.pl
new file mode 100644
index 0000000..06e84bf
--- /dev/null
+++ b/utils/name.pl
@@ -0,0 +1,7 @@
+while(<>){
+	s/^\.S([H|h])"?\s*名\s*字\s*(\(?NAME\)?"?)?.*$/\.S\1 NAME/;
+	s/^\.S([Hh])\s*Name/\.S\1 NAME/;
+	s/^\.S([Hh])\s*命令名/\.S\1 NAME/;
+	s/^\.SH NAME \[?名字\]?/\.SH NAME/;
+	print
+}
diff --git a/utils/pre-trans.pl b/utils/pre-trans.pl
new file mode 100755
index 0000000..a25e997
--- /dev/null
+++ b/utils/pre-trans.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/env perl
+#
+# 将标题替换为中文和英文混合的标准标题
+# 将签名添加在文档最后
+#
+while (<>){
+	s/^\.SH "?SYNOPSIS"?/\.SH "总览 SYNOPSIS"/;
+	s/^\.SH "?DESCRIPTION"?/\.SH "描述 DESCRIPTION"/;
+	s/^\.SH "?SEE ALSO"?/\.SH "参见 SEE ALSO"/;
+	s/^\.SH "?AUTHOR"?/\.SH "作者 AUTHOR"/;
+	s/^\.SH "?KEYWORDS"?/\.SH "关键字 KEYWORDS"/;
+	s/^\.SH "?OPTIONS"?/\.SH "选项 OPTIONS"/;
+	s/^\.SH "?EXAMPLE"?/\.SH "范例 EXAMPLE"/;
+	print
+}
+print <<EOF;
+
+.SH "[中文版维护人]"
+.B 姓名 <email>
+.SH "[中文版最新更新]"
+.BR yyyy.mm.dd
+.SH "《中国linux论坛man手册翻译计划》:"
+.BI http://cmpp.linuxforum.net 
+EOF
diff --git a/utils/release-manpages b/utils/release-manpages
new file mode 100755
index 0000000..d92f522
--- /dev/null
+++ b/utils/release-manpages
@@ -0,0 +1,16 @@
+#!/bin/sh
+manpages=man-pages-zh_CN
+release=$manpages-1.5
+rm -rf $manpages*
+rm -rf finally
+cvs -d:pserver:anonymous at sf.linuxforum.net:/cvsroot/cmpp export -r HEAD $manpages
+mv $manpages $release
+count=`wc -l $release/DOCS/00TRANSLATED`
+tar zcf $release.tar.gz $release
+rpmbuild -ta $release.tar.gz
+mkdir finally
+mv /usr/src/redhat/SRPMS/$manpages*.src.rpm finally/
+mv /usr/src/redhat/RPMS/noarch/$manpages*.rpm finally/
+mv $release.tar.gz finally/
+rm -rf $manpages*
+echo $count
diff --git a/utils/update-cman.sh b/utils/update-cman.sh
new file mode 100644
index 0000000..80cfacb
--- /dev/null
+++ b/utils/update-cman.sh
@@ -0,0 +1,2 @@
+rm -rf GB/mann
+for i in `cat DOCS/00TRANSLATED` ; do cp -f GB/$i ../cman/$i ; done
diff --git a/utils/zhtw_2_zhcn.pl b/utils/zhtw_2_zhcn.pl
new file mode 100755
index 0000000..3a9b4ee
--- /dev/null
+++ b/utils/zhtw_2_zhcn.pl
@@ -0,0 +1,1821 @@
+#!/usr/bin/perl -p
+# 繁简体中文习惯用语对译工具 T2S 0.3 版 2003-07-27 11:10
+# Come From AutoWork Toolkits. 
+# Welcome to our team: http://i18n.linux.net.cn 
+# Copyleft Developer: Anita(即时科技);Improver: Liu Songhe;Dictionary Provider:Zong Yaotang
+next if /^%/;
+next if /%NC$/;
+
+s#(?<=\\epsfig\{file=)TL-img/#TL-img-CN/#g;
+s#(?<=\\epsfig\{file=)TO-img/#TO-img-CN/#g;
+s#(?<=\\epsfig\{file=)TS-img/#TS-img-CN/#g;
+s#\\CJKfamily\{hei00l\}#\\CJKfamily\{ghei00bu\}#g;
+s#\\CJKfamily\{fzht_gb18030\}#\\CJKfamily\{fzht_gb18030_gb\}#g;
+
+while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)—/$1─/) {}
+while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)「/$1“/) {}
+while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)」/$1”/) {}
+while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*(?:、|,|。|:|;|!|?))~/$1/) {}
+
+
+s/将视窗还原成标准的大小/将窗口恢复到正常大小/g;
+
+s/硬体疑难排解代理程式/自动跳过驱动程序/g;
+s/请洽询您的系统管理员/请与您的系统管理员联系/g;
+s/切换到下一个文件视窗/切换到下一个文档窗口/g;
+s/切换到前一个文件视窗/切换到上一个文档窗口/g;
+s/启动内嵌或连结的物件/激活嵌入的或链接的对象/g;
+
+s/确认从原始多重分割/确认多次脱离源位置/g;
+s/将视窗缩成一个图示/将窗口缩为图标/g;
+
+s/掌上型电子游乐器/手掌机/g;
+s/一并寻找子资料夹/包含子文件夹/g;
+s/所有视窗缩到最小/最小化所有窗口/g;
+s/设定列印页的格式/页面设置/g;
+s/取得印表机连接埠/捕获打印机端口/g;
+s/请洽询系统管理员/请与系统管理员联系/g;
+s/切换到其他的作业/打开任务列表/g;
+s/洽询电脑制造厂商/与计算机厂商联系/g;
+s/目的地磁碟机已满/目标盘已满/g;
+s/分享档案及印表机/文件和打印共享/g;
+
+
+s/综合性办公大楼/商住楼/g;
+s/重复前次的动作/重复上次操作/g;
+s/中断所有的连线/断开所有的连接/g;
+s/直接电缆线连线/直接电缆连接/g;
+s/因系统保安理由/因系统安全考虑/g;
+s/寻找所指定的字/搜索指定文字/g;
+s/选择整份的文件/选择整个文档/g;
+s/需要使用者介入/需要用户干预/g;
+s/喜欢使用的装置/首选设备/g;
+s/无足够的记忆体/内存不够/g;
+s/视讯压缩解压缩/视频编码解码器/g;
+s/使用者设定档案/用户配置文件/g;
+s/确认取代资料夹/确认文件夹替换/g;
+s/确认从原始分割/确认脱离源位置/g;
+s/全字拼写须符合/匹配整个单词/g;
+s/清除所选的范围/清除所选内容/g;
+s/启动时缩到最小/启动时最小化/g;
+s/内含无效的字元/内嵌无效的字符/g;
+s/列印现用的文件/打印当前文档/g;
+s/连线网路磁碟机/映射网络驱动器/g;
+s/连接到网路资源/映射为网络资源/g;
+s/开启所选的项目/打开所选项目/g;
+s/将视窗缩成图示/将窗口缩为图标/g;
+s/将视窗放到最大/将窗口最大化/g;
+s/键盘语系及配置/键盘语言及布局/g;
+s/检查使用者名称/验证用户名/g;
+s/冠状动脉心脏病/冠心病/g;
+s/关闭现用的文件/关闭当前文档/g;
+s/复原上次的动作/还原上次操作/g;
+s/非重叠显示视窗/平铺窗口/g;
+s/杜斯托也夫斯基/陀思妥耶夫斯基/g;
+s/动态连结程式库/动态链接库/g;
+s/储存现用的文件/保存当前文档/g;
+s/程式管理员群组/程序管理器组/g;
+s/变更视窗的位置/改变窗口位置/g;
+s/变更视窗的大小/改变窗口大小/g;
+s/巴布亚纽几内亚/巴布亚新几内亚/g;
+
+
+s/作用中的视窗/活动窗口/g;
+s/作业系统核心/操作系统内核/g;
+s/总体经济效益/社会经济效益/g;
+s/重叠显示视窗/层叠窗口/g;
+s/中原标准时间/北京时间/g;
+s/智慧型终端机/智能终端/g;
+s/用完就丢商品/一次性商品/g;
+s/硬体已经关闭/硬件已经禁用/g;
+s/依磁碟机代号/按驱动器名/g;
+s/虚拟私人网路/虚拟专用网/g;
+s/新增驱动程式/添加驱动程序/g;
+s/新增个人信箱/添加个人信箱/g;
+s/显示器设定值/显示器设置/g;
+s/无法启动说明/激活帮助失败/g;
+s/无法开启文件/不能打开文档/g;
+s/无法储存文件/不能保存文档/g;
+s/位数分隔字元/分组符号/g;
+s/位数分隔符号/数字分组符号/g;
+s/网路上的芳邻/网上邻居/g;
+s/说明搜寻程式/帮助搜索程序/g;
+s/事件作业方式/事件方案/g;
+s/使用者设定档/用户配置文件/g;
+s/沙乌地阿拉伯/沙特阿拉伯/g;
+s/如何使用说明/如何使用帮助/g;
+s/日光节约时间/夏时制/g;
+s/全国优等教材/国优教材/g;
+s/驱动程式磁片/驱动盘/g;
+s/青年活动中心/青年宫/g;
+s/启动这个视窗/激活这个窗口/g;
+s/启动工作清单/激活任务列表/g;
+s/密闭式清洁站/垃圾楼/g;
+s/另存作业方式/方案另存为/g;
+s/列出说明主题/帮助主题列表/g;
+s/连线永久切断/连接永久断开/g;
+s/连结已经中断/链接可能被断开/g;
+s/连按两下滑鼠/双击/g;
+s/课外教学活动/第二课堂/g;
+s/开启这个文件/打开此文档/g;
+s/建立新的文件/创建新文档/g;
+s/剪辑物件档案/碎片文件/g;
+s/加入新的硬体/添加新硬件/g;
+s/记忆体用完了/内存不足/g;
+s/关联的副档名/相关扩展名/g;
+s/功能表程式集/菜单程序/g;
+s/公共交通运送/公交/g;
+s/工厂所在地点/厂址/g;
+s/个人认证资料/个人证书/g;
+s/附属应用程式/附件/g;
+s/非破坏性检验/无损检测/g;
+s/多工缓冲处理/后台打印/g;
+s/电源作业方式/电源方案/g;
+s/电源管制设定/设置电源方案/g;
+s/电源管制方式/电源方案/g;
+s/登记应用程式/注册应用程序/g;
+s/大型积体电路/大规模集成电路/g;
+s/大型公共汽车/大公共/g;
+s/大小写需符合/区分大小写/g;
+s/不正确的字元/无效字符/g;
+s/不含酒精饮料/软饮料/g;
+s/变更作业方式/更改方案/g;
+s/变更国别设定/更改区域设置/g;
+
+
+s/字元提示器/提示符/g;
+s/子网路遮罩/子网掩码/g;
+s/子母画面电视机/画中画电视/g;
+s/资源回收筒/回收站/g;
+s/资料库等级/数据库类别/g;
+s/桌上型电脑/台式计算机/g;
+s/装置管理员/设备管理程序/g;
+s/主网路登入/主网络登录/g;
+s/主电脑名称/主机名/g;
+s/周休二日制/双休日/g;
+s/重量级人物/大腕/g;
+s/终端机萤幕/终端屏幕/g;
+s/中断使用者/断开用户连接/g;
+s/智慧型系统/智能系统/g;
+s/智慧型犯罪/智能犯罪/g;
+s/智慧财产权/知识产权/g;
+s/指点和评论/点评/g;
+s/正在断线中/正在挂断/g;
+s/整顿和改进/整改/g;
+s/这个使用者/该用户/g;
+s/暂存盘目录/临时目录/g;
+s/预设原始档/默认源文件/g;
+s/萤幕小键盘/软键盘/g;
+s/隐蔽性失业/隐性失业/g;
+s/意外的错误/异常错误/g;
+s/已开发国家/发达国家/g;
+s/移动资料夹/移动文件夹/g;
+s/依原始位置/按源位置/g;
+s/依由小而大/按从小到大/g;
+s/依可用空间/按可用空间/g;
+s/叶门阿拉伯/阿拉伯也门/g;
+s/演出者名称/艺术家名/g;
+s/延伸记忆体/扩充内存/g;
+s/选择性贴上/选择性粘贴/g;
+s/选择的部份/所选内容/g;
+s/行人徒步区/步行街/g;
+s/新增使用者/添加用户/g;
+s/新增工具列/新建工具栏/g;
+s/限制客流量/限流/g;
+s/现用的文件/当前文档/g;
+s/夏令时间制/夏时制/g;
+s/下一个曲目/下一曲目/g;
+s/辖区识别码/作用域标识/g;
+s/系统登录表/注册表/g;
+s/物资交流会/物交会/g;
+s/物理治疗法/理疗/g;
+s/我的文件夹/我的文档/g;
+s/文件功能表/文档菜单/g;
+s/文化娱乐城/文化宫/g;
+s/未开发国家/不发达国家/g;
+s/往左或往右/向左或向右/g;
+s/网页或档案/网页或文件/g;
+s/托养婴幼儿/托幼/g;
+s/条码阅读机/条形码读出器/g;
+s/双画面电视/画中画电视/g;
+s/数据机连线/调制解调器连接/g;
+s/使用者清单/用户列表/g;
+s/使用者名称/用户名/g;
+s/使用者介入/用户操作/g;
+s/使用过档案/使用过文件/g;
+s/食物调理包/软罐头/g;
+s/拾圆人民币/大团结/g;
+s/实体记忆体/物理内存/g;
+s/身分证字号/身份证号码/g;
+s/设置原始档/配置源文件/g;
+s/设定控制台/控制面板/g;
+s/设成预设值/设成默认值/g;
+s/少年观护所/少管所/g;
+s/少年感化院/工读学校/g;
+s/少年辅育院/管教所/g;
+s/商业办公室/写字楼/g;
+s/软式磁碟机/软盘驱动器/g;
+s/人身自由权/人身权/g;
+s/确定要变更/确实要更改/g;
+s/全萤幕模式/全屏方式/g;
+s/全球资讯网/万维网/g;
+s/侵害商标权/侵犯商标权/g;
+s/前一个曲目/上一曲目/g;
+s/朴列汉诺夫/普列汉诺夫/g;
+s/内野高飞球/内场腾空球/g;
+s/目前的文件/当前文件/g;
+s/目前的图示/当前图标/g;
+s/目的资料夹/目标文件夹/g;
+s/默认原始档/默认源文件/g;
+s/米开朗琪罗/米开朗基罗/g;
+s/美新处/美国新闻处/g;
+s/茅利塔尼亚/毛里塔尼亚/g;
+s/林业的虫害/无烟火灾/g;
+s/列支敦斯登/列支敦士登/g;
+s/列印到档案/打印到文件/g;
+s/连结程式库/链接库/g;
+s/连接埠名称/端口名/g;
+s/雷射印表机/静电照相印刷机/g;
+s/扩充记忆体/扩展内存/g;
+s/客方的电脑/客户机/g;
+s/可用的按钮/可用按钮/g;
+s/开拓与扩展/拓展/g;
+s/开始功能表/开始菜单/g;
+s/卡式录音带/盒式录音带/g;
+s/卡拉曼理斯/卡拉曼利斯/g;
+s/矩阵式组织/矩阵组织/g;
+s/居民委员会/居委会/g;
+s/九个指头和一个指头/全局与局部/g;
+s/结束后回到/退出并返回/g;
+s/建立储存体/开辟存储区/g;
+s/剪辑物件档/碎片文件/g;
+s/贾鲁塞斯基/雅鲁泽尔斯基/g;
+s/纪录原始档/日志源文件/g;
+s/记忆体用完/内存耗尽/g;
+s/几内亚比索/几内亚比绍/g;
+s/回覆缓冲区/答复缓冲区/g;
+s/化学工业部/化工部/g;
+s/核子反应炉/反应堆/g;
+s/好记的名称/友好名称/g;
+s/哥斯大黎加/哥斯达黎加/g;
+s/哥德式艺术/哥特式艺术/g;
+s/高科技产业/新技术产业/g;
+s/高传真电视/高清晰电视/g;
+s/干部休养所/干休所/g;
+s/服务提供者/服务供应商/g;
+s/分享的档案/共享文件/g;
+s/非法录影带/黑片/g;
+s/放射线治疗/放疗/g;
+s/法律和纪律/法纪/g;
+s/二次性电池/可充式电池/g;
+s/电子印刷术/静电印刷术/g;
+s/电帚/电动吸尘器/g;
+s/电邮服务器/邮件服务器/g;
+s/登录资料库/连接数据库/g;
+s/档案名无效/非法文件名/g;
+s/档案控制码/文件句柄/g;
+s/档案管理员/文件管理器/g;
+s/从原始分割/脱离源位置/g;
+s/磁碟机代号/驱动器号/g;
+s/传统记忆体/常规内存/g;
+s/抽取式磁碟/可移动磁盘/g;
+s/程式设计员/程序员/g;
+s/程式管理员/程序管理器/g;
+s/长城信用卡/长城卡/g;
+s/布里兹涅夫/勃列日涅夫/g;
+s/拨盘式电话/脉冲式电话/g;
+s/拨号伺服器/拨号服务器/g;
+s/拨号配接卡/拨号网络适配器/g;
+s/辨析既存的/解析现有的/g;
+s/变更连接埠/更改端口/g;
+s/笔记型电脑/笔记本电脑/g;
+s/本机连接埠/本地端口/g;
+s/班达拉尼克/班达拉奈克/g;
+s/巴本德里欧/帕潘德里欧/g;
+s/按键式电话/音频式电话/g;
+s/安全性警告/安全警告/g;
+s/安得洛波夫/安德罗波夫/g;
+s/埃及阿拉伯/阿拉伯埃及/g;
+
+
+s/拨接(连接|网络)/拨号连接/g;
+
+s/作业系统/操作系统/g;
+s/作业失败/操作失败/g;
+s/作业方式/方案/g;
+s/最后一笔/最后一条/g;
+s/组态完成/配置完成/g;
+s/组态设定/配置/g;
+s/组态精灵/配置向导/g;
+s/组态结构/配置纹理/g;
+s/组态档案/配置文件/g;
+s/走通门路/打通渠道/g;
+s/总体经济/宏观经济/g;
+s/自动指定/自动分配/g;
+s/自动执行/自动运行/g;
+s/自筹投资/预算外投资/g;
+s/字型检视/字体查看/g;
+s/字型档案/字体文件/g;
+s/谘询公司/顾问公司/g;
+s/资源分享/资源共享/g;
+s/资源档案/资源文件/g;
+s/资讯时代/信息社会/g;
+s/资料速率/数据传输速度/g;
+s/资料档案/数据文件/g;
+s/资料串流/数据流/g;
+s/装置名称/设备名/g;
+s/装置离线/设备离线/g;
+s/装置就绪/设备就绪/g;
+s/转码序列/转义字符/g;
+s/专业度假/专业实习/g;
+s/专案档案/方案文件/g;
+s/助学贷款/贷学金/g;
+s/伫列名称/队列名/g;
+s/主要途径/主渠道/g;
+s/主要认证/根证书/g;
+s/主审裁判/主裁判员/g;
+s/主记忆体/主存/g;
+s/主机控制器/主控制卡/g;
+s/重组状态/碎片整理状态/g;
+s/重新转向/重定向/g;
+s/重新整理/刷新/g;
+s/重新搜寻/新搜索/g;
+s/重新命名/重命名/g;
+s/重新雇用/返聘/g;
+s/重新导向/重定向/g;
+s/重新拨号/重拨/g;
+s/重复档案/重复文件/g;
+s/重叠显示/层叠窗口/g;
+s/重叠视窗/重叠窗口/g;
+s/终端设备/终端/g;
+s/中继档案/图元文件/g;
+s/中断连线/断开连接/g;
+s/智障人士/智残人/g;
+s/智力医学/第四医学/g;
+s/制作格式/格式化/g;
+s/制造厂商/制造商/g;
+s/指定医师/点名手术/g;
+s/指标速度/指针速度/g;
+s/指标轨迹/指针轨迹/g;
+s/执行绪列/线程栏/g;
+s/支援农业/支农/g;
+s/支援边疆/支边/g;
+s/政治审查/政审/g;
+s/政治庇护/政治避难/g;
+s/正确起始/正常初始化/g;
+s/整数参数/整型参数/g;
+s/争相出售/竞销/g;
+s/诊断模式/诊断方式/g;
+s/真实模式/实模式/g;
+s/这个装置/该设备/g;
+s/这个选项/该选项/g;
+s/这个视窗/该窗口/g;
+s/这个画面/该页/g;
+s/这个档案/这个文件/g;
+s/这个程式/该程序/g;
+s/照相排版/照排/g;
+s/暂时档案/临时文件/g;
+s/暂存档案/临时文件/g;
+s/在职训练/岗位培训/g;
+s/在职培训/岗位练兵/g;
+s/再寄一次/重新发送/g;
+s/远距教学/远距离教育/g;
+s/远端连线/远程连接/g;
+s/远端管理/远程管理/g;
+s/远端电脑/远程计算机/g;
+s/远端磁碟/远程磁盘/g;
+s/原因不详/原因未知/g;
+s/原始设定/原始设置/g;
+s/原程式码/源代码/g;
+s/预览列印/打印预览/g;
+s/预防医学/第一医学/g;
+s/逾时错误/超时错误/g;
+s/余热资源/第五能源/g;
+s/有效日期/生效日期/g;
+s/有失身份/跌份儿/g;
+s/邮递区号/邮政编码/g;
+s/优先等级/优先级/g;
+s/永远启动/始终打开/g;
+s/永远关闭/始终关闭/g;
+s/影音剪接/影音剪辑/g;
+s/影片档案/影片文件/g;
+s/应用程式/应用程序/g;
+s/引言层级/引用级/g;
+s/音效格式/音频格式/g;
+s/音效档案/音频文件/g;
+s/已经移除/已被卸载/g;
+s/疑难排解/疑难解答/g;
+s/移动档案/文件移动/g;
+s/移除档案/删除文件/g;
+s/移除程式/卸载程序/g;
+s/移除程式/卸载程序/g;
+s/依资料夹/按文件夹/g;
+s/依伺服器/按服务器/g;
+s/依寄信人/按寄信人/g;
+s/依服务器/按服务器/g;
+s/依发信人/按发信人/g;
+s/衣索比亚/埃塞俄比亚/g;
+s/业务会报/办公会议/g;
+s/遥测技术/遥感技术/g;
+s/延伸视窗/扩展至窗口/g;
+s/压缩档案/压缩文件/g;
+s/讯息档案/消息文件/g;
+s/巡弋飞弹/巡航导弹/g;
+s/寻找目标/搜索目标/g;
+s/选择说明/帮助选择/g;
+s/选择连线/链接选择/g;
+s/修补档案/补丁文件/g;
+s/休闲活动/业余活动/g;
+s/信件软体/邮件程序/g;
+s/信件软体/信件程序/g;
+s/新资料夹/新文件夹/g;
+s/新增帐号/新建帐号/g;
+s/新增移除/添加删除/g;
+s/新增视窗/新建窗口/g;
+s/新增签名/新建签名/g;
+s/新增昵称/添加昵称/g;
+s/新增程式/添加程序/g;
+s/新细明体/宋体/g;
+s/新的密码/新密码/g;
+s/新的磁片/新盘/g;
+s/谢瓦纳兹/谢瓦尔德纳泽/g;
+s/撷取档案/捕获文件/g;
+s/项目编号/项目符号/g;
+s/相同视窗/同一窗口/g;
+s/现用文件/当前文档/g;
+s/显示整页/显示整个页面/g;
+s/显示说明/显示帮助/g;
+s/显示名称/显示名/g;
+s/显示档案/显示文件/g;
+s/闲置感应/空闲敏感性/g;
+s/先发投手/开局投手/g;
+s/夏令时间/夏时制/g;
+s/系统登录/注册表/g;
+s/系统档案/系统文件/g;
+s/喜好设定/首选项/g;
+s/稀有动物/珍稀动物/g;
+s/希奥塞古/齐奥塞斯库/g;
+s/夕阳市场/银发市场/g;
+s/无线电话/无绳电话/g;
+s/无灰粉笔/无尘粉笔/g;
+s/无法开启/不能打开/g;
+s/无法存取/不能访问/g;
+s/我的最爱/收藏夹/g;
+s/我的文件/我的文档/g;
+s/翁山苏姬/昂山素季/g;
+s/文字文件/文本文件/g;
+s/文字文件/文本文档/g;
+s/文字模式/文本模式/g;
+s/文书处理/文字处理/g;
+s/文书处理/文字处理/g;
+s/文档长度/文件长度/g;
+s/位址限制/地址限制/g;
+s/位址冲突/地址冲突/g;
+s/委托代销/托销/g;
+s/唯读档案/只读文件/g;
+s/往前略过/快进/g;
+s/往后略过/快退/g;
+s/网域字尾/域后缀/g;
+s/网域管理/域管理/g;
+s/网路元件/网络组件/g;
+s/网路连线/网络连接/g;
+s/网际网路/互联网/g;
+s/王牌教师/特级教师/g;
+s/万用字元/通配符/g;
+s/外送传真/待发传真/g;
+s/外观范例/外观示例/g;
+s/外挂程式/插件/g;
+s/脱离文盲/扫盲/g;
+s/脱离挂钩/脱钩/g;
+s/图像档案/图象文件/g;
+s/图示档案/图标文件/g;
+s/投诉电话/监督电话/g;
+s/统筹管理/归口管理/g;
+s/同步备份/同步副本/g;
+s/通讯协定/通信协议/g;
+s/通讯理论/信息论/g;
+s/通信论坛/邮件列表/g;
+s/通配字元/通配符/g;
+s/停止起始/推迟初始化操作/g;
+s/停止回应/停止响应/g;
+s/贴上连结/粘贴链接/g;
+s/贴齐格线/均匀排列/g;
+s/天才儿童/超常儿童/g;
+s/套装软体/软件包/g;
+s/坦尚尼亚/坦桑尼亚/g;
+s/泰国王国/泰王国/g;
+s/太空科技/空间技术/g;
+s/太空技术/航天技术/g;
+s/太空航行/航天/g;
+s/索忍尼辛/索尔仁尼琴/g;
+s/索马利亚/索马里/g;
+s/所有类型/全部类型/g;
+s/所有档案/所有文件/g;
+s/缩到最小/最小化/g;
+s/孙纳雅克/森纳那亚克/g;
+s/随机选曲/随机顺序/g;
+s/随插即用/即插即用/g;
+s/搜寻顺序/搜索顺序/g;
+s/送出档案/发送文件/g;
+s/伺服程式/服务器/g;
+s/斯夫波达/斯沃博达/g;
+s/私校教师/民办教师/g;
+s/私立小学/民办小学/g;
+s/私立大学/民办大学/g;
+s/说明主题/帮助主题/g;
+s/说明档案/说明文件/g;
+s/水平并排/横向平铺窗口/g;
+s/水耕蔬菜/超级蔬菜/g;
+s/数位相机/数字相机/g;
+s/数位唱片/数字唱片/g;
+s/授与存取/授权访问/g;
+s/视讯压缩/视频编码/g;
+s/视讯会议/可视会议/g;
+s/视讯格式/视频格式/g;
+s/视窗系统/窗口系统/g;
+s/使用者级/用户级/g;
+s/使用说明/使用帮助/g;
+s/使用手册/用户手册/g;
+s/使用空间/已用空间/g;
+s/使用介面/用户界面/g;
+s/使用方式/用法/g;
+s/史瓦济兰/斯威士兰/g;
+s/食品雕刻/食雕/g;
+s/实体位址/物理地址/g;
+s/实况录影/实况录像/g;
+s/识别资料/标识/g;
+s/时间设定/时钟设置/g;
+s/圣婴现象/厄尔尼诺现象/g;
+s/圣马利诺/圣马力诺/g;
+s/省电模式/节能方式/g;
+s/声波装置/波形设备/g;
+s/声波格式/波形格式/g;
+s/生理时钟/生物钟/g;
+s/升等职称/评定/g;
+s/审核检查/核查/g;
+s/审查批示/审批/g;
+s/涉外事物/外事/g;
+s/设定完成/配置完成/g;
+s/上层目录/高层目录/g;
+s/色板对应/调色板映射/g;
+s/扫除文盲/扫盲/g;
+s/赛普勒斯/塞浦路斯/g;
+s/柔媚庸俗/媚俗/g;
+s/容量上限/最大空间/g;
+s/日本脑炎/乙脑/g;
+s/认证资料/证书/g;
+s/认证内容/证书属性/g;
+s/认证层次/验证级/g;
+s/人工智慧/人工智能/g;
+s/群组清单/组列表/g;
+s/权利义务/责权利/g;
+s/全字拼写/匹配整个单词/g;
+s/取回档案/取回文件/g;
+s/取代成为/替换为/g;
+s/曲线图列/曲线图栏/g;
+s/区域网路/局域网/g;
+s/区号规则/拨号规则/g;
+s/请按一下/单击/g;
+s/清理退出/清退/g;
+s/清理磁碟/磁盘清理程序/g;
+s/清寒家庭/特困户/g;
+s/倾销核心/核心转储/g;
+s/轻型机车/轻骑/g;
+s/轻松简单/轻松自如/g;
+s/亲职教育/父母学校/g;
+s/切换语系/切换语言/g;
+s/潜在课程/隐形课程/g;
+s/起始传真/传真初始化/g;
+s/起始传送/开始发送/g;
+s/启智学校/弱智学校/g;
+s/启明学校/盲人学校/g;
+s/启动说明/启动帮助/g;
+s/其它厂商/第三方/g;
+s/其他档案/其他文件/g;
+s/普利兹奖/普利策奖/g;
+s/平均价格/均价/g;
+s/平均分摊/均摊/g;
+s/聘雇人员/合同工/g;
+s/品质管制/质量管理/g;
+s/拼字检查/拼写检测/g;
+s/偏好设定/首选项/g;
+s/批次档案/批处理文件/g;
+s/批次档/批处理文件/g;
+s/排气测量/尾气测量/g;
+s/奈及利亚/尼日利亚/g;
+s/内容表单/属性表/g;
+s/内部控制/内控/g;
+s/内部发行/境内发行/g;
+s/目前文件/当前文档/g;
+s/母机资讯/主机信息/g;
+s/莫三比克/莫桑比克/g;
+s/模里西斯/毛里求斯/g;
+s/明星效应/名人效应/g;
+s/密码清单/密码表/g;
+s/密码不符/密码错误/g;
+s/梅尔夫人/梅厄夫人/g;
+s/没有选择/未选定/g;
+s/麦纳马拉/麦克纳马拉/g;
+s/买卖股票/炒股/g;
+s/马林可夫/马林科夫/g;
+s/马尔地夫/马尔代夫/g;
+s/路径太长/路径太深/g;
+s/留职进修/脱产学习/g;
+s/流动户口/临时户口/g;
+s/另存新档/另存为/g;
+s/另存备份/将副本存为/g;
+s/列印工作/打印作业/g;
+s/连线网路/连接网络/g;
+s/连线切断/连接断开/g;
+s/连线传送/连接发送/g;
+s/连到网路/映射到网络/g;
+s/连按两下/双击/g;
+s/立体组织/多维组织/g;
+s/立即重组/开始整理/g;
+s/立即接听/开始应答/g;
+s/李加契夫/利加乔夫/g;
+s/类比数位/模数/g;
+s/雷射唱机/激光唱机/g;
+s/拦截卫星/反卫星/g;
+s/赖比瑞亚/利比里亚/g;
+s/来源路径/源路径/g;
+s/来源格式/源格式/g;
+s/来源档案/源文件/g;
+s/来源代码/源代码/g;
+s/快速向退/快退/g;
+s/快速向前/快进/g;
+s/快速溜冰/速滑/g;
+s/快捷邮件/特快专递/g;
+s/控制装置/控制设备/g;
+s/空中巴士/空中客车/g;
+s/空气污染/大气污染/g;
+s/课堂教学/第一课堂/g;
+s/可执行档/可执行文件/g;
+s/科际整合/跨学科研究/g;
+s/康乐活动/文娱活动/g;
+s/刊授大学/函授大学/g;
+s/开新档案/新建/g;
+s/开始销售/动销/g;
+s/开始位置/起始位置/g;
+s/开启旧档/打开/g;
+s/开启档案/打开文件/g;
+s/卡式电话/磁卡电话/g;
+s/居家护理/家庭病床/g;
+s/精神产品/文艺作品/g;
+s/截止期限/到期日/g;
+s/捷径名称/快捷方式名/g;
+s/捷径参照/快捷方式指向/g;
+s/结束说明/退出帮助/g;
+s/接听逾时/应答超时/g;
+s/接听失败/应答失败/g;
+s/接听模式/应答方式/g;
+s/阶段作业/会话/g;
+s/教学年资/教龄/g;
+s/建议选项/推荐/g;
+s/建立日期/创建时间/g;
+s/建教合作/厂校挂钩/g;
+s/简单日期/短日期/g;
+s/检核位元/检验位/g;
+s/剪辑资料/碎片/g;
+s/剪辑物件/外壳碎片/g;
+s/尖端科技/高新技术/g;
+s/技术转移/技术转让/g;
+s/几内亚亚/几内亚/g;
+s/集市贸易/自由市场/g;
+s/积体电路/集成电路/g;
+s/回给全部/全部回复/g;
+s/换脑筋/转变思想/g;
+s/画面速率/帧传输率/g;
+s/后援投手/替补投手/g;
+s/宏都拉斯/洪都拉斯/g;
+s/核子试爆/核试验/g;
+s/核能电厂/核电站/g;
+s/海桑二世/哈桑二世/g;
+s/哈姆雷特/汉姆雷特/g;
+s/管路交错/管道交叉/g;
+s/观光农业/旅游农业/g;
+s/关系企业/系列企业/g;
+s/瓜地马拉/危地马拉/g;
+s/共享违规/共享冲突/g;
+s/公文旅行/文件旅游/g;
+s/公费旅游/公款旅游/g;
+s/工作日数/劳动日/g;
+s/工作人员/开发人员/g;
+s/工作群组/工作组/g;
+s/工厂休假/厂修/g;
+s/根据档案/根据文件/g;
+s/格瑞那达/格林纳达/g;
+s/戈巴契夫/戈尔巴乔夫/g;
+s/高峰会议/峰会/g;
+s/高等院校/大专院校/g;
+s/复数型态/复数形式/g;
+s/复健医学/康复医学/g;
+s/佛洛伊德/弗洛伊德/g;
+s/封包专用/私有数据包/g;
+s/封包整合/数据包集成/g;
+s/封包切换/分组交换/g;
+s/封包交换/分组交换/g;
+s/分享违规/共享冲突/g;
+s/分隔字元/分隔符/g;
+s/分隔档案/分隔文件/g;
+s/放到最大/最大化/g;
+s/厄瓜多尔/厄瓜多尔/g;
+s/多明尼加/多米尼加/g;
+s/对话方块/对话框/g;
+s/杜布西克/杜布切克/g;
+s/杜布莱宁/多勃雷宁/g;
+s/动画游标/动画光标/g;
+s/钉子精神/钻研精神/g;
+s/调整栏位/调整列宽/g;
+s/调入拨给/调拨/g;
+s/电子看板/电子屏幕/g;
+s/电源管制/电源方案/g;
+s/电源不足/电力不足/g;
+s/电邮论坛/邮件列表/g;
+s/电脑择友/电脑红娘/g;
+s/电脑名称/计算机名/g;
+s/电脑大夫/电脑诊断/g;
+s/第二医学/临床医学/g;
+s/地方小吃/风味小吃/g;
+s/地方税务/地税/g;
+s/低收入户/特困户/g;
+s/低阶语言/低级语言/g;
+s/等级名称/等级名/g;
+s/登录基码/注册表项/g;
+s/登录错误/注册表错误/g;
+s/登录编辑/注册编/g;
+s/得奖产品/受奖产品/g;
+s/道琼指数/道·琼斯指数/g;
+s/倒数计时/倒计时/g;
+s/档名无效/非法文件名/g;
+s/档案总管/资源管理器/g;
+s/档案型态/文件型态/g;
+s/档案系统/文件系统/g;
+s/档案锁定/文件锁定/g;
+s/档案清单/文件列表/g;
+s/档案名称/文件名/g;
+s/档案类型/文件类型/g;
+s/档案关联/文件关联/g;
+s/档案个数/文件数目/g;
+s/档案长度/文件大小/g;
+s/当机意外/死机/g;
+s/单一乐器/单乐器/g;
+s/单数型态/单数形式/g;
+s/大学联考/高考/g;
+s/大型巴士/大巴/g;
+s/大会标志/会标/g;
+s/搭计程车/打的/g;
+s/错误检查/查错/g;
+s/存取许可/访问权限/g;
+s/存取日期/访问时间/g;
+s/存档类型/保存类型/g;
+s/从新起动/重新启动/g;
+s/次级市场/二级市场/g;
+s/此一档案/此一文件/g;
+s/磁碟标签/磁盘卷标/g;
+s/垂直并排/纵向平铺窗口/g;
+s/传送邮件/发送邮件/g;
+s/传送延后/发送延迟/g;
+s/储存文件/保存文档/g;
+s/储存档案/保存文件/g;
+s/出钱出物/出血/g;
+s/程序档案/程序文件/g;
+s/程式群组/程序组/g;
+s/程式名称/程序名/g;
+s/程式档案/程序文件/g;
+s/产官学研/产学研/g;
+s/参照资料/参考数据/g;
+s/参照追踪/跟踪引用/g;
+s/参数设定/参数配置/g;
+s/参数区块/参数块/g;
+s/彩色软片/彩卷/g;
+s/布隆费德/布龙菲尔德/g;
+s/不要删除/不删除/g;
+s/不可使用/无法使用/g;
+s/不得要领/摸不着门道/g;
+s/播放程式/播放器/g;
+s/拨号进度/拨号过程/g;
+s/标准选择/正常选定/g;
+s/标准拖曳/正常拖放/g;
+s/标准视窗/常规窗口/g;
+s/标准工资/基本工资/g;
+s/变更图示/更改图标/g;
+s/变更图示/改变图标/g;
+s/变更设定/更改设置/g;
+s/编辑连结/编辑链接/g;
+s/编辑档案/编辑文件/g;
+s/本端路径/本地路径/g;
+s/背景作业/后台操作/g;
+s/报值挂号/保价信函/g;
+s/保职停薪/停薪留职/g;
+s/保留比赛/改期续赛/g;
+s/保存档案/保存文件/g;
+s/包米迪尼/布迈丁/g;
+s/帮助文档/帮助文件/g;
+s/版面设定/页面设置/g;
+s/柏林围墙/柏林墙/g;
+s/按键对应/键盘映射/g;
+s/安装移除/安装卸载/g;
+s/安全上垒/安全进垒/g;
+s/艾森斯坦/爱森斯坦/g;
+s/C型肝炎/丙肝/g;
+s/B型肝炎/乙肝/g;
+s/A型肝炎/甲肝/g;
+
+
+s/尊严死/安乐死/g;
+s/最佳化/优化/g;
+s/组态档/配置文件/g;
+s/自助店/超市/g;
+s/自由式/自由泳/g;
+s/字型档/字体文件/g;
+s/字码页/代码页/g;
+s/姊妹市/姐妹城/g;
+s/子夜场/夜电影/g;
+s/资料库/数据库/g;
+s/资料夹/文件夹/g;
+s/资料档/数据文件/g;
+s/桌上型/台式机/g;
+s/状态列/状态栏/g;
+s/状态档/状态文件/g;
+s/转捩点/转折点/g;
+s/转播站/插转台/g;
+s/抓空子/抽空/g;
+s/著作权/版权/g;
+s/主电脑/主机/g;
+s/中文字/汉字/g;
+s/中继档/图元文件/g;
+s/智慧型/智能型/g;
+s/制造业/第二产业/g;
+s/指令列/命令行/g;
+s/执行绪/线程/g;
+s/执行档/执行文件/g;
+s/侦试到/检测到/g;
+s/招牌菜/商标菜/g;
+s/暂时档/临时文件/g;
+s/暂存档/临时文件/g;
+s/在地人/本地人/g;
+s/再重试/再试试/g;
+s/韵律裤/健美裤/g;
+s/原子笔/圆珠笔/g;
+s/预售屋/期房/g;
+s/预设值/默认值/g;
+s/预设值/默认值/g;
+s/育幼院/保育院/g;
+s/羽毛衣/滑雪衫/g;
+s/有成就/成气候/g;
+s/游览车/旅游车/g;
+s/优酪乳/酸牛奶/g;
+s/用户端/客户端/g;
+s/永远不/从不/g;
+s/硬坐位/硬座/g;
+s/硬碟机/硬盘驱动器/g;
+s/映射站/镜像站/g;
+s/影像档/映像/g;
+s/影节/电影节/g;
+s/营业税/利税/g;
+s/印表机/打印机/g;
+s/隐藏档/隐藏文件/g;
+s/引导盘/启动盘/g;
+s/音源线/线路输入/g;
+s/音效卡/声卡/g;
+s/音带/录音带/g;
+s/易开罐/易拉罐/g;
+s/易开罐/易拉罐/g;
+s/移除档/删除文件/g;
+s/依状态/按状态/g;
+s/依主题/按主题/g;
+s/依优先/按优先/g;
+s/依信件/按信件/g;
+s/依位置/按位置/g;
+s/依未读/按未读/g;
+s/依讨论/按讨论/g;
+s/依说明/按说明/g;
+s/依收信/按收信/g;
+s/依日期/按日期/g;
+s/依旗标/按旗标/g;
+s/依昵称/按昵称/g;
+s/依内容/按属性/g;
+s/依名称/按名称/g;
+s/依类型/按类型/g;
+s/依卷标/按卷标/g;
+s/依寄信/按寄信/g;
+s/依公司/按公司/g;
+s/依附件/按附件/g;
+s/依服务/按服务/g;
+s/依电子/按电子/g;
+s/依电话/按电话/g;
+s/依大小/按大小/g;
+s/依城市/按城市/g;
+s/依标签/按卷标/g;
+s/叶尔钦/叶利钦/g;
+s/要继续/是否继续/g;
+s/养老院/托老所/g;
+s/演奏者/艺术家/g;
+s/颜色酒/色酒/g;
+s/压缩档/压缩文件/g;
+s/选单列/选单栏/g;
+s/悬浮液/乳浊液/g;
+s/许可证/批文/g;
+s/袖珍本/口袋书/g;
+s/星点/一点儿/g;
+s/信件箱/邮件箱/g;
+s/信件匣/信件箱/g;
+s/新增为/添加为/g;
+s/新增到/添加到/g;
+s/新捷径/新快捷方式/g;
+s/辛巴威/津巴布韦/g;
+s/小先生/小老师/g;
+s/小太阳/独生子/g;
+s/小算盘/计算器/g;
+s/小时钟/时钟/g;
+s/小明星/稚星/g;
+s/小皇帝/独生子/g;
+s/小红书/毛语录/g;
+s/相容性/兼容性/g;
+s/显示卡/显卡/g;
+s/闲聊天/闲叨牙/g;
+s/夏斯屈/夏斯特里/g;
+s/夏米尔/沙米尔/g;
+s/下一笔/下一条/g;
+s/瑕疵品/残次品/g;
+s/细明体/宋体/g;
+s/系统档/系统文件/g;
+s/席哈克/希拉克/g;
+s/吸菸族/菸坛/g;
+s/无限大/无穷大/g;
+s/文字行/文本行/g;
+s/文字档/文本文件/g;
+s/文档名/文件名称/g;
+s/位置列/位置栏/g;
+s/位元组/字节/g;
+s/位元图/位图/g;
+s/位元率/比特率/g;
+s/未命名/无标题/g;
+s/未来学/预测学/g;
+s/卫星国/附庸国/g;
+s/唯读档/只读文件/g;
+s/微电脑/微机/g;
+s/网站台/站点/g;
+s/万那杜/瓦努阿图/g;
+s/外野手/外场手/g;
+s/外野审/外场裁判员/g;
+s/吐瓦鲁/图瓦卢/g;
+s/图像档/图像文件/g;
+s/图示档/图标文件/g;
+s/透平机/涡轮机/g;
+s/投影片/幻灯片/g;
+s/投影机/投影仪/g;
+s/通讯闸/网关/g;
+s/通讯闸/网关/g;
+s/通学生/走读生/g;
+s/亭式车站/候车亭/g;
+s/提供者/供应商/g;
+s/讨海人/海碰子/g;
+s/逃漏税/跑漏/g;
+s/太阳炉/太阳灶/g;
+s/太空站/航天站/g;
+s/太空战/宇宙空间战/g;
+s/太空衣/宇宙服/g;
+s/太空梭/航天飞机/g;
+s/太空人/宇航员/g;
+s/太空船/宇宙飞船/g;
+s/锁定档/锁定文件/g;
+s/索引片/选项卡/g;
+s/索引档/索引文件/g;
+s/速食面/方便面/g;
+s/苏利南/苏里南/g;
+s/苏卡诺/苏加诺/g;
+s/饲料鸡/肉鸡/g;
+s/伺服器/服务器/g;
+s/伺服端/服务端/g;
+s/私房钱/小金库/g;
+s/说明档/说明文件/g;
+s/数据机/调制解调器/g;
+s/输入键/回车键/g;
+s/输入档/输入文件/g;
+s/受薪族/吃官粮/g;
+s/使用者/用户/g;
+s/史托夫/斯多夫/g;
+s/食用鸽/肉鸽/g;
+s/时间线/时间轴/g;
+s/狮子山/塞拉利昂/g;
+s/施亚奴/西哈努克/g;
+s/圣文森/圣文森特/g;
+s/省亲假/探亲假/g;
+s/生命线/救命电话/g;
+s/生产线/流水线/g;
+s/摄影机/摄像机/g;
+s/设定值/设置数值/g;
+s/烧录器/刻录机/g;
+s/尚比亚/赞比亚/g;
+s/上一笔/上一条/g;
+s/商友/合伙人/g;
+s/沙达特/萨达特/g;
+s/沙布瑞/萨布里/g;
+s/扫瞄器/扫描仪/g;
+s/扫描器/扫描仪/g;
+s/三温暖/桑拿浴/g;
+s/塞席尔/塞舌尔/g;
+s/萨希尔/查布尔/g;
+s/软碟机/软盘驱动器/g;
+s/荣誉榜/光荣榜/g;
+s/确定要/确实要/g;
+s/权保法/消保法/g;
+s/全萤幕/全屏/g;
+s/全垒打/本垒跑/g;
+s/区域网/局域网/g;
+s/桥接器/网桥/g;
+s/前置码/前缀/g;
+s/千里达/特立尼达和多巴哥/g;
+s/气垫鞋/空调鞋/g;
+s/普通生/平价生/g;
+s/蒲隆地/布隆迪/g;
+s/破码器/解码器/g;
+s/平飞球/平直球/g;
+s/捧爷/马屁精/g;
+s/配接卡/适配器/g;
+s/裴瑞斯/佩雷斯/g;
+s/庞克族/朋客/g;
+s/庞毕度/篷皮杜/g;
+s/暖机中/准备中/g;
+s/纽西兰/新西兰/g;
+s/尼迈瑞/尼迈里/g;
+s/尼克森/尼克松/g;
+s/脑库/智囊团/g;
+s/内码表/代码页/g;
+s/目的地/目标/g;
+s/莫札特/莫差特/g;
+s/莫布杜/蒙博托/g;
+s/末端的/行没的/g;
+s/命令稿/脚本/g;
+s/闵托夫/明托夫/g;
+s/免洗筷/卫生筷/g;
+s/米德朗/密特朗/g;
+s/孟岱尔/蒙代尔/g;
+s/门子货/走后门/g;
+s/没下巴/口无遮拦/g;
+s/忙线中/正忙/g;
+s/忙碌中/正忙/g;
+s/慢运动/慢动作/g;
+s/麦美伦/麦克米伦/g;
+s/马铃薯/土豆/g;
+s/马拉威/马拉维/g;
+s/马可仕/马科斯/g;
+s/罗吉斯/罗杰斯/g;
+s/绿内障/青光眼/g;
+s/铝箔包/软包装/g;
+s/路径档/路径文件/g;
+s/录影带/录像带/g;
+s/卢默贝/卢蒙巴/g;
+s/卢安达/卢旺达/g;
+s/刘易士/刘易斯/g;
+s/溜冰鞋/旱冰鞋/g;
+s/溜冰场/旱冰场/g;
+s/零组件/元器件/g;
+s/列印中/正在打印/g;
+s/列印档/打印文件/g;
+s/列表机/打印机/g;
+s/连接埠/端口/g;
+s/连接埠/端口/g;
+s/冷藏库/冷库/g;
+s/老油子/老油条/g;
+s/老人院/托老所/g;
+s/老抠/吝啬鬼/g;
+s/赖索托/莱索托/g;
+s/来源码/源代码/g;
+s/来源档/源文件/g;
+s/扩音器/扬声器/g;
+s/宽心丸/定心丸/g;
+s/快速面|速食面/方便面/g;
+s/快速键/快捷键/g;
+s/快速地/快捷地/g;
+s/控制台/控制面板/g;
+s/控制码/句柄/g;
+s/空服员/空姐/g;
+s/空白键/空格键/g;
+s/克努玛/恩克鲁玛/g;
+s/科技界/科坛/g;
+s/柯锡金/柯西金/g;
+s/烤火费/取暖费/g;
+s/卡通片/动画片/g;
+s/卡斯楚/卡斯特罗/g;
+s/卡森姆/卡塞姆/g;
+s/卡其布/卡叽布/g;
+s/喀麦隆/喀麦隆/g;
+s/救生盒/急救箱/g;
+s/金钟奖/飞天奖/g;
+s/金马奖/金鸡奖/g;
+s/金耳朵/音响发烧友/g;
+s/介绍费/好处费/g;
+s/解析度/分辨率/g;
+s/捷径方式/快捷方式/g;
+s/教育界/教坛/g;
+s/交谈式/交互式/g;
+s/交流道/立交桥/g;
+s/剪贴簿/剪贴板/g;
+s/驾训班/驾校/g;
+s/贾梅耶/杰马耶勒/g;
+s/贾拉汉/卡拉汉/g;
+s/家目录/主目录/g;
+s/加强班/关心班/g;
+s/加菜金/过节费/g;
+s/加班车/专列/g;
+s/技术师/技术员/g;
+s/纪录档/日志文件/g;
+s/记忆体/内存/g;
+s/记忆体/内存/g;
+s/记录档/日志文件/g;
+s/计程车/出租车/g;
+s/几内亚/几内亚/g;
+s/吉布地/吉布提/g;
+s/货物税/产品税/g;
+s/混血车/拼装车/g;
+s/婚外情/婚外恋/g;
+s/汇流排/总线/g;
+s/回传值/返回值/g;
+s/滑水道/水滑梯/g;
+s/华勒沙/瓦文萨/g;
+s/华德翰/瓦尔德海姆/g;
+s/护目镜/视保屏/g;
+s/蝴蝶装/蝙蝠衫/g;
+s/呼叫器/BP机/g;
+s/后段班/晚班/g;
+s/何梅尼/霍梅尼/g;
+s/好采头/开门红/g;
+s/函式库/程序库/g;
+s/滚地球/地滚球/g;
+s/光盘机/光驱/g;
+s/光碟机/光驱/g;
+s/观光局/旅游局/g;
+s/股票族/股民/g;
+s/古柯硷/可卡因/g;
+s/够瞧的/够受的/g;
+s/共用级/共享级/g;
+s/恭喜您/祝贺您/g;
+s/功能表/菜单/g;
+s/公事包/公文包/g;
+s/公车站/公交站/g;
+s/工作室/演播室/g;
+s/工作列/任务栏/g;
+s/工业区/开发区/g;
+s/工具列/工具栏/g;
+s/工具列/工具栏/g;
+s/工具列/工具栏/g;
+s/工代会/职工代表大会/g;
+s/更名/重命名/g;
+s/格雷哥/格里格/g;
+s/格达费/卡扎菲/g;
+s/戈慕卡/哥穆尔卡/g;
+s/高传真/高保真/g;
+s/感知器/传感器/g;
+s/赶流行/赶时髦/g;
+s/甘乃迪/肯尼迪/g;
+s/甘比亚/冈比亚/g;
+s/概要档/概要文件/g;
+s/盖亚纳/圭亚那/g;
+s/该档案/该文件/g;
+s/副行程/子进程/g;
+s/副档名/扩展名/g;
+s/副程序/子进程/g;
+s/服侍器/服务器/g;
+s/佛克纳/福克纳/g;
+s/风派/骑墙派/g;
+s/分散式/分布式/g;
+s/分隔档/分隔页文件/g;
+s/放牛班/慢班/g;
+s/仿冒品/假货/g;
+s/方向键/箭头键/g;
+s/范例页/样例页/g;
+s/范法尼/范范尼/g;
+s/犯罪率/发案率/g;
+s/反视镜/后视镜/g;
+s/反安装/卸载/g;
+s/繁体字/正体字/g;
+s/发照者/发行人/g;
+s/发财车/的士头/g;
+s/二元码/二进制码/g;
+s/二轮片/复映片/g;
+s/二极体/二极管/g;
+s/厄瓜多/厄瓜多尔/g;
+s/多渠道/多路管道/g;
+s/多介质/多媒体/g;
+s/对应表/镜像表/g;
+s/独苗/独生女/g;
+s/读书班/干训班/g;
+s/调理包/方便菜/g;
+s/吊点滴/输液/g;
+s/电晶体/晶体管/g;
+s/电话费/话费/g;
+s/电扶梯/滚梯/g;
+s/点字书/盲文/g;
+s/点阵图/位图/g;
+s/点两下/双击/g;
+s/第一笔/第一条/g;
+s/第三波/第三次浪潮/g;
+s/迪斯可/迪斯科/g;
+s/低能儿/弱智儿童/g;
+s/低钠盐/代用盐/g;
+s/低常儿童/智障儿/g;
+s/等级低/低档/g;
+s/等化器/均衡器/g;
+s/登录值/注册表值/g;
+s/登录点/输入指针/g;
+s/登记的/已注册的/g;
+s/登机牌/登机证/g;
+s/德布西/德彪西/g;
+s/单元剧/单本剧/g;
+s/戴斯亭/德斯坦/g;
+s/大礼拜/双休日/g;
+s/打椿脚/安钉子/g;
+s/达文西/达芬奇/g;
+s/促销函/广告信/g;
+s/次基码/子项/g;
+s/磁碟机/驱动器/g;
+s/纯文字/文本/g;
+s/吹喇叭/拍马屁/g;
+s/传送中/正在传输/g;
+s/出版品/出版物/g;
+s/程式化/编程/g;
+s/程式档/程序文件/g;
+s/超音波/超声波/g;
+s/超连结/超链接/g;
+s/抄肥/赚外快/g;
+s/长条图/条形图/g;
+s/长档名/长文件名/g;
+s/柴契尔/撒切尔/g;
+s/查询值/查询数值/g;
+s/步谈机/对讲机/g;
+s/布兰德/勃朗特/g;
+s/布拉吉/连衣裙/g;
+s/布加宁/布尔加宁/g;
+s/不织布/无纺布/g;
+s/不相容/不兼容/g;
+s/不明的/未知的/g;
+s/不高明/二把刀/g;
+s/卜卡萨/博卡萨/g;
+s/波札那/博茨瓦纳/g;
+s/表示式/表达式/g;
+s/毕卡索/毕加索/g;
+s/背景图/墙纸/g;
+s/备份档/备份文件/g;
+s/保证书/责任状/g;
+s/保暖杯/保温杯/g;
+s/包吉巴/布尔吉巴/g;
+s/包戈尼/波德戈尔内/g;
+s/白辽士/柏辽兹/g;
+s/巴罗克/巴洛克/g;
+s/巴勒维/巴列维/g;
+s/奥蒂嘉/奥尔特加/g;
+s/奥布特/奥博特/g;
+s/按一下/单击/g;
+s/按两下/双击/g;
+s/安利尔/恩里莱/g;
+s/安地卡/安提瓜/g;
+s/爱滋病/艾滋病/g;
+s/艾育布/阿尤布·汗/g;
+s/艾德诺/阿登纳/g;
+s/阿叶德/阿连德/g;
+s/阿塞德/阿萨德/g;
+# s/回撤消/重做/g;
+# s/大黑熊/黑瞎子/g;
+# s/错不了/没跑儿/g;
+# s/吹喇叭/戴高帽/g;
+# s/产官学/官产学/g;
+
+
+s/原始(程式)?码/源代码/g;
+s/映射站(台)?/镜像站点/g;
+s/文字(?=模式|编辑)/文本/g;
+s/网际网(络|路)?/互联网/g;
+s/视像(档)?/视频/g;
+s/设定档(?:案)?/配置文件/g;
+s/开机(?:盘|碟|软盘)/启动盘/g;
+s/卷轴(列)?/滚动条/g;
+s/滑动钮(?!扣)/滚动条/g;
+s/分割(?:区)/分区/g;
+s/X~视窗/X~窗口/g;
+s/“输入”键/“回车”键/g;
+s/``输入''键/“回车”键/g;
+s/(纯)?文字档(案)?/文本文件/g;
+s/(?:启|起)动磁(?:碟|片)/启动盘/g;
+s/(?:列|印)表机/打印机/g;
+s/(?:救援|急救)磁(?:碟|片)/急救盘/g;
+
+
+# 把全部「著」字转为「着」……
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)著/$1着/);
+# 然后再在适当的词语,把「着」字转回「著」……
+# 著作、著者、著名、著述、著重、著书
+# 所著、土著、显著、编著
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*(?:所|土|显|编))着/$1著/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)着(?=作|者|名|述|重|书)/$1著/);
+
+1 while (s/^((?:[\x01-\x7F]|[\x80-\xFF].)*)经由(?!于)/$1通过/);
+1 while (s/^((?:[\x01-\x7F]|[\x80-\xFF].)*)连线(?!索)/$1连接/);
+1 while (s/^((?:[\x01-\x7F]|[\x80-\xFF].)*)变数(?!据)/$1变量/);
+1 while (s/^((?:[\x01-\x7F]|[\x80-\xFF].)*)文件(?!夹)/$1文档/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)用家(?!庭|政)/$1用户/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)列印(?!刷)/$1打印/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)连(?=络|系)/$1联/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)进阶(?!段|梯)/$1高级/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)解(?:析|像)度/$1分辨率/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)(?=点|单|双)按/$1击/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)(?<!方)程式/$1程序/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)(?<!发行)套件/$1软件包/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*(软|硬|光|磁|Zip~))碟/$1盘/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*(软|硬))体/$1件/);
+
+s/(找|搜)寻/搜索/g;
+s/(?<!检|堪)查核(?!对|心)/核查/g;
+
+s/作业/操作/g;
+s/组态/配置/g;
+s/组建/编译版/g;
+s/自订/定制/g;
+s/字元/字符/g;
+s/字型/字体/g;
+s/字集/字符集/g;
+s/字串/字符串/g;
+s/资优/超智/g;
+s/资料/数据/g;
+s/桌布/墙纸/g;
+s/追踪/跟踪/g;
+s/装载/加载/g;
+s/转信/转发/g;
+s/转场/过渡/g;
+s/专案/项目/g;
+s/注解/备注/g;
+s/伫列/队列/g;
+s/属性/特性/g;
+s/主旨/主题/g;
+s/周边/外围/g;
+s/重设/重置/g;
+s/中阶/中端/g;
+s/中断/断开/g;
+s/置中/居中/g;
+s/置换/替换/g;
+s/指令/命令/g;
+s/直印/纵向/g;
+s/执行/运行/g;
+s/知会/通知/g;
+s/支援/支持/g;
+s/支援/支持/g;
+s/整合/集成/g;
+s/侦错/调试/g;
+s/侦测/检测/g;
+s/侦测/检测/g;
+s/遮罩/掩码/g;
+s/站台/站点/g;
+s/站台/站点/g;
+s/詹森/约翰逊/g;
+s/闸道/网关/g;
+s/增加/添加/g;
+s/再试/重试/g;
+s/远端/远程/g;
+s/远端/远程/g;
+s/元件/组件/g;
+s/预设/默认/g;
+s/预设/默认/g;
+s/语系/语境/g;
+s/宇谭/吴丹/g;
+s/宇努/吴努/g;
+s/逾时/超时/g;
+s/游标/光标/g;
+s/游标/光标/g;
+s/邮差/投递员/g;
+s/优育/优生/g;
+s/永远/始终/g;
+s/硬碟/硬盘/g;
+s/萤幕/屏幕/g;
+s/英吋/英寸/g;
+s/引言/引用/g;
+s/引数/参数/g;
+s/音讯/音频/g;
+s/音效/音频/g;
+s/役龄/兵龄/g;
+s/遗弃/孤立/g;
+s/一页/单页/g;
+s/页尾/页脚/g;
+s/页首/页眉/g;
+s/页%u/第%u页/g;
+s/叶门/也门/g;
+s/叶慈/叶芝/g;
+s/业余/工余/g;
+s/摇杆/游戏杆/g;
+s/眼铐/眼镜/g;
+s/眼格/眼界/g;
+s/延伸/扩展/g;
+s/讯息/消息/g;
+s/讯号/信号/g;
+s/选取/选定/g;
+s/选单/菜单/g;
+s/选单/菜单/g;
+s/休眠/冬眠/g;
+s/信箱/邮箱/g;
+s/信头/信件头/g;
+s/信件/邮件/g;
+s/新增/新建/g;
+s/新信/新邮件/g;
+s/撷取/捕获/g;
+s/谐星/笑星/g;
+s/协定/协议/g;
+s/效能/性能/g;
+s/小计/总计/g;
+s/宵夜/夜餐/g;
+s/相容/兼容/g;
+s/相容/兼容/g;
+s/线上/在线/g;
+s/闲置/空闲/g;
+s/细节/明细/g;
+s/奚斯/希斯/g;
+s/矽谷/硅谷/g;
+s/矽肺/尘肺/g;
+s/物件/对象/g;
+s/物件/对象/g;
+s/屋龄/房龄/g;
+s/汶莱/文莱达鲁萨兰/g;
+s/文法/语法/g;
+s/文档(?!案)/文件/g;
+s/位址/地址/g;
+s/位址/地址/g;
+s/位在/位于/g;
+s/位元/位/g;
+s/唯写/只写/g;
+s/唯书/死读书/g;
+s/唯读/只读/g;
+s/网域/域/g;
+s/网路/网络/g;
+s/网路/网络/g;
+s/外野/外场/g;
+s/外菸/洋菸/g;
+s/脱队/掉队/g;
+s/拖曳/拖放/g;
+s/图素/像素/g;
+s/图示/图标/g;
+s/图示/图标/g;
+s/透过/通过/g;
+s/听候/侦听/g;
+s/贴上/粘贴/g;
+s/跳级/跳读/g;
+s/跳出/弹出/g;
+s/特许/特批/g;
+s/特效/特技/g;
+s/套用/应用/g;
+s/套用/应用/g;
+s/套服/套装/g;
+s/陶利/杜尔/g;
+s/逃考/逃学/g;
+s/碳粉/墨粉/g;
+s/摊位/摊床/g;
+s/摊贩/摊主/g;
+s/太空/航天/g;
+s/所在/位置/g;
+s/缩排/缩进/g;
+s/缩排/缩进/g;
+s/说明/帮助/g;
+s/舒兹/舒尔茨/g;
+s/手动/手工/g;
+s/试著/试着/g;
+s/试片/样片/g;
+s/试教/试课/g;
+s/视讯/视频/g;
+s/视窗/窗口/g;
+s/士敏/土水泥/g;
+s/识别/标识/g;
+s/剩下/剩余/g;
+s/升幂/升序/g;
+s/设定/配置/g;
+s/烧录/刻录/g;
+s/商嫂/老板娘/g;
+s/杀价/侃价/g;
+s/色彩/颜色/g;
+s/色板/调色板/g;
+s/扫瞄/扫描/g;
+s/扫黄/打黄/g;
+s/扫黑/打黑/g;
+s/萨伊/扎伊尔/g;
+s/萨特/沙特/g;
+s/软体/软件/g;
+s/软片/胶卷/g;
+s/软碟/软盘/g;
+s/融洽/投洽/g;
+s/容许/允许/g;
+s/日班/白班/g;
+s/认证/验证/g;
+s/热卖/热销/g;
+s/群组/组/g;
+s/群组/工作组/g;
+s/缺省/默认/g;
+s/缺货/脱销/g;
+s/全形/全角/g;
+s/取样/采样/g;
+s/取得/获取/g;
+s/取代/替换/g;
+s/清理/清空/g;
+s/清单/列表/g;
+s/清唱/乾唱/g;
+s/亲戚/胞波/g;
+s/乔塞/乔叟/g;
+s/强度/烈度/g;
+s/枪手/替考/g;
+s/潜力/潜质/g;
+s/牵线/搭桥/g;
+s/洽询/联系/g;
+s/起始/初始/g;
+s/旗号/标志/g;
+s/齐左/左对齐/g;
+s/齐中/居中/g;
+s/齐右/右对齐/g;
+s/溥玛/富马/g;
+s/评卷/阅卷/g;
+s/平装/简装/g;
+s/平行/并行/g;
+s/平剧/京剧/g;
+s/频宽/带宽/g;
+s/拼字/拼写/g;
+s/批销/批发/g;
+s/配演/配角/g;
+s/泡面/方便面/g;
+s/拍品/拍卖的物品/g;
+s/诺鲁/瑙鲁/g;
+s/暖机/预热/g;
+s/农保/农险/g;
+s/牛舍/牛棚/g;
+s/年资/工龄/g;
+s/尼温/奈温/g;
+s/嫩肤/护肤/g;
+s/纳塞/纳赛尔/g;
+s/纳奇/纳吉/g;
+s/那麽/那么/g;
+s/内野/内场/g;
+s/内销/内贸/g;
+s/内含/包括/g;
+s/目前/当前/g;
+s/莫洛/莫罗/g;
+s/模组/模块/g;
+s/模组/模块/g;
+s/模拟/仿真/g;
+s/面料/布料/g;
+s/盲点/盲区/g;
+s/马利/马里/g;
+s/落伍/调队/g;
+s/轮带/轮胎/g;
+s/略过/跳过/g;
+s/路警/交通警察/g;
+s/录影/录像/g;
+s/龙诺/朗诺/g;
+s/零件/散件/g;
+s/聆听/监听/g;
+s/灵活/活泛/g;
+s/临检/突查/g;
+s/列印/打印/g;
+s/列印/打印/g;
+s/寮国/老挝/g;
+s/两页/双页/g;
+s/链结/链接/g;
+s/恋人/对象/g;
+s/联招/统招/g;
+s/联考/统考/g;
+s/连络/联系/g;
+s/连结/链接/g;
+s/黎利/黎萨尔/g;
+s/离职/脱产/g;
+s/离开/退出/g;
+s/离开/退出/g;
+s/冷面/凉面/g;
+s/类比/模拟/g;
+s/蕾丝/花边/g;
+s/雷射/激光/g;
+s/雷根/里根/g;
+s/浪头/潮流/g;
+s/栏位/区域/g;
+s/来源/源/g;
+s/拉远/缩小/g;
+s/拉曼/拉赫曼/g;
+s/拉近/放大/g;
+s/阔人/大款/g;
+s/快销/畅销/g;
+s/快取/高速缓存/g;
+s/快锅/高压锅/g;
+s/快递/速递/g;
+s/肯亚/肯尼亚/g;
+s/柯尔/科尔/g;
+s/看俏/行俏/g;
+s/刊授/函授/g;
+s/开启/打开/g;
+s/卡达/卡塔尔/g;
+s/卷动/滚动/g;
+s/捐款/捐资/g;
+s/巨集/宏/g;
+s/警示/警报/g;
+s/警察/公安/g;
+s/精灵/向导/g;
+s/晶片/芯片/g;
+s/进帐/进分/g;
+s/进位/进制/g;
+s/进阶/高级/g;
+s/近端/本地/g;
+s/介面/界面/g;
+s/结束/退出/g;
+s/揭彩/剪彩/g;
+s/接洽/联系/g;
+s/绞车/卷扬机/g;
+s/降幂/降序/g;
+s/渐层/渐变/g;
+s/建置/编译版/g;
+s/建立/创建/g;
+s/检视/查看/g;
+s/检举/举报/g;
+s/剪下/剪切/g;
+s/迦纳/加纳/g;
+s/夹纸/卡纸/g;
+s/加入/添加/g;
+s/加彭/加蓬/g;
+s/寄出/发送/g;
+s/计画/计划/g;
+s/几内/几内亚/g;
+s/积案/遗案/g;
+s/货柜/集装箱/g;
+s/或是/或者/g;
+s/活猪/生猪/g;
+s/汇入/导入/g;
+s/汇出/导出/g;
+s/回信/回复/g;
+s/回馈/反馈/g;
+s/回复/恢复/g;
+s/回放/重播/g;
+s/灰阶/灰度/g;
+s/画面/帧/g;
+s/滑鼠/鼠标/g;
+s/花头/噱头/g;
+s/护贝/过塑/g;
+s/呼叫/调用/g;
+s/横印/横向/g;
+s/黑信/匿名信/g;
+s/寒害/冷害/g;
+s/海撒/海葬/g;
+s/国语/普通话/g;
+s/国菸/国产香菸/g;
+s/国剧/京剧/g;
+s/国病/社会弊病/g;
+s/滚棒/滚动条/g;
+s/光碟/光盘/g;
+s/惯窃/惯偷/g;
+s/关防/公章/g;
+s/怪手/掘土机/g;
+s/沟通/通信/g;
+s/公厘/毫米/g;
+s/工本/成本/g;
+s/更名/重命名/g;
+s/葛摩/科摩罗/g;
+s/阁下/您/g;
+s/告发/举报/g;
+s/高阶/高端/g;
+s/高级/高档/g;
+s/赶俏/走俏/g;
+s/改寄/重定向/g;
+s/该档/该文件/g;
+s/覆写/覆盖/g;
+s/覆叠/重叠/g;
+s/复原/撤消/g;
+s/复古/回潮/g;
+s/复盖/覆盖/g;
+s/封包/数据包/g;
+s/分割/拆分/g;
+s/费瑟/费萨尔/g;
+s/方块/框/g;
+s/梵谷/凡高/g;
+s/范锡/万斯/g;
+s/范本/模板/g;
+s/蕃茄/西红柿/g;
+s/发屋/发廊/g;
+s/额外/附加的/g;
+s/对映/镜像/g;
+s/对开/单挑/g;
+s/断线/脱机/g;
+s/短函/条子/g;
+s/动作/操作/g;
+s/东加/汤加/g;
+s/定址/编址/g;
+s/订做/自定义/g;
+s/顶价/天价/g;
+s/碟片/盘片/g;
+s/碟机/驱动器/g;
+s/掉价/跌价/g;
+s/掉档/降低等级/g;
+s/调班/倒休/g;
+s/电邮/邮件/g;
+s/电毯/电热毯/g;
+s/电脑/记算机/g;
+s/电脑/计算机/g;
+s/递回/递归/g;
+s/地陪/导游/g;
+s/底线/下划线/g;
+s/底板价/底价/g;
+s/低阶/低端/g;
+s/登入/登录/g;
+s/登入/登录/g;
+s/登录/注册/g;
+s/登记/注册/g;
+s/登出/注销/g;
+s/登出/注销/g;
+s/得标/中标/g;
+s/盗垒/偷垒/g;
+s/导筒/话筒/g;
+s/档名/文件名/g;
+s/档案(?!件)/文件/g;
+s/当机/挂起/g;
+s/单音/单声道/g;
+s/戴扬/达扬/g;
+s/待青/待业/g;
+s/呆帐/坏帐/g;
+s/打私/缉私/g;
+s/打非/打击犯罪/g;
+s/存取/访问/g;
+s/存钱/储蓄/g;
+s/此档/此文件/g;
+s/此处/当前位置/g;
+s/磁片/软盘/g;
+s/垂片/选项卡/g;
+s/床戏/床上戏/g;
+s/传送/发送/g;
+s/传回/返回/g;
+s/储存/保存/g;
+s/除错/调试/g;
+s/出包/出面承包/g;
+s/翅子/鱼翅/g;
+s/程式/程序/g;
+s/成屋/现房/g;
+s/晨运/晨练/g;
+s/陈情/上访/g;
+s/车照/驾照/g;
+s/巢状/嵌套法/g;
+s/常量/常数/g;
+s/查阅/查看/g;
+s/查询/搜索/g;
+s/查体/体检/g;
+s/查德/乍得/g;
+s/层级/级别/g;
+s/餐鸽/肉鸽/g;
+s/裁断/截断/g;
+s/部份/部分/g;
+s/布希/布什/g;
+s/不详/未知/g;
+s/捕手/接手/g;
+s/波道/频道/g;
+s/拨接/连接/g;
+s/病休/请病假/g;
+s/并列/并口/g;
+s/冰糕/冰淇淋/g;
+s/冰棒/冰棍/g;
+s/宾馆/招待所/g;
+s/标示/标记/g;
+s/标签/卷标/g;
+s/辨析/解析/g;
+s/变更/更改/g;
+s/便当/盒饭/g;
+s/边界/边框/g;
+s/臂章/袖标/g;
+s/壁纸/墙纸/g;
+s/壁报/墙报/g;
+s/比金/贝京/g;
+s/贝南/贝宁/g;
+s/鲍率/波特/g;
+s/包括/包含/g;
+s/榜样/标兵/g;
+s/伴读/陪读/g;
+s/半形/半角/g;
+s/版边/页边距/g;
+s/班机/航班/g;
+s/拜访/访问/g;
+s/扒分/赚钱/g;
+s/扒带/盗版带/g;
+s/奥赛/奥运/g;
+s/奥明/阿明/g;
+s/案例/实例/g;
+s/(?<!投)资讯/信息/g;
+# s/道道/办法/g;
+# s/搭伙/搭宴/g;
+# s/搭档/搭伴/g;
+
+
+s/於/于/g;
+s/矽/硅/g;
+s/後/后/g;
+s/乾/干/g;
+s/你/您/g;
+s/埠/端口/g;
+s/檔/文件/g;
+
+
+s/\<s\<(.+?)\>\>/$1/g;
+s/\<t\<文件\>\>/文档/g;
+s/\<t\<延伸\>\>/扩展/g;
+s/\<t\<预设\>\>/默认/g;
+s/\<t\<支援\>\>/支持/g;
+
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)「/$1“/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)」/$1”/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)『/$1“/);
+1 while (s/^((?:[\x00-\x7F]|[\x80-\xFF].)*)』/$1”/);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/chinese/manpages-zh.git



More information about the Chinese-commits mailing list